diff --git a/.coveragerc b/.coveragerc
new file mode 100644
index 00000000..c6294d30
--- /dev/null
+++ b/.coveragerc
@@ -0,0 +1,31 @@
+[run]
+source =
+ splitio/
+
+omit =
+ tests/*
+ */__init__.py
+
+branch = True
+
+relative_files = True
+
+[report]
+# Regexes for lines to exclude from consideration
+exclude_lines =
+ # Have to re-enable the standard pragma
+ pragma: no cover
+
+ # Don't complain about missing debug-only code:
+ def __repr__
+ if self\.debug
+
+ # Don't complain if tests don't hit defensive assertion code:
+ raise AssertionError
+ raise NotImplementedError
+
+ # Don't complain if non-runnable code isn't run:
+ if 0:
+ if __name__ == .__main__.:
+
+precision = 2
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 00000000..9e319810
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @splitio/sdk
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 1b64b3e5..95efd4c7 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -4,4 +4,4 @@
## How do we test the changes introduced in this PR?
-## Extra Notes
\ No newline at end of file
+## Extra Notes
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..df28cd54
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,74 @@
+name: ci
+on:
+ push:
+ branches:
+ - master
+ - development
+ pull_request:
+ branches:
+ - master
+ - development
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
+ cancel-in-progress: true
+
+jobs:
+ test:
+ name: Test
+ runs-on: ubuntu-22.04
+ services:
+ redis:
+ image: redis
+ ports:
+ - 6379:6379
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v5
+ with:
+ fetch-depth: 0
+
+ - name: Setup Python
+ uses: actions/setup-python@v6
+ with:
+ python-version: '3.7.16'
+
+ - name: Install dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install -y libkrb5-dev
+ pip install -U setuptools pip wheel
+ pip install -e .[cpphash,redis,uwsgi]
+
+ - name: Run tests
+ run: python setup.py test
+
+ - name: Set VERSION env
+ run: echo "VERSION=$(cat splitio/version.py | grep "__version__" | awk -F\' '{print $2}')" >> $GITHUB_ENV
+
+ - name: SonarQube Scan (Push)
+ if: github.event_name == 'push'
+ uses: SonarSource/sonarqube-scan-action@v6
+ env:
+ SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ projectBaseDir: .
+ args: >
+ -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }}
+ -Dsonar.projectVersion=${{ env.VERSION }}
+
+ - name: SonarQube Scan (Pull Request)
+ if: github.event_name == 'pull_request'
+ uses: SonarSource/sonarqube-scan-action@v6
+ env:
+ SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ projectBaseDir: .
+ args: >
+ -Dsonar.host.url=${{ secrets.SONARQUBE_HOST }}
+ -Dsonar.projectVersion=${{ env.VERSION }}
+ -Dsonar.pullrequest.key=${{ github.event.pull_request.number }}
+ -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }}
+ -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }}
diff --git a/.github/workflows/update-license-year.yml b/.github/workflows/update-license-year.yml
new file mode 100644
index 00000000..884edbe9
--- /dev/null
+++ b/.github/workflows/update-license-year.yml
@@ -0,0 +1,45 @@
+name: Update License Year
+
+on:
+ schedule:
+ - cron: "0 3 1 1 *" # 03:00 AM on January 1
+
+permissions:
+ contents: write
+ pull-requests: write
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Set Current year
+ run: "echo CURRENT=$(date +%Y) >> $GITHUB_ENV"
+
+ - name: Set Previous Year
+ run: "echo PREVIOUS=$(($CURRENT-1)) >> $GITHUB_ENV"
+
+ - name: Update LICENSE
+ uses: jacobtomlinson/gha-find-replace@v3
+ with:
+ find: ${{ env.PREVIOUS }}
+ replace: ${{ env.CURRENT }}
+ include: "LICENSE.txt"
+ regex: false
+
+ - name: Commit files
+ run: |
+ git config user.name 'github-actions[bot]'
+ git config user.email 'github-actions[bot]@users.noreply.github.com'
+ git commit -m "Updated License Year" -a
+
+ - name: Create Pull Request
+ uses: peter-evans/create-pull-request@v5
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ title: Update License Year
+ branch: update-license
diff --git a/.gitignore b/.gitignore
index 72f8848f..d2f290a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -71,3 +71,8 @@ target/
# vim backup files
*.swp
+
+.DS_Store
+
+# Sonarqube
+.scannerwork
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 36ec7ea3..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-language: python
-
-git:
- depth: false
-
-matrix:
- include:
- - python: '2.7'
- - python: '3.6'
- after_success:
- - bash sonar-scanner.sh
-
-services:
- - redis-server
-
-addons:
- sonarqube: true
-
-install:
- - pip install -U setuptools pip
- - pip install -e .[cpphash,redis,uwsgi]
-
-script:
- - python setup.py test
diff --git a/CHANGES.txt b/CHANGES.txt
index 6c6a6cb3..0845c52e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,137 @@
+10.6.0 (Jan 28, 2026)
+- Fixed non-blocking error when fetching feature flags from redis.
+- Added the ability to listen to different events triggered by the SDK. Read more in our docs.
+ - SDK_UPDATE notify when a flag or user segment has changed
+ - SDK_READY notify when the SDK is ready to evaluate
+
+10.5.1 (Oct 15, 2025)
+- Added using String only parameter for treatments in FallbackTreatmentConfiguration class.
+
+10.5.0 (Sep 15, 2025)
+- Changed the log level from error to debug when renewing the token for Streaming service in asyncio mode.
+- Added new configuration for Fallback Treatments, which allows setting a treatment value and optional config to be returned in place of "control", either globally or by flag. Read more in our docs.
+- Deprecated config parameter `redisErrors` as it is removed in redis lib since 6.0.0 version (https://github.com/redis/redis-py/releases/tag/v6.0.0).
+
+10.4.0 (Aug 4, 2025)
+- Added a new optional argument to the client `getTreatment` methods to allow passing additional evaluation options, such as a map of properties to append to the generated impressions sent to Split backend. Read more in our docs.
+
+10.3.0 (Jun 17, 2025)
+- Added support for rule-based segments. These segments determine membership at runtime by evaluating their configured rules against the user attributes provided to the SDK.
+- Added support for feature flag prerequisites. This allows customers to define dependency conditions between flags, which are evaluated before any allowlists or targeting rules.
+
+10.2.0 (Jan 17, 2025)
+- Added support for the new impressions tracking toggle available on feature flags, both respecting the setting and including the new field being returned on SplitView type objects. Read more in our docs.
+
+10.1.0 (Aug 7, 2024)
+- Added support for Kerberos authentication in Spnego and Proxy Kerberos server instances.
+
+10.0.1 (Jun 28, 2024)
+- Fixed failure to load lib issue in SDK startup for Python versions higher than or equal to 3.10
+
+10.0.0 (Jun 27, 2024)
+- Added support for asyncio library
+- BREAKING CHANGE: Minimum supported Python version is 3.7.16
+
+9.7.0 (May 15, 2024)
+- Added support for targeting rules based on semantic versions (https://semver.org/).
+- Added the logic to handle correctly when the SDK receives an unsupported Matcher type.
+
+9.6.2 (Apr 5, 2024)
+- Fixed an issue when pushing unique keys tracker data to redis if no keys exist, i.e. get_treatment flavors are not called.
+
+9.6.1 (Feb 15, 2024)
+- Added redisUsername configuration parameter for Redis connection to set the username for accessing redis when not using the default `root` username
+
+9.6.0 (Nov 3, 2023)
+- Added support for Flag Sets on the SDK, which enables grouping feature flags and interacting with the group rather than individually (more details in our documentation):
+ - Added new variations of the get treatment methods to support evaluating flags in given flag set/s.
+ - get_treatments_by_flag_set and get_treatments_by_flag_sets
+ - get_treatments_with_config_by_flag_set and get_treatments_with_config_by_flag_sets
+- Added a new optional Split Filter configuration option. This allows the SDK and Split services to only synchronize the flags in the specified flag sets, avoiding unused or unwanted flags from being synced on the SDK instance, bringing all the benefits from a reduced payload.
+ - Note: Only applicable when the SDK is in charge of the rollout data synchronization. When not applicable, the SDK will log a warning on init.
+- Updated the following SDK manager methods to expose flag sets on flag views.
+- Removed raising an exception when Telemetry post config data fails, SDK will only log the error.
+
+9.5.1 (Sep 5, 2023)
+- Exclude tests from when building the package
+- Fixed exception when fetching telemetry stats if no SSE Feature flags update events are stored
+
+9.5.0 (Jul 18, 2023)
+- Improved streaming architecture implementation to apply feature flag updates from the notification received which is now enhanced, improving efficiency and reliability of the whole update system.
+
+9.4.2 (May 15, 2023)
+- Updated terminology on the SDKs codebase to be more aligned with current standard without causing a breaking change. The core change is the term split for feature flag on things like logs and code documentation comments.
+- Added detailed debug logging for redis adapter.
+- Fixed setting defaultTreatment to 'control' if it is missing in localhost JSON file.
+
+9.4.1 (Apr 18, 2023)
+- Fixed storing incorrect Telemetry method latency data
+
+9.4.0 (Mar 1, 2023)
+- Added support to use JSON files in localhost mode.
+- Updated default periodic telemetry post time to one hour.
+- Fixed unhandeled exception in push.manager.py class when SDK is connected to split proxy
+
+9.3.0 (Jan 30, 2023)
+- Updated SDK telemetry storage, metrics and updater to be more effective and send less often.
+- Removed deprecated threading.Thread.setDaemon() method.
+
+9.2.2 (Dec 13, 2022)
+- Fixed RedisSenderAdapter instantiation to store mtk keys.
+
+9.2.1 (Dec 2, 2022)
+- Changed redis record type for impressions counts from list using rpush to hashed key using hincrby.
+- Apply Timeout Exception when incorrect SDK API Key is used.
+- Changed potential initial fetching segment Warning to Debug in logging.
+
+9.2.0 (Oct 14, 2022)
+- Added a new impressions mode for the SDK called NONE , to be used in factory when there is no desire to capture impressions on an SDK factory to feed Split's analytics engine. Running NONE mode, the SDK will only capture unique keys evaluated for a particular feature flag instead of full blown impressions
+
+9.1.3 (July 25, 2022)
+- Fixed synching missed segment(s) after receiving split update
+
+9.1.2 (April 6, 2022)
+- Updated pyyaml dependency for vulnerability CVE-2020-14343.
+
+9.1.1 (March 9, 2022)
+- Updated default auth service url to https://auth.split.io/api/v2/auth.
+- Deprecated old telemetry.
+
+9.1.0 (Jul 15, 2021)
+- Added Cache-Control header for on-demand requests to sdk-server.
+- Updated the synchronization flow to be more reliable in the event of an edge case generating delay in cache purge propagation, keeping the SDK cache properly synced.
+
+9.0.0 (May 3, 2021)
+ - BREAKING CHANGE: Removed splitSdkMachineIp and splitSdkMachineName configs.
+ - BREAKING CHANGE: Deprecated `redisCharset` config.
+ - BREAKING CHANGE: Deprecated uWSGI local cache.
+ - BREAKING CHANGE: Deprecated Python2 support.
+ - Removed six, future and futures libs for compatibility between Python2 and Python3.
+ - Updated strings encoding to utf-8 by default for Redis.
+ - Added SDK Metadata headers to streaming client.
+
+8.4.1 (Apr 16, 2021)
+ - Bumped mmh3cffi dependency which now requires c99 flag to build.
+
+8.4.0 (Jan 6, 2021)
+ - Added RecordStats for supporting pipelined recording in redis when treatment call is made.
+ - Added hooks support for preforked servers.
+
+8.3.1 (Nov 20, 2020)
+ - Fixed error handling when split server fails, so that it doesn't bring streaming down.
+ - Added SDK Metadata headers to split & segments API clients
+
+8.3.0 (Nov 4, 2020)
+ - Added local impressions deduping. Defaulting to optimized
+ - Added support for the new Split streaming architecture. When enabled (default), the SDK will not poll for updates but instead receive notifications every time there's a change in your environments, allowing to process those much quicker. If disabled or in the event of an issue, the SDK will fallback to the known polling mechanism to provide a seamless experience.
+ - Updated logging structure so that it's built in terms of a hierarchy with the root at 'splitio'
+ - Fixed timing issue which caused factory.ready to return False if called immediately after .block_until_ready()
+
+8.2.1 (Aug 25, 2020)
+ - Updated mmh3cffi to version 0.1.5 which fixes xcode12 issue
+
8.2.0 (Mar 27, 2020)
- - Support enabling in-memory cache via config options
+ - Added support for enabling in-memory cache via config options
8.1.7 (Jan 23, 2020)
- Removed enum34 dependency for python versions > 3.4
@@ -37,7 +169,7 @@
7.0.1 (Mar 8, 2019)
- Updated Splits refreshing rate.
- Replaced exception log level to error level.
- - Improved validation for apikey.
+ - Improved validation for sdkkey.
7.0.0 (Feb 21, 2019)
- BREAKING CHANGE: Stored Impressions in Queue.
diff --git a/CONTRIBUTORS-GUIDE.md b/CONTRIBUTORS-GUIDE.md
index 11483a32..befff911 100644
--- a/CONTRIBUTORS-GUIDE.md
+++ b/CONTRIBUTORS-GUIDE.md
@@ -28,4 +28,4 @@ To run test you need to execute the following commands:
# Contact
-If you have any other questions or need to contact us directly in a private manner send us a note at sdks@split.io.
\ No newline at end of file
+If you have any other questions or need to contact us directly in a private manner send us a note at sdks@split.io.
diff --git a/LICENSE.txt b/LICENSE.txt
index fb8a05ab..0f9e8a59 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,13 +1,169 @@
-Copyright © 2020 Split Software, Inc.
-
-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.
+Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+ 1. Definitions.
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+ END OF TERMS AND CONDITIONS
+ APPENDIX: How to apply the Apache License to your work.
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+ Copyright [yyyy] [name of copyright owner]
+ 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.
diff --git a/NOTICE.txt b/NOTICE.txt
new file mode 100644
index 00000000..7d7d845e
--- /dev/null
+++ b/NOTICE.txt
@@ -0,0 +1,5 @@
+Harness Feature Management JavaScript SDK Copyright 2024-2026 Harness Inc.
+
+This product includes software developed at Harness Inc. (https://harness.io/).
+
+This product includes software originally developed by Split Software, Inc. (https://www.split.io/). Copyright 2015-2024 Split Software, Inc.
diff --git a/README.md b/README.md
index 67a67427..5dae06bf 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-# Split Python SDK
-[](https://api.travis-ci.com/splitio/python-client)
+# Split Python SDK
+
## Overview
This SDK is designed to work with Split, the platform for controlled rollouts, which serves features to your users via a Split feature flag to manage your complete customer experience.
@@ -7,7 +7,7 @@ This SDK is designed to work with Split, the platform for controlled rollouts, w
[](https://twitter.com/intent/follow?screen_name=splitsoftware)
## Compatibility
-This SDK is compatible with **Python 2.7 and higher**.
+This SDK is compatible with **Python 3.7 and higher**.
## Getting started
Below is a simple example that describes the instantiation and most basic usage of our SDK:
@@ -22,8 +22,8 @@ factory = get_factory('YOUR_SDK_TYPE_API_KEY', config=config)
try:
factory.block_until_ready(5) # wait up to 5 seconds
split = factory.client()
- treatment = split.get_treatment('CUSTOMER_ID', 'SPLIT_NAME')
- if treatment == "on":
+ treatment = split.get_treatment('CUSTOMER_ID', 'FEATURE_FLAG_NAME')
+ if treatment == "on":
# insert code here to show on treatment
elif treatment == "off":
# insert code here to show off treatment
@@ -54,16 +54,21 @@ To learn more about Split, contact hello@split.io, or get started with feature f
Split has built and maintains SDKs for:
+* .NET [Github](https://github.com/splitio/dotnet-client) [Docs](https://help.split.io/hc/en-us/articles/360020240172--NET-SDK)
+* Android [Github](https://github.com/splitio/android-client) [Docs](https://help.split.io/hc/en-us/articles/360020343291-Android-SDK)
+* Angular [Github](https://github.com/splitio/angular-sdk-plugin) [Docs](https://help.split.io/hc/en-us/articles/6495326064397-Angular-utilities)
+* GO [Github](https://github.com/splitio/go-client) [Docs](https://help.split.io/hc/en-us/articles/360020093652-Go-SDK)
+* iOS [Github](https://github.com/splitio/ios-client) [Docs](https://help.split.io/hc/en-us/articles/360020401491-iOS-SDK)
* Java [Github](https://github.com/splitio/java-client) [Docs](https://help.split.io/hc/en-us/articles/360020405151-Java-SDK)
-* Javascript [Github](https://github.com/splitio/javascript-client) [Docs](https://help.split.io/hc/en-us/articles/360020448791-JavaScript-SDK)
+* JavaScript [Github](https://github.com/splitio/javascript-client) [Docs](https://help.split.io/hc/en-us/articles/360020448791-JavaScript-SDK)
+* JavaScript for Browser [Github](https://github.com/splitio/javascript-browser-client) [Docs](https://help.split.io/hc/en-us/articles/360058730852-Browser-SDK)
* Node [Github](https://github.com/splitio/javascript-client) [Docs](https://help.split.io/hc/en-us/articles/360020564931-Node-js-SDK)
-* .NET [Github](https://github.com/splitio/.net-core-client) [Docs](https://help.split.io/hc/en-us/articles/360020240172--NET-SDK)
-* Ruby [Github](https://github.com/splitio/ruby-client) [Docs](https://help.split.io/hc/en-us/articles/360020673251-Ruby-SDK)
* PHP [Github](https://github.com/splitio/php-client) [Docs](https://help.split.io/hc/en-us/articles/360020350372-PHP-SDK)
* Python [Github](https://github.com/splitio/python-client) [Docs](https://help.split.io/hc/en-us/articles/360020359652-Python-SDK)
-* GO [Github](https://github.com/splitio/go-client) [Docs](https://help.split.io/hc/en-us/articles/360020093652-Go-SDK)
-* Android [Github](https://github.com/splitio/android-client) [Docs](https://help.split.io/hc/en-us/articles/360020343291-Android-SDK)
-* iOS [Github](https://github.com/splitio/ios-client) [Docs](https://help.split.io/hc/en-us/articles/360020401491-iOS-SDK)
+* React [Github](https://github.com/splitio/react-client) [Docs](https://help.split.io/hc/en-us/articles/360038825091-React-SDK)
+* React Native [Github](https://github.com/splitio/react-native-client) [Docs](https://help.split.io/hc/en-us/articles/4406066357901-React-Native-SDK)
+* Redux [Github](https://github.com/splitio/redux-client) [Docs](https://help.split.io/hc/en-us/articles/360038851551-Redux-SDK)
+* Ruby [Github](https://github.com/splitio/ruby-client) [Docs](https://help.split.io/hc/en-us/articles/360020673251-Ruby-SDK)
For a comprehensive list of open source projects visit our [Github page](https://github.com/splitio?utf8=%E2%9C%93&query=%20only%3Apublic%20).
diff --git a/doc/source/flask_support.rst b/doc/source/flask_support.rst
index 7e1abf74..9ed4b8b8 100644
--- a/doc/source/flask_support.rst
+++ b/doc/source/flask_support.rst
@@ -37,4 +37,4 @@ This example assumes that the Split.io configuration is save in a file called ``
When using the Redis client the update scripts need to be run periodically, otherwise there won't be any data available to the client.
-As mentioned before, if the API key is set to ``'localhost'`` a localhost environment client is generated and no connections to Split.io are made as everything is read from ``.split`` file (you can read about this feature in the Localhost Environment section of the :doc:`/introduction`.)
\ No newline at end of file
+As mentioned before, if the API key is set to ``'localhost'`` a localhost environment client is generated and no connections to Split.io are made as everything is read from ``.split`` file (you can read about this feature in the Localhost Environment section of the :doc:`/introduction`.)
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 8a61310b..249d74eb 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -20,4 +20,3 @@ Indices and tables
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
-
diff --git a/doc/source/introduction.rst b/doc/source/introduction.rst
index f898e3e5..a6df7a71 100644
--- a/doc/source/introduction.rst
+++ b/doc/source/introduction.rst
@@ -6,7 +6,7 @@ This project provides Python programs access to the `Split.io
Installation and Requirements
-----------------------------
-``splitio_client`` supports both Python 2 (2.7 or later) and Python 3 (3.3 or later). Stable versions can be installed from `PyPI `_ using pip: ::
+``splitio_client`` supports Python 3 (3.3 or later). Stable versions can be installed from `PyPI `_ using pip: ::
pip install splitio_client
@@ -166,7 +166,7 @@ The client depends on the information for features and segments being updated ex
The scripts are configured through a JSON settings file, like the following: ::
{
- "apiKey": "some-api-key",
+ "sdkKey": "some-sdk-key",
"sdkApiBaseUrl": "https://sdk.split.io/api",
"eventsApiBaseUrl": "https://events.split.io/api",
"redisFactory": 'some.redis.factory',
@@ -180,7 +180,7 @@ These are the possible configuration parameters:
+------------------------+------+--------------------------------------------------------+-------------------------------+
| Key | Type | Description | Default |
+========================+======+========================================================+===============================+
-| apiKey | str | A valid Split.io API key. | None |
+| sdkKey | str | A valid Split.io SDK key. | None |
+------------------------+------+--------------------------------------------------------+-------------------------------+
| sdkApiBaseUrl | str | The SDK API url base | "https://sdk.split.io/api" |
+------------------------+------+--------------------------------------------------------+-------------------------------+
@@ -238,7 +238,7 @@ On the other hand, there is available a python script named ``splitio.bin.synchr
The configuration file is a JSON file with the following fields:
{
- "apiKey": "YOUR_API_KEY",
+ "sdkKey": "YOUR_SDK_KEY",
"redisHost": "REDIS_DNS_OR_IP",
"redisPort": 6379,
"redisDb": 0
@@ -274,7 +274,7 @@ In order to support Redis' Sentinel host discovery, you need to provide a custom
Afterwards you tell the client to use this factory using the config file: ::
{
- "apiKey": "some-api-key",
+ "sdkKey": "some-sdk-key",
"sdkApiBaseUrl": "https://sdk.split.io/api",
"eventsApiBaseUrl": "https://events.split.io/api",
"redisFactory": 'redis_config.my_redis_factory'
diff --git a/setup.cfg b/setup.cfg
index 164be372..1fa09f42 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -2,7 +2,10 @@
universal = 1
[metadata]
-description-file = README.md
+name = splitio_client
+description = This SDK is designed to work with Split, the platform for controlled rollouts, which serves features to your users via a Split feature flag to manage your complete customer experience.
+long_description = file: README.md
+long_description_content_type = text/markdown
[flake8]
max-line-length=100
@@ -12,7 +15,6 @@ exclude=tests/*
test=pytest
[tool:pytest]
-ignore_glob=./splitio/_OLD/*
addopts = --verbose --cov=splitio --cov-report xml
python_classes=*Tests
diff --git a/setup.py b/setup.py
index 564c9549..e2b4c74a 100644
--- a/setup.py
+++ b/setup.py
@@ -1,50 +1,57 @@
"""Setup module."""
-#!/usr/bin/env python
+# !/usr/bin/env python
from os import path
from setuptools import setup, find_packages
TESTS_REQUIRES = [
'flake8',
- 'pytest<=4.6', # for deprecated python versions: https://docs.pytest.org/en/latest/py27-py34-deprecation.html
- 'pytest-mock',
- 'coverage',
- 'pytest-cov',
- 'mock;python_version<"3"'
+ 'pytest==7.0.1',
+ 'pytest-mock==3.11.1',
+ 'coverage==7.0.0',
+ 'pytest-cov==4.1.0',
+ 'importlib-metadata==6.7',
+ 'tomli==1.2.3',
+ 'iniconfig==1.1.1',
+ 'attrs==22.1.0',
+ 'pytest-asyncio==0.21.0',
+ 'aiohttp>=3.8.4',
+ 'aiofiles>=23.1.0',
+ 'requests-kerberos>=0.15.0',
+ 'urllib3==2.0.7'
]
INSTALL_REQUIRES = [
- 'requests>=2.9.1',
- 'pyyaml>=5.1',
- 'future>=0.15.2',
+ 'requests',
+ 'pyyaml',
'docopt>=0.6.2',
- 'six>=1.10.0',
'enum34;python_version<"3.4"',
- 'futures>=3.0.5;python_version<"3"'
+ 'bloom-filter2>=2.0.0'
]
-with open(path.join(path.abspath(path.dirname(__file__)),
- 'splitio', 'version.py')) as f:
+with open(path.join(path.abspath(path.dirname(__file__)), 'splitio', 'version.py')) as f:
exec(f.read()) # pylint: disable=exec-used
setup(
name='splitio_client',
- version=__version__, # pylint: disable=undefined-variable
+ version=__version__, # pylint: disable=undefined-variable
description='Split.io Python Client',
author='Patricio Echague, Sebastian Arrubia',
author_email='pato@split.io, sebastian@split.io',
url='https://github.com/splitio/python-client',
- download_url=('https://github.com/splitio/python-client/tarball/' + __version__), # pylint: disable=undefined-variable
+ download_url=('https://github.com/splitio/python-client/tarball/' + __version__), # pylint: disable=undefined-variable
license='Apache License 2.0',
install_requires=INSTALL_REQUIRES,
tests_require=TESTS_REQUIRES,
extras_require={
'test': TESTS_REQUIRES,
- 'redis': ['redis>=2.10.5'],
+ 'redis': ['redis>=2.10.5,<7.0.0'],
'uwsgi': ['uwsgi>=2.0.0'],
- 'cpphash': ['mmh3cffi>=0.1.4']
+ 'cpphash': ['mmh3cffi==0.2.1'],
+ 'asyncio': ['aiohttp>=3.8.4', 'aiofiles>=23.1.0'],
+ 'kerberos': ['requests-kerberos>=0.15.0']
},
- setup_requires=['pytest-runner'],
+ setup_requires=['pytest-runner', 'pluggy==1.0.0;python_version<"3.8"'],
classifiers=[
'Environment :: Console',
'Intended Audience :: Developers',
@@ -53,5 +60,5 @@
'Programming Language :: Python :: 3',
'Topic :: Software Development :: Libraries'
],
- packages=find_packages()
+ packages=find_packages(exclude=('tests', 'tests.*'))
)
diff --git a/sonar-project.properties b/sonar-project.properties
new file mode 100644
index 00000000..009f4fd7
--- /dev/null
+++ b/sonar-project.properties
@@ -0,0 +1,10 @@
+sonar.projectName=python-client
+sonar.projectKey=python-client
+sonar.python.version=3.6
+sonar.sources=splitio
+sonar.tests=tests
+sonar.text.excluded.file.suffixes=.csv
+sonar.python.coverage.reportPaths=coverage.xml
+sonar.coverage.exclusions=**/__init__.py
+sonar.links.ci=https://github.com/splitio/python-client
+sonar.links.scm=https://github.com/splitio/python-client/actions
diff --git a/sonar-scanner.sh b/sonar-scanner.sh
deleted file mode 100644
index 284a4c25..00000000
--- a/sonar-scanner.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#/bin/bash -e
-
-sonar_scanner() {
- local params=$@
-
- sonar-scanner \
- -Dsonar.host.url='https://sonarqube.split-internal.com' \
- -Dsonar.login="$SONAR_TOKEN" \
- -Dsonar.ws.timeout='300' \
- -Dsonar.sources='splitio' \
- -Dsonar.projectName='python-client' \
- -Dsonar.projectKey='python-client' \
- -Dsonar.python.coverage.reportPaths='coverage.xml' \
- -Dsonar.links.ci='https://travis-ci.com/splitio/python-client' \
- -Dsonar.links.scm='https://github.com/splitio/python-client' \
- ${params}
-
- return $?
-}
-
-if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
- sonar_scanner \
- -Dsonar.pullrequest.provider='GitHub' \
- -Dsonar.pullrequest.github.repository='splitio/python-client' \
- -Dsonar.pullrequest.key=$TRAVIS_PULL_REQUEST \
- -Dsonar.pullrequest.branch=$TRAVIS_PULL_REQUEST_BRANCH \
- -Dsonar.pullrequest.base=$TRAVIS_BRANCH
-else
- if [ "$TRAVIS_BRANCH" == 'master' ]; then
- sonar_scanner \
- -Dsonar.branch.name=$TRAVIS_BRANCH
- else
- if [ "$TRAVIS_BRANCH" == 'development' ]; then
- TARGET_BRANCH='master'
- else
- TARGET_BRANCH='development'
- fi
- sonar_scanner \
- -Dsonar.branch.name=$TRAVIS_BRANCH \
- -Dsonar.branch.target=$TARGET_BRANCH
- fi
-fi
diff --git a/splitio/__init__.py b/splitio/__init__.py
index b5cea2b5..e9c9302b 100644
--- a/splitio/__init__.py
+++ b/splitio/__init__.py
@@ -1,6 +1,3 @@
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
-from splitio.client.factory import get_factory
+from splitio.client.factory import get_factory, get_factory_async
from splitio.client.key import Key
from splitio.version import __version__
diff --git a/splitio/api/__init__.py b/splitio/api/__init__.py
index 96a3e224..be820f14 100644
--- a/splitio/api/__init__.py
+++ b/splitio/api/__init__.py
@@ -14,21 +14,33 @@ def status_code(self):
"""Return HTTP status code."""
return self._status_code
+class APIUriException(APIException):
+ """Exception to raise when an API call fails due to 414 http error."""
-def headers_from_metadata(sdk_metadata):
+ def __init__(self, custom_message, status_code=None):
+ """Constructor."""
+ APIException.__init__(self, custom_message, status_code)
+
+def headers_from_metadata(sdk_metadata, client_key=None):
"""
Generate a dict with headers required by data-recording API endpoints.
-
:param sdk_metadata: SDK Metadata object, generated at sdk initialization time.
:type sdk_metadata: splitio.client.util.SdkMetadata
-
+ :param client_key: client key.
+ :type client_key: str
:return: A dictionary with headers.
:rtype: dict
"""
- return {
+
+ metadata = {
'SplitSDKVersion': sdk_metadata.sdk_version,
'SplitSDKMachineIP': sdk_metadata.instance_ip,
'SplitSDKMachineName': sdk_metadata.instance_name
} if sdk_metadata.instance_ip != 'NA' and sdk_metadata.instance_ip != 'unknown' else {
'SplitSDKVersion': sdk_metadata.sdk_version,
}
+
+ if client_key is not None:
+ metadata['SplitSDKClientKey'] = client_key
+
+ return metadata
\ No newline at end of file
diff --git a/splitio/api/auth.py b/splitio/api/auth.py
new file mode 100644
index 00000000..986ee31a
--- /dev/null
+++ b/splitio/api/auth.py
@@ -0,0 +1,109 @@
+"""Auth API module."""
+
+import logging
+import json
+
+from splitio.api import APIException, headers_from_metadata
+from splitio.api.commons import headers_from_metadata, record_telemetry
+from splitio.spec import SPEC_VERSION
+from splitio.util.time import get_current_epoch_time_ms
+from splitio.api.client import HttpClientException
+from splitio.models.token import from_raw
+from splitio.models.telemetry import HTTPExceptionsAndLatencies
+
+_LOGGER = logging.getLogger(__name__)
+
+
+class AuthAPI(object): # pylint: disable=too-few-public-methods
+ """Class that uses an httpClient to communicate with the SDK Auth Service API."""
+
+ def __init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer):
+ """
+ Class constructor.
+
+ :param client: HTTP Client responsble for issuing calls to the backend.
+ :type client: HttpClient
+ :param sdk_key: User sdk key.
+ :type sdk_key: string
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ """
+ self._client = client
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.TOKEN, self._telemetry_runtime_producer)
+
+ def authenticate(self):
+ """
+ Perform authentication.
+
+ :return: Json representation of an authentication.
+ :rtype: splitio.models.token.Token
+ """
+ try:
+ response = self._client.get(
+ 'auth',
+ 'v2/auth?s=' + SPEC_VERSION,
+ self._sdk_key,
+ extra_headers=self._metadata,
+ )
+ if 200 <= response.status_code < 300:
+ payload = json.loads(response.body)
+ return from_raw(payload)
+
+ else:
+ if (response.status_code >= 400 and response.status_code < 500):
+ self._telemetry_runtime_producer.record_auth_rejections()
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.error('Exception raised while authenticating')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise APIException('Could not perform authentication.') from exc
+
+class AuthAPIAsync(object): # pylint: disable=too-few-public-methods
+ """Async Class that uses an httpClient to communicate with the SDK Auth Service API."""
+
+ def __init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer):
+ """
+ Class constructor.
+
+ :param client: HTTP Client responsble for issuing calls to the backend.
+ :type client: HttpClient
+ :param sdk_key: User sdk key.
+ :type sdk_key: string
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ """
+ self._client = client
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.TOKEN, self._telemetry_runtime_producer)
+
+ async def authenticate(self):
+ """
+ Perform authentication.
+
+ :return: Json representation of an authentication.
+ :rtype: splitio.models.token.Token
+ """
+ try:
+ response = await self._client.get(
+ 'auth',
+ 'v2/auth?s=' + SPEC_VERSION,
+ self._sdk_key,
+ extra_headers=self._metadata,
+ )
+ if 200 <= response.status_code < 300:
+ payload = json.loads(response.body)
+ return from_raw(payload)
+
+ else:
+ if (response.status_code >= 400 and response.status_code < 500):
+ await self._telemetry_runtime_producer.record_auth_rejections()
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.error('Exception raised while authenticating')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise APIException('Could not perform authentication.') from exc
diff --git a/splitio/api/client.py b/splitio/api/client.py
index fd3bb9b8..c9032e0e 100644
--- a/splitio/api/client.py
+++ b/splitio/api/client.py
@@ -1,13 +1,63 @@
"""Synchronous HTTP Client for split API."""
-from __future__ import division
-
from collections import namedtuple
-
-from future.utils import raise_from
import requests
+import urllib
+import abc
+import logging
+import json
+import threading
+from urllib3.util import parse_url
+
+from splitio.optional.loaders import HTTPKerberosAuth, OPTIONAL
+from splitio.client.config import AuthenticateScheme
+from splitio.optional.loaders import aiohttp
+from splitio.util.time import get_current_epoch_time_ms
+
+SDK_URL = 'https://sdk.split.io/api'
+EVENTS_URL = 'https://events.split.io/api'
+AUTH_URL = 'https://auth.split.io/api'
+TELEMETRY_URL = 'https://telemetry.split.io/api'
+
+_LOGGER = logging.getLogger(__name__)
+_EXC_MSG = '{source} library is throwing exceptions'
+
+HttpResponse = namedtuple('HttpResponse', ['status_code', 'body', 'headers'])
+
+def _build_url(server, path, urls):
+ """
+ Build URL according to server specified.
-HttpResponse = namedtuple('HttpResponse', ['status_code', 'body'])
+ :param server: Server for whith the request is being made.
+ :type server: str
+ :param path: URL path to be appended to base host.
+ :type path: str
+ :return: A fully qualified URL.
+ :rtype: str
+ """
+ url = urls[server]
+ url += '/' if urls[server][:-1] != '/' else ''
+ return urllib.parse.urljoin(url, path)
+
+def _construct_urls(sdk_url=None, events_url=None, auth_url=None, telemetry_url=None):
+ return {
+ 'sdk': sdk_url if sdk_url is not None else SDK_URL,
+ 'events': events_url if events_url is not None else EVENTS_URL,
+ 'auth': auth_url if auth_url is not None else AUTH_URL,
+ 'telemetry': telemetry_url if telemetry_url is not None else TELEMETRY_URL,
+ }
+
+def _build_basic_headers(sdk_key):
+ """
+ Build basic headers with auth.
+
+ :param sdk_key: API token used to identify backend calls.
+ :type sdk_key: str
+ """
+ return {
+ 'Content-Type': 'application/json',
+ 'Authorization': "Bearer %s" % sdk_key
+ }
class HttpClientException(Exception):
"""HTTP Client exception."""
@@ -21,14 +71,28 @@ def __init__(self, message):
"""
Exception.__init__(self, message)
+class HTTPAdapterWithProxyKerberosAuth(requests.adapters.HTTPAdapter):
+ """HTTPAdapter override for Kerberos Proxy auth"""
-class HttpClient(object):
- """HttpClient wrapper."""
+ def __init__(self, principal=None, password=None):
+ requests.adapters.HTTPAdapter.__init__(self)
+ self._principal = principal
+ self._password = password
+
+ def proxy_headers(self, proxy):
+ headers = {}
+ if self._principal is not None:
+ auth = HTTPKerberosAuth(principal=self._principal, password=self._password)
+ else:
+ auth = HTTPKerberosAuth()
+ negotiate_details = auth.generate_request_header(None, parse_url(proxy).host, is_preemptive=True)
+ headers['Proxy-Authorization'] = negotiate_details
+ return headers
- SDK_URL = 'https://sdk.split.io/api'
- EVENTS_URL = 'https://events.split.io/api'
+class HttpClientBase(object, metaclass=abc.ABCMeta):
+ """HttpClient wrapper template."""
- def __init__(self, timeout=None, sdk_url=None, events_url=None):
+ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, telemetry_url=None):
"""
Class constructor.
@@ -38,50 +102,92 @@ def __init__(self, timeout=None, sdk_url=None, events_url=None):
:type sdk_url: str
:param events_url: Optional alternative events URL.
:type events_url: str
+ :param auth_url: Optional alternative auth URL.
+ :type auth_url: str
+ :param telemetry_url: Optional alternative telemetry URL.
+ :type telemetry_url: str
"""
- self._timeout = timeout / 1000 if timeout else None # Convert ms to seconds.
- self._urls = {
- 'sdk': sdk_url if sdk_url is not None else self.SDK_URL,
- 'events': events_url if events_url is not None else self.EVENTS_URL,
- }
+ _LOGGER.debug("Initializing httpclient")
+ self._timeout = timeout/1000 if timeout else None # Convert ms to seconds.
+ self._urls = _construct_urls(sdk_url, events_url, auth_url, telemetry_url)
+
+ @abc.abstractmethod
+ def get(self, server, path, apikey):
+ """http get request"""
- def _build_url(self, server, path):
+ @abc.abstractmethod
+ def post(self, server, path, apikey):
+ """http post request"""
+
+ def set_telemetry_data(self, metric_name, telemetry_runtime_producer):
"""
- Build URL according to server specified.
+ Set the data needed for telemetry call
- :param server: Server for whith the request is being made.
- :type server: str
- :param path: URL path to be appended to base host.
- :type path: str
+ :param metric_name: metric name for telemetry
+ :type metric_name: str
+
+ :param telemetry_runtime_producer: telemetry recording instance
+ :type telemetry_runtime_producer: splitio.engine.telemetry.TelemetryRuntimeProducer
+ """
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._metric_name = metric_name
+
+ def is_sdk_endpoint_overridden(self):
+ return self._urls['sdk'] != SDK_URL
+
+ def _get_headers(self, extra_headers, sdk_key):
+ headers = _build_basic_headers(sdk_key)
+ if extra_headers is not None:
+ headers.update(extra_headers)
+ return headers
- :return: A fully qualified URL.
- :rtype: str
+ def _record_telemetry(self, status_code, elapsed):
"""
- return self._urls[server] + path
+ Record Telemetry info
+
+ :param status_code: http request status code
+ :type status_code: int
- @staticmethod
- def _build_basic_headers(apikey):
+ :param elapsed: response time elapsed.
+ :type status_code: int
"""
- Build basic headers with auth.
+ self._telemetry_runtime_producer.record_sync_latency(self._metric_name, elapsed)
+ if 200 <= status_code < 300:
+ self._telemetry_runtime_producer.record_successful_sync(self._metric_name, get_current_epoch_time_ms())
+ return
- :param apikey: API token used to identify backend calls.
- :type apikey: str
+ self._telemetry_runtime_producer.record_sync_error(self._metric_name, status_code)
+
+class HttpClient(HttpClientBase):
+ """HttpClient wrapper."""
+
+ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, telemetry_url=None):
"""
- return {
- 'Content-Type': 'application/json',
- 'Authorization': "Bearer %s" % apikey
- }
+ Class constructor.
- def get(self, server, path, apikey, query=None, extra_headers=None): #pylint: disable=too-many-arguments
+ :param timeout: How many milliseconds to wait until the server responds.
+ :type timeout: int
+ :param sdk_url: Optional alternative sdk URL.
+ :type sdk_url: str
+ :param events_url: Optional alternative events URL.
+ :type events_url: str
+ :param auth_url: Optional alternative auth URL.
+ :type auth_url: str
+ :param telemetry_url: Optional alternative telemetry URL.
+ :type telemetry_url: str
+ """
+ HttpClientBase.__init__(self, timeout, sdk_url, events_url, auth_url, telemetry_url)
+
+ def get(self, server, path, sdk_key, query=None, extra_headers=None): # pylint: disable=too-many-arguments
"""
Issue a get request.
- :param server: Whether the request is for SDK server or Events server.
+ :param server: Whether the request is for SDK server, Events server or Auth server.
:typee server: str
:param path: path to append to the host url.
:type path: str
- :param apikey: api token.
- :type apikey: str
+ :param sdk_key: sdk key.
+ :type sdk_key: str
:param query: Query string passed as dictionary.
:type query: dict
:param extra_headers: key/value pairs of possible extra headers.
@@ -90,23 +196,25 @@ def get(self, server, path, apikey, query=None, extra_headers=None): #pylint: d
:return: Tuple of status_code & response text
:rtype: HttpResponse
"""
- headers = self._build_basic_headers(apikey)
-
- if extra_headers is not None:
- headers.update(extra_headers)
-
+ start = get_current_epoch_time_ms()
try:
response = requests.get(
- self._build_url(server, path),
+ _build_url(server, path, self._urls),
params=query,
- headers=headers,
+ headers=self._get_headers(extra_headers, sdk_key),
timeout=self._timeout
)
- return HttpResponse(response.status_code, response.text)
- except Exception as exc: #pylint: disable=broad-except
- raise_from(HttpClientException('requests library is throwing exceptions'), exc)
+ self._record_telemetry(response.status_code, get_current_epoch_time_ms() - start)
+ return HttpResponse(response.status_code, response.text, response.headers)
+
+ except requests.exceptions.ChunkedEncodingError as exc:
+ _LOGGER.error("IncompleteRead exception detected: %s", exc)
+ return HttpResponse(400, "", {})
+
+ except Exception as exc: # pylint: disable=broad-except
+ raise HttpClientException(_EXC_MSG.format(source='request')) from exc
- def post(self, server, path, apikey, body, query=None, extra_headers=None): #pylint: disable=too-many-arguments
+ def post(self, server, path, sdk_key, body, query=None, extra_headers=None): # pylint: disable=too-many-arguments
"""
Issue a POST request.
@@ -114,8 +222,8 @@ def post(self, server, path, apikey, body, query=None, extra_headers=None): #py
:typee server: str
:param path: path to append to the host url.
:type path: str
- :param apikey: api token.
- :type apikey: str
+ :param sdk_key: sdk key.
+ :type sdk_key: str
:param body: body sent in the request.
:type body: str
:param query: Query string passed as dictionary.
@@ -126,19 +234,332 @@ def post(self, server, path, apikey, body, query=None, extra_headers=None): #py
:return: Tuple of status_code & response text
:rtype: HttpResponse
"""
- headers = self._build_basic_headers(apikey)
-
- if extra_headers is not None:
- headers.update(extra_headers)
-
+ start = get_current_epoch_time_ms()
try:
response = requests.post(
- self._build_url(server, path),
+ _build_url(server, path, self._urls),
json=body,
params=query,
+ headers=self._get_headers(extra_headers, sdk_key),
+ timeout=self._timeout,
+ )
+ self._record_telemetry(response.status_code, get_current_epoch_time_ms() - start)
+ return HttpResponse(response.status_code, response.text, response.headers)
+ except Exception as exc: # pylint: disable=broad-except
+ raise HttpClientException(_EXC_MSG.format(source='request')) from exc
+
+class HttpClientAsync(HttpClientBase):
+ """HttpClientAsync wrapper."""
+
+ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, telemetry_url=None):
+ """
+ Class constructor.
+ :param timeout: How many milliseconds to wait until the server responds.
+ :type timeout: int
+ :param sdk_url: Optional alternative sdk URL.
+ :type sdk_url: str
+ :param events_url: Optional alternative events URL.
+ :type events_url: str
+ :param auth_url: Optional alternative auth URL.
+ :type auth_url: str
+ :param telemetry_url: Optional alternative telemetry URL.
+ :type telemetry_url: str
+ """
+ HttpClientBase.__init__(self, timeout, sdk_url, events_url, auth_url, telemetry_url)
+ self._session = aiohttp.ClientSession()
+
+ async def get(self, server, path, apikey, query=None, extra_headers=None): # pylint: disable=too-many-arguments
+ """
+ Issue a get request.
+ :param server: Whether the request is for SDK server, Events server or Auth server.
+ :typee server: str
+ :param path: path to append to the host url.
+ :type path: str
+ :param apikey: api token.
+ :type apikey: str
+ :param query: Query string passed as dictionary.
+ :type query: dict
+ :param extra_headers: key/value pairs of possible extra headers.
+ :type extra_headers: dict
+ :return: Tuple of status_code & response text
+ :rtype: HttpResponse
+ """
+ start = get_current_epoch_time_ms()
+ headers = self._get_headers(extra_headers, apikey)
+ try:
+ url = _build_url(server, path, self._urls)
+ _LOGGER.debug("GET request: %s", url)
+ _LOGGER.debug("query params: %s", query)
+ _LOGGER.debug("headers: %s", headers)
+ async with self._session.get(
+ url,
+ params=query,
headers=headers,
timeout=self._timeout
- )
- return HttpResponse(response.status_code, response.text)
- except Exception as exc: #pylint: disable=broad-except
- raise_from(HttpClientException('requests library is throwing exceptions'), exc)
+ ) as response:
+ body = await response.text()
+ _LOGGER.debug("Response:")
+ _LOGGER.debug(response)
+ _LOGGER.debug(body)
+ await self._record_telemetry(response.status, get_current_epoch_time_ms() - start)
+ return HttpResponse(response.status, body, response.headers)
+
+ except aiohttp.ClientPayloadError as exc:
+ _LOGGER.error("ContentLengthError exception detected: %s", exc)
+ return HttpResponse(400, "", {})
+
+ except aiohttp.ClientError as exc: # pylint: disable=broad-except
+ raise HttpClientException(_EXC_MSG.format(source='aiohttp')) from exc
+
+ async def post(self, server, path, apikey, body, query=None, extra_headers=None): # pylint: disable=too-many-arguments
+ """
+ Issue a POST request.
+ :param server: Whether the request is for SDK server or Events server.
+ :typee server: str
+ :param path: path to append to the host url.
+ :type path: str
+ :param apikey: api token.
+ :type apikey: str
+ :param body: body sent in the request.
+ :type body: str
+ :param query: Query string passed as dictionary.
+ :type query: dict
+ :param extra_headers: key/value pairs of possible extra headers.
+ :type extra_headers: dict
+ :return: Tuple of status_code & response text
+ :rtype: HttpResponse
+ """
+ headers = self._get_headers(extra_headers, apikey)
+ start = get_current_epoch_time_ms()
+ try:
+ headers['Accept-Encoding'] = 'gzip'
+ _LOGGER.debug("POST request: %s", _build_url(server, path, self._urls))
+ _LOGGER.debug("query params: %s", query)
+ _LOGGER.debug("headers: %s", headers)
+ _LOGGER.debug("payload: ")
+ _LOGGER.debug(str(json.dumps(body)).encode('utf-8'))
+ async with self._session.post(
+ _build_url(server, path, self._urls),
+ params=query,
+ headers=headers,
+ json=body,
+ timeout=self._timeout
+ ) as response:
+ body = await response.text()
+ _LOGGER.debug("Response:")
+ _LOGGER.debug(response)
+ _LOGGER.debug(body)
+ await self._record_telemetry(response.status, get_current_epoch_time_ms() - start)
+ return HttpResponse(response.status, body, response.headers)
+
+ except aiohttp.ClientError as exc: # pylint: disable=broad-except
+ raise HttpClientException(_EXC_MSG.format(source='aiohttp')) from exc
+
+ async def _record_telemetry(self, status_code, elapsed):
+ """
+ Record Telemetry info
+
+ :param status_code: http request status code
+ :type status_code: int
+
+ :param elapsed: response time elapsed.
+ :type status_code: int
+ """
+ await self._telemetry_runtime_producer.record_sync_latency(self._metric_name, elapsed)
+ if 200 <= status_code < 300:
+ await self._telemetry_runtime_producer.record_successful_sync(self._metric_name, get_current_epoch_time_ms())
+ return
+
+ await self._telemetry_runtime_producer.record_sync_error(self._metric_name, status_code)
+
+ async def close_session(self):
+ if not self._session.closed:
+ await self._session.close()
+
+class HttpClientKerberos(HttpClientBase):
+ """HttpClient wrapper."""
+
+ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, telemetry_url=None, authentication_scheme=None, authentication_params=None):
+ """
+ Class constructor.
+
+ :param timeout: How many milliseconds to wait until the server responds.
+ :type timeout: int
+ :param sdk_url: Optional alternative sdk URL.
+ :type sdk_url: str
+ :param events_url: Optional alternative events URL.
+ :type events_url: str
+ :param auth_url: Optional alternative auth URL.
+ :type auth_url: str
+ :param telemetry_url: Optional alternative telemetry URL.
+ :type telemetry_url: str
+ :param authentication_scheme: Optional authentication scheme to use.
+ :type authentication_scheme: splitio.client.config.AuthenticateScheme
+ :param authentication_params: Optional authentication username and password to use.
+ :type authentication_params: [str, str]
+ """
+ _LOGGER.debug("Initializing httpclient for Kerberos auth")
+ self._timeout = timeout/1000 if timeout else None # Convert ms to seconds.
+ self._urls = _construct_urls(sdk_url, events_url, auth_url, telemetry_url)
+ self._authentication_scheme = authentication_scheme
+ self._authentication_params = authentication_params
+ self._lock = threading.RLock()
+ self._sessions = {'sdk': requests.Session(),
+ 'events': requests.Session(),
+ 'auth': requests.Session(),
+ 'telemetry': requests.Session()}
+ self._set_authentication()
+
+ def get(self, server, path, sdk_key, query=None, extra_headers=None): # pylint: disable=too-many-arguments
+ """
+ Issue a get request.
+ :param server: Whether the request is for SDK server, Events server or Auth server.
+ :typee server: str
+ :param path: path to append to the host url.
+ :type path: str
+ :param sdk_key: sdk key.
+ :type sdk_key: str
+ :param query: Query string passed as dictionary.
+ :type query: dict
+ :param extra_headers: key/value pairs of possible extra headers.
+ :type extra_headers: dict
+
+ :return: Tuple of status_code & response text
+ :rtype: HttpResponse
+ """
+ with self._lock:
+ start = get_current_epoch_time_ms()
+ try:
+ return self._do_get(server, path, sdk_key, query, extra_headers, start)
+
+ except requests.exceptions.ProxyError as exc:
+ _LOGGER.debug("Proxy Exception caught, resetting the http session")
+ self._sessions[server].close()
+ self._sessions[server] = requests.Session()
+ self._set_authentication(server_name=server)
+ try:
+ return self._do_get(server, path, sdk_key, query, extra_headers, start)
+
+ except Exception as exc:
+ raise HttpClientException(_EXC_MSG.format(source='request')) from exc
+
+ except Exception as exc: # pylint: disable=broad-except
+ raise HttpClientException(_EXC_MSG.format(source='request')) from exc
+
+ def _do_get(self, server, path, sdk_key, query, extra_headers, start):
+ """
+ Issue a get request.
+ :param server: Whether the request is for SDK server, Events server or Auth server.
+ :typee server: str
+ :param path: path to append to the host url.
+ :type path: str
+ :param sdk_key: sdk key.
+ :type sdk_key: str
+ :param query: Query string passed as dictionary.
+ :type query: dict
+ :param extra_headers: key/value pairs of possible extra headers.
+ :type extra_headers: dict
+
+ :return: Tuple of status_code & response text
+ :rtype: HttpResponse
+ """
+ with self._sessions[server].get(
+ _build_url(server, path, self._urls),
+ headers=self._get_headers(extra_headers, sdk_key),
+ params=query,
+ timeout=self._timeout
+ ) as response:
+ self._record_telemetry(response.status_code, get_current_epoch_time_ms() - start)
+ return HttpResponse(response.status_code, response.text, response.headers)
+
+ def post(self, server, path, sdk_key, body, query=None, extra_headers=None): # pylint: disable=too-many-arguments
+ """
+ Issue a POST request.
+
+ :param server: Whether the request is for SDK server or Events server.
+ :typee server: str
+ :param path: path to append to the host url.
+ :type path: str
+ :param sdk_key: sdk key.
+ :type sdk_key: str
+ :param body: body sent in the request.
+ :type body: str
+ :param query: Query string passed as dictionary.
+ :type query: dict
+ :param extra_headers: key/value pairs of possible extra headers.
+ :type extra_headers: dict
+
+ :return: Tuple of status_code & response text
+ :rtype: HttpResponse
+ """
+ with self._lock:
+ start = get_current_epoch_time_ms()
+ try:
+ return self._do_post(server, path, sdk_key, query, extra_headers, body, start)
+
+ except requests.exceptions.ProxyError as exc:
+ _LOGGER.debug("Proxy Exception caught, resetting the http session")
+ self._sessions[server].close()
+ self._sessions[server] = requests.Session()
+ self._set_authentication(server_name=server)
+ try:
+ return self._do_post(server, path, sdk_key, query, extra_headers, body, start)
+
+ except Exception as exc:
+ raise HttpClientException(_EXC_MSG.format(source='request')) from exc
+
+ except Exception as exc: # pylint: disable=broad-except
+ raise HttpClientException(_EXC_MSG.format(source='request')) from exc
+
+ def _do_post(self, server, path, sdk_key, query, extra_headers, body, start):
+ """
+ Issue a POST request.
+
+ :param server: Whether the request is for SDK server or Events server.
+ :typee server: str
+ :param path: path to append to the host url.
+ :type path: str
+ :param sdk_key: sdk key.
+ :type sdk_key: str
+ :param body: body sent in the request.
+ :type body: str
+ :param query: Query string passed as dictionary.
+ :type query: dict
+ :param extra_headers: key/value pairs of possible extra headers.
+ :type extra_headers: dict
+
+ :return: Tuple of status_code & response text
+ :rtype: HttpResponse
+ """
+ with self._sessions[server].post(
+ _build_url(server, path, self._urls),
+ params=query,
+ headers=self._get_headers(extra_headers, sdk_key),
+ json=body,
+ timeout=self._timeout,
+ ) as response:
+ self._record_telemetry(response.status_code, get_current_epoch_time_ms() - start)
+ return HttpResponse(response.status_code, response.text, response.headers)
+
+ def _set_authentication(self, server_name=None):
+ """
+ Set the authentication for all self._sessions variables based on authentication scheme.
+
+ :param server: If set, will only add the auth for its session variable, otherwise will set all sessions.
+ :typee server: str
+ """
+ for server in ['sdk', 'events', 'auth', 'telemetry']:
+ if server_name is not None and server_name != server:
+ continue
+ if self._authentication_scheme == AuthenticateScheme.KERBEROS_SPNEGO:
+ _LOGGER.debug("Using Kerberos Spnego Authentication")
+ if self._authentication_params != [None, None]:
+ self._sessions[server].auth = HTTPKerberosAuth(principal=self._authentication_params[0], password=self._authentication_params[1], mutual_authentication=OPTIONAL)
+ else:
+ self._sessions[server].auth = HTTPKerberosAuth(mutual_authentication=OPTIONAL)
+ elif self._authentication_scheme == AuthenticateScheme.KERBEROS_PROXY:
+ _LOGGER.debug("Using Kerberos Proxy Authentication")
+ if self._authentication_params != [None, None]:
+ self._sessions[server].mount('https://', HTTPAdapterWithProxyKerberosAuth(principal=self._authentication_params[0], password=self._authentication_params[1]))
+ else:
+ self._sessions[server].mount('https://', HTTPAdapterWithProxyKerberosAuth())
diff --git a/splitio/api/commons.py b/splitio/api/commons.py
new file mode 100644
index 00000000..9dda1ee0
--- /dev/null
+++ b/splitio/api/commons.py
@@ -0,0 +1,157 @@
+"""Commons module."""
+from splitio.util.time import get_current_epoch_time_ms
+from splitio.spec import SPEC_VERSION
+
+_CACHE_CONTROL = 'Cache-Control'
+_CACHE_CONTROL_NO_CACHE = 'no-cache'
+
+def headers_from_metadata(sdk_metadata, client_key=None):
+ """
+ Generate a dict with headers required by data-recording API endpoints.
+
+ :param sdk_metadata: SDK Metadata object, generated at sdk initialization time.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+
+ :param client_key: client key.
+ :type client_key: str
+
+ :return: A dictionary with headers.
+ :rtype: dict
+ """
+
+ metadata = {
+ 'SplitSDKVersion': sdk_metadata.sdk_version,
+ 'SplitSDKMachineIP': sdk_metadata.instance_ip,
+ 'SplitSDKMachineName': sdk_metadata.instance_name
+ } if sdk_metadata.instance_ip != 'NA' and sdk_metadata.instance_ip != 'unknown' else {
+ 'SplitSDKVersion': sdk_metadata.sdk_version,
+ }
+
+ if client_key is not None:
+ metadata['SplitSDKClientKey'] = client_key
+
+ return metadata
+
+def record_telemetry(status_code, elapsed, metric_name, telemetry_runtime_producer):
+ """
+ Record Telemetry info
+
+ :param status_code: http request status code
+ :type status_code: int
+
+ :param elapsed: response time elapsed.
+ :type status_code: int
+
+ :param metric_name: metric name for telemetry
+ :type metric_name: str
+
+ :param telemetry_runtime_producer: telemetry recording instance
+ :type telemetry_runtime_producer: splitio.engine.telemetry.TelemetryRuntimeProducer
+ """
+ telemetry_runtime_producer.record_sync_latency(metric_name, elapsed)
+ if 200 <= status_code < 300:
+ telemetry_runtime_producer.record_successful_sync(metric_name, get_current_epoch_time_ms())
+ return
+ telemetry_runtime_producer.record_sync_error(metric_name, status_code)
+
+class FetchOptions(object):
+ """Fetch Options object."""
+
+ def __init__(self, cache_control_headers=False, change_number=None, rbs_change_number=None, sets=None, spec=SPEC_VERSION):
+ """
+ Class constructor.
+
+ :param cache_control_headers: Flag for Cache-Control header
+ :type cache_control_headers: bool
+
+ :param change_number: ChangeNumber to use for bypassing CDN in request.
+ :type change_number: int
+
+ :param sets: list of flag sets
+ :type sets: list
+ """
+ self._cache_control_headers = cache_control_headers
+ self._change_number = change_number
+ self._rbs_change_number = rbs_change_number
+ self._sets = sets
+ self._spec = spec
+
+ @property
+ def cache_control_headers(self):
+ """Return cache control headers."""
+ return self._cache_control_headers
+
+ @property
+ def change_number(self):
+ """Return change number."""
+ return self._change_number
+
+ @property
+ def rbs_change_number(self):
+ """Return change number."""
+ return self._rbs_change_number
+
+ @property
+ def sets(self):
+ """Return sets."""
+ return self._sets
+
+ @property
+ def spec(self):
+ """Return sets."""
+ return self._spec
+
+ def __eq__(self, other):
+ """Match between other options."""
+ if self._cache_control_headers != other._cache_control_headers:
+ return False
+
+ if self._change_number != other._change_number:
+ return False
+
+ if self._rbs_change_number != other._rbs_change_number:
+ return False
+
+ if self._sets != other._sets:
+ return False
+
+ if self._spec != other._spec:
+ return False
+
+ return True
+
+
+def build_fetch(change_number, fetch_options, metadata, rbs_change_number=None):
+ """
+ Build fetch with new flags if that is the case.
+
+ :param change_number: Last known timestamp of definition.
+ :type change_number: int
+
+ :param fetch_options: Fetch options for getting definitions.
+ :type fetch_options: splitio.api.commons.FetchOptions
+
+ :param metadata: Metadata Headers.
+ :type metadata: dict
+
+ :param rbs_change_number: Last known timestamp of a rule based segment modification.
+ :type rbs_change_number: int
+
+ :return: Objects for fetch
+ :rtype: dict, dict
+ """
+ query = {'s': fetch_options.spec} if fetch_options.spec is not None else {}
+ query['since'] = change_number
+ if rbs_change_number is not None:
+ query['rbSince'] = rbs_change_number
+ extra_headers = metadata
+ if fetch_options is None:
+ return query, extra_headers
+
+ if fetch_options.cache_control_headers:
+ extra_headers[_CACHE_CONTROL] = _CACHE_CONTROL_NO_CACHE
+ if fetch_options.sets is not None:
+ query['sets'] = fetch_options.sets
+ if fetch_options.change_number is not None:
+ query['till'] = fetch_options.change_number
+ return query, extra_headers
\ No newline at end of file
diff --git a/splitio/api/events.py b/splitio/api/events.py
index b9f177e5..16beeddc 100644
--- a/splitio/api/events.py
+++ b/splitio/api/events.py
@@ -1,30 +1,16 @@
"""Events API module."""
import logging
-from future.utils import raise_from
-
from splitio.api import APIException, headers_from_metadata
from splitio.api.client import HttpClientException
+from splitio.models.telemetry import HTTPExceptionsAndLatencies
-class EventsAPI(object): # pylint: disable=too-few-public-methods
- """Class that uses an httpClient to communicate with the events API."""
+_LOGGER = logging.getLogger(__name__)
- def __init__(self, http_client, apikey, sdk_metadata):
- """
- Class constructor.
- :param http_client: HTTP Client responsble for issuing calls to the backend.
- :type http_client: HttpClient
- :param apikey: User apikey token.
- :type apikey: string
- :param sdk_metadata: SDK version & machine name & IP.
- :type sdk_metadata: splitio.client.util.SdkMetadata
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._client = http_client
- self._apikey = apikey
- self._metadata = headers_from_metadata(sdk_metadata)
+class EventsAPIBase(object): # pylint: disable=too-few-public-methods
+ """Base Class that uses an httpClient to communicate with the events API."""
@staticmethod
def _build_bulk(events):
@@ -49,6 +35,27 @@ def _build_bulk(events):
for event in events
]
+
+class EventsAPI(EventsAPIBase): # pylint: disable=too-few-public-methods
+ """Class that uses an httpClient to communicate with the events API."""
+
+ def __init__(self, http_client, sdk_key, sdk_metadata, telemetry_runtime_producer):
+ """
+ Class constructor.
+
+ :param http_client: HTTP Client responsble for issuing calls to the backend.
+ :type http_client: HttpClient
+ :param sdk_key: sdk key.
+ :type sdk_key: string
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ """
+ self._client = http_client
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.EVENT, self._telemetry_runtime_producer)
+
def flush_events(self, events):
"""
Send events to the backend.
@@ -63,14 +70,60 @@ def flush_events(self, events):
try:
response = self._client.post(
'events',
- '/events/bulk',
- self._apikey,
+ 'events/bulk',
+ self._sdk_key,
+ body=bulk,
+ extra_headers=self._metadata,
+ )
+ if not 200 <= response.status_code < 300:
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.error('Error posting events because an exception was raised by the HTTPClient')
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Events not flushed properly.') from exc
+
+class EventsAPIAsync(EventsAPIBase): # pylint: disable=too-few-public-methods
+ """Async Class that uses an httpClient to communicate with the events API."""
+
+ def __init__(self, http_client, sdk_key, sdk_metadata, telemetry_runtime_producer):
+ """
+ Class constructor.
+
+ :param http_client: HTTP Client responsble for issuing calls to the backend.
+ :type http_client: HttpClient
+ :param sdk_key: sdk key.
+ :type sdk_key: string
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ """
+ self._client = http_client
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.EVENT, self._telemetry_runtime_producer)
+
+ async def flush_events(self, events):
+ """
+ Send events to the backend.
+
+ :param events: Events bulk
+ :type events: list
+
+ :return: True if flush was successful. False otherwise
+ :rtype: bool
+ """
+ bulk = self._build_bulk(events)
+ try:
+ response = await self._client.post(
+ 'events',
+ 'events/bulk',
+ self._sdk_key,
body=bulk,
- extra_headers=self._metadata
+ extra_headers=self._metadata,
)
if not 200 <= response.status_code < 300:
raise APIException(response.body, response.status_code)
except HttpClientException as exc:
- self._logger.error('Http client is throwing exceptions')
- self._logger.debug('Error: ', exc_info=True)
- raise_from(APIException('Events not flushed properly.'), exc)
+ _LOGGER.error('Error posting events because an exception was raised by the HTTPClient')
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Events not flushed properly.') from exc
diff --git a/splitio/api/impressions.py b/splitio/api/impressions.py
index 3f26e8c9..da85691b 100644
--- a/splitio/api/impressions.py
+++ b/splitio/api/impressions.py
@@ -3,28 +3,17 @@
import logging
from itertools import groupby
-from future.utils import raise_from
-
from splitio.api import APIException, headers_from_metadata
from splitio.api.client import HttpClientException
+from splitio.engine.impressions import ImpressionsMode
+from splitio.models.telemetry import HTTPExceptionsAndLatencies
-class ImpressionsAPI(object): # pylint: disable=too-few-public-methods
- """Class that uses an httpClient to communicate with the impressions API."""
+_LOGGER = logging.getLogger(__name__)
- def __init__(self, client, apikey, sdk_metadata):
- """
- Class constructor.
- :param client: HTTP Client responsble for issuing calls to the backend.
- :type client: HttpClient
- :param apikey: User apikey token.
- :type apikey: string
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._client = client
- self._apikey = apikey
- self._metadata = headers_from_metadata(sdk_metadata)
+class ImpressionsAPIBase(object): # pylint: disable=too-few-public-methods
+ """Base Class that uses an httpClient to communicate with the impressions API."""
@staticmethod
def _build_bulk(impressions):
@@ -35,20 +24,13 @@ def _build_bulk(impressions):
:type impressions: list(splitio.models.impressions.Impression)
:return: Dictionary of lists of impressions.
- :rtype: dict
+ :rtype: list
"""
return [
{
- 'testName': test_name,
- 'keyImpressions': [
- {
- 'keyName': impression.matching_key,
- 'treatment': impression.treatment,
- 'time': impression.time,
- 'changeNumber': impression.change_number,
- 'label': impression.label,
- 'bucketingKey': impression.bucketing_key
- }
+ 'f': test_name,
+ 'i': [
+ ImpressionsAPIBase._filter_out_null_prop(impression)
for impression in imps
]
}
@@ -58,6 +40,70 @@ def _build_bulk(impressions):
)
]
+ @staticmethod
+ def _filter_out_null_prop(impression):
+ if impression.properties == None:
+ return {
+ 'k': impression.matching_key,
+ 't': impression.treatment,
+ 'm': impression.time,
+ 'c': impression.change_number,
+ 'r': impression.label,
+ 'b': impression.bucketing_key,
+ 'pt': impression.previous_time
+ }
+
+ return {
+ 'k': impression.matching_key,
+ 't': impression.treatment,
+ 'm': impression.time,
+ 'c': impression.change_number,
+ 'r': impression.label,
+ 'b': impression.bucketing_key,
+ 'pt': impression.previous_time,
+ 'properties': impression.properties
+ }
+
+ @staticmethod
+ def _build_counters(counters):
+ """
+ Build an impression bulk formatted as the API expects it.
+
+ :param counters: List of impression counters per feature.
+ :type counters: list[splitio.engine.impressions.Counter.CountPerFeature]
+
+ :return: dict with list of impression count dtos
+ :rtype: dict
+ """
+ return {
+ 'pf': [
+ {
+ 'f': pf_count.feature,
+ 'm': pf_count.timeframe,
+ 'rc': pf_count.count
+ } for pf_count in counters
+ ]
+ }
+
+
+class ImpressionsAPI(ImpressionsAPIBase): # pylint: disable=too-few-public-methods
+ """Class that uses an httpClient to communicate with the impressions API."""
+
+ def __init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer, mode=ImpressionsMode.OPTIMIZED):
+ """
+ Class constructor.
+
+ :param client: HTTP Client responsble for issuing calls to the backend.
+ :type client: HttpClient
+ :param sdk_key: sdk key.
+ :type sdk_key: string
+ """
+ self._client = client
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._metadata['SplitSDKImpressionsMode'] = mode.name
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
def flush_impressions(self, impressions):
"""
Send impressions to the backend.
@@ -66,17 +112,119 @@ def flush_impressions(self, impressions):
:type impressions: list
"""
bulk = self._build_bulk(impressions)
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.IMPRESSION, self._telemetry_runtime_producer)
try:
response = self._client.post(
'events',
- '/testImpressions/bulk',
- self._apikey,
+ 'testImpressions/bulk',
+ self._sdk_key,
body=bulk,
- extra_headers=self._metadata
+ extra_headers=self._metadata,
)
if not 200 <= response.status_code < 300:
raise APIException(response.body, response.status_code)
except HttpClientException as exc:
- self._logger.error('Http client is throwing exceptions')
- self._logger.debug('Error: ', exc_info=True)
- raise_from(APIException('Impressions not flushed properly.'), exc)
+ _LOGGER.error(
+ 'Error posting impressions because an exception was raised by the HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Impressions not flushed properly.') from exc
+
+ def flush_counters(self, counters):
+ """
+ Send impressions to the backend.
+
+ :param impressions: Impressions bulk
+ :type impressions: list
+ """
+ bulk = self._build_counters(counters)
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.IMPRESSION_COUNT, self._telemetry_runtime_producer)
+ try:
+ response = self._client.post(
+ 'events',
+ 'testImpressions/count',
+ self._sdk_key,
+ body=bulk,
+ extra_headers=self._metadata,
+ )
+ if not 200 <= response.status_code < 300:
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.error(
+ 'Error posting impressions counters because an exception was raised by the '
+ 'HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Impressions not flushed properly.') from exc
+
+
+class ImpressionsAPIAsync(ImpressionsAPIBase): # pylint: disable=too-few-public-methods
+ """Async Class that uses an httpClient to communicate with the impressions API."""
+
+ def __init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer, mode=ImpressionsMode.OPTIMIZED):
+ """
+ Class constructor.
+
+ :param client: HTTP Client responsble for issuing calls to the backend.
+ :type client: HttpClient
+ :param sdk_key: sdk key.
+ :type sdk_key: string
+ """
+ self._client = client
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._metadata['SplitSDKImpressionsMode'] = mode.name
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ async def flush_impressions(self, impressions):
+ """
+ Send impressions to the backend.
+
+ :param impressions: Impressions bulk
+ :type impressions: list
+ """
+ bulk = self._build_bulk(impressions)
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.IMPRESSION, self._telemetry_runtime_producer)
+ try:
+ response = await self._client.post(
+ 'events',
+ 'testImpressions/bulk',
+ self._sdk_key,
+ body=bulk,
+ extra_headers=self._metadata,
+ )
+ if not 200 <= response.status_code < 300:
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.error(
+ 'Error posting impressions because an exception was raised by the HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Impressions not flushed properly.') from exc
+
+ async def flush_counters(self, counters):
+ """
+ Send impressions to the backend.
+
+ :param impressions: Impressions bulk
+ :type impressions: list
+ """
+ bulk = self._build_counters(counters)
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.IMPRESSION_COUNT, self._telemetry_runtime_producer)
+ try:
+ response = await self._client.post(
+ 'events',
+ 'testImpressions/count',
+ self._sdk_key,
+ body=bulk,
+ extra_headers=self._metadata,
+ )
+ if not 200 <= response.status_code < 300:
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.error(
+ 'Error posting impressions counters because an exception was raised by the '
+ 'HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Impressions not flushed properly.') from exc
diff --git a/splitio/api/segments.py b/splitio/api/segments.py
index 82f4a65a..aae33ac6 100644
--- a/splitio/api/segments.py
+++ b/splitio/api/segments.py
@@ -3,53 +3,128 @@
import json
import logging
-from future.utils import raise_from
-
-from splitio.api import APIException
+from splitio.api import APIException, headers_from_metadata
+from splitio.api.commons import build_fetch
from splitio.api.client import HttpClientException
+from splitio.models.telemetry import HTTPExceptionsAndLatencies
+
+
+_LOGGER = logging.getLogger(__name__)
-class SegmentsAPI(object): #pylint: disable=too-few-public-methods
+class SegmentsAPI(object): # pylint: disable=too-few-public-methods
"""Class that uses an httpClient to communicate with the segments API."""
- def __init__(self, http_client, apikey):
+ def __init__(self, http_client, sdk_key, sdk_metadata, telemetry_runtime_producer):
"""
Class constructor.
:param client: HTTP Client responsble for issuing calls to the backend.
:type client: client.HttpClient
- :param apikey: User apikey token.
- :type apikey: string
+ :param sdk_key: User sdk_key token.
+ :type sdk_key: string
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+
"""
- self._logger = logging.getLogger(self.__class__.__name__)
self._client = http_client
- self._apikey = apikey
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.SEGMENT, self._telemetry_runtime_producer)
- def fetch_segment(self, segment_name, change_number):
+ def fetch_segment(self, segment_name, change_number, fetch_options):
"""
Fetch splits from backend.
:param segment_name: Name of the segment to fetch changes for.
:type segment_name: str
- :param change_number: Last known timestamp of a split modification.
+
+ :param change_number: Last known timestamp of a segment modification.
:type change_number: int
+ :param fetch_options: Fetch options for getting segment definitions.
+ :type fetch_options: splitio.api.commons.FetchOptions
+
:return: Json representation of a segmentChange response.
:rtype: dict
"""
try:
+ query, extra_headers = build_fetch(change_number, fetch_options, self._metadata)
response = self._client.get(
'sdk',
- '/segmentChanges/{segment_name}'.format(segment_name=segment_name),
- self._apikey,
- {'since': change_number}
+ 'segmentChanges/{segment_name}'.format(segment_name=segment_name),
+ self._sdk_key,
+ extra_headers=extra_headers,
+ query=query,
+ )
+ if 200 <= response.status_code < 300:
+ return json.loads(response.body)
+
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.error(
+ 'Error fetching %s because an exception was raised by the HTTPClient',
+ segment_name
)
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Segments not fetched properly.') from exc
+
+
+class SegmentsAPIAsync(object): # pylint: disable=too-few-public-methods
+ """Async Class that uses an httpClient to communicate with the segments API."""
+
+ def __init__(self, http_client, sdk_key, sdk_metadata, telemetry_runtime_producer):
+ """
+ Class constructor.
+ :param client: HTTP Client responsble for issuing calls to the backend.
+ :type client: client.HttpClient
+ :param sdk_key: User sdk_key token.
+ :type sdk_key: string
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+
+ """
+ self._client = http_client
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.SEGMENT, self._telemetry_runtime_producer)
+
+ async def fetch_segment(self, segment_name, change_number, fetch_options):
+ """
+ Fetch splits from backend.
+
+ :param segment_name: Name of the segment to fetch changes for.
+ :type segment_name: str
+
+ :param change_number: Last known timestamp of a segment modification.
+ :type change_number: int
+
+ :param fetch_options: Fetch options for getting segment definitions.
+ :type fetch_options: splitio.api.commons.FetchOptions
+
+ :return: Json representation of a segmentChange response.
+ :rtype: dict
+ """
+ try:
+ query, extra_headers = build_fetch(change_number, fetch_options, self._metadata)
+ response = await self._client.get(
+ 'sdk',
+ 'segmentChanges/{segment_name}'.format(segment_name=segment_name),
+ self._sdk_key,
+ extra_headers=extra_headers,
+ query=query,
+ )
if 200 <= response.status_code < 300:
return json.loads(response.body)
- else:
- raise APIException(response.body, response.status_code)
+
+ raise APIException(response.body, response.status_code)
except HttpClientException as exc:
- self._logger.error('Http client is throwing exceptions')
- self._logger.debug('Error: ', exc_info=True)
- raise_from(APIException('Segments not fetched properly.'), exc)
+ _LOGGER.error(
+ 'Error fetching %s because an exception was raised by the HTTPClient',
+ segment_name
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Segments not fetched properly.') from exc
diff --git a/splitio/api/splits.py b/splitio/api/splits.py
index 53ee0ae9..771100fc 100644
--- a/splitio/api/splits.py
+++ b/splitio/api/splits.py
@@ -3,50 +3,200 @@
import logging
import json
-from future.utils import raise_from
-
-from splitio.api import APIException
+from splitio.api import APIException, headers_from_metadata
+from splitio.api.commons import build_fetch, FetchOptions
from splitio.api.client import HttpClientException
+from splitio.models.telemetry import HTTPExceptionsAndLatencies
+from splitio.util.time import utctime_ms
+from splitio.spec import SPEC_VERSION
+from splitio.sync import util
+_LOGGER = logging.getLogger(__name__)
+_SPEC_1_1 = "1.1"
+_PROXY_CHECK_INTERVAL_MILLISECONDS_SS = 24 * 60 * 60 * 1000
-class SplitsAPI(object): #pylint: disable=too-few-public-methods
+class SplitsAPIBase(object): # pylint: disable=too-few-public-methods
"""Class that uses an httpClient to communicate with the splits API."""
- def __init__(self, client, apikey):
+ def __init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer):
"""
Class constructor.
:param client: HTTP Client responsble for issuing calls to the backend.
:type client: HttpClient
- :param apikey: User apikey token.
- :type apikey: string
+ :param sdk_key: User sdk_key token.
+ :type sdk_key: string
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
"""
- self._logger = logging.getLogger(self.__class__.__name__)
self._client = client
- self._apikey = apikey
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.SPLIT, self._telemetry_runtime_producer)
+ self._spec_version = SPEC_VERSION
+ self._last_proxy_check_timestamp = 0
+ self.clear_storage = False
+ self._old_spec_since = None
+
+ def _check_last_proxy_check_timestamp(self, since):
+ if self._spec_version == _SPEC_1_1 and ((utctime_ms() - self._last_proxy_check_timestamp) >= _PROXY_CHECK_INTERVAL_MILLISECONDS_SS):
+ _LOGGER.info("Switching to new Feature flag spec (%s) and fetching.", SPEC_VERSION);
+ self._spec_version = SPEC_VERSION
+ self._old_spec_since = since
+
+ def _check_old_spec_since(self, change_number):
+ if self._spec_version == _SPEC_1_1 and self._old_spec_since is not None:
+ since = self._old_spec_since
+ self._old_spec_since = None
+ return since
+ return change_number
+
+
+class SplitsAPI(SplitsAPIBase): # pylint: disable=too-few-public-methods
+ """Class that uses an httpClient to communicate with the splits API."""
+
+ def __init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer):
+ """
+ Class constructor.
+
+ :param client: HTTP Client responsble for issuing calls to the backend.
+ :type client: HttpClient
+ :param sdk_key: User sdk_key token.
+ :type sdk_key: string
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ """
+ SplitsAPIBase.__init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer)
- def fetch_splits(self, change_number):
+ def fetch_splits(self, change_number, rbs_change_number, fetch_options):
"""
- Fetch splits from backend.
+ Fetch feature flags from backend.
- :param changeNumber: Last known timestamp of a split modification.
- :type changeNumber: int
+ :param change_number: Last known timestamp of a split modification.
+ :type change_number: int
+
+ :param rbs_change_number: Last known timestamp of a rule based segment modification.
+ :type rbs_change_number: int
+
+ :param fetch_options: Fetch options for getting feature flag definitions.
+ :type fetch_options: splitio.api.commons.FetchOptions
:return: Json representation of a splitChanges response.
:rtype: dict
"""
try:
+ self._check_last_proxy_check_timestamp(change_number)
+ change_number = self._check_old_spec_since(change_number)
+
+ if self._spec_version == _SPEC_1_1:
+ fetch_options = FetchOptions(fetch_options.cache_control_headers, fetch_options.change_number,
+ None, fetch_options.sets, self._spec_version)
+ rbs_change_number = None
+ query, extra_headers = build_fetch(change_number, fetch_options, self._metadata, rbs_change_number)
response = self._client.get(
'sdk',
- '/splitChanges',
- self._apikey,
- {'since': change_number}
+ 'splitChanges',
+ self._sdk_key,
+ extra_headers=extra_headers,
+ query=query,
+ )
+ if 200 <= response.status_code < 300:
+ if self._spec_version == _SPEC_1_1:
+ return util.convert_to_new_spec(json.loads(response.body))
+
+ self.clear_storage = self._last_proxy_check_timestamp != 0
+ self._last_proxy_check_timestamp = 0
+ return json.loads(response.body)
+
+ else:
+ if response.status_code == 414:
+ _LOGGER.error('Error fetching feature flags; the amount of flag sets provided are too big, causing uri length error.')
+
+ if self._client.is_sdk_endpoint_overridden() and response.status_code == 400 and self._spec_version == SPEC_VERSION:
+ _LOGGER.warning('Detected proxy response error, changing spec version from %s to %s and re-fetching.', self._spec_version, _SPEC_1_1)
+ self._spec_version = _SPEC_1_1
+ self._last_proxy_check_timestamp = utctime_ms()
+ return self.fetch_splits(change_number, None, FetchOptions(fetch_options.cache_control_headers, fetch_options.change_number,
+ None, fetch_options.sets, self._spec_version))
+
+ raise APIException(response.body, response.status_code)
+
+ except HttpClientException as exc:
+ _LOGGER.error('Error fetching feature flags because an exception was raised by the HTTPClient')
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Feature flags not fetched correctly.') from exc
+
+class SplitsAPIAsync(SplitsAPIBase): # pylint: disable=too-few-public-methods
+ """Class that uses an httpClient to communicate with the splits API."""
+
+ def __init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer):
+ """
+ Class constructor.
+
+ :param client: HTTP Client responsble for issuing calls to the backend.
+ :type client: HttpClient
+ :param sdk_key: User sdk_key token.
+ :type sdk_key: string
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ """
+ SplitsAPIBase.__init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer)
+
+ async def fetch_splits(self, change_number, rbs_change_number, fetch_options):
+ """
+ Fetch feature flags from backend.
+
+ :param change_number: Last known timestamp of a split modification.
+ :type change_number: int
+
+ :param rbs_change_number: Last known timestamp of a rule based segment modification.
+ :type rbs_change_number: int
+
+ :param fetch_options: Fetch options for getting feature flag definitions.
+ :type fetch_options: splitio.api.commons.FetchOptions
+
+ :return: Json representation of a splitChanges response.
+ :rtype: dict
+ """
+ try:
+ self._check_last_proxy_check_timestamp(change_number)
+ change_number = self._check_old_spec_since(change_number)
+ if self._spec_version == _SPEC_1_1:
+ fetch_options = FetchOptions(fetch_options.cache_control_headers, fetch_options.change_number,
+ None, fetch_options.sets, self._spec_version)
+ rbs_change_number = None
+
+ query, extra_headers = build_fetch(change_number, fetch_options, self._metadata, rbs_change_number)
+ response = await self._client.get(
+ 'sdk',
+ 'splitChanges',
+ self._sdk_key,
+ extra_headers=extra_headers,
+ query=query,
)
if 200 <= response.status_code < 300:
+ if self._spec_version == _SPEC_1_1:
+ return util.convert_to_new_spec(json.loads(response.body))
+
+ self.clear_storage = self._last_proxy_check_timestamp != 0
+ self._last_proxy_check_timestamp = 0
return json.loads(response.body)
+
else:
+ if response.status_code == 414:
+ _LOGGER.error('Error fetching feature flags; the amount of flag sets provided are too big, causing uri length error.')
+
+ if self._client.is_sdk_endpoint_overridden() and response.status_code == 400 and self._spec_version == SPEC_VERSION:
+ _LOGGER.warning('Detected proxy response error, changing spec version from %s to %s and re-fetching.', self._spec_version, _SPEC_1_1)
+ self._spec_version = _SPEC_1_1
+ self._last_proxy_check_timestamp = utctime_ms()
+ return await self.fetch_splits(change_number, None, FetchOptions(fetch_options.cache_control_headers, fetch_options.change_number,
+ None, fetch_options.sets, self._spec_version))
+
raise APIException(response.body, response.status_code)
+
except HttpClientException as exc:
- self._logger.error('Http client is throwing exceptions')
- self._logger.debug('Error: ', exc_info=True)
- raise_from(APIException('Splits not fetched correctly.'), exc)
+ _LOGGER.error('Error fetching feature flags because an exception was raised by the HTTPClient')
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Feature flags not fetched correctly.') from exc
diff --git a/splitio/api/telemetry.py b/splitio/api/telemetry.py
index 97d747c7..48f2ad2d 100644
--- a/splitio/api/telemetry.py
+++ b/splitio/api/telemetry.py
@@ -1,135 +1,187 @@
-"""Telemetry API Module."""
+"""Impressions API module."""
import logging
-import six
-from future.utils import raise_from
-
from splitio.api import APIException, headers_from_metadata
from splitio.api.client import HttpClientException
+from splitio.models.telemetry import HTTPExceptionsAndLatencies
+_LOGGER = logging.getLogger(__name__)
-class TelemetryAPI(object):
- """Class to handle telemetry submission to the backend."""
+class TelemetryAPI(object): # pylint: disable=too-few-public-methods
+ """Class that uses an httpClient to communicate with the Telemetry API."""
- def __init__(self, client, apikey, sdk_metadata):
+ def __init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer):
"""
Class constructor.
:param client: HTTP Client responsble for issuing calls to the backend.
:type client: HttpClient
- :param apikey: User apikey token.
- :type apikey: string
- :param sdk_metadata: SDK Version, IP & Machine name
- :type sdk_metadata: splitio.client.util.SdkMetadata
+ :param sdk_key: User sdk_key token.
+ :type sdk_key: string
"""
- self._logger = logging.getLogger(self.__class__.__name__)
self._client = client
- self._apikey = apikey
+ self._sdk_key = sdk_key
self._metadata = headers_from_metadata(sdk_metadata)
- @staticmethod
- def _build_latencies(latencies):
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.TELEMETRY, self._telemetry_runtime_producer)
+
+ def record_unique_keys(self, uniques):
"""
- Build a latencies bulk as expected by the BE.
+ Send unique keys to the backend.
- :param latencies: Latencies to bundle.
- :type latencies: dict
+ :param uniques: Unique Keys
+ :type json
"""
- return [
- {'name': name, 'latencies': latencies_list}
- for name, latencies_list in six.iteritems(latencies)
- ]
+ try:
+ response = self._client.post(
+ 'telemetry',
+ 'v1/keys/ss',
+ self._sdk_key,
+ body=uniques,
+ extra_headers=self._metadata
+ )
+ if not 200 <= response.status_code < 300:
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.debug(
+ 'Error posting unique keys because an exception was raised by the HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Unique keys not flushed properly.') from exc
- def flush_latencies(self, latencies):
+ def record_init(self, configs):
"""
- Submit latencies to the backend.
+ Send init config data to the backend.
- :param latencies: List of latency buckets with their respective count.
- :type latencies: list
+ :param configs: configs
+ :type json
"""
- bulk = self._build_latencies(latencies)
try:
response = self._client.post(
- 'events',
- '/metrics/times',
- self._apikey,
- body=bulk,
- extra_headers=self._metadata
+ 'telemetry',
+ 'v1/metrics/config',
+ self._sdk_key,
+ body=configs,
+ extra_headers=self._metadata,
)
if not 200 <= response.status_code < 300:
raise APIException(response.body, response.status_code)
except HttpClientException as exc:
- self._logger.error('Http client is throwing exceptions')
- self._logger.debug('Error: ', exc_info=True)
- raise_from(APIException('Latencies not flushed correctly.'), exc)
+ _LOGGER.debug(
+ 'Error posting init config because an exception was raised by the HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
- @staticmethod
- def _build_gauges(gauges):
+ def record_stats(self, stats):
"""
- Build a gauges bulk as expected by the BE.
+ Send runtime stats to the backend.
- :param gauges: Gauges to bundle.
- :type gauges: dict
+ :param stats: stats
+ :type json
"""
- return [
- {'name': name, 'value': value}
- for name, value in six.iteritems(gauges)
- ]
+ try:
+ response = self._client.post(
+ 'telemetry',
+ 'v1/metrics/usage',
+ self._sdk_key,
+ body=stats,
+ extra_headers=self._metadata,
+ )
+ if not 200 <= response.status_code < 300:
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.debug(
+ 'Error posting runtime stats because an exception was raised by the HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Runtime stats not flushed properly.') from exc
+
+
+class TelemetryAPIAsync(object): # pylint: disable=too-few-public-methods
+ """Async Class that uses an httpClient to communicate with the Telemetry API."""
- def flush_gauges(self, gauges):
+ def __init__(self, client, sdk_key, sdk_metadata, telemetry_runtime_producer):
"""
- Submit gauges to the backend.
+ Class constructor.
+
+ :param client: HTTP Client responsble for issuing calls to the backend.
+ :type client: HttpClient
+ :param sdk_key: User sdk_key token.
+ :type sdk_key: string
+ """
+ self._client = client
+ self._sdk_key = sdk_key
+ self._metadata = headers_from_metadata(sdk_metadata)
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._client.set_telemetry_data(HTTPExceptionsAndLatencies.TELEMETRY, self._telemetry_runtime_producer)
- :param gauges: Gauges measured to be sent to the backend.
- :type gauges: List
+ async def record_unique_keys(self, uniques):
+ """
+ Send unique keys to the backend.
+
+ :param uniques: Unique Keys
+ :type json
"""
- bulk = self._build_gauges(gauges)
try:
- response = self._client.post(
- 'events',
- '/metrics/gauge',
- self._apikey,
- body=bulk,
+ response = await self._client.post(
+ 'telemetry',
+ 'v1/keys/ss',
+ self._sdk_key,
+ body=uniques,
extra_headers=self._metadata
)
if not 200 <= response.status_code < 300:
raise APIException(response.body, response.status_code)
except HttpClientException as exc:
- self._logger.error('Http client is throwing exceptions')
- self._logger.debug('Error: ', exc_info=True)
- raise_from(APIException('Gauges not flushed correctly.'), exc)
+ _LOGGER.debug(
+ 'Error posting unique keys because an exception was raised by the HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Unique keys not flushed properly.') from exc
- @staticmethod
- def _build_counters(counters):
+ async def record_init(self, configs):
"""
- Build a counters bulk as expected by the BE.
+ Send init config data to the backend.
- :param counters: Counters to bundle.
- :type counters: dict
+ :param configs: configs
+ :type json
"""
- return [
- {'name': name, 'delta': value}
- for name, value in six.iteritems(counters)
- ]
+ try:
+ response = await self._client.post(
+ 'telemetry',
+ 'v1/metrics/config',
+ self._sdk_key,
+ body=configs,
+ extra_headers=self._metadata,
+ )
+ if not 200 <= response.status_code < 300:
+ raise APIException(response.body, response.status_code)
+ except HttpClientException as exc:
+ _LOGGER.debug(
+ 'Error posting init config because an exception was raised by the HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
- def flush_counters(self, counters):
+ async def record_stats(self, stats):
"""
- Submit counters to the backend.
+ Send runtime stats to the backend.
- :param counters: Counters measured to be sent to the backend.
- :type counters: List
+ :param stats: stats
+ :type json
"""
- bulk = self._build_counters(counters)
try:
- response = self._client.post(
- 'events',
- '/metrics/counters',
- self._apikey,
- body=bulk,
- extra_headers=self._metadata
+ response = await self._client.post(
+ 'telemetry',
+ 'v1/metrics/usage',
+ self._sdk_key,
+ body=stats,
+ extra_headers=self._metadata,
)
if not 200 <= response.status_code < 300:
raise APIException(response.body, response.status_code)
except HttpClientException as exc:
- self._logger.error('Http client is throwing exceptions')
- self._logger.debug('Error: ', exc_info=True)
- raise_from(APIException('Counters not flushed correctly.'), exc)
+ _LOGGER.debug(
+ 'Error posting runtime stats because an exception was raised by the HTTPClient'
+ )
+ _LOGGER.debug('Error: ', exc_info=True)
+ raise APIException('Runtime stats not flushed properly.') from exc
diff --git a/splitio/client/client.py b/splitio/client/client.py
index 894503fb..3c61166d 100644
--- a/splitio/client/client.py
+++ b/splitio/client/client.py
@@ -1,28 +1,47 @@
"""A module for Split.io SDK API clients."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
import logging
-import time
-import six
-from splitio.engine.evaluator import Evaluator, CONTROL
-from splitio.engine.splitters import Splitter
-from splitio.models.impressions import Impression, Label
-from splitio.models.events import Event, EventWrapper
-from splitio.models.telemetry import get_latency_bucket_index
+import json
+from collections import namedtuple
+import copy
+
from splitio.client import input_validator
-from splitio.client.listener import ImpressionListenerException
+from splitio.engine.evaluator import Evaluator, CONTROL, EvaluationDataFactory, AsyncEvaluationDataFactory
+from splitio.engine.splitters import Splitter
+from splitio.models.impressions import Impression, Label, ImpressionDecorated
+from splitio.models.events import Event, EventWrapper, SdkEvent
+from splitio.models.telemetry import get_latency_bucket_index, MethodExceptionsAndLatencies
+from splitio.optional.loaders import asyncio
+from splitio.util.time import get_current_epoch_time_ms, utctime_ms
-class Client(object): # pylint: disable=too-many-instance-attributes
+_LOGGER = logging.getLogger(__name__)
+EvaluationOptions = namedtuple('EvaluationOptions', ['properties'])
+
+
+class ClientBase(object): # pylint: disable=too-many-instance-attributes
"""Entry point for the split sdk."""
- _METRIC_GET_TREATMENT = 'sdk.getTreatment'
- _METRIC_GET_TREATMENTS = 'sdk.getTreatments'
- _METRIC_GET_TREATMENT_WITH_CONFIG = 'sdk.getTreatmentWithConfig'
- _METRIC_GET_TREATMENTS_WITH_CONFIG = 'sdk.getTreatmentsWithConfig'
+ _FAILED_EVAL_RESULT = {
+ 'treatment': CONTROL,
+ 'configurations': None,
+ 'impression': {
+ 'label': Label.EXCEPTION,
+ 'change_number': None,
+ },
+ 'impressions_disabled': False
+ }
- def __init__(self, factory, labels_enabled=True, impression_listener=None):
+ _NON_READY_EVAL_RESULT = {
+ 'treatment': CONTROL,
+ 'configurations': None,
+ 'impression': {
+ 'label': Label.NOT_READY,
+ 'change_number': None
+ },
+ 'impressions_disabled': False
+ }
+
+ def __init__(self, factory, recorder, events_manager, labels_enabled=True, fallback_treatment_calculator=None):
"""
Construct a Client instance.
@@ -32,31 +51,23 @@ def __init__(self, factory, labels_enabled=True, impression_listener=None):
:param labels_enabled: Whether to store labels on impressions
:type labels_enabled: bool
- :param impression_listener: impression listener implementation
- :type impression_listener: ImpressionListener
+ :param recorder: recorder instance
+ :type recorder: splitio.recorder.StatsRecorder
:rtype: Client
"""
- self._logger = logging.getLogger(self.__class__.__name__)
self._factory = factory
self._labels_enabled = labels_enabled
- self._impression_listener = impression_listener
-
+ self._recorder = recorder
self._splitter = Splitter()
- self._split_storage = factory._get_storage('splits') # pylint: disable=protected-access
+ self._feature_flag_storage = factory._get_storage('splits') # pylint: disable=protected-access
self._segment_storage = factory._get_storage('segments') # pylint: disable=protected-access
- self._impressions_storage = factory._get_storage('impressions') # pylint: disable=protected-access
self._events_storage = factory._get_storage('events') # pylint: disable=protected-access
- self._telemetry_storage = factory._get_storage('telemetry') # pylint: disable=protected-access
- self._evaluator = Evaluator(self._split_storage, self._segment_storage, self._splitter)
-
- def destroy(self):
- """
- Destroy the underlying factory.
-
- Only applicable when using in-memory operation mode.
- """
- self._factory.destroy()
+ self._evaluator = Evaluator(self._splitter, fallback_treatment_calculator)
+ self._telemetry_evaluation_producer = self._factory._telemetry_evaluation_producer
+ self._telemetry_init_producer = self._factory._telemetry_init_producer
+ self._fallback_treatment_calculator = fallback_treatment_calculator
+ self._events_manager = events_manager
@property
def ready(self):
@@ -68,188 +79,712 @@ def destroyed(self):
"""Return whether the factory holding this client has been destroyed."""
return self._factory.destroyed
- def _send_impression_to_listener(self, impression, attributes):
+ def _client_is_usable(self):
+ if self.destroyed:
+ _LOGGER.error("Client has already been destroyed - no calls possible")
+ return False
+
+ if self._factory._waiting_fork():
+ _LOGGER.error("Client is not ready - no calls possible")
+ return False
+
+ return True
+
+ @staticmethod
+ def _validate_treatment_input(key, feature, attributes, method, evaluation_options=None):
+ """Perform all static validations on user supplied input."""
+ matching_key, bucketing_key = input_validator.validate_key(key, 'get_' + method.value)
+ if not matching_key:
+ raise _InvalidInputError()
+
+ feature = input_validator.validate_feature_flag_name(feature, 'get_' + method.value)
+ if not feature:
+ raise _InvalidInputError()
+
+ if not input_validator.validate_attributes(attributes, 'get_' + method.value):
+ raise _InvalidInputError()
+
+ evaluation_options = ClientBase._validate_treatment_options('get_' + method.value, evaluation_options)
+ return matching_key, bucketing_key, feature, attributes, evaluation_options
+
+ @staticmethod
+ def _validate_treatments_input(key, features, attributes, method, evaluation_options=None):
+ """Perform all static validations on user supplied input."""
+ matching_key, bucketing_key = input_validator.validate_key(key, 'get_' + method.value)
+ if not matching_key:
+ raise _InvalidInputError()
+
+ features = input_validator.validate_feature_flags_get_treatments('get_' + method.value, features)
+ if not features:
+ raise _InvalidInputError()
+
+ if not input_validator.validate_attributes(attributes, 'get_' + method.value):
+ raise _InvalidInputError()
+
+ evaluation_options = ClientBase._validate_treatment_options('get_' + method.value, evaluation_options)
+ return matching_key, bucketing_key, features, attributes, evaluation_options
+
+ @staticmethod
+ def _validate_treatment_options(method_name, evaluation_options=None):
+ evaluation_options = input_validator.validate_evaluation_options(evaluation_options, method_name)
+ if evaluation_options == None:
+ return None
+
+ if evaluation_options.properties is not None:
+ valid, properties, size = input_validator.valid_properties(evaluation_options.properties, method_name)
+ evaluation_options = EvaluationOptions(properties)
+ if not valid:
+ evaluation_options = EvaluationOptions(None)
+ return evaluation_options
+
+ def _build_impression(self, key, bucketing, feature, result, properties=None):
+ """Build an impression based on evaluation data & it's result."""
+ return ImpressionDecorated(
+ Impression(matching_key=key,
+ feature_name=feature,
+ treatment=result['treatment'],
+ label=result['impression']['label'] if self._labels_enabled else None,
+ change_number=result['impression']['change_number'],
+ bucketing_key=bucketing,
+ time=utctime_ms(),
+ previous_time=None,
+ properties=json.dumps(properties) if properties is not None else None),
+ disabled=result['impressions_disabled'])
+
+ def _build_impressions(self, key, bucketing, results, properties=None):
+ """Build an impression based on evaluation data & it's result."""
+ return [
+ self._build_impression(key, bucketing, feature, result, properties)
+ for feature, result in results.items()
+ ]
+
+ def _validate_track(self, key, traffic_type, event_type, value=None, properties=None):
"""
- Send impression result to custom listener.
+ Validate track call parameters
- :param impression: Generated impression
- :type impression: Impression
+ :param key: user key associated to the event
+ :type key: str
+ :param traffic_type: traffic type name
+ :type traffic_type: str
+ :param event_type: event type name
+ :type event_type: str
+ :param value: (Optional) value associated to the event
+ :type value: Number
+ :param properties: (Optional) properties associated to the event
+ :type properties: dict
+
+ :return: validation, event created and its properties size.
+ :rtype: tuple(bool, splitio.models.events.Event, int)
+ """
+ if self.destroyed:
+ _LOGGER.error("Client has already been destroyed - no calls possible")
+ return False, None, None
+ if self._factory._waiting_fork():
+ _LOGGER.error("Client is not ready - no calls possible")
+ return False, None, None
+
+ key = input_validator.validate_track_key(key)
+ event_type = input_validator.validate_event_type(event_type)
+ value = input_validator.validate_value(value)
+ valid, properties, size = input_validator.valid_properties(properties, 'track')
+
+ if key is None or event_type is None or traffic_type is None or value is False \
+ or valid is False:
+ return False, None, None
+
+ event = Event(
+ key=key,
+ traffic_type_name=traffic_type,
+ event_type_id=event_type,
+ value=value,
+ timestamp=utctime_ms(),
+ properties=properties,
+ )
+
+ return True, event, size
+
+ def _get_properties(self, evaluation_options):
+ return evaluation_options.properties if evaluation_options != None else None
+
+ def _get_fallback_treatment_with_config(self, feature):
+ fallback_treatment = self._fallback_treatment_calculator.resolve(feature, "")
+ return fallback_treatment.treatment, fallback_treatment.config
+
+ def _get_fallback_eval_results(self, eval_result, feature):
+ result = copy.deepcopy(eval_result)
+ fallback_treatment = self._fallback_treatment_calculator.resolve(feature, result["impression"]["label"])
+ result["impression"]["label"] = fallback_treatment.label
+ result["treatment"] = fallback_treatment.treatment
+ result["configurations"] = fallback_treatment.config
+
+ return result
+
+ def _check_impression_label(self, result):
+ return result['impression']['label'] == None or (result['impression']['label'] != None and result['impression']['label'].find(Label.SPLIT_NOT_FOUND) == -1)
+
+ def _validate_sdk_event_info(self, sdk_event, callback_handle):
+ if not self._check_sdk_event(sdk_event):
+ return False
+
+ if not hasattr(callback_handle, '__call__'):
+ _LOGGER.warning("Client Event Subscription: The callback handle passed must be of type function, ignoring event subscribing action.")
+ return False
+
+ return True
+
+ def _check_sdk_event(self, sdk_event):
+ if not isinstance(sdk_event, SdkEvent):
+ _LOGGER.warning("Client Event Subscription: The event passed must be of type SdkEvent, ignoring event subscribing action.")
+ return False
+
+ return True
+
+class Client(ClientBase): # pylint: disable=too-many-instance-attributes
+ """Entry point for the split sdk."""
+
+ def __init__(self, factory, recorder, events_manager, labels_enabled=True, fallback_treatment_calculator=None):
+ """
+ Construct a Client instance.
+
+ :param factory: Split factory (client & manager container)
+ :type factory: splitio.client.factory.SplitFactory
+
+ :param labels_enabled: Whether to store labels on impressions
+ :type labels_enabled: bool
+
+ :param recorder: recorder instance
+ :type recorder: splitio.recorder.StatsRecorder
+
+ :rtype: Client
+ """
+ ClientBase.__init__(self, factory, recorder, events_manager, labels_enabled, fallback_treatment_calculator)
+ self._context_factory = EvaluationDataFactory(factory._get_storage('splits'), factory._get_storage('segments'), factory._get_storage('rule_based_segments'))
+
+ def destroy(self):
+ """
+ Destroy the underlying factory.
+
+ Only applicable when using in-memory operation mode.
+ """
+ self._factory.destroy()
+
+ def on(self, sdk_event, callback_handle):
+ if not self._validate_sdk_event_info(sdk_event, callback_handle):
+ return
+
+ self._events_manager.register(sdk_event, callback_handle)
+
+ def get_treatment(self, key, feature_flag_name, attributes=None, evaluation_options=None):
+ """
+ Get the treatment for a feature flag and key, with an optional dictionary of attributes.
+
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param feature_flag_name: The name of the feature flag for which to get the treatment
+ :type feature_flag_name: str
:param attributes: An optional dictionary of attributes
:type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: The treatment for the key and feature flag
+ :rtype: str
"""
- if self._impression_listener is not None:
- try:
- self._impression_listener.log_impression(impression, attributes)
- except ImpressionListenerException:
- self._logger.error(
- 'An exception was raised while calling user-custom impression listener'
- )
- self._logger.debug('Error', exc_info=True)
-
- def _evaluate_if_ready(self, matching_key, bucketing_key, feature, attributes=None):
+ try:
+ treatment, _ = self._get_treatment(MethodExceptionsAndLatencies.TREATMENT, key, feature_flag_name, attributes, evaluation_options)
+ return treatment
+
+ except:
+ _LOGGER.error('get_treatment failed')
+ treatment, _ = self._get_fallback_treatment_with_config(feature_flag_name)
+ return treatment
+
+ def get_treatment_with_config(self, key, feature_flag_name, attributes=None, evaluation_options=None):
+ """
+ Get the treatment and config for a feature flag and key, with optional dictionary of attributes.
+
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param feature: The name of the feature flag for which to get the treatment
+ :type feature: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: The treatment for the key and feature flag
+ :rtype: tuple(str, str)
+ """
+ try:
+ return self._get_treatment(MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG, key, feature_flag_name, attributes, evaluation_options)
+
+ except Exception:
+ _LOGGER.error('get_treatment_with_config failed')
+ return self._get_fallback_treatment_with_config(feature_flag_name)
+
+ def _get_treatment(self, method, key, feature, attributes=None, evaluation_options=None):
+ """
+ Validate key, feature flag name and object, and get the treatment and config with an optional dictionary of attributes.
+
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param feature_flag_name: The name of the feature flag for which to get the treatment
+ :type feature_flag_name: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param method: The method calling this function
+ :type method: splitio.models.telemetry.MethodExceptionsAndLatencies
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: The treatment and config for the key and feature flag
+ :rtype: dict
+ """
+ if not self._client_is_usable(): # not destroyed & not waiting for a fork
+ return self._get_fallback_treatment_with_config(feature)
+
+ start = get_current_epoch_time_ms()
if not self.ready:
- return {
- 'treatment': CONTROL,
- 'configurations': None,
- 'impression': {
- 'label': Label.NOT_READY,
- 'change_number': None
- }
- }
-
- return self._evaluator.evaluate_feature(
- feature,
- matching_key,
- bucketing_key,
- attributes
- )
+ _LOGGER.error("Client is not ready - no calls possible")
+ self._telemetry_init_producer.record_not_ready_usage()
- def _make_evaluation(self, key, feature, attributes, method_name, metric_name):
try:
- if self.destroyed:
- self._logger.error("Client has already been destroyed - no calls possible")
- return CONTROL, None
-
- start = int(round(time.time() * 1000))
-
- matching_key, bucketing_key = input_validator.validate_key(key, method_name)
- feature = input_validator.validate_feature_name(
- feature,
- self.ready,
- self._factory._get_storage('splits'), # pylint: disable=protected-access
- method_name
- )
-
- if (matching_key is None and bucketing_key is None) \
- or feature is None \
- or not input_validator.validate_attributes(attributes, method_name):
- return CONTROL, None
-
- result = self._evaluate_if_ready(matching_key, bucketing_key, feature, attributes)
-
- impression = self._build_impression(
- matching_key,
- feature,
- result['treatment'],
- result['impression']['label'],
- result['impression']['change_number'],
- bucketing_key,
- start
- )
-
- self._record_stats([impression], start, metric_name)
- self._send_impression_to_listener(impression, attributes)
- return result['treatment'], result['configurations']
- except Exception: # pylint: disable=broad-except
- self._logger.error('Error getting treatment for feature')
- self._logger.debug('Error: ', exc_info=True)
+ key, bucketing, feature, attributes, evaluation_options = self._validate_treatment_input(key, feature, attributes, method, evaluation_options)
+ except _InvalidInputError:
+ return self._get_fallback_treatment_with_config(feature)
+
+ result = self._get_fallback_eval_results(self._NON_READY_EVAL_RESULT, feature)
+
+ if self.ready:
try:
- impression = self._build_impression(
- matching_key,
- feature,
- CONTROL,
- Label.EXCEPTION,
- self._split_storage.get_change_number(),
- bucketing_key,
- start
- )
- self._record_stats([impression], start, metric_name)
- self._send_impression_to_listener(impression, attributes)
- except Exception: # pylint: disable=broad-except
- self._logger.error('Error reporting impression into get_treatment exception block')
- self._logger.debug('Error: ', exc_info=True)
- return CONTROL, None
-
- def _make_evaluations(self, key, features, attributes, method_name, metric_name):
- if self.destroyed:
- self._logger.error("Client has already been destroyed - no calls possible")
- return input_validator.generate_control_treatments(features, method_name)
+ ctx = self._context_factory.context_for(key, [feature])
+ input_validator.validate_feature_flag_names({feature: ctx.flags.get(feature)}, 'get_' + method.value)
+ result = self._evaluator.eval_with_context(key, bucketing, feature, attributes, ctx)
+ except RuntimeError as e:
+ _LOGGER.error('Error getting treatment for feature flag')
+ _LOGGER.debug('Error: ', exc_info=True)
+ self._telemetry_evaluation_producer.record_exception(method)
+ result = self._get_fallback_eval_results(self._FAILED_EVAL_RESULT, feature)
- start = int(round(time.time() * 1000))
+ properties = self._get_properties(evaluation_options)
+ if self._check_impression_label(result):
+ impression_decorated = self._build_impression(key, bucketing, feature, result, properties)
+ self._record_stats([(impression_decorated, attributes)], start, method)
- matching_key, bucketing_key = input_validator.validate_key(key, method_name)
- if matching_key is None and bucketing_key is None:
- return input_validator.generate_control_treatments(features, method_name)
+ return result['treatment'], result['configurations']
+
+ def get_treatments(self, key, feature_flag_names, attributes=None, evaluation_options=None):
+ """
+ Evaluate multiple feature flags and return a dictionary with all the feature flag/treatments.
- if input_validator.validate_attributes(attributes, method_name) is False:
- return input_validator.generate_control_treatments(features, method_name)
+ Get the treatments for a list of feature flags considering a key, with an optional dictionary of
+ attributes. This method never raises an exception. If there's a problem, the appropriate
+ log message will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param features: Array of the names of the feature flags for which to get the treatment
+ :type feature: list
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ try:
+ with_config = self._get_treatments(key, feature_flag_names, MethodExceptionsAndLatencies.TREATMENTS, attributes, evaluation_options)
+ return {feature_flag: result[0] for (feature_flag, result) in with_config.items()}
- features, missing = input_validator.validate_features_get_treatments(
- method_name,
- features,
- self.ready,
- self._factory._get_storage('splits') # pylint: disable=protected-access
- )
- if features is None:
+ except Exception:
+ return {feature: self._get_fallback_treatment_with_config(feature)[0] for feature in feature_flag_names}
+
+ def get_treatments_with_config(self, key, feature_flag_names, attributes=None, evaluation_options=None):
+ """
+ Evaluate multiple feature flags and return a dict with feature flag -> (treatment, config).
+
+ Get the treatments for a list of feature flags considering a key, with an optional dictionary of
+ attributes. This method never raises an exception. If there's a problem, the appropriate
+ log message will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param features: Array of the names of the feature flags for which to get the treatment
+ :type feature: list
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ try:
+ return self._get_treatments(key, feature_flag_names, MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG, attributes, evaluation_options)
+
+ except Exception:
+ return {feature: (self._get_fallback_treatment_with_config(feature)) for feature in feature_flag_names}
+
+ def get_treatments_by_flag_set(self, key, flag_set, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag set.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_set: flag set
+ :type flag_sets: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return self._get_treatments_by_flag_sets( key, [flag_set], MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET, attributes, evaluation_options)
+
+ def get_treatments_by_flag_sets(self, key, flag_sets, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag sets.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_sets: list of flag sets
+ :type flag_sets: list
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return self._get_treatments_by_flag_sets( key, flag_sets, MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS, attributes, evaluation_options)
+
+ def get_treatments_with_config_by_flag_set(self, key, flag_set, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag set.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_set: flag set
+ :type flag_sets: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return self._get_treatments_by_flag_sets( key, [flag_set], MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET, attributes, evaluation_options)
+
+ def get_treatments_with_config_by_flag_sets(self, key, flag_sets, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag set.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_set: flag set
+ :type flag_sets: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return self._get_treatments_by_flag_sets( key, flag_sets, MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS, attributes, evaluation_options)
+
+ def _get_treatments_by_flag_sets(self, key, flag_sets, method, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag sets.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_sets: list of flag sets
+ :type flag_sets: list
+ :param method: Treatment by flag set method flavor
+ :type method: splitio.models.telemetry.MethodExceptionsAndLatencies
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ feature_flags_names = self._get_feature_flag_names_by_flag_sets(flag_sets, 'get_' + method.value)
+ if feature_flags_names == []:
+ _LOGGER.warning("%s: No valid Flag set or no feature flags found for evaluating treatments", 'get_' + method.value)
return {}
- bulk_impressions = []
- treatments = {name: (CONTROL, None) for name in missing}
+ if 'config' in method.value:
+ return self._get_treatments(key, feature_flags_names, method, attributes, evaluation_options)
+
+ with_config = self._get_treatments(key, feature_flags_names, method, attributes, evaluation_options)
+ return {feature_flag: result[0] for (feature_flag, result) in with_config.items()}
+
+ def get_treatments_by_flag_set(self, key, flag_set, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag set.
+
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_set: flag set
+ :type flag_sets: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return self._get_treatments_by_flag_sets( key, [flag_set], MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET, attributes, evaluation_options)
+
+ def get_treatments_by_flag_sets(self, key, flag_sets, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag sets.
+
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_sets: list of flag sets
+ :type flag_sets: list
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return self._get_treatments_by_flag_sets( key, flag_sets, MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS, attributes, evaluation_options)
+
+ def get_treatments_with_config_by_flag_set(self, key, flag_set, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag set.
+
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_set: flag set
+ :type flag_sets: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return self._get_treatments_by_flag_sets( key, [flag_set], MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET, attributes, evaluation_options)
+
+ def get_treatments_with_config_by_flag_sets(self, key, flag_sets, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag set.
+
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_set: flag set
+ :type flag_sets: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return self._get_treatments_by_flag_sets( key, flag_sets, MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS, attributes, evaluation_options)
+
+ def _get_feature_flag_names_by_flag_sets(self, flag_sets, method_name):
+ """
+ Sanitize given flag sets and return list of feature flag names associated with them
+ :param flag_sets: list of flag sets
+ :type flag_sets: list
+
+ :return: list of feature flag names
+ :rtype: list
+ """
+ sanitized_flag_sets = input_validator.validate_flag_sets(flag_sets, method_name)
+ feature_flags_by_set = self._feature_flag_storage.get_feature_flags_by_sets(sanitized_flag_sets)
+ if feature_flags_by_set is None:
+ _LOGGER.warning("Fetching feature flags for flag set %s encountered an error, skipping this flag set." % (flag_sets))
+ return []
+
+ return feature_flags_by_set
+
+ def _get_treatments(self, key, features, method, attributes=None, evaluation_options=None):
+ """
+ Validate key, feature flag names and objects, and get the treatments and configs with an optional dictionary of attributes.
+
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param feature_flag_names: Array of feature flag names for which to get the treatments
+ :type feature_flag_names: list(str)
+ :param method: The method calling this function
+ :type method: splitio.models.telemetry.MethodExceptionsAndLatencies
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+
+ :return: The treatments and configs for the key and feature flags
+ :rtype: dict
+ """
+ start = get_current_epoch_time_ms()
+ if not self._client_is_usable():
+ return input_validator.generate_control_treatments(features, self._fallback_treatment_calculator)
+
+ if not self.ready:
+ _LOGGER.error("Client is not ready - no calls possible")
+ self._telemetry_init_producer.record_not_ready_usage()
try:
- evaluations = self._evaluate_features_if_ready(matching_key, bucketing_key,
- list(features), attributes)
-
- for feature in features:
- try:
- result = evaluations[feature]
- impression = self._build_impression(matching_key,
- feature,
- result['treatment'],
- result['impression']['label'],
- result['impression']['change_number'],
- bucketing_key,
- start)
-
- bulk_impressions.append(impression)
- treatments[feature] = (result['treatment'], result['configurations'])
-
- except Exception: # pylint: disable=broad-except
- self._logger.error('%s: An exception occured when evaluating '
- 'feature %s returning CONTROL.' % (method_name, feature))
- treatments[feature] = CONTROL, None
- self._logger.debug('Error: ', exc_info=True)
- continue
-
- # Register impressions
+ key, bucketing, features, attributes, evaluation_options = self._validate_treatments_input(key, features, attributes, method, evaluation_options)
+ except _InvalidInputError:
+ return input_validator.generate_control_treatments(features, self._fallback_treatment_calculator)
+
+ results = {n: self._get_fallback_eval_results(self._NON_READY_EVAL_RESULT, n) for n in features}
+ if self.ready:
try:
- if bulk_impressions:
- self._record_stats(bulk_impressions, start, self._METRIC_GET_TREATMENTS)
- for impression in bulk_impressions:
- self._send_impression_to_listener(impression, attributes)
- except Exception: # pylint: disable=broad-except
- self._logger.error('%s: An exception when trying to store '
- 'impressions.' % method_name)
- self._logger.debug('Error: ', exc_info=True)
-
- return treatments
- except Exception: # pylint: disable=broad-except
- self._logger.error('Error getting treatment for features')
- self._logger.debug('Error: ', exc_info=True)
- return input_validator.generate_control_treatments(list(features), method_name)
+ ctx = self._context_factory.context_for(key, features)
+ input_validator.validate_feature_flag_names({feature: ctx.flags.get(feature) for feature in features}, 'get_' + method.value)
+ results = self._evaluator.eval_many_with_context(key, bucketing, features, attributes, ctx)
+ except RuntimeError as e:
+ _LOGGER.error('Error getting treatment for feature flag')
+ _LOGGER.debug('Error: ', exc_info=True)
+ self._telemetry_evaluation_producer.record_exception(method)
+ results = {n: self._get_fallback_eval_results(self._FAILED_EVAL_RESULT, n) for n in features}
+
+ properties = self._get_properties(evaluation_options)
+ imp_decorated_attrs = [
+ (i, attributes) for i in self._build_impressions(key, bucketing, results, properties)
+ if i.Impression.label == None or (i.Impression.label != None and i.Impression.label.find(Label.SPLIT_NOT_FOUND)) == -1
+ ]
+ self._record_stats(imp_decorated_attrs, start, method)
+
+ return {
+ feature: (results[feature]['treatment'], results[feature]['configurations'])
+ for feature in results
+ }
+
+ def _record_stats(self, impressions_decorated, start, operation):
+ """
+ Record impressions.
+
+ :param impressions_decorated: Generated impressions
+ :type impressions_decorated: list[tuple[splitio.models.impression.ImpressionDecorated, dict]]
+
+ :param start: timestamp when get_treatment or get_treatments was called
+ :type start: int
+
+ :param operation: operation performed.
+ :type operation: str
+ """
+ end = get_current_epoch_time_ms()
+ self._recorder.record_treatment_stats(impressions_decorated, get_latency_bucket_index(end - start),
+ operation, 'get_' + operation.value)
+
+ def track(self, key, traffic_type, event_type, value=None, properties=None):
+ """
+ Track an event.
- def _evaluate_features_if_ready(self, matching_key, bucketing_key, features, attributes=None):
+ :param key: user key associated to the event
+ :type key: str
+ :param traffic_type: traffic type name
+ :type traffic_type: str
+ :param event_type: event type name
+ :type event_type: str
+ :param value: (Optional) value associated to the event
+ :type value: Number
+ :param properties: (Optional) properties associated to the event
+ :type properties: dict
+
+ :return: Whether the event was created or not.
+ :rtype: bool
+ """
if not self.ready:
- return {
- feature: {
- 'treatment': CONTROL,
- 'configurations': None,
- 'impression': {'label': Label.NOT_READY, 'change_number': None}
- }
- for feature in features
- }
-
- return self._evaluator.evaluate_features(
- features,
- matching_key,
- bucketing_key,
- attributes
+ _LOGGER.warning("track: the SDK is not ready, results may be incorrect. Make sure to wait for SDK readiness before using this method")
+ self._telemetry_init_producer.record_not_ready_usage()
+
+ start = get_current_epoch_time_ms()
+ should_validate_existance = self.ready and self._factory._sdk_key != 'localhost' # pylint: disable=protected-access
+ traffic_type = input_validator.validate_traffic_type(
+ traffic_type,
+ should_validate_existance,
+ self._factory._get_storage('splits'), # pylint: disable=protected-access
)
+ is_valid, event, size = self._validate_track(key, traffic_type, event_type, value, properties)
+ if not is_valid:
+ return False
+
+ try:
+ return_flag = self._recorder.record_track_stats([EventWrapper(
+ event=event,
+ size=size,
+ )], get_latency_bucket_index(get_current_epoch_time_ms() - start))
+ return return_flag
+
+ except Exception: # pylint: disable=broad-except
+ self._telemetry_evaluation_producer.record_exception(MethodExceptionsAndLatencies.TRACK)
+ _LOGGER.error('Error processing track event')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return False
+
+
+class ClientAsync(ClientBase): # pylint: disable=too-many-instance-attributes
+ """Entry point for the split sdk."""
- def get_treatment_with_config(self, key, feature, attributes=None):
+ def __init__(self, factory, recorder, events_manager, labels_enabled=True, fallback_treatment_calculator=None):
"""
- Get the treatment and config for a feature and key, with optional dictionary of attributes.
+ Construct a Client instance.
+
+ :param factory: Split factory (client & manager container)
+ :type factory: splitio.client.factory.SplitFactory
+
+ :param labels_enabled: Whether to store labels on impressions
+ :type labels_enabled: bool
+
+ :param recorder: recorder instance
+ :type recorder: splitio.recorder.StatsRecorder
+
+ :rtype: Client
+ """
+ ClientBase.__init__(self, factory, recorder, events_manager, labels_enabled, fallback_treatment_calculator)
+ self._context_factory = AsyncEvaluationDataFactory(factory._get_storage('splits'), factory._get_storage('segments'), factory._get_storage('rule_based_segments'))
+
+ async def destroy(self):
+ """
+ Destroy the underlying factory.
+
+ Only applicable when using in-memory operation mode.
+ """
+ await self._factory.destroy()
+
+ async def on(self, sdk_event, callback_handle):
+ if not self._validate_sdk_event_info(sdk_event, callback_handle):
+ return
+
+ await self._events_manager.register(sdk_event, callback_handle)
+
+ async def get_treatment(self, key, feature_flag_name, attributes=None, evaluation_options=None):
+ """
+ Get the treatment for a feature and key, with an optional dictionary of attributes, for async calls
This method never raises an exception. If there's a problem, the appropriate log message
will be generated and the method will return the CONTROL treatment.
@@ -260,15 +795,23 @@ def get_treatment_with_config(self, key, feature, attributes=None):
:type feature: str
:param attributes: An optional dictionary of attributes
:type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
:return: The treatment for the key and feature
- :rtype: tuple(str, str)
+ :rtype: str
"""
- return self._make_evaluation(key, feature, attributes, 'get_treatment_with_config',
- self._METRIC_GET_TREATMENT_WITH_CONFIG)
+ try:
+ treatment, _ = await self._get_treatment(MethodExceptionsAndLatencies.TREATMENT, key, feature_flag_name, attributes, evaluation_options)
+ return treatment
- def get_treatment(self, key, feature, attributes=None):
+ except:
+ _LOGGER.error('get_treatment failed')
+ treatment, _ = self._get_fallback_treatment_with_config(feature_flag_name)
+ return treatment
+
+ async def get_treatment_with_config(self, key, feature_flag_name, attributes=None, evaluation_options=None):
"""
- Get the treatment for a feature and key, with an optional dictionary of attributes.
+ Get the treatment for a feature and key, with an optional dictionary of attributes, for async calls
This method never raises an exception. If there's a problem, the appropriate log message
will be generated and the method will return the CONTROL treatment.
@@ -279,78 +822,292 @@ def get_treatment(self, key, feature, attributes=None):
:type feature: str
:param attributes: An optional dictionary of attributes
:type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
:return: The treatment for the key and feature
:rtype: str
"""
- treatment, _ = self._make_evaluation(key, feature, attributes, 'get_treatment',
- self._METRIC_GET_TREATMENT)
- return treatment
+ try:
+ return await self._get_treatment(MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG, key, feature_flag_name, attributes, evaluation_options)
+
+ except Exception:
+ _LOGGER.error('get_treatment_with_config failed')
+ return self._get_fallback_treatment_with_config(feature_flag_name)
+
+ async def _get_treatment(self, method, key, feature, attributes=None, evaluation_options=None):
+ """
+ Validate key, feature flag name and object, and get the treatment and config with an optional dictionary of attributes, for async calls
- def get_treatments_with_config(self, key, features, attributes=None):
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param feature_flag_name: The name of the feature flag for which to get the treatment
+ :type feature_flag_name: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param method: The method calling this function
+ :type method: splitio.models.telemetry.MethodExceptionsAndLatencies
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: The treatment and config for the key and feature flag
+ :rtype: dict
"""
- Evaluate multiple features and return a dict with feature -> (treatment, config).
+ if not self._client_is_usable(): # not destroyed & not waiting for a fork
+ return self._get_fallback_treatment_with_config(feature)
+
+ start = get_current_epoch_time_ms()
+ if not self.ready:
+ _LOGGER.error("Client is not ready - no calls possible")
+ await self._telemetry_init_producer.record_not_ready_usage()
- Get the treatments for a list of features considering a key, with an optional dictionary of
+ try:
+ key, bucketing, feature, attributes, evaluation_options = self._validate_treatment_input(key, feature, attributes, method, evaluation_options)
+ except _InvalidInputError:
+ return self._get_fallback_treatment_with_config(feature)
+
+ result = self._get_fallback_eval_results(self._NON_READY_EVAL_RESULT, feature)
+ if self.ready:
+ try:
+ ctx = await self._context_factory.context_for(key, [feature])
+ input_validator.validate_feature_flag_names({feature: ctx.flags.get(feature)}, 'get_' + method.value)
+ result = self._evaluator.eval_with_context(key, bucketing, feature, attributes, ctx)
+ except Exception as e: # toto narrow this
+ _LOGGER.error('Error getting treatment for feature flag')
+ _LOGGER.debug('Error: ', exc_info=True)
+ await self._telemetry_evaluation_producer.record_exception(method)
+ result = self._get_fallback_eval_results(self._FAILED_EVAL_RESULT, feature)
+
+ properties = self._get_properties(evaluation_options)
+ if self._check_impression_label(result):
+ impression_decorated = self._build_impression(key, bucketing, feature, result, properties)
+ await self._record_stats([(impression_decorated, attributes)], start, method)
+ return result['treatment'], result['configurations']
+
+ async def get_treatments(self, key, feature_flag_names, attributes=None, evaluation_options=None):
+ """
+ Evaluate multiple feature flags and return a dictionary with all the feature flag/treatments, for async calls
+
+ Get the treatments for a list of feature flags considering a key, with an optional dictionary of
attributes. This method never raises an exception. If there's a problem, the appropriate
log message will be generated and the method will return the CONTROL treatment.
:param key: The key for which to get the treatment
:type key: str
- :param features: Array of the names of the features for which to get the treatment
+ :param features: Array of the names of the feature flags for which to get the treatment
:type feature: list
:param attributes: An optional dictionary of attributes
:type attributes: dict
- :return: Dictionary with the result of all the features provided
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
:rtype: dict
"""
- return self._make_evaluations(key, features, attributes, 'get_treatments_with_config',
- self._METRIC_GET_TREATMENTS_WITH_CONFIG)
+ try:
+ with_config = await self._get_treatments(key, feature_flag_names, MethodExceptionsAndLatencies.TREATMENTS, attributes, evaluation_options)
+ return {feature_flag: result[0] for (feature_flag, result) in with_config.items()}
- def get_treatments(self, key, features, attributes=None):
+ except Exception:
+ return {feature: self._get_fallback_treatment_with_config(feature)[0] for feature in feature_flag_names}
+
+ async def get_treatments_with_config(self, key, feature_flag_names, attributes=None, evaluation_options=None):
"""
- Evaluate multiple features and return a dictionary with all the feature/treatments.
+ Evaluate multiple feature flags and return a dict with feature flag -> (treatment, config), for async calls
- Get the treatments for a list of features considering a key, with an optional dictionary of
+ Get the treatments for a list of feature flags considering a key, with an optional dictionary of
attributes. This method never raises an exception. If there's a problem, the appropriate
log message will be generated and the method will return the CONTROL treatment.
:param key: The key for which to get the treatment
:type key: str
- :param features: Array of the names of the features for which to get the treatment
+ :param features: Array of the names of the feature flags for which to get the treatment
:type feature: list
:param attributes: An optional dictionary of attributes
:type attributes: dict
- :return: Dictionary with the result of all the features provided
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
:rtype: dict
"""
- with_config = self._make_evaluations(key, features, attributes, 'get_treatments',
- self._METRIC_GET_TREATMENTS)
- return {feature: result[0] for (feature, result) in six.iteritems(with_config)}
-
- def _build_impression( # pylint: disable=too-many-arguments
- self,
- matching_key,
- feature_name,
- treatment,
- label,
- change_number,
- bucketing_key,
- imp_time
- ):
- """Build an impression."""
- if not self._labels_enabled:
- label = None
-
- return Impression(
- matching_key=matching_key, feature_name=feature_name,
- treatment=treatment, label=label, change_number=change_number,
- bucketing_key=bucketing_key, time=imp_time
- )
+ try:
+ return await self._get_treatments(key, feature_flag_names, MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG, attributes, evaluation_options)
+
+ except Exception:
+ return {feature: (self._get_fallback_treatment_with_config(feature)) for feature in feature_flag_names}
+
+ async def get_treatments_by_flag_set(self, key, flag_set, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag set.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_set: flag set
+ :type flag_sets: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return await self._get_treatments_by_flag_sets( key, [flag_set], MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET, attributes, evaluation_options)
+
+ async def get_treatments_by_flag_sets(self, key, flag_sets, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag sets.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_sets: list of flag sets
+ :type flag_sets: list
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return await self._get_treatments_by_flag_sets( key, flag_sets, MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS, attributes, evaluation_options)
+
+ async def get_treatments_with_config_by_flag_set(self, key, flag_set, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag set.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_set: flag set
+ :type flag_sets: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return await self._get_treatments_by_flag_sets( key, [flag_set], MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET, attributes, evaluation_options)
+
+ async def get_treatments_with_config_by_flag_sets(self, key, flag_sets, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag set.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_set: flag set
+ :type flag_sets: str
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ return await self._get_treatments_by_flag_sets( key, flag_sets, MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS, attributes, evaluation_options)
+
+ async def _get_treatments_by_flag_sets(self, key, flag_sets, method, attributes=None, evaluation_options=None):
+ """
+ Get treatments for feature flags that contain given flag sets.
+ This method never raises an exception. If there's a problem, the appropriate log message
+ will be generated and the method will return the CONTROL treatment.
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param flag_sets: list of flag sets
+ :type flag_sets: list
+ :param method: Treatment by flag set method flavor
+ :type method: splitio.models.telemetry.MethodExceptionsAndLatencies
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: Dictionary with the result of all the feature flags provided
+ :rtype: dict
+ """
+ feature_flags_names = await self._get_feature_flag_names_by_flag_sets(flag_sets, 'get_' + method.value)
+ if feature_flags_names == []:
+ _LOGGER.warning("%s: No valid Flag set or no feature flags found for evaluating treatments", 'get_' + method.value)
+ return {}
+
+ if 'config' in method.value:
+ return await self._get_treatments(key, feature_flags_names, method, attributes, evaluation_options)
+
+ with_config = await self._get_treatments(key, feature_flags_names, method, attributes, evaluation_options)
+ return {feature_flag: result[0] for (feature_flag, result) in with_config.items()}
+
+ async def _get_feature_flag_names_by_flag_sets(self, flag_sets, method_name):
+ """
+ Sanitize given flag sets and return list of feature flag names associated with them
+ :param flag_sets: list of flag sets
+ :type flag_sets: list
+ :return: list of feature flag names
+ :rtype: list
+ """
+ sanitized_flag_sets = input_validator.validate_flag_sets(flag_sets, method_name)
+ feature_flags_by_set = await self._feature_flag_storage.get_feature_flags_by_sets(sanitized_flag_sets)
+ if feature_flags_by_set is None:
+ _LOGGER.warning("Fetching feature flags for flag set %s encountered an error, skipping this flag set." % (flag_sets))
+ return []
+
+ return feature_flags_by_set
+
+ async def _get_treatments(self, key, features, method, attributes=None, evaluation_options=None):
+ """
+ Validate key, feature flag names and objects, and get the treatments and configs with an optional dictionary of attributes, for async calls
+
+ :param key: The key for which to get the treatment
+ :type key: str
+ :param feature_flag_names: Array of feature flag names for which to get the treatments
+ :type feature_flag_names: list(str)
+ :param method: The method calling this function
+ :type method: splitio.models.telemetry.MethodExceptionsAndLatencies
+ :param attributes: An optional dictionary of attributes
+ :type attributes: dict
+ :param evaluation_options: An optional dictionary of options
+ :type evaluation_options: dict
+ :return: The treatments and configs for the key and feature flags
+ :rtype: dict
+ """
+ start = get_current_epoch_time_ms()
+ if not self._client_is_usable():
+ return input_validator.generate_control_treatments(features, self._fallback_treatment_calculator)
+
+ if not self.ready:
+ _LOGGER.error("Client is not ready - no calls possible")
+ await self._telemetry_init_producer.record_not_ready_usage()
- def _record_stats(self, impressions, start, operation):
+ try:
+ key, bucketing, features, attributes, evaluation_options = self._validate_treatments_input(key, features, attributes, method, evaluation_options)
+ except _InvalidInputError:
+ return input_validator.generate_control_treatments(features, self._fallback_treatment_calculator)
+
+ results = {n: self._get_fallback_eval_results(self._NON_READY_EVAL_RESULT, n) for n in features}
+ if self.ready:
+ try:
+ ctx = await self._context_factory.context_for(key, features)
+ input_validator.validate_feature_flag_names({feature: ctx.flags.get(feature) for feature in features}, 'get_' + method.value)
+ results = self._evaluator.eval_many_with_context(key, bucketing, features, attributes, ctx)
+ except Exception as e: # toto narrow this
+ _LOGGER.error('Error getting treatment for feature flag')
+ _LOGGER.debug('Error: ', exc_info=True)
+ await self._telemetry_evaluation_producer.record_exception(method)
+ results = {n: self._get_fallback_eval_results(self._FAILED_EVAL_RESULT, n) for n in features}
+
+ properties = self._get_properties(evaluation_options)
+ imp_decorated_attrs = [
+ (i, attributes) for i in self._build_impressions(key, bucketing, results, properties)
+ if i.Impression.label == None or (i.Impression.label != None and i.Impression.label.find(Label.SPLIT_NOT_FOUND)) == -1
+ ]
+ await self._record_stats(imp_decorated_attrs, start, method)
+
+ return {
+ feature: (res['treatment'], res['configurations'])
+ for feature, res in results.items()
+ }
+
+ async def _record_stats(self, impressions_decorated, start, operation):
"""
- Record impressions and metrics.
+ Record impressions for async calls
- :param impressions: Generated impressions
- :type impressions: list||Impression
+ :param impressions_decorated: Generated impressions decorated
+ :type impressions_decorated: list[tuple[splitio.models.impression.Impression, dict]]
:param start: timestamp when get_treatment or get_treatments was called
:type start: int
@@ -358,17 +1115,13 @@ def _record_stats(self, impressions, start, operation):
:param operation: operation performed.
:type operation: str
"""
- try:
- end = int(round(time.time() * 1000))
- self._impressions_storage.put(impressions)
- self._telemetry_storage.inc_latency(operation, get_latency_bucket_index(end - start))
- except Exception: # pylint: disable=broad-except
- self._logger.error('Error recording impressions and metrics')
- self._logger.debug('Error: ', exc_info=True)
+ end = get_current_epoch_time_ms()
+ await self._recorder.record_treatment_stats(impressions_decorated, get_latency_bucket_index(end - start),
+ operation, 'get_' + operation.value)
- def track(self, key, traffic_type, event_type, value=None, properties=None):
+ async def track(self, key, traffic_type, event_type, value=None, properties=None):
"""
- Track an event.
+ Track an event for async calls
:param key: user key associated to the event
:type key: str
@@ -384,35 +1137,33 @@ def track(self, key, traffic_type, event_type, value=None, properties=None):
:return: Whether the event was created or not.
:rtype: bool
"""
- if self.destroyed:
- self._logger.error("Client has already been destroyed - no calls possible")
- return False
+ if not self.ready:
+ _LOGGER.warning("track: the SDK is not ready, results may be incorrect. Make sure to wait for SDK readiness before using this method")
+ await self._telemetry_init_producer.record_not_ready_usage()
- key = input_validator.validate_track_key(key)
- event_type = input_validator.validate_event_type(event_type)
- should_validate_existance = self.ready and self._factory._apikey != 'localhost' # pylint: disable=protected-access
- traffic_type = input_validator.validate_traffic_type(
+ start = get_current_epoch_time_ms()
+ should_validate_existance = self.ready and self._factory._sdk_key != 'localhost' # pylint: disable=protected-access
+ traffic_type = await input_validator.validate_traffic_type_async(
traffic_type,
should_validate_existance,
self._factory._get_storage('splits'), # pylint: disable=protected-access
)
+ is_valid, event, size = self._validate_track(key, traffic_type, event_type, value, properties)
+ if not is_valid:
+ return False
- value = input_validator.validate_value(value)
- valid, properties, size = input_validator.valid_properties(properties)
+ try:
+ return_flag = await self._recorder.record_track_stats([EventWrapper(
+ event=event,
+ size=size,
+ )], get_latency_bucket_index(get_current_epoch_time_ms() - start))
+ return return_flag
- if key is None or event_type is None or traffic_type is None or value is False \
- or valid is False:
+ except Exception: # pylint: disable=broad-except
+ await self._telemetry_evaluation_producer.record_exception(MethodExceptionsAndLatencies.TRACK)
+ _LOGGER.error('Error processing track event')
+ _LOGGER.debug('Error: ', exc_info=True)
return False
- event = Event(
- key=key,
- traffic_type_name=traffic_type,
- event_type_id=event_type,
- value=value,
- timestamp=int(time.time()*1000),
- properties=properties,
- )
- return self._events_storage.put([EventWrapper(
- event=event,
- size=size,
- )])
+class _InvalidInputError(Exception):
+ pass
diff --git a/splitio/client/config.py b/splitio/client/config.py
index 30ea411e..25b1bc31 100644
--- a/splitio/client/config.py
+++ b/splitio/client/config.py
@@ -1,15 +1,29 @@
"""Default settings for the Split.IO SDK Python client."""
-from __future__ import absolute_import, division, print_function, unicode_literals
import os.path
+import logging
+from enum import Enum
+
+from splitio.engine.impressions import ImpressionsMode
+from splitio.client.input_validator import validate_flag_sets, validate_fallback_treatment, validate_regex_name
+from splitio.models.fallback_config import FallbackTreatmentsConfiguration
+
+_LOGGER = logging.getLogger(__name__)
+DEFAULT_DATA_SAMPLING = 1
+
+class AuthenticateScheme(Enum):
+ """Authentication Scheme."""
+ NONE = 'NONE'
+ KERBEROS_SPNEGO = 'KERBEROS_SPNEGO'
+ KERBEROS_PROXY = 'KERBEROS_PROXY'
DEFAULT_CONFIG = {
+ 'operationMode': 'standalone',
'connectionTimeout': 1500,
- 'splitSdkMachineName': None,
- 'splitSdkMachineIp': None,
- 'featuresRefreshRate': 5,
- 'segmentsRefreshRate': 60,
- 'metricsRefreshRate': 60,
- 'impressionsRefreshRate': 10,
+ 'streamingEnabled': True,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'metricsRefreshRate': 3600,
+ 'impressionsRefreshRate': 5 * 60,
'impressionsBulkSize': 5000,
'impressionsQueueSize': 10000,
'eventsPushRate': 10,
@@ -17,12 +31,14 @@
'eventsQueueSize': 10000,
'labelsEnabled': True,
'IPAddressesEnabled': True,
+ 'impressionsMode': 'OPTIMIZED',
'impressionListener': None,
- 'redisLocalCacheEnabled': False,
+ 'redisLocalCacheEnabled': True,
'redisLocalCacheTTL': 5,
'redisHost': 'localhost',
'redisPort': 6379,
'redisDb': 0,
+ 'redisUsername': None,
'redisPassword': None,
'redisSocketTimeout': None,
'redisSocketConnectTimeout': None,
@@ -32,9 +48,8 @@
'redisUnixSocketPath': None,
'redisEncoding': 'utf-8',
'redisEncodingErrors': 'strict',
- 'redisCharset': None,
'redisErrors': None,
- 'redisDecodeResponses': False,
+ 'redisDecodeResponses': True,
'redisRetryOnTimeout': False,
'redisSsl': False,
'redisSslKeyfile': None,
@@ -44,5 +59,149 @@
'redisMaxConnections': None,
'machineName': None,
'machineIp': None,
- 'splitFile': os.path.join(os.path.expanduser('~'), '.split')
+ 'splitFile': os.path.join(os.path.expanduser('~'), '.split'),
+ 'segmentDirectory': os.path.expanduser('~'),
+ 'localhostRefreshEnabled': False,
+ 'preforkedInitialization': False,
+ 'dataSampling': DEFAULT_DATA_SAMPLING,
+ 'storageWrapper': None,
+ 'storagePrefix': None,
+ 'storageType': None,
+ 'flagSetsFilter': None,
+ 'httpAuthenticateScheme': AuthenticateScheme.NONE,
+ 'kerberosPrincipalUser': None,
+ 'kerberosPrincipalPassword': None,
+ 'fallbackTreatments': FallbackTreatmentsConfiguration(None)
}
+
+def _parse_operation_mode(sdk_key, config):
+ """
+ Process incoming config to determine operation mode and storage type
+
+ :param config: user supplied config
+ :type config: dict
+
+ :returns: operation mode and storage type
+ :rtype: Tuple (str, str)
+ """
+ if sdk_key == 'localhost':
+ _LOGGER.debug('Using Localhost operation mode')
+ return 'localhost', 'localhost'
+
+ if 'redisHost' in config or 'redisSentinels' in config:
+ _LOGGER.debug('Using Redis storage operation mode')
+ return 'consumer', 'redis'
+
+ if config.get('storageType') is not None:
+ if config.get('storageType').lower() == 'pluggable':
+ _LOGGER.debug('Using Pluggable storage operation mode')
+ return 'consumer', 'pluggable'
+
+ _LOGGER.warning('You passed an invalid storageType, acceptable value is '
+ '`pluggable`. Defaulting storage to In-Memory mode.')
+
+ _LOGGER.debug('Using In-Memory operation mode')
+ return 'standalone', 'memory'
+
+
+def _sanitize_impressions_mode(storage_type, mode, refresh_rate=None):
+ """
+ Check supplied impressions mode and adjust refresh rate.
+
+ :param config: default + supplied config
+ :type config: dict
+
+ :returns: config with sanitized impressions mode & refresh rate
+ :rtype: config
+ """
+ if not isinstance(mode, ImpressionsMode):
+ try:
+ mode = ImpressionsMode(mode.upper())
+ except (ValueError, AttributeError):
+ mode = ImpressionsMode.OPTIMIZED
+ _LOGGER.warning('You passed an invalid impressionsMode, impressionsMode should be ' \
+ 'one of the following values: `debug`, `none` or `optimized`. '
+ ' Defaulting to `optimized` mode.')
+
+ if mode == ImpressionsMode.DEBUG:
+ refresh_rate = max(1, refresh_rate) if refresh_rate is not None else 60
+ else:
+ refresh_rate = max(60, refresh_rate) if refresh_rate is not None else 5 * 60
+
+ return mode, refresh_rate
+
+def sanitize(sdk_key, config):
+ """
+ Look for inconsistencies or ill-formed configs and tune it accordingly.
+
+ :param sdk_key: sdk key
+ :type sdk_key: str
+
+ :param config: DEFAULT + user supplied config
+ :type config: dict
+
+ :returns: sanitized config
+ :rtype: dict
+ """
+ config['operationMode'], config['storageType'] = _parse_operation_mode(sdk_key, config)
+ processed = DEFAULT_CONFIG.copy()
+ processed.update(config)
+ imp_mode, imp_rate = _sanitize_impressions_mode(config['storageType'], config.get('impressionsMode'),
+ config.get('impressionsRefreshRate'))
+ processed['impressionsMode'] = imp_mode
+ processed['impressionsRefreshRate'] = imp_rate
+ if processed['metricsRefreshRate'] < 60:
+ _LOGGER.warning('metricRefreshRate parameter minimum value is 60 seconds, defaulting to 3600 seconds.')
+ processed['metricsRefreshRate'] = 3600
+
+ if config['operationMode'] == 'consumer' and config.get('flagSetsFilter') is not None:
+ processed['flagSetsFilter'] = None
+ _LOGGER.warning('config: FlagSets filter is not applicable for Consumer modes where the SDK does keep rollout data in sync. FlagSet filter was discarded.')
+ else:
+ processed['flagSetsFilter'] = sorted(validate_flag_sets(processed['flagSetsFilter'], 'SDK Config')) if processed['flagSetsFilter'] is not None else None
+
+ if config.get('httpAuthenticateScheme') is not None:
+ try:
+ authenticate_scheme = AuthenticateScheme(config['httpAuthenticateScheme'].upper())
+ except (ValueError, AttributeError):
+ authenticate_scheme = AuthenticateScheme.NONE
+ _LOGGER.warning('You passed an invalid HttpAuthenticationScheme, HttpAuthenticationScheme should be ' \
+ 'one of the following values: `none`, `kerberos_proxy` or `kerberos_spnego`. '
+ ' Defaulting to `none` mode.')
+ processed["httpAuthenticateScheme"] = authenticate_scheme
+
+ processed = _sanitize_fallback_config(config, processed)
+
+ if config.get("redisErrors") is not None:
+ _LOGGER.warning('Parameter `redisErrors` is deprecated as it is no longer supported in redis lib.' \
+ ' Will ignore this value.')
+
+ processed["redisErrors"] = None
+ return processed
+
+def _sanitize_fallback_config(config, processed):
+ if config.get('fallbackTreatments') is None:
+ return processed
+
+ if not isinstance(config['fallbackTreatments'], FallbackTreatmentsConfiguration):
+ _LOGGER.warning('Config: fallbackTreatments parameter should be of `FallbackTreatmentsConfiguration` class.')
+ processed['fallbackTreatments'] = None
+ return processed
+
+ sanitized_global_fallback_treatment = config['fallbackTreatments'].global_fallback_treatment
+ if config['fallbackTreatments'].global_fallback_treatment is not None and not validate_fallback_treatment(config['fallbackTreatments'].global_fallback_treatment):
+ _LOGGER.warning('Config: global fallbacktreatment parameter is discarded.')
+ sanitized_global_fallback_treatment = None
+
+ sanitized_flag_fallback_treatments = {}
+ if config['fallbackTreatments'].by_flag_fallback_treatment is not None:
+ for feature_name in config['fallbackTreatments'].by_flag_fallback_treatment.keys():
+ if not validate_regex_name(feature_name) or not validate_fallback_treatment(config['fallbackTreatments'].by_flag_fallback_treatment[feature_name]):
+ _LOGGER.warning('Config: fallback treatment parameter for feature flag %s is discarded.', feature_name)
+ continue
+
+ sanitized_flag_fallback_treatments[feature_name] = config['fallbackTreatments'].by_flag_fallback_treatment[feature_name]
+
+ processed['fallbackTreatments'] = FallbackTreatmentsConfiguration(sanitized_global_fallback_treatment, sanitized_flag_fallback_treatments)
+
+ return processed
\ No newline at end of file
diff --git a/splitio/client/factory.py b/splitio/client/factory.py
index 01a0fc0d..10979b85 100644
--- a/splitio/client/factory.py
+++ b/splitio/client/factory.py
@@ -1,54 +1,97 @@
"""A module for Split.io Factories."""
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-
import logging
import threading
from collections import Counter
-
from enum import Enum
-import six
+import queue
-from splitio.client.client import Client
+from splitio.optional.loaders import asyncio
+from splitio.client.client import Client, ClientAsync
from splitio.client import input_validator
-from splitio.client.manager import SplitManager
-from splitio.client.config import DEFAULT_CONFIG
+from splitio.client.config import sanitize as sanitize_config, DEFAULT_DATA_SAMPLING, AuthenticateScheme
+from splitio.client.manager import SplitManager, SplitManagerAsync
from splitio.client import util
-from splitio.client.listener import ImpressionListenerWrapper
+from splitio.client.listener import ImpressionListenerWrapper, ImpressionListenerWrapperAsync
+from splitio.engine.impressions.impressions import Manager as ImpressionsManager
+from splitio.engine.impressions import set_classes, set_classes_async
+from splitio.engine.impressions.strategies import StrategyDebugMode, StrategyNoneMode
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageConsumer, \
+ TelemetryStorageProducerAsync, TelemetryStorageConsumerAsync
+from splitio.engine.impressions.manager import Counter as ImpressionsCounter
+from splitio.engine.impressions.unique_keys_tracker import UniqueKeysTracker, UniqueKeysTrackerAsync
+from splitio.events.events_manager import EventsManager, EventsManagerAsync
+from splitio.events.events_manager_config import EventsManagerConfig
+from splitio.events.events_task import EventsTask, EventsTaskAsync
+from splitio.events.events_delivery import EventsDelivery
+from splitio.models.fallback_config import FallbackTreatmentCalculator
+from splitio.models.notification import SdkInternalEventNotification
+from splitio.models.events import SdkInternalEvent
# Storage
from splitio.storage.inmemmory import InMemorySplitStorage, InMemorySegmentStorage, \
- InMemoryImpressionStorage, InMemoryEventStorage, InMemoryTelemetryStorage
+ InMemoryImpressionStorage, InMemoryEventStorage, InMemoryTelemetryStorage, LocalhostTelemetryStorage, \
+ InMemorySplitStorageAsync, InMemorySegmentStorageAsync, InMemoryImpressionStorageAsync, \
+ InMemoryEventStorageAsync, InMemoryTelemetryStorageAsync, LocalhostTelemetryStorageAsync, \
+ InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync
from splitio.storage.adapters import redis
from splitio.storage.redis import RedisSplitStorage, RedisSegmentStorage, RedisImpressionsStorage, \
- RedisEventsStorage, RedisTelemetryStorage
-from splitio.storage.adapters.uwsgi_cache import get_uwsgi
-from splitio.storage.uwsgi import UWSGIEventStorage, UWSGIImpressionStorage, UWSGISegmentStorage, \
- UWSGISplitStorage, UWSGITelemetryStorage
+ RedisEventsStorage, RedisTelemetryStorage, RedisSplitStorageAsync, RedisEventsStorageAsync,\
+ RedisSegmentStorageAsync, RedisImpressionsStorageAsync, RedisTelemetryStorageAsync, \
+ RedisRuleBasedSegmentsStorage, RedisRuleBasedSegmentsStorageAsync
+from splitio.storage.pluggable import PluggableEventsStorage, PluggableImpressionsStorage, PluggableSegmentStorage, \
+ PluggableSplitStorage, PluggableTelemetryStorage, PluggableTelemetryStorageAsync, PluggableEventsStorageAsync, \
+ PluggableImpressionsStorageAsync, PluggableSegmentStorageAsync, PluggableSplitStorageAsync, \
+ PluggableRuleBasedSegmentsStorage, PluggableRuleBasedSegmentsStorageAsync
# APIs
-from splitio.api.client import HttpClient
-from splitio.api.splits import SplitsAPI
-from splitio.api.segments import SegmentsAPI
-from splitio.api.impressions import ImpressionsAPI
-from splitio.api.events import EventsAPI
-from splitio.api.telemetry import TelemetryAPI
+from splitio.api.client import HttpClient, HttpClientAsync, HttpClientKerberos
+from splitio.api.splits import SplitsAPI, SplitsAPIAsync
+from splitio.api.segments import SegmentsAPI, SegmentsAPIAsync
+from splitio.api.impressions import ImpressionsAPI, ImpressionsAPIAsync
+from splitio.api.events import EventsAPI, EventsAPIAsync
+from splitio.api.auth import AuthAPI, AuthAPIAsync
+from splitio.api.telemetry import TelemetryAPI, TelemetryAPIAsync
+from splitio.util.time import get_current_epoch_time_ms
# Tasks
-from splitio.tasks.split_sync import SplitSynchronizationTask
-from splitio.tasks.segment_sync import SegmentSynchronizationTask
-from splitio.tasks.impressions_sync import ImpressionsSyncTask
-from splitio.tasks.events_sync import EventsSyncTask
-from splitio.tasks.telemetry_sync import TelemetrySynchronizationTask
+from splitio.tasks.split_sync import SplitSynchronizationTask, SplitSynchronizationTaskAsync
+from splitio.tasks.segment_sync import SegmentSynchronizationTask, SegmentSynchronizationTaskAsync
+from splitio.tasks.impressions_sync import ImpressionsSyncTask, ImpressionsCountSyncTask,\
+ ImpressionsCountSyncTaskAsync, ImpressionsSyncTaskAsync
+from splitio.tasks.events_sync import EventsSyncTask, EventsSyncTaskAsync
+from splitio.tasks.telemetry_sync import TelemetrySyncTask, TelemetrySyncTaskAsync
+
+# Synchronizer
+from splitio.sync.synchronizer import SplitTasks, SplitSynchronizers, Synchronizer, \
+ LocalhostSynchronizer, RedisSynchronizer, PluggableSynchronizer,\
+ SynchronizerAsync, RedisSynchronizerAsync, LocalhostSynchronizerAsync
+from splitio.sync.manager import Manager, RedisManager, ManagerAsync, RedisManagerAsync
+from splitio.sync.split import SplitSynchronizer, LocalSplitSynchronizer, LocalhostMode,\
+ SplitSynchronizerAsync, LocalSplitSynchronizerAsync
+from splitio.sync.segment import SegmentSynchronizer, LocalSegmentSynchronizer, SegmentSynchronizerAsync,\
+ LocalSegmentSynchronizerAsync
+from splitio.sync.impression import ImpressionSynchronizer, ImpressionsCountSynchronizer, \
+ ImpressionsCountSynchronizerAsync, ImpressionSynchronizerAsync
+from splitio.sync.event import EventSynchronizer, EventSynchronizerAsync
+from splitio.sync.telemetry import TelemetrySynchronizer, InMemoryTelemetrySubmitter, \
+ LocalhostTelemetrySubmitter, RedisTelemetrySubmitter, LocalhostTelemetrySubmitterAsync, \
+ InMemoryTelemetrySubmitterAsync, TelemetrySynchronizerAsync, RedisTelemetrySubmitterAsync
+
+
+# Recorder
+from splitio.recorder.recorder import StandardRecorder, PipelinedRecorder, StandardRecorderAsync, PipelinedRecorderAsync
# Localhost stuff
from splitio.client.localhost import LocalhostEventsStorage, LocalhostImpressionsStorage, \
- LocalhostSplitSynchronizationTask, LocalhostTelemetryStorage
+ LocalhostImpressionsStorageAsync, LocalhostEventsStorageAsync
_LOGGER = logging.getLogger(__name__)
_INSTANTIATED_FACTORIES = Counter()
_INSTANTIATED_FACTORIES_LOCK = threading.RLock()
+_MIN_DEFAULT_DATA_SAMPLING_ALLOWED = 0.1 # 10%
+_MAX_RETRY_SYNC_ALL = 3
+_UNIQUE_KEYS_CACHE_SIZE = 30000
class Status(Enum):
@@ -57,6 +100,7 @@ class Status(Enum):
NOT_INITIALIZED = 'NOT_INITIALIZED'
READY = 'READY'
DESTROYED = 'DESTROYED'
+ WAITING_FORK = 'WAITING_FORK'
class TimeoutException(Exception):
@@ -65,18 +109,79 @@ class TimeoutException(Exception):
pass
-class SplitFactory(object): # pylint: disable=too-many-instance-attributes
+class SplitFactoryBase(object): # pylint: disable=too-many-instance-attributes
+ """Split Factory/Container class."""
+
+ def __init__(self, sdk_key, storages):
+ self._sdk_key = sdk_key
+ self._storages = storages
+ self._status = None
+
+ def _get_storage(self, name):
+ """
+ Return a reference to the specified storage.
+
+ :param name: Name of the requested storage.
+ :type name: str
+
+ :return: requested factory.
+ :rtype: object
+ """
+ return self._storages[name]
+
+ @property
+ def ready(self):
+ """
+ Return whether the factory is ready.
+
+ :return: True if the factory is ready. False otherwhise.
+ :rtype: bool
+ """
+ return self._status == Status.READY
+
+ def _update_instantiated_factories(self):
+ self._status = Status.DESTROYED
+ with _INSTANTIATED_FACTORIES_LOCK:
+ _INSTANTIATED_FACTORIES.subtract([self._sdk_key])
+
+ @property
+ def destroyed(self):
+ """
+ Return whether the factory has been destroyed or not.
+
+ :return: True if the factory has been destroyed. False otherwise.
+ :rtype: bool
+ """
+ return self._status == Status.DESTROYED
+
+ def _waiting_fork(self):
+ """
+ Return whether the factory is waiting to be recreated by forking or not.
+
+ :return: True if the factory is waiting to be recreated by forking. False otherwise.
+ :rtype: bool
+ """
+ return self._status == Status.WAITING_FORK
+
+
+class SplitFactory(SplitFactoryBase): # pylint: disable=too-many-instance-attributes
"""Split Factory/Container class."""
def __init__( # pylint: disable=too-many-arguments
self,
- apikey,
+ sdk_key,
storages,
labels_enabled,
- apis=None,
- tasks=None,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ sync_manager=None,
sdk_ready_flag=None,
- impression_listener=None
+ telemetry_producer=None,
+ telemetry_init_producer=None,
+ telemetry_submitter=None,
+ preforked_initialization=False,
+ fallback_treatment_calculator=None
):
"""
Class constructor.
@@ -87,49 +192,65 @@ def __init__( # pylint: disable=too-many-arguments
:type labels_enabled: bool
:param apis: Dictionary of apis client wrappers
:type apis: dict
- :param tasks: Dictionary of sychronization tasks
- :type tasks: dict
+ :param sync_manager: Manager synchronization
+ :type sync_manager: splitio.sync.manager.Manager
:param sdk_ready_flag: Event to set when the sdk is ready.
:type sdk_ready_flag: threading.Event
- :param impression_listener: User custom listener to handle impressions locally.
- :type impression_listener: splitio.client.listener.ImpressionListener
+ :param recorder: StatsRecorder instance
+ :type recorder: StatsRecorder
+ :param preforked_initialization: Whether should be instantiated as preforked or not.
+ :type preforked_initialization: bool
"""
- self._apikey = apikey
- self._logger = logging.getLogger(self.__class__.__name__)
- self._storages = storages
+ SplitFactoryBase.__init__(self, sdk_key, storages)
self._labels_enabled = labels_enabled
- self._apis = apis if apis else {}
- self._tasks = tasks if tasks else {}
- self._sdk_ready_flag = sdk_ready_flag
- self._impression_listener = impression_listener
-
+ self._sync_manager = sync_manager
+ self._recorder = recorder
+ self._preforked_initialization = preforked_initialization
+ self._telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+ self._telemetry_init_producer = telemetry_init_producer
+ self._telemetry_submitter = telemetry_submitter
+ self._ready_time = get_current_epoch_time_ms()
+ _LOGGER.debug("Running in threading mode")
+ self._sdk_internal_ready_flag = sdk_ready_flag
+ self._fallback_treatment_calculator = fallback_treatment_calculator
+ self._internal_events_queue = internal_events_queue
+ self._events_manager = events_manager
+ self._start_status_updater()
+
+ def _start_status_updater(self):
+ """
+ Perform status updater
+ """
+ if self._preforked_initialization:
+ self._status = Status.WAITING_FORK
+ return
# If we have a ready flag, it means we have sync tasks that need to finish
# before the SDK client becomes ready.
- if self._sdk_ready_flag is not None:
+ if self._sdk_internal_ready_flag is not None:
+ self._sdk_ready_flag = threading.Event()
self._status = Status.NOT_INITIALIZED
# add a listener that updates the status to READY once the flag is set.
- ready_updater = threading.Thread(target=self._update_status_when_ready)
- ready_updater.setDaemon(True)
+ ready_updater = threading.Thread(target=self._update_status_when_ready,
+ name='SDKReadyFlagUpdater', daemon=True)
ready_updater.start()
else:
self._status = Status.READY
-
+ self._internal_events_queue.put(SdkInternalEventNotification(SdkInternalEvent.SDK_READY, None))
+
def _update_status_when_ready(self):
"""Wait until the sdk is ready and update the status."""
- self._sdk_ready_flag.wait()
+ self._sdk_internal_ready_flag.wait()
self._status = Status.READY
+ self._sdk_ready_flag.set()
+ self._internal_events_queue.put(SdkInternalEventNotification(SdkInternalEvent.SDK_READY, None))
- def _get_storage(self, name):
- """
- Return a reference to the specified storage.
+ self._telemetry_init_producer.record_ready_time(get_current_epoch_time_ms() - self._ready_time)
+ redundant_factory_count, active_factory_count = _get_active_and_redundant_count()
+ self._telemetry_init_producer.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
- :param name: Name of the requested storage.
- :type name: str
-
- :return: requested factory.
- :rtype: object
- """
- return self._storages[name]
+ config_post_thread = threading.Thread(target=self._telemetry_submitter.synchronize_config(), name="PostConfigData")
+ config_post_thread.setDaemon(True)
+ config_post_thread.start()
def client(self):
"""
@@ -138,7 +259,7 @@ def client(self):
This client is only a set of references to structures hold by the factory.
Creating one a fast operation and safe to be used anywhere.
"""
- return Client(self, self._labels_enabled, self._impression_listener)
+ return Client(self, self._recorder, self._events_manager, self._labels_enabled, self._fallback_treatment_calculator)
def manager(self):
"""
@@ -153,26 +274,173 @@ def block_until_ready(self, timeout=None):
"""
Blocks until the sdk is ready or the timeout specified by the user expires.
+ When ready, the factory's status is updated accordingly.
+
:param timeout: Number of seconds to wait (fractions allowed)
:type timeout: int
"""
- if self._sdk_ready_flag is not None:
+ if self._sdk_internal_ready_flag is not None:
ready = self._sdk_ready_flag.wait(timeout)
if not ready:
+ self._telemetry_init_producer.record_bur_time_out()
raise TimeoutException('SDK Initialization: time of %d exceeded' % timeout)
- @property
- def ready(self):
+ def destroy(self, destroyed_event=None):
"""
- Return whether the factory is ready.
+ Destroy the factory and render clients unusable.
- :return: True if the factory is ready. False otherwhise.
- :rtype: bool
+ Destroy frees up storage taken but split data, flushes impressions & events,
+ and invalidates the clients, making them return control.
+
+ :param destroyed_event: Event to signal when destroy process has finished.
+ :type destroyed_event: threading.Event
"""
- return self._status == Status.READY
+ if self.destroyed:
+ _LOGGER.info('Factory already destroyed.')
+ return
- def destroy(self, destroyed_event=None):
+ try:
+ _LOGGER.info('Factory destroy called, stopping tasks.')
+ self._events_manager.destroy()
+ if self._sync_manager is not None:
+ if destroyed_event is not None:
+
+ def _wait_for_tasks_to_stop():
+ self._sync_manager.stop(True)
+ destroyed_event.set()
+
+ wait_thread = threading.Thread(target=_wait_for_tasks_to_stop, daemon=True)
+ wait_thread.start()
+ else:
+ self._sync_manager.stop(False)
+ elif destroyed_event is not None:
+ destroyed_event.set()
+ finally:
+ self._update_instantiated_factories()
+
+ def resume(self):
+ """
+ Function in charge of starting periodic/realtime synchronization after a fork.
+ """
+ if not self._waiting_fork():
+ _LOGGER.warning('Cannot call resume')
+ return
+ self._sync_manager.recreate()
+ sdk_ready_flag = threading.Event()
+ self._sdk_internal_ready_flag = sdk_ready_flag
+ self._sync_manager._ready_flag = sdk_ready_flag
+ self._get_storage('impressions').clear()
+ self._get_storage('events').clear()
+ initialization_thread = threading.Thread(
+ target=self._sync_manager.start,
+ name="SDKInitializer",
+ daemon=True
+ )
+ initialization_thread.start()
+ self._preforked_initialization = False # reset for status updater
+ self._start_status_updater()
+
+
+class SplitFactoryAsync(SplitFactoryBase): # pylint: disable=too-many-instance-attributes
+ """Split Factory/Container async class."""
+
+ def __init__( # pylint: disable=too-many-arguments
+ self,
+ sdk_key,
+ storages,
+ labels_enabled,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ sync_manager=None,
+ telemetry_producer=None,
+ telemetry_init_producer=None,
+ telemetry_submitter=None,
+ manager_start_task=None,
+ api_client=None,
+ fallback_treatment_calculator=None
+ ):
+ """
+ Class constructor.
+
+ :param storages: Dictionary of storages for all split models.
+ :type storages: dict
+ :param labels_enabled: Whether the impressions should store labels or not.
+ :type labels_enabled: bool
+ :param apis: Dictionary of apis client wrappers
+ :type apis: dict
+ :param sync_manager: Manager synchronization
+ :type sync_manager: splitio.sync.manager.Manager
+ :param sdk_ready_flag: Event to set when the sdk is ready.
+ :type sdk_ready_flag: threading.Event
+ :param recorder: StatsRecorder instance
+ :type recorder: StatsRecorder
+ :param preforked_initialization: Whether should be instantiated as preforked or not.
+ :type preforked_initialization: bool
+ """
+ SplitFactoryBase.__init__(self, sdk_key, storages)
+ self._labels_enabled = labels_enabled
+ self._sync_manager = sync_manager
+ self._recorder = recorder
+ self._telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+ self._telemetry_init_producer = telemetry_init_producer
+ self._telemetry_submitter = telemetry_submitter
+ self._ready_time = get_current_epoch_time_ms()
+ _LOGGER.debug("Running in asyncio mode")
+ self._internal_events_queue = internal_events_queue
+ self._events_manager = events_manager
+ self._manager_start_task = manager_start_task
+ self._status = Status.NOT_INITIALIZED
+ self._sdk_ready_flag = asyncio.Event()
+ self._ready_task = asyncio.get_running_loop().create_task(self._update_status_when_ready_async())
+ self._api_client = api_client
+ self._fallback_treatment_calculator = fallback_treatment_calculator
+
+ async def _update_status_when_ready_async(self):
+ """Wait until the sdk is ready and update the status for async mode."""
+ if self._manager_start_task is not None:
+ await self._manager_start_task
+ self._manager_start_task = None
+ await self._telemetry_init_producer.record_ready_time(get_current_epoch_time_ms() - self._ready_time)
+ redundant_factory_count, active_factory_count = _get_active_and_redundant_count()
+ await self._telemetry_init_producer.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+ try:
+ await self._telemetry_submitter.synchronize_config()
+ except Exception as e:
+ _LOGGER.error("Failed to post Telemetry config")
+ _LOGGER.debug(str(e))
+ self._status = Status.READY
+ self._sdk_ready_flag.set()
+ await self._internal_events_queue.put(SdkInternalEventNotification(SdkInternalEvent.SDK_READY, None))
+
+ def manager(self):
+ """
+ Return a new manager.
+
+ This manager is only a set of references to structures hold by the factory.
+ Creating one a fast operation and safe to be used anywhere.
+ """
+ return SplitManagerAsync(self)
+
+ async def block_until_ready(self, timeout=None):
+ """
+ Blocks until the sdk is ready or the timeout specified by the user expires.
+
+ When ready, the factory's status is updated accordingly.
+
+ :param timeout: Number of seconds to wait (fractions allowed)
+ :type timeout: int
+ """
+ try:
+ await asyncio.wait_for(asyncio.shield(self._sdk_ready_flag.wait()), timeout)
+ except asyncio.TimeoutError as e:
+ _LOGGER.error("Exception initializing SDK")
+ _LOGGER.debug(str(e))
+ await self._telemetry_init_producer.record_bur_time_out()
+ raise TimeoutException('SDK Initialization: time of %d exceeded' % timeout)
+
+ async def destroy(self, destroyed_event=None):
"""
Destroy the factory and render clients unusable.
@@ -183,41 +451,41 @@ def destroy(self, destroyed_event=None):
:type destroyed_event: threading.Event
"""
if self.destroyed:
- self._logger.info('Factory already destroyed.')
+ _LOGGER.info('Factory already destroyed.')
return
try:
- if destroyed_event is not None:
- stop_events = {name: threading.Event() for name in self._tasks.keys()}
- for name, task in six.iteritems(self._tasks):
- task.stop(stop_events[name])
-
- def _wait_for_tasks_to_stop():
- for event in stop_events.values():
- event.wait()
- destroyed_event.set()
-
- wait_thread = threading.Thread(target=_wait_for_tasks_to_stop)
- wait_thread.setDaemon(True)
- wait_thread.start()
- else:
- for task in self._tasks.values():
- task.stop()
+ _LOGGER.info('Factory destroy called, stopping tasks.')
+ if self._manager_start_task is not None and not self._manager_start_task.done():
+ self._manager_start_task.cancel()
+
+ if self._sync_manager is not None:
+ await self._sync_manager.stop(True)
+
+ if not self._ready_task.done():
+ self._ready_task.cancel()
+ self._ready_task = None
+
+ if isinstance(self._storages['splits'], RedisSplitStorageAsync):
+ await self._get_storage('splits').redis.close()
+
+ if isinstance(self._sync_manager, ManagerAsync) and isinstance(self._telemetry_submitter, InMemoryTelemetrySubmitterAsync):
+ await self._api_client.close_session()
+
+ except Exception as e:
+ _LOGGER.error('Exception destroying factory.')
+ _LOGGER.debug(str(e))
finally:
- self._status = Status.DESTROYED
- with _INSTANTIATED_FACTORIES_LOCK:
- _INSTANTIATED_FACTORIES.subtract([self._apikey])
+ self._update_instantiated_factories()
- @property
- def destroyed(self):
+ def client(self):
"""
- Return whether the factory has been destroyed or not.
+ Return a new client.
- :return: True if the factory has been destroyed. False otherwise.
- :rtype: bool
+ This client is only a set of references to structures hold by the factory.
+ Creating one a fast operation and safe to be used anywhere.
"""
- return self._status == Status.DESTROYED
-
+ return ClientAsync(self, self._recorder, self._events_manager, self._labels_enabled, self._fallback_treatment_calculator)
def _wrap_impression_listener(listener, metadata):
"""
@@ -230,225 +498,917 @@ def _wrap_impression_listener(listener, metadata):
"""
if listener is not None:
return ImpressionListenerWrapper(listener, metadata)
+
return None
+def _wrap_impression_listener_async(listener, metadata):
+ """
+ Wrap the impression listener if any.
+
+ :param listener: User supplied impression listener or None
+ :type listener: splitio.client.listener.ImpressionListener | None
+ :param metadata: SDK Metadata
+ :type metadata: splitio.client.util.SdkMetadata
+ """
+ if listener is not None:
+ return ImpressionListenerWrapperAsync(listener, metadata)
+
+ return None
-def _build_in_memory_factory(api_key, config, sdk_url=None, events_url=None): # pylint: disable=too-many-locals
+def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pylint:disable=too-many-arguments,too-many-locals
+ auth_api_base_url=None, streaming_api_base_url=None, telemetry_api_base_url=None,
+ total_flag_sets=0, invalid_flag_sets=0):
"""Build and return a split factory tailored to the supplied config."""
if not input_validator.validate_factory_instantiation(api_key):
return None
- cfg = DEFAULT_CONFIG.copy()
- cfg.update(config)
- http_client = HttpClient(
+ extra_cfg = {}
+ extra_cfg['sdk_url'] = sdk_url
+ extra_cfg['events_url'] = events_url
+ extra_cfg['auth_url'] = auth_api_base_url
+ extra_cfg['streaming_url'] = streaming_api_base_url
+ extra_cfg['telemetry_url'] = telemetry_api_base_url
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_consumer = TelemetryStorageConsumer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+ telemetry_init_producer = telemetry_producer.get_telemetry_init_producer()
+
+ authentication_params = None
+ if cfg.get("httpAuthenticateScheme") in [AuthenticateScheme.KERBEROS_SPNEGO, AuthenticateScheme.KERBEROS_PROXY]:
+ authentication_params = [cfg.get("kerberosPrincipalUser"),
+ cfg.get("kerberosPrincipalPassword")]
+ http_client = HttpClientKerberos(
+ sdk_url=sdk_url,
+ events_url=events_url,
+ auth_url=auth_api_base_url,
+ telemetry_url=telemetry_api_base_url,
+ timeout=cfg.get('connectionTimeout'),
+ authentication_scheme = cfg.get("httpAuthenticateScheme"),
+ authentication_params = authentication_params
+ )
+ else:
+ http_client = HttpClient(
+ sdk_url=sdk_url,
+ events_url=events_url,
+ auth_url=auth_api_base_url,
+ telemetry_url=telemetry_api_base_url,
+ timeout=cfg.get('connectionTimeout'),
+ )
+
+ sdk_metadata = util.get_metadata(cfg)
+ apis = {
+ 'auth': AuthAPI(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
+ 'splits': SplitsAPI(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
+ 'segments': SegmentsAPI(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
+ 'impressions': ImpressionsAPI(http_client, api_key, sdk_metadata, telemetry_runtime_producer, cfg['impressionsMode']),
+ 'events': EventsAPI(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
+ 'telemetry': TelemetryAPI(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
+ }
+
+ internal_events_queue = queue.Queue()
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTask(events_manager.notify_internal_event, internal_events_queue)
+ storages = {
+ 'splits': InMemorySplitStorage(internal_events_queue, cfg['flagSetsFilter'] if cfg['flagSetsFilter'] is not None else []),
+ 'segments': InMemorySegmentStorage(internal_events_queue),
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorage(internal_events_queue),
+ 'impressions': InMemoryImpressionStorage(cfg['impressionsQueueSize'], telemetry_runtime_producer),
+ 'events': InMemoryEventStorage(cfg['eventsQueueSize'], telemetry_runtime_producer),
+ }
+
+ telemetry_submitter = InMemoryTelemetrySubmitter(telemetry_consumer, storages['splits'], storages['segments'], apis['telemetry'])
+
+ imp_counter = ImpressionsCounter()
+ unique_keys_tracker = UniqueKeysTracker(_UNIQUE_KEYS_CACHE_SIZE)
+ unique_keys_synchronizer, clear_filter_sync, unique_keys_task, \
+ clear_filter_task, impressions_count_sync, impressions_count_task, \
+ imp_strategy, none_strategy = set_classes('MEMORY', cfg['impressionsMode'], apis, imp_counter, unique_keys_tracker)
+
+ imp_manager = ImpressionsManager(
+ imp_strategy, none_strategy, telemetry_runtime_producer)
+
+ synchronizers = SplitSynchronizers(
+ SplitSynchronizer(apis['splits'], storages['splits'], storages['rule_based_segments']),
+ SegmentSynchronizer(apis['segments'], storages['splits'], storages['segments'], storages['rule_based_segments']),
+ ImpressionSynchronizer(apis['impressions'], storages['impressions'],
+ cfg['impressionsBulkSize']),
+ EventSynchronizer(apis['events'], storages['events'], cfg['eventsBulkSize']),
+ impressions_count_sync,
+ TelemetrySynchronizer(telemetry_submitter),
+ unique_keys_synchronizer,
+ clear_filter_sync,
+ )
+
+ tasks = SplitTasks(
+ SplitSynchronizationTask(
+ synchronizers.split_sync.synchronize_splits,
+ cfg['featuresRefreshRate'],
+ ),
+ SegmentSynchronizationTask(
+ synchronizers.segment_sync.synchronize_segments,
+ cfg['segmentsRefreshRate'],
+ ),
+ ImpressionsSyncTask(
+ synchronizers.impressions_sync.synchronize_impressions,
+ cfg['impressionsRefreshRate'],
+ ),
+ EventsSyncTask(synchronizers.events_sync.synchronize_events, cfg['eventsPushRate']),
+ impressions_count_task,
+ TelemetrySyncTask(synchronizers.telemetry_sync.synchronize_stats, cfg['metricsRefreshRate']),
+ unique_keys_task,
+ clear_filter_task,
+ internal_events_task
+ )
+
+ synchronizer = Synchronizer(synchronizers, tasks)
+
+ preforked_initialization = cfg.get('preforkedInitialization', False)
+
+ sdk_ready_flag = threading.Event() if not preforked_initialization else None
+ manager = Manager(sdk_ready_flag, synchronizer, apis['auth'], cfg['streamingEnabled'],
+ sdk_metadata, telemetry_runtime_producer, streaming_api_base_url, api_key[-4:])
+
+ storages['events'].set_queue_full_hook(tasks.events_task.flush)
+ storages['impressions'].set_queue_full_hook(tasks.impressions_task.flush)
+
+ recorder = StandardRecorder(
+ imp_manager,
+ storages['events'],
+ storages['impressions'],
+ telemetry_evaluation_producer,
+ telemetry_runtime_producer,
+ _wrap_impression_listener(cfg['impressionListener'], sdk_metadata),
+ imp_counter=imp_counter,
+ unique_keys_tracker=unique_keys_tracker
+ )
+
+ telemetry_init_producer.record_config(cfg, extra_cfg, total_flag_sets, invalid_flag_sets)
+ internal_events_task.start()
+
+ if preforked_initialization:
+ synchronizer.sync_all(max_retry_attempts=_MAX_RETRY_SYNC_ALL)
+ synchronizer._split_synchronizers._segment_sync.shutdown()
+
+ return SplitFactory(api_key, storages, cfg['labelsEnabled'],
+ recorder, internal_events_queue, events_manager, manager, None, telemetry_producer, telemetry_init_producer, telemetry_submitter, preforked_initialization=preforked_initialization,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(cfg['fallbackTreatments']))
+
+ initialization_thread = threading.Thread(target=manager.start, name="SDKInitializer", daemon=True)
+ initialization_thread.start()
+
+ return SplitFactory(api_key, storages, cfg['labelsEnabled'],
+ recorder, internal_events_queue, events_manager, manager, sdk_ready_flag,
+ telemetry_producer, telemetry_init_producer,
+ telemetry_submitter, fallback_treatment_calculator = FallbackTreatmentCalculator(cfg['fallbackTreatments']))
+
+async def _build_in_memory_factory_async(api_key, cfg, sdk_url=None, events_url=None, # pylint:disable=too-many-arguments,too-many-localsa
+ auth_api_base_url=None, streaming_api_base_url=None, telemetry_api_base_url=None,
+ total_flag_sets=0, invalid_flag_sets=0):
+ """Build and return a split factory tailored to the supplied config in async mode."""
+ if not input_validator.validate_factory_instantiation(api_key):
+ return None
+
+ extra_cfg = {}
+ extra_cfg['sdk_url'] = sdk_url
+ extra_cfg['events_url'] = events_url
+ extra_cfg['auth_url'] = auth_api_base_url
+ extra_cfg['streaming_url'] = streaming_api_base_url
+ extra_cfg['telemetry_url'] = telemetry_api_base_url
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_consumer = TelemetryStorageConsumerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+ telemetry_init_producer = telemetry_producer.get_telemetry_init_producer()
+
+ http_client = HttpClientAsync(
sdk_url=sdk_url,
events_url=events_url,
+ auth_url=auth_api_base_url,
+ telemetry_url=telemetry_api_base_url,
timeout=cfg.get('connectionTimeout')
)
sdk_metadata = util.get_metadata(cfg)
apis = {
- 'splits': SplitsAPI(http_client, api_key),
- 'segments': SegmentsAPI(http_client, api_key),
- 'impressions': ImpressionsAPI(http_client, api_key, sdk_metadata),
- 'events': EventsAPI(http_client, api_key, sdk_metadata),
- 'telemetry': TelemetryAPI(http_client, api_key, sdk_metadata)
+ 'auth': AuthAPIAsync(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
+ 'splits': SplitsAPIAsync(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
+ 'segments': SegmentsAPIAsync(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
+ 'impressions': ImpressionsAPIAsync(http_client, api_key, sdk_metadata, telemetry_runtime_producer, cfg['impressionsMode']),
+ 'events': EventsAPIAsync(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
+ 'telemetry': TelemetryAPIAsync(http_client, api_key, sdk_metadata, telemetry_runtime_producer),
}
-
- if not input_validator.validate_apikey_type(apis['segments']):
- return None
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTaskAsync(events_manager.notify_internal_event, internal_events_queue)
storages = {
- 'splits': InMemorySplitStorage(),
- 'segments': InMemorySegmentStorage(),
- 'impressions': InMemoryImpressionStorage(cfg['impressionsQueueSize']),
- 'events': InMemoryEventStorage(cfg['eventsQueueSize']),
- 'telemetry': InMemoryTelemetryStorage()
+ 'splits': InMemorySplitStorageAsync(internal_events_queue, cfg['flagSetsFilter'] if cfg['flagSetsFilter'] is not None else []),
+ 'segments': InMemorySegmentStorageAsync(internal_events_queue),
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorageAsync(internal_events_queue),
+ 'impressions': InMemoryImpressionStorageAsync(cfg['impressionsQueueSize'], telemetry_runtime_producer),
+ 'events': InMemoryEventStorageAsync(cfg['eventsQueueSize'], telemetry_runtime_producer),
}
- # Synchronization flags
- splits_ready_flag = threading.Event()
- segments_ready_flag = threading.Event()
- sdk_ready_flag = threading.Event()
+ telemetry_submitter = InMemoryTelemetrySubmitterAsync(telemetry_consumer, storages['splits'], storages['segments'], apis['telemetry'])
+
+ imp_counter = ImpressionsCounter()
+ unique_keys_tracker = UniqueKeysTrackerAsync(_UNIQUE_KEYS_CACHE_SIZE)
+ unique_keys_synchronizer, clear_filter_sync, unique_keys_task, \
+ clear_filter_task, impressions_count_sync, impressions_count_task, \
+ imp_strategy, none_strategy = set_classes_async('MEMORY', cfg['impressionsMode'], apis, imp_counter, unique_keys_tracker)
+
+ imp_manager = ImpressionsManager(
+ imp_strategy, none_strategy, telemetry_runtime_producer)
+
+ synchronizers = SplitSynchronizers(
+ SplitSynchronizerAsync(apis['splits'], storages['splits'], storages['rule_based_segments']),
+ SegmentSynchronizerAsync(apis['segments'], storages['splits'], storages['segments'], storages['rule_based_segments']),
+ ImpressionSynchronizerAsync(apis['impressions'], storages['impressions'],
+ cfg['impressionsBulkSize']),
+ EventSynchronizerAsync(apis['events'], storages['events'], cfg['eventsBulkSize']),
+ impressions_count_sync,
+ TelemetrySynchronizerAsync(telemetry_submitter),
+ unique_keys_synchronizer,
+ clear_filter_sync,
+ )
- tasks = {
- 'splits': SplitSynchronizationTask(
- apis['splits'],
- storages['splits'],
+ tasks = SplitTasks(
+ SplitSynchronizationTaskAsync(
+ synchronizers.split_sync.synchronize_splits,
cfg['featuresRefreshRate'],
- splits_ready_flag
),
-
- 'segments': SegmentSynchronizationTask(
- apis['segments'],
- storages['segments'],
- storages['splits'],
+ SegmentSynchronizationTaskAsync(
+ synchronizers.segment_sync.synchronize_segments,
cfg['segmentsRefreshRate'],
- segments_ready_flag
),
-
- 'impressions': ImpressionsSyncTask(
- apis['impressions'],
- storages['impressions'],
+ ImpressionsSyncTaskAsync(
+ synchronizers.impressions_sync.synchronize_impressions,
cfg['impressionsRefreshRate'],
- cfg['impressionsBulkSize']
),
+ EventsSyncTaskAsync(synchronizers.events_sync.synchronize_events, cfg['eventsPushRate']),
+ impressions_count_task,
+ TelemetrySyncTaskAsync(synchronizers.telemetry_sync.synchronize_stats, cfg['metricsRefreshRate']),
+ unique_keys_task,
+ clear_filter_task,
+ internal_events_task
+ )
- 'events': EventsSyncTask(
- apis['events'],
- storages['events'],
- cfg['eventsPushRate'],
- cfg['eventsBulkSize'],
- ),
+ synchronizer = SynchronizerAsync(synchronizers, tasks)
- 'telemetry': TelemetrySynchronizationTask(
- apis['telemetry'],
- storages['telemetry'],
- cfg['metricsRefreshRate']
- )
- }
+ manager = ManagerAsync(synchronizer, apis['auth'], cfg['streamingEnabled'],
+ sdk_metadata, telemetry_runtime_producer, streaming_api_base_url, api_key[-4:])
- # Start tasks that have no dependencies
- tasks['splits'].start()
- tasks['impressions'].start()
- tasks['events'].start()
- tasks['telemetry'].start()
-
- storages['events'].set_queue_full_hook(tasks['events'].flush)
- storages['impressions'].set_queue_full_hook(tasks['impressions'].flush)
-
- def split_ready_task():
- """Wait for splits to be ready and start fetching segments."""
- splits_ready_flag.wait()
- tasks['segments'].start()
-
- def segment_ready_task():
- """Wait for segments to be ready and set the main ready flag."""
- segments_ready_flag.wait()
- sdk_ready_flag.set()
-
- split_completion_thread = threading.Thread(target=split_ready_task)
- split_completion_thread.setDaemon(True)
- split_completion_thread.start()
- segment_completion_thread = threading.Thread(target=segment_ready_task)
- segment_completion_thread.setDaemon(True)
- segment_completion_thread.start()
- return SplitFactory(
- api_key,
- storages,
- cfg['labelsEnabled'],
- apis,
- tasks,
- sdk_ready_flag,
- impression_listener=_wrap_impression_listener(cfg['impressionListener'], sdk_metadata)
+ storages['events'].set_queue_full_hook(tasks.events_task.flush)
+ storages['impressions'].set_queue_full_hook(tasks.impressions_task.flush)
+
+ recorder = StandardRecorderAsync(
+ imp_manager,
+ storages['events'],
+ storages['impressions'],
+ telemetry_evaluation_producer,
+ telemetry_runtime_producer,
+ _wrap_impression_listener_async(cfg['impressionListener'], sdk_metadata),
+ imp_counter=imp_counter,
+ unique_keys_tracker=unique_keys_tracker
)
+ await telemetry_init_producer.record_config(cfg, extra_cfg, total_flag_sets, invalid_flag_sets)
+ internal_events_task.start()
+
+ manager_start_task = asyncio.get_running_loop().create_task(manager.start())
-def _build_redis_factory(api_key, config):
+ return SplitFactoryAsync(api_key, storages, cfg['labelsEnabled'],
+ recorder, internal_events_queue, events_manager, manager,
+ telemetry_producer, telemetry_init_producer,
+ telemetry_submitter, manager_start_task=manager_start_task,
+ api_client=http_client, fallback_treatment_calculator=FallbackTreatmentCalculator(cfg['fallbackTreatments']))
+
+def _build_redis_factory(api_key, cfg):
"""Build and return a split factory with redis-based storage."""
- cfg = DEFAULT_CONFIG.copy()
- cfg.update(config)
sdk_metadata = util.get_metadata(cfg)
redis_adapter = redis.build(cfg)
cache_enabled = cfg.get('redisLocalCacheEnabled', False)
cache_ttl = cfg.get('redisLocalCacheTTL', 5)
storages = {
- 'splits': RedisSplitStorage(redis_adapter, cache_enabled, cache_ttl),
+ 'splits': RedisSplitStorage(redis_adapter, cache_enabled, cache_ttl, []),
'segments': RedisSegmentStorage(redis_adapter),
+ 'rule_based_segments': RedisRuleBasedSegmentsStorage(redis_adapter),
'impressions': RedisImpressionsStorage(redis_adapter, sdk_metadata),
'events': RedisEventsStorage(redis_adapter, sdk_metadata),
'telemetry': RedisTelemetryStorage(redis_adapter, sdk_metadata)
}
- return SplitFactory(
+ telemetry_producer = TelemetryStorageProducer(storages['telemetry'])
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_init_producer = telemetry_producer.get_telemetry_init_producer()
+ telemetry_submitter = RedisTelemetrySubmitter(storages['telemetry'])
+
+ data_sampling = cfg.get('dataSampling', DEFAULT_DATA_SAMPLING)
+ if data_sampling < _MIN_DEFAULT_DATA_SAMPLING_ALLOWED:
+ _LOGGER.warning("dataSampling cannot be less than %.2f, defaulting to minimum",
+ _MIN_DEFAULT_DATA_SAMPLING_ALLOWED)
+ data_sampling = _MIN_DEFAULT_DATA_SAMPLING_ALLOWED
+
+ imp_counter = ImpressionsCounter()
+ unique_keys_tracker = UniqueKeysTracker(_UNIQUE_KEYS_CACHE_SIZE)
+ unique_keys_synchronizer, clear_filter_sync, unique_keys_task, \
+ clear_filter_task, impressions_count_sync, impressions_count_task, \
+ imp_strategy, none_strategy = set_classes('REDIS', cfg['impressionsMode'], redis_adapter, imp_counter, unique_keys_tracker)
+
+ imp_manager = ImpressionsManager(
+ imp_strategy, none_strategy,
+ telemetry_runtime_producer)
+
+ synchronizers = SplitSynchronizers(None, None, None, None,
+ impressions_count_sync,
+ None,
+ unique_keys_synchronizer,
+ clear_filter_sync
+ )
+
+ tasks = SplitTasks(None, None, None, None,
+ impressions_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+
+ synchronizer = RedisSynchronizer(synchronizers, tasks)
+ recorder = PipelinedRecorder(
+ redis_adapter.pipeline,
+ imp_manager,
+ storages['events'],
+ storages['impressions'],
+ storages['telemetry'],
+ data_sampling,
+ _wrap_impression_listener(cfg['impressionListener'], sdk_metadata),
+ imp_counter=imp_counter,
+ unique_keys_tracker=unique_keys_tracker
+ )
+
+ manager = RedisManager(synchronizer)
+ initialization_thread = threading.Thread(target=manager.start, name="SDKInitializer", daemon=True)
+ initialization_thread.start()
+
+ telemetry_init_producer.record_config(cfg, {}, 0, 0)
+ internal_events_queue = queue.Queue()
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+
+ split_factory = SplitFactory(
api_key,
storages,
cfg['labelsEnabled'],
- impression_listener=_wrap_impression_listener(cfg['impressionListener'], sdk_metadata)
+ recorder,
+ internal_events_queue,
+ events_manager,
+ manager,
+ sdk_ready_flag=None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_init_producer,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(cfg['fallbackTreatments'])
)
+ redundant_factory_count, active_factory_count = _get_active_and_redundant_count()
+ storages['telemetry'].record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+ telemetry_submitter.synchronize_config()
+ return split_factory
-def _build_uwsgi_factory(api_key, config):
+async def _build_redis_factory_async(api_key, cfg):
"""Build and return a split factory with redis-based storage."""
- cfg = DEFAULT_CONFIG.copy()
- cfg.update(config)
sdk_metadata = util.get_metadata(cfg)
- uwsgi_adapter = get_uwsgi()
+ redis_adapter = await redis.build_async(cfg)
+ cache_enabled = cfg.get('redisLocalCacheEnabled', False)
+ cache_ttl = cfg.get('redisLocalCacheTTL', 5)
storages = {
- 'splits': UWSGISplitStorage(uwsgi_adapter),
- 'segments': UWSGISegmentStorage(uwsgi_adapter),
- 'impressions': UWSGIImpressionStorage(uwsgi_adapter),
- 'events': UWSGIEventStorage(uwsgi_adapter),
- 'telemetry': UWSGITelemetryStorage(uwsgi_adapter)
+ 'splits': RedisSplitStorageAsync(redis_adapter, cache_enabled, cache_ttl),
+ 'segments': RedisSegmentStorageAsync(redis_adapter),
+ 'rule_based_segments': RedisRuleBasedSegmentsStorageAsync(redis_adapter),
+ 'impressions': RedisImpressionsStorageAsync(redis_adapter, sdk_metadata),
+ 'events': RedisEventsStorageAsync(redis_adapter, sdk_metadata),
+ 'telemetry': await RedisTelemetryStorageAsync.create(redis_adapter, sdk_metadata)
}
- return SplitFactory(
+ telemetry_producer = TelemetryStorageProducerAsync(storages['telemetry'])
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_init_producer = telemetry_producer.get_telemetry_init_producer()
+ telemetry_submitter = RedisTelemetrySubmitterAsync(storages['telemetry'])
+
+ data_sampling = cfg.get('dataSampling', DEFAULT_DATA_SAMPLING)
+ if data_sampling < _MIN_DEFAULT_DATA_SAMPLING_ALLOWED:
+ _LOGGER.warning("dataSampling cannot be less than %.2f, defaulting to minimum",
+ _MIN_DEFAULT_DATA_SAMPLING_ALLOWED)
+ data_sampling = _MIN_DEFAULT_DATA_SAMPLING_ALLOWED
+
+ imp_counter = ImpressionsCounter()
+ unique_keys_tracker = UniqueKeysTrackerAsync(_UNIQUE_KEYS_CACHE_SIZE)
+ unique_keys_synchronizer, clear_filter_sync, unique_keys_task, \
+ clear_filter_task, impressions_count_sync, impressions_count_task, \
+ imp_strategy, none_strategy = set_classes_async('REDIS', cfg['impressionsMode'], redis_adapter, imp_counter, unique_keys_tracker)
+
+ imp_manager = ImpressionsManager(
+ imp_strategy, none_strategy,
+ telemetry_runtime_producer)
+
+ synchronizers = SplitSynchronizers(None, None, None, None,
+ impressions_count_sync,
+ None,
+ unique_keys_synchronizer,
+ clear_filter_sync
+ )
+
+ tasks = SplitTasks(None, None, None, None,
+ impressions_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+
+ synchronizer = RedisSynchronizerAsync(synchronizers, tasks)
+ recorder = PipelinedRecorderAsync(
+ redis_adapter.pipeline,
+ imp_manager,
+ storages['events'],
+ storages['impressions'],
+ storages['telemetry'],
+ data_sampling,
+ _wrap_impression_listener_async(cfg['impressionListener'], sdk_metadata),
+ imp_counter=imp_counter,
+ unique_keys_tracker=unique_keys_tracker
+ )
+
+ manager = RedisManagerAsync(synchronizer)
+ await telemetry_init_producer.record_config(cfg, {}, 0, 0)
+ manager.start()
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ split_factory = SplitFactoryAsync(
api_key,
storages,
cfg['labelsEnabled'],
- impression_listener=_wrap_impression_listener(cfg['impressionListener'], sdk_metadata)
+ recorder,
+ internal_events_queue,
+ events_manager,
+ manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_init_producer,
+ telemetry_submitter=telemetry_submitter,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(cfg['fallbackTreatments'])
)
+ redundant_factory_count, active_factory_count = _get_active_and_redundant_count()
+ await storages['telemetry'].record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+ await telemetry_submitter.synchronize_config()
+ return split_factory
-def _build_localhost_factory(config):
+def _build_pluggable_factory(api_key, cfg):
+ """Build and return a split factory with pluggable storage."""
+ sdk_metadata = util.get_metadata(cfg)
+ if not input_validator.validate_pluggable_adapter(cfg):
+ raise Exception("Pluggable Adapter validation failed, exiting")
+
+ pluggable_adapter = cfg.get('storageWrapper')
+ storage_prefix = cfg.get('storagePrefix')
+ storages = {
+ 'splits': PluggableSplitStorage(pluggable_adapter, storage_prefix, []),
+ 'segments': PluggableSegmentStorage(pluggable_adapter, storage_prefix),
+ 'rule_based_segments': PluggableRuleBasedSegmentsStorage(pluggable_adapter, storage_prefix),
+ 'impressions': PluggableImpressionsStorage(pluggable_adapter, sdk_metadata, storage_prefix),
+ 'events': PluggableEventsStorage(pluggable_adapter, sdk_metadata, storage_prefix),
+ 'telemetry': PluggableTelemetryStorage(pluggable_adapter, sdk_metadata, storage_prefix)
+ }
+ telemetry_producer = TelemetryStorageProducer(storages['telemetry'])
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_init_producer = telemetry_producer.get_telemetry_init_producer()
+ # Using same class as redis
+ telemetry_submitter = RedisTelemetrySubmitter(storages['telemetry'])
+
+ imp_counter = ImpressionsCounter()
+ unique_keys_tracker = UniqueKeysTracker(_UNIQUE_KEYS_CACHE_SIZE)
+ unique_keys_synchronizer, clear_filter_sync, unique_keys_task, \
+ clear_filter_task, impressions_count_sync, impressions_count_task, \
+ imp_strategy, none_strategy = set_classes('PLUGGABLE', cfg['impressionsMode'], pluggable_adapter, imp_counter, unique_keys_tracker, storage_prefix)
+
+ imp_manager = ImpressionsManager(
+ imp_strategy, none_strategy,
+ telemetry_runtime_producer)
+
+ synchronizers = SplitSynchronizers(None, None, None, None,
+ impressions_count_sync,
+ None,
+ unique_keys_synchronizer,
+ clear_filter_sync
+ )
+
+ tasks = SplitTasks(None, None, None, None,
+ impressions_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+
+ # Using same class as redis for consumer mode only
+ synchronizer = RedisSynchronizer(synchronizers, tasks)
+ recorder = StandardRecorder(
+ imp_manager,
+ storages['events'],
+ storages['impressions'],
+ telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_runtime_producer,
+ _wrap_impression_listener(cfg['impressionListener'], sdk_metadata),
+ imp_counter=imp_counter,
+ unique_keys_tracker=unique_keys_tracker
+ )
+
+ # Using same class as redis for consumer mode only
+ manager = RedisManager(synchronizer)
+ initialization_thread = threading.Thread(target=manager.start, name="SDKInitializer", daemon=True)
+ initialization_thread.start()
+
+ telemetry_init_producer.record_config(cfg, {}, 0, 0)
+ internal_events_queue = queue.Queue()
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+
+ split_factory = SplitFactory(
+ api_key,
+ storages,
+ cfg['labelsEnabled'],
+ recorder,
+ internal_events_queue,
+ events_manager,
+ manager,
+ sdk_ready_flag=None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_init_producer,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(cfg['fallbackTreatments'])
+ )
+ redundant_factory_count, active_factory_count = _get_active_and_redundant_count()
+ storages['telemetry'].record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+ telemetry_submitter.synchronize_config()
+
+ return split_factory
+
+async def _build_pluggable_factory_async(api_key, cfg):
+ """Build and return a split factory with pluggable storage."""
+ sdk_metadata = util.get_metadata(cfg)
+ if not input_validator.validate_pluggable_adapter(cfg):
+ raise Exception("Pluggable Adapter validation failed, exiting")
+
+ pluggable_adapter = cfg.get('storageWrapper')
+ storage_prefix = cfg.get('storagePrefix')
+ storages = {
+ 'splits': PluggableSplitStorageAsync(pluggable_adapter, storage_prefix),
+ 'segments': PluggableSegmentStorageAsync(pluggable_adapter, storage_prefix),
+ 'rule_based_segments': PluggableRuleBasedSegmentsStorageAsync(pluggable_adapter, storage_prefix),
+ 'impressions': PluggableImpressionsStorageAsync(pluggable_adapter, sdk_metadata, storage_prefix),
+ 'events': PluggableEventsStorageAsync(pluggable_adapter, sdk_metadata, storage_prefix),
+ 'telemetry': await PluggableTelemetryStorageAsync.create(pluggable_adapter, sdk_metadata, storage_prefix)
+ }
+ telemetry_producer = TelemetryStorageProducerAsync(storages['telemetry'])
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_init_producer = telemetry_producer.get_telemetry_init_producer()
+ # Using same class as redis
+ telemetry_submitter = RedisTelemetrySubmitterAsync(storages['telemetry'])
+
+ imp_counter = ImpressionsCounter()
+ unique_keys_tracker = UniqueKeysTrackerAsync(_UNIQUE_KEYS_CACHE_SIZE)
+ unique_keys_synchronizer, clear_filter_sync, unique_keys_task, \
+ clear_filter_task, impressions_count_sync, impressions_count_task, \
+ imp_strategy, none_strategy = set_classes_async('PLUGGABLE', cfg['impressionsMode'], pluggable_adapter, imp_counter, unique_keys_tracker, storage_prefix)
+
+ imp_manager = ImpressionsManager(
+ imp_strategy, none_strategy,
+ telemetry_runtime_producer)
+
+ synchronizers = SplitSynchronizers(None, None, None, None,
+ impressions_count_sync,
+ None,
+ unique_keys_synchronizer,
+ clear_filter_sync
+ )
+
+ tasks = SplitTasks(None, None, None, None,
+ impressions_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+
+ # Using same class as redis for consumer mode only
+ synchronizer = RedisSynchronizerAsync(synchronizers, tasks)
+ recorder = StandardRecorderAsync(
+ imp_manager,
+ storages['events'],
+ storages['impressions'],
+ telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_runtime_producer,
+ _wrap_impression_listener_async(cfg['impressionListener'], sdk_metadata),
+ imp_counter=imp_counter,
+ unique_keys_tracker=unique_keys_tracker
+ )
+
+ # Using same class as redis for consumer mode only
+ manager = RedisManagerAsync(synchronizer)
+ manager.start()
+ await telemetry_init_producer.record_config(cfg, {}, 0, 0)
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ split_factory = SplitFactoryAsync(
+ api_key,
+ storages,
+ cfg['labelsEnabled'],
+ recorder,
+ internal_events_queue,
+ events_manager,
+ manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_init_producer,
+ telemetry_submitter=telemetry_submitter,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(cfg['fallbackTreatments'])
+ )
+ redundant_factory_count, active_factory_count = _get_active_and_redundant_count()
+ await storages['telemetry'].record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+ await telemetry_submitter.synchronize_config()
+
+ return split_factory
+
+def _build_localhost_factory(cfg):
"""Build and return a localhost factory for testing/development purposes."""
- cfg = DEFAULT_CONFIG.copy()
- cfg.update(config)
+ telemetry_storage = LocalhostTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ internal_events_queue = queue.Queue()
storages = {
- 'splits': InMemorySplitStorage(),
- 'segments': InMemorySegmentStorage(), # not used, just to avoid possible future errors.
+ 'splits': InMemorySplitStorage(internal_events_queue, cfg['flagSetsFilter'] if cfg['flagSetsFilter'] is not None else []),
+ 'segments': InMemorySegmentStorage(internal_events_queue), # not used, just to avoid possible future errors.
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorage(internal_events_queue),
'impressions': LocalhostImpressionsStorage(),
'events': LocalhostEventsStorage(),
- 'telemetry': LocalhostTelemetryStorage()
}
+ localhost_mode = LocalhostMode.JSON if cfg['splitFile'][-5:].lower() == '.json' else LocalhostMode.LEGACY
+ synchronizers = SplitSynchronizers(
+ LocalSplitSynchronizer(cfg['splitFile'],
+ storages['splits'],
+ storages['rule_based_segments'],
+ localhost_mode),
+ LocalSegmentSynchronizer(cfg['segmentDirectory'], storages['splits'], storages['segments']),
+ None, None, None,
+ )
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTask(events_manager.notify_internal_event, internal_events_queue)
+
+ feature_flag_sync_task = None
+ segment_sync_task = None
+ if cfg['localhostRefreshEnabled'] and localhost_mode == LocalhostMode.JSON:
+ feature_flag_sync_task = SplitSynchronizationTask(
+ synchronizers.split_sync.synchronize_splits,
+ cfg['featuresRefreshRate'],
+ )
+ segment_sync_task = SegmentSynchronizationTask(
+ synchronizers.segment_sync.synchronize_segments,
+ cfg['segmentsRefreshRate'],
+ )
+ tasks = SplitTasks(
+ feature_flag_sync_task,
+ segment_sync_task,
+ None, None, None,
+ internal_events_task=internal_events_task
+ )
+ sdk_metadata = util.get_metadata(cfg)
ready_event = threading.Event()
- tasks = {'splits': LocalhostSplitSynchronizationTask(
- cfg['splitFile'],
- storages['splits'],
- cfg['featuresRefreshRate'],
- ready_event
- )}
- tasks['splits'].start()
- return SplitFactory('localhost', storages, False, None, tasks, ready_event)
+ synchronizer = LocalhostSynchronizer(synchronizers, tasks, localhost_mode)
+ manager = Manager(ready_event, synchronizer, None, False, sdk_metadata, telemetry_runtime_producer)
+
+# TODO: BUR is only applied for Localhost JSON mode, in future legacy and yaml will also use BUR
+ if localhost_mode == LocalhostMode.JSON:
+ initialization_thread = threading.Thread(target=manager.start, name="SDKInitializer", daemon=True)
+ initialization_thread.start()
+ else:
+ manager.start()
+
+ recorder = StandardRecorder(
+ ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer),
+ storages['events'],
+ storages['impressions'],
+ telemetry_evaluation_producer,
+ telemetry_runtime_producer
+ )
+ internal_events_task.start()
+
+ return SplitFactory(
+ 'localhost',
+ storages,
+ False,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ manager,
+ ready_event,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ telemetry_submitter=LocalhostTelemetrySubmitter(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(cfg['fallbackTreatments'])
+ )
+
+async def _build_localhost_factory_async(cfg):
+ """Build and return a localhost async factory for testing/development purposes."""
+ telemetry_storage = LocalhostTelemetryStorageAsync()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTaskAsync(events_manager.notify_internal_event, internal_events_queue)
+
+ storages = {
+ 'splits': InMemorySplitStorageAsync(internal_events_queue),
+ 'segments': InMemorySegmentStorageAsync(internal_events_queue), # not used, just to avoid possible future errors.
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorageAsync(internal_events_queue),
+ 'impressions': LocalhostImpressionsStorageAsync(),
+ 'events': LocalhostEventsStorageAsync(),
+ }
+ localhost_mode = LocalhostMode.JSON if cfg['splitFile'][-5:].lower() == '.json' else LocalhostMode.LEGACY
+ synchronizers = SplitSynchronizers(
+ LocalSplitSynchronizerAsync(cfg['splitFile'],
+ storages['splits'],
+ storages['rule_based_segments'],
+ localhost_mode),
+ LocalSegmentSynchronizerAsync(cfg['segmentDirectory'], storages['splits'], storages['segments']),
+ None, None, None,
+ )
+
+ feature_flag_sync_task = None
+ segment_sync_task = None
+ if cfg['localhostRefreshEnabled'] and localhost_mode == LocalhostMode.JSON:
+ feature_flag_sync_task = SplitSynchronizationTaskAsync(
+ synchronizers.split_sync.synchronize_splits,
+ cfg['featuresRefreshRate'],
+ )
+ segment_sync_task = SegmentSynchronizationTaskAsync(
+ synchronizers.segment_sync.synchronize_segments,
+ cfg['segmentsRefreshRate'],
+ )
+ tasks = SplitTasks(
+ feature_flag_sync_task,
+ segment_sync_task,
+ None, None, None,
+ internal_events_task=internal_events_task
+ )
+ sdk_metadata = util.get_metadata(cfg)
+ synchronizer = LocalhostSynchronizerAsync(synchronizers, tasks, localhost_mode)
+ manager = ManagerAsync(synchronizer, None, False, sdk_metadata, telemetry_runtime_producer)
+
+# TODO: BUR is only applied for Localhost JSON mode, in future legacy and yaml will also use BUR
+ manager_start_task = None
+ if localhost_mode == LocalhostMode.JSON:
+ manager_start_task = asyncio.get_running_loop().create_task(manager.start())
+ else:
+ await manager.start()
+
+ recorder = StandardRecorderAsync(
+ ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer),
+ storages['events'],
+ storages['impressions'],
+ telemetry_evaluation_producer,
+ telemetry_runtime_producer
+ )
+ internal_events_task.start()
+
+ return SplitFactoryAsync(
+ 'localhost',
+ storages,
+ False,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ telemetry_submitter=LocalhostTelemetrySubmitterAsync(),
+ manager_start_task=manager_start_task,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(cfg['fallbackTreatments'])
+ )
def get_factory(api_key, **kwargs):
"""Build and return the appropriate factory."""
- try:
- _INSTANTIATED_FACTORIES_LOCK.acquire()
- if _INSTANTIATED_FACTORIES:
- if api_key in _INSTANTIATED_FACTORIES:
+ _INSTANTIATED_FACTORIES_LOCK.acquire()
+ if _INSTANTIATED_FACTORIES:
+ if api_key in _INSTANTIATED_FACTORIES:
+ if _INSTANTIATED_FACTORIES[api_key] > 0:
_LOGGER.warning(
- "factory instantiation: You already have %d %s with this API Key. "
+ "factory instantiation: You already have %d %s with this SDK Key. "
"We recommend keeping only one instance of the factory at all times "
"(Singleton pattern) and reusing it throughout your application.",
_INSTANTIATED_FACTORIES[api_key],
'factory' if _INSTANTIATED_FACTORIES[api_key] == 1 else 'factories'
)
- else:
+ else:
+ _LOGGER.warning(
+ "factory instantiation: You already have an instance of the Split factory. "
+ "Make sure you definitely want this additional instance. "
+ "We recommend keeping only one instance of the factory at all times "
+ "(Singleton pattern) and reusing it throughout your application."
+ )
+
+ _INSTANTIATED_FACTORIES.update([api_key])
+ _INSTANTIATED_FACTORIES_LOCK.release()
+
+ config_raw = kwargs.get('config', {})
+ total_flag_sets, invalid_flag_sets = _get_total_and_invalid_flag_sets(config_raw)
+
+ config = sanitize_config(api_key, config_raw)
+
+ if config['operationMode'] == 'localhost':
+ split_factory = _build_localhost_factory(config)
+ elif config['storageType'] == 'redis':
+ split_factory = _build_redis_factory(api_key, config)
+ elif config['storageType'] == 'pluggable':
+ split_factory = _build_pluggable_factory(api_key, config)
+ else:
+ split_factory = _build_in_memory_factory(
+ api_key,
+ config,
+ kwargs.get('sdk_api_base_url'),
+ kwargs.get('events_api_base_url'),
+ kwargs.get('auth_api_base_url'),
+ kwargs.get('streaming_api_base_url'),
+ kwargs.get('telemetry_api_base_url'),
+ total_flag_sets,
+ invalid_flag_sets)
+
+ return split_factory
+
+async def get_factory_async(api_key, **kwargs):
+ """Build and return the appropriate factory."""
+ _INSTANTIATED_FACTORIES_LOCK.acquire()
+ if _INSTANTIATED_FACTORIES:
+ if api_key in _INSTANTIATED_FACTORIES:
+ if _INSTANTIATED_FACTORIES[api_key] > 0:
_LOGGER.warning(
- "factory instantiation: You already have an instance of the Split factory. "
- "Make sure you definitely want this additional instance. "
+ "factory instantiation: You already have %d %s with this SDK Key. "
"We recommend keeping only one instance of the factory at all times "
- "(Singleton pattern) and reusing it throughout your application."
+ "(Singleton pattern) and reusing it throughout your application.",
+ _INSTANTIATED_FACTORIES[api_key],
+ 'factory' if _INSTANTIATED_FACTORIES[api_key] == 1 else 'factories'
)
-
- config = kwargs.get('config', {})
-
- if api_key == 'localhost':
- return _build_localhost_factory(config)
-
- if 'redisHost' in config or 'redisSentinels' in config:
- return _build_redis_factory(api_key, config)
-
- if 'uwsgiClient' in config:
- return _build_uwsgi_factory(api_key, config)
-
- return _build_in_memory_factory(
- api_key,
- config,
- kwargs.get('sdk_api_base_url'),
- kwargs.get('events_api_base_url')
- )
- finally:
- _INSTANTIATED_FACTORIES.update([api_key])
- _INSTANTIATED_FACTORIES_LOCK.release()
+ else:
+ _LOGGER.warning(
+ "factory instantiation: You already have an instance of the Split factory. "
+ "Make sure you definitely want this additional instance. "
+ "We recommend keeping only one instance of the factory at all times "
+ "(Singleton pattern) and reusing it throughout your application."
+ )
+
+ _INSTANTIATED_FACTORIES.update([api_key])
+ _INSTANTIATED_FACTORIES_LOCK.release()
+
+ config_raw = kwargs.get('config', {})
+ total_flag_sets, invalid_flag_sets = _get_total_and_invalid_flag_sets(config_raw)
+
+ config = sanitize_config(api_key, config_raw)
+ if config['operationMode'] == 'localhost':
+ split_factory = await _build_localhost_factory_async(config)
+ elif config['storageType'] == 'redis':
+ split_factory = await _build_redis_factory_async(api_key, config)
+ elif config['storageType'] == 'pluggable':
+ split_factory = await _build_pluggable_factory_async(api_key, config)
+ else:
+ split_factory = await _build_in_memory_factory_async(
+ api_key,
+ config,
+ kwargs.get('sdk_api_base_url'),
+ kwargs.get('events_api_base_url'),
+ kwargs.get('auth_api_base_url'),
+ kwargs.get('streaming_api_base_url'),
+ kwargs.get('telemetry_api_base_url'),
+ total_flag_sets,
+ invalid_flag_sets)
+ return split_factory
+
+def _get_active_and_redundant_count():
+ redundant_factory_count = 0
+ active_factory_count = 0
+ _INSTANTIATED_FACTORIES_LOCK.acquire()
+ for item in _INSTANTIATED_FACTORIES:
+ redundant_factory_count += _INSTANTIATED_FACTORIES[item] - 1
+ active_factory_count += _INSTANTIATED_FACTORIES[item]
+ _INSTANTIATED_FACTORIES_LOCK.release()
+ return redundant_factory_count, active_factory_count
+
+def _get_total_and_invalid_flag_sets(config_raw):
+ total_flag_sets = 0
+ invalid_flag_sets = 0
+ if config_raw.get('flagSetsFilter') is not None and isinstance(config_raw.get('flagSetsFilter'), list):
+ total_flag_sets = len(config_raw.get('flagSetsFilter'))
+ invalid_flag_sets = total_flag_sets - len(input_validator.validate_flag_sets(config_raw.get('flagSetsFilter'), 'Telemetry Init'))
+
+ return total_flag_sets, invalid_flag_sets
\ No newline at end of file
diff --git a/splitio/client/input_validator.py b/splitio/client/input_validator.py
index 214a7f95..dfded942 100644
--- a/splitio/client/input_validator.py
+++ b/splitio/client/input_validator.py
@@ -1,24 +1,23 @@
"""Input validation module."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
from numbers import Number
import logging
import re
import math
+import inspect
-import six
-
-from splitio.api import APIException
from splitio.client.key import Key
+from splitio.client import client
from splitio.engine.evaluator import CONTROL
+from splitio.models.fallback_treatment import FallbackTreatment
_LOGGER = logging.getLogger(__name__)
MAX_LENGTH = 250
EVENT_TYPE_PATTERN = r'^[a-zA-Z0-9][-_.:a-zA-Z0-9]{0,79}$'
MAX_PROPERTIES_LENGTH_BYTES = 32768
-
+_FLAG_SETS_REGEX = '^[a-z0-9][_a-z0-9]{0,49}$'
+_FALLBACK_TREATMENT_REGEX = '^[0-9]+[.a-zA-Z0-9_-]*$|^[a-zA-Z]+[a-zA-Z0-9_-]*$'
+_FALLBACK_TREATMENT_SIZE = 100
def _check_not_null(value, name, operation):
"""
@@ -37,6 +36,7 @@ def _check_not_null(value, name, operation):
_LOGGER.error('%s: you passed a null %s, %s must be a non-empty string.',
operation, name, name)
return False
+
return True
@@ -53,12 +53,13 @@ def _check_is_string(value, name, operation):
:return: The result of validation
:rtype: True|False
"""
- if isinstance(value, six.string_types) is False:
+ if isinstance(value, str) is False:
_LOGGER.error(
'%s: you passed an invalid %s, %s must be a non-empty string.',
operation, name, name
)
return False
+
return True
@@ -79,10 +80,11 @@ def _check_string_not_empty(value, name, operation):
_LOGGER.error('%s: you passed an empty %s, %s must be a non-empty string.',
operation, name, name)
return False
+
return True
-def _check_string_matches(value, operation, pattern):
+def _check_string_matches(value, operation, pattern, name, length):
"""
Check if value is adhere to a regular expression passed.
@@ -95,16 +97,17 @@ def _check_string_matches(value, operation, pattern):
:return: The result of validation
:rtype: True|False
"""
- if not re.match(pattern, value):
+ if re.search(pattern, value) is None or re.search(pattern, value).group() != value:
_LOGGER.error(
- '%s: you passed %s, event_type must ' +
+ '%s: you passed %s, %s must ' +
'adhere to the regular expression %s. ' +
- 'This means an event name must be alphanumeric, cannot be more ' +
- 'than 80 characters long, and can only include a dash, underscore, ' +
+ 'This means %s must be alphanumeric, cannot be more ' +
+ 'than %s characters long, and can only include a dash, underscore, ' +
'period, or colon as separators of alphanumeric characters.',
- operation, value, pattern
+ operation, value, name, pattern, name, length
)
return False
+
return True
@@ -121,8 +124,9 @@ def _check_can_convert(value, name, operation):
:return: The result of validation
:rtype: None|string
"""
- if isinstance(value, six.string_types):
+ if isinstance(value, str):
return value
+
else:
# check whether if isnan and isinf are really necessary
if isinstance(value, bool) or (not isinstance(value, Number)) or math.isnan(value) \
@@ -130,6 +134,7 @@ def _check_can_convert(value, name, operation):
_LOGGER.error('%s: you passed an invalid %s, %s must be a non-empty string.',
operation, name, name)
return None
+
_LOGGER.warning('%s: %s %s is not of type string, converting.',
operation, name, value)
return str(value)
@@ -152,6 +157,7 @@ def _check_valid_length(value, name, operation):
_LOGGER.error('%s: %s too long - must be %s characters or less.',
operation, name, MAX_LENGTH)
return False
+
return True
@@ -168,21 +174,21 @@ def _check_valid_object_key(key, name, operation):
:return: The result of validation
:rtype: str|None
"""
- if key is None:
- _LOGGER.error(
- '%s: you passed a null %s, %s must be a non-empty string.',
- operation, name, name)
+ if not _check_not_null(key, name, operation):
return None
- if isinstance(key, six.string_types):
+
+ if isinstance(key, str):
if not _check_string_not_empty(key, name, operation):
return None
+
key_str = _check_can_convert(key, name, operation)
if key_str is None or not _check_valid_length(key_str, name, operation):
return None
+
return key_str
-def _remove_empty_spaces(value, operation):
+def _remove_empty_spaces(value, name, operation):
"""
Check if an string has whitespaces.
@@ -195,9 +201,15 @@ def _remove_empty_spaces(value, operation):
"""
strip_value = value.strip()
if value != strip_value:
- _LOGGER.warning("%s: feature_name '%s' has extra whitespace, trimming.", operation, value)
+ _LOGGER.warning("%s: %s '%s' has extra whitespace, trimming.", operation, name, value)
return strip_value
+def _convert_str_to_lower(value, name, operation):
+ lower_value = value.lower()
+ if value != lower_value:
+ _LOGGER.warning("%s: %s '%s' should be all lowercase - converting string to lowercase", operation, name, value)
+ return lower_value
+
def validate_key(key, method_name):
"""
@@ -214,18 +226,19 @@ def validate_key(key, method_name):
"""
matching_key_result = None
bucketing_key_result = None
- if key is None:
- _LOGGER.error('%s: you passed a null key, key must be a non-empty string.', method_name)
+ if not _check_not_null(key, 'key', method_name):
return None, None
if isinstance(key, Key):
matching_key_result = _check_valid_object_key(key.matching_key, 'matching_key', method_name)
if matching_key_result is None:
return None, None
+
bucketing_key_result = _check_valid_object_key(key.bucketing_key, 'bucketing_key',
method_name)
if bucketing_key_result is None:
return None, None
+
else:
key_str = _check_can_convert(key, 'key', method_name)
if key_str is not None and \
@@ -235,31 +248,28 @@ def validate_key(key, method_name):
return matching_key_result, bucketing_key_result
-def validate_feature_name(feature_name, should_validate_existance, split_storage, method_name):
+def _validate_feature_flag_name(feature_flag_name, method_name):
+ if (not _check_not_null(feature_flag_name, 'feature_flag_name', method_name)) or \
+ (not _check_is_string(feature_flag_name, 'feature_flag_name', method_name)) or \
+ (not _check_string_not_empty(feature_flag_name, 'feature_flag_name', method_name)):
+ return False
+
+ return True
+
+
+def validate_feature_flag_name(feature_flag_name, method_name):
"""
- Check if feature_name is valid for get_treatment.
+ Check if feature flag name is valid for get_treatment.
- :param feature_name: feature_name to be checked
- :type feature_name: str
- :return: feature_name
+ :param feature_flag_name: feature flag name to be checked
+ :type feature_flag_name: str
+ :return: feature_flag_name
:rtype: str|None
"""
- if (not _check_not_null(feature_name, 'feature_name', method_name)) or \
- (not _check_is_string(feature_name, 'feature_name', method_name)) or \
- (not _check_string_not_empty(feature_name, 'feature_name', method_name)):
- return None
-
- if should_validate_existance and split_storage.get(feature_name) is None:
- _LOGGER.warning(
- "%s: you passed \"%s\" that does not exist in this environment, "
- "please double check what Splits exist in the web console.",
- method_name,
- feature_name
- )
+ if not _validate_feature_flag_name(feature_flag_name, method_name):
return None
- return _remove_empty_spaces(feature_name, method_name)
-
+ return _remove_empty_spaces(feature_flag_name, 'feature flag name', method_name)
def validate_track_key(key):
"""
@@ -272,41 +282,76 @@ def validate_track_key(key):
"""
if not _check_not_null(key, 'key', 'track'):
return None
+
key_str = _check_can_convert(key, 'key', 'track')
if key_str is None or \
(not _check_string_not_empty(key_str, 'key', 'track')) or \
(not _check_valid_length(key_str, 'key', 'track')):
return None
+
return key_str
-def validate_traffic_type(traffic_type, should_validate_existance, split_storage):
+def _validate_traffic_type_value(traffic_type):
+ if (not _check_not_null(traffic_type, 'traffic_type', 'track')) or \
+ (not _check_is_string(traffic_type, 'traffic_type', 'track')) or \
+ (not _check_string_not_empty(traffic_type, 'traffic_type', 'track')):
+ return False
+
+ return True
+
+def validate_traffic_type(traffic_type, should_validate_existance, feature_flag_storage):
"""
Check if traffic_type is valid for track.
:param traffic_type: traffic_type to be checked
:type traffic_type: str
- :param should_validate_existance: Whether to check for existante in the split storage.
+ :param should_validate_existance: Whether to check for existante in the feature flag storage.
:type should_validate_existance: bool
- :param split_storage: Split storage.
- :param split_storage: splitio.storages.SplitStorage
+ :param feature_flag_storage: Feature flag storage.
+ :param feature_flag_storage: splitio.storages.SplitStorage
:return: traffic_type
:rtype: str|None
"""
- if (not _check_not_null(traffic_type, 'traffic_type', 'track')) or \
- (not _check_is_string(traffic_type, 'traffic_type', 'track')) or \
- (not _check_string_not_empty(traffic_type, 'traffic_type', 'track')):
+ if not _validate_traffic_type_value(traffic_type):
return None
- if not traffic_type.islower():
- _LOGGER.warning('track: %s should be all lowercase - converting string to lowercase.',
- traffic_type)
- traffic_type = traffic_type.lower()
- if should_validate_existance and not split_storage.is_valid_traffic_type(traffic_type):
+ traffic_type = _convert_str_to_lower(traffic_type, 'traffic type', 'track')
+
+ if should_validate_existance and not feature_flag_storage.is_valid_traffic_type(traffic_type):
_LOGGER.warning(
- 'track: Traffic Type %s does not have any corresponding Splits in this environment, '
+ 'track: Traffic Type %s does not have any corresponding Feature flags in this environment, '
'make sure you\'re tracking your events to a valid traffic type defined '
- 'in the Split console.',
+ 'in the Split user interface.',
+ traffic_type
+ )
+
+ return traffic_type
+
+
+async def validate_traffic_type_async(traffic_type, should_validate_existance, feature_flag_storage):
+ """
+ Check if traffic_type is valid for track.
+
+ :param traffic_type: traffic_type to be checked
+ :type traffic_type: str
+ :param should_validate_existance: Whether to check for existante in the feature flag storage.
+ :type should_validate_existance: bool
+ :param feature_flag_storage: Feature flag storage.
+ :param feature_flag_storage: splitio.storages.SplitStorage
+ :return: traffic_type
+ :rtype: str|None
+ """
+ if not _validate_traffic_type_value(traffic_type):
+ return None
+
+ traffic_type = _convert_str_to_lower(traffic_type, 'traffic type', 'track')
+
+ if should_validate_existance and not await feature_flag_storage.is_valid_traffic_type(traffic_type):
+ _LOGGER.warning(
+ 'track: Traffic Type %s does not have any corresponding Feature flags in this environment, '
+ 'make sure you\'re tracking your events to a valid traffic type defined '
+ 'in the Split user interface.',
traffic_type
)
@@ -325,8 +370,9 @@ def validate_event_type(event_type):
if (not _check_not_null(event_type, 'event_type', 'track')) or \
(not _check_is_string(event_type, 'event_type', 'track')) or \
(not _check_string_not_empty(event_type, 'event_type', 'track')) or \
- (not _check_string_matches(event_type, 'track', EVENT_TYPE_PATTERN)):
+ (not _check_string_matches(event_type, 'track', EVENT_TYPE_PATTERN, 'an event name', 80)):
return None
+
return event_type
@@ -341,91 +387,142 @@ def validate_value(value):
"""
if value is None:
return None
+
if (not isinstance(value, Number)) or isinstance(value, bool):
_LOGGER.error('track: value must be a number.')
return False
+
return value
+def validate_manager_feature_flag_name(feature_flag_name, should_validate_existance, feature_flag_storage):
+ """
+ Check if feature flag name is valid for track.
-def validate_manager_feature_name(feature_name, should_validate_existance, split_storage):
+ :param feature_flag_name: feature flag name to be checked
+ :type feature_flag_name: str
+ :return: feature_flag_name
+ :rtype: str|None
"""
- Check if feature_name is valid for track.
+ if not _validate_feature_flag_name(feature_flag_name, 'split'):
+ return None
- :param feature_name: feature_name to be checked
- :type feature_name: str
- :return: feature_name
+ feature_flag = feature_flag_storage.get(feature_flag_name)
+ if should_validate_existance and feature_flag is None:
+ _LOGGER.warning(
+ "split: you passed \"%s\" that does not exist in this environment, "
+ "please double check what Feature flags exist in the Split user interface.",
+ feature_flag_name
+ )
+ return None
+
+ return feature_flag
+
+async def validate_manager_feature_flag_name_async(feature_flag_name, should_validate_existance, feature_flag_storage):
+ """
+ Check if feature flag name is valid for track.
+
+ :param feature_flag_name: feature flag name to be checked
+ :type feature_flag_name: str
+ :return: feature_flag_name
:rtype: str|None
"""
- if (not _check_not_null(feature_name, 'feature_name', 'split')) or \
- (not _check_is_string(feature_name, 'feature_name', 'split')) or \
- (not _check_string_not_empty(feature_name, 'feature_name', 'split')):
+ if not _validate_feature_flag_name(feature_flag_name, 'split'):
return None
- if should_validate_existance and split_storage.get(feature_name) is None:
+ feature_flag = await feature_flag_storage.get(feature_flag_name)
+ if should_validate_existance and feature_flag is None:
_LOGGER.warning(
"split: you passed \"%s\" that does not exist in this environment, "
- "please double check what Splits exist in the web console.",
- feature_name
+ "please double check what Feature flags exist in the Split user interface.",
+ feature_flag_name
)
return None
- return feature_name
+ return feature_flag
+def validate_feature_flag_names(feature_flags, method_name):
+ """
+ Check if feature flag name is valid for track.
+
+ :param feature_flag_name: feature flag name to be checked
+ :type feature_flag_name: str
+ """
+ for feature_flag in feature_flags.keys():
+ if feature_flags[feature_flag] is None:
+ _LOGGER.warning(
+ "%s: you passed \"%s\" that does not exist in this environment, "
+ "please double check what Feature flags exist in the Split user interface.",
+ method_name, feature_flag
+ )
-def validate_features_get_treatments( # pylint: disable=invalid-name
+def _check_feature_flag_instance(feature_flags, method_name):
+ if feature_flags is None or not isinstance(feature_flags, list):
+ _LOGGER.error("%s: feature flag names must be a non-empty array.", method_name)
+ return False
+
+ if not feature_flags:
+ _LOGGER.error("%s: feature flag names must be a non-empty array.", method_name)
+ return False
+
+ return True
+
+
+def _get_filtered_feature_flag(feature_flags, method_name):
+ return set(
+ _remove_empty_spaces(feature_flag, 'feature flag name', method_name) for feature_flag in feature_flags
+ if feature_flag is not None and
+ _check_is_string(feature_flag, 'feature flag name', method_name) and
+ _check_string_not_empty(feature_flag, 'feature flag name', method_name)
+ )
+
+
+def validate_feature_flags_get_treatments( # pylint: disable=invalid-name
method_name,
- features,
- should_validate_existance=False,
- split_storage=None
-):
+ feature_flag_names,
+ ):
"""
- Check if features is valid for get_treatments.
+ Check if feature flags is valid for get_treatments.
- :param features: array of features
- :type features: list
- :return: filtered_features
+ :param feature_flags: array of feature flags
+ :type feature_flags: list
+ :return: filtered_feature_flags
:rtype: tuple
"""
- if features is None or not isinstance(features, list):
- _LOGGER.error("%s: feature_names must be a non-empty array.", method_name)
- return None, None
- if not features:
- _LOGGER.error("%s: feature_names must be a non-empty array.", method_name)
- return None, None
- filtered_features = set(
- _remove_empty_spaces(feature, method_name) for feature in features
- if feature is not None and
- _check_is_string(feature, 'feature_name', method_name) and
- _check_string_not_empty(feature, 'feature_name', method_name)
- )
- if not filtered_features:
- _LOGGER.error("%s: feature_names must be a non-empty array.", method_name)
- return None, None
-
- if not should_validate_existance:
- return filtered_features, []
+ if not _check_feature_flag_instance(feature_flag_names, method_name):
+ return None
- valid_missing_features = set(f for f in filtered_features if split_storage.get(f) is None)
- for missing_feature in valid_missing_features:
- _LOGGER.warning(
- "%s: you passed \"%s\" that does not exist in this environment, "
- "please double check what Splits exist in the web console.",
- method_name,
- missing_feature
- )
- return filtered_features - valid_missing_features, valid_missing_features
+ filtered_feature_flags = _get_filtered_feature_flag(feature_flag_names, method_name)
+ if not filtered_feature_flags:
+ _LOGGER.error("%s: feature flag names must be a non-empty array.", method_name)
+ return None
+ valid_feature_flags = []
+ for ff in filtered_feature_flags:
+ ff = _remove_empty_spaces(ff, 'feature flag name', method_name)
+ valid_feature_flags.append(ff)
+ return valid_feature_flags
-def generate_control_treatments(features, method_name):
+def generate_control_treatments(feature_flags, fallback_treatment_calculator):
"""
- Generate valid features to control.
+ Generate valid feature flags to control.
- :param features: array of features
- :type features: list
+ :param feature_flags: array of feature flags
+ :type feature_flags: list
:return: dict
:rtype: dict|None
"""
- return {feature: (CONTROL, None) for feature in validate_features_get_treatments(method_name, features)[0]}
+ if not isinstance(feature_flags, list):
+ return {}
+
+ to_return = {}
+ for feature_flag in feature_flags:
+ if isinstance(feature_flag, str) and len(feature_flag.strip())> 0:
+ fallback_treatment = fallback_treatment_calculator.resolve(feature_flag, "")
+ treatment = fallback_treatment.treatment
+ config = fallback_treatment.config
+
+ to_return[feature_flag] = (treatment, config)
+ return to_return
def validate_attributes(attributes, method_name):
@@ -441,60 +538,49 @@ def validate_attributes(attributes, method_name):
"""
if attributes is None:
return True
+
if not isinstance(attributes, dict):
_LOGGER.error('%s: attributes must be of type dictionary.', method_name)
return False
+
return True
+def validate_evaluation_options(evaluation_options, method_name):
+ if evaluation_options == None:
+ return None
+
+ if not isinstance(evaluation_options, client.EvaluationOptions):
+ _LOGGER.error("%s: evaluation options should be an instance of EvaluationOptions. Setting its value to None.", method_name)
+ return None
+
+ return evaluation_options
class _ApiLogFilter(logging.Filter): # pylint: disable=too-few-public-methods
def filter(self, record):
return record.name not in ('SegmentsAPI', 'HttpClient')
-def validate_apikey_type(segment_api):
- """
- Try to guess if the apikey is of browser type and let the user know.
-
- :param segment_api: Segments API client.
- :type segment_api: splitio.api.segments.SegmentsAPI
- """
- api_messages_filter = _ApiLogFilter()
- try:
- segment_api._logger.addFilter(api_messages_filter) # pylint: disable=protected-access
- segment_api.fetch_segment('__SOME_INVALID_SEGMENT__', -1)
- except APIException as exc:
- if exc.status_code == 403:
- _LOGGER.error('factory instantiation: you passed a browser type '
- + 'api_key, please grab an api key from the Split '
- + 'console that is of type sdk')
- return False
- finally:
- segment_api._logger.removeFilter(api_messages_filter) # pylint: disable=protected-access
-
- # True doesn't mean that the APIKEY is right, only that it's not of type "browser"
- return True
-
-
-def validate_factory_instantiation(apikey):
+def validate_factory_instantiation(sdk_key):
"""
Check if the factory if being instantiated with the appropriate arguments.
- :param apikey: str
- :type apikey: str
+ :param sdk_key: str
+ :type sdk_key: str
:return: bool
:rtype: True|False
"""
- if apikey == 'localhost':
+ if sdk_key == 'localhost':
return True
- if (not _check_not_null(apikey, 'apikey', 'factory_instantiation')) or \
- (not _check_is_string(apikey, 'apikey', 'factory_instantiation')) or \
- (not _check_string_not_empty(apikey, 'apikey', 'factory_instantiation')):
+
+ if (not _check_not_null(sdk_key, 'sdk_key', 'factory_instantiation')) or \
+ (not _check_is_string(sdk_key, 'sdk_key', 'factory_instantiation')) or \
+ (not _check_string_not_empty(sdk_key, 'sdk_key', 'factory_instantiation')):
return False
+
return True
-def valid_properties(properties):
+def valid_properties(properties, source):
"""
Check if properties is a valid dict and returns the properties
that will be sent to the track method, avoiding unexpected types.
@@ -508,14 +594,15 @@ def valid_properties(properties):
if properties is None:
return True, None, size
+
if not isinstance(properties, dict):
- _LOGGER.error('track: properties must be of type dictionary.')
+ _LOGGER.error('%s: properties must be of type dictionary.', source)
return False, None, 0
valid_properties = dict()
- for property, element in six.iteritems(properties):
- if not isinstance(property, six.string_types): # Exclude property if is not string
+ for property, element in properties.items():
+ if not isinstance(property, str): # Exclude property if is not string
continue
valid_properties[property] = None
@@ -524,24 +611,135 @@ def valid_properties(properties):
if element is None:
continue
- if not isinstance(element, six.string_types) and not isinstance(element, Number) \
- and not isinstance(element, bool):
- _LOGGER.warning('Property %s is of invalid type. Setting value to None', element)
+ if not _check_element_type(element):
+ _LOGGER.warning('%s: Property %s is of invalid type. Setting value to None', source, element)
element = None
valid_properties[property] = element
- if isinstance(element, six.string_types):
+ if isinstance(element, str):
size += len(element)
if size > MAX_PROPERTIES_LENGTH_BYTES:
_LOGGER.error(
- 'The maximum size allowed for the properties is 32768 bytes. ' +
- 'Current one is ' + str(size) + ' bytes. Event not queued'
- )
+ '%s: The maximum size allowed for the properties is 32768 bytes. ' +
+ 'Current one is ' + str(size) + ' bytes. Event not queued', source)
return False, None, size
if len(valid_properties.keys()) > 300:
- _LOGGER.warning('Event has more than 300 properties. Some of them will be trimmed' +
- ' when processed')
+ _LOGGER.warning('%s: Event has more than 300 properties. Some of them will be trimmed' +
+ ' when processed', source)
return True, valid_properties if len(valid_properties) else None, size
+
+def _check_element_type(element):
+ if not isinstance(element, str) and not isinstance(element, Number) \
+ and not isinstance(element, bool):
+ return False
+
+ return True
+
+def validate_pluggable_adapter(config):
+ """
+ Check if pluggable adapter contains the expected method signature
+
+ :param config: config parameters
+ :type config: Dict
+
+ :return: True if no issue found otherwise False
+ :rtype: bool
+ """
+ if config.get('storageType') != 'pluggable':
+ return True
+
+ if config.get('storageWrapper') is None:
+ _LOGGER.error("Expecting pluggable storage `wrapper` in options, but no valid wrapper instance was provided.")
+ return False
+
+ if config.get('storagePrefix') is not None:
+ if not isinstance(config.get('storagePrefix'), str):
+ _LOGGER.error("Pluggable storage prefix should be string type only")
+ return False
+
+ pluggable_adapter = config.get('storageWrapper')
+ if not isinstance(pluggable_adapter, object):
+ _LOGGER.error("Pluggable storage instance is not inherted from object class")
+ return False
+
+ expected_methods = {'get': 1, 'get_items': 1, 'get_many': 1, 'set': 2, 'push_items': 2,
+ 'delete': 1, 'increment': 2, 'decrement': 2, 'get_keys_by_prefix': 1,
+ 'get_many': 1, 'add_items' : 2, 'remove_items': 2, 'item_contains': 2,
+ 'get_items_count': 1, 'expire': 2}
+ methods = inspect.getmembers(pluggable_adapter, predicate=inspect.ismethod)
+ for exp_method in expected_methods:
+ method_found = False
+ get_method_args = set()
+ for method in methods:
+ if exp_method == method[0]:
+ method_found = True
+ get_method_args = inspect.signature(method[1]).parameters
+ break
+
+ if not method_found:
+ _LOGGER.error("Pluggable adapter does not have required method: %s" % exp_method)
+ return False
+
+ if len(get_method_args) < expected_methods[exp_method]:
+ _LOGGER.error("Pluggable adapter method %s has less than required arguments count: %s : " % (exp_method, len(get_method_args)))
+ return False
+
+ return True
+
+def validate_flag_sets(flag_sets, method_name):
+ """
+ Validate flag sets list
+ :param flag_set: list of flag sets
+ :type flag_set: list[str]
+ :returns: Sanitized and sorted flag sets
+ :rtype: list[str]
+ """
+ if not isinstance(flag_sets, list):
+ _LOGGER.warning("%s: flag sets parameter type should be list object, parameter is discarded", method_name)
+ return []
+
+ sanitized_flag_sets = set()
+ for flag_set in flag_sets:
+ if not _check_not_null(flag_set, 'flag set', method_name):
+ continue
+
+ if not _check_is_string(flag_set, 'flag set', method_name):
+ continue
+
+ flag_set = _remove_empty_spaces(flag_set, 'flag set', method_name)
+ flag_set = _convert_str_to_lower(flag_set, 'flag set', method_name)
+
+ if not _check_string_matches(flag_set, method_name, _FLAG_SETS_REGEX, 'a flag set', 50):
+ continue
+
+ sanitized_flag_sets.add(flag_set)
+
+ return list(sanitized_flag_sets)
+
+def validate_fallback_treatment(fallback_treatment):
+ if not isinstance(fallback_treatment, FallbackTreatment):
+ _LOGGER.warning("Config: Fallback treatment instance should be FallbackTreatment, input is discarded")
+ return False
+
+ if not isinstance(fallback_treatment.treatment, str):
+ _LOGGER.warning("Config: Fallback treatment value should be str type, input is discarded")
+ return False
+
+ if not validate_regex_name(fallback_treatment.treatment):
+ _LOGGER.warning("Config: Fallback treatment should match regex %s", _FALLBACK_TREATMENT_REGEX)
+ return False
+
+ if len(fallback_treatment.treatment) > _FALLBACK_TREATMENT_SIZE:
+ _LOGGER.warning("Config: Fallback treatment size should not exceed %s characters", _FALLBACK_TREATMENT_SIZE)
+ return False
+
+ return True
+
+def validate_regex_name(name):
+ if re.match(_FALLBACK_TREATMENT_REGEX, name) == None:
+ return False
+
+ return True
\ No newline at end of file
diff --git a/splitio/client/key.py b/splitio/client/key.py
index e50d43ba..a21e8574 100644
--- a/splitio/client/key.py
+++ b/splitio/client/key.py
@@ -1,6 +1,4 @@
"""A module for Split.io SDK API clients."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
class Key(object):
diff --git a/splitio/client/listener.py b/splitio/client/listener.py
index 1ab61e30..aa5e815a 100644
--- a/splitio/client/listener.py
+++ b/splitio/client/listener.py
@@ -2,17 +2,26 @@
import abc
-from six import add_metaclass
-from future.utils import raise_from
-
class ImpressionListenerException(Exception):
"""Custom Exception for Impression Listener."""
pass
+class ImpressionListener(object, metaclass=abc.ABCMeta):
+ """Impression listener interface."""
+
+ @abc.abstractmethod
+ def log_impression(self, data):
+ """
+ Accept and impression generated after an evaluation for custom user handling.
+
+ :param data: Impression data in a dictionary format.
+ :type data: dict
+ """
+ pass
-class ImpressionListenerWrapper(object): #pylint: disable=too-few-public-methods
+class ImpressionListenerBase(ImpressionListener): # pylint: disable=too-few-public-methods
"""
Impression listener safe-execution wrapper.
@@ -34,6 +43,35 @@ def __init__(self, impression_listener, sdk_metadata):
self.impression_listener = impression_listener
self._metadata = sdk_metadata
+ def _construct_data(self, impression, attributes):
+ data = {}
+ data['impression'] = impression
+ data['attributes'] = attributes
+ data['sdk-language-version'] = self._metadata.sdk_version
+ data['instance-id'] = self._metadata.instance_name
+ return data
+
+ def log_impression(self, impression, attributes=None):
+ pass
+
+class ImpressionListenerWrapper(ImpressionListenerBase): # pylint: disable=too-few-public-methods
+ """
+ Impression listener safe-execution wrapper.
+
+ Wrapper in charge of building all the data that client would require in case
+ of adding some logic with the treatment and impression results.
+ """
+ def __init__(self, impression_listener, sdk_metadata):
+ """
+ Class Constructor.
+
+ :param impression_listener: User provided impression listener.
+ :type impression_listener: ImpressionListener
+ :param sdk_metadata: SDK version, instance name & IP
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ """
+ ImpressionListenerBase.__init__(self, impression_listener, sdk_metadata)
+
def log_impression(self, impression, attributes=None):
"""
Send an impression to the user-provided listener.
@@ -43,29 +81,42 @@ def log_impression(self, impression, attributes=None):
:param attributes: User provided attributes when calling get_treatment(s)
:type attributes: dict
"""
- data = {}
- data['impression'] = impression
- data['attributes'] = attributes
- data['sdk-language-version'] = self._metadata.sdk_version
- data['instance-id'] = self._metadata.instance_name
+ data = self._construct_data(impression, attributes)
try:
self.impression_listener.log_impression(data)
- except Exception as exc: #pylint: disable=broad-except
- raise_from(
- ImpressionListenerException('Error in log_impression user\'s method is throwing exceptions'),
- exc
- )
-
-@add_metaclass(abc.ABCMeta) #pylint: disable=too-few-public-methods
-class ImpressionListener(object):
- """Impression listener interface."""
+ except Exception as exc: # pylint: disable=broad-except
+ raise ImpressionListenerException('Error in log_impression user\'s method is throwing exceptions') from exc
- @abc.abstractmethod
- def log_impression(self, data):
+
+class ImpressionListenerWrapperAsync(ImpressionListenerBase): # pylint: disable=too-few-public-methods
+ """
+ Impression listener safe-execution wrapper.
+
+ Wrapper in charge of building all the data that client would require in case
+ of adding some logic with the treatment and impression results.
+ """
+ def __init__(self, impression_listener, sdk_metadata):
"""
- Accept and impression generated after an evaluation for custom user handling.
+ Class Constructor.
- :param data: Impression data in a dictionary format.
- :type data: dict
+ :param impression_listener: User provided impression listener.
+ :type impression_listener: ImpressionListener
+ :param sdk_metadata: SDK version, instance name & IP
+ :type sdk_metadata: splitio.client.util.SdkMetadata
"""
- pass
+ ImpressionListenerBase.__init__(self, impression_listener, sdk_metadata)
+
+ async def log_impression(self, impression, attributes=None):
+ """
+ Send an impression to the user-provided listener.
+
+ :param impression: Imression data
+ :type impression: dict
+ :param attributes: User provided attributes when calling get_treatment(s)
+ :type attributes: dict
+ """
+ data = self._construct_data(impression, attributes)
+ try:
+ await self.impression_listener.log_impression(data)
+ except Exception as exc: # pylint: disable=broad-except
+ raise ImpressionListenerException('Error in log_impression user\'s method is throwing exceptions') from exc
diff --git a/splitio/client/localhost.py b/splitio/client/localhost.py
index 4e702223..4cc87cc8 100644
--- a/splitio/client/localhost.py
+++ b/splitio/client/localhost.py
@@ -1,16 +1,8 @@
"""Localhost client mocked components."""
-
-import itertools
import logging
import re
-from future.utils import raise_from
-import yaml
-
-from splitio.models import splits
-from splitio.storage import ImpressionStorage, EventStorage, TelemetryStorage
-from splitio.tasks import BaseSynchronizationTask
-from splitio.tasks.util import asynctask
+from splitio.storage import ImpressionStorage, EventStorage
_LEGACY_COMMENT_LINE_RE = re.compile(r'^#.*$')
_LEGACY_DEFINITION_LINE_RE = re.compile(r'^(?[\w_-]+)\s+(?P[\w_-]+)$')
@@ -22,11 +14,15 @@
class LocalhostImpressionsStorage(ImpressionStorage):
"""Impression storage that doesn't cache anything."""
- def put(self, *_, **__): #pylint: disable=arguments-differ
+ def put(self, *_, **__): # pylint: disable=arguments-differ
+ """Accept any arguments and do nothing."""
+ pass
+
+ def pop_many(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
- def pop_many(self, *_, **__): #pylint: disable=arguments-differ
+ def clear(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
@@ -34,239 +30,45 @@ def pop_many(self, *_, **__): #pylint: disable=arguments-differ
class LocalhostEventsStorage(EventStorage):
"""Impression storage that doesn't cache anything."""
- def put(self, *_, **__): #pylint: disable=arguments-differ
+ def put(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
- def pop_many(self, *_, **__): #pylint: disable=arguments-differ
+ def pop_many(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
+ def clear(self, *_, **__): # pylint: disable=arguments-differ
+ """Accept any arguments and do nothing."""
+ pass
-class LocalhostTelemetryStorage(TelemetryStorage):
+class LocalhostImpressionsStorageAsync(ImpressionStorage):
"""Impression storage that doesn't cache anything."""
- def inc_latency(self, *_, **__): #pylint: disable=arguments-differ
+ async def put(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
- def inc_counter(self, *_, **__): #pylint: disable=arguments-differ
+ async def pop_many(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
- def put_gauge(self, *_, **__): #pylint: disable=arguments-differ
+ async def clear(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
- def pop_latencies(self, *_, **__): #pylint: disable=arguments-differ
+
+class LocalhostEventsStorageAsync(EventStorage):
+ """Impression storage that doesn't cache anything."""
+
+ async def put(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
- def pop_counters(self, *_, **__): #pylint: disable=arguments-differ
+ async def pop_many(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
- def pop_gauges(self, *_, **__): #pylint: disable=arguments-differ
+ async def clear(self, *_, **__): # pylint: disable=arguments-differ
"""Accept any arguments and do nothing."""
pass
-
-
-class LocalhostSplitSynchronizationTask(BaseSynchronizationTask):
- """Split synchronization task that periodically checks the file and updated the splits."""
-
- def __init__(self, filename, storage, period, ready_event):
- """
- Class constructor.
-
- :param filename: File to parse splits from.
- :type filename: str
- :param storage: Split storage
- :type storage: splitio.storage.SplitStorage
- :param ready_event: Eevent to set when sync is done.
- :type ready_event: threading.Event
- """
- self._filename = filename
- self._ready_event = ready_event
- self._storage = storage
- self._period = period
- self._task = asynctask.AsyncTask(self._update_splits, period, self._on_start)
-
- def _on_start(self):
- """Sync splits and set event if successful."""
- self._update_splits()
- self._ready_event.set()
-
- @staticmethod
- def _make_split(split_name, conditions, configs=None):
- """
- Make a split with a single all_keys matcher.
-
- :param split_name: Name of the split.
- :type split_name: str.
- """
- return splits.from_raw({
- 'changeNumber': 123,
- 'trafficTypeName': 'user',
- 'name': split_name,
- 'trafficAllocation': 100,
- 'trafficAllocationSeed': 123456,
- 'seed': 321654,
- 'status': 'ACTIVE',
- 'killed': False,
- 'defaultTreatment': 'control',
- 'algo': 2,
- 'conditions': conditions,
- 'configurations': configs
- })
-
- @staticmethod
- def _make_all_keys_condition(treatment):
- return {
- 'partitions': [
- {'treatment': treatment, 'size': 100}
- ],
- 'conditionType': 'WHITELIST',
- 'label': 'some_other_label',
- 'matcherGroup': {
- 'matchers': [
- {
- 'matcherType': 'ALL_KEYS',
- 'negate': False,
- }
- ],
- 'combiner': 'AND'
- }
- }
-
- @staticmethod
- def _make_whitelist_condition(whitelist, treatment):
- return {
- 'partitions': [
- {'treatment': treatment, 'size': 100}
- ],
- 'conditionType': 'WHITELIST',
- 'label': 'some_other_label',
- 'matcherGroup': {
- 'matchers': [
- {
- 'matcherType': 'WHITELIST',
- 'negate': False,
- 'whitelistMatcherData': {
- 'whitelist': whitelist
- }
- }
- ],
- 'combiner': 'AND'
- }
- }
-
- @classmethod
- def _read_splits_from_legacy_file(cls, filename):
- """
- Parse a splits file and return a populated storage.
-
- :param filename: Path of the file containing mocked splits & treatments.
- :type filename: str.
-
- :return: Storage populataed with splits ready to be evaluated.
- :rtype: InMemorySplitStorage
- """
- to_return = {}
- try:
- with open(filename, 'r') as flo:
- for line in flo:
- if line.strip() == '' or _LEGACY_COMMENT_LINE_RE.match(line):
- continue
-
- definition_match = _LEGACY_DEFINITION_LINE_RE.match(line)
- if not definition_match:
- _LOGGER.warning(
- 'Invalid line on localhost environment split '
- 'definition. Line = %s',
- line
- )
- continue
-
- cond = cls._make_all_keys_condition(definition_match.group('treatment'))
- splt = cls._make_split(definition_match.group('feature'), [cond])
- to_return[splt.name] = splt
- return to_return
-
- except IOError as exc:
- raise_from(
- ValueError("Error parsing file %s. Make sure it's readable." % filename),
- exc
- )
-
- @classmethod
- def _read_splits_from_yaml_file(cls, filename):
- """
- Parse a splits file and return a populated storage.
-
- :param filename: Path of the file containing mocked splits & treatments.
- :type filename: str.
-
- :return: Storage populataed with splits ready to be evaluated.
- :rtype: InMemorySplitStorage
- """
- try:
- with open(filename, 'r') as flo:
- parsed = yaml.load(flo.read(), Loader=yaml.FullLoader)
-
- grouped_by_feature_name = itertools.groupby(
- sorted(parsed, key=lambda i: next(iter(i.keys()))),
- lambda i: next(iter(i.keys())))
-
- to_return = {}
- for (split_name, statements) in grouped_by_feature_name:
- configs = {}
- whitelist = []
- all_keys = []
- for statement in statements:
- data = next(iter(statement.values())) # grab the first (and only) value.
- if 'keys' in data:
- keys = data['keys'] if isinstance(data['keys'], list) else [data['keys']]
- whitelist.append(cls._make_whitelist_condition(keys, data['treatment']))
- else:
- all_keys.append(cls._make_all_keys_condition(data['treatment']))
- if 'config' in data:
- configs[data['treatment']] = data['config']
- to_return[split_name] = cls._make_split(split_name, whitelist + all_keys, configs)
- return to_return
-
- except IOError as exc:
- raise_from(
- ValueError("Error parsing file %s. Make sure it's readable." % filename),
- exc
- )
-
- def _update_splits(self):
- """Update splits in storage."""
- _LOGGER.info('Synchronizing splits now.')
- if self._filename.lower().endswith(('.yaml', '.yml')):
- fetched = self._read_splits_from_yaml_file(self._filename)
- else:
- fetched = self._read_splits_from_legacy_file(self._filename)
- to_delete = [name for name in self._storage.get_split_names() if name not in fetched.keys()]
- for split in fetched.values():
- self._storage.put(split)
-
- for split in to_delete:
- self._storage.remove(split)
-
- def is_running(self):
- """Return whether the task is running."""
- return self._task.running
-
- def start(self):
- """Start split synchronization."""
- self._task.start()
-
- def stop(self, event=None):
- """
- Stop task.
-
- :param stop_event: Event top set when the task finishes.
- :type stop_event: threading.Event.
- """
- self._task.stop(event)
diff --git a/splitio/client/manager.py b/splitio/client/manager.py
index 6c498abf..e621aeb1 100644
--- a/splitio/client/manager.py
+++ b/splitio/client/manager.py
@@ -1,11 +1,12 @@
"""A module for Split.io Managers."""
-from __future__ import absolute_import, division, print_function, unicode_literals
-
import logging
from . import input_validator
+_LOGGER = logging.getLogger(__name__)
+
+
class SplitManager(object):
"""Split Manager. Gives insights on data cached by splits."""
@@ -16,9 +17,9 @@ def __init__(self, factory):
:param factory: Factory containing all storage references.
:type factory: splitio.client.factory.SplitFactory
"""
- self._logger = logging.getLogger(self.__class__.__name__)
self._factory = factory
self._storage = factory._get_storage('splits') # pylint: disable=protected-access
+ self._telemetry_init_producer = factory._telemetry_init_producer
def split_names(self):
"""
@@ -28,11 +29,16 @@ def split_names(self):
:rtype: list
"""
if self._factory.destroyed:
- self._logger.error("Client has already been destroyed - no calls possible.")
+ _LOGGER.error("Client has already been destroyed - no calls possible.")
+ return []
+
+ if self._factory._waiting_fork():
+ _LOGGER.error("Client is not ready - no calls possible")
return []
if not self._factory.ready:
- self._logger.warning(
+ self._telemetry_init_producer.record_not_ready_usage()
+ _LOGGER.warning(
"split_names: The SDK is not ready, results may be incorrect. "
"Make sure to wait for SDK readiness before using this method"
)
@@ -47,11 +53,16 @@ def splits(self):
:rtype: list()
"""
if self._factory.destroyed:
- self._logger.error("Client has already been destroyed - no calls possible.")
+ _LOGGER.error("Client has already been destroyed - no calls possible.")
+ return []
+
+ if self._factory._waiting_fork():
+ _LOGGER.error("Client is not ready - no calls possible")
return []
if not self._factory.ready:
- self._logger.warning(
+ self._telemetry_init_producer.record_not_ready_usage()
+ _LOGGER.warning(
"splits: The SDK is not ready, results may be incorrect. "
"Make sure to wait for SDK readiness before using this method"
)
@@ -69,23 +80,119 @@ def split(self, feature_name):
:rtype: splitio.models.splits.SplitView
"""
if self._factory.destroyed:
- self._logger.error("Client has already been destroyed - no calls possible.")
- return []
+ _LOGGER.error("Client has already been destroyed - no calls possible.")
+ return None
+
+ if self._factory._waiting_fork():
+ _LOGGER.error("Client is not ready - no calls possible")
+ return None
- feature_name = input_validator.validate_manager_feature_name(
+ feature_flag = input_validator.validate_manager_feature_flag_name(
feature_name,
self._factory.ready,
self._storage
)
if not self._factory.ready:
- self._logger.warning(
+ self._telemetry_init_producer.record_not_ready_usage()
+ _LOGGER.warning(
"split: The SDK is not ready, results may be incorrect. "
"Make sure to wait for SDK readiness before using this method"
)
- if feature_name is None:
+ return feature_flag.to_split_view() if feature_flag is not None else None
+
+class SplitManagerAsync(object):
+ """Split Manager. Gives insights on data cached by splits."""
+
+ def __init__(self, factory):
+ """
+ Class constructor.
+
+ :param factory: Factory containing all storage references.
+ :type factory: splitio.client.factory.SplitFactory
+ """
+ self._factory = factory
+ self._storage = factory._get_storage('splits') # pylint: disable=protected-access
+ self._telemetry_init_producer = factory._telemetry_init_producer
+
+ async def split_names(self):
+ """
+ Get the name of fetched splits.
+
+ :return: A list of str
+ :rtype: list
+ """
+ if self._factory.destroyed:
+ _LOGGER.error("Client has already been destroyed - no calls possible.")
+ return []
+
+ if self._factory._waiting_fork():
+ _LOGGER.error("Client is not ready - no calls possible")
+ return []
+
+ if not self._factory.ready:
+ await self._telemetry_init_producer.record_not_ready_usage()
+ _LOGGER.warning(
+ "split_names: The SDK is not ready, results may be incorrect. "
+ "Make sure to wait for SDK readiness before using this method"
+ )
+
+ return await self._storage.get_split_names()
+
+ async def splits(self):
+ """
+ Get the fetched splits. Subclasses need to override this method.
+
+ :return: A List of SplitView.
+ :rtype: list()
+ """
+ if self._factory.destroyed:
+ _LOGGER.error("Client has already been destroyed - no calls possible.")
+ return []
+
+ if self._factory._waiting_fork():
+ _LOGGER.error("Client is not ready - no calls possible")
+ return []
+
+ if not self._factory.ready:
+ await self._telemetry_init_producer.record_not_ready_usage()
+ _LOGGER.warning(
+ "splits: The SDK is not ready, results may be incorrect. "
+ "Make sure to wait for SDK readiness before using this method"
+ )
+
+ return [split.to_split_view() for split in await self._storage.get_all_splits()]
+
+ async def split(self, feature_name):
+ """
+ Get the splitView of feature_name. Subclasses need to override this method.
+
+ :param feature_name: Name of the feture to retrieve.
+ :type feature_name: str
+
+ :return: The SplitView instance.
+ :rtype: splitio.models.splits.SplitView
+ """
+ if self._factory.destroyed:
+ _LOGGER.error("Client has already been destroyed - no calls possible.")
+ return None
+
+ if self._factory._waiting_fork():
+ _LOGGER.error("Client is not ready - no calls possible")
return None
- split = self._storage.get(feature_name)
- return split.to_split_view() if split is not None else None
+ feature_flag = await input_validator.validate_manager_feature_flag_name_async(
+ feature_name,
+ self._factory.ready,
+ self._storage
+ )
+
+ if not self._factory.ready:
+ await self._telemetry_init_producer.record_not_ready_usage()
+ _LOGGER.warning(
+ "split: The SDK is not ready, results may be incorrect. "
+ "Make sure to wait for SDK readiness before using this method"
+ )
+
+ return feature_flag.to_split_view() if feature_flag is not None else None
diff --git a/splitio/client/util.py b/splitio/client/util.py
index f37ffe6e..b5b693cb 100644
--- a/splitio/client/util.py
+++ b/splitio/client/util.py
@@ -1,6 +1,5 @@
"""General purpose SDK utilities."""
-import inspect
import socket
from collections import namedtuple
from splitio.version import __version__
@@ -31,6 +30,7 @@ def _get_hostname(ip_address):
def _get_hostname_and_ip(config):
if config.get('IPAddressesEnabled') is False:
return 'NA', 'NA'
+
ip_from_config = config.get('machineIp')
machine_from_config = config.get('machineName')
ip_address = ip_from_config if ip_from_config is not None else _get_ip()
@@ -50,4 +50,4 @@ def get_metadata(config):
"""
version = 'python-%s' % __version__
ip_address, hostname = _get_hostname_and_ip(config)
- return SdkMetadata(version, hostname, ip_address)
+ return SdkMetadata(version, hostname, ip_address)
\ No newline at end of file
diff --git a/splitio/engine/cache/__init__.py b/splitio/engine/cache/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/splitio/engine/cache/lru.py b/splitio/engine/cache/lru.py
new file mode 100644
index 00000000..2f720a35
--- /dev/null
+++ b/splitio/engine/cache/lru.py
@@ -0,0 +1,121 @@
+"""Simple test-and-set LRU Cache."""
+import threading
+
+
+DEFAULT_MAX_SIZE = 5000
+
+
+class SimpleLruCache(object): # pylint: disable=too-many-instance-attributes
+ """
+ Key/Value local memory cache. with expiration & LRU eviction.
+
+ LRU double-linked-list format:
+
+ {
+ 'key1'---------------------------------------------------------------
+ 'key2'------------------------------------ |
+ 'key3'------------ | |
+ } | | |
+ V V V
+ || MRU || -previous-> || X || ... -previous-> || LRU || -previous-> None
+ None <---next--- || node || <---next--- || node || ... <---next--- || node ||
+ """
+
+ class _Node(object): # pylint: disable=too-few-public-methods
+ """Links to previous an next items in the circular list."""
+
+ def __init__(self, key, value, previous_element, next_element):
+ """Class constructor."""
+ self.key = key # we also keep the key for O(1) access when removing the LRU.
+ self.value = value
+ self.previous = previous_element
+ self.next = next_element
+
+ def __str__(self):
+ """Return string representation."""
+ return '(%s, %s)' % (self.key, self.value)
+
+ def __init__(self, max_size=DEFAULT_MAX_SIZE):
+ """Class constructor."""
+ self._data = {}
+ self._lock = threading.Lock()
+ self._max_size = max_size
+ self._lru = None
+ self._mru = None
+
+ def test_and_set(self, key, value):
+ """
+ Set an item in the cache and return the previous value.
+
+ :param key: object key
+ :type args: object
+ :param value: object value
+ :type kwargs: object
+
+ :return: previous value if any. None otherwise
+ :rtype: object
+ """
+ with self._lock:
+ node = self._data.get(key)
+ to_return = node.value if node else None
+ if node is None:
+ node = SimpleLruCache._Node(key, value, None, None)
+ node = self._bubble_up(node)
+ self._data[key] = node
+ self._rollover()
+ return to_return
+
+ def clear(self):
+ """Clear the cache."""
+ self._data = {}
+ self._lru = None
+ self._mru = None
+
+ def _bubble_up(self, node):
+ """Send node to the top of the list (mark it as the MRU)."""
+ if node is None:
+ return None
+
+ # First item, just set lru & mru
+ if not self._data:
+ self._lru = node
+ self._mru = node
+ return node
+
+ # MRU, just return it
+ if node is self._mru:
+ return node
+
+ # LRU, update pointer and end-of-list
+ if node is self._lru:
+ self._lru = node.next
+ self._lru.previous = None
+
+ if node.previous is not None:
+ node.previous.next = node.next
+ if node.next is not None:
+ node.next.previous = node.previous
+
+ node.previous = self._mru
+ node.previous.next = node
+ node.next = None
+ self._mru = node
+
+ return node
+
+ def _rollover(self):
+ """Check we're within the size limit. Otherwise drop the LRU."""
+ if len(self._data) > self._max_size:
+ next_item = self._lru.next
+ del self._data[self._lru.key]
+ self._lru = next_item
+ self._lru.previous = None
+
+ def __str__(self):
+ """User friendly representation of cache."""
+ nodes = []
+ node = self._mru
+ while node is not None:
+ nodes.append('\t<%s: %s> -->' % (node.key, node.value))
+ node = node.previous
+ return '\n' + '\n'.join(nodes) + '\n'
diff --git a/splitio/engine/evaluator.py b/splitio/engine/evaluator.py
index 23bfe5c0..b47db5c5 100644
--- a/splitio/engine/evaluator.py
+++ b/splitio/engine/evaluator.py
@@ -1,210 +1,255 @@
"""Split evaluator module."""
import logging
-import six
-from splitio.models.grammar.condition import ConditionType
-from splitio.models.impressions import Label
+from collections import namedtuple
+from splitio.models.impressions import Label
+from splitio.models.grammar.condition import ConditionType
+from splitio.models.grammar.matchers.misc import DependencyMatcher
+from splitio.models.grammar.matchers.keys import UserDefinedSegmentMatcher
+from splitio.models.grammar.matchers import RuleBasedSegmentMatcher
+from splitio.models.grammar.matchers.prerequisites import PrerequisitesMatcher
+from splitio.models.rule_based_segments import SegmentType
+from splitio.optional.loaders import asyncio
CONTROL = 'control'
+EvaluationContext = namedtuple('EvaluationContext', ['flags', 'segment_memberships', 'rbs_segments'])
+
+_LOGGER = logging.getLogger(__name__)
class Evaluator(object): # pylint: disable=too-few-public-methods
"""Split Evaluator class."""
- def __init__(self, split_storage, segment_storage, splitter):
+ def __init__(self, splitter, fallback_treatment_calculator=None):
"""
Construct a Evaluator instance.
- :param split_storage: Split storage.
- :type split_storage: splitio.storage.SplitStorage
-
- :param split_storage: Storage storage.
- :type split_storage: splitio.storage.SegmentStorage
+ :param splitter: partition object.
+ :type splitter: splitio.engine.splitters.Splitters
"""
- self._logger = logging.getLogger(self.__class__.__name__)
- self._split_storage = split_storage
- self._segment_storage = segment_storage
self._splitter = splitter
+ self._fallback_treatment_calculator = fallback_treatment_calculator
- def _evaluate_treatment(self, feature, matching_key, bucketing_key, attributes, split):
+ def eval_many_with_context(self, key, bucketing, features, attrs, ctx):
"""
- Evaluate the user submitted data against a feature and return the resulting treatment.
-
- :param feature: The feature for which to get the treatment
- :type feature: str
-
- :param matching_key: The matching_key for which to get the treatment
- :type matching_key: str
-
- :param bucketing_key: The bucketing_key for which to get the treatment
- :type bucketing_key: str
-
- :param attributes: An optional dictionary of attributes
- :type attributes: dict
-
- :param split: Split object
- :type attributes: splitio.models.splits.Split|None
+ ...
+ """
+ # we can do a linear evaluation here, since all the dependencies are already fetched
+ return {
+ name: self.eval_with_context(key, bucketing, name, attrs, ctx)
+ for name in features
+ }
- :return: The treatment for the key and split
- :rtype: object
+ def eval_with_context(self, key, bucketing, feature_name, attrs, ctx):
+ """
+ ...
"""
label = ''
_treatment = CONTROL
_change_number = -1
- if split is None:
- self._logger.warning('Unknown or invalid feature: %s', feature)
+ feature = ctx.flags.get(feature_name)
+ if not feature:
+ _LOGGER.warning('Unknown or invalid feature: %s', feature)
label = Label.SPLIT_NOT_FOUND
+ fallback_treatment = self._fallback_treatment_calculator.resolve(feature_name, label)
+ label = fallback_treatment.label
+ _treatment = fallback_treatment.treatment
+ config = fallback_treatment.config
else:
- _change_number = split.change_number
- if split.killed:
+ _change_number = feature.change_number
+ if feature.killed:
label = Label.KILLED
- _treatment = split.default_treatment
+ _treatment = feature.default_treatment
else:
- treatment, label = self._get_treatment_for_split(
- split,
- matching_key,
- bucketing_key,
- attributes
- )
- if treatment is None:
- label = Label.NO_CONDITION_MATCHED
- _treatment = split.default_treatment
- else:
- _treatment = treatment
-
+ label, _treatment = self._check_prerequisites(feature, bucketing, key, attrs, ctx, label, _treatment)
+ label, _treatment = self._get_treatment(feature, bucketing, key, attrs, ctx, label, _treatment)
+ config = feature.get_configurations_for(_treatment)
+
return {
'treatment': _treatment,
- 'configurations': split.get_configurations_for(_treatment) if split else None,
+ 'configurations': config,
'impression': {
'label': label,
'change_number': _change_number
- }
+ },
+ 'impressions_disabled': feature.impressions_disabled if feature else None
}
-
- def evaluate_feature(self, feature, matching_key, bucketing_key, attributes=None):
+
+ def _get_treatment(self, feature, bucketing, key, attrs, ctx, label, _treatment):
+ if _treatment == CONTROL:
+ treatment, label = self._treatment_for_flag(feature, key, bucketing, attrs, ctx)
+ if treatment is None:
+ label = Label.NO_CONDITION_MATCHED
+ _treatment = feature.default_treatment
+ else:
+ _treatment = treatment
+
+ return label, _treatment
+
+ def _check_prerequisites(self, feature, bucketing, key, attrs, ctx, label, _treatment):
+ if feature.prerequisites is not None:
+ prerequisites_matcher = PrerequisitesMatcher(feature.prerequisites)
+ if not prerequisites_matcher.match(key, attrs, {
+ 'evaluator': self,
+ 'bucketing_key': bucketing,
+ 'ec': ctx}):
+ label = Label.PREREQUISITES_NOT_MET
+ _treatment = feature.default_treatment
+
+ return label, _treatment
+
+
+ def _treatment_for_flag(self, flag, key, bucketing, attributes, ctx):
"""
- Evaluate the user submitted data against a feature and return the resulting treatment.
-
- :param feature: The feature for which to get the treatment
- :type feature: str
+ ...
+ """
+ bucketing = bucketing if bucketing is not None else key
+ rollout = False
+ for condition in flag.conditions:
+ if not rollout and condition.condition_type == ConditionType.ROLLOUT:
+ if flag.traffic_allocation < 100:
+ bucket = self._splitter.get_bucket(bucketing, flag.traffic_allocation_seed, flag.algo)
+ if bucket > flag.traffic_allocation:
+ return flag.default_treatment, Label.NOT_IN_SPLIT
- :param matching_key: The matching_key for which to get the treatment
- :type matching_key: str
+ rollout = True
- :param bucketing_key: The bucketing_key for which to get the treatment
- :type bucketing_key: str
+ if condition.matches(key, attributes, {
+ 'evaluator': self,
+ 'bucketing_key': bucketing,
+ 'ec': ctx,
+ }):
- :param attributes: An optional dictionary of attributes
- :type attributes: dict
+ return self._splitter.get_treatment(bucketing, flag.seed, condition.partitions, flag.algo), condition.label
- :return: The treatment for the key and split
- :rtype: object
- """
- # Fetching Split definition
- split = self._split_storage.get(feature)
+ return flag.default_treatment, Label.NO_CONDITION_MATCHED
- # Calling evaluation
- evaluation = self._evaluate_treatment(feature, matching_key,
- bucketing_key, attributes, split)
+class EvaluationDataFactory:
- return evaluation
+ def __init__(self, split_storage, segment_storage, rbs_segment_storage):
+ self._flag_storage = split_storage
+ self._segment_storage = segment_storage
+ self._rbs_segment_storage = rbs_segment_storage
- def evaluate_features(self, features, matching_key, bucketing_key, attributes=None):
+ def context_for(self, key, feature_names):
"""
- Evaluate the user submitted data against multiple features and return the resulting
- treatment.
-
- :param features: The features for which to get the treatments
- :type feature: list(str)
-
- :param matching_key: The matching_key for which to get the treatment
- :type matching_key: str
-
- :param bucketing_key: The bucketing_key for which to get the treatment
+ Recursively iterate & fetch all data required to evaluate these flags.
+ :type features: list
:type bucketing_key: str
-
- :param attributes: An optional dictionary of attributes
:type attributes: dict
- :return: The treatments for the key and splits
- :rtype: object
+ :rtype: EvaluationContext
"""
- evaluations = dict()
-
- # Fetching Split definition
- splits = self._split_storage.fetch_many(features)
- # Calling evaluations
- for feature in features:
- split = splits[feature]
- evaluations[feature] = self._evaluate_treatment(feature, matching_key,
- bucketing_key, attributes, split)
- return evaluations
- return {
- feature: self._evaluate_treatment(feature, matching_key,
- bucketing_key, attributes, split)
- for (feature, split) in six.iteritems(self._split_storage.fetch_many(features))
- }
-
- def _get_treatment_for_split(self, split, matching_key, bucketing_key, attributes=None):
+ pending = set(feature_names)
+ pending_rbs = set()
+ splits = {}
+ rb_segments = {}
+ pending_memberships = set()
+ while pending or pending_rbs:
+ fetched = self._flag_storage.fetch_many(list(pending))
+ fetched_rbs = self._rbs_segment_storage.fetch_many(list(pending_rbs))
+ features, rbsegments, splits, rb_segments = update_objects(fetched, fetched_rbs, splits, rb_segments)
+ pending, pending_memberships, pending_rbs = get_pending_objects(features, splits, rbsegments, rb_segments, pending_memberships)
+
+ return EvaluationContext(
+ splits,
+ { segment: self._segment_storage.segment_contains(segment, key)
+ for segment in pending_memberships
+ },
+ rb_segments
+ )
+
+class AsyncEvaluationDataFactory:
+
+ def __init__(self, split_storage, segment_storage, rbs_segment_storage):
+ self._flag_storage = split_storage
+ self._segment_storage = segment_storage
+ self._rbs_segment_storage = rbs_segment_storage
+
+ async def context_for(self, key, feature_names):
"""
- Evaluate the feature considering the conditions.
-
- If there is a match, it will return the condition and the label.
- Otherwise, it will return (None, None)
-
- :param split: The split for which to get the treatment
- :type split: Split
-
- :param matching_key: The key for which to get the treatment
- :type key: str
-
- :param bucketing_key: The key for which to get the treatment
- :type key: str
-
- :param attributes: An optional dictionary of attributes
+ Recursively iterate & fetch all data required to evaluate these flags.
+ :type features: list
+ :type bucketing_key: str
:type attributes: dict
- :return: The resulting treatment and label
- :rtype: tuple
+ :rtype: EvaluationContext
"""
- if bucketing_key is None:
- bucketing_key = matching_key
-
- roll_out = False
-
- context = {
- 'segment_storage': self._segment_storage,
- 'evaluator': self,
- 'bucketing_key': bucketing_key
- }
-
- for condition in split.conditions:
- if (not roll_out and
- condition.condition_type == ConditionType.ROLLOUT):
- if split.traffic_allocation < 100:
- bucket = self._splitter.get_bucket(
- bucketing_key,
- split.traffic_allocation_seed,
- split.algo
- )
- if bucket > split.traffic_allocation:
- return split.default_treatment, Label.NOT_IN_SPLIT
- roll_out = True
-
- condition_matches = condition.matches(
- matching_key,
- attributes=attributes,
- context=context
- )
-
- if condition_matches:
- return self._splitter.get_treatment(
- bucketing_key,
- split.seed,
- condition.partitions,
- split.algo
- ), condition.label
-
- # No condition matches
- return None, None
+ pending = set(feature_names)
+ pending_rbs = set()
+ splits = {}
+ rb_segments = {}
+ pending_memberships = set()
+ while pending or pending_rbs:
+ fetched = await self._flag_storage.fetch_many(list(pending))
+ fetched_rbs = await self._rbs_segment_storage.fetch_many(list(pending_rbs))
+ features, rbsegments, splits, rb_segments = update_objects(fetched, fetched_rbs, splits, rb_segments)
+ pending, pending_memberships, pending_rbs = get_pending_objects(features, splits, rbsegments, rb_segments, pending_memberships)
+
+ segment_names = list(pending_memberships)
+ segment_memberships = await asyncio.gather(*[
+ self._segment_storage.segment_contains(segment, key)
+ for segment in segment_names
+ ])
+
+ return EvaluationContext(
+ splits,
+ dict(zip(segment_names, segment_memberships)),
+ rb_segments
+ )
+
+def get_dependencies(object):
+ """
+ :rtype: tuple(list, list)
+ """
+ feature_names = []
+ segment_names = []
+ rbs_segment_names = []
+ for condition in object.conditions:
+ for matcher in condition.matchers:
+ if isinstance(matcher,RuleBasedSegmentMatcher):
+ rbs_segment_names.append(matcher._rbs_segment_name)
+ if isinstance(matcher,UserDefinedSegmentMatcher):
+ segment_names.append(matcher._segment_name)
+ elif isinstance(matcher, DependencyMatcher):
+ feature_names.append(matcher._split_name)
+
+ return feature_names, segment_names, rbs_segment_names
+
+def filter_missing(features):
+ return {k: v for (k, v) in features.items() if v is not None}
+
+def get_pending_objects(features, splits, rbsegments, rb_segments, pending_memberships):
+ pending = set()
+ pending_rbs = set()
+ for feature in features.values():
+ cf, cs, crbs = get_dependencies(feature)
+ cf.extend(get_prerequisites(feature))
+ pending.update(filter(lambda f: f not in splits, cf))
+ pending_memberships.update(cs)
+ pending_rbs.update(filter(lambda f: f not in rb_segments, crbs))
+
+ for rb_segment in rbsegments.values():
+ cf, cs, crbs = get_dependencies(rb_segment)
+ pending.update(filter(lambda f: f not in splits, cf))
+ pending_memberships.update(cs)
+ for excluded_segment in rb_segment.excluded.get_excluded_segments():
+ if excluded_segment.type == SegmentType.STANDARD:
+ pending_memberships.add(excluded_segment.name)
+ else:
+ pending_rbs.update(filter(lambda f: f not in rb_segments, [excluded_segment.name]))
+ pending_rbs.update(filter(lambda f: f not in rb_segments, crbs))
+
+ return pending, pending_memberships, pending_rbs
+
+def update_objects(fetched, fetched_rbs, splits, rb_segments):
+ features = filter_missing(fetched)
+ rbsegments = filter_missing(fetched_rbs)
+ splits.update(features)
+ rb_segments.update(rbsegments)
+
+ return features, rbsegments, splits, rb_segments
+
+def get_prerequisites(feature):
+ return [prerequisite.feature_flag_name for prerequisite in feature.prerequisites]
diff --git a/splitio/engine/filters.py b/splitio/engine/filters.py
new file mode 100644
index 00000000..6c16be8f
--- /dev/null
+++ b/splitio/engine/filters.py
@@ -0,0 +1,85 @@
+import abc
+import threading
+
+from bloom_filter2 import BloomFilter as BloomFilter2
+
+class BaseFilter(object, metaclass=abc.ABCMeta):
+ """Impressions Filter interface."""
+
+ @abc.abstractmethod
+ def add(self, data):
+ """
+ Return a boolean flag
+
+ """
+ pass
+
+ @abc.abstractmethod
+ def contains(self, data):
+ """
+ Return a boolean flag
+
+ """
+ pass
+
+ @abc.abstractmethod
+ def clear(self):
+ """
+ No return
+
+ """
+ pass
+
+class BloomFilter(BaseFilter):
+ """Optimized mode strategy."""
+
+ def __init__(self, max_elements=5000, error_rate=0.01):
+ """
+ Construct a bloom filter instance.
+
+ :param max_element: maximum elements in the filter
+ :type string:
+
+ :param error_rate: error rate for the false positives, reduce it will consume more memory
+ :type numeric:
+ """
+ self._max_elements = max_elements
+ self._error_rate = error_rate
+ self._imps_bloom_filter = BloomFilter2(max_elements=self._max_elements, error_rate=self._error_rate)
+ self._lock = threading.RLock()
+
+ def add(self, data):
+ """
+ Add an item to the bloom filter instance.
+
+ :param data: element to be added
+ :type string:
+
+ :return: True if successful
+ :rtype: boolean
+ """
+ with self._lock:
+ self._imps_bloom_filter.add(data)
+ return data in self._imps_bloom_filter
+
+ def contains(self, data):
+ """
+ Check if an item exist in the bloom filter instance.
+
+ :param data: element to be checked
+ :type string:
+
+ :return: True if exist
+ :rtype: boolean
+ """
+ with self._lock:
+ return data in self._imps_bloom_filter
+
+ def clear(self):
+ """
+ Destroy the current filter instance and create new one.
+
+ """
+ with self._lock:
+ self._imps_bloom_filter.close()
+ self._imps_bloom_filter = BloomFilter2(max_elements=self._max_elements, error_rate=self._error_rate)
diff --git a/splitio/engine/hashfns/__init__.py b/splitio/engine/hashfns/__init__.py
index a04f51da..31c14a00 100644
--- a/splitio/engine/hashfns/__init__.py
+++ b/splitio/engine/hashfns/__init__.py
@@ -5,9 +5,6 @@
as well as the optional import (if installed) of a C compiled murmur hash
function with python bindings.
"""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
from splitio.models.splits import HashAlgorithm
from splitio.engine.hashfns import legacy
@@ -17,10 +14,15 @@
def _murmur_hash(key, seed):
return mmh3cffi.hash_str(key, seed)
+
+ def _murmur_hash128(key, seed):
+ return mmh3cffi.hash_str_128(key, seed)[0]
+
except ImportError:
# Fallback to interpreted python hash algoritm (slower)
- from splitio.engine.hashfns import murmur3py #pylint: disable=ungrouped-imports
- _murmur_hash = murmur3py.murmur32_py #pylint: disable=invalid-name
+ from splitio.engine.hashfns import murmur3py # pylint: disable=ungrouped-imports
+ _murmur_hash = murmur3py.murmur32_py # pylint: disable=invalid-name
+ _murmur_hash128 = lambda k, s: murmur3py.hash128_x64(k, s)[0] # pylint: disable=invalid-name
_HASH_ALGORITHMS = {
@@ -28,6 +30,8 @@ def _murmur_hash(key, seed):
HashAlgorithm.MURMUR: _murmur_hash
}
+murmur_128 = _murmur_hash128 # pylint: disable=invalid-name
+
def get_hash_fn(algo):
"""
diff --git a/splitio/engine/hashfns/legacy.py b/splitio/engine/hashfns/legacy.py
index 1eb4397c..bb461d4f 100644
--- a/splitio/engine/hashfns/legacy.py
+++ b/splitio/engine/hashfns/legacy.py
@@ -1,12 +1,11 @@
"""Legacy hash function module."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
def as_int32(value):
"""Handle overflow when working with 32 lower bits of 64 bit ints."""
if not -2147483649 <= value <= 2147483648:
return (value + 2147483648) % 4294967296 - 2147483648
+
return value
diff --git a/splitio/engine/hashfns/murmur3py.py b/splitio/engine/hashfns/murmur3py.py
index 346a0ace..858427c0 100644
--- a/splitio/engine/hashfns/murmur3py.py
+++ b/splitio/engine/hashfns/murmur3py.py
@@ -1,10 +1,5 @@
"""MurmurHash3 hash module."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
-from six.moves import range
-
def murmur32_py(key, seed=0x0):
"""
@@ -74,3 +69,133 @@ def fmix(current_hash):
unsigned_val = fmix(hash1 ^ length)
return unsigned_val
+
+
+def hash128_x64(key, seed):
+ """
+ Pure python implementation of murmurhash3-128.
+
+ borrowed from: https://github.com/wc-duck/pymmh3/blob/master/pymmh3.py
+ """
+ key = bytearray(key, 'utf-8')
+
+ def fmix(k):
+ k ^= k >> 33
+ k = (k * 0xff51afd7ed558ccd) & 0xFFFFFFFFFFFFFFFF
+ k ^= k >> 33
+ k = (k * 0xc4ceb9fe1a85ec53) & 0xFFFFFFFFFFFFFFFF
+ k ^= k >> 33
+ return k
+
+ length = len(key)
+ nblocks = int(length / 16)
+
+ h1 = seed
+ h2 = seed
+
+ c1 = 0x87c37b91114253d5
+ c2 = 0x4cf5ad432745937f
+
+ # body
+ for block_start in range(0, nblocks * 8, 8):
+ # ??? big endian?
+ k1 = key[2 * block_start + 7] << 56 | \
+ key[2 * block_start + 6] << 48 | \
+ key[2 * block_start + 5] << 40 | \
+ key[2 * block_start + 4] << 32 | \
+ key[2 * block_start + 3] << 24 | \
+ key[2 * block_start + 2] << 16 | \
+ key[2 * block_start + 1] << 8 | \
+ key[2 * block_start + 0]
+
+ k2 = key[2 * block_start + 15] << 56 | \
+ key[2 * block_start + 14] << 48 | \
+ key[2 * block_start + 13] << 40 | \
+ key[2 * block_start + 12] << 32 | \
+ key[2 * block_start + 11] << 24 | \
+ key[2 * block_start + 10] << 16 | \
+ key[2 * block_start + 9] << 8 | \
+ key[2 * block_start + 8]
+
+ k1 = (c1 * k1) & 0xFFFFFFFFFFFFFFFF
+ k1 = (k1 << 31 | k1 >> 33) & 0xFFFFFFFFFFFFFFFF # inlined ROTL64
+ k1 = (c2 * k1) & 0xFFFFFFFFFFFFFFFF
+ h1 ^= k1
+
+ h1 = (h1 << 27 | h1 >> 37) & 0xFFFFFFFFFFFFFFFF # inlined ROTL64
+ h1 = (h1 + h2) & 0xFFFFFFFFFFFFFFFF
+ h1 = (h1 * 5 + 0x52dce729) & 0xFFFFFFFFFFFFFFFF
+
+ k2 = (c2 * k2) & 0xFFFFFFFFFFFFFFFF
+ k2 = (k2 << 33 | k2 >> 31) & 0xFFFFFFFFFFFFFFFF # inlined ROTL64
+ k2 = (c1 * k2) & 0xFFFFFFFFFFFFFFFF
+ h2 ^= k2
+
+ h2 = (h2 << 31 | h2 >> 33) & 0xFFFFFFFFFFFFFFFF # inlined ROTL64
+ h2 = (h1 + h2) & 0xFFFFFFFFFFFFFFFF
+ h2 = (h2 * 5 + 0x38495ab5) & 0xFFFFFFFFFFFFFFFF
+
+ # tail
+ tail_index = nblocks * 16
+ k1 = 0
+ k2 = 0
+ tail_size = length & 15
+
+ if tail_size >= 15:
+ k2 ^= key[tail_index + 14] << 48
+ if tail_size >= 14:
+ k2 ^= key[tail_index + 13] << 40
+ if tail_size >= 13:
+ k2 ^= key[tail_index + 12] << 32
+ if tail_size >= 12:
+ k2 ^= key[tail_index + 11] << 24
+ if tail_size >= 11:
+ k2 ^= key[tail_index + 10] << 16
+ if tail_size >= 10:
+ k2 ^= key[tail_index + 9] << 8
+ if tail_size >= 9:
+ k2 ^= key[tail_index + 8]
+
+ if tail_size > 8:
+ k2 = (k2 * c2) & 0xFFFFFFFFFFFFFFFF
+ k2 = (k2 << 33 | k2 >> 31) & 0xFFFFFFFFFFFFFFFF # inlined ROTL64
+ k2 = (k2 * c1) & 0xFFFFFFFFFFFFFFFF
+ h2 ^= k2
+
+ if tail_size >= 8:
+ k1 ^= key[tail_index + 7] << 56
+ if tail_size >= 7:
+ k1 ^= key[tail_index + 6] << 48
+ if tail_size >= 6:
+ k1 ^= key[tail_index + 5] << 40
+ if tail_size >= 5:
+ k1 ^= key[tail_index + 4] << 32
+ if tail_size >= 4:
+ k1 ^= key[tail_index + 3] << 24
+ if tail_size >= 3:
+ k1 ^= key[tail_index + 2] << 16
+ if tail_size >= 2:
+ k1 ^= key[tail_index + 1] << 8
+ if tail_size >= 1:
+ k1 ^= key[tail_index + 0]
+
+ if tail_size > 0:
+ k1 = (k1 * c1) & 0xFFFFFFFFFFFFFFFF
+ k1 = (k1 << 31 | k1 >> 33) & 0xFFFFFFFFFFFFFFFF # inlined ROTL64
+ k1 = (k1 * c2) & 0xFFFFFFFFFFFFFFFF
+ h1 ^= k1
+
+ # finalization
+ h1 ^= length
+ h2 ^= length
+
+ h1 = (h1 + h2) & 0xFFFFFFFFFFFFFFFF
+ h2 = (h1 + h2) & 0xFFFFFFFFFFFFFFFF
+
+ h1 = fmix(h1)
+ h2 = fmix(h2)
+
+ h1 = (h1 + h2) & 0xFFFFFFFFFFFFFFFF
+ h2 = (h1 + h2) & 0xFFFFFFFFFFFFFFFF
+
+ return [h1, h2]
diff --git a/splitio/engine/impressions/__init__.py b/splitio/engine/impressions/__init__.py
new file mode 100644
index 00000000..fdd84211
--- /dev/null
+++ b/splitio/engine/impressions/__init__.py
@@ -0,0 +1,138 @@
+from splitio.engine.impressions.impressions import ImpressionsMode
+from splitio.engine.impressions.strategies import StrategyNoneMode, StrategyDebugMode, StrategyOptimizedMode
+from splitio.engine.impressions.adapters import InMemorySenderAdapter, RedisSenderAdapter, PluggableSenderAdapter, RedisSenderAdapterAsync, \
+ InMemorySenderAdapterAsync, PluggableSenderAdapterAsync
+from splitio.tasks.unique_keys_sync import UniqueKeysSyncTask, ClearFilterSyncTask, UniqueKeysSyncTaskAsync, ClearFilterSyncTaskAsync
+from splitio.sync.unique_keys import UniqueKeysSynchronizer, ClearFilterSynchronizer, UniqueKeysSynchronizerAsync, ClearFilterSynchronizerAsync
+from splitio.sync.impression import ImpressionsCountSynchronizer, ImpressionsCountSynchronizerAsync
+from splitio.tasks.impressions_sync import ImpressionsCountSyncTask, ImpressionsCountSyncTaskAsync
+
+def set_classes(storage_mode, impressions_mode, api_adapter, imp_counter, unique_keys_tracker, prefix=None):
+ """
+ Createe and return instances based on storage, impressions and threading mode
+
+ :param storage_mode: storage mode (MEMORY, REDIS or PLUGGABLE)
+ :type storage_mode: str
+ :param impressions_mode: impressions mode used
+ :type impressions_mode: splitio.engine.impressions.impressions.ImpressionsMode
+ :param api_adapter: api adapter instance(s)
+ :type impressions_mode: dict or splitio.storage.adapters.redis.RedisAdapter/splitio.storage.adapters.redis.RedisAdapterAsync
+ :param imp_counter: Impressions Counter instance
+ :type imp_counter: splitio.engine.impressions.Counter/splitio.engine.impressions.Counter
+ :param unique_keys_tracker: Unique Keys Tracker instance
+ :type unique_keys_tracker: splitio.engine.unique_keys_tracker.UniqueKeysTracker/splitio.engine.unique_keys_tracker.UniqueKeysTrackerAsync
+ :param prefix: Prefix used for redis or pluggable adapters
+ :type prefix: str
+
+ :return: tuple of classes instances.
+ :rtype: (splitio.sync.unique_keys.UniqueKeysSynchronizer,
+ splitio.sync.unique_keys.ClearFilterSynchronizer,
+ splitio.tasks.unique_keys_sync.UniqueKeysTask,
+ splitio.tasks.unique_keys_sync.ClearFilterTask,
+ splitio.sync.impressions_sync.ImpressionsCountSynchronizer,
+ splitio.tasks.impressions_sync.ImpressionsCountSyncTask,
+ splitio.engine.impressions.strategies.StrategyNoneMode/splitio.engine.impressions.strategies.StrategyDebugMode/splitio.engine.impressions.strategies.StrategyOptimizedMode)
+ """
+ unique_keys_synchronizer = None
+ clear_filter_sync = None
+ unique_keys_task = None
+ clear_filter_task = None
+ impressions_count_sync = None
+ impressions_count_task = None
+ sender_adapter = None
+ if storage_mode == 'PLUGGABLE':
+ sender_adapter = PluggableSenderAdapter(api_adapter, prefix)
+ api_telemetry_adapter = sender_adapter
+ api_impressions_adapter = sender_adapter
+ elif storage_mode == 'REDIS':
+ sender_adapter = RedisSenderAdapter(api_adapter)
+ api_telemetry_adapter = sender_adapter
+ api_impressions_adapter = sender_adapter
+ else:
+ api_telemetry_adapter = api_adapter['telemetry']
+ api_impressions_adapter = api_adapter['impressions']
+ sender_adapter = InMemorySenderAdapter(api_telemetry_adapter)
+
+ none_strategy = StrategyNoneMode()
+ unique_keys_synchronizer = UniqueKeysSynchronizer(sender_adapter, unique_keys_tracker)
+ unique_keys_task = UniqueKeysSyncTask(unique_keys_synchronizer.send_all)
+ clear_filter_sync = ClearFilterSynchronizer(unique_keys_tracker)
+ impressions_count_sync = ImpressionsCountSynchronizer(api_impressions_adapter, imp_counter)
+ impressions_count_task = ImpressionsCountSyncTask(impressions_count_sync.synchronize_counters)
+ clear_filter_task = ClearFilterSyncTask(clear_filter_sync.clear_all)
+ unique_keys_tracker.set_queue_full_hook(unique_keys_task.flush)
+
+ if impressions_mode == ImpressionsMode.NONE:
+ imp_strategy = StrategyNoneMode()
+ elif impressions_mode == ImpressionsMode.DEBUG:
+ imp_strategy = StrategyDebugMode()
+ else:
+ imp_strategy = StrategyOptimizedMode()
+
+ return unique_keys_synchronizer, clear_filter_sync, unique_keys_task, clear_filter_task, \
+ impressions_count_sync, impressions_count_task, imp_strategy, none_strategy
+
+def set_classes_async(storage_mode, impressions_mode, api_adapter, imp_counter, unique_keys_tracker, prefix=None):
+ """
+ Createe and return instances based on storage, impressions and async mode
+
+ :param storage_mode: storage mode (MEMORY, REDIS or PLUGGABLE)
+ :type storage_mode: str
+ :param impressions_mode: impressions mode used
+ :type impressions_mode: splitio.engine.impressions.impressions.ImpressionsMode
+ :param api_adapter: api adapter instance(s)
+ :type impressions_mode: dict or splitio.storage.adapters.redis.RedisAdapter/splitio.storage.adapters.redis.RedisAdapterAsync
+ :param imp_counter: Impressions Counter instance
+ :type imp_counter: splitio.engine.impressions.Counter/splitio.engine.impressions.Counter
+ :param unique_keys_tracker: Unique Keys Tracker instance
+ :type unique_keys_tracker: splitio.engine.unique_keys_tracker.UniqueKeysTracker/splitio.engine.unique_keys_tracker.UniqueKeysTrackerAsync
+ :param prefix: Prefix used for redis or pluggable adapters
+ :type prefix: str
+
+ :return: tuple of classes instances.
+ :rtype: (splitio.sync.unique_keys.UniqueKeysSynchronizerAsync,
+ splitio.sync.unique_keys.ClearFilterSynchronizerAsync,
+ splitio.tasks.unique_keys_sync.UniqueKeysTaskAsync,
+ splitio.tasks.unique_keys_sync.ClearFilterTaskAsync,
+ splitio.sync.impressions_sync.ImpressionsCountSynchronizerAsync,
+ splitio.tasks.impressions_sync.ImpressionsCountSyncTaskAsync,
+ splitio.engine.impressions.strategies.StrategyNoneMode/splitio.engine.impressions.strategies.StrategyDebugMode/splitio.engine.impressions.strategies.StrategyOptimizedMode)
+ """
+ unique_keys_synchronizer = None
+ clear_filter_sync = None
+ unique_keys_task = None
+ clear_filter_task = None
+ impressions_count_sync = None
+ impressions_count_task = None
+ sender_adapter = None
+ if storage_mode == 'PLUGGABLE':
+ sender_adapter = PluggableSenderAdapterAsync(api_adapter, prefix)
+ api_telemetry_adapter = sender_adapter
+ api_impressions_adapter = sender_adapter
+ elif storage_mode == 'REDIS':
+ sender_adapter = RedisSenderAdapterAsync(api_adapter)
+ api_telemetry_adapter = sender_adapter
+ api_impressions_adapter = sender_adapter
+ else:
+ api_telemetry_adapter = api_adapter['telemetry']
+ api_impressions_adapter = api_adapter['impressions']
+ sender_adapter = InMemorySenderAdapterAsync(api_telemetry_adapter)
+
+ none_strategy = StrategyNoneMode()
+ unique_keys_synchronizer = UniqueKeysSynchronizerAsync(sender_adapter, unique_keys_tracker)
+ unique_keys_task = UniqueKeysSyncTaskAsync(unique_keys_synchronizer.send_all)
+ clear_filter_sync = ClearFilterSynchronizerAsync(unique_keys_tracker)
+ impressions_count_sync = ImpressionsCountSynchronizerAsync(api_impressions_adapter, imp_counter)
+ impressions_count_task = ImpressionsCountSyncTaskAsync(impressions_count_sync.synchronize_counters)
+ clear_filter_task = ClearFilterSyncTaskAsync(clear_filter_sync.clear_all)
+ unique_keys_tracker.set_queue_full_hook(unique_keys_task.flush)
+
+ if impressions_mode == ImpressionsMode.NONE:
+ imp_strategy = StrategyNoneMode()
+ elif impressions_mode == ImpressionsMode.DEBUG:
+ imp_strategy = StrategyDebugMode()
+ else:
+ imp_strategy = StrategyOptimizedMode()
+
+ return unique_keys_synchronizer, clear_filter_sync, unique_keys_task, clear_filter_task, \
+ impressions_count_sync, impressions_count_task, imp_strategy, none_strategy
diff --git a/splitio/engine/impressions/adapters.py b/splitio/engine/impressions/adapters.py
new file mode 100644
index 00000000..d5e3dcaf
--- /dev/null
+++ b/splitio/engine/impressions/adapters.py
@@ -0,0 +1,397 @@
+import abc
+import logging
+import json
+
+from splitio.storage.adapters.redis import RedisAdapterException
+
+_LOGGER = logging.getLogger(__name__)
+_MTK_QUEUE_KEY = 'SPLITIO.uniquekeys'
+_MTK_KEY_DEFAULT_TTL = 3600
+_IMP_COUNT_QUEUE_KEY = 'SPLITIO.impressions.count'
+_IMP_COUNT_KEY_DEFAULT_TTL = 3600
+
+class ImpressionsSenderAdapter(object, metaclass=abc.ABCMeta):
+ """Impressions Sender Adapter interface."""
+
+ @abc.abstractmethod
+ def record_unique_keys(self, data):
+ """
+ No Return value
+
+ """
+ pass
+
+class InMemorySenderAdapterBase(ImpressionsSenderAdapter):
+ """In Memory Impressions Sender Adapter base class."""
+
+ def record_unique_keys(self, uniques):
+ """
+ post the unique keys to split back end.
+
+ :param uniques: unique keys disctionary
+ :type uniques: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ pass
+
+ def _uniques_formatter(self, uniques):
+ """
+ Format the unique keys dictionary array to a JSON body
+
+ :param uniques: unique keys disctionary
+ :type uniques: Dictionary {'feature1_flag': set(), 'feature2_flag': set(), .. }
+
+ :return: unique keys JSON array
+ :rtype: json
+ """
+ return [{'f': feature, 'ks': list(keys)} for feature, keys in uniques.items()]
+
+class InMemorySenderAdapter(InMemorySenderAdapterBase):
+ """In Memory Impressions Sender Adapter class."""
+
+ def __init__(self, telemtry_http_client):
+ """
+ Initialize In memory sender adapter instance
+
+ :param telemtry_http_client: instance of telemetry http api
+ :type telemtry_http_client: splitio.api.telemetry.TelemetryAPI
+ """
+ self._telemtry_http_client = telemtry_http_client
+
+ def record_unique_keys(self, uniques):
+ """
+ post the unique keys to split back end.
+
+ :param uniques: unique keys disctionary
+ :type uniques: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(uniques) == 0:
+ return
+
+ self._telemtry_http_client.record_unique_keys({'keys': self._uniques_formatter(uniques)})
+
+
+class InMemorySenderAdapterAsync(InMemorySenderAdapterBase):
+ """In Memory Impressions Sender Adapter class."""
+
+ def __init__(self, telemtry_http_client):
+ """
+ Initialize In memory sender adapter instance
+
+ :param telemtry_http_client: instance of telemetry http api
+ :type telemtry_http_client: splitio.api.telemetry.TelemetryAPI
+ """
+ self._telemtry_http_client = telemtry_http_client
+
+ async def record_unique_keys(self, uniques):
+ """
+ post the unique keys to split back end.
+
+ :param uniques: unique keys disctionary
+ :type uniques: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(uniques) == 0:
+ return
+
+ await self._telemtry_http_client.record_unique_keys({'keys': self._uniques_formatter(uniques)})
+
+
+class RedisSenderAdapter(ImpressionsSenderAdapter):
+ """Redis Impressions Sender Adapter class."""
+
+ def __init__(self, redis_client):
+ """
+ Initialize Redis sender adapter instance
+
+ :param telemtry_http_client: instance of telemetry http api
+ :type telemtry_http_client: splitio.api.telemetry.TelemetryAPI
+ """
+ self._redis_client = redis_client
+
+ def record_unique_keys(self, uniques):
+ """
+ post the unique keys to redis.
+
+ :param uniques: unique keys disctionary
+ :type uniques: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(uniques) == 0:
+ return
+
+ bulk_mtks = _uniques_formatter(uniques)
+ try:
+ inserted = self._redis_client.rpush(_MTK_QUEUE_KEY, *bulk_mtks)
+ self._expire_keys(_MTK_QUEUE_KEY, _MTK_KEY_DEFAULT_TTL, inserted, len(bulk_mtks))
+ return True
+
+ except RedisAdapterException:
+ _LOGGER.error('Something went wrong when trying to add mtks to redis')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ def flush_counters(self, to_send):
+ """
+ post the impression counters to redis.
+
+ :param to_send: unique keys disctionary
+ :type to_send: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(to_send) == 0:
+ return
+
+ try:
+ resulted = 0
+ counted = 0
+ pipe = self._redis_client.pipeline()
+ for pf_count in to_send:
+ pipe.hincrby(_IMP_COUNT_QUEUE_KEY, pf_count.feature + "::" + str(pf_count.timeframe), pf_count.count)
+ counted += pf_count.count
+ resulted = sum(pipe.execute())
+ self._expire_keys(_IMP_COUNT_QUEUE_KEY,
+ _IMP_COUNT_KEY_DEFAULT_TTL, resulted, counted)
+ return True
+
+ except RedisAdapterException:
+ _LOGGER.error('Something went wrong when trying to add counters to redis')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ def _expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ self._redis_client.expire(queue_key, key_default_ttl)
+
+
+class RedisSenderAdapterAsync(ImpressionsSenderAdapter):
+ """In Redis Impressions Sender Adapter async class."""
+
+ def __init__(self, redis_client):
+ """
+ Initialize Redis sender adapter instance
+
+ :param telemtry_http_client: instance of telemetry http api
+ :type telemtry_http_client: splitio.api.telemetry.TelemetryAPI
+ """
+ self._redis_client = redis_client
+
+ async def record_unique_keys(self, uniques):
+ """
+ post the unique keys to redis.
+
+ :param uniques: unique keys disctionary
+ :type uniques: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(uniques) == 0:
+ return True
+
+ bulk_mtks = _uniques_formatter(uniques)
+ try:
+ inserted = await self._redis_client.rpush(_MTK_QUEUE_KEY, *bulk_mtks)
+ await self._expire_keys(_MTK_QUEUE_KEY, _MTK_KEY_DEFAULT_TTL, inserted, len(bulk_mtks))
+ return True
+
+ except RedisAdapterException:
+ _LOGGER.error('Something went wrong when trying to add mtks to redis')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ async def flush_counters(self, to_send):
+ """
+ post the impression counters to redis.
+
+ :param to_send: unique keys disctionary
+ :type to_send: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(to_send) == 0:
+ return True
+
+ try:
+ resulted = 0
+ counted = 0
+ pipe = self._redis_client.pipeline()
+ for pf_count in to_send:
+ pipe.hincrby(_IMP_COUNT_QUEUE_KEY, pf_count.feature + "::" + str(pf_count.timeframe), pf_count.count)
+ counted += pf_count.count
+ resulted = sum(await pipe.execute())
+ await self._expire_keys(_IMP_COUNT_QUEUE_KEY,
+ _IMP_COUNT_KEY_DEFAULT_TTL, resulted, counted)
+ return True
+
+ except RedisAdapterException:
+ _LOGGER.error('Something went wrong when trying to add counters to redis')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ async def _expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ await self._redis_client.expire(queue_key, key_default_ttl)
+
+
+class PluggableSenderAdapter(ImpressionsSenderAdapter):
+ """Pluggable Impressions Sender Adapter class."""
+
+ def __init__(self, adapter_client, prefix=None):
+ """
+ Initialize pluggable sender adapter instance
+
+ :param telemtry_http_client: instance of telemetry http api
+ :type telemtry_http_client: splitio.api.telemetry.TelemetryAPI
+ """
+ self._adapter_client = adapter_client
+ self._prefix = ""
+ if prefix is not None:
+ self._prefix = prefix + "."
+
+ def record_unique_keys(self, uniques):
+ """
+ post the unique keys to storage.
+
+ :param uniques: unique keys disctionary
+ :type uniques: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(uniques) == 0:
+ return
+
+ bulk_mtks = _uniques_formatter(uniques)
+ try:
+ inserted = self._adapter_client.push_items(self._prefix + _MTK_QUEUE_KEY, *bulk_mtks)
+ self._expire_keys(self._prefix + _MTK_QUEUE_KEY, _MTK_KEY_DEFAULT_TTL, inserted, len(bulk_mtks))
+ return True
+
+ except RedisAdapterException:
+ _LOGGER.error('Something went wrong when trying to add mtks to storage adapter')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ def flush_counters(self, to_send):
+ """
+ post the impression counters to storage.
+
+ :param to_send: unique keys disctionary
+ :type to_send: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(to_send) == 0:
+ return
+
+ try:
+ resulted = 0
+ for pf_count in to_send:
+ key = self._prefix + _IMP_COUNT_QUEUE_KEY + "." + pf_count.feature + "::" + str(pf_count.timeframe)
+ resulted = self._adapter_client.increment(key, pf_count.count)
+ self._expire_keys(key, _IMP_COUNT_KEY_DEFAULT_TTL, resulted, pf_count.count)
+ return True
+
+ except RedisAdapterException:
+ _LOGGER.error('Something went wrong when trying to add counters to storage adapter')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ def _expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ self._adapter_client.expire(queue_key, key_default_ttl)
+
+
+class PluggableSenderAdapterAsync(ImpressionsSenderAdapter):
+ """Pluggable Impressions Sender Adapter class."""
+
+ def __init__(self, adapter_client, prefix=None):
+ """
+ Initialize pluggable sender adapter instance
+
+ :param telemtry_http_client: instance of telemetry http api
+ :type telemtry_http_client: splitio.api.telemetry.TelemetryAPI
+ """
+ self._adapter_client = adapter_client
+ self._prefix = ""
+ if prefix is not None:
+ self._prefix = prefix + "."
+
+ async def record_unique_keys(self, uniques):
+ """
+ post the unique keys to storage.
+
+ :param uniques: unique keys disctionary
+ :type uniques: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(uniques) == 0:
+ return True
+
+ bulk_mtks = _uniques_formatter(uniques)
+ try:
+ inserted = await self._adapter_client.push_items(self._prefix + _MTK_QUEUE_KEY, *bulk_mtks)
+ await self._expire_keys(self._prefix + _MTK_QUEUE_KEY, _MTK_KEY_DEFAULT_TTL, inserted, len(bulk_mtks))
+ return True
+
+ except RedisAdapterException:
+ _LOGGER.error('Something went wrong when trying to add mtks to storage adapter')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ async def flush_counters(self, to_send):
+ """
+ post the impression counters to storage.
+
+ :param to_send: unique keys disctionary
+ :type to_send: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+ """
+ if len(to_send) == 0:
+ return True
+
+ try:
+ resulted = 0
+ for pf_count in to_send:
+ key = self._prefix + _IMP_COUNT_QUEUE_KEY + "." + pf_count.feature + "::" + str(pf_count.timeframe)
+ resulted = await self._adapter_client.increment(key, pf_count.count)
+ await self._expire_keys(key, _IMP_COUNT_KEY_DEFAULT_TTL, resulted, pf_count.count)
+ return True
+
+ except RedisAdapterException:
+ _LOGGER.error('Something went wrong when trying to add counters to storage adapter')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ async def _expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ await self._adapter_client.expire(queue_key, key_default_ttl)
+
+def _uniques_formatter(uniques):
+ """
+ Format the unique keys dictionary array to a JSON body
+
+ :param uniques: unique keys disctionary
+ :type uniques: Dictionary {'feature_flag1': set(), 'feature_flag2': set(), .. }
+
+ :return: unique keys JSON array
+ :rtype: json
+ """
+ return [json.dumps({'f': feature, 'ks': list(keys)}) for feature, keys in uniques.items()]
diff --git a/splitio/engine/impressions/impressions.py b/splitio/engine/impressions/impressions.py
new file mode 100644
index 00000000..428fdd13
--- /dev/null
+++ b/splitio/engine/impressions/impressions.py
@@ -0,0 +1,55 @@
+"""Split evaluator module."""
+from enum import Enum
+
+class ImpressionsMode(Enum):
+ """Impressions tracking mode."""
+
+ OPTIMIZED = "OPTIMIZED"
+ DEBUG = "DEBUG"
+ NONE = "NONE"
+
+class Manager(object): # pylint:disable=too-few-public-methods
+ """Impression manager."""
+
+ def __init__(self, strategy, none_strategy, telemetry_runtime_producer):
+ """
+ Construct a manger to track and forward impressions to the queue.
+
+ :param listener: Optional impressions listener that will capture all seen impressions.
+ :type listener: splitio.client.listener.ImpressionListenerWrapper
+
+ :param strategy: Impressions stragetgy instance
+ :type strategy: (BaseStrategy)
+ """
+
+ self._strategy = strategy
+ self._none_strategy = none_strategy
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ def process_impressions(self, impressions_decorated):
+ """
+ Process impressions.
+
+ Impressions are analyzed to see if they've been seen before and counted.
+
+ :param impressions_decorated: List of impression objects with attributes
+ :type impressions_decorated: list[tuple[splitio.models.impression.ImpressionDecorated, dict]]
+
+ :return: processed and deduped impressions.
+ :rtype: tuple(list[tuple[splitio.models.impression.Impression, dict]], list(int))
+ """
+ for_listener_all = []
+ for_log_all = []
+ for_counter_all = []
+ for_unique_keys_tracker_all = []
+ for impression_decorated, att in impressions_decorated:
+ if impression_decorated.disabled:
+ for_log, for_listener, for_counter, for_unique_keys_tracker = self._none_strategy.process_impressions([(impression_decorated.Impression, att)])
+ else:
+ for_log, for_listener, for_counter, for_unique_keys_tracker = self._strategy.process_impressions([(impression_decorated.Impression, att)])
+ for_listener_all.extend(for_listener)
+ for_log_all.extend(for_log)
+ for_counter_all.extend(for_counter)
+ for_unique_keys_tracker_all.extend(for_unique_keys_tracker)
+
+ return for_log_all, len(impressions_decorated) - len(for_log_all), for_listener_all, for_counter_all, for_unique_keys_tracker_all
diff --git a/splitio/engine/impressions/manager.py b/splitio/engine/impressions/manager.py
new file mode 100644
index 00000000..56727fd0
--- /dev/null
+++ b/splitio/engine/impressions/manager.py
@@ -0,0 +1,155 @@
+import threading
+from collections import defaultdict, namedtuple
+
+from splitio.util.time import utctime_ms
+from splitio.models.impressions import Impression
+from splitio.engine.hashfns import murmur_128
+from splitio.engine.cache.lru import SimpleLruCache
+from splitio.optional.loaders import asyncio
+
+_TIME_INTERVAL_MS = 3600 * 1000 # one hour
+
+def truncate_time(timestamp_ms):
+ """
+ Truncate a timestamp in milliseconds to have hour granularity.
+
+ :param timestamp_ms: timestamp generated in the impression.
+ :type timestamp_ms: int
+
+ :returns: a timestamp with hour, min, seconds, and ms set to 0.
+ :rtype: int
+ """
+ return timestamp_ms - (timestamp_ms % _TIME_INTERVAL_MS)
+
+def truncate_impressions_time(imps, counter = None):
+ """
+ Process impressions.
+
+ Impressions are truncated based on time
+
+ :param impressions: List of impression objects with attributes
+ :type impressions: list[tuple[splitio.models.impression.Impression, dict]]
+
+ :returns: truncated list of impressions
+ :rtype: list[splitio.models.impression.Impression]
+ """
+ this_hour = truncate_time(utctime_ms())
+ return [imp for imp, _ in imps] if counter is None \
+ else [i for i, _ in imps if i.previous_time is None or i.previous_time < this_hour]
+
+
+class Hasher(object): # pylint:disable=too-few-public-methods
+ """Impression hasher."""
+
+ _PATTERN = "%s:%s:%s:%s:%d"
+
+ def __init__(self, hash_fn=murmur_128, seed=0):
+ """
+ Class constructor.
+
+ :param hash_fn: Hash function to apply (str, int) -> int
+ :type hash_fn: callable
+
+ :param seed: seed to be provided when hashing
+ :type seed: int
+ """
+ self._hash_fn = hash_fn
+ self._seed = seed
+
+ def _stringify(self, impression):
+ """
+ Stringify an impression.
+
+ :param impression: Impression to stringify using _PATTERN
+ :type impression: splitio.models.impressions.Impression
+
+ :returns: a string representation of the impression
+ :rtype: str
+ """
+ return self._PATTERN % (impression.matching_key if impression.matching_key else 'UNKNOWN',
+ impression.feature_name if impression.feature_name else 'UNKNOWN',
+ impression.treatment if impression.treatment else 'UNKNOWN',
+ impression.label if impression.label else 'UNKNOWN',
+ impression.change_number if impression.change_number else 0)
+
+ def process(self, impression):
+ """
+ Hash an impression.
+
+ :param impression: Impression to hash.
+ :type impression: splitio.models.impressions.Impression
+
+ :returns: a hash of the supplied impression's relevant fields.
+ :rtype: int
+ """
+ return self._hash_fn(self._stringify(impression), self._seed)
+
+
+class Observer(object): # pylint:disable=too-few-public-methods
+ """Observe impression and add a previous time if applicable."""
+
+ def __init__(self, size):
+ """Class constructor."""
+ self._hasher = Hasher()
+ self._cache = SimpleLruCache(size)
+
+ def test_and_set(self, impression):
+ """
+ Examine an impression to determine and set it's previous time accordingly.
+
+ :param impression: Impression to track
+ :type impression: splitio.models.impressions.Impression
+
+ :returns: Impression with populated previous time
+ :rtype: splitio.models.impressions.Impression
+ """
+ previous_time = self._cache.test_and_set(self._hasher.process(impression), impression.time)
+ return Impression(impression.matching_key,
+ impression.feature_name,
+ impression.treatment,
+ impression.label,
+ impression.change_number,
+ impression.bucketing_key,
+ impression.time,
+ previous_time)
+
+
+class Counter(object):
+ """Class that counts impressions per timeframe."""
+
+ CounterKey = namedtuple('Count', ['feature', 'timeframe'])
+ CountPerFeature = namedtuple('CountPerFeature', ['feature', 'timeframe', 'count'])
+
+ def __init__(self):
+ """Class constructor."""
+ self._data = defaultdict(lambda: 0)
+ self._lock = threading.Lock()
+
+ def track(self, impressions, inc=1):
+ """
+ Register N new impressions for a feature in a specific timeframe.
+
+ :param impressions: generated impressions
+ :type impressions: list[splitio.models.impressions.Impression]
+
+ :param inc: amount to increment (defaults to 1)
+ :type inc: int
+ """
+ keys = [Counter.CounterKey(i.feature_name, truncate_time(i.time)) for i in impressions]
+ with self._lock:
+ for key in keys:
+ self._data[key] += inc
+
+ def pop_all(self):
+ """
+ Clear and return all the counters currently stored.
+
+ :returns: List of count per feature/timeframe objects
+ :rtype: list[ImpressionCounter.CountPerFeature]
+ """
+ with self._lock:
+ old = self._data
+ self._data = defaultdict(lambda: 0)
+
+ return [Counter.CountPerFeature(k.feature, k.timeframe, v)
+ for (k, v) in old.items()]
diff --git a/splitio/engine/impressions/strategies.py b/splitio/engine/impressions/strategies.py
new file mode 100644
index 00000000..c2b0c565
--- /dev/null
+++ b/splitio/engine/impressions/strategies.py
@@ -0,0 +1,105 @@
+import abc
+
+from splitio.engine.impressions.manager import Observer, truncate_time
+from splitio.util.time import utctime_ms
+
+_IMPRESSION_OBSERVER_CACHE_SIZE = 500000
+
+class BaseStrategy(object, metaclass=abc.ABCMeta):
+ """Strategy interface."""
+
+ @abc.abstractmethod
+ def process_impressions(self):
+ """
+ Return a list(impressions) object
+
+ """
+ pass
+
+class StrategyDebugMode(BaseStrategy):
+ """Debug mode strategy."""
+
+ def __init__(self):
+ """
+ Construct a strategy instance for debug mode.
+
+ """
+ self._observer = Observer(_IMPRESSION_OBSERVER_CACHE_SIZE)
+
+ def process_impressions(self, impressions):
+ """
+ Process impressions.
+
+ Impressions are analyzed to see if they've been seen before.
+
+ :param impressions: List of impression objects with attributes
+ :type impressions: list[tuple[splitio.models.impression.Impression, dict]]
+
+ :returns: Tuple of to be stored, observed and counted impressions, and unique keys tuple
+ :rtype: list[tuple[splitio.models.impression.Impression, dict]], list[], list[], list[]
+ """
+ imps = []
+ for imp, attrs in impressions:
+ if imp.properties is not None:
+ imps.append((imp, attrs))
+ continue
+
+ imps.append((self._observer.test_and_set(imp), attrs))
+
+ return [i for i, _ in imps], imps, [], []
+
+class StrategyNoneMode(BaseStrategy):
+ """Debug mode strategy."""
+
+ def process_impressions(self, impressions):
+ """
+ Process impressions.
+
+ Impressions are analyzed to see if they've been seen before and counted.
+ Unique keys tracking are updated.
+
+ :param impressions: List of impression objects with attributes
+ :type impressions: list[tuple[splitio.models.impression.Impression, dict]]
+
+ :returns: Tuple of to be stored, observed and counted impressions, and unique keys tuple
+ :rtype: list[[], dict]], list[splitio.models.impression.Impression], list[splitio.models.impression.Impression], list[(str, str)]
+ """
+ counter_imps = [imp for imp, _ in impressions]
+ unique_keys_tracker = []
+ for i, _ in impressions:
+ unique_keys_tracker.append((i.matching_key, i.feature_name))
+ return [], impressions, counter_imps, unique_keys_tracker
+
+class StrategyOptimizedMode(BaseStrategy):
+ """Optimized mode strategy."""
+
+ def __init__(self):
+ """
+ Construct a strategy instance for optimized mode.
+
+ """
+ self._observer = Observer(_IMPRESSION_OBSERVER_CACHE_SIZE)
+
+ def process_impressions(self, impressions):
+ """
+ Process impressions.
+
+ Impressions are analyzed to see if they've been seen before and counted.
+
+ :param impressions: List of impression objects with attributes
+ :type impressions: list[tuple[splitio.models.impression.Impression, dict]]
+
+ :returns: Tuple of to be stored, observed and counted impressions, and unique keys tuple
+ :rtype: list[tuple[splitio.models.impression.Impression, dict]], list[splitio.models.impression.Impression], list[splitio.models.impression.Impression], list[]
+ """
+ imps = []
+ for imp, attrs in impressions:
+ if imp.properties is not None:
+ imps.append((imp, attrs))
+ continue
+
+ imps.append((self._observer.test_and_set(imp), attrs))
+
+ counter_imps = [imp for imp, _ in imps if imp.previous_time != None]
+ this_hour = truncate_time(utctime_ms())
+ return [i for i, _ in imps if i.previous_time is None or i.previous_time < this_hour], imps, counter_imps, []
diff --git a/splitio/engine/impressions/unique_keys_tracker.py b/splitio/engine/impressions/unique_keys_tracker.py
new file mode 100644
index 00000000..4e8da012
--- /dev/null
+++ b/splitio/engine/impressions/unique_keys_tracker.py
@@ -0,0 +1,168 @@
+import abc
+import threading
+import logging
+
+from splitio.engine.filters import BloomFilter
+from splitio.optional.loaders import asyncio
+
+_LOGGER = logging.getLogger(__name__)
+
+class UniqueKeysTrackerBase(object, metaclass=abc.ABCMeta):
+ """Unique Keys Tracker base class."""
+
+ @abc.abstractmethod
+ def track(self, key, feature_flag_name):
+ """
+ Return a boolean flag
+ """
+ pass
+
+ def set_queue_full_hook(self, hook):
+ """
+ Set a hook to be called when the queue is full.
+
+ :param h: Hook to be called when the queue is full
+ """
+ if callable(hook):
+ self._queue_full_hook = hook
+
+ def _add_or_update(self, feature_flag_name, key):
+ """
+ Add the feature_name+key to both bloom filter and dictionary.
+
+ :param feature_flag_name: feature flag name associated with the key
+ :type feature_flag_name: str
+ :param key: key to be added to MTK list
+ :type key: int
+ """
+ if feature_flag_name not in self._cache:
+ self._cache[feature_flag_name] = set()
+ self._cache[feature_flag_name].add(key)
+
+
+class UniqueKeysTracker(UniqueKeysTrackerBase):
+ """Unique Keys Tracker class."""
+
+ def __init__(self, cache_size=30000):
+ """
+ Initialize unique keys tracker instance
+
+ :param cache_size: The size of the unique keys dictionary
+ :type key: int
+ """
+ self._cache_size = cache_size
+ self._filter = BloomFilter(cache_size)
+ self._lock = threading.RLock()
+ self._cache = {}
+ self._queue_full_hook = None
+ self._current_cache_size = 0
+
+ def track(self, key, feature_flag_name):
+ """
+ Return a boolean flag
+
+ :param key: key to be added to MTK list
+ :type key: int
+ :param feature_flag_name: feature flag name associated with the key
+ :type feature_flag_name: str
+
+ :return: True if successful
+ :rtype: boolean
+ """
+ with self._lock:
+ if self._filter.contains(feature_flag_name+key):
+ return False
+
+ self._add_or_update(feature_flag_name, key)
+ self._filter.add(feature_flag_name+key)
+ self._current_cache_size += 1
+
+ if self._current_cache_size > self._cache_size:
+ _LOGGER.info(
+ 'Unique Keys queue is full, flushing the current queue now.'
+ )
+ if self._queue_full_hook is not None and callable(self._queue_full_hook):
+ _LOGGER.info('Calling hook.')
+ self._queue_full_hook()
+ return True
+
+ def clear_filter(self):
+ """
+ Delete the filter items
+
+ """
+ with self._lock:
+ self._filter.clear()
+
+ def get_cache_info_and_pop_all(self):
+ with self._lock:
+ temp_cach = self._cache
+ temp_cache_size = self._current_cache_size
+ self._cache = {}
+ self._current_cache_size = 0
+
+ return temp_cach, temp_cache_size
+
+
+class UniqueKeysTrackerAsync(UniqueKeysTrackerBase):
+ """Unique Keys Tracker async class."""
+
+ def __init__(self, cache_size=30000):
+ """
+ Initialize unique keys tracker instance
+
+ :param cache_size: The size of the unique keys dictionary
+ :type key: int
+ """
+ self._cache_size = cache_size
+ self._filter = BloomFilter(cache_size)
+ self._lock = asyncio.Lock()
+ self._cache = {}
+ self._queue_full_hook = None
+ self._current_cache_size = 0
+
+ async def track(self, key, feature_flag_name):
+ """
+ Return a boolean flag
+
+ :param key: key to be added to MTK list
+ :type key: int
+ :param feature_flag_name: feature flag name associated with the key
+ :type feature_flag_name: str
+
+ :return: True if successful
+ :rtype: boolean
+ """
+ async with self._lock:
+ if self._filter.contains(feature_flag_name+key):
+ return False
+
+ self._add_or_update(feature_flag_name, key)
+ self._filter.add(feature_flag_name+key)
+ self._current_cache_size += 1
+
+ if self._current_cache_size > self._cache_size:
+ _LOGGER.info(
+ 'Unique Keys queue is full, flushing the current queue now.'
+ )
+ if self._queue_full_hook is not None and callable(self._queue_full_hook):
+ _LOGGER.info('Calling hook.')
+ await self._queue_full_hook()
+ return True
+
+ async def clear_filter(self):
+ """
+ Delete the filter items
+
+ """
+ async with self._lock:
+ self._filter.clear()
+
+ async def get_cache_info_and_pop_all(self):
+ async with self._lock:
+ temp_cach = self._cache
+ temp_cache_size = self._current_cache_size
+ self._cache = {}
+ self._current_cache_size = 0
+
+ return temp_cach, temp_cache_size
\ No newline at end of file
diff --git a/splitio/engine/splitters.py b/splitio/engine/splitters.py
index c7e585bc..e11a2681 100644
--- a/splitio/engine/splitters.py
+++ b/splitio/engine/splitters.py
@@ -1,7 +1,4 @@
"""A module for implementation of the Splitter engine."""
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-
from splitio.engine.evaluator import CONTROL
from splitio.engine.hashfns import get_hash_fn
diff --git a/splitio/engine/telemetry.py b/splitio/engine/telemetry.py
new file mode 100644
index 00000000..f3bbba53
--- /dev/null
+++ b/splitio/engine/telemetry.py
@@ -0,0 +1,687 @@
+"""Telemetry engine classes."""
+import json
+import os
+
+import logging
+_LOGGER = logging.getLogger(__name__)
+
+from splitio.models.telemetry import CounterConstants, UpdateFromSSE
+
+class TelemetryStorageProducerBase(object):
+ """Telemetry storage producer base class."""
+
+ def get_telemetry_init_producer(self):
+ """get init producer instance."""
+ return self._telemetry_init_producer
+
+ def get_telemetry_evaluation_producer(self):
+ """get evaluation producer instance."""
+ return self._telemetry_evaluation_producer
+
+ def get_telemetry_runtime_producer(self):
+ """get runtime producer instance."""
+ return self._telemetry_runtime_producer
+
+
+class TelemetryStorageProducer(TelemetryStorageProducerBase):
+ """Telemetry storage producer class."""
+
+ def __init__(self, telemetry_storage):
+ """Initialize all producer classes."""
+ self._telemetry_init_producer = TelemetryInitProducer(telemetry_storage)
+ self._telemetry_evaluation_producer = TelemetryEvaluationProducer(telemetry_storage)
+ self._telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+
+
+class TelemetryStorageProducerAsync(TelemetryStorageProducerBase):
+ """Telemetry storage producer class."""
+
+ def __init__(self, telemetry_storage):
+ """Initialize all producer classes."""
+ self._telemetry_init_producer = TelemetryInitProducerAsync(telemetry_storage)
+ self._telemetry_evaluation_producer = TelemetryEvaluationProducerAsync(telemetry_storage)
+ self._telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+
+class TelemetryInitProducerBase(object):
+ """Telemetry init producer base class."""
+
+ def _get_app_worker_id(self):
+ try:
+ import uwsgi
+ return "uwsgi", str(uwsgi.worker_id())
+
+ except ModuleNotFoundError:
+ _LOGGER.debug("NO uwsgi")
+ pass
+
+ if 'gunicorn' in os.environ.get("SERVER_SOFTWARE", ""):
+ return "gunicorn", str(os.getpid())
+
+ else:
+ return None, None
+
+
+class TelemetryInitProducer(TelemetryInitProducerBase):
+ """Telemetry init producer class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ def record_config(self, config, extra_config, total_flag_sets=0, invalid_flag_sets=0):
+ """Record configurations."""
+ self._telemetry_storage.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
+ current_app, app_worker_id = self._get_app_worker_id()
+ if current_app is not None:
+ self.add_config_tag("initilization:" + current_app)
+ self.add_config_tag("worker:#" + app_worker_id)
+
+ def record_ready_time(self, ready_time):
+ """Record ready time."""
+ self._telemetry_storage.record_ready_time(ready_time)
+
+ def record_flag_sets(self, flag_sets):
+ """Record flag sets."""
+ self._telemetry_storage.record_flag_sets(flag_sets)
+
+ def record_invalid_flag_sets(self, flag_sets):
+ """Record invalid flag sets."""
+ self._telemetry_storage.record_invalid_flag_sets(flag_sets)
+
+ def record_bur_time_out(self):
+ """Record block until ready timeout."""
+ self._telemetry_storage.record_bur_time_out()
+
+ def record_not_ready_usage(self):
+ """record non-ready usage."""
+ self._telemetry_storage.record_not_ready_usage()
+
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ self._telemetry_storage.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+
+ def add_config_tag(self, tag):
+ """Record tag string."""
+ self._telemetry_storage.add_config_tag(tag)
+
+
+class TelemetryInitProducerAsync(TelemetryInitProducerBase):
+ """Telemetry init producer async class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ async def record_config(self, config, extra_config, total_flag_sets=0, invalid_flag_sets=0):
+ """Record configurations."""
+ await self._telemetry_storage.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
+ current_app, app_worker_id = self._get_app_worker_id()
+ if current_app is not None:
+ await self.add_config_tag("initilization:" + current_app)
+ await self.add_config_tag("worker:#" + app_worker_id)
+
+ async def record_ready_time(self, ready_time):
+ """Record ready time."""
+ await self._telemetry_storage.record_ready_time(ready_time)
+
+ async def record_flag_sets(self, flag_sets):
+ """Record flag sets."""
+ await self._telemetry_storage.record_flag_sets(flag_sets)
+
+ async def record_invalid_flag_sets(self, flag_sets):
+ """Record invalid flag sets."""
+ await self._telemetry_storage.record_invalid_flag_sets(flag_sets)
+
+ async def record_bur_time_out(self):
+ """Record block until ready timeout."""
+ await self._telemetry_storage.record_bur_time_out()
+
+ async def record_not_ready_usage(self):
+ """record non-ready usage."""
+ await self._telemetry_storage.record_not_ready_usage()
+
+ async def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ await self._telemetry_storage.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+
+ async def add_config_tag(self, tag):
+ """Record tag string."""
+ await self._telemetry_storage.add_config_tag(tag)
+
+
+class TelemetryEvaluationProducer(object):
+ """Telemetry evaluation producer class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ def record_latency(self, method, latency):
+ """Record method latency time."""
+ self._telemetry_storage.record_latency(method, latency)
+
+ def record_exception(self, method):
+ """Record method exception time."""
+ self._telemetry_storage.record_exception(method)
+
+
+class TelemetryEvaluationProducerAsync(object):
+ """Telemetry evaluation producer async class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ async def record_latency(self, method, latency):
+ """Record method latency time."""
+ await self._telemetry_storage.record_latency(method, latency)
+
+ async def record_exception(self, method):
+ """Record method exception time."""
+ await self._telemetry_storage.record_exception(method)
+
+
+class TelemetryRuntimeProducer(object):
+ """Telemetry runtime producer class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ def add_tag(self, tag):
+ """Record tag string."""
+ self._telemetry_storage.add_tag(tag)
+
+ def record_impression_stats(self, data_type, count):
+ """Record impressions stats."""
+ self._telemetry_storage.record_impression_stats(data_type, count)
+
+ def record_event_stats(self, data_type, count):
+ """Record events stats."""
+ self._telemetry_storage.record_event_stats(data_type, count)
+
+ def record_successful_sync(self, resource, time):
+ """Record successful sync."""
+ self._telemetry_storage.record_successful_sync(resource, time)
+
+ def record_sync_error(self, resource, status):
+ """Record sync error."""
+ self._telemetry_storage.record_sync_error(resource, status)
+
+ def record_sync_latency(self, resource, latency):
+ """Record latency time."""
+ self._telemetry_storage.record_sync_latency(resource, latency)
+
+ def record_auth_rejections(self):
+ """Record auth rejection."""
+ self._telemetry_storage.record_auth_rejections()
+
+ def record_token_refreshes(self):
+ """Record sse token refresh."""
+ self._telemetry_storage.record_token_refreshes()
+
+ def record_streaming_event(self, streaming_event):
+ """Record incoming streaming event."""
+ self._telemetry_storage.record_streaming_event(streaming_event)
+
+ def record_session_length(self, session):
+ """Record session length."""
+ self._telemetry_storage.record_session_length(session)
+
+ def record_update_from_sse(self, event):
+ """Record update from sse."""
+ self._telemetry_storage.record_update_from_sse(event)
+
+class TelemetryRuntimeProducerAsync(object):
+ """Telemetry runtime producer async class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ async def add_tag(self, tag):
+ """Record tag string."""
+ await self._telemetry_storage.add_tag(tag)
+
+ async def record_impression_stats(self, data_type, count):
+ """Record impressions stats."""
+ await self._telemetry_storage.record_impression_stats(data_type, count)
+
+ async def record_event_stats(self, data_type, count):
+ """Record events stats."""
+ await self._telemetry_storage.record_event_stats(data_type, count)
+
+ async def record_successful_sync(self, resource, time):
+ """Record successful sync."""
+ await self._telemetry_storage.record_successful_sync(resource, time)
+
+ async def record_sync_error(self, resource, status):
+ """Record sync error."""
+ await self._telemetry_storage.record_sync_error(resource, status)
+
+ async def record_sync_latency(self, resource, latency):
+ """Record latency time."""
+ await self._telemetry_storage.record_sync_latency(resource, latency)
+
+ async def record_auth_rejections(self):
+ """Record auth rejection."""
+ await self._telemetry_storage.record_auth_rejections()
+
+ async def record_token_refreshes(self):
+ """Record sse token refresh."""
+ await self._telemetry_storage.record_token_refreshes()
+
+ async def record_streaming_event(self, streaming_event):
+ """Record incoming streaming event."""
+ await self._telemetry_storage.record_streaming_event(streaming_event)
+
+ async def record_session_length(self, session):
+ """Record session length."""
+ await self._telemetry_storage.record_session_length(session)
+
+ async def record_update_from_sse(self, event):
+ """Record update from sse."""
+ await self._telemetry_storage.record_update_from_sse(event)
+
+class TelemetryStorageConsumerBase(object):
+ """Telemetry storage consumer base class."""
+
+ def get_telemetry_init_consumer(self):
+ """Get telemetry init instance"""
+ return self._telemetry_init_consumer
+
+ def get_telemetry_evaluation_consumer(self):
+ """Get telemetry evaluation instance"""
+ return self._telemetry_evaluation_consumer
+
+ def get_telemetry_runtime_consumer(self):
+ """Get telemetry runtime instance"""
+ return self._telemetry_runtime_consumer
+
+
+class TelemetryStorageConsumer(TelemetryStorageConsumerBase):
+ """Telemetry storage consumer class."""
+
+ def __init__(self, telemetry_storage):
+ """Initialize all consumer classes."""
+ self._telemetry_init_consumer = TelemetryInitConsumer(telemetry_storage)
+ self._telemetry_evaluation_consumer = TelemetryEvaluationConsumer(telemetry_storage)
+ self._telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+
+
+class TelemetryStorageConsumerAsync(TelemetryStorageConsumerBase):
+ """Telemetry storage consumer async class."""
+
+ def __init__(self, telemetry_storage):
+ """Initialize all consumer classes."""
+ self._telemetry_init_consumer = TelemetryInitConsumerAsync(telemetry_storage)
+ self._telemetry_evaluation_consumer = TelemetryEvaluationConsumerAsync(telemetry_storage)
+ self._telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+
+
+class TelemetryInitConsumer(object):
+ """Telemetry init consumer class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ def get_bur_time_outs(self):
+ """Get block until ready timeout."""
+ return self._telemetry_storage.get_bur_time_outs()
+
+ def get_not_ready_usage(self):
+ """Get none-ready usage."""
+ return self._telemetry_storage.get_not_ready_usage()
+
+ def get_config_stats(self):
+ """Get config stats."""
+ config_stats = self._telemetry_storage.get_config_stats()
+ config_stats.update({'t': self.pop_config_tags()})
+ return config_stats
+
+ def get_config_stats_to_json(self):
+ """Get config stats in json."""
+ return json.dumps(self._telemetry_storage.get_config_stats())
+
+ def pop_config_tags(self):
+ """Get and reset tags."""
+ return self._telemetry_storage.pop_config_tags()
+
+
+class TelemetryInitConsumerAsync(object):
+ """Telemetry init consumer class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ async def get_bur_time_outs(self):
+ """Get block until ready timeout."""
+ return await self._telemetry_storage.get_bur_time_outs()
+
+ async def get_not_ready_usage(self):
+ """Get none-ready usage."""
+ return await self._telemetry_storage.get_not_ready_usage()
+
+ async def get_config_stats(self):
+ """Get config stats."""
+ config_stats = await self._telemetry_storage.get_config_stats()
+ config_stats.update({'t': await self.pop_config_tags()})
+ return config_stats
+
+ async def get_config_stats_to_json(self):
+ """Get config stats in json."""
+ return json.dumps(await self._telemetry_storage.get_config_stats())
+
+ async def pop_config_tags(self):
+ """Get and reset tags."""
+ return await self._telemetry_storage.pop_config_tags()
+
+
+class TelemetryEvaluationConsumerBase(object):
+ """Telemetry evaluation consumer base class."""
+
+ def _to_json(self, exceptions, latencies):
+ """Return json formatted stats"""
+ return {
+ 'mE': {'t': exceptions['treatment'],
+ 'ts': exceptions['treatments'],
+ 'tc': exceptions['treatment_with_config'],
+ 'tcs': exceptions['treatments_with_config'],
+ 'tf': exceptions['treatments_by_flag_set'],
+ 'tfs': exceptions['treatments_by_flag_sets'],
+ 'tcf': exceptions['treatments_with_config_by_flag_set'],
+ 'tcfs': exceptions['treatments_with_config_by_flag_sets'],
+ 'tr': exceptions['track']
+ },
+ 'mL': {'t': latencies['treatment'],
+ 'ts': latencies['treatments'],
+ 'tc': latencies['treatment_with_config'],
+ 'tcs': latencies['treatments_with_config'],
+ 'tf': latencies['treatments_by_flag_set'],
+ 'tfs': latencies['treatments_by_flag_sets'],
+ 'tcf': latencies['treatments_with_config_by_flag_set'],
+ 'tcfs': latencies['treatments_with_config_by_flag_sets'],
+ 'tr': latencies['track']
+ },
+ }
+
+
+class TelemetryEvaluationConsumer(TelemetryEvaluationConsumerBase):
+ """Telemetry evaluation consumer class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ def pop_exceptions(self):
+ """Get and reset method exceptions."""
+ return self._telemetry_storage.pop_exceptions()
+
+ def pop_latencies(self):
+ """Get and reset eval latencies."""
+ return self._telemetry_storage.pop_latencies()
+
+ def pop_formatted_stats(self):
+ """
+ Get formatted and reset stats.
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ exceptions = self.pop_exceptions()['methodExceptions']
+ latencies = self.pop_latencies()['methodLatencies']
+ return self._to_json(exceptions, latencies)
+
+
+class TelemetryEvaluationConsumerAsync(TelemetryEvaluationConsumerBase):
+ """Telemetry evaluation consumer async class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ async def pop_exceptions(self):
+ """Get and reset method exceptions."""
+ return await self._telemetry_storage.pop_exceptions()
+
+ async def pop_latencies(self):
+ """Get and reset eval latencies."""
+ return await self._telemetry_storage.pop_latencies()
+
+ async def pop_formatted_stats(self):
+ """
+ Get formatted and reset stats.
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ exceptions = await self.pop_exceptions()
+ latencies = await self.pop_latencies()
+ return self._to_json(exceptions['methodExceptions'], latencies['methodLatencies'])
+
+
+class TelemetryRuntimeConsumerBase(object):
+ """Telemetry runtime consumer base class."""
+
+ def _last_synchronization_to_json(self, last_synchronization):
+ """
+ Get formatted last synchronization.
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ return {'sp': last_synchronization['split'],
+ 'se': last_synchronization['segment'],
+ 'im': last_synchronization['impression'],
+ 'ic': last_synchronization['impressionCount'],
+ 'ev': last_synchronization['event'],
+ 'te': last_synchronization['telemetry'],
+ 'to': last_synchronization['token']
+ }
+
+ def _http_errors_to_json(self, http_errors):
+ """
+ Get formatted http errors
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ return {'sp': http_errors['split'],
+ 'se': http_errors['segment'],
+ 'im': http_errors['impression'],
+ 'ic': http_errors['impressionCount'],
+ 'ev': http_errors['event'],
+ 'te': http_errors['telemetry'],
+ 'to': http_errors['token']
+ }
+
+ def _http_latencies_to_json(self, http_latencies):
+ """
+ Get formatted http latencies
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ return {'sp': http_latencies['split'],
+ 'se': http_latencies['segment'],
+ 'im': http_latencies['impression'],
+ 'ic': http_latencies['impressionCount'],
+ 'ev': http_latencies['event'],
+ 'te': http_latencies['telemetry'],
+ 'to': http_latencies['token']
+ }
+
+ def _streaming_events_to_json(self, streaming_events):
+ """
+ Get formatted http latencies
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ return [{'e': event['e'],
+ 'd': event['d'],
+ 't': event['t']
+ } for event in streaming_events['streamingEvents']]
+
+
+class TelemetryRuntimeConsumer(TelemetryRuntimeConsumerBase):
+ """Telemetry runtime consumer class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ def get_impressions_stats(self, type):
+ """Get impressions stats"""
+ return self._telemetry_storage.get_impressions_stats(type)
+
+ def get_events_stats(self, type):
+ """Get events stats"""
+ return self._telemetry_storage.get_events_stats(type)
+
+ def get_last_synchronization(self):
+ """Get last sync"""
+ return self._telemetry_storage.get_last_synchronization()['lastSynchronizations']
+
+ def pop_tags(self):
+ """Get and reset tags."""
+ return self._telemetry_storage.pop_tags()
+
+ def pop_http_errors(self):
+ """Get and reset http errors."""
+ return self._telemetry_storage.pop_http_errors()
+
+ def pop_http_latencies(self):
+ """Get and reset http latencies."""
+ return self._telemetry_storage.pop_http_latencies()
+
+ def pop_auth_rejections(self):
+ """Get and reset auth rejections."""
+ return self._telemetry_storage.pop_auth_rejections()
+
+ def pop_token_refreshes(self):
+ """Get and reset token refreshes."""
+ return self._telemetry_storage.pop_token_refreshes()
+
+ def pop_streaming_events(self):
+ """Get and reset streaming events."""
+ return self._telemetry_storage.pop_streaming_events()
+
+ def pop_update_from_sse(self, event):
+ """Get and reset update from sse."""
+ return self._telemetry_storage.pop_update_from_sse(event)
+
+ def get_session_length(self):
+ """Get session length"""
+ return self._telemetry_storage.get_session_length()
+
+ def pop_formatted_stats(self):
+ """
+ Get formatted and reset stats.
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ last_synchronization = self.get_last_synchronization()
+ http_errors = self.pop_http_errors()['httpErrors']
+ http_latencies = self.pop_http_latencies()['httpLatencies']
+
+ return {
+ 'iQ': self.get_impressions_stats(CounterConstants.IMPRESSIONS_QUEUED),
+ 'iDe': self.get_impressions_stats(CounterConstants.IMPRESSIONS_DEDUPED),
+ 'iDr': self.get_impressions_stats(CounterConstants.IMPRESSIONS_DROPPED),
+ 'eQ': self.get_events_stats(CounterConstants.EVENTS_QUEUED),
+ 'eD': self.get_events_stats(CounterConstants.EVENTS_DROPPED),
+ 'lS': self._last_synchronization_to_json(last_synchronization),
+ 'ufs': {event.value: self.pop_update_from_sse(event) for event in UpdateFromSSE},
+ 't': self.pop_tags(),
+ 'hE': self._http_errors_to_json(http_errors),
+ 'hL': self._http_latencies_to_json(http_latencies),
+ 'aR': self.pop_auth_rejections(),
+ 'tR': self.pop_token_refreshes(),
+ 'sE': self._streaming_events_to_json(self.pop_streaming_events()),
+ 'sL': self.get_session_length()
+ }
+
+
+class TelemetryRuntimeConsumerAsync(TelemetryRuntimeConsumerBase):
+ """Telemetry runtime consumer class."""
+
+ def __init__(self, telemetry_storage):
+ """Constructor."""
+ self._telemetry_storage = telemetry_storage
+
+ async def get_impressions_stats(self, type):
+ """Get impressions stats"""
+ return await self._telemetry_storage.get_impressions_stats(type)
+
+ async def get_events_stats(self, type):
+ """Get events stats"""
+ return await self._telemetry_storage.get_events_stats(type)
+
+ async def get_last_synchronization(self):
+ """Get last sync"""
+ last_sync = await self._telemetry_storage.get_last_synchronization()
+ return last_sync['lastSynchronizations']
+
+ async def pop_tags(self):
+ """Get and reset tags."""
+ return await self._telemetry_storage.pop_tags()
+
+ async def pop_http_errors(self):
+ """Get and reset http errors."""
+ return await self._telemetry_storage.pop_http_errors()
+
+ async def pop_http_latencies(self):
+ """Get and reset http latencies."""
+ return await self._telemetry_storage.pop_http_latencies()
+
+ async def pop_auth_rejections(self):
+ """Get and reset auth rejections."""
+ return await self._telemetry_storage.pop_auth_rejections()
+
+ async def pop_token_refreshes(self):
+ """Get and reset token refreshes."""
+ return await self._telemetry_storage.pop_token_refreshes()
+
+ async def pop_streaming_events(self):
+ """Get and reset streaming events."""
+ return await self._telemetry_storage.pop_streaming_events()
+
+ async def pop_update_from_sse(self, event):
+ """Get and reset update from sse."""
+ return await self._telemetry_storage.pop_update_from_sse(event)
+
+ async def get_session_length(self):
+ """Get session length"""
+ return await self._telemetry_storage.get_session_length()
+
+ async def pop_formatted_stats(self):
+ """
+ Get formatted and reset stats.
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ last_synchronization = await self.get_last_synchronization()
+ http_errors = await self.pop_http_errors()
+ http_latencies = await self.pop_http_latencies()
+ # TODO: if ufs value is too large, use gather to fetch events instead of serial style.
+ return {
+ 'iQ': await self.get_impressions_stats(CounterConstants.IMPRESSIONS_QUEUED),
+ 'iDe': await self.get_impressions_stats(CounterConstants.IMPRESSIONS_DEDUPED),
+ 'iDr': await self.get_impressions_stats(CounterConstants.IMPRESSIONS_DROPPED),
+ 'eQ': await self.get_events_stats(CounterConstants.EVENTS_QUEUED),
+ 'eD': await self.get_events_stats(CounterConstants.EVENTS_DROPPED),
+ 'ufs': {event.value: await self.pop_update_from_sse(event) for event in UpdateFromSSE},
+ 'lS': self._last_synchronization_to_json(last_synchronization),
+ 't': await self.pop_tags(),
+ 'hE': self._http_errors_to_json(http_errors['httpErrors']),
+ 'hL': self._http_latencies_to_json(http_latencies['httpLatencies']),
+ 'aR': await self.pop_auth_rejections(),
+ 'tR': await self.pop_token_refreshes(),
+ 'sE': self._streaming_events_to_json(await self.pop_streaming_events()),
+ 'sL': await self.get_session_length()
+ }
diff --git a/splitio/events/__init__.py b/splitio/events/__init__.py
new file mode 100644
index 00000000..cee5543e
--- /dev/null
+++ b/splitio/events/__init__.py
@@ -0,0 +1,25 @@
+"""Base storage interfaces."""
+import abc
+
+class EventsManagerInterface(object, metaclass=abc.ABCMeta):
+ """Events manager interface implemented as an abstract class."""
+
+ @abc.abstractmethod
+ def register(self, sdk_event, event_handler):
+ pass
+
+ @abc.abstractmethod
+ def unregister(self, sdk_event):
+ pass
+
+ @abc.abstractmethod
+ def notify_internal_event(self, sdk_internal_event, event_metadata):
+ pass
+
+
+class EventsDeliveryInterface(object, metaclass=abc.ABCMeta):
+ """Events Delivery interface."""
+
+ @abc.abstractmethod
+ def deliver(self, sdk_event, event_metadata, event_handler):
+ pass
\ No newline at end of file
diff --git a/splitio/events/events_delivery.py b/splitio/events/events_delivery.py
new file mode 100644
index 00000000..a582d8a0
--- /dev/null
+++ b/splitio/events/events_delivery.py
@@ -0,0 +1,28 @@
+"""Events Manager."""
+import logging
+
+from splitio.events import EventsDeliveryInterface
+
+_LOGGER = logging.getLogger(__name__)
+
+class EventsDelivery(EventsDeliveryInterface):
+ """Events Manager class."""
+
+ def __init__(self):
+ """
+ Construct Events Manager instance.
+ """
+
+ def deliver(self, sdk_event, event_metadata, event_handler):
+ try:
+ event_handler(event_metadata)
+ except Exception as ex:
+ _LOGGER.error("Exception when calling handler for Sdk Event %s", sdk_event)
+ _LOGGER.error(ex)
+
+ async def deliver_async(self, sdk_event, event_metadata, event_handler):
+ try:
+ await event_handler(event_metadata)
+ except Exception as ex:
+ _LOGGER.error("Exception when calling handler for Sdk Event %s", sdk_event)
+ _LOGGER.error(ex)
diff --git a/splitio/events/events_manager.py b/splitio/events/events_manager.py
new file mode 100644
index 00000000..de8206f1
--- /dev/null
+++ b/splitio/events/events_manager.py
@@ -0,0 +1,251 @@
+"""Events Manager."""
+import threading
+import logging
+from collections import namedtuple
+from splitio.optional.loaders import asyncio
+
+from splitio.events import EventsManagerInterface
+from splitio.models.events import SdkEvent
+
+_LOGGER = logging.getLogger(__name__)
+
+ValidSdkEvent = namedtuple('ValidSdkEvent', ['sdk_event', 'valid'])
+ActiveSubscriptions = namedtuple('ActiveSubscriptions', ['triggered', 'handler'])
+
+class EventsManagerBase(EventsManagerInterface):
+ """Events Manager class."""
+
+ def __init__(self, events_configurations, events_delivery):
+ """
+ Construct Events Manager instance.
+ """
+ self._active_subscriptions = {}
+ self._internal_events_status = {}
+ self._events_delivery = events_delivery
+ self._manager_config = events_configurations
+
+ def register(self, sdk_event, event_handler):
+ # Implement in child class
+ pass
+
+ def unregister(self, sdk_event):
+ # Implement in child class
+ pass
+
+ def notify_internal_event(self, sdk_internal_event, event_metadata):
+ # Implement in child class
+ pass
+
+ def destroy(self):
+ # Implement in child class
+ pass
+
+ def _event_already_triggered(self, sdk_event):
+ if self._active_subscriptions.get(sdk_event) != None:
+ return self._active_subscriptions.get(sdk_event).triggered
+
+ return False
+
+ def _get_internal_event_status(self, sdk_internal_event):
+ if self._internal_events_status.get(sdk_internal_event) != None:
+ return self._internal_events_status[sdk_internal_event]
+
+ return False
+
+ def _update_internal_event_status(self, sdk_internal_event, status):
+ self._internal_events_status[sdk_internal_event] = status
+
+ def _set_sdk_event_triggered(self, sdk_event):
+ if self._active_subscriptions.get(sdk_event) == None:
+ return
+
+ if self._active_subscriptions.get(sdk_event).triggered == True:
+ return
+
+ self._active_subscriptions[sdk_event] = self._active_subscriptions[sdk_event]._replace(triggered = True)
+
+ def _get_event_handler(self, sdk_event):
+ if self._active_subscriptions.get(sdk_event) == None:
+ return None
+
+ return self._active_subscriptions.get(sdk_event).handler
+
+ def _get_sdk_event_if_applicable(self, sdk_internal_event):
+ final_sdk_event = ValidSdkEvent(None, False)
+
+ events_to_fire = []
+ require_any_sdk_event = self._check_require_any(sdk_internal_event)
+ if require_any_sdk_event.valid:
+ if (not self._event_already_triggered(require_any_sdk_event.sdk_event) and
+ self._execution_limit(require_any_sdk_event.sdk_event) == 1) or \
+ self._execution_limit(require_any_sdk_event.sdk_event) == -1:
+ final_sdk_event = final_sdk_event._replace(sdk_event = require_any_sdk_event.sdk_event,
+ valid = self._check_prerequisites(require_any_sdk_event.sdk_event) and \
+ self._check_suppressed_by(require_any_sdk_event.sdk_event))
+
+ if final_sdk_event.valid:
+ events_to_fire.append(final_sdk_event.sdk_event)
+
+ [events_to_fire.append(sdk_event) for sdk_event in self._check_require_all()]
+
+ return events_to_fire
+
+ def _check_require_all(self):
+ events = []
+ for require_name, require_value in self._manager_config.require_all.items():
+ final_status = True
+ for val in require_value:
+ final_status &= self._get_internal_event_status(val)
+
+ if final_status and \
+ self._check_prerequisites(require_name) and \
+ ((not self._event_already_triggered(require_name) and
+ self._execution_limit(require_name) == 1) or \
+ self._execution_limit(require_name) == -1) and \
+ len(require_value) > 0:
+
+ events.append(require_name)
+
+ return events
+
+ def _check_prerequisites(self, sdk_event):
+ for name, value in self._manager_config.prerequisites.items():
+ for val in value:
+ if name == sdk_event and not self._event_already_triggered(val):
+ return False
+
+ return True
+
+ def _check_suppressed_by(self, sdk_event):
+ for name, value in self._manager_config.suppressed_by.items():
+ for val in value:
+ if name == sdk_event and self._event_already_triggered(val):
+ return False
+
+ return True
+
+ def _execution_limit(self, sdk_event):
+ limit = self._manager_config.execution_limits.get(sdk_event)
+ if limit == None:
+ return -1
+
+ return limit
+
+ def _check_require_any(self, sdk_internal_event):
+ valid_sdk_event = ValidSdkEvent(None, False)
+ for name, val in self._manager_config.require_any.items():
+ if sdk_internal_event in val:
+ valid_sdk_event = valid_sdk_event._replace(valid = True, sdk_event = name)
+ return valid_sdk_event
+
+ return valid_sdk_event
+
+class EventsManager(EventsManagerBase):
+ """Events Manager class."""
+
+ def __init__(self, events_configurations, events_delivery):
+ """
+ Construct Events Manager instance.
+ """
+ EventsManagerBase.__init__(self, events_configurations, events_delivery)
+ self._lock = threading.RLock()
+
+ def register(self, sdk_event, event_handler):
+ if self._active_subscriptions.get(sdk_event) != None and self._get_event_handler(sdk_event) != None:
+ return
+
+ with self._lock:
+ # SDK ready already fired
+ if sdk_event == SdkEvent.SDK_READY and self._event_already_triggered(sdk_event):
+ self._active_subscriptions[sdk_event] = ActiveSubscriptions(True, event_handler)
+ _LOGGER.debug("EventsManager: Firing SDK_READY event for new subscription")
+ self._fire_sdk_event(sdk_event, None)
+ return
+
+ self._active_subscriptions[sdk_event] = ActiveSubscriptions(False, event_handler)
+
+ def unregister(self, sdk_event):
+ if self._active_subscriptions.get(sdk_event) == None:
+ return
+
+ with self._lock:
+ del self._active_subscriptions[sdk_event]
+
+ def notify_internal_event(self, sdk_internal_event, event_metadata):
+ with self._lock:
+ self._update_internal_event_status(sdk_internal_event, True)
+ for sorted_event in self._manager_config.evaluation_order:
+ if sorted_event in self._get_sdk_event_if_applicable(sdk_internal_event):
+ if self._get_event_handler(sorted_event) != None:
+ self._fire_sdk_event(sorted_event, event_metadata)
+
+ # if client is not subscribed to SDK_READY
+ if sorted_event == SdkEvent.SDK_READY and self._get_event_handler(sorted_event) == None:
+ _LOGGER.debug("EventsManager: Registering SDK_READY event as fired")
+ self._active_subscriptions[SdkEvent.SDK_READY] = ActiveSubscriptions(True, None)
+
+ def destroy(self):
+ with self._lock:
+ self._active_subscriptions = {}
+ self._internal_events_status = {}
+
+ def _fire_sdk_event(self, sdk_event, event_metadata):
+ _LOGGER.debug("EventsManager: Firing Sdk event %s", sdk_event)
+ notify_event = threading.Thread(target=self._events_delivery.deliver, args=[sdk_event, event_metadata, self._get_event_handler(sdk_event)],
+ name='SplitSDKEventNotify', daemon=True)
+ notify_event.start()
+ self._set_sdk_event_triggered(sdk_event)
+
+class EventsManagerAsync(EventsManagerBase):
+ """Events Manager Async class."""
+
+ def __init__(self, events_configurations, events_delivery):
+ """
+ Construct Events Manager instance.
+ """
+ EventsManagerBase.__init__(self, events_configurations, events_delivery)
+ self._lock = asyncio.Lock()
+
+ async def register(self, sdk_event, event_handler):
+ if self._active_subscriptions.get(sdk_event) != None and self._get_event_handler(sdk_event) != None:
+ return
+
+ async with self._lock:
+ # SDK ready already fired
+ if sdk_event == SdkEvent.SDK_READY and self._event_already_triggered(sdk_event):
+ self._active_subscriptions[sdk_event] = ActiveSubscriptions(True, event_handler)
+ _LOGGER.debug("EventsManager: Firing SDK_READY event for new subscription")
+ self._fire_sdk_event(sdk_event, None)
+ return
+
+ self._active_subscriptions[sdk_event] = ActiveSubscriptions(False, event_handler)
+
+ async def unregister(self, sdk_event):
+ if self._active_subscriptions.get(sdk_event) == None:
+ return
+
+ async with self._lock:
+ del self._active_subscriptions[sdk_event]
+
+ async def notify_internal_event(self, sdk_internal_event, event_metadata):
+ async with self._lock:
+ self._update_internal_event_status(sdk_internal_event, True)
+ for sorted_event in self._manager_config.evaluation_order:
+ if sorted_event in self._get_sdk_event_if_applicable(sdk_internal_event):
+ if self._get_event_handler(sorted_event) != None:
+ self._fire_sdk_event(sorted_event, event_metadata)
+
+ # if client is not subscribed to SDK_READY
+ if sorted_event == SdkEvent.SDK_READY and self._get_event_handler(sorted_event) == None:
+ _LOGGER.debug("EventsManager: Registering SDK_READY event as fired")
+ self._active_subscriptions[SdkEvent.SDK_READY] = ActiveSubscriptions(True, None)
+
+ async def destroy(self):
+ async with self._lock:
+ self._active_subscriptions = {}
+ self._internal_events_status = {}
+
+ def _fire_sdk_event(self, sdk_event, event_metadata):
+ _LOGGER.debug("EventsManager: Firing Sdk event %s", sdk_event)
+ asyncio.get_running_loop().create_task(self._events_delivery.deliver_async(sdk_event, event_metadata, self._get_event_handler(sdk_event)))
+ self._set_sdk_event_triggered(sdk_event)
\ No newline at end of file
diff --git a/splitio/events/events_manager_config.py b/splitio/events/events_manager_config.py
new file mode 100644
index 00000000..b987d380
--- /dev/null
+++ b/splitio/events/events_manager_config.py
@@ -0,0 +1,111 @@
+"""Events Manager Configuration."""
+from splitio.models.events import SdkEvent, SdkInternalEvent
+
+class EventsManagerConfig(object):
+ """Events Manager Configurations class."""
+
+ def __init__(self):
+ """
+ Construct Events Manager Configuration instance.
+ """
+ self._require_all = self._get_require_all()
+ self._prerequisites = self._get_prerequisites()
+ self._require_any = self._get_require_any()
+ self._suppressed_by = self._get_suppressed_by()
+ self._execution_limits = self._get_execution_limits()
+ self._evaluation_order = self._get_sorted_events()
+
+ @property
+ def require_all(self):
+ """Return require all dict"""
+ return self._require_all
+
+ @property
+ def prerequisites(self):
+ """Return prerequisites dict"""
+ return self._prerequisites
+
+ @property
+ def require_any(self):
+ """Return require_any dict"""
+ return self._require_any
+
+ @property
+ def suppressed_by(self):
+ """Return suppressed_by dict"""
+ return self._suppressed_by
+
+ @property
+ def execution_limits(self):
+ """Return execution_limits dict"""
+ return self._execution_limits
+
+ @property
+ def evaluation_order(self):
+ """Return evaluation_order dict"""
+ return self._evaluation_order
+
+ def _get_require_all(self):
+ """Return require all dict"""
+ return {
+ SdkEvent.SDK_READY: {SdkInternalEvent.SDK_READY}
+ }
+
+ def _get_prerequisites(self):
+ """Return prerequisites dict"""
+ return {
+ SdkEvent.SDK_UPDATE: {SdkEvent.SDK_READY}
+ }
+
+ def _get_require_any(self):
+ """Return require_any dict"""
+ return {
+ SdkEvent.SDK_UPDATE: {SdkInternalEvent.FLAG_KILLED_NOTIFICATION, SdkInternalEvent.FLAGS_UPDATED,
+ SdkInternalEvent.RB_SEGMENTS_UPDATED, SdkInternalEvent.SEGMENTS_UPDATED}
+ }
+
+ def _get_suppressed_by(self):
+ """Return suppressed_by dict"""
+ return {
+ }
+
+ def _get_execution_limits(self):
+ """Return execution_limits dict"""
+ return {
+ SdkEvent.SDK_READY: 1,
+ SdkEvent.SDK_UPDATE: -1
+ }
+
+ def _get_sorted_events(self):
+ """Return dorted events set"""
+ sorted_events = []
+ for sdk_event in [SdkEvent.SDK_READY, SdkEvent.SDK_UPDATE]:
+ sorted_events = self._dfs_recursive(sdk_event, sorted_events)
+
+ return sorted_events
+
+
+ def _dfs_recursive(self, sdk_event, added):
+ """Return sorted events set based on the dependency rules"""
+ if sdk_event in added:
+ return added
+
+ for dependent_event in self._get_dependencies(sdk_event):
+ added = self._dfs_recursive(dependent_event, added)
+
+ added.append(sdk_event)
+ return added
+
+ def _get_dependencies(self, sdk_event):
+ """Return dependencies set from prerequisites and suppressed events for a given event"""
+ dependencies = set()
+ for prerequisites_event_name, prerequisites_event_value in self.prerequisites.items():
+ if prerequisites_event_name == sdk_event:
+ for prereq_event in prerequisites_event_value:
+ dependencies.add(prereq_event)
+
+ for suppressed_event_name, suppressed_event_value in self.suppressed_by.items():
+ if sdk_event in suppressed_event_value:
+ dependencies.add(suppressed_event_name)
+
+ return dependencies
diff --git a/splitio/events/events_metadata.py b/splitio/events/events_metadata.py
new file mode 100644
index 00000000..0707a8f5
--- /dev/null
+++ b/splitio/events/events_metadata.py
@@ -0,0 +1,35 @@
+"""Events Metadata."""
+from enum import Enum
+
+class SdkEventType(Enum):
+ """Public event types"""
+
+ FLAG_UPDATE = 'FLAG_UPDATE'
+ SEGMENTS_UPDATE = 'SEGMENTS_UPDATE'
+
+class EventsMetadata(object):
+ """Events Metadata class."""
+
+ def __init__(self, type, names):
+ """
+ Construct Events Metadata instance.
+ """
+ self._type = type
+ self._names = self._sanitize(names)
+
+ def get_type(self):
+ """Return type"""
+ return self._type
+
+ def get_names(self):
+ """Return names"""
+ return self._names
+
+ def _sanitize(self, names):
+ """Return sanitized names list with values str"""
+ santized_data = set()
+ for name in names:
+ if isinstance(name, str):
+ santized_data.add(name)
+
+ return santized_data
diff --git a/splitio/events/events_task.py b/splitio/events/events_task.py
new file mode 100644
index 00000000..8158dc04
--- /dev/null
+++ b/splitio/events/events_task.py
@@ -0,0 +1,146 @@
+"""sdk internal events task."""
+import logging
+import threading
+import abc
+
+from splitio.optional.loaders import asyncio
+
+_LOGGER = logging.getLogger(__name__)
+
+class EventsTaskBase(object, metaclass=abc.ABCMeta):
+ """task template."""
+
+ @abc.abstractmethod
+ def is_running(self):
+ """Return whether the task is running."""
+
+ @abc.abstractmethod
+ def start(self):
+ """Start task."""
+
+ @abc.abstractmethod
+ def stop(self):
+ """Stop task."""
+
+class EventsTask(EventsTaskBase):
+ """sdk internal events processing task."""
+
+ _centinel = object()
+
+ def __init__(self, notify_internal_events, internal_events_queue):
+ """
+ Class constructor.
+
+ :param synchronize_segment: handler to perform segment synchronization on incoming event
+ :type synchronize_segment: function
+
+ :param segment_queue: queue with segment updates notifications
+ :type segment_queue: queue
+ """
+ self._internal_events_queue = internal_events_queue
+ self._handler = notify_internal_events
+ self._running = False
+ self._worker = None
+
+ def is_running(self):
+ """Return whether the working is running."""
+ return self._running
+
+ def _run(self):
+ """Run worker handler."""
+ while self.is_running():
+ event = self._internal_events_queue.get()
+ if not self.is_running():
+ break
+
+ if event == self._centinel:
+ continue
+
+ _LOGGER.debug('Processing sdk internal event: %s', event.internal_event)
+ try:
+ self._handler(event.internal_event, event.metadata)
+ except Exception:
+ _LOGGER.error('Exception raised in events manager')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+
+ def start(self):
+ """Start worker."""
+ if self.is_running():
+ _LOGGER.debug('SDK Event Worker is already running')
+ return
+
+ self._running = True
+ _LOGGER.debug('Starting SDK Event Task worker')
+ self._worker = threading.Thread(target=self._run, name='EventsTaskWorker', daemon=True)
+ self._worker.start()
+
+ def stop(self, stop_flag=None):
+ """Stop worker."""
+ _LOGGER.debug('Stopping SDK Event Task worker')
+ if not self.is_running():
+ _LOGGER.debug('SDK Event Worker is not running. Ignoring.')
+ return
+
+ self._running = False
+ self._internal_events_queue.put(self._centinel)
+
+class EventsTaskAsync(EventsTaskBase):
+ """sdk internal events processing task."""
+
+ _centinel = object()
+
+ def __init__(self, notify_internal_events, internal_events_queue):
+ """
+ Class constructor.
+
+ :param synchronize_segment: handler to perform segment synchronization on incoming event
+ :type synchronize_segment: function
+
+ :param segment_queue: queue with segment updates notifications
+ :type segment_queue: queue
+ """
+ self._internal_events_queue = internal_events_queue
+ self._handler = notify_internal_events
+ self._running = False
+ self._worker = None
+
+ def is_running(self):
+ """Return whether the working is running."""
+ return self._running
+
+ async def _run(self):
+ """Run worker handler."""
+ while self.is_running():
+ event = await self._internal_events_queue.get()
+ if not self.is_running():
+ break
+
+ if event == self._centinel:
+ continue
+
+ _LOGGER.debug('Processing sdk internal event: %s', event.internal_event)
+ try:
+ await self._handler(event.internal_event, event.metadata)
+ except Exception:
+ _LOGGER.error('Exception raised in events manager')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+
+ def start(self):
+ """Start worker."""
+ if self.is_running():
+ _LOGGER.debug('SDK Event Worker is already running')
+ return
+
+ self._running = True
+ _LOGGER.debug('Starting SDK Event Task worker')
+ asyncio.get_running_loop().create_task(self._run())
+
+ async def stop(self, stop_flag=None):
+ """Stop worker."""
+ _LOGGER.debug('Stopping SDK Event Task worker')
+ if not self.is_running():
+ _LOGGER.debug('SDK Event Worker is not running. Ignoring.')
+ return
+
+ self._running = False
+ await self._internal_events_queue.put(self._centinel)
\ No newline at end of file
diff --git a/splitio/exceptions.py b/splitio/exceptions.py
index 0c633d33..f466d2f7 100644
--- a/splitio/exceptions.py
+++ b/splitio/exceptions.py
@@ -1,5 +1,3 @@
"""This module contains everything related to split.io exceptions"""
-from __future__ import absolute_import, division, print_function, unicode_literals
-
from splitio.client.factory import TimeoutException
from splitio.storage.adapters.redis import SentinelConfigurationException
diff --git a/splitio/models/__init__.py b/splitio/models/__init__.py
index e69de29b..ea86ed44 100644
--- a/splitio/models/__init__.py
+++ b/splitio/models/__init__.py
@@ -0,0 +1,6 @@
+class MatcherNotFoundException(Exception):
+ """Exception to raise when a matcher is not found."""
+
+ def __init__(self, custom_message):
+ """Constructor."""
+ Exception.__init__(self, custom_message)
\ No newline at end of file
diff --git a/splitio/models/datatypes.py b/splitio/models/datatypes.py
index 7cbe466a..751c2908 100644
--- a/splitio/models/datatypes.py
+++ b/splitio/models/datatypes.py
@@ -1,5 +1,6 @@
"""Datatypes converters for matchers."""
+
def ts_truncate_seconds(timestamp):
"""
Set seconds to zero in a timestamp.
@@ -12,6 +13,7 @@ def ts_truncate_seconds(timestamp):
"""
return timestamp - (timestamp % 60)
+
def ts_truncate_time(timestamp):
"""
Set time to zero in a timestamp.
@@ -24,6 +26,7 @@ def ts_truncate_time(timestamp):
"""
return timestamp - (timestamp % 86400)
+
def java_ts_to_secs(java_ts):
"""
Convert java timestamp into unix timestamp.
@@ -36,6 +39,7 @@ def java_ts_to_secs(java_ts):
"""
return java_ts / 1000
+
def java_ts_truncate_seconds(java_ts):
"""
Set seconds to zero in a timestamp.
@@ -48,6 +52,7 @@ def java_ts_truncate_seconds(java_ts):
"""
return ts_truncate_seconds(java_ts_to_secs(java_ts))
+
def java_ts_truncate_time(java_ts):
"""
Set time to zero in a timestamp.
diff --git a/splitio/models/events.py b/splitio/models/events.py
index 2d3ba797..2863d235 100644
--- a/splitio/models/events.py
+++ b/splitio/models/events.py
@@ -3,10 +3,8 @@
The dto is implemented as a namedtuple for performance matters.
"""
-
-from __future__ import print_function
from collections import namedtuple
-
+from enum import Enum
Event = namedtuple('Event', [
'key',
@@ -21,3 +19,21 @@
'event',
'size',
])
+
+class SdkEvent(Enum):
+ """Public SDK events"""
+
+ SDK_READY = 'SDK_READY'
+ SDK_UPDATE = 'SDK_UPDATE'
+
+class SdkInternalEvent(Enum):
+ """Internal SDK events"""
+
+ SDK_READY = 'SDK_READY'
+ FLAGS_UPDATED = 'FLAGS_UPDATED'
+ FLAG_KILLED_NOTIFICATION = 'FLAG_KILLED_NOTIFICATION'
+ SEGMENTS_UPDATED = 'SEGMENTS_UPDATED'
+ RB_SEGMENTS_UPDATED = 'RB_SEGMENTS_UPDATED'
+ LARGE_SEGMENTS_UPDATED = 'LARGE_SEGMENTS_UPDATED'
+
+
diff --git a/splitio/models/fallback_config.py b/splitio/models/fallback_config.py
new file mode 100644
index 00000000..ca021bf7
--- /dev/null
+++ b/splitio/models/fallback_config.py
@@ -0,0 +1,100 @@
+"""Segment module."""
+from splitio.models.fallback_treatment import FallbackTreatment
+from splitio.client.client import CONTROL
+
+class FallbackTreatmentsConfiguration(object):
+ """FallbackTreatmentsConfiguration object class."""
+
+ def __init__(self, global_fallback_treatment=None, by_flag_fallback_treatment=None):
+ """
+ Class constructor.
+
+ :param global_fallback_treatment: global FallbackTreatment.
+ :type global_fallback_treatment: FallbackTreatment
+
+ :param by_flag_fallback_treatment: Dict of flags and their fallback treatment
+ :type by_flag_fallback_treatment: {str: FallbackTreatment}
+ """
+ self._global_fallback_treatment = self._build_global_fallback(global_fallback_treatment)
+ self._by_flag_fallback_treatment = self._build_by_flag_fallback(by_flag_fallback_treatment)
+
+ @property
+ def global_fallback_treatment(self):
+ """Return global fallback treatment."""
+ return self._global_fallback_treatment
+
+ @global_fallback_treatment.setter
+ def global_fallback_treatment(self, new_value):
+ """Set global fallback treatment."""
+ self._global_fallback_treatment = new_value
+
+ @property
+ def by_flag_fallback_treatment(self):
+ """Return by flag fallback treatment."""
+ return self._by_flag_fallback_treatment
+
+ @by_flag_fallback_treatment.setter
+ def by_flag_fallback_treatment(self, new_value):
+ """Set global fallback treatment."""
+ self.by_flag_fallback_treatment = new_value
+
+ def _build_global_fallback(self, global_fallback_treatment):
+ if isinstance(global_fallback_treatment, str):
+ return FallbackTreatment(global_fallback_treatment)
+
+ return global_fallback_treatment
+
+ def _build_by_flag_fallback(self, by_flag_fallback_treatment):
+ if not isinstance(by_flag_fallback_treatment, dict):
+ return by_flag_fallback_treatment
+
+ parsed_by_flag_fallback = {}
+ for key, value in by_flag_fallback_treatment.items():
+ if isinstance(value, str):
+ parsed_by_flag_fallback[key] = FallbackTreatment(value)
+ else:
+ parsed_by_flag_fallback[key] = value
+
+ return parsed_by_flag_fallback
+
+class FallbackTreatmentCalculator(object):
+ """FallbackTreatmentCalculator object class."""
+
+ def __init__(self, fallback_treatment_configuration):
+ """
+ Class constructor.
+
+ :param fallback_treatment_configuration: fallback treatment configuration
+ :type fallback_treatment_configuration: FallbackTreatmentsConfiguration
+ """
+ self._label_prefix = "fallback - "
+ self._fallback_treatments_configuration = fallback_treatment_configuration
+
+ @property
+ def fallback_treatments_configuration(self):
+ """Return fallback treatment configuration."""
+ return self._fallback_treatments_configuration
+
+ def resolve(self, flag_name, label):
+ if self._fallback_treatments_configuration != None:
+ if self._fallback_treatments_configuration.by_flag_fallback_treatment != None \
+ and self._fallback_treatments_configuration.by_flag_fallback_treatment.get(flag_name) != None:
+ return self._copy_with_label(self._fallback_treatments_configuration.by_flag_fallback_treatment.get(flag_name), \
+ self._resolve_label(label))
+
+ if self._fallback_treatments_configuration.global_fallback_treatment != None:
+ return self._copy_with_label(self._fallback_treatments_configuration.global_fallback_treatment, \
+ self._resolve_label(label))
+
+ return FallbackTreatment(CONTROL, None, label)
+
+ def _resolve_label(self, label):
+ if label == None:
+ return None
+
+ return self._label_prefix + label
+
+ def _copy_with_label(self, fallback_treatment, label):
+ return FallbackTreatment(fallback_treatment.treatment, fallback_treatment.config, label)
+
+
\ No newline at end of file
diff --git a/splitio/models/fallback_treatment.py b/splitio/models/fallback_treatment.py
new file mode 100644
index 00000000..794cbb63
--- /dev/null
+++ b/splitio/models/fallback_treatment.py
@@ -0,0 +1,34 @@
+"""Segment module."""
+import json
+
+class FallbackTreatment(object):
+ """FallbackTreatment object class."""
+
+ def __init__(self, treatment, config=None, label=None):
+ """
+ Class constructor.
+
+ :param treatment: treatment.
+ :type treatment: str
+
+ :param config: config.
+ :type config: json
+ """
+ self._treatment = treatment
+ self._config = config
+ self._label = label
+
+ @property
+ def treatment(self):
+ """Return treatment."""
+ return self._treatment
+
+ @property
+ def config(self):
+ """Return config."""
+ return self._config
+
+ @property
+ def label(self):
+ """Return label prefix."""
+ return self._label
\ No newline at end of file
diff --git a/splitio/models/grammar/condition.py b/splitio/models/grammar/condition.py
index 961d5f54..79fdb928 100644
--- a/splitio/models/grammar/condition.py
+++ b/splitio/models/grammar/condition.py
@@ -1,9 +1,8 @@
"""Split conditions module."""
from enum import Enum
-from future.utils import python_2_unicode_compatible
-import six
+from splitio.models import MatcherNotFoundException
from splitio.models.grammar import matchers
from splitio.models.grammar import partitions
@@ -13,7 +12,7 @@
class ConditionType(Enum):
- """Split possible condition types."""
+ """Feature Flag possible condition types."""
WHITELIST = 'WHITELIST'
ROLLOUT = 'ROLLOUT'
@@ -22,7 +21,7 @@ class ConditionType(Enum):
class Condition(object):
"""Condition object class."""
- def __init__( #pylint: disable=too-many-arguments
+ def __init__( # pylint: disable=too-many-arguments
self,
matcher_list,
combiner, parts, label,
@@ -83,11 +82,10 @@ def get_segment_names(self):
:rtype: list(str)
"""
return [
- matcher._segment_name for matcher in self.matchers #pylint: disable=protected-access
+ matcher._segment_name for matcher in self.matchers # pylint: disable=protected-access
if isinstance(matcher, matchers.UserDefinedSegmentMatcher)
]
- @python_2_unicode_compatible
def __str__(self):
"""Return the string representation of the condition."""
return '{matcher} then split {parts}'.format(
@@ -103,7 +101,7 @@ def to_json(self):
'label': self._label,
'matcherGroup': {
'combiner': next(
- (k, v) for k, v in six.iteritems(_MATCHER_COMBINERS) if v == self._combiner
+ (k, v) for k, v in _MATCHER_COMBINERS.items() if v == self._combiner
)[0],
'matchers': [m.to_json() for m in self.matchers]
},
@@ -115,18 +113,21 @@ def from_raw(raw_condition):
"""
Parse a condition from a JSON portion of splitChanges.
- :param raw_condition: JSON object extracted from a split's conditions array.
+ :param raw_condition: JSON object extracted from a feature flag's conditions array.
:type raw_condition: dict
:return: A condition object.
:rtype: Condition
"""
- parsed_partitions = [
- partitions.from_raw(raw_partition)
- for raw_partition in raw_condition['partitions']
- ]
+ parsed_partitions = []
+ if raw_condition.get("partitions") is not None:
+ parsed_partitions = [
+ partitions.from_raw(raw_partition)
+ for raw_partition in raw_condition['partitions']
+ ]
matcher_objects = [matchers.from_raw(x) for x in raw_condition['matcherGroup']['matchers']]
+
combiner = _MATCHER_COMBINERS[raw_condition['matcherGroup']['combiner']]
label = raw_condition.get('label')
diff --git a/splitio/models/grammar/matchers/__init__.py b/splitio/models/grammar/matchers/__init__.py
index f61eb6be..def75626 100644
--- a/splitio/models/grammar/matchers/__init__.py
+++ b/splitio/models/grammar/matchers/__init__.py
@@ -1,7 +1,5 @@
"""Matchers entrypoint module."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
+from splitio.models import MatcherNotFoundException
from splitio.models.grammar.matchers.keys import AllKeysMatcher, UserDefinedSegmentMatcher
from splitio.models.grammar.matchers.numeric import BetweenMatcher, EqualToMatcher, \
GreaterThanOrEqualMatcher, LessThanOrEqualMatcher
@@ -10,6 +8,9 @@
from splitio.models.grammar.matchers.string import ContainsStringMatcher, \
EndsWithMatcher, RegexMatcher, StartsWithMatcher, WhitelistMatcher
from splitio.models.grammar.matchers.misc import BooleanMatcher, DependencyMatcher
+from splitio.models.grammar.matchers.semver import EqualToSemverMatcher, GreaterThanOrEqualToSemverMatcher, LessThanOrEqualToSemverMatcher, \
+ BetweenSemverMatcher, InListSemverMatcher
+from splitio.models.grammar.matchers.rule_based_segment import RuleBasedSegmentMatcher
MATCHER_TYPE_ALL_KEYS = 'ALL_KEYS'
@@ -29,6 +30,12 @@
MATCHER_TYPE_IN_SPLIT_TREATMENT = 'IN_SPLIT_TREATMENT'
MATCHER_TYPE_EQUAL_TO_BOOLEAN = 'EQUAL_TO_BOOLEAN'
MATCHER_TYPE_MATCHES_STRING = 'MATCHES_STRING'
+MATCHER_TYPE_EQUAL_TO_SEMVER = 'EQUAL_TO_SEMVER'
+MATCHER_GREATER_THAN_OR_EQUAL_TO_SEMVER = 'GREATER_THAN_OR_EQUAL_TO_SEMVER'
+MATCHER_LESS_THAN_OR_EQUAL_TO_SEMVER = 'LESS_THAN_OR_EQUAL_TO_SEMVER'
+MATCHER_BETWEEN_SEMVER = 'BETWEEN_SEMVER'
+MATCHER_INLIST_SEMVER = 'IN_LIST_SEMVER'
+MATCHER_IN_RULE_BASED_SEGMENT = 'IN_RULE_BASED_SEGMENT'
_MATCHER_BUILDERS = {
@@ -48,10 +55,15 @@
MATCHER_TYPE_CONTAINS_STRING: ContainsStringMatcher,
MATCHER_TYPE_IN_SPLIT_TREATMENT: DependencyMatcher,
MATCHER_TYPE_EQUAL_TO_BOOLEAN: BooleanMatcher,
- MATCHER_TYPE_MATCHES_STRING: RegexMatcher
+ MATCHER_TYPE_MATCHES_STRING: RegexMatcher,
+ MATCHER_TYPE_EQUAL_TO_SEMVER: EqualToSemverMatcher,
+ MATCHER_GREATER_THAN_OR_EQUAL_TO_SEMVER: GreaterThanOrEqualToSemverMatcher,
+ MATCHER_LESS_THAN_OR_EQUAL_TO_SEMVER: LessThanOrEqualToSemverMatcher,
+ MATCHER_BETWEEN_SEMVER: BetweenSemverMatcher,
+ MATCHER_INLIST_SEMVER: InListSemverMatcher,
+ MATCHER_IN_RULE_BASED_SEGMENT: RuleBasedSegmentMatcher
}
-
def from_raw(raw_matcher):
"""
Parse a condition from a JSON portion of splitChanges.
@@ -66,5 +78,5 @@ def from_raw(raw_matcher):
try:
builder = _MATCHER_BUILDERS[matcher_type]
except KeyError:
- raise ValueError('Invalid matcher type %s' % matcher_type)
+ raise MatcherNotFoundException('Invalid matcher type %s' % matcher_type)
return builder(raw_matcher)
diff --git a/splitio/models/grammar/matchers/base.py b/splitio/models/grammar/matchers/base.py
index d7d818d9..57d0feb5 100644
--- a/splitio/models/grammar/matchers/base.py
+++ b/splitio/models/grammar/matchers/base.py
@@ -1,13 +1,10 @@
"""Abstract matcher module."""
import abc
-from six import add_metaclass
-
from splitio.client.key import Key
-@add_metaclass(abc.ABCMeta)
-class Matcher(object):
+class Matcher(object, metaclass=abc.ABCMeta):
"""Matcher abstract class."""
def __init__(self, raw_matcher):
@@ -44,6 +41,7 @@ def _get_matcher_input(self, key, attributes=None):
if self._attribute_name is not None:
if attributes is not None and attributes.get(self._attribute_name) is not None:
return attributes[self._attribute_name]
+
return None
if isinstance(key, Key):
diff --git a/splitio/models/grammar/matchers/keys.py b/splitio/models/grammar/matchers/keys.py
index 6fcc2584..0d719310 100644
--- a/splitio/models/grammar/matchers/keys.py
+++ b/splitio/models/grammar/matchers/keys.py
@@ -1,8 +1,7 @@
"""Keys matchers module."""
-
-from future.utils import python_2_unicode_compatible
from splitio.models.grammar.matchers.base import Matcher
+
class AllKeysMatcher(Matcher):
"""A matcher that always returns True."""
@@ -31,7 +30,6 @@ def _match(self, key, attributes=None, context=None):
"""
return key is not None
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'in segment all'
@@ -67,14 +65,11 @@ def _match(self, key, attributes=None, context=None):
:returns: Wheter the match is successful.
:rtype: bool
"""
- segment_storage = context.get('segment_storage')
- if not segment_storage:
- raise Exception('Segment storage not present in matcher context.')
-
matching_data = self._get_matcher_input(key, attributes)
if matching_data is None:
return False
- return segment_storage.segment_contains(self._segment_name, matching_data)
+
+ return context['ec'].segment_memberships[self._segment_name]
def _add_matcher_specific_properties_to_json(self):
"""Return UserDefinedSegment specific properties."""
@@ -84,7 +79,6 @@ def _add_matcher_specific_properties_to_json(self):
}
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'in segment {segment_name}'.format(
diff --git a/splitio/models/grammar/matchers/misc.py b/splitio/models/grammar/matchers/misc.py
index 335160ed..1f52c1fa 100644
--- a/splitio/models/grammar/matchers/misc.py
+++ b/splitio/models/grammar/matchers/misc.py
@@ -1,10 +1,5 @@
"""Miscelaneous matchers that don't fall into other categories."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
import json
-from future.utils import python_2_unicode_compatible
-from six import string_types
from splitio.models.grammar.matchers.base import Matcher
@@ -40,8 +35,7 @@ def _match(self, key, attributes=None, context=None):
assert evaluator is not None
bucketing_key = context.get('bucketing_key')
-
- result = evaluator.evaluate_feature(self._split_name, key, bucketing_key, attributes)
+ result = evaluator.eval_with_context(key, bucketing_key, self._split_name, attributes, context['ec'])
return result['treatment'] in self._treatments
def _add_matcher_specific_properties_to_json(self):
@@ -83,15 +77,18 @@ def _match(self, key, attributes=None, context=None):
matching_data = self._get_matcher_input(key, attributes)
if matching_data is None:
return False
+
if isinstance(matching_data, bool):
decoded = matching_data
- elif isinstance(matching_data, string_types):
+ elif isinstance(matching_data, str):
try:
decoded = json.loads(matching_data.lower())
if not isinstance(decoded, bool):
return False
+
except ValueError:
return False
+
else:
return False
diff --git a/splitio/models/grammar/matchers/numeric.py b/splitio/models/grammar/matchers/numeric.py
index 7c06ef3b..c39fabd7 100644
--- a/splitio/models/grammar/matchers/numeric.py
+++ b/splitio/models/grammar/matchers/numeric.py
@@ -1,19 +1,17 @@
"""Numeric & Date based matchers."""
import numbers
-
import logging
-from future.utils import python_2_unicode_compatible
-from six import string_types
from splitio.models.grammar.matchers.base import Matcher
from splitio.models import datatypes
+_LOGGER = logging.getLogger(__name__)
+
+
class Sanitizer(object): # pylint: disable=too-few-public-methods
"""Numeric input sanitizer."""
- _logger = logging.getLogger('InputSanitizer')
-
@classmethod
def ensure_int(cls, data):
"""
@@ -31,12 +29,11 @@ def ensure_int(cls, data):
if isinstance(data, numbers.Integral) and not isinstance(data, bool):
return data
- if not isinstance(data, string_types):
- cls._logger.error('Cannot convert %s to int. Failing.', type(data))
+ if not isinstance(data, str):
+ _LOGGER.error('Cannot convert %s to int. Failing.', type(data))
return None
-
- cls._logger.warning(
+ _LOGGER.warning(
'Supplied attribute is of type %s and should have been an int. ',
type(data)
)
@@ -44,11 +41,11 @@ def ensure_int(cls, data):
try:
return int(data)
except ValueError:
- cls._logger.error('Cannot convert %s to int. Failing.', type(data))
+ _LOGGER.error('Cannot convert %s to int. Failing.', type(data))
return None
-class ZeroSecondDataMatcher(object): #pylint: disable=too-few-public-methods
+class ZeroSecondDataMatcher(object): # pylint: disable=too-few-public-methods
"""Mixin to use in matchers that when dealing with datetimes, truncate seconds."""
data_parsers = {
@@ -62,7 +59,7 @@ class ZeroSecondDataMatcher(object): #pylint: disable=too-few-public-methods
}
-class ZeroTimeDataMatcher(object): #pylint: disable=no-init,too-few-public-methods
+class ZeroTimeDataMatcher(object): # pylint: disable=no-init,too-few-public-methods
"""Mixin to use in matchers that when dealing with datetimes, truncate time."""
input_parsers = {
@@ -109,9 +106,9 @@ def _match(self, key, attributes=None, context=None):
matching_data = Sanitizer.ensure_int(self._get_matcher_input(key, attributes))
if matching_data is None:
return False
+
return self._lower <= self.input_parsers[self._data_type](matching_data) <= self._upper
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'between {start} and {end}'.format(start=self._lower, end=self._upper)
@@ -158,6 +155,7 @@ def _match(self, key, attributes=None, context=None):
matching_data = Sanitizer.ensure_int(self._get_matcher_input(key, attributes))
if matching_data is None:
return False
+
return self.input_parsers[self._data_type](matching_data) == self._value
def _add_matcher_specific_properties_to_json(self):
@@ -201,6 +199,7 @@ def _match(self, key, attributes=None, context=None):
matching_data = Sanitizer.ensure_int(self._get_matcher_input(key, attributes))
if matching_data is None:
return False
+
return self.input_parsers[self._data_type](matching_data) >= self._value
def _add_matcher_specific_properties_to_json(self):
@@ -244,6 +243,7 @@ def _match(self, key, attributes=None, context=None):
matching_data = Sanitizer.ensure_int(self._get_matcher_input(key, attributes))
if matching_data is None:
return False
+
return self.input_parsers[self._data_type](matching_data) <= self._value
def _add_matcher_specific_properties_to_json(self):
diff --git a/splitio/models/grammar/matchers/prerequisites.py b/splitio/models/grammar/matchers/prerequisites.py
new file mode 100644
index 00000000..799df5c4
--- /dev/null
+++ b/splitio/models/grammar/matchers/prerequisites.py
@@ -0,0 +1,38 @@
+"""Prerequisites matcher classes."""
+
+class PrerequisitesMatcher(object):
+
+ def __init__(self, prerequisites):
+ """
+ Build a PrerequisitesMatcher.
+
+ :param prerequisites: prerequisites
+ :type raw_matcher: List of Prerequisites
+ """
+ self._prerequisites = prerequisites
+
+ def match(self, key, attributes=None, context=None):
+ """
+ Evaluate user input against a matcher and return whether the match is successful.
+
+ :param key: User key.
+ :type key: str.
+ :param attributes: Custom user attributes.
+ :type attributes: dict.
+ :param context: Evaluation context
+ :type context: dict
+
+ :returns: Wheter the match is successful.
+ :rtype: bool
+ """
+ if self._prerequisites == None:
+ return True
+
+ evaluator = context.get('evaluator')
+ bucketing_key = context.get('bucketing_key')
+ for prerequisite in self._prerequisites:
+ result = evaluator.eval_with_context(key, bucketing_key, prerequisite.feature_flag_name, attributes, context['ec'])
+ if result['treatment'] not in prerequisite.treatments:
+ return False
+
+ return True
\ No newline at end of file
diff --git a/splitio/models/grammar/matchers/rule_based_segment.py b/splitio/models/grammar/matchers/rule_based_segment.py
new file mode 100644
index 00000000..6e4c8023
--- /dev/null
+++ b/splitio/models/grammar/matchers/rule_based_segment.py
@@ -0,0 +1,72 @@
+"""Rule based segment matcher classes."""
+from splitio.models.grammar.matchers.base import Matcher
+from splitio.models.rule_based_segments import SegmentType
+
+class RuleBasedSegmentMatcher(Matcher):
+
+ def _build(self, raw_matcher):
+ """
+ Build an RuleBasedSegmentMatcher.
+
+ :param raw_matcher: raw matcher as fetched from splitChanges response.
+ :type raw_matcher: dict
+ """
+ self._rbs_segment_name = raw_matcher['userDefinedSegmentMatcherData']['segmentName']
+
+ def _match(self, key, attributes=None, context=None):
+ """
+ Evaluate user input against a matcher and return whether the match is successful.
+
+ :param key: User key.
+ :type key: str.
+ :param attributes: Custom user attributes.
+ :type attributes: dict.
+ :param context: Evaluation context
+ :type context: dict
+
+ :returns: Wheter the match is successful.
+ :rtype: bool
+ """
+ if self._rbs_segment_name == None:
+ return False
+
+ rb_segment = context['ec'].rbs_segments.get(self._rbs_segment_name)
+
+ if key in rb_segment.excluded.get_excluded_keys():
+ return False
+
+ if self._match_dep_rb_segments(rb_segment.excluded.get_excluded_segments(), key, attributes, context):
+ return False
+
+ return self._match_conditions(rb_segment.conditions, key, attributes, context)
+
+ def _add_matcher_specific_properties_to_json(self):
+ """Return UserDefinedSegment specific properties."""
+ return {
+ 'userDefinedSegmentMatcherData': {
+ 'segmentName': self._rbs_segment_name
+ }
+ }
+
+ def _match_conditions(self, rbs_segment_conditions, key, attributes, context):
+ for parsed_condition in rbs_segment_conditions:
+ if parsed_condition.matches(key, attributes, context):
+ return True
+
+ return False
+
+ def _match_dep_rb_segments(self, excluded_rb_segments, key, attributes, context):
+ for excluded_rb_segment in excluded_rb_segments:
+ if excluded_rb_segment.type == SegmentType.STANDARD:
+ if context['ec'].segment_memberships[excluded_rb_segment.name]:
+ return True
+ else:
+ excluded_segment = context['ec'].rbs_segments.get(excluded_rb_segment.name)
+ if key in excluded_segment.excluded.get_excluded_keys():
+ return False
+
+ if self._match_dep_rb_segments(excluded_segment.excluded.get_excluded_segments(), key, attributes, context) \
+ or self._match_conditions(excluded_segment.conditions, key, attributes, context):
+ return True
+
+ return False
diff --git a/splitio/models/grammar/matchers/semver.py b/splitio/models/grammar/matchers/semver.py
new file mode 100644
index 00000000..46ccf01d
--- /dev/null
+++ b/splitio/models/grammar/matchers/semver.py
@@ -0,0 +1,260 @@
+"""Semver matcher classes."""
+import logging
+
+from splitio.models.grammar.matchers.base import Matcher
+from splitio.models.grammar.matchers.string import Sanitizer
+from splitio.models.grammar.matchers.utils.utils import build_semver_or_none
+
+
+_LOGGER = logging.getLogger(__name__)
+
+
+class EqualToSemverMatcher(Matcher):
+ """A matcher for Semver equal to."""
+
+ def _build(self, raw_matcher):
+ """
+ Build an EqualToSemverMatcher.
+
+ :param raw_matcher: raw matcher as fetched from splitChanges response.
+ :type raw_matcher: dict
+ """
+ self._data = raw_matcher.get('stringMatcherData')
+ self._semver = build_semver_or_none(raw_matcher.get('stringMatcherData'))
+
+ def _match(self, key, attributes=None, context=None):
+ """
+ Evaluate user input against a matcher and return whether the match is successful.
+
+ :param key: User key.
+ :type key: str.
+ :param attributes: Custom user attributes.
+ :type attributes: dict.
+ :param context: Evaluation context
+ :type context: dict
+
+ :returns: Wheter the match is successful.
+ :rtype: bool
+ """
+ if self._semver is None:
+ _LOGGER.error("stringMatcherData is required for EQUAL_TO_SEMVER matcher type")
+ return False
+
+ matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
+ if matching_data is None:
+ return False
+
+ matching_semver = build_semver_or_none(matching_data)
+ if matching_semver is None:
+ return False
+
+ return self._semver.version == matching_semver.version
+
+ def __str__(self):
+ """Return string Representation."""
+ return f'equal semver {self._data}'
+
+ def _add_matcher_specific_properties_to_json(self):
+ """Add matcher specific properties to base dict before returning it."""
+ return {'matcherType': 'EQUAL_TO_SEMVER', 'stringMatcherData': self._data}
+
+class GreaterThanOrEqualToSemverMatcher(Matcher):
+ """A matcher for Semver greater than or equal to."""
+
+ def _build(self, raw_matcher):
+ """
+ Build a GreaterThanOrEqualToSemverMatcher.
+
+ :param raw_matcher: raw matcher as fetched from splitChanges response.
+ :type raw_matcher: dict
+ """
+ self._data = raw_matcher.get('stringMatcherData')
+ self._semver = build_semver_or_none(raw_matcher.get('stringMatcherData'))
+
+ def _match(self, key, attributes=None, context=None):
+ """
+ Evaluate user input against a matcher and return whether the match is successful.
+
+ :param key: User key.
+ :type key: str.
+ :param attributes: Custom user attributes.
+ :type attributes: dict.
+ :param context: Evaluation context
+ :type context: dict
+
+ :returns: Wheter the match is successful.
+ :rtype: bool
+ """
+ if self._semver is None:
+ _LOGGER.error("stringMatcherData is required for GREATER_THAN_OR_EQUAL_TO_SEMVER matcher type")
+ return False
+
+ matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
+ if matching_data is None:
+ return False
+
+ matching_semver = build_semver_or_none(matching_data)
+ if matching_semver is None:
+ return False
+
+ return matching_semver.compare(self._semver) in [0, 1]
+
+ def __str__(self):
+ """Return string Representation."""
+ return f'greater than or equal to semver {self._data}'
+
+ def _add_matcher_specific_properties_to_json(self):
+ """Add matcher specific properties to base dict before returning it."""
+ return {'matcherType': 'GREATER_THAN_OR_EQUAL_TO_SEMVER', 'stringMatcherData': self._data}
+
+
+class LessThanOrEqualToSemverMatcher(Matcher):
+ """A matcher for Semver less than or equal to."""
+
+ def _build(self, raw_matcher):
+ """
+ Build a LessThanOrEqualToSemverMatcher.
+
+ :param raw_matcher: raw matcher as fetched from splitChanges response.
+ :type raw_matcher: dict
+ """
+ self._data = raw_matcher.get('stringMatcherData')
+ self._semver = build_semver_or_none(raw_matcher.get('stringMatcherData'))
+
+ def _match(self, key, attributes=None, context=None):
+ """
+ Evaluate user input against a matcher and return whether the match is successful.
+
+ :param key: User key.
+ :type key: str.
+ :param attributes: Custom user attributes.
+ :type attributes: dict.
+ :param context: Evaluation context
+ :type context: dict
+
+ :returns: Wheter the match is successful.
+ :rtype: bool
+ """
+ if self._semver is None:
+ _LOGGER.error("stringMatcherData is required for LESS_THAN_OR_EQUAL_TO_SEMVER matcher type")
+ return False
+
+ matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
+ if matching_data is None:
+ return False
+
+ matching_semver = build_semver_or_none(matching_data)
+ if matching_semver is None:
+ return False
+
+ return matching_semver.compare(self._semver) in [0, -1]
+
+ def __str__(self):
+ """Return string Representation."""
+ return f'less than or equal to semver {self._data}'
+
+ def _add_matcher_specific_properties_to_json(self):
+ """Add matcher specific properties to base dict before returning it."""
+ return {'matcherType': 'LESS_THAN_OR_EQUAL_TO_SEMVER', 'stringMatcherData': self._data}
+
+
+class BetweenSemverMatcher(Matcher):
+ """A matcher for Semver between."""
+
+ def _build(self, raw_matcher):
+ """
+ Build a BetweenSemverMatcher.
+
+ :param raw_matcher: raw matcher as fetched from splitChanges response.
+ :type raw_matcher: dict
+ """
+ self._data = raw_matcher.get('betweenStringMatcherData')
+ self._semver_start = build_semver_or_none(self._data['start'])
+ self._semver_end = build_semver_or_none(self._data['end'])
+
+ def _match(self, key, attributes=None, context=None):
+ """
+ Evaluate user input against a matcher and return whether the match is successful.
+
+ :param key: User key.
+ :type key: str.
+ :param attributes: Custom user attributes.
+ :type attributes: dict.
+ :param context: Evaluation context
+ :type context: dict
+
+ :returns: Wheter the match is successful.
+ :rtype: bool
+ """
+ if self._semver_start is None or self._semver_end is None:
+ _LOGGER.error("betweenStringMatcherData is required for BETWEEN_SEMVER matcher type")
+ return False
+
+ matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
+ if matching_data is None:
+ return False
+
+ matching_semver = build_semver_or_none(matching_data)
+ if matching_semver is None:
+ return False
+
+ return (self._semver_start.compare(matching_semver) in [0, -1]) and (self._semver_end.compare(matching_semver) in [0, 1])
+
+ def __str__(self):
+ """Return string Representation."""
+ return 'between semver {start} and {end}'.format(start=self._data.get('start'), end=self._data.get('end'))
+
+ def _add_matcher_specific_properties_to_json(self):
+ """Add matcher specific properties to base dict before returning it."""
+ return {'matcherType': 'BETWEEN_SEMVER', 'betweenStringMatcherData': self._data}
+
+
+class InListSemverMatcher(Matcher):
+ """A matcher for Semver in list."""
+
+ def _build(self, raw_matcher):
+ """
+ Build a InListSemverMatcher.
+
+ :param raw_matcher: raw matcher as fetched from splitChanges response.
+ :type raw_matcher: dict
+ """
+ self._data = raw_matcher['whitelistMatcherData']['whitelist']
+ semver_list = [build_semver_or_none(item) for item in self._data if item]
+ self._semver_list = frozenset([item.version for item in semver_list if item])
+
+ def _match(self, key, attributes=None, context=None):
+ """
+ Evaluate user input against a matcher and return whether the match is successful.
+
+ :param key: User key.
+ :type key: str.
+ :param attributes: Custom user attributes.
+ :type attributes: dict.
+ :param context: Evaluation context
+ :type context: dict
+
+ :returns: Wheter the match is successful.
+ :rtype: bool
+ """
+ if self._semver_list is None:
+ _LOGGER.error("whitelistMatcherData is required for IN_LIST_SEMVER matcher type")
+ return False
+
+ matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
+ if matching_data is None:
+ return False
+
+ matching_semver = build_semver_or_none(matching_data)
+ if matching_semver is None:
+ return False
+
+ return matching_semver.version in self._semver_list
+
+ def __str__(self):
+ """Return string Representation."""
+ return 'in list semver {data}'.format(data=self._data)
+
+ def _add_matcher_specific_properties_to_json(self):
+ """Add matcher specific properties to base dict before returning it."""
+ return {'matcherType': 'IN_LIST_SEMVER', 'whitelistMatcherData': {'whitelist': self._data}}
diff --git a/splitio/models/grammar/matchers/sets.py b/splitio/models/grammar/matchers/sets.py
index 7c8dfa77..f46970b4 100644
--- a/splitio/models/grammar/matchers/sets.py
+++ b/splitio/models/grammar/matchers/sets.py
@@ -1,8 +1,4 @@
"""Set based matchers module."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-from future.utils import python_2_unicode_compatible
-
from splitio.models.grammar.matchers.base import Matcher
@@ -35,9 +31,11 @@ def _match(self, key, attributes=None, context=None):
matching_data = self._get_matcher_input(key, attributes)
if matching_data is None:
return False
+
try:
setkey = set(matching_data)
return self._whitelist.issubset(setkey)
+
except TypeError:
return False
@@ -49,7 +47,6 @@ def _add_matcher_specific_properties_to_json(self):
}
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'contains all of the following set: [{whitelist}]'.format(
@@ -86,8 +83,10 @@ def _match(self, key, attributes=None, context=None):
matching_data = self._get_matcher_input(key, attributes)
if matching_data is None:
return False
+
try:
return len(self._whitelist.intersection(set(matching_data))) != 0
+
except TypeError:
return False
@@ -99,7 +98,6 @@ def _add_matcher_specific_properties_to_json(self):
}
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'contains on of the following se: [{whitelist}]'.format(
@@ -136,8 +134,10 @@ def _match(self, key, attributes=None, context=None):
matching_data = self._get_matcher_input(key, attributes)
if matching_data is None:
return False
+
try:
return self._whitelist == set(matching_data)
+
except TypeError:
return False
@@ -149,7 +149,6 @@ def _add_matcher_specific_properties_to_json(self):
}
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'equals the following set: [{whitelist}]'.format(
@@ -186,9 +185,11 @@ def _match(self, key, attributes=None, context=None):
matching_data = self._get_matcher_input(key, attributes)
if matching_data is None:
return False
+
try:
setkey = set(matching_data)
return len(setkey) > 0 and setkey.issubset(set(self._whitelist))
+
except TypeError:
return False
@@ -200,7 +201,6 @@ def _add_matcher_specific_properties_to_json(self):
}
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'is a subset of the following set: [{whitelist}]'.format(
diff --git a/splitio/models/grammar/matchers/string.py b/splitio/models/grammar/matchers/string.py
index bb75b02e..1a820b21 100644
--- a/splitio/models/grammar/matchers/string.py
+++ b/splitio/models/grammar/matchers/string.py
@@ -1,21 +1,17 @@
"""String matchers module."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
import logging
import json
import re
-from future.utils import python_2_unicode_compatible
-from six import string_types
from splitio.models.grammar.matchers.base import Matcher
+_LOGGER = logging.getLogger(__name__)
+
+
class Sanitizer(object): # pylint: disable=too-few-public-methods
"""Numeric input sanitizer."""
- _logger = logging.getLogger('InputSanitizer')
-
@classmethod
def ensure_string(cls, data):
"""
@@ -30,15 +26,16 @@ def ensure_string(cls, data):
if data is None: # Failed to fetch attribute. no need to convert.
return None
- if isinstance(data, string_types):
+ if isinstance(data, str):
return data
- cls._logger.warning(
+ _LOGGER.warning(
'Supplied attribute is of type %s and should have been a string. ',
type(data)
)
try:
return json.dumps(data)
+
except TypeError:
return None
@@ -72,6 +69,7 @@ def _match(self, key, attributes=None, context=None):
matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
if matching_data is None:
return False
+
return matching_data in self._whitelist
def _add_matcher_specific_properties_to_json(self):
@@ -82,7 +80,6 @@ def _add_matcher_specific_properties_to_json(self):
}
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'in whitelist [{whitelist}]'.format(
@@ -119,7 +116,8 @@ def _match(self, key, attributes=None, context=None):
matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
if matching_data is None:
return False
- return (isinstance(key, string_types) and
+
+ return (isinstance(key, str) and
any(matching_data.startswith(s) for s in self._whitelist))
def _add_matcher_specific_properties_to_json(self):
@@ -130,7 +128,6 @@ def _add_matcher_specific_properties_to_json(self):
}
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'has one of the following prefixes [{whitelist}]'.format(
@@ -167,7 +164,8 @@ def _match(self, key, attributes=None, context=None):
matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
if matching_data is None:
return False
- return (isinstance(key, string_types) and
+
+ return (isinstance(key, str) and
any(matching_data.endswith(s) for s in self._whitelist))
def _add_matcher_specific_properties_to_json(self):
@@ -178,7 +176,6 @@ def _add_matcher_specific_properties_to_json(self):
}
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'has one of the following suffixes [{whitelist}]'.format(
@@ -215,7 +212,8 @@ def _match(self, key, attributes=None, context=None):
matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
if matching_data is None:
return False
- return (isinstance(matching_data, string_types) and
+
+ return (isinstance(matching_data, str) and
any(s in matching_data for s in self._whitelist))
def _add_matcher_specific_properties_to_json(self):
@@ -226,7 +224,6 @@ def _add_matcher_specific_properties_to_json(self):
}
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string Representation."""
return 'contains one of the following string: [{whitelist}]'.format(
@@ -264,9 +261,11 @@ def _match(self, key, attributes=None, context=None):
matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
if matching_data is None:
return False
+
try:
matches = re.search(self._regex, matching_data)
return matches is not None
+
except TypeError:
return False
diff --git a/splitio/models/grammar/matchers/utils/__init__.py b/splitio/models/grammar/matchers/utils/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/splitio/models/grammar/matchers/utils/utils.py b/splitio/models/grammar/matchers/utils/utils.py
new file mode 100644
index 00000000..d0b2e727
--- /dev/null
+++ b/splitio/models/grammar/matchers/utils/utils.py
@@ -0,0 +1,168 @@
+"""Utils module."""
+
+import logging
+
+_LOGGER = logging.getLogger(__name__)
+
+M_DELIMITER = "+"
+P_DELIMITER = "-"
+V_DELIMITER = "."
+
+
+def compare(var1, var2):
+ """
+ Compare 2 variables and return int as follows:
+ 0: if var1 == var2
+ 1: if var1 > var2
+ -1: if var1 < var2
+
+ :param var1: any object accept ==, < or > operators
+ :type var1: str/int
+ :param var2: any object accept ==, < or > operators
+ :type var2: str/int
+
+ :returns: integer based on comparison
+ :rtype: int
+ """
+ if var1 == var2:
+ return 0
+ if var1 > var2:
+ return 1
+ return -1
+
+
+def build_semver_or_none(version):
+ try:
+ return Semver(version)
+ except (RuntimeError, ValueError):
+ _LOGGER.error("Invalid semver version: %s", version)
+ return None
+
+
+class Semver(object):
+ """Semver class."""
+
+ def __init__(self, version):
+ """
+ Class Initializer
+
+ :param version: raw version as read from splitChanges response.
+ :type version: str
+ """
+ self._major = 0
+ self._minor = 0
+ self._patch = 0
+ self._pre_release = []
+ self._is_stable = False
+ self._version = ""
+ self._metadata = ""
+ self._parse(version)
+
+ def _parse(self, version):
+ """
+ Parse the string in self.version to update the other internal variables
+ """
+ without_metadata = self._extract_metadata(version)
+ index = without_metadata.find(P_DELIMITER)
+ if index == -1:
+ self._is_stable = True
+ else:
+ pre_release_data = without_metadata[index+1:]
+ if pre_release_data == "":
+ raise RuntimeError("Pre-release is empty despite delimiter exists: " + version)
+
+ without_metadata = without_metadata[:index]
+ for pre_digit in pre_release_data.split(V_DELIMITER):
+ if pre_digit.isnumeric():
+ pre_digit = str(int(pre_digit))
+ self._pre_release.append(pre_digit)
+
+ self._set_components(without_metadata)
+
+ def _extract_metadata(self, version):
+ """
+ Check if there is any metadata characters in self.version.
+
+ :returns: The semver string without the metadata
+ :rtype: str
+ """
+ index = version.find(M_DELIMITER)
+ if index == -1:
+ return version
+
+ self._metadata = version[index+1:]
+ if self._metadata == "":
+ raise RuntimeError("Metadata is empty despite delimiter exists: " + version)
+
+ return version[:index]
+
+ def _set_components(self, version):
+ """
+ Set the major, minor and patch internal variables based on string passed.
+
+ :param version: raw version containing major.minor.patch numbers.
+ :type version: str
+ """
+
+ parts = version.split(V_DELIMITER)
+ if len(parts) != 3:
+ raise RuntimeError("Unable to convert to Semver, incorrect format: " + version)
+ try:
+ self._major, self._minor, self._patch = int(parts[0]), int(parts[1]), int(parts[2])
+ self._version = f"{self._major}{V_DELIMITER}{self._minor}{V_DELIMITER}{self._patch}"
+ self._version += f"{P_DELIMITER + V_DELIMITER.join(self._pre_release) if len(self._pre_release) > 0 else ''}"
+ self._version += f"{M_DELIMITER + self._metadata if self._metadata else ''}"
+ except Exception:
+ raise RuntimeError("Unable to convert to Semver, incorrect format: " + version)
+
+ @property
+ def version(self):
+ return self._version
+
+ def compare(self, to_compare):
+ """
+ Compare the current Semver object to a given Semver object, return:
+ 0: if self == passed
+ 1: if self > passed
+ -1: if self < passed
+
+ :param to_compare: a Semver object
+ :type to_compare: splitio.models.grammar.matchers.semver.Semver
+
+ :returns: integer based on comparison
+ :rtype: int
+ """
+ if self.version == to_compare.version:
+ return 0
+
+ # Compare major, minor, and patch versions numerically
+ result = compare(self._major, to_compare._major)
+ if result != 0:
+ return result
+
+ result = compare(self._minor, to_compare._minor)
+ if result != 0:
+ return result
+
+ result = compare(self._patch, to_compare._patch)
+ if result != 0:
+ return result
+
+ if not self._is_stable and to_compare._is_stable:
+ return -1
+ elif self._is_stable and not to_compare._is_stable:
+ return 1
+
+ # Compare pre-release versions lexically
+ min_length = min(len(self._pre_release), len(to_compare._pre_release))
+ for i in range(min_length):
+ if self._pre_release[i] == to_compare._pre_release[i]:
+ continue
+
+ if self._pre_release[i].isnumeric() and to_compare._pre_release[i].isnumeric():
+ return compare(int(self._pre_release[i]), int(to_compare._pre_release[i]))
+
+ return compare(self._pre_release[i], to_compare._pre_release[i])
+
+ # Compare lengths of pre-release versions
+ return compare(len(self._pre_release), len(to_compare._pre_release))
diff --git a/splitio/models/grammar/partitions.py b/splitio/models/grammar/partitions.py
index e38d5d98..51f84ac6 100644
--- a/splitio/models/grammar/partitions.py
+++ b/splitio/models/grammar/partitions.py
@@ -1,7 +1,5 @@
"""Split partition module."""
-from future.utils import python_2_unicode_compatible
-
class Partition(object):
"""Partition object class."""
@@ -38,7 +36,6 @@ def to_json(self):
'size': self._size
}
- @python_2_unicode_compatible
def __str__(self):
"""Return string representation of a partition."""
return '{size}%:{treatment}'.format(size=self._size,
diff --git a/splitio/models/impressions.py b/splitio/models/impressions.py
index 7cff141d..0c6d50f7 100644
--- a/splitio/models/impressions.py
+++ b/splitio/models/impressions.py
@@ -1,7 +1,4 @@
"""Impressions model module."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
from collections import namedtuple
@@ -14,10 +11,23 @@
'label',
'change_number',
'bucketing_key',
- 'time'
+ 'time',
+ 'previous_time',
+ 'properties'
+ ]
+)
+
+ImpressionDecorated = namedtuple(
+ 'ImpressionDecorated',
+ [
+ 'Impression',
+ 'disabled'
]
)
+# pre-python3.7 hack to make previous_time optional
+Impression.__new__.__defaults__ = (None,)
+
class Label(object): # pylint: disable=too-few-public-methods
"""Impressions labels."""
@@ -51,3 +61,8 @@ class Label(object): # pylint: disable=too-few-public-methods
# Treatment: control
# Label: not ready
NOT_READY = 'not ready'
+
+ # Condition: Prerequisites not met
+ # Treatment: Default treatment
+ # Label: prerequisites not met
+ PREREQUISITES_NOT_MET = "prerequisites not met"
diff --git a/splitio/models/notification.py b/splitio/models/notification.py
new file mode 100644
index 00000000..60b629e1
--- /dev/null
+++ b/splitio/models/notification.py
@@ -0,0 +1,227 @@
+"""Notification Module"""
+
+import json
+
+from enum import Enum
+
+
+class Type(Enum):
+ """Notification Type."""
+
+ SPLIT_UPDATE = 'SPLIT_UPDATE'
+ SPLIT_KILL = 'SPLIT_KILL'
+ SEGMENT_UPDATE = 'SEGMENT_UPDATE'
+ CONTROL = 'CONTROL'
+
+
+class Control(Enum):
+ """Control Type."""
+
+ STREAMING_PAUSED = 'STREAMING_PAUSED'
+ STREAMING_RESUMED = 'STREAMING_RESUMED'
+ STREAMING_DISABLED = 'STREAMING_DISABLED'
+
+
+class ControlNotification(object): # pylint: disable=too-many-instance-attributes
+ """ControlNotification model object."""
+
+ def __init__(self, channel, notification_type, control_type):
+ """
+ Class constructor.
+
+ :param channel: Channel of incoming notification
+ :type channel: str
+ :param notification_type: Type of incoming notification
+ :type notification_type: str
+ :param control_type: Control type of incoming CONTROL notification.
+ :type control_type: str
+
+ """
+ self._channel = channel
+ self._notification_type = Type(notification_type)
+ self._control_type = Control(control_type)
+
+ @property
+ def channel(self):
+ return self._channel
+
+ @property
+ def control_type(self):
+ return self._control_type
+
+ @property
+ def notification_type(self):
+ return self._notification_type
+
+
+class SegmentChangeNotification(object): # pylint: disable=too-many-instance-attributes
+ """SegmentChangeNotification model object."""
+
+ def __init__(self, channel, notification_type, change_number, segment_name):
+ """
+ Class constructor.
+
+ :param channel: Channel of incoming notification
+ :type channel: str
+ :param notification_type: Type of incoming notification
+ :type notification_type: str
+ :param change_number: ChangeNumber of incoming notification.
+ :type change_number: int
+ :param segment_name: Segment Name of incoming notification.
+ :type segment_name: str
+
+ """
+ self._channel = channel
+ self._notification_type = Type(notification_type)
+ self._change_number = change_number
+ self._segment_name = segment_name
+
+ @property
+ def channel(self):
+ return self._channel
+
+ @property
+ def change_number(self):
+ return self._change_number
+
+ @property
+ def notification_type(self):
+ return self._notification_type
+
+ @property
+ def segment_name(self):
+ return self._segment_name
+
+
+class SplitChangeNotification(object): # pylint: disable=too-many-instance-attributes
+ """SplitChangeNotification model object."""
+
+ def __init__(self, channel, notification_type, change_number):
+ """
+ Class constructor.
+
+ :param channel: Channel of incoming notification
+ :type channel: str
+ :param notification_type: Type of incoming notification
+ :type notification_type: str
+ :param change_number: ChangeNumber of incoming notification.
+ :type change_number: int
+
+ """
+ self._channel = channel
+ self._notification_type = Type(notification_type)
+ self._change_number = change_number
+
+ @property
+ def channel(self):
+ return self._channel
+
+ @property
+ def change_number(self):
+ return self._change_number
+
+ @property
+ def notification_type(self):
+ return self._notification_type
+
+
+class SplitKillNotification(object): # pylint: disable=too-many-instance-attributes
+ """SplitKillNotification model object."""
+
+ def __init__(self, channel, notification_type, change_number, default_treatment, split_name):
+ """
+ Class constructor.
+
+ :param channel: Channel of incoming notification
+ :type channel: str
+ :param notification_type: Type of incoming notification
+ :type notification_type: str
+ :param change_number: ChangeNumber of incoming notification.
+ :type change_number: int
+ :param default_treatment: Default treatment of incoming SPLIT_KILL notification.
+ :type default_treatment: str
+ :param split_name: Split Name of incoming SPLIT or SPLIT_KILL notification.
+ :type split_name: str
+
+ """
+ self._channel = channel
+ self._notification_type = Type(notification_type)
+ self._change_number = change_number
+ self._default_treatment = default_treatment
+ self._split_name = split_name
+
+ @property
+ def channel(self):
+ return self._channel
+
+ @property
+ def change_number(self):
+ return self._change_number
+
+ @property
+ def default_treatment(self):
+ return self._default_treatment
+
+ @property
+ def notification_type(self):
+ return self._notification_type
+
+ @property
+ def split_name(self):
+ return self._split_name
+
+class SdkInternalEventNotification(object): # pylint: disable=too-many-instance-attributes
+ """SdkInternalEventNotification model object."""
+
+ def __init__(self, internal_event, metadata):
+ """
+ Class constructor.
+
+ :param internal_event: internal event object
+ :type channel: SdkInternalEvent
+ :param metadata: metadata associated with event
+ :type change_number: EventsMetadata
+
+ """
+ self._internal_event = internal_event
+ self._metadata = metadata
+
+ @property
+ def internal_event(self):
+ return self._internal_event
+
+ @property
+ def metadata(self):
+ return self._metadata
+
+_NOTIFICATION_MAPPERS = {
+ Type.SPLIT_UPDATE: lambda c, d: SplitChangeNotification(c, Type.SPLIT_UPDATE, d['changeNumber']),
+ Type.SPLIT_KILL: lambda c, d: SplitKillNotification(c, Type.SPLIT_KILL, d['changeNumber'], d['defaultTreatment'], d['splitName']),
+ Type.SEGMENT_UPDATE: lambda c, d: SegmentChangeNotification(c, Type.SEGMENT_UPDATE, d['changeNumber'], d['segmentName']),
+ Type.CONTROL: lambda c, d: ControlNotification(c, Type.CONTROL, d['controlType'])
+}
+
+
+def wrap_notification(raw_data, channel):
+ """
+ Parse notification from raw notification payload
+
+ :param raw_data: data
+ :type raw_data: str
+ :param channel: Channel of incoming notification
+ :type channel: str
+ """
+ try:
+ if channel is None:
+ raise ValueError("channel cannot be None.")
+ raw_data = json.loads(raw_data)
+ notification_type = Type(raw_data['type'])
+ mapper = _NOTIFICATION_MAPPERS[notification_type]
+ return mapper(channel, raw_data)
+
+ except ValueError:
+ raise ValueError("Wrong notification type received.")
+ except KeyError:
+ raise KeyError("Could not parse notification.")
+ except TypeError:
+ raise TypeError("Wrong JSON format.")
diff --git a/splitio/models/rule_based_segments.py b/splitio/models/rule_based_segments.py
new file mode 100644
index 00000000..f7bf3f4d
--- /dev/null
+++ b/splitio/models/rule_based_segments.py
@@ -0,0 +1,195 @@
+"""RuleBasedSegment module."""
+
+from enum import Enum
+import logging
+
+from splitio.models import MatcherNotFoundException
+from splitio.models.splits import _DEFAULT_CONDITIONS_TEMPLATE
+from splitio.models.grammar import condition
+from splitio.models.splits import Status
+
+_LOGGER = logging.getLogger(__name__)
+
+class SegmentType(Enum):
+ """Segment type."""
+
+ STANDARD = "standard"
+ RULE_BASED = "rule-based"
+
+class RuleBasedSegment(object):
+ """RuleBasedSegment object class."""
+
+ def __init__(self, name, traffic_type_name, change_number, status, conditions, excluded):
+ """
+ Class constructor.
+
+ :param name: Segment name.
+ :type name: str
+ :param traffic_type_name: traffic type name.
+ :type traffic_type_name: str
+ :param change_number: change number.
+ :type change_number: str
+ :param status: status.
+ :type status: str
+ :param conditions: List of conditions belonging to the segment.
+ :type conditions: List
+ :param excluded: excluded objects.
+ :type excluded: Excluded
+ """
+ self._name = name
+ self._traffic_type_name = traffic_type_name
+ self._change_number = change_number
+ self._conditions = conditions
+ self._excluded = excluded
+ try:
+ self._status = Status(status)
+ except ValueError:
+ self._status = Status.ARCHIVED
+
+ @property
+ def name(self):
+ """Return segment name."""
+ return self._name
+
+ @property
+ def traffic_type_name(self):
+ """Return traffic type name."""
+ return self._traffic_type_name
+
+ @property
+ def change_number(self):
+ """Return change number."""
+ return self._change_number
+
+ @property
+ def status(self):
+ """Return status."""
+ return self._status
+
+ @property
+ def conditions(self):
+ """Return conditions."""
+ return self._conditions
+
+ @property
+ def excluded(self):
+ """Return excluded."""
+ return self._excluded
+
+ def to_json(self):
+ """Return a JSON representation of this rule based segment."""
+ return {
+ 'changeNumber': self.change_number,
+ 'trafficTypeName': self.traffic_type_name,
+ 'name': self.name,
+ 'status': self.status.value,
+ 'conditions': [c.to_json() for c in self.conditions],
+ 'excluded': self.excluded.to_json()
+ }
+
+ def get_condition_segment_names(self):
+ segments = set()
+ for condition in self._conditions:
+ for matcher in condition.matchers:
+ if matcher._matcher_type == 'IN_SEGMENT':
+ segments.add(matcher.to_json()['userDefinedSegmentMatcherData']['segmentName'])
+ return segments
+
+def from_raw(raw_rule_based_segment):
+ """
+ Parse a Rule based segment from a JSON portion of splitChanges.
+
+ :param raw_rule_based_segment: JSON object extracted from a splitChange's response
+ :type raw_rule_based_segment: dict
+
+ :return: A parsed RuleBasedSegment object capable of performing evaluations.
+ :rtype: RuleBasedSegment
+ """
+ try:
+ conditions = [condition.from_raw(c) for c in raw_rule_based_segment['conditions']]
+ except MatcherNotFoundException as e:
+ _LOGGER.error(str(e))
+ _LOGGER.debug("Using default conditions template for feature flag: %s", raw_rule_based_segment['name'])
+ conditions = [condition.from_raw(_DEFAULT_CONDITIONS_TEMPLATE)]
+
+ if raw_rule_based_segment.get('excluded') == None:
+ raw_rule_based_segment['excluded'] = {'keys': [], 'segments': []}
+
+ if raw_rule_based_segment['excluded'].get('keys') == None:
+ raw_rule_based_segment['excluded']['keys'] = []
+
+ if raw_rule_based_segment['excluded'].get('segments') == None:
+ raw_rule_based_segment['excluded']['segments'] = []
+
+ return RuleBasedSegment(
+ raw_rule_based_segment['name'],
+ raw_rule_based_segment['trafficTypeName'],
+ raw_rule_based_segment['changeNumber'],
+ raw_rule_based_segment['status'],
+ conditions,
+ Excluded(raw_rule_based_segment['excluded']['keys'], raw_rule_based_segment['excluded']['segments'])
+ )
+
+class Excluded(object):
+
+ def __init__(self, keys, segments):
+ """
+ Class constructor.
+
+ :param keys: List of excluded keys in a rule based segment.
+ :type keys: List
+ :param segments: List of excluded segments in a rule based segment.
+ :type segments: List
+ """
+ self._keys = keys
+ self._segments = [ExcludedSegment(segment['name'], segment['type']) for segment in segments]
+
+ def get_excluded_keys(self):
+ """Return excluded keys."""
+ return self._keys
+
+ def get_excluded_segments(self):
+ """Return excluded segments"""
+ return self._segments
+
+ def get_excluded_standard_segments(self):
+ """Return excluded segments"""
+ to_return = []
+ for segment in self._segments:
+ if segment.type == SegmentType.STANDARD:
+ to_return.append(segment.name)
+ return to_return
+
+ def to_json(self):
+ """Return a JSON representation of this object."""
+ return {
+ 'keys': self._keys,
+ 'segments': self._segments
+ }
+
+class ExcludedSegment(object):
+
+ def __init__(self, name, type):
+ """
+ Class constructor.
+
+ :param name: rule based segment name
+ :type name: str
+ :param type: segment type
+ :type type: str
+ """
+ self._name = name
+ try:
+ self._type = SegmentType(type)
+ except ValueError:
+ self._type = SegmentType.STANDARD
+
+ @property
+ def name(self):
+ """Return name."""
+ return self._name
+
+ @property
+ def type(self):
+ """Return type."""
+ return self._type
diff --git a/splitio/models/splits.py b/splitio/models/splits.py
index aaf1eb85..47e69284 100644
--- a/splitio/models/splits.py
+++ b/splitio/models/splits.py
@@ -1,18 +1,67 @@
"""Splits module."""
-from __future__ import absolute_import, division, print_function, unicode_literals
-
from enum import Enum
from collections import namedtuple
-from future.utils import python_2_unicode_compatible
+import logging
+from splitio.models import MatcherNotFoundException
from splitio.models.grammar import condition
+_LOGGER = logging.getLogger(__name__)
SplitView = namedtuple(
'SplitView',
- ['name', 'traffic_type', 'killed', 'treatments', 'change_number', 'configs']
+ ['name', 'traffic_type', 'killed', 'treatments', 'change_number', 'configs', 'default_treatment', 'sets', 'impressions_disabled', 'prerequisites']
)
+_DEFAULT_CONDITIONS_TEMPLATE = {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": None,
+ "matcherType": "ALL_KEYS",
+ "negate": False,
+ "userDefinedSegmentMatcherData": None,
+ "whitelistMatcherData": None,
+ "unaryNumericMatcherData": None,
+ "betweenMatcherData": None,
+ "dependencyMatcherData": None,
+ "booleanMatcherData": None,
+ "stringMatcherData": None
+ }]
+ },
+ "partitions": [
+ {
+ "treatment": "control",
+ "size": 100
+ }
+ ],
+ "label": "targeting rule type unsupported by sdk"
+}
+
+class Prerequisites(object):
+ """Prerequisites."""
+ def __init__(self, feature_flag_name, treatments):
+ self._feature_flag_name = feature_flag_name
+ self._treatments = treatments
+
+ @property
+ def feature_flag_name(self):
+ """Return featur eflag name."""
+ return self._feature_flag_name
+
+ @property
+ def treatments(self):
+ """Return treatments."""
+ return self._treatments
+
+ def to_json(self):
+ to_return = []
+ for feature_flag_name in self._feature_flag_name:
+ to_return.append({"n": feature_flag_name, "ts": [treatment for treatment in self._treatments]})
+
+ return to_return
class Status(Enum):
"""Split status."""
@@ -28,10 +77,10 @@ class HashAlgorithm(Enum):
MURMUR = 2
-class Split(object): #pylint: disable=too-many-instance-attributes
+class Split(object): # pylint: disable=too-many-instance-attributes
"""Split model object."""
- def __init__( #pylint: disable=too-many-arguments
+ def __init__( # pylint: disable=too-many-arguments
self,
name,
seed,
@@ -44,7 +93,10 @@ def __init__( #pylint: disable=too-many-arguments
algo=None,
traffic_allocation=None,
traffic_allocation_seed=None,
- configurations=None
+ configurations=None,
+ sets=None,
+ impressions_disabled=None,
+ prerequisites = None
):
"""
Class constructor.
@@ -65,6 +117,12 @@ def __init__( #pylint: disable=too-many-arguments
:type traffic_allocation: int
:pram traffic_allocation_seed: Seed used to hash traffic allocation.
:type traffic_allocation_seed: int
+ :pram sets: list of flag sets
+ :type sets: list
+ :pram impressions_disabled: track impressions flag
+ :type impressions_disabled: boolean
+ :pram prerequisites: prerequisites
+ :type prerequisites: List of Preqreuisites
"""
self._name = name
self._seed = seed
@@ -93,6 +151,9 @@ def __init__( #pylint: disable=too-many-arguments
self._algo = HashAlgorithm.LEGACY
self._configurations = configurations
+ self._sets = set(sets) if sets is not None else set()
+ self._impressions_disabled = impressions_disabled if impressions_disabled is not None else False
+ self._prerequisites = prerequisites if prerequisites is not None else []
@property
def name(self):
@@ -149,6 +210,21 @@ def traffic_allocation_seed(self):
"""Return the traffic allocation seed of the split."""
return self._traffic_allocation_seed
+ @property
+ def sets(self):
+ """Return the flag sets of the split."""
+ return self._sets
+
+ @property
+ def impressions_disabled(self):
+ """Return impressions_disabled of the split."""
+ return self._impressions_disabled
+
+ @property
+ def prerequisites(self):
+ """Return prerequisites of the split."""
+ return self._prerequisites
+
def get_configurations_for(self, treatment):
"""Return the mapping of treatments to configurations."""
return self._configurations.get(treatment) if self._configurations else None
@@ -176,7 +252,10 @@ def to_json(self):
'defaultTreatment': self.default_treatment,
'algo': self.algo.value,
'conditions': [c.to_json() for c in self.conditions],
- 'configurations': self._configurations
+ 'configurations': self._configurations,
+ 'sets': list(self._sets),
+ 'impressionsDisabled': self._impressions_disabled,
+ 'prerequisites': [prerequisite.to_json() for prerequisite in self._prerequisites]
}
def to_split_view(self):
@@ -192,10 +271,26 @@ def to_split_view(self):
self.killed,
list(set(part.treatment for cond in self.conditions for part in cond.partitions)),
self.change_number,
- self._configurations if self._configurations is not None else {}
+ self._configurations if self._configurations is not None else {},
+ self._default_treatment,
+ list(self._sets) if self._sets is not None else [],
+ self._impressions_disabled,
+ self._prerequisites
)
- @python_2_unicode_compatible
+ def local_kill(self, default_treatment, change_number):
+ """
+ Perform split kill.
+
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ self._default_treatment = default_treatment
+ self._change_number = change_number
+ self._killed = True
+
def __str__(self):
"""Return string representation."""
return 'name: {name}, seed: {seed}, killed: {killed}, ' \
@@ -217,6 +312,12 @@ def from_raw(raw_split):
:return: A parsed Split object capable of performing evaluations.
:rtype: Split
"""
+ try:
+ conditions = [condition.from_raw(c) for c in raw_split['conditions']]
+ except MatcherNotFoundException as e:
+ _LOGGER.error(str(e))
+ _LOGGER.debug("Using default conditions template for feature flag: %s", raw_split['name'])
+ conditions = [condition.from_raw(_DEFAULT_CONDITIONS_TEMPLATE)]
return Split(
raw_split['name'],
raw_split['seed'],
@@ -225,9 +326,19 @@ def from_raw(raw_split):
raw_split['trafficTypeName'],
raw_split['status'],
raw_split['changeNumber'],
- [condition.from_raw(c) for c in raw_split['conditions']],
+ conditions,
raw_split.get('algo'),
traffic_allocation=raw_split.get('trafficAllocation'),
traffic_allocation_seed=raw_split.get('trafficAllocationSeed'),
- configurations=raw_split.get('configurations')
+ configurations=raw_split.get('configurations'),
+ sets=set(raw_split.get('sets')) if raw_split.get('sets') is not None else [],
+ impressions_disabled=raw_split.get('impressionsDisabled') if raw_split.get('impressionsDisabled') is not None else False,
+ prerequisites=from_raw_prerequisites(raw_split.get('prerequisites')) if raw_split.get('prerequisites') is not None else []
)
+
+def from_raw_prerequisites(raw_prerequisites):
+ to_return = []
+ for prerequisite in raw_prerequisites:
+ to_return.append(Prerequisites(prerequisite['n'], prerequisite['ts']))
+
+ return to_return
\ No newline at end of file
diff --git a/splitio/models/telemetry.py b/splitio/models/telemetry.py
index e4739328..c9715da4 100644
--- a/splitio/models/telemetry.py
+++ b/splitio/models/telemetry.py
@@ -1,6 +1,12 @@
"""SDK Telemetry helpers."""
from bisect import bisect_left
+import threading
+import os
+from enum import Enum
+import abc
+from splitio.engine.impressions import ImpressionsMode
+from splitio.optional.loaders import asyncio
BUCKETS = (
1000, 1500, 2250, 3375, 5063,
@@ -9,8 +15,132 @@
437894, 656841, 985261, 1477892, 2216838,
3325257, 4987885, 7481828
)
+
MAX_LATENCY = 7481828
+MAX_LATENCY_BUCKET_COUNT = 23
+MAX_STREAMING_EVENTS = 20
+MAX_TAGS = 10
+
+class CounterConstants(Enum):
+ """Impressions and events counters constants"""
+ IMPRESSIONS_QUEUED = 'impressionsQueued'
+ IMPRESSIONS_DEDUPED = 'impressionsDeduped'
+ IMPRESSIONS_DROPPED = 'impressionsDropped'
+ EVENTS_QUEUED = 'eventsQueued'
+ EVENTS_DROPPED = 'eventsDropped'
+
+class _ConfigParams(Enum):
+ """Config parameters constants"""
+ SPLITS_REFRESH_RATE = 'featuresRefreshRate'
+ SEGMENTS_REFRESH_RATE = 'segmentsRefreshRate'
+ IMPRESSIONS_REFRESH_RATE = 'impressionsRefreshRate'
+ EVENTS_REFRESH_RATE = 'eventsPushRate'
+ TELEMETRY_REFRESH_RATE = 'metricsRefreshRate'
+ OPERATION_MODE = 'operationMode'
+ STORAGE_TYPE = 'storageType'
+ STREAMING_ENABLED = 'streamingEnabled'
+ IMPRESSIONS_QUEUE_SIZE = 'impressionsQueueSize'
+ EVENTS_QUEUE_SIZE = 'eventsQueueSize'
+ IMPRESSIONS_MODE = 'impressionsMode'
+ IMPRESSIONS_LISTENER = 'impressionListener'
+
+class _ExtraConfig(Enum):
+ """Extra config constants"""
+ ACTIVE_FACTORY_COUNT = 'activeFactoryCount'
+ REDUNDANT_FACTORY_COUNT = 'redundantFactoryCount'
+ BLOCK_UNTIL_READY_TIMEOUT = 'blockUntilReadyTimeout'
+ NOT_READY = 'notReady'
+ TIME_UNTIL_READY = 'timeUntilReady'
+ REFRESH_RATE = 'refreshRate'
+ HTTP_PROXY = 'httpProxy'
+ HTTPS_PROXY_ENV = 'HTTPS_PROXY'
+
+class _ApiURLs(Enum):
+ """Api URL constants"""
+ SDK_URL = 'sdk_url'
+ EVENTS_URL = 'events_url'
+ AUTH_URL = 'auth_url'
+ STREAMING_URL = 'streaming_url'
+ TELEMETRY_URL = 'telemetry_url'
+ URL_OVERRIDE = 'urlOverride'
+
+class HTTPExceptionsAndLatencies(Enum):
+ """Sync exceptions and latencies constants"""
+ HTTP_ERRORS = 'httpErrors'
+ HTTP_LATENCIES = 'httpLatencies'
+ SPLIT = 'split'
+ SEGMENT = 'segment'
+ IMPRESSION = 'impression'
+ IMPRESSION_COUNT = 'impressionCount'
+ EVENT = 'event'
+ TELEMETRY = 'telemetry'
+ TOKEN = 'token'
+
+class MethodExceptionsAndLatencies(Enum):
+ """Method exceptions and latencies constants"""
+ METHOD_LATENCIES = 'methodLatencies'
+ METHOD_EXCEPTIONS = 'methodExceptions'
+ TREATMENT = 'treatment'
+ TREATMENTS = 'treatments'
+ TREATMENT_WITH_CONFIG = 'treatment_with_config'
+ TREATMENTS_WITH_CONFIG = 'treatments_with_config'
+ TREATMENTS_BY_FLAG_SET = 'treatments_by_flag_set'
+ TREATMENTS_BY_FLAG_SETS = 'treatments_by_flag_sets'
+ TREATMENTS_WITH_CONFIG_BY_FLAG_SET = 'treatments_with_config_by_flag_set'
+ TREATMENTS_WITH_CONFIG_BY_FLAG_SETS = 'treatments_with_config_by_flag_sets'
+ TRACK = 'track'
+
+class _LastSynchronizationConstants(Enum):
+ """Last sync constants"""
+ LAST_SYNCHRONIZATIONS = 'lastSynchronizations'
+
+class SSEStreamingStatus(Enum):
+ """SSE streaming status enums"""
+ ENABLED = 0
+ DISABLED = 1
+ PAUSED = 2
+
+class SSEConnectionError(Enum):
+ """SSE Connection Error enums"""
+ REQUESTED = 0
+ NON_REQUESTED = 1
+
+class SSESyncMode(Enum):
+ """SSE sync mode enums"""
+ STREAMING = 0
+ POLLING = 1
+class _StreamingEventsConstant(Enum):
+ """Storage types constant"""
+ STREAMING_EVENTS = 'streamingEvents'
+
+class StreamingEventTypes(Enum):
+ """Streaming event types constants"""
+ CONNECTION_ESTABLISHED = 0
+ OCCUPANCY_PRI = 10
+ OCCUPANCY_SEC = 20
+ STREAMING_STATUS = 30
+ SSE_CONNECTION_ERROR = 40
+ TOKEN_REFRESH = 50
+ ABLY_ERROR = 60
+ SYNC_MODE_UPDATE = 70
+
+class StorageType(Enum):
+ """Storage types constants"""
+ MEMORY = 'memory'
+ REDIS = 'redis'
+ PLUGGABLE = 'pluggable'
+
+class OperationMode(Enum):
+ """Storage modes constants"""
+ STANDALONE = 'standalone'
+ CONSUMER = 'consumer'
+ PARTIAL_CONSUMER = 'partial_consumer'
+
+class UpdateFromSSE(Enum):
+ """Update from sse constants"""
+ SPLIT_UPDATE = 'sp'
+ RBS_UPDATE = 'rbs'
def get_latency_bucket_index(micros):
"""
@@ -25,3 +155,1801 @@ def get_latency_bucket_index(micros):
return len(BUCKETS) - 1
return bisect_left(BUCKETS, micros)
+
+class MethodLatenciesBase(object, metaclass=abc.ABCMeta):
+ """
+ Method Latency base class
+
+ """
+ def _reset_all(self):
+ """Reset variables"""
+ self._treatment = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._treatments = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._treatment_with_config = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._treatments_with_config = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._treatments_by_flag_set = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._treatments_by_flag_sets = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._treatments_with_config_by_flag_set = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._treatments_with_config_by_flag_sets = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._track = [0] * MAX_LATENCY_BUCKET_COUNT
+
+ @abc.abstractmethod
+ def add_latency(self, method, latency):
+ """
+ Add Latency method
+ """
+
+ @abc.abstractmethod
+ def pop_all(self):
+ """
+ Pop all latencies
+ """
+
+class MethodLatencies(MethodLatenciesBase):
+ """
+ Method Latency class
+
+ """
+ def __init__(self):
+ """Constructor"""
+ self._lock = threading.RLock()
+ with self._lock:
+ self._reset_all()
+
+ def add_latency(self, method, latency):
+ """
+ Add Latency method
+
+ :param method: passed method name
+ :type method: str
+ :param latency: amount of latency in microseconds
+ :type latency: int
+ """
+ latency_bucket = get_latency_bucket_index(latency)
+ with self._lock:
+ if method == MethodExceptionsAndLatencies.TREATMENT:
+ self._treatment[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS:
+ self._treatments[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG:
+ self._treatment_with_config[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG:
+ self._treatments_with_config[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET:
+ self._treatments_by_flag_set[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS:
+ self._treatments_by_flag_sets[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET:
+ self._treatments_with_config_by_flag_set[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS:
+ self._treatments_with_config_by_flag_sets[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TRACK:
+ self._track[latency_bucket] += 1
+ else:
+ return
+
+ def pop_all(self):
+ """
+ Pop all latencies
+
+ :return: Dictonary of latencies
+ :rtype: dict
+ """
+ with self._lock:
+ latencies = {MethodExceptionsAndLatencies.METHOD_LATENCIES.value: {
+ MethodExceptionsAndLatencies.TREATMENT.value: self._treatment,
+ MethodExceptionsAndLatencies.TREATMENTS.value: self._treatments,
+ MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG.value: self._treatment_with_config,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG.value: self._treatments_with_config,
+ MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET.value: self._treatments_by_flag_set,
+ MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS.value: self._treatments_by_flag_sets,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET.value: self._treatments_with_config_by_flag_set,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS.value: self._treatments_with_config_by_flag_sets,
+ MethodExceptionsAndLatencies.TRACK.value: self._track}
+ }
+ self._reset_all()
+ return latencies
+
+
+class MethodLatenciesAsync(MethodLatenciesBase):
+ """
+ Method async Latency class
+
+ """
+ @classmethod
+ async def create(cls):
+ """Constructor"""
+ self = cls()
+ self._lock = asyncio.Lock()
+ async with self._lock:
+ self._reset_all()
+ return self
+
+ async def add_latency(self, method, latency):
+ """
+ Add Latency method
+
+ :param method: passed method name
+ :type method: str
+ :param latency: amount of latency in microseconds
+ :type latency: int
+ """
+ latency_bucket = get_latency_bucket_index(latency)
+ async with self._lock:
+ if method == MethodExceptionsAndLatencies.TREATMENT:
+ self._treatment[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS:
+ self._treatments[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG:
+ self._treatment_with_config[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG:
+ self._treatments_with_config[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET:
+ self._treatments_by_flag_set[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS:
+ self._treatments_by_flag_sets[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET:
+ self._treatments_with_config_by_flag_set[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS:
+ self._treatments_with_config_by_flag_sets[latency_bucket] += 1
+ elif method == MethodExceptionsAndLatencies.TRACK:
+ self._track[latency_bucket] += 1
+ else:
+ return
+
+ async def pop_all(self):
+ """
+ Pop all latencies
+
+ :return: Dictonary of latencies
+ :rtype: dict
+ """
+ async with self._lock:
+ latencies = {MethodExceptionsAndLatencies.METHOD_LATENCIES.value: {
+ MethodExceptionsAndLatencies.TREATMENT.value: self._treatment,
+ MethodExceptionsAndLatencies.TREATMENTS.value: self._treatments,
+ MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG.value: self._treatment_with_config,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG.value: self._treatments_with_config,
+ MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET.value: self._treatments_by_flag_set,
+ MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS.value: self._treatments_by_flag_sets,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET.value: self._treatments_with_config_by_flag_set,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS.value: self._treatments_with_config_by_flag_sets,
+ MethodExceptionsAndLatencies.TRACK.value: self._track}
+ }
+ self._reset_all()
+ return latencies
+
+
+class HTTPLatenciesBase(object, metaclass=abc.ABCMeta):
+ """
+ HTTP Latency class
+
+ """
+ def _reset_all(self):
+ """Reset variables"""
+ self._split = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._segment = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._impression = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._impression_count = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._event = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._telemetry = [0] * MAX_LATENCY_BUCKET_COUNT
+ self._token = [0] * MAX_LATENCY_BUCKET_COUNT
+
+ @abc.abstractmethod
+ def add_latency(self, resource, latency):
+ """
+ Add Latency method
+ """
+
+ @abc.abstractmethod
+ def pop_all(self):
+ """
+ Pop all latencies
+ """
+
+
+class HTTPLatencies(HTTPLatenciesBase):
+ """
+ HTTP Latency class
+
+ """
+ def __init__(self):
+ """Constructor"""
+ self._lock = threading.RLock()
+ with self._lock:
+ self._reset_all()
+
+ def add_latency(self, resource, latency):
+ """
+ Add Latency method
+
+ :param resource: passed resource name
+ :type resource: str
+ :param latency: amount of latency in microseconds
+ :type latency: int
+ """
+ latency_bucket = get_latency_bucket_index(latency)
+ with self._lock:
+ if resource == HTTPExceptionsAndLatencies.SPLIT:
+ self._split[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.SEGMENT:
+ self._segment[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION:
+ self._impression[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ self._impression_count[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.EVENT:
+ self._event[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.TELEMETRY:
+ self._telemetry[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.TOKEN:
+ self._token[latency_bucket] += 1
+ else:
+ return
+
+ def pop_all(self):
+ """
+ Pop all latencies
+
+ :return: Dictonary of latencies
+ :rtype: dict
+ """
+ with self._lock:
+ latencies = {HTTPExceptionsAndLatencies.HTTP_LATENCIES.value: {HTTPExceptionsAndLatencies.SPLIT.value: self._split, HTTPExceptionsAndLatencies.SEGMENT.value: self._segment, HTTPExceptionsAndLatencies.IMPRESSION.value: self._impression,
+ HTTPExceptionsAndLatencies.IMPRESSION_COUNT.value: self._impression_count, HTTPExceptionsAndLatencies.EVENT.value: self._event,
+ HTTPExceptionsAndLatencies.TELEMETRY.value: self._telemetry, HTTPExceptionsAndLatencies.TOKEN.value: self._token}
+ }
+ self._reset_all()
+ return latencies
+
+
+class HTTPLatenciesAsync(HTTPLatenciesBase):
+ """
+ HTTP Latency async class
+
+ """
+ @classmethod
+ async def create(cls):
+ """Constructor"""
+ self = cls()
+ self._lock = asyncio.Lock()
+ async with self._lock:
+ self._reset_all()
+ return self
+
+ async def add_latency(self, resource, latency):
+ """
+ Add Latency method
+
+ :param resource: passed resource name
+ :type resource: str
+ :param latency: amount of latency in microseconds
+ :type latency: int
+ """
+ latency_bucket = get_latency_bucket_index(latency)
+ async with self._lock:
+ if resource == HTTPExceptionsAndLatencies.SPLIT:
+ self._split[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.SEGMENT:
+ self._segment[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION:
+ self._impression[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ self._impression_count[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.EVENT:
+ self._event[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.TELEMETRY:
+ self._telemetry[latency_bucket] += 1
+ elif resource == HTTPExceptionsAndLatencies.TOKEN:
+ self._token[latency_bucket] += 1
+ else:
+ return
+
+ async def pop_all(self):
+ """
+ Pop all latencies
+
+ :return: Dictonary of latencies
+ :rtype: dict
+ """
+ async with self._lock:
+ latencies = {HTTPExceptionsAndLatencies.HTTP_LATENCIES.value: {HTTPExceptionsAndLatencies.SPLIT.value: self._split, HTTPExceptionsAndLatencies.SEGMENT.value: self._segment, HTTPExceptionsAndLatencies.IMPRESSION.value: self._impression,
+ HTTPExceptionsAndLatencies.IMPRESSION_COUNT.value: self._impression_count, HTTPExceptionsAndLatencies.EVENT.value: self._event,
+ HTTPExceptionsAndLatencies.TELEMETRY.value: self._telemetry, HTTPExceptionsAndLatencies.TOKEN.value: self._token}
+ }
+ self._reset_all()
+ return latencies
+
+
+class MethodExceptionsBase(object, metaclass=abc.ABCMeta):
+ """
+ Method exceptions base class
+
+ """
+ def _reset_all(self):
+ """Reset variables"""
+ self._treatment = 0
+ self._treatments = 0
+ self._treatment_with_config = 0
+ self._treatments_with_config = 0
+ self._treatments_by_flag_set = 0
+ self._treatments_by_flag_sets = 0
+ self._treatments_with_config_by_flag_set = 0
+ self._treatments_with_config_by_flag_sets = 0
+ self._track = 0
+
+ @abc.abstractmethod
+ def add_exception(self, method):
+ """
+ Add exceptions method
+ """
+
+ @abc.abstractmethod
+ def pop_all(self):
+ """
+ Pop all exceptions
+ """
+
+
+class MethodExceptions(MethodExceptionsBase):
+ """
+ Method exceptions class
+
+ """
+ def __init__(self):
+ """Constructor"""
+ self._lock = threading.RLock()
+ with self._lock:
+ self._reset_all()
+
+ def add_exception(self, method):
+ """
+ Add exceptions method
+
+ :param method: passed method name
+ :type method: str
+ """
+ with self._lock:
+ if method == MethodExceptionsAndLatencies.TREATMENT:
+ self._treatment += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS:
+ self._treatments += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG:
+ self._treatment_with_config += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG:
+ self._treatments_with_config += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET:
+ self._treatments_by_flag_set += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS:
+ self._treatments_by_flag_sets += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET:
+ self._treatments_with_config_by_flag_set += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS:
+ self._treatments_with_config_by_flag_sets += 1
+ elif method == MethodExceptionsAndLatencies.TRACK:
+ self._track += 1
+ else:
+ return
+
+ def pop_all(self):
+ """
+ Pop all exceptions
+
+ :return: Dictonary of exceptions
+ :rtype: dict
+ """
+ with self._lock:
+ exceptions = {
+ MethodExceptionsAndLatencies.METHOD_EXCEPTIONS.value: {
+ MethodExceptionsAndLatencies.TREATMENT.value: self._treatment,
+ MethodExceptionsAndLatencies.TREATMENTS.value: self._treatments,
+ MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG.value: self._treatment_with_config,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG.value: self._treatments_with_config,
+ MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET.value: self._treatments_by_flag_set,
+ MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS.value: self._treatments_by_flag_sets,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET.value: self._treatments_with_config_by_flag_set,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS.value: self._treatments_with_config_by_flag_sets,
+ MethodExceptionsAndLatencies.TRACK.value: self._track}
+ }
+ self._reset_all()
+ return exceptions
+
+
+class MethodExceptionsAsync(MethodExceptionsBase):
+ """
+ Method async exceptions class
+
+ """
+ @classmethod
+ async def create(cls):
+ """Constructor"""
+ self = cls()
+ self._lock = asyncio.Lock()
+ async with self._lock:
+ self._reset_all()
+ return self
+
+ async def add_exception(self, method):
+ """
+ Add exceptions method
+
+ :param method: passed method name
+ :type method: str
+ """
+ async with self._lock:
+ if method == MethodExceptionsAndLatencies.TREATMENT:
+ self._treatment += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS:
+ self._treatments += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG:
+ self._treatment_with_config += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG:
+ self._treatments_with_config += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET:
+ self._treatments_by_flag_set += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS:
+ self._treatments_by_flag_sets += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET:
+ self._treatments_with_config_by_flag_set += 1
+ elif method == MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS:
+ self._treatments_with_config_by_flag_sets += 1
+ elif method == MethodExceptionsAndLatencies.TRACK:
+ self._track += 1
+ else:
+ return
+
+ async def pop_all(self):
+ """
+ Pop all exceptions
+
+ :return: Dictonary of exceptions
+ :rtype: dict
+ """
+ async with self._lock:
+ exceptions = {
+ MethodExceptionsAndLatencies.METHOD_EXCEPTIONS.value: {
+ MethodExceptionsAndLatencies.TREATMENT.value: self._treatment,
+ MethodExceptionsAndLatencies.TREATMENTS.value: self._treatments,
+ MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG.value: self._treatment_with_config,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG.value: self._treatments_with_config,
+ MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET.value: self._treatments_by_flag_set,
+ MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS.value: self._treatments_by_flag_sets,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET.value: self._treatments_with_config_by_flag_set,
+ MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS.value: self._treatments_with_config_by_flag_sets,
+ MethodExceptionsAndLatencies.TRACK.value: self._track}
+ }
+ self._reset_all()
+ return exceptions
+
+
+class LastSynchronizationBase(object, metaclass=abc.ABCMeta):
+ """
+ Last Synchronization info base class
+
+ """
+ def _reset_all(self):
+ """Reset variables"""
+ self._split = 0
+ self._segment = 0
+ self._impression = 0
+ self._impression_count = 0
+ self._event = 0
+ self._telemetry = 0
+ self._token = 0
+
+ @abc.abstractmethod
+ def add_latency(self, resource, sync_time):
+ """
+ Add Latency method
+ """
+
+ @abc.abstractmethod
+ def get_all(self):
+ """
+ get all exceptions
+ """
+
+class LastSynchronization(LastSynchronizationBase):
+ """
+ Last Synchronization info class
+
+ """
+ def __init__(self):
+ """Constructor"""
+ self._lock = threading.RLock()
+ with self._lock:
+ self._reset_all()
+
+ def add_latency(self, resource, sync_time):
+ """
+ Add Latency method
+
+ :param resource: passed resource name
+ :type resource: str
+ :param sync_time: amount of last sync time
+ :type sync_time: int
+ """
+ with self._lock:
+ if resource == HTTPExceptionsAndLatencies.SPLIT:
+ self._split = sync_time
+ elif resource == HTTPExceptionsAndLatencies.SEGMENT:
+ self._segment = sync_time
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION:
+ self._impression = sync_time
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ self._impression_count = sync_time
+ elif resource == HTTPExceptionsAndLatencies.EVENT:
+ self._event = sync_time
+ elif resource == HTTPExceptionsAndLatencies.TELEMETRY:
+ self._telemetry = sync_time
+ elif resource == HTTPExceptionsAndLatencies.TOKEN:
+ self._token = sync_time
+ else:
+ return
+
+ def get_all(self):
+ """
+ get all exceptions
+
+ :return: Dictonary of latencies
+ :rtype: dict
+ """
+ with self._lock:
+ return {
+ _LastSynchronizationConstants.LAST_SYNCHRONIZATIONS.value: {
+ HTTPExceptionsAndLatencies.SPLIT.value: self._split,
+ HTTPExceptionsAndLatencies.SEGMENT.value: self._segment,
+ HTTPExceptionsAndLatencies.IMPRESSION.value: self._impression,
+ HTTPExceptionsAndLatencies.IMPRESSION_COUNT.value: self._impression_count,
+ HTTPExceptionsAndLatencies.EVENT.value: self._event,
+ HTTPExceptionsAndLatencies.TELEMETRY.value: self._telemetry,
+ HTTPExceptionsAndLatencies.TOKEN.value: self._token}
+ }
+
+class LastSynchronizationAsync(LastSynchronizationBase):
+ """
+ Last Synchronization async info class
+
+ """
+ @classmethod
+ async def create(cls):
+ """Constructor"""
+ self = cls()
+ self._lock = asyncio.Lock()
+ async with self._lock:
+ self._reset_all()
+ return self
+
+ async def add_latency(self, resource, sync_time):
+ """
+ Add Latency method
+
+ :param resource: passed resource name
+ :type resource: str
+ :param sync_time: amount of last sync time
+ :type sync_time: int
+ """
+ async with self._lock:
+ if resource == HTTPExceptionsAndLatencies.SPLIT:
+ self._split = sync_time
+ elif resource == HTTPExceptionsAndLatencies.SEGMENT:
+ self._segment = sync_time
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION:
+ self._impression = sync_time
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ self._impression_count = sync_time
+ elif resource == HTTPExceptionsAndLatencies.EVENT:
+ self._event = sync_time
+ elif resource == HTTPExceptionsAndLatencies.TELEMETRY:
+ self._telemetry = sync_time
+ elif resource == HTTPExceptionsAndLatencies.TOKEN:
+ self._token = sync_time
+ else:
+ return
+
+ async def get_all(self):
+ """
+ get all exceptions
+
+ :return: Dictonary of latencies
+ :rtype: dict
+ """
+ async with self._lock:
+ return {
+ _LastSynchronizationConstants.LAST_SYNCHRONIZATIONS.value: {
+ HTTPExceptionsAndLatencies.SPLIT.value: self._split,
+ HTTPExceptionsAndLatencies.SEGMENT.value: self._segment,
+ HTTPExceptionsAndLatencies.IMPRESSION.value: self._impression,
+ HTTPExceptionsAndLatencies.IMPRESSION_COUNT.value: self._impression_count,
+ HTTPExceptionsAndLatencies.EVENT.value: self._event,
+ HTTPExceptionsAndLatencies.TELEMETRY.value: self._telemetry,
+ HTTPExceptionsAndLatencies.TOKEN.value: self._token}
+ }
+
+
+class HTTPErrorsBase(object, metaclass=abc.ABCMeta):
+ """
+ Http errors base class
+
+ """
+ def _reset_all(self):
+ """Reset variables"""
+ self._split = {}
+ self._segment = {}
+ self._impression = {}
+ self._impression_count = {}
+ self._event = {}
+ self._telemetry = {}
+ self._token = {}
+
+ @abc.abstractmethod
+ def add_error(self, resource, status):
+ """
+ Add Latency method
+ """
+
+ @abc.abstractmethod
+ def pop_all(self):
+ """
+ Pop all errors
+ """
+
+
+class HTTPErrors(HTTPErrorsBase):
+ """
+ Http errors class
+
+ """
+ def __init__(self):
+ """Constructor"""
+ self._lock = threading.RLock()
+ with self._lock:
+ self._reset_all()
+
+ def add_error(self, resource, status):
+ """
+ Add Latency method
+
+ :param resource: passed resource name
+ :type resource: str
+ :param status: http error code
+ :type status: str
+ """
+ status = str(status)
+ with self._lock:
+ if resource == HTTPExceptionsAndLatencies.SPLIT:
+ if status not in self._split:
+ self._split[status] = 0
+ self._split[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.SEGMENT:
+ if status not in self._segment:
+ self._segment[status] = 0
+ self._segment[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION:
+ if status not in self._impression:
+ self._impression[status] = 0
+ self._impression[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ if status not in self._impression_count:
+ self._impression_count[status] = 0
+ self._impression_count[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.EVENT:
+ if status not in self._event:
+ self._event[status] = 0
+ self._event[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.TELEMETRY:
+ if status not in self._telemetry:
+ self._telemetry[status] = 0
+ self._telemetry[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.TOKEN:
+ if status not in self._token:
+ self._token[status] = 0
+ self._token[status] += 1
+ else:
+ return
+
+ def pop_all(self):
+ """
+ Pop all errors
+
+ :return: Dictonary of exceptions
+ :rtype: dict
+ """
+ with self._lock:
+ http_errors = {
+ HTTPExceptionsAndLatencies.HTTP_ERRORS.value: {
+ HTTPExceptionsAndLatencies.SPLIT.value: self._split,
+ HTTPExceptionsAndLatencies.SEGMENT.value: self._segment,
+ HTTPExceptionsAndLatencies.IMPRESSION.value: self._impression,
+ HTTPExceptionsAndLatencies.IMPRESSION_COUNT.value: self._impression_count, HTTPExceptionsAndLatencies.EVENT.value: self._event,
+ HTTPExceptionsAndLatencies.TELEMETRY.value: self._telemetry, HTTPExceptionsAndLatencies.TOKEN.value: self._token
+ }
+ }
+ self._reset_all()
+ return http_errors
+
+
+class HTTPErrorsAsync(HTTPErrorsBase):
+ """
+ Http error async class
+
+ """
+ @classmethod
+ async def create(cls):
+ """Constructor"""
+ self = cls()
+ self._lock = asyncio.Lock()
+ async with self._lock:
+ self._reset_all()
+ return self
+
+ async def add_error(self, resource, status):
+ """
+ Add Latency method
+
+ :param resource: passed resource name
+ :type resource: str
+ :param status: http error code
+ :type status: str
+ """
+ status = str(status)
+ async with self._lock:
+ if resource == HTTPExceptionsAndLatencies.SPLIT:
+ if status not in self._split:
+ self._split[status] = 0
+ self._split[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.SEGMENT:
+ if status not in self._segment:
+ self._segment[status] = 0
+ self._segment[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION:
+ if status not in self._impression:
+ self._impression[status] = 0
+ self._impression[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ if status not in self._impression_count:
+ self._impression_count[status] = 0
+ self._impression_count[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.EVENT:
+ if status not in self._event:
+ self._event[status] = 0
+ self._event[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.TELEMETRY:
+ if status not in self._telemetry:
+ self._telemetry[status] = 0
+ self._telemetry[status] += 1
+ elif resource == HTTPExceptionsAndLatencies.TOKEN:
+ if status not in self._token:
+ self._token[status] = 0
+ self._token[status] += 1
+ else:
+ return
+
+ async def pop_all(self):
+ """
+ Pop all errors
+
+ :return: Dictonary of exceptions
+ :rtype: dict
+ """
+ async with self._lock:
+ http_errors = {
+ HTTPExceptionsAndLatencies.HTTP_ERRORS.value: {
+ HTTPExceptionsAndLatencies.SPLIT.value: self._split,
+ HTTPExceptionsAndLatencies.SEGMENT.value: self._segment,
+ HTTPExceptionsAndLatencies.IMPRESSION.value: self._impression,
+ HTTPExceptionsAndLatencies.IMPRESSION_COUNT.value: self._impression_count, HTTPExceptionsAndLatencies.EVENT.value: self._event,
+ HTTPExceptionsAndLatencies.TELEMETRY.value: self._telemetry, HTTPExceptionsAndLatencies.TOKEN.value: self._token
+ }
+ }
+ self._reset_all()
+ return http_errors
+
+
+class TelemetryCountersBase(object, metaclass=abc.ABCMeta):
+ """
+ Counters base class
+
+ """
+ def _reset_all(self):
+ """Reset variables"""
+ self._impressions_queued = 0
+ self._impressions_deduped = 0
+ self._impressions_dropped = 0
+ self._events_queued = 0
+ self._events_dropped = 0
+ self._auth_rejections = 0
+ self._token_refreshes = 0
+ self._session_length = 0
+ self._update_from_sse = {}
+
+ @abc.abstractmethod
+ def record_impressions_value(self, resource, value):
+ """
+ Append to the resource value
+ """
+
+ @abc.abstractmethod
+ def record_events_value(self, resource, value):
+ """
+ Append to the resource value
+ """
+
+ @abc.abstractmethod
+ def record_auth_rejections(self):
+ """
+ Increament the auth rejection resource by one.
+ """
+
+ @abc.abstractmethod
+ def record_token_refreshes(self):
+ """
+ Increament the token refreshes resource by one.
+ """
+
+ @abc.abstractmethod
+ def record_session_length(self, session):
+ """
+ Set the session length value
+ """
+
+ @abc.abstractmethod
+ def get_counter_stats(self, resource):
+ """
+ Get resource counter value
+ """
+
+ @abc.abstractmethod
+ def get_session_length(self):
+ """
+ Get session length
+ """
+
+ @abc.abstractmethod
+ def pop_auth_rejections(self):
+ """
+ Pop auth rejections
+ """
+
+ @abc.abstractmethod
+ def pop_token_refreshes(self):
+ """
+ Pop token refreshes
+ """
+
+
+class TelemetryCounters(TelemetryCountersBase):
+ """
+ Counters class
+
+ """
+ def __init__(self):
+ """Constructor"""
+ self._lock = threading.RLock()
+ with self._lock:
+ self._reset_all()
+
+ def record_impressions_value(self, resource, value):
+ """
+ Append to the resource value
+
+ :param resource: passed resource name
+ :type resource: str
+ :param value: value to be appended
+ :type value: int
+ """
+ with self._lock:
+ if resource == CounterConstants.IMPRESSIONS_QUEUED:
+ self._impressions_queued += value
+ elif resource == CounterConstants.IMPRESSIONS_DEDUPED:
+ self._impressions_deduped += value
+ elif resource == CounterConstants.IMPRESSIONS_DROPPED:
+ self._impressions_dropped += value
+ else:
+ return
+
+ def record_events_value(self, resource, value):
+ """
+ Append to the resource value
+
+ :param resource: passed resource name
+ :type resource: str
+ :param value: value to be appended
+ :type value: int
+ """
+ with self._lock:
+ if resource == CounterConstants.EVENTS_QUEUED:
+ self._events_queued += value
+ elif resource == CounterConstants.EVENTS_DROPPED:
+ self._events_dropped += value
+ else:
+ return
+
+ def record_update_from_sse(self, event):
+ """
+ Increment the update from sse resource by one.
+ """
+ with self._lock:
+ if event.value not in self._update_from_sse:
+ self._update_from_sse[event.value] = 0
+ self._update_from_sse[event.value] += 1
+
+ def record_auth_rejections(self):
+ """
+ Increment the auth rejection resource by one.
+
+ """
+ with self._lock:
+ self._auth_rejections += 1
+
+ def record_token_refreshes(self):
+ """
+ Increment the token refreshes resource by one.
+
+ """
+ with self._lock:
+ self._token_refreshes += 1
+
+ def pop_update_from_sse(self, event):
+ """
+ Pop update from sse
+ :return: update from sse value
+ :rtype: int
+ """
+ with self._lock:
+ if self._update_from_sse.get(event.value) is None:
+ return 0
+
+ update_from_sse = self._update_from_sse[event.value]
+ self._update_from_sse[event.value] = 0
+ return update_from_sse
+
+ def record_session_length(self, session):
+ """
+ Set the session length value
+
+ :param session: value to be set
+ :type session: int
+ """
+ with self._lock:
+ self._session_length = session
+
+ def get_counter_stats(self, resource):
+ """
+ Get resource counter value
+
+ :param resource: passed resource name
+ :type resource: str
+
+ :return: resource value
+ :rtype: int
+ """
+
+ with self._lock:
+ if resource == CounterConstants.IMPRESSIONS_QUEUED:
+ return self._impressions_queued
+
+ elif resource == CounterConstants.IMPRESSIONS_DEDUPED:
+ return self._impressions_deduped
+
+ elif resource == CounterConstants.IMPRESSIONS_DROPPED:
+ return self._impressions_dropped
+
+ elif resource == CounterConstants.EVENTS_QUEUED:
+ return self._events_queued
+
+ elif resource == CounterConstants.EVENTS_DROPPED:
+ return self._events_dropped
+
+ else:
+ return 0
+
+ def get_session_length(self):
+ """
+ Get session length
+
+ :return: session length value
+ :rtype: int
+ """
+ with self._lock:
+ return self._session_length
+
+ def pop_auth_rejections(self):
+ """
+ Pop auth rejections
+
+ :return: auth rejections value
+ :rtype: int
+ """
+ with self._lock:
+ auth_rejections = self._auth_rejections
+ self._auth_rejections = 0
+ return auth_rejections
+
+ def pop_token_refreshes(self):
+ """
+ Pop token refreshes
+
+ :return: token refreshes value
+ :rtype: int
+ """
+ with self._lock:
+ token_refreshes = self._token_refreshes
+ self._token_refreshes = 0
+ return token_refreshes
+
+class TelemetryCountersAsync(TelemetryCountersBase):
+ """
+ Counters async class
+
+ """
+ @classmethod
+ async def create(cls):
+ """Constructor"""
+ self = cls()
+ self._lock = asyncio.Lock()
+ async with self._lock:
+ self._reset_all()
+ return self
+
+ async def record_impressions_value(self, resource, value):
+ """
+ Append to the resource value
+
+ :param resource: passed resource name
+ :type resource: str
+ :param value: value to be appended
+ :type value: int
+ """
+ async with self._lock:
+ if resource == CounterConstants.IMPRESSIONS_QUEUED:
+ self._impressions_queued += value
+ elif resource == CounterConstants.IMPRESSIONS_DEDUPED:
+ self._impressions_deduped += value
+ elif resource == CounterConstants.IMPRESSIONS_DROPPED:
+ self._impressions_dropped += value
+ else:
+ return
+
+ async def record_events_value(self, resource, value):
+ """
+ Append to the resource value
+
+ :param resource: passed resource name
+ :type resource: str
+ :param value: value to be appended
+ :type value: int
+ """
+ async with self._lock:
+ if resource == CounterConstants.EVENTS_QUEUED:
+ self._events_queued += value
+ elif resource == CounterConstants.EVENTS_DROPPED:
+ self._events_dropped += value
+ else:
+ return
+
+ async def record_update_from_sse(self, event):
+ """
+ Increment the update from sse resource by one.
+ """
+ async with self._lock:
+ if event.value not in self._update_from_sse:
+ self._update_from_sse[event.value] = 0
+ self._update_from_sse[event.value] += 1
+
+ async def record_auth_rejections(self):
+ """
+ Increment the auth rejection resource by one.
+
+ """
+ async with self._lock:
+ self._auth_rejections += 1
+
+ async def record_token_refreshes(self):
+ """
+ Increment the token refreshes resource by one.
+
+ """
+ async with self._lock:
+ self._token_refreshes += 1
+
+ async def pop_update_from_sse(self, event):
+ """
+ Pop update from sse
+ :return: update from sse value
+ :rtype: int
+ """
+ async with self._lock:
+ if self._update_from_sse.get(event.value) is None:
+ return 0
+
+ update_from_sse = self._update_from_sse[event.value]
+ self._update_from_sse[event.value] = 0
+ return update_from_sse
+
+ async def record_session_length(self, session):
+ """
+ Set the session length value
+
+ :param session: value to be set
+ :type session: int
+ """
+ async with self._lock:
+ self._session_length = session
+
+ async def get_counter_stats(self, resource):
+ """
+ Get resource counter value
+
+ :param resource: passed resource name
+ :type resource: str
+
+ :return: resource value
+ :rtype: int
+ """
+ async with self._lock:
+ if resource == CounterConstants.IMPRESSIONS_QUEUED:
+ return self._impressions_queued
+
+ elif resource == CounterConstants.IMPRESSIONS_DEDUPED:
+ return self._impressions_deduped
+
+ elif resource == CounterConstants.IMPRESSIONS_DROPPED:
+ return self._impressions_dropped
+
+ elif resource == CounterConstants.EVENTS_QUEUED:
+ return self._events_queued
+
+ elif resource == CounterConstants.EVENTS_DROPPED:
+ return self._events_dropped
+
+ else:
+ return 0
+
+ async def get_session_length(self):
+ """
+ Get session length
+
+ :return: session length value
+ :rtype: int
+ """
+ async with self._lock:
+ return self._session_length
+
+ async def pop_auth_rejections(self):
+ """
+ Pop auth rejections
+
+ :return: auth rejections value
+ :rtype: int
+ """
+ async with self._lock:
+ auth_rejections = self._auth_rejections
+ self._auth_rejections = 0
+ return auth_rejections
+
+ async def pop_token_refreshes(self):
+ """
+ Pop token refreshes
+
+ :return: token refreshes value
+ :rtype: int
+ """
+ async with self._lock:
+ token_refreshes = self._token_refreshes
+ self._token_refreshes = 0
+ return token_refreshes
+
+
+class StreamingEvent(object):
+ """
+ Streaming event class
+
+ """
+ def __init__(self, streaming_event):
+ """
+ Constructor
+
+ :param streaming_event: Streaming event tuple: ('type', 'data', 'time')
+ :type streaming_event: dict
+ """
+ self._type = streaming_event[0].value
+ self._data = streaming_event[1]
+ self._time = streaming_event[2]
+
+ @property
+ def type(self):
+ """
+ Get streaming event type
+
+ :return: streaming event type
+ :rtype: str
+ """
+ return self._type
+
+ @property
+ def data(self):
+ """
+ Get streaming event data
+
+ :return: streaming event data
+ :rtype: str
+ """
+ return self._data
+
+ @property
+ def time(self):
+ """
+ Get streaming event time
+
+ :return: streaming event time
+ :rtype: int
+ """
+ return self._time
+
+class StreamingEventsAsync(object):
+ """
+ Streaming events async class
+
+ """
+ @classmethod
+ async def create(cls):
+ """Constructor"""
+ self = cls()
+ self._lock = asyncio.Lock()
+ async with self._lock:
+ self._streaming_events = []
+ return self
+
+ async def record_streaming_event(self, streaming_event):
+ """
+ Record new streaming event
+
+ :param streaming_event: Streaming event dict:
+ {'type': string, 'data': string, 'time': string}
+ :type streaming_event: dict
+ """
+ if not StreamingEvent(streaming_event):
+ return
+ async with self._lock:
+ if len(self._streaming_events) < MAX_STREAMING_EVENTS:
+ self._streaming_events.append(StreamingEvent(streaming_event))
+
+ async def pop_streaming_events(self):
+ """
+ Get and reset streaming events
+
+ :return: streaming events dict
+ :rtype: dict
+ """
+ async with self._lock:
+ streaming_events = self._streaming_events
+ self._streaming_events = []
+ return {_StreamingEventsConstant.STREAMING_EVENTS.value: [
+ {'e': streaming_event.type, 'd': streaming_event.data,
+ 't': streaming_event.time} for streaming_event in streaming_events]}
+
+class StreamingEvents(object):
+ """
+ Streaming events class
+
+ """
+ def __init__(self):
+ """Constructor"""
+ self._lock = threading.RLock()
+ with self._lock:
+ self._streaming_events = []
+
+ def record_streaming_event(self, streaming_event):
+ """
+ Record new streaming event
+
+ :param streaming_event: Streaming event dict:
+ {'type': string, 'data': string, 'time': string}
+ :type streaming_event: dict
+ """
+ if not StreamingEvent(streaming_event):
+ return
+ with self._lock:
+ if len(self._streaming_events) < MAX_STREAMING_EVENTS:
+ self._streaming_events.append(StreamingEvent(streaming_event))
+
+ def pop_streaming_events(self):
+ """
+ Get and reset streaming events
+
+ :return: streaming events dict
+ :rtype: dict
+ """
+
+ with self._lock:
+ streaming_events = self._streaming_events
+ self._streaming_events = []
+ return {_StreamingEventsConstant.STREAMING_EVENTS.value: [
+ {'e': streaming_event.type, 'd': streaming_event.data,
+ 't': streaming_event.time} for streaming_event in streaming_events]}
+
+
+class TelemetryConfigBase(object, metaclass=abc.ABCMeta):
+ """
+ Telemetry init config base class
+
+ """
+ def _reset_all(self):
+ """Reset variables"""
+ self._block_until_ready_timeout = 0
+ self._not_ready = 0
+ self._time_until_ready = 0
+ self._operation_mode = None
+ self._storage_type = None
+ self._streaming_enabled = None
+ self._refresh_rate = {
+ _ConfigParams.SPLITS_REFRESH_RATE.value: 0,
+ _ConfigParams.SEGMENTS_REFRESH_RATE.value: 0,
+ _ConfigParams.IMPRESSIONS_REFRESH_RATE.value: 0,
+ _ConfigParams.EVENTS_REFRESH_RATE.value: 0,
+ _ConfigParams.TELEMETRY_REFRESH_RATE.value: 0}
+ self._url_override = {
+ _ApiURLs.SDK_URL.value: False,
+ _ApiURLs.EVENTS_URL.value: False,
+ _ApiURLs.AUTH_URL.value: False,
+ _ApiURLs.STREAMING_URL.value: False,
+ _ApiURLs.TELEMETRY_URL.value: False}
+ self._impressions_queue_size = 0
+ self._events_queue_size = 0
+ self._impressions_mode = None
+ self._impression_listener = False
+ self._http_proxy = None
+ self._active_factory_count = 0
+ self._redundant_factory_count = 0
+ self._flag_sets = 0
+ self._flag_sets_invalid = 0
+
+ @abc.abstractmethod
+ def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """
+ Record configurations.
+ """
+
+ @abc.abstractmethod
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """
+ Record active and redundant factories counts
+ """
+
+ @abc.abstractmethod
+ def record_ready_time(self, ready_time):
+ """
+ Record ready time.
+ """
+
+ @abc.abstractmethod
+ def record_bur_time_out(self):
+ """
+ Record block until ready timeout count
+ """
+
+ @abc.abstractmethod
+ def record_not_ready_usage(self):
+ """
+ record non-ready usage count
+ """
+
+ @abc.abstractmethod
+ def get_bur_time_outs(self):
+ """
+ Get block until ready timeout.
+ """
+
+ @abc.abstractmethod
+ def get_non_ready_usage(self):
+ """
+ Get non-ready usage.
+ """
+
+ @abc.abstractmethod
+ def get_stats(self):
+ """
+ Get config stats.
+ """
+
+ def _get_operation_mode(self, op_mode):
+ """
+ Get formatted operation mode
+
+ :param op_mode: config operation mode
+ :type config: str
+
+ :return: operation mode
+ :rtype: int
+ """
+ if op_mode == OperationMode.STANDALONE.value:
+ return 0
+
+ elif op_mode == OperationMode.CONSUMER.value:
+ return 1
+
+ else:
+ return 2
+
+ def _get_storage_type(self, op_mode, st_type):
+ """
+ Get storage type from operation mode
+
+ :param op_mode: config operation mode
+ :type config: str
+
+ :return: storage type
+ :rtype: str
+ """
+ if op_mode == OperationMode.STANDALONE.value:
+ return StorageType.MEMORY.value
+
+ elif st_type == StorageType.REDIS.value:
+ return StorageType.REDIS.value
+
+ else:
+ return StorageType.PLUGGABLE.value
+
+ def _get_refresh_rates(self, config):
+ """
+ Get refresh rates within config dict
+
+ :param config: config dict
+ :type config: dict
+
+ :return: refresh rates
+ :rtype: RefreshRates object
+ """
+ return {
+ _ConfigParams.SPLITS_REFRESH_RATE.value: config[_ConfigParams.SPLITS_REFRESH_RATE.value],
+ _ConfigParams.SEGMENTS_REFRESH_RATE.value: config[_ConfigParams.SEGMENTS_REFRESH_RATE.value],
+ _ConfigParams.IMPRESSIONS_REFRESH_RATE.value: config[_ConfigParams.IMPRESSIONS_REFRESH_RATE.value],
+ _ConfigParams.EVENTS_REFRESH_RATE.value: config[_ConfigParams.EVENTS_REFRESH_RATE.value],
+ _ConfigParams.TELEMETRY_REFRESH_RATE.value: config[_ConfigParams.TELEMETRY_REFRESH_RATE.value]
+ }
+
+ def _get_url_overrides(self, config):
+ """
+ Get URL override within the config dict.
+
+ :param config: config dict
+ :type config: dict
+
+ :return: URL overrides dict
+ :rtype: URLOverrides object
+ """
+ return {
+ _ApiURLs.SDK_URL.value: True if _ApiURLs.SDK_URL.value in config else False,
+ _ApiURLs.EVENTS_URL.value: True if _ApiURLs.EVENTS_URL.value in config else False,
+ _ApiURLs.AUTH_URL.value: True if _ApiURLs.AUTH_URL.value in config else False,
+ _ApiURLs.STREAMING_URL.value: True if _ApiURLs.STREAMING_URL.value in config else False,
+ _ApiURLs.TELEMETRY_URL.value: True if _ApiURLs.TELEMETRY_URL.value in config else False
+ }
+
+ def _get_impressions_mode(self, imp_mode):
+ """
+ Get impressions mode from operation mode
+
+ :param op_mode: config operation mode
+ :type config: str
+
+ :return: impressions mode
+ :rtype: int
+ """
+ if imp_mode == ImpressionsMode.DEBUG.value:
+ return 1
+
+ elif imp_mode == ImpressionsMode.OPTIMIZED.value:
+ return 0
+
+ else:
+ return 2
+
+ def _check_if_proxy_detected(self):
+ """
+ Return boolean flag if network https proxy is detected
+
+ :return: https network proxy flag
+ :rtype: boolean
+ """
+ for x in os.environ:
+ if x.upper() == _ExtraConfig.HTTPS_PROXY_ENV.value:
+ return True
+
+ return False
+
+
+class TelemetryConfig(TelemetryConfigBase):
+ """
+ Telemetry init config class
+
+ """
+ def __init__(self):
+ """Constructor"""
+ self._lock = threading.RLock()
+ with self._lock:
+ self._reset_all()
+
+ def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """
+ Record configurations.
+
+ :param config: config dict: {
+ 'operationMode': int, 'storageType': string, 'streamingEnabled': boolean,
+ 'refreshRate' : {
+ 'featuresRefreshRate': int,
+ 'segmentsRefreshRate': int,
+ 'impressionsRefreshRate': int,
+ 'eventsPushRate': int,
+ 'metricsRefreshRate': int
+ }
+ 'urlOverride' : {
+ 'sdk_url': boolean, 'events_url': boolean, 'auth_url': boolean,
+ 'streaming_url': boolean, 'telemetry_url': boolean, }
+ },
+ 'impressionsQueueSize': int, 'eventsQueueSize': int, 'impressionsMode': string,
+ 'impressionsListener': boolean, 'activeFactoryCount': int, 'redundantFactoryCount': int
+ }
+ :type config: dict
+ """
+ with self._lock:
+ self._operation_mode = self._get_operation_mode(config[_ConfigParams.OPERATION_MODE.value])
+ self._storage_type = self._get_storage_type(config[_ConfigParams.OPERATION_MODE.value], config[_ConfigParams.STORAGE_TYPE.value])
+ self._streaming_enabled = config[_ConfigParams.STREAMING_ENABLED.value]
+ self._refresh_rate = self._get_refresh_rates(config)
+ self._url_override = self._get_url_overrides(extra_config)
+ self._impressions_queue_size = config[_ConfigParams.IMPRESSIONS_QUEUE_SIZE.value]
+ self._events_queue_size = config[_ConfigParams.EVENTS_QUEUE_SIZE.value]
+ self._impressions_mode = self._get_impressions_mode(config[_ConfigParams.IMPRESSIONS_MODE.value])
+ self._impression_listener = True if config[_ConfigParams.IMPRESSIONS_LISTENER.value] is not None else False
+ self._http_proxy = self._check_if_proxy_detected()
+ self._flag_sets = total_flag_sets
+ self._flag_sets_invalid = invalid_flag_sets
+
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """
+ Record active and redundant factories counts
+
+ :param active_factory_count: active factories count
+ :type active_factory_count: int
+
+ :param redundant_factory_count: redundant factories count
+ :type redundant_factory_count: int
+ """
+ with self._lock:
+ self._active_factory_count = active_factory_count
+ self._redundant_factory_count = redundant_factory_count
+
+ def record_ready_time(self, ready_time):
+ """
+ Record ready time.
+
+ :param ready_time: SDK ready time
+ :type ready_time: int
+ """
+ with self._lock:
+ self._time_until_ready = ready_time
+
+ def record_bur_time_out(self):
+ """
+ Record block until ready timeout count
+
+ """
+ with self._lock:
+ self._block_until_ready_timeout += 1
+
+ def record_not_ready_usage(self):
+ """
+ record non-ready usage count
+
+ """
+ with self._lock:
+ self._not_ready += 1
+
+ def get_bur_time_outs(self):
+ """
+ Get block until ready timeout.
+
+ :return: block until ready timeouts count
+ :rtype: int
+ """
+ with self._lock:
+ return self._block_until_ready_timeout
+
+ def get_non_ready_usage(self):
+ """
+ Get non-ready usage.
+
+ :return: non-ready usage count
+ :rtype: int
+ """
+ with self._lock:
+ return self._not_ready
+
+ def get_stats(self):
+ """
+ Get config stats.
+
+ :return: dict of all config stats.
+ :rtype: dict
+ """
+ with self._lock:
+ return {
+ 'bT': self._block_until_ready_timeout,
+ 'nR': self._not_ready,
+ 'tR': self._time_until_ready,
+ 'oM': self._operation_mode,
+ 'sT': self._storage_type,
+ 'sE': self._streaming_enabled,
+ 'rR': {
+ 'sp': self._refresh_rate[_ConfigParams.SPLITS_REFRESH_RATE.value],
+ 'se': self._refresh_rate[_ConfigParams.SEGMENTS_REFRESH_RATE.value],
+ 'im': self._refresh_rate[_ConfigParams.IMPRESSIONS_REFRESH_RATE.value],
+ 'ev': self._refresh_rate[_ConfigParams.EVENTS_REFRESH_RATE.value],
+ 'te': self._refresh_rate[_ConfigParams.TELEMETRY_REFRESH_RATE.value]},
+ 'uO': {
+ 's': self._url_override[_ApiURLs.SDK_URL.value],
+ 'e': self._url_override[_ApiURLs.EVENTS_URL.value],
+ 'a': self._url_override[_ApiURLs.AUTH_URL.value],
+ 'st': self._url_override[_ApiURLs.STREAMING_URL.value],
+ 't': self._url_override[_ApiURLs.TELEMETRY_URL.value]},
+ 'iQ': self._impressions_queue_size,
+ 'eQ': self._events_queue_size,
+ 'iM': self._impressions_mode,
+ 'iL': self._impression_listener,
+ 'hp': self._http_proxy,
+ 'aF': self._active_factory_count,
+ 'rF': self._redundant_factory_count,
+ 'fsT': self._flag_sets,
+ 'fsI': self._flag_sets_invalid
+ }
+
+
+class TelemetryConfigAsync(TelemetryConfigBase):
+ """
+ Telemetry init config async class
+
+ """
+ @classmethod
+ async def create(cls):
+ """Constructor"""
+ self = cls()
+ self._lock = asyncio.Lock()
+ async with self._lock:
+ self._reset_all()
+ return self
+
+ async def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """
+ Record configurations.
+
+ :param config: config dict: {
+ 'operationMode': int, 'storageType': string, 'streamingEnabled': boolean,
+ 'refreshRate' : {
+ 'featuresRefreshRate': int,
+ 'segmentsRefreshRate': int,
+ 'impressionsRefreshRate': int,
+ 'eventsPushRate': int,
+ 'metricsRefreshRate': int
+ }
+ 'urlOverride' : {
+ 'sdk_url': boolean, 'events_url': boolean, 'auth_url': boolean,
+ 'streaming_url': boolean, 'telemetry_url': boolean, }
+ },
+ 'impressionsQueueSize': int, 'eventsQueueSize': int, 'impressionsMode': string,
+ 'impressionsListener': boolean, 'activeFactoryCount': int, 'redundantFactoryCount': int
+ }
+ :type config: dict
+ """
+ async with self._lock:
+ self._operation_mode = self._get_operation_mode(config[_ConfigParams.OPERATION_MODE.value])
+ self._storage_type = self._get_storage_type(config[_ConfigParams.OPERATION_MODE.value], config[_ConfigParams.STORAGE_TYPE.value])
+ self._streaming_enabled = config[_ConfigParams.STREAMING_ENABLED.value]
+ self._refresh_rate = self._get_refresh_rates(config)
+ self._url_override = self._get_url_overrides(extra_config)
+ self._impressions_queue_size = config[_ConfigParams.IMPRESSIONS_QUEUE_SIZE.value]
+ self._events_queue_size = config[_ConfigParams.EVENTS_QUEUE_SIZE.value]
+ self._impressions_mode = self._get_impressions_mode(config[_ConfigParams.IMPRESSIONS_MODE.value])
+ self._impression_listener = True if config[_ConfigParams.IMPRESSIONS_LISTENER.value] is not None else False
+ self._http_proxy = self._check_if_proxy_detected()
+ self._flag_sets = total_flag_sets
+ self._flag_sets_invalid = invalid_flag_sets
+
+ async def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """
+ Record active and redundant factories counts
+
+ :param active_factory_count: active factories count
+ :type active_factory_count: int
+
+ :param redundant_factory_count: redundant factories count
+ :type redundant_factory_count: int
+ """
+ async with self._lock:
+ self._active_factory_count = active_factory_count
+ self._redundant_factory_count = redundant_factory_count
+
+ async def record_ready_time(self, ready_time):
+ """
+ Record ready time.
+
+ :param ready_time: SDK ready time
+ :type ready_time: int
+ """
+ async with self._lock:
+ self._time_until_ready = ready_time
+
+ async def record_bur_time_out(self):
+ """
+ Record block until ready timeout count
+
+ """
+ async with self._lock:
+ self._block_until_ready_timeout += 1
+
+ async def record_not_ready_usage(self):
+ """
+ record non-ready usage count
+
+ """
+ async with self._lock:
+ self._not_ready += 1
+
+ async def get_bur_time_outs(self):
+ """
+ Get block until ready timeout.
+
+ :return: block until ready timeouts count
+ :rtype: int
+ """
+ async with self._lock:
+ return self._block_until_ready_timeout
+
+ async def get_non_ready_usage(self):
+ """
+ Get non-ready usage.
+
+ :return: non-ready usage count
+ :rtype: int
+ """
+ async with self._lock:
+ return self._not_ready
+
+ async def get_stats(self):
+ """
+ Get config stats.
+
+ :return: dict of all config stats.
+ :rtype: dict
+ """
+ async with self._lock:
+ return {
+ 'bT': self._block_until_ready_timeout,
+ 'nR': self._not_ready,
+ 'tR': self._time_until_ready,
+ 'oM': self._operation_mode,
+ 'sT': self._storage_type,
+ 'sE': self._streaming_enabled,
+ 'rR': {
+ 'sp': self._refresh_rate[_ConfigParams.SPLITS_REFRESH_RATE.value],
+ 'se': self._refresh_rate[_ConfigParams.SEGMENTS_REFRESH_RATE.value],
+ 'im': self._refresh_rate[_ConfigParams.IMPRESSIONS_REFRESH_RATE.value],
+ 'ev': self._refresh_rate[_ConfigParams.EVENTS_REFRESH_RATE.value],
+ 'te': self._refresh_rate[_ConfigParams.TELEMETRY_REFRESH_RATE.value]},
+ 'uO': {
+ 's': self._url_override[_ApiURLs.SDK_URL.value],
+ 'e': self._url_override[_ApiURLs.EVENTS_URL.value],
+ 'a': self._url_override[_ApiURLs.AUTH_URL.value],
+ 'st': self._url_override[_ApiURLs.STREAMING_URL.value],
+ 't': self._url_override[_ApiURLs.TELEMETRY_URL.value]},
+ 'iQ': self._impressions_queue_size,
+ 'eQ': self._events_queue_size,
+ 'iM': self._impressions_mode,
+ 'iL': self._impression_listener,
+ 'hp': self._http_proxy,
+ 'aF': self._active_factory_count,
+ 'rF': self._redundant_factory_count,
+ 'fsT': self._flag_sets,
+ 'fsI': self._flag_sets_invalid
+ }
\ No newline at end of file
diff --git a/splitio/models/token.py b/splitio/models/token.py
new file mode 100644
index 00000000..f2b0cf9c
--- /dev/null
+++ b/splitio/models/token.py
@@ -0,0 +1,83 @@
+"""Token module"""
+
+import base64
+import json
+
+
+class Token(object):
+ """Token object class."""
+
+ def __init__(self, push_enabled, token, channels, exp, iat):
+ """
+ Class constructor.
+
+ :param push_enabled: flag push enabled.
+ :type push_enabled: bool
+
+ :param token: Token from auth.
+ :type token: str
+
+ :param channels: Channels parsed from token.
+ :type channels: str
+
+ :param exp: exp parsed from token.
+ :type exp: int
+
+ :param iat: iat parsed from token.
+ :type iat: int
+ """
+ self._push_enabled = push_enabled
+ self._token = token
+ self._channels = channels
+ self._exp = exp
+ self._iat = iat
+
+ @property
+ def push_enabled(self):
+ """Return push_enabled"""
+ return self._push_enabled
+
+ @property
+ def token(self):
+ """Return token"""
+ return self._token
+
+ @property
+ def channels(self):
+ """Return channels"""
+ return self._channels
+
+ @property
+ def exp(self):
+ """Return exp"""
+ return self._exp
+
+ @property
+ def iat(self):
+ """Return iat"""
+ return self._iat
+
+
+def from_raw(raw_token):
+ """
+ Parse a new token from a raw token response.
+
+ :param raw_token: Token parsed from auth response.
+ :type raw_token: dict
+
+ :return: New token model object
+ :rtype: splitio.models.token.Token
+ """
+ if not 'pushEnabled' in raw_token or not 'token' in raw_token:
+ return Token(False, None, None, None, None)
+
+ token = raw_token['token']
+ push_enabled = raw_token['pushEnabled']
+ token_parts = token.strip().split('.')
+
+ if not push_enabled or len(token_parts) < 2:
+ return Token(False, None, None, None, None)
+
+ to_decode = token_parts[1]
+ decoded_token = json.loads(base64.b64decode(to_decode + '='*(-len(to_decode) % 4)))
+ return Token(push_enabled, token, json.loads(decoded_token['x-ably-capability']), decoded_token['exp'], decoded_token['iat'])
\ No newline at end of file
diff --git a/splitio/optional/__init__.py b/splitio/optional/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/splitio/optional/loaders.py b/splitio/optional/loaders.py
new file mode 100644
index 00000000..b5f11621
--- /dev/null
+++ b/splitio/optional/loaders.py
@@ -0,0 +1,30 @@
+import sys
+try:
+ import asyncio
+ import aiohttp
+ import aiofiles
+except ImportError:
+ def missing_asyncio_dependencies(*_, **__):
+ """Fail if missing dependencies are used."""
+ raise NotImplementedError(
+ 'Missing aiohttp dependency. '
+ 'Please use `pip install splitio_client[asyncio]` to install the sdk with asyncio support'
+ )
+ aiohttp = missing_asyncio_dependencies
+ asyncio = missing_asyncio_dependencies
+ aiofiles = missing_asyncio_dependencies
+
+try:
+ from requests_kerberos import HTTPKerberosAuth, OPTIONAL
+except ImportError:
+ def missing_auth_dependencies(*_, **__):
+ """Fail if missing dependencies are used."""
+ raise NotImplementedError(
+ 'Missing kerberos auth dependency. '
+ 'Please use `pip install splitio_client[kerberos]` to install the sdk with kerberos auth support'
+ )
+ HTTPKerberosAuth = missing_auth_dependencies
+ OPTIONAL = missing_auth_dependencies
+
+async def _anext(it):
+ return await it.__anext__()
diff --git a/splitio/push/__init__.py b/splitio/push/__init__.py
new file mode 100644
index 00000000..a7a9b624
--- /dev/null
+++ b/splitio/push/__init__.py
@@ -0,0 +1,13 @@
+class AuthException(Exception):
+ """Exception to raise when an API call fails."""
+
+ def __init__(self, custom_message, status_code=None):
+ """Constructor."""
+ Exception.__init__(self, custom_message)
+
+class SplitStorageException(Exception):
+ """Exception to raise when an API call fails."""
+
+ def __init__(self, custom_message, status_code=None):
+ """Constructor."""
+ Exception.__init__(self, custom_message)
diff --git a/splitio/push/manager.py b/splitio/push/manager.py
new file mode 100644
index 00000000..2046d610
--- /dev/null
+++ b/splitio/push/manager.py
@@ -0,0 +1,539 @@
+"""Push subsystem manager class and helpers."""
+import logging
+from threading import Timer
+import abc
+import sys
+
+from splitio.optional.loaders import asyncio
+from splitio.api import APIException
+from splitio.util.time import get_current_epoch_time_ms
+from splitio.push import AuthException
+from splitio.push.splitsse import SplitSSEClient, SplitSSEClientAsync
+from splitio.push.sse import SSE_EVENT_ERROR
+from splitio.push.parser import parse_incoming_event, EventParsingException, EventType, \
+ MessageType
+from splitio.push.processor import MessageProcessor, MessageProcessorAsync
+from splitio.push.status_tracker import PushStatusTracker, Status, PushStatusTrackerAsync
+from splitio.models.telemetry import StreamingEventTypes
+
+if sys.version_info.major == 3 and sys.version_info.minor < 10:
+ from splitio.optional.loaders import _anext as anext
+
+_TOKEN_REFRESH_GRACE_PERIOD = 10 * 60 # 10 minutes
+
+_LOGGER = logging.getLogger(__name__)
+
+class PushManagerBase(object, metaclass=abc.ABCMeta):
+ """Worker template."""
+
+ @abc.abstractmethod
+ def update_workers_status(self, enabled):
+ """Enable/Disable push update workers."""
+
+ @abc.abstractmethod
+ def start(self):
+ """Start a new connection if not already running."""
+
+ @abc.abstractmethod
+ def stop(self, blocking=False):
+ """Stop the current ongoing connection."""
+
+ def _get_time_period(self, token):
+ return (token.exp - token.iat) - _TOKEN_REFRESH_GRACE_PERIOD
+
+
+class PushManager(PushManagerBase): # pylint:disable=too-many-instance-attributes
+ """Push notifications susbsytem manager."""
+
+ def __init__(self, auth_api, synchronizer, feedback_loop, sdk_metadata, telemetry_runtime_producer, sse_url=None, client_key=None):
+ """
+ Class constructor.
+
+ :param auth_api: sdk-auth-service api client
+ :type auth_api: splitio.api.auth.AuthAPI
+
+ :param synchronizer: split data synchronizer facade
+ :type synchronizer: splitio.sync.synchronizer.Synchronizer
+
+ :param feedback_loop: queue where push status updates are published.
+ :type feedback_loop: queue.Queue
+
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+
+ :param telemetry_runtime_producer: Telemetry object to record runtime events
+ :type sdk_metadata: splitio.engine.telemetry.TelemetryRunTimeProducer
+
+ :param sse_url: streaming base url.
+ :type sse_url: str
+
+ :param client_key: client key.
+ :type client_key: str
+ """
+ self._auth_api = auth_api
+ self._feedback_loop = feedback_loop
+ self._processor = MessageProcessor(synchronizer, telemetry_runtime_producer)
+ self._status_tracker = PushStatusTracker(telemetry_runtime_producer)
+ self._event_handlers = {
+ EventType.MESSAGE: self._handle_message,
+ EventType.ERROR: self._handle_error
+ }
+
+ self._message_handlers = {
+ MessageType.UPDATE: self._handle_update,
+ MessageType.CONTROL: self._handle_control,
+ MessageType.OCCUPANCY: self._handle_occupancy
+ }
+
+ kwargs = {} if sse_url is None else {'base_url': sse_url}
+ self._sse_client = SplitSSEClient(self._event_handler, sdk_metadata, self._handle_connection_ready,
+ self._handle_connection_end, client_key, **kwargs)
+ self._running = False
+ self._next_refresh = Timer(0, lambda: 0)
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+
+ def update_workers_status(self, enabled):
+ """
+ Enable/Disable push update workers.
+
+ :param enabled: if True, enable workers. If False, disable them.
+ :type enabled: bool
+ """
+ self._processor.update_workers_status(enabled)
+
+ def start(self):
+ """Start a new connection if not already running."""
+ if self._running:
+ _LOGGER.warning('Push manager already has a connection running. Ignoring')
+ return
+
+ self._trigger_connection_flow()
+
+ def stop(self, blocking=False):
+ """
+ Stop the current ongoing connection.
+
+ :param blocking: whether to wait for the connection to be successfully closed or not
+ :type blocking: bool
+ """
+ if not self._running:
+ _LOGGER.warning('Push manager does not have an open SSE connection. Ignoring')
+ return
+
+ self._running = False
+ self._processor.update_workers_status(False)
+ self._status_tracker.notify_sse_shutdown_expected()
+ self._next_refresh.cancel()
+ self._sse_client.stop(blocking)
+
+ def _event_handler(self, event):
+ """
+ Process an incoming event.
+
+ :param event: Incoming event
+ :type event: splitio.push.sse.SSEEvent
+ """
+ try:
+ parsed = parse_incoming_event(event)
+ except EventParsingException:
+ _LOGGER.error('error parsing event of type %s', event.event_type)
+ _LOGGER.debug(str(event), exc_info=True)
+ return
+
+ try:
+ handle = self._event_handlers[parsed.event_type]
+ except KeyError:
+ _LOGGER.error('no handler for message of type %s', parsed.event_type)
+ _LOGGER.debug(str(event), exc_info=True)
+ return
+
+ try:
+ handle(parsed)
+ except Exception: # pylint:disable=broad-except
+ _LOGGER.error('something went wrong when processing message of type %s',
+ parsed.event_type)
+ _LOGGER.debug(str(parsed), exc_info=True)
+
+ def _token_refresh(self):
+ """Refresh auth token."""
+ _LOGGER.info("retriggering authentication flow.")
+ self.stop(True)
+ self._trigger_connection_flow()
+
+ def _trigger_connection_flow(self):
+ """Authenticate and start a connection."""
+ try:
+ token = self._auth_api.authenticate()
+ except APIException:
+ _LOGGER.error('error performing sse auth request.')
+ _LOGGER.debug('stack trace: ', exc_info=True)
+ self._feedback_loop.put(Status.PUSH_RETRYABLE_ERROR)
+ return
+
+ if token is None or not token.push_enabled:
+ self._feedback_loop.put(Status.PUSH_NONRETRYABLE_ERROR)
+ return
+ self._telemetry_runtime_producer.record_token_refreshes()
+ _LOGGER.debug("auth token fetched. connecting to streaming.")
+ self._status_tracker.reset()
+ if self._sse_client.start(token):
+ _LOGGER.debug("connected to streaming, scheduling next refresh")
+ self._setup_next_token_refresh(token)
+ self._running = True
+ self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.CONNECTION_ESTABLISHED, 0, get_current_epoch_time_ms()))
+
+ def _setup_next_token_refresh(self, token):
+ """
+ Schedule next token refresh.
+
+ :param token: Last fetched token.
+ :type token: splitio.models.token.Token
+ """
+ if self._next_refresh is not None:
+ self._next_refresh.cancel()
+ self._next_refresh = Timer(self._get_time_period(token), self._token_refresh)
+ self._next_refresh.setName('TokenRefresh')
+ self._next_refresh.start()
+ self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.TOKEN_REFRESH, 1000 * token.exp, get_current_epoch_time_ms()))
+
+ def _handle_message(self, event):
+ """
+ Handle incoming update message.
+
+ :param event: Incoming Update message
+ :type event: splitio.push.sse.parser.Update
+ """
+ try:
+ handle = self._message_handlers[event.message_type]
+ except KeyError:
+ _LOGGER.error('no handler for message of type %s', event.message_type)
+ _LOGGER.debug(str(event), exc_info=True)
+ return
+
+ handle(event)
+
+ def _handle_update(self, event):
+ """
+ Handle incoming update message.
+
+ :param event: Incoming Update message
+ :type event: splitio.push.sse.parser.Update
+ """
+ _LOGGER.debug('handling update event: %s', str(event))
+ self._processor.handle(event)
+
+ def _handle_control(self, event):
+ """
+ Handle incoming control message.
+
+ :param event: Incoming control message.
+ :type event: splitio.push.sse.parser.ControlMessage
+ """
+ _LOGGER.debug('handling control event: %s', str(event))
+ feedback = self._status_tracker.handle_control_message(event)
+ if feedback is not None:
+ self._feedback_loop.put(feedback)
+
+ def _handle_occupancy(self, event):
+ """
+ Handle incoming notification message.
+
+ :param event: Incoming occupancy message.
+ :type event: splitio.push.sse.parser.Occupancy
+ """
+ _LOGGER.debug('handling occupancy event: %s', str(event))
+ feedback = self._status_tracker.handle_occupancy(event)
+ if feedback is not None:
+ self._feedback_loop.put(feedback)
+
+ def _handle_error(self, event):
+ """
+ Handle incoming error message.
+
+ :param event: Incoming ably error
+ :type event: splitio.push.sse.parser.AblyError
+ """
+ _LOGGER.debug('handling ably error event: %s', str(event))
+ feedback = self._status_tracker.handle_ably_error(event)
+ if feedback is not None:
+ self._feedback_loop.put(feedback)
+
+ def _handle_connection_ready(self):
+ """Handle a successful connection to SSE."""
+ self._feedback_loop.put(Status.PUSH_SUBSYSTEM_UP)
+ _LOGGER.info('sse initial event received. enabling')
+
+ def _handle_connection_end(self):
+ """
+ Handle a connection ending.
+
+ If the connection shutdown was not requested, trigger a restart.
+ """
+ feedback = self._status_tracker.handle_disconnect()
+ if feedback is not None:
+ self._feedback_loop.put(feedback)
+
+
+class PushManagerAsync(PushManagerBase): # pylint:disable=too-many-instance-attributes
+ """Push notifications susbsytem manager."""
+
+ def __init__(self, auth_api, synchronizer, feedback_loop, sdk_metadata, telemetry_runtime_producer, sse_url=None, client_key=None):
+ """
+ Class constructor.
+
+ :param auth_api: sdk-auth-service api client
+ :type auth_api: splitio.api.auth.AuthAPI
+
+ :param synchronizer: split data synchronizer facade
+ :type synchronizer: splitio.sync.synchronizer.Synchronizer
+
+ :param feedback_loop: queue where push status updates are published.
+ :type feedback_loop: queue.Queue
+
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+
+ :param telemetry_runtime_producer: Telemetry object to record runtime events
+ :type sdk_metadata: splitio.engine.telemetry.TelemetryRunTimeProducer
+
+ :param sse_url: streaming base url.
+ :type sse_url: str
+
+ :param client_key: client key.
+ :type client_key: str
+ """
+ self._auth_api = auth_api
+ self._feedback_loop = feedback_loop
+ self._processor = MessageProcessorAsync(synchronizer, telemetry_runtime_producer)
+ self._status_tracker = PushStatusTrackerAsync(telemetry_runtime_producer)
+ self._event_handlers = {
+ EventType.MESSAGE: self._handle_message,
+ EventType.ERROR: self._handle_error
+ }
+
+ self._message_handlers = {
+ MessageType.UPDATE: self._handle_update,
+ MessageType.CONTROL: self._handle_control,
+ MessageType.OCCUPANCY: self._handle_occupancy
+ }
+
+ kwargs = {} if sse_url is None else {'base_url': sse_url}
+ self._sse_client = SplitSSEClientAsync(sdk_metadata, client_key, **kwargs)
+ self._running = False
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._token_task = None
+
+ async def update_workers_status(self, enabled):
+ """
+ Enable/Disable push update workers.
+
+ :param enabled: if True, enable workers. If False, disable them.
+ :type enabled: bool
+ """
+ await self._processor.update_workers_status(enabled)
+
+ def start(self):
+ """Start a new connection if not already running."""
+ if self._running:
+ _LOGGER.warning('Push manager already has a connection running. Ignoring')
+ return
+
+ self._running_task = asyncio.get_running_loop().create_task(self._trigger_connection_flow())
+
+ async def stop(self, blocking=False):
+ """
+ Stop the current ongoing connection.
+
+ :param blocking: whether to wait for the connection to be successfully closed or not
+ :type blocking: bool
+ """
+ if not self._running:
+ _LOGGER.warning('Push manager does not have an open SSE connection. Ignoring')
+ return
+
+ if self._token_task:
+ self._token_task.cancel()
+ self._token_task = None
+
+ if blocking:
+ await self._stop_current_conn()
+ else:
+ asyncio.get_running_loop().create_task(self._stop_current_conn())
+
+ async def close_sse_http_client(self):
+ await self._sse_client.close_sse_http_client()
+
+ async def _event_handler(self, event):
+ """
+ Process an incoming event.
+
+ :param event: Incoming event
+ :type event: splitio.push.sse.SSEEvent
+ """
+ parsed = None
+ try:
+ parsed = parse_incoming_event(event)
+ handle = self._event_handlers[parsed.event_type]
+ except Exception:
+ _LOGGER.error('Parsing exception or no handler for message of type %s', parsed.event_type if parsed else 'unknown')
+ _LOGGER.debug(str(event), exc_info=True)
+ return
+
+ try:
+ await handle(parsed)
+ except Exception: # pylint:disable=broad-except
+ event_type = "unknown" if parsed is None else parsed.event_type
+ _LOGGER.error('something went wrong when processing message of type %s', event_type)
+ _LOGGER.debug(str(parsed), exc_info=True)
+
+ async def _token_refresh(self, current_token):
+ """Refresh auth token.
+
+ :param current_token: token (parsed) JWT
+ :type current_token: splitio.models.token.Token
+ """
+ _LOGGER.debug("Next token refresh in " + str(self._get_time_period(current_token)) + " seconds")
+ await asyncio.sleep(self._get_time_period(current_token))
+ await self._stop_current_conn()
+ self._running_task = asyncio.get_running_loop().create_task(self._trigger_connection_flow())
+
+ async def _get_auth_token(self):
+ """Get new auth token"""
+ try:
+ token = await self._auth_api.authenticate()
+ except APIException as e:
+ _LOGGER.error('error performing sse auth request.')
+ _LOGGER.debug('stack trace: ', exc_info=True)
+ await self._feedback_loop.put(Status.PUSH_RETRYABLE_ERROR)
+ raise AuthException(e)
+
+ if token is not None and not token.push_enabled:
+ await self._feedback_loop.put(Status.PUSH_NONRETRYABLE_ERROR)
+ raise AuthException("Push is not enabled")
+
+ await self._telemetry_runtime_producer.record_token_refreshes()
+ await self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.TOKEN_REFRESH, 1000 * token.exp, get_current_epoch_time_ms()))
+ _LOGGER.debug("auth token fetched. connecting to streaming.")
+ return token
+
+ async def _trigger_connection_flow(self):
+ """Authenticate and start a connection."""
+ self._status_tracker.reset()
+
+ try:
+ token = await self._get_auth_token()
+ events_source = self._sse_client.start(token)
+ self._running = True
+
+ first_event = await anext(events_source)
+ if first_event.data is not None:
+ await self._event_handler(first_event)
+
+ _LOGGER.debug("connected to streaming, scheduling next refresh")
+ self._token_task = asyncio.get_running_loop().create_task(self._token_refresh(token))
+ await self._handle_connection_ready()
+ await self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.CONNECTION_ESTABLISHED, 0, get_current_epoch_time_ms()))
+
+ async for event in events_source:
+ await self._event_handler(event)
+ await self._handle_connection_end() # TODO(mredolatti): this is not tested
+ except AuthException as e:
+ _LOGGER.error("error getting auth token: " + str(e))
+ _LOGGER.debug("trace: ", exc_info=True)
+ except StopAsyncIteration: # will enter here if there was an error
+ await self._feedback_loop.put(Status.PUSH_RETRYABLE_ERROR)
+ finally:
+ if self._token_task is not None:
+ self._token_task.cancel()
+ self._token_task = None
+ self._running = False
+ await self._processor.update_workers_status(False)
+
+ async def _handle_message(self, event):
+ """
+ Handle incoming update message.
+
+ :param event: Incoming Update message
+ :type event: splitio.push.sse.parser.Update
+ """
+ try:
+ handle = self._message_handlers[event.message_type]
+ except KeyError:
+ _LOGGER.error('no handler for message of type %s', event.message_type)
+ _LOGGER.debug(str(event), exc_info=True)
+ return
+
+ await handle(event)
+
+ async def _handle_update(self, event):
+ """
+ Handle incoming update message.
+
+ :param event: Incoming Update message
+ :type event: splitio.push.sse.parser.Update
+ """
+ _LOGGER.debug('handling update event: %s', str(event))
+ await self._processor.handle(event)
+
+ async def _handle_control(self, event):
+ """
+ Handle incoming control message.
+
+ :param event: Incoming control message.
+ :type event: splitio.push.sse.parser.ControlMessage
+ """
+ _LOGGER.debug('handling control event: %s', str(event))
+ feedback = await self._status_tracker.handle_control_message(event)
+ if feedback is not None:
+ await self._feedback_loop.put(feedback)
+
+ async def _handle_occupancy(self, event):
+ """
+ Handle incoming notification message.
+
+ :param event: Incoming occupancy message.
+ :type event: splitio.push.sse.parser.Occupancy
+ """
+ _LOGGER.debug('handling occupancy event: %s', str(event))
+ feedback = await self._status_tracker.handle_occupancy(event)
+ if feedback is not None:
+ await self._feedback_loop.put(feedback)
+
+ async def _handle_error(self, event):
+ """
+ Handle incoming error message.
+
+ :param event: Incoming ably error
+ :type event: splitio.push.sse.parser.AblyError
+ """
+ _LOGGER.debug('handling ably error event: %s', str(event))
+ feedback = await self._status_tracker.handle_ably_error(event)
+ if feedback is not None:
+ await self._feedback_loop.put(feedback)
+
+ async def _handle_connection_ready(self):
+ """Handle a successful connection to SSE."""
+ await self._feedback_loop.put(Status.PUSH_SUBSYSTEM_UP)
+ _LOGGER.info('sse initial event received. enabling')
+
+ async def _handle_connection_end(self):
+ """
+ Handle a connection ending.
+
+ If the connection shutdown was not requested, trigger a restart.
+ """
+ feedback = await self._status_tracker.handle_disconnect()
+ if feedback is not None:
+ await self._feedback_loop.put(feedback)
+
+ async def _stop_current_conn(self):
+ """Abort current streaming connection and stop it's associated workers."""
+ _LOGGER.debug("Aborting SplitSSE tasks.")
+ await self._processor.update_workers_status(False)
+ self._status_tracker.notify_sse_shutdown_expected()
+ await self._sse_client.stop()
+ self._running_task.cancel()
+ await self._running_task
+ self._running_task = None
+ _LOGGER.debug("SplitSSE tasks are stopped")
diff --git a/splitio/push/parser.py b/splitio/push/parser.py
new file mode 100644
index 00000000..79b410e3
--- /dev/null
+++ b/splitio/push/parser.py
@@ -0,0 +1,638 @@
+"""SSE Notification definitions."""
+import abc
+import json
+from enum import Enum
+
+from splitio.util.decorators import abstract_property
+from splitio.util.time import utctime_ms
+from splitio.push.sse import SSE_EVENT_ERROR, SSE_EVENT_MESSAGE
+
+class EventType(Enum):
+ """Event type enumeration."""
+
+ MESSAGE = SSE_EVENT_MESSAGE
+ ERROR = SSE_EVENT_ERROR
+
+
+class MessageType(Enum):
+ """Message type enumeration."""
+
+ UPDATE = 0
+ OCCUPANCY = 1
+ CONTROL = 2
+
+
+class UpdateType(Enum):
+ """Message type enumeration."""
+
+ SPLIT_UPDATE = 'SPLIT_UPDATE'
+ SPLIT_KILL = 'SPLIT_KILL'
+ SEGMENT_UPDATE = 'SEGMENT_UPDATE'
+ RB_SEGMENT_UPDATE = 'RB_SEGMENT_UPDATE'
+
+
+class ControlType(Enum):
+ """Control type enumeration."""
+
+ STREAMING_ENABLED = 'STREAMING_ENABLED'
+ STREAMING_PAUSED = 'STREAMING_PAUSED'
+ STREAMING_DISABLED = 'STREAMING_DISABLED'
+
+
+TAG_OCCUPANCY = '[meta]occupancy'
+
+
+class EventParsingException(Exception):
+ """Exception to be raised on parser errors."""
+
+ pass
+
+
+class BaseEvent(object, metaclass=abc.ABCMeta):
+ """Base event that reqiures subclasses tu have a type."""
+
+ @abstract_property
+ def event_type(self): # pylint:disable=no-self-use
+ """
+ Return the event type.
+
+ :returns: The type of this parsed event.
+ :rtype: EventType
+ """
+ pass
+
+
+class AblyError(BaseEvent):
+ """Ably Error message."""
+
+ def __init__(self, code, status_code, message, href):
+ """
+ Class constructor.
+
+ :param code: error code
+ :type code: int
+
+ :param status_code: http status cude
+ :type status_code: int
+
+ :param message: error message
+ :type message: str
+
+ :param href: link to error description
+ :type href: str
+ """
+ self._code = code
+ self._status_code = status_code
+ self._message = message
+ self._href = href
+ self._timestamp = utctime_ms()
+
+ @property
+ def event_type(self): # pylint:disable=no-self-use
+ """
+ Return the event type.
+
+ :returns: The type of this parsed event.
+ :rtype: MessageType
+ """
+ return EventType.ERROR
+
+ @property
+ def code(self):
+ """
+ Return the error code.
+
+ :returns: ably error code.
+ :rtype: int
+ """
+ return self._code
+
+ @property
+ def status_code(self):
+ """
+ Return the http status code.
+
+ :returns: http status error code.
+ :rtype: int
+ """
+ return self._status_code
+
+ @property
+ def message(self):
+ """
+ Return the ably error message.
+
+ :returns: ably error message.
+ :rtype: str
+ """
+ return self._message
+
+ @property
+ def href(self):
+ """
+ Return the link of the error description.
+
+ :returns: error description url
+ :rtype: str
+ """
+ return self._href
+
+ @property
+ def timestamp(self):
+ """
+ Return a the timestamp when this error was constructed.
+
+ :returns: approximate error timestamp
+ :rtype: int
+ """
+ return self._timestamp
+
+ def should_be_ignored(self):
+ """
+ Return whether this error should be ignored or not.
+
+ :returns: True if this error should be ignored. False otherwise.
+ :rtype: bool
+ """
+ return self._code < 40000 or self._code > 49999
+
+ def is_retryable(self):
+ """
+ Return whether this error is retryable or not.
+
+ :returns: True if this error is retryable. False otherwise.
+ :rtype: bool
+ """
+ return self._code >= 40140 and self._code <= 40149
+
+ def __str__(self):
+ """Return string representation."""
+ return "AblyError - code=%d, status=%d, message=%s, href=%s" % \
+ (self.code, self.status_code, self.message, self.href)
+
+
+class BaseMessage(BaseEvent, metaclass=abc.ABCMeta):
+ """Message type event."""
+
+ def __init__(self, channel, timestamp):
+ """
+ Construct a message's base structure.
+
+ :param channel: channel where the notification was received.
+ :type channel: str
+ """
+ self._channel = channel
+ self._timestamp = timestamp
+
+ @property
+ def channel(self):
+ """
+ Return the channel where the message arrived.
+
+ :returns: channel
+ :rtype: str
+ """
+ return self._channel
+
+ @property
+ def timestamp(self):
+ """
+ Return the timestamp when the message was sent.
+
+ :returns: message sending timestamp
+ :rtype: int
+ """
+ return self._timestamp
+
+ @property
+ def event_type(self): # pylint:disable=no-self-use
+ """
+ Return the event type.
+
+ :returns: The type of this parsed event.
+ :rtype: MessageType
+ """
+ return EventType.MESSAGE
+
+ @abstract_property
+ def message_type(self): # pylint:disable=no-self-use
+ """
+ Return the message type.
+
+ :returns: The type of this parsed Message.
+ :rtype: MessageType
+ """
+ pass
+
+
+class OccupancyMessage(BaseMessage):
+ """Ably publisher occupancy notification."""
+
+ def __init__(self, channel, timestamp, publishers):
+ """
+ Construct an occupancy message.
+
+ :param channel: channel where occupancy is being announced.
+ :type channel: str
+
+ :param publishers: number of active publishers attached to this channel.
+ :type data: int
+ """
+ BaseMessage.__init__(self, channel, timestamp)
+ self._publishers = publishers
+
+ @property
+ def message_type(self): # pylint:disable=no-self-use
+ """
+ Return the message type.
+
+ :returns: The type of this parsed Message.
+ :rtype: MessageType
+ """
+ return MessageType.OCCUPANCY
+
+ @property
+ def channel(self):
+ """
+ Return the channel on which this message was received.
+
+ :returns: channel name
+ :rtype: str
+ """
+ return self._channel.replace('[?occupancy=metrics.publishers]', '')
+
+ @property
+ def publishers(self):
+ """
+ Return the number of publishers of this channel.
+
+ :returns: attahed publisher count.
+ :rtype: int
+ """
+ return self._publishers
+
+ def __str__(self):
+ """Return string representation."""
+ return "Occupancy - channel=%s, publishers=%d" % (self.channel, self.publishers)
+
+
+class BaseUpdate(BaseMessage, metaclass=abc.ABCMeta):
+ """Feature flag data update notification."""
+
+ def __init__(self, channel, timestamp, change_number):
+ """
+ Construct an update event.
+
+ :param data: raw message data.
+ :type data: dict
+
+ :param channel: channel where the message came from.
+ :type channel: str
+ """
+ BaseMessage.__init__(self, channel, timestamp)
+ self._change_number = change_number
+
+ @abstract_property
+ def update_type(self): # pylint:disable=no-self-use
+ """
+ Return the message type.
+
+ :returns: The type of this parsed Update.
+ :rtype: UpdateType
+ """
+ pass
+
+ @property
+ def message_type(self): # pylint:disable=no-self-use
+ """
+ Return the message type.
+
+ :returns: The type of this parsed event.
+ :rtype: MessageType
+ """
+ return MessageType.UPDATE
+
+ @property
+ def change_number(self):
+ """
+ Return the change number associated with the data update.
+
+ :returns: change number
+ :rtype: int
+ """
+ return self._change_number
+
+
+class SplitChangeUpdate(BaseUpdate):
+ """Feature flag Change notification."""
+
+ def __init__(self, channel, timestamp, change_number, previous_change_number, feature_flag_definition, compression):
+ """Class constructor."""
+ BaseUpdate.__init__(self, channel, timestamp, change_number)
+ self._previous_change_number = previous_change_number
+ self._object_definition = feature_flag_definition
+ self._compression = compression
+
+ @property
+ def update_type(self): # pylint:disable=no-self-use
+ """
+ Return the message type.
+
+ :returns: The type of this parsed Update.
+ :rtype: UpdateType
+ """
+ return UpdateType.SPLIT_UPDATE
+
+ @property
+ def previous_change_number(self): # pylint:disable=no-self-use
+ """
+ Return previous change number
+ :returns: The previous change number
+ :rtype: int
+ """
+ return self._previous_change_number
+
+ @property
+ def object_definition(self): # pylint:disable=no-self-use
+ """
+ Return feature flag definition
+ :returns: The new feature flag definition
+ :rtype: str
+ """
+ return self._object_definition
+
+ @property
+ def compression(self): # pylint:disable=no-self-use
+ """
+ Return previous compression type
+ :returns: The compression type
+ :rtype: int
+ """
+ return self._compression
+
+ def __str__(self):
+ """Return string representation."""
+ return "SplitChange - changeNumber=%d" % (self.change_number)
+
+
+class SplitKillUpdate(BaseUpdate):
+ """Feature flag Kill notification."""
+
+ def __init__(self, channel, timestamp, change_number, feature_flag_name, default_treatment): # pylint:disable=too-many-arguments
+ """Class constructor."""
+ BaseUpdate.__init__(self, channel, timestamp, change_number)
+ self._feature_flag_name = feature_flag_name
+ self._default_treatment = default_treatment
+
+ @property
+ def update_type(self): # pylint:disable=no-self-use
+ """
+ Return the message type.
+
+ :returns: The type of this parsed Update.
+ :rtype: UpdateType
+ """
+ return UpdateType.SPLIT_KILL
+
+ @property
+ def feature_flag_name(self):
+ """
+ Return the name of the killed feature flag.
+
+ :returns: name of the killed feature flag
+ :rtype: str
+ """
+ return self._feature_flag_name
+
+ @property
+ def default_treatment(self):
+ """
+ Return the default treatment.
+
+ :returns: default treatment
+ :rtype: str
+ """
+ return self._default_treatment
+
+ def __str__(self):
+ """Return string representation."""
+ return "SplitKill - changeNumber=%d, name=%s, defaultTreatment=%s" % \
+ (self.change_number, self.feature_flag_name, self.default_treatment)
+
+
+class SegmentChangeUpdate(BaseUpdate):
+ """Segment Change notification."""
+
+ def __init__(self, channel, timestamp, change_number, segment_name):
+ """Class constructor."""
+ BaseUpdate.__init__(self, channel, timestamp, change_number)
+ self._segment_name = segment_name
+
+ @property
+ def update_type(self): # pylint:disable=no-self-use
+ """
+ Return the message type.
+
+ :returns: The type of this parsed Update.
+ :rtype: UpdateType
+ """
+ return UpdateType.SEGMENT_UPDATE
+
+ @property
+ def segment_name(self):
+ """
+ Return the semgent name associated with the data update.
+
+ :returns: segment name
+ :rtype: str
+ """
+ return self._segment_name
+
+ def __str__(self):
+ """Return string representation."""
+ return "SegmentChange - changeNumber=%d, name=%s" % (self.change_number, self.segment_name)
+
+class RBSChangeUpdate(BaseUpdate):
+ """rbs Change notification."""
+
+ def __init__(self, channel, timestamp, change_number, previous_change_number, rbs_definition, compression):
+ """Class constructor."""
+ BaseUpdate.__init__(self, channel, timestamp, change_number)
+ self._previous_change_number = previous_change_number
+ self._object_definition = rbs_definition
+ self._compression = compression
+
+ @property
+ def update_type(self): # pylint:disable=no-self-use
+ """
+ Return the message type.
+
+ :returns: The type of this parsed Update.
+ :rtype: UpdateType
+ """
+ return UpdateType.RB_SEGMENT_UPDATE
+
+ @property
+ def previous_change_number(self): # pylint:disable=no-self-use
+ """
+ Return previous change number
+ :returns: The previous change number
+ :rtype: int
+ """
+ return self._previous_change_number
+
+ @property
+ def object_definition(self): # pylint:disable=no-self-use
+ """
+ Return rbs definition
+ :returns: The new rbs definition
+ :rtype: str
+ """
+ return self._object_definition
+
+ @property
+ def compression(self): # pylint:disable=no-self-use
+ """
+ Return previous compression type
+ :returns: The compression type
+ :rtype: int
+ """
+ return self._compression
+
+ def __str__(self):
+ """Return string representation."""
+ return "RBSChange - changeNumber=%d" % (self.change_number)
+
+class ControlMessage(BaseMessage):
+ """Control notification."""
+
+ def __init__(self, channel, timestamp, control_type):
+ """Class constructor."""
+ BaseMessage.__init__(self, channel, timestamp)
+ self._control_type = ControlType(control_type)
+
+ @property
+ def message_type(self): # pylint:disable=no-self-use
+ """
+ Return the message type.
+
+ :returns: The type of this parsed event.
+ :rtype: MessageType
+ """
+ return MessageType.CONTROL
+
+ @property
+ def control_type(self):
+ """
+ Return the associated control type.
+
+ :returns: control type
+ :rtype: ControlType
+ """
+ return self._control_type
+
+ def __str__(self):
+ """Return string representation."""
+ return "Control - type=%s" % (self.control_type.name)
+
+
+def _parse_update(channel, timestamp, data):
+ """
+ Parse a message of update type.
+
+ :param channel: channel name
+ :type data: str
+
+ :param data: raw incoming event
+ :type data: dict
+
+ :returns: Parsed ably error notification.
+ :rtype: BaseUpdate
+ """
+ update_type = UpdateType(data['type'])
+ change_number = data['changeNumber']
+ if update_type == UpdateType.SPLIT_UPDATE and change_number is not None:
+ return SplitChangeUpdate(channel, timestamp, change_number, data.get('pcn'), data.get('d'), data.get('c'))
+
+ if update_type == UpdateType.RB_SEGMENT_UPDATE and change_number is not None:
+ return RBSChangeUpdate(channel, timestamp, change_number, data.get('pcn'), data.get('d'), data.get('c'))
+
+ elif update_type == UpdateType.SPLIT_KILL and change_number is not None:
+ return SplitKillUpdate(channel, timestamp, change_number,
+ data['splitName'], data['defaultTreatment'])
+
+ elif update_type == UpdateType.SEGMENT_UPDATE:
+ return SegmentChangeUpdate(channel, timestamp, change_number, data['segmentName'])
+
+ raise EventParsingException('unrecognized event type %s' % update_type)
+
+
+def _parse_message(data):
+ """
+ Parse a message event into a concrete class.
+
+ :param data: raw incoming event.
+ :type data: dict:
+
+ :returns: Parsed ably error notification.
+ :rtype: BaseEvent
+ """
+ if not all(k in data for k in ['data', 'channel']):
+ return None
+
+ channel = data['channel']
+ timestamp = data['timestamp']
+ parsed_data = json.loads(data['data'])
+ if data.get('name') == TAG_OCCUPANCY:
+ return OccupancyMessage(channel, timestamp, parsed_data['metrics']['publishers'])
+
+ elif parsed_data['type'] == 'CONTROL':
+ return ControlMessage(channel, timestamp, parsed_data['controlType'])
+
+ elif parsed_data['type'] in UpdateType.__members__:
+ return _parse_update(channel, timestamp, parsed_data)
+
+ raise EventParsingException('unrecognized message type %s' % parsed_data['type'])
+
+
+def _parse_error(data):
+ """
+ Parse an error message into a concrete class.
+
+ :param data: raw incoming event.
+ :type data: dict:
+
+ :returns: Parsed ably error notification.
+ :rtype: AblyError
+ """
+ return AblyError(data.get('code'), data.get('statusCode'),
+ data.get('message'), data.get('href'))
+
+
+def parse_incoming_event(raw_event):
+ """
+ Parse a raw event as received by the sse client.
+
+ :param raw_event: raw SSE Event
+ :type raw_event: splitio.push.sse.SSEEvent
+
+ :returns: an event parsed to it's concrete type.
+ :rtype: BaseEvent
+ """
+ if raw_event is None:
+ return None
+
+ try:
+ parsed_data = json.loads(raw_event.data)
+ except Exception as exc: # pylint:disable=broad-except
+ raise EventParsingException('Error parsing json') from exc
+
+ try:
+ event_type = EventType(raw_event.event)
+ except ValueError as exc:
+ raise Exception('unknown event type %s' % raw_event.event) from exc
+
+ return {
+ EventType.ERROR: _parse_error,
+ EventType.MESSAGE: _parse_message,
+ }[event_type](parsed_data)
diff --git a/splitio/push/processor.py b/splitio/push/processor.py
new file mode 100644
index 00000000..41d796c7
--- /dev/null
+++ b/splitio/push/processor.py
@@ -0,0 +1,192 @@
+"""Message processor & Notification manager keeper implementations."""
+
+from queue import Queue
+import abc
+
+from splitio.push.parser import UpdateType
+from splitio.push.workers import SplitWorker, SplitWorkerAsync, SegmentWorker, SegmentWorkerAsync
+from splitio.optional.loaders import asyncio
+
+class MessageProcessorBase(object, metaclass=abc.ABCMeta):
+ """Message processor template."""
+
+ @abc.abstractmethod
+ def update_workers_status(self, enabled):
+ """Enable/Disable push update workers."""
+
+ @abc.abstractmethod
+ def handle(self, event):
+ """Handle incoming update event."""
+
+ @abc.abstractmethod
+ def shutdown(self):
+ """Stop splits & segments workers."""
+
+class MessageProcessor(MessageProcessorBase):
+ """Message processor class."""
+
+ def __init__(self, synchronizer, telemetry_runtime_producer):
+ """
+ Class constructor.
+
+ :param synchronizer: synchronizer component
+ :type synchronizer: splitio.sync.synchronizer.Synchronizer
+ """
+ self._feature_flag_queue = Queue()
+ self._segments_queue = Queue()
+ self._synchronizer = synchronizer
+ self._feature_flag_worker = SplitWorker(synchronizer.synchronize_splits, synchronizer.synchronize_segment, self._feature_flag_queue, synchronizer.split_sync.feature_flag_storage, synchronizer.segment_storage, telemetry_runtime_producer, synchronizer.split_sync.rule_based_segment_storage)
+ self._segments_worker = SegmentWorker(synchronizer.synchronize_segment, self._segments_queue)
+ self._handlers = {
+ UpdateType.SPLIT_UPDATE: self._handle_feature_flag_update,
+ UpdateType.SPLIT_KILL: self._handle_feature_flag_kill,
+ UpdateType.SEGMENT_UPDATE: self._handle_segment_change,
+ UpdateType.RB_SEGMENT_UPDATE: self._handle_feature_flag_update
+ }
+
+ def _handle_feature_flag_update(self, event):
+ """
+ Handle incoming feature_flag update notification.
+
+ :param event: Incoming feature_flag change event
+ :type event: splitio.push.parser.SplitChangeUpdate
+ """
+ self._feature_flag_queue.put(event)
+
+ def _handle_feature_flag_kill(self, event):
+ """
+ Handle incoming feature flag kill notification.
+
+ :param event: Incoming feature flag kill event
+ :type event: splitio.push.parser.SplitKillUpdate
+ """
+ self._synchronizer.kill_split(event.feature_flag_name, event.default_treatment,
+ event.change_number)
+ self._feature_flag_queue.put(event)
+
+ def _handle_segment_change(self, event):
+ """
+ Handle incoming segment update notification.
+
+ :param event: Incoming segment change event
+ :type event: splitio.push.parser.Update
+ """
+ self._segments_queue.put(event)
+
+ def update_workers_status(self, enabled):
+ """
+ Enable/Disable push update workers.
+
+ :param enabled: if True, enable workers. If False, disable them.
+ :type enabled: bool
+ """
+ if enabled:
+ self._feature_flag_worker.start()
+ self._segments_worker.start()
+ else:
+ self._feature_flag_worker.stop()
+ self._segments_worker.stop()
+
+ def handle(self, event):
+ """
+ Handle incoming update event.
+
+ :param event: incoming data update event.
+ :type event: splitio.push.BaseUpdate
+ """
+ try:
+ handle = self._handlers[event.update_type]
+ except KeyError as exc:
+ raise Exception('no handler for notification type: %s' % event.update_type) from exc
+
+ handle(event)
+
+ def shutdown(self):
+ """Stop feature flags & segments workers."""
+ self._feature_flag_worker.stop()
+ self._segments_worker.stop()
+
+
+class MessageProcessorAsync(MessageProcessorBase):
+ """Message processor class."""
+
+ def __init__(self, synchronizer, telemetry_runtime_producer):
+ """
+ Class constructor.
+
+ :param synchronizer: synchronizer component
+ :type synchronizer: splitio.sync.synchronizer.Synchronizer
+ """
+ self._feature_flag_queue = asyncio.Queue()
+ self._segments_queue = asyncio.Queue()
+ self._synchronizer = synchronizer
+ self._feature_flag_worker = SplitWorkerAsync(synchronizer.synchronize_splits, synchronizer.synchronize_segment, self._feature_flag_queue, synchronizer.split_sync.feature_flag_storage, synchronizer.segment_storage, telemetry_runtime_producer, synchronizer.split_sync.rule_based_segment_storage)
+ self._segments_worker = SegmentWorkerAsync(synchronizer.synchronize_segment, self._segments_queue)
+ self._handlers = {
+ UpdateType.SPLIT_UPDATE: self._handle_feature_flag_update,
+ UpdateType.SPLIT_KILL: self._handle_feature_flag_kill,
+ UpdateType.SEGMENT_UPDATE: self._handle_segment_change,
+ UpdateType.RB_SEGMENT_UPDATE: self._handle_feature_flag_update
+ }
+
+ async def _handle_feature_flag_update(self, event):
+ """
+ Handle incoming feature_flag update notification.
+
+ :param event: Incoming feature_flag change event
+ :type event: splitio.push.parser.SplitChangeUpdate
+ """
+ await self._feature_flag_queue.put(event)
+
+ async def _handle_feature_flag_kill(self, event):
+ """
+ Handle incoming feature_flag kill notification.
+
+ :param event: Incoming feature_flag kill event
+ :type event: splitio.push.parser.SplitKillUpdate
+ """
+ await self._synchronizer.kill_split(event.feature_flag_name, event.default_treatment,
+ event.change_number)
+ await self._feature_flag_queue.put(event)
+
+ async def _handle_segment_change(self, event):
+ """
+ Handle incoming segment update notification.
+
+ :param event: Incoming segment change event
+ :type event: splitio.push.parser.Update
+ """
+ await self._segments_queue.put(event)
+
+ async def update_workers_status(self, enabled):
+ """
+ Enable/Disable push update workers.
+
+ :param enabled: if True, enable workers. If False, disable them.
+ :type enabled: bool
+ """
+ if enabled:
+ self._feature_flag_worker.start()
+ self._segments_worker.start()
+ else:
+ await self._feature_flag_worker.stop()
+ await self._segments_worker.stop()
+
+ async def handle(self, event):
+ """
+ Handle incoming update event.
+
+ :param event: incoming data update event.
+ :type event: splitio.push.BaseUpdate
+ """
+ try:
+ handle = self._handlers[event.update_type]
+ except KeyError as exc:
+ raise Exception('no handler for notification type: %s' % event.update_type) from exc
+
+ await handle(event)
+
+ async def shutdown(self):
+ """Stop splits & segments workers."""
+ await self._feature_flag_worker.stop()
+ await self._segments_worker.stop()
diff --git a/splitio/push/splitsse.py b/splitio/push/splitsse.py
new file mode 100644
index 00000000..788648d4
--- /dev/null
+++ b/splitio/push/splitsse.py
@@ -0,0 +1,255 @@
+"""An SSE client wrapper to be used with split endpoint."""
+import logging
+import threading
+from enum import Enum
+import abc
+import sys
+
+from splitio.push.sse import SSEClient, SSEClientAsync, SSE_EVENT_ERROR
+from splitio.util.threadutil import EventGroup
+from splitio.api import headers_from_metadata
+from splitio.optional.loaders import asyncio
+
+if sys.version_info.major == 3 and sys.version_info.minor < 10:
+ from splitio.optional.loaders import _anext as anext
+
+_LOGGER = logging.getLogger(__name__)
+
+class SplitSSEClientBase(object, metaclass=abc.ABCMeta):
+ """Split streaming endpoint SSE base client."""
+
+ KEEPALIVE_TIMEOUT = 70
+
+ class _Status(Enum):
+ IDLE = 0
+ CONNECTING = 1
+ ERRORED = 2
+ CONNECTED = 3
+
+ def __init__(self, base_url):
+ """
+ Construct a split sse client.
+
+ :param base_url: scheme + :// + host
+ :type base_url: str
+ """
+ self._base_url = base_url
+
+ @staticmethod
+ def _format_channels(channels):
+ """
+ Format channels into a list from the raw object retrieved in the token.
+
+ :param channels: object as extracted from the JWT capabilities.
+ :type channels: dict[str,list[str]]
+
+ :returns: channels as a list of strings.
+ :rtype: list[str]
+ """
+ regular = [k for (k, v) in channels.items() if v == ['subscribe']]
+ occupancy = ['[?occupancy=metrics.publishers]' + k
+ for (k, v) in channels.items()
+ if 'channel-metadata:publishers' in v]
+ return regular + occupancy
+
+ def _build_url(self, token):
+ """
+ Build the url to connect to and return it as a string.
+
+ :param token: (parsed) JWT
+ :type token: splitio.models.token.Token
+
+ :returns: true if the connection was successful. False otherwise.
+ :rtype: bool
+ """
+ return '{base}/event-stream?v=1.1&accessToken={token}&channels={channels}'.format(
+ base=self._base_url,
+ token=token.token,
+ channels=','.join(self._format_channels(token.channels)))
+
+ @abc.abstractmethod
+ def start(self, token):
+ """Open a connection to start listening for events."""
+
+ @abc.abstractmethod
+ def stop(self, blocking=False, timeout=None):
+ """Abort the ongoing connection."""
+
+
+class SplitSSEClient(SplitSSEClientBase): # pylint: disable=too-many-instance-attributes
+ """Split streaming endpoint SSE client."""
+
+ def __init__(self, event_callback, sdk_metadata, first_event_callback=None,
+ connection_closed_callback=None, client_key=None,
+ base_url='https://streaming.split.io'):
+ """
+ Construct a split sse client.
+
+ :param callback: fuction to call when an event is received.
+ :type callback: callable
+
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+
+ :param first_event_callback: function to call when the first event is received.
+ :type first_event_callback: callable
+
+ :param connection_closed_callback: funciton to call when the connection ends.
+ :type connection_closed_callback: callable
+
+ :param base_url: scheme + :// + host
+ :type base_url: str
+
+ :param client_key: client key.
+ :type client_key: str
+ """
+ SplitSSEClientBase.__init__(self, base_url)
+ self._client = SSEClient(self._raw_event_handler)
+ self._callback = event_callback
+ self._on_connected = first_event_callback
+ self._on_disconnected = connection_closed_callback
+ self._status = SplitSSEClient._Status.IDLE
+ self._sse_first_event = None
+ self._sse_connection_closed = None
+ self._metadata = headers_from_metadata(sdk_metadata, client_key)
+
+ def _raw_event_handler(self, event):
+ """
+ Handle incoming raw sse event.
+
+ :param event: Incoming raw sse event.
+ :type event: splitio.push.sse.SSEEvent
+ """
+ if self._status == SplitSSEClient._Status.CONNECTING:
+ self._status = SplitSSEClient._Status.CONNECTED if event.event != SSE_EVENT_ERROR \
+ else SplitSSEClient._Status.ERRORED
+ self._sse_first_event.set()
+ if self._on_connected is not None:
+ self._on_connected()
+
+ if event.data is not None:
+ self._callback(event)
+
+ def start(self, token):
+ """
+ Open a connection to start listening for events.
+
+ :param token: (parsed) JWT
+ :type token: splitio.models.token.Token
+
+ :returns: true if the connection was successful. False otherwise.
+ :rtype: bool
+ """
+ if self._status != SplitSSEClient._Status.IDLE:
+ raise Exception('SseClient already started.')
+
+ self._status = SplitSSEClient._Status.CONNECTING
+
+ event_group = EventGroup()
+ self._sse_first_event = event_group.make_event()
+ self._sse_connection_closed = event_group.make_event()
+
+ def connect(url):
+ """Connect to sse in a blocking manner."""
+ try:
+ self._client.start(url, timeout=self.KEEPALIVE_TIMEOUT,
+ extra_headers=self._metadata)
+ finally:
+ self._status = SplitSSEClient._Status.IDLE
+ self._sse_connection_closed.set()
+ self._on_disconnected()
+
+ url = self._build_url(token)
+ task = threading.Thread(target=connect, name='SSEConnection', args=(url,), daemon=True)
+ task.start()
+ event_group.wait()
+ return self._status == SplitSSEClient._Status.CONNECTED
+
+ def stop(self, blocking=False, timeout=None):
+ """Abort the ongoing connection."""
+ if self._status == SplitSSEClient._Status.IDLE:
+ _LOGGER.warning('sse already closed. ignoring')
+ return
+
+ self._client.shutdown()
+ if blocking:
+ self._sse_connection_closed.wait(timeout)
+
+class SplitSSEClientAsync(SplitSSEClientBase): # pylint: disable=too-many-instance-attributes
+ """Split streaming endpoint SSE client."""
+
+ def __init__(self, sdk_metadata, client_key=None, base_url='https://streaming.split.io'):
+ """
+ Construct a split sse client.
+
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+
+ :param client_key: client key.
+ :type client_key: str
+
+ :param base_url: scheme + :// + host
+ :type base_url: str
+ """
+ SplitSSEClientBase.__init__(self, base_url)
+ self.status = SplitSSEClient._Status.IDLE
+ self._metadata = headers_from_metadata(sdk_metadata, client_key)
+ self._client = SSEClientAsync(self.KEEPALIVE_TIMEOUT)
+ self._event_source = None
+ self._event_source_ended = asyncio.Event()
+
+ async def start(self, token):
+ """
+ Open a connection to start listening for events.
+
+ :param token: (parsed) JWT
+ :type token: splitio.models.token.Token
+
+ :returns: yield events received from SSEClientAsync object
+ :rtype: SSEEvent
+ """
+ _LOGGER.debug(self.status)
+ if self.status != SplitSSEClient._Status.IDLE:
+ raise Exception('SseClient already started.')
+
+ self.status = SplitSSEClient._Status.CONNECTING
+ url = self._build_url(token)
+ try:
+ self._event_source_ended.clear()
+ self._event_source = self._client.start(url, extra_headers=self._metadata)
+ first_event = await anext(self._event_source)
+ if first_event.event == SSE_EVENT_ERROR:
+ return
+
+ yield first_event
+ self.status = SplitSSEClient._Status.CONNECTED
+ _LOGGER.debug("Split SSE client started")
+ async for event in self._event_source:
+ if event.data is not None:
+ yield event
+ except Exception: # pylint:disable=broad-except
+ _LOGGER.error('SplitSSE Client Exception')
+ _LOGGER.debug('stack trace: ', exc_info=True)
+ finally:
+ self.status = SplitSSEClient._Status.IDLE
+ _LOGGER.debug('Split sse connection ended.')
+ self._event_source_ended.set()
+
+ async def stop(self):
+ """Abort the ongoing connection."""
+ _LOGGER.debug("stopping SplitSSE Client")
+ if self.status == SplitSSEClient._Status.IDLE:
+ _LOGGER.warning('sse already closed. ignoring')
+ return
+
+ await self._client.shutdown()
+# catching exception to avoid task hanging
+ try:
+ await self._event_source_ended.wait()
+ except asyncio.CancelledError as e:
+ _LOGGER.debug("Exception waiting for event source ended")
+ _LOGGER.debug('stack trace: ', exc_info=True)
+ pass
+
+ async def close_sse_http_client(self):
+ await self._client.close_session()
diff --git a/splitio/push/sse.py b/splitio/push/sse.py
new file mode 100644
index 00000000..8cde7f98
--- /dev/null
+++ b/splitio/push/sse.py
@@ -0,0 +1,233 @@
+"""Low-level SSE Client."""
+import logging
+import socket
+from collections import namedtuple
+from http.client import HTTPConnection, HTTPSConnection
+from urllib.parse import urlparse
+
+from splitio.optional.loaders import asyncio, aiohttp
+
+_LOGGER = logging.getLogger(__name__)
+
+SSE_EVENT_ERROR = 'error'
+SSE_EVENT_MESSAGE = 'message'
+_DEFAULT_HEADERS = {'accept': 'text/event-stream'}
+_EVENT_SEPARATORS = set([b'\n', b'\r\n'])
+_DEFAULT_SOCKET_READ_TIMEOUT = 70
+
+SSEEvent = namedtuple('SSEEvent', ['event_id', 'event', 'retry', 'data'])
+
+
+__ENDING_CHARS = set(['\n', ''])
+
+class EventBuilder(object):
+ """Event builder class."""
+
+ _SEPARATOR = b':'
+
+ def __init__(self):
+ """Construct a builder."""
+ self._lines = {}
+
+ def process_line(self, line):
+ """
+ Process a new line.
+
+ :param line: Line to process
+ :type line: bytes
+ """
+ try:
+ key, val = line.split(self._SEPARATOR, 1)
+ self._lines[key.decode('utf8').strip()] = val.decode('utf8').strip()
+ except ValueError: # key without a value
+ self._lines[line.decode('utf8').strip()] = None
+
+ def build(self):
+ """Construct an event with relevant fields."""
+ return SSEEvent(self._lines.get('id'), self._lines.get('event'),
+ self._lines.get('retry'), self._lines.get('data'))
+
+class SSEClient(object):
+ """SSE Client implementation."""
+
+ def __init__(self, callback):
+ """
+ Construct an SSE client.
+
+ :param callback: function to call when an event is received
+ :type callback: callable
+ """
+ self._conn = None
+ self._event_callback = callback
+ self._shutdown_requested = False
+
+ def _read_events(self):
+ """
+ Read events from the supplied connection.
+
+ :returns: True if the connection was ended by us. False if it was closed by the serve.
+ :rtype: bool
+ """
+ try:
+ response = self._conn.getresponse()
+ event_builder = EventBuilder()
+ while True:
+ line = response.readline()
+ if line is None or len(line) <= 0: # connection ended
+ break
+ elif line.startswith(b':'): # comment. Skip
+ _LOGGER.debug("skipping sse comment")
+ continue
+ elif line in _EVENT_SEPARATORS:
+ event = event_builder.build()
+ _LOGGER.debug("dispatching event: %s", event)
+ self._event_callback(event)
+ event_builder = EventBuilder()
+ else:
+ event_builder.process_line(line)
+ except Exception: # pylint:disable=broad-except
+ _LOGGER.debug('sse connection ended.')
+ _LOGGER.debug('stack trace: ', exc_info=True)
+ finally:
+ self._conn.close()
+ self._conn = None # clear so it can be started again
+
+ return self._shutdown_requested
+
+ def start(self, url, extra_headers=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT): # pylint:disable=protected-access
+ """
+ Connect and start listening for events.
+
+ :param url: url to connect to
+ :type url: str
+
+ :param extra_headers: additional headers
+ :type extra_headers: dict[str, str]
+
+ :param timeout: connection & read timeout
+ :type timeout: float
+
+ :returns: True if the connection was ended by us. False if it was closed by the serve.
+ :rtype: bool
+ """
+ if self._conn is not None:
+ raise RuntimeError('Client already started.')
+
+ self._shutdown_requested = False
+ url, headers = urlparse(url), get_headers(extra_headers)
+ self._conn = (HTTPSConnection(url.hostname, url.port, timeout=timeout)
+ if url.scheme == 'https'
+ else HTTPConnection(url.hostname, port=url.port, timeout=timeout))
+
+ self._conn.request('GET', '%s?%s' % (url.path, url.query), headers=headers)
+ return self._read_events()
+
+ def shutdown(self):
+ """Shutdown the current connection."""
+ if self._conn is None or self._conn.sock is None:
+ _LOGGER.warning("no sse connection has been started on this SSEClient instance. Ignoring")
+ return
+
+ if self._shutdown_requested:
+ _LOGGER.warning("shutdown already requested")
+ return
+
+ self._shutdown_requested = True
+ self._conn.sock.shutdown(socket.SHUT_RDWR)
+
+
+class SSEClientAsync(object):
+ """SSE Client implementation."""
+
+ def __init__(self, socket_read_timeout=_DEFAULT_SOCKET_READ_TIMEOUT):
+ """
+ Construct an SSE client.
+
+ :param url: url to connect to
+ :type url: str
+
+ :param extra_headers: additional headers
+ :type extra_headers: dict[str, str]
+
+ :param timeout: connection & read timeout
+ :type timeout: float
+ """
+ self._socket_read_timeout = socket_read_timeout + socket_read_timeout * .3
+ self._response = None
+ self._done = asyncio.Event()
+ client_timeout = aiohttp.ClientTimeout(total=0, sock_read=self._socket_read_timeout)
+ self._sess = aiohttp.ClientSession(timeout=client_timeout)
+
+ async def start(self, url, extra_headers=None): # pylint:disable=protected-access
+ """
+ Connect and start listening for events.
+
+ :returns: yield event when received
+ :rtype: SSEEvent
+ """
+ _LOGGER.debug("Async SSEClient Started")
+ if self._response is not None:
+ raise RuntimeError('Client already started.')
+
+ self._done.clear()
+ try:
+ async with self._sess.get(url, headers=get_headers(extra_headers)) as response:
+ self._response = response
+ event_builder = EventBuilder()
+ async for line in response.content:
+ if line.startswith(b':'):
+ _LOGGER.debug("skipping emtpy line / comment")
+ continue
+ elif line in _EVENT_SEPARATORS:
+ _LOGGER.debug("dispatching event: %s", event_builder.build())
+ yield event_builder.build()
+ event_builder = EventBuilder()
+ else:
+ event_builder.process_line(line)
+
+ except Exception as exc: # pylint:disable=broad-except
+ if self._is_conn_closed_error(exc):
+ _LOGGER.debug('sse connection ended.')
+ return
+
+ _LOGGER.error('http client is throwing exceptions')
+ _LOGGER.error('stack trace: ', exc_info=True)
+
+ finally:
+ self._response = None
+ self._done.set()
+
+ async def shutdown(self):
+ """Close connection"""
+ if self._response:
+ self._response.close()
+ # catching exception to avoid task hanging if a canceled exception occurred
+ try:
+ await self._done.wait()
+ except asyncio.CancelledError:
+ _LOGGER.debug("Exception waiting for SSE connection to end")
+ _LOGGER.debug('stack trace: ', exc_info=True)
+ pass
+
+ @staticmethod
+ def _is_conn_closed_error(exc):
+ """Check if the ReadError is caused by the connection being closed."""
+ return isinstance(exc, aiohttp.ClientConnectionError) and str(exc) == "Connection closed"
+
+ async def close_session(self):
+ if not self._sess.closed:
+ await self._sess.close()
+
+def get_headers(extra=None):
+ """
+ Return default headers with added custom ones if specified.
+
+ :param extra: additional headers
+ :type extra: dict[str, str]
+
+ :returns: processed Headers
+ :rtype: dict
+ """
+ headers = _DEFAULT_HEADERS.copy()
+ headers.update(extra if extra is not None else {})
+ return headers
diff --git a/splitio/push/status_tracker.py b/splitio/push/status_tracker.py
new file mode 100644
index 00000000..ec11cb48
--- /dev/null
+++ b/splitio/push/status_tracker.py
@@ -0,0 +1,359 @@
+"""NotificationManagerKeeper implementation."""
+from enum import Enum
+import logging
+
+from splitio.push.parser import ControlType
+from splitio.util.time import get_current_epoch_time_ms
+from splitio.models.telemetry import StreamingEventTypes, SSEConnectionError, SSEStreamingStatus
+
+_LOGGER = logging.getLogger(__name__)
+
+
+class Status(Enum):
+ """Push subsystem statuses."""
+
+ PUSH_SUBSYSTEM_UP = 0
+ PUSH_SUBSYSTEM_DOWN = 1
+ PUSH_RETRYABLE_ERROR = 2
+ PUSH_NONRETRYABLE_ERROR = 3
+
+
+class LastEventTimestamps(object): # pylint:disable=too-few-public-methods
+ """Simple class to keep track of the last time multiple events occurred."""
+
+ def __init__(self):
+ """Class constructor."""
+ self.control = -1
+ self.occupancy = -1
+
+ def reset(self):
+ """Restore original values."""
+ self.control = -1
+ self.occupancy = -1
+
+
+class PushStatusTrackerBase(object):
+ """Tracks status of notification manager/publishers."""
+
+ def __init__(self, telemetry_runtime_producer):
+ """Class constructor."""
+ self._publishers = {}
+ self._last_control_message = None
+ self._last_status_propagated = None
+ self._timestamps = LastEventTimestamps()
+ self._shutdown_expected = None
+ self.reset() # Set proper initial values
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ def reset(self):
+ """
+ Reset the status to initial conditions.
+
+ This asssumes a healthy connection until proven wrong.
+ """
+ self._publishers.update({'control_pri': 2, 'control_sec': 2})
+ self._last_control_message = ControlType.STREAMING_ENABLED
+ self._last_status_propagated = Status.PUSH_SUBSYSTEM_UP
+ self._timestamps.reset()
+ self._shutdown_expected = False
+
+ def notify_sse_shutdown_expected(self):
+ """Let the status tracker know that an sse shutdown has been requested."""
+ self._shutdown_expected = True
+
+ def _propagate_status(self, status):
+ """
+ Store and propagates a new status.
+
+ :param status: Status to propagate.
+ :type status: Status
+
+ :returns: Status to propagate
+ :rtype: status
+ """
+ self._last_status_propagated = status
+ return status
+
+ def _occupancy_ok(self):
+ """
+ Return whether we have enough publishers.
+
+ :returns: True if publisher count is enough. False otherwise
+ :rtype: bool
+ """
+ return any(count > 0 for (chan, count) in self._publishers.items())
+
+ def _get_event_type_occupancy(self, event):
+ return StreamingEventTypes.OCCUPANCY_PRI if event.channel[-3:] == 'pri' else StreamingEventTypes.OCCUPANCY_SEC
+
+ def _get_next_status(self):
+ """
+ Return the next status to propagate based on the last status.
+
+ :returns: Next status and Streaming status for telemetry event.
+ :rtype: Tuple(splitio.push.status_tracker.Status, splitio.models.telemetry.SSEStreamingStatus)
+ """
+ if self._last_status_propagated == Status.PUSH_SUBSYSTEM_UP:
+ if not self._occupancy_ok() \
+ or self._last_control_message == ControlType.STREAMING_PAUSED:
+ return self._propagate_status(Status.PUSH_SUBSYSTEM_DOWN), SSEStreamingStatus.PAUSED.value
+
+ if self._last_control_message == ControlType.STREAMING_DISABLED:
+ return self._propagate_status(Status.PUSH_NONRETRYABLE_ERROR), SSEStreamingStatus.DISABLED.value
+
+ if self._last_status_propagated == Status.PUSH_SUBSYSTEM_DOWN:
+ if self._occupancy_ok() and self._last_control_message == ControlType.STREAMING_ENABLED:
+ return self._propagate_status(Status.PUSH_SUBSYSTEM_UP), SSEStreamingStatus.ENABLED.value
+
+ if self._last_control_message == ControlType.STREAMING_DISABLED:
+ return self._propagate_status(Status.PUSH_NONRETRYABLE_ERROR), SSEStreamingStatus.DISABLED.value
+
+ return None, None
+
+class PushStatusTracker(PushStatusTrackerBase):
+ """Tracks status of notification manager/publishers."""
+
+ def __init__(self, telemetry_runtime_producer):
+ """Class constructor."""
+ PushStatusTrackerBase.__init__(self, telemetry_runtime_producer)
+
+ def handle_occupancy(self, event):
+ """
+ Handle an incoming occupancy event.
+
+ :param event: incoming occupancy event.
+ :type event: splitio.push.sse.parser.Occupancy
+
+ :returns: A new status if required. None otherwise
+ :rtype: Optional[Status]
+ """
+ if self._shutdown_expected: # we don't care about occupancy if a disconnection is expected
+ return None
+
+ if event.channel not in self._publishers:
+ _LOGGER.info("received occupancy message from an unknown channel `%s`. Ignoring",
+ event.channel)
+ return None
+
+ if self._timestamps.occupancy > event.timestamp:
+ _LOGGER.info('received an old occupancy message. ignoring.')
+ return None
+
+ self._timestamps.occupancy = event.timestamp
+
+ self._publishers[event.channel] = event.publishers
+ self._telemetry_runtime_producer.record_streaming_event((
+ self._get_event_type_occupancy(event),
+ len(self._publishers),
+ event.timestamp
+ ))
+ return self._update_status()
+
+ def handle_control_message(self, event):
+ """
+ Handle an incoming Control event.
+
+ :param event: Incoming control event
+ :type event: splitio.push.parser.ControlMessage
+ """
+ # we don't care about control messages if a disconnection is expected
+ if self._shutdown_expected:
+ return None
+
+ if self._timestamps.control > event.timestamp:
+ _LOGGER.info('receved an old control message. ignoring.')
+ return None
+
+ self._timestamps.control = event.timestamp
+
+ self._last_control_message = event.control_type
+ return self._update_status()
+
+ def handle_ably_error(self, event):
+ """
+ Handle an ably-specific error.
+
+ :param event: parsed ably error
+ :type event: splitio.push.parser.AblyError
+
+ :returns: A new status if required. None otherwise
+ :rtype: Optional[Status]
+ """
+ if self._shutdown_expected: # we don't care about an incoming error if a shutdown is expected
+ return None
+
+ _LOGGER.debug('handling ably error event: %s', str(event))
+ if event.should_be_ignored():
+ _LOGGER.debug('ignoring sse error message: %s', event)
+ return None
+
+ # Indicate that the connection will eventually end. 2 possibilities:
+ # 1. The server closes the connection after sending the error
+ # 2. RETRYABLE_ERROR is propagated and the connection is closed on the clint side.
+ # By doing this we guarantee that only one error will be propagated
+ self.notify_sse_shutdown_expected()
+ self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.ABLY_ERROR, event.code, event.timestamp))
+
+ if event.is_retryable():
+ _LOGGER.info('received retryable error message. '
+ 'Restarting the whole flow with backoff.')
+ return self._propagate_status(Status.PUSH_RETRYABLE_ERROR)
+
+ _LOGGER.info('received non-retryable sse error message. Disabling streaming.')
+ return self._propagate_status(Status.PUSH_NONRETRYABLE_ERROR)
+
+ def _update_status(self):
+ """
+ Evaluate the current/previous status and emit a new status message if appropriate.
+
+ :returns: A new status if required. None otherwise
+ :rtype: Optional[Status]
+ """
+ next_status, telemetry_event_type = self._get_next_status()
+ if next_status is not None:
+ self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.STREAMING_STATUS, telemetry_event_type, get_current_epoch_time_ms()))
+ return next_status
+
+ return None
+
+ def handle_disconnect(self):
+ """
+ Handle non-requested SSE disconnection.
+
+ It should properly handle:
+ - connection reset/timeout
+ - disconnection after an ably error
+
+ :returns: A new status if required. None otherwise
+ :rtype: Optional[Status]
+ """
+ if not self._shutdown_expected:
+ self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SSE_CONNECTION_ERROR, SSEConnectionError.NON_REQUESTED.value, get_current_epoch_time_ms()))
+ return self._propagate_status(Status.PUSH_RETRYABLE_ERROR)
+
+ self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SSE_CONNECTION_ERROR, SSEConnectionError.REQUESTED.value, get_current_epoch_time_ms()))
+ return None
+
+class PushStatusTrackerAsync(PushStatusTrackerBase):
+ """Tracks status of notification manager/publishers."""
+
+ def __init__(self, telemetry_runtime_producer):
+ """Class constructor."""
+ PushStatusTrackerBase.__init__(self, telemetry_runtime_producer)
+
+ async def handle_occupancy(self, event):
+ """
+ Handle an incoming occupancy event.
+
+ :param event: incoming occupancy event.
+ :type event: splitio.push.sse.parser.Occupancy
+
+ :returns: A new status if required. None otherwise
+ :rtype: Optional[Status]
+ """
+ if self._shutdown_expected: # we don't care about occupancy if a disconnection is expected
+ return None
+
+ if event.channel not in self._publishers:
+ _LOGGER.info("received occupancy message from an unknown channel `%s`. Ignoring",
+ event.channel)
+ return None
+
+ if self._timestamps.occupancy > event.timestamp:
+ _LOGGER.info('received an old occupancy message. ignoring.')
+ return None
+
+ self._timestamps.occupancy = event.timestamp
+
+ self._publishers[event.channel] = event.publishers
+ await self._telemetry_runtime_producer.record_streaming_event((
+ self._get_event_type_occupancy(event),
+ len(self._publishers),
+ event.timestamp
+ ))
+ return await self._update_status()
+
+ async def handle_control_message(self, event):
+ """
+ Handle an incoming Control event.
+
+ :param event: Incoming control event
+ :type event: splitio.push.parser.ControlMessage
+ """
+ # we don't care about control messages if a disconnection is expected
+ if self._shutdown_expected:
+ return None
+
+ if self._timestamps.control > event.timestamp:
+ _LOGGER.info('receved an old control message. ignoring.')
+ return None
+
+ self._timestamps.control = event.timestamp
+
+ self._last_control_message = event.control_type
+ return await self._update_status()
+
+ async def handle_ably_error(self, event):
+ """
+ Handle an ably-specific error.
+
+ :param event: parsed ably error
+ :type event: splitio.push.parser.AblyError
+
+ :returns: A new status if required. None otherwise
+ :rtype: Optional[Status]
+ """
+ if self._shutdown_expected: # we don't care about an incoming error if a shutdown is expected
+ return None
+
+ _LOGGER.debug('handling ably error event: %s', str(event))
+ if event.should_be_ignored():
+ _LOGGER.debug('ignoring sse error message: %s', event)
+ return None
+
+ # Indicate that the connection will eventually end. 2 possibilities:
+ # 1. The server closes the connection after sending the error
+ # 2. RETRYABLE_ERROR is propagated and the connection is closed on the clint side.
+ # By doing this we guarantee that only one error will be propagated
+ self.notify_sse_shutdown_expected()
+ await self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.ABLY_ERROR, event.code, event.timestamp))
+
+ if event.is_retryable():
+ _LOGGER.info('received retryable error message. '
+ 'Restarting the whole flow with backoff.')
+ return self._propagate_status(Status.PUSH_RETRYABLE_ERROR)
+
+ _LOGGER.info('received non-retryable sse error message. Disabling streaming.')
+ return self._propagate_status(Status.PUSH_NONRETRYABLE_ERROR)
+
+ async def _update_status(self):
+ """
+ Evaluate the current/previous status and emit a new status message if appropriate.
+
+ :returns: A new status if required. None otherwise
+ :rtype: Optional[Status]
+ """
+ next_status, telemetry_event_type = self._get_next_status()
+ if next_status is not None:
+ await self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.STREAMING_STATUS, telemetry_event_type, get_current_epoch_time_ms()))
+ return next_status
+
+ return None
+
+ async def handle_disconnect(self):
+ """
+ Handle non-requested SSE disconnection.
+
+ It should properly handle:
+ - connection reset/timeout
+ - disconnection after an ably error
+
+ :returns: A new status if required. None otherwise
+ :rtype: Optional[Status]
+ """
+ if not self._shutdown_expected:
+ await self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SSE_CONNECTION_ERROR, SSEConnectionError.NON_REQUESTED.value, get_current_epoch_time_ms()))
+ return self._propagate_status(Status.PUSH_RETRYABLE_ERROR)
+
+ await self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SSE_CONNECTION_ERROR, SSEConnectionError.REQUESTED.value, get_current_epoch_time_ms()))
+ return None
diff --git a/splitio/push/workers.py b/splitio/push/workers.py
new file mode 100644
index 00000000..e0dd8369
--- /dev/null
+++ b/splitio/push/workers.py
@@ -0,0 +1,445 @@
+"""Segment changes processing worker."""
+import logging
+import threading
+import abc
+import gzip
+import zlib
+import base64
+import json
+from enum import Enum
+
+from splitio.models.splits import from_raw
+from splitio.models.rule_based_segments import from_raw as rbs_from_raw
+from splitio.models.telemetry import UpdateFromSSE
+from splitio.push import SplitStorageException
+from splitio.push.parser import UpdateType
+from splitio.optional.loaders import asyncio
+from splitio.util.storage_helper import update_feature_flag_storage, update_feature_flag_storage_async, \
+ update_rule_based_segment_storage, update_rule_based_segment_storage_async
+
+_LOGGER = logging.getLogger(__name__)
+
+class CompressionMode(Enum):
+ """Compression modes """
+
+ NO_COMPRESSION = 0
+ GZIP_COMPRESSION = 1
+ ZLIB_COMPRESSION = 2
+
+_compression_handlers = {
+ CompressionMode.NO_COMPRESSION: lambda event: base64.b64decode(event.object_definition),
+ CompressionMode.GZIP_COMPRESSION: lambda event: gzip.decompress(base64.b64decode(event.object_definition)).decode('utf-8'),
+ CompressionMode.ZLIB_COMPRESSION: lambda event: zlib.decompress(base64.b64decode(event.object_definition)).decode('utf-8'),
+}
+
+class WorkerBase(object, metaclass=abc.ABCMeta):
+ """Worker template."""
+
+ _fetching_segment = "Fetching new segment {segment_name}"
+
+ @abc.abstractmethod
+ def is_running(self):
+ """Return whether the working is running."""
+
+ @abc.abstractmethod
+ def start(self):
+ """Start worker."""
+
+ @abc.abstractmethod
+ def stop(self):
+ """Stop worker."""
+
+ def _get_object_definition(self, event):
+ """return feature flag or rule based segment definition in event."""
+ cm = CompressionMode(event.compression) # will throw if the number is not defined in compression mode
+ return _compression_handlers[cm](event)
+
+ def _get_referenced_rbs(self, feature_flag):
+ referenced_rbs = set()
+ for condition in feature_flag.conditions:
+ for matcher in condition.matchers:
+ raw_matcher = matcher.to_json()
+ if raw_matcher['matcherType'] == 'IN_RULE_BASED_SEGMENT':
+ referenced_rbs.add(raw_matcher['userDefinedSegmentMatcherData']['segmentName'])
+ return referenced_rbs
+
+class SegmentWorker(WorkerBase):
+ """Segment Worker for processing updates."""
+
+ _centinel = object()
+
+ def __init__(self, synchronize_segment, segment_queue):
+ """
+ Class constructor.
+
+ :param synchronize_segment: handler to perform segment synchronization on incoming event
+ :type synchronize_segment: function
+
+ :param segment_queue: queue with segment updates notifications
+ :type segment_queue: queue
+ """
+ self._segment_queue = segment_queue
+ self._handler = synchronize_segment
+ self._running = False
+ self._worker = None
+
+ def is_running(self):
+ """Return whether the working is running."""
+ return self._running
+
+ def _run(self):
+ """Run worker handler."""
+ while self.is_running():
+ event = self._segment_queue.get()
+ if not self.is_running():
+ break
+ if event == self._centinel:
+ continue
+ _LOGGER.debug('Processing segment_update: %s, change_number: %d',
+ event.segment_name, event.change_number)
+ try:
+ self._handler(event.segment_name, event.change_number)
+ except Exception:
+ _LOGGER.error('Exception raised in segment synchronization')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+
+ def start(self):
+ """Start worker."""
+ if self.is_running():
+ _LOGGER.debug('Worker is already running')
+ return
+ self._running = True
+
+ _LOGGER.debug('Starting Segment Worker')
+ self._worker = threading.Thread(target=self._run, name='PushSegmentWorker', daemon=True)
+ self._worker.start()
+
+ def stop(self):
+ """Stop worker."""
+ _LOGGER.debug('Stopping Segment Worker')
+ if not self.is_running():
+ _LOGGER.debug('Worker is not running. Ignoring.')
+ return
+ self._running = False
+ self._segment_queue.put(self._centinel)
+
+class SegmentWorkerAsync(WorkerBase):
+ """Segment Worker for processing updates."""
+
+ _centinel = object()
+
+ def __init__(self, synchronize_segment, segment_queue):
+ """
+ Class constructor.
+
+ :param synchronize_segment: handler to perform segment synchronization on incoming event
+ :type synchronize_segment: function
+
+ :param segment_queue: queue with segment updates notifications
+ :type segment_queue: asyncio.Queue
+ """
+ self._segment_queue = segment_queue
+ self._handler = synchronize_segment
+ self._running = False
+
+ def is_running(self):
+ """Return whether the working is running."""
+ return self._running
+
+ async def _run(self):
+ """Run worker handler."""
+ while self.is_running():
+ event = await self._segment_queue.get()
+ if not self.is_running():
+ break
+ if event == self._centinel:
+ continue
+ _LOGGER.debug('Processing segment_update: %s, change_number: %d',
+ event.segment_name, event.change_number)
+ try:
+ await self._handler(event.segment_name, event.change_number)
+ except Exception:
+ _LOGGER.error('Exception raised in segment synchronization')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+
+ def start(self):
+ """Start worker."""
+ if self.is_running():
+ _LOGGER.debug('Worker is already running')
+ return
+ self._running = True
+
+ _LOGGER.debug('Starting Segment Worker')
+ asyncio.get_running_loop().create_task(self._run())
+
+ async def stop(self):
+ """Stop worker."""
+ _LOGGER.debug('Stopping Segment Worker')
+ if not self.is_running():
+ _LOGGER.debug('Worker is not running. Ignoring.')
+ return
+ self._running = False
+ await self._segment_queue.put(self._centinel)
+
+class SplitWorker(WorkerBase):
+ """Feature Flag Worker for processing updates."""
+
+ _centinel = object()
+
+ def __init__(self, synchronize_feature_flag, synchronize_segment, feature_flag_queue, feature_flag_storage, segment_storage, telemetry_runtime_producer, rule_based_segment_storage):
+ """
+ Class constructor.
+
+ :param synchronize_feature_flag: handler to perform feature flag synchronization on incoming event
+ :type synchronize_feature_flag: callable
+ :param synchronize_segment: handler to perform segment synchronization on incoming event
+ :type synchronize_segment: function
+ :param feature_flag_queue: queue with feature flag updates notifications
+ :type feature_flag_queue: queue
+ :param feature_flag_storage: feature flag storage instance
+ :type feature_flag_storage: splitio.storage.inmemory.InMemorySplitStorage
+ :param segment_storage: segment storage instance
+ :type segment_storage: splitio.storage.inmemory.InMemorySegmentStorage
+ :param telemetry_runtime_producer: Telemetry runtime producer instance
+ :type telemetry_runtime_producer: splitio.engine.telemetry.TelemetryRuntimeProducer
+ :param rule_based_segment_storage: Rule based segment Storage.
+ :type rule_based_segment_storage: splitio.storage.InMemoryRuleBasedStorage
+ """
+ self._feature_flag_queue = feature_flag_queue
+ self._handler = synchronize_feature_flag
+ self._segment_handler = synchronize_segment
+ self._running = False
+ self._worker = None
+ self._feature_flag_storage = feature_flag_storage
+ self._segment_storage = segment_storage
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._rule_based_segment_storage = rule_based_segment_storage
+
+ def is_running(self):
+ """Return whether the working is running."""
+ return self._running
+
+ def _apply_iff_if_needed(self, event):
+ if not self._check_instant_ff_update(event):
+ return False
+ try:
+ if event.update_type == UpdateType.SPLIT_UPDATE:
+ new_feature_flag = from_raw(json.loads(self._get_object_definition(event)))
+ segment_list = update_feature_flag_storage(self._feature_flag_storage, [new_feature_flag], event.change_number)
+ for segment_name in segment_list:
+ if self._segment_storage.get(segment_name) is None:
+ _LOGGER.debug(self._fetching_segment.format(segment_name=segment_name))
+ self._segment_handler(segment_name, event.change_number)
+
+ referenced_rbs = self._get_referenced_rbs(new_feature_flag)
+ self._fetch_rbs_segment_if_needed(referenced_rbs, event)
+ self._telemetry_runtime_producer.record_update_from_sse(UpdateFromSSE.SPLIT_UPDATE)
+ else:
+ new_rbs = rbs_from_raw(json.loads(self._get_object_definition(event)))
+ segment_list = update_rule_based_segment_storage(self._rule_based_segment_storage, [new_rbs], event.change_number)
+ for segment_name in segment_list:
+ if self._segment_storage.get(segment_name) is None:
+ _LOGGER.debug(self._fetching_segment.format(segment_name=segment_name))
+ self._segment_handler(segment_name, event.change_number)
+ self._telemetry_runtime_producer.record_update_from_sse(UpdateFromSSE.RBS_UPDATE)
+ return True
+
+ except Exception as e:
+ raise SplitStorageException(e)
+
+ def _fetch_rbs_segment_if_needed(self, referenced_rbs, event):
+ if len(referenced_rbs) > 0 and not self._rule_based_segment_storage.contains(referenced_rbs):
+ _LOGGER.debug('Fetching new rule based segment(s) %s', referenced_rbs)
+ self._handler(None, event.change_number)
+
+ def _check_instant_ff_update(self, event):
+ if event.update_type == UpdateType.SPLIT_UPDATE and event.compression is not None and event.previous_change_number == self._feature_flag_storage.get_change_number():
+ return True
+
+ if event.update_type == UpdateType.RB_SEGMENT_UPDATE and event.compression is not None and event.previous_change_number == self._rule_based_segment_storage.get_change_number():
+ return True
+
+ return False
+
+ def _run(self):
+ """Run worker handler."""
+ while self.is_running():
+ event = self._feature_flag_queue.get()
+ if not self.is_running():
+ break
+ if event == self._centinel:
+ continue
+
+ _LOGGER.debug('Processing feature flag update %d', event.change_number)
+ try:
+ if self._apply_iff_if_needed(event):
+ continue
+
+ till = None
+ rbs_till = None
+ till, rbs_till = self._check_update_type(till, rbs_till, event)
+ sync_result = self._handler(till, rbs_till)
+ if not sync_result.success and sync_result.error_code is not None and sync_result.error_code == 414:
+ _LOGGER.error("URI too long exception caught, sync failed")
+
+ if not sync_result.success:
+ _LOGGER.error("feature flags sync failed")
+
+ except SplitStorageException as e: # pylint: disable=broad-except
+ _LOGGER.error('Exception Updating Feature Flag')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ except Exception as e: # pylint: disable=broad-except
+ _LOGGER.error('Exception raised in feature flag synchronization')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+
+ def _check_update_type(self, till, rbs_till, event):
+ if event.update_type == UpdateType.SPLIT_UPDATE:
+ till = event.change_number
+ else:
+ rbs_till = event.change_number
+
+ return till, rbs_till
+
+ def start(self):
+ """Start worker."""
+ if self.is_running():
+ _LOGGER.debug('Worker is already running')
+ return
+ self._running = True
+
+ _LOGGER.debug('Starting Feature Flag Worker')
+ self._worker = threading.Thread(target=self._run, name='PushFeatureFlagWorker', daemon=True)
+ self._worker.start()
+
+ def stop(self):
+ """Stop worker."""
+ _LOGGER.debug('Stopping Feature Flag Worker')
+ if not self.is_running():
+ _LOGGER.debug('Worker is not running')
+ return
+ self._running = False
+ self._feature_flag_queue.put(self._centinel)
+
+class SplitWorkerAsync(WorkerBase):
+ """Split Worker for processing updates."""
+
+ _centinel = object()
+
+ def __init__(self, synchronize_feature_flag, synchronize_segment, feature_flag_queue, feature_flag_storage, segment_storage, telemetry_runtime_producer, rule_based_segment_storage):
+ """
+ Class constructor.
+
+ :param synchronize_feature_flag: handler to perform feature_flag synchronization on incoming event
+ :type synchronize_feature_flag: callable
+ :param synchronize_segment: handler to perform segment synchronization on incoming event
+ :type synchronize_segment: function
+ :param feature_flag_queue: queue with feature_flag updates notifications
+ :type feature_flag_queue: queue
+ :param feature_flag_storage: feature flag storage instance
+ :type feature_flag_storage: splitio.storage.inmemory.InMemorySplitStorage
+ :param segment_storage: segment storage instance
+ :type segment_storage: splitio.storage.inmemory.InMemorySegmentStorage
+ :param telemetry_runtime_producer: Telemetry runtime producer instance
+ :type telemetry_runtime_producer: splitio.engine.telemetry.TelemetryRuntimeProducer
+ :param rule_based_segment_storage: Rule based segment Storage.
+ :type rule_based_segment_storage: splitio.storage.InMemoryRuleBasedStorage
+ """
+ self._feature_flag_queue = feature_flag_queue
+ self._handler = synchronize_feature_flag
+ self._segment_handler = synchronize_segment
+ self._running = False
+ self._feature_flag_storage = feature_flag_storage
+ self._segment_storage = segment_storage
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._rule_based_segment_storage = rule_based_segment_storage
+
+ def is_running(self):
+ """Return whether the working is running."""
+ return self._running
+
+ async def _apply_iff_if_needed(self, event):
+ if not await self._check_instant_ff_update(event):
+ return False
+ try:
+ if event.update_type == UpdateType.SPLIT_UPDATE:
+ new_feature_flag = from_raw(json.loads(self._get_object_definition(event)))
+ segment_list = await update_feature_flag_storage_async(self._feature_flag_storage, [new_feature_flag], event.change_number)
+ for segment_name in segment_list:
+ if await self._segment_storage.get(segment_name) is None:
+ _LOGGER.debug(self._fetching_segment.format(segment_name=segment_name))
+ await self._segment_handler(segment_name, event.change_number)
+
+ referenced_rbs = self._get_referenced_rbs(new_feature_flag)
+ await self._fetch_rbs_segment_if_needed(referenced_rbs, event)
+ await self._telemetry_runtime_producer.record_update_from_sse(UpdateFromSSE.SPLIT_UPDATE)
+ else:
+ new_rbs = rbs_from_raw(json.loads(self._get_object_definition(event)))
+ segment_list = await update_rule_based_segment_storage_async(self._rule_based_segment_storage, [new_rbs], event.change_number)
+ for segment_name in segment_list:
+ if await self._segment_storage.get(segment_name) is None:
+ _LOGGER.debug(self._fetching_segment.format(segment_name=segment_name))
+ await self._segment_handler(segment_name, event.change_number)
+ await self._telemetry_runtime_producer.record_update_from_sse(UpdateFromSSE.RBS_UPDATE)
+ return True
+
+ except Exception as e:
+ raise SplitStorageException(e)
+
+ async def _fetch_rbs_segment_if_needed(self, referenced_rbs, event):
+ if len(referenced_rbs) > 0 and not await self._rule_based_segment_storage.contains(referenced_rbs):
+ _LOGGER.debug('Fetching new rule based segment(s) %s', referenced_rbs)
+ await self._handler(None, event.change_number)
+
+ async def _check_instant_ff_update(self, event):
+ if event.update_type == UpdateType.SPLIT_UPDATE and event.compression is not None and event.previous_change_number == await self._feature_flag_storage.get_change_number():
+ return True
+
+ if event.update_type == UpdateType.RB_SEGMENT_UPDATE and event.compression is not None and event.previous_change_number == await self._rule_based_segment_storage.get_change_number():
+ return True
+
+ return False
+
+ async def _run(self):
+ """Run worker handler."""
+ while self.is_running():
+ event = await self._feature_flag_queue.get()
+ if not self.is_running():
+ break
+ if event == self._centinel:
+ continue
+ _LOGGER.debug('Processing split_update %d', event.change_number)
+ try:
+ if await self._apply_iff_if_needed(event):
+ continue
+ till = None
+ rbs_till = None
+ if event.update_type == UpdateType.SPLIT_UPDATE:
+ till = event.change_number
+ else:
+ rbs_till = event.change_number
+ await self._handler(till, rbs_till)
+ except SplitStorageException as e: # pylint: disable=broad-except
+ _LOGGER.error('Exception Updating Feature Flag')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ except Exception as e: # pylint: disable=broad-except
+ _LOGGER.error('Exception raised in split synchronization')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+
+ def start(self):
+ """Start worker."""
+ if self.is_running():
+ _LOGGER.debug('Worker is already running')
+ return
+ self._running = True
+
+ _LOGGER.debug('Starting Split Worker')
+ asyncio.get_running_loop().create_task(self._run())
+
+ async def stop(self):
+ """Stop worker."""
+ _LOGGER.debug('Stopping Split Worker')
+ if not self.is_running():
+ _LOGGER.debug('Worker is not running')
+ return
+ self._running = False
+ await self._feature_flag_queue.put(self._centinel)
diff --git a/splitio/recorder/__init__.py b/splitio/recorder/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/splitio/recorder/recorder.py b/splitio/recorder/recorder.py
new file mode 100644
index 00000000..4c0ec155
--- /dev/null
+++ b/splitio/recorder/recorder.py
@@ -0,0 +1,431 @@
+"""Stats Recorder."""
+import abc
+import logging
+import random
+
+from splitio.client.config import DEFAULT_DATA_SAMPLING
+from splitio.client.listener import ImpressionListenerException
+from splitio.models.telemetry import MethodExceptionsAndLatencies
+from splitio.models import telemetry
+from splitio.optional.loaders import asyncio
+
+_LOGGER = logging.getLogger(__name__)
+
+
+class StatsRecorder(object, metaclass=abc.ABCMeta):
+ """StatsRecorder interface."""
+
+ def __init__(self, impressions_manager, event_storage, impression_storage, listener=None, unique_keys_tracker=None, imp_counter=None):
+ """
+ Class constructor.
+
+ :param impressions_manager: impression manager instance
+ :type impressions_manager: splitio.engine.impressions.Manager
+ :param event_storage: event storage instance
+ :type event_storage: splitio.storage.EventStorage
+ :param impression_storage: impression storage instance
+ :type impression_storage: splitio.storage.ImpressionStorage
+ :param unique_keys_tracker: Unique Keys Tracker instance
+ :type unique_keys_tracker: splitio.engine.unique_keys_tracker.UniqueKeysTracker
+ :param imp_counter: Impressions Counter instance
+ :type imp_counter: splitio.engine.impressions.Counter
+ """
+ self._impressions_manager = impressions_manager
+ self._event_sotrage = event_storage
+ self._impression_storage = impression_storage
+ self._listener = listener
+ self._unique_keys_tracker = unique_keys_tracker
+ self._imp_counter = imp_counter
+
+ @abc.abstractmethod
+ def record_treatment_stats(self, impressions, latency, operation):
+ """
+ Record stats for treatment evaluation.
+
+ :param impressions: impressions generated for each evaluation performed
+ :type impressions: array
+ :param latency: time took for doing evaluation
+ :type latency: int
+ :param operation: operation type
+ :type operation: str
+ """
+ pass
+
+ @abc.abstractmethod
+ def record_track_stats(self, events):
+ """
+ Record stats for tracking events.
+
+ :param events: events tracked
+ :type events: array
+ """
+ pass
+
+class StatsRecorderThreadingBase(StatsRecorder):
+ """StandardRecorder class."""
+
+ def __init__(self, impressions_manager, event_storage, impression_storage, listener=None, unique_keys_tracker=None, imp_counter=None):
+ """
+ Class constructor.
+
+ :param impressions_manager: impression manager instance
+ :type impressions_manager: splitio.engine.impressions.Manager
+ :param event_storage: event storage instance
+ :type event_storage: splitio.storage.EventStorage
+ :param impression_storage: impression storage instance
+ :type impression_storage: splitio.storage.ImpressionStorage
+ :param unique_keys_tracker: Unique Keys Tracker instance
+ :type unique_keys_tracker: splitio.engine.unique_keys_tracker.UniqueKeysTracker
+ :param imp_counter: Impressions Counter instance
+ :type imp_counter: splitio.engine.impressions.Counter
+ """
+ StatsRecorder.__init__(self, impressions_manager, event_storage, impression_storage, listener, unique_keys_tracker, imp_counter)
+
+ def _send_impressions_to_listener(self, impressions):
+ """
+ Send impression result to custom listener.
+
+ :param impressions: List of impression objects with attributes
+ :type impressions: list[tuple[splitio.models.impression.Impression, dict]]
+ """
+ if self._listener is not None:
+ try:
+ for impression, attributes in impressions:
+ self._listener.log_impression(impression, attributes)
+ except ImpressionListenerException:
+ pass
+
+class StatsRecorderAsyncBase(StatsRecorder):
+ """StandardRecorder class."""
+
+ def __init__(self, impressions_manager, event_storage, impression_storage, listener=None, unique_keys_tracker=None, imp_counter=None):
+ """
+ Class constructor.
+
+ :param impressions_manager: impression manager instance
+ :type impressions_manager: splitio.engine.impressions.Manager
+ :param event_storage: event storage instance
+ :type event_storage: splitio.storage.EventStorage
+ :param impression_storage: impression storage instance
+ :type impression_storage: splitio.storage.ImpressionStorage
+ :param unique_keys_tracker: Unique Keys Tracker instance
+ :type unique_keys_tracker: splitio.engine.unique_keys_tracker.UniqueKeysTracker
+ :param imp_counter: Impressions Counter instance
+ :type imp_counter: splitio.engine.impressions.Counter
+ """
+ StatsRecorder.__init__(self, impressions_manager, event_storage, impression_storage, listener, unique_keys_tracker, imp_counter)
+
+ async def _send_impressions_to_listener_async(self, impressions):
+ """
+ Send impression result to custom listener.
+
+ :param impressions: List of impression objects with attributes
+ :type impressions: list[tuple[splitio.models.impression.Impression, dict]]
+ """
+ if self._listener is not None:
+ try:
+ for impression, attributes in impressions:
+ await self._listener.log_impression(impression, attributes)
+ except ImpressionListenerException:
+ pass
+
+class StandardRecorder(StatsRecorderThreadingBase):
+ """StandardRecorder class."""
+
+ def __init__(self, impressions_manager, event_storage, impression_storage, telemetry_evaluation_producer, telemetry_runtime_producer, listener=None, unique_keys_tracker=None, imp_counter=None):
+ """
+ Class constructor.
+
+ :param impressions_manager: impression manager instance
+ :type impressions_manager: splitio.engine.impressions.Manager
+ :param event_storage: event storage instance
+ :type event_storage: splitio.storage.EventStorage
+ :param impression_storage: impression storage instance
+ :type impression_storage: splitio.storage.ImpressionStorage
+ :param unique_keys_tracker: Unique Keys Tracker instance
+ :type unique_keys_tracker: splitio.engine.unique_keys_tracker.UniqueKeysTracker
+ :param imp_counter: Impressions Counter instance
+ :type imp_counter: splitio.engine.impressions.Counter
+ """
+ StatsRecorderThreadingBase.__init__(self, impressions_manager, event_storage, impression_storage, listener, unique_keys_tracker, imp_counter)
+ self._telemetry_evaluation_producer = telemetry_evaluation_producer
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ def record_treatment_stats(self, impressions_decorated, latency, operation, method_name):
+ """
+ Record stats for treatment evaluation.
+
+ :param impressions: impressions generated for each evaluation performed
+ :type impressions: array
+ :param latency: time took for doing evaluation
+ :type latency: int
+ :param operation: operation type
+ :type operation: str
+ """
+ try:
+ if method_name is not None:
+ self._telemetry_evaluation_producer.record_latency(operation, latency)
+ impressions, deduped, for_listener, for_counter, for_unique_keys_tracker = self._impressions_manager.process_impressions(impressions_decorated)
+ if deduped > 0:
+ self._telemetry_runtime_producer.record_impression_stats(telemetry.CounterConstants.IMPRESSIONS_DEDUPED, deduped)
+ self._impression_storage.put(impressions)
+ self._send_impressions_to_listener(for_listener)
+ if len(for_counter) > 0:
+ self._imp_counter.track(for_counter)
+ if len(for_unique_keys_tracker) > 0:
+ [self._unique_keys_tracker.track(item[0], item[1]) for item in for_unique_keys_tracker]
+ except Exception: # pylint: disable=broad-except
+ _LOGGER.error('Error recording impressions')
+ _LOGGER.debug('Error: ', exc_info=True)
+
+ def record_track_stats(self, event, latency):
+ """
+ Record stats for tracking events.
+
+ :param event: events tracked
+ :type event: splitio.models.events.EventWrapper
+ """
+ self._telemetry_evaluation_producer.record_latency(MethodExceptionsAndLatencies.TRACK, latency)
+ return self._event_sotrage.put(event)
+
+class StandardRecorderAsync(StatsRecorderAsyncBase):
+ """StandardRecorder async class."""
+
+ def __init__(self, impressions_manager, event_storage, impression_storage, telemetry_evaluation_producer, telemetry_runtime_producer, listener=None, unique_keys_tracker=None, imp_counter=None):
+ """
+ Class constructor.
+
+ :param impressions_manager: impression manager instance
+ :type impressions_manager: splitio.engine.impressions.Manager
+ :param event_storage: event storage instance
+ :type event_storage: splitio.storage.EventStorage
+ :param impression_storage: impression storage instance
+ :type impression_storage: splitio.storage.ImpressionStorage
+ :param unique_keys_tracker: Unique Keys Tracker instance
+ :type unique_keys_tracker: splitio.engine.unique_keys_tracker.UniqueKeysTrackerAsync
+ :param imp_counter: Impressions Counter instance
+ :type imp_counter: splitio.engine.impressions.Counter
+ """
+ StatsRecorderAsyncBase.__init__(self, impressions_manager, event_storage, impression_storage, listener, unique_keys_tracker, imp_counter)
+ self._telemetry_evaluation_producer = telemetry_evaluation_producer
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ async def record_treatment_stats(self, impressions_decorated, latency, operation, method_name):
+ """
+ Record stats for treatment evaluation.
+
+ :param impressions: impressions generated for each evaluation performed
+ :type impressions: array
+ :param latency: time took for doing evaluation
+ :type latency: int
+ :param operation: operation type
+ :type operation: str
+ """
+ try:
+ if method_name is not None:
+ await self._telemetry_evaluation_producer.record_latency(operation, latency)
+ impressions, deduped, for_listener, for_counter, for_unique_keys_tracker = self._impressions_manager.process_impressions(impressions_decorated)
+ if deduped > 0:
+ await self._telemetry_runtime_producer.record_impression_stats(telemetry.CounterConstants.IMPRESSIONS_DEDUPED, deduped)
+
+ await self._impression_storage.put(impressions)
+ await self._send_impressions_to_listener_async(for_listener)
+ if len(for_counter) > 0:
+ self._imp_counter.track(for_counter)
+ if len(for_unique_keys_tracker) > 0:
+ unique_keys_coros = [self._unique_keys_tracker.track(item[0], item[1]) for item in for_unique_keys_tracker]
+ await asyncio.gather(*unique_keys_coros)
+ except Exception: # pylint: disable=broad-except
+ _LOGGER.error('Error recording impressions')
+ _LOGGER.debug('Error: ', exc_info=True)
+
+ async def record_track_stats(self, event, latency):
+ """
+ Record stats for tracking events.
+
+ :param event: events tracked
+ :type event: splitio.models.events.EventWrapper
+ """
+ await self._telemetry_evaluation_producer.record_latency(MethodExceptionsAndLatencies.TRACK, latency)
+ return await self._event_sotrage.put(event)
+
+class PipelinedRecorder(StatsRecorderThreadingBase):
+ """PipelinedRecorder class."""
+
+ def __init__(self, pipe, impressions_manager, event_storage,
+ impression_storage, telemetry_redis_storage, data_sampling=DEFAULT_DATA_SAMPLING, listener=None, unique_keys_tracker=None, imp_counter=None):
+ """
+ Class constructor.
+
+ :param pipe: redis pipeline function
+ :type pipe: callable
+ :param impressions_manager: impression manager instance
+ :type impressions_manager: splitio.engine.impressions.Manager
+ :param event_storage: event storage instance
+ :type event_storage: splitio.storage.EventStorage
+ :param impression_storage: impression storage instance
+ :type impression_storage: splitio.storage.redis.RedisImpressionsStorage
+ :param data_sampling: data sampling factor
+ :type data_sampling: number
+ :param unique_keys_tracker: Unique Keys Tracker instance
+ :type unique_keys_tracker: splitio.engine.unique_keys_tracker.UniqueKeysTracker
+ :param imp_counter: Impressions Counter instance
+ :type imp_counter: splitio.engine.impressions.Counter
+ """
+ StatsRecorderThreadingBase.__init__(self, impressions_manager, event_storage, impression_storage, listener, unique_keys_tracker, imp_counter)
+ self._make_pipe = pipe
+ self._data_sampling = data_sampling
+ self._telemetry_redis_storage = telemetry_redis_storage
+
+ def record_treatment_stats(self, impressions_decorated, latency, operation, method_name):
+ """
+ Record stats for treatment evaluation.
+
+ :param impressions: impressions generated for each evaluation performed
+ :type impressions: array
+ :param latency: time took for doing evaluation
+ :type latency: int
+ :param operation: operation type
+ :type operation: str
+ """
+ try:
+ if self._data_sampling < DEFAULT_DATA_SAMPLING:
+ rnumber = random.uniform(0, 1)
+ if self._data_sampling < rnumber:
+ return
+
+ impressions, deduped, for_listener, for_counter, for_unique_keys_tracker = self._impressions_manager.process_impressions(impressions_decorated)
+ if impressions:
+ pipe = self._make_pipe()
+ self._impression_storage.add_impressions_to_pipe(impressions, pipe)
+ if method_name is not None:
+ self._telemetry_redis_storage.add_latency_to_pipe(operation, latency, pipe)
+ result = pipe.execute()
+ if len(result) == 2:
+ self._impression_storage.expire_key(result[0], len(impressions))
+ self._telemetry_redis_storage.expire_latency_keys(result[1], latency)
+ self._send_impressions_to_listener(for_listener)
+
+ if len(for_counter) > 0:
+ self._imp_counter.track(for_counter)
+ if len(for_unique_keys_tracker) > 0:
+ [self._unique_keys_tracker.track(item[0], item[1]) for item in for_unique_keys_tracker]
+ except Exception: # pylint: disable=broad-except
+ _LOGGER.error('Error recording impressions')
+ _LOGGER.debug('Error: ', exc_info=True)
+
+ def record_track_stats(self, event, latency):
+ """
+ Record stats for tracking events.
+
+ :param event: events tracked
+ :type event: splitio.models.events.EventWrapper
+ """
+ try:
+ pipe = self._make_pipe()
+ self._event_sotrage.add_events_to_pipe(event, pipe)
+ self._telemetry_redis_storage.add_latency_to_pipe(MethodExceptionsAndLatencies.TRACK, latency, pipe)
+ result = pipe.execute()
+ if len(result) == 2:
+ self._event_sotrage.expire_keys(result[0], len(event))
+ self._telemetry_redis_storage.expire_latency_keys(result[1], latency)
+ if result[0] > 0:
+ return True
+
+ return False
+
+ except Exception: # pylint: disable=broad-except
+ _LOGGER.error('Error recording events')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return False
+
+class PipelinedRecorderAsync(StatsRecorderAsyncBase):
+ """PipelinedRecorder async class."""
+
+ def __init__(self, pipe, impressions_manager, event_storage,
+ impression_storage, telemetry_redis_storage, data_sampling=DEFAULT_DATA_SAMPLING, listener=None, unique_keys_tracker=None, imp_counter=None):
+ """
+ Class constructor.
+
+ :param pipe: redis pipeline function
+ :type pipe: callable
+ :param impressions_manager: impression manager instance
+ :type impressions_manager: splitio.engine.impressions.Manager
+ :param event_storage: event storage instance
+ :type event_storage: splitio.storage.EventStorage
+ :param impression_storage: impression storage instance
+ :type impression_storage: splitio.storage.redis.RedisImpressionsStorage
+ :param data_sampling: data sampling factor
+ :type data_sampling: number
+ :param unique_keys_tracker: Unique Keys Tracker instance
+ :type unique_keys_tracker: splitio.engine.unique_keys_tracker.UniqueKeysTrackerAsync
+ :param imp_counter: Impressions Counter instance
+ :type imp_counter: splitio.engine.impressions.Counter
+ """
+ StatsRecorderAsyncBase.__init__(self, impressions_manager, event_storage, impression_storage, listener, unique_keys_tracker, imp_counter)
+ self._make_pipe = pipe
+ self._data_sampling = data_sampling
+ self._telemetry_redis_storage = telemetry_redis_storage
+
+ async def record_treatment_stats(self, impressions_decorated, latency, operation, method_name):
+ """
+ Record stats for treatment evaluation.
+
+ :param impressions: impressions generated for each evaluation performed
+ :type impressions: array
+ :param latency: time took for doing evaluation
+ :type latency: int
+ :param operation: operation type
+ :type operation: str
+ """
+ try:
+ if self._data_sampling < DEFAULT_DATA_SAMPLING:
+ rnumber = random.uniform(0, 1)
+ if self._data_sampling < rnumber:
+ return
+
+ impressions, deduped, for_listener, for_counter, for_unique_keys_tracker = self._impressions_manager.process_impressions(impressions_decorated)
+ if impressions:
+ pipe = self._make_pipe()
+ self._impression_storage.add_impressions_to_pipe(impressions, pipe)
+ if method_name is not None:
+ self._telemetry_redis_storage.add_latency_to_pipe(operation, latency, pipe)
+ result = await pipe.execute()
+ if len(result) == 2:
+ await self._impression_storage.expire_key(result[0], len(impressions))
+ await self._telemetry_redis_storage.expire_latency_keys(result[1], latency)
+ await self._send_impressions_to_listener_async(for_listener)
+
+ if len(for_counter) > 0:
+ self._imp_counter.track(for_counter)
+ if len(for_unique_keys_tracker) > 0:
+ unique_keys_coros = [self._unique_keys_tracker.track(item[0], item[1]) for item in for_unique_keys_tracker]
+ await asyncio.gather(*unique_keys_coros)
+ except Exception: # pylint: disable=broad-except
+ _LOGGER.error('Error recording impressions')
+ _LOGGER.debug('Error: ', exc_info=True)
+
+ async def record_track_stats(self, event, latency):
+ """
+ Record stats for tracking events.
+
+ :param event: events tracked
+ :type event: splitio.models.events.EventWrapper
+ """
+ try:
+ pipe = self._make_pipe()
+ self._event_sotrage.add_events_to_pipe(event, pipe)
+ self._telemetry_redis_storage.add_latency_to_pipe(MethodExceptionsAndLatencies.TRACK, latency, pipe)
+ result = await pipe.execute()
+ if len(result) == 2:
+ await self._event_sotrage.expire_keys(result[0], len(event))
+ await self._telemetry_redis_storage.expire_latency_keys(result[1], latency)
+ if result[0] > 0:
+ return True
+
+ return False
+
+ except Exception: # pylint: disable=broad-except
+ _LOGGER.error('Error recording events')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return False
diff --git a/splitio/spec.py b/splitio/spec.py
new file mode 100644
index 00000000..cd7588e0
--- /dev/null
+++ b/splitio/spec.py
@@ -0,0 +1 @@
+SPEC_VERSION = '1.3'
diff --git a/splitio/storage/__init__.py b/splitio/storage/__init__.py
index 7d77f6ca..079ee863 100644
--- a/splitio/storage/__init__.py
+++ b/splitio/storage/__init__.py
@@ -1,13 +1,7 @@
"""Base storage interfaces."""
-from __future__ import absolute_import
-
import abc
-from six import add_metaclass
-
-
-@add_metaclass(abc.ABCMeta)
-class SplitStorage(object):
+class SplitStorage(object, metaclass=abc.ABCMeta):
"""Split storage interface implemented as an abstract class."""
@abc.abstractmethod
@@ -35,25 +29,16 @@ def fetch_many(self, split_names):
pass
@abc.abstractmethod
- def put(self, split):
- """
- Store a split.
-
- :param split: Split object to store
- :type split_name: splitio.models.splits.Split
- """
- pass
-
- @abc.abstractmethod
- def remove(self, split_name):
+ def update(self, to_add, to_delete, new_change_number):
"""
- Remove a split from storage.
+ Update feature flag storage.
- :param split_name: Name of the feature to remove.
- :type split_name: str
-
- :return: True if the split was found and removed. False otherwise.
- :rtype: bool
+ :param to_add: List of feature flags to add
+ :type to_add: list[splitio.models.splits.Split]
+ :param to_delete: List of feature flags to delete
+ :type to_delete: list[splitio.models.splits.Split]
+ :param new_change_number: New change number.
+ :type new_change_number: int
"""
pass
@@ -66,16 +51,6 @@ def get_change_number(self):
"""
pass
- @abc.abstractmethod
- def set_change_number(self, new_change_number):
- """
- Set the latest change number.
-
- :param new_change_number: New change number.
- :type new_change_number: int
- """
- pass
-
@abc.abstractmethod
def get_split_names(self):
"""
@@ -118,9 +93,22 @@ def get_segment_names(self):
"""
return set([name for spl in self.get_all_splits() for name in spl.get_segment_names()])
+ @abc.abstractmethod
+ def kill_locally(self, split_name, default_treatment, change_number):
+ """
+ Local kill for split
-@add_metaclass(abc.ABCMeta)
-class SegmentStorage(object):
+ :param split_name: name of the split to perform kill
+ :type split_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ pass
+
+
+class SegmentStorage(object, metaclass=abc.ABCMeta):
"""Segment storage interface implemented as an abstract class."""
@abc.abstractmethod
@@ -199,8 +187,7 @@ def segment_contains(self, segment_name, key):
pass
-@add_metaclass(abc.ABCMeta)
-class ImpressionStorage(object):
+class ImpressionStorage(object, metaclass=abc.ABCMeta):
"""Impressions storage interface."""
@abc.abstractmethod
@@ -223,9 +210,31 @@ def pop_many(self, count):
"""
pass
+ @abc.abstractmethod
+ def clear(self):
+ """
+ Clear data.
+ """
+ pass
+
+
+class ImpressionPipelinedStorage(object, metaclass=abc.ABCMeta):
+ """Impression Pipelined Storage interface."""
-@add_metaclass(abc.ABCMeta)
-class EventStorage(object):
+ @abc.abstractmethod
+ def add_impressions_to_pipe(self, impressions, pipe):
+ """
+ Add put operation to pipeline
+
+ :param impressions: List of one or more impressions to store.
+ :type impressions: list
+ :param pipe: Redis pipe.
+ :type pipe: redis.pipe
+ """
+ pass
+
+
+class EventStorage(object, metaclass=abc.ABCMeta):
"""Events storage interface."""
@abc.abstractmethod
@@ -248,69 +257,172 @@ def pop_many(self, count):
"""
pass
+ @abc.abstractmethod
+ def clear(self):
+ """
+ Clear data.
+ """
+ pass
-@add_metaclass(abc.ABCMeta)
-class TelemetryStorage(object):
+class TelemetryStorage(object, metaclass=abc.ABCMeta):
"""Telemetry storage interface."""
@abc.abstractmethod
- def inc_latency(self, name, bucket):
+ def record_config(self, config):
"""
- Add a latency.
+ initilize telemetry objects
- :param name: Name of the latency metric.
- :type name: str
- :param value: Value of the latency metric.
- :tyoe value: int
+ :param congif: factory configuration parameters
+ :type config: splitio.client.config
"""
pass
@abc.abstractmethod
- def inc_counter(self, name):
+ def record_latency(self, method, latency):
"""
- Increment a counter.
+ record latency data
- :param name: Name of the counter metric.
- :type name: str
+ :param method: method name
+ :type method: string
+ :param latency: latency
+ :type latency: int64
"""
pass
@abc.abstractmethod
- def put_gauge(self, name, value):
+ def record_exception(self, method):
"""
- Add a gauge metric.
+ record an exception
- :param name: Name of the gauge metric.
- :type name: str
- :param value: Value of the gauge metric.
- :type value: int
+ :param method: method name
+ :type method: string
"""
pass
@abc.abstractmethod
- def pop_counters(self):
+ def record_not_ready_usage(self):
"""
- Get all the counters.
+ record not ready time
- :rtype: list
"""
pass
@abc.abstractmethod
- def pop_gauges(self):
+ def record_bur_time_out(self):
"""
- Get all the gauges.
+ record BUR timeouts
- :rtype: list
+ """
+ pass
+
+class FlagSetsFilter(object):
+ """Config Flagsets Filter storage."""
+ def __init__(self, flag_sets=[]):
+ """Constructor."""
+ self.flag_sets = set(flag_sets)
+ self.should_filter = any(flag_sets)
+ self.sorted_flag_sets = sorted(flag_sets)
+
+ def set_exist(self, flag_set):
+ """
+ Check if a flagset exist in flagset filter
+ :param flag_set: set name
+ :type flag_set: str
+
+ :rtype: bool
+ """
+ if not self.should_filter:
+ return True
+
+ if not isinstance(flag_set, str) or flag_set == '':
+ return False
+
+ return any(self.flag_sets.intersection(set([flag_set])))
+
+ def intersect(self, flag_sets):
+ """
+ Check if a set exist in config flagset filter
+ :param flag_set: set of flagsets
+ :type flag_set: set
+
+ :rtype: bool
+ """
+ if not self.should_filter:
+ return True
+
+ if not isinstance(flag_sets, set) or len(flag_sets) == 0:
+ return False
+
+ return any(self.flag_sets.intersection(flag_sets))
+
+class RuleBasedSegmentsStorage(object, metaclass=abc.ABCMeta):
+ """SplitRule based segment storage interface implemented as an abstract class."""
+
+ @abc.abstractmethod
+ def get(self, segment_name):
+ """
+ Retrieve a rule based segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :rtype: str
"""
pass
@abc.abstractmethod
- def pop_latencies(self):
+ def update(self, to_add, to_delete, new_change_number):
"""
- Get all latencies.
+ Update rule based segment..
- :rtype: list
+ :param to_add: List of rule based segment. to add
+ :type to_add: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param to_delete: List of rule based segment. to delete
+ :type to_delete: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ pass
+
+ @abc.abstractmethod
+ def get_change_number(self):
+ """
+ Retrieve latest rule based segment change number.
+
+ :rtype: int
"""
pass
+
+ @abc.abstractmethod
+ def contains(self, segment_names):
+ """
+ Return whether the segments exists in rule based segment in cache.
+
+ :param segment_names: segment name to validate.
+ :type segment_names: str
+
+ :return: True if segment names exists. False otherwise.
+ :rtype: bool
+ """
+ pass
+
+ @abc.abstractmethod
+ def get_segment_names(self):
+ """
+ Retrieve a list of all excluded segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ pass
+
+ @abc.abstractmethod
+ def get_large_segment_names(self):
+ """
+ Retrieve a list of all excluded large segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ pass
\ No newline at end of file
diff --git a/splitio/storage/adapters/cache_trait.py b/splitio/storage/adapters/cache_trait.py
index 840befc8..0e24d050 100644
--- a/splitio/storage/adapters/cache_trait.py
+++ b/splitio/storage/adapters/cache_trait.py
@@ -4,14 +4,13 @@
import time
from functools import update_wrapper
-import six
-
+from splitio.optional.loaders import asyncio
DEFAULT_MAX_AGE = 5
DEFAULT_MAX_SIZE = 100
-class LocalMemoryCache(object): #pylint: disable=too-many-instance-attributes
+class LocalMemoryCacheBase(object): # pylint: disable=too-many-instance-attributes
"""
Key/Value local memory cache. with expiration & LRU eviction.
@@ -27,10 +26,10 @@ class LocalMemoryCache(object): #pylint: disable=too-many-instance-attributes
None <---next--- || node || <---next--- || node || ... <---next--- || node ||
"""
- class _Node(object): #pylint: disable=too-few-public-methods
+ class _Node(object): # pylint: disable=too-few-public-methods
"""Links to previous an next items in the circular list."""
- def __init__(self, key, value, last_update, previous_element, next_element): #pylint: disable=too-many-arguments
+ def __init__(self, key, value, last_update, previous_element, next_element): # pylint: disable=too-many-arguments
"""Class constructor."""
self.key = key # we also keep the key for O(1) access when removing the LRU.
self.value = value
@@ -51,7 +50,6 @@ def __init__(
):
"""Class constructor."""
self._data = {}
- self._lock = threading.Lock()
self._max_age_seconds = max_age_seconds
self._max_size = max_size
self._lru = None
@@ -59,41 +57,6 @@ def __init__(
self._key_func = key_func
self._user_func = user_func
- def get(self, *args, **kwargs):
- """
- Fetch an item from the cache. If it's a miss, call user function to refill.
-
- :param args: User supplied positional arguments
- :type args: list
- :param kwargs: User supplied keyword arguments
- :type kwargs: dict
-
- :return: Cached/Fetched object
- :rtype: object
- """
- with self._lock:
- key = self._key_func(*args, **kwargs)
- node = self._data.get(key)
- if node is not None:
- if self._is_expired(node):
- node.value = self._user_func(*args, **kwargs)
- node.last_update = time.time()
- else:
- value = self._user_func(*args, **kwargs)
- node = LocalMemoryCache._Node(key, value, time.time(), None, None)
- node = self._bubble_up(node)
- self._data[key] = node
- self._rollover()
- return node.value
-
- def remove_expired(self):
- """Remove expired elements."""
- with self._lock:
- self._data = {
- key: value for (key, value) in six.iteritems(self._data)
- if not self._is_expired(value)
- }
-
def clear(self):
"""Clear the cache."""
self._data = {}
@@ -153,6 +116,106 @@ def __str__(self):
node = node.previous
return '\n' + '\n'.join(nodes) + '\n'
+class LocalMemoryCache(LocalMemoryCacheBase): # pylint: disable=too-many-instance-attributes
+ """Local cache for threading"""
+ def __init__(
+ self,
+ key_func,
+ user_func,
+ max_age_seconds=DEFAULT_MAX_AGE,
+ max_size=DEFAULT_MAX_SIZE
+ ):
+ """Class constructor."""
+ LocalMemoryCacheBase.__init__(self, key_func, user_func, max_age_seconds, max_size)
+ self._lock = threading.Lock()
+
+ def get(self, *args, **kwargs):
+ """
+ Fetch an item from the cache. If it's a miss, call user function to refill.
+
+ :param args: User supplied positional arguments
+ :type args: list
+ :param kwargs: User supplied keyword arguments
+ :type kwargs: dict
+
+ :return: Cached/Fetched object
+ :rtype: object
+ """
+ with self._lock:
+ key = self._key_func(*args, **kwargs)
+ node = self._data.get(key)
+ if node is not None:
+ if self._is_expired(node):
+ node.value = self._user_func(*args, **kwargs)
+ node.last_update = time.time()
+ else:
+ value = self._user_func(*args, **kwargs)
+ node = LocalMemoryCache._Node(key, value, time.time(), None, None)
+ node = self._bubble_up(node)
+ self._data[key] = node
+ self._rollover()
+ return node.value
+
+
+ def remove_expired(self):
+ """Remove expired elements."""
+ with self._lock:
+ self._data = {
+ key: value for (key, value) in self._data.items()
+ if not self._is_expired(value)
+ }
+
+class LocalMemoryCacheAsync(LocalMemoryCacheBase): # pylint: disable=too-many-instance-attributes
+ """Local cache for asyncio"""
+ def __init__(
+ self,
+ key_func,
+ user_func,
+ max_age_seconds=DEFAULT_MAX_AGE,
+ max_size=DEFAULT_MAX_SIZE
+ ):
+ """Class constructor."""
+ LocalMemoryCacheBase.__init__(self, key_func, user_func, max_age_seconds, max_size)
+ self._lock = asyncio.Lock()
+
+ async def get_key(self, key):
+ """
+ Fetch an item from the cache, return None if does not exist
+ :param key: User supplied key
+ :type key: str/frozenset
+ :return: Cached/Fetched object
+ :rtype: object
+ """
+ async with self._lock:
+ node = self._data.get(key)
+ if node is not None:
+ if self._is_expired(node):
+ return None
+
+ if node is None:
+ return None
+
+ node = self._bubble_up(node)
+ return node.value
+
+ async def add_key(self, key, value):
+ """
+ Add an item from the cache.
+ :param key: User supplied key
+ :type key: str/frozenset
+ :param value: key value
+ :type value: str
+ """
+ async with self._lock:
+ if self._data.get(key) is not None:
+ node = self._data.get(key)
+ node.value = value
+ node.last_update = time.time()
+ else:
+ node = LocalMemoryCache._Node(key, value, time.time(), None, None)
+ node = self._bubble_up(node)
+ self._data[key] = node
+ self._rollover()
def decorate(key_func, max_age_seconds=DEFAULT_MAX_AGE, max_size=DEFAULT_MAX_SIZE):
"""
@@ -188,7 +251,7 @@ def _decorator(user_function):
_cache = LocalMemoryCache(key_func, user_function, max_age_seconds, max_size)
# The lambda below IS necessary, otherwise update_wrapper fails since the function
# is an instance method and has no reference to the __module__ namespace.
- wrapper = lambda *args, **kwargs: _cache.get(*args, **kwargs) #pylint: disable=unnecessary-lambda
+ wrapper = lambda *args, **kwargs: _cache.get(*args, **kwargs) # pylint: disable=unnecessary-lambda
return update_wrapper(wrapper, user_function)
return _decorator
diff --git a/splitio/storage/adapters/redis.py b/splitio/storage/adapters/redis.py
index e59b942a..92aa2544 100644
--- a/splitio/storage/adapters/redis.py
+++ b/splitio/storage/adapters/redis.py
@@ -1,15 +1,12 @@
"""Redis client wrapper with prefix support."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
from builtins import str
-from six import string_types, binary_type
-from future.utils import raise_from
-
+import abc
try:
from redis import StrictRedis
from redis.sentinel import Sentinel
from redis.exceptions import RedisError
+ import redis.asyncio as aioredis
+ from redis.asyncio.sentinel import Sentinel as SentinelAsync
except ImportError:
def missing_redis_dependencies(*_, **__):
"""Fail if missing dependencies are used."""
@@ -17,14 +14,7 @@ def missing_redis_dependencies(*_, **__):
'Missing Redis support dependencies. '
'Please use `pip install splitio_client[redis]` to install the sdk with redis support'
)
- StrictRedis = Sentinel = missing_redis_dependencies
-
-
-def _bytes_to_string(maybe_bytes, encode='utf-8'):
- if type(maybe_bytes).__name__ == 'bytes':
- return str(maybe_bytes, encode)
- return maybe_bytes
-
+ StrictRedis = Sentinel = aioredis = missing_redis_dependencies
class RedisAdapterException(Exception):
"""Exception to be thrown when a redis command fails with an exception."""
@@ -53,51 +43,41 @@ class SentinelConfigurationException(Exception):
pass
-class RedisAdapter(object): #pylint: disable=too-many-public-methods
- """
- Instance decorator for Redis clients such as StrictRedis.
-
- Adds an extra layer handling addition/removal of user prefix when handling
- keys
- """
+class PrefixHelper(object):
+ """PrefixHelper generator."""
- def __init__(self, decorated, prefix=None):
+ def __init__(self, prefix=None):
"""
- Store the user prefix and the redis client instance.
+ Class constructor.
- :param decorated: Instance of redis cache client to decorate.
:param prefix: User prefix to add.
"""
self._prefix = prefix
- self._decorated = decorated
- def _add_prefix(self, k):
+ def add_prefix(self, k):
"""
Add a prefix to the contents of k.
- 'k' may be:
- - a single key (of type string or unicode in python2, or type string
- in python 3. In which case we simple add a prefix with a dot.
- - a list, in which the prefix is applied to element.
- If no user prefix is stored, the key/list of keys will be returned as is
-
- :param k: single (string) or list of (list) keys.
+ :param k: single (string).
:returns: Key(s) with prefix if applicable
"""
if self._prefix:
- if isinstance(k, string_types):
+ if isinstance(k, str):
return '{prefix}.{key}'.format(prefix=self._prefix, key=k)
+
elif isinstance(k, list) and k:
- if isinstance(k[0], binary_type):
+ if isinstance(k[0], bytes):
return [
'{prefix}.{key}'.format(prefix=self._prefix, key=key.decode("utf8"))
for key in k
]
- elif isinstance(k[0], string_types):
+
+ elif isinstance(k[0], str):
return [
'{prefix}.{key}'.format(prefix=self._prefix, key=key)
for key in k
]
+
else:
return k
@@ -105,7 +85,7 @@ def _add_prefix(self, k):
"Cannot append prefix correctly. Wrong type for key(s) provided"
)
- def _remove_prefix(self, k):
+ def remove_prefix(self, k):
"""
Remove the user prefix from a key before handling it back to the requester.
@@ -116,10 +96,12 @@ def _remove_prefix(self, k):
:returns: prefix-less key(s)
"""
if self._prefix:
- if isinstance(k, string_types):
+ if isinstance(k, str):
return k[len(self._prefix)+1:]
+
elif isinstance(k, list):
return [key[len(self._prefix)+1:] for key in k]
+
else:
return k
@@ -127,6 +109,123 @@ def _remove_prefix(self, k):
"Cannot remove prefix correctly. Wrong type for key(s) provided"
)
+class RedisAdapterBase(object, metaclass=abc.ABCMeta):
+ """Redis adapter template."""
+
+ @abc.abstractmethod
+ def keys(self, pattern):
+ """Mimic original redis keys."""
+
+ @abc.abstractmethod
+ def set(self, name, value, *args, **kwargs):
+ """Mimic original redis set."""
+
+ @abc.abstractmethod
+ def get(self, name):
+ """Mimic original redis get."""
+
+ @abc.abstractmethod
+ def setex(self, name, time, value):
+ """Mimic original redis setex."""
+
+ @abc.abstractmethod
+ def delete(self, *names):
+ """Mimic original redis delete."""
+
+ @abc.abstractmethod
+ def exists(self, name):
+ """Mimic original redis exists."""
+
+ @abc.abstractmethod
+ def lrange(self, key, start, end):
+ """Mimic original redis lrange."""
+
+ @abc.abstractmethod
+ def mget(self, names):
+ """Mimic original redis mget."""
+
+ @abc.abstractmethod
+ def smembers(self, name):
+ """Mimic original redis smembers."""
+
+ @abc.abstractmethod
+ def sadd(self, name, *values):
+ """Mimic original redis sadd."""
+
+ @abc.abstractmethod
+ def srem(self, name, *values):
+ """Mimic original redis srem."""
+
+ @abc.abstractmethod
+ def sismember(self, name, value):
+ """Mimic original redis sismember."""
+
+ @abc.abstractmethod
+ def eval(self, script, number_of_keys, *keys):
+ """Mimic original redis eval."""
+
+ @abc.abstractmethod
+ def hset(self, name, key, value):
+ """Mimic original redis hset."""
+
+ @abc.abstractmethod
+ def hget(self, name, key):
+ """Mimic original redis hget."""
+
+ @abc.abstractmethod
+ def hincrby(self, name, key, amount=1):
+ """Mimic original redis hincrby."""
+
+ @abc.abstractmethod
+ def incr(self, name, amount=1):
+ """Mimic original redis incr."""
+
+ @abc.abstractmethod
+ def getset(self, name, value):
+ """Mimic original redis getset."""
+
+ @abc.abstractmethod
+ def rpush(self, key, *values):
+ """Mimic original redis rpush."""
+
+ @abc.abstractmethod
+ def expire(self, key, value):
+ """Mimic original redis expire."""
+
+ @abc.abstractmethod
+ def rpop(self, key):
+ """Mimic original redis rpop."""
+
+ @abc.abstractmethod
+ def ttl(self, key):
+ """Mimic original redis ttl."""
+
+ @abc.abstractmethod
+ def lpop(self, key):
+ """Mimic original redis lpop."""
+
+ @abc.abstractmethod
+ def pipeline(self):
+ """Mimic original redis pipeline."""
+
+class RedisAdapter(RedisAdapterBase): # pylint: disable=too-many-public-methods
+ """
+ Instance decorator for Redis clients such as StrictRedis.
+
+ Adds an extra layer handling addition/removal of user prefix when handling
+ keys
+ """
+
+ def __init__(self, decorated, prefix=None):
+ """
+ Store the user prefix and the redis client instance.
+
+ :param decorated: Instance of redis cache client to decorate.
+ :param prefix: User prefix to add.
+ """
+ self._decorated = decorated
+ self._prefix_helper = PrefixHelper(prefix)
+
# Below starts a list of methods that implement the interface of a standard
# redis client.
@@ -134,169 +233,466 @@ def keys(self, pattern):
"""Mimic original redis function but using user custom prefix."""
try:
return [
- _bytes_to_string(key)
- for key in self._remove_prefix(self._decorated.keys(self._add_prefix(pattern)))
+ key
+ for key in self._prefix_helper.remove_prefix(self._decorated.keys(self._prefix_helper.add_prefix(pattern)))
]
except RedisError as exc:
- raise_from(RedisAdapterException('Failed to execute keys operation'), exc)
+ raise RedisAdapterException('Failed to execute keys operation') from exc
def set(self, name, value, *args, **kwargs):
"""Mimic original redis function but using user custom prefix."""
try:
return self._decorated.set(
- self._add_prefix(name), value, *args, **kwargs
+ self._prefix_helper.add_prefix(name), value, *args, **kwargs
)
except RedisError as exc:
- raise RedisAdapterException('Failed to execute set operation', exc)
+ raise RedisAdapterException('Failed to execute set operation') from exc
def get(self, name):
"""Mimic original redis function but using user custom prefix."""
try:
- return _bytes_to_string(self._decorated.get(self._add_prefix(name)))
+ return self._decorated.get(self._prefix_helper.add_prefix(name))
except RedisError as exc:
- raise RedisAdapterException('Error executing get operation', exc)
+ raise RedisAdapterException('Error executing get operation') from exc
def setex(self, name, time, value):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.setex(self._add_prefix(name), time, value)
+ return self._decorated.setex(self._prefix_helper.add_prefix(name), time, value)
except RedisError as exc:
- raise RedisAdapterException('Error executing setex operation', exc)
+ raise RedisAdapterException('Error executing setex operation') from exc
def delete(self, *names):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.delete(*self._add_prefix(list(names)))
+ return self._decorated.delete(*self._prefix_helper.add_prefix(list(names)))
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing delete operation'), exc)
+ raise RedisAdapterException('Error executing delete operation') from exc
def exists(self, name):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.exists(self._add_prefix(name))
+ return self._decorated.exists(self._prefix_helper.add_prefix(name))
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing exists operation'), exc)
+ raise RedisAdapterException('Error executing exists operation') from exc
def lrange(self, key, start, end):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.lrange(self._add_prefix(key), start, end)
+ return self._decorated.lrange(self._prefix_helper.add_prefix(key), start, end)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing exists operation'), exc)
+ raise RedisAdapterException('Error executing exists operation') from exc
def mget(self, names):
"""Mimic original redis function but using user custom prefix."""
try:
return [
- _bytes_to_string(item)
- for item in self._decorated.mget(self._add_prefix(names))
+ item
+ for item in self._decorated.mget(self._prefix_helper.add_prefix(names))
]
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing mget operation'), exc)
+ raise RedisAdapterException('Error executing mget operation') from exc
def smembers(self, name):
"""Mimic original redis function but using user custom prefix."""
try:
return [
- _bytes_to_string(item)
- for item in self._decorated.smembers(self._add_prefix(name))
+ item
+ for item in self._decorated.smembers(self._prefix_helper.add_prefix(name))
]
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing smembers operation'), exc)
+ raise RedisAdapterException('Error executing smembers operation') from exc
def sadd(self, name, *values):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.sadd(self._add_prefix(name), *values)
+ return self._decorated.sadd(self._prefix_helper.add_prefix(name), *values)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing sadd operation'), exc)
+ raise RedisAdapterException('Error executing sadd operation') from exc
def srem(self, name, *values):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.srem(self._add_prefix(name), *values)
+ return self._decorated.srem(self._prefix_helper.add_prefix(name), *values)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing srem operation'), exc)
+ raise RedisAdapterException('Error executing srem operation') from exc
def sismember(self, name, value):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.sismember(self._add_prefix(name), value)
+ return self._decorated.sismember(self._prefix_helper.add_prefix(name), value)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing sismember operation'), exc)
+ raise RedisAdapterException('Error executing sismember operation') from exc
def eval(self, script, number_of_keys, *keys):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.eval(script, number_of_keys, *self._add_prefix(list(keys)))
+ return self._decorated.eval(script, number_of_keys, *self._prefix_helper.add_prefix(list(keys)))
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing eval operation'), exc)
+ raise RedisAdapterException('Error executing eval operation') from exc
def hset(self, name, key, value):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.hset(self._add_prefix(name), key, value)
+ return self._decorated.hset(self._prefix_helper.add_prefix(name), key, value)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing hset operation'), exc)
+ raise RedisAdapterException('Error executing hset operation') from exc
def hget(self, name, key):
"""Mimic original redis function but using user custom prefix."""
try:
- return _bytes_to_string(self._decorated.hget(self._add_prefix(name), key))
+ return self._decorated.hget(self._prefix_helper.add_prefix(name), key)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing hget operation') from exc
+
+ def hincrby(self, name, key, amount=1):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return self._decorated.hincrby(self._prefix_helper.add_prefix(name), key, amount)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing hget operation'), exc)
+ raise RedisAdapterException('Error executing hincrby operation') from exc
def incr(self, name, amount=1):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.incr(self._add_prefix(name), amount)
+ return self._decorated.incr(self._prefix_helper.add_prefix(name), amount)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing incr operation'), exc)
+ raise RedisAdapterException('Error executing incr operation') from exc
def getset(self, name, value):
"""Mimic original redis function but using user custom prefix."""
try:
- return _bytes_to_string(self._decorated.getset(self._add_prefix(name), value))
+ return self._decorated.getset(self._prefix_helper.add_prefix(name), value)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing getset operation'), exc)
+ raise RedisAdapterException('Error executing getset operation') from exc
def rpush(self, key, *values):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.rpush(self._add_prefix(key), *values)
+ return self._decorated.rpush(self._prefix_helper.add_prefix(key), *values)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing rpush operation'), exc)
+ raise RedisAdapterException('Error executing rpush operation') from exc
def expire(self, key, value):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.expire(self._add_prefix(key), value)
+ return self._decorated.expire(self._prefix_helper.add_prefix(key), value)
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing expire operation'), exc)
+ raise RedisAdapterException('Error executing expire operation') from exc
def rpop(self, key):
"""Mimic original redis function but using user custom prefix."""
try:
- return _bytes_to_string(self._decorated.rpop(self._add_prefix(key)))
+ return self._decorated.rpop(self._prefix_helper.add_prefix(key))
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing rpop operation'), exc)
+ raise RedisAdapterException('Error executing rpop operation') from exc
def ttl(self, key):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.ttl(self._add_prefix(key))
+ return self._decorated.ttl(self._prefix_helper.add_prefix(key))
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing ttl operation'), exc)
+ raise RedisAdapterException('Error executing ttl operation') from exc
def lpop(self, key):
"""Mimic original redis function but using user custom prefix."""
try:
- return self._decorated.lpop(self._add_prefix(key))
+ return self._decorated.lpop(self._prefix_helper.add_prefix(key))
except RedisError as exc:
- raise_from(RedisAdapterException('Error executing lpop operation'), exc)
+ raise RedisAdapterException('Error executing lpop operation') from exc
+ def pipeline(self):
+ """Mimic original redis pipeline."""
+ try:
+ return RedisPipelineAdapter(self._decorated, self._prefix_helper)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing ttl operation') from exc
-def _build_default_client(config): #pylint: disable=too-many-locals
+class RedisAdapterAsync(RedisAdapterBase): # pylint: disable=too-many-public-methods
+ """
+ Instance decorator for asyncio Redis clients such as StrictRedis.
+
+ Adds an extra layer handling addition/removal of user prefix when handling
+ keys
+ """
+ def __init__(self, decorated, prefix=None):
+ """
+ Store the user prefix and the redis client instance.
+
+ :param decorated: Instance of redis cache client to decorate.
+ :param prefix: User prefix to add.
+ """
+ self._decorated = decorated
+ self._prefix_helper = PrefixHelper(prefix)
+
+ # Below starts a list of methods that implement the interface of a standard
+ # redis client.
+
+ async def keys(self, pattern):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return [
+ key
+ for key in self._prefix_helper.remove_prefix(await self._decorated.keys(self._prefix_helper.add_prefix(pattern)))
+ ]
+ except RedisError as exc:
+ raise RedisAdapterException('Failed to execute keys operation') from exc
+
+ async def set(self, name, value, *args, **kwargs):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.set(
+ self._prefix_helper.add_prefix(name), value, *args, **kwargs
+ )
+ except RedisError as exc:
+ raise RedisAdapterException('Failed to execute set operation') from exc
+
+ async def get(self, name):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.get(self._prefix_helper.add_prefix(name))
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing get operation') from exc
+
+ async def setex(self, name, time, value):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.setex(self._prefix_helper.add_prefix(name), time, value)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing setex operation') from exc
+
+ async def delete(self, *names):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.delete(*self._prefix_helper.add_prefix(list(names)))
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing delete operation') from exc
+
+ async def exists(self, name):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.exists(self._prefix_helper.add_prefix(name))
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing exists operation') from exc
+
+ async def lrange(self, key, start, end):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.lrange(self._prefix_helper.add_prefix(key), start, end)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing exists operation') from exc
+
+ async def mget(self, names):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return [
+ item
+ for item in await self._decorated.mget(self._prefix_helper.add_prefix(names))
+ ]
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing mget operation') from exc
+
+ async def smembers(self, name):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return [
+ item
+ for item in await self._decorated.smembers(self._prefix_helper.add_prefix(name))
+ ]
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing smembers operation') from exc
+
+ async def sadd(self, name, *values):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.sadd(self._prefix_helper.add_prefix(name), *values)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing sadd operation') from exc
+
+ async def srem(self, name, *values):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.srem(self._prefix_helper.add_prefix(name), *values)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing srem operation') from exc
+
+ async def sismember(self, name, value):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.sismember(self._prefix_helper.add_prefix(name), value)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing sismember operation') from exc
+
+ async def eval(self, script, number_of_keys, *keys):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.eval(script, number_of_keys, *self._prefix_helper.add_prefix(list(keys)))
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing eval operation') from exc
+
+ async def hset(self, name, key, value):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.hset(self._prefix_helper.add_prefix(name), key, value)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing hset operation') from exc
+
+ async def hget(self, name, key):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.hget(self._prefix_helper.add_prefix(name), key)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing hget operation') from exc
+
+ async def hincrby(self, name, key, amount=1):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.hincrby(self._prefix_helper.add_prefix(name), key, amount)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing hincrby operation') from exc
+
+ async def incr(self, name, amount=1):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.incr(self._prefix_helper.add_prefix(name), amount)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing incr operation') from exc
+
+ async def getset(self, name, value):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.getset(self._prefix_helper.add_prefix(name), value)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing getset operation') from exc
+
+ async def rpush(self, key, *values):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ async with self._decorated.client() as conn:
+ return await conn.rpush(self._prefix_helper.add_prefix(key), *values)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing rpush operation') from exc
+
+ async def expire(self, key, value):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ async with self._decorated.client() as conn:
+ return await conn.expire(self._prefix_helper.add_prefix(key), value)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing expire operation') from exc
+
+ async def rpop(self, key):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.rpop(self._prefix_helper.add_prefix(key))
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing rpop operation') from exc
+
+ async def ttl(self, key):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.ttl(self._prefix_helper.add_prefix(key))
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing ttl operation') from exc
+
+ async def lpop(self, key):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._decorated.lpop(self._prefix_helper.add_prefix(key))
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing lpop operation') from exc
+
+ def pipeline(self):
+ """Mimic original redis pipeline."""
+ try:
+ return RedisPipelineAdapterAsync(self._decorated, self._prefix_helper)
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing ttl operation') from exc
+
+ async def close(self):
+ await self._decorated.close()
+ await self._decorated.connection_pool.disconnect(inuse_connections=True)
+
+class RedisPipelineAdapterBase(object):
+ """
+ Base decorator for Redis Pipeline.
+
+ Adds an extra layer handling addition/removal of user prefix when handling
+ keys
+ """
+ def __init__(self, decorated, prefix_helper):
+ """
+ Store the user prefix and the redis client instance.
+
+ :param decorated: Instance of redis cache client to decorate.
+ :param _prefix_helper: PrefixHelper utility
+ """
+ self._prefix_helper = prefix_helper
+ self._pipe = decorated.pipeline()
+
+ def rpush(self, key, *values):
+ """Mimic original redis function but using user custom prefix."""
+ self._pipe.rpush(self._prefix_helper.add_prefix(key), *values)
+
+ def incr(self, name, amount=1):
+ """Mimic original redis function but using user custom prefix."""
+ self._pipe.incr(self._prefix_helper.add_prefix(name), amount)
+
+ def hincrby(self, name, key, amount=1):
+ """Mimic original redis function but using user custom prefix."""
+ self._pipe.hincrby(self._prefix_helper.add_prefix(name), key, amount)
+
+ def smembers(self, name):
+ """Mimic original redis function but using user custom prefix."""
+ self._pipe.smembers(self._prefix_helper.add_prefix(name))
+
+class RedisPipelineAdapter(RedisPipelineAdapterBase):
+ """
+ Instance decorator for Redis Pipeline.
+
+ Adds an extra layer handling addition/removal of user prefix when handling
+ keys
+ """
+ def __init__(self, decorated, prefix_helper):
+ """
+ Store the user prefix and the redis client instance.
+
+ :param decorated: Instance of redis cache client to decorate.
+ :param _prefix_helper: PrefixHelper utility
+ """
+ RedisPipelineAdapterBase.__init__(self, decorated, prefix_helper)
+
+ def execute(self):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return self._pipe.execute()
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing pipeline operation') from exc
+
+class RedisPipelineAdapterAsync(RedisPipelineAdapterBase):
+ """
+ Instance decorator for Asyncio Redis Pipeline.
+
+ Adds an extra layer handling addition/removal of user prefix when handling
+ keys
+ """
+ def __init__(self, decorated, prefix_helper):
+ """
+ Store the user prefix and the redis client instance.
+
+ :param decorated: Instance of redis cache client to decorate.
+ :param _prefix_helper: PrefixHelper utility
+ """
+ RedisPipelineAdapterBase.__init__(self, decorated, prefix_helper)
+
+ async def execute(self):
+ """Mimic original redis function but using user custom prefix."""
+ try:
+ return await self._pipe.execute()
+ except RedisError as exc:
+ raise RedisAdapterException('Error executing pipeline operation') from exc
+
+def _build_default_client(config): # pylint: disable=too-many-locals
"""
Build a redis adapter.
@@ -309,6 +705,7 @@ def _build_default_client(config): #pylint: disable=too-many-locals
host = config.get('redisHost', 'localhost')
port = config.get('redisPort', 6379)
database = config.get('redisDb', 0)
+ username = config.get('redisUsername', None)
password = config.get('redisPassword', None)
socket_timeout = config.get('redisSocketTimeout', None)
socket_connect_timeout = config.get('redisSocketConnectTimeout', None)
@@ -318,9 +715,7 @@ def _build_default_client(config): #pylint: disable=too-many-locals
unix_socket_path = config.get('redisUnixSocketPath', None)
encoding = config.get('redisEncoding', 'utf-8')
encoding_errors = config.get('redisEncodingErrors', 'strict')
- charset = config.get('redisCharset', None)
- errors = config.get('redisErrors', None)
- decode_responses = config.get('redisDecodeResponses', False)
+ decode_responses = config.get('redisDecodeResponses', True)
retry_on_timeout = config.get('redisRetryOnTimeout', False)
ssl = config.get('redisSsl', False)
ssl_keyfile = config.get('redisSslKeyfile', None)
@@ -335,6 +730,7 @@ def _build_default_client(config): #pylint: disable=too-many-locals
port=port,
db=database,
password=password,
+ username=username,
socket_timeout=socket_timeout,
socket_connect_timeout=socket_connect_timeout,
socket_keepalive=socket_keepalive,
@@ -343,8 +739,6 @@ def _build_default_client(config): #pylint: disable=too-many-locals
unix_socket_path=unix_socket_path,
encoding=encoding,
encoding_errors=encoding_errors,
- charset=charset,
- errors=errors,
decode_responses=decode_responses,
retry_on_timeout=retry_on_timeout,
ssl=ssl,
@@ -356,8 +750,68 @@ def _build_default_client(config): #pylint: disable=too-many-locals
)
return RedisAdapter(redis, prefix=prefix)
+async def _build_default_client_async(config): # pylint: disable=too-many-locals
+ """
+ Build a redis asyncio adapter.
+
+ :param config: Redis configuration properties
+ :type config: dict
+
+ :return: A wrapped Redis object
+ :rtype: splitio.storage.adapters.redis.RedisAdapterAsync
+ """
+ host = config.get('redisHost', 'localhost')
+ port = config.get('redisPort', 6379)
+ database = config.get('redisDb', 0)
+ username = config.get('redisUsername', None)
+ password = config.get('redisPassword', None)
+ socket_timeout = config.get('redisSocketTimeout', None)
+ socket_connect_timeout = config.get('redisSocketConnectTimeout', None)
+ socket_keepalive = config.get('redisSocketKeepalive', None)
+ socket_keepalive_options = config.get('redisSocketKeepaliveOptions', None)
+ connection_pool = config.get('redisConnectionPool', None)
+ unix_socket_path = config.get('redisUnixSocketPath', None)
+ encoding = config.get('redisEncoding', 'utf-8')
+ encoding_errors = config.get('redisEncodingErrors', 'strict')
+ decode_responses = config.get('redisDecodeResponses', True)
+ retry_on_timeout = config.get('redisRetryOnTimeout', False)
+ ssl = config.get('redisSsl', False)
+ ssl_keyfile = config.get('redisSslKeyfile', None)
+ ssl_certfile = config.get('redisSslCertfile', None)
+ ssl_cert_reqs = config.get('redisSslCertReqs', None)
+ ssl_ca_certs = config.get('redisSslCaCerts', None)
+ max_connections = config.get('redisMaxConnections', None)
+ prefix = config.get('redisPrefix')
+
+ if connection_pool == None:
+ connection_pool = aioredis.ConnectionPool.from_url(
+ "redis://" + host + ":" + str(port),
+ db=database,
+ password=password,
+ username=username,
+ max_connections=max_connections,
+ encoding=encoding,
+ decode_responses=decode_responses,
+ socket_timeout=socket_timeout,
+ )
+ redis = aioredis.Redis(
+ connection_pool=connection_pool,
+ socket_connect_timeout=socket_connect_timeout,
+ socket_keepalive=socket_keepalive,
+ socket_keepalive_options=socket_keepalive_options,
+ unix_socket_path=unix_socket_path,
+ encoding_errors=encoding_errors,
+ retry_on_timeout=retry_on_timeout,
+ ssl=ssl,
+ ssl_keyfile=ssl_keyfile,
+ ssl_certfile=ssl_certfile,
+ ssl_cert_reqs=ssl_cert_reqs,
+ ssl_ca_certs=ssl_ca_certs
+ )
+ return RedisAdapterAsync(redis, prefix=prefix)
+
-def _build_sentinel_client(config): #pylint: disable=too-many-locals
+def _build_sentinel_client(config): # pylint: disable=too-many-locals
"""
Build a redis client with sentinel replication.
@@ -389,6 +843,7 @@ def _build_sentinel_client(config): #pylint: disable=too-many-locals
raise SentinelConfigurationException('redisMasterService must be specified.')
database = config.get('redisDb', 0)
+ username = config.get('redisUsername', None)
password = config.get('redisPassword', None)
socket_timeout = config.get('redisSocketTimeout', None)
socket_connect_timeout = config.get('redisSocketConnectTimeout', None)
@@ -397,7 +852,7 @@ def _build_sentinel_client(config): #pylint: disable=too-many-locals
connection_pool = config.get('redisConnectionPool', None)
encoding = config.get('redisEncoding', 'utf-8')
encoding_errors = config.get('redisEncodingErrors', 'strict')
- decode_responses = config.get('redisDecodeResponses', False)
+ decode_responses = config.get('redisDecodeResponses', True)
retry_on_timeout = config.get('redisRetryOnTimeout', False)
max_connections = config.get('redisMaxConnections', None)
prefix = config.get('redisPrefix')
@@ -406,6 +861,7 @@ def _build_sentinel_client(config): #pylint: disable=too-many-locals
sentinels,
db=database,
password=password,
+ username=username,
socket_timeout=socket_timeout,
socket_connect_timeout=socket_connect_timeout,
socket_keepalive=socket_keepalive,
@@ -421,6 +877,86 @@ def _build_sentinel_client(config): #pylint: disable=too-many-locals
redis = sentinel.master_for(master_service)
return RedisAdapter(redis, prefix=prefix)
+async def _build_sentinel_client_async(config): # pylint: disable=too-many-locals
+ """
+ Build a redis client with sentinel replication.
+
+ :param config: Redis configuration properties.
+ :type config: dict
+
+ :return: A Wrapped redis-sentinel client
+ :rtype: splitio.storage.adapters.redis.RedisAdapter
+ """
+ sentinels = config.get('redisSentinels')
+
+ if sentinels is None:
+ raise SentinelConfigurationException('redisSentinels must be specified.')
+ if not isinstance(sentinels, list):
+ raise SentinelConfigurationException('Sentinels must be an array of elements in the form of'
+ ' [(ip, port)].')
+ if not sentinels:
+ raise SentinelConfigurationException('It must be at least one sentinel.')
+ if not all(isinstance(s, tuple) for s in sentinels):
+ raise SentinelConfigurationException('Sentinels must respect the tuple structure'
+ '[(ip, port)].')
+
+ master_service = config.get('redisMasterService')
+
+ if master_service is None:
+ raise SentinelConfigurationException('redisMasterService must be specified.')
+
+ database = config.get('redisDb', 0)
+ password = config.get('redisPassword', None)
+ socket_timeout = config.get('redisSocketTimeout', None)
+ socket_connect_timeout = config.get('redisSocketConnectTimeout', None)
+ socket_keepalive = config.get('redisSocketKeepalive', None)
+ socket_keepalive_options = config.get('redisSocketKeepaliveOptions', None)
+ connection_pool = config.get('redisConnectionPool', None)
+ encoding = config.get('redisEncoding', 'utf-8')
+ encoding_errors = config.get('redisEncodingErrors', 'strict')
+ decode_responses = config.get('redisDecodeResponses', True)
+ retry_on_timeout = config.get('redisRetryOnTimeout', False)
+ max_connections = config.get('redisMaxConnections', None)
+ ssl = config.get('redisSsl', False)
+ prefix = config.get('redisPrefix')
+
+ sentinel = SentinelAsync(
+ sentinels,
+ db=database,
+ password=password,
+ encoding=encoding,
+ encoding_errors=encoding_errors,
+ decode_responses=decode_responses,
+ max_connections=max_connections,
+ connection_pool=connection_pool,
+ socket_connect_timeout=socket_connect_timeout
+ )
+
+ redis = sentinel.master_for(
+ master_service,
+ socket_timeout=socket_timeout,
+ socket_keepalive=socket_keepalive,
+ socket_keepalive_options=socket_keepalive_options,
+ encoding_errors=encoding_errors,
+ retry_on_timeout=retry_on_timeout,
+ ssl=ssl
+ )
+ return RedisAdapterAsync(redis, prefix=prefix)
+
+async def build_async(config):
+ """
+ Build a async redis storage according to the configuration received.
+
+ :param config: SDK Configuration parameters with redis properties.
+ :type config: dict.
+
+ :return: A redis async client
+ :rtype: splitio.storage.adapters.redis.RedisAdapterAsync
+ """
+ if 'redisSentinels' in config:
+ return await _build_sentinel_client_async(config)
+
+ return await _build_default_client_async(config)
def build(config):
"""
@@ -434,4 +970,5 @@ def build(config):
"""
if 'redisSentinels' in config:
return _build_sentinel_client(config)
+
return _build_default_client(config)
diff --git a/splitio/storage/adapters/util.py b/splitio/storage/adapters/util.py
index d1dc9c19..cf80a2ad 100644
--- a/splitio/storage/adapters/util.py
+++ b/splitio/storage/adapters/util.py
@@ -1,9 +1,7 @@
"""Custom utilities."""
-import six
-
-class DynamicDecorator(object): #pylint: disable=too-few-public-methods
+class DynamicDecorator(object): # pylint: disable=too-few-public-methods
"""
Decorator that will inject a decorator during class construction.
@@ -67,7 +65,7 @@ def __call__(self, to_decorate):
positional_args_lambdas = self._positional_args_lambdas
keyword_args_lambdas = self._keyword_args_lambdas
- class _decorated(to_decorate): #pylint: disable=too-few-public-methods
+ class _decorated(to_decorate): # pylint: disable=too-few-public-methods
"""
Decorated class wrapper.
@@ -82,7 +80,7 @@ def __init__(self, *args, **kwargs):
positional = [pos_func(*args, **kwargs) for pos_func in positional_args_lambdas]
keyword = {
key: func(*args, **kwargs)
- for (key, func) in six.iteritems(keyword_args_lambdas)
+ for (key, func) in keyword_args_lambdas.items()
}
# call original class constructor
diff --git a/splitio/storage/adapters/uwsgi_cache.py b/splitio/storage/adapters/uwsgi_cache.py
deleted file mode 100644
index f6b908b6..00000000
--- a/splitio/storage/adapters/uwsgi_cache.py
+++ /dev/null
@@ -1,134 +0,0 @@
-"""UWSGI Cache Storage adapter module."""
-
-from __future__ import absolute_import, division, print_function, unicode_literals
-import time
-
-try:
- #uwsgi is loaded at runtime by uwsgi app.
- import uwsgi
-except ImportError:
- def missing_uwsgi_dependencies(*args, **kwargs): #pylint: disable=unused-argument
- """Only complain for missing deps if they're used."""
- raise NotImplementedError('Missing uWSGI support dependencies.')
- uwsgi = missing_uwsgi_dependencies
-
-# Cache used for locking & signaling keys
-_SPLITIO_LOCK_CACHE_NAMESPACE = 'splitio_locks'
-
-# Cache where split definitions are stored
-_SPLITIO_SPLITS_CACHE_NAMESPACE = 'splitio_splits'
-
-# Cache where segments are stored
-_SPLITIO_SEGMENTS_CACHE_NAMESPACE = 'splitio_segments'
-
-# Cache where impressions are stored
-_SPLITIO_IMPRESSIONS_CACHE_NAMESPACE = 'splitio_impressions'
-
-# Cache where metrics are stored
-_SPLITIO_METRICS_CACHE_NAMESPACE = 'splitio_metrics'
-
-# Cache where events are stored (1 key with lots of blocks)
-_SPLITIO_EVENTS_CACHE_NAMESPACE = 'splitio_events'
-
-# Cache where changeNumbers are stored
-_SPLITIO_CHANGE_NUMBERS = 'splitio_changeNumbers'
-
-# Cache with a big block size used for lists
-_SPLITIO_MISC_NAMESPACE = 'splitio_misc'
-
-
-class UWSGILock(object):
- """Context manager to be used for locking a key in the cache."""
-
- def __init__(self, adapter, key, overwrite_lock_seconds=5):
- """
- Initialize a lock with the key `key` and waits up to `overwrite_lock_seconds` to release.
-
- :param key: Key to be used.
- :type key: str
-
- :param overwrite_lock_seconds: How many seconds to wait before force-releasing.
- :type overwrite_lock_seconds: int
- """
- self._key = key
- self._overwrite_lock_seconds = overwrite_lock_seconds
- self._uwsgi = adapter
-
- def __enter__(self):
- """Loop until the lock is manually released or timeout occurs."""
- initial_time = time.time()
- while True:
- if not self._uwsgi.cache_exists(self._key, _SPLITIO_LOCK_CACHE_NAMESPACE):
- self._uwsgi.cache_set(self._key, str('locked'), 0, _SPLITIO_LOCK_CACHE_NAMESPACE)
- return
- else:
- if time.time() - initial_time > self._overwrite_lock_seconds:
- return
- time.sleep(0.1)
-
- def __exit__(self, *args):
- """Remove lock."""
- self._uwsgi.cache_del(self._key, _SPLITIO_LOCK_CACHE_NAMESPACE)
-
-
-class UWSGICacheEmulator(object):
- """UWSGI mock."""
-
- def __init__(self):
- """
- UWSGI Cache Emulator for unit tests. Implements uwsgi cache framework interface.
-
- http://uwsgi-docs.readthedocs.io/en/latest/Caching.html#accessing-the-cache-from-your-applications-using-the-cache-api
- """
- self._cache = dict()
-
- @staticmethod
- def _check_string_data_type(value):
- if type(value).__name__ == 'str':
- return True
- raise TypeError(
- 'The value to add into uWSGI cache must be string and %s given' % type(value).__name__
- )
-
- def cache_get(self, key, cache_namespace='default'):
- """Get an element from cache."""
- if self.cache_exists(key, cache_namespace):
- return self._cache[cache_namespace][key]
- return None
-
- def cache_set(self, key, value, expires=0, cache_namespace='default'): #pylint: disable=unused-argument
- """Set an elemen in the cache."""
- self._check_string_data_type(value)
-
- if cache_namespace in self._cache:
- self._cache[cache_namespace][key] = value
- else:
- self._cache[cache_namespace] = {key:value}
-
- def cache_update(self, key, value, expires=0, cache_namespace='default'):
- """Update an element."""
- self.cache_set(key, value, expires, cache_namespace)
-
- def cache_exists(self, key, cache_namespace='default'):
- """Return whether the element exists."""
- if cache_namespace in self._cache:
- if key in self._cache[cache_namespace]:
- return True
- return False
-
- def cache_del(self, key, cache_namespace='default'):
- """Delete an item from the cache."""
- if cache_namespace in self._cache:
- self._cache[cache_namespace].pop(key, None)
-
- def cache_clear(self, cache_namespace='default'):
- """Delete all elements in cache."""
- self._cache.pop(cache_namespace, None)
-
-
-def get_uwsgi(emulator=False):
- """Return a uwsgi imported module or an emulator to use in unit test."""
- if emulator:
- return UWSGICacheEmulator()
-
- return uwsgi
diff --git a/splitio/storage/inmemmory.py b/splitio/storage/inmemmory.py
index ea2a39c0..db71f7fd 100644
--- a/splitio/storage/inmemmory.py
+++ b/splitio/storage/inmemmory.py
@@ -1,96 +1,204 @@
"""In memory storage classes."""
-from __future__ import absolute_import
-
import logging
import threading
+import queue
from collections import Counter
-from six.moves import queue
from splitio.models.segments import Segment
-from splitio.storage import SplitStorage, SegmentStorage, ImpressionStorage, EventStorage, \
- TelemetryStorage
+from splitio.models.telemetry import HTTPErrors, HTTPLatencies, MethodExceptions, MethodLatencies, LastSynchronization, StreamingEvents, TelemetryConfig, TelemetryCounters, CounterConstants, \
+ HTTPErrorsAsync, HTTPLatenciesAsync, MethodExceptionsAsync, MethodLatenciesAsync, LastSynchronizationAsync, StreamingEventsAsync, TelemetryConfigAsync, TelemetryCountersAsync
+from splitio.models.events import SdkInternalEvent
+from splitio.events.events_metadata import EventsMetadata, SdkEventType
+from splitio.models.notification import SdkInternalEventNotification
+from splitio.storage import FlagSetsFilter, SplitStorage, SegmentStorage, ImpressionStorage, EventStorage, TelemetryStorage, RuleBasedSegmentsStorage
+from splitio.optional.loaders import asyncio
MAX_SIZE_BYTES = 5 * 1024 * 1024
+MAX_TAGS = 10
+_LOGGER = logging.getLogger(__name__)
-class InMemorySplitStorage(SplitStorage):
- """InMemory implementation of a split storage."""
+class FlagSets(object):
+ """InMemory Flagsets storage."""
- def __init__(self):
+ def __init__(self, flag_sets=[]):
"""Constructor."""
- self._logger = logging.getLogger(self.__class__.__name__)
+ self.sets_feature_flag_map = {}
self._lock = threading.RLock()
- self._splits = {}
- self._change_number = -1
- self._traffic_types = Counter()
+ for flag_set in flag_sets:
+ self.sets_feature_flag_map[flag_set] = set()
- def get(self, split_name):
+ def flag_set_exist(self, flag_set):
"""
- Retrieve a split.
+ Check if a flagset exist in stored flagset
+ :param flag_set: set name
+ :type flag_set: str
- :param split_name: Name of the feature to fetch.
- :type split_name: str
+ :rtype: bool
+ """
+ with self._lock:
+ return flag_set in self.sets_feature_flag_map.keys()
- :rtype: splitio.models.splits.Split
+ def get_flag_set(self, flag_set):
+ """
+ fetch feature flags stored in a flag set
+ :param flag_set: set name
+ :type flag_set: str
+
+ :rtype: list(str)
+ """
+ with self._lock:
+ return self.sets_feature_flag_map.get(flag_set)
+
+ def _add_flag_set(self, flag_set):
+ """
+ Add new flag set to storage
+ :param flag_set: set name
+ :type flag_set: str
+ """
+ with self._lock:
+ if not self.flag_set_exist(flag_set):
+ self.sets_feature_flag_map[flag_set] = set()
+
+ def _remove_flag_set(self, flag_set):
+ """
+ Remove existing flag set from storage
+ :param flag_set: set name
+ :type flag_set: str
+ """
+ with self._lock:
+ if self.flag_set_exist(flag_set):
+ del self.sets_feature_flag_map[flag_set]
+
+ def add_feature_flag_to_flag_set(self, flag_set, feature_flag):
+ """
+ Add a feature flag to existing flag set
+ :param flag_set: set name
+ :type flag_set: str
+ :param feature_flag: feature flag name
+ :type feature_flag: str
+ """
+ with self._lock:
+ if self.flag_set_exist(flag_set):
+ self.sets_feature_flag_map[flag_set].add(feature_flag)
+
+ def remove_feature_flag_to_flag_set(self, flag_set, feature_flag):
+ """
+ Remove a feature flag from existing flag set
+ :param flag_set: set name
+ :type flag_set: str
+ :param feature_flag: feature flag name
+ :type feature_flag: str
+ """
+ with self._lock:
+ if self.flag_set_exist(flag_set):
+ self.sets_feature_flag_map[flag_set].remove(feature_flag)
+
+ def update_flag_set(self, flag_sets, feature_flag_name, should_filter):
+ if flag_sets is not None:
+ for flag_set in flag_sets:
+ if not self.flag_set_exist(flag_set):
+ if should_filter:
+ continue
+ self._add_flag_set(flag_set)
+ self.add_feature_flag_to_flag_set(flag_set, feature_flag_name)
+
+ def remove_flag_set(self, flag_sets, feature_flag_name, should_filter):
+ if flag_sets is not None:
+ for flag_set in flag_sets:
+ self.remove_feature_flag_to_flag_set(flag_set, feature_flag_name)
+ if self.flag_set_exist(flag_set) and len(self.get_flag_set(flag_set)) == 0 and not should_filter:
+ self._remove_flag_set(flag_set)
+
+class InMemoryRuleBasedSegmentStorage(RuleBasedSegmentsStorage):
+ """InMemory implementation of a feature flag storage base."""
+
+ def __init__(self, internal_event_queue):
+ """Constructor."""
+ self._lock = threading.RLock()
+ self._rule_based_segments = {}
+ self._change_number = -1
+ self._internal_event_queue = internal_event_queue
+
+ def clear(self):
+ """
+ Clear storage
"""
with self._lock:
- return self._splits.get(split_name)
+ self._rule_based_segments = {}
+ self._change_number = -1
- def fetch_many(self, split_names):
+ def get(self, segment_name):
"""
- Retrieve splits.
+ Retrieve a rule based segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
- :param split_names: Names of the features to fetch.
- :type split_name: list(str)
+ :rtype: splitio.models.rule_based_segments.RuleBasedSegment
+ """
+ with self._lock:
+ return self._rule_based_segments.get(segment_name)
- :return: A dict with split objects parsed from queue.
- :rtype: dict(split_name, splitio.models.splits.Split)
+ def update(self, to_add, to_delete, new_change_number):
"""
- return {split_name: self.get(split_name) for split_name in split_names}
+ Update rule based segment.
- def put(self, split):
+ :param to_add: List of rule based segment. to add
+ :type to_add: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param to_delete: List of rule based segment. to delete
+ :type to_delete: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param new_change_number: New change number.
+ :type new_change_number: int
"""
- Store a split.
+ [self._put(add_segment) for add_segment in to_add]
+ [self._remove(delete_segment) for delete_segment in to_delete]
+ self._set_change_number(new_change_number)
+ if len(to_add) > 0 or len(to_delete) > 0:
+ self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.RB_SEGMENTS_UPDATED,
+ EventsMetadata(SdkEventType.SEGMENTS_UPDATE, {})))
+
+ def _put(self, rule_based_segment):
+ """
+ Store a rule based segment.
- :param split: Split object.
- :type split: splitio.models.split.Split
+ :param rule_based_segment: RuleBasedSegment object.
+ :type rule_based_segment: splitio.models.rule_based_segments.RuleBasedSegment
"""
with self._lock:
- if split.name in self._splits:
- self._decrease_traffic_type_count(self._splits[split.name].traffic_type_name)
- self._splits[split.name] = split
- self._increase_traffic_type_count(split.traffic_type_name)
+ self._rule_based_segments[rule_based_segment.name] = rule_based_segment
- def remove(self, split_name):
+ def _remove(self, segment_name):
"""
- Remove a split from storage.
+ Remove a rule based segment.
- :param split_name: Name of the feature to remove.
- :type split_name: str
+ :param segment_name: Name of the rule based segment to remove.
+ :type segment_name: str
- :return: True if the split was found and removed. False otherwise.
+ :return: True if the rule based segment was found and removed. False otherwise.
:rtype: bool
"""
with self._lock:
- split = self._splits.get(split_name)
- if not split:
- self._logger.warning("Tried to delete nonexistant split %s. Skipping", split_name)
+ rule_based_segment = self._rule_based_segments.get(segment_name)
+ if not rule_based_segment:
+ _LOGGER.warning("Tried to delete nonexistant Rule based segment %s. Skipping", segment_name)
return False
- self._splits.pop(split_name)
- self._decrease_traffic_type_count(split.traffic_type_name)
+ self._rule_based_segments.pop(segment_name)
return True
def get_change_number(self):
"""
- Retrieve latest split change number.
+ Retrieve latest rule based segment change number.
:rtype: int
"""
with self._lock:
return self._change_number
- def set_change_number(self, new_change_number):
+ def _set_change_number(self, new_change_number):
"""
Set the latest change number.
@@ -100,383 +208,2038 @@ def set_change_number(self, new_change_number):
with self._lock:
self._change_number = new_change_number
- def get_split_names(self):
+ def get_segment_names(self):
"""
- Retrieve a list of all split names.
+ Retrieve a list of all rule based segments names.
- :return: List of split names.
+ :return: List of segment names.
:rtype: list(str)
"""
with self._lock:
- return list(self._splits.keys())
-
- def get_all_splits(self):
+ return list(self._rule_based_segments.keys())
+
+ def get_large_segment_names(self):
"""
- Return all the splits.
+ Retrieve a list of all excluded large segments names.
- :return: List of all the splits.
- :rtype: list
+ :return: List of segment names.
+ :rtype: list(str)
"""
- with self._lock:
- return list(self._splits.values())
+ pass
- def is_valid_traffic_type(self, traffic_type_name):
+ def contains(self, segment_names):
"""
- Return whether the traffic type exists in at least one split in cache.
+ Return whether the segment exists in storage
- :param traffic_type_name: Traffic type to validate.
- :type traffic_type_name: str
+ :param segment_names: rule based segment name
+ :type segment_names: str
- :return: True if the traffic type is valid. False otherwise.
+ :return: True if the segment exists. False otherwise.
:rtype: bool
"""
with self._lock:
- return traffic_type_name in self._traffic_types
-
- def _increase_traffic_type_count(self, traffic_type_name):
- """
- Increase by one the count for a specific traffic type name.
-
- :param traffic_type_name: Traffic type to increase the count.
- :type traffic_type_name: str
- """
- self._traffic_types.update([traffic_type_name])
+ return set(segment_names).issubset(self._rule_based_segments.keys())
+
+ def fetch_many(self, segment_names):
+ return {rb_segment_name: self.get(rb_segment_name) for rb_segment_name in segment_names}
+
+class InMemoryRuleBasedSegmentStorageAsync(RuleBasedSegmentsStorage):
+ """InMemory implementation of a feature flag storage base."""
+ def __init__(self, internal_event_queue):
+ """Constructor."""
+ self._lock = asyncio.Lock()
+ self._rule_based_segments = {}
+ self._change_number = -1
+ self._internal_event_queue = internal_event_queue
- def _decrease_traffic_type_count(self, traffic_type_name):
+ async def clear(self):
"""
- Decrease by one the count for a specific traffic type name.
-
- :param traffic_type_name: Traffic type to decrease the count.
- :type traffic_type_name: str
+ Clear storage
"""
- self._traffic_types.subtract([traffic_type_name])
- self._traffic_types += Counter()
-
-
-class InMemorySegmentStorage(SegmentStorage):
- """In-memory implementation of a segment storage."""
-
- def __init__(self):
- """Constructor."""
- self._logger = logging.getLogger(self.__class__.__name__)
- self._segments = {}
- self._change_numbers = {}
- self._lock = threading.RLock()
+ async with self._lock:
+ self._rule_based_segments = {}
+ self._change_number = -1
- def get(self, segment_name):
+ async def get(self, segment_name):
"""
- Retrieve a segment.
+ Retrieve a rule based segment.
:param segment_name: Name of the segment to fetch.
:type segment_name: str
- :rtype: str
+ :rtype: splitio.models.rule_based_segments.RuleBasedSegment
"""
- with self._lock:
- fetched = self._segments.get(segment_name)
- if fetched is None:
- self._logger.warning(
- "Tried to retrieve nonexistant segment %s. Skipping",
- segment_name
- )
- return fetched
+ async with self._lock:
+ return self._rule_based_segments.get(segment_name)
- def put(self, segment):
+ async def update(self, to_add, to_delete, new_change_number):
"""
- Store a segment.
+ Update rule based segment.
- :param segment: Segment to store.
- :type segment: splitio.models.segment.Segment
+ :param to_add: List of rule based segment. to add
+ :type to_add: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param to_delete: List of rule based segment. to delete
+ :type to_delete: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param new_change_number: New change number.
+ :type new_change_number: int
"""
- with self._lock:
- self._segments[segment.name] = segment
+ [await self._put(add_segment) for add_segment in to_add]
+ [await self._remove(delete_segment) for delete_segment in to_delete]
+ await self._set_change_number(new_change_number)
+ if len(to_add) > 0 or len(to_delete) > 0:
+ await self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.RB_SEGMENTS_UPDATED,
+ EventsMetadata(SdkEventType.SEGMENTS_UPDATE, {})))
+
+ async def _put(self, rule_based_segment):
+ """
+ Store a rule based segment.
- def update(self, segment_name, to_add, to_remove, change_number=None):
+ :param rule_based_segment: RuleBasedSegment object.
+ :type rule_based_segment: splitio.models.rule_based_segments.RuleBasedSegment
"""
- Update a split. Create it if it doesn't exist.
+ async with self._lock:
+ self._rule_based_segments[rule_based_segment.name] = rule_based_segment
- :param segment_name: Name of the segment to update.
- :type segment_name: str
- :param to_add: Set of members to add to the segment.
- :type to_add: set
- :param to_remove: List of members to remove from the segment.
- :type to_remove: Set
+ async def _remove(self, segment_name):
"""
- with self._lock:
- if segment_name not in self._segments:
- self._segments[segment_name] = Segment(segment_name, to_add, change_number)
- return
+ Remove a rule based segment.
- self._segments[segment_name].update(to_add, to_remove)
- if change_number is not None:
- self._segments[segment_name].change_number = change_number
+ :param segment_name: Name of the rule based segment to remove.
+ :type segment_name: str
- def get_change_number(self, segment_name):
+ :return: True if the rule based segment was found and removed. False otherwise.
+ :rtype: bool
"""
- Retrieve latest change number for a segment.
+ async with self._lock:
+ rule_based_segment = self._rule_based_segments.get(segment_name)
+ if not rule_based_segment:
+ _LOGGER.warning("Tried to delete nonexistant Rule based segment %s. Skipping", segment_name)
+ return False
- :param segment_name: Name of the segment.
- :type segment_name: str
+ self._rule_based_segments.pop(segment_name)
+ return True
+
+ async def get_change_number(self):
+ """
+ Retrieve latest rule based segment change number.
:rtype: int
"""
- with self._lock:
- if segment_name not in self._segments:
- return None
- return self._segments[segment_name].change_number
+ async with self._lock:
+ return self._change_number
- def set_change_number(self, segment_name, new_change_number):
+ async def _set_change_number(self, new_change_number):
"""
Set the latest change number.
- :param segment_name: Name of the segment.
- :type segment_name: str
:param new_change_number: New change number.
:type new_change_number: int
"""
- with self._lock:
- if segment_name not in self._segments:
- return
- self._segments[segment_name].change_number = new_change_number
+ async with self._lock:
+ self._change_number = new_change_number
- def segment_contains(self, segment_name, key):
+ async def get_segment_names(self):
"""
- Check whether a specific key belongs to a segment in storage.
+ Retrieve a list of all excluded segments names.
- :param segment_name: Name of the segment to search in.
- :type segment_name: str
- :param key: Key to search for.
- :type key: str
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ async with self._lock:
+ return list(self._rule_based_segments.keys())
+
+ async def get_large_segment_names(self):
+ """
+ Retrieve a list of all excluded large segments names.
- :return: True if the segment contains the key. False otherwise.
- :rtype: bool
+ :return: List of segment names.
+ :rtype: list(str)
"""
- with self._lock:
- if segment_name not in self._segments:
- self._logger.warning(
- "Tried to query members for nonexistant segment %s. Returning False",
- segment_name
- )
- return False
- return self._segments[segment_name].contains(key)
+ pass
+ async def contains(self, segment_names):
+ """
+ Return whether the segment exists in storage
-class InMemoryImpressionStorage(ImpressionStorage):
- """In memory implementation of an impressions storage."""
+ :param segment_names: rule based segment name
+ :type segment_names: str
- def __init__(self, queue_size):
+ :return: True if the segment exists. False otherwise.
+ :rtype: bool
"""
- Construct an instance.
+ async with self._lock:
+ return set(segment_names).issubset(self._rule_based_segments.keys())
- :param eventsQueueSize: How many events to queue before forcing a submission
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._impressions = queue.Queue(maxsize=queue_size)
- self._lock = threading.Lock()
- self._queue_full_hook = None
+ async def fetch_many(self, segment_names):
+ return {rb_segment_name: await self.get(rb_segment_name) for rb_segment_name in segment_names}
- def set_queue_full_hook(self, hook):
- """
- Set a hook to be called when the queue is full.
+class InMemorySplitStorageBase(SplitStorage):
+ """InMemory implementation of a feature flag storage base."""
- :param h: Hook to be called when the queue is full
+ def get(self, feature_flag_name):
"""
- if callable(hook):
- self._queue_full_hook = hook
+ Retrieve a feature flag.
- def put(self, impressions):
- """
- Put one or more impressions in storage.
+ :param feature_flag_name: Name of the feature to fetch.
+ :type feature_flag_name: str
- :param impressions: List of one or more impressions to store.
- :type impressions: list
+ :rtype: splitio.models.splits.Split
"""
- try:
- with self._lock:
- for impression in impressions:
- self._impressions.put(impression, False)
- return True
- except queue.Full:
- if self._queue_full_hook is not None and callable(self._queue_full_hook):
- self._queue_full_hook()
- self._logger.warning(
- 'Event queue is full, failing to add more events. \n'
- 'Consider increasing parameter `eventQueueSize` in configuration'
- )
- return False
+ pass
- def pop_many(self, count):
+ def fetch_many(self, feature_flag_names):
"""
- Pop the oldest N impressions from storage.
+ Retrieve feature flags.
- :param count: Number of impressions to pop.
- :type count: int
+ :param feature_flag_names: Names of the features to fetch.
+ :type feature_flag_name: list(str)
+
+ :return: A dict with feature flag objects parsed from queue.
+ :rtype: dict(feature_flag_name, splitio.models.splits.Split)
"""
- impressions = []
- with self._lock:
- while not self._impressions.empty() and count > 0:
- impressions.append(self._impressions.get(False))
- count -= 1
- return impressions
+ pass
+ def update(self, to_add, to_delete, new_change_number):
+ """
+ Update feature flag storage.
+ :param to_add: List of feature flags to add
+ :type to_add: list[splitio.models.splits.Split]
+ :param to_delete: List of feature flags to delete
+ :type to_delete: list[str]
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ pass
-class InMemoryEventStorage(EventStorage):
- """
- In memory storage for events.
+ def get_change_number(self):
+ """
+ Retrieve latest feature flag change number.
- Supports adding and popping events.
- """
+ :rtype: int
+ """
+ pass
- def __init__(self, eventsQueueSize):
+ def get_split_names(self):
"""
- Construct an instance.
+ Retrieve a list of all feature flag names.
- :param eventsQueueSize: How many events to queue before forcing a submission
+ :return: List of feature flag names.
+ :rtype: list(str)
"""
- self._logger = logging.getLogger(self.__class__.__name__)
- self._lock = threading.Lock()
- self._events = queue.Queue(maxsize=eventsQueueSize)
- self._queue_full_hook = None
- self._size = 0
+ pass
- def set_queue_full_hook(self, hook):
+ def get_all_splits(self):
"""
- Set a hook to be called when the queue is full.
+ Return all the feature flags.
- :param h: Hook to be called when the queue is full
+ :return: List of all the feature flags.
+ :rtype: list
"""
- if callable(hook):
- self._queue_full_hook = hook
+ pass
- def put(self, events):
+ def get_splits_count(self):
"""
- Add an event to storage.
+ Return feature flags count.
- :param event: Event to be added in the storage
+ :rtype: int
"""
- try:
- with self._lock:
- for event in events:
- self._size += event.size
+ pass
- if self._size >= MAX_SIZE_BYTES:
- self._queue_full_hook()
- return False
+ def is_valid_traffic_type(self, traffic_type_name):
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
- self._events.put(event.event, False)
- return True
- except queue.Full:
- if self._queue_full_hook is not None and callable(self._queue_full_hook):
- self._queue_full_hook()
- self._logger.warning(
- 'Events queue is full, failing to add more events. \n'
- 'Consider increasing parameter `eventsQueueSize` in configuration'
- )
- return False
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
- def pop_many(self, count):
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
"""
- Pop multiple items from the storage.
+ pass
- :param count: number of items to be retrieved and removed from the queue.
+ def kill_locally(self, feature_flag_name, default_treatment, change_number):
"""
- events = []
- with self._lock:
- while not self._events.empty() and count > 0:
- events.append(self._events.get(False))
- count -= 1
- self._size = 0
- return events
+ Local kill for feature flag
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ pass
+ def _increase_traffic_type_count(self, traffic_type_name):
+ """
+ Increase by one the count for a specific traffic type name.
-class InMemoryTelemetryStorage(TelemetryStorage):
- """In-Memory implementation of telemetry storage interface."""
+ :param traffic_type_name: Traffic type to increase the count.
+ :type traffic_type_name: str
+ """
+ self._traffic_types.update([traffic_type_name])
- def __init__(self):
+ def _decrease_traffic_type_count(self, traffic_type_name):
+ """
+ Decrease by one the count for a specific traffic type name.
+
+ :param traffic_type_name: Traffic type to decrease the count.
+ :type traffic_type_name: str
+ """
+ self._traffic_types.subtract([traffic_type_name])
+ self._traffic_types += Counter()
+
+class InMemorySplitStorage(InMemorySplitStorageBase):
+ """InMemory implementation of a feature flag storage."""
+
+ def __init__(self, internal_event_queue, flag_sets=[]):
"""Constructor."""
- self._logger = logging.getLogger(self.__class__.__name__)
- self._latencies = {}
- self._gauges = {}
- self._counters = {}
- self._latencies_lock = threading.Lock()
- self._gauges_lock = threading.Lock()
- self._counters_lock = threading.Lock()
+ self._lock = threading.RLock()
+ self._feature_flags = {}
+ self._change_number = -1
+ self._traffic_types = Counter()
+ self.flag_set = FlagSets(flag_sets)
+ self.flag_set_filter = FlagSetsFilter(flag_sets)
+ self._internal_event_queue = internal_event_queue
+
+ def clear(self):
+ """
+ Clear storage
+ """
+ with self._lock:
+ self._feature_flags = {}
+ self._change_number = -1
+ self._traffic_types = Counter()
+ self.flag_set = FlagSets(self.flag_set_filter.flag_sets)
+
+ def get(self, feature_flag_name):
+ """
+ Retrieve a feature flag.
+
+ :param feature_flag_name: Name of the feature to fetch.
+ :type feature_flag_name: str
- def inc_latency(self, name, bucket):
+ :rtype: splitio.models.splits.Split
"""
- Add a latency.
+ with self._lock:
+ return self._feature_flags.get(feature_flag_name)
- :param name: Name of the latency metric.
- :type name: str
- :param value: Value of the latency metric.
- :tyoe value: int
+ def fetch_many(self, feature_flag_names):
"""
- if not 0 <= bucket <= 21:
- self._logger.warning('Incorect bucket "%d" for latency "%s". Ignoring.', bucket, name)
- return
+ Retrieve feature flags.
- with self._latencies_lock:
- latencies = self._latencies.get(name, [0] * 22)
- latencies[bucket] += 1
- self._latencies[name] = latencies
+ :param feature_flag_names: Names of the features to fetch.
+ :type feature_flag_names: list(str)
- def inc_counter(self, name):
+ :return: A dict with feature flag objects parsed from queue.
+ :rtype: dict(feature_flag_name, splitio.models.splits.Split)
"""
- Increment a counter.
+ return {feature_flag_name: self.get(feature_flag_name) for feature_flag_name in feature_flag_names}
- :param name: Name of the counter metric.
- :type name: str
+ def update(self, to_add, to_delete, new_change_number):
+ """
+ Update feature flag storage.
+ :param to_add: List of feature flags to add
+ :type to_add: list[splitio.models.splits.Split]
+ :param to_delete: List of feature flags to delete
+ :type to_delete: list[str]
+ :param new_change_number: New change number.
+ :type new_change_number: int
"""
- with self._counters_lock:
- counter = self._counters.get(name, 0)
- counter += 1
- self._counters[name] = counter
+ [self._put(add_feature_flag) for add_feature_flag in to_add]
+ [self._remove(delete_feature_flag) for delete_feature_flag in to_delete]
+ self._set_change_number(new_change_number)
+ to_notify = []
+ [to_notify.append(feature.name) for feature in to_add]
+ to_notify.extend(to_delete)
+ if len(to_notify) > 0:
+ self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.FLAGS_UPDATED,
+ EventsMetadata(SdkEventType.FLAG_UPDATE, set(to_notify))))
+
+ def _put(self, feature_flag):
+ """
+ Store a feature flag.
- def put_gauge(self, name, value):
+ :param feature_flag: Split object.
+ :type feature_flag: splitio.models.split.Split
+ """
+ with self._lock:
+ if feature_flag.name in self._feature_flags:
+ self._remove_from_flag_sets(self._feature_flags[feature_flag.name])
+ self._decrease_traffic_type_count(self._feature_flags[feature_flag.name].traffic_type_name)
+ self._feature_flags[feature_flag.name] = feature_flag
+ self._increase_traffic_type_count(feature_flag.traffic_type_name)
+ self.flag_set.update_flag_set(feature_flag.sets, feature_flag.name, self.flag_set_filter.should_filter)
+
+ def _remove(self, feature_flag_name):
"""
- Add a gauge metric.
+ Remove a feature flag from storage.
+
+ :param feature_flag_name: Name of the feature to remove.
+ :type feature_flag_name: str
- :param name: Name of the gauge metric.
- :type name: str
- :param value: Value of the gauge metric.
- :type value: int
+ :return: True if the feature_flag was found and removed. False otherwise.
+ :rtype: bool
"""
- with self._gauges_lock:
- self._gauges[name] = value
+ with self._lock:
+ feature_flag = self._feature_flags.get(feature_flag_name)
+ if not feature_flag:
+ _LOGGER.warning("Tried to delete nonexistant feature flag %s. Skipping", feature_flag_name)
+ return False
+
+ self._feature_flags.pop(feature_flag_name)
+ self._decrease_traffic_type_count(feature_flag.traffic_type_name)
+ self._remove_from_flag_sets(feature_flag)
+ return True
- def pop_counters(self):
+ def _remove_from_flag_sets(self, feature_flag):
+ """
+ Remove flag sets associated to a feature flag
+ :param feature_flag: feature flag object
+ :type feature_flag: splitio.models.splits.Split
"""
- Get all the counters.
+ self.flag_set.remove_flag_set(feature_flag.sets, feature_flag.name, self.flag_set_filter.should_filter)
+ def get_feature_flags_by_sets(self, sets):
+ """
+ Get list of feature flag names associated to a set, if it does not exist will return empty list
+ :param set: flag set
+ :type set: str
+ :return: list of feature flag names
:rtype: list
"""
- with self._counters_lock:
- try:
- return self._counters
- finally:
- self._counters = {}
+ with self._lock:
+ sets_to_fetch = []
+ for flag_set in sets:
+ if not self.flag_set.flag_set_exist(flag_set):
+ _LOGGER.warning("Flag set %s is not part of the configured flag set list, ignoring it." % (flag_set))
+ continue
+ sets_to_fetch.append(flag_set)
+
+ to_return = set()
+ [to_return.update(self.flag_set.get_flag_set(flag_set)) for flag_set in sets_to_fetch]
+ return list(to_return)
+
+ def get_change_number(self):
+ """
+ Retrieve latest feature flag change number.
+
+ :rtype: int
+ """
+ with self._lock:
+ return self._change_number
+
+ def _set_change_number(self, new_change_number):
+ """
+ Set the latest change number.
+
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ with self._lock:
+ self._change_number = new_change_number
+
+ def get_split_names(self):
+ """
+ Retrieve a list of all feature flag names.
+
+ :return: List of feature flag names.
+ :rtype: list(str)
+ """
+ with self._lock:
+ return list(self._feature_flags.keys())
- def pop_gauges(self):
+ def get_all_splits(self):
"""
- Get all the gauges.
+ Return all the feature flags.
+ :return: List of all the feature flags.
:rtype: list
+ """
+ with self._lock:
+ return list(self._feature_flags.values())
+ def get_splits_count(self):
"""
- with self._gauges_lock:
- try:
- return self._gauges
- finally:
- self._gauges = {}
+ Return feature flags count.
- def pop_latencies(self):
+ :rtype: int
+ """
+ with self._lock:
+ return len(self._feature_flags)
+
+ def is_valid_traffic_type(self, traffic_type_name):
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
+
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
+
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
+ """
+ with self._lock:
+ return traffic_type_name in self._traffic_types
+
+ def kill_locally(self, feature_flag_name, default_treatment, change_number):
+ """
+ Local kill for feature flag
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ with self._lock:
+ if self.get_change_number() > change_number:
+ return
+ feature_flag = self._feature_flags.get(feature_flag_name)
+ if not feature_flag:
+ return
+ feature_flag.local_kill(default_treatment, change_number)
+ self._put(feature_flag)
+ self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.FLAG_KILLED_NOTIFICATION,
+ EventsMetadata(SdkEventType.FLAG_UPDATE, {feature_flag_name})))
+
+ def is_flag_set_exist(self, flag_set):
+ """
+ Return whether a flag set exists in at least one feature flag in cache.
+ :param flag_set: Flag set to validate.
+ :type flag_set: str
+
+ :return: True if the flag_set exist. False otherwise.
+ :rtype: bool
+ """
+ return self.flag_set.flag_set_exist(flag_set)
+
+class InMemorySplitStorageAsync(InMemorySplitStorageBase):
+ """InMemory implementation of a feature flag async storage."""
+
+ def __init__(self, internal_event_queue, flag_sets=[]):
+ """Constructor."""
+ self._lock = asyncio.Lock()
+ self._feature_flags = {}
+ self._change_number = -1
+ self._traffic_types = Counter()
+ self.flag_set = FlagSets(flag_sets)
+ self.flag_set_filter = FlagSetsFilter(flag_sets)
+ self._internal_event_queue = internal_event_queue
+
+ async def clear(self):
+ """
+ Clear storage
+ """
+ async with self._lock:
+ self._feature_flags = {}
+ self._change_number = -1
+ self._traffic_types = Counter()
+ self.flag_set = FlagSets(self.flag_set_filter.flag_sets)
+
+ async def get(self, feature_flag_name):
+ """
+ Retrieve a feature flag.
+
+ :param feature_flag_name: Name of the feature to fetch.
+ :type feature_flag_name: str
+
+ :rtype: splitio.models.splits.Split
+ """
+ async with self._lock:
+ return self._feature_flags.get(feature_flag_name)
+
+ async def fetch_many(self, feature_flag_names):
+ """
+ Retrieve feature flags.
+
+ :param feature_flag_names: Names of the features to fetch.
+ :type feature_flag_name: list(str)
+
+ :return: A dict with feature flag objects parsed from queue.
+ :rtype: dict(feature_flag_name, splitio.models.splits.Split)
+ """
+ return {feature_flag_name: await self.get(feature_flag_name) for feature_flag_name in feature_flag_names}
+
+ async def update(self, to_add, to_delete, new_change_number):
"""
- Get all latencies.
+ Update feature flag storage.
+ :param to_add: List of feature flags to add
+ :type to_add: list[splitio.models.splits.Split]
+ :param to_delete: List of feature flags to delete
+ :type to_delete: list[str]
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ [await self._put(add_feature_flag) for add_feature_flag in to_add]
+ [await self._remove(delete_feature_flag) for delete_feature_flag in to_delete]
+ await self._set_change_number(new_change_number)
+ to_notify = []
+ [to_notify.append(feature.name) for feature in to_add]
+ to_notify.extend(to_delete)
+ if len(to_notify) > 0:
+ await self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.FLAGS_UPDATED,
+ EventsMetadata(SdkEventType.FLAG_UPDATE, set(to_notify))))
+
+ async def _put(self, feature_flag):
+ """
+ Store a feature flag.
+
+ :param feature flag: Split object.
+ :type feature flag: splitio.models.split.Split
+ """
+ async with self._lock:
+ if feature_flag.name in self._feature_flags:
+ await self._remove_from_flag_sets(self._feature_flags[feature_flag.name])
+ self._decrease_traffic_type_count(self._feature_flags[feature_flag.name].traffic_type_name)
+ self._feature_flags[feature_flag.name] = feature_flag
+ self._increase_traffic_type_count(feature_flag.traffic_type_name)
+ self.flag_set.update_flag_set(feature_flag.sets, feature_flag.name, self.flag_set_filter.should_filter)
+
+ async def _remove(self, feature_flag_name):
+ """
+ Remove a feature flag from storage.
+
+ :param feature_flag_name: Name of the feature to remove.
+ :type feature_flag_name: str
+
+ :return: True if the feature flag was found and removed. False otherwise.
+ :rtype: bool
+ """
+ async with self._lock:
+ feature_flag = self._feature_flags.get(feature_flag_name)
+ if not feature_flag:
+ _LOGGER.warning("Tried to delete nonexistant feature flag %s. Skipping", feature_flag_name)
+ return False
+
+ self._feature_flags.pop(feature_flag_name)
+ self._decrease_traffic_type_count(feature_flag.traffic_type_name)
+ await self._remove_from_flag_sets(feature_flag)
+ return True
+
+ async def _remove_from_flag_sets(self, feature_flag):
+ """
+ Remove flag sets associated to a feature flag
+ :param feature_flag: feature flag object
+ :type feature_flag: splitio.models.splits.Split
+ """
+ self.flag_set.remove_flag_set(feature_flag.sets, feature_flag.name, self.flag_set_filter.should_filter)
+
+ async def get_feature_flags_by_sets(self, sets):
+ """
+ Get list of feature flag names associated to a set, if it does not exist will return empty list
+ :param set: flag set
+ :type set: str
+ :return: list of feature flag names
+ :rtype: list
+ """
+ async with self._lock:
+ sets_to_fetch = []
+ for flag_set in sets:
+ if not self.flag_set.flag_set_exist(flag_set):
+ _LOGGER.warning("Flag set %s is not part of the configured flag set list, ignoring it." % (flag_set))
+ continue
+ sets_to_fetch.append(flag_set)
+
+ to_return = set()
+ [to_return.update(self.flag_set.get_flag_set(flag_set)) for flag_set in sets_to_fetch]
+ return list(to_return)
+
+ async def get_change_number(self):
+ """
+ Retrieve latest feature flag change number.
+
+ :rtype: int
+ """
+ async with self._lock:
+ return self._change_number
+
+ async def _set_change_number(self, new_change_number):
+ """
+ Set the latest change number.
+
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ async with self._lock:
+ self._change_number = new_change_number
+
+ async def get_split_names(self):
+ """
+ Retrieve a list of all feature flag names.
+
+ :return: List of feature flag names.
+ :rtype: list(str)
+ """
+ async with self._lock:
+ return list(self._feature_flags.keys())
+
+ async def get_all_splits(self):
+ """
+ Return all the feature flags.
+ :return: List of all the feature flags.
:rtype: list
"""
- with self._latencies_lock:
- try:
- return self._latencies
- finally:
- self._latencies = {}
+ async with self._lock:
+ return list(self._feature_flags.values())
+
+ async def get_splits_count(self):
+ """
+ Return feature flags count.
+
+ :rtype: int
+ """
+ async with self._lock:
+ return len(self._feature_flags)
+
+ async def is_valid_traffic_type(self, traffic_type_name):
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
+
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
+
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
+ """
+ async with self._lock:
+ return traffic_type_name in self._traffic_types
+
+ async def kill_locally(self, feature_flag_name, default_treatment, change_number):
+ """
+ Local kill for feature flag
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ if await self.get_change_number() > change_number:
+ return
+ async with self._lock:
+ feature_flag = self._feature_flags.get(feature_flag_name)
+ if not feature_flag:
+ return
+ feature_flag.local_kill(default_treatment, change_number)
+ await self._put(feature_flag)
+ await self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.FLAG_KILLED_NOTIFICATION,
+ EventsMetadata(SdkEventType.FLAG_UPDATE, {feature_flag_name})))
+
+
+ async def get_segment_names(self):
+ """
+ Return a set of all segments referenced by feature flags in storage.
+
+ :return: Set of all segment names.
+ :rtype: set(string)
+ """
+ return set([name for spl in await self.get_all_splits() for name in spl.get_segment_names()])
+
+ async def is_flag_set_exist(self, flag_set):
+ """
+ Return whether a flag set exists in at least one feature flag in cache.
+ :param flag_set: Flag set to validate.
+ :type flag_set: str
+ :return: True if the flag_set exist. False otherwise.
+ :rtype: bool
+ """
+ return self.flag_set.flag_set_exist(flag_set)
+
+class InMemorySegmentStorage(SegmentStorage):
+ """In-memory implementation of a segment storage."""
+
+ def __init__(self, internal_event_queue):
+ """Constructor."""
+ self._segments = {}
+ self._change_numbers = {}
+ self._lock = threading.RLock()
+ self._internal_event_queue = internal_event_queue
+
+ def get(self, segment_name):
+ """
+ Retrieve a segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :rtype: str
+ """
+ with self._lock:
+ fetched = self._segments.get(segment_name)
+ if fetched is None:
+ _LOGGER.debug(
+ "Tried to retrieve nonexistant segment %s. Skipping",
+ segment_name
+ )
+ return fetched
+
+ def put(self, segment):
+ """
+ Store a segment.
+
+ :param segment: Segment to store.
+ :type segment: splitio.models.segment.Segment
+ """
+ with self._lock:
+ self._segments[segment.name] = segment
+
+ self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.SEGMENTS_UPDATED,
+ EventsMetadata(SdkEventType.SEGMENTS_UPDATE, {})))
+
+ def update(self, segment_name, to_add, to_remove, change_number=None):
+ """
+ Update a segment. Create it if it doesn't exist.
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+ :param to_add: Set of members to add to the segment.
+ :type to_add: set
+ :param to_remove: List of members to remove from the segment.
+ :type to_remove: Set
+ """
+ with self._lock:
+ if segment_name not in self._segments:
+ self._segments[segment_name] = Segment(segment_name, to_add, change_number)
+ return
+
+ self._segments[segment_name].update(to_add, to_remove)
+ if change_number is not None:
+ self._segments[segment_name].change_number = change_number
+
+ if len(to_add) > 0 or len(to_remove) >0:
+ self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.SEGMENTS_UPDATED,
+ EventsMetadata(SdkEventType.SEGMENTS_UPDATE, {})))
+
+ def get_change_number(self, segment_name):
+ """
+ Retrieve latest change number for a segment.
+
+ :param segment_name: Name of the segment.
+ :type segment_name: str
+
+ :rtype: int
+ """
+ with self._lock:
+ if segment_name not in self._segments:
+ return None
+
+ return self._segments[segment_name].change_number
+
+ def set_change_number(self, segment_name, new_change_number):
+ """
+ Set the latest change number.
+
+ :param segment_name: Name of the segment.
+ :type segment_name: str
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ with self._lock:
+ if segment_name not in self._segments:
+ return
+ self._segments[segment_name].change_number = new_change_number
+
+ def segment_contains(self, segment_name, key):
+ """
+ Check whether a specific key belongs to a segment in storage.
+
+ :param segment_name: Name of the segment to search in.
+ :type segment_name: str
+ :param key: Key to search for.
+ :type key: str
+
+ :return: True if the segment contains the key. False otherwise.
+ :rtype: bool
+ """
+ with self._lock:
+ if segment_name not in self._segments:
+ _LOGGER.warning(
+ "Tried to query members for nonexistant segment %s. Returning False",
+ segment_name
+ )
+ return False
+
+ return self._segments[segment_name].contains(key)
+
+ def get_segments_count(self):
+ """
+ Retrieve segments count.
+
+ :rtype: int
+ """
+ with self._lock:
+ return len(self._segments)
+
+ def get_segments_keys_count(self):
+ """
+ Retrieve segments keys count.
+
+ :rtype: int
+ """
+ total_count = 0
+ with self._lock:
+ for segment in self._segments:
+ total_count += len(self._segments[segment]._keys)
+ return total_count
+
+
+class InMemorySegmentStorageAsync(SegmentStorage):
+ """In-memory implementation of a segment async storage."""
+
+ def __init__(self, internal_event_queue):
+ """Constructor."""
+ self._segments = {}
+ self._change_numbers = {}
+ self._lock = asyncio.Lock()
+ self._internal_event_queue = internal_event_queue
+
+ async def get(self, segment_name):
+ """
+ Retrieve a segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :rtype: str
+ """
+ async with self._lock:
+ fetched = self._segments.get(segment_name)
+ if fetched is None:
+ _LOGGER.debug(
+ "Tried to retrieve nonexistant segment %s. Skipping",
+ segment_name
+ )
+ return fetched
+
+ async def put(self, segment):
+ """
+ Store a segment.
+
+ :param segment: Segment to store.
+ :type segment: splitio.models.segment.Segment
+ """
+ async with self._lock:
+ self._segments[segment.name] = segment
+ await self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.SEGMENTS_UPDATED,
+ EventsMetadata(SdkEventType.SEGMENTS_UPDATE, {})))
+
+
+ async def update(self, segment_name, to_add, to_remove, change_number=None):
+ """
+ Update a segment. Create it if it doesn't exist.
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+ :param to_add: Set of members to add to the segment.
+ :type to_add: set
+ :param to_remove: List of members to remove from the segment.
+ :type to_remove: Set
+ """
+ async with self._lock:
+ if segment_name not in self._segments:
+ self._segments[segment_name] = Segment(segment_name, to_add, change_number)
+ return
+
+ self._segments[segment_name].update(to_add, to_remove)
+ if change_number is not None:
+ self._segments[segment_name].change_number = change_number
+ if len(to_add) > 0 or len(to_remove) >0:
+ await self._internal_event_queue.put(
+ SdkInternalEventNotification(
+ SdkInternalEvent.SEGMENTS_UPDATED,
+ EventsMetadata(SdkEventType.SEGMENTS_UPDATE, {})))
+
+
+ async def get_change_number(self, segment_name):
+ """
+ Retrieve latest change number for a segment.
+
+ :param segment_name: Name of the segment.
+ :type segment_name: str
+
+ :rtype: int
+ """
+ async with self._lock:
+ if segment_name not in self._segments:
+ return None
+
+ return self._segments[segment_name].change_number
+
+ async def set_change_number(self, segment_name, new_change_number):
+ """
+ Set the latest change number.
+
+ :param segment_name: Name of the segment.
+ :type segment_name: str
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ async with self._lock:
+ if segment_name not in self._segments:
+ return
+ self._segments[segment_name].change_number = new_change_number
+
+ async def segment_contains(self, segment_name, key):
+ """
+ Check whether a specific key belongs to a segment in storage.
+
+ :param segment_name: Name of the segment to search in.
+ :type segment_name: str
+ :param key: Key to search for.
+ :type key: str
+
+ :return: True if the segment contains the key. False otherwise.
+ :rtype: bool
+ """
+ async with self._lock:
+ if segment_name not in self._segments:
+ _LOGGER.warning(
+ "Tried to query members for nonexistant segment %s. Returning False",
+ segment_name
+ )
+ return False
+
+ return self._segments[segment_name].contains(key)
+
+ async def get_segments_count(self):
+ """
+ Retrieve segments count.
+
+ :rtype: int
+ """
+ async with self._lock:
+ return len(self._segments)
+
+ async def get_segments_keys_count(self):
+ """
+ Retrieve segments keys count.
+
+ :rtype: int
+ """
+ total_count = 0
+ async with self._lock:
+ for segment in self._segments:
+ total_count += len(self._segments[segment]._keys)
+ return total_count
+
+
+class InMemoryImpressionStorageBase(ImpressionStorage):
+ """In memory implementation of an impressions base storage."""
+
+ def set_queue_full_hook(self, hook):
+ """
+ Set a hook to be called when the queue is full.
+
+ :param h: Hook to be called when the queue is full
+ """
+ if callable(hook):
+ self._queue_full_hook = hook
+
+ def put(self, impressions):
+ """
+ Put one or more impressions in storage.
+
+ :param impressions: List of one or more impressions to store.
+ :type impressions: list
+ """
+ pass
+
+ def pop_many(self, count):
+ """
+ Pop the oldest N impressions from storage.
+
+ :param count: Number of impressions to pop.
+ :type count: int
+ """
+ pass
+
+ def clear(self):
+ """
+ Clear data.
+ """
+ pass
+
+class InMemoryImpressionStorage(InMemoryImpressionStorageBase):
+ """In memory implementation of an impressions storage."""
+
+ def __init__(self, queue_size, telemetry_runtime_producer):
+ """
+ Construct an instance.
+
+ :param eventsQueueSize: How many events to queue before forcing a submission
+ """
+ self._queue_size = queue_size
+ self._impressions = queue.Queue(maxsize=queue_size)
+ self._lock = threading.Lock()
+ self._queue_full_hook = None
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ def put(self, impressions):
+ """
+ Put one or more impressions in storage.
+
+ :param impressions: List of one or more impressions to store.
+ :type impressions: list
+ """
+ impressions_stored = 0
+ try:
+ with self._lock:
+ for impression in impressions:
+ self._impressions.put(impression, False)
+ impressions_stored += 1
+ self._telemetry_runtime_producer.record_impression_stats(CounterConstants.IMPRESSIONS_QUEUED, len(impressions))
+ return True
+
+ except queue.Full:
+ self._telemetry_runtime_producer.record_impression_stats(CounterConstants.IMPRESSIONS_DROPPED, len(impressions) - impressions_stored)
+ self._telemetry_runtime_producer.record_impression_stats(CounterConstants.IMPRESSIONS_QUEUED, impressions_stored)
+ if self._queue_full_hook is not None and callable(self._queue_full_hook):
+ self._queue_full_hook()
+ _LOGGER.warning(
+ 'Impression queue is full, failing to add more impressions. \n'
+ 'Consider increasing parameter `impressionsQueueSize` in configuration'
+ )
+ return False
+
+ def pop_many(self, count):
+ """
+ Pop the oldest N impressions from storage.
+
+ :param count: Number of impressions to pop.
+ :type count: int
+ """
+ impressions = []
+ with self._lock:
+ while not self._impressions.empty() and count > 0:
+ impressions.append(self._impressions.get(False))
+ count -= 1
+ return impressions
+
+ def clear(self):
+ """
+ Clear data.
+ """
+ with self._lock:
+ self._impressions = queue.Queue(maxsize=self._queue_size)
+
+
+class InMemoryImpressionStorageAsync(InMemoryImpressionStorageBase):
+ """In memory implementation of an impressions async storage."""
+
+ def __init__(self, queue_size, telemetry_runtime_producer):
+ """
+ Construct an instance.
+
+ :param eventsQueueSize: How many events to queue before forcing a submission
+ """
+ self._queue_size = queue_size
+ self._impressions = asyncio.Queue(maxsize=queue_size)
+ self._lock = asyncio.Lock()
+ self._queue_full_hook = None
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ async def put(self, impressions):
+ """
+ Put one or more impressions in storage.
+
+ :param impressions: List of one or more impressions to store.
+ :type impressions: list
+ """
+ impressions_stored = 0
+ try:
+ async with self._lock:
+ for impression in impressions:
+ if self._impressions.qsize() == self._queue_size:
+ raise asyncio.QueueFull
+ await self._impressions.put(impression)
+ impressions_stored += 1
+ await self._telemetry_runtime_producer.record_impression_stats(CounterConstants.IMPRESSIONS_QUEUED, len(impressions))
+ return True
+
+ except asyncio.QueueFull:
+ await self._telemetry_runtime_producer.record_impression_stats(CounterConstants.IMPRESSIONS_DROPPED, len(impressions) - impressions_stored)
+ await self._telemetry_runtime_producer.record_impression_stats(CounterConstants.IMPRESSIONS_QUEUED, impressions_stored)
+ if self._queue_full_hook is not None and callable(self._queue_full_hook):
+ await self._queue_full_hook()
+ _LOGGER.warning(
+ 'Impression queue is full, failing to add more impressions. \n'
+ 'Consider increasing parameter `impressionsQueueSize` in configuration'
+ )
+ return False
+
+ async def pop_many(self, count):
+ """
+ Pop the oldest N impressions from storage.
+
+ :param count: Number of impressions to pop.
+ :type count: int
+ """
+ impressions = []
+ async with self._lock:
+ while not self._impressions.empty() and count > 0:
+ impressions.append(await self._impressions.get())
+ count -= 1
+ return impressions
+
+ async def clear(self):
+ """
+ Clear data.
+ """
+ async with self._lock:
+ self._impressions = asyncio.Queue(maxsize=self._queue_size)
+
+
+class InMemoryEventStorageBase(EventStorage):
+ """
+ In memory storage base class for events.
+ Supports adding and popping events.
+ """
+ def set_queue_full_hook(self, hook):
+ """
+ Set a hook to be called when the queue is full.
+
+ :param h: Hook to be called when the queue is full
+ """
+ if callable(hook):
+ self._queue_full_hook = hook
+
+ def put(self, events):
+ """
+ Add an event to storage.
+
+ :param event: Event to be added in the storage
+ """
+ pass
+
+ def pop_many(self, count):
+ """
+ Pop multiple items from the storage.
+
+ :param count: number of items to be retrieved and removed from the queue.
+ """
+ pass
+
+ def clear(self):
+ """
+ Clear data.
+ """
+ pass
+
+
+class InMemoryEventStorage(InMemoryEventStorageBase):
+ """
+ In memory storage for events.
+
+ Supports adding and popping events.
+ """
+
+ def __init__(self, eventsQueueSize, telemetry_runtime_producer):
+ """
+ Construct an instance.
+
+ :param eventsQueueSize: How many events to queue before forcing a submission
+ """
+ self._queue_size = eventsQueueSize
+ self._lock = threading.Lock()
+ self._events = queue.Queue(maxsize=eventsQueueSize)
+ self._queue_full_hook = None
+ self._size = 0
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ def put(self, events):
+ """
+ Add an event to storage.
+
+ :param event: Event to be added in the storage
+ """
+ events_stored = 0
+ try:
+ with self._lock:
+ for event in events:
+ self._size += event.size
+
+ if self._size >= MAX_SIZE_BYTES:
+ self._queue_full_hook()
+ return False
+
+ self._events.put(event.event, False)
+ events_stored += 1
+ self._telemetry_runtime_producer.record_event_stats(CounterConstants.EVENTS_QUEUED, len(events))
+ return True
+
+ except queue.Full:
+ self._telemetry_runtime_producer.record_event_stats(CounterConstants.EVENTS_DROPPED, len(events) - events_stored)
+ self._telemetry_runtime_producer.record_event_stats(CounterConstants.EVENTS_QUEUED, events_stored)
+ if self._queue_full_hook is not None and callable(self._queue_full_hook):
+ self._queue_full_hook()
+ _LOGGER.warning(
+ 'Events queue is full, failing to add more events. \n'
+ 'Consider increasing parameter `eventsQueueSize` in configuration'
+ )
+ return False
+
+ def pop_many(self, count):
+ """
+ Pop multiple items from the storage.
+
+ :param count: number of items to be retrieved and removed from the queue.
+ """
+ events = []
+ with self._lock:
+ while not self._events.empty() and count > 0:
+ events.append(self._events.get(False))
+ count -= 1
+ self._size = 0
+ return events
+
+ def clear(self):
+ """
+ Clear data.
+ """
+ with self._lock:
+ self._events = queue.Queue(maxsize=self._queue_size)
+
+
+class InMemoryEventStorageAsync(InMemoryEventStorageBase):
+ """
+ In memory async storage for events.
+ Supports adding and popping events.
+ """
+ def __init__(self, eventsQueueSize, telemetry_runtime_producer):
+ """
+ Construct an instance.
+
+ :param eventsQueueSize: How many events to queue before forcing a submission
+ """
+ self._queue_size = eventsQueueSize
+ self._lock = asyncio.Lock()
+ self._events = asyncio.Queue(maxsize=eventsQueueSize)
+ self._queue_full_hook = None
+ self._size = 0
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ async def put(self, events):
+ """
+ Add an event to storage.
+
+ :param event: Event to be added in the storage
+ """
+ events_stored = 0
+ try:
+ async with self._lock:
+ for event in events:
+ if self._events.qsize() == self._queue_size:
+ raise asyncio.QueueFull
+
+ self._size += event.size
+ if self._size >= MAX_SIZE_BYTES:
+ await self._queue_full_hook()
+ return False
+
+ await self._events.put(event.event)
+ events_stored += 1
+ await self._telemetry_runtime_producer.record_event_stats(CounterConstants.EVENTS_QUEUED, len(events))
+ return True
+
+ except asyncio.QueueFull:
+ await self._telemetry_runtime_producer.record_event_stats(CounterConstants.EVENTS_DROPPED, len(events) - events_stored)
+ await self._telemetry_runtime_producer.record_event_stats(CounterConstants.EVENTS_QUEUED, events_stored)
+ if self._queue_full_hook is not None and callable(self._queue_full_hook):
+ await self._queue_full_hook()
+ _LOGGER.warning(
+ 'Events queue is full, failing to add more events. \n'
+ 'Consider increasing parameter `eventsQueueSize` in configuration'
+ )
+ return False
+
+ async def pop_many(self, count):
+ """
+ Pop multiple items from the storage.
+
+ :param count: number of items to be retrieved and removed from the queue.
+ """
+ events = []
+ async with self._lock:
+ while not self._events.empty() and count > 0:
+ events.append(await self._events.get())
+ count -= 1
+ self._size = 0
+ return events
+
+ async def clear(self):
+ """
+ Clear data.
+ """
+ async with self._lock:
+ self._events = asyncio.Queue(maxsize=self._queue_size)
+
+
+class InMemoryTelemetryStorageBase(TelemetryStorage):
+ """In-memory telemetry storage base."""
+
+ def _reset_tags(self):
+ self._tags = []
+
+ def _reset_config_tags(self):
+ self._config_tags = []
+
+ def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """Record configurations."""
+ pass
+
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ pass
+
+ def record_ready_time(self, ready_time):
+ """Record ready time."""
+ pass
+
+ def add_tag(self, tag):
+ """Record tag string."""
+ pass
+
+ def add_config_tag(self, tag):
+ """Record tag string."""
+ pass
+
+ def record_bur_time_out(self):
+ """Record block until ready timeout."""
+ pass
+
+ def record_not_ready_usage(self):
+ """record non-ready usage."""
+ pass
+
+ def record_latency(self, method, latency):
+ """Record method latency time."""
+ pass
+
+ def record_exception(self, method):
+ """Record method exception."""
+ pass
+
+ def record_impression_stats(self, data_type, count):
+ """Record impressions stats."""
+ pass
+
+ def record_event_stats(self, data_type, count):
+ """Record events stats."""
+ pass
+
+ def record_successful_sync(self, resource, time):
+ """Record successful sync."""
+ pass
+
+ def record_sync_error(self, resource, status):
+ """Record sync http error."""
+ pass
+
+ def record_sync_latency(self, resource, latency):
+ """Record latency time."""
+ pass
+
+ def record_auth_rejections(self):
+ """Record auth rejection."""
+ pass
+
+ def record_token_refreshes(self):
+ """Record sse token refresh."""
+ pass
+
+ def record_streaming_event(self, streaming_event):
+ """Record incoming streaming event."""
+ pass
+
+ def record_session_length(self, session):
+ """Record session length."""
+ pass
+
+ def record_update_from_sse(self, event):
+ """Record update from sse."""
+ pass
+
+ def get_bur_time_outs(self):
+ """Get block until ready timeout."""
+ pass
+
+ def get_non_ready_usage(self):
+ """Get non-ready usage."""
+ pass
+
+ def get_config_stats(self):
+ """Get all config info."""
+ pass
+
+ def pop_exceptions(self):
+ """Get and reset method exceptions."""
+ pass
+
+ def pop_tags(self):
+ """Get and reset tags."""
+ pass
+
+ def pop_config_tags(self):
+ """Get and reset tags."""
+ pass
+
+ def pop_latencies(self):
+ """Get and reset eval latencies."""
+ pass
+
+ def get_impressions_stats(self, type):
+ """Get impressions stats"""
+ pass
+
+ def get_events_stats(self, type):
+ """Get events stats"""
+ pass
+
+ def get_last_synchronization(self):
+ """Get last sync"""
+ pass
+
+ def pop_http_errors(self):
+ """Get and reset http errors."""
+ pass
+
+ def pop_http_latencies(self):
+ """Get and reset http latencies."""
+ pass
+
+ def pop_auth_rejections(self):
+ """Get and reset auth rejections."""
+ pass
+
+ def pop_token_refreshes(self):
+ """Get and reset token refreshes."""
+ pass
+
+ def pop_streaming_events(self):
+ """Get and reset streaming events"""
+ pass
+
+ def get_session_length(self):
+ """Get session length"""
+ pass
+
+ def pop_update_from_sse(self, event):
+ """Get and reset update from sse."""
+ pass
+
+class InMemoryTelemetryStorage(InMemoryTelemetryStorageBase):
+ """In-memory telemetry storage."""
+
+ def __init__(self):
+ """Constructor"""
+ self._lock = threading.RLock()
+ self._method_exceptions = MethodExceptions()
+ self._last_synchronization = LastSynchronization()
+ self._counters = TelemetryCounters()
+ self._http_sync_errors = HTTPErrors()
+ self._method_latencies = MethodLatencies()
+ self._http_latencies = HTTPLatencies()
+ self._streaming_events = StreamingEvents()
+ self._tel_config = TelemetryConfig()
+ with self._lock:
+ self._reset_tags()
+ self._reset_config_tags()
+
+ def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """Record configurations."""
+ self._tel_config.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
+
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ self._tel_config.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+
+ def record_ready_time(self, ready_time):
+ """Record ready time."""
+ self._tel_config.record_ready_time(ready_time)
+
+ def add_tag(self, tag):
+ """Record tag string."""
+ with self._lock:
+ if len(self._tags) < MAX_TAGS:
+ self._tags.append(tag)
+
+ def add_config_tag(self, tag):
+ """Record tag string."""
+ with self._lock:
+ if len(self._config_tags) < MAX_TAGS:
+ self._config_tags.append(tag)
+
+ def record_bur_time_out(self):
+ """Record block until ready timeout."""
+ self._tel_config.record_bur_time_out()
+
+ def record_not_ready_usage(self):
+ """record non-ready usage."""
+ self._tel_config.record_not_ready_usage()
+
+ def record_latency(self, method, latency):
+ """Record method latency time."""
+ self._method_latencies.add_latency(method,latency)
+
+ def record_exception(self, method):
+ """Record method exception."""
+ self._method_exceptions.add_exception(method)
+
+ def record_impression_stats(self, data_type, count):
+ """Record impressions stats."""
+ self._counters.record_impressions_value(data_type, count)
+
+ def record_event_stats(self, data_type, count):
+ """Record events stats."""
+ self._counters.record_events_value(data_type, count)
+
+ def record_successful_sync(self, resource, time):
+ """Record successful sync."""
+ self._last_synchronization.add_latency(resource, time)
+
+ def record_sync_error(self, resource, status):
+ """Record sync http error."""
+ self._http_sync_errors.add_error(resource, status)
+
+ def record_sync_latency(self, resource, latency):
+ """Record latency time."""
+ self._http_latencies.add_latency(resource, latency)
+
+ def record_auth_rejections(self):
+ """Record auth rejection."""
+ self._counters.record_auth_rejections()
+
+ def record_token_refreshes(self):
+ """Record sse token refresh."""
+ self._counters.record_token_refreshes()
+
+ def record_streaming_event(self, streaming_event):
+ """Record incoming streaming event."""
+ self._streaming_events.record_streaming_event(streaming_event)
+
+ def record_session_length(self, session):
+ """Record session length."""
+ self._counters.record_session_length(session)
+
+ def record_update_from_sse(self, event):
+ """Record update from sse."""
+ self._counters.record_update_from_sse(event)
+
+ def get_bur_time_outs(self):
+ """Get block until ready timeout."""
+ return self._tel_config.get_bur_time_outs()
+
+ def get_non_ready_usage(self):
+ """Get non-ready usage."""
+ return self._tel_config.get_non_ready_usage()
+
+ def get_config_stats(self):
+ """Get all config info."""
+ return self._tel_config.get_stats()
+
+ def pop_exceptions(self):
+ """Get and reset method exceptions."""
+ return self._method_exceptions.pop_all()
+
+ def pop_tags(self):
+ """Get and reset tags."""
+ with self._lock:
+ tags = self._tags
+ self._reset_tags()
+ return tags
+
+ def pop_config_tags(self):
+ """Get and reset tags."""
+ with self._lock:
+ tags = self._config_tags
+ self._reset_config_tags()
+ return tags
+
+ def pop_latencies(self):
+ """Get and reset eval latencies."""
+ return self._method_latencies.pop_all()
+
+ def get_impressions_stats(self, type):
+ """Get impressions stats"""
+ return self._counters.get_counter_stats(type)
+
+ def get_events_stats(self, type):
+ """Get events stats"""
+ return self._counters.get_counter_stats(type)
+
+ def get_last_synchronization(self):
+ """Get last sync"""
+ return self._last_synchronization.get_all()
+
+ def pop_http_errors(self):
+ """Get and reset http errors."""
+ return self._http_sync_errors.pop_all()
+
+ def pop_http_latencies(self):
+ """Get and reset http latencies."""
+ return self._http_latencies.pop_all()
+
+ def pop_auth_rejections(self):
+ """Get and reset auth rejections."""
+ return self._counters.pop_auth_rejections()
+
+ def pop_token_refreshes(self):
+ """Get and reset token refreshes."""
+ return self._counters.pop_token_refreshes()
+
+ def pop_streaming_events(self):
+ return self._streaming_events.pop_streaming_events()
+
+ def get_session_length(self):
+ """Get session length"""
+ return self._counters.get_session_length()
+
+ def pop_update_from_sse(self, event):
+ """Get and reset update from sse."""
+ return self._counters.pop_update_from_sse(event)
+
+class InMemoryTelemetryStorageAsync(InMemoryTelemetryStorageBase):
+ """In-memory telemetry async storage."""
+
+ @classmethod
+ async def create(cls):
+ """Constructor"""
+ self = cls()
+ self._lock = asyncio.Lock()
+ self._method_exceptions = await MethodExceptionsAsync.create()
+ self._last_synchronization = await LastSynchronizationAsync.create()
+ self._counters = await TelemetryCountersAsync.create()
+ self._http_sync_errors = await HTTPErrorsAsync.create()
+ self._method_latencies = await MethodLatenciesAsync.create()
+ self._http_latencies = await HTTPLatenciesAsync.create()
+ self._streaming_events = await StreamingEventsAsync.create()
+ self._tel_config = await TelemetryConfigAsync.create()
+ async with self._lock:
+ self._reset_tags()
+ self._reset_config_tags()
+ return self
+
+ async def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """Record configurations."""
+ await self._tel_config.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
+
+ async def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ await self._tel_config.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+
+ async def record_ready_time(self, ready_time):
+ """Record ready time."""
+ await self._tel_config.record_ready_time(ready_time)
+
+ async def add_tag(self, tag):
+ """Record tag string."""
+ async with self._lock:
+ if len(self._tags) < MAX_TAGS:
+ self._tags.append(tag)
+
+ async def add_config_tag(self, tag):
+ """Record tag string."""
+ async with self._lock:
+ if len(self._config_tags) < MAX_TAGS:
+ self._config_tags.append(tag)
+
+ async def record_bur_time_out(self):
+ """Record block until ready timeout."""
+ await self._tel_config.record_bur_time_out()
+
+ async def record_not_ready_usage(self):
+ """record non-ready usage."""
+ await self._tel_config.record_not_ready_usage()
+
+ async def record_latency(self, method, latency):
+ """Record method latency time."""
+ await self._method_latencies.add_latency(method,latency)
+
+ async def record_exception(self, method):
+ """Record method exception."""
+ await self._method_exceptions.add_exception(method)
+
+ async def record_impression_stats(self, data_type, count):
+ """Record impressions stats."""
+ await self._counters.record_impressions_value(data_type, count)
+
+ async def record_event_stats(self, data_type, count):
+ """Record events stats."""
+ await self._counters.record_events_value(data_type, count)
+
+ async def record_successful_sync(self, resource, time):
+ """Record successful sync."""
+ await self._last_synchronization.add_latency(resource, time)
+
+ async def record_sync_error(self, resource, status):
+ """Record sync http error."""
+ await self._http_sync_errors.add_error(resource, status)
+
+ async def record_sync_latency(self, resource, latency):
+ """Record latency time."""
+ await self._http_latencies.add_latency(resource, latency)
+
+ async def record_auth_rejections(self):
+ """Record auth rejection."""
+ await self._counters.record_auth_rejections()
+
+ async def record_token_refreshes(self):
+ """Record sse token refresh."""
+ await self._counters.record_token_refreshes()
+
+ async def record_streaming_event(self, streaming_event):
+ """Record incoming streaming event."""
+ await self._streaming_events.record_streaming_event(streaming_event)
+
+ async def record_session_length(self, session):
+ """Record session length."""
+ await self._counters.record_session_length(session)
+
+ async def record_update_from_sse(self, event):
+ """Record update from sse."""
+ await self._counters.record_update_from_sse(event)
+
+ async def get_bur_time_outs(self):
+ """Get block until ready timeout."""
+ return await self._tel_config.get_bur_time_outs()
+
+ async def get_non_ready_usage(self):
+ """Get non-ready usage."""
+ return await self._tel_config.get_non_ready_usage()
+
+ async def get_config_stats(self):
+ """Get all config info."""
+ return await self._tel_config.get_stats()
+
+ async def pop_exceptions(self):
+ """Get and reset method exceptions."""
+ return await self._method_exceptions.pop_all()
+
+ async def pop_tags(self):
+ """Get and reset tags."""
+ async with self._lock:
+ tags = self._tags
+ self._reset_tags()
+ return tags
+
+ async def pop_config_tags(self):
+ """Get and reset tags."""
+ async with self._lock:
+ tags = self._config_tags
+ self._reset_config_tags()
+ return tags
+
+ async def pop_latencies(self):
+ """Get and reset eval latencies."""
+ return await self._method_latencies.pop_all()
+
+ async def get_impressions_stats(self, type):
+ """Get impressions stats"""
+ return await self._counters.get_counter_stats(type)
+
+ async def get_events_stats(self, type):
+ """Get events stats"""
+ return await self._counters.get_counter_stats(type)
+
+ async def get_last_synchronization(self):
+ """Get last sync"""
+ return await self._last_synchronization.get_all()
+
+ async def pop_http_errors(self):
+ """Get and reset http errors."""
+ return await self._http_sync_errors.pop_all()
+
+ async def pop_http_latencies(self):
+ """Get and reset http latencies."""
+ return await self._http_latencies.pop_all()
+
+ async def pop_auth_rejections(self):
+ """Get and reset auth rejections."""
+ return await self._counters.pop_auth_rejections()
+
+ async def pop_token_refreshes(self):
+ """Get and reset token refreshes."""
+ return await self._counters.pop_token_refreshes()
+
+ async def pop_streaming_events(self):
+ return await self._streaming_events.pop_streaming_events()
+
+ async def get_session_length(self):
+ """Get session length"""
+ return await self._counters.get_session_length()
+
+ async def pop_update_from_sse(self, event):
+ """Get and reset update from sse."""
+ return await self._counters.pop_update_from_sse(event)
+
+class LocalhostTelemetryStorage():
+ """Localhost telemetry storage."""
+ def do_nothing(*_, **__):
+ return {}
+
+ def __getattr__(self, _):
+ return self.do_nothing
+
+class LocalhostTelemetryStorageAsync():
+ """Localhost telemetry storage."""
+
+ async def record_ready_time(self, ready_time):
+ pass
+
+ async def record_config(self, config, extra_config):
+ """Record configurations."""
+ pass
+
+ async def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ pass
+
+ async def add_tag(self, tag):
+ """Record tag string."""
+ pass
+
+ async def add_config_tag(self, tag):
+ """Record tag string."""
+ pass
+
+ async def record_bur_time_out(self):
+ """Record block until ready timeout."""
+ pass
+
+ async def record_not_ready_usage(self):
+ """record non-ready usage."""
+ pass
+
+ async def record_latency(self, method, latency):
+ """Record method latency time."""
+ pass
+
+ async def record_exception(self, method):
+ """Record method exception."""
+ pass
+
+ async def record_impression_stats(self, data_type, count):
+ """Record impressions stats."""
+ pass
+
+ async def record_event_stats(self, data_type, count):
+ """Record events stats."""
+ pass
+
+ async def record_successful_sync(self, resource, time):
+ """Record successful sync."""
+ pass
+
+ async def record_sync_error(self, resource, status):
+ """Record sync http error."""
+ pass
+
+ async def record_sync_latency(self, resource, latency):
+ """Record latency time."""
+ pass
+
+ async def record_auth_rejections(self):
+ """Record auth rejection."""
+ pass
+
+ async def record_token_refreshes(self):
+ """Record sse token refresh."""
+ pass
+
+ async def record_streaming_event(self, streaming_event):
+ """Record incoming streaming event."""
+ pass
+
+ async def record_session_length(self, session):
+ """Record session length."""
+ pass
+
+ async def record_update_from_sse(self, event):
+ """Record update from sse."""
+ pass
+
+ async def get_bur_time_outs(self):
+ """Get block until ready timeout."""
+ pass
+
+ async def get_non_ready_usage(self):
+ """Get non-ready usage."""
+ pass
+
+ async def get_config_stats(self):
+ """Get all config info."""
+ pass
+
+ async def pop_exceptions(self):
+ """Get and reset method exceptions."""
+ pass
+
+ async def pop_tags(self):
+ """Get and reset tags."""
+ pass
+
+ async def pop_config_tags(self):
+ """Get and reset tags."""
+ pass
+
+ async def pop_latencies(self):
+ """Get and reset eval latencies."""
+ pass
+
+ async def get_impressions_stats(self, type):
+ """Get impressions stats"""
+ pass
+
+ async def get_events_stats(self, type):
+ """Get events stats"""
+ pass
+
+ async def get_last_synchronization(self):
+ """Get last sync"""
+ pass
+
+ async def pop_http_errors(self):
+ """Get and reset http errors."""
+ pass
+
+ async def pop_http_latencies(self):
+ """Get and reset http latencies."""
+ pass
+
+ async def pop_auth_rejections(self):
+ """Get and reset auth rejections."""
+ pass
+
+ async def pop_token_refreshes(self):
+ """Get and reset token refreshes."""
+ pass
+
+ async def pop_streaming_events(self):
+ pass
+
+ async def get_session_length(self):
+ """Get session length"""
+ pass
+
+ async def pop_update_from_sse(self, event):
+ """Get and reset update from sse."""
+ pass
\ No newline at end of file
diff --git a/splitio/storage/pluggable.py b/splitio/storage/pluggable.py
new file mode 100644
index 00000000..71e487c6
--- /dev/null
+++ b/splitio/storage/pluggable.py
@@ -0,0 +1,1977 @@
+"""Pluggable Storage classes."""
+
+import logging
+import json
+import threading
+
+from splitio.optional.loaders import asyncio
+from splitio.models import splits, segments, rule_based_segments
+from splitio.models.impressions import Impression
+from splitio.models.telemetry import MethodExceptions, MethodLatencies, TelemetryConfig, MAX_TAGS,\
+ MethodLatenciesAsync, MethodExceptionsAsync, TelemetryConfigAsync
+from splitio.storage import FlagSetsFilter, SplitStorage, SegmentStorage, ImpressionStorage, EventStorage, TelemetryStorage, RuleBasedSegmentsStorage
+from splitio.util.storage_helper import get_valid_flag_sets, combine_valid_flag_sets
+
+_LOGGER = logging.getLogger(__name__)
+
+class PluggableRuleBasedSegmentsStorageBase(RuleBasedSegmentsStorage):
+ """Pluggable storage for rule based segments."""
+
+ _TILL_LENGTH = 4
+
+ def __init__(self, pluggable_adapter, prefix=None):
+ """
+ Class constructor.
+
+ :param redis_client: Redis client or compliant interface.
+ :type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ """
+ self._pluggable_adapter = pluggable_adapter
+ self._prefix = "SPLITIO.rbsegment.{segment_name}"
+ self._rb_segments_till_prefix = "SPLITIO.rbsegments.till"
+ self._rb_segment_name_length = 18
+ if prefix is not None:
+ self._rb_segment_name_length += len(prefix) + 1
+ self._prefix = prefix + "." + self._prefix
+ self._rb_segments_till_prefix = prefix + "." + self._rb_segments_till_prefix
+
+ def get(self, segment_name):
+ """
+ Retrieve a rule based segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :rtype: str
+ """
+ pass
+
+ def get_change_number(self):
+ """
+ Retrieve latest rule based segment change number.
+
+ :rtype: int
+ """
+ pass
+
+ def contains(self, segment_names):
+ """
+ Return whether the segments exists in rule based segment in cache.
+
+ :param segment_names: segment name to validate.
+ :type segment_names: str
+
+ :return: True if segment names exists. False otherwise.
+ :rtype: bool
+ """
+ pass
+
+ def get_segment_names(self):
+ """
+ Retrieve a list of all excluded segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ pass
+
+ def update(self, to_add, to_delete, new_change_number):
+ """
+ Update rule based segment..
+
+ :param to_add: List of rule based segment. to add
+ :type to_add: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param to_delete: List of rule based segment. to delete
+ :type to_delete: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ raise NotImplementedError('Only redis-consumer mode is supported.')
+
+ def get_large_segment_names(self):
+ """
+ Retrieve a list of all excluded large segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ pass
+
+class PluggableRuleBasedSegmentsStorage(PluggableRuleBasedSegmentsStorageBase):
+ """Pluggable storage for rule based segments."""
+
+ def __init__(self, pluggable_adapter, prefix=None):
+ """
+ Class constructor.
+
+ :param redis_client: Redis client or compliant interface.
+ :type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ """
+ PluggableRuleBasedSegmentsStorageBase.__init__(self, pluggable_adapter, prefix)
+
+ def get(self, segment_name):
+ """
+ Retrieve a rule based segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :rtype: str
+ """
+ try:
+ rb_segment = self._pluggable_adapter.get(self._prefix.format(segment_name=segment_name))
+ if not rb_segment:
+ return None
+
+ return rule_based_segments.from_raw(rb_segment)
+
+ except Exception:
+ _LOGGER.error('Error getting rule based segment from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def get_change_number(self):
+ """
+ Retrieve latest rule based segment change number.
+
+ :rtype: int
+ """
+ try:
+ return self._pluggable_adapter.get(self._rb_segments_till_prefix)
+
+ except Exception:
+ _LOGGER.error('Error getting change number in rule based segment storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def contains(self, segment_names):
+ """
+ Return whether the segments exists in rule based segment in cache.
+
+ :param segment_names: segment name to validate.
+ :type segment_names: str
+
+ :return: True if segment names exists. False otherwise.
+ :rtype: bool
+ """
+ return set(segment_names).issubset(self.get_segment_names())
+
+ def get_segment_names(self):
+ """
+ Retrieve a list of all rule based segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ try:
+ _LOGGER.error(self._rb_segment_name_length)
+ _LOGGER.error(self._prefix)
+ _LOGGER.error(self._prefix[:self._rb_segment_name_length])
+ keys = []
+ for key in self._pluggable_adapter.get_keys_by_prefix(self._prefix[:self._rb_segment_name_length]):
+ if key[-self._TILL_LENGTH:] != 'till':
+ keys.append(key[len(self._prefix[:self._rb_segment_name_length]):])
+ return keys
+
+ except Exception:
+ _LOGGER.error('Error getting rule based segments names from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def fetch_many(self, rb_segment_names):
+ """
+ Retrieve rule based segments.
+
+ :param rb_segment_names: Names of the rule based segments to fetch.
+ :type rb_segment_names: list(str)
+
+ :return: A dict with rule based segment objects parsed from queue.
+ :rtype: dict(rb_segment_names, splitio.models.rile_based_segment.RuleBasedSegment)
+ """
+ try:
+ prefix_added = [self._prefix.format(segment_name=rb_segment_name) for rb_segment_name in rb_segment_names]
+ return {rb_segment['name']: rule_based_segments.from_raw(rb_segment) for rb_segment in self._pluggable_adapter.get_many(prefix_added)}
+
+ except Exception:
+ _LOGGER.error('Error getting rule based segments from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+class PluggableRuleBasedSegmentsStorageAsync(PluggableRuleBasedSegmentsStorageBase):
+ """Pluggable storage for rule based segments."""
+
+ def __init__(self, pluggable_adapter, prefix=None):
+ """
+ Class constructor.
+
+ :param redis_client: Redis client or compliant interface.
+ :type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ """
+ PluggableRuleBasedSegmentsStorageBase.__init__(self, pluggable_adapter, prefix)
+
+ async def get(self, segment_name):
+ """
+ Retrieve a rule based segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :rtype: str
+ """
+ try:
+ rb_segment = await self._pluggable_adapter.get(self._prefix.format(segment_name=segment_name))
+ if not rb_segment:
+ return None
+
+ return rule_based_segments.from_raw(rb_segment)
+
+ except Exception:
+ _LOGGER.error('Error getting rule based segment from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get_change_number(self):
+ """
+ Retrieve latest rule based segment change number.
+
+ :rtype: int
+ """
+ try:
+ return await self._pluggable_adapter.get(self._rb_segments_till_prefix)
+
+ except Exception:
+ _LOGGER.error('Error getting change number in rule based segment storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def contains(self, segment_names):
+ """
+ Return whether the segments exists in rule based segment in cache.
+
+ :param segment_names: segment name to validate.
+ :type segment_names: str
+
+ :return: True if segment names exists. False otherwise.
+ :rtype: bool
+ """
+ return set(segment_names).issubset(await self.get_segment_names())
+
+ async def get_segment_names(self):
+ """
+ Retrieve a list of all rule based segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ try:
+ keys = []
+ for key in await self._pluggable_adapter.get_keys_by_prefix(self._prefix[:self._rb_segment_name_length]):
+ if key[-self._TILL_LENGTH:] != 'till':
+ keys.append(key[len(self._prefix[:self._rb_segment_name_length]):])
+ return keys
+
+ except Exception:
+ _LOGGER.error('Error getting rule based segments names from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def fetch_many(self, rb_segment_names):
+ """
+ Retrieve rule based segments.
+
+ :param rb_segment_names: Names of the rule based segments to fetch.
+ :type rb_segment_names: list(str)
+
+ :return: A dict with rule based segment objects parsed from queue.
+ :rtype: dict(rb_segment_names, splitio.models.rile_based_segment.RuleBasedSegment)
+ """
+ try:
+ prefix_added = [self._prefix.format(segment_name=rb_segment_name) for rb_segment_name in rb_segment_names]
+ return {rb_segment['name']: rule_based_segments.from_raw(rb_segment) for rb_segment in await self._pluggable_adapter.get_many(prefix_added)}
+
+ except Exception:
+ _LOGGER.error('Error getting rule based segments from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+class PluggableSplitStorageBase(SplitStorage):
+ """InMemory implementation of a feature flag storage."""
+
+ _FEATURE_FLAG_NAME_LENGTH = 19
+ _TILL_LENGTH = 4
+
+ def __init__(self, pluggable_adapter, prefix=None, config_flag_sets=[]):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ self._pluggable_adapter = pluggable_adapter
+ self._prefix = "SPLITIO.split.{feature_flag_name}"
+ self._traffic_type_prefix = "SPLITIO.trafficType.{traffic_type_name}"
+ self._feature_flag_till_prefix = "SPLITIO.splits.till"
+ self._flag_set_prefix = 'SPLITIO.flagSet.{flag_set}'
+ self.flag_set_filter = FlagSetsFilter(config_flag_sets)
+ if prefix is not None:
+ self._prefix = prefix + "." + self._prefix
+ self._traffic_type_prefix = prefix + "." + self._traffic_type_prefix
+ self._feature_flag_till_prefix = prefix + "." + self._feature_flag_till_prefix
+ self._flag_set_prefix = prefix + "." + self._flag_set_prefix
+
+ def get(self, feature_flag_name):
+ """
+ Retrieve a feature flag.
+
+ :param feature_flag_name: Name of the feature to fetch.
+ :type feature_flag_name: str
+
+ :rtype: splitio.models.splits.Split
+ """
+ pass
+
+ def fetch_many(self, feature_flag_names):
+ """
+ Retrieve feature flags.
+
+ :param feature_flag_names: Names of the features to fetch.
+ :type feature_flag_name: list(str)
+
+ :return: A dict with feature flag objects parsed from queue.
+ :rtype: dict(feature_flag_name, splitio.models.splits.Split)
+ """
+ pass
+
+ # TODO: To be added when producer mode is supported
+# def put_many(self, splits, change_number):
+# """
+# Store multiple splits.
+#
+# :param split: array of Split objects.
+# :type split: splitio.models.split.Split[]
+# """
+# try:
+# for split in splits:
+# self.put(split)
+# self._pluggable_adapter.set(self._split_till_prefix, change_number)
+# except Exception:
+# _LOGGER.error('Error storing splits in storage')
+# _LOGGER.debug('Error: ', exc_info=True)
+
+ def update(self, to_add, to_delete, new_change_number):
+ """
+ Update feature flag storage.
+ :param to_add: List of feature flags to add
+ :type to_add: list[splitio.models.splits.Split]
+ :param to_delete: List of feature flags to delete
+ :type to_delete: list[splitio.models.splits.Split]
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ pass
+# try:
+# split = self.get(feature_flag_name)
+# if not split:
+# _LOGGER.warning("Tried to delete nonexistant split %s. Skipping", feature_flag_name)
+# return False
+# self._pluggable_adapter.delete(self._prefix.format(feature_flag_name=feature_flag_name))
+# self._decrease_traffic_type_count(split.traffic_type_name)
+# return True
+# except Exception:
+# _LOGGER.error('Error removing split from storage')
+# _LOGGER.debug('Error: ', exc_info=True)
+# return False
+
+ def get_change_number(self):
+ """
+ Retrieve latest feature flag change number.
+
+ :rtype: int
+ """
+ pass
+
+ # TODO: To be added when producer mode is aupported
+# def _set_change_number(self, new_change_number):
+ """
+ Set the latest change number.
+
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+# pass
+# try:
+# self._pluggable_adapter.set(self._split_till_prefix, new_change_number)
+# except Exception:
+# _LOGGER.error('Error setting change number in split storage')
+# _LOGGER.debug('Error: ', exc_info=True)
+# return None
+
+ def get_split_names(self):
+ """
+ Retrieve a list of all feature flag names.
+
+ :return: List of feature flag names.
+ :rtype: list(str)
+ """
+ pass
+
+ def traffic_type_exists(self, traffic_type_name):
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
+
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
+
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
+ """
+ pass
+
+ def kill_locally(self, feature_flag_name, default_treatment, change_number):
+ """
+ Local kill for feature flag
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ pass
+ # TODO: To be added when producer mode is aupported
+# try:
+# split = self.get(feature_flag_name)
+# if not split:
+# return
+# if self.get_change_number() > change_number:
+# return
+# split.local_kill(default_treatment, change_number)
+# self._pluggable_adapter.set(self._prefix.format(feature_flag_name=feature_flag_name), split.to_json())
+# except Exception:
+# _LOGGER.error('Error updating split in storage')
+# _LOGGER.debug('Error: ', exc_info=True)
+
+ # TODO: To be added when producer mode is aupported
+# def _increase_traffic_type_count(self, traffic_type_name):
+# """
+# Increase by one the count for a specific traffic type name.
+#
+# :param traffic_type_name: Traffic type to increase the count.
+# :type traffic_type_name: str
+#
+# :return: existing count of traffic type
+# :rtype: int
+# """
+# try:
+# return self._pluggable_adapter.increment(self._traffic_type_prefix.format(traffic_type_name=traffic_type_name), 1)
+# except Exception:
+# _LOGGER.error('Error updating traffic type count in split storage')
+# _LOGGER.debug('Error: ', exc_info=True)
+# return None
+
+ # TODO: To be added when producer mode is aupported
+# def _decrease_traffic_type_count(self, traffic_type_name):
+# """
+# Decrease by one the count for a specific traffic type name.
+#
+# :param traffic_type_name: Traffic type to decrease the count.
+# :type traffic_type_name: str
+#
+# :return: existing count of traffic type
+# :rtype: int
+# """
+# try:
+# return_count = self._pluggable_adapter.decrement(self._traffic_type_prefix.format(traffic_type_name=traffic_type_name), 1)
+# if return_count == 0:
+# self._pluggable_adapter.delete(self._traffic_type_prefix.format(traffic_type_name=traffic_type_name))
+# except Exception:
+# _LOGGER.error('Error updating traffic type count in split storage')
+# _LOGGER.debug('Error: ', exc_info=True)
+# return None
+
+ def get_all_splits(self):
+ """
+ Return all the feature flags.
+
+ :return: List of all the feature flags.
+ :rtype: list
+ """
+ pass
+
+ def is_valid_traffic_type(self, traffic_type_name):
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
+
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
+
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
+ """
+ pass
+
+class PluggableSplitStorage(PluggableSplitStorageBase):
+ """InMemory implementation of a feature flag storage."""
+
+ def __init__(self, pluggable_adapter, prefix=None, config_flag_sets=[]):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ PluggableSplitStorageBase.__init__(self, pluggable_adapter, prefix)
+
+ def get(self, feature_flag_name):
+ """
+ Retrieve a feature flag.
+
+ :param feature_flag_name: Name of the feature to fetch.
+ :type feature_flag_name: str
+
+ :rtype: splitio.models.splits.Split
+ """
+ try:
+ feature_flag = self._pluggable_adapter.get(self._prefix.format(feature_flag_name=feature_flag_name))
+ if not feature_flag:
+ return None
+
+ return splits.from_raw(feature_flag)
+
+ except Exception:
+ _LOGGER.error('Error getting feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def fetch_many(self, feature_flag_names):
+ """
+ Retrieve feature flags.
+
+ :param feature_flag_names: Names of the features to fetch.
+ :type feature_flag_name: list(str)
+
+ :return: A dict with feature flag objects parsed from queue.
+ :rtype: dict(feature_flag_name, splitio.models.splits.Split)
+ """
+ try:
+ prefix_added = [self._prefix.format(feature_flag_name=feature_flag_name) for feature_flag_name in feature_flag_names]
+ return {feature_flag['name']: splits.from_raw(feature_flag) for feature_flag in self._pluggable_adapter.get_many(prefix_added)}
+
+ except Exception:
+ _LOGGER.error('Error getting feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def get_feature_flags_by_sets(self, flag_sets):
+ """
+ Retrieve feature flags by flag set.
+ :param flag_sets: List of flag sets to fetch.
+ :type flag_sets: list(str)
+ :return: Feature flag names that are tagged with the flag set
+ :rtype: listt(str)
+ """
+ try:
+ sets_to_fetch = get_valid_flag_sets(flag_sets, self.flag_set_filter)
+ if sets_to_fetch == []:
+ return []
+
+ keys = [self._flag_set_prefix.format(flag_set=flag_set) for flag_set in sets_to_fetch]
+ result_sets = []
+ [result_sets.append(set(key)) for key in self._pluggable_adapter.get_many(keys)]
+ return list(combine_valid_flag_sets(result_sets))
+
+ except Exception:
+ _LOGGER.error('Error fetching feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def get_change_number(self):
+ """
+ Retrieve latest feature flag change number.
+
+ :rtype: int
+ """
+ try:
+ return self._pluggable_adapter.get(self._feature_flag_till_prefix)
+
+ except Exception:
+ _LOGGER.error('Error getting change number in feature flag storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def get_split_names(self):
+ """
+ Retrieve a list of all feature flag names.
+
+ :return: List of feature flag names.
+ :rtype: list(str)
+ """
+ try:
+ keys = []
+ for key in self._pluggable_adapter.get_keys_by_prefix(self._prefix[:-self._FEATURE_FLAG_NAME_LENGTH]):
+ if key[-self._TILL_LENGTH:] != 'till':
+ keys.append(key[len(self._prefix[:-self._FEATURE_FLAG_NAME_LENGTH]):])
+ return keys
+
+ except Exception:
+ _LOGGER.error('Error getting feature flag names from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def traffic_type_exists(self, traffic_type_name):
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
+
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
+
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
+ """
+ try:
+ return self._pluggable_adapter.get(self._traffic_type_prefix.format(traffic_type_name=traffic_type_name)) != None
+
+ except Exception:
+ _LOGGER.error('Error getting feature flag info from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def get_all_splits(self):
+ """
+ Return all the feature flags.
+
+ :return: List of all the feature flags.
+ :rtype: list
+ """
+ try:
+ keys = []
+ for key in self._pluggable_adapter.get_keys_by_prefix(self._prefix[:-self._FEATURE_FLAG_NAME_LENGTH]):
+ if key[-self._TILL_LENGTH:] != 'till':
+ keys.append(key)
+ return [splits.from_raw(feature_flag) for feature_flag in self._pluggable_adapter.get_many(keys)]
+
+ except Exception:
+ _LOGGER.error('Error fetching feature flags from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def is_valid_traffic_type(self, traffic_type_name):
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
+
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
+
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
+ """
+ try:
+ return self.traffic_type_exists(traffic_type_name)
+
+ except Exception:
+ _LOGGER.error('Error getting traffic type info from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+class PluggableSplitStorageAsync(PluggableSplitStorageBase):
+ """InMemory async implementation of a feature flag storage."""
+
+ def __init__(self, pluggable_adapter, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ PluggableSplitStorageBase.__init__(self, pluggable_adapter, prefix)
+
+ async def get(self, feature_flag_name):
+ """
+ Retrieve a feature flag.
+
+ :param feature_flag_name: Name of the feature to fetch.
+ :type feature_flag_name: str
+
+ :rtype: splitio.models.splits.Split
+ """
+ try:
+ feature_flag = await self._pluggable_adapter.get(self._prefix.format(feature_flag_name=feature_flag_name))
+ if not feature_flag:
+ return None
+
+ return splits.from_raw(feature_flag)
+
+ except Exception:
+ _LOGGER.error('Error getting feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def fetch_many(self, feature_flag_names):
+ """
+ Retrieve feature flags.
+
+ :param feature_flag_names: Names of the features to fetch.
+ :type feature_flag_name: list(str)
+
+ :return: A dict with feature_flag objects parsed from queue.
+ :rtype: dict(split_feature_flag, splitio.models.splits.Split)
+ """
+ try:
+ prefix_added = [self._prefix.format(feature_flag_name=feature_flag_name) for feature_flag_name in feature_flag_names]
+ return {feature_flag['name']: splits.from_raw(feature_flag) for feature_flag in await self._pluggable_adapter.get_many(prefix_added)}
+
+ except Exception:
+ _LOGGER.error('Error getting feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get_feature_flags_by_sets(self, flag_sets):
+ """
+ Retrieve feature flags by flag set.
+ :param flag_sets: List of flag sets to fetch.
+ :type flag_sets: list(str)
+ :return: Feature flag names that are tagged with the flag set
+ :rtype: listt(str)
+ """
+ try:
+ sets_to_fetch = get_valid_flag_sets(flag_sets, self.flag_set_filter)
+ if sets_to_fetch == []:
+ return []
+
+ keys = [self._flag_set_prefix.format(flag_set=flag_set) for flag_set in sets_to_fetch]
+ result_sets = []
+ [result_sets.append(set(key)) for key in await self._pluggable_adapter.get_many(keys)]
+ return list(combine_valid_flag_sets(result_sets))
+
+ except Exception:
+ _LOGGER.error('Error fetching feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get_change_number(self):
+ """
+ Retrieve latest feature flag change number.
+
+ :rtype: int
+ """
+ try:
+ return await self._pluggable_adapter.get(self._feature_flag_till_prefix)
+
+ except Exception:
+ _LOGGER.error('Error getting change number in feature flag storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get_split_names(self):
+ """
+ Retrieve a list of all feature flag names.
+
+ :return: List of feature flag names.
+ :rtype: list(str)
+ """
+ try:
+ keys = []
+ for key in await self._pluggable_adapter.get_keys_by_prefix(self._prefix[:-self._FEATURE_FLAG_NAME_LENGTH]):
+ if key[-self._TILL_LENGTH:] != 'till':
+ keys.append(key[len(self._prefix[:-self._FEATURE_FLAG_NAME_LENGTH]):])
+ return keys
+
+ except Exception:
+ _LOGGER.error('Error getting feature flag names from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def traffic_type_exists(self, traffic_type_name):
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
+
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
+
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
+ """
+ try:
+ return await self._pluggable_adapter.get(self._traffic_type_prefix.format(traffic_type_name=traffic_type_name)) != None
+
+ except Exception:
+ _LOGGER.error('Error getting traffic type info from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get_all_splits(self):
+ """
+ Return all the feature flags.
+
+ :return: List of all the feature flags.
+ :rtype: list
+ """
+ try:
+ keys = []
+ for key in await self._pluggable_adapter.get_keys_by_prefix(self._prefix[:-self._FEATURE_FLAG_NAME_LENGTH]):
+ if key[-self._TILL_LENGTH:] != 'till':
+ keys.append(key)
+ return [splits.from_raw(feature_flag) for feature_flag in await self._pluggable_adapter.get_many(keys)]
+
+ except Exception:
+ _LOGGER.error('Error fetching feature flags from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def is_valid_traffic_type(self, traffic_type_name):
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
+
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
+
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
+ """
+ try:
+ return await self.traffic_type_exists(traffic_type_name)
+
+ except Exception:
+ _LOGGER.error('Error getting feature flag info from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+class PluggableSegmentStorageBase(SegmentStorage):
+ """Pluggable async implementation of segment storage."""
+ _SEGMENT_NAME_LENGTH = 14
+ _TILL_LENGTH = 4
+
+ def __init__(self, pluggable_adapter, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ self._pluggable_adapter = pluggable_adapter
+ self._prefix = "SPLITIO.segment.{segment_name}"
+ self._segment_till_prefix = "SPLITIO.segment.{segment_name}.till"
+ if prefix is not None:
+ self._prefix = prefix + "." + self._prefix
+ self._segment_till_prefix = prefix + "." + self._segment_till_prefix
+
+ def update(self, segment_name, to_add, to_remove, change_number=None):
+ """
+ Update a segment. Create it if it doesn't exist.
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+ :param to_add: Set of members to add to the segment.
+ :type to_add: set
+ :param to_remove: List of members to remove from the segment.
+ :type to_remove: Set
+ """
+ pass
+ # TODO: To be added when producer mode is aupported
+# try:
+# if to_add is not None:
+# self._pluggable_adapter.add_items(self._prefix.format(segment_name=segment_name), to_add)
+# if to_remove is not None:
+# self._pluggable_adapter.remove_items(self._prefix.format(segment_name=segment_name), to_remove)
+# if change_number is not None:
+# self._pluggable_adapter.set(self._segment_till_prefix.format(segment_name=segment_name), change_number)
+# except Exception:
+# _LOGGER.error('Error updating segment storage')
+# _LOGGER.debug('Error: ', exc_info=True)
+
+ def set_change_number(self, segment_name, change_number):
+ """
+ Store a segment change number.
+
+ :param segment_name: segment name
+ :type segment_name: str
+ :param change_number: change number
+ :type segment_name: int
+ """
+ pass
+ # TODO: To be added when producer mode is aupported
+# try:
+# self._pluggable_adapter.set(self._segment_till_prefix.format(segment_name=segment_name), change_number)
+# except Exception:
+# _LOGGER.error('Error updating segment change number')
+# _LOGGER.debug('Error: ', exc_info=True)
+
+ def get_change_number(self, segment_name):
+ """
+ Get a segment change number.
+
+ :param segment_name: segment name
+ :type segment_name: str
+
+ :return: change number
+ :rtype: int
+ """
+ pass
+
+ def get_segment_names(self):
+ """
+ Get list of segment names.
+
+ :return: list of segment names
+ :rtype: str[]
+ """
+ pass
+
+ # TODO: To be added in the future because this data is not being sent by telemetry in consumer/synchronizer mode
+# def get_keys(self, segment_name):
+# """
+# Get keys of a segment.
+#
+# :param segment_name: segment name
+# :type segment_name: str
+#
+# :return: list of segment keys
+# :rtype: str[]
+# """
+# try:
+# return list(self._pluggable_adapter.get(self._prefix.format(segment_name=segment_name)))
+# except Exception:
+# _LOGGER.error('Error getting segments keys')
+# _LOGGER.debug('Error: ', exc_info=True)
+# return None
+
+ def segment_contains(self, segment_name, key):
+ """
+ Check if segment contains a key
+
+ :param segment_name: segment name
+ :type segment_name: str
+ :param key: key
+ :type key: str
+
+ :return: True if found, otherwise False
+ :rtype: bool
+ """
+ pass
+
+ def get_segment_keys_count(self):
+ """
+ Get count of all keys in segments.
+
+ :return: keys count
+ :rtype: int
+ """
+ pass
+ # TODO: To be added when producer mode is aupported
+# try:
+# return sum([self._pluggable_adapter.get_items_count(key) for key in self._pluggable_adapter.get_keys_by_prefix(self._prefix)])
+# except Exception:
+# _LOGGER.error('Error getting segment keys')
+# _LOGGER.debug('Error: ', exc_info=True)
+# return None
+
+ def get(self, segment_name):
+ """
+ Get a segment
+
+ :param segment_name: segment name
+ :type segment_name: str
+
+ :return: segment object
+ :rtype: splitio.models.segments.Segment
+ """
+ pass
+
+ def put(self, segment):
+ """
+ Store a segment.
+
+ :param segment: Segment to store.
+ :type segment: splitio.models.segment.Segment
+ """
+ pass
+ # TODO: To be added when producer mode is aupported
+# try:
+# self._pluggable_adapter.add_items(self._prefix.format(segment_name=segment.name), list(segment.keys))
+# if segment.change_number is not None:
+# self._pluggable_adapter.set(self._segment_till_prefix.format(segment_name=segment.name), segment.change_number)
+# except Exception:
+# _LOGGER.error('Error updating segment storage')
+# _LOGGER.debug('Error: ', exc_info=True)
+
+
+class PluggableSegmentStorage(PluggableSegmentStorageBase):
+ """Pluggable implementation of segment storage."""
+
+ def __init__(self, pluggable_adapter, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ PluggableSegmentStorageBase.__init__(self, pluggable_adapter, prefix)
+
+ def get_change_number(self, segment_name):
+ """
+ Get a segment change number.
+
+ :param segment_name: segment name
+ :type segment_name: str
+
+ :return: change number
+ :rtype: int
+ """
+ try:
+ return self._pluggable_adapter.get(self._segment_till_prefix.format(segment_name=segment_name))
+
+ except Exception:
+ _LOGGER.error('Error fetching segment change number')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def get_segment_names(self):
+ """
+ Get list of segment names.
+
+ :return: list of segment names
+ :rtype: str[]
+ """
+ try:
+ keys = []
+ for key in self._pluggable_adapter.get_keys_by_prefix(self._prefix[:-self._SEGMENT_NAME_LENGTH]):
+ if key[-self._TILL_LENGTH:] != 'till':
+ keys.append(key[len(self._prefix[:-self._SEGMENT_NAME_LENGTH]):])
+ return keys
+
+ except Exception:
+ _LOGGER.error('Error getting segments')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def segment_contains(self, segment_name, key):
+ """
+ Check if segment contains a key
+
+ :param segment_name: segment name
+ :type segment_name: str
+ :param key: key
+ :type key: str
+
+ :return: True if found, otherwise False
+ :rtype: bool
+ """
+ try:
+ return self._pluggable_adapter.item_contains(self._prefix.format(segment_name=segment_name), key)
+
+ except Exception:
+ _LOGGER.error('Error checking segment key')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return False
+
+ def get(self, segment_name):
+ """
+ Get a segment
+
+ :param segment_name: segment name
+ :type segment_name: str
+
+ :return: segment object
+ :rtype: splitio.models.segments.Segment
+ """
+ try:
+ return segments.from_raw({'name': segment_name, 'added': self._pluggable_adapter.get_items(self._prefix.format(segment_name=segment_name)), 'removed': [], 'till': self._pluggable_adapter.get(self._segment_till_prefix.format(segment_name=segment_name))})
+
+ except Exception:
+ _LOGGER.error('Error getting segment')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+class PluggableSegmentStorageAsync(PluggableSegmentStorageBase):
+ """Pluggable async implementation of segment storage."""
+
+ def __init__(self, pluggable_adapter, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ PluggableSegmentStorageBase.__init__(self, pluggable_adapter, prefix)
+
+ async def get_change_number(self, segment_name):
+ """
+ Get a segment change number.
+
+ :param segment_name: segment name
+ :type segment_name: str
+
+ :return: change number
+ :rtype: int
+ """
+ try:
+ return await self._pluggable_adapter.get(self._segment_till_prefix.format(segment_name=segment_name))
+
+ except Exception:
+ _LOGGER.error('Error fetching segment change number')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get_segment_names(self):
+ """
+ Get list of segment names.
+
+ :return: list of segment names
+ :rtype: str[]
+ """
+ try:
+ keys = []
+ for key in await self._pluggable_adapter.get_keys_by_prefix(self._prefix[:-self._SEGMENT_NAME_LENGTH]):
+ if key[-self._TILL_LENGTH:] != 'till':
+ keys.append(key[len(self._prefix[:-self._SEGMENT_NAME_LENGTH]):])
+ return keys
+
+ except Exception:
+ _LOGGER.error('Error getting segments')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def segment_contains(self, segment_name, key):
+ """
+ Check if segment contains a key
+
+ :param segment_name: segment name
+ :type segment_name: str
+ :param key: key
+ :type key: str
+
+ :return: True if found, otherwise False
+ :rtype: bool
+ """
+ try:
+ return await self._pluggable_adapter.item_contains(self._prefix.format(segment_name=segment_name), key)
+
+ except Exception:
+ _LOGGER.error('Error checking segment key')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get(self, segment_name):
+ """
+ Get a segment
+
+ :param segment_name: segment name
+ :type segment_name: str
+
+ :return: segment object
+ :rtype: splitio.models.segments.Segment
+ """
+ try:
+ return segments.from_raw({'name': segment_name, 'added': await self._pluggable_adapter.get_items(self._prefix.format(segment_name=segment_name)), 'removed': [], 'till': await self._pluggable_adapter.get(self._segment_till_prefix.format(segment_name=segment_name))})
+
+ except Exception:
+ _LOGGER.error('Error getting segment')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+class PluggableImpressionsStorageBase(ImpressionStorage):
+ """Pluggable Impressions storage class."""
+
+ IMPRESSIONS_KEY_DEFAULT_TTL = 3600
+
+ def __init__(self, pluggable_adapter, sdk_metadata, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ self._pluggable_adapter = pluggable_adapter
+ self._sdk_metadata = {
+ 's': sdk_metadata.sdk_version,
+ 'n': sdk_metadata.instance_name,
+ 'i': sdk_metadata.instance_ip,
+ }
+ self._impressions_queue_key = 'SPLITIO.impressions'
+ if prefix is not None:
+ self._impressions_queue_key = prefix + "." + self._impressions_queue_key
+
+ def _wrap_impressions(self, impressions):
+ """
+ Wrap impressions to be stored in storage
+
+ :param impressions: Impression to add to the queue.
+ :type impressions: splitio.models.impressions.Impression
+
+ :return: Processed impressions.
+ :rtype: list[splitio.models.impressions.Impression]
+ """
+ bulk_impressions = []
+ for impression in impressions:
+ if isinstance(impression, Impression):
+ to_store = {
+ 'm': self._sdk_metadata,
+ 'i': {
+ 'k': impression.matching_key,
+ 'b': impression.bucketing_key,
+ 'f': impression.feature_name,
+ 't': impression.treatment,
+ 'r': impression.label,
+ 'c': impression.change_number,
+ 'm': impression.time,
+ 'properties': impression.properties
+ }
+ }
+ bulk_impressions.append(json.dumps(to_store))
+ return bulk_impressions
+
+ def put(self, impressions):
+ """
+ Add an impression to the pluggable storage.
+
+ :param impressions: Impression to add to the queue.
+ :type impressions: splitio.models.impressions.Impression
+
+ :return: Whether the impression has been added or not.
+ :rtype: bool
+ """
+ pass
+
+ def expire_key(self, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ pass
+
+ def pop_many(self, count):
+ """
+ Pop the oldest N events from storage.
+
+ :param count: Number of events to pop.
+ :type count: int
+ """
+ raise NotImplementedError('Only consumer mode is supported.')
+
+ def clear(self):
+ """
+ Clear data.
+ """
+ raise NotImplementedError('Only consumer mode is supported.')
+
+
+class PluggableImpressionsStorage(PluggableImpressionsStorageBase):
+ """Pluggable Impressions storage class."""
+
+ def __init__(self, pluggable_adapter, sdk_metadata, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ PluggableImpressionsStorageBase.__init__(self, pluggable_adapter, sdk_metadata, prefix)
+
+ def put(self, impressions):
+ """
+ Add an impression to the pluggable storage.
+
+ :param impressions: Impression to add to the queue.
+ :type impressions: splitio.models.impressions.Impression
+
+ :return: Whether the impression has been added or not.
+ :rtype: bool
+ """
+ bulk_impressions = self._wrap_impressions(impressions)
+ try:
+ total_keys = self._pluggable_adapter.push_items(self._impressions_queue_key, *bulk_impressions)
+ self.expire_key(total_keys, len(bulk_impressions))
+ return True
+
+ except Exception:
+ _LOGGER.error('Something went wrong when trying to add impression to storage')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ def expire_key(self, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ self._pluggable_adapter.expire(self._impressions_queue_key, self.IMPRESSIONS_KEY_DEFAULT_TTL)
+
+
+class PluggableImpressionsStorageAsync(PluggableImpressionsStorageBase):
+ """Pluggable Impressions storage class."""
+
+ def __init__(self, pluggable_adapter, sdk_metadata, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ PluggableImpressionsStorageBase.__init__(self, pluggable_adapter, sdk_metadata, prefix)
+
+ async def put(self, impressions):
+ """
+ Add an impression to the pluggable storage.
+
+ :param impressions: Impression to add to the queue.
+ :type impressions: splitio.models.impressions.Impression
+
+ :return: Whether the impression has been added or not.
+ :rtype: bool
+ """
+ bulk_impressions = self._wrap_impressions(impressions)
+ try:
+ total_keys = await self._pluggable_adapter.push_items(self._impressions_queue_key, *bulk_impressions)
+ await self.expire_key(total_keys, len(bulk_impressions))
+ return True
+
+ except Exception:
+ _LOGGER.error('Something went wrong when trying to add impression to storage')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
+
+ async def expire_key(self, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ await self._pluggable_adapter.expire(self._impressions_queue_key, self.IMPRESSIONS_KEY_DEFAULT_TTL)
+
+
+class PluggableEventsStorageBase(EventStorage):
+ """Pluggable Event storage class."""
+
+ _EVENTS_KEY_DEFAULT_TTL = 3600
+
+ def __init__(self, pluggable_adapter, sdk_metadata, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ self._pluggable_adapter = pluggable_adapter
+ self._sdk_metadata = {
+ 's': sdk_metadata.sdk_version,
+ 'n': sdk_metadata.instance_name,
+ 'i': sdk_metadata.instance_ip,
+ }
+ self._events_queue_key = 'SPLITIO.events'
+ if prefix is not None:
+ self._events_queue_key = prefix + "." + self._events_queue_key
+
+ def _wrap_events(self, events):
+ return [
+ json.dumps({
+ 'e': {
+ 'key': e.event.key,
+ 'trafficTypeName': e.event.traffic_type_name,
+ 'eventTypeId': e.event.event_type_id,
+ 'value': e.event.value,
+ 'timestamp': e.event.timestamp,
+ 'properties': e.event.properties,
+ },
+ 'm': self._sdk_metadata
+ })
+ for e in events
+ ]
+
+ def put(self, events):
+ """
+ Add an event to the redis storage.
+
+ :param event: Event to add to the queue.
+ :type event: splitio.models.events.Event
+
+ :return: Whether the event has been added or not.
+ :rtype: bool
+ """
+ pass
+
+ def expire_key(self, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ pass
+
+ def pop_many(self, count):
+ """
+ Pop the oldest N events from storage.
+
+ :param count: Number of events to pop.
+ :type count: int
+ """
+ raise NotImplementedError('Only redis-consumer mode is supported.')
+
+ def clear(self):
+ """
+ Clear data.
+ """
+ raise NotImplementedError('Not supported for redis.')
+
+class PluggableEventsStorage(PluggableEventsStorageBase):
+ """Pluggable Event storage class."""
+
+ def __init__(self, pluggable_adapter, sdk_metadata, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ PluggableEventsStorageBase.__init__(self, pluggable_adapter, sdk_metadata, prefix)
+
+ def put(self, events):
+ """
+ Add an event to the redis storage.
+
+ :param event: Event to add to the queue.
+ :type event: splitio.models.events.Event
+
+ :return: Whether the event has been added or not.
+ :rtype: bool
+ """
+ to_store = self._wrap_events(events)
+ try:
+ total_keys = self._pluggable_adapter.push_items(self._events_queue_key, *to_store)
+ self.expire_key(total_keys, len(to_store))
+ return True
+
+ except Exception:
+ _LOGGER.error('Something went wrong when trying to add event to redis')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return False
+
+ def expire_key(self, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ self._pluggable_adapter.expire(self._events_queue_key, self._EVENTS_KEY_DEFAULT_TTL)
+
+
+class PluggableEventsStorageAsync(PluggableEventsStorageBase):
+ """Pluggable Event storage class."""
+
+ def __init__(self, pluggable_adapter, sdk_metadata, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ PluggableEventsStorageBase.__init__(self, pluggable_adapter, sdk_metadata, prefix)
+
+ async def put(self, events):
+ """
+ Add an event to the redis storage.
+
+ :param event: Event to add to the queue.
+ :type event: splitio.models.events.Event
+
+ :return: Whether the event has been added or not.
+ :rtype: bool
+ """
+ to_store = self._wrap_events(events)
+ try:
+ total_keys = await self._pluggable_adapter.push_items(self._events_queue_key, *to_store)
+ await self.expire_key(total_keys, len(to_store))
+ return True
+
+ except Exception:
+ _LOGGER.error('Something went wrong when trying to add event to redis')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return False
+
+ async def expire_key(self, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ await self._pluggable_adapter.expire(self._events_queue_key, self._EVENTS_KEY_DEFAULT_TTL)
+
+
+class PluggableTelemetryStorageBase(TelemetryStorage):
+ """Pluggable telemetry storage class."""
+
+ _TELEMETRY_KEY_DEFAULT_TTL = 3600
+
+ def _reset_config_tags(self):
+ """Reset config tags."""
+ pass
+
+ def add_config_tag(self, tag):
+ """
+ Record tag string.
+
+ :param tag: tag to be added
+ :type tag: str
+ """
+ pass
+
+ def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """
+ initilize telemetry objects
+
+ :param config: factory configuration parameters
+ :type config: Dict
+ :param extra_config: any extra configs
+ :type extra_config: Dict
+ """
+ pass
+
+ def pop_config_tags(self):
+ """Get and reset configs."""
+ pass
+
+ def push_config_stats(self):
+ """push config stats to storage."""
+ pass
+
+ def _format_config_stats(self):
+ """format only selected config stats to json"""
+ pass
+
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """
+ Record active and redundant factories.
+
+ :param active_factory_count: active factory count
+ :type active_factory_count: int
+ :param redundant_factory_count: redundant factory count
+ :type redundant_factory_count: int
+ """
+ pass
+
+ def record_latency(self, method, bucket):
+ """
+ record latency data
+
+ :param method: method name
+ :type method: string
+ :param latency: latency
+ :type latency: int64
+ """
+ pass
+
+ def record_exception(self, method):
+ """
+ record an exception
+
+ :param method: method name
+ :type method: string
+ """
+ pass
+
+ def record_not_ready_usage(self):
+ """Not implemented"""
+ pass
+
+ def record_bur_time_out(self):
+ """Not implemented"""
+ pass
+
+ def record_impression_stats(self, data_type, count):
+ """Not implemented"""
+ pass
+
+ def expire_latency_keys(self, total_keys, inserted):
+ """
+ Set expire ttl for a latency key in storage
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ pass
+
+ def expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
+ """
+ Set expire ttl for a key in storage if total keys equal inserted
+
+ :param queue_keys: key to be set
+ :type queue_keys: str
+ :param ey_default_ttl: ttl value
+ :type ey_default_ttl: int
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ pass
+
+
+class PluggableTelemetryStorage(PluggableTelemetryStorageBase):
+ """Pluggable telemetry storage class."""
+
+ def __init__(self, pluggable_adapter, sdk_metadata, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ self._pluggable_adapter = pluggable_adapter
+ self._sdk_metadata = sdk_metadata.sdk_version + '/' + sdk_metadata.instance_name + '/' + sdk_metadata.instance_ip
+ self._telemetry_config_key = 'SPLITIO.telemetry.init'
+ self._telemetry_latencies_key = 'SPLITIO.telemetry.latencies'
+ self._telemetry_exceptions_key = 'SPLITIO.telemetry.exceptions'
+ if prefix is not None:
+ self._telemetry_config_key = prefix + "." + self._telemetry_config_key
+ self._telemetry_latencies_key = prefix + "." + self._telemetry_latencies_key
+ self._telemetry_exceptions_key = prefix + "." + self._telemetry_exceptions_key
+
+ self._lock = threading.RLock()
+ self._reset_config_tags()
+ self._method_latencies = MethodLatencies()
+ self._method_exceptions = MethodExceptions()
+ self._tel_config = TelemetryConfig()
+
+ def _reset_config_tags(self):
+ """Reset config tags."""
+ with self._lock:
+ self._config_tags = []
+
+ def add_config_tag(self, tag):
+ """
+ Record tag string.
+
+ :param tag: tag to be added
+ :type tag: str
+ """
+ with self._lock:
+ if len(self._config_tags) < MAX_TAGS:
+ self._config_tags.append(tag)
+
+ def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """
+ initilize telemetry objects
+
+ :param config: factory configuration parameters
+ :type config: Dict
+ :param extra_config: any extra configs
+ :type extra_config: Dict
+ """
+ self._tel_config.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
+
+ def pop_config_tags(self):
+ """Get and reset configs."""
+ with self._lock:
+ tags = self._config_tags
+ self._reset_config_tags()
+ return tags
+
+ def push_config_stats(self):
+ """push config stats to storage."""
+ self._pluggable_adapter.set(self._telemetry_config_key + "::" + self._sdk_metadata, str(self._format_config_stats()))
+
+ def _format_config_stats(self):
+ """format only selected config stats to json"""
+ config_stats = self._tel_config.get_stats()
+ return json.dumps({
+ 'aF': config_stats['aF'],
+ 'rF': config_stats['rF'],
+ 'sT': config_stats['sT'],
+ 'oM': config_stats['oM'],
+ 't': self.pop_config_tags()
+ })
+
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """
+ Record active and redundant factories.
+
+ :param active_factory_count: active factory count
+ :type active_factory_count: int
+ :param redundant_factory_count: redundant factory count
+ :type redundant_factory_count: int
+ """
+ self._tel_config.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+
+ def record_latency(self, method, bucket):
+ """
+ record latency data
+
+ :param method: method name
+ :type method: string
+ :param latency: latency
+ :type latency: int64
+ """
+ latency_key = self._telemetry_latencies_key + '::' + self._sdk_metadata + '/' + method.value + '/' + str(bucket)
+ result = self._pluggable_adapter.increment(latency_key, 1)
+ self.expire_keys(latency_key, self._TELEMETRY_KEY_DEFAULT_TTL, 1, result)
+
+ def record_exception(self, method):
+ """
+ record an exception
+
+ :param method: method name
+ :type method: string
+ """
+ except_key = self._telemetry_exceptions_key + "::" + self._sdk_metadata + '/' + method.value
+ result = self._pluggable_adapter.increment(except_key, 1)
+ self.expire_keys(except_key, self._TELEMETRY_KEY_DEFAULT_TTL, 1, result)
+
+ def expire_latency_keys(self, total_keys, inserted):
+ """
+ Set expire ttl for a latency key in storage
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ self.expire_keys(self._telemetry_latencies_key, self._TELEMETRY_KEY_DEFAULT_TTL, total_keys, inserted)
+
+ def expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
+ """
+ Set expire ttl for a key in storage if total keys equal inserted
+
+ :param queue_keys: key to be set
+ :type queue_keys: str
+ :param ey_default_ttl: ttl value
+ :type ey_default_ttl: int
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ self._pluggable_adapter.expire(queue_key, key_default_ttl)
+
+ def record_bur_time_out(self):
+ """record BUR timeouts"""
+ pass
+
+ def record_ready_time(self, ready_time):
+ """Record ready time."""
+ pass
+
+
+class PluggableTelemetryStorageAsync(PluggableTelemetryStorageBase):
+ """Pluggable telemetry storage class."""
+
+ @classmethod
+ async def create(cls, pluggable_adapter, sdk_metadata, prefix=None):
+ """
+ Class constructor.
+
+ :param pluggable_adapter: Storage client or compliant interface.
+ :type pluggable_adapter: TBD
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ :param prefix: optional, prefix to storage keys
+ :type prefix: str
+ """
+ self = cls()
+ self._pluggable_adapter = pluggable_adapter
+ self._sdk_metadata = sdk_metadata.sdk_version + '/' + sdk_metadata.instance_name + '/' + sdk_metadata.instance_ip
+ self._telemetry_config_key = 'SPLITIO.telemetry.init'
+ self._telemetry_latencies_key = 'SPLITIO.telemetry.latencies'
+ self._telemetry_exceptions_key = 'SPLITIO.telemetry.exceptions'
+ if prefix is not None:
+ self._telemetry_config_key = prefix + "." + self._telemetry_config_key
+ self._telemetry_latencies_key = prefix + "." + self._telemetry_latencies_key
+ self._telemetry_exceptions_key = prefix + "." + self._telemetry_exceptions_key
+
+ self._lock = asyncio.Lock()
+ await self._reset_config_tags()
+ self._method_latencies = await MethodLatenciesAsync.create()
+ self._method_exceptions = await MethodExceptionsAsync.create()
+ self._tel_config = await TelemetryConfigAsync.create()
+ return self
+
+ async def _reset_config_tags(self):
+ """Reset config tags."""
+ async with self._lock:
+ self._config_tags = []
+
+ async def add_config_tag(self, tag):
+ """
+ Record tag string.
+
+ :param tag: tag to be added
+ :type tag: str
+ """
+ async with self._lock:
+ if len(self._config_tags) < MAX_TAGS:
+ self._config_tags.append(tag)
+
+ async def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """
+ initilize telemetry objects
+
+ :param config: factory configuration parameters
+ :type config: Dict
+ :param extra_config: any extra configs
+ :type extra_config: Dict
+ """
+ await self._tel_config.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
+
+ async def pop_config_tags(self):
+ """Get and reset configs."""
+ tags = self._config_tags
+ await self._reset_config_tags()
+ return tags
+
+ async def push_config_stats(self):
+ """push config stats to storage."""
+ await self._pluggable_adapter.set(self._telemetry_config_key + "::" + self._sdk_metadata, str(await self._format_config_stats()))
+
+ async def _format_config_stats(self):
+ """format only selected config stats to json"""
+ config_stats = await self._tel_config.get_stats()
+ return json.dumps({
+ 'aF': config_stats['aF'],
+ 'rF': config_stats['rF'],
+ 'sT': config_stats['sT'],
+ 'oM': config_stats['oM'],
+ 't': await self.pop_config_tags()
+ })
+
+ async def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """
+ Record active and redundant factories.
+
+ :param active_factory_count: active factory count
+ :type active_factory_count: int
+ :param redundant_factory_count: redundant factory count
+ :type redundant_factory_count: int
+ """
+ await self._tel_config.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+
+ async def record_latency(self, method, bucket):
+ """
+ record latency data
+
+ :param method: method name
+ :type method: string
+ :param latency: latency
+ :type latency: int64
+ """
+ latency_key = self._telemetry_latencies_key + '::' + self._sdk_metadata + '/' + method.value + '/' + str(bucket)
+ result = await self._pluggable_adapter.increment(latency_key, 1)
+ await self.expire_keys(latency_key, self._TELEMETRY_KEY_DEFAULT_TTL, 1, result)
+
+ async def record_exception(self, method):
+ """
+ record an exception
+
+ :param method: method name
+ :type method: string
+ """
+ except_key = self._telemetry_exceptions_key + "::" + self._sdk_metadata + '/' + method.value
+ result = await self._pluggable_adapter.increment(except_key, 1)
+ await self.expire_keys(except_key, self._TELEMETRY_KEY_DEFAULT_TTL, 1, result)
+
+ async def expire_latency_keys(self, total_keys, inserted):
+ """
+ Set expire ttl for a latency key in storage
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ await self.expire_keys(self._telemetry_latencies_key, self._TELEMETRY_KEY_DEFAULT_TTL, total_keys, inserted)
+
+ async def expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
+ """
+ Set expire ttl for a key in storage if total keys equal inserted
+
+ :param queue_keys: key to be set
+ :type queue_keys: str
+ :param ey_default_ttl: ttl value
+ :type ey_default_ttl: int
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ await self._pluggable_adapter.expire(queue_key, key_default_ttl)
+
+ async def record_bur_time_out(self):
+ """record BUR timeouts"""
+ pass
+
+ async def record_ready_time(self, ready_time):
+ """Record ready time."""
+ pass
+
+ async def record_not_ready_usage(self):
+ """Not implemented"""
+ pass
+
+ async def record_impression_stats(self, data_type, count):
+ """Not implemented"""
+ pass
diff --git a/splitio/storage/redis.py b/splitio/storage/redis.py
index 3ffa1916..b8fe27ad 100644
--- a/splitio/storage/redis.py
+++ b/splitio/storage/redis.py
@@ -1,110 +1,384 @@
"""Redis storage module."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
import json
import logging
+import threading
from splitio.models.impressions import Impression
-from splitio.models import splits, segments
-from splitio.storage import SplitStorage, SegmentStorage, ImpressionStorage, EventStorage
+from splitio.models import splits, segments, rule_based_segments
+from splitio.models.telemetry import TelemetryConfig, TelemetryConfigAsync
+from splitio.storage import SplitStorage, SegmentStorage, ImpressionStorage, EventStorage, \
+ ImpressionPipelinedStorage, TelemetryStorage, FlagSetsFilter, RuleBasedSegmentsStorage
from splitio.storage.adapters.redis import RedisAdapterException
from splitio.storage.adapters.cache_trait import decorate as add_cache, DEFAULT_MAX_AGE
+from splitio.storage.adapters.cache_trait import LocalMemoryCache, LocalMemoryCacheAsync
+from splitio.util.storage_helper import get_valid_flag_sets, combine_valid_flag_sets
+
+_LOGGER = logging.getLogger(__name__)
+MAX_TAGS = 10
+
+class RedisRuleBasedSegmentsStorage(RuleBasedSegmentsStorage):
+ """Redis-based storage for rule based segments."""
+
+ _RB_SEGMENT_KEY = 'SPLITIO.rbsegment.{segment_name}'
+ _RB_SEGMENT_TILL_KEY = 'SPLITIO.rbsegments.till'
+
+ def __init__(self, redis_client):
+ """
+ Class constructor.
+
+ :param redis_client: Redis client or compliant interface.
+ :type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ """
+ self._redis = redis_client
+ self._pipe = self._redis.pipeline
+ def _get_key(self, segment_name):
+ """
+ Use the provided feature_flag_name to build the appropriate redis key.
-class RedisSplitStorage(SplitStorage):
- """Redis-based storage for splits."""
+ :param feature_flag_name: Name of the feature flag to interact with in redis.
+ :type feature_flag_name: str
- _SPLIT_KEY = 'SPLITIO.split.{split_name}'
- _SPLIT_TILL_KEY = 'SPLITIO.splits.till'
- _TRAFFIC_TYPE_KEY = 'SPLITIO.trafficType.{traffic_type_name}'
+ :return: Redis key.
+ :rtype: str.
+ """
+ return self._RB_SEGMENT_KEY.format(segment_name=segment_name)
+
+ def get(self, segment_name):
+ """
+ Retrieve a rule based segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :rtype: str
+ """
+ try:
+ raw = self._redis.get(self._get_key(segment_name))
+ _LOGGER.debug("Fetchting rule based segment [%s] from redis" % segment_name)
+ _LOGGER.debug(raw)
+ return rule_based_segments.from_raw(json.loads(raw)) if raw is not None else None
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching rule based segment from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def update(self, to_add, to_delete, new_change_number):
+ """
+ Update rule based segment..
+
+ :param to_add: List of rule based segment. to add
+ :type to_add: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param to_delete: List of rule based segment. to delete
+ :type to_delete: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ raise NotImplementedError('Only redis-consumer mode is supported.')
+
+ def get_change_number(self):
+ """
+ Retrieve latest rule based segment change number.
+
+ :rtype: int
+ """
+ try:
+ stored_value = self._redis.get(self._RB_SEGMENT_TILL_KEY)
+ _LOGGER.debug("Fetching rule based segment Change Number from redis: %s" % stored_value)
+ return json.loads(stored_value) if stored_value is not None else None
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching rule based segment change number from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def contains(self, segment_names):
+ """
+ Return whether the segments exists in rule based segment in cache.
+
+ :param segment_names: segment name to validate.
+ :type segment_names: str
+
+ :return: True if segment names exists. False otherwise.
+ :rtype: bool
+ """
+ return set(segment_names).issubset(self.get_segment_names())
+
+ def get_segment_names(self):
+ """
+ Retrieve a list of all rule based segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ try:
+ keys = self._redis.keys(self._get_key('*'))
+ _LOGGER.debug("Fetchting rule based segments names from redis: %s" % keys)
+ return [key.replace(self._get_key(''), '') for key in keys]
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching rule based segments names from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return []
+
+ def get_large_segment_names(self):
+ """
+ Retrieve a list of all excluded large segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ pass
- def __init__(self, redis_client, enable_caching=False, max_age=DEFAULT_MAX_AGE):
+ def fetch_many(self, segment_names):
+ """
+ Retrieve rule based segment.
+
+ :param segment_names: Names of the rule based segments to fetch.
+ :type segment_names: list(str)
+
+ :return: A dict with rule based segment objects parsed from redis.
+ :rtype: dict(segment_name, splitio.models.rule_based_segment.RuleBasedSegment)
+ """
+ to_return = dict()
+ if len(segment_names) == 0:
+ return to_return
+
+ try:
+ keys = [self._get_key(segment_name) for segment_name in segment_names]
+ raw_rbs_segments = self._redis.mget(keys)
+ _LOGGER.debug("Fetchting rule based segment [%s] from redis" % segment_names)
+ _LOGGER.debug(raw_rbs_segments)
+ for i in range(len(raw_rbs_segments)):
+ rbs_segment = None
+ try:
+ rbs_segment = rule_based_segments.from_raw(json.loads(raw_rbs_segments[i]))
+ except (ValueError, TypeError):
+ _LOGGER.error('Could not parse rule based segment.')
+ _LOGGER.debug("Raw rule based segment that failed parsing attempt: %s", raw_rbs_segments[i])
+ to_return[segment_names[i]] = rbs_segment
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching rule based segments from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return to_return
+
+class RedisRuleBasedSegmentsStorageAsync(RuleBasedSegmentsStorage):
+ """Redis-based storage for rule based segments."""
+
+ _RB_SEGMENT_KEY = 'SPLITIO.rbsegment.{segment_name}'
+ _RB_SEGMENT_TILL_KEY = 'SPLITIO.rbsegments.till'
+
+ def __init__(self, redis_client):
"""
Class constructor.
:param redis_client: Redis client or compliant interface.
:type redis_client: splitio.storage.adapters.redis.RedisAdapter
"""
- self._logger = logging.getLogger(self.__class__.__name__)
self._redis = redis_client
- if enable_caching:
- self.get = add_cache(lambda *p, **_: p[0], max_age)(self.get)
- self.is_valid_traffic_type = add_cache(lambda *p, **_: p[0], max_age)(self.is_valid_traffic_type) # pylint: disable=line-too-long
- self.fetch_many = add_cache(lambda *p, **_: frozenset(p[0]), max_age)(self.fetch_many)
+ self._pipe = self._redis.pipeline
- def _get_key(self, split_name):
+ def _get_key(self, segment_name):
"""
- Use the provided split_name to build the appropriate redis key.
+ Use the provided feature_flag_name to build the appropriate redis key.
- :param split_name: Name of the split to interact with in redis.
- :type split_name: str
+ :param feature_flag_name: Name of the feature flag to interact with in redis.
+ :type feature_flag_name: str
:return: Redis key.
:rtype: str.
"""
- return self._SPLIT_KEY.format(split_name=split_name)
+ return self._RB_SEGMENT_KEY.format(segment_name=segment_name)
+
+ async def get(self, segment_name):
+ """
+ Retrieve a rule based segment.
- def _get_traffic_type_key(self, traffic_type_name):
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :rtype: str
"""
- Use the provided split_name to build the appropriate redis key.
+ try:
+ raw = await self._redis.get(self._get_key(segment_name))
+ _LOGGER.debug("Fetchting rule based segment [%s] from redis" % segment_name)
+ _LOGGER.debug(raw)
+ return rule_based_segments.from_raw(json.loads(raw)) if raw is not None else None
- :param split_name: Name of the split to interact with in redis.
- :type split_name: str
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching rule based segment from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
- :return: Redis key.
- :rtype: str.
+ async def update(self, to_add, to_delete, new_change_number):
"""
- return self._TRAFFIC_TYPE_KEY.format(traffic_type_name=traffic_type_name)
+ Update rule based segment..
- def get(self, split_name): # pylint: disable=method-hidden
+ :param to_add: List of rule based segment. to add
+ :type to_add: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param to_delete: List of rule based segment. to delete
+ :type to_delete: list[splitio.models.rule_based_segments.RuleBasedSegment]
+ :param new_change_number: New change number.
+ :type new_change_number: int
"""
- Retrieve a split.
+ raise NotImplementedError('Only redis-consumer mode is supported.')
- :param split_name: Name of the feature to fetch.
- :type split_name: str
+ async def get_change_number(self):
+ """
+ Retrieve latest rule based segment change number.
- :return: A split object parsed from redis if the key exists. None otherwise
- :rtype: splitio.models.splits.Split
+ :rtype: int
"""
try:
- raw = self._redis.get(self._get_key(split_name))
- return splits.from_raw(json.loads(raw)) if raw is not None else None
+ stored_value = await self._redis.get(self._RB_SEGMENT_TILL_KEY)
+ _LOGGER.debug("Fetching rule based segment Change Number from redis: %s" % stored_value)
+ return json.loads(stored_value) if stored_value is not None else None
+
except RedisAdapterException:
- self._logger.error('Error fetching split from storage')
- self._logger.debug('Error: ', exc_info=True)
+ _LOGGER.error('Error fetching rule based segment change number from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
return None
+
+ async def contains(self, segment_names):
+ """
+ Return whether the segments exists in rule based segment in cache.
+
+ :param segment_names: segment name to validate.
+ :type segment_names: str
+
+ :return: True if segment names exists. False otherwise.
+ :rtype: bool
+ """
+ return set(segment_names).issubset(await self.get_segment_names())
+
+ async def get_segment_names(self):
+ """
+ Retrieve a list of all rule based segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ try:
+ keys = await self._redis.keys(self._get_key('*'))
+ _LOGGER.debug("Fetchting rule based segments names from redis: %s" % keys)
+ return [key.replace(self._get_key(''), '') for key in keys]
- def fetch_many(self, split_names):
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching rule based segments names from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return []
+
+ async def get_large_segment_names(self):
+ """
+ Retrieve a list of all excluded large segments names.
+
+ :return: List of segment names.
+ :rtype: list(str)
+ """
+ pass
+
+ async def fetch_many(self, segment_names):
"""
- Retrieve splits.
+ Retrieve rule based segment.
- :param split_names: Names of the features to fetch.
- :type split_name: list(str)
+ :param segment_names: Names of the rule based segments to fetch.
+ :type segment_names: list(str)
- :return: A dict with split objects parsed from redis.
- :rtype: dict(split_name, splitio.models.splits.Split)
+ :return: A dict with rule based segment objects parsed from redis.
+ :rtype: dict(segment_name, splitio.models.rule_based_segment.RuleBasedSegment)
"""
to_return = dict()
+ if len(segment_names) == 0:
+ return to_return
+
try:
- keys = [self._get_key(split_name) for split_name in split_names]
- raw_splits = self._redis.mget(keys)
- for i in range(len(split_names)):
- split = None
+ keys = [self._get_key(segment_name) for segment_name in segment_names]
+ raw_rbs_segments = await self._redis.mget(keys)
+ _LOGGER.debug("Fetchting rule based segment [%s] from redis" % segment_names)
+ _LOGGER.debug(raw_rbs_segments)
+ for i in range(len(raw_rbs_segments)):
+ rbs_segment = None
try:
- split = splits.from_raw(json.loads(raw_splits[i]))
+ rbs_segment = rule_based_segments.from_raw(json.loads(raw_rbs_segments[i]))
except (ValueError, TypeError):
- self._logger.error('Could not parse split.')
- self._logger.debug("Raw split that failed parsing attempt: %s", raw_splits[i])
- to_return[split_names[i]] = split
+ _LOGGER.error('Could not parse rule based segment.')
+ _LOGGER.debug("Raw rule based segment that failed parsing attempt: %s", raw_rbs_segments[i])
+ to_return[segment_names[i]] = rbs_segment
except RedisAdapterException:
- self._logger.error('Error fetching splits from storage')
- self._logger.debug('Error: ', exc_info=True)
+ _LOGGER.error('Error fetching rule based segments from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
return to_return
+class RedisSplitStorageBase(SplitStorage):
+ """Redis-based storage base for feature flags."""
+
+ _FEATURE_FLAG_KEY = 'SPLITIO.split.{feature_flag_name}'
+ _FEATURE_FLAG_TILL_KEY = 'SPLITIO.splits.till'
+ _TRAFFIC_TYPE_KEY = 'SPLITIO.trafficType.{traffic_type_name}'
+ _FLAG_SET_KEY = 'SPLITIO.flagSet.{flag_set}'
+
+ def _get_key(self, feature_flag_name):
+ """
+ Use the provided feature_flag_name to build the appropriate redis key.
+
+ :param feature_flag_name: Name of the feature flag to interact with in redis.
+ :type feature_flag_name: str
+
+ :return: Redis key.
+ :rtype: str.
+ """
+ return self._FEATURE_FLAG_KEY.format(feature_flag_name=feature_flag_name)
+
+ def _get_traffic_type_key(self, traffic_type_name):
+ """
+ Use the provided traffic type name to build the appropriate redis key.
+
+ :param traffic_type: Name of the traffic type to interact with in redis.
+ :type traffic_type_name: str
+
+ :return: Redis key.
+ :rtype: str.
+ """
+ return self._TRAFFIC_TYPE_KEY.format(traffic_type_name=traffic_type_name)
+
+ def _get_flag_set_key(self, flag_set):
+ """
+ Use the provided flag set to build the appropriate redis key.
+ :param flag_set: Name of the flag set to interact with in redis.
+ :type flag_set: str
+ :return: Redis key.
+ :rtype: str.
+ """
+ return self._FLAG_SET_KEY.format(flag_set=flag_set)
+
+ def get(self, feature_flag_name): # pylint: disable=method-hidden
+ """
+ Retrieve a feature flag.
+
+ :param feature_flag_name: Name of the feature to fetch.
+ :type feature_flag_name: str
+
+ :return: A feature flag object parsed from redis if the key exists. None otherwise
+ :rtype: splitio.models.splits.Split
+ """
+ pass
+
+ def fetch_many(self, feature_flag_names):
+ """
+ Retrieve feature flags.
+
+ :param feature_flag_names: Names of the features to fetch.
+ :type feature_flag_name: list(str)
+
+ :return: A dict with feature flag objects parsed from redis.
+ :rtype: dict(feature_flag_name, splitio.models.splits.Split)
+ """
+ pass
+
def is_valid_traffic_type(self, traffic_type_name): # pylint: disable=method-hidden
"""
- Return whether the traffic type exists in at least one split in cache.
+ Return whether the traffic type exists in at least one feature flag in cache.
:param traffic_type_name: Traffic type to validate.
:type traffic_type_name: str
@@ -112,234 +386,968 @@ def is_valid_traffic_type(self, traffic_type_name): # pylint: disable=method-hi
:return: True if the traffic type is valid. False otherwise.
:rtype: bool
"""
+ pass
+
+ def update(self, to_add, to_delete, new_change_number):
+ """
+ Update feature flag storage.
+
+ :param to_add: List of feature flags to add
+ :type to_add: list[splitio.models.splits.Split]
+ :param to_delete: List of feature flags to delete
+ :type to_delete: list[splitio.models.splits.Split]
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ raise NotImplementedError('Only redis-consumer mode is supported.')
+
+ def get_change_number(self):
+ """
+ Retrieve latest feature flag change number.
+
+ :rtype: int
+ """
+ pass
+
+ def get_split_names(self):
+ """
+ Retrieve a list of all feature flag names.
+
+ :return: List of feature flag names.
+ :rtype: list(str)
+ """
+ pass
+
+ def get_splits_count(self):
+ """
+ Return feature flags count.
+
+ :rtype: int
+ """
+ return 0
+
+ def get_all_splits(self):
+ """
+ Return all the feature flags in cache.
+ :return: List of all feature flags in cache.
+ :rtype: list(splitio.models.splits.Split)
+ """
+ pass
+
+ def kill_locally(self, feature_flag_name, default_treatment, change_number):
+ """
+ Local kill for feature flag
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ raise NotImplementedError('Not supported for redis.')
+
+
+class RedisSplitStorage(RedisSplitStorageBase):
+ """Redis-based storage for feature flags."""
+
+ def __init__(self, redis_client, enable_caching=False, max_age=DEFAULT_MAX_AGE, config_flag_sets=[]):
+ """
+ Class constructor.
+
+ :param redis_client: Redis client or compliant interface.
+ :type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ """
+ self._redis = redis_client
+ self.flag_set_filter = FlagSetsFilter(config_flag_sets)
+ self._pipe = self._redis.pipeline
+ if enable_caching:
+ self.get = add_cache(lambda *p, **_: p[0], max_age)(self.get)
+ self.is_valid_traffic_type = add_cache(lambda *p, **_: p[0], max_age)(self.is_valid_traffic_type) # pylint: disable=line-too-long
+ self.fetch_many = add_cache(lambda *p, **_: frozenset(p[0]), max_age)(self.fetch_many)
+
+ def get(self, feature_flag_name): # pylint: disable=method-hidden
+ """
+ Retrieve a feature flag.
+
+ :param feature_flag_name: Name of the feature to fetch.
+ :type feature_flag_name: str
+
+ :return: A feature flag object parsed from redis if the key exists. None otherwise
+ :rtype: splitio.models.splits.Split
+ """
try:
- raw = self._redis.get(self._get_traffic_type_key(traffic_type_name))
- count = json.loads(raw) if raw else 0
- return count > 0
+ raw = self._redis.get(self._get_key(feature_flag_name))
+ _LOGGER.debug("Fetchting feature flag [%s] from redis" % feature_flag_name)
+ _LOGGER.debug(raw)
+ return splits.from_raw(json.loads(raw)) if raw is not None else None
+
except RedisAdapterException:
- self._logger.error('Error fetching split from storage')
- self._logger.debug('Error: ', exc_info=True)
- return False
+ _LOGGER.error('Error fetching feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
- def put(self, split):
+ def get_feature_flags_by_sets(self, flag_sets):
+ """
+ Retrieve feature flags by flag set.
+ :param flag_set: Names of the flag set to fetch.
+ :type flag_set: str
+ :return: Feature flag names that are tagged with the flag set
+ :rtype: listt(str)
"""
- Store a split.
+ try:
+ sets_to_fetch = get_valid_flag_sets(flag_sets, self.flag_set_filter)
+ if sets_to_fetch == []:
+ return []
+
+ keys = [self._get_flag_set_key(flag_set) for flag_set in sets_to_fetch]
+ pipe = self._pipe()
+ for key in keys:
+ pipe.smembers(key)
+ result_sets = pipe.execute()
+ _LOGGER.debug("Fetchting Feature flags by set [%s] from redis" % (keys))
+ _LOGGER.debug(result_sets)
+ return list(combine_valid_flag_sets(result_sets))
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
- :param split: Split object to store
- :type split_name: splitio.models.splits.Split
+ def fetch_many(self, feature_flag_names):
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ Retrieve feature flags.
+
+ :param feature_flag_names: Names of the features to fetch.
+ :type feature_flag_name: list(str)
- def remove(self, split_name):
+ :return: A dict with feature flag objects parsed from redis.
+ :rtype: dict(feature_flag_name, splitio.models.splits.Split)
"""
- Remove a split from storage.
+ to_return = dict()
+ try:
+ keys = [self._get_key(feature_flag_name) for feature_flag_name in feature_flag_names]
+ raw_feature_flags = self._redis.mget(keys)
+ _LOGGER.debug("Fetchting feature flags [%s] from redis" % feature_flag_names)
+ _LOGGER.debug(raw_feature_flags)
+ for i in range(len(feature_flag_names)):
+ feature_flag = None
+ try:
+ feature_flag = splits.from_raw(json.loads(raw_feature_flags[i]))
+ except (ValueError, TypeError):
+ _LOGGER.error('Could not parse feature flag.')
+ _LOGGER.debug("Raw feature flag that failed parsing attempt: %s", raw_feature_flags[i])
+ to_return[feature_flag_names[i]] = feature_flag
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching feature flags from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return to_return
+
+ def is_valid_traffic_type(self, traffic_type_name): # pylint: disable=method-hidden
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
- :param split_name: Name of the feature to remove.
- :type split_name: str
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
- :return: True if the split was found and removed. False otherwise.
+ :return: True if the traffic type is valid. False otherwise.
:rtype: bool
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ try:
+ raw = self._redis.get(self._get_traffic_type_key(traffic_type_name))
+ count = json.loads(raw) if raw else 0
+ _LOGGER.debug("Fetching TrafficType [%s] count in redis: %s" % (traffic_type_name, count))
+ return count > 0
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return False
def get_change_number(self):
"""
- Retrieve latest split change number.
+ Retrieve latest feature flag change number.
:rtype: int
"""
try:
- stored_value = self._redis.get(self._SPLIT_TILL_KEY)
+ stored_value = self._redis.get(self._FEATURE_FLAG_TILL_KEY)
+ _LOGGER.debug("Fetching feature flag Change Number from redis: %s" % stored_value)
return json.loads(stored_value) if stored_value is not None else None
+
except RedisAdapterException:
- self._logger.error('Error fetching split change number from storage')
- self._logger.debug('Error: ', exc_info=True)
+ _LOGGER.error('Error fetching feature flag change number from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
return None
- def set_change_number(self, new_change_number):
+ def get_split_names(self):
"""
- Set the latest change number.
+ Retrieve a list of all feature flag names.
- :param new_change_number: New change number.
- :type new_change_number: int
+ :return: List of feature flag names.
+ :rtype: list(str)
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ try:
+ keys = self._redis.keys(self._get_key('*'))
+ _LOGGER.debug("Fetchting feature flag names from redis: %s" % keys)
+ return [key.replace(self._get_key(''), '') for key in keys]
- def get_split_names(self):
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching feature flag names from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return []
+
+ def get_all_splits(self):
+ """
+ Return all the feature flags in cache.
+ :return: List of all feature flags in cache.
+ :rtype: list(splitio.models.splits.Split)
+ """
+ keys = self._redis.keys(self._get_key('*'))
+ to_return = []
+ try:
+ _LOGGER.debug("Fetchting all feature flags from redis: %s" % keys)
+ raw_feature_flags = self._redis.mget(keys)
+ _LOGGER.debug(raw_feature_flags)
+ for raw in raw_feature_flags:
+ try:
+ to_return.append(splits.from_raw(json.loads(raw)))
+ except (ValueError, TypeError):
+ _LOGGER.error('Could not parse feature flag. Skipping')
+ _LOGGER.debug("Raw feature flag that failed parsing attempt: %s", raw)
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching all feature flags from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return to_return
+
+class RedisSplitStorageAsync(RedisSplitStorage):
+ """Async Redis-based storage for feature flags."""
+
+ def __init__(self, redis_client, enable_caching=False, max_age=DEFAULT_MAX_AGE, config_flag_sets=[]):
+ """
+ Class constructor.
+ """
+ self.redis = redis_client
+ self._enable_caching = enable_caching
+ self.flag_set_filter = FlagSetsFilter(config_flag_sets)
+ self._pipe = self.redis.pipeline
+ if enable_caching:
+ self._feature_flag_cache = LocalMemoryCacheAsync(None, None, max_age)
+ self._traffic_type_cache = LocalMemoryCacheAsync(None, None, max_age)
+
+
+ async def get(self, feature_flag_name): # pylint: disable=method-hidden
+ """
+ Retrieve a feature flag.
+ :param feature_flag_name: Name of the feature to fetch.
+ :type feature_flag_name: str
+
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ return: A feature flag object parsed from redis if the key exists. None otherwise
+
+ :param change_number: change_number
+ :rtype: splitio.models.splits.Split
+ :type change_number: int
+ """
+ try:
+ raw_feature_flags = None
+ if self._enable_caching:
+ raw_feature_flags = await self._feature_flag_cache.get_key(feature_flag_name)
+ if raw_feature_flags is None:
+ raw_feature_flags = await self.redis.get(self._get_key(feature_flag_name))
+ if self._enable_caching:
+ await self._feature_flag_cache.add_key(feature_flag_name, raw_feature_flags)
+ _LOGGER.debug("Fetchting feature flag [%s] from redis" % feature_flag_name)
+ _LOGGER.debug(raw_feature_flags)
+ return splits.from_raw(json.loads(raw_feature_flags)) if raw_feature_flags is not None else None
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get_feature_flags_by_sets(self, flag_sets):
+ """
+ Retrieve feature flags by flag set.
+ :param flag_set: Names of the flag set to fetch.
+ :type flag_set: str
+ :return: Feature flag names that are tagged with the flag set
+ :rtype: listt(str)
+ """
+ try:
+ sets_to_fetch = get_valid_flag_sets(flag_sets, self.flag_set_filter)
+ if sets_to_fetch == []:
+ return []
+
+ keys = [self._get_flag_set_key(flag_set) for flag_set in sets_to_fetch]
+ pipe = self._pipe()
+ [pipe.smembers(key) for key in keys]
+ result_sets = await pipe.execute()
+ _LOGGER.debug("Fetchting Feature flags by set [%s] from redis" % (keys))
+ _LOGGER.debug(result_sets)
+ return list(combine_valid_flag_sets(result_sets))
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching feature flag from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def fetch_many(self, feature_flag_names):
+ """
+ Retrieve feature flags.
+ :param feature_flag_names: Names of the features to fetch.
+ :type feature_flag_name: list(str)
+ :return: A dict with feature flag objects parsed from redis.
+ :rtype: dict(feature_flag_name, splitio.models.splits.Split)
+ """
+ to_return = dict()
+ try:
+ raw_feature_flags = None
+ if self._enable_caching:
+ raw_feature_flags = await self._feature_flag_cache.get_key(frozenset(feature_flag_names))
+ if raw_feature_flags is None:
+ raw_feature_flags = await self.redis.mget([self._get_key(feature_flag_name) for feature_flag_name in feature_flag_names])
+ if self._enable_caching:
+ await self._feature_flag_cache.add_key(frozenset(feature_flag_names), raw_feature_flags)
+ for i in range(len(feature_flag_names)):
+ feature_flag = None
+ try:
+ feature_flag = splits.from_raw(json.loads(raw_feature_flags[i]))
+ except (ValueError, TypeError):
+ _LOGGER.error('Could not parse feature flag.')
+ _LOGGER.debug("Raw feature flag that failed parsing attempt: %s", raw_feature_flags[i])
+ to_return[feature_flag_names[i]] = feature_flag
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching feature flags from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return to_return
+
+ async def is_valid_traffic_type(self, traffic_type_name): # pylint: disable=method-hidden
+ """
+ Return whether the traffic type exists in at least one feature flag in cache.
+ :param traffic_type_name: Traffic type to validate.
+ :type traffic_type_name: str
+ :return: True if the traffic type is valid. False otherwise.
+ :rtype: bool
+ """
+ try:
+ raw_traffic_type = None
+ if self._enable_caching:
+ raw_traffic_type = await self._traffic_type_cache.get_key(traffic_type_name)
+ if raw_traffic_type is None:
+ raw_traffic_type = await self.redis.get(self._get_traffic_type_key(traffic_type_name))
+ if self._enable_caching:
+ await self._traffic_type_cache.add_key(traffic_type_name, raw_traffic_type)
+ count = json.loads(raw_traffic_type) if raw_traffic_type else 0
+ return count > 0
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching traffic type from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return False
+
+ async def get_change_number(self):
+ """
+ Retrieve latest feature flag change number.
+ :rtype: int
+ """
+ try:
+ stored_value = await self.redis.get(self._FEATURE_FLAG_TILL_KEY)
+ return json.loads(stored_value) if stored_value is not None else None
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching feature flag change number from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get_split_names(self):
+ """
+ Retrieve a list of all feature flag names.
+ :return: List of feature flag names.
+ :rtype: list(str)
+ """
+ try:
+ keys = await self.redis.keys(self._get_key('*'))
+ return [key.replace(self._get_key(''), '') for key in keys]
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching feature flag names from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return []
+
+ async def get_all_splits(self):
+ """
+ Return all the feature flags in cache.
+ :return: List of all feature flags in cache.
+ :rtype: list(splitio.models.splits.Split)
+ """
+ keys = await self.redis.keys(self._get_key('*'))
+ to_return = []
+ try:
+ raw_feature_flags = await self.redis.mget(keys)
+ for raw in raw_feature_flags:
+ try:
+ to_return.append(splits.from_raw(json.loads(raw)))
+ except (ValueError, TypeError):
+ _LOGGER.error('Could not parse feature flag. Skipping')
+ _LOGGER.debug("Raw feature flag that failed parsing attempt: %s", raw)
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching all feature flags from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return to_return
+
+
+class RedisSegmentStorageBase(SegmentStorage):
+ """Redis based segment storage base class."""
+
+ _SEGMENTS_KEY = 'SPLITIO.segment.{segment_name}'
+ _SEGMENTS_TILL_KEY = 'SPLITIO.segment.{segment_name}.till'
+
+ def _get_till_key(self, segment_name):
+ """
+ Use the provided segment_name to build the appropriate redis key.
+
+ :param segment_name: Name of the segment to interact with in redis.
+ :type segment_name: str
+
+ :return: Redis key.
+ :rtype: str.
+ """
+ return self._SEGMENTS_TILL_KEY.format(segment_name=segment_name)
+
+ def _get_key(self, segment_name):
+ """
+ Use the provided segment_name to build the appropriate redis key.
+
+ :param segment_name: Name of the segment to interact with in redis.
+ :type segment_name: str
+
+ :return: Redis key.
+ :rtype: str.
+ """
+ return self._SEGMENTS_KEY.format(segment_name=segment_name)
+
+ def get(self, segment_name):
+ """Retrieve a segment."""
+ pass
+
+ def update(self, segment_name, to_add, to_remove, change_number=None):
+ """
+ Store a segment.
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+ :param to_add: List of members to add to the segment.
+ :type to_add: list
+ :param to_remove: List of members to remove from the segment.
+ :type to_remove: list
+ """
+ raise NotImplementedError('Only redis-consumer mode is supported.')
+
+ def get_change_number(self, segment_name):
+ """
+ Retrieve latest change number for a segment.
+
+ :param segment_name: Name of the segment.
+ :type segment_name: str
+
+ :rtype: int
+ """
+ pass
+
+ def set_change_number(self, segment_name, new_change_number):
+ """
+ Set the latest change number.
+
+ :param segment_name: Name of the segment.
+ :type segment_name: str
+ :param new_change_number: New change number.
+ :type new_change_number: int
+ """
+ raise NotImplementedError('Only redis-consumer mode is supported.')
+
+ def put(self, segment):
+ """
+ Store a segment.
+
+ :param segment: Segment to store.
+ :type segment: splitio.models.segment.Segment
+ """
+ raise NotImplementedError('Only redis-consumer mode is supported.')
+
+ def segment_contains(self, segment_name, key):
+ """
+ Check whether a specific key belongs to a segment in storage.
+
+ :param segment_name: Name of the segment to search in.
+ :type segment_name: str
+ :param key: Key to search for.
+ :type key: str
+
+ :return: True if the segment contains the key. False otherwise.
+ :rtype: bool
+ """
+ try:
+ res = self._redis.sismember(self._get_key(segment_name), key)
+ _LOGGER.debug("Checking Segment [%s] contain key [%s] in redis: %s" % (segment_name, key, res))
+ return bool(res)
+ except RedisAdapterException:
+ _LOGGER.error('Error testing members in segment stored in redis')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return False
+
+ def get_segments_count(self):
+ """
+ Return segment count.
+
+ :return: 0
+ :rtype: int
+ """
+ return 0
+
+ def get_segments_keys_count(self):
+ """
+ Return segment count.
+
+ :rtype: int
+ """
+ return 0
+
+
+class RedisSegmentStorage(RedisSegmentStorageBase):
+ """Redis based segment storage class."""
+
+ def __init__(self, redis_client):
+ """
+ Class constructor.
+
+ :param redis_client: Redis client or compliant interface.
+ :type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ """
+ self._redis = redis_client
+
+ def get(self, segment_name):
+ """
+ Retrieve a segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :return: Segment object is key exists. None otherwise.
+ :rtype: splitio.models.segments.Segment
+ """
+ try:
+ keys = (self._redis.smembers(self._get_key(segment_name)))
+ _LOGGER.debug("Fetchting Segment [%s] from redis" % segment_name)
+ _LOGGER.debug(keys)
+ till = self.get_change_number(segment_name)
+ if not keys or till is None:
+ return None
+
+ return segments.Segment(segment_name, keys, till)
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching segment from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def get_change_number(self, segment_name):
+ """
+ Retrieve latest change number for a segment.
+
+ :param segment_name: Name of the segment.
+ :type segment_name: str
+
+ :rtype: int
+ """
+ try:
+ stored_value = self._redis.get(self._get_till_key(segment_name))
+ _LOGGER.debug("Fetchting Change Number for Segment [%s] from redis: " % stored_value)
+ return json.loads(stored_value) if stored_value is not None else None
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching segment change number from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ def segment_contains(self, segment_name, key):
+ """
+ Check whether a specific key belongs to a segment in storage.
+
+ :param segment_name: Name of the segment to search in.
+ :type segment_name: str
+ :param key: Key to search for.
+ :type key: str
+
+ :return: True if the segment contains the key. False otherwise.
+ :rtype: bool
+ """
+ try:
+ res = self._redis.sismember(self._get_key(segment_name), key)
+ _LOGGER.debug("Checking Segment [%s] contain key [%s] in redis: %s" % (segment_name, key, res))
+ return res
+
+ except RedisAdapterException:
+ _LOGGER.error('Error testing members in segment stored in redis')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+
+class RedisSegmentStorageAsync(RedisSegmentStorageBase):
+ """Redis based segment storage async class."""
+
+ def __init__(self, redis_client):
+ """
+ Class constructor.
+
+ :param redis_client: Redis client or compliant interface.
+ :type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ """
+ self._redis = redis_client
+
+ async def get(self, segment_name):
+ """
+ Retrieve a segment.
+
+ :param segment_name: Name of the segment to fetch.
+ :type segment_name: str
+
+ :return: Segment object is key exists. None otherwise.
+ :rtype: splitio.models.segments.Segment
+ """
+ try:
+ keys = (await self._redis.smembers(self._get_key(segment_name)))
+ _LOGGER.debug("Fetchting Segment [%s] from redis" % segment_name)
+ _LOGGER.debug(keys)
+ till = await self.get_change_number(segment_name)
+ if not keys or till is None:
+ return None
+
+ return segments.Segment(segment_name, keys, till)
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching segment from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def get_change_number(self, segment_name):
+ """
+ Retrieve latest change number for a segment.
+
+ :param segment_name: Name of the segment.
+ :type segment_name: str
+
+ :rtype: int
+ """
+ try:
+ stored_value = await self._redis.get(self._get_till_key(segment_name))
+ _LOGGER.debug("Fetchting Change Number for Segment [%s] from redis: " % stored_value)
+ return json.loads(stored_value) if stored_value is not None else None
+
+ except RedisAdapterException:
+ _LOGGER.error('Error fetching segment change number from storage')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+ async def segment_contains(self, segment_name, key):
+ """
+ Check whether a specific key belongs to a segment in storage.
+
+ :param segment_name: Name of the segment to search in.
+ :type segment_name: str
+ :param key: Key to search for.
+ :type key: str
+
+ :return: True if the segment contains the key. False otherwise.
+ :rtype: bool
+ """
+ try:
+ res = await self._redis.sismember(self._get_key(segment_name), key)
+ _LOGGER.debug("Checking Segment [%s] contain key [%s] in redis: %s" % (segment_name, key, res))
+ return res
+
+ except RedisAdapterException:
+ _LOGGER.error('Error testing members in segment stored in redis')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return None
+
+
+class RedisImpressionsStorageBase(ImpressionStorage, ImpressionPipelinedStorage):
+ """Redis based event storage base class."""
+
+ IMPRESSIONS_QUEUE_KEY = 'SPLITIO.impressions'
+ IMPRESSIONS_KEY_DEFAULT_TTL = 3600
+
+ def _wrap_impressions(self, impressions):
+ """
+ Wrap impressions to be stored in redis
+
+ :param impressions: Impression to add to the queue.
+ :type impressions: splitio.models.impressions.Impression
+
+ :return: Processed impressions.
+ :rtype: list[splitio.models.impressions.Impression]
+ """
+ bulk_impressions = []
+ for impression in impressions:
+ if isinstance(impression, Impression):
+ to_store = {
+ 'm': { # METADATA PORTION
+ 's': self._sdk_metadata.sdk_version,
+ 'n': self._sdk_metadata.instance_name,
+ 'i': self._sdk_metadata.instance_ip,
+ },
+ 'i': { # IMPRESSION PORTION
+ 'k': impression.matching_key,
+ 'b': impression.bucketing_key,
+ 'f': impression.feature_name,
+ 't': impression.treatment,
+ 'r': impression.label,
+ 'c': impression.change_number,
+ 'm': impression.time,
+ 'properties': impression.properties
+ }
+ }
+ bulk_impressions.append(json.dumps(to_store))
+ return bulk_impressions
+
+ def expire_key(self, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ pass
+
+ def add_impressions_to_pipe(self, impressions, pipe):
+ """
+ Add put operation to pipeline
+
+ :param impressions: List of one or more impressions to store.
+ :type impressions: list
+ :param pipe: Redis pipe.
+ :type pipe: redis.pipe
+ """
+ bulk_impressions = self._wrap_impressions(impressions)
+ _LOGGER.debug("Adding Impressions to redis key %s" % (self.IMPRESSIONS_QUEUE_KEY))
+ _LOGGER.debug(bulk_impressions)
+ pipe.rpush(self.IMPRESSIONS_QUEUE_KEY, *bulk_impressions)
+
+ def put(self, impressions):
"""
- Retrieve a list of all split names.
+ Add an impression to the redis storage.
- :return: List of split names.
- :rtype: list(str)
+ :param impressions: Impression to add to the queue.
+ :type impressions: splitio.models.impressions.Impression
+
+ :return: Whether the impression has been added or not.
+ :rtype: bool
"""
- try:
- keys = self._redis.keys(self._get_key('*'))
- return [key.replace(self._get_key(''), '') for key in keys]
- except RedisAdapterException:
- self._logger.error('Error fetching split names from storage')
- self._logger.debug('Error: ', exc_info=True)
- return []
+ pass
- def get_all_splits(self):
+ def pop_many(self, count):
"""
- Return all the splits in cache.
+ Pop the oldest N events from storage.
- :return: List of all splits in cache.
- :rtype: list(splitio.models.splits.Split)
+ :param count: Number of events to pop.
+ :type count: int
"""
- keys = self._redis.keys(self._get_key('*'))
- to_return = []
- try:
- raw_splits = self._redis.mget(keys)
- for raw in raw_splits:
- try:
- to_return.append(splits.from_raw(json.loads(raw)))
- except (ValueError, TypeError):
- self._logger.error('Could not parse split. Skipping')
- self._logger.debug("Raw split that failed parsing attempt: %s", raw)
- except RedisAdapterException:
- self._logger.error('Error fetching all splits from storage')
- self._logger.debug('Error: ', exc_info=True)
- return to_return
+ raise NotImplementedError('Only redis-consumer mode is supported.')
+ def clear(self):
+ """
+ Clear data.
+ """
+ raise NotImplementedError('Not supported for redis.')
-class RedisSegmentStorage(SegmentStorage):
- """Redis based segment storage class."""
- _SEGMENTS_KEY = 'SPLITIO.segment.{segment_name}'
- _SEGMENTS_TILL_KEY = 'SPLITIO.segment.{segment_name}.till'
+class RedisImpressionsStorage(RedisImpressionsStorageBase):
+ """Redis based event storage class."""
- def __init__(self, redis_client):
+ def __init__(self, redis_client, sdk_metadata):
"""
Class constructor.
:param redis_client: Redis client or compliant interface.
:type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
"""
self._redis = redis_client
- self._logger = logging.getLogger(self.__class__.__name__)
+ self._sdk_metadata = sdk_metadata
- def _get_till_key(self, segment_name):
+ def expire_key(self, total_keys, inserted):
"""
- Use the provided segment_name to build the appropriate redis key.
+ Set expire
- :param segment_name: Name of the segment to interact with in redis.
- :type segment_name: str
-
- :return: Redis key.
- :rtype: str.
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
"""
- return self._SEGMENTS_TILL_KEY.format(segment_name=segment_name)
+ if total_keys == inserted:
+ self._redis.expire(self.IMPRESSIONS_QUEUE_KEY, self.IMPRESSIONS_KEY_DEFAULT_TTL)
- def _get_key(self, segment_name):
+ def put(self, impressions):
"""
- Use the provided segment_name to build the appropriate redis key.
+ Add an impression to the redis storage.
- :param segment_name: Name of the segment to interact with in redis.
- :type segment_name: str
+ :param impressions: Impression to add to the queue.
+ :type impressions: splitio.models.impressions.Impression
- :return: Redis key.
- :rtype: str.
+ :return: Whether the impression has been added or not.
+ :rtype: bool
"""
- return self._SEGMENTS_KEY.format(segment_name=segment_name)
+ bulk_impressions = self._wrap_impressions(impressions)
+ try:
+ _LOGGER.debug("Adding Impressions to redis key %s" % (self.IMPRESSIONS_QUEUE_KEY))
+ _LOGGER.debug(bulk_impressions)
+ inserted = self._redis.rpush(self.IMPRESSIONS_QUEUE_KEY, *bulk_impressions)
+ self.expire_key(inserted, len(bulk_impressions))
+ return True
- def get(self, segment_name):
- """
- Retrieve a segment.
+ except RedisAdapterException:
+ _LOGGER.error('Something went wrong when trying to add impression to redis')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
- :param segment_name: Name of the segment to fetch.
- :type segment_name: str
- :return: Segment object is key exists. None otherwise.
- :rtype: splitio.models.segments.Segment
+class RedisImpressionsStorageAsync(RedisImpressionsStorageBase):
+ """Redis based event storage async class."""
+
+ def __init__(self, redis_client, sdk_metadata):
"""
- try:
- keys = (self._redis.smembers(self._get_key(segment_name)))
- till = self.get_change_number(segment_name)
- if not keys or till is None:
- return None
- return segments.Segment(segment_name, keys, till)
- except RedisAdapterException:
- self._logger.error('Error fetching segment from storage')
- self._logger.debug('Error: ', exc_info=True)
- return None
+ Class constructor.
- def update(self, segment_name, to_add, to_remove, change_number=None):
+ :param redis_client: Redis client or compliant interface.
+ :type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+ """
+ self._redis = redis_client
+ self._sdk_metadata = sdk_metadata
+
+ async def expire_key(self, total_keys, inserted):
"""
- Store a split.
+ Set expire
- :param segment_name: Name of the segment to update.
- :type segment_name: str
- :param to_add: List of members to add to the segment.
- :type to_add: list
- :param to_remove: List of members to remove from the segment.
- :type to_remove: list
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ if total_keys == inserted:
+ await self._redis.expire(self.IMPRESSIONS_QUEUE_KEY, self.IMPRESSIONS_KEY_DEFAULT_TTL)
- def get_change_number(self, segment_name):
+ async def put(self, impressions):
"""
- Retrieve latest change number for a segment.
+ Add an impression to the redis storage.
- :param segment_name: Name of the segment.
- :type segment_name: str
+ :param impressions: Impression to add to the queue.
+ :type impressions: splitio.models.impressions.Impression
- :rtype: int
+ :return: Whether the impression has been added or not.
+ :rtype: bool
"""
+ bulk_impressions = self._wrap_impressions(impressions)
try:
- stored_value = self._redis.get(self._get_till_key(segment_name))
- return json.loads(stored_value) if stored_value is not None else None
+ _LOGGER.debug("Adding Impressions to redis key %s" % (self.IMPRESSIONS_QUEUE_KEY))
+ _LOGGER.debug(bulk_impressions)
+ inserted = await self._redis.rpush(self.IMPRESSIONS_QUEUE_KEY, *bulk_impressions)
+ await self.expire_key(inserted, len(bulk_impressions))
+ return True
+
except RedisAdapterException:
- self._logger.error('Error fetching segment change number from storage')
- self._logger.debug('Error: ', exc_info=True)
- return None
+ _LOGGER.error('Something went wrong when trying to add impression to redis')
+ _LOGGER.error('Error: ', exc_info=True)
+ return False
- def set_change_number(self, segment_name, new_change_number):
+
+class RedisEventsStorageBase(EventStorage):
+ """Redis based event storage base class."""
+
+ _EVENTS_KEY_TEMPLATE = 'SPLITIO.events'
+ _EVENTS_KEY_DEFAULT_TTL = 3600
+
+ def add_events_to_pipe(self, events, pipe):
+ """
+ Add put operation to pipeline
+
+ :param impressions: List of one or more impressions to store.
+ :type impressions: list
+ :param pipe: Redis pipe.
+ :type pipe: redis.pipe
+ """
+ bulk_events = self._wrap_events(events)
+ _LOGGER.debug("Adding Events to redis key %s" % (self._EVENTS_KEY_TEMPLATE))
+ _LOGGER.debug(bulk_events)
+ pipe.rpush(self._EVENTS_KEY_TEMPLATE, *bulk_events)
+
+ def _wrap_events(self, events):
+ return [
+ json.dumps({
+ 'e': {
+ 'key': e.event.key,
+ 'trafficTypeName': e.event.traffic_type_name,
+ 'eventTypeId': e.event.event_type_id,
+ 'value': e.event.value,
+ 'timestamp': e.event.timestamp,
+ 'properties': e.event.properties,
+ },
+ 'm': {
+ 's': self._sdk_metadata.sdk_version,
+ 'n': self._sdk_metadata.instance_name,
+ 'i': self._sdk_metadata.instance_ip,
+ }
+ })
+ for e in events
+ ]
+
+ def put(self, events):
"""
- Set the latest change number.
+ Add an event to the redis storage.
- :param segment_name: Name of the segment.
- :type segment_name: str
- :param new_change_number: New change number.
- :type new_change_number: int
+ :param event: Event to add to the queue.
+ :type event: splitio.models.events.Event
+
+ :return: Whether the event has been added or not.
+ :rtype: bool
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ pass
- def put(self, segment):
+ def pop_many(self, count):
"""
- Store a segment.
+ Pop the oldest N events from storage.
- :param segment: Segment to store.
- :type segment: splitio.models.segment.Segment
+ :param count: Number of events to pop.
+ :type count: int
"""
raise NotImplementedError('Only redis-consumer mode is supported.')
- def segment_contains(self, segment_name, key):
+ def clear(self):
"""
- Check whether a specific key belongs to a segment in storage.
-
- :param segment_name: Name of the segment to search in.
- :type segment_name: str
- :param key: Key to search for.
- :type key: str
+ Clear data.
+ """
+ raise NotImplementedError('Not supported for redis.')
- :return: True if the segment contains the key. False otherwise.
- :rtype: bool
+ def expire_keys(self, total_keys, inserted):
"""
- try:
- return self._redis.sismember(self._get_key(segment_name), key)
- except RedisAdapterException:
- self._logger.error('Error testing members in segment stored in redis')
- self._logger.debug('Error: ', exc_info=True)
- return None
+ Set expire
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ pass
-class RedisImpressionsStorage(ImpressionStorage):
+class RedisEventsStorage(RedisEventsStorageBase):
"""Redis based event storage class."""
- IMPRESSIONS_QUEUE_KEY = 'SPLITIO.impressions'
- IMPRESSIONS_KEY_DEFAULT_TTL = 3600
-
def __init__(self, redis_client, sdk_metadata):
"""
Class constructor.
@@ -351,9 +1359,8 @@ def __init__(self, redis_client, sdk_metadata):
"""
self._redis = redis_client
self._sdk_metadata = sdk_metadata
- self._logger = logging.getLogger(self.__class__.__name__)
- def put(self, impressions):
+ def put(self, events):
"""
Add an event to the redis storage.
@@ -363,51 +1370,34 @@ def put(self, impressions):
:return: Whether the event has been added or not.
:rtype: bool
"""
- bulk_impressions = []
- for impression in impressions:
- if isinstance(impression, Impression):
- to_store = {
- 'm': { # METADATA PORTION
- 's': self._sdk_metadata.sdk_version,
- 'n': self._sdk_metadata.instance_name,
- 'i': self._sdk_metadata.instance_ip,
- },
- 'i': { # IMPRESSION PORTION
- 'k': impression.matching_key,
- 'b': impression.bucketing_key,
- 'f': impression.feature_name,
- 't': impression.treatment,
- 'r': impression.label,
- 'c': impression.change_number,
- 'm': impression.time,
- }
- }
- bulk_impressions.append(json.dumps(to_store))
+ key = self._EVENTS_KEY_TEMPLATE
+ to_store = self._wrap_events(events)
try:
- inserted = self._redis.rpush(self.IMPRESSIONS_QUEUE_KEY, *bulk_impressions)
- if inserted == len(bulk_impressions):
- self._logger.debug("SET EXPIRE KEY FOR QUEUE")
- self._redis.expire(self.IMPRESSIONS_QUEUE_KEY, self.IMPRESSIONS_KEY_DEFAULT_TTL)
+ _LOGGER.debug("Adding Events to redis key %s" % (key))
+ _LOGGER.debug(to_store)
+ self._redis.rpush(key, *to_store)
return True
+
except RedisAdapterException:
- self._logger.error('Something went wrong when trying to add impression to redis')
- self._logger.error('Error: ', exc_info=True)
+ _LOGGER.error('Something went wrong when trying to add event to redis')
+ _LOGGER.debug('Error: ', exc_info=True)
return False
- def pop_many(self, count):
+ def expire_keys(self, total_keys, inserted):
"""
- Pop the oldest N events from storage.
+ Set expire
- :param count: Number of events to pop.
- :type count: int
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ if total_keys == inserted:
+ self._redis.expire(self._EVENTS_KEY_TEMPLATE, self._EVENTS_KEY_DEFAULT_TTL)
-class RedisEventsStorage(EventStorage):
- """Redis based event storage class."""
-
- _KEY_TEMPLATE = 'SPLITIO.events'
+class RedisEventsStorageAsync(RedisEventsStorageBase):
+ """Redis based event async storage class."""
def __init__(self, redis_client, sdk_metadata):
"""
@@ -420,9 +1410,8 @@ def __init__(self, redis_client, sdk_metadata):
"""
self._redis = redis_client
self._sdk_metadata = sdk_metadata
- self._logger = logging.getLogger(self.__class__.__name__)
- def put(self, events):
+ async def put(self, events):
"""
Add an event to the redis storage.
@@ -432,49 +1421,145 @@ def put(self, events):
:return: Whether the event has been added or not.
:rtype: bool
"""
- key = self._KEY_TEMPLATE
- to_store = [
- json.dumps({
- 'e': {
- 'key': e.event.key,
- 'trafficTypeName': e.event.traffic_type_name,
- 'eventTypeId': e.event.event_type_id,
- 'value': e.event.value,
- 'timestamp': e.event.timestamp,
- 'properties': e.event.properties,
- },
- 'm': {
- 's': self._sdk_metadata.sdk_version,
- 'n': self._sdk_metadata.instance_name,
- 'i': self._sdk_metadata.instance_ip,
- }
- })
- for e in events
- ]
+ key = self._EVENTS_KEY_TEMPLATE
+ to_store = self._wrap_events(events)
try:
- self._redis.rpush(key, *to_store)
+ _LOGGER.debug("Adding Events to redis key %s" % (key))
+ _LOGGER.debug(to_store)
+ await self._redis.rpush(key, *to_store)
return True
+
except RedisAdapterException:
- self._logger.error('Something went wrong when trying to add event to redis')
- self._logger.debug('Error: ', exc_info=True)
+ _LOGGER.error('Something went wrong when trying to add event to redis')
+ _LOGGER.debug('Error: ', exc_info=True)
return False
- def pop_many(self, count):
+ async def expire_keys(self, total_keys, inserted):
"""
- Pop the oldest N events from storage.
+ Set expire
- :param count: Number of events to pop.
- :type count: int
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ if total_keys == inserted:
+ await self._redis.expire(self._EVENTS_KEY_TEMPLATE, self._EVENTS_KEY_DEFAULT_TTL)
+
+
+class RedisTelemetryStorageBase(TelemetryStorage):
+ """Redis based telemetry storage class."""
+
+ _TELEMETRY_CONFIG_KEY = 'SPLITIO.telemetry.init'
+ _TELEMETRY_LATENCIES_KEY = 'SPLITIO.telemetry.latencies'
+ _TELEMETRY_EXCEPTIONS_KEY = 'SPLITIO.telemetry.exceptions'
+ _TELEMETRY_KEY_DEFAULT_TTL = 3600
+
+ def _reset_config_tags(self):
+ """Reset all config tags"""
+ pass
+
+ def add_config_tag(self, tag):
+ """Record tag string."""
+ pass
+
+ def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
+ """
+ initilize telemetry objects
+
+ :param congif: factory configuration parameters
+ :type config: splitio.client.config
+ """
+ pass
+ def pop_config_tags(self):
+ """Get and reset tags."""
+ pass
-class RedisTelemetryStorage(object):
- """Redis-based Telemetry storage."""
+ def push_config_stats(self):
+ """push config stats to redis."""
+ pass
- _LATENCY_KEY_TEMPLATE = "SPLITIO/{sdk}/{instance}/latency.{name}.bucket.{bucket}"
- _COUNTER_KEY_TEMPLATE = "SPLITIO/{sdk}/{instance}/count.{name}"
- _GAUGE_KEY_TEMPLATE = "SPLITIO/{sdk}/{instance}/gauge.{name}"
+ def _format_config_stats(self, config_stats, tags):
+ """format only selected config stats to json"""
+ return json.dumps({
+ 'aF': config_stats['aF'],
+ 'rF': config_stats['rF'],
+ 'sT': config_stats['sT'],
+ 'oM': config_stats['oM'],
+ 't': tags
+ })
+
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ pass
+
+ def add_latency_to_pipe(self, method, bucket, pipe):
+ """
+ record latency data
+
+ :param method: method name
+ :type method: string
+ :param latency: latency
+ :type latency: int64
+ :param pipe: Redis pipe.
+ :type pipe: redis.pipe
+ """
+ _LOGGER.debug("Adding Latency stats to redis key %s" % (self._TELEMETRY_LATENCIES_KEY))
+ _LOGGER.debug(self._sdk_metadata.sdk_version + '/' + self._sdk_metadata.instance_name + '/' + self._sdk_metadata.instance_ip + '/' +
+ method.value + '/' + str(bucket))
+ pipe.hincrby(self._TELEMETRY_LATENCIES_KEY, self._sdk_metadata.sdk_version + '/' + self._sdk_metadata.instance_name + '/' + self._sdk_metadata.instance_ip + '/' +
+ method.value + '/' + str(bucket), 1)
+
+ def record_latency(self, method, latency):
+ """
+ Not implemented
+ """
+ raise NotImplementedError('Only redis pipe is used.')
+
+ def record_exception(self, method):
+ """
+ record an exception
+
+ :param method: method name
+ :type method: string
+ """
+ pass
+
+ def record_not_ready_usage(self):
+ """
+ record not ready time
+
+ """
+ pass
+
+ def record_bur_time_out(self):
+ """
+ record BUR timeouts
+
+ """
+ pass
+
+ def record_impression_stats(self, data_type, count):
+ pass
+
+ def expire_latency_keys(self, total_keys, inserted):
+ pass
+
+ def expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
+ """
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ pass
+
+
+class RedisTelemetryStorage(RedisTelemetryStorageBase):
+ """Redis based telemetry storage class."""
def __init__(self, redis_client, sdk_metadata):
"""
@@ -485,132 +1570,204 @@ def __init__(self, redis_client, sdk_metadata):
:param sdk_metadata: SDK & Machine information.
:type sdk_metadata: splitio.client.util.SdkMetadata
"""
- self._redis = redis_client
- self._metadata = sdk_metadata
- self._logger = logging.getLogger(self.__class__.__name__)
+ self._lock = threading.RLock()
+ self._reset_config_tags()
+ self._redis_client = redis_client
+ self._sdk_metadata = sdk_metadata
+ self._tel_config = TelemetryConfig()
+ self._make_pipe = redis_client.pipeline
- def _get_latency_key(self, name, bucket):
- """
- Instantiate and return the latency key template.
+ def _reset_config_tags(self):
+ """Reset all config tags"""
+ with self._lock:
+ self._config_tags = []
- :param name: Name of the latency metric.
- :type name: str
- :param bucket: Number of bucket.
- :type bucket: int
+ def add_config_tag(self, tag):
+ """Record tag string."""
+ with self._lock:
+ if len(self._config_tags) < MAX_TAGS:
+ self._config_tags.append(tag)
- :return: Redis latency key.
- :rtype: str
+ def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
"""
- return self._LATENCY_KEY_TEMPLATE.format(
- sdk=self._metadata.sdk_version,
- instance=self._metadata.instance_name,
- name=name,
- bucket=bucket
- )
+ initilize telemetry objects
- def _get_counter_key(self, name):
+ :param congif: factory configuration parameters
+ :type config: splitio.client.config
"""
- Instantiate and return the counter key template.
+ self._tel_config.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
- :param name: Name of the counter metric.
- :type name: str
+ def pop_config_tags(self):
+ """Get and reset tags."""
+ with self._lock:
+ tags = self._config_tags
+ self._reset_config_tags()
+ return tags
- :return: Redis counter key.
- :rtype: str
+ def push_config_stats(self):
+ """push config stats to redis."""
+ _LOGGER.debug("Adding Config stats to redis key %s" % (self._TELEMETRY_CONFIG_KEY))
+ _LOGGER.debug(str(self._format_config_stats(self._tel_config.get_stats(), self.pop_config_tags())))
+ self._redis_client.hset(self._TELEMETRY_CONFIG_KEY, self._sdk_metadata.sdk_version + '/' + self._sdk_metadata.instance_name + '/' + self._sdk_metadata.instance_ip, str(self._format_config_stats(self._tel_config.get_stats(), self.pop_config_tags())))
+
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ self._tel_config.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+
+ def record_exception(self, method):
"""
- return self._COUNTER_KEY_TEMPLATE.format(
- sdk=self._metadata.sdk_version,
- instance=self._metadata.instance_name,
- name=name
- )
+ record an exception
- def _get_gauge_key(self, name):
+ :param method: method name
+ :type method: string
"""
- Instantiate and return the latency key template.
+ _LOGGER.debug("Adding Excepction stats to redis key %s" % (self._TELEMETRY_EXCEPTIONS_KEY))
+ _LOGGER.debug(self._sdk_metadata.sdk_version + '/' + self._sdk_metadata.instance_name + '/' + self._sdk_metadata.instance_ip + '/' +
+ method.value)
+ pipe = self._make_pipe()
+ pipe.hincrby(self._TELEMETRY_EXCEPTIONS_KEY, self._sdk_metadata.sdk_version + '/' + self._sdk_metadata.instance_name + '/' + self._sdk_metadata.instance_ip + '/' +
+ method.value, 1)
+ result = pipe.execute()
+ self.expire_keys(self._TELEMETRY_EXCEPTIONS_KEY, self._TELEMETRY_KEY_DEFAULT_TTL, 1, result[0])
- :param name: Name of the latency metric.
- :type name: str
+ def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ self._tel_config.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
- :return: Redis latency key.
- :rtype: str
+ def expire_latency_keys(self, total_keys, inserted):
"""
- return self._GAUGE_KEY_TEMPLATE.format(
- sdk=self._metadata.sdk_version,
- instance=self._metadata.instance_name,
- name=name,
- )
+ Expire lstency keys
- def inc_latency(self, name, bucket):
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
"""
- Add a latency.
+ self.expire_keys(self._TELEMETRY_LATENCIES_KEY, self._TELEMETRY_KEY_DEFAULT_TTL, total_keys, inserted)
- :param name: Name of the latency metric.
- :type name: str
- :param value: Value of the latency metric.
- :tyoe value: int
+ def expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
"""
- if not 0 <= bucket <= 21:
- self._logger.error('Incorect bucket "%d" for latency "%s". Ignoring.', bucket, name)
- return
+ Set expire
- key = self._get_latency_key(name, bucket)
- try:
- self._redis.incr(key)
- except RedisAdapterException:
- self._logger.error('Something went wrong when trying to store latency in redis')
- self._logger.debug('Error: ', exc_info=True)
-
- def inc_counter(self, name):
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
"""
- Increment a counter.
+ if total_keys == inserted:
+ self._redis_client.expire(queue_key, key_default_ttl)
+
+ def record_bur_time_out(self):
+ """record BUR timeouts"""
+ pass
- :param name: Name of the counter metric.
- :type name: str
+ def record_ready_time(self, ready_time):
+ """Record ready time."""
+ pass
+
+
+class RedisTelemetryStorageAsync(RedisTelemetryStorageBase):
+ """Redis based telemetry async storage class."""
+
+ @classmethod
+ async def create(cls, redis_client, sdk_metadata):
"""
- key = self._get_counter_key(name)
- try:
- self._redis.incr(key)
- except RedisAdapterException:
- self._logger.error('Something went wrong when trying to increment counter in redis')
- self._logger.debug('Error: ', exc_info=True)
+ Create instance and reset tags
+
+ :param redis_client: Redis client or compliant interface.
+ :type redis_client: splitio.storage.adapters.redis.RedisAdapter
+ :param sdk_metadata: SDK & Machine information.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
- def put_gauge(self, name, value):
+ :return: self instance.
+ :rtype: splitio.storage.redis.RedisTelemetryStorageAsync
"""
- Add a gauge metric.
+ self = cls()
+ await self._reset_config_tags()
+ self._redis_client = redis_client
+ self._sdk_metadata = sdk_metadata
+ self._tel_config = await TelemetryConfigAsync.create()
+ self._make_pipe = redis_client.pipeline
+ return self
+
+ async def _reset_config_tags(self):
+ """Reset all config tags"""
+ self._config_tags = []
- :param name: Name of the gauge metric.
- :type name: str
- :param value: Value of the gauge metric.
- :type value: int
+ async def add_config_tag(self, tag):
+ """Record tag string."""
+ if len(self._config_tags) < MAX_TAGS:
+ self._config_tags.append(tag)
+
+ async def record_config(self, config, extra_config, total_flag_sets, invalid_flag_sets):
"""
- key = self._get_gauge_key(name)
- try:
- self._redis.set(key, value)
- except RedisAdapterException:
- self._logger.error('Something went wrong when trying to set gauge in redis')
- self._logger.debug('Error: ', exc_info=True)
+ initilize telemetry objects
- def pop_counters(self):
+ :param congif: factory configuration parameters
+ :type config: splitio.client.config
"""
- Get all the counters.
+ await self._tel_config.record_config(config, extra_config, total_flag_sets, invalid_flag_sets)
+
+ async def record_bur_time_out(self):
+ """record BUR timeouts"""
+ pass
- :rtype: list
+ async def record_ready_time(self, ready_time):
+ """Record ready time."""
+ pass
+
+ async def pop_config_tags(self):
+ """Get and reset tags."""
+ tags = self._config_tags
+ await self._reset_config_tags()
+ return tags
+
+ async def push_config_stats(self):
+ """push config stats to redis."""
+ _LOGGER.debug("Adding Config stats to redis key %s" % (self._TELEMETRY_CONFIG_KEY))
+ stats = str(self._format_config_stats(await self._tel_config.get_stats(), await self.pop_config_tags()))
+ _LOGGER.debug(stats)
+ await self._redis_client.hset(self._TELEMETRY_CONFIG_KEY, self._sdk_metadata.sdk_version + '/' + self._sdk_metadata.instance_name + '/' + self._sdk_metadata.instance_ip, stats)
+
+ async def record_exception(self, method):
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ record an exception
- def pop_gauges(self):
+ :param method: method name
+ :type method: string
"""
- Get all the gauges.
+ _LOGGER.debug("Adding Excepction stats to redis key %s" % (self._TELEMETRY_EXCEPTIONS_KEY))
+ _LOGGER.debug(self._sdk_metadata.sdk_version + '/' + self._sdk_metadata.instance_name + '/' + self._sdk_metadata.instance_ip + '/' +
+ method.value)
+ pipe = self._make_pipe()
+ pipe.hincrby(self._TELEMETRY_EXCEPTIONS_KEY, self._sdk_metadata.sdk_version + '/' + self._sdk_metadata.instance_name + '/' + self._sdk_metadata.instance_ip + '/' +
+ method.value, 1)
+ result = await pipe.execute()
+ await self.expire_keys(self._TELEMETRY_EXCEPTIONS_KEY, self._TELEMETRY_KEY_DEFAULT_TTL, 1, result[0])
- :rtype: list
+ async def record_active_and_redundant_factories(self, active_factory_count, redundant_factory_count):
+ """Record active and redundant factories."""
+ await self._tel_config.record_active_and_redundant_factories(active_factory_count, redundant_factory_count)
+ async def expire_latency_keys(self, total_keys, inserted):
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ Expire lstency keys
- def pop_latencies(self):
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
"""
- Get all latencies.
+ await self.expire_keys(self._TELEMETRY_LATENCIES_KEY, self._TELEMETRY_KEY_DEFAULT_TTL, total_keys, inserted)
- :rtype: list
+ async def expire_keys(self, queue_key, key_default_ttl, total_keys, inserted):
"""
- raise NotImplementedError('Only redis-consumer mode is supported.')
+ Set expire
+
+ :param total_keys: length of keys.
+ :type total_keys: int
+ :param inserted: added keys.
+ :type inserted: int
+ """
+ if total_keys == inserted:
+ await self._redis_client.expire(queue_key, key_default_ttl)
diff --git a/splitio/storage/uwsgi.py b/splitio/storage/uwsgi.py
deleted file mode 100644
index 6e8397b1..00000000
--- a/splitio/storage/uwsgi.py
+++ /dev/null
@@ -1,711 +0,0 @@
-"""UWSGI Cache based storages implementation module."""
-import logging
-import json
-
-from splitio.storage import SplitStorage, SegmentStorage, ImpressionStorage, EventStorage, \
- TelemetryStorage
-from splitio.models import splits, segments
-from splitio.models.impressions import Impression
-from splitio.models.events import Event
-from splitio.storage.adapters.uwsgi_cache import _SPLITIO_CHANGE_NUMBERS, \
- _SPLITIO_EVENTS_CACHE_NAMESPACE, _SPLITIO_IMPRESSIONS_CACHE_NAMESPACE, \
- _SPLITIO_METRICS_CACHE_NAMESPACE, _SPLITIO_MISC_NAMESPACE, UWSGILock, \
- _SPLITIO_SEGMENTS_CACHE_NAMESPACE, _SPLITIO_SPLITS_CACHE_NAMESPACE, \
- _SPLITIO_LOCK_CACHE_NAMESPACE
-
-
-class UWSGISplitStorage(SplitStorage):
- """UWSGI-Cache based implementation of a split storage."""
-
- _KEY_TEMPLATE = 'split.{suffix}'
- _KEY_TILL = 'splits.till'
- _KEY_FEATURE_LIST = 'splits.list'
- _KEY_FEATURE_LIST_LOCK = 'splits.list.lock'
- _KEY_TRAFFIC_TYPES = 'splits.traffic_types'
- _KEY_TRAFFIC_TYPES_LOCK = 'splits.traffic_types.lock'
- _OVERWRITE_LOCK_SECONDS = 5
-
- def __init__(self, uwsgi_entrypoint):
- """
- Class constructor.
-
- :param uwsgi_entrypoint: UWSGI module. Can be the actual module or a mock.
- :type uwsgi_entrypoint: module
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._uwsgi = uwsgi_entrypoint
-
- def get(self, split_name):
- """
- Retrieve a split.
-
- :param split_name: Name of the feature to fetch.
- :type split_name: str
-
- :rtype: str
- """
- raw = self._uwsgi.cache_get(
- self._KEY_TEMPLATE.format(suffix=split_name),
- _SPLITIO_SPLITS_CACHE_NAMESPACE
- )
- to_return = splits.from_raw(json.loads(raw)) if raw is not None else None
- if not to_return:
- self._logger.warning("Trying to retrieve nonexistant split %s. Ignoring.", split_name)
- return to_return
-
- def fetch_many(self, split_names):
- """
- Retrieve splits.
-
- :param split_names: Names of the features to fetch.
- :type split_name: list(str)
-
- :return: A dict with split objects parsed from queue.
- :rtype: dict(split_name, splitio.models.splits.Split)
- """
- return {split_name: self.get(split_name) for split_name in split_names}
-
- def put(self, split):
- """
- Store a split.
-
- :param split: Split object to store
- :type split: splitio.models.splits.Split
- """
- self._uwsgi.cache_update(
- self._KEY_TEMPLATE.format(suffix=split.name),
- json.dumps(split.to_json()),
- 0,
- _SPLITIO_SPLITS_CACHE_NAMESPACE
- )
- self._add_split_to_list(split.name)
- self._increase_traffic_type_count(split.traffic_type_name)
-
- def remove(self, split_name):
- """
- Remove a split from storage.
-
- :param split_name: Name of the feature to remove.
- :type split_name: str
-
- :return: True if the split was found and removed. False otherwise.
- :rtype: bool
- """
- # We need to fetch the split to get the traffic type name prior to deleting.
- fetched = self.get(split_name)
- if fetched is None:
- self._logger.warning(
- "Tried to remove feature \"%s\" not present in cache. Ignoring.", split_name
- )
- return
-
- result = self._uwsgi.cache_del(
- self._KEY_TEMPLATE.format(suffix=split_name),
- _SPLITIO_SPLITS_CACHE_NAMESPACE
- )
- if result is not False:
- self._logger.warning("Trying to delete nonexistant split %s. Ignoring.", split_name)
-
- self._remove_split_from_list(split_name)
- self._decrease_traffic_type_count(fetched.traffic_type_name)
-
- return result
-
- def get_change_number(self):
- """
- Retrieve latest split change number.
-
- :rtype: int
- """
- try:
- return json.loads(self._uwsgi.cache_get(self._KEY_TILL, _SPLITIO_CHANGE_NUMBERS))
- except TypeError:
- return None
-
- def set_change_number(self, new_change_number):
- """
- Set the latest change number.
-
- :param new_change_number: New change number.
- :type new_change_number: int
- """
- self._uwsgi.cache_update(self._KEY_TILL, str(new_change_number), 0, _SPLITIO_CHANGE_NUMBERS)
-
- def get_split_names(self):
- """
- Return a list of all the split names.
-
- :return: List of split names in cache.
- :rtype: list(str)
- """
- if self._uwsgi.cache_exists(self._KEY_FEATURE_LIST, _SPLITIO_MISC_NAMESPACE):
- try:
- return json.loads(
- self._uwsgi.cache_get(self._KEY_FEATURE_LIST, _SPLITIO_MISC_NAMESPACE)
- )
- except TypeError: # Thrown by json.loads when passing none
- pass # Fall back to default return statement (empty list)
- return []
-
- def get_all_splits(self):
- """
- Return a list of all splits in cache.
-
- :return: List of splits.
- :rtype: list(splitio.models.splits.Split)
- """
- return [self.get(split_name) for split_name in self.get_split_names()]
-
- def is_valid_traffic_type(self, traffic_type_name):
- """
- Return whether the traffic type exists in at least one split in cache.
-
- :param traffic_type_name: Traffic type to validate.
- :type traffic_type_name: str
-
- :return: True if the traffic type is valid. False otherwise.
- :rtype: bool
- """
- try:
- tts = json.loads(
- self._uwsgi.cache_get(self._KEY_TRAFFIC_TYPES, _SPLITIO_MISC_NAMESPACE)
- )
- return traffic_type_name in tts
- except TypeError:
- return False
-
- def _add_split_to_list(self, split_name):
- """
- Add a specific split to the list we keep track of.
-
- :param split_name: Name of the split to add.
- :type split_name: str
- """
- with UWSGILock(self._uwsgi, self._KEY_FEATURE_LIST_LOCK):
- try:
- current = set(json.loads(
- self._uwsgi.cache_get(self._KEY_FEATURE_LIST, _SPLITIO_MISC_NAMESPACE)
- ))
- except TypeError:
- current = set()
- current.add(split_name)
- self._uwsgi.cache_update(
- self._KEY_FEATURE_LIST,
- json.dumps(list(current)),
- 0,
- _SPLITIO_MISC_NAMESPACE
- )
-
- def _remove_split_from_list(self, split_name):
- """
- Remove a specific split from the list we keep track of.
-
- :param split_name: Name of the split to remove.
- :type split_name: str
- """
- with UWSGILock(self._uwsgi, self._KEY_FEATURE_LIST_LOCK):
- try:
- current = set(json.loads(
- self._uwsgi.cache_get(self._KEY_FEATURE_LIST, _SPLITIO_MISC_NAMESPACE)
- ))
- current.remove(split_name)
- self._uwsgi.cache_update(
- self._KEY_FEATURE_LIST,
- json.dumps(list(current)),
- 0,
- _SPLITIO_MISC_NAMESPACE
- )
- except TypeError:
- # Split list not found, no need to delete anything
- pass
- except KeyError:
- # Split not found in list. nothing to do.
- pass
-
- def _increase_traffic_type_count(self, traffic_type_name):
- """
- Increase by 1 the count for a specific traffic type.
-
- :param traffic_type_name: Traffic type name to increase count.
- :type traffic_type_name: str
- """
- with UWSGILock(self._uwsgi, self._KEY_TRAFFIC_TYPES_LOCK):
- try:
- tts = json.loads(
- self._uwsgi.cache_get(self._KEY_TRAFFIC_TYPES, _SPLITIO_MISC_NAMESPACE)
- )
- tts[traffic_type_name] = tts.get(traffic_type_name, 0) + 1
-
- except TypeError:
- tts = {traffic_type_name: 1}
-
- self._uwsgi.cache_update(
- self._KEY_TRAFFIC_TYPES, json.dumps(tts), 0, _SPLITIO_MISC_NAMESPACE
- )
-
- def _decrease_traffic_type_count(self, traffic_type_name):
- """
- Decreaase by 1 the count for a specific traffic type.
-
- :param traffic_type_name: Traffic type name to decrease count.
- :type traffic_type_name: str
- """
- with UWSGILock(self._uwsgi, self._KEY_TRAFFIC_TYPES_LOCK):
- try:
- tts = json.loads(
- self._uwsgi.cache_get(self._KEY_TRAFFIC_TYPES, _SPLITIO_MISC_NAMESPACE)
- )
- tts[traffic_type_name] = tts.get(traffic_type_name, 0) - 1
- if tts[traffic_type_name] <= 0:
- del tts[traffic_type_name]
- except TypeError:
- # Traffic type list not present. nothing to do here.
- return
-
- self._uwsgi.cache_update(
- self._KEY_TRAFFIC_TYPES, json.dumps(tts), 0, _SPLITIO_MISC_NAMESPACE
- )
-
-
-class UWSGISegmentStorage(SegmentStorage):
- """UWSGI-Cache based implementation of a split storage."""
-
- _KEY_TEMPLATE = 'segments.{suffix}'
- _SEGMENT_DATA_KEY_TEMPLATE = 'segmentData.{segment_name}'
- _SEGMENT_CHANGE_NUMBER_KEY_TEMPLATE = 'segment.{segment_name}.till'
-
- def __init__(self, uwsgi_entrypoint):
- """
- Class constructor.
-
- :param uwsgi_entrypoint: UWSGI module. Can be the actual module or a mock.
- :type uwsgi_entrypoint: module
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._uwsgi = uwsgi_entrypoint
-
- def get(self, segment_name):
- """
- Retrieve a segment.
-
- :param segment_name: Name of the segment to fetch.
- :type segment_name: str
-
- :return: Parsed segment if present. None otherwise.
- :rtype: splitio.models.segments.Segment
- """
- key = self._SEGMENT_DATA_KEY_TEMPLATE.format(segment_name=segment_name)
- cn_key = self._SEGMENT_CHANGE_NUMBER_KEY_TEMPLATE.format(segment_name=segment_name)
- try:
- segment_data = json.loads(self._uwsgi.cache_get(key, _SPLITIO_SEGMENTS_CACHE_NAMESPACE))
- change_number = json.loads(self._uwsgi.cache_get(cn_key, _SPLITIO_CHANGE_NUMBERS))
- return segments.from_raw({
- 'name': segment_name,
- 'added': segment_data,
- 'removed': [],
- 'till': change_number
- })
- except TypeError:
- self._logger.warning(
- "Trying to retrieve nonexistant segment %s. Ignoring.",
- segment_name
- )
- return None
-
- def update(self, segment_name, to_add, to_remove, change_number=None):
- """
- Update a segment.
-
- :param segment_name: Name of the segment to update.
- :type segment_name: str
- :param to_add: List of members to add to the segment.
- :type to_add: list
- :param to_remove: List of members to remove from the segment.
- :type to_remove: list
- """
- key = self._SEGMENT_DATA_KEY_TEMPLATE.format(segment_name=segment_name)
- try:
- segment_data = json.loads(self._uwsgi.cache_get(key, _SPLITIO_SEGMENTS_CACHE_NAMESPACE))
- except TypeError:
- segment_data = []
- updated = set(segment_data).union(set(to_add)).difference(to_remove)
- self._uwsgi.cache_update(
- key,
- json.dumps(list(updated)),
- 0,
- _SPLITIO_SEGMENTS_CACHE_NAMESPACE
- )
-
- if change_number is not None:
- self.set_change_number(segment_name, change_number)
-
- def put(self, segment):
- """
- Put a new segment in storage.
-
- :param segment: Segment to store.
- :type segment: splitio.models.segments.Segent
- """
- key = self._SEGMENT_DATA_KEY_TEMPLATE.format(segment_name=segment.name)
- self._uwsgi.cache_update(
- key,
- json.dumps(list(segment.keys)),
- 0,
- _SPLITIO_SEGMENTS_CACHE_NAMESPACE
- )
- self.set_change_number(segment.name, segment.change_number)
-
- def get_change_number(self, segment_name):
- """
- Retrieve latest change number for a segment.
-
- :param segment_name: Name of the segment.
- :type segment_name: str
-
- :rtype: int
- """
- cnkey = self._SEGMENT_CHANGE_NUMBER_KEY_TEMPLATE.format(segment_name=segment_name)
- try:
- return json.loads(self._uwsgi.cache_get(cnkey, _SPLITIO_CHANGE_NUMBERS))
-
- except TypeError:
- return None
-
- def set_change_number(self, segment_name, new_change_number):
- """
- Set the latest change number.
-
- :param segment_name: Name of the segment.
- :type segment_name: str
- :param new_change_number: New change number.
- :type new_change_number: int
- """
- cn_key = self._SEGMENT_CHANGE_NUMBER_KEY_TEMPLATE.format(segment_name=segment_name)
- self._uwsgi.cache_update(cn_key, json.dumps(new_change_number), 0, _SPLITIO_CHANGE_NUMBERS)
-
- def segment_contains(self, segment_name, key):
- """
- Check whether a specific key belongs to a segment in storage.
-
- :param segment_name: Name of the segment to search in.
- :type segment_name: str
- :param key: Key to search for.
- :type key: str
-
- :return: True if the segment contains the key. False otherwise.
- :rtype: bool
- """
- segment = self.get(segment_name)
- return segment.contains(key)
-
-
-class UWSGIImpressionStorage(ImpressionStorage):
- """Impressions storage interface."""
-
- _IMPRESSIONS_KEY = 'SPLITIO.impressions.'
- _LOCK_IMPRESSION_KEY = 'SPLITIO.impressions_lock'
- _IMPRESSIONS_FLUSH = 'SPLITIO.impressions_flush'
- _OVERWRITE_LOCK_SECONDS = 5
-
- def __init__(self, adapter):
- """
- Class Constructor.
-
- :param adapter: UWSGI Adapter/Emulator/Module.
- :type: object
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._uwsgi = adapter
-
- def put(self, impressions):
- """
- Put one or more impressions in storage.
-
- :param impressions: List of one or more impressions to store.
- :type impressions: list
- """
- to_store = [i._asdict() for i in impressions]
- with UWSGILock(self._uwsgi, self._LOCK_IMPRESSION_KEY):
- try:
- current = json.loads(self._uwsgi.cache_get(
- self._IMPRESSIONS_KEY, _SPLITIO_IMPRESSIONS_CACHE_NAMESPACE
- ))
- except TypeError:
- current = []
-
- self._uwsgi.cache_update(
- self._IMPRESSIONS_KEY,
- json.dumps(current + to_store),
- 0,
- _SPLITIO_IMPRESSIONS_CACHE_NAMESPACE
- )
-
- def pop_many(self, count):
- """
- Pop the oldest N impressions from storage.
-
- :param count: Number of impressions to pop.
- :type count: int
- """
- with UWSGILock(self._uwsgi, self._LOCK_IMPRESSION_KEY):
- try:
- current = json.loads(self._uwsgi.cache_get(
- self._IMPRESSIONS_KEY, _SPLITIO_IMPRESSIONS_CACHE_NAMESPACE
- ))
- except TypeError:
- return []
-
- self._uwsgi.cache_update(
- self._IMPRESSIONS_KEY,
- json.dumps(current[count:]),
- 0,
- _SPLITIO_IMPRESSIONS_CACHE_NAMESPACE
- )
-
- return [
- Impression(
- impression['matching_key'],
- impression['feature_name'],
- impression['treatment'],
- impression['label'],
- impression['change_number'],
- impression['bucketing_key'],
- impression['time']
- ) for impression in current[:count]
- ]
-
- def request_flush(self):
- """Set a marker in the events cache to indicate that a flush has been requested."""
- self._uwsgi.cache_set(self._IMPRESSIONS_FLUSH, 'ok', 0, _SPLITIO_LOCK_CACHE_NAMESPACE)
-
- def should_flush(self):
- """
- Return True if a flush has been requested.
-
- :return: Whether a flush has been requested.
- :rtype: bool
- """
- value = self._uwsgi.cache_get(self._IMPRESSIONS_FLUSH, _SPLITIO_LOCK_CACHE_NAMESPACE)
- return True if value is not None else False
-
- def acknowledge_flush(self):
- """Acknowledge that a flush has been requested."""
- self._uwsgi.cache_del(self._IMPRESSIONS_FLUSH, _SPLITIO_LOCK_CACHE_NAMESPACE)
-
-
-class UWSGIEventStorage(EventStorage):
- """Events storage interface."""
-
- _EVENTS_KEY = 'events'
- _LOCK_EVENTS_KEY = 'events_lock'
- _EVENTS_FLUSH = 'events_flush'
- _OVERWRITE_LOCK_SECONDS = 5
-
- def __init__(self, adapter):
- """
- Class Constructor.
-
- :param adapter: UWSGI Adapter/Emulator/Module.
- :type: object
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._uwsgi = adapter
-
- def put(self, events):
- """
- Put one or more events in storage.
-
- :param events: List of one or more events to store.
- :type events: list
- """
- with UWSGILock(self._uwsgi, self._LOCK_EVENTS_KEY):
- try:
- current = json.loads(self._uwsgi.cache_get(
- self._EVENTS_KEY, _SPLITIO_EVENTS_CACHE_NAMESPACE
- ))
- except TypeError:
- current = []
- self._uwsgi.cache_update(
- self._EVENTS_KEY,
- json.dumps(current + [e.event._asdict() for e in events]),
- 0,
- _SPLITIO_EVENTS_CACHE_NAMESPACE
- )
-
- def pop_many(self, count):
- """
- Pop the oldest N events from storage.
-
- :param count: Number of events to pop.
- :type count: int
- """
- with UWSGILock(self._uwsgi, self._LOCK_EVENTS_KEY):
- try:
- current = json.loads(self._uwsgi.cache_get(
- self._EVENTS_KEY, _SPLITIO_EVENTS_CACHE_NAMESPACE
- ))
- except TypeError:
- return []
-
- self._uwsgi.cache_update(
- self._EVENTS_KEY,
- json.dumps(current[count:]),
- 0,
- _SPLITIO_EVENTS_CACHE_NAMESPACE
- )
-
- return [
- Event(
- event['key'],
- event['traffic_type_name'],
- event['event_type_id'],
- event['value'],
- event['timestamp'],
- event['properties']
- )
- for event in current[:count]
- ]
-
- def request_flush(self):
- """Set a marker in the events cache to indicate that a flush has been requested."""
- self._uwsgi.cache_set(self._EVENTS_FLUSH, 'requested', 0, _SPLITIO_LOCK_CACHE_NAMESPACE)
-
- def should_flush(self):
- """
- Return True if a flush has been requested.
-
- :return: Whether a flush has been requested.
- :rtype: bool
- """
- value = self._uwsgi.cache_get(self._EVENTS_FLUSH, _SPLITIO_LOCK_CACHE_NAMESPACE)
- return True if value is not None else False
-
- def acknowledge_flush(self):
- """Acknowledge that a flush has been requested."""
- self._uwsgi.cache_del(self._EVENTS_FLUSH, _SPLITIO_LOCK_CACHE_NAMESPACE)
-
-
-class UWSGITelemetryStorage(TelemetryStorage):
- """Telemetry storage interface."""
-
- _LATENCIES_KEY = 'SPLITIO.latencies'
- _GAUGES_KEY = 'SPLITIO.gauges'
- _COUNTERS_KEY = 'SPLITIO.counters'
-
- _LATENCIES_LOCK_KEY = 'SPLITIO.latencies.lock'
- _GAUGES_LOCK_KEY = 'SPLITIO.gauges.lock'
- _COUNTERS_LOCK_KEY = 'SPLITIO.counters.lock'
-
- def __init__(self, uwsgi_entrypoint):
- """
- Class constructor.
-
- :param uwsgi_entrypoint: uwsgi module/emulator
- :type uwsgi_entrypoint: object
- """
- self._uwsgi = uwsgi_entrypoint
- self._logger = logging.getLogger(self.__class__.__name__)
-
- def inc_latency(self, name, bucket):
- """
- Add a latency.
-
- :param name: Name of the latency metric.
- :type name: str
- :param value: Value of the latency metric.
- :tyoe value: int
- """
- if not 0 <= bucket <= 21:
- self._logger.error('Incorect bucket "%d" for latency "%s". Ignoring.', bucket, name)
- return
-
- with UWSGILock(self._uwsgi, self._LATENCIES_LOCK_KEY):
- latencies_raw = self._uwsgi.cache_get(
- self._LATENCIES_KEY, _SPLITIO_METRICS_CACHE_NAMESPACE)
- latencies = json.loads(latencies_raw) if latencies_raw else {}
- to_update = latencies.get(name, [0] * 22)
- to_update[bucket] += 1
- latencies[name] = to_update
- self._uwsgi.cache_set(
- self._LATENCIES_KEY,
- json.dumps(latencies),
- 0,
- _SPLITIO_METRICS_CACHE_NAMESPACE
- )
-
- def inc_counter(self, name):
- """
- Increment a counter.
-
- :param name: Name of the counter metric.
- :type name: str
- """
- with UWSGILock(self._uwsgi, self._COUNTERS_LOCK_KEY):
- counters_raw = self._uwsgi.cache_get(
- self._COUNTERS_KEY, _SPLITIO_METRICS_CACHE_NAMESPACE)
- counters = json.loads(counters_raw) if counters_raw else {}
- value = counters.get(name, 0)
- value += 1
- counters[name] = value
- self._uwsgi.cache_set(
- self._COUNTERS_KEY,
- json.dumps(counters),
- 0,
- _SPLITIO_METRICS_CACHE_NAMESPACE
- )
-
- def put_gauge(self, name, value):
- """
- Add a gauge metric.
-
- :param name: Name of the gauge metric.
- :type name: str
- :param value: Value of the gauge metric.
- :type value: int
- """
- with UWSGILock(self._uwsgi, self._GAUGES_LOCK_KEY):
- gauges_raw = self._uwsgi.cache_get(self._GAUGES_KEY, _SPLITIO_METRICS_CACHE_NAMESPACE)
- gauges = json.loads(gauges_raw) if gauges_raw else {}
- gauges[name] = value
- self._uwsgi.cache_set(
- self._GAUGES_KEY,
- json.dumps(gauges),
- 0,
- _SPLITIO_METRICS_CACHE_NAMESPACE
- )
-
- def pop_counters(self):
- """
- Get all the counters.
-
- :rtype: list
- """
- with UWSGILock(self._uwsgi, self._COUNTERS_LOCK_KEY):
- counters_raw = self._uwsgi.cache_get(
- self._COUNTERS_KEY, _SPLITIO_METRICS_CACHE_NAMESPACE)
- self._uwsgi.cache_del(self._COUNTERS_KEY, _SPLITIO_METRICS_CACHE_NAMESPACE)
- return json.loads(counters_raw) if counters_raw else {}
-
- def pop_gauges(self):
- """
- Get all the gauges.
-
- :rtype: list
-
- """
- with UWSGILock(self._uwsgi, self._GAUGES_LOCK_KEY):
- gauges_raw = self._uwsgi.cache_get(self._GAUGES_KEY, _SPLITIO_METRICS_CACHE_NAMESPACE)
- self._uwsgi.cache_del(self._GAUGES_KEY, _SPLITIO_METRICS_CACHE_NAMESPACE)
- return json.loads(gauges_raw) if gauges_raw else {}
-
- def pop_latencies(self):
- """
- Get all latencies.
-
- :rtype: list
- """
- with UWSGILock(self._uwsgi, self._LATENCIES_LOCK_KEY):
- latencies_raw = self._uwsgi.cache_get(
- self._LATENCIES_KEY, _SPLITIO_METRICS_CACHE_NAMESPACE)
- self._uwsgi.cache_del(self._LATENCIES_KEY, _SPLITIO_METRICS_CACHE_NAMESPACE)
- return json.loads(latencies_raw) if latencies_raw else {}
diff --git a/splitio/sync/__init__.py b/splitio/sync/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/splitio/sync/event.py b/splitio/sync/event.py
new file mode 100644
index 00000000..ff761670
--- /dev/null
+++ b/splitio/sync/event.py
@@ -0,0 +1,129 @@
+import logging
+import queue
+
+from splitio.api import APIException
+from splitio.optional.loaders import asyncio
+
+_LOGGER = logging.getLogger(__name__)
+
+
+class EventSynchronizer(object):
+ """Event Synchronizer class"""
+ def __init__(self, events_api, storage, bulk_size):
+ """
+ Class constructor.
+
+ :param events_api: Events Api object to send data to the backend
+ :type events_api: splitio.api.events.EventsAPI
+ :param storage: Events Storage
+ :type storage: splitio.storage.EventStorage
+ :param bulk_size: How many events to send per push.
+ :type bulk_size: int
+
+ """
+ self._api = events_api
+ self._event_storage = storage
+ self._bulk_size = bulk_size
+ self._failed = queue.Queue()
+
+ def _get_failed(self):
+ """Return up to events stored in the failed eventes queue."""
+ events = []
+ count = 0
+ while count < self._bulk_size:
+ try:
+ events.append(self._failed.get(False))
+ count += 1
+ except queue.Empty:
+ # If no more items in queue, break the loop
+ break
+ return events
+
+ def _add_to_failed_queue(self, events):
+ """
+ Add events that were about to be sent to a secondary queue for failed sends.
+
+ :param events: List of events that failed to be pushed.
+ :type events: list
+ """
+ for event in events:
+ self._failed.put(event, False)
+
+ def synchronize_events(self):
+ """Send events from both the failed and new queues."""
+ to_send = self._get_failed()
+ if len(to_send) < self._bulk_size:
+ # If the amount of previously failed items is less than the bulk
+ # size, try to complete with new events from storage
+ to_send.extend(self._event_storage.pop_many(self._bulk_size - len(to_send)))
+
+ if not to_send:
+ return
+
+ try:
+ self._api.flush_events(to_send)
+ except APIException:
+ _LOGGER.error('Exception raised while reporting events')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ self._add_to_failed_queue(to_send)
+
+
+class EventSynchronizerAsync(object):
+ """Event Synchronizer async class"""
+ def __init__(self, events_api, storage, bulk_size):
+ """
+ Class constructor.
+
+ :param events_api: Events Api object to send data to the backend
+ :type events_api: splitio.api.events.EventsAPI
+ :param storage: Events Storage
+ :type storage: splitio.storage.EventStorage
+ :param bulk_size: How many events to send per push.
+ :type bulk_size: int
+
+ """
+ self._api = events_api
+ self._event_storage = storage
+ self._bulk_size = bulk_size
+ self._failed = asyncio.Queue()
+
+ async def _get_failed(self):
+ """Return up to events stored in the failed eventes queue."""
+ events = []
+ count = 0
+ while count < self._bulk_size and self._failed.qsize() > 0:
+ try:
+ events.append(await self._failed.get())
+ count += 1
+ except asyncio.QueueEmpty:
+ # If no more items in queue, break the loop
+ break
+ return events
+
+ async def _add_to_failed_queue(self, events):
+ """
+ Add events that were about to be sent to a secondary queue for failed sends.
+
+ :param events: List of events that failed to be pushed.
+ :type events: list
+ """
+ for event in events:
+ await self._failed.put(event)
+
+ async def synchronize_events(self):
+ """Send events from both the failed and new queues."""
+ to_send = await self._get_failed()
+ if len(to_send) < self._bulk_size:
+ # If the amount of previously failed items is less than the bulk
+ # size, try to complete with new events from storage
+ to_send.extend(await self._event_storage.pop_many(self._bulk_size - len(to_send)))
+
+ if not to_send:
+ return
+
+ try:
+ await self._api.flush_events(to_send)
+ except APIException:
+ _LOGGER.error('Exception raised while reporting events')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ await self._add_to_failed_queue(to_send)
diff --git a/splitio/sync/impression.py b/splitio/sync/impression.py
new file mode 100644
index 00000000..8fd54051
--- /dev/null
+++ b/splitio/sync/impression.py
@@ -0,0 +1,191 @@
+import logging
+import queue
+
+from splitio.api import APIException
+from splitio.optional.loaders import asyncio
+
+_LOGGER = logging.getLogger(__name__)
+
+
+class ImpressionSynchronizer(object):
+ """Impressions synchronizer class."""
+ def __init__(self, impressions_api, storage, bulk_size):
+ """
+ Class constructor.
+
+ :param impressions_api: Impressions Api object to send data to the backend
+ :type impressions_api: splitio.api.impressions.ImpressionsAPI
+ :param storage: Impressions Storage
+ :type storage: splitio.storage.ImpressionsStorage
+ :param bulk_size: How many impressions to send per push.
+ :type bulk_size: int
+
+ """
+ self._api = impressions_api
+ self._impression_storage = storage
+ self._bulk_size = bulk_size
+ self._failed = queue.Queue()
+
+ def _get_failed(self):
+ """Return up to impressions stored in the failed impressions queue."""
+ imps = []
+ count = 0
+ while count < self._bulk_size:
+ try:
+ imps.append(self._failed.get(False))
+ count += 1
+ except queue.Empty:
+ # If no more items in queue, break the loop
+ break
+ return imps
+
+ def _add_to_failed_queue(self, imps):
+ """
+ Add impressions that were about to be sent to a secondary queue for failed sends.
+
+ :param imps: List of impressions that failed to be pushed.
+ :type imps: list
+ """
+ for impression in imps:
+ self._failed.put(impression, False)
+
+ def synchronize_impressions(self):
+ """Send impressions from both the failed and new queues."""
+ to_send = self._get_failed()
+ if len(to_send) < self._bulk_size:
+ # If the amount of previously failed items is less than the bulk
+ # size, try to complete with new impressions from storage
+ to_send.extend(self._impression_storage.pop_many(self._bulk_size - len(to_send)))
+
+ if not to_send:
+ return
+
+ try:
+ self._api.flush_impressions(to_send)
+ except APIException:
+ _LOGGER.error('Exception raised while reporting impressions')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ self._add_to_failed_queue(to_send)
+
+
+class ImpressionsCountSynchronizer(object):
+ def __init__(self, impressions_api, imp_counter):
+ """
+ Class constructor.
+
+ :param impressions_api: Impressions Api object to send data to the backend
+ :type impressions_api: splitio.api.impressions.ImpressionsAPI
+ :param impressions_manager: Impressions manager instance
+ :type impressions_manager: splitio.engine.impressions.Manager
+
+ """
+ self._impressions_api = impressions_api
+ self._impressions_counter = imp_counter
+
+ def synchronize_counters(self):
+ """Send impressions from both the failed and new queues."""
+
+ if self._impressions_counter == None:
+ return
+
+ to_send = self._impressions_counter.pop_all()
+ if not to_send:
+ return
+
+ try:
+ self._impressions_api.flush_counters(to_send)
+ except APIException:
+ _LOGGER.error('Exception raised while reporting impression counts')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+
+
+class ImpressionSynchronizerAsync(object):
+ """Impressions async synchronizer class."""
+ def __init__(self, impressions_api, storage, bulk_size):
+ """
+ Class constructor.
+
+ :param impressions_api: Impressions Api object to send data to the backend
+ :type impressions_api: splitio.api.impressions.ImpressionsAPI
+ :param storage: Impressions Storage
+ :type storage: splitio.storage.ImpressionsStorage
+ :param bulk_size: How many impressions to send per push.
+ :type bulk_size: int
+
+ """
+ self._api = impressions_api
+ self._impression_storage = storage
+ self._bulk_size = bulk_size
+ self._failed = asyncio.Queue()
+
+ async def _get_failed(self):
+ """Return up to impressions stored in the failed impressions queue."""
+ imps = []
+ count = 0
+ while count < self._bulk_size and self._failed.qsize() > 0:
+ try:
+ imps.append(await self._failed.get())
+ count += 1
+ except asyncio.QueueEmpty:
+ # If no more items in queue, break the loop
+ break
+ return imps
+
+ async def _add_to_failed_queue(self, imps):
+ """
+ Add impressions that were about to be sent to a secondary queue for failed sends.
+
+ :param imps: List of impressions that failed to be pushed.
+ :type imps: list
+ """
+ for impression in imps:
+ await self._failed.put(impression)
+
+ async def synchronize_impressions(self):
+ """Send impressions from both the failed and new queues."""
+ to_send = await self._get_failed()
+ if len(to_send) < self._bulk_size:
+ # If the amount of previously failed items is less than the bulk
+ # size, try to complete with new impressions from storage
+ to_send.extend(await self._impression_storage.pop_many(self._bulk_size - len(to_send)))
+
+ if not to_send:
+ return
+
+ try:
+ await self._api.flush_impressions(to_send)
+ except APIException:
+ _LOGGER.error('Exception raised while reporting impressions')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ await self._add_to_failed_queue(to_send)
+
+
+class ImpressionsCountSynchronizerAsync(object):
+ def __init__(self, impressions_api, imp_counter):
+ """
+ Class constructor.
+
+ :param impressions_api: Impressions Api object to send data to the backend
+ :type impressions_api: splitio.api.impressions.ImpressionsAPI
+ :param impressions_manager: Impressions manager instance
+ :type impressions_manager: splitio.engine.impressions.Manager
+
+ """
+ self._impressions_api = impressions_api
+ self._impressions_counter = imp_counter
+
+ async def synchronize_counters(self):
+ """Send impressions from both the failed and new queues."""
+
+ if self._impressions_counter == None:
+ return
+
+ to_send = self._impressions_counter.pop_all()
+ if not to_send:
+ return
+
+ try:
+ await self._impressions_api.flush_counters(to_send)
+ except APIException:
+ _LOGGER.error('Exception raised while reporting impression counts')
+ _LOGGER.debug('Exception information: ', exc_info=True)
diff --git a/splitio/sync/manager.py b/splitio/sync/manager.py
new file mode 100644
index 00000000..7254a92e
--- /dev/null
+++ b/splitio/sync/manager.py
@@ -0,0 +1,323 @@
+"""Synchronization manager module."""
+import logging
+import time
+from threading import Thread
+from queue import Queue
+
+from splitio.optional.loaders import asyncio
+from splitio.push.manager import PushManager, PushManagerAsync, Status
+from splitio.api import APIException
+from splitio.util.backoff import Backoff
+from splitio.util.time import get_current_epoch_time_ms
+from splitio.models.telemetry import SSESyncMode, StreamingEventTypes
+from splitio.sync.synchronizer import _SYNC_ALL_NO_RETRIES
+
+_LOGGER = logging.getLogger(__name__)
+
+
+class Manager(object): # pylint:disable=too-many-instance-attributes
+ """Manager Class."""
+
+ _CENTINEL_EVENT = object()
+
+ def __init__(self, ready_flag, synchronizer, auth_api, streaming_enabled, sdk_metadata, telemetry_runtime_producer, sse_url=None, client_key=None): # pylint:disable=too-many-arguments
+ """
+ Construct Manager.
+
+ :param ready_flag: Flag to set when splits initial sync is complete.
+ :type ready_flag: threading.Event
+
+ :param split_synchronizers: synchronizers for performing start/stop logic
+ :type split_synchronizers: splitio.sync.synchronizer.Synchronizer
+
+ :param auth_api: Authentication api client
+ :type auth_api: splitio.api.auth.AuthAPI
+
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+
+ :param streaming_enabled: whether to use streaming or not
+ :type streaming_enabled: bool
+
+ :param sse_url: streaming base url.
+ :type sse_url: str
+
+ :param client_key: client key.
+ :type client_key: str
+ """
+ self._streaming_enabled = streaming_enabled
+ self._ready_flag = ready_flag
+ self._synchronizer = synchronizer
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ if self._streaming_enabled:
+ self._push_status_handler_active = True
+ self._backoff = Backoff()
+ self._queue = Queue()
+ self._push = PushManager(auth_api, synchronizer, self._queue, sdk_metadata, telemetry_runtime_producer, sse_url, client_key)
+ self._push_status_handler = Thread(target=self._streaming_feedback_handler,
+ name='PushStatusHandler', daemon=True)
+
+ def recreate(self):
+ """Recreate poolers for forked processes."""
+ self._synchronizer._split_synchronizers._segment_sync.recreate()
+
+ def start(self, max_retry_attempts=_SYNC_ALL_NO_RETRIES):
+ """Start the SDK synchronization tasks."""
+ try:
+ self._synchronizer.sync_all(max_retry_attempts)
+ self._ready_flag.set()
+ self._synchronizer.start_periodic_data_recording()
+ if self._streaming_enabled:
+ self._push_status_handler.start()
+ self._push.start()
+ else:
+ self._synchronizer.start_periodic_fetching()
+
+ except (APIException, RuntimeError):
+ _LOGGER.error('Exception raised starting Split Manager')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise
+
+ def stop(self, blocking):
+ """
+ Stop manager logic.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.info('Stopping manager tasks')
+ if self._streaming_enabled:
+ self._push_status_handler_active = False
+ self._queue.put(self._CENTINEL_EVENT)
+ self._push.stop()
+ self._synchronizer.shutdown(blocking)
+
+ def _streaming_feedback_handler(self):
+ """
+ Handle status updates from the streaming subsystem.
+
+ :param status: current status of the streaming pipeline.
+ :type status: splitio.push.status_stracker.Status
+ """
+ while self._push_status_handler_active:
+ status = self._queue.get()
+ if status == self._CENTINEL_EVENT:
+ continue
+
+ if status == Status.PUSH_SUBSYSTEM_UP:
+ self._synchronizer.stop_periodic_fetching()
+ self._synchronizer.sync_all()
+ self._push.update_workers_status(True)
+ self._backoff.reset()
+ _LOGGER.info('streaming up and running. disabling periodic fetching.')
+ self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SYNC_MODE_UPDATE, SSESyncMode.STREAMING.value, get_current_epoch_time_ms()))
+ elif status == Status.PUSH_SUBSYSTEM_DOWN:
+ self._push.update_workers_status(False)
+ self._synchronizer.sync_all()
+ self._synchronizer.start_periodic_fetching()
+ _LOGGER.info('streaming temporarily down. starting periodic fetching')
+ self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SYNC_MODE_UPDATE, SSESyncMode.POLLING.value, get_current_epoch_time_ms()))
+ elif status == Status.PUSH_RETRYABLE_ERROR:
+ self._push.update_workers_status(False)
+ self._push.stop(True)
+ self._synchronizer.sync_all()
+ self._synchronizer.start_periodic_fetching()
+ how_long = self._backoff.get()
+ _LOGGER.info('error in streaming. restarting flow in %d seconds', how_long)
+ time.sleep(how_long)
+ self._push.start()
+ elif status == Status.PUSH_NONRETRYABLE_ERROR:
+ self._push.update_workers_status(False)
+ self._push.stop(False)
+ self._synchronizer.sync_all()
+ self._synchronizer.start_periodic_fetching()
+ _LOGGER.info('non-recoverable error in streaming. switching to polling.')
+ self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SYNC_MODE_UPDATE, SSESyncMode.POLLING.value, get_current_epoch_time_ms()))
+ return
+
+
+class ManagerAsync(object): # pylint:disable=too-many-instance-attributes
+ """Manager Class."""
+
+ _CENTINEL_EVENT = object()
+
+ def __init__(self, synchronizer, auth_api, streaming_enabled, sdk_metadata, telemetry_runtime_producer, sse_url=None, client_key=None): # pylint:disable=too-many-arguments
+ """
+ Construct Manager.
+
+ :param split_synchronizers: synchronizers for performing start/stop logic
+ :type split_synchronizers: splitio.sync.synchronizer.Synchronizer
+
+ :param auth_api: Authentication api client
+ :type auth_api: splitio.api.auth.AuthAPI
+
+ :param sdk_metadata: SDK version & machine name & IP.
+ :type sdk_metadata: splitio.client.util.SdkMetadata
+
+ :param streaming_enabled: whether to use streaming or not
+ :type streaming_enabled: bool
+
+ :param sse_url: streaming base url.
+ :type sse_url: str
+
+ :param client_key: client key.
+ :type client_key: str
+ """
+ self._streaming_enabled = streaming_enabled
+ self._synchronizer = synchronizer
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ if self._streaming_enabled:
+ self._push_status_handler_active = True
+ self._backoff = Backoff()
+ self._queue = asyncio.Queue()
+ self._push = PushManagerAsync(auth_api, synchronizer, self._queue, sdk_metadata, telemetry_runtime_producer, sse_url, client_key)
+ self._stopped = False
+
+ async def start(self, max_retry_attempts=_SYNC_ALL_NO_RETRIES):
+ """Start the SDK synchronization tasks."""
+ self._stopped = False
+ try:
+ await self._synchronizer.sync_all(max_retry_attempts)
+ if not self._stopped:
+ self._synchronizer.start_periodic_data_recording()
+ if self._streaming_enabled:
+ asyncio.get_running_loop().create_task(self._streaming_feedback_handler())
+ self._push.start()
+ else:
+ self._synchronizer.start_periodic_fetching()
+ except (APIException, RuntimeError):
+ _LOGGER.error('Exception raised starting Split Manager')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise
+
+ async def stop(self, blocking):
+ """
+ Stop manager logic.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.info('Stopping manager tasks')
+ if self._streaming_enabled:
+ self._push_status_handler_active = False
+ await self._queue.put(self._CENTINEL_EVENT)
+ await self._push.stop(blocking)
+ await self._push.close_sse_http_client()
+ await self._synchronizer.shutdown(blocking)
+ self._stopped = True
+
+ async def _streaming_feedback_handler(self):
+ """
+ Handle status updates from the streaming subsystem.
+
+ :param status: current status of the streaming pipeline.
+ :type status: splitio.push.status_stracker.Status
+ """
+ while self._push_status_handler_active:
+ status = await self._queue.get()
+ if status == self._CENTINEL_EVENT:
+ continue
+ if status == Status.PUSH_SUBSYSTEM_UP:
+ await self._synchronizer.stop_periodic_fetching()
+ await self._synchronizer.sync_all()
+ await self._push.update_workers_status(True)
+ self._backoff.reset()
+ _LOGGER.info('streaming up and running. disabling periodic fetching.')
+ await self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SYNC_MODE_UPDATE, SSESyncMode.STREAMING.value, get_current_epoch_time_ms()))
+ elif status == Status.PUSH_SUBSYSTEM_DOWN:
+ await self._push.update_workers_status(False)
+ await self._synchronizer.sync_all()
+ self._synchronizer.start_periodic_fetching()
+ _LOGGER.info('streaming temporarily down. starting periodic fetching')
+ await self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SYNC_MODE_UPDATE, SSESyncMode.POLLING.value, get_current_epoch_time_ms()))
+ elif status == Status.PUSH_RETRYABLE_ERROR:
+ await self._push.update_workers_status(False)
+ await self._push.stop(True)
+ await self._synchronizer.sync_all()
+ self._synchronizer.start_periodic_fetching()
+ how_long = self._backoff.get()
+ _LOGGER.info('error in streaming. restarting flow in %d seconds', how_long)
+ await asyncio.sleep(how_long)
+ self._push.start()
+ elif status == Status.PUSH_NONRETRYABLE_ERROR:
+ await self._push.update_workers_status(False)
+ await self._push.stop(False)
+ await self._synchronizer.sync_all()
+ self._synchronizer.start_periodic_fetching()
+ _LOGGER.info('non-recoverable error in streaming. switching to polling.')
+ await self._telemetry_runtime_producer.record_streaming_event((StreamingEventTypes.SYNC_MODE_UPDATE, SSESyncMode.POLLING.value, get_current_epoch_time_ms()))
+ return
+
+
+class RedisManagerBase(object): # pylint:disable=too-many-instance-attributes
+ """Manager base Class."""
+
+ def __init__(self, synchronizer): # pylint:disable=too-many-arguments
+ """
+ Construct Manager.
+
+ :param synchronizer: synchronizers for performing start/stop logic
+ :type synchronizer: splitio.sync.synchronizer.Synchronizer
+ """
+ self._ready_flag = True
+ self._synchronizer = synchronizer
+
+ def recreate(self):
+ """Not implemented"""
+ return
+
+ def start(self):
+ """Start the SDK synchronization tasks."""
+ try:
+ self._synchronizer.start_periodic_data_recording()
+
+ except (APIException, RuntimeError):
+ _LOGGER.error('Exception raised starting Split Manager')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise
+
+
+class RedisManager(RedisManagerBase): # pylint:disable=too-many-instance-attributes
+ """Manager Class."""
+
+ def __init__(self, synchronizer): # pylint:disable=too-many-arguments
+ """
+ Construct Manager.
+
+ :param synchronizer: synchronizers for performing start/stop logic
+ :type synchronizer: splitio.sync.synchronizer.Synchronizer
+ """
+ RedisManagerBase.__init__(self, synchronizer)
+
+ def stop(self, blocking):
+ """
+ Stop manager logic.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.info('Stopping manager tasks')
+ self._synchronizer.shutdown(blocking)
+
+
+class RedisManagerAsync(RedisManagerBase): # pylint:disable=too-many-instance-attributes
+ """Manager async Class."""
+
+ def __init__(self, synchronizer): # pylint:disable=too-many-arguments
+ """
+ Construct Manager.
+
+ :param synchronizer: synchronizers for performing start/stop logic
+ :type synchronizer: splitio.sync.synchronizer.Synchronizer
+ """
+ RedisManagerBase.__init__(self, synchronizer)
+
+ async def stop(self, blocking):
+ """
+ Stop manager logic.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.info('Stopping manager tasks')
+ await self._synchronizer.shutdown(blocking)
diff --git a/splitio/sync/segment.py b/splitio/sync/segment.py
new file mode 100644
index 00000000..a87759e1
--- /dev/null
+++ b/splitio/sync/segment.py
@@ -0,0 +1,646 @@
+import logging
+import time
+import json
+import os
+
+from splitio.api import APIException
+from splitio.api.commons import FetchOptions
+from splitio.tasks.util import workerpool
+from splitio.models import segments
+from splitio.util.backoff import Backoff
+from splitio.optional.loaders import asyncio, aiofiles
+from splitio.sync import util
+from splitio.util.storage_helper import get_standard_segment_names_in_rbs_storage, get_standard_segment_names_in_rbs_storage_async
+from splitio.optional.loaders import asyncio
+
+_LOGGER = logging.getLogger(__name__)
+
+
+_ON_DEMAND_FETCH_BACKOFF_BASE = 10 # backoff base starting at 10 seconds
+_ON_DEMAND_FETCH_BACKOFF_MAX_WAIT = 60 # don't sleep for more than 1 minute
+_ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES = 10
+_MAX_WORKERS = 10
+
+
+class SegmentSynchronizer(object):
+ def __init__(self, segment_api, feature_flag_storage, segment_storage, rule_based_segment_storage):
+ """
+ Class constructor.
+
+ :param segment_api: API to retrieve segments from backend.
+ :type segment_api: splitio.api.SegmentApi
+
+ :param feature_flag_storage: Feature Flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+
+ :param segment_storage: Segment storage reference.
+ :type segment_storage: splitio.storage.SegmentStorage
+
+ """
+ self._api = segment_api
+ self._feature_flag_storage = feature_flag_storage
+ self._segment_storage = segment_storage
+ self._rule_based_segment_storage = rule_based_segment_storage
+ self._worker_pool = workerpool.WorkerPool(_MAX_WORKERS, self.synchronize_segment)
+ self._worker_pool.start()
+ self._backoff = Backoff(
+ _ON_DEMAND_FETCH_BACKOFF_BASE,
+ _ON_DEMAND_FETCH_BACKOFF_MAX_WAIT)
+
+ def recreate(self):
+ """
+ Create worker_pool on forked processes.
+
+ """
+ self._worker_pool = workerpool.WorkerPool(_MAX_WORKERS, self.synchronize_segment)
+ self._worker_pool.start()
+
+ def shutdown(self):
+ """
+ Shutdown worker_pool
+
+ """
+ self._worker_pool.stop()
+
+ def _fetch_until(self, segment_name, fetch_options, till=None):
+ """
+ Hit endpoint, update storage and return when since==till.
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+
+ :param fetch_options Fetch options for getting segment definitions.
+ :type fetch_options splitio.api.FetchOptions
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :return: last change number
+ :rtype: int
+ """
+ while True: # Fetch until since==till
+ change_number = self._segment_storage.get_change_number(segment_name)
+ if change_number is None:
+ change_number = -1
+ if till is not None and till < change_number:
+ # the passed till is less than change_number, no need to perform updates
+ return change_number
+
+ try:
+ segment_changes = self._api.fetch_segment(segment_name, change_number,
+ fetch_options)
+ except APIException as exc:
+ _LOGGER.error('Exception raised while fetching segment %s', segment_name)
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise exc
+
+ if change_number == -1: # first time fetching the segment
+ new_segment = segments.from_raw(segment_changes)
+ self._segment_storage.put(new_segment)
+ else:
+ self._segment_storage.update(
+ segment_name,
+ segment_changes['added'],
+ segment_changes['removed'],
+ segment_changes['till']
+ )
+
+ if segment_changes['till'] == segment_changes['since']:
+ return segment_changes['till']
+
+ def _attempt_segment_sync(self, segment_name, fetch_options, till=None):
+ """
+ Hit endpoint, update storage and return True if sync is complete.
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+
+ :param fetch_options Fetch options for getting feature flag definitions.
+ :type fetch_options splitio.api.FetchOptions
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :return: Flags to check if it should perform bypass or operation ended
+ :rtype: bool, int, int
+ """
+ self._backoff.reset()
+ remaining_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES
+ while True:
+ remaining_attempts -= 1
+ change_number = self._fetch_until(segment_name, fetch_options, till)
+ if till is None or till <= change_number:
+ return True, remaining_attempts, change_number
+
+ elif remaining_attempts <= 0:
+ return False, remaining_attempts, change_number
+
+ how_long = self._backoff.get()
+ time.sleep(how_long)
+
+ def synchronize_segment(self, segment_name, till=None):
+ """
+ Update a segment from queue
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+
+ :param till: ChangeNumber received.
+ :type till: int
+
+ :return: True if no error occurs. False otherwise.
+ :rtype: bool
+ """
+ fetch_options = FetchOptions(True, spec=None) # Set Cache-Control to no-cache
+ successful_sync, remaining_attempts, change_number = self._attempt_segment_sync(segment_name, fetch_options, till)
+ attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
+ if successful_sync: # succedeed sync
+ _LOGGER.debug('Refresh completed in %d attempts.', attempts)
+ return True
+ with_cdn_bypass = FetchOptions(True, change_number, spec=None) # Set flag for bypassing CDN
+ without_cdn_successful_sync, remaining_attempts, change_number = self._attempt_segment_sync(segment_name, with_cdn_bypass, till)
+ without_cdn_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
+ if without_cdn_successful_sync:
+ _LOGGER.debug('Refresh completed bypassing the CDN in %d attempts.',
+ without_cdn_attempts)
+ return True
+
+ _LOGGER.debug('No changes fetched after %d attempts with CDN bypassed.',
+ without_cdn_attempts)
+ return False
+
+ def synchronize_segments(self, segment_names = None, dont_wait = False):
+ """
+ Submit all current segments and wait for them to finish depend on dont_wait flag, then set the ready flag.
+
+ :param segment_names: Optional, array of segment names to update.
+ :type segment_name: {str}
+
+ :param dont_wait: Optional, instruct the function to not wait for task completion
+ :type segment_name: boolean
+
+ :return: True if no error occurs or dont_wait flag is True. False otherwise.
+ :rtype: bool
+ """
+ if segment_names is None:
+ segment_names = set(self._feature_flag_storage.get_segment_names())
+ segment_names.update(get_standard_segment_names_in_rbs_storage(self._rule_based_segment_storage))
+
+ for segment_name in segment_names:
+ _LOGGER.debug("Adding segment name to sync worker")
+ _LOGGER.debug(segment_name)
+ self._worker_pool.submit_work(segment_name)
+ if (dont_wait):
+ return True
+
+ return not self._worker_pool.wait_for_completion()
+
+ def segment_exist_in_storage(self, segment_name):
+ """
+ Check if a segment exists in the storage
+
+ :param segment_name: Name of the segment
+ :type segment_name: str
+
+ :return: True if segment exist. False otherwise.
+ :rtype: bool
+ """
+ return self._segment_storage.get(segment_name) != None
+
+
+class SegmentSynchronizerAsync(object):
+ def __init__(self, segment_api, feature_flag_storage, segment_storage, rule_based_segment_storage):
+ """
+ Class constructor.
+
+ :param segment_api: API to retrieve segments from backend.
+ :type segment_api: splitio.api.SegmentApi
+
+ :param feature_flag_storage: Feature Flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+
+ :param segment_storage: Segment storage reference.
+ :type segment_storage: splitio.storage.SegmentStorage
+
+ """
+ self._api = segment_api
+ self._feature_flag_storage = feature_flag_storage
+ self._segment_storage = segment_storage
+ self._rule_based_segment_storage = rule_based_segment_storage
+ self._worker_pool = workerpool.WorkerPoolAsync(_MAX_WORKERS, self.synchronize_segment)
+ self._worker_pool.start()
+ self._backoff = Backoff(
+ _ON_DEMAND_FETCH_BACKOFF_BASE,
+ _ON_DEMAND_FETCH_BACKOFF_MAX_WAIT)
+
+ def recreate(self):
+ """
+ Create worker_pool on forked processes.
+
+ """
+ self._worker_pool = workerpool.WorkerPoolAsync(_MAX_WORKERS, self.synchronize_segment)
+ self._worker_pool.start()
+
+ async def shutdown(self):
+ """
+ Shutdown worker_pool
+
+ """
+ await self._worker_pool.stop()
+
+ async def _fetch_until(self, segment_name, fetch_options, till=None):
+ """
+ Hit endpoint, update storage and return when since==till.
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+
+ :param fetch_options Fetch options for getting segment definitions.
+ :type fetch_options splitio.api.FetchOptions
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :return: last change number
+ :rtype: int
+ """
+ while True: # Fetch until since==till
+ change_number = await self._segment_storage.get_change_number(segment_name)
+ if change_number is None:
+ change_number = -1
+ if till is not None and till < change_number:
+ # the passed till is less than change_number, no need to perform updates
+ return change_number
+
+ try:
+ segment_changes = await self._api.fetch_segment(segment_name, change_number,
+ fetch_options)
+ except APIException as exc:
+ _LOGGER.error('Exception raised while fetching segment %s', segment_name)
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise exc
+
+ if change_number == -1: # first time fetching the segment
+ new_segment = segments.from_raw(segment_changes)
+ await self._segment_storage.put(new_segment)
+ else:
+ await self._segment_storage.update(
+ segment_name,
+ segment_changes['added'],
+ segment_changes['removed'],
+ segment_changes['till']
+ )
+
+ if segment_changes['till'] == segment_changes['since']:
+ return segment_changes['till']
+
+ async def _attempt_segment_sync(self, segment_name, fetch_options, till=None):
+ """
+ Hit endpoint, update storage and return True if sync is complete.
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+
+ :param fetch_options Fetch options for getting feature flag definitions.
+ :type fetch_options splitio.api.FetchOptions
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :return: Flags to check if it should perform bypass or operation ended
+ :rtype: bool, int, int
+ """
+ self._backoff.reset()
+ remaining_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES
+ while True:
+ remaining_attempts -= 1
+ change_number = await self._fetch_until(segment_name, fetch_options, till)
+ if till is None or till <= change_number:
+ return True, remaining_attempts, change_number
+
+ elif remaining_attempts <= 0:
+ return False, remaining_attempts, change_number
+
+ how_long = self._backoff.get()
+ await asyncio.sleep(how_long)
+
+ async def synchronize_segment(self, segment_name, till=None):
+ """
+ Update a segment from queue
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+
+ :param till: ChangeNumber received.
+ :type till: int
+
+ :return: True if no error occurs. False otherwise.
+ :rtype: bool
+ """
+ fetch_options = FetchOptions(True, spec=None) # Set Cache-Control to no-cache
+ successful_sync, remaining_attempts, change_number = await self._attempt_segment_sync(segment_name, fetch_options, till)
+ attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
+ if successful_sync: # succedeed sync
+ _LOGGER.debug('Refresh completed in %d attempts.', attempts)
+ return True
+
+ with_cdn_bypass = FetchOptions(True, change_number, spec=None) # Set flag for bypassing CDN
+ without_cdn_successful_sync, remaining_attempts, change_number = await self._attempt_segment_sync(segment_name, with_cdn_bypass, till)
+ without_cdn_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
+ if without_cdn_successful_sync:
+ _LOGGER.debug('Refresh completed bypassing the CDN in %d attempts.',
+ without_cdn_attempts)
+ return True
+
+ _LOGGER.debug('No changes fetched after %d attempts with CDN bypassed.',
+ without_cdn_attempts)
+ return False
+
+ async def synchronize_segments(self, segment_names = None, dont_wait = False):
+ """
+ Submit all current segments and wait for them to finish depend on dont_wait flag, then set the ready flag.
+
+ :param segment_names: Optional, array of segment names to update.
+ :type segment_name: {str}
+
+ :param dont_wait: Optional, instruct the function to not wait for task completion
+ :type segment_name: boolean
+
+ :return: True if no error occurs or dont_wait flag is True. False otherwise.
+ :rtype: bool
+ """
+ if segment_names is None:
+ segment_names = set(await self._feature_flag_storage.get_segment_names())
+ segment_names.update(await get_standard_segment_names_in_rbs_storage_async(self._rule_based_segment_storage))
+
+ self._jobs = await self._worker_pool.submit_work(segment_names)
+ if (dont_wait):
+ return True
+
+ return await self._jobs.await_completion()
+
+ async def segment_exist_in_storage(self, segment_name):
+ """
+ Check if a segment exists in the storage
+
+ :param segment_name: Name of the segment
+ :type segment_name: str
+
+ :return: True if segment exist. False otherwise.
+ :rtype: bool
+ """
+ return await self._segment_storage.get(segment_name) != None
+
+
+class LocalSegmentSynchronizerBase(object):
+ """Localhost mode segment base synchronizer."""
+
+ _DEFAULT_SEGMENT_TILL = -1
+
+ def _sanitize_segment(self, parsed):
+ """
+ Sanitize json elements.
+
+ :param parsed: segment dict
+ :type parsed: Dict
+
+ :return: sanitized segment structure dict
+ :rtype: Dict
+ """
+ if 'name' not in parsed or parsed['name'] is None:
+ _LOGGER.warning("Segment does not have [name] element, skipping")
+ raise Exception("Segment does not have [name] element")
+ if parsed['name'].strip() == '':
+ _LOGGER.warning("Segment [name] element is blank, skipping")
+ raise Exception("Segment [name] element is blank")
+
+ for element in [('till', -1, -1, None, None, [0]),
+ ('added', [], None, None, None, None),
+ ('removed', [], None, None, None, None)
+ ]:
+ parsed = util._sanitize_object_element(parsed, 'segment', element[0], element[1], lower_value=element[2], upper_value=element[3], in_list=None, not_in_list=element[5])
+ parsed = util._sanitize_object_element(parsed, 'segment', 'since', parsed['till'], -1, parsed['till'], None, [0])
+
+ return parsed
+
+
+class LocalSegmentSynchronizer(LocalSegmentSynchronizerBase):
+ """Localhost mode segment synchronizer."""
+
+ def __init__(self, segment_folder, feature_flag_storage, segment_storage):
+ """
+ Class constructor.
+
+ :param segment_folder: patch to the segment folder
+ :type segment_folder: str
+
+ :param feature_flag_storage: Feature flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+
+ :param segment_storage: Segment storage reference.
+ :type segment_storage: splitio.storage.SegmentStorage
+
+ """
+ self._segment_folder = segment_folder
+ self._feature_flag_storage = feature_flag_storage
+ self._segment_storage = segment_storage
+ self._segment_sha = {}
+
+ def synchronize_segments(self, segment_names = None):
+ """
+ Loop through given segment names and synchronize each one.
+
+ :param segment_names: Optional, array of segment names to update.
+ :type segment_name: {str}
+
+ :return: True if no error occurs. False otherwise.
+ :rtype: bool
+ """
+ _LOGGER.info('Synchronizing segments now.')
+ if segment_names is None:
+ segment_names = self._feature_flag_storage.get_segment_names()
+
+ return_flag = True
+ for segment_name in segment_names:
+ if not self.synchronize_segment(segment_name):
+ return_flag = False
+
+ return return_flag
+
+ def synchronize_segment(self, segment_name, till=None):
+ """
+ Update a segment from queue
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+
+ :param till: ChangeNumber received.
+ :type till: int
+
+ :return: True if no error occurs. False otherwise.
+ :rtype: bool
+ """
+ try:
+ fetched = self._read_segment_from_json_file(segment_name)
+ fetched_sha = util._get_sha(json.dumps(fetched))
+ if not self.segment_exist_in_storage(segment_name):
+ self._segment_sha[segment_name] = fetched_sha
+ self._segment_storage.put(segments.from_raw(fetched))
+ _LOGGER.debug("segment %s is added to storage", segment_name)
+ return True
+
+ if fetched_sha == self._segment_sha[segment_name]:
+ return True
+
+ self._segment_sha[segment_name] = fetched_sha
+ if self._segment_storage.get_change_number(segment_name) > fetched['till'] and fetched['till'] != self._DEFAULT_SEGMENT_TILL:
+ return True
+
+ self._segment_storage.update(segment_name, fetched['added'], fetched['removed'], fetched['till'])
+ _LOGGER.debug("segment %s is updated", segment_name)
+ except Exception as e:
+ _LOGGER.error("Could not fetch segment: %s \n" + str(e), segment_name)
+ return False
+
+ return True
+
+ def _read_segment_from_json_file(self, filename):
+ """
+ Parse a segment and store in segment storage.
+
+ :param filename: Path of the file containing Feature flag
+ :type filename: str.
+
+ :return: Sanitized segment structure
+ :rtype: Dict
+ """
+ try:
+ with open(os.path.join(self._segment_folder, "%s.json" % filename), 'r') as flo:
+ parsed = json.load(flo)
+ santitized_segment = self._sanitize_segment(parsed)
+ return santitized_segment
+ except Exception as exc:
+ raise ValueError("Error parsing file %s. Make sure it's readable." % filename) from exc
+
+ def segment_exist_in_storage(self, segment_name):
+ """
+ Check if a segment exists in the storage
+
+ :param segment_name: Name of the segment
+ :type segment_name: str
+
+ :return: True if segment exist. False otherwise.
+ :rtype: bool
+ """
+ return self._segment_storage.get(segment_name) != None
+
+
+class LocalSegmentSynchronizerAsync(LocalSegmentSynchronizerBase):
+ """Localhost mode segment async synchronizer."""
+
+ def __init__(self, segment_folder, feature_flag_storage, segment_storage):
+ """
+ Class constructor.
+
+ :param segment_folder: patch to the segment folder
+ :type segment_folder: str
+
+ :param feature_flag_storage: Feature flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+
+ :param segment_storage: Segment storage reference.
+ :type segment_storage: splitio.storage.SegmentStorage
+
+ """
+ self._segment_folder = segment_folder
+ self._feature_flag_storage = feature_flag_storage
+ self._segment_storage = segment_storage
+ self._segment_sha = {}
+
+ async def synchronize_segments(self, segment_names = None):
+ """
+ Loop through given segment names and synchronize each one.
+
+ :param segment_names: Optional, array of segment names to update.
+ :type segment_name: {str}
+
+ :return: True if no error occurs. False otherwise.
+ :rtype: bool
+ """
+ _LOGGER.info('Synchronizing segments now.')
+ if segment_names is None:
+ segment_names = await self._feature_flag_storage.get_segment_names()
+
+ return_flag = True
+ for segment_name in segment_names:
+ if not await self.synchronize_segment(segment_name):
+ return_flag = False
+
+ return return_flag
+
+ async def synchronize_segment(self, segment_name, till=None):
+ """
+ Update a segment from queue
+
+ :param segment_name: Name of the segment to update.
+ :type segment_name: str
+
+ :param till: ChangeNumber received.
+ :type till: int
+
+ :return: True if no error occurs. False otherwise.
+ :rtype: bool
+ """
+ try:
+ fetched = await self._read_segment_from_json_file(segment_name)
+ fetched_sha = util._get_sha(json.dumps(fetched))
+ if not await self.segment_exist_in_storage(segment_name):
+ self._segment_sha[segment_name] = fetched_sha
+ await self._segment_storage.put(segments.from_raw(fetched))
+ _LOGGER.debug("segment %s is added to storage", segment_name)
+ return True
+
+ if fetched_sha == self._segment_sha[segment_name]:
+ return True
+
+ self._segment_sha[segment_name] = fetched_sha
+ if await self._segment_storage.get_change_number(segment_name) > fetched['till'] and fetched['till'] != self._DEFAULT_SEGMENT_TILL:
+ return True
+
+ await self._segment_storage.update(segment_name, fetched['added'], fetched['removed'], fetched['till'])
+ _LOGGER.debug("segment %s is updated", segment_name)
+ except Exception as e:
+ _LOGGER.error("Could not fetch segment: %s \n" + str(e), segment_name)
+ return False
+
+ return True
+
+ async def _read_segment_from_json_file(self, filename):
+ """
+ Parse a segment and store in segment storage.
+
+ :param filename: Path of the file containing Feature flag
+ :type filename: str.
+
+ :return: Sanitized segment structure
+ :rtype: Dict
+ """
+ try:
+ async with aiofiles.open(os.path.join(self._segment_folder, "%s.json" % filename), 'r') as flo:
+ parsed = json.loads(await flo.read())
+ santitized_segment = self._sanitize_segment(parsed)
+ return santitized_segment
+ except Exception as exc:
+ raise ValueError("Error parsing file %s. Make sure it's readable." % filename) from exc
+
+ async def segment_exist_in_storage(self, segment_name):
+ """
+ Check if a segment exists in the storage
+
+ :param segment_name: Name of the segment
+ :type segment_name: str
+
+ :return: True if segment exist. False otherwise.
+ :rtype: bool
+ """
+ return await self._segment_storage.get(segment_name) != None
diff --git a/splitio/sync/split.py b/splitio/sync/split.py
new file mode 100644
index 00000000..c1b5aa39
--- /dev/null
+++ b/splitio/sync/split.py
@@ -0,0 +1,989 @@
+"""Splits synchronization logic."""
+import logging
+import re
+import itertools
+import yaml
+import time
+import json
+from enum import Enum
+
+from splitio.api import APIException, APIUriException
+from splitio.api.commons import FetchOptions
+from splitio.client.input_validator import validate_flag_sets
+from splitio.models import splits, rule_based_segments
+from splitio.util.backoff import Backoff
+from splitio.util.time import get_current_epoch_time_ms
+from splitio.util.storage_helper import update_feature_flag_storage, update_feature_flag_storage_async, \
+ update_rule_based_segment_storage, update_rule_based_segment_storage_async
+
+from splitio.sync import util
+from splitio.optional.loaders import asyncio, aiofiles
+
+_LEGACY_COMMENT_LINE_RE = re.compile(r'^#.*$')
+_LEGACY_DEFINITION_LINE_RE = re.compile(r'^(?[\w_-]+)\s+(?P[\w_-]+)$')
+
+
+_LOGGER = logging.getLogger(__name__)
+
+
+_ON_DEMAND_FETCH_BACKOFF_BASE = 10 # backoff base starting at 10 seconds
+_ON_DEMAND_FETCH_BACKOFF_MAX_WAIT = 30 # don't sleep for more than 30 seconds
+_ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES = 10
+
+
+class SplitSynchronizerBase(object):
+ """Feature Flag changes synchronizer."""
+
+ def __init__(self, feature_flag_api, feature_flag_storage, rule_based_segment_storage):
+ """
+ Class constructor.
+
+ :param feature_flag_api: Feature Flag API Client.
+ :type feature_flag_api: splitio.api.splits.SplitsAPI
+
+ :param feature_flag_storage: Feature Flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+
+ :param rule_based_segment_storage: Rule based segment Storage.
+ :type rule_based_segment_storage: splitio.storage.InMemoryRuleBasedStorage
+ """
+ self._api = feature_flag_api
+ self._feature_flag_storage = feature_flag_storage
+ self._rule_based_segment_storage = rule_based_segment_storage
+ self._backoff = Backoff(
+ _ON_DEMAND_FETCH_BACKOFF_BASE,
+ _ON_DEMAND_FETCH_BACKOFF_MAX_WAIT)
+
+ @property
+ def feature_flag_storage(self):
+ """Return Feature_flag storage object"""
+ return self._feature_flag_storage
+
+ @property
+ def rule_based_segment_storage(self):
+ """Return rule base segment storage object"""
+ return self._rule_based_segment_storage
+
+ def _get_config_sets(self):
+ """
+ Get all filter flag sets cnverrted to string, if no filter flagsets exist return None
+ :return: string with flagsets
+ :rtype: str
+ """
+ if self._feature_flag_storage.flag_set_filter.flag_sets == set({}):
+ return None
+
+ return ','.join(self._feature_flag_storage.flag_set_filter.sorted_flag_sets)
+
+ def _check_exit_conditions(self, till, rbs_till, change_number, rbs_change_number):
+ return (till is not None and till < change_number) or (rbs_till is not None and rbs_till < rbs_change_number)
+
+ def _check_return_conditions(self, feature_flag_changes):
+ return feature_flag_changes.get('ff')['t'] == feature_flag_changes.get('ff')['s'] and feature_flag_changes.get('rbs')['t'] == feature_flag_changes.get('rbs')['s']
+
+class SplitSynchronizer(SplitSynchronizerBase):
+ """Feature Flag changes synchronizer."""
+
+ def __init__(self, feature_flag_api, feature_flag_storage, rule_based_segment_storage):
+ """
+ Class constructor.
+
+ :param feature_flag_api: Feature Flag API Client.
+ :type feature_flag_api: splitio.api.splits.SplitsAPI
+
+ :param feature_flag_storage: Feature Flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+
+ :param rule_based_segment_storage: Rule based segment Storage.
+ :type rule_based_segment_storage: splitio.storage.InMemoryRuleBasedStorage
+ """
+ SplitSynchronizerBase.__init__(self, feature_flag_api, feature_flag_storage, rule_based_segment_storage)
+
+ def _fetch_until(self, fetch_options, till=None, rbs_till=None):
+ """
+ Hit endpoint, update storage and return when since==till.
+
+ :param fetch_options Fetch options for getting feature flag definitions.
+ :type fetch_options splitio.api.FetchOptions
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :param rbs_till: Passed rbs till from Streaming.
+ :type rbs_till: int
+
+ :return: last change number
+ :rtype: int
+ """
+ segment_list = set()
+ while True: # Fetch until since==till
+ change_number = self._feature_flag_storage.get_change_number()
+ if change_number is None:
+ change_number = -1
+
+ rbs_change_number = self._rule_based_segment_storage.get_change_number()
+ if rbs_change_number is None:
+ rbs_change_number = -1
+
+ if self._check_exit_conditions(till, rbs_till, change_number, rbs_change_number):
+ # the passed till is less than change_number, no need to perform updates
+ return change_number, rbs_change_number, segment_list
+
+ try:
+ feature_flag_changes = self._api.fetch_splits(change_number, rbs_change_number, fetch_options)
+ except APIException as exc:
+ if exc._status_code is not None and exc._status_code == 414:
+ _LOGGER.error('Exception caught: the amount of flag sets provided are big causing uri length error.')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise APIUriException("URI is too long due to FlagSets count", exc._status_code)
+
+ _LOGGER.error('Exception raised while fetching feature flags')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise exc
+
+ fetched_rule_based_segments = [(rule_based_segments.from_raw(rule_based_segment)) for rule_based_segment in feature_flag_changes.get('rbs').get('d', [])]
+ rbs_segment_list = update_rule_based_segment_storage(self._rule_based_segment_storage, fetched_rule_based_segments, feature_flag_changes.get('rbs')['t'], self._api.clear_storage)
+
+ fetched_feature_flags = [(splits.from_raw(feature_flag)) for feature_flag in feature_flag_changes.get('ff').get('d', [])]
+ segment_list.update(update_feature_flag_storage(self._feature_flag_storage, fetched_feature_flags, feature_flag_changes.get('ff')['t'], self._api.clear_storage))
+ segment_list.update(rbs_segment_list)
+
+ if self._check_return_conditions(feature_flag_changes):
+ return feature_flag_changes.get('ff')['t'], feature_flag_changes.get('rbs')['t'], segment_list
+
+ def _attempt_feature_flag_sync(self, fetch_options, till=None, rbs_till=None):
+ """
+ Hit endpoint, update storage and return True if sync is complete.
+
+ :param fetch_options Fetch options for getting feature flag definitions.
+ :type fetch_options splitio.api.FetchOptions
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :param rbs_till: Passed rbs till from Streaming.
+ :type rbs_till: int
+
+ :return: Flags to check if it should perform bypass or operation ended
+ :rtype: bool, int, int
+ """
+ self._backoff.reset()
+ final_segment_list = set()
+ remaining_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES
+ while True:
+ remaining_attempts -= 1
+ change_number, rbs_change_number, segment_list = self._fetch_until(fetch_options, till, rbs_till)
+ final_segment_list.update(segment_list)
+ if (till is None or till <= change_number) and (rbs_till is None or rbs_till <= rbs_change_number):
+ return True, remaining_attempts, change_number, rbs_change_number, final_segment_list
+
+ elif remaining_attempts <= 0:
+ return False, remaining_attempts, change_number, rbs_change_number, final_segment_list
+
+ how_long = self._backoff.get()
+ time.sleep(how_long)
+
+ def _get_config_sets(self):
+ """
+ Get all filter flag sets cnverrted to string, if no filter flagsets exist return None
+
+ :return: string with flagsets
+ :rtype: str
+ """
+ if self._feature_flag_storage.flag_set_filter.flag_sets == set({}):
+ return None
+
+ return ','.join(self._feature_flag_storage.flag_set_filter.sorted_flag_sets)
+
+ def synchronize_splits(self, till=None, rbs_till=None):
+ """
+ Hit endpoint, update storage and return True if sync is complete.
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :param rbs_till: Passed rbs till from Streaming.
+ :type rbs_till: int
+ """
+ final_segment_list = set()
+ fetch_options = FetchOptions(True, sets=self._get_config_sets()) # Set Cache-Control to no-cache
+ successful_sync, remaining_attempts, change_number, rbs_change_number, segment_list = self._attempt_feature_flag_sync(fetch_options,
+ till, rbs_till)
+ final_segment_list.update(segment_list)
+ attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
+ if successful_sync: # succedeed sync
+ _LOGGER.debug('Refresh completed in %d attempts.', attempts)
+ return final_segment_list
+
+ with_cdn_bypass = FetchOptions(True, change_number, rbs_change_number, sets=self._get_config_sets()) # Set flag for bypassing CDN
+ without_cdn_successful_sync, remaining_attempts, change_number, rbs_change_number, segment_list = self._attempt_feature_flag_sync(with_cdn_bypass, till, rbs_till)
+ final_segment_list.update(segment_list)
+ without_cdn_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
+ if without_cdn_successful_sync:
+ _LOGGER.debug('Refresh completed bypassing the CDN in %d attempts.',
+ without_cdn_attempts)
+ return final_segment_list
+ else:
+ _LOGGER.debug('No changes fetched after %d attempts with CDN bypassed.',
+ without_cdn_attempts)
+
+ def kill_split(self, feature_flag_name, default_treatment, change_number):
+ """
+ Local kill for feature flag.
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ self._feature_flag_storage.kill_locally(feature_flag_name, default_treatment, change_number)
+
+class SplitSynchronizerAsync(SplitSynchronizerBase):
+ """Feature Flag changes synchronizer async."""
+
+ def __init__(self, feature_flag_api, feature_flag_storage, rule_based_segment_storage):
+ """
+ Class constructor.
+
+ :param feature_flag_api: Feature Flag API Client.
+ :type feature_flag_api: splitio.api.splits.SplitsAPI
+
+ :param feature_flag_storage: Feature Flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+
+ :param rule_based_segment_storage: Rule based segment Storage.
+ :type rule_based_segment_storage: splitio.storage.InMemoryRuleBasedStorage
+ """
+ SplitSynchronizerBase.__init__(self, feature_flag_api, feature_flag_storage, rule_based_segment_storage)
+
+ async def _fetch_until(self, fetch_options, till=None, rbs_till=None):
+ """
+ Hit endpoint, update storage and return when since==till.
+
+ :param fetch_options Fetch options for getting feature flag definitions.
+ :type fetch_options splitio.api.FetchOptions
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :param rbs_till: Passed rbs till from Streaming.
+ :type rbs_till: int
+
+ :return: last change number
+ :rtype: int
+ """
+ segment_list = set()
+ while True: # Fetch until since==till
+ change_number = await self._feature_flag_storage.get_change_number()
+ if change_number is None:
+ change_number = -1
+
+ rbs_change_number = await self._rule_based_segment_storage.get_change_number()
+ if rbs_change_number is None:
+ rbs_change_number = -1
+
+ if self._check_exit_conditions(till, rbs_till, change_number, rbs_change_number):
+ # the passed till is less than change_number, no need to perform updates
+ return change_number, rbs_change_number, segment_list
+
+ try:
+ feature_flag_changes = await self._api.fetch_splits(change_number, rbs_change_number, fetch_options)
+ except APIException as exc:
+ if exc._status_code is not None and exc._status_code == 414:
+ _LOGGER.error('Exception caught: the amount of flag sets provided are big causing uri length error.')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise APIUriException("URI is too long due to FlagSets count", exc._status_code)
+
+ _LOGGER.error('Exception raised while fetching feature flags')
+ _LOGGER.debug('Exception information: ', exc_info=True)
+ raise exc
+
+ fetched_rule_based_segments = [(rule_based_segments.from_raw(rule_based_segment)) for rule_based_segment in feature_flag_changes.get('rbs').get('d', [])]
+ rbs_segment_list = await update_rule_based_segment_storage_async(self._rule_based_segment_storage, fetched_rule_based_segments, feature_flag_changes.get('rbs')['t'], self._api.clear_storage)
+
+ fetched_feature_flags = [(splits.from_raw(feature_flag)) for feature_flag in feature_flag_changes.get('ff').get('d', [])]
+ segment_list = await update_feature_flag_storage_async(self._feature_flag_storage, fetched_feature_flags, feature_flag_changes.get('ff')['t'], self._api.clear_storage)
+ segment_list.update(rbs_segment_list)
+
+ if self._check_return_conditions(feature_flag_changes):
+ return feature_flag_changes.get('ff')['t'], feature_flag_changes.get('rbs')['t'], segment_list
+
+ async def _attempt_feature_flag_sync(self, fetch_options, till=None, rbs_till=None):
+ """
+ Hit endpoint, update storage and return True if sync is complete.
+
+ :param fetch_options Fetch options for getting feature flag definitions.
+ :type fetch_options splitio.api.FetchOptions
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :param rbs_till: Passed rbs till from Streaming.
+ :type rbs_till: int
+
+ :return: Flags to check if it should perform bypass or operation ended
+ :rtype: bool, int, int
+ """
+ self._backoff.reset()
+ final_segment_list = set()
+ remaining_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES
+ while True:
+ remaining_attempts -= 1
+ change_number, rbs_change_number, segment_list = await self._fetch_until(fetch_options, till, rbs_till)
+ final_segment_list.update(segment_list)
+ if (till is None or till <= change_number) and (rbs_till is None or rbs_till <= rbs_change_number):
+ return True, remaining_attempts, change_number, rbs_change_number, final_segment_list
+
+ elif remaining_attempts <= 0:
+ return False, remaining_attempts, change_number, rbs_change_number, final_segment_list
+
+ how_long = self._backoff.get()
+ await asyncio.sleep(how_long)
+
+ async def synchronize_splits(self, till=None, rbs_till=None):
+ """
+ Hit endpoint, update storage and return True if sync is complete.
+
+ :param till: Passed till from Streaming.
+ :type till: int
+
+ :param rbs_till: Passed rbs till from Streaming.
+ :type rbs_till: int
+ """
+ final_segment_list = set()
+ fetch_options = FetchOptions(True, sets=self._get_config_sets()) # Set Cache-Control to no-cache
+ successful_sync, remaining_attempts, change_number, rbs_change_number, segment_list = await self._attempt_feature_flag_sync(fetch_options,
+ till, rbs_till)
+ final_segment_list.update(segment_list)
+ attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
+ if successful_sync: # succedeed sync
+ _LOGGER.debug('Refresh completed in %d attempts.', attempts)
+ return final_segment_list
+
+ with_cdn_bypass = FetchOptions(True, change_number, rbs_change_number, sets=self._get_config_sets()) # Set flag for bypassing CDN
+ without_cdn_successful_sync, remaining_attempts, change_number, rbs_change_number, segment_list = await self._attempt_feature_flag_sync(with_cdn_bypass, till, rbs_till)
+ final_segment_list.update(segment_list)
+ without_cdn_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES - remaining_attempts
+ if without_cdn_successful_sync:
+ _LOGGER.debug('Refresh completed bypassing the CDN in %d attempts.',
+ without_cdn_attempts)
+ return final_segment_list
+
+ else:
+ _LOGGER.debug('No changes fetched after %d attempts with CDN bypassed.',
+ without_cdn_attempts)
+
+ async def kill_split(self, feature_flag_name, default_treatment, change_number):
+ """
+ Local kill for feature flag.
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ await self._feature_flag_storage.kill_locally(feature_flag_name, default_treatment, change_number)
+
+
+class LocalhostMode(Enum):
+ """types for localhost modes"""
+ LEGACY = 0
+ YAML = 1
+ JSON = 2
+
+class LocalSplitSynchronizerBase(object):
+ """Localhost mode feature_flag base synchronizer."""
+
+ _DEFAULT_FEATURE_FLAG_TILL = -1
+ _DEFAULT_RB_SEGMENT_TILL = -1
+
+ def __init__(self, filename, feature_flag_storage, rule_based_segment_storage, localhost_mode=LocalhostMode.LEGACY):
+ """
+ Class constructor.
+
+ :param filename: File to parse feature flags from.
+ :type filename: str
+ :param feature_flag_storage: Feature flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+ :param localhost_mode: mode for localhost either JSON, YAML or LEGACY.
+ :type localhost_mode: splitio.sync.split.LocalhostMode
+ """
+ self._filename = filename
+ self._feature_flag_storage = feature_flag_storage
+ self._rule_based_segment_storage = rule_based_segment_storage
+ self._localhost_mode = localhost_mode
+ self._current_ff_sha = "-1"
+ self._current_rbs_sha = "-1"
+
+ @staticmethod
+ def _make_feature_flag(feature_flag_name, conditions, configs=None):
+ """
+ Make a Feature flag with a single all_keys matcher.
+
+ :param feature_flag_name: Name of the feature flag.
+ :type feature_flag_name: str.
+ """
+ return splits.from_raw({
+ 'changeNumber': 123,
+ 'trafficTypeName': 'user',
+ 'name': feature_flag_name,
+ 'trafficAllocation': 100,
+ 'trafficAllocationSeed': 123456,
+ 'seed': 321654,
+ 'status': 'ACTIVE',
+ 'killed': False,
+ 'defaultTreatment': 'control',
+ 'algo': 2,
+ 'conditions': conditions,
+ 'configurations': configs,
+ 'prerequisites': []
+ })
+
+ @staticmethod
+ def _make_all_keys_condition(treatment):
+ return {
+ 'partitions': [
+ {'treatment': treatment, 'size': 100}
+ ],
+ 'conditionType': 'WHITELIST',
+ 'label': 'some_other_label',
+ 'matcherGroup': {
+ 'matchers': [
+ {
+ 'matcherType': 'ALL_KEYS',
+ 'negate': False,
+ }
+ ],
+ 'combiner': 'AND'
+ }
+ }
+
+ @staticmethod
+ def _make_whitelist_condition(whitelist, treatment):
+ return {
+ 'partitions': [
+ {'treatment': treatment, 'size': 100}
+ ],
+ 'conditionType': 'WHITELIST',
+ 'label': 'some_other_label',
+ 'matcherGroup': {
+ 'matchers': [
+ {
+ 'matcherType': 'WHITELIST',
+ 'negate': False,
+ 'whitelistMatcherData': {
+ 'whitelist': whitelist
+ }
+ }
+ ],
+ 'combiner': 'AND'
+ }
+ }
+
+ def _sanitize_json_elements(self, parsed):
+ """
+ Sanitize all json elements.
+
+ :param parsed: feature flags, till and since elements dict
+ :type parsed: Dict
+
+ :return: sanitized structure dict
+ :rtype: Dict
+ """
+ parsed = self._satitize_json_section(parsed, 'ff')
+ parsed = self._satitize_json_section(parsed, 'rbs')
+
+ return parsed
+
+ def _satitize_json_section(self, parsed, section_name):
+ """
+ Sanitize specific json section.
+
+ :param parsed: feature flags, till and since elements dict
+ :type parsed: Dict
+
+ :return: sanitized structure dict
+ :rtype: Dict
+ """
+ if section_name not in parsed:
+ parsed['ff'] = {"t": -1, "s": -1, "d": []}
+ if 'd' not in parsed[section_name]:
+ parsed[section_name]['d'] = []
+ if 't' not in parsed[section_name] or parsed[section_name]['t'] is None or parsed[section_name]['t'] < -1:
+ parsed[section_name]['t'] = -1
+ if 's' not in parsed[section_name] or parsed[section_name]['s'] is None or parsed[section_name]['s'] < -1 or parsed[section_name]['s'] > parsed[section_name]['t']:
+ parsed[section_name]['s'] = parsed[section_name]['t']
+
+ return parsed
+
+ def _sanitize_feature_flag_elements(self, parsed_feature_flags):
+ """
+ Sanitize all feature flags elements.
+
+ :param parsed_feature_flags: feature flags array
+ :type parsed_feature_flags: [Dict]
+
+ :return: sanitized structure dict
+ :rtype: [Dict]
+ """
+ sanitized_feature_flags = []
+ for feature_flag in parsed_feature_flags:
+ if 'name' not in feature_flag or feature_flag['name'].strip() == '':
+ _LOGGER.warning("A feature flag in json file does not have (Name) or property is empty, skipping.")
+ continue
+ for element in [('trafficTypeName', 'user', None, None, None, None),
+ ('trafficAllocation', 100, 0, 100, None, None),
+ ('trafficAllocationSeed', int(get_current_epoch_time_ms() / 1000), None, None, None, [0]),
+ ('seed', int(get_current_epoch_time_ms() / 1000), None, None, None, [0]),
+ ('status', splits.Status.ACTIVE.value, None, None, [e.value for e in splits.Status], None),
+ ('killed', False, None, None, None, None),
+ ('defaultTreatment', 'control', None, None, None, ['', ' ']),
+ ('changeNumber', 0, 0, None, None, None),
+ ('algo', 2, 2, 2, None, None)]:
+ feature_flag = util._sanitize_object_element(feature_flag, 'split', element[0], element[1], lower_value=element[2], upper_value=element[3], in_list=element[4], not_in_list=element[5])
+ feature_flag = self._sanitize_condition(feature_flag)
+ if 'sets' not in feature_flag:
+ feature_flag['sets'] = []
+ feature_flag['sets'] = validate_flag_sets(feature_flag['sets'], 'Localhost Validator')
+ if 'prerequisites' not in feature_flag:
+ feature_flag['prerequisites'] = []
+ sanitized_feature_flags.append(feature_flag)
+ return sanitized_feature_flags
+
+ def _sanitize_rb_segment_elements(self, parsed_rb_segments):
+ """
+ Sanitize all rule based segments elements.
+
+ :param parsed_rb_segments: rule based segments array
+ :type parsed_rb_segments: [Dict]
+
+ :return: sanitized structure dict
+ :rtype: [Dict]
+ """
+ sanitized_rb_segments = []
+ for rb_segment in parsed_rb_segments:
+ if 'name' not in rb_segment or rb_segment['name'].strip() == '':
+ _LOGGER.warning("A rule based segment in json file does not have (Name) or property is empty, skipping.")
+ continue
+
+ for element in [('trafficTypeName', 'user', None, None, None, None),
+ ('status', splits.Status.ACTIVE.value, None, None, [e.value for e in splits.Status], None),
+ ('changeNumber', 0, 0, None, None, None)]:
+ rb_segment = util._sanitize_object_element(rb_segment, 'rule based segment', element[0], element[1], lower_value=element[2], upper_value=element[3], in_list=element[4], not_in_list=element[5])
+ rb_segment = self._sanitize_condition(rb_segment)
+ rb_segment = self._remove_partition(rb_segment)
+ sanitized_rb_segments.append(rb_segment)
+ return sanitized_rb_segments
+
+ def _sanitize_condition(self, feature_flag):
+ """
+ Sanitize feature flag and ensure a condition type ROLLOUT and matcher exist with ALL_KEYS elements.
+
+ :param feature_flag: feature flag dict object
+ :type feature_flag: Dict
+
+ :return: sanitized feature flag
+ :rtype: Dict
+ """
+ found_all_keys_matcher = False
+ feature_flag['conditions'] = feature_flag.get('conditions', [])
+ if len(feature_flag['conditions']) > 0:
+ last_condition = feature_flag['conditions'][-1]
+ if 'conditionType' in last_condition:
+ if last_condition['conditionType'] == 'ROLLOUT':
+ if 'matcherGroup' in last_condition:
+ if 'matchers' in last_condition['matcherGroup']:
+ for matcher in last_condition['matcherGroup']['matchers']:
+ if matcher['matcherType'] == 'ALL_KEYS':
+ found_all_keys_matcher = True
+ break
+
+ if not found_all_keys_matcher:
+ _LOGGER.debug("Missing default rule condition for feature flag: %s, adding default rule with 100%% off treatment", feature_flag['name'])
+ feature_flag['conditions'].append(
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [{
+ "keySelector": { "trafficType": "user", "attribute": None },
+ "matcherType": "ALL_KEYS",
+ "negate": False,
+ "userDefinedSegmentMatcherData": None,
+ "whitelistMatcherData": None,
+ "unaryNumericMatcherData": None,
+ "betweenMatcherData": None,
+ "booleanMatcherData": None,
+ "dependencyMatcherData": None,
+ "stringMatcherData": None
+ }]
+ },
+ "partitions": [
+ { "treatment": "on", "size": 0 },
+ { "treatment": "off", "size": 100 }
+ ],
+ "label": "default rule"
+ })
+
+ return feature_flag
+
+ def _remove_partition(self, rb_segment):
+ sanitized = []
+ for condition in rb_segment['conditions']:
+ if 'partition' in condition:
+ del condition['partition']
+ sanitized.append(condition)
+ rb_segment['conditions'] = sanitized
+ return rb_segment
+
+ @classmethod
+ def _convert_yaml_to_feature_flag(cls, parsed):
+ grouped_by_feature_name = itertools.groupby(
+ sorted(parsed, key=lambda i: next(iter(i.keys()))),
+ lambda i: next(iter(i.keys())))
+ to_return = {}
+ for (feature_flag_name, statements) in grouped_by_feature_name:
+ configs = {}
+ whitelist = []
+ all_keys = []
+ for statement in statements:
+ data = next(iter(statement.values())) # grab the first (and only) value.
+ if 'keys' in data:
+ keys = data['keys'] if isinstance(data['keys'], list) else [data['keys']]
+ whitelist.append(cls._make_whitelist_condition(keys, data['treatment']))
+ else:
+ all_keys.append(cls._make_all_keys_condition(data['treatment']))
+ if 'config' in data:
+ configs[data['treatment']] = data['config']
+ to_return[feature_flag_name] = cls._make_feature_flag(feature_flag_name, whitelist + all_keys, configs)
+ return to_return
+
+ def _check_exit_conditions(self, storage_cn, parsed_till, default_till):
+ if storage_cn > parsed_till and parsed_till != default_till:
+ return True
+
+class LocalSplitSynchronizer(LocalSplitSynchronizerBase):
+ """Localhost mode feature_flag synchronizer."""
+
+ def __init__(self, filename, feature_flag_storage, rule_based_segment_storage, localhost_mode=LocalhostMode.LEGACY):
+ """
+ Class constructor.
+
+ :param filename: File to parse feature flags from.
+ :type filename: str
+ :param feature_flag_storage: Feature flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+ :param localhost_mode: mode for localhost either JSON, YAML or LEGACY.
+ :type localhost_mode: splitio.sync.split.LocalhostMode
+ """
+ LocalSplitSynchronizerBase.__init__(self, filename, feature_flag_storage, rule_based_segment_storage, localhost_mode)
+
+ @classmethod
+ def _read_feature_flags_from_legacy_file(cls, filename):
+ """
+ Parse a feature flags file and return a populated storage.
+
+ :param filename: Path of the file containing mocked feature flags & treatments.
+ :type filename: str.
+
+ :return: Storage populataed with feature flags ready to be evaluated.
+ :rtype: InMemorySplitStorage
+ """
+ to_return = {}
+ try:
+ with open(filename, 'r') as flo:
+ for line in flo:
+ if line.strip() == '' or _LEGACY_COMMENT_LINE_RE.match(line):
+ continue
+
+ definition_match = _LEGACY_DEFINITION_LINE_RE.match(line)
+ if not definition_match:
+ _LOGGER.warning(
+ 'Invalid line on localhost environment feature flag '
+ 'definition. Line = %s',
+ line
+ )
+ continue
+
+ cond = cls._make_all_keys_condition(definition_match.group('treatment'))
+ splt = cls._make_feature_flag(definition_match.group('feature'), [cond])
+ to_return[splt.name] = splt
+ return to_return
+
+ except IOError as exc:
+ raise ValueError("Error parsing file %s. Make sure it's readable." % filename) from exc
+
+ @classmethod
+ def _read_feature_flags_from_yaml_file(cls, filename):
+ """
+ Parse a feature flags file and return a populated storage.
+
+ :param filename: Path of the file containing mocked feature flags & treatments.
+ :type filename: str.
+
+ :return: Storage populated with feature flags ready to be evaluated.
+ :rtype: InMemorySplitStorage
+ """
+ try:
+ with open(filename, 'r') as flo:
+ parsed = yaml.load(flo.read(), Loader=yaml.FullLoader)
+
+ return cls._convert_yaml_to_feature_flag(parsed)
+ except IOError as exc:
+ raise ValueError("Error parsing file %s. Make sure it's readable." % filename) from exc
+
+ def synchronize_splits(self, till=None): # pylint:disable=unused-argument
+ """Update feature flags in storage."""
+ _LOGGER.info('Synchronizing feature flags now.')
+ try:
+ return self._synchronize_json() if self._localhost_mode == LocalhostMode.JSON else self._synchronize_legacy()
+ except Exception as exc:
+ _LOGGER.debug('Exception: ', exc_info=True)
+ raise APIException("Error fetching feature flags information") from exc
+
+ def _synchronize_legacy(self):
+ """
+ Update feature flags in storage for legacy mode.
+
+ :return: empty array for compatibility with json mode
+ :rtype: []
+ """
+
+ if self._filename.lower().endswith(('.yaml', '.yml')):
+ fetched = self._read_feature_flags_from_yaml_file(self._filename)
+ else:
+ fetched = self._read_feature_flags_from_legacy_file(self._filename)
+ to_delete = [name for name in self._feature_flag_storage.get_split_names()
+ if name not in fetched.keys()]
+ to_add = [feature_flag for feature_flag in fetched.values()]
+ self._feature_flag_storage.update(to_add, to_delete, 0)
+ return []
+
+ def _synchronize_json(self):
+ """
+ Update feature flags in storage for json mode.
+
+ :return: segment names string array
+ :rtype: [str]
+ """
+ try:
+ parsed = self._read_feature_flags_from_json_file(self._filename)
+ segment_list = set()
+ fecthed_ff_sha = util._get_sha(json.dumps(parsed['ff']))
+ fecthed_rbs_sha = util._get_sha(json.dumps(parsed['rbs']))
+
+ if fecthed_ff_sha == self._current_ff_sha and fecthed_rbs_sha == self._current_rbs_sha:
+ return []
+
+ self._current_ff_sha = fecthed_ff_sha
+ self._current_rbs_sha = fecthed_rbs_sha
+
+ if self._check_exit_conditions(self._feature_flag_storage.get_change_number(), parsed['ff']['t'], self._DEFAULT_FEATURE_FLAG_TILL) \
+ and self._check_exit_conditions(self._rule_based_segment_storage.get_change_number(), parsed['rbs']['t'], self._DEFAULT_RB_SEGMENT_TILL):
+ return []
+
+ if not self._check_exit_conditions(self._feature_flag_storage.get_change_number(), parsed['ff']['t'], self._DEFAULT_FEATURE_FLAG_TILL):
+ fetched_feature_flags = [splits.from_raw(feature_flag) for feature_flag in parsed['ff']['d']]
+ segment_list = update_feature_flag_storage(self._feature_flag_storage, fetched_feature_flags, parsed['ff']['t'])
+
+ if not self._check_exit_conditions(self._rule_based_segment_storage.get_change_number(), parsed['rbs']['t'], self._DEFAULT_RB_SEGMENT_TILL):
+ fetched_rb_segments = [rule_based_segments.from_raw(rb_segment) for rb_segment in parsed['rbs']['d']]
+ segment_list.update(update_rule_based_segment_storage(self._rule_based_segment_storage, fetched_rb_segments, parsed['rbs']['t']))
+
+ return segment_list
+
+ except Exception as exc:
+ _LOGGER.debug('Exception: ', exc_info=True)
+ raise ValueError("Error reading feature flags from json.") from exc
+
+ def _read_feature_flags_from_json_file(self, filename):
+ """
+ Parse a feature flags file and return a populated storage.
+
+ :param filename: Path of the file containing feature flags
+ :type filename: str.
+
+ :return: Tuple: sanitized feature flag structure dict and till
+ :rtype: Tuple(Dict, int)
+ """
+ try:
+ with open(filename, 'r') as flo:
+ parsed = json.load(flo)
+
+ # check if spec version is old
+ if parsed.get('splits'):
+ parsed = util.convert_to_new_spec(parsed)
+
+ santitized = self._sanitize_json_elements(parsed)
+ santitized['ff']['d'] = self._sanitize_feature_flag_elements(santitized['ff']['d'])
+ santitized['rbs']['d'] = self._sanitize_rb_segment_elements(santitized['rbs']['d'])
+ return santitized
+
+ except Exception as exc:
+ _LOGGER.debug('Exception: ', exc_info=True)
+ raise ValueError("Error parsing file %s. Make sure it's readable." % filename) from exc
+
+class LocalSplitSynchronizerAsync(LocalSplitSynchronizerBase):
+ """Localhost mode async feature_flag synchronizer."""
+
+ def __init__(self, filename, feature_flag_storage, rule_based_segment_storage, localhost_mode=LocalhostMode.LEGACY):
+ """
+ Class constructor.
+
+ :param filename: File to parse feature flags from.
+ :type filename: str
+ :param feature_flag_storage: Feature flag Storage.
+ :type feature_flag_storage: splitio.storage.InMemorySplitStorage
+ :param localhost_mode: mode for localhost either JSON, YAML or LEGACY.
+ :type localhost_mode: splitio.sync.split.LocalhostMode
+ """
+ LocalSplitSynchronizerBase.__init__(self, filename, feature_flag_storage, rule_based_segment_storage, localhost_mode)
+
+ @classmethod
+ async def _read_feature_flags_from_legacy_file(cls, filename):
+ """
+ Parse a feature flags file and return a populated storage.
+
+ :param filename: Path of the file containing mocked feature flags & treatments.
+ :type filename: str.
+
+ :return: Storage populataed with feature flags ready to be evaluated.
+ :rtype: InMemorySplitStorage
+ """
+ to_return = {}
+ try:
+ async with aiofiles.open(filename, 'r') as flo:
+ for line in await flo.read():
+ if line.strip() == '' or _LEGACY_COMMENT_LINE_RE.match(line):
+ continue
+
+ definition_match = _LEGACY_DEFINITION_LINE_RE.match(line)
+ if not definition_match:
+ _LOGGER.warning(
+ 'Invalid line on localhost environment feature flag '
+ 'definition. Line = %s',
+ line
+ )
+ continue
+
+ cond = cls._make_all_keys_condition(definition_match.group('treatment'))
+ splt = cls._make_feature_flag(definition_match.group('feature'), [cond])
+ to_return[splt.name] = splt
+ return to_return
+
+ except IOError as exc:
+ raise ValueError("Error parsing file %s. Make sure it's readable." % filename) from exc
+
+ @classmethod
+ async def _read_feature_flags_from_yaml_file(cls, filename):
+ """
+ Parse a feature flags file and return a populated storage.
+
+ :param filename: Path of the file containing mocked feature flags & treatments.
+ :type filename: str.
+
+ :return: Storage populated with feature flags ready to be evaluated.
+ :rtype: InMemorySplitStorage
+ """
+ try:
+ async with aiofiles.open(filename, 'r') as flo:
+ parsed = yaml.load(await flo.read(), Loader=yaml.FullLoader)
+
+ return cls._convert_yaml_to_feature_flag(parsed)
+ except IOError as exc:
+ raise ValueError("Error parsing file %s. Make sure it's readable." % filename) from exc
+
+ async def synchronize_splits(self, till=None): # pylint:disable=unused-argument
+ """Update feature flags in storage."""
+ _LOGGER.info('Synchronizing feature flags now.')
+ try:
+ return await self._synchronize_json() if self._localhost_mode == LocalhostMode.JSON else await self._synchronize_legacy()
+ except Exception as exc:
+ _LOGGER.debug('Exception: ', exc_info=True)
+ raise APIException("Error fetching feature flags information") from exc
+
+ async def _synchronize_legacy(self):
+ """
+ Update feature flags in storage for legacy mode.
+
+ :return: empty array for compatibility with json mode
+ :rtype: []
+ """
+
+ if self._filename.lower().endswith(('.yaml', '.yml')):
+ fetched = await self._read_feature_flags_from_yaml_file(self._filename)
+ else:
+ fetched = await self._read_feature_flags_from_legacy_file(self._filename)
+ to_delete = [name for name in await self._feature_flag_storage.get_split_names()
+ if name not in fetched.keys()]
+ to_add = [feature_flag for feature_flag in fetched.values()]
+ await self._feature_flag_storage.update(to_add, to_delete, 0)
+
+ return []
+
+ async def _synchronize_json(self):
+ """
+ Update feature flags in storage for json mode.
+
+ :return: segment names string array
+ :rtype: [str]
+ """
+ try:
+ parsed = await self._read_feature_flags_from_json_file(self._filename)
+ segment_list = set()
+ fecthed_ff_sha = util._get_sha(json.dumps(parsed['ff']))
+ fecthed_rbs_sha = util._get_sha(json.dumps(parsed['rbs']))
+
+ if fecthed_ff_sha == self._current_ff_sha and fecthed_rbs_sha == self._current_rbs_sha:
+ return []
+
+ self._current_ff_sha = fecthed_ff_sha
+ self._current_rbs_sha = fecthed_rbs_sha
+
+ if self._check_exit_conditions(await self._feature_flag_storage.get_change_number(), parsed['ff']['t'], self._DEFAULT_FEATURE_FLAG_TILL) \
+ and self._check_exit_conditions(await self._rule_based_segment_storage.get_change_number(), parsed['rbs']['t'], self._DEFAULT_RB_SEGMENT_TILL):
+ return []
+
+ if not self._check_exit_conditions(await self._feature_flag_storage.get_change_number(), parsed['ff']['t'], self._DEFAULT_FEATURE_FLAG_TILL):
+ fetched_feature_flags = [splits.from_raw(feature_flag) for feature_flag in parsed['ff']['d']]
+ segment_list = await update_feature_flag_storage_async(self._feature_flag_storage, fetched_feature_flags, parsed['ff']['t'])
+
+ if not self._check_exit_conditions(await self._rule_based_segment_storage.get_change_number(), parsed['rbs']['t'], self._DEFAULT_RB_SEGMENT_TILL):
+ fetched_rb_segments = [rule_based_segments.from_raw(rb_segment) for rb_segment in parsed['rbs']['d']]
+ segment_list.update(await update_rule_based_segment_storage_async(self._rule_based_segment_storage, fetched_rb_segments, parsed['rbs']['t']))
+
+ return segment_list
+
+ except Exception as exc:
+ _LOGGER.debug('Exception: ', exc_info=True)
+ raise ValueError("Error reading feature flags from json.") from exc
+
+ async def _read_feature_flags_from_json_file(self, filename):
+ """
+ Parse a feature flags file and return a populated storage.
+
+ :param filename: Path of the file containing feature flags
+ :type filename: str.
+
+ :return: Tuple: sanitized feature flag structure dict and till
+ :rtype: Tuple(Dict, int)
+ """
+ try:
+ async with aiofiles.open(filename, 'r') as flo:
+ parsed = json.loads(await flo.read())
+
+ # check if spec version is old
+ if parsed.get('splits'):
+ parsed = util.convert_to_new_spec(parsed)
+
+ santitized = self._sanitize_json_elements(parsed)
+ santitized['ff']['d'] = self._sanitize_feature_flag_elements(santitized['ff']['d'])
+ santitized['rbs']['d'] = self._sanitize_rb_segment_elements(santitized['rbs']['d'])
+ return santitized
+ except Exception as exc:
+ _LOGGER.debug('Exception: ', exc_info=True)
+ raise ValueError("Error parsing file %s. Make sure it's readable." % filename) from exc
diff --git a/splitio/sync/synchronizer.py b/splitio/sync/synchronizer.py
new file mode 100644
index 00000000..a6ca6214
--- /dev/null
+++ b/splitio/sync/synchronizer.py
@@ -0,0 +1,1203 @@
+"""Synchronizer module."""
+
+import abc
+import logging
+import threading
+import time
+from collections import namedtuple
+
+from splitio.optional.loaders import asyncio
+from splitio.api import APIException, APIUriException
+from splitio.util.backoff import Backoff
+from splitio.sync.split import _ON_DEMAND_FETCH_BACKOFF_BASE, _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES, _ON_DEMAND_FETCH_BACKOFF_MAX_WAIT, LocalhostMode
+
+SplitSyncResult = namedtuple('SplitSyncResult', ['success', 'error_code'])
+
+_LOGGER = logging.getLogger(__name__)
+
+
+_SYNC_ALL_NO_RETRIES = -1
+
+class SplitSynchronizers(object):
+ """SplitSynchronizers."""
+
+ def __init__(self, feature_flag_sync, segment_sync, impressions_sync, events_sync, # pylint:disable=too-many-arguments
+ impressions_count_sync, telemetry_sync=None, unique_keys_sync = None, clear_filter_sync = None):
+ """
+ Class constructor.
+
+ :param feature_flag_sync: sync for feature flags
+ :type feature_flag_sync: splitio.sync.split.SplitSynchronizer
+ :param segment_sync: sync for segments
+ :type segment_sync: splitio.sync.segment.SegmentSynchronizer
+ :param impressions_sync: sync for impressions
+ :type impressions_sync: splitio.sync.impression.ImpressionSynchronizer
+ :param events_sync: sync for events
+ :type events_sync: splitio.sync.event.EventSynchronizer
+ :param impressions_count_sync: sync for impression_counts
+ :type impressions_count_sync: splitio.sync.impression.ImpressionsCountSynchronizer
+ """
+ self._feature_flag_sync = feature_flag_sync
+ self._segment_sync = segment_sync
+ self._impressions_sync = impressions_sync
+ self._events_sync = events_sync
+ self._impressions_count_sync = impressions_count_sync
+ self._unique_keys_sync = unique_keys_sync
+ self._clear_filter_sync = clear_filter_sync
+ self._telemetry_sync = telemetry_sync
+
+ @property
+ def split_sync(self):
+ """Return split synchonizer."""
+ return self._feature_flag_sync
+
+ @property
+ def segment_sync(self):
+ """Return segment synchonizer."""
+ return self._segment_sync
+
+ @property
+ def impressions_sync(self):
+ """Return impressions synchonizer."""
+ return self._impressions_sync
+
+ @property
+ def events_sync(self):
+ """Return events synchonizer."""
+ return self._events_sync
+
+ @property
+ def impressions_count_sync(self):
+ """Return impressions count synchonizer."""
+ return self._impressions_count_sync
+
+ @property
+ def unique_keys_sync(self):
+ """Return unique keys synchonizer."""
+ return self._unique_keys_sync
+
+ @property
+ def clear_filter_sync(self):
+ """Return clear filter synchonizer."""
+ return self._clear_filter_sync
+
+ @property
+ def telemetry_sync(self):
+ """Return clear filter synchonizer."""
+ return self._telemetry_sync
+
+class SplitTasks(object):
+ """SplitTasks."""
+
+ def __init__(self, feature_flag_task, segment_task, impressions_task, events_task, # pylint:disable=too-many-arguments
+ impressions_count_task, telemetry_task=None, unique_keys_task = None, clear_filter_task = None, internal_events_task=None):
+ """
+ Class constructor.
+
+ :param feature_flag_task: sync for feature_flags
+ :type feature_flag_task: splitio.tasks.split_sync.SplitSynchronizationTask
+ :param segment_task: sync for segments
+ :type segment_task: splitio.tasks.segment_sync.SegmentSynchronizationTask
+ :param impressions_task: sync for impressions
+ :type impressions_task: splitio.tasks.impressions_sync.ImpressionsSyncTask
+ :param events_task: sync for events
+ :type events_task: splitio.tasks.events_sync.EventsSyncTask
+ :param impressions_count_task: sync for impression_counts
+ :type impressions_count_task: splitio.tasks.impressions_sync.ImpressionsCountSyncTask
+ """
+ self._feature_flag_task = feature_flag_task
+ self._segment_task = segment_task
+ self._impressions_task = impressions_task
+ self._events_task = events_task
+ self._impressions_count_task = impressions_count_task
+ self._unique_keys_task = unique_keys_task
+ self._clear_filter_task = clear_filter_task
+ self._telemetry_task = telemetry_task
+ self._internal_events_task = internal_events_task
+
+ @property
+ def split_task(self):
+ """Return feature_flag sync task."""
+ return self._feature_flag_task
+
+ @property
+ def segment_task(self):
+ """Return segment sync task."""
+ return self._segment_task
+
+ @property
+ def impressions_task(self):
+ """Return impressions sync task."""
+ return self._impressions_task
+
+ @property
+ def events_task(self):
+ """Return events sync task."""
+ return self._events_task
+
+ @property
+ def impressions_count_task(self):
+ """Return impressions count sync task."""
+ return self._impressions_count_task
+
+ @property
+ def unique_keys_task(self):
+ """Return unique keys sync task."""
+ return self._unique_keys_task
+
+ @property
+ def clear_filter_task(self):
+ """Return clear filter sync task."""
+ return self._clear_filter_task
+
+ @property
+ def telemetry_task(self):
+ """Return clear filter sync task."""
+ return self._telemetry_task
+
+ @property
+ def internal_events_task(self):
+ """Return internal events task."""
+ return self._internal_events_task
+
+class BaseSynchronizer(object, metaclass=abc.ABCMeta):
+ """Synchronizer interface."""
+
+ @abc.abstractmethod
+ def synchronize_segment(self, segment_name, till):
+ """
+ Synchronize particular segment.
+
+ :param segment_name: segment associated
+ :type segment_name: str
+ :param till: to fetch
+ :type till: int
+ """
+ pass
+
+ @abc.abstractmethod
+ def synchronize_splits(self, till):
+ """
+ Synchronize all feature flags.
+
+ :param till: to fetch
+ :type till: int
+ """
+ pass
+
+ @abc.abstractmethod
+ def sync_all(self):
+ """Synchronize all feature flag data."""
+ pass
+
+ @abc.abstractmethod
+ def start_periodic_fetching(self):
+ """Start fetchers for feature flags and segments."""
+ pass
+
+ @abc.abstractmethod
+ def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ pass
+
+ @abc.abstractmethod
+ def start_periodic_data_recording(self):
+ """Start recorders."""
+ pass
+
+ @abc.abstractmethod
+ def stop_periodic_data_recording(self, blocking):
+ """Stop recorders."""
+ pass
+
+ @abc.abstractmethod
+ def kill_split(self, feature_flag_name, default_treatment, change_number):
+ """
+ Kill a feature flag locally.
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ pass
+
+ @abc.abstractmethod
+ def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ pass
+
+
+class SynchronizerInMemoryBase(BaseSynchronizer):
+ """Synchronizer."""
+
+ def __init__(self, split_synchronizers, split_tasks):
+ """
+ Class constructor.
+
+ :param split_synchronizers: syncs for performing synchronization of segments and feature flags
+ :type split_synchronizers: splitio.sync.synchronizer.SplitSynchronizers
+ :param split_tasks: tasks for starting/stopping tasks
+ :type split_tasks: splitio.sync.synchronizer.SplitTasks
+ """
+ self._backoff = Backoff(
+ _ON_DEMAND_FETCH_BACKOFF_BASE,
+ _ON_DEMAND_FETCH_BACKOFF_MAX_WAIT)
+ self._split_synchronizers = split_synchronizers
+ self._split_tasks = split_tasks
+ self._periodic_data_recording_tasks = [
+ self._split_tasks.impressions_task,
+ self._split_tasks.events_task,
+ self._split_tasks.telemetry_task
+ ]
+ if self._split_tasks.impressions_count_task:
+ self._periodic_data_recording_tasks.append(self._split_tasks.impressions_count_task)
+ if self._split_tasks.unique_keys_task:
+ self._periodic_data_recording_tasks.append(self._split_tasks.unique_keys_task)
+ if self._split_tasks.clear_filter_task:
+ self._periodic_data_recording_tasks.append(self._split_tasks.clear_filter_task)
+
+ @property
+ def split_sync(self):
+ return self._split_synchronizers.split_sync
+
+ @property
+ def segment_storage(self):
+ return self._split_synchronizers.segment_sync._segment_storage
+
+ def synchronize_segment(self, segment_name, till):
+ """
+ Synchronize particular segment.
+
+ :param segment_name: segment associated
+ :type segment_name: str
+ :param till: to fetch
+ :type till: int
+ """
+ pass
+
+ def synchronize_splits(self, till, sync_segments=True):
+ """
+ Synchronize all feature flags.
+
+ :param till: to fetch
+ :type till: int
+
+ :returns: whether the synchronization was successful or not.
+ :rtype: bool
+ """
+ pass
+
+ def sync_all(self, max_retry_attempts=_SYNC_ALL_NO_RETRIES):
+ """
+ Synchronize all feature flags.
+
+ :param max_retry_attempts: apply max attempts if it set to absilute integer.
+ :type max_retry_attempts: int
+ """
+ pass
+
+ def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ pass
+
+ def start_periodic_fetching(self):
+ """Start fetchers for feature flags and segments."""
+ _LOGGER.debug('Starting periodic data fetching')
+ self._split_tasks.split_task.start()
+ self._split_tasks.segment_task.start()
+
+ def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ pass
+
+ def start_periodic_data_recording(self):
+ """Start recorders."""
+ _LOGGER.debug('Starting periodic data recording')
+ for task in self._periodic_data_recording_tasks:
+ task.start()
+
+ def stop_periodic_data_recording(self, blocking):
+ """
+ Stop recorders.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ pass
+
+ def kill_split(self, feature_flag_name, default_treatment, change_number):
+ """
+ Kill a feature flag locally.
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ pass
+
+
+class Synchronizer(SynchronizerInMemoryBase):
+ """Synchronizer."""
+
+ def __init__(self, split_synchronizers, split_tasks):
+ """
+ Class constructor.
+
+ :param split_synchronizers: syncs for performing synchronization of segments and feature flags
+ :type split_synchronizers: splitio.sync.synchronizer.SplitSynchronizers
+ :param split_tasks: tasks for starting/stopping tasks
+ :type split_tasks: splitio.sync.synchronizer.SplitTasks
+ """
+ SynchronizerInMemoryBase.__init__(self, split_synchronizers, split_tasks)
+
+ def _synchronize_segments(self):
+ _LOGGER.debug('Starting segments synchronization')
+ return self._split_synchronizers.segment_sync.synchronize_segments()
+
+ def synchronize_segment(self, segment_name, till):
+ """
+ Synchronize particular segment.
+
+ :param segment_name: segment associated
+ :type segment_name: str
+ :param till: to fetch
+ :type till: int
+ """
+ _LOGGER.debug('Synchronizing segment %s', segment_name)
+ success = self._split_synchronizers.segment_sync.synchronize_segment(segment_name, till)
+ if not success:
+ _LOGGER.error('Failed to sync some segments.')
+ return success
+
+ def synchronize_splits(self, till, sync_segments=True):
+ """
+ Synchronize all feature flags.
+
+ :param till: to fetch
+ :type till: int
+
+ :returns: whether the synchronization was successful or not.
+ :rtype: bool
+ """
+ _LOGGER.debug('Starting feature flags synchronization')
+ try:
+ new_segments = []
+ for segment in self._split_synchronizers.split_sync.synchronize_splits(till):
+ if not self._split_synchronizers.segment_sync.segment_exist_in_storage(segment):
+ new_segments.append(segment)
+ if sync_segments and len(new_segments) != 0:
+ _LOGGER.debug('Synching Segments: %s', ','.join(new_segments))
+ success = self._split_synchronizers.segment_sync.synchronize_segments(new_segments, True)
+ if not success:
+ _LOGGER.error('Failed to schedule sync one or all segment(s) below.')
+ _LOGGER.error(','.join(new_segments))
+ else:
+ _LOGGER.debug('Segment sync scheduled.')
+ return SplitSyncResult(True, 0)
+ except APIUriException as exc:
+ _LOGGER.error('Failed syncing feature flags due to long URI')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return SplitSyncResult(False, exc._status_code)
+
+ except APIException as exc:
+ _LOGGER.error('Failed syncing feature flags')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return SplitSyncResult(False, exc._status_code)
+
+ def sync_all(self, max_retry_attempts=_SYNC_ALL_NO_RETRIES):
+ """
+ Synchronize all feature flags.
+
+ :param max_retry_attempts: apply max attempts if it set to absilute integer.
+ :type max_retry_attempts: int
+ """
+ retry_attempts = 0
+ while True:
+ try:
+ sync_result = self.synchronize_splits(None, False)
+ if not sync_result.success and sync_result.error_code is not None and sync_result.error_code == 414:
+ _LOGGER.error("URI too long exception caught, aborting retries")
+ break
+
+ if not sync_result.success:
+ raise Exception("feature flags sync failed")
+
+ # Only retrying feature flags, since segments may trigger too many calls.
+
+ if not self._synchronize_segments():
+ _LOGGER.warning('Segments failed to synchronize.')
+
+ # All is good
+ return
+ except Exception as exc: # pylint:disable=broad-except
+ _LOGGER.error("Exception caught when trying to sync all data: %s", str(exc))
+ _LOGGER.debug('Error: ', exc_info=True)
+ if max_retry_attempts != _SYNC_ALL_NO_RETRIES:
+ retry_attempts += 1
+ if retry_attempts > max_retry_attempts:
+ break
+ how_long = self._backoff.get()
+ time.sleep(how_long)
+
+ _LOGGER.error("Could not correctly synchronize feature flags and segments after %d attempts.", retry_attempts)
+
+ def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.debug('Shutting down tasks.')
+ self._split_synchronizers.segment_sync.shutdown()
+ self.stop_periodic_fetching()
+ self.stop_periodic_data_recording(blocking)
+
+ def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ _LOGGER.debug('Stopping periodic fetching')
+ self._split_tasks.split_task.stop()
+ self._split_tasks.segment_task.stop()
+
+ def stop_periodic_data_recording(self, blocking):
+ """
+ Stop recorders.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.debug('Stopping periodic data recording')
+ if self._split_tasks.internal_events_task:
+ self._split_tasks.internal_events_task.stop()
+
+ if blocking:
+ events = []
+ for task in self._periodic_data_recording_tasks:
+ if task != self._split_tasks.telemetry_task:
+ stop_event = threading.Event()
+ task.stop(stop_event)
+ events.append(stop_event)
+ all(event.wait() for event in events)
+ telemetry_event = threading.Event()
+ self._split_tasks.telemetry_task.stop(telemetry_event)
+ if telemetry_event.wait():
+ _LOGGER.debug('all tasks finished successfully.')
+ else:
+ for task in self._periodic_data_recording_tasks:
+ task.stop()
+
+ def kill_split(self, feature_flag_name, default_treatment, change_number):
+ """
+ Kill a feature flag locally.
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ self._split_synchronizers.split_sync.kill_split(feature_flag_name, default_treatment,
+ change_number)
+
+class SynchronizerAsync(SynchronizerInMemoryBase):
+ """Synchronizer async."""
+
+ def __init__(self, split_synchronizers, split_tasks):
+ """
+ Class constructor.
+
+ :param split_synchronizers: syncs for performing synchronization of segments and feature flags
+ :type split_synchronizers: splitio.sync.synchronizer.SplitSynchronizers
+ :param split_tasks: tasks for starting/stopping tasks
+ :type split_tasks: splitio.sync.synchronizer.SplitTasks
+ """
+ SynchronizerInMemoryBase.__init__(self, split_synchronizers, split_tasks)
+ self._shutdown = False
+
+ async def _synchronize_segments(self):
+ _LOGGER.debug('Starting segments synchronization')
+ return await self._split_synchronizers.segment_sync.synchronize_segments()
+
+ async def synchronize_segment(self, segment_name, till):
+ """
+ Synchronize particular segment.
+
+ :param segment_name: segment associated
+ :type segment_name: str
+ :param till: to fetch
+ :type till: int
+ """
+ _LOGGER.debug('Synchronizing segment %s', segment_name)
+ success = await self._split_synchronizers.segment_sync.synchronize_segment(segment_name, till)
+ if not success:
+ _LOGGER.error('Failed to sync some segments.')
+ return success
+
+ async def synchronize_splits(self, till, sync_segments=True):
+ """
+ Synchronize all feature flags.
+
+ :param till: to fetch
+ :type till: int
+
+ :returns: whether the synchronization was successful or not.
+ :rtype: bool
+ """
+ if self._shutdown:
+ return
+
+ _LOGGER.debug('Starting feature flags synchronization')
+ try:
+ new_segments = []
+ for segment in await self._split_synchronizers.split_sync.synchronize_splits(till):
+ if not await self._split_synchronizers.segment_sync.segment_exist_in_storage(segment):
+ new_segments.append(segment)
+ if sync_segments and len(new_segments) != 0:
+ _LOGGER.debug('Synching Segments: %s', ','.join(new_segments))
+ success = await self._split_synchronizers.segment_sync.synchronize_segments(new_segments, True)
+ if not success:
+ _LOGGER.error('Failed to schedule sync one or all segment(s) below.')
+ _LOGGER.error(','.join(new_segments))
+ else:
+ _LOGGER.debug('Segment sync scheduled.')
+ return SplitSyncResult(True, 0)
+ except APIUriException as exc:
+ _LOGGER.error('Failed syncing feature flags due to long URI')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return SplitSyncResult(False, exc._status_code)
+
+ except APIException as exc:
+ _LOGGER.error('Failed syncing feature flags')
+ _LOGGER.debug('Error: ', exc_info=True)
+ return SplitSyncResult(False, exc._status_code)
+
+ async def sync_all(self, max_retry_attempts=_SYNC_ALL_NO_RETRIES):
+ """
+ Synchronize all feature flags.
+
+ :param max_retry_attempts: apply max attempts if it set to absilute integer.
+ :type max_retry_attempts: int
+ """
+ self._shutdown = False
+ retry_attempts = 0
+ while not self._shutdown:
+ try:
+ sync_result = await self.synchronize_splits(None, False)
+ if not sync_result.success and sync_result.error_code is not None and sync_result.error_code == 414:
+ _LOGGER.error("URI too long exception caught, aborting retries")
+ break
+
+ if not sync_result.success:
+ raise Exception("feature flags sync failed")
+
+ # Only retrying feature flags, since segments may trigger too many calls.
+
+ if not await self._synchronize_segments():
+ _LOGGER.warning('Segments failed to synchronize.')
+
+ # All is good
+ return
+ except Exception as exc: # pylint:disable=broad-except
+ _LOGGER.error("Exception caught when trying to sync all data: %s", str(exc))
+ _LOGGER.debug('Error: ', exc_info=True)
+ if max_retry_attempts != _SYNC_ALL_NO_RETRIES:
+ retry_attempts += 1
+ if retry_attempts > max_retry_attempts:
+ break
+ how_long = self._backoff.get()
+ if not self._shutdown:
+ await asyncio.sleep(how_long)
+
+ _LOGGER.error("Could not correctly synchronize feature flags and segments after %d attempts.", retry_attempts)
+
+ async def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.debug('Shutting down tasks.')
+ self._shutdown = True
+ await self._split_synchronizers.segment_sync.shutdown()
+ await self.stop_periodic_fetching()
+ await self.stop_periodic_data_recording(blocking)
+
+ async def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ _LOGGER.debug('Stopping periodic fetching')
+ await self._split_tasks.split_task.stop()
+ await self._split_tasks.segment_task.stop()
+
+ async def stop_periodic_data_recording(self, blocking):
+ """
+ Stop recorders.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.debug('Stopping periodic data recording')
+ if self._split_tasks.internal_events_task:
+ await self._split_tasks.internal_events_task.stop()
+
+ if blocking:
+ await self._stop_periodic_data_recording()
+ _LOGGER.debug('all tasks finished successfully.')
+ else:
+ asyncio.get_running_loop().create_task(self._stop_periodic_data_recording())
+
+ async def _stop_periodic_data_recording(self):
+ """
+ Stop recorders.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ for task in self._periodic_data_recording_tasks:
+ await task.stop()
+
+ async def kill_split(self, feature_flag_name, default_treatment, change_number):
+ """
+ Kill a feature flag locally.
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ await self._split_synchronizers.split_sync.kill_split(feature_flag_name, default_treatment,
+ change_number)
+
+class RedisSynchronizerBase(BaseSynchronizer):
+ """Redis Synchronizer."""
+
+ def __init__(self, split_synchronizers, split_tasks):
+ """
+ Class constructor.
+
+ :param split_synchronizers: syncs for performing synchronization of segments and feature flags
+ :type split_synchronizers: splitio.sync.synchronizer.SplitSynchronizers
+ :param split_tasks: tasks for starting/stopping tasks
+ :type split_tasks: splitio.sync.synchronizer.SplitTasks
+ """
+ self._split_synchronizers = split_synchronizers
+ self._tasks = []
+ if split_tasks.impressions_count_task is not None:
+ self._tasks.append(split_tasks.impressions_count_task)
+ if split_tasks.unique_keys_task is not None:
+ self._tasks.append(split_tasks.unique_keys_task)
+ if split_tasks.clear_filter_task is not None:
+ self._tasks.append(split_tasks.clear_filter_task)
+
+ def sync_all(self):
+ """
+ Not implemented
+ """
+ pass
+
+ def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ pass
+
+ def start_periodic_data_recording(self):
+ """Start recorders."""
+ _LOGGER.debug('Starting periodic data recording')
+ for task in self._tasks:
+ task.start()
+
+ def stop_periodic_data_recording(self, blocking):
+ """
+ Stop recorders.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ pass
+
+ def kill_split(self, feature_flag_name, default_treatment, change_number):
+ """Kill a feature flag locally."""
+ raise NotImplementedError()
+
+ def synchronize_splits(self, till):
+ """Synchronize all feature flags."""
+ raise NotImplementedError()
+
+ def synchronize_segment(self, segment_name, till):
+ """Synchronize particular segment."""
+ raise NotImplementedError()
+
+ def start_periodic_fetching(self):
+ """Start fetchers for feature flags and segments."""
+ raise NotImplementedError()
+
+ def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ raise NotImplementedError()
+
+
+class RedisSynchronizer(RedisSynchronizerBase):
+ """Redis Synchronizer."""
+
+ def __init__(self, split_synchronizers, split_tasks):
+ """
+ Class constructor.
+
+ :param split_synchronizers: syncs for performing synchronization of segments and feature flags
+ :type split_synchronizers: splitio.sync.synchronizer.SplitSynchronizers
+ :param split_tasks: tasks for starting/stopping tasks
+ :type split_tasks: splitio.sync.synchronizer.SplitTasks
+ """
+ RedisSynchronizerBase.__init__(self, split_synchronizers, split_tasks)
+
+ def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.debug('Shutting down tasks.')
+ self.stop_periodic_data_recording(blocking)
+
+ def stop_periodic_data_recording(self, blocking):
+ """
+ Stop recorders.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.debug('Stopping periodic data recording')
+ if blocking:
+ events = []
+ for task in self._tasks:
+ stop_event = threading.Event()
+ task.stop(stop_event)
+ events.append(stop_event)
+ if all(event.wait() for event in events):
+ _LOGGER.debug('all tasks finished successfully.')
+ else:
+ for task in self._tasks:
+ task.stop()
+
+
+class RedisSynchronizerAsync(RedisSynchronizerBase):
+ """Redis Synchronizer."""
+
+ def __init__(self, split_synchronizers, split_tasks):
+ """
+ Class constructor.
+
+ :param split_synchronizers: syncs for performing synchronization of segments and feature flags
+ :type split_synchronizers: splitio.sync.synchronizer.SplitSynchronizers
+ :param split_tasks: tasks for starting/stopping tasks
+ :type split_tasks: splitio.sync.synchronizer.SplitTasks
+ """
+ RedisSynchronizerBase.__init__(self, split_synchronizers, split_tasks)
+
+ async def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.debug('Shutting down tasks.')
+ await self.stop_periodic_data_recording(blocking)
+
+ async def _stop_periodic_data_recording(self):
+ """
+ Stop recorders.
+ """
+ for task in self._tasks:
+ await task.stop()
+
+ async def stop_periodic_data_recording(self, blocking):
+ """
+ Stop recorders.
+
+ :param blocking: flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ _LOGGER.debug('Stopping periodic data recording')
+ if blocking:
+ await self._stop_periodic_data_recording()
+ _LOGGER.debug('all tasks finished successfully.')
+ else:
+ asyncio.get_running_loop().create_task(self._stop_periodic_data_recording)
+
+
+class LocalhostSynchronizerBase(BaseSynchronizer):
+ """LocalhostSynchronizer base."""
+
+ def __init__(self, split_synchronizers, split_tasks, localhost_mode):
+ """
+ Class constructor.
+
+ :param split_synchronizers: syncs for performing synchronization of segments and feature flags
+ :type split_synchronizers: splitio.sync.synchronizer.SplitSynchronizers
+ :param split_tasks: tasks for starting/stopping tasks
+ :type split_tasks: splitio.sync.synchronizer.SplitTasks
+ """
+ self._split_synchronizers = split_synchronizers
+ self._split_tasks = split_tasks
+ self._localhost_mode = localhost_mode
+ self._backoff = Backoff(
+ _ON_DEMAND_FETCH_BACKOFF_BASE,
+ _ON_DEMAND_FETCH_BACKOFF_MAX_WAIT)
+
+ def sync_all(self, till=None):
+ """
+ Synchronize all feature flags.
+ """
+ # TODO: to be removed when legacy and yaml use BUR
+ pass
+
+ def start_periodic_fetching(self):
+ """Start fetchers for feature flags and segments."""
+ if self._split_tasks.split_task is not None:
+ _LOGGER.debug('Starting periodic data fetching')
+ self._split_tasks.split_task.start()
+ if self._split_tasks.segment_task is not None:
+ self._split_tasks.segment_task.start()
+
+ def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ pass
+
+ def kill_split(self, split_name, default_treatment, change_number):
+ """Kill a feature flag locally."""
+ raise NotImplementedError()
+
+ def synchronize_splits(self):
+ """Synchronize all feature flags."""
+ pass
+
+ def synchronize_segment(self, segment_name, till):
+ """Synchronize particular segment."""
+ pass
+
+ def start_periodic_data_recording(self):
+ """Start recorders."""
+ pass
+
+ def stop_periodic_data_recording(self, blocking):
+ """Stop recorders."""
+ pass
+
+ def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ pass
+
+
+class LocalhostSynchronizer(LocalhostSynchronizerBase):
+ """LocalhostSynchronizer."""
+
+ def __init__(self, split_synchronizers, split_tasks, localhost_mode):
+ """
+ Class constructor.
+
+ :param split_synchronizers: syncs for performing synchronization of segments and feature flags
+ :type split_synchronizers: splitio.sync.synchronizer.SplitSynchronizers
+ :param split_tasks: tasks for starting/stopping tasks
+ :type split_tasks: splitio.sync.synchronizer.SplitTasks
+ """
+ LocalhostSynchronizerBase.__init__(self, split_synchronizers, split_tasks, localhost_mode)
+
+ def sync_all(self, till=None):
+ """
+ Synchronize all feature flags.
+ """
+ # TODO: to be removed when legacy and yaml use BUR
+ if self._localhost_mode != LocalhostMode.JSON:
+ return self.synchronize_splits()
+
+ self._backoff.reset()
+ remaining_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES
+ while remaining_attempts > 0:
+ remaining_attempts -= 1
+ try:
+ return self.synchronize_splits()
+ except APIException as exc:
+ _LOGGER.error('Failed syncing all')
+ _LOGGER.error(str(exc))
+
+ how_long = self._backoff.get()
+ time.sleep(how_long)
+
+ def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ _LOGGER.debug('Stopping periodic fetching')
+ if self._split_tasks.split_task is not None:
+ self._split_tasks.split_task.stop()
+ if self._split_tasks.segment_task is not None:
+ self._split_tasks.segment_task.stop()
+ if self._split_tasks.internal_events_task:
+ _LOGGER.debug('Stopping internal events notification')
+ self._split_tasks.internal_events_task.stop()
+
+ def synchronize_splits(self):
+ """Synchronize all feature flags."""
+ try:
+ new_segments = []
+ for segment in self._split_synchronizers.split_sync.synchronize_splits():
+ if not self._split_synchronizers.segment_sync.segment_exist_in_storage(segment):
+ new_segments.append(segment)
+ if len(new_segments) > 0:
+ _LOGGER.debug('Synching Segments: %s', ','.join(new_segments))
+ success = self._split_synchronizers.segment_sync.synchronize_segments(new_segments)
+ if not success:
+ _LOGGER.error('Failed to schedule sync one or all segment(s) below.')
+ _LOGGER.error(','.join(new_segments))
+ else:
+ _LOGGER.debug('Segment sync scheduled.')
+ return True
+
+ except APIException as exc:
+ _LOGGER.error('Failed syncing feature flags')
+ raise APIException('Failed to sync feature flags') from exc
+
+ def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ self.stop_periodic_fetching()
+
+
+class LocalhostSynchronizerAsync(LocalhostSynchronizerBase):
+ """LocalhostSynchronizer Async."""
+
+ def __init__(self, split_synchronizers, split_tasks, localhost_mode):
+ """
+ Class constructor.
+
+ :param split_synchronizers: syncs for performing synchronization of segments and feature flags
+ :type split_synchronizers: splitio.sync.synchronizer.SplitSynchronizers
+ :param split_tasks: tasks for starting/stopping tasks
+ :type split_tasks: splitio.sync.synchronizer.SplitTasks
+ """
+ LocalhostSynchronizerBase.__init__(self, split_synchronizers, split_tasks, localhost_mode)
+
+ async def sync_all(self, till=None):
+ """
+ Synchronize all feature flags.
+ """
+ # TODO: to be removed when legacy and yaml use BUR
+ if self._localhost_mode != LocalhostMode.JSON:
+ return await self.synchronize_splits()
+
+ self._backoff.reset()
+ remaining_attempts = _ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES
+ while remaining_attempts > 0:
+ remaining_attempts -= 1
+ try:
+ return await self.synchronize_splits()
+ except APIException as exc:
+ _LOGGER.error('Failed syncing all')
+ _LOGGER.error(str(exc))
+
+ how_long = self._backoff.get()
+ await asyncio.sleep(how_long)
+
+ async def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ _LOGGER.debug('Stopping periodic fetching')
+ if self._split_tasks.split_task is not None:
+ await self._split_tasks.split_task.stop()
+ if self._split_tasks.segment_task is not None:
+ await self._split_tasks.segment_task.stop()
+ if self._split_tasks.internal_events_task is not None:
+ _LOGGER.debug('Stopping internal events notification')
+ await self._split_tasks.internal_events_task.stop()
+
+ async def synchronize_splits(self):
+ """Synchronize all feature flags."""
+ try:
+ new_segments = []
+ for segment in await self._split_synchronizers.split_sync.synchronize_splits():
+ if not await self._split_synchronizers.segment_sync.segment_exist_in_storage(segment):
+ new_segments.append(segment)
+ if len(new_segments) > 0:
+ _LOGGER.debug('Synching Segments: %s', ','.join(new_segments))
+ success = await self._split_synchronizers.segment_sync.synchronize_segments(new_segments)
+ if not success:
+ _LOGGER.error('Failed to schedule sync one or all segment(s) below.')
+ _LOGGER.error(','.join(new_segments))
+ else:
+ _LOGGER.debug('Segment sync scheduled.')
+ return True
+
+ except APIException as exc:
+ _LOGGER.error('Failed syncing feature flags')
+ raise APIException('Failed to sync feature flags') from exc
+
+ async def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ await self.stop_periodic_fetching()
+
+
+class PluggableSynchronizer(BaseSynchronizer):
+ """Plugable Synchronizer."""
+
+ def synchronize_segment(self, segment_name, till):
+ """
+ Synchronize particular segment.
+
+ :param segment_name: segment associated
+ :type segment_name: str
+ :param till: to fetch
+ :type till: int
+ """
+ pass
+
+ def synchronize_splits(self, till):
+ """
+ Synchronize all feature flags.
+
+ :param till: to fetch
+ :type till: int
+ """
+ pass
+
+ def sync_all(self):
+ """Synchronize all feature flag data."""
+ pass
+
+ def start_periodic_fetching(self):
+ """Start fetchers for feature flags and segments."""
+ pass
+
+ def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ pass
+
+ def start_periodic_data_recording(self):
+ """Start recorders."""
+ pass
+
+ def stop_periodic_data_recording(self, blocking):
+ """Stop recorders."""
+ pass
+
+ def kill_split(self, feature_flag_name, default_treatment, change_number):
+ """
+ Kill a feature_flag locally.
+
+ :param feature_flag_name: name of the feature_flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ pass
+
+ def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ pass
+
+class PluggableSynchronizerAsync(BaseSynchronizer):
+ """Plugable Synchronizer."""
+
+ async def synchronize_segment(self, segment_name, till):
+ """
+ Synchronize particular segment.
+
+ :param segment_name: segment associated
+ :type segment_name: str
+ :param till: to fetch
+ :type till: int
+ """
+ pass
+
+ async def synchronize_splits(self, till):
+ """
+ Synchronize all feature flags.
+
+ :param till: to fetch
+ :type till: int
+ """
+ pass
+
+ async def sync_all(self):
+ """Synchronize all split data."""
+ pass
+
+ async def start_periodic_fetching(self):
+ """Start fetchers for feature flags and segments."""
+ pass
+
+ async def stop_periodic_fetching(self):
+ """Stop fetchers for feature flags and segments."""
+ pass
+
+ async def start_periodic_data_recording(self):
+ """Start recorders."""
+ pass
+
+ async def stop_periodic_data_recording(self, blocking):
+ """Stop recorders."""
+ pass
+
+ async def kill_split(self, feature_flag_name, default_treatment, change_number):
+ """
+ Kill a feature_flag locally.
+
+ :param feature_flag_name: name of the feature flag to perform kill
+ :type feature_flag_name: str
+ :param default_treatment: name of the default treatment to return
+ :type default_treatment: str
+ :param change_number: change_number
+ :type change_number: int
+ """
+ pass
+
+ async def shutdown(self, blocking):
+ """
+ Stop tasks.
+
+ :param blocking:flag to wait until tasks are stopped
+ :type blocking: bool
+ """
+ pass
diff --git a/splitio/sync/telemetry.py b/splitio/sync/telemetry.py
new file mode 100644
index 00000000..38ce7da6
--- /dev/null
+++ b/splitio/sync/telemetry.py
@@ -0,0 +1,172 @@
+"""Telemetry Sync Class."""
+import abc
+
+class TelemetrySynchronizer(object):
+ """Telemetry synchronizer class."""
+
+ def __init__(self, telemetry_submitter):
+ """Initialize Telemetry sync class."""
+ self._telemetry_submitter = telemetry_submitter
+
+ def synchronize_config(self):
+ """synchronize initial config data class."""
+ self._telemetry_submitter.synchronize_config()
+
+ def synchronize_stats(self):
+ """synchronize runtime stats class."""
+ self._telemetry_submitter.synchronize_stats()
+
+
+class TelemetrySynchronizerAsync(object):
+ """Telemetry synchronizer class."""
+
+ def __init__(self, telemetry_submitter):
+ """Initialize Telemetry sync class."""
+ self._telemetry_submitter = telemetry_submitter
+
+ async def synchronize_config(self):
+ """synchronize initial config data class."""
+ await self._telemetry_submitter.synchronize_config()
+
+ async def synchronize_stats(self):
+ """synchronize runtime stats class."""
+ await self._telemetry_submitter.synchronize_stats()
+
+
+class TelemetrySubmitter(object, metaclass=abc.ABCMeta):
+ """Telemetry sumbitter interface."""
+
+ @abc.abstractmethod
+ def synchronize_config(self):
+ """synchronize initial config data classe."""
+
+ @abc.abstractmethod
+ def synchronize_stats(self):
+ """synchronize runtime stats class."""
+
+
+class InMemoryTelemetrySubmitter(TelemetrySubmitter):
+ """Telemetry sumbitter class."""
+
+ def __init__(self, telemetry_consumer, feature_flag_storage, segment_storage, telemetry_api):
+ """Initialize all producer classes."""
+ self._telemetry_init_consumer = telemetry_consumer.get_telemetry_init_consumer()
+ self._telemetry_evaluation_consumer = telemetry_consumer.get_telemetry_evaluation_consumer()
+ self._telemetry_runtime_consumer = telemetry_consumer.get_telemetry_runtime_consumer()
+ self._telemetry_api = telemetry_api
+ self._feature_flag_storage = feature_flag_storage
+ self._segment_storage = segment_storage
+
+ def synchronize_config(self):
+ """synchronize initial config data classe."""
+ self._telemetry_api.record_init(self._telemetry_init_consumer.get_config_stats())
+
+ def synchronize_stats(self):
+ """synchronize runtime stats class."""
+ self._telemetry_api.record_stats(self._build_stats())
+
+ def _build_stats(self):
+ """
+ Format stats to Dict.
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ merged_dict = {
+ 'spC': self._feature_flag_storage.get_splits_count(),
+ 'seC': self._segment_storage.get_segments_count(),
+ 'skC': self._segment_storage.get_segments_keys_count()
+ }
+ merged_dict.update(self._telemetry_runtime_consumer.pop_formatted_stats())
+ merged_dict.update(self._telemetry_evaluation_consumer.pop_formatted_stats())
+ return merged_dict
+
+
+class InMemoryTelemetrySubmitterAsync(TelemetrySubmitter):
+ """Telemetry sumbitter async class."""
+
+ def __init__(self, telemetry_consumer, feature_flag_storage, segment_storage, telemetry_api):
+ """Initialize all producer classes."""
+ self._telemetry_init_consumer = telemetry_consumer.get_telemetry_init_consumer()
+ self._telemetry_evaluation_consumer = telemetry_consumer.get_telemetry_evaluation_consumer()
+ self._telemetry_runtime_consumer = telemetry_consumer.get_telemetry_runtime_consumer()
+ self._telemetry_api = telemetry_api
+ self._feature_flag_storage = feature_flag_storage
+ self._segment_storage = segment_storage
+
+ async def synchronize_config(self):
+ """synchronize initial config data classe."""
+ await self._telemetry_api.record_init(await self._telemetry_init_consumer.get_config_stats())
+
+ async def synchronize_stats(self):
+ """synchronize runtime stats class."""
+ await self._telemetry_api.record_stats(await self._build_stats())
+
+ async def _build_stats(self):
+ """
+ Format stats to Dict.
+
+ :returns: formatted stats
+ :rtype: Dict
+ """
+ merged_dict = {
+ 'spC': await self._feature_flag_storage.get_splits_count(),
+ 'seC': await self._segment_storage.get_segments_count(),
+ 'skC': await self._segment_storage.get_segments_keys_count()
+ }
+ merged_dict.update(await self._telemetry_runtime_consumer.pop_formatted_stats())
+ merged_dict.update(await self._telemetry_evaluation_consumer.pop_formatted_stats())
+ return merged_dict
+
+class RedisTelemetrySubmitter(object):
+ """Telemetry sumbitter class."""
+
+ def __init__(self, telemetry_storage):
+ """Initialize all producer classes."""
+ self._telemetry_storage = telemetry_storage
+
+ def synchronize_config(self):
+ """synchronize initial config data classe."""
+ self._telemetry_storage.push_config_stats()
+
+ def synchronize_stats(self):
+ """No implementation."""
+ pass
+
+
+class RedisTelemetrySubmitterAsync(object):
+ """Telemetry sumbitter class."""
+
+ def __init__(self, telemetry_storage):
+ """Initialize all producer classes."""
+ self._telemetry_storage = telemetry_storage
+
+ async def synchronize_config(self):
+ """synchronize initial config data classe."""
+ await self._telemetry_storage.push_config_stats()
+
+ async def synchronize_stats(self):
+ """No implementation."""
+ pass
+
+class LocalhostTelemetrySubmitter(object):
+ """Telemetry sumbitter class."""
+
+ def synchronize_config(self):
+ """No implementation."""
+ pass
+
+ def synchronize_stats(self):
+ """No implementation."""
+ pass
+
+class LocalhostTelemetrySubmitterAsync(object):
+ """Telemetry sumbitter class."""
+
+ async def synchronize_config(self):
+ """No implementation."""
+ pass
+
+ async def synchronize_stats(self):
+ """No implementation."""
+ pass
diff --git a/splitio/sync/unique_keys.py b/splitio/sync/unique_keys.py
new file mode 100644
index 00000000..b11a6084
--- /dev/null
+++ b/splitio/sync/unique_keys.py
@@ -0,0 +1,144 @@
+_UNIQUE_KEYS_MAX_BULK_SIZE = 5000
+
+class UniqueKeysSynchronizerBase(object):
+ """Unique Keys Synchronizer base class."""
+
+ def __init__(self):
+ """
+ Initialize Unique keys synchronizer instance
+
+ :param uniqe_keys_tracker: instance of uniqe keys tracker
+ :type uniqe_keys_tracker: splitio.engine.uniqur_key_tracker.UniqueKeysTracker
+ """
+ self._max_bulk_size = _UNIQUE_KEYS_MAX_BULK_SIZE
+
+ def _split_cache_to_bulks(self, cache):
+ """
+ Split the current unique keys dictionary into seperate dictionaries,
+ each with the size of max_bulk_size. Overflow the last feature_flag set() to new unique keys dictionary.
+
+ :return: array of unique keys dictionaries
+ :rtype: [Dict{'feature_flag1': set(), 'feature_flag2': set(), .. }]
+ """
+ bulks = []
+ bulk = {}
+ total_size = 0
+ for feature_flag in cache:
+ total_size += len(cache[feature_flag])
+ if total_size > self._max_bulk_size:
+ keys_list = list(cache[feature_flag])
+ chunk_list = self._chunks(keys_list)
+ if bulk != {}:
+ bulks.append(bulk)
+ for bulk_keys in chunk_list:
+ bulk[feature_flag] = set(bulk_keys)
+ bulks.append(bulk)
+ bulk = {}
+ else:
+ bulk[feature_flag] = cache[feature_flag]
+ if total_size != 0 and bulk != {}:
+ bulks.append(bulk)
+
+ return bulks
+
+ def _chunks(self, keys_list):
+ """
+ Split array into chunks
+ """
+ for i in range(0, len(keys_list), self._max_bulk_size):
+ yield keys_list[i:i + self._max_bulk_size]
+
+
+class UniqueKeysSynchronizer(UniqueKeysSynchronizerBase):
+ """Unique Keys Synchronizer class."""
+
+ def __init__(self, impressions_sender_adapter, uniqe_keys_tracker):
+ """
+ Initialize Unique keys synchronizer instance
+
+ :param uniqe_keys_tracker: instance of uniqe keys tracker
+ :type uniqe_keys_tracker: splitio.engine.uniqur_key_tracker.UniqueKeysTracker
+ """
+ UniqueKeysSynchronizerBase.__init__(self)
+ self._uniqe_keys_tracker = uniqe_keys_tracker
+ self._impressions_sender_adapter = impressions_sender_adapter
+
+ def send_all(self):
+ """
+ Flush the unique keys dictionary to split back end.
+ Limit each post to the max_bulk_size value.
+
+ """
+ cache, cache_size = self._uniqe_keys_tracker.get_cache_info_and_pop_all()
+ if cache_size <= self._max_bulk_size:
+ self._impressions_sender_adapter.record_unique_keys(cache)
+ else:
+ for bulk in self._split_cache_to_bulks(cache):
+ self._impressions_sender_adapter.record_unique_keys(bulk)
+
+
+class UniqueKeysSynchronizerAsync(UniqueKeysSynchronizerBase):
+ """Unique Keys Synchronizer async class."""
+
+ def __init__(self, impressions_sender_adapter, uniqe_keys_tracker):
+ """
+ Initialize Unique keys synchronizer instance
+
+ :param uniqe_keys_tracker: instance of uniqe keys tracker
+ :type uniqe_keys_tracker: splitio.engine.uniqur_key_tracker.UniqueKeysTracker
+ """
+ UniqueKeysSynchronizerBase.__init__(self)
+ self._uniqe_keys_tracker = uniqe_keys_tracker
+ self._impressions_sender_adapter = impressions_sender_adapter
+
+ async def send_all(self):
+ """
+ Flush the unique keys dictionary to split back end.
+ Limit each post to the max_bulk_size value.
+
+ """
+ cache, cache_size = await self._uniqe_keys_tracker.get_cache_info_and_pop_all()
+ if cache_size <= self._max_bulk_size:
+ await self._impressions_sender_adapter.record_unique_keys(cache)
+ else:
+ for bulk in self._split_cache_to_bulks(cache):
+ await self._impressions_sender_adapter.record_unique_keys(bulk)
+
+
+class ClearFilterSynchronizer(object):
+ """Clear filter class."""
+
+ def __init__(self, unique_keys_tracker):
+ """
+ Initialize Unique keys synchronizer instance
+
+ :param uniqe_keys_tracker: instance of uniqe keys tracker
+ :type uniqe_keys_tracker: splitio.engine.uniqur_key_tracker.UniqueKeysTracker
+ """
+ self._unique_keys_tracker = unique_keys_tracker
+
+ def clear_all(self):
+ """
+ Clear the bloom filter cache
+
+ """
+ self._unique_keys_tracker.clear_filter()
+
+class ClearFilterSynchronizerAsync(object):
+ """Clear filter async class."""
+
+ def __init__(self, unique_keys_tracker):
+ """
+ Initialize Unique keys synchronizer instance
+
+ :param uniqe_keys_tracker: instance of uniqe keys tracker
+ :type uniqe_keys_tracker: splitio.engine.uniqur_key_tracker.UniqueKeysTracker
+ """
+ self._unique_keys_tracker = unique_keys_tracker
+
+ async def clear_all(self):
+ """
+ Clear the bloom filter cache
+
+ """
+ await self._unique_keys_tracker.clear_filter()
diff --git a/splitio/sync/util.py b/splitio/sync/util.py
new file mode 100644
index 00000000..cd32d2c2
--- /dev/null
+++ b/splitio/sync/util.py
@@ -0,0 +1,68 @@
+import hashlib
+import logging
+
+_LOGGER = logging.getLogger(__name__)
+
+def _get_sha(fetched):
+ """
+ Return sha256 of given string.
+
+ :param fetched: string variable
+ :type fetched: str
+
+ :return: hex representation of sha256
+ :rtype: str
+ """
+ return hashlib.sha256(fetched.encode()).hexdigest()
+
+def _sanitize_object_element(object, object_name, element_name, default_value, lower_value=None, upper_value=None, in_list=None, not_in_list=None):
+ """
+ Sanitize specific object element.
+
+ :param object: split or segment dict object
+ :type object: Dict
+ :param element_name: element name
+ :type element_name: str
+ :param default_value: element default value
+ :type default_value: any
+ :param lower_value: Optional, element lower value limit
+ :type lower_value: any
+ :param upper_value: Optional, element upper value limit
+ :type upper_value: any
+ :param in_list: Optional, list of values expected in element
+ :type in_list: [any]
+ :param not_in_list: Optional, list of values not expected in element
+ :type not_in_list: [any]
+
+ :return: sanitized object
+ :rtype: Dict
+ """
+ if element_name not in object or object[element_name] is None:
+ object[element_name] = default_value
+ _LOGGER.debug("Sanitized element [%s] to '%s' in %s: %s.", element_name, default_value, object_name, object['name'])
+ if lower_value is not None and upper_value is not None:
+ if object[element_name] < lower_value or object[element_name] > upper_value:
+ object[element_name] = default_value
+ _LOGGER.debug("Sanitized element [%s] to '%s' in %s: %s.", element_name, default_value, object_name, object['name'])
+ elif lower_value is not None:
+ if object[element_name] < lower_value:
+ object[element_name] = default_value
+ _LOGGER.debug("Sanitized element [%s] to '%s' in %s: %s.", element_name, default_value, object_name, object['name'])
+ elif upper_value is not None:
+ if object[element_name] > upper_value:
+ object[element_name] = default_value
+ _LOGGER.debug("Sanitized element [%s] to '%s' in %s: %s.", element_name, default_value, object_name, object['name'])
+ if in_list is not None:
+ if object[element_name] not in in_list:
+ object[element_name] = default_value
+ _LOGGER.debug("Sanitized element [%s] to '%s' in %s: %s.", element_name, default_value, object_name, object['name'])
+ if not_in_list is not None:
+ if object[element_name] in not_in_list:
+ object[element_name] = default_value
+ _LOGGER.debug("Sanitized element [%s] to '%s' in %s: %s.", element_name, default_value, object_name, object['name'])
+
+ return object
+
+def convert_to_new_spec(body):
+ return {"ff": {"d": body["splits"], "s": body["since"], "t": body["till"]},
+ "rbs": {"d": [], "s": -1, "t": -1}}
diff --git a/splitio/tasks/__init__.py b/splitio/tasks/__init__.py
index 7d478a22..10c405e5 100644
--- a/splitio/tasks/__init__.py
+++ b/splitio/tasks/__init__.py
@@ -2,6 +2,7 @@
import abc
+
class BaseSynchronizationTask(object):
"""Syncrhonization task interface."""
diff --git a/splitio/tasks/events_sync.py b/splitio/tasks/events_sync.py
index a938518d..a9b9f255 100644
--- a/splitio/tasks/events_sync.py
+++ b/splitio/tasks/events_sync.py
@@ -1,82 +1,15 @@
"""Events syncrhonization task."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
import logging
-from six.moves import queue
-from splitio.api import APIException
from splitio.tasks import BaseSynchronizationTask
-from splitio.tasks.util.asynctask import AsyncTask
+from splitio.tasks.util.asynctask import AsyncTask, AsyncTaskAsync
-class EventsSyncTask(BaseSynchronizationTask):
- """Events synchronization task uses an asynctask.AsyncTask to send events."""
+_LOGGER = logging.getLogger(__name__)
- def __init__(self, events_api, storage, period, bulk_size):
- """
- Class constructor.
- :param events_api: Events Api object to send data to the backend
- :type events_api: splitio.api.events.EventsAPI
- :param storage: Events Storage
- :type storage: splitio.storage.EventStorage
- :param period: How many seconds to wait between subsequent event pushes to the BE.
- :type period: int
- :param bulk_size: How many events to send per push.
- :type bulk_size: int
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._events_api = events_api
- self._storage = storage
- self._period = period
- self._failed = queue.Queue()
- self._bulk_size = bulk_size
- self._task = AsyncTask(self._send_events, self._period, on_stop=self._send_events)
-
- def _get_failed(self):
- """Return up to events stored in the failed eventes queue."""
- events = []
- count = 0
- while count < self._bulk_size:
- try:
- events.append(self._failed.get(False))
- count += 1
- except queue.Empty:
- # If no more items in queue, break the loop
- break
- return events
-
- def _add_to_failed_queue(self, events):
- """
- Add events that were about to be sent to a secondary queue for failed sends.
-
- :param events: List of events that failed to be pushed.
- :type events: list
- """
- for event in events:
- self._failed.put(event, False)
-
- def _send_events(self):
- """Send events from both the failed and new queues."""
- to_send = self._get_failed()
- if len(to_send) < self._bulk_size:
- # If the amount of previously failed items is less than the bulk
- # size, try to complete with new events from storage
- to_send.extend(self._storage.pop_many(self._bulk_size - len(to_send)))
-
- if not to_send:
- return
-
- try:
- self._events_api.flush_events(to_send)
- except APIException as exc:
- self._logger.error(
- 'Exception raised while reporting events: %s -- %d',
- exc.message,
- exc.status_code
- )
- self._add_to_failed_queue(to_send)
+class EventsSyncTaskBase(BaseSynchronizationTask):
+ """Events synchronization task base uses an asynctask.AsyncTask to send events."""
def start(self):
"""Start executing the events synchronization task."""
@@ -84,10 +17,11 @@ def start(self):
def stop(self, event=None):
"""Stop executing the events synchronization task."""
- self._task.stop(event)
+ pass
def flush(self):
"""Flush events in storage."""
+ _LOGGER.debug('Forcing flush execution for events')
self._task.force_execution()
def is_running(self):
@@ -98,3 +32,45 @@ def is_running(self):
:rtype: bool
"""
return self._task.running()
+
+
+class EventsSyncTask(EventsSyncTaskBase):
+ """Events synchronization task uses an asynctask.AsyncTask to send events."""
+
+ def __init__(self, synchronize_events, period):
+ """
+ Class constructor.
+
+ :param synchronize_events: Events Api object to send data to the backend
+ :type synchronize_events: splitio.api.events.EventsAPI
+ :param period: How many seconds to wait between subsequent event pushes to the BE.
+ :type period: int
+
+ """
+ self._period = period
+ self._task = AsyncTask(synchronize_events, self._period, on_stop=synchronize_events)
+
+ def stop(self, event=None):
+ """Stop executing the events synchronization task."""
+ self._task.stop(event)
+
+
+class EventsSyncTaskAsync(EventsSyncTaskBase):
+ """Events synchronization task uses an asynctask.AsyncTaskAsync to send events."""
+
+ def __init__(self, synchronize_events, period):
+ """
+ Class constructor.
+
+ :param synchronize_events: Events Api object to send data to the backend
+ :type synchronize_events: splitio.api.events.EventsAPIAsync
+ :param period: How many seconds to wait between subsequent event pushes to the BE.
+ :type period: int
+
+ """
+ self._period = period
+ self._task = AsyncTaskAsync(synchronize_events, self._period, on_stop=synchronize_events)
+
+ async def stop(self, event=None):
+ """Stop executing the events synchronization task."""
+ await self._task.stop(True)
diff --git a/splitio/tasks/impressions_sync.py b/splitio/tasks/impressions_sync.py
index 075f4547..195bdbdf 100644
--- a/splitio/tasks/impressions_sync.py
+++ b/splitio/tasks/impressions_sync.py
@@ -1,83 +1,87 @@
"""Impressions syncrhonization task."""
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
import logging
-from six.moves import queue
-
-from splitio.api import APIException
from splitio.tasks import BaseSynchronizationTask
-from splitio.tasks.util.asynctask import AsyncTask
+from splitio.tasks.util.asynctask import AsyncTask, AsyncTaskAsync
+
+
+_LOGGER = logging.getLogger(__name__)
+
+
+class ImpressionsSyncTaskBase(BaseSynchronizationTask):
+ """Impressions synchronization task uses an asynctask.AsyncTask to send impressions."""
+
+ def start(self):
+ """Start executing the impressions synchronization task."""
+ self._task.start()
+
+ def stop(self, event=None):
+ """Stop executing the impressions synchronization task."""
+ pass
+
+ def is_running(self):
+ """
+ Return whether the task is running or not.
+
+ :return: True if the task is running. False otherwise.
+ :rtype: bool
+ """
+ return self._task.running()
+
+ def flush(self):
+ """Flush impressions in storage."""
+ _LOGGER.debug('Forcing flush execution for impressions')
+ self._task.force_execution()
-class ImpressionsSyncTask(BaseSynchronizationTask):
+class ImpressionsSyncTask(ImpressionsSyncTaskBase):
"""Impressions synchronization task uses an asynctask.AsyncTask to send impressions."""
- def __init__(self, impressions_api, storage, period, bulk_size):
+ def __init__(self, synchronize_impressions, period):
"""
Class constructor.
- :param impressions_api: Impressions Api object to send data to the backend
- :type impressions_api: splitio.api.impressions.ImpressionsAPI
- :param storage: Impressions Storage
- :type storage: splitio.storage.ImpressionsStorage
+ :param synchronize_impressions: sender
+ :type synchronize_impressions: func
:param period: How many seconds to wait between subsequent impressions pushes to the BE.
:type period: int
- :param bulk_size: How many impressions to send per push.
- :type bulk_size: int
+
"""
- self._logger = logging.getLogger(self.__class__.__name__)
- self._impressions_api = impressions_api
- self._storage = storage
self._period = period
- self._failed = queue.Queue()
- self._bulk_size = bulk_size
- self._task = AsyncTask(self._send_impressions, self._period, on_stop=self._send_impressions)
-
- def _get_failed(self):
- """Return up to impressions stored in the failed impressions queue."""
- imps = []
- count = 0
- while count < self._bulk_size:
- try:
- imps.append(self._failed.get(False))
- count += 1
- except queue.Empty:
- # If no more items in queue, break the loop
- break
- return imps
-
- def _add_to_failed_queue(self, imps):
+ self._task = AsyncTask(synchronize_impressions, self._period,
+ on_stop=synchronize_impressions)
+
+ def stop(self, event=None):
+ """Stop executing the impressions synchronization task."""
+ self._task.stop(event)
+
+
+class ImpressionsSyncTaskAsync(ImpressionsSyncTaskBase):
+ """Impressions synchronization task uses an asynctask.AsyncTask to send impressions."""
+
+ def __init__(self, synchronize_impressions, period):
"""
- Add impressions that were about to be sent to a secondary queue for failed sends.
+ Class constructor.
+
+ :param synchronize_impressions: sender
+ :type synchronize_impressions: func
+ :param period: How many seconds to wait between subsequent impressions pushes to the BE.
+ :type period: int
- :param imps: List of impressions that failed to be pushed.
- :type imps: list
"""
- for impression in imps:
- self._failed.put(impression, False)
-
- def _send_impressions(self):
- """Send impressions from both the failed and new queues."""
- to_send = self._get_failed()
- if len(to_send) < self._bulk_size:
- # If the amount of previously failed items is less than the bulk
- # size, try to complete with new impressions from storage
- to_send.extend(self._storage.pop_many(self._bulk_size - len(to_send)))
-
- if not to_send:
- return
-
- try:
- self._impressions_api.flush_impressions(to_send)
- except APIException as exc:
- self._logger.error(
- 'Exception raised while reporting impressions: %s -- %d',
- exc.message,
- exc.status_code
- )
- self._add_to_failed_queue(to_send)
+ self._period = period
+ self._task = AsyncTaskAsync(synchronize_impressions, self._period,
+ on_stop=synchronize_impressions)
+
+ async def stop(self, event=None):
+ """Stop executing the impressions synchronization task."""
+ await self._task.stop(True)
+
+
+class ImpressionsCountSyncTaskBase(BaseSynchronizationTask):
+ """Impressions synchronization task uses an asynctask.AsyncTask to send impressions."""
+
+ _PERIOD = 1800 # 30 * 60 # 30 minutes
def start(self):
"""Start executing the impressions synchronization task."""
@@ -85,7 +89,7 @@ def start(self):
def stop(self, event=None):
"""Stop executing the impressions synchronization task."""
- self._task.stop(event)
+ pass
def is_running(self):
"""
@@ -99,3 +103,39 @@ def is_running(self):
def flush(self):
"""Flush impressions in storage."""
self._task.force_execution()
+
+
+class ImpressionsCountSyncTask(ImpressionsCountSyncTaskBase):
+ """Impressions synchronization task uses an asynctask.AsyncTask to send impressions."""
+
+ def __init__(self, synchronize_counters):
+ """
+ Class constructor.
+
+ :param synchronize_counters: Handler
+ :type synchronize_counters: func
+
+ """
+ self._task = AsyncTask(synchronize_counters, self._PERIOD, on_stop=synchronize_counters)
+
+ def stop(self, event=None):
+ """Stop executing the impressions synchronization task."""
+ self._task.stop(event)
+
+
+class ImpressionsCountSyncTaskAsync(ImpressionsCountSyncTaskBase):
+ """Impressions synchronization task uses an asynctask.AsyncTask to send impressions."""
+
+ def __init__(self, synchronize_counters):
+ """
+ Class constructor.
+
+ :param synchronize_counters: Handler
+ :type synchronize_counters: func
+
+ """
+ self._task = AsyncTaskAsync(synchronize_counters, self._PERIOD, on_stop=synchronize_counters)
+
+ async def stop(self):
+ """Stop executing the impressions synchronization task."""
+ await self._task.stop(True)
diff --git a/splitio/tasks/segment_sync.py b/splitio/tasks/segment_sync.py
index 2fa60b0f..55238634 100644
--- a/splitio/tasks/segment_sync.py
+++ b/splitio/tasks/segment_sync.py
@@ -1,98 +1,23 @@
"""Segment syncrhonization module."""
import logging
-from splitio.api import APIException
from splitio.tasks import BaseSynchronizationTask
-from splitio.tasks.util import asynctask, workerpool
-from splitio.models import segments
+from splitio.tasks.util import asynctask
-class SegmentSynchronizationTask(BaseSynchronizationTask): #pylint: disable=too-many-instance-attributes
- """Segment Syncrhonization class."""
+_LOGGER = logging.getLogger(__name__)
- def __init__(self, segment_api, segment_storage, split_storage, period, event): #pylint: disable=too-many-arguments
- """
- Clas constructor.
- :param segment_api: API to retrieve segments from backend.
- :type segment_api: splitio.api.SegmentApi
-
- :param segment_storage: Segment storage reference.
- :type segment_storage: splitio.storage.SegmentStorage
-
- :param event: Event to signal when all segments have finished initial sync.
- :type event: threading.Event
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._worker_pool = workerpool.WorkerPool(20, self._ensure_segment_is_updated)
- self._task = asynctask.AsyncTask(self._main, period, on_init=self._on_init)
- self._segment_api = segment_api
- self._segment_storage = segment_storage
- self._split_storage = split_storage
- self._event = event
- self._pending_initialization = []
-
- def _update_segment(self, segment_name):
- """
- Update a segment by hitting the split backend.
-
- :param segment_name: Name of the segment to update.
- :type segment_name: str
- """
- since = self._segment_storage.get_change_number(segment_name)
- if since is None:
- since = -1
-
- try:
- segment_changes = self._segment_api.fetch_segment(segment_name, since)
- except APIException:
- self._logger.error('Error fetching segments')
- return False
-
- if since == -1: # first time fetching the segment
- new_segment = segments.from_raw(segment_changes)
- self._segment_storage.put(new_segment)
- else:
- self._segment_storage.update(
- segment_name,
- segment_changes['added'],
- segment_changes['removed'],
- segment_changes['till']
- )
-
- return segment_changes['till'] == segment_changes['since']
-
- def _main(self):
- """Submit all current segments and wait for them to finish."""
- segment_names = self._split_storage.get_segment_names()
- for segment_name in segment_names:
- self._worker_pool.submit_work(segment_name)
-
- def _on_init(self):
- """Submit all current segments and wait for them to finish, then set the ready flag."""
- self._main()
- self._worker_pool.wait_for_completion()
- self._event.set()
-
- def _ensure_segment_is_updated(self, segment_name):
- """
- Update a segment by hitting the split backend.
-
- :param segment_name: Name of the segment to update.
- :type segment_name: str
- """
- while not self._update_segment(segment_name):
- pass
+class SegmentSynchronizationTaskBase(BaseSynchronizationTask):
+ """Segment Syncrhonization base class."""
def start(self):
"""Start segment synchronization."""
- self._worker_pool.start()
self._task.start()
def stop(self, event=None):
"""Stop segment synchronization."""
- self._task.stop()
- self._worker_pool.stop(event)
+ pass
def is_running(self):
"""
@@ -102,3 +27,39 @@ def is_running(self):
:rtype: bool
"""
return self._task.running()
+
+
+class SegmentSynchronizationTask(SegmentSynchronizationTaskBase):
+ """Segment Syncrhonization class."""
+
+ def __init__(self, synchronize_segments, period):
+ """
+ Clas constructor.
+
+ :param synchronize_segments: handler for syncing segments
+ :type synchronize_segments: func
+
+ """
+ self._task = asynctask.AsyncTask(synchronize_segments, period, on_init=None)
+
+ def stop(self, event=None):
+ """Stop segment synchronization."""
+ self._task.stop(event)
+
+
+class SegmentSynchronizationTaskAsync(SegmentSynchronizationTaskBase):
+ """Segment Syncrhonization async class."""
+
+ def __init__(self, synchronize_segments, period):
+ """
+ Clas constructor.
+
+ :param synchronize_segments: handler for syncing segments
+ :type synchronize_segments: func
+
+ """
+ self._task = asynctask.AsyncTaskAsync(synchronize_segments, period, on_init=None)
+
+ async def stop(self):
+ """Stop segment synchronization."""
+ await self._task.stop(True)
diff --git a/splitio/tasks/split_sync.py b/splitio/tasks/split_sync.py
index b6d9cbed..0752bdbc 100644
--- a/splitio/tasks/split_sync.py
+++ b/splitio/tasks/split_sync.py
@@ -1,80 +1,69 @@
"""Split Synchronization task."""
import logging
-from splitio.models import splits
-from splitio.api import APIException
from splitio.tasks import BaseSynchronizationTask
-from splitio.tasks.util.asynctask import AsyncTask
+from splitio.tasks.util.asynctask import AsyncTask, AsyncTaskAsync
-class SplitSynchronizationTask(BaseSynchronizationTask):
+_LOGGER = logging.getLogger(__name__)
+
+
+class SplitSynchronizationTaskBase(BaseSynchronizationTask):
"""Split Synchronization task class."""
- def __init__(self, split_api, split_storage, period, ready_flag):
- """
- Class constructor.
+ def start(self):
+ """Start the task."""
+ self._task.start()
- :param split_api: Split API Client.
- :type split_api: splitio.api.splits.SplitsAPI
- :param split_storage: Split Storage.
- :type split_storage: splitio.storage.InMemorySplitStorage
- :param ready_flag: Flag to set when splits initial sync is complete.
- :type ready_flag: threading.Event
- """
- self._logger = logging.getLogger(self.__class__.__name__)
- self._api = split_api
- self._ready_flag = ready_flag
- self._period = period
- self._split_storage = split_storage
- self._task = AsyncTask(self._update_splits, period, self._on_start)
+ def stop(self, event=None):
+ """Stop the task. Accept an optional event to set when the task has finished."""
+ pass
- def _update_splits(self):
+ def is_running(self):
"""
- Hit endpoint, update storage and return True if sync is complete.
+ Return whether the task is running.
- :return: True if synchronization is complete.
- :rtype: bool
+ :return: True if the task is running. False otherwise.
+ :rtype bool
"""
- till = self._split_storage.get_change_number()
- if till is None:
- till = -1
-
- try:
- split_changes = self._api.fetch_splits(till)
- except APIException:
- self._logger.error('Failed to fetch split from servers')
- return False
-
- for split in split_changes.get('splits', []):
- if split['status'] == splits.Status.ACTIVE.value:
- self._split_storage.put(splits.from_raw(split))
- else:
- self._split_storage.remove(split['name'])
+ return self._task.running()
- self._split_storage.set_change_number(split_changes['till'])
- return split_changes['till'] == split_changes['since']
- def _on_start(self):
- """Wait until splits are in sync and set the flag to true."""
- while not self._update_splits():
- pass
+class SplitSynchronizationTask(SplitSynchronizationTaskBase):
+ """Split Synchronization task class."""
- self._ready_flag.set()
- return True
+ def __init__(self, synchronize_splits, period):
+ """
+ Class constructor.
- def start(self):
- """Start the task."""
- self._task.start()
+ :param synchronize_splits: Handler
+ :type synchronize_splits: func
+ :param period: Period of task
+ :type period: int
+ """
+ self._period = period
+ self._task = AsyncTask(synchronize_splits, period, on_init=None)
def stop(self, event=None):
"""Stop the task. Accept an optional event to set when the task has finished."""
self._task.stop(event)
- def is_running(self):
+
+class SplitSynchronizationTaskAsync(SplitSynchronizationTaskBase):
+ """Split Synchronization async task class."""
+
+ def __init__(self, synchronize_splits, period):
"""
- Return whether the task is running.
+ Class constructor.
- :return: True if the task is running. False otherwise.
- :rtype bool
+ :param synchronize_splits: Handler
+ :type synchronize_splits: func
+ :param period: Period of task
+ :type period: int
"""
- return self._task.running()
+ self._period = period
+ self._task = AsyncTaskAsync(synchronize_splits, period, on_init=None)
+
+ async def stop(self, event=None):
+ """Stop the task. Accept an optional event to set when the task has finished."""
+ await self._task.stop(True)
diff --git a/splitio/tasks/telemetry_sync.py b/splitio/tasks/telemetry_sync.py
index 96e084ef..8545530c 100644
--- a/splitio/tasks/telemetry_sync.py
+++ b/splitio/tasks/telemetry_sync.py
@@ -1,70 +1,74 @@
-"""Split Synchronization task."""
-
+"""Telemetry syncrhonization task."""
import logging
-from splitio.api import APIException
+
from splitio.tasks import BaseSynchronizationTask
-from splitio.tasks.util.asynctask import AsyncTask
+from splitio.tasks.util.asynctask import AsyncTask, AsyncTaskAsync
+_LOGGER = logging.getLogger(__name__)
-class TelemetrySynchronizationTask(BaseSynchronizationTask):
- """Split Synchronization task class."""
+class TelemetrySyncTaskBase(BaseSynchronizationTask):
+ """Telemetry synchronization task uses an asynctask.AsyncTask to send MTKs."""
+
+ def start(self):
+ """Start executing the telemetry synchronization task."""
+ self._task.start()
+
+ def stop(self, event=None):
+ """Stop executing the unique telemetry synchronization task."""
+ pass
- def __init__(self, api, storage, period):
+ def is_running(self):
"""
- Class constructor.
+ Return whether the task is running or not.
- :param api: Telemetry API Client.
- :type api: splitio.api.telemetry.TelemetryAPI
- :param storage: Telemetry Storage.
- :type storage: splitio.storage.InMemoryTelemetryStorage
+ :return: True if the task is running. False otherwise.
+ :rtype: bool
"""
- self._logger = logging.getLogger(self.__class__.__name__)
- self._api = api
- self._period = period
- self._storage = storage
- self._task = AsyncTask(self._flush_telemetry, period)
+ return self._task.running()
+
+ def flush(self):
+ """Flush unique keys."""
+ _LOGGER.debug('Forcing flush execution for telemetry')
+ self._task.force_execution()
+
- def _flush_telemetry(self):
+class TelemetrySyncTask(TelemetrySyncTaskBase):
+ """Unique Telemetry task uses an asynctask.AsyncTask to send MTKs."""
+
+ def __init__(self, synchronize_telemetry, period):
"""
- Send latencies, counters and gauges to split BE.
+ Class constructor.
- :return: True if synchronization is complete.
- :rtype: bool
+ :param synchronize_telemetry: sender
+ :type synchronize_telemetry: func
+ :param period: How many seconds to wait between subsequent unique keys pushes to the BE.
+ :type period: int
"""
- try:
- latencies = self._storage.pop_latencies()
- if latencies:
- self._api.flush_latencies(latencies)
- except APIException:
- self._logger.error('Failed send telemetry/latencies to split BE.')
-
- try:
- counters = self._storage.pop_counters()
- if counters:
- self._api.flush_counters(counters)
- except APIException:
- self._logger.error('Failed send telemetry/counters to split BE.')
-
- try:
- gauges = self._storage.pop_gauges()
- if gauges:
- self._api.flush_gauges(gauges)
- except APIException:
- self._logger.error('Failed send telemetry/gauges to split BE.')
- def start(self):
- """Start the task."""
- self._task.start()
+ self._task = AsyncTask(synchronize_telemetry, period,
+ on_stop=synchronize_telemetry)
def stop(self, event=None):
- """Stop the task. Accept an optional event to set when the task has finished."""
+ """Stop executing the unique telemetry synchronization task."""
self._task.stop(event)
- def is_running(self):
+
+class TelemetrySyncTaskAsync(TelemetrySyncTaskBase):
+ """Telemetry synchronization task uses an asynctask.AsyncTask to send MTKs."""
+
+ def __init__(self, synchronize_telemetry, period):
"""
- Return whether the task is running.
+ Class constructor.
- :return: True if the task is running. False otherwise.
- :rtype bool
+ :param synchronize_telemetry: sender
+ :type synchronize_telemetry: func
+ :param period: How many seconds to wait between subsequent unique keys pushes to the BE.
+ :type period: int
"""
- return self._task.running()
+
+ self._task = AsyncTaskAsync(synchronize_telemetry, period,
+ on_stop=synchronize_telemetry)
+
+ async def stop(self):
+ """Stop executing the unique telemetry synchronization task."""
+ await self._task.stop(True)
diff --git a/splitio/tasks/unique_keys_sync.py b/splitio/tasks/unique_keys_sync.py
new file mode 100644
index 00000000..9ba81253
--- /dev/null
+++ b/splitio/tasks/unique_keys_sync.py
@@ -0,0 +1,137 @@
+"""Impressions syncrhonization task."""
+import logging
+
+from splitio.tasks import BaseSynchronizationTask
+from splitio.tasks.util.asynctask import AsyncTask, AsyncTaskAsync
+
+
+_LOGGER = logging.getLogger(__name__)
+_UNIQUE_KEYS_SYNC_PERIOD = 15 * 60 # 15 minutes
+_CLEAR_FILTER_SYNC_PERIOD = 60 * 60 * 24 # 24 hours
+
+
+class UniqueKeysSyncTaskBase(BaseSynchronizationTask):
+ """Unique Keys synchronization task uses an asynctask.AsyncTask to send MTKs."""
+
+ def start(self):
+ """Start executing the unique keys synchronization task."""
+ self._task.start()
+
+ def stop(self, event=None):
+ """Stop executing the unique keys synchronization task."""
+ pass
+
+ def is_running(self):
+ """
+ Return whether the task is running or not.
+
+ :return: True if the task is running. False otherwise.
+ :rtype: bool
+ """
+ return self._task.running()
+
+ def flush(self):
+ """Flush unique keys."""
+ _LOGGER.debug('Forcing flush execution for unique keys')
+ self._task.force_execution()
+
+
+class UniqueKeysSyncTask(UniqueKeysSyncTaskBase):
+ """Unique Keys synchronization task uses an asynctask.AsyncTask to send MTKs."""
+
+ def __init__(self, synchronize_unique_keys, period = _UNIQUE_KEYS_SYNC_PERIOD):
+ """
+ Class constructor.
+
+ :param synchronize_unique_keys: sender
+ :type synchronize_unique_keys: func
+ :param period: How many seconds to wait between subsequent unique keys pushes to the BE.
+ :type period: int
+ """
+ self._task = AsyncTask(synchronize_unique_keys, period,
+ on_stop=synchronize_unique_keys)
+
+ def stop(self, event=None):
+ """Stop executing the unique keys synchronization task."""
+ self._task.stop(event)
+
+
+class UniqueKeysSyncTaskAsync(UniqueKeysSyncTaskBase):
+ """Unique Keys synchronization task uses an asynctask.AsyncTask to send MTKs."""
+
+ def __init__(self, synchronize_unique_keys, period = _UNIQUE_KEYS_SYNC_PERIOD):
+ """
+ Class constructor.
+
+ :param synchronize_unique_keys: sender
+ :type synchronize_unique_keys: func
+ :param period: How many seconds to wait between subsequent unique keys pushes to the BE.
+ :type period: int
+ """
+ self._task = AsyncTaskAsync(synchronize_unique_keys, period,
+ on_stop=synchronize_unique_keys)
+
+ async def stop(self):
+ """Stop executing the unique keys synchronization task."""
+ await self._task.stop(True)
+
+
+class ClearFilterSyncTaskBase(BaseSynchronizationTask):
+ """Unique Keys synchronization task uses an asynctask.AsyncTask to send MTKs."""
+
+ def start(self):
+ """Start executing the unique keys synchronization task."""
+ self._task.start()
+
+ def stop(self, event=None):
+ """Stop executing the unique keys synchronization task."""
+ pass
+
+ def is_running(self):
+ """
+ Return whether the task is running or not.
+
+ :return: True if the task is running. False otherwise.
+ :rtype: bool
+ """
+ return self._task.running()
+
+
+class ClearFilterSyncTask(ClearFilterSyncTaskBase):
+ """Unique Keys synchronization task uses an asynctask.AsyncTask to send MTKs."""
+
+ def __init__(self, clear_filter, period = _CLEAR_FILTER_SYNC_PERIOD):
+ """
+ Class constructor.
+
+ :param synchronize_unique_keys: sender
+ :type synchronize_unique_keys: func
+ :param period: How many seconds to wait between subsequent clearing of bloom filter
+ :type period: int
+ """
+ self._task = AsyncTask(clear_filter, period,
+ on_stop=clear_filter)
+
+ def stop(self, event=None):
+ """Stop executing the unique keys synchronization task."""
+ self._task.stop(event)
+
+
+class ClearFilterSyncTaskAsync(ClearFilterSyncTaskBase):
+ """Unique Keys synchronization task uses an asynctask.AsyncTask to send MTKs."""
+
+ def __init__(self, clear_filter, period = _CLEAR_FILTER_SYNC_PERIOD):
+ """
+ Class constructor.
+
+ :param synchronize_unique_keys: sender
+ :type synchronize_unique_keys: func
+ :param period: How many seconds to wait between subsequent clearing of bloom filter
+ :type period: int
+ """
+ self._task = AsyncTaskAsync(clear_filter, period,
+ on_stop=clear_filter)
+
+ async def stop(self):
+ """Stop executing the unique keys synchronization task."""
+ await self._task.stop(True)
diff --git a/splitio/tasks/util/asynctask.py b/splitio/tasks/util/asynctask.py
index 88fecc00..a772b2d7 100644
--- a/splitio/tasks/util/asynctask.py
+++ b/splitio/tasks/util/asynctask.py
@@ -1,16 +1,14 @@
"""Asynchronous tasks that can be controlled."""
import threading
import logging
-
-from six.moves import queue
-
+import queue
+from splitio.optional.loaders import asyncio
__TASK_STOP__ = 0
__TASK_FORCE_RUN__ = 1
_LOGGER = logging.getLogger(__name__)
-
def _safe_run(func):
"""
Execute a function wrapped in a try-except block.
@@ -23,7 +21,27 @@ def _safe_run(func):
try:
func()
return True
- except Exception: #pylint: disable=broad-except
+ except Exception: # pylint: disable=broad-except
+ # Catch any exception that might happen to avoid the periodic task
+ # from ending and allowing for a recovery, as well as preventing
+ # an exception from propagating and breaking the main thread
+ _LOGGER.error('Something went wrong when running passed function.')
+ _LOGGER.debug('Original traceback:', exc_info=True)
+ return False
+
+async def _safe_run_async(func):
+ """
+ Execute a function wrapped in a try-except block.
+
+ If anything goes wrong returns false instead of propagating the exception.
+
+ :param func: Function to be executed, receives no arguments and it's return
+ value is ignored.
+ """
+ try:
+ await func()
+ return True
+ except Exception: # pylint: disable=broad-except
# Catch any exception that might happen to avoid the periodic task
# from ending and allowing for a recovery, as well as preventing
# an exception from propagating and breaking the main thread
@@ -32,7 +50,7 @@ def _safe_run(func):
return False
-class AsyncTask(object): #pylint: disable=too-many-instance-attributes
+class AsyncTask(object): # pylint: disable=too-many-instance-attributes
"""
Asyncrhonous controllable task class.
@@ -89,24 +107,24 @@ def _execution_wrapper(self):
try:
msg = self._messages.get(True, self._period)
if msg == __TASK_STOP__:
- _LOGGER.info("Stop signal received. finishing task execution")
+ _LOGGER.debug("Stop signal received. finishing task execution")
break
elif msg == __TASK_FORCE_RUN__:
- _LOGGER.info("Force execution signal received. Running now")
+ _LOGGER.debug("Force execution signal received. Running now")
if not _safe_run(self._main):
- _LOGGER.error(
- "An error occurred when executing the task. "
- "Retrying after perio expires"
- )
+ _LOGGER.error("An error occurred when executing the task. "
+ "Retrying after period expires")
continue
except queue.Empty:
# If no message was received, the timeout has expired
# and we're ready for a new execution
- if not _safe_run(self._main):
- _LOGGER.error(
- "An error occurred when executing the task. "
- "Retrying after perio expires"
- )
+ pass
+
+ if not _safe_run(self._main):
+ _LOGGER.error(
+ "An error occurred when executing the task. "
+ "Retrying after period expires"
+ )
finally:
self._cleanup()
@@ -128,8 +146,8 @@ def start(self):
return
# Start execution
- self._thread = threading.Thread(target=self._execution_wrapper)
- self._thread.setDaemon(True)
+ self._thread = threading.Thread(target=self._execution_wrapper,
+ name='AsyncTask::' + getattr(self._main, '__name__', 'N/S'), daemon=True)
try:
self._thread.start()
@@ -167,3 +185,136 @@ def force_execution(self):
def running(self):
"""Return whether the task is running or not."""
return self._running
+
+
+class AsyncTaskAsync(object): # pylint: disable=too-many-instance-attributes
+ """
+ Asyncrhonous controllable task async class.
+
+ This class creates is used to wrap around a function to treat it as a
+ periodic task. This task can be stopped, it's execution can be forced, and
+ it's status (whether it's running or not) can be obtained from the task
+ object.
+ It also allows for "on init" and "on stop" functions to be passed.
+ """
+
+
+ def __init__(self, main, period, on_init=None, on_stop=None):
+ """
+ Class constructor.
+
+ :param main: Main function to be executed periodically
+ :type main: callable
+ :param period: How many seconds to wait between executions
+ :type period: int
+ :param on_init: Function to be executed ONCE before the main one
+ :type on_init: callable
+ :param on_stop: Function to be executed ONCE after the task has finished
+ :type on_stop: callable
+ """
+ self._on_init = on_init
+ self._main = main
+ self._on_stop = on_stop
+ self._period = period
+ self._messages = asyncio.Queue()
+ self._running = False
+ self._completion_event = asyncio.Event()
+ self._sleep_task = None
+
+ async def _execution_wrapper(self):
+ """
+ Execute user defined function in separate thread.
+
+ It will execute the "on init" hook is available. If an exception is
+ raised it will abort execution, otherwise it will enter an infinite
+ loop in which the main function is executed every seconds.
+ After stop has been called the "on stop" hook will be invoked if
+ available.
+
+ All custom functions are run within a _safe_run() function which
+ prevents exceptions from being propagated.
+ """
+ try:
+ if self._on_init is not None:
+ if not await _safe_run_async(self._on_init):
+ _LOGGER.error("Error running task initialization function, aborting execution")
+ self._running = False
+ return
+ self._running = True
+
+ while self._running:
+ try:
+ msg = await asyncio.wait_for(self._messages.get(), timeout=self._period)
+ if msg == __TASK_STOP__:
+ _LOGGER.debug("Stop signal received. finishing task execution")
+ break
+ elif msg == __TASK_FORCE_RUN__:
+ _LOGGER.debug("Force execution signal received. Running now")
+ if not await _safe_run_async(self._main):
+ _LOGGER.error("An error occurred when executing the task. "
+ "Retrying after period expires")
+ continue
+ except asyncio.QueueEmpty:
+ # If no message was received, the timeout has expired
+ # and we're ready for a new execution
+ pass
+ except asyncio.CancelledError:
+ break
+ except asyncio.TimeoutError:
+ pass
+
+ if not await _safe_run_async(self._main):
+ _LOGGER.error(
+ "An error occurred when executing the task. "
+ "Retrying after period expires"
+ )
+ finally:
+ await self._cleanup()
+
+ async def _cleanup(self):
+ """Execute on_stop callback, set event if needed, update status."""
+ if self._on_stop is not None:
+ if not await _safe_run_async(self._on_stop):
+ _LOGGER.error("An error occurred when executing the task's OnStop hook. ")
+
+ self._running = False
+ self._completion_event.set()
+ _LOGGER.debug("AsyncTask finished")
+
+ def start(self):
+ """Start the async task."""
+ if self._running:
+ _LOGGER.warning("Task is already running. Ignoring .start() call")
+ return
+ # Start execution
+ self._completion_event.clear()
+ asyncio.get_running_loop().create_task(self._execution_wrapper())
+
+ async def stop(self, wait_for_completion=False):
+ """
+ Send a signal to the thread in order to stop it. If the task is not running do nothing.
+
+ Optionally accept an event to be set upon task completion.
+
+ :param event: Event to set when the task completes.
+ :type event: threading.Event
+ """
+ if not self._running:
+ return
+
+ # Queue is of infinite size, should not raise an exception
+ self._messages.put_nowait(__TASK_STOP__)
+
+ if wait_for_completion:
+ await self._completion_event.wait()
+
+ def force_execution(self):
+ """Force an execution of the task without waiting for the period to end."""
+ if not self._running:
+ return
+ # Queue is of infinite size, should not raise an exception
+ self._messages.put_nowait(__TASK_FORCE_RUN__)
+
+ def running(self):
+ """Return whether the task is running or not."""
+ return self._running
diff --git a/splitio/tasks/util/workerpool.py b/splitio/tasks/util/workerpool.py
index cf054e8d..8d6c6e53 100644
--- a/splitio/tasks/util/workerpool.py
+++ b/splitio/tasks/util/workerpool.py
@@ -2,8 +2,11 @@
import logging
from threading import Thread, Event
-from six.moves import queue
+import queue
+from splitio.optional.loaders import asyncio
+
+_LOGGER = logging.getLogger(__name__)
class WorkerPool(object):
"""Worker pool class to implement single producer/multiple consumer."""
@@ -15,23 +18,24 @@ def __init__(self, worker_count, worker_func):
:param worker_count: Number of workers for the pool.
:type worker_func: Function to be executed by the workers whenever a messages is fetched.
"""
- self._logger = logging.getLogger(self.__class__.__name__)
+ self._failed = False
self._incoming = queue.Queue()
self._should_be_working = [True for _ in range(0, worker_count)]
self._worker_events = [Event() for _ in range(0, worker_count)]
self._threads = [
- Thread(target=self._wrapper, args=(i, worker_func))
+ Thread(target=self._wrapper, args=(i, worker_func), name="pool_worker_%d" % i)
for i in range(0, worker_count)
]
for thread in self._threads:
- thread.setDaemon(True)
+ thread.daemon = True
def start(self):
"""Start the workers."""
for thread in self._threads:
thread.start()
- def _safe_run(self, func, message):
+ @staticmethod
+ def _safe_run(func, message):
"""
Execute the user funcion for a given message without raising exceptions.
@@ -46,9 +50,9 @@ def _safe_run(self, func, message):
try:
func(message)
return True
- except Exception: #pylint: disable=broad-except
- self._logger.error("Something went wrong when processing message %s", message)
- self._logger.debug('Original traceback: ', exc_info=True)
+ except Exception: # pylint: disable=broad-except
+ _LOGGER.error("Something went wrong when processing message %s", message)
+ _LOGGER.debug('Original traceback: ', exc_info=True)
return False
def _wrapper(self, worker_number, func):
@@ -68,19 +72,22 @@ def _wrapper(self, worker_number, func):
# This method must be both ignored and acknowledged with .task_done()
# otherwise .join() will halt.
if message is None:
+ _LOGGER.debug('spurious message received. acking and ignoring.')
self._incoming.task_done()
continue
# If the task is successfully executed, the ack is done AFTERWARDS,
# to avoid race conditions on SDK initialization.
- ok = self._safe_run(func, message) #pylint: disable=invalid-name
- self._incoming.task_done()
+ _LOGGER.debug("processing message '%s'", message)
+ ok = self._safe_run(func, message) # pylint: disable=invalid-name
if not ok:
- self._logger.error(
+ self._failed = True
+ _LOGGER.error(
("Something went wrong during the execution, "
"removing message \"%s\" from queue."),
message
)
+ self._incoming.task_done()
except queue.Empty:
# No message was fetched, just keep waiting.
pass
@@ -96,15 +103,20 @@ def submit_work(self, message):
:type message: object.
"""
self._incoming.put(message)
+ _LOGGER.debug('queued message %s for processing.', message)
def wait_for_completion(self):
"""Block until the work queue is empty."""
+ _LOGGER.debug('waiting for all messages to be processed.')
self._incoming.join()
+ _LOGGER.debug('all messages processed.')
+ old = self._failed
+ self._failed = False
+ return old
def stop(self, event=None):
"""Stop all worker nodes."""
- async_stop = Thread(target=self._wait_workers_shutdown, args=(event,))
- async_stop.setDaemon(True)
+ async_stop = Thread(target=self._wait_workers_shutdown, args=(event,), daemon=True)
async_stop.start()
def _wait_workers_shutdown(self, event):
@@ -122,3 +134,96 @@ def _wait_workers_shutdown(self, event):
for worker_event in self._worker_events:
worker_event.wait()
event.set()
+
+
+class WorkerPoolAsync(object):
+ """Worker pool async class to implement single producer/multiple consumer."""
+
+ _abort = object()
+
+ def __init__(self, worker_count, worker_func):
+ """
+ Class constructor.
+
+ :param worker_count: Number of workers for the pool.
+ :type worker_func: Function to be executed by the workers whenever a messages is fetched.
+ """
+ self._semaphore = asyncio.Semaphore(worker_count)
+ self._queue = asyncio.Queue()
+ self._handler = worker_func
+ self._aborted = False
+
+ async def _schedule_work(self):
+ """wrap the message handler execution."""
+ while True:
+ message = await self._queue.get()
+ if message == self._abort:
+ self._aborted = True
+ return
+ asyncio.get_running_loop().create_task(self._do_work(message))
+
+ async def _do_work(self, message):
+ """process a single message."""
+ try:
+ await self._semaphore.acquire() # wait until "there's a free worker"
+ if self._aborted: # check in case the pool was shutdown while we were waiting for a worker
+ return
+ await self._handler(message._message)
+ except Exception:
+ _LOGGER.error("Something went wrong when processing message %s", message)
+ _LOGGER.debug('Original traceback: ', exc_info=True)
+ message._failed = True
+ message._complete.set()
+ self._semaphore.release() # signal worker is idle
+
+ def start(self):
+ """Start the workers."""
+ asyncio.get_running_loop().create_task(self._schedule_work())
+
+ async def submit_work(self, jobs):
+ """
+ Add a new message to the work-queue.
+
+ :param message: New message to add.
+ :type message: object.
+ """
+ self.jobs = jobs
+ if len(jobs) == 1:
+ wrapped = TaskCompletionWraper(next(i for i in jobs))
+ await self._queue.put(wrapped)
+ return wrapped
+
+ tasks = [TaskCompletionWraper(job) for job in jobs]
+ for w in tasks:
+ await self._queue.put(w)
+
+ return BatchCompletionWrapper(tasks)
+
+ async def stop(self, event=None):
+ """abort all execution (except currently running handlers)."""
+ await self._queue.put(self._abort)
+
+
+class TaskCompletionWraper:
+ """Task completion class"""
+ def __init__(self, message):
+ self._message = message
+ self._complete = asyncio.Event()
+ self._failed = False
+
+ async def await_completion(self):
+ await self._complete.wait()
+ return not self._failed
+
+ def _mark_as_complete(self):
+ self._complete.set()
+
+
+class BatchCompletionWrapper:
+ """Batch completion class"""
+ def __init__(self, tasks):
+ self._tasks = tasks
+
+ async def await_completion(self):
+ await asyncio.gather(*[task.await_completion() for task in self._tasks])
+ return not any(task._failed for task in self._tasks)
diff --git a/splitio/tasks/uwsgi_wrappers.py b/splitio/tasks/uwsgi_wrappers.py
deleted file mode 100644
index 73d04120..00000000
--- a/splitio/tasks/uwsgi_wrappers.py
+++ /dev/null
@@ -1,194 +0,0 @@
-"""Wrappers for tasks when using UWSGI Cache as a synchronization platform."""
-
-import logging
-import time
-
-from splitio.client.config import DEFAULT_CONFIG
-from splitio.client.util import get_metadata
-from splitio.storage.adapters.uwsgi_cache import get_uwsgi
-from splitio.storage.uwsgi import UWSGIEventStorage, UWSGIImpressionStorage, \
- UWSGISegmentStorage, UWSGISplitStorage, UWSGITelemetryStorage
-from splitio.api.client import HttpClient
-from splitio.api.splits import SplitsAPI
-from splitio.api.segments import SegmentsAPI
-from splitio.api.impressions import ImpressionsAPI
-from splitio.api.telemetry import TelemetryAPI
-from splitio.api.events import EventsAPI
-from splitio.tasks.split_sync import SplitSynchronizationTask
-from splitio.tasks.segment_sync import SegmentSynchronizationTask
-from splitio.tasks.impressions_sync import ImpressionsSyncTask
-from splitio.tasks.events_sync import EventsSyncTask
-from splitio.tasks.telemetry_sync import TelemetrySynchronizationTask
-from splitio.tasks.util import workerpool
-
-_LOGGER = logging.getLogger(__name__)
-
-
-def _get_config(user_config):
- """
- Get sdk configuration using defaults + user overrides.
-
- :param user_config: User configuration.
- :type user_config: dict
-
- :return: Calculated configuration.
- :rtype: dict
- """
- sdk_config = DEFAULT_CONFIG.copy()
- sdk_config.update(user_config)
- return sdk_config
-
-
-def uwsgi_update_splits(user_config):
- """
- Update splits task.
-
- :param user_config: User-provided configuration.
- :type user_config: dict
- """
- config = _get_config(user_config)
- seconds = config['featuresRefreshRate']
- split_sync_task = SplitSynchronizationTask(
- SplitsAPI(
- HttpClient(1500, config.get('sdk_url'), config.get('events_url')), config['apikey']
- ),
- UWSGISplitStorage(get_uwsgi()),
- None, # Time not needed since the task will be triggered manually.
- None # Ready flag not needed since it will never be set and consumed.
- )
-
- while True:
- try:
- split_sync_task._update_splits() #pylint: disable=protected-access
- time.sleep(seconds)
- except Exception: #pylint: disable=broad-except
- _LOGGER.error('Error updating splits')
- _LOGGER.debug('Error: ', exc_info=True)
-
-
-def uwsgi_update_segments(user_config):
- """
- Update segments task.
-
- :param user_config: User-provided configuration.
- :type user_config: dict
- """
- config = _get_config(user_config)
- seconds = config['segmentsRefreshRate']
- segment_sync_task = SegmentSynchronizationTask(
- SegmentsAPI(
- HttpClient(1500, config.get('sdk_url'), config.get('events_url')), config['apikey']
- ),
- UWSGISegmentStorage(get_uwsgi()),
- None, # Split storage not needed, segments provided manually,
- None, # Period not needed, task executed manually
- None # Flag not needed, never consumed or set.
- )
-
- pool = workerpool.WorkerPool(20, segment_sync_task._update_segment) #pylint: disable=protected-access
- pool.start()
- split_storage = UWSGISplitStorage(get_uwsgi())
- while True:
- try:
- for segment_name in split_storage.get_segment_names():
- pool.submit_work(segment_name)
- time.sleep(seconds)
- except Exception: #pylint: disable=broad-except
- _LOGGER.error('Error updating segments')
- _LOGGER.debug('Error: ', exc_info=True)
-
-
-def uwsgi_report_impressions(user_config):
- """
- Flush impressions task.
-
- :param user_config: User-provided configuration.
- :type user_config: dict
- """
- config = _get_config(user_config)
- metadata = get_metadata(config)
- seconds = config['impressionsRefreshRate']
- storage = UWSGIImpressionStorage(get_uwsgi())
- impressions_sync_task = ImpressionsSyncTask(
- ImpressionsAPI(
- HttpClient(1500, config.get('sdk_url'), config.get('events_url')),
- config['apikey'],
- metadata
- ),
- storage,
- None, # Period not needed. Task is being triggered manually.
- config['impressionsBulkSize']
- )
-
- while True:
- try:
- impressions_sync_task._send_impressions() #pylint: disable=protected-access
- for _ in range(0, seconds):
- if storage.should_flush():
- storage.acknowledge_flush()
- break
- time.sleep(1)
- except Exception: #pylint: disable=broad-except
- _LOGGER.error('Error posting impressions')
- _LOGGER.debug('Error: ', exc_info=True)
-
-def uwsgi_report_events(user_config):
- """
- Flush events task.
-
- :param user_config: User-provided configuration.
- :type user_config: dict
- """
- config = _get_config(user_config)
- metadata = get_metadata(config)
- seconds = config.get('eventsRefreshRate', 30)
- storage = UWSGIEventStorage(get_uwsgi())
- task = EventsSyncTask(
- EventsAPI(
- HttpClient(1500, config.get('sdk_url'), config.get('events_url')),
- config['apikey'],
- metadata
- ),
- storage,
- None, # Period not needed. Task is being triggered manually.
- config['eventsBulkSize']
- )
- while True:
- try:
- task._send_events() #pylint: disable=protected-access
- for _ in range(0, seconds):
- if storage.should_flush():
- storage.acknowledge_flush()
- break
- time.sleep(1)
- except Exception: #pylint: disable=broad-except
- _LOGGER.error('Error posting metrics')
- _LOGGER.debug('Error: ', exc_info=True)
-
-def uwsgi_report_telemetry(user_config):
- """
- Flush events task.
-
- :param user_config: User-provided configuration.
- :type user_config: dict
- """
- config = _get_config(user_config)
- metadata = get_metadata(config)
- seconds = config.get('metricsRefreshRate', 30)
- storage = UWSGITelemetryStorage(get_uwsgi())
- task = TelemetrySynchronizationTask(
- TelemetryAPI(
- HttpClient(1500, config.get('sdk_url'), config.get('events_url')),
- config['apikey'],
- metadata
- ),
- storage,
- None, # Period not needed. Task is being triggered manually.
- )
- while True:
- try:
- task._flush_telemetry() #pylint: disable=protected-access
- time.sleep(seconds)
- except Exception: #pylint: disable=broad-except
- _LOGGER.error('Error posting metrics')
- _LOGGER.debug('Error: ', exc_info=True)
diff --git a/splitio/util/__init__.py b/splitio/util/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/splitio/util/backoff.py b/splitio/util/backoff.py
new file mode 100644
index 00000000..f1e47324
--- /dev/null
+++ b/splitio/util/backoff.py
@@ -0,0 +1,36 @@
+"""Exponential Backoff duration calculator."""
+
+
+class Backoff(object):
+ """Backoff duration calculator."""
+
+ MAX_ALLOWED_WAIT = 30 * 60 # half an hour
+
+ def __init__(self, base=1, max_allowed=MAX_ALLOWED_WAIT):
+ """
+ Class constructor.
+
+ :param base: basic unit to be multiplied on each iteration (seconds)
+ :param base: float
+
+ :param max_allowed: max seconds to wait
+ :param max_allowed: int
+ """
+ self._base = base
+ self._max_allowed = max_allowed
+ self._attempt = 0
+
+ def get(self):
+ """
+ Return the current time to wait and pre-calculate the next one.
+
+ :returns: time to wait until next retry.
+ :rtype: float
+ """
+ to_return = min(self._base * (2 ** self._attempt), self._max_allowed)
+ self._attempt += 1
+ return to_return
+
+ def reset(self):
+ """Reset the attempt count."""
+ self._attempt = 0
diff --git a/splitio/util/decorators.py b/splitio/util/decorators.py
new file mode 100644
index 00000000..e0775dea
--- /dev/null
+++ b/splitio/util/decorators.py
@@ -0,0 +1,15 @@
+"""Misc decorators."""
+from abc import abstractmethod
+
+
+def abstract_property(func):
+ """
+ Abstract property decorator.
+
+ :param func: method to decorate
+ :type func: callable
+
+ :returns: decorated function
+ :rtype: callable
+ """
+ return property(abstractmethod(func))
diff --git a/splitio/util/storage_helper.py b/splitio/util/storage_helper.py
new file mode 100644
index 00000000..81fdef65
--- /dev/null
+++ b/splitio/util/storage_helper.py
@@ -0,0 +1,200 @@
+"""Storage Helper."""
+import logging
+from splitio.models import splits
+from splitio.models import rule_based_segments
+
+_LOGGER = logging.getLogger(__name__)
+
+def update_feature_flag_storage(feature_flag_storage, feature_flags, change_number, clear_storage=False):
+ """
+ Update feature flag storage from given list of feature flags while checking the flag set logic
+
+ :param feature_flag_storage: Feature flag storage instance
+ :type feature_flag_storage: splitio.storage.inmemory.InMemorySplitStorage
+ :param feature_flag: Feature flag instance to validate.
+ :type feature_flag: splitio.models.splits.Split
+ :param: last change number
+ :type: int
+
+ :return: segments list from feature flags list
+ :rtype: list(str)
+ """
+ segment_list = set()
+ to_add = []
+ to_delete = []
+ if clear_storage:
+ feature_flag_storage.clear()
+
+ for feature_flag in feature_flags:
+ if feature_flag_storage.flag_set_filter.intersect(feature_flag.sets) and feature_flag.status == splits.Status.ACTIVE:
+ to_add.append(feature_flag)
+ segment_list.update(set(feature_flag.get_segment_names()))
+ else:
+ if feature_flag_storage.get(feature_flag.name) is not None:
+ to_delete.append(feature_flag.name)
+
+ feature_flag_storage.update(to_add, to_delete, change_number)
+ return segment_list
+
+def update_rule_based_segment_storage(rule_based_segment_storage, rule_based_segments, change_number, clear_storage=False):
+ """
+ Update rule based segment storage from given list of rule based segments
+
+ :param rule_based_segment_storage: rule based segment storage instance
+ :type rule_based_segment_storage: splitio.storage.RuleBasedSegmentStorage
+ :param rule_based_segments: rule based segment instance to validate.
+ :type rule_based_segments: splitio.models.rule_based_segments.RuleBasedSegment
+ :param: last change number
+ :type: int
+
+ :return: segments list from excluded segments list
+ :rtype: list(str)
+ """
+ if clear_storage:
+ rule_based_segment_storage.clear()
+
+ segment_list = set()
+ to_add = []
+ to_delete = []
+ for rule_based_segment in rule_based_segments:
+ if rule_based_segment.status == splits.Status.ACTIVE:
+ to_add.append(rule_based_segment)
+ segment_list.update(set(rule_based_segment.excluded.get_excluded_standard_segments()))
+ segment_list.update(rule_based_segment.get_condition_segment_names())
+ else:
+ if rule_based_segment_storage.get(rule_based_segment.name) is not None:
+ to_delete.append(rule_based_segment.name)
+
+ rule_based_segment_storage.update(to_add, to_delete, change_number)
+ return segment_list
+
+def get_standard_segment_names_in_rbs_storage(rule_based_segment_storage):
+ """
+ Retrieve a list of all standard segments names.
+
+ :return: Set of segment names.
+ :rtype: Set(str)
+ """
+ segment_list = set()
+ for rb_segment in rule_based_segment_storage.get_segment_names():
+ rb_segment_obj = rule_based_segment_storage.get(rb_segment)
+ segment_list.update(set(rb_segment_obj.excluded.get_excluded_standard_segments()))
+ segment_list.update(rb_segment_obj.get_condition_segment_names())
+
+ return segment_list
+
+async def update_feature_flag_storage_async(feature_flag_storage, feature_flags, change_number, clear_storage=False):
+ """
+ Update feature flag storage from given list of feature flags while checking the flag set logic
+
+ :param feature_flag_storage: Feature flag storage instance
+ :type feature_flag_storage: splitio.storage.inmemory.InMemorySplitStorage
+ :param feature_flag: Feature flag instance to validate.
+ :type feature_flag: splitio.models.splits.Split
+ :param: last change number
+ :type: int
+
+ :return: segments list from feature flags list
+ :rtype: list(str)
+ """
+ if clear_storage:
+ await feature_flag_storage.clear()
+
+ segment_list = set()
+ to_add = []
+ to_delete = []
+ for feature_flag in feature_flags:
+ if feature_flag_storage.flag_set_filter.intersect(feature_flag.sets) and feature_flag.status == splits.Status.ACTIVE:
+ to_add.append(feature_flag)
+ segment_list.update(set(feature_flag.get_segment_names()))
+ else:
+ if await feature_flag_storage.get(feature_flag.name) is not None:
+ to_delete.append(feature_flag.name)
+
+ await feature_flag_storage.update(to_add, to_delete, change_number)
+ return segment_list
+
+async def update_rule_based_segment_storage_async(rule_based_segment_storage, rule_based_segments, change_number, clear_storage=False):
+ """
+ Update rule based segment storage from given list of rule based segments
+
+ :param rule_based_segment_storage: rule based segment storage instance
+ :type rule_based_segment_storage: splitio.storage.RuleBasedSegmentStorage
+ :param rule_based_segments: rule based segment instance to validate.
+ :type rule_based_segments: splitio.models.rule_based_segments.RuleBasedSegment
+ :param: last change number
+ :type: int
+
+ :return: segments list from excluded segments list
+ :rtype: list(str)
+ """
+ if clear_storage:
+ await rule_based_segment_storage.clear()
+
+ segment_list = set()
+ to_add = []
+ to_delete = []
+ for rule_based_segment in rule_based_segments:
+ if rule_based_segment.status == splits.Status.ACTIVE:
+ to_add.append(rule_based_segment)
+ segment_list.update(set(rule_based_segment.excluded.get_excluded_standard_segments()))
+ segment_list.update(rule_based_segment.get_condition_segment_names())
+ else:
+ if await rule_based_segment_storage.get(rule_based_segment.name) is not None:
+ to_delete.append(rule_based_segment.name)
+
+ await rule_based_segment_storage.update(to_add, to_delete, change_number)
+ return segment_list
+
+async def get_standard_segment_names_in_rbs_storage_async(rule_based_segment_storage):
+ """
+ Retrieve a list of all standard segments names.
+
+ :return: Set of segment names.
+ :rtype: Set(str)
+ """
+ segment_list = set()
+ segment_names = await rule_based_segment_storage.get_segment_names()
+ for rb_segment in segment_names:
+ rb_segment_obj = await rule_based_segment_storage.get(rb_segment)
+ segment_list.update(set(rb_segment_obj.excluded.get_excluded_standard_segments()))
+ segment_list.update(rb_segment_obj.get_condition_segment_names())
+
+ return segment_list
+
+def get_valid_flag_sets(flag_sets, flag_set_filter):
+ """
+ Check each flag set in given array, return it if exist in a given config flag set array, if config array is empty return all
+
+ :param flag_sets: Flag sets array
+ :type flag_sets: list(str)
+ :param config_flag_sets: Config flag sets array
+ :type config_flag_sets: list(str)
+
+ :return: array of flag sets
+ :rtype: list(str)
+ """
+ sets_to_fetch = []
+ for flag_set in flag_sets:
+ if not flag_set_filter.set_exist(flag_set) and flag_set_filter.should_filter:
+ _LOGGER.warning("Flag set %s is not part of the configured flag set list, ignoring the request." % (flag_set))
+ continue
+ sets_to_fetch.append(flag_set)
+
+ return sets_to_fetch
+
+def combine_valid_flag_sets(result_sets):
+ """
+ Check each flag set in given array of sets, combine all flag sets in one unique set
+
+ :param result_sets: Flag sets set
+ :type flag_sets: list(set)
+
+ :return: flag sets set
+ :rtype: set
+ """
+ to_return = set()
+ for result_set in result_sets:
+ if isinstance(result_set, set) and len(result_set) > 0:
+ to_return.update(result_set)
+ return to_return
\ No newline at end of file
diff --git a/splitio/util/threadutil.py b/splitio/util/threadutil.py
new file mode 100644
index 00000000..184f7186
--- /dev/null
+++ b/splitio/util/threadutil.py
@@ -0,0 +1,51 @@
+"""Threading utilities."""
+from threading import Event, Condition
+
+
+class EventGroup(object):
+ """EventGroup that can be waited with an OR condition."""
+
+ class Event(Event): # pylint:disable=too-few-public-methods
+ """Threading event meant to be used in an group."""
+
+ def __init__(self, shared_condition):
+ """
+ Construct an event.
+
+ :param shared_condition: shared condition varaible.
+ :type shared_condition: threading.Condition
+ """
+ Event.__init__(self)
+ self._shared_cond = shared_condition
+
+ def set(self):
+ """Set the event."""
+ Event.set(self)
+ with self._shared_cond:
+ self._shared_cond.notify()
+
+ def __init__(self):
+ """Construct an event group."""
+ self._cond = Condition()
+
+ def make_event(self):
+ """
+ Make a new event associated to this waitable group.
+
+ :returns: an event that can be awaited as part of a group
+ :rtype: EventGroup.Event
+ """
+ return EventGroup.Event(self._cond)
+
+ def wait(self, timeout=None):
+ """
+ Wait until one of the events is triggered.
+
+ :param timeout: how many seconds to wait. None means forever.
+ :type timeout: int
+
+ :returns: True if the condition was notified within the specified timeout. False otherwise.
+ :rtype: bool
+ """
+ with self._cond:
+ return self._cond.wait(timeout)
diff --git a/splitio/util/time.py b/splitio/util/time.py
new file mode 100644
index 00000000..62743327
--- /dev/null
+++ b/splitio/util/time.py
@@ -0,0 +1,33 @@
+"""Utilities."""
+from datetime import datetime
+import time
+
+EPOCH_DATETIME = datetime(1970, 1, 1)
+
+def utctime():
+ """
+ Return the utc time in nanoseconds.
+
+ :returns: utc time in nanoseconds.
+ :rtype: float
+ """
+ return (datetime.utcnow() - EPOCH_DATETIME).total_seconds()
+
+
+def utctime_ms():
+ """
+ Return the utc time in milliseconds.
+
+ :returns: utc time in milliseconds.
+ :rtype: int
+ """
+ return int(utctime() * 1000)
+
+def get_current_epoch_time_ms():
+ """
+ Get current epoch time in milliseconds
+
+ :return: epoch time
+ :rtype: int
+ """
+ return int(round(time.time() * 1000))
\ No newline at end of file
diff --git a/splitio/version.py b/splitio/version.py
index 525b1a10..4f40eda2 100644
--- a/splitio/version.py
+++ b/splitio/version.py
@@ -1 +1 @@
-__version__ = '8.2.0'
+__version__ = '10.6.0'
\ No newline at end of file
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/api/test_auth.py b/tests/api/test_auth.py
new file mode 100644
index 00000000..175977a2
--- /dev/null
+++ b/tests/api/test_auth.py
@@ -0,0 +1,108 @@
+"""Split API tests module."""
+
+import pytest
+import unittest.mock as mock
+
+from splitio.api import auth, client, APIException
+from splitio.client.util import get_metadata
+from splitio.client.config import DEFAULT_CONFIG
+from splitio.version import __version__
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
+
+class AuthAPITests(object):
+ """Auth API test cases."""
+
+ def test_auth(self, mocker):
+ """Test auth API call."""
+ token = "eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk56TTJNREk1TXpjMF9NVGd5TlRnMU1UZ3dOZz09X3NlZ21lbnRzXCI6W1wic3Vic2NyaWJlXCJdLFwiTnpNMk1ESTVNemMwX01UZ3lOVGcxTVRnd05nPT1fc3BsaXRzXCI6W1wic3Vic2NyaWJlXCJdLFwiY29udHJvbF9wcmlcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXSxcImNvbnRyb2xfc2VjXCI6W1wic3Vic2NyaWJlXCIsXCJjaGFubmVsLW1ldGFkYXRhOnB1Ymxpc2hlcnNcIl19IiwieC1hYmx5LWNsaWVudElkIjoiY2xpZW50SWQiLCJleHAiOjE2MDIwODgxMjcsImlhdCI6MTYwMjA4NDUyN30.5_MjWonhs6yoFhw44hNJm3H7_YMjXpSW105DwjjppqE"
+ httpclient = mocker.Mock(spec=client.HttpClient)
+ payload = '{{"pushEnabled": true, "token": "{token}"}}'.format(token=token)
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ httpclient.get.return_value = client.HttpResponse(200, payload, {})
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ auth_api = auth.AuthAPI(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+ response = auth_api.authenticate()
+
+ assert response.push_enabled == True
+ assert response.token == token
+
+ call_made = httpclient.get.mock_calls[0]
+
+ # validate positional arguments
+ assert call_made[1] == ('auth', 'v2/auth?s=1.3', 'some_api_key')
+
+ # validate key-value args (headers)
+ assert call_made[2]['extra_headers'] == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name'
+ }
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.get.side_effect = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = auth_api.authenticate()
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
+
+
+class AuthAPIAsyncTests(object):
+ """Auth async API test cases."""
+
+ @pytest.mark.asyncio
+ async def test_auth(self, mocker):
+ """Test auth API call."""
+ self.token = "eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk56TTJNREk1TXpjMF9NVGd5TlRnMU1UZ3dOZz09X3NlZ21lbnRzXCI6W1wic3Vic2NyaWJlXCJdLFwiTnpNMk1ESTVNemMwX01UZ3lOVGcxTVRnd05nPT1fc3BsaXRzXCI6W1wic3Vic2NyaWJlXCJdLFwiY29udHJvbF9wcmlcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXSxcImNvbnRyb2xfc2VjXCI6W1wic3Vic2NyaWJlXCIsXCJjaGFubmVsLW1ldGFkYXRhOnB1Ymxpc2hlcnNcIl19IiwieC1hYmx5LWNsaWVudElkIjoiY2xpZW50SWQiLCJleHAiOjE2MDIwODgxMjcsImlhdCI6MTYwMjA4NDUyN30.5_MjWonhs6yoFhw44hNJm3H7_YMjXpSW105DwjjppqE"
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ telemetry_storage = InMemoryTelemetryStorageAsync()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ auth_api = auth.AuthAPIAsync(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ async def get(verb, url, key, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ payload = '{{"pushEnabled": true, "token": "{token}"}}'.format(token=self.token)
+ return client.HttpResponse(200, payload, {})
+
+ httpclient.get = get
+
+ response = await auth_api.authenticate()
+ assert response.push_enabled == True
+ assert response.token == self.token
+
+ # validate positional arguments
+ assert self.verb == 'auth'
+ assert self.url == 'v2/auth?s=1.3'
+ assert self.key == 'some_api_key'
+ assert self.headers == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name'
+ }
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+
+ httpclient.get = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = await auth_api.authenticate()
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
diff --git a/tests/api/test_events.py b/tests/api/test_events.py
index bfc6177b..07fe9473 100644
--- a/tests/api/test_events.py
+++ b/tests/api/test_events.py
@@ -1,11 +1,15 @@
"""Impressions API tests module."""
import pytest
+import unittest.mock as mock
+
from splitio.api import events, client, APIException
from splitio.models.events import Event
from splitio.client.util import get_metadata
from splitio.client.config import DEFAULT_CONFIG
from splitio.version import __version__
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
class EventsAPITests(object):
@@ -26,17 +30,20 @@ class EventsAPITests(object):
def test_post_events(self, mocker):
"""Test impressions posting API call."""
httpclient = mocker.Mock(spec=client.HttpClient)
- httpclient.post.return_value = client.HttpResponse(200, '')
+ httpclient.post.return_value = client.HttpResponse(200, '', {})
cfg = DEFAULT_CONFIG.copy()
cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
sdk_metadata = get_metadata(cfg)
- events_api = events.EventsAPI(httpclient, 'some_api_key', sdk_metadata)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ events_api = events.EventsAPI(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
response = events_api.flush_events(self.events)
call_made = httpclient.post.mock_calls[0]
# validate positional arguments
- assert call_made[1] == ('events', '/events/bulk', 'some_api_key')
+ assert call_made[1] == ('events', 'events/bulk', 'some_api_key')
# validate key-value args (headers)
assert call_made[2]['extra_headers'] == {
@@ -60,17 +67,17 @@ def raise_exception(*args, **kwargs):
def test_post_events_ip_address_disabled(self, mocker):
"""Test impressions posting API call."""
httpclient = mocker.Mock(spec=client.HttpClient)
- httpclient.post.return_value = client.HttpResponse(200, '')
+ httpclient.post.return_value = client.HttpResponse(200, '', {})
cfg = DEFAULT_CONFIG.copy()
cfg.update({'IPAddressesEnabled': False})
sdk_metadata = get_metadata(cfg)
- events_api = events.EventsAPI(httpclient, 'some_api_key', sdk_metadata)
+ events_api = events.EventsAPI(httpclient, 'some_api_key', sdk_metadata, mocker.Mock())
response = events_api.flush_events(self.events)
call_made = httpclient.post.mock_calls[0]
# validate positional arguments
- assert call_made[1] == ('events', '/events/bulk', 'some_api_key')
+ assert call_made[1] == ('events', 'events/bulk', 'some_api_key')
# validate key-value args (headers)
assert call_made[2]['extra_headers'] == {
@@ -79,3 +86,108 @@ def test_post_events_ip_address_disabled(self, mocker):
# validate key-value args (body)
assert call_made[2]['body'] == self.eventsExpected
+
+
+class EventsAPIAsyncTests(object):
+ """Impressions Async API test cases."""
+ events = [
+ Event('k1', 'user', 'purchase', 12.50, 123456, None),
+ Event('k2', 'user', 'purchase', 12.50, 123456, None),
+ Event('k3', 'user', 'purchase', None, 123456, {"test": 1234}),
+ Event('k4', 'user', 'purchase', None, 123456, None)
+ ]
+ eventsExpected = [
+ {'key': 'k1', 'trafficTypeName': 'user', 'eventTypeId': 'purchase', 'value': 12.50, 'timestamp': 123456, 'properties': None},
+ {'key': 'k2', 'trafficTypeName': 'user', 'eventTypeId': 'purchase', 'value': 12.50, 'timestamp': 123456, 'properties': None},
+ {'key': 'k3', 'trafficTypeName': 'user', 'eventTypeId': 'purchase', 'value': None, 'timestamp': 123456, 'properties': {"test": 1234}},
+ {'key': 'k4', 'trafficTypeName': 'user', 'eventTypeId': 'purchase', 'value': None, 'timestamp': 123456, 'properties': None},
+ ]
+
+ @pytest.mark.asyncio
+ async def test_post_events(self, mocker):
+ """Test impressions posting API call."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ telemetry_storage = InMemoryTelemetryStorageAsync()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ events_api = events.EventsAPIAsync(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.body = None
+ async def post(verb, url, key, body, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.body = body
+ return client.HttpResponse(200, '', {})
+ httpclient.post = post
+
+ response = await events_api.flush_events(self.events)
+ # validate positional arguments
+ assert self.verb == 'events'
+ assert self.url == 'events/bulk'
+ assert self.key == 'some_api_key'
+
+ # validate key-value args (headers)
+ assert self.headers == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name'
+ }
+
+ # validate key-value args (body)
+ assert self.body == self.eventsExpected
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.post = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = await events_api.flush_events(self.events)
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
+
+ @pytest.mark.asyncio
+ async def test_post_events_ip_address_disabled(self, mocker):
+ """Test impressions posting API call."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': False})
+ sdk_metadata = get_metadata(cfg)
+ events_api = events.EventsAPIAsync(httpclient, 'some_api_key', sdk_metadata, mocker.Mock())
+
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.body = None
+ async def post(verb, url, key, body, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.body = body
+ return client.HttpResponse(200, '', {})
+ httpclient.post = post
+
+ response = await events_api.flush_events(self.events)
+
+ # validate positional arguments
+ assert self.verb == 'events'
+ assert self.url == 'events/bulk'
+ assert self.key == 'some_api_key'
+
+ # validate key-value args (headers)
+ assert self.headers == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ }
+
+ # validate key-value args (body)
+ assert self.body == self.eventsExpected
diff --git a/tests/api/test_httpclient.py b/tests/api/test_httpclient.py
index 694c9a22..837997aa 100644
--- a/tests/api/test_httpclient.py
+++ b/tests/api/test_httpclient.py
@@ -1,6 +1,13 @@
"""HTTPClient test module."""
+from requests_kerberos import HTTPKerberosAuth
+import pytest
+import unittest.mock as mock
+import requests
+from splitio.client.config import AuthenticateScheme
from splitio.api import client
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
class HttpClientTests(object):
"""Http Client test cases."""
@@ -9,14 +16,16 @@ def test_get(self, mocker):
"""Test HTTP GET verb requests."""
response_mock = mocker.Mock()
response_mock.status_code = 200
+ response_mock.headers = {}
response_mock.text = 'ok'
get_mock = mocker.Mock()
get_mock.return_value = response_mock
mocker.patch('splitio.api.client.requests.get', new=get_mock)
httpclient = client.HttpClient()
- response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+ response = httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
call = mocker.call(
- client.HttpClient.SDK_URL + '/test1',
+ client.SDK_URL + '/test1',
headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
params={'param1': 123},
timeout=None
@@ -26,9 +35,9 @@ def test_get(self, mocker):
assert get_mock.mock_calls == [call]
get_mock.reset_mock()
- response = httpclient.get('events', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ response = httpclient.get('events', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
call = mocker.call(
- client.HttpClient.EVENTS_URL + '/test1',
+ client.EVENTS_URL + '/test1',
headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
params={'param1': 123},
timeout=None
@@ -41,12 +50,14 @@ def test_get_custom_urls(self, mocker):
"""Test HTTP GET verb requests."""
response_mock = mocker.Mock()
response_mock.status_code = 200
+ response_mock.headers = {}
response_mock.text = 'ok'
get_mock = mocker.Mock()
get_mock.return_value = response_mock
mocker.patch('splitio.api.client.requests.get', new=get_mock)
httpclient = client.HttpClient(sdk_url='https://sdk.com', events_url='https://events.com')
- response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+ response = httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
call = mocker.call(
'https://sdk.com/test1',
headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
@@ -58,7 +69,7 @@ def test_get_custom_urls(self, mocker):
assert response.body == 'ok'
get_mock.reset_mock()
- response = httpclient.get('events', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ response = httpclient.get('events', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
call = mocker.call(
'https://events.com/test1',
headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
@@ -74,14 +85,16 @@ def test_post(self, mocker):
"""Test HTTP GET verb requests."""
response_mock = mocker.Mock()
response_mock.status_code = 200
+ response_mock.headers = {}
response_mock.text = 'ok'
get_mock = mocker.Mock()
get_mock.return_value = response_mock
mocker.patch('splitio.api.client.requests.post', new=get_mock)
httpclient = client.HttpClient()
- response = httpclient.post('sdk', '/test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+ response = httpclient.post('sdk', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
call = mocker.call(
- client.HttpClient.SDK_URL + '/test1',
+ client.SDK_URL + '/test1',
json={'p1': 'a'},
headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
params={'param1': 123},
@@ -92,9 +105,9 @@ def test_post(self, mocker):
assert get_mock.mock_calls == [call]
get_mock.reset_mock()
- response = httpclient.post('events', '/test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ response = httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
call = mocker.call(
- client.HttpClient.EVENTS_URL + '/test1',
+ client.EVENTS_URL + '/test1',
json={'p1': 'a'},
headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
params={'param1': 123},
@@ -108,12 +121,14 @@ def test_post_custom_urls(self, mocker):
"""Test HTTP GET verb requests."""
response_mock = mocker.Mock()
response_mock.status_code = 200
+ response_mock.headers = {}
response_mock.text = 'ok'
get_mock = mocker.Mock()
get_mock.return_value = response_mock
mocker.patch('splitio.api.client.requests.post', new=get_mock)
httpclient = client.HttpClient(sdk_url='https://sdk.com', events_url='https://events.com')
- response = httpclient.post('sdk', '/test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+ response = httpclient.post('sdk', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
call = mocker.call(
'https://sdk.com' + '/test1',
json={'p1': 'a'},
@@ -126,7 +141,7 @@ def test_post_custom_urls(self, mocker):
assert get_mock.mock_calls == [call]
get_mock.reset_mock()
- response = httpclient.post('events', '/test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ response = httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
call = mocker.call(
'https://events.com' + '/test1',
json={'p1': 'a'},
@@ -137,3 +152,584 @@ def test_post_custom_urls(self, mocker):
assert response.status_code == 200
assert response.body == 'ok'
assert get_mock.mock_calls == [call]
+
+ def test_telemetry(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ response_mock = mocker.Mock()
+ response_mock.status_code = 200
+ response_mock.headers = {}
+ response_mock.text = 'ok'
+ get_mock = mocker.Mock()
+ get_mock.return_value = response_mock
+ mocker.patch('splitio.api.client.requests.post', new=get_mock)
+ httpclient = client.HttpClient(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com')
+ httpclient.set_telemetry_data("metric", telemetry_runtime_producer)
+
+ self.metric1 = None
+ self.cur_time = 0
+ def record_successful_sync(metric_name, cur_time):
+ self.metric1 = metric_name
+ self.cur_time = cur_time
+ httpclient._telemetry_runtime_producer.record_successful_sync = record_successful_sync
+
+ self.metric2 = None
+ self.elapsed = 0
+ def record_sync_latency(metric_name, elapsed):
+ self.metric2 = metric_name
+ self.elapsed = elapsed
+ httpclient._telemetry_runtime_producer.record_sync_latency = record_sync_latency
+
+ self.metric3 = None
+ self.status = 0
+ def record_sync_error(metric_name, elapsed):
+ self.metric3 = metric_name
+ self.status = elapsed
+ httpclient._telemetry_runtime_producer.record_sync_error = record_sync_error
+
+ httpclient.post('sdk', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric2 == "metric")
+ assert (self.metric1 == "metric")
+ assert (self.cur_time > self.elapsed)
+
+ response_mock.status_code = 400
+ response_mock.headers = {}
+ response_mock.text = 'ok'
+ httpclient.post('sdk', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric3 == "metric")
+ assert (self.status == 400)
+
+ # testing get call
+ mocker.patch('splitio.api.client.requests.get', new=get_mock)
+ self.metric1 = None
+ self.cur_time = 0
+ self.metric2 = None
+ self.elapsed = 0
+ response_mock.status_code = 200
+ httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric2 == "metric")
+ assert (self.metric1 == "metric")
+ assert (self.cur_time > self.elapsed)
+
+ self.metric3 = None
+ self.status = 0
+ response_mock.status_code = 400
+ httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric3 == "metric")
+ assert (self.status == 400)
+
+class HttpClientKerberosTests(object):
+ """Http Client test cases."""
+
+ def test_authentication_scheme(self, mocker):
+ global turl
+ global theaders
+ global tparams
+ global ttimeout
+ global tjson
+
+ turl = None
+ theaders = None
+ tparams = None
+ ttimeout = None
+ class get_mock(object):
+ def __init__(self, url, headers, params, timeout):
+ global turl
+ global theaders
+ global tparams
+ global ttimeout
+ turl = url
+ theaders = headers
+ tparams = params
+ ttimeout = timeout
+
+ def __enter__(self):
+ response_mock = mocker.Mock()
+ response_mock.status_code = 200
+ response_mock.text = 'ok'
+ return response_mock
+
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ pass
+
+ mocker.patch('splitio.api.client.requests.Session.get', new=get_mock)
+ httpclient = client.HttpClientKerberos(sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_SPNEGO, authentication_params=[None, None])
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+ response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert turl == 'https://sdk.com/test1'
+ assert theaders == {'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'}
+ assert tparams == {'param1': 123}
+ assert ttimeout == None
+ assert response.status_code == 200
+ assert response.body == 'ok'
+
+ turl = None
+ theaders = None
+ tparams = None
+ ttimeout = None
+ httpclient = client.HttpClientKerberos(sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_SPNEGO, authentication_params=['bilal', 'split'])
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+ response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert turl == 'https://sdk.com/test1'
+ assert theaders == {'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'}
+ assert tparams == {'param1': 123}
+ assert ttimeout == None
+
+ assert response.status_code == 200
+ assert response.body == 'ok'
+
+ response_mock = mocker.Mock()
+ response_mock.status_code = 200
+ response_mock.headers = {}
+ response_mock.text = 'ok'
+
+ turl = None
+ theaders = None
+ tparams = None
+ ttimeout = None
+ tjson = None
+ class post_mock(object):
+ def __init__(self, url, params, headers, json, timeout):
+ global turl
+ global theaders
+ global tparams
+ global ttimeout
+ global tjson
+ turl = url
+ theaders = headers
+ tparams = params
+ ttimeout = timeout
+ tjson = json
+
+ def __enter__(self):
+ response_mock = mocker.Mock()
+ response_mock.status_code = 200
+ response_mock.text = 'ok'
+ return response_mock
+
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ pass
+ mocker.patch('splitio.api.client.requests.Session.post', new=post_mock)
+
+ httpclient = client.HttpClientKerberos(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None])
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+
+ response = httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ assert turl == 'https://events.com/test1'
+ assert tjson == {'p1': 'a'}
+ assert theaders == {'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'}
+ assert tparams == {'param1': 123}
+ assert ttimeout == 1.5
+
+ assert response.status_code == 200
+ assert response.body == 'ok'
+
+ turl = None
+ theaders = None
+ tparams = None
+ ttimeout = None
+ mocker.patch('splitio.api.client.requests.Session.get', new=get_mock)
+ httpclient = client.HttpClientKerberos(timeout=1500, sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=['bilal', 'split'])
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+ response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert turl == 'https://sdk.com/test1'
+ assert theaders == {'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'}
+ assert tparams == {'param1': 123}
+ assert ttimeout == 1.5
+
+ assert response.status_code == 200
+ assert response.body == 'ok'
+
+ # test auth settings
+ httpclient = client.HttpClientKerberos(sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_SPNEGO, authentication_params=['bilal', 'split'])
+ httpclient._set_authentication('sdk')
+ for server in ['sdk', 'events', 'auth', 'telemetry']:
+ assert(httpclient._sessions[server].auth.principal == 'bilal')
+ assert(httpclient._sessions[server].auth.password == 'split')
+ assert(isinstance(httpclient._sessions[server].auth, HTTPKerberosAuth))
+
+ httpclient._sessions['sdk'].close()
+ httpclient._sessions['events'].close()
+ httpclient._sessions['sdk'] = requests.Session()
+ httpclient._sessions['events'] = requests.Session()
+ assert(httpclient._sessions['sdk'].auth == None)
+ assert(httpclient._sessions['events'].auth == None)
+
+ httpclient._set_authentication('sdk')
+ assert(httpclient._sessions['sdk'].auth.principal == 'bilal')
+ assert(httpclient._sessions['sdk'].auth.password == 'split')
+ assert(isinstance(httpclient._sessions['sdk'].auth, HTTPKerberosAuth))
+ assert(httpclient._sessions['events'].auth == None)
+
+ httpclient2 = client.HttpClientKerberos(sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_SPNEGO, authentication_params=[None, None])
+ for server in ['sdk', 'events', 'auth', 'telemetry']:
+ assert(httpclient2._sessions[server].auth.principal == None)
+ assert(httpclient2._sessions[server].auth.password == None)
+ assert(isinstance(httpclient2._sessions[server].auth, HTTPKerberosAuth))
+
+ httpclient3 = client.HttpClientKerberos(sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=['bilal', 'split'])
+ for server in ['sdk', 'events', 'auth', 'telemetry']:
+ assert(httpclient3._sessions[server].adapters['https://']._principal == 'bilal')
+ assert(httpclient3._sessions[server].adapters['https://']._password == 'split')
+ assert(isinstance(httpclient3._sessions[server].adapters['https://'], client.HTTPAdapterWithProxyKerberosAuth))
+
+ httpclient4 = client.HttpClientKerberos(sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None])
+ for server in ['sdk', 'events', 'auth', 'telemetry']:
+ assert(httpclient4._sessions[server].adapters['https://']._principal == None)
+ assert(httpclient4._sessions[server].adapters['https://']._password == None)
+ assert(isinstance(httpclient4._sessions[server].adapters['https://'], client.HTTPAdapterWithProxyKerberosAuth))
+
+ def test_proxy_exception(self, mocker):
+ global count
+ count = 0
+ class get_mock(object):
+ def __init__(self, url, params, headers, timeout):
+ pass
+
+ def __enter__(self):
+ global count
+ count += 1
+ if count == 1:
+ raise requests.exceptions.ProxyError()
+
+ response_mock = mocker.Mock()
+ response_mock.status_code = 200
+ response_mock.text = 'ok'
+ return response_mock
+
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ pass
+
+ mocker.patch('splitio.api.client.requests.Session.get', new=get_mock)
+ httpclient = client.HttpClientKerberos(sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_SPNEGO, authentication_params=[None, None])
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+ response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert response.status_code == 200
+ assert response.body == 'ok'
+
+ count = 0
+ class post_mock(object):
+ def __init__(self, url, params, headers, json, timeout):
+ pass
+
+ def __enter__(self):
+ global count
+ count += 1
+ if count == 1:
+ raise requests.exceptions.ProxyError()
+
+ response_mock = mocker.Mock()
+ response_mock.status_code = 200
+ response_mock.text = 'ok'
+ return response_mock
+
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ pass
+ mocker.patch('splitio.api.client.requests.Session.post', new=post_mock)
+
+ httpclient = client.HttpClientKerberos(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None])
+ httpclient.set_telemetry_data("metric", mocker.Mock())
+ response = httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ assert response.status_code == 200
+ assert response.body == 'ok'
+
+
+
+ def test_telemetry(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ response_mock = mocker.Mock()
+ response_mock.status_code = 200
+ response_mock.headers = {}
+ response_mock.text = 'ok'
+ get_mock = mocker.Mock()
+ get_mock.return_value = response_mock
+ mocker.patch('splitio.api.client.requests.post', new=get_mock)
+ httpclient = client.HttpClient(timeout=1500, sdk_url='https://sdk.com', events_url='https://events.com')
+ httpclient.set_telemetry_data("metric", telemetry_runtime_producer)
+
+ self.metric1 = None
+ self.cur_time = 0
+ def record_successful_sync(metric_name, cur_time):
+ self.metric1 = metric_name
+ self.cur_time = cur_time
+ httpclient._telemetry_runtime_producer.record_successful_sync = record_successful_sync
+
+ self.metric2 = None
+ self.elapsed = 0
+ def record_sync_latency(metric_name, elapsed):
+ self.metric2 = metric_name
+ self.elapsed = elapsed
+ httpclient._telemetry_runtime_producer.record_sync_latency = record_sync_latency
+
+ self.metric3 = None
+ self.status = 0
+ def record_sync_error(metric_name, elapsed):
+ self.metric3 = metric_name
+ self.status = elapsed
+ httpclient._telemetry_runtime_producer.record_sync_error = record_sync_error
+
+ httpclient.post('sdk', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric2 == "metric")
+ assert (self.metric1 == "metric")
+ assert (self.cur_time > self.elapsed)
+
+ response_mock.status_code = 400
+ response_mock.headers = {}
+ response_mock.text = 'ok'
+ httpclient.post('sdk', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric3 == "metric")
+ assert (self.status == 400)
+
+ # testing get call
+ mocker.patch('splitio.api.client.requests.get', new=get_mock)
+ self.metric1 = None
+ self.cur_time = 0
+ self.metric2 = None
+ self.elapsed = 0
+ response_mock.status_code = 200
+ httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric2 == "metric")
+ assert (self.metric1 == "metric")
+ assert (self.cur_time > self.elapsed)
+
+ self.metric3 = None
+ self.status = 0
+ response_mock.status_code = 400
+ httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric3 == "metric")
+ assert (self.status == 400)
+
+class MockResponse:
+ def __init__(self, text, status, headers):
+ self._text = text
+ self.status = status
+ self.headers = headers
+
+ async def text(self):
+ return self._text
+
+ async def __aexit__(self, exc_type, exc, tb):
+ pass
+
+ async def __aenter__(self):
+ return self
+
+class HttpClientAsyncTests(object):
+ """Http Client test cases."""
+
+ @pytest.mark.asyncio
+ async def test_get(self, mocker):
+ """Test HTTP GET verb requests."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ response_mock = MockResponse('ok', 200, {})
+ get_mock = mocker.Mock()
+ get_mock.return_value = response_mock
+ mocker.patch('splitio.optional.loaders.aiohttp.ClientSession.get', new=get_mock)
+ httpclient = client.HttpClientAsync()
+ httpclient.set_telemetry_data("metric", telemetry_runtime_producer)
+ response = await httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert response.status_code == 200
+ assert response.body == 'ok'
+ call = mocker.call(
+ client.SDK_URL + '/test1',
+ headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
+ params={'param1': 123},
+ timeout=None
+ )
+ assert get_mock.mock_calls == [call]
+ get_mock.reset_mock()
+
+ response = await httpclient.get('events', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ call = mocker.call(
+ client.EVENTS_URL + '/test1',
+ headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
+ params={'param1': 123},
+ timeout=None
+ )
+ assert get_mock.mock_calls == [call]
+ assert response.status_code == 200
+ assert response.body == 'ok'
+
+ @pytest.mark.asyncio
+ async def test_get_custom_urls(self, mocker):
+ """Test HTTP GET verb requests."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ response_mock = MockResponse('ok', 200, {})
+ get_mock = mocker.Mock()
+ get_mock.return_value = response_mock
+ mocker.patch('splitio.optional.loaders.aiohttp.ClientSession.get', new=get_mock)
+ httpclient = client.HttpClientAsync(sdk_url='https://sdk.com', events_url='https://events.com')
+ httpclient.set_telemetry_data("metric", telemetry_runtime_producer)
+ response = await httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ call = mocker.call(
+ 'https://sdk.com/test1',
+ headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
+ params={'param1': 123},
+ timeout=None
+ )
+ assert get_mock.mock_calls == [call]
+ assert response.status_code == 200
+ assert response.body == 'ok'
+ get_mock.reset_mock()
+
+ response = await httpclient.get('events', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ call = mocker.call(
+ 'https://events.com/test1',
+ headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
+ params={'param1': 123},
+ timeout=None
+ )
+ assert response.status_code == 200
+ assert response.body == 'ok'
+ assert get_mock.mock_calls == [call]
+
+ @pytest.mark.asyncio
+ async def test_post(self, mocker):
+ """Test HTTP POST verb requests."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ response_mock = MockResponse('ok', 200, {})
+ get_mock = mocker.Mock()
+ get_mock.return_value = response_mock
+ mocker.patch('splitio.optional.loaders.aiohttp.ClientSession.post', new=get_mock)
+ httpclient = client.HttpClientAsync()
+ httpclient.set_telemetry_data("metric", telemetry_runtime_producer)
+ response = await httpclient.post('sdk', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ call = mocker.call(
+ client.SDK_URL + '/test1',
+ json={"p1": "a"},
+ headers={'Content-Type': 'application/json', 'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Accept-Encoding': 'gzip'},
+ params={'param1': 123},
+ timeout=None
+ )
+ assert response.status_code == 200
+ assert response.body == 'ok'
+ assert get_mock.mock_calls == [call]
+ get_mock.reset_mock()
+
+ response = await httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ call = mocker.call(
+ client.EVENTS_URL + '/test1',
+ json={'p1': 'a'},
+ headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json', 'Accept-Encoding': 'gzip'},
+ params={'param1': 123},
+ timeout=None
+ )
+ assert response.status_code == 200
+ assert response.body == 'ok'
+ assert get_mock.mock_calls == [call]
+
+ @pytest.mark.asyncio
+ async def test_post_custom_urls(self, mocker):
+ """Test HTTP GET verb requests."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ response_mock = MockResponse('ok', 200, {})
+ get_mock = mocker.Mock()
+ get_mock.return_value = response_mock
+ mocker.patch('splitio.optional.loaders.aiohttp.ClientSession.post', new=get_mock)
+ httpclient = client.HttpClientAsync(sdk_url='https://sdk.com', events_url='https://events.com')
+ httpclient.set_telemetry_data("metric", telemetry_runtime_producer)
+ response = await httpclient.post('sdk', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ call = mocker.call(
+ 'https://sdk.com' + '/test1',
+ json={"p1": "a"},
+ headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json', 'Accept-Encoding': 'gzip'},
+ params={'param1': 123},
+ timeout=None
+ )
+ assert response.status_code == 200
+ assert response.body == 'ok'
+ assert get_mock.mock_calls == [call]
+ get_mock.reset_mock()
+
+ response = await httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ call = mocker.call(
+ 'https://events.com' + '/test1',
+ json={"p1": "a"},
+ headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json', 'Accept-Encoding': 'gzip'},
+ params={'param1': 123},
+ timeout=None
+ )
+ assert response.status_code == 200
+ assert response.body == 'ok'
+ assert get_mock.mock_calls == [call]
+
+ @pytest.mark.asyncio
+ async def test_telemetry(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ response_mock = MockResponse('ok', 200, {})
+ get_mock = mocker.Mock()
+ get_mock.return_value = response_mock
+ mocker.patch('splitio.optional.loaders.aiohttp.ClientSession.post', new=get_mock)
+ httpclient = client.HttpClientAsync(sdk_url='https://sdk.com', events_url='https://events.com')
+ httpclient.set_telemetry_data("metric", telemetry_runtime_producer)
+
+ self.metric1 = None
+ self.cur_time = 0
+ async def record_successful_sync(metric_name, cur_time):
+ self.metric1 = metric_name
+ self.cur_time = cur_time
+ httpclient._telemetry_runtime_producer.record_successful_sync = record_successful_sync
+
+ self.metric2 = None
+ self.elapsed = 0
+ async def record_sync_latency(metric_name, elapsed):
+ self.metric2 = metric_name
+ self.elapsed = elapsed
+ httpclient._telemetry_runtime_producer.record_sync_latency = record_sync_latency
+
+ self.metric3 = None
+ self.status = 0
+ async def record_sync_error(metric_name, elapsed):
+ self.metric3 = metric_name
+ self.status = elapsed
+ httpclient._telemetry_runtime_producer.record_sync_error = record_sync_error
+
+ await httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric2 == "metric")
+ assert (self.metric1 == "metric")
+ assert (self.cur_time > self.elapsed)
+
+ response_mock = MockResponse('ok', 400, {})
+ get_mock = mocker.Mock()
+ get_mock.return_value = response_mock
+ mocker.patch('splitio.optional.loaders.aiohttp.ClientSession.post', new=get_mock)
+ await httpclient.post('sdk', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric3 == "metric")
+ assert (self.status == 400)
+
+ # testing get call
+ response_mock = MockResponse('ok', 200, {})
+ get_mock = mocker.Mock()
+ get_mock.return_value = response_mock
+ mocker.patch('splitio.optional.loaders.aiohttp.ClientSession.get', new=get_mock)
+ self.metric1 = None
+ self.cur_time = 0
+ self.metric2 = None
+ self.elapsed = 0
+ await httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric2 == "metric")
+ assert (self.metric1 == "metric")
+ assert (self.cur_time > self.elapsed)
+
+ self.metric3 = None
+ self.status = 0
+ response_mock = MockResponse('ok', 400, {})
+ get_mock.return_value = response_mock
+ await httpclient.get('sdk', 'test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
+ assert (self.metric3 == "metric")
+ assert (self.status == 400)
diff --git a/tests/api/test_impressions_api.py b/tests/api/test_impressions_api.py
index 63650acc..b022a464 100644
--- a/tests/api/test_impressions_api.py
+++ b/tests/api/test_impressions_api.py
@@ -1,86 +1,294 @@
"""Impressions API tests module."""
import pytest
+import unittest.mock as mock
+
from splitio.api import impressions, client, APIException
from splitio.models.impressions import Impression
+from splitio.engine.impressions.impressions import ImpressionsMode
+from splitio.engine.impressions.manager import Counter
from splitio.client.util import get_metadata
from splitio.client.config import DEFAULT_CONFIG
from splitio.version import __version__
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
+
+impressions_mock = [
+ Impression('k1', 'f1', 'on', 'l1', 123456, 'b1', 321654, None, {'prop': 'val'}),
+ Impression('k2', 'f2', 'off', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('k3', 'f1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+]
+expectedImpressions = [{
+ 'f': 'f1',
+ 'i': [
+ {'k': 'k1', 'b': 'b1', 't': 'on', 'r': 'l1', 'm': 321654, 'c': 123456, 'pt': None, 'properties': {"prop": "val"}},
+ {'k': 'k3', 'b': 'b1', 't': 'on', 'r': 'l1', 'm': 321654, 'c': 123456, 'pt': None},
+ ],
+}, {
+ 'f': 'f2',
+ 'i': [
+ {'k': 'k2', 'b': 'b1', 't': 'off', 'r': 'l1', 'm': 321654, 'c': 123456, 'pt': None},
+ ]
+}]
+counters = [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ Counter.CountPerFeature('f1', 456, 111),
+ Counter.CountPerFeature('f2', 456, 222)
+]
+
+expected_counters = {
+ 'pf': [
+ {'f': 'f1', 'm': 123, 'rc': 2},
+ {'f': 'f2', 'm': 123, 'rc': 123},
+ {'f': 'f1', 'm': 456, 'rc': 111},
+ {'f': 'f2', 'm': 456, 'rc': 222},
+ ]
+}
class ImpressionsAPITests(object):
"""Impressions API test cases."""
- impressions = [
- Impression('k1', 'f1', 'on', 'l1', 123456, 'b1', 321654),
- Impression('k2', 'f2', 'off', 'l1', 123456, 'b1', 321654),
- Impression('k3', 'f1', 'on', 'l1', 123456, 'b1', 321654)
- ]
- expectedImpressions = [{
- 'testName': 'f1',
- 'keyImpressions': [
- {'keyName': 'k1', 'bucketingKey': 'b1', 'treatment': 'on', 'label': 'l1', 'time': 321654, 'changeNumber': 123456},
- {'keyName': 'k3', 'bucketingKey': 'b1', 'treatment': 'on', 'label': 'l1', 'time': 321654, 'changeNumber': 123456},
- ],
- }, {
- 'testName': 'f2',
- 'keyImpressions': [
- {'keyName': 'k2', 'bucketingKey': 'b1', 'treatment': 'off', 'label': 'l1', 'time': 321654, 'changeNumber': 123456},
- ]
- }]
def test_post_impressions(self, mocker):
"""Test impressions posting API call."""
httpclient = mocker.Mock(spec=client.HttpClient)
- httpclient.post.return_value = client.HttpResponse(200, '')
+ httpclient.post.return_value = client.HttpResponse(200, '', {})
cfg = DEFAULT_CONFIG.copy()
cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
sdk_metadata = get_metadata(cfg)
- impressions_api = impressions.ImpressionsAPI(httpclient, 'some_api_key', sdk_metadata)
- response = impressions_api.flush_impressions(self.impressions)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impressions_api = impressions.ImpressionsAPI(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+ response = impressions_api.flush_impressions(impressions_mock)
call_made = httpclient.post.mock_calls[0]
# validate positional arguments
- assert call_made[1] == ('events', '/testImpressions/bulk', 'some_api_key')
+ assert call_made[1] == ('events', 'testImpressions/bulk', 'some_api_key')
# validate key-value args (headers)
assert call_made[2]['extra_headers'] == {
'SplitSDKVersion': 'python-%s' % __version__,
'SplitSDKMachineIP': '123.123.123.123',
- 'SplitSDKMachineName': 'some_machine_name'
+ 'SplitSDKMachineName': 'some_machine_name',
+ 'SplitSDKImpressionsMode': 'OPTIMIZED'
}
# validate key-value args (body)
- assert call_made[2]['body'] == self.expectedImpressions
+ assert call_made[2]['body'] == expectedImpressions
httpclient.reset_mock()
def raise_exception(*args, **kwargs):
raise client.HttpClientException('some_message')
httpclient.post.side_effect = raise_exception
with pytest.raises(APIException) as exc_info:
- response = impressions_api.flush_impressions(self.impressions)
+ response = impressions_api.flush_impressions(impressions_mock)
assert exc_info.type == APIException
assert exc_info.value.message == 'some_message'
def test_post_impressions_ip_address_disabled(self, mocker):
"""Test impressions posting API call."""
httpclient = mocker.Mock(spec=client.HttpClient)
- httpclient.post.return_value = client.HttpResponse(200, '')
+ httpclient.post.return_value = client.HttpResponse(200, '', {})
cfg = DEFAULT_CONFIG.copy()
cfg.update({'IPAddressesEnabled': False})
sdk_metadata = get_metadata(cfg)
- impressions_api = impressions.ImpressionsAPI(httpclient, 'some_api_key', sdk_metadata)
- response = impressions_api.flush_impressions(self.impressions)
+ impressions_api = impressions.ImpressionsAPI(httpclient, 'some_api_key', sdk_metadata, mocker.Mock(), ImpressionsMode.DEBUG)
+ response = impressions_api.flush_impressions(impressions_mock)
+
+ call_made = httpclient.post.mock_calls[0]
+
+ # validate positional arguments
+ assert call_made[1] == ('events', 'testImpressions/bulk', 'some_api_key')
+
+ # validate key-value args (headers)
+ assert call_made[2]['extra_headers'] == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKImpressionsMode': 'DEBUG'
+ }
+
+ # validate key-value args (body)
+ assert call_made[2]['body'] == expectedImpressions
+
+ def test_post_counters(self, mocker):
+ """Test impressions posting API call."""
+ httpclient = mocker.Mock(spec=client.HttpClient)
+ httpclient.post.return_value = client.HttpResponse(200, '', {})
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ impressions_api = impressions.ImpressionsAPI(httpclient, 'some_api_key', sdk_metadata, mocker.Mock())
+ response = impressions_api.flush_counters(counters)
call_made = httpclient.post.mock_calls[0]
# validate positional arguments
- assert call_made[1] == ('events', '/testImpressions/bulk', 'some_api_key')
+ assert call_made[1] == ('events', 'testImpressions/count', 'some_api_key')
# validate key-value args (headers)
assert call_made[2]['extra_headers'] == {
'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name',
+ 'SplitSDKImpressionsMode': 'OPTIMIZED'
+ }
+
+ # validate key-value args (body)
+ assert call_made[2]['body'] == expected_counters
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.post.side_effect = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = impressions_api.flush_counters(counters)
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
+
+
+class ImpressionsAPIAsyncTests(object):
+ """Impressions API test cases."""
+
+ @pytest.mark.asyncio
+ async def test_post_impressions(self, mocker):
+ """Test impressions posting API call."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ telemetry_storage = InMemoryTelemetryStorageAsync()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impressions_api = impressions.ImpressionsAPIAsync(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.body = None
+ async def post(verb, url, key, body, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.body = body
+ return client.HttpResponse(200, '', {})
+ httpclient.post = post
+
+ response = await impressions_api.flush_impressions(impressions_mock)
+
+ # validate positional arguments
+ assert self.verb == 'events'
+ assert self.url == 'testImpressions/bulk'
+ assert self.key == 'some_api_key'
+
+ # validate key-value args (headers)
+ assert self.headers == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name',
+ 'SplitSDKImpressionsMode': 'OPTIMIZED'
+ }
+
+ # validate key-value args (body)
+ assert self.body == expectedImpressions
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.post = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = await impressions_api.flush_impressions(impressions_mock)
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
+
+ @pytest.mark.asyncio
+ async def test_post_impressions_ip_address_disabled(self, mocker):
+ """Test impressions posting API call."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': False})
+ sdk_metadata = get_metadata(cfg)
+ impressions_api = impressions.ImpressionsAPIAsync(httpclient, 'some_api_key', sdk_metadata, mocker.Mock(), ImpressionsMode.DEBUG)
+
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.body = None
+ async def post(verb, url, key, body, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.body = body
+ return client.HttpResponse(200, '', {})
+ httpclient.post = post
+
+ response = await impressions_api.flush_impressions(impressions_mock)
+
+ # validate positional arguments
+ assert self.verb == 'events'
+ assert self.url == 'testImpressions/bulk'
+ assert self.key == 'some_api_key'
+
+ # validate key-value args (headers)
+ assert self.headers == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKImpressionsMode': 'DEBUG'
+ }
+
+ # validate key-value args (body)
+ assert self.body == expectedImpressions
+
+ @pytest.mark.asyncio
+ async def test_post_counters(self, mocker):
+ """Test impressions posting API call."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ impressions_api = impressions.ImpressionsAPIAsync(httpclient, 'some_api_key', sdk_metadata, mocker.Mock())
+
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.body = None
+ async def post(verb, url, key, body, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.body = body
+ return client.HttpResponse(200, '', {})
+ httpclient.post = post
+
+ response = await impressions_api.flush_counters(counters)
+
+ # validate positional arguments
+ assert self.verb == 'events'
+ assert self.url == 'testImpressions/count'
+ assert self.key == 'some_api_key'
+
+ # validate key-value args (headers)
+ assert self.headers == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name',
+ 'SplitSDKImpressionsMode': 'OPTIMIZED'
}
# validate key-value args (body)
- assert call_made[2]['body'] == self.expectedImpressions
+ assert self.body == expected_counters
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.post = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = await impressions_api.flush_counters(counters)
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
diff --git a/tests/api/test_segments_api.py b/tests/api/test_segments_api.py
index 851d8359..8681be59 100644
--- a/tests/api/test_segments_api.py
+++ b/tests/api/test_segments_api.py
@@ -1,8 +1,11 @@
"""Segment API tests module."""
import pytest
-from splitio.api import segments, client, APIException
+import unittest.mock as mock
+from splitio.api import segments, client, APIException
+from splitio.api.commons import FetchOptions
+from splitio.client.util import SdkMetadata
class SegmentAPITests(object):
"""Segment API test cases."""
@@ -10,18 +13,121 @@ class SegmentAPITests(object):
def test_fetch_segment_changes(self, mocker):
"""Test segment changes fetching API call."""
httpclient = mocker.Mock(spec=client.HttpClient)
- httpclient.get.return_value = client.HttpResponse(200, '{"prop1": "value1"}')
- segment_api = segments.SegmentsAPI(httpclient, 'some_api_key')
- response = segment_api.fetch_segment('some_segment', 123)
+ httpclient.get.return_value = client.HttpResponse(200, '{"prop1": "value1"}', {})
+ segment_api = segments.SegmentsAPI(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+
+ response = segment_api.fetch_segment('some_segment', 123, FetchOptions(None, None, None, None, None))
+ assert response['prop1'] == 'value1'
+ assert httpclient.get.mock_calls == [mocker.call('sdk', 'segmentChanges/some_segment', 'some_api_key',
+ extra_headers={
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some'
+ },
+ query={'since': 123})]
+
+ httpclient.reset_mock()
+ response = segment_api.fetch_segment('some_segment', 123, FetchOptions(True, None, None, None, None))
+ assert response['prop1'] == 'value1'
+ assert httpclient.get.mock_calls == [mocker.call('sdk', 'segmentChanges/some_segment', 'some_api_key',
+ extra_headers={
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some',
+ 'Cache-Control': 'no-cache'
+ },
+ query={'since': 123})]
+ httpclient.reset_mock()
+ response = segment_api.fetch_segment('some_segment', 123, FetchOptions(True, 123, None, None, None))
assert response['prop1'] == 'value1'
- assert httpclient.get.mock_calls == [mocker.call('sdk', '/segmentChanges/some_segment', 'some_api_key', {'since': 123})]
+ assert httpclient.get.mock_calls == [mocker.call('sdk', 'segmentChanges/some_segment', 'some_api_key',
+ extra_headers={
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some',
+ 'Cache-Control': 'no-cache'
+ },
+ query={'since': 123, 'till': 123})]
httpclient.reset_mock()
def raise_exception(*args, **kwargs):
raise client.HttpClientException('some_message')
httpclient.get.side_effect = raise_exception
with pytest.raises(APIException) as exc_info:
- response = segment_api.fetch_segment('some_segment', 123)
+ response = segment_api.fetch_segment('some_segment', 123, FetchOptions())
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
+
+
+class SegmentAPIAsyncTests(object):
+ """Segment async API test cases."""
+
+ @pytest.mark.asyncio
+ async def test_fetch_segment_changes(self, mocker):
+ """Test segment changes fetching API call."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ segment_api = segments.SegmentsAPIAsync(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.query = None
+ async def get(verb, url, key, query, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.query = query
+ return client.HttpResponse(200, '{"prop1": "value1"}', {})
+ httpclient.get = get
+
+ response = await segment_api.fetch_segment('some_segment', 123, FetchOptions(None, None, None, None, None))
+ assert response['prop1'] == 'value1'
+ assert self.verb == 'sdk'
+ assert self.url == 'segmentChanges/some_segment'
+ assert self.key == 'some_api_key'
+ assert self.headers == {
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some'
+ }
+ assert self.query == {'since': 123}
+
+ httpclient.reset_mock()
+ response = await segment_api.fetch_segment('some_segment', 123, FetchOptions(True, None, None, None, None))
+ assert response['prop1'] == 'value1'
+ assert self.verb == 'sdk'
+ assert self.url == 'segmentChanges/some_segment'
+ assert self.key == 'some_api_key'
+ assert self.headers == {
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some',
+ 'Cache-Control': 'no-cache'
+ }
+ assert self.query == {'since': 123}
+
+ httpclient.reset_mock()
+ response = await segment_api.fetch_segment('some_segment', 123, FetchOptions(True, 123, None, None, None))
+ assert response['prop1'] == 'value1'
+ assert self.verb == 'sdk'
+ assert self.url == 'segmentChanges/some_segment'
+ assert self.key == 'some_api_key'
+ assert self.headers == {
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some',
+ 'Cache-Control': 'no-cache'
+ }
+ assert self.query == {'since': 123, 'till': 123}
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.get = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = await segment_api.fetch_segment('some_segment', 123, FetchOptions(None, None, None, None, None))
assert exc_info.type == APIException
assert exc_info.value.message == 'some_message'
diff --git a/tests/api/test_splits_api.py b/tests/api/test_splits_api.py
index 5e827cf9..c9aeee8b 100644
--- a/tests/api/test_splits_api.py
+++ b/tests/api/test_splits_api.py
@@ -1,8 +1,12 @@
"""Split API tests module."""
import pytest
-from splitio.api import splits, client, APIException
+import unittest.mock as mock
+import time
+from splitio.api import splits, client, APIException
+from splitio.api.commons import FetchOptions
+from splitio.client.util import SdkMetadata
class SplitAPITests(object):
"""Split API test cases."""
@@ -10,18 +14,319 @@ class SplitAPITests(object):
def test_fetch_split_changes(self, mocker):
"""Test split changes fetching API call."""
httpclient = mocker.Mock(spec=client.HttpClient)
- httpclient.get.return_value = client.HttpResponse(200, '{"prop1": "value1"}')
- split_api = splits.SplitsAPI(httpclient, 'some_api_key')
- response = split_api.fetch_splits(123)
+ httpclient.get.return_value = client.HttpResponse(200, '{"prop1": "value1"}', {})
+ split_api = splits.SplitsAPI(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+
+ response = split_api.fetch_splits(123, -1, FetchOptions(False, None, None, 'set1,set2'))
+ assert response['prop1'] == 'value1'
+ assert httpclient.get.mock_calls == [mocker.call('sdk', 'splitChanges', 'some_api_key',
+ extra_headers={
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some'
+ },
+ query={'s': '1.3', 'since': 123, 'rbSince': -1, 'sets': 'set1,set2'})]
+ httpclient.reset_mock()
+ response = split_api.fetch_splits(123, 1, FetchOptions(True, 123, None,'set3'))
assert response['prop1'] == 'value1'
- assert httpclient.get.mock_calls == [mocker.call('sdk', '/splitChanges', 'some_api_key', {'since': 123})]
+ assert httpclient.get.mock_calls == [mocker.call('sdk', 'splitChanges', 'some_api_key',
+ extra_headers={
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some',
+ 'Cache-Control': 'no-cache'
+ },
+ query={'s': '1.3', 'since': 123, 'rbSince': 1, 'till': 123, 'sets': 'set3'})]
+
+ httpclient.reset_mock()
+ response = split_api.fetch_splits(123, 122, FetchOptions(True, 123, None, 'set3'))
+ assert response['prop1'] == 'value1'
+ assert httpclient.get.mock_calls == [mocker.call('sdk', 'splitChanges', 'some_api_key',
+ extra_headers={
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some',
+ 'Cache-Control': 'no-cache'
+ },
+ query={'s': '1.3', 'since': 123, 'rbSince': 122, 'till': 123, 'sets': 'set3'})]
httpclient.reset_mock()
def raise_exception(*args, **kwargs):
raise client.HttpClientException('some_message')
httpclient.get.side_effect = raise_exception
with pytest.raises(APIException) as exc_info:
- response = split_api.fetch_splits(123)
+ response = split_api.fetch_splits(123, 12, FetchOptions())
assert exc_info.type == APIException
assert exc_info.value.message == 'some_message'
+
+ def test_old_spec(self, mocker):
+ """Test old split changes fetching API call."""
+ httpclient = mocker.Mock(spec=client.HttpClient)
+ self.counter = 0
+ self.query = []
+ def get(sdk, splitChanges, sdk_key, extra_headers, query):
+ self.counter += 1
+ self.query.append(query)
+ if self.counter == 1:
+ return client.HttpResponse(400, 'error', {})
+ if self.counter == 2:
+ return client.HttpResponse(200, '{"splits": [], "since": 123, "till": 456}', {})
+
+ httpclient.get = get
+ split_api = splits.SplitsAPI(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+
+ httpclient.is_sdk_endpoint_overridden.return_value = False
+ try:
+ response = split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ except Exception as e:
+ print(e)
+
+ # no attempt to fetch old spec
+ assert self.query == [{'s': '1.3', 'since': 123, 'rbSince': -1}]
+
+ httpclient.is_sdk_endpoint_overridden.return_value = True
+ self.query = []
+ self.counter = 0
+ response = split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ assert response == {"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert self.query == [{'s': '1.3', 'since': 123, 'rbSince': -1}, {'s': '1.1', 'since': 123}]
+ assert not split_api.clear_storage
+
+ def test_switch_to_new_spec(self, mocker):
+ """Test old split changes fetching API call."""
+ httpclient = mocker.Mock(spec=client.HttpClient)
+ self.counter = 0
+ self.query = []
+ def get(sdk, splitChanges, sdk_key, extra_headers, query):
+ self.counter += 1
+ self.query.append(query)
+ if self.counter == 1:
+ return client.HttpResponse(400, 'error', {})
+ if self.counter == 2:
+ return client.HttpResponse(200, '{"splits": [], "since": 123, "till": 456}', {})
+ if self.counter == 3:
+ return client.HttpResponse(200, '{"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": 123, "t": -1}}', {})
+
+ httpclient.is_sdk_endpoint_overridden.return_value = True
+ httpclient.get = get
+ split_api = splits.SplitsAPI(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+ response = split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ assert response == {"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert self.query == [{'s': '1.3', 'since': 123, 'rbSince': -1}, {'s': '1.1', 'since': 123}]
+ assert not split_api.clear_storage
+
+ time.sleep(1)
+ splits._PROXY_CHECK_INTERVAL_MILLISECONDS_SS = 10
+ response = split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ assert self.query[2] == {'s': '1.3', 'since': 123, 'rbSince': -1}
+ assert response == {"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": 123, "t": -1}}
+ assert split_api.clear_storage
+
+ def test_using_old_spec_since(self, mocker):
+ """Test using old_spec_since variable."""
+ httpclient = mocker.Mock(spec=client.HttpClient)
+ self.counter = 0
+ self.query = []
+ def get(sdk, splitChanges, sdk_key, extra_headers, query):
+ self.counter += 1
+ self.query.append(query)
+ if self.counter == 1:
+ return client.HttpResponse(400, 'error', {})
+ if self.counter == 2:
+ return client.HttpResponse(200, '{"splits": [], "since": 123, "till": 456}', {})
+ if self.counter == 3:
+ return client.HttpResponse(400, 'error', {})
+ if self.counter == 4:
+ return client.HttpResponse(200, '{"splits": [], "since": 456, "till": 456}', {})
+
+ httpclient.is_sdk_endpoint_overridden.return_value = True
+ httpclient.get = get
+ split_api = splits.SplitsAPI(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+ response = split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ assert response == {"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert self.query == [{'s': '1.3', 'since': 123, 'rbSince': -1}, {'s': '1.1', 'since': 123}]
+ assert not split_api.clear_storage
+
+ time.sleep(1)
+ splits._PROXY_CHECK_INTERVAL_MILLISECONDS_SS = 10
+
+ response = split_api.fetch_splits(456, -1, FetchOptions(False, None, None, None))
+ time.sleep(1)
+ splits._PROXY_CHECK_INTERVAL_MILLISECONDS_SS = 1000000
+ assert self.query[2] == {'s': '1.3', 'since': 456, 'rbSince': -1}
+ assert self.query[3] == {'s': '1.1', 'since': 456}
+ assert response == {"ff": {"d": [], "s": 456, "t": 456}, "rbs": {"d": [], "s": -1, "t": -1}}
+
+class SplitAPIAsyncTests(object):
+ """Split async API test cases."""
+
+ @pytest.mark.asyncio
+ async def test_fetch_split_changes(self, mocker):
+ """Test split changes fetching API call."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ split_api = splits.SplitsAPIAsync(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.query = None
+ async def get(verb, url, key, query, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.query = query
+ return client.HttpResponse(200, '{"prop1": "value1"}', {})
+ httpclient.get = get
+
+ response = await split_api.fetch_splits(123, -1, FetchOptions(False, None, None, 'set1,set2'))
+ assert response['prop1'] == 'value1'
+ assert self.verb == 'sdk'
+ assert self.url == 'splitChanges'
+ assert self.key == 'some_api_key'
+ assert self.headers == {
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some'
+ }
+ assert self.query == {'s': '1.3', 'since': 123, 'rbSince': -1, 'sets': 'set1,set2'}
+
+ httpclient.reset_mock()
+ response = await split_api.fetch_splits(123, 1, FetchOptions(True, 123, None, 'set3'))
+ assert response['prop1'] == 'value1'
+ assert self.verb == 'sdk'
+ assert self.url == 'splitChanges'
+ assert self.key == 'some_api_key'
+ assert self.headers == {
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some',
+ 'Cache-Control': 'no-cache'
+ }
+ assert self.query == {'s': '1.3', 'since': 123, 'rbSince': 1, 'till': 123, 'sets': 'set3'}
+
+ httpclient.reset_mock()
+ response = await split_api.fetch_splits(123, 122, FetchOptions(True, 123, None))
+ assert response['prop1'] == 'value1'
+ assert self.verb == 'sdk'
+ assert self.url == 'splitChanges'
+ assert self.key == 'some_api_key'
+ assert self.headers == {
+ 'SplitSDKVersion': '1.0',
+ 'SplitSDKMachineIP': '1.2.3.4',
+ 'SplitSDKMachineName': 'some',
+ 'Cache-Control': 'no-cache'
+ }
+ assert self.query == {'s': '1.3', 'since': 123, 'rbSince': 122, 'till': 123}
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.get = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = await split_api.fetch_splits(123, 12, FetchOptions())
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
+
+ @pytest.mark.asyncio
+ async def test_old_spec(self, mocker):
+ """Test old split changes fetching API call."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ self.counter = 0
+ self.query = []
+ async def get(sdk, splitChanges, sdk_key, extra_headers, query):
+ self.counter += 1
+ self.query.append(query)
+ if self.counter == 1:
+ return client.HttpResponse(400, 'error', {})
+ if self.counter == 2:
+ return client.HttpResponse(200, '{"splits": [], "since": 123, "till": 456}', {})
+
+ httpclient.is_sdk_endpoint_overridden.return_value = True
+ httpclient.get = get
+ split_api = splits.SplitsAPIAsync(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+
+ httpclient.is_sdk_endpoint_overridden.return_value = False
+ try:
+ response = await split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ except Exception as e:
+ print(e)
+
+ # no attempt to fetch old spec
+ assert self.query == [{'s': '1.3', 'since': 123, 'rbSince': -1}]
+
+ httpclient.is_sdk_endpoint_overridden.return_value = True
+ self.query = []
+ self.counter = 0
+ response = await split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ assert response == {"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert self.query == [{'s': '1.3', 'since': 123, 'rbSince': -1}, {'s': '1.1', 'since': 123}]
+ assert not split_api.clear_storage
+
+ @pytest.mark.asyncio
+ async def test_switch_to_new_spec(self, mocker):
+ """Test old split changes fetching API call."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ self.counter = 0
+ self.query = []
+ async def get(sdk, splitChanges, sdk_key, extra_headers, query):
+ self.counter += 1
+ self.query.append(query)
+ if self.counter == 1:
+ return client.HttpResponse(400, 'error', {})
+ if self.counter == 2:
+ return client.HttpResponse(200, '{"splits": [], "since": 123, "till": 456}', {})
+ if self.counter == 3:
+ return client.HttpResponse(200, '{"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": 123, "t": -1}}', {})
+
+ httpclient.is_sdk_endpoint_overridden.return_value = True
+ httpclient.get = get
+ split_api = splits.SplitsAPIAsync(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+ response = await split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ assert response == {"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert self.query == [{'s': '1.3', 'since': 123, 'rbSince': -1}, {'s': '1.1', 'since': 123}]
+ assert not split_api.clear_storage
+
+ time.sleep(1)
+ splits._PROXY_CHECK_INTERVAL_MILLISECONDS_SS = 10
+ response = await split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ assert self.query[2] == {'s': '1.3', 'since': 123, 'rbSince': -1}
+ assert response == {"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": 123, "t": -1}}
+ assert split_api.clear_storage
+
+ @pytest.mark.asyncio
+ async def test_using_old_spec_since(self, mocker):
+ """Test using old_spec_since variable."""
+ httpclient = mocker.Mock(spec=client.HttpClient)
+ self.counter = 0
+ self.query = []
+ async def get(sdk, splitChanges, sdk_key, extra_headers, query):
+ self.counter += 1
+ self.query.append(query)
+ if self.counter == 1:
+ return client.HttpResponse(400, 'error', {})
+ if self.counter == 2:
+ return client.HttpResponse(200, '{"splits": [], "since": 123, "till": 456}', {})
+ if self.counter == 3:
+ return client.HttpResponse(400, 'error', {})
+ if self.counter == 4:
+ return client.HttpResponse(200, '{"splits": [], "since": 456, "till": 456}', {})
+
+ httpclient.is_sdk_endpoint_overridden.return_value = True
+ httpclient.get = get
+ split_api = splits.SplitsAPIAsync(httpclient, 'some_api_key', SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+ response = await split_api.fetch_splits(123, -1, FetchOptions(False, None, None, None))
+ assert response == {"ff": {"d": [], "s": 123, "t": 456}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert self.query == [{'s': '1.3', 'since': 123, 'rbSince': -1}, {'s': '1.1', 'since': 123}]
+ assert not split_api.clear_storage
+
+ time.sleep(1)
+ splits._PROXY_CHECK_INTERVAL_MILLISECONDS_SS = 10
+
+ response = await split_api.fetch_splits(456, -1, FetchOptions(False, None, None, None))
+ time.sleep(1)
+ splits._PROXY_CHECK_INTERVAL_MILLISECONDS_SS = 1000000
+ assert self.query[2] == {'s': '1.3', 'since': 456, 'rbSince': -1}
+ assert self.query[3] == {'s': '1.1', 'since': 456}
+ assert response == {"ff": {"d": [], "s": 456, "t": 456}, "rbs": {"d": [], "s": -1, "t": -1}}
diff --git a/tests/api/test_telemetry.py b/tests/api/test_telemetry.py
deleted file mode 100644
index abec2d50..00000000
--- a/tests/api/test_telemetry.py
+++ /dev/null
@@ -1,118 +0,0 @@
-"""Telemetry API tests module."""
-
-import pytest
-from splitio.api import telemetry, client, APIException
-from splitio.client.util import SdkMetadata
-
-
-class EventsAPITests(object):
- """Impressions API test cases."""
-
- def test_post_latencies(self, mocker):
- """Test impressions posting API call."""
- httpclient = mocker.Mock(spec=client.HttpClient)
- httpclient.post.return_value = client.HttpResponse(200, '')
- sdk_metadata = SdkMetadata('python-1.2.3', 'some_machine_name', '123.123.123.123')
- telemetry_api = telemetry.TelemetryAPI(httpclient, 'some_api_key', sdk_metadata)
- response = telemetry_api.flush_latencies({
- 'l1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
- })
-
- call_made = httpclient.post.mock_calls[0]
-
- # validate positional arguments
- assert call_made[1] == ('events', '/metrics/times', 'some_api_key')
-
- # validate key-value args (headers)
- assert call_made[2]['extra_headers'] == {
- 'SplitSDKVersion': 'python-1.2.3',
- 'SplitSDKMachineIP': '123.123.123.123',
- 'SplitSDKMachineName': 'some_machine_name'
- }
-
- # validate key-value args (body)
- assert call_made[2]['body'] == [{
- 'name': 'l1',
- 'latencies': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
- }]
-
- httpclient.reset_mock()
- def raise_exception(*args, **kwargs):
- raise client.HttpClientException('some_message')
- httpclient.post.side_effect = raise_exception
- with pytest.raises(APIException) as exc_info:
- response = telemetry_api.flush_latencies({
- 'l1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
- })
- assert exc_info.type == APIException
- assert exc_info.value.message == 'some_message'
-
- def test_post_counters(self, mocker):
- """Test impressions posting API call."""
- httpclient = mocker.Mock(spec=client.HttpClient)
- httpclient.post.return_value = client.HttpResponse(200, '')
- sdk_metadata = SdkMetadata('python-1.2.3', 'some_machine_name', '123.123.123.123')
- telemetry_api = telemetry.TelemetryAPI(httpclient, 'some_api_key', sdk_metadata)
- response = telemetry_api.flush_counters({'counter1': 1, 'counter2': 2})
-
- call_made = httpclient.post.mock_calls[0]
-
- # validate positional arguments
- assert call_made[1] == ('events', '/metrics/counters', 'some_api_key')
-
- # validate key-value args (headers)
- assert call_made[2]['extra_headers'] == {
- 'SplitSDKVersion': 'python-1.2.3',
- 'SplitSDKMachineIP': '123.123.123.123',
- 'SplitSDKMachineName': 'some_machine_name'
- }
-
- # validate key-value args (body)
- assert call_made[2]['body'] == [
- {'name': 'counter1', 'delta': 1},
- {'name': 'counter2', 'delta': 2}
- ]
-
- httpclient.reset_mock()
- def raise_exception(*args, **kwargs):
- raise client.HttpClientException('some_message')
- httpclient.post.side_effect = raise_exception
- with pytest.raises(APIException) as exc_info:
- response = telemetry_api.flush_counters({'counter1': 1, 'counter2': 2})
- assert exc_info.type == APIException
- assert exc_info.value.message == 'some_message'
-
- def test_post_gauge(self, mocker):
- """Test impressions posting API call."""
- httpclient = mocker.Mock(spec=client.HttpClient)
- httpclient.post.return_value = client.HttpResponse(200, '')
- sdk_metadata = SdkMetadata('python-1.2.3', 'some_machine_name', '123.123.123.123')
- telemetry_api = telemetry.TelemetryAPI(httpclient, 'some_api_key', sdk_metadata)
- response = telemetry_api.flush_gauges({'gauge1': 1, 'gauge2': 2})
-
- call_made = httpclient.post.mock_calls[0]
-
- # validate positional arguments
- assert call_made[1] == ('events', '/metrics/gauge', 'some_api_key')
-
- # validate key-value args (headers)
- assert call_made[2]['extra_headers'] == {
- 'SplitSDKVersion': 'python-1.2.3',
- 'SplitSDKMachineIP': '123.123.123.123',
- 'SplitSDKMachineName': 'some_machine_name'
- }
-
- # validate key-value args (body)
- assert call_made[2]['body'] == [
- {'name': 'gauge1', 'value': 1},
- {'name': 'gauge2', 'value': 2}
- ]
-
- httpclient.reset_mock()
- def raise_exception(*args, **kwargs):
- raise client.HttpClientException('some_message')
- httpclient.post.side_effect = raise_exception
- with pytest.raises(APIException) as exc_info:
- response = telemetry_api.flush_gauges({'gauge1': 1, 'gauge2': 2})
- assert exc_info.type == APIException
- assert exc_info.value.message == 'some_message'
diff --git a/tests/api/test_telemetry_api.py b/tests/api/test_telemetry_api.py
new file mode 100644
index 00000000..5a857789
--- /dev/null
+++ b/tests/api/test_telemetry_api.py
@@ -0,0 +1,266 @@
+"""Impressions API tests module."""
+
+import pytest
+import unittest.mock as mock
+
+from splitio.api import telemetry, client, APIException
+#from splitio.models.telemetry import
+from splitio.client.util import get_metadata
+from splitio.client.config import DEFAULT_CONFIG
+from splitio.version import __version__
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
+
+
+class TelemetryAPITests(object):
+ """Telemetry API test cases."""
+
+ def test_record_unique_keys(self, mocker):
+ """Test telemetry posting unique keys."""
+ httpclient = mocker.Mock(spec=client.HttpClient)
+ httpclient.post.return_value = client.HttpResponse(200, '', {})
+ uniques = {'keys': [1, 2, 3]}
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_api = telemetry.TelemetryAPI(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+ response = telemetry_api.record_unique_keys(uniques)
+
+ call_made = httpclient.post.mock_calls[0]
+
+ # validate positional arguments
+ assert call_made[1] == ('telemetry', 'v1/keys/ss', 'some_api_key')
+
+ # validate key-value args (headers)
+ assert call_made[2]['extra_headers'] == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name'
+ }
+
+ # validate key-value args (body)
+ assert call_made[2]['body'] == uniques
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.post.side_effect = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = telemetry_api.record_unique_keys(uniques)
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
+
+ def test_record_init(self, mocker):
+ """Test telemetry posting init configs."""
+ httpclient = mocker.Mock(spec=client.HttpClient)
+ httpclient.post.return_value = client.HttpResponse(200, '', {})
+ uniques = {'keys': [1, 2, 3]}
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_api = telemetry.TelemetryAPI(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+ response = telemetry_api.record_init(uniques)
+
+ call_made = httpclient.post.mock_calls[0]
+
+ # validate positional arguments
+ assert call_made[1] == ('telemetry', 'v1/metrics/config', 'some_api_key')
+
+ # validate key-value args (headers)
+ assert call_made[2]['extra_headers'] == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name'
+ }
+
+ # validate key-value args (body)
+ assert call_made[2]['body'] == uniques
+
+ def test_record_stats(self, mocker):
+ """Test telemetry posting stats."""
+ httpclient = mocker.Mock(spec=client.HttpClient)
+ httpclient.post.return_value = client.HttpResponse(200, '', {})
+ uniques = {'keys': [1, 2, 3]}
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_api = telemetry.TelemetryAPI(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+ response = telemetry_api.record_stats(uniques)
+
+ call_made = httpclient.post.mock_calls[0]
+
+ # validate positional arguments
+ assert call_made[1] == ('telemetry', 'v1/metrics/usage', 'some_api_key')
+
+ # validate key-value args (headers)
+ assert call_made[2]['extra_headers'] == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name'
+ }
+
+ # validate key-value args (body)
+ assert call_made[2]['body'] == uniques
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.post.side_effect = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = telemetry_api.record_stats(uniques)
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
+
+
+class TelemetryAPIAsyncTests(object):
+ """Telemetry API test cases."""
+
+ @pytest.mark.asyncio
+ async def test_record_unique_keys(self, mocker):
+ """Test telemetry posting unique keys."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ uniques = {'keys': [1, 2, 3]}
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ telemetry_storage = InMemoryTelemetryStorageAsync()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_api = telemetry.TelemetryAPIAsync(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.body = None
+ async def post(verb, url, key, body, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.body = body
+ return client.HttpResponse(200, '', {})
+ httpclient.post = post
+
+ response = await telemetry_api.record_unique_keys(uniques)
+ assert self.verb == 'telemetry'
+ assert self.url == 'v1/keys/ss'
+ assert self.key == 'some_api_key'
+
+ # validate key-value args (headers)
+ assert self.headers == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name'
+ }
+
+ # validate key-value args (body)
+ assert self.body == uniques
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.post = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = await telemetry_api.record_unique_keys(uniques)
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
+
+ @pytest.mark.asyncio
+ async def test_record_init(self, mocker):
+ """Test telemetry posting unique keys."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ uniques = {'keys': [1, 2, 3]}
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ telemetry_storage = InMemoryTelemetryStorageAsync()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_api = telemetry.TelemetryAPIAsync(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.body = None
+ async def post(verb, url, key, body, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.body = body
+ return client.HttpResponse(200, '', {})
+ httpclient.post = post
+
+ response = await telemetry_api.record_init(uniques)
+ assert self.verb == 'telemetry'
+ assert self.url == 'v1/metrics/config'
+ assert self.key == 'some_api_key'
+
+ # validate key-value args (headers)
+ assert self.headers == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name'
+ }
+
+ # validate key-value args (body)
+ assert self.body == uniques
+
+ @pytest.mark.asyncio
+ async def test_record_stats(self, mocker):
+ """Test telemetry posting unique keys."""
+ httpclient = mocker.Mock(spec=client.HttpClientAsync)
+ uniques = {'keys': [1, 2, 3]}
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': True, 'machineName': 'some_machine_name', 'machineIp': '123.123.123.123'})
+ sdk_metadata = get_metadata(cfg)
+ telemetry_storage = InMemoryTelemetryStorageAsync()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_api = telemetry.TelemetryAPIAsync(httpclient, 'some_api_key', sdk_metadata, telemetry_runtime_producer)
+ self.verb = None
+ self.url = None
+ self.key = None
+ self.headers = None
+ self.body = None
+ async def post(verb, url, key, body, extra_headers):
+ self.url = url
+ self.verb = verb
+ self.key = key
+ self.headers = extra_headers
+ self.body = body
+ return client.HttpResponse(200, '', {})
+ httpclient.post = post
+
+ response = await telemetry_api.record_stats(uniques)
+ assert self.verb == 'telemetry'
+ assert self.url == 'v1/metrics/usage'
+ assert self.key == 'some_api_key'
+
+ # validate key-value args (headers)
+ assert self.headers == {
+ 'SplitSDKVersion': 'python-%s' % __version__,
+ 'SplitSDKMachineIP': '123.123.123.123',
+ 'SplitSDKMachineName': 'some_machine_name'
+ }
+
+ # validate key-value args (body)
+ assert self.body == uniques
+
+ httpclient.reset_mock()
+ def raise_exception(*args, **kwargs):
+ raise client.HttpClientException('some_message')
+ httpclient.post = raise_exception
+ with pytest.raises(APIException) as exc_info:
+ response = await telemetry_api.record_stats(uniques)
+ assert exc_info.type == APIException
+ assert exc_info.value.message == 'some_message'
diff --git a/tests/api/test_util.py b/tests/api/test_util.py
new file mode 100644
index 00000000..51876f52
--- /dev/null
+++ b/tests/api/test_util.py
@@ -0,0 +1,40 @@
+"""Split API tests module."""
+
+import pytest
+import unittest.mock as mock
+
+from splitio.api import headers_from_metadata
+from splitio.client.util import SdkMetadata
+from splitio.engine.telemetry import TelemetryStorageProducer
+from splitio.storage.inmemmory import InMemoryTelemetryStorage
+from splitio.models.telemetry import HTTPExceptionsAndLatencies
+
+
+class UtilTests(object):
+ """Util test cases."""
+
+ def test_headers_from_metadata(self, mocker):
+ """Test headers from metadata call."""
+ metadata = headers_from_metadata(SdkMetadata('1.0', 'some', '1.2.3.4'))
+ assert metadata['SplitSDKVersion'] == '1.0'
+ assert metadata['SplitSDKMachineIP'] == '1.2.3.4'
+ assert metadata['SplitSDKMachineName'] == 'some'
+ assert 'SplitSDKClientKey' not in metadata
+
+ metadata = headers_from_metadata(SdkMetadata('1.0', 'some', '1.2.3.4'), 'abcd')
+ assert metadata['SplitSDKVersion'] == '1.0'
+ assert metadata['SplitSDKMachineIP'] == '1.2.3.4'
+ assert metadata['SplitSDKMachineName'] == 'some'
+ assert metadata['SplitSDKClientKey'] == 'abcd'
+
+ metadata = headers_from_metadata(SdkMetadata('1.0', 'some', 'NA'))
+ assert metadata['SplitSDKVersion'] == '1.0'
+ assert 'SplitSDKMachineIP' not in metadata
+ assert 'SplitSDKMachineName' not in metadata
+ assert 'SplitSDKClientKey' not in metadata
+
+ metadata = headers_from_metadata(SdkMetadata('1.0', 'some', 'unknown'))
+ assert metadata['SplitSDKVersion'] == '1.0'
+ assert 'SplitSDKMachineIP' not in metadata
+ assert 'SplitSDKMachineName' not in metadata
+ assert 'SplitSDKClientKey' not in metadata
diff --git a/tests/client/test_client.py b/tests/client/test_client.py
index 2546b27d..1efd4143 100644
--- a/tests/client/test_client.py
+++ b/tests/client/test_client.py
@@ -1,196 +1,240 @@
"""SDK main client test module."""
-#pylint: disable=no-self-use,protected-access
+# pylint: disable=no-self-use,protected-access
-import json
-import os
-from splitio.client.client import Client
-from splitio.client.factory import SplitFactory
-from splitio.engine.evaluator import Evaluator
+import unittest.mock as mock
+import pytest
+import queue
+import asyncio
+
+from splitio.client.client import Client, _LOGGER as _logger, CONTROL, ClientAsync, EvaluationOptions
+from splitio.client.factory import SplitFactory, Status as FactoryStatus, SplitFactoryAsync
+from splitio.events.events_manager import EventsManager, EventsManagerAsync
+from splitio.models.fallback_config import FallbackTreatmentsConfiguration, FallbackTreatmentCalculator
+from splitio.models.fallback_treatment import FallbackTreatment
from splitio.models.impressions import Impression, Label
-from splitio.models.events import Event, EventWrapper
-from splitio.storage import EventStorage, ImpressionStorage, SegmentStorage, SplitStorage, \
- TelemetryStorage
+from splitio.models.events import Event, EventWrapper, SdkEvent
+from splitio.storage import EventStorage, ImpressionStorage, SegmentStorage, SplitStorage, RuleBasedSegmentsStorage
from splitio.storage.inmemmory import InMemorySplitStorage, InMemorySegmentStorage, \
- InMemoryImpressionStorage, InMemoryTelemetryStorage, InMemoryEventStorage
-from splitio.models import splits, segments
+ InMemoryImpressionStorage, InMemoryTelemetryStorage, InMemorySplitStorageAsync, \
+ InMemoryImpressionStorageAsync, InMemorySegmentStorageAsync, InMemoryTelemetryStorageAsync, InMemoryEventStorageAsync, \
+ InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync
+from splitio.models.splits import Split, Status, from_raw
+from splitio.engine.impressions.impressions import Manager as ImpressionManager
+from splitio.engine.impressions.manager import Counter as ImpressionsCounter
+from splitio.engine.impressions.unique_keys_tracker import UniqueKeysTracker, UniqueKeysTrackerAsync
+from splitio.engine.telemetry import TelemetryStorageConsumer, TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.engine.evaluator import Evaluator, EvaluationContext
+from splitio.recorder.recorder import StandardRecorder, StandardRecorderAsync
+from splitio.engine.impressions.strategies import StrategyDebugMode, StrategyNoneMode, StrategyOptimizedMode
+from tests.integration import splits_json
+
-class ClientTests(object): #pylint: disable=too-few-public-methods
+class ClientTests(object): # pylint: disable=too-few-public-methods
"""Split client test cases."""
def test_get_treatment(self, mocker):
"""Test get_treatment execution paths."""
- split_storage = mocker.Mock(spec=SplitStorage)
- segment_storage = mocker.Mock(spec=SegmentStorage)
- impression_storage = mocker.Mock(spec=ImpressionStorage)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
event_storage = mocker.Mock(spec=EventStorage)
- telemetry_storage = mocker.Mock(spec=TelemetryStorage)
- def _get_storage_mock(name):
- return {
- 'splits': split_storage,
- 'segments': segment_storage,
- 'impressions': impression_storage,
- 'events': event_storage,
- 'telemetry': telemetry_storage
- }[name]
destroyed_property = mocker.PropertyMock()
destroyed_property.return_value = False
- factory = mocker.Mock(spec=SplitFactory)
- factory._get_storage.side_effect = _get_storage_mock
- type(factory).destroyed = destroyed_property
-
- mocker.patch('splitio.client.client.time.time', new=lambda: 1)
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
- client = Client(factory, True, None)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer(),
+ unique_keys_tracker=UniqueKeysTracker(),
+ imp_counter=ImpressionsCounter())
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ TelemetrySubmitterMock(),
+ )
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+ factory.block_until_ready(5)
+
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
client._evaluator = mocker.Mock(spec=Evaluator)
- client._evaluator.evaluate_feature.return_value = {
+ client._evaluator.eval_with_context.return_value = {
'treatment': 'on',
'configurations': None,
'impression': {
'label': 'some_label',
'change_number': 123
},
+ 'impressions_disabled': False
}
- client._logger = mocker.Mock()
- client._send_impression_to_listener = mocker.Mock()
-
- assert client.get_treatment('some_key', 'some_feature') == 'on'
- assert mocker.call(
- [Impression('some_key', 'some_feature', 'on', 'some_label', 123, None, 1000)]
- ) in impression_storage.put.mock_calls
- assert mocker.call('sdk.getTreatment', 5) in telemetry_storage.inc_latency.mock_calls
- assert client._logger.mock_calls == []
- assert mocker.call(
- Impression('some_key', 'some_feature', 'on', 'some_label', 123, None, 1000),
- None
- ) in client._send_impression_to_listener.mock_calls
+ _logger = mocker.Mock()
+ assert client.get_treatment('some_key', 'SPLIT_2') == 'on'
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None)]
+ assert _logger.mock_calls == []
# Test with client not ready
ready_property = mocker.PropertyMock()
ready_property.return_value = False
type(factory).ready = ready_property
- impression_storage.put.reset_mock()
- assert client.get_treatment('some_key', 'some_feature', {'some_attribute': 1}) == 'control'
- assert mocker.call(
- [Impression('some_key', 'some_feature', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY)]
- ) in impression_storage.put.mock_calls
+ # pytest.set_trace()
+ assert client.get_treatment('some_key', 'SPLIT_2', {'some_attribute': 1}) == 'control'
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', Label.NOT_READY, None, None, 1000, None, None)]
# Test with exception:
ready_property.return_value = True
- split_storage.get_change_number.return_value = -1
def _raise(*_):
- raise Exception('something')
- client._evaluator.evaluate_feature.side_effect = _raise
- assert client.get_treatment('some_key', 'some_feature') == 'control'
- assert mocker.call(
- [Impression('some_key', 'some_feature', 'control', 'exception', -1, None, 1000)]
- ) in impression_storage.put.mock_calls
- assert len(telemetry_storage.inc_latency.mock_calls) == 3
+ raise RuntimeError('something')
+ client._evaluator.eval_with_context.side_effect = _raise
+ assert client.get_treatment('some_key', 'SPLIT_2') == 'control'
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', 'exception', None, None, 1000, None, None)]
+ factory.destroy()
def test_get_treatment_with_config(self, mocker):
"""Test get_treatment execution paths."""
- split_storage = mocker.Mock(spec=SplitStorage)
- segment_storage = mocker.Mock(spec=SegmentStorage)
- impression_storage = mocker.Mock(spec=ImpressionStorage)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
event_storage = mocker.Mock(spec=EventStorage)
- telemetry_storage = mocker.Mock(spec=TelemetryStorage)
- def _get_storage_mock(name):
- return {
- 'splits': split_storage,
- 'segments': segment_storage,
- 'impressions': impression_storage,
- 'events': event_storage,
- 'telemetry': telemetry_storage
- }[name]
destroyed_property = mocker.PropertyMock()
destroyed_property.return_value = False
- factory = mocker.Mock(spec=SplitFactory)
- factory._get_storage.side_effect = _get_storage_mock
- type(factory).destroyed = destroyed_property
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'impressions': impression_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
- mocker.patch('splitio.client.client.time.time', new=lambda: 1)
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
- client = Client(factory, True, None)
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
client._evaluator = mocker.Mock(spec=Evaluator)
- client._evaluator.evaluate_feature.return_value = {
+ client._evaluator.eval_with_context.return_value = {
'treatment': 'on',
'configurations': '{"some_config": True}',
'impression': {
'label': 'some_label',
'change_number': 123
- }
+ },
+ 'impressions_disabled': False
}
- client._logger = mocker.Mock()
+ _logger = mocker.Mock()
client._send_impression_to_listener = mocker.Mock()
assert client.get_treatment_with_config(
'some_key',
- 'some_feature'
+ 'SPLIT_2'
) == ('on', '{"some_config": True}')
- assert mocker.call(
- [Impression('some_key', 'some_feature', 'on', 'some_label', 123, None, 1000)]
- ) in impression_storage.put.mock_calls
- assert mocker.call('sdk.getTreatmentWithConfig', 5) in telemetry_storage.inc_latency.mock_calls
- assert client._logger.mock_calls == []
- assert mocker.call(
- Impression('some_key', 'some_feature', 'on', 'some_label', 123, None, 1000),
- None
- ) in client._send_impression_to_listener.mock_calls
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None)]
+ assert _logger.mock_calls == []
# Test with client not ready
ready_property = mocker.PropertyMock()
ready_property.return_value = False
type(factory).ready = ready_property
- impression_storage.put.reset_mock()
- assert client.get_treatment_with_config('some_key', 'some_feature', {'some_attribute': 1}) == ('control', None)
- assert mocker.call(
- [Impression('some_key', 'some_feature', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY)]
- ) in impression_storage.put.mock_calls
+ assert client.get_treatment_with_config('some_key', 'SPLIT_2', {'some_attribute': 1}) == ('control', None)
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
# Test with exception:
ready_property.return_value = True
- split_storage.get_change_number.return_value = -1
+
def _raise(*_):
- raise Exception('something')
- client._evaluator.evaluate_feature.side_effect = _raise
- assert client.get_treatment_with_config('some_key', 'some_feature') == ('control', None)
- assert mocker.call(
- [Impression('some_key', 'some_feature', 'control', 'exception', -1, None, 1000)]
- ) in impression_storage.put.mock_calls
- assert len(telemetry_storage.inc_latency.mock_calls) == 3
+ raise RuntimeError('something')
+ client._evaluator.eval_with_context.side_effect = _raise
+ assert client.get_treatment_with_config('some_key', 'SPLIT_2') == ('control', None)
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', 'exception', None, None, 1000, None, None)]
+ factory.destroy()
def test_get_treatments(self, mocker):
"""Test get_treatment execution paths."""
- split_storage = mocker.Mock(spec=SplitStorage)
- segment_storage = mocker.Mock(spec=SegmentStorage)
- impression_storage = mocker.Mock(spec=ImpressionStorage)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
event_storage = mocker.Mock(spec=EventStorage)
- telemetry_storage = mocker.Mock(spec=TelemetryStorage)
- def _get_storage_mock(name):
- return {
- 'splits': split_storage,
- 'segments': segment_storage,
- 'impressions': impression_storage,
- 'events': event_storage,
- 'telemetry': telemetry_storage
- }[name]
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
destroyed_property = mocker.PropertyMock()
destroyed_property.return_value = False
- factory = mocker.Mock(spec=SplitFactory)
- factory._get_storage.side_effect = _get_storage_mock
- type(factory).destroyed = destroyed_property
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
- mocker.patch('splitio.client.client.time.time', new=lambda: 1)
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
- client = Client(factory, True, None)
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
client._evaluator = mocker.Mock(spec=Evaluator)
evaluation = {
'treatment': 'on',
@@ -198,182 +242,728 @@ def _get_storage_mock(name):
'impression': {
'label': 'some_label',
'change_number': 123
- }
+ },
+ 'impressions_disabled': False
}
- client._evaluator.evaluate_features.return_value = {
- 'f1': evaluation,
- 'f2': evaluation
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_2': evaluation,
+ 'SPLIT_1': evaluation
}
- client._logger = mocker.Mock()
+ _logger = mocker.Mock()
client._send_impression_to_listener = mocker.Mock()
- assert client.get_treatments('key', ['f1', 'f2']) == {'f1': 'on', 'f2': 'on'}
-
- impressions_called = impression_storage.put.mock_calls[0][1][0]
- assert Impression('key', 'f1', 'on', 'some_label', 123, None, 1000) in impressions_called
- assert Impression('key', 'f2', 'on', 'some_label', 123, None, 1000) in impressions_called
- assert mocker.call('sdk.getTreatments', 5) in telemetry_storage.inc_latency.mock_calls
- assert client._logger.mock_calls == []
- assert mocker.call(
- Impression('key', 'f1', 'on', 'some_label', 123, None, 1000),
- None
- ) in client._send_impression_to_listener.mock_calls
- assert mocker.call(
- Impression('key', 'f2', 'on', 'some_label', 123, None, 1000),
- None
- ) in client._send_impression_to_listener.mock_calls
+ treatments = client.get_treatments('key', ['SPLIT_2', 'SPLIT_1'])
+ assert treatments == {'SPLIT_2': 'on', 'SPLIT_1': 'on'}
+
+ impressions_called = impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
# Test with client not ready
ready_property = mocker.PropertyMock()
ready_property.return_value = False
type(factory).ready = ready_property
- impression_storage.put.reset_mock()
- assert client.get_treatments('some_key', ['some_feature'], {'some_attribute': 1}) == {'some_feature': 'control'}
- assert mocker.call(
- [Impression('some_key', 'some_feature', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY)]
- ) in impression_storage.put.mock_calls
+ assert client.get_treatments('some_key', ['SPLIT_2'], {'some_attribute': 1}) == {'SPLIT_2': 'control'}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
# Test with exception:
ready_property.return_value = True
- split_storage.get_change_number.return_value = -1
+
def _raise(*_):
- raise Exception('something')
- client._evaluator.evaluate_features.side_effect = _raise
- assert client.get_treatments('key', ['f1', 'f2']) == {'f1': 'control', 'f2': 'control'}
- assert len(telemetry_storage.inc_latency.mock_calls) == 2
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert client.get_treatments('key', ['SPLIT_2', 'SPLIT_1']) == {'SPLIT_2': 'control', 'SPLIT_1': 'control'}
+ factory.destroy()
- def test_get_treatments_with_config(self, mocker):
+ def test_get_treatments_by_flag_set(self, mocker):
"""Test get_treatment execution paths."""
- split_storage = mocker.Mock(spec=SplitStorage)
- segment_storage = mocker.Mock(spec=SegmentStorage)
- impression_storage = mocker.Mock(spec=ImpressionStorage)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
event_storage = mocker.Mock(spec=EventStorage)
- telemetry_storage = mocker.Mock(spec=TelemetryStorage)
- def _get_storage_mock(name):
- return {
- 'splits': split_storage,
- 'segments': segment_storage,
- 'impressions': impression_storage,
- 'events': event_storage,
- 'telemetry': telemetry_storage
- }[name]
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
destroyed_property = mocker.PropertyMock()
destroyed_property.return_value = False
- factory = mocker.Mock(spec=SplitFactory)
- factory._get_storage.side_effect = _get_storage_mock
- type(factory).destroyed = destroyed_property
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
- mocker.patch('splitio.client.client.time.time', new=lambda: 1)
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
- client = Client(factory, True, None)
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
client._evaluator = mocker.Mock(spec=Evaluator)
evaluation = {
'treatment': 'on',
- 'configurations': '{"color": "red"}',
- 'impression': {
- 'label': 'some_label',
- 'change_number': 123
- }
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
}
- client._evaluator.evaluate_features.return_value = {
- 'f1': evaluation,
- 'f2': evaluation
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_2': evaluation,
+ 'SPLIT_1': evaluation
}
- client._logger = mocker.Mock()
+ _logger = mocker.Mock()
client._send_impression_to_listener = mocker.Mock()
- assert client.get_treatments_with_config('key', ['f1', 'f2']) == {
- 'f1': ('on', '{"color": "red"}'),
- 'f2': ('on', '{"color": "red"}')
- }
-
- impressions_called = impression_storage.put.mock_calls[0][1][0]
- assert Impression('key', 'f1', 'on', 'some_label', 123, None, 1000) in impressions_called
- assert Impression('key', 'f2', 'on', 'some_label', 123, None, 1000) in impressions_called
- assert mocker.call('sdk.getTreatments', 5) in telemetry_storage.inc_latency.mock_calls
- assert client._logger.mock_calls == []
- assert mocker.call(
- Impression('key', 'f1', 'on', 'some_label', 123, None, 1000),
- None
- ) in client._send_impression_to_listener.mock_calls
- assert mocker.call(
- Impression('key', 'f2', 'on', 'some_label', 123, None, 1000),
- None
- ) in client._send_impression_to_listener.mock_calls
+ assert client.get_treatments_by_flag_set('key', 'set_1') == {'SPLIT_2': 'on', 'SPLIT_1': 'on'}
+
+ impressions_called = impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert client.get_treatments_by_flag_set('some_key', 'set_2', {'some_attribute': 1}) == {'SPLIT_1': 'control'}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert client.get_treatments_by_flag_set('key', 'set_1') == {'SPLIT_2': 'control', 'SPLIT_1': 'control'}
+ factory.destroy()
+
+ def test_get_treatments_by_flag_sets(self, mocker):
+ """Test get_treatment execution paths."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_2': evaluation,
+ 'SPLIT_1': evaluation
+ }
+ _logger = mocker.Mock()
+ client._send_impression_to_listener = mocker.Mock()
+ assert client.get_treatments_by_flag_sets('key', ['set_1']) == {'SPLIT_2': 'on', 'SPLIT_1': 'on'}
+
+ impressions_called = impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert client.get_treatments_by_flag_sets('some_key', ['set_2'], {'some_attribute': 1}) == {'SPLIT_1': 'control'}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert client.get_treatments_by_flag_sets('key', ['set_1']) == {'SPLIT_2': 'control', 'SPLIT_1': 'control'}
+ factory.destroy()
+
+ def test_get_treatments_with_config(self, mocker):
+ """Test get_treatment execution paths."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_1': evaluation,
+ 'SPLIT_2': evaluation
+ }
+ _logger = mocker.Mock()
+ assert client.get_treatments_with_config('key', ['SPLIT_1', 'SPLIT_2']) == {
+ 'SPLIT_1': ('on', '{"color": "red"}'),
+ 'SPLIT_2': ('on', '{"color": "red"}')
+ }
+
+ impressions_called = impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert client.get_treatments_with_config('some_key', ['SPLIT_1'], {'some_attribute': 1}) == {'SPLIT_1': ('control', None)}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert client.get_treatments_with_config('key', ['SPLIT_1', 'SPLIT_2']) == {
+ 'SPLIT_1': ('control', None),
+ 'SPLIT_2': ('control', None)
+ }
+ factory.destroy()
+
+ def test_get_treatments_with_config_by_flag_set(self, mocker):
+ """Test get_treatment execution paths."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ events_queue = queue.Queue()
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_1': evaluation,
+ 'SPLIT_2': evaluation
+ }
+ _logger = mocker.Mock()
+ assert client.get_treatments_with_config_by_flag_set('key', 'set_1') == {
+ 'SPLIT_1': ('on', '{"color": "red"}'),
+ 'SPLIT_2': ('on', '{"color": "red"}')
+ }
+
+ impressions_called = impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
# Test with client not ready
ready_property = mocker.PropertyMock()
ready_property.return_value = False
type(factory).ready = ready_property
- impression_storage.put.reset_mock()
- assert client.get_treatments_with_config('some_key', ['some_feature'], {'some_attribute': 1}) == {'some_feature': ('control', None)}
- assert mocker.call(
- [Impression('some_key', 'some_feature', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY)]
- ) in impression_storage.put.mock_calls
+ assert client.get_treatments_with_config_by_flag_set('some_key', 'set_2', {'some_attribute': 1}) == {'SPLIT_1': ('control', None)}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
# Test with exception:
ready_property.return_value = True
- split_storage.get_change_number.return_value = -1
+
def _raise(*_):
- raise Exception('something')
- client._evaluator.evaluate_features.side_effect = _raise
- assert client.get_treatments_with_config('key', ['f1', 'f2']) == {
- 'f1': ('control', None),
- 'f2': ('control', None)
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert client.get_treatments_with_config_by_flag_set('key', 'set_1') == {'SPLIT_1': ('control', None), 'SPLIT_2': ('control', None)}
+ factory.destroy()
+
+ def test_get_treatments_with_config_by_flag_sets(self, mocker):
+ """Test get_treatment execution paths."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_1': evaluation,
+ 'SPLIT_2': evaluation
}
- assert len(telemetry_storage.inc_latency.mock_calls) == 2
+ _logger = mocker.Mock()
+ assert client.get_treatments_with_config_by_flag_sets('key', ['set_1']) == {
+ 'SPLIT_1': ('on', '{"color": "red"}'),
+ 'SPLIT_2': ('on', '{"color": "red"}')
+ }
+
+ impressions_called = impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert client.get_treatments_with_config_by_flag_sets('some_key', ['set_2'], {'some_attribute': 1}) == {'SPLIT_1': ('control', None)}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert client.get_treatments_with_config_by_flag_sets('key', ['set_1']) == {'SPLIT_1': ('control', None), 'SPLIT_2': ('control', None)}
+ factory.destroy()
+
+ def test_impression_toggle_optimized(self, mocker):
+ """Test get_treatment execution paths."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ impmanager = ImpressionManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ TelemetrySubmitterMock(),
+ )
+
+ factory.block_until_ready(5)
+
+ split_storage.update([
+ from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ assert client.get_treatment('some_key', 'SPLIT_1') == 'off'
+ assert client.get_treatment('some_key', 'SPLIT_2') == 'on'
+ assert client.get_treatment('some_key', 'SPLIT_3') == 'on'
+
+ impressions = impression_storage.pop_many(100)
+ assert len(impressions) == 2
+
+ found1 = False
+ found2 = False
+ for impression in impressions:
+ if impression[1] == 'SPLIT_1':
+ found1 = True
+ if impression[1] == 'SPLIT_2':
+ found2 = True
+ assert found1
+ assert found2
+ factory.destroy()
+
+ def test_impression_toggle_debug(self, mocker):
+ """Test get_treatment execution paths."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ TelemetrySubmitterMock(),
+ )
+
+ factory.block_until_ready(5)
+
+ split_storage.update([
+ from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ assert client.get_treatment('some_key', 'SPLIT_1') == 'off'
+ assert client.get_treatment('some_key', 'SPLIT_2') == 'on'
+ assert client.get_treatment('some_key', 'SPLIT_3') == 'on'
+ impressions = impression_storage.pop_many(100)
+ assert len(impressions) == 2
+
+ found1 = False
+ found2 = False
+ for impression in impressions:
+ if impression[1] == 'SPLIT_1':
+ found1 = True
+ if impression[1] == 'SPLIT_2':
+ found2 = True
+ assert found1
+ assert found2
+ factory.destroy()
+
+ def test_impression_toggle_none(self, mocker):
+ """Test get_treatment execution paths."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+ non_strategy = StrategyNoneMode()
+ impmanager = ImpressionManager(non_strategy, non_strategy, telemetry_runtime_producer)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ TelemetrySubmitterMock(),
+ )
+
+ factory.block_until_ready(5)
+
+ split_storage.update([
+ from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ assert client.get_treatment('some_key', 'SPLIT_1') == 'off'
+ assert client.get_treatment('some_key', 'SPLIT_2') == 'on'
+ assert client.get_treatment('some_key', 'SPLIT_3') == 'on'
+
+ impressions = impression_storage.pop_many(100)
+ assert len(impressions) == 0
+ factory.destroy()
+
+ @mock.patch('splitio.client.factory.SplitFactory.destroy')
def test_destroy(self, mocker):
"""Test that destroy/destroyed calls are forwarded to the factory."""
split_storage = mocker.Mock(spec=SplitStorage)
segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
impression_storage = mocker.Mock(spec=ImpressionStorage)
event_storage = mocker.Mock(spec=EventStorage)
- telemetry_storage = mocker.Mock(spec=TelemetryStorage)
- def _get_storage_mock(name):
- return {
- 'splits': split_storage,
- 'segments': segment_storage,
- 'impressions': impression_storage,
- 'events': event_storage,
- 'telemetry': telemetry_storage
- }[name]
- factory = mocker.Mock(spec=SplitFactory)
- destroyed_mock = mocker.PropertyMock()
- type(factory).destroyed = destroyed_mock
- client = Client(factory)
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ events_queue = queue.Queue()
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
client.destroy()
- assert factory.destroy.mock_calls == [mocker.call()]
assert client.destroyed is not None
- assert destroyed_mock.mock_calls == [mocker.call()]
+ assert(mocker.called)
def test_track(self, mocker):
"""Test that destroy/destroyed calls are forwarded to the factory."""
split_storage = mocker.Mock(spec=SplitStorage)
segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
impression_storage = mocker.Mock(spec=ImpressionStorage)
event_storage = mocker.Mock(spec=EventStorage)
event_storage.put.return_value = True
- telemetry_storage = mocker.Mock(spec=TelemetryStorage)
- def _get_storage_mock(name):
- return {
- 'splits': split_storage,
- 'segments': segment_storage,
- 'impressions': impression_storage,
- 'events': event_storage,
- 'telemetry': telemetry_storage
- }[name]
- factory = mocker.Mock(spec=SplitFactory)
- factory._get_storage = _get_storage_mock
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ events_queue = queue.Queue()
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
destroyed_mock = mocker.PropertyMock()
destroyed_mock.return_value = False
- type(factory).destroyed = destroyed_mock
factory._apikey = 'test'
- mocker.patch('splitio.client.client.time.time', new=lambda: 1)
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
- client = Client(factory)
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
assert client.track('key', 'user', 'purchase', 12) is True
assert mocker.call([
EventWrapper(
@@ -381,3 +971,2506 @@ def _get_storage_mock(name):
size=1024
)
]) in event_storage.put.mock_calls
+ factory.destroy()
+
+ def test_evaluations_before_running_post_fork(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ recorder = StandardRecorder(impmanager, mocker.Mock(), impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ events_queue = queue.Queue()
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': mocker.Mock()},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ True
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ expected_msg = [
+ mocker.call('Client is not ready - no calls possible')
+ ]
+
+ client = Client(factory, mocker.Mock(), mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+
+ assert client.get_treatment('some_key', 'SPLIT_2') == CONTROL
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert client.get_treatment_with_config('some_key', 'SPLIT_2') == (CONTROL, None)
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert client.track("some_key", "traffic_type", "event_type", None) is False
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert client.get_treatments(None, ['SPLIT_2']) == {'SPLIT_2': CONTROL}
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert client.get_treatments_by_flag_set(None, 'set_1') == {'SPLIT_2': CONTROL}
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert client.get_treatments_by_flag_sets(None, ['set_1']) == {'SPLIT_2': CONTROL}
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert client.get_treatments_with_config('some_key', ['SPLIT_2']) == {'SPLIT_2': (CONTROL, None)}
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert client.get_treatments_with_config_by_flag_set('some_key', 'set_1') == {'SPLIT_2': (CONTROL, None)}
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert client.get_treatments_with_config_by_flag_sets('some_key', ['set_1']) == {'SPLIT_2': (CONTROL, None)}
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+ factory.destroy()
+
+ @mock.patch('splitio.client.client.Client.ready', side_effect=None)
+ def test_telemetry_not_ready(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ recorder = StandardRecorder(impmanager, mocker.Mock(), mocker.Mock(), telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory('localhost',
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': mocker.Mock()},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ client = Client(factory, mocker.Mock(), mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ client.ready = False
+ assert client.get_treatment('some_key', 'SPLIT_2') == CONTROL
+ assert(telemetry_storage._tel_config._not_ready == 1)
+ client.track('key', 'tt', 'ev')
+ assert(telemetry_storage._tel_config._not_ready == 2)
+ factory.destroy()
+
+ def test_telemetry_record_treatment_exception(self, mocker):
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ event_storage = mocker.Mock(spec=EventStorage)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory('localhost',
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ class SyncManagerMock():
+ def stop(*_):
+ pass
+ factory._sync_manager = SyncManagerMock()
+
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context = _raise
+ client._evaluator.eval_with_context = _raise
+
+
+ try:
+ client.get_treatment('key', 'SPLIT_2')
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._treatment == 1)
+ try:
+ client.get_treatment_with_config('key', 'SPLIT_2')
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._treatment_with_config == 1)
+
+ try:
+ client.get_treatments('key', ['SPLIT_2'])
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._treatments == 1)
+
+ try:
+ client.get_treatments_by_flag_set('key', 'set_1')
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._treatments_by_flag_set == 1)
+
+ try:
+ client.get_treatments_by_flag_sets('key', ['set_1'])
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._treatments_by_flag_sets == 1)
+
+ try:
+ client.get_treatments_with_config('key', ['SPLIT_2'])
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._treatments_with_config == 1)
+
+ try:
+ client.get_treatments_with_config_by_flag_set('key', 'set_1')
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._treatments_with_config_by_flag_set == 1)
+
+ try:
+ client.get_treatments_with_config_by_flag_sets('key', ['set_1'])
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._treatments_with_config_by_flag_sets == 1)
+ factory.destroy()
+
+ def test_telemetry_method_latency(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda:1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ def stop(*_):
+ pass
+ factory._sync_manager.stop = stop
+
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ assert client.get_treatment('key', 'SPLIT_2') == 'on'
+ assert(telemetry_storage._method_latencies._treatment[0] == 1)
+
+ client.get_treatment_with_config('key', 'SPLIT_2')
+ assert(telemetry_storage._method_latencies._treatment_with_config[0] == 1)
+
+ client.get_treatments('key', ['SPLIT_2'])
+ assert(telemetry_storage._method_latencies._treatments[0] == 1)
+
+ client.get_treatments_by_flag_set('key', 'set_1')
+ assert(telemetry_storage._method_latencies._treatments_by_flag_set[0] == 1)
+
+ client.get_treatments_by_flag_sets('key', ['set_1'])
+ assert(telemetry_storage._method_latencies._treatments_by_flag_sets[0] == 1)
+
+ client.get_treatments_with_config('key', ['SPLIT_2'])
+ assert(telemetry_storage._method_latencies._treatments_with_config[0] == 1)
+
+ client.get_treatments_with_config_by_flag_set('key', 'set_1')
+ assert(telemetry_storage._method_latencies._treatments_with_config_by_flag_set[0] == 1)
+
+ client.get_treatments_with_config_by_flag_sets('key', ['set_1'])
+ assert(telemetry_storage._method_latencies._treatments_with_config_by_flag_sets[0] == 1)
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ client.track('key', 'tt', 'ev')
+ assert(telemetry_storage._method_latencies._track[0] == 1)
+ factory.destroy()
+
+ @mock.patch('splitio.recorder.recorder.StandardRecorder.record_track_stats', side_effect=Exception())
+ def test_telemetry_track_exception(self, mocker):
+ split_storage = mocker.Mock(spec=SplitStorage)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ event_storage = mocker.Mock(spec=EventStorage)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ events_queue = queue.Queue()
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ try:
+ client.track('key', 'tt', 'ev')
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._track == 1)
+ factory.destroy()
+
+ def test_impressions_properties(self, mocker):
+ """Test get_treatment execution paths."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer(),
+ unique_keys_tracker=UniqueKeysTracker(),
+ imp_counter=ImpressionsCounter())
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ TelemetrySubmitterMock(),
+ )
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+ factory.block_until_ready(5)
+
+ split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': None,
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_with_context.return_value = evaluation
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_2': evaluation
+ }
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+ assert client.get_treatment('some_key', 'SPLIT_2', evaluation_options=EvaluationOptions({"prop": "value"})) == 'on'
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert client.get_treatment('some_key', 'SPLIT_2', evaluation_options=EvaluationOptions(12)) == 'on'
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: properties must be of type dictionary.', 'get_treatment')]
+
+ _logger.reset_mock()
+ assert client.get_treatment('some_key', 'SPLIT_2', evaluation_options=EvaluationOptions('12')) == 'on'
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, 1000, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: properties must be of type dictionary.', 'get_treatment')]
+
+ assert client.get_treatment_with_config('some_key', 'SPLIT_2', evaluation_options=EvaluationOptions({"prop": "value"})) == ('on', None)
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert client.get_treatments('some_key', ['SPLIT_2'], evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': 'on'}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ _logger.reset_mock()
+ assert client.get_treatments('some_key', ['SPLIT_2'], evaluation_options=EvaluationOptions("prop")) == {'SPLIT_2': 'on'}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, 1000, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: properties must be of type dictionary.', 'get_treatments')]
+
+ _logger.reset_mock()
+ assert client.get_treatments('some_key', ['SPLIT_2'], evaluation_options=EvaluationOptions(123)) == {'SPLIT_2': 'on'}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, 1000, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: properties must be of type dictionary.', 'get_treatments')]
+
+ _logger.reset_mock()
+ assert client.get_treatments('some_key', ['SPLIT_2'], evaluation_options=123) == {'SPLIT_2': 'on'}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, 1000, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: evaluation options should be an instance of EvaluationOptions. Setting its value to None.', 'get_treatments')]
+
+ assert client.get_treatments_with_config('some_key', ['SPLIT_2'], evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': ('on', None)}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert client.get_treatments_by_flag_set('some_key', 'set_1', evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': 'on'}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert client.get_treatments_by_flag_sets('some_key', ['set_1'], evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': 'on'}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert client.get_treatments_with_config_by_flag_set('some_key', 'set_1', evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': ('on', None)}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert client.get_treatments_with_config_by_flag_sets('some_key', ['set_1'], evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': ('on', None)}
+ assert impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ @mock.patch('splitio.engine.evaluator.Evaluator.eval_with_context', side_effect=RuntimeError())
+ def test_fallback_treatment_eval_exception(self, mocker):
+ # using fallback when the evaluator has RuntimeError exception
+ split_storage = mocker.Mock(spec=SplitStorage)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ event_storage = mocker.Mock(spec=EventStorage)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ impmanager = ImpressionManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_producer.get_telemetry_runtime_producer())
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ internal_events_queue = queue.Queue()
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ self.imps = None
+ def put(impressions):
+ self.imps = impressions
+ impression_storage.put = put
+
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global", '{"prop": "val"}'))))
+
+ def get_feature_flag_names_by_flag_sets(*_):
+ return ["some", "some2"]
+ client._get_feature_flag_names_by_flag_sets = get_feature_flag_names_by_flag_sets
+
+ treatment = client.get_treatment("key", "some")
+ assert(treatment == "on-global")
+ assert(self.imps[0].treatment == "on-global")
+ assert(self.imps[0].label == "fallback - exception")
+
+ self.imps = None
+ treatment = client.get_treatments("key_m", ["some", "some2"])
+ assert(treatment == {"some": "on-global", "some2": "on-global"})
+ assert(self.imps[0].treatment == "on-global")
+ assert(self.imps[0].label == "fallback - exception")
+ assert(self.imps[1].treatment == "on-global")
+ assert(self.imps[1].label == "fallback - exception")
+
+ assert(client.get_treatment_with_config("key", "some") == ("on-global", '{"prop": "val"}'))
+ assert(client.get_treatments_with_config("key_m", ["some", "some2"]) == {"some": ("on-global", '{"prop": "val"}'), "some2": ("on-global", '{"prop": "val"}')})
+ assert(client.get_treatments_by_flag_set("key_m", "set") == {"some": "on-global", "some2": "on-global"})
+ assert(client.get_treatments_by_flag_set("key_m", ["set"]) == {"some": "on-global", "some2": "on-global"})
+ assert(client.get_treatments_with_config_by_flag_set("key_m", "set") == {"some": ("on-global", '{"prop": "val"}'), "some2": ("on-global", '{"prop": "val"}')})
+ assert(client.get_treatments_with_config_by_flag_sets("key_m", ["set"]) == {"some": ("on-global", '{"prop": "val"}'), "some2": ("on-global", '{"prop": "val"}')})
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global", '{"prop": "val"}'), {'some': FallbackTreatment("on-local")}))
+ treatment = client.get_treatment("key2", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - exception")
+
+ self.imps = None
+ treatment = client.get_treatments("key2_m", ["some", "some2"])
+ assert(treatment == {"some": "on-local", "some2": "on-global"})
+ assert_both = 0
+ for imp in self.imps:
+ if imp.feature_name == "some":
+ assert_both += 1
+ assert(imp.treatment == "on-local")
+ assert(imp.label == "fallback - exception")
+ else:
+ assert_both += 1
+ assert(imp.treatment == "on-global")
+ assert(imp.label == "fallback - exception")
+ assert assert_both == 2
+
+ assert(client.get_treatment_with_config("key", "some") == ("on-local", None))
+ assert(client.get_treatments_with_config("key_m", ["some", "some2"]) == {"some": ("on-local", None), "some2": ("on-global", '{"prop": "val"}')})
+ assert(client.get_treatments_by_flag_set("key_m", "set") == {"some": "on-local", "some2": "on-global"})
+ assert(client.get_treatments_by_flag_set("key_m", ["set"]) == {"some": "on-local", "some2": "on-global"})
+ assert(client.get_treatments_with_config_by_flag_set("key_m", "set") == {"some": ("on-local", None), "some2": ("on-global", '{"prop": "val"}')})
+ assert(client.get_treatments_with_config_by_flag_sets("key_m", ["set"]) == {"some": ("on-local", None), "some2": ("on-global", '{"prop": "val"}')})
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ treatment = client.get_treatment("key3", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - exception")
+
+ self.imps = None
+ treatment = client.get_treatments("key3_m", ["some", "some2"])
+ assert(treatment == {"some": "on-local", "some2": "control"})
+ assert_both = 0
+ for imp in self.imps:
+ if imp.feature_name == "some":
+ assert_both += 1
+ assert(imp.treatment == "on-local")
+ assert(imp.label == "fallback - exception")
+ else:
+ assert_both += 1
+ assert(imp.treatment == "control")
+ assert(imp.label == "exception")
+ assert assert_both == 2
+
+ assert(client.get_treatment_with_config("key", "some") == ("on-local", '{"prop": "val"}'))
+ assert(client.get_treatments_with_config("key_m", ["some", "some2"]) == {"some": ("on-local", '{"prop": "val"}'), "some2": ("control", None)})
+ assert(client.get_treatments_by_flag_set("key_m", "set") == {"some": "on-local", "some2": "control"})
+ assert(client.get_treatments_by_flag_set("key_m", ["set"]) == {"some": "on-local", "some2": "control"})
+ assert(client.get_treatments_with_config_by_flag_set("key_m", "set") == {"some": ("on-local", '{"prop": "val"}'), "some2": ("control", None)})
+ assert(client.get_treatments_with_config_by_flag_sets("key_m", ["set"]) == {"some": ("on-local", '{"prop": "val"}'), "some2": ("control", None)})
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some2': FallbackTreatment("on-local")}))
+ treatment = client.get_treatment("key4", "some")
+ assert(treatment == "control")
+ assert(self.imps[0].treatment == "control")
+ assert(self.imps[0].label == "exception")
+
+ try:
+ factory.destroy()
+ except:
+ pass
+
+ @mock.patch('splitio.engine.evaluator.Evaluator.eval_with_context', side_effect=Exception())
+ def test_fallback_treatment_exception(self, mocker):
+ # using fallback when the evaluator has RuntimeError exception
+ split_storage = mocker.Mock(spec=SplitStorage)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ event_storage = mocker.Mock(spec=EventStorage)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ impmanager = ImpressionManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_producer.get_telemetry_runtime_producer())
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ internal_events_queue = queue.Queue()
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ self.imps = None
+ def put(impressions):
+ self.imps = impressions
+ impression_storage.put = put
+
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"))))
+ treatment = client.get_treatment("key", "some")
+ assert(treatment == "on-global")
+ assert(self.imps == None)
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'some': FallbackTreatment("on-local")}))
+ treatment = client.get_treatment("key2", "some")
+ assert(treatment == "on-local")
+ assert(self.imps == None)
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some': FallbackTreatment("on-local")}))
+ treatment = client.get_treatment("key3", "some")
+ assert(treatment == "on-local")
+ assert(self.imps == None)
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some2': FallbackTreatment("on-local")}))
+ treatment = client.get_treatment("key4", "some")
+ assert(treatment == "control")
+ assert(self.imps == None)
+
+ try:
+ factory.destroy()
+ except:
+ pass
+
+ @mock.patch('splitio.client.client.Client.ready', side_effect=None)
+ def test_fallback_treatment_not_ready_impressions(self, mocker):
+ # using fallback when the evaluator has RuntimeError exception
+ split_storage = mocker.Mock(spec=SplitStorage)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ impmanager = ImpressionManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_producer.get_telemetry_runtime_producer())
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ internal_events_queue = queue.Queue()
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ self.imps = None
+ def put(impressions):
+ self.imps = impressions
+ impression_storage.put = put
+
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+ client = Client(factory, recorder, mocker.Mock(), True, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"))))
+ client.ready = False
+
+ treatment = client.get_treatment("key", "some")
+ assert(self.imps[0].treatment == "on-global")
+ assert(self.imps[0].label == "fallback - not ready")
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'some': FallbackTreatment("on-local")}))
+ treatment = client.get_treatment("key2", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - not ready")
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some': FallbackTreatment("on-local")}))
+ treatment = client.get_treatment("key3", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - not ready")
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some2': FallbackTreatment("on-local")}))
+ treatment = client.get_treatment("key4", "some")
+ assert(treatment == "control")
+ assert(self.imps[0].treatment == "control")
+ assert(self.imps[0].label == "not ready")
+
+ try:
+ factory.destroy()
+ except:
+ pass
+
+ def test_events_subscription(self, mocker):
+ events_manager = mocker.Mock(spec=EventsManager)
+ client = Client(mocker.Mock(), mocker.Mock(), events_manager, True, FallbackTreatmentCalculator(None))
+ client.on(SdkEvent.SDK_READY, self.test_fallback_treatment_not_ready_impressions)
+ assert events_manager.register.mock_calls[0] == mock.call(SdkEvent.SDK_READY, self.test_fallback_treatment_not_ready_impressions)
+
+ events_manager.register.mock_calls = []
+ client.on("dd", self.test_fallback_treatment_not_ready_impressions)
+ assert events_manager.register.mock_calls == []
+
+ client.on(SdkEvent.SDK_READY, "qwe")
+ assert events_manager.register.mock_calls == []
+
+class ClientAsyncTests(object): # pylint: disable=too-few-public-methods
+ """Split client async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_get_treatment_async(self, mocker):
+ """Test get_treatment_async execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ TelemetrySubmitterMock(),
+ )
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ client._evaluator.eval_with_context.return_value = {
+ 'treatment': 'on',
+ 'configurations': None,
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ _logger = mocker.Mock()
+ assert await client.get_treatment('some_key', 'SPLIT_2') == 'on'
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None)]
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert await client.get_treatment('some_key', 'SPLIT_2', {'some_attribute': 1}) == 'control'
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', Label.NOT_READY, None, None, 1000, None, None)]
+
+ # Test with exception:
+ ready_property.return_value = True
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_with_context.side_effect = _raise
+ assert await client.get_treatment('some_key', 'SPLIT_2') == 'control'
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', 'exception', None, None, 1000, None, None)]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatment_with_config_async(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ client._evaluator.eval_with_context.return_value = {
+ 'treatment': 'on',
+ 'configurations': '{"some_config": True}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ _logger = mocker.Mock()
+ client._send_impression_to_listener = mocker.Mock()
+ assert await client.get_treatment_with_config(
+ 'some_key',
+ 'SPLIT_2'
+ ) == ('on', '{"some_config": True}')
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None)]
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert await client.get_treatment_with_config('some_key', 'SPLIT_2', {'some_attribute': 1}) == ('control', None)
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_with_context.side_effect = _raise
+ assert await client.get_treatment_with_config('some_key', 'SPLIT_2') == ('control', None)
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', 'exception', None, None, 1000, None, None)]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_async(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_2': evaluation,
+ 'SPLIT_1': evaluation
+ }
+ _logger = mocker.Mock()
+ client._send_impression_to_listener = mocker.Mock()
+ assert await client.get_treatments('key', ['SPLIT_2', 'SPLIT_1']) == {'SPLIT_2': 'on', 'SPLIT_1': 'on'}
+
+ impressions_called = await impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert await client.get_treatments('some_key', ['SPLIT_2'], {'some_attribute': 1}) == {'SPLIT_2': 'control'}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert await client.get_treatments('key', ['SPLIT_2', 'SPLIT_1']) == {'SPLIT_2': 'control', 'SPLIT_1': 'control'}
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_set_async(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_2': evaluation,
+ 'SPLIT_1': evaluation
+ }
+ _logger = mocker.Mock()
+ client._send_impression_to_listener = mocker.Mock()
+ assert await client.get_treatments_by_flag_set('key', 'set_1') == {'SPLIT_2': 'on', 'SPLIT_1': 'on'}
+
+ impressions_called = await impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert await client.get_treatments_by_flag_set('some_key', 'set_2', {'some_attribute': 1}) == {'SPLIT_1': 'control'}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert await client.get_treatments_by_flag_set('key', 'set_1') == {'SPLIT_2': 'control', 'SPLIT_1': 'control'}
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_sets_async(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_2': evaluation,
+ 'SPLIT_1': evaluation
+ }
+ _logger = mocker.Mock()
+ client._send_impression_to_listener = mocker.Mock()
+ assert await client.get_treatments_by_flag_sets('key', ['set_1']) == {'SPLIT_2': 'on', 'SPLIT_1': 'on'}
+
+ impressions_called = await impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert await client.get_treatments_by_flag_sets('some_key', ['set_2'], {'some_attribute': 1}) == {'SPLIT_1': 'control'}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert await client.get_treatments_by_flag_sets('key', ['set_1']) == {'SPLIT_2': 'control', 'SPLIT_1': 'control'}
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_1': evaluation,
+ 'SPLIT_2': evaluation
+ }
+ _logger = mocker.Mock()
+ assert await client.get_treatments_with_config('key', ['SPLIT_1', 'SPLIT_2']) == {
+ 'SPLIT_1': ('on', '{"color": "red"}'),
+ 'SPLIT_2': ('on', '{"color": "red"}')
+ }
+
+ impressions_called = await impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert await client.get_treatments_with_config('some_key', ['SPLIT_1'], {'some_attribute': 1}) == {'SPLIT_1': ('control', None)}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert await client.get_treatments_with_config('key', ['SPLIT_1', 'SPLIT_2']) == {
+ 'SPLIT_1': ('control', None),
+ 'SPLIT_2': ('control', None)
+ }
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_set(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_1': evaluation,
+ 'SPLIT_2': evaluation
+ }
+ _logger = mocker.Mock()
+ assert await client.get_treatments_with_config_by_flag_set('key', 'set_1') == {
+ 'SPLIT_1': ('on', '{"color": "red"}'),
+ 'SPLIT_2': ('on', '{"color": "red"}')
+ }
+
+ impressions_called = await impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert await client.get_treatments_with_config_by_flag_set('some_key', 'set_2', {'some_attribute': 1}) == {'SPLIT_1': ('control', None)}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert await client.get_treatments_with_config_by_flag_set('key', 'set_1') == {
+ 'SPLIT_1': ('control', None),
+ 'SPLIT_2': ('control', None)
+ }
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_sets(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0]), from_raw(splits_json['splitChange1_1']['ff']['d'][1])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': '{"color": "red"}',
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_1': evaluation,
+ 'SPLIT_2': evaluation
+ }
+ _logger = mocker.Mock()
+ assert await client.get_treatments_with_config_by_flag_sets('key', ['set_1']) == {
+ 'SPLIT_1': ('on', '{"color": "red"}'),
+ 'SPLIT_2': ('on', '{"color": "red"}')
+ }
+
+ impressions_called = await impression_storage.pop_many(100)
+ assert Impression('key', 'SPLIT_1', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert Impression('key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None) in impressions_called
+ assert _logger.mock_calls == []
+
+ # Test with client not ready
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ assert await client.get_treatments_with_config_by_flag_sets('some_key', ['set_2'], {'some_attribute': 1}) == {'SPLIT_1': ('control', None)}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_1', 'control', Label.NOT_READY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY, mocker.ANY)]
+
+ # Test with exception:
+ ready_property.return_value = True
+
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_many_with_context.side_effect = _raise
+ assert await client.get_treatments_with_config_by_flag_sets('key', ['set_1']) == {
+ 'SPLIT_1': ('control', None),
+ 'SPLIT_2': ('control', None)
+ }
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_impression_toggle_optimized(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ impmanager = ImpressionManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ await factory.block_until_ready(5)
+
+ await split_storage.update([
+ from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ treatment = await client.get_treatment('some_key', 'SPLIT_1')
+ assert treatment == 'off'
+ treatment = await client.get_treatment('some_key', 'SPLIT_2')
+ assert treatment == 'on'
+ treatment = await client.get_treatment('some_key', 'SPLIT_3')
+ assert treatment == 'on'
+
+ impressions = await impression_storage.pop_many(100)
+ assert len(impressions) == 2
+
+ found1 = False
+ found2 = False
+ for impression in impressions:
+ if impression[1] == 'SPLIT_1':
+ found1 = True
+ if impression[1] == 'SPLIT_2':
+ found2 = True
+ assert found1
+ assert found2
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_impression_toggle_debug(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ await factory.block_until_ready(5)
+
+ await split_storage.update([
+ from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ assert await client.get_treatment('some_key', 'SPLIT_1') == 'off'
+ assert await client.get_treatment('some_key', 'SPLIT_2') == 'on'
+ assert await client.get_treatment('some_key', 'SPLIT_3') == 'on'
+
+ impressions = await impression_storage.pop_many(100)
+ assert len(impressions) == 2
+
+ found1 = False
+ found2 = False
+ for impression in impressions:
+ if impression[1] == 'SPLIT_1':
+ found1 = True
+ if impression[1] == 'SPLIT_2':
+ found2 = True
+ assert found1
+ assert found2
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_impression_toggle_none(self, mocker):
+ """Test get_treatment execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+ non_strategy = StrategyNoneMode()
+ impmanager = ImpressionManager(non_strategy, non_strategy, telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ await factory.block_until_ready(5)
+
+ await split_storage.update([
+ from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ assert await client.get_treatment('some_key', 'SPLIT_1') == 'off'
+ assert await client.get_treatment('some_key', 'SPLIT_2') == 'on'
+ assert await client.get_treatment('some_key', 'SPLIT_3') == 'on'
+
+ impressions = await impression_storage.pop_many(100)
+ assert len(impressions) == 0
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_track_async(self, mocker):
+ """Test that destroy/destroyed calls are forwarded to the factory."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ event_storage = mocker.Mock(spec=EventStorage)
+ self.events = []
+ async def put(event):
+ self.events.append(event)
+ return True
+ event_storage.put = put
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ destroyed_mock = mocker.PropertyMock()
+ destroyed_mock.return_value = False
+ factory._apikey = 'test'
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ assert await client.track('key', 'user', 'purchase', 12) is True
+ assert self.events[0] == [EventWrapper(
+ event=Event('key', 'user', 'purchase', 12, 1000, None),
+ size=1024
+ )]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_telemetry_not_ready_async(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = InMemoryEventStorageAsync(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ factory = SplitFactoryAsync('localhost',
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': mocker.Mock()},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ assert await client.get_treatment('some_key', 'SPLIT_2') == CONTROL
+ assert(telemetry_storage._tel_config._not_ready == 1)
+ await client.track('key', 'tt', 'ev')
+ assert(telemetry_storage._tel_config._not_ready == 2)
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_telemetry_record_treatment_exception_async(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = InMemoryEventStorageAsync(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock()
+ def _raise(*_):
+ raise RuntimeError('something')
+ client._evaluator.eval_with_context.side_effect = _raise
+ client._evaluator.eval_many_with_context.side_effect = _raise
+
+ await client.get_treatment('key', 'SPLIT_2')
+ assert(telemetry_storage._method_exceptions._treatment == 1)
+
+ await client.get_treatment_with_config('key', 'SPLIT_2')
+ assert(telemetry_storage._method_exceptions._treatment_with_config == 1)
+
+ await client.get_treatments('key', ['SPLIT_2'])
+ assert(telemetry_storage._method_exceptions._treatments == 1)
+
+ await client.get_treatments_by_flag_set('key', 'set_1')
+ assert(telemetry_storage._method_exceptions._treatments_by_flag_set == 1)
+
+ await client.get_treatments_by_flag_sets('key', ['set_1'])
+ assert(telemetry_storage._method_exceptions._treatments_by_flag_sets == 1)
+
+ await client.get_treatments_with_config('key', ['SPLIT_2'])
+ assert(telemetry_storage._method_exceptions._treatments_with_config == 1)
+
+ await client.get_treatments_with_config_by_flag_set('key', 'set_1')
+ assert(telemetry_storage._method_exceptions._treatments_with_config_by_flag_set == 1)
+
+ await client.get_treatments_with_config_by_flag_sets('key', ['set_1'])
+ assert(telemetry_storage._method_exceptions._treatments_with_config_by_flag_sets == 1)
+
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_telemetry_method_latency_async(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = InMemoryEventStorageAsync(10, telemetry_runtime_producer)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ try:
+ await factory.block_until_ready(1)
+ except:
+ pass
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ assert await client.get_treatment('key', 'SPLIT_2') == 'on'
+ assert(telemetry_storage._method_latencies._treatment[0] == 1)
+
+ await client.get_treatment_with_config('key', 'SPLIT_2')
+ assert(telemetry_storage._method_latencies._treatment_with_config[0] == 1)
+
+ await client.get_treatments('key', ['SPLIT_2'])
+ assert(telemetry_storage._method_latencies._treatments[0] == 1)
+
+ await client.get_treatments_by_flag_set('key', 'set_1')
+ assert(telemetry_storage._method_latencies._treatments_by_flag_set[0] == 1)
+
+ await client.get_treatments_by_flag_sets('key', ['set_1'])
+ assert(telemetry_storage._method_latencies._treatments_by_flag_sets[0] == 1)
+
+ await client.get_treatments_with_config('key', ['SPLIT_2'])
+ assert(telemetry_storage._method_latencies._treatments_with_config[0] == 1)
+
+ await client.get_treatments_with_config_by_flag_set('key', 'set_1')
+ assert(telemetry_storage._method_latencies._treatments_with_config_by_flag_set[0] == 1)
+
+ await client.get_treatments_with_config_by_flag_sets('key', ['set_1'])
+ assert(telemetry_storage._method_latencies._treatments_with_config_by_flag_sets[0] == 1)
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ await client.track('key', 'tt', 'ev')
+ assert(telemetry_storage._method_latencies._track[0] == 1)
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_telemetry_track_exception_async(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ event_storage = InMemoryEventStorageAsync(10, telemetry_producer.get_telemetry_runtime_producer())
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ async def exc(*_):
+ raise RuntimeError("something")
+ recorder.record_track_stats = exc
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ try:
+ await client.track('key', 'tt', 'ev')
+ except:
+ pass
+ assert(telemetry_storage._method_exceptions._track == 1)
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_impressions_properties_async(self, mocker):
+ """Test get_treatment_async execution paths."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorageAsync(10, telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer(), imp_counter=ImpressionsCounter())
+ await split_storage.update([from_raw(splits_json['splitChange1_1']['ff']['d'][0])], [], -1)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ TelemetrySubmitterMock(),
+ )
+
+ await factory.block_until_ready(1)
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(None))
+ client._evaluator = mocker.Mock(spec=Evaluator)
+ evaluation = {
+ 'treatment': 'on',
+ 'configurations': None,
+ 'impression': {
+ 'label': 'some_label',
+ 'change_number': 123
+ },
+ 'impressions_disabled': False
+ }
+ client._evaluator.eval_with_context.return_value = evaluation
+ client._evaluator.eval_many_with_context.return_value = {
+ 'SPLIT_2': evaluation
+ }
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+ assert await client.get_treatment('some_key', 'SPLIT_2', evaluation_options=EvaluationOptions({"prop": "value"})) == 'on'
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert await client.get_treatment('some_key', 'SPLIT_2', evaluation_options=EvaluationOptions(12)) == 'on'
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: properties must be of type dictionary.', 'get_treatment')]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('some_key', 'SPLIT_2', evaluation_options=EvaluationOptions('12')) == 'on'
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, 1000, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: properties must be of type dictionary.', 'get_treatment')]
+
+ assert await client.get_treatment_with_config('some_key', 'SPLIT_2', evaluation_options=EvaluationOptions({"prop": "value"})) == ('on', None)
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert await client.get_treatments('some_key', ['SPLIT_2'], evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': 'on'}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', ['SPLIT_2'], evaluation_options=EvaluationOptions("prop")) == {'SPLIT_2': 'on'}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, 1000, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: properties must be of type dictionary.', 'get_treatments')]
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', ['SPLIT_2'], evaluation_options=EvaluationOptions(123)) == {'SPLIT_2': 'on'}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, 1000, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: properties must be of type dictionary.', 'get_treatments')]
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', ['SPLIT_2'], evaluation_options=123) == {'SPLIT_2': 'on'}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, 1000, None)]
+ assert _logger.error.mock_calls == [mocker.call('%s: evaluation options should be an instance of EvaluationOptions. Setting its value to None.', 'get_treatments')]
+
+ assert await client.get_treatments_with_config('some_key', ['SPLIT_2'], evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': ('on', None)}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert await client.get_treatments_by_flag_set('some_key', 'set_1', evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': 'on'}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert await client.get_treatments_by_flag_sets('some_key', ['set_1'], evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': 'on'}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert await client.get_treatments_with_config_by_flag_set('some_key', 'set_1', evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': ('on', None)}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+
+ assert await client.get_treatments_with_config_by_flag_sets('some_key', ['set_1'], evaluation_options=EvaluationOptions({"prop": "value"})) == {'SPLIT_2': ('on', None)}
+ assert await impression_storage.pop_many(100) == [Impression('some_key', 'SPLIT_2', 'on', 'some_label', 123, None, 1000, None, '{"prop": "value"}')]
+ try:
+ await factory.destroy()
+ except:
+ pass
+
+ @pytest.mark.asyncio
+ async def test_fallback_treatment_eval_exception(self, mocker):
+ # using fallback when the evaluator has RuntimeError exception
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_storage = mocker.Mock(spec=SplitStorage)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ event_storage = mocker.Mock(spec=EventStorage)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_producer.get_telemetry_runtime_producer())
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_evaluation_producer, telemetry_producer.get_telemetry_runtime_producer())
+
+ class TelemetrySubmitterMock():
+ async def synchronize_config(*_):
+ pass
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ impmanager,
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ TelemetrySubmitterMock(),
+ None
+ )
+
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ self.imps = None
+ async def put(impressions):
+ self.imps = impressions
+ impression_storage.put = put
+
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global", '{"prop": "val"}'))))
+
+ def eval_with_context(*_):
+ raise RuntimeError()
+ client._evaluator.eval_with_context = eval_with_context
+
+ async def get_feature_flag_names_by_flag_sets(*_):
+ return ["some", "some2"]
+ client._get_feature_flag_names_by_flag_sets = get_feature_flag_names_by_flag_sets
+
+ async def fetch_many(*_):
+ return {"some": from_raw(splits_json['splitChange1_1']['ff']['d'][0])}
+ split_storage.fetch_many = fetch_many
+
+ async def fetch_many_rbs(*_):
+ return {}
+ rb_segment_storage.fetch_many = fetch_many_rbs
+
+ treatment = await client.get_treatment("key", "some")
+ assert(treatment == "on-global")
+ assert(self.imps[0].treatment == "on-global")
+ assert(self.imps[0].label == "fallback - exception")
+
+ self.imps = None
+ treatment = await client.get_treatments("key_m", ["some", "some2"])
+ assert(treatment == {"some": "on-global", "some2": "on-global"})
+ assert(self.imps[0].treatment == "on-global")
+ assert(self.imps[0].label == "fallback - exception")
+ assert(self.imps[1].treatment == "on-global")
+ assert(self.imps[1].label == "fallback - exception")
+
+ assert(await client.get_treatment_with_config("key", "some") == ("on-global", '{"prop": "val"}'))
+ assert(await client.get_treatments_with_config("key_m", ["some", "some2"]) == {"some": ("on-global", '{"prop": "val"}'), "some2": ("on-global", '{"prop": "val"}')})
+ assert(await client.get_treatments_by_flag_set("key_m", "set") == {"some": "on-global", "some2": "on-global"})
+ assert(await client.get_treatments_by_flag_set("key_m", ["set"]) == {"some": "on-global", "some2": "on-global"})
+ assert(await client.get_treatments_with_config_by_flag_set("key_m", "set") == {"some": ("on-global", '{"prop": "val"}'), "some2": ("on-global", '{"prop": "val"}')})
+ assert(await client.get_treatments_with_config_by_flag_sets("key_m", ["set"]) == {"some": ("on-global", '{"prop": "val"}'), "some2": ("on-global", '{"prop": "val"}')})
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global", '{"prop": "val"}'), {'some': FallbackTreatment("on-local")}))
+ treatment = await client.get_treatment("key2", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - exception")
+
+ self.imps = None
+ treatment = await client.get_treatments("key2_m", ["some", "some2"])
+ assert(treatment == {"some": "on-local", "some2": "on-global"})
+ assert_both = 0
+ for imp in self.imps:
+ if imp.feature_name == "some":
+ assert_both += 1
+ assert(imp.treatment == "on-local")
+ assert(imp.label == "fallback - exception")
+ else:
+ assert_both += 1
+ assert(imp.treatment == "on-global")
+ assert(imp.label == "fallback - exception")
+ assert assert_both == 2
+
+ assert(await client.get_treatment_with_config("key", "some") == ("on-local", None))
+ assert(await client.get_treatments_with_config("key_m", ["some", "some2"]) == {"some": ("on-local", None), "some2": ("on-global", '{"prop": "val"}')})
+ assert(await client.get_treatments_by_flag_set("key_m", "set") == {"some": "on-local", "some2": "on-global"})
+ assert(await client.get_treatments_by_flag_set("key_m", ["set"]) == {"some": "on-local", "some2": "on-global"})
+ assert(await client.get_treatments_with_config_by_flag_set("key_m", "set") == {"some": ("on-local", None), "some2": ("on-global", '{"prop": "val"}')})
+ assert(await client.get_treatments_with_config_by_flag_sets("key_m", ["set"]) == {"some": ("on-local", None), "some2": ("on-global", '{"prop": "val"}')})
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ treatment = await client.get_treatment("key3", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - exception")
+
+ self.imps = None
+ treatment = await client.get_treatments("key3_m", ["some", "some2"])
+ assert(treatment == {"some": "on-local", "some2": "control"})
+ assert_both = 0
+ for imp in self.imps:
+ if imp.feature_name == "some":
+ assert_both += 1
+ assert(imp.treatment == "on-local")
+ assert(imp.label == "fallback - exception")
+ else:
+ assert_both += 1
+ assert(imp.treatment == "control")
+ assert(imp.label == "exception")
+ assert assert_both == 2
+
+ assert(await client.get_treatment_with_config("key", "some") == ("on-local", '{"prop": "val"}'))
+ assert(await client.get_treatments_with_config("key_m", ["some", "some2"]) == {"some": ("on-local", '{"prop": "val"}'), "some2": ("control", None)})
+ assert(await client.get_treatments_by_flag_set("key_m", "set") == {"some": "on-local", "some2": "control"})
+ assert(await client.get_treatments_by_flag_set("key_m", ["set"]) == {"some": "on-local", "some2": "control"})
+ assert(await client.get_treatments_with_config_by_flag_set("key_m", "set") == {"some": ("on-local", '{"prop": "val"}'), "some2": ("control", None)})
+ assert(await client.get_treatments_with_config_by_flag_sets("key_m", ["set"]) == {"some": ("on-local", '{"prop": "val"}'), "some2": ("control", None)})
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some2': FallbackTreatment("on-local")}))
+ treatment = await client.get_treatment("key4", "some")
+ assert(treatment == "control")
+ assert(self.imps[0].treatment == "control")
+ assert(self.imps[0].label == "exception")
+
+ try:
+ await factory.destroy()
+ except:
+ pass
+
+ @pytest.mark.asyncio
+ async def test_fallback_treatment_exception(self, mocker):
+ # using fallback when the evaluator has RuntimeError exception
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_storage = mocker.Mock(spec=SplitStorage)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ event_storage = mocker.Mock(spec=EventStorage)
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ impmanager = ImpressionManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_producer.get_telemetry_runtime_producer())
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ impmanager,
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ self.imps = None
+ async def put(impressions):
+ self.imps = impressions
+ impression_storage.put = put
+
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"))))
+
+ def eval_with_context(*_):
+ raise Exception()
+ client._evaluator.eval_with_context = eval_with_context
+
+ async def context_for(*_):
+ return EvaluationContext(
+ {},
+ {},
+ {}
+ )
+ client._context_factory.context_for = context_for
+
+ treatment = await client.get_treatment("key", "some")
+ assert(treatment == "on-global")
+ assert(self.imps[0].treatment == "on-global")
+ assert(self.imps[0].label == "fallback - exception")
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'some': FallbackTreatment("on-local")}))
+ treatment = await client.get_treatment("key2", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - exception")
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some': FallbackTreatment("on-local")}))
+ treatment = await client.get_treatment("key3", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - exception")
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some2': FallbackTreatment("on-local")}))
+ treatment = await client.get_treatment("key4", "some")
+ assert(treatment == "control")
+ assert(self.imps[0].treatment == "control")
+ assert(self.imps[0].label == "exception")
+
+ try:
+ await factory.destroy()
+ except:
+ pass
+
+ @pytest.mark.asyncio
+ async def test_fallback_treatment_not_ready_impressions(self, mocker):
+ # using fallback when the evaluator has RuntimeError exception
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_storage = mocker.Mock(spec=SplitStorage)
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ rb_segment_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ impression_storage = mocker.Mock(spec=ImpressionStorage)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
+ mocker.patch('splitio.client.client.get_latency_bucket_index', new=lambda x: 5)
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ impmanager = ImpressionManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_producer.get_telemetry_runtime_producer())
+ recorder = StandardRecorderAsync(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ async def manager_start_task():
+ pass
+
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ impmanager,
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ manager_start_task
+ )
+
+ self.imps = None
+ async def put(impressions):
+ self.imps = impressions
+ impression_storage.put = put
+
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ client = ClientAsync(factory, recorder, events_manager, True, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"))))
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+
+ async def context_for(*_):
+ return EvaluationContext(
+ {"some": {}},
+ {},
+ {}
+ )
+ client._context_factory.context_for = context_for
+
+ treatment = await client.get_treatment("key", "some")
+ assert(self.imps[0].treatment == "on-global")
+ assert(self.imps[0].label == "fallback - not ready")
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'some': FallbackTreatment("on-local")}))
+ treatment = await client.get_treatment("key2", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - not ready")
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some': FallbackTreatment("on-local")}))
+ treatment = await client.get_treatment("key3", "some")
+ assert(treatment == "on-local")
+ assert(self.imps[0].treatment == "on-local")
+ assert(self.imps[0].label == "fallback - not ready")
+
+ self.imps = None
+ client._fallback_treatment_calculator = FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'some2': FallbackTreatment("on-local")}))
+ treatment = await client.get_treatment("key4", "some")
+ assert(treatment == "control")
+ assert(self.imps[0].treatment == "control")
+ assert(self.imps[0].label == "not ready")
+
+ try:
+ await factory.destroy()
+ except:
+ pass
+
+ @pytest.mark.asyncio
+ async def test_events_subscription(self, mocker):
+ events_manager = mocker.Mock(spec=EventsManagerAsync)
+ self.event = None
+ self.handle = None
+ async def register(sdk_event, callback_handle):
+ self.event = sdk_event
+ self.handle = callback_handle
+ events_manager.register = register
+
+ client = ClientAsync(mocker.Mock(), mocker.Mock(), events_manager, True, FallbackTreatmentCalculator(None))
+ await client.on(SdkEvent.SDK_READY, self.event_callback)
+ assert self.event == SdkEvent.SDK_READY
+ assert self.handle == self.event_callback
+
+ self.event = None
+ await client.on("dd", self.event_callback)
+ assert self.event == None
+
+ await client.on(SdkEvent.SDK_READY, "qwe")
+ assert self.event == None
+
+ async def event_callback(self, metadata):
+ pass
\ No newline at end of file
diff --git a/tests/client/test_config.py b/tests/client/test_config.py
new file mode 100644
index 00000000..e08a1d4b
--- /dev/null
+++ b/tests/client/test_config.py
@@ -0,0 +1,125 @@
+"""Configuration unit tests."""
+# pylint: disable=protected-access,no-self-use,line-too-long
+import pytest
+from splitio.client import config
+from splitio.engine.impressions.impressions import ImpressionsMode
+from splitio.models.fallback_treatment import FallbackTreatment
+from splitio.models.fallback_config import FallbackTreatmentsConfiguration
+
+class ConfigSanitizationTests(object):
+ """Inmemory storage-based integration tests."""
+
+ def test_parse_operation_mode(self):
+ """Make sure operation mode is correctly captured."""
+ assert (config._parse_operation_mode('some', {})) == ('standalone', 'memory')
+ assert (config._parse_operation_mode('localhost', {})) == ('localhost', 'localhost')
+ assert (config._parse_operation_mode('some', {'redisHost': 'x'})) == ('consumer', 'redis')
+ assert (config._parse_operation_mode('some', {'storageType': 'pluggable'})) == ('consumer', 'pluggable')
+ assert (config._parse_operation_mode('some', {'storageType': 'custom2'})) == ('standalone', 'memory')
+
+ def test_sanitize_imp_mode(self):
+ """Test sanitization of impressions mode."""
+ mode, rate = config._sanitize_impressions_mode('memory', 'OPTIMIZED', 1)
+ assert mode == ImpressionsMode.OPTIMIZED
+ assert rate == 60
+
+ mode, rate = config._sanitize_impressions_mode('memory', 'DEBUG', 1)
+ assert mode == ImpressionsMode.DEBUG
+ assert rate == 1
+
+ mode, rate = config._sanitize_impressions_mode('redis', 'OPTIMIZED', 1)
+ assert mode == ImpressionsMode.OPTIMIZED
+ assert rate == 60
+
+ mode, rate = config._sanitize_impressions_mode('redis', 'debug', 1)
+ assert mode == ImpressionsMode.DEBUG
+ assert rate == 1
+
+ mode, rate = config._sanitize_impressions_mode('memory', 'ANYTHING', 200)
+ assert mode == ImpressionsMode.OPTIMIZED
+ assert rate == 200
+
+ mode, rate = config._sanitize_impressions_mode('pluggable', 'ANYTHING', 200)
+ assert mode == ImpressionsMode.OPTIMIZED
+ assert rate == 200
+
+ mode, rate = config._sanitize_impressions_mode('pluggable', 'NONE', 200)
+ assert mode == ImpressionsMode.NONE
+ assert rate == 200
+
+ mode, rate = config._sanitize_impressions_mode('pluggable', 'OPTIMIZED', 200)
+ assert mode == ImpressionsMode.OPTIMIZED
+ assert rate == 200
+
+ mode, rate = config._sanitize_impressions_mode('memory', 43, -1)
+ assert mode == ImpressionsMode.OPTIMIZED
+ assert rate == 60
+
+ mode, rate = config._sanitize_impressions_mode('memory', 'OPTIMIZED')
+ assert mode == ImpressionsMode.OPTIMIZED
+ assert rate == 300
+
+ mode, rate = config._sanitize_impressions_mode('memory', 'DEBUG')
+ assert mode == ImpressionsMode.DEBUG
+ assert rate == 60
+
+ def test_sanitize(self, mocker):
+ """Test sanitization."""
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.config._LOGGER', new=_logger)
+ configs = {}
+ processed = config.sanitize('some', configs)
+ assert processed['redisLocalCacheEnabled'] # check default is True
+ assert processed['flagSetsFilter'] is None
+ assert processed['httpAuthenticateScheme'] is config.AuthenticateScheme.NONE
+
+ processed = config.sanitize('some', {'redisHost': 'x', 'flagSetsFilter': ['set']})
+ assert processed['flagSetsFilter'] is None
+
+ processed = config.sanitize('some', {'storageType': 'pluggable', 'flagSetsFilter': ['set']})
+ assert processed['flagSetsFilter'] is None
+
+ processed = config.sanitize('some', {'httpAuthenticateScheme': 'KERBEROS_spnego'})
+ assert processed['httpAuthenticateScheme'] is config.AuthenticateScheme.KERBEROS_SPNEGO
+
+ processed = config.sanitize('some', {'httpAuthenticateScheme': 'kerberos_proxy'})
+ assert processed['httpAuthenticateScheme'] is config.AuthenticateScheme.KERBEROS_PROXY
+
+ processed = config.sanitize('some', {'httpAuthenticateScheme': 'anything'})
+ assert processed['httpAuthenticateScheme'] is config.AuthenticateScheme.NONE
+
+ processed = config.sanitize('some', {'httpAuthenticateScheme': 'NONE'})
+ assert processed['httpAuthenticateScheme'] is config.AuthenticateScheme.NONE
+
+ _logger.reset_mock()
+ processed = config.sanitize('some', {'fallbackTreatments': 'NONE'})
+ assert processed['fallbackTreatments'] == None
+ assert _logger.warning.mock_calls[1] == mocker.call("Config: fallbackTreatments parameter should be of `FallbackTreatmentsConfiguration` class.")
+
+ _logger.reset_mock()
+ processed = config.sanitize('some', {'fallbackTreatments': FallbackTreatmentsConfiguration(123)})
+ assert processed['fallbackTreatments'].global_fallback_treatment == None
+ assert _logger.warning.mock_calls[1] == mocker.call("Config: global fallbacktreatment parameter is discarded.")
+
+ _logger.reset_mock()
+ processed = config.sanitize('some', {'fallbackTreatments': FallbackTreatmentsConfiguration(FallbackTreatment(123))})
+ assert processed['fallbackTreatments'].global_fallback_treatment == None
+ assert _logger.warning.mock_calls[1] == mocker.call("Config: global fallbacktreatment parameter is discarded.")
+
+ fb = FallbackTreatmentsConfiguration(FallbackTreatment('on'))
+ processed = config.sanitize('some', {'fallbackTreatments': fb})
+ assert processed['fallbackTreatments'].global_fallback_treatment.treatment == fb.global_fallback_treatment.treatment
+ assert processed['fallbackTreatments'].global_fallback_treatment.label == None
+
+ fb = FallbackTreatmentsConfiguration(FallbackTreatment('on'), {"flag": FallbackTreatment("off")})
+ processed = config.sanitize('some', {'fallbackTreatments': fb})
+ assert processed['fallbackTreatments'].global_fallback_treatment.treatment == fb.global_fallback_treatment.treatment
+ assert processed['fallbackTreatments'].by_flag_fallback_treatment["flag"] == fb.by_flag_fallback_treatment["flag"]
+ assert processed['fallbackTreatments'].by_flag_fallback_treatment["flag"].label == None
+
+ _logger.reset_mock()
+ fb = FallbackTreatmentsConfiguration(None, {"flag#%": FallbackTreatment("off"), "flag2": FallbackTreatment("on")})
+ processed = config.sanitize('some', {'fallbackTreatments': fb})
+ assert len(processed['fallbackTreatments'].by_flag_fallback_treatment) == 1
+ assert processed['fallbackTreatments'].by_flag_fallback_treatment.get("flag2") == fb.by_flag_fallback_treatment["flag2"]
+ assert _logger.warning.mock_calls[1] == mocker.call('Config: fallback treatment parameter for feature flag %s is discarded.', 'flag#%')
\ No newline at end of file
diff --git a/tests/client/test_factory.py b/tests/client/test_factory.py
index 0f1cc4a2..1512507c 100644
--- a/tests/client/test_factory.py
+++ b/tests/client/test_factory.py
@@ -1,92 +1,116 @@
"""Split factory test module."""
-#pylint: disable=no-self-use,protected-access,line-too-long,too-many-statements
-#pylint: disable=too-many-locals, too-many-arguments
+# pylint: disable=no-self-use,protected-access,line-too-long,too-many-statements
+# pylint: disable=too-many-locals, too-many-arguments
+import os
import time
import threading
-from splitio.client.listener import ImpressionListenerWrapper
-from splitio.client.factory import get_factory, SplitFactory, _INSTANTIATED_FACTORIES
+import pytest
+import queue
+
+from splitio.optional.loaders import asyncio
+from splitio.client.factory import get_factory, get_factory_async, SplitFactory, _INSTANTIATED_FACTORIES, Status,\
+ _LOGGER as _logger, SplitFactoryAsync
from splitio.client.config import DEFAULT_CONFIG
-from splitio.storage import redis, inmemmory, uwsgi
-from splitio.tasks import events_sync, impressions_sync, split_sync, segment_sync, telemetry_sync
-from splitio.tasks.util import asynctask, workerpool
-from splitio.api.splits import SplitsAPI
-from splitio.api.segments import SegmentsAPI
-from splitio.api.impressions import ImpressionsAPI
-from splitio.api.events import EventsAPI
-from splitio.api.telemetry import TelemetryAPI
+from splitio.engine.telemetry import TelemetryStorageConsumer, TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.engine.impressions.impressions import Manager as ImpressionsManager
+from splitio.engine.impressions.manager import Counter as ImpressionsCounter
+from splitio.engine.impressions.unique_keys_tracker import UniqueKeysTracker, UniqueKeysTrackerAsync
+from splitio.engine.telemetry import TelemetryStorageConsumer, TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.engine.evaluator import Evaluator, EvaluationContext
+from splitio.engine.impressions.strategies import StrategyDebugMode, StrategyNoneMode, StrategyOptimizedMode
+from splitio.events.events_task import EventsTask
+from splitio.events.events_manager import EventsManagerAsync
+from splitio.models.splits import from_raw
+from splitio.models.fallback_config import FallbackTreatmentsConfiguration, FallbackTreatmentCalculator
+from splitio.models.fallback_treatment import FallbackTreatment
+from splitio.models.events import SdkInternalEvent
+from splitio.recorder.recorder import PipelinedRecorder, StandardRecorder, StandardRecorderAsync
+from splitio.storage import redis, inmemmory, pluggable, EventStorage
+from splitio.storage.inmemmory import InMemorySplitStorage, InMemorySegmentStorage, \
+ InMemoryImpressionStorage, InMemoryTelemetryStorage, InMemorySplitStorageAsync, \
+ InMemoryImpressionStorageAsync, InMemorySegmentStorageAsync, InMemoryTelemetryStorageAsync, InMemoryEventStorageAsync, \
+ InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync
+from splitio.sync.manager import Manager, ManagerAsync
+from splitio.sync.synchronizer import Synchronizer, SynchronizerAsync, SplitSynchronizers, SplitTasks
+from splitio.sync.split import SplitSynchronizer, SplitSynchronizerAsync
+from splitio.sync.segment import SegmentSynchronizer, SegmentSynchronizerAsync
+from splitio.storage.adapters.redis import RedisAdapter, RedisPipelineAdapter
+from splitio.tasks.util import asynctask
+from tests.storage.test_pluggable import StorageMockAdapter, StorageMockAdapterAsync
+from tests.integration import splits_json
class SplitFactoryTests(object):
"""Split factory test cases."""
- def test_inmemory_client_creation(self, mocker):
+ def test_flag_sets_counts(self):
+ factory = get_factory("none", config={
+ 'flagSetsFilter': ['set1', 'set2', 'set3']
+ })
+
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets == 3
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets_invalid == 0
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
+
+ factory = get_factory("none", config={
+ 'flagSetsFilter': ['s#et1', 'set2', 'set3']
+ })
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets == 3
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets_invalid == 1
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
+
+ factory = get_factory("none", config={
+ 'flagSetsFilter': ['s#et1', 22, 'set3']
+ })
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets == 3
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets_invalid == 2
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
+
+ def test_inmemory_client_creation_streaming_false(self, mocker):
"""Test that a client with in-memory storage is created correctly."""
- # Setup task mocks
- def _split_task_init_mock(self, api, storage, period, event):
- self._task = mocker.Mock()
- self._api = api
- self._storage = storage
- self._period = period
- self._event = event
- event.set()
- mocker.patch('splitio.client.factory.SplitSynchronizationTask.__init__', new=_split_task_init_mock)
- def _segment_task_init_mock(self, api, storage, split_storage, period, event):
- self._task = mocker.Mock()
- self._worker_pool = mocker.Mock()
- self._api = api
- self._segment_storage = storage
- self._split_storage = split_storage
- self._period = period
- self._event = event
- event.set()
- mocker.patch('splitio.client.factory.SegmentSynchronizationTask.__init__', new=_segment_task_init_mock)
+ # Setup synchronizer
+ def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
+ synchronizer = mocker.Mock(spec=Synchronizer)
+ synchronizer.sync_all.return_values = None
+ self._ready_flag = ready_flag
+ self._synchronizer = synchronizer
+ self._streaming_enabled = False
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ mocker.patch('splitio.sync.manager.Manager.__init__', new=_split_synchronizer)
# Start factory and make assertions
factory = get_factory('some_api_key')
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
assert isinstance(factory._storages['splits'], inmemmory.InMemorySplitStorage)
assert isinstance(factory._storages['segments'], inmemmory.InMemorySegmentStorage)
assert isinstance(factory._storages['impressions'], inmemmory.InMemoryImpressionStorage)
assert factory._storages['impressions']._impressions.maxsize == 10000
assert isinstance(factory._storages['events'], inmemmory.InMemoryEventStorage)
assert factory._storages['events']._events.maxsize == 10000
- assert isinstance(factory._storages['telemetry'], inmemmory.InMemoryTelemetryStorage)
-
- assert isinstance(factory._apis['splits'], SplitsAPI)
- assert factory._apis['splits']._client._timeout == 1.5
- assert isinstance(factory._apis['segments'], SegmentsAPI)
- assert factory._apis['segments']._client._timeout == 1.5
- assert isinstance(factory._apis['impressions'], ImpressionsAPI)
- assert factory._apis['impressions']._client._timeout == 1.5
- assert isinstance(factory._apis['events'], EventsAPI)
- assert factory._apis['events']._client._timeout == 1.5
- assert isinstance(factory._apis['telemetry'], TelemetryAPI)
- assert factory._apis['telemetry']._client._timeout == 1.5
-
- assert isinstance(factory._tasks['splits'], split_sync.SplitSynchronizationTask)
- assert factory._tasks['splits']._period == DEFAULT_CONFIG['featuresRefreshRate']
- assert factory._tasks['splits']._storage == factory._storages['splits']
- assert factory._tasks['splits']._api == factory._apis['splits']
- assert isinstance(factory._tasks['segments'], segment_sync.SegmentSynchronizationTask)
- assert factory._tasks['segments']._period == DEFAULT_CONFIG['segmentsRefreshRate']
- assert factory._tasks['segments']._segment_storage == factory._storages['segments']
- assert factory._tasks['segments']._split_storage == factory._storages['splits']
- assert factory._tasks['segments']._api == factory._apis['segments']
- assert isinstance(factory._tasks['impressions'], impressions_sync.ImpressionsSyncTask)
- assert factory._tasks['impressions']._period == DEFAULT_CONFIG['impressionsRefreshRate']
- assert factory._tasks['impressions']._storage == factory._storages['impressions']
- assert factory._tasks['impressions']._impressions_api == factory._apis['impressions']
- assert isinstance(factory._tasks['events'], events_sync.EventsSyncTask)
- assert factory._tasks['events']._period == DEFAULT_CONFIG['eventsPushRate']
- assert factory._tasks['events']._storage == factory._storages['events']
- assert factory._tasks['events']._events_api == factory._apis['events']
- assert isinstance(factory._tasks['telemetry'], telemetry_sync.TelemetrySynchronizationTask)
- assert factory._tasks['telemetry']._period == DEFAULT_CONFIG['metricsRefreshRate']
- assert factory._tasks['telemetry']._storage == factory._storages['telemetry']
- assert factory._tasks['telemetry']._api == factory._apis['telemetry']
+
+ assert isinstance(factory._sync_manager, Manager)
+ assert isinstance(factory._recorder, StandardRecorder)
+ assert isinstance(factory._recorder._impressions_manager, ImpressionsManager)
+ assert isinstance(factory._recorder._event_sotrage, inmemmory.EventStorage)
+ assert isinstance(factory._recorder._impression_storage, inmemmory.ImpressionStorage)
+
assert factory._labels_enabled is True
- factory.block_until_ready()
- time.sleep(1) # give a chance for the bg thread to set the ready status
+ try:
+ factory.block_until_ready(1)
+ except:
+ pass
assert factory.ready
factory.destroy()
@@ -94,7 +118,7 @@ def test_redis_client_creation(self, mocker):
"""Test that a client with redis storage is created correctly."""
strict_redis_mock = mocker.Mock()
mocker.patch('splitio.storage.adapters.redis.StrictRedis', new=strict_redis_mock)
-
+ fallback_treatments_configuration = FallbackTreatmentsConfiguration(FallbackTreatment("on"))
config = {
'labelsEnabled': False,
'impressionListener': 123,
@@ -102,16 +126,14 @@ def test_redis_client_creation(self, mocker):
'redisPort': 1234,
'redisDb': 1,
'redisPassword': 'some_password',
+ 'redisUsername': 'redis_user',
'redisSocketTimeout': 123,
'redisSocketConnectTimeout': 123,
'redisSocketKeepalive': 123,
'redisSocketKeepaliveOptions': False,
'redisConnectionPool': False,
'redisUnixSocketPath': '/some_path',
- 'redisEncoding': 'ascii',
'redisEncodingErrors': 'non-strict',
- 'redisCharset': 'ascii',
- 'redisErrors':True,
'redisDecodeResponses': True,
'redisRetryOnTimeout': True,
'redisSsl': True,
@@ -120,27 +142,33 @@ def test_redis_client_creation(self, mocker):
'redisSslCertReqs': 'some_cert_req',
'redisSslCaCerts': 'some_ca_cert',
'redisMaxConnections': 999,
+ 'flagSetsFilter': ['set_1'],
+ 'fallbackTreatments': fallback_treatments_configuration
}
factory = get_factory('some_api_key', config=config)
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
assert isinstance(factory._get_storage('splits'), redis.RedisSplitStorage)
assert isinstance(factory._get_storage('segments'), redis.RedisSegmentStorage)
assert isinstance(factory._get_storage('impressions'), redis.RedisImpressionsStorage)
assert isinstance(factory._get_storage('events'), redis.RedisEventsStorage)
- assert isinstance(factory._get_storage('telemetry'), redis.RedisTelemetryStorage)
- assert factory._apis == {}
- assert factory._tasks == {}
+ assert factory._get_storage('splits').flag_set_filter.flag_sets == set([])
+ assert factory._fallback_treatment_calculator.fallback_treatments_configuration.global_fallback_treatment.treatment == fallback_treatments_configuration.global_fallback_treatment.treatment
adapter = factory._get_storage('splits')._redis
assert adapter == factory._get_storage('segments')._redis
assert adapter == factory._get_storage('impressions')._redis
assert adapter == factory._get_storage('events')._redis
- assert adapter == factory._get_storage('telemetry')._redis
- assert strict_redis_mock.mock_calls == [mocker.call(
+ assert strict_redis_mock.mock_calls[0] == mocker.call(
host='some_host',
port=1234,
db=1,
+ username='redis_user',
password='some_password',
socket_timeout=123,
socket_connect_timeout=123,
@@ -148,10 +176,8 @@ def test_redis_client_creation(self, mocker):
socket_keepalive_options=False,
connection_pool=False,
unix_socket_path='/some_path',
- encoding='ascii',
+ encoding='utf-8',
encoding_errors='non-strict',
- charset='ascii',
- errors=True,
decode_responses=True,
retry_on_timeout=True,
ssl=True,
@@ -159,220 +185,321 @@ def test_redis_client_creation(self, mocker):
ssl_certfile='some_cert_file',
ssl_cert_reqs='some_cert_req',
ssl_ca_certs='some_ca_cert',
- max_connections=999
- )]
+ max_connections=999,
+ )
assert factory._labels_enabled is False
- assert isinstance(factory._impression_listener, ImpressionListenerWrapper)
- factory.block_until_ready()
- time.sleep(1) # give a chance for the bg thread to set the ready status
- assert factory.ready
- factory.destroy()
+ assert isinstance(factory._recorder, PipelinedRecorder)
+ assert isinstance(factory._recorder._impressions_manager, ImpressionsManager)
+ assert isinstance(factory._recorder._make_pipe(), RedisPipelineAdapter)
+ assert isinstance(factory._recorder._event_sotrage, redis.RedisEventsStorage)
+ assert isinstance(factory._recorder._impression_storage, redis.RedisImpressionsStorage)
-
- def test_uwsgi_client_creation(self):
- """Test that a client with redis storage is created correctly."""
- factory = get_factory('some_api_key', config={'uwsgiClient': True})
- assert isinstance(factory._get_storage('splits'), uwsgi.UWSGISplitStorage)
- assert isinstance(factory._get_storage('segments'), uwsgi.UWSGISegmentStorage)
- assert isinstance(factory._get_storage('impressions'), uwsgi.UWSGIImpressionStorage)
- assert isinstance(factory._get_storage('events'), uwsgi.UWSGIEventStorage)
- assert isinstance(factory._get_storage('telemetry'), uwsgi.UWSGITelemetryStorage)
- assert factory._apis == {}
- assert factory._tasks == {}
- assert factory._labels_enabled is True
- assert factory._impression_listener is None
- factory.block_until_ready()
- time.sleep(1) # give a chance for the bg thread to set the ready status
+ try:
+ factory.block_until_ready(1)
+ except:
+ pass
assert factory.ready
factory.destroy()
def test_destroy(self, mocker):
"""Test that tasks are shutdown and data is flushed when destroy is called."""
- def _split_task_init_mock(self, api, storage, period, event):
- self._task = mocker.Mock()
- self._api = api
- self._storage = storage
+
+ def stop_mock():
+ return
+
+ split_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
+ split_async_task_mock.stop.side_effect = stop_mock
+
+ def _split_task_init_mock(self, synchronize_splits, period):
+ self._task = split_async_task_mock
self._period = period
- self._event = event
- event.set()
- mocker.patch('splitio.client.factory.SplitSynchronizationTask.__init__', new=_split_task_init_mock)
-
- def _segment_task_init_mock(self, api, storage, split_storage, period, event):
- self._task = mocker.Mock()
- self._worker_pool = mocker.Mock()
- self._api = api
- self._segment_storage = storage
- self._split_storage = split_storage
+ mocker.patch('splitio.client.factory.SplitSynchronizationTask.__init__',
+ new=_split_task_init_mock)
+
+ segment_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
+ segment_async_task_mock.stop.side_effect = stop_mock
+
+ def _segment_task_init_mock(self, synchronize_segments, period):
+ self._task = segment_async_task_mock
self._period = period
- self._event = event
- event.set()
- mocker.patch('splitio.client.factory.SegmentSynchronizationTask.__init__', new=_segment_task_init_mock)
+ mocker.patch('splitio.client.factory.SegmentSynchronizationTask.__init__',
+ new=_segment_task_init_mock)
imp_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
- def _imppression_task_init_mock(self, api, storage, refresh_rate, bulk_size):
- self._logger = mocker.Mock()
- self._impressions_api = api
- self._storage = storage
- self._period = refresh_rate
+ imp_async_task_mock.stop.side_effect = stop_mock
+
+ def _imppression_task_init_mock(self, synchronize_impressions, period):
+ self._period = period
self._task = imp_async_task_mock
- self._failed = mocker.Mock()
- self._bulk_size = bulk_size
- mocker.patch('splitio.client.factory.ImpressionsSyncTask.__init__', new=_imppression_task_init_mock)
+ mocker.patch('splitio.client.factory.ImpressionsSyncTask.__init__',
+ new=_imppression_task_init_mock)
evt_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
- def _event_task_init_mock(self, api, storage, refresh_rate, bulk_size):
- self._logger = mocker.Mock()
- self._impressions_api = api
- self._storage = storage
- self._period = refresh_rate
+ evt_async_task_mock.stop.side_effect = stop_mock
+
+ def _event_task_init_mock(self, synchronize_events, period):
+ self._period = period
self._task = evt_async_task_mock
- self._failed = mocker.Mock()
- self._bulk_size = bulk_size
mocker.patch('splitio.client.factory.EventsSyncTask.__init__', new=_event_task_init_mock)
+ imp_count_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
+ imp_count_async_task_mock.stop.side_effect = stop_mock
+
+ def _imppression_count_task_init_mock(self, synchronize_counters):
+ self._task = imp_count_async_task_mock
+ mocker.patch('splitio.client.factory.ImpressionsCountSyncTask.__init__',
+ new=_imppression_count_task_init_mock)
+
+ telemetry_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
+ telemetry_async_task_mock.stop.side_effect = stop_mock
+
+ def _telemetry_task_init_mock(self, synchronize_telemetry, synchronize_telemetry2):
+ self._task = telemetry_async_task_mock
+ mocker.patch('splitio.client.factory.TelemetrySyncTask.__init__',
+ new=_telemetry_task_init_mock)
+
+ split_sync = mocker.Mock(spec=SplitSynchronizer)
+ split_sync.synchronize_splits.return_value = []
+ segment_sync = mocker.Mock(spec=SegmentSynchronizer)
+ segment_sync.synchronize_segments.return_values = None
+ syncs = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock(), mocker.Mock())
+ tasks = SplitTasks(split_async_task_mock, segment_async_task_mock, imp_async_task_mock,
+ evt_async_task_mock, imp_count_async_task_mock, telemetry_async_task_mock)
+
+ # Setup synchronizer
+ def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
+ synchronizer = Synchronizer(syncs, tasks)
+ self._ready_flag = ready_flag
+ self._synchronizer = synchronizer
+ self._streaming_enabled = False
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ mocker.patch('splitio.sync.manager.Manager.__init__', new=_split_synchronizer)
+
# Start factory and make assertions
+ # Using invalid key should result in a timeout exception
factory = get_factory('some_api_key')
- factory.block_until_ready()
- time.sleep(1) # give a chance for the bg thread to set the ready status
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ try:
+ factory.block_until_ready(1)
+ except:
+ pass
assert factory.ready
assert factory.destroyed is False
factory.destroy()
- assert imp_async_task_mock.stop.mock_calls == [mocker.call(None)]
- assert evt_async_task_mock.stop.mock_calls == [mocker.call(None)]
+ assert len(imp_async_task_mock.stop.mock_calls) == 1
+ assert len(evt_async_task_mock.stop.mock_calls) == 1
+ assert len(imp_count_async_task_mock.stop.mock_calls) == 1
assert factory.destroyed is True
def test_destroy_with_event(self, mocker):
"""Test that tasks are shutdown and data is flushed when destroy is called."""
- spl_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
- def _split_task_init_mock(self, api, storage, period, event):
- self._task = spl_async_task_mock
- self._api = api
- self._storage = storage
- self._period = period
- self._event = event
+
+ def stop_mock(event):
+ time.sleep(0.1)
event.set()
- mocker.patch('splitio.client.factory.SplitSynchronizationTask.__init__', new=_split_task_init_mock)
-
- sgm_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
- worker_pool_mock = mocker.Mock(spec=workerpool.WorkerPool)
- def _segment_task_init_mock(self, api, storage, split_storage, period, event):
- self._task = sgm_async_task_mock
- self._worker_pool = worker_pool_mock
- self._api = api
- self._segment_storage = storage
- self._split_storage = split_storage
+ return
+
+ def stop_mock_2():
+ return
+
+ split_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
+ split_async_task_mock.stop.side_effect = stop_mock_2
+
+ def _split_task_init_mock(self, synchronize_splits, period):
+ self._task = split_async_task_mock
self._period = period
- self._event = event
- event.set()
- mocker.patch('splitio.client.factory.SegmentSynchronizationTask.__init__', new=_segment_task_init_mock)
+ mocker.patch('splitio.client.factory.SplitSynchronizationTask.__init__',
+ new=_split_task_init_mock)
+
+ segment_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
+ segment_async_task_mock.stop.side_effect = stop_mock_2
+
+ def _segment_task_init_mock(self, synchronize_segments, period):
+ self._task = segment_async_task_mock
+ self._period = period
+ mocker.patch('splitio.client.factory.SegmentSynchronizationTask.__init__',
+ new=_segment_task_init_mock)
imp_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
- def _imppression_task_init_mock(self, api, storage, refresh_rate, bulk_size):
- self._logger = mocker.Mock()
- self._impressions_api = api
- self._storage = storage
- self._period = refresh_rate
+ imp_async_task_mock.stop.side_effect = stop_mock
+
+ def _imppression_task_init_mock(self, synchronize_impressions, period):
+ self._period = period
self._task = imp_async_task_mock
- self._failed = mocker.Mock()
- self._bulk_size = bulk_size
- mocker.patch('splitio.client.factory.ImpressionsSyncTask.__init__', new=_imppression_task_init_mock)
+ mocker.patch('splitio.client.factory.ImpressionsSyncTask.__init__',
+ new=_imppression_task_init_mock)
evt_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
- def _event_task_init_mock(self, api, storage, refresh_rate, bulk_size):
- self._logger = mocker.Mock()
- self._impressions_api = api
- self._storage = storage
- self._period = refresh_rate
+ evt_async_task_mock.stop.side_effect = stop_mock
+
+ def _event_task_init_mock(self, synchronize_events, period):
+ self._period = period
self._task = evt_async_task_mock
- self._failed = mocker.Mock()
- self._bulk_size = bulk_size
mocker.patch('splitio.client.factory.EventsSyncTask.__init__', new=_event_task_init_mock)
- tmt_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
- def _telemetry_task_init_mock(self, api, storage, refresh_rate):
- self._task = tmt_async_task_mock
- self._logger = mocker.Mock()
- self._api = api
- self._storage = storage
- self._period = refresh_rate
- mocker.patch('splitio.client.factory.TelemetrySynchronizationTask.__init__', new=_telemetry_task_init_mock)
+ imp_count_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
+ imp_count_async_task_mock.stop.side_effect = stop_mock
+
+ def _imppression_count_task_init_mock(self, synchronize_counters):
+ self._task = imp_count_async_task_mock
+ mocker.patch('splitio.client.factory.ImpressionsCountSyncTask.__init__',
+ new=_imppression_count_task_init_mock)
+
+ telemetry_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask)
+ telemetry_async_task_mock.stop.side_effect = stop_mock
+
+ def _telemetry_task_init_mock(self, synchronize_telemetry, synchronize_telemetry2):
+ self._task = telemetry_async_task_mock
+ mocker.patch('splitio.client.factory.TelemetrySyncTask.__init__',
+ new=_telemetry_task_init_mock)
+
+ internal_event_task_mock = mocker.Mock(spec=EventsTask)
+ internal_event_task_mock.stop.side_effect = stop_mock_2
+ internal_event_task_mock.start.side_effect = stop_mock_2
+
+ split_sync = mocker.Mock(spec=SplitSynchronizer)
+ split_sync.synchronize_splits.return_value = []
+ segment_sync = mocker.Mock(spec=SegmentSynchronizer)
+ segment_sync.synchronize_segments.return_values = None
+ syncs = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock(), mocker.Mock())
+ tasks = SplitTasks(split_async_task_mock, segment_async_task_mock, imp_async_task_mock,
+ evt_async_task_mock, imp_count_async_task_mock, telemetry_async_task_mock, None, None, internal_event_task_mock)
+
+ # Setup synchronizer
+ def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
+ synchronizer = Synchronizer(syncs, tasks)
+ self._ready_flag = ready_flag
+ self._synchronizer = synchronizer
+ self._streaming_enabled = False
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ mocker.patch('splitio.sync.manager.Manager.__init__', new=_split_synchronizer)
# Start factory and make assertions
factory = get_factory('some_api_key')
- assert factory.destroyed is False
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
- factory.block_until_ready()
- time.sleep(1) # give a chance for the bg thread to set the ready status
- assert factory.ready
+ try:
+ factory.block_until_ready(1)
+ except:
+ pass
+ assert factory._status == Status.READY
+ assert factory.destroyed is False
event = threading.Event()
factory.destroy(event)
+ time.sleep(1)
+ assert event.is_set()
+ assert len(imp_async_task_mock.stop.mock_calls) == 1
+ assert len(evt_async_task_mock.stop.mock_calls) == 1
+ assert len(imp_count_async_task_mock.stop.mock_calls) == 1
+ assert factory.destroyed is True
- # When destroy is called an event is created and passed to each task when
- # stop() is called. We will extract those events assert their type, and assert that
- # by setting them, the main event gets set.
- splits_event = spl_async_task_mock.stop.mock_calls[0][1][0]
- segments_event = worker_pool_mock.stop.mock_calls[0][1][0] # Segment task stops when wp finishes.
- impressions_event = imp_async_task_mock.stop.mock_calls[0][1][0]
- events_event = evt_async_task_mock.stop.mock_calls[0][1][0]
- telemetry_event = tmt_async_task_mock.stop.mock_calls[0][1][0]
+ def test_destroy_with_event_redis(self, mocker):
+ def _make_factory_with_apikey(apikey, *_, **__):
+ return SplitFactory(apikey, {}, True, mocker.Mock(spec=ImpressionsManager), None, mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
- # python2 & 3 compatibility
- try:
- from threading import _Event as __EVENT_CLASS
- except ImportError:
- from threading import Event as __EVENT_CLASS
-
- assert isinstance(splits_event, __EVENT_CLASS)
- assert isinstance(segments_event, __EVENT_CLASS)
- assert isinstance(impressions_event, __EVENT_CLASS)
- assert isinstance(events_event, __EVENT_CLASS)
- assert isinstance(telemetry_event, __EVENT_CLASS)
- assert not event.is_set()
-
- splits_event.set()
- segments_event.set()
- impressions_event.set()
- events_event.set()
- telemetry_event.set()
-
- time.sleep(1) # I/O wait to trigger context switch, to give the waiting thread
- # a chance to run and set the main event.
+ factory_module_logger = mocker.Mock()
+ build_redis = mocker.Mock()
+ build_redis.side_effect = _make_factory_with_apikey
+ mocker.patch('splitio.client.factory._LOGGER', new=factory_module_logger)
+ mocker.patch('splitio.client.factory._build_redis_factory', new=build_redis)
- assert event.is_set()
+ config = {
+ 'redisDb': 0,
+ 'redisHost': 'localhost',
+ 'redisPosrt': 6379,
+ }
+
+ factory = get_factory("none", config=config)
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
+ assert factory.destroyed
+ assert len(build_redis.mock_calls) == 1
+
+ factory = get_factory("none", config=config)
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ factory.destroy(None)
+ time.sleep(0.1)
assert factory.destroyed
+ assert len(build_redis.mock_calls) == 2
def test_multiple_factories(self, mocker):
"""Test multiple factories instantiation and tracking."""
+ sdk_ready_flag = threading.Event()
+
+ def _init(self, ready_flag, some, auth_api, streaming_enabled, telemetry_runtime_producer, telemetry_init_consumer, sse_url=None):
+ self._ready_flag = ready_flag
+ self._synchronizer = mocker.Mock(spec=Synchronizer)
+ self._streaming_enabled = False
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ self._telemetry_init_consumer = telemetry_init_consumer
+ mocker.patch('splitio.sync.manager.Manager.__init__', new=_init)
+
+ def _start(self, *args, **kwargs):
+ sdk_ready_flag.set()
+ mocker.patch('splitio.sync.manager.Manager.start', new=_start)
+
+ def _stop(self, *args, **kwargs):
+ pass
+ mocker.patch('splitio.sync.manager.Manager.stop', new=_stop)
+
+ mockManager = Manager(sdk_ready_flag, mocker.Mock(), mocker.Mock(), False, mocker.Mock(), mocker.Mock())
+
def _make_factory_with_apikey(apikey, *_, **__):
- return SplitFactory(apikey, {}, True)
+ return SplitFactory(apikey, {}, True, mocker.Mock(spec=StandardRecorder), mocker.Mock(), mocker.Mock(), mockManager, mocker.Mock(), mocker.Mock(), mocker.Mock())
factory_module_logger = mocker.Mock()
build_in_memory = mocker.Mock()
build_in_memory.side_effect = _make_factory_with_apikey
build_redis = mocker.Mock()
build_redis.side_effect = _make_factory_with_apikey
- build_uwsgi = mocker.Mock()
- build_uwsgi.side_effect = _make_factory_with_apikey
build_localhost = mocker.Mock()
build_localhost.side_effect = _make_factory_with_apikey
mocker.patch('splitio.client.factory._LOGGER', new=factory_module_logger)
mocker.patch('splitio.client.factory._build_in_memory_factory', new=build_in_memory)
mocker.patch('splitio.client.factory._build_redis_factory', new=build_redis)
- mocker.patch('splitio.client.factory._build_uwsgi_factory', new=build_uwsgi)
mocker.patch('splitio.client.factory._build_localhost_factory', new=build_localhost)
_INSTANTIATED_FACTORIES.clear() # Clear all factory counters for testing purposes
factory1 = get_factory('some_api_key')
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory1._telemetry_submitter = TelemetrySubmitterMock()
+
assert _INSTANTIATED_FACTORIES['some_api_key'] == 1
assert factory_module_logger.warning.mock_calls == []
factory2 = get_factory('some_api_key')
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory2._telemetry_submitter = TelemetrySubmitterMock()
+
assert _INSTANTIATED_FACTORIES['some_api_key'] == 2
assert factory_module_logger.warning.mock_calls == [mocker.call(
- "factory instantiation: You already have %d %s with this API Key. "
+ "factory instantiation: You already have %d %s with this SDK Key. "
"We recommend keeping only one instance of the factory at all times "
"(Singleton pattern) and reusing it throughout your application.",
1,
@@ -381,9 +508,14 @@ def _make_factory_with_apikey(apikey, *_, **__):
factory_module_logger.reset_mock()
factory3 = get_factory('some_api_key')
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory3._telemetry_submitter = TelemetrySubmitterMock()
+
assert _INSTANTIATED_FACTORIES['some_api_key'] == 3
assert factory_module_logger.warning.mock_calls == [mocker.call(
- "factory instantiation: You already have %d %s with this API Key. "
+ "factory instantiation: You already have %d %s with this SDK Key. "
"We recommend keeping only one instance of the factory at all times "
"(Singleton pattern) and reusing it throughout your application.",
2,
@@ -392,6 +524,11 @@ def _make_factory_with_apikey(apikey, *_, **__):
factory_module_logger.reset_mock()
factory4 = get_factory('some_other_api_key')
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory4._telemetry_submitter = TelemetrySubmitterMock()
+
assert _INSTANTIATED_FACTORIES['some_api_key'] == 3
assert _INSTANTIATED_FACTORIES['some_other_api_key'] == 1
assert factory_module_logger.warning.mock_calls == [mocker.call(
@@ -406,6 +543,572 @@ def _make_factory_with_apikey(apikey, *_, **__):
event.wait()
assert _INSTANTIATED_FACTORIES['some_other_api_key'] == 1
assert _INSTANTIATED_FACTORIES['some_api_key'] == 2
- factory2.destroy()
- factory3.destroy()
- factory4.destroy()
+ event = threading.Event()
+ factory2.destroy(event)
+ event.wait()
+ event = threading.Event()
+ factory3.destroy(event)
+ event.wait()
+ event = threading.Event()
+ factory4.destroy(event)
+ event.wait()
+
+ def test_uwsgi_preforked(self, mocker):
+ """Test preforked initializations."""
+
+ def clear_impressions():
+ clear_impressions._called += 1
+
+ def clear_events():
+ clear_events._called += 1
+
+ clear_impressions._called = 0
+ clear_events._called = 0
+ split_storage = mocker.Mock(spec=inmemmory.SplitStorage)
+ segment_storage = mocker.Mock(spec=inmemmory.SegmentStorage)
+ impression_storage = mocker.Mock(spec=inmemmory.ImpressionStorage)
+ impression_storage.clear.side_effect = clear_impressions
+ event_storage = mocker.Mock(spec=inmemmory.EventStorage)
+ event_storage.clear.side_effect = clear_events
+
+ def _get_storage_mock(self, name):
+ return {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage,
+ }[name]
+
+ mocker.patch('splitio.client.factory.SplitFactory._get_storage', new=_get_storage_mock)
+
+ sync_all_mock = mocker.Mock()
+ mocker.patch('splitio.sync.synchronizer.Synchronizer.sync_all', new=sync_all_mock)
+
+ start_mock = mocker.Mock()
+ mocker.patch('splitio.sync.manager.Manager.start', new=start_mock)
+
+ recreate_mock = mocker.Mock()
+ mocker.patch('splitio.sync.manager.Manager.recreate', new=recreate_mock)
+
+ config = {
+ 'preforkedInitialization': True,
+ }
+ factory = get_factory("none", config=config)
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ try:
+ factory.block_until_ready(10)
+ except:
+ pass
+ assert factory._status == Status.WAITING_FORK
+ assert len(sync_all_mock.mock_calls) == 1
+ assert len(start_mock.mock_calls) == 0
+
+ factory.resume()
+ assert len(recreate_mock.mock_calls) == 1
+ assert len(start_mock.mock_calls) == 1
+
+ assert clear_impressions._called == 1
+ assert clear_events._called == 1
+ factory.destroy()
+ time.sleep(0.1)
+ assert factory.destroyed
+
+ def test_error_prefork(self, mocker):
+ """Test not handling fork."""
+ expected_msg = [
+ mocker.call('Cannot call resume')
+ ]
+
+ filename = os.path.join(os.path.dirname(__file__), '../integration/files', 'file2.yaml')
+ factory = get_factory('localhost', config={'splitFile': filename})
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ try:
+ factory.block_until_ready(1)
+ except:
+ pass
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.factory._LOGGER', new=_logger)
+ factory.resume()
+ assert _logger.warning.mock_calls == expected_msg
+ factory.destroy()
+
+ def test_pluggable_client_creation(self, mocker):
+ """Test that a client with pluggable storage is created correctly."""
+ config = {
+ 'labelsEnabled': False,
+ 'impressionListener': 123,
+ 'storageType': 'pluggable',
+ 'storageWrapper': StorageMockAdapter(),
+ 'flagSetsFilter': ['set_1']
+ }
+ factory = get_factory('some_api_key', config=config)
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ assert isinstance(factory._get_storage('splits'), pluggable.PluggableSplitStorage)
+ assert isinstance(factory._get_storage('segments'), pluggable.PluggableSegmentStorage)
+ assert isinstance(factory._get_storage('impressions'), pluggable.PluggableImpressionsStorage)
+ assert isinstance(factory._get_storage('events'), pluggable.PluggableEventsStorage)
+ assert factory._get_storage('splits').flag_set_filter.flag_sets == set([])
+
+ adapter = factory._get_storage('splits')._pluggable_adapter
+ assert adapter == factory._get_storage('segments')._pluggable_adapter
+ assert adapter == factory._get_storage('impressions')._pluggable_adapter
+ assert adapter == factory._get_storage('events')._pluggable_adapter
+
+ assert factory._labels_enabled is False
+ assert isinstance(factory._recorder, StandardRecorder)
+ assert isinstance(factory._recorder._impressions_manager, ImpressionsManager)
+ assert isinstance(factory._recorder._event_sotrage, pluggable.PluggableEventsStorage)
+ assert isinstance(factory._recorder._impression_storage, pluggable.PluggableImpressionsStorage)
+
+ try:
+ factory.block_until_ready(1)
+ except:
+ pass
+ assert factory.ready
+ factory.destroy()
+ time.sleep(0.1)
+ assert factory.destroyed
+
+ def test_destroy_with_event_pluggable(self, mocker):
+ config = {
+ 'labelsEnabled': False,
+ 'impressionListener': 123,
+ 'storageType': 'pluggable',
+ 'storageWrapper': StorageMockAdapter()
+ }
+
+ factory = get_factory("none", config=config)
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
+ assert factory.destroyed
+
+ factory = get_factory("none", config=config)
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ factory.destroy(None)
+ time.sleep(0.1)
+ assert factory.destroyed
+
+ def test_internal_ready_event_notification(self, mocker):
+ """Test that a client with in-memory storage is sending internal events correctly."""
+ # Setup synchronizer
+ def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
+ synchronizer = mocker.Mock(spec=Synchronizer)
+ synchronizer.sync_all.return_values = None
+ self._ready_flag = ready_flag
+ self._synchronizer = synchronizer
+ self._streaming_enabled = False
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ mocker.patch('splitio.sync.manager.Manager.__init__', new=_split_synchronizer)
+
+ # Start factory and make assertions
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
+ event_storage = mocker.Mock(spec=EventStorage)
+
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+ recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory("some key",
+ {'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': impression_storage,
+ 'events': event_storage},
+ mocker.Mock(),
+ recorder,
+ events_queue,
+ mocker.Mock(),
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ try:
+ factory.block_until_ready(1)
+ except:
+ pass
+
+ assert factory.ready
+ event = events_queue.get()
+ assert event.internal_event == SdkInternalEvent.SDK_READY
+ assert event.metadata == None
+ factory.destroy()
+
+ def test_uwsgi_forked_client_creation(self):
+ """Test client with preforked initialization."""
+ # Invalid API Key with preforked should exit after 3 attempts.
+ factory = get_factory('some_api_key', config={'preforkedInitialization': True})
+ class TelemetrySubmitterMock():
+ def synchronize_config(*_):
+ pass
+ factory._telemetry_submitter = TelemetrySubmitterMock()
+
+ assert isinstance(factory._storages['splits'], inmemmory.InMemorySplitStorage)
+ assert isinstance(factory._storages['segments'], inmemmory.InMemorySegmentStorage)
+ assert isinstance(factory._storages['impressions'], inmemmory.InMemoryImpressionStorage)
+ assert factory._storages['impressions']._impressions.maxsize == 10000
+ assert isinstance(factory._storages['events'], inmemmory.InMemoryEventStorage)
+ assert factory._storages['events']._events.maxsize == 10000
+
+ assert isinstance(factory._sync_manager, Manager)
+
+ assert isinstance(factory._recorder, StandardRecorder)
+ assert isinstance(factory._recorder._impressions_manager, ImpressionsManager)
+ assert isinstance(factory._recorder._event_sotrage, inmemmory.EventStorage)
+ assert isinstance(factory._recorder._impression_storage, inmemmory.ImpressionStorage)
+
+ assert factory._status == Status.WAITING_FORK
+ factory.destroy()
+ time.sleep(0.1)
+ assert factory.destroyed
+
+class SplitFactoryAsyncTests(object):
+ """Split factory async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_flag_sets_counts(self):
+ fallback_treatments_configuration = FallbackTreatmentsConfiguration(FallbackTreatment("on"))
+ factory = await get_factory_async("none", config={
+ 'flagSetsFilter': ['set1', 'set2', 'set3'],
+ 'streamEnabled': False,
+ 'fallbackTreatments': fallback_treatments_configuration
+ })
+ assert factory._fallback_treatment_calculator.fallback_treatments_configuration.global_fallback_treatment.treatment == fallback_treatments_configuration.global_fallback_treatment.treatment
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets == 3
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets_invalid == 0
+ await factory.destroy()
+
+ factory = await get_factory_async("none", config={
+ 'flagSetsFilter': ['s#et1', 'set2', 'set3']
+ })
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets == 3
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets_invalid == 1
+ await factory.destroy()
+
+ factory = await get_factory_async("none", config={
+ 'flagSetsFilter': ['s#et1', 22, 'set3']
+ })
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets == 3
+ assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets_invalid == 2
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_inmemory_client_creation_streaming_false_async(self, mocker):
+ """Test that a client with in-memory storage is created correctly for async."""
+ # Setup synchronizer
+ def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
+ synchronizer = mocker.Mock(spec=SynchronizerAsync)
+ async def sync_all(*_):
+ return None
+ synchronizer.sync_all = sync_all
+
+ def start_periodic_fetching():
+ pass
+ synchronizer.start_periodic_fetching = start_periodic_fetching
+
+ self._ready_flag = ready_flag
+ self._synchronizer = synchronizer
+ self._streaming_enabled = False
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ mocker.patch('splitio.sync.manager.ManagerAsync.__init__', new=_split_synchronizer)
+
+ async def synchronize_config(*_):
+ pass
+ mocker.patch('splitio.sync.telemetry.InMemoryTelemetrySubmitterAsync.synchronize_config', new=synchronize_config)
+
+ # Start factory and make assertions
+ factory2 = await get_factory_async('some_api_key', config={'streamingEmabled': False})
+
+ assert isinstance(factory2, SplitFactoryAsync)
+ assert isinstance(factory2._storages['splits'], inmemmory.InMemorySplitStorageAsync)
+ assert isinstance(factory2._storages['segments'], inmemmory.InMemorySegmentStorageAsync)
+ assert isinstance(factory2._storages['impressions'], inmemmory.InMemoryImpressionStorageAsync)
+ assert factory2._storages['impressions']._impressions.maxsize == 10000
+ assert isinstance(factory2._storages['events'], inmemmory.InMemoryEventStorageAsync)
+ assert factory2._storages['events']._events.maxsize == 10000
+
+ assert isinstance(factory2._sync_manager, ManagerAsync)
+
+ assert isinstance(factory2._recorder, StandardRecorderAsync)
+ assert isinstance(factory2._recorder._impressions_manager, ImpressionsManager)
+ assert isinstance(factory2._recorder._event_sotrage, inmemmory.EventStorage)
+ assert isinstance(factory2._recorder._impression_storage, inmemmory.ImpressionStorage)
+
+ assert factory2._labels_enabled is True
+ try:
+ await factory2.block_until_ready(1)
+ except:
+ pass
+ assert factory2._status == Status.READY
+ await factory2.destroy()
+
+ @pytest.mark.asyncio
+ async def test_destroy_async(self, mocker):
+ """Test that tasks are shutdown and data is flushed when destroy is called."""
+
+ async def stop_mock():
+ return
+
+ split_async_task_mock = mocker.Mock(spec=asynctask.AsyncTaskAsync)
+ split_async_task_mock.stop.side_effect = stop_mock
+
+ def _split_task_init_mock(self, synchronize_splits, period):
+ self._task = split_async_task_mock
+ self._period = period
+ mocker.patch('splitio.client.factory.SplitSynchronizationTaskAsync.__init__',
+ new=_split_task_init_mock)
+
+ segment_async_task_mock = mocker.Mock(spec=asynctask.AsyncTaskAsync)
+ segment_async_task_mock.stop.side_effect = stop_mock
+
+ def _segment_task_init_mock(self, synchronize_segments, period):
+ self._task = segment_async_task_mock
+ self._period = period
+ mocker.patch('splitio.client.factory.SegmentSynchronizationTaskAsync.__init__',
+ new=_segment_task_init_mock)
+
+ imp_async_task_mock = mocker.Mock(spec=asynctask.AsyncTaskAsync)
+ imp_async_task_mock.stop.side_effect = stop_mock
+
+ def _imppression_task_init_mock(self, synchronize_impressions, period):
+ self._period = period
+ self._task = imp_async_task_mock
+ mocker.patch('splitio.client.factory.ImpressionsSyncTaskAsync.__init__',
+ new=_imppression_task_init_mock)
+
+ evt_async_task_mock = mocker.Mock(spec=asynctask.AsyncTaskAsync)
+ evt_async_task_mock.stop.side_effect = stop_mock
+
+ def _event_task_init_mock(self, synchronize_events, period):
+ self._period = period
+ self._task = evt_async_task_mock
+ mocker.patch('splitio.client.factory.EventsSyncTaskAsync.__init__', new=_event_task_init_mock)
+
+ imp_count_async_task_mock = mocker.Mock(spec=asynctask.AsyncTaskAsync)
+ imp_count_async_task_mock.stop.side_effect = stop_mock
+
+ def _imppression_count_task_init_mock(self, synchronize_counters):
+ self._task = imp_count_async_task_mock
+ mocker.patch('splitio.client.factory.ImpressionsCountSyncTaskAsync.__init__',
+ new=_imppression_count_task_init_mock)
+
+ telemetry_async_task_mock = mocker.Mock(spec=asynctask.AsyncTaskAsync)
+ telemetry_async_task_mock.stop.side_effect = stop_mock
+
+ def _telemetry_task_init_mock(self, synchronize_telemetry, synchronize_telemetry2):
+ self._task = telemetry_async_task_mock
+ mocker.patch('splitio.client.factory.TelemetrySyncTaskAsync.__init__',
+ new=_telemetry_task_init_mock)
+
+ split_sync = mocker.Mock(spec=SplitSynchronizerAsync)
+ async def synchronize_splits(*_):
+ return []
+ split_sync.synchronize_splits = synchronize_splits
+
+ segment_sync = mocker.Mock(spec=SegmentSynchronizerAsync)
+ async def synchronize_segments(*_):
+ return True
+ segment_sync.synchronize_segments = synchronize_segments
+
+ syncs = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock(), mocker.Mock())
+ tasks = SplitTasks(split_async_task_mock, segment_async_task_mock, imp_async_task_mock,
+ evt_async_task_mock, imp_count_async_task_mock, telemetry_async_task_mock)
+
+ # Setup synchronizer
+ def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
+ synchronizer = SynchronizerAsync(syncs, tasks)
+ self._ready_flag = ready_flag
+ self._synchronizer = synchronizer
+ self._streaming_enabled = False
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+ mocker.patch('splitio.sync.manager.ManagerAsync.__init__', new=_split_synchronizer)
+
+ async def synchronize_config(*_):
+ pass
+ mocker.patch('splitio.sync.telemetry.InMemoryTelemetrySubmitterAsync.synchronize_config', new=synchronize_config)
+ # Start factory and make assertions
+ # Using invalid key should result in a timeout exception
+ factory = await get_factory_async('some_api_key')
+ self.manager_called = False
+ async def stop(*_):
+ self.manager_called = True
+ pass
+ factory._sync_manager.stop = stop
+
+ async def start(*_):
+ pass
+ factory._sync_manager.start = start
+
+ try:
+ await factory.block_until_ready(1)
+ except:
+ pass
+ assert factory._status == Status.READY
+ assert factory.destroyed is False
+
+ await factory.destroy()
+ assert self.manager_called
+ assert factory.destroyed is True
+
+ @pytest.mark.asyncio
+ async def test_pluggable_client_creation_async(self, mocker):
+ """Test that a client with pluggable storage is created correctly."""
+ config = {
+ 'labelsEnabled': False,
+ 'impressionListener': 123,
+ 'featuresRefreshRate': 1,
+ 'segmentsRefreshRate': 1,
+ 'metricsRefreshRate': 1,
+ 'impressionsRefreshRate': 1,
+ 'eventsPushRate': 1,
+ 'storageType': 'pluggable',
+ 'storageWrapper': StorageMockAdapterAsync()
+ }
+ factory = await get_factory_async('some_api_key', config=config)
+ assert isinstance(factory._get_storage('splits'), pluggable.PluggableSplitStorageAsync)
+ assert isinstance(factory._get_storage('segments'), pluggable.PluggableSegmentStorageAsync)
+ assert isinstance(factory._get_storage('impressions'), pluggable.PluggableImpressionsStorageAsync)
+ assert isinstance(factory._get_storage('events'), pluggable.PluggableEventsStorageAsync)
+
+ adapter = factory._get_storage('splits')._pluggable_adapter
+ assert adapter == factory._get_storage('segments')._pluggable_adapter
+ assert adapter == factory._get_storage('impressions')._pluggable_adapter
+ assert adapter == factory._get_storage('events')._pluggable_adapter
+
+ assert factory._labels_enabled is False
+ assert isinstance(factory._recorder, StandardRecorderAsync)
+ assert isinstance(factory._recorder._impressions_manager, ImpressionsManager)
+ assert isinstance(factory._recorder._event_sotrage, pluggable.PluggableEventsStorageAsync)
+ assert isinstance(factory._recorder._impression_storage, pluggable.PluggableImpressionsStorageAsync)
+ try:
+ await factory.block_until_ready(1)
+ except:
+ pass
+ assert factory._status == Status.READY
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_destroy_redis_async(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ async def _make_factory_with_apikey(apikey, *_, **__):
+ return SplitFactoryAsync(apikey, {}, True, mocker.Mock(), internal_events_queue, events_manager, mocker.Mock(spec=ManagerAsync), mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+
+ factory_module_logger = mocker.Mock()
+ build_redis = mocker.Mock()
+ build_redis.side_effect = _make_factory_with_apikey
+ mocker.patch('splitio.client.factory._LOGGER', new=factory_module_logger)
+ mocker.patch('splitio.client.factory._build_redis_factory_async', new=build_redis)
+
+ config = {
+ 'redisDb': 0,
+ 'redisHost': 'localhost',
+ 'redisPosrt': 6379,
+ }
+ factory = await get_factory_async("none", config=config)
+ await factory.destroy()
+ assert factory.destroyed
+ assert len(build_redis.mock_calls) == 1
+
+ factory = await get_factory_async("none", config=config)
+ await factory.destroy()
+ await asyncio.sleep(0.5)
+ assert factory.destroyed
+ assert len(build_redis.mock_calls) == 2
+
+ @pytest.mark.asyncio
+ async def test_internal_ready_event_notification(self, mocker):
+ """Test that a client with in-memory storage is sending internal events correctly."""
+ # Setup synchronizer
+ def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
+ synchronizer = mocker.Mock(spec=SynchronizerAsync)
+ async def sync_all(*_):
+ return None
+ synchronizer.sync_all = sync_all
+
+ def start_periodic_fetching():
+ pass
+ synchronizer.start_periodic_fetching = start_periodic_fetching
+
+ def start_periodic_data_recording():
+ pass
+ synchronizer.start_periodic_data_recording = start_periodic_data_recording
+
+ self._ready_flag = ready_flag
+ self._synchronizer = synchronizer
+ self._streaming_enabled = False
+ self._telemetry_runtime_producer = telemetry_runtime_producer
+
+ mocker.patch('splitio.sync.manager.ManagerAsync.__init__', new=_split_synchronizer)
+
+ async def synchronize_config(*_):
+ await asyncio.sleep(2)
+ pass
+ mocker.patch('splitio.sync.telemetry.InMemoryTelemetrySubmitterAsync.synchronize_config', new=synchronize_config)
+
+ async def record_ready_time(*_):
+ pass
+ mocker.patch('splitio.models.telemetry.TelemetryConfigAsync.record_ready_time', new=record_ready_time)
+
+ async def record_active_and_redundant_factories(*_):
+ pass
+ mocker.patch('splitio.models.telemetry.TelemetryConfigAsync.record_active_and_redundant_factories', new=record_active_and_redundant_factories)
+
+ # Start factory and make assertions
+ factory = await get_factory_async('some_api_key', config={'streamingEmabled': False})
+ for task in asyncio.all_tasks():
+ if task._coro.__qualname__ == "EventsTaskAsync._run":
+ task.cancel()
+ try:
+ await factory.block_until_ready(3)
+ except:
+ pass
+ await asyncio.sleep(.2)
+ event = await factory._internal_events_queue.get()
+ assert event.internal_event == SdkInternalEvent.SDK_READY
+ assert event.metadata == None
+ await factory.destroy()
\ No newline at end of file
diff --git a/tests/client/test_input_validator.py b/tests/client/test_input_validator.py
index e02961d7..e1634f54 100644
--- a/tests/client/test_input_validator.py
+++ b/tests/client/test_input_validator.py
@@ -1,20 +1,23 @@
"""Unit tests for the input_validator module."""
-#pylint: disable=protected-access,too-many-statements,no-self-use,line-too-long
-
-from __future__ import absolute_import, division, print_function, \
- unicode_literals
-
+import pytest
import logging
+import asyncio
-from splitio.client.factory import SplitFactory, get_factory
-from splitio.client.client import CONTROL, Client
-from splitio.client.manager import SplitManager
+from splitio.client.factory import SplitFactory, get_factory, SplitFactoryAsync, get_factory_async
+from splitio.client.client import CONTROL, Client, _LOGGER as _logger, ClientAsync
from splitio.client.key import Key
-from splitio.storage import SplitStorage, EventStorage, ImpressionStorage, TelemetryStorage, \
- SegmentStorage
+from splitio.events.events_manager import EventsManagerAsync
+from splitio.storage import SplitStorage, EventStorage, ImpressionStorage, SegmentStorage, RuleBasedSegmentsStorage
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync, \
+ InMemorySplitStorage, InMemorySplitStorageAsync, InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync
from splitio.models.splits import Split
+from splitio.models.fallback_config import FallbackTreatmentCalculator
from splitio.client import input_validator
-
+from splitio.client.manager import SplitManager, SplitManagerAsync
+from splitio.recorder.recorder import StandardRecorder, StandardRecorderAsync
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.engine.impressions.impressions import Manager as ImpressionManager
+from splitio.models.fallback_treatment import FallbackTreatment
class ClientInputValidationTests(object):
"""Input validation test cases."""
@@ -28,221 +31,235 @@ def test_get_treatment(self, mocker):
conditions_mock = mocker.PropertyMock()
conditions_mock.return_value = []
type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
storage_mock = mocker.Mock(spec=SplitStorage)
- storage_mock.get.return_value = split_mock
-
- def _get_storage_mock(storage):
- return {
+ storage_mock.fetch_many.return_value = {'some_feature': split_mock}
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ rbs_storage.fetch_many.return_value = {}
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(spec=EventStorage), ImpressionStorage, telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
'splits': storage_mock,
'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
'impressions': mocker.Mock(spec=ImpressionStorage),
'events': mocker.Mock(spec=EventStorage),
- 'telemetry': mocker.Mock(spec=TelemetryStorage)
- }[storage]
- factory_mock = mocker.Mock(spec=SplitFactory)
- factory_mock._get_storage.side_effect = _get_storage_mock
- factory_destroyed = mocker.PropertyMock()
- factory_destroyed.return_value = False
- type(factory_mock).destroyed = factory_destroyed
-
- client = Client(factory_mock)
- client._logger = mocker.Mock()
- mocker.patch('splitio.client.input_validator._LOGGER', new=client._logger)
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ client = Client(factory, mocker.Mock(), mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
assert client.get_treatment(None, 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed a null key, key must be a non-empty string.', 'get_treatment')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('', 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
key = ''.join('a' for _ in range(0, 255))
assert client.get_treatment(key, 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatment', 'key', 250)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(12345, 'some_feature') == 'default_treatment'
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment', 'key', 12345)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(float('nan'), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(float('inf'), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(True, 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment([], 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('some_key', None) == CONTROL
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('some_key', 123) == CONTROL
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('some_key', True) == CONTROL
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('some_key', []) == CONTROL
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('some_key', '') == CONTROL
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('some_key', 'some_feature') == 'default_treatment'
- assert client._logger.error.mock_calls == []
- assert client._logger.warning.mock_calls == []
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key(None, 'bucketing_key'), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key('', 'bucketing_key'), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key(float('nan'), 'bucketing_key'), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key(float('inf'), 'bucketing_key'), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key(True, 'bucketing_key'), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key([], 'bucketing_key'), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key(12345, 'bucketing_key'), 'some_feature') == 'default_treatment'
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment', 'matching_key', 12345)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
key = ''.join('a' for _ in range(0, 255))
assert client.get_treatment(Key(key, 'bucketing_key'), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatment', 'matching_key', 250)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key('matching_key', None), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'bucketing_key', 'bucketing_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key('matching_key', True), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'bucketing_key', 'bucketing_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key('matching_key', []), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'bucketing_key', 'bucketing_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key('matching_key', ''), 'some_feature') == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'bucketing_key', 'bucketing_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment(Key('matching_key', 12345), 'some_feature') == 'default_treatment'
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment', 'bucketing_key', 12345)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('matching_key', 'some_feature', True) == CONTROL
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: attributes must be of type dictionary.', 'get_treatment')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('matching_key', 'some_feature', {'test': 'test'}) == 'default_treatment'
- assert client._logger.error.mock_calls == []
+ assert _logger.error.mock_calls == []
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('matching_key', 'some_feature', None) == 'default_treatment'
- assert client._logger.error.mock_calls == []
+ assert _logger.error.mock_calls == []
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment('matching_key', ' some_feature ', None) == 'default_treatment'
- assert client._logger.warning.mock_calls == [
- mocker.call('%s: feature_name \'%s\' has extra whitespace, trimming.', 'get_treatment', ' some_feature ')
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatment', 'feature flag name', ' some_feature ')
]
- client._logger.reset_mock()
- storage_mock.get.return_value = None
+ _logger.reset_mock()
+ storage_mock.fetch_many.return_value = {'some_feature': None}
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
assert client.get_treatment('matching_key', 'some_feature', None) == CONTROL
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call(
"%s: you passed \"%s\" that does not exist in this environment, "
- "please double check what Splits exist in the web console.",
+ "please double check what Feature flags exist in the Split user interface.",
'get_treatment',
'some_feature'
)
]
-
+ factory.destroy
def test_get_treatment_with_config(self, mocker):
"""Test get_treatment validation."""
@@ -253,237 +270,253 @@ def test_get_treatment_with_config(self, mocker):
conditions_mock = mocker.PropertyMock()
conditions_mock.return_value = []
type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+
def _configs(treatment):
return '{"some": "property"}' if treatment == 'default_treatment' else None
split_mock.get_configurations_for.side_effect = _configs
storage_mock = mocker.Mock(spec=SplitStorage)
- storage_mock.get.return_value = split_mock
-
- def _get_storage_mock(storage):
- return {
+ storage_mock.fetch_many.return_value = {'some_feature': split_mock}
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ rbs_storage.fetch_many.return_value = {}
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(spec=EventStorage), ImpressionStorage, telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
'splits': storage_mock,
'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
'impressions': mocker.Mock(spec=ImpressionStorage),
'events': mocker.Mock(spec=EventStorage),
- 'telemetry': mocker.Mock(spec=TelemetryStorage)
- }[storage]
- factory_mock = mocker.Mock(spec=SplitFactory)
- factory_mock._get_storage.side_effect = _get_storage_mock
- factory_destroyed = mocker.PropertyMock()
- factory_destroyed.return_value = False
- type(factory_mock).destroyed = factory_destroyed
-
- client = Client(factory_mock)
- client._logger = mocker.Mock()
- mocker.patch('splitio.client.input_validator._LOGGER', new=client._logger)
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ client = Client(factory, mocker.Mock(), mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
assert client.get_treatment_with_config(None, 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed a null key, key must be a non-empty string.', 'get_treatment_with_config')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('', 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
key = ''.join('a' for _ in range(0, 255))
assert client.get_treatment_with_config(key, 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatment_with_config', 'key', 250)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(12345, 'some_feature') == ('default_treatment', '{"some": "property"}')
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment_with_config', 'key', 12345)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(float('nan'), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(float('inf'), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(True, 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config([], 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('some_key', None) == (CONTROL, None)
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('some_key', 123) == (CONTROL, None)
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('some_key', True) == (CONTROL, None)
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('some_key', []) == (CONTROL, None)
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('some_key', '') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('some_key', 'some_feature') == ('default_treatment', '{"some": "property"}')
- assert client._logger.error.mock_calls == []
- assert client._logger.warning.mock_calls == []
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key(None, 'bucketing_key'), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key('', 'bucketing_key'), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key(float('nan'), 'bucketing_key'), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key(float('inf'), 'bucketing_key'), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key(True, 'bucketing_key'), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key([], 'bucketing_key'), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key(12345, 'bucketing_key'), 'some_feature') == ('default_treatment', '{"some": "property"}')
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment_with_config', 'matching_key', 12345)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
key = ''.join('a' for _ in range(0, 255))
assert client.get_treatment_with_config(Key(key, 'bucketing_key'), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatment_with_config', 'matching_key', 250)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key('matching_key', None), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'bucketing_key', 'bucketing_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key('matching_key', True), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'bucketing_key', 'bucketing_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key('matching_key', []), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'bucketing_key', 'bucketing_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key('matching_key', ''), 'some_feature') == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'bucketing_key', 'bucketing_key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config(Key('matching_key', 12345), 'some_feature') == ('default_treatment', '{"some": "property"}')
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment_with_config', 'bucketing_key', 12345)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('matching_key', 'some_feature', True) == (CONTROL, None)
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: attributes must be of type dictionary.', 'get_treatment_with_config')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('matching_key', 'some_feature', {'test': 'test'}) == ('default_treatment', '{"some": "property"}')
- assert client._logger.error.mock_calls == []
+ assert _logger.error.mock_calls == []
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('matching_key', 'some_feature', None) == ('default_treatment', '{"some": "property"}')
- assert client._logger.error.mock_calls == []
+ assert _logger.error.mock_calls == []
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatment_with_config('matching_key', ' some_feature ', None) == ('default_treatment', '{"some": "property"}')
- assert client._logger.warning.mock_calls == [
- mocker.call('%s: feature_name \'%s\' has extra whitespace, trimming.', 'get_treatment_with_config', ' some_feature ')
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatment_with_config', 'feature flag name', ' some_feature ')
]
- client._logger.reset_mock()
- storage_mock.get.return_value = None
+ _logger.reset_mock()
+ storage_mock.fetch_many.return_value = {'some_feature': None}
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
assert client.get_treatment_with_config('matching_key', 'some_feature', None) == (CONTROL, None)
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call(
"%s: you passed \"%s\" that does not exist in this environment, "
- "please double check what Splits exist in the web console.",
+ "please double check what Feature flags exist in the Split user interface.",
'get_treatment_with_config',
'some_feature'
)
]
+ factory.destroy
def test_valid_properties(self, mocker):
- """Test valid_properties() method"""
- assert input_validator.valid_properties(None) == (True, None, 1024)
- assert input_validator.valid_properties([]) == (False, None, 0)
- assert input_validator.valid_properties(True) == (False, None, 0)
- assert input_validator.valid_properties(dict()) == (True, None, 1024)
- assert input_validator.valid_properties({ 2: 123 }) == (True, None, 1024)
+ """Test valid_properties() method."""
+ assert input_validator.valid_properties(None, '') == (True, None, 1024)
+ assert input_validator.valid_properties([], '') == (False, None, 0)
+ assert input_validator.valid_properties(True, '') == (False, None, 0)
+ assert input_validator.valid_properties(dict(), '') == (True, None, 1024)
+ assert input_validator.valid_properties({2: 123}, '') == (True, None, 1024)
class Test:
pass
assert input_validator.valid_properties({
"test": Test()
- }) == (True, { "test": None }, 1028)
+ }, '') == (True, {"test": None}, 1028)
props1 = {
"test1": "test",
@@ -493,241 +526,263 @@ class Test:
"test5": [],
2: "t",
}
- r1, r2, r3 = input_validator.valid_properties(props1)
- assert r1 == True
+ r1, r2, r3 = input_validator.valid_properties(props1, '')
+ assert r1 is True
assert len(r2.keys()) == 5
assert r2["test1"] == "test"
assert r2["test2"] == 1
- assert r2["test3"] == True
- assert r2["test4"] == None
- assert r2["test5"] == None
+ assert r2["test3"] is True
+ assert r2["test4"] is None
+ assert r2["test5"] is None
assert r3 == 1053
- props2 = dict();
+ props2 = dict()
for i in range(301):
props2[str(i)] = i
- assert input_validator.valid_properties(props2) == (True, props2, 1817)
+ assert input_validator.valid_properties(props2, '') == (True, props2, 1817)
- props3 = dict();
+ props3 = dict()
for i in range(100, 210):
props3["prop" + str(i)] = "a" * 300
- r1, r2, r3 = input_validator.valid_properties(props3)
- assert r1 == False
+ r1, r2, r3 = input_validator.valid_properties(props3, '')
+ assert r1 is False
assert r3 == 32952
def test_track(self, mocker):
"""Test track method()."""
events_storage_mock = mocker.Mock(spec=EventStorage)
events_storage_mock.put.return_value = True
- factory_mock = mocker.Mock(spec=SplitFactory)
- factory_destroyed = mocker.PropertyMock()
- factory_destroyed.return_value = False
- type(factory_mock).destroyed = factory_destroyed
- factory_mock._apikey = 'some-test'
-
- client = Client(factory_mock)
- client._events_storage = mocker.Mock(spec=EventStorage)
- client._events_storage.put.return_value = True
- client._logger = mocker.Mock()
- mocker.patch('splitio.client.input_validator._LOGGER', new=client._logger)
+ event_storage = mocker.Mock(spec=EventStorage)
+ event_storage.put.return_value = True
+ split_storage_mock = mocker.Mock(spec=SplitStorage)
+ split_storage_mock.is_valid_traffic_type.return_value = True
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, events_storage_mock, ImpressionStorage, telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
+ 'splits': split_storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': mocker.Mock(spec=RuleBasedSegmentsStorage),
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': events_storage_mock,
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ factory._sdk_key = 'some-test'
+
+ client = Client(factory, recorder, mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ client._event_storage = event_storage
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
assert client.track(None, "traffic_type", "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'track', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("", "traffic_type", "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'track', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track(12345, "traffic_type", "event_type", 1) is True
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call("%s: %s %s is not of type string, converting.", 'track', 'key', 12345)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track(True, "traffic_type", "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track([], "traffic_type", "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
key = ''.join('a' for _ in range(0, 255))
assert client.track(key, "traffic_type", "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: %s too long - must be %s characters or less.", 'track', 'key', 250)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", None, "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "", "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", 12345, "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", True, "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", [], "event_type", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "TRAFFIC_type", "event_type", 1) is True
- assert client._logger.warning.mock_calls == [
- mocker.call("track: %s should be all lowercase - converting string to lowercase.", 'TRAFFIC_type')
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: %s '%s' should be all lowercase - converting string to lowercase", 'track', 'traffic type', 'TRAFFIC_type')
]
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", None, 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "", 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", True, 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", [], 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", 12345, 1) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "@@", 1) is False
- assert client._logger.error.mock_calls == [
- mocker.call("%s: you passed %s, event_type must adhere to the regular "
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
"expression %s. This means "
- "an event name must be alphanumeric, cannot be more than 80 "
+ "%s must be alphanumeric, cannot be more than %s "
"characters long, and can only include a dash, underscore, "
"period, or colon as separators of alphanumeric characters.",
- 'track', '@@', '^[a-zA-Z0-9][-_.:a-zA-Z0-9]{0,79}$')
+ 'track', '@@', 'an event name', '^[a-zA-Z0-9][-_.:a-zA-Z0-9]{0,79}$', 'an event name', 80)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", None) is True
- assert client._logger.error.mock_calls == []
+ assert _logger.error.mock_calls == []
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", 1) is True
- assert client._logger.error.mock_calls == []
+ assert _logger.error.mock_calls == []
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", 1.23) is True
- assert client._logger.error.mock_calls == []
+ assert _logger.error.mock_calls == []
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", "test") is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("track: value must be a number.")
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", True) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("track: value must be a number.")
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", []) is False
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call("track: value must be a number.")
]
# Test traffic type existance
ready_property = mocker.PropertyMock()
ready_property.return_value = True
- type(factory_mock).ready = ready_property
+ type(factory).ready = ready_property
- split_storage_mock = mocker.Mock(spec=SplitStorage)
- split_storage_mock.is_valid_traffic_type.return_value = True
- factory_mock._get_storage.return_value = split_storage_mock
+# factory._get_storage.return_value = split_storage_mock
# Test that it doesn't warn if tt is cached, not in localhost mode and sdk is ready
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", None) is True
- assert client._logger.error.mock_calls == []
- assert client._logger.warning.mock_calls == []
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
# Test that it does warn if tt is cached, not in localhost mode and sdk is ready
split_storage_mock.is_valid_traffic_type.return_value = False
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", None) is True
- assert client._logger.error.mock_calls == []
- assert client._logger.warning.mock_calls == [mocker.call(
- 'track: Traffic Type %s does not have any corresponding Splits in this environment, '
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == [mocker.call(
+ 'track: Traffic Type %s does not have any corresponding Feature flags in this environment, '
'make sure you\'re tracking your events to a valid traffic type defined '
- 'in the Split console.',
+ 'in the Split user interface.',
'traffic_type'
)]
# Test that it does not warn when in localhost mode.
- factory_mock._apikey = 'localhost'
- client._logger.reset_mock()
+ factory._sdk_key = 'localhost'
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", None) is True
- assert client._logger.error.mock_calls == []
- assert client._logger.warning.mock_calls == []
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
# Test that it does not warn when not in localhost mode and not ready
- factory_mock._apikey = 'not-localhost'
+ factory._sdk_key = 'not-localhost'
ready_property.return_value = False
- type(factory_mock).ready = ready_property
- client._logger.reset_mock()
+ type(factory).ready = ready_property
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", None) is True
- assert client._logger.error.mock_calls == []
- assert client._logger.warning.mock_calls == []
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
# Test track with invalid properties
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", 1, []) is False
- assert client._logger.error.mock_calls == [
- mocker.call("track: properties must be of type dictionary.")
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: properties must be of type dictionary.", "track")
]
# Test track with invalid properties
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", 1, True) is False
- assert client._logger.error.mock_calls == [
- mocker.call("track: properties must be of type dictionary.")
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: properties must be of type dictionary.", "track")
]
# Test track with properties
@@ -739,31 +794,32 @@ def test_track(self, mocker):
"test5": [],
2: "t",
}
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", 1, props1) is True
- assert client._logger.warning.mock_calls == [
- mocker.call("Property %s is of invalid type. Setting value to None", [])
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: Property %s is of invalid type. Setting value to None", "track", [])
]
# Test track with more than 300 properties
- props2 = dict();
+ props2 = dict()
for i in range(301):
props2[str(i)] = i
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.track("some_key", "traffic_type", "event_type", 1, props2) is True
- assert client._logger.warning.mock_calls == [
- mocker.call("Event has more than 300 properties. Some of them will be trimmed when processed")
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: Event has more than 300 properties. Some of them will be trimmed when processed", "track")
]
# Test track with properties higher than 32kb
- client._logger.reset_mock()
- props3 = dict();
+ _logger.reset_mock()
+ props3 = dict()
for i in range(100, 210):
props3["prop" + str(i)] = "a" * 300
assert client.track("some_key", "traffic_type", "event_type", 1, props3) is False
- assert client._logger.error.mock_calls == [
- mocker.call("The maximum size allowed for the properties is 32768 bytes. Current one is 32952 bytes. Event not queued")
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: The maximum size allowed for the properties is 32768 bytes. Current one is 32952 bytes. Event not queued", "track")
]
+ factory.destroy
def test_get_treatments(self, mocker):
"""Test getTreatments() method."""
@@ -774,128 +830,146 @@ def test_get_treatments(self, mocker):
conditions_mock = mocker.PropertyMock()
conditions_mock.return_value = []
type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
storage_mock = mocker.Mock(spec=SplitStorage)
storage_mock.fetch_many.return_value = {
- 'some_feature': split_mock,
- 'some': split_mock,
+ 'some_feature': split_mock
}
-
- def _get_storage_mock(storage):
- return {
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ rbs_storage.fetch_many.return_value = {}
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
'splits': storage_mock,
'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
'impressions': mocker.Mock(spec=ImpressionStorage),
'events': mocker.Mock(spec=EventStorage),
- 'telemetry': mocker.Mock(spec=TelemetryStorage)
- }[storage]
- factory_mock = mocker.Mock(spec=SplitFactory)
- factory_mock._get_storage.side_effect = _get_storage_mock
- factory_destroyed = mocker.PropertyMock()
- factory_destroyed.return_value = False
- type(factory_mock).destroyed = factory_destroyed
-
- client = Client(factory_mock)
- client._logger = mocker.Mock()
- mocker.patch('splitio.client.input_validator._LOGGER', new=client._logger)
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = Client(factory, recorder, mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
assert client.get_treatments(None, ['some_feature']) == {'some_feature': CONTROL}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed a null key, key must be a non-empty string.', 'get_treatments')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments("", ['some_feature']) == {'some_feature': CONTROL}
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments', 'key', 'key')
]
key = ''.join('a' for _ in range(0, 255))
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments(key, ['some_feature']) == {'some_feature': CONTROL}
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments', 'key', 250)
]
- client._logger.reset_mock()
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
assert client.get_treatments(12345, ['some_feature']) == {'some_feature': 'default_treatment'}
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments', 'key', 12345)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments(True, ['some_feature']) == {'some_feature': CONTROL}
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments([], ['some_feature']) == {'some_feature': CONTROL}
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments('some_key', None) == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments('some_key', True) == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments('some_key', 'some_string') == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments('some_key', []) == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments('some_key', [None, None]) == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments('some_key', [True]) == {}
- assert mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments') in client._logger.error.mock_calls
+ assert mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments') in _logger.error.mock_calls
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments('some_key', ['', '']) == {}
- assert mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments') in client._logger.error.mock_calls
+ assert mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments') in _logger.error.mock_calls
- client._logger.reset_mock()
- assert client.get_treatments('some_key', ['some ']) == {'some': 'default_treatment'}
- assert client._logger.warning.mock_calls == [
- mocker.call('%s: feature_name \'%s\' has extra whitespace, trimming.', 'get_treatments', 'some ')
+ _logger.reset_mock()
+ assert client.get_treatments('some_key', ['some_feature ']) == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments', 'feature flag name', 'some_feature ')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
storage_mock.fetch_many.return_value = {
'some_feature': None
}
- storage_mock.get.return_value = None
+ storage_mock.fetch_many.return_value = {'some_feature': None}
ready_mock = mocker.PropertyMock()
ready_mock.return_value = True
- type(factory_mock).ready = ready_mock
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
assert client.get_treatments('matching_key', ['some_feature'], None) == {'some_feature': CONTROL}
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call(
"%s: you passed \"%s\" that does not exist in this environment, "
- "please double check what Splits exist in the web console.",
+ "please double check what Feature flags exist in the Split user interface.",
'get_treatments',
'some_feature'
)
]
+ factory.destroy
def test_get_treatments_with_config(self, mocker):
"""Test getTreatments() method."""
@@ -906,215 +980,2881 @@ def test_get_treatments_with_config(self, mocker):
conditions_mock = mocker.PropertyMock()
conditions_mock.return_value = []
type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
storage_mock = mocker.Mock(spec=SplitStorage)
storage_mock.fetch_many.return_value = {
'some_feature': split_mock
}
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ rbs_storage.fetch_many.return_value = {}
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ split_mock.name = 'some_feature'
- factory_mock = mocker.Mock(spec=SplitFactory)
- factory_mock._get_storage.return_value = storage_mock
- factory_destroyed = mocker.PropertyMock()
- factory_destroyed.return_value = False
- type(factory_mock).destroyed = factory_destroyed
def _configs(treatment):
return '{"some": "property"}' if treatment == 'default_treatment' else None
split_mock.get_configurations_for.side_effect = _configs
- client = Client(factory_mock)
- client._logger = mocker.Mock()
- mocker.patch('splitio.client.input_validator._LOGGER', new=client._logger)
+ client = Client(factory, mocker.Mock(), mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
assert client.get_treatments_with_config(None, ['some_feature']) == {'some_feature': (CONTROL, None)}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: you passed a null key, key must be a non-empty string.', 'get_treatments_with_config')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_with_config', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config("", ['some_feature']) == {'some_feature': (CONTROL, None)}
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_with_config', 'key', 'key')
]
key = ''.join('a' for _ in range(0, 255))
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config(key, ['some_feature']) == {'some_feature': (CONTROL, None)}
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_with_config', 'key', 250)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config(12345, ['some_feature']) == {'some_feature': ('default_treatment', '{"some": "property"}')}
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_with_config', 'key', 12345)
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config(True, ['some_feature']) == {'some_feature': (CONTROL, None)}
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config([], ['some_feature']) == {'some_feature': (CONTROL, None)}
- assert client._logger.error.mock_calls == [
+ assert _logger.error.mock_calls == [
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config', 'key', 'key')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config('some_key', None) == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments_with_config')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config('some_key', True) == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments_with_config')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config('some_key', 'some_string') == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments_with_config')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config('some_key', []) == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments_with_config')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config('some_key', [None, None]) == {}
- assert client._logger.error.mock_calls == [
- mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments_with_config')
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config('some_key', [True]) == {}
- assert mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments_with_config') in client._logger.error.mock_calls
+ assert mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config') in _logger.error.mock_calls
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config('some_key', ['', '']) == {}
- assert mocker.call('%s: feature_names must be a non-empty array.', 'get_treatments_with_config') in client._logger.error.mock_calls
+ assert mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config') in _logger.error.mock_calls
- client._logger.reset_mock()
+ _logger.reset_mock()
assert client.get_treatments_with_config('some_key', ['some_feature ']) == {'some_feature': ('default_treatment', '{"some": "property"}')}
- assert client._logger.warning.mock_calls == [
- mocker.call('%s: feature_name \'%s\' has extra whitespace, trimming.', 'get_treatments_with_config', 'some_feature ')
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_with_config', 'feature flag name', 'some_feature ')
]
- client._logger.reset_mock()
+ _logger.reset_mock()
storage_mock.fetch_many.return_value = {
'some_feature': None
}
storage_mock.get.return_value = None
ready_mock = mocker.PropertyMock()
ready_mock.return_value = True
- type(factory_mock).ready = ready_mock
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
assert client.get_treatments('matching_key', ['some_feature'], None) == {'some_feature': CONTROL}
- assert client._logger.warning.mock_calls == [
+ assert _logger.warning.mock_calls == [
mocker.call(
"%s: you passed \"%s\" that does not exist in this environment, "
- "please double check what Splits exist in the web console.",
+ "please double check what Feature flags exist in the Split user interface.",
'get_treatments',
'some_feature'
)
]
+ factory.destroy
+
+ def test_get_treatments_by_flag_set(self, mocker):
+ """Test getTreatments() method."""
+ split_mock = mocker.Mock(spec=Split)
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=InMemorySplitStorage)
+ storage_mock.fetch_many.return_value = {
+ 'some_feature': split_mock
+ }
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ rbs_storage.fetch_many.return_value = {}
+ storage_mock.get_feature_flags_by_sets.return_value = ['some_feature']
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = Client(factory, recorder, mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert client.get_treatments_by_flag_set(None, 'some_set') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_by_flag_set', 'key', 'key')
+ ]
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_set("", 'some_set') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_by_flag_set', 'key', 'key')
+ ]
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_set(key, 'some_set') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_by_flag_set', 'key', 250)
+ ]
-class ManagerInputValidationTests(object): #pylint: disable=too-few-public-methods
- """Manager input validation test cases."""
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_set(12345, 'some_set') == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_by_flag_set', 'key', 12345)
+ ]
- def test_split_(self, mocker):
- """Test split input validation."""
- storage_mock = mocker.Mock(spec=SplitStorage)
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_set(True, 'some_set') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_set([], 'some_set') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ client.get_treatments_by_flag_set('some_key', None)
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.",
+ 'get_treatments_by_flag_set', 'flag set', 'flag set')
+ ]
+
+ _logger.reset_mock()
+ client.get_treatments_by_flag_set('some_key', '$$')
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
+ "expression %s. This means "
+ "%s must be alphanumeric, cannot be more than %s "
+ "characters long, and can only include a dash, underscore, "
+ "period, or colon as separators of alphanumeric characters.",
+ 'get_treatments_by_flag_set', '$$', 'a flag set', '^[a-z0-9][_a-z0-9]{0,49}$', 'a flag set', 50)
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_set('some_key', 'some_set ') == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_by_flag_set', 'flag set', 'some_set ')
+ ]
+
+ _logger.reset_mock()
+ storage_mock.get_feature_flags_by_sets.return_value = []
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert client.get_treatments_by_flag_set('matching_key', 'some_set') == {}
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: No valid Flag set or no feature flags found for evaluating treatments", "get_treatments_by_flag_set")
+ ]
+ factory.destroy
+
+ def test_get_treatments_by_flag_sets(self, mocker):
+ """Test getTreatments() method."""
split_mock = mocker.Mock(spec=Split)
- storage_mock.get.return_value = split_mock
- factory_mock = mocker.Mock(spec=SplitFactory)
- factory_mock._get_storage.return_value = storage_mock
- factory_destroyed = mocker.PropertyMock()
- factory_destroyed.return_value = False
- type(factory_mock).destroyed = factory_destroyed
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=InMemorySplitStorage)
+ storage_mock.fetch_many.return_value = {
+ 'some_feature': split_mock
+ }
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ rbs_storage.fetch_many.return_value = {}
+ storage_mock.get_feature_flags_by_sets.return_value = ['some_feature']
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
- manager = SplitManager(factory_mock)
- manager._logger = mocker.Mock()
- mocker.patch('splitio.client.input_validator._LOGGER', new=manager._logger)
+ client = Client(factory, recorder, mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
- assert manager.split(None) is None
- assert manager._logger.error.mock_calls == [
- mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'split', 'feature_name', 'feature_name')
+ assert client.get_treatments_by_flag_sets(None, ['some_set']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_by_flag_sets', 'key', 'key')
]
- manager._logger.reset_mock()
- assert manager.split("") is None
- assert manager._logger.error.mock_calls == [
- mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'split', 'feature_name', 'feature_name')
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_sets("", ['some_set']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_by_flag_sets', 'key', 'key')
]
- manager._logger.reset_mock()
- assert manager.split(True) is None
- assert manager._logger.error.mock_calls == [
- mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_name', 'feature_name')
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_sets(key, ['some_set']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_by_flag_sets', 'key', 250)
]
- manager._logger.reset_mock()
- assert manager.split([]) is None
- assert manager._logger.error.mock_calls == [
- mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_name', 'feature_name')
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_sets(12345, ['some_set']) == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_by_flag_sets', 'key', 12345)
]
- manager._logger.reset_mock()
- manager.split('some_split')
- assert split_mock.to_split_view.mock_calls == [mocker.call()]
- assert manager._logger.error.mock_calls == []
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_sets(True, ['some_set']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_by_flag_sets', 'key', 'key')
+ ]
- manager._logger.reset_mock()
- split_mock.reset_mock()
- storage_mock.get.return_value = None
- manager.split('nonexistant-split')
- assert split_mock.to_split_view.mock_calls == []
- assert manager._logger.warning.mock_calls == [mocker.call(
- "split: you passed \"%s\" that does not exist in this environment, "
- "please double check what Splits exist in the web console.",
- 'nonexistant-split'
- )]
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_sets([], ['some_set']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_by_flag_sets', 'key', 'key')
+ ]
-class FactoryInputValidationTests(object): #pylint: disable=too-few-public-methods
- """Factory instantiation input validation test cases."""
+ _logger.reset_mock()
+ client.get_treatments_by_flag_sets('some_key', None)
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: flag sets parameter type should be list object, parameter is discarded", "get_treatments_by_flag_sets")
+ ]
- def test_input_validation_factory(self, mocker):
- """Test the input validators for factory instantiation."""
- logger = mocker.Mock(spec=logging.Logger)
- mocker.patch('splitio.client.input_validator._LOGGER', new=logger)
+ _logger.reset_mock()
+ client.get_treatments_by_flag_sets('some_key', [None])
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.",
+ 'get_treatments_by_flag_sets', 'flag set', 'flag set')
+ ]
- assert get_factory(None) is None
- assert logger.error.mock_calls == [
- mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'factory_instantiation', 'apikey', 'apikey')
+ _logger.reset_mock()
+ client.get_treatments_by_flag_sets('some_key', ['$$'])
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
+ "expression %s. This means "
+ "%s must be alphanumeric, cannot be more than %s "
+ "characters long, and can only include a dash, underscore, "
+ "period, or colon as separators of alphanumeric characters.",
+ 'get_treatments_by_flag_sets', '$$', 'a flag set', '^[a-z0-9][_a-z0-9]{0,49}$', 'a flag set', 50)
]
- logger.reset_mock()
- assert get_factory('') is None
- assert logger.error.mock_calls == [
- mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'factory_instantiation', 'apikey', 'apikey')
+ _logger.reset_mock()
+ assert client.get_treatments_by_flag_sets('some_key', ['some_set ']) == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_by_flag_sets', 'flag set', 'some_set ')
]
- logger.reset_mock()
- assert get_factory(True) is None
- assert logger.error.mock_calls == [
- mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'factory_instantiation', 'apikey', 'apikey')
+ _logger.reset_mock()
+ storage_mock.get_feature_flags_by_sets.return_value = []
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert client.get_treatments_by_flag_sets('matching_key', ['some_set']) == {}
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: No valid Flag set or no feature flags found for evaluating treatments", "get_treatments_by_flag_sets")
]
+ factory.destroy
- logger.reset_mock()
- f = get_factory(True, config={'uwsgiClient': True})
- assert f is not None
- assert logger.error.mock_calls == []
- f.destroy()
+ def test_get_treatments_with_config_by_flag_set(self, mocker):
+ split_mock = mocker.Mock(spec=Split)
+ def _configs(treatment):
+ return '{"some": "property"}' if treatment == 'default_treatment' else None
+ split_mock.get_configurations_for.side_effect = _configs
+ split_mock.name = 'some_feature'
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=InMemorySplitStorage)
+ storage_mock.fetch_many.return_value = {
+ 'some_feature': split_mock
+ }
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ rbs_storage.fetch_many.return_value = {}
+
+ storage_mock.get_feature_flags_by_sets.return_value = ['some_feature']
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
- logger.reset_mock()
- f = get_factory(True, config={'redisHost': 'some-host'})
- assert f is not None
- assert logger.error.mock_calls == []
- f.destroy()
+ client = Client(factory, recorder, mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert client.get_treatments_with_config_by_flag_set(None, 'some_set') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_set("", 'some_set') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_set', 'key', 'key')
+ ]
+
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_set(key, 'some_set') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_with_config_by_flag_set', 'key', 250)
+ ]
+
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_set(12345, 'some_set') == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_with_config_by_flag_set', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_set(True, 'some_set') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_set([], 'some_set') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ client.get_treatments_with_config_by_flag_set('some_key', None)
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.",
+ 'get_treatments_with_config_by_flag_set', 'flag set', 'flag set')
+ ]
+
+ _logger.reset_mock()
+ client.get_treatments_with_config_by_flag_set('some_key', '$$')
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
+ "expression %s. This means "
+ "%s must be alphanumeric, cannot be more than %s "
+ "characters long, and can only include a dash, underscore, "
+ "period, or colon as separators of alphanumeric characters.",
+ 'get_treatments_with_config_by_flag_set', '$$', 'a flag set', '^[a-z0-9][_a-z0-9]{0,49}$', 'a flag set', 50)
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_set('some_key', 'some_set ') == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_with_config_by_flag_set', 'flag set', 'some_set ')
+ ]
+
+ _logger.reset_mock()
+ storage_mock.get_feature_flags_by_sets.return_value = []
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert client.get_treatments_with_config_by_flag_set('matching_key', 'some_set') == {}
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: No valid Flag set or no feature flags found for evaluating treatments", "get_treatments_with_config_by_flag_set")
+ ]
+ factory.destroy
+
+ def test_get_treatments_with_config_by_flag_sets(self, mocker):
+ split_mock = mocker.Mock(spec=Split)
+ def _configs(treatment):
+ return '{"some": "property"}' if treatment == 'default_treatment' else None
+ split_mock.get_configurations_for.side_effect = _configs
+ split_mock.name = 'some_feature'
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=InMemorySplitStorage)
+ storage_mock.fetch_many.return_value = {
+ 'some_feature': split_mock
+ }
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ rbs_storage.fetch_many.return_value = {}
+
+ storage_mock.get_feature_flags_by_sets.return_value = ['some_feature']
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = Client(factory, recorder, mocker.Mock(), mocker.Mock(), FallbackTreatmentCalculator(None))
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert client.get_treatments_with_config_by_flag_sets(None, ['some_set']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_sets', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_sets("", ['some_set']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_sets', 'key', 'key')
+ ]
+
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_sets(key, ['some_set']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_with_config_by_flag_sets', 'key', 250)
+ ]
+
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_sets(12345, ['some_set']) == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_with_config_by_flag_sets', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_sets(True, ['some_set']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_sets', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_sets([], ['some_set']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_sets', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ client.get_treatments_with_config_by_flag_sets('some_key', [None])
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.",
+ 'get_treatments_with_config_by_flag_sets', 'flag set', 'flag set')
+ ]
+
+ _logger.reset_mock()
+ client.get_treatments_with_config_by_flag_sets('some_key', ['$$'])
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
+ "expression %s. This means "
+ "%s must be alphanumeric, cannot be more than %s "
+ "characters long, and can only include a dash, underscore, "
+ "period, or colon as separators of alphanumeric characters.",
+ 'get_treatments_with_config_by_flag_sets', '$$', 'a flag set', '^[a-z0-9][_a-z0-9]{0,49}$', 'a flag set', 50)
+ ]
+
+ _logger.reset_mock()
+ assert client.get_treatments_with_config_by_flag_sets('some_key', ['some_set ']) == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_with_config_by_flag_sets', 'flag set', 'some_set ')
+ ]
+
+ _logger.reset_mock()
+ storage_mock.get_feature_flags_by_sets.return_value = []
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert client.get_treatments_with_config_by_flag_sets('matching_key', ['some_set']) == {}
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: No valid Flag set or no feature flags found for evaluating treatments", "get_treatments_with_config_by_flag_sets")
+ ]
+ factory.destroy
+
+ def test_flag_sets_validation(self):
+ """Test sanitization for flag sets."""
+ flag_sets = input_validator.validate_flag_sets([' set1', 'set2 ', 'set3'], 'method')
+ assert sorted(flag_sets) == ['set1', 'set2', 'set3']
+
+ flag_sets = input_validator.validate_flag_sets(['1set', '_set2'], 'method')
+ assert flag_sets == ['1set']
+
+ flag_sets = input_validator.validate_flag_sets(['Set1', 'SET2'], 'method')
+ assert sorted(flag_sets) == ['set1', 'set2']
+
+ flag_sets = input_validator.validate_flag_sets(['se\t1', 's/et2', 's*et3', 's!et4', 'se@t5', 'se#t5', 'se$t5', 'se^t5', 'se%t5', 'se&t5'], 'method')
+ assert flag_sets == []
+
+ flag_sets = input_validator.validate_flag_sets(['set4', 'set1', 'set3', 'set1'], 'method')
+ assert sorted(flag_sets) == ['set1', 'set3', 'set4']
+
+ flag_sets = input_validator.validate_flag_sets(['w' * 50, 's' * 51], 'method')
+ assert flag_sets == ['w' * 50]
+
+ flag_sets = input_validator.validate_flag_sets('set1', 'method')
+ assert flag_sets == []
+
+ flag_sets = input_validator.validate_flag_sets([12, 33], 'method')
+ assert flag_sets == []
+
+ def test_fallback_treatments(self, mocker):
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert input_validator.validate_fallback_treatment(FallbackTreatment("on", {"prop":"val"}))
+ assert input_validator.validate_fallback_treatment(FallbackTreatment("on"))
+
+ _logger.reset_mock()
+ assert not input_validator.validate_fallback_treatment(FallbackTreatment("on" * 100))
+ assert _logger.warning.mock_calls == [
+ mocker.call("Config: Fallback treatment size should not exceed %s characters", 100)
+ ]
+
+ assert input_validator.validate_fallback_treatment(FallbackTreatment("on", {"prop" * 500:"val" * 500}))
+
+ _logger.reset_mock()
+ assert not input_validator.validate_fallback_treatment(FallbackTreatment("on/c"))
+ assert _logger.warning.mock_calls == [
+ mocker.call("Config: Fallback treatment should match regex %s", "^[0-9]+[.a-zA-Z0-9_-]*$|^[a-zA-Z]+[a-zA-Z0-9_-]*$")
+ ]
+
+ _logger.reset_mock()
+ assert not input_validator.validate_fallback_treatment(FallbackTreatment("on$as"))
+ assert _logger.warning.mock_calls == [
+ mocker.call("Config: Fallback treatment should match regex %s", "^[0-9]+[.a-zA-Z0-9_-]*$|^[a-zA-Z]+[a-zA-Z0-9_-]*$")
+ ]
+
+ assert input_validator.validate_fallback_treatment(FallbackTreatment("on_c"))
+ assert input_validator.validate_fallback_treatment(FallbackTreatment("on_45-c"))
+
+class ClientInputValidationAsyncTests(object):
+ """Input validation test cases."""
+
+ @pytest.mark.asyncio
+ async def test_get_treatment(self, mocker):
+ """Test get_treatment validation."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_mock = mocker.Mock(spec=Split)
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ async def fetch_many(*_):
+ return {
+ 'some_feature': split_mock
+ }
+ storage_mock.fetch_many = fetch_many
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ async def fetch_many_rbs(*_):
+ return {}
+ rbs_storage.fetch_many = fetch_many_rbs
+
+ async def get_change_number(*_):
+ return 1
+ storage_mock.get_change_number = get_change_number
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(spec=EventStorage), ImpressionStorage, telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ impmanager,
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = ClientAsync(factory, mocker.Mock(), events_manager, mocker.Mock(), FallbackTreatmentCalculator(None))
+
+ async def record_treatment_stats(*_):
+ pass
+ client._recorder.record_treatment_stats = record_treatment_stats
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await client.get_treatment(None, 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('', 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ key = ''.join('a' for _ in range(0, 255))
+ assert await client.get_treatment(key, 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatment', 'key', 250)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(12345, 'some_feature') == 'default_treatment'
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(float('nan'), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(float('inf'), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(True, 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment([], 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('some_key', None) == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('some_key', 123) == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('some_key', True) == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('some_key', []) == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('some_key', '') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('some_key', 'some_feature') == 'default_treatment'
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key(None, 'bucketing_key'), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key('', 'bucketing_key'), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key(float('nan'), 'bucketing_key'), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key(float('inf'), 'bucketing_key'), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key(True, 'bucketing_key'), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key([], 'bucketing_key'), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key(12345, 'bucketing_key'), 'some_feature') == 'default_treatment'
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment', 'matching_key', 12345)
+ ]
+
+ _logger.reset_mock()
+ key = ''.join('a' for _ in range(0, 255))
+ assert await client.get_treatment(Key(key, 'bucketing_key'), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatment', 'matching_key', 250)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key('matching_key', None), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'bucketing_key', 'bucketing_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key('matching_key', True), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'bucketing_key', 'bucketing_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key('matching_key', []), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'bucketing_key', 'bucketing_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key('matching_key', ''), 'some_feature') == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'bucketing_key', 'bucketing_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment(Key('matching_key', 12345), 'some_feature') == 'default_treatment'
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment', 'bucketing_key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('matching_key', 'some_feature', True) == CONTROL
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: attributes must be of type dictionary.', 'get_treatment')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment('matching_key', 'some_feature', {'test': 'test'}) == 'default_treatment'
+ assert _logger.error.mock_calls == []
+
+ _logger.reset_mock()
+ assert await client.get_treatment('matching_key', 'some_feature', None) == 'default_treatment'
+ assert _logger.error.mock_calls == []
+
+ _logger.reset_mock()
+ assert await client.get_treatment('matching_key', ' some_feature ', None) == 'default_treatment'
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatment', 'feature flag name', ' some_feature ')
+ ]
+
+ _logger.reset_mock()
+ async def fetch_many(*_):
+ return {'some_feature': None}
+ storage_mock.fetch_many = fetch_many
+
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert await client.get_treatment('matching_key', 'some_feature', None) == CONTROL
+ assert _logger.warning.mock_calls == [
+ mocker.call(
+ "%s: you passed \"%s\" that does not exist in this environment, "
+ "please double check what Feature flags exist in the Split user interface.",
+ 'get_treatment',
+ 'some_feature'
+ )
+ ]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatment_with_config(self, mocker):
+ """Test get_treatment validation."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_mock = mocker.Mock(spec=Split)
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+
+ def _configs(treatment):
+ return '{"some": "property"}' if treatment == 'default_treatment' else None
+ split_mock.get_configurations_for.side_effect = _configs
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ async def fetch_many(*_):
+ return {
+ 'some_feature': split_mock
+ }
+ storage_mock.fetch_many = fetch_many
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ async def fetch_many_rbs(*_):
+ return {}
+ rbs_storage.fetch_many = fetch_many_rbs
+
+ async def get_change_number(*_):
+ return 1
+ storage_mock.get_change_number = get_change_number
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(spec=EventStorage), ImpressionStorage, telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ impmanager,
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = ClientAsync(factory, mocker.Mock(), events_manager, mocker.Mock(), FallbackTreatmentCalculator(None))
+ async def record_treatment_stats(*_):
+ pass
+ client._recorder.record_treatment_stats = record_treatment_stats
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await client.get_treatment_with_config(None, 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('', 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ key = ''.join('a' for _ in range(0, 255))
+ assert await client.get_treatment_with_config(key, 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatment_with_config', 'key', 250)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(12345, 'some_feature') == ('default_treatment', '{"some": "property"}')
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment_with_config', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(float('nan'), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(float('inf'), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(True, 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config([], 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('some_key', None) == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('some_key', 123) == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('some_key', True) == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('some_key', []) == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('some_key', '') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('some_key', 'some_feature') == ('default_treatment', '{"some": "property"}')
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key(None, 'bucketing_key'), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key('', 'bucketing_key'), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key(float('nan'), 'bucketing_key'), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key(float('inf'), 'bucketing_key'), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key(True, 'bucketing_key'), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key([], 'bucketing_key'), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'matching_key', 'matching_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key(12345, 'bucketing_key'), 'some_feature') == ('default_treatment', '{"some": "property"}')
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment_with_config', 'matching_key', 12345)
+ ]
+
+ _logger.reset_mock()
+ key = ''.join('a' for _ in range(0, 255))
+ assert await client.get_treatment_with_config(Key(key, 'bucketing_key'), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatment_with_config', 'matching_key', 250)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key('matching_key', None), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'bucketing_key', 'bucketing_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key('matching_key', True), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'bucketing_key', 'bucketing_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key('matching_key', []), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'bucketing_key', 'bucketing_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key('matching_key', ''), 'some_feature') == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'bucketing_key', 'bucketing_key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config(Key('matching_key', 12345), 'some_feature') == ('default_treatment', '{"some": "property"}')
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatment_with_config', 'bucketing_key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('matching_key', 'some_feature', True) == (CONTROL, None)
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: attributes must be of type dictionary.', 'get_treatment_with_config')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('matching_key', 'some_feature', {'test': 'test'}) == ('default_treatment', '{"some": "property"}')
+ assert _logger.error.mock_calls == []
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('matching_key', 'some_feature', None) == ('default_treatment', '{"some": "property"}')
+ assert _logger.error.mock_calls == []
+
+ _logger.reset_mock()
+ assert await client.get_treatment_with_config('matching_key', ' some_feature ', None) == ('default_treatment', '{"some": "property"}')
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatment_with_config', 'feature flag name', ' some_feature ')
+ ]
+
+ _logger.reset_mock()
+ async def fetch_many(*_):
+ return {'some_feature': None}
+ storage_mock.fetch_many = fetch_many
+
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert await client.get_treatment_with_config('matching_key', 'some_feature', None) == (CONTROL, None)
+ assert _logger.warning.mock_calls == [
+ mocker.call(
+ "%s: you passed \"%s\" that does not exist in this environment, "
+ "please double check what Feature flags exist in the Split user interface.",
+ 'get_treatment_with_config',
+ 'some_feature'
+ )
+ ]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_track(self, mocker):
+ """Test track method()."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ events_storage_mock = mocker.Mock(spec=EventStorage)
+ async def put(*_):
+ return True
+ events_storage_mock.put = put
+
+ event_storage = mocker.Mock(spec=EventStorage)
+ event_storage.put = put
+ split_storage_mock = mocker.Mock(spec=SplitStorage)
+ split_storage_mock.is_valid_traffic_type = put
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, events_storage_mock, ImpressionStorage, telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': split_storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': mocker.Mock(spec=RuleBasedSegmentsStorage),
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': events_storage_mock,
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ impmanager,
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ factory._sdk_key = 'some-test'
+
+ client = ClientAsync(factory, recorder, events_manager, mocker.Mock(), FallbackTreatmentCalculator(None))
+ client._event_storage = event_storage
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await client.track(None, "traffic_type", "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'track', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("", "traffic_type", "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'track', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track(12345, "traffic_type", "event_type", 1) is True
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: %s %s is not of type string, converting.", 'track', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.track(True, "traffic_type", "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track([], "traffic_type", "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ key = ''.join('a' for _ in range(0, 255))
+ assert await client.track(key, "traffic_type", "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: %s too long - must be %s characters or less.", 'track', 'key', 250)
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", None, "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "", "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", 12345, "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", True, "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", [], "event_type", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'traffic_type', 'traffic_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "TRAFFIC_type", "event_type", 1) is True
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: %s '%s' should be all lowercase - converting string to lowercase", 'track', 'traffic type', 'TRAFFIC_type')
+ ]
+
+ assert await client.track("some_key", "traffic_type", None, 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", True, 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", [], 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", 12345, 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'track', 'event_type', 'event_type')
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "@@", 1) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
+ "expression %s. This means "
+ "%s must be alphanumeric, cannot be more than %s "
+ "characters long, and can only include a dash, underscore, "
+ "period, or colon as separators of alphanumeric characters.",
+ 'track', '@@', 'an event name', '^[a-zA-Z0-9][-_.:a-zA-Z0-9]{0,79}$', 'an event name', 80)
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", None) is True
+ assert _logger.error.mock_calls == []
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", 1) is True
+ assert _logger.error.mock_calls == []
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", 1.23) is True
+ assert _logger.error.mock_calls == []
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", "test") is False
+ assert _logger.error.mock_calls == [
+ mocker.call("track: value must be a number.")
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", True) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("track: value must be a number.")
+ ]
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", []) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("track: value must be a number.")
+ ]
+
+ # Test traffic type existance
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ # Test that it doesn't warn if tt is cached, not in localhost mode and sdk is ready
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", None) is True
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
+
+ # Test that it does warn if tt is cached, not in localhost mode and sdk is ready
+ async def is_valid_traffic_type(*_):
+ return False
+ split_storage_mock.is_valid_traffic_type = is_valid_traffic_type
+
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", None) is True
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == [mocker.call(
+ 'track: Traffic Type %s does not have any corresponding Feature flags in this environment, '
+ 'make sure you\'re tracking your events to a valid traffic type defined '
+ 'in the Split user interface.',
+ 'traffic_type'
+ )]
+
+ # Test that it does not warn when in localhost mode.
+ factory._sdk_key = 'localhost'
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", None) is True
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
+
+ # Test that it does not warn when not in localhost mode and not ready
+ factory._sdk_key = 'not-localhost'
+ ready_property.return_value = False
+ type(factory).ready = ready_property
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", None) is True
+ assert _logger.error.mock_calls == []
+ assert _logger.warning.mock_calls == []
+
+ # Test track with invalid properties
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", 1, []) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: properties must be of type dictionary.", "track")
+ ]
+
+ # Test track with invalid properties
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", 1, True) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: properties must be of type dictionary.", "track")
+ ]
+
+ # Test track with properties
+ props1 = {
+ "test1": "test",
+ "test2": 1,
+ "test3": True,
+ "test4": None,
+ "test5": [],
+ 2: "t",
+ }
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", 1, props1) is True
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: Property %s is of invalid type. Setting value to None", "track", [])
+ ]
+
+ # Test track with more than 300 properties
+ props2 = dict()
+ for i in range(301):
+ props2[str(i)] = i
+ _logger.reset_mock()
+ assert await client.track("some_key", "traffic_type", "event_type", 1, props2) is True
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: Event has more than 300 properties. Some of them will be trimmed when processed", "track")
+ ]
+
+ # Test track with properties higher than 32kb
+ _logger.reset_mock()
+ props3 = dict()
+ for i in range(100, 210):
+ props3["prop" + str(i)] = "a" * 300
+ assert await client.track("some_key", "traffic_type", "event_type", 1, props3) is False
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: The maximum size allowed for the properties is 32768 bytes. Current one is 32952 bytes. Event not queued", "track")
+ ]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments(self, mocker):
+ """Test getTreatments() method."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_mock = mocker.Mock(spec=Split)
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ async def get(*_):
+ return split_mock
+ storage_mock.get = get
+ async def get_change_number(*_):
+ return 1
+ storage_mock.get_change_number = get_change_number
+ async def fetch_many(*_):
+ return {
+ 'some_feature': split_mock,
+ 'some': split_mock,
+ }
+ storage_mock.fetch_many = fetch_many
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ async def fetch_many_rbs(*_):
+ return {}
+ rbs_storage.fetch_many = fetch_many_rbs
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ impmanager,
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = ClientAsync(factory, recorder, events_manager, mocker.Mock(), FallbackTreatmentCalculator(None))
+ async def record_treatment_stats(*_):
+ pass
+ client._recorder.record_treatment_stats = record_treatment_stats
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await client.get_treatments(None, ['some_feature']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments("", ['some_feature']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments', 'key', 'key')
+ ]
+
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert await client.get_treatments(key, ['some_feature']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments', 'key', 250)
+ ]
+
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
+ assert await client.get_treatments(12345, ['some_feature']) == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments(True, ['some_feature']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments([], ['some_feature']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', None) == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', True) == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', 'some_string') == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', []) == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', [None, None]) == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', [True]) == {}
+ assert mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments') in _logger.error.mock_calls
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', ['', '']) == {}
+ assert mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments') in _logger.error.mock_calls
+
+ _logger.reset_mock()
+ assert await client.get_treatments('some_key', ['some_feature ']) == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments', 'feature flag name', 'some_feature ')
+ ]
+
+ _logger.reset_mock()
+ async def fetch_many(*_):
+ return {
+ 'some_feature': None
+ }
+ storage_mock.fetch_many = fetch_many
+
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert await client.get_treatments('matching_key', ['some_feature'], None) == {'some_feature': CONTROL}
+ assert _logger.warning.mock_calls == [
+ mocker.call(
+ "%s: you passed \"%s\" that does not exist in this environment, "
+ "please double check what Feature flags exist in the Split user interface.",
+ 'get_treatments',
+ 'some_feature'
+ )
+ ]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config(self, mocker):
+ """Test getTreatments() method."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_mock = mocker.Mock(spec=Split)
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ async def get(*_):
+ return split_mock
+ storage_mock.get = get
+ async def get_change_number(*_):
+ return 1
+ storage_mock.get_change_number = get_change_number
+ async def fetch_many(*_):
+ return {
+ 'some_feature': split_mock
+ }
+ storage_mock.fetch_many = fetch_many
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ async def fetch_many_rbs(*_):
+ return {}
+ rbs_storage.fetch_many = fetch_many_rbs
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ impmanager,
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ split_mock.name = 'some_feature'
+
+ def _configs(treatment):
+ return '{"some": "property"}' if treatment == 'default_treatment' else None
+ split_mock.get_configurations_for.side_effect = _configs
+
+ client = ClientAsync(factory, mocker.Mock(), events_manager, mocker.Mock(), FallbackTreatmentCalculator(None))
+ async def record_treatment_stats(*_):
+ pass
+ client._recorder.record_treatment_stats = record_treatment_stats
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await client.get_treatments_with_config(None, ['some_feature']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_with_config', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config("", ['some_feature']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_with_config', 'key', 'key')
+ ]
+
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config(key, ['some_feature']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_with_config', 'key', 250)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config(12345, ['some_feature']) == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_with_config', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config(True, ['some_feature']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config([], ['some_feature']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config('some_key', None) == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config('some_key', True) == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config('some_key', 'some_string') == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config('some_key', []) == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config('some_key', [None, None]) == {}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config('some_key', [True]) == {}
+ assert mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config') in _logger.error.mock_calls
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config('some_key', ['', '']) == {}
+ assert mocker.call('%s: feature flag names must be a non-empty array.', 'get_treatments_with_config') in _logger.error.mock_calls
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config('some_key', ['some_feature ']) == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_with_config', 'feature flag name', 'some_feature ')
+ ]
+
+ _logger.reset_mock()
+ async def fetch_many(*_):
+ return {
+ 'some_feature': None
+ }
+ storage_mock.fetch_many = fetch_many
+
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert await client.get_treatments('matching_key', ['some_feature'], None) == {'some_feature': CONTROL}
+ assert _logger.warning.mock_calls == [
+ mocker.call(
+ "%s: you passed \"%s\" that does not exist in this environment, "
+ "please double check what Feature flags exist in the Split user interface.",
+ 'get_treatments',
+ 'some_feature'
+ )
+ ]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_set(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_mock = mocker.Mock(spec=Split)
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ async def get(*_):
+ return split_mock
+ storage_mock.get = get
+ async def get_change_number(*_):
+ return 1
+ storage_mock.get_change_number = get_change_number
+ async def fetch_many(*_):
+ return {
+ 'some_feature': split_mock,
+ 'some': split_mock,
+ }
+ storage_mock.fetch_many = fetch_many
+ async def get_feature_flags_by_sets(*_):
+ return ['some_feature']
+ storage_mock.get_feature_flags_by_sets = get_feature_flags_by_sets
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ async def fetch_many_rbs(*_):
+ return {}
+ rbs_storage.fetch_many = fetch_many_rbs
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = ClientAsync(factory, recorder, events_manager, mocker.Mock(), FallbackTreatmentCalculator(None))
+ async def record_treatment_stats(*_):
+ pass
+ client._recorder.record_treatment_stats = record_treatment_stats
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await client.get_treatments_by_flag_set(None, 'some_flag') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_set("", 'some_flag') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_by_flag_set', 'key', 'key')
+ ]
+
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_set(key, 'some_flag') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_by_flag_set', 'key', 250)
+ ]
+
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_set(12345, 'some_flag') == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_by_flag_set', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_set(True, 'some_flag') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_set([], 'some_flag') == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_by_flag_set('some_key', None)
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.",
+ 'get_treatments_by_flag_set', 'flag set', 'flag set')
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_by_flag_set('some_key', "$$")
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
+ "expression %s. This means "
+ "%s must be alphanumeric, cannot be more than %s "
+ "characters long, and can only include a dash, underscore, "
+ "period, or colon as separators of alphanumeric characters.",
+ 'get_treatments_by_flag_set', '$$', 'a flag set', '^[a-z0-9][_a-z0-9]{0,49}$', 'a flag set', 50)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_set('some_key', 'some_flag ') == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_by_flag_set', 'flag set', 'some_flag ')
+ ]
+
+ _logger.reset_mock()
+ async def fetch_many(*_):
+ return {
+ 'some_feature': None
+ }
+ storage_mock.fetch_many = fetch_many
+
+ async def get_feature_flags_by_sets(*_):
+ return []
+ storage_mock.get_feature_flags_by_sets = get_feature_flags_by_sets
+
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert await client.get_treatments_by_flag_set('matching_key', 'some_flag', None) == {}
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: No valid Flag set or no feature flags found for evaluating treatments", "get_treatments_by_flag_set")
+ ]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_sets(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_mock = mocker.Mock(spec=Split)
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ async def get(*_):
+ return split_mock
+ storage_mock.get = get
+ async def get_change_number(*_):
+ return 1
+ storage_mock.get_change_number = get_change_number
+ async def fetch_many(*_):
+ return {
+ 'some_feature': split_mock,
+ 'some': split_mock,
+ }
+ storage_mock.fetch_many = fetch_many
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ async def fetch_many_rbs(*_):
+ return {}
+ rbs_storage.fetch_many = fetch_many_rbs
+
+ async def get_feature_flags_by_sets(*_):
+ return ['some_feature']
+ storage_mock.get_feature_flags_by_sets = get_feature_flags_by_sets
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = ClientAsync(factory, recorder, events_manager, mocker.Mock(), FallbackTreatmentCalculator(None))
+ async def record_treatment_stats(*_):
+ pass
+ client._recorder.record_treatment_stats = record_treatment_stats
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await client.get_treatments_by_flag_sets(None, ['some_flag']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_by_flag_sets', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_sets("", ['some_flag']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_by_flag_sets', 'key', 'key')
+ ]
+
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_sets(key, ['some_flag']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_by_flag_sets', 'key', 250)
+ ]
+
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_sets(12345, ['some_flag']) == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_by_flag_sets', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_sets(True, ['some_flag']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_by_flag_sets', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_sets([], ['some_flag']) == {'some_feature': CONTROL}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_by_flag_sets', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_by_flag_sets('some_key', None)
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: flag sets parameter type should be list object, parameter is discarded", "get_treatments_by_flag_sets")
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_by_flag_sets('some_key', [None])
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.",
+ 'get_treatments_by_flag_sets', 'flag set', 'flag set')
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_by_flag_sets('some_key', ["$$"])
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
+ "expression %s. This means "
+ "%s must be alphanumeric, cannot be more than %s "
+ "characters long, and can only include a dash, underscore, "
+ "period, or colon as separators of alphanumeric characters.",
+ 'get_treatments_by_flag_sets', '$$', 'a flag set', '^[a-z0-9][_a-z0-9]{0,49}$', 'a flag set', 50)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_by_flag_sets('some_key', ['some_flag ']) == {'some_feature': 'default_treatment'}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_by_flag_sets', 'flag set', 'some_flag ')
+ ]
+
+ _logger.reset_mock()
+ async def fetch_many(*_):
+ return {
+ 'some_feature': None
+ }
+ storage_mock.fetch_many = fetch_many
+
+ async def get_feature_flags_by_sets(*_):
+ return []
+ storage_mock.get_feature_flags_by_sets = get_feature_flags_by_sets
+
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert await client.get_treatments_by_flag_sets('matching_key', ['some_flag'], None) == {}
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: No valid Flag set or no feature flags found for evaluating treatments", "get_treatments_by_flag_sets")
+ ]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_set(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_mock = mocker.Mock(spec=Split)
+ def _configs(treatment):
+ return '{"some": "property"}' if treatment == 'default_treatment' else None
+ split_mock.get_configurations_for.side_effect = _configs
+ split_mock.name = 'some_feature'
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ async def get(*_):
+ return split_mock
+ storage_mock.get = get
+ async def get_change_number(*_):
+ return 1
+ storage_mock.get_change_number = get_change_number
+ async def fetch_many(*_):
+ return {
+ 'some_feature': split_mock,
+ 'some': split_mock,
+ }
+ storage_mock.fetch_many = fetch_many
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ async def fetch_many_rbs(*_):
+ return {}
+ rbs_storage.fetch_many = fetch_many_rbs
+ async def get_feature_flags_by_sets(*_):
+ return ['some_feature']
+ storage_mock.get_feature_flags_by_sets = get_feature_flags_by_sets
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = ClientAsync(factory, recorder, events_manager, mocker.Mock(), FallbackTreatmentCalculator(None))
+ async def record_treatment_stats(*_):
+ pass
+ client._recorder.record_treatment_stats = record_treatment_stats
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await client.get_treatments_with_config_by_flag_set(None, 'some_flag') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_set("", 'some_flag') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_set', 'key', 'key')
+ ]
+
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_set(key, 'some_flag') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_with_config_by_flag_set', 'key', 250)
+ ]
+
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_set(12345, 'some_flag') == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_with_config_by_flag_set', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_set(True, 'some_flag') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_set([], 'some_flag') == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_set', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_with_config_by_flag_set('some_key', None)
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.",
+ 'get_treatments_with_config_by_flag_set', 'flag set', 'flag set')
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_with_config_by_flag_set('some_key', "$$")
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
+ "expression %s. This means "
+ "%s must be alphanumeric, cannot be more than %s "
+ "characters long, and can only include a dash, underscore, "
+ "period, or colon as separators of alphanumeric characters.",
+ 'get_treatments_with_config_by_flag_set', '$$', 'a flag set', '^[a-z0-9][_a-z0-9]{0,49}$', 'a flag set', 50)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_set('some_key', 'some_flag ') == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_with_config_by_flag_set', 'flag set', 'some_flag ')
+ ]
+
+ _logger.reset_mock()
+ async def fetch_many(*_):
+ return {
+ 'some_feature': None
+ }
+ storage_mock.fetch_many = fetch_many
+
+ async def get_feature_flags_by_sets(*_):
+ return []
+ storage_mock.get_feature_flags_by_sets = get_feature_flags_by_sets
+
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert await client.get_treatments_with_config_by_flag_set('matching_key', 'some_flag', None) == {}
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: No valid Flag set or no feature flags found for evaluating treatments", "get_treatments_with_config_by_flag_set")
+ ]
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_sets(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ split_mock = mocker.Mock(spec=Split)
+ def _configs(treatment):
+ return '{"some": "property"}' if treatment == 'default_treatment' else None
+ split_mock.get_configurations_for.side_effect = _configs
+ default_treatment_mock = mocker.PropertyMock()
+ default_treatment_mock.return_value = 'default_treatment'
+ type(split_mock).default_treatment = default_treatment_mock
+ conditions_mock = mocker.PropertyMock()
+ conditions_mock.return_value = []
+ type(split_mock).conditions = conditions_mock
+ type(split_mock).prerequisites = []
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ async def get(*_):
+ return split_mock
+ storage_mock.get = get
+ async def get_change_number(*_):
+ return 1
+ storage_mock.get_change_number = get_change_number
+ async def fetch_many(*_):
+ return {
+ 'some_feature': split_mock,
+ 'some': split_mock,
+ }
+ storage_mock.fetch_many = fetch_many
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ async def fetch_many_rbs(*_):
+ return {}
+ rbs_storage.fetch_many = fetch_many_rbs
+
+ async def get_feature_flags_by_sets(*_):
+ return ['some_feature']
+ storage_mock.get_feature_flags_by_sets = get_feature_flags_by_sets
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': rbs_storage,
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ None
+ )
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+
+ client = ClientAsync(factory, recorder, events_manager, mocker.Mock(), FallbackTreatmentCalculator(None))
+ async def record_treatment_stats(*_):
+ pass
+ client._recorder.record_treatment_stats = record_treatment_stats
+
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await client.get_treatments_with_config_by_flag_sets(None, ['some_flag']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_sets', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_sets("", ['some_flag']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_sets', 'key', 'key')
+ ]
+
+ key = ''.join('a' for _ in range(0, 255))
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_sets(key, ['some_flag']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: %s too long - must be %s characters or less.', 'get_treatments_with_config_by_flag_sets', 'key', 250)
+ ]
+
+ split_mock.name = 'some_feature'
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_sets(12345, ['some_flag']) == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s %s is not of type string, converting.', 'get_treatments_with_config_by_flag_sets', 'key', 12345)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_sets(True, ['some_flag']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_sets', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_sets([], ['some_flag']) == {'some_feature': (CONTROL, None)}
+ assert _logger.error.mock_calls == [
+ mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatments_with_config_by_flag_sets', 'key', 'key')
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_with_config_by_flag_sets('some_key', None)
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: flag sets parameter type should be list object, parameter is discarded", "get_treatments_with_config_by_flag_sets")
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_with_config_by_flag_sets('some_key', [None])
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.",
+ 'get_treatments_with_config_by_flag_sets', 'flag set', 'flag set')
+ ]
+
+ _logger.reset_mock()
+ await client.get_treatments_with_config_by_flag_sets('some_key', ["$$"])
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed %s, %s must adhere to the regular "
+ "expression %s. This means "
+ "%s must be alphanumeric, cannot be more than %s "
+ "characters long, and can only include a dash, underscore, "
+ "period, or colon as separators of alphanumeric characters.",
+ 'get_treatments_with_config_by_flag_sets', '$$', 'a flag set', '^[a-z0-9][_a-z0-9]{0,49}$', 'a flag set', 50)
+ ]
+
+ _logger.reset_mock()
+ assert await client.get_treatments_with_config_by_flag_sets('some_key', ['some_flag ']) == {'some_feature': ('default_treatment', '{"some": "property"}')}
+ assert _logger.warning.mock_calls == [
+ mocker.call('%s: %s \'%s\' has extra whitespace, trimming.', 'get_treatments_with_config_by_flag_sets', 'flag set', 'some_flag ')
+ ]
+
+ _logger.reset_mock()
+ async def fetch_many(*_):
+ return {
+ 'some_feature': None
+ }
+ storage_mock.fetch_many = fetch_many
+
+ async def get_feature_flags_by_sets(*_):
+ return []
+ storage_mock.get_feature_flags_by_sets = get_feature_flags_by_sets
+
+ ready_mock = mocker.PropertyMock()
+ ready_mock.return_value = True
+ type(factory).ready = ready_mock
+ mocker.patch('splitio.client.client._LOGGER', new=_logger)
+ assert await client.get_treatments_with_config_by_flag_sets('matching_key', ['some_flag'], None) == {}
+ assert _logger.warning.mock_calls == [
+ mocker.call("%s: No valid Flag set or no feature flags found for evaluating treatments", "get_treatments_with_config_by_flag_sets")
+ ]
+ await factory.destroy()
+
+
+ def test_flag_sets_validation(self):
+ """Test sanitization for flag sets."""
+ flag_sets = input_validator.validate_flag_sets([' set1', 'set2 ', 'set3'], 'method')
+ assert sorted(flag_sets) == ['set1', 'set2', 'set3']
+
+ flag_sets = input_validator.validate_flag_sets(['1set', '_set2'], 'method')
+ assert flag_sets == ['1set']
+
+ flag_sets = input_validator.validate_flag_sets(['Set1', 'SET2'], 'method')
+ assert sorted(flag_sets) == ['set1', 'set2']
+
+ flag_sets = input_validator.validate_flag_sets(['se\t1', 's/et2', 's*et3', 's!et4', 'se@t5', 'se#t5', 'se$t5', 'se^t5', 'se%t5', 'se&t5'], 'method')
+ assert flag_sets == []
+
+ flag_sets = input_validator.validate_flag_sets(['set4', 'set1', 'set3', 'set1'], 'method')
+ assert sorted(flag_sets) == ['set1', 'set3', 'set4']
+
+ flag_sets = input_validator.validate_flag_sets(['w' * 50, 's' * 51], 'method')
+ assert flag_sets == ['w' * 50]
+
+ flag_sets = input_validator.validate_flag_sets('set1', 'method')
+ assert flag_sets == []
+
+ flag_sets = input_validator.validate_flag_sets([12, 33], 'method')
+ assert flag_sets == []
+
+
+class ManagerInputValidationTests(object): #pylint: disable=too-few-public-methods
+ """Manager input validation test cases."""
+
+ def test_split_(self, mocker):
+ """Test split input validation."""
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ split_mock = mocker.Mock(spec=Split)
+ storage_mock.get.return_value = split_mock
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': mocker.Mock(spec=RuleBasedSegmentsStorage),
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ manager = SplitManager(factory)
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert manager.split(None) is None
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert manager.split("") is None
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert manager.split(True) is None
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert manager.split([]) is None
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ manager.split('some_split')
+ assert split_mock.to_split_view.mock_calls == [mocker.call()]
+ assert _logger.error.mock_calls == []
+
+ _logger.reset_mock()
+ split_mock.reset_mock()
+ storage_mock.get.return_value = None
+ manager.split('nonexistant-split')
+ assert split_mock.to_split_view.mock_calls == []
+ assert _logger.warning.mock_calls == [mocker.call(
+ "split: you passed \"%s\" that does not exist in this environment, "
+ "please double check what Feature flags exist in the Split user interface.",
+ 'nonexistant-split'
+ )]
+
+class ManagerInputValidationAsyncTests(object): #pylint: disable=too-few-public-methods
+ """Manager input validation test cases."""
+
+ @pytest.mark.asyncio
+ async def test_split_(self, mocker):
+ """Test split input validation."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = mocker.Mock(EventsManagerAsync)
+ async def notify_internal_event(sdk_internal_event, event_metadata):
+ pass
+ events_manager.notify_internal_event = notify_internal_event
+
+ storage_mock = mocker.Mock(spec=SplitStorage)
+ split_mock = mocker.Mock(spec=Split)
+ async def get(*_):
+ return split_mock
+ storage_mock.get = get
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(spec=EventStorage), mocker.Mock(spec=ImpressionStorage), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactoryAsync(mocker.Mock(),
+ {
+ 'splits': storage_mock,
+ 'segments': mocker.Mock(spec=SegmentStorage),
+ 'rule_based_segments': mocker.Mock(spec=RuleBasedSegmentsStorage),
+ 'impressions': mocker.Mock(spec=ImpressionStorage),
+ 'events': mocker.Mock(spec=EventStorage),
+ },
+ mocker.Mock(),
+ recorder,
+ internal_events_queue,
+ events_manager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock()
+ )
+
+ manager = SplitManagerAsync(factory)
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.input_validator._LOGGER', new=_logger)
+
+ assert await manager.split(None) is None
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await manager.split("") is None
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await manager.split(True) is None
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ assert await manager.split([]) is None
+ assert _logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
+ ]
+
+ _logger.reset_mock()
+ await manager.split('some_split')
+ assert split_mock.to_split_view.mock_calls == [mocker.call()]
+ assert _logger.error.mock_calls == []
+
+ _logger.reset_mock()
+ split_mock.reset_mock()
+ async def get(*_):
+ return None
+ storage_mock.get = get
+
+ await manager.split('nonexistant-split')
+ assert split_mock.to_split_view.mock_calls == []
+ assert _logger.warning.mock_calls == [mocker.call(
+ "split: you passed \"%s\" that does not exist in this environment, "
+ "please double check what Feature flags exist in the Split user interface.",
+ 'nonexistant-split'
+ )]
+
+class FactoryInputValidationTests(object): #pylint: disable=too-few-public-methods
+ """Factory instantiation input validation test cases."""
+
+ def test_input_validation_factory(self, mocker):
+ """Test the input validators for factory instantiation."""
+ logger = mocker.Mock(spec=logging.Logger)
+ mocker.patch('splitio.client.input_validator._LOGGER', new=logger)
+
+ assert get_factory(None) is None
+ assert logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'factory_instantiation', 'sdk_key', 'sdk_key')
+ ]
+
+ logger.reset_mock()
+ assert get_factory('') is None
+ assert logger.error.mock_calls == [
+ mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'factory_instantiation', 'sdk_key', 'sdk_key')
+ ]
+
+ logger.reset_mock()
+ assert get_factory(True) is None
+ assert logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'factory_instantiation', 'sdk_key', 'sdk_key')
+ ]
+
+ logger.reset_mock()
+ try:
+ f = get_factory(True, config={'redisHost': 'localhost'})
+ except:
+ pass
+ assert logger.error.mock_calls == []
+ f.destroy()
+
+
+class FactoryInputValidationAsyncTests(object): #pylint: disable=too-few-public-methods
+ """Factory instantiation input validation test cases."""
+
+ @pytest.mark.asyncio
+ async def test_input_validation_factory(self, mocker):
+ """Test the input validators for factory instantiation."""
+ logger = mocker.Mock(spec=logging.Logger)
+ mocker.patch('splitio.client.input_validator._LOGGER', new=logger)
+
+ assert await get_factory_async(None) is None
+ assert logger.error.mock_calls == [
+ mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'factory_instantiation', 'sdk_key', 'sdk_key')
+ ]
+
+ logger.reset_mock()
+ assert await get_factory_async('') is None
+ assert logger.error.mock_calls == [
+ mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'factory_instantiation', 'sdk_key', 'sdk_key')
+ ]
+
+ logger.reset_mock()
+ assert await get_factory_async(True) is None
+ assert logger.error.mock_calls == [
+ mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'factory_instantiation', 'sdk_key', 'sdk_key')
+ ]
+
+ logger.reset_mock()
+ try:
+ f = await get_factory_async(True, config={'redisHost': 'localhost'})
+ except:
+ pass
+ assert logger.error.mock_calls == []
+ await f.destroy()
+
+class PluggableInputValidationTests(object): #pylint: disable=too-few-public-methods
+ """Pluggable adapter instance validation test cases."""
+
+ class mock_adapter0():
+ def set(self, key, value):
+ print(key)
+
+ class mock_adapter1(object):
+ def set(self, key, value):
+ print(key)
+
+ class mock_adapter2(mock_adapter1):
+ def get(self, key):
+ print(key)
+
+ def get_items(self, key):
+ print(key)
+
+ def get_many(self, keys):
+ print(keys)
+
+ def push_items(self, key, *value):
+ print(key)
+
+ def delete(self, key):
+ print(key)
+
+ def increment(self, key, value):
+ print(key)
+
+ def decrement(self, key, value):
+ print(key)
+
+ def get_keys_by_prefix(self, prefix):
+ print(prefix)
+
+ def get_many(self, keys):
+ print(keys)
+
+ def add_items(self, key, added_items):
+ print(key)
+
+ def remove_items(self, key, removed_items):
+ print(key)
+
+ def item_contains(self, key, item):
+ print(key)
+
+ def get_items_count(self, key):
+ print(key)
+
+ class mock_adapter3(mock_adapter2):
+ def expire(self, key):
+ print(key)
+
+ class mock_adapter4(mock_adapter2):
+ def expire(self, key, value, till):
+ print(key)
+
+ def test_validate_pluggable_adapter(self):
+ # missing storageWrapper config parameter
+ assert(not input_validator.validate_pluggable_adapter({'storageType': 'pluggable'}))
+
+ # ignore if storage type is not pluggable
+ assert(input_validator.validate_pluggable_adapter({'storageType': 'memory'}))
+
+ # mock adapter is not derived from object class
+ assert(not input_validator.validate_pluggable_adapter({'storageType': 'pluggable', 'pe': self.mock_adapter0()}))
+
+ # mock adapter missing many functions
+ assert(not input_validator.validate_pluggable_adapter({'storageType': 'pluggable', 'storageWrapper': self.mock_adapter1()}))
+
+ # mock adapter missing expire function
+ assert(not input_validator.validate_pluggable_adapter({'storageType': 'pluggable', 'storageWrapper': self.mock_adapter2()}))
+
+ # mock adapter expire function has incrrect args count
+ assert(not input_validator.validate_pluggable_adapter({'storageType': 'pluggable', 'storageWrapper': self.mock_adapter3()}))
+
+ # expected mock adapter should pass
+ assert(input_validator.validate_pluggable_adapter({'storageType': 'pluggable', 'storageWrapper': self.mock_adapter4()}))
+
+ # using string type prefix should pass
+ assert(input_validator.validate_pluggable_adapter({'storageType': 'pluggable', 'storagePrefix': 'myprefix', 'storageWrapper': self.mock_adapter4()}))
+
+ # using non-string type prefix should not pass
+ assert(not input_validator.validate_pluggable_adapter({'storageType': 'pluggable', 'storagePrefix': 'myprefix', 123: self.mock_adapter4()}))
+
+ def test_sanitize_flag_sets(self):
+ """Test sanitization for flag sets."""
+ flag_sets = input_validator.validate_flag_sets([' set1', 'set2 ', 'set3'], 'm')
+ assert sorted(flag_sets) == ['set1', 'set2', 'set3']
+
+ flag_sets = input_validator.validate_flag_sets(['1set', '_set2'], 'm')
+ assert flag_sets == ['1set']
+
+ flag_sets = input_validator.validate_flag_sets(['Set1', 'SET2'], 'm')
+ assert sorted(flag_sets) == ['set1', 'set2']
+
+ flag_sets = input_validator.validate_flag_sets(['se\t1', 's/et2', 's*et3', 's!et4', 'se@t5', 'se#t5', 'se$t5', 'se^t5', 'se%t5', 'se&t5'], 'm')
+ assert flag_sets == []
+
+ flag_sets = input_validator.validate_flag_sets(['set4', 'set1', 'set3', 'set1'], 'm')
+ assert sorted(flag_sets) == ['set1', 'set3', 'set4']
+
+ flag_sets = input_validator.validate_flag_sets(['w' * 50, 's' * 51], 'm')
+ assert flag_sets == ['w' * 50]
+
+ flag_sets = input_validator.validate_flag_sets('set1', 'm')
+ assert flag_sets == []
+
+ flag_sets = input_validator.validate_flag_sets([12, 33], 'm')
+
+ assert flag_sets == []
diff --git a/tests/client/test_localhost.py b/tests/client/test_localhost.py
index 7c1a42bf..598d6100 100644
--- a/tests/client/test_localhost.py
+++ b/tests/client/test_localhost.py
@@ -1,13 +1,13 @@
"""Localhost mode test module."""
-#pylint: disable=no-self-use,line-too-long,protected-access
-
+# pylint: disable=no-self-use,line-too-long,protected-access
import os
-import tempfile
from splitio.client import localhost
+from splitio.sync.split import LocalSplitSynchronizer
from splitio.models.splits import Split
from splitio.models.grammar.matchers import AllKeysMatcher
-from splitio.storage import SplitStorage
+from splitio.storage import SplitStorage, RuleBasedSegmentsStorage
+
class LocalHostStoragesTests(object):
"""Localhost storages test cases."""
@@ -40,47 +40,13 @@ def test_dummy_event_storage(self):
assert evt_storage.pop_many([2]) is None
assert evt_storage.pop_many(object) is None
- def test_dummy_telemetry_storage(self):
- """Test that dummy telemetry storage never complains."""
- telemetry_storage = localhost.LocalhostTelemetryStorage()
- assert telemetry_storage.inc_latency() is None
- assert telemetry_storage.inc_latency('ads') is None
- assert telemetry_storage.inc_latency(3) is None
- assert telemetry_storage.inc_latency([2]) is None
- assert telemetry_storage.inc_latency(object) is None
- assert telemetry_storage.pop_latencies() is None
- assert telemetry_storage.pop_latencies('ads') is None
- assert telemetry_storage.pop_latencies(3) is None
- assert telemetry_storage.pop_latencies([2]) is None
- assert telemetry_storage.pop_latencies(object) is None
- assert telemetry_storage.inc_counter() is None
- assert telemetry_storage.inc_counter('ads') is None
- assert telemetry_storage.inc_counter(3) is None
- assert telemetry_storage.inc_counter([2]) is None
- assert telemetry_storage.inc_counter(object) is None
- assert telemetry_storage.pop_counters() is None
- assert telemetry_storage.pop_counters('ads') is None
- assert telemetry_storage.pop_counters(3) is None
- assert telemetry_storage.pop_counters([2]) is None
- assert telemetry_storage.pop_counters(object) is None
- assert telemetry_storage.put_gauge() is None
- assert telemetry_storage.put_gauge('ads') is None
- assert telemetry_storage.put_gauge(3) is None
- assert telemetry_storage.put_gauge([2]) is None
- assert telemetry_storage.put_gauge(object) is None
- assert telemetry_storage.pop_gauges() is None
- assert telemetry_storage.pop_gauges('ads') is None
- assert telemetry_storage.pop_gauges(3) is None
- assert telemetry_storage.pop_gauges([2]) is None
- assert telemetry_storage.pop_gauges(object) is None
-
class SplitFetchingTaskTests(object):
"""Localhost split fetching task test cases."""
def test_make_all_keys_condition(self):
"""Test all keys-based condition construction."""
- cond = localhost.LocalhostSplitSynchronizationTask._make_all_keys_condition('on')
+ cond = LocalSplitSynchronizer._make_all_keys_condition('on')
assert cond['conditionType'] == 'WHITELIST'
assert len(cond['partitions']) == 1
assert cond['partitions'][0]['treatment'] == 'on'
@@ -92,7 +58,7 @@ def test_make_all_keys_condition(self):
def test_make_whitelist_condition(self):
"""Test whitelist-based condition construction."""
- cond = localhost.LocalhostSplitSynchronizationTask._make_whitelist_condition(['key1', 'key2'], 'on')
+ cond = LocalSplitSynchronizer._make_whitelist_condition(['key1', 'key2'], 'on')
assert cond['conditionType'] == 'WHITELIST'
assert len(cond['partitions']) == 1
assert cond['partitions'][0]['treatment'] == 'on'
@@ -106,7 +72,7 @@ def test_make_whitelist_condition(self):
def test_parse_legacy_file(self):
"""Test that aprsing a legacy file works."""
filename = os.path.join(os.path.dirname(__file__), 'files', 'file1.split')
- splits = localhost.LocalhostSplitSynchronizationTask._read_splits_from_legacy_file(filename)
+ splits = LocalSplitSynchronizer._read_feature_flags_from_legacy_file(filename)
assert len(splits) == 2
for split in splits.values():
assert isinstance(split, Split)
@@ -118,7 +84,7 @@ def test_parse_legacy_file(self):
def test_parse_yaml_file(self):
"""Test that parsing a yaml file works."""
filename = os.path.join(os.path.dirname(__file__), 'files', 'file2.yaml')
- splits = localhost.LocalhostSplitSynchronizationTask._read_splits_from_yaml_file(filename)
+ splits = LocalSplitSynchronizer._read_feature_flags_from_yaml_file(filename)
assert len(splits) == 4
for split in splits.values():
assert isinstance(split, Split)
@@ -146,48 +112,48 @@ def test_update_splits(self, mocker):
parse_yaml.return_value = {}
storage_mock = mocker.Mock(spec=SplitStorage)
storage_mock.get_split_names.return_value = []
-
+ rbs = mocker.Mock(spec=RuleBasedSegmentsStorage)
parse_legacy.reset_mock()
parse_yaml.reset_mock()
- task = localhost.LocalhostSplitSynchronizationTask('something', storage_mock, 0, None)
- task._read_splits_from_legacy_file = parse_legacy
- task._read_splits_from_yaml_file = parse_yaml
- task._update_splits()
+ sync = LocalSplitSynchronizer('something', storage_mock, rbs)
+ sync._read_feature_flags_from_legacy_file = parse_legacy
+ sync._read_feature_flags_from_yaml_file = parse_yaml
+ sync.synchronize_splits()
assert parse_legacy.mock_calls == [mocker.call('something')]
assert parse_yaml.mock_calls == []
parse_legacy.reset_mock()
parse_yaml.reset_mock()
- task = localhost.LocalhostSplitSynchronizationTask('something.yaml', storage_mock, 0, None)
- task._read_splits_from_legacy_file = parse_legacy
- task._read_splits_from_yaml_file = parse_yaml
- task._update_splits()
+ sync = LocalSplitSynchronizer('something.yaml', storage_mock, rbs)
+ sync._read_feature_flags_from_legacy_file = parse_legacy
+ sync._read_feature_flags_from_yaml_file = parse_yaml
+ sync.synchronize_splits()
assert parse_legacy.mock_calls == []
assert parse_yaml.mock_calls == [mocker.call('something.yaml')]
parse_legacy.reset_mock()
parse_yaml.reset_mock()
- task = localhost.LocalhostSplitSynchronizationTask('something.yml', storage_mock, 0, None)
- task._read_splits_from_legacy_file = parse_legacy
- task._read_splits_from_yaml_file = parse_yaml
- task._update_splits()
+ sync = LocalSplitSynchronizer('something.yml', storage_mock, rbs)
+ sync._read_feature_flags_from_legacy_file = parse_legacy
+ sync._read_feature_flags_from_yaml_file = parse_yaml
+ sync.synchronize_splits()
assert parse_legacy.mock_calls == []
assert parse_yaml.mock_calls == [mocker.call('something.yml')]
parse_legacy.reset_mock()
parse_yaml.reset_mock()
- task = localhost.LocalhostSplitSynchronizationTask('something.YAML', storage_mock, 0, None)
- task._read_splits_from_legacy_file = parse_legacy
- task._read_splits_from_yaml_file = parse_yaml
- task._update_splits()
+ sync = LocalSplitSynchronizer('something.YAML', storage_mock, rbs)
+ sync._read_feature_flags_from_legacy_file = parse_legacy
+ sync._read_feature_flags_from_yaml_file = parse_yaml
+ sync.synchronize_splits()
assert parse_legacy.mock_calls == []
assert parse_yaml.mock_calls == [mocker.call('something.YAML')]
parse_legacy.reset_mock()
parse_yaml.reset_mock()
- task = localhost.LocalhostSplitSynchronizationTask('yaml', storage_mock, 0, None)
- task._read_splits_from_legacy_file = parse_legacy
- task._read_splits_from_yaml_file = parse_yaml
- task._update_splits()
+ sync = LocalSplitSynchronizer('yaml', storage_mock, rbs)
+ sync._read_feature_flags_from_legacy_file = parse_legacy
+ sync._read_feature_flags_from_yaml_file = parse_yaml
+ sync.synchronize_splits()
assert parse_legacy.mock_calls == [mocker.call('yaml')]
assert parse_yaml.mock_calls == []
diff --git a/tests/client/test_manager.py b/tests/client/test_manager.py
new file mode 100644
index 00000000..c5454f67
--- /dev/null
+++ b/tests/client/test_manager.py
@@ -0,0 +1,162 @@
+"""SDK main manager test module."""
+import pytest
+import queue
+import asyncio
+
+from splitio.client.factory import SplitFactory
+from splitio.client.manager import SplitManager, SplitManagerAsync, _LOGGER as _logger
+from splitio.models import splits
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync, InMemorySplitStorage, InMemorySplitStorageAsync
+from splitio.engine.impressions.impressions import Manager as ImpressionManager
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync, TelemetryStorageConsumer, TelemetryStorageConsumerAsync
+from splitio.recorder.recorder import StandardRecorder, StandardRecorderAsync
+from tests.integration import splits_json
+
+class SplitManagerTests(object): # pylint: disable=too-few-public-methods
+ """Split manager test cases."""
+
+ def test_manager_calls(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+
+ factory = mocker.Mock(spec=SplitFactory)
+ factory._storages = {'split': storage}
+ factory._telemetry_init_producer = telemetry_producer._telemetry_init_producer
+ factory.destroyed = False
+ factory._waiting_fork.return_value = False
+ factory.ready = True
+
+ manager = SplitManager(factory)
+ split1 = splits.from_raw(splits_json["splitChange1_1"]['ff']['d'][0])
+ split2 = splits.from_raw(splits_json["splitChange1_3"]['ff']['d'][0])
+ storage.update([split1, split2], [], -1)
+ manager._storage = storage
+
+ assert manager.split_names() == ['SPLIT_2', 'SPLIT_1']
+ assert manager.split('SPLIT_3') is None
+ assert manager.split('SPLIT_2') == split1.to_split_view()
+ assert manager.splits() == [split.to_split_view() for split in storage.get_all_splits()]
+
+ def test_evaluations_before_running_post_fork(self, mocker):
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ recorder = StandardRecorder(impmanager, mocker.Mock(), mocker.Mock(), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': mocker.Mock(),
+ 'segments': mocker.Mock(),
+ 'impressions': mocker.Mock(),
+ 'events': mocker.Mock()},
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ True
+ )
+
+ expected_msg = [
+ mocker.call('Client is not ready - no calls possible')
+ ]
+
+ manager = SplitManager(factory)
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.manager._LOGGER', new=_logger)
+
+ assert manager.split_names() == []
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert manager.split('some_feature') is None
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert manager.splits() == []
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+
+class SplitManagerAsyncTests(object): # pylint: disable=too-few-public-methods
+ """Split manager test cases."""
+
+ @pytest.mark.asyncio
+ async def test_manager_calls(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ telemetry_storage = InMemoryTelemetryStorageAsync()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ storage = InMemorySplitStorageAsync(internal_events_queue)
+
+ factory = mocker.Mock(spec=SplitFactory)
+ factory._storages = {'split': storage}
+ factory._telemetry_init_producer = telemetry_producer._telemetry_init_producer
+ factory.destroyed = False
+ factory._waiting_fork.return_value = False
+ factory.ready = True
+
+ manager = SplitManagerAsync(factory)
+ split1 = splits.from_raw(splits_json["splitChange1_1"]['ff']['d'][0])
+ split2 = splits.from_raw(splits_json["splitChange1_3"]['ff']['d'][0])
+ await storage.update([split1, split2], [], -1)
+ manager._storage = storage
+
+ assert await manager.split_names() == ['SPLIT_2', 'SPLIT_1']
+ assert await manager.split('SPLIT_3') is None
+ assert await manager.split('SPLIT_2') == split1.to_split_view()
+ assert await manager.splits() == [split.to_split_view() for split in await storage.get_all_splits()]
+
+ @pytest.mark.asyncio
+ async def test_evaluations_before_running_post_fork(self, mocker):
+ destroyed_property = mocker.PropertyMock()
+ destroyed_property.return_value = False
+
+ impmanager = mocker.Mock(spec=ImpressionManager)
+ telemetry_storage = InMemoryTelemetryStorageAsync()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ recorder = StandardRecorderAsync(impmanager, mocker.Mock(), mocker.Mock(), telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_producer.get_telemetry_runtime_producer())
+ factory = SplitFactory(mocker.Mock(),
+ {'splits': mocker.Mock(),
+ 'segments': mocker.Mock(),
+ 'impressions': mocker.Mock(),
+ 'events': mocker.Mock()},
+ mocker.Mock(),
+ recorder,
+ mocker.Mock(),
+ mocker.Mock(),
+ impmanager,
+ mocker.Mock(),
+ telemetry_producer,
+ telemetry_producer.get_telemetry_init_producer(),
+ mocker.Mock(),
+ True
+ )
+
+ expected_msg = [
+ mocker.call('Client is not ready - no calls possible')
+ ]
+
+ manager = SplitManagerAsync(factory)
+ _logger = mocker.Mock()
+ mocker.patch('splitio.client.manager._LOGGER', new=_logger)
+
+ assert await manager.split_names() == []
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert await manager.split('some_feature') is None
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
+
+ assert await manager.splits() == []
+ assert _logger.error.mock_calls == expected_msg
+ _logger.reset_mock()
diff --git a/tests/client/test_utils.py b/tests/client/test_utils.py
index 807dc9c4..98d9d8f6 100644
--- a/tests/client/test_utils.py
+++ b/tests/client/test_utils.py
@@ -13,30 +13,29 @@ class ClientUtilsTests(object):
def test_get_metadata(self, mocker):
"""Test the get_metadata function."""
- get_ip_mock = mocker.Mock()
- get_host_mock = mocker.Mock()
- mocker.patch('splitio.client.util._get_ip', new=get_ip_mock)
- mocker.patch('splitio.client.util._get_hostname', new=get_host_mock)
-
meta = util.get_metadata({'machineIp': 'some_ip', 'machineName': 'some_machine_name'})
- assert get_ip_mock.mock_calls == []
- assert get_host_mock.mock_calls == []
assert meta.instance_ip == 'some_ip'
assert meta.instance_name == 'some_machine_name'
assert meta.sdk_version == 'python-' + __version__
- meta = util.get_metadata(config.DEFAULT_CONFIG)
- assert get_ip_mock.mock_calls == [mocker.call()]
- assert get_host_mock.mock_calls == [mocker.call(mocker.ANY)]
-
cfg = DEFAULT_CONFIG.copy()
cfg.update({'IPAddressesEnabled': False})
meta = util.get_metadata(cfg)
assert meta.instance_ip == 'NA'
assert meta.instance_name == 'NA'
- get_ip_mock.reset_mock()
- get_host_mock.reset_mock()
- meta = util.get_metadata({})
- assert get_ip_mock.mock_calls == [mocker.call()]
- assert get_host_mock.mock_calls == [mocker.call(mocker.ANY)]
+ meta = util.get_metadata(config.DEFAULT_CONFIG)
+ ip_address, hostname = util._get_hostname_and_ip(config.DEFAULT_CONFIG)
+ assert meta.instance_ip != 'NA'
+ assert meta.instance_name != 'NA'
+ assert meta.instance_ip == ip_address
+ assert meta.instance_name == hostname
+
+ self.called = 0
+ def get_hostname_and_ip_mock(any):
+ self.called += 0
+ return mocker.Mock(), mocker.Mock()
+ mocker.patch('splitio.client.util._get_hostname_and_ip', new=get_hostname_and_ip_mock)
+
+ meta = util.get_metadata(config.DEFAULT_CONFIG)
+ self.called = 1
\ No newline at end of file
diff --git a/tests/engine/cache/test_lru.py b/tests/engine/cache/test_lru.py
new file mode 100644
index 00000000..e41a3fb7
--- /dev/null
+++ b/tests/engine/cache/test_lru.py
@@ -0,0 +1,38 @@
+"""LRU Cache unit tests."""
+
+from splitio.engine.cache.lru import SimpleLruCache
+
+class SimpleLruCacheTests(object):
+ """Test SimpleLruCache."""
+
+ def test_basic_usage(self, mocker):
+ """Test that a missing split logs and returns CONTROL."""
+ cache = SimpleLruCache(5)
+ assert cache.test_and_set('a', 1) is None
+ assert cache.test_and_set('b', 2) is None
+ assert cache.test_and_set('c', 3) is None
+ assert cache.test_and_set('d', 4) is None
+ assert cache.test_and_set('e', 5) is None
+
+ assert cache.test_and_set('a', 10) is 1
+ assert cache.test_and_set('b', 20) is 2
+ assert cache.test_and_set('c', 30) is 3
+ assert cache.test_and_set('d', 40) is 4
+ assert cache.test_and_set('e', 50) is 5
+ assert len(cache._data) is 5
+
+ def test_lru_eviction(self, mocker):
+ """Test that a missing split logs and returns CONTROL."""
+ cache = SimpleLruCache(5)
+ assert cache.test_and_set('a', 1) is None
+ assert cache.test_and_set('b', 2) is None
+ assert cache.test_and_set('c', 3) is None
+ assert cache.test_and_set('d', 4) is None
+ assert cache.test_and_set('e', 5) is None
+ assert cache.test_and_set('f', 6) is None
+ assert cache.test_and_set('g', 7) is None
+ assert cache.test_and_set('h', 8) is None
+ assert cache.test_and_set('i', 9) is None
+ assert cache.test_and_set('j', 0) is None
+ assert len(cache._data) is 5
+ assert set(cache._data.keys()) == set(['f', 'g', 'h', 'i', 'j'])
diff --git a/tests/engine/files/murmur128_test_suite.csv b/tests/engine/files/murmur128_test_suite.csv
new file mode 100644
index 00000000..ae3a5af7
--- /dev/null
+++ b/tests/engine/files/murmur128_test_suite.csv
@@ -0,0 +1,100000 @@
+3b79c3ba-45c5-7b16-b538-393872033dfb,4011855364,12923653027933689790
+1119fe66-e618-e59b-7b27-49bf8e0795f7,4229952269,15391919778234113240
+155c8a0f-0095-755b-befc-7855153eb688,3762395696,11947289084554604081
+b87393cd-33fe-ab87-a3f9-436fba791afa,572389757,9129506202950190719
+d80e7ffb-9eba-016e-a0c6-3e66d79ddaf1,3200555337,1639881670912309862
+693ce1fb-0440-3f14-121a-c9398e6de6c2,2479141147,17343233138127994183
+987398ff-c438-3246-677d-b1d36cf99c19,2199645907,17882936221272324913
+4a06a336-3941-3da0-0a34-9e18a729dfd7,1998643744,12374158895102274003
+467361e2-85bd-c974-6deb-e0919b427fa0,2358601980,7088676621380073907
+10d574d0-cc18-cd33-1caf-ff7a1353a087,1748388892,15694909532175021318
+4e49438a-3327-c02b-2313-db6026684683,4185699647,12284554413454251240
+596d5f48-9f3a-58d0-8438-6e5cd76a58db,2735421981,8714734000959178077
+9da00c6a-1772-7426-d5c5-c90d07e90a2c,1205727668,3731178423726927450
+bbb7fa28-e106-16b8-bf98-8166745b8ed5,1228170853,16355910826650103404
+853e7004-35e0-f0c7-64a2-42fcbaa901a5,2000695927,15561453422792166993
+8485a280-ddb3-1cbf-44b2-e396137be3ac,38304531,5107206384361247306
+876fb284-41e6-b976-1b9a-7f778bd2e297,3873107363,7707858004076736788
+188bc64b-4f5f-a25e-77c7-17053988fdd2,3306233208,15254958745023749777
+bce89baa-4d92-ae63-eeb1-e8fdf6b7c1ed,537269867,5102095691335380402
+76807b07-bd42-cda4-2214-b60bcbf66cdb,2759212348,11309289796251306374
+1a31d018-f691-f688-d298-28cfdc8e1613,707566644,9507634781919654202
+4004b050-cb49-8e90-9abf-ad3219c8be8e,1586930744,2130802414798021844
+386df096-ec3d-4147-9bc6-6f88b2760403,3698108923,6514088157650459173
+b9a7cf2b-bc1d-95a6-7b53-d4c132ea26bb,245876628,8966117249257919405
+ce4674fc-94ec-93ee-1559-8b45d042103c,1424991104,7665314256180507404
+1059a9e4-03f1-50c7-427d-21de3017970f,36095117,14854440050286086139
+22673c77-a017-a03a-0f23-ebb6e742c132,3366245412,103770683262148704
+39703451-4c37-94e6-b740-e3a36da1b303,123456891,11147727217764433422
+6abc1d20-128c-e576-3d5a-21cc63339098,4057946720,14387480394100890165
+15474ec5-f819-3e2f-0135-a3dedf96e053,2027035226,17419272003780306248
+fd753cdb-08d4-d7aa-fec0-fc19697c3bc2,2319022225,3291799459095078315
+6c88f87b-4424-32ca-2633-74c710560ae1,525834420,18040828332622937237
+aee1ac0d-2662-297a-b43c-d460f515be3b,1037965241,1265720054795695726
+bae7b3e1-90ef-1f06-f3f9-da4753b1548c,3555513282,2731456668448887234
+ff3f9edf-9c0c-3e6e-0c55-c5bfd9d9cdc9,1882077036,13566361217919305817
+605e24f2-456a-0c6a-b2ed-08cbea5aa71a,880969537,102932140412774244
+560ce2de-6bff-bf74-7f4a-f16e8df3b547,2574928410,9099429522186751847
+177e9ccf-888f-9dbb-f56e-415767b68292,3919941719,15829070371422481201
+84d2fa75-75b6-c16e-20f6-c650ffedc30b,776220394,3370946295812380123
+807cf7ba-c405-49c5-29f6-4cc1bcef006b,498326752,2636648177706841110
+9db0fc79-0656-467f-f60f-9e86f792f3f9,361056640,4967323968517887294
+d428155e-33aa-3032-9a8c-9de93256b16d,3541110112,6285758765502143376
+e1105e4c-3168-a0e0-f4de-a9ec91a9c15e,967814711,15973075178547231793
+ef9a0975-26a3-4cf7-2295-726cfd0375a7,722466808,4580966498428482842
+ef584701-3352-3f39-248e-b493ea21dd67,1642749052,3429894644926491115
+1ce88c2c-83aa-8ee5-f21f-7b27f326c879,1818575683,8334925973815866665
+99f6dba2-5cc2-6d06-4fc7-fa9f2c3eb12a,3436856999,5522026870715786497
+f710347d-8e89-7486-75b1-33808c0732c9,631049264,12994922052148055201
+cb8dfa78-4982-b038-ed09-1a4a96e33d4f,1749964978,11102952624133781464
+68726ca4-0092-19fc-a2f0-71b0aa40c3b8,3687127156,9399771322693031652
+24de14f5-c960-f940-151b-372bc7080831,2808854853,5183075009115119465
+fca504a6-dd26-35f4-0478-6207d6540f4c,1309840095,17581592207801750024
+71baeed0-fef0-0422-317f-875c5773b965,363630020,3105553971588058392
+e5ad5575-4db6-e704-d1b5-3180be4d5c02,1838064468,5353502315477272064
+bd5f5371-274d-c87a-1942-68cdbc75e8f5,2268741664,8620910319169597771
+2e457887-ce2c-9d1b-03cf-8937ba74ba82,2811931182,4177777799649221651
+60ecc54e-ad76-45c8-2c8b-bf5f0588aa1c,422056237,1614019487376643779
+1129306c-e5e4-d8b1-8eb7-31c25bd05575,1766511023,1385394514271054698
+2208931b-94be-8173-e598-ec8fb832d43c,1869602293,12438409242031716857
+7ee56ac3-9651-1925-d46e-8abad4cd4b09,1069575638,12453938139650684271
+492892c3-c85f-a64e-7e94-1389d2148367,320743220,13159611852564948378
+6ccee821-10c9-ba21-6474-b8aefda8077b,2069099667,13220369274769951908
+e1516ef2-0bb5-ec13-b586-3d9dd0d39242,1559650172,17789612506569906534
+b9f992ae-3f8e-baa8-c940-64b577e9bf81,2697113202,856042959050679560
+956dab20-48b4-b51b-ec11-9ef321969ec1,441996507,5831948227923983580
+ea34521e-3125-6606-490b-d8d312e357ec,862875249,586610460891572695
+beca85a5-afe8-f01d-e56e-80dd53b75b67,3211931126,15408484849793148424
+7b913e4a-d039-4511-223f-63b7ceedf16a,1246495863,11911437982194302553
+7c67ea92-741f-0fac-d99b-70cada561627,2869301423,11426720248898840794
+b804e8d9-87a1-57ce-d441-2682fb9c1a65,4181806701,10685251624517555184
+b9fce9d8-d013-aa9f-b4da-691fbdcac1db,166853411,3714471404013475271
+b844814a-79da-595c-c522-d07ca9c07b63,2857802380,14457658038346901044
+205c332d-9bd8-b590-9601-e39e9681489d,1617942638,3260698808014752101
+c88fb977-60f7-41e2-f216-e704649a208d,3830207264,313954447670864381
+af1e0e5c-c0eb-7884-99f2-b89d0bd3a194,3934885371,3039604153317702776
+80668eb7-914c-7ab5-6628-fe2216a037f9,337050450,4415674966540367784
+9c34ac74-ba14-b5c5-7585-00e430c4d203,3218288295,3097014859027227310
+36ae231c-0508-26b1-950d-c3e71f66b264,1674234009,12401552554159072612
+bce0befe-b310-df1f-7c33-bce54b85fec9,411667217,6085049647687567162
+78e4cb55-9700-ad38-b46d-7d2608a7d667,1738477846,17354288018632974094
+d47a5c4e-64d3-4e68-a53d-ed52c041d707,771799894,3152872569333260234
+cb47175e-f059-a8b1-aa99-abc3bc569f1b,4083456026,6491746298300710184
+d64d2c28-bc30-855c-1bf6-c688219ade2d,2552116674,8664568055668079580
+09dadc10-4e66-9f1f-9879-7c516d2ca3d1,2610035402,2527058803744109349
+fab3b0d2-1627-5103-771f-0b6cbb2d94dc,3869172456,9890094728898900976
+3058bedf-6c57-4cea-f0c5-c9cff7d84eb8,749291035,6048521560557141762
+46369599-f84f-2c1e-17f3-6322abf93263,30186670,1193838755575891564
+87f10f9a-0ac3-0019-3900-e9e3da42d4de,2613419365,3948653024196568356
+d4b7851c-590a-ca28-2ed6-765850a5f91e,3784081323,546776049978253177
+f7dda750-2958-46f9-2d02-ca37df9c446d,3116940134,14892903909886785093
+8fac3cd7-74c8-04f0-5571-cbbae67e3754,3304295573,17608123368090494700
+d54cd08a-e1fa-744d-6919-c049e53164e5,2003594333,15767647923826487341
+421b3772-ca65-6761-3954-f6aaa41067e6,1619813666,5514574363241253761
+9b3a7c0e-b9ab-861f-d93d-6ef9036acf4a,4055869865,5851547838721435403
+56c64910-8c89-7103-6aad-941a57ac7751,1602260831,16894988887014516093
+c4607028-8a18-c1a9-85c7-13ddd09bf2e9,1208750772,9704000672062128736
+6a48cc9c-0085-33ff-7c3c-da0f7ae72b01,2586960780,11033629302806391147
+84dc4ffa-d4bf-87c4-4d12-912f00112e11,1722935594,1332201604827519891
+7fea9342-d3fc-9338-265d-6be06b901fc8,4026990359,13864887487647401406
+a7f46cb5-4b76-db45-94c8-5a4290de2c90,601483228,16640530540734516869
+d8ddb068-c6a1-f972-7760-3571fc60a393,298446543,7910829780396287245
+a65f9c65-59ba-8858-7c10-67a4a83a42a5,767174642,4206424726785434033
+2cdf47e1-9def-0719-fc25-2f8539703a57,3249884752,13851879599875864607
+8d17ed81-461a-b826-37c1-5f28d2b00781,2509821118,9134124348838636090
+216de126-5d2c-5705-25f5-3ffc8ad74a86,544185177,5369347241935597300
+cfff15c6-1d4f-9f33-9653-246d68c61eeb,1154084709,16912900552004571146
+faa154d5-8e79-489d-3763-c3f949247cf3,2889306614,3625456521472334181
+667001bf-7c38-34be-6aae-20dbae3be4bd,4259179284,1393299179130464642
+a15f6410-4667-ce5c-3de5-e785443448ff,3074276690,4270958292874354173
+d3a4c607-1a30-d6aa-aedd-59c9a6908f74,3449285246,1875095722599295115
+11d5f8e7-8692-500a-21cf-c5b723e6aad3,2771048630,11261358709167030730
+89a68467-2092-b3ba-0a0e-55d41310a991,229515389,10492438432900533941
+519cafbd-f95e-cafd-bf0a-8c77ac3b997b,547468314,14052401035870057400
+5217f853-41d5-7f89-c326-88b7935d6b54,4285571684,14367450551123100655
+0f580fcf-a435-0153-667b-f389b61b7846,2196011063,11136209111234259119
+03f6f073-8f6c-3425-5072-13365cb9aef4,2617510672,10165418700638737234
+1bfed158-8dd7-d3df-1859-6c3b490d5f10,1258380384,990743502401006338
+54478ec2-3321-08a9-9f6b-49e75f63271e,40645880,17887837885798263051
+8849f6f0-107d-37ca-e909-3ca8b964fb0b,1746893676,5528265007665599752
+4106de41-2b7c-f726-147c-98e487cf854d,1883742577,7955800953862720982
+abb41853-2b34-8f8b-d6b7-25fdbf85004f,1540685064,1142770122474334450
+4c89a1fb-a723-92b1-64fb-5fa8ce69ed3b,2242876824,7802764510001248245
+5b0fd854-6c14-aca7-476a-4d8f0c3d0a66,2430486150,834703651304467988
+63387d3e-c989-5e11-d622-2b5a451088d6,2778898906,12295076475290127901
+d5e8b423-3e3e-0c99-e66e-900d9ae9fe89,2307022531,1475047651182554390
+e1a1c80e-0998-6ffc-a7ad-22d6e85d459a,1969947787,8342141459759347872
+0e593c8d-0573-b847-3867-b42eec5239bb,3098305479,13973330462789679724
+e4da9ef8-1c34-a2e9-b751-dcb391b420a6,1062709424,15637559521460753238
+e0f2c921-836e-dcc8-f275-ed936a7ae8c5,346757506,12439211145432824860
+283adf45-7f51-3c98-1230-ad724c4f2d77,771250771,16943189694941872837
+d9ff559d-7cfe-f324-d405-4065d322559f,3570438364,3992370257079432657
+b362d821-716b-997c-961c-ec846af29305,2688441834,15596111019286426972
+e9d08d84-a373-a6fd-b684-1c53d84922c8,4027982655,7886677252070515940
+86565675-0ffb-bfe5-0a1d-d976b376a047,4201539689,6278839813861188692
+dc0a031d-d756-866d-6337-f9e84296d5a4,4192676938,15697388100782594234
+cc11d85a-7fba-336a-ccab-93d81243a415,3421715331,9388294422543909121
+cf8a30b9-b1de-8960-94d9-2374883e9d83,4290503307,18292659500960551369
+4763263b-c91d-f28b-af61-5096eac861cc,2216535129,12272508386937913805
+4e5d945d-9e9a-c8c9-a571-485fd43883cd,1117419260,390100667604107004
+391ced5c-fa0f-3060-c4fb-0601f041cbb0,3450016952,859481423656643492
+85efc3ae-e4a2-fbdd-2c92-b57b4d7d4449,3567606753,17243649974271893064
+0c95bdbd-351b-3294-2f64-c42bccefa5f3,2182711636,18129351010637303502
+6625b24f-b4a5-5dcc-3e78-26bea3afb774,3694179548,6506773653809716975
+fb4ca9f9-8424-333b-9d9d-6f3fc084ad00,4074416952,8928873259739942186
+d26f15ee-7c00-0726-0782-aece183c5c08,2524819207,2783064513678806570
+fe0910fe-3a7f-e437-42df-a06b449a5185,3238753542,18193361096658195559
+b4dbde17-1ba8-6a5e-db3c-6dc38b78c50b,3722704516,3352792470291203345
+436835d7-1d2a-9740-eddf-f744403acad1,1161312629,9605575468137311674
+ee24070d-a3fc-b283-8ac9-f6175035d919,2996108390,15931520532217554962
+fa0aa888-bb85-06f9-59a9-efce81b34375,1303730308,7554271949682735688
+e49e3738-27f9-314a-ca93-2e4557603328,874933053,9468958296239191716
+147a60dc-4c2c-c2ab-70ef-bad202485905,2454095743,1799844058017277767
+7ac047db-377e-a4d1-2e4c-10cca5c59635,4260041540,13852357946787275913
+ccc33e8b-294e-bef9-7e65-f75decce4762,3616847266,11736709727165905490
+07247008-da8d-5998-de79-7742a1e9dce3,1137847439,2305568777933804783
+fd67b55a-71a4-3deb-05e3-8e0e4d5bba3e,696571024,8615564184927614883
+e20d0c80-1d9e-8feb-04b9-a542ac4a14d9,2175167150,12158379485902589479
+505d3f10-ee3b-9e46-e52e-9a4daa3e4267,2775440762,16136041577787038084
+67e3c6ac-f50f-2ac0-41bd-edcc73222b7c,2641877447,8406269252709372834
+b9f4524b-b58a-fd6b-a5a2-ca3cde70c905,878303101,18414539513757024291
+77b3158e-ed0b-de30-5c1e-f78016a1f5bd,3884862675,3038739436586214877
+8decff5c-d753-aa58-a7c3-684b8df7a4a4,1578392835,17387169823826811869
+7ba5615a-688a-1608-f632-d73b3ac883a5,3365287396,5536622944065257743
+536fa89c-919b-9d23-0e87-dc3a060269cb,2209383491,12944784927634857020
+7abbd3ef-362c-e2d3-d7e6-fc13e344defc,1650432694,8919766200536345620
+1e9b787a-0d56-baf9-85b2-0e682ce04450,2224253369,381478562200447809
+3bfa3600-87b1-4235-11f3-852a79eb22d0,143422066,1942861499511244369
+dbec6e28-7e44-5500-acc7-9e3ada95410a,1138462956,3049420337587424137
+6d3d8f9d-1d92-d548-8572-1791896130cb,2529230255,3663230905650766880
+ae580d55-f3e5-b97f-c2f3-5247842ef64a,1550846517,10811410663162051035
+c13cc399-2c1d-0b9e-76f7-582aa81dab73,2750955647,3099094299344295784
+858e18d6-2a1f-c33e-7eb8-42d3a5275fe9,1200297131,15994476355574175763
+c3f1e6fc-d3a7-4f70-d91d-2f8ee1938701,2892629754,9263687667811029913
+ecb5d1d1-9fda-6ac9-b6d9-ab53e34ae55f,1587359792,2915466882920594923
+463a52e5-3ca9-4764-6e34-183a017ef799,1806642433,12129163457677622726
+8fd2dfc7-4398-a71b-4121-1d8f767aa0de,91484186,7847325551736150028
+42ec4cec-5888-8142-225d-8c278496232f,3239804683,13017683606501285262
+9ad629b3-3a55-6c47-aab7-1b95beb01bf9,2232876264,15346864240269738502
+40f39dcc-fa33-23d5-5551-12a9e5d03145,4129833846,18212367223532053850
+3f255585-dc01-b30e-5136-de4d9e5f4f61,3200233107,935820801755551433
+9e32231e-e573-1f7b-d718-bb2561269648,2546163810,12310457557168431832
+6a15c652-92b1-0812-658e-5d17c48bbe95,1920545505,5017641308838698431
+b8ab0096-f7e7-b363-72cc-07683229be78,4083291576,9783264839766126948
+0e3d2938-2e52-bcdd-63ae-dcd9a2d9cadd,924655482,9918418615792123525
+6683f60d-4124-522d-0d94-b4ed5157750d,2967266086,10749439533843024561
+f077697f-b02e-f32f-64a3-0b1852242e9d,4196407425,9333077282570673347
+eb9a67b6-4354-5f38-f480-bceb99d20fa1,840125637,15887504464519644406
+347eb520-063a-d172-1e02-a57b9c1e04d4,4193498557,6244124476880449918
+b4e36ffd-43ca-cf3f-ffe8-652e312e177c,1405916247,3387373012785074887
+19e019c1-24c2-3500-9a71-afe5716a9b1e,2725170496,5789078488661851785
+c9afc37a-9368-35f6-de52-8122de6c56e4,3508011451,3649345151110506527
+fca59474-09a0-fcc7-0819-72022b6ab9e8,2856737098,14854990775737530478
+32811447-b1a4-0ea4-1fc1-f0b25a4e0c5a,3743707320,14798500072594644978
+415a282f-5180-40c7-6440-1820fc4674ec,2701229067,14208457789548291402
+ea7db5e2-9b0b-97e3-0677-d590e4fd08f2,425125182,248826150207712062
+5d863d59-5a03-a9ff-c8af-2e8073502db7,1096761766,15267228780337595354
+27459c3c-078f-dc05-4c05-b6405c58e213,4260196247,1756254973187742137
+2f3449a4-92f8-90c7-f638-fad31c37bb6b,39164989,5783477192857117287
+69c9cb6a-abd9-2fcc-ae90-c7798c30a93c,1946877885,8173179984341880041
+3d57ed27-8c43-6148-177f-c5bb9fa50973,2141268465,12954813217481850010
+5de72362-f275-43e9-ad9e-45f022a7092b,1746906345,13859432646752973608
+743745a7-e3f7-7f76-d381-cf06673a0d82,1416537598,9033272962220060392
+2493f4d3-99ae-c6d9-fac6-1797f83e2b33,1934259305,9969515029258703162
+59ee1347-81a4-7eb4-3eeb-0ff1f24a1e72,179076547,7306298991248202413
+f42d3211-c1e2-97ed-449d-30775f9f5a08,2773389668,4831862543112279690
+af0bebf9-30f0-4252-6c5b-b7a799eb34bb,3286959317,3278792291129734695
+d2e4f28d-83c4-55ae-3b26-1c33fc65d423,4097550112,15685951844804753882
+61b8f742-02fc-0e8f-30b0-32ec02e56756,2990431718,14358172611335863924
+9dd8b7b0-4c0e-fe26-14e0-440e8b9c7752,2132405206,7667189965271388543
+d91a9a08-dc1a-e404-2d72-dd45f2e8f5f9,3608974074,365984044025296339
+03e07c20-51a0-948d-3589-fac84eab52a7,1789370983,13420619075323155425
+535d5b10-47e5-fb32-7246-fb1abaff5992,1534748319,8842402888642493776
+2e886995-8fcb-7017-4120-6b1f5ffdc0e9,639858301,15597299972051357304
+b12c6fda-238b-862c-b27f-29d19fab54cc,3048210118,2906147191108531143
+9898bb31-5f32-48f7-80e1-6eb559ed4e87,1125542556,1857133354767610435
+0b0bfe2f-eca0-2c3c-f06a-2c246d105368,3523167039,8216340128101477367
+3ad2c5dc-b223-92b5-8692-515b2569c086,3233793103,11582547812259593015
+6c46a070-f2cf-aa06-d9dc-3ef9ac5dcbc3,2440747266,14008474961430909872
+ee29efe4-9f19-222f-bda0-54a86e96c28b,1142387395,7336356860785289915
+98c0c746-75b5-d81f-f2c6-900d59ab35c7,839389671,12795245193615934285
+fb8c3019-96b3-d081-851f-e2de6eda52e1,1089081475,2360030861502028011
+8bb385d6-5bd2-7014-67a5-4f7f75955a13,3355595343,895585428272005357
+f417cf78-cf1a-90c8-5d49-213050de41c7,1022854363,2410154448501830043
+57e1770b-2062-5f55-bd25-0d938966e748,2223410048,10502314535738763592
+8addcc44-0447-1b9b-45cc-566dea56c11a,3017478458,7855545973500546204
+15e63e79-65e1-1f23-6a96-616070425a85,3998700910,15953913335025470333
+1a6e0b56-3382-dcc3-c573-9bb4d254a7a0,2358379423,18289662925005371510
+41b07cee-34c0-49f9-94d7-e4948199545d,85610914,9752273639137289017
+819c814f-7fa5-9f3d-0232-280f2e333350,3149456988,2460950083128272571
+6f29101c-84f4-44f2-3b46-a91bc572c2e1,371146464,14023481531280454100
+0bdef786-f014-00b7-6d92-7e86a500f487,1930406835,11498252556523566195
+5b68ec91-aa10-ccce-bc07-e9e0a71a7f6f,713418290,2284967625235800536
+d2f48548-8d78-80b8-d4f3-90298198b56e,187521336,14991844219262056132
+d503db8b-c0a7-66e1-66a1-0cf958df0ca1,1321359686,1369488149776780032
+8567626a-af02-7fd2-c9a3-588a70b95dc1,2956688272,15963212126993016163
+0c40ef0f-575e-f6df-5b30-f59dd81b71bf,703838501,10941718242539169855
+e2384491-1f20-f208-2af7-da721535eed1,2908094902,12901885290389291632
+04a6df9b-d6f1-e5d1-212f-280e5bc26ba8,2742452132,13863215784502741989
+d03166dd-8afd-ee0a-e8c0-7fd0239b5de3,940849241,8908563706003025213
+f723e6ea-dcf7-6cdd-ceb2-2cf442bcca19,543044997,12618794705017415090
+d56fa9c7-fa5f-f80b-3a6e-ce55085adfc3,178879055,18426801178969864810
+a6cba593-08eb-c2da-175f-08c2a599550b,3241383535,2501030815295785583
+a85ca157-9770-fe82-a697-cda992ba959a,3397482127,4083246087715075034
+7ef6ee96-2802-7713-c0ef-58c1c3a09e00,1242630996,15294813109849648413
+a0ab9a32-f7d6-1c72-fb4e-d793f37acf7d,264389791,17645064964237807566
+e3f52f27-c3f8-0124-8b1c-9cb8d958d9ec,3215287877,12971217454745156851
+cefcebf2-e827-1b35-19b7-90cd9b8504c8,1926415866,9762726554255944116
+6500f822-f2e9-043a-07a2-faf31bee2cb5,871128826,18209218477162130605
+5d13ca96-7d69-cf08-b28f-17ebb88d94c9,3242620985,13400517140940736829
+b89265ea-ae5c-8631-37ec-ffdae3ecd7d3,4210087833,16962779200522518848
+12081598-796d-6124-4d36-9888102b6cbc,4263823259,4858210315148350824
+04852672-cea2-e9dd-b754-2ece33a62aa3,4254863581,16729800319786506177
+1d1deb28-7ae3-189d-8f87-cd9f23533b43,802864519,12418832199217002424
+431b0db6-0ed5-9df8-0da2-05da6fb87f7d,1104621371,11720165736427126745
+d6cb356f-c6c9-fdc9-e437-ba2cbbbb70a2,765525204,5681977578721366152
+58c4f8b7-8ef2-6dd7-d922-fecd6041a4a4,1297243084,16281798605091464493
+d1859553-5414-a622-3d7e-cb04bf298088,3828577465,17643819889360775762
+784e7da2-2ddd-cafd-d8bf-194d89c9458a,1382492442,3332898512225790911
+3ce26321-51ed-6b77-b1cc-10ae8b19c07c,3795859209,5865507094378492261
+bb919d31-5660-bc51-c646-7351acd22938,2154984407,2985632254625785036
+85b4a87b-597d-f98f-2d4c-016bbc31c892,2256360980,15060421348268672405
+5b8a14a0-856a-c84d-22de-2459d4b6de6d,798037377,2443866782827474256
+e2b1927c-27c6-1c70-d5bc-61e5c8cfb9b5,2779688350,11797005871469789896
+4f51b6c5-4016-55d7-c8c5-1683cd8a498b,2989707029,15375086111132370131
+37a50422-9a74-af39-e871-40864dca280b,604285393,16705990932493102101
+1945c509-6774-019f-537a-db3328c2a6db,2443331758,11155176327270160026
+5390eff7-66fe-f5b4-ba99-5e088162a8eb,2791000363,13038534293451253056
+f2e6282f-7c20-dbbd-049c-8b2a3df9c13e,2058527545,3926796422268193899
+4f9c973b-d2bd-5174-bb64-c0b44c7c90c5,1810557323,17139232602351323447
+b49c2239-02b5-9f15-6b1f-7502f886229e,188667318,4533811121559936679
+5f41a04d-3bac-9755-ce71-694f2a866d36,2157870761,2506113454482488522
+8dea4928-005e-609d-2152-310e078ffcf9,1942050206,17631531945983996818
+dc5fa084-f38f-e3ef-a409-f90859561902,2627554363,8802743513741238070
+6c9aeb3c-61c9-b739-585a-639f3729e52d,3573023638,8398262532926613038
+a766786c-975b-8800-68ef-d601e967a9fc,828370959,12859417095645601445
+38a158b6-8373-1ed4-b3ff-0b81e1c24d53,132710506,724443447249891244
+75764435-453b-c91f-0b34-1adb5b6837fc,3644790314,6916311397132629069
+dc366054-5cd2-f1e4-5049-4f737a314f0e,2708732567,15850037152677847084
+fdd432a2-df29-1c69-f43c-4d0a0452518c,99053170,8786520174786151916
+a76a79fa-f8b9-1d37-5bb5-5b82e016313f,2538069749,9239702626615885029
+7d213d3f-5da4-7578-14b4-f74fcd45023d,3593327708,5218748537092466999
+ba479815-a198-f68b-d7a8-f2188b733ec8,2643330693,11477683123977764659
+fd1722fc-a398-10da-9f8c-fed26810d7ee,3016854980,1664267837051828154
+ba3a5c10-b39f-92e2-b750-abe1f7d0b5f9,1457513144,4837626969541744566
+3c1a6aef-7fdb-3898-515e-6408e1e88744,481573433,17268624896798213328
+d22d1430-2cc8-ffe8-45fd-93de20e96d99,3175794754,6722035583545048896
+533fbe65-4e2a-c21c-d234-c7cda8da6423,3227460881,485585472395476566
+722cde76-0190-d6f8-8e26-2c6579a80bd6,734084693,4071670152876456750
+16731200-032a-215b-71fd-6080b9c2bfda,81915298,12722665071267234240
+5959059c-6051-deba-239b-51a42f16aeaf,2296966937,6738968868034632877
+73ba389f-1f5a-5cf3-300b-c538647a3e50,2071055489,843454517522938704
+0506b3b6-a317-30bd-2838-9dc58572ffdf,2053219640,10478644776989526018
+a01a0b15-8323-2a7b-46ad-225f9da956f7,259489110,12263017516577955484
+4566601d-a0c7-cdfe-a853-c9900358be5d,845339577,5640509916754692811
+e743cbf8-1aaa-1923-ba66-7748417ef5b3,3848423134,2630964142798799453
+8a122e71-1134-8938-0fc1-57b6b6d7f429,3038040171,2490675050139444388
+cd4b46d9-61c6-c848-b4a7-4fe144a0a74c,1004244095,12132462352307218672
+04a58e28-2ba4-5e0c-8711-43c4ffd66e3d,277554062,12750649225617482488
+d9ced4f9-763f-032d-ce75-53d77f73c9d9,87912706,16618795724581257276
+eabd57cb-7296-44b3-fac2-add46a3fd76e,2318963251,11462647282892386859
+7f12d335-a3fd-8d94-7b45-e1040e0ab011,358352167,6291635515460137662
+2d42a8a7-9499-f192-8fd4-9ad58017b400,2312000183,16283006974124625172
+8f645758-a833-69ce-8f4c-724623b9d7d4,4283553322,14401846680641353288
+d57b64e5-a491-1535-1138-ea0b438ae9ef,495708356,15459589105479059558
+b65861a3-624f-171d-c458-2ebca80bcf5d,862189105,13133900711567129184
+7428205c-2856-653a-6c93-4b037c614198,485343088,16639752457987245516
+44e9f439-c0d6-2f67-f657-d377da99f124,648056067,2855011639324544777
+a9032e30-be36-ecd8-844c-28981899b347,4183024473,6952460802089306196
+34fec6ce-55c0-68a6-3828-8e15df73f878,2250751931,4072006024459409545
+4f6b07dd-3043-1ca2-602c-67a8f39c34cf,657899610,4355065105945215987
+f8330a41-b3be-9d70-d17a-d5bb22370d91,3209532807,16660906359870159732
+57746560-25c4-8fba-ef5d-2b0b03ac4909,2599971292,14208271303440457877
+09c3dc1f-b603-67d7-8e79-d7a657e34538,2267627691,14900028179534542665
+fab6f3ac-9155-4564-2bc1-ce1fc396aa6f,2587873337,15428685055324940232
+94623d00-4b4e-d493-afa9-49b58e81e29b,450966583,2263875030812226076
+82252878-fae2-7a6d-7c41-ac98c9008de9,397825990,10749548688719385047
+43776043-8f28-ebb5-65ab-b69b9c2efdf2,2267143366,4860654946369620812
+bb86e811-6fcb-c080-ca90-a2b85352a221,3109733550,10754677306245191408
+936644e3-d8ae-3139-ce20-909400874697,909778464,18019801429960526546
+bef3ce87-b2f9-2c3f-784a-0764ed577d43,772497455,6495600950210875181
+668a94b1-8136-2a61-df80-0653ef63a073,819936900,8198920446875285336
+f5366a9b-7db7-41fb-721c-5bfa4307fb71,3767583933,17698095180290677793
+d3e6d76e-1725-2496-cd1b-d3d215bc62f0,1998374504,15288601379900141004
+40b4ef71-d676-9aa1-fa18-3183d8798882,4128420355,18024610477812506944
+62665406-7539-c703-5857-4c71caa06836,3549737981,18428997968602852476
+1927c519-9d13-face-a9bf-b337bfe11857,3579316751,11658580839918495635
+8748a89f-f47e-32aa-b231-b5ddfc107b13,1584419982,7790186998134278585
+86460154-f868-c748-7f6b-88ac4f99cae8,1702232782,8540512188219096244
+b593079a-01f8-7663-4712-8189192c983c,93301292,9902303343080140799
+738ae9a0-46b6-d7fa-2e4c-cba830602204,2611022446,3897741800436646900
+2833d817-233e-a3b8-5a62-1837caa8be30,2045884152,6536992848240788720
+9272521f-60b3-89c0-3a05-d1f77aa94d86,2970339373,2876732769315381640
+b855221b-3c85-ea35-36f9-4da34333c350,1052825540,15661599222893706014
+354a5cd1-a718-bdf8-384d-feb0ffe41bb4,64773606,16949950911136415060
+b443541f-1e34-885d-c161-78609c3e311f,3872888822,3784890782135167248
+b1ffadfe-323b-37d1-1324-e18c619ef9e9,907953880,14239531453151821027
+6eb873d1-c0c2-ad5f-aa22-1422c4f36593,3885044490,17846058912005229530
+58a0606d-c91c-717b-06ad-1174ab218bcf,2402410194,1381322396559977276
+f63cb92a-a28b-b567-83fa-1fdeaaeb8390,3051764119,13538831386681190982
+292549e4-33cf-43e4-44ed-f2d44e751080,454612899,162572422907655616
+0c2073c9-e5e4-4330-3594-38e9d457390a,54058591,3920752321904978143
+60887ba2-aae9-be0f-cfb7-a6439078874b,2964031542,13312546282008461329
+099b77e5-70de-4b82-d086-1115eb0b792c,3048696441,6579311661519617384
+1f08ce33-1c72-3372-bab5-94894867d3e1,3864821026,5843767657651654292
+c4568f6d-b7e7-de8d-a879-df813fd7c32e,1866722963,14123421305752576514
+9f071e61-56f9-b946-cc3e-d8c79c28977f,3646239915,11071679089741964298
+2f1197e6-0fa0-dd42-8023-5f34f4f7d783,3517465206,15156000934329453398
+4387bdfb-a9b3-34a5-c792-aab7ca9d7a70,3951075310,9850835591213902785
+45b84bc8-dd21-aaeb-ee58-8ac03f9af285,915383711,2993644654144442300
+9a07cda4-6709-daed-88bc-c36f5fded412,3239287511,14946521904232537950
+ce018675-105f-0088-4757-68cd14a42e9e,898906287,4143295955364940416
+4fea3a8c-2afc-c004-7c44-300dc7d6cebe,307465909,5214781490398073639
+87cd7586-8f5b-57ed-7f06-03e68f8a5865,210093981,1774459344115758472
+4cc093cd-69fc-e0fc-4ed6-49190bc9f3b0,3291853634,6262462227585937575
+f94f1a54-0210-21bc-56e6-e59327d93474,1475234056,2420582362250183363
+a4990486-4b3c-8566-1ab3-8729543260cb,3414065695,11161585361608461496
+fb52cac7-1768-8221-f10c-057ce9f9d3c6,3035718090,17811694204355409074
+7e1f0ba4-8978-f9de-1723-8f80de54a338,2899176349,3142433044854773245
+b37a5d1a-056a-bd3e-c393-883dcc3b28df,656536016,17996592683604794776
+100aa5f6-2e09-a639-e887-26413f199cdd,2334866870,6275753508282864
+1fe4c549-51f4-7f7f-2607-9497079b2c5f,4216449415,1237374607320145425
+4f94f863-6c94-671b-ccd8-6ab933fe3aa7,4010195556,8285903348294983664
+9935240b-ebfa-c2b6-e81f-87bf8022db97,3170559619,12385088025366377703
+f7931501-9c6f-92a7-c386-b724e9e99f6a,4183790947,4068251153017967302
+b0dcb9ea-221b-e2ba-b6e8-5dcf68e375b2,3505558917,3457844002222406877
+34cedc4e-ae1b-9ca1-5be9-8e116692cdca,1093336432,1776286436191926107
+1525c794-5eb9-91e8-a5b6-633f9d7db082,4046393894,16685489106869180546
+3879c362-fd63-d81a-b64b-c70a42ddf8c6,2922673546,15972942084973235814
+26bace37-588a-045b-3afe-7017460d04c4,390459772,6490943502372050488
+fb6899d5-5427-779a-8343-5d21ef524858,219551653,360447109102918315
+87721ffa-d46e-8348-9900-31ab4ac49348,2244930376,836261380432334148
+9fedb4a0-d600-ec7d-f35f-af7426164bb1,4211629407,17117450190642378952
+50533700-a0e6-e2b0-18e7-a2a36d97332b,1784880540,3555594057155750943
+9ea90dd3-4501-db82-e8d8-5b25ad8ffa1c,3159226328,10150140234120317744
+36b96df5-b544-6415-0a9f-c4e061ce11aa,3357146263,5813028204904853972
+0a83d1ec-6440-93f2-b8b9-203df950c8f1,2166062350,5025646354061992033
+ebca5c5f-45ce-f967-3f10-d6b902dd9a31,3318691687,13860124887750741180
+baf7bb3f-135c-d3a5-7b31-61b1d0b81294,1987256086,15617233200592856085
+022feb87-7c4e-f3c7-dce9-6a61b039b07f,1789192991,14350290944658676653
+34703ad4-97b4-707e-3606-d53ea0d8691f,3890504465,8833038218968563741
+1040db56-65df-729c-921a-f48b9b05a313,4193162480,8537639856320627140
+5e71b33c-5a9e-1403-2c15-d4e58baf144f,1201216456,4490652035773541828
+f27787a4-528a-5665-8dc9-c4a975c64013,2973268441,16389583928920225712
+de036f70-8602-c616-be7f-131b187e818a,1185717565,16570307946161647070
+e8baecd4-8c87-fd3f-c98e-eb294c06def7,1327681548,4120939068087964125
+21424a8d-bb29-54fb-33ec-14c2145180d6,3203489929,3229269911172860363
+c7b14566-5186-47a6-2578-66c6318d6402,2253470037,15140889654748728867
+1349d06a-7e5b-123e-0068-aadee2af6d71,1066811569,8048469096218598797
+769b3d05-846a-3e74-b5f3-ef1e2adcaacc,2275247512,6666615492453100193
+38e953bd-6b17-5c5e-7ea0-fc216eed8354,2042251552,13177746143569889200
+7315d397-575c-a44a-4bf6-c0e5e0d0df4a,904927184,10928859332303353483
+3419c892-87ff-d89c-622c-39a0342cc008,1289982542,15818680564537357610
+d2f6a7ee-bad2-7b24-0104-29d78432128c,2773226073,17436243174994772985
+889f8a13-37e1-eb82-2347-c061ea5d56c9,786727803,9427315119406596140
+c1ac9ae7-4ad4-1b23-6066-75363b2de41a,4153167273,16707788868485199116
+7011f332-7d5d-ec24-bcb8-6251f4bf6910,2327590668,8872693785103873941
+72329293-2e6a-15db-5d08-610a9e777176,3286405010,4902206865272087400
+e11ffcaa-947d-63a6-34b0-4520e1210d01,3120460424,10724611690852538759
+39270e62-6645-87e4-04df-d9fe12412f46,2266181058,9805555900633474594
+d6eb69e4-a333-f2dd-057e-22f5fadb1290,1103022976,927236167721043912
+3c7f7804-eb80-cf4b-3f36-ab635f9135c4,2782103852,1035725257410015939
+229ba265-acaf-a1ec-3145-f7049c59a339,1289666501,4287818054698409426
+1c3ff070-0d93-d342-b848-2684ad3a5c1f,638094230,12136608240655834056
+85b6959c-f44b-7b24-ed3e-2736a14084d0,2506214022,10298178983887578190
+019d6798-18f7-1b6f-5e3a-775dcb5313a5,1171358739,11738609858594403732
+e5195815-5d8b-b7cd-aa22-6134f1e9023e,3630611581,1894034911375983742
+e1e45da2-3754-c49f-6381-2715959d118d,1896627246,16059860021993071981
+51017596-fdf3-48a4-be6a-06ad505e301b,3896043822,1994026691174670397
+33d97c99-6e9d-dbd5-6da1-e8964ae032f7,1618122540,12216091570269766447
+16900aff-92fd-7176-0432-0af7aa52c33e,4060881128,606942814865859023
+cb8afc4d-9622-4d68-891f-4b1fab704b27,1498898557,5413267533441652888
+bafb33d4-948f-0ffa-5d98-efca0a29f913,4142820224,12950589569494016031
+8f777eac-5284-3f56-7e21-d9be8bb18cd0,1357519263,15629425970984930330
+b84ef77a-a5b8-26f9-f69d-d7db3ff6c949,3118573923,17832053162302149263
+6d07146e-d208-5825-b7d7-ee031bf5275c,3805505181,2180882553500721208
+afbbf069-60e1-6b93-e0c1-9dff2c75d021,373189493,2334408298818498842
+e1e8e476-96bd-b5b7-9172-194936331eb2,1514441725,5047041457226665739
+16e86733-22fc-496c-699e-d364bad82cbd,869458244,8585384552084769411
+8f077254-0b95-1679-0ebc-064b9f17a9bb,3206963147,10279963043161066394
+3bfbe21a-6824-dcf6-8c66-0f29a27cc020,625550166,2171691476263517857
+34b70faf-9833-5916-3792-2bd4b68087ff,3939388004,3887761819570613545
+21725345-5a3f-8627-3106-dac161d1f57e,850548531,1676859601574361347
+4cc4fbe3-55bb-f424-0db0-791bfaaa9544,3674065743,15562811921545260928
+2dec365e-bc59-a0da-e0d5-6b46788fa313,1130568443,2209343170007640143
+afa33af8-ac6c-3cd5-01a3-f5ceae0b2dd6,3840796321,8181004959486599146
+0682011c-46a6-f48b-30f6-f5c76b696172,1264896,318740400766038015
+28a2651d-8329-fd6b-ca0e-f697d071f8db,2489408682,5316816309570452525
+aeda69cb-c202-feb6-c42b-34cf232dbb08,2511406287,7876356001727459698
+628d0768-6e25-b47e-8cfb-13d718f93251,104226911,15146309064686029778
+61a38b38-a72f-fff4-d5d6-67357fa4beee,2335358111,17671435524060411172
+0fe0eed8-db52-edf3-f8d4-71cad2d9ab4e,2795585208,8427286299831920951
+1f6112a4-c7bd-071d-c792-4aafec656a02,1587393406,8152927360335956873
+be7f42ad-51bd-f1d8-3203-c4d4c2bfcc00,74097389,2878059853195911590
+4a24ac01-2057-95c4-97cb-019e77b1a760,3873794648,3298213437993482032
+0f5726ef-a6bd-0f1e-8a71-00275d7cc9d8,3646416905,8006163578340658693
+db4675bb-e88d-2264-2037-dcf469049bed,585664064,13192893224153608668
+6ecf5bf8-9581-1b83-7a4c-4c7887bf05b9,893415958,11856003042375675936
+3770cebd-6b2a-409f-0957-d6f2b1d8bb08,1708074380,13322968791884692110
+15e64404-e23f-668a-ac9d-d241ef667450,3101663244,3872478872778678906
+675a7e0f-ec0a-0ff3-0624-3fdca8c0c9fb,3979526988,6040648783800954398
+e2fb6320-9a81-a050-929f-a3a9d92009f1,817906686,5067570697167648382
+2652a05e-c424-6e68-3784-cac7b19230f4,3856647036,620050362775062340
+5fd12635-9888-97c5-92d9-322e7d677875,621845413,10326192216292347790
+32d72c10-a75f-170a-f662-6bfcdb909ebf,447232554,3482931051203980868
+a5aafb69-2ddf-fb94-d2a5-8eaadf016e7e,970137489,5561749248746451001
+eecc2492-45ea-7a0e-a64b-dcb61f09ea54,3641811584,16164914384736507935
+c9291397-c8e5-dee0-4c44-1a8ed4651b64,2304106108,16488899708189902944
+0aa2cc87-b0aa-2f53-b121-bf4adf5760eb,188198632,8478294076709289959
+90252be8-fd79-1e07-5cc7-c647cd7fe1d0,931767792,83861543380403172
+ebd14394-4a00-b98e-f779-977b3489aa1a,288868647,9594088156433454656
+58d60501-231b-b40c-849e-89042dbb6073,1419886931,2178528547578529868
+72de7962-ac87-999f-a890-a45ca5b88e6a,3949954500,15273388608391906899
+6495c3b1-54e6-15fa-9af3-e3d8fb80c703,4257625919,17308004744453842013
+89864f45-e359-14f5-16f5-130341275117,57279323,12721105010001609984
+48ebb87c-c027-8946-d4e9-6ab66ae93110,437690666,14117142012740130881
+b9570b10-2b53-bc51-432e-946fe904f6e5,1582355443,10227651050458480300
+883bd42b-efb2-4849-cf7b-176e6ee18d64,2862040869,17322566776343192
+c5d6893c-2db7-310d-4849-33e46f8f6731,2306638127,13615260084062275490
+13634a32-5d5c-68c6-7008-c7a939ff2d1a,2714246436,16932146783880125583
+83b2586e-5901-9b5a-db77-a5fe275c675d,2701781383,18077115407120902525
+7f3ea56a-0630-18db-06e7-c4e0a3d53d5c,1861328726,8651223197040842379
+de8942d3-683b-a6e5-cccd-5ec0e9388b76,2353273287,14872663265081023245
+9874d21d-245b-a2f6-67d1-860bdc94afcc,2934022175,6978806461347313698
+5827ccfb-8520-0cc5-8185-ab338f6b93b3,2825312963,14258633618903444062
+5939cd59-266c-c1c8-cb9d-f1ecffd57388,572606951,7915105178286045327
+999dc6a4-0841-412f-7381-0abd1258e86d,642070566,9133391796643247821
+01f53293-dad1-eda3-71fc-1b8e73a3fb08,2218269975,6383070627154198781
+8517bf8d-a480-9539-9c07-3378cd279cbe,245142321,745380833181823040
+9a26f5e8-0096-aefa-e79e-e8d3ba22472f,327526338,1508535325085630652
+2b6c9558-5a9d-54f9-98b0-a5d5f3631d08,3723769908,2705377033268446066
+9966dc07-e899-4235-7c71-4e99cb0d086d,2824510641,7926719196643880682
+00986093-129b-45b0-7cbf-5d54e257acd3,3221506052,1007528019629620392
+1d2ba02a-c545-8b2a-ba1a-c66506f8f591,2199444546,5053705850140363868
+8cefb70e-4ed7-862b-b318-788ddc0103a8,2378487082,11501463369335664853
+955b1df6-b752-4f71-4a05-1c6850462358,1428899263,12275592140526319225
+ed4b9406-be20-3fa1-1bcd-e8f298e186fd,857216925,16567057111934667250
+ca295991-2774-fe58-649c-a23da3d16a05,1766130166,10708315792572701671
+fca51a18-1e96-f1c9-3da2-86decc50c21c,3105436552,14422570518573020224
+5210855a-bac2-07fb-49eb-b08ebfb6171f,2919018720,4640917700958625487
+158f1230-667b-6c67-6420-c2b2ce99f538,1615416332,17608512317716341952
+99cc6f2d-db96-fd5f-daee-a5a29c84a0e5,3838568669,8362161078379889093
+2d160d48-0362-79a6-fd77-8c90d3f92bf3,2308233643,6294719318742540276
+7c696b92-a627-b120-128e-5cbf3635f2ab,7378142,11332221497030233074
+8ae845ac-2850-9718-d04d-e27a40cc9768,1768209428,17430575345987829874
+ae5123bf-899d-66ab-8053-185252cdcbd7,3399958019,6613794802552017648
+f594d40d-9bba-764e-f0af-fcc99b0be034,3368387189,12624906368424738536
+25f31950-378e-5eb4-7172-1aba7c6bf4d9,2835872240,15803927894673788701
+0307ea71-6686-a596-3342-832dcf53c4ad,2867781829,8967340747669265392
+195c423c-a9b2-9994-cfa0-d94e3c4b9eaa,3235672881,7772400700728176032
+c826418e-a6b0-1ca1-5f0e-036e0b0188e8,3293131350,6045739149322713641
+c6dabed1-f972-2a0f-c0f2-9eb480e64f70,2997942371,11446927095726521156
+1f34382d-5ee0-7fdc-b57a-f2c4e72f0855,3505021019,17600416705810868899
+022bcbbe-295c-49c7-718e-4a05a2b99b47,2381204845,8497651052600965262
+40b5ca1e-e43d-e4ce-0f2b-80482b740686,2186758932,17150132205307404332
+6e091baf-6af3-164c-4564-214e04d4cf8b,3633566988,2671638117234128136
+0fbdc260-aa80-3bfe-d3ee-213e94cf08b9,242628199,11106040135695497437
+b63b87e7-d407-56b6-14eb-3aa2c0dac69a,3157612474,13006971804520026028
+5eec663a-17cf-9c03-72f8-ea1cc2512b06,1163390777,11186347975687284243
+330ba8a5-e040-47c6-ca03-b675405d684f,1837821202,10608510670697396970
+bdf0dc26-955d-dadd-9782-860e12ef9fea,2291005082,9209489156069430851
+fbdf5a67-40b6-c915-df20-9ed0349a3bba,3280918,17346043980536387334
+73d21c44-e447-7ccc-e73c-2f4525a5729c,3978886359,4787868377537079786
+34e91ff8-2623-19e2-c366-00235815141a,271466417,8258062378785144769
+c9d79557-d04c-e7eb-84cb-0bcdbae47f08,1823429338,425133397598409
+aa8d522e-868c-a41b-0041-ea91ab7c7433,1978788094,7134767928345988891
+8d48aa70-24dc-4733-5ce4-f9ecc575f1d3,1449742619,13780971046881381114
+d5a5da07-e40f-c5d8-381b-9c6cc642754d,3491927895,16123032885809210473
+823d7165-14a9-d3e7-1a01-c72f33e948da,347490453,9520017211428328072
+f7c8d38a-fb7a-5f55-a685-98b9a216229b,3818683359,4925309265445310480
+38e68bbf-abeb-3907-94f8-2196bf71620e,1885045294,5367658456297131812
+d214087e-c7e5-6957-3ea5-e5a3361b7d51,139205920,6955231839921637144
+3bcd23f1-dfba-f7e8-8897-cdaaddb4fcc8,1680915696,15535220184811280414
+f5ea1654-46dc-0aa8-65b4-f6c239b8fc33,1792625804,10509117447619731571
+eb4ce6d0-02c5-4fe8-6003-89b1a4cdd523,1470357634,8292420048029672131
+801e0902-f1d6-853c-2b15-6c08fcde9d1a,1145702377,8611661733334791531
+c774f925-92ba-386f-6f65-5383eadf38ce,4203912518,17738894641576230710
+5e119266-6884-1654-1c89-63167004efbe,657938590,6545944829799380327
+868b77ef-032e-64c0-8508-4db32bd16758,2460115607,18279587896434896501
+bd53a133-7251-62c2-7cdc-62803b5a8d4c,75223220,17044504168924373128
+6785559e-9a6f-9a29-65e5-fb56ec006f47,1881032385,16439115506052306926
+3d4bb917-082c-40c3-f579-fdf243f7e03a,510439835,16227157028662144093
+3340ca07-ac93-6c7c-70d6-283400bbec6e,4167302878,7785549999609596519
+c0a82f50-c0de-c6bb-38ab-1245c4efa7d2,4188359846,8568328071871030918
+586ade4f-272b-0e97-3d07-e4049f2f1df0,3622321574,6664561280625985793
+6138b37a-ce6e-a20e-315f-e21b7e33ac94,558943918,9368001170893270993
+bac8d445-70e1-dc36-4d07-e4f6f6e7c41c,314224618,1866672922762892085
+e38a5474-3ec1-6561-fac1-65e67e5a0892,3294053058,16793464026484826747
+f961998b-02bb-2cac-f0d7-b703a11338f7,3520358578,16040807758083994765
+36b296c6-7788-e572-3dff-253d80c30b9d,2275093478,10738060854543828764
+9a897fcc-7624-1390-3733-a547ddaaf1ed,2936427542,2173943599926214432
+a469dc47-41e2-00c6-c507-a4724cb670e0,1555088991,12009934650019761532
+cfa79333-489d-a467-2b13-6659bb28125a,4142784777,6666813965648888347
+5860313d-d9b6-911f-3df2-8c98a31a72f4,849606901,14386687908757043128
+2d9c400f-94aa-6cbb-5e49-dba76d3b187a,4290939241,15682260254640285853
+88c42eda-b02e-455b-46b8-d8ee4451b6eb,1628001418,7146278566136373555
+e8eca4a8-5aef-9dc9-88a7-c3f3bc4e43db,3809178925,3326058804179547570
+ae310452-bd03-cb65-d7b2-7298ced7203b,2814295948,17079897631235400783
+1fc9c9a2-29ee-3637-ccd0-e60238107345,1560996176,10617849876725445206
+23f72dd8-a38e-9364-cd74-1a9cb79513f5,3294139978,11859290361608642781
+191c4b7d-f72d-aed7-7b58-8d75c631eef0,710894964,17020465030271532444
+d5ae8b3b-1436-7a08-1429-009a21804e5a,2990374282,7729979466386590276
+c22a741c-6860-7581-afbd-3b1ddfc1739f,2891165220,10016824795927990140
+ed338842-e7e2-195d-1f81-107df21ff1b0,3373994802,17160774545312932647
+dfc971df-ab23-90fe-c6c8-8fd9e21f84f5,158529120,5600294358736008840
+971d20ba-7589-4828-47d9-07c01876355c,312604623,803928248859897483
+46e0ead4-9c8e-c5dd-56e8-74c3cf148881,3229713867,2108158897453040151
+6a8472cf-dc54-7117-176c-c3f843073e69,3359911197,11734278852934213233
+8740cfd6-3029-9443-bb42-e782b2345355,2206749658,13437001029516806595
+fab4bdb4-0e1f-0b09-d4ed-2d469c25c25e,3074572543,18265996668348242885
+c221c122-b8f5-8051-ca62-8063cf078edd,1321812291,10217220830916381801
+715cb826-3c67-0698-bc20-ae2069339678,3383799471,7043188727279283978
+0715f124-8f21-2e0d-8e81-835afdff01bb,805179929,15463115764104688614
+0843b6a7-c252-6778-8024-ed67a0522b14,2551833812,10922318282704412198
+bd56b8c9-2252-9750-4c12-246097bd2c3f,3596485571,11214036665796921636
+37d1806d-f651-6855-1102-b1071c95c07d,1125672075,12728863212301915271
+62389c06-4c56-5a59-ae1b-ef61de29be21,2954063695,8378038788731894565
+0b161574-99bd-5d36-d578-ea3cb88580be,35692665,15134440550294434584
+14b247c6-db85-937f-8141-c96e6180dd1c,1679256306,13082922998820940774
+04a82fad-16a3-26bb-92e6-93794634d453,2916855171,8474740429582990949
+a62fd367-8ae7-3b8b-5934-c89cf5ead452,4045320021,4608425187278971777
+7cfc9bf1-39ce-afb8-5ebb-88b1791e64f9,765200080,14864639422455807555
+82941d2b-28b2-b07e-26a2-437ede891ac6,3389468398,10907626182960709887
+08ffd00c-22e8-5c8c-c586-35a7033ecb7b,1141164930,2441400226959133063
+a11a44cf-90d1-3e33-4630-d5490ec58aea,765771680,11632537820351024377
+110e9ff4-49e8-4a63-c598-5af444b55df4,2814212178,9033665920253166695
+3ab649cb-74b2-2a98-38b0-faf4e467dc93,1396975660,2963039224361190450
+d1908309-fcc7-5cab-7d96-9137b7f1d3a7,216367126,1809710926624000787
+10b0778e-3cd8-01ae-e68b-96f9525c166c,3004764777,956915058445035920
+71864136-1b83-19f9-286b-8fd0bbd9cfa3,3431020571,15598748314067373940
+6df123b8-2c73-5d0e-8660-79fd276b9765,3559890656,3270639035563430109
+52e2b95d-892f-7835-c13a-1ceae6b8ef66,897106661,8738677821824608580
+e135cba0-dde3-691f-aff3-7c83e8397857,1566593864,2732707972377409236
+f260c4f6-4cf2-96c3-29c2-52aeec222042,1202500169,7992714455407769170
+39e24157-a088-deb4-36ed-064b5a6cfbc9,1833331347,8569589377160842592
+489dcccd-444a-1c73-015c-eefd12d00d6a,1937002361,8095698190840908171
+82484322-de7f-63fa-8bf8-fc21bb1d42db,1353680357,2278303472261255661
+6eb4a15e-737b-eb3d-edb8-15a3704f42e9,865413450,7083310328975986822
+b5f8f956-4794-7822-db9b-067e7aa9bd8b,2293169992,14607175138140659738
+52299cce-1d6b-9d4a-c999-cf6b27c99f9a,2793783834,8849784443223809589
+a8d778fd-bd47-43d9-3b26-226c51556d1c,2422260110,9454885245823485312
+7892d296-2cde-fb9d-c9f7-777faaea0227,4117598420,5825688841839691157
+d084a6f7-7bc5-0d76-d45d-cd1836b6200a,1069106468,271932553536497715
+face7455-7205-f09c-9d1e-1b48607854a1,1790136976,16707330896927838014
+20fd7adc-caf6-a5a6-7e2c-0a47a82cc703,2349826178,18399840395967600199
+b987b464-b644-3dc0-9738-1ac18960560e,2271695410,14692081123812381862
+ffbe6710-09e0-fd1a-bfa9-a61578ead352,4085173500,8793142358619793999
+c3d1e2e6-df77-fbe3-7428-37b102aee689,1576211096,4655728702824502923
+0cbb7711-4961-1478-0448-8d72124ee67f,2493515793,855131746973146882
+167cad2d-b73f-61e3-e826-ec748ab4849e,3088933828,3158263380908462690
+10d28e33-0b1b-cb4a-7ff0-126e14157f4f,1690485180,3232399304690891077
+6b4bf60b-8fa9-04a2-3874-eba4c770d44f,7420358,9779091645219737529
+a8c8c96c-8fe9-3e72-54ce-be5d7e2ac85a,752703016,16589647906743027995
+2012feef-9cfa-405c-791d-3323650df85d,3694276832,10132436209057076967
+37141f62-74a2-416b-37d5-cec7c95fc238,1686963196,9600253884895276658
+0776f158-c1e4-2c38-e3c1-6ad72465b4d8,1288404335,3421422072427861123
+0bb9f852-760b-b77e-24c3-2000f2fe91de,1929559658,4806928403541280369
+05e0e7dc-7eec-288c-3899-fc3ec3d1040f,1383977509,12255520009537723577
+17f021ab-071a-4a90-94db-a6a52ab82092,3115215785,10331106739116170019
+fa0c78f7-b211-a588-2a6c-22198fe2c178,729448510,17488721208198531912
+970603e9-1125-dc02-1381-ca7e2082ace5,1209460466,6326279032266541519
+8ec916ca-3a5f-403c-4872-9418dde54ad2,1851825195,2341330029432531352
+03cf97c0-0e76-d045-cd4d-b1faf8a4ef83,1877263093,1312335084883844631
+3d0d0c8f-27ad-58de-a0c9-346e4c9290e1,2698566859,7123409024737167049
+ba100b3e-dbd4-cd0e-d787-b2701c73e5c8,552544076,13361142584680695837
+1380734e-957f-34d8-58d9-68b207fff2cd,3441020211,3751836282015297694
+06c310f2-9133-74a2-7772-4e171db1efaf,143363082,1219896086158166193
+78c14339-5439-782f-3204-bae466f3d899,3458797915,4647193388985093854
+4e2c76da-37b3-cee7-66ef-696bf3b4b9c8,1260067699,2704344546851694608
+2a4e779b-bed4-91c7-e96a-67f25f5e7b94,3101058179,16201466790741700391
+e68f392b-acda-00b4-700b-33be908bb138,239765430,8787788146918064668
+2d1ba707-bcfd-039a-3519-7d80931e57c0,3339577089,5295953815443056660
+5484758d-70ad-d991-52aa-3ebdca5f36a2,2755181340,5520652586577462122
+8dad5aae-af24-cd63-f767-5ff83bbc196f,1048822471,16365735840947135424
+f169fa49-dd32-b0c5-9a68-ce06f7cb12b8,3624506086,640615444233393991
+4036c650-6743-59b9-99a4-983fc381e5fb,3813491698,13060205104471746628
+bceb5ab8-3fd0-f974-ea4b-56552bc101ff,1731676021,9078192388937192385
+a9a9b65a-d321-47b3-6d6a-066c83114bc8,1743122957,8137862836965171982
+b07a2381-2e27-ec92-ded0-5fe108e76c20,3022206603,8436724431828919903
+cb965bef-e039-915c-433e-88c522e90f86,3589228451,15725062711282864191
+0cc6165b-ca93-fc44-1d1a-152ec147f7dc,3711009237,14972215511976285902
+3ebbcbda-5f5a-4d4b-d0ca-4fa16727041e,1835331810,4078810867074279788
+4d65d5bc-e3da-46e2-c68f-ecd7a936e5d7,210392746,16839117498007934495
+175fa7d2-bc5d-d266-d76e-52299f56837b,1178134056,10630401306731625669
+d00c960d-ca2a-77ed-5ad8-b2234db5db2f,444430553,8886242503856643632
+6d96efcc-04f0-847b-0da1-52c5e0e9aa0d,2545939768,2347056681181606228
+ad358a38-a557-a287-56c6-131fed3a5085,2673666802,8579374637839318019
+04665c8d-a3d8-dba7-6903-fd231d1792d6,616353572,695058475455134936
+b9105d82-b88e-e95d-729d-d0a1fe4d43e4,1737477588,11688640703126913784
+7ec55cd0-93e5-db46-4fb6-4af5aa8d5298,4084250812,9624375100261185054
+1e6bdef1-0e72-1251-bd8b-6360f52863b8,3426591951,15086815472626560780
+427b2b2c-fe33-bd85-46e9-dee2a552e2aa,3290224989,3065031331240765769
+bb618b6a-bd42-f0ef-63d0-be3b6218118f,4241658658,17993389676589997983
+6ba5132b-2bb7-796e-7b6b-1593e71abade,912063040,3792100501362285446
+ae0c130a-7c66-0a41-d68b-6d1488ec3a3b,2776816980,7699335530314601050
+1ff93501-9623-19ab-8f50-b100687a7c69,1618460727,1610995218717568383
+efe1d218-6ff8-cbf7-8bb5-d57c11ea7867,3103174135,476273889470135966
+bc3bb2ac-d203-8255-795d-acfbe0feec49,1696986236,3461463360390658244
+c3dca52c-9577-4b6d-45d5-4e99c9ea75a5,2971188981,10896694888163339850
+041b5db5-a387-d691-9007-9e671998bcfa,2157820189,17137568764635835611
+c97942e2-249a-30f7-4b5d-0bc09df06399,230506451,622409990880226433
+c2b44e04-25c3-0dfb-2bbe-4f94f2c770c8,2932143341,8323346259722234019
+52b0f2f9-0864-28b3-4ffa-e18759eef3a7,3979970139,14811864286574724060
+4eeb5795-51aa-ffb3-8253-df4e9d86d40a,4008437547,6667274981996363175
+e3e49355-4640-26ba-88fb-48fe62a67b4c,1065775481,5259592209435261433
+044eaa0e-8ae7-1d59-3854-2b626b128436,2929901942,2556067927413373467
+c8cdaf83-490f-b5b2-c920-23a9b82c938f,1175426652,14738404841307241391
+9de869ec-3886-ef13-1c0b-eeb886b2e5ce,2379781780,14115544871002178882
+60713fdf-0873-4a14-b874-f89b425f7d94,2520985241,11943036004555777526
+d2adb9c9-0d18-e07f-83d3-1899a1cc6488,1349026664,8303254178119170857
+23b3f00e-4822-26f4-8955-4a9005f542d3,4068146084,2163613224346853971
+64371103-3e4a-97fe-cb09-a99cd34a19d4,3850945531,2305029254968285795
+e8045d6e-1343-c489-6e86-1112e73ffcf8,3893411065,10820731904296130276
+530f600a-3fa1-b6fa-5ec3-04d3d1cf91c0,4126017890,2648212386736252111
+538b9fe1-215a-2dac-8719-cde13b5b1eeb,1577562243,1134262616342002738
+154f1d23-78d5-86d9-ec4b-1dfa598065f6,2732340169,13672399461339533225
+039d5277-08b7-bbf5-dada-4f6a1862f7d2,1294597022,3187321388290934196
+726126b6-6af3-1fef-f9bf-5d79cb5bdab4,25344552,8637082835392936932
+b58d1ffd-1f92-66be-90f3-4261d99c01ad,4202434246,270762716946410499
+0dd1e05e-eace-3c2d-889c-6112e8cdff4f,3131939037,9323516205107364861
+b12f5ea9-11c4-3c9b-ecd4-99bd7ae1bbb7,3826935089,15303146629510843230
+f011b1ce-92cb-aa03-43b3-17391bd73200,2776923185,17441167642892127163
+bb675070-b38c-54e6-4714-ed996d419d60,308074319,10266700941774901410
+ba2533d7-10cc-3b27-2059-02147009b88e,1317194622,4516368056007709808
+44e61f08-e95f-ef98-efa3-1ff418352e0e,1573836139,15642352631956501576
+7d6c586d-ff68-b014-28f3-b6203373b3b4,2698681449,18114487230849503517
+589b1b7c-d0a1-d50c-25e6-94f54f101da6,923514037,10903169527281919662
+53c79caa-3d99-e01c-6907-e6692ecf5b7f,1172456054,16470922272025219257
+a31542e0-2845-64d3-ee3e-9e3c7f000fb8,1251595597,3053437882498533581
+7fa9959f-594b-6b0f-a748-e0f8091fe47e,754471198,9925801124697447990
+4f1680d0-373d-068d-efb9-1365426281e2,2394687938,11942349321053251460
+8f15bb0a-6b51-243b-fae2-c6de8a98687f,1397799036,15782422657646800780
+7c924b5e-69ce-e6f4-ab6a-203df03af2ac,1593650885,411466966387141266
+49b831af-e6f7-6fbf-40b2-af57658dc291,394890204,284575262482613881
+78b82fae-a829-093c-b775-c317c84c1880,1492274645,13627119488056353086
+467dd5f1-6f01-ef18-b9cf-c3bff4781131,1589159320,11876320960995237281
+2112646d-b7b0-e0ad-a88d-e31f835cc817,3777266105,2728118880086795151
+280e500b-708b-ede2-a65c-d8d26d724a2f,4237551689,12575199167877352436
+87d5a070-2f13-6de6-e951-ef6bd4d6bd73,2725097312,10852168207477997031
+769d974e-8610-887b-2c91-934255f2c3ab,3452426328,9733316197449635020
+b3ce0243-b3b2-6d95-85a5-677a183a3a15,2217675454,7215249527711925711
+0995cb67-5981-9135-5c0a-a3ba0c43107e,3834989041,10585260578786016828
+3e060b10-7360-c4da-88e2-8e155b174f10,3632906055,5767798407391588026
+5e9bef67-53e2-b56b-edd4-96e9571dda49,2052255865,12812559495659922813
+63198e7e-ba2b-9aae-4487-49130f1928a6,1408538472,10678554894261843897
+888a9c36-234a-6e98-3a01-c6ebbba07380,2936245480,9351120714212916708
+79b8c589-b59e-6f28-3c73-ec2df1f192fa,2311428333,18369219335095869908
+1f0784ad-41ee-9853-90da-5cbff164c9a9,1677579681,664696673180183374
+de37510f-560e-c72d-4fc9-64aca771af22,3073083971,15489933735012034035
+d7c42234-9bf8-3729-6f36-e25833710a9b,2918304063,6124518331533730886
+4f19b62b-c189-b3fb-bad1-6e2ac778f7fa,942234177,9954646820072185142
+e920d082-f8c6-09c0-577c-0188257794ef,2123799004,6446338054975014299
+d737e7aa-6e22-a2f4-0df4-546426a33b0f,1220062325,721249197131292124
+eea75e30-0143-9b65-0fdd-7a2acae49fb5,2257586102,7692833603066415527
+c2a10aa1-dacd-94ed-95db-bd0144cc68d6,923361756,15347534103171693655
+b5526725-916a-62eb-220b-9733aff4a4fe,2186195570,16783865371110645081
+2888b16a-d8c2-24c8-9507-fde9a454fcf0,3884976537,14697583281896592351
+2a495e56-e477-11bd-08e0-13837dcbee6a,1848682587,1903828610086320521
+30dc8355-99ae-ea9e-b879-4d94b61a4629,3010613081,12644304383297317777
+1b724334-717c-ad57-694b-9f843c0dd827,3085408372,14359409896015217667
+ffdc00ed-6fcb-d660-cc16-619c12389220,2806442910,2768519789648279943
+454ccebb-607c-d0d0-bc8a-22fb5c2411fc,801973028,9699685683812290445
+0ea0303b-1683-600e-d0d7-b7825f11a947,1823156822,2060387561755331667
+a8d3d884-c569-15ab-c622-96cba16a2dda,102464199,12315148036637546800
+05687112-c194-0b32-d49e-7ef3d23d756d,3515567624,14603798302947922751
+77ecff8e-1198-2837-c3d2-330a80a64052,1377795586,12568906251253558701
+6dd3b59b-4d82-f80f-8f28-0ea53bbd91ec,1105138926,11278868414624501798
+5657b3af-4ca1-50d4-1957-8f5dc8dafdb1,2536476624,8956734044573408720
+c1618196-ffd3-e34c-15a4-fa88c0fa3633,1783833618,566840962189029444
+b9dd1ea2-f052-27f4-61df-7f74416086eb,4244143279,4794590449018602406
+4237272a-01e1-5df5-e9de-bca04ed7ac4e,4106946800,14224634594761110055
+36a88b23-8e71-4627-1108-179fbc56d19b,55534061,8271454068007938190
+21f3edfa-ed70-7f58-37f6-94c40445a77b,4252989859,7578865546647642025
+c4d02bb3-730a-95bc-4571-b15b27dc975d,3145322415,2766714509754056636
+b08a47b4-40d2-c68e-8596-96eb382d755e,2805725527,6184327045749389070
+ab1e300f-2776-a20b-00dc-44ab51915a1b,721220077,1251677878421250657
+b4067101-d7d8-c32a-261d-c90241531e88,3089867907,7344148063434778143
+a4338a6d-fe60-391e-5909-6f49edd5e25f,826451705,17950821920542913625
+5974ae28-4186-fc48-8814-96e634c99d3c,2825522878,11689208561388212616
+e66aa13f-3113-6615-d316-60453c63662c,3938214412,6562595806913912382
+d6abce4f-fd55-fb16-e44e-ed0615f067ca,3314747166,9561165713462449361
+6e7dd251-330d-bb9e-67ae-fe0c7cdbf620,2328317595,11263997312171379747
+0960ecc3-0ba5-7212-2a7c-d4d67621eb2a,1330649030,16398388389789519257
+fabc2813-c62f-5930-66c3-500a4133d848,2425721697,5048745564085461288
+6ce5edb8-aa1e-0541-3593-bcaf6c63addc,3316460105,16622207283520941000
+8842a103-dd58-0ff9-e4aa-e447bd54cc80,116645437,359994249682800274
+193b3a84-4f02-e1c8-4390-e5209fc1babb,1502451822,3874053500211571879
+4596824e-a68e-36ac-795b-70bc8b827519,1008010283,16752766027258472330
+0c54f6a9-709e-475f-f4ef-b09fe682d3dc,1743288210,14088423877523462048
+1f19acb4-4a09-8d1b-906c-17d6ae5f2ba0,2375773311,14118643597718989905
+97076db5-260b-324e-fc77-e4751c20e0b0,3426067271,17068187500049189075
+26acb2d2-1e1b-9528-5c4d-d68b7a103737,1536059799,16097690042099878613
+b86298eb-8b1a-7946-faa7-4225fafb1ed0,1841215781,11398295567769834347
+c8bdc580-8747-4f0a-c166-d0fe4ef92785,342424659,7535492921991161718
+ec3fe8fc-2416-8074-3d62-233640310f16,2146288710,14766162289241903103
+4d0ac048-caeb-f0a0-e326-e7d0eda6f0ca,4012092284,14230882525694852731
+1dac8cb5-47ec-d3a9-39fd-9db734a9348e,1288188933,1597041421347978500
+9dc26649-4cf4-86f4-8be5-cc835e476909,985241570,5656163099200689724
+989bf5f8-e7c1-e130-0022-363438ee11cc,2214183076,15988041956178461129
+31012fa1-db15-f111-e212-199595c297b3,2490305982,580087913215363613
+cbb840ff-a8d8-2a6e-2cc8-9569b2358110,2003562510,1210430144082496248
+e55dcb2b-12dd-6391-9016-9b4881188ceb,864692811,257194128836005826
+1960d405-819e-5781-d205-bf988b0f44ab,1730639969,12132214547681460488
+85b9b711-3b1e-d143-6f99-a75b233fdeae,123517855,8862457117622392231
+ec182d3b-25b0-32db-953b-617ec9fea975,2245165600,16962026804696110257
+0014100e-0346-6cff-d1d7-e22d659bf8c0,3733386538,15637421247590261912
+153ab1e6-9f7b-f2bb-fdf1-73e5dd9671b9,3958413857,102461417727728203
+b46349f9-72c2-8eca-7f4b-84d761863776,517717515,9351715322504763625
+57315415-b0e8-e9da-c86f-53e6c11d5b0d,4007978978,5475444908072097147
+ffb85efd-c717-297d-650a-31c28e468bd4,2092327695,4377532572674525467
+66fc0bde-3483-82a5-2eb4-3e7adae3d50a,1210686575,15671149701345001309
+4bd23ee9-4315-e99e-6c9e-133aba08858d,257796606,14706131503020754481
+ec1cbb66-59e1-96ed-8562-1fab29a47225,3116606038,9207002084656095458
+bc0f4565-f586-6dab-6c14-5378d30c719c,2012641212,10039416104121783467
+b695fd90-f6f6-d13e-5e8f-8a32027de5ef,432614024,3322447933598526606
+7e39dd62-681a-08ed-5982-0d29c4a25b39,4187070409,13571614176947007068
+31e3c578-33d6-fba8-63c6-00976e758454,1344201807,15460358867596674853
+75700987-97cf-b561-e948-105a97bee4fd,1039102224,17678753154846539131
+712ae106-8b96-3982-c41b-4c7bdc929853,954118595,204585241926576735
+1b573798-d5d9-faf3-2abc-408bad78eb97,497363938,5477839040200990528
+83fca961-bee2-a868-ce90-e2baef921ba7,1488986792,4324478887693363376
+7a29b3e6-9342-bdef-0636-3c8bdd15cdd0,1282425994,16128426298840346187
+f26fb502-f5dc-8239-0da7-2272d666c102,2516654745,17746854942066543127
+f886d195-91c9-95de-63c8-49b296c4ad82,2201129791,10737428801579329805
+5cb3d39c-ecbc-9ef0-2ada-92df24d63dc3,1872305686,10812733802092322964
+61bbec19-217e-d8f0-ca01-56f5b536e64f,1150154788,3512996125246806508
+86430f15-232c-6db5-bdd3-79c436eb4938,2104224422,1222758262874776622
+a99e0a65-6bed-9fab-105c-28e235a0c2d0,2094976271,4345742439372534364
+b0a58b55-b53e-84e4-6070-ad440aca74a2,1555118639,105339634444417184
+aa424475-d8b7-1222-db79-92c676cf087d,2901555578,13244583334239849715
+e0d1afa9-9920-34cb-6bf8-d630780403b0,49178498,1820927358834918228
+316e9a9a-7365-2e48-4b29-8657ca425e32,2941567178,13735479111024214811
+4fd03c77-5c66-4237-66d6-c4415c234b7a,3843240684,5561932424473412294
+12488d25-d108-f4da-c9b4-4d68138139c5,4130334737,16962716810125073261
+d72c65b7-84d1-567c-f2e1-b1e905df9412,2374998422,17310326183882420001
+fe1d67e4-f815-83af-4fad-3995f6534c1a,2451055631,17181685848579860743
+838908e0-6c98-728c-1bf7-799b90d5eca7,4106383749,17062656973483603757
+fb11437d-5fb3-a6e5-efab-91931b5a87b9,1104954978,9555240470428582852
+24abb85b-8cc6-54e2-d1ef-fdd6e6acd531,3207580805,10302557677819774870
+d59d5daa-2cc7-3693-c447-986b15227c64,1165083380,11339426989086027288
+ca334b2a-ae19-f150-4572-7d7dbf66d51d,633426872,17419855987710098305
+a666a917-66b2-2fe7-1728-71f37d76f4cb,1251418475,8337609497734335211
+845dc85e-f91f-6e4d-67ea-96faf8ee38fa,2305144724,7820346642316578280
+3572c4dd-1bbf-bd0f-ffd4-6b565e4fdc6c,2165086955,8002387983310408648
+af8a0efa-36d0-014e-59f2-ee1b077aa33d,3736497719,11559985807254959249
+41f4c6fc-79c7-f82e-96d6-88d9e5807b4f,227636124,1106346893184374121
+67dda5e8-6917-418a-19ab-e976a07205cb,3221027820,294501577773338698
+71ef9c0d-5fee-9510-4fc8-79b30b2f9cba,2138054341,15996323030990588331
+22d327b1-05c2-5a80-a626-9fe19b6c898e,1545775348,15335877122745038894
+d411555d-6280-25f6-6227-96ae5df266d0,1652678336,10531814208113863783
+d0b9243c-8d8e-fa0b-03cb-4bb77c70ba27,2918916139,14268755692883357798
+e8019b59-a58b-ade6-769f-d99827f4f676,4229727673,11030024260092133821
+43100d13-fd80-d3db-a177-0b374f349e6b,1428289545,1593886748224856237
+8853b8f1-4bff-1a35-a6f7-d8d8c996ab32,1540943143,12933099856771191124
+d74b8630-b694-9448-2088-12497795841a,3142293065,2435697896905954894
+eb3c871d-ea44-0652-6dba-36224b80ba0c,3575272688,12919909743624699853
+95684127-fc02-f74f-c8d0-c20e8d2f2222,607699304,11370841568897077827
+d4386547-fd9b-768f-234e-0228c6ca52fc,1688516119,15335823163003405497
+7c92534f-75b2-66f1-1a23-838da1e23ddd,4065832559,1000607304864109205
+55e076d5-1cf3-2c7f-41dc-4d52c42431ee,511472185,17043614683717724548
+5d124713-731f-216c-a0b1-fadf85f90562,3225498075,16474838520563674861
+4ac686c3-881f-3e64-0655-982b67dbd7b0,2410887997,6302966983833492457
+8eb972d5-fd23-c22c-08c9-acb0bee0349e,3430866975,13661098598196301595
+ce18511b-174f-e55e-e75e-a92b6ea7af42,1016261733,3949257832025353790
+cc2a903c-935d-f4e4-368d-afd994d5c727,3446006882,14022585295502327087
+0c7743ee-12b5-58f0-6a9d-87b56ce904b9,3491976051,5065446240324945611
+e2d7fa33-7b36-49bf-df1a-f491f752e8bd,3516695780,14762476277763495715
+e59bdde9-ccdf-dbdf-d860-4a8064ca4be8,1014224005,13178386339333357516
+f02d6c3f-891e-79d4-48ea-49d5da4e1a13,924905587,16382730798571479310
+0fe1e7d5-904f-add7-b415-d40ca67b1e20,114808319,10143044306798627712
+450319d0-e87b-babd-f061-f12a78d2ec1a,367723708,15021154114151705605
+4bfbd603-27fe-f80e-fc29-24dabfd7e21e,3643092909,14449649180465316365
+5bb75496-5ddf-ad65-4c51-0dfc9dac56e9,964935728,4168866597421956146
+316e4093-d299-ce7f-167c-d54fd2e63263,1960297854,16359126398874839391
+e8bac470-011e-775f-291c-d2fcd2ac834a,1077240487,10061025860100369136
+ea9ef20c-0942-826f-1f6f-4c574d0b7a2c,1291206626,13308361182443226561
+28314fb5-54f9-1b5d-1434-05e1eb1d3a7a,2754781359,4272582892657067070
+474ac3cd-32cd-330a-3e6c-d8683b05ca23,2749768969,9177125930309717516
+79131818-3bf7-003c-8d87-02353ddfbb92,611568678,18243413765091980274
+f79ca3d8-9436-93d4-ac9a-aa65eb179a0a,4116584075,2161114727713835206
+d2363029-4502-eb48-f162-2f6960585469,3991147633,2556897555105782299
+bc28aa75-2381-08a1-1d3a-e4cf9935a0f9,749112003,158107570698332031
+d60bf2bc-a9af-e0cd-8413-502f05f96cab,281872905,3638683883542158248
+b68eda59-a3e5-9caf-bdd9-c7aab2187b96,386708092,18145925593208507692
+aa92a266-2347-c9bf-7f09-75f4b843fdf8,2501794185,1704029747510832228
+7e70d173-7d25-2358-bfa4-2dcbac254218,822178074,6509785843623307654
+fd0856e4-cd09-d93e-502f-9ab5c486c457,1658385685,4895944764020824064
+1a3d5028-8050-150d-a4fb-1f4f75ea3514,2788550258,6069133533702804165
+b5f5aa75-99ba-345e-7f8f-bfa9c71bed70,1675870765,9692923804898715242
+4acc1ab2-d465-c175-4a75-bec94676b91d,1935347976,7342211909009722436
+93cf3290-5e88-efd9-735a-9e53161c4a07,3841631130,7979217376824904052
+9b6ac76d-ca01-51fa-5ae2-5db62da0238c,3057835248,5514124488917994844
+00a88cdb-85c4-4227-4c8d-cfbeb44c3511,1179260802,6090563871612676688
+cf6423ed-8d84-1a68-9264-8c8765210e63,4132532420,14356119043428677024
+67760e77-ee0d-c698-62e1-84cbaa3f8187,1582988345,8558413919847620783
+0cae80c8-43e6-e56c-2535-cfb0effa604b,2780474271,3917599997672526981
+40091472-eb57-bf13-6a25-15c30f27ff8c,538497292,1994010445757516602
+54631cc3-85c9-ff57-6585-085dc7d68e15,2475989369,1468843774800623208
+1bf62428-b5be-2b80-391c-fa5d9193450c,1002619334,13366759663304812841
+412c4847-77ab-409d-9185-545eb2ea88ba,2021955715,5476735270405373343
+de42c1f3-d180-2948-27c9-b6f2b105ff8e,3031287423,16125406908204640584
+cbaad7a3-cd70-46b1-76f2-51202e9defd0,2556847365,9920623965864751804
+6b6e12dd-c62a-f604-a07d-6b6468a7094d,1093806191,894593612286615689
+74ade2d8-18f6-a673-6fcd-3e12ac5f2b5d,3919438326,18109728598667237758
+bf4429cd-85fb-cc4b-2ba1-72a2b6f0d58b,4249873474,15774734719615030372
+b2ae900f-b846-dda2-cb29-d5bd5bcf83a7,2722652105,11779282457199580840
+ce8456c9-01d5-7c81-5fd5-f1462bdf3eb0,1330419010,5319409734780557899
+b1092ba7-7c83-87df-6502-c1a1ed06c0aa,4019506485,2742630337099190528
+23cdb910-09bd-f339-dcb1-7b38e1fe2f8a,2320561423,2652726173619980461
+5197dcbd-643c-cb4f-66fb-9f47e5c88b4c,1746282679,17911142300711513272
+310ddb0c-711e-84e9-bb37-9ac47672c8f9,426535736,8190323199610102635
+1b76aaa9-d734-4fc2-eafa-fa603d03e98c,1482077771,15122182458956116401
+129f0252-b661-5335-bc68-15c1d4c0c302,1288922448,17576582950245606729
+88bc0941-f717-1edd-93c8-2252c9170ee4,1382953626,18341209481471658701
+c226fb46-74ad-4f97-7c49-f9a7563c9302,1124075317,16608876435754113278
+6ac8b3cc-6e5c-b290-b922-ea40756d9958,2358090998,8330580234533991034
+a353ed3a-1cbd-3973-da06-db43b77ce8c5,2498923313,18431343230735064548
+94d44e94-2617-746a-7208-00616a864466,1494682222,14832064413956260789
+f65072e1-6151-91aa-513a-44d174fe0d0d,785842889,15914055776286398309
+5c9794c2-2ad7-1acb-06e9-aa477da1c1b5,574624620,12950857761019347636
+5bb75ece-d799-8c35-d25d-724540063224,1814536557,5821468946031373030
+5735a991-c288-4b5e-cced-759a747f6cac,3161246216,16156474445786042861
+19d4242b-8c29-85a2-8bbc-ae59a9064687,977789679,1985521020026612500
+ccc73682-6b7c-8906-976b-038afb57bfff,949223851,3798161096204251898
+4fcea64e-8f88-9b14-60af-0e440116b74c,4051119538,11178009406469238929
+ba71d540-e2c8-02a3-75cf-7b27e0517550,3510215428,5636246206340599862
+d8348f12-1d88-b2b9-d1b8-66a750da9b2c,157481260,11655874323701591770
+12ec96c3-4104-2946-5b44-4e56f42a1a67,4284780828,3532996860916420380
+c8d93f1d-a54b-98f7-c6ba-4eb49fc72edd,2955893460,9937097621224971792
+a0c9f8c7-fb69-162e-59c3-ac00c099d91a,1112170126,5946191425452776366
+7b1dda58-736c-dc01-46c1-2fb131bd99e7,2261695999,3447034195345868487
+e69276eb-f316-9cc5-edae-77e703560ec9,560695600,6325654383251162058
+11d6a279-c14f-cc12-4e7b-963158a6f898,3006577156,14347854619549191632
+c09b8ad5-3f30-b9f3-94a4-28f6d9ecf923,67733483,11148299408251955473
+56ecf521-cd81-1835-c56a-4a168a37a83a,1056722235,4679535946432980219
+dc1f7ef1-937e-5cdb-0205-25244d5bea71,689887342,4432245575588780429
+2a54130e-78e8-02d2-c8f4-79dc41c5fcbf,2760941730,17370548962652848924
+65adc088-6c1f-b300-d8d8-5b7735bcaf31,989058285,3065169696114791402
+7247b85f-6d5d-0fec-dd46-1391c34d78a7,968409372,6760413314824067123
+32cddf09-bf22-4a55-469a-ccc1078f6c9b,2117539349,9782375181924516682
+b98e8f3a-1eca-3881-3ac3-519e84b340ba,3897982383,8812867131659787868
+129fc941-7d4c-b74a-3c27-9e6290c216bc,4242707070,14989816547766142055
+e125ebbf-460a-9678-fb30-d7b2795a5180,2318917677,2669521351527724573
+3d06b02f-f59d-5ce7-4de3-e076a5eef090,2185858052,12308563730182899590
+03371652-56de-309b-6d59-a456aa2b7ded,471893055,17208493100173075943
+a916fbef-6e2b-9f11-b145-d07ba7727b4f,1972010645,12814992076079916383
+658db6e6-d60f-7d9a-935c-aab962ef9622,86858762,12164462678056081322
+e2f3f0d4-7e8d-8845-8520-77cbf2f1a2b7,3950185095,7000450011292065639
+46cd8642-bdee-618f-9451-141b3a59c8ea,226125977,6388312555711924161
+7865527d-3707-b183-076c-2e1e3c7683ea,131510890,10228206017577035591
+913b6a9a-9298-4849-8247-76e62bdb8682,1821788284,103609828532984653
+3aeaa4cd-0efd-373d-fd16-b572a003ff4d,2204340736,5602917082913975331
+1f706347-73d6-d6b3-8077-aa800e2926b0,3942868385,12694686020988057084
+8f790380-684a-7c39-37e2-4d122639d987,1603823949,7183118902664710592
+8fd56df4-21b4-ccfb-194c-87aec4246a64,1968253354,13688064523993024265
+9503e7b3-cb6c-ff43-c6ee-25493c0fc6a5,994012506,10686877325451409325
+5c0cf0aa-1d61-f811-4a36-847c2b07bb92,3485446051,6315484801609944370
+8414ee88-c493-9ed5-4951-91bfe6a615fa,880613605,9468979521585404982
+73207ed8-9ea7-f86c-c51b-8d6af5c87507,1689773822,15574395009031616492
+247ad9ec-cd8c-47f0-8f54-b37ec73dd742,4126189280,2854495271019719628
+7dffd565-cf21-4043-f4b3-8526a84ca4d5,3872015595,9379150255884811806
+e9bb0569-47f5-ee3e-b43c-0f41e50a00a1,3677128307,3352936476257422464
+10c0cf5b-ac41-c2bb-d781-43b62f72365f,2562178287,9192345591198690
+1eec260c-70dd-6062-4707-34f27aecff6f,797458924,3882841777054259461
+71c35d6f-6daf-444a-7673-487922292039,1949405491,5277729976315126097
+d95dd364-3f4a-d81a-515f-a30a033eb18a,849247066,6873296493766047208
+04250b53-3a4f-308e-22cd-d1a2b3a869a9,2849674300,1898437717724084633
+e4c8ebcd-b170-a016-963f-aa1ce1b69bcb,1618632210,13518868750502590142
+c433a123-f6ee-7681-da56-284947ecb9f8,1191948748,12422571837590987469
+52fccfba-6bad-3f02-afd0-e7e592fae6b8,410516902,4562848433715211644
+ac0cb2f9-559f-7ea0-b4be-19449681b587,2679292318,5465771652925706240
+64e2edf5-3f54-562b-7db9-6ddfda3336a6,3887178969,14361098847442773796
+7ebbf2eb-4459-688c-860c-16f59855c1f1,1516490387,3890010615445782811
+180c30f7-c899-9631-0bba-0d2dbd794285,269331425,16264779526552516711
+691dbcf5-cebd-b7de-f2f9-70b63756082b,1050979235,10988341379179733863
+f22bafed-1e4f-1c43-d5af-e1b83b32bbc8,68596453,5252273854382152478
+21b921d4-14a8-4874-30c1-a67e0a6f91fc,2816314112,10996871634839014496
+c9eabf1f-41bc-639a-b035-affa39768b52,2643550699,5802891553889375037
+44c2e120-f911-ea2b-53d3-09808dca2022,770490480,3457650152873342822
+6d69e35f-4370-faf3-85d0-15371aab914a,522292664,3315205204299841630
+58de8363-e7ec-fc7c-477b-b0ca4c783e63,1616157674,11991262993083996211
+0b2afc2b-69f5-c934-66bf-5cde2a862e89,572259814,16546519592121688630
+7eceadfc-ca67-d3ff-1496-66985134b0fd,3963180352,7870951340466133922
+1924c6ae-6c58-eb9a-d286-9c2ac3d4624c,543416686,14834148773747048445
+455b44c2-1ef4-10ac-af4e-3962cc5e9a89,1565504764,4898855769372268080
+55e0d694-ba0a-e0cc-c6a8-421e0bbf41ad,1850310635,10220118597048590903
+df9ab9d9-b69b-919f-7499-c2d0a9a6964a,3552244596,11418176871663254621
+a19abac6-9543-d0c0-ffae-e58452f16671,235750855,2674739090315338914
+7a33e459-6d40-5e07-64f9-6a96b8d40efb,3438032260,12654824185438003753
+2ca5ada7-78e0-2b76-df47-a49363d02dc9,3470003755,6103910775049931057
+2ecef187-47c2-7f50-b4d6-a2697b64d73f,3899962631,3772412012382818936
+4e52adac-e9a9-7767-8708-be3ffc343267,2534790546,4169083846499392167
+738e2cd0-a36e-f1d5-e492-68aabd08f61f,1538172222,8846237015053353752
+3fd42b05-117f-7763-8314-2b9f75e0f7d3,3588726170,17624794770875935458
+de965870-4cff-d850-e16a-49aabd30d89e,2246913347,14165643144426717426
+2c988fa3-c38d-0021-f095-2b04af8d9394,1840177436,6783706193361667583
+534bda50-b829-3a3f-c19a-321a93d12e3f,1705209237,16256706011160076378
+11334ffd-d0be-f297-00ed-88337e63b5ab,612303842,10019514406235501160
+41e8d43f-165f-31e1-0e7a-724810749bd8,1629213949,4137720338814407990
+90d4498e-ab83-1acc-bae2-7d3e332641e6,1337776788,13191062729088406760
+ac563744-d321-dbe6-ce0c-e233c3af7a49,894536925,11859867453307681270
+047fc574-5e43-fbf5-18c2-5f9ee0c9bf06,1908493056,14035880327456770684
+b504063a-50d2-4060-7c55-2f322cf16ba1,2933901155,1683739582407381410
+3726940b-56e3-90f2-4503-3313375b78ae,3202684184,3657182454643527935
+baf0f531-7891-2763-40a3-9bf45f8768b7,3446204731,9880724796443513886
+561c4788-2b0b-8867-c23e-373966e3879d,1768492014,14913958899628532140
+36cf427a-0c9c-03cc-32d5-3c1aabfe3a21,2911227604,18015314703311443779
+b12e1e8d-98ac-33fa-cfbb-22e84630aeaa,1312275066,637702523118503675
+242b8ff5-3d11-ed72-694c-c4fe9f2246c6,1614851133,7810099245461365389
+20b0a374-a243-2271-2cbd-b868acc19774,3374246557,16461609343063863539
+8df71bd1-16d0-4044-3b85-0014aa66419a,585499839,1713929061722396233
+5f39929f-5fa1-9754-e063-f7b339075d6c,2650133128,17620999415885691444
+a3834fc1-35cf-ad33-0176-8c5a437f3d6a,1461416833,7376319423348352329
+250bc0a8-066e-c04e-aa9b-31b5cd246800,2543964312,17239598091837117701
+f1c63b3a-3666-b996-3dfe-274ccc86fa7c,4207892647,18403880547997871472
+3c84eef7-09a6-2bb0-31c0-86b34e2aa194,3653924577,9954402048750216235
+491dbb67-0322-2d8c-14fb-4695b08c7d29,3617831590,13487096347016834826
+9f9d8ff3-61a5-a8fb-6238-5b8524d1a37f,3942895229,12371567118653636330
+9c63b471-c2ba-4bcb-5e39-f92d3e71b226,4279327197,8605431258764094614
+4a0b87d5-c9c4-72bf-eb6b-4e989f8a31e0,964889476,7273636714319291406
+9442f51b-3798-c134-d340-b37d21e53a47,2495651626,17602822418104393704
+8bfedf51-9b0f-470b-369a-c439c7d49b55,2286613214,4606552212322123982
+dde73113-47db-1cc9-e66b-90b0b00c746d,2458650034,1874937779812675
+03b3e501-69b2-2062-d52d-d20606c0f1e0,2811853035,8031080706686669151
+adae2be4-b859-a830-5239-083d34c452b0,4088770991,6818434665556837346
+fe832df3-cfbf-0a20-9961-b96a3ac0064a,3000280503,12319451849933758196
+f8bbb0d4-8c52-1832-b7e0-36e0b46a61a2,2565432961,9982814279706788513
+3ca72dcf-8b27-4116-7025-821bcd08a33a,3028080444,3201903898543453500
+99586440-5f78-7957-8cd7-8a0bc2cf121c,4187624695,14434635414964098461
+31684b1c-1c21-a96e-2f46-75ead3b4fcc1,2184348137,13343125352428971112
+5c32d87d-1dab-5ee2-5fc6-922f913c426b,1661117873,644095270682959051
+25cb4fd0-ab41-7925-e579-e0c482ee34a8,3295446243,15794506479397061887
+ec982515-4af1-5bd1-daaf-b16875644d83,233858078,2127191848499718901
+49ac776a-8ba4-4554-6c50-871315b6b47f,728839789,12799547801478340885
+b1f4c270-c489-2523-9181-33ffc4efd4c3,2283090433,3710538688878161512
+29d1b8ae-b433-7406-079a-66176c7a26a9,1855474488,17864776733295820289
+dd119d64-0cf9-6912-d03f-1c7235992635,1973657804,4183445961914355841
+da6c7ce9-c3ab-d442-5b61-bc855d7e07e6,3116227166,9849092653312802196
+25ec1c87-583e-9347-80ce-838f2c6d3fef,1220400253,18155693843640957743
+9bf888f2-0122-270e-ba8a-c53e73af2008,1344892588,3554931459722863838
+e027b157-2430-87b5-9948-b0b8a58e2c53,4015459067,18260711585637490714
+65c3415d-adf6-4443-8d66-bc2682a837b2,3891538992,673667610261121883
+73ab8cd9-5bfe-3bf1-b6e1-8e5d8d28356f,4136092890,14036904647856371728
+780b0f4a-4c36-f412-9df5-4ebca9ded40a,4207004483,16707632769978925216
+44534eb6-f405-9312-568b-40d3c553d894,4121708486,18184154846303284216
+7c3c8869-a023-4b63-6882-d5377c71eb64,4223068627,14195834802311322010
+25085ae9-f451-678d-7962-e87535ce60e5,1802174789,8346961869207496218
+5495cd1c-7229-746e-bd2a-1f51e0b05df1,3866532569,16653137608398082800
+d70e752e-8a97-800e-d458-e2effa3646ac,2429290516,7759536709047404062
+6a3f87cd-914a-dee3-a9ed-70a5ed7ed50a,3328252164,14042194023485504404
+5b0ea831-cb85-0d3a-e583-eaebaf9750f8,3755525201,6478625683960287624
+96da547a-171c-1ab2-4a05-8810a1791d10,3880466178,6579515702117818144
+1a7ab1ac-c640-1834-4c51-cab62211cd5f,3377523661,8678338583034951571
+9b5bd097-422c-dd1e-d789-375709395aaf,4104601678,13051472867173695373
+8f761291-4fc0-80bf-9cbf-68a4f2d62274,2016554236,6870013847673469668
+2bdb33d2-bf57-ffb2-04e2-713100656f88,4002592417,6728846890864708129
+0f97f545-e35b-bf28-99ea-fe134534e01d,1599680257,443622687939904963
+863d3523-ab0b-1fb4-34a5-d77dadea2dbd,1662563591,15064957786859373330
+818963d3-586b-2eb1-528c-0cc30dcfc8fa,3686662885,10947843502901630509
+acd3d272-26fc-6d97-7c6b-b3e2c810e9ba,3905609847,12759215311445297194
+ce299952-5eb4-3b87-6b84-0548276c25b3,680233273,1527014999836331331
+0600a4b4-62fc-e7d5-0498-bc4ec588af35,2295052893,1053308592002783927
+ba494a54-79e5-960e-eaa0-1c060b6d9fb7,1009350872,3373599212555154302
+911e6388-bf37-8cb4-be67-d1bade8024c7,934619222,16850427269847404032
+2ce59c9b-c662-0993-2131-324612573d31,3250377984,18425500910451240420
+a7e0e129-afd9-c591-bdc4-f8f60c9ecfd2,1837722984,7673016380778365650
+563703fa-3ae4-f49d-9fdd-1cc5a2d6d055,1200671705,12249086893332828953
+89bc1169-61ac-b163-f258-b33adac696e3,2272463255,10408895956819318645
+ad3ffe04-9b99-de6f-6761-5a4d4aeac097,4243186008,7718734062742047697
+a1018dc1-3870-2ea7-19fd-e942b300829c,4097802100,7212465449948290145
+03edd322-f58b-1b00-ed39-2a1cff776037,3599093062,174885761731208404
+d812f1a4-bfd7-5dff-d643-56521e6a1602,2059836007,17019453759324872279
+74a02a82-148c-960f-e9f3-441f3a50f295,431210806,12808022068815163628
+a1d8771d-f1b2-40c6-2042-ab0c09b96108,1806010067,16054681831587626371
+d52d7fb6-2e6b-e976-1447-1b48fafdb3fc,2956471559,43767700041877691
+bddcaa41-0fbd-9d61-3fad-b42df03d119c,3999181260,12128148089747369585
+f54f9a1f-475e-c98e-26c0-2d03d6ee962b,2768095554,12005963874494155011
+89acb1e6-7e2d-0cab-bead-1cc1ec086992,3629322368,1490587456538463394
+1b9180bc-a1ea-bb0c-8bd9-39c1c02caca3,2081170105,14633465998678623336
+ae381e98-af3d-90c9-7936-1d8b4e619a3b,2030327097,12868560401757337967
+c1f80ef9-70fe-4dd9-a326-8ac51d44de41,3627081251,10090680837213938992
+ecab2858-3201-4e08-db2c-42a3e9cfc671,2576715634,7134697299260271003
+c15ccd2a-6649-502b-b475-e70424b5c07d,3811606403,14472612352212554482
+4b78eea5-f896-a1fe-5e76-9c3d506e6fa4,1615928503,13204615983528568519
+c4dfd792-3bda-aeea-02e1-58f4cc1729fe,1884174675,10263290828082005768
+466e50cf-e9b4-4bc0-df34-ce5a4eb5cd43,2499327654,840575805844993783
+ac7a3b0b-12e8-2174-5f0e-d2cedcde85cc,737419298,16337445698479606614
+835b2401-d2ea-5222-1444-13dfda4619aa,3584432505,15080346559377519342
+45491112-05b3-407e-1790-6e832357710f,2017255081,14821900628507094815
+95f11b71-8c3e-3dfe-1b91-f6b2083986fe,962308461,13527541820333415910
+662cb94f-caa7-6419-ce5e-54a3e2d21075,407104819,683439833160737323
+9ccd5c3b-6633-87c9-ae80-f1c9c228786f,4161038741,8226127540395528661
+b0629dc8-e4f1-6b6d-e728-8f1531d781b0,3990158761,3085039364420401686
+baaccd94-db18-c2a3-6fa6-32e7bcd2b4f9,1414270828,12104885647238222904
+474d7ae7-ef50-7403-5a10-e142f10928b3,2326560870,14209665342595870366
+e3f09ea2-02fb-407e-12fb-07eb215f192e,496740118,11534995417632201565
+74a4a4d2-353f-00c9-67bf-ced8532d280d,2402914552,16376148035049342738
+7ebecd37-e7a1-7522-aa14-a30db1e8067a,2773374789,4885902854618568613
+5abee266-ad58-df64-d743-71102b2e231f,4238839315,9085741745911571925
+7ca09499-4cb3-8631-8cdc-920eaf340c91,3730012740,8258672179872720532
+68146c67-75f3-8ace-0475-d35af1f98a90,3841868273,586761642372014622
+20efd38b-b78a-ff9b-34e2-6cdaa537937b,1177413094,2845704537982991307
+311e7e2b-772e-fea5-8332-dedb2c36b1da,1367048601,11170872801023457836
+a8a371b3-0ee5-7ada-724c-5aee2aa4dba4,963110947,1194506696945246983
+23affbbe-8326-6d06-bd94-17a08b6f1cbc,1002579254,933165055448057539
+956b91a8-c866-d79e-5109-fac156df9169,1938439176,749368713319463701
+140cecaf-aa4e-d609-59b5-d147555d7300,1785930184,3005543110388838191
+1462b9ed-5f54-2a7e-6176-8e2293eab0aa,2666754971,11187921708098972451
+ae07e1c9-760f-0d7b-e821-0ffd8318d8f6,3719052895,1804522832328491762
+111a276a-3240-6b9b-cd91-a79ab2c04f7a,95984005,10150428795747965650
+f372854f-bcab-7676-8beb-27c8843ce5b2,707120469,12272519018735089312
+39c8b9db-ae91-e95f-fa35-7c2e94e23221,1863554050,2160198838108295365
+997e8356-f78b-0d55-ed24-d9f556315b49,1795285727,5146046073189950559
+9e23776f-840e-ab71-27da-dd3b5c0eb88b,2845165680,7770279356408690127
+85426d1f-044d-2154-2915-e17cadfdb75a,3013145797,5318635712715091705
+c9874d6d-0ac5-2616-ed5c-691cbf4aaeba,820768085,12187350388196763970
+1645ce44-b1fe-50d3-6ced-5d6bb8170e7b,2603751995,1795130198207694926
+f34ef228-707f-df0a-008b-100f52b85d02,2963802658,887744262084779761
+e3fd59b5-9d0f-0bb1-dee9-c6ebfb1d52d1,2467211770,2213050513494987598
+36d94b31-d1e6-f1d1-b754-c39a835a3430,2774232437,10534625991326436928
+50a24d6e-4bb8-846f-18d4-9e5716287255,2225354189,1223502977903021894
+96c5625b-ea1a-7059-b45f-284faffe7c34,4130774313,7920088124714497497
+c46424b1-41aa-19b3-b368-bd2df3065f52,2289629339,10917338792184406671
+397883b5-099b-b828-f53f-7b49d4170d49,2436686370,15739116530737578906
+1468c6f3-ae68-4cdd-ab64-3b7da1ec4ca0,506146254,12997103679753911205
+345c7f35-a764-0431-dbe5-54971b0ad35a,2453746044,364200697966097417
+3606c368-b367-9d2d-9d49-6cc710158ae6,806145427,7404476967583122516
+8f547756-cb14-9699-a8d4-201649ded526,233482212,15938038780875956931
+5f7a040f-03ce-4375-7feb-993145dd5f47,3930305174,8899728091095792206
+ec98b0b3-782f-8981-ad77-fdc0f867c568,1872304289,134085165352947553
+38d15358-470e-9096-b337-81edb8477a99,1359517351,3969181413841231776
+521aa635-c75e-ee95-d104-b145703f8c06,3619993150,10484911539965359646
+7f6cb188-52f7-6724-e70a-5a2294b23af4,2648754084,4041527072429692410
+cc73be86-2efb-f63e-4c83-b57b85e1979f,1837407637,17387630231673147975
+f5673dd1-bc6f-52d1-094e-71ed21296085,257674950,2866053629984575566
+9999e9f2-04ee-3f7c-a9ad-beccb0f1cb9b,2580476972,12660330117290941228
+42ac2750-9c4e-514f-b5be-13cc2b892305,4287122003,8404595215351211636
+4d04b8b0-8c01-f2e9-9dbb-86b09e475e03,709427324,2598236808215241585
+75462501-de47-fa79-ea3a-9382a1956dde,1433926663,10659566511381919539
+bfd22588-b7ea-2d72-995d-5090e58e0ae0,792366490,3271988516657830096
+856be825-fcde-4d25-89ea-759ce464b2fb,2811270559,1539581682586592520
+59b1cf23-6daf-1161-9a95-b2a577a4d307,2510695572,6288329350928086848
+82d04739-976c-ae75-6edc-37c2b603bfaf,1662558431,702040449072989212
+2043cab4-91d4-c784-83cb-789cb9e8a7e5,2292174256,1940861250559805838
+979239bc-7c9f-4d49-8b77-949c69eee487,2483921880,13505832688630898310
+f96a3467-0883-1a06-1b57-f48131881043,848354948,552632665490704520
+49b5af1c-bc16-d76d-12c0-19b65295de91,1242579691,14802621693971420430
+b0e5e0d5-53d8-09ac-fee4-429d02fbe622,2310072891,7335100614851146003
+07481434-4f6c-6bdc-742f-2dddb607e2ef,1721008931,2399633555505767493
+e3467876-f135-989c-8a05-e7aeaf4fcf18,3592442265,6965417105436427058
+3a1eede1-ba62-cd1d-fd73-5a54cef51f86,366931017,9102738192947205392
+a0dc7994-a927-bd54-8203-2aa57377908a,2039163204,18120405780108915428
+ff87926e-979f-b647-af0c-417555fc5560,1571776217,2155353978703619191
+88afdc88-454f-364d-924c-eaa2ed0b590a,3610698657,3990826716575867592
+c6e5ddb2-fe3d-e692-6b99-d628b4de6c2a,3281626529,13605164673085486312
+5654012a-3db0-5b96-847e-452c37d55edb,2297006883,11743500887087187048
+98ddb38e-5ac4-2982-7c4f-93c7b7917641,2655251639,13398440788987654211
+fd1c05c9-625a-b83d-01e4-e227743572af,1424689744,16456383750560945530
+d309bcef-168e-1a6b-841a-31c013780bdf,2978109521,17103244189521738521
+430110b3-100e-a127-a678-0bb340309cec,4094987571,1052551231818225773
+2037644c-4be7-19e0-f3e7-17374e24e8e3,1352775994,4875561821979167140
+cdc2a0c8-51d4-c8df-6d5f-562bf79f3748,1932994383,106792901657743368
+b7d90644-50d8-da06-5b80-1cb19ca50a5b,641333634,7993760121143896617
+b4bee97b-4065-eab0-d5c9-1b55df28a757,2492893087,9272470197187840577
+5668095d-4190-cbf0-6283-a145eae3cf85,2518155085,16958352518519852601
+5eabc88e-a151-5772-9169-4ef2ba71a153,670327834,2520145033436412364
+2dca2000-d399-1772-1876-c6759e867bcb,2023896941,14194402029724851873
+7e011857-c5d4-247a-d4e4-7d3d677ef2c1,701267705,7168975547160104609
+c1718189-3884-8d51-bee9-01561123e4af,3639201072,15585488843249425719
+54277afa-ba3b-cad6-46b7-6333f2499a43,2091658556,6043339154500683586
+750a0a3e-d670-f644-4967-e1c659d1f877,2732788399,14378699359791438175
+f605dbc4-ceed-b663-5f08-7020344c4b80,3262124203,1204726341270846855
+2da03096-2da9-343c-b2f3-2e4dcf3b6804,1474718731,5179487007766019821
+bca9c7e5-5dd1-8cec-f625-66cc56cef820,3030002349,14872691819282942258
+08e752e3-8f82-5ec0-5af6-484c0d28b138,1072320621,4406543131474780686
+05517c11-4f4f-c6b9-d672-b00bf168f388,1394888987,12114448930659067093
+b1ddc555-4198-634e-c5fb-1e951c5a4544,3102932791,3484249944965431106
+ba8bb2b5-5efd-bfc5-e500-759cbf33a711,3382803653,7680622678585121902
+c9e83403-3efa-e087-b685-d47bacb1bc1b,3323895350,12090345414466969022
+22e798de-597a-942b-132d-07fbefc73131,416338781,4697370132689324293
+0485cebc-5f25-10cb-0cd9-a0326b8367f1,1021497952,5620800835477808040
+43584d8c-131f-26e3-7684-d5dde170026c,2732503262,6396652991443548271
+c8f03ed4-8332-db12-dc43-7cf94f3ed4fa,2649067539,5553785985252518362
+1c037872-130f-0752-83e9-97413ac1149f,1500191027,2076614873494960787
+9ba26991-9f25-8bea-2d11-a625b6cc69bf,1521670390,4968597757946327076
+c9b3f1c6-bf25-8235-d8ca-dd3673284c01,1101500392,3358310928624229367
+5a4e20ba-6607-b031-5a0a-e2429869bb06,1132680396,11265172103620800671
+666c90d4-8ae0-7112-9a7e-9d3bb21f6288,2223855147,8109430210652716652
+aa01d615-3f8d-993c-97dc-1cfd7bbb9bd1,2451025118,17742325735189471722
+480409b2-e894-9083-d3b8-f578647c3864,4031193959,14512848513989167042
+07336530-8527-b103-02a0-5a738f3633c8,1214457525,17672153891864633497
+0e0db7a6-f6d7-d2db-68a1-207fca9965c1,4035296767,2256449014971940660
+dff04e36-4121-a015-38ce-5103fda065e3,4054557380,1722045081265635850
+13d6f104-c9be-17c3-a26c-ca126c3971b5,1266877537,1148593495843427341
+45538d57-3f46-a919-ef00-d71c24223851,1757274063,18218636228380394666
+bed304f0-19f1-aced-6227-2bf176aedee3,3600683976,416173318277282820
+c818ead8-5b60-b892-f17e-5b04aac9507b,20774756,12080266908515998685
+274db6c0-f077-a03b-3116-e12f04d03208,2174754227,5061010693930150912
+f8e36a00-3c89-c933-e7b4-ef6345fe97a2,1956328616,4764762319903735101
+d3ed8e4f-522e-6fa2-c0b7-40d43fbfbc70,2042525319,7447704430469295937
+0b34c4a6-59b9-2d5d-617c-364cacc0ee34,1175317659,11299710259212682772
+3271724e-62ca-1cdb-8d1a-b3cd55ef27bd,1891090181,6942643964272373804
+07f54406-b472-102a-8291-5f7cdc23b7ec,604139394,11245209167842079863
+282aab76-66da-294a-a024-1b20d0ddc717,1327676438,5382803283311404576
+5013dd8d-fa03-d612-ce1b-95e8494e982f,1068970582,17306204758720535097
+0ad9cdb6-0ecf-1bb2-38db-75448697accb,1462075629,10256279834164054152
+5841f9a1-b4ed-a98e-053c-4fb1b8494eb3,3759586839,4129515276867480291
+6a5a8ffb-5da3-584f-0880-063027a19f7a,3530802607,5087017128365199485
+1e955091-e1fb-1fb5-db49-b68fd1d87dde,3125752285,16328659431786913710
+2a49b9e9-c5d8-4856-7fbe-b07c3989cc51,1340003113,11560432543259886498
+c5d5cfde-ff64-fce5-3dbc-cfdb72f52cbe,3365694652,6295563068599101713
+c6c7df31-97c4-4c14-71e3-9a4c8f2720f3,2727488097,10850054420280824641
+01d36a46-5e41-9f7d-cd3a-5857fc96597d,50929153,832122674440439295
+51bff3c1-c382-a341-2098-b9fed985e111,1265879676,13821402480732833399
+c7cea251-433a-3b59-01e2-8fbfe10219b3,4084258776,1515470213326390611
+18800e34-1f35-fcc7-de6d-2a78b566576f,328806413,10957510057561098450
+01308096-96de-4d15-5733-96370deb7336,1565936250,18391252898992480504
+01924667-f49c-c32a-406e-48d4a54d6587,1326585668,6335125290298572334
+6c05bda0-199e-9128-a84a-7e36b1428850,4066171884,14341549480713643134
+8b90b2b4-fba1-2496-5be9-265e553df002,485728820,17030637476913437052
+67b1b034-80ee-0467-beaf-f8a1c5134b1f,3939813227,12381924503671289106
+1114bfdd-912b-b52f-b728-edfc387adfc0,2782615301,4602538564380017172
+47111458-c52a-9910-0ebe-d91d12a01728,379665201,11015710134593509125
+9234a4ee-eeec-e328-f675-5454a336603b,3727479490,11358059255127911450
+27d019b3-e261-7980-2b2c-18ef6547acda,192952774,249180714488959438
+35a38e2c-2e89-28a3-9530-496d63c6e261,4078133693,16481311314984010242
+cd913b42-2a54-590b-608e-646b207b8440,3011898412,13200752394408562575
+d514fcfa-1465-7b73-4de1-40b541b8533e,1373454923,14221596415942856013
+7f5db134-51d3-e0e5-db49-6298a651037f,4025841947,16587707657363808290
+68d86ca7-3a2e-bfda-0bd0-75629089cda4,326844952,11351030658535504959
+1f1a79a0-544c-dfa3-36ae-f39b79a9ac93,689785244,11004941435361866091
+ddc6d4db-3b19-4fa9-f070-19a506232e5e,1261852741,8689507828574100797
+06cbface-d55e-0fa4-1b10-3d05746ffd71,3372853173,5858124741610315321
+1958af98-6e31-938c-58b9-2779aab9c69d,517461463,3054626543749117515
+80fad106-59da-8101-c903-90a5a5fe775d,1808152783,16829876685949667254
+525e1d6a-fadb-8fe2-7a63-ebb44489a120,3679700856,8915608076424102637
+b5eddf2d-4dc7-9979-5125-a9470b31ad7b,3599568039,11707203371187711265
+575c5176-18dc-9663-a91d-cc1252fd37c4,1955134233,8373591162942661434
+e1f88fba-5480-8755-1285-d78f3dd0b046,638341719,4190113953392670694
+974d7d1f-9b7a-f968-fa3c-11df2053f748,1214049617,10843794480710173538
+76791f7d-72eb-1c5b-b86f-544c66c18a24,1410016568,12276394882734023576
+bdc445c1-cd38-5d4c-60d4-7c6c372e0351,3163664485,9194362902990362066
+6c20090c-077f-eb95-02a4-8f264d2afa57,662122407,11070326174875755646
+06acf773-a29a-99a0-f079-46cee469a067,781739321,11807738502562125938
+ed42d894-c794-d414-dfc8-4dac5d4266ae,1890370427,2536700766400401508
+efb5bcf8-6781-5337-f1d2-3c5ee5b35497,2621485750,3109825030730022079
+49b88480-0121-5907-91b9-1b4ae513d662,3027028273,13149288705333407786
+d0e1d8ce-0871-86b1-00b8-5c909620dca1,3041529933,9053542293590143779
+1774d5f1-495c-03d9-64cb-2de39cb739ab,1174162693,2661802386884461055
+c319842e-634f-09ef-2a09-ba54af846206,91526839,17079879143813883619
+817bbbce-4d75-2942-5a74-63a89ec21d73,447141169,6261109781190746163
+46984b57-1f0a-a273-273c-272cbece05cf,3037198712,9164154550998954347
+48932223-67b6-1f01-cc8b-ab9455e0d6d4,2725077257,15834229131655272281
+3cdbb031-20df-1305-ccc9-83e6e7da9d5a,1448026009,10644450742169041894
+996adeea-d4d5-fdb0-fc09-3935fd60355d,2859001503,2412531916033850141
+0c15a043-02ca-4c0e-537f-63c12dbcacbf,2537470866,2655774696173323956
+b1195833-269f-4841-8b41-184abe5eee19,315494003,1046788662630816748
+d57e6875-5583-3c10-9049-81cd4c6a118d,1487208098,3322924503949923337
+21da0301-793c-04e0-7062-7881e1c5c6d9,2578171320,6268103298698636544
+3bbedc48-d36d-add1-a164-4e97ee724322,447359647,13883838500863642277
+87ccc224-d1a3-8adf-1d96-facd2089516e,673853690,9672724682264366676
+3f5af749-904b-4434-23d3-d695af4512a4,2868799599,11754622653082513879
+33cec662-86a0-bed9-1a90-1ebe0e8edf8f,1125891794,16352250265331966682
+a7d2d6a5-0007-b637-ed4c-250453a5f6aa,4141748797,15225206746064358072
+945d95eb-9e0a-7cc6-4156-fb258779fd12,2430232645,190999521719813627
+2c4077de-0ca3-05fc-dc71-1c2bfaa32809,2866555977,16541490207417751030
+ba07cd27-866c-2fde-5129-1c69c31b2a0d,2527531852,10924667671104603474
+c4b30a90-36c3-97dd-d1f6-d0a0ec83fb72,51280712,14225271464927006070
+c288b5b6-f346-8756-6a24-0e3ad27b27f6,4030725845,7804745762944123422
+061a7d98-c62b-fcce-08eb-377a47457635,1454682553,5343353628097739770
+61e940dd-845a-e2dd-3403-7e669ce24470,3611455937,12145652683857609825
+278c7102-2dd4-31a9-64cd-3e13e2946c89,3073301644,7561057611663493742
+7c66b633-427a-ce2e-05fc-95787da277eb,3065573225,1862574832621645446
+5923aab3-24e1-96c9-f468-c10bbfee52e8,1330533884,14800360172096536287
+171a4784-5072-57ee-cb7f-d982fdb9e11b,863806649,11554536567865682309
+cab7b77d-c1fd-483f-4b3f-01486fafc1d8,2377118093,14467222079076001321
+5b66acaf-23ec-58e5-e191-d5cf80ab2f4b,975991682,13013772519688652292
+409ae3fc-32dc-1e83-c2d6-6c8cf50626c6,1843088232,14693114996740280083
+e5b39c7a-2d10-6cc1-a7ac-ee6fe5286c10,1198039838,352847250137482340
+aa2e26c7-3bd2-d9a4-5574-64fdf7ca9aa9,3892461603,3385068515357887749
+dc87516c-5dad-8960-bc58-010bc2f806d8,3211123421,7366524562879442030
+79106414-1157-99b2-7832-4d2e3c3c7403,842148570,5702503132142380402
+371b603a-5e9d-387b-5af1-9f41d88c1fce,3360266770,3307220529314250567
+3bc6ffd0-110d-1f16-aaa3-4d81a20dfc64,1086688560,1738706628462658485
+9e729270-228e-05aa-1eca-3c1cff4610ac,187038557,13730033029676791037
+00bb2708-cb6e-fa8c-108a-60e1855e0b95,3243075910,12084448223090730632
+deb2b0c3-96ec-f805-689e-7780afc85672,3743453459,14098768939122571519
+f859849a-6579-5d0f-d216-b9daff8b8902,3165017400,12166378494538519493
+dcf86cd2-e605-1d35-5870-883d52f7d087,3782165611,6055011951425240601
+a4da350f-9eba-db86-8a7a-aa57aec13674,28333361,10839491081715852305
+2c7d143c-12eb-3612-31e3-4d805a290050,807011129,4907514026246862398
+2de021ba-12bd-5381-8c70-bb299834fd45,634421615,7425706616705374282
+40b30d7d-adf6-5daa-b614-6553a5aaa52d,2674955474,10685232694135680822
+4318ce1c-408e-c8d3-eda4-2463a39b5280,3923696610,905224774003555301
+2b177a32-072b-69c2-c86f-f1b0be092740,2538918931,756894133408585955
+f819a6e0-ed6a-c077-e8ab-13e6595e8ef8,2848961402,10084154180349775115
+87d2db54-aed9-a57f-855a-26987167c490,2820649588,9200188549141828677
+246179a7-0264-6d64-d420-fd38469207c9,2451047617,953909422866651814
+e03a857d-9e67-e2d4-90e5-ca516569e70c,3896458147,13845091317043452899
+ded400b6-92eb-ba0f-994f-fb2560cde572,2267758059,12190315792045013680
+4e8513d1-47ca-70f1-7c0f-777ac7eac910,1560750287,1968963057000613843
+85fc2121-cde0-170b-a9ae-52a06cc021d9,2790398103,14504537023859662134
+95464030-1333-1a02-d111-349f6c8a05c3,3282574151,6887893905706526420
+65657805-1920-c7ce-805e-943181f89503,1496055944,4072103011277227205
+644e03e9-40f9-d045-2b5c-2aba911efa5d,2022494213,6819202564817623772
+cf98ecc8-cce5-04a6-2af3-abf9c9d6902c,1470557443,12362298823170966764
+17174f68-a17d-554f-b388-0c79632066b6,2652887620,4409009569470321588
+8245fbe3-b980-0980-cd3c-642d3a7ed2a5,358286700,1955667993221365422
+6098c310-1e41-f3b9-c156-7fb736e024eb,2407118687,77337089530308388
+2444ddbc-dd65-15e8-decb-4951cf5de855,2876669226,9703831590668522855
+caa96229-8053-afaf-c712-fb12bea2cf1f,836538180,7244236827889286361
+3126075f-2fe3-77fb-9dbb-4009efd0a988,2727839384,7206316137374683716
+0752edb1-ceb9-8dab-8705-869fdb659c89,2543905593,10258158367852817806
+7eabfc10-910d-b00e-c4bf-8e3b76e3d155,418869379,5904683743856482495
+c3fe6a2d-5843-e6cc-92f2-21b8654c33cd,3841236682,9454800052493625390
+b3d63a9d-ae7c-a414-2143-f95d91e7aba3,1683946708,9481806582661472207
+42eabd83-fa3a-af5d-ed2a-60819c7a0a5c,4207116943,12077935810953346726
+22a422a0-e6f8-d856-c11d-ef09f9fa515a,1793849265,8717808991432287962
+40252d20-7faf-76e6-5c1d-784f164bb3ca,2621054352,10984402887687182174
+e9a9e4af-cce8-5caa-f5eb-0f47a1380ab3,405776610,17618014557667624534
+ce026d2b-c937-7e66-ef6b-9af8a5e0e0c6,3373132474,8187337408421536846
+91ec65a5-f557-2b20-7a75-558dffa6f357,3241522658,5223268047523378492
+69115768-052d-d412-57ab-38e0d6f0a30b,3108573496,14343518459668516195
+b811e855-05ee-49b1-5063-f16295f9d69d,2153787230,13319153961769641336
+a5eed73d-a911-d68a-bef1-ae389c350cbb,1395448257,8215040953781323263
+ee6f384d-47e2-7d36-b4f7-958c463b8471,1455105010,13623446731460800685
+0890c0c2-92e5-d6f3-51d1-aaaa99d09abb,3349961260,6255984003162124619
+fc9b2fb9-e51e-73a2-8aa4-b979bfee910b,595272961,18372767053808806062
+698abccc-2414-4128-12ff-c946379b4d7d,2599145317,12187889692616004895
+05943aea-549b-042f-238e-2863e3f67300,1404757567,11555325035921880165
+eeb53ad5-23cc-d8e9-1198-8da9c905f243,1394655232,4603404672712970922
+c6784a48-2f7c-ccfa-9965-c8d647b84fd7,848779968,17123120252580395987
+e0610628-5de1-3726-48e0-69b9483eacea,3122341807,2179131837901349980
+c41efa6f-cdd7-f67c-9421-84c1311f6d0a,3948083836,12118981740695671400
+9ac54b69-3f43-2506-82c4-fe9c31541732,2824958195,2855267776455771936
+5baf3c9c-34a0-41ca-30e4-009bf2501fda,3141374018,15943441749044292890
+9e28b235-a8f5-b7e5-45d4-1b6a77f616b2,778203118,15762744945258966057
+5cc8e71e-9d80-ea5d-c0f6-4650cb935443,3218686328,10561707760237277030
+f44eb6a7-056a-d24d-c15e-af4e9c4ef34a,3233562575,2842458837710599985
+5868a6ed-b970-7e2e-dc22-10b30e4db06a,3255909130,16400175803812800419
+a1acd5eb-b849-2734-bea2-f83bf8edfe77,3899455772,6975853464188737358
+6070ab28-26ec-8b7e-91de-dc4e6a5cda76,2041754330,18043256676186362062
+6904d9c2-4b6f-f087-7349-c65ab9eadc7c,1269153561,5044911761153892255
+1f417916-1863-080d-9cbf-de0382caead0,1559737608,13148522751814770203
+436fe41c-9c08-6865-8c2d-d343819022e6,512178979,11010020347993492877
+75ab0c94-1406-a5f2-a344-e3d50d56b7f5,2348781460,11573880736208535203
+17587539-ce11-bda4-9dfe-3cb9827a1210,3964793340,6896615486105980162
+54246e61-dfca-e9b2-2d91-f37aa8dcbc40,3991146392,417203623988464167
+93e76d16-465b-fb38-747d-132cb8522ddf,2463897834,1910252762157733481
+45b71a74-161b-3694-49d8-0261d9d7554b,1628415354,16468443262027677538
+076350ff-16bc-4ff4-8f81-6231a6384d5e,4108198246,11491357489702754254
+e0b34d69-99fd-1329-ad6d-812070c10c50,763206971,12979487515085028410
+98945338-c488-40c7-c2b3-34371df5a0c7,874908001,1219556975576318105
+dc8d42f6-4080-3658-b11d-d33120bf9ad2,1886199149,16509057203698384305
+e13c5b3d-287a-4850-a429-af9679d45fb7,3647697527,6851037917721759548
+9eec95f7-3735-1043-4994-c9719c4f6d8c,3965670711,5424137079429923679
+5c464c0f-a904-2ddf-1a4e-f4c6b69a0a87,3713862951,17400629708838043127
+9d59d873-365e-fcaa-8a80-e09e0170f999,803133848,13114415577056607978
+8e23233b-bbea-f161-881c-ad9e0e222824,513915209,4937204077723840509
+9871a6a2-2a6c-5438-5b92-a495442f5415,129283268,9315530858311936942
+3498e7b3-c3ba-fac0-2d29-31b926445025,1886254332,7125090047252676529
+c32d43b8-270f-3d5a-61e4-16b37713edd0,2280301004,8515228184915594251
+8cbfd6f8-3812-e4c7-5e81-f490056aee05,2119407809,14539736813872647772
+a69669c7-a147-f71d-93f6-c4bbdce98474,1480082892,4932343343706979382
+8febfccd-121a-45cf-5890-42dfc2a0228f,3603761322,14446957874898189975
+0a79a3c0-6161-1ca3-3316-2f8de9e69810,297599311,17232534625735408899
+8710ebd9-e6ff-e3b8-1936-8508211cebf9,863769868,13641211465892143800
+9436c097-1b16-2aff-5cb2-372c704707f6,1702431443,1999941526890458012
+618ccd16-2c71-2c9e-cd47-d273dce6ea81,1419381309,8703455486327901593
+3cbc9464-36de-76ae-bc4f-5cd709939c81,3333375715,15329165082996265798
+fb7efa79-9e8f-03b5-e68a-2862d6d15540,2477738553,2749229575853214062
+82e18bee-3ed2-8e0f-e4f2-7760e24aa7be,2098585482,12880915969569895773
+26e26d7a-e9cd-24b0-05fe-c7cf4544444f,1402291449,1057127831006387732
+06c898b8-c229-9269-1d9b-1c216b8d7417,1374810222,2514181043881735938
+d08048ae-f6f0-b5f2-4dcc-acc57bd7cc85,2683230913,394080184925102401
+294bfcf0-b53b-66a6-505e-1e07f486df39,3965366888,4185532815262318407
+cfe8be53-1bc0-98a8-965b-45290e38788f,2384925990,28641786746149170
+73a9e2f1-e674-2d47-a03f-c6d387323428,3919435186,10374255949895092207
+a280c14d-6eb5-cacc-e6d4-231869b5af1a,3705493974,4407376963954185720
+111a8fbf-9d8b-28f0-220f-237b29321645,4108224761,16516512740285118689
+b8fc5a33-7014-d86f-c293-4ee015efd675,2135274342,9098311216693948473
+ef26b3da-bc6b-3682-1e85-ec61aa8fc9d6,773818293,13938138871987346798
+99abc5b1-9966-bc9f-f060-79684e82a991,2531394283,6895143377715190734
+3b82fac5-9437-2f23-2d22-a554702fa91a,2394581233,17228758011162045638
+5a9a6281-809c-df7e-62d0-a93c42835d4b,2741953463,18178106833518175402
+d9bf03a6-0eb8-4449-8669-c68642f39084,1955929616,892449223549636561
+2914af89-4c39-8b3c-6f41-7f753a3a6d64,2062802262,709247676666880825
+15ea36bd-3e5f-6073-21cf-2d8fc1b3d873,2880631536,16048853802658778323
+dffd944f-35a2-a368-b35c-36cf93ab065d,3815209887,16402304603926627868
+fa80c0db-6986-b41b-b0f5-90b4dd30c2ad,662283701,930745262881063184
+ec701f3b-693d-ea16-b9e1-e97139fe0877,3193797618,13932624551926959543
+6bc2178a-d08b-115e-e623-7f2e42efeb05,1591567072,15465151557453713338
+2ce8c682-59bb-9e01-1fbd-f236ee244c2f,1686656471,7006682950880495175
+350d593f-de2b-f204-9549-194437c79e63,2684652316,3198311730351633810
+ffb21cf1-602a-085f-1602-2e4b79b5f480,82405762,17995319335494918270
+37712ed8-5398-2c9f-0660-dbf52f1346d0,2024490274,10819180640267219392
+41c543e2-6282-937b-73df-f5c09af1538a,2113753760,464533393170140510
+fdea6968-e786-fabd-e308-f09aa77d766f,1597978644,16037703274607955008
+20ff18d9-be12-3e83-6e6b-59304e38ac12,3580188144,8730410868630669250
+287b66b0-3be0-8ad3-0679-649be3af5645,3547437195,4749059008834297617
+830baa1b-4551-a2ea-632d-ab9983401070,1693089075,12242180447921912515
+cb3f540c-7a6b-e9be-b4d4-a76838f92201,4150265587,6510798501695677994
+289441e7-69d5-7999-d0e6-8c259cb0b8cc,1272238734,10433768825700070018
+9fca46d9-4ac9-8a31-5283-3b28b52471ec,1297090781,10087794716546391950
+174f245d-f88c-9545-3720-fc2431eb72bf,3740573222,4663877647011879867
+569d57cb-24a1-261f-b561-bc1e14a59220,2788581692,12630076370347970850
+554d4d11-9bc2-b493-c470-fecd0e0e2407,421401496,8949904781026506955
+c8582362-fb8d-cf35-e3fa-2bb889bb4571,4218464841,17486205471431976463
+c58b6558-7bc7-3bce-de35-793e19d196b6,3717865861,3530779733122998387
+22567386-3346-69e3-80c2-36712d645a7a,3053770731,2718549500607474285
+e5130c1c-d989-d870-d586-7a9c6aabce6f,3489648118,2430644407065193046
+74711fa9-7981-c97e-7f0d-a04d63cbcc31,968301025,12401098543949223607
+af59febe-1745-7557-f05e-8ffb635a3a7d,3467031611,1649841993444882257
+ba587a80-0136-ffc1-2aca-198b56f7c372,1369325440,11747286513336367080
+79bea11b-45b9-be9a-11de-1f15b1c1277e,920633821,6955263788305318899
+a0259018-7dc7-94fc-d8bf-5feab6db8db2,638179338,14703959029979739465
+7caa7990-6c40-5e1a-cb9c-29617dab6bdf,939911948,5571627472017062776
+d520b948-57a7-a2c3-dfd9-145fca2fc098,2394429258,4653323167907342505
+ee02e83a-7a32-88eb-0732-a9a22ecd50b4,2855730790,16463828646068645527
+8e7d0adb-c679-ef42-8ac1-bfb2904b2031,1110022124,16792610761377801034
+b524912f-8d03-838f-1a5f-0aa94c9a19c0,1085515018,9978107913929401046
+09bb89b1-66f9-aa47-9e5f-57fc3ddd1190,927754924,4749017416534395095
+d09412f5-67e0-90df-00f0-25461d95eb28,2277162143,6453943080020186298
+2e0cd6f2-90be-3627-9b5a-51ff119acf7f,1266387314,12119054462657025738
+1a059873-73af-9c72-33d8-ded2569a7c55,2260635945,2345772595914091255
+cb264cbc-ac5e-7ab8-79bb-12f3f3833a7b,2579596690,1898657079477512293
+e65ff485-cbaf-4509-05c6-ba99eea659f2,3213599685,190072651976406814
+a92a4b1d-8a97-9325-7500-e6184f010ec0,4009121467,17793498819021817624
+de05c4f5-0549-7677-dfa3-5e33b3de96c1,2245042331,15328127260987971078
+9fd620c6-b8ce-2b22-e79c-da282b730859,4121586185,1629216170141370749
+08c5cbf9-89f7-edb8-593c-7caee6820712,2689966770,11173116675475551491
+e206eeaa-6a99-0b7a-2223-c9539b3ef14c,1302269290,12724171720073695484
+999b4505-610d-b46c-3e16-f98996a3497f,2277095071,8181723309090819109
+e7c40103-ccde-0fd3-b247-50f790eb5765,2459351413,4932869675381911452
+403728e1-a628-7774-51ef-6458a3092a9b,2928927238,12395071157829295990
+cb04358c-3f55-217a-75d5-492ecbff91f7,3583397819,8881350399083719119
+5505c8ad-d28c-9735-bdf3-d01d346fcae3,721630706,10141696986272184535
+7c7bce9f-f2cb-be6b-d030-2d7064095e8a,2085764262,2822139820884948049
+bed25277-c476-b3d8-7d5d-a59abe844f23,4047607830,8125168585974513232
+0fba4f57-1109-3efe-dbd7-33f3593b24da,1428861245,1545301167444097592
+3bdcb96d-9e31-751b-d35b-029484242b40,3645015969,12150069757510001636
+ef4185b9-0513-36f4-f4d7-76a015454411,444840154,3357755816875562713
+20e1b1d0-ecf1-ec6d-f77b-c9dd1901a444,3456416810,9902383302239868670
+7d6d0633-7495-f406-b73c-ab0dcb06e3f0,1015016642,3161502495574047915
+d6b7ac11-4fd9-740e-3f11-da544026b468,595802053,3597721209450737650
+49048a33-4e92-7808-87dd-a27225a88635,1628960349,2224160249486300993
+c5262f86-b49c-b40c-efb2-25d0bacc40e7,1639643094,16875038917412357391
+24049858-f089-eb18-c942-6dc0054f2257,4255425433,14097931096171770930
+ca41e0bd-4371-8a75-eb01-d5cb1b782c81,2773361097,12886219187262596458
+17be6382-b95b-1526-21af-f89a81913790,2496623130,4139490268534798857
+78f81820-69a7-f1e7-2714-2aacd65d33e9,2684207435,2524557219521177534
+a87e518f-fd5c-5eee-e613-8012881d9e2b,811568801,5595726876757232102
+a759ec16-42dc-604f-6ef4-08e15f080d61,733719516,188506605561339416
+5b57ea4a-6603-6d3d-8dc6-b555bde37185,3249033522,10347580584193107996
+bc063016-5bd1-1c49-cebb-e912cae1f553,1517902101,10861103663871943791
+92321c0e-d983-bc23-3b09-92971bb0f30f,1439070679,7894118362364382317
+85f3e803-75d2-574f-b687-eb1d819545f0,1132304346,13681877550379483363
+45e9c914-4b8f-78cf-d66d-42d64fe069ad,3389044351,3942930147053175381
+7f7d32b9-cec3-62e4-6a3f-ca51a475ebb9,1932413140,5958511261486825585
+9bf791cb-7636-52f2-de81-652237ba39cf,920336812,16121866249985364942
+1f6632df-4e58-5362-6a60-79a5879f8f78,2217421755,8805487211439949084
+c03736db-a065-d9df-d20e-209ce770c128,284335753,1749821902255622009
+d3bf906d-cb3a-5029-a510-5839b882d9c9,3998338582,10927349230427435028
+3d14a2c9-6702-dd37-aa49-7e08bc47edff,2846806486,7579994391795229591
+43d78f42-23a8-336f-684e-58b4f5c90263,2297561489,14399379041454478437
+25a1ebd7-d499-1ebb-e88b-14259d5fe31a,3353618412,7246195819769780396
+2346c3bc-a477-cc51-6e16-ddfb40897074,122579063,3378623007002035878
+d134a3c6-f5df-b260-ea68-ac8c5831c11a,3984223947,18243046935588906151
+44f06b43-fd61-fa95-20cf-1a0c466965e5,2476265681,7378681287038111145
+af9e9d69-1ac5-adb6-7c84-05c756c00b72,1429211781,12765550335496433965
+a797e631-2400-7bc4-f7d9-d56cdd263870,397849412,232297113401323720
+fa8c600f-ab4b-a885-7c15-4a3e335c6441,3121256777,15090101617233468058
+fbb8eca5-515e-1107-b153-774d1b9c2808,1547416215,1015558780550880074
+14d40291-f94f-e192-8125-7284980d3d25,2996389515,15554679960233292340
+9ed5d3e2-b2c1-4fc7-65c7-dffd77d26055,3576792687,5243562294483374940
+41d05884-2882-ff40-4b0b-f08037572597,342347021,6978270987099943595
+dc60e1ec-cce9-bb2d-0303-3cff44ca994a,2167609009,932954121791150729
+a7e1c8a7-6756-6791-4d42-e49fa7b13121,1913927546,3528518895019068894
+7b848e07-04df-df85-ec9d-8a7eb62102b2,2848684144,7032462793298793449
+56f1a7b9-c147-6872-d8df-f7790cd5fbc9,2933709825,8166783111605262356
+a6914d7c-a0f9-bf1f-8c6e-941aee64e7c8,374781699,7243140177182051822
+843e1235-d556-c2e2-9dbd-3a2620af65f6,2024480615,644954915247108540
+0c5c2866-c937-eec5-8d6b-f8fa220cfd47,1117074249,1329780750902007428
+1ebf67db-5c54-db21-2f14-aa13aa74f5fa,3777624516,15146188099027690604
+1b4a49fa-a3cf-259b-daec-f9790a62b1f6,2200019332,272878238439618416
+7ccfcb52-a7d6-d7a5-71d1-1c1c749cd454,825803750,11033535231111926745
+5cb79798-8dab-26cb-dddc-81b2e6a37b15,354276645,7600540097698123086
+4a7f8631-a8dc-c242-6ddf-8b7ed460ed13,2256786690,17908082732298181151
+d01a94c5-4ff2-d707-37fb-6ab31a643e51,3396882481,2957434221361431954
+85307b0c-5376-dc39-c525-9c0e8732b5a8,2249060048,2259479907648931073
+ed1c155f-b7e5-483f-b1a6-1ea45e2b0dc9,2800665829,17639148293299091669
+288916c8-33d3-2e96-eba4-f963d83aeac5,4294892953,13189369492250040844
+769fcb80-87a4-3b3c-33a3-15322f173c9c,1320650899,7588565225032758739
+d6801493-3cf2-c69e-f96d-2b01cb7b2580,2237860410,13109515358431966945
+c218f737-24d4-ed29-08e5-dc7e81b79413,1699456734,14599336740543243275
+f00010b8-17ca-fb3f-b59b-e2d5c8fb0526,689393109,5389037295981750318
+a9d48503-f06c-f284-001a-559be90585a5,3732197806,18391137818860811514
+85e2af9b-b044-417c-49cf-16b3a669539b,3287579121,7956004231917339952
+f1f0582c-3023-e9cd-db6d-7da09ff2ac32,1571946077,15657834189824533585
+f40ff78d-394e-c6ff-00dc-d4c0dbb05811,3903312618,4209356055716262775
+5b964b17-0cdf-1a4b-a06f-7b43bc673fee,1210789404,14438507868983351613
+abade6d1-c859-4274-b575-2eb88bc9a5c1,3595463055,5863125003235730336
+0023da25-93fc-d96b-0841-d5c553039a9c,901284999,5531367426036555177
+2242aa43-e889-a0b8-7301-a870a6044fd1,3369713378,12233210111294463084
+05061ad8-501f-3adf-08f2-21d946ad2ca0,1402462054,14528611551586759761
+971a1e1c-0248-2c5c-3620-d0896cb71507,1509614819,2623132657011449528
+f7fbde12-1b4b-ac32-3545-7d406c6d714a,1770278881,6964788708178542404
+8845d138-241b-8f77-4ec3-12ec68a66923,219586819,1251635649132490404
+af302b3e-8302-30d4-3a45-dc72680de37f,1649649430,205610591801047605
+d5501d07-1200-20ac-5d69-6a8650f68919,1991414663,13749577451612386221
+e0ecde3e-86c5-6179-af7b-07f51d80ca06,4250495435,5130295716078634697
+37bba8e5-f1fc-d740-a8fd-7e00a1afafe6,1864980918,15598956568513308611
+2cd182d8-6abf-8cd1-b53c-7e835c67e9f4,63595815,16336106874920258731
+73845252-2785-451d-5f14-71a333936e70,133096666,17321839385244197352
+8676bec8-a722-0b40-1241-3fb0f457caf0,3544511000,13467209599423221755
+c04711e7-b4dc-e82a-3f20-fb6a07b98871,759783838,9823229520184110821
+45822a81-5d27-1597-39dc-ab64f51db9a8,3630635590,13040222866494994222
+48c9e536-915c-b179-8fe8-3dda2f26ccfe,3073374175,18132767298255839170
+b159bb4a-925a-6f60-1f03-265c368398b1,2338881077,16824450474144501917
+f167ed01-540f-80ca-cf10-2c58b5d66f50,2229956327,9106449936411890635
+dea91295-2986-92d8-f791-f096a79c85d3,322933731,14626909738422752041
+15cac398-4579-e8b9-38dd-1c8a71e17de3,1023607262,9605183307640215702
+67c1dd46-6bab-1501-c080-44e798fc40f1,1320702717,906639602481443137
+85a2418f-c87f-baea-0c62-09003394f5f3,72806045,1749192694263881315
+089b9f7b-4235-450f-97b3-5a6c636c7b9d,1516344979,16523306878578599197
+c3874b6e-4991-2554-3470-339492f63a7e,4218656326,1404863463868912378
+5a6977e2-8726-9681-8b75-ffb3f6bae166,3426945574,15009898498755033246
+f2aaae19-0cc3-c9e4-2609-f327ef9f2522,3216996670,7871711009487342576
+2005440e-9def-9e47-b151-154950f73d3c,394919222,17076385585330788457
+7f622f0f-c724-68e0-4314-08f96a4e92b6,3627868595,917929305260841872
+c32c7e98-6015-adf3-277c-676ff02d39be,4129403795,10250535900967456781
+5fbf69aa-938c-19bc-fcdb-bef7c99e1ca9,3249650062,1420711914489847090
+8e99df57-0cf7-ff09-8878-8fe44afe3f87,202135706,16215970415935120545
+3c6c354b-7bd7-d5cc-55c9-21cd89610b78,313710831,10182168992127211424
+475a1448-3915-d855-3b6f-add29beb73e4,2534572640,15664181565821260865
+feeeff96-c265-c8e3-5db2-4cb9a8cbc360,2337809778,4843548575012450579
+8190f99f-53a9-5597-9cc9-2fb25f21d15b,3278035678,4881491948899459796
+15b3bbaf-35af-3a09-c785-296987b77bb0,934962801,9400998825576902287
+e51aecac-567d-7062-71c2-73a5f4b103c3,3122406189,15932149015675630632
+a60c3435-aa14-ffc1-fb69-007ab05934b7,970623582,12644718585404762510
+ca3f89d8-baf0-a1fc-00cb-570d4c1cfcbf,3511348871,14258928800831682350
+dfe9a8a7-002b-9526-3f32-2c677cca121f,3255653314,16283120319254236131
+91152717-473e-f049-23d9-7f44420306bd,4141933336,2391186034721394802
+15d5830b-762a-35b9-36ca-a10ad971bba5,369660145,6024671695017842862
+c062e15c-4bac-07e5-c543-355ca11eb269,621437971,12324724090460580701
+058cd684-b9dd-4efc-02fa-5b9d262cf8fd,1060995256,17744597631664097399
+f944bc6a-853a-60fa-ad83-7e5862c5c7a5,1820304545,14454013320277457440
+63250de6-db55-b9c8-3707-90ea2f8ff088,3484974511,5276256554718246889
+43004c2e-c126-b907-0b0a-3e6d04d06421,171510158,154517491840388962
+46818223-8b7a-abfc-f1cb-62aaa9c9c1a4,3168748368,557781425793063836
+16263ec0-2ca6-0197-aee6-92ae9e1e09fc,2229260596,6161013949263499422
+60463a54-fdb2-81b0-02a1-e5b2214ff8c1,2321323701,10731357955975618810
+e5c85d6f-50c0-7cbe-5ee7-3d20ef927843,3854939025,18286239788267951454
+9548bf98-7d8d-74bb-6a88-0c4442d2ba5d,3086516155,2597209545512253878
+d85b119a-fcff-0fda-af50-67c70faaa0b7,3229703402,17512422810267856051
+1cb28b12-3910-fe17-a657-f8183924d3c9,2224613436,9664394016393395068
+595334d9-4e2f-4a71-bf9f-37c7f246bff0,2989516344,16640971424662514611
+3fe31356-72fb-207c-6500-84b64e2bcf1e,2713563899,7954441271927813432
+2095c47c-6edd-f616-c4da-45136c48e8c1,3332987836,4988257332714946585
+85f45259-f1ac-4ce1-09cd-0035e3057f3e,3302813366,8193496364999160817
+0c729975-808c-1337-b734-d5db9e624870,2550694536,15744225706170635299
+24cab25a-9f92-26b6-e6a9-1ff0aab18b70,1818324741,10332044310976904421
+ce8e6575-a271-49ff-12c6-673eef507f72,739935692,8600368531408097989
+1a35d18b-8d07-829b-e4cf-93f137ca0409,946712955,12211797861380701423
+68d1391f-fee4-a718-19ca-c670edbe86ee,3371772671,2697548644164233643
+ee631179-cf99-0041-ad47-e1ff46fe5383,1345247895,10227783297015751025
+05167dbe-be0b-e6d8-47c3-b95f10e515ea,1590951704,11974926331205457733
+f288827e-a762-51fd-fc1a-59036cfe15fc,2054496733,8712694025720320994
+8d588167-b42a-8aaa-4b4a-0fc1a4d313f8,4192451455,3417281095627517223
+72d0b328-926b-2251-f751-5bf29372c3d7,4292496087,3436530065236471407
+19693506-54b7-8e9d-6cdb-903625ea74ed,3942991997,5688025940009903548
+f8370c81-06ac-f1be-6521-ae9cca1bd957,4120109879,8594940008855931133
+0905920b-154a-a6f7-527a-d71c896c8835,3733200897,3950666581885945490
+31934200-7449-16f2-6adb-920b7e197528,1776349184,15555232058907326616
+fccdecfd-3c5d-b608-3d50-32003bb700bf,3706816187,14251709949475207062
+e1ee9c25-007f-23d7-1552-2aeea404af90,1655578080,11782109209175217407
+1f2001c1-6f94-ea67-1b48-3b2e5660fe82,469116847,3681646853957999270
+97dc11e7-aeb3-7136-ed7e-4149fa83af6a,125226963,12446817128476777704
+cb9f64e3-af5c-f985-dbb8-23ca448cad76,1576548849,8169014552444528657
+7c146a86-0ec2-f1ff-8212-e1a0883df12d,3470966466,11298298133872369128
+b04e96ce-e240-aad0-8c08-6cee41421a2f,3548296350,12117745626170499211
+a7a6853e-5229-a806-05a4-80c2bd5bbcfa,3847251880,5850209954668691071
+1598b6e6-ca35-a3e2-d1f9-f483db955dc3,1683349,15836696573382092841
+df4f0ce0-a7e8-70c8-4826-6d0656fca7bf,4141973788,12977089317731323393
+9af5a7a0-41c0-3452-2ef5-0fe629849057,2984203814,3057132129491111645
+154fafb9-3054-3d70-7a0c-18cb29c01c83,3311407296,11478377498238646707
+f6c417ee-b5db-c0cd-05f9-5e78d1e0cf49,1847452929,17124990728808269032
+76e0ee77-34da-1375-de01-d8d434eef2bf,2790431742,17877737630058497432
+3738e4fe-aa32-b01a-5e7e-f5721ad93001,3081113299,3945719497455547891
+1484df74-4d5b-b2a6-2bdf-da24143ee4e4,2165216220,14122984405346719165
+0979f006-2e10-ee98-b055-d73a75e1c054,2446953182,14745950682056373287
+a4545ff3-cefc-5f86-ce05-39dbcecd4860,301068582,12107797992337745295
+a46002ea-aa3e-aaa8-a86c-fdd46374dd96,1520047119,4573288440230966014
+c23d4cfb-c2af-a2f9-9dee-091da8382ddd,2095905267,967151234132305155
+793e4595-07d8-3124-bb43-7ad9b3ef6c6e,1511312997,14564429813135101972
+6e159267-b5de-3277-b012-34578986b130,3296717788,2856234755397034930
+4a91421b-3098-cc21-49a4-87bc00cf9df5,3918158969,12805050873827918661
+67975672-712e-b9f9-c3ff-40022d84c773,4046396220,12070020251508575859
+42496341-b2b8-b2e6-27e0-4775f384cdab,2012665026,12131369348460954598
+c55ba74e-ae95-a7f8-82f7-66f265ffe97f,3720684896,6317386177044817335
+ea80462e-2b4e-5020-1326-a166b2112d87,3338987755,9725625847281439040
+8519237c-9a46-7870-8f93-0536ffb4298f,794446323,4358356356452741939
+fc5c9236-0bcd-d61c-0139-bfa03a58ad36,1088493409,16496133680005532938
+542002d4-a44b-ec29-744d-a160dc125d01,3383525426,4618068470596924488
+9bf5d26e-2a4e-1705-ff08-f6737a283c40,383815065,6162993661135041042
+e1bf37bb-535b-a36c-4070-bbda312d2e47,2146022407,11961954556247101217
+d4b4afe9-4fe9-91ea-9e2a-5896f93b9ec8,549283355,262442145007564725
+66fab4aa-55a2-2446-f8af-faddd3d515d7,2385095496,8271519395499919108
+10ff8088-b7f3-8a88-154c-98a67378ca0f,1844619516,1206279629689573055
+643690ea-f7a7-f551-daf1-49c161c84b6c,2059476495,9958904899229252388
+e4991fbd-0460-dd00-284b-4fc25d750e18,3062316771,5514732077770112753
+445ff895-f4a5-13fe-de56-557dffaa668e,2555645401,4983461445108944861
+1f1bc82d-e461-edd4-30eb-fcbbb068e27e,531913051,2094693795351055850
+6242923b-bde6-7f0a-138c-cde1e5859f9e,2129604669,13579779649234200896
+e57da503-5500-dbbc-59b1-83297db423df,3679710777,14592589890505561936
+5e45f56b-4167-d0e4-d5e4-abab9c87d725,160041121,13149116502138426110
+e2228c29-57b1-c49f-6238-5cc889988926,1917356942,4697781226176029686
+d793fb94-c286-6648-dc87-328f8b29757a,1515012729,13253271841807428117
+051cbf80-a226-cd64-e107-d097f9bdc50e,1969010078,6347494465650315114
+4ac0c8e3-0c7c-c8f0-7ffc-9dc5a645c857,599620697,11513938778228324705
+67324598-ca6e-d7cc-bf13-653da7de6e3d,313594659,11696523886664298250
+80e25dcd-29b7-04f9-0c20-2e21c11dc717,1991122956,17929221953172496216
+a5b85fb2-76b4-870a-5c02-ca40cd45b017,3553997477,17011340725645577635
+1232aa13-842c-c2a7-dc3c-9696cc1e040f,3945254913,13763524211076861583
+a5463bf9-8577-b507-5661-fcd3fcae9ca9,1218075336,1044178663501477541
+7fcda058-5e0d-f647-3de5-a9a28bdf84c8,1624999631,611195588160141858
+d09dba3a-2ec2-00f3-0e29-2c3073a29802,3647359419,160731575537950620
+edf80c10-09e4-a3a0-cb35-72f68a999e4e,1555854568,6307838391457610532
+0416a5f3-1a5f-4721-a721-6b66008ac180,2885732015,18115503412739264489
+16097bd7-83b8-a405-c228-9462a78c6490,2368195988,2198704463730827339
+fc883904-264b-68e4-6330-fb6aaeb6d2ad,3414277013,14022051507723344828
+999142b0-9694-473b-47b9-15c3f58aea7d,1175657376,12392585536460588294
+084a2423-8097-0152-bd33-f14d2c043b8a,3533321361,14679067986647081114
+4baa63f1-41c6-ab31-638c-b54c268837c0,4028150916,13255304153196772735
+08a89067-4308-ede3-b8b7-ef54fe2ee04c,1060824369,11125742769215694120
+4821f12b-8045-3016-0886-f546c9a5d86f,3205262850,8427299750894612488
+c0d8890b-a34f-7151-f376-283ceca32e61,635553285,4433686484727028697
+7693063e-1fde-ec45-44e6-436610cfa316,1927458214,11654707367088016098
+510e4f5a-7dc0-3845-d366-648c8becb407,966715341,8243399032353726918
+946ff56a-36de-8fe0-908c-c06cf66da66f,2730157874,15490691183123098707
+81187fab-fee4-0fc2-48b3-a3a41e576afa,280785001,9068597655065852763
+e6c15c95-8a1e-a72f-31b7-e5ee71d86494,2794434078,2876784946630090530
+9bdecfbf-005e-3361-b0a1-1bc59c3c0e71,3893898008,535829276866892992
+936fcd29-a8a7-ce22-1873-755ef0e3b02a,3325769083,17975442137754440889
+1824c763-a54f-3205-cbb3-2d7b9f3f0bfa,3388578522,8942524936967806332
+2618f499-9812-5eb6-23c6-89182cba4b18,1494584926,414812475507267545
+77b4ba9c-fe9c-b905-9e7a-72b6ec60a296,1164960933,6159633724160206456
+880a56fd-0400-7403-a6a7-3ef75c214845,3511324167,15328687719675314611
+2a1e4b2f-459c-d049-99b8-5708a01ddb2f,2667270626,11035461632773974886
+c666e03d-2f9d-d97a-a76f-1728432cdd1b,1332636505,4506764421747360553
+4319846d-30fc-e183-1189-d02d77627ea6,1693148863,15217556676205213938
+2a6252b7-3f22-2740-cd74-bee521b395d1,2124304199,16234615194361758421
+49df7b34-cafe-07a7-4fb5-bc08c49aa34d,3582024080,15230029615102297878
+a6970a3a-19d8-938e-103c-55bcf94a4744,3886934618,3741200995305347904
+f1141407-e8b9-e7c2-4fcf-ab360a73861a,424511218,16846345146528722518
+742fc022-9360-5231-5b6a-6286098f53b8,2648307773,10468652689900931350
+281f928e-4c55-a2be-2ccc-2d959df8f6ea,2009147290,2618353614105928427
+8e795784-6a3e-0dd8-4daa-91621273bf1d,798458092,4609677840022810874
+2fa84804-521d-8791-c050-c04750e2d757,60222863,6395144103592432778
+060e7d6c-7fc9-5c25-e819-9339eebb029a,1576956088,15701712956626439666
+75fb44cb-9967-6a1e-a691-363387b84d56,3870356887,4387404272530221695
+75e90952-47e8-fef7-5fb2-a4bba506f764,3529993991,15355616799945441561
+53c35da2-c81d-26a5-9f53-3632a13fb6b0,3540691496,17589231515278145764
+0e176fff-9081-73a1-0a56-2bea9f96fb2a,517719922,16024022783789307568
+9be3dce0-805f-2eb5-ab1a-5109e3bde653,1147000961,5952195393095911080
+fdea87f9-4f82-a636-c69c-502cdd8ec987,464692760,8144322372338844299
+b0666430-96da-dad1-0a00-cd9698648aeb,1699465304,6071448601257015549
+89b47382-395b-df91-fa80-b0cf33c4f154,1060808161,4566790715000472423
+7b243878-4106-8e20-a29b-7a9eb124d02c,408159819,16775264630914711612
+460678bb-0a8e-7263-9ff0-c85a20a29d38,2237450096,13029150454666676529
+22e0def1-186a-6db1-32a4-f9cc278456a4,2107403043,12560543198918518402
+680ab802-882a-26b0-253e-f4c447ee2e82,175452882,1220121920338264908
+66f7c9f9-d9a7-2b2f-4676-289c43db2372,2632924364,4976488762562628354
+b37dc122-0172-4b01-491d-d08bb0c5d30c,3335344488,12582098221285005697
+1165f86f-d5bc-4879-8346-1e3895df9ffb,1451413356,2209158841656831126
+e0e62ea2-2b12-7d2f-84f4-7bb0466a4263,1540342636,4060847410984268740
+5b456ff0-a973-463b-9027-9fa7731ea2a4,2744672852,6501774895385830932
+7a3826ad-7091-1215-0bd1-20e713074bb5,669266100,5191075203235441556
+17a4bac3-728f-2176-a8b3-45e97881c2f2,3878888121,10142466453614474802
+336e8820-9030-8b7f-96ff-e3624cabc025,2699218714,17164593693214923720
+a54bc237-3bba-6362-99e3-29898265c3f1,3159054615,18100843689888267171
+2f272251-5bf3-3ee2-6409-4562f3e5c28f,2212168443,2102249365149541554
+a8c24690-d594-d62d-8a98-de440b837c87,535733837,12537455646362590614
+36176ff5-8b69-4120-43f5-b966f6d0908c,3041939453,4334054745372521213
+ed7a199e-5fac-fb07-cc14-48abd0fc36f7,1437579837,4988610306007467834
+c195db7a-e7e6-2624-c2d1-e88ae896528f,944622707,6636668728245855407
+95543999-f910-0a32-6c51-3bb8c290424a,3879812274,15256294056953322920
+9b2d0c73-df30-ec5b-bb37-67b59bfadcf6,4292960539,18200509874827617583
+7a35f045-5ee6-c32e-8ef8-e8648a9b9d29,1014740737,5273782643995098444
+04224dc4-a0ac-ee64-19b4-550c674b8687,4118448270,12023916455595855127
+62055497-5b73-c5ab-e630-59d5e0ce0d86,2895414187,11048152234935180123
+44308dd7-d155-8942-93cd-219b6a6a245d,1548915510,3980655250451819803
+3be67e16-462a-b1d8-4dca-a6326d654b0d,3612227383,13407765286252931098
+f363e630-791e-0de0-d9b9-4e19684649fa,4151832131,12592724138623211781
+741dc40b-2c73-87aa-ec9e-aae2b46e4941,3834587748,387842096778905558
+4fa795d0-464d-6091-32d5-99c123860b90,890937247,9411328376450479001
+f1ed520d-f53a-8a9a-de68-6b895dc4e711,1967380206,16889371043185460870
+8da304f1-527b-ef61-4221-334701df0150,1046352055,1804979744885379628
+b3ff869f-0a29-d211-abf1-f76b4ca2b159,3277118475,15973832785109170745
+0989e0c7-7d06-7f76-bf81-e69ab71bc621,3840045861,17973314904275561543
+88ead47e-4275-fd38-9864-a71034c1a253,212474243,6865709477643660656
+3878d72f-f4cf-4ef0-1d86-e59f49387c4a,3455811428,5072252503138097250
+2f25c736-69c0-a9fe-27b9-5ce6751130a7,1968331347,7538152100382989126
+2a73f3a0-c4e0-b796-956a-c7eec22459ba,983206821,6707731111952271957
+0b489f80-bf2e-b32c-2eb5-285c1c41e133,346444787,13838649730238152233
+6cd2647e-f112-8f33-d2ff-6b89c642ec1e,3117247650,12945877560431073243
+4862de17-c0e5-e986-16fd-e70385334c86,3763928060,5222314566979262182
+4239639e-459c-03e0-7d02-1c92f378020b,171389335,4998859106483381796
+0ef6364e-fb1d-2bea-0da0-9d10e05468f8,908760071,11022718624474609623
+c0cc3524-7fa9-f6b2-0d05-4e9e173f0a03,2453238214,17789952004477752195
+1b862a09-9591-f735-cfc8-904162ad85ac,53655249,15983461692328884668
+00d77ee8-932d-042b-8e35-f7f709384bab,1666148831,15519212706584447217
+0e5ce047-1110-1cb1-9e95-e5e063d70074,2546600977,14354165826398192948
+cbbc4a75-7899-ee83-14fb-609787b267ae,947711317,9737480758947461671
+d2c23d97-5a42-eb93-df6d-86a6c3d8b81e,1452309706,13625687936069902098
+f0cd0731-c5b0-ae3a-91cf-05b1e53ed666,1215574042,3992670120637606437
+f5b23cc7-040d-6273-7c43-0c183af5dbb3,3103548214,5819543822190631957
+31a30096-6fc8-80a0-3449-f736a1abb913,4159261089,10695413380613502765
+4fe58b25-4cee-f4cd-dc2e-16ac0e3b2c6d,3088582270,12570742726664145545
+8f78ee59-c266-162b-575c-0ae4aeeb4fea,3726986694,3809579257233738789
+dd1a5bad-965c-b1c7-a009-ba152c54076c,4104307548,11610620724748325033
+9a8a9432-56ea-5431-4941-e960290730dd,2776466322,12181888295620824902
+8a18328d-129e-4455-5e55-617a4cafa1ad,2137100909,15865493537225615973
+4f22b4e6-68a2-d22e-2ff4-bfd0d1d18700,4041769449,11525680379274185201
+360597ae-f03a-7d41-5145-07412cd4128c,2223158116,5492741749070867764
+23688b70-880d-20c7-ae54-99f940aa2d57,4013341048,16319621560209064142
+8fa7a233-837f-1a51-b5b4-077dafc4e6ac,1291743179,2343538906990827219
+d5cdfc27-bd8b-b192-4d18-ee33ad563cea,954359430,6852306298681358427
+d930cb0e-996a-f802-736e-8df65b1775a6,80127089,8836482217146877386
+fec740fe-c8eb-0e64-6078-964e50ee6e11,1288027366,1137353540916458584
+22da25ca-b3a8-c97b-814e-243c2896cdad,143983882,5300040636688999809
+72c9f15a-a851-89f7-2117-dcff8da06b44,1628891964,14206397024795642208
+ca10b0b0-0b84-1c0f-dd5a-75ef7be602d4,2227143125,4700379919604980683
+a20168c5-7ee1-ef3a-04e7-c0e9a7b94a98,4241112070,6005173133083122661
+d317ae7d-e4ab-160e-1cf0-b32ae1cdd6f9,999767424,6373413575290788026
+72e31a8f-fbf7-60c6-4cc3-9fcd83c14f64,4069448343,16878075774399941607
+6735fc7a-acc9-8e77-7e0d-0005672e550e,3002005831,2431317011717518138
+39c5226a-a4e5-cdaa-c995-b4b0f6d98ef9,579335968,3777980275539305138
+d6e8bedf-a369-37ed-dbb3-c41dd941dbf6,3675997554,519788193060145255
+8dd85da2-eef9-4db6-3337-8530a4db8c44,1228148391,11623588072772430603
+a5d1b3a3-0876-b113-fc87-c2fb5562d09d,634146849,14433868296754015961
+511ffb2d-8d45-e6e4-6f49-f90687885071,2858147064,18234899645763235921
+aad0bdd7-3f85-b84a-6a29-1c5a40ce02e5,2536257028,5566064631659595525
+7597cea7-61ba-2d21-4ac5-7392e1c3d207,1187364369,12919060379773547484
+0dd9752b-a9bd-3f01-c237-211d7b7cd771,2431847474,9048743998549997508
+a5bba8c3-f99a-f338-22b5-a23a60090bbe,1997743919,13983049959998287986
+4f5013ae-396e-106d-91fd-808dab9bd852,3596801340,12676596875464922507
+f22e2fb2-9fc0-a911-a4cd-108360c9fd1b,489685484,3332424045115533314
+dd3097c2-a906-7daf-bcfb-ca0c95e48875,872241706,11410419039834971233
+c9e82626-b0ce-7082-161a-0db0109fb3df,1021286315,6347493109714558425
+64e1059f-983a-04c6-ecb1-7924f00e8a63,2063618036,7552811185721793259
+3f7c8953-d8ab-135d-f894-017ee9d93e3f,2114679097,4707172492815020729
+da541a5e-d988-0957-45cc-0f5ba47f379d,2170293712,6977095108035398944
+54cced74-c020-e81a-e737-e224ec4548bc,4202942404,3720848327292591517
+a492f7f5-f199-7225-23b6-6df0572382d9,2016003033,13558854444501637890
+5e02b0c1-f718-d2b7-fbd2-ac855641abb3,3988241913,9873188192090463486
+cd536748-f5fa-b296-dcc3-d7ab67bb169e,1692442119,17047372837472873284
+0e408f3d-3059-0d68-57f7-b5739ef283cd,2571599967,12656673077862046751
+f2537029-c55a-b84a-465e-c10dbfe44f7f,1440434200,4298792645317847337
+0d134f4a-a925-4bbf-0f60-31646e297d52,424641126,10775294575101943640
+b8539400-203a-fdd2-382d-dd853f48a287,1735572118,3238917518684470500
+f3698c2f-fa04-da53-512d-861098b4148c,740045829,2417942180449082743
+b2f87a30-bbc6-bb9d-6110-e4d53d4d93c7,2624796088,1837578106560370125
+18ada451-0e62-4d5a-773d-45b0e1f2c77c,1642634129,5443496864523311366
+88d61ea8-8a99-b36b-d260-38aaee81e39a,2228276242,9423512983156254946
+946d3d64-1b6e-5adc-43d3-719adbc86342,3118894047,14952278198819795557
+476eb8d0-fd9d-b6f5-6eee-5ae45d1226c0,3885415088,13595784280840372640
+7c18be51-d7df-5b5c-5ff8-fbcd637f2b9f,2268551568,4290807692759928059
+32099b9e-55ad-b331-aadd-aa40933f9b4d,3413365370,4733424365429251087
+ef578c0c-8f9d-0c14-e9bc-8cb501c1736c,1858723712,13503620490512351380
+5a05d232-588d-ac19-ab2c-65960466ec35,2004539400,11492821437130187585
+472cf3d8-0192-e7ba-222d-598787920eb7,2929644034,15557752829443988544
+00b1e611-9a4c-cbc8-0cc0-a8399e0e3085,3873977598,17951400530061718422
+2ee5c024-85a0-6503-acde-432e1a1a54e8,3768354559,4821410908899074244
+3a42613d-45a0-690a-38a1-d83a9f8d5381,1505707658,13674071043293180168
+570e4e87-c959-7c81-bbf6-7435629b4c2d,3362006838,1754887305184426310
+62a36a4e-f63f-2637-2107-37e5d92cb23a,3523601932,4879580246817192593
+0ca31a87-3952-fbe2-c117-233803912014,1790037839,14561165422123611076
+a2e33fcd-3606-49ea-871c-c0f93c3bc445,1586728434,10159238122836993156
+8e4b6dba-cdba-0503-d331-24d67d281c7b,3779199333,3952755099769544802
+6f03aa7d-831b-e2f3-31d5-225d2e931171,4150238987,15145396910833661278
+d0771227-f0a2-e24b-20ba-a6cffcaa86ad,2146066270,4316269091921313237
+1cb84c6b-f91c-d0a4-2fcc-0faad5210e97,1955683220,4271035985955193383
+67ad487b-22ab-7e81-6230-e69a9200b5e9,3411693374,5160645743538948777
+32ea56f0-22f0-f094-e239-3334cbef6022,210486581,17355483284865579374
+21f47ea5-b20c-acdd-0439-e2d13142971a,524231820,14395305822249229918
+3cb2bb63-8d58-55c1-ebc2-937da396c079,3730229715,12004781199552488915
+71a06257-6c64-64dd-49f5-1f9db16b6043,1882619769,9704021082105762783
+7a274aeb-da42-b42c-d847-77f705d2f47a,3481906006,15941720627396511654
+05fa8d34-00ee-0587-7faf-d24e6f93144d,1527687411,1947539470560206211
+a7ee7376-abe5-6323-c9eb-b90655575213,2461329796,15282822600485003730
+9b4db985-c15c-0734-9a47-f9e3cc7da660,2596635402,8205464698726414516
+739df3f1-66d9-7506-bc28-82b8ef1363dc,4060002988,17863010910981093312
+afa84695-b107-25b1-64ba-7c5d92c5afe2,515749879,8300829153333325594
+6fab704d-295d-a2b6-c23c-67983d9f6653,2925694390,13801193105272771848
+adf6caf3-8d01-6a82-c507-4acefc3960de,741528958,12352868570607328943
+c6dfdcc6-bf9f-c967-f3b9-b57dcb242757,4189040374,619230447429485167
+afce09ab-82b1-87a1-4086-db0b28eca2c1,3944714704,865771023561940035
+199a3c52-5b39-c296-06cc-a1bd8f853419,670397382,8826846960198924617
+531c69be-1a01-d035-9ab8-bf31bb87efcd,1641023767,8457587372941754831
+fe9b880c-413b-a33d-df4a-9e401b650e87,2682608604,14474630836572941238
+a7c4419f-dfdd-cd05-4eef-b8641eecb0df,4226599385,12473958662782137406
+5e5a6b63-5dff-25b1-456b-5efe833953f9,1649596281,5428642630146044424
+f8da1323-5fa1-45fa-9198-dba78fb1b5c7,2872568588,14920429321686699599
+7841fabd-af77-76de-2e6f-b2e31af5cc66,927060670,11348168612256863901
+130e2334-d995-2f4b-aa07-e0b18e553b11,1152569266,7451419154487313891
+cb5c8f5e-01f5-dda6-db33-d070f92ec8d4,1042389085,12628157860415368190
+95322790-68ac-a9c6-7757-fc8721cb2f6f,1045416188,14635093350239696281
+75ec60c9-dcde-0413-632b-85ca8ac653d5,589230318,8355297277126474140
+3918ce83-9234-1f23-d0e1-630f2e9f1974,3019135502,6618667871709116774
+f48db8e4-1c68-8309-a0c1-5eef3fe56723,1441157017,5631428326376473523
+0ecac829-7a68-42f3-c40a-64e1b40a756e,3797273294,159338132686103088
+a19a3357-e542-eb54-5d82-d4a255f8206e,24401961,3429652611088177241
+fc8153c6-93d1-b101-6594-d5663e0921ca,2577535494,7113731328668798629
+5c6589ba-388f-0b23-8f54-1c3eee892b9f,2896964720,14533249333499997626
+4b6ab7b6-d6f8-8c0b-989f-0f2f06946816,1918442117,17588680544804856865
+0bb4b43d-650e-8314-b23b-7fb7238ab77d,1772807113,10796286539423019201
+91ca55a0-35f6-c60a-d1de-5558109f7e21,2070541150,10801708369376265811
+5648cb80-2c91-9902-b9df-cca43bbc159c,2185564604,12186358599336526619
+7bfa2ded-68e0-d39f-ca69-f77c2c81b414,57895095,11944007145082833058
+2d02f39c-1638-63d5-08d4-38376698874b,3845840187,14788845641001100970
+a79b553f-08c2-1b22-91ca-974a20a18435,1145048749,4777209707764127671
+6a8536c5-adab-b843-de72-dae5a91d5b67,1848064275,5641518905167332681
+d5add34b-6a71-da08-9365-9168c0daaf87,3266145268,10780671274204424182
+65300424-2cdf-2d2d-1a39-77b7dd1865dd,988054595,2776429899094215692
+26a36cac-d5c7-5709-0f16-9833a7ed350a,2192985295,15974718428451506432
+4e3d264e-774d-a551-b52b-4897d30439f0,823126338,2868688459364002158
+f71dc280-fd88-3c36-5ef0-d65eb90147fc,3118402986,10227791086988713347
+0c967777-b9ad-f7b8-93ee-cf287248ba85,1974204322,12254100077942828378
+3a242dce-ca2e-8883-7cb8-b7641fd69a24,1255906604,3546495430700982455
+65f2abb0-d1b1-58a0-a42a-d83b7ca78f20,3607727326,14319135175319421367
+7176faac-eb26-912e-0690-3af884f20ccf,1082385214,8690919185568519188
+4cfb9d72-d1d8-567e-bada-70e22e0eef9d,3090427671,11443864852466551528
+9d2b4b80-7155-7266-d0f9-aa5c77ad3a7b,918139154,6025861322572406777
+12a26745-5127-d48f-f967-8f359cf3f6e7,1165129576,5632814366615496861
+8fef340c-f9d9-45d5-6afe-d04d9769e698,4049229872,1870979343975198857
+a5804343-4164-d977-c193-1d35ba82d320,1811173730,91157478969506835
+0ef72b93-73d9-9db7-a666-feaa4c73441f,2461068448,13354420306598905670
+0eb9267a-1a66-565b-9388-86833eadb9ef,4066920061,148831386204130888
+aa16ce34-9740-6337-e14e-c5a0f7c9f464,2543229217,14529259934362246932
+17103261-da09-b07d-f46c-b39530e1fdb0,2620593535,1474276585370124175
+3b2dc466-3656-4eaf-9e7a-e8f521b10760,1193328085,8096331065729476762
+31d240a3-03f9-09a9-f3d9-5b81c66f9b71,3820934535,10640223140908224587
+6ca7b596-556b-b6ee-8adb-ee17886baae5,2732325494,7586755118364056407
+afd64e92-85e2-ded0-339d-7473fd85f914,3284647921,7739153222154418475
+f0ed69b2-d38b-1c15-6b77-4f83f8adadc6,1380796328,15456898384718069939
+13e0c991-2030-aac9-739d-e3cef53c32e1,3044052711,15584637919250087787
+2ade50ec-1d8c-a823-c65e-77f465fcedc9,2544608462,18225128426375644524
+6f569617-a745-5a9f-1e92-bc7c46bf87b0,2464557399,5878160902404703216
+718f9b85-07cd-c3ef-8ebb-417ea58af07a,1820454521,2108903847586059771
+6d0f3976-6108-b063-3764-963f878263c1,2398771754,249028033981709560
+86490322-6078-53ea-c7f0-03da34a09d61,2742716840,14145344730636714346
+2ecb1f60-1ade-4b11-37b2-9361542a6caa,502126341,17247171018918187557
+bab2b747-2a92-b5b7-137f-a7fe75d28b35,440184909,972489952694513354
+8de225de-716a-a63d-8f42-d2aceaf2c19c,2223411044,3843436888294152447
+e964d097-05ca-a2f2-64b2-6844b43fb0d6,990872867,9286987793815668011
+16be18fb-562e-25e7-a17d-84f65b62b186,3803696152,9695611443619105472
+71626d71-6d05-9411-7f7f-ced7197a8df0,2134855231,4427810664889967563
+e7cbf28e-6ebe-5de5-43cc-20ef2f73e809,3472727406,10014766952720350549
+68518288-c6f5-8c54-a16b-161e14e414b6,1091702684,15088339234148409583
+1a1c78ee-0a88-e9b8-dab4-06d017088c45,1826971255,14227092190803613697
+2fe8bcfc-7127-1909-be9b-70700eee5730,1455988150,3458357976091553504
+e30ea1dd-cd28-6163-5c9d-872cc9168421,2870949196,16616996772422222166
+c41fe64b-b06e-10af-5a9d-6df478878288,3113841250,3088592285350402341
+ffe4abfd-8b95-3afe-d2c3-2d70743783fd,576786550,3188661556160822052
+90ba3fb3-f7f1-86da-5ffd-a38e54d024e3,4049462626,8316334428753573187
+05af5a00-73cf-112d-6c7a-cc40f60e1989,855010504,3783681939663225666
+1b55bde1-f46b-3ae1-c5de-fe88da9cce22,2129742574,2609808284442790011
+cd65315e-811f-2198-08f8-0e3528a0fef5,4020965193,17991206170593540679
+9d915330-2f91-2e52-b936-8973fc01c95e,562878168,8700642041183704276
+6eca5d6f-bc57-7b4e-6728-b51764c532de,1339892486,8834285551206787339
+1fa8526b-e5ff-68b3-48b1-c1289ebd5c07,1631803174,1132988762655468693
+043188cb-9154-f8a5-9366-6cfd8201c9ee,3046524712,3210302290873021485
+8074bb75-57db-b8ce-8c00-f84d21d04bcf,139295817,18147213548796693637
+014c57fa-6f06-cc86-cc8e-1b46d610bc82,3220387398,12166053069648170016
+0a2e1b54-e2e1-9951-e06a-ca81113b0a72,4219554617,4709608702957467319
+f67ce4b7-f747-1fed-be20-ad51aac60329,2455527712,12255864836567369268
+589392c0-cb5b-f25b-9395-86d5d2de0a68,994912445,2856564279024506895
+bc082cc3-fe86-6e51-92d0-af08dec65be7,872225155,18089087190005209333
+2b51f3e0-7059-a8c7-893d-72254529b067,3669558749,1550900370117775512
+f8614906-78eb-5d0f-53c4-3d6bd3bd8df2,4186358495,9703906260504381678
+e2293fe7-af9f-5c79-d05a-c4dbfa3e4494,4147739899,8463734380044173916
+8e4ce214-8587-3b56-3a0b-479552722f57,93924130,7970165418128501810
+65eb352b-f9c4-f4c6-39bb-c7040efdb05b,3716602787,12259940994404981617
+4f46bea7-670e-379a-1676-3dedfbe1b3cd,239974276,3357862262962837766
+6978c170-7248-087b-d50b-0b9e9cf8679b,3173233977,17670802388466847599
+941fe5fa-08df-f41b-05cf-65000a6e16ae,773318455,4133755869029199843
+d0fdf551-83d4-c5f4-c3cd-83fe9fcf358d,1605744089,3707877645527919736
+f9111bbe-ee29-f860-f909-e0fee16acb4f,3682678456,6628830042262663649
+4cdc7f80-4bd7-0dac-5539-bd2340916961,2177302259,16580675614915432730
+335defd5-2af5-cd5d-6b83-7e9ea11b791b,2650420666,5744865586841617955
+98fa5d1f-1c7e-12c3-7a4e-8a518a430b2d,3759130356,8365352821260963574
+74ab84e0-362f-be1b-72ab-65de5c23a8a4,596577731,10270626760968242223
+343d07a9-ec00-7d03-6f7e-21c92a325a5f,2649886999,8750214834456437665
+30d2f85c-bdda-b645-4277-9290a2bc8910,2671986016,10197315761158334788
+defd0fca-f576-1184-96e0-8b95cd63902f,2514703454,3232225780253092434
+14935620-3cf5-2f2d-29ca-77879e5a370b,800067722,4621667360823947726
+107efa6c-bf75-8e9f-6a88-da068c2a4940,2410760246,11395912621119825582
+60088bf1-6ade-62a2-d4f6-56cc58931d51,1250819488,16013665397666791841
+5d566d17-d2cd-372b-bd53-f284bae8d4fa,121888398,17754804859372985567
+5d6055bf-232e-7b7a-9b56-ba18c5865106,1259094376,10581997053571556109
+ad3fdf3e-4028-ee2c-05c2-a14cab14d489,544307393,5744964911478332766
+b130a95f-9e6c-8a2d-765c-f53b4c39f7fd,2527184579,1106990055350509024
+9e851e04-3d8d-ba99-36ae-558454d954cb,1883141224,9490875352295542805
+612a1d77-9991-5faf-01d7-182d9805740f,1119820355,7030402053553905413
+01b8618a-5f10-b9de-11b5-6927ea198783,421256002,147040136753981071
+a80fe655-e7bf-6b1d-a358-9acaccc0be42,281800396,4773132334893040030
+18be72fd-6f0c-665e-33ee-a34650ec5db0,552696163,3269756491802665434
+ad126f1b-9537-0484-2b1a-232213ed6ea8,1292600441,4355373608379059595
+14d68004-fd02-e6d8-106c-f29791122801,3868779559,1588625411481086839
+dbb99b93-7309-96c8-d066-04a5ca43b35a,776120977,1084457386961343464
+d5088619-4ca2-191b-8e3e-ddb3fab52fa7,3585424623,16050262601060648581
+173ce7c6-17b6-fd08-8127-d1938680d18d,3372615443,5057785310633823900
+9520646b-0333-343d-c419-21f38aa05088,1841110160,7662020970620257151
+a2a2d0bd-cb8f-2db9-7331-3e7b39ef4f4c,232141082,3191044842270421886
+6e0bee4c-d96d-c1e8-cae5-a702472c24a2,3571513222,9610335898855605423
+01316801-8fe8-3a58-ed98-84c916f47474,1921267736,16000353696112463000
+420202bd-6dcd-7bf0-bbd1-e5f53acd9d57,1419234898,505962428422955925
+9fdee4ad-b4e0-9815-296a-b831324e7d06,845544722,17581257135597163148
+af7fccaf-9906-32ca-f683-d48ee62bb32c,40968022,16466783876387271220
+7a947c4f-45b9-4770-5e59-a2800393308f,2679029507,8331632172411869697
+d65dc98c-6395-b709-27f3-5aadd2c6d702,517122421,13736105531162419431
+563fe225-886e-5664-323b-2d98041c246d,1879046294,14011793492072714987
+caa68cc3-b257-838c-ad53-87dd2a6e5f7d,2476666921,2662883186214275069
+80fdc23c-25e9-f418-f30c-ee2d229a1187,567784594,1582135755373216710
+2ce54cd1-9c80-3e93-c155-7b900a6f9b5c,3057285689,4024532558153821056
+8e0481c5-f2df-a039-2f29-626bb1906c55,1564053491,13748463072884560152
+496e0c59-8cf6-cc45-dea5-c9f35850ebe1,1819227631,14599554519189107460
+989d916b-f758-e7ca-e95b-c73d0db8cb1f,2298168141,1762586796620699361
+504d6df4-f5e1-e004-da5f-70fd8f5b08a5,3057002201,6116688622604792264
+fc8b0838-86f0-88ae-76e0-1a3c5cb00827,1980029360,17563344230605424915
+537503fa-4c64-4d06-a0ff-038e69168ba8,1596778097,9592607248138508028
+5688879c-5fae-21e2-3963-a1e89d198716,1209592986,5685729877440354685
+3e969ddb-4c77-56b1-68b8-4a40ec138ea0,634890666,5921930230695788044
+a9bd8ac7-50ab-a52b-995e-385e73caf16c,3209615354,7039018351335207667
+3ee4ec84-51d8-9481-cbad-9b7b38be8ff7,2599342830,13212941890243632970
+73badb35-7fc2-cbb3-a590-ed8a2df197fc,374087512,266595600274479836
+6eaaea14-eeb8-0fdf-9ebc-c39e5c7831b7,233728313,1788759993077399363
+2ad01b5d-033c-4044-4267-7a62503a8890,2809714524,15050728637343943043
+412f767d-4a8a-6e34-d3b3-73feadbcfefe,157413991,10042070956017948953
+0abcdf47-efce-6231-a4ab-43c735100272,3175317250,14721369450154901740
+382140c7-782f-50c5-ee43-64ef69729498,1265359583,14152483973475061346
+4c90207b-9d7a-d629-ba82-9beb2c124342,2146075533,591971590606332745
+06e05d81-581e-21d4-c66f-1490a7be173e,1258838902,4109633299018138266
+8d1b8ba8-d813-ccdf-a818-37a72ac6a288,695865862,6736060133707805164
+a11f0861-a44d-9c05-e990-677997a288a1,31853163,3178569253102181098
+48994b78-221c-e4b6-93c1-57875cd614fc,1375128409,10800740197259225636
+f6827373-d568-f796-772d-a74523f65bfd,1361055137,6296115512665558365
+55c53804-b918-7e37-c068-8009b441e16b,1760072783,877682122791942506
+e0ddee49-7c11-74d0-8645-924de23004a0,527243756,4991858820617565416
+22c75d42-f2c6-ecb3-f3e7-3df1b92533ed,623313403,11319742517340905847
+7ab567ce-cc69-4b5f-456d-60998509aab1,3410097908,721280724409000059
+dcfa6b02-43ac-14cb-69e6-43d788b033bd,3549081953,15872485408381023740
+340b60d5-326a-d042-69b8-9d10e54404a3,2150552493,12992859524456319492
+e3e12d87-9859-f98f-95da-e3571ebbd553,2268312529,2056422354985522088
+9326762b-3f83-ab13-89c8-041c6e88bd2c,1490721592,918408730684544116
+fd3da757-f987-5253-2a91-7f6c059c6450,1857415432,17426745446628278977
+838da84e-b53c-323b-4ea4-1fd9ae87b99c,868866019,3041117050349618606
+19cbfecd-33bc-820f-d47a-9b43fd51e194,3781054797,14248886903842163899
+0d87ab97-f453-b696-b911-fa8de4a39c94,136299758,15099374598603686067
+db08fb29-6c55-6b12-1114-50b01033607c,1816441131,3890517799615592406
+0b7e9a6f-bc58-2df0-4135-659c253d6305,1066472794,7704191646369128871
+01f2a5fc-5f7b-6724-5102-c2bb4fa3a419,3892834395,566387282788912267
+4deab064-3b8a-8b9b-7691-5091e0ff811b,1667259776,4551467605504433077
+58e158eb-a1fc-af83-c0c8-8b1fa83a5dbe,3128731056,13155192509676153757
+a3607e48-5435-ece1-63fc-8284cd97f814,2461443228,15649401078931956544
+8d1ff838-7b9a-ebe2-ec52-01c63778a7bd,175754666,5153695681807326971
+2bd36d5f-190a-0227-be59-c053d25bd257,1498307307,1382976554420466121
+5fc09ff7-9136-081b-da4e-8f7c0a9e598e,138654043,5021051929173726851
+5fe3de11-e9b1-29da-a11d-85a0bc4ebb3d,2127275277,8164179330773600293
+1514edfd-33f6-7a7a-3797-95726072a14d,1282276351,9071847336558100888
+1609ebd1-f22b-1f4c-9a0f-1c1955e42644,397823680,1830839628609012469
+074969bd-d6b8-094f-f2ce-2998267f4c3d,503740189,13472639961511056301
+bedee388-1fdf-6cb5-92d6-663149411e8a,3563579626,13438529561814425401
+12cffee9-6a64-6f01-2153-105d9811d37e,3936454803,7504337719120953678
+ecf0c366-d223-b4c5-28aa-9948506fb133,3043956757,17534543022181361406
+b41cde5a-5dff-e24f-8a32-41d6bff3980d,1853997880,11131544818687341105
+dfaa67fa-dd64-5271-239f-50c2edbecf67,2580705102,8701245618905936654
+d0c6f746-f05d-7093-2636-8949a9061859,1923760371,17102449841223868088
+d2730f6e-55c9-63dd-9cda-d5a913621f33,2713971043,17251942855827132671
+38733afb-b038-0639-6c6d-2ecfadcfa3af,3652455060,9746795974451609519
+d3e9535c-56e4-045d-b1fa-1b53bffff5a1,1929873448,12792989831181869097
+f7db0298-40dd-46d7-1657-35315b89c4b3,2804821926,6517619130186023128
+b4d90d92-3976-1d16-49e5-fc1468ad24d1,2612598133,7043910752356323253
+f241ce7e-acfe-88db-95d5-9834367a318c,3489803364,10126262592760123602
+e7d54a05-86b6-5796-1c73-4e019b04bfbc,2976421044,12656677329392462087
+8736a367-4478-8a84-ef4b-a756f3ea304d,3645824858,9626327160817616587
+d6d5b2b4-8106-769f-814c-31f86a377e31,3838770204,7613435549911788940
+71d34b4d-8850-44c4-7aae-01c307fdf599,704418016,17049969698894578916
+bf309b3c-6618-2d6f-203e-cccbd2fe599c,1515380118,13245560272825181628
+e74fef16-41c2-d939-57ae-ea013cd570c7,2290316486,6783439616866686573
+bb2d288e-f2e3-55c6-b827-5812b952f503,4021575769,3313293682743696829
+3d3cdd25-3e32-6d39-cffd-476a05db6f1e,2645144037,13261761737192047790
+698782b2-b4da-5ef5-2818-da6c85362ee4,1291745083,1057196772120725203
+6ddfc94a-c482-de01-8b1a-a50d5a61aab9,771373570,12614757899635018594
+580ee0d0-db5d-3660-74ed-48d2e087f81f,3010324157,10922233047712362194
+d7b410ca-0aa4-9939-dfb8-9df3fe436227,417073081,7363952661716053902
+67ad23b8-dc7e-a7b4-4c71-d1d4e827e6bc,1186433473,11167934441101763367
+cc244495-9d6c-1db6-8902-8427f69611c1,1756405932,10987403558012516693
+8cc5a07c-9d2e-91cb-1b4a-d777f02e82c1,2388387797,7974421763161595487
+ea7b84fe-e636-cad4-890c-e9418610d700,1450963453,12566587389190263699
+3b3e8b74-6255-4727-29f1-69d9849ebd63,3213661765,14647362415300342117
+f00adcf4-e159-8c7f-efd2-0ce9af07eda7,1005468848,5393981026647770243
+de5eb3d2-1c0d-acd6-3ef7-4a99168357f7,2095657214,1892989633779064155
+b2ee078b-9a5a-5aa9-19de-5958fb611e6d,880472597,15433989944994590093
+43e1d1b2-5e05-a1f2-c1f0-efa8a10a7f26,3735082076,16095387491380569660
+77f0a667-03e8-99d6-479d-d9ddea5e322e,3722240570,17257988111796510705
+f7b52f31-e20f-c68e-7223-fa6d7aa3caf2,1184607619,8609665431805220930
+f7108ca7-b181-7e09-148f-807bcb3d004c,431862759,6545418620030653322
+06baec98-a753-3634-7c08-e9a3b90179f4,3768056301,13553854780446102797
+142ce1f0-59ea-0f46-e0bc-34df4fe1b2c1,3804226683,12856934384372130013
+c4e82c46-5a7c-d3b7-2372-e406f4047f15,1858517117,1065979975305894363
+922b2184-9f1e-e610-7311-fca93c09b25b,3569832338,1524596957424965859
+c3555222-b4df-5348-84ba-b93ce2cb46e7,2824233290,13647952597544916693
+2f2bab50-a8f8-57af-a56b-60d8cca33cb9,2921887659,16799223516508495848
+d65ae3af-ab35-2209-5adc-5d4de4f359ec,1330026108,2143003587687162273
+1ef3d7f6-f190-b082-9b13-c022c750bc77,1322988852,13079922343144835550
+6e262818-e10b-ece8-75f9-730aab1fb4ef,2761046560,6137021830874751567
+3f6a2b8d-5ffd-9dce-84ac-ebfc8d77f6ec,3680010420,9177195551520686487
+40516f23-73d5-4d27-db3c-ed34819a69a7,4264310825,4087956657534576273
+af9ca902-1db8-730e-9a08-7564d239efa7,1046940392,1235289833244633733
+3cc960a3-c732-ac76-db56-e28da9b15dd0,1162424130,11735351350164659855
+b2438236-5332-944b-a774-07f3c9ac1c8c,478712396,4989167102388935797
+46153f58-dc4d-7221-6200-d699a471a727,839698660,12654944736482074012
+0f94cd3d-1f5b-4a97-466a-4b98a481302b,288753320,12343037452650748475
+fb9779e5-0075-e937-7cbf-2c001dc6306a,500749307,17706014604004069705
+b9f7a453-9e19-6681-8fe5-bfb42f516179,3458444729,2073953344386688413
+d7e7dd11-90e8-1262-f152-5ef86c203a16,1506610972,2891627901393511661
+2cf28f7f-c8ca-ad9e-846f-1a7a5849a5d5,3251290242,14058193403714421359
+6f80ff9b-38bd-5119-04bb-86fb7c782e71,2111349687,466900706295232904
+fcb94888-7d87-2ef2-0ab3-a89cdb22ecf8,3370188608,16699699810486973088
+8c49ad53-f58e-bf06-228c-7a4114281090,1812169730,2378817204607274348
+cb8f7e0c-2d40-97eb-169c-f131e67311f9,3216164238,14632975868045436242
+e7ee613c-1871-de5f-db8a-26f3e41cef61,3459029454,16177484574372178791
+993a86f6-e6a6-c756-059c-d3e472bae895,3218359808,3614864347956066865
+93a3a25d-ae99-f6d7-54a4-87c36edc47a0,1823135736,13550593320488320908
+dac41850-ea8c-1801-4ea2-2716268076da,3238263251,14469607152062643648
+409cd411-18eb-c496-46cf-4a5853ddcc8e,2651994232,15467775913832492654
+6e6714fd-1c30-0180-3542-7a41d31344e8,612347456,17742601983257227864
+d40f3948-73d5-8ee7-3984-f12681a1d28c,1915615013,7912168377529212811
+925d7e7a-f70b-7804-1159-ff67aad8c062,1176642063,911715183333309412
+adfce96d-4b4d-d745-5e89-80726a45e0a0,3788363391,10224577560256236334
+3e243b8e-d1de-e1f3-c245-cde0111be8e8,53396142,2539561189717633957
+65e5a169-8124-607d-1394-894e10b3de50,3759463021,5050668116861829619
+279962d7-d29a-6ecd-70b0-558bb388fce4,207854070,13508385648216004717
+1c17db74-9e91-5892-c769-245f43033be9,1309405291,2791204641868937716
+84b474ef-e2c3-5dc3-9371-c469fc1838ca,2139063748,7115823925894059033
+1790d672-7117-ddea-5358-b3792f9cfd56,1481294644,17864400935466570194
+1cc99b30-b349-ae83-fff8-379c3e89600c,1637095803,15519097276473719584
+4ebec748-6830-d332-b34a-11759f833739,4253544761,2564780877129026778
+84dd5e82-2d31-026f-e16d-30bc6471a9f1,1024303517,1314429567493100480
+69ba70c2-f935-40ce-b30f-9a8639b432a1,1640843355,3362438135817387858
+39b327ab-fc1f-3935-b426-e3f18a6a2ebb,263833778,7044432531843993242
+37c8fb57-8d26-6f6f-a477-d0e076e09ef4,2167335089,13269533989796698651
+95e5b683-6eb2-2104-f955-157eebd7b987,2279939050,11974612026523146322
+30ebe736-2e09-baef-38a5-0c663adb911b,994936613,8266626200443826210
+6fc86bf1-a841-fcad-426e-a3f4dd32aa71,3977599326,16970898404760596572
+7512e1c4-d6ec-57bc-feb6-7a247e752fef,439601643,5351962727466905862
+ce080450-9cbb-0234-92cd-b250e84090a0,2830469249,4147040638084964578
+4f60bd10-be26-7b5a-3a35-7bdeee43dd0e,2470381934,5161943289818075487
+373847b1-f83c-978e-1b41-565124e0094d,971392678,4572460681990420342
+90df4776-0363-07b5-771a-9975c3f890cc,1030830762,6294699255678511533
+cbcc5c62-11f1-85a6-8e49-a10fbe58ff9e,33572144,12597890785127129062
+2528e442-30da-b26c-ab78-e6f621dff10e,3572980463,10801440949744552646
+e1609d87-19f9-1651-6eda-10a9bc18a81a,3715268176,17312035381588976671
+6551ef99-8817-a9cb-91f4-7d78314c058f,1763243766,705434043723837319
+e0f75b30-442a-71d0-dc2c-646bb27965f5,2317678921,3900317932834437897
+08a70314-d0c7-6227-ff52-fd7d9af1a140,1940658887,14257351444027648465
+0d411677-ac74-e1f7-c3de-c895fc7a5730,2331854935,11869297939230165842
+3d4823bc-7d02-59a8-b553-f81a8365bfd8,3428161922,18394441051495183189
+6f7108b8-79f2-3d34-8859-37851ff9a401,2727932840,11749397947905738970
+164f6dbf-0ecb-5232-5494-086db24f8a3b,1301838140,12096635030494645296
+c3882dff-1497-13b8-db3f-efbe22c8dd69,2848384827,4546153418580733749
+e3c7f039-87a3-749f-a9b1-4dd854f47639,3526478822,1622021258009313770
+6e9f5ef3-8bf8-6397-fc2e-033b7631ed69,1226753241,3670761778578237255
+5712cf52-1caf-28c4-b83e-af8444165b54,3929225945,3709842588919589758
+f545593a-019f-e30f-16a5-3d8915eef430,2224852730,7447167145064299641
+e2e1971c-2bd7-2f68-fc99-7b95dc1b0259,3199012060,3016902698695455753
+d14cb6a6-668e-7589-653c-43d51817d42d,2748373854,15953644067330040540
+06f8beab-32d9-b575-5476-dae0cb427444,2128805227,11317323729078548502
+c38f4f11-a512-2195-7e35-4410d720c145,1776296472,9567562903953997650
+1f182999-d886-c70b-f473-a2fc35ad6d91,513798918,10555239184728266007
+5b2ba1a0-9b25-2df7-a57e-e67ea523b419,3785230692,9772793441035526414
+05b7d9dd-b734-476c-efb9-7d53f9f264ca,43062321,5282596003327052681
+2007cd20-2545-9db3-20bb-77b40beb6380,3945452575,11662673644344738405
+e530c952-71aa-bde9-d358-660dbb01a3b0,436550677,2209781185604527386
+ef1d3eca-aed5-1583-ca84-0c173b25a799,3893591009,8915648413467069720
+0c3e6c83-5dae-4499-2043-cf4cd3977b4e,3597581444,12845064784288161700
+860ebdab-16fb-32e9-4e4a-0390c4224aae,970892867,6822520553493525979
+603de3e6-6d04-3992-7b78-4021acaa2f59,245497515,5162732965240730121
+a538e5c2-18f8-adae-3a42-1f036c4465a4,2342849677,13290611897633488402
+a9b56658-d06a-2edb-5512-e0524ef2c8de,1296141769,12128400807301428017
+afd17169-702d-3126-547b-a1be13276c07,1523324735,13067141141568124062
+64c4eff3-6d1b-efc0-4244-77758f3f293d,1033407338,12909436726890728655
+d2753480-72d4-cade-9271-7750b6071324,744912776,17983799134905197537
+54c1bf9a-f642-5744-9bb2-aa6432f03724,172125057,6303972970880629838
+af921b47-1a75-30d5-93a4-39fb9efaecc3,2890023578,6596521193784581472
+70101dd8-589c-a5fa-9794-a7a7c9622165,240194595,17361951537189387129
+0c346d52-e2e5-4302-d631-738118c251c2,3585206462,17666939671018520459
+ed7970e4-00d7-fbeb-c576-28c098401508,1995723636,5362526493928624787
+e84780ec-5192-cd61-1da9-c8c13b88f4d7,1764740143,17441219745407736914
+6314b6a9-efa5-1ccf-b2f1-79067d2a2069,3642201578,12914673414660980959
+71da8f65-8617-41df-4264-c80132490247,1930500836,18376960028882053285
+8f89dd20-264a-d5b7-a661-57efdcf3ef71,2212045635,7666494281158456254
+db917ab4-bb12-03ce-0a1b-2d883b0040da,263254719,1481044377616828441
+07ce4579-661e-1a9c-1dfc-475ea3e00f6d,694593047,1799164326894130835
+3221af20-cd2e-ac07-90da-e02d5df2793b,676540800,7453830516061012583
+57d3ae6f-160c-3e13-16ae-52a7b06b7e1e,627515607,7493865224744977430
+6804a469-a7e8-4359-f063-14fc92187f8a,244365217,4698451422288490426
+43f9df6f-03e0-2874-2303-e70ce37bee4c,1174649541,13573905955633441606
+e3aea7ba-f5e6-65c6-fbfa-dbb0342943ef,1354205176,9056818500845000884
+85f438ff-12cb-6935-6122-1847965ac24d,3245163237,609617586476748529
+16b39cd3-7a4e-893a-a5b2-cac7d429a31b,149695751,7449738930265426914
+0344064a-d749-a093-862c-20d3af7993eb,1729522264,15216803634139480860
+ef0e3445-3c3d-f127-eb77-d24dfebbafa8,1622296463,13202574869951718352
+ebd75352-4af0-e7ba-83eb-d530d7ae8e99,2379579543,1897201562292395505
+3a4c3254-f114-e924-702f-f7eb00ed1a71,1712586950,4901956907919719201
+cdfe5393-f229-32e9-5686-3bc5fd014a7f,2322711372,4297484966803434845
+0f5e3213-d9e1-b295-a6cc-d70051d53a40,141541648,17978207953934178830
+561edb1e-6afb-321f-f9e8-40db4390e709,3464347471,9446692259222609933
+617965f1-bb1b-3261-2016-130717aed34d,1057709369,5060539993848588140
+57b9fc5e-1181-b4a7-05fd-923a5f48ff2b,803176174,3712609747644648552
+5bdb89f4-93de-cb9c-bd2e-f6e23db4188c,1820276552,3485232539086460137
+d2b6b4c5-23ed-b37f-a020-26352818e49f,602732984,12421038960905488199
+f853982b-2db3-8ba8-164d-90cd4046d195,3357605372,6919528216895748689
+cb273077-39db-082d-a52f-030de106326c,2409953994,12770940579359946940
+f478bc9e-3f37-e3be-fe65-368364b16d3e,1075934289,17368460517530342198
+78a1f7b3-eb73-81bf-429d-8011059c91e7,2940251280,6919872381101950003
+f4aeccdf-c9cc-7c7c-af24-e9745f192756,634768821,10582882577351207281
+af79b8fd-7164-e3fb-12ee-989961e959d7,3899841527,4084656829959120257
+60f71ea0-4e88-28f8-047e-0bfb74b73736,981373150,13946428487325102883
+4c4c0b70-cfa7-817e-2116-3a95a303cb1b,647604416,5177403814913913027
+c8d65a19-53fe-f573-fd97-86368da2b6cd,1845055997,10691907071623837216
+10370e4b-f379-76e7-31ea-a92a92d14f6e,3137538036,571656207400441363
+6a9c5aee-6745-7afd-9ff5-52fb3297d275,3049405437,700529225284874078
+c1e23b02-68d5-020b-678e-d3b73f9a292a,1048086810,14169530892269751417
+31859a6d-a5f1-ae3d-b94e-fa480fdc0db1,1348185556,13410997759259247907
+57922706-d998-2802-1bba-fe25dd68ea7e,4157613140,3226240449883507604
+96a83407-4b6e-54a3-3368-aab1d1d7ca07,3556682444,10322437239014916751
+5a508d8b-245b-7e8c-99d9-b07fb386c7a6,211347896,2584613976882472852
+79ef3bac-a795-c4a8-62d3-7b78cd942136,286339819,13615709066902122503
+55c49d1f-8445-59e7-cd63-fb288e282ea0,318979935,14454807508309254809
+21e07993-fc39-1ce7-0080-4fca30dbc98a,1894172480,8148159663616660017
+6c77afbb-ca1b-195c-d460-ae7ff78bba24,2332499302,11519920345507263420
+ce8d1600-cb49-60e9-deea-bb39bbc9b2f2,2352719562,10734137509268428584
+e08ce06b-952d-45d2-9590-94bb2bb39b3c,1448416640,4334242824654064793
+e880619f-016d-4062-7b12-4d267228467a,914642553,9542937243779264954
+d746c69c-3072-ee89-baa6-b7f7806410ff,2288676138,11107467773463111073
+143a3ac3-c677-a35a-4218-5215b3a0c9d1,2689492977,10139096468583906584
+a4ca40e1-b320-7119-c9ee-6e6a2f40da73,4204733177,9752161306281655853
+8a8e7924-57f6-10ab-bd67-93411d6ae3cc,2127828978,16563540778840765949
+88cf4e70-bded-c41d-e454-be39cb608648,3455635937,8827172485971537184
+0111db91-fa57-02c1-92af-d6f5d5dc7ca9,1013328062,17819241135068771606
+1b549840-a759-2084-67c4-75c6be5a38f1,1617246192,12841235337224188502
+01db56ff-99e2-949c-c9f4-edeacb291524,1362980127,3470105904097045449
+eff785f1-c0d6-d2c6-c0b8-94686e3c1049,942871242,15480161557028986154
+763e0344-daee-32fd-9086-fcf7634132e5,3785158608,3273190866118896049
+09b9c7e9-96e5-818e-38df-dba887e85a0b,2320376427,3738158641396758122
+43bb9a2b-943d-732e-2332-3d0c7e67c2a3,3509823052,15509315527051663953
+663b283f-ca1d-3820-7291-c02153331ec5,3654376994,4374105888541907698
+d5fc228b-5659-2662-ebe4-710cc5fe8d9e,2769693927,8027195986669257509
+e4a3a125-c1c8-11c6-01de-0752d70eae20,207555606,16784322273166884522
+d500974e-9c2f-0e35-6534-871b3c08d0ae,907550950,850634424693304403
+78b776c0-2cbc-b30d-e87a-dd94df59db68,2966404441,5049164626089320193
+53d30dc5-3628-7f66-2b6c-709fefdfee94,991982651,16246536190903518049
+dd091aca-77b6-0871-6c88-adae18d2be65,940480966,3019041911923691754
+63259bb8-6919-d498-eb18-9b031789073e,1438630267,9335579965582244895
+03a2a739-0faf-95bf-44eb-4f51c214b843,1813437169,17188702991240909290
+2172c86b-886f-4fdc-1af9-ce5a5d05542b,3020419162,3000182126801748356
+8896e7e1-fdd5-c207-9fb7-d1c5b8d0542e,858692359,7902965535305621508
+3d3beaa0-7707-3a6d-a299-172d35d52937,4092756818,16782466019095828741
+eaddcda3-76ee-ea1f-3292-127e7b5f0d60,188711814,8282840942742035473
+aa7c809f-e71e-85d5-8e60-c51d532e40b3,1982685010,16496646667117084961
+65536fcf-5a06-91ab-1a28-0a4e389efb91,1967067981,6381616412453568673
+a65310ea-5b54-e791-e744-5f319c20a531,1896524030,7787630208811330956
+55412c07-8eb3-eb4d-5cd4-f3dec0ca77ec,2548616092,5076217795338882072
+dd2fedb3-bd5d-f9d7-6794-29044017d46a,1542876540,4941438959311347727
+3f1fd2ce-9fc6-e1bc-394a-f843394fc61b,3538617537,12964383425823907127
+7b72f193-1bab-ad7d-69f9-4b23192d0a47,338964021,10182649613682920209
+2cfd827d-0373-32ac-6af4-db048d0a3e39,2607533755,9336795129011875926
+73b64098-59a7-19a7-3ec4-31e22f12e83b,3912813443,1556473990665946929
+d25643bc-570e-6786-4841-b98dd72a3cd2,2215762590,6775533459902110618
+3dc5fc9d-7f83-f648-6705-f06d24304ee3,3383803834,10244478125137993296
+39f71c5c-727e-5665-d0c7-6bd1ddd70363,3746287388,4583738970097278008
+97fc395a-6b8a-1890-13fc-148bf99b2627,3345597196,10987957598390569355
+6c186c29-cee1-e5ec-75d6-2e504a465025,185822151,4071532841434217709
+5d96f2da-c4e4-2cf8-1b4b-79f7fbb8edfb,3423786021,20423148282889259
+26fdf827-20f6-a8bc-6f07-2f8c6e427ffa,2308777609,2055127362298311838
+8574311b-2319-85e9-2378-53bd30af5d40,3059150669,12518030640223905493
+f8deb515-170a-71c5-1949-8c2936f9bcd9,3719237566,3559604092298029300
+aa5c1113-fd78-8e50-3d49-552f2443f56f,1188071427,13871523655969862715
+3fe464a1-d84c-23d6-0810-f202bb348667,3416354275,12133691253693057783
+cfd001d3-9211-7e49-b491-6b1b13c1d9d9,2182895552,670614780976899855
+0ede3555-ba72-42ab-9ddf-606943d031b7,1795829451,11643361012502740647
+4f5be1d2-6c99-056f-d899-203c49b8b966,3396734174,14734729717976138089
+77d7f923-24b9-d8f8-0076-77b4c683f2fa,377990818,17376355016287336035
+955cd130-36ae-9df5-0058-6976dfd7b813,2555289433,16682012513945093236
+700849c9-54ec-f8e3-7509-799afec8417c,3255277130,6489010412626385290
+f06e2177-cf95-8c97-3ec3-94f3739d8bc4,1976720849,17917084831029747363
+27819e3d-c1d5-1ca3-0e02-0a65c8ec7ada,3670590660,14871843213693057744
+7112346e-7433-0151-0051-52cf44f67738,3812884648,6819203221468045540
+9e137f4c-7c6d-6f11-2e70-5c1f2f1d609d,3736580707,11571287091625708135
+ceb1c1d7-f8f9-1f99-071d-6b32afe22b24,520848855,12412404230877581345
+ab29bb6c-e1f4-91bc-d838-1c363f06cfac,2692742951,2852922804336433541
+b7c569f5-317a-db19-d217-79cd724db9e6,78811557,2053648377379823162
+1cfa1558-1783-95c4-e03e-43a22eea7729,183894759,9531482697706571008
+09ddaa88-9f7d-7832-1de3-0f2aa3ab02c6,3481932843,4661516691338905173
+2b95eff3-52b3-75cb-ca89-bcfb6704dfda,2717735195,17315513096372399460
+7aeb96c0-ae1e-be63-4475-df3abbf79804,3070795879,17474873750017172636
+dc642387-9dcb-7d44-623b-ba17f12b521e,3621688918,4458266306651826276
+61840f57-9e65-843d-80b6-4dda33646c3a,3756057117,14349815943853135424
+b7d604a2-c63f-77ca-9a5c-306ffadc9f0a,777495015,5703869884341699484
+aa06da0a-6239-0575-6ced-dc4b9414ae83,1497850444,5406928380121016736
+4be12504-648c-de87-a1d2-8523e98fcdc7,2410139805,6682653871322880081
+323f8e58-3ab8-174e-74fc-aa7e797a6518,4039716280,7732653181919163396
+193608c1-e12f-4fb7-e680-c1e2896e3058,822592707,4211560647712812521
+4eef2fbf-5d80-daa6-d26f-b64f3df31e37,3075092815,8567698015605155003
+20741207-b40f-8e6c-1ba2-b45cd82352a9,97959287,11215302089920234773
+6e801b51-3075-edea-b8a7-700c83d8697b,120490175,15822279115592755608
+baf12da6-ffe9-6d68-2c30-e9e4b97a3c54,1130504449,8350219842625052467
+80584a95-9acc-167d-2e93-ec5473466bf6,2130959207,9225124705358490061
+7a069b31-cb23-abc4-421e-62573eff2300,864739509,5979220364992482834
+3dc5dda9-75d9-eb26-177d-594eb1cc145a,3122696590,4682167560469985399
+6c65e0e3-d5ba-0f9d-1d54-fc1d6acef587,2024170903,16011034676740277238
+9f1e6117-b13b-d9d9-6a93-fab3f8eb900e,2302647901,5893625598020103979
+809f079c-5bb7-3b30-eb6d-476247e50eaf,3727210142,13042275600427811401
+d4ad7b3f-4254-b7f3-333e-129eabf36f11,168158657,6161027830093515456
+878f4ff5-297b-860d-bf2d-2af6ea31a879,4218810175,9131612382376646115
+6cd3d9f4-e768-721d-4526-f2d585482ae7,825293125,11216899592281438033
+652b545b-72bf-0af4-03f5-3dea9a63a2e7,756014435,16382052765017895484
+d86b345b-1730-5ad3-bf7c-b8e6907ef820,306223956,9013815509320572347
+f4444707-3a76-649e-accf-1eb39dedac6d,173801081,8514128806587613456
+988af039-a9c6-0429-7e44-36e08112f04e,1739848981,2684979326848446916
+794fd453-1693-cdf1-e48d-62d05ff41c11,1149136001,12491737676134414589
+dc6c46e5-63c6-636e-a900-f2515edcec64,3386014765,18028079586278737592
+90bfd601-461a-2be0-9ac2-c0166d0599bb,451273323,10197164310359145716
+1916c5d3-33c8-38ff-b245-53b9f1410c7e,3671310368,2390474835005835442
+94b2d2fb-8041-2296-026d-e577420ae4ec,3356813747,1126436855636300619
+bc040184-5d20-441b-0479-b42c7585eba3,3796605826,9271776637317049912
+c9a3b733-ebbd-0b5a-e63d-8b42f9242ba0,332603890,10381770700419715374
+cdcbd857-1b77-abdd-f88a-9b51c5de072c,3634245598,1701647860078634747
+24d4a5da-118d-0249-27b7-f66aba1ccc9b,3904503992,365684637488131089
+839cdfe0-9ead-0fe3-f978-30c7b710b76c,2938648167,12888509280757723873
+0b661ffe-b26b-097c-4f44-8a51a35d9b2a,3606878197,12140615774488991783
+a8d1b4fd-d18b-88ef-2f13-63d83b1e567a,4255244212,14278784752527821287
+3abd26d8-b36c-9e90-a100-0da9df94e229,3564493259,14686947560365044520
+124827b3-5b92-0256-0f7c-23472eadf5ed,1619581422,8284512558989532029
+949f9d05-b409-2ec3-f1dc-a97253c7a311,4112799110,12510633561724421941
+07be2073-fc9b-d2a3-11f7-94a549ee7d5e,2425936636,8974995508477041010
+b13aa6c9-67a3-40ad-1677-72bf8a4a7f22,1097988595,739916503752365473
+fc8abff8-bfd2-881e-fc2e-a1967c9df1e7,3437974924,823218898695708361
+709fa4cf-e2ab-1fd8-4769-1c766f33b681,399405182,156555891627551134
+c0b60285-68bd-f4c3-6a83-efd4a4a5c652,2517638301,18388859995598828728
+6b0578d2-ddd0-8241-888f-b767017c5179,1720783661,13371240953472378087
+45a65f57-35d3-15c2-1180-8d1a636f2325,247406782,15761103815856507070
+90d0420c-1109-e033-a7b0-992d90a1de73,3557451135,551287063382736075
+d0d7df4f-7667-3186-aac3-c2c03ce4bb36,2573991820,12599244597186686552
+1a6ec56a-bedf-69a1-4ddc-c23c8be2802c,83586209,5534921439516940065
+6a971cf1-384e-2246-cf27-185a27c9b64e,3698564469,8929055752253630766
+8215b652-ba8e-9749-895d-ecfe71887a81,922229606,13342738077457243835
+7474bfc9-1dec-9f2f-960d-1cb88be4c75c,84383871,2273377011289643858
+528dae3a-07be-2753-582a-b77f17a3b32c,1532871470,5291439205042830091
+f8f846b5-fee8-be9c-272e-131603071cd1,2166574433,16525959112829990366
+fc396394-d2ad-6162-4235-978908fcbe75,50148555,12404707045690807015
+2ec4bca2-b360-2f0b-57be-36980145bec3,4090410430,3313690686039757080
+48977390-1e33-140c-2bab-cfa55d93e5b7,1368787847,2300356967348522374
+bc376d02-2ad0-4fef-f3c6-2d495c767ccc,3138237362,17503499413573073684
+5b1cb28e-4ed2-be8c-4ed8-edbdd2b00a45,4077541031,11624473516442900476
+58c8a66f-274c-9c21-c8ca-f928490f3fa6,1538299123,15378122710451720433
+c037d6dd-f201-b93f-f620-6804130ae860,2903766846,8951408003578406562
+05169874-1600-e0f4-59e5-5a0665116126,3203120383,11927911163058368428
+a4252c65-9330-9cf4-03b5-4e90225f7e59,1997632001,17832480758788705654
+7450d775-0cd3-740f-53f9-935a2c7875f5,2734712429,8013176382873688725
+298080c3-3fbe-8e70-722f-59ed0b184833,1307800263,10723383937545008159
+ce0af322-d4a7-61ff-7412-e7589feb508c,1441003371,9874436211533436457
+3e534f77-2576-edeb-96d9-47afd4f480c0,2075104716,3831026685987956709
+e4327642-2187-1b3c-bd75-0944f6861889,1115878223,13668711620217067948
+67a8819b-b0d5-db56-921e-e992bf6b5d6a,812688937,11875922898388186029
+a55e3fa8-4d04-0303-c7a4-310962edd19f,3061663838,5970604092824404966
+bb22386b-7662-a30d-f51f-01d011485d89,2102966202,975382789151111682
+bde8fa45-f658-9985-d42a-0a7e939cb1ec,1330294557,13604856285753309189
+b156205c-20f4-4e12-50ae-4b8781e8b462,868682663,18295531892934112716
+d8a139b0-d140-b056-bc80-5decc77f6c15,3095800572,3227263230054051058
+2e0fc3b2-1588-ee86-edc7-7d12d7b00d7b,4074258811,2869599812309132632
+d02be5be-0185-b571-7904-a7fe8ff244fc,3877506268,12368582681786759104
+901e6cf3-07ea-4452-f7d2-5be795008415,101143424,17500229306932239722
+ec57d4e0-33a0-e4f6-ea24-93528c5fb506,2992847879,9612063155125311603
+74dc5510-df49-8214-5ea6-1bde06e27872,453832358,12350941332754866473
+2bf0f253-7c10-61d5-f1cb-60319246915a,998221190,18227312876572611893
+8ea8fd76-c2d2-5c10-afa8-bec022f1f6b4,4137054774,3338834447510785412
+735a052f-c9ff-2208-0593-178a1e5d9a59,3819964463,15077313122009484379
+d3c2dad2-7362-00ee-4266-4ba6398d8e71,1155944303,2983149528143687487
+1017571a-a1d6-e372-3e80-5a031e5d28ae,1206732536,6167662782340235036
+19432824-c608-f847-659f-3f484a73956b,4136076214,1166105062910388333
+9d41896d-5ef5-dff1-5a29-b7ab44cae3a7,1996073966,12389022590355955582
+9926b13d-c715-bf78-33fe-ccad44fe7a3c,3684770313,11131456246067389399
+4cb15698-338e-6213-8d45-abac6f921c31,527274260,2249357132580376664
+3b2ea57e-b92c-10c4-ee67-bd0970a02c22,3323996502,13370268968092083931
+a4f7c3f4-617c-b2e7-04dc-f87017f98c1c,2804574687,12745290083369162324
+21637eef-d3b7-8856-ef08-42203fd765cc,3839720508,7312285608772134935
+a24a917f-30e6-8845-bb79-7283e566899a,3397832933,17681079699210250324
+1cd32e1f-8094-0910-362f-e407013093dc,3067277368,5312082750300726307
+81871d1e-0b0d-64d8-ada7-ae793355a3d1,4201514828,11827442929780700994
+39035c33-aa72-310a-b0c2-9a0750e334a8,3735733465,13205774005406636698
+7b09b6cc-b13a-6bbe-08a9-082bf1098ca5,589800473,572491400727153292
+dbb26644-180d-e419-f8aa-091e88d39cf7,1433586572,17273676781138659088
+71bcf17a-0a16-f758-7931-8ba759bc52fa,2459818449,6995261489701830489
+e38ba280-6c5e-6cf1-8ba0-75f4e2a17ea8,3170916935,8672588405520576264
+1b2c6316-9cb4-6f29-1088-9975ffa60cad,3705366426,10629025402844904722
+1e2c3aea-7fd1-59fe-865a-b2f026a01eed,2351266029,3717488317362097657
+0dcb31f6-bc05-ffae-974b-54827d23b5d4,2344492844,9227964847118580291
+2bb29de1-cc83-025b-e824-1c0a26bc5594,2648093462,12961398015743843518
+acb44913-70c8-3f23-0053-9a05e3c08262,2872799441,11272127135150775599
+068fc2ff-02cb-fd4a-a2f0-a3c9d9eb1e2e,1425281620,12025809876991873518
+fe03c763-bfd3-2c40-68b4-33dea02fb488,2924392338,2936910509872444559
+1775c209-cea6-e525-610d-6993e4a7c145,3336654632,15973151256960559166
+d7f61270-e8e4-c2fc-161a-a0a307fb9011,1049685209,3073095991850510080
+5d908f9a-de21-72e1-b016-ea0fdfb6eec5,2518600047,321045440122850284
+6453ea34-8c9f-fd2c-5d35-63408a7aaadf,1428955743,4950184152479813614
+d09556bc-3c80-1178-7d63-e91db7badd2d,3065678778,1892151149687061347
+b1200fb9-46f2-e5e6-641a-614b4a494746,786389305,11035838081168904572
+651ac057-ca36-c2f8-e53c-d266877ddf85,1750730390,7711251380858949375
+0e13e278-c6d0-ce28-0015-65839c6615ea,3581944439,17690798981218691078
+30d21240-34b7-81c6-037c-0be8a8730c48,934167582,14086501107488006062
+0a15a768-792a-9f47-3731-1163194a423a,2147080065,10861834031913877996
+1fe44018-021a-7d49-23ab-49ea3faa68e8,1260881343,17207767861744895714
+affa44e3-7b10-4de9-1e01-c5aee54a550a,4231278414,11174233521120182815
+d7fe3d55-bdef-4ee7-dc0d-5c66808fee65,983492421,2937105366416049246
+d7d9d8f0-0dd8-7603-85bd-26730e2e8c00,3667753464,2390723075422845844
+19d4194e-97b9-ada4-0d34-e050d13c58c6,1074654330,6066614554129008619
+cc24ad49-42ea-30af-5cc3-8ef9580a95a5,2279256591,6827223004823750312
+b6c3b368-bbe4-a1e3-0d5e-590071c3832a,3127688467,4248739800317598963
+28c84bc4-d01b-04b8-f93a-5ff7fcc2353c,1588385958,10574018028486835022
+c0338e7c-8893-17e4-dfd2-acaab31f94d1,700626009,689131182115439134
+0c3e3964-2165-8106-894b-16002d866c02,950367789,13949571464756157180
+5c5a5d3c-fdd8-0132-793c-85664ffe1f99,2422308559,6531943737465620778
+67086724-be43-1fae-ab22-7f062040f794,1927064326,11406077862650821134
+bd473e2f-1575-b9a6-bd53-14d7cf32356a,4064410026,15100722094220428606
+e75e988d-d743-2220-cc02-cd5070567b06,2736809150,12204057016154813891
+4de1fcbd-a6fa-338e-ae1b-799c12150edb,4155065441,6355471064279833973
+5d5029e7-b0b1-eae0-7222-2721d0c826d6,698422170,3717565617255467440
+ebe6fd80-a1a5-6722-3bbd-04eb4b88f707,1538117927,11942031781269562453
+b4275d07-1315-87ec-37f4-7aa10b1c3d74,2700981249,16801071129370131208
+fa6a8d02-673c-85bc-ed88-831e370131c2,3684736581,9477435916173456383
+73531758-b1f8-1128-9ac5-c2396fadc893,1678081189,10639855501890849277
+0d9d7488-3e91-29b4-9256-609c65c211df,696034821,4366542296067032789
+216318b5-915c-ea25-a2e1-1196041a312f,2263806873,4850205551129670027
+e3e4143f-27e7-6323-ae2a-cc29b501549a,1689962675,7848240082544819262
+94ed394f-59af-2e90-af7f-0538a3e413dd,3790944009,11581680035784696756
+0fa29be7-bb24-71b9-e9c1-9ae2b4fe9b4b,2776862531,8089138484168029460
+be4eca1b-5386-1373-b225-6a8886caaa4f,2613838526,15727377782700656420
+ef1309e6-fc4c-bdae-e346-baa9bd57e16a,828527706,12294760104019631184
+c6c89c35-40a7-c441-d2b8-f6c9bcc2975d,1327442985,1816916140306002047
+fb00b472-77e1-0b6f-5a45-a4b845d1535c,1391346425,7600505334562728816
+90097fbf-6c2f-d6d9-a45f-aa14b9e49e5f,854539230,1809040997593337599
+ebaeb256-a78f-65d8-c15b-60e6625e5492,2570596502,4056543595438379613
+fea75f24-6da9-3fd9-6bca-657ad406507e,4234188955,15137912969447692146
+217f135d-8859-e700-3d31-759150c0aa9a,2962591115,9151667474501927243
+f623a993-22e7-e1e6-5a39-690484d88a1f,1346510908,3143423293318932409
+3502f94e-0520-a550-4e6d-a907a86bbdc7,3652231531,6824648008211145937
+ce05d85e-8b2a-2ac8-8f6e-bb24e5cc62c3,907895412,16461865102380869164
+778b3db2-d76a-f51c-b8ff-b41c4b33516e,2583272795,3842524071268641554
+24fbb6f9-e303-b400-ec17-3fd4c643ae39,360013800,13483475208213534016
+f8c2978b-63ae-f9c2-3115-0cd1fc08d55f,1137456768,9227359928131130365
+997df287-1d76-286c-61bd-03a7df142bf9,2962443947,6680495806256602097
+557800ea-cab5-94fc-3f56-cce66a4f031b,3977791174,18356504400341622931
+c70eac80-69ab-ce50-d8c3-8d15a6b55b2a,3638733567,8879650554748276241
+f489e61b-7aeb-425c-c954-892ef72714a1,3065563825,1954608950245761675
+a380440b-60b5-99f1-984a-f4a333668ba0,3884888063,14657508933506735085
+1f7d26dd-4c0d-c02a-2b99-df11db191729,3335451760,9029478411633028873
+f09c36ce-621b-a931-2e2a-2754ad88995e,3706999757,1763257175301959714
+90e705ec-67c6-a77c-3466-793e013d310b,1880020868,2367970944855030416
+9920d924-d2b7-b890-870c-cae4eddf24f9,1726623242,16411230963536528443
+23cf9074-fe9f-6da2-90ac-bfc0481f4452,503167133,6943759283732718745
+2bc37115-4f7e-5091-0ed6-f430920c9de8,855407483,131491288433204658
+1d384b3c-3cfe-d3bc-649e-0a81d697cf8e,2741650726,7917974431284539632
+2aa23c7e-54d0-671f-c527-13b05185da41,3869891557,17392171998579643554
+5a19bd3f-c2fa-6052-292c-0136fbcfd384,95723565,2335864360957491734
+a579e4ad-e51e-5878-bf63-0469567d1bb7,2359673261,2314479476165488853
+f33881ef-7222-088d-64f2-5709b9563b35,967044881,17633379355594728028
+57e8b2db-2ba6-fdc1-9768-8039718d20ef,1832278797,15897002198490040195
+665898a9-75f6-f776-83af-7f626daa2c51,2059962709,1388582119841202000
+cf0ed77e-2b96-5bcf-72b0-928617f53d3e,67105937,7206204666739363616
+744d646f-7821-06d9-fd75-0a9de3b5c1be,1888258097,14107186884475539075
+edbe14fc-228c-0246-116f-b29b8103672e,2596825235,8506684032516675737
+0ff6ac32-c14d-55f2-127f-37529bac0ffb,456096254,16336654537791277929
+1cc06ccd-e8c7-3cba-81d7-d3c47762eb69,1130994556,2030479209586180004
+f8f8dd78-db31-3f0a-4cbf-99a89f94b63c,945307541,2061880884271766023
+9b430589-6ae2-80b2-524f-f03db3c27f03,3531727625,2204286753462193866
+fda2e565-e26a-9f30-3b99-61f320fee50f,3396946349,4776227245019374047
+3fe759d5-29b5-5534-0609-4a99af44b56f,3160717178,8104068036221598187
+b19b96cc-7927-fce4-40cb-5e70d213bc77,95939426,6059741462071341257
+21f9fb42-57af-8b27-0ae7-2d849854a4f6,2309232235,3247824332380557792
+3d4cdd4a-a359-064a-e1c5-6967d90398db,8264439,443149691362977912
+50d39cbc-d8e1-8152-57bb-3b28640d3005,1149204217,5699670434285131435
+7d12112f-8abc-dc0c-16d5-f49f24fbf89d,352750218,16120729863718367448
+cccd7c83-6980-8e56-ef43-806fed231f7b,3880774906,2294343164707802259
+d4693582-686a-f41b-858b-b14713fa2f79,1069358965,17011707219376348293
+926eb4b8-c652-b33a-a22b-966d6672dce9,1942322651,11762570996003978568
+17276828-ac93-ea58-8340-6ebd8bfd9030,1269669722,14506286218998005781
+6d98f4fc-143d-1c3b-96a5-f0839dc816a1,4238071032,12444790869227854088
+56000d54-8373-8acd-09a9-bfb68b3a135f,1633923175,13292730766195941679
+dc51d1b3-3e60-9cf3-3cf4-00f5f6949308,1493402672,2671691800094075416
+d48ae57f-635a-724e-b79d-d92a296adf37,3334801115,15287457699955579635
+da698e97-6ac8-c62f-938f-5eabe40ebb56,595291304,17619735984431033564
+c7bb4931-a14f-36eb-1e88-19db977cf7ee,2801850342,12402017232568419365
+2e66fbc5-da36-4a91-c2ab-acb54b5e64dc,723790380,4040332347931656788
+6d8506fd-90aa-ee56-8f55-bbbe892f877b,3261321351,7018559552985828747
+1c3cf32a-ae2a-965c-07a8-46a1d4a5e86e,585260585,16881244329414542884
+1d7c97d3-6c0a-c54c-8182-193d7d2df896,3563858505,3590386441440988970
+54b4e387-2381-853f-af13-d3e47db920dd,3531576280,11229967218228311536
+b6d5238c-1b1e-319b-2144-ffc2a783fbd3,1075173602,12542170353673816529
+208eac48-e681-367d-e035-b4f65ce9f7cc,1532502607,10484092921253921228
+fd3e991d-864d-3b2e-329b-f099ec9082bb,1282359309,9098928974353944725
+ed061238-3929-a116-de48-34df9eb0e6c5,2756552302,665546024444745614
+9588a39d-eed0-1506-5517-6dde5f64e4c5,576085583,5573255988621235055
+24ed8fda-5d12-9d76-0a31-00c884222430,2959337122,18374470005166126177
+6792603b-cdf7-b78b-a393-744d3e43f9df,163759149,6065361203818140789
+5e29cee6-2f16-adc6-d5cc-bb0eb4ec24b9,1909303623,14250926343253445954
+7cfad39c-ed36-00e9-96ff-5d9f0a160e3c,2212992599,10536997498467109564
+f7542c06-d873-a3d9-a0f7-575b1cffdb6b,550561844,594908062414157116
+79f14468-b527-6202-1543-a1964f55d9ff,540642817,12086174751616178600
+b9152e8d-0bac-08b3-a438-3822d774e35d,3173043934,17146612110894534737
+7cd7da04-af4d-84cc-5948-4aea91bbf71f,4133303582,6249265794214772980
+66e85c60-ee52-a90c-979a-794dfae2e84a,3165021074,15098315840922491443
+574daf4b-6854-66b6-6940-52d56ff7bf3a,3699507076,15240030582792149800
+b377cca4-fb7c-737f-1afc-bf568c9dfb1b,4180818412,9314800837914116764
+956d3721-68b8-18a2-fe67-2cbe6126336a,2734200501,11939311421997651149
+2ff5df8a-030c-ef10-dba8-5104c9fb490d,2657954932,9974876220286031430
+5153d708-2967-d542-1dd8-8d2bf3fbc772,1601837825,14443842636615208268
+10f984f1-101c-7622-df17-481d768c58e5,2659225543,7685977040459181509
+43db16a7-3f70-9d86-f474-aa936b2e2ce5,1677410014,741313505291103549
+bf45a1f2-97f2-ee2a-b0d6-f51c0bd99683,2204632419,12842839712505660381
+5a099b72-5c3c-5bdb-8fb3-66d59f718aa6,2470667329,10050649877120310057
+b8b60049-a071-c48b-e0d4-6f39457d96b7,4061935741,3390077850430444020
+bc0328ba-8182-d3a3-1727-7988c3b3a4b9,1965034880,16546079950864302033
+4fb60b17-1fbb-6c12-1639-3cce81c8c54f,3266869008,6593435139888124926
+34e35f74-ccbb-fb27-0030-afbc119f3244,2365710630,6267207591198251717
+c2832dbc-b3fb-5093-2f6e-973e7dd13237,4262179248,18331209076828505579
+3b894b61-cccd-bd02-ea9b-7c565738b7b0,2576287335,17104237085365415622
+bcc2ae04-8252-dbd0-27e5-477d869a3e3e,2807200689,1674155549769075535
+d956b7dc-0fec-9c56-f049-175bcf14d06f,2732921968,9803483049000169917
+3faf8cf9-0d83-3eb7-16d4-b6ad746a5a2f,143140823,17467648077877580246
+f8e0495a-6b0f-fdc6-791f-d40f7be5a766,113135266,15116898619470510769
+d111f39a-a1d2-f900-ea89-4ea461e44bd8,2893303977,7545585084890238750
+3f8856ba-5cf8-f94e-d210-40b78f9f6c76,3562622106,13474978134959315430
+a578db17-bf54-6777-7999-5d5ccfcfdee2,1451020056,5255682688648512568
+dead2530-fbe3-ed13-e2fa-6c6e7b551ea5,2534965070,10177106012142247070
+0170db2f-e367-fed5-0c0a-49a1a537be7c,514396147,12920495298052252005
+1f53e686-d7f9-7c69-0958-7fe64291823d,3648014761,8606977323361821591
+714ec67b-7f12-9114-cf03-8d28a7ed10df,2539670178,16531801848157352048
+0c33bbde-7f5c-5361-a3c5-e0728045f1b6,823148917,4548800947610942467
+b4cc29b9-32c7-46ff-c2e4-1c7dbac99ddd,2556740427,14645133991189397032
+be00e467-ffda-ea54-eba4-e3353a237f23,3729327868,10703625334152338743
+024a14d9-863b-cab6-a981-1e6c7a3ae240,1418977942,1375671950117396837
+b4dbd001-78c6-1112-97c4-11e44252e71e,3032800853,10058594414555483504
+c6bb4660-8c3d-8123-4268-489b410d671d,3893204456,5800272639572694566
+b5226861-ba82-3520-2a4e-dd12b262dbbf,1833272474,832599853349401064
+51f3d76a-69c4-ef72-70fd-c9eab8066300,684522497,18315533968627564019
+cf5753f7-ec57-a747-6333-cdbffee21bf6,478173711,6756108020730824867
+825a854a-cfb4-bd8b-43a3-8a8b2ad4e01a,3938780827,16997912671743899691
+1d48a986-bc64-a979-fc24-9ef469cc6431,4055801174,1896736402776072154
+263ef3fd-e894-3268-4485-2d17d3f86f7a,883684364,267813401348783134
+b0687d33-ae41-a32b-6b8b-e49851d691ab,3304222675,15596963247985115980
+886bfcd1-04f7-5643-f576-9c7f60b91c8a,3394352382,11601225832698867605
+38f2d51c-71e7-1fd7-6687-48534446bfa7,2692052946,15007710593005465577
+475870a7-cbad-6202-7c69-4e64eb8628c9,51233340,5236952959984506104
+1cde65d0-acb6-37e9-8ade-58887c1f5167,3324154116,2887009529848633153
+0418836b-7205-10ea-e37d-dfa78f19fd6b,1153977703,13464340829404209804
+340c48d1-69b1-b3a8-5445-d6eebd5d8928,1313721627,16725450717318736914
+66b5636c-1355-27e0-6444-1b47ec0c8b7e,4031776109,11457089252335287133
+2eeae29e-730f-2f1e-3a14-10327cc9a5cc,1564686813,2986969600933807224
+c1d3ae68-b5d6-4a86-954e-4471b9022f2b,3348167848,10230990285827521371
+ae13a1e2-135f-df99-6981-dd8c7ece8d6d,301486618,2615218323087541757
+d69c982f-154b-4df1-8c10-4beb0b86eb75,876924045,13653056798804687618
+d7ccab3b-a99f-8885-d40d-3b954d27d56f,1340964993,13960856954350530946
+2dfde35c-da13-1f86-0e23-80ef859b62a1,3492876992,3993230072656199857
+8916ee36-b3ef-dcd8-6f3e-0a86e2a8ef14,1004787788,8648014989309695841
+e7354dd1-f69b-7e67-2c1f-c190200c8d2f,1020147490,14227115392709829298
+00096822-ef02-a0f3-ebe7-8b6735145bdb,647191923,9624084634011318143
+43421ca8-a7e5-c395-7d57-a570bbbf0f71,3646556888,10720927721723185876
+9e73fd53-f697-5bf4-b7ed-53ad77ecb3b2,2774132830,9405870012537802533
+ac1e3447-d7a3-24ad-ad76-d776c9c241df,1535451948,12020276359818588251
+9bb72384-7830-df28-aee3-6ae0af009644,3195455205,11425042468909774470
+9412c327-dc32-6c6a-5d7a-dd5ae848984f,3990707131,17867872430468434854
+3a38f472-6398-7bb2-a991-998e7983bbed,2659513417,5095844076000818838
+4ec75989-24bf-4126-e429-1759365db75b,1168809398,13171491319369398990
+6e169bb1-bd73-751a-1959-9a9d3d894ce8,122201896,5495304395255264217
+85305a62-7511-5bc0-ce44-84e3202fd9aa,3080956604,15042220008421706127
+cedf376e-3658-2a06-0a6c-9c6275e71993,3601276346,11768247185131711243
+a4017c11-5b05-e1d7-ebb0-9d5fad01311c,3337266132,17972582162377586770
+63de0e7e-45c2-e644-342c-7ef33df4dc5c,2173417670,14786266494743722630
+d807906b-6899-c489-afd3-bdafd53fcdb0,3769897825,4591234414239510277
+927d81da-3583-57eb-b1ef-909cd52c3813,1088372999,2285698060147100553
+c5644320-b064-7e7c-23df-5b48a057d9bf,3297696095,16395737102918034818
+43b84630-00d7-7146-d267-eb180b4ce767,3350406931,15988583759751681980
+450316df-6072-28e8-fd2a-0f98cc2bfcce,2350812289,10123131115754954033
+32883fbd-f239-e892-9a59-2e690667e660,1273418411,12361261160100373759
+30ad857e-1cb3-75e0-76c3-5bbf4ffe2088,3474877707,15710630760686556178
+a73a06f8-bb96-4519-f322-6358960dd7b2,1577321517,12074461189375031078
+72b2b82f-32f8-3e85-6e22-c756af11ad6d,408607879,5897787364749100191
+1633163f-f870-df7f-fc8e-9e08b6c41697,4094889417,12095471224798598593
+d93ede10-d32a-5072-a374-d9769ef0ead8,1643881331,18070565063842652831
+0fc05283-a21d-5dd1-bfa7-69eb4ac26221,920037353,14513680719940563678
+be31169a-5757-2626-3470-744f5aad180f,2217604761,6073897030474993676
+fb6bfc35-0293-cf99-7bb2-c3102abc5179,3187954209,6984707194350994453
+f7327605-76d0-fca6-c08a-9ea392ccc70f,3563932028,16045705138174905716
+eb6ae3ad-399c-7199-412e-9bec0ffa01d9,3497048955,15739753584106362566
+0f40a355-46c7-6f43-a83d-96db07851efa,2535122277,17007067407699359457
+4f3faed3-f747-0bf4-4429-fad0af5efa6e,2817814383,5423566532146320889
+1f87f9e7-be2a-8967-3090-34e62ac4e31b,933690561,17461330815166380340
+0da5a78a-51f4-6446-11af-a8fe0f985768,2106281106,2782455855314975839
+3f9b7343-c4fe-5a09-6efd-4eb9906f92c7,2438940667,18253603062533656202
+acd23650-d4f4-569d-7267-345425d827e9,2911546854,1258107931710301966
+04c2706b-cd0b-488a-e86f-3d918851b414,2783335439,12738406627381866541
+01af3ab8-1eeb-df21-13dd-09f0ab261312,1984882329,13243895640218442655
+485ef8a9-5460-1285-523e-3ee6abd7b7b9,3702319391,2648045445872221258
+69921f13-3482-4d31-94ba-8f1a7a33edb7,2848805813,15734813041880817319
+6de637af-c499-cb02-7883-e9abb7b54b26,2773865414,3271235843367470551
+49d1b6b8-1dfd-2a38-d97a-7041ba23f735,2358563185,16661681204532067318
+080aec87-389b-624a-c49e-31b9f55c8bb8,1071196085,7357367136927645878
+56977c5f-c8a5-b753-68fa-2069aaf342da,355454939,10779829557967408179
+716fa5a2-33f0-88f4-602d-aea2a49569d3,1922524528,17894531988043031243
+13ab0bb3-535c-c9e1-4216-bff91ba8ccb9,3519210508,17150128838279948137
+729154c0-414f-c7f1-f309-69c444dffe95,1997784419,8301962621036859084
+42b3e5a4-373c-b80e-dbe2-c068f868423f,1037807480,5073089550009232133
+79c8097e-f9fa-a79c-a58f-2a366088e6f0,1079585477,5259634345145907722
+bf45c1be-a940-40d3-f4ca-190f03fa1a0a,1818619130,3156981667826981012
+082069bb-52c8-053f-0210-a5678e055ed8,327141642,15309235731985370000
+fd9816c5-a472-1c56-b669-6f87b7ecc5b8,803877120,10750824884036759172
+4224fd51-99a4-2f84-b871-9e87deba0e93,1295929072,6232294353789486237
+e7215afd-b46c-df02-9faa-ecb9436b4d6c,1758462329,2081597094546652155
+d36e3f9e-3197-26d8-fb93-14b6264a10fe,2398834219,7195488635544274528
+86545d6e-f139-46ef-006f-409184b256de,4071246172,11758646342574206210
+fb545727-2009-5091-8b00-3bd8957ba327,3966065603,9193762253973340930
+abe84eec-5e81-5079-817f-1233347a47d3,660737700,295625838109842778
+5952dace-b537-c990-3c0e-466a9791e1b1,3181466598,1146668273251441117
+c8393213-0d0f-0d56-3145-d126440f6fa1,3042187824,5275681189952638320
+55c251b2-0d6a-e858-0c98-92c5b934e2d2,2350307088,2955056764202984464
+53b370d9-fac4-183f-4058-0f55992cbdc1,2081157605,11168025783986828599
+8dfbe721-a3c5-1960-c177-cdbc6dde246d,1860534001,1288706191350490555
+a6f2c299-19af-adb2-8ccf-9cbbdb5a84ca,3876935237,7752887932974366743
+7a6686e3-59aa-8341-961a-30c657bb1eab,740849027,12381638975172307541
+f0b87161-1e26-7c15-c163-07f9abf8f2e7,2055502849,1613404600312589030
+f9fcd881-f64f-4430-a835-91d48370a079,3181389846,5237704563079526645
+f0760631-5757-1901-9702-987f1e50bf14,2195103549,16191589274618707369
+c21fe5d4-ff38-a549-c119-7bce60890b30,695463434,7342144687657047191
+701ddf51-3580-09f5-97df-25aa32591c27,400152040,16654304036923625295
+c27265c7-71bb-626d-2c45-695f8f766877,3759725364,10208472263108878914
+899fad9c-1483-a14d-63e0-fe4c5b57841a,2344258005,7892292254352058814
+6dcc0860-376d-28e5-7c4c-aa55c65855dd,2839864236,11194137703695917472
+023c2b3d-ff9c-e4f7-7d10-1e802e02e4f6,3503778758,4175625918770948363
+8a365423-c6c9-d3e3-22f9-1c0f7ce5659b,1899181468,411820959431894680
+dc8e538c-4612-6019-770c-6cf675fb2311,3277493010,12749605695146253523
+2a9f3565-d12f-d7dd-44e0-c7c6912e7401,1197517484,13544650158067378591
+b3a13c4c-06a0-5e31-6d34-61dac08ed8db,358893948,2154496167393578126
+d6d24afa-f70a-035f-1705-27fec7e3953c,3984100652,14192338390096931174
+8f7514c4-eecf-11ed-81ac-f836e2931c33,393762986,16826882351832994193
+b59cc071-9d2a-ea03-c27d-1b4b2554c853,3585531460,1214544736184936585
+e52a578e-8851-2994-426e-bb1d6d7cc555,2599385021,1558806460486001337
+54fbf17f-b10d-f507-e625-8603f95eaf62,1910761497,3100442963780791704
+aa90dbca-9b8d-15b3-d61c-e9287283f7d0,2301243350,17020326933935196561
+a6084658-c71d-e252-8c70-2682f6b8a8e1,2032931331,8230062369498953995
+0c9e0242-6b72-167e-1829-04d824746d42,3216083875,4109904333878960784
+0d06dd07-3888-93ae-0898-193a1b81eeb0,3081966470,4901994722108431563
+1e3093e0-ce7f-b4f0-4933-4035dbe62a20,1812131243,586181116160219530
+01b1cfdf-f75c-5a7e-3b85-afd44e618416,975017423,16060087854288360962
+cdeb272f-6e64-cb95-93bc-40da685ae103,1606381486,12824557734944836877
+f5eda258-d13e-8c92-213b-d2dec7e1392f,4133657006,3179436567943127671
+cc6827ac-b596-895c-5153-78286dcf00af,1688054740,16285963717638988640
+f8b6ae1d-ca2f-16dc-dfb4-33240bdcfe35,2035112277,15380061662726124651
+89ab61b3-6820-b662-0921-4b37eb3550bf,3973002184,1629647211026755354
+0745a68f-b442-e22e-1c33-453d4c6c6c80,2819003174,4909077043158437860
+67871179-49f3-0990-acac-45befee62a4e,116902533,12416505300405609683
+aa96de46-b048-f643-72b2-92d1153ee1cc,580308674,3530011304804381650
+3a714836-12fc-32ed-1157-0a79fe61f31f,2636983746,5711157530966172245
+8fc4ddef-d162-c6e1-7987-435db3d741bf,1818359317,8866789481398099322
+ee521692-25a0-2d62-367f-bc435caaf1f7,734740998,1472548150682427954
+d29c0c14-dfe0-536e-1f80-5dc8a5f4c359,1406904365,18031846295060955309
+4af6e308-1bff-44d2-3be2-db0b1d6b0072,1566582965,14884994274447160698
+6bc55d0e-85fe-69ae-b64a-e9f040cb109f,695653422,10579512018585564350
+5b1da95c-ec87-393e-dd6e-d543a6fad51d,3564098424,6728008267131073923
+63ba8664-69b8-adcf-794e-dfc706111a64,4021916201,3794037648593876734
+ef89214f-b607-4d62-5907-b9ba8aa6a3f7,2760631343,10884030153681807627
+2a905cf6-b349-3805-7fc0-d9c3062a59b2,1068577640,5444621991865850531
+6a6deadc-c168-f734-a1bc-eb2568abe237,1365324711,17298288517783267391
+ee9fc8e1-0b4d-a942-3994-1191c43f0257,263867870,3900292345369878574
+4a73e9cf-c79f-553f-7c68-7a61aaaee91f,411966661,9935305111671617583
+24313414-4327-8d99-c85e-0a36479a1967,4020060876,744733128594949318
+1b74475f-f0b6-7698-2d7c-3381bb1a9986,4178780796,660836136585613977
+9c3db126-75fc-d3fd-f3df-1ea68d002f76,365729142,16358571747280927445
+f14821d5-f869-3740-a3ce-f1f9043270c9,2214788144,15373392911797519282
+2f19a0e6-4ee3-be26-976a-0668237681d8,4871771,16297007227468774375
+33e0e894-3b5b-4829-44de-603b42329e63,1040570767,201921668043903860
+ea7a8ebd-17ab-adba-29c2-b226b8c32065,898133950,16966458863218400335
+bb81452f-bdd2-f8d9-e594-f27b58282b53,1825059020,16911058742729503355
+061c5095-ef53-f892-4a5f-4ebbdcc78369,2097433504,2481450685479258949
+2dfe0ff1-f3e1-a914-a100-4d96150635c7,1014730363,13401688158282727709
+56806d19-2c3f-7a0b-d8c1-a5d3806e2273,3909953198,5671920226301993543
+6314e111-fb22-14a1-581f-ee933c319395,926715267,9325964658386523806
+705505a3-a605-20ef-4ed0-f54afa59b08b,422726822,13259550061935097432
+f14161c5-d7dd-55df-784e-5453690462f0,3424914125,3145142518707203994
+d5450e20-a594-6cd2-b846-c68362f9105d,1209974624,15892551074345869033
+ce075679-fd0f-8ff9-1d43-42fdc8e9ad82,1990726024,8745345980733466491
+3bcaa620-89fa-6116-e455-b9787a8cfed8,753714885,17784315549828771267
+8a64a577-414d-7fe2-828a-ee0d01298bc5,3563833444,10272158505011380833
+9be81a11-89c5-da4f-5a10-92d10240f59d,4293223819,11576565229881474184
+e24cdd14-5225-f190-ce4d-44696ce302fa,3118729877,8989175280429048627
+ae46a9a7-9c76-018e-9133-621daf86e209,2037717402,12573401190131224967
+26a1d668-277d-2ee1-0869-3750f42351c3,2923590546,8157373892654853407
+93c3b415-8526-6914-ef60-4f38038c1ca1,3154925297,18001141052420803543
+add9a189-e522-d740-d61f-6a9b52c18b98,36086797,15678225684425726130
+2f172f2e-91c1-1ba8-faf7-6ba80cc7fdf6,1290621031,15413469119634790677
+eaf0eced-eb7b-cc6e-8786-78a8c30c34af,1193403812,2603999578389622217
+be0836d0-183e-1e18-e37b-fe97d668201f,1764982770,11956582516866215419
+489d9b5a-3eb6-60f9-4304-63eb2c5946ff,1776961107,10561407033999834382
+5470a1a7-668c-69e7-a356-929ca9b815ec,761215324,12747778104465047495
+e27245d3-76da-6075-176c-5e86625b0e46,281463847,17774177643694775317
+7ae79735-0d94-13de-2b45-d84316bd4800,3245628618,14619208196885250159
+1e1c5c3b-616a-aece-3861-de6e39d4c4a2,763915578,11883887845816460760
+ec6ee56c-11e5-6c17-8057-266e969acf2e,2385029166,16987920065169116985
+441b4c79-eca9-32d8-bef5-733ef73cc3be,3527782573,18034757569692428882
+9b16fe29-21a1-7755-1d99-35f4d3fcbdcb,2752455019,5138880396187316376
+312be9f4-e1a7-7dd1-4702-264930ba3a2c,3435407920,11967327612655970342
+003d18c2-d6c5-469d-e14e-498b5cfaafc3,3899493651,3274836154696664250
+6623b8ea-3075-a59b-256e-f47ea29aaf46,3004830761,6009429803620007906
+e6173b90-331f-3731-2d96-92ab9301ee4e,2759833046,4285468617399906766
+8c0a7b1d-c78a-0d0d-a89d-3f5a262a79e4,3589651385,7665798916861073016
+fe79c949-8f1e-3ebf-abba-e9c1e7ce0f63,363778637,13066959361236283775
+7d3273f9-31ae-3e70-cd11-32e186f7a9ad,4282744403,16192538904708981466
+458a1d33-5b19-340e-8478-f1056af9e7ee,866408669,6114437251127371272
+7a1b3b3e-39ba-a228-03e7-03e2c1f992b7,404259585,16331219213667734915
+76921474-4edf-f1d0-271a-6b0fc98b5410,902277920,15182119977721515076
+46981916-965d-f729-0a0b-da4a48888329,646045377,1565857385174784697
+96b14b0a-e714-ac72-68ba-e71a2c2fc709,3203994754,16145171713218849690
+c52806b1-bc72-6aa6-55a3-a03715d570cc,159651369,7794264343922686866
+6a7af284-264a-5803-43c2-4141e174d0cf,3138319239,3477783993867510506
+d85d9c8e-0046-8932-fa00-ef46251b5515,892193722,15516485407334476865
+9eea3db0-051a-67ae-3a02-bfddf12f968c,503608144,9976650851023862759
+3533e53f-a35d-700b-a11f-85ce5914177b,43946215,17022785530732493024
+228c095f-cdda-74ab-8e60-d152a7f2298b,803028689,13827922044244737131
+200d278e-8d88-c6f1-fb3c-43c44d909764,1973405678,13358694096083892012
+d1d88995-924a-7f54-3edb-f19f1a70bdbe,3993081249,878747166906616652
+a121b799-85dc-3321-9b6b-7349a38baa60,2600914916,9634435570723217261
+dda0fa24-b9f6-1420-e3bf-e24569bda0a7,1500219701,16224310698676940863
+a82a1869-a18c-5c0a-d20b-a147258d9c50,87062912,14539185853809813657
+f1f4fef2-4f99-78b4-cd15-2e0d03bb3590,1133508950,11702121166460551756
+4c6b463f-098b-37eb-bed4-4ab17fbb919f,3972038517,1080550477623198136
+8073c283-4773-d1c0-9933-82f8123ed4b3,1614423233,3377291923803366734
+56a4f9b8-f09c-7610-4bc4-be87e0e3acab,210334620,1574599583206300081
+de175875-3e5e-8134-fe4d-3b26c94e65a3,2185566012,2682922198743806961
+606f2a28-1e3a-b400-70b1-8cfe92fb8a8e,2324199790,7108638073218197324
+a3825e67-32b7-e1a2-2d55-a40e6c4d42a1,526426521,10449943186432808355
+1aae5297-c268-28b7-f3d3-a417e9bf6ca1,386169528,8964546193075531251
+e5d4021f-a881-4440-b1ac-3c0ac44633a4,2168700571,1818764033654961718
+72e30caa-4027-a4fd-7f38-564675cb2fe6,2794921054,13938127051005531199
+5c77ec8b-c20a-7a88-4c54-2c81bb7b6990,3440895468,2441678331380912099
+56d1edf4-c630-5df3-1ec7-20bb4723ba81,3517605614,11280119357448616598
+460aaccf-a01f-46c9-2bf8-a3b3237b7d61,1869266372,7947536699756405212
+dfd69bcb-e306-91e1-279b-41ebef07fc9c,1491124498,15117933611661172993
+112e09ae-b583-9975-e429-e895afba7b16,432143964,4084055234751819095
+18f5a355-5138-406b-5eee-d800efe25b2b,1439359776,8952738674711073174
+6cfea303-47ff-5bca-13b9-df527e5944cd,4292325515,4110287664121204226
+d6cf4e81-3a09-7b47-dabb-a3e5fc70609c,447100752,8705491125216015411
+710f1e53-f285-44f4-d9a3-6fbcacca6774,3822930277,819054995844107638
+aecfd641-e26f-a4fb-06e7-4b9503c36929,1153675739,17044196565452729535
+d498a9dd-310f-3619-d057-530ee9b784f2,2863760795,6784870046086619013
+341e190f-6d0a-9527-6f28-ccb69e8e8a77,444245321,15784337116832852095
+14cafe1d-d294-6bee-a920-f3f03b62ba78,2932013799,5197291858458702402
+b1400242-a534-dfc8-deb9-c27a53241fa4,245525500,1369171948477713034
+e94696dd-bd45-2640-81b8-17f70109d056,1061240289,3638017644176287181
+8f45c363-3b55-24d5-a13c-efabd1017489,1431636163,14634626332745739289
+1c7cd5ad-ffc4-b885-4a14-7b4f7b27489f,3730216304,1761380342352724143
+4bb8c8f2-6304-7347-0e88-a913b5b54e30,1447814142,8473379357423928814
+5c534c7f-e316-b415-0b3e-c6df7527f9c2,2881870587,18128157109968551489
+5f047d0f-747c-3319-aafd-412de4945f9d,1317441579,16157297135374769394
+a34e4709-2034-374e-56a4-ec5f6877f27d,18030801,1739287886390579990
+bbb09bda-f164-e071-a7e3-f80a8b914e82,2928269793,5018359460658801972
+ad6d2d68-72fd-6d93-e6fd-4e43f846831d,329306008,89233017055513920
+64a81082-6e7a-296c-158e-0563cc0c2ef9,371251963,11292839404655357368
+1e9c0ff6-f0a4-e521-3af1-425c545ff46a,1831107272,1374116035005038384
+694e92cf-956b-b063-8b83-811697cf72c7,3103807363,9111370101446118759
+24a7c2de-c4e4-2b59-4da5-9200936a8b27,3163891290,7140946794552451545
+9dae6e5b-66b5-3d32-51e4-a2d748b38033,483049817,2099867094695768596
+cc8d4ac8-e1ea-f8f4-0c42-f5e8fe5d0c97,4262895633,7062305451774211663
+280de12a-bf13-16c5-968c-65982b3aa231,3319903754,13448285641779388474
+23fee8ca-b341-00f8-841c-16cc6b070abb,1935576347,7374015913591743711
+251caa29-d221-579f-f0d7-c3ae61b327ea,3751430880,14640382395704114820
+5ab5f977-f254-4a98-b6f7-e774f7ee4da0,585859746,1480979944019563189
+c4636847-4c66-ddad-e1ae-45781041f309,2127965927,13716827606169327526
+5347c105-04f7-f072-2332-b4206f47939e,3217795053,2146769035357491197
+e0181d61-172a-eaca-7fc9-5f3db875554b,1133086237,352326239720975551
+7fab36e0-c309-2534-966c-035633c8555f,1128126379,3537708285679451941
+11f021d7-c4f0-31f8-6012-4ce454326b9a,1008909937,13171461409403239037
+0a05549f-0c70-2b35-7d51-b36ae22dd286,329060391,1624893244749431327
+c9517357-b326-523e-57d3-4035cd5d32a1,1662309286,10603197325551014451
+8201458e-1038-13ca-eb51-394d60d73a05,657014151,10747635036754687103
+63f4ce3d-1b4b-b9c1-1417-6fd39fed21a4,1791973604,1594783252432922247
+e09f3023-6466-85dc-23e7-7c4a1f629512,5125050,705286646059277505
+903fcf53-6b80-3fb5-1299-c739e5e21f74,1215719314,11629800809516850181
+5db1751e-ec3a-8318-c368-8f8aa1d80546,1751203799,5172519240098773766
+753e76c7-7c90-1754-3405-4044a025ff4f,3555774215,6019799212019199546
+ec2c4c30-4c93-e4f7-cecd-a496ca3b2f43,2263371703,9497276459098433257
+ac3dbb76-74a2-1fc5-e2d0-6acd0535a7b9,1570052627,5458114024981203623
+19c8e4f5-91ac-dfcb-6420-42babfd14d49,2601944263,7938176892291192478
+f5316879-e81b-ccef-1d4b-9cac24d133ec,2964530349,17919593861033640136
+4e929475-c614-0673-b4c3-9a138fe888c3,3083877224,6580262011797795627
+2a173fdd-f729-473d-f5cd-91642115fb6e,3493458146,3278627726039444414
+1cb9469d-11cb-9326-4d04-b128434f9f32,1319445432,6230556501120184376
+c67b7303-d587-c50d-9c9e-bf5ccf360ee2,3020685819,3146104889480342507
+c380628d-194d-5c12-3500-21e20428e586,1065341682,12992115640098638191
+6298bcc0-41ad-dd17-1ae5-233b05b0e30a,4127838705,16515723880770895766
+a25b6740-06a8-2930-e7d9-a3240e4a48a7,1817409909,4780487179597860423
+312dc8b5-7a91-4046-a8d2-9d81890c9fa3,2928789120,5430221681027789869
+15d667f7-1287-38c7-e2a6-e18bfc599812,1473443827,8465779179378171454
+10821f4a-77d8-d4ba-ccd5-8891961a35c8,3733275096,4778856877040597967
+6dcd28fa-49cd-13e3-dea0-e834755d8d73,3362008152,12288214975843421631
+65bd6c4f-5333-25d2-8784-5c564dd5bb55,3742422134,7214730422515363146
+a0705a11-aa76-2b32-052b-b3296f0f89bb,209985812,12956481124024789163
+5ec5a7b8-2a7a-b765-797d-8417fba2aeb1,2948395564,4972033190183057052
+c916297a-9d0b-c21d-1896-e11ed496432b,3926993658,15745158325314409846
+1f41e666-082a-dbb1-6abe-e3f9bbf7668d,628775030,12788702650298293180
+f7f892c4-a8a8-c88d-c457-b2c524e6cb47,533798603,7859253460885797275
+068d7b56-0d63-1781-f0f7-f4438ac53b0b,2098386757,10318088295326101799
+fbf230e1-ba0e-5fb2-8057-7866a29269f0,1655002850,17296424277633860436
+1d685ec1-90dd-59b3-c4de-9ff12099d34f,1000564905,767760830535321521
+d815d805-c5e1-84d1-2e9a-c12c9d8c17c5,2956785632,5955344026221930694
+6fd2a06f-66bb-c215-13cb-53d63611fe4c,1548239952,18181147279928040992
+c90da760-3ee6-71dc-7812-58810d334e52,4017452046,19982325044839679
+e3888e11-47ff-b304-bff9-71dc125d4308,3010776883,1678239848849620383
+03f0e535-7d5e-7637-e831-402e32504a52,2706063233,13067365415577886180
+d6254eb2-45df-7dbd-bb58-8006dc9d8da4,281444834,17457516984813414200
+292bb1f9-ffc8-d33f-404c-6ed628a796c7,1106582080,13582344997851738103
+dcaf05a5-b66a-80c8-708a-2e060f761777,2901964803,8839348132233956348
+2df43df9-4942-7435-9afb-5293f2f61594,1112226742,3503819001249543915
+ed66fa3e-1569-c783-cdfd-e1b670d48270,923022397,13020475411459431822
+fc7b8cf4-e7b6-e8a0-e9f9-9f7c490d5c80,2590971531,12589397530475734492
+0e215e5c-6f83-cf1b-7394-4faa1c44289a,1471478036,16495632795415000702
+910f2fe5-81cc-c6dd-0c00-feb53623e56d,1066440629,11187411059219186527
+2a5a4be0-2f84-7d86-97cf-43a7a2a4eb8d,4099573815,266875782188642194
+5b8c3aa9-6016-668e-4e1d-ea6503a10ee3,1075627807,1527748018568733769
+33cdf022-7342-7578-1748-74485fd3848e,1812438684,6311476246490665902
+92e201b9-8fe1-2bdf-dcfc-f76d1431742c,3894769847,12626141669655685256
+e84bf1c9-0793-4ca1-cca1-c17a9b488548,2746251504,15035159512674676054
+5e3c73b1-9ad8-052a-064e-1daad874e994,2463637197,12856935750655713452
+c921ad4d-8f6f-158e-4199-735495abd8ad,1539258276,6619675304948484833
+34572732-d45e-b689-7c42-474441717cd5,1114529834,14743243645322758651
+36324cda-510e-30b8-a852-808d71755e52,2654704374,4940479546632880415
+12c2505e-be50-1b97-2954-d7be49ee5acb,3521528398,6825977581019367316
+097bd80f-894d-cc00-ee9c-f6e388d80ee0,2889521988,4681659741052686592
+7f3e3f4e-4f36-a3af-d657-3c34312cc825,993114899,17256882573981400938
+daf3fecc-3477-0dc4-d3f1-2143bf794439,1198282892,3121212041798747297
+26871367-ede2-5866-49e5-ea6fbfeb4c8b,246148077,7332064477603640844
+5f9d7dde-dece-5316-29f7-d8ab664331f4,1618160751,16509205555295101956
+e641caba-441f-2b85-0f9c-1dd1694151b4,2856535828,1893702100584964888
+03e770e8-17b7-f1d2-3550-b593003d4051,1388135614,459744040367623428
+c0fd88bc-3927-de73-ad26-2ad11d3c551f,2077504615,5785892764846354856
+90b206f0-e244-2c7b-1560-51b44d7d4136,2331319755,5865284967920187668
+99c760b1-5dbb-d257-3d5a-14df70eb9235,177964295,1206987849628596167
+fd689b8a-49b7-9a5e-a27e-b859cfa1f472,3396440695,9983957956980412202
+36154c6d-cda3-5cba-1381-bbaa491727d2,2049692159,16088045487796731026
+b3485719-b4fc-78b3-16ff-f5335356a484,2278365547,4444770848143695792
+25ca6b52-4516-582e-ae2a-6b67d86b37cd,2691548776,1239064078537844838
+24688db8-5f08-9a0e-ce4a-2161bf6987e8,684341156,16380105212936058328
+b8812fe8-0d46-f83e-6cea-0bd64bc036b8,2065642803,2483254693764758497
+cd476f76-3341-dc5d-a4d3-208ccea41ab5,3680118255,7008878469076716934
+9836d87c-b39a-9d6d-fda3-df29a277775e,3191458671,4883035558754873444
+f57e14cc-1a44-aed1-14dc-0a1a0a759cb8,1818325428,9471979649129193862
+7b9b066c-81df-0fd0-beb7-5e9ff1f21a56,2959577262,1583232928374358471
+91571b5d-364f-0117-8ac3-e93646ea2829,574166599,6586419142837288713
+234a0b62-2b9f-406e-be7b-5a03c916f589,807475346,6406299648542390351
+669af376-2fd3-c554-cab8-6be60479d70c,2330215007,7903808286985666683
+7771461a-00c9-8ba8-ea35-c4b6a18bd60c,1944275648,17166615688858504212
+1e05e6df-1f76-1923-159a-19cab59831b1,684264649,6634830960780651183
+f83d34d5-23d2-9b4b-1873-549780ee46c7,3215618503,16132614267617373119
+e28b4b24-8818-d05c-573a-e36eae4de177,3768261486,14582900024416752208
+97c9ea21-5771-0e0a-d30f-2255572b3ef6,2378472472,9295502135984719050
+22d7a46e-3482-0014-2d84-f84cfed53989,1042363763,13129043138128090187
+22139133-b74e-bcdd-1aee-640ae556895f,1655686130,17091041689596263709
+319ddb4a-464b-6a43-fd77-9b883fc54e04,3022895130,9362919365190154331
+18a3b703-89ca-7c8f-0d16-06edff43fd64,1469392512,9048653523267574523
+a7dd20f2-2d3a-f609-79c4-6a178a2a45ef,1254424989,15599066863424667231
+65b96b9d-ab52-b749-3501-a2e5c5f8f4c8,157897588,9561400841869783421
+5fa17c28-daef-ad33-2228-7c0110bdee19,1527889399,18197548923454810645
+50c2bd9d-9b24-929a-f1c0-9751e550184a,2235401040,17306694294336026374
+e0fb756d-9a2c-b03d-c12f-c089c3d916d5,2469757907,7046652614874196456
+ed70536b-1d14-7e1c-b187-7f2724436db6,2462559213,34708307994809940
+d7308a4d-b3df-545e-318d-7137ab9a45dd,1656073726,2929605213532216058
+360ea691-788f-0315-4adc-8059a0c9827d,3438511322,992163036418143175
+9e22de14-2021-d7cf-dbe5-bd3c7719e7fc,3324828936,12302896445586747320
+15af3b3b-e686-3c58-7860-4be59fe20ec8,707732374,13352200292736919469
+566d5ca4-ca03-04bd-683d-b7c6f9d4b845,764335731,6527582624133562589
+36948dc0-06ff-492d-7ab0-8bc2e4232c02,4003862613,12450953018870311580
+3359b971-9ec2-ccd9-538c-12abcc42c39e,3777667348,14453220141684589508
+2d692c8e-7ed7-00e9-2f66-b2e3ebc0bcd2,95709357,9849713119391174015
+cd181a7b-c61e-8e30-eabf-207d08ef4292,1962853416,14068574499399844388
+e3c9159a-9c28-8d17-a138-5570de1544bc,1380427092,6154801875513725164
+99f9f768-e9c8-5f49-bb19-df2453fa6c4d,2047404948,6547033505589368422
+118ddb7b-cb23-5334-84bc-5ea7dd52d666,2786460253,4358111383443034157
+9575bd02-3f98-2bd7-f3bb-b6646443d54b,3317444881,17384459961240172060
+14a83030-62d9-4994-d924-0fb7fb026655,1478542588,7510619618447643570
+619aa23f-58bf-f62e-6f6e-c515a7eed01a,1974758404,14965256570651245787
+7daf2201-6309-1cce-85c1-f28307cce8d6,3288890239,16171072505393163514
+b9c9cdae-55eb-8893-5b9e-76246721de17,825041185,668774519725607354
+98b8c104-7b18-7487-0fe1-a26ac2a660fc,3896157517,1412254348871151062
+6df436a8-3c2c-7c2f-7ab7-57bfc10400d7,1433961125,2893770629516711309
+639bd8ce-79be-a02a-1a8f-f5f8e43cd282,869394138,13212702835861332034
+5fff9f9b-2bc0-1d6e-163b-994a6cd67cab,3675175222,610504174940546840
+4132e491-7438-dd44-738f-08fd4681a5c6,848842011,17832166420169656052
+bf7143a0-9830-0ac2-023a-1e2662f71c76,3125217521,1046941271634197347
+cc3c2e2e-9e3e-ab5c-edd9-5b2b2a0390bf,1319383472,6103336761986144942
+b5523cb3-7a18-9291-3bf9-e0c9549d6721,1297132182,5040789004303985793
+2d483138-68ca-2462-e249-37132ec7aafb,3771256149,2280308117242812538
+6b1d9e74-86d0-2500-9d23-9273bbe74354,432849846,17561539579945106105
+d9021b98-c106-baab-7f4e-39290da47d21,913040058,6804873716203297043
+d78f12f6-e02c-83d5-e95a-8ac4b5bcf7d4,163043501,7686411660002961724
+3226766f-b789-7c9d-9896-499bf25e47fb,1373885374,1607843561112141587
+9916640a-49d9-790a-6924-83db423f3b8e,2583528605,11684492427703672746
+b6a2128a-fca2-e075-16b6-d764cf1ed68f,2095571211,18060950438520371086
+6d7c9cf9-9b52-3e4d-ffed-dba3385746f3,2090987165,3021688465675077313
+b91c0df1-7ec2-c369-84da-3d115edaa442,1359187745,1998563883945227938
+8c1060af-f3ce-eb3e-9aed-1069644541a9,2351039444,11026587802292095530
+1fad8382-3f1e-2727-a502-8253b2083894,2763888410,14699065390092154369
+6b3db4cd-66df-07e8-a52c-36d94e3e6b40,272801764,9490448281678391486
+c7210bc9-1e2f-4199-2c8c-7d3ba8eb2bbf,973629814,13730039079301058011
+0738eb2b-bc38-4267-241c-06b084918f28,3311743185,760230696428469483
+5703fc80-9dc3-a069-8413-4d2ab0c393e8,1293453130,17304046924718330181
+de9f1438-e3e6-3b1b-a1ac-d3f1fe513147,2004418550,17072795325024576772
+474b3a7d-2414-475d-e114-1ca5180d245c,132527200,8018438544532307410
+22935255-6a3b-4684-07d9-66ef71a39a0c,656562088,16190153879412435129
+e1b81fdd-c723-84e0-ad3a-8d0b871b503d,2669745049,17057486660592256204
+a5f70167-3af0-1fcb-56c6-6947cc8b4001,3852653777,12049222711561280129
+79f8291a-3cae-fab0-ecb2-de87c5a72d62,1632182413,12138856111001188786
+fd0df8a2-e5e1-e523-6b31-dcbbfef59cb9,4143709940,2573027498149688291
+a15f64b9-fab4-857c-e15b-13bb15d504a4,2884354585,12185286898111356327
+da173c19-66ab-d1f7-3f52-e15565c5d437,1793140290,8579274148786266201
+1f0f842b-2e7c-305a-9add-b882f1e10380,2545890604,7249052886733516070
+043f6f2a-f2f7-7347-0b37-73c0e8f71d26,626787892,3482784586754971389
+940a0466-90d5-f5ea-f7ff-63badfd683f2,456140851,7440089986543929301
+dec1d8cc-c0b2-1287-cf2d-e8488f6e395c,1206621417,9119563454024589617
+61317d89-86d4-bc75-3ce6-58048a40d197,3636486483,13379807570890262141
+dc6c3d5a-2f7f-752b-10ff-90d828a491ef,551039566,9550404825547582355
+e7458695-c823-3e24-5c4a-a9e76b6f998a,1737017785,6764030970051074590
+589e9a66-539a-26b2-e955-eab6e8a420f4,2394957689,16871174973431531219
+a49ab484-ced5-cbac-f21c-f2029e50020c,3211240512,17433308634143575657
+91e107bb-ea10-8fb8-44d5-5f18248ac07a,585721215,12288969324028868199
+fd9751dc-e87c-9b6b-cd0c-124bb4422a9d,2615189420,1406400607170382769
+1f2b65b5-0068-367b-f8c7-c082eb1d432a,1943530344,10375431399244377283
+a1158d60-74f6-0330-8c8c-9f418d3c2379,4204922181,17677179276938401068
+fdfe63ce-81e1-36cf-19a2-700563eee9b5,4166931697,13883087424658034748
+5b1e03c6-e48f-ec15-a6ce-57ecc068a446,1355193121,6853145618290287464
+874edf05-c2e1-83c5-78de-11d95d08f0af,285091350,858407571939026014
+2261f6e3-f368-813c-75b1-2d8ddf3d5ecd,4263343000,1091537352561584129
+5581506b-1cf6-90a1-f2e6-eb91eb516d96,1242037256,7129977848262181835
+9505963a-ddb8-bde0-354c-e5e37230846e,146885984,11043187617624636403
+8af8b663-063c-2ab1-f6f9-3a8298199c06,2554689052,15758610066673721870
+0964b258-6ae3-ba9d-bbca-34e52daa1cc6,3732759141,9057365913235922321
+01b97fd3-7aba-c7a9-1e47-ca4c854bfa25,1260556932,5465390380421599499
+009c205e-6165-49c0-0f0f-2bc94749ddf4,1350057807,3589031787181284643
+97b80025-bd13-586a-f7ec-8f5cf8c7329e,1816595119,7391223955453215779
+a99759c5-a967-1fab-6876-255bd125efdf,3808714815,5382178512584955449
+e14ed723-14af-c50c-f882-4f68234abe08,2762225264,2535723337649760599
+e2651213-f599-3db6-c063-9a0651896533,3735401391,2825057402170367368
+ad09f0df-5fa0-7db1-8bb0-9d6af5256501,623031163,1700680548587453194
+c0ad9fc3-26ce-8010-a51f-9b55c2777fda,762999804,11542619611688581905
+8a48c9eb-c6a2-9109-c4f7-e2c56c770b2d,2727890960,17856282754764955166
+11060af4-7d82-c7f4-1f4a-9d303e9b27e4,1470211364,9916473317026439541
+3853a98f-6756-1635-450b-db9318c6ba03,2767252758,15388903300147014327
+83a58d1e-c89f-9a9b-961a-1e0c3539c74d,3463247732,5700993745512405956
+07586215-ec2b-1c36-69d9-a0af86f16d5f,3449408515,9169331795015824882
+88e9a8de-446e-117f-2c09-6db3aac748a7,1856309249,4308100467377855093
+ba2b3ec2-0233-5abb-3df5-59c1746f1db9,774952981,9219024382782728561
+b0ec15e9-c8f0-0e98-a6db-d73bb26dc2a3,2415172073,4932663114515778014
+8050c629-5b8f-0bc7-3b68-f23d29003aa7,2290207434,8275088939164826949
+947f2530-c065-2d45-ac4a-1e225315a7f5,1220009935,8487968237966281558
+18a2dfa9-5907-66aa-7216-fe81bbbddd87,1921049008,844258806187816757
+4c5dc2b2-8fa6-100e-a389-a21e7634b86f,846663984,4726430816061323851
+63afc47d-aaa6-432b-6a66-e836e1d3d1de,3965817769,6207061176182723214
+b84801f6-2fe6-7643-7989-96f1e29bd395,725367711,8058162271260348208
+f8750f91-3841-fa4d-0f32-e0fceb6bd581,1800848754,13011345602027028868
+59b96a70-c7cd-74e3-3185-b6a259c27dbb,158027079,9255001169470020134
+19231d54-a222-fe72-d990-45373c092f77,1794191209,15198995100900802487
+dd553a66-23b8-3046-6d68-63f6f2cb0f3d,3502788338,8810276343812256286
+7db9f121-942f-1a9e-8bbb-a9dbaf38a21e,1602240220,8157829364341438008
+f6a297a0-7c28-3b8c-9988-d70cce4eadd1,2735845569,3701165522169531398
+c65c9c57-bb1a-4641-f514-242c532d50fc,3585031237,15493997888078567581
+180852c7-679e-785e-2b17-596d4081bb0d,1818993603,4387629777445348195
+f11111ed-008c-3c5f-41c4-4e3d3e337851,1337888542,93591349884164555
+75433a01-ed9e-745a-5fde-b4cdfe1d2076,3570403926,5009250844561693812
+dadda9b2-2288-1999-55e6-4da244bc0102,2875291745,3962937184534449564
+5da748ca-207e-ab04-a18f-4a440e183506,664884606,3761471234596277574
+f8f66c5f-5576-48e0-0c77-f4607a16e328,494098209,14789181807068303745
+be4ebf57-8626-2a7c-2359-cb9d64812c3b,2181002160,4528455262540243931
+840d343e-c36b-ca94-e1ca-6b2a09c26246,2949027265,10896644958713393041
+38d63c24-5e83-7b77-ff5f-205ca93b7987,3747552159,17673994916672542978
+453cc8ab-edb4-23f4-c9d8-5bc595df4ff2,1937153363,15440916691381436780
+35bc2c7f-b6d2-1c96-efb3-ea534b656bed,769955759,17043144538395309816
+32866436-3524-fd7b-5c06-08e118172f80,3169678537,15173385002379726503
+d1e6a4e3-2788-49af-5d6a-6ea46e86eb34,751782843,5070176419699831309
+6fb13dc9-caef-ef5e-db57-1fb1fb8dc875,4180871616,10472623595852939232
+1da20e2c-7e6a-7584-7314-0a6b1caf0dca,2895641157,4611465352191038401
+9a2498fa-49b2-c4a6-15c1-32c2f8100a2f,1085566429,16253153075296828789
+80512dd1-3b2f-b91f-b7ad-7ad4046123a7,1355775102,11524429983806314812
+591ae1cb-3c1d-535c-ba82-777d35391cc0,2134384072,8811005389306334613
+fa90c266-b87e-563f-9187-a46098535e41,3051662774,17326981129821272808
+93a25fe9-d154-24b3-d54c-6e63869b9a01,2354105320,9261469154707311024
+79376a05-e325-a81f-e3be-7f339bbb2519,3140655695,10068315858240725973
+b6cbae44-5364-c71b-1d8c-e9a13c61c815,395816812,3099220326608742648
+2aa1ca1c-ca6e-761a-e7e8-2b4e9820cb32,2558946524,5663158128076035352
+1f15dae3-19cd-7393-5684-2986a4faa83a,321747973,2222083107976119085
+b255af3f-f11d-e788-1943-59a344f8940c,2599020287,5924823296853972460
+14f064e4-5084-2af4-25f4-86ac9a57e20d,3435440223,5194063067688226374
+75aa7491-67d9-22c5-cdc3-4375e74114f2,259119879,11017614520151751409
+bca98cc4-e28e-5968-5b04-ed908aff281a,3110538201,5863694606268126582
+55288342-007b-2b76-de77-1e39115a3e3e,3153708209,9288384215735928877
+dbdf09d1-6949-da30-efd3-69375f6f2d4b,1612207938,17015908389604428204
+c6161edb-0090-3d4b-c216-7e8a2e7f4622,2258404472,15096995569572436360
+6a02c750-2a1e-c3cb-8141-26bba2718dec,1760674263,9600480620495535205
+55dd214f-4504-70d6-28dc-b2888e7fd80e,264154546,13492876360805941106
+17453885-61b9-3b4b-6152-91368fb99399,2952311701,16096209545521917598
+c4cfd3a2-c8a0-d04f-088d-c6a56d52e3e5,319953015,477646855648899126
+122b2ec8-f008-33e6-7423-d504ff3a0fb6,869340914,14106691182007632024
+28d37a2d-3df7-d07e-1785-b4879ebe6d4f,3087915073,15895725289869426577
+697c3e5d-3d2e-69b0-62b7-471a6077dcb2,4279648218,8289179260798741503
+efa47d91-7eb4-b3f2-776a-febaca66c52e,773784312,15491087088332111121
+800734cd-8a09-fce5-2a52-9dd314da5cc4,4235938343,16684543811190249073
+251ec225-612d-e553-ecc1-170d641ad734,1460449553,8737854004520202951
+d43ff53c-e347-4228-92c8-c1dfc66facb9,2058731171,3275913437431617575
+b65ec70c-7240-c56f-a1ce-08a0d6f0a718,3497406096,9425455349434942986
+1bbe62d7-5b13-63ac-638e-e44133ac44bd,1614696099,6175810685008906627
+264fe54c-d59b-e5a6-c1cc-0db20eebfa01,357260914,18279198100282448282
+a13fc638-ed80-8a3e-c39d-a963ac7fc2bd,1953536023,903032755313723528
+0dc5a59f-787f-6bbc-42ac-b8e0e0d37e08,4045001060,1624070233125421167
+47768091-2db9-db10-9dbc-66cbcce8d372,467736094,9956823574541165457
+af7d7d6e-af90-f820-7311-14af43e8a1b8,1054291958,2820320171880267827
+bf092d4b-0ecc-c0a2-750f-95089ed6d0e3,4208145002,1091700420007899095
+9865928a-2d41-274e-51fc-a729ca9ec40b,1180631813,4439238272849412554
+d8472060-e87a-bfcb-5109-a0bcf1c56146,3387947968,1937571081622453241
+c29436a7-440e-9d20-14c2-0ef7abdaf7c5,620550667,13690020294885497564
+36caefab-c406-6b74-13c8-a9b9d5f6a6b4,919255189,8724726274129526483
+5ec9518c-255f-438a-38a7-d779bab2542d,4029313142,14715713159060415769
+0c0034a4-c973-fc73-93b3-db8af040a8b3,4126315200,15133289792357997728
+eaba3c01-584b-c9e2-0c24-a5f880a8c02f,3834503785,6108445749499015905
+78bd440c-6dec-4d0c-98d6-145231c4c081,2293819871,2999947501837131839
+d64470c2-65e0-3959-bbb6-c5937c6301ce,726330844,250909798628187294
+1fbe52ef-8092-d9e3-05ec-9318f68f87f8,4135347433,12916690545184455975
+d671042e-1b21-1cd9-b11d-da907204e9ef,3337373086,14014865538879409836
+e894612d-f3e2-9591-d27f-7c942de14058,950638282,11843101924475341456
+f9d3506e-ffe2-32c1-525e-382ccfee5088,1784412924,317649164271659356
+f696bfb3-5a0e-174c-461a-4c279d75483a,3157783909,17189165170543055154
+d3c7a7e2-ef99-4fcd-cc16-c9d89b0aa496,1181851903,14543572958638629074
+949a7ef4-f5ac-6660-b83e-c3ffe87ee167,1861030824,11251440343765102043
+04b8ac2a-fbdd-3fac-9356-9feed7a28a5c,1354638770,3781122959117471102
+b963cd8c-bd18-4534-a2b1-5bd3396bf762,1955542043,346941573432984575
+277e2cea-da72-55b8-df38-512d88a2e1d7,34788028,74166039616760981
+841e571b-d4fd-7618-d65b-8035c7633bd0,4122200229,1359508194733401545
+7599a5b6-81f7-0169-7895-f540bfca28fa,2963337802,16302091983142926502
+0e41ed1f-ac3b-089e-6cca-246689c99445,2894689050,5334472052458810797
+552e497b-e26a-8020-3e3c-e04486d9eea8,3782861778,267065663960224707
+053c830f-3a99-0ebf-a4eb-426524c90a56,1437102098,14684483671021177373
+12624859-4242-a8c0-bf9b-86eb63e128ee,2243011891,17784820492703764689
+991482ae-4182-5b91-c551-75a53a9fa7ce,827922962,16801138290263987761
+0de48e3f-63db-63af-eb4e-e9c5f5a433b0,1505241175,3705090321289767341
+60360732-bc40-1b64-8a03-077101fc418e,1603969129,18283463575436763861
+e27abafc-d7e1-7850-c514-de9629de95c2,2896614234,446643970070397666
+ef5a588c-dfa5-ea63-f550-cb709ec1f2be,262080760,13222125103764478632
+4e9a9eec-6523-3456-c52a-0240fe6c1179,2976217174,10616533482257435414
+fad6874a-062a-8cc5-8ac9-95176144fd22,2020949674,9076527526833628086
+5495ce3c-fd64-3b9e-1404-de44f6f520fb,3928072586,18162692194452284529
+6af60f5a-e2eb-9353-0f13-d75db7ae4e7a,21782369,9866564104766375378
+ccd3edec-9e51-aa0b-8960-4d0feae46d18,1255331957,16774441004887325584
+a1233832-32b0-f24b-5d8d-2c233f6683d8,2440153085,2913158706406211069
+d83f8604-dbf4-630e-c406-1efb805c8027,3041289398,14702961087047897482
+9a459c17-0ae8-ce12-7632-99f848195ee2,2533459401,6252118630208892119
+9382ae83-5d9c-536b-9862-4855ce63e0d7,3489442372,12236428189691406091
+e68f143e-af61-8bb8-e449-71ca6fdbf0b2,563243028,1640336371352507833
+4045d5c9-b2a4-93e4-9d9b-750ef4d9594d,1254064560,17459190235984383388
+539d7de5-78a4-5eed-cf6a-a640976d0c7e,3468639955,15270025943821635308
+b16a7cd1-3c93-c44b-2f52-5af98d711a42,2254753878,9211128509824777332
+235658b1-9513-cf97-e502-66a9bdb8e1c6,1869808482,9190408142012562734
+ecb580fe-b487-ec50-90b3-becdd1c2ce75,4059449584,2555202682521952556
+63e5493c-d712-bc27-8be1-67e9c12ca5b4,943800923,17381882106892751835
+be802ae6-f742-6b77-da06-47f3545a0715,532159248,18346623131180084453
+2efe685e-4c8b-a602-6405-9d53136566cd,3586492963,13432680772563129996
+bbcf7982-2974-0844-0d05-e7d9c8b8a174,862895457,9627331264966589442
+f20493e0-64d2-4f4c-6871-0b3ad756d52e,1097636454,1879559041641992055
+a29c5b5a-52ff-6ddb-ae4e-307b1d2c2bad,3215412646,7732056880250393034
+484b813d-df56-7c2f-7ca2-30dd84031f11,934599608,15262754826818920516
+2e19f49f-1bf2-2f65-52c8-f2358c74eedb,1492488233,13220828348230410892
+fb00d404-6a7c-30b4-e46b-e340572ae64f,223817177,10470971503604298766
+13c95ec3-7996-6477-480b-a28edbf25850,4089118826,15168209547157784741
+9a1eea39-8091-7026-b8f4-316ba0d04000,4220990312,5935164008597181572
+85c75c1c-0e58-e70f-0df1-58ccac08273f,1147388768,1737532438151692169
+89146efa-3ac4-ffbe-d316-21c62fc17bdc,3701000425,14720158175669719872
+61e5db0c-c09e-1aaa-63c3-378f35837229,2771938800,642920359086260429
+f0d43562-9ebc-cafb-5bdd-0f368c3b0d04,1535434100,4538438640312874409
+8e5af502-974f-bd55-68f9-7c6e09d5f342,2512808808,16471513329002461321
+b49312ca-7854-aac3-ddf8-d12b2a04b12e,2683103825,15952350264561986842
+aa6c0af9-1b03-8921-408c-0cb65ede8b93,2948295887,18121850658598335420
+88cf7ecc-2b81-ffa6-3b2b-be7d493fa39b,554912765,14309901337605843687
+1f89e48b-b8d7-37e7-0fc6-eb39e5d5ae24,2815124600,18305892696872997535
+c5ca3611-97c3-35cd-110c-177bec917d0d,1612120990,5394789407610235800
+f2d5eedf-748f-b16e-e9cc-4861f020e2ca,1763090449,18261808167641230040
+b8f0cca0-85b2-690c-89dd-0210980ad639,3512131142,4276839559294171721
+9cda7151-278d-d8d2-7b50-fa9d52b714ca,1837530375,16979357405981181200
+229effee-f49f-0fb9-7660-8ac6f28a2d08,210579368,5671011405555964506
+a896d51f-ff4a-f323-24e5-1635e6a868ce,1969946474,10371402268637521698
+9d095978-0311-5e65-4b8c-ad83a57d987d,524850877,3700398320762052169
+e214c325-8a8a-ae9b-0e2d-1e3d713c2af9,1853710677,11439832751462935589
+3e0cf180-f3c2-37b4-d32b-464dc453a988,1275914792,13664610181854026786
+ec3d7309-94cd-dae0-7890-fa34594e46f7,79660277,7775825384624640177
+a7a33f4e-88b2-40b2-dab2-8a7eb2eb6e56,3333920718,13934049985471468692
+452fefc4-811e-8b53-b794-0a9fee444d1c,3711172480,11613160190265040801
+92fc7630-b308-25b1-f063-ca0a9cf75502,1614438713,10095573892449504377
+34590240-e0e1-1e99-0fc4-cd154f4cea44,4245330015,5832163767830855120
+1e4dab90-92f8-a41f-8ace-0d6d47e9e7b9,511154609,5952876154816677267
+0d1ad65c-d9da-5032-faa5-30f95093e2b1,747596680,3653012857166395095
+34519ae4-58b7-1c94-28fa-f03cf93bc50d,4117018367,8309131132092932064
+1638e249-6cef-17f4-05d9-59d9edd5d6b3,2556443104,11655676904616946567
+e5d37576-db80-fa0a-bdd6-de0cb236abe3,3354968170,14481199412094413308
+22c5dd57-ca21-73ea-89e5-18d1a5e71818,1109441694,17988752359757209303
+21aa88c4-047f-d786-15d0-faeb490c0602,3378358949,11924135610004819307
+ba720b73-f05f-bd74-2394-4ea9204f5b92,3409807573,18404301472097534752
+9552a83c-b96d-c46d-ad9e-bffadb2ad9b8,2005875602,1927120929403840941
+fd67a42a-c29f-a51b-72c8-011c7cbafb59,1550925796,15564258892014929983
+945b1e6f-b84d-3d6f-c554-82a53272416c,642357718,14334479468547562677
+3ecbfce9-64e9-917c-8ba7-4418ecc7a112,2283620112,11577010657544163305
+6f5dd26c-ba46-6ff8-d0cb-1bb415950305,2946593350,14147547762466299048
+4f22119e-a698-53fb-15a1-f7f08ed1bcca,1388037984,4793126500276772884
+ac894139-b526-bb3c-9ea3-a1d2c0254b1b,3885670087,6010342119891124717
+4cbb31a9-57a1-9665-f844-4eb1bbed72af,2298039536,9820533930066519531
+a7cb2180-752f-970f-9989-c3f0b2986d82,3014592618,3852339198140896472
+9404ed4f-aed1-1e46-68a4-d8b7af0a92de,431240087,15035746309193343983
+3a7e97e7-92ba-188f-f00d-a0debe16c318,1642916208,15756330309611153205
+77578f19-9024-c4c8-82ce-de62bb7442d3,3270466086,9540695184035809556
+3a05c523-a414-a2b0-59df-02b4d733a38e,60080388,230487398630610923
+eb5e919f-ad8f-099a-4509-274084a000b4,4090157363,11969037185453477522
+4a3e73b3-4375-4cc5-889d-aca6a6763abf,4198975207,2480700353041626235
+ca5f55a0-883d-2ade-dba6-52063c0dec76,1523640919,11809034602298509853
+36f95daa-edf0-ee8c-b293-18e5ae8cdbbf,1929894411,8750390345923327944
+fcad0838-3256-e373-a3fb-e70bb39c97ad,3576001548,10686655825786615439
+3f185e17-51f7-dfa3-a1cc-0ca8a1e4b765,1809283107,17184834069294914093
+e370e537-869e-4226-c8c9-322fdba64836,3163681570,8425062584887647022
+6a105cdc-eae5-65e3-e407-18b3302f2221,4129403873,11689963825769158581
+695d31df-03ba-2960-61f8-66305253a553,1772694215,5297330912616247894
+07fad55d-370c-02d7-4887-6c2bf6322b96,727383380,15962063080041171844
+b4867090-5df9-a451-0abe-38a1c80808db,2745503570,15050399494994692714
+7eb6f86a-de55-47b1-76cd-6ab6299605f4,4222528630,8578358910725927073
+80e6775c-1693-5c93-7913-4f2f03560336,765579126,13710051958108986138
+9df761aa-aa3a-48b8-45d9-5a693911ed25,1249668721,16114553572809423533
+28f822c7-9c58-59fc-40ef-3227cfc6c439,3431902943,2204774430708898230
+083129ba-1d8e-9174-a316-124631e7fe1b,2103142363,1274641522832238403
+992da769-c0f7-4341-d151-fc6171044af2,4288036521,3840011871393587707
+3ff53229-e354-0520-3595-a80cfffaee46,299623989,2880076917689923349
+e9cb2fce-f098-30ed-2c9b-d50dce100298,2200381348,14573003324868570747
+e287cd6e-2d49-98e7-9eb7-180dd42a761b,226754082,7992664247870424798
+9c187ce5-b732-d850-337e-db6f8f735b1a,886157015,9915221385509066298
+8b04f668-74d1-6a63-412a-0c1b9bc22c4f,394535636,9567881025381417875
+9f20e20e-540f-c683-ca2d-4fdece682038,667877695,468140310109318900
+b92f716f-5ad6-ac6c-8f4e-c82dfe3939ec,2215113715,14678855680857599715
+4563fc78-954d-33c0-a55d-232cc33dd367,3868931190,6037678371718431317
+84271126-9276-55a7-010c-b8bab5e4793b,1537269197,15090650227613038597
+486f6e18-0f68-cb45-06a4-2120d878c400,1496546321,5006473016508130961
+284100fe-f144-6237-4ecd-47be3082c9b8,1630061299,7501230528294399477
+1c67c155-89b4-b410-b0b0-b9a693a0c83a,2895387508,10261501943990575519
+c02510e5-bfb4-2e01-25a6-231830a8d35a,778947181,11261799835607370730
+847e30b4-b7a5-3010-cfe3-2a7452a1b9ff,2705508202,5540266413226375519
+833ed666-a18c-6af8-ab7b-0a603193017b,598856620,10109374834099786132
+c7cbe5b0-138c-3c9b-21c8-550266fd3d58,3413684498,12351054332809782838
+be81443e-37f5-bd35-1a67-ea6883269473,439606527,10137984824833888256
+8abe3edc-75bf-27d3-9c85-78220aed2ccb,4280924530,5937363381598779122
+f9b91782-a693-37bc-e5dd-4b060c38234b,3496841731,17410208312139546738
+a7b7c3a2-7a49-dcc6-ffa6-6d7d5700d65b,3618900056,6213084633681042860
+bf4069b6-dbdf-41fc-f688-fca137832266,3132711126,14897192994320926642
+f6828219-5ed0-d0ce-ad9e-e9384e00db0d,1311674118,8968237225308892126
+f803d829-f551-3821-b411-f8b02e937101,1644976219,16851163679270332397
+8cdec85c-32fb-697a-6314-cd2a03c5e029,4235961143,14226967826074660994
+46b1fc8c-2bc9-7a9b-16ed-05283c99f388,880192337,7485798442492618578
+2ea4abde-a084-7428-d3b8-61e6b7dc71c3,1217635496,18284251272113882625
+35a22fb3-6746-6939-0e5f-c9a1bea5c835,2551190566,8553123293219065339
+bca48a4d-b8fc-cb60-8912-4553578a84ed,89606046,1070980231514437713
+c3643a65-f22e-1b94-44c4-6a4c25e2d2e3,3573424255,10297092659421753962
+d254574b-b4f7-10be-bb8b-28440385b87a,4027727580,18060906610330810177
+1bfc03aa-8de2-65ed-0d53-58cb976c6b11,2568287971,10552849356148760954
+59ca1aa7-6d6a-59fd-ee0d-2b780f7947d7,1569868178,5056630997843372824
+bf471820-1699-70c9-b998-abecb51307dd,2894536989,7999449246535197916
+8ec26f88-ca4b-4208-5706-ae8adcda097c,717235652,5405863155557248569
+e75cb430-fadb-7164-f56d-d9110c861cfc,2598192145,17445143917649342142
+4b580fb3-c411-e771-2ac6-2831d3e79e34,3278102306,1562162875976639983
+8f2e7364-e050-5e28-c308-5e83f6c4eb31,597507146,6534643123888745510
+debee6fe-3bf6-6ef1-1806-0ea84c185b2d,67203936,9881193033061735315
+c2f24f7f-4c36-c65b-18ad-efc858bab8d7,1024507877,15985115356212347986
+70ff21ea-ba63-77c8-65c7-4a511373d8f4,1475146513,11886401096147403771
+8af41192-7586-9a0b-b568-12f7eb529613,1969719791,14114267326838211225
+a89ec22d-a31e-a33a-1f31-22e5d5eebfc3,3656434802,6245552434244988353
+10378bc2-a0c2-698f-6926-3879cda6b46e,2141892204,8075505978440171711
+72cfdee6-ca6f-e080-a527-ed5100076716,32758297,14215933561995006764
+0bdbe127-c7e1-1e8e-c9bf-9190c645c08f,1886368647,924781400600454728
+50192857-c17b-0ee3-0864-eb44a1a762d7,295785729,9245612892392657313
+f88ca85c-275d-ffaf-c81f-a6f4b121edc0,3151354137,15660153768391499093
+7f71acf2-c19b-7329-275c-2976b232e7ef,2630565500,11442999077554890779
+ba153c6e-335b-de0d-65f2-baa1aa22d238,4046973559,2175066200256728413
+a53fd574-d6a6-f336-6c91-f99fe51f13fd,516979754,5339193424259967989
+82bb47d9-5dcc-fad5-cadb-b0fd96aaba8f,237505719,64828887131384536
+5d14b29a-f60e-75d4-e87b-0e0efa914647,1855967812,7090090751591685221
+a6bdcbae-c4f4-a022-73ff-19be02030831,2313564976,11295605096041777282
+24516de3-cce3-d52d-c557-f7cc460592a9,664140090,9410557035886396425
+c21f0610-66b7-e851-8ceb-430f71d929dd,356219909,6016144457097244106
+f51a0050-6b73-1e8c-4fcf-483fe93983a3,1196553012,2857075796064520548
+7a027189-03df-ff67-c867-732657ebce3b,1358810327,17877955950585423457
+b0648bfe-6ccd-34a6-1ea3-aee10d107dc0,3257361331,11384039706064576631
+75d15db4-5de0-9786-6c80-0bf8a43de6b7,1032565914,12128377137913158203
+727d975c-7de7-d0fe-91a8-80f1be670597,1846579858,9006000695047729605
+d11a31bf-24b6-1212-5523-9af5a3101134,1725843830,10538539442910973703
+504d8607-ae21-34e0-4145-9619bcf9b9ec,2225493716,9933097436606141720
+d8a4ed2c-9306-8f9f-1f18-24f03c83c3af,3284462159,4253163113444541956
+8f73d9ef-dd7d-2ccb-07a5-89e5cb81f6b7,1037938215,4274539894391562812
+2a3894ed-7727-6ef8-8500-5e663fbbd245,2576388201,8960421397626823486
+192febd5-6e91-fab8-05c3-cb4713d96b29,2740574103,3828638750405010367
+9a2df0d7-a086-0724-bc69-2a8a8a9bedd1,1802749296,7083202286685094164
+8cc566b6-4917-88fd-1c56-bd44ba56009a,1143302479,17475065815587581688
+39feb9fc-ecdc-4628-67ee-228a40ab6a29,2864135156,2870625931353437250
+054e1214-8385-6dc2-c2d6-4bd8487a36a7,3896382656,13670253443628273028
+9de8e6a1-731f-efae-566f-bb3db79bf25e,3683250722,10590233885000511493
+3d151f67-b693-37e4-46bc-c2366122762f,1894650113,11796385976468038600
+8623ff9b-5767-64ff-d9b7-697fd602da3f,3345212421,15716184764807517272
+4f9d9ebf-2b75-2994-372e-de9b21452ea4,3142682403,18100287171593346914
+335f72c8-a62e-97ce-b573-041c47ee5e3d,1345473543,12526783882999617854
+de28e39a-2531-784b-69d6-47764bb71b9d,3558612914,1827692443623513202
+1f4251c0-9adf-4303-f060-66640964ecc3,851745036,17993325680853068583
+d9ea30e5-ffe4-017a-5e5a-a09190268fc1,2276608182,8762729726638241775
+84e8ff2b-e664-8e6d-1a81-1b05077aff18,2530041743,12147619502342243381
+aa966a1e-b914-363f-41c9-fb474794e77f,3952475123,1588079642848426211
+9bf8b82a-1538-e5d1-de31-383853d94a0d,4121511368,14364956046625778621
+5232639e-fe53-466d-b779-9a1de815df16,3684920937,7069935113754828396
+2ad090f8-132c-58c6-7504-309cc3ef6037,490442909,16986559958781505555
+a745eec8-29b4-d6e1-82ad-2cb40ddca29c,3337535050,13535929911134709940
+68ff3cb8-241c-4c28-0314-01a31bacb9ac,265905081,334714795140228628
+1ad37f4f-cc19-34c7-0448-d6d8ffac9688,4049885770,16405410511462517223
+225747a0-74c0-156e-9112-971ad717c9f8,3840617827,7239741149287833716
+bb2f889c-5446-f4c0-bd6e-35026e1d9eef,2477862981,13120186031756046087
+9aa120a7-68ae-c0ae-7030-123e24c0fdcd,383261083,10534190830273777501
+35fa50de-c295-bdd1-062c-5b8054662f05,2276195686,6685245203794044277
+73cfeae6-3082-414d-f27d-9e0554f59cd9,48049843,11950654869727737347
+44462197-2467-0eb3-43ee-2d34b2c909d5,2272439718,17722985409014282106
+74402f3e-57f2-e249-ed16-c4662537845e,2682114197,6206007326480750671
+ed21a21c-e150-397d-1531-d542f4520f54,2250953622,9924743952373427981
+bc18c444-bfcb-fe72-e948-6f81dcee9ec9,1270665848,13095342991698948116
+c7be0e55-03f9-5c63-f885-508b7ed70e96,1397328752,10274233758056483530
+a3f4674c-79e1-4031-5af3-559ef6606582,3482254680,9046231128418312200
+1be9b6b1-a404-b29b-3c5e-f4155eb315bf,109638320,17174307742268548726
+8814efae-103e-1501-7fe6-b10d27972796,1681899829,179719737771257563
+9172e8d4-6ba2-c475-becb-47770c24b38e,1096245984,6636120474769080220
+636750be-3bf2-4a57-fb19-35f45a152e25,3832267957,15917321637264972600
+1eddbdd0-19e0-c988-1597-8954d23e50a9,171776863,2734845726826618243
+028e8f08-d5e5-ce02-4cbc-c761298a4115,1091641802,16233586575088737803
+c0807a1b-8315-d551-1753-20542efc666e,3460400634,14847444136425169289
+b6d2edc6-7c9d-06ab-63b6-082378ca6ae2,392082804,17091788445352650434
+b7879048-81fe-41af-3172-30a8f1c33781,1908851781,9820409566433789267
+ba78e775-7372-1b4b-9d0c-ed3b5d878c8a,3281081045,10407958760722193922
+29a37c7d-ecf1-8c63-2c82-2da1f716003c,2590968564,8222254365772298030
+8b5047be-3a79-0b07-bbec-5f871ed3c628,253547614,10919825106230440460
+a0a4fbc3-cac8-4fa7-254e-a26088ad32da,2868719042,15681253972702281355
+319fa9bd-f5ac-e5a0-e9c5-527ae3792831,618230930,15739976848006104708
+4b0a8f46-bbaa-66fa-aa84-cb492031eee5,3376330465,5666687797797278530
+4dfb7f41-7e3f-cd5c-2a3c-89976f3a15a0,937351200,17440178066414314762
+2d0b1883-c357-44cf-761a-4e34710ae7af,3246359055,17557505519649744117
+2e077105-866a-a3db-7b83-0229bdef6eaa,2934532727,6643927469382796286
+128fd3a2-2665-65a6-20d0-25897447ba89,86446850,11161276382864594967
+f7ec4e80-8b4e-e555-2c3e-f014ca4252a3,2525486048,1860326623342405080
+ca6bde22-9a65-3147-dcb3-6f0189e3b3bd,1182676051,6271199947850083376
+c7e267c6-c91f-ee66-7095-e575ae732a71,1865971096,10408681195770004593
+76b8bbc1-edfe-26c0-5c72-572c38f2ec4e,205872616,13624925341523628293
+a62f9b81-1e77-0f7c-3a39-a963b4b2dda7,4196787574,3005987602614158533
+2d647382-375e-6186-ac3f-0cfe7c500071,2042368063,13250154140497627581
+56dda193-44ce-8fa2-e82f-3c319f4492b6,1773934018,4405356138774812572
+e817eaad-a600-485d-b097-d21ed75060f6,3240533072,12007553790390314035
+1017f04f-39ce-5e58-c8cb-1d713a72ee29,2932388634,915174524961149844
+73897d97-2a04-9b2e-2b73-39dd032dd195,2147063088,1716489579680737457
+cd2bd532-a0bf-941d-cc6a-e592b839aeff,868531706,8748097318882675735
+29bcd64a-399a-cdc2-b5d8-f505a2dbef03,1844045892,2096429301276343120
+77cc2aaf-5f67-1418-d846-d1aed1ebb348,3443451338,6420437848762666135
+7b200417-f15e-1dbb-a5d1-ce42b3c6f5f9,340720390,1231766265474015092
+59198596-fcab-9e87-fb26-81628dd5a806,974607008,47580048543589651
+1dbaa330-79b4-c472-6d41-742b93f43a36,2256246153,14860934803925299903
+c2721c40-d775-2cb3-979a-a916100a239d,349933734,11031242903184280077
+ee47581d-2fba-0ea2-210a-4b7227cd19e5,3150410591,8808580042357698273
+8602689d-321a-badc-dcbc-1cd2bc54f2d5,3463187160,5830052135462440527
+48f62bba-8015-de6f-c675-1320af2a281e,3875800133,7630332178032520446
+f52b148c-4038-f557-c5c7-786192ec3f56,3638559900,5611911917321478037
+a72c043d-b594-197b-5701-7b0b6ebd5e5e,329842278,17494011635244562920
+465d129a-58cd-4c74-c5c6-f3bf034d0b79,2607600640,15541577368727526628
+75a1f319-7599-4461-ab80-6adc39bc4152,101003503,9202009942207408307
+f978f4ed-fa61-f347-3a74-4ea33feaff23,1636523288,14174985150801454370
+b7bab442-b27d-0874-a675-583ac3b2db13,1616616991,16667753414794195450
+c531f1af-afd3-027f-7a0a-33f0c76a093d,253463689,5046688960719184997
+b8152219-bc7b-a600-d937-56539eed9110,1644518090,13189298316312336414
+ac91fc0d-dff9-ae9a-9c8a-a768da176b56,2662182383,3453061008905418183
+2d167271-9616-20f6-6b3b-c3e8f05535f4,738712028,6237020037471345427
+77c4575e-ff73-d916-5770-f7e3c574e018,1460246263,9853489920832966110
+e2569a34-bd62-f16a-e9b4-75910d8bb6af,719284631,16094017542966345431
+304daad2-681d-7529-df87-03c1b6ae92be,2333553121,49099420273432107
+9018f392-bed7-afea-2cef-112798f79e54,3973958863,2085746600794489198
+dbdf18ce-97d9-7ec1-1db6-90988902370a,1381873698,13183307894038558366
+704a5b23-47fa-c52d-5ed3-8d88135dbe18,3982811141,11917346278219843688
+55229b53-8a13-9698-15a6-31be95787624,2564763378,16797268743077570576
+cbb8a3e0-d160-3934-744a-4bbb6e411634,1100945766,12251888594380300626
+995825d2-9cc2-3afb-3989-8bc6a080bc51,710783020,1943974571630299201
+150b56c3-b5e7-0b94-3ff0-3885b61919f2,2468128844,17218831158789194762
+a7baf8e0-0f86-677a-db33-de933d93cc50,623139195,9105514085878497674
+c91bbadc-6fd0-9a91-4d2e-e867f4a8b333,450149877,18067011604173351941
+aa5a6ae8-1262-dabc-1c7f-f23971f00518,1581747399,2845237881643829425
+856e3d24-def8-f956-93e2-2a23e1b69938,914361215,1669187356115756085
+5d12a6f8-849c-6293-8ab3-676f460d7204,3164068212,14681294556523830781
+fd111fc6-98cd-829c-cc17-ebcd3f896ce0,4233692095,11045405221841204273
+fe6f7f25-792c-33de-d830-4756ef867dae,3596104838,70229460110200969
+bbdc3090-7a5b-919f-0ba5-9e50dc9fa5b3,1298848134,7450209122858117739
+a0099ea4-e789-85ca-463c-c7d65ad7eb04,3616657848,15527803455762062887
+ec7ce440-abc8-5d44-48bd-63538ab6f32f,1945332027,8900418521613917251
+0348f4fe-04ca-096a-7563-ff90bd1fc1f8,2339452821,635269324816005536
+a7cf1185-eacd-888b-642f-fbe0be6c4677,3791672885,4385898630450644056
+e388030f-6a9f-a581-db71-51ead0b8bc97,2899085240,14387522371224742411
+b2d6e930-1b3c-3473-1324-923a48da4cc1,2970858929,12196282111869725952
+faafa25e-2d1d-84e4-b4be-030796279fdf,3000357894,3163216858714143857
+f937f06b-dda0-914e-659b-3fe4b774b5ff,2430776014,12307931841193777765
+cda70d76-6e66-17ec-500f-e4df427fc814,3716077886,300968370853660493
+491041ec-9ac3-14a9-24bb-ae953f332f23,2892650084,11779864925376159294
+60085b33-3817-c0ac-c1c1-5134b4c8d43f,4176958306,11843145863466323109
+ba7bfeae-4b5a-7d72-05d6-57c207140b9e,3140254527,7382915699684007785
+e0d9436a-e4c1-88ac-6147-6eb72489398d,1608331062,15556503764411266541
+80edd1a0-3394-7ed9-992d-3b76d107c6e1,3819524017,285958297107277208
+b1919892-2ca6-5245-6782-ab9ce18daf44,3586201670,14558794439622471323
+cdbf7f1b-0b72-a32a-4f61-d2857fba15af,2424484107,13892030842825735939
+6a2d30c8-139e-1bac-ad7f-6f374148363f,3573102126,662193443552801861
+1f8b933f-8dc0-66dd-a881-e6870e14cd07,2675008968,9506062215208650949
+c50e22fd-e6cd-9314-1c27-e4cf68cd1822,3754399326,2044966992418524560
+d43c37be-2195-f658-9898-93f0673756d6,3063095870,13922741245214755783
+4ca8f0da-835a-1bec-9b0c-cf43bbe4cb1e,2948777401,13960710998680667243
+4f63eabc-631a-52b7-f336-3b5d628687b7,3370327729,15185237156922322969
+70c1ee13-dc12-fc8d-77dd-05639be7298e,867259587,14167854519194096548
+d2c8394a-2a13-ba40-6d93-b9351ca42bc9,644883811,1071973383703604305
+f1e774b0-1e39-f32c-07c0-aba1affdd4f4,957581609,14443902649810163238
+060a2855-0daa-6988-34d6-38636f69a9cc,57117788,529892218337687544
+2214be6c-4831-903e-8b27-dc28ba89e899,2596840612,16522146904343660959
+8141e3ec-873a-e5ca-f80d-74478433204f,2988874995,6265986596329812774
+91ac8f02-db1a-cf8a-4f5e-c3b6c40c6148,909783269,9590827512324327458
+d8710d3a-27fc-7bb4-307a-d44c1b39d568,452277861,5298637057518592819
+c62895b1-38bc-8671-5f3a-ddcbf2bf9b03,2511387310,17278246752391293956
+825461f5-418f-e6c4-b78d-5f561f6085ed,2045975470,7179284975435143474
+b6aed61a-4e75-55bf-2ca0-c80536d997ab,3180903319,2083853685175209393
+18df790d-300d-8705-54d6-c13e68fe4e07,24210861,12583098026777919098
+8ae697d1-7107-be56-5bbd-fb0ec0f56663,1061063285,3895150292991979839
+0f530d16-dbba-2c93-ac83-316d100fd0e8,1163185149,15452054548901448399
+04fb13ad-714d-108c-4f21-10bf69f183b1,2819545010,9847606161887896057
+7c8bdce7-d1f1-6be7-bf77-fede468efe28,2881357172,8251417886059568716
+44444f3e-a579-1650-9c5f-44fa0a3ce5e5,183688887,18289649097566916875
+b997f300-aeef-4732-7034-129564f2fb5d,1616462746,16856156332722835556
+69bacce5-5c86-2e12-3cb9-05a913e7f6bd,2952633101,9917176074884582187
+6e6ba996-f560-e3ad-fba9-a5ae65f440ab,2569290515,8261107302470631899
+86f405f0-351a-059d-f6ec-1248d3e37805,3866416190,5281450177221878737
+18553299-a5d0-47b3-ff8b-0b0325bc44c2,4162171189,1922858194099135285
+9121e702-8823-fdf8-d3ff-1e3d3a5faf76,3913616566,12014668960726175592
+1626d98a-448b-1472-4ca7-275499490269,3689478210,12100517791518258198
+2b9f4f4d-17bb-3ae1-f3b0-bb4e5f53a3a9,2152647767,6019289077157795531
+2fc5839e-d628-2dc5-8787-eb4cfc1c939a,3806185204,16074462719772536011
+370b456c-3300-4abf-bd2d-0045002eed3d,1126560776,7410811336070088440
+ccde1957-0e44-4b89-570e-5d0c1969d606,1541819228,14847003044404863262
+bab94907-1825-90d5-258c-c5ab081bf75a,3831534035,523212829144982534
+03a9b411-d8ee-d0a6-9eb2-584181aaebe3,1942828617,4241776800324953291
+871d02f0-331d-08f8-16cd-271244529493,742345620,9111549388733223828
+f52b7492-a4f6-01dd-a026-2bf7ddb54385,803838244,11324286683877286538
+448bf19c-9ba0-82f8-b9cb-7e19788a4ce6,1550964559,6141953839178595269
+3fc48753-d4df-2584-792d-141eb1be885d,3712375094,17153523033873488619
+b1422f9d-d638-129e-2593-9e1afc103af0,1983233630,5106131338833068821
+20fe5664-9d86-4fb4-3cb5-36c011ace579,1014919806,8462984825905671481
+3de480f4-2aa4-5347-bcf9-c4306b7426c9,1449241951,12214011243252122511
+5168f137-06ce-9936-a493-a732d6545f32,4154973345,2461908712425152282
+693c68f4-0e22-910f-d3bb-5378c984a4d2,2347402313,18299630665953983257
+9bc4dfff-e9b0-d6b6-df30-beca8cec678c,1450002920,11156375727341949740
+f4460a64-4e1a-2336-716e-06ed2a9db575,1526743161,11226754042153445291
+ae81115f-da33-1ba7-681b-229b72d33b6d,2476864646,7245155859954401261
+a43aed50-9b4e-6e18-3f8f-b42589182165,2330428764,14940658043854385311
+c5dbf61f-9f65-65a2-1329-61fe8699844e,2218445410,3397565913169399832
+469ada01-55aa-a4ab-4e22-ecc87c4ed6aa,3167430869,18426265053141843592
+0daf8bb3-8f37-1d23-c002-0e922602bebe,1617150895,10395005881967996179
+9a14fc51-19ee-3348-be77-1b1c8df7af2b,3816543497,14142567117748861900
+cc02abf1-d64e-6879-0ada-43bb502720fa,253765876,8525417786064565337
+04365795-1791-261b-d136-95d73f353e40,2784077134,11057766991147486849
+3cbac010-73dc-4a0b-49ca-a06e2d7fb81f,2532857841,9532259448612101617
+27ca0e9c-f5d6-ccaa-7282-c77d124c7563,789838436,7325074928273301083
+e1d03cca-4792-97a7-94e9-59b3a054ba60,3210826256,6496093019506954701
+d73c906c-c8ad-befe-4c0a-866962b98db1,979431117,4565297180717661887
+0541e642-6a68-fa38-5215-77a3714354ab,3075884685,16952713927981280770
+90cbadb9-2b65-7b40-08fe-02c9be13705f,1137364306,3116526860244134659
+492ab152-0f03-32a0-05e2-7c9358093994,1457883618,14776125324170280831
+192d1a03-298b-49b7-00f6-9ea5343adae8,1724955776,17757080466280885111
+7872d257-b974-4c71-895b-32a0f779f8b6,3946702069,9347087075595464460
+76d2a83c-4c51-1a91-6b72-770a81f09f90,1922859299,5760326853661542943
+c37f55f6-e53e-581a-81cf-6b330017e91c,3589566206,13334228807979128038
+08d210e8-feec-1af9-402c-eb436ab10eff,2831761691,7571913541485575456
+5126dddf-9fe0-fc22-5316-784b1f87253f,790021596,13545765753161215228
+513099ed-57fc-8caf-6adb-f2acb7403fc4,1433647569,10904857175113278053
+276372f4-b43a-13c4-ceec-ccfb90ade039,2405477302,13523075593308873297
+3393eacf-f4ce-382c-4bce-87cdb8d4508b,435066488,351980661570519051
+cca70b53-d9cf-b33a-309a-cec6a6010713,1624297308,9478859845835309697
+b0e59b28-739b-dd8f-c2fc-786f2cce9546,3741701768,8700160520132265433
+9165d0f0-633e-cba8-0dbe-7b82ecec5895,2791635272,6430926164381346165
+2fb1e13e-0b6f-4c11-459e-333f7f086485,551859200,2730643212583986757
+bd980d3c-9a98-7d68-3156-bde5a921fde4,3847733939,4353250156808714629
+0b0a07a7-7853-d1e9-8c38-4d255aa08bdd,1352134442,15769642439844795940
+89f6a321-ab19-acd9-d771-5e7a926c5099,1403356450,8443493520765621871
+2956e0e9-8546-3afa-b92f-48f63190def3,1839600869,2241699471319136074
+e90df732-3a20-9aba-2df1-c1a36e8cfeaa,2337846500,14231410601870856902
+a8c6457a-782b-3f0b-916a-431e104daacf,2625251917,15138069142760940763
+1b00133f-7a32-9a26-d355-7e026c1176e8,1578162621,9792705728541151289
+88502f55-719c-3ca3-db7e-e6479fc98391,4007930094,10480096611801276281
+a5fd3da5-2971-e78f-fb6b-774ab7dafb96,3985739968,10274268175335422922
+0028ec85-9788-6731-5499-80a10eb134a9,4127074029,15483604720818781390
+6f36a866-8e22-2f94-526c-6c3e58666863,592554811,8760551020527851083
+2a49c756-6257-4e6f-b18b-589258013a41,1445367629,10378507262131437956
+f3d9e37e-cc23-a694-0555-410fb46775d5,4074942474,10623401200951337818
+41a73383-bcee-02e8-9013-f56909aee28e,2505552617,17814331507025941661
+ad868624-d602-1806-aa64-5429e615cfd3,3911419205,15680955207180645708
+f9d86022-c196-8764-ed2b-a72cd338cb4f,1603024958,8489720413618120891
+b09e3fbd-e547-a227-4f00-93176875fafe,2334300006,13301580620687670283
+18847769-ecb5-bcad-3f21-d1df32e24caa,2162203037,12481024890800450460
+e4cd9bfc-6759-5099-eb1e-e00673b5ee24,2697594133,12084856428574669413
+e823cca4-c107-d418-7b68-438bfc08d524,1675961683,6755349936849325475
+9d4db966-92dc-0f60-258d-c429e01f41f9,2917663961,4682516297671161237
+31983d79-88b5-640e-aba5-c7e5e78563f5,145117014,1256743118188220387
+c1b46f4c-ec3d-c74a-2afb-ff256f492090,632958060,2492777147064175684
+c9a627b9-45d5-6eff-ed96-aa1751be3bb6,2973797241,11668489595672011088
+fd1f84a9-1723-b5fe-95cb-6a2d6d312979,1100487013,3532680498047249689
+8c98dac9-67bd-af3c-128c-c4ffb01d2180,80577889,11144165477313086765
+12941492-5d8c-ad20-cef9-15ff0fc51770,2749069850,14376375451791105043
+41b22b33-7278-d58d-a7c8-42553952d86f,104910705,16005819863854813043
+17643f5e-c1a8-b788-00bd-8d627f033ef5,89233785,11347001996197740235
+ae075fcf-5291-68de-0120-79624caff9d5,4272347446,13040411052629098437
+e7b9e9f5-8872-ca4a-4d46-ad9e34cb9476,2310972891,13240884232943368607
+6212e63b-dc7a-d255-8bfa-369062eeb252,3839875705,7548200700305151414
+17b80dba-c5d6-4b54-9dba-b7ab925a055e,1468852582,13462013816335128667
+945e3e6b-c426-83b3-8005-df2d02a460ec,1588479934,14966498935189567453
+821fc3c9-309a-5e1c-4b17-61736f11949a,508384880,11439992621462442763
+21815884-6b79-fd56-0156-c185b8ce0e54,2399137147,10700044690003140801
+fe34a13a-afa3-e8ed-0810-fb117bc28027,3630358119,17453715357930904638
+75f77822-b75a-c5cc-fd0d-29317f9db067,2700045356,41223929179759909
+002bb644-758b-35d3-afb4-8ea8f7f32c74,2412051605,14520618875226013578
+f7ec0473-6583-7610-579f-e5e29bf22c2e,4653097,12757366618310559096
+cd7f431e-381a-71cb-29a1-77aa7807636a,2499994720,5271338651485456172
+cd948ad3-e0d9-99cf-64bc-cb91734262f9,1920826917,14877736092359587752
+109de2bc-bcb3-60e1-fa1f-60e3ef7c9916,3008067404,5488144760944108814
+17217dfe-90c9-1d23-304a-f9dbfd5a1104,1486379514,2847244234412338151
+acd72ed1-f8a0-74e4-49c3-a343998cb81e,2544744700,9671483589295557487
+16b1e9a9-93a0-4b20-efa6-2953a2d00816,3781204884,17263908700262580962
+d31e0fcd-2c1b-9888-d03a-94a3f9fc58f8,1595094904,11216716148813457425
+f1f0080d-0192-7404-b833-a8be8ab7ca6b,1675538968,17953667866761339996
+62545447-7c16-97ea-180d-6ae361bab8f2,4149175938,1731114875942212710
+b2dc8706-88d3-d81e-bc23-9b0a1801a205,3193345382,3708199811176519361
+61ab80f9-4923-d135-c27c-6703d83a6150,3881496482,2273030795212384582
+405caea7-24d3-e98a-f375-2147d7775dee,311659169,2411889275701591147
+580af72a-79c8-f795-4188-e17e51ec67ca,2367056046,10184443150795882450
+4d4f5aee-2ad6-728e-5d16-506cbcc22d59,264931952,15105804685394409159
+5c4be4c6-ae71-3a6f-5c90-1a8f76b8bf77,3824208332,4968818610485045035
+78953639-2591-a8fb-c6c6-ea87dad96de1,1686981367,11843400536573495938
+3ae34982-feae-e67e-2adc-abb018753c10,1462614786,7796923710477493296
+ad4a5ff1-3ac7-a2a0-e5e3-516c66a86c64,3452562573,11399216752635318029
+8d83dcea-e443-cd1b-d4a5-e8b275158092,2286020269,2302207304439146793
+e9c6677e-bc83-6cee-458a-d454b3940f28,719577339,5627525801680230026
+3a5898de-7268-e599-f490-a3eb5d52b2b7,1538367248,10192787541021116758
+04da218c-5eb8-cac7-ed90-82ceed35ffea,4159689745,2298183523309259396
+bf000586-92e7-41e3-171e-450efd5c139c,1047963833,16141323951602859565
+225b00b0-9fba-9baf-a54a-43fc5c4b14cf,351277057,9940500385686094569
+969eef69-16aa-0920-ba85-6b7f5d061db1,2207425229,5122613127368849607
+ff7aff79-7f33-ac66-b2a7-453040cb2891,410016761,1576271592936027196
+7813afd8-b535-3333-9aaf-231f9d57706a,2293637534,2350902634921159995
+0222c0e9-7e05-7662-de82-f752be7ee981,186662709,14262082423230041820
+69dcc9b4-5b4d-acf7-a63b-d874894e1cbe,4277973886,14083159852302252145
+04104124-8a55-6476-a085-09cd5d8295b0,1946048921,6793265233501735517
+234fec51-372f-0cbc-3180-e512c20ed7d8,1157744269,8859832828384612984
+3e190d1a-e3ec-0e50-2314-79ca04a7a241,3647559329,13027898367009145113
+3fefeeb7-ebc1-b75f-0145-ffb3580fb0c1,2126198932,12019757535171616420
+a1bbc38c-1417-4f82-2f4b-4011660fb68c,2909651639,7459020400545822107
+0dd06a41-9c1f-cc8a-a021-8bcd9208b831,207061095,10502084338962323211
+72501e45-dae4-297d-ab78-bbca175f3744,2687274359,9229114373887369457
+7aa95397-1e76-2efe-f13c-b60a4494a2a5,520839763,10214098896438305513
+cabf84ec-1a1a-5a98-f76f-6c16c4d701b7,2922942528,14246132435895833184
+6d93c01f-fbfe-ab4e-8009-e258d0f78d05,1429830235,1507929015373627079
+499f148f-6a15-b9e8-6bd1-e55ef67fbd55,3239925522,9678314797521061801
+91799dbf-bd77-96cf-a2ef-75695e3715c5,4233639824,7272470033575276384
+879ab474-db6b-bacb-9f0b-35294415df9e,2276504835,17200155042655411862
+b7c11fe0-f4c4-fc6c-89b1-b06914332914,2658281281,11012833291293179483
+d22e0cb8-dfec-0bc6-a938-29e8d8405ced,2581601934,9824990077160801532
+565db003-37f2-d4d2-ea1a-b86e32730538,1768006097,2199545760810571906
+8954f7ce-316d-9f72-e7fb-f7e8ca18d981,3496217245,12059989059400996191
+48caafca-b675-7ee3-86a4-cafd728ad185,1061754582,10183797467965451555
+a11d3b48-40f5-5dd6-ecec-c4006191ddd1,4081742097,10489783997013388200
+9bf0ba22-62f2-dbba-fa6c-019dcdec59a1,4234140644,16150437382054523156
+d716d92d-236d-88e0-9a45-52d6bb4f1423,2410093594,16577536019213964303
+20fb01ef-8525-5c7c-5ccf-2800bf28f271,1589604034,13170516742422542010
+169c8b3d-5d01-8f01-5667-3f3afd398a8d,3528013683,16731720104853952016
+6110ceba-2b44-1c8b-aee3-62830391aa3e,1943847391,4108697367110503317
+218049db-e208-b6ac-77e6-33397b332455,2017947996,17844130308470909709
+f30a95b6-1402-26f6-679c-a310e45b1bc8,2348208698,12992576868430272779
+3a836581-c086-04e1-5a22-b3bd91c10301,3909294212,6336717678264184815
+36d8199f-8f8b-4d66-2ea5-0d028499cc8d,2283092384,7943264701756949429
+aa28a680-2802-f419-5253-74cd828bcc52,1003155011,4656127897434112428
+a5f500e5-60a1-5730-fbe6-262bd07854b8,546646211,10172076608852012928
+f86252b4-99b3-0f91-4ac1-bc4bd5cc5089,784530489,17090787589450932974
+aa3154d6-970d-ae67-b256-52a62d3cd450,4013336552,13251661245395001937
+49cdaab1-02c3-e79b-df17-46c483fff29d,558470324,12789312404553451356
+79c497ce-e3aa-2fff-d5b7-e5684c5925f1,939629549,15844530091951193324
+4c4909da-f99a-7320-47cd-d434727eadfd,1032760416,9879296212565215542
+7d8750d0-5fa5-09eb-b81d-2277a8f3f2ad,1715821132,16001060957302791057
+db8e3d39-f2b2-8d6d-6765-22dbdd8ba4c8,2230609739,18260596793876942375
+646e88ae-c57c-cb2b-7363-102abf7afec4,3023796824,5253927123786729126
+eb4c6272-88fa-c149-6220-004301a0121f,1379745351,17671973890608681026
+ac335b35-89cb-36b7-d23f-60d0cfc0c8b1,4020011269,3703190659656802898
+ad09fa5e-8ef9-acdd-530c-183a197cc5b8,1411339395,12112772421884332776
+d2d8c92e-5a15-cb22-48a9-c17878d6f684,2226957822,12174965280854904289
+9bc51181-4ca6-b674-3f34-d7a99041f28d,3093389913,7432377908043304546
+df3ee4b7-1cec-0777-25af-05874df79f21,2788978599,3737192936923332919
+d47027e3-cd6d-c1b7-9d61-133eca9ad086,1081407286,10943057691850584174
+ff0bf0b3-879e-1c81-8340-f8934ec47600,370053967,13511707576576248276
+80260f63-33f8-be39-f7c6-bfa07ae519ad,3553676703,11274869952791035658
+75825b60-625f-8341-9b62-bfff4935bbf0,673372920,11700546323101452508
+079b03e8-5e59-7acb-d2e7-4014b3f5f453,297263993,3376067006934848891
+82f8c996-813d-f407-6b00-a6bf18f7d213,3177525629,3988922308686597867
+a5b68194-f765-a066-4029-d610e928daff,2436869628,17942253096708231954
+e40524c7-034f-3ca3-bc5f-e06be221641e,2840563576,3050084860351202988
+88965a15-61ab-49aa-9016-7ec7315cb4ca,1532195959,2814688264228189138
+60468b7b-4031-b47a-eb24-6f19616fdb51,1595693105,3788906783907155063
+26b6bf50-a27c-186b-72a2-9f20fb4dda2e,1766443531,9143670706062057956
+446977db-dab6-801d-feb4-05e0835553da,271964039,1019719987943975798
+43402dd1-f669-63b2-4acb-d4b70e716fa5,3963558934,11561934129047880202
+d7ba20e5-11be-a2f4-b31d-d24e242f13a8,257844565,3322018368679424555
+ce903913-6182-f951-774e-7bff95a2ee9f,2210400724,15088613775823619895
+f486f8eb-0e4e-5639-5922-0a63e84d2adf,4090926560,4499673388628833046
+8f563ccc-9d6b-c8e7-aba2-17e751731a82,628140436,10185900488357904826
+e4bb263a-6879-4c4b-054a-39bb68beb68b,1495438409,17642978943667693448
+187dab30-924b-8ade-3e29-dc1a29f32fe7,1271674488,13063142037799796401
+564fa3ec-7173-ef5a-f4b9-3925b43f5b41,757732527,11229295640526461108
+e9e98fe7-2f35-6362-aaf9-8ee82c988bc6,916568503,9156220115798217020
+d56d4692-6c21-7ca9-679c-f62e99a8d803,3403756620,10834734039962704335
+6c6038a0-8474-1f7a-5061-0d650f4b3e79,1419373770,15848967647693050403
+3278cba6-ea88-da98-8071-15202fc95430,791896788,18115068129381914117
+5ea00997-004c-76cc-cbf8-5b197d0777bd,1698696244,17512346801794347143
+7ff42366-5861-6ce1-324a-3dc1f1a0b21a,323812085,14461773778289094820
+166b77c6-08d9-7ee7-ae77-0eddbf6afbc7,1553645933,3002081941458622297
+930d3b95-1af9-c841-6227-871e4170cead,1049374498,15145416162321824753
+4d13e8e1-69f3-2e9a-2cea-4ac7bd6ef105,1973603689,2612303718338489467
+d9746c28-7941-9475-5a46-b471807e6137,2263956605,12222989062918738010
+638883e8-3d39-e259-064c-149b950cb0a4,3972100348,2076534547914141663
+bffbc7ed-fdf7-6a39-9497-2fa72a826302,1236435861,4948343939105441899
+d49a1de1-b70f-c34c-e385-34ae6afe5aff,4187809148,17458224404727889969
+7af9f70e-4758-2f4f-355f-0f3fb096765d,3599723337,3510472498654285020
+0ef59fc3-9540-c071-488f-629fd40111a3,496405346,187983536796179255
+9633763f-32fb-95c5-ff05-ac388a545d49,1166270991,13394510793620994283
+d8c05a91-71a0-cab8-d87c-811242649ed4,673120524,8330497483691069713
+98797ec0-0237-36cf-ac07-441a3eac4de0,1278267640,14099990280252644571
+66136218-dca9-bc93-0786-0b4dc42f46bf,2214212521,15090421067350208752
+194832cf-3fb4-2ab5-de21-bc2fdddb62db,3503335474,6676025099865732326
+c56371b4-f54d-2bf3-8800-98bce70d28d9,260996486,18303232358130610763
+3e9407a7-5b8e-447d-133c-5c738750530c,695198735,13186684044982416301
+d0872de5-38a8-d2dd-5f70-9f167764cd97,1098608590,11387314526013619651
+54b04a2b-2d7b-a0e4-de7b-ae1f980dae74,605948659,8017817034884633617
+449703af-cf30-3e34-6316-2639a29cef49,1663673256,5786240956686169545
+cd4994a6-45cd-0897-c010-3af2476598c2,4290975673,5013552110108525664
+324e5b0c-0724-ec6e-1b8f-66dbe4899114,1177931789,6652865810588287892
+ce4b237d-d818-30c3-0e6f-376750ad6ed8,2989229757,5804227703550196897
+5a430585-6be5-4430-0bff-412660e99e29,914009224,1862448850446016679
+4d7c3218-9f6a-d393-3a71-24616fe34aa7,2788051977,12757263840688146118
+eec0a3aa-5fce-d545-aa31-be2171318c4a,1777805260,15214793345256406062
+8509a133-5975-de8c-5bb2-0718414afb97,412704715,1883515239967251595
+cbb64d48-ea54-a1a8-326b-05e3924c5851,2486956867,15642525237552691951
+a1e82f61-7b04-e5fc-95c0-96863c9b2e33,2650123918,12438681501633992189
+67d0e59c-4877-67ac-8fc7-5b1b6d1ee75e,1720703162,8251184605333451748
+a19581b5-c698-9b60-f54f-d199d21fa473,3365033626,2430797040594719527
+26ca8a30-d264-30c8-7d19-63594b67aa01,2590996931,15737438737611897031
+0a6869fe-6f22-e80b-a025-b02aa4d7fed0,984176189,14757650562959325609
+668acb7b-d7fc-31b6-d3ab-50a93d86aaf6,1671171900,2640385321645630148
+545dcac2-d932-4acf-1dc9-9e545b5203c3,2237385976,12158390826442213889
+cab0feff-b46d-71dd-466a-c25d91c6687b,4147653674,9200502864134860651
+63fab47d-c55c-ea6c-0201-5fb54f55a871,3233065178,16723430929134165686
+aac279c3-082c-5dcd-ea0d-d15d2f0a09d0,4086780672,8427319576150071329
+acc16f10-a673-4237-f4f4-39ea9bea13d0,2743541842,4477706955728761835
+66df439c-d028-68ca-4427-763dacf5bb7b,2095694862,17183873953284114791
+52bb9c09-5447-9e8b-d752-5d048850448d,3858090712,10441153799417134234
+6c06c0b4-2f54-8bf6-63fe-2b82bef3bf3e,3588962790,9740568805890262018
+2850d5e3-e8fc-6b50-624b-b0129f5cb8a1,1693581415,3875100415723114407
+bb5d7f7b-cf72-16e0-58ab-38d9364ea342,2735692443,14310965353515120579
+908f2b29-0eee-863f-0093-535c04a2f91e,487616141,6874640938673751039
+9ec3f28d-7e69-e2ce-8fb1-8316657a777c,3080820942,16120865348945361036
+26372f06-e5eb-5725-682b-76ee2b92bb7b,973325372,6496407452526267960
+30aba631-9197-e2f0-e38e-bda27295c51b,842517298,5578245040365366778
+6f92d7fc-5d05-dfac-ff5c-9f504029c7e6,4267363146,1742133285909609179
+ca4dcd27-c7d8-48c1-f5fa-acab9924f1d2,1094891647,3496333927509515856
+68dd3640-cd77-c59d-cfeb-8ffa8893d190,617166517,3971136458152185425
+e04c8f25-877f-6db0-8f71-91fc3ae723ca,1076124290,15527347040394272621
+def1bc32-7574-468c-4e13-9a0621cc919f,2806628583,2687814663454197224
+09bd3c9b-3428-5d7b-8d1a-b4450d5fe690,3394143817,3767178423876385532
+6dcb562a-7945-9934-1faf-e47e20b27b85,908310924,2316090231466313419
+33e0dcaf-d718-c509-28e6-1fd52425850c,3448110150,7367765536784957887
+586d0f80-0a49-a299-f547-0f64505ed55d,3393537299,7588219817491946119
+e1dae109-a753-5575-db2a-25ab397ab811,2037608275,4848626467154513965
+1a1ff45a-83b4-b6d7-25e6-c3066f288f10,2072095640,10894558094851737883
+add714cc-3da1-5f3f-c0d1-ed5b46f513bb,562308994,9387316630864151170
+c4d47847-b4e3-0fdf-30f3-fe212c5f90b4,3147969392,6470412891656824684
+dc03cfbb-f334-2072-5b0b-e0eb8ce44bb1,607035887,5650159331147055065
+ed78f3e2-e279-7ba3-e062-102f684ae20d,2812764221,7733931311236221980
+627df5ee-3d1e-2c1d-0124-b97b9986734a,3843067645,428109178161676734
+e758c887-4d7b-4a6c-85a6-54630bd9cf1c,2882813329,13275663852594708314
+85327ddc-8e8d-e200-9d3c-921b4cd451d7,3958355207,16412826176899124243
+5be157db-bc89-f833-7c65-e92304f1e704,945235060,8712072236026353134
+cd2b584e-33f5-d2ea-f6d2-bc3e66df6c0f,3210106026,8301370893585991016
+9d5657ca-35d1-8e40-96cd-011630690cf9,1605830430,7017159443580883631
+511b3989-538f-c396-c902-c27e55e2f6f2,224885925,16939699037268832366
+34bd26b0-e925-b2a2-bf4a-fa80e13fc668,1995093102,2743294228307783589
+2b78bef7-5732-5220-9d50-a2fc0c447609,2229657310,16250068384185085139
+c0080893-bdb1-4ae6-fd27-479bca204f47,2353757312,7430085230799835491
+006b5f85-44c8-1f0c-9354-c4f79fdaaf43,838065837,18211675814775988995
+f37797e0-d09e-5747-e868-66d80cfe3d4a,2871107529,6398817087812681621
+d48bfcbf-5e6c-97ee-55e9-d9da5e70db3f,611799668,17454762165395518273
+0beb984b-6607-b6f2-599c-c418b0c6edf1,165833184,4413064141509092012
+50fcdd49-97ef-3a6a-7051-6a31d3ebba41,2784649928,3578738585293050116
+7e2ab4e3-e9f7-6477-f2c5-cb0812d8b876,3647484532,14341730877788510910
+c1a3a3d1-aca6-197c-9075-8746de395102,2338742410,3277732394539823053
+c82df88c-9798-fdb2-f588-44df44edc30a,162266242,8975669122355650860
+e9399cd2-dac6-5d77-9fc1-682a82d5c4ad,875821631,15253095976772534320
+7d48b548-dec7-bf67-fe8f-9067e5a3bf37,1707275069,13226690840579659791
+9bea2a6a-5aba-be5f-995c-2bad9ba561d9,2476405749,16225572748783777850
+863e7664-eb7b-1a4b-a4d0-a8cd1eac2cd2,2926964781,17605692173790162277
+05d831d5-1232-a300-44c6-f4df94e64f51,3289859953,4670409288755866279
+fe9b7063-e5ae-fd5c-5665-5a399e3706d6,1264168745,4510010737077028814
+3a9fad4a-7829-797d-13b6-fd3118ef4157,2705650849,11452129684456047428
+26d7f5a8-6eec-4885-e240-70702b778e9d,3417377870,13483146645325017160
+c505354f-d4d4-3df3-a97a-fccccd6614e3,724205158,5595699700192161783
+9f9239d5-f440-b6d7-3cfb-80d7afc9eb58,3082655713,13170427220039235246
+eea84764-87b5-d11e-7bdf-6e09d622a231,1899324427,17609249488569930042
+8aff1816-2acc-37ff-c12e-46613537e150,1766470136,17184754979779208467
+dd8ca632-2140-d626-7cff-3fd69860d11b,3904103789,11960969523127394354
+7902e5d1-ce5f-228c-b66e-85afd8f05dcc,1455405301,12268315095197468726
+61712bdc-6c9f-8ad7-3ff8-aa854f3e95d6,2896291431,16294730815984164210
+09b05481-f8f4-e1b6-2526-1ece8ad755b6,3729960570,10405057351157957217
+bb98bf54-b666-9b92-4dc8-00ffa0e179e1,326170929,5788007331236136581
+0053a5e8-d8e8-5447-b084-cde81689f020,965876582,3444288012033256281
+39be71c2-cd52-caa6-9794-2ed600e7b802,596190004,6409211290405119366
+a6c66540-72b7-f2a2-4cb0-b4e93e1b5e3f,2626693169,10219153877662873635
+e2a52af0-34cc-fa9a-878f-a5dfd10af322,207167945,15402395956823819477
+12eb18c9-d155-29f1-b550-d35b25f2a213,319629148,390247250174573349
+30104470-da9a-bda7-9a79-9313e227349a,1646852307,6926755914119814795
+f4fefc3e-c2b8-0cac-07f9-aa6e8b15e892,584809451,18149865959309059691
+3ffde810-da4d-abf4-dc29-fb69b9b51fd1,386247942,2373126224882729560
+938119c2-b7ba-8aa0-a7d9-b8390443b920,456437918,13638789043754111258
+00fe5375-f90b-170b-5db2-edfafc43aebb,1909985323,16759836806408055426
+f6ed07e5-6b77-88d7-225e-b8411d15ce73,403085770,14144978362042634631
+90dd9873-68aa-ecb9-4cfe-847c9a3984fc,234042443,2718766707723609593
+7b7e04f3-4f6b-c201-cddc-4df7157ecbc7,923526062,7199514990691641608
+54574935-e786-87ea-7022-f35960e378f2,1949777159,8843479202698990786
+2b9225b0-77b9-611b-f87e-8c8e42d7afa3,422214852,16330857044000503076
+4b0e5cc2-76f6-c7fd-e8aa-c0845c4732bd,3918872685,9480277906230090344
+ecff1ba1-8218-2215-a039-61ea6df704d2,3040991215,4305751808063572402
+e1793ad5-2c3c-34a1-4259-caf65b3bd06a,2400455444,10040718974037853538
+990ea605-3a63-35d6-fca3-23f00f9a79eb,676150409,4471435217274801097
+f8bc9e1f-8349-c3d0-b11d-08fbddbed91b,3534667947,14477013633041182082
+6f373fe5-f3c3-8944-923a-6c6095c12841,789408974,13153494777857769418
+7d0f8ff3-c85e-f7eb-bc0c-1d76973697c0,3356648015,14821634182087419706
+000b0c64-cf11-2def-dfd7-4e07fd16c616,2727531181,1553021652792264854
+5952cb5f-56a4-e4ce-a370-6600dfe8ac14,1272375682,1589530722495179531
+7eaad33c-3bd2-946d-42d4-5a6193b9ae39,1721863229,8409416373062799177
+4bb10fc3-530d-9de3-4839-b50af5d3f4a7,2083430676,14172554097317290359
+ba85dea3-f335-d1be-57bf-f1720c904c83,1388982902,7192261608938682113
+f1f82fc1-3beb-f303-f217-49deb5af2429,314941475,4914814807836120194
+dd51bd2a-4c53-f5ab-871e-93a9a23c1112,2323658109,8608543825659076278
+581944b3-a5ce-3660-e487-da3503426cd9,1566171373,17822826861904219383
+8dac24d3-56ef-68e8-74bf-0e2412d60a25,951608391,1738106004453243710
+281b6a4d-be8f-ef58-00a8-5b43d174a4c4,25164145,13959930244727102042
+f0dedd1c-8a33-e925-8b20-7e2b6f557df1,1398030706,10411835923992697204
+57a6ab02-4fa2-9c83-be79-a68cf26fe55d,3911554008,17185033725966627486
+2023827d-3785-3851-9ce8-b4e4e9adff0d,1782680987,8347635696322124569
+54bdd1c8-91af-d2cc-9e7c-218689a1f24f,3354733519,2099607553166937300
+430fca3a-51dc-083c-990f-f734d42403ff,1693371116,3080491698609196716
+87f4ed03-a144-bfe1-babe-268fdbc3ca05,92243001,6980341446560743601
+2af3dbc6-8776-60ae-7fbf-7ab7ed47af41,1782612797,15982780579914293888
+7fd92251-b7ac-5916-d741-877e0d46b52a,3580604551,3381211239092655988
+28ba8c50-d291-d4b2-234c-391008cb1415,3422931921,5450390092660028324
+e33be379-a259-fa52-0e21-93bf33c97e29,3075925312,10574748782684676865
+13e0b4e9-7053-6410-ee1d-db33d5d6b636,1031801525,4333611339511443385
+c76a60fd-30b0-f7a1-d010-7ef4818e1871,681908858,187718470084198840
+c0d5db54-189e-5fcc-8ec1-45e70b01e7f0,4068310789,5711100316132797405
+ec5e7be2-1959-0ee3-8069-b31e021c8126,5809570,1527380056727328824
+9ada9d92-984f-6235-3595-edcd63d63d63,739292854,8966694975027701886
+cf6d3eeb-ac1e-f560-328d-7b92dff26110,2591713260,2747297507651123323
+1be51206-4905-7e78-3969-94e88d8ad6f1,2639621365,7327486284428812389
+68e5ed0d-5e55-b4d7-69ef-073a35e34f58,3786480613,17307252311724374434
+8cc470b1-4696-a803-cd8c-08a523dec3a9,2925198489,12797670352221934486
+a90548d4-80df-8fbf-f8c4-c9dcc25ac81a,2141445802,2711276999579578921
+26dc25b1-91da-f3f3-d4e9-a599b714170e,3342517772,345613838378558281
+a0c30790-8fbd-4a13-8d45-0b465f355dad,2485215507,1862976901953942473
+b4f2aac4-d6e2-b4e4-63a0-c073b17f8cf2,4266186296,4931576024122762749
+f575c75b-b8c3-780f-2dd8-77fa2518a6b2,817520803,10316587243339648960
+49ca5a54-0b9f-967c-d4f5-7e308ea3fb70,2028835832,12357722036506170000
+b124de55-0529-fccf-ed77-68013c367b61,722436732,3912854851773909547
+43bbee26-bc8e-5ba0-21a1-e7f4b5936266,2399742252,12676986928622120926
+1f2e0ec7-cd7d-f246-ce23-9cd527ef72a0,1669530558,8843865243248970553
+b0dbae25-f8ed-4474-517a-6ee2c4bc4048,777235282,7591055912910434722
+f896787a-335d-66cd-7c0f-4bc9baf2ba34,3138590470,1033674585023389781
+4491ee5c-ee56-0e48-5682-e9c81e5d7553,2447838803,3882411138460336079
+d8b408ed-f9d4-756e-cfec-7dbb2e8530da,4014672257,1978103081215625804
+ac40bd79-b203-4d6b-7fb9-04c8fc838850,2743588229,9528383438000827250
+158425cd-3339-6e2d-7477-11b5edca2679,1115787344,11033979570326161665
+9ecc6d56-fe56-364d-3d3b-cc76323f3596,1582847505,12285498244966641103
+01d9e49e-d783-b808-e261-fb06eb32e8e6,2157126975,7557371391042638381
+670462a1-dcef-c84c-147f-9e30970cc9c5,2462107425,13561001339340002137
+8df145d2-3b85-d351-9eb7-4a7cd2a05787,919466418,10993035671383922531
+241526c8-6426-2477-c77a-8a479d2e8a73,1367217265,10012423818026077662
+a37b8141-1fef-7c3e-fa44-0e5e1f37f712,3644956924,11565670631675485419
+adc7b808-08cb-e8fe-5b91-dad55d6e4ff3,226549474,6837456250413724903
+7e1f5b43-2b0a-3892-5449-19915ed41f73,884115901,7088977699183496929
+24efad63-be91-d093-d75a-dd177710ec5d,2503282657,17758934954898030435
+952707b9-0e7c-4014-e51d-09216761d83a,475043346,7185962179244472280
+9bcf5c5d-2d16-cf96-1057-ffe1f0641d6c,2289647515,6892383580314869243
+ac38d500-3ecb-890e-adef-d76691299803,1165870715,11955334768936176024
+b0c40c09-6d48-01b2-1530-68a8264cea96,1443108584,7600402560308097624
+79a6c305-79bd-4c8e-c7d1-809c7543fb7e,4156702869,6482032072861767939
+dc247969-7ae3-c44d-01c8-05510e652495,230684734,17444135597573648265
+4899f309-4ac7-3746-d3e7-bacf76db8f9a,2467681489,17549578217791588607
+0bbd28b2-1d57-17cd-4950-b78e4e905e2b,2547090215,7984398712006244679
+e2ab32c7-0f2e-ec8f-493e-3144585e96ec,3824101007,3307269806712882472
+5bbb63e8-c09c-37e9-31a4-8f763852827f,2758435846,10477799627223846525
+e96c73b7-6427-8e81-02bf-69a8305802e3,3308659510,9811868157889357931
+0a86b121-d0d5-ca57-d402-9d6399491baa,679690370,2062444466313059759
+57c940e6-cfa2-4248-a1e3-3c29200c7905,1267137015,18233747280053491881
+9cd26679-4450-2e31-2ad5-1209079cebb4,347603560,7983868370894294722
+d28e424a-8cee-fbcf-a6a4-81916ce73922,377286862,11810140366272160006
+df93d2a5-bf31-c2a4-4de9-e9e5aeae566c,3424362893,12510426713629600351
+5ca09b6d-9d75-e3e7-92ef-91bdb632563c,3993981289,13451446683633355879
+abd8f1cb-27f1-3cd6-5bfc-0ee972dfb7f1,1628648531,17399314532750200820
+e7abfc03-aeb5-1791-553c-1fd65be9cdaf,222232995,8530325689227091831
+07296aef-280f-602e-9594-af2c8be5a71d,2564489141,16231320821301973236
+2fefa3b2-af30-d976-eea8-bf891b46ffa2,1061617804,5897684923574497641
+5642b4d7-ee3b-9c65-4378-03e402c53ee6,3229405924,3682770446813785894
+d664e342-2af3-1324-d6cd-e74e01b33349,4172946618,5316371901281172230
+e73e4a1b-22cf-4f45-1797-38a000f4f2a6,2887315780,17176570590625248075
+a03e15c7-e718-436b-0abf-0e2bf9425576,2267195855,11431034873918060159
+31a924d5-6719-a7c9-2752-a0341e296e0c,381360038,1130708502466914506
+c663acf4-d21e-b19e-d8f1-1c95eb739224,1001021035,12370051353715918623
+14bcc209-2143-5f1e-30f9-1652a3208e3a,1488528784,10662427110228990154
+f224a10e-4c7e-7352-f0ac-b5346cfb035f,1887352463,1843513034817913809
+29459547-57b1-ddb7-e10d-88b67bb8a2cd,46085074,9841136284782636939
+490160e4-9c1e-3ff2-5978-6a94b99cd9a0,1978210678,6886912400731380581
+6c4cb7c5-2428-28ef-e931-f1857aee5643,3065702285,930636943084973903
+3e68dd43-7ced-2aaa-a712-1e6b6fb72706,1029100455,9316967613715950260
+0a0ab1b5-fb5d-7077-b2c5-268a87495cf2,3494322572,13460232595256478433
+20c21b09-5270-b085-29cf-604cee7f4a4b,217124776,1703098828243387638
+3d6fbda8-a108-6c7c-75de-fba01de8114b,1696050271,2782063269894792793
+e3d5fd6e-c87c-b22e-9d33-0f57cf4be013,2596357152,9676415630479503434
+e0e2caa4-ea0a-c118-38d5-d2ecc8257589,3648855188,5038197903470608467
+0131cfbf-a573-81b8-c6eb-9375f30b1a93,4100996172,1914276132764301870
+79ba4477-0526-00e5-bccd-b0c27fcd8feb,3125860498,18313661028418522596
+c2a15f70-982d-2783-2cf0-8314ade058bc,1840654996,2713557271272253904
+426122fb-ef3d-040e-0ddd-ae9f21bf630e,2344818668,15289926774801194679
+ac8a8d5d-dc78-3f30-3772-d233363bff7c,3823812892,6545159937479182832
+03f5d2ba-1381-dca6-cc8c-78ec1c199235,3687256328,12033510926847737472
+7d7c9eff-f0c6-0b39-4584-4cbc42a353e3,2626473696,14613295622696158583
+1f310722-32fa-7bf0-44f6-e320b28650e0,1118282621,13699512989271267036
+622b434a-ea2b-9727-74bd-f0d1040cbf72,3634983091,8130925097275130301
+33d3444a-4b73-d182-d525-9ddaad38846b,2782678477,5667109822235500970
+e25ea6ec-775c-9092-2ad1-7e889cf4e3e0,3053880558,8834136216571578396
+4ef8f69e-aab0-eecd-ee0d-694ec657be65,2921933718,1766752546201356821
+98f0af33-a2d4-1f6a-c05a-15cc92ce439b,948580598,10908238506729111396
+ef131df5-3daf-a015-8642-9d988ac6c2b3,3036412246,9690753360424958040
+409fd46f-fe57-f082-5d8b-dc0b5c09e0ba,3104784432,13823587945309713071
+4e7aadf7-ab54-d074-9bc0-8276ec0e4ccc,2949488360,8558658986017198519
+4fdbe998-e088-998e-5420-71df2b5abf5c,1192033227,16722579062745630622
+a18b7a29-c067-d856-6652-efeecc76555a,4052790214,14670036876636292451
+4d286f0c-ac26-7949-e184-67325f686927,2284004573,8254890878914677150
+732aa5ae-621e-b132-4d69-05b58b84d806,2508577199,12287829591521004509
+c460fc7b-70bb-7a90-1061-dc5fd64ff544,3353517580,13930026895823695304
+2ff6c8c4-7c22-bba9-0811-af152aa815df,1012172574,9239588938133787215
+fd2b5e88-b20b-2e26-abab-fc526f9833c4,1467954379,9482137078889994948
+f9f0ccc5-08aa-d8e2-d3d7-1385d63fb4d6,3122040506,14082350038083779563
+91904129-3530-1809-2022-682229067f9f,2133280604,8199425551986664919
+ef7e8ba3-463d-53bf-9e89-99b662605b14,3039473067,9094117174768330792
+9d01e54b-6cf2-61c5-03de-004baa2f802e,3094614942,12961556655496532756
+15d27db5-3639-f8dc-9db6-7153b4638a56,516308439,15163611982035048266
+cea6d63e-7cd0-3695-a674-a8d34a191fc2,3720985827,13454260025891914167
+fb697242-c525-05eb-f74f-4e26eef72a64,3260817297,1713285469764982755
+56636d08-e616-4dec-31f5-29d90cc22a62,2972965534,10523429751331742701
+54525fea-ab5c-0ece-36ab-ddbb90dda7a0,1765274692,10311689692798469256
+1b4df31b-4dea-ffac-6053-ba42e90d2a49,4126946335,204410267020679691
+762db2a9-5222-c788-22b4-223d8bac7357,1903237218,1755623581023634815
+c3b323bd-6cb3-d759-26e2-8c4059e9c981,646064773,11294283458468653709
+f8a82835-a6dd-b0b1-e44a-d7ae7d2e6f00,2759790249,713180879895760581
+e33df499-3ce2-7256-7e84-36b225a6adf7,3070164242,6294831790968744738
+c138fda0-70ac-0ea9-da44-535be90db897,2371925811,2224567344948160828
+d5b8bd9f-75fd-8146-fadd-68fcb0d9197d,1550568253,6283101631856442721
+48e8efd9-c9e1-0286-e44f-128ffc592062,498856511,16469781796716336888
+76858429-cadc-e463-4302-f7317009f2cf,2350037245,12582421286383140107
+70181020-d5cb-357c-8061-50d20c5cf7c7,3917006196,213811888403439467
+358f47e9-f300-6658-378e-373c4d295d6c,1134645125,16834965532272859447
+72333d87-ae47-7d00-7054-39afaf06f060,1238903280,7472023005937151367
+3a9d4304-5b5b-1d7b-e1bd-87f346ec678d,1376004567,7151959735748072977
+a444329a-a742-cfa9-324e-1ca31317a237,3164471442,15826425424708156549
+f6c1d75a-8b75-99a9-c6a0-cf073a466758,3915882628,3965579166865593079
+51283652-e251-024b-cf96-cd438326fe6b,2589149818,11568535586045594626
+63f609df-8c71-67f8-0dca-5098a203eeca,2240502333,1175376974726093863
+7219f47a-6b3f-312d-9201-4a1670105eeb,344814964,1484959214903548947
+c0b351c4-0386-255f-6a38-84f3bf2b8496,3639306219,15429706775412741259
+4507b8ac-c7e6-32b7-ca5d-3fc70fcfac7d,680540128,10524263227727076290
+e4bc74b4-91b0-1365-8269-b02e85fccae3,2057819219,9140223055465480806
+a9abac19-b76e-b35e-cd3c-eaf94b19e162,2120528719,12667261529792064173
+70d2a608-e20b-76e2-1d7b-773bf6db193b,1895120415,1605347844514255889
+65051ab5-c0cc-318a-fdd3-e88a40a0c2c5,1380764244,6053353007132873104
+810f5ab1-134d-b92e-9d4d-e461fa3c3868,501961270,8404366457772767659
+a0e6ea08-94f4-3d83-00c2-cb7fa8073d0f,2389357237,674508101561640436
+8effdace-04c6-d6a9-f89b-bef5681586e6,2228916488,15556170571645754223
+6d54523a-6b25-566b-5b52-4e37ae87022f,2575604594,15588935905587211067
+b2abdc24-e174-1387-98bd-c3e5b83795da,4275376988,325134998173079626
+52a8b715-bc82-2a6e-6516-14445f20d9d2,2476685115,11368244507420049083
+181267b9-5bd9-b75c-ee82-4e0c979aec18,2661764635,4579288587591136769
+ddd07676-6bfc-532a-80c8-d4bd5ba20ba1,363043569,7773614510618602511
+f78eb8bd-c2d5-9090-8d2e-9806e9d7975b,452023051,9939191656227905900
+793c8dc3-7a6e-9362-4f7a-bbbb5d559af3,1193283937,8973516802299771472
+378d15cc-e31c-be0b-a8b4-f091e962947e,4079097081,6051255288251668860
+3f7f6acc-064c-dbcd-2ea5-bf9e069d1f69,51587762,1262599380885118225
+9dd7af5a-d1f4-51bb-8e19-d4e150e7c5a2,692078062,5731902477464667362
+94fddd80-0eac-ca5c-5541-396eccc9db74,1176900900,6231404405596641582
+92b5e955-9425-79ee-824a-06227273fda2,2893833407,3757965644358867525
+ba456f7e-b0d5-8d8b-ace7-9d58553d1cf3,3924730761,6118699615143417726
+315ca404-078c-8122-df23-6de4ee24d97f,1800336427,6140985991650070004
+97c8fdb4-f3fc-aa8e-dec0-43ee203d86ad,3414594592,17715632043076643781
+a95f126a-1f69-6e74-a0b9-42ec35a4c026,1003824877,10150199743590510996
+0dda1dda-5563-c524-c7eb-541b93c0fc25,607219151,16299764791283721862
+49acadcf-ebde-8103-fa06-2d1b2774081e,296345791,7726180171136624040
+4115022f-158d-c5de-a9f3-aa3a115beefb,2615767694,10447795990288791148
+3c22848b-26ab-06e0-0bae-f5255474fbe4,3401518673,12321883831402902142
+d0944640-5347-21d5-5a31-a5de5204fc29,905471271,6325883108430620150
+87aaca92-e1f3-b9af-1a33-adee9fdee497,423187505,8230363301085262155
+6a4c79c3-d67d-cbb3-5686-014b1291b477,1946153773,1367551304860779365
+e29f9abf-9209-5b92-336e-ba1ed07ea4ed,2850513882,12514260230256253409
+99f8b6d9-614d-bb36-984d-e30e194f938a,1099903002,14115935024213305138
+96b5f3fb-e8d7-2083-a5fb-23a9fec56e8d,1036365108,4804404135805763188
+b0fab80a-50f8-100a-5cc1-d4699977a127,185762254,539758465207483052
+4cf08bd2-065d-004e-e3c9-638058cd1561,3317818795,9040826725275475709
+7035f488-b19d-98ee-5d64-63e5b23d1a2e,2415060349,3170263448524650469
+a8173a2e-5b87-c67a-638f-f705cf305eca,706934458,16131175305292302353
+3ff7af2f-d479-0b73-3489-57454ebe3755,1080500254,4369173864680770033
+dc1f4d99-8393-9db3-7947-32d9bbfe7eab,3561074673,18064063150430799712
+1c8fb4f4-8165-2dab-fccc-b7356c6ce28f,129614349,5786045305527975192
+b96ed10b-84f1-8bf7-699b-9560038ae279,3338933756,12913003367291826793
+3407d49c-4037-3083-60e6-a4b047fbe3ce,2541391221,8426890877063170065
+75ac9ae3-ce68-0321-c1dc-d2df33d36939,160963207,3582129711025417409
+8f5bda7b-8908-8ecd-9971-417ea1d50a23,1793221922,6874952084193261427
+bf070418-a0ff-7593-326d-8008b2fa20e0,1806659802,15492546176359446441
+60b34ced-5be5-5cd3-136a-bed6d7f0470b,2304597756,3775968449340018800
+f4facc5d-f0f8-f155-0cc3-0174dab217b2,3004028573,14854376882560039407
+64212fbe-3fc2-79a0-4107-6919b282b2d8,2224776315,497863211433085327
+a5b0a0df-b97e-3dea-3714-b0a4b1f0eaa6,3324965059,6687995386769890395
+4a22e5ff-5aea-189b-291d-52c3bb594306,321207261,12263563525186667396
+c9e3a3f8-97ef-57b2-e3db-4e650cd664b1,2039929614,8471653401667407507
+7a32ea86-8301-1e3f-b296-5dc3f8decce6,1334223535,17863888425484852797
+168a0cbc-2f52-e59c-44f8-95df3ce835d4,2963443248,9508171106384472137
+5f5382df-ea42-a2c4-db4b-fd5fbbad36ab,3683241489,10567293260478445127
+08fb36f3-1133-152c-e8e1-fd65574bd63b,3110316167,11553232769752884904
+306366d6-615d-a3dd-84ef-d0a5654fd040,2864022940,9710982662805788763
+487b2eea-cba3-b43b-7d85-639769526809,809102458,16002185104833007863
+529894ca-74b4-2baa-fb6d-991d1c7b697a,1267221963,12232836257093068617
+fb8c630c-8d1c-6471-a344-062d8a29fd10,2066262406,11221828856137220580
+92e333f3-f7d8-06fe-2e4c-abade8445a61,649054922,15161048931386048571
+b45faec9-7037-0342-475b-94d81e1bb0d8,2245303970,8263036108048847301
+943ca196-f95e-f406-f530-462d8bd0266b,3706804064,3510626021424737514
+0cfde78e-cd47-e145-80cc-2c17cd098cf0,654421362,8276748853263507871
+5136b385-2fe8-7c32-3485-3c1187424640,2635094790,15086600531549333839
+376c34bd-8c9a-ed0f-64bf-c9e471c8b6b5,3533542982,8854017067147544766
+ccf359ec-7fa2-e095-9eb1-b53b9130bf0d,782921919,1774814049930303431
+25e35bc3-f2d3-32ad-63ca-2da086248592,3606312172,12808806303625203601
+3859d7ba-8b16-9dc1-56bc-b75c2435d109,2932219673,12067602357409572891
+81ed1d56-8cd6-7434-8108-7bc47d453592,671914817,7448876760924284978
+81c6e9c7-5c6f-e154-3b53-39413cdd365c,652659674,2963062780569567894
+80f1f9e4-60fd-8755-084e-3f563a279df0,1065565079,8724516643295740030
+0db3c0b4-5895-a3b4-2dcb-ce69237771f1,3116442061,10609842292846196322
+730e8f8b-9a98-75c3-925a-192cd683e83c,1060337210,9592977352180894166
+dfc5ef5b-d327-c09a-ad9b-9653ff020458,3609874479,7770083209700338337
+00d1699e-0247-29d5-513d-1ee00f1f8740,3890702277,1899075025846980757
+2a75f25e-0a51-0aef-544b-0906dee03a94,934765808,4436695181530579469
+e526be5d-e1fc-9601-94f7-592519713909,3112014825,14296185647799772180
+be526686-9a7c-56e4-cec7-773010b5e291,1899726109,17694525819953881769
+8e419ccc-324c-287b-5ef6-cd8e7a9aeef9,1393327558,15175122859201013190
+b17d40a8-d470-8e18-69d7-c6ec7e688a88,1187649910,7996778358544578101
+b92328c3-3b8e-aca8-87c8-97d65f696750,2983658877,8372193240720367840
+41c7e4a6-4eae-d393-7496-966bf101503b,768192516,9259784834856329317
+09c32da2-5a14-8e5e-1933-5562d4f6bb86,369590464,9418242405044812441
+3011ac27-e1d1-f673-b21d-9a657edaab28,2378199669,9087592186166383323
+b8d49272-5416-9a49-a3a9-e154be413b9c,2092496303,13669838128465135036
+2c4e306f-af0a-7212-67b0-dec20b4c1c92,420827968,14368641684481302299
+d98ec251-d18a-ba08-d49f-86a5d9324293,1110258600,17761754149416752764
+fb9d4cb7-2674-5cde-12f5-73dc80c8592d,4194823843,4006356046647095469
+236a145c-da7d-ab2b-d82f-66a7e8e031f8,402164066,10155475463004394590
+99c91755-da06-acff-086b-c766176f27e2,1238775292,11286629113552371025
+99783090-c639-311b-cf67-65cc928b8906,3608779579,1154128281538601869
+e9ad142b-0e9d-4cc2-d64d-c09c66db9257,3569243814,6151780083183189635
+a2ed4d82-e462-e31f-4f4c-d942415296ea,498757936,17400163025329489690
+92c441ef-a779-0ed7-7623-cb3cfb3cd516,2381605156,4791972424943967046
+c0d72283-e3cf-65a1-55e3-1f19503caeaf,917728420,8676065427126791989
+16ffe583-2889-8a78-e720-68d5fd05d9cd,3640107801,17288453109730241531
+e0643c31-f440-24e9-adad-606989faf9b8,2821742431,3064860203336526201
+5aa7f5af-9ecc-1488-5200-24459b08aea5,3075263983,8658816291248368927
+c45cde4d-4e68-c13f-718f-a423ad48dae3,3352918136,3551253646717993040
+ff876fa9-bc96-d803-7266-afeac745cb46,4280948349,7888458314545086487
+a73d4a1b-bc25-cdcd-3c21-c24bb5b1f6f5,2283899108,11620676566193258881
+bb9944f2-cc39-2e2b-3e13-d10a00844022,2045957731,15040945681319430491
+502a16fb-8c37-f7d4-07d3-6090e75c19f6,3569656295,254547536865627517
+43c22d21-ce81-0e93-05dc-bb0c50502246,1839913032,4508479503471070814
+b93d57cd-cb9c-e8c7-290c-50f52d4432db,2310045722,13593462543389895054
+cde70511-f3f2-6f9c-037e-c0e3a9ce6dc9,596791415,11982438880678602541
+8f5d0d6b-b7ae-1647-b57c-a6226bdc0ca2,609733100,10238871442940882224
+9c958fa9-d4b5-6812-8a90-c873c35ec0ea,2157905063,12021093508659385610
+c0527f0e-e266-3daf-73cb-6ec5838d9860,506171501,610963853643951791
+8a7b87a0-3557-0f87-0100-3a38222b524c,1964574600,7561149540587251644
+cb05eaf0-c472-8fb2-a8a1-0cb177fb5960,2907643111,13446559365918626380
+60cbc5c7-8170-ef55-9a35-393e8cde5939,3414253006,10737090918725909171
+f343b8dd-06bc-1345-9966-fc88f65baa3e,827937116,13231002023085104764
+c49dee46-ac57-321c-f396-9a47319ba957,922205567,5743541288462491374
+4d6787b3-001f-de65-0b25-47b7afacd3c5,1173779525,5328926168812762901
+a81b9146-0940-db87-d721-97b18234db23,3013071410,7565915384805405856
+3f0919c7-6159-952b-e714-b24f3e48c0c1,4058819592,9372973748107449378
+8eed938e-5916-7451-518a-fd4fdeccf4ad,297372035,2197968179986161282
+180705c6-509e-06c9-49c3-16a46cc37a37,4278497149,6380045463536899799
+376f8d88-40a7-6d37-2ac6-837a99d7a1c2,1352235273,13123803611668327108
+644b19a9-73ee-3e70-9a0b-898003a7b8c5,279770049,11796723974585569657
+5e3c64f4-7360-790d-9ac4-18a6f74c18e0,3376908720,10675601753088772516
+6b2d5198-47a6-17d1-b592-6d9ad6ef8b21,3549584220,3779765980000306316
+d1832e62-9ea2-5bf4-5390-03678ce6ef8a,850969741,15502980809635425866
+bc64dfc0-26cc-2039-f1e9-2d821b2db391,1507226268,1279881154839920929
+558588c3-9f5d-4016-b30c-791e1a21274c,1581078407,12599733473337050310
+a70f7271-e384-4656-d8b0-7c88c02aaa4c,3082784261,1241268172454929393
+a3193b21-e2bc-d497-6e60-f4adc87073ee,3471091390,7788229228343953512
+1c3805a5-cc50-5dc7-501a-228692fb89ed,2958034300,7600840158423440662
+db699be6-95c9-1244-1f3c-2477604a27c1,112788240,474565602667869389
+607f98c2-96a9-0ad7-4ec1-2b589edb2944,3011689509,4501864458658210635
+12ded67b-77c2-60fb-c4e7-688d793d6019,2578068006,15043205928764372881
+e8b02b38-6c98-c9f9-14cb-dd2b43cac644,3574549036,2501956112881348134
+9d8ece11-f152-9098-87c2-5767db40eb80,4165013419,4485975330757095626
+259b2014-3c87-fda8-a568-e74a1750ce4b,77266138,18324000945190107398
+ad7d6fd7-748b-e29d-33f7-12637ade775c,3180714143,15182825901712469002
+77ee4ae6-6ed3-71c6-b9ef-bcc4add7f1af,3872825369,9768593506565601176
+0cfeb00a-3540-ac1b-5298-b5fe279c29f7,3596762020,388751433879529674
+753753b0-c9dc-c3ad-55c8-df11634b2951,3764121427,5425559377977804367
+6fa06938-26ad-4476-ef0d-cbcaf1d408dc,3701888239,3908077560680975270
+b9cbf651-4789-85e9-3223-a8777f303186,1015366228,17565324300123602911
+4b662f9d-8949-b4de-aaa8-dc014732f406,225256406,2218825005706917505
+85e30a09-1b7c-2463-c524-91046ff83ec7,3959443506,11045688953778583426
+1b17414c-32fc-7836-841f-9ed06b8e5a48,65481320,17626611653676763085
+3da74352-ec87-865d-1a08-4702d59638a1,1262012767,6180532634058407793
+b8a4e5a9-ea65-4a00-5c35-85e4d679be02,1858540460,2142670621678195270
+f3ad96fd-ef8b-90c2-9d8e-19952a3cec37,4092919512,13147640397131488492
+42f6a3f9-3d35-20ef-0325-bee87c5d81be,2908693193,11795983330236440032
+f64143f5-e6f5-3d42-7f08-0116ae78fc1d,3309304083,12202003467536064355
+0d4573b4-7e54-a019-d0ee-0b3cd7b92fea,3929325638,13999079593799428252
+dc34d877-9956-62b4-32bf-2c3927dc9938,898200676,3346310395914714538
+0b02d28b-d5eb-3092-23ea-8cc7ba199b50,1822075412,11899505505826722683
+949a65e1-c738-dff6-f99f-79145b6ec1b2,1719560499,13786876796376109467
+cecab1c4-eef7-6417-95a5-bb612d1e6cae,652751487,7282226450786856539
+5c75ad40-9f38-1dc0-c6b2-410d6bacb4c5,3905984679,12271121681252131706
+d1d9f80b-0fb3-7b40-7dcd-e566efc85d7c,3952782162,4514809109616136883
+771f8a30-7006-8097-8688-2b1eafb77939,3718452834,534053745708613770
+d02ead34-0200-06ab-f297-a9129e377f94,1489419945,14464201561565036558
+57da665c-eed9-7378-ca51-60cac196769d,2468999579,1909006789533118104
+98fe9ebf-b7ef-cda2-b1e0-31cb9aefaf56,914882958,7655286001917434196
+39ce5ad9-484d-2ddb-a86b-85a7d21702c0,2317357154,6957042201864658160
+5378b398-f2d3-8e09-c4fe-e9076cb5708a,90318667,17962603984071165983
+1c4057e7-c4fd-5f38-2736-ca140614dc26,3746178569,14155626316338994108
+15dcd6ea-3550-5440-db3e-dc35ff2b67b3,3887319855,13043494013792351755
+4cbae4b1-56c3-4bcb-7b40-b7f51d136eb7,2728699303,1463767629400191766
+b7698a26-818c-3f7b-b172-a86a2495f278,3912921069,16577111699917913503
+1337e45b-0a93-55f4-bd2e-0e576fe1b209,34521601,16622758909814137864
+14b30c88-5852-4d23-e992-37afae03ae89,4219069922,12618611303190259187
+072f91a6-216a-f91e-8224-b4a2b9d10c06,2041867887,16143914970090501909
+4bf1c072-e6a4-ff85-bc0d-7568a0b03e5c,2642837270,7716004377884653355
+4530ff34-2121-3dba-9c6a-0b388272cb1b,2810409026,16753709777182534339
+f056c499-6086-b211-46af-57a966b46aab,2577365793,14272762365628425182
+a29cb478-51d3-74ed-37ce-acea167caffa,2162152753,18358905133110522820
+8e43765c-a039-1a22-eb70-32ee00cddbc5,2975050445,12795529546155986074
+70374f8a-8ff8-60e1-c9ef-89488a580b9c,2310846037,16920149413416979243
+7abe1ca9-c933-f5d3-7197-f917c83defdb,3235919484,10853316200366628237
+d3a06ec4-0047-3ea7-aed2-fa94e4ee9822,665177028,9582754843344906380
+b2828386-291d-9428-5e1b-e0ee68688401,1327816338,16297017005035468023
+94fe8e80-7f1b-7172-a637-06a7ead8a67d,3604368325,9933505939904475669
+3b657788-fa01-762b-dff2-38f341440869,1457717072,13118313142043254145
+9fc7e1f9-3dda-e428-5413-6c7f8ee7d04f,63122722,5865522199311830883
+ef33a040-99cd-8a90-bc9a-845299524717,3349737365,9999997252056038618
+0982ee18-f6c2-bdd1-34d7-52fc5428fe8a,1641853397,5525616868650209428
+0372dda6-81a8-0970-be4e-f3b499a91d95,88290275,4924294060688643698
+32d0230d-fb7a-8bf9-0c6b-6a747e9ba79e,2348796760,5674140788184984117
+eba3bcf4-e5f3-ed38-2ed2-8bf9571b91cd,2593904518,6063376176588764631
+c1ee018a-5b23-bd41-4f3d-3a4bdf9de256,4074359412,5525216524511290650
+a3f7648f-af91-1a11-a83d-1eb2a30a1777,264209389,1795908572330338197
+2d5534e1-4299-f028-4db4-ccafe5b3d2df,4076150020,14906246438261807612
+9738dfee-d30b-ba5e-5492-c38fce78e5cb,919063126,6041247734221071930
+9a56e787-4b56-1733-9fbe-d1fdf5f19295,1089618733,7903516791317946723
+4a395a6d-d784-8ec7-1f36-3fb4d1ea0fc9,1626863354,6327341495370818003
+dc197585-7f2d-f49e-aafe-acf4b6c8d167,1112886138,7996142713988254739
+5789d5a9-b2d2-03d1-4919-1ee58a345a6d,3827841219,6931748795319397411
+b53f3b15-6087-880b-f51f-76f844c4f936,1380965708,5123295314946384795
+d4aa836e-5da7-fe98-643a-bec96e542f8f,1744888442,13897392286284505174
+aea7e50d-8482-fa27-81a3-63fa05d345a8,934871867,16954455940494464719
+99fb3efd-67be-b43b-07b2-558018baa236,617215479,3476267168387259356
+931c28ab-69b5-7f5c-649d-901bb8c4e67d,2410954631,5344732938200587994
+f55fc40c-d809-3982-35d5-97a9a18e8422,3264726987,7274693870444735109
+fdb3713a-ea4f-274b-2ad9-3c2565ee2560,409624853,10938328374033809185
+b0552ce6-6624-c7b4-839e-69bb6315e5e2,4024770313,8353886260447811615
+07416e57-0b43-bed1-ac3d-3bcfadbae828,3976074180,13873694967122849071
+2b478d43-18de-75a5-4364-bef53c611a91,2269830786,8513021449221665067
+efa712ea-835c-80f5-d1e1-1b897be0ab34,3388561659,10688659264767789452
+986d5645-abf1-35a1-2f10-44e4ed02fb52,2650506065,251281604293097113
+1917bf17-f93e-df01-1797-755fd9605b08,3521967056,14584341704875131815
+e2398f4f-d984-c84d-3c47-acc54b620756,3042446048,6740884887114622806
+2139a6f1-a161-c520-d88b-005a62998f6d,4225871444,17661610784845129462
+27d57715-dd84-74a4-32b1-b30e374a19df,3480696023,9494791012518120380
+a3e24228-71d0-ff0d-3f25-319b712b98cf,1460672593,8233359593362892044
+f81c0ed2-5e40-607b-1e87-b97da2998a10,3437294407,10613746203027998159
+2c484aa4-54ad-837f-ebbe-2e820a4ca190,3273841519,14149099329404100823
+0bd0ad52-8b75-e60d-a106-a198a70432f6,2982103860,3947864227279189461
+7dbc812d-15ee-64bd-9f81-4656f75eeeb2,3668235614,2069506025400791166
+20434ab2-0bec-5bf8-9547-92c86f7fef53,2917575582,10486620406083638571
+f669326d-6783-ae91-e393-20228f35a741,3363180612,6118724995513310687
+476d04cd-8ffe-04c2-b50b-da7b33c8e0dd,1373945244,11689838426891114786
+0367561c-72e7-1ae0-b400-73d4ac32cd01,237411769,17953115899636310252
+b7b23d9c-1778-bf90-c9a6-a667655074fc,2619442652,10216664435845439978
+ba105c22-d0ac-d691-901a-a1fc84e1d964,1924921140,5577437859000513728
+86ad4d98-8698-83ad-1c23-dbeeb8ac5651,137553899,16692361525514661391
+decb7249-c53f-0b63-d52c-f33149aa2cba,4166072129,4255450487466935450
+a031ce8b-5e64-f497-f401-0dd3641c50bf,3960968984,14895863674532994966
+fc2ba094-99b0-44ec-352a-899dd50f81bf,3890613588,6460421446073946546
+0e190d97-6b16-aa7c-b80b-4a5d4ed7bc09,512897357,1006127868683817206
+b36c6960-f306-f5f1-2782-f8756500358d,496394949,10081889777028647829
+bf00e15a-86c3-d64c-9021-4f4a5bbcac75,4009543967,9006240560493875393
+85f81f22-cec1-0e76-544f-0a160ff5c1c0,1989528830,4525936557559950616
+c177abca-c101-bae3-4dd6-a3cdd4a1c972,144491379,11492601549889342389
+57065daa-0687-2488-2f5d-3cccc8740666,1872858880,3801535313709826824
+4b191ece-db53-9fc5-6bbf-7e7bd7fbbf7c,3966625158,7296274793743160560
+97bdbb65-a70d-7c40-b6be-07dbe90ca8c9,862429393,3359757631263920494
+2f92306e-5a77-df6e-3529-96f7e61dfc2c,3169706636,4754503545948669602
+8bf4d77c-8d48-9cab-80e0-6a3499c8e5ca,222379202,619161532154011473
+188e6c7c-5450-9b76-b411-64aebe1bb55f,136722546,13303870561174735650
+053cc0b5-ccb5-f65b-6165-af49327df9b8,3016974985,4711963118921087927
+3b260187-d55a-e6f0-4bdb-45ea49cbb6f9,1335999536,3745926891244987816
+49437978-6090-34f9-3b4d-18228e00196c,1779417301,6124561495655013807
+cba331a1-68c6-2daa-89f6-4a262ee3a675,4101957623,10691622988769177457
+01af705a-aea6-2427-9a3b-2834db1ff345,255370155,6720521604500010988
+18ee17e8-8341-9d34-c690-7c70764ab14d,1660997791,15420812483628476374
+b264e9e5-d866-a48e-cbfd-a71502003db7,2785884548,3597142644080636470
+b6779682-a413-0fb3-851e-979f2c445d3b,3009339090,15663501856851780276
+0abf428c-a8cc-9b78-205d-343480c2e5fb,3598514519,4339590241596655385
+bf1fef71-5fcd-7131-65b9-bfdbe464181e,2320866112,7008982255263389366
+be0b5ede-59f1-24d7-9311-484e7f978b7d,900843157,1575856013534205783
+d427aa8b-159d-98dd-50c9-e5ea908430f3,1532591688,4781552548205921189
+4587052a-de60-9a62-5290-c3f14dfb9630,1550011528,6524885355643701364
+9d7bd0f9-2b51-4bb5-cc4f-8ee4f4fce84d,2683579822,17673671752769462217
+610e9b93-c64c-3c81-f536-1f201c596946,833360611,6696145517149392765
+49319461-1462-97e7-e8a1-38e0126356d6,341595482,14691478522541239969
+1d066da8-041a-2962-126b-f616dc891cb9,3621320949,922139248010590117
+b56b59b1-b243-0ce2-36bf-5085a583714e,1419315725,6952737183066831869
+b7e49fa1-3a2f-904f-b932-91f8bc4c65d5,1907722203,6043115179061499895
+5e8595fc-db0a-966b-8556-51ea824613ba,107141408,9279990536697285407
+c8004454-31c9-30a5-0525-515383b93da3,1841311648,4224387487619019579
+977f4f17-d096-55eb-69cc-f2b8bd71ae2e,3211014470,6824718401755262156
+44fb8c28-af9c-6501-2e44-d4f10c3ef302,1429452602,18385647592988809142
+aee29ff8-e25a-f618-455b-2b57a1be0fee,1011107120,14237914683618138239
+6fc2af98-f4b2-501a-ff5a-ae43b4f6b9d6,36666444,5168645210867526750
+365cb2e1-5e1b-1acf-1684-aa9c47613ea8,3799388880,3462362806519139377
+bdfd9887-9bb5-e446-ecff-81e973f51f56,3212932562,1581067223081982235
+f0d7faf7-9ba1-bb91-f2bd-0fbf61e05cf0,4265915963,5993038394072155333
+0f1ee53b-bcd3-37db-4bc5-312b2d5c5048,221675528,16879494389191609066
+499a10a2-e82e-176b-5704-76a16fffb856,2696859007,14589077719184413567
+906bf961-86b2-af67-80f1-73bb93b83db9,3755040974,17711778665751275329
+486b2a1d-0b04-73f2-ed42-c870a647d704,508162777,15508402813754407096
+3ddcea13-f36b-32b2-3d79-33c296a7cec8,2106916577,1797536272788381824
+e0d855af-c054-a6c8-a472-876e2fa9f0f7,3225367212,14205693510324957428
+ee8bdde3-a81d-eeaa-e983-47dcd48b691a,3242417490,16481783298866416915
+b871f447-b697-c888-2e20-e35517aa4595,2788666446,6739544995975555203
+ddfbcffc-2d75-347a-a1dd-665a349fde0d,2605234939,16688397956080314182
+b22eb6ee-06af-429b-352b-10fd0bf94e9b,2606601913,9260161792204097167
+9b67a054-f9e9-4799-05ce-80d750746ee2,297468842,9409280802405255404
+189d8dbf-1bbd-a6e6-fc5b-96ef8660ec33,113748225,2100399774195691978
+ca74ad0c-7d6d-64a3-6d80-4b8fc2c66e96,3376321204,12239245348100860517
+3aecf038-7718-0025-0e76-fb5e0a4f69a8,1710463043,18322278206472222846
+b7cda042-5146-ebad-0294-8b39dbd18465,2974500796,420789294272596656
+fa7d832e-ea56-ab0a-dade-82e863d0d2dd,981117327,16980598090332653921
+c9c05e82-7df8-da85-117a-3aec64b9949d,2501311149,2965263145186891405
+bc16a891-4d8b-b1f5-9171-77a23b818a54,4113858026,2278498068711357768
+9fb7f7af-41e5-1262-d4b0-959436dc4d21,1349715381,8997951184482859010
+acb00b92-0b43-57e6-1ac8-5d0798d521cc,3913364267,1601515320421991580
+2d60b254-cd82-2a63-3aab-7343df951028,214739778,14186352827048188611
+218f4de3-625d-5796-f159-c10cd7782051,538485565,9825784567215509815
+e43cfd0f-324a-0072-5993-ea92fa5f9a4e,1954387721,1168662243691851120
+68ceb115-fe00-9959-b8c6-6e011282345f,2817634233,11686757727106768498
+9a77e7ec-1d12-fb98-8a9e-ba0d490b6713,878521527,15332868812009849017
+c3b7efa5-a834-589a-58a7-aeffbdcdaccf,2728455203,4841820963265378949
+7445efaf-5119-1eed-4e28-41b2eeb4cbf1,2222124353,1173493725190307336
+ceeb4d7b-510d-5446-67fb-5731f5a5f9b6,3313262110,7511865279645070319
+fe13ea20-1713-1928-5dfa-2d080f5358cb,2132666089,18399852383436728776
+629e61b3-7f60-2d15-dcd4-abca10c4c022,4214294785,15573163349798971295
+552a808b-a47f-be18-f6b8-48930d3e018b,3798949457,11165074757244367419
+21aaa47e-de05-9c71-ac8d-0722d92ee222,2009748794,879338674480931997
+8c2c165f-fa16-8ed3-5f26-e2b12c27f732,3029188772,4354460832522024773
+5eaa4e32-e215-7e1a-7eaa-91ac95d5bfd5,1214279868,6332910727280056801
+eced4e70-fcd5-1c12-ba72-2c59d57d4984,1930427683,12474178498075710975
+df1fa28b-50a8-415c-b89b-84349b65d479,4250023368,16910798091752544126
+f93647dd-17da-20a8-5473-41df5745a9ed,2282130202,9752846859602063175
+15f45a19-91e4-7ceb-d119-01274fc5faff,2435206962,9274127377150549952
+7cd4d486-128b-3a1a-a3e1-079003974d27,2100757552,2862759050526103380
+8a1214ae-8465-2090-5cef-57e7452b44b8,3067001737,14634178073895818308
+b2b655fd-11f8-67aa-00fb-3758d36ed608,617786736,14875453123615595777
+25c4f2aa-8ee1-cfd6-45d2-89ed565ee5b6,202042549,18062513648941039961
+a4e257df-51c0-3b7c-b637-8e95efcaa12d,1468008146,3349804864911055970
+2f65b2d1-cf10-b20e-4d03-739f4febf475,886458346,4639461710289559193
+60adc996-18d1-5fae-87ec-7fbc456f73a6,601726824,13216175738346407066
+691b3eaa-514b-81a1-55a7-8c21fe687130,2502488440,12378823439495911375
+d8315297-6928-5f6f-9574-ae5c94cca95d,4279568537,4052959905354768526
+bedc846a-049f-a1d6-8933-1c6956e46a03,2408852233,1394662542534439315
+19c747ff-e222-9f46-31f6-29bcf313da9a,2905603439,861684668961062774
+3f0a523b-4794-7b65-0f85-fcca735028af,1776851980,415231750418162490
+74b3f0d8-4a25-31a8-1068-e387350730da,2314544035,8614746123578652454
+28e9f001-f820-211c-1a6d-4d7e34432004,1023929863,14468162650861280109
+ad216f64-da70-488c-74a7-493e4dd7c336,2279691063,3609718179844798236
+5e5cb88c-993e-2117-15f8-519bc5646a4f,4185908801,8893937541574563558
+e1804ce5-1488-f562-cccb-dffcb4eaca2c,748979648,4876837750211465120
+2f5682af-0293-e202-eeb9-67f69c77d424,197416135,7667743155505515606
+39681d7d-5623-b4fd-0c8e-14b36a6a483f,825595427,5680682456889912177
+e39e5e8b-a51a-2b46-7bda-0098e5c7e58d,3333271837,14554273520379670981
+f352f041-b9ef-d9c7-2d1c-e615bd076d65,2280632029,13567870281118496822
+5a120a10-504a-f9ad-c037-331d1689b16a,130298636,11759369740986697311
+0502a391-1d32-bd8a-69e0-d46bd23823f3,1405513992,13015614483258309750
+a0ec25f2-4a4d-c8c6-84db-25fb0e3dab12,3671385463,6534969614931539651
+a03060e1-0f6c-6ade-5749-da0f45bdf5f2,3152215015,5093553112435813247
+908f4887-bf04-ac10-8cc5-41b027768ce2,536962756,9240814072202181524
+045dae12-d3bd-08fc-8ac9-69ba0315e6be,324381627,10593419791000917218
+0978bee3-b317-05d8-e413-525b4eed23f1,3154328078,14355811144409058880
+68f555e0-0b0a-8f39-4e76-6dd8f7384ece,1301733802,4011424453952064909
+abaa95bb-4c45-06e7-f675-31cd779f3860,940637824,17800865805901430155
+ce86e859-0e2e-221b-3e03-248a665849e3,3158625391,17407263538640372511
+4836f790-bcb1-865c-7a86-d1f31bcc9cac,2429318831,9570626324969946743
+5d27cf7f-105f-eba5-7fe7-69ea2180939a,3059291506,13833396677735150841
+a8d75530-d8b5-6175-0fe4-0483a8130a26,357508807,5659591797175521379
+652e8e40-0809-bb0c-33a5-5f2a100e3217,3250046021,11975139110374717078
+992d9e36-ad3a-56b6-c21b-58a8841d48b9,347381622,15424787326813517580
+bc47394a-5f34-17fc-a286-609e7ab0ad7b,3470338258,12381850908585198336
+4988737b-265b-1496-96fe-6ccaef6385a3,695376349,7687004234621918477
+35729701-32e5-d345-2894-251f42248e40,2748547774,3752655692136876019
+a3d7b859-090d-2efb-c2b4-940055c349b0,2493195989,6253499784141509239
+8712cddd-5a40-d343-ce75-381797de6ef2,2878236991,17843406249511666711
+be3a901c-38b5-55d9-985b-86330b132faf,1554403151,4250311507040738900
+9e40239a-0c6b-4db8-6f86-fee38bf8fd1d,2787458789,16425194642651406786
+6ccdab7d-8b06-2588-b5d2-3184e4dea903,3799243115,15784626601595983876
+fedd3c6f-6cde-d0ff-385e-8c902adf50af,121993853,16930701047476628586
+53f66fbd-86e5-9074-d131-aecfd7f0be68,1432046441,772162474609066987
+5b0965df-995f-6317-d43d-c2107d5c0589,141520338,16201284574261372583
+913c4bc2-5730-b5c6-5768-c9570a86cc2c,3622431341,16708658233005604049
+b2eab191-69cb-fa31-b4a0-f621745c1e5f,3410880902,1626341543605644583
+0c8a38c0-8cb7-d3e0-92dc-a4e48c4b151e,1544747251,11038058649294499555
+2055d4f8-2442-bfd2-1008-683614af7664,3020005163,15640731252953462740
+bbc01da0-bbca-30be-2e3c-f2eff96a68c4,941496466,9185825205182942968
+0c5a2ef8-7163-90d4-37aa-5d9b3c0b7e3f,1914804016,10544659649617085338
+5fad32fd-e539-1dd0-7a89-a865dfcee678,3843480603,4185213189595983084
+666096ff-f468-46c0-7c64-9305bca7904b,15376675,6147291335286229606
+e225df7d-e14f-f1f1-95b9-7a6ede06d283,4104737223,8698433198571837962
+33655e03-4d68-b836-e433-8f6ab21335b2,1965954408,13276288564826447018
+51023c29-48b8-8b58-d474-f79bdbb3c0ab,3112653312,5422137143317591026
+65c76c9f-600b-0839-d5ea-bd0eb1e51026,1452787987,11421677912462148572
+da90b1a0-a068-ef0b-74b1-ece503ad89b4,1932845780,15220427301626769385
+71dad1ca-586a-b4fb-5879-9da7056d476d,202469007,3035248995278429049
+94b4833f-7491-980e-7f0e-da98f55811e4,682016500,5869573172882315897
+fd712f58-9292-79cd-968d-51a74ef59b8f,1982716458,10652925020934216299
+42e6d1db-c6c2-c5a3-ce90-9269dae527d0,3735524480,16873275121624159829
+49f3649d-5be4-3817-6e40-2f7c839e9c66,161554426,13394220973864667288
+d90671bc-eb8e-f8b5-1a11-186fc83a6fd2,1822290506,14170196834355728587
+27fd6c6c-5096-5b87-2e1d-0240128b5d11,709431489,10027809600778749495
+db14e515-8903-1823-24df-5ea90bf992b6,2145918974,6250018553591881121
+bc860a8f-4676-aec0-a62f-5b22e4aa6cee,3057495529,11935831619702103707
+24c40c08-628b-ad74-c05f-3ee6bbb4d731,609774160,10206399965540016806
+66c29096-9f00-0402-d06b-7d81ad8328a0,1686790626,194622793053180190
+2c1b74ae-1c06-4c26-7df7-a6679bde7a59,3601166889,5848254275087776419
+aa474d05-4ba5-c9c4-ca2b-58114380a87f,1846626296,1014794518404116102
+81f79687-d5dc-5e4c-3ff5-28444428f350,3429949761,10906715149894398449
+537675b0-cf77-8fff-4078-8909b4b9d37e,922449444,7980983506196282237
+c33d9944-11bb-7dfb-4912-6f0fc8e2bdf4,3865817860,8987043977315246436
+22e59db0-1a4c-efcf-6e5a-2dc7fe510890,2886874545,15536998317116604334
+d94f209e-4fff-8bb1-e62e-93420e678708,55445399,17824022913452318568
+4eb07b1d-f547-3eca-e1e5-1ad48d1baa7f,2152315799,199231879542393450
+278811c0-8b81-dd4a-1785-ddd5a3adfe99,1901437128,14378198963489914597
+e4807974-2e94-2f7d-23f2-9ef17924a58c,3105019494,14103213693401391913
+59669d2c-6929-7544-0491-4dd3eb3b7d58,1458219208,16420380058353771511
+001f603e-30a6-f202-b0e0-cfa8d02164a6,1752750089,11098562104505769197
+b6bee5fb-f6d8-9091-c3f2-cbb7d87b324f,3578426862,11718213361979960930
+1738ed5a-2dce-e0eb-6aa3-be84cd68acc0,593003769,24617342308446640
+982e0d33-6e5d-417c-2bbf-ad6470d2ebe9,1010052300,8267032909347378102
+0dfda200-65bd-0406-3911-31babe77b7ae,1083408412,15125247521141780444
+62bc23e0-8397-712c-693c-ef32d743a8c0,2590835371,17390075169462613418
+74a320ef-5157-3b21-61e7-d15f89aea057,730198290,12476875477294275716
+02fc9540-5bb9-3620-1f07-9b7f9e4f0d9a,1409614017,7883523911280498387
+66aabebe-5e47-9ec4-1c86-9fb88942cb7c,774015606,7857401221689613653
+7a214109-c871-f810-d8c7-3555b015e14f,1199143877,13067185226302515071
+f5742780-c185-66f6-8ef9-f199413f7189,2105811997,6720676247966657532
+cf57b44c-8c88-e096-ae57-55cc49e6b087,1376787367,3095727295788130059
+19d02533-7503-f565-1a87-8477cd7a0503,3494306108,2258915391696500758
+18c5aa04-c000-4f8b-510c-4699f029d97e,943913814,1415477739871142662
+295ca413-dd6f-b2fc-bc19-e51c3d656fc8,1863291930,17174794344973510165
+1b50eec1-95b3-bd8a-fffe-864e7092fc74,811280877,4615647588727584030
+204c0abd-0530-4c24-38b0-724de09000d6,2603895162,17553825542412568996
+69b12528-2ade-0baf-ef57-10055bb5e303,1191110192,14258526852595762492
+a57bb624-e1ac-77c9-1262-aafd2eb2859c,3200417002,491965431497221600
+e79268ea-5c89-4abe-363a-8cd55cfd1af6,605680558,12910387649457181448
+d8a2122a-0ade-c1f9-6ff5-1f01bea5af46,458039049,6612885342574898332
+9603c053-d3e4-1fa5-20ec-089ae24049ac,3928242223,12126142245325307913
+e33e4993-9d75-623b-0fb0-6dcbc3ba12d3,322330680,16519013419688932559
+b4b7ccaf-3162-d65d-dafb-3dbf6b20f94e,1590467200,15760056215376155331
+bc74f557-45da-b912-73d6-7bcec156a933,396651776,13985154914012395227
+a940a135-2ee6-2f27-d790-f1b08f3ca0e7,605079906,3962361648462140993
+d3ae85c6-4fd4-d6d9-f50e-621d2070ee1e,2096740254,13487089188554288746
+63b7ee2b-ae34-f968-18bd-0ef4bf8ab21d,1249826112,6717934538425456439
+df963cbf-183c-67a9-90ab-00f8c1a02cfb,4116390743,1468210622460918084
+09bad31e-540f-16f1-8c7f-47372e2db8fe,3941665608,12105877139223757999
+2b001057-971d-c11a-19e1-0dd07fb77414,2443192744,14542326975895640680
+25276d02-fd63-7585-87ef-291410e86b76,295563930,2808683454772346298
+c504f063-9064-85ae-7095-bff5024c9d5f,1292195845,6430048544893509903
+a556f1a5-4bfc-1569-f87d-0fc2d286cbd3,562627367,12092844604823438995
+a7ea41d8-bb42-bcb2-76c0-9483b0c83825,2598307427,15254449923959436227
+8251d215-7513-eaeb-8c66-d7c4dcd7b67c,4126365053,12262249607743003306
+af1c2b91-45e3-63bc-8e5c-3f50e0e58305,2635303240,210403344312041
+c1650748-f163-56e3-c0ec-79e943d36b6e,3610788534,5993261546808791425
+b7d5e9ff-705e-41cd-7477-cb1acd0bda38,1253546685,17245761476873424822
+4d8cfc1f-15a7-bb67-3e72-474b353324ca,1171052678,12281180541976376692
+22eb31cf-4b33-7f3d-3eb3-d8080b5c0abc,2114490370,4268992421837631837
+88afc77a-ae1f-da07-54d5-1bce25fe07f0,4085229703,10385516229012706266
+c68045e1-2120-dc2f-55cd-51f865fde037,386067107,7094443872642479136
+ce52faef-0d4b-1315-8e97-09ea4c3babda,3557480823,11531280610601147720
+010af9bb-456b-5300-9079-1fc15496b486,2268468476,8282479996837281228
+d71287e4-7f97-cdfb-c646-6002cf248cf2,1707819470,10534794963809091677
+d5516a2e-10b0-461d-1054-a4a1b526f004,3509951486,12509903028724831201
+259d558b-dee1-1e6c-aebb-ae9236b81c06,820460641,8204892807399166207
+2ab35287-f4f8-7f0e-c56a-fbd1dc56ed68,1052304661,18089101503579778544
+96a74338-1a94-e6d3-94c5-a53313769a7a,2806653265,11241311597127012334
+e1f628c1-e9d2-b85a-d01e-a15b29f7f6bd,3095464950,9990049976158124299
+cf90c2b9-dc29-1dd0-d313-01cb79b84a13,2953242003,13864043704484374031
+ed577e63-0809-530a-ac2e-d20e02e295ef,1774291792,6999116315862186518
+626201a2-f206-c575-8d13-d4664415029c,3023162102,7852126742862436647
+9aa6f278-f8c7-ef89-ab25-d7ccd21d33d8,4215351175,12616506067497337366
+0b8c0d74-0b98-7587-caef-b56c75305d9c,1538729899,8432654771420511332
+dc781167-5ec3-499d-5cb5-d22f2501f299,531234964,8708139155322922903
+a9fc7791-af80-3e4f-3df4-46cd12dedd75,3403696864,682472155873127246
+2c5508f6-2877-f510-772f-4a9079077208,1671763037,9878262194549971870
+4ebabe62-44e6-d097-11e9-270e2ccc5144,275846979,2146170750481054125
+d7e203fd-562f-9b6b-f533-b94fa44e0c11,2893288546,52398786277228906
+77e5f4d9-67a8-6048-47f4-0a949f7ecb73,4205331378,4032243172165835632
+47cc5a5b-cc52-b4d5-d362-04f73469bac3,1560623874,16253299195061495219
+eb80d109-2ce1-590c-7d73-dc8e88bc14d4,3081822270,14550251587966649508
+31858531-315b-8978-95ab-1b8bd378022f,2792430987,15265654450686326031
+60c58d2f-d4e2-d1ef-1fdb-f440da7adb0a,3710058842,5119660579905453444
+38d93fdc-8111-95ea-c572-d82c3c3ded45,331146236,13487984560370639481
+3b2e981a-6c0f-b0d6-810c-07ed104634dc,4245420481,16667364296457981264
+b69b229d-578a-084d-0dc4-d6d825ad077c,3350657921,12200532737274161225
+6f42c777-df75-a7ef-a986-cb82ef42a9e0,4225471685,10667587753414571414
+afdcca63-3d2b-76ad-bf96-dc91829446cc,873653900,17938292094019774295
+b7d604d0-b84e-a81b-d697-3dd6b01c7bd3,2612813324,6737159827945941977
+41590920-91e7-4d77-6994-77b862b4eab6,472899463,3513492857684295975
+d0783973-b74a-2372-8b42-feab85146c69,3286366386,13517432016224363110
+1f0b48cb-2cb7-b3bd-f077-7a89a68b4fac,482198898,17813645811852620966
+a7f43a9a-be31-7383-c695-e780a35fa6d0,515743310,17139872115925772530
+72850fd4-45bf-8e59-8927-194c98b22b83,3225762126,10350415749439711472
+9c24b4a0-aa39-b96f-d341-3758d719f3bd,1521601070,2840692505914342887
+d58e2752-b591-27b4-dd7c-d72499b980ed,3644631109,11942014425922391260
+82ae6693-1fff-3dcf-c27f-f109f2e5f580,3826572266,6597521586677279527
+d734f0d2-47a8-5164-772f-596729b428f5,103588135,7556359043541080264
+d4db0fce-3248-cd9b-abc3-f3a023555198,3397026589,1093668882917662070
+0436eac3-82fb-e00d-c9f9-575eab7a25f9,974973754,3555348960338461296
+0b053570-b7c2-ce64-5150-830f6febeec0,2133182131,593260140337202867
+78bd4172-0f03-dcda-05a0-5583982f29d6,2168392534,2338598433684288897
+46052977-25da-aa40-4c65-e1b4efc2ea93,2860039404,7492379216972715278
+73926747-e86d-05bb-820d-9e03a5f9cd07,3380622112,16499069009944129510
+19a5c7cc-f2a8-2e4f-d68c-5b68ffaa7c2c,1235635287,12757736649117379464
+002da8e1-9e02-332d-4207-25734f4fea38,2802729791,16223744556298208147
+e40811ed-e04f-fff9-af14-8e7d7d48c45b,895865044,6396447188309534759
+fb661a64-4986-432f-1fe9-908897155993,3173475702,8998094994323786123
+e967063b-af1f-1e90-8981-673eb1f65e37,1745336806,13912513047768252719
+fc565996-46b4-ad61-49f2-d337ab229e40,475883403,10245358841871220747
+4cf235bb-44ae-7403-f781-6a6c27a7cd6d,2053661688,7821389883224202025
+ffa00262-2c12-41c7-65c5-83839e69ee1f,2988245944,5031259229834556220
+4fc8d5aa-c9ba-ac94-3373-ecb04d3111d8,3298771286,11853072228639942907
+50b5f9ea-b7a9-50b1-02e8-13f20cb13a28,593079604,2007000103104039424
+6a45a6b7-b0bc-2c59-c529-a7d0f55a2036,204421983,1851168194247623903
+61677535-23a2-f32b-ca56-25e2779c52e9,751960361,2175128643483404687
+f59cc7c5-8fa1-e659-aa4c-947c45d507eb,515617022,7381385624007176211
+2a2f49b6-6986-01d2-8341-a47273ca8fbb,3148069206,13090741612611515852
+71eef32f-692a-36d5-c01f-ad33bc1822f1,2823611651,6978291337397397588
+0abb57c9-046b-6503-cf75-a6d9527be42a,1220115955,4192500415983262815
+bbf54b16-1abc-f1ec-e776-eef88b538eeb,160223326,9246811679678848149
+24698e56-96ea-e073-765a-3cc3d047c7f7,3163707495,10804616395111816437
+81115e58-82b4-c390-e4e3-89f37d00990b,3902460732,3678798403055258010
+af66530d-85bd-fd55-eadb-b6588eece8c1,2857054771,16555850916000808223
+f8a18e29-9a8e-1ee3-a836-ba29e6fe2f12,2718082625,15100165319092326652
+92cb2dbd-a247-0e26-c562-87d4b696f04b,3079367429,619732077390115217
+ff27a213-f97b-8b48-0de3-ecf00ed8b573,2620299786,14533300654437297639
+3ab23d67-87de-1d12-1f1c-a0da551bdc29,3346964402,16554622827360376761
+cc368c27-980a-c039-4982-71469e949afe,4138105513,17478779812833037125
+86d7ec0f-f6f4-58ce-d9a7-b4711373611d,323130620,6884694540148128843
+587b09f1-27ba-fc69-5b02-15edb9cb814f,1079487743,15148636896006327172
+cae011b1-bdbf-b3d5-79e9-d6bd524976cd,404739407,9062789524081820792
+167f453a-c6f4-aaf8-88fa-4ef2ae849270,1363778746,5142426166713790761
+031c8657-13af-b142-148b-144c1f1baea1,890555349,14302161860768507929
+a4146bcd-64a3-09d5-b976-c9bf0d33dbc2,447660432,7084085462335653403
+bacfc815-47c9-c293-3a69-29d770dbf14e,3275723094,3091969837992508134
+246a2573-3bb7-5cd7-0b7a-3d2589e7e0b8,2493224302,4827047357601060472
+cabf62ec-e1bf-75fa-2fe6-41e91f8518b0,2365724709,4366573545247894164
+828a8806-24ce-62f7-ed6a-eb6eebd15cf7,166998903,5789741257269125325
+2e7dad33-cb8a-46aa-94a0-6eadfb072f08,200896078,7515728475916554446
+e9ad67a0-9f58-8da8-aa3f-281ac5b8a4c4,1649497740,9006027897449774475
+481a6b1d-1e4f-fb65-1a2e-d8f02907f9d7,3872319121,14561974902673029371
+88107081-2eb3-f4e3-4690-98cbea535b63,4046744313,4361637441277262691
+f3a5b8e7-8ce8-eb6a-f673-54e7963406c5,1308504133,3679699066278727110
+183a3b89-02ca-0a1a-0e23-9a3ad7bc9ead,3193291919,15783284453686533890
+24f8ee83-1663-b4a0-36ec-e4f38ba2e4ca,3224770049,13796450494245608460
+a708a3a5-b127-3faf-dc4c-f69ea2e272a1,2743379343,1415087519816321470
+c5dec5f9-bf9b-02e8-8a1a-633b83b2c723,977356968,6994677784483716046
+eaaebd7e-9de0-6706-1f5e-25bd6552999d,1122300725,10890545057185280672
+6bc16594-4c8f-fd09-6bf5-36516e7bc2c9,569551327,9181030599796442535
+8f78d56c-bce4-9eb7-df01-1f28ce18e512,1365367751,2816167686842067432
+a86b43c2-fbe8-ff04-6619-59eb0d12a63b,2732881557,9782538905216984664
+6542410b-b942-cb16-0486-5e4850f263c5,1880335047,8243621674378837004
+8af1566c-3451-3bde-5fac-4e609be12d16,2550133714,6006391707516659685
+32a95232-3804-e79a-d228-917ef8d009b3,690342298,13893369310199046711
+ed9ca65f-3a9d-065b-4e0f-9340d68c8411,4115219232,17075620823113659383
+c0d8ed83-ca42-8c5b-f618-86f4ef20971b,2710874756,10950499191330129412
+a66ac0dd-4e2f-139c-c932-8a09c1030e5c,3598116934,7011568169216071322
+bf079228-1e1a-d948-fd6f-b7ed4d757760,979237296,18027365415477974152
+59ad310e-1511-6c81-87b8-268e2f05687b,4266857510,14583324273699916402
+6afd0c62-f23f-c4bd-3cb5-fede6029624f,234383524,6127257353866134039
+8c27df64-1cfb-7756-e3d4-6784ac9e1129,3770586900,7468492932092748131
+ed80d514-c40a-8297-96e8-8f8f278bf5a5,16160017,4776313579367937938
+4600d20c-a770-5d5f-675c-8f4fc3c6c092,3683459568,15420905683874172317
+9fd062b3-7002-ff9b-66b8-c2d1d6784867,1271494089,13813041412719659069
+997cdbca-d5ef-02d2-c8a5-c00f4f6d1e85,3947632726,7166515737713127017
+fff2c9ff-9ccb-9701-2e8c-ba0872c29af9,96155285,13102854437926494224
+be547235-eab5-f37b-b92a-d3f4f927c669,3977155435,3867788407940957941
+a0673bda-956d-6a59-c693-8b8057a97b27,46592961,16905861664539261302
+4ef0ec0c-c9ca-0495-095c-363c310958fd,3278912072,4666757979625941066
+84d40b31-74a1-3060-f32d-918d9d72eef4,1842902715,9876467355446249575
+62ebe4c6-26f4-0589-7993-6d795ef162b1,2933501798,7269071833335389791
+83751db0-253c-5cb3-a1bf-fa9ad4765cb5,1832069231,16485809468783006036
+c70f90dc-9888-e703-ed6e-af9a87eefdf7,2228642824,9000406537429182281
+0c8f3392-1c6c-07ab-a2e0-781f6a03ee19,419245284,16200216858606139645
+2ec33841-ee83-771f-ec12-d7f289161219,634091370,9225750932149941514
+fb91a0e9-7618-c1ae-bc2e-b987464fec74,1433036548,17171747377770647857
+9f06141a-edbb-8187-dade-6db5c547bf00,1242929093,1417136439590710479
+b53032c1-8c6e-bd39-120a-f56e1c674b5a,2037418521,16580215862448629952
+5725c9e8-c4f6-899e-4590-a69c5ddba4e6,4134086293,9068973028888257169
+d461129b-9cd9-83fa-8bb1-cd49df50de18,3580886774,15132812648262013648
+387f1c7a-5846-2ef1-b5b8-8d0210ce81ce,1981179083,11141398249467088522
+ccc18642-631a-20d1-7abc-f2f93ccbbefe,2508513724,13111432363987721568
+cdf28146-5846-8b92-cd07-5e9297031007,3692508955,6519176982701931066
+3e682261-7985-41d4-a789-994b2e13a011,943235737,3234781929341741485
+11c0c330-322e-cd95-6b71-4bc6889a823c,3449770333,16286343495613364573
+872fd4b1-7d9c-f6b1-1d8e-c85bf9c24139,3212451466,18078524086916572971
+354bca1e-3f3c-6c20-279d-f68608df72f8,2769473598,18288947616850739406
+90fdd5d7-726d-ab98-2bac-05c00c5be17e,3310043183,14961718878544769360
+12df8a90-14d7-eac2-6c45-cf110f72d693,2274341066,3711147035435506306
+44f3124f-9b77-cf60-2f37-86a5bd91d618,910508169,5922399013013941542
+ff490403-add7-6da9-a251-8d907a1b43bc,2506174983,10168123074153403328
+9175a6f4-cb67-a62a-b33f-b0c3a6e2a26d,117367844,8708006889705592281
+78c0b348-c0e9-0452-0882-4cd4a71d30ad,143962529,13689791627910144350
+b4806f9f-8389-38ca-ee17-eae23da3e4be,2607896220,8323597778933760388
+631487da-6458-0ef0-96f3-29428fa06bf5,3015391812,10668048679971594878
+4aef47e1-276e-c2f8-495c-d88e193e21b8,3703949227,15727047266748069118
+b751f66a-cf50-e5c2-23da-81a49955bfa1,1753430528,8690024693264453368
+b4371971-e9bd-b9a5-96dd-5b6c34ae519b,2137443828,2003083744767223873
+28b683b9-8bff-da61-d383-90a80694b7b3,3891918370,6181156690505665820
+0348aa1f-fd2d-e0a6-390d-a3627c6be0fd,1355526517,10666639403741724076
+ba4367a8-263a-df42-6b21-fa6e254b7dfa,2735102574,4026256689997004751
+3b7d25bf-768a-cb3c-3918-b65fce88a19d,58661617,13594945316688639673
+16626827-bedb-b6f1-ba3b-f29b9d048a71,1457355331,9893494449131257811
+95f20769-9c05-2181-375c-a7636c5495ef,470050999,13954625746443351116
+8f8fd3c4-9df2-c370-3c8f-61ed2143c863,1210112313,11945409757654258622
+41324e3a-ed6c-940a-bdd9-3b98fc95ec22,3964150958,6247299539871403510
+22b2a6ef-af7d-415f-32b4-8ccd73ac33f8,2434995300,6812050863751139070
+bdb8c779-738a-2c5a-9bd3-7698cb7abe07,1583505002,8432662709596600620
+4e550795-761f-3c63-e9c8-d805d2832f09,2131815628,18368467384240482856
+afaf30c2-4b99-276d-b1f5-cb2a2b0b7411,2772290215,13456279062696610477
+5c25c9a7-2e55-d310-5b38-a5684f1dcb1c,937979557,18242352129683376241
+3589edb7-248b-78bf-e58b-26c3064d3861,101699196,11524509968697835997
+b130fbbe-82e0-b316-33b4-bdb202a4a08f,3617288714,15473282778920581080
+e3c38b2c-d564-88f6-0b6f-86a472e766b1,2601521021,18137361251109078611
+1af2b265-18fe-1a3c-ab1f-ffa70d18cc7a,554603084,5533069119526136147
+00aa92bb-7b34-d786-8a5c-0b74a1eacae5,2697457166,3358102501242573354
+a74f1981-3fa5-b18d-02e6-3529a43b7c97,3500415549,5679992035114353844
+c276ac38-5d68-a278-8e9c-fa73d4de99d1,1484936803,12845487808091795821
+8aa89b4b-d30f-9888-cefe-42d3c17d8267,3291139380,16956209733177186183
+f7924808-485e-4e62-ccef-8dd1b9323cd6,574252537,9501987415396396030
+17e6c122-331c-dc60-c747-a4905feb7391,2253275276,13258589337796696798
+331007eb-225a-19f4-ea80-edce7376a13c,4079804440,18130522539763886986
+f42f6ccb-6ad5-d80c-d979-702ff544e176,3007700671,9801521142468559024
+872fe329-98d7-1b61-8277-aefef317a1a6,3090805918,12931095619201025889
+af641eb4-81ba-0b1d-3370-89ac22907157,1380005420,15662301210614436224
+c6290008-9f58-a684-5d8a-19e98fda4d6f,3100184614,17190600178928896368
+61303b08-28cf-b672-e14b-ec8294f5b7a5,384999149,13325421716392675450
+bdb1c094-48d2-7615-ec68-8db02a044187,2702184944,4385803640212994221
+902f133e-a642-95fd-de25-50b903217ea6,3192601321,14918192679966218192
+e25c8c56-8922-6458-0cb5-75f45013ebbe,989677653,17439843876006189391
+6bce7993-977d-0bce-0ed6-8f016c57befc,1365250548,18425971081386485639
+e1793862-7df2-79b7-8fe3-ba041f6ffc4c,3774171582,7453339498439901257
+3878afea-09dc-98e1-7968-074ea846fab8,4015576839,11062589753712526335
+157a560b-f51f-c5cd-fb15-e55d2f3b754f,4121375093,14186729278390587687
+4e55b319-9a77-7bcf-b991-4f54793dcda1,3876354043,191250831291790676
+8ad4fb3e-62ee-36da-d876-08505e9ba838,42314685,4976930632458236130
+f8b39495-b683-f039-8e9c-abee377da070,2080045685,770399082392017869
+b5f026e2-9bd6-46e1-c5f1-8a73ec01db98,2919219252,13607535386979606401
+256829fb-e46f-efa9-b821-e7e1f4511cb9,1169696003,17370232086879646100
+e4db921d-d88c-fbee-0a7f-4dc4e6d829e3,2873307191,3122282075504486167
+36844f6f-b48c-39cc-2f40-854e7f7806c7,1979240711,1816814602115656546
+86a19174-3659-c4b7-8faf-eb72db8f6b4c,1025651169,2678369753697297310
+307daba0-4b5b-d492-f6cc-7656f7b43b58,2376350270,15708958347511920716
+41c74de8-c967-64ee-aae0-a0d9c469e705,2624342231,9329928397711568706
+1f196ea9-4665-5e1a-2f45-69f971e76815,2805955966,13104344679223134471
+49fee6b4-b89b-474a-3faf-7cea68396645,809607803,13285038048723153824
+0a514b48-b4f4-3ce8-21e2-269ffbf8228b,403244165,14406028726259904011
+62b2720f-5435-fc30-9d27-25439b9264f3,2367032009,14134189991707531535
+10bfbf1d-90d6-b840-9ea6-67fe741733ec,1855229765,5349351947577603931
+4505d099-5477-befc-dbc5-178caee28ee6,3264898518,18156710543326264419
+ec3ae386-d4b1-b983-f4a1-563bd7888d33,2988714584,10461687041819146291
+eeec4983-8df0-47eb-1c26-744a7559a44a,1802753867,14167502074001834956
+92c98ed9-789d-a8c3-78b2-2a462743e654,1552035487,15518090089492794985
+4f864126-1839-db28-5ee1-9ad40d6c3b4e,372426301,7783671129637293299
+19a42a9b-7a97-2c04-4c79-673b4cb40a12,2764817604,4880382418821177657
+28235424-1c2c-a650-99eb-77bda77959ce,3776295939,16686355196355777238
+a5321d10-e3dc-6e2b-489a-fb81dd15a2d7,632651062,14885901579592425178
+f8595826-ec2b-e815-09b1-3861f88514d2,247558368,17569977970910660823
+406e10b8-5548-32ba-d306-fc8e654da844,3168809620,17250815516027999280
+990ebccb-3654-a766-1768-5b19b493bb88,3638117017,8242850379715130614
+963c7abd-0c12-4945-7d19-f848eff59ba9,3543673822,397078744306958765
+a7eb3e9f-72b2-4322-2a96-0eefe7a9e03f,3887698858,15938138222664353509
+92d3bde2-4a68-c80e-e369-ad1fd34ae1c7,3402451177,14284750332002212758
+69749a9f-01a5-cef7-6398-ab9b73f36d09,2063374012,17423984859813846071
+5d45e021-f0b4-e4a7-a53c-15d862c3d928,2667657247,9022365660867547899
+6f17f452-eef4-8b99-83a9-a4664ed4e806,2551303698,16740716899842231256
+fbf5246f-3f75-7dec-1472-d1ae4abf38a9,3109783827,2352735009195893233
+10b2d95a-4e8b-8f2f-5ad2-f83c95f56c61,875283963,2854557964193273896
+7830836b-f03c-1f65-d7da-38c4680749b5,3368956513,10273060973127874254
+20f1ade1-1305-97da-d044-8fd8a1f1e790,1562858317,14411256468905191410
+2e325797-b5ba-3ed3-8fa3-46ea065ec390,2613819305,3165142766841380807
+f4e7f37c-d4ec-4135-7b5c-36fc86d15505,3201398912,2812947007002509083
+d7217a8e-9879-ca09-b3b6-e5f14567bab1,3433708930,6084954542585296767
+0b388cb3-1c0a-a6b6-93fb-90707c4de48d,803814708,1264725922486344465
+130c6916-2701-3da2-1d46-9db24630c889,43242838,515903907266083893
+ade73c93-aab7-ea7c-97b6-f694837e5123,2727703127,8076033459790776222
+34e74d26-b911-8159-7540-e2db46086cd1,4000741800,6358974886365062603
+5a316176-438f-3441-1ae1-478731a33f66,3934254047,5260561226285835016
+59c28165-2d11-2513-38f9-c0f1cf8ce27a,62432502,13998510045262895319
+93694edc-cc14-4b04-1fd9-a5bdfcc50677,3220448486,3918117255992794405
+633e3d9d-a8c8-ea4b-8d9e-a39a6102558f,3464061591,16675835200740132285
+0e5846a3-0813-8744-6cea-29f7fcb376b9,1422023479,4112304012340828543
+47cce515-b3cd-d9d7-4e06-a8f70fed9fc6,3288369883,3564814089123251902
+daefba35-9072-bdc7-1138-74dbac430cf2,952876488,823902040826488115
+066b84fd-b2e1-bd59-af37-8196af0373b3,677167792,15931432167397558362
+26e510e1-253c-7066-1811-03e430971c16,2058089752,11976950884798110555
+ec03de76-4aeb-3093-aaf0-b3709b8328bb,3523536967,5560489784959074112
+408a8241-378b-104e-6364-e2d886ce84cc,465818098,532323353790302578
+135100ed-4a06-b24b-2018-030251317aae,2638689310,16903459074329002475
+d13ebb4c-3dab-171c-4d1d-68383d5e0658,1608819720,17403073011641016747
+a44fb20d-504c-7d63-8a22-9feec3ff1205,3772931494,487266323409221817
+ddba3200-bc0b-66e1-ec65-01f6c8e4d88d,1930038903,27356514501003546
+34febef8-bb0d-1521-e4d9-2f7b127aeca2,219351291,18194241730632488884
+0f13abdf-afba-39fe-8df7-e12d16bb12d9,1986888343,7921182753942536809
+a745c9b8-bf74-466f-1da2-550ef5630f78,1610567293,16302617972162959849
+1668f9c5-9348-c174-aadc-17f9035bb506,3055076050,481501429107908110
+1b8f487f-002f-0a7a-2696-d79e3ce0bfc1,1660266186,9049079695797594098
+f5f9e349-3100-c794-08bb-e38c20f36ca7,1520477855,6655819261372649611
+3a63779f-846e-74e3-a52f-4616daf7d747,2439556583,15570006933938575094
+78c35eb9-c35e-4310-2909-b6f567540d9f,802105808,7396056491163965190
+f1ec1ed1-644a-ceb9-2af3-660a98c32a7f,1704099080,572232714310247408
+f00b4d80-c9b2-8668-8b39-cd96d3dcda37,2320293744,10200754224228744572
+b7a46f6d-2ab6-09b5-e2e8-04a90b2931dd,4040501343,741716484257431287
+e290289f-5dd2-9985-f4ae-f180a2024fef,1336554221,14216376898752071510
+d63c88e4-5160-aa1e-8ca0-8435f19305d5,1530121531,4809781537389413657
+19233b34-cbbe-bc91-e96c-c5f3acac6dec,2433736738,1933022064049856227
+7df5812e-b09f-57d0-3de0-11090a889902,166163283,7275031371326962529
+18c2f159-dc08-e1d7-3e3f-1383df313e75,3408993272,1728438979727591316
+1eb93280-d458-3daf-0eba-180467829e05,631007965,11684610504615670305
+31e365d0-497d-7687-4bc3-524e19235684,3991728030,18417694120487313436
+7a23de6a-bd62-fa2d-4c8b-0262fbfcf296,3266443984,11429238299039982784
+f880bd53-4e2f-f788-89bc-5304074f345a,1778318728,7861422563467216372
+c126f2b1-0377-7516-9b08-879797223e64,2411726734,5982191247109417460
+29ceaa2d-607e-e165-0346-8b88a2e3b870,3355064537,4388677047536386743
+941d8ed0-4b62-12ce-1ffb-e9b0def900b2,3210088352,17079869015787910191
+5e5aca8b-4dc2-1699-ed33-421bbada9fd6,3313509620,16822343609787710199
+25b1c749-837f-4653-d457-b8d4f19604e0,1554761997,6148676471599581521
+696b39d1-5941-376a-53d8-39fd2f4f20ad,74816338,5390853103350702793
+bff3e83c-0986-72f3-5b55-9d78c0126c61,1476674246,8842405180780521007
+1e7b1b93-24af-55c6-cf77-e454c510c4a5,4070663242,5005547340250824224
+71ceafd9-eb63-a9ac-d26b-01e0581259b5,771122655,4257761650560845988
+f0591009-f309-3c93-958d-e83410bc1b75,3299019111,2181544290318120631
+2bb5278f-f36a-8df5-812f-be0952b6a1a8,600374092,4722151855791207907
+20bbf7d8-7cfc-592d-2320-afa2ccf191b0,3588478436,6675384851224965858
+acb2c197-aba8-74d6-6fd8-5a4a6f6a7d22,2842156098,10628327347206933002
+b397ace0-26ee-6e86-3d10-0f984f3e7112,3669925657,1179451053362985207
+dc4e8e70-a95f-7ef8-e64f-477879c6badf,3264338831,8123777793305872009
+17909a3c-316c-9959-3d1a-d3e348ec60ab,2017442205,12242916731328489258
+a819f75d-ec5e-6b04-19b1-ea089ab900dd,4249156897,2971267412124421685
+9e7c648c-e7c8-4192-880e-9887ca327ccc,937337882,1774341147846276925
+361d7e34-6158-8f07-e80d-294180809d80,695349038,8214715782932632684
+b0f1006e-4a19-ce31-8dba-254068e985e0,753545476,6942040319995155908
+b6bfa9e7-2987-04ce-e399-651fc657d799,1144403500,9081878604344123674
+b64e6b78-9699-5001-c098-9f44a85b80ca,401176467,18337991047730325066
+98f63ba2-a623-f3c2-ada4-afeb6b8b44e1,1622323625,4845817112724672710
+dd4ee0d4-8b6f-dc07-2ad3-4a2e3dc5dada,1002789010,6172431031681501026
+edb6f840-c97b-5a79-7877-746ca2243dfb,2997486688,14686030122941923793
+58ed293f-cd2e-c0fd-619c-b429605c1eec,1732521491,1771263188963326047
+e6e1e39b-9a7c-f000-974e-8108001e90aa,171647945,2998538293868151518
+cf940249-a155-1650-b0b2-d8958ad2792a,678628156,8399882182815102141
+f2765a12-5210-8426-7c2a-2b3a211d4b93,3977132718,9841617473773922281
+56d606db-aa2b-9b50-ca2a-b58f23cbe2e0,1564911240,10619120975055916715
+41a3ee0e-31f2-005b-0007-533a8be0146b,3139520507,12801678283361956246
+9605afff-550a-c704-5c15-9f1b7448afb9,4281632808,8644846725329023180
+6739456f-d21b-5f39-67ab-34ce78e0acdc,1528345233,16487408484438566761
+1c0687e7-09a2-1112-67d6-9848b11969d0,3896342218,14398688916192709565
+c05338d9-008d-920d-7ddf-971c7c15bf6c,205906258,3691298401485846623
+a5d939c3-0f64-34c2-6a1d-7c89d758fe2f,325146986,471953210052519538
+0cb7ce78-de93-73c1-2f3d-16bd70c55a4c,2783262057,7809945671334144914
+7a742f43-82cb-8c72-0bbc-edb7f6871d65,834283493,543876329883488805
+a4d4f749-c236-2820-3bc3-ec56cb1d9bdb,1885422106,6543101056444534793
+b86e55d2-3f93-7303-9254-5d5cc739dfb1,2260675095,18075471270847138923
+d37bfed9-17ac-a1ad-5976-5e28ddf81b08,2905803235,17568486654339556184
+80b48e6c-e897-d1a7-6057-b73d0d59a47c,2055858370,1550328637464002131
+0242386d-ad59-8a9a-b985-278f545334fc,3081685086,10160338274924242670
+4b5c4b61-20f3-9d2a-dd87-51876cf0784c,4065968663,2220467685639013007
+dd61de36-5548-63ce-b149-d28eedbd2021,1650871068,12391668683141293699
+e38c4797-5d42-7964-9777-a4da56c06835,3145111779,975454004821851819
+ca443a9f-4185-3c35-7eb1-0187fd137d3e,1745349873,13557348964679671177
+6898269a-bf03-5198-76ab-d9535cefe004,1695591210,7851525815764862380
+29580dd4-146a-3fbe-63bd-491b0f0795e6,2361619238,15954712284567421898
+3a2cdae2-39cf-6c95-453b-79221faf092a,3882379379,47633592455268609
+f1c15232-c0ca-31e1-0437-8287292b36ed,2719743169,14025713388367251277
+c57612c9-786d-038b-b965-2c7ec12054c0,3340560937,4338516964958947983
+7ccfc1e8-6595-23bd-8efb-be95a72e6c2f,1719526912,6227710194476991534
+4a8a4cd5-08a5-1d9b-846e-ca294500256e,9421675,6054654202385492167
+cd88e544-5b25-db6b-7425-4f7a68f3a9c7,1242194847,15582002225544747126
+af534c96-1f59-d3b4-962f-2472750934da,3350614433,5463753156437240987
+a22a30be-1699-558e-6de2-197708697e89,2252949176,15570612373009556205
+870d77e3-c3a6-eca2-caa8-bd8f67f6ad2f,4040614053,8888864384484588882
+70032837-89bb-6417-5da6-0b48d68cdc63,1645196268,16883534027536607802
+26615c14-9667-6bf2-e63c-da773fc59cee,321006062,5323693728407798594
+bc36dd2a-401f-cd52-094e-43335a0e6bea,1853199355,5665191185992240535
+598f95b7-1ead-5870-e052-25c1512f57fd,681449365,14907419636961400093
+1b275ccc-1305-8265-e54e-48cdbba7c200,472063220,1771574595148191214
+336c3bfe-dc98-9e2b-35e8-50ae443943b5,2695243343,9494513861547310588
+f9e7b43d-280a-207d-769e-b21115193d6f,2743350385,5994967644805191351
+be232d28-305b-b82c-d098-14206b32b147,3214389722,1346830632891393376
+1a482835-9cb1-a28a-4ba6-8dd275261c40,744423041,10140246146770510578
+e2113bfa-f0dc-718f-46e0-d82d46c117e9,1040869512,17262515684286691847
+890a51e2-6937-dc0b-56bb-6ba9f4fccb7a,4068190368,12178580776385072864
+f1373a7a-dd89-62a9-5f6d-db93a3aa2307,3666777639,4729783810838462028
+270d1718-b956-5533-89e3-69592b59b085,2366966564,13023519487500331383
+d384534f-e76a-b374-977a-4dd0b3446bd2,2803530459,7436838360317203125
+ec18eec1-4cb4-66e0-951d-56c8d1733583,298462938,14520721938278865186
+40a456c9-57c3-d302-1b11-7f923da41fb0,3821736202,10580108114718958263
+0ae15684-b2de-6cdc-1b3a-299c9873c283,740459147,13221589456057395578
+d201585b-1d35-4b64-d149-dc1df1486f5c,2440025788,7625307609497288404
+4e835c8c-ffd1-da58-2f3b-3d5391178ccd,2743934040,11489436966965971644
+6782b404-9b35-c3e0-c43c-cc080865ea30,4187469102,16947231311542048288
+f4e30c82-c587-ae6d-f966-aab569370f23,1046709955,513883627870379798
+a6c07c08-5b87-0e31-da6d-e6d7f9d4f51c,1639828802,4101680520811437456
+6b61a576-8056-2d8c-1140-478f53d3d080,797119734,5225511307980757215
+cedeb1bd-bff7-9b42-d950-e1fbcea6e804,2352251437,3135259629961334181
+86b5bacb-3a12-80d6-ef07-66f186b65036,1511806725,18186728989922881848
+e96bf52c-1590-e1b5-22f1-6a461ab2dfb1,1365271339,9666514518707023531
+e2483051-955f-315a-4c47-d4414375efe7,4103057971,611910474909625368
+6e8098bb-a0b6-3487-f14f-36eefad8257a,3816167874,5976463830703696353
+faae3d3b-e1b3-ebcf-46f9-ab22722a2c5e,190779324,9844917668394647647
+0f8db5aa-9f08-63d1-00f9-d76c79af1699,3940347669,2343178858584453089
+d53afb36-07ce-ec76-d61e-e83608324837,979045889,15046251885504436486
+ef4011d6-d43a-b1e1-5a49-894bb905383f,2103581071,295916396759115610
+1a6c80fc-5c0b-7931-0035-2b251b4a9251,2043076005,6471432112524095009
+666d4948-f0d5-90a1-4eef-d37241b1e57b,3879441769,13201418185160073015
+fa3a4513-aca5-f0fa-4c3a-622cf74360b2,909255737,2712674683606845910
+44c4f644-a6af-b51d-f926-162e45c17c61,2238938833,11993699835239463763
+89fd6b8c-55f1-3b7b-6105-718968e3348c,2717404519,907192349173734347
+86b08a83-08ce-202c-0d52-1d3f02dc6cde,2937756046,12370889800093535557
+d75aac93-9aa0-61e8-9fba-f022129b47df,3791206204,16645630858756901377
+7df97fd8-4e31-69a8-f73c-3c75724256dd,2127916077,2883712537998554803
+2a4ae665-0c0b-8e89-d273-52876f3cc085,306784876,4981401497859232280
+ae2d9ab4-2a69-3f79-ca36-c0fa6774d188,2782368628,6863188581589616947
+bd223eb7-4feb-7103-5bf9-e2beb5a6d81e,2037856548,17323396954696832255
+88a17090-49b0-e12a-5316-9a8485861a77,2066383587,15385620924484869951
+204c950f-1877-329f-d764-808a985dacb0,705241193,15012370711937909291
+af4fe1b5-98a1-0f5f-b091-86500d15201e,2970856839,11107221098610483757
+7b6a3afa-2f9f-88ce-5eb2-68965d2db963,2471550204,14189356397749234372
+b2f2bf59-46e1-7bd7-7bb9-55ef1c0e810a,845416825,12866341259152418197
+ee8a6f5d-13ae-1fad-625c-2b1f58c2e8eb,806211754,13266452074594538065
+481ee20b-1a39-d30c-f45e-2e153a131929,866559198,13367516649951366221
+bd023c30-2ab6-dd78-33ea-466bbb8e17be,1156285901,4254047378252326217
+03d7986b-31c9-7d87-49df-243330338f42,1643736857,15141216549304237146
+c9862815-3a8c-06cb-3410-b769d903f4ba,3444664436,7553516703653973164
+90caf906-20af-9456-ec1d-76ca4d8e7eb2,1953895049,15031013149303741115
+d26f0fee-00f0-3f7c-0e98-e34c1fa6d5f8,3073207071,10496700828181050831
+ce30eb15-eab3-ec8a-c4af-ddd0819ba8f7,3663953160,6295921478009685111
+6a3c327a-9638-bb9f-83e9-1f05cd133778,3722719256,1036133312665974718
+f8b25a20-80e7-15bd-4f28-274745ca1bc5,2068220764,16172014480514816094
+5294ff69-81d1-0e61-66f5-708eb7104359,3159923300,10741465913535881884
+272dcb09-052e-6249-5985-c7a949a4307d,3680157812,4452949294434507067
+eaf8b3d2-45b0-bb2a-0dec-a9e90f5331f2,722248421,16142966073446035066
+8701dfeb-2ce0-4837-cc03-5e24a548887f,862691134,16821783537393937846
+caf1195d-743c-b439-e229-5bbc55da7e16,1732430228,11453999046232061133
+9f572c87-c105-545c-a542-965df4118e3e,2931619341,11391252134855172455
+9447aa58-9f77-0c9d-44d9-944026d0d984,3979514917,2829170581116395674
+1edd2d88-68f9-cd5f-f195-cb0c0e3643cb,2187970494,8527099759202505885
+1213c700-4a24-ba29-6ffb-c8f15beb62e6,567197302,16324488158857914170
+660ebf1a-d2e9-ce12-0027-7dc8db0e828f,3317510277,7451341648500602746
+8c857051-4975-fedb-3116-df6bfcd4c00e,3442629407,6138971504504003638
+d4753ff2-e57d-3f40-e161-2faa393cdf35,4230802127,2214566494017611355
+4aec7153-74f5-a292-a599-c840efa21cc4,3951734064,7836134047962570799
+b949dc9f-0030-e7e1-587a-a61cb567bb65,4113293994,861419816881077100
+a0922202-5f9f-89f1-2508-224b440fbc3e,2678767247,13570796698437552373
+0375dcc9-ecec-9d9b-6b2d-c6286ce2c6dd,517923335,5989551211455656808
+9c442a4d-7386-7ebf-5dc4-cca372524a64,3456518079,1781457252078822814
+be1984d1-b07e-f52e-07f5-018702485d7a,551150956,1440545483012532495
+7409ea62-0757-0378-ae3c-afd04456dc87,3337840177,5095049669418661251
+fb4d16c5-4235-682d-7c40-a8bcf0b27b8f,2368775509,15314200851330833928
+ee908747-adfb-73ac-8ae4-f07834d429e5,1159812999,5104416198633433197
+86061a8c-80df-9639-a2d0-cfd895b2b4ac,1502772558,9629698475091396047
+354c5315-3412-54a5-933e-9cdcc04fcd0e,666923147,5319671787552692144
+92ad884f-4d0d-c6ce-9176-b63ef9c4706c,4200981846,1862435446211877448
+5f5dd212-4cfb-6b8d-c7da-532485a0a8e3,1660128272,18082457096965654140
+e0e61ab2-e826-d2d0-ab78-2425b45ef433,3696318659,2720650003868481989
+0046c39d-fbb6-51c2-aa22-3b93d9988f00,2974823791,601776721122127024
+9bc55d78-f86d-6232-6f90-a9468c3f0685,381234919,7560996312765304351
+31afa05f-6f43-594d-583d-86fca200c7f7,693114086,3388566458080865064
+b25ab4ab-f08d-34f5-b529-cd5cd31f5b31,2132781829,8201407347776285193
+12234a04-eaa7-b294-7b6a-c6c425c5fec5,1531488199,17451959451120222561
+de9df192-2d6f-0da5-5991-4013544316f9,449007300,3151066065894875311
+a8d032e9-2c52-fde6-aac2-ef65108d69da,4183538711,3685718477604447533
+1e98c9de-e2f4-e583-275a-cec37f08441b,1463615388,3063163552499424662
+b62b3d4e-e415-0ff5-b31a-b078e97b7acf,406452317,5206524239581211390
+47a27ed3-84f7-9cef-8c75-584941aec0e6,2748118397,3895576717782062182
+1f149b23-0c9e-5d92-c2b0-e6a39670c68d,2410595119,16344233497074488907
+9e7724c5-0e78-ea82-3575-1e6dfa2cd7b9,1463712301,49779754535733280
+4f6e4636-abb7-325a-3dd7-aa7625b6fca4,1212781902,5753051655651894764
+b05c21e1-2501-5825-f89d-db994353af4b,2919231396,2911690024018376526
+452fe0bb-5171-5e95-98dc-97ed6cb51fad,3430436376,5151072813200344311
+a051a39a-f93c-7ec1-2218-12ff14c35987,157948907,14928450577131431903
+c9946cdf-4c77-0d03-b53c-b76ae3a3247c,15969365,54381198512097911
+a25f4907-27dc-3d9a-f891-539b53c91b88,1932679343,7320834755161886234
+dcba8b92-6423-1902-9a3c-37ae596814f6,1287809630,3085447894438703391
+5ac2c10c-d359-6511-7043-d8949c49015e,1739029186,9133449927897060886
+de0dacf9-7cf0-9f5b-0188-9195a1163ebc,3123560066,276951962197123755
+898394f6-49e1-7c11-24fd-ddee8b20a910,2648183821,11193144775199620263
+858c4fc1-7734-8c16-59ab-692c67013653,2474238635,13094605407198778781
+471406e5-9af9-76aa-a8b5-52c13a66937f,3916071640,410479205965509807
+7367b963-5f89-0aca-d611-d256d9698f8d,1915414581,1193130042988311729
+a539fadf-d35d-2a86-8feb-d6fee658b3b9,51243236,7128212722752342355
+1f274019-704a-429a-c2e3-b0706ef87c1c,2749806679,2775818793859385906
+181e7520-4634-c585-46df-804f5af47aa7,2290001170,7464657031523585664
+f89cf943-3da5-f842-3a93-eb40a97dfd32,3750608486,1229442789408025085
+1a5696d6-1d96-1abc-3354-24aaddd620ba,3498241256,337909620728920363
+25021448-33ec-9874-924d-6e5f2a9c658e,20010021,4176076560708993347
+0704fef1-1e28-e42a-451f-1c93a46b72e8,818106623,10002960833783842818
+84b2a0f1-6d93-ccde-80ff-5840eacef4de,2917262207,5040455851803817082
+c74eed88-8b9d-0b06-77e8-0ebab728f149,1722443515,8127133093867606862
+6e05e3c0-f39e-aeb6-a0c0-678d74e2c89a,675724707,931388997263244258
+7e036d0b-e8a2-d667-527e-d503240be1c1,3954529060,7958711271116079477
+a4e0f500-d63a-202c-5b33-3bc1f74c1ed4,3244685694,9045012660956734186
+7231cae4-e192-1af2-9832-6420c632c544,3699894361,15028364852061541970
+ee06b2e6-75a2-d98b-c1b2-18b173f20dc5,1227244057,3871964123111295206
+ed8905b7-3fba-a68b-68dd-d76af465c7da,329362055,8352597700190958189
+ee177916-879f-3b55-163c-34de7417af14,820332738,4198071399426087958
+a8468940-7b73-58b8-6f97-edb0e44bd5a9,3851577570,2712438008802496681
+2ce7815d-a20d-389b-96f6-a0b6c6870ffb,833124538,5362056144863071107
+4b1709e0-8543-7dcc-0557-42f00c1d1d08,1610383931,10823332410798206317
+c73d37e4-542c-f3ab-4e92-40f8b5923ad6,1705874471,13117643706186223491
+0c1f100a-5638-d586-dacf-095c5b0147f4,422369425,6335589711338375882
+c2a95c7b-e2b7-ef26-d572-2810119c2ea9,345620790,6194007891816026626
+a98e6156-ac10-435b-1736-a5778c28f21b,1517227617,8615880337750782973
+82d04140-03f7-c468-9411-68131b206e28,3391243591,17644890136712341603
+2c92a0d7-fca1-ef15-7fa2-9dd1eaaa60fc,1454062041,2687406768209760737
+693a89be-b6d6-4f06-b0a7-f6f53f8daf13,19393299,8340848244408954590
+453dcfb7-90eb-5ad3-2d27-9de7ec3cc2f4,3290200595,12278236390023317886
+235999e1-5583-d13a-0b16-80659d0cfb2a,3414568666,7567059176982958085
+7365ea89-5f54-1973-7d65-3845dcf220f2,3006622199,5485957133727843458
+d698fbf8-b76b-4bf7-ac7e-37d2d2221e82,882396862,7009679185029009805
+7e974708-dcfa-cb5c-e828-3bd1bbd1c386,840029727,18268530677593971250
+be22d3cd-fd20-0f9c-bcc8-df21b5746692,3150560732,12884059436882614148
+499c7507-2dad-f2cf-57aa-d922b57daf71,2198554217,14091358988281485955
+f7b2aae0-d2ce-ea8e-d8cb-627e0cf6cadc,1856470667,14373968793640376364
+2f8f5986-b43a-1774-5751-65b562fe8ddf,520705239,6431015103492145539
+260f3f3e-c897-2ee6-ec38-1009829f05bf,2778571750,6322080193704181468
+9856df41-2d40-a23e-c515-d1663e286801,4270690430,13814391161350105256
+3fb17143-663a-3717-403f-a3293cd84142,3133462300,822264465825083130
+725dd9f4-ae58-931a-6be2-1806b2e59326,634504857,3791408123907843449
+b62a74bc-ffee-b590-5b8f-c1a125212c75,404102491,12129801902186880786
+8bdfb63b-7960-56a2-b245-b78114a8f1b9,1985075610,14278658053356536103
+34a2b4ea-fbbe-9060-d514-9f9544dc64aa,3312013044,11518064744768291069
+80b1864d-d411-e4f1-2345-0d5a9ca9bd3f,3519661156,15186395530769987732
+ba6e2988-b945-7756-b4f8-9615d4d77f37,3077686536,14988876077462252933
+fa23aeea-f992-b783-5536-5e351d036166,3522543441,4754444102032407200
+360cf939-35c3-4016-1094-6d6598859290,1302360973,11101839200839532289
+8af94a83-7114-61ff-f75e-145a0b433bac,3525474149,12328171107929027380
+c86d53ae-c243-ed6a-1dff-5efdeeb86593,1500537435,6059144707970583974
+da6a4f7e-b9c6-1714-ea9a-84ac9a7ce262,3956031674,13164260541253595459
+c6c1ff3a-f138-b90c-371e-d4334e560ad1,2145556947,6920303577825025141
+e5833f91-3210-d671-49d5-ad398fb72bde,4199205169,18030682797109050757
+d01caef0-085b-41e0-bbab-8c4848aeb6cb,1768671996,10531474354524665165
+ab94642f-dc4d-3bab-7f4d-997dfd17eed6,3527095932,7671689016377752005
+e132f649-5515-0ec2-e7e2-bc82b83c33a9,3272581359,5069979418967951522
+d9fe5af4-3e33-722a-baca-6783d5234b9b,3959287196,10837613845232997967
+91e45d95-13ab-2aa3-b2ec-be5bee4f890a,516037952,8406876037563399297
+abf69b2b-c767-d5a0-310c-f23391379fd3,193445008,3547820303276044186
+74815de4-2f47-b79d-a88d-ced521db98c8,18887699,15992020500532845812
+da295455-ba5d-8ea2-3eed-6131058ce0d8,449466589,5174811592244683793
+dc717e0d-0641-35b9-b3f8-27ce5202186f,2881330408,4332717870913918240
+34525ed2-72b0-c43e-53c6-2b8dcca815f7,4219368979,3384785742419106533
+e26539ff-ab69-4095-995d-3de8b957d30d,3678638746,1883002927787662240
+bd8536bb-b2ff-9b29-9958-a20ab1399943,1769738316,16096799358865020650
+4edd9e8c-a4af-1fa4-5678-f36149c523fd,724785510,7272925809836741128
+3dd455ed-8d71-27ca-cfc5-ea5b3bfe9172,1488968952,14328731632945654186
+03de6f51-2bd0-bbc5-d37f-5e28bb90392e,3750170036,14216200397001194415
+f72ec627-18fa-bd51-4547-024af02653c8,3068111059,6873591283547503642
+82fda632-6f34-198a-6b4c-c130ee4c0592,3607954009,5409488516183482154
+ae77968e-9db3-087d-751e-761f4488dc6a,2855161444,12212314727207957768
+d0bb27b0-594d-927d-7ee0-ba58a4e3e60e,4201603740,18206827184908902513
+93051d88-38d0-bf06-319f-f0714436abc3,2913328535,13081878269833690359
+45b29961-6b65-32cd-278f-f78411ba5790,3044213663,8623445854280806726
+bec8894f-ddf6-e0be-28ed-660a8fdeb677,916034035,14866749704735318752
+26c5a70e-d97a-c723-01e7-f30a131156c6,931585850,16352865375671228666
+03f59fbe-4d48-5eb4-a3cd-0bf68cd3a575,1661298922,17902063097151134188
+0de99046-b7a3-f1ff-41fb-a75a228c3612,1541820983,15613660220021052848
+cce2b23f-c201-dfdc-5ccc-994e13ffe355,4157128439,14357316560607686942
+0b8b71a0-0a21-e8e0-86d3-dc95736cb209,2814271223,4177294741970387931
+c2e8b5ea-d3ac-daf0-c61a-d2c1a318bfd9,4213824355,1125060447885273392
+4143bad3-d296-ba5e-9d0a-1bb7c7f7c277,3407681991,7924533698674759551
+d31a556d-1652-3ba8-a174-7124d1df3ffb,3351314055,4965813644790072113
+fd08d865-2430-3664-63a6-26197a837b3e,1035489274,938084745667339706
+1f0740c4-de9f-c54c-bcf1-f3c8c15909c2,1797514872,9237490653010900182
+9b8a95e2-94e9-ada0-1a40-629a8eff0c4a,1987254373,15089996562471814479
+2bc90a28-81ea-a766-06cb-06641708a864,504363537,16998371340384069409
+a392f6c1-0d31-aac9-95af-0a1b9d5bc83a,3353294538,18061730338199469063
+57a79021-d378-df20-1626-37b4ea6088d1,2489660607,13316649683245442451
+c7b0340b-2f88-d22c-528c-b59c22789775,2427100038,2549789066009064711
+2fccf5cc-950b-12d2-980d-71c5a93283e5,3869528323,3202353852403297968
+6938bc54-ee87-a9c7-ca2a-fa0e8f32c789,2801564159,2558403471452925337
+6408b9ad-26cc-4b12-3868-ddfa618c21cd,2600885505,12492729798451672640
+adcf59e0-c9b2-f070-048c-d88a5f675c12,1944988200,14616985272003671355
+edf6e3ab-1d1c-63d4-4ce1-d554b6522b1d,3675338860,1774617294671599183
+1eb38bac-29b3-676e-8fd9-58fdd966485c,44005527,16120728895665327418
+f87b982c-520a-653f-d393-1c1b5f187413,3911319135,7915210207841748229
+459d9a85-3db3-3f15-d6cf-a8a2d946621c,1480997271,10288200350518559855
+551804b8-556d-6419-a891-ed30f22d14a5,1246514835,4830539156189819211
+0d2c5a67-00f7-b4bb-312a-4dc29c8e4105,3669476245,17574208632237311519
+a5d095fe-1132-74fd-6191-2f010f4259b7,1068986469,4070411956899330483
+f50ab497-f3ba-cd13-2221-dd9e8067a5e7,1227778988,13925342096666628935
+5b99ae0c-2ec8-30c1-a733-6ac33b35d9c0,2827438504,7679525851407214019
+889a922d-8e67-155b-208e-d06aa07f060c,1767616265,12030580176529605778
+9953d41c-e275-0090-35be-e072091b0b32,2643373483,286770490457819089
+830ee428-ca30-979a-70ce-9d9b9cc18b9b,1351655515,15163536503387387597
+172bbac8-f73e-f0d5-4edf-56a79b13583b,881573353,3966914764798464422
+8951a456-69e2-3dbc-fe2a-102c562e6567,2769759855,17331332267015047895
+272791ee-5dbe-a248-28ac-e5c12678bccf,3417823457,7314616511828781309
+0296455d-1684-9e0b-54cc-8c298bf432b1,3226037664,3928165320100020885
+15f97630-0c57-9ad2-9b72-6a47476ccd06,3968138035,13216835689868564215
+d4dd2eae-d968-83e8-be86-63510e9412ae,2575280136,1811851170111516747
+82d23ad0-ecb2-626b-012f-a82179eca497,2866094736,3989774300597482399
+a1a6068c-35ca-4eec-0409-3cab1f4a3872,695165577,1877028558191160842
+3f062133-7653-c707-2b8c-e767b945de43,219601670,159556727306610741
+8df1a7fd-a953-c3ba-1df2-cbc66a989629,1967570693,2713892859253141126
+cb52d97e-6910-3d0b-d27b-4036c4dfb261,4061727411,15080833135494273400
+bed72b6c-7d0b-0dc0-7da6-b95a22e5c043,2338683857,15841806646028617960
+c425ae9e-ccaa-57dd-8949-b10265b2d04b,3387928050,16672685042055776671
+2cf01d0c-99a3-5e6f-8f57-b0607418abdf,3525403689,6166131414837811930
+217b4aab-60a8-55fd-826f-9acb312fd0da,1647757680,3270537826732046033
+81b7e0ec-23ab-f39b-a768-ed758dfaef9c,1684836905,11436354464940309194
+44bb13e3-5576-6320-9c8b-945437c2eeb2,828916163,9007985488320182779
+62f0f8b4-26a4-8a22-d239-7397c7d506be,2861489609,17201743924022629649
+0dc4787a-3cd5-8d44-0127-9632cbc5f656,2063232265,2234323953432560686
+06be06f7-51ae-0168-b1ba-bdac5daf6aea,947118799,17269420667820516837
+e2364e2e-9c74-9a6e-d8be-a5ed8c60c9c3,2993060037,12728245651342501552
+9025e2f6-e405-7e6f-7a2a-7be27fb72800,534619042,8979378417627049485
+42ed027f-c895-85e8-ae7e-3ed2e833e84a,4131248128,5271466212247498581
+d836b296-06a2-c95e-57a9-992d9b267444,2267636189,13296138887632268172
+ea84ad2d-9090-60be-fc19-ffbae1a0e377,1451879597,9260176433638184789
+5b61b38f-ed6b-ef66-7d53-e20e1cb79346,4142270180,13205995350485061134
+9d701ff3-90e4-f979-9bb1-31a8a68ac7da,1933377194,17828311847148405720
+b61e769d-9420-0d22-2acf-9539ba97c272,1184546042,1624882377978464620
+7239fb9f-871f-75ce-ae7d-713f0ff05a18,3799313190,12964628934759328431
+617a72ab-71f0-49c2-add6-633d0695290a,1071747387,18033379636278678317
+51fe52b1-1050-cd32-cf55-1e8a833632fc,2207168247,1767047676679536481
+deb8a10a-8493-e7a8-c6a6-5b48ce77653c,2560741331,8749744468625472863
+a450aa54-2e45-2384-80d3-13daa221e0b6,2264266057,9645943063219156522
+83a5dfb7-c3c2-0af1-f482-453aa41f7546,1906811234,6823988446561924155
+2adabab6-581f-248e-384a-b0cf9bf75cfd,2890868112,198655691355053282
+674f28ba-b52c-e05c-58c4-32eed762a374,3080756952,13535426177180992465
+845e882a-2f06-397d-9e81-4a5c32e717fd,3815720271,8917088266616760568
+ab6cb93f-62a7-62c5-3af1-b1e7b9c0048a,2266633756,15943274392530616450
+dd57abdc-c6f7-945c-b365-1f0e760d3298,2892581441,12170992922546251529
+2c422e26-7fa0-402f-dbd6-aa4b3c6d0fb0,49002187,14610509788312862628
+49f9c07c-b7d9-e900-5b80-8b0d7c3ee669,968335068,13749498776956528783
+8dc94c1f-35d3-5074-3d37-c4ef4dd04e68,2348732084,1621338724435591922
+182d714b-a2e7-4c06-1e34-377b8403b625,710145594,15925045664427201156
+db0deb6f-b76f-e68a-3ce9-cceecc2437dc,621241144,18360679466814207890
+b4007276-a0ab-f5ac-c421-e9228935574c,502716097,2792988045302629060
+99917235-2448-55e8-a529-801b003222ad,2316214074,17327682079170777757
+ad8e4b85-ee99-cd68-822c-c6a4bb0b1671,3308277500,13220830315957226115
+25c6d22f-81d2-1aa7-893b-ab481b296c4d,49675316,4899325513897852638
+93ff8f9f-32ed-66b0-237b-d9c54a9fb10f,2300123546,18317441664230763506
+25855b6c-0e52-bed5-1410-7c64ff5da41a,3688294168,3695326246936419478
+5f14335d-35d4-91fd-c77b-0c8a8633aad4,3489336781,9977806261526458971
+09db368f-e563-32be-de17-e38da12a443d,3389394524,8061214191013616297
+1ef09282-edca-73ed-c239-9a0fe4ff5384,562742069,15529523758976772167
+a5ac1e15-4359-8d46-a79f-6dfd7827c97c,3289870239,6221793277117206408
+248cedcd-8d2d-4e91-b8ff-5d72e5793bfe,4282247870,11314546359076168219
+c79893be-d5b0-052a-cdb2-2a440532a5d0,2375917335,18250909104021313643
+d9c45101-a996-73af-e187-c02aaf657e19,1463630542,11075794198644682432
+a0c63c9c-6b01-a07d-70ec-8ecf8c93c32d,3860489522,14909201450912846456
+83f57520-64ea-34de-c89a-eee5f8f96ce9,3339123410,17264879549286357855
+b87f0372-70f0-6003-8640-f8d366aea3a4,2152389976,1068244064578771628
+df6c3c2f-722a-52b7-657b-af77a09c1134,2420348401,7556085888247920002
+dee0bf40-8346-6704-529f-31d370aaf5ac,3182019885,1068998952295485057
+3461c4a1-eb43-736a-f493-f1d22b7e8334,2237192511,2045120199008065695
+c804f0f4-673b-5fb8-43bf-f9526d41d749,2684284064,2966632818854199671
+ffd153f3-adc4-76dc-0cd1-2710bc562086,147869544,14030132826001995312
+47b8cf11-9028-8373-7d57-8a7bbbf57c9f,857290910,14437051334777207189
+e66e3ccd-fde5-fbb0-b68e-52f71d976e25,509642641,9054009288456864630
+94b88b2d-576a-3dad-c31a-24522ec737b1,510030103,4011284894240183325
+6bae7e0d-2480-af3f-768a-1c2e0f68b721,2621329825,18038894269114484780
+4e30ecd3-167a-cd67-138f-db1158b72152,778166081,9906524574067759368
+7efbc092-65da-7403-5b70-e54af483b49e,3436847160,9494431919435486660
+0c087223-a69f-f61f-5fce-c77c9843b142,3036339493,9020025480737412462
+7ed104f2-0dd5-842b-1f4e-5b314fd7a500,1530683892,8479603136210877301
+5bc13e58-6b58-c278-bf98-f3066b8a958c,2443069056,11602483365602504974
+2944637f-1888-ed80-a98c-7e6051e093fb,610387496,6431590806251142649
+67732cfc-e3f0-162a-02f4-7177871809ea,3749433369,7375662298260236420
+f17d424a-9f3e-c9f5-a8f8-3362f47b34f9,737671185,16113431271572015936
+61b167ae-d034-d280-0c85-ec86464ea20d,3843768295,18409414465398934051
+151ee9a6-eb2f-f3ce-776e-e3cacbc0760d,2063316891,4740424721605986332
+6efe8132-fd7f-e401-9238-ab061c372755,395955709,1859988526590987537
+192ccdda-f62c-51dc-2bac-9aa0c14feb36,1467576736,14865112273547659825
+0801deab-52c1-8f7a-d4a4-9848dc173e21,72600734,14856322363836052021
+dd622012-f5e2-a7ae-8060-45d7db88c544,2861064615,5134604226039749662
+d49e7bea-e0af-4f2b-d72b-486ece882f59,3859431816,14257076669088634216
+7c6b6423-c887-deaa-2766-16b559ed9447,1247085108,14183431742362907127
+1974d161-7e87-02b4-d7cd-d854491ddc19,4140170961,14890063097073485425
+0a52bfdd-1fb9-975d-4915-84c578d4e9ee,1733839104,15603579031093466652
+90ae5bfb-db75-9b2a-220a-fae18d3062e5,808676841,2817411061451909138
+da5c43e8-7fc4-8339-23cc-565630e57a74,2267231234,3737360494545604184
+09bb318a-186c-a293-60eb-5b3648b17e4a,2407417456,14133748314315556838
+6fa5c56e-3230-59fc-84ed-9fc5a0fe1e06,2015841207,13885547762125665290
+71800262-9d73-cc0e-2c2f-e6fcd807346e,3858746501,3408440472411001876
+d20ab13f-6dbf-12ed-e286-f00ea723f23b,1846058454,5839540059713970049
+8d8c2af2-d60e-3616-f297-511ad907b01f,546196544,493021736515761628
+44041844-c569-80dd-bdda-da04ee56f074,2084370733,15466439474098268222
+aded415b-c027-b29a-3c9d-b5a747ea8e4b,1452791013,17040260692217853867
+89772390-f2f3-26e8-1155-e214a3949b0b,3447991184,14849461351259062126
+f3a4677c-cdd9-95de-fb51-3dafbc26a52b,2887932900,12236034461144446477
+8a074ac7-9d2e-6588-d778-f62205cb268f,3018037982,8197474545949628675
+f9823a0e-ecc3-886a-dd10-e6a82542f7c2,3323470037,5481803904903241026
+a8765394-a704-7b65-20ae-2035ec171e88,1725499542,3787486311302900084
+15e33342-5caa-8b75-3c8c-6fbf7c7bc9e2,319967816,9451463024193805479
+cd607e20-4e70-b933-bd44-ba5039a9b602,1225071144,16275968088072776166
+9aaef5b7-c717-6747-3d2e-6b8b3146e31a,4083558426,213807245959393121
+931e396c-b762-a620-3070-80690196c549,2660171823,11850435838622863101
+b6c44353-479e-ac55-f13f-7a14449c7438,2770045320,4904218793219127654
+b82c81fe-2efa-d7cf-0456-d0fe6240d1e5,2227573584,13214622198627889953
+ac1c172f-bc0c-7103-ba19-2db22a7359ae,479502759,5288080683895907847
+4e283064-2107-886f-74e0-cf3098a10859,1872248393,8961713650790641832
+0191103f-282e-9a8e-87e8-dc063d826d08,247195381,14158059920030563837
+d31bc5e5-1bc5-b21b-5782-1a3e493cba7d,3293302518,8262597916053319710
+8dc22532-a9f1-d1f3-cce6-4d84c977dd30,1816696753,4820344304242208732
+44d93e14-3c87-fbe9-8cf1-4f124f684ccc,3881240610,3302569872903916082
+2a67294c-86f3-d53f-6b8c-485b6b038eba,841138735,6839583721731580975
+37ec2f7b-0d54-9738-8ca7-a4f408089759,664852088,12772075991493504843
+3207d81a-00e0-6c28-daea-2b683d104f4f,881395759,7063252875622859999
+b9df265b-a1b7-f6e5-f0b2-31fb32373ddc,2487118262,16300989430204279512
+20a8110c-fae0-c28c-a9ac-75fcf584da62,3792706379,16947316313533854243
+4c49dc62-cf4e-6501-4a7a-67e4c5ae0a62,1058829707,1344021689500293833
+0c08ed0d-4951-fa7b-cc25-d430a284541c,2750059880,4251748866560819001
+5545799b-f736-71d6-679e-eea52d36fbea,2374246121,7855895913468585737
+f033af97-d347-bcbf-4037-833d47d18a24,3095674840,8385611783136461133
+44d6621d-85c1-ffb3-c583-bfc39b6d4c5a,3003325474,17627306814642737630
+a6a73b35-380d-d7f0-c009-cd02e76835c1,2826399696,17585244256880827663
+0b96ff83-ea4d-0c3c-b2df-88e30bef5767,3234367112,5556569766880882829
+4f3be3bb-93ab-e31d-36e1-8280cbf75cbe,2551109405,13094569263868857306
+c4a15787-3712-df5d-77e3-a9769df13aac,1569083580,8118881390175314257
+ff2359e9-9b9b-d7c4-0c3f-62f40cd45f63,3082560550,8202540136347543999
+719c4414-8c3b-daaa-7979-f88128e47959,3147842838,7802044269277677135
+b1df468d-9e44-5f3e-0bb1-e2ae685b71c3,411320364,16440244459892155357
+fe47d056-f10f-f8b0-c89e-11b431388d14,3614027399,10132866045281401498
+e0485d53-ccf2-6391-a873-cb6b4e2bc6c2,2594017617,10738815811628890199
+9e673816-f57d-c145-f1d9-594d0e2f05df,4246811608,9761743971695813355
+07912478-fcaf-12c8-bf12-63a13f073ab2,1889358582,3261317566388837091
+95aeacc6-b070-7b46-a322-b1656ecdbf8a,1878422169,2123228843486547741
+a9e1ccbe-6be3-745f-6de7-34396409e530,4232208369,17101786072244349031
+40781125-e088-fcdb-caa6-fc7fef893c16,569607048,18189594568304719716
+56fde7e3-7a3b-e0f9-57b0-42ae0137a1ee,2848956254,8902145478573604310
+3deb5c89-ba80-cc52-2db9-788bcab9c81b,298300822,17283104826478460604
+11836935-5a10-600e-9ddc-b7e3752009fc,1338027573,2293595766829221773
+7069fc6e-4d78-50aa-7942-fc6d15ea122a,3425760152,265879482671898019
+163c7da0-e47a-21e8-f1ae-86c077dcaa58,4158678616,7353415074242804606
+38a851dc-1309-8dd3-d21d-77a782f89a5e,1410885071,5327844943003781879
+c0fe5909-1e31-1df5-de90-5a8ffefbb1bb,3500869199,16581887007523190570
+06b89443-9f36-1996-71cc-1266d110f10b,2005389539,17063551708035455875
+eb04ac12-1a13-d3a8-086f-aa14cba15353,4187396994,14191729907316357362
+84b4a793-8c20-d62e-886a-99e271840f1f,3019480316,2752512440383923272
+75a855e6-2923-062a-7ef2-733b5543a324,1552544105,13718542711491643781
+90226f68-93c4-d194-e092-386dca2e281c,1224573635,5333053485814464969
+87b3f985-35e6-da19-c624-d08089bafe79,4147633151,9970547279909148565
+e03c0eab-331e-f2ef-55b8-09065b6dc411,3389828202,6775392797710635520
+85e1b31a-a318-4ea3-b05a-d7a811d023a0,108020103,8043743950035782451
+605efcf6-4f47-f189-b464-7e10bc2ead81,4088346606,7423765840779897449
+ccf3e92e-96e6-846c-a055-56b7f6cb4c2f,570664271,7548917340846437189
+c80481bf-1620-82ba-2754-a518d67133f6,2033672859,17634693977634945075
+eea6a140-adf1-646a-27fa-94477f49e1af,286085644,12171571812376572204
+027e0d72-4508-34ce-811c-9ceb1fdac48f,2117549740,13871212838393909151
+6837987d-ee46-4c9e-839e-68fabbebf637,3345858051,11470248136552157334
+82a81a57-6501-18af-24a0-bd71b105f06b,1958107696,8449332921023454964
+ed8ae391-6deb-88de-1999-1f4d847fda6f,4115630081,17472617244308328472
+8f5db28a-d096-8fc0-4a12-f07f47b3756a,3443519842,12083561603877921298
+001e757c-1042-7a60-034f-cef776172ad8,3378916928,2683614099578563638
+0366fc5e-068d-4db0-31b9-786a504b1b7c,3142911833,6911940955573638611
+b2501177-ec95-f543-9f67-f8bff929f41d,2387728389,1240859236857149556
+7d087547-28cb-d772-99e8-036b9b5104ff,1149046299,16283740121051927386
+a5524ed8-092e-1e7c-e8c2-78b13169a001,250519198,3040476071955321424
+60e66691-81de-edc2-408f-ee874bdd3a3f,3340886328,5773487848942730348
+4898c04e-29fb-6372-6645-7ba8a94148ac,1217627301,9188441605146755907
+fac57e18-20e2-6e02-c339-b22ebaa90fed,47823361,1297965061397695065
+5f1914f3-92ad-6e1a-a813-3e5708570b93,2919640025,5765265155476784
+10be43bb-9652-dc13-9e1c-72054696565f,1986588595,11527230986498602952
+b8ba769c-be52-6754-c1cf-eeeaf8a48544,190171017,4943044714996773924
+99ee9c54-9f6a-9fd7-5b8a-ef6014cf592b,4078668023,1085044938173425727
+4e4ddd6c-cba0-6ed9-81ec-bbc27af7e1c2,2352761683,6045581545023535435
+30ff4418-5e88-9885-cbb8-4d4fb3e4dab4,843040651,6371467398594539174
+6251fe09-4424-50d8-9f2c-204f6c4ff625,2694589197,302325155842317446
+755c76f0-67f8-309a-4bf6-d5ed65cc1225,3322955084,4705282542227693339
+f2f77dcf-4a54-ec51-6c37-f98a97906381,954722409,2599287965807113956
+fb5f0fd0-a24a-9dee-d30f-2f9c8d95cd04,960121837,12664567221017193360
+38144d0d-aa41-26d5-8e3b-66fe599f2854,2437641831,17800574359550762915
+853a13c1-6bcd-f08c-3434-1bbc2a2eaf31,3429308467,17952784332750762842
+3cfcefaa-04a1-b72d-a8c1-6ff80c815c94,315132258,12397204656659155165
+4fe8db6d-7135-64cc-51b4-0d504c398b5a,1152448116,8651235451351891824
+f0567bd1-6bc0-fe44-2d0e-bc9b5baf1cdd,3201931134,1305633382661567509
+5c1d491a-223e-fc81-8a37-0792844b6cf7,269277845,4069910791421726874
+b96ce1d2-38e1-a227-ad18-bec78d96eabe,1417486288,13911974242707755540
+8169f6ba-4184-5fc0-3614-a1f377217b3a,1329997291,11962294962173604230
+ba355b46-6234-e29f-efcb-d95349ee2790,43033475,13292173150963345102
+e9e14e45-7e49-6df4-c581-b88266b5f409,1108147316,9988591540614094593
+2f1e8147-dd54-167a-0588-c5531b0c799f,3779793284,14941014383606236452
+7fc30f13-cdcd-dd98-f631-04e554b6971f,2175191908,2025369068027310346
+efda28fa-94b5-34fd-524a-4442cbc9f46e,1680869719,12535635677138889356
+98c992a2-96a9-84dd-46bb-520d6c672889,3675848892,14050409681998252930
+520d245c-a2d0-5e5a-b4c0-5db3f7c9e5d5,882642361,2805057349297209738
+4baf27a0-f563-e2b5-3d31-eb7eb82d77f9,1740905437,9275703358551938074
+5e3183e8-f99a-efd2-b3d1-42c7ac7a6359,1588469155,9055974449984161742
+d888c6ac-b54e-d07e-61e9-5dd52f0d1e8d,757171941,2180862910642962817
+3274c9e6-13d9-e5ed-03a6-dcfe2505cc32,1041342458,17961023041447348032
+70af946b-7b6d-ad75-12ef-01e28084708f,1933592814,9841797901884554218
+7368dc5d-7581-45b0-c347-1293caba7d92,1611003908,5721532577587061506
+34939667-18db-768b-5eed-435a47bd364b,2977156888,8026663331164660812
+cb1086f2-3304-1d86-6847-64ae5bc98f85,1510268877,3644533213945211119
+2e88b2fb-e4a2-887c-b9bf-c6dd28894499,723887447,1556480999459967008
+6f338037-fcfe-7940-e9ce-af3fa54ce8be,1071221057,4879520776436886607
+20af3786-1a00-e5bb-f039-41aa6c6ba4b6,4258469673,17644110852870699632
+6bbb80d8-4eda-bf7b-f798-b7bf333f48ed,1709758287,15931249251103801428
+700d430b-30e7-2776-3bf5-b4043cab73bc,1023389808,7920702008230266742
+55f42061-77c5-0ab5-ad6a-cb08d881b7f1,442674590,15201255872134882298
+b88172b7-0fec-9367-f500-39bc1a3eca7f,3635461009,1260747740649881419
+0581b437-e9c3-604e-d404-cec9c166d9c7,2580666429,54882698777676623
+cd9e1f4a-2add-80ed-a8a7-61953ccc1cd4,2395707480,1161211878189588329
+7cd6e3bf-fae2-ce1d-7a1b-0a9edc42654b,1877248517,11518593689716015676
+49ee6e82-8c59-db60-8e9f-c40e29320cbd,2584242045,9249379455581517021
+4a03b128-223e-08ea-a810-c7d9dac82632,980230244,14524586252973947333
+e59a4915-3be8-42a7-4d28-caed11211270,2998357938,12489801556703047362
+66afbedc-6a12-98a2-bc08-953f1ba2f2ed,2166336721,5380012948356425842
+ba5142a2-175d-7dca-8b25-40d9e611bdaa,1056639596,1784593829169448537
+7fed4298-7ce4-db60-35fa-4c8620fe6508,2265409702,6707061516737940544
+5292bee4-454f-8d14-e8db-1cbbbb9937e4,1667691269,1650727556482218220
+af7370d3-fd02-fe75-41ef-153f809b3ad6,2000238626,2985614687489833880
+519d2494-ae7f-2b1f-7d9c-31af4fa92e36,2842103535,7099032242608591192
+4b547edd-2d46-0d28-69de-3231dd72c24f,1107662340,3232179137537217058
+0e80bdbc-78c9-9ad4-995d-f85b2fdee841,1200912864,11767703573845367167
+546a790c-4be8-0269-bd68-a1a59b7e399e,1548843025,8909983058153774694
+3a632f51-2c49-0390-8576-ea7ce7c06481,2413533803,17313287832668738912
+7cfefa2f-6a7b-ec3f-8450-dd9bf09ff68a,3159094849,9784882735673890512
+56ba4d58-7b69-664c-b42b-22085f7955ff,2720414858,16977064463604839932
+6f686db8-b6eb-40a4-af1e-a8fb21148690,4154573,9169815818199840674
+18ef3220-f830-a238-b07b-cdca386acc78,3713539457,11712374773491045800
+748d638d-d36f-bb0a-67b5-b8a572ce4296,3747257891,1380168128267597666
+afa13cc7-c662-5581-b614-fc486a514870,144833453,10380241270999732943
+93963d39-5ec8-3bf9-0888-a796d314adda,2791925704,6085851376857103451
+2dbe2949-1e5d-4c26-7dbb-9cd335f7a44a,1832718025,8714428258446174141
+ab36cb08-6ca5-2f36-e390-8cb25cc4cdb2,736385235,10002179430787062710
+ea93fac6-54ef-3d73-4d90-bfdc33b90285,4025034787,10924574576845127254
+54c8e8f9-5544-a0d6-0fad-76acc57581be,3392895453,9275544670212978258
+7b631ca0-e44f-db51-3e1e-3b5762d32b2a,728390746,8304991072854105123
+3b900ac0-4082-3388-fefc-c08b80b02dd1,1363065397,6639840878822957795
+4a5090aa-f101-cbb0-83ba-35500b889302,710596139,4716117182407899369
+e97f1589-1129-d764-1c7d-a3ed6ed538e0,2041287348,14185098631314427282
+d84bbeac-4bea-bf28-94c8-4445b3af37a2,1648655551,1354913724091254531
+68ced1cb-b3b4-f05a-3cdd-13fdf6843efc,3720353724,16632565963277321897
+797bcce9-4c9a-9270-d5ef-b738cc84b243,3941838009,9401578197043009270
+126794b1-0c4e-67eb-70e2-1e4320cbe6be,1070175096,10544480274022977530
+c5dbd373-ea2c-2b71-0d68-6caa028e000a,2348363681,11095511753396992149
+8cd37321-42de-45fc-c1f6-442b7d536dac,3306391532,5360519555495284885
+706ecf2b-eba5-d03e-8904-1a08f1376f1d,140750781,17012003738808489664
+368f3be2-6a45-3513-2ecc-d3f872916d44,1251799837,15809749205529407848
+eaeebd4e-51b9-5df8-8085-e42feb24c1d9,3384912988,13441517884439250362
+98ad79d0-19c8-15dd-f998-7896035c7629,2715724591,5428695493862367737
+cd4d9f68-1a70-a144-acb6-2c535f0a9746,787797659,2016687216265279061
+12907a1d-d631-d6f1-9ba2-80d8336b515f,2056669535,11632360592723538160
+5c74e699-90f2-cc62-6929-f3dca86bf44d,892570047,11307479694956134288
+c90724fa-1c86-31b5-33dd-7d6d07829a7b,2470165340,3238048802329593686
+aa993107-1f91-88b0-5805-88d2f717206e,1391667832,269929752949701884
+b8be635c-9d4c-555a-7e02-98b1bb959b2e,1572776523,17108055939468086646
+4cecef22-2d9d-1377-3d9d-e154ad9127ae,3254102580,12859866797691593448
+6be1a260-afd6-0d49-8adc-947b5bacb04f,542504254,15057131138378145394
+2e4e2425-02ca-d218-0e10-ef275d8b0710,3626247094,920942867805848824
+b2f0d476-c326-e950-3d7d-d6132b0ca87c,2031971430,6271882755451841381
+5262583a-a0d5-0423-4aaa-7146b789e94d,3983605700,866948036264880176
+39a02e88-9173-2181-460e-9ac369eb86f2,1625027617,16848531956291703733
+276ccea0-e4d3-f390-df88-db08e82bd9a4,3745088661,4476552166461675092
+a7dfb318-57c7-6db5-cfd0-d61d132ade53,3698361687,8798711045473081360
+07bb4aaf-3767-0343-7f3e-74c6ba722599,3480503177,10489380507719504180
+9de5e315-3bbc-9fc3-9877-2808ca5d8655,1387506785,3201637126371786842
+a9b3156e-464f-e1b5-6c33-6513511053ea,2476998447,13562504650338473381
+14c38812-3785-3114-2e8f-0e53b9922fb2,4136190432,17339321944409937091
+f6a38ba5-b083-18d7-8d59-00589aad3d60,488291375,11216645635442714408
+6234e51f-8a4c-402b-0f3f-3f2bd5954fa0,742692722,10918354038324623193
+9bd7c587-7d8a-707b-7bb8-ad13e73ad456,1846617327,9437301654522633763
+60f06438-027b-89d1-f4e7-9565a6fa78ed,4220729114,17038591409684464517
+6412ccb1-fec1-c1d2-b68e-b33a60788992,3817969728,3804571033355443780
+5266cf1d-73ed-6012-9db6-52201423166c,3572747351,8204443416134184094
+4f8b05ea-65f8-38b0-1fd9-bd06afef30fe,744639031,10817158027010984102
+9215aaff-b7df-0319-99e0-3718e8b47a3a,321550731,10756900887384640574
+08ca74e5-68a1-6be2-3caa-cb52a8b79cd6,1373201582,6681477974857119447
+a24b2c47-a3a6-24ab-68ba-5bde6ffcfa5a,3943591319,15411319581068918816
+75e2e9d7-f5a6-743b-db1c-1ac0663f7fe8,3313844469,11924411280359483635
+b47e5ac5-314a-d203-ee64-54ff62fe3e07,1335964728,13152359338032836239
+cf6d07f5-46e0-046a-26a0-b726b0682350,1332062903,1708853260752770244
+45a813c5-70f5-df1f-f4e6-b9d3de6ae933,3202035991,15571569751795201395
+a5ba2949-ec72-f2bc-c206-a70e9be1e21e,1238210512,7170870672605667013
+56eb9337-460d-67f3-2465-12cd760a1a6d,2103462850,8591287046456282188
+03875ba9-4073-6ae3-c6ab-0e0c526db252,3223056894,8716989709541176102
+b4d0619f-ece7-8795-bbd8-cad303c8a523,421651976,14849674948377224239
+99399221-27b7-0584-9dfb-18e6230c26c4,3735621618,1529266274944639157
+b5cb51a6-d617-1256-f259-da6049c6e318,3914212607,11392485187597921448
+7b0fe6e4-de9b-fcac-eef9-09444110c80e,2133438355,15125462164474388623
+1b28e55c-2ff1-128a-22fd-494bf6af309d,732401649,6576258136635139993
+98203b9f-b46e-c27b-668b-ad5de91c2347,1430136829,14267371376091359386
+37ad80c0-c658-d6ca-643d-a899916e4642,1785568764,537652255846073296
+3cd616f9-7ee5-4c53-a576-91c96e285656,2049815898,11150445084258736027
+0950a33d-52d4-ec60-ba4c-ce780618b9cb,2713409548,6393684532764222722
+e8c62929-0948-073b-4057-bb7c1fe2aa7d,2832240888,11690997172190604506
+f9ebae67-d515-d735-5fd8-457c9945f13b,3365797654,10093069855698451331
+f5aee52c-fff4-688f-3cbb-dc0d3bd3f8fe,3257360177,7803321378063594825
+d4dadf6e-764e-b211-b14e-e6f81745205f,1120774420,9201427241216563064
+95881f91-028a-91ac-4c54-126092ef3e0c,3515456807,3875341267357308179
+4be65554-f85a-b30e-ad7e-53a98719971f,2316494043,14038812227658285232
+868d51db-0aad-3750-907a-e23b824ff4e3,3734318206,6377593054945622007
+76bd2abe-4463-b5b5-0398-2becbedfec60,3271418231,18245854671843065853
+ffb2b69f-043b-5892-c9fe-282bc92acb93,4086644706,11752065994285554318
+82d2f8c4-7ec8-d6bd-954a-3c95597938de,695694711,13708043898179592125
+2167d23b-56ae-2491-0d50-eed90deeca86,3739278964,4548115937060437
+997e6ed3-b57d-90ec-8093-03db3ada39fd,3004717456,4841602022861184075
+6cef6819-a61d-c419-0a69-742d51db6614,1301966759,4584770718789240918
+f0beccc6-cad1-991e-94e0-4eadcf3c60ad,271202657,6895453834120035181
+8db30ef3-07b9-ee45-bd3c-fb46227f660a,3525976898,3071936226092455635
+a5e39b34-5e8f-4533-1a6e-55a77748ddb6,2039028660,4715086109424532825
+c8349abb-7e56-7832-21a6-02e2db5d7f01,207033435,17019485391385877107
+74d56562-6b97-28fd-1dd6-1924df0668e1,2318762307,17275280797718142719
+92e9036e-012f-36bb-7169-832aca27026b,277203232,7384419544378719817
+dcd9749e-0372-2085-aac5-ef7730731125,1159965995,16191950863606062508
+9f2cbfd0-56fc-8ff0-245a-4294a81e360c,2837899940,7922739654793546941
+1966d9ad-7539-6439-342d-5bb483211dd5,1678928330,7091384788028987359
+489c1cd5-cd0f-0838-785a-2a865807ead1,864944944,2898561120811307063
+fc3d5430-7795-397d-21bb-8149c37c4f26,3304464563,18142200133376831159
+c183598a-3242-9c4a-ebf0-7782a821b9ba,3346040540,14621227293196962815
+aee72f8e-8ff5-5992-6e6a-e28d6919805c,437513592,11824845490690331899
+ef519d41-ed68-e623-126f-d61554e0264d,3274228680,6382807404676814850
+11319ea6-9cff-4dae-e0be-6fc56de3dd86,1440051786,10534951792586032558
+1da9e7ae-1399-8a51-5a29-007ba2987703,4641123,2702011200393411687
+0baf9f64-a4d8-f0c1-7ca0-99eacf5f616a,229949820,16494094857308356196
+22fd074e-91bd-633b-8a9e-a511d726efd9,947587766,11338754541943691171
+5b798fa3-bb76-b2b5-a11b-26968ef9ff16,2942611356,17499483222584485274
+336eb995-8eca-cc9d-9436-dd420646cc1c,204426162,12622455047608426356
+53bb20e3-7f80-a8ed-f669-17375e04badc,631581609,15164605543304748952
+1abf62a4-1536-a682-caa0-3e5a06bf1847,1392586592,14308508529784003251
+e51b211b-dcf5-447a-b2ea-599ab8de2536,1736734511,10345672380825459319
+c06c4504-5bc7-3cc9-fab8-d23ad5325a03,3617509573,11916571297003983420
+dd3d125c-200e-9823-4bca-f8d0a3f4c050,4185204736,8454798767732389061
+7ca55cc0-573d-12af-07aa-b8a47b3b779e,3569932373,1001754715951883503
+4f99a19b-9d56-32d7-b0fa-f25e249c4a9e,2586552543,2980786960462609678
+393289b3-c9d2-898d-95dc-e56c2a73a50f,3547604098,9949519623028089269
+58fafd98-a585-e16f-036b-4f3d6a6cdeaf,557677676,7798722557436630119
+ff13004d-56f5-a2c0-ee21-4f0d855dafb2,1393666113,543291499919688026
+4af27e0c-e509-55ba-1336-b6e06203d74e,1201095943,1609220790170577582
+51b9bdec-292b-aae4-e0bf-e1ceea4effdf,2708436567,14621282967905568187
+dbc00338-4fa4-f0ff-1e39-1cdaa95ad2aa,470247360,11510259132534000604
+edd68e8e-8a85-0e65-3d14-3ea269bab9f0,924973059,7913462165596996894
+4d5de876-264c-4d14-4dfe-024c40ec215e,3588069189,10903773447452617073
+51276bc6-f50a-d9eb-2172-caef3ec275d3,280464206,10805381643325627378
+388b4f6c-3891-2f91-e3ce-d8d2fdef61bf,3299460254,4104911248224508756
+58a2f84f-b282-b754-ed61-2b6889097aed,2388418139,12013638485687858816
+60deefeb-be4c-6c0d-0b40-17b51848fe15,3626651705,18343230553823215280
+65ac8baa-8a4b-9e88-41c3-abf688574489,4289816662,15396677984375867094
+8dbae065-b8bf-48da-4d1c-0faa8f17d6a6,2368278746,2097695960068433976
+f69ae736-3f98-389c-ac1a-a95d8fd8adff,1676305732,8859290944921250748
+d66457f0-986a-1001-b3ae-fe00a3c325b5,230245255,8741455328561307491
+b57928d6-dd19-b501-a76e-73caaf039433,707460340,14341215032539711470
+1b9edea2-9707-8914-827e-07449b5c777b,1252295761,9386592177861496808
+c3de610f-1efe-9b6f-8a3a-b5e05d56bb90,2660534815,748190940841660984
+e606d674-e389-5657-d3ef-76b87956095d,1783194661,12772138085904155476
+d90a26c4-e608-e227-6e0c-6aadddda0bf8,3166577107,6860438643119800871
+eb8c6a90-9ed4-bb8e-a7f2-a52b73ff8eab,529123061,4720480340806493641
+0b262884-6f70-8a6c-678c-790f224928bb,3543920337,11474054980666398594
+7890940c-569a-36bf-18f8-43f26e6bb1bc,405795359,5916185209911402686
+9beac281-7442-2902-edcf-3dc0d3fffdbf,2924025854,9662108497491560244
+9c27e227-550a-2e04-d0d5-b550ae3daeca,566818472,9246588783214976438
+2aa8263f-bdef-5138-9970-1e7b77ba2aa1,1887411612,15760169969860560988
+db3ff871-83c2-cac5-3e39-37e1bc8fa6d1,546850854,704672578382478274
+d0bea83e-52ec-e800-fbac-d5f6850975d2,341020270,16194274730513630332
+7e6551ea-b3c8-689b-84b7-17363e1f86ff,3197747945,1461329178694570725
+36c3e57c-9b71-8f74-1d80-8b85ba07c9a3,2180840437,16107331342633427350
+1d2cade0-78e6-b450-81eb-2a20979c02df,1598500879,5623590585162359979
+e369fd79-95ee-d06f-b387-2513f09b6d60,2284841517,4349606297059974770
+3fb6b449-8b41-00e0-f038-36e882f19c32,3259536204,6392061230411643951
+c7c49134-cc65-59b6-09b5-1125809f9f79,2868013646,895774034693235879
+46fa52f8-77f6-da8d-d018-5b9f0c689085,1761202907,9930228947123977976
+43e8a160-ce6e-e4d5-2318-c34ae57d8e4b,1679638570,1785362496556659409
+3cc689ed-c07c-d9a6-556c-0a99089df15e,1490934266,8671106939510226077
+ab55ba4c-99a2-be76-7fe1-99cbfc7e2b1d,3860188534,9230663276484302333
+085d3227-1ab9-9822-cdfc-a82e62979a15,4188563983,1248300078238248524
+d62c317e-8a94-bb64-c909-281cead63121,136727139,12032878601165150047
+26cd0a09-ff82-ec0a-1cd2-d5b3beebf39c,3468001709,7583455537047165768
+4ca42e84-756b-e801-7cd8-d63adc6eb226,3037178827,15780111547830430113
+6c70cdd0-a7ba-815b-7e89-c2ed69035b1e,4003420245,16612779236677737498
+7a5e2515-351f-2187-fdff-8adcf9b2374c,1263780951,4820368248280465202
+bd87e95d-cded-0ebf-8c70-053a98fd6dcc,3191899501,3864297612993194593
+47459dbe-84b9-0c43-d588-83e3eb66a0bd,3676897522,10595221134354570775
+e5666375-a0d3-41ab-9a40-3547e27eff54,2473049011,2732102666494398807
+10548e08-5d28-7891-7589-b7324fb63eaa,941309796,16209202047070116882
+70ea99c9-7960-c33d-a354-52e75e4cd1e6,3833566136,11131136699361530331
+dc7f855b-742b-aad1-483d-26316a26f791,2245964234,13748781942065993915
+2998a0f9-d7a7-3859-cbb6-9b9f939116b2,1276979503,7219827210476003939
+a9b0a1d9-c0b4-3294-2c80-7fb15c6ee2c5,2295940562,10815613764730498015
+799b89cf-ad0e-d686-0de5-9a661350e9a7,3933243724,3754342606807915753
+0a471aa9-4195-4b4f-13ec-8c82120d8d88,1838531349,6856016976793736111
+60cd1fe2-d9ed-c87c-caf4-3b2c05791891,367454694,9834057762596919389
+1d0a6f27-a3e9-74af-8514-561e341914e4,446560902,5824878521397490482
+2432d8a7-324d-06cb-2a1f-67b2edcd6e78,3425135287,5529251953104243723
+01bec1ce-276f-30d2-2ecf-9e426daa41bf,717517005,3624473756715458347
+3325a461-8d71-4b7b-6c64-8ca4c64abe09,1916940156,7066812296591435478
+278a2693-a26a-a044-c05c-15cdead426a0,4075378701,14524002951906567228
+314f8af9-52e8-e247-c5bc-088516abaf8d,3218521873,8161067403197734687
+e96bc87e-e6a6-529c-1596-461d24aa989d,3908164084,11996437794709615427
+c3d1d40b-48f0-6151-d03f-1573aa3f7250,18299125,12869604568065530848
+d087fd7a-92a4-8ed7-f732-d802a76b0528,3228078802,8610211291948379013
+6d92d210-49ec-abcd-c4f4-6766b1665baf,2054825417,2956488015795092978
+70fb5618-b9ae-d00f-3646-0726572fdaee,3828223110,2765854022820001710
+f5cc4e00-3ce8-a3d8-5fe4-6e8fb0f8fc8d,659676180,6493247019610415469
+6cd237ac-8636-3607-9059-d8a26d52d611,2263081134,17786232813930882581
+b95991ca-96d7-f571-3bc6-78f01e23c099,1571072940,8507556200389723509
+2aad0c44-7140-0088-414c-e3e045bceef1,842004149,709945685621329954
+9def3aed-0627-476c-bfd8-17e7af3e1f42,3001306799,15603162654432706666
+bbeadde6-7e6b-283b-0ada-c3a04fa58394,2853954554,9650264886695765081
+e39ee126-a20c-2e3b-6c07-49596eb5fee7,2624157751,10673216565541318081
+821a2921-e2af-8b0c-5db5-e43ca6992405,4258788375,18119708215586851914
+505314f0-3f82-7920-e5a2-34c6bd615a28,876664150,7773702523322471139
+fe9ab65b-1d9c-20c5-c548-3cafbd15cfb4,2055113970,3648836873175320132
+56b5cd6f-51c1-bfd9-e6ad-6b109d17472b,1799660152,10933889783031965321
+1b7cc58c-efa4-2bb4-5806-f0f9b91cdb8f,2484826231,14186322046465723349
+d453fe7e-da12-ffd3-9ac8-021baf11d039,1464594727,6123015360756431966
+93983581-fee0-27ba-a160-641e75e5971a,3593306035,2076371230833950114
+ca66d058-2bc7-cc19-92ff-af654d0cf886,2325223422,3394360556359497567
+a93909a8-16f4-f63a-9b83-3b374abf3596,1280362613,12257349837710687024
+3ac7b1fc-eec4-4b22-9dec-fde9ebf8d47d,2525180593,3928819864609675016
+11868b7a-1365-54ec-0d57-669f2f337c8b,2089201544,16022760477445023476
+f219e57e-a127-e35b-e873-85b50fa4e10d,3390319830,8673898795439587590
+262c05c5-b205-b75b-3ab9-fe760f37d5c4,2045143807,17398707380628916212
+9132fc83-7810-9807-12a9-bec062bd52f3,363000832,2873834768642887678
+4c287c73-72f4-11ad-76f6-cb6fc6cb4e15,3076852067,1756736389084087601
+91e88941-2394-f043-529b-23a563ffee9e,2083935135,192760871780348958
+83ccb7c4-0616-5924-1344-937dc19cdc92,366045199,17182156036379439211
+ecc0d255-fa00-72fa-f884-6fd44ce36e13,535268621,10634957273069889660
+2d966b31-5586-bb96-eeaa-a9b04e1e1b38,3934189917,13021977959897902508
+31d50497-aa25-96ef-4e9d-4d2481a6895f,260735755,2301360351625542396
+4fc46a43-b039-e235-68f4-6bb978a37d85,3177703072,10648530659512963392
+eeeb01b9-4657-391b-4782-6fcb57b86064,3018867564,11298696897096691313
+e3710461-845c-58ca-ae97-a799826b3aca,2673353534,16230762870685040004
+e78cb4a2-b2ea-d047-76f2-4186f8e9bdc5,934866238,10326534887402558234
+5359c4f4-a51c-7469-6ecb-6125800150f1,1410766474,13217856267487583353
+6cce66f8-f0c9-8217-b922-5d0cad79f6bb,1055833693,6328072633167507676
+b4f3dcee-a917-1a6c-5de6-f89672085316,3946400384,10951601204922873269
+85f682e5-940c-1118-7542-80401b47e1d8,2001776320,3506389700112836810
+d1b2e4c2-5d8f-070f-a263-988729b9d777,3172823063,14142462685929244482
+8095ca11-7953-dfe5-e6fe-a8208b0fa791,2143670502,15363318782230250229
+e59c5856-0809-2bfd-cbd2-7fa91835068a,1375118058,16402776617107691963
+c634b1a5-7289-fca6-949e-ea67cb18f253,2031847085,16092365721241946646
+a2069e60-dac2-1d60-bb02-fa40a28514d0,1885324050,15952355865760692763
+5598c624-4489-78a4-bf79-f5014614ecbb,1629898288,14208100618836859174
+b0d76fd6-b81d-aa5b-c78a-c4968ea3642d,124064330,3621298087289032974
+b2f63a7e-a9cf-e047-e826-15d34f92fb4d,3320556135,10626232500448861566
+a1bd18f3-45a5-85ab-c9cf-11580b9ab15e,1857059985,3651595782230600452
+b24964c7-eb59-8891-726e-f758e13a46cf,4026149781,15216647130634916140
+d605fd7c-ac57-7fa7-40b7-7dc0e2578121,2308959645,7555321795553965559
+70e2bbea-ba8b-5d55-fcd4-4ca0a5307448,3900394846,10539573962803564360
+ab1e147d-6388-6221-a4ba-7b10d4741d68,4290681899,8345368662948465496
+b4cd6e73-a53b-4dcc-c44b-58c59dcb9ddd,684356453,13020114163712533980
+08237455-846e-1755-9df6-99b04d89705c,70088668,5352235426031297624
+ef9f6c53-51a3-6be0-772b-c0d6da2e6438,3582197955,2471207256988662550
+2e305912-96e5-c3ac-1cc5-3be42d52d7f9,3656371988,2776517161450303026
+f84dc01b-fd74-30a5-d71d-a09e609f945c,2005262072,4332654865689718057
+f3810b74-ddef-b0f4-49fe-68208a2496bb,3970642846,9874883143586879970
+1e1c9f28-1a39-0d33-208d-00490862bd68,1399030828,18180703656837949016
+468c4166-1ff9-49a1-4141-321d18743c22,241002516,15394928234715573584
+f35f87bb-dd48-9f36-8584-b5122abd602b,1237589075,2395414966037475806
+be95aa26-347c-3542-e380-b3f85d6b9aab,3479077189,1655927124440248313
+d5edd9f0-165e-024a-b948-5976c06095f8,2213219629,2705406891372565182
+b0073a68-b9c0-2481-692b-1910b5a81909,1605985191,7881535954280761418
+e07db5ca-c2e2-bf2f-dd43-9c1d3022c445,361312818,864248789343624806
+1ab1bd5a-e8f4-9c03-cfdc-9efa8bf1cefb,1044212010,6694387711808515569
+76892c9f-30f5-f033-1b3b-217982541e6d,4175855426,1020465130114340991
+9ba789e3-8040-27d2-d80e-0ae77e0edbde,4099107128,921153508437927344
+570f28d7-8381-8300-d698-323466998a8e,3634715312,14598117328649766885
+b25bbb8c-3015-a6a9-5de8-e9069dd68dc7,2784897600,14618546630263416635
+0014c36c-bbd9-2df4-2f1e-8d39cba1a3d5,2854174638,3887031221829378463
+f4d33e6f-2581-a4e1-f320-ad79af15df31,1336903284,16336043155918817458
+2cc2bdcf-1107-d417-3890-a9e287d290c5,1527624763,15411871419155433517
+0a9caef9-daef-5d9f-5d41-076fb75a108b,541728334,5355246058753814618
+ba12a4d9-44f3-b1d4-93f3-991669884f6c,473115148,156065662576064028
+ca86b7dd-0ba7-7cbe-ec11-a9a5db2eb464,1969775776,14225158243461490329
+495147f6-6d4b-d349-2427-c5f34b960e9f,4195109124,14941671389634255478
+f0836819-75ca-c7d0-fa8d-bfe71a9ffbd8,1765064803,13916839319475855608
+44e38965-d85a-cb21-0a5a-b664741b2635,1486665998,2507359305508744367
+7a3f8102-809c-583b-2f8d-51f29f0c07ac,2892044661,725103807652667267
+adea0fa8-20d6-3c19-f0dc-e01780929fbd,214518661,8619904199425751804
+f063de3e-532a-191f-1f9e-36e7ee383ed8,3967736670,13911681412191638930
+0649fde6-5387-0c59-3f82-d0add503d7d9,3205754102,8113544994880700081
+8f725d4b-fd31-690f-9290-fc7291e9cdf5,254888614,12581061515791337990
+170aa2d9-5537-1ba0-9e92-e1d08aaba0a7,1690614351,2529792291905901470
+e6bc0bdd-ade6-24bc-d77d-bb8c7e4cea07,1714972055,13859437754739411415
+a3d46ff4-91ed-4310-9d61-cf72f7d012de,221487874,16637762825122947843
+15cc9eda-8cdf-89ec-a4ba-82add606c9b0,3277877321,1500183355459590779
+73550f17-a585-d86e-6c83-1d66a468b3f4,75453892,12292220044468447435
+eb95f060-3524-f9f0-9bd0-ed3c6cf3bd25,1399348087,5169751530351161640
+cbdc1991-0c65-91a7-8f0d-2043798dd1ce,1801116694,3490566806824567435
+1b91b1d5-dda3-d39d-c6a3-a98fa209b9c1,1866865103,14953329047783928736
+9325a972-9f92-7f24-89fe-e0cec588fce4,1539164419,15367795358888197130
+d7a32429-282e-3544-7eeb-9960ea0c86e8,2195847742,8395513238352800001
+0107d575-3954-deb5-7aa9-9311875fc3f6,3886505874,15306354057599500183
+1dc530e4-5ec3-1938-c3ad-937f50b0ae07,3243421656,9942562049534588136
+46d51a3b-14aa-31e9-1079-15a83d15470b,2716470640,15785370710069594412
+8e65c738-59b0-8754-fa64-bd887fc8d476,4001179381,5116487774998556923
+04db0d4d-4707-88ed-b97f-20a25dd8362f,117223417,15632026597372535331
+1e459ee3-f14e-914e-3be4-e7d72163e81f,1147409971,3752985774621178183
+40268be7-af46-a052-6164-1eb336c69753,484387643,12257919023152989790
+52159d6f-2814-0c9f-1b43-2dd3beb06e51,2819286169,15311708861729829702
+f3158e13-2e40-95fb-2602-0b9d4b153a66,711534802,3010153466254099723
+ce6415bb-a35d-2781-19d4-5e62e51209ca,98637565,3604116120985471745
+71f07187-4d0e-1204-1c71-7b8eda1ede78,304505475,14578074282737947071
+f0d28232-4145-81ce-3994-2ba3a6d201c8,4043657250,15987034985622326685
+24fcfd00-9d76-9714-b608-a68af0256e64,1245910556,3165815460914589205
+1bab35d7-0838-f54a-a6a2-524e71a6a8c9,2677405207,16378278594165944972
+d134d77c-ce98-4263-701d-0a4e7dc0e879,1351835021,4885690319182739506
+3669e9f1-6607-1450-836c-629c31c79038,3042011602,10118737734487470849
+99c07e7c-d5af-52c7-dbf9-e749d63d59dd,3623899020,3281821644887601213
+b2f430d6-c691-bc64-f6a2-f4b5b8f621b1,177759909,4402306408289351779
+32531dc0-b37a-5606-449e-862144ce1768,1555514659,1575239407817872780
+72629008-c32b-b33e-c2df-4cce63d683c7,2621699721,852257438747721083
+0660d87f-b6b7-ac7d-3e35-d457aa61113c,3002114643,14157733108088681648
+ecb6ad42-cce4-6925-7adf-6305d55d9c10,1743970099,12555288188854811334
+64585f0f-7b04-5459-e9b8-63f5494ca309,1868274977,6699967129060516072
+cc7e5ba8-a6ec-6130-e884-e52f8c02ae52,922165074,17709096415886229153
+b80069d5-01be-ea43-a553-36342d842860,4069360743,2006788442392704066
+5ddbe4e7-3595-5ed2-6f2e-0a9f56e3c38d,3550990008,9977631243012263978
+dfadd586-49c7-5e10-bd4f-3eabd295e93c,3401899492,12540194659669398660
+1343cf77-6e71-1521-7edf-cc6a3bbb66fe,801502630,5066560425852895520
+821f5929-4f01-be82-f82e-45dc4ea79d87,3922077612,18299479706083048536
+64eea003-2f89-8632-3d1e-f3b08f5b6619,1340100122,10788897047379181072
+c08436bf-6f47-68a4-0d2b-e6c8a3311c36,672824833,11143988093842504165
+3f035f2c-819f-d7aa-e51c-d70931875e69,3429062547,4439228456675782135
+5c405b45-04f7-e2f7-61aa-efa0f2d8c465,4016591897,8818682750765324797
+8188ab22-8eda-6f17-c797-31ca9aa62df3,993211549,14456566662965842480
+9ddcf047-01ac-45ea-dc3f-c26f0b005bef,1323101997,15804946521099630409
+a97e04bc-ac94-1596-ee7f-512ad2780455,767475634,11510702109052491498
+f590d1cd-9a58-9ad4-a3aa-40cb46594628,2650566649,13175339958995170514
+87e4daa2-ebda-d3ba-46e0-c626f1f36ca3,3942987482,13030753937915503652
+53e2aeee-4abb-3dad-2c7b-14f767c1e5b7,285732358,14109484851685890971
+6b213f60-3a92-c464-f189-e05c33b50cc4,536299349,15096888036207419858
+c62d3410-8346-9f56-f418-e93be5b0c17d,3537325815,12631706414978347998
+dd69acbc-aae6-1cdb-83a3-ad0cb4882174,2754598461,8067907337675808864
+1a3ea19e-99c1-066c-cd2d-2feb3609f362,865859255,8929143429733024603
+833f10cf-3ab0-42ed-d6bd-1b8423bbe1ec,677881501,5399791729076621242
+61cee9f0-c2bf-f921-0230-47d682b6fa13,129830338,9751201648745227443
+f9ffb48f-0a8c-d6ba-9835-8850e9791d69,2580334265,17266632664218049113
+6ef750f6-6649-609a-6b11-e0625c84179d,1700852554,12720641463711234975
+789a10b1-9e1c-15a1-85c6-9b70aef78f14,1137607411,112582314035219532
+ed04b080-986e-55a8-6b04-7e0128d96197,2874174357,13271277936134175568
+66e685e2-e80e-2dcc-d612-3f0423529063,1269056713,328531233051790564
+4064b3ee-2aa7-fb28-9236-fd2924f44aed,3594001327,4525937763507726896
+235329cd-791d-c884-953e-c0a97d632959,3034800798,1849810159277787169
+e57395f4-9406-2b04-c764-1c6fe954237b,3668881362,16434433164485078577
+a7593635-bf04-d030-2d78-a23a034011dd,432126335,8157872717087482306
+95696555-94f4-02a4-ab19-29dd979fb26f,371272281,6463386556224368204
+9851e9e2-ce7d-f48d-3074-28476abdf576,3723783194,10795200745228025952
+256a9ea6-685f-b3fa-3ded-ba3da08e1cdc,1110442927,9618346655945782406
+5f09f38e-0883-364a-e933-a850995e6f1d,2496471470,3638636529769562121
+74869d18-0e09-6f0d-0b14-f39cd034cfc5,1493912629,7965922210768843879
+2c22ae4e-42d7-d5b9-adbf-a18e1555d7a5,2786148317,11349651810826694745
+3c3940a5-a37d-4310-fa9f-f71cca1000ce,125347304,6630647852000063003
+d021060f-e6c5-192e-a7b8-00008f40beda,3059777384,8070423960850267210
+ba34f064-1701-562c-85d0-fded06aecddb,1558764805,11942528525579246147
+496b63c5-e4ca-5ab6-33b5-068df34989b7,1560324426,2660805039491529002
+bd4dc437-9118-28ac-1db8-c76ac5390a3c,709057562,9829376322877800890
+1b8900da-2493-77e3-91fd-8a7e0bdff16c,596628629,10419143335772117692
+79f61d04-736a-2600-f829-d606b6fb024b,1204072147,2360242876516853680
+16fa81d7-a9c1-f211-7c30-01f39098059b,424307014,13965121361448447847
+a0f7dcc2-594b-e71a-7b70-5af2a24dab2a,951177194,17294177760870527270
+a79e1a52-5bd2-c32d-326e-52dac87065f9,2351097356,2398565549222473816
+cc843e6f-f175-ce37-37eb-a1a876e13f33,692270302,17753494032377477845
+809be18b-eda2-1b1a-8d40-bf36dd7fca50,48683206,2107140407417192525
+ca742124-492a-2c6e-ad1f-41b647ed827a,1297134739,16256033756864900643
+28719a32-20b9-ea8e-4b3a-da8058af871d,2031129821,4722624578164954247
+7ea0dc04-7f64-ab81-4c97-bd7a35d57c71,1781300616,10099147144489456931
+ffa70347-b1c7-5673-31b3-65dea7a27de8,3359777004,2712986195152099784
+02617d79-4419-5ed2-4d7d-69641c14ee9e,3676499214,9743219435528321247
+91418c19-3e07-5d58-74f3-c583243271c4,3462225286,17772926933118914548
+80ec62f4-cc63-a7d1-b3c9-658112863cf5,1228312351,11593595793978150416
+44c2c328-096b-bfe6-dc07-a56195b9240a,3756750504,10777049593619950319
+1cff4fde-8604-e6fd-563f-e18662cb0718,4055563555,8010309237090107284
+79716611-92a9-0c94-56a5-8bfbf808f219,1187415093,10792273946015704563
+36b878ec-046c-959b-d680-41770417d67f,462808849,9376751623329615676
+030d3c10-5bba-c033-9bd1-6426799f992e,3327128394,10069660198770825881
+748b18fb-22e9-a381-cc86-d7683156f365,3959720210,11193310007603131513
+cfd6cf61-ea2e-1993-8159-42f2a009ceb8,3968197161,10477534228589708840
+45453be9-a5d2-1b76-23a1-84e31b26ebee,1452968092,5380823413075653591
+6996686c-0c0c-70f4-0047-884036cead03,2478923081,17918422341221395050
+2641e057-c1be-719d-8d5d-b5e1cec0ff96,2795695658,3084328858241192121
+68089f78-a6e5-5bfb-801e-cfcaf0fcee87,1451843123,1500540967596507162
+5dc784f4-b608-08e3-5e3f-f11323d4c295,1912076486,10445169689154820812
+7df054c4-3a14-9145-0805-48b7acc35851,1688824972,587255297825821072
+9304713a-5dea-d88e-b50e-47582d2da3af,411629219,3664482934299358585
+ef64c86d-3520-00c3-f6c5-5703b6e742af,1984385309,3932553825082098149
+de6a3e52-c7eb-cc30-0174-b63e28f8256e,4189072802,5770013835003193116
+63b6c6dd-bd77-360c-b364-27dcc498fbca,2237678222,3917568032519478097
+df14286a-4ddb-01a5-600f-4bf08968d99e,3292540181,234659682229768628
+46baf531-e62a-29d7-3a0f-d29d88d2c489,395688606,13877488583062656156
+19e1fa64-7c97-dcb8-b465-3b4d9ca71046,3564435322,16017088379638816206
+7a4aea26-d7c0-ea97-cd3d-e7a94f014e47,731313001,1423845814197558715
+af30edb6-15d1-1495-1caf-9d162c6e3c8b,3407026057,15166126192807076939
+c94da99a-b3a9-0097-0e66-c445b72f7ef8,2041187702,16530015091943737192
+bbd7cede-c40f-4a97-62aa-0f843b712020,2755510235,5062763025086448054
+3980e57e-b5a0-2dfd-3dab-bd03e3b3d8fd,3052295382,9066434538253448207
+083b8f9f-077b-6623-b947-0642669d8246,1663860703,16356165871928187962
+93243d36-6afc-6052-0efa-6d08b3711653,1053293424,787640389655367615
+5b7eb666-6d20-1d9f-1aa5-4afd13bd0cd5,2201748619,3476772717670606375
+ce8ae5e5-ca0e-0545-78e1-6b6987de0069,2352431213,2239248842531174228
+ebccf757-7fe7-7c2a-14d5-b7189eddc890,3802442020,14012724929154521940
+8400675e-f95f-751d-b325-7d0fc48514a0,328051352,16423459461077778831
+edbab39e-9b90-0cb1-a8dd-8070cab24bbc,2874230207,15724807127742834128
+5e31c8f2-e8c7-f9fa-1310-f908ff0e8498,264504841,3417713544474322505
+8f07ae34-ae99-6aa6-8c9f-eede2f04aa98,1248500539,16131243399945464042
+aa90f5cb-3a86-8d2b-ae3a-65bf5752ae3c,1947236442,7914364762243258141
+114d3353-b7bd-4b60-7b47-63d49f723882,991480388,15427170649570786214
+00283b9e-2a5b-9854-90ae-f2f0da416e92,3332178531,17748738914049939956
+58f7fb29-7537-e55c-0b7b-8dc4890caf4a,1197617843,561299933056368022
+e6d2e02a-2d79-71aa-c3e8-d8c30fa8a3de,4118498820,14458186168047757108
+690dfbd2-cc25-657d-0362-05d9c76cd06f,2599815364,861557014307094707
+80671e47-915b-0e36-e9c3-ac29d5737a30,4055825940,1174692371081297029
+9ba7e5c2-6e7d-3278-36cb-7246666d0017,2812525329,364778344438821681
+6e9826ab-877e-5188-b48e-a733144c0c84,871173861,9933105271551045800
+871cbcf1-16b4-e4a2-0500-2d1120356996,1119350243,12237738030828878240
+74eca051-5a21-d8bb-6039-8f09d11eb421,2243640095,10246752768203484872
+4adc761f-9dc0-9c98-ef00-7c9fdbb44c50,1734341080,7397522564228725941
+2741b046-7b5b-b4b2-d745-743fe5fb1ed8,3017973765,11808306945422928604
+6891dc3f-1480-1d5f-78b3-d79e310247d4,2218062764,16738371023596469100
+f8645dba-b63d-605a-8a4e-09721fa8181f,1558146392,16261538019911142669
+e5761e88-d307-3b9b-e1db-d4746e864128,1193383241,12024527771328897165
+edb79115-858a-50f1-e5ec-508a91280a38,3509469,12358184306626021578
+8beb3968-0c3a-de08-56a7-9e99c8f04273,4248108637,15371228438958412144
+b0e31a37-b3ff-b712-8e39-2736fee5579a,1773249024,836299047235198682
+b9a1f798-be8a-3f98-b507-fc6102d1d0bc,3235127218,956577794427983855
+9de75891-e5ad-0433-be8d-e57f96fa2d36,652358995,18137052582955504140
+8787da80-442a-9737-9a70-628e850a94bb,663326690,1301124184026933462
+14bc64e8-86aa-dbca-bd77-23d4d8eb477f,3204015758,9320775093799353375
+a05d43af-38bd-07ca-759a-a696eae56bbd,1763577080,16481040852176372437
+55e7ee53-6b16-a633-7761-05c173e24b62,3527437103,10650298937648061365
+4fdd5cb0-8eb9-150c-c7de-129f6e24f3f1,200557854,18147675303184745527
+4b46082e-2c09-c7b4-366a-6a70e965b666,2337533899,2222133049061432663
+b28f9441-e9f6-4ee5-7db7-c03c899be825,4113587912,15329687998902487300
+d6b39053-3e33-e2a9-5dae-529e32b116e6,2477173245,7701919737437438767
+c27a425e-1d99-9530-1cad-adfdbc444e53,1906748060,17713721772513593999
+2a3de2f6-bc1b-a36f-5895-0e66fb6e055e,2448882303,10991013806427679601
+0a9959ee-987c-744e-de58-3584d1c9e0d5,3567787500,8080725853598743474
+f9fbb630-16a1-cbcc-b53d-7866b478c4fc,1306253772,18423235914313024212
+c059785b-b3d5-0dda-bf1e-7064ab3c9eb4,463156094,10178172132130124859
+980d029f-6980-fbf3-b1c1-777c223ce3a7,3466746201,17064399114720092287
+439627c5-b972-661c-6b5f-f39f2b94611a,656496301,3786766456200961716
+ed3aef5a-ec04-0f09-b6c9-f227c136f848,766316348,1942541623032594075
+a9093e47-3ba9-fdce-4865-f4ecb6ff9cfb,2191124280,7486835292571514503
+38058261-f76f-abf2-eae4-9e0931defcf9,1017753931,12001549075005890054
+d876c0bb-6eb8-b3b2-f393-71367a6ed86e,3619916671,17633179767829014320
+e116f059-efbf-a3b8-b79e-5d59b1d074f1,3629688281,18237209732631464423
+2df2dcf3-ad14-f17e-9acb-ec7d3285b97a,2412940547,12602567341405344069
+10b07616-d5f1-3a1a-0fb0-a8fe2fbeaefd,3521379244,4214294365836062816
+5eb5903e-6359-793b-5c3d-00dff3066f27,3880165334,2407063274719583810
+22c82a63-f4a6-70c5-5008-f64b519954c0,451457769,12894554525583769690
+9881101b-c378-67ce-a33f-fa269eac9f4a,1465996903,13562765961691293071
+cf2ba74a-45b2-ac6d-34f0-c151e542dc40,3373288117,17091176234996728329
+2ce45003-0ecf-8ee9-a25f-8fcd5a280f75,3942097303,13564824812271232571
+98248b11-2914-5ea6-d41e-c815914ac394,48735243,11737893415149210598
+9edf009a-f079-8a93-dbb2-3bb5d153fd54,3478995152,1722693429657983474
+aa451afc-90a9-93de-f8d7-f09297f4eba4,935917333,16497692465694423409
+75f8eb1a-c0d7-fa74-644a-fe30608523dc,1802137675,15995082952476235793
+1e6b6007-79e0-ab48-a52c-a9a27571b493,3117871693,10321972994182329366
+4b714167-6a6a-da23-d7c8-a94425bdaf1f,2126878359,11079544731188237944
+48ab7551-17bb-105c-5e54-fc3229753c6a,3429280401,6236769179445937756
+789451ac-0603-5ca1-4ee9-3f102ae0cd2d,4143695702,8606557938937042346
+c7e17e72-29ff-cf70-0cb3-5cec88ed3e5c,2895019135,3399008730883177686
+f8717df3-8c31-d5cb-e9a0-2f6e9409c469,1155082928,13887522584534619521
+374d6cc6-c73e-7900-51b1-b6cc8a40653e,3066567288,15054185235931493174
+fd6ec72e-37b2-c762-5992-04c79582d81f,2830517438,17904471153722557041
+f6e4745d-29e6-b49c-f889-a294988a5300,344220737,1365842900239604872
+d97e61c6-b17a-d1de-ad21-3dfb3473aa48,712195575,15676646573697518127
+85d58e65-ea38-dba7-1c1b-7653f1e711c1,3743293647,3786794638006847380
+c09437c7-ef19-7136-982d-be2fbd824b10,3537271975,16337721912187747176
+68e0a9c4-69a4-a7af-ec64-684767f92606,3869031640,6084636835200453964
+602ab4fb-aab8-c13d-0b77-0a4ba4fc3326,2167361412,11177818189148950902
+ee77c2c9-8436-aae2-51ad-b724b55ff04e,1196613700,11335514983054087260
+eb6e15f2-19aa-7be9-ba38-3f04b9d236c6,593699349,17802370734491799352
+0491daad-dd50-260d-f338-71c30ba7f26c,1963870124,10623212086705241043
+5f916b5b-abb1-4368-ee93-94518af332f4,3672526003,962558849858139631
+2741c0ff-1b87-b908-c18c-b0f2f69fd91f,1276046050,17322901093006254995
+1c3e3659-3f59-f83a-e9f3-4bd8668d3374,1786671913,12067815228768087143
+3bad890c-7cc2-1b11-afb0-320f8d347ad0,2558865715,6530841495920754140
+11d9fa42-2d72-2191-2b36-3ae899a345c8,2103373865,9923076430947065271
+2a0d0f9e-02f8-152f-8d57-bb98686d00e1,39696353,5294163596035317684
+a1771ba5-9fe5-68ac-c785-c8a80fd64d55,806376977,9705486906233378881
+95cf0751-f095-1aa1-5f9d-41a7824b9ee3,4063315820,16290941074426978667
+cb9369a8-27f6-f9fc-acad-fe369d392a72,87246436,4355455383736258615
+ac876467-555b-9b14-f78b-3ab4c4a77d26,304862461,8952991343348711943
+a5548c49-e3f1-a91b-b1f5-547fe6c2786f,4154558902,3379836959917681237
+d49c7e26-8b94-812e-2e32-053eb8ef6bac,1377304958,7029690249854134314
+ccef1906-26f7-f3c4-2ad1-2a75edf24f2d,4294151077,9260587956035263151
+06b98ba0-820f-05d8-3aa9-260093bd54e1,1585019027,15740913233750856265
+03db463c-deff-1857-38bf-f357126d14bc,32627435,2783744779814741295
+000eb0d9-6ce5-ad3a-3db0-df248e3d4959,4123969856,13939171890435957639
+3d7198fe-8bb3-4469-ee8e-a0e92994ee1e,2262749890,15335186066200370129
+ff12e8a8-1e90-80d4-3300-601133e34886,742997414,7421531494658219787
+8e9df291-3145-5752-44d7-12891ceaaedb,362849132,13284318233031353187
+ba5c10ed-f957-c319-f27a-97c20a50a3ba,156491299,15737700873976362898
+0f147122-d6ab-fa3d-4bbc-9dfe6cc1a04d,4145093764,1281221787319368516
+b316110e-2bfb-8061-25a3-a58c28b2af38,103865439,9903306681407531634
+de987c33-aa30-e9b5-3f12-1d7406a98309,1422332197,8420358400893958640
+c7596230-6438-c028-dd47-492f5cf8bf5c,1491073519,7794419561014105134
+e3111661-d4c7-4856-3843-95963874327c,3730427987,14071582663905361772
+918f94d2-ac07-7ce2-8a8d-f53a43225a3d,2429229880,16817351054908655658
+e20f9e90-cbc9-f61f-628e-78dcefa6f9f6,1762238583,12660489051542461735
+2b3b5122-b799-e38b-10ed-567317840e1a,2229209921,9369334077225797317
+338c4adb-bd9b-33e6-6ee6-0bec049d48a8,2908271760,16335775111038145816
+f8492de7-cca5-b2a3-7432-82827da855fe,1566494050,6812455541981237902
+05469184-ac31-5f53-7548-64aacd9f3075,239249109,3656897789334046976
+1f91969d-b5b7-611b-00a1-09ddee89c2fb,2994263442,5200625781732239028
+42d99378-dae0-8a4e-9a1c-3b294b83f3db,1978907293,8527404920311914441
+151df52f-aaa4-48ed-07ad-6908cf9850b2,3666009160,18251182716822847587
+a2c0e820-d053-f67c-88fc-a350266b8c82,4027243960,18131218391171508478
+042bffc8-423c-0185-bd98-cf382ac387f0,52848564,8341135768471363319
+764cde44-9fc0-7df6-b2af-f97bc915e529,3131703346,211601286269947180
+a306a3f9-671a-d860-6139-d075c840b0b6,1272655186,4124340053239158640
+ae38f9b1-21e7-ff41-8aae-e7a0243b64c0,2599962499,4914921084516207315
+3f8280fe-4ed3-b465-8faf-cda335e1f25e,2505947132,10497253822346441598
+8253e553-8838-b94e-1813-b153c141c6b1,2494916599,8934024607052695142
+e6156237-386f-2a29-4219-0a30d7195453,2306495483,3843280216456643926
+3acae97a-29c0-24e6-eb5a-5e75f361e2ee,3454438898,10355030272968685633
+cea6bbea-ae5e-0971-d8c1-7ccf94a21033,764856148,1542647598081664750
+aca1623d-2a37-c95f-a34b-2b26ff48cdf0,3704153029,15187227187161032356
+722f7ba6-bd83-3156-85d4-0e1b1769770b,3227645870,2856713869929330055
+1c7ea385-3c52-e1ac-7e98-6a1f4b9afb2b,686075600,8529633739114197777
+d931fb64-31ac-b5a9-506f-b6bd2a205bba,4288096783,7489547388745796346
+ad512f43-3a9c-f644-eb07-68e30a6af6e9,3945436946,14958547725152055290
+ed914779-d366-fa88-f710-99c6b6106868,3888615262,10129430162556071702
+a061a3fc-ea57-18ce-ec9e-f8f33a531780,1756504230,7416162574794117698
+4da0c634-cbf1-6d75-978c-b442bdb77ae4,2960365078,6728609648631216523
+d90c9217-6056-6620-ff05-fa58a696a46e,1614449569,4418018543932025430
+3584d2bc-f940-0707-c976-ebdbd00e3979,42664770,4487268079839571437
+15839ee0-da5c-787e-3b39-6a5dc4e08263,341650371,11118882517643265209
+d3264f09-656b-c108-c960-4633c17d6e2e,149336896,10454458767724796726
+42b6355b-d1df-209b-71bf-7f8d5e9e514c,3510704246,243911876154520365
+dc8b5996-0757-1ead-2672-0bba95784a5d,2526003948,7477674937373101606
+fb910817-a71d-74dd-1d95-92ec88f74d7f,3875363128,14394668949297508429
+565cb021-2164-4137-bb79-b5e38c95fd43,3865825924,6862801466615946175
+6a269aeb-d9f2-8cb8-c680-a691e4a3f772,1390428184,6452005151145737899
+4ee0b4e9-e7ab-d347-cd43-6e06229daa68,2321579284,11689701639404118306
+296d23d1-4a36-7aac-91ce-c95cf2673a9d,3685036135,13951581787896633501
+77be740e-bfd9-94fb-5731-6cd9116ad323,776242708,470046919140966786
+02f1cfd9-d1f8-cb01-ed42-c9be341aa873,749942165,11644131034884797920
+f1bbb4af-de6f-da66-0bf6-60e8250cc6bb,2557469789,17734240430238671375
+049fba58-b208-e9bb-a493-89704bdd1744,2202242252,13736663012726380885
+fd9514db-a14d-21ba-9385-a19d9a516730,4265451415,16249904839647825009
+e18fd7f5-543b-1e14-39dd-b80f39d551ee,455892809,7553486035616427431
+2373bf3b-bdd8-afb3-24e6-29c7e193896a,1792238680,6545525331124165137
+43398ad9-73fc-d49c-f20e-2ce1a65753ee,297023493,17479217782397396123
+d9b0597e-7c5a-70ad-f8dd-5cc6909452dc,2069357302,14051023557046768972
+a03038bf-9580-6e61-c587-46c16794c5a8,1403435331,11830823472831629435
+f48cd501-4768-807c-1270-062f05e6eb2a,2740853025,15661426948157700408
+6a8ff2df-2465-3682-c01e-9177e6b0a4f1,139953564,13937019618571695961
+abac6584-518a-8aa4-73f6-1cd263ef0bcf,1423789445,16471583419327404363
+5f3e289d-8abd-4ec7-8866-c7751bc5ae51,28935114,13547094146037145236
+a8f91a62-1043-bf6f-566d-676ba4f8b013,1436804318,16214797152533381708
+9a1bdec2-69d8-ba06-c738-71eb6ea1bddb,4122709327,6237814081610137161
+f6153436-2057-3869-e3d0-f8d32abf7660,297867533,11397729520007965193
+2c1bc3ac-bebf-e496-d205-ceae8ca0dc95,2977340676,3570456737940922745
+273610a0-76d9-a173-d075-126d191fdf85,3134877270,2244577131969182959
+97c15afe-add5-6760-5bd1-0123f19cfb60,593698229,14364313504323920947
+dae71259-345b-13ea-3bd8-41c4a96d51d5,1080460077,15918921352851282167
+98f95803-16fe-4d30-c449-604064870648,3107697796,17621314766764198391
+1fe6099d-1331-6385-264d-ffe5f3c0028a,3220707555,9308939014852790364
+9e8be765-3d56-af43-fc78-c9ff690dd27d,3030296167,3407480361601942918
+0c64cb8c-0588-8ead-59ce-7681a712ae2b,1566818237,2804980333633254960
+e6f20fa5-9ad9-b1ed-f731-555bfe49e61d,1404479984,10875382749948309350
+c6539a24-e7dc-6cf6-6c92-de9d9bdfb6df,3496056399,7699962211033108874
+62c94d13-85e7-abd1-315b-779ed6a22e80,1104080720,367037966673991907
+5f676fcf-ea45-2869-3c60-f17f7e5c3a3d,2618262361,6014395260042886407
+275a1adf-783e-2f84-1a88-fcf70f91c9c9,1143821189,10470574983707693715
+9669df51-8cc6-b19e-c8f1-12e7668c5438,3200136781,4790857156113907360
+b6a7d1df-599f-9589-be30-516c3578a523,2098629997,69750228828609205
+51f4fbd4-8a22-9f06-5323-575619e1fefd,1171903777,8871449238839051897
+45b633d2-a6b2-ea72-a200-08354bd0f30a,322491151,5244664904602612376
+2b957b6d-f953-f468-f812-e1bdf5457b75,736791289,13237700941807776603
+29d7bcf5-b0e2-be39-e2ac-a591946f692e,2743413577,599791438786561738
+5b5b639c-95d2-dfa3-8f09-90db92208682,2886961369,17249131124955099794
+d2b63e5d-be08-b6cf-ef95-dc743be0c610,4127751092,5013032777267048946
+6107fb40-c8e4-f887-a73a-3d2ca7df1ca9,3520028321,9903199593546158345
+6300902b-3e3f-7706-49b6-e47a404a0f7f,4017731875,17164210585396103033
+dbf5da12-0251-33d3-12bf-8bbee5d499c1,2022134913,6869701311320582339
+1d6b9508-5de3-7200-4ed6-17aab2c2f8fc,1815776006,2239085560722137450
+884c6751-9d40-8d79-5d9b-7daa5887efb0,1018817710,2677078470380557679
+37c6d4d5-9e24-b41f-a53c-381c60d95b8a,1302399667,7261266069491966949
+57713caa-87c3-36c7-d5a3-2a4f85f71880,4247870867,8194804701494598114
+4e26d753-fbf4-5bfb-62b1-9ce03ccf92ba,1359804764,1567714717102561485
+8b2f3337-7f90-ee31-09ad-0068bc0ad34e,2971168630,16229319646350034801
+da36799c-c71b-40e9-aa7f-d051342f474d,3852385117,15980156757478646575
+856dff56-dfea-ec1b-f460-a3aff7022f4b,146951763,4199099648897387613
+7581ba00-f247-d0f2-a5d2-4c26687e66d6,1215834684,15306003565140187468
+8186d442-871d-d8d9-e17e-49f47ed3ddea,283377139,13668175275002396742
+1f26d968-5a2c-9c30-f6a1-3b81c720a3ad,520354101,13020576351404962647
+d79bd9db-fbcd-3b2a-783b-392fca59f9f9,2789930548,6721782079697561874
+d99a41d0-b746-f1d1-4678-96f07c534c1b,1837057798,1709756674984594724
+5bdd6741-fc16-e348-1070-7b873fae97d6,2154703321,3370640878043501831
+e1089c9e-f96c-6f0e-1bea-e14ae5cfc3d0,486801007,3432666406403972765
+c0b4185b-147c-1dc6-5ba2-18a1d18f3f51,1058039663,1147008767563796581
+d466bad1-d329-d6c0-f076-e12e2e484deb,1809551617,9595866002103851470
+6c9f48b9-2e5a-53cf-5cf9-bacdcc01bbfa,431287177,5931314059529509481
+70a91fec-d890-bd93-397c-30a0384de1f8,3235081426,6449476249601178497
+044fc6a9-4a35-cac3-952a-c5db96f4f601,1846997050,2469526301860642533
+ab22a30c-e4a0-c7f3-6271-852fc7a10e6b,2877622941,7015133481571194987
+e5b20893-eeec-25eb-4b38-9fece54b374e,3643187437,1239529336989899634
+caa4e1db-cd66-9947-7594-eaf767339d8a,1687778117,2518475871571546185
+9559e775-b9e8-9814-7038-81c05dc8657c,4107109064,14324972332487535516
+800328c6-0a2e-776c-5da9-278652135423,2549699351,1303554450912960497
+2d374b2d-4da7-2d03-2025-0f0b60667597,1320206087,4318997181072165844
+43cf3ba1-fd17-4f17-698b-7b264ccddbcf,2790747719,10677369298190130209
+63766db1-1adb-630e-bc95-104e84e71475,782654428,10030223955235097577
+4d630546-12c1-7d42-bc19-65ff554b290e,3398377357,10514905971350860942
+d81d507c-2263-2370-f333-9ce3d9ae60be,1060977063,14943124194860065397
+6985279f-3427-d6ab-6f1c-40dde7b3ea3c,1982330415,728100339120725096
+4853b624-996e-817e-01bd-b71d66cab60e,2016730900,4997964755246319865
+97195795-c94c-9d26-23c5-0da09bf5be9d,1059891381,17652723879395970324
+aa0c56b7-eda0-deae-30e7-40877d6fa544,2131673605,5639777837117897068
+87ecd947-20b2-071a-1267-7afb1b19b473,4046519456,3076517396135656577
+e52fc491-0541-0eee-1351-8e0b860dc47c,2062288007,1036294475133015613
+a29bbafb-f634-5795-0202-6729dc3e3771,280715555,17399252594743802828
+b73d7378-5cd1-be87-3f38-fe5244810e7f,2276258450,10136712319146579841
+916e8473-0a97-3ea3-d34a-582bbd1e0053,812664838,16489149729879555842
+3a11600d-6734-380b-d8e1-bb5bba2b87be,894959861,6643834009937125487
+6e05e78a-b1f3-b925-8694-b20df0edb4af,2751771900,2367466155879727861
+81613539-41bd-d665-8832-ac77b9492812,1495363012,14782178548263073247
+487ef608-1521-d296-8c3d-74ca0aea232b,2583624732,10446146324375855696
+913421f3-72fe-6b73-2f2c-eadb0dae8bdf,4249997795,10991965493335055421
+5af5e425-5bd1-ff1a-08fa-88f16f67f278,557734021,8709088873774699354
+ab0a9c4e-3424-1bb3-20bc-4482c77aca0e,4021449871,2246074795173703631
+4d95d731-ac2e-921e-f088-47e34ddb663f,162367012,17524382551849650997
+50b64ce1-cb49-db83-36a4-98e5cd856af1,2339315114,15667207197080817014
+4b2db874-968a-f9ba-bd43-4d4b021e7842,3350436812,8775380241104676518
+cbf4ddca-4c44-ce4b-6ff6-dfba5ae792f1,582370172,6258626453723028055
+61a3d71e-c5e4-0fef-70ce-9c0e58e7cce0,1382255591,12288205535603951167
+7d567f05-ee00-12c2-251d-a7cd89d16b7f,4245047129,5525055899913481673
+08a982e8-a795-d46b-a79e-158ffcbaff66,3054211906,25567119644790076
+d7f04d13-8e8a-e354-b688-bd3fb386a8a2,1298139547,10629630670743190516
+4998718f-243a-35b1-2bdd-b4ebb97b8f22,453180875,16726641798996627253
+f825c272-dbe3-a4bb-741c-90a3712d144e,188628206,3226850276371493642
+4a43fb34-aab1-a628-576d-84606a4509e3,1903953884,14978830322676572964
+cc916216-b89d-41f6-79ba-02b4c968d7ed,1467473836,10297077737558722168
+7620d4a2-d062-cb6f-9fd3-b41f8957982c,1224318196,6014065252545526178
+76e82326-61b1-f1ce-b1c6-ec2c38711d00,2810749368,13910477881004564496
+1820c355-ae3f-2727-5834-e12d0f523c59,3720944869,8950298484175326723
+0f468f64-7bcc-f4cb-0ca9-d2c83a243158,3408449046,3819678392131512413
+d0ede21b-51b4-b1e0-eb6c-7d238b50af56,681909898,714870582284985195
+d84f5049-1421-95fb-86e6-da1c5d87ad06,2252318714,2078711333798944068
+b9c30816-4cd3-d81c-08c9-05ef2fa390a5,2702563353,11244669086649716016
+1e3d1369-f35c-620b-6be8-19341eca4372,257599172,509978207952785904
+a0c0b813-9652-bc35-f7c3-af0320a6672c,600747222,11509227784198171361
+823d7ad0-d5f2-b176-cd59-7ea895a1715b,2162892164,6738540835899758629
+a781916e-c7ec-174a-6029-eb748bc79c66,3024755923,2362242710084642385
+d8dc1076-94af-a02f-78fd-3f41fd4dae3e,1123645309,11112270569188165192
+387d2271-3a3f-921d-51b1-fa3b6a3dd2cc,1997324720,6797650552287291525
+bf7bc0ef-6af2-c859-351d-cb77e4b5e45b,2357412748,5025333748927946591
+cfbd2c6b-c3de-d612-8dd5-a0a86faa1fcc,4272894450,2731699354854857851
+05747e68-9047-9a8f-5e63-3fed66a69b27,28842869,8435553069563311385
+ded25472-6ae2-47c6-27aa-5ba9fcae5bd3,640605980,1958443541198551111
+752c1d58-c53c-4f67-3673-2c66b02d57c9,3827176418,10290700551265737087
+cde67278-299c-49c9-b3b9-acbf5bd4c606,4053687755,1504309983611552912
+b7678c0f-f67b-a218-3cab-39595e4f0ceb,3673381537,5831018810744594275
+243e0655-9227-adba-9133-7ab650d67981,361385361,1478985342342465363
+5d3f0036-5ba6-bcc9-4295-545a0aa1b89b,4157052319,8306506189780213757
+0701e3ca-02b0-277d-9923-d1cc3cabde5e,799031920,16487815713163474041
+8e00563a-e03b-3e37-6797-e0f13a9916d6,1897152402,15628399175248773440
+b0c448db-84ae-da06-64c0-eadb455fc7cd,2775423503,6320077723175198839
+a7fd6905-9809-e967-ff55-2aa26e5cada4,429213749,14480895710255982688
+51265fde-8938-f49a-19c2-3a33085045a9,2530488756,14970023815616990561
+684f6b7b-ef8f-d6bb-e208-0be2a7a04e62,3343948006,1494557802400108248
+06f358b0-cb38-8f9b-5094-7c5b8136c82a,474865959,6836065971092327953
+4bd3d861-a42c-e0b5-f028-b31847cff3ac,2423437824,12588310629228228050
+a09a48d1-c39b-f263-c6a9-01ba7036c412,2303772964,6127418928535523551
+4df54535-e1f2-8c46-3395-4c41be3be162,1517002842,46533209939664558
+5dad4875-77cf-162c-946b-1631a4315df0,2169656729,10272225153583614121
+90850959-041d-9b75-873d-c44117c8a6a1,3877007670,8004016563566634800
+99ac0b7c-d7ae-a9b9-0238-6f2b46f3b94c,1330257398,12716581372895466913
+bb8c931f-7d8a-7d9e-b129-4c3d6831cb7b,3572275982,12208745525406788663
+d3af8acc-538f-da6d-73be-58767f75513d,4091862573,3042131909144758035
+a26378d9-b05b-25ed-94e5-dc9df9537a47,3327145982,2319973387385083555
+10f7c323-d356-6f48-e914-09a7d46c7509,4202685121,14702747119169425955
+895e4352-55d8-503f-535c-4677a3482252,2048524760,14658666554588863276
+e93a6e6e-77dd-0c33-6ed3-c61646681339,3577769342,9552254660274711250
+a656fec7-5aa4-5c10-84fe-0c48a6f15134,2558738936,11372598999927771067
+8d4f6007-992d-9236-842d-e3d0ab61c7b8,489806679,17827649084592956907
+c945ebd3-31e4-9262-f640-c7268f17d649,2772379787,9730856461446946740
+09fea1b9-95e3-7d34-a5ed-1a974c8efdc5,880161510,1148299416314472962
+f8945fe6-5466-7198-4258-182f20a4fef1,3911685761,1604689107742216724
+1b870ee9-f49d-a009-f1f6-6e42e319050a,1757164504,15503932702564788490
+a825027e-9edd-4067-8c37-d0bae1c1e7ac,3854107836,1374797085668190655
+1df2305e-fcb5-db60-f18a-01f6f63e3764,224698834,1476270710662361682
+79325ac6-7268-e7ec-e046-53509781a948,1663056742,15031383097677705685
+2b0ba743-2894-6ace-9186-f3beec420b40,3432417859,8366498276492148829
+e170f4d3-ec57-3015-c421-a40b14f28a0a,1607929854,6510070331091016154
+5c8d412e-7bb9-3255-15fe-486588d2b8ca,1948671878,14764480843364749147
+f7c84d78-5ee1-1962-05f7-3af8e13a141b,3427638675,4084605199615434799
+d0780f9d-fe6e-085c-e1e7-f680d66aa6dc,1215997863,969616445832658719
+1acdf375-93ca-a1ec-0b3e-b8b199ae71fc,3047447110,3509319661792806608
+5b65c7e2-54d3-961a-df18-c1d3510d537f,3182573939,2706295757698797912
+925c8d0c-a09f-0ea7-eb29-07d67376c315,3372661849,5908944506351868382
+4a31180a-4c6b-ae28-2e27-ef67a50ef156,2858151627,4294863152795141803
+33c1e9fa-d5ee-4ddd-b67c-abc31d84f6d1,4221369421,1691882819733669914
+89115bb3-8bf8-04e7-17a2-7c5c9cda8c14,539753480,7771586599547359183
+591f91e7-81a3-c446-13c9-dfae7ed176b4,194159540,4629398664561968555
+4a94408d-a007-bc75-4c51-3dc502453979,3353236627,4343550773919165284
+45afc52d-fc58-0dc9-f469-b7aaec07bc82,1303357197,11622591790169424022
+a1d39e01-c2dc-77a1-50af-a7b0eba7dd58,2813183810,2891280642469592639
+4a8d81e4-e88b-e4cf-c963-135739bb0737,282362636,11442419710701485482
+17ade0f2-0475-8f33-90c4-bb359197c45e,4014597141,18132051433013625892
+6fe8a6d4-8699-72a7-6c01-bb9ecf99fd52,1300246463,916711852991600793
+a71c0efc-b36e-8c68-42e0-73c969fb55cd,4082665467,2944375066301012381
+e34a1fbb-38fa-d2bc-6c63-d4871cff6dce,2130409753,17776071058883292606
+4bea7d27-af93-e1fb-8f72-ad2684d0a6ef,509986671,13944065637974616118
+e0f0e54d-4d6e-776a-640d-609738c0d4b7,3093392005,5790664514069540395
+b92f81e3-e2aa-89a0-4991-1bcb885edbf8,3403778589,2024098859843711738
+bcc92261-65b5-33b8-32d9-bb27f054b5bb,3316363080,10137869288455766391
+54f2f35b-023c-e01e-f808-8873a7f608ba,2965059590,9600422757991971247
+d90cdff0-cc0c-c238-7094-399aa6bf9183,2299022551,12707307403156981237
+b3d883d8-5022-6175-f6c5-689686e50fdd,1716409190,11317459542608447930
+4414ed91-b4aa-8ac5-ec20-5229df7532bf,2552395703,10269089421107854109
+fcbe6187-9fff-ce40-ba6d-ace31235de9d,3602740266,17452866009342032651
+b5a28d86-4914-ce2d-9223-7a82796d5cb7,2650247332,17889617033258582477
+270d9faa-6091-6807-85ae-c63895ad9512,1582165213,3158370881788693088
+f7af4a1c-8ffc-3dbd-bf95-967c71dc5acc,3676287129,13182313737029383250
+c1ff4958-d7bf-47b5-6962-2400e484b1e2,1544949421,13749513898517110538
+25e142ff-f157-ed79-6bcb-b7d2519ff78b,2480819249,18415790582443509627
+c9f93fb1-658d-4665-8d73-2f585ab7c941,633549299,10436540491803665731
+0071f118-12dc-0049-1146-5cf1f6b84a23,755994411,10491059746889716567
+a7a0f075-fcfb-e162-b102-d74121b0e3e1,1988772612,2808180744565464963
+e0bddbbf-4955-b477-5048-0e44174528f7,1146935943,14895014796259977730
+a2144e0b-a0a4-40e0-7835-434010185b01,145495274,10389838523037302773
+431b0c4e-8740-83a7-b0f3-25b6edec93cf,1158894936,17105276697862818386
+9151ecc2-0275-d57f-3f8a-e2e1d6f00fec,479072772,16664744874984256560
+27a44ef2-9566-d800-5113-2f4ed3e0f54e,4270087479,10139996880802487804
+ef033e42-98a7-aca7-37c2-a8ca28b9be00,1994580566,4360838089825301212
+adb6a4fb-d5c8-d0bc-acb9-a18f013570d9,927871984,6651521470970123179
+5b9ca385-3520-e7ca-3d3d-c4bfe7a6f7b2,476132211,3708277706350521019
+403ce256-ca3c-20bd-cdfd-6dddd6f54d66,785021705,6489826720673791512
+b06483b8-ca12-6ed8-c2ef-1f8e7f54e1c7,1541261870,1882203772477762351
+9c9fabce-e885-84ac-df0b-782ea1b7f704,2376352431,7165202101546682953
+d57cf8b3-c036-0a5e-aca8-c6bab9f1ac58,3071305584,15408271760057085804
+b3f134c2-d492-98cb-ca25-8defd7fd6212,1226488196,3750121664917339572
+61caf461-890f-82f6-40f5-beb14c28576a,611514493,16169871672042282725
+cb48300f-1d39-0baf-390c-e07ee118b39a,523441523,17448333665367112376
+bc058907-3710-6e3d-8922-c2fe77d95d7a,3637571062,6223721464418266761
+9d26de3f-2160-31e1-9a40-7882c0aefb89,2921740845,16881148801069404021
+0c6c9eae-95ab-88d9-088c-9d8dbb5420ac,719503532,16185414109560851023
+f82d888c-f45e-bb40-c9d0-c35d0758a35f,1529151735,14732669468047082933
+cfb538ff-38e9-2fe6-b6bf-772fcfe1846f,3690482391,11262304691951248488
+b3ef51bd-85a3-2dfd-389e-f16d5e560be9,1434416297,3105500084018896887
+26d5dcee-a774-db4f-1eb1-eb6d6e4b8a26,1340893097,11339350683441033577
+5587156e-8d5b-c7a0-5345-0de37f30ee24,2590964476,12247976412650546833
+3be18e17-630b-0822-253d-785db3351d8a,420681826,17460579089756215019
+a3d9699a-fca7-f0b1-33fe-636e6fa09872,2584594024,7356397547998730758
+b7d2ce1a-3ebb-3802-246d-387b615b7aa8,1195624209,13000262833174453054
+57164375-5a9b-cb11-c070-39ae62d1831b,1472253775,4825817136198999222
+e53ad636-66c0-7c21-a8f8-a0fcd158c624,507111746,3338331643533969122
+815fc8b5-b717-0b47-f1b3-8ef8118eb427,829613972,15753836783338054826
+9a1a1895-780e-80ed-fc70-e19f9e3adaa0,3691671485,3846442993831847416
+2b54557a-a19e-7b95-7c9e-a922f20a3c5d,3419240271,6744012509224754182
+963fa977-d265-3c84-3426-5b6f69becdbc,114051088,17522928735781422777
+a2590aff-fd48-58c5-f647-14025a3e5dbc,984894704,14462723054705408685
+6ad40573-0838-0124-1e80-72abe65cd785,2808461997,5788058585555480659
+bac673c2-4db4-6768-3bb7-ad481f205046,2885732675,6230938517859658543
+a2dd9603-226d-414d-0759-8aed7d9b2ffc,4198040094,2462700817277142774
+a321171b-adc0-1604-3861-df9815c06f17,2563224535,13338690261125687244
+507be82f-2b19-d94a-43dd-1ef669f55284,574452118,1007762991243132408
+87067125-0c6c-fa4f-a16a-a665826b7eb0,2007447206,5987270981445667321
+ad626cd9-4164-cd47-3694-583cd826f674,3304340707,12916408552369619460
+6d359540-ef70-61d2-4d1a-e60d29dd0925,1371283592,6375696148516056749
+d50b95cc-605a-2f4f-f634-111f76d6be88,512001805,13292749153392357511
+0d7f805e-f566-c131-7c28-bb68e0383389,3975322101,11581178495117503766
+671a586a-763f-e965-6694-a2cb82465085,769399682,16539932196958997301
+8fcd41cf-6b48-2081-ed6b-a28ac3a34259,1242593817,10418440412238779792
+9578fa01-8d5f-885c-d050-787e83bc64c6,2605194265,9515274926777375896
+f487876a-2c3f-8299-313f-cc317a9b0845,1639936891,17022831553217917957
+1ad7c203-4935-873f-f760-faf5a15de56c,3073342940,12545913020257588808
+a108091f-2a6f-7d2c-fbb4-169dbf4005f0,1741661332,6398493816040132097
+e0c5e132-c777-eaeb-5b0d-6fcbb82bb97b,3134829660,9915575722945568841
+cd92f4d6-478a-767a-d329-5f80b155408d,3200230674,8273067499794549427
+7abf6ab5-711f-6c06-12da-03fafb84ec65,1265217740,11764259241337480274
+0d6d227e-ece5-cc29-6b18-35e2a5d58572,1021723105,10075722489690163674
+e158e397-ab60-c20d-b6dd-71992622eaaf,3727171746,3474121323211070579
+0c402310-398f-6408-1c24-65dd23c2e449,4259170648,14255025784829987068
+650164c1-1703-e957-29ea-62b9a3d7b806,2852224452,12497671415034674273
+de7f449d-52bb-b0f7-ecae-c63cdd666a90,1657907668,10386006640550785222
+9374706e-4c81-eb22-1a8c-d924a1665115,3268573419,8435959551541862147
+60447ef7-d51e-54c6-269e-4900bc29ed49,2806610542,3856274386821421703
+c4aad330-e332-f310-6075-076ff47ad438,91132942,16626655699279086265
+f9d74d44-bcde-bef7-b7e3-d8808a37c644,3901819868,13776310848997873162
+19d653e0-537f-3d7a-2987-d7c63b10cda7,1690169374,8219877746630039054
+8724b81e-d865-7e8e-b92a-86f624e32a8f,2406270759,13959450109558277190
+111bdb20-dc00-3334-cce9-063bb6809f79,4132307542,7225598729594917456
+a07de4b2-30de-bcaa-3f48-f815512cfea9,2928036813,2235642826303110619
+69030afa-1e65-ec18-a1cd-9f1313eea4fb,4270555040,11993568195662181326
+77691f47-0b9d-fdbf-f300-426a420ef805,180954636,14353939293251482167
+19a95e5f-dc19-a93b-76ae-86d177e06ba3,1937496578,4643171213708492418
+4ee96b9d-5478-51ee-635b-5fef011f8737,2425175358,3766931733375382540
+681676c6-8d54-8ec2-06ec-270ce7cd1d10,2196421026,9564621742349435274
+23305440-10e5-aa00-8319-8d0c7e8b5548,1683935262,15815787811548126120
+c70c8037-e1ce-6e96-33cc-8a8befa0a2a1,3792452833,7836722747205206611
+955498fa-1c2b-3b64-404a-a6d82dc111bb,2818730131,13341783046929348599
+aaeff3b5-f9f9-c72d-5866-186ab95d8ac7,196703085,5932822488266997878
+dcbf7c02-c9bc-03eb-1a5e-44040da646c9,822650250,17058258096679626380
+f4ca4044-5ab2-679c-aeb6-276993390754,619874269,17005111837259487315
+26d993f2-7737-5da7-c9e3-4ccd0f788e80,1364053177,17535798351134060207
+7e0928b9-2ae9-79b1-2181-6f9dd4c42611,3438843089,11702753760545108683
+722369ed-189b-cfc0-931a-82a7a925b2a1,4066490780,3788411770542729618
+e30ff0f7-53b5-806a-2f2b-2d0e6485eda3,1155154502,6874277689954317055
+8daf0eac-2c97-e762-54cd-551baec79da3,1343224100,10892083282459431740
+602c5268-373b-4b9e-3855-8ec7853d8c08,4236354703,3987189971693052698
+4dbf5da4-0d5a-4d54-d24e-f2a2ee94e916,3045473386,16390602240264698363
+05e08c74-82dd-767d-0b03-7c7921659767,4081332293,3095054471873693336
+3d3f8efe-5953-3d27-f675-fcab22347390,1391979434,11919311574780613928
+1b5af5bc-44f6-d416-0679-6b12d9bf560e,1760883389,9776761634039915577
+ffff5a00-ec80-551e-c753-bf2abbf56139,671933086,6319751239860543008
+4912ea84-0b4a-e096-b954-c8fe5cd9c58d,3546501208,8658394449950697327
+440239e4-8e38-d1b0-2422-91f6086f7ac7,4079774628,709464494561728141
+80635766-6d1e-229f-1e83-e69da8a31c3d,2881925657,14571994890303370233
+4ab8be58-769d-e7ab-0ef9-5f618ed75cfc,1101622884,301801151835375402
+0a70e68e-a12c-cebb-696a-9f43cf18ec53,1854960737,2457914146275238766
+61db5d97-34e7-d081-196b-9b24168e7719,390253916,11569457103882041675
+7533421f-15fa-459c-2da4-732157d4fb0d,1040338610,14961369132349222233
+0fdc6911-888d-32f7-3d23-8c062e7640cf,2913232073,7539272564837394739
+6bc81dfe-d534-e281-6036-adac46306d68,4037418282,12107154667220387338
+2b894a87-8ea0-476f-9264-5c05be91d56c,3634368905,4828766839785972344
+2389d404-9099-bb9c-2a77-a54fccbccff5,1835051644,13699540306971193855
+ec6fcafb-c176-04e8-4f2a-f905be9295e4,2463327860,163787077647653931
+33fd70a9-e405-e4eb-9141-496661d5662a,1753844257,10499797378338548870
+fa216e06-01c4-7a50-2750-fa54e8a4b5a2,4184816025,1580425280863824817
+18f05493-1d61-ec8a-6b26-0fda13974090,2382277768,17056363305177395000
+f536be9b-7578-3750-a34d-93be58bcb679,1606452673,6265339131190811450
+1d0b6e25-b52d-6d24-e3ad-4b7f81f69332,1235405722,12123883743206699018
+907f7ae4-600f-9b0f-8a97-083a50f2e458,2831311443,8646542209356425340
+6fff5d1a-aa6b-31fb-6b87-2923d3710d71,2216880017,11530395225748926093
+b934def0-602e-0ae3-ee5a-75bacf375406,161924646,10891945041475398352
+1ed967f1-8e33-7215-da48-0b2bcc6e52d4,4271568481,4930796124647855970
+6a9400bb-161d-5437-767f-445ea6dfc612,374075727,10438126119533845631
+8159911a-1e0f-28cd-4597-49bd30af9107,1513337628,426561607188860283
+23188851-e209-28f0-76ec-820f7db68189,2979845542,16453484086678335531
+96225fc1-56b2-2024-d22d-1c233d6d3012,3738490139,2048760225433875603
+912aab37-ae03-2731-338f-f01e69e3f4aa,1814669166,7811129421195630542
+3b5df916-96a4-9f41-6a59-08352f918eeb,2399791670,9033258973616528690
+c4b33eec-b46d-0fb8-b9b8-142a73e1c813,4189561395,9587796702526312007
+f6325caa-3338-c334-8050-7cb230143dc1,1145713962,687044341889794269
+2cdb115b-16ca-5c36-d37f-774b9cc560cf,983257320,11190516003119921085
+9fb6fab9-f2e7-af77-1d06-03343520476c,3899279006,7426999731114723483
+f85835ae-37e4-a760-13ad-a81153c99763,1881123763,6900734367684554090
+4c8ed3a6-e96d-b0f7-9fa7-70e7a0ebe8aa,650918073,2825943042766051739
+4683b83d-4b7c-e52b-cbf4-d68f6b51185d,1813796987,17168067713124349086
+8119b85f-c873-ee35-ca36-04755060c6bf,321843370,912617233965102868
+d67d1e61-dcd6-164a-414b-f8d05ae76ca8,590351807,576231683260758848
+3a0046a3-8930-b43a-ae83-fd48b74bf5d7,3078634600,1994461934514652940
+de574636-6981-1464-9e15-6b4c42ef3e38,2916530897,1655665907445073573
+dfaa0956-578f-e2a5-309c-7626344b6144,3606276255,6026035002721847962
+93fe7020-39ac-f4d6-0af1-93a8ff1c1cd2,63698610,7119373724629795006
+66eae213-8d50-cb73-4c35-7bc99bcf707c,4203217888,1778345761405005787
+a2444f99-9ef7-edf9-0c1f-796ef8a5f1ac,2247469675,17328172889220931935
+29c6167e-ec20-473f-c024-0734d5354a9f,1016237740,17194767234879216760
+6b5773c2-5fa3-0014-6012-a774aeb77553,3285737158,10907073483040925197
+350be081-355f-93f0-3133-055f62af0fed,3165186799,18168139435071992881
+10523d7d-58bb-7d24-3651-167f11d853b7,3033703576,1911171532996205524
+525a9b09-5513-ef6a-71e3-1c395bddca30,688038547,2092947283364669953
+3120f7f5-9f0d-4f0c-d58b-c8fba9788bee,2366634315,13366600315257224529
+d7854b19-6f6e-6712-a95e-276d05087b74,57726661,8548262049814325104
+38fb1b19-635a-e627-896c-2c4a2f795c2d,3966890949,13890578900012559213
+5ecb3161-1288-35e4-0481-c061552b4107,1975917770,2681488529667289805
+0860b580-4284-2647-1910-ebde10f3f45c,97264281,16557906726289351567
+5c36eb17-f342-b0a6-86c7-8f7e37770601,3281908837,4040195805787889844
+4f4fb472-4deb-eba4-fec3-d902c2e222ef,2562066100,11097767638275892172
+acd9435d-1678-cecd-abbd-72ea794ed3e1,881389088,2285525279804673268
+fccb741f-b68e-f7a1-3367-8f9a38701e9d,1244147546,6496609161589254572
+522dd59d-393c-c78c-25ee-2bd8c9bfbf46,1217010629,18310922007592387366
+c648f328-1878-b059-89b2-e7e8c96a997d,2135850266,16152092814165554018
+eb1be20a-b06d-7cb1-60e5-fcb8779c02ba,181346313,8207310753869728030
+43a98c8a-b9e3-5000-e5fe-ff9289aabdb7,1341062806,13376093930616197833
+6bf37e8a-9a4d-082e-6daf-e665f041a9c3,606266917,16609532674263431726
+d8e3239d-2fe9-b79f-31ce-b03d2ddbcea5,4165143899,6532524799594369016
+adaff6e0-65cf-d1d8-59f5-0633b4dfec7f,4232353554,2861074160428410724
+620c6877-e51d-d2b5-3f2b-bed1675e4b04,523164382,14547279697562459732
+80ae5d41-9035-a93f-2135-bb072fdac446,2505738218,5733138387384529914
+1a56bf4b-661a-4d5c-ac3e-3920254ef7d8,1165211887,11922389468504637852
+ecd5bfbe-1ff4-62a7-9e43-ccca27911fc8,4286766036,2634977410793657166
+b421215a-adec-09f6-2229-3973a28ce6c4,2906048843,3074766711507092010
+d9328786-d3f8-bdb6-a4b1-178de743c1cf,1306868544,2399331119220403992
+619e2ea8-3a84-8185-01e8-dbacc71304bb,2270450975,16955503994654542343
+111fc41c-afbd-a179-792b-b6bb1b65ecf3,2736608684,12740591269473030681
+c21890ee-c3de-1ee5-c930-2e0cd9b74439,4043889720,7560949925816525019
+d72fd8a1-b5d1-792c-b278-8bed200fe9c9,1362500563,4666630039377139707
+7776438d-9813-bb13-6a84-8fb2c1218f2e,1758791261,4437279483100160484
+67b50888-fa6a-1d25-f73d-57fbfc24913a,3597623916,5763470470292008888
+3ace8d20-c07c-c44c-71b0-875439094f22,2955776914,12153210521677191040
+352b3160-377c-8500-eb53-a453aea8023a,4102959098,16208627701181809130
+176e2ef8-0035-069c-2e43-3ea18e9c7e20,4150918640,7276598738441898913
+f1698fcb-14d2-68f0-f2ae-6c03b10d7f65,4178332033,5686772606128338440
+31ec2036-0d7a-8e5f-c1b6-4c258ee59f24,3347232547,14355088968819611833
+53f792bd-054c-3538-64b2-ca4320086225,3775683779,1715949653728677707
+019b5e9c-9583-2e40-3fa2-fe20accd5a6d,1144773082,533275116914147243
+052663fb-59c4-9008-bd45-2852478245c2,397449806,15479687665675014402
+4f64f6a8-772a-d78e-12a1-7e8492228321,470360804,18096287470211360905
+b6d76220-0175-ae02-b194-886d1efb4cf5,1425235802,11755184303033202319
+ae450b69-cd1d-a22b-c970-4cb2d1604876,2500335308,1065202121828115603
+05432550-f08c-1244-c135-9784ca45abfa,4036826918,2548920315733363387
+6bd8b751-101c-4eab-9278-bfb70631a659,1974681269,18366814538573580497
+f0c6525d-acb2-cb4a-6d76-bc382122f0d5,3314560945,6939751540217802145
+3cd43c7e-40cc-4268-1a4d-8c18b2848df8,56947342,2996169813910416967
+855f299b-b7ce-1022-3ff3-a54ef6987b4f,1521481919,1330362148896951212
+73912958-48fe-2d18-a3b4-42b76c60c07c,203484623,2825316761240141040
+7498f604-4820-accd-9ab8-ac7ad88904fe,1490539962,13282271370629781740
+6b00e64a-9d4f-1dff-b88b-5cdfad5c1ebe,510458165,9368712160768969928
+4842ac09-1f94-2aa1-b597-79dfeca11747,466246455,11418303731227121091
+4e47d564-63e2-eea9-aac0-7ad9b0387877,3977236416,16954817713778269596
+5ddf2eb6-35a0-6499-27fd-5a39c44e6599,3957815687,7692017134223704977
+e2a81573-0b41-8748-448f-c00d691e96e6,4200680717,6625880520662217429
+74a7b812-05ec-f8aa-a7ac-3435ac08c8fa,908204930,13524609901836227406
+fc9511d1-291f-f678-0bb0-181157ecf8f0,2841276476,790778821117598043
+9c1758a0-98aa-7e7e-5511-f948c9afb23c,4125295714,3622984521485980716
+d5f0f711-dd9d-a962-18fc-e7c7ad7269af,951025517,15905059660385629144
+8bc9fcb6-e836-f496-eb51-3e3617f30990,692486164,6177920399930947138
+7eff5b7c-f12d-baa9-5da1-1894dbc0c85e,3748630129,8443286042464413705
+1f4f06c5-8266-a165-b33a-db57808cb615,3125858185,2353059424638083059
+250811bd-b308-36b5-560f-fbbd30c97f04,2545573593,874126058244485896
+c293c744-14a9-ded0-1bae-2c1335f9f8b3,1982179617,18290537566587373239
+7fde2061-b7e8-7f09-a8d8-0f527cddf267,589900777,15075424639672211812
+15d35450-9c9c-80c1-aef4-dc27faad1c88,3533625532,11630566662949331851
+2b8d9d37-542f-e101-eaef-370aee7ba1c1,2080106528,5145452029658057622
+59fde040-a568-6956-b620-0171e22ec3e9,4246993702,14880463638340869978
+e41edfc6-747e-2562-6bb1-4acbee27c4d7,194388319,13018184981722244618
+849ad298-d489-a7b9-f647-1451edf4d82c,2417327338,1728414929170130497
+b6d41e50-783c-7f05-51e9-16c7c24f683e,59506418,1784519420885883115
+0727d118-ce0c-f4a5-4019-612199fcfd0b,3949349005,18167143929336089965
+d85f1786-43ae-83f5-a63f-98bd806d69a0,3937908750,7779125997712862984
+cdd8b539-0297-f8b7-ed6b-2fb459055f91,3496549749,1237543465657026573
+68c0d30b-b89e-0f63-c303-1f8cc10551ea,863768971,7198134429097916076
+20934e2e-8e6a-7471-b3fb-15bcd425747d,927234384,4716241245011880310
+62cbd49a-cf9e-f601-b1a0-034708b2a0ad,1077965368,3127633203860877930
+bbff4f71-aa9c-bf21-22a2-0bb82f4126c2,2098667266,17759299049826308317
+1d3daa88-fd58-d96e-9cf5-251a8097538d,2124500150,7339599901015970377
+69b69f94-1382-03e5-f02e-360ec9aece66,2061657010,4643768779383224088
+66b0e3aa-0af3-71b1-9792-c8c41ae98ddc,3883546293,15294376851562040069
+063bf34e-b259-301b-fb4a-170ceecb6e28,1186795179,18349910404596977047
+61eaa121-af48-8682-82f1-68246e4d8676,2154380994,10680197173457966170
+93b9dc1b-3dc2-a2b9-e762-41ec042068a8,1695195333,6119946511755547323
+0abc8137-f93c-8bcf-0a80-63f2235570fc,2184636951,9264193236607129101
+c71d1e23-3a6f-0933-6a67-80d3630b5a39,3340314028,16656190151700814762
+56165153-c92a-c0fa-17e0-e8ca67a2dc5d,3488804229,5269707244812462081
+2158a78e-1845-2d9b-bfdd-c6b034ad9579,3051697441,5982301237249452972
+b65ff5e9-3c41-2294-84a7-a97bc5fde9df,3130747888,13637902190215405069
+cc3bc122-4289-9f0b-5626-66a5df95805c,3110477040,15540880640200545847
+b8924804-e5bd-2df5-f8e8-44037aaa8f6e,3670431391,2166392730144156894
+6c7f4efc-4409-c631-b25d-60710cf321be,2271659740,8030319462284979882
+587acd10-07b5-1782-14ce-9cdc018cc1f7,1054923980,2314349566944864473
+2c5008a5-df3c-64d4-b91b-77fc38b21b42,1624562595,6215833952882631616
+6e7b61ee-e651-40e2-39ef-06296bb9bd93,4043208994,17843540144726931767
+3eca0ac0-3537-98b9-55f5-419e158d61cf,1916153814,16649344599831379265
+6b8c4052-e6a5-9353-309b-23aa8625b554,164001192,16899867980433223166
+2547229c-f0c9-3497-e87e-8bff3b8e109b,3348647807,11276782601302102753
+bb6e28ac-c684-ffee-dcd4-62b6de3717aa,343375637,8390182709699119376
+d42a72a4-2760-eac9-6a77-f192a81be7fb,4078035933,5287755269559406942
+0163534b-d34a-ae07-cfc7-4fec6db0add2,4275656766,9506329242823374187
+3724354b-da2a-441e-0e32-17e0455c2279,2538571241,12616505027498637239
+31a0a618-308c-b33c-e0ee-c7126b95a2e0,3624315409,398116319509343856
+6d2964c1-1d82-4d9f-c564-5653e721286a,103281657,14158958056345340139
+2f808fbe-2bb0-ce06-1430-b89e4f0a94ab,3003173093,7256423095727233891
+cbdd3e10-2bc7-091c-5c7c-f614e6c3086c,379490429,10186438466967894697
+d9586849-af43-35af-4281-74b47a9bcfc5,4184604275,5912453727301860251
+39ba22a7-36f9-d3e5-42e4-99b18bda1d8e,3071746286,11889648279932825879
+2f9987f1-65b3-65c8-0681-f7cc707553fc,3888878495,14467073156927909497
+1ed199b3-c4a0-c58e-3b33-759b827e6652,3576171247,14014766258245208534
+d65690c1-840a-cea6-99e6-1d2ab55cf2de,1261177929,6544771149616064179
+a6afe411-8e4b-b1fa-2a3d-11e4e93b2708,886871185,16861164267152017063
+dd977bf1-28c0-c1af-4ed9-b209dc0dda75,1625531436,5500068915766443804
+23dddf5d-0950-038a-fc1f-53ac22351312,2767003230,7162444759431523318
+92391957-cfae-5ff1-2ce2-6b45c2f3c74a,2623953435,11873630995872275460
+c2fec97f-5378-3df1-b7da-d9b2ccbaa3fe,3928209622,16254873183092760971
+09636c56-541f-51ae-6491-6b06eb461c87,1995396750,13584513305348548035
+b4560e16-fbb4-0ae8-1ec4-244dda7952c2,3642914511,1200081960355261512
+b9f98d33-eef8-09a5-f1ee-1bdcf20c432a,3638601912,11950192679484914657
+eb634d22-591f-b910-ddac-d198bf3ebbab,139280001,3643533983857547476
+1bd0e56f-79f5-9b79-be00-f7f71272d48a,3325329433,18036100389732859757
+660e9078-d7e8-a05a-c501-88c7c8f26799,1099199102,3946837919446308046
+1c539ce0-ce7a-633a-41e4-5cea03ec535e,1374935522,3880002761274765453
+f15252cb-1d14-0245-b9ae-7a451591aa81,3501130612,14329121922478803491
+94909fe1-d81c-cffa-aea1-dc6060bcac57,761361991,13041728099155938994
+12e4d06c-72a8-3e2e-c09c-ba4d134c965d,426181827,5752818990266473289
+5da92256-877b-e391-c651-1ad3dd8820d9,3147895431,1457401453330510990
+c29d0b78-cfe0-0f75-d4f8-1f655d164d8f,2415536699,8059211683995151588
+0840ad62-55c5-d7d6-f9f1-2ae91a58d251,2271964544,363730065069250966
+eadda4cf-4437-d928-8311-c9d554e0a15d,4182025190,7252668641911146906
+1e7ef4ab-4ead-8960-9655-e54569e6618c,1950838534,3876890789122333109
+aa538ea9-a410-db5f-d88b-33d077f883e6,3409890101,4810325277879847373
+1c9ea64a-1d0a-766a-1b14-94a4921fa112,132037172,1691345152747624623
+b2fa6a9c-b13f-62a5-0b22-32ce0a04e8f6,3188817353,1327966044919978374
+f5d4758c-c0fe-da14-0ce2-1f1130f6b3f7,3488075380,9262885134731612823
+c5bbcab8-03df-b068-d601-990f5880a2b8,1975997433,77541670619860262
+45da2c4f-d7fe-b269-8ae9-664e012cf872,1304688586,14247581557647569370
+9ab1dbc5-2ff3-2b95-62de-05d109f1087f,1320790367,10649404234314089724
+8254b4a1-a2f1-c467-ae5c-3ffcedaa65ff,3686553636,12766467526393387468
+cac931e1-81d5-6440-94b3-2e8632f8333b,2078270186,17764172393312443598
+0bea32f7-8c0d-5cb0-9303-6601febbbddc,1130344036,16409516395526029128
+3e68554a-1df0-97f7-764b-775df461845c,2143089852,7941165399899218703
+4221ed24-1a2e-240a-7003-e339720aa626,3084647664,2820076880086210811
+b0431856-f1cf-756e-b968-8a3d6cec6020,3331890650,3937735093365587528
+92ed7562-7d05-d909-51ba-9ab1da7e15c8,1298304191,6511745737617834543
+16033702-0448-3a66-3b99-4a5914d711f0,1101397625,4414519573880868096
+659a55d0-c711-0960-8fde-b961b972d9a8,895341153,2331494275699319250
+9939ad50-3425-691b-0a29-3ff93f5c37cc,1533844380,1236240631603180271
+631dc65b-fff6-fb42-19ff-80790728c691,2453348538,15044945989422001932
+be0a89b2-8893-504b-21c9-03c9f4a52b5f,3477594538,17829401637926127816
+bfd0702d-35c5-0cc1-4801-b292b534387e,3093586609,15235184073995555868
+7dfc76be-e1e6-e93c-3395-58668fed7c31,1153491831,17709453291534404187
+eef7f76a-0803-b61e-ca27-d8646f741782,3276038755,11086602817624092512
+04b2d556-ec60-3f65-8cc9-01268498d644,901850986,1285879824695337272
+6b298367-b094-ac56-982e-c720a3734d6c,2688578468,7799459010866426234
+f957a3f9-9bd3-09ac-fb56-9b426f64cb8c,1924657117,17314223307086686966
+d84d27af-e0e6-dfd3-f898-81c69ee1a338,337845350,6685383619533394291
+7ee810ec-04e2-53c0-1488-da4c5ea73083,2585598583,17758244020607607706
+2d39c44e-8e90-9f05-d27e-2210474f5e4e,2539938730,14038812346726371368
+f18af663-d1dd-f7a7-c375-b50144542ced,1349240770,2634081480180712157
+b671c91c-f7ef-d25b-b143-45b011f4d83c,11756806,15898741591410779013
+d37929a3-8df1-7ac2-9004-421b3ee5c2c6,4054638012,15367648449629948752
+86e468ef-0e1a-fb33-6bdc-7b714d837a1a,543813910,17244099766420982854
+ae0cbb50-5477-da91-ed06-4ec5979a9692,753187072,4921239620360605886
+601f6b55-6670-f870-63ac-45dcad8ea92c,3658820555,14522399558296955893
+aaefbc64-a3f7-f987-45bf-02e56b5b5249,2426051900,12430670043595098095
+7ee5833f-ec51-a2ba-568f-7de44e35e2a3,2006923471,16950480524908810292
+35b1755a-4534-95de-cb45-d54fd3d7adb5,2411904671,8666277412581532358
+2a359e63-269a-7c2e-bd0a-ab28f576022f,292383312,3907934152440416996
+c17354cd-abc8-cad7-97f6-4dbecda78b92,656189040,14533322709896300070
+76fe8fdb-b83d-724f-2f25-fee744bb1aa6,4179219601,16946677442882671163
+f7a8b26a-6b58-4a3f-7b27-f81717631607,2889155487,9066112494270557691
+1ebc80e4-2fee-81b7-cefd-4594c95280e4,2838465467,14588345238436669563
+7ca27cff-9c7b-c49a-8a7e-e4c0e0188d73,3777817824,17373712177236682164
+c02ed40a-da58-a796-d390-19056387edd5,2855048281,13499258158283126093
+3c136f82-f620-5da4-9e66-3be89530f7b4,4047521001,8958336065188132860
+88406e7b-8356-68f2-2121-f1a1ba35621d,3947588095,870953035585839463
+18186fec-f223-c679-3048-408a11525dd1,1615392977,4385179304524732865
+bbf189a5-7eb9-e656-4f9f-2fe80201fd70,2834988149,2281637291938594414
+41228bb5-9641-29e6-24a9-dfbc5abfc907,2996596141,15350102215810349238
+255c3d5e-00d0-f106-d08d-86b81a7d90a6,4257081668,12550220339618539121
+c3ca8d74-742a-11a1-0fb6-35a697bfc47f,748183693,359970795299854522
+7cc2075c-206d-4282-e4a1-83dd24474d6b,166679270,17793402318975358217
+00343638-bf2d-a453-8e78-55dda9f1604d,38362062,15889553147285186488
+5d3d25a9-63b0-0cde-ee6f-325db03181f5,56299289,4139306897561742554
+c7f0f2b2-03b8-d306-9ef5-8006177b082e,1537143146,16422141861888131772
+ab43e57a-cd19-59d6-f120-68642c242087,256521963,15648015644597594530
+3294f054-3353-2d34-6dd4-3db3d7260ded,2208948653,6356369993424417273
+e989de25-cb18-f2cc-b3a4-7195f8228785,3499209842,16779272477811340385
+32a6fafa-b706-8399-08a5-743cbf8358fd,1351953920,1233819134882691150
+2edf60da-227f-c2dd-d148-6cb2f417efa7,1959281588,16144363660253089474
+314d8bde-8f9b-c065-69b7-86f11ab9d64b,4163329259,16830547901808134898
+92ceb6cd-2063-cd0c-44c4-d129f4c7c9b5,1908877461,16532843271405883015
+2c7730db-da6d-be12-3fa9-1ca0810d2d1b,322250378,1036800131840798488
+b6bf6691-8787-f21d-1d99-1006e61b6d96,2046779893,8048336466134847722
+a33b45e1-9e7b-2ceb-d9a7-d492d299fa78,1551645826,15583593506038866801
+98b132ed-934d-a92c-f77c-2484ff7ac589,2354140156,6489091799649884831
+3fbc3165-d9e9-a575-1cfb-3c0ca718ced5,1783157217,2115172824234150107
+2f831a4f-e5d6-34f7-2e8c-d820bb17937f,2380174609,12287890181982382889
+bb2e8bf6-3684-a886-0c4b-504968ac3738,2903849350,16894050531217873999
+f16cd49f-1531-b6e6-d84d-5d3bdda5e176,1278590978,18040677231742463961
+70b2446f-3bcf-e153-ba2b-eb092a485506,1717900362,18398290646333302994
+93305942-a57f-c867-658c-51c7c7402991,3856350812,18326222624084671059
+d41d275e-345e-e929-4863-d1704972a290,3084441566,16182391535565401843
+cb4a73e8-6241-030b-e57f-4860befc20e3,997541707,12119352556216505999
+bb32b02a-dca1-6490-459e-5fbdbe541b2c,3707681072,5894353071038046772
+6ca0db62-fd94-e196-28c9-169a53e34b8d,2332016681,14337859733062981950
+87306766-32ce-4d65-30be-5fad74522e7d,1516438685,3447991940720552128
+243157a5-0132-338a-18eb-f88402ebcf89,259406615,12051889384927544197
+c9db5099-8aa5-0f60-6bb5-5e4c654b05ac,3703582485,5200941522239696480
+1fc28b0a-6b39-d6da-d447-23e651b4fa84,1585998545,1784677499506322641
+5b0ddaa5-ff62-0a1a-4a59-004f1cccd145,4076954444,10909668598923651587
+7b2b0e8c-1dcb-f01a-6a32-27b93e38da05,2202430067,15068805955005805174
+cfd937d8-b24d-43a4-3789-1b9bacc2587d,3550353867,8422949140350515801
+c592d27a-3ac3-1f7b-7834-2f6816b873af,201569435,10523107220158665521
+875c4375-c9dc-3e91-515e-f18c671735ee,642042120,15938042785870701120
+83d93062-b616-db80-235d-3ff9ec242992,3784436184,4381581589529531539
+1b9a514f-e336-1ea0-d5e8-478a1124dcc7,3238361498,5967437184188191909
+905e7755-1010-66da-acee-12a633815fd6,2273950023,9256328370610075807
+cb3de88a-b8d5-95c7-76b6-af94f9444185,4137625787,3319488623191777639
+58473523-aabf-b0ca-d6a7-1eeaf6b172b3,4133868752,6130137946749906568
+3469a2ca-8402-f937-5c8a-b7edd7c2bdcb,1375426979,12145512134774420921
+325c54cb-2c15-fe57-90af-4df06b1ab257,3363093925,11086984847179752222
+9d7847ea-e565-cdb9-36f4-19130ab5a22d,1622890118,17971621367833737037
+35e698ef-f4a7-eb8e-b964-1a7dcc690c03,3064608733,68319285857403237
+bde15315-e6a4-5d47-6442-d994b7b60629,3289182122,425608253937772535
+e6c91b09-84b6-1952-d21b-a1d7706318a9,1034747196,2209579343095203451
+21eaa56f-d847-a6fb-c1bd-257dd90b9e3a,2409114139,16984812650790217611
+68678a5b-aed3-f524-39fd-92efde9d1cb4,3360106094,7892489103388313497
+8a8e7d44-8bc6-683b-7ff2-b7caf5a8c0af,3325837113,10231210916948364653
+610e13d9-18a9-538e-94f1-7183c42aa7e6,22357419,17461494752293351791
+5aad5568-b249-3c59-976e-0e16c99525a7,2841635781,15383023101679737462
+988ebcf6-841f-cf47-3ba4-e284f8b4108e,1286283645,7295487913861857238
+3b9f7c69-2776-1bd7-3594-fc87ae282b38,3137647490,11682200197282889066
+eac3d678-49a2-aef1-d67f-64cb32284cd0,628930561,2335370379329760366
+cb7c97ed-843d-ae73-67a4-b28fd0e8d0e9,1172191030,9292662565659482835
+918f8de9-ae52-3362-c15c-df4e018b7d73,3858146708,5159488870567385222
+9fa0c14d-91da-12d4-2ef6-882a811140e5,343853361,10619250706452494162
+c83a243b-a0e1-ea31-509f-fd880d53b9cf,1978306408,8470462114670797922
+4d2fda1d-dc6d-26a2-7058-3ef3c96d11d4,1417151117,3483728409460703629
+8e30e1ac-2d85-8ae6-17af-bbd5be4dce3a,2084889328,7278133161336727635
+a0058e3b-ff01-028c-0e55-bb9539bb8f52,1804488789,17505539230509788714
+8c07695d-1923-1abd-07dd-fe4590f4d593,2572852330,13544790563491044083
+d959923a-2245-2506-4ec5-dbab4cc3d1a1,4246286993,11354773482195602460
+a8109c42-9884-5bb7-61c3-c8a1ca4ce670,1759602129,11438117986866792539
+fad7b588-3aad-23a9-933c-29be61d11eda,2844356643,7364326293313262814
+045c8c71-8383-e9f3-4fe1-e95afe2a76ed,2104552983,14104584701610464719
+c1abd920-2c29-b5d3-9e05-088b80fb0d0f,772788880,1276310336014925269
+d66a8d5c-e925-4ac7-ada7-28d428304789,1638616960,13574546968197517409
+246f6288-fd77-243b-5842-5931040f0f36,3122385320,7242557037715617029
+9640a20e-bf1f-fae7-2c9d-8880cc38084b,3232266959,11637151651479584939
+77c92923-e209-bd92-27ed-540d506f6998,2355952361,3277151996333930045
+7ce1df70-e3ff-4b04-1686-4ab376cac3f2,1205441934,8647165806058289452
+ae87efec-4f67-1faf-d8b3-1ec6a15c0582,3235555335,239556322455383967
+6391e4c7-4a7e-ff07-64e9-c3552860f2d1,647346860,18216927680559623263
+ffb2607d-9fa4-37d8-b6da-62b54046a79b,3106296482,16917992978188001239
+2aad1ac3-52f4-2b95-fb2a-3a2ca93eed37,3132316543,297982657393110246
+f595b8a8-0317-ebc7-c172-1ee102deee0f,4147000722,9867879487487179007
+a9a4b625-cdc9-e772-ffc9-600590b08309,3292992615,9023851262286815343
+355c5ac8-a1d3-f443-62ec-177ccd5028f6,1118124596,18109658990457332650
+73cf9b97-efb0-a626-7dd1-c2e1040c4e2b,3620447410,17380770088254408118
+75827290-0fbe-1388-0492-551de0ae2933,3043154470,14782141322113667657
+8ffc2b95-c10f-4e2e-6e64-d5415963d619,554903273,6467727815752704539
+2ba6e0ba-78e7-0410-8034-117160f59250,3680718035,15941325460936587005
+f46d9e2a-aa18-f989-4a70-8df5d8113e94,3141176280,17767368346772814094
+b41fdcfa-8083-e25d-0fd6-43c1d1376f02,2915206542,410086285582701951
+1f29fd37-376e-4f58-ad58-41c9103d5680,2720182110,5306906975871078294
+146d01f7-1af8-13c9-acb9-51bfe2c94a86,1740128419,12257523019744136122
+64ec0c2f-5708-ec40-c67d-6b58ce650bfc,3691407507,6589439780113717303
+029f9d53-7acc-e83e-8082-19194c42e46a,1495554605,204117832619300550
+156d6de2-b8f3-9717-7db9-668a44f88fcf,2735781610,15640135730161823048
+9f6d8c3d-17c3-d4de-1315-dcfd51dd8b58,4114287398,12844629385520078879
+b68e053f-c9d2-dcd1-99cb-b80c0a99ce14,2541403610,3509768379043302219
+ccac71a3-687d-3dec-0ca8-83bb7908acb4,3299612058,11697670641724145513
+c3fbf34f-7fc0-21bf-cfb7-2e5ccc822b8d,3484715907,5314301789764020267
+983872bf-50e4-abd3-e507-25c9ae663cb9,3743848017,11228030489982451842
+d9d71700-735e-2e15-0f23-57d5f81b1cf0,2667606985,13334375327423726211
+e2346383-7263-14e7-e002-5c753b5742c5,4046012569,3698556594932599602
+11e505e2-9acf-2f5e-b7d5-61c475c390e3,1025632373,13619646425234743397
+e563b15e-46bc-8e15-9d6c-05d32ad750fe,1357936236,536242925631491745
+20d9742d-c865-52b4-1608-dee66e288e5d,1935080005,730549357709104828
+61e2280c-2f7c-653c-7ddf-b70303223d44,1888213686,8978031125658667357
+cae3e33e-c9b1-ccef-d7bc-bdeb1a814139,2700541933,4420383351938342752
+192bf7f8-825d-8dc2-324f-c510d509cabb,2021602256,14073085576308609342
+54edae53-9e4c-b154-e2f6-71e28fb55f30,3877097134,7364497749214876830
+cb7ee275-3999-e875-db17-7f22e97f3004,215354743,12803837307072746691
+7ee32027-32dd-795c-7ea2-0349266af67a,3637749295,11776038020190320344
+3a3f1fda-edb8-afbf-4df0-3c2608857982,3986424640,3549818383535870235
+6853ec97-8aba-1d2b-b16a-ce3656f485a8,2067863567,1990829902301213047
+6e57de14-d999-c74c-2799-deea7b1cefe8,4270194095,12232805572385830958
+78ad4431-c0a9-6ea9-df5e-badf26571927,1946701682,17343130629042527337
+0e229eb2-c86f-ee0c-541b-47345252906d,3174348625,5782747160225682460
+f3498fb9-68d2-76ad-4c17-fb803f213ffc,1133668480,14761580385791737918
+eeb2ecc3-424d-72ce-44fb-d016f98f88bf,921475697,13968174262205274283
+a901c596-674a-cc97-7df0-83b7f83c3efe,3024972063,3579691531635882156
+5fbcc275-a5e8-162a-8560-881823e87bb1,24109806,11735098384910760062
+62637405-c229-0799-a7fb-6b92be312003,4101815876,9625452428477672170
+49d36c56-3d78-515f-83ba-1c23f28ff38f,1261209940,14023231577969967034
+468841ec-f4b5-d7e9-ac7b-7ce9f70fc648,347857528,9164078085434515226
+ae7e559b-1a72-0255-600c-10c2535b1fe9,1609918857,15509411551740870818
+b232d28e-1c50-4bfc-3ea1-02b3654b53a5,1287394730,6124806193492566063
+4049e918-bf3b-975c-04a2-bc2ee75dad64,933574750,4284817252606649495
+f53cb475-de9c-6eec-5737-17a410fcec04,3705265938,7606419970701109632
+8f4aefea-7903-036d-9167-e5a8640359e8,2970972557,5739801136192116511
+baa28850-e028-0b3b-6d89-6c94bfa6d53c,1194904897,17905835252801996272
+f1ab39ba-8757-e3bf-c366-f0d6eb4424dd,1639159424,15272556147115602371
+8dfd2d88-edd6-cd45-8807-2d547ec5f2b8,3201723668,16176042886467693354
+509f55c0-f8a9-2fa9-f9c3-9cac71bfa4ba,1579330735,18092201680087048001
+5a645a38-b84e-8fac-5dce-35ea9c445a48,3467533755,13383901989078270208
+4cf855af-6467-5a92-4e26-17a9d94ee2c2,2827952130,5132570023603007880
+a0c6911a-4d8a-fd5c-1901-159aff3a28db,4223549990,15865367286113345137
+270fb9f6-9d0a-8976-e0ed-bf825b45b583,809225413,3313886810601698173
+b16b1e44-a236-4a36-e859-fc5aa372e4a0,389096866,4689077575795460198
+475c3f82-fd4e-dc81-8942-e05cca283639,4057469777,10937817650448830291
+e3449648-c633-9ea5-e937-2e4c6c891233,2839540440,6999561974365056194
+bfc62a67-00e3-71e7-7763-226261e54bc1,3096546928,8215504471745475530
+8afae885-2f50-192c-4c08-443df94c7133,4005917122,10456907430708333336
+b33921a6-ae4f-5af1-5076-b9fa94205883,2883386648,565738984963039536
+c18fa122-14a4-9963-efa5-01205b864dd2,3149486074,1080947942509356595
+e9c2e673-fc2d-9880-a489-05bec8befbb4,888230278,4588060057878808852
+d5f9be13-ae3b-dc17-7187-de3bc0ca7ce9,3810921451,12825734044032575345
+8fac9972-5c66-d62d-4aef-7d0fdd79d4b5,536590896,9034703966513501641
+35255dce-f9ca-2ab2-5ad8-0be700dccd99,1811000792,16232056734147437072
+e4bb83ca-df0d-4662-168e-0a2fce5faa39,3229993615,1595367925964368829
+88e23b83-3c62-4e95-9ad3-8d1eb36dc1cc,2108773137,10674425216974894396
+f2d5ab36-33df-942c-077c-29a0777e2009,4240358855,12058704452594961836
+c5321666-a11a-7973-9fdc-e79726b5d4fc,2519339498,15332461564018182918
+3b1fccc3-b356-d6f6-47dc-a95523eff7d7,3365118588,7199669143766670661
+fda5dfa2-5d9e-de8c-d187-f87c5fcd5a53,1350484955,4357250011052550854
+29aeda8b-ecb9-c97c-335b-664098849027,3237941211,6315125496609071927
+e9c8fcf3-fd38-bb25-c22a-5b15e283b601,2614545675,11437419809921772345
+488f1829-5ee2-3855-2064-c8819a2526a0,3972323893,5237611624839942217
+49ef8c94-4d49-4d71-f1d3-072c5d8a7e69,3451770936,11166303918111942886
+31778387-7fc5-28a8-126d-dffccaf3d8a4,2974183484,3791426719410278607
+7f24140e-db4e-19d6-a5e0-1a5a01e0fac9,3265655101,537791477407389737
+e18d1e24-252d-8c00-a33e-8a764c3c7d01,2093685158,4966833946739207721
+2731596a-8967-6260-ec69-672995f1ffeb,3282540698,18331983767566045761
+8e6135c9-00a7-87a7-b7a1-67fe8268fc2e,3956305710,17152059300386600883
+c0cdd2b3-65a1-5467-bc6b-597a32d31192,47052331,13425578977971585288
+d1bf582c-79e5-d720-07d3-e3a59785f694,1640845631,7392300644840143206
+8b77a131-2688-f45f-67ba-b1ae7565c9ca,4276337598,10590281361054369272
+536a8cf2-c365-6185-d0e9-8294818b53ee,3020982867,16161271765283612853
+e31aa5fd-7584-b93e-f5e9-79a5da371a6b,4267259996,14663160059809548162
+4b538319-e9b4-1e1a-01c2-2bdb402816ad,2757654001,5724936481179956685
+b435d226-38e3-7e96-b0f6-5272ae8a7380,3269541876,294955707278050457
+ce66598b-8775-a232-3baa-f38771f0e459,27717688,3450082981709245245
+7204ddfc-3c21-26a3-7b48-816ca8ab8aa7,976569333,15100252492829956642
+e5cac009-4eaa-8ecc-6fe3-944a54083cdc,3127710368,1911082215685697278
+0e32ab9d-9b6a-2772-5414-95e0117ecbbb,3338475605,4578918463005592488
+d1964ccb-4ac7-7c2e-e35f-839d60316c1e,2714179774,16537816752854722847
+afd220e9-2af8-8286-d023-f7cead99b06f,2213466808,283742304354063769
+62c51151-1101-9cf6-60a7-b1ab301112e7,1056343115,4345751273564567026
+9afa5b21-041f-7838-e876-04f42dbc8335,3080191837,13672275478047566874
+4e09e657-3416-473e-4f4b-768a669c6812,2065722415,15729861984612702255
+6d2f131d-74ff-02a9-4982-716cb5b9eb83,4189467751,1407691408405251826
+3697f416-6f7f-5b55-4fdb-6d6c4b1b76e7,2337535211,10534698538534836355
+32cb4395-6815-034b-e2e6-5728e8692ff0,2391537658,4370038996078355307
+c09f23b7-5d60-1954-7d1f-2b83c6d7e245,3054662440,14667030388884969807
+80e4a810-afd2-887b-f6dd-795a6f52254f,861662355,15734370081233301283
+55430966-13f9-caee-17e3-b2df0814622b,692064657,9528791981266469653
+8c0afa38-73bc-b453-c3da-a8fa26735d6d,1377964028,8910035155934625653
+6112751d-0beb-de5c-fac2-56c7ee34563d,4247745426,6185528686977565371
+7807065b-45de-be33-fbd5-d0c69eb0575b,1359448664,18233730085282937694
+7c65c23b-f36f-a040-1813-ac96b3a1258b,4061033149,595271456568406251
+ea29f17a-e65e-b263-8a98-1611323a3303,87851942,7795708787301099494
+4501c9a5-a6a3-0a5e-893d-6fb7ca13056c,197254483,7975348346133301877
+5e0617e8-4515-bac3-7a4c-a3325125a833,2451504179,10086700647917675477
+84641214-54fe-1635-f056-e121d25d4ebd,1018141013,4991156891612593972
+d0d1bae7-8c7e-4f17-bf6b-5138b02f9cb9,645987781,8308251804708141037
+c50f5459-9ef1-faa5-b44c-e339c848cc06,3334275563,10592573429476736821
+c63666fa-da34-c4b7-d1a3-948ea1223714,3593237192,8933644392978788263
+df5e20ff-aac0-9c77-3cb4-b6dd5bc45881,1169593866,17376172750357031190
+6ec48465-2972-e583-e89f-4d56a48aae86,3756136693,16525516788011619310
+14be4deb-db7e-6a47-86fc-7d138d6bc282,1465128273,5774533317960789178
+c00e2e06-6c3b-53a9-8565-fdb1c02bb899,4021443170,15000571801917829237
+89c3aa0b-d636-0a72-826a-669040a65500,2728472503,16395554022889018485
+b04e1c7a-bf15-9580-cf3d-4bc5f53752a2,2139881018,8337723779395852644
+e3797610-3cf1-3370-2ff9-319038a09b66,2778973170,7401319376944759154
+44ff48d8-2cce-e6f4-8d59-543c1e908b59,4136556032,7696717071369919154
+84eb3f4c-2e68-c66e-38ea-4943e1444546,4000429086,13994307000197365645
+b4465356-3f47-ff74-f18d-aaa3003999cb,929023212,12510111325630009318
+3be93193-a40a-5dea-7b5a-b364191d1c53,1395658586,11078496663811409823
+812994a3-9b24-d0c8-59a0-8bd9be610093,662564239,16890036058453398920
+bcc6568f-082c-01f9-5187-70956216b2c0,4159189146,683978886698747855
+6a888bec-c7af-7a42-3718-f92e4810f5fb,186286746,15926907011308362736
+4ec38f59-c934-c6aa-e936-5d0344b2a4a1,2451676684,717060417343117908
+433b0b2e-0152-153c-f4d4-993361fdd6be,1937295332,3185877364972239095
+cd9939b1-6bcf-3177-f111-6b17eccb8381,222918273,889249232681775967
+5e21ba8c-890e-c34a-a319-415b0544f584,1283682167,14181589776442121928
+6d64b3ee-aaf5-b3b0-d65e-e7bb9af857f0,2680587762,7028613415129098116
+0e21951c-af49-921b-23b2-b263c8d5f0de,2926328026,12150901009198546488
+7aadba7e-ea01-9f50-91a6-39ad34f5a2a7,3928029027,6260033386693603680
+b1ceda64-e6cc-d5db-edf0-a1fabaf480eb,3794778490,2127748746201493363
+0822f565-be09-eb00-4fe1-8c392f0333eb,2207590846,17882760941901088992
+159ee8a9-3d15-de70-51c0-a5de807636db,686049920,1497982199659673491
+8024fa54-f271-b9b4-6a04-c974435058e5,2849102810,2134264315038631447
+fa20d63b-43f7-4d52-f9c6-2b181371a0d0,1380253013,13270972531775117115
+d0a33238-0bfd-e107-29f7-0732108f26e7,521446038,12445328396533043269
+b6486095-9189-04f6-fd7e-dd9b17fc6016,1299147006,8067968762735255203
+9312dad5-d6e7-64b6-50e6-b3976e5e95eb,2541579713,13841310024253561517
+3c0afcf7-0bc0-d3e0-37e0-47845876c309,2341393339,5351361079435652321
+c9af58ce-cede-54eb-c796-0e97f0996dc1,2809681703,16410169226489471103
+98d6a8da-14ed-8beb-2c0f-efe54e2251bb,2618673319,9960961207685312132
+f67600f0-271c-8307-040e-641cd88b1d76,3732121459,6548800521731761877
+460bddd9-08b6-fa8a-eb71-960e2d2667f4,3347919543,8267396901399444055
+22b27fb4-4cf2-c959-13c7-5d0ad42e1073,2334749354,11369826136598535176
+c9aaa218-eb51-1765-e585-e07d5d260d33,3267785498,3447501528317331541
+259215ba-dc00-d221-caee-e7d3cf461d5f,634410498,5140560046212288685
+6314ca2c-be80-c9f0-1c60-d76cb0b00f67,1323115696,13871368475258176945
+8a10873e-19ac-6b77-1415-d7493141e9f7,2914833232,2449106114004612132
+c2b16d14-2e3b-2ab1-ca13-6c1e3a62aa58,4243327189,12282431446627817622
+04315129-91a2-8423-9d35-7d0f48c5b97e,1269784457,2025170349019400203
+59e90597-7b3a-77e5-8941-2c7f79b40519,2381388164,162589759541882879
+5c3d0883-a7ec-35e5-36cb-56a20792be25,1277881667,10609176939935890452
+9b0387bc-f04f-235c-4501-3e872542d115,950838095,5802524300623972730
+f3bd0af7-5279-b9df-f31b-117e718d41c8,3543672825,7514544868709530889
+1765d790-e6fe-1a75-42c5-041c82c2a144,666925924,12594537081560718495
+42923d37-6544-4aff-75d6-3fb53585417f,625200543,8441811379775570761
+a6ef0744-5a15-3cb4-83cd-2e101d9ce24d,1912389274,1264700189647652388
+a7bea413-bcb7-dfd3-d29c-477ffbf546d1,3418263616,11223874886799814009
+bc1ce51f-d022-bea0-2ffb-a5cf1305dbd7,3583904397,2697878719910622801
+06859327-3c08-b8dd-9d0e-44912240e67f,1697674521,1348463926014210099
+11bb341f-e2c0-4fd8-d567-592249beeade,2419752840,7213412524616453488
+c6cb4022-1340-385c-eb65-96352c40cf4c,3164872355,7514458908966721477
+cadba9aa-64e2-9e3b-7252-8dab72d2c459,2569737786,9409216490734307319
+649e6e59-ed02-02d9-deb0-f7e6376356c6,2548992468,15255395824724783601
+28ed4f11-5b79-c673-fd33-58e3fc416a7f,889302021,11536556311571040604
+5e2ac9b6-c604-7040-3717-cb9bc1513a8f,1747830243,4214127586444229311
+18ff14c4-bc14-e51b-85c7-ae0d1b8e884c,4067531464,5201801583640102275
+b1eb0f5f-f0de-125d-a8fb-7bc32d27c0fb,3736307411,7872113110909905564
+ec6c9eda-42b0-726d-69ed-f194d0e9f22d,352617750,11631096666241284755
+073a2c78-52fa-faad-b1f3-490cef299a19,1635314758,2525352698273743608
+ce14bf2a-cae3-7dd3-e9ff-404bfe00dc44,678564666,16086166091292177544
+b17531fd-fb0e-65af-930f-6f27cd816660,3981274953,17099169902330633607
+dc97a692-d9c9-4018-5a5a-6e8eb1954530,2637146812,12861332165315789402
+bbd1c8bc-1172-f6ec-e239-5dd0608a3ddb,2171018570,14489791551465560413
+dbff6c25-a683-284b-bb17-164cf3926c3e,829224491,12611278736720803444
+c3a89491-a67b-fca4-aadf-a6e060ef54b4,1391971794,4723900964412592706
+97cae12d-f022-af1b-2d7e-9f6f20fc4877,3581417846,5541618037508600334
+e4dac3b3-2a15-b5c3-582b-6846a9ae2d2a,801382183,12593694362555024175
+7539508a-69b1-c1d0-88ff-192a4a9a6bd9,2307085729,3005248457929537866
+dadc7ef9-1954-bd8a-3094-4636ffc604b0,3045089186,6505947154309096890
+39c9d4ca-b4bc-6319-2ecf-e47a4bd8b00e,719694173,3509560741782518780
+5debbc5f-85a5-349a-0288-892734fe5a0c,3913878934,5770229525529554380
+8dd58a6c-5ae9-8159-b389-8584ca318613,3406445290,4362394608543534453
+5bd332b2-5bec-e336-3ebb-f37500d14601,1343373371,13290866167955587616
+94b3623d-4e07-4a9e-870e-67af791d4915,3270886622,10326553402327117159
+09198d22-fdfa-adec-f337-d554ee150f91,3467482894,3077642058913573461
+076f09fd-6116-c014-69aa-408fb3878d84,1629522012,11529151400280302791
+0ef958b4-7a8e-3e09-3a45-83b0bac871b7,1355152494,17816403876873867555
+55294f21-c889-4010-1d36-ba82bb546ae6,2088388584,10718595343237350994
+02e17375-81c9-1c34-712d-9f06c73e7855,1434444070,1075102811854824410
+b852d9a9-6210-5fee-4685-cfb52b724247,3915330310,4106463380873140815
+23f90611-669c-2a30-71a1-bd75355adc09,114178787,14926615077727778527
+a6340f8b-95eb-a858-c599-38cce82d0d66,2503556315,3831800947757623925
+dc738c20-f681-d5ac-b32a-4347466163b1,3700718967,7325589137516254260
+f018a2bd-4712-72fe-76c3-e988fd7330e7,2472022022,6237486532518801280
+cadae013-3cdf-980b-a8b7-a3c2ead53bff,663927847,1302326875097261987
+35673a80-18ca-355c-2001-68f69c87ade7,1835692071,8139505929750859059
+7cfad24a-c31c-c4fa-bd9b-8b44e974af4a,3982373599,6419288449127577589
+db5ac5b7-eb74-e35c-8bdb-7560cf026b36,1043103332,7925063893503446785
+19ae37b8-faaf-33d8-4ee2-6872ac2319d1,2598550136,1813385353188592397
+c04558b7-3d67-2f46-b6a4-7ac688c4240b,872234187,10779125096713103315
+cd32c31a-82d0-47e2-437d-c4546e18dbb0,2015140042,7611629978258896346
+ca89c23b-5bc0-900e-d14e-0376772d5a6c,901213523,7293949095394200934
+86b98daf-1a43-1f43-ff39-cf234e8b0a53,3801621313,15822558366065174504
+0022cd49-5439-19fd-cd82-85ede60f8a5e,1508246559,8267036671044888029
+40808b1c-4aca-cafb-66e6-9e1993401112,2995512387,1821334952575475970
+0cb6efb1-1629-8216-c6ff-55040b1ea487,39542535,12685579498103695648
+ceede7d2-5e6d-dd1f-3720-1560bbc78e48,3835910924,6707998529114542337
+e4afe2f7-3660-3d22-f1c5-526812572c65,2646561004,18228488754816411903
+8778e570-0b0c-753e-cee2-b5fbc7e09bf9,1879880889,2913384164160951949
+b26a45ac-8788-0877-25c8-cab337b417d1,794561620,14207986253769546117
+64a54cb8-b18c-b1a8-4c59-9223088a50f8,837573027,3181752278004704362
+94ecf17f-f73d-2d02-55ab-8bcbc3831c4c,4042077036,10517900449110040456
+46206262-7f59-472e-6b0f-88e93d6fba01,3746920239,9921674000808392052
+659bf46c-0bcc-7ff7-bce5-ce239e04f1ba,3855888408,4327971774969996776
+02a17908-1f4d-f0b6-a45a-4b4a8d6e2587,4052895332,12848149893019971063
+c4ecc808-db94-0234-5936-f7f112e26e66,1882204270,1834268100930713400
+d2a47cab-c9e9-4ecb-4831-9e5313d78ad3,1374773259,9597310924072992765
+ba03c8a3-8ad4-c1c5-8f23-de3d344d526e,602316519,18115835859115154497
+527a1edb-10fc-06da-97ae-2fac12c34cb5,813433823,15265665016471933281
+8a1f25d4-9a1e-f08c-ee2a-13d71ffe8675,2718493805,6156565919559140715
+427314ca-2e19-3e54-2eb2-8352c2dc4fae,3265266925,12100544616434245253
+3de387f4-7aa3-f954-9dbb-c41f017e23e8,676135705,12014360644487814552
+27880ebd-dcc9-6ad0-a2a0-c7185713dd0b,3258258163,17901062924361896850
+f65e146e-da7c-4c88-9aeb-9e5fe69d09ef,956972602,10691452612435064451
+77646619-2dba-fc4b-411b-30450347b592,1647366281,11954475788060684327
+de8c01e8-a523-ad7e-f4f7-d7c0c740f07e,3363471873,16176545840787969283
+aa8e8050-6e1c-7a25-8bb1-2ebdc954513f,1484475399,13625701187450294566
+c4f0b9ff-c114-69a4-9131-c0537bb749e3,4196348401,17791968559923575616
+474ef25c-9804-6234-ec9d-924f8f7073db,3765904932,6951400438139359901
+8b68c83a-c000-0d94-b22e-d948d9b6b7f3,2782606874,3600589095597125658
+47288667-dc99-ba36-86fb-13cc6ed576fb,4090880854,16604448952291251972
+1148fa7d-4040-003f-54bc-0960d3577c5b,2870576525,5138494226872082530
+d08ca49a-4d4c-1e21-caa6-9bc181197966,733202710,15264421183302990900
+73b03026-4a46-ccb4-71bc-336ff7fed438,4130292303,981567435654731515
+4af0963c-daf8-2aa3-d606-1cf9ae506a57,3646284790,9762035206801899313
+28414e9f-a08d-c4ce-f01f-bdbee2c22d90,4273382150,16047668384655689799
+a7d9b507-a9fe-ba83-0301-bb9587d1e95d,2176307789,4961784950219244246
+86c5698e-3f51-5300-3ee4-f666d79a9395,936085242,17349025411948097972
+63333a9c-2738-e94a-3394-a772e604ffe1,2422203204,1283800211785113410
+4279d553-b3b2-c596-be42-4b3820c88b49,1075209610,1222720009742702186
+958f0e06-8e8b-1200-2ff4-20fd73181495,853888910,1882624223659508982
+62cf392a-1186-4b96-e965-dc8673e4e3a7,3716899066,16794743714561936742
+c8c84f59-e2cc-2149-0c21-7c2baec4824b,151972984,11591891592118734651
+6226a5f7-b092-3d19-3593-6eaae3833e95,1518617536,10515293454083142697
+40b22c9f-c2f2-3a23-7dfa-5e11ffd371e2,4050570258,17297173696771875534
+bb01db5a-a145-cd95-c0cb-8eb836beaac9,2608130618,16325904828658873300
+449599e6-9877-0c76-db59-4b82fcbaf4d1,3603706780,14564453269636406385
+565d16ba-1c60-e70c-dbdc-243563bf70fb,260534811,17758411261477940128
+75e10562-5a51-0158-aaa2-5354c4b073f6,588785059,10194342303480371250
+9f286b85-7844-b718-292c-3bdc20d57e21,590039576,8409764257345352573
+0f6a2184-db58-96fe-ae86-8c1eb57f856e,2931286950,1914501754659888528
+650a2edb-36ae-61cb-01a7-c7fbac884e4e,326313032,13842999843301166903
+8a8ccd99-3c68-65d6-6dee-d4b3f5ca5350,472053013,16169735074512284509
+8734fb0e-e813-1644-ce0a-85e8ebc6ff0c,1003314428,5686050454953485525
+75955b4e-65b0-ceba-fcd0-e0b54953658f,3715765159,14792362199887200241
+551ca594-4562-2f90-8eb4-08e2e7ac9e4e,894437928,3387606131094959872
+77e0eeb2-3b1a-b024-6ed8-17e0d242f6c2,294157160,3073097903155164448
+75a414ff-71bb-d988-679e-935fc003d68c,859529699,6587809376141677733
+124641de-3b16-8024-838b-076bb5cb3cf7,866214172,18347223618636812253
+4d5d564f-121c-2958-89cf-e5b5d9011f0a,1102758479,17463806482694312892
+eddd56b7-a32c-9c96-bf85-bdd3b2324cae,2841239584,8004773182979205019
+faaeec54-0128-bda8-a409-dcb377ae2262,3006572685,18132976419889164950
+e6604fc5-1086-ac4f-b71f-f5c62ea4607a,3887982442,17209976881376366030
+ba937f33-570e-72b4-4b3c-68868fae9e7a,2158433515,1494851598138321033
+ffe51c0d-3dab-a141-a4dd-703c1ac98da7,1864000874,8690614550395993945
+d2d37a82-4d10-e3ad-eaf6-5f269b3b6eb0,3066371443,10613540311028533824
+0eff08a5-23cc-466f-344b-0d9468617332,4131330613,17370777328779429889
+08ccdbec-7641-c20c-1f16-4caf9a915c51,1349349554,13721305900367499364
+0e82f225-c530-97cb-2151-31cfbd3e64e8,792372416,17115081172240217033
+defd9577-1387-58ba-8efb-0534a12e1d1a,2121226189,11389667791422926078
+48c08b64-f9f3-c782-ee99-0ce985b22d44,997437015,4312091191035426246
+bdcd13f9-8a25-2577-001f-b29a684e5e65,2477580380,11712085928682919189
+9ec6f792-237c-324f-6688-165b4a27d116,851154480,14015170840385969625
+ce019e47-cea1-6e23-fe7f-27598b10370d,2921494930,6913969731001077772
+cf6b7a54-1aa1-ee6d-00a0-da6260d09dfc,2363032652,15879333077509148140
+b18a446f-58f9-5b30-2955-32f60b5ee8d9,4130874542,6691020206380742122
+ea51816e-0dae-4867-fc2c-93adbbb3c90a,3399548015,9368230559096363494
+1a9841b6-59ee-b581-b768-c14ea8792c09,2381129547,12283609067795186253
+e2d3f0b1-9c81-66e0-8894-880a90bdf687,2287790713,4149156040865838378
+9851c272-b768-ce8a-57e4-a16c7134fdc3,1767416559,18107126300817584261
+a29de5c6-4ce0-b14f-428b-b8dea45de16c,2017777370,17568974027347220916
+9f03a463-1b60-721b-823f-3693a31511c5,3166907938,16508142477888786072
+e9e2a602-99e1-d6cd-d4bd-947ea6a49e06,1986702925,6186836307250697241
+33fd155e-4705-aac1-fdf3-fe985cbc0232,1872374679,3085828751528197491
+19e704bf-2134-4c30-9710-495ff2b7cab5,2156853823,4865671838896242474
+aff695f7-c5c1-4f08-94fe-f19c3644012d,4256744918,4750886818126802968
+ccd86653-e987-ea40-9cf5-83611f9665f8,1876338168,7833595093965129004
+d0183b0b-e295-a407-d4a9-abef5bd3e991,2912224702,10331475584188174679
+761e2613-a2ab-a232-1af2-3609ffb23bbe,2263877407,10289191421833709020
+b1c80a7e-7c48-0ad6-ede2-10290917a08a,896361330,15065899514437246661
+cfa70cd6-924b-2152-93a9-dc1d645ae9da,1717190337,8765127791410401861
+bd19ad41-4ea1-a781-cb14-acfa025b0be9,3321023280,12850813029322769246
+f2f3a9e7-40c6-3158-3b38-b3fb978eab39,1822081311,14113728050882907861
+bc6a5c07-b3f9-55aa-868c-f4a7dd8131a3,1533188648,13144304810640707944
+ee729c4c-d69f-0980-3df3-5adab76f7218,190826115,18105458777973122509
+c981ea45-7889-46e8-a432-581d9a5e0b5c,253925618,11630586848124118958
+9733d5a8-a6d3-7fa7-64bf-36ab2a2887c4,3564123696,6565308837754025786
+b1c40b03-f0cd-1ba8-b2cf-8fe1900c3e2b,1003731590,11274352378489388230
+2637e99d-9fc6-3019-92d9-d021d45f496b,140244663,8269645378199840140
+6736c490-fa50-6301-dbb3-774d4a9d6a71,29381292,2526381165041925974
+a73abac8-13c4-7f06-3896-f947c4a76f72,3505209100,8393189804433083900
+0124bee0-3cdd-8ad5-2b8c-17925bd7837d,1441711728,14448223895114810473
+2c06173b-f69a-9de7-d370-3d7d1c300f40,2389441980,14931763527956998823
+f79b237b-be28-e40a-a1b8-1459d098cf16,3463949719,953723012716398059
+34eb2d53-f625-aa4f-b97d-ca7c6528eadb,1568425271,14529405124384947212
+e472317b-1e9a-eea0-5fc2-1c4ad0c29862,97186246,268064152396815525
+333d0731-bae4-7a58-2dce-8b8a52e847a5,3559129537,8326827630979224184
+98693970-3e1e-c929-316c-c49ec6897b24,180484192,4190472382539584346
+6cb6ff94-b82f-981a-27d5-97db65b07071,1029059255,7904291554624025444
+df77b944-dea5-915a-9680-c1d7fbfab387,3059222266,7719860378961047247
+1adf27a8-96f4-f70f-8ae4-21fbd4bb1a8d,1686150045,17550686676684712163
+001986d7-5374-8a69-56c9-b1702c2b32d4,2291059179,10751212307278574287
+0d8fabe7-1609-8c0b-b318-77c277f1b855,2845980803,16514633754246264569
+fa819d21-58dd-c08e-8b3b-495b1b8c3189,2701217775,10494986401383622686
+09ae209a-7ebc-460d-8dbe-54c63314c051,3124753022,3019133403461071319
+00a002bb-8e26-b9f9-ed76-9877ae263a6c,719711538,15364224893208287457
+db458432-e758-8eeb-87f4-6ef50dedef70,3449268574,719317255082463768
+211f5d39-6dab-ac4a-9903-ddbf8d28e023,526180532,17811054453426717254
+e4db48df-0a96-a196-de5f-675cb4e96b7a,4273800633,7291221991268044471
+fc7dfc57-f1c6-dcac-5e46-94c41233c336,1150488201,11722056041593075162
+f36c1c27-5129-0d9b-90ab-171d2339d51d,2028946002,2813213647251284688
+36bdb40b-af79-cbf0-3294-dd29a5d4eab6,676447734,5001401027302716478
+d54477e1-3ad8-5d91-c61d-fa1cb1b21b56,1078251091,14238357311941461610
+2ffd553c-93b6-f422-2f53-6f2377baf37b,804057147,14640136465425193944
+dd9c4ba6-7686-7551-82e3-0b4829dd4e36,1487256529,4358002040187156588
+45873aad-4b86-c3da-ebba-e36a96bfb0a3,2448237470,7695196261832552484
+0ac07818-0fe6-e918-9495-9775fff94bad,309735306,17584886178936749327
+19ecac8b-5a32-3ee6-bc2c-069a585f9c8e,3871781551,14945386385721242648
+45de077a-f56c-5e94-342f-0bb252e9b39b,3848005523,17541372594202252992
+f9d60c1e-da44-09fa-1644-3541fb03e0dd,3143706249,9027600443748888087
+fa992096-10f2-be62-c008-b1767129c3a1,3918358130,14925636279633268397
+0c51cbf7-419c-b310-76e0-09317603a69a,888557813,15912365432850909811
+48eec3bc-5a3e-ea0d-0729-205c0e517e38,911978360,12805957839078957571
+deb83bc0-cbe3-0e95-6508-c96dc238c899,2345667107,8557482686004256327
+80ed0d8c-9f16-399c-2c5e-41997e5eeeff,211293408,4733699656034886252
+e15ea32f-5437-6d7b-bbf4-ad7cdb931854,2003186189,9093072674164360078
+e05a1237-b540-3a97-3a1c-144710ab9910,2732524236,12375995417406233858
+48ba05e4-1be9-d721-0264-ff975b5e1208,658503333,3545550460994818890
+75243e36-abbd-e125-4e2f-e7a91336547c,493423236,4582876002744327120
+b26c1aa8-5011-87d0-7549-eac395afd51c,2395044115,13558905652372762059
+832bff04-f98d-aebc-6734-be05131e4ebf,4218788074,8307398125370490471
+f2b64e3a-1e77-657c-7fd0-4e35242d5331,208697563,5621559041512046134
+fbadf7e9-b675-3a41-2662-c056c216ceec,2622667689,13409087943579864069
+f4201234-0576-ed66-22c1-da592e0912c2,102689880,11418648767970281571
+b93c87f0-48a1-309d-15b9-40c5b4b2c49e,2195502299,17310258913449744113
+f8590511-3052-c36a-c5c7-6a4712578f06,40288980,17287400319349630091
+7f05aa92-3d3d-32c0-c036-f2f8a4f4d5c6,4018047477,5315115512070011659
+9338b1b6-4657-186d-83cc-f1116da975df,4043277013,9103493497276322938
+0a45bc5b-7668-68e1-d22c-e8ca12fd4e80,3036178664,15356721757592475485
+8dc1a087-11b3-92ef-8e16-68ccaf90196a,4272724378,7451994951361996758
+934e7b8b-140c-a4ac-0e63-2a78aba762c1,837464274,13788470710838623563
+0f565b39-1046-e24d-1f94-dfaf6f053b63,2407690839,10179648204157792352
+748f038c-7a75-3153-02c6-b1c26435cd1f,2345847195,9392840720869771039
+8ae4a86f-0431-5e01-6dcf-d61458a17e42,3664057740,14963102083508375402
+664c2c99-4f89-587f-183d-93b16bbf24a4,999626637,15753073429676019266
+d35b981c-5a1a-2405-7a01-7c63200474bd,129267092,11041322806861795892
+9fda80b4-7fd5-e6c9-b74e-50992bb7a923,1728686386,8906302407989768377
+d9b5a137-2451-10bd-8698-3c8cf2533728,3349860619,15453001800636295171
+3ee821ca-38b4-bca1-170d-210da8462fd5,1496109966,5514733193538324638
+51ee254d-d681-337f-682b-51562b603f7e,3677040277,6606259454028439058
+48829275-d84d-298f-7e30-3c0710c9de8e,2613422335,3382640427040680271
+74fba776-a39c-78aa-096d-323c989eaa51,2975266207,1176817583292052274
+8d776aee-dd5c-5a9c-00e3-870475fa15b1,2341921103,16552960579463794152
+2bd89cad-24b2-1107-bd9b-9a6b5370b724,2535429056,4440296230216639835
+a8424f19-6bbb-91f1-fb0b-0d84866791e3,1708619992,12929080532150648232
+24d268d3-fecf-d59c-acc0-ac56a72e2c29,1486638082,14073100203814676857
+c5f48182-373f-1bb8-190f-93edf7655f32,4274681100,280892025684026465
+f6f2ddf1-e594-6962-7954-7ab3527a2e6e,1059151121,17382360477780412904
+4b43777b-c0fd-4bd8-9189-0fb794381fff,3810683983,7924525383603983422
+47a48237-91c7-3893-56d7-ec5ab7cfe77b,1125146532,14323438462950913948
+422b51af-3013-983c-c358-8e68371764ff,2887635766,16358900943596323075
+5aadc2a4-87ce-cf85-47bb-f15d5ca41cff,1940660128,6288945518884950259
+9f97883d-64db-b523-d6e4-0d80b80c1bd1,4190638008,7635644662020422434
+00da8d47-6017-6969-1d40-b0d66d0a42c2,223026443,2286187507759829214
+4960ad05-726c-3840-b863-390cb1b0492e,175484464,15019721615885210178
+a618b780-1a31-f856-b50a-7e854b1df4c7,837079495,11379949665416244783
+21d12a4e-d351-c972-e348-798abb90753f,675079503,10032679546831179486
+efe549f4-ebdb-9fbe-9392-964699e376cc,2736128380,2174525854722125630
+5184ca54-9b4d-82ba-7b7d-ff5194ccde41,3717211706,972680474017074309
+6214b696-0e38-0cd1-3a50-ab0162d2d231,2971298766,12794717685967447865
+042d8893-b693-7331-c739-576c211f87fe,2703680018,14067971270837209530
+c86f4500-3c63-d92c-5bea-6aa791f4ba84,732781442,13339315579507278567
+16c8f853-f7af-321d-0c82-28176dcd7b6d,4200140416,9708450812123315515
+048ba3bc-2617-9d08-284f-dd481c2137d2,465113415,8532917319995582721
+97380975-7723-ffeb-60d3-7a975136d11a,3137515283,12266023427327569624
+71c34a1a-aba0-ba46-637d-52f4bfe6b9ab,144153582,7963269652471699037
+9cd12897-05bf-62d5-89a8-c70402e99653,673039679,12474499520446559575
+ef571ff0-91dc-cc19-fa15-a889d56e9f84,3868539406,10059659978955156414
+dbe8dfad-9f3f-a5e7-af37-e32cfcbb8060,1728381739,6297813105155361529
+c72b0cc7-2c1d-9ab0-3a13-d9aa13550255,337473890,7151030447079541546
+c285aed8-9847-c216-1a4d-67b82ee6f586,686533178,10468928182825073373
+8875d3e8-5c23-bd95-2096-d46230c71983,2413768568,10876577464935689860
+893980e9-d7af-0511-f98d-e4779b2e24be,3902335466,13369094426388627551
+fd607319-93fc-1918-03a8-cf7e51c253ef,421047568,1622541571741964957
+02051c09-b657-a902-f165-20261d9c0ba2,7015610,12475682420679634508
+d103697d-00e0-5269-e756-bb366476e334,3573619466,3791501764165089302
+c36d78f4-1808-ffe8-2937-7591203abfbe,4082210114,8980786738570547160
+d8659162-b252-3da2-621c-66b8b46b422d,2909929383,6885869530394773997
+9c50a733-3d42-6b66-ed85-7c4d5be495cc,3223746458,16913145350268412791
+0362ea94-14ac-fbcb-de95-34c1b1ac8e41,4136949748,15866065096135253533
+d517e6e0-9f3d-871f-f653-9a2d15dff7d9,1890034148,18072587607441496650
+e28360c7-dd51-81c4-21c7-711f645f58d4,426637243,15087134809344104437
+6bbc792a-3ab7-0846-5c39-dcf16ab2325a,3173902301,15660683120195686449
+b2391f83-d221-f66d-5cfe-11a6d26ca503,1448210916,3719378147297382807
+c684e9f5-833f-af56-fd9e-9ca23c3fc267,2141581893,16960100061730837962
+65fa9478-5316-202e-63a6-c480fcc06e45,2926910826,3008261971033576140
+4f308d15-fd61-e8c9-12d7-8332ff67b995,136528870,11804547622157933476
+d43cb49e-505e-c843-13fe-89fe0b83f793,3362756292,15287803850198712803
+ba1f726e-9942-74c6-6c73-7f6ff50f4439,1023504681,4927337146177531984
+a11e5709-95f4-198d-8eab-84254171498a,74631625,7975343131938390894
+e4aef3db-649a-0816-4ce5-9bfe3ccc2f95,3242183428,6313949978491841096
+2e9b6013-0496-0aaa-19d2-36fa3f99ce45,1000085272,1525466291560305236
+1fb26728-35da-4cb9-7a91-a768660c7432,2628839102,876690040943445876
+4aa24109-8701-a1bb-5dc7-dd736e3ab285,4225858434,14773780468321328652
+88cbb9e3-f09c-a5ae-67e6-218b0b6ddf92,1100396263,12310233294109071635
+0fc22638-5184-0f23-9fff-ae40896e35ff,2381726205,4565039337279226286
+997cb94b-3ab4-be05-03b3-c317a2c812aa,2697284955,10778571025975936343
+852a88f9-9931-2605-6481-c80543d262a4,183812990,9148356975915627395
+2bfa2010-d75e-bc4c-39f9-9902e01d9cb6,10113122,17116991555870718179
+5eaab01e-a8f2-29e7-6c3f-7241ae2f27d9,4199164319,12254848566765228853
+ff388495-c82c-730e-3e83-fa13d691f17c,380950363,18332663731335305212
+dafe31c5-cdd2-9dbe-1b50-d51b199e8030,3815981517,10806894344347593855
+0dca1ce9-4bb3-a338-2af1-20f41ebee8c3,721385170,10589522658779664415
+de1f887b-3302-ad00-ba26-f2ce67c5b277,677444359,3195829829360433343
+c925ea37-5037-28d9-8edc-a243b378c94e,1230584239,3916671188127854078
+637aed24-2210-233d-c069-f4dcc72b7d03,174532720,17848574629224114031
+7fd4cfdd-8adc-65fe-3c2f-81b7628e2fe8,4145513729,9035393144927972574
+d0ed166e-697f-da04-d2f8-acc52dadf63f,950825219,5247493750535736438
+940f5959-e8d9-1d6f-3f14-4aabd86dc88a,2873615306,8920740433897350376
+82160e2e-266c-49c4-64a4-aecae72fafb6,186998900,14176492281082517610
+4144454a-a2a5-10ef-dac7-dc9219e8ee72,476090099,5024004220546114227
+fcb131c6-6010-ddc9-6fa7-1a5604d5fe5a,1222500490,7886051733368244899
+6090db27-13fe-d78d-520b-8e7df17fa5d9,505206044,18211115490666301114
+8c642998-1182-0b68-6e5d-9f84baa487cc,4192021186,13343574998653346228
+46b4f3ea-b023-32bc-516c-c695cc80559c,901162098,8088164930057499285
+d01b4666-d8ae-7a27-9075-ea5d485df489,361275126,8720852864933958014
+02e0e612-87e9-ff97-adbf-1c2c9cb11452,2351160661,9681642872870805056
+aeaa4a1d-869f-63bb-56b9-51c65eaa639a,99506751,13120614320058266093
+1dcb83b1-5d9b-4ff5-2f12-d5c7d3e331b4,1966042655,3134672830901503580
+a19d9c05-fdb6-dfce-5713-32e7727eefe3,3883541637,17684397171188586379
+1ecca05c-6353-791e-e071-0d5d4aeab721,539155013,9256852464456664510
+2cb1dcac-936f-9eff-f730-f539d9e9555a,2884130195,2338527766298030314
+4d4d05ce-3415-29ac-5e0c-78a330f5c8eb,1442420980,15378936943449884079
+de72be9c-c624-ddec-1f2d-2ed4e317b606,3705249798,16112757082558637710
+e2abe166-6472-ee16-3494-c8ab2ffbf63c,2899435125,18417406747756245255
+aef1d7ba-36cd-3ea6-ed9c-0aa1af1ab319,3914925196,1568104654801073441
+394a78b1-9fa7-2c9c-892e-839ff373e70e,1608700944,4608326685493637639
+7dff68e1-c8e7-cf13-32ee-c0e44ac77619,3951973585,15046347513231306197
+16625b47-7aad-6cd5-8578-41c0c52f4430,1311479880,3032556353667869069
+a9e53f22-b2e5-50b1-615e-ce723e3ef9b4,2778263072,5779096118617138187
+f2edaf6f-2d52-e15c-6467-f17fb4488c36,1129955917,5827316620055656935
+f996e681-4673-9b3c-9cc9-94abd85dccfe,947537676,9874269887815138338
+37dde443-e234-46b3-1535-285018a7a3b5,4182528407,12048193030473776196
+91418ea5-bd21-650a-0f1b-444b0b7a607d,2334559611,3746230405947182122
+98437637-688a-6fa1-144e-060c2ed1dc03,2212019997,9722519781905049066
+d0a2ff9e-c467-57ed-924b-448ed60e9235,8990673,7019270789147504395
+5abac8f6-c767-d002-14f0-d76ce43a9c84,1400055085,1521016833387287061
+b848d2bb-3251-0b4c-79f5-b8828d567afa,1530907089,347734300218265564
+5be36c4d-8be3-e5e7-036f-f2ac726d5364,2070214592,14240571950322568435
+808d285a-223e-777f-d3be-12b7c5a61af8,885701329,1506855518178250577
+a8245d1b-03a1-1c5a-d18b-d16d2e39cc7c,3740196230,12651789628262705543
+f50a48aa-ee34-6638-484c-e3cb67eef0f7,891547146,5993021919519043616
+3f097667-814f-c505-868a-a8ba4be95821,871965057,7164628478858626541
+4d1da199-1f6a-882f-af0c-4f58fbb5f5e2,530861128,4634516820798066809
+2875d180-7302-14cd-291c-b7aedcef497b,2390774868,6836879455875693639
+b8787dd2-f402-8dbd-9e7d-cb7c6bb3831b,1872607235,4885624896330369352
+a8c2be38-4f93-222f-c3a8-c219651a2ef4,3789837023,10807473151250039147
+ab047d16-18bd-14f6-4ba8-8ac575a54db4,4230531918,6750699793158176798
+ce72321f-c511-7bfc-83ce-730c365e6749,2568430467,830467246743820693
+8dd7552e-d866-e484-ab1c-205a3bf1cb50,578506731,2064597726649471494
+1ff82ce5-9147-bd76-f1af-832fdd5892ce,1688865078,2653785925835882394
+15363717-68b9-5fce-f792-45313aebb710,4270116524,17503390647549331934
+59e21c52-40d2-6fc1-d29b-9256bbb5b9b6,3648615443,11622120162112521335
+74d6159d-06f3-1a20-7421-4310d3071c47,3216903528,14272701316422363086
+d23317a3-c09d-c93e-3fe0-e0686c3c10e0,4050128832,7409188517314614401
+2cd8f1bc-5868-ce49-87f0-15e90a110074,2747107102,8308262842048553018
+b75ae74c-5df0-db08-a992-aa0f67042db9,2462024004,1727895753535929752
+748ec06e-c252-9a79-49ad-74b1c42416f9,827524211,12269629806841815034
+d5cca84a-92b0-771c-0699-048bb51b8904,2359683715,17624356996103883050
+7090ef97-b479-b3c9-2f3a-fab7f5ca7c21,1377119034,3946161794045923424
+ff72474e-fd86-96e7-dc3d-5a8f87501783,2876708052,11778950303463912637
+967da22b-95e4-b400-224e-3419f5b1bbf8,1583838383,2762892212951055862
+1efd7f61-0031-70f6-3ce1-69300accaca8,3453622611,6500461229486861418
+c39279d7-016a-92b6-a54e-619e7a9093ea,3659769385,5300458572174333526
+0bf57a31-e1a3-063c-b7e6-6e363c2ea007,706767347,17898980332277065271
+9212da9c-37bc-863d-0573-eb4c6ff88f2e,455281008,7603225913402607876
+29ef1310-80f5-7409-9c11-d9966850361e,1987524445,17474230252174640813
+0c7f2499-87ec-da17-0448-e32f63cd77f2,3441498266,12641668255959643837
+1f684709-715e-0857-bf31-f11cce9fb4da,1482503472,9444500021969611280
+85d637b0-0b70-3ee3-06b9-52866e269077,758631502,1723840236357422205
+9e24cd62-fa20-fb84-c056-d6ee1a24b786,887225570,233308966369048843
+70678271-11f8-61cd-ae38-10cbef72882b,3595626290,6685647054528318798
+f9b10fb4-cb71-3ac9-5a59-22c7715ae703,3114127121,10198195752814101424
+cfe22897-9726-31a2-317b-db65a9b62d36,264326778,8232422940681113453
+683ca64b-df5b-0726-7247-bfdb69798ae6,3710760823,15829186252962001631
+b55b61ed-b65f-000e-bd9e-bfc677eb0170,410391197,15248897005148368280
+b42d6d2f-d50c-25bf-343b-11834951d967,227879527,465297185087142620
+3691df9c-0b86-c1b6-e3c2-a689e4f01f1a,2069486336,11471748093629588692
+2095103c-e4bf-7019-a9a0-2da221ce8688,2610173680,6363687994082487781
+5544b2b2-d10f-5b40-28a4-d3fb265117dc,3262926702,7289129228200338282
+c984eb78-31a8-251e-ac8f-5561f630611c,4211296393,3347289623696066530
+7a51ed8b-dff4-ca59-b867-361fbffa6b8b,1013810251,8066593005204683289
+ad8ca245-9fe7-ce44-5aa3-0f70907e9dbc,2723379007,16075246288538195753
+171be1aa-03e2-7dac-41db-d1a155063667,1718868031,13793770272281496469
+c3fba202-0827-1fe8-d936-beedcf205277,4065300206,798370971181746380
+bbfdf8a9-b30d-9d7f-6bc3-e9c4c17bccc9,2508052662,11299836973273389425
+965c70a6-a5d4-a555-f226-4c7449b2c884,532132128,10303875855996946340
+c85e97b1-6573-6718-cae5-63821ba356f6,3439606202,17756832043210229301
+ba336db1-8302-c742-5b39-380c83718252,2356093321,191158099720610156
+ee181e82-8347-2c26-5a49-c6ee0552f497,3610987398,16902640438951666963
+a1b89410-6364-0565-254e-67fe833b4ebe,3595871703,16389298388347477801
+99f355ad-8d96-5561-4cc3-0c70f8ba9116,2494549512,5633966055864796392
+d5612ac7-9c8e-daa8-554c-7090359cfa8e,1138704455,7628427781737475952
+33240341-ac9a-0488-e5f4-c1b3000c27ee,85170401,653912605726205312
+a78d58b9-441b-8406-d182-378aeee989d3,109659063,2146234222417777033
+7239947b-ebc2-4d28-1281-032df7a069de,2241139190,14572599976596119352
+4813d935-fa07-aaed-958e-a843b99e51d3,2222254763,16815861375157898525
+7f117031-3553-70b7-e5d6-ea1b791f61d5,1656227830,822517749130573311
+cbca83c9-0b63-1ce2-e0a6-6bedc7890cbd,1875277184,7082696476891859969
+e86c5375-d677-9341-021f-f04113e1fed6,4041886027,2628604366224382792
+46ef1471-5042-8ed3-f8a9-24e6597ff2c0,1752449892,13699442526233183829
+c27dadcc-5eb1-513e-173e-3574db5f67ff,4081355489,18324842215359893397
+86fb359e-419d-7917-b119-89820fc5106a,3738388148,17644237608643896294
+76928588-c3d1-405f-1a1a-2fd4defb3c30,1225942767,9808654812441872159
+31d57a79-c336-c2a7-9132-8348defeb7d2,841233009,2729211125619808369
+131ffaa9-35e8-7a1e-efe0-a545941e0c07,3639343347,11857142240676967464
+5552aa5f-a20e-6013-e28a-a4d965ae1cfd,2185372249,16208248378320380124
+9b1bb943-ec21-bee9-dac3-e0772a36d571,3672280264,6439115697505414377
+ea0fbba1-658e-d940-3453-5dd7b65e8f4b,1290511686,5564672540806619303
+673adb06-d049-0402-e0f6-586623d2b6d5,1432915433,9854355665983192599
+d13d568c-3c58-bf12-27fb-90e5f8921efd,4074408186,14427064273417098635
+3ea6e1cc-c421-7cef-255f-7a010e91b22d,2323742949,17251834010509459365
+7ba9d2df-6867-63a2-924f-5b75ac25f42b,96644362,15717947286914423326
+e47811af-2807-3375-8cf4-2fd562bed848,1908882555,13618217205307877901
+142db42a-a7f3-cc06-ab09-49a736fc8cee,117894467,17453296277866672352
+bdaad8c2-0377-883f-ca75-e8624cf6ecae,1204385531,6777693064976926936
+916092e2-81e6-eb00-468c-b337a949d1bd,3562888713,8336823286176853210
+79310e6d-96b1-c1bc-8e29-00f760845029,3732319224,15038591399824283396
+035d5ee5-9472-b733-b969-e84f7e2614bd,2089087229,15349959185059448967
+0b2f6315-5521-7816-5d3d-ed3de2a053a9,3206977926,13086499540564869619
+fa6b8690-ccef-e488-bce4-7a092d54cb9c,880665075,16098243610622963153
+d9c5963e-a3f6-0e4c-d059-fe07cafd34d0,2412538293,16779791984163511095
+695fd9e2-8d62-7034-dcbd-035274580315,1509956061,10707977432748761195
+1d09c252-5b62-1a1b-8283-d16cca0deb1a,3885939803,2327145739695580118
+c1ed5fdf-1c6c-0781-36a0-bdc3ccfc512e,3615776058,5992938834891303598
+5e2f3376-eed7-d0a0-c781-7a3ff6e37770,4012011207,18021158844466401742
+b8f83558-5fac-5ef4-4eb1-d308a8e092f0,3018468726,1863388647165011919
+47be1e0b-f2af-6eb5-838b-31b7f0b57ce3,131608090,17306352676923202975
+a028da17-c4f1-5ec6-ad6a-c7ad431b0acb,874122606,6444560608775421216
+ed2e1625-6285-091d-cbf7-a02abbec4569,717782656,10511668253987558168
+8e142328-525a-8754-0b5b-ba5e9ee79e52,3438884942,17733600989128983129
+f6a0a339-e1d2-e970-ccb4-032bb57f4785,3016177637,11153244005192175169
+4603b4d9-50eb-a5ce-f768-53c773996510,4291367209,10274109998218289185
+0af30ec6-db52-90e9-9e65-a4f18b405bdb,1797605409,6191538646229498311
+d01e02c4-1a39-d95e-4f98-34ae8e1d5f15,1782555138,15496383516146028072
+f76ff69a-75e9-70ca-c243-d0dbd626fc8c,3781923081,4399922524631928484
+04859fd5-920d-5f67-7b8e-37bef4cbe477,3599410232,16760520271165613595
+d26e1fd3-dcf1-81b4-9e94-0d0c01e73469,3190463520,17545941530805613617
+20bc0404-c549-0187-63ae-d8506d96659b,874761254,5719722101723176321
+9a604d82-db92-0776-4046-6098dab7c623,205518979,10041802920954497395
+85167d08-a84b-154e-6073-fab042adf4ce,2027996772,3493715314009606849
+425a860f-ab2d-88df-4700-755583d0b114,2328409095,1320654978725274744
+7412a621-5381-411f-5c26-baa767b1d9e1,2143428795,820498858511580024
+fc8df58e-0692-4a02-185d-a57fe025606f,2718067949,1744886632038786714
+a7a4136c-2aaa-ff5c-3584-8f4cfbe4de16,1284073000,17505708747156143431
+35bfb732-66ca-70ad-b3b3-06a0be183504,3382447883,17912439531268696727
+699f9dff-ab6f-91ca-6784-14d1c628c202,4048240194,11609053726101373642
+7273b3e2-e59c-0a4c-db8a-be922b281719,4128981962,12934229606486076167
+b0c5bef3-2f39-d2f4-33ab-7d9dc8f0e45e,869626799,11203644122149364496
+a9cb5c1a-8ef2-1273-2647-f66c4e7ad3c6,4191802666,150869401038051380
+92c61f8c-ba80-3f60-4c35-d8b74335e3ac,395883952,9613097369665170072
+2122dbc2-0aa0-0e3b-35da-75166cd87272,1770944981,18391743485583706137
+3088692a-8f30-9291-89e3-5865dad5d4b6,3111055767,8579982028527502886
+5ede34ee-b98e-1539-b88b-86d9e201d293,2055159293,17834003538842847965
+a000b956-1121-198a-cfaf-5981612ed9fc,1623114261,3521378807220698429
+a0c8b8e5-9de2-aeab-11b1-bd819c19ac27,214139262,14563803091062792578
+6af69593-8554-96be-5ee0-ee78978d0d1d,1667035054,9005361445048628510
+3cf0ea28-d91f-9299-741b-5cfeea23d020,4194686123,14932976922183150211
+08a081fe-37a3-de77-fe13-481c72fa4318,1034041291,8297802265591581632
+74633510-791d-e226-ecc0-f82f470ea382,919769577,13641419179321413474
+19b504f1-733c-4eea-571a-253627433943,74851940,12065349496860865204
+c40c201a-d677-a92f-82ff-4c7efb3a2183,3346017402,12450844682705658704
+86158aec-6db0-85c0-88bb-65db408248c2,3296517692,16986660634570605445
+1c6aad93-1e36-b2d2-b506-8499c042e7f6,3049536053,1779796039156780635
+5da782f0-b3b8-f8b5-12f9-17b40a39223b,232281594,10344495948231350202
+ad27ef4b-2e2d-0605-78cd-37f3333752a5,345149919,4933619995798297442
+847addc3-8561-378d-d737-1ca606794788,1217580206,4519368780743822978
+cd930cd2-e758-9de6-8e56-7dcfeb3f631b,2360080059,7877420978883050610
+b151e0cd-416f-d8f1-54b3-94d4902129a0,483493915,15200847777544516479
+b6d609c1-146d-2d45-e8d1-edbbba69d44c,961936542,7943483427365967245
+015b4eea-3720-4a88-3795-1585bb7aa14e,1952751606,7609765558069746778
+9dc882b0-f1f5-6722-5197-8d98fc72dab4,1512219403,745330464803073104
+e747f35e-4485-f8fa-4299-cb21a75afb9f,34460134,4827396705174786861
+453857a1-1b29-9058-2a23-20568b3c70cb,1750094420,4259825513033721483
+b3eef3aa-5f77-8b77-b774-6c784d642fb3,1308043567,7330544345168629932
+232d4863-720e-8ac4-48d3-e438ce077282,1035462928,10223821453727491087
+0191b93d-0d3b-4662-263f-d38abe57bb0f,3433798544,6372281768864568827
+a262ba23-326c-828c-0f9f-dadd3f4053d9,2021881390,2712422032828402830
+59236352-ab71-b9f9-8091-a0d82a40e53f,704525545,17662459178350645721
+342a4f78-8520-3d32-cded-d38d5a533379,294333195,16865854942235901462
+011377fb-0da7-8691-566b-fae9b5ddbc33,2744779673,18368983023365409132
+c8547eca-441b-358c-a299-6680fae556de,1887592295,10131493666289789279
+70f63c45-6be9-223a-12e2-fccc171566d6,3178200081,2566283250061195852
+4ca18c27-582f-4c0e-099f-2d567ae07af1,3177232465,1669910751605762184
+215d367e-35f0-8ed0-a7ef-89d6d76b0172,2936674065,17729656425324353358
+58d2e03b-a294-65e5-2d9d-74f4fa70e918,642283094,9751898787628655572
+623d5f71-a2b2-b458-b2a9-cb63d3211fd9,3427468363,17007545736432181136
+9e65dd44-905e-ba91-bd47-95bdc85f4a08,2370191875,8490671973640109450
+fb2f036a-4c7d-204a-d3bc-a3f1f2c1000c,1453270659,4313084897186013540
+219aeaca-9cb4-78c4-40c3-c2fcaee54be4,2476276822,5746131724662641698
+86926695-f648-f743-31e2-93c6bc104477,2198972035,9645364532460304447
+3ad9e50e-2574-ed06-b102-8024d56263be,2157218875,11715610927311639179
+0668e40a-f20d-dcdd-3feb-7f9ce29483c5,3882823885,988157600079827518
+90cf9bc3-6a29-182a-c198-27bedae2d0d3,3137332268,4364928488619353289
+ae16f773-1488-c6af-1382-0c264522cfcc,389852257,13086763732454802861
+90b5d001-2634-bf3c-72df-84304c11c51f,3066163722,17680919810443408261
+32e9dac5-6e2d-b934-4fd3-d9645351974b,890316796,16580480526937498058
+21967421-207f-4aba-4025-1cf29599602c,421308021,2825182673511104612
+2a24b3b9-8a27-520a-dcef-0c450fb9a955,1243445617,14057895887718749343
+f3df4441-8939-b933-01bc-449367b768b7,2269674078,919843894695432829
+da80e873-73a1-cb5d-b23d-06d23f251566,4021021165,4123623467038931130
+2e43b31e-dc0c-e021-936d-6e91ac0b3225,2806487314,15173055109325022750
+89dd5232-959f-8a33-ec23-2905ac24e815,451796729,14894876670290658662
+a454b63c-0c0a-38de-e169-bb616ac316e2,1331828144,17878566542606230139
+0df94c59-7413-8b2a-1ec4-7f0b08e7a100,2432929891,11026267594994478006
+b7687792-041e-030b-1e82-16a4c7511990,419021257,9150328360080656086
+90967b9e-0519-9d80-446e-fbc380954003,3731713764,16458849698948054913
+18aa9a97-e23d-1cb8-9614-08427d50cb96,3632146147,8688004117796000337
+9a6a7db0-b5bf-3815-3917-678f8884ad54,909118998,8407917560433077004
+399bd47c-5e91-874a-2d1e-182889c1a9ad,157661901,14636276325514439350
+45789c86-1594-8047-7b53-30908c118dd3,2494059709,3663429120993193388
+8b9001a5-ca31-f789-b315-a70f2819608d,756602745,12058868143921622984
+bc66a32a-db3f-0b49-273d-f018cf428af4,2591562440,14353755785343210321
+e6815eb8-1216-99cf-38a9-48ae23b90e29,3070102507,6972089760516849784
+7d260aa1-ac8f-141d-7b67-3e20b1ca98cd,2496098904,2164981861091885433
+754def63-e013-6175-aa1b-861417ba7778,3503225109,10510441642263611321
+d7e4aeee-700b-ccd6-3b3f-b783bc68c871,2365691163,6732067244315627587
+9a2c2421-962c-3386-2dbb-84a0d0e2c794,60840993,2828627116862174363
+12c0fca4-c4ab-51a2-908a-dce9dc4c0403,3113559323,13142741793721995758
+37b39778-7c5f-fff5-41f6-20545aac8940,1720883296,9028745644851873079
+6ac25ad0-da59-bf4e-0890-5b01d6daef16,4157718950,13140569823881091678
+1b7774ee-87cc-452c-94f9-e5c0d4bb846a,244203371,13897003368615763198
+58b8fe26-2cc9-e497-7570-cafe61cb3f4e,2082380699,2569495868458071476
+0079d301-ebcf-f3c2-ea48-56646679a72d,1351352377,7266467416742614801
+5bc70342-35b2-aff9-3132-847fdaa1e3aa,2647801806,12454674523084462103
+8827d7eb-d582-e3ea-4035-c918272f6918,4116348494,9071171819718499270
+43896bc7-902f-aab1-7c5a-6e679eedc43b,2221058251,5946825929207958356
+ccb2632b-ec6e-ee5b-f7a5-41646c20ee06,244028576,12512009003841838605
+12514365-e2fc-6b53-1cc5-06cbd54048be,3663428401,1796456794764199697
+b3ee200b-5796-9484-e0a2-84d396f8868d,151287199,2626436780199165991
+760dd808-0c0d-82f5-1755-dae3b25dca84,3629718858,13044741949324522413
+9d1499c9-b85e-6819-673b-34df73429ee3,3680353205,11239821788819410923
+98e2c1a0-91eb-27a1-50fa-663e25bf61fe,3453345633,3262700715001855335
+03514b12-6704-f05a-0ba7-a6e285b07544,3534852821,10659137482863790758
+f2d425e5-560d-27ca-ee1a-24b8b8926fb5,1799211334,1878031040147927351
+b702b92d-2979-8041-cb6f-c2f76060f4bc,1537416318,16101831473952894398
+44c3bb61-14b1-f4a5-fbd5-246fce4af490,2621422444,11986676632778995296
+70251634-84e3-0721-1649-4d9b1594ad13,2631390494,4014683642685071411
+bbe1caa8-e331-2e19-2bb1-df9a2247f930,1698711545,16638382894999799961
+604809e6-daf6-f9aa-0595-84a268a9f1e6,3499615541,933510634425955429
+d30bec5e-fa69-4962-7dee-39031e9ee9c8,421030176,16882729214052674429
+86eb7aec-9d31-d6cc-b431-a47323312835,866480757,148294345969449961
+c9883c1b-fe49-1795-d742-9683ee83150f,3830619510,2094293676576548193
+62a23633-574b-4fde-f540-409e962b8ce6,888136853,10356080394621059233
+babdd72f-62a4-52e0-75e9-8ef43ebe0e18,3258897042,11986054526517487270
+a7c155e6-1f50-3c4d-7ba3-57b5aa53f722,1906991008,1897918783511734786
+aa24cb40-b9cf-8d3a-0c07-af09b3ded8cc,3258179949,16023146050244059170
+cc54caf4-03f9-0001-3f6e-276d60064d09,1718924389,17269197469053506240
+7f2153e2-626b-4de5-70e8-a1fa5c68dcc1,1051888466,9547441358135408628
+2d56a930-0190-7b17-8fa2-c38ef60322c3,217996031,7749914047036736658
+60bf01e7-2c80-03cd-e288-452ef5487692,717577946,4578732862824581596
+2e9fb4aa-06c3-182e-fad3-9ee3a568f538,4148923864,12672955668512171714
+532ebecb-4a29-810e-6a66-4e94ce0bb68f,1097508249,15472302958574761608
+ceeea447-1d5a-8c20-d256-fc7bb24e8692,613016908,8331689689256050261
+d8e30a97-7319-0bdb-fb5d-14d6fcb858ea,1487989468,9707792396684833500
+3a7b3023-1884-6826-b7b8-3a339edb81e1,1817326570,14724864726041802442
+656a3876-c76a-c27f-b26c-060d1179ae62,4231234727,5988272216492643436
+de4a90f9-9e55-a8a2-3150-7253208ba4ec,651456317,8741473336879328156
+d7d67ec2-763a-e25a-c0c5-f837fa59d068,705557079,2807839687448587704
+b90d6e90-8bdf-6247-1e83-69c0fe1110ae,2822172391,14211092665258895844
+de4941c3-c9fa-36e9-e62c-7709d63ed3b4,2663467285,14915725176360202799
+d3c831bd-bede-4574-3bd2-c2a24a4c3119,2634154144,17897030754213175383
+c4754d86-be97-0444-60c9-dc657aacc74a,2503413041,4502526422641140681
+343739f9-e7e2-8217-f875-88a2a51cb30a,456630449,11197055381709238488
+830a3b0e-205d-687f-44f7-0859581eba7e,4043681003,15071933347429921063
+e91fc3c8-da9c-f7ae-94f6-7d8925977a89,2437270617,17323171952226736551
+a00283ac-4683-278b-8c73-bc5ecb3ec34c,3538556752,15912344572977509093
+fb6cd1c8-8af7-8c1b-1460-5d2e8fc95d53,2776148660,7228253407332019090
+fa4e074d-debe-ff42-0b84-65ee21b7b8ce,3397898760,7407348716071151563
+71be07fd-52ab-36ba-f088-b400a81bc3ce,3145972723,12111924666525570900
+3d9f443a-d9f1-b254-49f7-2d4e9d26bb77,1313462590,825865528123523700
+7f777e31-8407-705f-1b19-0c5011f3947b,2693628301,5807075214586268293
+b59cd628-4d77-003e-e4c2-c233344cd677,2508539769,2059954289403578563
+ea6bd9d4-56f9-58d5-c658-6a5458eff38d,1697011893,3553835621610756264
+a4933870-effd-6f9e-1542-6b24b4302ee4,3695644280,10105406175865752195
+6741eb1e-b651-4098-1bc3-75f9f70351bc,2475963168,11146341408929950409
+da15d832-b7b8-b27d-8dba-ef2982885f0d,969713535,11416946108063698341
+6939be5b-6f5c-b5e5-7bd4-24a212b04838,2976271055,17735930902330732341
+c2d0dc03-4c34-ea26-25e1-bac64e890af6,2231385254,10534212855884658521
+51d8e172-d07a-88e7-94fe-92a2bcdcd09b,1768488331,12932030332673178984
+6a5c7362-9e66-b0e3-ec19-ac86c861787f,2272755290,12886444618260186696
+b118632c-8ae4-18c4-37f0-71524eb7d21b,2299725499,12024749849206111031
+01851d8c-e3b7-4093-6fb1-8aafc7443ba9,1510283511,2198951317643734346
+90f868e1-91b4-32d7-541d-5beb86322e71,3983044597,15081277230256266398
+f8f6c769-f805-e367-5ac9-049fd8a9d718,2821982107,7107326267221460830
+ee851e44-c2b5-9c7f-c8ab-8ecb989d09a4,3435905622,12342625448456039311
+9b82b13c-4641-8949-f0ec-817669bf7864,2643309919,3146163671888873598
+757448ce-8c50-b3a8-3956-5fa1a04c8259,2218124936,2598005416579174477
+17e0cd89-4b98-f9aa-ce62-ffb1532b1851,2920378249,13726433611012291557
+fe3e6320-5c5c-ce5b-fbd1-e1b4de1a6766,2183696579,10869236871730481323
+b97307c6-a4af-b16b-6da8-b28da2b75cbd,2130622924,12401758931332419110
+666e4156-0663-a456-a01d-35ec853d0c74,2162435725,17674768493984196198
+5be7b826-0be5-870f-893f-f2828155bf22,3459673061,9669026101322822825
+806c147d-5c0d-f244-bc52-0d617d28b303,2687378086,942785011443586065
+c002c223-d327-1e2c-63e3-d5855e140c7a,3923207582,13385385192984136396
+53d4b666-7861-08ab-3fea-4e0ec25dc9fa,423766345,11969520672699892902
+fef531c6-90ac-2571-b4b5-02b50780f27b,1710073788,15902764234675459207
+4ff20065-ea8f-69c7-26db-516f83cb312e,27690596,11480463347766475558
+9aa4c3ac-f465-fb6c-364a-38a50c323d97,4162692039,18221593862332934166
+d01ea454-48ee-2ad7-3f3d-52880df14891,3479049484,3278113857639814906
+ca1e3cce-1284-5ffc-34f8-bc604c260f43,862501511,10639350299720253966
+ea322b97-c4d9-3865-c375-77472f2daf8a,1990921415,5001783469108363254
+e0c0df89-38a7-6920-0e3e-4aa327771964,986713906,18431763516458691525
+1da4a67d-b9b9-058a-1502-568fe80cc4b0,1926913178,3898601509547892980
+8b2f2309-e72a-9256-cb31-98374573d9a2,3459653326,11087361366622083864
+0dcbc051-efd1-ec08-a878-96a106e31824,3377508236,6260704039794156203
+3d6a0948-effc-5c06-9a32-d3019dd0ceb9,634066103,17154253688860144377
+58b63ac4-c818-96cb-dcf5-b59d9b07d8da,3545169375,11186803070713928207
+2365bffa-b351-ee4b-5093-a5d536ad6335,2676696281,5997417808170622096
+498e72dd-98df-9af8-9b59-a3aee1ecb774,429552567,5879000718302613978
+9ecbb0b9-ee50-2d55-37b1-0ae252f915ef,649664182,18309368694889133533
+a587a038-cdc1-c155-f863-f75f7d1d6c9e,2557004619,4625613457013062486
+db04e9d7-69d1-720f-f929-518d6227bac9,2843374542,14775122144864940542
+c6b35477-1ef1-31c1-18fa-974f63496146,2113649290,2855951710688746143
+5e194bcc-562f-547c-be3a-25e833c90a83,4231902730,16654154146130116057
+8faaccf0-9e25-b6ca-fad7-10baf44f5390,3629788722,9007813893983097190
+77a1d24c-7734-7183-f6c1-38f444d471ca,2736691401,10112337966523840062
+1b3205a2-f8d5-c5ca-8549-ece4935135a1,306343656,14057131096624518485
+ac06202a-8917-51eb-8778-2bc52b858f62,2347151172,15899619013096124865
+f8e9d620-5205-fade-10b9-e2acca162361,3402683148,15980246083415625788
+e492a98b-b4df-6b62-3e20-835124963d09,656455963,17166325812188962854
+726d8875-e3ac-2e14-f8a3-c60e8ac2d490,2346355169,14908901766618449226
+4bff4b94-ff89-4e02-2f53-473036225ca4,5890139,12477584087717718700
+51f95a92-93de-337f-d9e2-607405b9adfa,3766329126,1036692891600535720
+a6e455be-7869-8ad0-d48f-b7774bf07ece,2954483087,13807752878971970112
+9ddcbe53-ffb4-a038-a24a-8dfb340975cd,3735059416,17950997928053905963
+4879f108-5203-87e9-50d4-43be50a2f7ce,1214602395,957582667010801720
+7c1d0aa7-ca24-6212-dae5-5701606ae14c,465893996,1811987510374182254
+17dc32af-d96f-006c-0ecd-c7bb74ba577f,1603349886,14531412136477850781
+fece6ff3-3370-721d-51dd-5ec84f2fd5c9,2055177553,11995395151634654873
+27c3189a-8587-8ee9-74d7-4afc25316ce7,3017832146,7433134969919769138
+0f35a998-d39d-8014-7fc2-e04e8249db60,2734101061,4147420097353273921
+d4de9b62-6be9-8ebf-320d-8614bfeba82d,997537870,6914416596840572736
+6cf39645-cb24-7cdd-b9b7-3a57b2a62706,2794196108,2681137143046209219
+6489c4f2-1379-eeb2-fa67-f0db57aa7656,262671757,16961843345398377410
+a816aba2-230d-750f-ff6c-c0c8595623ee,2645372304,4753353072080975778
+ffcc5fa2-6b88-3119-c4b8-761bd31f02e0,2585480332,13607336248875157512
+62b7553c-7c01-cade-5510-9323f3b433c1,67531814,11884746048787633778
+ae205ca0-36ca-d3a7-61ba-c3021fee2a72,621825729,7748236375749523181
+c66709c8-67dd-08eb-40fd-7d41b0a60b5f,2299659001,10549131940036384226
+d280635c-9c0f-8da6-6fe4-d2b14b3ff530,2149182584,9744033913221225532
+126a4644-1ed6-aafa-7870-9c83a83c87d7,1555781593,9532703647473576035
+2c9a1b13-0105-52da-aadf-b5db7ff6cb02,927320717,6463500561055634202
+b204f09d-0612-9f92-38e3-80f2c46a391d,3209233692,5852254438589444660
+c678b71c-fabc-e9bc-ac7b-fbe17dc417f1,2881311924,4296384635336729051
+b073e467-e289-62ec-fe81-6f9164e2ae9d,3059359188,8349417546048868134
+2e1357fe-87ca-f433-1bed-af56b460aa17,2207200335,12589490824747711576
+56b2d803-e9c5-f46a-8bda-2d170860a36b,1031261843,18274272148047604593
+cc282c55-985e-0a13-c395-6d84ea63b7c6,3513501713,7676452589171779403
+8ec806b5-f3b9-ce85-71f8-da4867fd2212,818635299,1820966700889699714
+b4e112d8-df9d-25f1-cdf3-72723f2fd395,269732448,14882331437484241309
+ccec1044-5eec-8254-aff1-4121e3136745,667302484,17489377428142480342
+4ffa0826-1c46-2714-ab55-08fedbc3a26f,3796422947,849619999508589181
+46b6cddd-4b6b-3722-9c5e-76025889da07,2727404608,10388891284697589349
+544bd0ec-e377-f713-4829-fd95add7e7be,1736943578,15791305115335531198
+b74eadf8-571c-5914-765b-7984cc28f8d3,1716546422,5618200529860351052
+796fe564-678b-3f54-6578-7e67c406ca1b,1708462816,9655125497519578187
+a22911b8-a0ec-d9e9-0e4a-addee61bcebf,3723829467,2498254631912262754
+7885349b-fb28-62c8-66d3-d2755bde1eff,3350125886,6400814756390252325
+01d407ea-57b3-5a8a-c3e4-797791d0ec71,664373299,4797189298139691782
+e9f2d371-b3fd-368f-b9d3-fe1d3c221df9,135575409,8265795917973791971
+67ac3add-88cc-0196-608f-50128223d63e,963406110,8095213675325142685
+4ee5313d-266d-a341-0562-3f25607e8a30,2979977793,17539216865062835228
+86779e08-535f-d8e0-6d98-28a85814b407,194612372,7817131191352947073
+10411118-cb6a-1000-64c7-048c7a78d0bd,834662776,7230740617711818648
+b2c3df73-0712-ea4c-3fdc-bc29bd0db36d,3089041635,8839622762528548898
+d968856b-f17c-8298-d774-8b29eb2ea164,1235058484,15436448510775037654
+b733b513-922f-bd8c-399a-0af4dfd6f0e2,3024266798,5346584466683758300
+d71b9c98-2d67-f8e8-4eb1-38fce3d92eec,2898346809,18248979939938896492
+17b16e66-7a69-a1ba-decc-1bea7aeb3b1a,1550120625,12357172036167226979
+fe57a26d-70b3-e8de-4661-11d9dcc0a27b,1120230054,7629859458686126520
+047a929b-1ef7-6566-0d98-f2a51d7ee3a2,1367219158,7607164502494404094
+2257386c-f03d-925e-72de-47df27551b08,4054096092,903649218297770621
+627e05ab-ad36-8117-c900-48f246a74509,2523566846,15335558883053689514
+cca7c631-a314-7491-8828-78106465d7f6,1710178442,1982753642145764927
+04b04698-1c5f-6700-a9cb-5d6aecce2a1f,3877431340,1825861668132177334
+4a1fba39-08e7-f054-7088-28b317ac0a1e,3689556070,12022306282785031851
+97e7bca2-86a0-9345-3587-558f37262b57,2953546942,2297155945849538406
+5bbf82bb-27ef-8db6-105d-36f8d44ac1f7,3444991002,186375500052972682
+50d8f0b9-1058-2bc8-9da0-279944d3d6fb,3121151682,9014850279702782940
+bcea7d15-57c2-eccb-49d5-4ddc97e5176e,2675144667,11837881300706396518
+f0847977-fe48-1044-e6d4-7720919763ef,1896999768,15744757462122112613
+24be4183-1203-66cc-22cf-c3b52a4538d4,1007595147,16687944264218204975
+55ee008c-6136-aa24-9acd-2c9c6d0e17e5,1654491243,2265915899171391104
+83016f9f-67ab-5d4a-295b-08a25effd72c,4173180962,5210719012250924663
+742726e5-9209-8633-24ba-1aa6616636c0,147285681,14664080884918858480
+f90180e6-5a4c-b990-3da5-5f603af5cf10,3548709796,1779055127968460535
+7aff1c66-1383-b3b3-6db0-9f262040bfa3,335040107,17766741868988257257
+61b3314a-7a22-a5d7-3d0c-18a544800e28,4089775877,7000196170377762332
+64beb1fc-9c3c-b126-a77a-19776bfc5704,4122574154,237607857969035646
+1f972305-c806-5a5a-425e-82362ddfa9f0,2608790997,2580661325410143043
+d6cad780-306b-713a-d644-a8308468dc1c,1694139956,7190983426638266001
+b2a57d7c-1996-f6e3-5b14-259d5a0e81fb,4252734817,13240923374555888127
+8fa7a3df-5ed5-642e-46f9-1afb4ebdc6ab,1992736998,8578837153168206642
+6b8f3706-a887-abdb-0ebb-950460ca9729,1676575207,585668595069730802
+83863cb1-73e9-f270-0604-c1e672467bdc,3449589711,11135476115526842785
+de504ac3-494b-1fdc-e9bc-ababf3fcc8ce,3842385207,16420200285232921467
+89e13947-ef92-cd27-f9e6-c689075eaea6,3777007451,16372013317024837669
+a9b26b26-6069-155b-91a8-d3e2b237b235,1423877076,5247757421068179704
+8eb06cab-da05-f6b1-d537-5f7e264aec72,3504192574,6859455226176878683
+426b6657-a747-0574-cf7b-a522516e529e,1628766188,10558794508457836633
+8fe65aa9-24f0-cb66-c414-617e94328199,2007135654,12915468359525930242
+86f6cd61-e380-ada7-64de-10c18df329cf,3190757301,14228325811592046
+83a06b2b-d7ac-34c8-626a-c90721ccabfd,3782792990,4147478224722999653
+05175dd8-8356-8462-cff2-49ae5622b60a,3684003043,6384271291049050796
+390a235c-2876-dc47-d8b7-c239ad87cb3c,3982148332,16914120703140276967
+142d1a17-0512-1eb1-ef56-d748b6246cf2,2886175925,5896019223858300243
+5cab9265-34ab-b049-795f-dc3a58ead7f3,1569595469,11732908750239782731
+db8eadca-64b0-bb07-0825-8ada661a789e,2009761239,9140764104556281880
+fa611abe-30cb-4212-7ee5-678298fd1227,715976814,15358832485464504544
+a3b0981f-b935-58af-16ff-edb254d7c42f,472290127,2437894558281296190
+899ff528-a886-71f8-f148-b69327d021c5,2508612001,7886741129988098402
+bca2a5c4-20a6-a968-2fb0-18f0185fa58a,1086546924,18286325705059671773
+69469865-e795-7a36-785e-68af89d8f523,637979149,12590795153307449542
+68d56c5a-5005-a82e-eb94-1f533580ceff,2923844840,8236556313682554185
+ccdc1d10-9ca3-fe6b-c2ba-60fd8b573983,2593118309,12038031928678514365
+cc99bcde-46dc-e181-2dfe-88e5692c05b5,2713136222,14071646521898277339
+fea5dc6e-5520-e09b-77b5-dc5e37fab87f,3958585888,15675097194704311653
+0894cdea-aaec-62f4-0db1-0abbe1eec126,420291899,15661112853408254204
+a3e811ac-9b64-8eea-c025-9aecb89ec7e1,850963645,1483078270977465213
+b57ba6bc-0182-dd18-ca38-e3694fc940e1,2860812618,11643626777397604443
+4fe8848e-87ee-5413-23e8-6d92b04dda33,2163827825,9054497646817909831
+a21d636a-8887-5ca0-f117-6641b34f494d,1723693221,13944411227824702408
+d93caff5-00f5-6cb6-893f-3dfd0cfc5585,2134156901,13571776044791178123
+54ed239c-5aa7-0691-1d8a-a97397c993af,2519926350,14107822413255202480
+442595d3-6426-f9c3-a5cc-27041671a05a,145214645,1032473271589903044
+1021381b-818f-cd75-12f9-06ee9023b287,4234481326,5912706358024081858
+c29e6805-67bf-6679-236d-a5e167861425,3743656674,7093484360214622136
+897094a8-7073-d77b-ca63-14c1ae19e506,3674954066,612256736499162516
+4437c0e4-e198-4c3f-4482-6368070ea87a,3188519833,17874153520697601644
+e4d58f7f-756d-839c-26d7-50f8fe6613b1,3011507165,1847845053088896634
+2c4842cc-74a2-5bd5-7e1b-8a103a1a3051,3324851479,12240024270334955115
+3c5290bb-b969-4163-69be-2cb8695df08f,3703620322,4764150919741999424
+d0c5d63e-cf10-0535-6e52-444c45397068,1950946847,12533567291686073631
+d2917f83-74c2-c51d-d9f8-ca3b91e12160,3868632987,4884424220731466696
+538c852a-19b0-e7be-d432-d60a078244c3,2227858717,5477407378002053014
+9e5b1020-e892-a91c-de82-a73e61aa6728,3335219911,11415738981996903443
+e0efce41-bb3b-8064-e025-e4a1de6f3398,2926946538,13605656325394077214
+6f3637bc-225b-c1a1-fd3d-10b5bb2d8101,3590082072,8422795426519278802
+5358dd5b-e53c-e6e6-99d5-5083dd905154,3589421945,7572815808554260179
+1b196dc1-1af2-2789-5bdf-a6e378207654,1513737428,10859981503622793883
+f38fec93-4f45-ee3b-0b90-06050dd1fe2a,3817722272,12957961878598587330
+651361b0-2d7f-8b01-3863-a1b4f2afbd0f,2220140096,10893703766245187029
+41406e98-82f5-60b7-af66-b5bfc135084d,2147568380,6781725383773378055
+04e15d79-84e0-3dfa-c03a-f42245ad3712,720441352,16752830318144370138
+4deb1236-56b7-864f-580e-1a8f19b3aca5,3968140691,15581968302625400153
+10e946e3-1239-fe63-5a27-08e58491c5ce,160587441,5388246619263604211
+c24dbedb-3b4f-a018-c723-50bf099f6d79,1470130817,12953982498930904836
+5d8f2ae3-24ad-8cfd-6fbe-818983a8d56f,3296008041,4757006511791251153
+f4c7f432-c28f-3e93-55ea-b551f9f22701,2864100466,8353278196650910927
+b196f646-f714-e368-f4b2-331a723a6d09,3511974262,11760569557953082736
+4eab3998-03bf-21cc-29e7-2ef0bd7b8799,3258574192,1979033515653350514
+3cbe5f72-5f59-16dd-64a2-442950d4462e,3248317041,1351909814992089518
+3620b7df-ee2a-d306-02fb-d4293e1cb4db,3977190721,17552204384022714928
+ba17d86b-835d-92ef-e01f-48806679346a,1638428978,13391333028562544716
+e18d7543-a8a8-45d6-b3f8-6687b6d55124,2140204262,94590320878833581
+c1189441-2882-8a03-ad1b-9f8ee24b84b3,2991632394,5385040044947276197
+b115b38b-029a-44d0-2aef-e4f51598611c,1721094238,11397085916156267438
+77c75e9d-d753-3f4a-6368-fb0f415a4af1,1153179838,13346415211523492574
+c3f0ecb8-9b11-21cc-919c-549253d9abc7,1863510983,15400029565293054708
+123b4fb7-5ce4-facb-2b63-60e4535b9d99,161208666,16212615302479234180
+1573cb03-eb51-80e1-afb6-434dbc31d234,790031987,15665331057497716726
+c4e3f6f9-7fec-c7f9-0ae4-6fdfe43c16b8,694060124,13394673811219524426
+64fe8be0-1ff9-c98d-e046-ed02ea1ffb92,3530684287,14162193510536384035
+390b9e4f-750c-0c36-4941-c98aad5fa701,3556596422,8907078164221579884
+531a496e-3786-7de2-5c47-9f0ebad05738,1132727913,10536036237490336737
+2c6e212f-d108-6966-5c6f-246ac38c5052,431157254,11805592223623428654
+7522626b-9a58-d5d4-1283-9a237a2c3032,1499575087,2828489290764057462
+2f0eb344-0efc-8a8b-f7f3-99b8be2275a9,880003523,14784348963422017654
+9d5371be-c1bc-ecd9-cb15-fce1df519ab2,352538506,2989978058843672278
+e1f228f3-96c6-6877-0a08-c431c58a8220,2546376900,12489170734775695833
+1892b4bd-9110-bdd4-8516-36b07ff1bd22,3498019651,7111055356733452081
+39ce7ca5-b784-b734-af15-7fc8a203bd82,788340646,9359452837093978445
+dc43a94b-c27f-103b-7373-a3f2d9c74a5b,3671923015,6494700999018004905
+e70f21f0-acf4-dfba-90ff-bd38b05d2af2,4088130068,4465995367672359246
+2ca514ac-d069-7797-55f4-0e505459d18c,4145558291,3829322606754048839
+a193b054-b09c-724d-ca45-67a7d91beb27,40182920,12807970626168796626
+5f1a82e9-7af8-9806-5622-c231dddc2173,4162992689,3563352957792691130
+a71e641d-e20d-d1d0-0285-dc1a90846467,3285825475,14116232697401560358
+5ebe1303-10aa-b49d-2fb4-fce6def88708,4043052335,16099430153342123491
+7bdb0098-d11b-3d85-8496-4e5a32d41462,1409654705,8002050458379678415
+8be17919-01db-6d50-7ecb-c2dd3b76a5d4,3400524160,14873090239596880284
+421cae93-4695-7628-dcbc-f64b26d365f0,4192771162,17114854394618729319
+78bb0655-4c9c-4308-b1cb-213d1a536938,1803301862,10472093627110086566
+cc911420-e3f2-c9e0-2f5b-57dadd749601,1245847254,816072481131707523
+0c3b4989-d718-2ad5-1f46-26a3b313e557,1274960113,7650566572339638956
+fa1153ae-91ae-57f5-7f27-83d498fc575c,509963551,8203321179891338424
+224caf41-313d-45e0-13d0-9ca61bd6bb2b,2615416841,7186279391129854853
+ae9a5c9a-c760-8088-1fae-9ff0fdc0f114,3810164742,2638146331544135350
+b2411958-9be1-a68e-19b9-a69fb13758e3,1087638969,17468814322151167239
+9c871139-205c-f25f-2235-1b422011ca12,2850818486,1950126145242441081
+b8100a15-5fbe-dee9-2989-516f699709d6,1484650174,5834554139864543764
+d6137cb6-c4d8-7b0e-858d-59614c183479,3351727329,12201987588608302762
+031920f7-3ef0-a632-adfa-679af8d7a8f5,2743008906,7509982733068104886
+e55eb7bd-30f1-024b-e541-b98a69f3580f,848805945,13739583286265360292
+0726646e-177c-123e-d904-478f37fe721e,2269693918,2255646008625165182
+aecbc2c0-b344-48ac-9932-3c445c51a5bc,3342152576,3887627827212924306
+f5f5c224-4b47-1426-2a80-64206b82a2e6,284692159,7785753078182817832
+da382a5d-58ef-a8e6-768b-fbba2fd4a2cd,3950558177,5485481072668704653
+a1ceb56d-d190-857a-7b01-0d46d34be870,858503440,5055220197501514645
+9f51b509-23f3-e545-31b4-24384975cb0b,3752675949,17623039665351388185
+29f77802-52a9-8d31-dde8-ea65e879263c,3329373155,7989730370310201518
+b1d11441-9bce-414e-8ab1-7b4dc4c343aa,2395611592,7683942028604137323
+7eb72d3e-0a51-6253-f8f9-bbbd74a6b98f,3000153153,15154950514736988533
+28dee7dd-a9da-bbdc-a73d-f9ea72be1b33,3823752892,16836142089926088351
+fa740e04-64a7-7bf0-b269-62e6a0f8ae35,2949486252,7038276997274996379
+b55aa2b6-a784-6e08-f85a-dbc52d8d7bee,541208846,9303332569147342081
+c20bee77-fd04-4261-0aad-09c49935af43,30938271,15710232539971978825
+fba02626-6053-ae66-b178-f08afc06f1a0,3552983281,8296060173647755950
+8941ed44-021a-3647-ca2f-891bd6d47f34,4060539949,5607750239937973306
+fe1d5323-898c-1f58-ac13-755b19ab6d08,1386662358,15066687857245329878
+e65359d6-a9b7-6d27-1a32-f7e471f6b2cc,203756313,14433257711852032355
+8498ea6d-bca1-d48a-0dee-288a89ea218e,223458296,11743054709305188653
+c30de170-8c12-1e3d-a063-84c908fb1f14,4075731741,4071578971041212998
+9458f4f0-22f8-3ca9-31a8-5feb7b4d0d82,2734203029,2508113368359906964
+febb7798-b8a2-d602-7101-9c6633ee9892,85559861,202330476554623786
+17c0dd10-1818-dffa-29ea-5dc55203a35a,1145215510,16781266084998936274
+7d5c05cc-4bfb-4b86-0408-47d83399bb57,3849923884,14467453206031502898
+19e717db-6eb1-db2a-d7e1-b50c20758dca,1054152271,10313304501756429499
+b0d46e17-4cc5-de23-886e-a5982cf14add,1590377357,1467274841332238910
+8834d192-5865-e174-cfb2-f9daaa149d9e,1270336803,17850526460686186128
+33cdfa0d-03d6-3dc0-c7b7-96ccd2f5ec3d,2151894105,12296837037050913710
+03eae25a-7c2b-eb47-aa7a-af6780f462cf,43045192,3923448521547086308
+ef38b559-fbef-a268-e971-1ed72d8744b8,55507402,4674097343339845732
+933a6115-a6e1-28ea-c96a-7323309e9f93,1222170010,16011587585050334757
+3f078bc8-f5a4-7641-fe98-546b387abf5b,3742448072,10664485951347207228
+0dbfb7e0-9b2f-d10b-d089-81a71afd4271,408354540,9084259910297190168
+a57fdf1e-85ea-55a0-ca21-80e41d38b699,2257389802,4277144055516533893
+746b9608-8f46-c19d-945c-817262161b07,118921908,5962113794981530184
+d7232cd8-a5b4-3851-e5ef-47bab576a0fd,376856812,16600964774403198031
+a410af40-d666-28af-94ad-6bad3fec53a3,1763572802,694973253914776282
+43ab68b6-caa0-f53d-b3f7-dd1e1bde0a7d,2331659375,4353983471526175285
+b1ee369c-1b8c-61a2-2ad5-d78d0a590418,3913808970,10074642738364264411
+fcdf0f5e-341d-088d-6ab7-0eb9a5bd487f,864863375,7010879279434598520
+8999dd70-cf92-d6dd-2a60-92a5be2cfdfa,2887501120,8184844999655910290
+d3d24254-1afe-aab8-294d-9404c7a97f99,85331918,5795497903487352283
+659201a0-d00a-eed6-38ed-793b5d575f69,2451652364,10980120533748147539
+471aa205-4bcd-ff23-c413-09176db243ca,764662806,3372877582117139596
+9da84836-0793-cdd7-2d91-d85e67630102,209461412,4759579547486425986
+0c82b1c0-09d7-a006-4dda-e1901b0c9a28,1227301105,4204101440352410310
+8d1a0dba-a87b-7f4a-4592-cbd4243ef218,2292738322,9609170312758826284
+5799a83b-2a9b-eb20-cea0-6da90722a137,439403226,10188833321530882010
+31e1cb79-4e0a-620a-8519-d4381e70cf9e,2764259961,4404899144547649575
+9a1d4d67-2ec4-a378-59a8-92f563d81e2e,1793029178,7453460147031585829
+ba680f51-d542-22b2-9503-b2fb669ee3bf,890299216,11125930636875953846
+36b899c0-2ba1-97d5-f870-3747235450ae,3522239111,12286269241640057260
+62412af1-60a6-647f-260d-d584adb20a3a,417392379,11554340863246330142
+4373cee9-8cd5-58e9-c8f9-871b204e574a,4277530406,12979653074022394646
+8fdbdd99-1055-5393-8bdf-ab4a0b88fa39,596334514,16723350772228880848
+fe4062ef-91b6-e9b9-805b-65e9d9fceb8c,1862808792,14907250363018081598
+b20e6181-ed5b-a090-3d47-ae58cbfe2c0f,2058732066,7253824646226495644
+8d794ecb-5572-4ace-2c0e-9b13de3ec4e0,3863876892,10447365232901912004
+b5eec621-750d-84d9-77ee-6a62fcbf0ed3,28084547,5709169254858851289
+db560eb2-c797-24e9-e20b-4fc40cb5b9d4,3079147681,8682620282258253816
+73c8e817-9718-5bb8-94c0-237bdd8f5e5a,741836055,15707251906251785072
+46bd2774-4d00-6605-909f-e8075c69ab74,553658965,3283192902476335665
+250cf984-e943-004c-36ec-08fb15d62ff3,407221350,11251499106115905791
+955c4d23-75fe-09c0-8d47-b48ccf9452f5,3091143834,16965773042615809124
+a3119487-866c-74bd-2a7a-0823f7c97b0d,1580593540,6439651305856959527
+f65633c7-2b06-5f87-e113-ad5ab0121ec9,2778536288,11463025060761686052
+9a71c87a-de3a-8b03-2d29-58e27cf413ef,1214255335,3205662795955731236
+a885f714-865d-94bb-3ea4-ba20f57b5492,1230479748,4971687074502799325
+9e40e6d1-e2d4-88fa-905f-452552b86e70,4155160313,3196735907903172355
+8c27e835-990b-4648-bf81-21c6003bf385,3665823612,103223890425489196
+0948577e-a241-1085-49c7-f69cfb7c212f,1936851615,13234715010524444963
+ea78dc3e-c8f6-00cc-071a-f7614b5d173f,47886338,9698287085691697664
+ee224224-bb9c-e12f-8890-0ca69e7daa43,2910486792,1216300466057576662
+efedac35-0c14-e537-30cc-41ea050177f8,1445116352,7846598886140359274
+76701008-d91d-58cd-af1f-f3a4e22b5350,646651735,1295046117270721804
+519bb59c-1ab3-e72e-b18a-3d037c252c41,983151951,17955050484012940371
+6d6a5b4f-0c15-bc52-0598-513702158526,3984041221,11885463987211343831
+5639adba-d428-7319-433c-f1fc8b5ca5dd,3407239422,7422065467193740366
+f34c8ced-500e-ceb9-cdf6-6b350f4f6eea,26650289,12781906876541492602
+60addcc9-4d98-7b37-db8d-696cb6d067c9,2344879168,8653327217446010921
+bb087f87-c7cb-8649-8cec-e5481ad63fca,2244171312,13254680771846483370
+48806d00-a8bd-305b-71a4-53d7e41f95d0,1251260836,7924038693801552103
+b07b77c7-12f5-6737-8a60-370f3a32b327,562062926,7591839447420022547
+c13faf67-b5d4-f71b-f404-f9d0e17e18c7,2605367205,15161206263860540799
+851fc568-620e-d60c-306c-d06ddce863fa,1062752506,1082699493460268488
+619c449b-54fc-3518-0a3f-cb8d8f6f5f3f,3311417764,11215242166878646341
+02f6900f-c2db-2d54-7f9e-59865be1f051,1434904756,523618927450366868
+03273b8e-5802-9b43-7982-0ba5d9641245,3886190698,5534309632486445630
+31908a2c-939b-f357-ff6d-ba703acdb1c1,4255213248,15719441215040413942
+4a8e9072-c7c3-d22c-1db8-762dea47bd82,2531708085,18044254829764209221
+ac24dae4-f983-6dc6-2f99-d019dfe4125c,2924147058,18282105636815927256
+1924caf1-64fc-57a1-a7c1-e9935ead7fbb,931256251,686398340231962919
+9aaefede-6fef-3fa8-a371-758617670d4b,1395543999,2519059624693534526
+c3168117-1e98-9781-f4c4-3419eb6e675f,3445377208,17226501792422487245
+c3cf736f-5c6d-489e-75f0-4ad198171769,116475528,9749440539966710914
+29da7eb0-bdfa-8d6f-e54c-0c258c5d9917,3823559048,10781665887485104146
+9c4ebde0-de6d-3277-0013-07669185b455,1171295178,12955811935081798477
+dbf97c32-a580-d3c6-3b34-04f9504d1d85,2464137979,11562011933763745207
+325ff186-1eb1-e95b-3c74-6a3594f6e65d,880203777,15108178373626570224
+9594a5da-0868-2477-0c63-43723b6bdbb8,2427396155,547680750200758436
+8c434147-c268-f62a-c6c9-50eba60d64df,1127928185,6464954347826088643
+23eed37e-b361-b8f3-d0d4-5dbee4fa74a5,145303079,14290579829820822375
+61462d5b-a4ce-ae9d-f7ba-68fe859c903b,3863656239,10597836109136662692
+a6143b8d-7688-6491-fab6-bd42ba8c33e0,1179533164,15520516418334746270
+2f8e11eb-f2ee-03de-f271-b5b1fc938fe5,1030457791,11516264714584515000
+ed4b0349-f81d-677a-6fb2-fa16c8970e3f,3089675767,14824856877273696987
+b95465df-4a65-85c4-e194-53237275a90d,3750326722,1143248381730318455
+d85f11fc-fe90-e5bd-b465-081e76bd33d1,958587486,9281209940856351198
+63862ae3-67a7-1911-b03d-04e0c3c31e35,596497472,544519200585075236
+3c147722-a419-4625-65f8-68e037518945,1292988788,5795748211785870400
+7bbf802d-fdba-390c-897f-44af6a47ad37,1180455253,10251596485615980061
+a8c8298d-8c6e-6623-5df0-ff66b5c7b28d,4059346231,8419224873041728728
+39897cc3-ca4a-aafd-a0d5-678579577f14,3455226634,18282919088548996536
+f3847621-8cae-6bbf-1f1a-517afbcfdaee,4240915725,8089134892435211434
+7359708e-38bf-657b-7be8-99bdd775f627,2094746314,207932581924724903
+c2e94617-7b51-34a0-21b2-4af691cae1d5,4097931255,1532984610302460253
+d5cfea36-6219-4c0e-5119-3a88a00cb8d1,2099032378,13511260068831743607
+50035300-a11e-887c-7c0a-0f87927e4033,2599707216,6131717089261226198
+c883406a-9871-52ea-bfa5-1c69c94bb0b9,2351573975,3211705263623584420
+e9262239-5443-32dd-cbcc-2c4e654b30df,1124112884,3400184514684292053
+8dbe5876-d958-cbed-270b-a449c1af6d0c,2544210383,15507613010839651672
+002ba7a2-3b2b-8d83-4487-9f92df0ae410,2968628677,5996626900208194488
+ca924fda-139a-f54e-a2e0-4e79bef38e9e,1754331228,6487956431106228208
+dc73cfd7-d6ec-8335-32ab-0f8149b29941,2595109343,17964864123746505972
+4ac3d4be-e465-264f-be6c-75a7b5424492,3219333049,3692983986573337239
+8309812c-83e7-9311-2153-6737f762237f,1327893359,8688455552809318150
+a161c734-689d-8782-65a2-47f3ee5daf25,2306055541,16221568179994423854
+ed8d79cd-2851-5a9f-3ed6-2931ac2578b2,590063106,10844220314130569972
+ed60f19a-fb2b-8c13-1b7e-d6390fa2a697,3136837690,364752929190818479
+77bcf395-2fd1-8571-4d43-e943cb6de79a,504563653,6788154878347862128
+59846eae-966f-bcf3-f68a-47823d40c7d5,441285759,3943752437047540531
+ff1d969c-f5f6-49df-0c48-a8fb3e3bb845,430047459,7225171768971866412
+3195c690-5915-0e38-4384-2ad29c724e89,2556479470,15256717572613281708
+d5fe8e6c-e5aa-3101-5518-08e4ddfa9c89,873021657,13961025282178949229
+52c3fe29-c57c-8976-6317-44a59029773c,3566941895,11067025889926121915
+7b975788-4342-88b5-3c07-f108ca9a81d1,2193720853,11546356152316707000
+c8da40ef-8ca8-2153-4cc9-bca2681ff819,50607197,13115901509379982286
+0013c81b-3443-f443-6288-ed457fdf10f2,2628146757,5112028223613365683
+1fb526a9-7f29-fd57-a1dc-d95b6878ec39,685433936,4210576479478647837
+717949e9-99bd-0502-f62f-783b2988369b,3569843290,7247221424201797984
+42360f3c-9072-f3b2-bf4b-5ba74ca16b19,212731851,10894515106823111540
+d808889c-84bc-c918-40a1-2193e31b4a12,3546172148,12719743133259032008
+bda36b3b-84cb-20e5-90c6-c3794af67dbb,2393535929,3834088332776727396
+1858b55b-01a2-1a36-c0c1-cfc8a8d67778,1991823892,10428940943538473679
+86f57671-b6b2-47f1-2338-2af36566e15d,4248550770,12925447172374023437
+8e3cc853-91c2-8f39-3674-44c9ac4f8bca,4230058215,2859679139771257019
+327e9f97-1e3f-624c-b839-a3f41bc0f486,1716300465,17845504394432772287
+544b096a-4d2c-adae-31b2-a8ec3145e1bc,3328932855,125202648857925720
+dd5f12d1-27f1-1035-6bca-739b8df5e526,767824941,15614213297627877608
+85132af1-426f-96ec-9d14-5bb6cdc70f16,1724849494,15802629720171148412
+4f28841d-7fb5-cf60-afcc-61c11960d61d,209157058,17257340142387097268
+0ddf6634-2779-5a4c-653a-da7ddbef6638,2269025192,5841569027115428877
+d42a4ef4-69d5-9079-ed02-45b3798280b1,2720636972,6309684189877537079
+fc235ee7-e42e-8e22-0729-97379613852a,21126564,10559470259581198167
+c03d0b6d-9606-089b-eb69-39e29dff3130,2718459845,658407954422805590
+03d76927-9ef8-9ce1-b17c-61dc6f642c7e,4291621037,18121019521926382604
+57310443-78fd-b791-6181-4bdb85960ef4,2185788266,8811679585147101807
+00064639-9aaf-ce22-36b5-23ad38836eb0,4115672684,1160370542948842880
+6933b821-4e28-eba0-b9d1-881e956bb9a0,408472632,15305409527480736596
+1a8adb33-6023-09be-8138-311cffbb947a,3237769162,1672956572528679919
+f6aee7aa-3ed8-895f-d501-575456d60836,1818434804,12096462308402021614
+f86096e7-d5e2-7f46-0a9f-a3a0b69b4396,1295121507,9469197556029152346
+12f4209a-9421-8ab9-8475-672f8fcb6500,619979002,16971100019270745401
+7ca48920-5789-4c1a-91a2-191c631a88a2,1941243768,2189979410783297249
+03505f05-a444-4f3b-c6eb-a60c31c21d81,3195415021,3565646224089045522
+bafb5eec-a1ea-d5b1-aec3-ea73664041d6,2185595962,17185914591446018773
+8e7e2974-4ef5-9d16-1b50-910147d0fc3f,1039942003,18243050596197487107
+95466e00-40a7-d621-bed2-4f97fe6c3d6f,3280888360,10854477780567387503
+78b33a50-5003-3ecb-3bae-080f4923c47d,1343686634,2520741543242057425
+71c84734-a451-f474-dc39-e7df180568f7,3492362819,17448049645634718390
+c89dcd86-7990-22db-0468-cb803b6dee85,3994471887,10980289918713508715
+77a85104-41cb-a029-d83b-5efaf1d5d9d8,771885063,14222194606999920807
+f9d77343-468e-67c9-e87e-d89719d9d5f5,2693659025,17141109555693167739
+e165959f-fb94-9fa1-1ed2-32bc3e781616,3393218856,8397567507218934281
+8097b601-248e-a49f-4e55-7742bcfa17b1,2098480812,13426670166447892653
+ed5c239b-b64e-0864-af0c-6674b04da968,2531412596,1898077624630713297
+aa030762-9b88-7d93-7f21-b90333578ced,3206345602,12395555390399370455
+4b784259-a789-019e-1dfa-891be647d166,3655150021,16687919595154230014
+a4d4c361-30e4-67a8-cb89-bccea73ff58a,2983214376,7980868853381124199
+f7b9e4cc-84b5-f0f1-c17d-c247bd0658b5,1000488470,14859868364336943702
+33c28e5d-b91d-ff8e-8005-7e70138c143b,2203002723,14358367729981380432
+aeaa4faf-45fe-8f28-a3ac-7b7e01ef9811,1360503434,7587270610158393914
+755cf49f-9c76-cd96-9bd3-a6b30d51f0cc,332308876,15418638895041338443
+fdcbc8d0-599d-18f1-e32f-be1206a8b69d,1113680224,10463613433843736468
+40357e78-1701-5bd9-22cf-21b98468ae26,1012040343,17369888274579827039
+d33a8d92-9c75-860a-4f3c-664eca3d5aa6,1504019631,17307826262345960288
+9c7f1920-15c1-0abc-d4d2-c582e505c606,2227787959,9216668140577443624
+3fcf326e-9bbd-1032-9a88-0d1d2ff6e666,2991341573,665494211264549276
+e80d8aff-6acf-f54c-1d97-3f9a2e17ff87,2291157284,15537700706901315864
+43528355-3a2a-2cd0-86fa-5a5d2694708c,788517824,6630428027525972482
+20ad26ab-4ae7-845b-6ef8-34345e76b58b,2404354593,11158214423417225647
+99f551e5-7694-6394-8251-dc37df060255,2254550238,524777658309946623
+8223931e-fe33-ff71-df10-a9e83e83ce20,1647206723,1706383143614300712
+1635492e-21d3-24ec-b0ef-760caed43a5e,694446036,7222576264720529469
+10566c69-a1c2-f130-b264-64cda16f9c36,680512963,8067913191107221185
+4003ece1-a0c0-9d60-7873-899a48a5d9b9,2880236723,13263013952316776418
+52d153ff-54c8-fa4e-0c94-f7060f3b3a96,1824752729,7625447136122784802
+3b382f83-4227-8b37-48fd-c575d261aeab,1134678509,16415736010903277289
+db2bc998-b4c9-61ed-764e-2a04caeb4081,933499748,13914985040276597436
+fbcde261-9aa6-4584-49d7-7fc9aca5d51d,378106986,10637891249844308718
+62f4f232-63c6-b036-508a-2e28be373d69,3663292784,3786757539886202810
+150ef216-ef36-d3c8-a736-cce500d4a06a,893427985,9514372961161812651
+fc08dac0-51de-86ff-21b5-72e7194645e4,2632893979,5510703825300448192
+830faa4a-04e1-2297-cd43-6fa3241f275a,92264932,5080969548155027465
+2939a91e-ea61-ef4f-bf54-4e2e3a720d54,497929642,9786895595723736718
+4dd346e4-0daa-e1f7-747e-1b46f5ce31b2,656008574,17873514736253568162
+ae1b18a5-3cd5-9348-58da-b8a1c586f68a,2816120166,10268141001626197360
+b6748e0d-3656-eee2-1bb5-7867c7508f42,2668327247,14454622822369194554
+50203710-19f0-687e-c45d-41a70c8f6354,2247612970,17395103792509389176
+2adb37db-da3e-ec07-b3a9-d07beb85092c,2624839421,11520818261970061125
+9736d5b4-933c-d169-f3c7-6b4c7e51f583,948032599,14878043175412833472
+102731ff-f5ed-5e34-0c1c-0e1c509a1453,1720445375,1149970141127308389
+39b4844c-fd52-4a08-9618-cb5bf709ac42,2938574823,16593772722807828075
+3faf1397-3308-c736-9971-9e0f8a7fb749,3251741416,11457812349723287812
+f5b4ad2b-4ac0-b3b5-0aab-e6b1c1fa9d7f,2499076585,8826453878784848774
+3b8ee02d-663a-afe5-8067-9d73bf524bdc,2557390903,17653672936636724977
+e4ca68a2-d57a-bdb2-e918-00c361f3f2b8,1592073090,1364302531417582865
+e4596661-b2c7-abe9-ad13-cb9760911fc0,3299266299,13636446849201166200
+54c8a21e-51a5-589a-d801-65434713e5d3,2989631781,12161585760438616337
+319fa0cb-5455-2a28-e7c8-f3281aba9db5,4047699160,17781200566000011937
+764ad5a7-3ba8-a29f-2a6a-b951f090260a,2633435304,16550889473335064275
+075f39ea-2198-58b9-e16b-777bd62544f8,2247526328,15230949640205369756
+7002366d-bf95-651c-a9eb-7e0c14250c9c,2612376439,14602140083443291840
+2bb56bda-b29d-15cb-4335-8e06553dd741,1069932793,4233654541387604327
+2bec68b3-a011-820b-cf4d-cc8221da57f0,1039029141,13188983876058739098
+c4e900b7-65bc-c779-3e92-dd7e5b5dd4cd,3812761526,9483170938742449269
+7a0110b0-1dad-57a8-861d-8fb65cdc3e73,2953754957,13584121467616846940
+29d5e085-01c7-969b-2ba8-eee3295c8cf2,4100600484,14958163960320361679
+65c0bb46-c2d2-6a19-f3b1-73879f230ccf,1562973771,11362995295158236373
+cacbbcdd-57b0-ce48-289d-e39bc6d15534,2066545449,17721096453976713478
+0b30c1a6-9f86-38c4-ef04-53fbf26535ff,4135416527,14854916890156164763
+ef5ed765-7ea9-1ba6-8280-c969f56d8d65,3538669315,2744433193730717423
+ee209474-d6b9-2bf4-fef2-cabde94e524d,3059018275,1480989234984981514
+41e4fbdf-d239-5a6e-f710-6689bf038e6e,2043219080,17220204432998337289
+76860c64-5974-011d-6dd8-9b5aef879ec8,965730975,18495148248335259
+4fef6ad2-2a7f-4dbe-3ff6-d80f1e5a15c8,3449432623,17652678839170384048
+6fea0bc1-bae2-996c-fe51-14eea6855649,71699228,7464287762895094086
+3abb0fa8-ce7f-a3a5-f02c-def1b4e771fb,4139305541,511599475931517660
+ca590b18-dd44-852f-0f8d-956ff231f77a,1424075346,13772624408938330582
+736d2d72-c485-7714-9a26-f2a41a64ce28,135551867,3011277811435698360
+ae796efd-e3ab-48cd-f7ef-2bccce878a27,1122868996,9242320033648734940
+f6a2d351-c55b-2043-d5b0-5333eb61d476,3178390970,1399067732746434164
+c7a85344-6509-50ab-5992-28180ba8f5af,386742365,13250350250948684204
+7959271d-514f-f54c-5c59-45165bdf21b8,570788424,12151968978941180363
+245a7068-eab8-cd7f-d2ae-8ae31a9f2433,1415515558,15492675583669472835
+71156cda-4eb6-4a79-62d0-db750f5ac78f,647531870,4379109292023188563
+175b007a-15f9-f9fc-1f5d-26f0b7448e8f,4075629895,16584696522510684621
+0875a6e9-dda6-ac81-a821-0ac6dc459a7b,3119885849,15993464843552945162
+61b4dfce-1be2-4ac3-c0ad-b36e34250fbf,4097968778,8010175298389169287
+dce8ac25-9fa2-9da4-9030-7a9e847efec6,804563164,7851398359731961326
+c33cf371-af42-6ed2-a474-53f71876e03e,2596592991,12114374154004434194
+42c3154a-86f9-83f0-ff86-b3632b0160a8,2941475877,6310732157824853459
+935c2744-f8a4-8c4d-ed14-0f1d2bf2525f,1140616964,8008971396691830588
+990345e8-3c75-7fcf-05f7-618a4b13b0fa,3056373314,2688162638027849599
+b9b9cde5-f99a-e0bb-848f-f1bb0af28c9b,3887392483,6131263005815875772
+d6da99ea-6cea-df0b-39a3-18d489d8eb1e,3957083941,14950560362602778956
+a27350a3-5db6-cddd-0f36-839083bc8c50,322683770,6181651225748451162
+a60f60f6-79df-7f05-7c03-5abaa3a7cb5b,4274066776,18041195907778546717
+df90aaa0-212b-c332-4b7d-33b6b3f63764,14359236,1841226236104168571
+bc4b57da-9fa2-4b23-0f19-c33eaf5d7c49,3382109353,3864536722801427965
+ef6b5561-d21a-3f0b-8b19-85cae2169837,1081967381,3208798235930329473
+d6684cf4-f1d1-41b9-133e-50b85f25001e,2390513980,17295180235557107026
+0b7dd024-bd41-cb3c-9c1e-e40cac321079,1661461925,9882495787441221568
+7b8103bb-0a99-2ffe-5809-d443439f01f7,3341985811,11242836295428990214
+48b4ba7d-3a5d-52d3-ed9e-18e8a969ed8d,1758721307,8056724552311077919
+315b0595-4401-cfdf-9f8c-65bfdb1e85b7,4035976563,9084038140652138862
+b27ed12c-0b90-63d6-0971-ad88a86e347e,1363954686,1508227885951040106
+510dfb33-fbfb-5b39-e64e-f7f3a098fe16,730223708,5421340511489396191
+f2c0b253-e90c-72e8-d8e5-5fece679c01a,58576137,11558679611169358037
+a512b10d-77d2-52cf-239b-a71c35036cbc,3223462071,17506464268179149499
+d09ac227-087a-f2ef-8242-774a321c2f8c,3516554308,10275966314680852822
+d2616e3f-cef7-cddd-ae4d-62d760a76a3e,47480625,17933869829775951747
+7284186b-0a10-1924-f092-00e1df870e95,2632764892,9781062555436236484
+01038e05-12fa-2cb8-30f9-fa787311f8d8,3767645231,18257932253342184670
+c2362d75-e5af-4717-6549-f7ee32635fcc,1194404707,18260282527608133291
+fd31d2cd-7b17-49e6-1614-1d2bf36795b9,4122794531,1512634047635065447
+4b60914b-ce36-f4b2-d52f-e1bef3349553,801490780,4043485000552718899
+79bbe0dd-21fd-07b6-7e43-fe30702c7902,312079211,17513834831759580725
+c3b2cbd4-b8a2-b437-8147-b7dcd42494f5,388843830,4043158925219214371
+fd0d368b-9266-9b49-a16f-32119b5f0360,1216278515,9561273935933481336
+8cf3238f-a760-f78a-9370-31f51932d499,1186749571,13746216696537568843
+4594d833-25ce-79a3-5f17-e3fd2e9e18e0,1641250013,3719020095407219192
+e498b5a9-1cf4-696d-eea6-09b8d2f976c8,2208576173,12533059267144239190
+8106dafc-3572-5e38-9f2a-da0b5a927430,4014011507,15954879227640917672
+aeae9f38-326c-b39b-6e96-8f47380c9edc,4075038670,4336815575558085697
+9d7c94ca-9946-67ca-bc49-511bf8fa5ac5,2158307454,11318204580394329735
+1c2c8072-3e78-0611-398f-db47dbd0ca20,2471963337,9760627266461215824
+26728782-6bb8-590a-328d-9115eb2a8677,3937321803,4954005196748985030
+7c64ae20-f32d-45d0-22cc-8a1570ecd7f0,3390387315,12062473620486980325
+a6bc3a2c-3bda-91e9-8056-9b6400c159dd,145646886,6109403896794386930
+52d701c0-9b10-36c8-5f66-3a73dc6fdb2b,1233726275,14280154568703640278
+089ca675-1b0c-9d6c-fdac-d8f3ab454644,3635632211,5681513939176648592
+39553a91-fa26-c111-e4a3-57b86a407773,1291530918,631792301367775832
+07aca640-48d7-1ac7-9d99-c2c17363c0a0,662077435,10103142132037515003
+265ccd07-73f9-326f-e660-a44c8c7461fc,2875886813,10637604706435504870
+8dceb2fe-ce8e-8e76-12f3-336c7ed6bc44,589838846,4192842221359682217
+847071d6-08c3-78ed-a05b-b3e2117873fc,481369314,2215204506157886447
+1f8755da-5136-7981-b4e7-57d4f73fb048,3519934991,1093975491488646187
+8544eeb6-558a-21fe-b638-e332445663cc,2060356598,9419624977089076370
+204c4d69-efc7-0c50-a609-aba9a9a8dcae,1883824665,890003706076283157
+269e4ff5-053c-e43c-5159-460fd9947951,344808753,16139976888149261277
+1034d805-a2fc-d50a-f1c1-914cfdf7938a,3267570972,8779112307028232522
+81defd10-d2c4-b6b2-b575-98c550701dbf,1634243996,8880262704272102837
+5bf30e66-f941-93cb-ee29-5b68d930c269,3478729095,17507814834600725621
+e0c17e45-20a9-024e-a6b6-9af5fdfb510f,4089365657,5144559128576180401
+597ede77-090b-f842-c01b-e4eddb7d1d80,1206703978,13809629126965269981
+c586c80c-f1ec-7e75-e054-9c5a1456c65c,2165818733,15321969027116295075
+2be1024e-9f79-d917-619b-94fec594b235,1735864770,5926930082733753473
+cd84dd90-26e7-5927-43be-cc520d1c3ea9,814246902,2449105426734528244
+47b078b0-d755-c099-89e4-cf8d3bf3bb75,2045333835,15572890010402236106
+9c95a902-191c-c934-6f55-bdf3c4f9dbc3,1146160080,75056544318691162
+cfa099a4-1a0f-68c4-9bd5-3cadf75872f1,2551753718,13317355587224690228
+b176d486-5f10-e3be-8783-b6cbfac5fad9,2372960359,2417227914580886150
+493a4ff5-83e3-c4ba-335b-3ca797ccd5f6,1775712972,13603361045246250329
+8a593082-9c79-1ff5-64d9-6f0aa08bedac,657782388,6241567336710574539
+3e373466-14dd-98b6-3383-3158caacb6c9,1535457320,3734213163548521332
+d60a9beb-50dd-7a4a-6d9c-996b1453d6fd,3823848995,4040130656164112868
+6b68bd2d-13eb-8543-3ed2-72af877656ec,2089167159,8375620702647995483
+1ed57e7f-d4b1-53ff-5d23-bfb7fa13cc00,3092848771,4124413601491069072
+844f2bec-d05b-c0d9-9c68-1ca33daf4f41,2033376541,3392211810877212197
+1a9a6496-ee22-cbc2-3c9e-f33a59190e6d,2411951827,16974064284926326288
+ad13ce24-a16e-5438-c6f8-5142c354261d,987309359,10046499707806480938
+a45ad132-e9e7-83d2-04a0-34e02046e6fa,2267102870,9664318201110816668
+fcc3545c-e8c5-f8a1-199c-6509e431c842,3126700470,9209478565384778889
+f8ec78b3-e08b-3028-3fe7-ba1f9cd5b2a8,490986777,1387749058432379811
+ac3961b5-6f71-38d6-11ed-de70978bb96c,1468337601,343637536278914987
+84fbff49-2fc2-dc46-ef42-df1171cd5d4a,4123154829,4299418712439378279
+ab09df16-dd8d-975a-1165-7b26d7c2fdf6,2029794092,14585481724204120350
+caf8c0f3-7d70-46b9-96a5-c21a464b7dff,1645126578,2248236155252349290
+06e0259c-a70e-5540-3efe-fe24ad3e2c75,2607205819,7156508890338737966
+c28c3250-7b89-1640-1567-cfa5eb1e8fa4,2060283362,4025997604478372693
+9bd8e2cc-8bc4-ae0b-55dc-0b416fcd7629,2596884839,1789568285678712835
+bbf7a634-49c7-784b-189f-6564b3bf0945,382113387,9862940955201663925
+24ad23ac-36e0-a945-7d1c-1bd64f95cd07,859380123,5850378892283701253
+3401d7f0-0e98-5815-4870-0adfdb99e000,4063455142,12072821677559442620
+b02ca884-049c-82e8-60b9-ff75537b2f60,3399988475,8591461214354461236
+d0cba687-35b7-2c59-9b12-2adbce983c06,3327708961,1128475155009727225
+c3a4ef75-1425-73d1-046f-0e9d3d0fa53b,4066522875,9757709978635015775
+0a85c695-1586-2763-bbe9-8844255eefd0,2121977299,9047194217910278888
+2f2d3aed-8e3a-9b94-86d9-c4500cbf2e39,1409067529,5080296132341971214
+471f4bce-c378-144f-346a-d57f451d7505,2317747507,1322996858653740592
+a7ed8a22-020c-de98-c7b5-e03e7abb0aae,4258085500,14376412069914202787
+1f8bd645-79e3-f118-a29f-2e156263e872,948365096,17802035205115859592
+2a0a1b55-31ed-efc9-5abc-636f982a926d,711553003,3891313343507134797
+d625dc4e-1083-f5d9-d0bd-15d5b49b7759,230076986,2717269126658905027
+2cd3ff83-405a-e387-6864-37c017104a89,1558545933,1609549190916730183
+037feef3-0795-2e8f-350f-3f0ebd2e6bbf,2595901262,13246226711488028376
+12521c96-95ea-8f60-1289-91b667bc7113,2532553789,5161496480800579905
+5106014d-40bb-b4cc-dc23-9cde245adde0,4247111214,11460378212652333302
+8dcfbfea-9b9c-7fbc-0daf-640e96eaae70,432573455,12684818865473646793
+e0ca0f2e-8d77-1725-f962-10d2dcd4906a,1372477843,16851929184857818818
+495f024a-e6d6-98c0-257d-3b8c6d52a5f0,170737985,15774563805377714440
+bbcae724-850b-69a4-3db1-254ae5d59962,1876069569,11579118085954671564
+1cb6889e-8eda-be0b-b3f6-e108288b586d,3780404726,16195142098280591492
+2fc2a1ea-7d84-f062-6e6e-445f5c099492,900966987,15762438887655538121
+0690f6f2-b0aa-0290-71f2-246ec53bb858,2930448631,7432022521088698087
+11ad8b05-766f-0e98-b55f-20da40728023,2897551865,545212640439153876
+bf40ea31-1b28-c44b-7b60-4d569f3c245d,3599024080,11213721323680840489
+392bd88f-ee67-d90a-d726-405f1106e4b0,248169978,10734584059172138829
+1a7da881-e544-4b1c-5aa5-67f21624bff4,3526242867,1463801442169576376
+e845ff7e-af02-e1aa-a71b-582b7deee2ed,2673544779,280628624164596336
+c024323b-a146-0cf6-f578-877b23027e86,1701386105,8349043536061152494
+f9a310d2-eb84-85e9-152d-cc44c8783a51,653434760,13742730718832412306
+3425368b-2d9d-bdf6-6aeb-2406af52533e,3056030260,16600005751649354640
+d10221fb-ffd6-4b1b-ae7d-8cd5753f3307,4119889849,17782117118412437393
+5e5a15d6-a1d1-4a77-c9d8-4041c2aa7b8d,1916654907,14366406564648685940
+ae536fa4-091a-ab21-8b10-73a98c751b61,1924256400,16766568062481176930
+71c7b083-655d-db75-c95f-17bad9856cb2,3614548612,15199621744638041018
+f592800f-898a-a878-610d-eb7eee23de06,3262213884,17702586830764723044
+fae6cddd-7233-61cd-f542-792269e85867,3780034655,10687090437651573248
+0e9d0907-bcf0-c75a-b66c-d774ff9e22ad,2876619070,6502505066499172200
+181a7fe9-63de-5aae-81c7-c9874cb76419,3357513159,4579476071866280377
+78272687-d1f0-58ce-7494-56492946ce12,4024047681,17376179135705145764
+f5c67e43-59b6-5282-9259-87cf588e5dbd,3915993701,6235009980263143901
+81295c61-2327-ed35-20f3-77b5af616a52,811086432,4449767798716671175
+5aabc456-7c16-8d93-889e-4a285c31d88a,1384700811,17041578734734862590
+3acd2889-897c-089b-7065-6f1b0ff58f54,1661363877,1718389099875155861
+38182061-9c2f-243f-65a2-cf360eb93384,3557125890,10731000940078697204
+3d460a66-78d5-3bb3-c063-d5415c74f156,4197957389,13616105206877514179
+7de328d0-9683-13a9-436f-6762b237fd73,1829619385,16480218682125426280
+fce2aef6-ce78-1a09-8bf3-00f006f41ac2,2760608504,2873572767403754664
+7ed3ee72-01e7-6257-706c-7dc1f5b23a76,154223052,11280369789991888317
+735d8a22-a763-3008-fd77-110a88b4012c,768248820,18215564826752336882
+14f96f57-0f01-1f29-0aec-60bfda5f4654,3527817177,9984610977416195688
+ac1ba6c7-8fca-39b4-1186-c6e5f418cdf0,2489956591,8126035668616815577
+00ce9274-bf19-b685-356f-c4f7251e64be,96931375,8772140658567181558
+76e7de8f-9706-ac7d-dbc6-670ea579cb87,3485778506,15351538805107437158
+be404bd6-d354-9fff-e801-4d766c540a00,2486423583,5000529250765878481
+63cdcb70-4dd3-95ae-d1b7-aea75ad7fedd,3451083844,17885386454442868782
+1ec4f581-3c06-7183-42fd-9607eb515d6b,27866027,8637112801725551449
+fcd42696-657f-be95-4f4a-5576deb5080c,164168199,12445661910846383626
+f9eef48d-98e6-aa05-27bb-c3ac2fd8abbd,573217764,13575579210083936680
+63ca5bbe-76f2-6bd2-1c93-cf8ee5670e64,84625863,11194831151814260706
+50edf485-0a29-4089-6708-8551a83b9b8f,2015306790,2875428829696179645
+f4dc5028-b786-6c2b-fd3d-1bfa456124ba,2091634125,1872648084192636899
+bd73c517-cbca-d8b1-a7e7-7bde8eafe359,2030090313,3973916789536262595
+2ac008b1-79ce-f22b-00fc-65726292aef5,1799158730,5554374008844866193
+3b68fa5a-e967-1c89-054f-edebcb41b270,1513301028,11712500047185892792
+d7ca0e9c-3d06-2219-78a6-a7b042bf9ce3,3028291768,10684914161626936612
+0427fc4b-08ea-6288-f896-541daedf0393,3145748186,2732740514775636242
+9a5bee07-d749-8d52-1b0a-b36669bc6c61,2515508247,16001627116391960767
+5c8216ab-d686-3924-2db6-785e9e041eb9,4240398631,12897976501450367298
+d3c553f9-0861-24e3-e2c0-8d9aee0eb812,3089915977,1233520558944583720
+96c24824-8843-a9a9-e1b0-a7731d34c98b,3714747459,18000606997783240083
+be86dd2f-faca-6249-300e-fc4b9daf08b2,1573329066,2275341039858643960
+a5b5e9cd-ddcb-0afa-faee-31c666064ef2,4054517126,6211640594757902000
+b3cfcda5-4d41-8450-ea6b-98c22ba32f2a,3536368934,10666079628169176134
+3e05c156-7f25-c7be-5b88-46f2d6acdfbe,2358935089,5729712183816134385
+034275d3-9243-0be5-3ecb-b0db641c8566,1335882331,3582933447123232686
+8b311ef6-74eb-31a5-de7e-ec0e1164f198,506798970,6834749623536673774
+0a9f84c6-64bb-7078-260f-4c7d76899724,4056522518,2713524514563068110
+815bde39-bc25-c54a-668d-6d3e4872b9f3,2470990677,5217401420431371527
+9ba42ede-6d2d-4248-d7f0-19b6e9d33944,226287169,3455544467814653621
+24bd938c-cd95-0658-0eac-eb16f0826f94,382902911,17010114185551530105
+242edd85-0f2b-b2ed-7f6e-22f5fe4a53ee,2166103709,4108719847720632408
+0ebb3140-8184-35bc-a1b7-a550dd24a682,2550637961,6126955096676405575
+fe8b916e-b765-6940-b7d0-97771ea8a7a2,466152024,2217540950903597758
+1ebdd025-54e3-b42a-1490-0f6d80b359f0,974570564,2721970149614438209
+cc42ece4-9e79-a6a7-cfdb-0202d801d507,2432733935,3242324882699853458
+524a48a8-c9eb-9df2-b630-c5a4e0140ae1,2164278667,18169566801995837818
+0d474f7d-6807-f09e-8bdc-4f29e70281c3,3508804847,12585640248129531910
+fad402e1-fe2e-160b-a97c-3be920803d25,1720606197,6276944168573858549
+7892229a-65de-d5dd-e46b-3fe4991b9aa5,1780659453,9708403904712811414
+0d09be9f-c1b9-64e5-dbf4-4423e12f6d12,1806354147,17639916092833720615
+bc73865b-28d6-a94e-4184-8f6958eab4f4,318678907,4708960831043550166
+3e0e7e60-4024-584e-cd5e-7591df529cac,2200472974,12084295315855344401
+8f7be28d-5efa-2198-4021-e711f0f722f9,2454533453,7127719458516676510
+067315e7-1ead-f428-90a1-26b9cdf4dfd8,2414767225,16242578296079340241
+2488163a-e7cd-da1a-10f4-b6175f121d0b,2415018507,15299155538775734345
+440f91f7-1b6d-ab3c-91a5-a6feb7552cfb,594271951,17689016761736780628
+38d78b5b-58b5-eb17-a476-67f16625bb35,359172055,15156972965982837601
+25f5e012-cc59-e1ac-23f0-27c073b14f8a,1830399071,17522743561492791876
+5f56ae48-1ecb-1dd7-c65d-7ca92fcef551,1718583481,2749371174100132916
+eb568911-8cb1-300f-6efe-57e29278e4a5,3903818724,535025538183928628
+91be7eac-f5cc-b19a-d598-c317bc2c7a42,4205309162,609213129375399850
+13e3d932-abc7-00c9-eeec-594d2626be74,3959953791,2349046746010095537
+29ce242e-7ae0-1548-3834-5c3c01475838,2186078046,4272769422267566061
+fd662664-dbdd-8e79-2b50-22fb88af0d08,3992321231,11237881823111592478
+86af77d6-3f65-c785-6e66-a229cb5c6f05,2624672041,17310105912342655999
+5d287949-133a-d1af-db26-8ada366205b2,3334689069,11859070996698889158
+5bab4c69-419e-e6ba-f678-0a5c25959164,1526889897,2378835786410618892
+5261ae6d-4a23-286a-6b29-15eb1bf49391,1937683801,493875024903298397
+7a153b8d-6a5c-61de-fe37-323ca36368b0,2266092858,18147954868055845112
+fefc13a6-d8b1-04de-9a56-62ed9da674a8,2112805006,7054536761143914102
+c7f86864-5899-2e9c-d9fd-25692e99c5b4,267455682,15010455818410063802
+4ea98907-3187-9aad-cba8-00699df103ec,2384407028,2819436791898079056
+0b8c70f6-48a8-7277-4f79-67137ae0585f,3950368394,7848578485780283445
+15d20b44-f767-03c9-1124-c685718efade,719009600,12656596540930468557
+db0a14e1-c99d-fbdf-b638-dd050ce35d78,3944317449,3620820048475622312
+e85aaa9e-e83f-d146-1b1c-7a0a96d7da12,3748545300,10511033714753786859
+79b73dc5-d0b1-dab7-3413-22759fd02139,3314376679,91328314449924659
+8d4113a9-75a6-fcc3-5907-67391ef46061,2121542534,3437467252736177913
+cfc90969-cf9a-91cf-10e5-904e88f848f2,2941633582,6113747062998375255
+28abab41-9342-4644-276f-47ea446bbd66,3083285747,663192634725383854
+8d18406c-cd72-2d02-418b-f22e4bf1600a,2846637190,18248627525019752968
+c925c6c6-cce1-19d3-32fa-f951e388ce07,2622183717,1574064818338949545
+497a3d84-fb42-5eb3-a587-b94282f60059,1149625108,12582345806584959342
+a4e0c3c8-2c15-b0ab-07e5-87af0c8a2dbb,2896334619,11204876805287815108
+93ae5b0d-1e0c-d078-42d9-08c5d6fe31a3,455467113,13329507948414029845
+7588e2ed-af54-77ed-4332-995ba084872b,3465631633,227255624819640234
+a000bba9-a7f6-c3cd-102e-eada887f56c3,2949204222,8189671959196050791
+e3ce5f04-a425-86ae-44f6-783a8658628f,1567341002,12440618314844837333
+0d36fda6-332f-e4d1-da17-874cb7f59790,197149437,8616415454653324699
+ade65496-c04c-ac44-21ad-d16533756156,3148582682,246102922730092627
+85b741d0-8cd9-5bb0-84c5-3137f8dc6315,2147561942,1602772118456469125
+be4ba320-9f3a-3070-de10-c66f8347b32b,3905622091,16661591155357852858
+2e4fe402-8c83-2e43-816c-8a8429fa0e94,3249660873,15718421876808235517
+0bc636a1-9d9e-d126-c620-d393717366a1,3271587569,678983391237242195
+985ef951-791b-57ed-a0df-3b687247292c,2853219809,7845272620234126522
+ce7e3faa-4a6e-e96b-ebee-df321aa9481a,1129980050,10399755375136829297
+5364040f-ac9d-84e9-792b-ff7b9ccbedef,2395806523,11765495630596860438
+9b17cf7d-ffc5-4ac5-8781-f0945b4448ca,3686255028,1273804360443793327
+8fb92498-3d79-0604-1285-5cfc74700263,3750998333,16483788715277693965
+dfd1ab92-8a39-1aeb-0e28-8f8239d128c9,3651683842,4121218202704427965
+a9f50749-1095-67b6-3063-76588f1cc124,2386528247,8958110391897921900
+611d82b0-2f17-e724-d302-e810d380c773,460205630,6709436692469435256
+d7a02143-0d56-f3d4-df5b-b21cef68ca64,3802473792,12178697043632719484
+2f4b49ab-1a19-38a3-5947-60f123fa3e6b,1555776663,2645389691836897438
+c1f3ae5a-0558-95db-a40b-8fc26ff130b9,2351020508,7917784237818686178
+de77f1b7-ba18-57fc-9ef2-db38018da8cd,2227072369,5382812351192821285
+dbe253fa-1396-4ef6-8630-cac36507c4ac,1743617529,3564119048515180178
+3542f5d6-d848-98f6-9072-e421010eb4f1,1297504394,1572927138259569969
+091f1004-fd93-b30a-26b5-55f43dd48349,4130034664,11058139404601119887
+dc4add19-8a6e-b1b7-31ea-8aa07d1ba0fd,724588291,6220071879473867411
+4c41b914-6aa5-ebbc-43e9-f187e24eb977,2868533286,9557397278306806625
+bc3510ce-5f7e-1ca5-2dd2-b168fd34e632,1410801633,641202698923405407
+1e4d4c3b-a9c4-35b9-c574-744c318749b3,400352306,17755156564274713952
+8ba68386-5e6b-1193-ea81-be3b2916bda6,4161169882,5409390258708438583
+960d3d5e-35fe-43b3-7a5f-30e0d919f5c5,1325706902,14762561038033208096
+58add409-63c3-6e9c-f946-22a5e6f478e1,888208926,12833556164073168340
+7cbb5554-375c-6f85-c38a-3d5907532e5f,3703792913,15595861283732170630
+e6322cbc-7560-fbb1-62b1-6b8786d9b65b,4080452366,6799269283546818277
+ed89bff9-7a0b-bd4c-037a-ae3a4abd61ea,1581044689,15613142922502945740
+7d1ed47b-7632-0411-5e6e-8878eb252f8e,832370846,8058710830429362280
+d1363a1a-b81b-a940-92f5-97898f85dcf7,3914089385,15909142053107038919
+0595c93d-243f-2f45-c1ff-c2c1250d2535,3595626278,11006817533135806409
+c6b28da5-14c1-cee1-418c-a34a1a67a57c,67692817,16757616942523902553
+8840ac34-cb18-c70d-2e2f-31cdd10da96a,3953154959,15971958371190760411
+78577305-2bee-ce44-073d-13a49b61d76d,1721708882,13790697368370810610
+7faea0ad-d61a-7c49-03dd-6ac3ee5b5394,2254718123,9023561303445418692
+6d3b9f23-fd60-c36f-7578-e7a12a9a4c39,827231579,15712346553851644899
+1d4c0fea-6b6e-5621-b124-ff4b609a5685,1526071578,16175266410132608710
+c9b90071-18a0-3045-d9f4-2e6bb4d773f2,825355068,16696001508774368087
+8608daaf-df4d-14c2-4b4f-966051f1bfe9,2282739847,5466292284855499341
+45704c21-670c-ce5c-a600-661f5f603704,1666692585,4739671722943395156
+4f842534-79cd-a379-8299-26f1d7cc1cd1,1954030976,16841692382569080019
+c8188561-2b9d-875a-e691-27a437e2b59f,1120477008,4028325207565750419
+efbd6623-d8c4-a2f4-6018-b7124649fb2c,714921041,11965512657634145890
+0e3d8a81-8f02-19de-b1d1-f9eaa41d5721,440698707,9740622290759353647
+4c305c75-36c8-f1a5-150f-83946b526e4c,1400602866,2004931072004523754
+5fb34143-7eef-2d49-ced8-af55def9a1ae,3021837224,121015887792711169
+951763a4-9f45-ef07-236e-74c3385fe95a,1226830923,11932121817415440225
+b79ccfac-7296-bcef-5221-99069fbd82ae,771306802,3486012540925217200
+67173565-9707-3e61-44ac-b48bfdd8109d,1803083408,5471318411895053990
+1f260f65-1611-e0b4-d9a8-ac8fc3cd11b1,1270723097,6876714492806997445
+a7aeacb4-86bf-5556-0407-8685b7a10442,2640275824,5959259992012413233
+2fb610d1-d9cb-47ec-54e3-c0a093e7bb22,2229756454,2085515236783324641
+b0007780-c867-bc2b-8982-e6fea18e44ea,898549071,15345048410981307136
+5440369e-6131-de72-d9fe-a953f2517b68,1059627299,17559376372100242899
+e1f5406b-6fa1-499e-f562-8f60dce1b425,927463705,18424319337474217290
+7486f8fe-c458-f7e5-bba1-013a13c798f4,3245392818,8829297335358152892
+bb1dec57-cebb-850a-9b55-11b4332c86f1,533636414,5600676879682798631
+ce42bfb0-4422-0edb-0810-ee04c3d23fa3,265398723,3907821783434522072
+3d199ec6-1298-d98f-bbed-7bfbb404bfb7,3321986596,7712014439326202960
+429bfd28-7609-e08f-da51-6d4f953fc7b8,1176199338,8942844400781515382
+fc868570-4197-3000-fd35-03e2f10eb769,3877689798,14429897988982313686
+07a0c5f0-55fb-63ef-f02b-df370a182acc,1357776938,1115093347765717876
+ca0b5529-5f79-72e1-1ef1-da272f3dda17,3307802372,791529071672443177
+a29f887d-4ffc-7734-09ab-8e55b10a3fac,547317502,3632820459236943046
+3a74bf89-f181-d708-fa47-e7910a4d984a,1532349248,776672695285388709
+c551fbf7-7d48-528b-0bc0-35afd23cf06f,1299876799,13903627011363870265
+0feafa80-9528-8874-208a-92092bd7100c,2329014181,4312692550262897655
+753d817f-b25b-2a7a-d1c0-86696018ed3a,4121971735,3144936720516886478
+414b4798-4918-5270-0b08-1aa58d73dae7,1918613008,13888946015963091865
+fefe7106-afec-f516-5723-775198082312,3923834087,7863808460975904082
+10861a3d-52cd-4ae9-e68d-7ada5a20c7fa,3245329226,5122794811955691191
+a25b3015-445c-aee5-abd0-47fea4295195,1481283544,6818872290739404862
+a7f0ebe9-a0cd-9425-e3a2-b1acb2c2001a,1199530791,2113692638634449715
+a43ad066-6a93-1928-6107-017da99996cd,3772938492,17261845212228575562
+0f9cbefc-ab83-08a4-890e-3a8b140ee1c0,1246519021,3806868648405315865
+2f7ce66a-fe5a-775a-0871-fa0d5f071880,789990119,7019775426476048688
+ec22b584-4797-5be7-db80-74dd56da7d4f,3353632883,2474325408208180534
+a952e9ac-31c6-6617-3375-df637a4a24f9,4284601650,8533349588047174902
+38d87076-ebb3-5769-eb3d-5230552ab775,1269048564,2382225532061457850
+31e84ddf-f3a4-74ab-4c64-7176e581a513,212939113,8839945202063229612
+7e99010d-c721-3361-ce2c-774e5b860c97,213850,10933163711795277264
+483cfaac-89f9-1c9d-7106-2785e55f3e6d,4021922360,1066418728487721611
+f5e4a163-8bdb-840f-1cc1-9b6d50edb1e7,4212700236,1618049731975144258
+6b1ccf82-d9c6-7378-2bee-8e40d5cc656f,2638643825,11048417951875802160
+36eaf805-7144-9043-2dce-f3783dbdda59,3376886425,18093056791882696282
+d8531a1e-1b57-8652-9379-1de8daf81493,2129106750,3052320539320956196
+9d0879e3-e579-89e4-5ec4-48a5dcf8f5fc,2686235089,9786555322932670225
+3673df90-179c-6246-b250-990d8c408141,2670766436,1659635922212290075
+f5a210cb-62e7-e725-ee8f-a7209973c0bf,3497205897,2315171788247779378
+250e4db8-71fb-f21f-5b81-636020bbe814,2145760073,17087298964906159247
+3bc2d23a-21a8-e8dc-ccee-08a52cf79f57,206775761,17221740713707939232
+9e4274cf-5c9b-1a82-e716-267d26f119ae,2146968462,17553856132397605155
+b2350896-2ab4-547a-e694-4e4403a78935,3674621811,12922399541153947275
+8710a6e9-adcb-16bf-e159-b50b80ac0c6e,256750507,16033064162417083430
+51e4b3da-9322-f1e8-46a7-03c9e94b34f8,2605608166,261921758319194656
+90c722fd-5203-c59e-c7bd-146cd050a6b2,1378979880,5739063915537762853
+7dfd6ccf-1e95-4529-3173-827b1a86c92a,283764701,7396378285051429786
+68bb3efc-2826-cb05-0647-d9cb59c82603,3013476550,18107702960106316471
+9394e5c0-bf76-4488-d292-03145d8008b8,2009687432,13630119935936516966
+68c66ea5-fd96-9889-ef1a-af8d41f8b216,427992460,10625715189738751392
+b69d3a2a-791c-7c29-9732-3389afa6c290,1692095550,13799763505563654887
+1168283f-34d8-e37c-0867-6ace88d36179,1961354764,14951979799234540526
+b151573e-eb53-62a8-5bbf-0839d4444d7e,2384835410,9077886359681445002
+eca9a2c7-33a9-f135-0a8e-39b11f25f28e,1573824871,14005224375850696601
+f0c983b3-2318-6fbe-33a0-eb89bf53bfb6,2827351836,8316269574091521049
+1026f614-9d3d-2d58-ecc0-7ac0ccb958e5,2180629385,13874725867686234819
+7a18f2d7-d7d8-0dc0-b064-746c48c98ee1,3278038770,15324543373819116638
+358a43ee-3296-913b-cefb-515b758cfb6e,3220929146,10848269310662081296
+7da16dca-81da-0c4b-30d1-5cc471f612e2,2918798946,10174736900191041876
+17b8242b-bb97-9a61-975d-20732ca5ef37,2299984618,4279667028189090381
+915e1bf2-c198-63c4-d262-1d98a8923cc9,2238026649,3163275314605094338
+f134993b-f888-652d-941d-77b63ceb2436,2944284845,9539614711796886543
+3a452ee1-8523-556f-3325-73b71ade903c,2496655612,11440414225130894960
+e6b75e5f-3bbc-87ef-2a98-77672c00c2f8,2379766682,3306348109567564723
+c1ce866d-ee99-1015-b0ac-8494ff906775,202575729,15618414372880298930
+1ec5fe51-5a8c-9a86-53a1-1b82dc886230,4117906844,11131153670033793110
+0cd313ed-f637-7742-637f-c742dd03fd2f,2516003471,11846890912432076240
+7820e1c0-0319-03f4-743d-2da544bd890e,518334340,4966937323747531980
+7e7f129d-302d-0321-d901-1b38884e1036,361622176,9268262494399349590
+4e358300-8df5-8b70-3a30-ed0d267d5286,1903518931,4420311330710594945
+3ff11197-753c-575e-377a-b62a8fc29b40,267490078,4045682224509674908
+0832788d-a847-69c7-cacf-ea50fd78b7d9,2302080560,17236412806146945487
+2ef77351-d7f6-8ec1-0c93-57fcba046d59,3985389489,13357743135719072545
+313fbe5e-7998-e87d-3199-66308325adcc,1482371597,7309868741334841783
+19b666f1-bd72-b283-76cf-2668dfe9b4d6,3422113534,17637324281149793845
+7e26de79-3511-e794-c153-585be02fb621,2853161332,12901116571986370536
+58ddc977-4b55-0a7f-577b-4278e4b345cc,3269037363,16265936091072277688
+85fc1343-7b83-c745-a7ec-4e4a7af8a0b3,2105307691,7623481547534110325
+797d2a12-1636-3acb-3d85-3be3b066ffb4,1683460841,13749697061225821371
+8737e8f4-6b22-811c-1308-34f91ff3b26d,2848368190,16832306949398521694
+f35f162f-7dd2-72da-4294-ece8dfe04e6f,3638833328,5710120687847411281
+31ee506c-76bf-c294-8140-1a497501a843,126293716,2919512824579406309
+8188de45-87bf-4501-415b-b7246081f94e,137126611,3007339490321908009
+8f0457f4-e366-2a1b-14a8-35388c56eb50,645206689,4114682487869709255
+d87847f3-858a-9447-0787-39e6de9b339c,3927261465,18191699206917324082
+4dd7de35-e913-db17-16ab-c685102bf21e,2780650324,5463558128379457882
+9ff6ab85-f80f-2178-bb58-904c8e4ab0c4,480987526,17207067620358773220
+1038bfd1-6390-0f6c-fda5-d75fe41a8cdf,1166905590,14042038109291316361
+8391ede5-ecd3-bbb2-32a2-247c0ee390aa,1682252657,17851697222568121881
+33ef1b62-e0fe-8f6f-2273-cb86650fae91,2546958101,14787078078223499371
+884d8765-3127-7229-241a-fbf0aeb1c47e,4030351540,15605482552371556589
+d2a8456c-edae-923d-6a3d-877925bac108,1358279678,2384974912379081792
+2bcf79b7-5c75-e2e0-00d8-50dde92c7aff,3227394177,17991167825397300415
+740b7dc9-8e89-9399-5e78-d28985d8f243,1918376787,2063092446924184193
+65ded6e3-f571-a150-6632-28290c7d9a4c,1428777885,6472097013351524329
+3693bf70-e390-4cea-5f47-d2bb191a82be,793942847,6751883921027512914
+77d5bb0f-a4f8-95a9-da9e-3cdf78307409,3543176352,1373071108554946407
+ae97e1e4-d30d-5907-0297-ffc03c759f63,3495693199,15493368502460054459
+cc66ce79-3ebd-e610-de08-bff8c64612b6,1757965990,6180532935415831447
+c787c411-c6e7-c7f8-8b97-95be5203db44,809058266,2221458538008943002
+8612bfcd-8374-b448-9ca3-d994e0a707c1,3754842645,7250551142339155587
+967ac4c2-94b5-2115-9fd5-72aa89a43473,3569833956,9859933467268919905
+03069ae9-721d-1f4d-b7b3-dc44ab76e1bc,4222711614,3160998627416838248
+b957e816-ec03-26cc-33be-e8b2bfde591c,2676250224,18057089447078443931
+8afe7444-f5d5-0238-ffc0-8d5a06bca543,32303270,8694582863719008870
+393008be-8c69-4922-88b2-8b8d7621f1d4,1494055567,8869725474954020982
+189e2df6-1d4f-9d8c-5a39-c82e350807eb,2122644336,17492025787487225510
+9c76f7f8-1f85-0d6e-b191-889b94e1d4dc,3123402159,7612623298870853272
+22110ae1-a344-6312-9e2e-28314e8bad8f,1030299838,7074351142903857702
+375930cd-7264-920f-9040-86402d1b1668,3551863988,11768300967792159209
+4430b727-c8ba-8f63-eb7b-dc30821b1fdc,2976543474,10532122094827286148
+8d0f863c-bceb-9f12-65a7-ab2e8196bd39,1562419729,13084481023642140894
+8c6e8bec-7c64-6a60-b6cc-e456001c207c,391684374,16036833022754772559
+e42a9a9a-6a4f-26ac-9783-3079ec76de13,1549776404,3228075730800098161
+5887f550-86d4-c4f3-5f42-2242331ecfae,981784493,16425287269011068546
+e0a74ba1-3eb7-adc6-5d6d-0e0a6d934852,2301245153,11972439886261932002
+636960f0-7eff-cab6-45be-a59f16e3250e,1297881454,12746721722150245301
+d9897812-8475-0a89-9031-a644f970a1ea,1896224193,1656853815726522277
+b925ab66-0745-85a0-216e-cc452980f24e,2664769173,17090666900037002700
+5bbd2f28-c9e4-6afe-7689-a42ebc208be6,763645054,13259386991089787333
+179cb967-a973-c10d-8b40-08e831d670d1,705441503,5501737458443065806
+e94a2df7-7cd1-993a-5750-b967853b9343,339037064,3594881780950373224
+9b3f1e5b-2bad-f9b2-6471-24fbe76d4be9,798749843,15236644538015992578
+63589448-c39d-fb8f-b089-9607b567abca,411525380,8124280298619574614
+5ef7153c-3226-6afc-49b3-2451f1c0e1f2,795917544,9594776867227561012
+82dd2b6b-ade6-ae89-cf4f-d0748f2aa170,2803998394,3771600657344132285
+fe0f5682-07f2-1da8-7475-b89232df9282,2286600956,3987747122560127934
+1b1b5044-9917-370f-66c0-13fdecc62697,1626331678,17835366852233876944
+b91d177a-4b10-9ea9-a583-adfdb355bdb2,1901227920,9008555336003619488
+31158a61-d0eb-c85a-242b-d1285081e048,2125753813,6870379615760363515
+e04f04a7-ca35-5176-2249-c653a9d4f3ac,1674120773,17768324818834835944
+154a82b2-027d-a626-e00f-8471710c7604,1587502521,12106943430845576485
+14114a00-91d6-e3cc-f92e-bea2dabec9a0,1394028117,8637707862238425351
+dd3d59f5-1541-c422-6f66-2da383018764,705955680,3025791832992666663
+d72cc1f4-4c2b-53fb-1bb1-f6aa94cf6c7e,509822461,14697370745256939944
+916c86a0-8d36-4868-657a-99af7536cb3a,711674773,18285082553909844549
+e6daa348-d588-f6a9-0a55-2fe7dc46bcfe,3220076219,3538286449978528357
+1817e2c4-d549-d295-b1f2-80bd5d453184,2824093166,5370503782670700451
+0fcebbd8-3b1f-1383-0f22-40552dd1bd01,3718569421,6648443344553202008
+be85660a-8c64-da05-777b-2ddf1867b11c,3477220932,12942817951911918442
+7f9df77c-808b-d79c-f0c3-863baec9487b,625410051,17848099738995814463
+788e19e2-c655-823b-5556-8cb20815d869,3643741049,12041316545991788760
+e8a8a7a9-cf9b-1fe6-c770-d9e50761993f,3254658999,15483835504764164513
+63173e73-a5e8-ec25-ac42-80c58ec58652,2465820969,1794474091156836917
+69bcb7c1-c44d-2fdc-6983-a8fd231d80c4,3464106568,13271710701516963045
+b276cbe3-d86e-d0ff-de83-ac7bf4651271,4222190292,12145180534350831733
+e9fc3f1f-7ccc-0ea3-748c-7b6bc78a3cd7,753795285,15989928496452180840
+0b4defa6-e100-c6c4-c655-f6335fff3775,3993210888,1756579773130577531
+c6a18533-06ba-1cc2-ee69-f2a160ad4ae4,1150254412,10550851259022523244
+e09031d0-c556-753a-f12e-0972a3cf061a,2153248544,11292557213369760749
+ce9c352d-6e0e-11f3-09d2-8c80a726e08c,1388733616,10508921028019485156
+d82bcb4e-43b7-9e2e-00d4-7149b9b1d16d,2524438771,5712123016896303006
+33432ef4-e2cf-a8a3-3728-f3b31af62242,2603601330,13287518321572978126
+7881f9bc-c030-a2c2-5519-4b127a5794b8,866285487,17247665117084927423
+f1e5e747-a552-239f-d713-a4664ec4060d,1700879146,8761823162733198610
+194d899f-aa4e-5f17-ba89-d66c85e97958,1608421991,13657323313253072931
+68379c66-bd4b-2425-806f-75a3f4722166,3666402094,6248413252025143652
+38564a8c-bb98-fc3d-ba01-7e200d0d66d6,2887327617,16722607205609521567
+8f9db9ec-405e-1e6b-540b-1854fc150a69,1567574017,15538762054142167475
+03d1d64a-1229-b21e-e1f6-333fafac22a4,1582775594,4886926556291785449
+bb2cdd17-1249-e965-e045-bd10043d283d,613410005,7166961352893066673
+bfdc73dc-b053-4c18-66a9-38035652f3d1,4005278167,17341440601004506947
+e953d061-66f3-0aaa-8f0d-4f7c26520c5b,1877428631,13106104160851670201
+69b2b337-7d31-cac8-d945-8656e2e05377,2706186556,17496144254178133007
+26931d47-3d42-bbdf-af92-2d9db8f2ea5a,2693338815,16189709831552181512
+38b21718-6780-cb73-6901-bfe0d52eba47,803378779,2110671599310581286
+6bfefb0a-d0fb-d890-72bb-18908e8185cd,3143373853,1174844679052966023
+bc484881-19f1-4589-c100-1af9685e3eb0,3833923043,15001082104218629246
+4ffed07f-99f2-0824-c961-d369678dc83c,268036114,13612016699081595810
+675e36b8-5134-fa0b-b891-a7622963ff9e,1235750134,11402742017160364590
+e7c45bb6-f89b-bf64-77df-afc58c3d71d0,2288724689,11552704440245512919
+5b1caa8d-7ed2-e153-9059-b70b54afd255,3486385066,10616180800116955055
+423d38db-02f1-275e-97b5-3e3f8becc2c2,4272849842,10064044938634550706
+6ee1dbc5-319e-af04-558a-9083e8841619,418599013,8038737143224791266
+746353e7-0de5-1175-fd31-7981ead55131,1730985982,12009471319735461331
+62103231-cc43-f018-8663-3d273c1c50c5,2276637409,8884629344458569762
+0ecdb064-2561-6380-59ff-18c41da7c89b,3748410909,3987187784773404365
+2591633f-6279-0ee3-3dfc-578b1544683a,966805110,16738535488201076141
+18763e6d-cf1e-b5d3-02dc-9451f2fa6499,2438097133,10651176824743978162
+8af3f6a5-26c9-0131-2431-f503a9b99f4e,2475931862,17676317887340582831
+459bc5b2-3de0-6f4f-b1b4-835037d4376e,883042373,7313102733711071385
+8eead805-6f0e-3691-0793-3220c28ad291,3312313918,2847114511199061045
+bbff0bea-98c7-5a3d-c9ae-cbb0dc4f79ea,4269413768,11977068761794466006
+4364d592-6187-c5c8-0ab7-5e16874d7d08,2783870550,10210439528681471786
+b895971a-d40a-b50f-4b9b-1c4a9b5e9aa4,897749624,16938635272305209833
+a575d1b6-7b4a-4ed4-ffe5-1b5f1ab936ee,3872767360,10072952619191104063
+97017eb2-f156-3c87-7896-cecb48cf971e,2304015594,8102284598503330026
+8c3bf078-4c9e-4087-ed45-bd0c1cca2e93,29928203,8140706746113753830
+ff410d5b-9a60-ce07-160a-01ec201ba7dd,295862528,4827830033029203084
+b15ef925-f9be-51e9-d080-9a0c1aa3a30b,1513619002,8724720283422853205
+b04b98b2-ce32-a389-9116-d85c3a2b455d,3950542055,13054537497515359409
+d457ece1-5e6d-a70d-a6f9-b4ef5bf7cb08,1457519375,13135103693141347101
+30c5d430-bdd6-3c22-9a7f-551defae1e08,3514366491,1559650528354453452
+52479249-eca3-4a74-a6aa-fa4414d66f04,3774123832,2943832322193027004
+9f21db0f-2827-f8ad-6c70-c93b24d3536d,2338452612,11983253994136300038
+7f310f30-6b42-e692-3d74-c7531deb0a47,1912175861,3449598073473478547
+bd8b5f38-b9d9-8ff7-d052-f2465569a3a7,2930428533,5087806002261727833
+bb17c63f-86e4-594d-e051-c1f1341ee405,1624274441,8414430374176096941
+a972cf4e-ece8-9382-4dc9-e7b4ad161e16,3569527632,17093437974322593319
+84e79925-39fa-0a1a-e26a-6f43caf2377a,2831093617,11176372235834890594
+9a2467fb-0311-6038-0194-b6dd4fe4f3f1,3875679399,8498920092312628411
+175e7dd5-8611-ad44-1e0b-ba3998671129,3339621464,1586308247400313038
+e33f13b9-c043-08d5-725a-aa04195dec52,2324950534,12286462060701261654
+37243cbf-3cd6-63c1-5597-4a71c75ae795,4172997576,5474471245286486432
+30e10928-a575-14bd-2977-0f00695c65e7,3856696195,13493502660155049088
+986897e3-103b-c917-62ec-673946fda68c,839953083,13283572962971442970
+13c84026-c06e-1380-89cb-7f6977c85896,2434474550,10507607197590817764
+11515ecc-8213-9a12-e7de-e3d306dddae0,3160653021,9896761866257401880
+f494645a-fed5-d992-71ef-4c9517d3c0a0,2355227522,1654266720702896506
+02a2c55d-62b8-dd1c-c0d9-941fc2b54133,159509847,11446352125848258029
+5af5f173-d5d5-9090-1122-6fb7bb732000,2966360204,10222070865915319720
+f765427d-2dcd-21f8-fc48-50a39a39a8ca,1639029254,4305333163654257098
+7018ea6d-0548-33b5-099e-321b330abf05,3433038189,11223797264377724047
+f7b99818-cbe9-13d5-83ef-2c86ecea5118,2020746475,11158356846706957086
+fcc93e99-6ff8-1e5c-5898-a98edda57948,4159384758,6525513679130864812
+ecfa78f3-d761-70a1-17d1-5df564c3f605,20177439,3918752942321864641
+ee9c4ad2-0968-87c3-4fcc-7d8958a7ebf5,2210288967,3350446949022289264
+bc23827d-9120-273e-0c2d-c8e76c0ae429,2959762570,10907170480467680696
+e230be76-6d9b-fbcf-f26f-792b4588fba8,2432978526,9359839445594776890
+34290e8f-da20-d9ff-4226-9a6d9e686340,750034998,12036967703691293277
+ebbd07ed-ccab-27ee-f74f-2b4a8dbe656a,3186981006,4817688594272680484
+511e02a8-2bf0-337c-669e-d77815457d4e,3770593817,17901933904097072804
+bfe5ddef-da3e-7532-51d8-d23991f6b989,3670170111,17821634754150828331
+868002ea-8866-6050-e137-6a98d2105d9a,21194364,10754636182752881368
+01ad72b5-3e2d-f615-e75c-e85ee9ef4c97,4154453864,5198882180405620887
+f044caaa-599f-439a-d23c-89d91f7e40b5,2897016182,7456255574872770929
+cc9937b4-1469-cdfe-2104-dad6b4b2490c,1034938969,9156072245595251878
+c23e0473-b667-1096-37de-ebf4a65128a7,1575201980,16430811101758667696
+edd8f769-4fd0-1e76-c322-00b4204db1aa,3058854141,15571962674522910091
+bd1650e5-a367-b564-ac8b-3ecb30f30cda,2888331868,4213800061880830718
+bc50ad5b-dd23-6ad8-c76f-358114345d46,1746402399,193140891187357134
+930cd1b2-b5ca-b0af-7697-1a8604e34159,4188906448,15979959692755042627
+e7beada9-914b-5708-21e3-5f41bd70ac12,1504728885,8355654267917949739
+3879862c-59af-bdbe-beb6-8cb17f43e81d,3045525241,12370220466829052428
+19ccd91b-4ed2-9173-e8be-28f80acc66e5,2661129832,15861499497426642120
+c42ae9bf-3ffe-1d75-b2a5-c7e9839aa799,2281326807,7461755374736827740
+11b07b97-4429-97ba-9d70-aa99762feb63,237107378,1079949985871924530
+10b85e46-91d6-0651-e008-9b9fc77e1b48,2386603064,12520596933350456077
+da6d0305-d5fc-ba18-fde0-6a6480a162ce,4017954082,18025661875219281330
+11013b2c-2e95-660f-4787-48a9c3ba17d8,594204440,15059039320082893101
+af5203e6-7765-201b-76cd-f401a02e22f2,1989664211,3605423573366758625
+bea7337b-ec14-2efe-6226-5817dada9ed8,2827559817,10951113918426622153
+6957d52b-73f1-25b1-481b-bed3b4eb3b52,890778462,2373022017754040307
+073d17ce-ed41-6832-f6c2-fbf40dde02bc,1994303115,6192496144497844316
+0acd6f7b-2571-d1aa-3f5f-3ad171b9aea8,2702629304,2509086060999987936
+de839031-abb1-0a0d-10dc-22e237ed1177,3131175839,4412466222579192216
+ee62968e-947e-6f80-6e02-0a427d95eb20,2309179705,17886016070384790786
+1bed0535-663b-0d14-e7a7-bf26f07df960,941165327,10050289259457839288
+7e96ea65-b2e7-bacd-8c03-51b06f49ee9f,3494058191,5875654956513944268
+5607c036-c7a0-0944-564d-066c00e0e90d,3019678723,9894125877696901810
+0429f75f-f939-d14f-3fee-bc93a402cb4f,1439886951,10664218651671295474
+388128d1-720b-cab4-718b-42d29736d9b1,2881651830,4077372023045690163
+6c00c817-ba0f-924b-7be7-f8903071c978,1951757177,7302113488049613757
+3db680df-3741-aaed-7507-96f7b3813b79,1842989935,6530580260228453395
+7699b855-8b37-ddfb-893f-834ed71e82f0,3072948927,2255131059000503831
+f72a5698-bac6-c40a-5d2d-6443ce0456b0,1120408930,15757450269950263161
+cfbc88e1-92d0-5ca0-8a1a-d7fa58f35d8e,3775197316,7553430728231937706
+20c3576d-bd9d-9689-de73-fbf02e7113f4,184746415,5161212266047741994
+3b31faf2-23d0-3328-1367-ae811f006dbe,1897665990,5658379456238084635
+8957a975-2f77-656f-2f02-df9e7e11f70b,1206775864,9822456344448989598
+2f637ade-0d17-f65c-c2b6-e12a302efa48,3521927386,11416243406326679394
+32cc35a7-ecfa-e97f-28ff-5cc56173fe9d,925241417,18341002050851572293
+a66de791-4c86-46fa-7650-3c6e6f30ecc9,3211041700,10695795182763552353
+ea1e6231-7ace-fa5b-ef9a-4af0e758f5a8,2040078140,10504848087009243427
+fb95ad29-5a60-62db-30bf-5ad8104f998c,1340856304,14916529236555714674
+38597631-2b44-2dbd-1bde-155a16de9113,318012099,2768237754937858535
+cf699752-8f47-a278-a0b0-d24beca9507c,815965524,13178888149529887287
+f522f192-1da7-d94c-722b-aaf6ca7664fc,1047486548,3419387995786261777
+a1575e40-80f8-b905-5d4d-9cdcdc143378,1278288918,4108229123279034577
+c80f313f-d2e8-3f2f-42d9-f9fec9492b22,283479062,17482699061598458052
+db9c02a4-a720-7e09-156f-3ca32c2ad139,1543093753,16045215666423309507
+e6089b31-a68f-7058-7192-211267b6afc9,612395998,8115003572606150649
+bb9e516a-6051-f2c4-7576-f34b90fad187,535337551,9223721551682226761
+707891c0-6443-8e60-d458-dcfeade86c62,3386817308,11144140099301579476
+73963e59-d45b-7df9-50bc-600264a7ac2d,973752771,7228106219005319894
+b3c492ef-2ab6-b6eb-5d66-0b92ba14cc14,3494259416,2718262726909147829
+debd993e-4447-fed5-a609-a855c0b2bc01,1260140820,10316667873524443277
+6b56efb8-d5e4-39c7-f403-06c1aa6eeb16,1523240298,1214021144483102504
+741d6ff1-3769-4ac2-6c32-eca3010baa0d,2235652129,447793634884833070
+8133d6ab-20fe-60d4-2ef5-c4336f31cc91,3631124563,17579293293887671445
+3c4645d2-9882-118f-1793-583ac59348a2,373156624,6680185967970362300
+936434a3-a78a-124e-f2d4-25ebdf6bc1b5,1643984353,9537115024979253054
+3869048f-a36e-c777-f1cb-87eb8382720d,277182730,11005955332291398947
+ab0fb6dc-bf7b-c612-3f65-b9fecf7aedea,1870230703,3422966101553004068
+a9ccad40-d8b2-7ff3-6336-513a43fee98d,1708672205,11793131235708393797
+ef5fc77f-eb61-bc7c-ccc8-e1fe0d37c805,3127200756,2766952595237371370
+559de5e7-6d1b-1dcd-7d4f-29c9d6685a95,918019972,8668017156407742385
+c746dae5-32a4-0274-c826-2f54a0be821b,892698585,7434076517587013417
+e5f9f210-c50d-73b7-bfd4-4275083ea442,9444267,9786384490438722875
+594bd9b9-b4fd-1815-4c00-a52e075261e8,157223047,5712979227457774586
+fabb1289-0c27-3f52-3121-3a33ee915514,3730297452,4762336985930034661
+22f84f93-c860-a874-1688-3783be7c9fe0,3990688590,12756410100744630301
+3788b003-c797-db16-4642-11143c138e0c,84859697,7304902775806113193
+550593d1-41d3-3420-65ad-2fcf44d0b37f,1668239767,12727007763967695248
+f5cc9101-e73b-e4b1-90a9-3f2f73cbdad7,1154700681,6584666189134018726
+6a526aa1-874c-e9f9-6e4b-8e3765f36713,2797766800,17315329208635257695
+dd4c622d-d2f6-ba82-575b-b3e6b3b6f769,3093043922,10303146797217657966
+bfb90979-2b3d-0934-6eb1-1f5295f5194e,2562615287,7306020289713365745
+b66cd08e-a2c8-ac1d-a3da-fde7d3a415f0,966714410,17378939148279867412
+aef127d6-d935-adf7-6930-40e7a6d8200c,3621392095,8533482792903999084
+0df17385-3936-0657-f8f9-0093c75e688a,2743794704,7890947641999773353
+37bb0672-fe80-409a-18f0-37708cbee01a,872724935,14193310761365213537
+7c556375-1078-778e-1873-a752c62c8422,3778936835,17468505457032053
+4c7c1254-2111-b618-7f7e-e2366d63b9d9,187865926,835375476945087731
+34866327-1b56-f0c6-9277-0f53f737f65f,532639920,6957875225425169296
+5420fe31-0b05-d3ba-8267-357adcd3c662,2822542422,6545290959975665516
+13b39203-1598-195f-7c75-e5959fbb676a,3362942314,4921883316509133674
+1e445771-3a3b-017d-3bb0-677956091f07,1778209271,17697568804185736669
+dc882791-6db8-6859-edf9-e439b6fb7a46,4225347784,12250085332475061728
+02189aed-f5f9-7b51-53fb-79a1e533c48c,1608834607,10347920551807671200
+f8099348-58ae-dbb6-9a5d-e288fb628eeb,289627877,12594046110407682379
+0f45ab20-b19a-64eb-b502-e18da814908d,3185344665,12935409089321456039
+4f22dc13-966f-8e6c-c75e-ab73f6599944,347312293,3009242064706419737
+924e77f0-e58c-19e9-8674-044e123af030,4058651346,5138026396946304299
+9c977e92-6c3e-a7dd-e732-4d92a4bab84f,607305508,13923957105259343338
+94f70d64-c041-35e3-d21c-8d1ef035536f,2372522743,13405449789870628173
+36e92f7f-3e52-9423-9142-007465243a60,3297041776,6700526342070670619
+99a67e34-4240-afd9-aee0-e3003de98d60,464233484,17622959332089250886
+368720c6-54ad-856a-0871-fecf59fdea2a,2222089026,7056042273939499415
+e80d4c7a-31d0-1ae7-b048-c1ae620f2b33,1783125599,13348258803374177969
+6a2cc776-4ef6-2651-5f44-51d24f88b577,1862567069,1654167562675163948
+eb128801-3797-d1ed-751f-214ac40b98a7,4093428541,645351362655746029
+506a711a-bd24-6818-a528-ebc79ba5254e,1593010935,15263276936807436342
+5d3008e9-ddd3-7c37-37ae-1cf50b767cb4,1313193998,14812350141504018323
+765df86f-dd1d-5248-951c-72573ca48bdd,4175531201,12542334199164822161
+1986819f-3360-d5cf-590c-081ddc382c26,2640356915,2392774204283031499
+3490874c-66df-47af-e6e6-ca4f3a41261b,3014253341,14441310334837570131
+e5d3489d-8594-0e88-2a9f-a41cc55b295a,1671110778,8665399600716717410
+3f0029de-b5da-7a80-ff94-4a8cae6b567a,4154102840,16909015868541837985
+1467b7d9-3f26-909d-c757-68e3d88786d5,3367356487,15276192424006530133
+8fc94a38-bb89-7271-fa87-d69e3ff888fb,2806900459,10038800747842632119
+a4792913-ccd4-d80a-5e6c-fbab51d81a34,3063824111,1668927642718741760
+9d438bf7-b83e-4b7b-a85e-a046d96a68c5,2364870781,13900858372709980145
+45b9b6e5-4add-644b-2453-2f0cef487ead,872739717,1447598832045568916
+095f62a7-c296-94f1-b222-238a1b1fb1cb,2745350443,4382837187860341392
+e9ffaca9-4bb6-6f38-315d-2c87fcce9edf,3735412905,5474196046254048551
+3e6c7fb4-6bc7-12f8-661b-35333a7eb58f,3724991598,12010583199932662207
+046c06d8-17df-da98-a728-8ad309da3e78,633197384,14035198955273371285
+9dd89b76-bcb6-c271-a7a8-ddbf3a62cae0,1570133088,13170501090396262617
+8d36e593-89e8-f923-908c-4c477d976be7,2373306446,15360513389800124875
+07015a49-cc3a-591d-ec98-373d3c4054b6,2714271228,4021982982547586045
+9a31150b-334d-8840-c894-ebeb8b93e8fb,4064848498,16518354501627726387
+1571f8c2-fa61-8202-bfec-18665f69789c,1167958932,16599075023225003974
+41913baa-2d1f-719d-e23e-3e8df4f613e3,3179213507,7734857606032541139
+a4b0ecab-243e-7563-01cf-e675ab9ef5f5,968235443,3038263246162064066
+977faa8e-3375-690e-eea5-080f58479cac,2044536880,17578597428614767752
+235336c4-1dc8-0f94-934b-23a4948feab0,1750859300,4727682078568185060
+ec0d117b-187e-1632-1792-76eedcfe7b17,2503994104,17460098231901934025
+28f61b30-7bf9-29e2-4451-6cb5f7773c54,1308825011,4391508588804513325
+cda55931-9359-edc3-9953-252a35c5cd1a,2853082725,9846796642193330381
+2a00058b-00ac-72c6-d065-4d8fefe96762,1210129785,9141045409328884821
+81e76cab-122f-af9c-e86e-b08d9aa43926,1389756720,10495336247680114868
+4d9e1d3f-ab8c-8047-3376-673383eb2244,414683210,12095024071034759298
+97e58e05-cf97-fc12-0c6c-3a129efb32c8,1464227080,2611582022165664857
+2053c316-472e-4888-b996-dad1e2072151,4071481133,17375569596389520462
+8f19c0f5-ec5d-843d-4790-58e23f78c9fe,4067646910,1278327469017858221
+09adc66d-b1fc-0a23-7d3f-cfeea9069c8a,986461815,17054147684009329327
+58cd437d-863a-3187-5f0f-7ebb0b0a52e1,1889177590,3538781280952765518
+59083763-9d44-630a-6872-fe3cedc10f99,2725396037,5088697131880556227
+8e085425-cc3e-4ef1-bda1-9b8b0107eefa,3777744910,13890343928826083712
+1aa56e5d-6548-c757-b3e8-6780acdd5eba,2289839773,7834514712498182429
+46fdf54a-7c9a-0078-37f3-8efc307144fc,223496583,4795007181574762700
+97d1c459-bf2c-4b8f-ce13-16b13a8024d1,3612209327,7573349475543617239
+6589c747-7427-ca6f-9cec-355ff337d923,1694543687,2307971974848317814
+851425b2-ce91-be09-226c-08ff6e40a501,2874047257,11146256070716783913
+61c2b4d6-b7ee-70d0-c0dc-cf3a212f6c42,1636434028,8820725002133739740
+b30f051b-df7b-8bac-2404-b49b59559a6c,931969892,14788641474825568055
+ca3b6244-6f34-33e4-9795-70af1a55f5a8,2991254329,865696242812135180
+72d3e833-b36f-6cae-4866-de5d62911de3,1451452533,771350977011239541
+1d78d227-aeb9-a76a-b62a-0eb902d86b67,2838260051,18284721152581414734
+bc8b3345-eb0e-87ca-bb3a-3e6e7b19b008,3983653317,18127068335519606157
+1608a3d8-b728-3ddd-4b34-a59cdcebc690,3417505367,3884937835445086823
+3d9b79c5-1514-6a3a-8437-fe500b209087,3589363367,7475472660040638135
+c38b3aa8-d5e1-a494-43fb-3a91b8a3cf58,3282107019,7228803374546623260
+6452fff4-45fb-8daa-825b-398b7f14e390,1516203210,7507849977742730996
+8ca08bc0-b9b7-330d-0148-bb0beac5eebe,1397476394,6487169389621797984
+d28b6fc6-3998-7024-c39e-6b4ed7af14a6,2535766831,8689976938033197282
+dfbb1618-1559-9c84-d695-4ef47a8b2d1c,1059561784,15846292352747660960
+3eed28f3-f734-478f-a5ab-06f8b05000f8,1666846250,13615202313509214320
+75f1d1b9-525c-1959-a51c-f1fe5636b02b,3256367912,7741416924132700727
+8e1b92de-307c-0f02-a374-9cd5d8717c27,3692627178,15355224605665605477
+7e8fe606-de74-525b-8e41-0aa55ea5ef3f,350356577,11117919498715696274
+58b6b732-ab56-f4f8-d163-4bd241819371,4234136920,10774575873326751852
+c072df3e-e8af-446d-29a6-68f9be4f9cda,1485692214,12056454172409347505
+926f5dd3-2319-74b7-abc6-85cf7cb12412,3153078433,8381739868020000018
+830ad871-9ffb-40a4-aafd-26da184787f3,446649769,6023305608732522254
+cbd2f905-8493-129b-05eb-79253457c3b9,1921758632,3343986050657423899
+1d9f81ce-6753-757b-af2b-6101b3e6349d,2490836974,5219863813592446300
+113f33cf-c6a4-1cd6-f7f5-223c725cd1d7,2738805345,9039106785342275328
+51116c32-5007-372c-44d3-865e6e9f78f7,1866610894,7761313473468542530
+7fd83b2c-3829-5c15-f6c9-0e4b607a66cf,4111915765,11459711663185024995
+19e3b589-070b-0234-889d-3f50ed3b390a,3844419533,1812846084789196536
+c632dfa2-3ce1-f61c-51e4-0d67afba667c,1439994441,10505232375991749560
+062a3edd-c4a8-2477-de34-59ac87310282,1950991249,4369685818938316983
+4fdf9e85-de9f-878c-b811-73c310256757,228701131,6798566856777583187
+fb11c346-c2fd-6601-830f-8152c2e10d55,4106050041,17119207866931007629
+212cb6f4-0172-04c5-0cd6-bc62351fffc0,4007846105,7087997997218797811
+32c041f6-602e-4553-dcd1-5181fe37d53a,753155310,2119892458749893828
+5ff6ecaa-324b-9ea4-354a-d9e0ffce7f9c,840909224,17893284817708756520
+8f016978-83e4-71b3-4f0a-d0e53e5eea2b,2968254750,13634156473213921773
+e02b9bd3-db7d-df2d-6f01-42583b8045b4,2932372352,193149822667009988
+6fad41fb-c6bc-6b26-ca7b-96e9fd9bd18e,3186586518,5008289292038856964
+b5158e7c-160a-8340-155b-1d05496f9e7a,1499980203,11034994664595931883
+7979e50d-25d7-c55e-0e10-d2feb69ac038,2828630660,2944142253368811186
+c39ff0fa-6051-3397-6566-43c146d7c600,2231853613,5584570950925481346
+e90450d9-7149-ad7b-28fe-51aa27bcae59,3409479715,5364695758697393614
+cb6475a1-9e87-0759-1839-1682df74e6d2,1203590964,7076639500163925562
+68300b13-10e9-7dec-2665-467c3749ea78,1675424351,9698937231351059386
+cbe70b40-f38d-1ef9-4342-f52c49bcc800,3489893440,3243660327509688710
+3a2acf8e-f7f5-dc61-a825-26204ddde2bf,3978449410,1472142193363172160
+e0a35a9a-742b-c95b-98b9-ca558bcc09d3,1737806280,10949753086744845221
+0977942d-ee5e-54d5-1ec4-0f572043c477,2094159776,1226803512632151323
+dd5d8f82-7f0b-7496-9b70-e9adc05cd0cf,2834426163,1704055888918149586
+32f9404b-d17d-b1fc-6cbb-e445be443eaf,927072862,2025698249283260777
+fa9c68da-936e-e3ad-bbbd-312d3d2e4b8b,4021367314,14806702389369776455
+10178df5-f0ed-ac08-5afa-414f9c158098,4076369909,7226513062504934755
+92db2896-91e0-6ce2-aeea-d7d063172d44,3724038929,10912372478754665518
+edcd7410-a1df-6947-be5c-a737e6d5eea6,3770276323,11958883131510339307
+0ba0ec0d-6d7f-2f6e-9e85-666cf1dcf0a6,485428530,9583764063423435154
+2d0e7af6-19cf-ac50-1fcc-41a030be427e,600209186,8042402440880522545
+ca23fa59-17c6-611c-175b-165ab508b8db,68724335,9361468405382858940
+cd0038cc-a451-0973-c80b-86791ada44f2,3662107731,2099484445153363557
+39de1d0f-efde-2593-64d1-9e2c499e1e60,3931759389,9331953269018566944
+1f6e0204-db7a-9b3a-7df3-b8c090961938,2190381931,5176469949155016020
+71e8d358-6dd8-3295-fcad-7190d616e299,149416996,7624127111853121205
+38569e2a-2e78-b515-b245-1be37bf45d32,3789095044,17027301842489078703
+e6731fad-ca39-2616-2d75-ae0638a215cb,3825812268,4423657340899969647
+4ba70386-5e0f-5aa7-1ac1-96487d8c9357,1910413048,3000412564016985651
+76d6daae-202d-b8d1-bcf5-474a3a62a645,781320556,4989733902598976080
+1298567f-6121-f2dc-61c5-d3135d7d16f1,3034739679,4931539460664754390
+a0a8e35b-2c7f-ec1b-9afa-03d069f7e5fe,377279842,14589486240692529349
+69a1b098-59a7-0e1c-e16d-21d4a8095539,2260884530,4567628419779597170
+9dd624cd-c5d3-ee84-dd81-b049c8a8bf09,511709276,17276080709670593158
+da5d08d9-306c-e5a1-53db-a9853204a642,2854594674,15160910486968780371
+fc069050-c643-b3cc-2323-85322348ebb1,2814966697,7816799337040784209
+2987fda5-0657-be18-afea-66f1757e4adf,3815249281,15755831049829518396
+164ba2b6-137c-eb64-78b1-480c9337a196,1950437482,10442744952702937963
+deb303ea-a61e-2ed9-3af6-2d82d2511ebc,3516628446,13135771225892252644
+22a4e237-d3d8-1a05-e892-2ea54b66e81b,2526009493,15606118868553239051
+6edd9ad2-12cd-3377-758c-5cf93984b2b0,783291117,17704551028079501287
+c601ba55-6eac-cbe8-0393-7d98248c14fd,2368746259,7036353714910605274
+ef7c519e-35c7-1e35-25f3-bf8053f01426,2661355273,8656046948788718616
+1fbdbed5-9485-afb4-a096-71975e7ac10e,2863134329,112232294069937568
+421b3c34-6d5f-e7ad-a580-18c702e8d19f,476348036,10017893353784178019
+cf931e13-a876-079a-560b-8cf13e04fba6,1638924540,2095724473894813409
+6383a11e-ff4b-0bd9-639b-52752c04b142,1919229374,14843933476329067521
+f5c2ff3a-df37-9523-7fd3-c333972435fb,3169643283,10945286652195260458
+68767474-83c1-aa34-6ce4-25dba26493b3,22230643,16438893892609019175
+85674c83-6eb6-bced-6ba1-5aee8e6682ed,1092885361,4110489737391404287
+e66ee934-89f0-74a8-4d10-ce1330b212bf,3397385108,11947413963511445484
+7241c0aa-9955-f4c6-3666-1f9085459ee2,4011092767,9625147758801022434
+9d92beb6-7994-7f34-c3e0-94cc7a9e11ef,2376011889,15019360379497526488
+fdd61aa9-f2a7-6e0c-4f2b-bb715a914fe6,1203694357,16222177438434843790
+93fd454e-549c-26ad-0570-ff894599e1ac,3332870458,2868196909223589837
+7c023c57-378a-5c41-8bbf-ceea898284e9,1252190029,12508966767508260808
+c15e6b50-aecb-8205-1934-c0d87c55324b,179912224,7496220436081031038
+7f0b7b43-ad58-64af-c8ac-314023372026,3011127619,13150355427350204597
+317317f3-68ec-72ee-e6d7-f98c0ece6c42,2477626063,6665510630326996638
+7d34963e-e3ca-aee8-4961-4ca8ebdb1679,2659110407,6421988930487024947
+d80e88b8-7058-e4b2-ab75-1d0abb735a1f,3040605173,21705549228417234
+809b9be1-5a54-a2c6-a118-e3e7de47ae3a,2906419579,13065610787923914930
+9c5d3d46-9081-31f6-289c-5988b3852030,770561239,13486773225399562516
+d7218206-4ec8-0cd7-213b-2cfcedd7fe02,1405950254,3028917635339946687
+64efd6d2-a2da-e5f9-e9a8-53de96d90eed,2725176199,6491810624445601863
+b30963ba-fb88-34f0-e563-7cf33ee06c3b,3069047735,10683745104696657654
+60248c9a-45e2-102a-d6a3-cadb8a94c2b2,3419833242,6459407402547610987
+72a90fe0-6f8d-d5ee-6187-ec9369a4a8a2,2312090920,14849421154011735065
+7df4c8c8-9f84-9345-4674-653abc99c715,2555321952,18020389150289273111
+63e1791c-1fd4-582c-a4c9-d7440b75bc6b,1978876730,2039587082291113321
+0fa25ca5-4986-4af8-f4a4-96f02ebd40cc,3672544955,14300214070427205989
+08c5a13a-e852-8836-d3a0-166f8278e4c5,967522335,6781992556197286358
+6df227d3-e28d-0205-08f1-3265fcd8e8d4,3240304945,15186323245247777777
+57ae57a8-b3a8-31c4-e936-397f1ce344a2,4207694654,18019774854193938052
+0aa0324f-c6d2-8ee1-777b-43bde32885b5,3568226175,1996570839023056362
+58f0d13d-383f-0f2b-8b26-ffc4ff34cde6,1773046640,9434061879966254827
+d4f463e7-7508-49ee-82b9-45b99dd2e52e,1776751426,12824499001049343412
+250de4ab-fc85-f0a2-1dea-474178894292,963564060,11999683987156206034
+3b6f781f-e869-c7bc-d8b8-dff8b1bd3ffb,624809341,13047459013930111457
+bbf1cfa2-15ba-cd55-9980-bb7013fb2679,1858808153,9941018896929219350
+0c153c0b-705c-b208-bf88-d0b754bba0dd,3247661275,5125500186325420640
+f225f1fb-d8d9-0ddb-0d0b-8b8a9ecd8a42,2256883460,11080983901220734564
+3ecd9e4d-1b2e-cae4-125a-f3d3f91ac1ce,2735869292,12014552083272871196
+57be2464-ba5c-6d37-a776-287b345fcca5,461324934,6298008449877437784
+815ec95a-cd22-2772-bcf3-5e48a679bc0a,3770782125,2339504452930897836
+d4fd0ce9-46af-f9bf-dade-a457b02dead9,788417371,14453271730356669844
+02f509b8-7684-233d-92fa-c15f9f13222d,1677515624,13908217279501423989
+75bcd777-2465-221a-fcef-8fec887e052e,3593589637,2835894580709942738
+50e3e55e-b4a1-6173-38d0-22bbbecef9f9,2848829322,8129207540358656320
+4b19ad6b-6f48-c89a-27cb-697639e1517c,1556264172,15372509881415366809
+81dc4698-902c-d2b4-e4dd-93c3c09f2697,2698632297,9915491915934886120
+8173f505-8d0f-4004-733f-e8a1f52deef9,3003837368,5476197874062595623
+36d614ab-e5fb-a050-2885-baa2ebe9a01b,1700463709,3828000277505967612
+3b1704bf-4593-bf46-dd22-a1816a776853,314615983,10699105444752601877
+53e981dc-c466-9cdd-2211-50ea1a04c5b2,1528754839,3084454014283749453
+6185a59a-5688-4eea-fca9-3f4f4538252f,1740144707,17201540990641259192
+4e409430-3e9e-1c17-ca39-dd45881465df,333486866,4074875417113074595
+873454b5-6452-906e-dedd-92c365114760,166344277,6175838460759884616
+365e3395-c037-52f4-c43b-29e630bb0ce3,1752715554,9274305318119905308
+d9a0c292-eac6-20bd-ea09-63d76080fdb1,3316025207,4764546839005027915
+ae89eaa3-1310-3a4d-f710-ca72ab27d666,2247014594,2801338841518918995
+91421130-da3d-b754-58d8-3e99b458136b,874054031,12765657870975694867
+43925699-9e04-ab94-09c9-d977fe3c337a,2340817526,16314544382768540147
+7c8d56d6-87ff-da4d-7b5f-35a095e271e2,2687370081,2158089530649347834
+10c9235f-0c1b-de08-4921-6e91b0d22585,1776966461,2339258089192343467
+3875e927-afad-f4f0-1802-68cf36e2f5bb,3539419038,14453335904622367754
+13264fbb-242b-6a61-e5ec-04f431d13173,2694878270,4336371475108605022
+36ffb9aa-26ce-0146-fc6e-860e6159a05d,2252820381,6432489458046969841
+87f7a3a2-5af3-716e-f460-8651b88ccbf2,561428875,2381841881957163020
+e9d23356-8461-c09e-3cde-697422fc9176,1576378795,7163320614821922805
+0795df07-1424-6dec-7c57-9fc707842ffd,676769988,11728546424899747396
+11f6dab3-f927-ebae-d25b-1a677b419c58,1512402015,15166141953936948198
+033da793-0c02-0948-775d-5199de878ba7,2332718454,10009444248528731153
+9c9dd92a-0612-0cdf-fa09-8f931347a47a,3068363675,123770090125024762
+0dbe73cf-7245-c24e-a5f5-c3bb1fca005e,1545117784,506547183562969033
+0e601e68-3966-9436-d80b-33c8ae9086a0,2376836227,7610858064037598926
+3193000b-4554-8d6f-2df4-03d7fb225300,957177573,2861551124910499436
+43ec1757-d193-aacb-9731-8703a3902bc3,1046565413,14397302023270061637
+131cff53-6d53-d3b5-728d-2a22759ddd34,728210519,10107361123699510478
+1c00c366-e247-5b63-36bd-365a0f8e607a,2469900629,9566645594791519790
+499d083b-9297-ec46-1ba8-bfba8d25a1dc,227163394,17786345613115809350
+387f1123-9b9d-5d16-777a-760f7e2368ee,496329189,5759718978911573616
+e17c7a22-dbac-8d16-d519-baa5799af130,372126182,5384014509384441961
+18bb78a8-7ada-b712-69c5-833d9c0c9121,3189289552,13163259867552192769
+0201b0f4-4502-2722-6911-d9ccea6a2d7f,2845376860,10089890702785888687
+4eb577cb-3f54-ff69-15df-999d77f9da70,715056309,17105816908973959816
+827f2e03-7457-6828-c155-5424ff40d3c0,3292044504,11207630645824518777
+626d917d-45df-0bce-4d21-e910ee2b0b13,4234113872,13891779563009265092
+a14f4c55-0e2c-7e88-85e1-51695edb7ef8,723835368,13257534969648240567
+ff678aa4-fe9c-61b7-7c3e-209d9e767a31,3353556676,1973766005720352464
+a346fdca-9bb8-0a4c-d389-8f55d3556c56,2514729167,12987309757475323509
+b8b86805-e61f-b2e8-8391-4036c3372b91,2897693378,18331275892277209806
+e48b111f-77d2-821b-6696-a91a3583ad66,1566770481,15544300072797745439
+c4b79dde-bf15-4044-b6e5-440ba612f902,1551180309,983916051226568253
+a05ce8f1-a759-4736-5ded-ab6e42281b35,603620836,1059208515444682083
+882ae22b-7b54-4e2b-45e3-d4383bd1e3fa,3184980616,16220031069388589871
+869841e3-7cde-2067-e903-fdb26789965d,3164130745,1945388380450273819
+18b9675f-b30f-d287-1189-a1901ba02f57,400077404,13539836896034046723
+ca67e675-e659-2684-96e5-441a3f311fc9,3080723774,3031105233221522022
+78c22483-8915-d8c1-c3bc-a1d1933eec68,496218513,13049221583974293343
+af93aa5e-3d5c-b534-91ed-08c41cfe1c19,3260185075,8138821175513361735
+9ec369b7-4b3d-68f4-0cea-a9c6f596d805,4218939630,11605251790593997870
+ede825cd-adaa-7a04-13a4-5bc402a671e1,696090059,17528683453366173234
+9357b536-7749-effa-c9d9-07760d2da0aa,3576137272,7254836698392863761
+11693d99-60f6-09ae-6bbc-9280cd5e7a89,2238445900,15907493400950393141
+a0ac8efc-68da-57b7-68d3-0fdfc4c7511d,2886924278,10422981490834870793
+d2788e08-d48e-d1d2-dac2-b97626f07769,869410692,17573748468164718207
+7d89fde1-fa92-b54a-422b-59dee3181c07,2244185752,1443879384629805560
+90836583-12bb-d180-1b3a-a986e00d18be,1015691448,8829797877864300880
+9725f7a1-4b4e-cc86-a68f-c8061daaf1f8,3853162407,4762416734550067702
+2503d2d1-83c9-577f-b2e9-31377c2b5bb9,180507062,5206028750347580145
+1b0feda3-c1ae-c923-b385-c846cfff0d1c,743645538,6577362728824604400
+50eef039-b2e5-9b8f-f04b-a955fed52e8e,3943404482,6883556056069690211
+88b6c230-37b7-1de7-9f54-78cf8aa8ff25,1379732879,636539305258715776
+dd278f75-4b21-8d2f-000d-d900be0bb751,1824101043,13478693909365410279
+dd6aade5-efe4-e847-48dc-37e4d29115b6,3955768567,17275539414146987732
+c9106464-cab4-9cb6-7297-a5941083f1b9,2183405416,15690235304422831839
+fb82c302-101d-344c-8566-bf3d9e718a2a,4002890093,12868062137293246575
+f7acca90-dfdb-7272-e223-1eef01a1b39c,3818634065,4497090869664528381
+7c459426-1bf0-6dbb-2b7f-21e2e9a07144,3435025882,11614055858794674428
+a3d04fbd-988a-f2c2-96ef-4239d9d618ff,481808562,1095396986870871363
+f41f9632-45e2-74c9-4ac5-a1f1ddd4f250,1679001031,2606557529179686409
+56bea0d0-eb74-bd7d-6d87-adf1e211a4b1,2180182413,13091493235336551248
+ce0dbb76-ea9a-3988-3c4d-82eda2e2369f,2773667696,11405025886460913431
+319fd0ff-f111-9f0c-6d2b-1d23f4067a61,3140412718,17697441099721333248
+e02e4445-8e7b-a5b4-d8ec-4ae93db107b2,3030693362,13029869341957948382
+4277dac2-906e-0ef4-0d6f-897cc4a2ebf7,452543293,5717610207589657904
+c5f4ad32-e522-5b16-dc1e-ac7515aff5c6,3096015407,271720791406980514
+70944380-6786-6ebc-82a7-fc438b1388ac,3887475953,10482069450111311054
+700b9dcd-cb8a-9465-39a2-ec3b0ba5e349,2480934594,1855630624891813612
+467e95dc-ac18-2c85-9243-0048f11421db,4065025441,17621448862101798707
+17bba997-3831-dc1c-1e0b-46a396429759,1439945777,7342695356733471836
+3f064a34-5665-cc0a-5829-9d19e41cb18d,3766909036,10711082854322282236
+5d5a7b5b-80a7-45e8-4fc9-f3fa6093938a,2342034865,1782672853942655740
+db8242a5-65f8-361d-68a7-e0ea8be70d2b,1443562477,13158752913537808126
+8dcac402-1549-7f02-61f6-919f027a3e29,3329235969,14225055193944226918
+fd5692fd-0979-0ed8-d6b8-7d54860bcf7a,3059751820,18187033389302585566
+bb49a988-55e0-8e88-fc37-b07a7cd6a6db,132699626,16434528249709662357
+9c870fdf-9dda-8401-648f-fbcf57ff1ad5,929645800,15279445663900076573
+fa5e061a-6a1b-22ea-47aa-4319ef4e0de5,964737942,2001015935054607887
+e2bda455-959e-2c5f-e518-f0489b58ea9d,43421299,15214676540737663855
+12b6b47d-9050-e631-dc97-aa99c5a10a3e,1916799517,14587507682553448909
+7433c21d-bf14-a050-c87a-95e4a5ec9ce8,3039585034,14550905144374375267
+fa7a3c34-b8ba-f75a-98d0-a94c66753558,971278122,11853852536254522617
+246817b2-7de4-8f61-1c97-6dc76424efec,2450291853,3362933368978000424
+8ac81863-a504-c260-38d4-7369cbcd6cac,976597599,4555743050337103961
+81c1dbf3-eec7-3448-14a1-a7f7e87b1875,84205389,6435054163639329078
+711fdc3f-5cde-2282-3f7b-057d0291803c,1959394719,11788212296948160562
+db41a1bc-b4d5-7207-c8bd-d59dae47df8c,2987659157,9000791362537194485
+33d99a8b-8c73-9ba5-c157-85a8128ebfaa,3451476094,4753577207326372182
+787e363f-5a49-d40b-f46d-4a52174d8358,2504525290,5470125737073685706
+e9f66bbd-4f87-eecc-56c5-46baa96d747c,3965816953,86267322343186689
+da63463d-7769-0269-9b8f-b5400a508fcc,2452231764,1899974682197519970
+53bc9cd5-925d-4617-0466-f74758af3390,3435223875,11291250921940779025
+f32a4fcb-b184-9b64-690e-6a8291f84dda,1088652728,2055897263970342447
+db8d04b0-767e-61f6-68e1-664ea492c924,3054750535,14726377992851623748
+7d3a3951-06d2-bdb1-9acd-1651a2958d2a,1252089219,4745892088506999057
+c2508dc2-0c01-48dd-0402-e396bdc69d96,2599520728,4954959692661435915
+5cc6a5e1-7546-ecf4-cfd4-6cff57fe95f1,918171421,5584877837634259789
+2d658c10-2987-ccbb-8475-4e410a688083,3524611456,12101268346987822744
+cd99418d-f098-bf8c-244a-cc5f23f093ca,3661532137,17292101736658668104
+044be6cc-9619-a9fb-fe28-9a61cb57d159,2927133788,16702757965263654077
+c654cca8-8778-c342-4f6a-934a33d03667,2106500177,9531687563100754022
+d37a0026-5d30-fd4e-edeb-7112a46df5bf,3504593202,17746609079812588066
+e353d732-49c2-016a-e37b-2d1efe1809db,2277745815,14152038263683214738
+7f3be502-b99d-8d75-9a61-c28a84d2b970,4016474450,955871642823963397
+0905b08e-0ab8-e50d-406b-e2d2fd037458,3696483438,13341630065460724751
+674d9919-4406-7ac0-1b91-13aeca6c02f2,1364498420,17527614617120887628
+ce835546-b807-0c5e-0d23-c7b6f827a451,597559430,7997203982097605829
+be9048aa-7cfe-223c-6ae5-cb138b13becb,2783561880,11874688442275266641
+45322e59-5870-4186-25b3-c14e63b2efb9,1750005232,7275484424110520500
+5ceb0c8e-af70-f850-54a4-8c67f7d0e204,3019279416,15598477836764667141
+b28f958d-44b4-ac64-54af-f5bf1abae16a,3932930269,34891848383717085
+0340457c-a685-bd19-8c8e-56de3abc48c7,173299957,275450141102155384
+b60f3987-de59-563f-d771-c00d598535ce,61179430,1030934391966134778
+30bdce27-e9a9-0549-b85a-241b70627cfb,1122585034,15620764391597791568
+fcf412ab-9f00-606d-3526-34e073b6cc37,2129925683,17433449085921959482
+a04af448-a4ec-f8a4-dce0-09445358780b,883079851,11305145374413502590
+141b792e-5313-9fd5-a049-791ad31ea215,808467817,10832218198165951311
+2821c704-73a7-b357-2705-7354deefdf81,3198283080,8815964666345816779
+873e42ea-0b89-28d1-58a0-7768e0291260,464752355,9510770460947295408
+3c8bdeb6-fc60-28f2-3e1b-ef00ab47b058,4026458401,2820557398761455299
+2e09cda1-ec0d-89f2-020d-ad314651f452,3499153711,10500463236357679208
+7c29d06c-3010-d340-e3a7-94c42b546410,886505313,8392141171595279718
+35bca13f-799c-045d-698e-dfbada79ece9,258308705,7272266209994824037
+40867e04-77da-7c0c-30ab-d48a02873946,1846021480,5463993167205610717
+4042734a-eb7b-2c68-0751-ce74d1a4e440,1780103061,12330412264663189456
+0c601597-1880-e041-99a7-79c688428bf1,614313594,6338624941157291503
+67696cd6-f69f-b177-12d6-d696694ed32d,320328926,16355947803296191778
+dce2dc8b-7f99-508f-bc2c-03685a8831c9,112497818,10536012174538191377
+56f98e69-6f12-49e2-8140-0bca39bc3fb8,4128135013,9647098247210855766
+eba008eb-fd4e-24ae-4433-96a6c5ad9616,763454100,1785841395903251025
+73d37fa3-ec96-4dfc-31f6-905dc9fe60ba,612730225,11021243107600034458
+86a4179a-ae47-122c-ea18-3078b8d46eaf,206341425,13526655330085785407
+aaa79cf2-470a-fec3-af62-b91124d8a821,2446061281,246474994906070134
+9507a2f6-c628-f355-7946-c462a61e7ef0,3707348699,3453019081546815380
+3dda8d59-801c-f6de-70bf-02c41247d18d,3512063134,11481874638860369530
+0321d0f6-d050-1e6f-5b50-02ef2913ba59,2233338948,7666809478277072870
+8d654fe1-11d1-1e9b-b887-a2222677cfb2,3034033743,2613830972343814329
+918349ef-4cad-acd1-6ddb-dc6c09aaeb50,2963895459,17487958362365012643
+253b374d-a0a5-7c0a-1793-593b6987ea95,398362434,1592711060052479094
+064a8cdb-0a87-8ede-34b5-c9c28014ee2d,986221000,9713063962012886787
+9db6a1e1-d18f-8f5d-f5a2-0430b856a284,4138413597,12430255795322344686
+d69f3dbc-e08d-155d-fd3c-933ca3d7b986,3134779346,2406464603240188911
+c5c2c66b-ae88-7192-fb50-84061fff04db,101313494,10083389708194111073
+b50368db-c13e-d5b3-5454-6b344f3208e4,1662542801,1163492692043270304
+93907b1b-455d-2814-7866-4c513552d721,3238963338,4156477629629540960
+3d709cd4-b29a-dd40-1f7c-9c642e92a845,3504404400,8349939000182467660
+6a646cec-6030-f1d9-517d-e922c0d846cc,4274248565,10425510115302393353
+06f313ce-b564-7513-d427-94d5c7637026,1037592903,6928316694274336687
+4331ecc7-728d-2310-afc9-d22123b0189c,3496705565,1695155511867266576
+19ced5ec-6ac4-6bba-e367-1ae483199b65,480534325,14869123741151037821
+c8f24410-e1ac-8734-55ce-0372ad76f7a8,1572095762,4240236179753677355
+da79407b-a576-6eb3-24a5-cefb0875dd61,3477213498,9730084315384368682
+9efa88b3-6c71-c2f9-47f3-b714e96e307a,618697009,4728700564677231079
+0ba1bdd5-b807-9f0f-ab51-4f8ed01721eb,2258628308,9702655547068029561
+a1d3ae82-75cc-3d95-8862-49dc32b83545,1985570722,325556995456508558
+c3ddeec5-d38d-ce8f-abfd-9a90d98fd0af,3135505947,1604866861665484025
+a245bd7c-8401-ee77-db1e-d2cd7612449f,3217430667,15592556715131811576
+c643d6f1-5e7f-c195-6e9e-494f2e3d3abc,2856380616,8703935614841326084
+98c5db09-bdd0-03c4-af20-f9447f7e928e,4283046950,9915900482053056886
+3c7d2f5d-90e3-1f7b-3f8e-36418cd56fdb,2402689929,3106148284031691773
+d4b8923c-f8a5-e64b-e155-725b4fd6f7e1,522206351,7145910612957516671
+85626394-70b5-f55a-4786-476f67078520,4068504250,16455671001127279060
+9a738aa7-ad08-95f8-2b9e-8cb00c682a02,2241993033,689105360766942697
+a675287f-3039-604e-23d4-e2278bc42322,881700011,2043269724259690678
+b51e360a-3b04-93e2-c50c-a53de5b62f43,2724331170,2797506014162250326
+ce85056e-e016-518d-eaf7-d3ba9f066a65,1411981845,5736167514322905916
+d95c2e27-09f0-1144-7234-55bbdf07b0ef,861537362,995668728177332973
+5e9b82c8-c3e4-e6de-8d90-8997838ff241,3745731206,605839370189916465
+fba6b7da-0fed-6d69-d790-bb0c90b09fa6,809138121,8491093512904867869
+9a9a9971-ec93-2c48-e0f3-f64c7328f241,84371931,1760907872984191790
+ceb8fe6a-dfd6-59fc-5442-50a4cfeeaee9,885593265,11835723243068792204
+4d91bcda-ebb0-516c-a358-b6f38b408dd0,3381464182,2679320017723632042
+d0c2d026-9ab4-a686-9383-cccf1cd16d41,3409221184,10264657332332778541
+348a9b2d-8616-c906-9f92-89f116664f12,1858254106,10488484076763193216
+3873426b-0c31-d86a-1191-b657e4f89817,928894565,3791768600112150842
+8794c67d-4d4e-baec-9edf-dd14c6f83f9f,990677021,17709904084239241451
+aa2fe75b-9067-06d5-c4c2-8294ef60c858,3937586436,11824170858490020983
+6741f4f9-47b9-9a2b-1bcb-bf2d33c3f1eb,463803308,1177084079494156545
+85574c96-6074-d02f-58f4-de62c68a250a,1291859283,9070926007348786187
+45743c73-c784-833f-40ab-d6b458e63395,1166593422,3498920659206806467
+43225ca5-1690-5740-1526-e07cf50ee3a8,1449387361,11543625284471875291
+66d61515-3eac-6989-e924-a218446a7f9e,242320518,13682662657696562186
+33dc2a41-9b42-1e88-fa5b-8fc01b522bd3,1643886988,899377723314096991
+2e481c57-1077-23f9-1bc8-6b3e89e3434f,2593661794,7874688139306254785
+f3a40f67-4edd-fdfd-3a6e-1440d7e1d952,2227929511,17596872364443484192
+8ace04b4-058e-e893-24e5-f42440ac8cb6,723868829,8870460036491716915
+a4395238-dc3e-60ca-3080-1ecf24dd46d7,3316105829,17345293400565666765
+5224bfd8-4d16-899f-1d58-3a605ea05d20,2706956695,2853151132744114549
+3f25da7c-adfd-ac48-2979-d2a91c690e20,1080715775,12103457430653779077
+98f85ed1-acf7-5d87-e635-27cc4dcfc6a0,876159901,17059657489265048996
+e29d6835-fbe0-7590-dbc8-6bb09d63cba6,3467606675,12472171212808375714
+ea21f512-0baf-2656-e299-5a498bab5b83,787435307,15457903265338127599
+0b096e20-6955-f4ff-13a7-0d7f3f16ad3a,2797659225,13334281181405471168
+a3124008-c189-edfd-9f36-2aef28db4b71,787892937,7207669298610106553
+ba10191b-6e85-dd3c-8b49-0e1d5f8d2ebe,2548907681,9583335076827792881
+77b1c7e9-de3d-4eb4-d277-e24657323517,4060881799,997703766859416242
+7df8f52c-cbfa-b2e4-d21f-48cca2fd12a3,155430044,2278675256410752182
+2ae5663c-8c29-3ccf-d08c-4d3a05b53ad6,3411757111,10944672722598548848
+a0c70ac9-dd5c-c038-990f-21c90f4be888,523420198,16614113186957462222
+1b7730c4-960a-9605-013e-f68933172103,336742673,8009650218590719545
+ca2ac30d-3ca8-2a9c-b83a-19b597c7dea3,2410616804,1174133935216998700
+f20e5799-7f45-ec94-3a89-678ba2f12d8d,1109028711,11832952140939782394
+bb1a3b33-8aeb-652a-4f7a-675800cb43ca,998558260,13252046499925785649
+e3159a69-48ce-7f1e-0cf4-3c065a022796,150372231,12682228207203108341
+291b61a7-4628-6727-9b35-36d00535eacc,3605063377,2508074381329990988
+71063596-1366-9060-c1c9-fe30ad7d8b17,3436831530,8582647263607242175
+1f7a83f7-d2a2-2cbc-7057-56d49aacc60d,1668121308,10731762044908986521
+01b3d0de-a2dd-6842-48b8-1075e99a50f7,2591371544,11511257595938063754
+c20da11a-9755-c6fd-3d89-2213be79e66e,1526453897,9726767894103245018
+34595e40-a47f-cfb0-5af4-c64205d1657b,3334247064,11649581304584602726
+a4fb0323-77f1-26c6-8a06-e646937e95c9,1678636264,8344927646857036582
+b1897574-11b5-2851-1688-ef96bd32933e,2937301020,1750012339095915101
+d0031d6d-c146-df45-dea0-593e7a1979bc,1619129895,8235184637622896439
+92f8b7d6-80b6-5f21-c548-bcdef177d716,3354663060,13716205727905849859
+0b5b547f-bd90-ac19-dbe7-0ea8b0307712,2928758094,10424723722693352609
+25faab08-f5ba-1a61-37cf-050f12e7d39d,96317487,17505233508757179337
+fe30352f-36c5-e355-982d-16c5e519f20f,2165810313,7747003674459727960
+f6b92d65-5b30-ebc8-306c-5c02ef6a7c6e,3679143011,16406439195734684003
+439c46de-d3c8-7799-5ba9-7aec546552be,1425456553,16828182965250502678
+032c4ad7-f201-7110-ce4f-fe83864bd47d,996103584,16687820313017659061
+e14332d7-ba2e-abb2-dd99-885fa9f47c19,3740277406,7187841325614695558
+04fe1457-009e-2bda-0ce1-ffd9dc33362d,2833385999,12527794739550249432
+7ddd913b-f58d-e18d-c86c-0725021fb738,2362289494,12751477864170109814
+df032aa9-a9c8-3897-8a1b-1e00a05eb097,221720573,11827540356713211550
+6b7a09c0-c0f7-30b2-ecfa-de3cf6e17b9e,3357787484,1131490126450166294
+b928f594-e220-2554-84e1-2662a8ad781d,4093787625,7843125280002012700
+637e2819-14a4-27f5-6a80-0fda8b098feb,2356738460,7519101362735931885
+18ff31f5-311d-b4d2-6999-a62b2cc13b83,3879500939,333967407474227917
+a58fcfc0-f34a-a14f-c956-bb9d66c128a2,1568029726,6661848888120759096
+230b280f-2dc2-0d6a-9aa0-ebb66b778bfe,1214586220,10056095263255312999
+cd960202-5d3e-98d9-7946-d833c08aa2d8,1441130654,1595943793775930916
+124df5b0-fd85-01ab-05cb-200c4c6d5141,1874285153,10218286301600303188
+f1029773-1442-7d8a-aeba-fd243d41bfb2,3910907227,354254020977809436
+02a3e28a-4c21-2596-6baf-72e3bdf4de8f,908979836,12372729231955732310
+6cd2ae59-9381-4e13-b9c1-bb5a422b46ae,2868506518,11503652240325959956
+be9223d6-e7bc-4165-7bd1-22b0f07f20cc,851677571,2077284404953792534
+a606c574-58d2-30cf-7e8c-d263e76cc9bf,94294696,14543608709758836920
+ffd9a445-725f-e749-f2ec-7e56b0313cea,837596239,16321588930899506976
+bed18dda-9b13-bfef-0e92-5c6d1f0eec24,264771260,7027030431866550043
+f9a4da98-8772-b1ef-57f3-5f9c3fb24151,3488470996,14698851019689307111
+85370588-0fb2-e0b4-e612-ea1a8fe1e622,3613869551,16858947491046342015
+0db0dd53-fc01-3a01-6bd1-b0618998dbfd,199434407,3775173411116860473
+a3cb4d14-13aa-5400-297d-89f4261808f0,3213041838,13787037829350361362
+ba0dec75-a130-feb2-0659-312bc3099113,2001912154,6263368699579088728
+c03600a6-2ddd-9f04-b3a3-6c89139816cf,1824893867,10654468696674965463
+b191dd90-c1f6-5f9e-a80d-20311e17c7fd,3340834380,2886325678020939563
+cc11eb64-613e-59c3-13ce-e874ec715d29,326869788,14694745635135559242
+f361c7be-0113-0d7c-7116-5a28124ea850,4012521885,15881796879048890958
+4445732e-a930-9e52-14a6-f7216270accd,1450327831,4349440758204757374
+49e551ae-e757-8f71-1772-1381c6cd7964,1182780175,16086338429698538269
+9d28c0f6-d51b-a339-6082-a535a8e903d2,2174183561,664121661118958363
+2cc6f179-c8be-8d54-1eef-6fbff09c976a,1366226130,11749916882323036733
+37f643eb-1058-c3a2-27cd-95a1d0fd5a4b,1546797480,11246952382811150799
+4105cd05-64b4-daf3-4125-ff283ab170a3,3569770601,15005636476595314412
+0e12fe50-796a-e3c9-a67d-e00f1196f26a,2052605023,6578643110509233420
+3b22810e-cfb7-da0d-995d-868605bd5e80,2661193302,505664282482474101
+7f712260-5bbe-12a8-3a15-03e7ec413c80,1702109866,15511281574669206258
+9f220451-e3d7-905a-f2b0-dc5a2c9891b8,1487186516,9987639575183567934
+86e9c25f-6bc0-9117-d18e-b77f5bd222d3,4022869125,7066163610862357754
+f2d5fe00-d5d3-efa9-7e9b-4acb04c7433a,1149202300,17969353578246382801
+89c862f9-6747-7585-defa-10e82649f243,190902286,3775284980939155240
+963f6b2f-8396-1c80-d775-db0918f467cc,784862586,4646623915844516895
+eb2d79a4-1001-2584-373a-fe0c1fce71bb,2916515393,6054978110331676892
+ca38209b-2e3a-64a9-2a56-0797f1fd8272,2859746616,7398455374237342536
+a01d4648-3718-223b-dddc-c4ed9db422ab,3272721225,1040790293881778496
+60367a25-a356-96f4-3ac3-93c160cbf477,2329086488,17196863215000161968
+5f9cf6b9-97e9-5086-13b2-16606a5d96dc,3653963365,14295303468454580750
+5a657891-dcdb-d721-5544-a91c0103d9cb,133748720,13373661928847261880
+ad617739-35b4-ddb5-cdc7-7b1e03900bda,26752898,11355129206966140470
+ddc4d7b4-cebc-69d1-51c6-c71e95d0d956,1149030457,14802759290610471256
+f249845f-273d-8252-949c-03d1308bbefb,2432114250,12451375658683749090
+603b3bef-042d-87ea-8236-e5921dcc9dcd,2101399502,2776973362817354852
+3061c6c7-352e-b939-2bc4-4c02df3b5055,3518324167,16554407474628135307
+c722b7c8-47e1-dc58-edf0-e77305c048aa,2773159662,10850394863729992470
+d3cb0e2e-1fe4-273b-269c-7cb5960da904,3420805979,12532830600676392685
+a5a080c4-01df-b277-9e9a-9db77429ced3,3042454274,16792821562682009032
+99fe7a25-ccf6-0d6e-c1c7-9dbb5914ef07,492125450,13156157141467071325
+e21e7a93-b246-acef-b24d-a3f1b9a2f948,4029517007,12335548962072076671
+5a5c3c75-fdc9-2eb0-d597-7c416c75ef90,1271805547,3692434671524707670
+572bae7b-1d12-89e2-983b-df03b6213753,839070313,4407296819386265212
+49be1b79-2acc-49c9-378d-552d3128f3b9,1580589059,2403977750855316464
+0046f34c-038f-7555-737a-04fb27d50f29,3297214233,18190248975742505511
+80606456-b737-3aff-8ea4-ed4eba69029b,454864522,18240075604404510286
+a345b6c3-9445-c496-d979-b8692b3d83e1,4136638354,12342263470356920640
+445c2427-5271-0f69-024a-1398bc0e17ef,4234655630,3933080145285972033
+539e53a9-186b-b4a8-ec27-c729608a07c4,2165594826,15880418521552090984
+c3f8bd6e-86d7-e6ff-b0d2-dcd4a57b33c4,128082984,6312155522214942808
+c65b3b4a-98c6-6996-e3b6-62faf17a0346,3115815891,17211889277950105112
+618c49d1-4d9c-ef14-88f6-1b1f6b215277,1984326310,16215719036622624802
+23467588-1e98-33fd-9396-fca83a2c4ef9,2812791731,17929488049223844427
+42e907d2-c566-4aac-adbd-4d8854bd433c,2730302855,2614008544765785887
+f9c2ba53-e22a-8244-7c23-c9f83be85e7a,1226558571,8035611993553587786
+4be9f58f-3b30-57da-7387-acfc54e121de,3148655571,8366205753500060000
+9c132b3a-2ed3-85ff-7a39-81ac14163015,169408999,4349517061427651995
+04f30bd4-43cd-386e-529e-4c597f12fa55,1314843550,3604100483083694517
+c248c62f-25b0-dca9-804e-6417375eac06,1061853413,18206956127563653024
+a1e169a7-108c-5db3-9f01-a72e112ceec3,3262807191,797244853612098838
+2f7d25f9-1fb4-1106-abf8-21dc99b0ff7b,1969955767,1021721053336502532
+052833d0-a13d-721d-d6ce-347e87ae9ed6,1843733765,16306764768320616331
+446a6bce-c22d-3f97-b082-eef3ef6fed89,3553768567,3117873262378281238
+179af9f8-4c5d-f4f2-c1e2-680104e82fd6,629129514,965571204655455631
+24abba79-569f-f024-d7fd-e057347b5547,2111803861,16599380410648564496
+1fe856fb-fd65-28b4-ce48-076812ec389e,2377397404,515554581774076527
+f5440d43-2a32-144d-614f-02239fb21a8a,320131595,12346720674299127563
+a4158aae-e6c5-3244-d417-e97985e42aa0,1223278119,7084469458155002536
+4a938986-4a4c-d804-aa42-737f88eb76c8,969193816,13449792804320071573
+eb317973-4eb6-20db-3b9e-ae0bf5ed97a9,3631024253,17846892048322083435
+0b1d09b8-1199-3ca5-4c5e-a83dcca087b1,3673456892,606034743550315511
+4de1bd94-5b3e-ba09-be3f-fa724afd1ba2,1208433867,13188560899282111037
+2edfb062-3d0f-bef8-b658-64f42f65d73a,3679481068,11464971486370172766
+c56dae7b-53c0-70e3-4533-7cfe153b69d1,1910243762,4020088364294781049
+58120cc8-cfc0-00ef-e3d7-edaa8a0471f1,2032245461,11832858434299802955
+68aa8fe0-6ad1-33a7-bce5-5b9171403d27,3444724108,2999270323894205090
+cfe21e6d-3c2b-d5b8-d072-5c035489445e,2191704147,16450554771847773053
+c9052f0c-4a5a-5143-a7db-f1112b821076,3411102753,7464370138339547470
+dc81fe40-769a-a19e-19fe-d175570ec747,3086305104,17476645283550335617
+b0e14505-2105-1c3e-7cb8-8365ea61dca2,1327614207,11789509162987022715
+7a29b0cd-8cd1-14a2-3534-1b7dd953325c,363001937,8025445773964446632
+c1f81e8a-a66f-dc2a-864d-6914f62d84f7,1524171793,16333887786341599008
+8fe18b62-57a8-64ba-b6b2-fc9f5f6ce825,3049377764,4839725675018889298
+feba087e-c46e-96b3-f480-307aef7f19e4,1300424010,825122240701271251
+6619c77d-3479-cd98-24a2-9cb46708406e,3792258482,1351994318703538960
+33f23fc6-817c-93b6-8202-63cd8763b6bc,1410416942,6890195294542594533
+73e81b93-4602-54b0-7fe3-8e14a8c4f441,3571822092,6135754221373206373
+5b61fb57-2c03-72ad-b02e-1ff3754733f5,3671941415,2227041158378685853
+be1b4238-3cd4-2d49-f1b4-a4fe93e6f6ef,832729859,4105270450040150325
+6f2658d2-0d4b-2ed1-a572-b77dec076412,2407304194,1626576962099374039
+194f2218-852b-4535-4224-d15374fa1a07,273149573,1652516682981021838
+341317c0-b058-e611-31e0-e29507ce322a,1891015107,8071368829052400835
+f4b939aa-cb23-404d-7fa9-25223f31da7a,4272575181,13468362998352526987
+74f4f564-0450-d497-deff-a3ecccb7592d,2348877044,671937946959197386
+886cf8d0-156d-89cf-6796-db6df98daff4,2834533450,5587814630373276345
+26141d81-0698-0fca-688e-a89cb458d47a,1957995714,17037840050973799764
+8720227b-086c-0d03-85c5-f9107942d380,3160077084,12146218728063081025
+b5c50e18-de46-662f-9c5a-62a2d9701ff7,2269704295,3868661656990592103
+678136ee-1b4a-814a-2ebf-6c3b16a079aa,984730780,14501163205196642341
+c37f2109-87d7-f8a5-71f6-6b5f9784cf15,1504309354,1159710723988661071
+21784c03-562e-3d1d-80c4-43586a7085b5,2826259453,12558640468371002159
+e0f45bb6-167f-d91e-47cb-3713919dbbcc,1098362950,14442744981385470812
+c8649285-167b-f168-b340-7d9b75aeb7bc,2050824941,5525182099156890331
+05fe7cfb-ab91-d92a-4b99-ab5592adcaab,380687873,565034558267833959
+e7a49980-2f15-ee50-eaf3-953f032b62d1,2591904267,6463547710262909495
+c46ba620-74a5-d582-c628-9329dc89b849,1566748670,3314355321566607064
+3b470041-2107-3503-961f-35b139810731,807700520,7354783560372771068
+b453f438-73b6-a4af-d25f-fd93e578ce70,4166000511,13020297530456305129
+4953ab8a-022e-83f5-6072-38f453156efa,3525340474,3079722553559357493
+52acab28-22c1-3b2d-4f04-6da635ba205c,2237674021,13979403171778346136
+20b928a5-5c58-26ac-90f1-e36c7119a323,1169987668,6931726502708244453
+4d4c44d9-b7b6-31d5-136d-d6328a65d3ea,1381848901,12217708963588169649
+75385290-d510-e5b4-55a0-a9964d3d5380,2199038017,4711124372318017011
+742826fa-7b34-778c-5241-26cbe15584e5,3037154262,10455982223531238482
+35a5b0f5-cef1-c512-acd7-585f3d43001b,2173957646,15119296206140342852
+abfe4ba5-b0b7-76b4-4eb5-be412bfe8e46,2890707708,14449485847956958677
+7da58bf4-a723-b94e-8345-107f62cdf937,3623829023,2202292185257452237
+3de0061d-2ddf-11e7-c563-b816c3f07b59,3481629162,15300618553003190976
+e404f6e7-ea3b-223d-d50d-d9e34344e509,1446878437,16875383257280323609
+c2c665a4-31b9-d5c8-3c49-ab8377695fcb,4131431032,8844482344034099488
+37ead198-65bd-0033-1294-40d2097da82f,2201676186,3006737929131923407
+b4ac7881-3e41-170b-6fd0-8558cdf5af4c,3245288656,17588821651945101352
+a1f18067-40b9-2bf4-0015-ce2a9a22a2c0,3888620222,3477760272502311959
+c04c297d-8ec2-e83b-70a5-4f28afdb1439,3778581779,11054209457128283109
+f13a1419-a12e-8829-3c7d-a3d96f80f74f,2175426582,8413265378033510964
+1a116ce9-999b-2055-bd8a-929761fb12a9,4204368981,11925293518778829475
+03007eae-2e1a-598e-95fb-8ebe4e5c3554,4144943257,5471208288065189056
+3b0cf22a-3df9-3b91-cc6e-4d736a53cc4e,865362626,2427640326491645390
+8d8416c1-b69a-204a-80e1-c02111867608,3842403290,7206622121128793830
+9fa6ff90-6c0f-9101-8c86-ec46220bb7cc,1518314858,12625179098433200765
+e198aef7-62ca-85c2-c6ae-e54953ae8392,3149003101,4093156111995456570
+b14eaf5c-8601-1c8d-c11a-376a0a8ca6b7,2696866103,2641905331507609956
+828fd1e4-2467-ad7d-aa17-6eb42abe12de,3839845136,10090556781279025200
+586c0789-ebf8-f428-7a35-81d8832d2140,3822705561,569299680132297648
+7f7504c3-0e71-5f5f-c0a4-9991fc09e306,3155241213,6150908869016112919
+cde57dd4-1a78-5cfd-e075-8a388df37167,571407681,10614054514674191396
+60fd86e5-0a07-ac4e-6927-6b9d268f37a0,3724977189,6554962443305292493
+9ada1bdd-7193-300c-1a7a-a714ca6f93bd,1250265845,8668872812660505992
+66e9367a-40da-d98c-33fc-7396fa061aad,2770146414,11792388880102399176
+86bc021e-a9ff-abae-ba4e-e8d33797e220,3509716341,8535013545328651198
+f55aa51c-63ce-94ab-2716-036baa8798aa,3371711364,16883646056508768588
+8bf09e30-ad1d-8734-feac-2e78c23b273f,1596027533,13777018839675966985
+88285d52-f905-660b-8ab2-ab8db6c75af0,3830948456,4713908839226637531
+98eb9d3f-f2d6-b888-2fe9-26a0fdb1bd99,1525746526,16171014952514354752
+c9cf1069-c772-4daf-17dc-003f8bae2e2f,1771306366,13854286036265312581
+5267c3a2-b635-8b2a-c65a-cf0edc3a3c46,1883124365,4499812912409763595
+ab4738ab-783d-04e3-a545-478a04cf4737,2603829350,2827267854329562559
+092ae2df-b96e-4bed-cdfc-2674720f67bd,2578981823,15867372249390978240
+17b66215-86bc-34d5-e98e-4d58208c763d,2787176504,15244703242825898591
+9e3c1a13-8630-c375-745e-a0456b9b117e,3754846985,10223030731913720620
+aa966a03-0818-a39e-fb74-0b163b26ad57,3207177499,11967822246775016046
+8b3fe7fa-4c81-3e09-dbd4-61d93eb88f95,526191770,9346050273418142285
+db264f2d-7b91-6f32-cfa7-c3064e9cbfc3,1875147330,14541160486145710632
+94dbe53e-856b-f708-2fbc-2d9d4ada38c7,4035038894,15223817147608165167
+07bdbdca-de26-d465-3811-5aefbe2718ab,319472932,14171606458179814600
+60eb4a2e-7f11-047f-2b14-b4a2fd142881,1501566397,9898596683717014797
+b3d26d18-74c4-df5f-9542-91eed9904cbf,3348348028,2497625446719369161
+148dc29f-936e-fb10-e821-a8572a068f27,1831706976,10805916049140816797
+2cffcd64-fc93-0669-663c-32eadc5892cc,2390797881,7267779818976269688
+c65a7a4f-3e97-a80b-ea58-57a374ec1263,3799087423,15272716480078456139
+03d218f1-340b-1a79-2ab1-4f48b8516f05,2766115734,16913806474856589536
+1ed54b85-deec-d23e-1f72-77f8faaf1d95,53377714,9115077396585463316
+10a97148-770f-2655-9c8b-35dec0970860,2417235780,18218513945091524545
+ed8b2583-12c5-6b0e-1ef8-622ff48bcfe9,3989990695,2474258841366641501
+b7ac6f18-3fd5-b0fb-34bc-015d53d9ad5a,2794641729,14635589764287056296
+88a7baf4-1860-5b92-6c3c-963a7b5f0423,1646058993,7932773979860676012
+3bc57ef3-9247-9f56-345a-b9d73bfdbf4d,2469308804,13563644289125286817
+6eb8a803-b8a7-05ae-f148-da0dec49b9ed,3579302520,4866367936613766898
+fff21ca9-f331-e0bc-117f-b54679721f92,4104234591,1480697532150997369
+d33cdea3-4468-693f-845d-9a97b87d60d9,3745999342,17231330164624374710
+c5f210ba-9a73-8fa0-807f-18df0e7e0108,181223634,13514021345375474928
+d6c46daa-829a-5217-cc51-0cdb46d419ce,4189340993,4225316045366247250
+52511386-4353-cfe8-e289-daca2eec8cce,3229569897,7714164258015753322
+f7291fc9-0812-17ee-36f8-4e4de30487df,3077991987,13809540454820600837
+8a1a144c-23da-70ab-b1f3-52d4c928dab1,3693675503,619702332718865306
+3f6e6e67-c6ab-d194-2dae-dc1062b06f22,1019494355,13001682099750983415
+d58bc3d4-aa3c-e3e6-e0bd-f685089a0ef6,2369646119,16855687143907692940
+bcf40918-41ed-5851-7685-08d1ffa71650,576112461,16244261976486540492
+58f89d8a-a50c-4706-5fb9-53f3d564ee0f,526513099,1434932685537443364
+91d106f6-6d8b-11d8-65b1-8632fa8d0514,1618279153,5402393528174888480
+c7da696c-7c49-42fd-2fe2-f541124190cf,2477284849,1740803264200745914
+477f243e-48eb-57d1-15f3-29b55f127ca1,2169764855,11685204285678960058
+8f0ecfa7-923d-aeb5-b971-3fecd0fc3f2a,173755956,10601867350681900191
+18e4c0a9-44c9-94fa-d727-e4225619385b,1689110819,15811696310941487791
+82654550-387a-9537-a4f4-40a57090aa81,2571007863,695990288368738459
+1c303dda-246a-0d5c-6cec-123e35555b60,2532599176,3888166620298620236
+3a7e30e9-c833-9bb6-d5c1-fe0560ad52c4,1791706964,9732244823983415718
+919fa9fe-4e85-e21e-9530-80d67895107e,764754414,17121491133929892838
+9c606249-c516-4df9-e54f-fee44fb3d434,2760520626,3204631252714621809
+76fb44c7-30cd-1f4e-58e1-8af180d4df8c,1702957484,2921344339719644642
+87c29c78-6fc2-3ef6-b554-a4318fa4b0af,3669846051,2831073622517438562
+7f5d52fe-e490-65bb-1e25-8c407bd9a83b,1305944149,12656210746163601257
+952845b6-f799-f48f-7099-54a40f2cb2a3,1045792063,17048274857666985252
+1b4af856-38bd-a4c5-27f1-0fe3127cb44b,3878095099,4845376370007456544
+263264c9-5e7d-e504-499c-479994fcbc76,4036100506,10898553929052517324
+5d9035fa-01f9-72aa-4eab-6271b4b0100e,1608333140,5802524895569212474
+4cd6b657-3632-44d7-a083-a0377d965084,3646027203,3619438300772503571
+2278b3df-6695-a9d8-fb08-e41a7a8ddd46,4047276527,14336652885732407868
+e75981a4-7581-5acf-384e-26ff284bf3af,485519856,4433422487017210075
+1c7e7b47-26dc-8f10-ec21-9b226f5f657a,1195222688,10302096659857732406
+656a8115-e954-7d8b-2985-e05acd334a36,70775257,1240788223851327781
+cab974c4-76f9-8d85-9cdf-8c7486656920,3656652600,7613246580804968995
+0f6b9c8c-fdcb-5fb1-2ffd-692ab195964f,304961309,14004805130635736180
+22d65482-798d-34ff-ac99-8595619ad816,2863140560,13050791629613095823
+1770f183-1e9b-6602-31c1-34c58351a8a9,3244850210,9623853697229907224
+49369399-1658-9287-6202-e0b3a705ee9b,3062567870,16360757941436094900
+a640afb6-7f15-d644-771f-0a4e4b21f1e5,370126556,5564009233648926524
+c5ddfa86-ab66-5e05-6eda-dd01522cf918,1789267992,17138967811126114233
+02213842-d30d-da5a-fa81-508b5f1022dd,2260152551,17566338232529096925
+11a3fb81-8e0e-7f2d-efee-34e6fa8c65aa,3580244943,613149034151518959
+8c273ac3-38db-0296-6f27-4a116b6a4378,2531707079,17037490605607792985
+cf936d61-d31e-a6b4-77ae-05e93cac7980,4011335707,3692452884469708664
+771504ae-1f31-48e1-c126-91b36d640978,3452330769,10913804134792902060
+6a2df81d-b215-93c5-deee-7a0b3885ea87,487011443,6751873624959100273
+e70b8877-6346-64c3-22d4-2ccd347962db,905573395,14013082332656032363
+88c37063-daf3-9c3b-bcdf-eac7af6ed0dc,2765347322,14999394864305467417
+d9561a43-a376-4050-9831-6ef0654c296a,1791928135,10142963579975854429
+d78712c5-9155-00a0-5903-e9c36e545962,4052295525,639980124004678657
+58e849d5-7f46-ea32-69c0-8453491bb150,387959049,3153845559738504748
+f485fe6f-2c1c-cb0d-a2f5-9fce6df40b3e,115907454,8434516221832654024
+36e2fe81-82e2-e500-38f1-ece9d3109489,3266698170,2733442607315260784
+8299f3a3-b04d-c5e1-d1d7-c6f18f6985d7,2896306833,10246521786794659482
+92bc6834-198f-722d-8ada-8907d92713ec,1453276330,16471222737901033891
+6b409573-9102-80af-0f22-b67ce9e41d34,3387950150,5667379880962548320
+d8117924-8504-9a12-2711-12ce99e35f56,3428853401,7959965779373735711
+2e9518d3-dac6-3590-577a-97b50c2fa9b3,2403092826,9284324441069775630
+e15cb881-13e4-2ff0-a305-58758e295084,643792056,9649472200055631967
+0c176096-a8a0-33a7-267d-3799801cb4cd,401616847,1729209592749505182
+4550b1d6-c5cf-3a45-fd6b-b132682495e6,1080577831,4697735508655223717
+b2b9a168-7467-8869-1535-ef95d0d54f6f,2009066855,2630401231340230
+0527f78b-4c2e-fb09-6890-4b0862b3c826,1473983637,17734891102395329509
+2f617074-6791-f03d-4a60-be2bbc779e02,3970881595,17344181108973540154
+9878af44-1c19-eee4-a407-42abda260192,3103761125,1087451682856912889
+d671d5a8-5671-1af2-99f8-1536809d56fe,1401409529,15732532478795738832
+e735b78a-c857-96be-27d9-054fd28a0426,135451855,18234027333778931584
+82b10ba7-d775-d666-5351-4edda86ef8b8,3528671557,15012682725781851400
+d9afbcb7-7e00-1b63-2fdf-0e6213f2d151,2572939621,2039957887567502695
+be822b29-65a5-3f4f-5a6a-96c7d7703f0e,374143526,3319053814720104431
+92274275-091d-b8ef-b1b0-7dbbf6e9ea9f,4270809670,6543179939326711545
+e29de7ec-ed6b-39e0-1d97-08edd7f4143a,313402945,18383476935931104483
+c936335a-ba65-b9f2-94b5-53bd76b24024,3199535185,4812049770160942085
+a4dd2ab9-851a-da4c-3785-5be27477ee0f,634423745,10003178371196007584
+4d1c3996-28e2-0c4f-3445-003a3324bc1d,2322459753,475671915124818788
+35a0518a-4ae3-249d-83b0-b57439b5d12e,859870046,5182115299082439017
+f8aed7b2-329e-f551-8e70-cd1928138da8,1162937549,4230937289437016391
+17d153f0-4a3b-0837-d897-1f3b9eb48280,2880067098,16958575695598714666
+077fe65a-4cff-4df0-cb5a-d6abf154ff96,1451604526,11527780626782327087
+bd64f7fd-a44d-096e-135b-849318acd91a,1874011534,14824653918008885883
+709d4b3c-d820-cb7f-bb5f-9f215744cb8c,3242850791,11263189150211525069
+fc2f4aa6-8139-dc34-1581-d067ef3974f7,4280378686,11263852521069362107
+806b63f8-bb45-4018-e60b-c445cc0dc6a9,1126965941,1102385480004379494
+a1646869-0fd9-1bf3-fce9-26bc87056629,1971874908,13591397129721765513
+0a9595a5-3681-d4ab-627c-19c83e555a1e,3556156973,12455806725018569175
+7dca0d9c-f97f-5c85-56e6-8653ee36d038,3924488878,10829433894846582415
+c7fdc951-8231-ac7a-5098-1f76cbd1d2fa,4140890056,3925915171365377162
+89e9ff9f-6eb6-dbd7-b1ec-2dde4e73e83e,965001641,6886011059111658942
+3de3f9fd-7fc2-c6ae-2439-20bba41d888f,135803119,14468752467884552282
+da2a4ab0-0193-1a54-5e9b-851e61666f36,2662426948,17757263216513784351
+c8904fd1-6088-7473-2e42-6887f634c197,3825218107,3518447407010874732
+7de2243a-d147-9abb-a306-8884d9d0620e,265933332,12459797994361288343
+dd5c7aa0-dbef-73c0-1c29-754e426832b3,2502609732,11146408271073537049
+f754ff63-1836-1650-bed3-b373e7ed3df4,975036932,5816899167122362670
+7d4fcf50-5798-8791-f10a-f952f588ec5e,701040,10660034727718745161
+672df6b1-343f-336a-cfb5-c29cd83ce734,1612193049,18304126062724498932
+3f536fae-2693-0ba8-90d7-9f539f1222a5,1517216143,3775942292329850712
+4c765da9-22d1-0fdb-ea91-27950ad60e94,554882884,16272717755085634135
+7a3f36a6-8911-5965-ad46-c29b2edcfde7,3818374832,8324449385708765393
+05a53c3b-4159-751f-e2f9-9f86ae960ea4,1399038773,11313586947649379417
+b8b1e6c2-9c02-0eed-2e5b-555be93a06ac,524111269,12684350279485911761
+3d7e22f6-cb80-6bbc-f8f9-103bc83e9cc8,1195642973,4001085275282655921
+72efc652-b00a-6c18-3d4e-8fdda1432e4a,3471524046,4617510127191683639
+d2d87eb4-f6e0-5a41-3dc2-9d5a54f1ecf5,2879907315,9326575834227862022
+352af566-48fc-9a24-53d1-cc5ac59fc25b,3175659792,2312094192204394762
+d983784a-a3b0-8ae4-0287-05831cb09e27,1455996555,15358754810076260391
+ce061733-c742-5219-06f1-d8a5d421395a,4277170880,5901670977826044093
+f4327a90-27ea-d11f-5b22-5438c5fa89fc,701008900,3993333976140978737
+25e4e7f8-c5b3-6d88-703a-4d596bf376e0,375097395,5925534356877172481
+ed584dfc-cbd3-adef-7a31-2bb927cf607d,3770074191,2990074384615408835
+58291d7c-2337-b089-731b-ec123032921a,720852130,4614396174861271240
+ab1c1972-1c57-4868-b8c0-44a419592796,2049379379,3590112062316491078
+93df5f50-00ab-8e0f-c811-0f216b1d12dd,799540782,2827202226392087483
+d5c8ee04-39f5-1168-6c1f-b0880afb3ed3,2019789071,9060667992745922304
+d76fc6cf-2018-b17f-d125-3be5108c12a1,1649660302,6394637797500291103
+83db6a7e-04b8-49ad-c3bb-de503a8a70f4,3452900025,12466348064683306178
+40ec8ef5-a891-2f2d-6093-1a22f811de45,4130758696,13233800356060273887
+10e91477-f963-265a-adaa-142f98a21a06,3274956719,13675149130291836515
+c6b0a6c0-d882-7331-6912-f9a7f6775f7b,2929566292,13822298885837527034
+060fccf1-9503-21d6-d44d-51494aca6baa,765912672,16437819567031281349
+2fbdae7c-e5a4-b961-0c1f-0ad61d0ffc82,1858181800,13621577842466301708
+2fe48df5-2adf-767f-b1e9-b835473f2975,4039825190,6621582145791662423
+b6ccd000-a257-8f8c-1ff6-35a6fb9d37c6,2466177696,1355990897020600947
+ca1ab2c6-3966-efc4-4197-52bcdce16a87,1454404174,17552316879064828593
+713d8ce9-7791-7188-d103-ae42115bbebb,753961141,15526650948472824822
+23ffffaa-5c69-6a44-34f8-1dfd44bd34cb,1374678644,10733671620356636384
+238d4595-c7e4-a026-9b47-6f163f697ee7,2208033330,12881197180013520301
+6a4012e4-4311-b51c-a653-4e8f1e653b91,2251665546,1501210575273587811
+8083fd4c-1946-2060-e10f-b3ed51e134dd,3934428727,13755476234741598744
+4bb57a4a-4b02-b22b-2c2a-a59a7ad4e857,959193341,16684507490468387211
+01657827-2dfa-5b68-8305-de8c70db6a7f,1926865546,11509542047459917082
+e6612e63-7d2a-5754-185d-cb95eb46c181,2534975528,936038784324979768
+6f9108ee-0d35-365d-631f-08136863ed7f,1575772014,1461859932235039339
+962a4aef-ce80-19c0-775d-fc2fc1b2850d,4191166979,7518450978135287609
+236a8164-991f-cfee-6299-f7282027af2c,2862367642,3840883903973558712
+7ebcfb0d-63ad-24cf-85fe-7fb9dd04395e,3328359418,5236867224942733312
+911f3d93-d27a-4f5b-6d3a-1e4459660e61,2293341335,14867464260692259101
+d529ce39-64c3-7ee5-c7a6-e606aae4f74d,2250876539,1899368351368033769
+c893141a-56c2-a1bf-6d18-6e6e4c9e0929,3637713269,15000178210489172071
+f3865160-56e8-3b1a-6cf1-212a0aa9df88,2988768251,17859153742596579097
+5c2fb444-6805-f856-9d6e-5cd7375df749,300318622,13267490073165833529
+7056465e-2fc6-8126-16ff-abb3b36e3a4b,599199289,15979510150702953394
+ba78b8e8-a8f2-eab2-50f4-a3bb0136b9e7,1761488314,8000919052925567522
+eee36895-5594-423d-684e-5a7b841d35d9,3872837830,17254574684331411870
+b6f28e7e-68a5-92bf-1809-86e6e8927b1f,2805641239,2372426023838195869
+9c902d6d-0a69-014e-768c-854569e3fdcc,226620126,8332307974244269067
+c5755a7b-16f0-9aba-e9e8-60ca4606c360,209697131,7446645296260427714
+36fe3955-9e84-c562-db30-c84024754a89,2947798064,2019201368045525987
+b035f8a4-17e9-e769-0570-17705fcaa747,1829647722,17706888656532374526
+cfa20833-67ca-dd30-66a3-3f615d8346ec,1233119692,6097340653228378036
+d0100bde-f175-31dd-bc6b-f5df1392437e,3873272813,7612402534097877604
+00699820-d2e5-98ba-7102-12b84299d39a,187191477,9737424303799628713
+82144250-69e7-1120-2cf4-c924484f694c,3913240074,8901930828714341869
+ae8ed9dc-0cf9-f077-6c7c-097bf1b479f9,1740130940,6699778219245931481
+e9046ccb-ddaa-d8c3-0d55-15917cab5be7,178767393,14531007070914589961
+9a73f1b0-21ea-112f-3201-1702c5d1e09c,2059525517,14402189963722385406
+c380ff58-2439-c3e6-08f6-b805b9d30604,782451855,8910353162479868838
+5720558f-46ca-c6a7-e77f-e9de4e74d93b,1249246622,16095065417772835391
+561be2ea-f104-887a-5327-8265e3c259ed,871101131,17558236367563911422
+d216755a-c5bd-43b0-5525-1982c3f29596,3975732278,8128006015334999861
+26b7dea5-dca2-f82c-6363-026b30221316,1925600734,2805418214206087397
+f9cf4bfb-9884-d540-4225-3dadd80c8ac0,1720538717,10595733299524334612
+940a5fa8-09a6-bbb8-9a5a-54fc8edb9e06,1160417488,5664075283463734776
+eb491f6b-14f5-598c-631d-86aa6f8fb586,38745291,2033105383242749688
+add85a4c-d1da-503e-3d59-81ef2daec30b,721186709,16066872183068254771
+f28df5ab-2c4d-073a-eea1-9b08885b5116,1396197776,2248043081872307891
+99865474-f6fc-8653-c531-9a163ad8fa74,3965133942,13013985958356367968
+70822ae3-2816-d8d0-1abf-4f354e09d613,4223423516,16578419688429160882
+5d4cbd1d-6bd3-6a23-c445-32e25bfbeabe,2795784475,387564472500543227
+81ce1e39-dcee-57d2-1f41-2b3558f33bfd,1698775057,7475673084945770477
+d9ac0383-854d-f952-b5d1-54fead64e1e0,3568603957,5482830992039308946
+92bad2b3-9d5b-b695-7b20-8d73f3edefdc,1637101350,3922294103807762154
+4d645dd8-1968-60d0-5343-73f38017ba70,343639837,6758445731693456222
+8d6e3392-0b7c-3b92-829e-afc49503a688,3844116697,4313108160775427357
+dfd2e025-4a36-61d8-4f9b-02e57a5f3c45,549863946,18366898813874960878
+f12cceec-988d-eb65-6f44-78ea424aeea0,404576111,12519994159332987758
+bdab1d50-11b4-c491-2e5c-40ffe356839b,3927743618,14867370604401376004
+8e9bae7e-40c8-782a-5f14-aaeae66a502d,2310294965,18199317120760874116
+2992f4b9-94a0-9b0a-7a84-80da1376f39f,1923045941,15548075648977664066
+4438f792-64f7-5265-cba2-82f9c906ef16,3835157651,5190356783233460660
+bf395807-bb8f-c790-8b5d-1208aaecc690,1873962500,10277474373552865356
+c90d072d-3e20-55b2-3064-7fd179479a22,600812229,11830814589963671786
+a73cef25-d55b-2a62-76e5-45191d2b7695,3496076301,9984560178726273284
+f4ad6670-13db-8f35-d130-d5cffc7004ac,2895935909,2142526435659367300
+1378ff4a-a511-55b5-7063-b4d251eb4389,1930240303,5094199570441062648
+ac9658a2-3a1f-fadf-5118-e06727d46d35,1222160895,17267056495415407732
+a60c38c0-cead-7f25-49ef-f1c69e93eb84,270743363,2320971868685483843
+e7f8e364-d674-d7f6-d9e4-ce252303ce77,2421523140,4808468783793337684
+fed22c88-277e-f2bf-4ed4-5cc4b7fc18f3,3029249765,8078144625320133673
+310bb9b2-56e6-5fe1-d06d-0111e284c93f,3783865812,15227857135578270697
+ec2aeceb-70c4-23bd-3d36-f0cc7cade3d1,2051047703,8798460662077631144
+d4a14d2b-25ad-dfaa-1f0d-ede663fbfcfc,2170195788,12557593350097393488
+41507653-0d3a-bc2d-d91a-f00bd038c5a1,4086018325,14026851327793981142
+06c0295f-214c-5d41-744d-643fd542bcc1,3552351709,9030377941519643680
+e2d3cb29-74bc-32dc-6bd8-8f235053714d,2468740763,12501984687633524721
+89259b14-48bb-108f-5bcb-26f1346d6074,3614048339,9067572951618695086
+cb80d616-ffc9-4a85-ab9c-bab18e79571e,273525932,10213214526785623462
+2ec9181e-8674-c7c2-194c-a1781ecc8096,2884773187,3157167531085975547
+d30e3d30-d588-cae9-7c5f-216e332286b1,2235405696,5485534105900095741
+93b2e10e-dbdf-b008-cd72-c4dbc5a9f7f3,3291680673,6948323188684804397
+6a64238e-6bfa-5f6d-de10-a743aeb2ac4c,1048651459,13211957959117146971
+7bd2c175-501f-1ea1-0efb-f5760b6c6e88,2434234044,983538050550480310
+e92e169f-7e7d-f491-f931-e6939b17515b,2249538650,2566156985950425946
+47d65bc8-4e0d-e641-58e9-27a66b6b72c5,2779369975,40161334425504963
+a17e8e59-938a-7cf0-09f3-1c46ba2c2588,3553951547,16951969775116411467
+6183a030-8898-7b5e-2457-502c32049a1e,2090020492,17530191267852522822
+9dbbe9fd-ca48-bfb0-e2bb-a86f856dc331,718999505,11713108544272062921
+54752046-c186-8fbf-af40-b5c39ea8bff5,672632233,5164994237790214530
+557feaca-fbc4-3073-8b94-8b0f97229663,56045662,2970785065694937179
+bd36988c-005c-0628-95f8-14b02fd93b69,1895479188,16848690463825145735
+67d53ac5-e2ef-c9cb-799c-288dc989aeb5,897398221,5312654323441553876
+7d15a42c-5047-c390-fc8a-83cd4113e09e,4051885740,15322910538405289508
+762c607c-2229-84a2-2b3d-4c45f0b4bc51,1341770186,18423264860319249927
+8c876f11-9b1f-2417-cb8d-cb47540bfac8,344518168,12806058253377877340
+6b644fe6-bad7-4ffe-e7c9-5c8022bb6e1f,3335178653,3545160157105604606
+b6a9d3e7-cce3-b1c6-2a6b-0e19e63391e0,3887289122,13909627817960669913
+2016aa7c-5cb9-8bcb-af16-a8dbba26ec45,4205806409,3176545948765257114
+c9a93c34-27f9-f3ee-8f88-02ed67abf45d,1640890928,3374197623586875092
+ad873d4f-ab62-00c9-9664-f7957d8a828a,2210267382,11833924235725942113
+372697e3-28b3-7e08-32bc-e509a956fe81,4033046801,15445390978940176990
+4a451e02-0183-0a4b-95f9-5f317f449247,2679761941,13112555513327883779
+d72f9f51-41a5-9567-7921-6ed0868879ff,3601381831,16889426789137187610
+bee9d76f-1d84-ce6c-ad75-5adaedf9053b,3997513628,18270419435858727570
+2266fa49-2f44-88eb-7a3a-5dc6436ea626,595832636,8213897278759690216
+f01ff6ea-2167-6a26-a167-b3f517e56705,1545581791,6474925824439695759
+53f2f9e6-b874-e417-d09c-87840b18af35,1878595564,4554132054368837888
+22ec3dd6-f21c-1141-cd56-0eda0ec5dffe,2194970454,11665960154271203957
+3407e34f-08de-0345-c341-4fe694d9c62b,2996642944,5097318689974424990
+6bb9d5ed-0ade-e484-0394-4fc19034704d,1555838499,10950086006267968875
+e7a4a69f-3796-0d45-0756-38b68a0c9e58,3890783097,3015585983632819398
+f837f4d5-7108-4dc2-cd33-5a7587584b1f,1472238597,2634713713779269559
+fe1d485d-8b06-1ef6-90e0-c8a0e18f7a95,675307595,7062416839219832065
+023111bb-a86f-6e59-d1a5-d3e29f5137c9,278043434,3375881432648819711
+1dfae6b2-6032-e0b5-1e84-92e18843e406,3094809350,1692368498221137378
+d5104a80-9e9d-f242-326a-c7701138bd11,1004235096,2632564249333815077
+d852894a-23c2-7d2c-1e0f-b68db0af3793,3814980949,8786091172963278174
+58184554-4a63-a31a-3e69-ab9d1510bb68,4167910198,7044856063971593443
+5c946cb9-7f14-e994-ebf8-20ecb1797ffe,2385082892,8415646110759384301
+5c755d5a-8c48-2358-db89-fcb1ecda3a63,1426327445,3896126530760535786
+f028cca6-fe7e-563f-50a6-6d8dd827b0ce,973334835,7096011677997544585
+508987cf-d72a-f4b1-9438-21cbb0efb795,1416815629,11963616549022999552
+392ad33d-5eeb-5d43-8257-bcf932cfe6af,2929294868,9741374074322263797
+66c66b60-6fe6-c6ef-8a00-ebb3ecc30c83,4260551480,13263289352922693337
+2c0568d6-6799-4a9d-b730-b1a4f7540101,3264169300,17622722545621781743
+ec7490ab-182b-9f4d-80fd-6bad2ed2ba29,3823425321,12837720399316778825
+27c4a85e-d67a-f603-0818-21e84b0e064f,2724114419,9050744593628066442
+7318aeb5-6e29-0ede-ee1b-224f00007186,3337102823,17877871698976017302
+e8d0452b-65ac-a818-cfe7-3f1ad249ed5b,1029329634,17330647073470201157
+c284c6ab-2d98-83b2-5d05-fdf24283a3b0,1310843550,6203385845383299140
+165946e9-5136-e01a-d6a8-fa7b5aeb7edd,960260791,12710340725255304627
+cc1c663f-efcf-88bd-52e8-2b00326bcada,1413693158,8606253603095033925
+8b4ad68d-741f-b4a4-e532-e7f70712a3f5,2963359588,16927464047736802189
+0825fd34-027a-1c8f-1984-acc42f63771a,1723446020,17157064324546854557
+5e14056b-830e-c039-3b3d-bf574d073522,786396510,14432916974530912419
+ce6d4239-49be-949e-441b-828668380054,2085605225,1494839740620743994
+b77e0b9b-3ca8-97a1-45ab-10e452669f16,1475151409,2957342427621200989
+3998b147-4d97-9e8e-2a3f-50d398449b6f,1405149998,5214138973300095608
+1c84f067-8e0b-5bdc-3cfb-42512f9ef221,801293715,13276489589207075689
+c1b9c0ac-17b7-95f1-f74e-6d17878c86b1,1856812064,5912211427846765763
+d4ed161c-7e83-5873-a5cf-ce3121c1be4a,2275175626,17098221691570108004
+c9559fe0-ad92-a51b-8395-ba26a5d5367b,1089909995,16146499739210381589
+a1ab3ca7-a25e-7431-1cb7-80d685be5737,3736837397,3380997206866248918
+ea388956-4e7c-4574-b8bb-8ef012374885,3830439648,8411263389829340461
+0c3c5d11-4601-34d6-aa9c-4fe669205365,1872429688,6637803741541286580
+59973d82-0b0f-4b4d-ca6c-534b13cec67a,2132936197,6810219447959891479
+412af5e0-761b-e152-5a9a-aa4a1c7b62a8,1046193048,9850687806510413834
+2c50504a-3af1-18af-9502-194d7acae1c4,2634527429,10048473114173264019
+075d77c8-b0c9-a6e1-e3fa-0e29bb0d97b9,17428118,15298179415174664147
+07c5222a-8db5-727a-69d5-11ac9e919571,149441778,12381577734049224940
+decf44e9-2458-c3da-d9eb-6825d4362b0c,264859113,6823583324049335169
+ed3d44b5-176b-8137-4dbf-04bef6812965,1764743414,10191453918540715483
+e065195e-7ca0-f2e1-0665-fb97161018f6,2253002977,15974822241172219531
+0553d8b3-0f6d-4a86-aed3-31913bc8b702,3281332496,2588319204490031776
+b8d7d2bc-8408-b040-ffea-64535e7a28a0,4154874260,16278768253654760249
+36f76572-ceef-9c37-a621-14e4981b2429,1812591640,10480719854669963970
+bd02a914-354b-c9b7-f075-3224cacb4a40,824467749,16556122111944222348
+5d9b97f4-7071-538e-35f5-10f9c97c4d25,914508506,8849332916286696863
+c170beb0-39a9-3622-5dca-f202d41c8ad8,3091295036,2817882204936229852
+a09d0b25-e6b2-f192-424f-56b3c14047ab,2821047129,4534581640407929991
+27974d74-6139-eed6-68a4-3c66782827d3,245059193,13860659360638378289
+9c11bb1c-2070-143d-ae96-fb0c56a63fd2,1382153719,10579848682819767274
+a5e71abe-ca11-9c43-bff2-5850baff3bcf,2551354414,14691627367888374534
+31b18d3c-0c5e-8599-9d6e-0a8377726d87,3503449574,1297878270237085024
+7525384a-ba84-f4ad-8cd5-e448d434ea3c,1765225141,16130622081851698153
+10f8b9c3-5257-eba2-7a45-7adfd0c4adab,360896834,7087611569308186781
+22df6d2d-134b-59de-a07c-5378a4c53b80,2960089773,6824608933215393337
+73198473-f2f7-dbec-3b23-2e35921e3227,3605796988,3080332296794872519
+53e8390e-5aa3-9fe6-546e-f91d1aae8534,730274685,8200728145339283637
+5fb7fdd3-a9b6-9d0f-b827-a32a83b17d3b,886367744,12291661151406800700
+1604b59a-8876-b3af-2e51-d3f5eb1f845a,874259913,2598730844379501021
+16d250a4-abc4-40fd-30b2-5624b4aeed06,3173542016,12406071244096418858
+7f8ae54b-5f17-dfb9-eea9-6a75ac7bdca2,2910526574,5452062961674917510
+22747b05-19e4-ed37-50cd-490b5e63ae66,2382449721,7394909241990524699
+a3993041-13b8-937a-b6bd-295e15431fd8,4062360348,14879289756085270221
+ea61938a-2ed1-3601-e342-20060e0f7902,1226082484,13893300857171219407
+928353e3-df3c-a336-b34a-c52153c08a88,2385601406,8151499860099044323
+fc074e19-6dc6-7683-0d1b-9097dad3ddec,3965776382,16010039565634296371
+74a60230-b9fd-a728-1a3b-94f22fd7f38f,1146795132,2754990795193407786
+5f1260ca-41be-5fce-1ca5-d409dcfc1841,4072860851,7733050940548733144
+af2c5783-0c64-08ea-4ea7-20b4b2c7625d,482140051,4214466572645449597
+fc363e0a-7bea-1cfc-967c-6aade7343742,1910216422,14372958999743199633
+a2d87f59-b65d-2810-a517-c63b68f3c086,2479687488,6648018101319069590
+69960a30-ed95-4293-5310-9d0fe6009d11,1083589726,14162007457937476913
+049f82f0-9438-af74-4584-d6fca567dd00,2466624038,10179979938331874252
+88fa18ae-20df-d071-2ce3-4d3f7db5fed8,310798992,12036705987191751488
+0451c484-939a-4bc3-5cd0-a3b356e3795a,2148710766,5841724456620584078
+e87db393-18a4-b5e6-c39d-dd93e280e671,1689145984,15269223217859205393
+32644b87-d887-2b47-9b23-a3e3ca7531cb,1122193023,11364421369164652864
+0a6481c7-8ab5-77a1-a735-a8d583c78ea9,3991775655,14164294168671786138
+f052f4fa-92a2-dfe0-79a5-e8ace8d2a0a2,67579645,7607825264921335971
+023608c1-5100-4ecd-9b54-2ae5ca87ebc6,3518739796,7668351038038162935
+b6c7e2b1-974d-cd8d-d749-de9d8610f643,345650001,2884692919436869526
+3a20e96d-3563-73ff-a70e-34367f9a5f1d,402769506,13337224153648741157
+75c11172-38de-222b-8590-53971087517e,1317545318,18123764188552420641
+183b0310-e5ac-243b-74e0-33adb02b5539,2693348706,3858946336371830675
+20b6448a-7e95-9347-54dd-f389f26f456e,117017948,13848615106994452090
+61ffdbd8-9b45-402e-c429-ac9d7b2e56ce,2916865212,1333855338871638666
+1934cb2e-a993-23f6-74fa-32b218ec5439,2785820023,9914342303899365153
+824dfb12-9f90-9dcd-f282-8ba725eb9c3a,3097819110,9630724067191771520
+7d730eaa-b9f5-7c63-8356-955d8fae8325,1988447258,14337839078217598497
+90332b2d-110e-881f-46aa-5a87623a3ab1,3679940958,17702528586074472527
+af6cfaac-22ac-ca45-5d84-c401146c28d2,3314257408,12777185532386949107
+6bbe2af6-0358-a8d5-4676-442e5416fba7,595061178,2857213259745363033
+023a5270-8f9a-3956-a974-87f7becd79ac,3141884513,12050650844120408183
+e76f13a8-f606-abd8-4132-f4a6aa586b26,590290084,11114213428024541012
+7ea471f7-3f95-0b6f-a880-15c351384d1b,2373420368,10923436257275668751
+c8e67b5b-dbd5-a4e3-b9a1-d76074ebbf09,646304106,4280003099367098482
+01c9ce61-2d12-0301-51ab-b7a4c948a637,2574942025,11299604510089046547
+9614593e-db8e-df1d-92e7-44b8e15018b4,2538111786,15950729171051130230
+934ca688-fb4f-0699-8216-a32c942db797,853638875,337823570947278943
+60b45731-b62e-9cd5-bb72-84ae60b421bb,2366791078,11917769383373436400
+395a066a-cc7f-3088-ff51-3dd00fa99ef5,2643348381,9850333135292408241
+502d9d97-1bcb-31fd-dbac-b241f3db182e,2240946750,10960844333068468506
+f9fbf8f4-847a-d03c-876f-a7bea0b6926e,1386594850,8547950273061806211
+d93b8598-604e-8c0a-4a0b-cfc965cfd4c9,4233558221,10141248065717652888
+a0c9b63c-9a0a-b913-7bfd-bba994108680,4250661599,14179163753051924447
+0a01c06e-705c-98f8-a0ce-8b4ea2953c69,3257269148,3507648430230056076
+b7637cb9-d17b-7828-1dd4-f7a9cdb0fef1,1034603504,6498410575567966449
+162a5a8e-969c-e7ce-6ee6-00b1ff5bd83b,1827203409,2632738217717417604
+f7bfd029-eb33-fa17-a808-92555a721644,1960978251,8745393224805196732
+de07afb3-b092-6a3d-8606-3c39fbdd41b0,1273662819,3608914159977980767
+45cf00c3-610c-d6e9-d277-fc9737e48100,3736089720,6548246818926047890
+ee83feef-73cd-5b46-f16c-3206e84b47c8,3018306527,4027507697619247113
+b3c708ee-4a79-88b2-8061-ff0b8fbe6b37,1366876452,16720056692229523918
+548c8b9f-8e52-7a19-a342-380c84c466cb,330251867,3119235647732083051
+c03fa406-11a6-db76-2356-a4b034bde9f0,143347184,17725935627459083799
+4ef4e885-43c8-c191-2558-0e268cc90244,639587435,2843278369573797641
+7e17ba34-b0fb-e814-34e4-7e57b19a30d3,1528866627,14257624331034759968
+836e571f-2725-3fd4-f388-1ab381c77445,1155142596,10591931771905766655
+7aa33099-6423-05a6-78a8-1ceeb3f468d3,4154945779,7640065076800389999
+7c106cac-0f88-68b4-b848-fbd8f3aa1742,880416784,2007657581745544534
+8e1e41bc-1856-45e8-b44f-afa9ee917cb5,3979637934,17539404027826012819
+914995d7-d64b-3b6c-b052-829d4795782c,1471997602,246759149077714917
+a024b701-ef07-8ff4-b14e-8ca9cad0ccf1,2667153130,10379858412002134108
+1ae5f93e-ad89-a204-7787-2c37a3e8afc0,2094308239,2024244195866717450
+3631fab5-90c4-9fae-9896-7a6d17fd36e0,58554990,16557109531874307865
+7239f671-3b06-592a-fc17-2ca3b0e66c95,3064101514,3711546893398637665
+b9281544-4053-7609-9f5b-8f73bed60861,3334055503,10855422993340924242
+3287306b-4341-e512-d0c0-41b5891c010b,4036193799,5244588494437246716
+c015ae22-7766-629c-c172-8d63e3ed2f04,3614984464,15963874843312470426
+aff90f72-2be3-a89e-fc88-905b87b05ca4,2629914940,10277270910443009138
+493880a6-0672-bb8b-964c-e1e276e38a8e,2092140848,7365820104273810314
+4136c0e3-fcce-3e99-b684-eb83ad7bf336,1297423276,9835336370638860261
+db370200-5f81-3cd9-33d0-9edbc9a38020,25968847,2565398197537745038
+4b06d6b3-9083-1e54-280c-8b3fb776e0af,2724783166,1067848209463258726
+568d4fb4-da4a-1e13-77f0-8f3cb512a5a2,852939146,8442028806832329112
+723b286f-1f01-59ff-caf9-6c06301d3fe1,1256998867,8909405367791669586
+fa91bcf5-556d-12a4-de63-359460f431d6,2584265610,18035757841540042277
+7d2e1f19-4ee9-a58a-44c3-595eef900013,1748244039,13206067389337177528
+19aa73c0-461d-d52e-4850-127036288bd1,3021233171,2666433308513948333
+2450ed20-0bd5-cd2d-9fc9-987c040f8fee,519770152,14672486029709202490
+04f43a80-04ad-48c2-d6cc-2c7244c29723,709840428,3965049001690200672
+f96328bc-4b78-1d97-c124-92de67edad23,1317917729,9013011194442555515
+1d75920c-8845-9ca3-6711-e0e5c76c1688,1454760126,3127699285727126925
+33adb17d-d06b-8b66-7b6c-2d5a5ad32466,1082249820,4947276288245923982
+232a7d0b-504d-e961-db31-42ff87cc62d7,2339613865,5664030040483986588
+4d6ee96f-abc2-3978-a41c-57a296c0683a,2281376876,6644221069783904178
+23685f15-5720-a112-c07a-de66dd1e5f2d,3062604639,11403268219243662652
+cd066f86-cbf1-f422-1895-d1dc4c190689,1728427212,2693234037589494431
+35c9ba14-436f-89f9-30f5-7215bbef55ff,30292875,16258718052964557270
+f3aa4acc-5cc9-abf4-9d30-334cb5fcfd6e,2372364911,8123950052183469738
+4fcc244a-a78d-1862-58ac-8e80b4a91cd0,4020878759,17888187173206033013
+7da81337-4ab7-c4db-7e55-bf6f1a9bae08,141453906,11179028659795574954
+50b696c7-999c-e4ce-f419-75197b00ddcc,509607052,10837613451624181922
+ae09f99d-a140-552e-3f7c-0df2bc62dc08,1436183133,902959925066204972
+a4337101-6b40-05d0-b75f-2901d84bf3ae,780471844,11404077677988202639
+32289559-d9ef-4b9a-32f9-8fa2b1b40e6b,2677499701,1267170448272889887
+761d20f4-c775-3728-1908-439fc0412522,1791358093,6180031730274009005
+b2534dc2-6503-0d1f-4b42-c549c619b48a,2467490596,3359038703706175675
+b15acfa2-8945-5719-034b-623130fdb7be,3093667185,16530344354161114094
+84235919-5488-a4cf-8dec-1cc43a1f92bd,3346479261,17724091481347476777
+6198d918-e131-016a-121f-1e94563e1113,3104199392,16936754587886515894
+cb992728-8a19-d0e3-ccea-dee84ec9e08a,791999315,6952194784842136679
+76ab015c-f90c-bf3c-55cb-db01cf236e42,3333807801,17707590506193842758
+637a7a0a-1038-88e5-a4d7-7ac88e278117,3833998261,10758973253463128298
+bab18b68-ded3-181e-be76-01b002ee14ba,3633528713,10642858393014787315
+77b13fd9-43cf-40a6-321f-83df995f31c2,2823612642,9426422652832219522
+96a1d375-0b2b-66f7-8d36-f7bccf6856f6,3827241314,7499006176107323210
+962e8f3a-5e0f-b041-9c0e-ee329ca04c53,3849727717,13446012615851688455
+7277c312-d172-e069-94c6-f7bb0a29354a,4173347937,4038782719659824038
+340d480e-8d76-1704-e139-24b4c4308c23,4283339126,16718994920583390229
+07ae7ef2-aee3-36f7-2102-4e4699ef05d6,3491312223,4086592998290114611
+6c21d1e9-8f64-afd9-0bcc-faa91881868b,404222954,3856136127974061053
+0985941f-0beb-2161-805e-47af7297f9bc,3927789350,3069267276917472582
+b88ffad9-8f69-2ea2-f873-7c7d369b8526,3246098297,17568154415034635765
+fe212563-862b-de9f-1025-55ea5406aecc,130882954,15915719293723628568
+9b3c3322-49ac-5d66-f33a-51cbfd14a688,786162232,10176363491735275074
+300dbdcf-3592-89ba-5299-187f9e2741dc,957043377,5842260402805276086
+ae731706-b920-16cf-eeeb-21019ad23d62,2786155488,9158379959832308663
+16d1d487-acb5-317a-4a44-63c5cae24e53,2005657525,17208739264569526282
+c3a43f13-6ade-1fc2-2df2-5b67224b4544,3740325856,18164513223301619347
+0b213b9a-1d1b-a2a7-c7d8-9b7dfafa38b9,2308874620,7514551902344544752
+a5e276c0-f08d-2e5e-7c34-a9ce937f5d34,165586114,8986020351993581142
+5d295baf-0b05-3f31-fadd-058ce5ed1c88,2392521352,11781078543115667411
+d5e4e4c7-774d-85b7-a80b-26714b3039f5,3772592637,14431644328608710513
+892d2636-c7b6-e89b-7a12-38d37bbf8b91,1238633573,16626264555580996397
+8230e888-2857-7fdd-acc1-a6d14c95249a,3791793135,2411649402097768599
+b6a71f9c-4000-50a0-5dff-7d3a9fa3fcf0,3908552391,11230742426372685454
+9e44d2f7-6a54-339c-b1f5-98fec202934b,2223034917,13079407298922135259
+61800ae4-c73d-3729-f9ab-fb0662a2929f,2258467024,9497350794463144348
+2a732c99-30df-d47b-2ae9-7c23cdb1ee39,3443242853,7052797461739728992
+0eba2337-4c92-ea08-da7a-6c05da99eb45,2564968037,5638323444081870729
+b886ea5e-bf02-46f6-8135-49a116048ec9,2349036145,6939332847900846154
+3b8c3e8b-7914-b127-a993-280ba4c3d7d0,2233328709,4070377525361160906
+fd9db2cf-dc92-6896-5e71-3248d75dbcb6,2672786086,15338258943015988752
+04db4bc6-5116-18fb-e353-9d1048a4746a,2602821369,7679253459299100411
+12a81c63-4729-3e6e-1ed0-15cd6e02b479,3147632475,12825340878060898215
+6fe38232-4b3e-63bb-992e-dad199a21b2b,863423248,8079807179194071123
+b1254b68-0845-a8b9-3733-143744dd493f,1590748700,11304544193104599122
+1a60ec49-c87c-3cd8-82cf-bbbfbd450c9f,1153640002,17788177885429648185
+a5980285-6b7e-5d55-293b-72bde60ba9ca,3466670489,17409606621425345306
+8c31fbe6-0245-39d9-d850-d9f38b30a23e,3438473874,15023792877853474133
+6c49245f-dc70-d36c-261b-722cd67df9bc,3216037470,3873208290186667753
+296a520c-981d-f6ca-bbcc-c30788ac730c,896652766,3407725744223150838
+45a7b310-8591-de40-1d16-a79544b9327c,3411846471,13931520444897243892
+387724fd-968e-a31b-077a-8daabc741673,1510901375,11837666628557070571
+5e86908c-d434-112a-d1d5-c43cba77cdcc,3016932955,5039981204260708890
+24b071e3-c1a0-b71c-3302-4561164dd1ce,2380921462,139326267245545978
+5470ff92-26e8-de98-0d67-f8be01c99fc6,2212276705,5255381133685682190
+aa97953e-7f55-f50b-9486-2cfe6aade066,1490300449,4671122451581170382
+c3063fe2-2754-83b4-0f7c-5ab1574e3ec4,3202556077,4367888691681098764
+034c7e77-638e-ec79-3f6d-6d5a19ba0ea1,2870978930,7369706257601141611
+ef6ed185-9d11-f6fe-80be-b5ef2fc7332e,2235061697,5923502371533942285
+ccc51548-bb70-bdf4-b29f-b2b456657e3b,320109939,7023071907853138746
+6efe85d5-0ac2-2c05-d30c-4ce2ef02f447,1494874602,17375204445796847551
+152d4633-0557-1a56-3240-b39de21cf414,628875614,10280093888225424569
+ab206d1f-f7c5-c95b-6bfc-7daeffbb3908,3910022914,6933351343472113119
+bb3ea243-8673-fbcf-078f-c24d43b73fb2,3794956445,15829337170959713772
+4666c0b5-765b-7035-67ff-7007359aef03,2956890781,5953038532093520492
+7e2cb8fc-5fd8-0228-4c7e-588f69be6dd1,1656179146,4435852776107876407
+09c1bdb3-6a1e-1dbd-e4fc-4205eca88484,3346995572,4210180701761534641
+d67d93d5-6c02-0604-8f80-220608b94a65,1895057681,1692743618196774920
+217e1fa4-4833-6880-c7b9-9e78723ff2c9,761132849,14495797752444922809
+85a09ec8-afb1-0ff6-6a3d-0fd5afa74fe8,2403265668,12557591571013252166
+2eb08ac2-9cbb-d862-df28-59bec01db149,3244404646,13951487631089128652
+fb37d60f-fe7a-ccf8-3bf1-b119ee01c1b0,376059867,9138786054918561142
+51c0eacb-58ac-8ce2-21ab-1b8bd322ff8a,21702770,2682640599877231068
+4d3185ba-a77c-aad1-522d-773c9f87f971,2035703068,8732390871265733843
+14eb687d-2e33-7704-533e-3ed19bb40e4e,727842853,4367002369151352335
+ea7fe31d-d7fe-cc73-dbcf-3c4dae46c673,3090503371,2660265676191958097
+0b9f2778-9990-d51e-c47d-685b01abc5da,2271849916,8637498189595898101
+b44b5744-ae5d-487f-0717-3559d23d8dec,4011542721,14350971909664371166
+642c0017-fcf3-d408-344f-a609acdabca6,2279311002,1045707587816747712
+416e478e-df18-f4a2-400c-ff4517235831,3610696507,7481102378322656578
+a32b3cae-b476-3c98-b223-1090a6a1d24b,1981983296,17818859377349292351
+f2251083-f7fe-761f-c6e2-071142c70ee9,393683108,1642589564335311633
+6e220170-df86-ef7e-5bf1-5947b19647a9,3078166913,1231019125088275779
+f9181af0-2a00-3932-8a9f-3b32962e7a0f,3678773642,13237859796386613924
+b7e70a65-2a3a-e59a-5795-36bd86d8a6f6,3077981104,16099314930761654001
+80dd14ed-127e-fb8c-cb0a-f45c350180b4,865659951,8047146049272513629
+72bb6c0d-80b5-3605-bcaa-b7384062b98f,3708506694,4044588405959030084
+055e4daf-e8b4-c83f-a40e-fbc8460f475a,2646924849,2261364362886047494
+d80bf9ea-775e-6e8d-a9ea-09eba23ccac1,3744987835,166719361288895736
+80aef39d-32e4-82fd-98a4-3c211a8abe7a,3727724202,17146774580922272791
+68f05dcc-8b9a-0894-e09b-c6c1f9791018,1829828153,4295368242499298950
+a993f300-af36-2d24-dbc6-860236fcb589,1621870901,4350891046588253646
+2662168f-6378-066e-98b3-d44f767413e7,3247566268,9368158028858898811
+c34cc4c4-15be-24cc-f9e9-af8e140eda82,45297250,12688902121423531060
+7343546a-bfa4-c9d1-59cd-e395a518e9fd,1240811041,7907792905185629647
+e98bf2fc-42b5-d20b-22f2-fcf5dc4ff2d6,3650493864,15387651982931760268
+997423a7-beb9-4e51-261d-e9fe65b1697a,2530468701,9784548262073341072
+80101176-436f-3a4e-2d18-032192190bc7,1743465598,5830076544725457063
+495560d2-c25f-25b4-00e5-3fb0c1a9b936,3809849318,3598448296726898043
+3003597c-8004-589e-9396-c9a335e145f1,1819834782,12610043572603764652
+a03c0f5a-0361-fbf6-d37b-6a0602977001,542042388,16879579196695849576
+a4668396-87b3-2328-8bfe-52ba6db162c4,1110881493,17658822974450049795
+e2a0fd77-21ff-7801-ee3b-8d64857f0c1d,1908782208,11523011857426417568
+2c033462-9dba-1897-1e3c-f73a692290b4,2532464706,9129743391460107394
+c7171ad4-88b3-21ee-1530-a0909110faeb,680031921,22487714391738669
+7a392bdf-f747-d827-3513-85808c851190,2791108014,765114391346581633
+90ba5d27-65ef-d260-bc5f-d81676f28c7c,1354272794,18213196345741944361
+5e7bfafa-d65f-ffde-f784-cc86ae79acae,1258476395,3574977572670426741
+c5116c9f-9228-f622-4ebe-daf8dfbf4a2b,1368050580,3867115841968040363
+f13f8e8a-551d-f960-c694-78d71c0c5ec1,3707572745,1589309730779004449
+f406488e-9db7-1c2f-c2c6-fe0d5110d2cd,765369157,2420216163332353253
+f1840d14-1c5d-7966-235b-6a08fc56e963,1725190343,6093109728243871737
+720f70d1-b45d-cc04-6ab2-d86d69e236fa,2666333718,10845830342827441935
+e78a0614-3d5d-afb3-a151-271933e93412,502448173,2614097575592723686
+1371f659-6fd1-e8f7-838e-39ae10449a9a,1450605375,6648018401571378364
+f7c37879-12b4-88c5-5ef6-36b1b1d205e8,815936245,5308511440425272715
+d874c373-ac98-63d9-587f-2ac39de2a8af,949794260,16979154667955956048
+af29261c-554d-f5a9-1473-f3248a83642c,657283951,12244238753277229517
+cf025329-e43c-9f24-3b11-83fed6c008c8,2625426394,9529037217160787729
+efeb951a-c019-ea2b-5f3e-51995c0166a2,628412671,10905496121935874750
+ca37c2af-4165-7de3-6050-a9b03f7ce928,3319235902,14280978333119383682
+7edda1ff-075f-5350-567b-afa872a4e537,3431521732,1318008955757535894
+6ee63d0b-cad7-f0d9-4a7a-f12956041214,3191477298,9131107114389168549
+21642230-9b5a-5f2f-523f-ecf09bd0f0e6,2507639240,13579771646524670616
+da4f92d2-e821-6498-b392-72daa70f18ba,1622736033,12345979594634995271
+9fb75779-5c8a-ecc7-a2e7-60ffe89cce84,1910155041,693939322478606979
+18aae786-2636-928f-a5ea-b09b6284eab4,742914837,10065474792269390111
+59f11465-6861-728f-4f6d-5d7ac3ba7755,2507549767,2535503986210152036
+b2b63be6-697e-40a9-4573-a9428c8fde88,830459804,12768481391119075378
+7f0acc07-b404-9715-3f4d-3514ae2d85e5,295001571,3199411039335153536
+518f6aac-4439-53f3-122b-bf543d5cec96,1890802717,7081110384307965771
+2016b09b-96b2-60f1-7415-80ebb950c3c7,3161667328,5174231886030543101
+9b447206-74bf-6606-b124-c34286bbc260,567627607,2517763106755484927
+e25edc11-3c54-cec4-2c4a-d1dbacbbe000,1453911727,3454019004338084206
+e1b420e8-7903-f748-4625-cd285270ac9b,3185179127,2678580753623369411
+6a5e1de2-3818-5056-7769-038a168199f2,3570849890,14685913842761737543
+d134a931-bddd-eb6d-0b3c-0f6a8cb00f19,2878502559,15991897305201199227
+ab4c6a27-a124-37a2-ec80-5f779654a24c,4219053783,11523142548947893233
+74e5ef29-48cd-8b7d-4c57-bdf3f3763c54,3805485569,15684506725756099877
+32330758-4b8d-0725-54b4-f91567b5672b,1709819888,9105525386717870038
+d2d52b60-dffd-c884-53b7-49aaa1baff77,4167357299,15308318955110158954
+ab28737c-532d-d908-b600-59304ef6341e,2389292934,12940361744960242730
+b3119084-5a22-8b0d-ebed-fe8eb5407d57,2202004939,18361185604072473824
+9b90737a-4eb9-f182-4f68-340a732095df,126315342,7361575335263415333
+38968cb5-8365-fa87-ceaf-cd8bbe4046d2,549666215,188008722151468884
+461bd0bc-f108-a468-3cca-51fb96c9b46f,5987218,5323728433217702266
+207d9f20-b721-9b13-5b79-13320ddc085e,3638994758,13483033968500552763
+b3e10925-7b5a-b0ae-fc6d-1b7fc20d749b,3867873816,12661474081510084885
+9ad4e600-0113-9fad-315e-2c58518bfefc,817117327,12488051893494624231
+6462b640-6500-dfd0-7c69-234da46ca3ec,3074778759,10972097104253233312
+e3fde86c-f048-0464-8cf5-f6432b01d724,1427863145,8194802003462775248
+2c9e9684-d703-5193-10f4-25187622437c,4108329047,7052204444709346684
+99ac92f3-ec4c-4da3-cc33-7805938ff8ff,2304160284,5405735139153087360
+1cedcadb-3c0d-2158-a52e-7534858b5dce,316824212,10461357538414262792
+bfff400b-93f0-d95b-2c1c-80906397e7c1,3718446226,14308826406001785385
+20f336ee-2cc2-dc8d-be80-4fb622a63019,3303544789,15385101323065560042
+69b79fa0-7595-9950-a5c3-5a3444d5e71a,2940018276,16677945263820053401
+5ee9bba2-61e7-2da5-fbc2-1abfca89cd6a,2305106281,169545845120648921
+a6e371af-0678-a7ec-88a0-ece2d55b169f,94425557,5299842234988045291
+10995584-8f75-0a71-a035-1b799a57bfd7,918584777,15734258283970818551
+53522a14-d92d-abb4-9309-2b5e9e2b2432,3731768576,3369542761544495754
+add316a0-c3d0-914d-604f-f2b14ffc5420,3981509082,2218671672344922749
+339ee1ef-10a4-babb-f0af-fd6301cc09a8,3920016524,14882741233058729489
+d9aab594-6097-8459-9968-42f645052004,3604968151,11613697338030995785
+842c9416-7828-7056-722f-583aa53e679e,3455551724,15832959893227724271
+ea4f53c8-928b-3ecb-d56a-c574ff8db3b0,3891239948,637102782891402804
+1de7b6f8-8358-addf-67db-b972ea80a0bc,2044946632,17061867824900823730
+018dc109-5598-9f57-d396-3166ae63571c,2386583801,788958217302163948
+40e0058f-2b25-d8d1-479e-f859f98ce253,661826227,7763650962123705079
+4ecd5505-4a7a-ffeb-c9ae-259c25394285,1184374125,7083364379378890373
+c63894ca-2330-4ab8-bc3e-a169204e4d4c,957927477,11838545805779415418
+da5fd958-27d6-bdba-d3b3-b5f079f2c21b,3670998723,13667670458073497337
+6abd5eab-d52b-1fc6-9de1-4e0c6a260f03,1401435404,16004647810837500288
+08497d7a-3379-dfc2-73f6-ab4744190d57,995017118,17957185877036338184
+4e5e3dc1-4c2d-5576-a418-e5a259737125,3706816600,3197539828763591278
+f731d896-5f2c-e141-4b44-a77d89f2b114,2885092984,11502196124079518693
+1922ca12-f751-8275-e45e-6cd71b85643f,151724055,94934842668698984
+7a734104-c373-6cc8-87f1-e4ff8892886e,3928630004,808548598917130152
+4a851eea-4b8f-d20c-86dd-ab826ce54b9d,1251196422,14247506816015259808
+8e2dae9e-b7fd-0bd5-0a0b-f7599dc2f6ef,409786561,13033101069317881393
+9d62b7d8-9ef0-f3f1-b45d-355c7d221aeb,1172186516,12808461045694753578
+3adb1d65-4129-93d4-7c45-bf9dab5c03f3,782995943,15459115504447576773
+049cdaed-9219-b4cc-2529-0352c6f4bc44,561802126,11001695754784826967
+7800468f-7e83-4edd-c66e-e4b6eea621d3,2235780118,16266549220337321390
+e95d0e06-acdb-7ecd-285f-554c1a20f255,1100547831,2841220727165073021
+eeb3208b-448b-9ae4-1aef-006719e0956a,2059835731,16235768793875942946
+0f68cac3-6bef-d462-f5fe-27bcbaa6f414,990046150,15663493139811412144
+66b40c6f-fe2f-93c7-5b0d-7841ef683fe3,696082875,5278795300587303168
+8a75204d-e888-4363-ab70-b097d5577dec,3263258416,2692514186617607737
+c25b647e-0ee2-5dc6-4d26-5c7fa568de7e,3068400487,4369316720787670790
+82b44a72-05ae-7496-4671-e3c4faa8a255,2216526802,4845076473979651182
+d6f628a9-ac44-1169-c193-fcbbf2b7324f,2329599366,13562629702020359745
+72b8bc17-7ccb-2f78-aeaa-bab4d531af4d,440102747,16246331618595525637
+33f1c840-cf3c-030e-df32-b50dfad60ddf,222051902,16072625621871292357
+795db18b-40d1-8848-c706-0fc6b6c3f46c,1790540476,10307173054404318335
+dee9202a-2945-042b-7c8d-5936dd4c22d5,2312621417,3493609677193209309
+9ff85a47-408d-3859-f1ea-8f431ea924fe,3032569627,13561192348347216643
+136e44e4-f084-6ffc-b47f-e14f8f707b89,2862646275,9991112691216314910
+b7017f94-32e8-e816-901b-060d03669710,4228055569,3585351415652451255
+bd43e622-1cb7-0207-3579-bcd48e6b525f,1492096921,2715358106395171963
+2cca65de-2246-39e5-7729-68d71fa119e4,1102490684,1774613242462456219
+c4416cfb-ec15-0ed6-4280-984b347ca57b,112127172,210486944181830481
+9136b6e5-f3b4-73b6-a535-65de2e134828,1294516820,3771234492808752460
+e4886dc6-bbb4-046c-d11e-38a41a70b775,114134989,8606517504126147317
+980303a2-cb63-1377-3a71-53272cabecb6,20403607,12459739311135040039
+8adde9d5-c5a6-32f9-e246-d6e30eb5217d,1079792285,16961634191304970560
+760cfce5-16c1-9e10-88bc-e0f91f1b27ca,4183443723,453412849306321271
+3682e678-5555-9b29-ad71-3b400b19d3e7,992556817,2953426432603321673
+ccd05b94-5c97-3212-56b1-f17dc28c6466,562985710,561387675718113953
+146315e4-528c-e84d-5b0d-39eaad4ce28d,3940564682,4926765923921507892
+b1ef0d2f-3b8d-98bd-6853-f22a4a9837c3,2017973897,9636127549602644165
+6a823e73-67bf-7e40-845e-708131159d2a,3515139041,1581728884780656828
+d6faf3f2-04b8-fab0-7ba1-9b3875c178c8,2648518697,14163826404085514879
+15158c6b-961e-c976-d340-632152ba23b4,2013788580,3914124983347241412
+60bb1011-8c44-2724-7892-a85716e6a386,3921401651,9192608240126313671
+d6fa206b-5023-1bd9-de6f-d1795bbfd6a5,1417488747,16162402113005130512
+e9c4af8d-6383-bf6e-e4c8-35c079b955d0,3446991439,11514758155368279847
+381a2eb2-40dd-92b6-2180-5e30ad1e4a14,3813349602,5433688976976300202
+9913ada2-179e-4041-f871-5e8c562abf2c,2858255523,5485163394841366669
+0a05d16c-6956-058d-e72a-6b6fe2fa88b3,2404909949,8219601846564750353
+d4bf4628-463d-c8bc-c31a-d414a8c3e5c3,3028768353,18120549870031878660
+b4226837-bd05-75a8-9f89-1fda5f9241bc,123430007,6518704549017294017
+7bdbf8b3-8ad7-e2af-5c3b-94a1ee544e13,3596817619,15298293984774269888
+5f1e0318-f9b8-12c8-69cd-f4123f871114,768802903,6983330204036336816
+43969a9e-8b9c-5a26-34c3-a5fa242d4abb,2061345937,2683744789266457794
+9ee33629-47a9-9798-846b-3b48b0c57012,3730217441,15431022739317519230
+a72af1ef-0c2f-5560-b634-c0471baf27b7,3019040876,2383933360153025395
+bbdc44dc-aa31-348d-3163-e943768c8bbb,585571893,16742442511830211841
+5a7edc11-a4e4-3a82-6ca2-a35e8e1ad063,2235120849,8285216229976033151
+8ff93648-fb0f-f830-52fc-f1cc12a68318,1148857702,5834389158751370300
+af4d157e-f221-0085-1b79-9673299cbc3b,2071865584,12110547556320112040
+5313f1ef-9bef-fe50-f6f0-920d888d836d,2429617412,9083122491725057300
+0fbf96e4-09ed-9544-dd05-133c76a77120,1662365876,15823751615626538575
+513202c3-6640-8849-4104-d2374bd7eeec,3662819269,16558324308617898781
+b7ef772b-4241-4d33-4550-aa37d06f15e3,4111157543,13055220605229019714
+7594eaf5-8c6e-a817-8998-e00af2b89465,2718402638,1326608893236128632
+e9971d01-8af6-28c9-b1fc-65aa76edadff,606726466,12347846595832760237
+e1744c90-3702-7516-56c0-619e5131a4d3,3025326333,14759631202272952661
+51e23563-9c96-88cf-9fa7-8567f799ca81,2284281135,3879080338954892654
+d59e9d47-83d0-fa87-51fc-688ab805c4bf,2176658156,12764271851877078225
+3e840adc-b24c-6eea-93b8-01a6d8ade6e9,4267480513,12287841509405912814
+f29a3de1-a158-508c-e80d-08fc1b8ca437,2658716876,12268527822477122275
+7bfe8651-3707-3ba3-dfab-08ebc488f065,3837156153,11252180466633020314
+b8c81280-f9f7-e355-3f7c-bdf89a150587,1833250439,2221552378482819699
+dead6f98-e9ac-8886-86f2-b6f9a1fd6331,1967762409,3527700821248564250
+53144228-acde-df44-9773-ce74b522af71,2297834202,14384780520560350104
+c7c987bd-48e2-6fbf-6513-f9a0a1628d39,2452388628,4150655133662367367
+4df0febc-1f7b-e517-7e94-d76f9a69c0ee,234025522,823823689790240991
+3173ea5c-4477-1f83-05ec-64138d2fe849,1498552137,15486534789619378580
+92e8edee-437a-f580-b471-d0dc665d5472,1131644320,6512129799411302314
+74cac50c-191a-ee0b-afc9-554ba5258788,1749794158,12349071071957626186
+b903ffb4-b0cf-6135-5901-a9043462ebf1,2070699072,13123741308949911289
+2994d08d-9c89-4631-33ac-14e82399396d,3955729170,4263557024380078990
+adf1aa90-8ef2-05ce-973a-c3d7d0b09004,2984839959,7758950324974412512
+202f457d-ae71-5db6-38e2-c4207e6f7d2f,3463667086,7236670964308516750
+c0fb41ec-4a19-106d-f749-11e5164243ce,209793365,2582102273745704855
+d1c5046a-bc91-e35c-b90d-c0fe5bf78bc1,1960687068,9635188778383139996
+d6bd15e5-56aa-54d3-af4e-0139c8303ced,3995299233,14579249142257448293
+11a5fe28-4f76-73f3-53da-6ba2f0e10fa9,89408234,4801984514554676922
+34ec4739-17a4-c427-7f3c-715b22ae9e36,3687776561,10256401533933336371
+b66c5c19-0b16-7af1-02d1-68fa082bcda2,2918361899,12044709894285243353
+e59606ec-49bc-f7e4-c6eb-954a591f792f,1260794235,6264150616471507180
+af34bd66-4729-c12a-39f3-43ee563493d6,3263301531,2364953143223392442
+59f754f1-20e0-e086-5fa1-54cb697e5b3d,2159911308,13089559715998223892
+a85454a0-0f37-b07f-611c-3c0ae0de4273,1241599027,15793687670444048136
+23a7d22d-8734-4523-c221-d6222f211898,859803912,5388962914254696463
+7a5003e5-c09a-ae7b-287b-4654cbd7a7ef,1569127789,12606243155944285819
+bda8db96-5444-321c-bf00-46d0d9e8a5a3,783685869,14015380482046499814
+92b347ac-66ae-be54-037a-89f8f1f4eec3,1605938032,251283181606677427
+9d02d02f-418a-d332-b97f-59e69abd936d,2026741217,258653477521791155
+2e8f8e86-8a69-4381-2915-ba7945c6dd53,2194593880,7046065695225236934
+ca93b641-d783-1c49-ac30-cf3398aaac7e,1847263654,12928531831757560464
+b4210b7d-24cc-08f1-a209-1ff1b8de5c27,725538617,4224156148062804487
+e3f57116-762c-70e8-4f64-63f734a8fe36,11954753,1312758865251937059
+b1551602-8057-c203-9cca-22b83cf7e65e,764743930,12783502745941840437
+d770f57b-87d2-4ae2-a1b6-86ca4baae66b,1897470563,7357974387621013080
+4e7ed72f-5c42-7a99-ccf9-e9912dc3de8d,377302372,1569988065591238117
+f12c3fa0-11f5-200a-8f28-5385a523cded,4005521626,11184364979834721136
+e8344c36-40ca-f1cf-0322-cb90c4bb28ab,4203372151,4480375470580166722
+29c0144e-e2b5-51d8-5ce7-dbdb13073990,856414064,2192465298623377431
+1d371151-37c8-0fb4-1a62-74f3f026f57a,1997733773,12344074753312861224
+57f7f092-78db-5c0a-1262-a0325ff2c12c,2052291491,17633566791169517281
+6d4ff079-4e2a-164f-31bd-b165927958f9,1447466429,15203395729724304834
+531e1e32-c6b3-47dd-a6d1-c837cc9bcacc,290464076,15918096892639275028
+c415c290-0fac-799c-ccc9-49bffa870259,2744670155,16839167047924572815
+8d81cf79-eb97-5ef8-12e2-2dcc155f1e0c,3926699887,7888758154225665809
+3cd2db56-4220-3f96-2ffd-077df8c4464b,1150580199,12623890997733643148
+265b8173-f98e-00be-1c8c-9c6045f30e10,729019937,17139711997887176680
+3cae5acc-0f0b-3765-2028-a73308686721,2131664789,9227189456388930917
+061e191e-ff61-94fb-d969-0dacb31170ec,3111913567,10957306508833865998
+6606e436-cb3d-f02a-90d4-5a4990c211cd,760414825,11269946466918921950
+7607980c-d4d1-04bd-bdf0-48c41ad6475d,2759054695,1869445837853795343
+0e7013ce-e9e0-22c4-d6e1-db0c0c845852,3798841066,9604083697561425560
+1d97617f-c350-038f-b661-05cc00b2f913,1012465648,2451938989972420985
+d342827f-ad6a-f75d-8c79-2e25be7681c1,4149546872,3445612927162707029
+7375adff-2db6-df3e-9920-631c2084e27b,2438819612,328573153852262134
+cdc81702-6af3-b10e-f006-e7df6f26dbbf,2358192253,13065707254355886105
+868a24c6-564c-0849-e28e-3308626bf53a,576230751,9082347339187877625
+a7b39b81-5d67-d795-f2b8-e09d2aabedbe,3876669932,204357444094300021
+39b6c068-cfb4-dcc7-d2bc-5e483fac858b,936384678,14165327396489875262
+2538c9ab-9ae0-af81-d0b1-363b78840ccf,1286828624,3707189858413221831
+539a9dd3-506c-d846-44d3-8ca451102949,2469890586,13527232786890425047
+7f6ede7d-749c-f847-597f-23538aeb7172,2937641619,1515808210199027533
+5569f404-5558-101c-d36f-91db6c2ca9c9,4198502279,12306060250325349219
+727e80fa-08f9-36d3-a214-3b69efaf0e3f,3113021171,3626421353743521041
+703d233e-e65d-d8b2-0dd6-218496389c78,3653964791,9573430924997323082
+787b4261-603e-7fe5-829d-ecd6cee01434,3059622017,18402801117989300490
+7a1361c2-8d1a-07d4-70e6-78ba2d6d3266,3673482880,10032394031175192187
+5d1c468a-a65a-2a88-911a-86c889f89be0,3296066961,8269567351872026929
+57d82d1c-32ce-7956-b310-4d1bf527c336,3766225444,13461018082371146097
+22ff81a8-11f2-8d40-242a-48acf6263b08,3736587621,9248026559089925526
+76b5ee06-bcd1-3405-4017-dff5d7017fc4,1906628083,9818409887876389721
+a3cfd5b5-eef4-4997-5246-58fe6be1f3e4,3870457923,9799691531234727041
+1ad642a9-7cd7-bb15-d5c5-aa6bbcbb9184,1908754373,12642919335138197702
+fe82d5c8-1e8c-3804-ab86-a17f6ea321b8,3889669577,7637501046859270994
+33de5816-d47c-7e49-1448-7a6dc61b245e,1589563947,12362470692631985909
+38fd5662-6d53-6e2d-0e8a-ed676dddbed7,63987787,14828679443071174780
+11a32f9c-192b-6925-fec3-d3e4e6475926,3021942675,6554257409585554951
+72a93748-d905-d2c2-c8b0-693d04bed2dd,3769439532,16274465510339937421
+a8747cd4-d4e8-8ad6-f79b-5f46060ecee5,516824823,5561610968586983145
+e6109c80-e849-eeee-cfaa-8ca13151593f,2734276940,3195574381904443266
+0b6660df-5f6a-6010-2e48-388754b7517c,1440044125,10954736851316150835
+1e2d1eba-b3fd-3911-52fa-c4659bdcf9b9,1750999483,7528503584449909840
+e47ea02a-28c7-eb5c-7dcf-a132c54afd01,2417384995,6522225959644166129
+f9166db6-7867-898a-d311-a975b985ef6d,1265494525,7847178062266746174
+d509d762-38ca-28a8-d22d-b58d5360daba,27553061,17041880039797201315
+c11720c7-3bd4-b976-f005-68f484d6e333,1587391148,4757390531054833426
+5e116c7c-c55a-7627-5c13-2fe40460aeed,1678773289,13988890501661287455
+ebdd60b9-0059-9e67-508b-c112352b8451,131923547,6289957314726531785
+4368914c-ed44-0177-9a6a-852e6d3cb7b0,2391531660,1616557241394607068
+e0ad81b6-c165-727d-1355-bc9a6b9ebcad,2711147211,10841612276166413547
+692eac33-41d1-b62b-193a-e7cb613a09e5,3839191896,8335714604268379197
+8620b7dd-7375-1094-7014-bb3cd469205e,2977700312,5199936059877381788
+a3609bfd-f7cf-5df6-9e37-73ec0a4310b9,2399696928,11380474670341951204
+b5861461-bfac-883c-2e94-0a20d41305b6,1750590909,17314333563477581479
+32ecf535-da61-ddbe-c652-09046f59db17,3217925274,15268820433777125229
+704afa62-6b14-9733-480c-c1b387944ac2,96397607,2184721079165641029
+972c3724-4add-16de-cf3f-e15b0c5e9752,121877825,11226417803893816496
+439603f3-4adc-95bc-20fa-aa6759233584,3249711259,3567633186365497144
+cc0c40c1-c200-99d2-9b94-36e51613110d,2217376182,9786955241897036099
+72a13604-184b-f471-7b00-18aa266b4181,4244722223,17843261801011519790
+2e1077dc-f82c-ec78-36b9-1a8dfa070ac4,3649465869,15153875085645085868
+220a2d52-7efe-4c85-5afd-ee59da7e11a8,2950428608,176742128410309708
+6fb904e1-53fb-50ca-5d19-cb64406b7ef2,3043325757,1032263933189294117
+d03f9053-ac8b-8a29-592b-27e612229b6e,2702819998,2777574062485570184
+0f9d9b76-1011-aeaa-9e8e-8f4e54b336fb,1443570436,7303194050717660386
+3410bc0f-071d-1d0c-045c-cb6b1960a7a4,3675157604,10733539448309454052
+f618ab87-2dae-ca36-9567-29db7ac8c4d9,2112259111,4479755841621357367
+4997b69e-7b63-e69d-47a3-def4bbfd7b53,1344839476,14581169894800433589
+85486fb5-da73-39cb-4994-470449d9d500,3003383413,9346249769229528223
+f8755949-920c-f4a4-8d4e-f6f2672f1a65,1163823167,846724208027391690
+36de4835-19e0-a957-3ba5-f4ed50af6e6b,1386270957,8269175222012803712
+06b9099d-0e96-726c-94de-6b70cdf6e10c,3199327736,7653610449950383683
+3642d456-12a6-c3a9-3d32-fb2f05984f65,2382140740,11928275288767845386
+bd785fa2-5046-db0f-7402-d39855378de3,2739234539,2338458797135928613
+3d86babb-cd56-2296-9da2-953050167032,3228045047,9769513739798931240
+8386013d-b947-bfad-1849-564c50c683b9,1198739999,16978676344638033272
+1366013e-b595-d888-31d3-9dda4fa7deae,2160518250,3357749103845507772
+ae93d17a-1cb8-f1ff-53ad-0ebc9f04d68c,997327208,10234209596580521307
+3e630692-3c08-998d-974f-6860d91cf490,2826496756,16293341064007061515
+49920990-af42-7367-83a3-79d1bb64ac7e,919425455,14290893272429458117
+0f80d48b-3a2f-7a16-e8d1-3c9e3d126a27,2224794177,4896978560171930327
+0d946418-13db-581b-db4b-dcc49a3cd815,2582214529,920826383294005094
+4f1d9324-1a93-3ca6-b67b-3be75f0315c2,720264161,7056157497337050104
+aef84976-c415-ead2-ff97-a89e5777a81b,3736438363,7766946680028906355
+d61c86e6-0cc2-7b8b-f1a2-582609ac6e9c,2017851882,5953589399181510261
+59d41a7e-7a1d-b0cc-7c65-a53a0133cad8,625773600,9655367553071378181
+0dfbd2da-67aa-4303-17fa-14614dc12906,203047307,1433765361118182137
+120d4760-a368-4151-c833-be79041feb3a,2106698373,15912750386009875401
+6e27c37e-ac77-8d91-3aa3-377e66476819,328487031,16027579867834341910
+e87001bc-5b8e-30ea-f398-ab2fbdff3faa,990900647,4884322683302506278
+a380dbed-d863-14db-7ca1-cd40e852a444,915479597,18251853362619627138
+c1b7c26a-77bb-b6d5-e2b8-be0add685aad,3219521252,12039699975074992346
+b78d008a-b135-b4d4-f18f-84c2c31608b3,3242149077,9121866240777061248
+9a50b26a-aebf-8bb9-f1c2-49c9acd7ae81,3064668621,4512086397136271135
+efa6c58d-5782-434c-7eb3-1f671ad2ad11,2357294689,11936952117963957944
+b6105ea2-30dc-63f2-d23d-921130f3b0e8,2591526776,3207551101738100003
+2cafd232-ffbd-4323-4f0b-3c728bd624cc,3531382263,10046002734694543934
+039f2dfc-8870-908d-6f1e-8d8ed10b5721,1553466660,18270356762406387210
+20ac5378-3334-7d75-f118-2eca6fdb629e,3452492612,16191751691902205248
+90dbfbf6-01dd-836d-a93c-00b2b533b172,2330937923,12895414739147871415
+538fe64e-add6-d9b8-6fda-b8e9d244cc19,2923459183,16479943062604310271
+5babcfcc-904a-a2a1-847e-9cc7cac7a923,917728403,16991250071153317086
+d60c76d8-d7ad-315f-511f-b26fbdddc228,3643212645,2579490348332191861
+67dea0b8-6661-4f06-1d0e-c3e6bc53900e,3598977242,9876317313575144085
+269b7d72-f86e-98db-31eb-0e01f5c094d2,3949038494,14425967833496493033
+12c69c7b-e51a-fcc6-6250-5bc1f7ebf878,2050724530,12867882040507382605
+13665e31-acf7-9f43-ae55-287573e737a5,1643353109,15568717656547231953
+1f82c91f-a249-e21e-681b-124a738a3669,178824097,3323404351041490632
+09cebe4e-2b99-03dd-c514-9e7640ff28f4,3159449057,1353419660066154940
+dcd2dd0e-6851-ba98-4f09-c32feaff9db0,3239662699,17579753980892794595
+af0760b4-c3c2-54fa-24c1-c2045fd91715,1684136816,16662945256727323681
+3c8ce38f-feaf-11c5-1a4d-c5a777ac10f1,2591837538,6102877095733454785
+4dfa7f1b-ef7e-98f5-1163-0030f6632c96,1042524937,14803877360314088459
+92c3dc8c-454a-9132-1938-989b03e29a2c,3537718009,8516412351691873199
+073051bb-ef14-7b11-fc49-29237fbbdeed,3512947254,17264318963495348025
+2e59f2a2-ac2c-6bc5-4a05-5fd542ef0cb1,369412808,15752546205470199429
+f0efb48c-9229-cf2e-753c-a17fcffc90a7,3833591459,248848182654416710
+6f4b49c5-291b-dc08-7eea-ee40b2f3dc2f,1019137711,6829073004018758306
+7ca5114d-c6ab-ce84-2ace-33ade85447cd,2262411044,1026578339025334313
+f45266d5-36c0-a649-a5e1-a7db96bf1d47,2877492711,9766854807340666140
+7243780e-1bef-fc36-f4dd-7dcd49e3d76e,193073656,16759901888817612237
+10a6c05f-8b5e-cb11-d1e7-922ae00f4341,2249416240,6316474278881866028
+ba912007-8be7-43bb-4bf2-f92e1ea907a7,1144151392,15849686484868959438
+d7ee4b44-3349-e51f-21b1-42b46b798c46,3326830003,170716224353597938
+d594abb3-dd00-55b1-d0cd-3c4e57e212aa,3506707074,14802114666794552593
+ded14d60-3967-56c5-5ad8-aade71cdedaa,3152325991,10516486022874577936
+cc5a9842-c7df-8023-1f7c-ba8ef5d17802,1971788455,6015472687841579937
+eaf24f51-3ad1-4658-95d7-1eeee94f9653,1839160454,4426128748074478172
+40713a93-eda2-fd0c-f4c0-49626c95bc3e,2769998920,13593954210002467250
+547a37ae-e5a7-36f9-e258-d469dd684c14,1621335536,15399151729023396309
+f1aaf37d-6538-2a7e-0169-1706834ef678,1707243883,12817791403636745162
+6de7f954-1349-0721-1162-c2c4a454463e,1622143059,3773971240501210029
+186a9e0b-0a24-cb57-bfd0-73010765ffba,3126224637,13023063677841397172
+34324602-64ed-0f98-b9bb-4e18e23143a9,4196927328,14235953532636731225
+01090e49-f5a2-2a96-3fa7-1aacd9b788e9,4190122034,10306177396192561734
+276c72d8-1395-590c-2585-bab07772629d,2195299597,10411813576903968312
+c6e225df-b43b-d383-e809-3e6ddfcbbb0c,1088947195,5265985160671731454
+132ee61e-b0db-e433-bfaf-4a15f2aec6b2,1879925746,7145260030886490830
+f4a4aa51-7f21-4076-de3e-8d455d40a2ff,1033268197,13180720107735522367
+05bdf5eb-3785-ce8c-0970-b7a424260aaf,439076325,7995159494981934889
+c46553d0-26a6-c828-8fd9-89131ab519ec,59113686,17086655776435221764
+8b589448-4a93-3c31-a368-bbc175eaab23,2770222033,15811073780003793498
+2b4530d8-c072-6f03-6687-1e4d1bc86158,3316162446,14720956690986199357
+b9d60e7e-4929-9057-084f-1e18a8cecb06,3028313241,3613507778986615376
+827eea6f-fe4f-8e5c-8668-699b751067af,3778596841,2063686952836748843
+cbb23c0e-f477-7e1b-828b-6278fb79471d,740485590,3493934935826222744
+7ddcbd4b-3b62-b716-a664-4bd88ad4af2f,2334237928,11411053890503198837
+588cb450-4b08-784e-8c82-0a83edc72c56,2389700741,1037681135739856495
+b2c58fd5-aa9f-af86-7859-db5a7ff72791,2713893854,12393325151962197420
+df789388-a648-2e6e-a7d4-c607a4068c74,3603710548,17956014273427253199
+dd9ec915-576f-e097-cb20-690c4b653e7c,3284537052,12125727243458503131
+1fe0d3b1-e9d0-efdc-9fea-f22383c11dac,4166463109,10823154166158860490
+560937ad-3bec-091c-01cd-f3ff1bcca110,3806143299,8790296986704345307
+cb6d27d0-1ea3-1fc0-a13c-2e690beb366b,1144600411,6255945832123465068
+10bf8d00-20ee-d087-dc1b-c44486b12bc4,3326457152,15936520785838527585
+5315664b-d24b-2f12-907a-7ee84564771e,3848686496,11905683769304575200
+f218c0c3-c0db-f7c8-6b6c-cb9c9958cfe9,2225120716,15733223126714983007
+f5c104f5-1ae7-88c2-fa0c-9510febca6dd,1831615143,14662391601654721885
+ce8bfa54-2149-e300-e237-cd103d9d1701,2344867832,958761276289699462
+739cc634-b4b6-095f-c479-533b39d61b12,2518243927,9699525300183732864
+3620c293-9e65-13b9-fcd4-e00ed1eb2dae,229580605,17052530743366362203
+fa5d6863-c351-d1de-f059-d4b139051ec5,3164218605,12044580765251618445
+efe3d694-1ebb-dfe0-efcf-8c09500ff2c4,103480971,13354276859538757858
+26b840a1-eb66-9bdc-9d61-88e5ce95c0d4,1190190559,10907707362311752572
+354ba3ab-b573-f033-9775-da0de820379c,2208659754,9420139501834105193
+40688f4d-2b7a-1135-cea0-abb8f02b419a,509981362,17104272972707469809
+a8194c8e-d880-a226-052c-66bf7b7b4001,1553431132,618356991955443817
+08ea5caa-52a7-d75c-2539-17af04016c94,3779497086,16066628400306870124
+4391f088-3cf8-9472-7735-6b8db8447a43,3896754515,11278340160190588761
+e1e4eb76-4496-80b1-fe84-d87fec4fdd25,4166451697,11179534323931774243
+b353331b-23b6-c39f-3f4e-0fbef7e50488,3250600279,8226775081970745643
+1bde73af-b4b3-b04d-998d-1fda21db8966,3055322099,5274780463911837945
+e074641f-8dde-779c-edac-0ecb76914644,3647473591,13586212204062688738
+8926e42d-747b-89e7-5d5e-86a4d5e4353a,331191552,7427855675331753905
+70ef807e-5280-2923-aba9-360a10f9f5b1,834152030,16537826765970262991
+b74b6e10-5d65-1546-dcab-bbefab16d8bf,2828631904,3147405075368383252
+80564ed8-be63-3af2-b4c0-6d5fa9ec29b4,3632354262,17703009761218737906
+4928aab1-9d54-2106-cf1f-2001a3209af8,50061999,1438819291375517461
+3f977632-2512-81a2-457d-235b2d29b2aa,1344525218,8846096978744223957
+79c9bf66-c350-7b9e-65e2-cf50204d67fd,1573211582,15168180461796114135
+5d6baf2b-aff7-0232-6d64-559f927508ad,941675445,7317646789925100830
+3958b1a4-bb30-b963-3529-84c684ed1c67,566967300,17794492668582111477
+b7037773-c1e8-f2d2-bd70-2b4e68f7b54d,2037892739,17037028042994471405
+6575e09d-ba6e-017b-291f-ce72fd0c3fee,1750676906,15295192876658498381
+a348b61e-35b5-b462-5d19-7ffd849b869f,2489799170,2734029735989411538
+d69f4bae-6d80-409e-b977-4ca2c665f640,1823382011,11756412481176613826
+1aceb15e-10aa-755d-90d8-4e651638d023,2261652569,3965417698113342103
+a7b4ce16-aff9-e2ef-e90f-524d4204acde,3340811956,5682394613177052836
+c733e183-43d4-8dc7-95cb-72ca69a7ee70,3271858323,14701884984115901334
+89fd199b-c12f-848d-76f4-8039181e01aa,3196192923,5680624162921552392
+4b56c436-3270-45fe-28d2-bec5019a406f,1701118225,3844311566762982391
+49122f45-c32d-73b3-5e8c-ae1a0ccbd505,1942144227,785322114637411979
+9ce00b26-ecb2-f1d0-630c-fda1f1f5b3b2,630503827,4295210129274504650
+21fe4da3-eeab-7605-7841-bff135ac9bff,1771315843,10038605532230196706
+36bde89c-58c4-77bd-d7e5-20961a64264e,1973878618,6592640311638270694
+f7433fd1-69f4-3183-fe9d-f24c2b4ad381,3859752594,1979047518933839444
+afda1cde-4595-077d-3365-fdad2d297b25,1314733727,462093307740859093
+6bbdc2a0-f550-c6aa-0c1b-bb1c8ce6e1a0,720893360,16174864753848569792
+32fd0b29-3604-f867-35c9-f97d8c432ed9,2482503890,1361550100941946151
+1808629c-1245-89b0-d490-731315950495,3978421396,17137768373061615362
+e68bfff3-7287-061c-33c4-1fbd0716cf53,1412410571,5592531313715678312
+c7b74683-c073-7dda-e96a-276ce3c64da2,1540893300,6440562035954868372
+b620328d-d25f-1260-4dcf-04e9fbef6c84,3427242967,1696366116489651628
+1c597ebf-fab4-53c9-7da5-649d7e59fdb7,97289510,15436190360353945848
+fe20c10b-a33d-0975-3c06-d7a9ad6a4149,1166060640,12515303895462666544
+68417cb6-2c6b-3b1b-b525-e37619b72ee6,2184342628,5526751709143264184
+26eee77d-c62c-060f-e6cf-0a82a2c0be07,1883336312,14294596165114183646
+1d78f69a-0692-a0c5-6ced-640a52e15809,3771979318,17389878627847267041
+b40de27e-bb06-82cf-d431-472c4c6d0fb5,2310939576,1485068289274316057
+b628eea7-2b02-38c7-cadb-dd44228ff5c4,1032840335,850755319519564183
+e55c7ac7-619c-be66-97b8-f02e1673000b,4036265899,6278018997561991253
+08d5af2b-ceba-d8ae-3214-8f08b23b0b67,1722224161,7229881872792176244
+f02d35f2-a1bc-1812-631d-b42070bcb78f,3933925969,17252066992557211322
+74534d52-dd2a-9d93-5f65-4651d85d0def,3468181112,12389879481961139720
+9cba4fa9-ae68-98a4-84ed-c46797daaf62,1214082507,4499002786705125566
+0efe95e3-dbab-8262-ae32-a8f0a2707d44,2989156444,11733979285146125366
+42ca8bfd-aec4-0a37-8476-6d9556631e68,741617190,2282053785659617888
+227a034e-1ec1-5320-51f0-32488734c9d0,3462837006,11504411511731631125
+3077b0f4-2a30-66fb-87c0-9ef1c8808847,406735405,13750798216715405180
+3e129f23-2b78-ee3b-4b8c-5b35ef120871,2706110122,5184107382727708089
+a47af8d5-526c-c7a3-f477-ca58767b0d98,4095626317,7911780179058907441
+243240a7-d647-3142-bef7-c23eb2a76ad9,2760769370,11798112278383902114
+84635042-33e9-11d0-f8f8-07a9459c0e74,3605417412,8063293942115890027
+3e4e09e7-067a-24eb-4a31-3494bd142987,990797686,11782231891035736187
+010fe24e-ee46-4a1a-850b-df20c6606682,3779402884,5109052981625162555
+afe5acd2-9c93-feaa-54d8-1f0c772eb25a,3486843466,9042948544823680839
+acf537ea-09e4-1cc4-7a57-9fa38eaed8ab,1386343013,5328274799473003943
+6ae9b4c5-4232-5150-963d-a03b727c8730,364835727,17399233559314813806
+8283fa98-573e-3fd7-ff6e-49a1954af7f0,338552339,11984135190365218185
+22f63bbb-375b-046c-0579-dd3c9daf70f1,1807098300,2823119988859056880
+a8183d00-be81-68b1-85d8-da12598246cd,2393586345,2443655711656260513
+45419d41-ad56-402a-4223-1c178f878ed3,2675897379,5659235439303905227
+f7bc0157-e469-89fc-2943-5e6f42c3996d,2104010845,13433441498672769939
+3acc42cb-228e-6efe-9663-d518c9057c6c,1784074069,11791999944449414467
+44c1d765-f6a0-30c6-5a35-ef3a6686c96e,2899561700,15169637057417401253
+bdfa3113-9dd4-3206-3b88-923292188d0b,3147530548,16530852320713906394
+bd46503d-6e31-f1f9-8590-b547092e632c,4144983114,9871069956999678265
+ccfa612d-8996-a2b5-31a3-765a4e8c7220,3319423726,17336118704170187760
+8194403e-1a7b-97e7-b1f1-8208040b92ab,2765173790,16364007039253846001
+0a1310b8-2838-970d-0a72-4126c26ffb4d,3394344085,3535455844816039470
+3a058b37-8548-11a7-b0a4-5cd43ef0df03,858393328,17448945496301215186
+46051209-23e7-c556-0938-3ff192b0bdfa,3112075332,10101047050335078625
+9bd1100b-ba8f-4d7a-5ddf-f09cfc1824b2,2804512937,5175346613956208817
+04feb90b-7719-00ed-2840-db85d3bbda84,970154277,16813952123149347217
+2a76e2be-98b4-f449-6204-8292dbb9e935,18904050,18021122530228616261
+40ad4ed5-2283-d9f7-8667-b4e2495d6b16,4004971070,4437876048162955714
+20628648-7dd6-874f-1c63-afbe3983c012,85553435,6491442920393189834
+1793362d-55a9-162c-a7ca-d32ccb73648e,607011321,18205190700598597654
+c5798a55-f9cb-c9dd-bd68-28071f97f90d,1344052980,18354250190710946394
+27db8e0c-ebb1-df75-05bd-03717a2a9f69,2055593327,11612963726184382006
+a2eea2c5-0de1-7c52-e013-572b6d155e74,2718434248,633172039170449775
+654d9f05-83fd-7404-fc12-574e3bd32957,1568715114,3870655042220390456
+123dd580-3d45-b90d-8671-1d5c927f4c85,4124239557,16557262173860389964
+f3cfe6d5-0d16-ba43-30ac-8b36a5d18ce0,3103470079,3095574162166758012
+89854d19-c72d-a976-98e4-593ae7834e86,3425593367,5012581586185523090
+dc912ab1-9467-7981-2917-2500d395da4e,2353260078,12995618167817974551
+7fdc1af5-9eb3-364a-5f61-d5c312f839b7,3789906158,15864423553253927872
+c574e9c2-e99c-a8ab-b21d-e5373e8676c4,1001159805,2220458126419538661
+5cff6c1b-9d66-8afe-643e-868150fde342,4221924231,10043504765176027813
+34c74fd2-40bc-64fc-cc69-9df2d66ee26b,2097461005,16078713722941602156
+84d614c5-3dda-1d12-88b9-bb287719cc87,1468114189,3241328846555983369
+62fefde5-b8f4-27aa-a209-619979aef9fc,1379141337,13712336117593420179
+1506aff3-ca5e-b0ae-a927-5cc29fb9126f,2793014667,7909582248600750910
+189093bf-c00e-2127-adeb-0f3167a405d4,3799918005,10399762677955109421
+3ecf5900-2e26-8cec-a1ff-2a38e0b47833,4011755840,125418796553336744
+e2c50097-cf4f-9083-e899-5f393d5377c7,3286795152,10740710439647337558
+086aeac4-4f3d-7283-e525-8828ea118b7d,845270871,5704557589221558319
+3f2e3b2a-9414-f89e-5f1f-eb8c6ee28a60,2117415518,10162977717328840396
+c374ad05-1278-bf4b-82dd-5ae7d5360855,2301932440,15600898784503022957
+30401687-5d75-84a3-4e87-51205d163da6,1654803960,16286551959116274013
+98ab7d75-2561-3d16-aaaf-1256e8efa42a,4290484169,14524837922681013650
+d3884a56-e06e-274c-337a-1d4e6c9375a1,1963477373,2427729721851577137
+e84d2fb6-386f-7633-29f5-565b818b5f29,3926070246,11576497944270977766
+5f4fd197-9a21-cc2c-00c2-c818bf29730c,757154420,12130086441069403018
+6e6357eb-3db3-35d1-cb64-d8b991a7a9f0,3839424183,1066021888165215408
+787e2e79-1a1d-7163-82b5-b64517d803d1,3277058848,1368582783439065427
+0739e37c-62c0-c968-0df9-c83630041b5b,595694895,13371476676809604767
+8d7ae91f-3992-5b3c-0b52-e470bb862fb4,171902695,12057214088439805356
+d7565399-6873-3c71-520d-4717e3c0f96e,4256896233,11456961347442135310
+9fab2c0e-06eb-8860-3ffd-7d06d4b108d4,4041044387,8023924499513698993
+d5b71cbf-3d8f-6e95-b2c4-5598ede8b131,2440674932,4707527738567709820
+1c626cdd-5e0c-8e43-f3ed-932a57d0b54a,4151001594,8330808099683203740
+d689f359-a6a6-3039-cf42-26d3a578aa89,2279591940,9671683689524102136
+186a5574-ce18-8e85-ec74-b13e33bed5bb,4172800509,14658146615753472579
+ea729f94-a153-3dc2-0560-b91eba22980e,361740263,9933099034245793892
+f7304505-b485-3b21-3576-42334859a76f,3189594822,4944576232597746345
+d642c3a8-274c-e05a-5a7f-1902f3abb9c0,2871131976,4517530312099054496
+8d82cb06-1e5f-042c-26b0-3fbb435798d9,930318173,3904865493006835271
+8fec760a-2418-e7fb-974d-7673d18b3101,1810866928,1890702109846073916
+fb95c584-0ca3-84f6-3a5f-a0699509c287,1323672315,15050251743491745453
+23c17265-05d0-384c-75ab-871f3251e9d5,2450670227,6503906109272679287
+9fcf70b3-1dfd-e308-eb73-e2fe1e03abc5,3256763325,13538847401268734862
+91688d7a-ded7-4fb5-83cc-cc5855707e2d,2314709099,17117006259900553069
+f99c9579-bd3c-6f84-b7fb-71ea4a23540e,45896469,17882054610836153334
+2f72c907-d0ed-0c54-b5a7-5f70ce94c9ae,2667253782,12541521760134225093
+40e59a44-f0ba-f3e4-d08c-7870cbdcb98a,1454583408,14138065197712186316
+50923760-e113-82be-d067-a23342b3abcd,1462060725,1746820001556547602
+deeaa106-fc94-0e62-ccc5-a01acf2a301d,2455267447,10798323838999484390
+a038cb72-ddef-e057-2fc9-b23e5adcbc45,1494703227,13977534226449905924
+950b0eca-dbd7-0ec7-cd6f-d4e9f914bab6,3402243671,1457358777660090398
+5b1b0ad2-d53c-5202-fbe1-29708600e1aa,2583491239,13159442619026059294
+222848e7-1dfd-ad4a-8268-8e27954fdf41,516724498,1258280153205629524
+c106af00-3f12-395e-0e71-0fcf711bf46f,2017081656,15512772683908189418
+dc75e771-aa87-ed19-197c-81899070e11f,3312437224,13289271766099242160
+225b74d7-4178-41b3-f63a-cd530baaabfd,1597009274,2303972357808917464
+9a8cd4ff-66ad-30a7-0a68-7f0bfc87175f,3387981646,18119421120569454985
+1c3d2e42-d393-9685-44e8-59471a73bacd,3305284105,12687888557260470753
+a9cd779f-ea29-c67c-1fce-7697d8a1ded8,3263920280,13905051873564681651
+571cc8b7-38bf-870d-509f-007d3e3c9d19,2342235307,2754087946073750387
+cc0a1bc3-6e14-dbeb-adf5-65c30899c2ee,146757594,16981153985191524642
+95122f89-655c-7a5f-eb65-84642612305a,4074736056,7043547060290441750
+312a1b8b-a36b-b8cf-74ff-81bf803e619f,660378581,6821184985327900578
+1a860ea5-0d31-a6f8-0ff6-20e291773d16,513115356,15962466441562511086
+8d6aac4d-0661-3817-a99b-14ae81dbca29,1840527789,15252763127484872805
+3e1a0b8d-5781-4952-56ee-b30d8ffdd404,3322971579,5527864366678071928
+2797e086-b23f-40a6-ce61-52bede8b6b3f,1884853774,9992958974400404595
+10c937dc-a215-c2f9-1ef6-a632a1a5d2a9,43085874,5719713077958137435
+f1e73d34-be81-a7a0-f05e-be335b93ee42,1904426319,11980961862499553849
+6d440689-6c44-85e7-ec55-86ae192067f3,2744251545,5160037418105661380
+11eaa7be-8d4c-7f25-87a2-5159a3fccc0b,2394939043,4991662385047056578
+86c9b31c-957b-d181-79b5-ac8d31d78460,2579526670,14114350605909511000
+d4ffb05e-3b7c-f91a-65c4-11d7d62e41a3,3802876427,11339388510757982318
+500922c9-d092-8d48-8a3f-029cc49d1ebd,3695592211,6897910548938557623
+b235e062-86a5-aada-af45-2b79847c6b26,350491452,15692005265472752214
+c10a3158-1c27-308f-72e9-8e24d72df5ab,2096471610,14651717823818426170
+f6fdaadc-6e8f-17ed-669f-7b2afe1cf49a,3435077457,5375772601549250354
+3c86561a-4e2e-9d74-3189-0bd474ac41ae,2359108116,7350784122920421844
+576f6e45-d867-124d-73a1-2eb82d757a68,1435402974,7482619614521522068
+af3bc087-90d2-44c1-6e77-c6213691b9f8,4095180185,508308530837195064
+041aea46-ae26-bb70-cf2a-da9a8b0635b2,921199000,10307450592882840972
+b8737ef1-4dc7-21b9-5f4f-ed1821cde732,367217512,988512598163027276
+d56c1098-f29f-4b8f-07e1-c1c980de7441,3998416629,8215558836273416344
+dd6988d6-0c16-b097-071d-80b285e85de5,1034219539,5607221775579060093
+370d0765-0907-79bd-8150-fea15d0f81f3,3316524154,6845078837483428559
+a11136d3-dbcc-1d8e-6150-7bf0de352a35,1079896919,11852881348285157013
+2c874e32-fbba-49c7-b410-9260dead55f7,3501296233,12881310903577888218
+dc7806cc-8645-cfe9-8728-1b675a937016,297819615,4260222163559526736
+18be2d3b-de4a-4ec5-653b-1f4fe597fa28,1933328744,2663775929017137736
+341a508e-6202-aa1e-7069-8f83638b4630,276200475,15241266943833578177
+b61c599e-b5fd-9188-4cf9-0f86c6f8d593,1393468983,9020538513665885124
+7824b063-45c1-b493-3acf-3bb5c7811d94,1294210945,17287705997167028471
+08791d73-f0e4-d374-fea2-71a265646154,578168836,9099203216694144674
+0ce94c9d-8d19-33e1-25a0-b9baeb4f13ae,3630378458,11127625451766235897
+61266d58-87cc-6319-8bfe-19a91f83e6d6,1034935859,3825841839558535176
+0e2cf011-fc60-1d2a-dd54-15d618bcda19,38500046,10883129175779929056
+6eeaeca3-9e90-6a92-495b-cf927292a164,4280715729,17275271126060179275
+fa6f29b2-b398-f545-2398-8f8ed9e49300,2029344451,14898374581169588841
+f9cb5b3e-3e1f-c717-fe39-2c2799128a84,729261188,11304876056606129211
+30b30cc8-ec38-11c3-196c-f9d793a7ce0c,3382488470,10157010001427320798
+e21ba345-0288-8a06-89b6-a5d6ed44b93f,3968655446,18393465495265074707
+e9fb5980-1fd0-7704-6b6d-b70e444631d4,3421335729,6462734422061207616
+570f859a-8a88-92d8-5b85-42dfa85867b7,3531969674,16841878613968846851
+71f51f1a-d7ab-cdad-32d9-ae8485ff5bd0,1315874174,4801945157449124043
+5b513ede-6b15-0962-9aa2-bd5e737c6296,3810571873,7316116582377668413
+030800b2-0a97-7eca-9029-e695f016c307,1937476794,8928404139108116020
+f72915b1-0e05-47f0-5d7f-50c14f5a51e1,960898850,13430959929874702570
+0f24578b-1f69-b41a-03d7-ca5387bd06ee,2201335673,4083474745688723676
+573af7ee-3561-15d6-cd83-ea7154a8a3e5,1595794119,15996801889611729093
+30e8b580-134b-0cca-ab5c-bcf7ea5e8848,2044343749,8224737632967168217
+937f2567-0586-1e98-aec7-d1971beae309,3817319390,9879315649404304377
+c2f3b34d-93c4-4991-e8a0-9189525e4ed9,4141744499,14912217644068443093
+50268219-6217-0d9b-d67c-dd3aa024542a,1431003808,42083747013786303
+187bfef6-b761-b6f9-bd27-c4884db94767,3813891704,6057575244300441551
+af5f2cc4-7359-effc-3036-e7005421787e,1093792748,17069177008516713828
+6a037d7a-a1de-e726-e3fd-cfe3663d6d5f,160527962,10571002496908865482
+00ab582b-f7ec-5534-179b-4d3625fe3e61,4104919431,11010657974284297688
+86e9c7cd-2a19-8700-275e-51376b70f67c,470041835,11716864479599386898
+8b026521-26fa-5253-3ff2-392a8a5a7561,1957339965,17136898978633507949
+ebadecbf-344f-ab6f-345a-1bcc61672b4b,712414584,10865831190043781572
+c4c8aefb-789f-1bec-4109-98767b40ad74,1304480007,15600459104220894613
+2a6c6055-972d-a039-a08f-5a9387f1bbab,1070784770,13281153763787296035
+d2bfe734-c5fb-4b70-857d-097fdf3a925e,359879957,1797203389405178283
+b32eb2c8-7072-13d3-e4a1-47a4358f9d2a,519791507,16575342487060794964
+942da223-44be-797c-5b3a-b4b3ebb50661,330974431,8963189069515132530
+2167b24b-3995-1e06-8558-9cd8740d7d74,1319447124,4186854847655809428
+cd4b33b8-ed2b-dfbb-b447-58444ac7fe1c,835455972,15472909472396086156
+9f2e9ab7-7aa6-49d2-4279-4f1efd8dab70,1163347257,5631546600343817350
+a4b82989-0961-8beb-f55f-b1ce40d49b1b,2971283585,14580390006709440716
+78848a6b-8c56-9056-51c2-8311c7e9903c,213595876,14335431289891668307
+9099c53a-f755-85d7-b6e8-2431164d8ce0,3497091449,17123464178611159075
+ed3c97a0-2454-d2bd-a200-cff14af54365,2838244015,6170951012140893815
+830cb7a3-da1a-41cc-73c3-0ae6ca930dbc,1780568252,7354461965866535116
+5b5597df-8a92-e77f-9108-afd9ff67c1c0,764275442,13131220291163638440
+15fa5546-53e5-a10f-5f17-ea8cf5211954,277699959,10617615094639789365
+18b3f544-2f4a-6087-127e-bd852cda20f4,1701302832,5412644060164647045
+6f01a816-1729-12b1-389a-5924d094708d,3497342355,13336678268237339006
+03d70e83-d731-0e74-f90e-3b308d5787a9,3672245189,7966696346062448291
+5342852e-d896-b8b6-b889-78151db230eb,673081743,3658762118484217687
+f07aa3d3-14f5-cfdd-8882-115f12baa2fd,3221738149,14364599898370089450
+14e413d5-e73a-7365-f717-dc082b27c05d,2025774950,15501082768806563896
+4ffef8ef-b779-e827-8539-f0d71465fabf,2911375827,8635839857232836454
+8bf36f2e-9bb3-9d35-6c16-f5993c2fb847,2744390023,214623718632089829
+c3e2cfb1-08ba-5ec0-61f2-67b908e31c69,2948734179,13533362460178008689
+0a8b9d6a-cc7d-8df4-3dc2-14675124a81f,3969517612,15561826486937587604
+65b0a790-c822-d0d2-c0db-80a5928289bf,2379789595,7400663676019037924
+c53d8136-b0e9-b1c0-0902-6e1bc4073fea,3049895260,14348552807961175981
+40b8bf80-dead-e081-1b73-3f45caeb28de,1908654178,5374284332553567210
+25074c12-9617-ccc8-baf1-3c06ed6d33b5,1180494593,2489251147193171148
+4b5dcede-fcce-c1d3-6b5a-5f9b9db29447,2500005052,16915377956660903299
+8e3efd1c-44d1-ee72-dc7c-3e71f48765bd,2937691036,9587705967841769136
+179ace06-073a-1310-d644-77188fa1bce8,1922902017,3187922520149538908
+1ac3a882-dccc-9fe3-c2d6-dc720da074f0,2886023815,9535297885613863778
+607fc259-d681-2ca5-9d35-8a3b8c61cdbb,49091457,9223178348882853419
+cf3cc72c-b8f9-1e99-c216-f72c286ac451,1783405488,16685250891239679128
+2eaebc9f-5201-d3e2-e27c-b3e39d6b4720,3328104512,10511291056398022273
+6cc175f9-ce6c-f124-1c57-ac685fedb5aa,2191530706,11379030718320159102
+8325ec26-1902-9b14-6f3f-5e43caacd2b9,2506479665,4937776062466068293
+5b25e292-ea47-150c-3f2a-c8b5e8b3d858,3973778478,1094389243114042215
+74cec032-1bf1-3210-0848-c4b71caa081a,2190300455,8383891540860700973
+4e1ad098-af49-8de0-0464-3c73c6aff784,63690063,5805444887636447188
+5f29de5a-f647-b094-fe76-5083e5c3dbed,2753131357,18080419141285785834
+8f8b6e62-2db0-3bb9-b133-8a0a53c86e94,3455598749,18293265977418264767
+4254c512-baab-7e58-5b3d-26fecc19676c,231582386,4591861356681433908
+b4f44445-947d-334b-d537-ca727da2212f,1955304018,1988044753248195170
+d8da8929-2de3-42ef-acf6-74f27dd2a6dc,393956286,4865225688845303121
+85dd31ed-7b33-2ea8-1a23-81921c38bd65,4171278403,8689729444387941164
+e85aba4e-8f57-9977-a2c9-244add2d2101,1351865816,9722792287840042083
+219f92c5-b9e5-df95-beea-bd5b0802e0eb,2855027622,6099728558270625443
+0bb8580a-a19f-fb53-d244-98eb120f8d25,3079940298,15952067776648124003
+9833efec-80e8-bc5b-6681-f776abfc07bb,59862410,15219916581004145183
+2f6da1ee-f3ec-7fda-e598-fa99b9641352,4271477413,17807144360070406641
+e5c9b2e3-ad36-275c-3940-10c3ecd63bf0,501379843,2317282921873674233
+1925819f-0982-56df-329b-c515967a76c2,3647891319,1178796698669832063
+f1e1fab3-578a-5351-cab2-b8b7f4a7df13,325789305,12522184625957910214
+ec84a810-3ef9-818f-330e-e8ca712d0f59,1991897318,392745367875661578
+ec7cfd5e-5d20-382a-e8dc-7e4ff414e0a2,3149477416,13157748364447161466
+ce3da88c-bdc0-6ad1-e606-021ab9360f4d,951571511,367526629777725519
+6a563567-f902-05e7-7c9c-6cc536fe240b,4239265328,3574531470532106445
+ffdcb581-96f7-6ca2-acb6-b8d000c9f4ed,1236997566,15954021878951397934
+1c946f83-7cba-c2a0-f2a5-75aa6bf5ab86,2280643291,3940068219003780932
+336862b8-f02f-8930-6576-e813bbc352b1,3530702946,16755941605434636854
+79cae403-3c15-596e-69e4-3d0048dfdd69,2055176859,11428642417230799948
+1ec879f1-c889-dcef-ea97-f150237540ef,562833840,6367859445978476067
+da40f9a1-ea74-0b5d-11c3-91127fc1cd55,721152153,14424899618273718826
+edf47ed7-0cdc-9d0d-dbd4-6827b6001c3c,115223476,9294345702224648892
+fa75a01d-a22b-7b27-717b-2fe47f1ff6c7,4029812999,7638856843846034790
+ac14ed02-f289-0d52-4341-9628d0b9859a,145048459,7345406603828572441
+fa274be3-1c25-da6c-2c54-17795eb3f91c,1733905511,107376785840882958
+96267175-4537-76e9-4d50-6daa8d716ccf,75829851,7136982256886852893
+3708dbd4-dc94-385a-7fac-f8f6320ce777,1696701772,7047059849624692609
+1f9d6bfc-7077-fe80-dce0-201aab729850,3088476440,3086195274001778085
+fc7629fd-0fda-df66-bd05-cb6fb25a7237,224816708,10282758747324465206
+7bf46ba0-a479-3871-ecbf-d6850dcad325,4068084134,7332341673097893198
+8cb0ec70-9440-da7c-9fe0-c3e0d6b28283,3626063444,11922239544988745612
+2ad21125-d7b1-b25b-e66f-efce3e35f070,3587415689,17553096326837574319
+f0e69008-cce9-cd03-56d1-5cb8c63f1991,224378710,15832642651044046290
+74ed2a93-c078-6897-bb93-eb3d3a61d8a9,2096239379,9070562776116886635
+5a165327-2aec-cc45-54b5-8250c0dd4e7c,3168585831,485545700471987031
+ee821ece-f3ae-fdee-b769-9e13a9c47c1a,1017074644,14728399765848196380
+fd7c7b05-99c6-63f1-fd33-04870dddee09,3721556692,12885906082843782070
+e2c5029e-a471-2a2f-7589-93e529f4304b,3575723845,14809486139105027620
+5efc017f-93ec-68f7-6b3c-76d7eceaaf21,1620059322,16533009690432210649
+906ca5aa-98ed-1b09-1db1-72dc10d105ca,3644878132,9079514498109456343
+62049c3b-e492-ef30-4bce-0119d02e1fd2,2899824072,7109117946618538824
+a1fdf9a9-d2f3-37b6-0778-2d6870310ebd,2623632182,1464362669949698822
+650723cb-8a2e-9130-ab54-725b67a877b4,70341473,6537511391530618872
+641f9677-3dcc-ec4c-1465-b220d8ef4a65,1937296350,10496600681323366177
+14681bed-82c4-330d-e6ca-854f5cf7beae,1539989327,1981949077067250378
+f96ecf1c-3126-2179-249f-7a5fe03b42df,3004852104,1521301369089127411
+8bb56508-135b-14f7-34f8-f2825f4f54f6,2377714167,17659365782985042505
+dab12525-1685-82f9-e210-dc42bd68727b,3213529976,3047219833546823653
+d06ac513-fc93-92ef-723b-5f6f7207a428,3896432256,11313075966907280933
+d16200f5-8829-f063-3428-15ecf34beb53,2097317218,12400407448663517068
+16510b91-4ae5-1608-6f21-4791c4319084,1213729431,7218212311266517154
+a388422d-b024-85b1-ae28-34e8ca744727,947447665,12498574456398840045
+d7f93184-7af5-4f6f-30e9-62c5e9ecb1df,879768366,11400971023070913320
+1cdd88be-560a-22c7-4d59-bf92ed44581f,199609995,2896049579304652050
+b14d2052-b5c6-1c8d-c78d-5a97c72a156e,3951200063,5835702476864165046
+a7a14be2-8b37-9d4d-b8dc-44e956f82e56,3453272274,11166072595962740768
+b8f97def-59a9-5671-1be6-f3b003c68a47,2670315124,181169413755052702
+0f119845-10e7-33e4-5972-deed1b497679,3015979072,1618536206586303828
+aafb3478-fbdc-a86d-9795-2867fce9d02a,2167017532,12490647177259140700
+d2e86218-4e20-9abf-dbd1-b1ce71e3309f,3659847051,10537674934057153628
+8028338e-7014-27a7-bd8d-9a89e2ecaac2,3806696628,17463836840380323533
+b87710b9-6aad-45ae-bd37-e6b3e1a71c8b,3972960851,8910783005609307241
+a9af3a67-d619-5da5-7bb0-c4231c11d263,4024320739,10319846792100409436
+48b64173-b3d4-5cf3-e180-e7d2880fe1a1,978160574,7443307845159402288
+8e62acbb-b28f-e4e4-8793-9e8deb9ce85d,3495486587,4803197142405697273
+77a52a1f-b067-ee71-eb40-acbf38b52e64,2404009089,7313309822756895604
+3fb63942-a57a-47c9-516b-a32abef60927,69713562,6580589939734708778
+0fc54161-95a6-119b-995b-e62766adcf7f,3952526227,3767464918987186084
+3b1df001-8ed4-b7bb-33c7-5dcd227f42a3,2332541904,15386876475022007947
+20e700ab-6b55-4d24-e3ca-a74ca0b3030a,878835888,17464120980692786333
+3f087627-3324-c6ed-42d9-88205a64087b,3324533897,11081598883786543538
+5e0843d0-1618-1a4c-f1c0-8fe2a153fefd,2113932210,16753795214707918048
+23f31d02-065a-465c-0527-f6dbf56c94f9,578121771,2374966955629649172
+e4f6d6d1-9b9b-163f-fef0-092300b084fb,3131490799,10241585293945002207
+600f5c34-1ae4-2e16-8085-9d082d020f79,1958382640,1600230418900754823
+97143dbe-983f-5a6a-b9d4-065c84315fed,3907079851,17446881219070211779
+7decad35-c829-66de-da18-5ec95b90938d,2390710919,13678947289459615936
+5760484a-3835-d0d2-296c-986c745d4529,2962716032,1972649804764815129
+3080cf89-cde4-743c-219f-3bd042749cf1,267226240,17942262281281589996
+227444f4-f147-9176-cf77-7fa78da63e93,1913960942,1868506685970333461
+bb345303-aa86-5925-169d-ac378767ca1f,1193596628,9787543946312184891
+0a8080ae-2541-a0b2-1c91-a000c5c464a1,620401010,3918612161322235261
+77951f63-ddb2-f5aa-a562-70402884ad95,4174200295,4882777868900257743
+12413fbc-e04b-998d-8dab-271b9205076b,4245725359,787056976108848562
+fe54d9ec-6de1-37bf-89e2-20d640461343,2694532704,1896221606858619469
+3f5c8ee5-bae9-5954-0aa7-6c9754ab077e,1499788318,17867663113490548128
+87c5fe81-fca6-3d8a-eb52-4a1d1ee46db1,1916595364,7449880359762478135
+17f80f96-879a-3c9d-dd0d-f0fb9d6bb8fd,183261671,15381235279107722027
+8eaaf215-9f02-0075-d940-237dfe078814,2006145124,6306459994964506185
+eb7bba3a-6c10-6295-dae5-5bdf37b31056,951818646,16866959186971436504
+11926476-fa4a-feb7-c15b-98ea20855024,3401105925,8646350512114016271
+c8ec0a48-4663-6523-ed35-f63475122939,898513105,3939692393355209483
+b1324448-4c78-36a1-61fa-e6b81f0eb3b2,3993873631,11333931298881768318
+c02325e4-6e93-5416-d8a1-68e887e673d8,1844951438,16446800189594602862
+e95fdf19-4b4e-c27f-cd4f-dc971afd1929,1355351648,1714692519611470997
+1def9b04-09ca-9d6f-d69a-2af5995329cb,2374881451,1095014830925747270
+75827d46-0fc9-f141-eb3a-b5b84ebc405c,244205193,13368803937764596602
+e9f3f677-9ee4-7ff5-3727-d15649496161,3759651273,11067962556790480499
+b440bd9d-03d9-68a7-1b86-68518606400b,1492253396,3172608256100425076
+6b436e6f-878b-ace1-0863-d5f9cb3b0968,1708117525,52040248504393027
+9cb79a4f-b132-7cb7-6338-3855900bdb01,145588156,10346193816345401554
+a646e400-8fad-d6f4-510c-11bf83f3ea94,3879519800,10129185525166855684
+d9f4d983-37ad-7234-4243-405e8e0c0cf8,2042079718,2545061015440182081
+28eb34c1-7abc-5356-84cb-e755cdfbd367,3616622834,14976293416011990866
+90e80085-7ef6-c411-e62a-f90b9253c785,363149790,1901894081472129107
+48dda75f-9563-b44f-5f73-f5b0053d0b82,371664442,11589410903812022551
+d9b6eb1f-3263-51ad-a267-47e76ed31162,4195217368,4106955681444179109
+17debc69-86d8-d68d-070a-9984af8381ff,3161932977,13268033624620597137
+967a0e68-13b6-eb8e-337f-f7fbbdab807a,67791095,11593927560945773463
+e4071967-2c87-61e8-896c-2c96be672f5a,3061777993,5483505898320183557
+dafd8adc-7555-41f7-52b5-2f1232d896d0,1879075451,17089280072457382738
+dc5598a0-a761-619a-47a9-3c6b5c79aada,3925228422,15085743434917045470
+2a5b8bca-86b1-f7a7-ad94-84ec1c5b25f7,3127716438,12341350834949730347
+c9fdb91c-c38e-6028-973e-518cc3075d9a,1905331458,15158697348662051572
+f0cef111-95ca-1c0b-a6f5-e4a2da078833,2239019885,11396641837628631063
+d2c8ee78-3efa-4a65-5cb6-f43fcf4775ed,1971509255,8616404816033475404
+a8e9a765-7a9a-b73b-3dfe-f6a641a35e5c,526406544,16611989998013838513
+c5336117-fc50-ce87-983f-9e9ddc52f3f6,2099719171,10904562146946097163
+17754599-198a-cbe2-fac9-e5f2f7afe287,361265954,8772662576691865782
+fafb84a4-18ed-2cf8-f779-355158559b51,4146599191,11984853904267719837
+f1d994a1-f09f-9388-a43f-b118555459d3,3352142601,14098344738110262391
+81119031-d43a-1e7b-c55d-60d979aac6c2,1620640884,6365173406539023167
+7d4e1bea-4b4f-4488-915b-06c452ec7586,4256348656,13905377247203825744
+be414770-b83c-5dc6-6698-612a129cae9c,564751813,16633002564221340924
+707353d7-6628-3e75-2dd0-9f61c2bf7471,2397245964,667721324081950126
+ad2363c0-b54c-55cc-2972-fe2b88749ff7,4000943127,2347855690998481425
+7597e3c4-df81-d03f-9d0c-182dac16b5b6,3778650736,9946906496665230259
+bb2fbc9d-e155-f8df-555e-14cb3de834df,688868384,8910459074793059834
+29b098cf-32d9-77e2-2dd9-89658b7e3e38,3081742432,844909662495259889
+d350a756-2fce-328b-0028-824716a52029,2316960991,10919820489486014068
+107c9ad3-1052-e16d-93fc-4630631632ad,3376794303,17925089302026890789
+b7917438-322a-5a6e-5ef3-652525491097,867946859,6161808967438187901
+9debb188-5b73-4f0e-217a-c87ce46261f9,657826929,17591379202440530784
+822f1248-e9e9-f64b-b395-1bf05c89db86,516602624,9571263314317789433
+6d063021-c813-cd2e-ff8f-846c0f805010,3421237395,18360887491198721567
+9fbb7361-e6d5-d284-60a1-3c45e7152809,1957894611,2795458813992172504
+bc62eec1-3b3b-24f7-6ab6-1791916dca29,2932028304,13920189222844306280
+d97ef386-7776-a891-ea34-e094cf066449,1689311040,10161889086951878706
+837b5b8e-6a79-880a-29f9-6cb95b6f7145,3198590583,1353151453143074652
+41f777a4-ec0d-0cc0-a1c6-822c529d2f78,2916237823,5557998114520464746
+58124c9c-a711-1766-8cfc-7394c2d55da3,164340084,18158154418134595180
+cceb4418-f55c-506b-9d92-08d1e7942754,829810490,10745652207602852938
+9b844fb0-f247-cc95-d3c6-c7cc86b2ff58,3786661661,17847166577798544328
+2bc4d824-8388-4150-9433-60208bfbbd81,2588926368,11543470660158223393
+2c34326e-37c5-aa16-05e2-43604c6b78e0,552169773,13170202625384474377
+9baf82dd-34f7-1118-e127-44f52996a076,3617244927,13404414803602617275
+8796ca58-7d8b-040f-3f54-e8a93cd0128d,3025160099,10421185059675131652
+583eef1a-cc38-d945-2287-d85d5fd26804,1371729051,18432846938620203440
+1f16db2c-1af7-3ff1-5f18-e797191beff1,241814146,4887355560622171539
+fed4838b-c359-a064-ff70-2107d8a8ed96,1747969400,9576991474176357860
+96ef590f-1ebc-e94d-56a1-4e8fa545dc9a,1263133336,9104760754409992085
+2f482938-3c54-6dbf-8099-0073d39a0daf,2682915762,4420562589235580428
+bab491bb-aa38-7546-673b-e406cb764a4c,921518157,13250469638357106027
+7a9cd4c6-6202-c122-819a-a85f65fb0809,2014165030,17009855864853485033
+b469248b-e65b-ec01-5bea-6c31f19eb053,746872657,1778120506395295686
+328792a1-6558-4cf6-8780-1b1a7538a311,3106479907,12251408681021336601
+adc69a81-688b-f292-5fc0-41277ff1a10f,753642990,17188563204704650163
+a1734705-168f-1e74-5f94-bbf92ef4ad1b,2030316725,10054337223604281945
+fe346e80-0f28-d216-60ad-85b01fbc3ff4,2284522797,18294931128978552760
+61a80343-518e-e73d-595d-11da5e4611e0,2588386631,11507256077806738020
+26108aca-6781-3302-a0c9-76b4599adc26,741678357,378831694861432101
+38a0ca38-0dc7-e0ec-752a-3e13c5b3a498,4254403885,11560020314602877072
+5317eb34-ed66-2479-536f-409869c6a71b,372247269,10275382798958604059
+72a6096b-594a-b384-ed1a-e9b292c95a0c,1387606251,17184281272686017098
+78212a24-782f-04f5-89fc-d96412c8ddb7,1783795504,8456659889238229524
+46ad6ea8-44a0-865f-75be-270a28df1fa4,2399406310,8927584606417295023
+73fead63-5387-2110-b7bf-1c9dc4e6e473,2909047887,15996013206216713207
+8ddf1c3c-98f2-4cd1-1aed-4e732d6998b2,3030744115,13535114698740176474
+c34982f2-4932-5692-c599-c2dbd217af59,1904818797,16367729764453759860
+5a4b19aa-c8cc-ff50-4f5a-2dcb12099a40,2756904007,3040135272416090103
+5ee5a623-e624-1ac5-88cb-043f59742327,887603630,15139172466254255150
+08bc09b4-d3f9-3a79-63ab-494238363854,4118324762,16389624195458992295
+058cfb1e-904b-83c9-8613-2bb210d75865,877221309,277434551867128854
+59304615-5526-b567-49d5-838029482e63,329006676,5527883269813179238
+9d6cb74a-7ddd-50dc-79e5-661949b28687,1615319747,722645350056318972
+6a43ffc2-df55-6a46-83a6-2ddbdd87d385,2260103876,14071023427369056130
+c36ab99c-483b-9b86-cc44-c38948a3e69c,2496711769,17662454379303361963
+5f785c48-088c-0af4-638f-593b12eacc1a,145265009,7570297531658892146
+5d1c3282-5303-9515-4d91-350b045bc075,2103098790,14590666330860992767
+d0c23f2a-8de8-aefd-4a5e-0ea76a7664e8,646122219,13871244053908210129
+c7568751-1bd0-1aeb-91cc-6b1d5a0e0768,2096171096,5688532871791921980
+351d2d4b-53a0-0879-f0d3-e3b861ca540e,1941417547,9333764836186114507
+e8a8090b-2048-85e6-200a-00f048ed3074,2016632677,14697685242647862786
+9a9a8525-d2bc-fdbb-84a4-a073dd3b5fea,754082493,14380346477948805468
+85195cb1-026d-0663-cede-d04e391564e4,659056305,13494170895198146636
+3d5d1350-7ccc-65b6-4ae2-96a5bcf56e88,3322504589,1945067866437487626
+bf098744-a6f9-c1d2-00ce-ee913f9a51ed,1755956299,4312848958639215372
+106374fa-2f7a-ce03-e757-9efa8b2644b5,1152423344,8168918852266556910
+0957b0b8-e7bb-e4b8-a5ba-28f4d89d39b1,3306435032,12298944705539417378
+843a5765-bec3-094e-ce00-ff16479471eb,1715202064,18434134750313421764
+fa2ab5d9-2c4e-218b-4c9e-39ebf75aa470,1699315236,756759433484024057
+2b08cf66-751a-c19a-766d-6b06d4551b81,2279194437,2886436955038146167
+c0b883fd-044f-95cc-d3b6-a795d45606f2,700233957,3840316151076968481
+dceb431b-a964-e5f0-fb90-4e84dce07358,1619619391,18332183485196833855
+8a6ef221-2252-81d0-a9e2-5d7200a3e09c,4287634464,12928211085949169281
+aa8ac9c4-5887-62cd-e257-43712b7203ab,3559608230,11307209993233906129
+84d997e6-204c-b8c1-581c-42e63150bacc,2934010198,10603980740369180912
+321bc0cf-aa56-7f58-ae2f-780ba8a004e3,2148223912,3425658970719484522
+71cec37d-9439-456d-c7e3-90f107c2a35a,4175143804,176823521374546591
+9fafa94b-6668-6e03-6882-5261f3267383,1269107419,6601314061391231464
+060dee84-30cb-0816-f57e-9d6e90fe272d,1995621962,1524582579095528363
+a92ed308-66de-e009-4f25-61511c03ca9b,3970862228,17968248368003511283
+de58966d-e01c-3ec3-fc46-dc4c7d264e21,2922750712,2700036469203958340
+a240608d-b0a5-37d4-0e33-f659e3eb2011,2195890867,3642715359949646639
+f0354445-6943-c329-0b13-2db9c66b20ba,3478984720,138620624998594451
+c732d85d-ced9-1c01-42e9-770aa6b03f55,856597221,13526399455189735193
+e54b6a6f-cc69-b743-8b91-d447526aaf30,1748343930,5263714644833890301
+b771357b-13a9-b82e-dcc1-3acff602dac6,1287797868,6774180384373671799
+85ce5bc9-e28d-e1b4-a73f-67205be81a5a,2827882522,9548813306355671786
+2d811537-cc64-96c5-071e-7fdc911919c6,784817758,2416832806435964887
+ff5d8bce-4cfb-ac1f-de81-d8cf9e1c09dd,4238761317,2720324816055038282
+983a61fb-2d9e-1792-eafd-27dd9f9884d2,2057764277,612316330604227749
+925d2889-56b9-3b82-fd05-3eb6e77a703f,3232679452,6558016633318577019
+dbf90f84-3798-a801-c67e-c790315081d7,2767189183,7885040024191424910
+f116419d-37d1-5279-2e93-7bc6b1cf57ac,3271245177,15726107068528637574
+b2fd6af4-5f9e-cb79-7dd4-cf293e7f7555,1362999012,2803819773223309386
+7a4b731b-9c89-5472-fa57-d649b94703b1,3602531667,15676752265481420741
+f7f197f8-e780-df8b-d1dd-b2146747183f,3322846544,4598615590310874962
+94fadf75-9cd9-6030-cc3a-13214a5974d5,2020203306,7361011753623056086
+2310c6f2-a8c6-d1f6-14b8-fcf28281498f,4114362951,5859341147599182456
+8af95233-dbb0-01e5-0028-34d53e7a6e3f,3288916416,3353255549803393875
+0d14dabc-1f45-7bd1-600e-1452f68e8de8,2644176400,8440668437095370984
+c744db84-00b2-f84f-5c59-93673902329f,3951007241,2556000457334587534
+64f6dff3-522a-91e3-151e-c1b15f8333cb,242778348,1544392432970612417
+a76cdcd4-5c8b-4d08-73da-6fe414074619,2074253399,6371113983307001647
+d17cbe09-6d6c-6dd0-2c32-2422126740aa,3037449254,9828093342120473683
+4082659d-8987-f039-27a9-127bd21b0102,765413711,2006049426519998275
+db701d37-b82f-031e-730f-93f337058e96,1055440980,5363737620130637017
+1bcf982c-75ec-28aa-0bca-ae7ee41cfd27,2056030335,482393400746725620
+5d6262c9-78be-109e-86ee-9a2c897fdb91,3121287438,18108519834128854858
+27fc0ccb-5e4a-7340-baab-1af81f589923,2939318735,2936638343471933037
+b183e79e-41e2-39c3-446d-111f5c38e70d,1701943883,7299139498562094485
+d3593ae7-f5f7-a490-64ef-08bfdbdc56c3,3035095046,3269533033305665870
+92ac048a-e036-c069-9c58-001706fc9965,1791435893,2261653706072243279
+60bd135c-0bae-5ed7-1464-281ab67768b5,2833665131,8263589699639827590
+5b562218-4f52-e3b6-6c7b-3d1b24249f5c,913244410,5059585585819620691
+d00804bf-4537-1624-3ba8-82ab55349420,3576833218,13875491241108874021
+8faed4f2-69af-474a-7299-c63e282eb994,3140282982,2150419263506446767
+f537d6a1-8b0f-9509-d603-77f06d8f6287,2506892053,14946873678600168331
+32226600-8312-f380-d1b2-074a1b65a787,433802614,17532615291426198927
+b613693d-2911-7713-f803-6f8d27d0e23c,4488075,1890247398032437520
+5fc54cad-252b-1221-f0ac-0c20bfa64201,51910034,8528434114553130750
+13186b52-4767-020a-3577-a64bfacdb5e4,2578825923,994302140189022411
+7a053a99-4492-c8e8-78d7-e3a556ad87dd,1151380272,2498752246654127670
+48b8c3a1-66fd-dd07-225b-50c496bb9408,1586319228,2217316766082698970
+5f2a9f27-6774-0e16-b343-b2428600403f,1560096031,13011585539028906341
+775ced88-ed69-63b7-097d-24b8d8e724c3,2614155628,2363902795528142177
+9a8a92e5-6788-7a25-decb-6f4d9ae6ff91,2302642958,2781096072419681735
+1bb04097-cb08-9207-386b-be2dda9d9187,346156509,14625651697502580168
+ad3ce7e3-3821-e664-4076-433dce7464f6,776012268,11078087879911692825
+0d1a9aea-d909-34dc-3a6a-85d67132a08d,2167541386,15695719622179354136
+949b4253-ab95-c29c-9b11-fc603f6aa2a2,2264234203,17089609984250084292
+1ed525f4-4f79-38a7-532d-4ac62c7072ab,2184716984,8379430483690577149
+2f239ce2-9137-5944-6759-bdb3035e273c,2993317446,10509968850021321440
+35c058c0-a207-0712-cfee-57cf5f2b9a01,564417016,16356978688504611456
+db944fdd-4116-eb66-3954-5593fddec81e,2879764863,3965056905674006049
+7843addb-2cb4-73b0-ea4e-cea6a5449d96,2673454408,8657853149537477928
+0c49bad0-38ba-0faa-7485-ef9c4104c0c9,3566390007,4946406471643665257
+998e12ad-45f1-8d13-002c-db0882296aa5,3787061304,17187700074213632939
+fdb3d7d2-12da-9d1e-93e7-8e8333ab83ec,4284652057,5483361731436366974
+550dca1d-e2f5-7c8c-5a6c-98f0db34c429,3985697485,10270819746685229089
+b161a63c-c7ab-4555-cfce-27e63d36507c,160262281,2819110026069539771
+dfaec666-7f2c-fb4a-bbd5-7d773d3e0389,15908034,8800359738649877975
+1ec2f41d-e810-0811-fd56-18f06c1c52b6,2749166025,3279232817807432430
+a0550326-1fa2-6d61-e852-2b673b23a902,417616557,16486148448968920622
+f5827a73-8989-5401-8608-b8d822681dee,2381327291,6262291238174406443
+53d0b002-7d80-2d5e-bcce-cb33214b23ca,4124463093,7986290495555276153
+02959b35-0420-51f9-d4ef-998d3e19ac2b,4014757272,6548612127116084020
+f7fff6bb-b0c3-3ce0-5d7c-1eeeab44e52e,4245100563,803430271782753694
+5b109bbd-122a-60bd-b150-2ad4e9299ddd,3784713672,9036958681201316120
+1ab993b7-4ba5-1d32-2bac-9d61acd40d42,1476210262,8112180205811312002
+036fe504-b948-f667-3857-14ff53720085,2755360970,9204944690325107542
+30bb4118-a941-ec2d-b38f-4a5d30b4f1ca,4222893840,15324190581992376548
+beae0995-706f-82e2-fde8-8d4d506f8b94,3313172333,17739106209039505149
+6d71b639-6bde-4a66-7a5c-41a9d20ec6e5,4175865805,4374355426869932606
+a3ca944e-c7ec-c236-d309-3c168b55ec9f,930808257,17118192428051951964
+dd5c2247-646e-e5f7-c4cc-1e91b2a5ae02,20659790,2740392803784356230
+b565a592-3ca4-1b9e-4f76-abf278b477d8,503301513,13554546804582430954
+dd1d9bb5-1166-3349-a77e-b9d9dc6ba7f8,1037498053,13187801464923861014
+6e1fc7c1-fe62-6f27-eae7-1e2e613f2f76,604428208,7031200603425616225
+346f39a4-2c5f-5733-d2bd-795462cd3f9e,764148817,11052352166559710891
+945d101a-c4f3-a6a8-4f0e-703478347b95,530114126,13180511443196285076
+d0b1edcd-8cd9-d189-7cfe-1454f6b78f9a,542623392,4458530853459616466
+6d366177-d97a-13c9-524f-ebdab0233f54,668417588,10062921692257647758
+fe7faa93-fac0-e149-f824-1eb2e9dac4ac,299726208,7127176244740436852
+a00b481e-07a6-f65a-5e88-e6747ea451be,1862114678,11678929926027887643
+290fcef9-c1d7-c73a-dc7e-09838696073d,722668583,13625603316967024620
+ea4061a3-5f67-3d08-9aeb-44673ab2b333,1790267930,2211829189762061980
+e40dcaea-84f5-281e-d38f-78cd451cec22,3731947125,2545679343449918681
+de476646-2830-3593-2536-d86b815d3044,822860036,15321588468448924528
+e32b04af-bf25-766f-8bca-799817a95a39,2868686695,4430185488347946451
+a21a5923-6ef3-5302-46f2-3a31fbb63a96,3037843910,7805163958196484128
+aac64a4e-f5ec-6c32-0236-47319b327d4f,2104241664,2658342690104767306
+a09204e5-22ab-4354-eca6-22068de88c6d,1386067502,5980070796284278541
+d5348021-aaef-be86-c15c-fa8c1fae1615,2852431825,10040440281150066588
+b794a125-c43c-065b-f8a0-3ea9f901cae5,2441908983,8260425050219234295
+c251fe7a-d5bd-7dff-f44b-e5e14539190f,2784572128,964559708162650109
+ee853f95-5d55-6675-c409-4b032976a54f,2811804970,10407875048584186525
+44dd3974-a908-1373-7c0b-3669e0b577a8,1463249153,14641476640902471764
+653ead43-968b-8c35-bc08-62114480f520,2240802150,3675879422242546459
+b5a6fdb9-1105-3935-234a-3e4e18fc5332,2299104995,16059159403470718908
+fde732ac-db7e-8f58-23d7-2079f5bf68cf,2376215706,15639488046702927361
+40fc63dc-35be-f890-a9bf-6e0797079a28,2120117757,14475983124890466964
+8f72e115-9f46-6914-0618-dbf5c35f3e63,2359450677,16361221260451795730
+2e05a4d4-f73c-5a51-31dc-87cfda21de2e,1546802840,7991668440594348191
+001593b1-ccb4-5e80-5189-eea5c33fa52e,1640104510,4211373333781563753
+5f2f82b0-900a-2bbf-51bb-d7507747acb2,2980153449,2121942888232452511
+724918ad-da36-ab76-1d99-7e861328d9a5,3704779148,3989095009324645446
+536c7e8c-ae86-f137-8874-b2b212a64123,1961416992,6307781857892134112
+4870c141-71b6-5bb3-b851-12e13668b110,1836585322,11399845392557965743
+82f5c5d8-77f4-3cbd-76ce-fb1144374f49,2906071814,1207612901839186211
+53c30cb8-0312-f0e4-1d1a-2ee71e78d045,1575554679,7696921746956595776
+2368358b-6d5c-df12-2ee3-b386d67899c7,3632710542,9410705072697022187
+59f12a56-3ba6-a565-1798-cbcd3e50683b,2941220776,5650074133287497335
+c371d4d6-3b15-2568-a084-150e5227e650,640184174,18146280278373795698
+d80427b1-6d8d-ce23-b15b-f975bef1354b,3815966610,16274107818443594015
+55a0cacf-272d-28ba-9a56-10180b265532,997645284,2883787648675769675
+82a5a07a-cc8e-da59-0d7a-6400e1b6ee02,4183898936,15466623005180752996
+f2268e70-5033-cf11-0de6-010f0c6fe8e8,3262130253,9834562055430970804
+82cb7549-5551-ba35-e6d0-8687c17b1912,1194747311,5167329251083638143
+e35893f1-0b10-68d3-9c06-d26c1763a94d,900593274,13104653321299163459
+3de8cd79-2c3c-4410-ea5c-fd9090668173,3776785306,237515472004095258
+543247e0-6fc2-5d14-29f7-cc398d2c9450,3463974572,11079517230830951047
+0c275489-d2a4-020c-3e1d-3a977248dd1c,1420586170,14864624092511510714
+61008296-3b14-a634-4778-dd2f2f6f50f8,2759100808,9354736316144266412
+8fcdf608-0b2b-79f4-02ff-933022e19591,3504958159,5562099351373578319
+6b246d4f-aa3f-4a38-8705-0eeceb2b2ace,196980894,8147100273626392812
+9dcc3ad9-cb5f-54bf-badb-6df0568aba5f,2798996644,9322622480467770251
+5c361b2f-8d30-f8b6-738b-e9739b69e1e5,169111338,16424821249932955409
+24fb3f56-7518-a4f8-bc0a-0a9ac687bb9a,4154248869,5143354114398634843
+49184f95-e276-4761-1680-73aa2a7db62d,2616365890,3696267056711414369
+b1b09138-24d2-0654-89a5-fe293846bd09,4210219670,13776400004266476650
+1599e302-71e6-d12c-6b73-7b57e1404733,4253673922,17405585642354115549
+f1de4e61-4990-ee54-a390-4a9a6eeef216,1462633397,14332550810939339617
+33e7ae74-30df-00b8-34b9-04f17a95f601,1440568151,15025881840414159259
+68657ef3-8af6-159f-ddae-97fe5bba3a4b,1236975462,7511357998304938173
+c051adc0-4ca3-6747-e974-ce1be47b7cfb,2049024363,14261251420638209862
+481a3045-bf4d-5120-41ae-b9fa6067ffdd,3900655891,9765885555747019302
+03aaf356-8638-5b47-f02b-70402c887be3,294662026,15841337929294680532
+81aca8e8-c64c-ad04-c5fe-6f0f7ee46ebc,2662530467,15000073342449360145
+70dc5a78-8575-0f37-fe0a-6e6fe13d3167,3086830047,7320367326352780614
+273bd2cd-3c6b-f037-4460-5398f8a00bff,1827430080,4076611712087690566
+89400b79-4106-3166-bd05-e447edc6857b,3061895477,5364533780860722452
+2cb8004d-eea6-52ed-d285-83265d4724db,3287196951,2676980469786021451
+8c143c15-1c5d-99e4-8b30-14e6cd8cbeba,1165464088,6915156414371348798
+238652c8-e0e9-0226-c502-a85618e7439d,1287262664,17519446570887620663
+d37758b9-b96c-b1b1-fc0f-bc268d5e0e93,3024602891,7923081752504869805
+bf3673ab-c102-eeeb-1673-7569200bac7f,1461384453,9308224549924298687
+5e986f0b-a293-2e69-11f4-f48a0ea4e184,2528273161,389003319143933391
+9e271ab5-f2a7-7735-99c8-167b6b11335b,135289953,4869495022542635354
+5f52f90d-e0ae-1593-c32e-81ecb0cdea07,559851874,16844114181630769787
+8ea94486-2991-d5eb-2c23-9289d8725a92,3063493875,14891548092052953417
+60c34942-7061-6afa-5dab-c024b077112e,728193972,9250802500840798095
+584a4de2-e5d7-2238-d55d-87238b4aa3a1,548206843,9581920616307823370
+9f7eb8e9-6c5b-8d65-7ff7-8790242b01a1,3280717107,2724031048714340376
+99a6ca17-4c92-4e41-cc78-9ff3e97604cb,2996066402,6175978245978454568
+b34c480e-efb0-903c-6e74-4b96dcdb05d0,2051510477,17442499477559609510
+5fad3f4d-02d8-f37e-da8d-93250ea1970a,1192167534,10030682433361087455
+cb22acc9-b94b-0e5c-a8c7-6e258ea5ac13,729008254,10715743044067196678
+d065ef88-4139-6ccd-9e75-a1fb9d731ae0,3230825583,390490847322324250
+22cb9020-72a1-0796-6ef5-e50797caa337,3003538743,1332767858352134468
+d4ffd2c2-5e26-a211-f599-b7b1aec623c0,584346421,9452044491291891369
+ff123b5f-2b95-ba03-5aaf-111ff59ff8d5,4143886881,15010519852599680813
+7d7333b8-62df-ab09-cafc-2a2e25dfd55d,2198403025,1470747770808419844
+de8f268f-715e-664a-aa6e-2dad0875ae48,1359636693,8101152037969256582
+07a4bea6-aee9-1f75-cca2-4f12821f6430,3693748523,10263971261084423672
+bec828fb-9261-45e3-5552-5632f6f8b4aa,4150298254,3445853794757903853
+8f7dece2-18a3-b4ec-16e3-82cb802df7bc,522830826,2210825708950838799
+766a1b59-d5d8-e8fb-306d-fb9e3b4256a2,311778172,16743268651269869667
+562f4139-ccd7-d096-b3a6-224db5e1ffc5,1986706828,15531133894828335411
+e9fea527-8b01-7296-6b54-31afc8aafc44,3994341834,15896093967042087177
+59006f38-8852-2715-9ec8-adc1f4abf497,3713164361,9415797241674816706
+76cf4935-cfc8-0053-41d3-f6491fcbbec6,1889632627,16510001416401904124
+0fbac38e-fd84-2044-e8cb-2c1aff730e59,1800724304,17262002947721279148
+81170c20-fe84-6038-3b3b-1ecbaea75a48,3556595828,5328587382462663948
+110d813e-456c-4817-ae83-b6d2117d10a9,2215369296,12686397154632112025
+845dc6bf-13b7-7ea9-5fa4-c67af45bf8b2,3029277848,11769563712474945372
+55431074-1a01-dff4-b5ad-062a55985a63,79138345,6425874336147127809
+adb9d997-97a7-1840-4eb9-6f3783cbe38f,2193541222,4071625351088358097
+459aa654-1f7d-3746-0983-4c386302d7cf,1324545738,11817807582231745925
+31ccf698-5064-7ba2-8bad-2b1a6a400b91,1368787059,1979852136527795920
+e3dadb5d-2b90-97a6-5307-b3951462dd43,4222657528,8005979394012603678
+10b787ec-9103-f367-162e-d4856dbdd8de,3918442099,9394965438495264622
+f9f44e63-4712-35b5-8811-3666569f1040,3160320829,14523984466685471851
+2f3a650c-77f3-9c84-0504-4ff4ef8d4e52,1093614808,10929326900985178663
+250aa151-e03a-f258-4e52-bdb517e3a7ca,3285830943,13887680195407612235
+d64f8ace-0161-8a6e-f003-0d694a5c1da9,2825809471,18147826430569513511
+5a21ef54-600a-91d2-1f94-8ac69d7dc776,798149396,487471844143067181
+326d4ad2-eb19-0986-5339-a02c43a59c84,1967980769,15212567411829989302
+8f698715-ce7a-f798-b7e7-da4f3063c2b9,4186478898,15975672169715303977
+5b39d833-2a89-2dca-b664-7dd485ddace3,4233658491,8307398016307454070
+48f7832b-7eb2-3e3e-ccb5-6d943252cef0,4196124093,3763622085452548483
+e68d1fc7-de7e-ba30-4f2b-618f3f57f010,2765322952,10790618179148536869
+310f6762-47f3-af82-cdae-d8d1987dbe48,1091175405,16236090799979937320
+3da04ac7-7c4f-556e-09a3-f8169f36d842,4168784126,8453630733400532047
+146e7941-718d-23c5-df72-f140ad5d4bf0,968062995,9728082652021209217
+735e3d56-754a-72e7-1b6a-2d8b34b62776,638458402,4220201620994262194
+9bc13b23-e5dd-f09b-2ad4-dd826736216b,2567933655,12217829691923690538
+18ef46a0-b653-f30a-28f7-56e7abfbb2f8,352177418,16148132029949993463
+c89714a1-1f74-e71c-0c47-3150fb77c2d7,1722678047,1801085480994475484
+fbe20aae-7284-2454-ecca-6ec65fc86766,3617276303,17788046207231361559
+6bba9d9a-c4c5-2791-08d5-60d646a4cbdc,1675955887,17028406465275522353
+5f94d75a-b490-5b9c-d878-e5743b8ab23f,4213923689,2357370754876736056
+50d5183a-9961-0650-2b8a-a90f9967b921,93009629,18295737629480129069
+a76f1d37-dc9c-d18b-1944-e316d375c6a2,3594073192,17114275619156883909
+6864f37c-eb6d-85f2-c7d7-5d8e3ab5d22c,2980047399,15316486496445926242
+04b8e476-3d95-cbe2-553b-6ce8f125abfa,742630701,10809126018553732195
+cafdab54-6727-124b-13af-7b3d3f56e1d3,3554515777,4560035807976158449
+0498e9ed-9667-404f-afef-57931d28f34d,558043162,3008326904351206966
+f04a6da2-6d44-6ffe-6eb8-7abe8e9465fd,211169503,498040309224379550
+ccc1efea-cd97-ff40-1f2e-f80be4c78f62,3425835511,10463123346572141023
+356b12f3-a7e7-6ab3-6f67-b15634f1775d,3156987665,12323647015660040400
+5b3b7cdb-2eff-5b27-0350-7e3da9d8b8af,3617668506,15424739938772551266
+28c6b70c-5861-9420-b86e-9488533360e9,289700150,14559002974605595112
+17e586bf-00a3-8c66-77e3-5b610e97753d,3442151736,12953541181323630794
+e4c67899-10a0-fa53-52e6-b99279a73738,2341346199,6515020116734613338
+e550f6cf-6542-1f33-04da-06289ece3e31,506523670,15948565198270047389
+8e87e9da-89c4-121c-2b5f-db1450445960,348947613,16038592839284229369
+6452cfd4-fe4a-30cf-8e5b-2628a6dd3607,1783176380,4232216003055696027
+96b77d6b-c778-6cbe-4f84-2959e2ad3809,1659068733,3583158978806561346
+67204c89-a329-e0a0-7125-0f9f0b26cf4a,2506534679,106104529058879772
+0baa991f-43b7-8444-faab-0ac1e3a602dc,840320427,16361084943898041105
+21ea7aa3-8012-e0de-337f-cdc2e15f0d4b,3237526003,14470937923794032683
+c5f5ded9-2538-3b71-af69-604bff2d2b38,3086024547,13710433610316552001
+0918ec5f-567b-19cc-bb08-153c71bf0474,2998641781,2919720700366382163
+1ebc050f-84da-8d15-4f1b-d477075c9e6d,244320150,13664982398391997998
+0275caeb-f0cd-2c35-2eea-5cc7767a6185,2188294657,3314699992807045914
+4875cd52-d2db-4a2d-2f0f-b30105ab8078,487071324,13664847388093182957
+36c95240-af6a-41ae-a116-387024357afb,1471025768,13565027450524037813
+55bba498-1155-0290-8159-c77e8927f7e3,1845502873,9708867854642216674
+464af53f-968f-e1eb-6b23-7bce20cac0a5,119981449,6942933076079304696
+7dc80e1c-cac8-3e8d-e986-958183c17b5b,3055305502,5808535437399683699
+2cf00434-8936-0fc8-faf2-eb70847c3307,1030051732,6497193881586953844
+1223d83c-c46e-483a-6503-ba043cd7cf61,2601809604,10464466909175469922
+cd550242-d8cb-659c-4907-697ee2e1865b,2084138696,7509936457258512377
+3226106b-e262-d388-0ec3-3991362de0bc,1670278300,453093730340649492
+a7478280-6178-d974-f30c-620698d13f40,2538706358,144397024828488499
+07e47104-b518-28f8-d4ec-de94bcf99a13,3115794076,8664515641697425475
+eedac214-2b57-4e59-46a3-7c5c0fd8e691,3652369901,13336725821432428458
+465663db-f01d-36dc-d236-3426978270d8,2716778936,16495068771336276881
+149f3d0f-5f2f-8e31-f4c6-7d5a2819bd2b,4144177357,2928292610861763775
+f37e646c-0347-8aaf-7631-3b9104081480,1862253978,6472038862153807140
+54443715-a715-162b-274e-82c092026e20,4118233167,10121146805687602162
+a44f2189-92bf-ce04-b75f-b5a179383d52,3150373621,1070869560930956251
+e16b1d88-80e8-018f-b11b-3aef47914211,2584990267,13080588153060127977
+6254df38-a6f0-f627-da27-2e9ca0dc6b9c,2644572047,3947299860131717551
+717aa237-f29e-baad-75f7-a89c9e15977f,1576015830,13100591783260699284
+71a2f1c2-a548-c69a-3ae3-bf4215ec197e,3281648454,4823051397863895220
+7e731e68-e852-eb8b-f6df-39fc3d231c53,887864626,11721377338136735577
+cf1027a1-ec02-7a6c-8e92-a65efde35434,2038997521,2490104128599026435
+4f5ecf08-6c31-4378-ddcf-15e84b259cb5,1067748953,1866894805778562226
+e8cbe3db-dfea-a98e-663e-fb55b15fd46f,1594891539,3277125728151117431
+74712cb8-1849-01f9-91bc-4f53a6de1947,908877000,9981087212322864374
+6a395a5e-604f-64ce-7b80-2a245c734571,2459831872,17772245191440306713
+85ad43a4-126d-a812-80ab-80a182ce736c,3451166108,2748697019953806914
+82c92654-1af4-31e6-5db7-f6802de4ffc1,463319390,10047552395540057759
+2d3992ab-bb46-e581-c74f-b25bab2748e7,997686925,9797472862955692069
+9b13d6db-cc70-08e4-70f9-89ca1fa017d6,480555013,2819215348632747922
+fddc444f-9272-59c2-63d7-baa5234eb0b1,1512272894,13797027045906342127
+9fb94ccc-1159-3159-0c41-40cc34e78e4b,2746697954,18177455353062710959
+588db995-ed2c-a9f5-6a08-2c326d033002,796809886,5280594301700624340
+96b4b663-1d35-2da4-5c76-9c28718fc2ff,1248914185,1071580806370737707
+46d4cdda-36fb-c55b-cacc-9ee22f9ba390,3532844361,2758668438176472776
+cfffcbc4-111c-0c17-7648-4d58a9cd5505,3035160364,3959439927577358844
+6bbbb921-d790-20dc-2b63-16b5e4394d6b,866877385,8300794865901898805
+e5ff73a9-f403-8ea5-f02c-7d1418809417,3082601912,5511783516930675520
+c5315a7f-2a85-eb97-1410-0d7402751f63,1196630548,2873931364051663734
+17708905-801c-6ffe-af41-8e63b57419e3,947561970,15795207956278022264
+051468f4-0122-9828-01eb-1505d531ed15,830847991,5171842330272353248
+ad93b826-963d-c2b8-ca21-5bd0c504cb81,2963357927,3678510782558513462
+4fb18ab2-f201-1de7-f4fd-b7aaac1b030b,3801415604,1890057387512955501
+eae69f5c-af0d-95ad-a4a3-a75887473865,1501610653,6565288001132867945
+9f563873-bdce-677d-3089-45037e24e402,2904378035,6176953530820074490
+1111802b-eff7-90e0-d1ed-af487d8d56ad,4215637939,3404926434716304057
+f5b7f4a3-e67c-a9ac-a3e2-cf2a7bd7e8ea,2706518074,6313709226090467102
+60352c5f-6c12-fb1d-3878-9a27eab082ff,3935899344,18438244406029710380
+56071add-57b9-2ecc-e74f-868bfeb1f21a,3202264444,15667214622157729517
+e81326f0-388a-28fd-c2ac-7fd72eadcda0,1397052602,2643841373640847691
+03049177-6c22-f860-5d2c-1532b01c0780,3639231977,341555706302752668
+a070141d-1383-3c92-48e6-9a80649de7ac,1014915423,8922098387043732039
+96d1ac84-45c9-e0da-e851-6e4fa6c2079d,3887646960,3304669204298382765
+6d7debc7-8f26-bfd2-67c5-f7122eb26696,1576604303,16113678581117807485
+d7574b25-050f-bf72-242a-a6ab82217b03,1994270645,8917310464454432328
+b6b0e578-4742-ece1-c844-718e250244a7,332027546,10474638428219979859
+6a89535f-1cc5-f458-6a50-9369a3d9d925,4197626147,15353618201329574495
+8f3a4fec-a352-5db5-fc15-f0f3505afb7d,650541364,10497353918458458393
+e2be34e3-1a48-8619-7cbe-fd5065b4c6b1,2972054144,15074341307182862609
+297a6daa-c94c-96fa-f77b-873377ef20ff,2212451068,9552769751802050201
+409d85c9-8877-7e64-6214-30a4d783e778,3248060040,3951525246607364448
+0d1f8791-6d68-b0d5-3772-912bc287a3f1,3834198417,14134577569628254217
+c8b3d67a-3818-7b2f-91c6-a5beb1403fb0,2558231636,14987940252938821655
+28f35087-b4ad-89dd-be1e-782d2d91d85e,2793761561,8101989172786688989
+b7e5047c-779c-72ee-6b5c-154f8ec95481,3578426627,11485455625755437295
+a1b92886-7644-6e73-5b97-aadbe46ad6d8,17276031,192460609134032925
+3f5e2893-eceb-a4e7-1254-6a125a567e30,403006741,17145053862556422528
+dd643af5-9a4d-2089-6af6-aea76b44a37b,3547358324,16133263644644062593
+c335af58-ce41-5b96-169a-5e33616ec4d1,765505847,10680821954011719415
+185665e7-b062-6ad4-e5f8-ed85a0ca11fc,2795087003,9489886663921169173
+838bce8b-d160-eaab-a8b3-06a8d700218b,404849333,5340222131155955537
+f66ff499-6343-16aa-1a41-ffd5b7e24478,50354776,14617694609994632724
+7cf236f1-399e-13ce-9fa4-359fff73f7ab,736906214,1195994721226817301
+b522c92e-e25d-87d9-6fc5-0dd3b330d356,3552566813,340944876757502833
+1f3f834d-4be9-48e4-e894-a8df512e3de5,4013415474,3578902469869801677
+2fe53036-7f25-5ba4-8f26-c4c0e3eaa9ad,1226379128,9356013153685316260
+bd2ac078-7c56-51f3-5ae0-70aa52b53f4b,806088637,7962293097270002758
+0e89adde-5dc5-62c1-2f52-3134b52ed608,1524914865,9673622683009331812
+da015711-3df0-13de-acd3-b624a6c06595,861955505,3289388057630576356
+a050a58a-f8bf-5066-28a1-7e82bc2c4599,1852975749,14165754767834570242
+76367a20-9161-9c6a-b2db-f1a92817e3c7,1955315855,9540861836178929177
+45739cfb-5091-abe5-973a-f2e197aee684,1246663681,13546814616739689333
+26a7b7d6-c96e-33be-9f63-8cb2ffa53a7b,24751313,11521412505649137373
+749d6d11-faf6-87f8-c6c0-3baf6aecfb74,1771046253,7654541295609904624
+0366aaea-4c0c-271d-06f2-ac3c6ad0b988,1838473933,10008963643573915102
+ba985f7a-e49a-8406-ff20-4aef67abec5c,2620763837,15637554967697321431
+8ad9acfe-e6ee-7afe-cdd5-71a8fef17286,4279834106,8139250942434876187
+87326a04-0ff5-1b18-1e73-0145813eba42,3820916728,17427503359379256382
+ea4c5980-1942-85d8-7ee8-a68562053f2b,1328290156,12329541202834778469
+fb98bca8-ccde-af77-a0d9-6603d531a830,2685352169,12795997622697141712
+62e4884d-bd13-87ff-8a12-7f6e8824a982,193450164,6275579118802425898
+dcbd7c3f-f841-5b6d-425d-81eead30d1f4,1424584211,9406974285433237390
+9e2e31ad-075a-b105-ee85-12ce3c5c0cae,3949194718,13386935169466097732
+56a5085b-7f64-7822-5d05-f3f3fd2841fb,1129925292,14679678137366273935
+6fd10f1e-b1a1-aae9-677a-d972485f9bb4,179476374,3178449680773722171
+d5f6a5f4-7002-374e-51f2-5ba6b7b977f7,1243530011,2619987748170182052
+89578e64-8bcc-0532-4cc6-c58c34ce5ba8,2124749471,5469728191838372634
+e4454a09-c2f0-666f-2f9d-0414457821a4,464461100,14998922589333611561
+10868453-9de1-f011-d394-7509d53f4c01,778224842,1482057404914124237
+6192907f-b785-19d4-0443-d718b6ea38d5,2300250366,16258241514212122569
+e4dc43fb-2b58-dc97-22a6-20738f3dbed4,676802158,3574534220579256533
+79a74717-e66b-2450-d22c-711b02dcc10d,694177968,1197560165966300946
+0bb52103-b46f-1aee-21fa-8018f1919653,1355454449,13052476922877697179
+26bbf241-12fb-7943-5a03-cc79390d9cb1,2289069765,6468416871984447999
+472e5a28-cdd0-4567-ef4e-7a32d30f7fa7,2403582931,12223833860388528438
+def19bbc-2e93-264e-94c6-c57c9fa48482,2258560902,9880355817865308203
+fd215bdc-294c-462b-ca38-f997e56a3471,489496248,2099590208152880147
+03c1c7e8-d0fa-097c-313f-f8e44c41c89b,2510473186,3969348987373392358
+14eec369-669f-7434-ced0-c0f1a3ae60e0,1322405156,5309101734433250136
+74234f42-2d9e-6b85-5e69-c3764536e67b,3951812183,990905214053481932
+b5695c4e-a867-5327-335b-35c1dd550539,4008285817,10320556727253789035
+eca5e7a4-3268-f95f-4e89-860195bbc436,3754500041,14551204573654168849
+3618a194-6916-eef0-2557-ef6ee3eb7014,2214099298,18314668187096850145
+116a2851-0769-9039-7fe5-e7af1e00ad8a,1654564468,10802037193025101009
+8e2dc8fb-47e6-140a-a8ba-2f04839b2fbb,825302951,7966023150587321442
+bd316ef9-8f4b-3ac1-1a0c-e54f025aa107,676979064,5278257781785182625
+79319a3a-d6fd-dd7a-3685-24e376635a66,707164668,10465045474914777672
+7b8b27e5-f1fe-c7b8-faee-45a1e9cb1a0a,881573199,3621527996472671619
+1394ab6f-b149-8fef-26b7-11cc6e2fb05c,3574262262,6013366635648283483
+a06911f5-1b3a-ec8e-c644-619ed3a42291,3474921338,13485651170743423761
+fd81735d-8bc5-ff7d-bef3-e207f933895f,275424031,7264023503149139367
+e95e6010-6163-8f4a-ab4f-8740d0d211c3,919872788,10408186444547405815
+488e7179-2e2b-13e8-eb45-f2138d47721e,3601810765,2583361645451729411
+ff80253d-8442-ad34-b60e-40a4f4fbf00a,3932600126,4250391083093365641
+a3c51f5a-6ae2-49dc-233d-88533f068a10,617243343,1110409240428835310
+ba4c6450-5c81-c598-dedd-a66cdf39f1e0,4284828510,2792760112165503183
+e402275b-be2e-e889-3966-a5a4c8eb5452,946546384,11940256953216955620
+5c9bf73d-8d36-ad24-2779-9c13c3a7aeba,2747529984,2888703995828479312
+9ffe1a66-f1d4-e08c-2ca0-ce420ff1a1bc,2008353595,17833496024422577198
+6683ba32-d39c-6243-154e-3591df07188c,3858956079,8649768702585029376
+ca24a846-c876-cf4c-2ac7-672a5d0c3999,3277611190,9591582040805541836
+673708a6-9437-1e91-e21c-0aaa099bb761,3138461328,1371519260375068320
+fe655e31-de93-950f-e97b-cf096992ba3a,2789269152,13220105617117549299
+ac4d8eb3-7df0-00e9-7ac3-962323cdb0ea,719464090,4538520569747114216
+ffb73ca4-ce3e-ee17-6be7-6b5798f30e15,1389948597,10881677600704737154
+b3085a70-d192-0424-3a16-294eb6b88978,3535552416,9356345503439143604
+401fe58e-3a16-230a-badb-56d45731810e,2397953336,5365744903024093868
+6ad66a82-5a94-5f22-2e62-828e2425ef95,1370426633,8227897419816804264
+8c1c32ac-6fe7-9507-daf8-c631e3724f6e,676244563,16470239770824577944
+2999ccae-7e9e-41bc-ea22-4be9555c35d8,3198730652,17456333817854773526
+518a40b9-759f-08c3-cac4-c430fa078420,1701488737,8745022713086544079
+ab1c05b4-ff2d-15f3-5546-010f7d3a73f8,2790303379,18083344035927381409
+eebfffc9-6af4-7ffb-5757-582f8d05f9e0,15921202,5822832591321176949
+aec93e1b-c06b-7e71-40c6-40cbd5ff058c,1821620403,4417259800355934387
+e3e4d7ec-f587-8757-0a3a-938dd9b743a5,3692125380,9033690089960694990
+65344705-b72e-6ca3-707e-979efc3f9aeb,1726207209,9996708977923625339
+3c9baa31-9018-2b2c-43b7-7811c8d3d096,2615431511,14142250258608469541
+5f2928b5-d4ca-55ad-d61a-2991011dfdd4,2895598378,1321054452380138635
+5406f086-4889-b902-e132-d0cf30b80e87,2017549651,6033019489297601430
+bb540009-cd37-3bb6-e71a-5dd77a0d9312,1615877630,5362287949310274063
+ad94d61c-aabb-5869-c8fe-40980cc5afd5,2802340891,2043630060892849713
+ef64c6a6-ed12-d593-65a5-f0d9d4f05ef5,4141727125,10334730870320234834
+74410287-6fcb-cc67-73dd-5de9f9354b03,2103127533,1819307502062468335
+7983c715-1e69-d912-3474-aaa8f1b4b3c9,3797647194,13660085174833971252
+6e842b88-fb61-13aa-09cb-2071916ac943,3944990354,16823474655576608543
+2f94c0c6-7534-9e3b-0610-48ab58afb5d1,1442147418,7314747158029456292
+e387183b-ecd3-b88b-f972-c170b9f06a0f,1487559251,17182964687234349654
+888cece6-85a7-7eda-7883-73a4e8974b35,791743353,541678756628339913
+1c86e0a2-46c0-a82c-9e7d-8d8c7c918742,1792400633,5961862280392861833
+b7ab37ca-7027-01dd-b14f-33c5b7342169,3922439674,12376721306531686303
+e08d4f1b-b5ea-7890-9cb0-44edb0b61dfa,1906125458,7219483619027013592
+f7c21c36-7547-e692-d479-2c8f422bbb05,364588717,2110721212663613501
+4e5bb164-639e-6b0c-cb8b-992428b22e66,4141390151,9264001007220333826
+093538e0-4832-3497-f3c0-898b6ffbb9ef,581485866,4352794829822888626
+5752db20-be0c-c601-8d65-6d81e123a882,23964197,7374874475072739507
+2dd192eb-5b28-b533-67b6-e73020bb8a27,721721604,7255134533283443361
+7ff2ba63-3106-90f9-2950-129f0d82f135,2269602310,7115747638355751337
+69ee480f-2191-5350-f76d-35f56c5e95e7,3285616514,11402109589120229301
+0e76842f-9be3-9562-9c1b-fa10e68e6a9c,1026318469,9492400104598558355
+7800fbd1-2291-ceeb-4abf-8db48847b28b,3689033598,17961677760055079124
+ab5ac93c-5fce-f5c7-721e-1bc2c0fa48ec,1226361080,3290461243652566398
+d75151ce-6d8a-e340-236e-804f2f9e4923,84351297,17479814798494022069
+cf140c3a-9b01-cf24-837a-f3de9f1919fb,2794709211,12039510340218866040
+3962fdda-2802-963d-a866-685c5395c3b6,87451280,6640380022702714797
+ad380046-e0e2-3a2f-566e-35b7ef403523,1349036367,979238402799831729
+b7895559-a32c-ccd7-39d2-9d0128afd63b,691599671,5942710885421898669
+b7a35ea3-9b4c-e1d5-d0a6-2a170bae9abb,921295885,13024148754036189015
+f75268a9-4953-e92c-ed1c-5ca4165d4a62,2725513750,12454899359006222229
+1c31bc7a-bf18-8a0b-9b24-c49b75c5a5e7,1818152200,8870062961906629487
+84448c05-76d3-8aa0-4ac4-5353bf87bffc,4170667287,4411564830566940447
+1fdae893-c936-70c5-6566-d16b63c706b7,2518266318,4883555643446226370
+2fc049da-a2d4-6b79-9810-e2bd63e0389c,2111560317,6828812497208943015
+4ddc157f-76f8-b2e9-134f-5fcedf08039c,3182930476,8701293629349595199
+7bb17c2d-9530-3320-23f7-125774306f98,2642965452,9111414877025288297
+91c26e91-6dad-a57c-3952-fb44fde94fcb,2409569351,17391816535654122205
+41536c2b-901f-e297-09a6-d692fdbaaf4f,2973902720,1952458115244748611
+13321bca-c2ea-be7a-3dc1-0141eddf91fd,419914846,2956944830090693916
+170491ad-ecb6-5cd7-47be-55dde67c4aa9,3641249199,6246137280443472166
+36293338-4e65-0e05-5106-74535f1f2a5f,201110177,15668160242360510630
+0b7fb283-07eb-62d9-f2f7-a45b7d811bd8,3044733802,6599837277915938509
+177be0fc-21d9-500e-5fd9-30106d4b0762,3448820037,1464556095978985864
+e2adad71-751c-439b-a750-b239894a304a,1047338961,4593914188529287295
+95c54933-826d-fad7-7038-1d4c7e485123,2783248933,10080363715088887321
+15430978-7bd6-8add-790d-28cecd4d8551,1977342920,4456385591936868054
+9c8627b5-630f-e500-6616-e2f89163367c,3038467173,77993758745064510
+2de15b76-0e92-d7ef-d012-1e8935efc5fa,1287873676,16878641870150322070
+59c13430-7b7d-622b-69c5-fd50478d5c1c,3251906329,12695913007452903753
+003a7904-49bd-258c-acb7-8cd19346aa11,3018102456,9839903303151552834
+97011ae0-6597-8922-8193-ff5d0b251e0a,31581712,7065252385075596896
+1258ebc4-757b-8142-55e5-579527b08905,2825560335,10010898959195285116
+e69e2135-5bf3-f322-e321-4e2db6a5e38e,3484330102,1791403730195707309
+fd7aeeb2-4420-0b4c-5739-6ada836e3d64,1208814678,8109286055862425414
+53a32d49-ad6f-034a-3696-fa321ddbec4b,2118852019,11696225544787992989
+d6ee0ce7-57bb-a1fc-8d25-054c71956b3f,1481450887,9153507753821187680
+8a843c44-13c0-962d-4bb4-208609429d5e,1727420796,14234562835413728921
+f8ff2d0e-f0c6-b47c-bf24-d849703420b3,1009807039,18031854725547870218
+190df2c2-092a-06eb-d3da-bdf18569e7b2,1163113251,18164844510935335314
+683e3e65-6d7d-ba48-1736-f5819cc918ec,3250311685,11196410964202463386
+e93dc538-6a40-58fd-2a72-0042080acbf0,2450833055,13846739342453228557
+3a017216-4d9b-524a-6962-f31aa4947bdd,850100797,15342623683065217753
+3b188fe1-6a27-d500-8d4e-c07bcd401415,3378441781,9087915225713020389
+4d1f9011-6d6b-e749-dab6-76c2ef1ff3fe,3465449682,8449797103287864838
+8b3618f6-16ba-bd00-9ef8-cf4e9c15a18d,1853933730,4942838720962738321
+bb1e07b3-7730-377d-35f4-191c4ae6329e,2190145620,15104851236626349100
+981e8101-0ca4-1bdd-7804-e9cbf29488ab,988243231,17122068281012941668
+8cc1864d-3bab-5f0b-f1a3-bb6cb2d1f363,3348485459,11575904684877375034
+db7a81b7-5767-5305-0fa4-68a127773cee,1973088877,9866825887197183667
+e24d6ac7-02ab-f0fd-60d5-5ed70653f52d,241837757,13265456303533294241
+3d9ff59b-5eac-b564-8852-3450ab85479e,1597137005,15134932328827199850
+bebd5b16-6197-d975-098d-8e97c04f4b02,1096338451,15729382767988168701
+3a8d189a-d88f-e52a-080f-4512a0c08d5a,3804751087,12865268952990620010
+8a7aaeb5-f2ef-cf73-9dea-b9cc3a520506,2346557925,5470537575092185428
+91f97a07-00bf-dc5a-26f5-c2ceb38efa16,2806839187,2938381611242406371
+e66fc70d-a934-e7fb-471a-3bd8f864334c,191364080,11950374171340853853
+87b4abef-05f8-d173-0164-89ee6ad3f63b,4073245255,8131216181239898398
+45d2122a-f617-f544-85ff-88ab160d3d68,3190055391,4249491629811887511
+788f4a6b-0eee-49a6-0548-7c1a5d3a5763,2803492477,16669568803409408696
+6d50accf-b541-11c9-4c8b-eddbecbd5375,1379837055,9313672635936928867
+92c3fbba-0274-5748-25ee-3716cc866019,1298096300,15791348781690533418
+f4aeb969-b436-fd8f-f136-a6d8e16a58eb,271980729,10667530094314147299
+d09ce54e-9287-2845-4b98-dc676a8ea9bc,2515861843,15092896445533565801
+0fe0f831-3dba-3761-ad57-b18ec5638d37,3248779573,11704274386429756270
+a4775a31-66e6-a629-dd8b-50c0438a4b93,4136216132,7281203331223938746
+c46fb0a0-f2a3-017e-f19a-101e6a026894,3044182264,3981082032690098713
+1b4ad990-430a-6193-2a42-ef4c02ce988b,1629569818,8287691035064418141
+1afda054-11a5-49cc-350b-99068094274c,2325671358,15062453418392688682
+93f8af24-b894-0494-6c39-7003d1243563,2694894509,17363730273169735827
+d2a9af71-7bd1-1e28-0598-0f5a546db9bb,13733975,4587622910961847460
+6d8d5487-cb6a-6ba3-1bfa-59b9acbea2ea,3097778064,3411869827366507816
+38b4927d-3654-01f2-1ca9-d867ffbbc895,2864982969,14182800861713086118
+5de476c1-f6fb-12bb-56a0-3edb589bf8e6,232804669,2415409724171823787
+a0461ecc-269e-b1f2-a4b6-c674934ff7ca,569778955,16544350080873898222
+e7ff3145-cc8f-5ab4-82e8-f998be132534,3612718577,16951870378334063831
+1eeb8fd7-eb39-f620-d1e3-c30a7dbb5bb4,3740095014,12463447089978463083
+dbe577c7-2eae-ec4a-6141-da9c3d8133aa,3742126254,11718946554199458607
+0fc1e45a-cc13-e7c2-22ac-5ca636807221,754064784,7595449014107084874
+e94dc4f2-af4b-b4fd-8e43-ddae338cf03d,4179426728,649132324183478888
+8b3d78e8-de12-67ea-689f-79fe9effabd3,2377168388,15454096346069707689
+677990a0-5d57-6d32-a57c-0fa3852d8577,1159519417,15894824198776675420
+c885fe01-2261-a29b-3f85-1194c87b4eb7,2680762929,6301870895768383881
+255eebc6-ba45-d043-8683-3b29ca149123,3582117825,901792932459981815
+5d8abec5-f61f-628a-f901-d9ab74b78bde,2640081912,16437985005241049803
+423bdb1a-31d8-5151-f017-ce3d0a22a975,4185056812,17713175838375219240
+d57657f5-101b-f04f-61ee-3debddafc3ef,3999033452,14997330112861911595
+69722b73-d3ef-38dd-99eb-9b65204206a8,1488839490,8050101623604556358
+1ab92c17-990f-1184-21fb-f9ab32495163,4155432420,6476864444700494215
+c1bc4801-870a-44b3-886a-ab5f87af65b9,738802032,17529037507769778653
+08b381d8-e63b-caba-5313-e880ff3bafea,3153931814,18286581520894066756
+8fb16797-7fc2-f584-c5fc-ceca0656899e,2640134738,7848766684712319114
+ab20a2b3-f9d6-13fe-e072-b6bf73450788,1050156443,16732739454311508344
+ff5c01c9-c5a8-1129-49d0-690c064789d8,2974254333,15163342741063949122
+c5b361b4-11da-2a66-03c4-1a4c7ee0eec6,731636238,57131463167867901
+2549953d-b3f0-97ad-b448-f7752be94a58,530118580,2152838994385663726
+af69a0c8-6508-6554-6e5f-0496b9ed9378,3639760672,9028598531785648338
+22f3a8fa-0331-dd4e-4b5a-eb8c7e6402ad,3975165064,14698437611112374718
+04edeff5-8a70-bd47-5559-7d0024a605f8,1020829246,1017365694093288424
+8cec2394-fe91-c241-8939-5d56247833bd,2048610147,9272052157464302714
+62207ebf-204f-da31-7b7c-2fb76db92a6a,446924925,16231576854575683864
+73cc6247-2fa6-2e51-957c-d2621632288e,2003534377,731113279727520978
+1c5986aa-7ea2-63ca-5f8b-a8a21a690ce9,1434111939,11410166748325522750
+9da12563-18e6-d092-10df-997e861ee1f8,2498769199,11406515186247610571
+b9cd60d1-5e7f-8fcb-bd9b-aca540df33c9,2775087739,12630865954095531680
+13714487-54bf-69a4-7779-e1e68c17b5d6,1718865502,1199104954431891569
+aebfb2e9-7f04-baa3-5e31-d62af91149c7,2654849673,8634927702199428269
+8484b017-23da-8f2d-2854-03c47c0a990f,3263136177,17386861485620658648
+e22d7e0b-4ef9-7068-b759-ddd40e942f5f,1259518520,16589402672146436508
+9f82aef3-107a-875c-fe69-8694cc0d54b0,3223814251,4468831406639233140
+851085e4-998e-4c38-1079-1e9a404c618a,3622404158,16746316143944246384
+1d2191c5-cbae-b360-6945-55f74e94d46a,892840289,9234461669909257168
+61e37d4a-3fc1-0826-5bed-3ccc5b008e86,4139692848,219865404097465436
+62bd6d87-bfc9-d966-943a-6bb588fac71c,3296938104,6276158450453715531
+21928cbc-5eec-d846-5f2d-ca8a3fae4db1,835758918,15180827637450701860
+38ed06db-9ff1-b4b7-3f9a-6826a2cf1172,2688857217,14986020049223890665
+0c7482ed-d31a-6840-d5b8-f659dec6c566,1124105795,9644400561189229207
+6e5e1b91-fc6c-9335-79e7-004478ea5f26,183558624,2686797876015573297
+5ffb5346-078d-bb63-b20d-3ad8280dcbed,1295952417,9423760958829893895
+0801c0e2-dcb1-4df8-b4d4-b97028791548,606413497,13616450492194248497
+10a5889c-09fd-4a3e-0a50-244913edf243,3964764453,1068062727238466944
+6ed8db05-02fa-1d79-1276-aff2832f2509,3124440921,9094507065022002646
+7ed746b0-bacb-a443-dc3b-a983ca3d1c60,1799965247,15321773994090162033
+081f1740-911d-88f5-f2db-c60212a2c3fb,2908948828,5762425857736954310
+1e7cce3c-976e-149c-6ee1-60ba9b6edc56,388323786,1346306384341632564
+2b20a8f2-0320-d03e-a42a-e801317753d2,4107462423,7404046778191335562
+cc48104f-38db-89eb-ccaf-bbb28a4d5ad8,2041426752,6667656225194446578
+418858cf-b205-dbae-f576-c1c30e9ce447,2303427413,12523958179990172914
+94fcf5ef-e0e8-7bce-bb44-15eef3b84894,2966750139,12100718067065660298
+6e556c53-81bc-c73e-3c85-33989a0f4ea6,1264448577,15312521215569344438
+52616dc1-3c8d-f22b-9d9b-b120b3e16612,4207706329,303188327983490458
+7cb2418d-4610-b3d2-17c5-c2f3c5d0d696,3052195173,16931567556248295648
+4939d964-85f3-63a1-5ea0-9383c9ba02cb,2974182422,12478889326422504765
+9a3638ac-8b37-3e1f-3c2b-23449f3048a9,1098794791,953953276370864578
+630ee925-bf6b-63bd-720b-501e7422c14c,3233562969,4789505925616339613
+523f5aab-0232-6089-5f69-215cbcf8a2c9,3046871105,15553142081079702061
+56f96f76-9a4b-35a5-3474-264e4097053b,1370260149,16321880192939258104
+4c1436af-6dda-56a5-83f3-f464dc11f8e3,2818084747,11775278058368647427
+660e9d6d-e1f2-b5eb-cd27-ca0249c54564,1162873830,9145435234338659743
+422f52fd-18fb-afbd-cdf6-1b97913b7ab7,664104781,14958921361503684064
+39007182-c12c-a9b3-4ce1-7e398e1c2cd3,1337228225,11173416829717625224
+a9979a82-f05d-dd54-0efd-87e93ec84839,2206972202,7715930427608502298
+f92c9c7f-4b94-46e4-0b8c-0f75368537d4,1096594670,8828412585286586756
+514cf92e-fee2-6bbc-465f-72ffffb32440,2854796553,13846743560440244938
+aa9a9946-70c4-6150-f63e-12bcb28b4cc4,2368771928,13850639619153049359
+27a534ff-ffa5-c489-2b01-5151a82ca05c,2474202570,2465764084102049522
+37b542bb-4c0c-d3e4-0b05-9b0103c5b1fc,2765933819,4781369622799118921
+60288cad-4fdd-9cb4-0b01-106aa9cbe227,2732864354,4580811374565136726
+ad21bf03-c55b-b359-fa91-4245ccdb96ff,441512192,11506537533433689181
+e3accdc6-fea4-796e-0c6c-060ad440888a,1615372027,7108396827669428273
+ec7e9b6f-a193-831c-a9c9-8aa0c73baa62,1732274800,4388016723522297905
+fcb0260b-61a2-5e85-4f7e-2211a04d3dbc,46985038,6144742094142439424
+9f3ea328-791a-0040-cafe-c21dfb770b40,1157321647,18442766789508693332
+b23e7505-7b78-cbac-0b9e-4d08719e2a10,1509167399,5553546622306444410
+f03051d3-bf81-6fb3-5b8f-a0179c37c4c3,744630473,14490493069686411631
+2edd4fdb-7ca9-9c9d-0b2d-622b899f1ac5,87026582,4530474188200579155
+4c10f879-a481-3b1a-a391-aaaaeec631ce,463466368,14421683952319228781
+0a4751fc-f042-e36e-85b6-97c02feb02cc,3188514865,17186712852529090241
+e6f9c46e-b096-3806-8210-3afeb0d3e214,4210972895,16220508757094552112
+3da2ac72-bf59-a707-a0e1-fc6883c1534d,378555532,4181619778909556648
+c66be80b-af16-9b91-5109-6a18808047d0,714090441,11324941272024331015
+44b173d0-35bf-9928-45d9-62cdd904340c,799361242,1368110558773437662
+ac45a7d2-43ff-58d1-e98a-d14d967b0cc0,375190988,16508603247269673246
+21fe5885-f23a-c41a-0f09-781ef3945f07,2515281139,2079855841043630161
+18fad192-d0ad-4b74-0989-6ee23f03fe51,2048327435,13854000267198725900
+8119c7c6-ae41-4da5-cf2d-a921bbfa244c,2477472309,5547599881224111423
+afae9808-643d-c32d-942a-d2da84f84426,3425804398,11115655313678967582
+566f7c2b-6d5a-a360-fe2c-20d467b4af96,3986705300,1472729623159962909
+613a8385-bc45-d409-0644-144dd6ea92e2,4261452421,485791126039686199
+2aabf35b-f655-e981-bbb8-2900f2bfc4e8,1688969211,14806467100803441775
+dffa102f-74ad-73f3-a04b-af3cbaa21f41,3742267966,14767953197983561513
+8751cd66-324a-d444-47d1-ffe7f89ed6fe,1487191172,3421099173293892266
+e705e520-d136-f68f-12b9-c740ef429a0c,830673210,5816054565537495963
+672f40d7-95fa-2bf3-6c9b-a022205af2ea,255465308,18169880502813752453
+c7ca71d7-7f66-d8e3-bc1c-181adf866000,3650485061,273897055202515642
+4b265ef4-fb4a-c070-addc-c045b350fcce,2468298279,17671807275884464043
+eb8668a9-8637-65f1-ea1e-063fd4e02697,1560443272,16860496959644218846
+b2358047-fd50-5fdf-07a7-5a96e7bb9f61,2036104658,7787092219568989321
+e6805b18-7768-febc-64d8-3e09b929876e,858039007,921159241412910932
+52732c0f-9f75-2585-8e0a-d8b66894874d,102483475,12087466745279750599
+91c8b50e-c706-b99c-295f-d717ee98e07d,2518739857,17707842060504750264
+551c36a3-a5c6-c379-d3e5-a43a5deaa1d1,4137818836,202421393122406627
+83775c9b-0eb7-9bbf-307c-470fff1c0d54,3174860135,9396094077382083523
+73a07ed0-1717-fa24-e7cd-0b79aed81bf4,190735753,13552751701737519892
+a14cc7da-5c00-c037-8330-e0f0ccc7faec,336119926,1282281283465218296
+3845f7ed-dc71-6b76-e696-283b0c9b08b4,3748434875,2998838053938547853
+1cdb00ae-f2a7-bf31-ba6f-69fb7123ed32,356403548,17503524904899196118
+cfdda3c3-ce8b-9cd2-79cd-c38aa0e41a65,3457826591,3720508076295834137
+b13cf1e5-4e61-bde1-b12d-f513afab8093,2269776162,10656805768294414420
+0c956d25-912d-736b-fd4d-78125d99b09f,2899891563,13260478627184928339
+3edbb652-ca9b-bde6-92db-13c316bf7c7c,3191853832,18430972898152319607
+f6293979-5a80-a6a9-4b66-86a6e75863f8,3362614604,710352943522235187
+61284043-efc2-c854-8ca2-f459f7326bc4,3717732909,17461026696055544273
+78661e0b-7e06-4ed8-c30f-e1f18b49eedc,1826997256,2391050289694382646
+0e56b8c8-d37a-b409-a5d9-f26f1c4c0d89,1465607246,12144197896146140600
+7284aaad-9fce-e3a2-5606-74b0ba38ccba,3785016398,12414221694170550144
+0261cf9d-4b6c-ca3a-e7e5-833130f2095b,3051006041,14725094701533251898
+b43addad-cf95-d23c-a720-6bedeba10e59,791800041,1096190078764972808
+dc136adb-bd8f-2717-63f1-33cc2f552971,3757976575,5478063858040930729
+be43b562-18ee-afd4-4292-82e9f5d8e68b,27013426,13752738350481138796
+ee2e01fb-7439-b787-5a9f-7f6efd22179d,158740935,17072545482354336556
+99fed699-3e3f-7521-e349-8647e61cbe3e,3162368849,15148746040910239665
+d595f829-b3bf-89d2-64c5-f8cbcc1216df,3030114691,8843575859153953144
+296e7fac-7d56-98f2-5cff-bb237f4a3986,4230052891,16629758386242808432
+f541978d-7c4e-dfde-9e45-dbb40be80ca6,1363296464,1067816544180906502
+1df321b6-d957-5074-158c-c81510a40a12,2261110801,10779338122002038337
+08d05f0c-9e3c-e0d6-ad02-e42594b9a773,3108951091,7505597045772479890
+f4fb454e-1377-8acb-0400-0c03423378b2,4151728138,1734706947354857768
+45eb431a-4b07-66cb-7521-54f5d3b43e3b,2574395532,1823402849490501104
+13f980ce-dc9a-e751-610e-a329a822d7ca,2655972309,9560214303633457581
+9470ac89-6861-a249-419c-30a679b603b9,4184750632,12382471722198325515
+616aac63-8ac8-0cd2-3489-5aeebc732950,2353282482,16513701563009964564
+eb7fb823-1a27-120e-ffab-18951c6a0c9a,3043319384,9437104985531354761
+c95b280a-42bf-84d3-f80c-3e4e61b8dae3,3877503891,15777399985738263889
+3a4dcaed-1680-2df2-7239-883f0206f204,3166131531,3771601848445234904
+bfc5bd04-c7ee-07f2-889d-395f6491ea9d,3773365968,9627050699973606810
+da4f277a-095d-38f0-e931-617db94e7556,1943255634,1544241676434593211
+9cb759ca-78bc-43ed-45ba-e19069435040,3616454745,444125254912566514
+bb968454-df58-919c-33cd-242250500c31,2495520838,1982105995066858045
+d240a634-d8a5-2c94-dd9b-a1b627c968ca,7423491,17676091168007105643
+f434bd94-40cb-98db-f7ce-859644c490bb,3823995683,10155685496857239122
+427b116f-da6d-74df-18fe-39b31cc02fcb,1860513883,7337662572174272913
+d8e71996-d384-d8af-d1be-1f04abc72da1,3882462039,721249715075329182
+7749fb96-4f5e-e5e4-eb77-8acd4f410941,1497437836,18311465008897392568
+f2d7a394-d71d-3c7f-1a1f-a19f352d18b5,259255469,12281324004488026956
+770e5829-1798-d67e-c734-b78503b31540,1056923930,11428770402406630169
+58a7e9df-0ac5-a436-64f7-46ae93cd752d,1674580297,12289930940119593531
+6cc3e0c0-c13f-a94e-8444-e64d80ef6b31,3529402227,7147177867738153165
+2e1a7eaa-7a65-33eb-c570-a8ef62ecf420,1214080848,2583321381955148681
+0c53017d-3631-7a3f-bdb7-ea62fe906f0b,1830949293,6396530667187789046
+5bd06d33-cdbe-ef52-2a4e-bbf6d5c6f1df,3668017123,11683549865430004996
+20c78768-6428-a692-76a2-9fcda01e1f39,2398191634,250917005395423843
+dba88537-9953-19de-d9c6-1461150fe624,3031477463,10755686173643845212
+568b5753-4c6a-314b-a4c1-fc77c90a4365,3584415842,16373717655475026287
+22bd399d-5648-9f8c-1c5a-d99ad2c8b926,363878181,1192636980403268608
+14fc9e3f-7e66-6da6-a24f-560134c9d192,487116632,11087522687991380677
+b8ea51d0-2f4c-ace8-2ad2-3ad9b06c6165,918265188,8130800169953205054
+e85fe01c-22de-8d5b-11a1-99385e2d2738,3450153648,4927043074425572610
+7c657115-a49a-ec83-dd90-8477c0c728cd,3013432997,9575649676857446005
+cd56a7d5-eaf0-1b30-c673-93e194dd3a26,3418869836,6102848146757987513
+62b00896-1963-ab28-9a96-214e600ef4d0,1857250201,3775739582016530980
+a82080b2-38e0-7dc9-ec6a-6fdd6f4723f9,10040786,4134635268475466338
+f407ad59-0e56-0b4c-90ac-6505d163151d,49543987,9226790761028766325
+2942beb8-d5c0-381f-d6dc-1f83c0af7512,2907800487,16338469949814179386
+f12a3386-a6f8-c13e-40aa-d189f4a4191f,2990345649,10852754641499803572
+dceed6ce-57e7-8330-ed8d-fd6fe7a58684,3869406516,11223382779445141886
+73d00be0-25a4-10b0-f88c-d9ed1e1dfd48,2584198105,8588230716506485613
+3ad5c6c6-e6ef-110e-7ce9-f75ca88131e3,4294303241,10516348114884626648
+93b65e2d-5413-5eb6-dd14-06bac8070bc2,2029487117,3166686010853614379
+10786206-00e0-6bdb-f46e-2078e9f52784,25736184,16468982902456972450
+3a5af4e9-0117-1741-f709-054721568656,1433408125,13843389697429877409
+18661bb7-9030-132b-ee0c-f015a08bbb06,3036251430,15868065154042261057
+1897ea9a-ad3e-d3b1-c8c3-ff8acdd3facf,2788610812,2134046294614682890
+d14c1c2b-206a-f0a7-ef26-8f9510497486,4286678120,8856687456522690556
+8d6cb694-8f27-1282-9dd2-f312c91046c9,645281856,761361503727585800
+bc906811-0000-9e2e-c536-5e47ad6f75e2,3139270488,15040365507344734705
+98fcd4cd-2e84-4c93-23bc-0e8466ec753d,2809390445,516574722052198358
+fdd6caa8-7ca6-e72e-e5c9-547419745207,1998728405,62942338921388626
+21e047fe-132e-fccd-1dd1-5ed011199c0c,2012969071,16988027701179113301
+d48a1da4-af3c-7a85-4ff1-88635e181477,3275744341,6891543536340939963
+2d0622f0-0e0a-76b5-53d2-6410ed022609,1587269055,11345511192760809312
+a6ea7d3d-32ac-2e71-d003-c9e152a9fe78,119319995,4062268641758000341
+a9c4b109-e5bb-94a2-f3e4-25d277688c81,1978935008,6327680529363317617
+33ce4961-410c-c0af-2bda-85633ad94067,2566672561,11437531291367644519
+5647697a-f642-bde4-dd11-38c5e841436e,2393585110,17789013782673168501
+2b3abefa-271e-71d0-43d3-bf3a81c26f98,1393563348,9107156940551980030
+5905468c-f1e8-0456-af23-93017d5926e3,1929893566,3315920010480158490
+e037df0a-e5b8-b399-1786-5c188ef80616,4016257822,9863790510205833055
+6b00c23b-fd13-cabd-1e14-b17c6e29c0e7,3366575318,6906997962836479959
+aa04e44d-4d63-4c97-bbb5-4d218ff6a78e,2800170966,16600214243413730100
+424ee511-87dc-6ba5-aa68-045252dc9906,1687582543,11269775645011798384
+b0ce3c0f-81d1-e14a-66fa-dd442e1f1ebe,568081391,13665887395090581441
+0a006e59-2403-563b-28a2-ad064b6d4d06,542989553,11019487516058423448
+6f9a8d6f-9449-6a43-e3e4-a7a5ffabb1c4,28899338,1036869284871463272
+9f799a2d-b60b-3ee9-aa8f-c0be67a83383,3546839551,6313205849230953750
+e32449e2-fda3-8af1-66a2-c659c9fe7b12,4121137587,9996716044439760277
+a310c46b-3afd-0f06-63b6-f0ffc3f97f76,1952915564,7516436398813982321
+fac73ddf-a293-343f-ad4e-b105df179007,3749371079,18108730681197259055
+2048e861-99f9-376b-c6d2-2d9379748431,793600440,4842050280118323946
+919d198c-1803-470f-88f5-a92b65d35472,4193226951,3628079439077798783
+9a49257f-49dd-f86c-636a-795252b92d39,3862463422,558687701986810711
+5083be3a-5979-6ad1-c6fd-77c799986739,222678547,15012868854117012145
+8041288c-1c88-edba-f785-cc767c93385b,786950232,3623820609945535982
+45e17904-1ae5-5992-f5ae-7fe501a24193,1859626955,3580781585489902125
+bb68ffb2-d1be-7957-52b7-57199002c398,2913013583,6515022771366947634
+3d9e7626-894f-9705-a869-0c977e47ce38,1199714854,1123002670687656294
+5d860af1-34f4-147d-272c-156476146f14,989722809,16269047146167047775
+134dc26a-5e3b-d82e-2e62-aa45b6f64d46,3464975153,17339542740162022714
+1323fa58-e6e4-b527-ce42-ab0bbe310dd6,1326529333,14475181480010480630
+b654ebfb-a1ee-593e-e03a-9004da2c58fd,416234568,1975120530740215071
+d3a68075-3fc2-862d-c936-876568e33abd,3572421496,6564266206681340999
+1886fe0a-2236-c892-e40b-58d459a0d9c0,238549573,7297312549956677926
+9780b28b-6f77-139c-5d6b-3c5861d41e7b,1482556531,13337410425869420597
+b361bf10-e3db-ad43-6003-48e990ac8795,4226271164,7213530237887382026
+46786896-a9d5-6f1e-6611-9f3d72ff7591,482376139,15347538552501712307
+17f00536-35c4-c968-2394-7a13de28ad74,4233475861,15815190589664447374
+bf6dd4b7-fc05-9d83-ac8b-b02e7dcfee85,3107614746,14743124714067099928
+9d5c07fc-82bc-8488-6b1b-e6a32da9a178,1939998708,13769827674947515654
+ea7b85d9-0f2c-40a7-ff07-890f99a1feec,1709300783,404348880219974985
+6fa212e0-41ea-c517-9969-7ff57df09740,729224075,16394869834476851723
+7c2b327d-46bb-1fc1-035f-c7a03c4990a0,1783232727,4802964256685372717
+e297479e-58f6-4fda-3115-1f7a7503df83,1627294448,14241873266893370807
+d34adfee-c453-b828-38ce-50f84ab7bcb2,725252741,18030455315376822257
+ffa6675c-835b-55c1-20df-e258d9d05a4f,3235899828,4439504168559494510
+130a3bd5-342a-3c06-ff47-f68cda255216,1771668133,11683672433002439040
+b082dd5d-4830-58e2-f74a-0fb7117f1705,3907335900,10307352487087725357
+eb298d58-3faf-e6f0-86a5-8b5bb9dd465c,3538387630,6048110802968632007
+a39fc413-2af5-4c74-1052-0e700b70af66,2389504402,15917742876502619410
+f8c60cc6-2c6b-0126-f6d3-81c3482ef0a8,3634060482,7319051552825190957
+62a77052-9e2a-c1df-8de6-5ce5ff9d19cc,1147260270,1716664853619391737
+87929ccc-c586-8c5a-1891-6b964dfa67fd,940874330,14773996638155146898
+8f84e9a6-4ee9-1ae6-b0ad-76aea2c72c2a,4203410080,6236221230625845382
+c9ca207c-d713-8bd2-c812-cbe68ffa45ad,1238067741,1773905625163340696
+85206d02-f5a7-8ff0-61bd-df02830265e5,2852479319,8631816559539570830
+b099695b-a2ca-b7a6-0cab-2adb325e0317,3088030010,1712626955218101741
+dff0a14c-dc6d-b13b-72be-361c77004bae,3784422828,11605303630884445801
+6130ada3-e627-e51e-4fc0-ff9232da9f58,2113802832,8569451568552398826
+41b34414-bb3b-180d-b2a3-434088cd47b5,210436029,16494702464341346054
+41672df3-8b13-e37f-8998-a382bce14c3b,3464070762,5001017885095569672
+489695b8-5868-f9b5-de4a-9bd08192c783,4151094419,4626564698586792541
+9c4f1800-4078-708d-9276-84b8258d1f5f,1311074166,11958933342027842231
+a803a68c-b5ee-d737-e8c0-faa184704bf9,1126991378,8988591415727649189
+1c3f5be1-579b-54ef-e991-a38141ab2787,3700774119,2749424361567373308
+b8b021a3-0382-4f07-2f62-6cf46e8eccf2,3505126699,13755622850811237708
+b618b0c4-48b3-49b7-ffc1-bcd236c3bfef,1948949314,12643851860887700698
+57faa584-8fb3-6174-4b94-f8a8d7870522,4075291579,9323101847795546165
+910407b2-4763-ba77-f70c-7daf0cc4057d,1271718495,994136852595543908
+daf13529-e79a-2b9b-36ac-200bd779d97b,1399536432,942090997486509057
+040b9757-4972-e6e1-ba2f-72706c2eabfc,948144475,3172422879332366692
+29517973-400d-4daa-9e5e-c153b8ccb386,821755955,17478426468633693843
+0b9f55fe-2a82-565b-8c89-770ded9eb70d,2342267007,9048174653586829386
+a3761b88-ce3c-e2bd-ea1f-c3aade0e0a1f,240947799,13228084378329608417
+912edd2c-e7c2-95f0-5dac-7905f534b3ee,3900958249,11767019718044368559
+3353733a-9987-6b81-f89d-eb2be6633168,3844269342,15688704564716140891
+7f4f032a-aacf-5b55-3fc6-8a9af23d2014,2683116665,17383150190020890983
+1ab31c58-9f91-91db-7e82-e9ccb1dcb9be,493874829,3115382094267124176
+14e39904-3c4d-800e-2906-3b212f134b87,2520786595,7113840918204228256
+198f0e55-2359-3d1c-b4da-9cce73b0d727,2268483092,17537118146522152973
+c84e9788-45a6-0d74-d70e-29d6e7f5a431,2044639064,13551734168435843821
+b83a0aeb-c72c-744b-6aff-8b2bc12afcba,1322974471,9906143517579807169
+915b59f5-402f-9079-fb97-5e3ced90630d,744830900,2384880629405951839
+1da3236b-8c56-e5ba-26e3-9956b112ed48,1201831496,8710875817146504370
+eb4efc7f-41eb-6fb5-796f-e486135fdac6,1911817537,13995786132784705136
+b3b8e99b-d327-16ab-9f40-46019a48ad4e,1021407451,8520144277423629220
+ea6b252f-41c6-7360-49ba-7bad2c5934b9,3450995541,2786461155384547235
+fbe41310-8535-0c5d-cf00-fcd9ea8055f0,1287438753,7577741412387286650
+f2d2af3c-b844-be8c-76e6-4a475bb0d838,2647179315,6823825848081533175
+a1193f2c-192a-25f7-e5d8-949d3547a5fc,4224467446,7892982924802343855
+c8c9f517-6134-871e-648b-55b8f0a79308,3758395174,10577210731517727326
+536ec263-2182-056d-4035-17e65806113c,4264685601,17517977523148297129
+8d76352a-e252-4031-5f25-7371fc90464c,2330531400,4268184656606915064
+1ad75710-e40d-785f-5c41-37406e6bb809,3797666178,15207458069977518902
+88cf3a31-101c-28ed-1519-34cb9247d385,4248698723,377304543107568833
+59573097-b05c-4364-896b-26f089f6d3ff,3240272360,11289858611187476805
+84ad6458-a264-bb4a-0dcc-1ddfbfbbdbc4,2510305859,1812178606492082896
+669de797-501e-fc05-5a1f-5c6bd576067b,1658939552,6955844266589384915
+5dab0926-fe71-f37e-3b26-20433693a5a9,4109500659,10877209660688665656
+d6dc3165-06ed-6205-b12b-7ed852bd482b,3693116316,7978525486259738785
+b2e196c4-0804-51fe-ed29-3b0e9417493e,1504676504,11050746517286254213
+ea250c8c-9691-5612-7263-fb7fd76a11c4,2715319060,12277785278676092934
+f67332dc-1f99-079f-f45c-fd452b926a35,3302184325,13008516387528304960
+88ab7df2-3cc0-05f6-e5aa-b492e18625c3,3453827128,18064700291502673096
+26dfe5dd-ca7c-067a-9c88-6a674487175b,3455012084,14599140991644932490
+8b5e6804-a09b-7548-917c-1b9aad5d2a25,1937834280,17126154680040990856
+ffeb8868-c2f2-afe3-9685-ca267ead07a0,1113407355,4534084086504772719
+aab1095c-803c-362d-0c16-826a43e8bf71,3465731231,12796548047814936564
+3fc15243-b194-e6b4-a450-cf63575a3254,1584970737,7646897605070707131
+168d8713-5e5d-6725-c60c-2bfb0b5342c5,637137706,10971753673487620362
+b71e5451-2acc-2822-da89-9baa59470f65,1872455073,334245378436497238
+2811eaa9-d6f7-2c04-01f7-96ec9bfcf78b,3468167484,14746150943372078223
+4435528b-cacb-8267-6a9e-9ae309518a66,2781778326,4738216651733877617
+61aa8024-1bc5-7920-bca5-95eda48f44ba,1137578896,8755914380133294987
+d54a3720-6a6c-07b2-643f-c60a346e3fc6,2950764124,4546612100285614703
+c10d1884-1212-04f0-da58-eb3f1da56661,1600459762,14912970376250268926
+38c79d99-1273-0d30-ef4b-ca81952a1d21,122167369,4034208924759453842
+929fd710-9e11-bb56-5810-2ac2fbcb2271,2063168819,2304495382227185751
+4d62502e-9c7d-69fe-f5cb-6db49d8dba0c,4143988773,13218264430675890217
+fba2c4bd-5c32-a811-9dba-2209c80e5f52,2814609640,3621072955219473385
+c324218f-8b89-4e7b-7f32-fb3d9b812b0e,4158775030,1861190165868245611
+8b3d98ef-1109-09b9-86f9-7e47ddb0d23d,2395031991,1197056504951252053
+ad801be4-21cf-f172-d096-c5b88e174e48,2883085410,14553187090775900207
+9afc42c0-da5a-f162-ded1-a4485c21d377,597093389,3148251278202663850
+4743612f-8133-7963-dba6-a81086cdb3fd,3796227636,8160381215176686155
+661480c3-e567-fc89-2591-bf5ec917a88f,1661324833,6241300185261545534
+d1f052bc-16f6-4a2e-1186-299d347fe0fc,773120550,2941634717161458053
+79f41ced-356b-a3b5-a057-6609b964c1d3,2669788231,3324139129828521952
+278b8c86-296f-6f39-5bb0-f651f72ed94a,365520179,3551600499492742402
+f1154269-42f1-1b3c-7e41-8d38df5b2fac,3308705520,10949979146726847579
+5ee18394-f8c8-913a-29ce-103c51dde525,1928169141,16239256961680426309
+233a2c77-e5e8-56c3-1cb2-077b34f2fa4c,1063316580,13261064081698602320
+ac635cd9-1a69-f616-db07-de369e53dff7,4099809767,13705738105641873029
+37e1897c-423c-805b-4c67-b46b18f78642,2233743258,11855014028835410361
+6bb9fd29-b1ea-a15e-b9cc-61350d89ad12,2549853388,16871503102755743892
+23359356-da87-cbcc-ffab-830248f22282,286207605,13122578299799429352
+09468689-05f1-b0b7-1ef7-1d4337d6578b,3947101554,7821920259425982875
+56ab92a0-b379-3a1e-0a40-5a5ce7027a2d,1633395609,8665952850912466226
+02b56bb2-f7ad-65c5-4517-fa46c2755e89,445243180,18364904960327832184
+2c833383-a3b0-1ac4-2cfa-f1fd35e2e1e0,897838431,496063377849987746
+ea751221-91b6-25c8-181c-0f8cbbe4f592,1020347492,14993655913834031831
+eb6ddb80-3099-8e1b-5c7f-81f561f5a0b5,2219904704,15124341089172038228
+0f780704-76f6-f4b8-b00b-8c049d8eded7,547742324,4547876870272733612
+f5ab8680-6763-8830-e8ea-11a426ece39e,3934902528,17531886342065743253
+637d35c8-b388-5f36-e115-9caad3fe76e5,2650875447,13212744497176109172
+44bb1048-126c-273c-e5e4-02a5a2415af6,1805778411,18321983804100385457
+158e11cd-6968-1f69-7a5b-48c0b53629dd,1459510509,360020671065683846
+016df1b9-a916-e51c-357b-a62294f0d7e2,29719046,6245078815425916860
+061c2c0c-89f6-6127-4541-8fb4022df1a6,2530861711,13065782252120538620
+ee481b61-4b58-3648-b91f-fe9f091b4031,1954268797,15175153211832867760
+34c349a1-3025-de3e-6fc4-57a3c1f81489,443058245,17913584447419142861
+06c2c647-b296-a380-ff8f-f72e4b005254,2665898092,7192284908100092691
+15e76be6-2b03-1348-5a39-74e1cabdd818,217731053,11664193109341324130
+6d300dbf-fea7-1441-8b8b-7db88ea60fed,3189962739,3518373401224795773
+93011f6a-7a5b-27f9-4197-3c078e553386,1388968930,17702189704031401669
+9bd0080a-4df8-c8e8-9217-f5e780704cbe,1472129527,17502284766116557340
+49c52583-21f6-100c-59a5-b9e4c24c1c13,300612084,3353770042673545616
+43a9a5a1-858f-bcb8-46e5-7f8a8f3f1e72,214814878,17894643851253320274
+1de3c8b5-aa27-e9cc-39b5-01a774584080,4213808631,11089738235376738363
+bdff0d07-e8c3-7414-4289-1b1cf83d8ee6,1784912118,2972824829184379020
+1709463a-a2a2-7300-0ee2-ab5fc1ce296d,585002912,10354244531932123757
+4686248d-1e54-b30b-d945-081a33ab3969,4019514464,14728127267355157537
+17a78f87-0bed-c5a9-9ab1-b71b2fabb6b7,1307413749,5853866594289442048
+96dd8ffb-f60d-46e4-5b67-9a0fb3d86fcb,3674873429,4864073393035688007
+e1834820-a935-9455-afcb-af06c3fedd84,1263062833,11624824278555432638
+0c133ffb-9bb5-7ea0-05c6-023d6e736e06,2786167160,6411805550876810434
+b7a7d9d7-67fc-b270-78b2-bc58587fab6e,2871294527,13261419755236280272
+9d822c77-5be1-f7bc-d610-c8351191e006,316274383,7501229607165537179
+217c185c-3b07-9061-6ede-8604854da6b7,411146863,16004773656588700757
+951e6da4-f8b2-d6c0-8d8a-7c81238546af,666368872,14747061612568744668
+b6b01d1e-53be-4ae2-02b9-68ccaeee2192,1580493019,17197839146463555536
+f5510948-0b60-9101-212a-276ad1028ece,2425269723,1470230033858769421
+3e1b6055-a609-bb38-e340-f4f66a9baa30,3869945173,3563502827772994234
+2f002067-2ba1-7471-52b0-89f43bce1bc5,1009451932,5119722698585273493
+85d036ee-b9f5-77ec-1f18-a43f647f5feb,3845110949,3155208840437201906
+0e887eee-7fe4-d10f-4935-cbbac913bfed,2918939142,10777982888017882758
+bd81480c-3e4d-3fd7-d760-e267b16df4cb,16655680,5855050644413933404
+04777f78-8e6d-3dca-129a-2d9c436f17d0,3328178662,8671842175054353911
+af426b5e-dea2-315d-ae22-6b5f9375619e,4205323704,17430889712559058846
+65985382-baf1-a927-96dd-7ee229db62cd,4027307007,14188817847407809496
+81ed464c-ed72-cbdc-1b39-618057648a45,1099295380,3504873460008202764
+efad8c07-f5e3-7e10-c5e6-630b88007c05,2456504481,10427576322628953488
+2a092c24-b06e-844f-6984-e1c99461ba97,3030534580,1611990858720116524
+919d2d14-5b6e-de96-1cb3-25c9d148cf7f,4186788314,2028037236384221130
+c78b7017-6a0a-1505-cb64-043256491f81,3979640954,11085537584634264510
+5ff22942-9c38-a252-be57-70c90ce70ad1,1354506982,13267633655334687123
+b4c62bd4-25ef-f4d1-6c30-3c6098733e56,722145853,16139879100474768366
+27ff6779-fef5-5184-c512-816f22e2d8e7,2592366106,17993950031631032121
+fbff6c8e-6cc8-2cad-5de0-e8b9f5c23469,2987177518,3858058263171741660
+d9ab45bf-cb92-ad87-99a5-b183116722cc,2614810766,7137903321933478459
+85e84728-d181-e5bd-ab21-05dcc8a80537,811677951,14517627915733284653
+5f82efc8-1972-41ab-ad35-1143407c3ea8,3005689949,14207629279739161964
+2dee34b6-bb16-b50b-6009-f4b915595869,4228117410,10121726169427082001
+59d46d16-5239-48e8-d30d-738206c85440,367975062,14152297451430796098
+a4c40e66-291b-f2f4-a451-b056644705d2,3638778543,8565733662118473682
+9ce16f2c-c71a-45b7-ea3f-cf2c31fb924a,3430719457,837089743538789585
+28f912aa-de4a-7f2e-1dc7-e19fa5faa87e,3661438450,9441879764096989101
+b54f253c-3ac1-a26e-c05d-d12ad372ee00,3185995853,15928591473525709597
+b4dfa302-b4e1-da1a-9ded-18167059bd41,3888145377,6690482892919277191
+30c11349-c589-02e1-b0ec-d7a7eb6e128f,2258562564,13355152693216937564
+700611d8-f632-e00e-c97c-56a76af7bc25,3918405991,11208865222334875356
+b45a10c9-8f28-dbab-ad7a-ce81436726ef,3804038925,12190180036670887130
+1fa5f586-ee1a-2b92-a016-91a4f46df3e0,3097115822,13312758041440368621
+2a52de94-23f2-bd27-cb45-a5d501270db3,2279175737,4811162886188239609
+f0ba3057-4aa9-d945-cdc5-5edfadf644b9,518802473,9138094690175188855
+b3a83399-f700-65fd-305a-ecec8fb0a076,4006099619,11114944872309999603
+25fc3d4e-d8f1-a73c-f9e2-9234c660ac56,1032880465,9909939403644277513
+fec34870-9e86-a782-2344-0d1b3115c39b,3167103832,10505198846411122150
+38b04349-ec1e-3557-7a62-8071c9ad77d0,2393301043,8508154272913919580
+bfb6497e-eddc-6c2c-8284-95245a147644,3279285077,14798135375639612413
+a95483ff-fec8-a2a5-956e-47fa17258a9f,1886609290,744109998307132071
+7015a574-dccc-a8c1-aaeb-8e01acb28475,349554270,5952301348424025513
+9a7ad92d-55fc-1721-31bd-9080200aed61,1108723317,12056952350254002334
+0f477171-88a1-d1d5-a7b1-ebb863c09dba,3370229311,4565883459742726971
+bfe266f1-33f6-1ea3-818f-96e5df611800,1154233552,8474835028398954221
+00d34668-17b3-d618-546c-8a680966d69d,980016175,6229698616953671637
+c0ee85a4-29f0-a6bf-afd6-94ada91a6832,1420034827,3904400414235673422
+82979550-9bdb-f6c9-5a20-7a223768709a,262932935,7758179951219162377
+ee50fe24-d973-2bfb-04e0-1161f6124587,2035956782,12100530683301230083
+d1c7e104-c9cb-d0fe-71c1-cfc725c5857e,924343430,15659580898939683935
+76d9cdf1-4c71-02be-74c3-b85e53b25ae8,3085874832,10771201713494044433
+0a37e43e-cfeb-bef7-ad5e-b0636bb5511f,1825662989,12231225505331775019
+ad5c2ba8-4c47-05be-2388-e380538d3410,491830740,10877425712808861853
+eaf3bdf9-81e9-23ad-afb6-eb18b994a1d1,4184044048,13027933935844679179
+12ba8284-d0cb-69d4-f888-1db044611dc9,2456281195,343790089731688964
+b50d9607-2b8a-9d0e-b82f-26e4c883b2b9,489932135,215684685372701898
+7369237c-2620-6f4d-e3ea-bb2cb572ea43,2406972343,11291338669695982931
+09778b25-251f-15fc-0904-fec53d5a6f43,1793625891,3090172584971536087
+056a9985-fb5e-72ab-73fe-c82bf3d29a5d,2656334021,17994072319827329869
+e2afe5a1-f55e-05c9-8f1b-fd3bbdc989e0,3222532167,456034569564344601
+43793ebc-8d9b-c882-bf3c-7c8dc0b37bd3,3145560495,725635186766583158
+0069afe6-7766-52be-17f6-db11eda0eaa3,1146625933,13265305064900968689
+ee0e099e-14bd-08f0-def3-6555aed3ac3b,997855662,3975280703586141392
+e32e0ff6-ac79-4cd3-34d8-aaf7bc49b417,1138413620,5478839318546497524
+0ce6ea4c-f5f2-426a-3b83-e1d1e32ad6b8,238178820,15487613596634984465
+9a40d52d-fa54-f3e8-843d-afca549f2ea2,1795187571,2065973732426533453
+8fbbfb06-d559-52b7-2a0e-d8cfe0688599,3444155595,11260985076682989422
+b517a3c6-259f-07e9-09d6-f106cfe17f5a,1821976446,9120969250155763589
+c388a672-bebd-65aa-8d59-8c947aada8b9,2608719915,9006124186948893376
+085b9a04-5513-6592-0b8a-dbfcdebc4260,4040351242,13768756591129479770
+a3d81d3f-552d-858e-3848-e85ab3133a91,25333908,803050484394740349
+60db9690-bd09-35d4-f177-59e0b43e6e83,2124748600,10330120892578917515
+e66257c1-85a8-a418-461c-57a3d799dc00,4054984657,18004612585581233832
+f90f8250-6e34-26bc-3cf5-26d868f5f8ff,2830364964,9499094263711847389
+b16f7c03-af03-d8a0-0258-0d8eaabeb1f6,142011891,10839791924368361813
+1ca2fd67-50f6-9a9b-79b8-5a9ca7ab49bd,854561763,6099213885224390193
+f95e630e-6e9d-b63e-2e45-96ad370566ec,2858475611,17661952763668250396
+a5f553a8-3b16-cc73-0926-36af4820f5a3,1895028918,1071817182789934412
+5c8f4ece-0379-2ec7-093f-d0a2096afdfc,2115235521,17212763082873170352
+4517cae3-c142-0ac8-3ffe-3073777239d5,4112813236,11001417155841309564
+2660f9d1-2a1b-97e1-c8c4-ab29a158b04a,3139038983,7051682503492856165
+d2d85840-52cc-42c7-f916-6c9ca5c37c2c,3211796986,1519976708492308715
+184df24f-becf-add5-0e6e-8992266fb130,1060072786,8634049864674953936
+6efcb357-1f45-9299-c5b3-b14deebeff74,3329449801,18045812740757519978
+d9240fad-8d58-e2b1-ccce-9ec84d76c0e0,1929983696,10507968130222226528
+0244afa3-21b9-e2fe-54ec-30e486ccbe65,2764375257,16509687651349986455
+3bb177d4-615e-b9eb-d993-1e26637548d5,830112229,3211643942573885404
+42f45914-f0b5-6fd1-74a3-62addba4fdeb,3781441047,1419308306625947587
+31059847-9bac-e606-291a-03571ac0cbf2,2907123429,13989704486457752515
+96aab1b8-5971-dabf-4d05-54a018a03794,1032429861,14011393563955941568
+d3906302-3f29-c5fb-de4d-fa2e6a080138,312914247,15349715743308751519
+4817dd12-10e1-b939-cd92-d0b3b9fbf291,4199761648,7890917170633689988
+86624ec1-ff58-61a4-be33-f0c06759b15e,1747464383,9316234290230571990
+3ffbfd40-548b-e9f2-f740-42bb753229a2,1358535814,6011795278015005744
+48065751-d54c-8d71-99e9-4799fd7df2bc,2347775813,9121305573337702345
+a7971971-f329-075e-aecd-b9ee2ec2c724,1191239023,14872982596217672604
+cedd6568-adcd-c2f1-a97d-bdc2bf14c389,1063857126,1452993443781954297
+ce7c08dc-269b-b6ef-d13c-c766efb63ca7,1071840442,13882359519583907118
+0de823c3-5ab6-fd1b-53b9-8baf6d8bbb1e,422241656,16698731392391119949
+ac19e1ed-3f6c-b0f2-1c5f-13612485adc0,2411439886,4093798389975829367
+08cea0fb-7cb6-fff0-1e08-9b0c87a699ff,832275257,7281367696436106560
+f6d92f99-ce5c-bb6a-029b-0fdedfe8173b,520769146,8239935020752595721
+d51ef445-7c6c-9d88-1199-0ed49de463a8,4020558704,12755751543846890481
+e1645fe1-6830-7b78-ab3c-e2795cdf1329,1559038844,9968786443017192902
+b5c1d5c9-f70d-dadb-f832-18cb21bf4ba9,1289994644,16730331895415014164
+b5e32830-04ca-fb7e-9ffa-10b565ad9ad1,1892239765,10394782440033272524
+cf762402-c405-892d-4490-b75c457b7983,206850807,13125164302138531750
+1e6f5f83-e9ba-ae00-0e5f-95db88d344f7,3810015343,11451144552747836734
+815b3ddb-71e7-f3a5-50ce-a136a9c9677d,2453398221,5181471852516488466
+ae79db31-0fc4-f4c6-3cd6-a33b18b0b00a,397845648,6641398334714050097
+d9062677-67c5-45e6-f860-f77bc4ba0f54,2066166533,10890968886612993697
+bc3de4dd-e3dc-b4b1-836c-4d53d947c6f8,1559718969,5435111384233295051
+b5493c40-cab3-981e-d330-26fb4db1feb4,4110883820,7120316898985956808
+805b5e57-7ee8-b81c-7e08-4b5ca33f0dc0,241733375,18341299935036933828
+f9c077fb-10ab-b1a4-0cf7-373158460732,2044117191,17645027897461907227
+f090dafc-fa8c-e59f-e129-37efad3435e1,3545652388,11896861904962955315
+7d33979f-fa74-7939-b4e2-aad2017bdc12,3018958198,10616476158641200928
+64749aee-e44c-a05d-0037-34682a9d4368,1949734826,11906084151049195429
+01597152-a6e6-abdd-756c-4255c1ee6776,811511709,13564318029002998627
+571e29b0-1eab-eb15-f5ca-2472b440dcf7,3979317246,16454208169485358835
+bf2e5cdb-97cc-1ee3-5d20-784df5679765,1253053751,8143885128477572099
+5d771d4f-decb-5c0d-dfff-48a4365c8c10,3287311236,8682906961076497761
+df786735-c04f-1903-fe50-8861c5860305,3741376198,2154913035728144020
+45cedf54-a770-2281-bbe0-b377c606edfe,8258349,5190232903971679963
+09186c16-7d24-fa6e-7137-a3d3c30f014e,4022539803,7741947316393080762
+e8f177bc-aa7c-b31a-3f79-cd603fd20391,669019736,8465220439662192334
+0c1ea76b-8dd0-2bf6-994f-09841e473a0e,131238005,805856779570773801
+37cc64e6-82f1-55e7-4828-e157fcdb7e8a,2519407041,1333806886910973958
+5bf64dae-f962-f467-0fc4-dfe5741ffd59,1333331340,208109960820898956
+b62eeaf4-66be-55cf-bf8e-d9421cb5a8ce,881251741,17806380657567734895
+f1edc3a1-0b8c-d87b-2004-e7de308251b3,1077856028,2562628849060819196
+540a355f-21d1-e760-5507-40684357753e,3514551761,11989832502299909841
+5c763638-732d-2c66-81df-f4f1182a5a59,858090273,12964802452332865296
+c1f334bc-9c87-4332-616e-f26f07b29e16,1737093218,12590886283005468285
+058b59d7-bea6-26e6-017b-322798bdeb10,2556027210,13755365347602383407
+afd872c2-f10d-d743-0d12-1faf2f6ed0b5,952223874,14760016572102132144
+d99c6321-527a-8ce2-16fe-5a3cf2a9652b,3071513999,12409787227094769400
+f83b97c7-3479-bbd3-952a-277b379a6f57,283349689,13497157698027931800
+60c98df8-a9dc-4647-8753-b5db9169da2b,4249972170,12327015319831012640
+5372bedc-af9a-c4d4-01ff-c017a3551988,490113162,11562600408288270524
+bb5847b4-ad5f-1fe5-22d9-08db040eb7f1,1117649737,7627459172241825118
+1db5e8f3-8599-2740-be9f-1c47b913bf93,3749536196,14606446147414971368
+7b0cfe09-fbcc-9112-666b-c17ebc5e9b90,2569877972,12626967797859726464
+95f9e0d6-f449-0dd2-b65d-b14436b1a73d,326724376,8893102070451559074
+6914568d-79a6-b218-8132-36323683f564,3750111385,380209611062161032
+d2c6dccb-3418-7904-3f5c-f9df2b0b22e4,1269186172,9818214162556320681
+5fb0c967-3853-9466-c3ec-6b937460c4ed,1484321961,18308837786918243875
+f463acb7-0111-23f2-f962-7605080b22cb,3821549424,1198141601262282380
+a7533d50-d4e3-d8c1-9481-962c250c9f86,1958285300,10752486129742989244
+f42d384b-72a8-4b03-2979-01eb2fb9f000,3366227631,16735911287872680451
+a4f5472b-33dc-baca-8429-d28e6c3d66f7,1189763633,1864672832793876238
+c1c28d75-97df-50c5-8fce-ddb0e71fdcad,71985566,15320040212918251964
+c34583bc-82bc-24c2-e772-90f0f09ef809,1932325439,12840575697362826479
+342e67e1-630e-b8d3-6b95-e2b3e9bafd32,4189676334,6243547564654919890
+b6968861-b40e-cd5e-f54c-5124f6e30dab,3053996036,7220206397377087686
+85485e8c-cbfd-7310-ff6e-1061a8e8d243,2260436266,12879580521871386750
+9d8414aa-38f9-a66b-01ee-dde7f115f714,106512195,13338693842708377002
+8e7fb5a2-46e8-c594-1dbb-5eb6b548fc0a,245749573,7235492728046298339
+4d345b4b-2d33-0c86-c9a2-377179295798,1407161164,2749421645017569402
+fa799da4-68f2-4c9e-718d-952b708a93cc,1998209521,9694657288201555697
+5cd7f77b-8753-c76a-aee7-264a39abd9ab,281576497,7111533813715450779
+e586b9b4-4891-ae22-63f0-f47ee5059031,3089152211,16425925373522986149
+e4809ca3-1fa5-f825-67c8-41e07c2701ca,3018911352,1544213660502350962
+1eea7ca1-e65b-135b-6215-8c589f8f04d4,2457963327,13732477232508036914
+f93d6f57-298e-1bc5-1b28-4b121da1e46b,4237876234,8779821395885176314
+46a87aab-e0a8-33c5-0550-5b307d421331,1239424442,7250235225204666857
+b867593a-cb69-28c4-103b-88146721b1fb,128944556,724806236154329175
+ba27758a-6d2b-caa9-c937-eab33cc2ae86,179044432,941905272432724673
+d6307836-de03-285a-53d9-ac60567b24e4,2275677088,15844701700718227207
+7f35d178-5922-eef9-cb2b-841954c1e59e,3781042575,10416391957188168216
+e406c551-f3fa-37a3-5c5d-7291c1e26cb0,1308002786,291096304569680879
+d63da839-2dae-fbab-86ba-5c2e88bf4e74,2297527073,6456921686708983157
+f32be392-a680-f0c1-8836-35e11bb952d6,142302627,8471419770285331125
+4765c892-ad83-7688-5434-1cab07e48cd6,777372364,6531731165572747645
+6dfb25d8-8145-7526-69b3-9b9c9873fd9d,3715194846,17552644599636683979
+4d8e5fed-7974-655d-0357-b8fb15d98543,1535946567,15114648813630277937
+f6e613dc-8844-da6a-89c2-cf7055e61c57,2822126574,9261288314055323309
+3f9e2cf4-2178-c8e9-daa5-83cc2ecc9959,2671581147,8283992012828562617
+e7bd5943-4276-f879-4e75-9743e13f8bad,3652187995,17662652282565418774
+cee2f1f3-45e2-a2a2-941a-71011a965741,4173654702,8658470485930940502
+9fdc207a-59d0-4fa8-185b-5ed202994ffa,2057074643,10547610019633793723
+81ad1fd8-6cdf-a50b-4794-a3f51a58274e,2734424896,895313976361167142
+7837ea3e-3bd1-3c87-eb06-95a7ee4e7409,3268805769,11405870872321971323
+8d27cd12-8847-f19e-af0b-95d2acec7d3f,4228992581,16567481132594536233
+e07cb88d-f6f7-9133-8815-2b99f98c40d5,3288815668,17044870353064529897
+3b05c768-bcd2-b51a-fb54-d596e68e3c50,2397237105,9371962562556624000
+610b4388-0fd6-3623-aca6-03aac8b5fd2c,3299797311,2011255582877730067
+0d18bcbf-d29d-c586-d50d-e3c9ed53bb12,2545548505,10520974103408234022
+ca7f6196-34ed-5b3b-e14f-fd1f12c2480d,373229797,8463307992462039434
+db3abce8-a6db-2fae-ee9b-63bc5637b18c,1813260328,6988483990755240464
+c1ede60e-051b-6ca2-177d-c082a2b78bd0,3104789376,10231493902303831768
+ebab78f3-2736-23d4-2eb0-b91bce34a27a,1679002652,17740928444870015957
+0ffbdee3-afbd-d157-45bf-355e75a9266c,4232820689,13672435750773658274
+1522c464-d319-ce95-f16c-55c151976a15,3545268239,16470941524161786823
+156ffd41-72c6-bff1-4af1-f5d31273e4ba,65639802,7410961087393101391
+f1614437-3a93-17b5-92b0-d1ad016984e3,664323272,7648578335418703164
+519428b4-1733-9dec-7e88-09b1f5136a1e,3624990580,234411463730179901
+85af9ebd-8320-45e0-56e1-411c4aa5256c,372611787,8627706896188235447
+0ed80e3d-84c2-b5ab-286e-08ebbcea20f5,1247677292,7838555711328693145
+2eb60d17-8b57-4ddb-f2a6-f79218c21643,3451599159,6350953573011835936
+cb1502bb-e0b8-3197-9fe1-1876919046a9,3736971067,12574114817460446409
+915b5847-3389-18ca-1e85-f46cf09915c1,1039470250,13432418727077827115
+a1d70bf0-40f9-7747-3549-2ad505714183,1353026729,1849422080338656292
+2f66e42e-19d8-bc7e-c756-752a506ed61a,19763034,10729491990649358942
+43c475f8-f804-e426-b655-c20520765844,1155174369,12636156662638983275
+bd8fb2dc-6577-4f01-160d-b1483e512bf8,1769228184,12422273141504044165
+760813eb-146f-44b8-a034-bcc797c10627,2391504490,5222536322244752080
+5b5bdf73-14e4-3943-c6ca-b575317f711a,96656766,12963092987211240222
+b1dbb279-7e6e-80d1-1c7f-d6aebd0f4aa1,1860258925,2663953438669372067
+35ea8185-586c-d2a4-3594-ede6e1d59ad0,3852439765,13519788590737019651
+d5c193c6-01ed-dd23-71bf-14c46d44f4ab,2038836562,15497755874695233468
+ce33b03a-9a8a-5f97-87f1-e852639c989c,1817926280,14679963983131237359
+031a4ad2-73f8-e9ba-cd02-c256ad0601a8,1865677369,11368458711890126316
+0e1d7181-4f64-baf7-605e-b220b24f17d4,852043639,8501774732011442367
+33249aad-5892-7686-68be-5a77c0d48e3b,2836771734,8474882437183879561
+6b2ffe4b-66f1-a071-8aaf-d86398acabd2,2022456758,7466201898919006753
+9d5942d1-b30e-7787-9052-efb339ac4d44,2237159142,2664766900825060179
+04a23ead-f92f-4841-c19a-ae8ebcecde44,2686461299,13986137305299378463
+47cef940-4a25-046e-1ffe-789302046314,3656690646,18014105042198454758
+36ac6d3c-6ac6-2211-ee20-162a6ee6fd8f,4230250759,5129025258737871357
+c9766e68-4a50-58f0-5d64-3b466c74546f,3567290584,14184096486082408990
+f33404cb-e383-e84c-fdf7-c9a3c27f409a,3487399816,2230430058786503012
+d1fa3892-a33b-a68c-67a9-82e20a636591,2066769678,12432869564777150473
+59a938af-5324-c333-25b3-7c1b24ed7394,1538803577,14938026244248063859
+4e01b90f-1660-260c-13d7-0ff5ff6139c6,2548085251,13377113072692299217
+2a2aa8eb-7e55-bb38-af34-f68f0f525d15,2648471421,13107170422589350785
+a24faea4-3167-5039-fc73-fdafe1cd69dc,2283979120,7797012721640769270
+c95ac304-1fce-11b3-1e87-7aaab764d91b,3275479173,7297226848183953368
+8eaa3f03-d56a-e684-507b-d675eed05ee4,2664902740,271056888558386657
+237a15c7-d621-adbc-e73a-ec0101d1e0bd,984078042,9533994165863234794
+a641499e-cae9-5808-6ade-a5ce0c6d407e,2135090136,5388859753062300705
+0eef51ec-3be6-e298-a5ae-df6e7655826a,1175865892,3492569813111240741
+a5d773ff-d9f0-391a-a68b-26933494eb30,223807324,7702808060068867670
+a0b3d79c-c5d1-3a33-a845-e65fdeec63ed,1036343726,16999631633812395459
+1d188b10-4d6e-1dac-3458-2e80e1ec737e,4132039679,15691414111811913675
+d3239201-ae81-8ef7-fd51-3d174effe6f1,3542593657,7649800636507902702
+7287a42f-23bc-c7b0-8c5d-2ccc8491461e,2697446431,4172109273804217747
+5774b49d-5089-02cb-60fd-4ebf2f3132cb,2075890352,18291026711330621752
+01a9d013-8472-d0c9-dfc0-1b75030b3faf,2776181488,10546067035494882294
+682733ed-5752-1434-2dad-4c80c2c477d3,386352898,3315588169821547990
+73405a84-f76f-f94a-75e1-842f59d65301,1890586211,6256688504638558433
+c5408e45-7ac1-a69b-c766-916cdc422435,1282524571,8437599185704391184
+6c114ded-351f-e1ba-711c-990465a4a1aa,3593322399,16366486478577963903
+bfb3114d-18a9-44b9-9b6d-688c2e23366f,1669735138,7166446631637700373
+26e4e46a-307d-4254-de19-d6e99f4443b6,3782346766,14681385182690474215
+eb2c2852-578c-110f-55bb-b813481c7af8,3939495967,3193823209683347079
+98a7bd4f-1f6e-5387-7a21-1faded70ac26,60992276,1614725556345092396
+8b8f5154-daa2-7314-2321-c860f264ddea,2830608338,4512555461454077766
+76b851b8-9bd1-0a2e-c8c4-42c6e524d676,535329657,4718589711129596345
+56299ed2-0f9f-71d0-0bc9-aa0ef2ebdfb4,913955982,6906396523234949693
+51724e24-3c14-a69c-cc3d-b040544207e7,748413213,4035575718395371071
+c7bcf526-d3d2-0505-869d-6679bd12485b,2571083623,15338241569631942942
+5843e514-d776-b559-aadd-4321d507b07e,3636918213,10082283736612107480
+a4314f77-4e61-b3ad-60c3-d39d187f3c26,1444217715,2410426198597179010
+1dfe05a9-e3da-483d-15e2-99269c4559d7,1441268385,11320024589349696752
+f7dd7de1-bbb2-d3a2-314a-507d1e3ea434,805925187,11155005422143680256
+a4b5b8e0-60d7-2f75-b867-c7bbb68137f0,3885811949,12888503938885135076
+16a6416c-58e4-2763-f4ab-a7613b82b56a,3336297659,10427764084402970350
+fc23811c-a4c9-8017-3968-6ae06d9c8df4,3789045575,8413168154451710976
+eb092c78-f161-2fbc-ab98-e9cb9d70e371,361421867,2425659833427582406
+d542e30d-7453-8baa-6030-df4c60a84f77,1098819806,9038310409792448808
+a07de0a9-43f7-7d73-8e96-3628334ab6a4,3035617876,10549577050479031596
+275d6dc0-f1e7-fc20-1f66-e0b987346aa8,989832381,8557533227060399087
+f61d5ba7-502e-ec02-b9e5-816ae9de78ff,3934570930,1988754563766294397
+0945ac9f-c283-78a9-c4a0-ddcb9f70a818,4004139081,17107937491855203954
+da4096ea-4131-3a28-dbb8-473312098c4b,4105996395,9130279182317762911
+58274087-9f2a-502d-8c4c-dd4771dfda5a,1219876659,7018581930886703184
+155a027b-99ca-7472-5272-3121dfe8e43b,1823015828,13064076942600252327
+c48d0189-5604-9ca3-cbb0-f0f98a5a2745,2455374694,16217976152405017303
+642a7809-946a-8237-df29-53539a908605,3730001747,12041368271248865524
+3562cf18-7b38-75d4-8e89-12010754728c,1687637379,16580493493144390758
+93b7450a-39ce-ffaa-2d34-21af3053a912,4252655188,4759936221756400094
+6f852335-b1ae-5d9f-4994-58ef150c13ad,847631197,12684406615455706341
+ca4a5f7c-2c13-5639-e987-3b4c763049c2,2347658774,16808136930219267027
+49239ae7-c612-5fb9-5e1e-2914ebb978c5,371483861,5794152761476631375
+dfba37dc-69e1-3992-f950-0dd00dade650,2257076345,15048895979768099307
+dc2871cb-b26c-c7fa-6da4-09df9a1ba68f,2878751329,14965040042564013919
+a22d6d6f-9fbf-6025-7a5c-91a3182d592b,279319186,10193321327756580613
+f836943d-b5e9-058a-81be-a621e47e935a,2062709171,6173275467126771986
+a136b3ad-dcf3-06ca-2fa4-86ec0b162174,3113757769,8663721795056523546
+e642931f-c22c-0acd-f948-5521ccbe4cb6,2222592642,6565969587809086483
+67d51b68-56b9-5d44-d7c8-719b08291205,3730905024,17253645611425267611
+d77e3c06-9fb9-bce4-91f8-24b5720f750f,1572103586,7353506473258601807
+c3045f85-8a16-a334-5124-31a38ad15ab3,104251970,14627321430928845603
+0ac9bd4d-a885-2a01-2c07-83bf524af7f7,1679161803,1243391778782486731
+e6b68cf1-4e73-0911-e0f4-db80489d7b2d,2785479318,17637167617808118411
+3d577792-9e85-d9e8-abcd-c02ab992cab5,352104480,14234783553804335280
+794b7454-71a1-08a5-5a78-f688762f04bf,1001901106,12580860714302258598
+06fb7d97-d469-76a4-5519-e4956fac7b3b,1418321338,1950011756330552493
+53cea5b4-4397-42fe-f55c-720de32f7ab0,3945082269,15599844783735959621
+62cb0248-98d9-39e4-86c7-883c34252309,666832967,16965588651652030446
+5195ba69-e777-ebd7-bf58-9baced7f48b6,2487110723,7481159058105955880
+0f5adc76-13eb-174f-1933-1a286bb71e07,128650086,12422794811606986185
+83d0639e-3fc9-a5a2-6da7-6efc8031dcf3,2816237557,9680518259041403300
+b657c46a-5446-06ec-0e9b-61642b0d36f0,2479332136,1072158475075723787
+1262553b-0a3e-0bc6-5320-20b4e4a02a3e,3374900632,4288535499286656284
+e747ff4e-77c7-fe07-8915-62b46a08def7,414409287,6234120645975071063
+b82f2d09-41ad-f8a9-f293-b7dbe68b2e44,3172165279,1329179397714702306
+55f688b5-794b-e66f-104c-25ff4c6ff73d,3052991805,13336764200119718213
+db43eb43-824e-69f1-c18c-3badeaa8a41f,252378789,18207419768956273059
+3f6ffc38-b25d-ca02-8ea6-9bbf65e389c3,3890732942,7052329483164730154
+cc6e518d-42dc-96c1-5f0b-b84b520d5851,1582540870,7367608520188002614
+10b79688-ff9f-2d39-a7e9-6d1c59e8d045,1197517693,719914365323107390
+136916db-5f13-930b-887c-f3da36cfe653,2698023551,5511712834999157756
+ffca0292-4744-d58f-e820-b36b5c85d65c,3630069468,9484116340142962761
+eafdfa6c-1794-572f-c698-479c8f6b258a,4090227219,8006344507918872893
+26808a9d-bc4d-fb20-7e9f-b41d07449a44,728048553,329910234422251752
+47f1d289-9552-5093-4593-e327eecb0ed6,3775846566,2704865939546601712
+41000141-f62c-36a0-de88-55b979ed9352,3050641602,4823654804851071253
+42a1aa79-8653-a2f5-199c-d97f40022bd4,2924322186,8771410386829072666
+8318894d-85d3-d005-a485-cacd5d0a497b,1964308454,822449859713618217
+0738f81e-ce87-21eb-a568-d607d0eb3c46,504364830,3481818682056882543
+a149dc13-35de-f6ba-2167-7cebf2821153,755724685,10325191296119068796
+60249144-7c26-0318-ac59-4ea791b5c123,60339497,441632808970874731
+2f55d868-765b-7423-385f-6f7ae6fd5ba9,1730707812,17559180349532289912
+81d617f1-f340-1d39-72af-eb427710db8d,37025497,17380285342554638022
+fa1d06f0-cee1-9aa8-a769-042a5c8b676c,4094059228,18277889467868915593
+76ff58b4-c8fe-c85a-4a75-b81f078ce8ab,2125740348,6587278432797037019
+7c1d2446-2539-f8ab-04a4-4338029a6fbd,1722509684,3007559310882053669
+aafb0543-29de-1c95-2fdd-10b093db30b1,2600997569,13400014652803702843
+5eabd060-cd88-fca4-0226-898096d53d55,3871187601,2508375825652802388
+baef5b07-2257-e902-88ed-ced6ad31894f,1075076979,7659765140079673751
+02ae3b99-400f-5c30-794d-c9b82d2943d0,3317175794,11848662209335471762
+65c52b8d-3495-cae4-de97-950cfe3f21c4,200552506,2252272848259665441
+0d8535e8-ef8b-5408-200d-a0567964d2c1,2732654189,18395175615072546977
+871e61d8-b61b-2460-50cf-7703eaec1abc,2849849197,8104886271642212033
+b5ca2d15-a893-0ac2-e865-101327944e7b,1728263797,18004471657204639169
+ed5e4097-6732-bd53-4960-7d32ef7358e2,2529728389,5839430143206174439
+57946111-e916-6493-d3da-d97f0cec94cb,967486149,6468886330204220075
+f28ea81a-df68-e330-9166-767acc17b3ab,2545864681,9984017252087540563
+3aa16e00-1a05-1ba5-accd-3fbc55a5ef87,3606017040,10803527544563867018
+3c59d574-d44e-a9c3-fad7-d8e8d6efbd7e,4253791297,11167122890584439650
+b3d23082-073b-f787-e52b-112343449cae,826718674,12600842150126500028
+1563d2c9-8bc1-8583-754b-c8ae44ee1ba1,4193622102,5557907801752951553
+cbe1f114-8f20-fc79-cb15-ced952054e37,3062324586,4352582629434343811
+acb9bfb4-2cf6-e6a1-3e2a-c31e331685fe,1140121368,7416895737339035261
+160465c3-70ba-05c1-5cf0-456a2651c58b,1382992652,4933109365841406401
+bc9745b9-bfaf-86ee-c6fd-9d93985ff5b3,1160910744,7223969662228875426
+993838b4-9b68-fe0b-2e91-cd809289b2fe,1299334707,17126808653406244630
+f6c0a219-b053-41dd-efe3-0b454dcfddd3,2809006925,10407430119161243931
+58bb1b5b-e66c-d0d3-abf1-64cee7704262,2253071288,16288590856706922263
+48d8ef07-a52a-a745-1f83-0a5b785a0909,283214704,13879074528831496600
+e671e82f-7eb5-1bdb-3c89-dc60a20619bf,3395737445,16498354301731056265
+859c6403-1c02-bac3-443f-7dd7c15d16dd,1821793443,2338618312994069332
+40b9ce2d-48f4-a96a-4234-cc63b6613145,635689550,8279291807414789713
+b0d8d229-4c99-a8e4-9b05-888b0219e73b,1352447645,18164386200490517107
+c19779c0-726d-ca94-13f8-e69ab333097a,533136866,2098659505866810762
+62409a7e-2198-3cad-85c5-65993bbc863b,1788262140,2516430377331512938
+764b8ea3-f224-19dc-b1ee-d7ec5d8c4a79,2318335270,17487426970878313079
+8f146635-9222-94e9-bca1-de1dcd5dd75f,4251559009,9061534380009439311
+6f23023a-2ff6-24d0-1454-5a173085f4d0,1352973249,13715587855596911691
+e1a54bb9-e9ec-cb05-7065-faaae5e391e8,846656898,8133664160816672543
+db7940ed-7ba6-700b-230b-3c0105db8933,3379893752,9931208650614098861
+57e1bd84-7578-2dc0-7bb6-9d4c7e34bd71,803838723,10311664903345808461
+5559a7e1-c479-fe88-35a6-283c23644ff7,1724952394,10133859312422964479
+7ab7c10a-0285-1ba0-795c-08c566b55839,2083369060,4480321375404853394
+ba9da77b-6485-8b38-1fb1-b47d85fdcda8,2275206339,5558186069625336696
+1d3accc3-7520-e62a-e431-733d06cbae1c,700909230,9103821362374012707
+11a3af30-6a85-4dc4-4325-a2e14ea09e5e,2612132831,4094896944387646490
+d0dd1d28-cb80-ce46-41aa-617673678895,3915344006,1784054312886608002
+a27927a9-6f64-3a0b-277c-a8227518deb8,2103572311,696809446544279367
+fca92354-d44b-87e4-a230-088badd395e9,111308061,6390153102370956604
+b9af58c9-1482-0b52-1a44-3e46a5461fe0,656122313,8294281189481415069
+838fd538-0586-d5b9-831d-2b95a2287215,719882507,2709535150328440069
+7c0417fb-7724-3b50-c46a-5be3862ab1b2,541953896,4944428286377732770
+1d4911fa-628c-b610-1e0d-bcff152ab0cd,1199251462,4308821513257329754
+6180f5ef-7c5e-9879-4ba9-8cba1e19733e,3346207066,3553542367769073444
+676504a8-228d-33ba-56af-3c66b20dc01b,3447443928,4009983971148934741
+c4c7b932-2f64-ca00-0500-4bb5b8d2c01b,28083594,3412283740545664622
+20052790-bd31-8fbf-1b15-778d5079feb7,1401161433,9833212549494739783
+a382033c-1209-d560-69c3-5d734fb5dc5c,3316301355,14059153911714461610
+6db5f76f-1110-37ec-f6c4-0de5d3170259,3988037409,4564996978508234547
+2bd0a2b4-16e7-144e-0bea-a3e77a97afb0,4024586194,1877071888044393942
+71dd4c0b-0fdd-601a-b9e3-13451b8da2af,1914625548,9875206118367034996
+57d799c5-f3b4-e7c8-5b13-a359417e4bed,3233799805,10461225878404540316
+209413ae-4178-32f1-ee21-1f10df587eb9,4281003022,2978153929682504030
+c0cd851b-77b4-eea8-7df9-fc90feca7df0,1830007092,9023901186730800206
+ac585a45-cbfb-168d-ebfb-77860304fee0,2397870175,10821367779491461364
+97938076-3dd6-6b6d-8613-2476daa712d2,1667367502,15641023320416952110
+99c44979-b271-ef4a-c885-9babbab9fb2d,3758690800,1762780699962407387
+33267aaa-b367-b512-c6d5-4533e887140f,1966947307,17898202605418595919
+d1a523df-9600-63e0-8cf7-23b00f8d588c,762879162,4762199821163405918
+d79ef476-2d82-6591-f7de-d13577394af0,3167115270,18357742873374140948
+bf76e297-8b9e-f0aa-65c3-d1566af1f89c,196356841,15599561631847661770
+afe198db-7b30-825a-a74f-f3ac96241e25,4248246422,3114991440369101170
+7a45dbda-cd20-7858-6e96-1a531a0efc19,1415249316,6977836026875004204
+fd1ff588-8434-12ff-02c5-5c5caae3e70d,2348171477,9348345007970958302
+0cbe0485-4b57-5ad4-c2ce-08d25e7cc627,4110539568,3697681256780553420
+5d9a3c7b-fac5-7d71-1dde-4819d1ac7397,3118018543,16916351263927225271
+0c96cc68-101b-f9d3-e566-dcc1b0e8f40e,568481460,1362459291901961767
+b45c14c5-27ea-9ad9-3adb-77d5d1031968,1671672509,12611005209463264602
+5035ed1a-78a2-04eb-d693-2abec7897dca,3731607626,12274094972407412172
+5c4d65ff-b5a7-7c33-59da-d2829c216e2e,3299739485,17066879066599265214
+9455075b-4233-8818-f7b3-ad9f7de7aada,1177001192,199393870448990254
+5e1570c4-5873-793d-02a6-92e7c1dcb8e8,2855896960,10666022504769474378
+83e665f9-8f29-5cdb-9139-7342d4e2292d,1334976218,7670927494764748745
+1a721a65-841a-88e5-cf16-2416d5f21ed3,356832166,4796021603733208059
+d3f43fb2-d657-b775-1c01-c6619f299ce1,1453389701,11520674598777579293
+505291f1-3783-bb34-895b-b48d62a9d4ef,161209457,1132723951651318837
+dbf6838d-c7bb-421a-a85d-35087f6ca37a,3636737122,7826260043738862981
+276e1fd2-f0b0-71d3-b782-744717051cbd,671377992,13397963565007293991
+3d7a1da8-897a-94f4-339f-739207a20fbf,2294510900,16859187913974480648
+9dc61d65-556c-f8c1-6d89-df7cb4bb0d11,3804644292,6259858623064561122
+e34f4488-3db9-7f4c-ffed-fd143ef740f9,4153030332,8729860825695829216
+e132b50e-b4d6-c50b-4514-e162b49a8c25,3702690119,14424188070322188549
+9797ade9-e06f-9567-71d9-9e56df8912a2,1246270622,782510429833451641
+452c513c-f2d9-c143-e5b0-1a28d01c5f6c,1253434228,6968230452550688925
+c29e0ef9-4b7e-57be-9b6a-bb7a3f52a474,244795146,13572476183763152642
+3f73f157-eb99-ad79-1b99-9df525028afd,200648718,6004287266764095471
+d2ac304b-f5ed-8cfc-0869-cfcbc1ad589d,16499880,17226832448131561815
+ec5c575a-a5b1-bbff-58de-e8f93b7a81ec,220018261,225480040130213766
+c28c22cd-a314-205a-14da-d413c090a00f,3486926003,11612948410629922447
+60566301-70bc-216d-ae05-a5f742c746d1,207713187,14203829364875291943
+ccfe3acb-dadd-5515-0571-9632db5a03d3,2738311671,16992066413584936360
+024c8ae5-a31f-164e-f8a6-ea1536e5812d,3468006145,1680853969100058312
+2937dad1-373f-1079-c65f-1ac5f423615a,1739404439,3319843486264798399
+b8f0047e-a5b4-156c-f67d-7ca3022cc986,3987991415,16554295542011345150
+3f20e19b-7143-8b90-5a50-dc5087574cc0,1470852458,14151464517671496167
+58653879-c423-7bbd-ff09-47d2f52677ab,225126704,14469836256239398783
+4ad937e8-663f-1f5c-f671-28ac1bb7b06c,1644175004,1188967564132158126
+584e493f-5cf7-4beb-453b-e67636005dd5,2776303127,17451892628629645491
+c7d0e3e7-f2f5-a4d4-2b54-c765dfa4c6fb,213989612,2476730036208436279
+da87e60d-4c2f-dd46-cf70-bed3d0216c52,301781433,1674300389717613838
+fdba58ae-591f-f874-e003-6a8c539c4f25,3509290655,15082698482484383511
+4063cd10-a37c-6474-c4ad-fbf02b5c1169,260076478,1858382382539436487
+aaaa3488-d525-63af-da56-957f9fa1d18d,2105649070,10877247464102020970
+61f24e16-334c-fa78-2ffb-8983e2585967,417020658,6812205499696197203
+1f657678-a3db-87e8-da8b-1a13d0603b76,428893640,17957198860013747068
+c6c074c1-2930-dc7c-2793-93ee9eb1b2c5,3953330760,3284464569591194537
+7241c0b0-d1bd-2b6b-3e76-5de0fb120f94,570208437,17221743674051206166
+4e113c44-db61-8411-0ab1-b31d2c87ef00,1793776824,14624475797598066746
+a2eff567-4fbc-0108-939f-cf0a219fed18,1719605175,8117153364316957549
+ca8bc8aa-b6dc-cae2-6bd4-ba7228a5cfc4,2509594229,15421683913554515881
+6d8fbfa6-3962-e3e2-e237-e4b30f23888d,3976840010,12963340940244823949
+5bed5f46-852d-d247-6219-df536cfacdd9,588405838,13591932755228381316
+65141745-8f7f-00f7-be8f-ca5ff6e34507,4253002169,657224751855380897
+6c2dc27c-1475-a2f5-ca11-9f2115f3abf5,645423815,13017281312481740007
+f40e9397-2681-306e-de3d-faa770e20f3d,2448528446,11447544561296843926
+02d852b4-9f44-3d05-b851-3d87ec008b34,1148841913,6699845558632680362
+2b7e3a6f-c038-155d-6e50-c675fb5b4430,2832707323,2135630607701226403
+ea78e00b-a324-094c-a550-0834b0a2d603,1284672349,8987017516110443922
+8403b406-9749-e30e-6f01-c13d288f04ff,2665603374,4069776929618493052
+e88c8745-9e5c-a289-3e03-88b06b7c7898,2210707127,507396065574946394
+f0a5857d-584c-979c-9aff-f87122fcf6ca,3836111489,1329038016820587597
+b7d60e14-fd28-a4c2-c4c2-6692c84dd04b,508318,17262157825231385065
+5ee759ac-0845-7fb1-74a4-c9d5684603ba,2863515938,7261277969854816838
+2e68be87-2166-37c5-a17c-b0374cc3bf78,3509217435,17249496123151421292
+273e2082-2739-6d43-73ee-c64cde919fa7,1518117962,11538311500119760063
+bd7cf4b8-4bb8-c9d7-e394-d4084d4ee4f0,597869760,17033278143600120516
+564f34a8-c969-e056-fe7c-5ea7d1ef9670,1324506136,2596709382021629464
+6b62e579-e5b0-c9e0-5edf-81abc288a6e8,3225182416,14619578224750999910
+bf4684a2-705b-9391-6494-b4e42a78fbd8,1966138290,8174405936300521759
+1ab15699-f6ba-2ab9-3555-157e54de7654,3936797785,6105537512860736133
+d1182c11-5c6e-a914-b12e-c1dd239e81dc,1248030285,14223328369159851518
+e38c970d-6ddb-5b28-a4fa-7380520127f1,1871014243,10153115841295158509
+842b9adb-ad36-2c6c-6264-2cc6b76ec24c,2711678288,61171231015560313
+f2e8c523-5846-8875-19f3-a2622f473794,344072308,7548453418587125632
+2fc7ef50-2a23-af51-11e6-760a6bb58633,2223812054,17051669213975467328
+9617ddb7-d833-d7ba-c542-f52b6cb89a01,2541502564,1344480258525626613
+08730837-ab9a-da5a-64ae-325b3e6ba4b3,1890274128,4910602976225664808
+6cb0d40b-cc27-e293-c88d-2edfa4829f10,666264383,15258793633065586723
+92020172-67d0-0023-e787-967fdfe4e553,66939408,9205563016355270564
+d237d5d8-964d-266d-c33a-8a9603de41c6,1652968582,16392458700305665084
+0af52178-8d8c-adf3-10e6-984a374fe017,1775108411,13459922209962675391
+defc319c-a477-5ecd-52ab-13cf21eb1ce6,3310435467,11996792914670696573
+6bb5154e-565b-aecd-9fa4-28cf38c1a38a,2696567553,6986635969182087333
+8f853752-a70c-50f7-0aa8-f49fa7808b2e,2947626734,12188637004842363315
+8243d23b-5958-f032-327f-609a9d43f676,3899842408,9499670342372043128
+c0e3b061-9b17-fb06-21bf-86a8c12aa24a,263733244,17946827796183234347
+f15794b8-8d90-ab61-b04a-3d79a16534ef,4203434683,5050965992004090078
+92740205-065c-8a76-db79-abfb686215bc,1352662584,7010093535362858193
+18c5db1e-07ef-009e-adab-05c6237b4e29,3165982032,14942594340242475580
+27a44b42-db59-3f40-bf8a-b3e61224ad09,2968509040,306276409201762060
+879de5bb-c74a-b5e6-8123-3b67f37bbef7,2050561948,12110516882873987878
+5a1c47cb-4242-2b06-8524-d22395a3d4ca,2564512753,12778019767775885372
+d33aa9e8-0780-5b9a-70c3-e112beb17866,1321584209,14570661357702494818
+e2013ba1-7f6d-70a2-3b64-bf9691f5f0b6,2712499544,11302526534869841006
+a0324d33-0e9d-54d6-02d7-7f7c8eabb755,1726901776,17769196123407000424
+0d86b7c2-dfcc-242d-d4e4-2fab34bcfd34,2466499612,15712468523518895338
+2b69a784-d5a2-d217-b1c9-0068538c6230,1246103965,15709107484075583566
+59489052-a861-9554-dff8-fa22c8de8e5a,1919800170,13147323904136439911
+4f72205a-cdcf-237d-b56f-e7de709acfb9,3947171217,11553794656365966241
+4d5c489a-c2bb-6492-50fa-5af3f763e97d,491210409,11775359918157268720
+75d4d43d-c28c-144a-6287-67764c95695f,3869884226,13949981254181753101
+af6cd7b7-3bd8-6d94-059f-c6e073c7ecf7,3734165177,13521726113661360245
+193d86cd-0d2a-03cb-954c-d483862d75d5,260573376,12791080131637765725
+2ac72824-daa0-0b3c-b8d4-dc271e21aa12,3578936524,9611198361498718414
+125d7bc3-fb43-bf91-3f11-0756ab8f90ae,897743919,11817501343643177188
+b7e5e54a-767f-4bea-3ef3-fdf3169fdb5d,510180014,15489038380021139423
+56c4e425-83e6-0e56-c4b8-ff75769deb31,3962811655,2495780347746490061
+4442c7d8-a0cd-8935-d6c4-e072452a131d,2380467349,14855823996917547325
+89921512-9ae8-b0cd-d9c5-836c3e90b1e9,1385867299,5118224952692670341
+22165f12-d869-b781-0f2b-585c4ecd1b20,2565048138,14400690492374588834
+4743f423-f58d-5efd-457d-7dfdebd5871f,1194961638,17374064655540614489
+c93bcdcd-ad1b-55d8-1da3-c4c4d4845fd8,528738917,15466074664914211461
+71a8022f-94e7-2261-ea1c-357d2d9139ec,3783804452,17431349575471273807
+7c2589ca-2d44-6019-7a70-8e3b3807f3c1,3150197236,14897774001941511296
+66e8747c-0f5b-feda-25ec-d3b1aa3ba0ed,4137660485,13258195164959710747
+89b9f117-64ea-d575-af3f-feb60e46d976,2338569987,17722660318342388849
+7e79163a-1728-e343-2853-5e7f7dd4a546,2824437518,6189854107080902724
+9dc50e7b-f694-a801-fe6f-25d7d79c04bd,3926285658,252174785217019568
+4549fd55-6e70-357e-560c-74196c20ad64,1008803272,13676495318665491672
+cd702a44-939f-719e-ce0c-767fbcb4f31f,397658320,12754091769793344511
+cdfa699f-686e-5b51-cde8-24de14faf6bf,3453245894,2520748694579771852
+c2a35510-877c-dee2-c8a8-e82aed3fb848,2593983287,16370881257444778878
+e17aa716-09f0-e201-5a55-e61e1eb84431,3645228404,1353295572761980101
+d592d44d-7670-fc94-31ff-f630b4675359,2089895869,2685151674617855203
+2bc4ba47-c706-44b1-d51d-2134e320486d,787290123,10894708295848408132
+8120a587-9d8e-0e7b-0643-e9080e845091,760969037,16512961811246249528
+5152e3d2-dde9-0291-1d47-9d7ea9bd0a81,795146997,6391609460234686524
+fc0ae006-e371-6c81-5f10-10f9d13a91ad,2671956183,15580809685936665483
+c3f7e253-fb06-e9e6-838a-fcff3e0e7a28,2709024099,5140516361444203262
+f7281a0d-414c-ddd8-fc5f-e490956636a9,1713520601,14156682214076753518
+a296a000-367b-9bb3-4434-1c96eea4775e,1742514957,2117734618199092374
+fb3a5ca2-bd66-37a8-bf93-46693a753097,4129977129,17944723313103437160
+f47283e8-332b-6972-49ac-292efee3d092,2215849383,3544904598959068955
+ad981da0-c9ba-3030-0d5c-4875b4d73854,2156476574,13329004407264905821
+56563345-e90b-02d0-f556-b69b989e7994,2359715621,6715558171789841963
+91fb5806-e715-9eae-be4a-bb76a22ed920,2099802870,13379795504832458901
+69f853f5-d0a5-dc42-6d05-6cad3eacb67b,1869138917,3121094020295843582
+96512002-dae5-0685-84f9-078336fc947b,1243882280,1331283621174409777
+5d1f1f81-e107-b8d7-612c-663a79f62f17,2430115230,6987328678382965172
+cc98db42-3935-a846-709a-55cc8ac3b89a,4198389591,16290867763147203241
+c389261b-3273-ad84-8953-8583f12d85bf,2031533075,8059507534412461357
+d3aa073e-a4e4-a0bc-73f1-81414b135535,3703913499,3205347755847698291
+e47d86e5-9bf1-5f26-5cbf-069e26959456,2767195842,11442641478138885021
+32ab7409-5fa4-b07c-21d9-04607b43d668,1178656333,6831873421841627001
+7a062beb-8620-7e1e-aaeb-b45d93f212ea,84291722,9251515147345411389
+19c2117a-01e2-dcc3-2f26-b5a268254b5e,1647029824,13896827647420437682
+a69c55aa-a344-0125-c994-158ea17b4bec,2604500816,18101141401994341675
+a520ffd0-7c74-3ad3-124b-a688dea53300,291903260,9585601917254122404
+2062ffd7-5537-55aa-8ee7-c7e511aec668,2304121771,15156366922896217681
+fdc7e93d-3d6b-a463-6695-108691203243,1099270904,2985892334454042153
+a0ea4031-353d-37cf-1eb0-5f313789b11f,1408237276,15321649581134815153
+06caf100-8dd6-8f56-c3c8-a0a926d8dd46,2703272705,531159784286585920
+27ec55e6-5dd3-cc88-5bc7-1f3f8eea0f60,4179508598,16694043919864283039
+846bc78a-bf8e-7dfe-06fd-9986fd17617a,1424372217,4231689928648119995
+d8105cb5-55ef-1816-edfa-67e20c4ee430,2941429997,13982086994955320508
+0ad85389-15e3-e520-7292-54cf0fb42de3,703743761,18974078482088808
+edb08814-83c8-8db2-337d-482806226862,269656909,17089407780622225896
+ff971cd7-15c5-be70-428f-22627ee1b1da,2207722424,5522654155191622027
+79f9c3b4-f4d4-aa06-26e0-fee03f6e39b5,2370226213,12914816414593254801
+3d962a58-f4c9-a375-58ed-33a79dd86909,122406824,9848438945746751979
+0379b4ac-9440-7591-99b9-52d23cac48dd,1264733656,1488950869966264535
+e6592e70-397d-8204-47cb-974bfd6e3936,4056987353,4016236645015667796
+07585064-5d6f-9abf-0c9c-87abc835080b,3848424366,3458730236835876008
+01db325c-ed0f-aac4-cabf-b387248c0090,2046971143,3579023747137960756
+39978050-e075-3e90-b6e2-f31d4d70003e,1249654492,8495671101450414222
+4379f58f-6dba-3f05-b416-4f4e04b6cf32,3741420743,12738004748943427007
+e04dca12-6b9a-167a-0d70-1245720a2d05,2471114918,14638550348919879953
+55c4c9c6-e7b1-2a7d-341a-f031ecb8e567,3776174353,16381530472130222185
+5dcc71f9-0278-773f-65ac-e8d6aadba55f,781577830,11034395400613807784
+9c2c5734-3bcd-4d1e-4551-1cc4f2666375,339316810,5017973800037520711
+e82046eb-02e1-3f2e-4b34-b7209e3c7e77,654958179,14927255037241538750
+d8d05238-b9c8-ef87-e351-3591f2e7e0e5,1425270485,16380904276640764209
+5dc8883c-0059-e867-f445-588d208c7508,1765550065,12904440632386447152
+fa552eb0-e6b0-ce34-c32d-4d6c8d3ddccc,2070116810,2211363375622052427
+afae1931-d57c-0f57-fcd4-bf3cd0715e4b,3271427225,4705846971023746018
+93c4fd29-61ae-cf85-e27a-cc6435900532,3946626114,14523270055942194182
+e81b3920-18ea-47b3-b9e0-598b68a63039,554367503,11758120111917810303
+35891eb2-7dd4-22b4-019d-a68b0d91e002,1909967372,13610605549301111251
+3f9dbec7-2861-9ef4-1fdd-b8e74e87221f,1165311148,1671699334979969623
+1a25b0f1-0567-ac5b-fdb8-41500c2bb299,2595278507,6206190626031698684
+1a767e74-64dc-2bd0-803b-1fd0a44a403d,299356605,10872566904425301924
+fdeefffe-b61a-8531-2cb5-8cf919c1791d,1571035357,13406028305169887096
+f97a6c46-3c94-5585-741c-3ae8696dd953,1164410681,4077348361498279545
+4a1e3ce7-f5e7-3ea1-a5e3-0713428470b4,3832078075,17987698181825508613
+7556e240-df76-6e6b-6176-6eda1fa91e92,3345429899,17979691506115377186
+3e38024d-1b34-ed1f-b574-28648ccfe9b6,1215643584,8055283993006840710
+c126a5b1-eb87-6892-9d14-8b0076066308,3097288995,17701601683501263221
+ff5445e3-2150-d1d6-aefa-559db3b785cd,2213904368,8436822996174768994
+a82295a1-b975-6a7e-d0ea-e82caf660050,360416932,18285537294274617521
+653d2597-9c3c-edd8-c66b-ed4c48e5c06f,1433039266,16163256072612410101
+7210710c-f560-a0b0-9f83-e6ba936cb13a,607787161,18128614084632986919
+a6795bc4-3f8f-e957-8db3-7e268922eac3,4092574750,16256799123988046958
+16b74920-df80-8df2-28ab-5f0be1e7efbf,4208888896,7168410420714915836
+4fa8a40e-8922-05c1-382c-dd1a8d2f32b0,3104248199,1275664820585409316
+30567264-e987-8797-41be-ae5e8f871a81,1547275628,16124926322398176755
+40df69b8-2c7d-12d6-18b0-ace137977ad6,2823701848,2469875802152143826
+73e91c12-eda8-2dca-fe52-567da4c7d587,2434024730,9356858910079891309
+d212cbef-97ee-c554-fdbc-a26491d1489d,950683355,8024689519782291447
+a4e0f97a-0601-9ae8-1145-60db403c3ae3,1944272459,16708558498068045164
+1430836d-5281-08da-7e7e-b3582852c7f5,522320175,17793982101129418488
+f71cd604-a7af-2dee-fc74-e11916a261dc,3476820314,9488167039833816890
+5aa87a58-f65d-3379-bb49-490d12474a06,4135142405,15324591916687680324
+ea43d03d-e724-6421-9589-6ebaeae3fc88,331590942,14281774722099237558
+b8e946c5-40fd-2904-c0a8-2711e8ae2ab6,4046447886,15929842698910052076
+2584ebe4-1239-0138-4732-a4641bbc01e9,2791336320,1788003890286368434
+10e75c71-dece-4e36-c04c-90764221a819,3817322710,15080356617690696032
+8b7f72da-2cfc-054c-75d8-e9e40601bfc9,3836452673,2322460774589091870
+3a23eb6d-1df8-027c-f776-43db74f2f303,1589931363,13111031683998142105
+81e3fcb9-9618-321b-5dfc-a44df31ff3f9,668395379,16475510190421404959
+e93b90ea-9e38-3217-7150-642494ea9da1,2566699393,10095998707653023101
+6d628e7a-b626-04cf-a106-cb8b9273d056,2266596198,9810584273591577504
+e02244d5-cbee-ec78-b013-3f5d8399daf4,3811438210,5181283393035577573
+e10951f1-9087-2f82-6417-939dc9f3b593,2527143388,16781016589711148052
+59829841-43aa-faa6-98fc-1b9db9231f73,3244315478,7487812637750334587
+b0e050eb-283a-4f59-8ad9-0d6657831dd1,163211590,17506956241704480409
+ee808e72-52a5-52d8-ce6b-f2a612ac3b1c,125621455,16679294777643086717
+82467490-f2c0-5178-de9e-a5d53e08fb34,3332042281,12035527688807696766
+b3749046-ea1b-a11f-356c-8abc4e234c98,1944111789,9428796087541136709
+4dc8430f-a2ae-8972-9e3d-0a8f6318f559,3629597810,4918916692935443935
+5fc6a478-6873-9681-deba-171917bca6f2,875724739,9834817650173134371
+f514bcf1-4459-d398-e161-1bc68f5999a8,1209596839,4097459938438954792
+7b20afcf-bb31-e7b5-1ace-62ae1bbe344c,2943065152,3453560636470465153
+a9373494-ab28-6980-6c72-3a635c862e37,1575686400,2573981309875954598
+29943f1f-8b91-c8ab-03ca-1ee4893e0d37,2710704295,10190561849287767324
+5a36ced5-df9a-6088-8c06-98ef4e9e5a06,462075455,4185338014701967879
+a2a9e33b-d929-9a57-d035-c0f60b9b20f4,336489782,1207637878067370373
+f0f7b3f1-4b4d-2c19-16c7-1d85fdf07647,2537893285,8464768625783002038
+cdff60ce-c382-e59f-c4b1-b4944bc607a8,1407701867,13294126850208019180
+0538a5c1-5060-0378-13dd-c89135eabb4c,1613177148,17904244924053300835
+6287a56a-2e7c-8403-a284-cbf076aab772,3638282422,8899901205713823038
+b5d4ac2a-80eb-0059-c16c-5a43c43720ed,1612733237,11600212936798235086
+f4dab4dc-6c9b-f89b-8331-31447c5d0d9e,2298052816,2252276586948976804
+2e430add-c9be-cbd8-6136-f943f34a71b7,2888318413,5745551881295491523
+82eafbab-54ee-e16b-60d3-79c7e173c223,1163995299,4948930262682546480
+df3092b4-209b-6794-b6e3-e2b19adbf63b,2453035937,12682428893011960255
+83b48fa0-dc2e-51e4-8667-521103382582,748918863,11216179098943645925
+20db6488-2fdd-3e43-1d2c-3fb92d07bcae,1810237822,18193255878709180604
+c910f343-a36d-4b9f-8b39-5469c9d1eae4,3596405704,5975253360182328307
+6eeaea8e-60e5-615f-dece-81bbefcbd77a,2754087667,964086617515364409
+140a09b6-0229-cd49-be68-2bfdd8c34fef,2379051816,7449937373488904091
+dcdff4be-2ed9-46b2-23be-c0aa4dbc6b83,1827060908,8624319957300657002
+cc3525dd-7b3f-b6c5-f1e7-8e6fb0d0cf7a,4166121473,16821189954499967350
+16745328-1bc5-d70c-ea37-8fe9cc85a76b,1257729743,17000200978893867735
+66fce885-9006-1197-253a-a0d353fc21ed,1748013864,14988909897622743050
+cf0e5bcc-92e8-dd75-c641-e95e0d2d0113,2182477990,17400959023886093676
+17d8e7f7-683a-7836-b151-5a3c2edd06ea,1913828351,2975159849708223377
+c719cbb9-379e-707e-9ac3-663a698de969,2084688496,16010828779739775574
+41f28ed1-67e8-04fe-d4c6-78fa3bd27dd7,2038165479,2222122847379360478
+bb78101c-f7bc-6b22-0923-a577bd456f12,1967624851,250604214939816506
+3d4d8fd4-4fcc-fca8-a024-96ea9b6fa079,1275359399,9669485419232487613
+e61c047a-8ad9-cc9b-b45c-6969246443db,3493500783,828110223106010924
+7a210d84-dbc6-6eea-c071-421c461faf94,1356906933,10840199249560862578
+c2b4651c-9827-6163-2dc6-0162444c75c6,2727138349,14499382607674613591
+9b779411-c160-da82-38aa-f5cd28c086f1,2022596123,7634141011089612095
+b358fdd2-1887-a9bd-049f-50ecb5b40649,3612347020,2541309512319686423
+0f175273-4940-1e55-a8ca-3bd8b0eb8ae6,1349129928,14925814049810883939
+4007f724-84d4-5761-f5ba-8db176cb4997,2040539697,16621211463090015986
+26fb1d98-5815-cca1-6eab-0c83e3f4f04b,3586768566,8939069416232184736
+e3d736a1-7f00-910c-9afa-526e1e5926c3,1631151758,13423523185783807774
+b87dd1cb-69a6-3e66-ab21-8b1f73484cb7,108009870,11198601238908272251
+9010698d-11e9-e96a-7ae5-1cb057532e85,1835655337,3483537799811471510
+61bb881f-2311-feb2-4b53-42b174a7ee76,3358395422,11339602753676443394
+613e20ce-a07d-6d85-9677-3c6b917c8d40,3519604915,1339710220123977022
+cc614078-89d2-50ed-001d-999d69fcad4f,3104482617,10263077278841881868
+f3c41a7a-719e-da28-9e21-2228110244d1,2035262960,7157809011441012265
+e492f9e1-48de-fce8-0f26-eba5657a89df,1666472321,5319895592868305833
+2ccbc053-15b8-3476-424f-963bd0b94e3d,1694269825,13646988312671910484
+5d7991af-7269-0ab6-7ef3-21978f32a1c0,2343735935,1940961867739700112
+099e0781-f174-5505-09eb-c4569500b291,919958462,301003477139908891
+16aff9a3-e03a-b61a-14da-91fcf03a410a,2190094351,6824507526110811170
+1a417de0-ebe7-4995-3607-9a6a58c7be9f,45794252,3006183151175692883
+a14aaf2d-2f99-e1af-5c74-04ac989e41b4,2244093051,14931767728697329797
+ef8b561f-0ca9-dc8c-6b22-68c5130c99a0,3694193891,6988678933876556670
+cf590d1c-17e4-ad12-99a8-93f70fad6279,97974594,4265589096975008061
+81268b16-f993-f45f-7114-dbb5a7fc40b1,3735829481,15580453349901456192
+ac19a127-aab2-083d-484f-006ad408dbef,586575882,4438358454749681497
+ced3ea9c-5b44-ead3-a440-3cc22d05cb84,944515620,17481661285176996722
+cd866c1f-4ff3-f6b7-7b5d-7cc560a115f7,1353366330,1672313586201397318
+09b4f6dc-fbe2-fd51-296a-fcf14303fa6a,2937011732,436298653264504423
+b078eee9-1d98-0170-c591-6d63bbec2cb7,2860403141,15470017107426400759
+ed9972e3-3c6e-2c25-0afb-7513bcdda44b,3442704908,1770414562855427383
+b3e76973-5856-235b-0e0f-1293e07f6045,3815441722,15587748609452919587
+6b41ca8c-602c-6fc1-b004-e3c401b69a65,413099591,4285393744605855239
+7cde1313-368d-caa1-08de-faca5254edd0,2961479340,2728903249396529363
+95c41ee3-45d7-9bc0-87b7-9b5b2f353e96,4036320831,4295633509494714219
+374df0a0-f02e-72a1-7706-2a549abff9b6,1997025201,14574074395812500779
+5fb9bd35-36ea-0182-b30d-4451228c9222,1240445982,17230791582294299217
+7307d75e-e163-7dc8-a91d-c5439519d19a,2691375940,6428065652401574006
+3f22de67-cd5b-91c5-e1a0-500494d47f79,2050719346,3815275607282139206
+dec5c105-c422-eace-1418-e02171e9f3a8,1274048783,8082401080299435212
+f8bfc102-7623-5512-0e32-6f476ebf570f,3740195029,5151457786142274916
+70708f70-612a-010f-9415-c99cd79c6889,3563080130,1788313877527590863
+d446c8b1-66b4-8aeb-5585-dcadd6097cae,895597114,9995546112944669465
+edd75f7f-685c-bac9-8ba0-8ae4ee8a610c,2917619385,15960883605028111578
+69762e7c-d7e2-a3cb-51c7-57203418c2c6,866101769,5413030434693402861
+0ffdf44a-134e-b3af-5d2f-76e1125d7045,942221099,6888267826897655551
+5b9b19ea-92e5-255a-91df-ef225938513d,430077319,5094377606947700255
+67425fd4-d3ed-ecd9-ed9a-ecf5efef636f,2404176448,1754640884990830372
+dcc6c896-944a-e020-9770-10f80708b1dc,3932498587,6157464162671161305
+d0887435-54d6-f596-0597-e2ee385f4196,1137510231,12652335837745472266
+e67d26ab-5b58-e402-3e10-4e4f74656616,34445084,2217745508381403468
+0ecf1ce2-e43e-c452-cee9-5724c452c4ce,1632077984,9429608617821839631
+b00286f7-3b53-f93c-e7ab-2b598e793d83,3980745357,15092483762273861352
+7bf22e81-99e9-0920-9615-5916b4c0d43d,1919002760,2037446719084189538
+afb4a0c9-b600-9837-4526-4dc6302d3acc,320774211,5174039559979333434
+2e13a61b-4223-b790-de38-c68348d8a9f8,804946444,11779882627199310900
+8886c6ad-7c44-d01d-a5ac-a99a25ce45c8,1643239915,9825601673360527534
+3aef57e9-8254-160f-4c29-4f97022c0128,2231781844,2699997052872041058
+cc0125be-8176-8135-ef5a-2cd02bbf4a23,1607936983,9907402376857511139
+f5f10af1-042d-e963-6ef1-4b3b373cb47f,839105062,9157852903315997708
+5c1ba22c-5ab5-1096-f825-ccab2310e23e,3438386359,16311479902539830869
+f97e8bb9-9575-9183-cfde-3cb8216087a3,533708331,10800250736703688718
+b93adfb9-3121-e19a-3d80-da033c1a63c0,2498720372,18422126956891820933
+a33d706a-a1c3-236c-983b-c34901ef7580,1863657641,12584982572847604666
+b4ae389c-ec98-77bf-a6a3-331b56af5a0c,3819070488,12094886087970554059
+35c4d9fb-927d-b2bf-41f2-1e5678bc813c,3631882575,15891122762535807020
+e765fcf0-8719-397e-8cda-a7ee09a4d5a1,2184426430,3700026019263825477
+2fc2db7d-fce3-c054-0adb-ccb72acd6c1a,2219075752,10042794042009667003
+db77aa3b-b0fb-9c7f-b59d-a7da2cc8e306,3173230404,7867828751831969040
+36d947b0-2a27-81ed-e8aa-baeea7ec987a,3850770290,5387451563567831714
+21636b51-e7f6-7462-00e2-443b26676b2a,2201622633,11027402127185473327
+bc8b9159-0991-2a0d-1f77-a359a58a71e2,2764711980,8514663286274051532
+1df06df1-2ae9-5c13-f810-c6d30227ead5,4154851112,8086781145888425638
+e5e163cc-aa73-ba5b-7d41-38a066de7bb9,3322777210,15469318554858593536
+b384434f-a561-7d5d-5286-7ee6aef558f9,2543932721,8005632752389998078
+9b1fb520-746a-0280-78b6-16c9823c8498,3517083177,4461747838281655069
+332cc418-292b-c0dc-848d-cd709a07b4c7,2666241193,550021940453864629
+9aa3a85b-0598-bdc0-bbe2-84cf4b8a0897,1100028909,2681556582468533654
+0258805b-1b4d-911c-1945-3a946e4a75de,3149684578,11325449816073572424
+012dcdd1-41d0-08e5-60f3-60e1a7dc1a20,4236973472,4925490047106374042
+53b5d111-bf66-9fb3-6b14-e7ea0a88414b,1663094623,11614673608574697315
+2b929a57-f0ea-8b7f-f4e8-2317ffb1bb61,1307235157,10494966997264532292
+1dba2a60-3f37-0e02-5547-e2ae593cfe69,1332424198,3350840031483258612
+9f321db1-83f1-84ce-28d1-e3f4b7fae497,2115958559,2160103894480176425
+b666e4f1-78c1-16af-ddb4-a61c9f6bd9d5,1155896874,2037072332877900575
+176e0710-5745-3824-a83f-cfdbd8d16b2d,1326961089,13880450327865258266
+77b3e4e7-1513-7e20-5861-57844748bb51,940647810,10768680523676908638
+4375e6f0-8ce7-9bd5-0874-0d3795529f4b,2841576517,6564441891424582113
+062786d5-9216-6f7d-51b2-a775d86db6e7,1534751681,6759683056317301086
+a39c79b3-0220-4df4-7670-0657da116ff9,2507017351,9192437676560408117
+24a971c3-a9d4-a092-3a0d-996a2cbd4376,3838986210,8290703901552097633
+9dacbd13-668f-dadc-95ce-d91e940aa024,3568262816,13008283618130254668
+6bc66e1b-a2e3-bb54-e324-3ca6636338b6,1014864927,15419903116287798385
+1df06d9d-d314-829b-e7dd-6a58d90e727c,2088491297,10770884958146846081
+c69d3986-44e2-cb83-07ff-1ce2d1e81a15,359862024,4541518157921049803
+123d0e31-473e-0001-c4f9-ea0078316ca9,3870607553,16880786333658751435
+b681f88a-db71-c27d-b9b1-e4c9ba6a546a,27335645,8199150424160409197
+db154e51-94b7-77db-1c74-fd4b59d4fbd9,4243370470,8719590823417944543
+bfab0ae6-6d77-f336-e13c-89b1caa8c899,3137685983,9862840394053388532
+09e364e8-fe59-f243-147e-0b612a6c508f,1624985150,10021722844696555922
+4dc81aa0-872c-97b2-ffd5-e451fa53134a,4024796185,1885559375194053262
+f98adc8b-2f23-8afd-1cc7-48241364add8,2697953390,3331942340154142745
+28f959d1-3348-fa87-f3ff-5354fe45feb5,2123161462,14512766639632502745
+e8ac7b3c-35ab-532b-44dd-699adc3e5a36,3469086104,4761966536599214451
+22b2df45-0a1f-d210-557e-6de0d05cafa9,1298582283,2523097074335991546
+80bf120e-53c0-7967-d39b-854c491f2447,525229685,14316866265302280291
+9bf6cf81-61e7-25a8-49e6-73e54e11df15,560646785,11891192528324867869
+87a6986b-d904-d858-c292-82c3e07eaa35,3243552133,14239534575627705903
+4aca51b0-52f0-12b4-bb9b-4adcb964c796,3467939966,1985412191176542607
+44279ee6-e034-b9e0-3a60-cf66e48c0e9e,1802343338,17463368982324394596
+2471d0ac-654a-6c97-0f5a-5e89571a8fde,1136122452,13224369711723716031
+732da578-34b8-b562-d2e9-2ba90b960a1e,2931660336,11376919047203545628
+9c9efa05-96e7-0c46-4424-bc08de9de367,294851392,4454404834689140458
+4cbdcdd9-1c0d-a63c-c900-ff9068874d0d,2027091708,3637718215319547467
+4a3ef68f-d59d-87e0-a3c6-f9f423ffb111,1237203850,15648396703615476193
+15b0c748-6500-d3f9-87ad-d5e835747fe0,946588641,5902896483919647233
+bed85196-f391-25a0-ab30-583bc3efa665,2575123726,15016853246408265806
+5c391745-95b1-249f-3e04-4217c3f5e1ee,2440650123,9067215476861237490
+023f3c3f-187c-6d64-04aa-6570ec027802,1606565495,572534143678291777
+5cef2ef4-9a27-bbd7-ef51-3272c4fe4c65,270102865,499713860947092720
+c3a24818-cc2a-1468-68a2-0e5c6071aab7,447368875,11523756911505533106
+e954bcc9-452f-415d-ce46-3aff43514e4b,2205349556,421297908483805804
+c91c9ab7-67ac-fa27-2759-76f9896b5029,311890406,3058032350970310418
+c3b48967-380c-d862-0a80-38dc23f06c12,2492895721,3306018414289752064
+b7be6e20-bd7a-ac48-263c-e09d0a967db8,2422807456,9446655952237797179
+d0c1ae2e-daf6-5b26-e852-a75258e7cf6a,2132350005,7198930683824231007
+b37f91ce-8887-2ffa-6cbe-0e6eb7338775,5632346,6802176726708320853
+99c06347-4032-c0d4-124e-6838ffca78e0,3203213144,4685722335458220117
+da66ebea-93ca-911c-e019-31b9b5ab0870,1830900088,7789326470985984659
+4b8fcc84-29c6-df39-83ac-c08e35615b00,4027641043,3374539418408089217
+19fcdb97-bd29-ecc3-f932-60a496cac1c6,941887822,8651848071913671940
+ccb216ae-67fb-5607-7431-edddba6a0389,3509768947,11368375407654025555
+c14d5438-f882-d6f8-007f-363af0fd527d,1485897466,17648905752034005724
+6414e719-5823-4daf-c572-c82392e5ba07,759548334,2494527635684298822
+be42c6ab-8b32-93f2-3b77-d63faa9b1e45,1327000191,10330792069016099400
+43dd47da-41b1-d01a-3843-e1b162c2eb78,3091098546,6173206485706029283
+a4d498d0-9eb1-c40c-6ca3-7dfe3155b639,527641820,384458900975744792
+5b5fcc20-fcd3-9d1f-f488-5c0bc531dcc3,3568497672,16839939100475522040
+a1d0a811-570d-604f-6941-dbef158d6b39,1391708731,4843633138836268977
+16dec3c8-85be-0ab3-c5ac-8e6b81d8fe91,4234729426,2611313215681074684
+df0ac3d3-7aee-a136-0f98-08fcdfb76973,3709050279,2305378864306252900
+01fe64a2-e1da-fbbe-af6c-16cf131b6335,82624371,4802542841743496915
+e658c764-03a4-7712-c397-eedcaee4cc35,2869552941,15189191072163767966
+3348e72d-ea84-6b25-a196-ea3e04bffacc,2569740766,1567265689199352260
+7a4ced24-80a4-c356-6ae4-9a38750b7330,2642741687,970639460257799878
+1fc31e44-ae9c-01cd-d6a1-033dfbd5c29f,2901364348,10387069019202770856
+53f13230-b893-ade6-a2da-65f26fc06d3c,2052451585,18192401458361443854
+165653ed-9f32-3434-0280-103958aa0f69,3488871406,3224997199748344387
+34433c64-5033-6261-b32e-9f475f61fa95,2697588924,10850481320477363812
+cb60a95e-c3b2-0fef-7e87-b2b3ab57c9e5,3591473031,9639893342548082080
+a4480af5-5b68-4058-8a72-44eaf1a729e1,3445208889,5900146262394509302
+f6463706-afff-3343-af5f-1d47e880b9c7,15726263,1822317286057322398
+e85a3485-6b2b-9b74-b16d-91ab8f07220b,450515084,8431045971190719906
+e3b82992-a84f-4bae-86fb-1af13029dc4d,293051989,15281815282303512015
+3c0eaa09-e61a-7f8e-b9a3-5d47a00585c9,1947171242,6761295570683701133
+f9586d48-7fda-70e7-57ab-65b5768d00b4,1621299465,3030133352740578971
+8d9384ed-b3b3-d442-4f79-ee4b0e41d265,4108714989,4537802069040827443
+8bab980d-f0b4-568e-d14b-92e562872d39,950037604,5961519807334022498
+84869d69-8c55-3d32-4411-8bcc16a60332,3727165671,1249645946690601149
+8932c94d-6945-6550-c416-15961c713d3e,2793580014,13203257054554870936
+44f21367-2f7d-c72f-0188-7e7ab1434ee3,1778525918,11327610987123282802
+ec2e158f-5216-4711-c97f-d9e616654710,448096657,14638356144258549595
+bbfcf10d-8076-6233-376f-6a9a28875bcd,3162928532,16011809788971739250
+6637a468-c880-c508-6061-2a623a559539,1514959585,8867080218186821020
+acc3660f-efd5-af43-57ee-78e5006f8bff,163884530,4581579562972278117
+eefa310a-d421-ca65-f857-cce720b248ca,1446275277,4463550877430384058
+f0a2f1b7-49f2-12b6-b967-703b69dbaf6c,2928358433,5622959494344161266
+01be7891-fbc2-88dd-dee4-e3c75f38e920,451490800,5542419878657990010
+b70285c1-f5d5-1c26-92ad-f8f1c8c00b65,513536175,7459948852480372149
+ef2ec1a8-b470-b70c-e114-7a5d26476e6e,2091625980,17247645686596658510
+1b7ec871-0842-3acf-116f-38b4517aa610,3262635171,6110414004825481996
+0d4bbcd2-ea56-a36f-b2f0-5e252161f6fb,2157339677,17204412098998687162
+afea0b6d-05d3-f629-9c96-6c1ba254f4ce,738646180,13881179297594107634
+80acab25-6cdc-2ecd-ef13-a7eee7f6ab9d,3026097387,12376512398091433911
+84bd38b5-7058-7b56-69df-16cf6f5d25f9,2670293916,5457588431682706158
+6b9a7430-71c9-a34d-24bc-6bea7d6aa519,771983130,7458717998981887096
+529818e9-0870-c584-ed89-bd79b63ca140,3729952660,9952999433300471401
+95aa8747-14aa-6da6-539c-a0262a9863b8,47597693,8198468008276939568
+b114bd96-0813-aca2-cdfc-b5e449cfe40d,1342283496,5191263293074539816
+01be00ec-2ed8-c136-1460-b1bd342e4620,2531689803,6732276457813871959
+62c4ba6e-0c89-994b-6803-237217028339,1028459847,15961521389241165661
+b78aafdd-9d02-3108-df68-b45fe8175608,980855558,2180428185273844198
+83bd02af-c95e-75fd-69a2-9698f6d31a4b,1274333644,8182041633819551182
+b75ec74a-0ac5-9a36-96cd-84cae9f1f575,2141716469,3315211831528523432
+3273e5c5-1edb-4277-5047-00c245de3157,102660103,17918358185467281785
+2980dce4-7169-0cca-42b0-8ab9f8bae54a,453490409,16937339523697402102
+2005a1fc-c502-5d2c-c5f8-a39c8d16f0c1,501515984,15179184234045950152
+ce3d196c-6ac2-f0db-fe86-05b9303d654d,1257481830,9031929819812118012
+8126da08-81be-8a2d-8540-9d9b899c3870,2691740471,16836558232496833834
+52f88be4-288d-0510-2dfe-b336bba1259b,976700678,6725607026309992522
+02c4d59b-e738-4785-0417-272058f8e22d,610427156,7495259508781484288
+0b9f2f41-3432-12cc-9cb5-d001cfbc37d5,2374109538,16000955001143668875
+56cfb2d3-b1f6-4ae6-2bfd-03ce22cb711f,2106488859,6508485299602211640
+ef8c3bd2-d4f2-d40c-f8bb-e63770b6bc76,1181362186,12391764928312602154
+6bd32f34-c0b2-f39a-f640-964a9242e3eb,3683566891,11218627985283471423
+f53f22ca-7546-c4a8-8a42-e2263e367a5d,1064913253,10767841694945476543
+86f43fc9-5f96-defc-9af7-2c7a1c1ac720,2392006542,13705719649830154073
+2358e117-4dcf-f6d4-55b7-47e1ccae6b7a,4017808808,2675745445123989932
+422d0849-b3d3-2905-c7d4-6364325a2f2d,3787032065,7641011227243129368
+30d5ea7d-1aaf-2d70-72c6-dd1b321b77bc,1554651646,14732771382576448200
+9f7a72e7-96d8-afa2-c8f4-e774dad24aad,3477762770,10178654260738599064
+018fd268-deea-d577-7ede-9e4fcc528e5d,2047162697,14267237646950748646
+14297d71-522c-f24f-f541-ed4fa65a0d9c,587824272,7178331554837803119
+62105874-97fe-43cb-cd39-0747f5b75414,2057943780,9986331293648318358
+8551f26d-95b3-8022-7eae-ec69bb2261f5,1673355073,5562454035896683804
+19f4fe07-b360-0ec7-0cdb-76b4ec045b0b,3141582989,4597930894710002712
+21164d4a-1de0-ba97-84d1-1ec7d39f82bb,1286195824,7747893802747717693
+300e0a0b-7fc5-48d5-7d28-d1ab407b9a58,2922673900,12627484012350296615
+2888403a-ee7a-a5f7-2b15-6d7b972a8d04,103890985,1284020261907269563
+e5566b83-eb1e-c11c-4f23-4d75362ecc63,1693910193,646380053356888662
+a2a599ec-9c6f-fac1-b2c7-9a1e5512b4b7,2863351973,7278317138254990512
+56080af4-cdab-4f1c-150d-e97e2037b588,2272337614,18070857245352592048
+ba4487c6-f6e8-cdd7-a004-4aa1c2249f33,4265235675,14385111479329059530
+b7b50bb5-06e9-5b04-3742-f701859bbdb8,2974228710,15721622205858442215
+56370860-c58d-3540-7753-d29e8724da36,3822355005,14359012641197704797
+2f015532-f85f-fe28-53e8-9050c0680668,2886990667,17968915014848350620
+127726fb-6b85-95d3-f15d-1a2f8ef4a91f,2656202354,3911142707156659170
+82ab1a0e-f9aa-14df-6769-36a3dd95b07c,645078807,12424899286527372866
+38ff4c81-4691-d13e-552b-5788b4e3eea5,3071450612,9738982046745272920
+6470e092-56cb-38f5-4c97-6aa82ab3ac5a,626467006,16502275044652351207
+d3b4beb6-8065-d8a7-a3b8-a2b186410675,595861548,6805106548931844416
+fb0b5e0e-0537-585a-d32b-fdcf6f7405f6,4029906638,4246626887777540189
+ab65dce9-989f-becf-d3ab-a4e667c6313c,2259470321,15052452957744943091
+b98c691c-b4fb-fa7a-e9ae-be9913c54681,1986026937,2843618938671510226
+d74fc29b-892b-2004-a9c0-16be24966ef2,436747625,3516878411438248215
+fde82bd1-7b75-3ed6-c680-0aa75479f383,257587355,3282125852220656769
+32092842-51b9-c7d7-3378-aed9f4bca837,3713704336,3650250497074261950
+a2302ef8-e44b-0995-8d9a-47c10ac36d4f,3692571539,2066895252210302464
+cbb15a82-33d1-8cbc-84f2-8e32be8f4f8d,3438307187,3242821045165570747
+1f97e381-61a2-313e-dca8-49332eecd1ef,3367037022,17232868350912056742
+6cea1f01-63be-e809-5cb1-6d410388fadb,2165637369,15223593381013691600
+85841516-fcee-d88c-89cd-345e905875d7,1329399946,12229170692133436987
+02b4a1a9-dcdd-9c1c-0d65-a072fac132be,3773134949,11858793683891235246
+ec965707-0c6b-3add-41f2-d2a7b4cb4779,1536486368,6784871725703533912
+92190b80-d846-f4a3-a0f8-31b678540735,3804563367,8828100185692807599
+0bff43dc-bb99-3bd5-4239-f9baaff8cccc,1837930544,9777958756936732968
+7eb6c69c-a69e-4196-2bf3-3e4fb31b32cb,3747309824,17452834806503725943
+9472c078-0982-d34a-c5b5-390ef32caeb8,1759428430,15919817340478215592
+c589f180-26fb-8a06-9b80-912699add68f,3470724482,14589274993804817729
+7b0bdbac-9ad1-2f6a-fdf0-64ae0cc27f54,180880120,4664048567199720077
+663cd330-6ce3-1732-961d-e628c37d189b,965757615,11246341397726020068
+c7bee0ec-dd70-781c-c73e-ae123ea520b4,1737968467,8694456488666964449
+a87f3ff8-9538-4629-7986-0f51772bca0e,1490717069,8131925349524842052
+ce0fde5c-a49d-6cb1-b5c8-078dcd050297,3828125361,12384062358563356330
+634a2509-2cdb-38b7-8b07-50bf4690dd42,3659036475,14333894781011887913
+4b72ddff-b6f0-a56f-5ac1-5bd6751de2f1,1413156049,5551292952221583682
+742f1b61-19a5-4c16-d9da-1514b4684ded,4272397002,2815877689982557477
+e2431c14-2177-bdef-d5ce-9c64597d451b,2097786423,12062766179329674019
+943f44a5-8481-9fba-916e-04cf5657dcff,2170095968,5607284735520491063
+446ca64d-abd1-9bfd-c830-692cf4822801,2602445875,9805786663906961482
+6c29f508-0cdd-3f6d-84fa-2df1129b02e1,1060244369,10474977534297862243
+78dbfd6c-fd7a-ac96-3fcd-974abceb2c16,3396440439,13017165241625389013
+890af82e-4577-5173-6977-26558ca3beec,1335458393,2364549200945954517
+0e59f924-d773-7df3-734e-c84634e9af75,1233267653,2772530023786980166
+5448e97a-c8c1-168b-d9e3-72cf30b7cb31,1345663492,4488914226111979034
+9397bc1b-ff36-60d6-c6da-468d9cd95dc7,4246636568,18007723961255275597
+cbf77d4e-3dff-a9d9-e81b-56a7150fbaeb,3212261895,7209692880343864660
+f58a2ed0-c00d-9041-5037-bd2b749d9a60,994950775,7961857615362232801
+e5a9d92e-3c1d-dee2-49a2-8c9ca1887a32,1783566635,1272303159646556716
+8c6022b5-ae0c-9fd1-e628-59d81e972fc0,3956127807,8729322902639481432
+c2adfcb3-3786-f959-f4fb-c3924dfa92f3,2145502979,4063544152685293992
+2ee345d8-c363-3a17-8dd9-8c5263591460,829005300,7793926317164367520
+87b87992-5ac0-0ddc-b1d5-5717545499f6,2110875252,13988427084650940192
+39044a6c-bf44-278c-7e99-369ce5bc747f,1861116576,17012716922469299090
+50ba15f6-8bac-ebfc-f5eb-d7413419aed1,122037351,3062077821478253894
+7fc035af-52b0-d017-3ac1-05d59db8eb9c,2761702518,7002153346494289227
+892bf3aa-c7ee-aa0e-2840-1b6cacc35831,33177136,9302525612377281909
+484d9c8b-56ce-d26f-58f9-110a1201218d,1252738607,13160363589136721685
+231e420c-268c-af14-c4cc-6adcacf20e81,368165226,14015883544944000668
+c23fa1ed-73f3-0cfe-ee42-b4f0a8fb771a,3000415278,836836453212785956
+0e903f09-50ea-b875-8c2c-a9909b277a13,2715859539,4671951445788559516
+05049cad-9f04-9d43-9c94-d55c81e6ad67,2712079183,2934268963446875723
+ac7a09e8-78ee-3fdc-28aa-bba93c5c0d89,871474738,6274447452407491175
+8948c05c-3323-b385-4f14-24926fa0a92e,1343177309,7172407094064130872
+7894a1ae-0603-1f75-774b-2603d3a82311,4105662091,7358711009313577817
+e2b835f2-fc8b-3ddf-b40d-f19f3ed244f9,3257735590,533095090361763317
+62968a02-55ac-80a2-cf18-5ed71ca339dd,1230375490,14918510304719987649
+97206263-b542-8598-d6db-819eeeb95c8d,3524822144,10698482236027513987
+b7db5b91-6ba1-d807-f88c-282ba464481b,2174118209,11733939996415485299
+66661cfc-ff23-3b22-0a93-029cf1df4322,274588829,569349257358022298
+3724a912-ed30-0ca1-b0e2-a28c1712110f,2459326977,10259839700561813767
+0d863646-6155-f1f2-08ec-9947cd5c57b7,2628211657,5865360242981601988
+03de2a32-3ea1-8b00-3fe8-eb8ab5bab59d,2970508834,18111650581545079226
+c1e28328-6bf0-b610-2225-68082b6ccc20,2189188284,10089388477167427121
+c36afebe-265a-cb5e-a9d0-cae621e524cf,1226346516,3167228142797544398
+4aea216c-db9d-7de7-6ae4-9ecffb309407,3658975606,2445070211553336803
+cce4d078-14b6-29c9-5261-23d47dfa674a,3538629909,15662729406623768325
+f13889fb-41ef-584b-0842-0f70828f757d,2998383173,14247939365324961012
+81ff90f4-c935-b75f-10b3-fc16c0ccf856,2455137850,17380538782441134953
+3fb6f265-1f7f-0713-60d6-f35403dc73d8,52091703,17788029271236201502
+52b26739-6486-975e-738c-63811ade9dff,3934636955,10798845156563976697
+e4470c6d-668e-a3c3-b3b6-cd63c03358f3,1686855843,12136061660337466489
+7c120f21-f014-2c8b-084b-b462ab0df19a,2646578608,2410770923555997169
+1b2f3db5-a07e-2d3f-0118-3780faf54749,407807283,18036769964944547374
+d6984d78-64c0-9f90-64b2-ac708edd2881,4097168745,16152754105409740285
+2c1550e6-8507-6b3a-8fda-26d48e01261f,3508429717,18274942469520090367
+93d4bdda-db0e-fec6-9ad7-5e36e0c5d4f5,3328239200,1147596483231328263
+679fc8a6-0b2f-9136-59d4-6d281a551f09,2168706690,8424895808726961370
+20b323fe-6491-9add-216c-61e88c58dea3,1746199511,3568604930427891900
+5b00e411-bbba-3115-5a00-e102fb0ba873,2838697544,10640295071083823225
+3f59815d-8a65-02ed-b028-918662391dbb,1317804098,16171900909353915426
+470daade-7a63-683f-bfe6-c42d7e4c6c6d,2150744555,6238233333064311892
+3482b22b-ea34-8f9c-c95b-b70d26687e6d,3829029495,16986551957722672418
+5e9e77f4-ea9b-0d99-b576-2cb7e1f21945,1577038051,4863811480479985331
+c35f3b1e-9e15-8ea5-cd0b-332fbf5f49a2,1559340027,4273190198657414471
+5deaf885-7bef-d8f7-44f8-33c243989509,2092252622,3450792472444857727
+e089ccdf-aec5-11d0-ed1e-7d781d17e7fa,1911203492,9705087622364316972
+b72bb973-e2bc-0837-f386-11b728343956,2506118537,13525885184544943735
+57773a07-5c01-6a20-7630-60e5ea8798f5,3759589298,2682597712734928773
+0c9763c5-965d-36a7-68cf-1f6162d05d74,1078566846,2364955403401474274
+c2e77ac3-cb96-33be-218e-0a682e992389,3444708150,9133740418435182797
+dda5bcf2-05f5-3d67-3ebc-ce7fe6ab24ff,2209787988,2649875214870512737
+54152079-f6be-f54d-1fbe-07eee5ee18de,601117665,16567891608943158778
+99c511b5-c1c5-1f31-ee63-cdab0a4a01f3,433933737,6138773839903174905
+6943f804-3f6c-5bf0-1805-c7fc09ef44c9,1713165593,7286289755759578328
+1e07ad3d-76a3-32ce-0f5c-d109a91c1632,1984126837,164847147932425904
+8c7f91a9-d427-6f4c-64ce-be313ecfcdd3,2391208042,6945098196289976606
+a6a79c85-fef6-d84a-1d45-ce60400ce11d,2610469392,3787367561902749212
+8aa182db-4d75-ebde-7158-c8283cebc62d,3685469938,11141730800381702615
+956c90c3-252f-553b-bd5c-b8b9e9f2461b,3687143933,2631215329138483719
+08222bc5-848d-ff39-9a34-1938c365ada8,1128933673,1059817549868459248
+30eb2d36-1038-da55-cfa3-572d959af259,3653298078,3311100135986770122
+d69986f2-6cfe-eb3b-5721-59d7a9ae3b4a,186461679,8404757251690278280
+03b8467e-93c6-4cf6-0fb1-e8c46dcb985e,3686361070,5730224504474937931
+167e553c-d028-94af-dc4e-c767690ff953,2345929590,16721008457336287717
+3a9c4601-bdb1-99aa-1629-e630662498a0,359814851,2030069254971091091
+cbeb9188-016d-f92a-437d-bf8fa1f48466,1381237125,5867802136396561524
+8621c1f2-27ff-f064-c571-9ba179689458,1061246664,15617126553828739205
+15b30a4f-a086-76db-40b8-394e3e9f94da,1363199978,15637609879486232729
+ce69cdfb-8c77-7872-6aef-d3a757fd8afc,1544720780,5592377008925662879
+abfccb9d-2662-7d7e-f24a-7e0c668171e5,3377973623,8823797503192668450
+2862471e-54af-2104-c54d-63114dc01c16,2530853157,15372904740988241187
+0c07aef6-9941-d584-1ceb-2d6dfffa039b,284735392,18372984245086646974
+38bd198f-d3cb-b837-7474-2c00bd8aa272,84177576,13719799464184938548
+b6ddf740-2008-0642-280d-8a813f730c7e,2618581975,17932073123870520968
+62579674-14b4-7c0a-3258-f95230ecb11c,505563787,11756551251231003516
+b1bcab17-02e6-9671-74e5-c1f9b0bc1a3e,787241023,4715801637061657641
+ced88434-920d-bd5a-f6a3-1565a3abd23b,3195601989,11786143687888559116
+89c4a6ae-a3e5-e63d-3d68-417879b5d99a,2518359762,4478856923892738176
+8574ab5a-94a1-b1fe-91c7-fae810fffe72,609814466,2440410840118575643
+f7c2a778-6edc-b72f-c59c-09923a21555a,2644908553,12463962731689552765
+0657de39-9488-dc62-1849-80f47a5fe49c,3528941615,9935865256474118327
+968cf51a-843b-a2bb-02d1-f9b15e40a1ee,1714186808,3678258317141679357
+1b7f7f0b-0f02-4bc2-92e7-0964e16fe365,3871275083,8322339177322321790
+e3ecee2c-47d0-3e44-3b11-18804f585779,2718864376,11010537351367261502
+dcbe9517-e4b3-6f4b-31d1-d599f23bdb9b,1689393151,15649690714570603005
+0030f99c-8fb0-d9d2-16d7-283015783fc6,3818420652,7869104150501264163
+e26bd6eb-43f9-b63c-6a3d-59df0fdff55e,3282740977,7566608352561168757
+b1166f66-4044-bba7-7fd8-9043bf641c94,3389959692,3465644774131319401
+06bbd678-8cc8-4eec-917e-b8a6661bd41a,1131536626,881533987672671369
+cb968c33-11ab-0d09-faf9-167a072e29fc,318099964,10623140261735618346
+e1fa3b0b-0d36-97d0-d92c-b93a4f69d46f,756362075,879327522771860853
+c58a3cff-aedb-e63f-4c63-1b7cdcdc798d,143810477,3374094712105681805
+b5c2db66-6110-a831-1d9a-262bfebf2069,2731370298,18179215367186186761
+ecc29746-bb95-3e8d-904a-644ad3e84758,1360073205,14893941645310889323
+fc08b6fd-a251-5328-8399-1089cec4b365,4173254121,14341616459346942911
+9892af77-c6e0-7388-1a2e-583ad0dd949f,913930467,3119080973405534954
+cb24e1d1-d11f-c97e-f18e-e37e57e38fe0,3271868581,7697185223318716753
+e7441f08-397b-1496-6d42-00c2ed78bec7,356924901,18293301199341574151
+bbf852c3-6de0-d33d-a48a-a01d86f57fb0,567620988,3284344093339366311
+0d7a9458-f409-2d52-1e01-fec05405665d,2006641010,7559881192932156204
+3bfbaabb-f016-5082-c4a0-da395e58440a,1211037971,17055841663767649590
+f0a1b1f9-2485-693f-44a2-059909f92355,557235719,17682304790204724087
+01c513b1-4d8d-4737-b9ec-04e52c5c0103,3208734963,12928263857603045986
+3327f474-82a5-8ad7-5fdb-ac827a84d05c,2039327616,9490996056795269371
+b0475092-ca68-5d11-0a62-bf8a902e7968,1561430144,896079643714380659
+37aa6066-36da-42d0-0f07-02cbb1007947,1156199399,1526034362714845880
+98d1b460-1063-149b-6256-6394fe28864c,184145750,6022112650746365020
+995cdbd3-595c-81fa-6d25-8d28aab8ae97,3212085054,14084881848215305056
+c9a16e8c-a2e5-7a12-76d3-634bf2de1780,1459860164,10098811067256126474
+2cca32f4-a914-21fc-1500-67e37d1ddb05,1752703835,16027821933115969100
+542ec7d4-10a6-7318-8038-0eaecd884bbd,3706916806,16124773114186528467
+ed3b001a-8f1b-fe78-127b-a5caa9011e11,633519458,15871598353118993148
+693d86cb-ade2-d755-3336-23946aef6355,2076082304,16419696212225122125
+cc0e4aff-ebbc-4a8a-42be-138bf0ede798,3096933800,2332365051029738469
+8e43d576-0aec-6e09-d3c2-f2616527cc35,2963497011,5243518795792808422
+03e1cc5f-6898-f381-cbb4-9f3a18098a8f,589923320,14225606713139695519
+8b4b45b5-6eb0-e9a7-a3fc-a328d6a48d0c,774224615,12595977419110795218
+4b353d93-57e2-9479-6544-e22e8d972655,3081791942,7535096050661406718
+6b90ca5c-5249-9013-4f2c-005595c94ec1,196800023,2312286721431750742
+e83e530a-8083-0c4c-d244-b7dd6df3873f,3185321723,533237709054613839
+073036a9-aebd-22fc-5e09-f85969863680,1362066334,21200969496898526
+d3b6526f-8818-5568-ff41-1e038fbd8301,2939081666,8506368944107180184
+73b74de4-c261-673c-3b1a-60fbc4d48a0f,3787407216,8672004273641039685
+8abd3921-7ce5-381e-e3a7-0ed7473a194a,2701232941,6254569803916838153
+446f6872-7073-b6f4-b0fc-f1617bf00dbd,1283033298,13374776606319531811
+7d3fa17b-329d-e3ce-03a3-4ff67d4fe283,3583874494,3031568919443045713
+82546d5a-2bf9-1a95-2c53-62b8955a634f,3965830129,9369727435060217969
+47797d5d-8817-8065-aa6c-11cd9b994bc6,1514744105,10184754378626102541
+e9f36701-d46e-b9f8-817b-20e1074172d6,3484795941,6127410234697518292
+09306dad-c0b6-982e-9221-7884245b0b51,2112512192,15507259968918244341
+150871ca-d2fc-1d4b-d436-9077d69c968a,770671208,3746134657603075764
+eb3e75fc-1d4e-d098-3a30-8849d5abe49c,3284395913,9267069102869832148
+42618cf4-e935-008e-a3c1-7a8a1fdd8ac6,3286154869,14260734876324612149
+a3dc0d28-b336-05d3-2295-417dfa06ba7c,3898227092,7853497403041821010
+fac3fc87-f08a-8d77-a828-c77353ad06ae,869915345,17909734880536964392
+2333f461-a379-dc5e-17c6-16cccbcbcb46,2300708365,2890641064632398270
+1545c4b1-48e9-fec1-af1c-dd760f465ce7,2959382564,9162346546407022330
+4b2b9d40-731a-1b7c-c11d-370a4a3b8164,3198854921,2573351728383645755
+95c246ca-166c-09de-d74d-302726456e89,2616191740,5148524542990622388
+edc1b164-f887-38d8-77f4-d030f14db3f2,4124644987,11158651453004456515
+cd62dfb0-f218-186a-c15c-c3c511d1d870,1540308447,7163538828755285262
+93835d87-1b6d-67b6-3566-e5e20c66280d,1536377536,8610484137571998566
+f857c095-8e19-e266-2159-551601a2b9f6,607579719,14298823254402738675
+5a9b9571-e47e-08e8-4bd2-ef66356b50da,3448419787,6557785524087197771
+a9693e74-ecff-156a-193c-a296b1b47907,3513311635,2535882700942166529
+351d1327-0e78-f8da-e3be-602906ed2703,286555024,13680077707223109973
+cd6da520-bd0f-b1d9-9ecb-085ca3ba4371,4283473329,12988149420180218795
+7d97d545-1c9d-d179-80f2-0bf8ac391eab,2150495563,1390374327189138740
+6373f9d4-e7f1-21fc-dc80-248de6367efb,2705212462,6710354527330111234
+38f8911e-97b0-76e8-547e-e875bbd40fb1,2521948861,5255949565663797547
+5cc0fc3e-001d-e6d5-456a-3fdc7f804a37,68524928,2518926367514899016
+d4c271a8-918f-ae76-f57b-16d4a9041da1,1978089217,11251867393904115918
+168a5c20-6e01-ec18-a8b9-8e2b9f634226,1655963234,14152361070703787446
+cb18a6a4-ec60-bdf4-018b-083285b51a06,1311491290,13152021818773279275
+104e7b37-70eb-98c8-c755-4a3644727ae8,3433736533,8621192647120575111
+76f4910e-a396-0ea1-bcd8-3a3dd6583ae4,3842036351,618096447911288725
+fa42c94b-49e6-86d9-254d-b6b941bb5f77,2620693552,14867455072678711719
+56562f6e-fc04-dcb5-44ee-29618121af42,1059785051,17608788288997997914
+bb4c814f-2e08-3f77-cbfc-f3f0e25c43c0,3638322377,1741993741300946928
+f5a0a9fc-2a62-c61d-b703-5c8aed22dc37,3189775734,16691935376694959328
+228b1b48-9a00-edc1-e206-018523edea6c,2263969537,15359951165000975323
+d7ac88bf-f23b-d075-c302-79e315188476,477394617,12828765913346729670
+2de8d931-cfc1-f4af-0a65-644be4758a4e,1733704331,3544521269006261066
+f9ca7292-96e4-294a-9d4d-f8c126fa3a25,370029464,11516171347847419824
+121fb680-b9c6-2ba4-dd14-29030d4a2ece,2319826892,4913438167717646869
+bb6682bd-1a62-14be-83a3-b624feead544,722566748,6621415648483782234
+75f6fbfb-a288-a759-7d19-e4eb3204d92e,2309449242,7121691734302786066
+b54833ca-d0ff-b9af-fb7c-ccafa6396525,1298823222,2815129388545212757
+09a306d1-bb35-f5d2-27cd-848e26ddfe96,1652428461,16175498748963947468
+9f5df8e9-a683-ac85-0539-50d0d29873df,2149624565,13501025285278978933
+1df3ddc4-22f3-46f0-6348-592a94d77b80,3820848332,4714250971946147267
+765bae11-536d-16bc-3821-28f710951311,1909161936,3041806792301327228
+f5f716bc-7bd2-0e91-51ae-d3d54e2ae826,4080383888,6618168977447485329
+d0b08d23-d0f6-ff04-1ccf-ac1f692ef4da,1438895495,12284734563829045193
+5a543525-ed63-a76d-4c2a-adc0ad0e2373,862632585,17592496484339585736
+4e7de2a0-a03c-02dc-4e6f-5c2026dd8a9d,1139173269,15357908454716859121
+3b30886c-0035-e6b5-3307-b282ef2933df,2876055354,13600976164739536673
+3ebeb8e8-1338-5db3-6629-1dae49a93565,4237459739,4153132042104323841
+e3b7771b-eabe-a2da-c691-d7b1412680a4,2926742640,5293954607306049284
+8db11589-dd1e-c448-8f22-969eb153da9c,961536972,14461944583134503449
+d126c7f2-8a56-300f-bc01-f25702521d2a,2432487464,10091541289452881371
+714b2320-756e-7399-b16e-06290eb73cb3,739616341,8942595113336117188
+b4028f3f-674f-48c0-c56c-0577434b2a8e,1071791455,10014835737326634102
+3da72a34-fb19-5495-bbc3-1d3bdcf5f6c1,2081299337,14488850934591515323
+69a2b4cf-c8b1-2299-7825-08bad7202cd3,3687363551,16516542067090850848
+cda5d053-5aaf-c38e-5474-a59e16a006d2,1268432725,12453324099306444328
+09a390fe-1aa7-f07d-02f5-9bee69323b90,4208014859,2274190594692392253
+14c4c70f-8ead-1e99-50f6-a31d9d8c3026,1964747143,1042552099045817521
+3c58b664-4e18-6e61-797a-648498030fff,2750332333,10994322884073368713
+4ecf3203-8486-6ac4-11fd-fdded5877fb1,1542000552,11468901156823717578
+6091d644-6aae-03c9-c5c0-4dc5c23fb7b7,2217227251,6956380275257245671
+29057912-92d7-db09-0142-0e5feae98447,601841200,18105904219546317849
+50c515d2-4ad1-20c5-7b61-2599540e15de,3008864601,9677395037010840432
+9c3cc078-6317-42b2-65fa-2dd3562a2173,2269320619,681889689202787813
+31120709-f6c4-95a8-c836-67523f8c5b4f,1730027636,6043522198248058741
+15f7e91b-65f3-46bc-440e-9244ec516f45,287033987,17845498107192034110
+9b3a76c3-1bf1-2348-5f31-2354b143a256,1308928809,11498466242944993304
+78b56424-ad76-4f5a-8c31-f5c9c5e5ddff,2710865411,2156172333733616307
+19f93999-a7c4-3366-6765-e0742bae318c,4014596033,16917440066989389938
+c7b4d95b-7c3a-3595-3de9-d3d999bb6836,3786898540,18166336232300423106
+2379b738-6031-7629-efb4-5d7e2d1e65a4,1456852858,4115451529995356739
+dfb4eef9-3b9a-4c4a-db5c-543301d7de4c,1094093277,4318282496774056636
+1a595dfa-cfad-6e88-e7d6-e290d84474bb,638198858,17966434061275830865
+ae7981d4-e264-3ffb-c10a-25a9e50885cd,4265588262,15942908000488672750
+4bfc1368-73bf-2fb2-d88a-361723f86ce7,155611525,10806591469626005671
+deaf08d4-6f67-3c71-bde8-fba4455efc26,2686318913,7490607803732194365
+87b17bd1-ff73-1d46-12a5-a645d4c8d04d,3180308124,2602824965440101794
+71481b10-2fc9-689e-04ce-bbf7ec93906a,1052682070,16709991466085998107
+60e1d18c-a3e8-b3d7-bd2d-fdd5f81d8883,1150902605,13618982571499410361
+816b96ab-2fc6-b45d-153e-8abe32e28f08,1195285837,853406743355836633
+9b3c9108-f640-1196-1e9c-92972cd5eced,1278675366,5620528494183792205
+fed208d6-19ea-a90c-aae2-fa47e474353d,1495442691,9255519470769260500
+98853131-da0d-cd1d-4bdf-be971d801a74,74183438,11377743446109029373
+4cca17c1-bdda-28aa-ace3-bb2b08833d02,1454829487,1392685961998392873
+be71dec9-67b8-9823-6df7-eb98ea3ef5ca,3733152696,7521432207324828559
+2b87e546-c68a-a275-9e92-9ec89e58d574,3604153020,461323078924911529
+52d45abf-d9cc-f2f3-8dc9-65d9ad9089ae,3916085749,6883844689836432732
+99508153-aa27-6337-6d64-731333aed508,3947562702,6469140715730315963
+c484019b-3d05-04aa-3bc2-71e604ec965a,3178640107,10702642509825365281
+6ae2c8bd-c9bd-5d1f-751c-4505b0a77e2b,529251577,14085022552685880375
+01e69a9f-68be-445c-6d3f-2a0cf0d66c8c,742248440,9127573127010804215
+a50da7c0-c4d2-683f-27b3-4582e1fe301c,1186522182,3543470882348657111
+ae2ea8fa-5717-626d-38f0-171dc3bc121b,1117543521,3345875589153472492
+4ab9d72d-c5db-c5d7-5748-d79a6709e073,3308926827,15399204517400291674
+abfa0c92-410f-c11c-5642-0f644753279c,730327246,9144930745999012080
+363d814d-ba0f-f890-983d-c481100ca102,3836258517,186419896891097211
+6b081b20-8ab2-fe8a-6f4b-671cd2a8ff63,2979419538,15950389359992905124
+64b2e5b9-6144-c27d-33f7-9dde7f9e0e3a,3318036087,5000207671819106640
+4f4efca9-fb51-c2a9-76a7-36a00af14c51,2568508215,14504262785415831195
+9443a424-e885-d984-7418-02b62ac065aa,2474135533,17790420365520276676
+e7d07e09-14f8-63b9-0049-0e0ca11c8d7b,26971980,11207637957888094028
+c310d46a-871f-3cba-1f6c-6c4e1083a8e1,3877107121,7693485564492881751
+43424f84-ec39-05e8-28c0-26ae9979080e,409539406,2925255804095763766
+fbe2eb49-46e3-8e07-7b0e-1e535c6a9c2e,3288245533,15552093229495250694
+05d36c6f-f66a-444b-e9e4-a9b57e1d7d93,3351218362,9714556341567219002
+6963d20a-fc08-cfc5-2984-439d98b0126c,2211116865,5161638853591516903
+1b643669-825c-24ad-d3ca-d4bf6242ba7d,3482739151,6783165482655808087
+71a5e880-0128-122c-ca79-9a0c40dc80ed,680439956,303787748697130144
+f8d09953-627a-2f70-89b9-b24b29770f8b,2903513197,458697941541932057
+5185fccb-b802-2f45-8a7c-fe55de6074b3,4278696382,9144998128181770918
+b8f2f286-7540-8465-cf0c-b1c531a70be8,4130805654,13776914709942194177
+c1247130-648b-166a-3996-d48082c221e5,3296492551,7908146336890983813
+99bfd03a-ef6b-92b4-c9f8-ef30aed5e2a8,3585051459,6664599497067069254
+ceb3b8c4-8fe8-e1b4-958b-24d21cbee90f,128591566,17917815321889753767
+dbcc3365-9cc0-783c-b04b-b49cfaceda72,2909804771,10517776156593212767
+bc0167e3-396f-5527-32a1-0e1f170876c0,622652103,6437678549761206565
+d0e82da1-b7e9-5a21-ad6b-52f55bcf9148,3378805539,1987948675362688225
+80ed4c98-1057-9a90-463b-1eb446dd2e17,601787651,3607118194120157850
+f3ee4660-2dd7-4c2e-93eb-c4b42aeee83a,535611960,8428291005020055866
+57d779d7-b997-eb86-37c5-7f68652d32b0,2648304394,16916232110046148241
+1cd5c65f-bf21-382d-4876-f2e9987a5085,3011858983,13557897404404287628
+cf3464b8-62c9-fabb-cc7f-822426fb97eb,1995433609,18273306892436941830
+77790552-70b3-e7a5-31b8-3ac4a1e2dded,1215996142,13674621036142296917
+36f75a34-eb56-8ce7-e6f6-7ee0c5c81308,3814282122,5582028978144961914
+5ca0adf4-3451-bc83-0c1d-bcf58d588b31,1237351543,17769577841417874060
+016f0980-8c88-5338-c337-149f2e57b33b,299246352,10242248054553110122
+d1736c9a-7dce-f90a-26ee-08ff6e66fb38,1464702829,13514719300309266094
+62018cd6-af03-5e3a-b05a-3a0604a992ad,3657518174,18137371416674620985
+798a762d-45cf-6056-a439-76ed20325017,1817777936,18428262568705880493
+6f1f0b97-4caa-1acc-fc42-d8abadb404ce,927321466,12470870481448945465
+5505d8cd-7766-e79b-a575-29b5f178e3c0,1336938378,4468418091834089973
+3c01f94e-fb9d-a7b6-6021-352056450b9d,759177091,3372777262865591740
+97d230db-ca15-7642-323e-4790f2d35075,3949161818,3845413908490662891
+d18ee55a-9fe0-4fa9-5bbf-6fa1d507b32a,2947956934,1736719256285460855
+acd92acb-d60f-2982-5631-643a1b3e1f49,2404543826,5805081898249626206
+7e731e9e-1fdb-c31a-88d2-861aa4aa61a8,4267457206,12499938074664095058
+2dd7468b-cd9a-1640-9901-ab955f20e0ac,3018921962,18400062096299689051
+f4f120ca-c398-da56-bc21-5b3770042bda,4031487470,6177916135405610041
+5262277d-1ae5-97d7-5896-4e7b6c9d962c,778192459,9079766644740173590
+e2322ac4-97a7-d721-426a-d7be87a81bc2,3269594116,6406428108442305531
+3a0bce6b-05c4-0299-74ba-d0fce682d12e,3788255836,16249462863945830268
+d0a0584b-fcf4-01f2-ac5b-6b7eaf2b0bca,142968860,1676316846320366017
+c4025300-1f2d-4197-78b3-503e3a7041e2,3887224510,11494495857725589682
+755a17b6-fe45-d316-551d-0341abffd91a,3637999084,5438606491546075758
+4dd24543-8e9c-e557-9b82-5989a7db2ab5,896831392,18160374731944563983
+4fea8a7a-4943-4efb-3701-d7a824e48f8e,3394359736,15607138198424002694
+a3a3aa41-8e3c-6887-779c-c4c74bc105a0,1943119508,4330255978759839565
+3a723062-4688-685e-f3ca-54261f9962b6,1801606350,8394181781585190798
+04ebc2bd-528e-f583-aba3-2ae314439a53,1378862786,5703853431122192876
+6f6275fe-026f-b1c3-e452-814c21c755f9,2694867731,16712123325213351864
+cfc5e72d-4d69-5b3f-8241-3f6fc7828e3d,2644316672,7938310222469682113
+f946f7d3-e2ff-88a4-9a96-5c69bea378c9,312528208,5574316147440046224
+998b8b29-ce85-17f8-2cd1-681bd2c2b892,411144774,5814757351094320889
+3a14952a-d0f6-c2bc-3004-39025e0c9d4c,2822983815,13762909284141096164
+fdbae019-d409-90b3-79a4-d31b0ac7135b,4288076347,11475696989824098740
+9ac6497a-8d2c-41ef-c138-5dc6dee5649f,3931087632,14788080409050646373
+2d4b3315-b012-74d5-1e58-83c906e23e67,1014213877,13960878166768071961
+ef44c47b-8069-179e-fb9e-74a66d9daae1,3959051370,7581447971916136317
+efbf5784-56be-7900-79ef-6a87b3c1365a,2534462920,6143390094804235073
+a1f4272c-ea43-eadd-efca-6a556e62241a,1896568635,17662263108073239945
+bc0097dd-c308-0302-47ad-671eaebd6cfb,2085120162,16013493231666335466
+c2dbce46-ddae-97d0-6d73-693a3c8cd518,2958982299,12623822296624458069
+08675a7a-c196-7d73-0acf-68acd90576c7,3757749681,5227630183423743874
+589ed89e-659b-93b1-9fda-501a0376a337,4033743299,14614731926197078904
+e03d5d4a-5b3e-a60e-cb8b-269e67f04c43,2662786895,18399911691212156204
+cdb23277-c2cd-d2e6-7fad-7572856483e5,2111543016,4343836780242840717
+efce6e2a-37d1-1ea5-9432-36f37a46bc9a,2842389588,11362641090207567400
+cf500798-737c-db8a-dc9a-060e4035599e,1652516060,216361339522835934
+ca7c373d-91bb-b497-5a9c-8517beecdc38,2117269510,5687524980097492173
+979bba97-2b43-e917-8e3c-ecc0425b980b,465178107,14920618133218630798
+568de9af-898a-c950-9596-4dce802aa9af,1511461176,1379339729731688390
+e699aac0-a906-0c0a-fa35-75e02cc64914,3278774187,747048911627166577
+98f2ba66-253f-e3fe-9409-783969af6e62,2793521053,16749380043201981540
+f766ec7c-7c19-335f-6951-caf2ded94970,1959713151,3432074453373824207
+67f79e39-639c-dc7d-f31e-00b2ab2f6d63,1270720642,4006915844010426758
+c9532f42-ca14-eb15-c4b7-323b4dfd0772,402335189,551359446220560813
+94cf962f-f543-1a97-df62-dc72c657b4c9,939232860,9052981512373522878
+57db92fc-721b-1ba0-850b-57359ce10fc2,3129256377,4330291684906722666
+0acecf2c-e7ee-8985-77b0-d3f2684b574c,2387886646,2882097126553675282
+fc5b3d8c-cbbd-d964-cd71-c2e371ab5d14,3580808614,12254344110742670866
+3c5b18cc-ed13-17c1-1d88-e2a7dbf1809d,1190583764,13840051589410777210
+b2bf94f0-d6c8-3a3c-983c-29841a4b68fa,3623345132,881702217867633285
+3000491d-2d07-f12b-8271-c43747d9b4d9,2699329932,17280251084006200337
+1f27aa8d-3d06-f914-7b7a-37fd596b509f,2252980015,13090886484305394390
+3c09d0c1-3271-1735-0a5a-17b293064317,2717590389,14942454436406508095
+80e84445-51cd-ceeb-5141-dc097cf86a6e,871188618,3241652146316685567
+466d47e6-114f-255c-8f23-c35e810846f8,2531865584,10606870641160871720
+a2c9a474-02e1-bd5f-3dc0-415813b49c4c,3175241163,16455693358691169554
+1ffb7a8c-9323-9c79-0010-2794d9d36a87,2143531351,458615783201516344
+688bbcec-f28a-e3f7-dce7-84d8079091f6,1121140265,11186067882284766571
+fb75e6ee-a5d1-3c07-1c7a-1544488bbb2a,4068175304,18061071979437895357
+5cf3b7f1-9dd0-b600-747a-a96c6eae83f9,3743799902,10205361642208123926
+6314decb-0f90-09ce-24ed-af89a37a50b2,2762622311,2860558838809823930
+46870543-8e31-341c-1cab-ea1b9ee2df50,2554384414,15061648433918900910
+24e188a2-f412-4faa-d192-e44ee3177464,307912295,6331597267919995400
+8ff330e1-d87e-5260-d98e-a099c3d8fae1,1870806858,13924568541313165042
+0daaf247-e76c-79cd-aca9-90c42a07e61c,3507312654,471626499195201390
+f449d9a3-aa84-9900-7063-9007349d3cf5,4276958903,8515529245816632461
+4d40d6a8-91e1-02de-87b7-e14fea1ca05a,3239015221,2917002643493996286
+23f40f13-d59b-4cd2-aef1-743254e49463,1622101147,8725709636611393251
+cb521694-36c2-e8e4-e330-e5cfc2e8d5fc,4045184916,1986042944577487175
+aaab2152-bd13-84d1-53fe-b7a96a6708b6,2392262218,10670395695416721441
+f87ce41b-8998-87fc-a7bb-94ebe218e638,3086928588,8495031038163351899
+5c2325c0-f5e7-2a54-23e8-2bfe9bf0c405,2731017588,5950911794858474086
+eaed51ba-ba14-c86f-087e-9bb28c003c80,654176714,8982304186037372195
+2d01dafc-65e8-bf5f-81f1-6dfd3e683df1,534465395,18401417013399882007
+bf76d6f3-dd7f-81c7-b9ed-fdb095251a65,2263879776,11500358724146550407
+cb89e5d5-dd24-21ca-3085-3de29635f435,3291127516,13137690709636198359
+cd04d97a-a72a-de5a-c002-7577cea47722,1172824044,2582806168414089287
+5ddf5bb2-8a11-bf2e-3b82-d35fba383231,3874813931,8469736393583704126
+a2ddef08-ecf8-08cf-9d22-9781db9128a8,469147075,2905156962166490194
+65c07757-cc4e-1771-1797-adad6648b25f,255600570,17148141353227647635
+da6b4976-0473-b842-efa5-ebeb084be940,1892699588,6736302774600536351
+fb7cb974-5d84-5c3c-fab6-d036afbdc687,1176460656,6632400637218408075
+6ab9c7cf-a6bc-3636-50a3-81ed7e2eba6a,148342011,11767944779090076768
+b0f6f9d2-a00e-86cd-43b0-253af370930c,2919932172,17694686725485694687
+070f1e25-c4ec-f3d8-71a0-87f7088a235b,848595672,13987535212211743404
+5258e396-6fd0-0cb8-8a0d-4b97bf94e94c,488604788,14542376012603091973
+35415db3-07dd-94f8-b28e-d467c6ca291a,2957446469,3670844216142159158
+548bdd61-5793-087c-be8e-5741cc02db88,717234772,14435710043436163900
+8ccb6467-d621-5bbd-e822-dbaf08fff76e,2045568546,17361081759820893785
+a118ef21-ef23-c1cc-2d50-d446bd28641b,2853362257,5616858519961728002
+eebf2781-b37d-f4ad-9e86-eb3ad9c460df,4092502453,13933470405015442867
+9a9ae8c3-113f-6a43-9d2a-7a82069d8108,2573922670,13631090127380710036
+5e812b60-0f04-b784-ee47-0fa18f6e30c9,434117287,12434031942368727522
+d6b3ff6f-f7b2-422e-db6e-8c38fc7da3e1,25631791,12275315165836482952
+e3970122-03de-bff3-c567-e8f303e7f539,3858056875,7720956277888672437
+07469d5e-fedc-65ff-8087-5fe5ac52189e,4023836364,16319199245687854476
+de2a9bb3-2c24-55d0-14d8-59c341239c4b,2807709801,6435359667111309724
+8e8b4593-fda6-f37f-bad3-b0a3db12f153,869442377,7794322821356279236
+bda81c10-bc22-575e-ca9d-e6d6c9898ced,3102530644,14374187390496827618
+7ae2bf38-0cc0-0b48-0157-0368048ece49,104692902,6053082845200363598
+c99c02c9-93af-4e01-ae66-3f75af9f6549,1430366373,2893527839987546371
+b2e9a31f-943c-905b-6cdd-2165c72600f8,4248447993,7984304534239028747
+e96e7808-118c-c55f-80d5-130d8092e8f2,1371979555,10798412304183258806
+8489e46a-864d-900d-874d-3541d78e416b,3945885294,1290623339638607616
+e23d5ac6-2661-eb8b-0aee-d36240350ccf,3777332662,17401875391637493149
+4fba7a18-b35e-6224-bafb-ce0d9c989a76,1250283118,3475956327753211960
+860e2ab6-f0fc-15fb-1f7c-4efbd6cdce52,2862801707,17920488715003056953
+c93a8d1f-6f2f-210f-56a0-fe0694361dd5,3296262233,14138758291619958199
+86476eb7-944d-43b0-62ab-4bc6042566a9,2934372639,7400262306636183172
+fd2fbc65-4efc-c7de-8415-10e919381d12,2283657585,10761869150218457931
+be80b2b0-5233-3136-21e8-b75ceffe826d,673136517,3535871457812370068
+61b4cc51-52a6-a697-676d-2f654496ed97,2279269323,12857984258998015134
+522ea57f-cf48-ad9e-438c-f0d0f99f5f4e,4229543018,15924176360887831372
+ce2add3e-6073-c717-c997-4d43ffd995cf,166041037,9439999429434039098
+60e847e6-335d-ec68-fce3-12e8eb5e454d,925657250,10908839705897672477
+810fff15-c2ac-5aa5-438b-d19e314641ed,3712216532,16925087935657582878
+c8831959-ffde-5c8e-7e29-93b27011413a,1343803748,11189530857019335282
+91997b40-da9d-1c95-73b6-c0f9e2dd56a5,1923269897,10568712876264048821
+d1eba4dd-c7e7-cb06-6fde-1cc1ae10a88f,4022599658,100319751651131500
+0a287c83-f150-f776-d427-4213db199dc6,3320709169,17037412229050297459
+1b1e6b07-696b-83d2-1ac1-557ea371afde,3255858434,7583686766068917258
+9de71647-06a1-3ed4-7722-ac7d0870a769,1447780734,16901923318576450323
+96b7162d-fc79-cdcd-fe13-c3cca04956a9,2693964530,12514427084395861415
+e6b05be1-d765-a04d-5713-093709d52fe9,1347995823,3560323012052687601
+f7aaef70-ee2f-ca79-739a-1a39b4eb4c31,494391002,13425160195491053482
+bbccdbb1-18a7-fed3-0878-0a31b03c56ee,3170628633,2302285529167305065
+c4951da4-0eff-fa9e-5a40-a55300529537,910749605,15547739020799095926
+6faa4df6-b722-ade5-93eb-d57f0dc8db2c,3760141102,1210150048174158200
+8092e3e0-0d5b-e909-e89f-c0687ee87b5d,1990935534,10989311682743432700
+c3ffc6dd-14dc-ba7f-bf56-1ed5a60a0cff,2506790364,11416131071328533274
+5a514fee-baec-63ab-0b8c-b57666633ce7,3889215404,3287494103912343056
+5ef3f3d5-fa6d-99f0-8f08-deee6de39c75,842160254,17416952269651119343
+d1684f64-2b1a-2820-b1c2-33b67f99a017,18404061,12584348860292483144
+97315e01-1fef-02a3-0b0c-821e63da893f,2897193514,16972224832410077433
+38137f2c-5708-2da7-3f8a-dc608750ae06,3090170560,17523257454160410812
+8961fb06-341d-fb20-7bd7-70a1d2f40b01,3509087581,15524208230004222320
+86b77c14-794e-20bf-f704-a33d7700283c,2176911680,5023182776641886470
+2f5b7d1f-923c-26f2-e248-f9a9ade085ce,2041165911,4071095516132605271
+b35f2fb7-724f-ebf2-2957-f182a1da8a36,1911340884,17447855737870640767
+5dbb5364-0d8c-7af7-de41-d40cd38ead78,3020453948,6229807342012403007
+fde7248c-2663-627d-7f8c-40a59d3fdaa3,1064993403,14517453439600131012
+5feb06af-7cac-1215-98fb-c893599ac350,165138544,8830956828683450232
+fad05e9c-9e7d-2274-6ecd-c8684f2bd791,3931826710,4303438346834940001
+5ffdb67d-e648-7173-0ec2-f325604f9c4f,3962243254,113855674977196989
+c615f48a-844d-e22b-bcc0-58ed5127fdab,3961941208,7156969456068202849
+bdcf318b-e1be-6393-1b48-b0c90ca0fc44,4010117277,11267052126209428427
+7081200d-08c0-5662-f1ae-7faad639f7f0,3187173135,15647953171690348158
+228f026e-2fd9-5ca3-b050-56cf52de6442,387297270,120543677455154640
+15ca4591-eb47-165a-801e-a4e19ff181f0,3820368865,8541694262190593466
+a53759e7-ad42-c528-b4c8-2c42c4239105,2967350249,7794549056995785594
+4e80a208-1e94-25a6-2124-8482af89e26a,2339254742,2848133127867983318
+f4d2d222-9d32-e8fb-40f3-2079160c34f1,1360026821,12123001471259970979
+0559383a-26de-29d6-5673-52d6502f8879,3393870340,4366720490028181033
+6abc3ea7-0975-6810-2478-de71a3897f44,41778869,5780542659536354379
+a66f8910-a5d7-911d-35b7-5eec76849a11,2948208296,2882783751266387692
+98a42f33-5582-a70a-2db6-4c36ead827b3,2633919002,2330258457262434241
+ced77d36-0991-5ff5-2f84-0b0962bd1780,4063759079,16222342638676469201
+944753f6-3dae-32ed-5a54-23f83e070944,340674514,4221931079891570662
+a48f56b6-7a18-2eb5-3b12-746b5633c2e0,91018338,8471933993694357103
+81cd2963-ab23-c81a-0f8c-755cd1489b8d,535857208,13806970376529280973
+fdcb2354-750f-06d5-25e2-e02f5d02793f,1684486430,2700918764900031728
+cd4bbb35-ab97-c93f-62a9-c980b67212fd,3655006084,16778195830058256146
+54b50832-c73e-1321-87a9-c1811574253a,2645714987,3781147453199754041
+149f6345-7682-e983-631b-176a095c4c95,3869657603,12311917008849936177
+c02349cc-df00-8a58-f081-1abde63358b9,680026013,13078517626141958963
+dea2263b-e8f3-e1e3-f7d5-6df9dfb2a882,2488923461,6804888479543851441
+1174d09a-54a4-5cc0-2883-ec5a67d0e995,2285769898,8923487732390962860
+789c36e4-6510-f183-0081-f5747373011b,1130087163,9078712937769087064
+ccf3e928-8fce-c0df-1a77-a91edc56d3aa,1710267744,9732668289941524784
+990ea84c-70fb-c622-7951-a36ef19f6d8a,1449269895,4448860048816774033
+8b742bdd-1cc5-6dec-b975-fcdd463e1262,1308264385,2416450092534236178
+155007db-7cf7-40fe-4ce8-fcc1a49587f1,1294865889,372794997026653270
+5ffb08d2-5d6d-0fda-d51a-f1ff6e26bd93,1577508225,736422540465895332
+33ec4078-a814-4e5d-4e96-214394420f71,1187657964,14103408363307213382
+f7afbd76-d761-e849-ecc2-891024bb8ad7,3095737073,13801861479393079957
+95ca31af-4a64-d109-d822-c55bbd629bf5,2661824494,17923610208564723028
+77d93694-54d5-7456-f647-c2ae5ddbc05e,3981818968,8490539143574286759
+6bc1cded-153d-b918-ed89-710466609b22,2514115801,154268399407269488
+380075e6-18df-ecc7-2be2-0d9ec9155d3e,4282658809,8879332170429732345
+73acc092-0ab4-ba49-ccd7-a05606738cca,2291942217,14510585393355447245
+62830073-b8af-f677-2f38-b09e420bf27d,2665488040,6969495127838929905
+5e9a095d-c395-055e-90a3-2aa6e9a94807,650790633,8211910424406036068
+a3c6e24a-a791-f12d-b91f-8ea2b7a0b27b,4046167691,3319688688314498969
+f5ad1986-974f-f9ca-b4e3-4fba0d83b015,9729491,1291984907755679309
+bc3e1778-200d-de4a-4282-cb1e226306bd,3979176551,14665342595003835296
+d02c5ac8-e09e-6b5d-a297-bc9574af6fa4,2199328997,1362563442872416180
+e40d8dd7-7e0c-1622-b235-94f12602cb79,371839623,4127679801390116560
+87947db7-13d9-bd0b-0a3e-306b4bb8fdd0,1173446818,11845906803187593119
+c96d741e-4494-5097-7439-80fcda0b3d2e,1682965984,4110750354866114907
+b31a552f-b6f9-d2e0-afd3-3258bd19670d,2036869624,13019986692923006210
+f882af2e-1331-0678-c5e5-38c2054d1902,4052006729,2827800669978131463
+9869a2ae-d0da-186c-67b7-d3ab342f570c,146939801,5232414945730356035
+12613e42-1873-de5a-76de-30e287b3050d,2786541085,7875905438739696094
+a2ea420d-5458-5afe-0b55-50179f720b82,4084788492,10095314834468843864
+da69670a-08e3-1847-3bfd-cd671d79577b,3047190052,14195256521700258435
+2a118d03-7f2b-4acb-12cc-377f8b4f0e8a,278914209,6370073866313723279
+f8f63816-7bba-372d-ef68-c53d6c85aad4,2106262433,12399232745757745447
+a7cdbb43-ba14-da4a-c501-b1c31af293cd,346376478,8179327592065296604
+8c5d002c-ec39-70cb-e257-001c76e0bb01,3242453079,10005277072794651447
+0735bea4-148f-af46-5577-aa33b6618249,2721763355,15019066103622511775
+00ef7396-157b-b7c4-84c2-c9a0941c58e0,2047640883,10259418740075408858
+2c235559-5a82-a409-f79b-0580341b1788,4183756724,13536017165210524619
+3521d9a8-edc7-f616-ea77-2cd56587f546,3917992715,167527784278064765
+e6bd0263-72e4-c33e-d9fd-1ee20f8663a3,133823873,5328803666603407451
+0474134f-ac4c-6f61-e6fa-a01d5d06034d,3184759706,6435329161985334800
+0567cb44-0491-c5de-b6c4-c5d6e204291b,1758449267,1022182730255809171
+5fc47db7-66f0-3729-5d8b-f727ab5b160d,452141099,15751570547413813744
+3ccf7a44-bc97-21ef-581b-40a2749f22f0,1677064160,5908157354753002097
+4f79acce-3f63-462f-2ac7-464c193b45c1,2195280514,4114209425449783184
+fba67119-290a-3253-13f8-2ed5d944bb84,2946754719,16888524281575306227
+48fc9797-ee9f-94bf-b9ed-ff67256c5d2a,3719047838,16408887131537165031
+93c395cb-1138-c7ad-69fe-caba0bb07998,2049019630,5451417703795268059
+ae1b6631-00d8-3683-c52e-20a64f764f61,1571099118,10999399991338068715
+71587628-da2a-e477-6fdc-cd9209ccd647,533552523,842741979162901831
+4b2f6a7a-c89d-ab09-b127-b9f893cbc23a,2152582730,17051991541658356097
+731fab92-28cd-b70a-bfbc-21be2ae54c50,1956885468,8515062294600045871
+0912d730-324f-6d6e-c2a5-dfed68ac1373,975926072,7977028250398014654
+272ea3ed-2835-790e-ac2f-55e5b45c33b2,782369520,11904666528412673137
+7105cceb-d944-853e-4c7a-ab0261968f64,1362727816,16427368677255169394
+0625f448-2d36-bdc4-b484-5849d9b12707,1400674346,4532541472040238018
+202c0477-6d47-cd4a-a4bd-caf3598a5bf7,261763775,36683826731634763
+4005d722-e2e5-bfab-6211-d8c64051db0d,95169391,9866542356218511737
+d21dbb1b-6ecf-6519-7da0-98c6690e979a,131748994,6722009797280255175
+8ee004ad-a249-dbb1-2876-670ef05fdb1e,1128651334,16510029971921616596
+cc1a5fe8-74d8-32c5-20a6-4681ece29753,275193731,7073755342773121116
+ac8eb313-2786-7e90-5a4a-c27614a08ce3,3918279171,2438944476581199270
+fc8664bc-048a-4f4a-bb58-19591adfd130,2739098239,14272524649237206974
+250b82f3-ed44-ec24-807d-f9d1ab3d566c,722448781,201390890852764084
+f2031fa7-bcfb-2100-1c72-6da0dbd95244,1934048223,17669202088365576419
+3d2746c7-7da4-0900-ec72-dabc5d58a66a,2888079637,12181899689857187088
+929e1e93-ec06-cbeb-0cf0-be8187aebba4,1262754154,79133895860755450
+63c53ed8-d6af-ae57-8f5a-f3aa3536e89f,3083663620,18090158499540542791
+68761914-a1d2-ca08-9b23-922299361b37,302092985,914373396568663600
+1758d61e-25d7-b6e8-210d-ace9c656ff41,210148539,539986895810767306
+ed6259d3-b03f-963c-9e2e-5310650740e5,2579007772,15709190636441866429
+b381bf35-c212-712e-f105-cbeff2df897d,4059295385,12573234279363195650
+2bdb3b02-c6ed-d5ad-b620-2076eb1426bb,181856422,459393233694675131
+6473f212-61fa-b999-27c8-17e2b25a6ac7,3935951137,1551165389263968004
+02b5f972-eb7a-3767-bff5-e1ffea582ea1,2932806374,12592999992517714067
+b5e18477-86bc-ca01-b8dd-1c1ab4c9d9b1,495567276,15309446647631364774
+7c6bbd97-f8c5-5520-02fc-eeafffb50db7,1797359028,18143088761073424387
+11529aea-5820-0240-5df8-a2834d8d4004,957767662,14975834905726820623
+a4db82aa-1aff-87f3-2d0a-1d24643af6f8,2800008377,8494384007998475546
+6465b4fc-7e80-1dcb-674b-28af1332637e,2673344373,5417111158421298176
+9eb56aff-f66a-707b-cb44-64dfc09ac8a3,552687048,12431900644583858064
+d6519d7a-3b85-b953-ddd4-9edfd9337748,4125594585,4722397712706958515
+03bd1af7-687c-ca8d-f3a2-7c7bf589c473,359330405,6109927535028972740
+0345ed9f-bbc3-a72c-31f1-c609d5807114,598147930,5713338290889059081
+e6625b44-8f4b-3e7e-6772-751f5339f207,3155230591,16666094807424160809
+aba73fa4-5dbc-9caf-4a77-b2fd65b9579c,1780213840,6998985098552917983
+39f9530d-a192-f797-52b0-e9ca2ad5eb47,1621383442,14267898154198223681
+22e48e01-c1dc-0571-1b7d-9c5971a65642,4259130908,3122753939745572526
+406f1743-a798-cce8-f835-862fe8c33a78,2536158617,13933202826439897706
+a28e7970-effd-8f3d-1046-8ceb7adecc49,1862886642,14045861885671481887
+ddca40d4-770f-420d-3c50-602bcce8c6fc,526843789,2046176780759198297
+68bb7518-a2c8-f4a7-c491-1d7b9cf09487,2681111179,17078251264424324530
+d21bf9eb-5128-1f4d-771f-642bd8b06c5a,1668156176,10787424223163584720
+663616ba-7826-1edb-388d-689c7998845f,3257891915,17947147713600694811
+f81ed3b1-92dc-66a7-a058-3c2c0eaf422b,3372424671,5632553481383391099
+aaf1a6d3-f5b3-fa01-4670-21a2c0a4601a,1475128833,9689217952064631298
+228a1afc-e7f9-0064-ec16-07ffcd64bcbc,1505916097,14090269545612458164
+0bb5a714-c6df-d611-ed87-650fb54c7c1a,562836934,13156489281611523517
+7bd3ba8d-46fa-0314-2d22-f7c25f8af47e,269213171,916048511270543799
+5fb6040a-f7f6-51d7-009a-413a1afd395c,2874679245,12124220697072146847
+f5968fdf-09ad-557f-d5fd-608bdf27fc12,1616464235,5998756424299104699
+390390f3-dde7-bd7b-30de-01e225656dc5,4147612882,11887379902660126619
+9a389b7d-6f1f-2448-47d4-0240c5e2beae,1420831486,15692756664399340867
+dbefa5ab-2dc8-2d43-1f2f-8531afdbbfa0,4042192115,7479959355471128147
+28eaf69d-fde7-806e-f1d7-17626e371d18,1780011018,13786803013967380313
+981333a3-fa3b-ff01-5e4f-5132fe79590e,2109864921,11476152711562401790
+7218f6dd-9d06-5796-31c4-df8571727642,667230770,734611931736227720
+823efca4-eca9-d361-601c-09e88c5e6bc5,4244936476,17018042332151215927
+7d1e2325-0434-dfe7-6e99-48f207b92df0,679172110,18311379831534299196
+53ae75d3-b80b-1bf4-6d14-110c7c8e75c5,2050278685,14072100805423477070
+7ec0a6b2-e669-e9bd-3056-1a32834812d2,468349845,12347574589591165913
+2264b3a4-9311-6f91-ce7b-5de95b34666f,2931704698,8930623072145168038
+106fd96a-0242-b459-e21c-1ef949826c72,582964461,137726675588409707
+032c8a06-a4cd-d7f1-dae6-d455b4db87b4,3463659654,3083845995039747136
+d90e9850-874d-fcbf-d32b-2e10bce85f9b,3837323680,18411491802909791894
+d277dfde-eca8-e368-fc7a-809f57e8de08,2525507721,14568676191588962867
+8d658045-e7ae-a347-5962-f77357778404,4049680253,9739680383801945249
+298288d8-762d-86ab-2115-bcde0b587136,3149409319,15555879602887541846
+1da2b680-3518-3954-a8f4-bdcdec7a9d6d,3427306219,17372217396908257826
+7b7db6d3-8c2e-5cc3-294d-55d00886bef3,1339235219,7376560992451549347
+7d6e5773-0b9a-bcca-f1df-bd4b3d2bc675,3645840150,13021066784013889388
+19940e3c-21a0-8765-0361-636dc22e04e3,1660048953,1993509189535413916
+9102a1c8-7a48-a448-e60c-d73ce590e6da,2787569949,16742244246445258814
+e12a2760-8147-0c77-1c92-f14544fc8a74,2071770934,6025507634200600257
+8df99c34-c988-4183-aee9-bc6299591769,3801860829,1063545302747886640
+ffb1da01-7dfe-e742-9187-77370c7e8595,3032166367,18176702461590794913
+e7c5b4f6-65df-140f-a916-6dcc9c160e77,3609232715,13434925928857348413
+6fb1f5d7-12a2-ad01-569b-f6e079edad56,8511610,1285592501865517442
+ff88d0af-774e-4713-dc4f-5d6bc47145f9,13940750,15036970273861697872
+a8686606-a7bb-48ab-8288-be8cf18c71c1,3429599530,3044655601275587574
+eea7e76a-c044-bdce-eaf5-8f679d3c846e,3049405530,6329528497187642535
+8867bffd-8199-467b-2e5d-73d3862a1643,1088356555,7918866904583619082
+d2112d5a-9595-f43c-e9e3-9e478e7c57b8,1937576070,2092935880981942483
+43b504f2-563f-4b15-b2db-057f044d5997,741810023,14211081804183554020
+ff462b56-6d44-6e37-db58-6f1e0bf867cf,3728268110,15850074531540041507
+82c0a954-dc3a-afda-5abf-969b4b788cbf,2768133670,1361279347518707796
+4e3f82a3-9831-4474-ab2b-1f4bb92e33b1,1670711001,13465904101730533597
+a8abec9d-af33-c777-ea2c-5c9d1bb0edc1,3012291937,778626098672961647
+a3420f7b-0a65-fcd7-6ff8-ae46b6e88b97,623524262,2120414169358832122
+41ecea57-4337-4242-a24c-b55747845c01,30633055,8108580504469953754
+ea4c1a00-7377-2e8f-0bf4-fd089c1b73db,80310602,4876621762304136296
+7f7579c1-e1da-e9d7-cb42-71dcfdd91701,805027824,9083142432240082236
+fcaf9acd-1897-5ba4-7930-2e6d8df8f891,1396864154,5206599381151887555
+bbfb0138-560c-82f2-83ef-3b39215b2305,370193111,17171052458274337198
+3dcca2d7-4246-f0e5-900d-7726df0c5fe9,2835900334,8682797777231679117
+fcf9bdaa-b18c-e4aa-242e-0771ede5135a,3413167656,15309699444466292227
+0ce96bd0-7b89-12f1-1fe0-436a06f3f2a1,1579040803,11268441662897243612
+5c5da087-908b-cf99-e544-82d0f622c0a3,2352121461,11270282102135948216
+6a00572d-a89e-0684-b27a-fcefcd76e41b,2973877509,3135366039733763280
+1a33b6e5-cc36-cb31-5575-bd4036b7b6d2,2973341828,7582457434440065737
+d5baccdd-8c5f-ec00-fb2f-f6fd70f8f9a5,1658600947,2865682604406762765
+a1849e53-cd3f-8a6e-de8f-a2a9ef656e04,2479740558,18266528242222755107
+39e1ff72-5683-c900-7bda-b9ae7dad9a55,4170796193,1975912159247641392
+4e5b4c07-50a5-c3b2-c199-466a83976880,3665112191,117490062377986352
+37c34433-36b2-e414-4b07-518e6cc65b84,980375407,896945208014385500
+1fdab06f-ef64-f789-4cee-3fc32ac565ed,935539975,1339084209026382314
+553005e2-9842-95c4-867d-53db33152b4a,1889950198,7710710233220467508
+6c7d5942-6632-531a-c8e7-417675202b5b,2733579166,114008800371790067
+1dfd0050-cb8c-7b63-3473-d1a771e3fe88,2688576156,11773975177638370251
+c7a97115-7ee0-050c-a23b-0dc3ee93d03a,2981005473,9041763344503431193
+c6a64c93-6e80-c662-92d7-f5f3ce7f3241,645975696,14338506458267059478
+2319d649-a4a4-3395-ad1b-55ed44c1a55b,1064567398,795603776379984412
+913a3e76-df0f-48cf-9263-2abe9dabfa56,3573852920,13035910735532630992
+5894c3fd-b81a-eebe-be02-4d85f3febe9a,1520776698,13343229317194551979
+1a8610f6-9314-21fe-c1eb-cdc7462a5d00,559348682,5146501706502295814
+817e1a81-f443-952e-126c-2785a91c9d19,3938977610,17326841128456035690
+66bf059f-4a31-05d8-bb46-d2ef3d858282,886095961,2792075366009928469
+f751b27b-30f4-aec4-2c6d-1e44d0f37238,2757730760,15728590439671625444
+bddc78b2-bde3-4acb-5c5a-f6a4e0aac746,1624114727,1233013108509517343
+86773b90-53c6-170a-b522-c6646ffcf069,3748338222,11544254798085216973
+ab8bc2c1-b6e1-583b-2d4c-cea8c0c24833,2572095998,18181733214811832169
+b6158d65-5ce2-a3d2-2fbc-745d371b66af,2355152951,1545992905463679150
+ab7e5263-43cf-dd01-4d0b-aa3cae585f7c,3121008272,3440995746178155424
+57579a9f-63d0-1e1a-e19f-9fd4d0319b5d,1918492386,4738717231319519737
+daa5eeac-69ab-da5f-2dc3-fc900f682699,1505568226,16476374067595040976
+a561049d-1068-1ab9-7dfc-eb88763036ad,1469492808,5716115570832443826
+afe4fc6c-d500-447c-c8be-bc0153465d16,1755422942,16230485248083636716
+2ff8b4d7-c80c-0e72-9790-e226b8b9abf6,3378899630,12270723903506079478
+9556c882-9f43-5071-8c28-7e7fdfe6f77a,3635980222,12986819368334915897
+eec66e99-b8b2-cfcd-7ee7-0aaf2e945ad9,2307857909,13673216021026813770
+0951cb30-dc19-9807-0bea-71323738af29,1193367942,2734108616934516331
+9ae9665d-f842-bd1f-7d38-cbc3a5c9147a,25229792,15470919228686471994
+5c080e32-be1d-7614-a8b8-dca72ef8ec3d,1306003478,7440438387170292651
+c3f225a6-ddd5-bab0-1071-be66255c2dea,2898757157,8150688111059480770
+247f8678-c63e-1e73-d185-4bb15c05a4b9,590651525,11350287035373543347
+2a186571-9931-6e45-61c9-aee7217a4942,2450274326,11595678709420028161
+83428572-b2d8-e896-5576-c901fe2f2d78,2239570207,5778691951637522092
+4baa185d-f9cb-7540-9707-9179d47d68c2,4269955689,4406976936894152843
+8b4ce20c-95ed-0878-8198-592b728549e5,1305047584,10972159860635791608
+4078b450-bd15-8f0a-d464-c268c204d3da,1001361277,5750754639431818148
+ca029a24-accb-b2e0-5135-8ec04656ae4a,807385608,10424129457016216270
+e66a7547-cadc-305d-c544-52df2b86ad86,474205705,3346573260631903181
+f98e7771-9c25-b084-1bbf-ecb8f0206bd3,2699823820,8567005812456433144
+1c658e82-e1b1-67c5-940f-c4dcb54b6ffc,3755381390,12957547116383562855
+67e726f0-2fa0-1327-58ed-f5008df03449,3057366697,2385993054066882076
+02181555-cb60-146b-603d-9be24118a558,1448672433,7851189495841471224
+2d29f57f-4647-3110-2358-a3a16edcf988,1221093646,5801661724344194729
+f8a40bae-d882-ad79-96af-8018971cc7dd,3306146190,3634757560336331608
+243c77ca-b79c-764a-6996-22844e79e413,683301082,15751256086913731753
+ca4b5f04-10f2-d913-637c-d660f60c52f4,3083959669,6902283324885139626
+dc7d22ae-f35d-68a5-f0af-c7e51a91c0c7,1606163346,332235175869714940
+a915f6c8-c898-f10d-6b78-5a9ba64107d9,2086379337,15790628053080377653
+553f44fc-6c50-9467-25ab-1d020c438a61,416080411,10738737248931775675
+d43cb303-5fb5-a6d4-4b65-21ac0264a087,2836664691,6250426018000632653
+b82f7091-7207-5102-d63f-9ac6aff2291f,2631192314,12393689652732551502
+45fd33bd-e4e4-6f21-6a98-b965a1cbbcad,2681310197,16458271194386843286
+0dbf61f3-3235-9580-e066-b0a442a9feb9,3400008119,13864507599555360531
+3de92a99-579d-9562-ced4-b2ea13ee94dd,4059398001,1926906978382395246
+232e4e59-0822-3af9-564e-5aaef0c6e830,4040688132,10826705471060093688
+4f6e593c-514d-cd46-e171-7c1eb699d932,3173520258,1341239238067054930
+344c3d76-b2ad-731f-17e0-f13bb9d22da8,2263762713,4070014845268236209
+5a11ce7d-9e7e-5e95-216e-fa5936c2bfff,1411906513,17687575750978593633
+6fc70771-da4b-ada4-3b46-1cf9afc9d99e,4152337072,3981978170159847484
+85639ee6-3524-61bf-b54c-b067983dd643,1479185306,2331245703895969877
+f0ca3b00-eaec-7857-fef7-3d9fae3fd4d6,1499428155,9471248178182006588
+2350fd78-9af1-173d-fe71-26b91fe84a95,3768723946,14414378493718255950
+145c3621-4dcd-e7f3-b5b2-df4479f2d881,3834349707,4553209578418919431
+4a818f5a-301c-3815-a682-fa2383b930f7,1075562159,2251713218296619331
+f78f90fa-e6a3-8bc0-55f3-93bcec82b49f,1599175534,496324885626796390
+80d3871d-6b9f-7fc1-9bcc-c89ae4eee80d,1042575038,16071471301565187227
+4b83fdc2-8321-1751-b205-5f8cac971234,3274861031,15017731597063028171
+4964620b-76f9-6d1a-a4d6-1f50bbca6b65,2220074422,2163774086830266984
+d5ecf79c-0f5f-3bf1-8e50-3a9a4e25ed34,22599204,1541853708348585515
+89e3a99c-738a-69cd-61b7-94d4e3ce047d,1338658815,14288920828272827034
+71d7dbba-92ec-269d-cba7-d4525b2b59aa,1364674144,6358204915455925769
+1094a29e-633e-dec2-ac70-17616d98e22c,759732941,13509339627588625608
+7e7dbe82-0673-df1f-0d8f-ec58723ce891,1540617669,7120337101894262131
+1fbd86f1-cd78-7795-0b73-7b48df57459c,1325189440,17229399634420710570
+3618ba0b-6741-cb4b-a477-8aa8031fba63,180454951,11267168094802248505
+ef4b377a-edfa-00c8-f052-0dde68b72c84,2910992807,11791828785523629459
+67f85684-7a7e-a785-7e12-cca02abb4e20,1713346885,5661228414468462166
+6ea7831f-87f0-26ec-fdee-3ac86b02a970,3032119570,3968582431601067663
+9def1257-7505-a78e-d8bc-e7bd4551b35d,4046759651,18189229020655519876
+17f15bfc-943c-9e02-879a-a2817b162c94,3514594462,13726904921119886615
+9152ba43-32bc-4fae-acc4-f82fce9a57f9,1213464363,9025358873968213001
+fa8b8558-bae9-371f-895c-b42857162077,111855820,1692742350016725345
+eba59dc8-0a8b-485d-a23f-33aaad376b11,2254928262,5901776677264504046
+c0194a05-8ad4-0be7-587a-0e63ebba5492,3345689737,16076928402898155081
+a22491ed-a669-8a3d-f54e-7a4b6eba2a2d,4001827842,11944886852763549617
+73ef2f9f-fc9a-60c4-e238-9e92821603b5,1395076615,1161075214868459387
+680d86c2-081f-0ab1-799b-45522dea1608,2735191988,15653637952631721956
+e10aafcc-aab1-48dd-6ab7-82d67b64ab1b,77818232,1154546394186909401
+651acaaf-637b-6d64-f95e-c6acaf0fdbe7,903655143,3033310188388132176
+16b2f156-a456-1753-e65f-5600e4745467,495035843,2915392230372583031
+f93d2e2f-9954-602e-ad9d-df95d8e20f1a,3695611626,1492273536809027252
+4e902503-375f-7774-18da-a1ceeae1bd91,3606188374,7622650466844511553
+762c9f0e-e0f4-d717-0f47-149d11de0c11,2991360701,1362031196445714300
+5b5da191-05f8-afa1-da68-434e44ed8642,527530036,18151899318920945701
+dd50e1cc-adb9-d1a0-503c-e3b456ba3103,2449918615,16196219683707770789
+8356b3a6-2936-a6ec-d467-83e8723ff749,1134869042,14863297608559534575
+1830e45e-501b-6ed6-8c62-6f2da891d0ee,3519861086,13050418392930212328
+0dc42c2f-d659-4070-db5d-6f3ee7b0d44d,3162046563,17271293584712655302
+7f52a885-f0cc-af9c-a19d-457fe5e698b3,2227340616,8362666552568961946
+5b1cdc19-9521-256c-3957-fde618d1fd2a,3894100467,4021556987768370299
+984956be-21a8-9614-66f8-1d25360424b3,2694797992,4486412756036815904
+5f3f5edf-d3c6-32a4-356e-276ed163ba5f,2824303893,16353434982111972544
+744dcc0a-59c0-f4b4-2491-087c2df7d233,3651148113,14262940194277166968
+65cbfc59-edc2-1d6c-78a6-5daaa4e25cb2,2605670993,1794898029907865464
+33d8b039-a99e-3297-bd8a-2b2c85d1c4bf,528950557,7350229058712828833
+6ae600e8-bee0-5273-725e-cf9f4477dc58,3128311176,11946476389619596005
+1237a4db-00b5-a567-3268-fa508c166aa4,1842577269,6694510871743604534
+0268a576-da78-b44c-f382-85e0a27cc158,1141055749,5669697437971028996
+c76afc7f-eda3-f8dd-27d8-e6ec7c1b480b,2139888925,11713607307426630371
+ba714b84-85f7-9490-6c66-64c42b1759e3,2885670012,11701091406280709030
+8509f05e-f6de-28b9-c11e-038231904ca4,152770407,9239931890546294472
+8b62be8b-59f1-8aa1-24e1-65bd76b378b2,1268027562,10279399769022651469
+868da5cc-1e95-ae13-ac74-bd01c5414373,3939240994,15452398369908914591
+13a22097-8f3b-3d7f-1031-f23c2116ff34,713005848,4169232431090976066
+5ed802de-dbd7-0ec5-c7c0-006586f510a9,3953584984,11468544389534071453
+97bb0f69-68bf-f3c2-5833-ae64fd658dc7,99346740,8172514218810375715
+87d74190-d3bc-7291-9b8d-20511e006401,3608758463,15453523896301338056
+4af8f4fc-3c00-ea07-456d-512b0f0b45ce,3422644651,17737894150730448620
+c1188be3-f766-b7ad-8b1f-af13936e00a1,3828571546,9097042274616971661
+4e7fb81d-ec05-c662-a5b4-cb802037a062,3364687654,10199164878890237057
+8911ac9d-7196-4f24-06b2-9d55d8c04015,1652887757,10714419583973217992
+c2d7aeaf-db5b-1298-a474-45c18cdf75d8,1508869006,15700413036304612321
+202ef4c7-c72d-4f01-2dbf-4efd7e304926,52108082,14240134372984079555
+c740f3d6-6679-70d1-19f3-e05f10f62b4c,3521942537,6350123877625513762
+8f392db6-ca3d-75f5-8039-eef64f438ff2,3766946797,16852571461700920324
+e0a3e4c9-9e2e-19bd-6370-807806ce29a5,1739137778,14410691566108126350
+fbfed726-a455-c37d-504e-70c44ca2ed19,3149373395,15816815097671332840
+1956d78e-7a05-e76a-fb19-f527bb0c2bfd,1352854244,11570991840352693360
+47c295d9-6a10-2e2e-8806-added91664f0,500981951,6169897707584349301
+fe40f379-03e5-3833-23a3-60cfb8e8bc11,3288861196,14068942955103892543
+401da7f8-b06f-96c7-b730-6aa2337ec373,2301184413,792155483273333112
+bb685919-7ef3-b544-ab6f-5ef8c152bf49,2480557251,1778582660450584105
+a3f8b113-797c-22f3-ad61-bdfa1de400b6,3854807527,13426698452558640265
+a2831c48-bc6c-d4c4-7416-d5c3ee898642,271239297,2433516509662738156
+0383f565-c01e-9a4e-1296-a691c8f30401,1631924420,86581321523613544
+cb7b2c14-8fc2-6196-667a-6f65448d1eb1,3739039475,5170393687522882483
+1d533815-a1a8-0b7f-83f6-08f32fef938a,2647273143,6209397669728643577
+731e546c-bd52-1225-b842-868df0195a59,4288925781,6515649800401646929
+f40d0eb9-e661-6770-5aeb-9e3473b64472,4221343030,4428930149089833576
+2072a03c-7fa0-5ae4-55d2-13ef430bf370,505382745,10096342443846398929
+200a8658-548a-03ba-0fa3-530c11bebcdf,4252799752,14289775404858520816
+c2c182b6-d2a4-59c3-f797-2a7f08302c19,1183146068,11126759857198338248
+d047a053-a601-a324-ad6e-5aff440e284f,3582454963,8249800576830794757
+0aa3a1f2-b976-2190-27c9-d27279713892,3527234418,17470699117288356279
+a4c15da1-eefc-4c57-753d-060d76cb33ee,902114757,3903632035683704187
+98e8fd09-4147-6239-9bcc-ee1357ce665f,1167569077,7852247250491216204
+2bf0f4ee-b78a-4fc7-bb71-bd12b3be9dda,2454753597,11615114336167579043
+d8be4717-ab9b-efa5-4372-3036df3fd3d8,3785812936,1845669901203947021
+6b9d635b-d07c-b858-274a-c46f3972c19f,848809701,17387237305796511064
+170d4738-5ee2-4615-6914-0816b464e3c7,1961760674,7886811576397149601
+17a3f290-d151-2043-4cbf-27b6a105c683,2121037206,8092910499898359265
+85d97a36-23d4-e0e9-9218-c50fa8fe5b39,97541363,1893794363428930216
+c52978f1-489b-f005-12e6-51b0e0c5fa1f,1738174481,3266560323508449680
+740db1c8-d9e6-888a-8107-dd15d8d94e77,1748431753,13141161086881266267
+543505f3-5013-dfc1-245a-3aa88c48d81b,2812020445,15800427680612190370
+d335ebcc-1acd-66ec-206b-a09af59641fa,308439684,930791639939585611
+03d7b510-4581-a53c-8db8-03cc7a111332,1420008282,1982273316278352367
+3c5b2c4e-99e2-3e0b-8740-dd4070c80a0b,3497503861,9649946489946285004
+ee9dfad9-b792-b472-52c9-3175ec1c46b8,1751831720,15992377662803380935
+f5f42538-60ff-2d8f-eca2-7ca11408647e,2069112123,16850426908098001269
+491281bc-7444-3c99-bed9-581e9ef0e4a0,3283438618,16441424848712676436
+deb239b4-abb3-778f-06b1-32b9570f5803,1618052004,11166020350898264528
+7ba79eaf-9381-7884-2819-ac9c599a2247,833872708,15570424883081267741
+741e4735-bbad-d6c3-3d35-b8f21c687d81,1923676515,12838893297422363722
+4cbab31b-0ca9-a3ce-b638-e428d1684b19,2966997140,226057466719007813
+06fcdbe2-8fa0-1d9f-393f-1fe2fd04a913,3020664637,7319293298447373627
+831ef305-4840-28ea-0227-df843d3f9d65,1413907118,14536557561390197202
+73b1e214-4580-6f3b-e4e4-d8b5d3914b5a,2040417628,18326139528329363652
+e06ea702-1d65-6278-6dd3-950ef941c703,2458517057,7485186148626234819
+8b745074-8924-7b51-0a34-eeff68bb1619,490507303,12446330681286586292
+e4e19333-1f69-de2e-fe2e-dc82c4f2430d,806769513,13204358940429147767
+df5c985f-7a5c-c120-409e-5362e133f0d9,3937716372,152633410664377202
+0dae3ef6-3b40-1f26-32ac-1eba65b2b435,3978965158,13603638817048363835
+de66d8ec-91ad-dd08-f79d-71ad7e5afe6c,2011858764,3489366520192879806
+f2d0432a-40c0-7b45-dc9e-da7aacb6bb70,767120741,6543117189577116944
+33a61681-1062-255d-a866-3caaabba98b8,1858967113,1074187910175963475
+ae481b8e-80a7-f3ef-4f7c-efe15149772a,4144028624,17343009923571361292
+49203702-3826-4377-b633-d252426429b3,2788447112,1249381500986121411
+353aa1e4-2592-8885-d8a4-c820981dbb44,2458516459,8369064845548595365
+6b31b6fc-27e5-9baf-44e5-3dc5db938cd6,3419509118,18425754400418573031
+9325c568-fbab-fba4-a845-2dc66fb57df9,436469795,6430323774164701415
+1e7d89a4-73b6-918d-6315-d1c948bd7e77,3221346465,17192080036560139446
+1db47f49-86e8-0257-47a8-bddbe688c87b,4229513298,7227424956225789356
+0c757856-19fe-4d55-593c-3acdfd19a735,3483371645,2227271338774150491
+f3c79494-84d8-83f4-1712-a6cf59e75bb0,2670453883,11861299817092364616
+7d2bc21d-ac38-1d3b-8ae8-4a15a07a3a22,216635287,4877661896987762859
+cab9cf26-d0fc-f902-e1a7-158fbd36db02,3038620475,17306250534495078436
+ac1dd5f0-0298-2382-78ef-358fc2799a8c,3024827304,15301567943499746609
+aa0b8eb8-d62d-986f-61dc-25cb171464fd,23482417,11485543633714740403
+ea0a648d-5f21-d73a-e7ad-b2e6a013eb87,2278696360,8571455957456926658
+eb7955d5-071e-47e1-5657-4fd0878d2052,1476846396,9705851752817930457
+47d0fb8e-8cd7-b460-3516-78a29b5b6214,1865919141,2161510819034050823
+c1eb9a6c-cd66-fb95-479f-86174ad8a0d1,4186288656,9828219360216743907
+31a290d6-9580-28ba-d7ab-6d7cfddfbab3,3205947391,15631715791289771496
+4224027a-3740-ce7e-6327-6414021f5f03,2711880645,10227165301005625059
+6b0126be-d214-d966-c4a6-20d266386103,3827887332,9109653614194752765
+3e569229-7cf2-323f-0112-fc09c53bc650,2509244536,8285906510787628187
+142a211d-a4ed-984e-bfa2-7580f0dd1cae,1929503648,8132379913122945315
+e5ac7429-eb88-e0ae-1027-5b1a121fccb0,2101652083,4317470349450148155
+c08c885f-668a-81d0-a392-ffc97f58186f,3878128821,8690271330923799839
+9abb8f43-b6f6-3200-8b87-ff96518a7eba,2421042694,13609624389073710385
+a6819403-6da0-6bea-1803-33c6cf1b729e,3847330056,2117594112354866535
+291f645e-2643-4874-ed2c-8852f7d0f9f4,1605542329,9529052723043034041
+ae75b96c-6c4d-2763-a96d-8679fe5e0b76,936164578,9083247669764647599
+acbe3fde-1bef-05f5-49c4-b4449e1f55ad,3249615994,5311803112435891955
+5129f8e3-6652-d912-05bf-9dea7dd65e4b,492523852,1186622328154611378
+b7af9f24-67cb-b8fb-ec11-68c5cec92e82,2141901371,16751395419935585142
+009e2826-579a-aa62-cda4-9307f1b66869,3626522500,1885123636376092302
+9644b234-b023-fe36-f021-6784a3c0328c,2248616870,5512865337183516614
+fe5f5976-d228-18ca-5eb0-57a8c8ba0913,3425524871,6026223415468309930
+4a8e385c-f693-be65-0ac4-df3af2bba247,4055916151,9934366699293165088
+aca60650-49ee-0ac8-2499-9e2b72c3f35f,3543635320,14175784755622882873
+caef6559-c04e-802a-2a07-a194d184c9d1,2586188993,15832616648198798225
+b96ba722-59b4-d6b3-04f6-910324117a9c,2238473678,12179247427945232234
+89d299b7-a041-798a-8db7-51bc36b7a32a,288220673,15098075466057582831
+4d90d0ac-645b-94f1-4e31-39ca4e9357ff,1652480196,12169648589714350300
+3cbfd9b9-819b-3aa1-3b51-53d6f6bd7d17,466865111,6133786983064923478
+b05c1188-6f28-6c8f-a453-16216dada162,2127019630,3601659556658705225
+93082c04-1070-f1f5-26db-08b276abbf54,621227644,17827126467182176045
+552c4319-7898-a28c-2c3d-80f35093b048,616016624,3370820299506520924
+caaf7b5b-46cb-ba1e-d185-0346ce4cd2c2,3998305423,6079762818931935580
+98c28a47-5875-1436-572c-cb6e94a5ea32,1789454466,7788997726426762068
+9da4e3c0-9c5d-88e6-6693-4303d79e8fbc,1041656510,16404093141071120311
+7ac60174-a36d-3e8e-5dfa-ad5305829626,4181153895,6374440282592509774
+88aa2ea9-5b79-4256-8691-3055f9753da1,2465119392,9393107960965106094
+caa431b0-1c76-4f6c-2f62-b05b2577aaf8,3713347676,3522036708009103218
+2e7da9cd-dee2-4ed0-b4d5-a049ef0d68d2,2476210477,12763477669143336222
+9b9a3211-c7d8-ea61-4c52-660998c9882c,3081517961,10143783642106852596
+2d7118e9-4246-8fe2-5cd1-b0b8a675b1bd,3377793501,14721466248092669392
+23da8cdc-23a2-f3be-6b5c-8a0e18c957b5,1631024630,9488033010734330537
+23e18bdb-8c5b-aea2-e692-9d2fa7ee8cf8,2224816809,2118031611550033721
+27654d70-b3cd-70b9-6cc5-7d14fd4bca8c,304402707,14363827553432913932
+965f7003-97db-019e-724f-95d3d5d78ce4,3451614105,4161246213029018241
+64fb89c5-e50a-d0f5-b806-a730471c19e2,2177990241,15767870716385979944
+74a4b2c8-e324-ec69-e16b-2301ae2321bd,519958514,6800422374636591195
+17727884-6b30-9f83-1d00-b5c3785726fe,3312429414,12633281433803229360
+584e7218-d354-de85-cf53-1a7ab616c92d,3738573970,11065975843450805367
+b07de246-4f48-5e84-c1d0-2e08727eebc0,3317409826,13043230841753356536
+75902d42-aaca-8dab-13cf-ee8b15468e92,732980644,4861182090607364016
+98344bec-cce8-0057-660c-9cd175c5fc90,2110740197,8733356372886805509
+c559082b-da9c-7001-b5fa-a5f70109ed19,3306600601,18232002163633389447
+6991c9d4-6753-388d-98db-0cd6514e2bd3,607281507,11460465363710578916
+9c73955c-56d9-cc5f-cf15-ba25828f3073,80421754,9945749689586313273
+98c46e4b-150a-696a-2609-d4e5eb87124e,259251545,5266378541650416576
+15386ee4-e507-c484-66cb-1a0ca5f9a46e,3323333864,14627718668443087404
+2cb0f07a-7c74-05ea-e565-fdc6edce0048,4091297177,17224084817658360879
+281ac80a-6d20-004d-66b4-1ebab5fc1a5b,2502517971,6421718208996718596
+37ddf910-3d09-7a32-2473-9148bafb5cbc,981178052,8784194626935083186
+d235b862-b9e3-f16d-13b6-36b0f3b295bd,1813651570,1966304014200157040
+74d79714-f825-3779-8cc6-8aafe6d1e51d,994284308,330643120207193295
+2b2383b6-165c-2618-9ec9-4a6be648dd81,3959161567,5534225441155352101
+dc03f1b3-a80d-30bd-1b64-71e2464292d0,3745242399,3115515074896580803
+db4a08ae-fecf-cf87-d8d2-8f4f01ec6f71,3658803061,11926321065458729117
+173e3de9-0512-6c4f-5fb1-3ea3a1fce0ed,662676721,14791603588094516653
+3d80298e-fe8b-fcc8-d364-5fbffe3a6411,333905556,6459709058443917986
+433c8ade-af69-d618-ae69-105605ea3da9,2894599875,565522487187569434
+cb3c936c-c3c4-c22d-6052-696b43401c6d,825818712,15584969595238481461
+62bf5d98-cbb6-b92c-7cff-3b6223b37b5d,2062035106,7210334294980147675
+e7c93eda-767b-2409-f916-acc07d0c8e88,2345953444,14377796580693460697
+3a96ca4d-497a-b8db-cec9-dc157d29ebd1,508410997,8305872831633799282
+70f5a08e-6f43-22ec-57fe-6f9c81f025ca,373140261,14820781375542580979
+46c51d24-f91a-a820-2cb3-37de527652ad,3792264581,16961623978506287011
+103c464e-fead-a0f5-ee70-06a55fde9668,3522174137,12132422078738403943
+4926a9c9-4767-f6b7-cc82-4b66ebb1a494,2871674991,9309720921087222814
+d9a4ac8e-0ef8-a12b-6a21-88b9db2d01c8,1043744405,7314664800529025335
+51428ff4-beb6-3707-00f4-9dc7c0c10d1b,2254595800,5363712614902003912
+4fa94a28-d32b-5ed4-2228-58a05f3bc667,3485009669,3314144098315513956
+0a565115-d2bc-922d-facd-fed779343f6a,4146892554,6504296713786184659
+2901d2db-606c-617a-93b5-33e8ea9b7a3e,2700973854,9440793547021973009
+656b3ef7-9405-ce17-1d0c-f451599462a9,91828864,7858450566088062457
+72282afb-5433-74b9-a8b2-a055db20b998,1589749534,13410738795534505345
+52416a4d-db98-7a1b-3632-2b2b35a60243,2601031499,11327029991658025751
+76922255-ae91-7597-22a3-d0bce557a9bd,2150243264,1178807045080852090
+8f806228-9bcb-4435-ea33-569c7cb1bd62,1523552191,9529351179209555107
+98a2496f-be34-838f-9629-88a6ac8bd17d,1822975303,5859860316357538228
+21dc3ef8-63bc-84c9-c394-a1ed134fd6e4,1849230804,17696573740541150088
+956d3c0e-2ad6-a54a-14a6-330ab1b2cf07,2486674211,11784012439047626004
+9e4ec86a-f0ed-e98e-4ad7-043cedbe1098,2918384031,16062567442416181305
+a418b097-65f6-cadf-fea2-a3c10deab4d6,1425604276,7342560484556053281
+7c38c452-7a27-cc77-4bc2-d9d927494a0c,708173327,5073375449179975657
+a5086ba4-9b80-310a-1eb3-ac9df0a83d26,2078167264,4809596277033422188
+e5238a18-34bb-7899-9f26-10d7f2951282,260340290,9263524957512802940
+e933769f-6b69-ef65-5c9b-47142e6af80f,2061191916,8532882702559474655
+12754919-02b0-09b7-8f08-4b1de9f10397,1383195371,9214351498137907231
+aa15b0c6-bb91-be74-c7b1-21e7044cb156,4017604528,2130721104469347915
+02038b10-4ffc-c0c5-fa8c-bade1d13e878,387044874,3433394846388275013
+836e9fdb-bb9a-0e31-ad31-1d358fa4ab25,3460011124,9327141819599362371
+a1f053f7-a7d2-688c-d44f-eb09ea60d7fe,2601979192,1463258056162263811
+716c9a1d-0200-c6ff-563e-b7adf841ff7b,27179277,914588675820158224
+baadd2f3-000d-6b6a-4f2c-2c37c9a5551e,8071407,7263082754367690892
+1494829d-f4ad-e0e5-a7e5-043febc5c8b7,3479237786,2155998677387572602
+402835fa-d026-e078-97a0-b488faa5ed24,4149742737,5279864661495617313
+0cc22097-a520-a3c7-4a43-8e03e0defaad,1653321182,8323618195631276761
+eac6382f-89b8-abd7-1131-94783ab97408,1312820376,10733410123590996698
+bdb4bbd1-f479-ef91-b23e-7ccd535ad626,3037303148,18010529700614283285
+35f8a050-e2a5-2222-498a-9e80ab996521,479281327,4895174883365837525
+5692da53-530c-0cc0-039d-bc24be83854e,239256653,18094190440311013953
+d2d9f7bb-e123-b7a3-fbc1-a07b2c79ecfb,1885446717,12587902288082043271
+00c71ba7-64ea-00d4-9b14-7c8e7ce0a17a,3422339477,10061871008683804865
+976d61d8-01f7-d993-9d4a-ae5aaa071186,4185966383,8280045743914583779
+a0e50910-1ea4-b354-4218-a2523e5db331,1237003430,10024244058999727719
+3a2d41c6-6e52-206f-7d9e-1577a9e41f4e,1009725679,9263360929383160363
+ec1ff53d-ee52-72da-a5e1-965fe83a31f5,3350301114,2573269585247058160
+361ba5f1-03ac-f6aa-aeb7-3365dfbf1fd8,2611711065,949805460847703675
+2cde839f-40ab-5d5f-259d-3bab442a6541,2169201854,9751416932190354535
+17aa3540-62e6-5f14-6c67-06dbb8f44cfd,2493133499,17792418976465003619
+e01fe23b-66c7-c544-b362-cc9f9dc86fe5,2199627082,5131986112193168122
+0c15d15d-b361-b620-ec46-8faa2ab9654e,2805832559,18248494479072440464
+5fe92184-b28c-ff5f-be3b-07d35edf3f44,1044525046,4133512226865312925
+e99865ad-8e53-8ff2-3c5e-abe901b95473,1839530254,13891766652518985448
+2e561053-1569-b8dd-0052-ea23c331584d,1235239764,115975375100509748
+aa541209-ed14-a6ce-d48d-e258fabd82b5,2981108527,516461682743445800
+7f0146bc-b0fd-af6c-65c7-5adc98bb7807,1999925616,6823196217626964068
+35783d6b-2023-f9ce-1607-8fd1332b8ea5,1507507697,1374790361036986628
+c3fb05a9-6889-3412-1132-974b612647c9,970142847,1563113010022033444
+a4eb2f58-2540-da9b-2c28-2ba198f8b163,1398533441,7605765631477778583
+2a518689-74f5-a48d-b649-bb7168cc0cd5,1081845281,11957431940805892726
+bc25245d-c0cd-2ab1-e830-f0d54b94e941,150896515,756870167373822514
+8db841bd-996d-189f-e870-a06c59d00c13,2749892142,13553719266307116723
+775b1b85-a40c-b5b2-302f-eaefb2e4fc62,3629630195,17239725542565001116
+0e580a46-6ab3-a413-d2b1-dcf4666bad48,3356218618,8023454170837252968
+83f0e14b-e136-a3fa-6f1a-91212f395c02,1994183697,5742418869220673542
+edcc9477-8d63-c7e3-6a43-5a3e39142804,570994885,1175635234062630561
+504ee17f-0e96-1e61-6942-911a5a8749e2,1884365375,12707247714811332211
+f03dfdf5-d538-79c5-0917-ca203a795550,3452896509,343273913759664470
+024ecec2-4e7e-f5b8-291e-a77e4c4813d5,3427062869,11428857985927907893
+be050353-e935-af4d-389b-7a797a20e2ef,4259662849,6063196286942239625
+3ce74779-d4ad-a72d-d377-a00aa8ebdc1b,1593174864,12100001089213333348
+2e1f0e58-e13a-18ea-14a5-49a0044604a9,4019118264,3268016651554721564
+95d7636b-8386-e427-bed8-76191630a55f,3465405003,16865877257203295286
+bd5b3428-9199-39af-3904-6b0850f42399,383281491,4984528265066932139
+1f8b5ae5-9c84-c2f7-294f-a516dacf453f,1019444898,17211304709826190518
+7299543b-7dc8-e7f0-555f-2d4f00e5f08f,48262844,5120796634423030632
+e6121f02-ee3b-b686-a600-6ecd2c214f6e,1492346623,1483387315378315371
+3d16cf01-8446-9ecc-51ea-b748895e5196,1394281677,6047357124261200949
+9ef64b81-9f2b-cb62-858c-40aa78ce7b0f,2256077930,133558564295462720
+a799e291-6016-f305-012c-426f5c60f1ca,3155164112,8700121647831969606
+1136be32-be27-374a-190d-d26de5805d32,1654936783,394558620280508322
+fd3ae372-181e-8911-f05a-1435a4ad92e8,925916387,5284220477988927438
+68ba0def-0254-cd11-0e53-af0c7971e222,4251604686,17099321679380152051
+f2bbf0ea-1002-e958-c2da-8da784f49128,3259370699,12303237311998754955
+2c5e077e-1f82-e734-e988-234b6d941135,3047430254,15907852177794730174
+c5621c0a-38ba-59c1-b747-c70478acd72a,2021385609,3178696022030501672
+8686f370-7536-397a-d995-2110402d0f86,2774756181,10315731440599233263
+b3d5cac7-371f-7cd4-7fcf-f728afbe5b99,3448238296,18032960773412601422
+237cf331-25ba-96e0-4080-d9e9585b8152,2505903683,9252201425553502067
+4c6b043f-d7e2-6677-cbf5-349222530b8d,3494868574,11327503050748163713
+b8aa6d6d-cfa3-89b4-74fc-7739666cef88,314665913,7113763660923910352
+089e10d4-72b4-743a-32b7-462d36ca797c,1881610413,7349792898161146154
+afa6bc43-0680-ab29-5930-732b8cfcc95f,2631707726,12071463100902158454
+7389fb17-6c87-aed4-5360-3f1e7b8ad0b8,4175711294,16129597181851328544
+2b5fcc21-a768-7f9b-2a12-514e20f625ad,126075194,6713614881710241244
+cdb9df3c-619c-cb6e-21a7-a37a96b1e8de,3474057770,10762749462997485711
+e58d7fb7-6354-9a35-a8ef-014f4e3fe18a,2061495912,12762135653662041880
+9f8f2391-25a8-00c2-4ff3-bc2079ac3d55,1760195559,17973812891953672473
+8f83636e-e2e8-da1b-3940-af3f146b200c,3661967218,15943565762141474096
+20698e3f-3487-2fd2-0147-ee9986ec13b3,2054664734,15520502809870016186
+c893faca-7745-e774-3f43-921e92a939ff,2103354032,17168494590786611697
+e28f68fc-bf0a-b465-e8d8-4eea6a82a1cb,2235561028,3272914250594106572
+c2caf153-02cb-f8db-a23f-19b5b4c0eee8,1018444634,13076944983857707204
+61cc43a3-91fe-d1ab-05b1-f136c7ce7d9e,3277604808,9988197022253816226
+769639d4-ac9c-b308-27e4-46483cd765ab,715326390,146574930270896544
+578025e1-fbda-dd69-f967-350c5ae48406,3960262110,3440976164526223197
+a13dadab-8872-1874-f026-7365f77a7d71,2870964697,12506630341960312256
+090fe137-996f-4da8-4fe4-c73bedbe2573,1651631039,17527507915414210029
+22dd8042-6580-5ae2-2151-4ad0e8d3b983,1717922385,1587485564553767164
+ddb64009-2e59-07c0-95c4-de2ae0d1ac24,4248697033,10497941659209707237
+6a28e1ce-facb-e6e7-ed0b-d83ed1beeec8,1505008201,2747135571804020223
+bdafa676-4765-40ac-80cc-b81e65bf0b50,3709728392,5610464840254794689
+5c17c349-282f-cf05-7204-3195e77e15e9,332677981,3024671518956518443
+da69419a-2325-069a-6af7-0372fbee9d90,167614587,5534435674266142254
+ab558d05-478a-7f98-b07d-25f5c9f38322,4242204813,8959911353338368696
+6783ebd4-9ce7-46ea-7433-dfa3cfebc34f,3888255706,10048851616220387954
+9203ee1e-2929-c0bc-8185-a2e868245098,1239031803,668000591158811063
+0ec51112-bce6-53a7-b53d-15d6179883c8,2625483306,17883275539908913548
+612d54a7-0256-b6f5-82dc-0a8ba4f57b07,615532122,5020026562404043672
+86bc0bea-03c6-028a-1a79-b3b7d478768c,3560727281,10562031435759481150
+4134ca23-dd2e-afca-9780-a1d895a1d156,756706363,11147035238676715716
+4ae29365-40c7-476c-2414-c814daec94b2,413067125,16782564936844348968
+34bb7f29-ce14-1cc0-54bd-54c50cf2f571,2590530544,3354514894909406524
+7fe6527b-095b-b12d-4de1-d95419a1d789,807255347,11411298759652053847
+36807916-3074-67a0-9cb8-7027402408a9,1238475375,13495404464166310431
+1f975bee-c1b3-9c38-61f2-f79e59d0f2b9,1518190524,8666124809816122755
+6a40b4f4-652c-66b9-8308-58972071824b,3147441858,13847124992729746007
+ac94a088-f570-ff4e-d674-c74a4da69526,3544034536,10783325499271313639
+0c9ecb02-129e-fa7b-6a04-d4ba3dd7de4f,2287632513,13358220801320154313
+850b2469-5804-b6ae-c5f0-495e20830e34,3883128406,5896828408385913782
+c466cf1c-c90a-494f-f19c-8adfdb8e13d4,3894776709,13995242703035391718
+44dabe5b-af55-7062-5e24-7e6cbb8f96bc,730771848,11548297403993281473
+8fa681bf-aea4-1c61-80f6-690ea14bb52a,1348159951,11835767557689178911
+c17a47f0-e9a3-d2bf-607d-115adfcfd1e5,4136213255,16061879685720181242
+2b8b240a-5426-b563-8417-803410d950c4,4040285451,11062272655525518267
+1d57f29c-ee22-f235-8d2e-010711ce63ef,2869672591,933538999309081594
+8958380b-9aac-982d-831f-22959affc2c1,3330045980,10069223441376123744
+8c555d08-c73b-427d-0c1b-495e41c43ec7,3943207085,2648032497237403853
+b19d418b-90ac-58c9-df3d-24b5f21e75ca,2823976172,2718813346398359305
+5bf93c6d-213e-f213-0b58-bc081f13d809,2748649505,12570443680919436453
+a43d65e9-7ee5-0ac3-48ed-c5537dcc0bc2,2840313176,2548427454699174452
+7b4c13fc-abe5-8588-1a60-de99c5535cb1,3538354399,6739038050709580759
+9734e961-ffda-f9f5-27d3-99fa260dfc2b,230756531,16421076086712950416
+d410edb8-a9d5-38d1-758c-563bba7e6233,2321824533,6279058552336986373
+9689251e-a25e-2e21-bfee-e240f70d3802,2427955051,12193598104874540689
+207389a2-5d2d-f7a4-eeab-009d77133eed,1792619605,1902221329047059690
+5fc50cc2-ebf7-032f-4123-65d2eabd9a38,1015273776,10682526074927921471
+43c75a93-8480-90ad-b44f-7b5111ce5f45,2286119109,7099351208821648973
+f65b1897-237e-6b18-d70b-dba2a06d8de4,3766974822,899117687980159413
+5cac3ef7-b40e-5815-1fc6-be2ca543766d,3599701722,1575261817070289963
+1051e426-517d-1dc2-e3cd-f880a631d326,3218847063,11115177568311955715
+83bdafd1-6acc-2dc2-30b5-a9bb80bc37b0,2306489532,11953503346645647714
+e747cfe5-9767-9c8e-46c7-7694c394637d,695808948,12801142691264646051
+6760a3d9-ccda-fae6-2213-611ec968ceec,1837680095,12229948909371536333
+39da0ae9-edda-a757-4feb-dd3096a12405,3703369069,17523410391149599725
+65e09e75-78c5-2707-a7f1-df4591206fe9,4066423515,14740883296984111163
+f55bd2da-e161-ea4f-9ae8-902ffc4c0fc8,2729596081,12092349365772921706
+af1a265c-dd85-158b-fdb2-d7c677f564a1,2019363689,6671304120883600110
+69d98aee-67ef-41fe-7168-c513d4f3dbfd,1854132531,12451801630438029258
+0dddd3e2-e361-5971-e734-075ac5f9e4ad,139771000,5622318558374486861
+735f19c8-72cb-a0cb-6070-cd6d64b3eb01,3194543225,10407443472008198869
+26c2a4f7-4b2d-fd9a-1cf2-feb9464a2a6c,1925677257,7046554793781263669
+52df87ed-669b-a35f-45b9-f4fb98ca1422,3800272339,3894176095245114708
+4ad3e370-bf6c-87b2-d349-60d4aef8e31c,1197833577,4957818150305737814
+01b8b2e3-883b-2914-ce5b-23315d1f931c,1191201457,15645582113220946497
+2d007835-6fa5-bba0-8769-04811fc76aee,3677251920,4708527551309459783
+cafc9250-bec1-d266-df69-c354ea495a9c,2775933758,12454154921528864310
+7f54d6a0-dad7-877e-d8b6-82c6ef124e09,1587369182,4508269152499519569
+eac2c402-ebcd-2582-f8a5-a518525ad6a5,2481648015,4726831227570682699
+1e7d651b-6400-2da5-b092-e556e19eaee9,2378804704,12776748811585939115
+5426497b-7a1b-aea8-cb1f-49665c537779,2429875371,3380656018159330618
+f7496be2-5887-a4ac-10a9-cf627f16b4bd,2610202252,4775517809718779921
+272428eb-8039-1fe0-d526-6744250049ad,58853183,7834751590544994705
+af9112bb-824b-23e1-0c59-eb16f3f0ac4a,2407629309,10790067490620860055
+d6568316-e699-2c97-03b6-ca8a1c201f4c,1556885498,11547492342907095431
+4c0dd519-54c3-9e45-4c3b-5f09132c692b,3610811970,11356384690259438681
+f3154f2d-7c56-7750-236e-ea0fe31ebec9,562415263,8447905984352121082
+f2bb0d40-8dc0-3b4a-dd81-633ef94e93fa,1154519299,2951904058143353091
+38168436-4804-cf81-e7f3-eae6a8cb02bb,1784834286,16857651736736263279
+99d3e0d7-69ec-4752-9b98-3c37d083b717,1629034409,10455990941688991814
+f7f33a0f-ad5c-8a2c-a5f8-ecf052012f69,3891607831,983162301023269466
+13f127f8-8871-9c0a-bd7e-3d845f8d2c68,1181867371,2862001290459868148
+86ee1156-f34a-4439-47a8-f1c8a89b1a81,497705031,8925822222554323357
+306de1f6-8e78-e680-b470-84535d1c418a,4020016415,18387258971600566322
+2248b430-5653-fec3-22c6-1df8fea3a4d6,2921056765,1483482221624911746
+790374d7-d627-4bba-af96-388304ebd9b3,4263517113,17459825353015910228
+1094b5ba-1dda-3f52-7b74-97f1b07cb523,414239464,3112186026745581761
+dd3b1717-f9a7-b896-e7ae-9c7763deb0de,576960241,15559136139365052
+1458498e-6cc4-3e0e-93fe-5b4df2d505a4,2791119551,14527393960843596403
+34fcc3e6-e905-e7c1-deab-2de86a403620,1569204774,16538874375795770248
+d3af2708-32fd-2b85-a7df-7ee57014984f,3414297496,4965604475852970725
+627399c1-0a8c-b2e8-4dd5-7c1bc9809ac8,4144917825,756151093159446731
+2fc3400e-cc1f-7a09-eefc-837b8a294dc1,3366108045,708800158572371942
+8f77a52c-6118-937c-898a-b76c2277d3ed,2344546050,482932943642747212
+15498748-cee0-8e97-a48e-a7a0b2684a77,1059691866,14168456237906344809
+c2196456-b20a-f11c-b774-47cf133a1f1d,240555048,9766605339083182217
+1ac2ebbb-f234-ad76-1047-7cbd64698276,4000942821,17419549277840301997
+16e71187-6918-fca0-2eb4-17b62d776763,1805860625,9698886754732085132
+29aa16c9-9b30-e736-d8c3-82b2c5f0168b,2626995559,9811195656011717776
+fadcfb13-a5de-7362-4413-5a1af95fa451,4069296331,6303815824025569184
+6050b430-9f18-df54-f257-1d401bc10c85,1705903454,11510916782810821641
+05e8d7e0-2c98-ca90-a601-67819a967dd5,2166955721,18256721718732491734
+4e432b35-21c2-739e-20fd-90857b79217c,521639854,12705474281834836154
+0ec347db-bef3-800b-7ea7-e6170ddae368,1293988529,2939176275362561762
+dafc1cb1-3b7a-5bdc-fc2a-54bde5af4776,1679634509,12634080866245004980
+4d3a3b0f-3b6f-ba4d-3882-ba6a9fbf3065,114345250,3183743189749611463
+de97d4f9-02c7-28df-fd15-ecab44bf3ff2,1579710654,14173367480768047032
+797ed581-b9da-981b-b3bd-84f97f6bda31,2474711994,5426450812144817594
+a6add758-7a29-f3c6-3334-99d4a7286f2c,2832006775,3682199360796427835
+a785e1b6-9326-e00b-ba5a-c5758293d8e2,3080117625,270641622379034847
+b05c4e24-e2d5-50cb-d93b-9ef49eb55be7,3184146588,15718687326840136022
+3dcb9290-e63b-0e91-d99e-ef4fb2dd759d,92647705,17265329461414551557
+e636de0c-cca4-8490-7c26-1e68dec5b9a4,3715369962,13097556489162297304
+cfe4510b-1e6f-5e24-5375-5fc5b80789b7,610541413,118060365635408377
+4916c854-66ac-0b44-f8c2-bb32aa1e39c1,4099501528,1027211053780517625
+7f7b385f-82f8-ff60-4e9f-fec57dd1805d,2886297640,2818246704427158555
+fa9bbe77-f19e-5835-c07b-346c855ba482,2941477353,15926185004017006025
+b4f3bda2-23bb-fb7c-9aff-75032c911dc8,3182137889,13175398863034630968
+a2be250b-8f98-9d54-eb6f-8130985d44e4,3338672524,16523148291867527033
+60c410c6-6d98-a784-3b57-06ff4bd72ccb,1862454786,7971419472804451325
+dad6d341-1525-f8f8-398f-906098497e42,3926484321,4980266605275341720
+b2c5fc96-8b4c-8eb1-f5fe-2deeaab3f99f,2933826212,6479011333849771288
+ccd4b6f4-ab33-23b1-29d2-5af93511118f,2393008874,10919053514924764124
+58790c53-b7e3-97c3-c405-1e02ac8a1882,2641449492,2464975763704577818
+f6b6e9f7-acdd-4f37-4fa3-b9fecce814bf,2985938184,315916691249430149
+a11aa1dc-340c-0d9c-f19e-6ddecd6fae33,3670444859,6574590778589146393
+5a137901-a6a7-c11a-b273-f283a7fb0ae2,3938326487,3517426867057118482
+df076186-c57d-722c-525b-9c748d5aaed5,3602168283,4850710421381262909
+fc565ab0-30f7-766e-4fb2-65f16dfd54a2,821759218,2282487689768910594
+02e81007-1cc5-97dd-dc1a-be4de15ca1f0,1286543125,4954289261502459029
+80bd7e33-b329-a631-6c1e-44289b9d37c5,71118525,997912241241938463
+1a249ec7-5b2e-f731-b7d3-3d1e0c6d4e98,1949859688,12358454801089862178
+e60a71d9-d9fe-40b9-9df3-970db73e4910,3117560379,15545822281316980029
+3dd66de2-c76f-4a34-a71e-922c9b031369,1391157188,1940890802051926269
+75581824-0839-badd-fb29-ba20befb91b6,2201498257,8716895830431820281
+150b8ecb-c93a-0933-a5ae-da09886eb9d6,177591376,2018488323454638102
+be21f814-82fd-3cfa-efb4-b7d80b6598fc,4043052626,8031750328242910600
+1ba3e03a-78c0-701f-8931-c0d79b7c71c9,3674148557,14762504736894826975
+c7091d06-6541-f31e-e812-c9a43617504b,4164528205,18441365903593213806
+57b26047-9bf2-60b8-0f18-eaee4faa98f3,1997234131,10724161544114017418
+01ec5477-9773-6400-cda3-ed3e9e705b89,2154120197,5035026384446591210
+4b8296f3-47da-5515-e492-f48d89e2eed8,2419751328,2819332704911796527
+65674c04-8e29-9c79-7672-49d50340015e,2887456736,201293743601675072
+bbb0be94-fece-bb95-ecab-faf7bb7f7122,1197944902,4612956773616815719
+1cc2832a-2d57-c8e0-00f0-3ee79bb48353,3163280365,15894148659742797173
+944852ac-6173-2364-a494-3ce55e309dd0,580854730,12767543541652414627
+21669585-5f10-31c3-ab08-ed4d62b1b3d0,3460953853,601017103076612789
+c0beb20c-1da1-08cd-e4b3-105fcaf6292a,4144756192,8034962479543476024
+379ed0b2-1f3c-7275-400b-58176d5a972f,204314981,7471944764736258696
+8111ae62-7e27-9382-2191-53bb297c14db,596928008,12054123097688590234
+4ccb0a76-e4e6-ff5f-925e-4b93323965cc,2894524797,11006708687191138605
+26f5bb09-98b0-ac0a-9929-6d7b56498f9c,2124056478,949622756373778268
+f79ddec8-42eb-7c17-6bad-75446045da54,1964433977,11579987360553196128
+915d775b-d9de-ac02-e432-062873fcccd3,4285494442,7592605356723269871
+931cf687-9d00-4112-ada1-6f2ca914f651,1337020794,2090657872857227123
+1bb5ec35-058c-477c-4185-dc5aa9f143c3,2038212044,5796845906157947096
+cea86edd-dad5-2976-928b-5fad1577d6a5,1890069035,12933512732285295595
+a4584bd0-f205-4d5f-1c80-f0d04d7f9c2f,371776860,5764266194271696391
+f3f352cb-c3d8-bc6d-2591-bde11d38a98b,1527170949,17999532114544587811
+1c800072-c0dc-d7a5-d0fd-0fbb636f275a,4049260868,8836444605090998596
+0603ac3b-83a6-4134-434c-f7760a010deb,541106883,14506811114094252745
+43ce956a-6d2a-7e9c-6271-b20f4a1746cf,2502874083,2467787219079363475
+e894a34b-9f7f-1c82-1441-6f946c488398,2109492528,4324128081528936818
+b46e7e6c-7a3f-33db-c0da-c607a2d577b6,1116990707,11905275746732356807
+56e537ba-d5d9-0342-bcde-725ee676d295,2345306541,3679941731508705348
+c164a9f7-3047-01fb-0470-f4f853d53d10,3838886429,918761880216310105
+159f4849-386d-0e5f-15ad-76e14d6c607e,1216512967,7064854296103625569
+dcd75e67-ac6e-6de3-6b03-31999fcd7b5c,3595820894,15657257900083598142
+b642a546-052a-7ae8-8016-bee8d8a259f1,557242419,9545596192048092093
+ea88c0e9-bba1-9cd0-e506-944e764bd80f,2033224389,17470933841302344576
+20d317aa-561c-2bbb-4ddf-212599dabaf1,2167108643,12583368783947424773
+e7483718-c99c-6909-aa3a-0e87efe123e3,852615495,14755998959798076528
+1e2bd495-0878-871a-e6f1-71953e5c7e97,233829683,13755266348181801459
+db7a183b-4c2f-a0c0-fe27-04c222d0dfee,751042773,2036757305382651906
+e0386770-f1b1-7eac-b790-f32447329702,1704910426,4293420327755894001
+5f734187-3215-1ae6-fe4c-69f6a49ae8fb,766922287,6632987819544199472
+f9a3fc3c-689c-b5e3-49bc-1fc089978b0f,1962665719,16626062398705957342
+af6c1ecd-46f3-8fec-61fe-c138f2b8fb4b,3295030019,5688155868942359866
+73014d89-06d5-a557-009a-7d704f06a630,4086239259,17325830441498956712
+7586e457-c6a9-adf1-87aa-4873b88e3b9a,1380920424,10753819928044695172
+f6d209f4-429e-e15c-b394-12ddfeeda358,2197057896,14694567368338548011
+45989409-fd07-118a-58ce-2f8984ecd71e,3772703885,8408601684008814329
+f23f6408-dd8b-afea-d7f7-96cdbe51dccc,2156195229,4624631382111228210
+4370c1dc-7bbe-115d-4a9c-d55ba3922840,445127754,2726359186825275922
+d8f365eb-4135-d309-b727-b52f10ce9fbb,2264626479,15221320989351734505
+b7f53a9d-82ae-5d26-9b1c-ad845f7a8225,851959088,3754842521337104348
+f06d23c9-99f1-80a2-1685-c1f6e9bdb9d3,3588327118,11538974398410047987
+3d15969b-4590-8823-c3a9-cd6e1452cbce,323788822,17079474334986786729
+0df81d9b-8aa0-ec2c-2fa7-91c74b7dd6d7,3630734256,2520143702128181496
+8d8ac553-952f-40d8-e72b-64d24f8c0777,4272888455,11978486776410432488
+0379772a-7886-cba6-ca93-3913d254c8a6,3294477931,5490478818868641379
+606120f9-1465-3804-a038-1f749ed46598,1537205923,11811819240015482413
+a139db79-ba6a-44b9-8e31-4e738c41a034,136888249,11386898221564910717
+64300df7-33b7-ee21-64dd-aeec9d9b6e44,2498824235,10135389267056547204
+6edda6b6-cc02-89f2-8f80-51e90cf27c9a,865165846,2045512024286402589
+b595ba86-b2dc-59eb-7241-a5fafcc5d8d7,1691129051,5258119856539114720
+6fff9e74-ed6a-f0f3-49b8-caae540f79a3,1695232944,16663407209861922925
+a5a8a61e-9205-ae3b-7338-083425f29ed7,2202651721,8922926899256162734
+2c4988ea-9266-2093-6bc6-ce097a96c9d2,4136876974,10017891451368185786
+ae6b6ea6-17cd-74d6-a70e-461ceea2c069,2947544980,7545582425480607394
+c499196c-5bed-da56-b833-ffa6d2ee0131,3872179063,16928137690589921247
+6e450c7d-5a13-4860-120c-fd49f5779b7c,3192419093,9126356602308315309
+e494bffd-4f32-b8bc-b248-781ac50203b1,1420145837,11368354469214240103
+13bf427a-9135-3db9-8bef-233d93be4fda,3378043819,2227775484795047315
+1ca30be5-7dc0-4ee6-4215-ded1b93ab952,2439882391,2055147440088456129
+9c4e46ff-e5f4-cc26-d652-3bf54229e7d5,2586009474,7882230238273531393
+e8d04873-beca-2712-833c-572e88b837d0,1125956363,18117063198205237474
+768488cd-3d65-29d8-15ca-593c3acd5d7c,3030514923,6579798008565404042
+863892ef-4352-64b7-0b26-7b5c77a1458d,3654458851,6145211032725007990
+a6827202-9230-c3e1-b7b0-d66cf77b3b6c,2079163427,4555835144183621823
+c3eba8f7-901b-0b91-bf81-bf9e6b8f4d2d,487368306,7364151316222913040
+c2e5815f-b7b8-4f98-c47d-8e2cdebb6ae6,3648969729,15661228460374710247
+77a3109e-50a0-74c2-9b30-35e0f9bfc918,1076465414,14209383364538244081
+dc38ae3d-8cc8-c6a5-703a-509f8b34b222,4196455417,390036311664005333
+b221b8c6-88b9-aa53-e40b-03381476cae7,3643678753,17169051641235041700
+65d2a539-8151-20b2-f35e-dab65acd6e02,4075372925,16744741578796862175
+95ade0ab-4394-ae0a-1fb0-6e7855600f8d,1752222527,5971572712114402922
+23698514-3366-edb7-515f-3d1912fadc78,2203563005,536792144844122308
+bee58a45-5c56-d612-11d3-e8bdf685017c,2278824512,6127593117571325990
+eb9b0921-4da0-ba04-c3aa-5c8b6a44360c,9142553,18343528123110597575
+0f6e843e-6cff-679d-d899-2603fb05da20,4140506671,3248837807929604275
+a94eb020-d6de-4529-8ae3-e73f1f9ed162,2774300287,7549564775154975806
+0401461d-cb9d-250f-ee01-d54d5a07feb6,2832037418,17441080820998835372
+dd037997-c4eb-2a03-893c-85d7441503a2,2048442025,6276308369163186065
+57eb59a8-5919-f26e-565e-464190654e10,4170188908,16447257631448668644
+9e6d53f5-21f4-6149-2b9d-981928f03f9f,1126983538,9936245808643154630
+3d8d351e-496d-7119-5876-ec69a040a414,1822143476,4273819843835072675
+5fab2b21-aa34-1e7b-d5dd-c9716ac2fb07,761812906,16692712813562240347
+6199bd2d-8cad-76c6-a319-5160b6985b20,1352843837,7586557596410817478
+baa1f8b1-35e6-eb85-aab1-83f9ef2e0603,1979145493,5972396571818120579
+a5a53a78-e337-5804-5e3d-a8e5c01e4bcd,3180428226,11637064108972439863
+55103a50-ca26-0ae6-d175-8b5ca1149caa,397622573,9293261692674891894
+702817f7-fe68-15bf-36c5-02a250ad7f60,352486742,1891847437447286298
+0f49d4cf-1fd8-f9b2-7a13-347bd2124669,1108583806,6417876877543076009
+601bdd97-3805-aaff-b77d-a5eaeda6a119,918751623,3723224538552476666
+b94bf1ff-d50b-4260-a4fb-8364c9b2a226,2625908074,17154505755240446982
+c6961e53-a2b3-d412-fc1b-0ba492d6daad,521758684,11234701623615688223
+190b3b3e-1eb2-5a07-7876-c4234396b5e5,2983864042,654095512384510195
+0d1dcd7b-10b1-0f4b-17ca-9f926f7d0c2f,1490538772,15008100929668745609
+fe764f03-5ea3-906c-2d93-2f2d2db14f15,615184734,1548067085179379938
+d5f3027f-b8a4-23dd-8192-285ea3b87349,2911633120,5698665868085995376
+68cc5a9a-0c78-d9fb-9bdb-37eaca25d70c,1407159438,17476379467890509750
+fe72e2c8-b4c9-6dc0-0197-d95441f0ce8e,1477972901,15428195411805911666
+91287d96-bb8b-d2a9-ce4e-a9999373a41a,610849670,15678489413765906764
+70e97279-c958-9134-aa15-d0353dccc5d6,600690587,8702042765311445836
+2f6098a9-f44e-17de-ccb2-b478292ab2b4,2696052982,2145778983723835540
+0352b7b0-4806-c1dd-f592-2159e6a0eda2,1558535494,7226766142118063925
+97487ddb-5389-19f1-8652-4315b72b9acf,2603742164,12476295968074595105
+212dd985-e5b5-db8f-a379-66b213c5e1b3,4022782807,465925476242057581
+baecba0f-2e85-4695-9b8b-a34144140964,2403896549,16866948774213060655
+45ced6e5-b348-5fd2-f08e-ab66e9c96d46,2030875957,7633499874563947417
+3794eb22-8a0f-74c3-a23e-d360d3979915,1936524159,12253841515568107637
+b71e7f58-7495-7c6e-c0ff-47a636df09ea,4136929602,10274978007449534190
+c9a0373f-f6c0-369d-62a4-3945663522e4,310553290,4574609482522604979
+14449523-21ba-a768-2b57-bcfe63e97b53,210983094,5323471605323688252
+ba6be6d0-569c-da9d-c57a-6b29d7c3e08e,762189731,2907663445940030380
+021756df-82b1-53fe-93ec-1218afac3584,747474066,16317456309830638718
+ca47045d-4e07-926c-80e6-ac9e356356da,4033896018,12114743433743782328
+36ebdcd9-7e5b-9cbd-b0b8-9e98475ff0c6,3704125233,18030684460521072156
+e3b16f1a-9899-a159-624b-7d8adc66c8b8,1643564677,1942239424602497088
+f2e0c764-28ab-0de4-fedb-467d7cf8cf1a,2091316812,15839291250886068665
+ee63fdd4-bd9c-0c59-c0f6-4b0ae4b5c3b9,939962133,14536000021208758314
+a207147f-d526-5fa8-286b-d5e3e5e5df09,1818242373,12422002090478002621
+db2e2c72-50d5-f4a1-5290-cd4991bbd3d7,2514068716,17748034721319528987
+85eb47f4-d82e-3f21-6f41-9f3e425cc0e2,321287422,9745510253937543286
+17338faa-5886-fc31-2669-6f3b018ff45d,220806051,4588973947708318150
+f29d3979-ec8c-e637-3c2e-05ece44a0d0d,3043784812,2179967266423886034
+8ff1b254-e1dd-3cbe-d68c-e6e3710353ab,2023491956,10652466648802097347
+b7592db1-e00c-27aa-d9de-75cfb9fa6bdd,1239371335,10934044387508838852
+f4256b01-7275-21a5-7c56-2cc0731d8dee,3839995798,2177356808540174373
+8c321656-afd0-a7e9-5ed1-9fe6b8e61aef,1305881868,1831509387198029439
+6af3aaf0-4a2d-071c-1d7e-49d3854bdc48,284757928,13464803360538677631
+3e3adb1b-a5dc-63a8-52ed-52a76ddc2245,1958875585,2262162042557933706
+74bfb538-0695-7ede-6426-17cbc869cf19,2581466107,10409434443422035007
+ab95a17d-33ac-fe46-0645-82e1e3366803,637391390,2367382640901496947
+362b2e1a-7a9b-858a-a6df-adb948cef6b7,1723392325,16918387167161460047
+11109193-e083-bf4a-c2ce-7de3e378548d,1943549000,10159325956510491081
+a689267f-7863-0480-6fd3-5b4676ff44e2,1615544117,4087690130655697117
+17131777-df9d-d00f-e0a3-7ce83a239985,1979900658,17442091222094641675
+7c8e6ac0-f494-be49-ad8e-8abb7e03f245,3702241679,1656990165661662336
+0856f7a7-72c5-bcef-824b-4c704b10ad00,715379832,900420211981983081
+1be3e6fa-9214-8c23-d886-23dcfcb6b8b4,3493013489,499284682341173243
+ff644cc8-637d-85f9-6032-bb4bf08b6449,2546590419,8869746853609749137
+717196ab-40fb-22f9-82fb-e406ddd6a0bd,3787064533,12173999883534678173
+95d72578-612b-e9d4-e370-62b7aa5c2707,1166942443,13473231062608380078
+1d117401-10aa-4e6d-3aa7-8a51e29a7961,2213131455,1528283683309823815
+9c79180b-a765-7a02-90dd-33f1009debd6,4102700783,11685616745300895412
+b52cfcd8-d31a-75c8-cad3-46f07cdee80a,2624998946,17072205595454532281
+eb6d1aaa-f343-baa8-7255-02765822cba2,2451305432,13083344145003170058
+1eaeb79d-2e72-989e-1c42-f10b010fe5df,3889078873,18433658756751168249
+eb30181a-fc96-1e75-bac0-2dd4cdfb03a0,2192567391,5436015043131465134
+e41405e3-4451-87ca-8c0f-f46b8e092906,1989480324,157721132563748301
+e9cfc6f8-9375-4aff-7c7b-6bf8a1c60383,284399293,5202871504091733388
+a9ee60fb-083b-c4e4-8131-71fd1e4642d5,3244208818,13527417068442567436
+1cf474dc-b8c2-038f-f325-affe56f089ac,3151479159,5551930940930987509
+8b81c889-b671-309b-1187-d0a98d70dd57,3599623557,6762620158852586534
+c4f05b57-8b6e-1ca8-2499-98a9f94a5d35,2464380013,4711436418655821350
+d7c6992a-4b5c-6246-e0b4-05b9ebe17083,244089083,13616811797435055138
+1a6660bc-63da-866b-6a82-8295f3aff376,2086578082,2923067086313804986
+ec162fab-7122-1411-8903-da46dece2cbe,981828181,14990911329350781684
+8b40aa11-f206-e9e7-19f6-36cf350613fd,1703492555,9403004028186311623
+d9a88cdb-c63f-5c98-d2d0-ad3b399a4763,2084357527,6691797040963293986
+577264ad-7763-d969-3251-b83fa3f4a1e0,1004153081,13516073654154289408
+579b59ab-8608-4c03-3cc4-a538dee98ada,2843699995,16875301897177686745
+66d7bbdd-2181-be7c-2c21-a1aacc1384b7,208116714,3174619530658100543
+ff70bbae-9fce-7651-0948-28200f7ffd9a,864988063,7320538855809766413
+08815185-1238-09c7-c1ba-819a90fd9fbc,3280299758,11803599756950081848
+ca648d73-ebfa-dec7-43a3-a102972f8357,1494111695,2763574479606294400
+b7b4732c-37e1-f96f-8a24-f28c87513f8f,1895048780,8114766829938870024
+3256c630-1013-803c-1b1b-80875ff672d3,3957829235,13704355949537557528
+43aeda93-fe7a-bedf-07ec-aa3b847e3097,942862827,5031427960970011761
+3b42112c-b8b5-3e94-4fb5-e3e889bfafdb,4051869095,9464435575315824816
+6c9a48b4-a2f2-0bfc-7552-91544dd1a3a8,2371184966,10228422019214711063
+711097bb-fcf7-d924-10c1-6aae1e78b92a,2904976852,15941304792641701155
+dfbff268-e0ad-eb9c-e226-fe6528b615f2,999305087,6953016862788109016
+e64a4a16-5de6-3372-d329-fd3965619728,380184287,8873727669789078
+ec194772-6bac-c746-5bf9-cfeacf6676ca,357500666,967921577110374877
+d6f00539-bbd4-63d5-c5eb-05a4502c9253,1715948090,2786893571668413013
+b4e90a3a-ecd9-9859-edc6-e21992cea34a,373054221,8493510517060583921
+2f6d3af8-6b83-6aa8-5ec7-8b12baa4b449,4200342337,3984149592803092496
+3274840e-ac0e-3099-e7d6-b744457ee185,3343850864,2522939894125658687
+78712db8-bc30-f507-a08e-418ad75e50f9,391536199,16199606602718303411
+5853026a-6c90-099e-b201-344d4497a6a2,1098459877,7825005471573144478
+74c35ade-a21a-f383-b39e-5f5746d4c6d2,385526776,107033183093185281
+a32a2d94-e39c-a777-cad3-47e1d40eed62,3334105455,10256820976443777164
+fe22361d-d054-71cf-6001-16a68b8c4194,2024970584,12808636545114924149
+5c99eae2-d181-3898-4c97-91b0d382203a,3615377041,10761576787353266889
+f14100d0-7378-6bcb-23ed-f40d1dc3d4b4,158514500,17668005612109395174
+d6eb7a36-1faa-6501-0e5f-1aca5881ad76,2672361758,12194125289781242333
+2a0bbf36-948b-e72a-9fb7-6eaaa2d8831f,1173916137,8928289702027335430
+eecc8c86-29c1-65e6-b1c5-350e8d1ab696,3175415006,10914871043794908773
+affe87fc-b4ba-8e93-8c05-79fdfcec30b1,668481480,5171105530650347793
+21eb2e8e-04c7-362a-4a52-40ee93dbddfd,187472255,17711744579319152374
+9d755a72-9c53-1052-6372-ee74b9cf7b79,115897994,12636816678645301601
+c47b7720-59a1-69f6-5eb4-fbee4e1a2dea,3681593790,18219390372791702732
+1edb9052-0518-06d7-b2e8-4a6334fb708f,1338580117,1394308785373373594
+cf265586-b278-48ef-78aa-2b2ebc436874,3857001872,7314176278783124918
+35c604fb-ffa7-b140-fbf7-8eca1d852983,1271127581,9307121363699347275
+5464e6f8-0e5d-3af9-c69b-85c304c29f79,846322005,3250574226586385246
+46fc03d8-5753-3a48-560a-510274eedf74,1865293729,12401118572301792867
+fa3f4157-d30d-1050-0efb-9b1bce4ac032,1808369079,5383966690016023900
+a5e20fc5-4827-113b-98d8-9916eb5e7421,2266251070,9388071448158178995
+a956f77c-82ed-7b26-9169-451b410f18cb,826229910,11172207813307239949
+47b2fb01-18ba-c492-54f1-611e8f34503e,3243256481,11260492294504860403
+0e4e0bcf-6ae7-3d69-489b-7c4d234ba87b,72868708,17510058723341699427
+d3671dd4-ff94-5b44-c0ec-8f73921a72bd,1715355949,8858059853443850056
+a452e9f9-b73b-f2de-ebad-eadc0efa8948,3841253604,16990774398739825588
+93104042-910d-218c-8a18-c6e441106dee,3100987474,11383330557098788080
+4dd96b0f-8212-3d2f-ff99-82959662b399,328098282,3096675477231550497
+8ee835bb-eba3-d64c-495c-4986eda0188d,3208910594,14575325931090122372
+1da102ba-f6af-3acd-b31a-291e4083611e,1221583453,8431350031399990344
+05210532-088a-d158-bc99-89f0d281cff3,3616024087,9466580317152156258
+936ab861-7c45-99f9-61ff-98808fae35b9,477063618,4233893904857732936
+2146b2d2-fe60-a1cd-95dd-7e9b9ae03315,3924149101,5648141690901377573
+b61eac4d-4f4e-c442-1714-f05ccbbf0ecb,1155868805,4159979988678912054
+64c1cadf-c498-f9ba-d09f-7b3d4e5b6ce6,185206945,10386380414504480136
+29da9a09-414d-1aaf-8086-18692554a1df,3316904285,11176878111270888201
+f6107c50-e3a0-280c-8a0e-cfa536fdd5af,1158900669,14164664216135906989
+f60a3d4a-c90b-b49d-33a7-d3c66d247882,1592918612,8559791742173685299
+c797cf68-8c73-2e92-32ab-e332c44fbf96,454761907,10783698845315338165
+f8fc88cf-3316-295a-300e-0fe1d82e5bf8,962392039,3685026894080953923
+a7ec7398-8011-d774-aa99-d5a5e367d7ff,1648800421,1891354128979492955
+b9b0e125-c162-b70c-a9fd-c49348d4a9c6,2279486386,1594522990787570432
+11e78aa6-f347-3bce-d168-7dee285e4696,1674057296,13595075423897825554
+199e5b3b-1678-a328-c0a5-a79fe1a030be,241793293,18054974188455579022
+b32db97d-1ab3-3e8e-9c73-86efd3bb34a3,1708322249,9310515834163697955
+59f963a4-2a35-ee06-96aa-fe448a7e40ae,3871714027,3093536932144180079
+d56059c0-2776-0c27-b837-00b9dd8ecd2c,1932908268,16357839164653011425
+646b9707-c63f-a230-6ee0-20a023eff723,739937318,6640022609685074135
+659b66c5-e754-d3d9-538e-cb17379de747,580952896,2934825764305076286
+d85b08f8-b3d1-8277-fb26-6a4028fa00ad,3604597692,4776439434324540957
+e8828ebf-bb08-2683-7abc-635e765d1094,2756080277,1193406482045433459
+62ee541e-92b9-08a7-90a4-eb3e204a2d41,2760663979,4779092069889629312
+868f2fd3-5d07-4335-7994-81b07259abce,711326173,15621687489595565120
+dd434ade-7832-acd0-724d-a3bf2cf0a60f,4125517667,5045308578860700332
+4b045485-dc8e-8eec-4093-cbbac2a6f0c5,1919002796,17938257822125430868
+be7c4343-9fbb-6fd2-c490-26e02aecda80,4175064231,563875760534368262
+074abdf1-0070-cf1a-c450-8499b64ba933,4220083474,17452257702011033944
+88f6f275-848f-7995-e9cd-5a08d3c8bae0,4046439303,16079048406201156096
+51e083c1-6b37-d934-62ca-f7cee95abe05,3726582978,10835061258314737618
+317c6c01-f753-55f8-4b69-bc031e106f8e,4078178702,16557382981263420767
+8ec37e41-75c4-348f-1939-fd4d0aaeec56,2625855913,75557966333846422
+3e906d95-01a1-8ffe-2b5a-3701940d4eca,1073296182,1294770296365365520
+ec58c121-0fcf-a5db-0662-61340218c919,3769975970,9514219611564135731
+c86ba993-a8f4-a4cc-e956-c3a570dbfc9e,2064208153,18144465580474478082
+b4fc163e-8289-ac18-2787-7548b4337796,217295574,13799047761602816232
+37b3e5f8-6963-46c4-67fd-71c1ac59ed0a,1540340150,14339582601350589673
+df4b8799-bb59-d899-6310-372cac8a777e,3353043357,8458572134206995771
+85bd84c6-2ea3-1a37-b962-9783ebbfd2e7,4117601102,1126303277765111037
+ddceed0e-b104-e06b-3d6c-35717d834210,3731476650,17668162686799634533
+7fcfd457-e0cb-a131-084a-41a095c0c3cc,986569389,7715331312567624878
+aa31a514-81f7-5784-3f5c-9d305ffa6458,2653304923,14401993275571128059
+a860b0ad-8c5e-ecab-45de-e9a40f0baf9d,4005154374,14322435404888199514
+b0ed55a0-2f6e-c40f-dcda-3abdab9b0b44,3049972308,12069409429755326583
+d0144249-2ac1-caca-57ae-0b713d2aefc4,3923914669,17416324831332183268
+719c73d2-0a09-34a7-dcb2-895a874de997,4221376837,15382088374404226591
+8403baf9-4c08-bbba-50f9-bd30c49563af,3217482868,4268050847671111382
+7ee1a06c-056f-74fc-eb8c-df3c23f7e0c8,3911822413,2194928651252035109
+dfe981d9-037f-7c69-7e92-2b82c44d0596,1666919677,14771781091728565743
+1bf9f4e6-ce94-ee9d-c52d-4aa12c5e5606,3609691895,7333366743467255871
+7339fee4-9232-e2cc-beeb-9785a0b9e0dd,2642189761,3361524846000509857
+279a7180-c376-eb38-d52f-0f830ff2488d,3883099368,6070673322156537875
+bf06f7bc-5f26-d0e3-43de-4b9e17626e24,348901124,9049182316599579111
+e1a0c79c-3cc9-225d-30cd-402a348bb7b8,1563765100,1206426975274407308
+94ea860a-ec18-5085-711e-a43252e7eec8,2559442598,10476338549430390582
+67a065c1-b7b1-3bf6-d1e5-3853423a422f,3962685358,10780019095309147193
+1e4f6672-b062-048e-7275-e2a6730ab5aa,1401796166,4606758925861157189
+b0738c18-7485-0df2-9967-187a7aa69539,744359483,10405230233045954064
+05ecd505-e7ce-f70b-c7a8-dc704cc6c966,2456180387,2676904109424679137
+5425614b-e53c-a7cf-2dc0-fcd4ce8319c2,3225732582,16764620697081867229
+d91959c3-b158-a617-a419-646651ecc8ba,1703059506,16198443042902736648
+c5a4499a-7d45-7c87-dada-97f599aeb19f,2023179241,10416125087985575541
+7b4fe9dd-14d5-bcf1-4b98-c58ead0987d4,693463884,16775121253814678322
+00c749fc-39eb-4ce7-610a-885f5255712f,1222747349,4681448584210927075
+f9420582-b5dd-3f19-8643-4d75fd369b56,2526587066,6196629162698428285
+5284bb28-bec3-2386-5c60-dbe75b87fa92,739804079,10868555368104344451
+606bbc76-69e1-99f4-54d2-886d12300751,1058199789,431968808965539685
+8ca77ea2-d948-8b29-c6d5-2817fb38ada2,3136418157,1416151114116365360
+a5f89892-1707-7a24-2eab-8978f821bd14,4011375888,16615302248881358714
+74f9d4dd-4920-bb90-204c-093874825192,2867896263,2216855287619992645
+8e012798-d262-88cc-4e84-d4fd4a2a459b,2814268880,1565925097735687314
+533e0157-f10a-5001-b6e9-edb70ccf7b91,3271231318,8097337680956964545
+7c203435-1138-07b3-4680-1ca52502d833,3576376575,9128994454671656410
+f6bfbca4-87b0-dd1b-cc35-f3dd473f4112,2809407991,14789752684612309184
+c1e221a4-4538-6cdc-0dc4-8ac5ed048b86,3151699634,17292521745667272190
+84e38808-80ad-f36d-99d0-ac1569933aa8,3688361629,452387022158645785
+1b94d755-9fcd-c0d4-a3f5-74a6626084b5,4184046032,14715503021440071985
+ec576665-d840-63a6-2e34-b9c8c497a7db,1413409400,9814830696809469731
+dd9b3a36-1203-d18c-ad1e-a34160e6c768,1802377210,17163998257072607182
+f0d52de2-cce2-eb66-248b-c280bd193784,4229902886,6559873389013471490
+26f26020-9c2a-1c8f-1bd5-157fa5489966,1884878595,15002623370325355743
+5e996faf-9ab3-82f1-4d5e-da2715f9587f,3131010876,3309862015831950694
+3bae4a31-1139-e341-c7c4-b84a80d291a9,3110335473,8390826940339556290
+f74aedc2-1826-9e34-f93b-4c801d33841f,2318680837,10633455403401015423
+2e8a734e-7b06-832b-5adb-a3da2c541a74,4256546074,10232583578757224181
+d204628c-3772-70f2-1609-4d56d7b7aca8,3909806748,6396229209672159407
+a7543340-9590-a52b-6bc2-9a1643cd50b4,3420798519,8283699763743255896
+e265db9d-66eb-1463-1b2a-4717bc640f51,2410579640,11880425163789669453
+e01d4a42-efbb-c181-c95d-8d5b6b062f01,1571351591,8298742149790253706
+7763ff84-6fb9-b59b-19fa-95aaae90a274,1945452694,3054522232190344623
+27d12217-c662-1800-e700-15a451ef20ec,1458253669,4511839081595185914
+fee3d31d-0dce-26a7-a71f-1130aad00d5b,3043893679,5292767305012515081
+233f5e3e-daf3-7060-24db-f8b6e0989f98,4140413565,7851513248195366208
+4527119d-cf8a-f5a7-52f3-58f5d24c03fb,4071685540,16623684528812668434
+703a2e93-fd6a-1652-b275-705fdb4888a8,3839852992,11826118030329846281
+2e475537-020f-72c9-593d-eaf48a025259,1133386190,5169701614836958263
+d2945186-5e6c-895b-3e16-2151508f1b88,2391496102,10870157945740695966
+efd31c52-96b7-6843-91d2-ff1b162b2215,170866922,17806142336369524323
+5943bd3b-d819-ab3c-c5f5-424ccdec812e,2970987192,6163409613280573626
+82f9dada-10cb-8ec5-0f80-8543ffc9b928,3815506886,18152498622780601836
+e0d7f983-bdb4-792f-64ac-4053a3537545,2861086500,17974428743903349307
+c95aa752-43be-fbc2-121d-9e30df47e839,1687533259,11547995298000216253
+7d8ec681-3a84-e7bd-eaaa-9bb1197889af,741053470,8047572690187514797
+5cfb6165-725c-caed-0814-1e3d7c1fa44f,2991510441,15946636732717350309
+9d694881-adc9-d653-ed4d-38358f5f9b6e,4095060151,16731607915840460816
+d62ce7b5-e947-bc4d-2580-7e16c10c3f20,1783356466,13460672472794867133
+481fd32f-a317-23b4-a1a9-a9e507dcb981,251665102,6211075077173241462
+8a9e65f6-9ff4-bee8-ecde-5c2a015bdb51,494181975,2337658221778153268
+45ba8238-9719-ec7c-a9f3-65de6f9ae75c,3431389864,4088810587378162330
+529f406a-e1c1-06fe-04ed-9d82cd295f42,3092835206,6632630176739556424
+465d9881-2e6a-2cd6-6695-9e4c063ed8c3,2177239889,13274894420177431973
+d7787a5c-d4de-79f8-d54e-fb165079b62f,3709534116,9139471437275582178
+8f0aa3aa-7e25-d9bd-a10d-2c78dd21ec84,941960643,8036712126327164517
+008ae948-802d-c1a9-093b-98707781fc66,2270140949,12302631823031075013
+da43709a-f1f3-39d3-b5ea-fd6f97b64e8a,2965742862,1074745754192072896
+77bca318-c87b-5d99-1cf4-c070d8a0f279,822828637,6976030626917448577
+414333e9-2023-cd9f-74c2-bfdfa9cf7ae4,3057020766,12904006074995433554
+02bf1317-8b15-24ef-22a0-4cb23858c5ce,4266049346,11885721802542893893
+57382c96-ed14-4577-cadd-01fd07a6e0ab,3147846359,3959727795830559826
+fc63077e-ed7c-7f15-c6fb-8d1970cc74a8,1323856163,7139652252889082450
+8c2fd024-4bcc-091c-d211-f890823c481e,427454769,10966243236756000034
+cfed157a-9dd2-24cd-9407-756d6b7e4a3d,2953640990,16960024733306066841
+44f24774-54ba-3c2c-b3b9-85af91264cd6,3199846504,4058203999734848553
+f85df442-4b77-5818-856b-9eea5054c8e0,1399951825,10127799584841179425
+0fd9215c-07e8-b569-190f-9e432185b122,540636752,18032249807605792185
+f3cc5d50-879e-0947-2510-32d5c0afca9a,3142179436,17857536846934653928
+0af46a77-1312-a822-cb4b-8093d9e32257,1727764700,16485874035449670526
+77402e18-8b17-d00c-3680-ec47a2daf80f,2334608820,1552973752482047394
+8a4be8b1-22eb-3ef1-30e4-f86f7441ef68,2871932922,5220248896512756076
+460da928-f70f-b679-8872-1afcc66209c7,1048111684,104055852620385232
+57b458a1-9e12-1746-7b9b-10a3acf23794,2105755192,1611622716341028822
+ea83b0c2-9009-4570-8560-21260c4b3800,2161079648,15141399580537651693
+61174bb4-323f-bc15-e02a-77528722ca87,1938288032,449950831363929053
+dbace056-3545-9f53-21fa-3fb25a21ad7c,2098938854,18276199580119657844
+4f187516-7829-196b-dada-5dee063a77fb,3123409179,11569214312196568077
+ae1aee7f-6ed0-b35f-622b-1536d413a9e5,210054444,1642989571076844132
+b3680992-ebbd-305a-5663-8e9b79d580c9,2737091850,6802987836683622556
+d70ef255-bb83-1998-e8f2-376fa8df203c,409903564,17160349831139420368
+b7012b8c-6295-abf1-51e5-5ee569750bb7,3334888058,5786720641356113087
+2dbb7a63-77ce-c311-5f42-8a4dbc4da34b,1707298394,5664569216432080521
+190264b0-fa27-76f1-9353-809fb809e6c0,3076795238,8231715943117907122
+f9496940-9df0-acd5-cc9f-197b561a1a40,3685194710,6217288893935840478
+fe348d79-c3be-8f6a-0e84-974701bb87a8,3993024258,12454191148372783825
+90d3f32a-beb3-e26f-c46e-1444bcf09db2,275782495,5868093750503471210
+fa44cbcf-4bd1-6688-def9-1ee3f7f2b4cd,148674600,9677716786288864939
+712ddd71-9a8c-8642-2ca8-1db62efa2dd5,1928654516,11822050588654678450
+52534744-6460-b2fe-dbeb-31d256921181,1153904143,14945277801423877510
+25c8e7da-3baa-dd99-7e0d-6257651fc9c6,3148308550,1937280557481386361
+17a23b31-b4fb-a088-9d66-58f4a90f58ad,2456214224,13350904361921896188
+95c1bae2-8917-27fe-3a95-d8150c325c14,3501371718,17136710874358960823
+59ac04de-0c15-cfbd-f88e-4bcdf6c5cf68,3987097186,650724860760183969
+df0ebe6b-c09a-36dc-f1dd-d1e80bcee2a9,1228929329,9876150493219405609
+f7585bbb-ab15-042c-adf4-db5b894ad290,2850809380,4564581672836265480
+c9f16ecc-12d5-8bc1-29a8-f8ea56cd3185,2099690688,7283568849299389069
+38f6342d-4f0b-da30-aca9-489783ac63e2,3912029794,13590001984306080478
+d0bb6558-d854-4ee7-3223-e438e0da90af,3901717789,1374074145442240642
+78273aef-8de4-5990-f415-99da6625f4c5,3589475939,2973164516185835896
+03b83c08-595e-749b-092d-f69fdf8d3e59,661051228,15246936409529751039
+01f7a3eb-1c44-4c9b-9604-1117e07d628b,3408951822,7222194808503803170
+888372c0-476d-f0af-6ce3-9f51e74d2759,1370764193,15395521550671085070
+fe8c91da-ad1c-df63-9b70-844dcbb14c70,3724279196,3178974546501138398
+7da990de-1560-d523-a4ef-5cc0e44f5749,3492664846,7527169443795554013
+c636ce5b-50bb-64ef-c337-09f9f858ae61,2963104141,11872928727058134903
+c2049744-c098-30a0-2812-6213e5854e96,2707217155,2138976853992808070
+a552ee08-b725-6104-ba38-f6c15bdec677,2286485546,13895909219212863560
+ff7061e0-734b-0bd8-07f4-cf6cfcaa8e43,3414831430,132297999154231776
+c20208d0-06f3-1826-5b9a-3de7ed520cf0,1981671204,9808968682779156328
+68859032-aa3f-9e96-df7a-6ecadff30804,1815270930,2116884649945434661
+38392959-e67d-a64a-a545-bbf114377e6a,802854500,9754092940439205417
+09edc323-927c-792d-b12c-5e8c6e09c722,55145811,11176981678091820571
+2da65229-8665-a816-4765-e74268628362,1027833032,17130188698165252006
+8dc4e252-c4ec-79d6-b8f3-5d189d5e7b8b,3232342401,4946776646521367136
+30f20dd9-7f93-775b-071d-3462c83843ba,1536597735,11929283271502820297
+532c3e68-7dc0-7832-2bff-8b86f959df41,472821219,17262327780188297427
+8e2220f1-efd6-a5a0-01f0-848deb7394fe,2703747803,6000903990333506048
+eaa6cc75-d20a-6ef3-4022-e8d40d69c6a1,2952182436,1623667327380590955
+aeb983b3-3b44-0e93-ad45-a5c33da09f44,3174544873,10028032228138582203
+9f876068-2811-5617-66b2-9444b9ed7fc7,3897457380,4941021255729924317
+b4ff2851-0c48-77d4-9b15-e2986ab73879,1527993801,6223515534348529870
+21c26a52-939c-bbfc-aef5-ef253b1576af,2677135869,2320261451419863555
+8f5f9c13-f929-d44e-d92a-ce0eddaf0e29,647589621,8649763071179760446
+b6544c41-9e8a-9ff8-f6ef-6a7332cc75d1,408751677,6985994660302794853
+d58d623c-ccf5-7b4d-cb0a-7a3a1aa5616b,3782627683,2023030164954054750
+990b584c-dd12-7861-9d4e-6666d2531d2b,1969716532,2073676372669606432
+257d0f82-db88-96e1-ee6a-a06c697f7dfa,2846125244,11429198176500181165
+35b38d56-2a95-4bfb-530c-24690d371502,195179255,17408631565269651651
+cea94256-6d27-3fe3-dfc2-042dd9ac51e2,154660115,12341015841205431805
+f9d4396d-de86-77df-6a20-286f8c5dcbe6,3766640136,2249697470267397809
+f21112d4-3e56-8ed9-7c04-ed9fb40c4511,1207461598,14050343948507549714
+df1d0dd1-ab8c-6b53-ef72-08bc4b85e088,971298407,1923373902608361088
+cd646db5-a177-2d39-b6a1-bff4b6fc4c0e,136621225,17079870773237008161
+959e403a-fce5-98de-c809-094a5e24962b,3562502750,17204090546676889581
+4f86eb84-7eab-a87a-af0d-dc76c1b9008e,2623784857,7591529373833707677
+febd5aba-9f69-1abc-f631-39be918a1f28,3751501007,18267383690720825784
+2a041a90-2cdc-1a3d-3963-78a6f01a53ef,1613699095,550451965420125451
+182e750f-1ee6-f4bf-c554-bc49256bc49a,831251879,17788587016546456712
+0ad3d539-0eb5-c61b-95e4-8a34834a4f72,1032109312,5083703333002564933
+55b5fd64-a797-49ad-654a-37f61f2e3d1c,4239864665,14657539979840063559
+287944a2-982d-1bba-2831-4e429893901c,2542124961,4984736420987472355
+bfd5333a-0c44-8cb0-5f2d-4a73c916e0a2,270830529,9867110118502488608
+332069b5-53c3-5f56-4d81-ce5064af357a,1796565782,18369139390261187673
+7caa7016-ab86-f7a6-b2ba-2f4c36bf38ba,3800963967,17822731470035135471
+bd580c05-6104-b026-e94a-4992156fd759,3385689631,315061311615385526
+03f9175a-e9d7-48d5-e738-4dba78d43edb,4016813388,12280237857997897869
+fb773907-4666-a995-8a61-bcee0a589d6b,2811956062,12507149293844990188
+9a9c59f1-631f-e380-d3ce-47e003429ee8,1164467136,16688285816358430583
+6bbb46a1-562d-e700-bf8a-b12ed0a41e9f,3000493196,9624352528044363879
+e8d011a1-d2f9-a583-9da5-2e62f95611e7,287833962,6464793890290920431
+2884cb8c-5b7f-c0d7-3421-307412b512cd,2251238296,7769657157098777065
+b01316e3-c49f-6fce-8e16-5dc1c88bd48d,3689134469,13946307182586156008
+3a1caf2a-9ad4-3df4-497a-07f6af21fff9,3349858760,8022326231045347100
+d9876c94-9ef3-f4ec-45e2-6e7998f2a2e9,3633508849,11501057325240931792
+d79b4612-52c1-999c-8107-9fa94e455341,2262925394,385361597019232173
+34d01655-2256-c23c-a7cb-dd33fc474924,3722639800,4434139689814573249
+595dde6a-bf49-13ff-f3c5-ca220d243ab6,1392615149,12175115755152089607
+3b483ce6-11be-d8f3-6b94-bd9c3aa38ed8,1504510072,14815807171741707474
+913f1eb6-f041-6b8f-5023-570806d7441f,907060321,15589042945456006342
+bd23a845-36e8-080c-1a60-8d019d82ec94,1881008613,8612858350660143126
+ecc8e0c1-d7f2-219e-000c-65b8d85a7c07,1720485388,2999563157661512213
+52e58270-3d01-0174-2907-89f150244dc6,371532015,628049910384446869
+82d085e4-8665-681c-dce1-bdb7397e60ad,2692648576,4840649133698411649
+27fd846b-c40c-ce0a-bea1-e6e40f6f457f,202950753,18326827740724479105
+02bb772b-5f39-38bb-5dcc-1b03ffff59cc,2269616802,17720573608514737763
+5a73afb8-23f6-fd8d-b719-8f3c5f65d9b7,3220268158,9713433958294453602
+720411ab-5a91-156f-ef6c-54ccc0c50f16,1040801850,16487886210266311490
+feb48f82-734b-13be-9006-59b72684f1ea,3820841297,9788954660202674299
+2b6f01b1-71d5-6faa-bab4-8d9bcb9904ce,2001514436,10207275643535408311
+ee7f8f1b-3c29-76c8-a07a-c9dcdaf69805,2906322406,6078881673557700884
+70493b2d-9e29-93d5-1d0e-cb76d0d60c58,988537979,15499238324616426183
+7b04fabe-db50-3ee5-141e-441efe026326,2178136160,9122296624949868050
+938b797a-213e-25eb-4af0-d486bea03f12,1093546360,16006727702126682387
+d51aa0be-95fc-5acb-d99a-2dd7a660548e,359957459,16954044383716390424
+858c7c16-5a59-cbde-5fce-4b410db93315,290719366,17420600575027887802
+43a73312-3e5d-bb31-9413-1f4a1a85c39c,2288427131,2129744974138145662
+185e4a05-acd6-5a42-c855-40e6d59f1ea8,4029712526,8350037963452330615
+8438d3a7-73cc-34f1-56d5-97e3e3f5767e,4204205256,15835190614466541958
+f488bd31-d97c-ff76-c1dd-8a381485cf12,1728972474,10188994979194598297
+ecb27a46-d321-d7c9-47cb-3e9bfe9900b1,15049846,5206830547203069755
+9c92b73a-ed85-aa54-3fa7-9e5c5f2063bf,1700270806,87990906195118047
+ab3f7ba9-9504-607b-602b-4dc80a689402,1323696340,16166969781945588530
+86839a61-3d5e-e4aa-5e9e-4de65d271dfe,3569802652,5054355084111639776
+55523fb9-ad73-30ec-e4a6-82c76e70c0ba,11770628,13603283683823368258
+6979e4a6-3a06-1a32-54e9-90b6277f3c8e,4067038980,6395662831287168755
+d4b8007d-fdd5-8ed7-e656-c9eda778e373,928688396,16427908069850075059
+3a7d695b-2344-cefc-d9f5-793d2974bd78,2452279235,14426397949113757596
+c85f1efe-8f91-7a4d-c493-73399c74b8bb,2157046986,5212626340649815451
+640abb83-7367-faa3-4d30-02ad47b2702f,3560065411,3131408107744481629
+cd9ea595-969e-ee4a-f812-1a7d46597e18,2552458809,12768547843710838953
+6237ac91-f845-1dcf-617f-30c8d84dd075,2808481110,10323562224179608978
+e9660611-0047-6310-26d9-b3c9a42b18b9,3448560333,4516815699332245871
+efbe159b-6f04-2a3d-01e5-3b7687063ee1,3071575178,3523240767647308608
+abd20ab2-b96a-d2fc-33a0-690b1f2e7f27,3186565239,10512880456997036139
+fedde097-5323-e09a-c21a-4b59b2f038b7,872082264,8115499422063118891
+7a58763d-86f0-6cd9-31d7-8a3df49de0cd,2844440604,13404350172907190840
+2908f2c5-ddc1-ce0e-aafd-c1ce94bab1c8,2077271532,8728439802933206783
+1d89add9-1ad4-2708-08e6-5b689bf4ccc9,2443704509,9607467547003425317
+bd6e3801-cd6f-5b80-715f-a8957a9c8253,2887588678,15736562870141928145
+e5e86c5f-3f88-a781-518a-abb6b5941d33,4271858118,17513779568055535619
+7a707ff1-93b0-2032-3ce0-544aaf72b66f,1641231153,10703763321487586641
+a5ff5248-56bd-d0aa-3ec9-3c274ea70537,2138882248,3883123191555356920
+4909b22e-2122-c540-02ac-681297108424,2203058665,10457895034480195463
+89d31a18-0ef6-79ec-e678-683ec9bef12e,1804432004,6424134078922898474
+e05dfb39-59ac-faaa-7a80-5c04d948ce53,1161648885,3201027344517085304
+c597a460-41d9-6d12-63dd-99e8083af612,498891724,5236242579604861328
+c38171f4-ba79-0e84-52a6-730c8d903447,2367636659,3667482263045105214
+c6c972e9-50ed-2a51-9b66-7117bae408d6,2648303085,12941782110935858824
+5d381c26-c679-cc18-51f6-961572b17a62,2082332075,7849097572282814461
+9af86146-b492-0716-95ae-5053c188aac7,3236232654,8060436215718187727
+159333db-ce57-aeb5-7c65-c09f58342a7b,2431221775,5004930639717476554
+e955dc0a-6541-5685-5b0b-515901a1ec00,1026722465,4391560633032476860
+617bf6a5-c111-d4bc-8454-109fec4c7a2e,426590761,3967849653943888554
+1c697387-b877-c0dd-b56e-5b40bd2bde68,347969438,8373213161091638554
+73b55c95-0991-dde5-e142-45a45233a6cc,1934630540,1012572525486819373
+6b875c4c-84f0-58df-808e-e68023544c98,581172542,16083707643306099402
+84fc33d6-400c-588e-39d7-b1e3369011d2,1565813141,7663043744693147685
+23695154-c5a3-667d-b50d-160705d062f7,2347745294,7874785036517056466
+055bc50a-19dd-a821-1813-58a2041d216e,1490901080,6296220592802472300
+9e083498-38e4-6f26-1e5e-75f932ffb826,1367274434,385855553309167433
+67005109-9c3f-fa06-1107-06d705f2dbe2,3610657911,12051982844650178027
+393704bd-fddd-0cb6-cdf3-a94cee8ff9fd,794953316,3977769252472110145
+51e36c33-1c97-688d-8681-999c4c99c6b0,1951811465,3853121121761542483
+ca838722-e4f0-5c7a-c628-be396c55627f,1244860816,17650502612329693521
+c469c93d-8238-4cb3-3736-29a3bce88f85,3985640650,13047511349228212599
+ae12d5c8-622b-faaa-335c-680206c84de7,116916262,6758028881261945146
+b5a3a5f8-6dd5-a612-1439-02a3d854fd28,848163656,2171960479375759665
+cb7a2961-d9b8-e9ec-cbdd-4735678be63e,811778498,8245008991714065107
+5405084e-a554-9c82-0dba-50be19fb68fe,2703998651,16204908778230407859
+06403cab-7bfb-9aed-37e0-b9af03581d8f,2894408042,2746885870547365696
+1263ce70-92db-2b6b-bc5e-95e4edd508f6,2139207270,16210218501891992433
+fedecfe0-80ff-4c7f-63aa-d95b13f57e96,3899064097,5723848616645346752
+731cebfe-949a-8d9e-b550-010d20ce8c9a,2131207624,8982351889541776606
+01abab65-6465-3b1c-3c5f-5d966f8219ef,1484703110,724553317724974607
+7bd5ec4c-464a-af3b-c2eb-b3f78f940263,342353741,3029255768910175811
+b81d5428-3f4c-7b75-e401-6d9b534d7046,520844286,4871857008415178180
+3c3aee7c-dc87-b6f3-bd2a-3a43dd2d6069,1778057592,10442013097152693106
+145c284b-d223-5e38-084f-f5b66d844705,4196645090,14317850247171875852
+eefd441a-f098-d118-47fe-17eb73e3b44a,2777642713,68046893445609336
+f539178f-b7de-477a-150c-f5bd391a67d7,1711874707,18182146501127415993
+7e9b8046-e028-6f09-8f8b-075aabec7557,540025312,18400869916260989572
+c807a076-6eab-a6b1-e77e-4ca96bf9cd72,3392769063,14817014532617365473
+f377f661-1481-c98f-e770-8526fed85eed,1816529967,13831922383175232733
+12e37302-7668-9a2a-a5c7-c8fae1b5f2f1,1921668730,218645698445524963
+b7e44797-9751-97f8-8884-d79ad34ac9a3,2335999274,12487722061762203634
+ede3fb82-9021-fc91-b233-c0d0748175b1,488991570,10501825692335338667
+5c5d2dfe-fd4c-34c5-b0aa-574230e2f246,844296524,5645158834112756964
+7d858a50-f9e9-83b6-ce96-75f0ab44e622,2309110066,8647305245056596835
+b548b87a-336f-1c21-d0fd-99aa61968bf2,3386944981,10167638826271950050
+4f73f133-b0a4-7b6e-bc4f-5209b7b58ecc,2041395574,3106359442310988780
+d8420182-8c71-2a45-1ece-d075976a97f8,1530732787,10667253094273981422
+d85ba100-3dd1-f3ca-e7db-826e46ee2ee1,2530755085,10118378959359472596
+75b579b0-1cd0-3940-b23a-aa079de08bc1,1405975261,9764503538641842997
+3b8aa62a-f39b-f5c3-0d81-04ef86aeb71a,1953535917,7819306725551201701
+d9ca83ba-890a-fc58-d6c6-c082eb58af1c,96888352,16982224334320516247
+19a0c88c-3142-aa42-f1b4-40bd81b6ba02,4118010694,9498819502673264161
+bfec57c0-bdda-e956-2059-20f7d052d1bc,1976780305,7864939622436272020
+a840169d-7dd1-5c04-6230-3917b1974df6,1366366982,9921236457994826339
+f9cc479a-28f3-86d6-ccf0-82ea89f931d1,403526982,9736271631560431456
+1e9311b1-a1ff-f990-d8cd-e4be7fd81bcb,2880991082,6877142158772473614
+ef9baaa3-af39-41c8-2e16-5ac742ce2d62,2205679456,18297817146198201398
+647cef5f-d98e-4b5e-4d83-06fbb54aa172,3357931050,454298491117668698
+ff62012d-10f1-120b-c694-9cdb71280e39,3966970683,10503146599169580612
+fcaff011-484f-cda3-a936-4d2a13cb47fe,1663749148,7158518352470981567
+c0b268f6-598e-ec72-eb77-b8bf916fcbdc,4240530420,17296770850335185681
+a39ae21f-d42f-8a4b-322a-59483142f928,607080233,4210837054932775806
+69be6fd4-cb41-c04b-d085-2af2fa28ca6a,1037848226,11749843816140904317
+a57c513e-9221-b8e3-c5df-cff4ebe88418,398084495,11890102961483391889
+5446f22d-d8c0-df2f-2e60-2c7a121da1ce,1789694446,4910575685760917370
+26443c36-4d20-0f21-40eb-68726cfd3379,537209468,16566172192451097892
+3010587d-89ca-2030-7ab6-f0dc72af9b6b,887491244,2801254064704532666
+f98e0043-2009-dc75-9e3d-3e5fb119e660,636963666,14361226277812533464
+b842ee81-f83d-0342-64c2-a91bf538ca4b,2654864573,14026380695543458829
+fe7a862d-90e5-9aa6-c143-12d2ded2338c,3580540330,8336991785585918215
+9a126cd2-15a1-8575-1efb-fd4bfe11d8ab,1468417916,7472764891968835036
+ed080e09-53f6-e12d-ad9a-300ca8a9aa2c,3588422464,13341557661202560203
+f0a33645-28e5-4101-db61-280b5965e59b,2355021575,2343130257320294315
+e1d37cb9-5b71-1120-f3cc-18969c481760,2106543287,13354110721495992209
+b32dd1b8-a7e7-90c9-44d1-fa48155f39c4,3779362602,1018262653431325550
+90f8a5ee-7dc5-69d7-021b-a1eadaf0aff4,3312507436,3079094152122254830
+a1f6c316-8a02-e39f-6ba4-56d9094595d5,3093078742,4794269312162291357
+64d84702-9bfe-ec8d-117e-a8c18eba5d52,270129991,9817351612031558510
+443ce5cc-c16a-5b07-17f8-96a1b9071bb1,413524845,3733168840219536671
+6b29901d-72e0-aa81-ee5d-da80f7f453c2,1697163739,14312081338912275255
+41442600-4e3e-3e94-3293-acda053c7f7d,2260717831,3716440790711967774
+ce57adfb-66b1-42a9-dcc0-96bb5344a6f2,143929448,10269020484964681419
+93551aec-c2a5-efb9-25f5-68b86e53bfde,3550270927,17460249700462491884
+403de5b0-f3cb-e7be-822a-b0894db0da04,1989916354,6305018456538147314
+c9f203e3-8468-8e03-0ce3-0b0d9ccc2c93,627930587,11245361396809446776
+771ef4f7-9850-a48d-2531-ef87f567ee6a,3556895189,5308000516420746632
+2270dee1-c4b8-38a7-cb48-7dbc7b4a2f33,3977944805,14505029582787492195
+ce71ca43-5f67-61df-759b-6f7a4198ac74,2695321027,11193590331222446634
+2db01b85-5206-e9ef-9e02-706b8cc78db8,461986738,11114914924782076596
+5ac9bd1f-e823-ec33-d514-e4cfb32deb3f,4235535499,14916333154247218685
+42c3bd68-a2f5-75af-8f36-0e4717e8d813,184001800,3064372029603502280
+bdc0da38-3b16-1208-f033-993e46e19d50,4270527607,15871974215646173481
+8df64ff5-10d0-eb43-dc8c-05e6dc2dbfaa,921166086,819201786844244214
+a8c75204-cdeb-c984-3055-28c7d1fa3366,1681412154,1489696596003940710
+00ee30fe-2932-5661-29e3-e6e47ce0a045,2963574618,3835931542573336703
+3df9b1ba-fd7a-2ca2-1609-5c5fa96db0b7,3894279546,10194322416224080036
+5dd40afe-d816-27fa-932d-a43662f12cc6,1429082766,13767638276713150495
+78c8c4e5-b7da-891c-caf5-f4ae0d7a2b68,2988830256,2431483280000944078
+2eeb6d13-875d-7c95-1eb5-85f44c9cb65b,1235313327,15572740666812146529
+828cc0fe-cb35-1d15-18a1-50a94e269eb0,3982770943,17321784658559983500
+581766be-5dd5-5cfa-0638-6d5f30a76436,259490019,10880538490519363007
+dddbc17a-9d2e-98bd-ecdc-dce3331f1549,974329738,11079116526874698519
+9c1924c1-b505-a6af-6b28-3918194af78d,2151168002,14947006917395694291
+67a6abe5-1863-0854-c0a3-fe280ad45fd9,1589519393,15659919020476258141
+b5418503-c057-268e-13a0-464ffe821ab1,3294832168,9506539671916230560
+92997996-6237-1e32-5f49-83274a62d9a8,2046277701,13951970505270670018
+7e5fd51b-09f1-03d5-9c12-9760d0a9457e,3484071466,6542079793430351932
+ca5b41ec-5651-bf5f-6207-dda893571cc2,1200849208,10798524472726908676
+cccfe08c-1c19-a046-e88c-ffcf2038c709,3585949589,14285468688447772896
+7f6a38a9-509c-6e82-918b-c8298f5cbdf9,1615539081,8298662561721127406
+cbb3a1c1-8573-9ad0-6492-7fbdd667f9b5,3437422786,11964028368459813099
+88c31435-e918-c196-ed43-aa9156e6eb0d,1614860360,10074097896575870640
+bfe5465f-951e-cd42-1f97-b36617df300a,268835149,3569663466956213063
+5222b6c0-a78e-c981-dc03-e3c7e61a602c,2591955375,13981336826542638268
+c8240f66-5594-e2c2-85ac-627c11170f59,279008031,12184773394988778300
+4ca8f801-eeed-b80f-37ad-11cba4b7a822,2857747519,1238273947826118394
+95aff0c7-c01b-7393-adf2-baba9a376d8f,3235456807,10312713280410597044
+d0c0d55c-1992-94c5-221a-6f81fe769478,507175204,8657643160111400479
+892e6726-1ade-a348-f1c2-aed38c313821,3402770187,11215656237722187575
+cfaa47a2-5038-ca22-9525-9f12db8a925f,3932572707,17792766213916027650
+ccee4c22-273f-7c00-b725-6bcbed414fb6,2897173161,9831250373200940032
+dbbec2c5-afce-8603-03f4-d3d0792d0afd,894695217,10482243697058806253
+34922895-615e-fbdf-2887-ec460481d5d3,2515198759,17730314827578013447
+d41c308e-9fc7-35d1-476b-d844d34ee8d5,2224889501,17365809839359149521
+c9fcb980-e107-3597-77ca-e91f8f123414,2366341024,13347030285260974177
+631aaac1-9c45-58ef-9946-953a22ab402f,1977040550,10322761945360524660
+43711dc9-48ee-7c2d-ad33-f605effe6715,654895867,402506783403345064
+eb1d5d8c-414c-d2e1-2011-ae7b6fdfef98,3362789180,6402200033017055933
+0139ed01-7f4f-eb94-7e03-0638490721a3,3421890675,8870784090309078198
+11ee1124-66f3-7084-5521-8a8660e0b4c2,77510383,10990661703629103070
+07b06742-9fbe-6181-57df-35ea5adf4d89,827166538,457236104725603669
+35e931dd-c91f-e7d7-8d6d-bf350eb48139,2570018955,3928815396119697469
+57f1fcc0-f3de-cb84-6d60-c04a4e752e30,2240460031,17245271749736691637
+41f1b601-22a6-da7a-27f6-2972eaff9430,13134646,7068064405994760861
+b8aac917-b619-edd5-952b-6fb6ac55ff79,1204740190,5057545117582453457
+9bfb60b5-c87a-4b18-340b-dee1da5c50d3,4235869074,11566291500382727999
+251acf3c-e53d-edbd-c565-d8ace7073a62,2168530212,14892278239102370383
+12e2cce6-af56-8365-ae01-af9df21fa39f,2505090112,7657399759962791665
+36b87a04-3420-c369-086d-608d5a271a43,39887291,6507397550877162201
+044cc8df-ef2c-5b39-e3b3-50aa9500d4d5,2036473131,1272479482060184129
+55e4a914-a1c7-8473-b50e-54b24de5a044,3961234839,17348489013639145038
+029fda39-817f-14c2-455d-3c9195df6836,3894959285,8238646527221546131
+ff892448-8cfa-9d88-4949-16e36d183331,2833077309,13910487032745946360
+ec12925f-87f8-08b1-f0bc-78a853a0c523,1051582823,13548679715225463519
+12c0a3d9-51f2-c84d-e2c4-819ad3d24977,3544570469,14462392263784193314
+6b43e197-d6e5-8e72-1711-5c2f9137189d,2315437091,18437272624217857045
+ef548533-f33f-4420-fe37-b026b074b30e,3717729383,10681516977593774610
+b6e9ce0d-c381-4ca4-299e-30addea424b1,648254125,12889309772249865146
+a41193e7-a5a6-bd5b-fd70-1559f1248c9f,1460778488,15067389376629245266
+432f7b28-8a48-11ae-3389-1e7e25387a64,2599212759,5514687231789602872
+1deb6e91-e088-ab21-6049-f25dc6c0460f,3532612693,790977773891533893
+ffcfba02-b723-c4a7-de77-d399dc1dba5d,4150321220,14350018990931854587
+b699ba63-a8c4-700c-2ced-acc617cbe092,1709137740,6174491315820137151
+24092932-45f1-6304-08fe-9c5bbc0c20a5,1292721141,11795319851060829264
+935737aa-377c-031e-af55-12b32f33aa9d,886694842,15042941911456538114
+85541170-7d4a-936d-e741-2ca686b45b37,441167302,16633615504720639626
+a0a3ce59-911e-348e-2b96-c25de75203b7,2499269240,18426442761882807364
+d5496f98-9219-0eab-3601-ce76775f448a,365886172,603174591775376026
+be155b64-a747-1dbb-fdba-46938ee94e8b,4031280088,523737955239049583
+6cd95fff-6648-00da-118f-c86c49d2a6f9,2464239360,9548083673494099998
+d73d0202-7527-2f40-0b2f-93e1392701e1,1197062898,17561116982280498741
+19a90635-9be7-c958-0ef8-b305058121db,1400357324,1948346728765508464
+a9777ace-0f08-48cd-c072-2969383e54c5,3987840988,15869166836775662903
+b4a99bd9-b730-6d74-ceb7-0fcd5bf37250,2314150923,15269137548138364521
+4d44ee0a-94fe-c171-5ace-6151363c9564,1157108510,9353498484748727004
+9a06075e-20bd-be28-1e55-d80f3037f516,278537925,12618112445850799222
+6853b6e3-5170-71cd-07ad-e61b0003abba,1623959315,6770429153407848254
+79a43315-47f7-ff97-5170-5427f2877ae1,4245592087,9038971215226841229
+e17ff7a3-9402-dae7-ba25-e48c70f75213,468183643,16402111234544558917
+bbfe0cb8-49ed-e6d8-56ad-b409b4a91168,1986167638,4395008112167102556
+e9f48157-7d8f-e37c-33ae-60d170024f71,3501360657,11813346403343513688
+3424fbee-9f71-c85e-3630-52bfa98bbb4e,184518582,13315232859709057929
+b56014f5-f2ad-35e6-9f39-bd88372869b4,4018229347,7433496666734899659
+789550ae-ba41-db92-79ea-221b315f0646,1882303256,12529967299320501432
+38fddd07-c253-1a50-bee4-ce48b357da5a,2618590007,278754628611065365
+76fc128f-7976-9225-6d00-21b7b524db05,2092820433,2422864003766705819
+fcaad1ec-01e1-2d19-7225-a6445e75cb8b,2739345038,7299949464869529880
+ad749e8a-cf9f-bdfc-8983-ec9c441b9e67,1436346058,3247977160207441811
+dad81249-d350-78b6-b909-5ec29fa2177c,154095122,1924707326980861190
+fc87b833-7a75-5572-f596-7e49c0550bd1,1132291762,14755608871509440459
+0446a78d-0013-2c36-fa44-5166b04c593d,1989237322,3508955938061221703
+8f8255b5-e459-d0a2-b860-8f6dc7b404bd,1331864865,11139825966337571663
+35db8c0c-7c24-c914-aca3-c67e3476bb93,149221552,11959335674288433326
+a24d2518-7448-c47b-1b4b-19d6bc65fbba,3842342185,11382944205843659420
+0c8ad246-9303-75ab-8668-0d92c9192dcf,3087174610,11804545552082033086
+29a48ab9-d10d-b1f4-ebde-c4e61d1692a5,1211739120,1158957895077771366
+7e687316-8e77-7a63-db59-5efca20f2918,580024545,3172376834327521387
+25dab18b-3372-6fc5-65be-e6c038c2b984,1871102804,12854222667004281285
+cc265d39-1abd-bc7d-7e5e-790dcb3f2eb6,2901566810,3633888050169125222
+896a1a18-4620-0fb0-a580-e9faea74b23b,1775115596,9702747260229910869
+0d342ffc-8c6c-d371-5bd0-82e19a79c357,2077310845,6811622077420100864
+16ba5df2-bb76-7ba3-3fd2-157783d21a42,1526723524,7786598537838375262
+a2f07112-2bfd-6c62-f72f-b473dec2587f,1657378354,1098072150958514732
+155816de-2d8a-5125-8e88-0687dec33d4f,2553880192,9931991612702444864
+5974c8ee-e5a9-2e34-08ca-bf3e9a39d543,2020152751,8919836353809751172
+92bd2030-cde6-3d6b-7638-71ad5ca862c2,3393230100,13752336194708029859
+d2f88b74-cb69-0787-e93c-0d1ea5defd89,597777447,17450820336908429023
+b1114f40-659e-e3d8-36fe-52bc1def7307,642611155,14571630796022631990
+d9d2fd8e-464c-4200-ba9e-c480e3c0fae5,112515409,16304469311495972599
+8f4f1fb7-b30f-d570-3a4a-aee92cf33230,742001321,5421009462979248025
+544e58cb-c2d9-2729-579c-975db7d3f1e3,1582645311,4448938204722294981
+1144c5ca-3d32-842b-6bd3-4cf1cf3cd71e,3266714596,16858303796673723001
+d448626a-0028-4d30-f255-63b4f4c84383,1194317737,18155469775604697651
+5d9035fb-ee49-3b11-7349-df25740858b1,1932975360,10789103032760009737
+fada879d-39be-a7f1-4166-d4a59ad5c768,2112240074,13138513409172001694
+f89db054-55e1-f127-5320-165f4c42f493,1386157053,10157849997136799192
+1201b51d-ec9f-13f0-e3dd-5cea7cd4a6f7,1641017846,4412651402305095697
+ba840c47-cb61-548e-60a0-b107103742e5,314342861,15326711035497011219
+7cc89075-edbb-24fc-b59b-0b967f3452d3,1177386924,2498414024092594802
+1c98cb82-ee7b-8714-7247-c989a29b3f63,2931087050,11272363978085333687
+edc5c1ec-7f0b-fb06-3c13-7e7649d7bab1,857410308,12923118344900903998
+09c09bfc-c57f-73be-c805-a1175dfc967d,2270046532,13454631273713354827
+f4f188d1-8507-7e3e-3cde-76f9f88416da,3430210534,13358985459266599159
+f9b5a6ea-2c78-69a0-59ec-a8ed2f538cb5,855666830,3126376573767614664
+e7994154-d23b-9242-4f1a-af7d71d111cb,3038555254,8683346909766730713
+013073c9-678f-3868-5195-95a7a7ed3005,4071177901,3220829095589604249
+b0d9747a-0274-cd2a-3340-064367f4701b,2261190187,16797308114222266258
+65943140-f993-61a1-083e-a9f94bb8ffc9,1223331189,1246322487671082564
+ccc1369a-701c-1580-12f3-704af2788897,951626516,5381353665930006588
+325485bb-47b2-cbdb-bbff-ef6232763757,1173934910,10956035586876574874
+ebdb656e-038c-1d44-a7b7-0779fad8ae51,3342728615,14250956209200787517
+d9afa999-c1b9-f8e5-c3b9-cdad03fbe476,3754781962,3150765887070786860
+23f2ab18-c6f9-8c26-6e2d-771977acb836,2467037426,15580269140729532320
+d1ae2c97-cceb-9250-d2a3-a4c42adcb763,300359104,7156175109898518878
+c71eb956-0f52-60d6-3d38-2aecfa1bacde,4168655415,9562911373136811251
+0d52a43f-28d2-b45d-1a72-cad5af08949f,3903755037,13698205317018418640
+7301e126-23b2-a168-2813-ad58c1b40b60,1471584596,6854325565406399614
+9144b6a5-b308-1ed8-d2c8-166c762b124f,3149493767,1100167602443901028
+42a1b6e9-5a0d-1aa5-f919-15fddef6773d,659470729,18417714764885053564
+e63da12d-f910-a895-c18f-396ff0630ac3,3153402246,10633384137631937551
+23484089-d2e3-1860-d3bd-0ffa4d41beeb,1849089614,1239060429179226988
+17b9df03-854e-808e-849d-d329911f3ce7,1355676791,12327432969742808999
+72c14335-075b-4dcd-bfa8-2738ad3623d0,3958751710,15376311698858512172
+7982d32e-860a-0579-71f8-647da937c7dd,2648853572,7505775685346883907
+54328b7c-fdef-4162-4ec6-a938e6aabbf9,2055562179,13077936651481867193
+c4ed73d8-3ef2-17c7-caab-7b6c88bc158a,1680069543,16159255754699968984
+7ae8d130-4fad-5d9f-4222-86d4e7aac7d6,794794608,16539337536858540404
+dee31712-421e-489c-b16d-9bf3b08cd6ca,3415692225,11191919103302916480
+71dd501c-2b73-7a7e-15f8-ead6e199a198,503200850,5564234946116245830
+d131e3dc-0c1d-1152-94bd-fe64d9bcf3ce,3901174076,3274943934752030036
+5b91af3b-66de-fa19-3e74-f1c1757ae37b,3097981848,9684869311381783812
+8c593e6a-b261-21e1-cef5-076142d73ae5,2785634280,2247644888386521468
+3e3d23fc-8976-a202-d4f2-270a2e64cd48,614261692,6594109773453206896
+9558dff7-8a71-6d1c-1d7a-65b77e9a9228,2203398896,9103504697365700353
+e08664da-f1ec-4825-7c1c-f7b262c3ab03,3489336071,12289053953785833309
+c83801d3-bd43-d830-fc15-a3ce3cae57d8,709829758,597230380877907843
+fc937ec0-2b1b-210d-6fc9-86dbcf45fbbe,2054735994,17257451681111482035
+0dcef867-8092-b11d-175f-26da164cb51e,1037351435,3131203000060561613
+20fcc2b8-07f4-69da-3927-69da6738e6f2,424760634,17591954494486142195
+9e31ecb5-da2e-620a-f7de-da0eed4bf4ab,2500577345,3534706149188069519
+b3ea89cb-798a-5544-e6be-3a5adf7a76c0,956832979,13746706986659535506
+c895c068-21b1-fcfb-f97a-0cff0a88c3d8,3282095936,1172028434531505352
+abc07536-f5a0-d85b-241d-25745b1197f6,4196530248,10148042654565257251
+34763725-0483-dfe5-b7b7-699fc9113752,450306189,2145639072784621474
+156a708a-a455-307f-a945-bdf981092c18,1466578872,781726530841767737
+1979de69-9dbd-0296-0640-d426df7ccb2d,1730542322,2703217314213025093
+05f18924-e7ab-1b41-3776-a59705057152,1338430804,5387691878627804368
+d6fc5544-317a-4a94-3223-2ffd0b6c0d69,149397341,9086626418123509315
+a0136557-d3d3-a45f-9514-423cad46b018,3843843917,14363250667054655633
+99eb751b-961f-4525-436a-0464cab758e8,3572655372,18223989941799281066
+016f8387-62b4-22b1-efdb-9499b03f32e7,4227178070,13943281291622382084
+f969eaa7-e7bd-a2ca-eae8-e5f1d1d4f192,3629799359,17613950939864610456
+af8dbc72-521f-8b01-8e25-a8e15a2cee30,2579641908,10935937279962655944
+542b28cf-62aa-e288-f1e2-553bf996c761,1742411785,12198558154595676073
+3a42c987-b71e-c9bd-49fe-266514eaa91d,805521464,2083640522134875965
+61512b96-312c-83a3-de2c-ed0108b10e39,1693591957,5287199336220129193
+060a8376-17c0-1751-52de-89299a12cc95,620601482,14975373427037115178
+1af50b8a-648e-727f-8aeb-7c1c14351b69,637483139,16270175483207353558
+e87bcde2-202c-7cc1-5ea5-c5757c645223,98252374,2314049624987737870
+66b35473-351d-2c2b-4a30-0a86914a6af9,3418339160,2173664702874536767
+c0c90238-f6ef-bc27-680d-c16bcfe0b286,3446352777,15946502380109485136
+820ffd00-487b-d01d-31e7-35c0964c0b11,2073421804,13960822838277149098
+73031cb0-074c-eb49-ce45-dae9012dcaeb,3356996760,17729226053473733520
+e1d936c1-146d-70b2-462e-005cbb5084f4,3772422382,11413601710846578281
+2c6e8188-136a-493e-64d9-899ec382fd73,833150943,6414438969669678461
+df34282a-6d32-4a00-e821-840e16746345,295146252,16820665419679512063
+38bdca3e-35c0-4eb9-8ae9-ce7884bde481,4229423294,10808127631038571430
+7f2ef486-b09b-645b-3f24-bd716e517af1,3876968978,13031199851978240009
+92c9e473-24d3-c2b0-4c74-46d4bb1d38ba,850002241,6929934706208213119
+41c929cc-76a7-c3e6-3129-527c7376d277,2072786558,1052167414899300882
+1bae3d75-4bfa-1fd5-5487-69f930ef38ff,2183495488,11188828565384369409
+afa07842-e97e-29e5-14a2-8f1b602dbdb4,1426799020,1968423602180505622
+2ff351e1-4796-2610-139a-a2a050c9d116,412562885,18345955645391587449
+dc824d8f-dfe7-5377-ba3d-7b7963ea5be6,1065591898,13281410425578705081
+c781df55-2f50-6ae0-ce48-d05c0cd1c5f5,4049108876,2839524558389012240
+0775e054-e2be-9659-3785-8792bd25584d,2375976458,11911008068198630948
+9ba7930e-9e19-7940-9c31-ff5b62d328ce,874855639,8638699496208438022
+8d13206c-fb9d-d999-a968-3e81dd315627,2590510307,15995302263425101642
+bf50f22d-d4a5-b9e3-9402-a74f27cd3000,1041491597,13597955923620835960
+9962572c-72ee-02df-81af-bfd82cd4a1f2,1037791908,16837428774770790835
+80a44c73-37a6-6c5d-cbdc-63682c53641a,2693926865,13202517263196012510
+8884dadf-eea6-e78a-a76c-920cba0537fc,244243167,4583969192044694011
+6169e626-6bba-4c80-5099-f7e4d28faa16,247334704,17173243313420014377
+47069599-92b6-5363-8252-cd04fe4bded8,2141742802,9414325864801077700
+5cb327b8-64bc-2329-8097-125b3ac75452,283512249,14901914600463810507
+a17931a0-5810-02ad-e929-69a58c2b917e,145812418,13370401511801575958
+7a70e5d6-e2fd-a5b0-8a62-80c361af8a4c,3250811637,15121873738976708236
+b646b838-595a-112c-7a7d-6c8566fe7ce2,2292586954,14316462293315694433
+ba42d00d-9764-9c58-5bcd-90d8958b5396,24755751,9280939362210677863
+3f8a10d8-640b-e4f2-8719-149f940d206c,1508038448,15706707624769146220
+82482859-95f1-b6eb-5777-70b7bb2cae20,718540969,10785902697029781202
+26c26206-4773-3370-da05-82234d2e9f5d,2616005187,13946044058161791542
+7e8737d7-abed-28e4-8fb1-dcb15c7482d6,3523489809,12147037838491307563
+39223429-4a08-e5e7-d64e-0590a646aa55,2570982068,6327657281483909451
+a4405894-711d-6237-2bba-a8c1a094fe97,1519518967,9972353982703793913
+816bb502-6ba7-c6a0-b90a-883ba4b1f47c,4193572038,9911227668204269244
+8f9135f7-2531-30aa-4894-a5967f55af1a,3812808385,5152266763864247120
+9367a130-c0fe-9c8d-4409-11d12a5153c2,2843391260,15465774447113439238
+c236cab8-7155-9dcc-9380-b61168c24814,3103700084,15529042793148080382
+1584da2d-f0b3-1be4-9f4e-ad526e2523f7,1041223765,11282670594727513720
+3a1bf44f-cb16-7105-bf61-412ce14aaeda,1503971008,14483789519679126741
+4c2417d3-408c-9566-e64b-7a9ea2476316,3248149106,8383396297348098153
+35b96fc2-b300-68f9-6640-a484d5bd43a1,3231603680,17834300768263440988
+baf4d081-3425-a064-a3bc-ec060768f529,3969059858,14141768410742407822
+c6efcab4-0657-fa61-713e-963c0577fa43,210250426,8005331574812132138
+742e4118-e046-42ea-747e-1b263cddc8dd,370631974,10956450371953181367
+812866a7-c36a-036a-19ac-40befdb96edb,1598721494,5296525756815347966
+312fe1b1-c6ff-fd68-5b78-f27d392f2a2f,4120584096,8383815882931009078
+7f19af50-c59f-3361-e9c0-a3ba006caa63,1761445445,14417942297617537612
+0b025bef-e492-f8ca-288b-68a71c8c7426,417331302,12125507258937695892
+d9ccad00-e2cb-4ade-b142-8eec6d3be3c7,4254837296,6403640050429343987
+b303cdf1-2d60-2d82-1246-6067ee71389f,854773129,7489798404459295133
+1c3ef396-1244-a157-45de-141490df7677,277829894,536801902791579234
+fa03e831-a430-3bff-977f-74da0a2b6436,127694070,4461172901251028499
+36edd725-9721-fe84-f863-62fae12448ef,3662699227,16271237254917624831
+7ee0f340-9121-d721-c7e3-0a4d6e00275a,2400139773,5495575877636096078
+e4ed9b2d-2317-adbd-3f41-d652e49b0ec6,998376390,9769022525009144250
+a32193aa-2858-fbc1-5c02-8a72ddf6ac78,3564770809,1536234061173179650
+4f0b9214-a5be-1e24-2251-5109eccb23f1,3710908877,4185524768219955366
+f2bcbdea-e8f2-f67c-d028-ac5a834223fa,2023563379,6015865965342305380
+607e7cdc-586a-3fa2-776a-e0afc6180ddc,3011069180,12813144426630716048
+c001ac32-22a3-a2a9-1ca2-923be8d0b094,1161389595,3135325704756518691
+52894eb3-f59f-d004-36d5-b72844bd5f20,33420291,4753628225381830814
+80f4f63d-33d9-86b4-59e0-5fc788ed4f17,890793727,11293947633206378408
+ccd1394b-57a1-8866-dff6-2a1aee1b6a18,3493979455,8756422131402686391
+9d663d27-176e-fb63-32dd-1d3d9127ce37,3861396400,17352240852129450764
+d452bf6d-6e79-e0b3-ee75-20c049c613b6,2260340731,7000231949218833405
+f79ec6e9-5dc9-b99b-80ee-0b250369702a,2549409149,16167975267172476660
+693f9883-7017-dcc5-0999-09cb0e8bd588,3175540162,11548079451160303240
+a24f99ed-8672-2b4f-0a4b-d4bbe744077b,4063737462,10004476685265416752
+c19c988d-61d3-727e-f600-97146c022335,2210410931,5870968154098087306
+9206209a-148f-36ed-79f4-bd9dc736e155,1339655215,17766604342361078524
+e5d34f6a-7476-94a2-981f-d35fff6f4537,398137818,18035856224554428851
+1b069f0e-45d4-e42b-eec6-4c01a061affa,1766560929,6231500139932401578
+916bd1c0-4170-79e8-55f6-75e5dc3ecfe3,3074066734,1007902994719989616
+7199f4d4-fe11-d409-fd0d-53d5a7b3ff4f,1980925786,4906166692133087131
+09c8858f-136a-9b55-b577-cbd80e83c2f8,972241157,8362571888908955266
+b144a52a-0eeb-7816-d03a-d7e12c175f03,2040151099,2410561977308028838
+cd6fe6f4-8f55-c7a9-f1ac-76a3497abcdd,3994157710,10734851405816309551
+fdd522af-32d8-1b56-cd97-79fb1cde0e70,2882597624,10861463265620139984
+c14cadfa-3288-bb40-eab9-359d367b39b4,2412149217,7323108517447216482
+40fca137-f9ae-7350-8793-c8fd6da1c593,1013591389,16621586212055024563
+b19e2823-3570-92b2-63d7-c32637aea58b,3914345772,12376243735785600048
+4df46c64-d8fb-a931-ce08-e2ca238f2479,164681611,2288973142121037453
+5ffa8b05-e0f3-7c48-a301-20fa94740df3,525501203,18148243572135163956
+21019f49-6d44-12d8-da44-149c816a4cb6,2858706759,13082918741893256188
+ffb63c24-b8b8-e394-42be-342408f966ba,232834202,5383679089024002953
+960b35db-bffb-40ef-d105-392f0c285d3b,3010914136,2015742205302333158
+44572633-69c5-afee-7ff8-c098153dbcb6,4000630280,9377850519289810293
+474c01a9-e24a-64ee-3c7f-86b3f8ed12f2,3743461046,9318704508148170119
+e0f7e820-f63b-1c32-9d91-14de45ca18e3,750225421,5575586895367384380
+831ee918-cb0e-5b15-63b6-f7e833d1145d,1095498299,9313959285377666540
+72abeae6-f973-f84e-1173-23ce4d5c6384,603029538,6999442697906388831
+b2e8f709-7114-189a-a10d-e4f315025d0e,1174186837,12222241922212690934
+3ca5a2ab-ed88-5464-8aad-1e5584410c2b,2790053973,3397483661488135576
+cf7165d5-a9a2-1540-c830-1fe25943d726,342334911,15022604477316505149
+d7b44682-09c9-8314-058e-a3b0d31c291c,3923217345,11983431589485722820
+916f2ff7-21d4-d25d-f963-6f2bda6e6f33,1858187376,5247973864977972831
+c0fc4cd0-308c-090b-f3fa-c213559bb499,3197544580,6154896299465082352
+3d1565be-25b9-550a-d051-57be20a67647,1937603514,13994581330186089049
+8cf71507-c80d-cdfc-9f44-e984e9bff03c,1728945803,10950983504219615707
+d83782e9-9153-4093-4a99-01349283c053,1532271526,10951328960504576163
+e29c85be-c453-2853-5e10-74a0429b10e9,1134382223,1126073305259156637
+0b38279b-966a-6382-b9f9-dfb8890c4fb8,3970036360,17858980816548776815
+e6b778e6-8cc0-609a-d0f8-d419cfbd65b8,764107747,5568477313956857085
+80bc8d3f-5231-c82b-7570-f087ee94be5b,1870849642,13342843660215712010
+1373596f-2d23-e01b-ee69-e73aa94823f2,3679093167,17352227043794685911
+6f2e7aa8-2fa3-b8d0-04d3-133b7b868884,3687750474,13608489517354674520
+51a58c05-b7b3-170b-c539-b3d736a6a168,764459129,6265467406130251915
+7f80f6fe-53c8-9ed4-76b1-b3a1e5fd1ca5,1385947279,10268311422330693698
+e7b18a37-ba8d-f0e0-cf66-019f3bb5111a,4157325066,8832466896096707845
+7691068d-551e-567c-641d-7d307694b736,3902913286,2557629221116007540
+1db27dbd-8094-694f-5620-2b1948258d8e,808857365,3159749961426254043
+1abdbf27-6182-378e-c31c-5b1b8cdf59ca,2864074119,1722878505095858225
+46565409-54fb-d15e-b2a4-4cc587e1f9a6,1876184416,9701605273562793463
+a9a400f8-13c7-3673-5383-41f443b5c424,1839202021,17704990016885958415
+4cb32b53-7fed-4bd3-a8ac-2b08a4a1f8e9,1084327352,3965261797604069409
+2ecbdee1-75cf-189c-c0b4-9e546c068a09,3456369263,13393261517335602309
+8e0acabc-2320-06f7-52b6-6051b0e6b18f,843501406,11028662227409929963
+83c015c5-076d-9223-d52a-c0d73626a4c8,802355677,15038333531464650208
+3b69d95d-5b8d-2e09-97f8-e36021975cb3,3473310253,16087616975299272992
+dc22e26c-1361-068e-342f-9c1d87e9f47a,2162374046,13481059420923351943
+bfc3ec1e-9b18-7470-d6b7-b57271731a26,3157619907,3436799789300312097
+bc1826b0-757f-1fe5-ebc2-da2b2f62567d,3741554647,14685191934751814073
+6bbff6e1-d6ef-d6c9-7bb6-dac0049ca91c,2150600881,7233201193737885915
+260c2f6e-f5fe-a1d3-8769-dfc3099a49c0,2321802352,5911345312196520425
+6f0650da-bbd5-83a2-2267-3443a9c1b620,575459724,10588594161749397991
+babb3a02-1382-4c24-066e-4688202d2320,2439009770,817698055700777478
+59171c7f-d5c1-96a9-588d-0810cd80d989,1271224131,446918406032593329
+2f34502f-a452-566b-6a16-f694c6ae3332,954191206,1541889537000910697
+a46a4fb1-f7c0-d188-dca5-2fbde609ef47,2655862608,2562889510727122111
+f85e2198-e68f-115b-fd6f-d8b49ce48855,3838041813,13397122791898775541
+91b6a4a3-7ff9-fef8-d570-da529ac87cf9,1923171546,2131007040831737937
+b1de69e5-e261-0ce1-d454-958b034ffc36,2180610997,16038522492571529616
+cb37b099-5868-46b6-5af4-a567aece4cbd,732607545,18228412745575634819
+7a646c24-d0ec-e318-abce-3a606bb24fe2,3772868492,4871817481470509489
+b4e93a10-fe0a-6312-ca65-b4a754021092,3541194552,13927457931968784808
+600d6a0f-9710-5215-2677-9986856152a5,1988974506,3951905750836652488
+c20c610a-5772-5be2-ed82-3fdbc931387e,3468884137,13807208989174984144
+f8010cdd-2cc5-f24e-d7d5-c147c33a66ad,2747514265,9011933136680399887
+e9769e21-fd8e-2f9b-dd6c-850784e74753,921862488,9615311263051794743
+490204f3-b6c4-2edb-2b33-1ced13ee0c58,846635368,106501775984889483
+aaf22a36-5e57-14a8-9a4f-ccc7548362a8,1961177985,4117476933190956002
+6ba68647-8e09-6476-13d1-9ff8229892bd,1858617696,17557646328958841435
+3589aafe-feca-0249-73d7-a031e2d521a2,3620084896,13268143092224291836
+8b788abb-d084-61f5-9226-e284783f8cbd,3103787367,12197366525590941304
+83c78ce5-d97d-1938-dcda-083e31355c91,1190083112,15308693808587478974
+7f33383c-3c56-604c-8fa7-7aeb3cc7263c,197773514,2974339669944656923
+d9e263f0-dfce-6411-47d0-45606b092aa0,2428984185,12818566252397792804
+6c076a5d-6d1d-0989-060e-c477df323288,714144952,17222555755813155875
+4799289d-026c-732a-61cf-a7838ee92b59,2662997277,3581166395265921116
+b9eb495b-f725-a4a2-a202-b228282465fe,3837900555,10301804690085245348
+f0d957d6-b5ef-b71e-48ac-debb62ec1d80,4231908372,10571153554325569587
+7906f86c-1b6f-3f68-1f89-cd64ac70be35,3409909178,11727102372818182927
+ad0837c8-d47f-2d0e-74ee-582cfad9b591,13020499,10943008251419599746
+cc583d32-99d8-99f4-de2e-634cc7f62df1,3763164256,12294682593149328166
+ca872535-d02d-6e88-ce26-37b69fb7f7ec,727097696,13292625389066321939
+9665525c-8293-f7f3-4b4d-605baa95e829,3008546535,6437075214960069093
+86fb19c8-7533-5ca3-289f-3f6398a5b731,1957389208,14816863213081797149
+42a02f4e-bfaf-cb70-9134-ce6e87bb0298,512907547,11953934937433373122
+a2a1281d-510b-cc17-dd75-32fa2c82f4d2,1417603376,7960181686775599877
+f0c0dcea-c0ba-76a7-b06c-89da93380194,1889130410,3787253895197259964
+40c15fed-c138-edc9-0ab9-26754d3577c6,3073749536,7015868912023734328
+818b07d5-7110-d226-3d45-1d1478f2b297,4019451504,17402396018461060550
+d4d2fb17-6b9e-c321-3f1e-9ca997e9c09f,2074432061,16835688159291039715
+4cc13a5c-bf78-5c39-6f6f-7b55c3af7248,1360692112,30418016540310552
+e02d75e4-dda3-3e38-58fd-970507f618c8,414441192,9055532317115457890
+40e2fdd1-a217-2041-81f3-5fee19f28b9b,277858258,7015043077048359250
+aa2ce7cc-405c-dffb-373a-c562ae9db266,697129708,8316019069524647247
+bf896b9a-61a2-2d1a-f87b-f274c011b441,2000715121,7268702407655108282
+eea28fb4-b6e1-734f-2397-2814c8c465bf,3110226174,11661260885673383707
+5b3be553-0c32-7ecc-07c7-9bd9cfd60a2d,689836821,10981414280380821330
+8b1710a2-5c3f-9171-8be6-fcc8d6794e52,522122895,3997352518319754892
+1a582179-dc58-7db4-c86d-158ece78b1fb,1115595762,18413267844772376064
+fe73c120-7757-1d40-06dc-5b2c00bcd640,905256042,3011862742781700432
+51fd49c7-08f2-ada9-92bb-ab78569fffb5,82803640,4093074392721472066
+c91b6c1c-0c94-f132-6e3b-a96115617f0e,1880021129,2129404354372526402
+ce91e308-9846-3527-85c8-cd337b30946a,2163604082,17297520420334110893
+9dcb70db-c457-af00-38ca-ea45e7d39c3a,3183094728,6292408204939582604
+11fb65a1-5544-492e-e8f8-a4b87d9b3524,987678609,9219065372013252437
+d8435433-6207-eb66-8fd5-7a0d6a495a53,3380019937,16461898078559654207
+a35743b2-486e-e959-d6fe-8d2d3da64e5d,640543629,17201082495714783850
+8f9ddb19-f34f-b6dc-342d-2543f25633a1,2857642259,5936369409996773760
+484667e1-1274-f0c2-2896-8169ff57c8aa,4110156903,11203999313710415998
+3c4a3f59-ed88-4cf4-2286-86c4f9bf387d,2798844020,7331752529072819954
+7d57b25d-b9ee-ec8d-8362-149cda69c29e,3164644138,3529206596557293874
+26c0294b-34bf-19c0-f0a2-3071f4afd1e3,3489249231,9616620347197021285
+60bb24d1-c0de-fc9e-966b-e67ceb1d94d7,214523260,11611004384069387317
+10e90a30-edd0-f7dc-a955-320d8d4e73e1,2612734053,8950683009435593449
+b0e31de5-3434-5feb-9343-1f85c81a609e,3898234034,13587474994750665803
+1e6dad6b-ee4d-86d9-0272-377217f00225,1060867700,8058445355317648242
+bcb4780f-ef79-2de9-34d9-1b1ed418f906,4109035331,2090686993885390827
+a2884324-e488-7d95-bdff-6fd2663ed4b1,2507356405,11019828939564362161
+80c72457-97f4-a9c2-c6aa-e599300ef7a4,732025969,8565676346145170742
+1c6e02fd-101e-9b11-eb55-a8aa74e4ca90,3909155462,17912234887020357273
+cc3cd828-c610-d500-9ec0-ad8679adf06e,30713122,6211402352331986344
+e541f2a1-09ce-8b46-76ea-3521b1f3dff8,1044247687,14875527085897227669
+64d6aba1-28af-7ada-6455-41ba6a052a2c,409189714,14292939661480498117
+23b48cd4-6280-bebf-3a82-66895ea7568b,3089763313,13589971813076273257
+7c8f6440-4945-041a-7b7d-f9db72f1a238,422985912,16833674275443828912
+2a9dd590-153f-070a-5426-0657f777b7a3,18152715,11170618903788502122
+f9fb9abd-231d-f281-eb03-7f2b525e3d92,1747527629,15612816670313429307
+fb1d2d5f-9cd9-f4f9-3d45-6c88932820b9,2042626500,13050803229854723537
+72d5d5ce-14c2-5777-73cb-ab6f699bf31c,1222214115,7419555962195591798
+a02110af-51d4-42f2-ff66-16150f613ba2,3565625383,11702138330904211920
+1c982f83-a353-711a-5113-32d5e0969b76,1045231685,3360819555526604539
+69a05b27-fe3c-3273-9101-c58fdae123bf,1900439948,6357513013109592161
+de5c5635-c6ea-81da-dfda-cf0a5977fbc8,320748114,9840105032647222700
+a004936e-03f0-b149-62a6-5f49f1660c6d,3686633580,12220285356781714585
+c9c2756a-414a-b344-808f-bfc3330f7dc4,2998973077,184620474161593623
+ea97089d-9d53-787c-e202-71cccbe4522b,1287570927,15099855814020890104
+b33a617e-9fbc-dad2-2d9d-a7cda560784f,198727014,14924089012874824115
+cca57a80-22aa-fb3a-a51b-e11ab75941ba,2316559436,1950155750228826706
+19730da0-fab9-fff1-061c-3d4449ff153b,2488647800,10684106567923196119
+445586ea-924c-9736-d526-ec4d0aa5c152,195206281,12246646956180043325
+e70d0c1d-bd9d-9f13-9cdd-e15d46c7d6a2,1005797208,15636442963614651174
+38699c79-40af-fa51-d85e-f7cacdf76a96,3302097609,902798466429121451
+8a272e7f-66b2-fa1a-5906-67fff4f8efe5,648774137,3957508642178473951
+9d32abd7-afc6-53af-684a-d45a364153d5,887609401,7739327870112568608
+b178210e-549f-9418-2ae3-e5fe2001be6a,593662360,9038438945384387048
+2e2c2b47-23f1-264b-1844-4a284443a722,2672613071,11078738597762596493
+f7588a3f-0fae-1a5d-0568-d45dc3aa84f4,2607157518,8129704852171120672
+b3fce815-73ce-9673-4fd9-e40f0df26cdc,3604627776,480608209918747789
+eb306ec6-c030-f211-4ef3-ebcad03da267,2473497771,9852710416005612427
+5a6de97c-fe27-81f3-9bc8-c5c042eb8824,3199744347,17611053431997730182
+e02fafa4-209c-4097-870e-12acdd89c10c,1673988723,12224825397952503727
+b14dc0bc-d101-a463-d722-b18485e64f22,1512413325,14196889684344554134
+082aebcf-a0bb-30b8-427d-f9b6fa3ebf47,3203991430,16281955007051993037
+2679b868-0768-74f3-d740-3928dad649c7,384023593,8102572478471913734
+06985098-21c0-6226-4439-941f672d919c,165722143,4176891558562049474
+63931a67-e159-38ac-2b63-3b19e7a83ed3,674238813,9934549594817311502
+ab287b1e-4656-b326-a2ca-2be4be5014ef,1069128455,1745774030459883969
+d6f90b25-766f-34d8-3ae7-cfa512345642,3630481264,1380009648775180522
+9ba88cfd-852c-d937-7bda-65d950167e4e,783201247,4159274869128129216
+3a13399c-42a6-d7db-b668-0a26f9cb6a70,3593512664,1731220440517657984
+8a9bccc3-635e-9bc7-514e-24c55ecd856f,637427151,5400447209103436244
+a520430d-8d03-b2be-3449-23a2df56e868,3732232286,8442906101033306622
+99edb190-70f8-2d45-3123-d71cdc191e86,1782594762,15145954344001838826
+01d915b2-4032-7986-e59c-152fe7621b90,499505285,6413300529548205314
+4a1f704b-f21e-0592-2d8f-4c14aff369a0,2296124456,16295147213260588849
+85f608bb-ea76-44ea-7f68-d16a0fb0f155,1149582924,15844324237222040302
+2f3989cd-e841-f156-9b78-c273739e3bdf,3844293506,11524484456192416815
+e0c31cdc-b68f-83cc-c082-d8142cb0d287,2055454696,11391610074220820196
+8afdc5c1-35fd-1a02-ef27-3b6afed58be6,3284379039,5244080426114845828
+0d166c71-ae28-fcd9-ec21-f94616f6d1f9,316205678,7738756576412427404
+d8d215e7-4e73-f744-05a1-a61cb4297e6b,802060893,4438132684889605195
+2998d738-1fbb-8f0b-54b8-b21d6227825d,947142909,17577068868800159709
+03d36377-d019-b21d-b601-6201729b96b0,521271027,3732235265701404064
+74b2dfd2-1dad-8261-d3be-35f045aff672,1182707808,15170449837913967732
+f4687625-d9db-7fed-7e42-898450413c47,1681337748,8909017590847598877
+a7980d9a-2982-c79d-ed41-dbdf325dc297,1890977710,6421881016301613652
+c448e8bd-206f-a775-2eba-44be65946de6,2141331700,6164673662696309476
+2ebc6182-8171-86dc-9769-c6f2b3e555e8,3615608268,13833144333306108079
+9dd3f6da-a00d-574d-f50d-8f61941fa720,3139969477,9901548133874252426
+291c022c-70d7-acb0-cccc-fa171756ffaf,2244010080,11447307834143506470
+da057719-af13-94a4-f6dc-681c459b306c,4121784267,14290434390461871506
+9391fb41-e30a-166d-639b-7954a197e14b,2418921054,17516606535131229614
+fe4b53ac-bf8d-1a8a-a9a5-6f9129741d1d,3871031847,16768801612304067559
+ff549c68-3847-78b1-4a85-483951f473ef,1966230706,6331622883820883509
+bd19cc0e-c1a0-b01d-339e-902adf56c064,3000338763,2330345951369015222
+930f9d55-de33-727b-884b-21d4b2bae549,1009887359,11573316677242076818
+453efc27-2469-2738-34ea-bc8c9107eac0,3019038051,87436995126665850
+221f9d73-48eb-665f-815e-e6e5c404ae3a,2792288542,481954373220836846
+58ad0da0-dc54-3f04-87c9-c41f98866571,3334860611,17003771531578156770
+8e24463b-def5-63f0-4606-712a7b7c385b,1605997274,12052799579938870952
+5f3e7643-ae91-683f-fab9-4c10de7e8a7c,347285460,18293703222813208544
+2b57045a-c054-45b1-5370-5d61c4007cdc,2207801757,16489055662327733814
+a574850a-bb28-e964-ebdf-dde224670671,4181960265,785604511077153208
+6285fa10-ed02-dca6-3a00-4d79f2f32ddf,2485620382,18273391065643372176
+a2defbc6-1a60-d503-0b98-8edf9ae3f74e,3708241316,17022230577072114766
+8c00a328-aae2-f075-2398-64abbfe04243,477612818,4962480478157898966
+0876d1a7-3107-4c8c-6fa3-eb48e817c429,3420927401,13892207736828926037
+d2dfa3fb-4784-db76-5dae-cd6df1300de6,2220354770,6931786069423819634
+f8525f2a-37f8-08b1-3a9a-33ff06b2c74f,1599397252,1293773602130797035
+e08b9d80-392b-fcb4-b774-903ecf2c8e74,3472553504,4643843490533800179
+91e513a9-0b73-960f-1022-a403ec918362,4145025184,17231517648421898302
+35589ac9-b761-c82c-e632-dda7a645532e,2060424410,5938853152161427964
+ef386034-3984-4d0e-f22a-a6b36743c080,3994884367,17078431954650583686
+2edd119a-5a05-577c-2a1d-3f9b554b92ed,4115517645,15942035726581189254
+b5daca1e-3171-5ae9-6a1a-f4c69c02eae5,2584975545,6168556407192897180
+399fdbfd-3de0-1b7c-398e-03646d8ee4c8,321014714,8471861424812571930
+3cef0cd4-6742-a665-7f8c-c34122809e89,3330529655,5157811279494858499
+d0a7caa5-0f5b-dff6-5435-7902c341ed7d,870526571,10796269717514255088
+946861dd-62b1-22be-f050-94f61ca2ef54,2559915149,5008890889495527109
+004597ae-b5a0-6c86-4a16-fb274bf24b99,166234229,9165350837766859973
+8c9fb451-93b9-3c76-d3fb-331a6358c5ee,2675203264,2032482506843924112
+caeb11a8-f848-d7ba-043f-fe41a755c9e1,4035803246,4727492897284159022
+00a01691-1d00-ec5c-6410-ddc12591a6b9,1212257644,17542480228014208596
+852f46a5-0dd7-5f70-63c0-fd8145f9b3aa,2588888697,13263606136075188811
+3d2ffa14-5ae5-7460-09a4-74c690776f6e,3274399527,8091490882645788403
+d02eb7ee-2a57-6f4b-6174-d722eefc4fa9,1797490737,7268575216032913719
+14444222-53ee-e426-7884-139972c1acc2,2682837146,10655878394759060192
+1dfb96ff-55c7-271b-cf70-f9a7dfe479e8,4075733072,16419246634817835218
+90d510bd-92cc-b39b-f667-2503ae28d9a5,3132530125,7991848006232150319
+284da435-46c4-8631-dc53-fd68501923b4,860337791,4428341118512031283
+fdf77032-4959-2102-3c04-4d7355cf696a,832011154,7568802369817728528
+bfec7d30-7e00-ecc2-944e-90889de32f7a,1263280851,370935751304998589
+8e61edc0-6cff-40fb-dcfd-c7508a458b9f,605835210,9961794285866398317
+36cad546-2b57-faff-c88c-53a846e1923e,78777873,640512435726327400
+555d80c2-bc18-a9dc-26e9-69fc7e106d10,909285783,4067073852524537289
+46e81697-f5f1-2f00-1125-9eef2441d8eb,3680176731,11704848201016348637
+10d7e86a-43d6-7017-f225-7a4d2809da72,2359838144,13242231992799724361
+09f454d8-841a-b26e-0a97-9d2e02a34b28,1863415447,3386975773571575328
+a0a95dab-fd94-a926-962d-a275fadfbe18,2084795065,10101432891037623353
+83d268e7-3b6e-4bd4-62ba-e689c59d7b4b,879230990,16412701297368935977
+748c7dd3-5e61-90a7-2dcd-6326ee688f82,1649351746,5347223517970896668
+f1616564-745f-280e-3361-1e9f29716bad,693285709,1054711670345788036
+f5fa7b12-9c12-5b75-bf18-fe5088521376,3103887688,16869628421175467781
+6af1e737-c764-f21e-c6f7-a8fdd906184c,3013654897,11589627198050411511
+d4d30a09-9fc0-2588-2b1a-31fbafdace86,2694132423,4657138848814444699
+d9f73a49-d08e-8249-8098-ca6c26e484aa,38435414,11834637868187990917
+9130eeb7-fe5f-4518-c50d-5a14ba630533,262372121,3845135513719121233
+5c23c7ff-c4de-22eb-b71b-aadea6e2ec1b,3253229637,2767557885691934234
+d183f21c-75c3-c24c-08f9-4ad27710a1ec,4257822929,16654851918851417559
+a660270a-5bf8-4f1f-2db7-9c2570a8c248,4062525144,3489411680671113178
+bfd9c87f-c235-44f6-6c52-9b6ecb8669e9,723228795,2002703674277988505
+c415036d-df1c-6dd8-ddbc-dc0a3fc7ee21,3610903814,1738572775328171525
+cc2e9571-2a16-6602-26c8-fd44fcfd9541,1932044174,1767656088375788299
+7dd351f5-0dcc-821c-20fa-5fe86cc53a78,2076680195,3653894636300157171
+c891d679-a523-4b2e-ebf5-daa0072f2394,3838791068,827395376681228722
+db0afcdd-6787-f5eb-313d-ec72a7c173ce,1820871765,11881778268492869555
+06e93ee0-04f3-de3c-cb5f-f016a41a25c8,2069161086,10739387375616698748
+fc6e7c06-b195-68a1-68f9-622fdc0ab0d4,4167846376,188046457148235967
+9ede9d77-5a01-2c5a-f9f4-5270ddbe0b35,570455454,17637719361573605698
+defbb55a-ad66-df35-8d04-277a824a8001,2252039925,16225200048198595121
+8f9d484b-261a-5c43-26c5-d4c62098621a,2569359225,8283625060702939911
+b0c8b565-d5ed-dc7a-36cc-16c15aa1c2db,3416318738,423194832056637517
+5470fe56-6fac-f37c-fead-6882cba5c331,892593801,11548843632078940803
+e81c0364-363f-7e31-ab6d-d183a75934df,777350032,3950564426364317322
+a831dad7-35d9-6e34-c95b-b89e65157751,2903585101,13105507793152410316
+6cd162f5-244b-e398-c4e1-b52f47ef3fe8,1994144248,4204995074759619761
+0503fcc0-268d-a4ea-c152-ab3e5a1a8588,1797663341,13179491412194863737
+086a59ac-df99-24e1-3ece-df8afdc57966,2426035814,1854428036505754119
+13c31f70-5619-3d52-1479-5cfc1bfbb499,2001083898,15945939630192410181
+3673fc1c-a3d3-203a-27e4-6510c8cf509d,4061321740,17034773627481987008
+c311a030-75ba-6194-32bc-895aa60b3fa5,992865742,10431776947444482207
+d75190ce-86fd-5455-5c15-7977847ce77b,4110482012,8192643047056087302
+279d4cf3-2694-7665-d357-10f8926e0a79,4097502476,7107263575576640335
+57a3c25d-03d7-dbb5-9d61-b10f29433cf7,1155749579,11793207410101560339
+175d01cc-df08-1414-1f9c-9180119a1a7c,2594046125,12508157323486280912
+94c57a39-b809-98dc-0da3-29307b0c32b6,3197191680,11140715625795397634
+de9938f8-57bf-823c-41d2-592f010d9fb7,1638035013,13199436828269461806
+b471e92e-0d41-881d-2085-ade87e2aa9ed,3494397232,4900915612747496855
+e9e65ac6-0ad9-9d09-5445-f8942fd69c4b,818019137,9270949651313904474
+de30abca-ff72-5c96-1725-e86e28e79fda,2798530745,16532142890986151861
+699aa4e4-3782-6ce5-e0d0-43fafad7f0a3,2733916716,10679525951688046372
+fa5c4a89-8eb1-103b-e975-0a1c828d3f0d,2701763607,17096773602237979008
+b01a751c-9c96-e6c9-67d4-c7825d07a47a,4007238986,3907624918618500777
+8afff526-5653-799e-bd11-d0f53818735f,1979241029,12364031191840979185
+742e4afb-848a-0668-5dd5-eafd9f798b88,2670449127,6074346661169100573
+9767668e-f13d-ac3f-18a4-9ba3338e7bba,3226267913,7687602614195728382
+de720c1f-27d1-b57f-3815-adc8e872037e,4120868746,5389763338562464088
+543880f9-bad8-391d-4918-e1f35a377adf,2531438573,5988523721646117789
+27a37d5f-037d-dcb7-3d89-183ce3dff220,3748406313,3239876887229701925
+285510d8-74c4-2654-a152-159798369dec,2165595205,15223823210436463549
+0c6ff67d-a2e6-0dcf-6c71-87aae47240c0,3013173002,3894026419930593591
+354ec7d5-ca89-e1fa-08ea-4238f357f800,3842402706,904306868800816936
+d874701e-952f-08ed-a072-1009b03dda4a,3835995267,8317506288453776775
+24f0cfcf-c495-e8d4-82af-cd61b997e734,1835387353,10876220677178283620
+20c0c099-7e74-171d-64d1-4044bc7d5c3a,4264384356,12621267400854293485
+65a21896-47e9-b103-84da-074a0aaf58e6,1604063804,5429532322480145580
+f1eceecd-d8b0-1095-48b1-639fa06d5e72,3085344310,3134590898891859969
+2f183ddd-4bbb-4beb-a8b5-c7d16ae41bcc,303905861,14922652960717299333
+c2fee1f1-5634-f87a-ae39-2b978150c61f,1632580700,4316571587584333085
+46c66dee-0d91-fad3-7b91-0286ea84ac80,2338154565,3492419770565547709
+9d73080a-72a4-9376-ac36-732830afd874,459404906,6085943559894028299
+545e14de-ebec-8ac8-ac26-e695244b4bef,1036358603,2149529862181850206
+6fe1799b-3c09-b9b9-f139-0cdbebd995f5,480015329,5044056204998845561
+0defa3bb-6cad-e8ff-9ec6-105cbd413194,3099404539,17704451684730566150
+744ea89c-d097-fe24-d326-a71060be08f6,2990785028,3139839786330170860
+a615bd8a-3a3e-bfb9-217d-1a688f5797a3,2717455437,1834667540413555540
+048b0ed4-68f7-a494-0361-4990f687058b,3295050673,12012017688402996675
+300063a0-c392-496a-7fa2-e9c4de3412c2,1394271411,2384844584475871179
+d7ae47c3-858d-b104-efe0-12ab9e8a3514,2731423893,3857683537129650889
+f8d65bd6-e2eb-489b-bf25-4684cb3e277f,1437717027,16445847512258006293
+94d10ff0-21ae-9a5b-c8b8-539a4389da27,4056539907,13461638244923717603
+fdba41b0-025d-a584-8a0f-a5bb06dc3f32,2887707244,3200604428416819083
+6f957751-52dc-2271-8dd1-874343a130e0,3735917109,9992983852852921535
+f7a93ea8-a1b2-683b-8205-faf7e2b23dfc,4106169189,742139182268968791
+86dbf598-9054-f643-ab1c-db7275b56a64,2586897351,17252437488647612695
+6e31a7b8-428e-bc5e-19a1-5b27cb0d2b57,408270901,12646566585195445901
+f4ed4169-f869-f797-2fa8-fa0832a9dfc1,1817992300,18003845541554884740
+63405be7-5cec-a029-fc26-e5d2c7665dc5,508795338,5715075827529175905
+7e036aca-5050-cde7-37d3-b29e4ce7b948,1441517858,5927906060405557843
+4ad5c665-fa6c-ef5d-644a-a0bc1e5c35bc,1051590717,2846322503998882328
+177bba58-2bb3-e0b9-5748-4ca0c96fbe42,601136337,7785551843409931263
+dfb6e196-35a0-0f6f-9f5b-fe5c8f64318b,1981545299,2593216010370072974
+531ec87b-1bae-da59-566d-6452468d9e0e,3832580396,143571527698561980
+d8f365ab-4c66-b049-e486-66aabcba3499,1834779149,15393416270661394917
+647e8964-9289-56ed-14f4-4cc2e5eb564a,749687896,6441886772315262432
+9381040c-29fe-ae25-7c04-f9e781ebeea7,1516193793,6612887274212613310
+5866eca1-1305-edc7-cc6e-dfa936dd1613,2657922706,10237147875465017019
+fe84f3f0-6faa-5bc4-2c16-0e0c9f4e5a5a,3895201201,12951812733264685020
+8a528b56-a061-71a3-4dc3-92f019566673,783686522,6979037549515901779
+13dcb07f-f207-c615-c571-eb5b4c448274,2848714798,7472783913228522199
+a8ca8d6d-e2fa-adaa-7f26-6923c786f9f1,499903020,9989809652756296430
+a622d013-c937-095d-4df4-ae9afe8abc9f,1241036155,2816074137794421929
+04c9372a-7c0a-3b0f-e261-4a5c4ad71e7a,932708666,9387612626384660377
+170e81e2-e59a-8548-e969-36641ac89680,317683155,7977586382215971039
+7fa64207-1195-9e17-281f-eca00772100c,1233650310,15129283688387761700
+8b0a4ab1-8c4a-aa5f-e0ec-341fea25d84c,3884844760,10231746547704497655
+6c147a11-b98b-4732-dc3e-576eff3f2b3e,20784794,10105007166307093244
+45ff169f-2d74-9ab0-e4f0-f1c2c626e300,1636839439,4213579770173945276
+67110487-e4aa-0ae9-7dd4-f8d3254a857d,244295706,966149640492387143
+39427fbc-1dc8-c02d-cd1b-9f66ff1b61c2,4236596981,8178593300535568644
+d0084c3c-f6df-3beb-9f79-c4a528defcb3,2554897402,2181191314698200144
+24b62b90-317a-f584-f15a-4b14db9c558b,1429392198,16415465096243846882
+41a9d5ad-17ce-5b14-8102-b79058317e41,1193717950,10937559099866173542
+806d239a-a4be-0825-7c8d-8b6341ab5228,819602083,9141184109415463021
+c0e8d474-0118-d923-17cf-d65b98d08e86,3081711834,16524976479566775042
+3dcbc457-a405-dedc-52aa-9cb645293628,346057097,5616327785189380911
+a3b8c41b-72aa-b4e8-7b9e-1d9fd8ade216,2987907617,16288574871754301658
+8ba9a82e-d160-d112-3ade-ff915bfdeba4,378735992,2061374255390106102
+c70ca693-8aa6-0542-9b12-cc4a784ce8ff,1873573977,2291357389218922829
+cefc6536-d090-3ab3-db1e-6f364c2c54e5,1201019035,11396569786058144289
+e2810f98-5298-2c7d-3bfd-8e1cfc2d2848,1874647581,17891005333095678493
+a6b70bfd-e891-491a-bc73-fd4810c4aee1,3794982475,13675299229938882667
+a5943ab4-0429-4836-7779-82d33b47ad4d,2040684582,11793746767210749144
+7820df4e-4f5d-2cd2-c43a-ee0b069f2914,1956879294,7905113318377236293
+c6e9d3d4-25f0-9c62-e3cf-e4e44f6f1c5b,225774635,530440957533174006
+1defd06c-4944-0242-765f-7c63ccf6f48c,2056361172,3921825467468495660
+14dc2547-8945-63c5-2bba-fa103e97a7c6,4163296680,3115910831423158304
+c326a99a-60d1-3e6c-07dd-d2d6ec4ddddf,4044258900,684908765802051270
+795e43f2-972f-9670-b803-579c32908fc1,3610380536,3494598195072415878
+1edd79a7-0871-d896-b102-d60537ecd4a9,2495119578,5031404608165387690
+e0ee5f89-765a-52dc-4773-45e990c8fbff,4293086056,6409716244817578531
+7b79f74f-7c1d-091c-2621-304dfce25749,1475898778,6426367271030696876
+5f735ec3-44b8-4e6c-84d5-92243f64c954,1374004008,3126339184001886967
+83b00a98-247e-fdd3-5081-297e6c4b0858,2275020683,465287678895435587
+f46f4abf-b1c7-33e9-72c3-1646fb2b23fc,2994163032,9239126746304434979
+eac71738-787e-7763-747a-a5d5b6c54564,2907863779,814685429836206984
+cb694176-bb7c-31a7-131d-e8802603be9a,2565312576,10659297918837053334
+7b907df3-da6a-65a0-7dd6-1c87eef13896,2599099991,5404236304973655251
+363b383f-2475-686e-9c47-520cc6778a5b,749849226,13551277991100665112
+28c30bfa-8af2-2626-3519-ded121729c17,2571679418,13114812389593545698
+edd48f61-427e-b8fd-39cb-1c2ded9e638e,3208838400,856915639054906426
+e42868bc-8bf6-82b9-aad0-2fb409571f6f,1694173720,8732691714098274929
+31d2060f-abb0-1003-6822-41c10ccc7247,1123173260,18158478134189073326
+5758df5b-0176-1f5f-f3a5-5de5b7884681,192849944,14157605428211472922
+88bd3a46-1b58-4a2a-4582-d9fa3a8dac4b,2462497610,10887845249707763544
+9c8f845a-20ee-212b-2ff8-172e7840af7a,2280722698,12509594223492648444
+08e17f1b-5df2-4bf8-4dc0-0f8653f5fe75,1403772707,7300649793126278750
+cdd64c11-7143-bbf4-aa68-44392c691cfd,2621163385,429836851725247172
+c8e179a1-d85c-2819-c74c-8218afa7c73c,3263618143,535466586362151369
+d5dae609-50ba-712c-03ca-25333a731422,1050257597,12064680078473111455
+623aa3eb-a744-bb05-17c7-22a7a70519cd,2024549438,10174058542045474731
+4e31b6ec-da82-05a3-0a53-c2c155ee3c78,367606286,715072828041549347
+e371c6b0-42b8-ac7b-0ffc-bf5dd634bc7b,2393303570,18256718000771548348
+540567e6-65e1-d351-b392-5fd9c632d81e,2764688994,9453434983248074960
+60a3ccb0-434e-6076-5823-1ccd5f249796,929782223,558998324174827089
+d3ee4aca-a095-e48a-93b8-0e116dd6296b,2871445359,13961133164162448265
+6a5ce02d-f7c0-42c0-9025-6bb56cdeeb04,295273429,6304120330351265374
+7e3e77be-4e08-d869-b986-073e45227e1d,58467820,802792957386513842
+26c4f155-c520-0ff4-0590-7f7b18877195,1140779209,12430454036308837509
+152f22cf-95b2-e28a-3a21-5601044d3924,2327907539,439262861530278808
+b164f533-85e8-b7fb-b743-252e5bfd2f65,741060127,4297023433549762499
+1521341f-c91c-4c54-bc16-dc10b0230704,2467122993,13996797717454549556
+28c10a30-37d0-c89f-f9c0-4b1aa49f14f7,2048553914,13185509752412156702
+04fa4ab0-94a4-8a90-e716-f35409d83ce4,3313359302,3744560486162945939
+79d77eb6-78b5-c15a-e4f8-c099bf096d6e,2098379196,3633101548826687171
+3801b5bb-dfe0-a78a-3d3b-e1fe49c12958,1107723624,6246610758435539891
+8e646c33-0e59-724f-6e2d-606e92dfa60a,3756654485,167138058226644088
+1e195ef2-4680-99a2-7f7e-121f5b4c38e1,1223583743,1310009397189434568
+9b58c2b6-9466-2800-22b5-31d6b069e3e8,1163438535,3527509597086417923
+ff6164cd-26d2-3247-a6c2-f99d4736cc53,2817999018,9713020330240454217
+c5e864da-33d9-fd6e-3b27-098c194000a2,3002688083,12836501095840885407
+4465221c-c91a-2942-7965-d5c5d4f7eba2,112144760,13914448665154149166
+5d30e31e-3ed3-5d3d-a2bd-614260e286eb,445625425,14536297860758575811
+c49ce8be-a2ef-a8f0-3ee0-e82c42b515a4,2892248663,7634212047088626586
+7d30bb57-26f9-0971-e1e5-58d1a495a5c0,2342257944,6150084253207175137
+0c1b30cf-bfb3-285d-dee7-befc7f9de6d0,1550925015,5122794109540317501
+098bfc68-e224-e4ef-c8d7-b842da69b971,3764524250,7363749133042693130
+842ff4a2-3f3c-e69b-b9fc-b008d016a5a4,2952810724,10985756195627404062
+5f6bee19-aba7-f3c7-71bb-f0d74951b62c,3939643236,4029045313201723301
+9500d2b0-0272-50b2-80b9-74e71bc5d9f0,3956805436,4810276521744759047
+64385be5-5270-c0a2-678e-46a8dfe56519,3931391380,8046276539909382900
+1fd495e0-929c-78f9-0e1d-f3e50651ed23,1788838069,16872298965027753707
+3398f729-32c2-1763-341c-375d54571b7e,2709785833,18371692478064657419
+38b562fe-0537-d7f6-2af6-dd3e605bdf36,3173750615,4507217935108697028
+b0c828ec-fcd4-6a4a-1dc2-2bf3e5052ed6,3967694120,10784083042717786579
+b169966e-9ef7-57a6-413b-5012f04c862f,3700957027,16519436816865003807
+7870cf20-04cf-f0c9-9dc9-7d70ca809668,3382155970,11866265835709657176
+1b2aa292-4d42-4fb8-0010-9ee748b14105,976216600,4631110185069216815
+b224869a-7823-fbf4-1530-51d67e60d051,3208310371,5709202066011917300
+8283de9a-1d4a-5418-eee2-9f747f67e763,4133442710,12111846550003140905
+069ca1ae-2f65-3a3f-ec42-c3d927d60d4d,4050254874,3356090535337092049
+a352eb76-df0d-d26d-6fdc-f894ce36ba2a,726705808,8879181034666761059
+c974ec03-6fd9-5357-b8ab-17260ab6a617,1221601985,4844365315633898396
+f261754b-f390-543f-567a-d8d556c57830,294681032,16447344792708049516
+a9c43aa4-cea3-b58c-2154-d3f87847bdc5,3150802663,8693153332646104495
+e5698821-8cd9-8818-cedb-27bf8ea4e073,4126486151,16566214428892747783
+0d6ffb4e-5448-d9bc-14ba-bec8aa64c308,1683803490,17216006229658055523
+7d2ab855-afbe-bcce-b019-043772cb74cb,3590778822,13896824894585974812
+120f81f5-ab69-2f74-7ac7-066a08972145,4133689377,5010477073748134278
+52103936-1cbc-69b1-ea75-450a62ec7273,599920000,6458456306034948548
+af34375e-b8de-a506-1ddf-842d43c55529,1831204393,16240224905288448773
+6bf088cd-7adc-6fa3-9f5c-198b73281484,3457430172,15134244576824768753
+20a0d9b9-a76e-4b09-dccc-12f17a123204,4200996193,10881853211704500432
+688a8287-b3ab-05e8-1080-e36bcb3ff5ae,1008590135,2590019694862829088
+caf95eab-a20f-f020-01e3-a1fb9842104c,679633521,6684440080519707372
+e84b98b4-1fd7-92ac-1223-84d2ea4fef44,2289559585,4525937213993675507
+61fa40bf-563a-e3d8-f44f-0ec5b10f7841,801488492,5885357389135769572
+d040833b-23ae-8408-e0d8-8f84ca11e237,1532734857,2944346784431222136
+611de49f-f715-e73b-fa13-55d9db28ba12,1985232653,6173250845905273819
+673ea349-2d89-475c-be21-66d9a074c800,3851614186,14257072744567942092
+62c66b8a-c27d-90e1-adff-358a86e97a53,2138457293,17774297542534473438
+8a9e1cfe-9527-a9dd-c4c3-cc2564dba5cd,2912187135,11593499547820857195
+784832b6-983e-ceab-7b8b-8e96a805dd5f,3336375373,9132088406969383306
+8a11c2c1-b1e8-5a98-bb7f-8fda131e4927,3779492886,5224948439017401491
+a2b11270-0fb2-5ea1-f2ce-926e5b8e5a4c,1948659674,17212700622168473452
+c16c96e1-9263-5e70-8c46-edc00fd85ff6,17117616,9900467158672432987
+40167d21-3abc-caca-a2df-97879c873169,2538839383,14157651746958878821
+e8e1cd0f-c9b7-0120-47d7-7d19442c899c,2633725702,11037747449847266282
+98478d67-1b1a-e950-319f-6e7dedfd26d0,1375076364,17661545122982714961
+0756b900-3655-8a19-6014-2f0ab9d9bff9,3799158910,5540537416782010125
+6093d307-8a9a-9503-4fb0-fb64fed530fb,2311004406,16641903783346441665
+62bcbce0-762d-5091-f44b-b66fb4a05c02,3259679322,1544011572366772989
+8ab6b6fd-283a-ba4a-35e4-37db4faa6a82,1140285608,6836519020237444100
+3d5c4aad-a0ee-64ff-acd4-e573f7b2c5c1,2618630340,2019467949636083300
+0dd5c0b5-abc4-6c47-e1df-ec71d7a0b9cd,3590344534,6665588276512629596
+5a3e865a-b822-bda7-7597-c9688b9279cc,2458016607,5798821508446062300
+d94a9c77-907a-e69e-fae0-c66393ff99c0,2018832583,4650199740551050843
+fddc674c-e892-1161-cf66-9b46d8d8fef0,3826103518,1585852625376084621
+2abb8aed-ac03-5beb-2b24-a3126cf0f32b,3560191671,9109625187222490685
+e10b620e-104d-8135-7493-6d474f439e19,366015453,16972196900952274935
+b3eed6a1-3001-ed9d-897f-b2f8d0900f55,3052659521,5496090887679123846
+1e541717-1a38-5316-c50a-8165bef734ff,961974189,6120646486260744085
+83877245-b97a-f77d-7582-0eb32d40630d,2766669587,3004840006707075988
+6f762795-4f82-9870-ca4f-2fa356241137,466328115,13635173670023338033
+2c9e7f71-a20e-b0e0-2d1f-9384f712d4f8,4010301442,16742163297476006178
+28bff790-3c03-a36b-06a0-ed14a41fe797,3568921553,16342263661978788212
+d9588f3d-382a-143d-894f-228e51867c61,1299961131,9881058702800816276
+3817516f-9c94-6f79-427b-deba19992b02,1703037317,7136032814535026749
+227337aa-a737-e5d9-d873-f43eca1b8ad3,3043096487,1093476377449154319
+2e95894a-48fe-20df-14d0-2abedf731843,2492846194,12096987794144509030
+ac3b3a73-9757-9aed-f684-73f03316c612,2160531336,8640370700933564158
+36b8dbfb-c33a-535a-e1fa-cd6da4fe7455,1984560879,7228539039148657862
+43ce36a4-23f4-ee11-9d04-c118616db580,374236539,15527168397474548065
+980a954b-7709-f0e2-434f-4741231e9a4b,3905442775,8620270027635649834
+730913ed-5367-9681-f75b-2f8f21b4ba38,1955645646,7985912560631841532
+cd4114fa-fae7-3322-d1fc-37402b10bce1,1575759042,13093103832243870973
+2b9f3e12-3a10-796b-9b35-769972520c8d,1554494141,10216958412895658250
+7a0dd2e1-fe42-d434-69e6-c498df2c24a5,3768724696,10363826747224583381
+76d5d417-2503-fd2a-b9c6-8e2ba59c95fd,4293633778,4355321889750065217
+25c8fb3f-146f-96b4-cefc-916239b0e3a4,1198516033,1443148890526537209
+490f0069-67db-dcf0-6628-62b826126c3c,2055279440,10234445753483424086
+5070ab38-1849-af82-8736-6f12f5f1de09,2603847882,18093544225438459413
+e954f383-4cff-06d9-a9d2-bd7e6534bb69,732113352,1442820884362607531
+22c7d9eb-d1f0-9290-85c0-a3616a2c82cf,1699545026,12599319704062865630
+49f4a084-4456-cdac-51e1-173809181bbb,484918707,3111486089726270124
+cd7501e8-56dc-0f7e-f89b-9466908fe765,922080754,3461300590619178129
+8470f1d8-155b-eb29-a306-8548541bd458,1216422834,10690969265135579718
+2c26adfb-f28a-48e5-c789-4922c4744212,4029854455,14071791982266983898
+8e118cef-9c36-1393-e72f-2adc3dcb6b87,3955232747,11020815880413873817
+219eb66a-7924-58a6-69e6-5eb5d5c9baa5,2251715044,6842831313279314715
+2284bc37-4dac-3393-4c09-6713df97c845,3904881447,1495572647190302644
+e89d376b-d1f7-b065-bfcd-5ad2363f604b,860297806,11660219287584660269
+f01d5a81-0b59-4e45-3c0f-2f333356755f,115650979,11220766772066010113
+355c7a75-3aa1-0cd5-fcc1-d04a71159380,2021985277,869750149433175896
+57c1eda9-a2b4-7562-2475-508dadcff536,894010242,2793629445450593633
+5b685a1f-5014-f32a-89ff-812c7110c4c8,1309586444,3733244315239835221
+88afd02e-b863-ef1f-81d5-f2ea6fc099b3,3089961537,6094837993459605862
+a57cfc99-da88-c29a-ed0a-257de47e4807,2672747148,1365815957572148150
+48b83fc7-ffd1-773f-5970-dd6a8781f9c1,1849454147,7235211737901784719
+5018dfb4-e30d-6e3c-f061-af82520e4b85,1314131931,7954530583531035010
+72b3dc3e-7978-e231-fb45-b5776d0c20fa,377646227,8836455309751877835
+d2e8fa73-10cf-7b5e-e99d-113059e24788,3038512588,3205540994532486947
+f3a85954-a670-74b4-a472-aaaa9ce44112,1136846558,6674684688494075080
+7caa27f0-c934-d261-e4ad-3472f6200e3d,1757303667,16216214227178624389
+9c4a81af-a610-3342-d376-90a1873236c1,3213457672,11738124721366766331
+559ab92d-010e-83ba-9782-de32566eb3d4,3276184579,7209549851606102419
+048de717-b2b2-a474-90e8-a571aff0d13c,1906158658,15364184153661825015
+ddad4bcb-1385-88d6-af3e-789a1c321450,2657661382,17024473373251508194
+cffab711-75ba-f22a-813a-1230472b0a32,118672499,13149887191628455380
+595f40d9-091a-436c-b50f-738c6cc0fe9b,3232720285,16160978073917769024
+ddefb99a-3859-afb8-e29c-8d1761133035,1108362298,14629410732083980851
+768939ca-3268-9754-8c6d-a2d5b9a4cbb0,2965010202,16529637557022683551
+ebb7bb2b-68ab-a2e6-ae03-a2041d96ca7d,4136584256,14690283016279080506
+926506cb-734e-081b-eed9-b58247cba75e,3109401259,313438586143816430
+cd9df9cd-3af4-2ddb-9af0-516fa343225e,2407158518,4374704251280136533
+71f34bea-d22a-b89b-5c5a-155411f4f00c,573677850,10338922742829662858
+88a77568-45ab-df75-6974-6911f3d22b86,3117329977,2058924424102466357
+58c7f4f5-346e-2f95-e1a8-c07cd1d6dab0,4078653483,14654462113548345665
+0c7ab84a-0eca-b45d-5eaf-65d66c4c58cc,3415590460,9785869505236789135
+a70e0104-6464-ed16-ddb1-58bcae4b8b9c,2803736503,10174227454736341910
+e3140bf3-9c17-daf9-c577-66ddcc4fb43e,3390262286,8604590330088571116
+c32be065-48bb-a733-365b-ca7223229db8,2265650612,7790980027374851588
+8a9e7bb4-34c5-d1a9-d8dd-70571b8288e1,4270245178,17760180187250977920
+e3959b0b-58ec-e4d2-545d-c48445889e1e,274525291,12313641219374798059
+9763f65d-6c23-ba6b-abd5-fbd605a21216,302057984,6051969139916709251
+0dd65eff-822c-8833-74d7-f55a2bb8de3a,2266046407,8784345358629255501
+49381e70-8f59-fdd5-ed62-4bf019391330,3852943757,14966788892786946970
+8b6bbea7-d9d7-6474-06b7-13270675ef2c,2993901649,15743940993640612825
+9845236e-50ca-281c-4cb6-62552a29d944,1912809245,1688120622513387308
+38b581c2-7e38-5fc9-7a99-36084cfb2089,4046668970,14001715031176951555
+b52f097f-a227-7b64-d22c-937fd329d61e,183072725,11010035473429032133
+9cf59f5b-43af-b206-5571-f48bcf002878,400352212,12584508331507787493
+20217d36-b004-46f9-3132-6fc1248297be,488649736,10549461865881225579
+a711121a-637d-d79d-5571-f941b00ee0cd,2674316530,10320308628378241846
+fc56ba29-57d3-ddfb-b69a-157b64d0b8ab,2431120098,5923540534743786067
+0bcd860e-12ed-d9d8-d990-7b38d0d75ad4,2739194632,14788851999405477539
+656404c9-4540-36a6-091c-5d0b747ffc4d,3720706227,13667146288262899908
+cbb1ef7a-a653-57ba-3218-1955c1bfca22,452871587,9292822644661303037
+ebd53778-d406-5ad0-2d80-683afb2f66c9,497702549,3262463725850619778
+9ebd93d4-a2b1-636e-63ce-6f00d1a05103,295746630,13094924252571291600
+7acb22fc-5599-f1a1-c2ea-75199f4bb8a6,1934309568,2082307207751767523
+5c47546a-1c58-0497-97b5-be9268d969ee,3418361962,8938679769356296372
+6649c408-8261-a346-a076-f9c328ca0c81,656124017,6599854101201280518
+a5f5aa97-adf4-0cbe-1c91-6dd71412ffaa,88474100,843855133581213967
+3402a240-5369-bf9e-d8f0-982f0c1e675f,3383464734,6830639062560976554
+3d353bf9-05d0-2835-dc7b-5c35ba219e5c,531803592,14293786304670343964
+5f4d4845-9b7e-1fb1-5cb1-5da874c62934,3556046767,6990113050467125340
+fa3f81a4-feb1-3ada-83d9-ed1ddece9120,4117556969,2874275240808486687
+dd54ffdf-6fb4-6324-8542-59dd52395d76,4071802723,4656607500342597566
+539ad15b-04db-6c72-7ea8-437e6bcdb028,2738589333,7883045806937592906
+0b7db7a1-38e0-66f9-0f81-adde9c456612,1321552770,12759443495927078102
+3f407c36-0b07-b8de-e793-7f3ebb85a15b,3578669861,10051706333421532201
+f8e58669-e2d1-4de5-b6f5-b8efdfbc9827,3843788392,7763544343393537367
+a1b452ab-056c-8740-3aa2-bdc351977718,3858699558,16009994167538531637
+0a268e0e-019c-6ca2-0af4-1d6ac2bc6c60,1952678720,11374535970025817941
+9011f5f1-3bfb-30fe-12c9-6e4e391fe7b1,928264400,1261228803531526403
+2b427830-98a3-ec75-0fa6-602b3920f5fd,8712741,5405524695093906194
+7faba337-8b0a-8aab-88af-02bf259b5d95,1628385836,7975368585562713375
+4366a865-75db-0058-16b5-3960009e0466,3912856106,4249032663075534144
+52a28bb0-8545-f3b9-6349-792817055037,3989871661,14413933774068033456
+d3750c2a-db7a-cc5f-d4ef-3544b31ec860,529473308,5177826168491372143
+4af2d76c-4417-244e-ff56-9261ce929d4b,462498544,17926241472082883885
+991bf64a-676b-d4b2-4648-4bbcdc7cc0ce,2003602763,683506056839675969
+a2ce943a-1834-bf57-4374-7243d9c93696,3634250727,13267626421359757700
+46eb0979-2896-9d06-4565-afec1468e0f1,3970830737,3956638598606586329
+03ed331b-74a9-f374-02a4-be87190bece8,3815733562,17510089495554739642
+dfffb9cd-36ee-8c7b-e45a-d73ba5a5a5f0,607782659,16635623205656705737
+2ae8c5e7-226f-45df-9924-2082ebc4569b,3475887800,12568031416210133046
+f72fdb60-9781-f47b-c0bc-8eacae85990b,497683059,7376427700170543595
+a26a2fa0-9570-10f3-3ea3-a922a22056e4,3405143344,13309316647407919332
+c75978e6-3c64-18c3-e95a-80e0f59c4621,1809099459,13374174270620091465
+23c98fed-bcf0-4f8f-ff18-41cc9e7ef1de,3004869286,5177645398561260902
+9a08bba2-6e9b-ce98-bb4a-d3780a932808,3968551637,17055105330166549190
+4e92fd84-10e0-097f-fb66-6ebbe20c8fc6,120770392,17178377623394258681
+14857f7a-67f6-f1f6-aa9a-9eac81acaa6e,3734457251,13227444048851646313
+d5e6f56c-e3ca-d7bd-fb81-7607143bd4bb,3095439822,17596776287212226051
+e91bb7d8-c4c6-dd79-2e11-4423dd522c08,1286671056,1979072023636335040
+335d1168-0d6c-4392-0604-cf064a77c845,1414130523,4575998210931820534
+3852553e-7dc5-4bb7-826f-05a27b63f017,3977463489,3207677335055153416
+a807caa5-f798-ddc5-b5b8-01767099e969,3648133659,5512178517457298392
+d88df194-f39b-dc0d-0831-abae4d4fd7c8,425503838,10693398569017918669
+ba56adbe-2645-8e77-0a77-47c5f91818a8,3807824758,6847102395465743222
+977fd8ee-f5ad-c6a6-9277-6e2bb6c2b17d,4251297957,3809253494427653438
+ee3ef7e4-21e6-36e7-416e-d73b0a917138,703100472,14300479624417835122
+8061f0a3-9d0e-bb81-1f9e-c9c0db7b4857,3831119529,5369309116573340944
+7cffe339-3086-eb3e-cc2e-c9950fa84d2f,193236331,3485010950748235360
+d42b9e4e-553d-93f4-4e62-64c333f600b1,690978072,17611641403938709642
+639845d2-0d19-48a6-da3f-dd9eaae52d7b,2874414350,10875442306567826753
+8a06e343-4371-0251-0f61-0397bfa92974,2458417923,17425406398704715412
+3e741bc3-0cb2-fe7c-7054-7ddfa4fc3a40,693364526,10320586693528172167
+311e56a0-94c6-27a2-3ec9-2d0588591ae1,1619783295,15530949793346123506
+449a6ae7-fa3a-1543-8319-2bfa7c06c5c4,1595769404,2193637651438989952
+4ecee92d-a2dc-a6c2-80fb-d30745c64f51,3594854111,2485421734781072855
+4ccdbe1f-7865-f33a-db0c-72f246f9125f,4194083269,14105683641124593093
+de0cb2f7-c956-5c9d-3bb6-165b53331ab3,528237939,918813755854574612
+60616401-e906-0960-5d72-f7c661a94101,2531609418,3949645547393072903
+0861e8d7-8e7f-3cf7-48e7-06ab98247cd3,2612199193,15278990297630790589
+e7b3e777-08a8-0e96-55bb-e51daf60f478,3113595683,4646586509266918975
+b35102ce-9f37-142b-8035-04f61432958d,3353931961,17804568083151050520
+d16dc700-56a5-af66-9057-408910e00d06,2295868270,1031185536902886928
+4981f471-03ab-358b-c58c-4b2214144d56,2900119333,16266567809833348010
+34bddce1-b165-f841-64a1-227a4b3d61e1,4206025124,2491638289747397325
+27bdeebd-400e-6388-d127-42e5d7070530,779140680,14855199296835785877
+e0285756-38ac-ef9b-d1bf-33d0635481ce,1536842245,6962847234387661250
+1d2eea4f-9a2e-928d-deb0-0b95f4f00852,2106516409,11110092904055190935
+c868b473-7928-d377-e453-ed53e4bf83d3,1599835656,17804232021355953473
+4133473d-f70e-d7be-97e8-03519e97008e,3633699436,13380668224837872821
+5ed4dcc4-ef53-583d-cd6a-c9797e3d6905,328700659,9580542506986973095
+6758f469-83f4-3190-bc57-a3f2142cef22,1563722471,4548482154844947563
+be0b7aa7-6544-d368-364b-881ddebd2b57,2692384691,7754362642894495192
+16be29e4-0c1d-05b3-27ed-00214b05a0b5,1766251049,4208888524113721984
+b8e71f91-a3d9-872c-d765-e5de27016818,3552938652,6626350045637846882
+696ca0bc-b8f5-3756-6d56-276e7db71612,3515935286,11453648235977116580
+f4b61774-17e3-2f69-ba8b-b1c42cf8f29e,1215468470,193660481816002346
+b02b7320-87b0-bb93-743f-97507b4190a2,836349002,3440474681769520505
+588fe943-4656-e06c-0e37-b07864d50698,311823128,6300327421109967762
+9481dd8e-90d1-4bb7-4845-149fea1364df,750635797,8937485851753491145
+24f498c0-ab02-8b11-b698-2ca4d4e7d3a0,796441956,752880310064553276
+2f958e86-6e54-6a85-bb18-8116ec7ba6ec,283892511,4921870395556475556
+ce55dd5f-cc8c-53ce-4231-21488d37f7be,3022790854,16158799184538953985
+b4fecf79-8406-9af8-a71e-2a69d6d58575,3194935696,13508841761598017452
+2294a85d-c77d-ca78-bce9-3a8c0541b499,3847169735,2311048485914180817
+70a2366f-1e7e-5813-0277-9555c80bacb3,3996168176,3899235997531359178
+a6f97a47-c611-edcd-883a-cf52a26d89e7,1736367595,1565412717033926307
+2dc5c932-8bf4-530e-d199-6b003ddd9d9f,4074372968,13578009982441715473
+1730a854-d4f2-f83e-62bf-a1fbd5431a6e,1751985266,1642646899774017249
+97eae7f0-779a-b383-504b-4e0980dc4e6d,2998100431,2735499039848760085
+cebc6440-3caf-25b9-ab92-3a4707c3b133,2831858823,6534451781371476958
+b92391e4-ad33-b9cb-400f-a042fb3ec251,876010294,7280725816269948186
+3a338eec-0283-d514-35a0-420a05417bcc,792853595,5888401088811396714
+80b5f9d2-377f-a024-02d6-172303ff784c,2977213641,3878804986309349793
+ad68088d-6c31-7f81-3be6-69d1536d087b,1276539019,17837376268927257004
+3dab10bb-cf5a-ad3d-dbd1-4bfbbce3d6e5,1813405087,4315103013646360288
+6c2fe15a-e31e-95d3-c6fc-dc8343e4f150,180330142,7513029209463496873
+1b01a236-2fd0-ffd8-a5fc-aa76aaa5e04b,3607075694,11558884974497849622
+7b5d460b-6f51-1aaa-3983-b1cef2d11671,1933010054,11991643476616853519
+3135fd5f-c1a7-396d-7a4a-95a3856feab2,787364127,180147559957944158
+d1400065-a2ee-4a11-c576-65b0a2cd227b,579668420,11085161178786776988
+a13055c1-7c65-7b00-0e41-3a3e07b2e6e7,3460358039,2060909775265465254
+b7e9369f-be98-e1ca-d02a-ec981d9cd22c,29479592,493130781538994078
+1bc2502c-6738-22c6-0b56-004f1ee8c41f,1901721957,2205320912295800960
+6e4067e2-0d6c-45c1-1ff9-c3ccf99ff4d2,487019200,16940215489123816259
+2fa454b9-5965-db41-3cb7-45340140011b,1314854834,3915545603408278824
+e4529674-64a8-d9d3-cbc5-5e3b1f9785bf,2855439543,2946898046756947588
+0be09bdf-2502-04ab-9d21-539c6ee498b1,116353173,3904723164223449458
+00061b51-e6e3-86aa-8de2-d23b22c8016d,4181251011,6388345986932069267
+f35319a9-d37e-82ea-0df4-2e70bf3a619c,2434339906,16363991210443595297
+598854c2-146c-016e-2836-c507e0629de5,1141454203,6682309971535337986
+286b2a8d-445b-b783-dc5d-9a10a7c6561c,212093492,805425574066528478
+e2e129db-66fa-9d8e-52ab-0407545e3a85,743360919,16087845496269063670
+f1340b01-29f0-e17b-9896-41c7d479644c,3375053895,9457647581009577557
+82c7fdc8-e415-483b-a75f-b4b8a44dd834,2523263789,12086334588971858337
+e4ef7611-b374-58c9-132a-50b4e8c21965,3494731873,837986130122031776
+4ecab3d4-25c4-e240-6a91-9fd7d8414b24,4069069095,15906523639892568847
+04596b1c-0b67-9a5e-a6ba-52c1567089f1,1099930072,13848844906975681567
+7d5d9f08-e762-01dd-8f69-4dd91e605833,3606905922,11092730157074237312
+470abbbb-dc51-4b0e-5595-ab9147bdf656,1455959855,16275124546173842389
+e6bbe2da-4bf2-dedf-9098-4825508ca2e5,2493156443,8043481071786946752
+ecc8a9bc-e946-ea0c-1db1-21f82cb588cb,1488107318,815519227067805679
+d6cccb69-2ae8-7231-c47b-b73c6585afc7,1681913364,13149933867196215313
+0f80ba2a-1d2c-5646-c865-49dffb5bbfd3,1258662628,3676890749290086147
+d4445f3c-f6c4-409e-b272-115fd5bd7bb5,2699617435,11660103381017902861
+543211ce-8281-b20c-dc69-40637f2dad4b,1242454874,11283236984353876521
+0088b8d2-cefe-9ca7-1b1b-541021b3132c,3558412119,13406800444994846948
+10b54c9c-3453-5c69-e810-eabc72b9253a,1528506872,2101262287021195087
+de309374-3ef8-dc5a-21f4-a68a53a950ad,2752433460,17890505399614016630
+18c2de54-5b22-270c-fb51-031a03fd22bb,1990140228,14717902321730189423
+cb0d7610-806a-0e4a-5141-a8a49532d226,3157343921,16368268702097415018
+a61864db-a00c-8040-2662-cde6c8582737,3343751500,148879579064360028
+6f3621fd-b737-324b-011b-c66fc380d9b9,2317684598,11145602884511347128
+bd685a38-d82b-abeb-0935-75bb193a097c,2876724801,17625683472738620242
+2f0583d5-d5b5-a5ae-e51e-450593a2340c,1486520076,4204505888404430141
+940341aa-89a5-26f5-6b91-a7a8dc2d3bc5,1458502574,12911558373168871135
+ea6d5ccc-1fbe-d167-241b-b648f5077d65,3626838457,15157514505614032748
+14faf820-8d15-9bfd-ae51-d92096967ddc,1909192421,12878768616938263722
+031293a5-5733-b957-125f-a57a8905006b,2879377454,17324328995167131130
+665625a9-3ec8-f5bc-6de7-cfa1017d630f,1431500099,16052520053771110758
+cf613402-0f94-dfcd-dda7-ac7c159b1cbb,3497895631,15510470636366823609
+78c166c1-dbd6-f448-332f-e20ded83d15d,2876969180,13541637710280811956
+e3c8101c-ebe5-9081-9476-343908a427ec,3374639146,4459153468752802497
+648e4698-92d1-4207-8001-031dcee60e18,4066186634,2584866154600802913
+1a89e20d-b34e-9d7d-fe8c-ccb7e9a798c3,1930522307,7038111916623374446
+d386a9e0-3a76-9fde-1744-466aaa3d2735,2827905582,5118157094539662653
+23943afb-215e-0910-f091-63586ffa2a5b,1384181358,13936347314129572959
+27b2a701-6af7-630b-7f62-ac8163290b80,37155985,16230974320740233341
+be8d9935-fbd2-a7f6-5d36-db9b667c8b81,4195710647,6222954892395074348
+8fa97f45-904d-9598-6ee7-8e49897d955a,1989667438,13345833526625108060
+4fafa626-0e9a-fffe-151f-be7d9e6bf5e9,751570166,3694197057167195934
+49962db9-b516-1165-4819-f520ea4df68d,2187568225,1697753501330604962
+cd70c8b6-67c0-a6b9-afc7-9edaa5fb955d,2188524988,1025814586700278679
+4789938e-f2ca-4f0b-cc91-b97ad3760b9e,789118710,5335125109302007716
+fa088392-d5b6-335b-394d-c0f504e617e9,2821803992,18367669131620267817
+be9a5622-f169-33cc-c748-992ec9516e03,4130708459,919922990558434553
+7267ebab-273d-d5d2-3e0a-02cfc867bc37,1606008314,5589625879144254927
+f24a792b-d462-9b1c-6758-8445475fb1b9,2410798249,17949138108475306373
+9e37a6a6-87f6-84d9-64c2-9cd60eb0b0d6,2822809038,4094939071904938545
+4c564383-9d1b-3a48-92c3-a4676dc9cc6e,3341239183,997389099496881174
+47886974-78d1-adc4-7be0-5029a29aaf77,2121172677,17408829520183507299
+a77c579e-6fb0-32bf-54c3-3b6205065791,167593557,8621798121845380441
+f589aba8-08fa-07a1-9b50-25d061115e64,3708564162,14481893448763665859
+4a57bd73-c9eb-e548-7e79-ae0782317447,2144527629,14856257264036232614
+f7a4f469-5bf4-a1b4-6313-651544b62be6,4196028892,10184289440924044628
+e24e3642-ec1c-9a54-6dd2-63abe176924a,1748464119,14679316057564130893
+3cab96ad-979f-291c-9a44-ae1422b3a2d2,1544683502,9367707907093705566
+c8edadc5-99f4-7950-73b2-2adfb6ac7c5f,1787844143,1075905561368274201
+7748a557-8ea0-8d59-1f21-3e61c45664bc,197697641,9045235390828752052
+d5690f7f-aa95-3491-3f16-d2f3be67f119,2208968419,2174577642449759627
+edaddf38-b1c1-6cd2-9cc8-24e4da772c34,2614449856,613969679557552110
+05116062-6e1d-7cd7-f76e-9e2c87c80a9e,3561538681,10321317495259121742
+35e68470-3168-bd08-6650-ee4b442934b5,2776668040,16220968938746299910
+acd82cf8-36ad-91c2-d295-92ee91477d8f,1020761105,8941107199738850093
+5a6d2490-014a-1b63-21da-fd89ebcc26b1,2263691741,6120266334126024458
+ee177542-1303-686c-a5bf-7b7b363239b3,1326868272,14620795427077589907
+3e318ed6-8186-9d45-df96-8fc64b80ff62,2178303453,16093353473242551339
+ad132b23-43ad-9678-f9bc-c1472833ce10,4096524899,17915614465598855010
+d6e91ac6-8a96-0063-f478-396aea238912,203849897,4292805225193488857
+74727381-3641-b1c4-e66b-313cbddc3c4b,3814009513,6475554871714934060
+236cba32-4bfc-cb57-e3a1-081f9c8f3d08,3365028106,14845216893252924546
+f9874ffd-10db-962e-c647-ca752cc44a42,3764937177,12586111407559308539
+6358b543-8c57-aefb-80cb-63631456143f,2637872646,11438474091787065114
+fca42cab-bcda-1c65-4c88-bc8e60568f8d,3430639187,15265066058305905731
+afc6f757-4c6e-a13a-80d5-a85d3c5610b0,2304819614,17053110420479466352
+922a09ed-b784-aaae-c3da-1fe43c48cadc,1592083449,14969840453733393814
+4fc33af6-61f8-1029-b300-2456e76bc0db,3498993862,7349473816683240661
+ee8ddabb-fa81-763d-784d-2ab9ccf01061,1903414448,883718399522643205
+b201be9d-a982-3b57-1835-5b7bd58dc50c,657771814,16720175431509433515
+9cd8fdd1-e71d-b3cd-9f2d-935a8f0e5cdd,1918478887,3800910036478332970
+12f6e92e-b983-358a-1bea-88b86281524d,2528421417,6440681795544908257
+32c783b1-e21d-e912-f342-ee25a706c9d7,3410481845,9479503302674764124
+5af68cb0-1fd3-f932-0c46-7dfa5308b076,711250215,18382315683665667125
+bb48d3af-c247-2241-0fd9-042682896620,1374459641,17526161718590275580
+07035c89-a699-e847-4de0-bb431b367472,4231792960,17258380399893936148
+4f99c7e4-a81f-9344-7e5a-eebed02b20e8,3837953698,618159513145889202
+2eb3918f-2233-7927-0a07-cde5a4a18429,1877613389,733936359822039672
+fd06ed9e-d22e-41e9-5b4a-df1b976474ca,2835639860,8601885391044001696
+5a21d1bc-cf94-b662-9ab9-ae71bfa3cbbf,3093529090,3990529288060371346
+9fac9f51-74e4-84c4-a8de-cb3cb9996420,805213417,12257819877624955966
+7ec511ee-e321-0ef6-a82a-330143cfb407,2938877530,9664123958085675507
+841dc6d1-abab-12e2-91e9-29a1b1447f31,4070428515,15836499706225596456
+09589da5-9033-41b2-51e7-4740884db3dc,2331350935,9644255841326756377
+f61b1108-453a-14b9-c9c8-d56b15d72b4a,875525608,2443498690211355124
+32322c73-5617-8b83-a79a-e441cc5022cd,3403969313,14378712939021551372
+5c97fc62-f8a4-ad43-0b2b-a08cbad511e1,558272960,16937789149732265202
+2e6f18db-44c2-ad90-c3fc-426c8ae03717,4001271665,9630767500013574059
+82442f94-fa13-1b9e-c623-fc63ffecf2d6,3679083663,9930008850868679374
+41fc5a4c-b763-7b34-8f52-beab448ffabf,1806683352,16591000844963293652
+0df91b4a-909b-b054-64d3-36d06b9e929e,372116166,1047686457325839580
+06f2057e-069a-bad5-17a7-6e1075840b72,996585443,1575020198175650701
+aa516391-6f30-870c-ba60-76ee2c9cdd07,2462092502,5316316013095558694
+497ad377-6227-e30e-9301-79d1d9e0a95f,3033190632,9435097885488323352
+d46827e6-fdd7-51c2-d213-691a3e9c9ed5,4204927607,2064017245551534976
+97544461-4c5c-16db-ad23-8cc9d3f550a2,564131021,4368593518439608823
+8f3f63a2-4885-d08e-9f9b-ee35f98e9b9c,1692130106,17601482600693033618
+9b9b949a-6bdb-8e5d-c12f-59cb1d1d1b16,1637908381,6132053867268762319
+b51d0f68-3d8b-3b3e-c6ac-b306b92cbad2,2166071239,13710035007818229070
+b5ad3799-9f37-6d3f-29a3-59e94ba594e8,2042237089,5551317071482899725
+ba3c05c5-3601-4a3d-2a3e-dba25b8c23ad,4244641979,308317439620204466
+c683ac64-4602-3429-d2af-107e859a86d6,2124421967,1249382084122648018
+b17648e8-d650-1e2b-9b08-6214babd010b,3126869124,2657339400714082535
+5a3f3b31-5ddf-12e1-35a3-f2253640e3ba,267419480,9544947691411897859
+5e14426f-f9dd-fb27-4e90-c2b117eb6755,1849167175,6990340407409140852
+674ff49e-16b0-e503-50c0-0e1fbeba4cac,3912844375,8588402454351649396
+9e383041-65fe-e05b-0126-7fc862dcdfde,2260926533,6701343361076540698
+02d9d35c-0739-0001-8897-437752d53aca,390057449,8471880941324165843
+645b8c08-25f0-5862-9c8f-ad12265d4215,1842011050,12378778698482952972
+b463c8f9-8987-fc94-3a2a-699ba2f3312f,1370314176,1929468241646117016
+3f844833-72ab-8d33-94f4-4b1a17b6ccc9,2867331807,14127664997483913463
+ed755f0a-7d0f-2e2b-d388-b4f3a32e6be5,1840750974,11848998351293530739
+0050c252-8df7-063f-4745-df48ebdcccb9,751817481,8891209850189967919
+02dadb38-d536-cace-d9cc-10fa3d0d7999,2096305003,14994662505163448768
+00089359-84bb-55ce-52fa-c446ea92fd97,1278509503,5119639444841568865
+93961eaa-6e10-6b14-bca9-a8f84e86518f,561972358,14419374515837857528
+3dc1b9c9-43e3-4768-87cf-a135673931bb,1758932676,2226963151261253304
+39cc50bf-dd6d-4929-b943-fc98c79127b0,411451389,11586936790845293725
+5bc7615d-e452-f6f5-1269-1f1543f6882a,3319473407,16349540016960314349
+cc039277-4f9b-73c2-e85f-2b93478bfc21,3073832017,16953338946359587551
+b1c573ea-d88f-8f8a-65f5-cd826264689f,3453014815,16943093575786427492
+6d7895a6-d6e8-207c-eb26-553907ca2014,1980232454,10348790571539972447
+eb0a28c2-a6c4-77f7-8d93-ffc63075c0c8,3907728445,7897732305739718319
+37d1dd4f-426f-c127-f531-b09e7300f901,2289054100,15836095131583914550
+bb1d3f5d-73a7-ad6a-8fa6-b4092aaf50a0,626378958,7030414037620694151
+78b75443-3fac-d524-f409-2f1bbb538779,3528048721,6254824689627193304
+c85d0b6c-537a-6c77-f198-60419662752a,1867112123,12648319576200133838
+675dfd25-86a3-05c2-317c-caf356389294,4238884603,3437412677088752369
+bda06c88-272c-eb99-35d0-5868ad108dc1,793403068,16722987045344831295
+b6f55810-21a4-4baa-34c3-00cd96c2a7f8,1805093692,8987527438027853193
+4a33732b-47e5-3a1b-0e84-70c3ff8a4789,2835198282,5569884786897534370
+eb60a8e8-f66b-a399-4089-90af881a5eb0,3563400206,8320259248605323152
+8eb6fc88-d2d8-b64b-374d-908762f9fdea,4044911710,3865481192411717277
+a598491b-0abc-6548-1f2e-fd48f862fa10,2029160114,4072110723418940988
+7e9e3915-6d2d-70ae-1046-5cfa6252311c,4214049870,11392083064197023786
+0231fd20-2d43-472b-5798-9f4528109c3d,230248700,13110003446244418353
+6cc41567-4790-1eb2-25b1-1aaf96a2d083,207953486,14066161841769473409
+25a3092d-9570-774a-8c43-b42a96ff1f7f,1589583867,12319145951300920488
+2b78a84c-42fa-2f6c-83f4-dbc2058c7c8c,1961644800,1148556755637060291
+fd9e0cbd-b61a-7381-4ae4-56e6aacab922,833770533,9648945840558118791
+4e06684a-4a78-0b06-54f3-7d2b5092b396,3694965915,1351410010884353068
+d2678f22-f9bf-e5cf-2ed8-9cdd5447aaa1,3796055008,18268984452352547391
+eaee40b6-ab37-217b-f862-dc0072168c5e,3902958108,3579276969250265055
+a03f0e89-ccf5-819b-efad-2777eb57224d,3923965776,3843319436050204304
+6fe584fb-13ff-4e31-8701-6d9821f49f9d,315699773,127220723103519350
+c7aace5c-1893-e14e-d46f-4fe2c77d532a,1812979649,13853713079461095000
+62be5d96-54f2-c22d-afcd-d72edcaa1530,3699809431,17953464270200804721
+88ad1b71-e2f9-c50c-a2de-43e96f5ed796,2663907424,6630008757974452669
+fac46c55-45f1-42ed-a9a6-cdec857fdfd2,3489779669,2400151274231970722
+e3620edc-4d9a-76f1-d72d-41c66f2c88c0,4199537467,9350037454558633951
+129e2576-e43b-a32b-3e37-054b66c1e5ac,358682420,16013382067539571282
+073aed7a-5b19-dcc0-ca7b-671ba834bd96,2109274779,9925489108123891127
+ef3d6d83-d696-402a-48f7-00b272432ab6,3471135381,15752791017294455587
+b7df00d7-41e2-fca9-6792-25d2914fc65b,3117487092,12304392429222851993
+85ec5654-e3bb-714f-e2e3-e94ea6089366,4081048335,17267861329899332432
+3411ef0c-0fdf-4075-20af-c7ebca8bbc38,1915510197,16147749653390959886
+15a3a781-97d9-df79-f994-5423bf0cb21e,3391459589,9801182768103885200
+3d4126f6-748e-b0fd-33b7-c2eba18f9ea1,2609108789,18102369382399068639
+f2641e31-c884-8ceb-e98a-0c024c13990a,410402929,17532582636455514982
+120114b0-3b5b-6467-6d1b-10531ac53a59,3498007454,5530593867544183410
+95058948-9ca9-d37d-5665-054533617eec,2462150254,9872376663117020197
+8d71136f-f48b-29c6-13bf-0d55a8fb62d0,4001553378,14732964811186738119
+cb498d0e-9616-3f4d-e15e-ecb83dd71841,3664370010,3671779255543847305
+448ec400-c4f1-0052-4370-43eb211bd3d1,2365876469,6593564774049969252
+355fa5eb-e179-040c-96a1-fb539811b5bd,785776401,8893822176842379845
+a4c44c32-1132-b40f-f9cd-4e6d9c0dfe86,2939239724,79748504348921187
+dc8b6e6f-05f3-b70f-7d87-02021f8a335e,117143241,2152691297673023975
+7659bc07-afbb-3819-8433-868e056cf44a,929168912,12883701633282879261
+307e98fb-29e7-2d30-2264-49fec776d23e,2720806213,1022805589016105980
+b0c578a1-2dd4-d08b-1913-114f85f625ec,1198323488,10505342139952982853
+f3914176-d209-4351-d9a2-708f2306f622,2344709411,12241190532036295570
+62aff733-2a15-7c88-9882-3d0e0406370f,148361429,18078062624296836292
+7997adcb-a55d-1ade-7b3d-813608c86951,2898599013,6627862805700365999
+d9876b49-0f0a-5aee-dffb-8b2346f32971,3058588836,8376841827608914154
+19a5f2bc-0902-f2c3-e030-a10412cbf855,3926205727,17606930272026643395
+c31f8ae9-b147-afb8-c289-82a28378fe1b,141061745,7538982756248744942
+b323d780-1397-267e-6bda-31a750fdf3f9,3592440007,18264400344719931706
+24f0900e-e1ed-df7b-f2d4-9885eb7e32d4,853340811,5790940854270164049
+f1260981-b536-5c44-0ce7-c32e4a304a5a,1299361645,12928578085382261882
+dd743ff5-57be-fe34-ff9a-4f6b6b725800,4091662678,8656341396782828112
+d885199c-e269-ab71-71ae-ae650450be12,2654944618,5349642071649053093
+e9170163-a605-6ba5-2e14-75b1364eef1a,3376892070,1527111501967944242
+9fbd1438-d97f-4b4b-9b59-496c72262e12,3915223748,15940799973055192422
+256fc881-734c-f8c0-b6e4-2a181979dc32,3529516840,5752389497411742573
+3abea465-2e2c-113c-b517-c352b104ff90,2187898504,17598303330632695517
+df55afb8-a888-c82c-2ab6-1b89f880a7c8,2966037579,4809673583706194891
+ac589e8d-b5ce-97a5-9f1f-f82e7457e48e,1396466054,15238490224548592081
+04470bf0-520b-6536-8179-710dc0696bb5,3577024723,9148071479078462818
+f7eb91e0-8ad7-87a7-2b68-c58d440dd05b,3183148826,1629294569767872326
+79f19c33-ed2e-e1c6-e92a-c1f85c01af21,2049299747,8677248645603994675
+0338ad22-38cc-d4d6-578f-0ff6fbe8258d,2170502685,11407368454710661058
+692f02ea-3a7f-7b55-0f7a-7506e6615985,4288347360,16383986050207278452
+ddfb3d3c-0fee-4aa4-ba2c-95234f1ea5fd,3797208847,17453598555164517760
+e5d4e724-8c14-2400-ff35-f5f4c4796e17,1851963180,9599113461419290221
+87016413-3192-d9e8-e115-576f1d2179de,1239488557,485578183529791483
+d334bded-3166-cd71-cb90-48991374b9b5,3557168328,11810551443641717331
+31aa43e1-0ae4-acf5-d1e9-01885410bbd5,1254172038,10585886880917764334
+39831e88-4fac-ca15-c52a-111460ac8ce2,2169208261,6497380897296069250
+63b77751-de04-d28a-e1ca-8ff4e11a5bc8,3792389268,8298584733937045
+dafdf63e-f608-9a5d-3c10-d2330c46c626,1259518826,6800579691050445938
+f640abf6-3b5d-b996-1b3a-b80ba60e09ae,3564494235,3392417884336891568
+cb4a21f1-3869-cbf5-cf1e-6bc53f7de3b5,3862470407,15495231393476470299
+003fd928-6ff9-83ff-3140-9cfce4f53226,2579928282,3925931505650371749
+3870299b-d765-b312-7716-92e268da9ed7,3402593135,12557565170200003597
+e13241fb-adac-db7f-d212-c33a13449f58,1498546717,9432189161489523113
+577132d3-69dc-e85d-23b6-303121e69ae5,3064128561,13734302365473157637
+1af291fe-ddb4-8438-f76e-18d8f5992b5a,2416978004,1978246863073887252
+91dd8704-b933-9fe7-077d-47db09d79ba0,3359805782,11869669386331242966
+b3b3fcd9-7771-b227-fd2a-07edc04c4a69,3467053703,16939274562116549190
+e7d04c93-fb86-4875-be32-1924cb2a49d4,2854999200,12132869300213693478
+4ed4c1f8-9793-6dd3-65db-26820a843046,1582827934,1105184820465282814
+b3b35844-8570-db72-34c0-d26b4bfebf5a,3285033850,16169676593444775363
+3e57b69d-165b-dbf2-cddc-465e8a34ea1c,2507031861,9954649664738068416
+53449b26-613a-3d8f-ddcf-75145e2db596,1673839949,5746734394954730893
+dc3dad8c-6039-d4f9-e068-21cfd5288be8,3867047514,2547437135689835412
+06488f35-eb6d-0519-397e-cbbeae22bff2,174639906,9473464971431937907
+8475cbbf-974f-9176-0f4e-4fb73e52f6fb,2453859348,8582215363334107340
+e4f382c6-741c-27c2-8532-346ce623db03,176414059,3710601512391605192
+a4fb8a2a-1183-d11b-4fc7-48f0b9869a79,428439456,14341146797594341766
+87bd4000-aaa9-ad22-1f7e-4457af2d415d,829463059,16918339875765684644
+7930ebd1-b296-42b3-d579-f7465591cfde,331089653,9797009456272181729
+b96e91b3-8851-f8ce-f021-1fcee2969b42,2080133690,13751169356216269292
+8e3335b5-cc24-9033-f6f4-2a70ac20cfed,254316541,3426876178257603512
+a665f8bd-2449-1f2c-b6cc-61d91d50e182,181911293,1561689915878715932
+8d89c3c7-7345-0ba2-519c-033461198fce,4127973041,3805964102689669481
+f602708b-71cd-33bd-674b-0821aa617a33,3078721645,12520964227120325106
+4916b7ac-5ad4-b419-f8d5-20d5f531c5f5,1264174221,254957207100910742
+bafa898a-edf9-c7a6-11da-3453d06ba895,793267639,6212805147260951448
+648702e4-feb8-64a5-f6c2-3c0d79ff8047,4144815714,13494906595106428695
+cb75dabf-a172-e29b-fd2c-0db4cf802755,2970232133,2901427602640736509
+4cd3e4da-3d58-4a61-ccd4-ccd45c64eff1,3494341808,18391451799176758973
+08fc5182-13db-24a1-8f1a-544fb39e3165,1482344360,5468196547130644202
+a340b91f-1c32-883c-46f4-f112d4df6426,3299485882,17141209773024164897
+77f412eb-2be1-9624-e2bd-c5202738c78a,2866343736,9374518785468262429
+5e569b75-e5a2-74a8-63ab-4f258d07bd88,120251751,14993590740311926492
+b119c781-671b-c8b3-9bf9-070e35a36fd7,1517104739,15567415220932836625
+03d57c14-322f-6fc0-3fbd-af66070c8bf3,4050178250,16009829738675244015
+2096fda0-3f23-be9a-88b9-fe8d53b66a29,1256815616,4314315756011255883
+d411f1c2-5b88-c639-8c2a-6cdd5e4cd9bb,667191905,3680608695366243491
+658dbcd7-6914-d6eb-6391-0f319dbc3a86,112696184,5591045152626091106
+93cefc36-07db-10a8-78a2-9af5f8a6b0ac,3643845591,6195254994701127011
+012e683c-d9e5-f061-c745-36cda1614849,2163338824,3209829044334428990
+da0fd344-4790-c1e4-4cf2-0d7b902c73e9,2094875379,13990191227371727726
+dc282f02-a25f-f4d6-c9c2-e99166865cbc,209972413,5951949869260197698
+4abc9d4e-51c9-72ec-1af2-eb3178758e50,1764828276,5702025646873285854
+8bed8b47-1738-59ed-dd36-727e5a57e3fd,3282299764,15689403693530482787
+03a5a831-2c7e-ece2-68e0-40e54aea1ce7,3687381777,16904933316456107108
+f2449c31-73f5-619a-17f5-925d4be908c0,3756379088,7904166933800212299
+344a5cc8-36da-fd13-ba56-bf21c8cbc07a,4235745986,2863174883869701748
+fb9591f4-e2ea-a880-e6c4-33e64b5c5766,1651621480,12977919274173891262
+4f821f17-74d8-39a3-a30a-9bcb4df38cff,3592468309,6461257875348040995
+6a1d836e-8749-f878-af1e-8444e0ac4ad1,4086033654,2648190674990558952
+3ef0e801-b0a6-bdbd-31d1-fe577fbf89fe,3912827286,13563410865375607913
+3330312b-9d56-9100-14e4-5303d859448c,2214251455,13752234360620405031
+7f7d2c9b-297e-f748-5785-b90055f12285,2006667548,11478568695470642206
+492d1726-e6d0-a77b-196d-9d326523a02a,1364153452,13116450170320075694
+880afea9-37d9-00b0-57e2-4df6e035fd70,2506221939,11109634308979380779
+e679c811-8bf9-ccfa-84d9-12c4b0080e37,3518399726,9321764855217566173
+8bdfc4cf-079c-4640-15da-e7d886d771b8,3601977478,14775126506119045570
+71234fa5-47ad-bb67-9d53-f628137b09c2,1998634941,8511767772498427230
+37262e11-fa2c-8513-23cc-3d93f03b619c,3541460227,844456607879235425
+13ad8dae-4e52-902a-282f-25e6495915e2,1987106434,7340810663505445254
+1e22a6c0-0e04-7e05-1452-bac703949cb6,2353969071,3296462820081445456
+ac1a9580-1ef7-96d1-df78-4854afe8623c,1601867510,3864836259230572635
+c59c520c-e338-453d-0082-13b1c4cd5df9,1205225244,1145595224930760562
+b9f5abf1-e92b-47d0-8bbd-b5145a3b87a8,3423088718,324669765980138053
+b3fddcaf-dd0c-497d-0f94-91c608211540,567481690,15243273928575769675
+c34b47df-6bb7-003d-6d29-d6a956afbad0,2418083177,17020218384644917018
+fdea4716-86d7-c61c-3776-154bcc9d14cf,3573476944,1091761511321695181
+e17e336d-968c-d45a-1c12-49b793856223,3588928813,10424194494106771167
+2b986228-0e3f-a253-b9c6-a42bdac7088e,3745211719,6270237645169187519
+4ef11c6d-5053-ab9b-428e-f1b92033ac6b,3436199193,8256863349026022868
+49183abd-c7e4-9756-3ba0-2962782f71ce,891476018,15086988174425375505
+c3c1eb30-ad82-b4db-64f3-d4129d00de4c,2195710431,7143103763442846845
+6c111673-0fbe-5efe-7893-a83f7ef0c23a,1726408320,6644855175066286432
+54287098-e8f6-d7ef-d5d1-45140cb9d3b9,1728646557,2357272968789055907
+43de8b41-913f-e0f2-9bd7-6688bf69a3ca,2151593893,12555552731445441792
+191009f7-0d98-450b-aaee-c44840f38635,1885759683,18258953504270522132
+484baecf-d16d-1e38-d2d5-239291db405b,1169542075,5500343432910112292
+627593a9-4da8-e8cd-2135-a5bd5c2e5315,963680492,5713134105586959410
+18fb48dd-9b32-1b44-36cf-a69dc0671bae,810282092,8930170330843110721
+243c976f-efdb-e006-c8cf-cff33d6f239e,1572645645,1810658073914889672
+2e7dc230-4558-d93b-73d4-cc8157e2c1fa,1364829482,7131535348418879435
+c5793577-1f66-ba66-cfd7-97e6ab1a96a4,2192666690,3206303749935885414
+80c5a9a9-a349-77dd-7682-c239ded94887,1542825258,591975501215705305
+c55f12c1-70b6-c097-be33-08c8823b4444,3065468873,2820901372928468126
+6d47223d-c0eb-c59f-b7e5-385403b52d06,3296211344,5770931692169882365
+3e026b36-202d-5e96-1e2a-19285b492f51,1494360024,3636343752649060060
+7826cd88-bbdb-ec12-2530-874208404fdc,1927608276,9193551443123645752
+a26aed13-186d-5dba-d4cf-5890ac3e7812,3514866260,63703568638202747
+e65f40f3-392b-7933-4a3c-f31148256a9f,347944298,15310926437490379010
+9d94ea84-4cd4-7614-749b-040b7623cc65,2676735696,16694106895092968190
+007016a8-b6dd-7fad-b859-2ca3dbd06f28,1553127709,8372798479072778606
+23478257-5282-ed70-ac8c-9935fa4c7023,444702812,10568166971340616472
+d96f11c8-da8a-70db-27ea-49949ae6f336,3690187174,1648671166128580874
+4b8bc82b-56fe-6198-fb5d-28f9e012ceda,3625836535,5736316897951007875
+58d0d38c-bb82-b788-a81a-b6d1ac37c693,3351627383,12739722938857763886
+27487e2a-5a0c-1fe6-0ada-c02613e94149,2823257896,5232849822505398697
+32600686-979d-e32b-95d3-c6899e391070,1276146591,10658022295391490566
+fba165f8-1c38-06b7-c663-c5ec23698a46,2485713373,9463857019617236483
+0a53e28c-c4db-97aa-9a66-2c0ee59ecb1c,297805195,17285841823433505617
+335aa980-fcb1-abe8-7ed6-96693075610f,951810632,7370357094890590130
+21c3b426-08cf-b669-80bf-83b6be2a0742,1644408470,9706107201410473727
+853d8e05-c7a0-9c9c-3815-d82935e9f9ec,712812401,7749943670542543899
+1215e402-aade-63d3-4c78-99112b1e69fb,4213423068,10173916578260013743
+3b8d1346-9ee9-18a3-9d5e-d61d85c0b001,4236028232,488776800080246307
+9c6572fa-3a31-10f4-0357-90bfdf4beeb3,3820254460,2629704485945946649
+772cba19-5f44-c705-09c8-6089442d5495,4018348873,7761283618094601710
+eb74bebf-35f4-7ece-1fb8-9dbb4ddb5a51,548851870,17338592704282587412
+eb41ebd5-2131-f30d-3fe6-0b2507889631,3812782943,14971891959920657561
+3a7a584f-5744-d0cc-1ecf-404d30ccc1c2,1631051557,7764344811462326388
+0dab91c9-531a-77d9-3c74-c0b80d6c9e38,2709013975,11858921630550783477
+7093c190-55ba-1362-b707-47cc5c50dee9,2708750871,14906861029838577014
+6b0f71d0-0d61-278e-ca6c-ea900b330f30,2413233719,6863743779874332674
+7f9fda02-5268-fede-bf2e-54c2cce8199f,378198445,13972600619209776355
+f3a5dc4a-eccd-86a9-d967-c01ee3b279dc,554151060,8714159312621396678
+b395e8d6-7175-5f6c-d941-35f8b5ceaad7,2666823121,17694168687990223001
+6cf6e8a2-7df8-dc56-24c7-b4f4c03453ef,1056829948,14551376116358240629
+ecabe4ac-b9f9-3be6-1987-fd9af1b92933,1825610020,9313018300681994973
+ee8ec480-96e0-4181-0b4a-834497085e42,2209419099,14560261703545234727
+0c007b32-54b3-9187-5f63-ab19b785791a,3697285366,6642248271307027636
+c2efa474-6cd8-a7a2-aa93-26767673d53a,1149249843,6167969453905903204
+69c8bf44-e96a-888b-1d27-9adc2a1c4dc3,790864612,16651095434624224846
+cd37b355-47d5-64cd-9204-a918b8254fc4,1682281226,14674072991789976600
+aaee3cca-0cbb-c1ac-94b5-2cef99657da1,3956197138,9305286918756695732
+81e1b702-3a2e-e277-f60c-be820eacb203,990570304,3375004030770039719
+881e0e48-d3ca-6749-861a-b7ae7374b094,1456790106,9527205724288449474
+d3fbee38-cb47-4a13-3ee3-a04226190a31,4274952504,4241425085066404084
+78585f0f-fd33-7063-7383-cec1eaac04a3,2956800053,11233522905492825134
+95770c84-3706-f82c-da33-a5b6fc508c84,3248824256,12761211977519644959
+5c395029-d3fa-e790-3071-bf5a628cf354,2978371358,7456707802461076622
+6e4a40a0-b5f7-bdc6-0a76-ece35e2ff87d,1029893830,5909363332375697984
+dea8fae7-d172-cc39-9e73-efbfe27f7bcb,2153996532,16582280395821403447
+da74099a-29d9-01b7-6965-84d428ef643c,77947821,9429080291516740434
+f11e76e7-dbea-a082-41d2-aa5dc9d618b3,1576808397,17622909678599356663
+75765047-dbe2-98f5-f4ab-115a66a794ad,2749830389,1977065608594385576
+05967674-7b0d-bb33-c485-9246aaa1aa3a,626058183,569383165317125633
+d45c312f-acc7-7fc9-9514-92e7a0d8bb83,2596791571,1308681710883598501
+52285548-d709-4c0b-ab7c-b2e5c25fe1fd,3276098262,18372506196746462302
+60a08cdf-f8c7-4dff-b043-5f4091edd882,2583216987,12174730066971402335
+bdae035d-cb5e-4641-0751-ee0c6b7e1658,3732989391,7350322715517740302
+9e8a986b-9812-e99a-20b2-9387591a96fd,1006766984,17305797585818988316
+5ce46e07-5b8a-daa4-4c6e-c313d9aa3730,1025352001,9675677090054272675
+baa98acd-bec2-c665-78d1-6ab33b57848b,4177148184,9613722508827739569
+7982ca39-3146-6d60-b306-0577f769344c,1877159322,4032052560421956120
+5dd93165-2cd6-df06-8c9e-2e2150fcf2e8,3271440107,6595954850892028051
+b9c321ea-d3dc-b91a-a582-4bff4889b616,1869834319,4330239846390698847
+d11444a4-23e5-150d-467b-ce634a16a0b3,1008467425,14746197216031817866
+36f09d6f-0190-df5a-cd9c-7a814f11c1a8,1428256882,2969861376033627366
+079e6be3-ac64-d5b1-05ba-a392343ddc8c,538077211,8260856934114650483
+6a75f74b-19cc-d959-9fd3-ee56d5afa857,2139193506,6838968287725958465
+4f166702-e270-ae1b-da5f-211745d3a04b,2433411829,16189793599233997000
+aa9abd26-f7d5-59c8-c60d-884428b096e0,528558907,8494977350586702269
+8db00ddc-5351-e88c-1d21-01343c3688b4,3541204907,8461041406610193597
+ec018d46-7f89-acb8-6da3-4f2d45389f2a,312204226,9141588622473867156
+d04833e0-be7e-df55-8a5c-fcad1092614d,2262106462,2762721972593782962
+860506c3-12bb-b44e-b996-a7ba721e0ed9,4138135020,10517923623737894371
+8a0685fa-be85-8f21-7e01-01839c5b5b14,126943713,13356219102825386494
+83b84c0f-25b5-6519-9465-f27a51b022c7,3141353394,9072174529959478886
+c9539fbf-ddbf-3a23-cbb3-d358bfd2a9a3,3757342182,5045063118290031938
+31fa0755-6d16-0afc-8fea-09784055fb53,4165222961,18124401751856294544
+6b53d6fb-c613-011c-28a3-dd1b67ca6499,792053589,7574196071173035842
+6e0a9965-ae36-7b57-cbee-bcd1a330e42b,1614645973,2234732721889685592
+d700278a-8d5c-abf9-d830-b9055cf6fe55,3897513412,3825522884831647191
+7e696216-95dd-3a2d-ebb3-4b1cbac1bbbd,2205989310,11477454070611058498
+4f98bb0a-ee2f-af3f-97fc-fe8fd9c747a2,1333236219,16751400530721726646
+095d894a-35c0-fc39-bd20-1e4929542b76,2369582138,15466954739253846208
+b5f4d26d-0e89-b7f3-1c7d-6d7529443621,1770212732,6437838032657609719
+61cfc86f-0400-be99-fd89-1b75198c7505,2215328568,13789363783469065759
+df8e71db-17d7-37e5-d109-a5b43a3c2b93,3568859162,1399426585857398377
+048b5920-831a-2ff8-1075-0e151e5d77dc,3206939685,13481037633182821554
+5c9b6964-008b-b7ac-5a45-6168853b6868,2154164812,17100863486959437286
+bffba546-83e8-b6e6-f3aa-73ba6280cfa4,3143615055,5490313677641717871
+5682900b-d86d-99b0-82c1-f8500f2eb72b,1141829302,5754502393400452841
+d64d404c-8137-3625-2483-57f399117f56,768522879,14598211359052112452
+cf7ccd8d-e343-9781-3155-2b1d5a3aacec,1134121349,8933768590035532852
+8ad38231-7634-c9d0-422e-d30a83d42c93,3303943369,8156661526228455733
+b8428f89-0c66-ade8-6014-64c66c35771e,114432722,551960653624534966
+b9e245eb-9c03-41e3-5ea6-8b91dd850dfc,552146751,12241736662338572612
+d83923eb-8d1a-a83e-054e-1650d22b3865,1660308906,14167988499405956702
+561dd283-5098-8c98-970f-5be3cb9ed095,300435174,3926996145826802057
+549fafc4-1618-8878-5faa-0e4e31bcc95f,2195531211,15058397592163502483
+6afbd424-2f93-d6be-98ca-61a44f07a1be,2872855066,511452356986036295
+b5753f02-0f09-ccbd-2d5f-458dd09640f9,3067173437,6514890769144261074
+9b8937ca-6e4a-67cf-4e39-35eeec7290fb,3752041464,4406152295617129170
+5602962e-e51f-4703-7377-5a507ac059b9,360491171,12836190010045477799
+a0285f8a-764d-41b6-4c7e-4171d7bb37bf,925786120,1397042425574560592
+5ef9bba8-9e40-6786-381d-18e9f7e87f49,3710134704,14989696549722735262
+4859cb2b-4aed-bd13-91bb-864463cade99,3977753848,16894253213718861827
+eb6b4067-c1e2-eea4-b68d-5089dc436704,1408564884,12238579918812024512
+d5d25341-2504-d65f-778c-da619f1e03db,1337010002,14445647184888119813
+ba11bf6e-1a52-a17c-8d4b-08dac0e90ad5,1285424705,7907564876607308443
+66d2c70e-5a04-ecaf-0b08-8ae2c03e3977,842388519,10388254716156025072
+f805253f-8062-d074-66fa-d939c1c33dac,2375621815,519660009032019930
+8861fae2-4e25-252d-8c42-81c8d5a4c01e,1115594024,14943128511763197997
+2a2d389f-2590-14fe-2f5e-d27f77a2f150,717956083,12369471173850593027
+bbd836d3-a58f-385e-6768-f035a37df721,765834973,10407461372923089404
+9eb6978a-9ed5-b492-0dbf-e2367e275345,3814635871,13551304814267635179
+a80ccd82-a151-b1f7-85c7-e03d7dd573cc,2975253354,3837543238918432764
+e63f9112-8f25-1727-c6ec-deb58abddb48,3706139417,6314830481143816127
+091e1f7b-7c89-2ce9-638f-e7c1309cd3a8,3396894579,6834115592459279568
+472417d8-f715-30a8-1123-3d5774ff80b0,3921183784,7172324990722093694
+0e0aabda-f9c9-ec1b-08c4-33961126f3dd,2897182915,10882222374801561000
+29448358-d80c-64c4-9ad8-786d234b4dcb,3580026416,6653466789896810192
+a454be7d-b7b3-4639-e9c2-2d3fae047f02,4272243069,15204344879854666120
+1b0a4fbc-377b-0418-660b-2bb61330c48a,4014002057,1252412975389181112
+aa79cb4f-3846-42a0-2308-cd64e7d74a88,1257847490,1673550591370532223
+4059353b-ffdb-9916-1686-539c5f852969,2243848011,11738927568423628489
+2da3e2ea-03ba-5e83-a034-770bd26b651c,1431818765,14044351729211092705
+75d29018-7447-d84c-ff24-535271fbb7ed,1431272250,13655214672073534861
+c4cd0cc2-52ec-4aff-ad02-d9573ae00f22,1800434289,5992998152752885931
+9def0cd0-189f-1be8-e0c3-f7510b37c56e,1068492530,11875114029489520674
+d4a61f21-f680-4a0b-a69e-519b37417b55,991339365,1136477701986107842
+308aebfb-ca04-82ca-60c1-0d5ba5c5526f,3996687892,268758596725035263
+0c9e1adb-3658-0277-0df8-9f9819f78928,1038529029,13126535465066989521
+74970983-0011-ca3c-b4ec-64588a8a6f76,1009340461,11556213686410771310
+a7fa652b-5a72-b9af-7e24-8fd522e01179,274413937,15884267574142385237
+9a751625-9539-dcb7-42b4-35ea3e25366f,3483987560,6022044165730711422
+754b7927-1e4e-065c-4ea4-fce6e00202f6,3068732959,2288658882104144102
+ff501c73-a32e-b926-3ff4-f29478752aef,4087735980,577903466776917320
+b583db98-9656-edeb-57f0-d8f52f39689a,1445360431,11148877093305999631
+92cef826-aea0-7a50-9bc6-9a26f3b009f3,327062610,17842790465388579428
+b3a1e5ac-95c1-5724-12da-bbae5858906a,306810389,2158228477185740261
+97f70ec7-6c0d-2635-ba14-520efc9e6b9c,1029402511,927768803916895678
+372e793d-1ba0-d88a-aefe-d5faee6e7610,2773729450,4700543021833619094
+d8c4eb2e-aaf7-5b15-73a8-7aa29bfcdd21,1341996493,15725615292984540178
+8ed27412-4c78-957d-7c1e-a2a7c243f99c,986724561,11099767798453203296
+4aab7b92-5da9-00c0-871f-cea80401841c,1091550073,10193027063699951552
+9b38fdf0-8a98-2c46-d0c5-188ec2d83609,1429915583,13411558450288057795
+6361c0ac-dc06-5f50-b3e0-fd9786a83a77,831175618,17228754209239237827
+2a5cf2cf-8c87-a2b0-7884-7cd3aa2dd665,3400993895,1116265165883244317
+4a28e9ff-f66c-5ad1-832a-eb2efb18cc9d,2969605930,3221110166846064227
+f5c4df37-e5e9-6be4-db2d-7fdd5226ed51,4070943144,15036172375389174751
+30d6c1b9-e2f0-f675-e243-d48417448485,3258896283,5639283219705109144
+0b524bd1-d8de-0a89-d334-5c24fa1cde3e,1972174696,14304228144044826114
+ac8ebd5f-79d9-3e18-03f6-ba53516af7c1,3001134740,2698469461524052254
+80640109-7204-54f8-52ef-15289d9aca22,1767025520,17176566131784549487
+81db8186-c206-d37e-0656-a6e51c630eee,2734508056,17056368628793327919
+c88ec518-b4c2-68a0-af86-a129a147437b,1147776529,9818877984556541361
+a534a2a0-7910-b34b-bec3-452daae09b9c,356147291,15489165710709145534
+24e2a5be-d1ec-042d-30c5-c31d8095ee31,720252818,1731266875450134916
+1ea5813f-4a0f-24ea-94f5-e614efe120ff,3757446148,17018263470316407325
+9c930201-0b81-2237-609f-1a5bc2512a11,1686271257,12721036588561474377
+af428c48-06a6-1721-4b38-1b5fd02c86a5,1069718108,3322449320274719352
+37f9c338-b0c7-2c4f-801c-b5eed831f7fe,2196385194,7115048032535292418
+cf378625-9b06-1e5c-a9a1-647eaa01f127,3346702327,9789853134780411581
+8eef5a9b-de8b-f312-efbd-80695cec0ace,360483081,13137904365433034035
+8559b82a-c47c-986d-f14b-d74729e381a9,1678902318,15036442065228983369
+094f64b5-928d-e62a-3371-b2b5e0a0fee4,2515570382,17179771420974892312
+aa558455-0bcf-e407-a271-91afbf5c48ae,3900471176,2499973929987940490
+ba19ba50-c326-97ba-bedc-314a6976fa4e,862981215,10173193285260393757
+8facc5cf-67c5-f099-3029-584b17d2cbf2,3794835925,18244926527324146770
+3cfef294-d42b-591d-f792-ba9eab6eb4a2,805439472,16484124139608014110
+2b775ac3-d12d-1465-68af-877809069a21,1792535909,5917958443985580824
+d18b4df6-6865-17c2-c1e5-a7e1d8f32d5d,2271511784,12882179271972828227
+c2cc6f40-42e9-2a57-8e9b-084895f60055,277276577,7298231178451716014
+50476f18-df5c-afaa-3ca7-6c505d2c637e,3738803031,18354035813739860521
+ca78aa48-8eee-c803-8dff-749adc487da6,1183751484,16184428430792270841
+2c0d7f0d-3610-cea4-0ef2-07c45c8e75f9,1081345100,15562260909287678107
+04891015-1142-0f86-0c99-d81d9dc8dec6,631578392,1151332943607866344
+162242cb-f194-3485-4c67-1f85ceef0a45,3611278971,12744033294292168951
+cdfae138-194c-42fd-b9fc-30ce12837ee7,2143621865,8565379113592235988
+293d4dfb-a3e9-4271-2d37-04d9d2139986,1981092289,12988262016284490795
+ae06d7db-0ac8-0491-1d43-e61aed7b3cf9,3155090827,9097156832182827583
+2338f806-6e54-7b6e-2628-043a50147c91,2919929025,6541952787194974138
+eb6b47f2-b101-274a-6e1a-4075732132ca,3599180596,3850712002563581522
+89ad1d45-5b1d-2e2c-17cd-c6c586a035d3,2399154281,14197591247354782950
+6350dd98-c7fe-fb31-5584-33c2bffe51a4,4025223324,12069402270218475443
+ce606084-1ada-a29a-f7ea-a3ab09572136,1201936186,1921858280092555622
+5e2bc86e-622c-f130-b34d-65db1418a681,2244742139,13693225971937220056
+4ad8f030-4bfd-a1bf-edc0-cb6827ab027c,399033569,6620328619198935517
+45f314b1-5706-45cf-7dca-552d09556804,3720019976,9499644987209054773
+34cfee9e-c570-c39d-b454-09a944ae5df4,2005795555,7392053382227072261
+824da91b-7730-7a79-e51c-b1a4559f23b3,1375758277,13251008952029607810
+442fa883-9dbb-5d24-7f50-83663d270456,1682744492,4144153228318517248
+80ab7acb-1c38-2aba-401d-d690d32230cb,598055575,13872215537284675018
+ea73c12f-4ea1-51ad-e189-47c896b38f66,2184949605,530715703620991788
+e2168853-995c-6b0a-22b8-37db886b0832,2248581931,13377100496862420113
+a84ac302-30e7-7957-e185-60a90773fc92,486183467,3753910865400602029
+2c9b3de5-7d10-816b-63bf-fe8978859c86,1040095597,5866597864148956610
+1bdd8bcc-cc68-b7f9-f3fa-6710ddcf0f25,2603223527,6327638305094811791
+b3268742-d91c-540f-ff35-57dd55f906ad,2794130729,4367776197227762043
+4f9e270a-0398-23b5-1011-b04f8f5dcaa4,29970997,13684443897170654774
+7cdaf825-d339-49c8-2f85-2375b8ca9bd5,884117424,785436835473590894
+aef6810c-ebe9-dbb5-766e-4266cb478356,2401000754,5449553833355649497
+4b12bf1f-1676-a551-2635-642ea4245478,2284660228,10950341072474664679
+be712110-a9ae-576f-bd04-7f42f9425e58,3481456477,16623193653385991650
+8a7144b1-546d-b39f-2a3e-d2cb8e3e17ba,1896604130,7168339106352179353
+4835f016-bfe6-f641-e3a1-88dd158b6cc9,2511979142,43356969220491625
+6f59d7c8-01db-5207-9b9d-7a6f6156cc7a,318989799,17698605426465436553
+0828d070-123f-8442-193d-e24f7226425a,580393838,9873724618089531577
+32ed45d7-a636-8a3d-c257-3cbbbcc5ddf6,3137551458,16673021353071069893
+bc3e0494-3e96-1664-e812-f31bb0c8aef6,2877973242,18384103526620516353
+028732cf-fe0b-7268-04e0-53549a39a407,1117969279,5592583251263106765
+485afbbd-623e-0639-26cd-530ceca10726,3836994715,3417573415289944801
+05a3adee-23ed-d393-33c5-5b7803bda16e,3918453648,10141865091182462879
+888f3ffa-67da-8bf8-ceb6-a1dd9b68a752,2935464339,3678535896200499250
+c96f6c22-6e3e-c566-2623-ff890d5549e8,2911425750,12713085262022737520
+267b79b7-fe34-dc33-bdac-00af86681c64,1823963155,6221559534573489467
+b37edf61-3531-c1e4-78c7-5a7be636f446,3761561038,3345510061651192348
+b026123d-b138-fb3a-32ac-fef4541132e5,2353581436,15545915814800058027
+ccab9c5c-78b0-1a5a-11e7-5800b62032c7,653952054,583424927906084653
+1044bc1b-1eae-addb-bc1e-fd5e08a23e3c,204482612,18341859005295411615
+6b110248-3c79-bdd8-18bb-dbcf6b3db121,1171487622,3604415340901211340
+75d3ab9f-cf10-3550-b07a-d6034fabcfce,1120252914,12542146371560178012
+043c8776-5649-4f05-df65-9ade31554333,3875221305,15497771570010726918
+ea11bdca-9406-0f48-bb0a-479010dfdd11,1521053470,15667334750241177365
+0eedca8f-d3d6-61ac-4797-22e4879534ed,1380313327,2480319330261476334
+5dd9a6eb-53f8-5ba9-cf60-c9e5556eb93f,1124423100,5130331650251929858
+b817e317-9da8-cdd3-1564-c732d4d813d6,1952644121,16775640490831035508
+9a80f3b9-ae9c-afbf-011e-6f96c56572dc,3387491718,17046431509403602188
+c011458d-a227-5761-2ccb-4058f5a66a38,537079261,3934412337748163420
+3c453695-de83-7345-34c8-2f1b5c50fef9,132722599,14785854205979074438
+0d150797-25d0-ca9f-57cd-393804b6a57e,442901002,13851371211845719644
+4583cae2-8e20-bc20-1d4d-a847d12729ba,3656049479,13660766027829501699
+d0ca08d2-e71c-3527-db7e-67d0b8d9d5c4,2479510342,3846169532819018981
+cad5cae0-7dca-7039-fb2f-30249f373cf3,363331253,11129817061244570441
+34ba34d5-e7b7-fd56-ae91-b0cf3dd085da,2657509762,15218537369201793724
+d414f758-b0f0-5765-94ef-2e321b0fc096,2261022986,1861004696768696017
+e7111ac2-86d7-8519-44d4-f95cd2fa7d96,3914865463,11916108448699078139
+3e50ccfe-f39d-29e6-60ef-13e36010b740,1988348483,13296580390476479919
+48d17145-f1c6-2578-74e6-83b6a8df0b9b,2258417152,4675573846818099883
+7ed0f5f2-4aeb-04f7-fb2a-82e67996265c,3872356941,2182211802081495308
+7e04162c-4644-c4e7-db70-fc89c80f242b,2411807565,4998616361896610493
+b23fb4c7-2238-d486-c610-18eda819a648,4063920916,8537877006565346882
+110e782c-b269-a2a9-ad5f-bf8adbabea10,1505539098,14251067899816111177
+f365a638-7d10-23c3-69aa-6043f383d3a3,135946215,12785874191521376471
+d9db44ed-4886-ea32-a91d-75c9ff402b40,2797426397,10348478175640361854
+fde2010d-8df2-2a7f-7390-84c6f3e746b8,653996077,11037305888277609883
+b9d1dfcd-b443-3fd6-74dd-d445d493198b,1984558547,18305337089889862807
+115d2042-9142-d4a1-e3d7-5b0275dc8e22,4251040150,8074804555927217279
+17ad2211-8f4f-4fdc-7f8f-bbcbf37dee27,1897169051,12574472890115707426
+11fc9748-2e7c-174d-db87-4d617d188d4d,703869122,17361076089388791372
+e4a237d9-a88f-5281-d913-8732c47bd778,1281145751,13772415361375903471
+535df400-c3b3-260d-453c-4b7b22535ed0,3225389678,13411488012691790427
+e9a5a23e-d05d-417f-5a43-689caea36b9b,1830982753,1616767575927794404
+1fdb1e0a-bcc8-21ed-c824-7f9e9dc33f00,3475071726,3052396098319386189
+1303879e-0bbb-a142-a84a-1a941156e511,1495634309,3327860762337538714
+dce531c6-70c8-2463-5bd2-3159baac450b,4276841442,8258542407783061021
+f5790693-b0d3-24b5-c3df-c2e0880f7649,3364466871,5489307719641783737
+35bec13d-4533-28ec-bb2a-e51b1ff9754c,2609416551,1374526167043073288
+c236db1a-463d-f310-7689-54fdc50f3703,3162767839,14888189106889853328
+7153702b-dafb-3d10-0ca6-a8b6e6456739,2453992959,12579946908063718939
+35c9f0f4-68cb-9a3f-8bc5-500bf05b1e25,1431464209,16838885079740023936
+566686da-bc22-9c7e-86f1-0efd5d9d9b0a,538613837,8610383065547810806
+01a715f3-8e87-a19f-4947-63d67c101e23,1011304019,8124603770844285500
+7e0a1530-4249-3ae0-563c-857ed7002bf4,1183878182,2673005544767872577
+4725222e-29cd-3398-02e4-25db5603a4a5,2863729798,17016784978493607260
+e5857273-69f4-0a89-177d-9d34bd440612,1307180533,7646895486990915069
+c5e22b49-2f1e-3025-b3f2-c876d91b0e8f,4150339972,4147540639597690588
+6667382b-71bf-9d69-8db1-aec132a39d08,1059612566,5253092182283588896
+c815d997-5e4c-686b-7590-11e1cf5d57c5,122029446,16746407187842237780
+951ecffa-cb13-614f-ad84-27558cad2800,2804086357,10369783450956682080
+efea18cd-51bd-1a83-7173-262885e9d6b0,3819657286,3268413207259540228
+cb8f0329-7a25-2719-1378-c65d04748d49,3493605164,7355412609855192444
+463b8a96-546d-d021-3847-4bc0345f6987,467572577,15022937746510725897
+0815b0c8-2a03-ffbe-482a-961e8dccc3d2,1305638448,13806985879714396389
+94fd2e89-cc89-712f-3fca-8386714eeff9,198229766,18109578979225734351
+0e12ec8a-cfcb-9c90-a7ea-bb896455c9db,2806006943,18270478754948079413
+c821ebd9-6839-6d1a-b8b3-6e69227bac81,1398684794,12155611627072740493
+1353dd7c-7e3b-1bf0-e52a-27553c5165aa,2947521734,18046721886342744924
+3f370faf-7116-05bf-bf66-d2b683471aba,2998084819,11267015161359363571
+7db8a832-aaab-e264-f7f0-6fcc014c5aa5,276896927,15254978795132688305
+58b631f6-e375-7e04-2fe3-cd4537994343,3264662607,18084824327979315052
+a1c7d759-9995-deaa-7c34-c387e9acb315,609560857,16875805718813511541
+479ab3ab-14d3-564c-8e5e-472fd95e84cf,4247795556,4222430828900181854
+d7b2084c-a5d0-1ec3-0872-4375902bbbf5,1586749221,1682032981212448467
+dbb1ce67-e94b-467c-5486-9986b6ae8b47,198595468,9825017937496994195
+7425475d-bb17-d135-4ba7-938abc38c651,3593812015,16588630502777520621
+67bcf21b-87f0-53ac-8b9f-47511939d327,2833138134,10829260744478839975
+764c2fb3-e193-20ad-8286-fbbe5eb9b2f4,37883757,10955841401890592732
+9992a8db-a79c-b2a4-2e96-943b4eb5897f,4115094325,6938017321847344238
+b78a4c1b-dfde-07a7-c2a8-01cff68d3143,1998140292,9716197793670128411
+ee7754c8-8318-a1a4-0708-cc6681f3533d,1075409490,6350896363584466288
+d07ab3d6-2425-4c23-309e-1663e610b3e4,3938278977,1361861436659301164
+81f16afb-2db0-2d3a-172d-7bf696e0d554,1605189415,5916220975050133627
+bd81d0d4-cd93-ff72-7696-5284f15ee809,1856081073,17438337420995276933
+821f8a19-9833-28f3-bdfa-7cad2779c622,1168594128,16795422283220589346
+51af34aa-b515-9694-f97a-ba6fe5410c32,3349586440,5195235884033715092
+7af3df57-ba07-2ee1-14d5-d9759c925cf3,3227116456,10973192467182172505
+cd7b1b14-69cc-eac6-ae23-68b20b51c972,872565757,1656439523489162163
+b70ede52-3b7a-f559-6a0d-2b1645c0b0f6,3659231836,3035461347700671100
+d0a335a7-4276-4272-c079-48c8dd1522c6,2192135582,9695450438570524649
+320780df-5a32-2003-cb94-c6ec2feb31e4,805826998,15772865374991961888
+87c80b27-f001-1794-188f-650da0fdc84c,2698910779,9704641038859285348
+90db11a3-248d-af58-e777-f32a04d40363,1959945898,13826587177924690367
+162dad40-aa96-d402-86b2-d2b15954f0ed,633461346,14658374560276901852
+f64c17ee-623b-71d9-941c-880072f3601c,2425102124,14149999334477297435
+334e11db-d558-d616-9611-efff449d9177,1800091742,12222281006800597254
+0782523f-8038-aa98-8874-16c3b82d37fc,3703988294,18071906799312154123
+306e632e-671d-4287-3d3c-1d47b0d36f62,2431957831,14149274388511222655
+4a39d013-36fc-09f7-7673-2a0cc5715cbb,610913336,5851181109561072601
+1e79f88b-94eb-313e-5d9c-8ed4be1848eb,1854214449,4126479895205789373
+fa03f36b-21c9-4a71-4e4e-063ff41a4531,4052837621,10366070857534551449
+bc4fb9ad-df6f-c678-bfc2-13c38f6f3923,2392187187,7537169701795577147
+7ee19a86-b4d1-e3eb-9a87-96b2f74f5c79,1431792239,8451352669860400354
+775c4466-b05a-d787-0c78-e3f40f9f303b,3954799819,7960879518972792626
+11eb4a0f-3639-84c4-b2c8-0f4810b01b35,2536744384,9744698081881279017
+fa3714d0-2ea2-5dac-e613-390caeb8d849,785803388,130835697972653345
+2f4d425b-2a90-3f84-bc8f-cae881f929f2,1738895595,11973663362069990919
+0edbf02b-966a-444c-a9cf-3ea5881fc756,1891740186,16543506690050532873
+6796675b-f6ec-0bd5-da65-194f9d9e94e7,3010990051,14121991942204706017
+9aff4d00-2d7e-d2a2-41d2-b79c3f46f7e2,3017867811,6912410716733515279
+eb1fdfae-1451-9ab5-ccce-e9f916f38fe0,3853439434,756605199806777878
+6ed1648e-561e-725e-9b2f-bf40d0650c7c,2840288546,11335876097131222370
+919f52ad-d711-3140-19ea-e4f90da8ea97,278935563,8618021631112477225
+c081c9ff-f49e-fa0d-ba88-d1391bc19588,1764199500,17540905471108302673
+faf5b9c5-6fd1-b0f4-b559-984a020697a8,1120487109,4172347655240033898
+ce18fa92-55d9-f1b8-e1dd-731d4d803f6e,815970118,6680081262213300849
+3df81218-2c5e-b685-b160-7bca6bcd9e9d,2632282971,6129175337811611160
+c3732ba8-ee77-4755-dff7-6045ed7d6ffa,2498465830,15789918226954378999
+e3ad10d8-cf48-96ff-da3c-c427ddec5e97,847825875,2745406598009977448
+1ed94f84-7822-0c50-1647-cce7cf270472,3396138776,6192908503680938216
+e206418a-5b1c-87ed-0605-974427caa852,1769425190,13665789749651102903
+4f830951-5ccf-13fd-8041-95c7b73072ae,378664525,2168749711969867022
+a449e98d-0a92-425d-801e-e730e12e1b31,265672363,15306806072189199130
+3a7cef6b-ce69-6a9f-3fb7-7d29f7981196,2805654317,3492486184042568764
+e4b173e5-e548-02e8-083b-f5c07832850a,2505613902,7177627125308431679
+c754a03d-11cf-c38b-3474-b4006f73ef3f,2084457187,5305028657571720650
+d7088947-2af0-2c79-b8f2-b2d3f40135f2,663673965,12833269950417849899
+589a29eb-122e-dd13-2640-9cbe8b2a04b8,3489076805,4318500150458020541
+096aeeb0-fce7-e441-b787-0f07c4bf77c6,537440685,3451271373605673557
+2cac70cb-06d3-ea09-f86c-9872baee4858,751301843,16174508407488135650
+3cdb86bb-0e44-9a73-8bc7-8feeda30531a,1840952006,8173853191150382259
+181469d2-4f94-1647-8fa7-c761f7a2fd43,1762514324,14618597493492785670
+15ddb026-99c2-d256-604f-3dc30df97ca4,3456977775,3962439306959976186
+8d8fa5d8-f9be-37c2-cc9d-f493366cc680,3998217760,5365751152794493081
+4df4070b-abd1-ea8b-03c8-ed9b18d32aaf,4229849682,3239558718084956925
+d7a5c0e4-7796-10b4-8f72-5650bb3189e0,995823247,11809630943376280092
+ff403730-7941-2b97-ef27-d758ac6f5457,3744642294,7740596932328318918
+a29179c4-920b-486f-3f35-641f2806a2b3,2257212463,16267089300181062611
+88996a68-8e89-5823-510d-2e41dc5e2c3f,4088576459,2023043421087425860
+1992eaad-4983-1967-8e83-a3290231d450,1958585036,10927997780166952849
+edfaacf6-d9cc-344f-1924-82637cbf0d78,3855760587,12110474696562307530
+d10cb8dc-ba88-b0f3-e9c0-92e6f1d46618,676733975,1370081456974470328
+8bf9b048-f09d-283e-72d4-2cca40783c73,303053286,10128324913204660315
+9a68a0de-255a-cf10-fe7f-18b021e84a45,3257511082,3958688029571342921
+0d609194-efdc-a4d9-5974-fe200f3e8c3b,2594364804,11747633997446343470
+de508d73-7d18-35fb-f207-fb288f2e3743,1580889909,2876059716605507606
+83f88c0c-f05e-0cd5-eb4a-c3bbdb9e1be9,135806670,6890792693595969573
+70225094-5ffa-4ed5-3e5c-29ae767335bf,10325614,7328506930228720026
+0710dc99-2fcf-59cc-a073-833b43fe0f95,3868339295,18142431347087020561
+9afad2ef-f6a2-b53d-c275-29dc8ef016d2,3162612117,7938100406252611252
+b083d42b-0611-b54e-d0b6-271870edb222,323073615,10258614272730873288
+a7b5aebc-72c2-fb18-d8a9-5cdcbd94991c,2640191460,8105999022172563594
+4b902d99-ee64-556d-1a7b-faf92f9305f7,3723569268,13558633136127693115
+9d30289a-413c-d73e-f2c3-b9de899f67e6,3202034823,2208665102491071706
+7af2d126-38fe-a99d-ddf1-f8db4ccac67b,1721837524,16913570147012064839
+6b7606e2-5f7b-aaa1-efbe-4af508f6f39d,2004366356,13807992656483466315
+2fac6eb8-058b-70a1-5348-7ebb7f9de000,307613791,15657514110394175821
+8a3af971-9f67-a1fa-090e-204739888c86,3821564546,16838071875135142401
+e4ac742f-eb34-b813-2ae1-923ccc0fcb9d,675626391,2525894346291238165
+b7485967-1c9f-964b-4917-9baa236b6e5b,2424087979,12875997439913818281
+ca348297-0c45-7fb3-c822-42f26046cf1a,3386026667,7175232276796087898
+fc020611-f63f-a59f-dc68-4bf73d40b05a,2066824844,13575928324905429760
+2f9901ff-4144-08e8-d001-e6328cd15fce,669642137,6254616914223897516
+65fcd04c-eec5-0b30-7ce4-f2f4ff35f125,3706097605,13400014141113159086
+af55b407-b0a0-c008-f07a-cb2cb9f27d09,1722420124,6008173213968201460
+385b75f2-c2c4-2124-7e2f-ecded9d5c5be,687080636,9717059720094029107
+f4cb2f17-8271-139a-0bbe-7db2379827d0,3886568142,13996115380680041036
+2652ede8-0472-7271-5cd1-d451b436f688,577674945,15680580592986685567
+2f5aa579-56c5-20a6-8308-d9ca6ea894e2,1974961221,14168757328057717177
+9d0679c3-4b2d-ffc8-9a23-470d61fe10cd,759066563,13828868096528364851
+fa053985-4e42-9c24-5328-e1a2af64c1e8,3493972906,6819782218942248469
+9c81c365-ab7f-6299-f7bd-3a443ed2677a,507868018,12350228474625385963
+d8611b62-4f81-fca8-5d0e-a999b1e2a8ec,1368025921,5012225787394129445
+c4d40628-8756-7fdb-1dba-f99f0a57972f,1725763998,17512458149999914171
+b6dda32a-335e-27ec-3b15-5c6f0425b68f,3709005174,8975900775166637705
+e99f2913-eded-29cb-cda2-48e0713784c9,207882235,5048460369458097005
+e5baf11d-0fbc-e912-f725-70e41dcb7bdb,882367846,6226587434403662378
+76b34159-f700-f737-1ae2-d025ef62fb96,1922883634,6147522963601645656
+0bfb204f-6a8f-c4d4-645e-070f2f8b2778,2608803056,305913766693005884
+965bf66d-61b4-1984-3570-93995d1553f5,1575059127,11341823428188143285
+a3bc1c14-c0ce-7e84-251b-ca15e385864c,1246882681,10032564991497423294
+0abb7be8-b7b4-d919-4070-7513289b0ce3,405811457,14082720729164284345
+52d70e35-df56-dec4-eb6a-2ad4e0012689,2602585323,3497888963102938892
+1bc0cf7b-c6c4-e562-0952-5198a9aeb685,1903885168,4226128384633203478
+e1987257-080b-510f-f6fe-76dc3c866d83,430705469,6640131561891199028
+c18c635e-3b74-b320-8c8e-3ad5c570dd30,3904657523,5775969248543156263
+337058e1-c1ee-d538-9a0d-c6e04b1c273d,147111995,13947918582441980878
+c0aea644-6e44-af2a-6b9a-83ee5fedf38b,533627740,2529612848552332709
+c5174ed3-c620-fa18-2314-2b4ca20d6c9a,1981620847,9493292157746836357
+fad79abc-84e2-bc8f-368b-20288b371353,2362839175,7308482694241214175
+318c8802-3754-f564-7e7c-2dda7051bf24,3842156103,15074560581818629830
+3c587778-cc9b-d248-ffd4-7e58e504f603,1575314904,16699435359130062209
+edc93ab9-d00b-1495-aa2f-c28d02c447a6,1670777567,8832390773655374164
+cc7b339e-1409-41f2-b9bc-ddc4c9a4306b,1207100996,17423415606591489428
+e1113a21-45a4-57fe-0640-07c51726d5de,322715781,9179644054974160690
+7f93012a-2210-670f-488c-624c0a0b8603,2565166143,6061907224013603485
+8cb7a566-5552-4365-17b9-356b5a6e546c,3565354845,1609784852734608560
+03f65189-5887-c6d4-cc3a-1a3a508f701b,1526554317,8099661220733268738
+f8d60814-a5a7-5381-dafa-cc70feaaf639,784671203,17945365722167572802
+a48a8eaa-415b-f186-11b7-e10a8a7157ea,3756879230,12591143134107605447
+d72e0240-93ff-1c50-5f7b-ad36951bcc90,4284083243,8572799708552048396
+24e91283-4cb3-8e92-c6ba-00df7cdf04d4,449377669,5843264715167086377
+461d88f0-a982-45f1-4723-3fb1823e5a1c,3298198582,14910948208286940411
+1eea6ee0-b3ee-fb62-4dce-8d041596e746,2330724851,5945871127963501529
+b61f7f8d-f5e8-5c02-ea41-68c12956168c,2405456083,4191908017630588036
+db06aa54-8f56-1db4-fd48-e56aa971e947,600995152,4171365789329613733
+ed69867a-cf43-f3df-db48-c1a0d184e7c2,3352339779,12016962209168984120
+7a7df728-74af-3611-d3a2-bf381fc82cd1,1582950433,4667070669106698403
+30df8bfe-f7dc-ecd1-27d6-74e9ba6398ee,4108827610,10947680223850781086
+dd6edca5-636a-3280-d97d-d56f3193b8ce,925801960,1945708394563132350
+80a24f79-9132-876c-24ad-f021933cda73,2561425891,17040767515510431525
+8eb9f328-9941-24ee-3270-531612a7de19,754684859,15800263509346798964
+df0cdc8f-91f0-0937-f638-df6d07d71d4d,2155875372,6012987979594544463
+0fbfb88a-41d9-9d4d-c54f-c99b5eb95946,519792795,17990311220542176166
+10ce39a6-f38d-130d-a637-212a61956e4d,3995384080,15246540143614651668
+f8250bb1-5270-19e7-c767-13f3cfecf4d2,3718704735,13344961504425382320
+3da122f2-0d81-c9f5-98ab-91753c28967a,3037669923,884584174166783123
+eede3383-2fe2-cbf2-6326-ecb568fe33f3,2864209028,2982611907059367743
+5d73b659-9fee-7f53-9d36-d472749b80c1,2985705609,13937801985347986044
+aa3bcc70-34ba-97ca-2566-d21ba567221c,1158383058,346487334600524255
+0f17d24b-0a58-e51d-fcf4-9298a2cf2311,1308693239,710832141452054748
+f5cf3e94-49ba-4716-cf69-6e14b6b8a9a5,3626944441,13764913355576903314
+ea639f73-a69f-0c37-b6ae-1ed6147346ab,4171584710,1940947295318923183
+a31affbe-8948-540d-eeb9-21a1a0346ce6,4038449958,11591644650465432208
+eac17880-9b1e-6670-c472-c5c8f97e8aad,958001188,1901574156484949029
+3641719d-ad97-dcba-393d-208349805166,1952455029,165655194076474102
+674b2526-9998-35fa-7eb4-ba99faac7d4b,2443430563,1880707096006417387
+ec359f8e-81ac-eaab-a8df-1f28ac216783,3091487468,7008143842505884224
+a462f7ff-15b7-8c95-61c6-9ef06f1bd9bb,2257879077,5674526723493928511
+86549012-c00c-dd0c-2e8c-0449b7e83bb0,2661496081,13879260612735796824
+679ffb35-4897-5da8-a97e-d596552bb085,3690902568,1749165593470797973
+578aa530-4aa4-eeef-d25c-04019393e021,607731362,6415044032043510243
+e3f7bf2c-2713-0df1-39f1-b64867ab68d8,2929644789,18322348031340731350
+f0a3da10-42c9-5ae0-59af-6abfb952a154,2267101245,7441975892475599525
+6a6cef13-9eff-6c94-ffba-f15406812458,3664710798,12568196765644815779
+972903b0-fd84-70fb-8924-0394c1a54f3f,707948386,8207245580663646360
+b6aee5e3-7ee8-97cb-230e-17636d5c5c8f,3485658892,4049588675138357732
+41dfa4b6-f7c6-fb0e-e32f-73d779ca9386,4149237193,8741814244727248965
+43fe1ac3-7273-68b3-e1fc-c7a368bb000a,2279884630,8072429616705675023
+7b428e13-5b44-cee5-9f5a-28a50b4f7f81,893060099,1950918359154606738
+7ef4b700-a69e-8bcf-e7f3-b1e14030ec34,2417901386,14670586774382780942
+3f56b0c0-ed79-b48f-f0eb-9a109448dabe,31465629,1393544141538994268
+6d3c987a-68a5-e2c8-1516-ef5d7cee552f,3233108663,18363942846296828255
+dfd80370-e35e-37c0-42b6-5ec2ae19e3ca,2219380745,16630666559919361269
+007f6976-4266-0603-78e6-7843f22776db,1634207877,13297824731971962708
+f83c6651-1371-0048-2acf-e203f7a8da55,2655132724,7841222147296404088
+ebb9dfaf-8fe0-d993-d4af-3c882fa46ffb,996604439,8076438546085406494
+f4155758-8694-2ee8-5a22-4a19af072b13,147217522,13042240865854398893
+3c47c76f-3e81-5305-2450-d661a982c122,2628051237,2456706148949364149
+e336d8f8-65c9-6287-cd29-937920e0c86b,121362152,6702185266596870208
+92b79698-99e0-9eaa-2c2a-8487be5c8bf4,3095051648,1891952392672210681
+056122cd-a501-407b-b7a8-040e37bfcd50,3239679992,5143109468900179874
+7f5df887-a45f-2208-3e91-5aa860a6f7d1,2638774749,11338692022530117776
+5d52c05e-d3e5-51c5-cba2-252d18b3b0e0,2570908475,3119648405322961760
+1066ca81-62e8-fc7b-5f7d-0ca63cf95505,1241259616,11219570913627523594
+55daa5de-5428-ad0d-ec8e-c9a7cac8ede7,446453168,14196466197401281768
+974aefc1-45f1-f731-6eac-315e202d1cf1,1180986585,17874674540097233711
+eee90d65-a20e-a106-75e0-5d43e33fbbe9,852716188,5399406094281769474
+0b074a17-4dd0-2c67-f6ee-3e2f5668d545,1464711716,15512935188027318083
+db8263f7-92a9-a7a9-952b-8e686e91e35d,301952682,5230377731140223563
+8d6520ad-64d7-87ef-258c-715d7b4c372c,2257625120,13006228017992778327
+f0c78b24-af41-63c3-ef2b-41ea5663e4fe,16681838,13915031332532110169
+45b3065c-e3c2-1e09-837c-884e9c0b33bd,2522152046,12519622743010106647
+bad6bc7f-9bbc-0b39-fc64-80e9adb1cb87,3726074005,9089968119487714948
+d55c8425-0118-e6db-8914-535b59ca6358,3787423107,15917384432837121701
+26412468-c9af-1171-0f12-af2353fbdefd,885185623,6062585464728046066
+7d3b32f8-bada-bf52-9a74-4baeb86dd90a,1286137245,1411889338367588155
+c46c0ad4-958e-0170-3f6f-c352c5bdefec,4271618676,777567642816243158
+8433769e-6eac-d4cd-7f79-8272ff9d4959,3249469248,4031555119720001871
+5ca81e89-6583-ed87-7fac-f358397f9cf0,2565465634,1456347142671606617
+4fd29e69-9901-06ff-2e3e-6e55f61b00a2,629591130,2777268897844901642
+be6bff3b-d53d-cd92-ac10-8cc18eb93b9a,1472132332,9669590181394683911
+487ba735-450d-e318-30c0-b757280e5656,1776161038,3284656159149158852
+8edc266c-ec33-3cc7-c73d-f30000014ff8,434988012,9962380448701375441
+3e0e6267-6481-fff1-1209-e8fc8cd933a8,2200893557,17867439759309399168
+73a9f420-0e5c-c774-d61c-8958ebc18a5c,3086033610,9587583132651393302
+0ddb2d5a-80bb-05f0-c335-f09521a4487b,2543218403,4755051072192896868
+95273356-6fe4-4f67-0521-5b47bca59e7c,910424517,10351778157598363444
+27351499-a323-8194-eedc-74f5ae8e60f0,2674283858,15706598685041080237
+b5f53f80-35f3-7b86-9074-e6144d366b2c,212917159,3020907423949484823
+65d7caed-fffc-5800-a578-a73ee0dda355,37782791,1328371093781867995
+95522e78-4725-637b-d9fe-19cd990b7d02,219893135,7966570605065317438
+2b1f569c-9176-18b8-1f20-8ddf647a7da7,3362832222,2228671239032989014
+a6ed495d-8de3-5f9a-52fb-ea48ed3961c8,2960652966,2519295160926232421
+0f714daa-56bf-bed4-7c05-9937a82e4770,1736924177,472736266314975469
+6d3d365a-0d80-a355-25d0-1633f2c7b8bb,217691859,1950492252678172999
+d24df72e-0442-d5a4-7581-de54baba4cff,1154155148,17533133053266060974
+da864be1-a412-7eb7-11b3-1caa6912107f,1559827007,16845645038641555850
+3e54447b-bce6-fd05-9124-35b643cdd450,3225528592,1737077407278071406
+b1fbc965-0088-44f6-e800-641cf20e613c,548165195,49505381436188913
+01d2c5bd-893a-8a07-1125-1a0dd27046a0,3516986503,12669673111063599298
+9c80b44c-e790-950f-919c-8a18ffe9de5a,3945459900,8419257080632790126
+0cd681ec-ee81-792d-cf47-9e29a4e06904,2916028414,1199110678336196984
+1d76964a-9d49-55c3-8048-455522285d79,679067199,3297584868074186786
+7a26ff2b-fe3b-3ef9-39de-cad9b6129970,1626504219,8857536801226067339
+7522c0bb-58f2-3393-1b09-c3cc11889756,2601532357,4031402125771766511
+a342068d-267d-04c1-5019-4173c8ec0987,662872202,3223858523063906688
+a2a53943-b12e-428f-6dd7-fb0bda8bce02,539595870,6733154190438249391
+15fe8d86-339a-b4bb-3c6b-a927573f7e22,3302283483,5943983086716402823
+4ea02602-109b-fc78-ef0f-a471231d0288,3810743542,4304903672042433092
+0f3543a7-2d2f-464f-e882-90278baf87e1,3063618588,2047131964550012503
+14b01be7-da3c-8cb1-f5bd-7c3cb46acf0a,1595646388,13481648101579441350
+b29115d8-374c-382c-18d9-3728bc73d502,1144119520,16414062948614018467
+f03fa6ca-3fec-fbf8-cb03-b7b488f975aa,2452148601,6629659737474623834
+2ccb8dd3-1d30-6e01-acb1-d4374febb7c0,2431408963,4879704975016425805
+fa2cf746-1af8-402f-2812-947bb50221d6,1048599279,2990058557326920719
+f400ea5d-8236-d87c-a7a4-a0624fdcf777,3622826789,1149003926254139546
+93682706-114d-33b6-75bf-d11d0c31c38b,424589825,3474665530534809302
+5aea26d9-8bd1-32c2-e432-71134a22b76d,4096311004,3520181913338652777
+d01978b9-58fb-4e2d-01fb-be62ac585bab,3335486202,7429979128819024248
+e3fc8988-4ef5-b87c-e371-da33f28e4e48,2845828353,9799967982907280293
+408d26aa-fa2c-1fc1-a5ae-be33e7c1af50,3735673283,1409402468204921936
+4f0d51ed-f027-efd8-0894-039de8d1c4ca,3710021844,7401358870647066240
+e32e32d0-35b2-0596-12eb-bfb84d9b85d3,2895234841,346439662092263431
+68b21b31-3216-3f25-cb8e-6cfa0d2574ce,1767322590,7448223584538516188
+7af5619f-f0ac-4fa8-3c2c-5118170cf83e,3000324868,3236005597916091234
+a427eefa-bfbf-10d4-00c6-cdcb160e289c,1901532848,870685055963194906
+91a089c4-187c-f255-ee5e-6e9185aa2c35,2950710375,9607215657798426541
+18dba2c9-b559-fbc2-778e-cea1c3553997,3460035906,14139126314242575979
+67264461-15b0-b29b-9059-e3642dd5bbb4,1520741941,7048078086587796628
+16bc1187-74e9-cfc2-e7a6-38088366af12,2080793275,15821029576630191883
+712805be-0a5b-9e36-78c9-0488833e0112,3063288270,9896283105565398919
+b3192380-2344-819e-f8be-c8d53ef3d07b,3406932927,309447290628645363
+6925351c-9841-e29d-a194-de51be1f498f,492858230,1499823911926607320
+a3235e1c-5491-9e26-8a6f-5376ae56c2c7,2534617818,3196976697852436221
+6665281d-b3ba-2f20-0d21-8e9ad8f83c37,2604837325,14116299831801055003
+dc8499d8-e94d-0c5f-a34f-2a750c37c1f7,3830755482,16280725364485653006
+820d8280-0687-d230-1185-cef374cde624,3900710305,12424621819739326264
+010c2980-3019-53dc-f733-def15532d1ce,568576173,11845796405909136207
+a36d5097-dbe3-573d-5c48-78deb1d6f619,1996804018,13206257911351809603
+785f4e4f-6dff-23bd-6343-dc31ce43fcc0,1887500747,9688286651335460503
+0c8c0f45-243e-05d0-dd87-5d4e10d97a1a,1631970802,13833864252010880122
+0dd4f522-d9ca-a797-b27d-a7bdb747a62a,3706185503,6573471133005644093
+3ad987d2-73d9-e77f-641d-7634e68affe5,2325302951,6727044909781793426
+23f505fd-172e-8836-0c6c-ddb33ad9cd6f,920816519,5571992028250105297
+7f7bf241-9b84-6147-e538-f818e40ad45b,3007873294,41038770475680418
+b8165c8e-0d9e-41b4-8d3b-2def7d08e17c,2684047551,621269123056485802
+e828604d-de1d-b17c-9c5b-994c31976837,2497397026,9295976569337865789
+5f67d63a-e178-0d34-b100-91de48c7fc74,3625758522,5209283993299535823
+915b4629-341d-aabb-60ca-5a507e62b9ac,1352756657,13578811414147431970
+008818ed-6f27-b0f8-246f-f96aa0566f5a,2960132304,14656065872700856
+4240a37b-d376-f1f3-1c9f-41bd0d945c45,949863741,13947182332120514994
+79a7a83a-3ec8-0dfe-4201-89f968771805,1606472598,4312004900774173416
+7539b651-db1d-1e1f-6a17-825313ab148c,4280003899,4776481486567390626
+9f8085b4-98a4-92a0-40bf-bfdcf6345342,2493502516,5381605589618721600
+4d0d6cec-3175-6268-9d14-d4cd298f7008,597811754,1359524052513124148
+159e6882-ca31-b7ed-093c-87d25ebbb627,249418559,6087030508594204598
+794ebe76-b305-9520-6442-105bae67dccc,3505352505,5527640455022179424
+3527115c-a5df-4c3a-e9ed-95cd44551bb0,662172299,14687420096402650125
+9d606689-26a4-9dc2-a9a6-27cb52dd585d,2302778234,10554221448704244428
+ca50928c-8b11-e39b-4f8a-6745ba256f17,2396040574,10082993113881274344
+3afca92f-8195-389c-9cec-23c5ccd7beee,549602155,5425588486573973551
+747a6df3-be3e-8496-7869-c928a105b6c5,2211542916,1801850277841674341
+a1761a46-3d8d-f8e6-685b-cacf6ad23b11,3154508765,15497745219676113646
+ffcf0b9f-4bed-9597-b242-4ba9f75073d4,4212020337,11690032662504422377
+d27ac1b2-179c-a4e0-6ecd-360d730a6aa6,2497434374,17139695360070672990
+a5ad2210-466d-f3bd-895d-c51089702e80,3446637491,5000115640041759800
+732d5aac-0d4d-8b93-4819-4cce3496cf25,3573176912,3644134795083013330
+97960f1e-472a-fcd0-071e-5a2a7c860c17,558716462,10559448853879320344
+2575e13a-3f51-3b95-17e6-457fb25c070e,1836937277,12969971510752713711
+f69bc9d6-0989-198c-c954-bf8013962004,2775056286,17927147942938265837
+7f8109c2-4273-3203-6194-6f4c79ae817f,1960860141,7615022350237183576
+7f59097e-0f11-8482-5658-71ff084ea249,181895828,5227230356909291453
+8103a292-bca0-966b-fc65-a19cf8f4ee79,1871172926,16471981671215863020
+94fd7a44-fdea-61d9-5b7f-32ba40aa5525,2540028878,10175502048969527265
+ca4b9f7c-5d8e-f26a-f169-4922c6743a24,1247860732,12260463358621995290
+47bcbf9c-052d-5460-35c4-dc87c32a7c4d,4089920757,4519695702114986517
+6f77c086-d86f-8cda-4184-b1e7e8984c41,518450293,13208664318203610273
+bee6338d-0165-95bc-98e0-9433f92fa152,764791708,13023965582032749885
+f3d8fe68-c96c-d3cd-dd73-186afe3433be,1987173439,17858090326069593897
+d5ae1267-bd9e-879f-f5fa-8015d47f6da9,1727957377,7337838281136549521
+2db2a47e-25a5-3194-32ac-60e6e0747749,4001857507,16290155941780566806
+c5db2831-a885-4fdc-9855-86573ff9d819,837677204,11866436419502720721
+20752031-43b2-2467-0065-a2b5eabc428f,4155856774,3425778981581754312
+22b0a381-f0d3-c362-3bff-c8c5c17a7d6c,3238088659,6624019551342886681
+3445845b-1f46-d8ed-d779-050f15de1fc7,1664647931,3964839500285690594
+14561101-2a6c-eca3-f93d-98f5c76e3509,3968370745,14646483992683417360
+c00134ec-6843-a430-f26f-1f6fbfe1b1a7,738563420,8742090192073749132
+60ad830d-c00e-8d23-5cd5-2e7ecd029761,4290664930,18192999650110118317
+9cb745cb-b285-d883-27d7-28b0d3531f1f,3028957155,14775973439908535120
+14bfc6a0-d5ab-c50e-affb-95ecc908176c,1635122153,10906406456786188312
+048b4000-9ca1-40cf-3fed-d62360fd5431,2394117223,11682756259717955160
+4510f2a9-22ec-203a-0e2b-8a1b00b2db15,4058361983,6086557482500930122
+7e3a9b12-cc14-e710-4714-e6bebca95447,1087968131,16330146684340867781
+b42a1206-640c-e737-1614-8be11b16282b,3295983240,12685547901735346602
+29d58bd8-0256-0fd7-f6fa-483be4c9652b,2734236883,4048535295390016201
+9fc595b0-223a-feec-28c2-6ce79ce35979,798310102,7441219670334052548
+21ff618c-dbe9-599c-8058-df4ca9f32887,654338850,11670802402989058032
+3422b123-79d9-a6a1-0fa1-e6a8a03c20cf,886816938,10722590847946250608
+8df5e4c2-5dc0-4aa2-9ad3-48d0533b8270,1302105907,11593653947849033889
+38836d3d-1e72-9d6d-2456-cff9ad824bc8,4142195467,13258939792195283429
+3797a5dc-1e8c-734c-769c-117da2fa4969,3953019396,1284876993669552212
+8bed3394-c3bf-83d5-f0b8-66e99fd90e39,3576427349,15819560215572590078
+59a3f1cd-04ae-6b10-e463-66ff796dea0e,1671400462,16974936381103710450
+c83c95eb-3e4a-0c87-8d4c-f9e1a8b82059,481997132,17528229825022115160
+38ba23f4-128b-4cc2-5e5e-c6778ee370b0,3736402420,13806090792524073191
+7bf93168-35fb-5d2d-18f6-966cfcba0838,3785439112,7035246169201827234
+e317ff53-fd7b-49bf-c958-0f2230534905,2079725004,7249164940146449242
+40500b94-4505-ca29-e9a0-470804801309,937727122,149048964290959176
+426af756-7d47-e80b-7f5f-687f23bc0af6,3888178256,4765176858629490370
+017a080c-4221-98d5-5f7c-3e448c431ddf,786570583,4075309843103774256
+ea7411ca-11df-3d12-bb7c-74973ea7be25,3164192682,6897697902605304128
+945d8115-eb16-044d-13a6-e443c7ce2cdc,1699796889,16727080832518319168
+dcebb9f1-1c1f-e61b-a1b8-ee52787e3633,256221282,7844447253464914667
+01ef7b75-30e1-6ede-05fd-c5121420ff6f,2364515335,14407126187888555901
+16f61371-a3c4-7a9a-b805-161554e32f4f,3674531031,7802386854924268741
+40a7b0da-0fc1-7556-8e41-95e3dbdb74ab,1140354424,10008606346390247790
+c9a060ea-d001-75e4-ed9d-f1be9510dbe2,435074799,13319298449221867999
+6f7ac0bf-23ef-4ff8-e612-59c5cce44468,2321831422,4632468081600183994
+e2c06ad4-99dd-fa98-379f-bb73759f3f8a,1421033324,14366875712970358874
+9581dd92-fc81-dff0-f63b-893d337ec951,1729899749,16573088083917398490
+9df9219d-c068-347a-a59f-bad0a5ec8c0e,2710895824,12101777538124855789
+1f8ceca5-c40b-6f66-4881-2a6cc356293a,2341411849,5303240797066420792
+c0eee702-f4aa-e9ca-fa84-0cd9d4b86ca9,3098654238,14455846351697376090
+fd160903-71ab-62c3-5b2d-e7813b0fead2,2025881454,3956386088161899923
+2e4596ad-bef0-0699-6be2-07f0b4f56c52,763683213,15062816118733509517
+2505112b-0873-1612-e7c4-6710ed311d1e,2789087787,1178071048370311635
+f9344b87-029b-009e-8bc6-92cde7d6ed0b,319220799,1816226771980039493
+1eec15fb-ad75-5d7a-501c-27da89b96a53,678965854,17599368777094106754
+8c57567c-b325-2190-1d36-1926809e4821,239893408,11230139359120672455
+4af13d66-3f11-043a-0bca-fcccd9f83544,2790403129,17183321676924255707
+c5b2d19b-0e18-9ec3-c702-47fb761765fc,145629562,9984462430534524375
+a6bdae68-9159-96d9-e5f7-a1daf12b3514,444648610,17656870341013870541
+82483420-edb6-0654-ad48-d1ef0164d412,1566642257,16433952030872511356
+99574015-bfea-f2e6-2a54-bb19e724908a,1594900633,7974348907928272246
+74b7c9f8-a570-22dc-470c-a680e6af469c,4250208126,17688747306639402681
+a9e4adfd-e1e3-16a2-93e5-a1334d412fdf,2804398796,15246588441942972255
+2926bbb9-8db0-8208-53b6-9b59143267fa,1790500631,8288563531943253157
+334f7108-af53-8f3f-faa5-4bef89040d67,3345031306,7116243662909887615
+ed6b40d3-2fad-6ee7-e755-59b495852fb1,1424276746,7607108824317905220
+2a2beb99-6ff5-a0c7-0950-b2a8810bc0c0,1652282377,10562346256081674606
+f1e341aa-ca22-3bc4-ce30-80fcc70f10bc,97565846,9065641952208210494
+a6e6acff-01d2-6cfd-a14f-c4bce88341bd,3727503767,3723063257350034631
+2b8d747c-ffb3-c5eb-11d6-707328e60051,2651036336,11469195244037093217
+73b948ed-8ebb-8f8b-178e-137d0a8016db,3413890093,8574344930086561190
+7c5a061e-cfe8-1cbb-0cf3-342cd482f9ed,2393831063,5146934063930587038
+f6d233ec-785f-5611-9199-42bf266a6b6f,180610428,12726219486531960772
+8abb5d8e-0bc8-80e2-092f-115dbfcb4e22,1821449454,6704294235014200439
+c6672cd3-58d9-868c-a9b2-625b8e9f9674,3563686058,4237253822842716100
+830d74b2-96d2-c990-fdcd-44438e31de90,295919617,17225748247902223440
+76384d4a-28b1-92bb-ab49-61e4e11e4410,2346416679,12040569206839364120
+38de81a6-65f6-4adb-2862-b35b7d84e9e2,277805330,17596243606103330167
+142576ad-fec0-f2ce-15c6-aec0650597d3,3792954666,14023787504254117244
+ee9c01af-2827-2cef-6f35-9718f685dbea,4250514989,7155047113168189520
+2dd3cbae-cf91-c6ce-92c1-0d55a7029077,82575409,17572579700682826725
+7c4c17fa-e368-ebcd-180b-a32eb3d8c9c8,1455147203,10344666810866669008
+1dadde4b-3b70-d87b-4c96-e8963d47f83f,4122970431,13019520514449378906
+991f0c09-ac03-20f7-7217-3d73dba1f794,4190851853,16187334280090259852
+a6902cdc-1a3b-6405-03e3-ceddc14b6a75,1698262301,5292601187478346893
+57bd55af-0b19-39f0-22f7-a85c82d8bec2,2784357837,4166863354001332266
+6d9fee47-2ffb-23da-5cb6-33e21fc0ec07,1188774145,2906637828964524548
+75b34f0d-3fb9-9417-c017-a7a30ce8bbf8,89191580,9372743622514544385
+17b94f32-6000-f0ae-e397-cf874affe289,1457514464,15763252402604468225
+66de6785-3f6a-8e03-9861-43cf5f4404c6,2436829429,147788254329915543
+b69248f3-fefc-8efc-f401-4d30e694b1ee,1634045207,14154250133341615682
+391e4409-b947-ad27-9fe0-27e198fe134c,3523144443,17412481203787419577
+85ec854a-4330-7a04-ef6a-1f68056f8f21,2340194633,7686870321323248993
+83044550-e9fe-209e-4c06-524eb09afb0a,3254189686,5332063341160315460
+b4ad3c08-2d95-4191-d859-44c033c324f3,3390970383,9840400178490217210
+6d02dfff-eb41-2906-2e4a-ab82799cee12,3302133335,1350882429643885824
+12716783-983f-835a-c996-14ea4dc87744,1690897309,14322813009930776217
+699335ad-b4db-760b-a952-ed83642c0e82,3697140267,9418916537611662861
+9effcebf-eba0-dcfb-2f3b-d6e21aa3edb8,974099377,9502632759801074780
+0098159d-1fce-6a36-c9b4-cc8376fcfefd,2233956537,10977421142450309306
+bc1cbbbd-a08c-3a8c-da63-8cbf0835d5ec,4086362120,14705444085364240822
+c852a5b7-7817-93ae-f58c-ac7e89a9bf3f,2151292181,2268145510726251486
+8267361e-a67a-e268-658c-7e17ea27c013,2237201281,15507186116790521886
+f38ed648-e3ff-6081-50b0-185088d2cf30,2972238584,7813459625468148397
+57265e63-7189-5d46-b1df-525b5451c236,561064514,8726025994140341752
+31f9a6d4-ea0f-c2c9-cfaa-4c5fdcc62c8b,754403999,4351130338995931099
+f3846ca8-a76a-aea0-a862-53184cdd558d,1783124757,12671944343503574315
+2856e5f4-ab43-4220-6db1-c8ea75203fbd,2688776561,15887010138856623611
+a242c3dc-5caf-0aab-ad29-18cab9cfc42a,3956496623,6068758224159460811
+4fc83148-7a42-ed50-3bf2-0e1eb767cbb2,731711917,2103557004572140472
+160f4d6e-57e9-aba6-faf3-0a2855a7b7b7,541188493,3365575844440340177
+8dc0201a-59e8-4496-addd-6e189802d85b,647854863,12978274873128771985
+cfd1095e-dce2-c2c5-a794-7b2738e908ad,1709481733,6824555495625341574
+e7532caf-6a37-3964-a392-9b7b154bc064,4071911133,13795707062310421482
+9f5b01e8-9356-5d9c-7abe-5cdfd43c80c1,2656364426,41943262614310695
+c261b1c5-b333-fd43-67ec-8d92b45c7917,54585669,10956201186838888177
+f91358e9-d915-fe43-9f7b-5a49f1179519,2664698790,2485275317497448920
+35fef23f-5484-5d20-133a-fec3da630947,670391553,1532249112303464485
+27a07fcb-bae7-18a0-5522-70aebdacabc2,448646311,14698698907508466585
+b59d2a2e-8ead-5d0c-0cd2-ca15dadf30a7,2748221210,10137815860548223437
+5e582313-8716-d1ff-d71f-be2e3c560d30,3794009516,16600396150022224271
+5e1429e2-07ac-973f-dc4c-8f551f53d44d,715964171,3983841825265935152
+2cbcc3b0-3e56-453c-26fe-ab4f1b7886b2,757753209,15261588301323125809
+d83df2ac-e380-82c0-3e6e-fabe1d3e8f09,2152365219,9147128782707141877
+620f3146-6dfb-3ea3-c743-e2481fc16f6a,819716471,14536067909546194611
+1fb298d7-55b8-6d5f-3918-04ab59ed36c5,242551247,13283103060324059820
+748ae561-9a6c-59d4-dd59-698bae7a27cf,1790040849,14800971708873305901
+47f00da3-f251-8db7-57bb-3b4b0dc889e2,1133916652,14346459093330641617
+ddecc18f-77e0-c527-2c9a-03432fd9d6fb,2207335199,8150626413705405970
+7be5fb89-1c1e-4c3f-f51e-424fc37ca3fe,267216707,16546851222006418195
+456c6420-3d1e-cc5a-b152-d7e8b2810776,1821232006,9576463755182899162
+8d03fcc6-a3fb-8233-1c84-54f4eb2227fa,3764798119,14049819821763147550
+e7880fb7-1d66-9ae1-4150-95673e8368a4,1169380026,14971451421452074025
+5231af5b-b66c-525b-56b9-b2b39b05db48,2220356203,10756596559513420133
+5b3695fa-e96c-a976-1073-a6c357f9b043,2733318827,15521721569506422287
+481d953a-bb1d-3473-0344-acc0ce96944c,1510381607,97158218838304896
+84b2ea0b-0508-e538-0a0a-a27c66188457,594914857,7177383449022205416
+49a719fa-1fd3-eaf5-d6de-139a48e57bbe,1119435353,5533160861506264261
+52cce708-9b8a-3249-7c2d-b87136eda8d1,3908965354,14256505936825780052
+d7740e37-4d7d-6a65-241f-f07ed5e3240e,4268324314,16883132139962712255
+d01adfa1-baae-eaba-7cf2-ca71438b49aa,2664781115,11909456682994939144
+1f758b22-0b53-bc2e-fcb3-5a85541e4817,1293030729,4938192791014306147
+bee8ed67-7460-a190-ac18-c0448406bdee,3434568861,3975042050693042612
+8e4a05e6-1552-63dc-b568-f4811bd54364,2004400252,18395859070220407463
+f7d2f02d-3b50-f950-a5b0-33aec9e4ddd0,3176001273,13753077072411009680
+1221d89a-8bab-8576-82d6-c6a541cf74ae,2579969638,4216340114132559933
+d882b031-3c59-5230-84cf-0c5fa5624ba0,3237233919,6900860525518491701
+0d4a749c-8a53-4a0c-8a20-5802e400ba50,2625716398,16866650806821925246
+10f8b324-b6a4-f148-1e9c-e6de2e9a164f,306645068,15024434402197506323
+7c1fa1e7-bcce-dff3-b3d4-2b0f7518a836,3392345634,4502043613516004290
+d7e51ae7-6100-319d-5bd3-507aa509a341,2047765596,8039100437338028870
+f5e7ad18-0fe5-2cfa-dbe3-df3b2e5e18f6,2088826354,7360569064442832879
+1c8cf897-0119-7a43-2b53-51fe6e4302d0,2596780503,11392815659548462073
+caccfa86-bf72-4079-75c5-05579f5f181c,2666152034,4099779663885546960
+916b7acc-1c54-e5ce-58dd-4d79ec709d9b,197671709,6710539710080773495
+c604836f-6466-f5bd-3687-441c9ac3fde1,1782454857,18297355964414968680
+7210c571-f494-8279-6632-978c3c44b950,1425528351,10602543981481551000
+7cff01df-42ef-ed4b-338b-84fdbafe0a76,1398731793,6013204890954477220
+0ceed72f-774a-433f-e0d5-30ed2d189a15,1986669035,4352250839421004759
+18a9228b-be80-8646-5450-21c882170f19,4246054834,15472263727651811099
+6aab958a-f88c-22c7-4ba8-d3071a13c635,116195261,13642019816441483506
+6376cf1e-472a-4d5e-91b4-70ec3c72af84,2209536966,12380230245374860632
+07f0cf12-884d-3d8a-1be9-a10d04e11604,375216972,12375719370894614728
+87258b31-98c8-24d2-ec9f-1a27455834e0,78096904,15675536497966743703
+503302fa-fd81-2226-bc18-b8ef321b7918,2027674884,1076395126164226661
+81c0d98f-acb3-c8c8-1cdb-c3a81d33e7a1,1218799710,10115477046393340620
+82376cbb-19c2-cdcb-15ef-5ba041f13714,3946530365,13672084520149488083
+163f2031-1550-bb73-4d71-7a6bd1bb2105,3160054189,5241194575941044576
+33f2a0f0-beec-c752-fbf3-a070ff757625,3482929539,10627969599114191743
+b5040949-9742-e211-6f75-d8d6b67dfe64,1963165248,18092513226591754747
+363f6090-ef97-984c-c1f6-19769c1e2bca,3992239116,820940929417205196
+dfd20256-f070-a262-40d4-f3059615780e,3264031714,4680553327076095385
+3854ec0a-8197-6453-f3b8-574d4ffb6671,3377528226,18434448261357890817
+39aa4850-8cf6-d72e-1c27-b16decfa9a59,1021442762,13820812103137976612
+42cb25d7-7c42-3f74-a805-e4d85ad1b845,2823994788,9379226213178634389
+2aba9a63-4057-fd99-6cc3-d1933a2fcbd5,4094087853,824301727759714945
+eadbd581-b746-780a-c0a9-fd9eaebda05d,2550144382,15113801334055151103
+9f08b3ee-d2d8-fccd-df22-861253dec9c8,897996410,2937345620784751048
+0994a1b6-e9cc-6b5d-a7c5-0238b9aa4a6d,216615745,4123292591464959269
+649a2559-1ba2-e860-4ca4-6614f8600728,4151123767,5911490778209352199
+88eb7e32-3d2b-ac9f-2468-7c58367db43b,1941012907,15922393948664481472
+44c7a1e8-0650-3027-4408-5ba00843f951,1039561004,10083626724502615885
+3dc5b90d-67f0-cb22-bc0f-cc5a673958f8,1116168612,16346841712269429577
+b9353f13-5b9c-f242-79c3-c117d9e6f462,2702978233,15930436366270632773
+08b9e92e-00e7-3617-12f4-c64da55b4542,3675539765,15692601460227865618
+467c20a9-330c-d8e2-82e2-86b50419eee4,1506544832,16376760360685926549
+f0694864-c5c3-006e-96cc-c1a0d38de364,1977031899,8353936463205597488
+363bb385-2f86-0248-3e9f-47dcf99ea6d7,3352267803,386343437062952314
+69bec7df-d933-5767-7f20-38cd5874aba0,313243275,14205516463050948088
+e9ff83d4-15a5-6ced-0ac6-b0d24640f50e,1462593331,14252285596433878465
+aa3c01ea-4df5-f6e3-fe50-0f694f25c29d,3655124229,3046431968883429419
+86d336e7-0070-2d55-d2a2-36dee674928d,1095717991,5801540960989604416
+bebc3fbe-bfd1-91a1-d259-8a9368a56ef8,4152149553,17722874446930814860
+195d0df8-eb42-b6aa-b145-c6b8eeb2cbee,1354559100,5330672075459983345
+3db9cf27-72fd-0e5a-24fa-94dedf59fa6e,2230068943,10824151981279932056
+00060dcb-7742-cda3-f47c-4a523babbbef,3568332314,8616383100565269579
+34ebae4f-e0cf-2235-db91-3373dadff0cd,711285967,9556419213434646280
+004820d4-fe0d-df36-d351-81085f72a5b4,2255681031,11337488737057838943
+f4da1eb3-f920-4b44-ea13-a23f61c22b06,1217848923,2154912396550338518
+ec9d9a30-974a-5f5c-4681-8a2859668e21,3250863770,17138015619412989162
+6e238e3d-153a-3d2f-5655-d61544f976db,1128113484,17091384624324528420
+d08184d6-3696-0742-9615-8bcb63f31ef0,2201057713,7162287633068757410
+efda222f-80bc-0795-8f0d-96b7aa155561,2706667610,17057181925902132885
+ce1a6e90-35b4-dec0-0359-635af42cc026,280522816,18183561261493203453
+2255f605-c6fb-5532-6d97-fd899239ebfe,2171280115,7175028524772114845
+e3ae6daa-cfb1-5fa1-8f9d-cea468f68b70,999149997,14559090504365219708
+74dfd636-306f-bf08-48ce-13eb4af0f90b,1111403715,14547566610702549288
+ae9f0e01-502e-afe2-9983-c8a2fd9cbae0,1317415035,11106425430617535157
+e8f4254b-1671-46a7-0725-5924ba62f7df,106198214,18313869440067601757
+5fac42f0-6608-588b-c2bd-c83fc7b69d64,1418404616,7536549245577082013
+08d32095-c56b-0165-a250-c9b74212ac7c,862030151,11704739290532734752
+bc1afd6b-a207-0415-b377-0bdade445259,894169327,11201626201550671946
+f47680f2-2868-f8dc-da6c-0b2732288eff,190302841,1612707179276208982
+c5c570fb-55b9-fa30-cfb7-4a54d458b828,2108529451,7651670953518021893
+e635d80d-ee4a-3720-e2fc-86839183fce3,4259758510,8697636322536993588
+654c59a7-34ee-de8e-a8b3-8d26523284e1,1784197893,222353183155785110
+619e8197-f0fe-118c-c0d5-c74de33e0dca,3578923744,16813319416166188349
+ec1e34bd-6982-c087-44bc-81b4dce37e6e,3178427148,2186989719801190918
+62d8f1ac-6dcc-bfe1-c1d0-437c9629aee4,1882178119,10150506693647887457
+f301a94b-1380-dedc-3396-ed2260dcf2bb,3786897183,9095732072096135745
+33ffea53-178c-66b2-6e8f-a09363ad2f98,3733633046,11032821130660534415
+af308449-11d5-9b4f-322a-4add197f3026,1021194993,3969436978345340354
+92428734-ab2b-12ad-8ba1-abf8844630bf,1903867573,11590709113186879804
+1dd5f074-f4de-5ff1-7487-21ebda7e3a39,3117948301,10543688974802150517
+3608640b-e85b-7dc0-eb92-35485eca87d3,3844334132,7366596308299810486
+b8b7eb7b-0ab3-459e-408e-a992c1e8038a,3658504572,1113785907786720678
+dc45007e-4969-e1e1-e3ef-cd0ed9b8fa7c,4152197446,8933349099662349789
+e96ebbea-d982-c65d-a570-19759a376d3c,3319969875,15567497647414369521
+575a7ffd-52be-5fe0-9e84-9def8f5153b6,1552912227,12425279713952694131
+11efe93d-6323-2938-bce8-ad0d97119a47,2873483380,5627133946142643476
+f2eb3f2e-daf4-9981-3139-71f2083dd8b9,2712908190,13582303163568544215
+e14850fc-0e37-03c0-bf8c-ff3ccf806cb5,164689007,3045159910883315724
+f327cb7c-e296-0ddf-68b9-e7404bfd1f31,1943437992,12089076024916683389
+4018bba6-8a93-01b7-e51f-e969ecf06223,861476018,9210736647481708251
+6a99f888-5e78-3d37-42e0-e896d1430ae1,3882451313,14006718569479379411
+2ddc3210-6bce-65ef-9407-a3d619d1275a,91678117,8038675715116426654
+f9eb374e-91a6-4527-d68b-eed3220dda73,3100732676,6453632356849261372
+dae18e74-ae87-eace-f7f2-d67726ebf0b8,3668672371,12142661212369890156
+e52de80f-95e1-5bdf-e06f-0474dc93b0d3,1866274461,4181111546176134050
+7a6ebbb6-cc8a-359e-f3ea-58d3d2064ce6,3206388371,525306532800807075
+2b9f62f2-190c-d6e8-5ca5-231201a98e4a,225160757,13854309640736633287
+f814bd5f-5b41-4c05-4ce8-94161d469fe7,2469338338,11081443430927823780
+d9f0d01b-e432-37f7-8841-5bdf3faf4535,879439616,10510661377446749672
+d2123a2e-0060-f4d4-265e-1caac0c2dec4,790461807,10040112700196488086
+7bf361b6-9832-cd20-39a7-e07216956b72,1432348215,12496860641339109766
+4e7cabb6-b32a-28d5-2f97-f259d159f0e7,1313154209,14493941638719133922
+c403c87a-0cfd-ce09-d251-6c9dc9ad8a27,1965352884,15627939596303446671
+f3ba406e-b968-1647-a611-60e296e728e8,2917418600,7980009607153640461
+be008f95-02b6-3454-4894-a087539fea25,2137330776,14548148024096949924
+d63c56aa-d7b5-3311-d550-31c9619a8ec1,669399775,11346225019587942759
+8522b1ae-e441-eae6-192f-2817a1103725,3710559149,11517841697191811911
+e2165a6f-0386-f5be-30ae-8653fc562423,464503463,2714676157795219305
+3c6f9625-1f17-21e7-dc22-d65ff251adda,1239083909,492542607386609201
+cb93f437-2c7d-bb8b-6458-8bf5e255effd,454058057,16007005308989541584
+d5ba9eee-123e-e15d-1fab-b8cdee9bbe75,2017787017,3313863937139111899
+408f1930-bed0-a5c9-8f44-534cccff33da,1594703522,5809710808419319280
+3a663b00-18ef-c776-94f9-d0d768975ee0,406892820,9903825684592717606
+20c1b92c-a255-52e4-ab70-f24f8d37cfca,3244550289,17902264584152179537
+c249dd4c-1715-b0e9-fad8-7e66268a7258,2610738140,2676636049481086524
+939745b0-6505-62aa-5959-a0080d7df9dd,4136251585,2954140626093105629
+0391d5a4-7037-620d-18d8-374ef253e953,2243220550,2234495332033885605
+554db2fd-cfc8-37ba-25ee-d5639838665d,3917631321,3749965963036676792
+425703b7-9267-1e06-dad7-dc2291df19af,3667290688,1029257632322085366
+a0fe3562-f0a1-2bf6-3a6d-00cde7eddd71,4263722302,2253091784318809073
+d65b41f5-bd60-dc07-2858-876ce053efb9,3696852664,16609417925758211586
+6f79c8e8-25f6-d386-60be-60ca9173d955,1945816409,12165798212702597377
+97d6d803-5a0c-9c86-91dd-ce2e4a8b8120,1913985529,12296451935641521391
+70b12cee-06ea-c117-0c57-3fac4a202fc4,2995703236,6099369783341030380
+ac2873e9-7e34-0000-f48e-fc156338a20b,543150833,16364261811546779359
+0944df26-9a92-f29e-cdeb-963940bb61d4,164435459,9080190979600117066
+c7537ee0-12ea-c281-904a-febac06f3747,4133953605,14630646212068590489
+fb812d72-67de-a25d-ec1c-383f75c1f80e,2673084925,3538062841122149950
+14443bca-60a7-b525-4886-370621e3173c,1840205144,7497298631361222145
+16d3769a-5171-3f78-ca41-bae5323de03e,1563676432,8213925341885626852
+c69507bb-eca6-beba-6fc6-39e5a4ed1030,3319466240,16053480077956374074
+90eb2861-c6ae-41af-90a1-d7f928b7dce8,3769108411,12273065363059582799
+953b46a1-7e72-3aa1-0f91-125d41cbd90b,1745689981,17344979614250539016
+242642a9-646f-77a1-c3ff-b6d28cd7af7d,1772941421,5151110349521926754
+a62a51dd-972d-bd20-bb26-7b988b4ab273,1861122630,2103022160825831117
+6997eb76-4605-1e32-82f9-dff19fa6fab6,2235405018,16878083299989289848
+f1e4da54-73fa-3dda-d655-d50acee9164b,1265146341,982604900803144996
+51e95444-a131-bbe1-27a3-d33700c92f06,763799879,13470694861924973128
+ba962694-2807-2da0-f4df-06272628523c,1138774362,7117031053528160118
+ed14d285-52db-d869-16fc-988d7c8451e7,1940722126,1739614669860595556
+1da4a390-7660-6c16-5d3b-c73beee299f2,1858032483,2223083994498496742
+ce81a480-98b9-a91c-2eea-83fadc4e9a82,3628873179,10558623296479743703
+de81aae5-b842-0b3c-8fbe-73f76e2be79f,2286123640,13476486100210340367
+cfd99c62-a449-ba24-57a2-ff102c613034,1946432767,16846837989384684332
+f7f9b3c0-117a-7529-dca4-c4c32292961d,1750548096,17799718491234740578
+6fc377b4-6e14-63ee-0c9d-91b970b89495,3883925325,15926509017742365221
+a0e58f24-71b0-0e91-8cff-3185fc4328e6,120927826,10621691003085127124
+1764204b-7922-99e5-1b33-e49a9cde2b89,3890483513,3531547780155075545
+b2ffc72e-cd92-d8d1-6c88-149836c00ce8,488658080,15621873830529619788
+77c76680-7b98-eed4-924c-565016ffb0e7,2117177001,519131406899411406
+d896b0b5-2036-152f-2914-1165b2ac7646,1531253889,1773420171642541799
+e9f8dd3a-f651-dfaa-e70d-da210df5d599,2618310595,16774194611273538086
+ddd641f1-0796-4da6-de56-de3887649677,4154931122,12640437949678554114
+ab3671f3-dcc5-1e1d-4485-ef1865a62de0,4002568346,5865712531580503915
+dd7431ae-f5d9-3b29-8484-f34856e65485,92320352,4758748283727105480
+5c8e8ab5-15d0-9363-94e9-cbe06f733cd2,3828098774,815931951757131188
+f7dcf66d-ecc2-34ca-af99-bf1f00c70b5b,2616078255,6442446341386929170
+c709f61f-4417-f301-5715-1853f343628c,2737886282,10108006897870537647
+f12fc6ba-6464-570d-546c-04b958a128ed,1268105592,6877468238877687704
+99d9a128-9d88-f02c-3945-f77c8b88b480,1090416920,12941564343781067009
+7c8ea91d-6b8b-1fd2-fc11-4300e16bb77d,1701562651,11540275014338355908
+14065220-2ace-869f-6cb9-35d702afa752,3203935684,5717442206194180542
+a77b6fb3-fbb7-9b50-b092-e641cd824279,1192397960,5619586512165337825
+502136dd-df3b-b7d6-5b42-7cf2f5128f95,2146732100,569987573900755719
+3611236a-3e7a-370f-26db-0b2e6f25d0da,2073991797,8697583586269681255
+df1d7a04-061e-c990-cb46-2269258789e9,1168235587,10544729426931648532
+a3d47a7e-fda2-db45-17ef-0c53d1b368a4,3964111445,5367878954528688092
+a00651ab-1962-0adb-e1f1-45d79dafd675,2311344720,14761395716559790300
+f121df48-7263-9e49-e5b4-c25ca2a60999,1719303968,4393272318206809265
+5eef8a9a-cbd1-a68d-fc17-6a30a733727d,2655004252,6013842352756479416
+5974693a-ef45-faf1-95c4-4029ecf11845,2255930754,13762662628897976999
+f23d6527-653b-a76e-36d4-43e62a2eb425,842251967,14555273667324065201
+b13fdfdf-43c7-a4d9-810c-0d66922c977f,2797527665,2790845281223963765
+668bcd37-2448-a5c0-9835-dd58819cd0bf,743499992,6823468429996451232
+9b8b8344-6f17-e5c0-3237-eb585addc2f9,231232709,4266897305538276755
+e957bc78-bdc8-2a71-e358-1c8694cb6f51,1706532981,2045286266334690649
+8a0bab94-2bdd-f917-38d6-2a61072bb5d5,2082734911,10042679255153499310
+7975194c-9407-b642-1281-dbf9b32893b2,290010467,193199947384321654
+136358cf-2884-4622-8157-f8f0f35a34b1,992024286,15026788707532644033
+d58c123c-e5ec-c8d7-8be6-00b059a44280,3118482774,10462595885107517325
+d90d4b99-046f-fc84-175a-da3530e8777c,589580258,9038399641095668145
+a1464c74-d9f2-b525-2ef5-2ca8e52c7de3,1965384858,2360019439735178629
+0aa86035-c781-a181-2411-7049d264a217,376331204,5694085987546536458
+83be6a66-c1cf-b6d8-3656-b4a2fa54e151,717827146,11573237205988098269
+877e2984-628b-3b51-8698-4dc6ee73a1c4,291265075,12461850250032216503
+0e39b733-0d93-9221-40ea-a40082c6284f,1990087586,15312769800090551498
+5b3572e6-8bd8-4a7b-8c20-900f95f8ea08,1114030606,1828494489237334208
+b9aac412-fc21-69c9-9c60-7802d0209f76,543048020,16264898371556292807
+aadc5929-07bc-ecae-c059-efa3e6028e8a,264393943,7217511904787324095
+7f6713b4-0fd1-537b-5c38-62e41cb3ed2b,3486299221,14239591295348841453
+acaf2943-cb24-e7ed-2b36-6e09891e4ecc,1174732092,12086097910136624537
+413b78a6-ac8c-f594-a19a-c4f3fb60a898,2773249512,16733700069507310093
+670bf794-4d50-dca7-54bf-e6e620afe1f1,906871524,6628341360945228995
+4a3dd0f2-91c8-b1c0-8522-bf1de935d60e,845170041,4197553620568208396
+b2f9039a-92da-ef6c-8059-08b43d03bce9,1305952289,1781554954912324986
+73644aa1-d8cf-771b-5de2-ca5bfa9e5297,1250238437,10708422118389883686
+9299705f-0225-17c9-69b4-dd361bec1bbd,4129211818,14760696299031867669
+98b212d1-6274-9170-4af1-b3c8598aec18,1223103611,3779094318808688869
+4e302f31-2a4c-9e62-c37b-ee1d19d97c93,3762376321,8545491409697818883
+f737756b-3bdd-66c3-e566-e502e467599d,1370191716,58358275974612587
+b0f24f9c-f321-ad69-f2d2-07f87da958e9,801259584,13724004355995237746
+227250ee-9c0a-245a-020e-cf8d850ce64f,1913315733,11620593027324218480
+3c94ee6f-46dd-a843-3c43-217ede73ddad,20676602,5116528826160570923
+f8a5e9a9-7cda-7490-4730-3cd365c35db5,101045084,5555773315312592762
+e70210c3-bf2b-6314-e7cf-994d8cf68339,3110731558,5197892330681221403
+2fd659c0-c126-1ac8-76b0-559f38c6ff7b,3364828062,14293171287473642170
+2a272f70-6349-90cc-6e2d-45548d9b0205,1532147728,2079978559825485868
+e5258a87-32ff-6a00-9577-8684ceda9dcb,175569135,3783609121552533586
+58d6c080-d52d-a99b-8af4-ab3dc5d39405,1441385520,10103246158522407512
+8685759e-bbea-648f-2b98-d190dd80de4e,2491717492,5455101613041944682
+edcc36ba-3be0-1f77-156c-2f3364429f31,3580720288,15354140957288168435
+8fa5fe97-527c-fd84-571f-44d9df48e905,2512756695,18418405185207399762
+39bc6524-fe7d-ceae-cd35-1e333ba3edbb,191120250,14915761075495306928
+57855702-d1cd-99af-f4b4-8f215f4e9ff2,1847244590,6447783748459316373
+b08b6a9d-8338-56b2-7537-855b05be1192,3483233505,11026234101258427452
+68554ec3-2c30-c976-6214-1d6e07f9fa0a,3972540698,6733725497887440620
+bd82042f-dad1-ef92-f0e9-0b9f56367f3b,3097452183,1174149215218720968
+eebaba90-170a-377f-ab8c-b2ae01a117cf,301736660,16487885519206437818
+74d94d5a-8c6a-c369-e174-7f5490d4192d,2190752899,12128495354436825797
+27081055-15b2-7914-c837-e8d80932f21a,4143465197,3607375730642363047
+f9f089dc-a682-2db8-9dd5-32a81f23f436,1647923581,1285719446933378984
+5b37e14e-d2e3-e313-9454-29e40732797d,2112482333,7464250690598988604
+84d327e1-1c20-0d56-ffb9-f18ccd403f17,161639412,3352638857469472906
+5f2af923-6636-d703-2c3b-992b37125ee9,3003903622,18391473996843172431
+1c4f91cc-c9d2-3231-67aa-cad159fe01ff,2001415618,17457068319666635086
+a588df43-18d8-a345-a8e8-127e9a243b91,2295884686,8511857665839926273
+88e735c2-668b-40ab-8415-f278b0575c07,2412524637,4288935779489931670
+d7f302b7-3abf-d45b-d7cf-a0737dedbd2e,1809288904,13847489509252770202
+1d1b49f4-07af-7af1-6229-8a8f544c61d8,2706248805,610725603986902626
+46af1076-e3bf-48e3-fb2e-0f53559c5c26,2149169509,7482341658924822735
+f49b08ae-7efe-2c30-d069-417527d97286,343569181,14529841549989341749
+322f0ac6-5dec-6ac5-b444-58355dfaf47a,1198594507,2210044969490266642
+26014262-768a-e610-0246-dc877de1f352,4111734466,14867961428753251351
+9f40994d-f5f1-724b-f8b0-ea386a2adc2b,747806524,15133266823888109989
+7bfcf4ce-9198-68b1-78a5-c995721a9c8d,3807156886,16014206028485917728
+fc2b104d-e3df-493a-c1b9-0f2aa662be0c,4036741122,2092785628144298817
+2a30e0ea-b1be-4267-8139-46b6602bb8bc,493989471,13028973444470117
+59302590-03e7-bb15-167e-17601be30121,1978583961,11481842200126378886
+e8b0b5dd-718b-444b-cd94-1e5f319a21af,3032114931,4300103572642635073
+06e0fe22-96a8-2a4a-b983-0229cd23d802,1717463373,14822335080478516511
+e7c9c7e4-582a-4447-7350-c42d93708c0b,3930042984,10585126106568374711
+1c8c13c8-001c-7152-8e36-c331eb78567b,3915937700,17532742884167780947
+171b66a7-6551-012d-f815-e55d3efffe88,2516333826,12173193220883488241
+a9676163-3c4d-d0e5-9e99-97f386fb30d3,903318137,16825353339557334398
+3303c980-7907-2b01-c278-4c9fde39be5b,3512368246,10866696996917735534
+3e07a82b-b797-79fd-6445-6622cb8934af,692180872,8849760323012680867
+577191fd-6332-1c05-3875-9e51f77a4442,4253342830,3109775505649142943
+0369b0c1-d0b8-bbe7-87ad-5721133eb9fc,1966514332,2328106648838950048
+1a29bd6f-f5c1-564f-34b8-89225e958ea3,2516820016,7699934934940026499
+28fb1039-eecb-04f3-0161-2d659d79c927,2468857362,12071522213229840003
+c798eb1a-5aae-6627-f748-ff74020a7bcc,3001840590,1656879782488982073
+c2849e69-f9c4-6670-64ca-148fadce1cb7,989745166,18296028177482815880
+ab7e6d28-af13-0579-54fe-bbb09a18dd78,563458699,16862111129724223334
+3acb3ae7-0389-09ad-a3bf-57854ec5b13b,1513256945,17994231426393439031
+c061b886-f840-e0e5-3d0f-7e6ae014110b,113517466,5479211006276593490
+11e22401-c708-84a1-c885-904eaa9cf703,1558529517,9983907688124678729
+06f69b51-4c92-2ab3-ce71-545b3cede0e9,3461503172,1477383789867765686
+24c12663-bb92-7523-e600-07389afa48ea,2773540063,6909276357499208846
+5212f804-f11d-a985-0e1f-f093200535f4,493571859,468689689152015973
+aba063f4-c97c-20d4-9e83-9a543be71af6,3577255046,16531446400392734878
+0103946e-8d90-560f-a14e-16c0d53f467b,1435219004,4026366659124727221
+9852ee8c-cf7f-d395-6737-58264dabec49,2004199324,1190758028200686431
+004bdda4-f535-b737-2602-ea206bba51e9,4252312163,12978240380089046126
+c246a67d-ec65-bf6a-82d9-272c258bb208,2103828213,8221011544977306708
+fb789acd-d07e-f690-0cb4-f1d49f36668a,3050839374,8918685826397389400
+bc300009-c663-e8f9-02a0-a82bba7426cc,1634945112,1284292311372717846
+125287dd-cf96-7d9f-a4ca-5f09d7fd5970,2401740347,17881921374843041977
+df4a1ee2-f10e-20d4-d34f-27038619da82,568178453,14349580820653522966
+86466826-5e7c-4ac4-0236-0bcdfc7d0d81,3235542247,7883297250211289891
+1b64e089-c2dd-a857-0bf5-adc0aebbb2e6,3586954825,16398612879860407922
+5860dda9-5c1b-7d67-71c7-95fe9693f81b,2803911633,10475827819712005812
+6d1e94aa-13f5-413c-b3f0-61873dbcf894,3497408631,2891032533700476045
+483488a1-d35c-c69e-fb34-6a0c6c8ff182,311502108,14035674182591080400
+4d29e2d1-a25c-fc15-2f83-28251ce62e13,2092180744,16176295009172152607
+cc263766-98b1-1620-4b1a-602f9b89adc3,2960137995,17738308648547491068
+892d7dff-d422-794c-284b-fad1f3f623aa,2017590006,2907642108466170195
+03b479f1-24b5-7efa-6068-59240a66e15d,3474652102,8067250024444642139
+b8451d2c-0bd7-346d-46d6-b2db3c206cce,1219655249,16090619501548614999
+e47adda5-0ff8-cc7c-fddf-8eb089f0cc05,1425172804,2129158692054348910
+31be866d-1192-47aa-a1b0-02b43a16bc57,2589961852,11708414473867180286
+b904ea19-cbb1-d83e-2d89-5b5367094525,2389612854,14223258500429007989
+826e0d3e-127d-b1e0-9f5b-bc979aafb382,1031771852,146717915488807581
+fac443fb-73ba-d3a2-3323-1e415c1ee02d,1294026124,14286146728778010904
+69c059fb-6dcd-45da-5b5d-fb2edf7dcab9,1046090613,8803171532369327260
+73bd93d3-25a7-d2d6-7a04-1b45dde474bc,3621595918,944008192861469233
+2047c41d-e596-cfeb-684a-8603e647288c,196152003,18302211716630203070
+056a1559-4b05-d172-76af-fc185ee7cc97,2365540114,10810858690200763711
+364f03da-e907-c478-4123-b004cf4c4e0a,3296741505,3569317299314816770
+a67492b9-2886-ba52-c53c-514525a4f650,301202055,1771996815563128144
+170f28ff-e1cd-f443-6b1f-cb69c23c9b69,4274574978,16106389907443441389
+023fbcef-fed4-1b3a-83ff-0d98b353c541,305092995,15592058177528702782
+36d37cfd-fb7f-a747-0717-023976da19e1,1846547956,6110247373376131184
+059ddded-4e07-8141-ec9f-41abf73a16a1,451320428,13465181087212764398
+e5267b4e-ab7a-0f78-62b8-a48cbb862229,4198023758,2082435583281765073
+3e953d35-35b3-284f-e05d-610128b68ff6,2184352325,14615288759192499207
+a3fe2ac7-bcfe-06b0-6ec9-486290974f9d,1250257622,6952970108414565714
+f39d18a3-919b-1ce3-660a-c4451bc45683,2434263612,16471240411707547766
+5da2a094-7d42-cbeb-76ba-5b3069ec4fef,2678274362,11142724823473776101
+364040fa-4c9a-34aa-3530-b624f9de8187,742173237,11569035246070575622
+106e9c6b-930b-d5a4-8916-6c121b5c5a3d,3794967232,4806332485771242455
+24f19bf7-fdb7-15f9-ebd3-3e8b9116bf6a,1240819642,6765182139782650435
+14fc1560-d4f1-939d-b456-d94fa4465ae5,2919547960,9283446579604557261
+ba192556-c3be-c970-1b2c-73a1956d60a9,1905803947,9209393443363999173
+d4a36076-3040-1f7c-d34e-e854160d0278,816356225,1744094968285215342
+62dd9b6b-fe84-c637-2251-06737e76d61b,1755346767,16043615878544594945
+e982059b-49ca-2c25-b518-81a7de99c89c,4194405893,13660636460998995388
+2c6d2a42-54ad-c9bb-ba22-88caf0aa06f2,1067712110,3310801047727821650
+e5331391-6394-d59d-10c1-4cd76124cfe0,3351799924,14890190724259803416
+c85fb635-e8ab-dbe1-17d5-aedc1c0942b8,2266301574,15032690477130482726
+024cd314-7ea2-5468-bfe8-d357b2100472,2513661692,11652672479625693766
+345c4d9d-c80f-a4c3-0a14-a2580ee74e90,1208186747,5348309757011178705
+db82ee26-3142-deb4-bf17-bcd849afa908,489898710,11830101308828980967
+848ea935-f8be-f2c9-62a0-9a2e1f3a01bd,3641923775,3065920334570885124
+0aa59685-56a6-b6ec-5202-db391622c586,1620434213,9780815226812912594
+ea36f880-dbb5-128f-2745-91ed9567ee64,3442901381,16249409810019338535
+d6b6c737-3e65-7170-2354-69ecc261326e,3025716791,7778726366724327324
+3d9082f7-2edd-71da-6796-9ec67861c081,178471581,1202282197321280993
+76fe76cc-282c-5e19-1feb-1d002963a741,2442268137,2271590026627065818
+934bad1d-8b94-1c7f-b430-37f64940c47d,3735491708,4179925478324437812
+0d3abea6-bdc9-1953-fa8f-dc55dda00813,3434148116,4291173901585064604
+c40b8c52-fd39-0bff-c798-4aaac04f235d,121564584,8111716282743351459
+61ba76f9-a172-59cc-c369-07eb144426f7,984882816,13831702332244609866
+cceac8c7-1319-d3fd-0d41-f8d95d985bb0,1852935514,3353436276505893020
+c4873a0a-816d-2331-48b1-b3fd86628a96,1049078124,6281832753897477324
+464e44ae-3c8a-c3e0-c4c9-6a636410b431,2002218058,17524899522808965077
+3eb264d7-6113-fc93-9482-76b990d77dc4,4250947931,1324241828171580603
+86fb61ad-2dda-8e58-bc63-4a311c6d8b40,915869801,9128366420449253576
+781c8dfd-2c5e-9858-8dc9-6ae72b7f16a7,669318886,5684093751020339255
+8fd50fa5-7b9d-2c56-806c-8e236b518022,1968020834,5139860640608689076
+46853a19-6151-c740-40f1-c54161438249,3110966144,5282953704443903034
+660aae8e-6340-08ba-523e-33391c120041,3023921046,4326532760266396630
+3719a2af-f57d-1128-64fa-b90919e9688d,1091801203,6819253675030975718
+9475eb8f-95eb-f06f-ebcf-29ec5a6a54d3,3329450065,1350680590618792425
+529aa1d3-d633-b949-964d-300da6a83d37,1657990087,15045911110493053888
+82fc3fad-f9e3-3ce9-d559-a44a324f9085,3737944197,15195899641781647291
+8b978aa5-274e-419b-3d66-85e8e02f399b,4214952407,11631243433903887316
+bae9e339-6d88-ddd8-4e45-417215fc21c8,719178064,9829388997878554744
+333e833b-be1e-bd6b-c8a9-59d7d58c1840,1299283252,5436469615378428589
+e9207746-f21c-3201-bb06-dc8e15cc420f,3387349,4276869692793832183
+ccfec2de-abae-c3b2-3032-26fc99cddff7,208788847,7154181445527200426
+c9b785c4-c619-8d85-b6dd-79f0475dd230,494798114,16738427158781539686
+8f710dcd-d001-fd33-90b2-29526df6e776,1674537474,6829751274548375132
+ccb7d3bd-4a80-dcd0-a13b-2f05bfaf35e0,439194785,7925500501336280343
+962ccff9-16f9-0cdb-11ec-3548366e4346,2627370980,3699415349268125238
+8d414698-2dec-851b-1123-ca98936e5643,733359901,14956126609549013803
+456748ef-838e-418b-4b6e-797419eed45d,246435873,14611408825039182919
+9c874168-2f47-c11a-66e0-cc463399760b,3999383953,17524462911055566992
+77b4ff7f-7408-f343-7433-18cef24be36e,1888603856,1547576509472415312
+9a2ddb6c-5ddf-74e8-ac3e-634971711bf6,2549196100,4903100506390399865
+f4eb97cc-93ec-7324-08f3-931b5645526b,2828733976,7012087522323678396
+766ae202-5f15-674b-9d5a-4f59356fe2e4,2073174840,10973872579617295584
+cc548c99-cc51-0420-3689-3c7bd02b7ee9,1440563940,10407889683808737400
+3f0cf5cd-c32b-ea9b-b362-07e6c41eb236,1125251226,11896355172143363096
+a113d1d8-1f1f-495d-4b47-d260b24f4d07,2995179430,15633732926029362888
+603194ef-28e8-07af-b17c-567bf3aee799,3381057476,9164347209019160211
+cfe92cac-ab23-6cae-4562-1f135ce46e0f,2337347028,9108746566027444374
+a8f315fc-5cac-fc10-663c-c2d9a0ed488d,1814343325,17744335778213839027
+ac662be3-fc53-efa3-778f-38a427a0d85a,2003880110,16378164169356446045
+30428f47-e9e7-2063-eff5-10a5441a64e7,3070324583,17752244903600673635
+56dd2aaa-9be5-24d8-feb9-d158f824cfe1,2328148155,17339728829404274582
+fb0475ac-26a5-7c43-5452-392da0404d06,3948810218,1665177078346967689
+c6ce04d5-07e4-65a2-cc1f-23cca025cf2f,2457068563,12735935640993345779
+773ee133-ced2-6fe1-63f9-bb09ec4dcfea,3768924971,14988951534591163215
+43bc4075-776b-4602-0fca-fec3278f23fe,2420622431,3625670043197693052
+befeb553-8d49-e1c0-7d6b-9bdb89bc0919,1640698261,9365505404431416680
+99b841a4-d8ef-6a96-3f60-c5944dd9b34a,3112269340,15809458212988600615
+81a6c946-40d4-11c4-b2aa-fb6872b1ed40,3131504248,5769933232327731507
+2b70de03-5950-410b-1cb7-1cefff3dd9fe,1417621825,14329693225722976689
+7cfe6681-c15b-14fd-59dd-d8f00512c912,975369890,14169190313935336077
+2f6e79cf-9acd-06cf-3843-64162b3b8c0f,460167909,4843272378779359584
+a1ba82aa-932e-10d5-1a85-ce95e0e8c555,473268724,3141529711554434515
+c3776949-8e63-743b-8546-0a6c8514934b,948955327,3334996170398790400
+4138a01e-d96b-16c7-39b1-ab320c3894c2,3545944304,9748147124892853162
+e19b6383-098c-919e-ae96-bff9014ece2c,951640512,7635054197543173922
+543b229f-964c-2a65-993f-e3d1afde751a,1408825018,10652707568522329114
+c260d8a1-3076-bf48-2a2e-61318462596f,4042188865,4973205240938223922
+6a718586-4c65-b04f-1220-f1477d6d1d41,204897365,16115311557808372877
+345d87e3-45f4-cf14-7eda-ab753791936f,991684703,11949942782961013431
+9bdd5ad0-0b36-9b18-d5d2-11461f1fa32a,2818527375,15653643892290429717
+3a4cdae4-176e-a3d5-6b38-0ddbc11f0e97,2681068682,9147308935770178925
+25df1c2c-3eff-e82b-fbe3-d75e54c334f3,1967296506,10225073614029589827
+7b161d4f-5fc8-981a-0734-a39e15a6d8a3,3778767579,2260425254921240394
+8bfb8e27-eaab-2253-eff9-cdae45ccc736,2870864072,8244079103030315394
+266807cd-9165-2c47-21af-3981ecb575af,1386575949,1848050766766668005
+6d6a1d4e-3749-2110-0ae9-ca874ebc8fb7,3787117522,13282901684943153840
+a5e1b162-7847-2a3e-db80-f5dbad07a90b,3181409526,3143198101404357933
+da6bbb47-5828-031c-8115-c2ddecb05996,3221432890,16366727615038778978
+81a47c2e-35c2-48af-35a1-b05104febe78,3935902527,9855463454587455361
+6c8a8f45-49f1-98bf-e8a6-ebae537d2646,2185979625,10182298424207198781
+e96003e3-48de-7b4d-2ddd-534ae0cb1b76,1844186125,3045926322158409043
+c1984c92-94e0-4530-5dc8-2b90566efd8d,2630118073,17895765135170176256
+43ea8d10-be61-1f29-9925-0f8b139c8096,2050482193,9882320640748446263
+9d12596a-6076-17e2-a085-a3d6c5dd4041,480726032,10766279636089505991
+b14dd225-0aab-cbaa-4b57-3bfefeda7537,542503994,5139834432992171161
+4f229b6e-87e6-9e00-77c9-1d0c1283e15e,494474823,4030154682996563249
+f20e0cdc-62d1-86f6-febd-dbd7aaa9873a,359796153,9959887765162399031
+5abae6df-6669-b9a0-806f-edf3ffcb5170,2349245376,11531178908004574375
+b3d53098-87f5-44a3-a892-6219dcdabe64,4128683356,15982754580438397686
+4a5f79f6-92f3-1482-53eb-9731fcaa14e8,4122322097,15413754218971872222
+c13cbda5-42c4-1d25-7254-9de23f32bcf1,2497288211,13702878485976225666
+c08f016c-00de-3b3c-6ed3-1749fd77a6a1,3061886154,2158326036493837819
+fc2c8c1e-6442-9681-318d-cca9f6935601,1704919587,15696276534120276091
+2eb7ded1-7821-5138-8883-6961b01153b6,530017058,3664840415054177874
+730f5f18-ef90-67fd-2744-af88f105a482,151968665,14832303088183372084
+60765cab-7d3c-4cbe-b5cd-422d1eaeeff9,3782332100,1157435364928585238
+04ea5d93-992d-35b9-9d44-0f87625735ed,747370371,16857707604534101754
+c188d484-eb99-3d97-e6a9-3ae7502e56fe,1740632181,1512761874225243940
+0239679d-eedc-4a6c-a649-cc657661d2f3,843570465,4981765371907388519
+7e468935-6930-3074-2af3-b5f7806e8cfd,3264799041,17598096517208719513
+ecd3ac30-ec7a-f997-494b-d30e4649ada6,1963425288,13493114244671688274
+fb3aead9-1905-d622-5a33-4731cf8028e1,462286994,12785266836410276626
+36fcf2e5-60cb-c083-624c-2c7605abf3c9,442233500,5626778310989383197
+d8eb30f5-463a-5fdb-7c24-a9773036ab06,3413500363,17551970957244566423
+8f5dbe30-e0b0-9ddc-3c20-36f326a81104,1002456171,11780102285298905418
+4d2fb750-f1fe-a118-078b-ef20497f79e4,2581589841,9387435885694497920
+17f4fca1-f025-c487-fcb3-dea4b8e23947,3991845772,16960259662290785424
+771ce88c-8dcd-fe2d-0eee-afba2b9cbb98,2867449299,9323073509594426466
+e68e9e97-4ae0-8bd8-b1bd-2a948c0cdf64,1676457356,18395501154078884754
+39e6fa3a-8759-9012-197a-a3cf00655c03,3928439448,15928270273441438377
+7bc74208-81fc-0c31-4dfd-765e56054acf,1380498388,7527836742406850477
+a46682d2-e49f-5d9c-cf01-b1ae2b09443d,2811927746,1573491091086556858
+1c10fb55-56ae-8607-040f-7df5e6ac0d10,2760330225,608411972042174328
+a7e869b4-3fd3-cf1e-7c5a-86cb70fc1c04,374590844,1175947613363492581
+3aeb6831-8e1e-76d6-2a9e-d801b105297a,1202337110,2218602539188559565
+47d7e2fd-b2ce-8b1f-3176-d454ab725816,4108423303,16330323247110672328
+c8c7f549-469a-8d2b-b256-b8c9792d3776,3164124628,16455973505549724910
+69c152a1-2e30-c81f-df24-c4559a1b5b7f,1105898733,11623604087492285788
+3bd34c90-17cf-46b3-2162-e23ad84e6baa,2632090805,622557232496989324
+99459b19-430e-dac9-c0dd-e34017eab349,3662236922,7714741275374198991
+182fa677-5fe0-774f-4d63-339098820583,3055225527,16386741577194626298
+a4d91780-84f9-5af1-2a66-f6d7bdd98f36,961647760,11108446393578138234
+37edc154-49cc-ecad-8ee6-18f279bf3a9e,524059750,15541246347574585330
+2725b71e-d1b0-42c5-8626-fbb78137c095,1983523280,17655682927054411273
+c9e3ba51-e1a4-0726-eb8f-a9cc2206b052,826990066,12579316874555529020
+2d8082c4-8e65-19b5-8b65-0ec27ea7ea5b,320203925,373082316216741141
+207238b9-5481-22e2-2d28-bd83291bbc51,2551153630,11837530900188359618
+6a2950e9-54e5-9294-afda-36e2b5020f78,3178346217,11051347066987296916
+0d9f52e0-679f-9396-1744-044b3d8b5b59,1519010969,5734953249446670266
+66b6c4df-5920-0fad-b7b4-31b5d62b656f,67762707,13767416252967243496
+199083a7-b520-9df3-cb22-6a3338bc9684,1721063508,13045961343494390764
+11d5bf57-3dff-4311-3a99-5a9099a9f3fe,2052929068,4622286336808666212
+1d8d9b32-58be-f5e9-a2fd-48cb15e95cc6,2925461076,11408602685672210287
+f083c12f-2f17-4082-9825-931b81ba6573,2313701295,557078595426450712
+3ea2dc20-3145-7f43-4796-f0654e11bf1b,436967212,12544988321174598680
+274f956a-8b36-a836-6f38-21a9775763fd,832413325,1025997112508784932
+62dd288e-a04c-ab1e-ea7c-f74a5edf403f,1129951958,3479645140014114954
+4cdc86bc-5681-0b7f-4961-1de53aa409b5,4051139732,3969649724220402885
+c83ae731-c2c8-c45d-5640-9e2cd27e59a3,3153968310,11204254165620181585
+d0e9f708-aee0-6997-ab94-e7726c1a491c,696207358,7618651691504819699
+537bbb1a-f210-099e-73e3-5ff1133bf183,2642216499,1359619716100720059
+c3a49209-4332-8f29-14d6-ea9d7570f4dd,1285629016,7196583656565935
+30a2577d-051d-2220-11ee-0e5c573d4ed5,3392108169,10369895041814006079
+87c7bed6-4308-cb15-eae9-3046749bdacb,1035481764,15774652294339619634
+80dc1001-b796-30aa-997b-dd17e213df53,4070806101,364142484855103688
+d51274f4-a44d-2e8b-0a0d-09bc5e16a2d1,3641904421,1293415381745057751
+9734d432-a9a8-78bd-a5eb-825bc437b683,1259493653,3781535549297756038
+fd88ee20-4023-0cbc-ac3e-535914c32cbd,4055246713,17640939367658350080
+488a787a-58ef-1368-d899-b7b10907a65d,1469152050,18021234587874576213
+9b4871f6-ae79-0c22-2673-8bd7639ee56c,3787616648,7701141871498253927
+a2d91bd3-3f13-52a0-cc08-d1948cec9b2e,3392456833,14216920264180553212
+93b307fc-2bca-e8ad-28d9-f6709f8a5129,1132923383,1784099192154554836
+078facf7-6c4f-e8e9-3da2-1d997ff33440,1167575032,7058670707331403244
+7840b40d-7953-2eca-ef78-b98f837b9534,1977926786,3344302085744892324
+c6c40292-53de-6dde-fc88-6cde1d8a757a,4140063826,792494826176829268
+84ce9bc2-7c1a-6c97-10b9-c03e9abcf731,650512445,5849057150775266020
+7fc19890-771d-c208-1f0e-3b0bb1a22eb3,2048943192,13143592015630617603
+7294d410-b2d2-5aee-89ed-b90d3c724df5,3429368868,17398402696168677604
+d16902fa-0d35-1f7d-bb7c-0549a935610a,32699072,1993706509237100901
+aec1acb2-4e4a-e0ce-5e74-e9fc32f8f5c8,290298133,17817509444432703699
+4a092d6f-081e-d84d-ecfa-c4a916e2d141,2301321532,3870594066852733048
+139992ed-2c0d-ae67-9c56-40c6f78625cc,3145580861,13848244713635726595
+b892f2ef-8028-8653-32d8-7719ed253546,970256095,10784479679639290962
+f8ad2e91-d5d5-0baa-4219-844f658ad17f,1779746607,11433927381816130398
+f9f8a503-400f-6387-5ed6-be9afcf2260b,1842977536,14370606056114959313
+16ceb8ef-1340-fc19-60e2-b76f45fe99f8,931232023,16523562876555951123
+70e35c4b-6e28-7f09-8cd4-e352f9fb6754,2661040916,4442117400216487692
+cab70e1c-7d0f-6e05-96c8-a0a97c0bc8e2,222194793,4236271340433751427
+c2113f65-aa5a-bdd8-3ad5-28c3c411ec84,173504863,4433024113116505324
+599cb041-5f20-9047-5eec-fa72ab70d89c,3632281131,14954631313013018643
+7faaa549-eaee-6ffc-4d58-92cccefd9ea2,741466753,11679013089352535174
+0e564695-3fde-1e9a-b544-82233e7193f2,3331924267,1973324752322541347
+67917b82-5ae3-7036-5b74-ced6f1091ff2,1855511471,7313453998741510174
+d00cd0f4-46df-dd9e-903f-67259fbad961,1580871116,12988126521940250902
+fa194748-036a-4f73-31b9-a6250ae1975c,2174811810,4332027912940157460
+03b5acdb-cde8-a091-52ed-f4496f32afc1,2482852653,17698632908293253452
+4c90298f-6017-db85-0b6e-2776bd416447,3881472247,8491792707633692550
+9845eacd-ed9c-b808-81ad-a65c4eaf2f00,184316566,2792863660804907148
+b6de16ba-f100-8057-edb7-9033e13597c1,3281064993,4003529295331689537
+a556fe85-5eea-bcab-46a9-420e3ffb4ec9,309056869,8637478990010923064
+c259cada-c6cf-feca-e629-265a2f68c022,3897142305,17259751586380025127
+e134543c-2e26-3538-8461-aed8ef71fbac,3557612132,17713160970464902083
+b4b77453-be48-57d0-fba9-13724541a0df,1657468364,668874724692187944
+0453f5bc-7d32-ecc9-63ad-7705f5cd2e64,1447143208,1413187466696099166
+79d282c7-80ef-7eaf-8188-7d88710f2d34,2276739272,9536964543599090744
+636a1511-127c-77ac-be4c-ad9205884da2,3029649882,11640103132593156658
+21e2b8c5-9ece-f0ba-f961-97f3d30f9966,2645967064,11404558533653450453
+dcd437f4-825c-5c89-0fde-7b1bc242a37f,3069256104,8976883425203810043
+597ab6a3-f6ab-184e-e6d8-70eef5b19ec2,725037327,411208277326187932
+4cc2bc32-6c99-7b39-b3d7-49500edb4bb3,1278867809,5190856722778570771
+0b6db8e1-9722-2c16-88a5-4f0b514f7940,473207710,11949433632911380571
+4dba0cef-f72a-a5c8-3998-daf54156b167,1446119957,73239380612270409
+9d93ea50-f6a7-f0b3-c364-da32874507ab,415121526,10764902734455761112
+afd6a223-2743-9c1b-890f-c09d5835b4f6,2630094463,14602642567235514186
+065f27c7-9f71-d483-4d3f-87f4dbc5545d,2003567231,12554401075370786966
+b464d0a2-2a1d-7bf7-e1f5-deea76556706,4144840333,10541109649480066528
+83a56283-470d-7ca2-a303-ebb96faba0eb,187452861,4459575173804537566
+3eb91184-1700-548b-3e36-4cc9325c603b,4061586034,4474644883140836896
+7e1ef385-d577-6107-87a4-798487eee974,3925956984,10585127128249740453
+f16249a8-5632-a5ba-9a20-042ff2df95f1,1322318509,36544530741224675
+be31c28a-51b6-ccc6-12da-90537a695891,2076182174,11438544436056411499
+c28e1cad-4597-86db-753f-edabcf7b6dc4,1275663174,4183062340978747301
+eab20bdc-2266-fd6e-b72d-166d823ac509,1684678040,6411546935416428291
+6d6e0eb3-6e30-469e-30a2-a5c0a1c6b887,1876853525,4728763217893303434
+f952add9-ab56-78b7-deb1-7dd01a1dace4,1861455899,7813621136855867767
+20cc6bf0-9ec2-7b8e-1695-92ea81039761,2174016465,15218572168721845463
+6bac269c-7b30-2ffc-3b89-43029c74a6b6,1689280173,9212929106177026392
+50e34996-19db-0064-519a-87465b047dc0,2954824549,12534364208289506738
+2cbe3284-4368-1009-0d70-dd3e746ce3d4,2267803860,12337886000478927336
+f966585e-2791-d03a-8e45-8811a4264fa7,4218874889,7443860584064275265
+1c15b463-2acb-1151-8424-9dc3aeb8a0eb,1073985995,15216480983175027235
+97f013f9-f49c-63b1-5126-c09b338fd2e1,3670553171,9079483633289079421
+689cacf8-a341-35b5-eb6e-f7cbb6b4c23a,2430875486,2137995422286831721
+cbf070cd-c80e-17c4-fbea-531a1e00269e,2457961537,15039767052420161548
+edba56ab-e45f-4c77-246d-2c5b98fd1343,3522647396,956543089662417200
+fc9c5fe7-c551-afa7-2dea-f322e8423389,3673653469,491749476639306233
+e736a589-309e-6925-4821-165721aab8f7,1589455499,4803140716450911646
+fb42a2f5-11f0-7eb9-47cc-b226935b24c5,2856529906,11689860350739040515
+087b6747-14d6-1b90-adc9-ae0b7d6e2209,3718223563,3275847054013168762
+acd5224b-d445-0322-ac68-334dd9e1393f,1364881132,5297769439864522163
+3559e17b-3865-6173-95a4-422e618328c5,4169962232,3040872563920458104
+08ce9bf7-0c75-1213-72ed-845b23518863,397176101,8816432587663541610
+be296d1b-8973-2e58-a2d8-6d0d02a8d15e,54973796,15263304112488161150
+071071b0-e9fd-c9fe-b88a-3fb2685b6fb9,2972552882,4499866980513592763
+a748d95d-6d04-1ef9-fae0-05bce23796e0,380185548,11900812411486914289
+de3d1e7d-e087-95f7-67ad-d203cee53a31,334749072,6850566386269517115
+2b297baf-b6f7-babd-1528-130860c2e24e,3014979330,1133381461965713505
+36c679c3-6016-2a03-c00d-542722ecfe09,1996322615,8439492096545848517
+49fc86b6-0393-249d-85c6-1caa426b0d6b,2971893501,9482820529910108431
+c35c3975-6d40-e4a4-8577-4b894e32fdcf,991369674,17694388657213899960
+65e469ce-af11-cf71-d7be-f60f8f22f383,1043638989,1676916896980961820
+99424c73-8493-8822-a0cb-9f2684a474df,462063779,12797348554983792735
+87fdea71-b930-eb01-9973-8f0a53d02953,4273461988,15127764743406789217
+5e072492-29a2-d29b-25ef-abcfedbe321f,429835300,4369027276681843683
+3b32f310-a4c4-38dd-6c64-db830fdcf82c,3257988810,13036374539572122710
+53f4c1be-6ee0-dd58-2f3d-ce9a34ca6f11,2366150393,804954871359491790
+c0d7cc45-e0be-513e-bacf-7a20f40ff768,1769651595,7476656944455394482
+b23f009e-6dbc-8bbd-1489-56732ad72333,4287536847,7954972331364341699
+4bf8bfd3-84f5-f26c-c641-2792bb472b19,808003490,17836519078620308317
+f5a62211-c706-036e-dc37-13abb1a6737a,112890170,13680141337392587573
+5bc94411-1b6d-5f60-f000-3e2c04bdc2a9,2589927623,18141565528790993301
+391e5927-05f5-bd65-bac7-95c76d5032ea,3514455965,4961860357538319459
+71235dd0-0975-fd37-6c8f-0e35e066342c,4091425099,10533303765114718119
+43e92832-493f-357a-12fc-20280be33031,3359456587,14545577218434016161
+2deba4fb-cad0-bb40-33fd-8f1eb47793a6,3964361847,1275787466489379438
+5dd9d633-aec3-6db8-0ac2-f81b50555dc2,4016476512,16253170388698384580
+2363f995-a96c-5bc8-a4fa-f1bad6d672ec,2629408746,8222145785686019406
+fde2742e-6fd1-bf97-95f7-17cde70362f7,194731356,9306540053229165674
+2b8e1bb7-5304-50b3-7d28-4c35f1a3087d,3347190510,8070232129114870263
+4eae602b-dab7-9a24-dc71-5e6d8629787a,1506507206,13755836359628428052
+c4c5c571-b2fe-b474-60ef-38ecb99741e6,1312452008,10288459093189720814
+75ffe8a1-02cb-a44a-557a-3b7d3e381060,3203085834,1799146800474521782
+57fb3659-ea58-1303-467a-ae838d964751,2258476705,5448902205699956797
+8b55e4f6-09b2-67e6-5f2d-339e950d304e,3803237488,14169351649403052012
+e717bc00-e7dd-a6de-0566-40937f943cbc,2058646678,5418578316154739272
+40333fdf-71c1-3bfd-f8ca-07bcc0106937,154292457,11688722994443395463
+c34fde9b-dfca-8df1-c668-a16a109cb6a5,3656703586,11692566116606224444
+0dd20b10-dc78-b55e-570f-d34ea05575f6,3388483921,1529804413727528180
+57149bfe-832b-c616-bcac-d535c6c0e758,3624651112,8070797486377627414
+aafdb480-0fcf-e285-1002-8dbdc45c3dfe,2829766137,9447085309623839309
+c20f741e-3f8b-c000-ed9e-3b103c37e9c1,2759384594,16113422118692155654
+dde3a5be-2471-d475-74c0-bfc621482be1,1907926532,11060725179423221058
+96197e8c-5682-b2af-dcad-a2e1b43606ea,2903065802,6428665572571297648
+e9ef31eb-1b96-399e-285e-ade824fdb0d0,931129663,4363199942459230611
+701b908e-ae33-746b-feef-94df6f9a2040,1671952472,18160015110932389833
+ad359f11-a7a3-6945-feae-6ac866857564,3929408257,8246279314796356522
+6150ea11-0467-05a2-e866-c7d40ec2ec54,2696540676,13880148269948603640
+160d241b-b3a1-9fd9-4c5c-3263e0ef7ca6,380917874,2574796580596407069
+777687e5-c7ad-fc76-7857-2e5b27c8098a,3772944292,3703385234076775679
+2facbfd9-9f94-022a-e282-8466ca8f4628,2921019382,9418577002893053563
+31985b0d-a483-c6c9-c979-8514b64d99da,198853749,9817322365947917819
+f3334be1-80e9-417c-0ce5-c01f9313ca2a,3526724101,3535350960293612525
+b8226fdd-f4f4-281b-ed6f-8e836ea64fbd,1122251116,4604264860912537024
+423baea6-3ccf-b4cf-87ed-e8bdba0bc3b0,1761329187,15990449369172308622
+aa9f389f-1b0b-e0b8-37a0-3a4425568ab8,1280252078,14818002310289760807
+dabaabf5-1d71-d088-e5f5-371334cf2598,1962227004,11884769935195844979
+751029a1-d534-6ff2-1aa6-794a4ce440a7,4290162529,12450523531955444915
+f396f8c7-5632-e895-64ba-6141742e1ec1,2367413448,13094969203737766306
+eca7ca21-71c5-a15b-5210-dff93abae9d6,2326541144,5393039165450342091
+d7f4fc8e-f685-dfec-d21c-7ce2a8765230,549725616,4514320764516320663
+2bd09670-3095-49bd-9b31-e6af7e55588b,106884087,15736453936196688064
+edcaf4ff-1ff6-3a6c-e2be-071bcdf03015,1392491572,14197770578196968843
+23a45259-fe43-f529-9973-08c7b2f33d46,2937861259,755056952717680664
+2aa6ab85-4f00-b578-7393-608e42aba8d1,1509798830,643892380349675193
+24bd01c0-9959-175f-cb10-be57262a4249,56659048,3172792789410190137
+92ace384-21b9-477c-4516-de04b2c48be2,88237002,8149891459674317859
+b1289b7d-326e-31b6-7aa3-076c2161a6db,2602517640,3074622024791134300
+8d113430-07b3-8d71-d6fb-ec818e642091,2361765677,15862738137820031999
+c75e1a71-d39b-f056-c9c2-76edaec20efe,14048810,17065587599457574317
+196fb144-829b-cd18-7ce0-236488b53379,921057623,16215392864046319818
+3d14f095-e301-8baa-f918-17e7b3858a2f,1943245335,10548911154661829787
+4063fa5b-cd86-70af-5ab5-8b5403beb27c,3713424516,11155677738416657055
+b654e7fe-9edc-07fd-d628-9b9c15e8ee82,1955788989,17134075803254748918
+e0124390-62d0-185b-5f4d-2db0e4bf40e4,138996719,7009516226841199388
+7f302b71-f14a-6ea6-c803-f198e0009e59,1909583532,4348541164702245825
+b4b76fc1-453b-ee61-7441-e7ae656c26cb,1524039514,5698830826476261429
+3665857c-999d-b3de-313a-9dca272a134a,3400990329,14366065144497674600
+cd1ec4aa-7689-14f3-8fec-206a1c460b3f,3817843877,10032461819375555813
+a9566b20-a2f6-0e9d-1571-411c604941a8,3865193758,16369181403112315572
+a3f78185-8508-4dba-ab6b-ad628eadaa6c,3107376449,921370025457031625
+727abdd3-333d-c7c2-6736-87c1261b5281,905947727,4188472453997689786
+e4c90211-db96-8cc1-41d2-73573c34788d,2626318206,5014805633674382744
+3b0c5db4-245c-6dc2-8789-73ab0bba0612,4056902756,11540619691943128712
+98396c24-7b8c-ebe0-7d98-c3eb9e434bab,1111985274,177498169295842097
+4c60cec8-009f-3d2b-ec06-c77aeeaeb4fc,1146755449,6513053953843162256
+b70124cd-5c73-5b11-7c2c-6d0b74b940f1,2684348214,2228733255579003435
+b9b6ffbf-c1e9-1518-08e7-d74173f7ca80,3663382037,10178432133870289406
+f9038e44-3bc0-4e15-9b7d-ace189597c01,3615009633,2119179454692891118
+dde13262-d4f7-35fa-22a4-9e286f119df4,3560557793,14806819266533741439
+10789f08-8cb4-28d1-7190-5fcd91c0fb49,3150691246,13372388994499684627
+04174ec1-f0be-060e-6e65-836dcfaf715e,3122377251,6600171035667802819
+afc8cacb-b238-4994-a22a-13537b9a0022,4107905153,9505906123372233203
+a1ca874a-d68a-9de6-d813-c1c43c026917,2404604393,7010903096927017417
+6f327331-5fcd-0ecc-0032-8581905729bf,1145065301,11162929340799634232
+e17c31b2-3e84-07c4-7c29-185b1fb6a13f,1656978107,2601794756010887300
+1813aeaf-e7fb-e7e2-e219-4a085156eaab,3009100418,10256828482883029078
+b039ccb2-cd5f-e3b5-d59b-d37422ed6545,1323932881,2405480614351204476
+f767dbc9-0b30-6f8b-a8d1-87e1808d0908,681060263,16332467360484512847
+1fa828c2-af41-84a3-48db-972995e6f62c,2648230059,11227510742729591677
+b7a0b93e-a476-eff9-3882-0e6f7ad7b2ea,1039614909,18073670933912477543
+df4c3e21-78b5-28d3-0497-c92cecd737eb,2063023694,8524640395605008823
+64d7f544-a172-7a7c-f123-c196c6f9858a,3962225455,12565136413924246126
+8f2937e3-fb6c-6d72-bf18-5d5e2d6bd226,418516066,15740464982277506226
+44723940-ae9a-e775-c149-b67e56ed703c,4292984226,17872860071572764556
+3685f38e-bcce-9ee9-c6b6-bec16af645d6,2010208092,12565640507350908411
+72cace54-1778-548d-580a-53e8f80592ee,2569478787,5234113613570895217
+387ec5b7-b605-6ecb-9333-10f1d020caad,863666224,7941379329887714606
+57a964ff-3b8c-2e60-cb1d-69387a9a48cc,2225030685,1327679518513377066
+500c2db0-dfaf-4af7-c96e-ce8bd0fafc33,3931502444,10726890120309880453
+34f11990-aa0d-bf6d-137c-e30c29b5f3f3,70040332,4386980904379719526
+e8f0d2a0-da26-12cb-d9a4-69d11525d61f,3113717934,16111889617611909601
+22c3c13c-e1c7-3cff-7a01-fe81256e78e7,4196494799,312066515978635901
+1a09ed1d-3cd3-8630-5dde-dd45e8f458be,3058702757,15338621670850780005
+24a55a1c-6ac1-9111-dc20-665e7cbcf842,4198958247,6289159747934090435
+131c8861-185e-2e61-64ca-45bd91163cec,2608442068,3475132204335550742
+94ccfcc6-5673-36f6-a350-243216b941c0,1440470363,6499710216963945411
+e97e2a36-661a-1cc4-c67b-2af63f76b137,3627094248,4468939077145814479
+7709dcd4-316a-3933-76d0-e9c67288eb53,497600042,10896635983370699412
+1cb4862c-7cc2-bfda-4de9-5dd20f1d76de,4219088011,17540124536710227263
+f69c6645-94d7-541e-0379-46e0204b7ec5,2987405088,15976577761145886858
+752001c2-a9eb-65fb-9b50-18f7dbc1ad69,1234320801,6137030924692551026
+bf4d9d7f-7810-838a-3426-6bbc314340e7,762365643,2531232926607580199
+48657c95-8432-c7d3-f894-23ee0310d6a1,1457058811,3692341827524419250
+1411a499-5a0f-b95b-ac06-329b3b8d0c57,1682046475,8543264389871578550
+8fbd0e36-3747-d7f5-45c7-d3b7d7f09468,3535993119,4080788052159209872
+59024640-7025-faec-d82f-1144cf6cbadf,1507927881,9607450013127327774
+da60f885-1f44-1933-15f3-e04d9cd4b2bd,2421444654,13365691095039272243
+c7095d07-c1a1-fbc1-dea4-60323763286c,976748769,597601979454064301
+ede0c8d3-7da2-8eb4-2872-2f3e119b1870,1593483609,6679890240778931896
+fbb7771f-cc25-b0df-e9b7-a2bb36510006,1594974369,13300322802541732323
+8a131814-4be9-3b0d-3408-142c8d002f69,2609092555,11561508158096061488
+66550ccd-da14-25c5-2a69-c2643c0ca814,2688050271,12846831676560776463
+4efd7994-9acf-b905-6fd4-86e8eaa09878,2599360114,15405250450352653991
+5e31cece-5955-f8e3-652b-b8387f57c9ad,3440603813,5297541718620514508
+cbf80d3c-3fb1-bf41-c552-a15a478c4aab,21506304,2625239995321609470
+345880b5-56ab-de35-82de-f471e74eda3e,348994845,180462731792979649
+13b6d761-c632-cc53-6588-13ffdb7e8cb6,1226000502,17143065047546492634
+f75b3e97-187c-d2e8-8261-2e77597e9ca2,2745693159,2291541983258538136
+15aeb610-585e-40c8-96d0-73e2d783fd17,987129983,18258132480161528222
+fa53b191-ebe6-1d30-1e93-0df702b16a8d,1807216130,15116149945193173552
+074356de-2d4f-0519-b9c9-e2cf6101581b,3076396674,13170031281745873650
+91f00862-36f8-364b-9f50-2c760c045bdc,1622135338,11990680860040848881
+2a6995ca-5bd7-d9f4-4adf-6f86290b38fe,1126155763,14249500668955716979
+d421fba1-d5ef-c1f3-bcbc-3a832afaf143,2212943777,2791056226877534548
+6650e365-f93d-a1db-3819-941b0c0e498c,216559267,8573267946684172596
+52de43bc-3905-0312-4c61-b2f5bdca97a5,1364611944,9446058029610238215
+9ebf9911-c9a0-840e-5b2a-732be40961b2,324857747,8392076422031643551
+34e21658-333f-c952-b44d-82b942ae2670,3999780585,6655249989606768722
+994c1b7e-fdb7-47a6-8c9c-796b9cce614a,2817692088,4691412408841319213
+6608151a-a3b5-3d23-bf5a-44b733f16ba8,859040080,9006262699805523308
+71c2d0fd-5167-eeca-0b53-0cdbf293fd62,2972921878,18199084419825248264
+49569c4a-7a9a-ede1-1531-098b893dcd3c,3269372016,6310560454660201053
+aa98e2bf-4d80-1004-4d0d-9a40c9e44d45,1080722333,6336973696678900267
+730f5509-f458-bd96-5837-5184f79b2a5b,3712198395,5924118911006247183
+b8a3b5cf-dd7e-d32f-8ccc-ce08b77c7b21,2487607449,15597422987249027191
+eedb743b-2475-7137-5458-a260a6ec8a33,4145125243,894624840084099233
+5a18e5cb-8479-15a0-7727-fb09cf2e1082,776439057,12200439235182598702
+3f57326e-07f6-394c-342c-82286c9e3a4a,1455627440,1582594625988834460
+b8318c97-477a-a4e8-9f37-da807159731a,8059509,1349969289093045117
+5cddf91c-29ff-bcfa-c1c1-fe3440147830,850802890,7203672588764353933
+30b2db08-62cd-9607-e7d7-06761f1841d3,94332534,7976935022595941620
+c6fbb6a3-8416-537f-33af-c5c78f5ff631,3880246192,13415711333806059011
+ebb229f5-f29b-7170-f2b1-213f13f589ef,20987006,12198308108808814712
+4ded894c-1f1e-774f-3d38-9e6029ffd03e,1380465222,1330268081245038034
+1c214dde-0e7b-be96-43ae-ab5e03997e28,2257008529,9925737730721607875
+61fc6784-869c-96df-5ba4-38bd996a0f81,1379310077,5852424331563592617
+0aeca8bc-8d5c-933a-47cc-030ec7e8d64c,1624827656,16054141896289181963
+4bd28ce4-23c0-1f27-4469-9b65cab02aa1,1673681193,12630691430630924265
+0d81b1ac-f04c-8c4e-3a06-a46061535956,1123172895,5625871382870707290
+2c05db12-cf3a-79b6-f039-b436c5788c2b,1005997314,91607449050884623
+6b6c99ce-1e4e-586f-9a5f-2d7b255bc4e7,1830633312,14610318201467760384
+7fab3315-5089-9c94-350d-06fad5d13563,758320433,9445297535336880556
+4e467137-1b22-bc9f-a0d0-4919d856e40c,3922374255,12576803893208743795
+b6705edc-711b-9887-5b9c-741543bb470f,3447097186,18298950881259969423
+6be3b9ac-0116-4288-6785-cdaffcfc9e2f,2543617951,4903790022002340483
+3c886a82-8144-888f-47a5-6c18a114f3b2,2377441668,3538405002012422734
+36e34e08-ceb3-73b0-2038-cd6b4b3781ed,230921002,11668332712358393828
+edd58e53-ad33-459d-0d10-3b5b896dc4ad,2630123525,7821535793939677011
+a7225957-9f2e-3ca1-82be-800c8f20eb66,3828377400,847649533939150852
+5602c931-1a7d-742f-6fbb-ee34296dbbf6,3483684743,3259197618905064626
+906dd8d8-8361-b00b-ced2-fdebaf202cfa,3377672497,8315260277699527941
+9a4d47c6-1e61-c301-70cd-14326f77282e,148132029,15344070037794558994
+7e5a87e5-c5a3-4542-3840-048b97c54791,3761395986,14675788358154582144
+21be6a26-0d7e-e87d-ec90-9ab12cc83efe,1579328718,11600466089181670998
+f764d25e-379a-8835-e20a-9d4b02a7ca6b,3288800039,14199239008949927927
+7136be93-5e7c-c6a2-5556-31197d833299,717146605,4381678248223396830
+ddb41568-75de-60a2-2c25-302c1e290c68,1748931671,14078648654128850892
+c05418c4-a3a8-837e-435a-3445e0a5cf8c,3419130697,5651671369604960286
+ecc287ef-082f-3f04-2536-c2e50d3ddf72,3294991935,5717196804373590888
+d6f15ce1-a7ee-2c5f-6032-1aa6111e8bf4,1343370902,8558275781657364134
+efb20fae-558a-5143-2d31-9ad9f4a2f62a,2377949160,3556910070919698837
+db27209c-99d9-7489-e16a-b670d6e2f92d,2828392356,6793242744917883752
+404600c9-5b04-337c-37aa-7a744fc5164a,566361823,9587418247032945112
+8402453f-1183-0785-0a1c-b8534e4f1b7c,2200222313,16092874451352771907
+03e421ad-9868-04f0-a906-5dc3bff0f4b7,2121427232,12891693591459751082
+37252663-4762-0f48-808c-7cfe2c79f499,1907675332,5886487770858110100
+03212164-fedc-51ea-424a-deb418fe3799,249738383,14777353299468376842
+ea620bc6-7b6c-d04e-3a99-d4a8e962d042,621169754,16182547793325224732
+4c2bf88f-0114-74d5-cace-9a7b9b675262,4230781431,2036817977952843724
+05ac12c3-5886-d3e4-e8c4-654e4fb33992,735927623,10265804861246819304
+97ccb2e4-1e1a-0d92-edcd-f4c04d96ff0b,175038005,10516646106593879110
+2cb08f16-f114-9e96-04e2-900bfdc6ed19,515516118,10527724817882233019
+43b5a948-77cc-b81f-bfe4-e0afc0939d1f,3142618406,9302822753498612322
+50a45245-dbed-6b47-ac13-811911240dba,3424275269,17474775094647142362
+9a81a3b9-2786-12e7-b09b-118dc12828f7,524532950,620679472122119930
+8b8f979c-43de-26ce-8357-989f17bab8b1,346406717,11719318606148075565
+2ec1be65-9c16-09f1-a79c-e55fc2d762cc,119862855,14824473999928457457
+b0f7d86b-5eb3-23cc-55b1-634666b1e04a,341979901,1530896593067135830
+cb7083d6-d2a7-8a47-8dd7-89e82c45c9a9,4093063358,13150964117113987733
+67e99018-495b-77ec-587c-4416fe98c7b0,2220145696,4862774649337710906
+8a725116-44d7-6c7c-9165-82d75892df52,1832670171,2575536987923852174
+43f45d21-ee3a-e625-d1e7-dba2f5733ed2,2605290484,7433491317710423155
+a5b20099-8e32-8c22-378a-d44d34f5d3d6,2809926887,379036232547621531
+ba35521b-d47b-b6c7-3c87-d8b111c1c17c,3570253249,14400562661684494390
+69f8b705-d676-16e2-7588-fc389f5c716f,582025341,4282061333843207702
+b95c68e6-ed66-fa3a-b2bd-035c397443e9,1576255420,6607713511070094739
+354d711e-e769-ee81-8348-da45bfe50aab,1253512008,14148960546311011405
+4efc8fe8-f846-21d2-92d8-d47b6c06b6ca,3861296599,3720071233252940603
+2dc54c24-9aaf-02b1-e010-a5a696d3c66e,467162218,5818400269425023857
+65239f96-96be-2417-1522-082846d61375,625212239,605469712103233127
+c4c99cae-4120-f1a0-8e4e-69be8b61b576,581464457,6305771951660689810
+87c73acd-fb8e-af5a-a571-9e51b3aeb4b8,2477298077,4646242696552368102
+f250365f-d2d6-82fd-d691-93e9cdedcc7f,2642751998,3108239807556079902
+252f76a7-255b-a7f9-4c53-ff91c231b20d,166134918,13156852762246172859
+e3cb0a15-6fb5-0a6a-15bf-91e1f9a2ce42,1084327233,6692917244178989051
+18912065-2272-abe5-75a9-163ed4cb7666,669122046,9302637748938859587
+94fa488f-a30d-7094-8a5b-02b0525a72c7,1148010612,12147049951807974941
+81a35cfc-9734-0848-31f2-a171ce16c65e,3715599845,3637639923665995964
+567e2f2b-7e6d-dcaa-667a-5d9aee68c03b,2756401434,7378136849235318751
+2ff29d31-8e70-f853-3eb2-b30acceb862c,4146692303,17864866400792293669
+0bbb8e75-3008-0b2e-3cee-e12f10c8a59c,3110260828,9202758647248260293
+924239dc-964f-17f5-a667-8309af091e1b,69885518,1911888933508820400
+bca782f9-c982-1919-2189-fb006bd178a0,3591934628,17288747934544278553
+702f1201-88b1-45d0-66d2-21c5bad7d05e,1408841862,272859240970352172
+a0a52818-0cfd-b745-1c95-eaddd21e16f0,671772997,1013296915346363725
+e39018e6-0d70-9925-6de0-c1a419c242a9,558545176,14139600301788076627
+f6304fe4-f7c6-91fa-d53f-8d85b81c16b4,2382722276,7936933770567348385
+fdd54511-abc1-cf49-3fcd-465b38ad0345,1704616046,16941592991309585647
+d745e0bb-3c76-4f09-6ed0-31df529d0503,55926815,11058204885236559368
+7e968476-0d01-fd9e-fad7-c872c1910a28,1412737037,17546601442984604627
+033fa385-2229-8cf1-8ee7-bd3dec019952,3282509778,5928778465132315802
+f4f0c239-69fe-6c04-0206-df137bff1062,1579628224,10114887826444849929
+2be8fb20-e7d7-23e0-e7a0-365d3d61e5f4,3598777240,12997869843670043004
+72d325b3-f7c3-67e9-661c-a1db83126696,2102144778,8471044681882351776
+9c2962cd-9a6e-9094-3391-d771c84a1823,2628289911,9976339362286976823
+f4425cfd-2990-5e89-419b-883c16de56e1,693205662,7937157405919466082
+c878915b-f257-c948-0dba-7aaf202c6079,203626102,13179996392646903480
+a81bb1be-ff25-b025-b701-e82bb65a5680,2454031969,6762842356531823349
+56e7cf2c-230e-b9d3-ad18-910a67e6b0e8,308876654,11933792222722194710
+4d8e2454-6989-84f4-1e3f-77fc56b8899e,3717298838,4837784468223448074
+821455c5-c1b1-9672-1895-2806bc2d5717,2743140130,7491977456287530802
+89d6defc-1d4a-a409-3589-21bbdfeed77c,619151503,4224751369505405012
+72c12c78-463c-5934-4cea-d54f33fcc5cb,278565817,6028710792467772359
+1b29b7af-28d0-9058-790b-6eeb3a5c69af,4120214077,12152446539741728953
+3686c3d9-8f75-4de8-54dc-cefaa342b039,1064798899,10126414968974099502
+79b07d0f-2e5c-1b4b-8036-189791942e3c,3987157878,16597040591883015792
+b02fe3d0-20c7-4417-8261-5a3c6f539b24,262770496,12249818476382618164
+e22e8fc8-4e25-6c9d-d685-7ec617fa5201,3372675044,6346963385173121980
+fc9b9589-31a6-cd3d-55ac-ec320178dec7,352947003,1008128707684496345
+d0f2f825-1407-c253-ecee-db9ac1417a00,82903987,16512980493142488194
+db78aaf2-f69b-b38e-3272-08d1a3c57384,1635988648,5558917134064471760
+6ae0a228-6e10-b2e1-5f50-91d1384def86,3728835990,11404052485285601797
+b3d7ff6b-62fc-ef21-3197-bbe2ef9b4cc1,1157283956,11637899541543282937
+8c0201d7-075b-3a34-b930-a504fdd2a54f,1175819569,5961568753997634139
+a3c248c2-f2a0-9166-f6f5-4b2aeef4310e,3437146820,10108556286977468356
+b1ce3d7c-d73d-eff6-ff79-a9bc9dd71794,1863628778,14700250033740786614
+5827ff43-c96b-3a15-e4af-8f00ab0aa4cb,2650873003,2198235453859344914
+60a3b290-74bf-62d0-16b6-d806c639235a,2132145469,8103734479068470135
+950967ec-3ef0-9046-a05c-74c9b54a6fad,3544541583,4019173419611800964
+8ed41922-6fab-034a-3964-b818d7f599da,4153368727,14510692052670821521
+d05c07d8-92db-9281-0369-ee2ec212dbac,2899930873,11365321280417937577
+5d5af272-e38d-4fc1-2f43-0b37e946bd1d,1374331995,10835891655041657810
+c6bc256a-3941-6dad-0536-74e0f675111c,3202690438,16983939780799218890
+0f2dd73d-7e2f-a647-c073-5a9d2c3960c9,985057381,9487435508317029146
+bd3560b8-1011-681d-b3e6-76fddb51127f,1548431977,7816929319201696160
+80795b64-df39-949c-34da-136092359ae9,3202529406,12620168846285752190
+c510cfac-70b6-7224-700f-cf851552faa8,2223204616,11585416615477217383
+6f2c5db9-f58f-548c-2094-ddafa1efbcf7,3343853103,10188259036014314753
+f9824fce-9cce-1aca-345c-92b701246ba4,1052039827,5460410644557246684
+2eb3faab-f909-37ae-e86d-3ccd7a50c8d8,3778961373,8618697862661276785
+4bc1df30-75e0-103b-1dfa-b6c5e886a93e,520239663,15438598262494354827
+77af172c-a8f8-6aa8-c35b-cb9d2eaa3dbd,1253445876,17075484478818893559
+4b0b9905-905d-8d7a-7e37-1bfdcc6edf10,3453694910,14682103377611264485
+adfa7b25-689e-24d0-6898-70b2ce8d7348,919458727,18177537387127215690
+d9d3f631-6285-2822-0ece-52a87ae8609f,3977565408,14674439317859635867
+f85f1e90-9f01-d777-7e0f-a18f0e042998,997308055,18018757973928246360
+bdb842bd-0173-09c3-1d77-263b451e20d0,3004919408,3240283638081618228
+96c35629-f0e8-38a8-1f57-1a1d6ca5f6f1,1588960444,12010713770376028898
+88bc17ed-2af0-d833-ecec-e90cdc9a4edb,2815700820,7763030934200339482
+d3efd08b-cd2c-279d-19dc-06dc93770456,72429020,3030541755344820974
+9c438844-33a8-0099-bfec-4715b3404379,1595459316,13379174965203787003
+a8a4b2e3-cfdb-747c-f845-e0e82e3b6d6d,396362617,8276473894416386867
+25398ba3-5225-2fb2-a52b-0c472931b237,1220484808,58449936576247170
+6ea7e304-3855-c823-d914-5ec693103993,3795823379,16028733197228126530
+3cbbb995-d7d4-67f9-5532-a352fdee5bb8,1631416758,14129496407467273100
+c5c5d06c-ae5b-3653-3f15-692cfc1fa915,3443675418,14487850933532363683
+51fe2268-c047-7541-d3d0-792b48654766,2070204238,14953346266489393383
+b6cfc522-c9f5-47d6-3084-0c1158d425c4,49591559,129584137603197375
+b9b11411-f18a-549a-20e0-08439e542982,859915669,6545444970554297309
+a09d5f7f-5c9a-938f-2b73-3a2882d29d1d,1856100920,10219380077846839033
+67beccb0-2058-820e-5a53-659e5dee2c5d,1379027826,18136564908073964123
+9457041b-9dbb-6f6a-e8e6-fa1d0d91793c,1833697652,5262015973125080173
+230252d0-f7ec-3565-fcaf-fd6681276db1,3154460648,8837714895759216772
+be2c886e-99a4-96b7-972f-e1717505411e,2264915789,10085690817402466721
+6280162c-17c0-0200-3333-606ad24bc205,3974734067,13029980682266336479
+5fd994e8-d09c-15d2-36a5-5278718cae6d,901818729,17813865152276552946
+4e0f991a-3d7b-7685-4d24-e7bd44d19826,2946106513,4605333285274717347
+f6a744a2-65ff-4384-eb4b-be494aa8c65b,3942081440,10577144643740581086
+609c1bb9-3dc0-5841-ce71-4dad32c28f26,396437993,641489992202077109
+f5cc2719-7def-bc20-ad3b-f9c92ed4da21,3674877822,13879694424838734230
+03bab984-dc9e-40ba-a009-6263a7f7ac2f,1037180019,9875158499756464143
+a8e3ab9b-559e-b5ce-0510-e5245a6035d0,4148257592,12612286988653718177
+5b07a56a-9d17-cd8d-117d-258a3963b3f8,3977431800,6300412720134478406
+bc409902-5019-a5d5-155d-39afa82fbff8,658890421,1329471206882671160
+e4aca035-a2ee-caa8-700e-a55cabea792a,4024491192,12917066071802295776
+a2ac409d-25e1-b672-9803-c335592a7ef9,531996620,17154278023205998971
+0d38a227-ed62-81cd-1e0a-bc92aa51a851,443097712,456248585542863977
+25d29cb5-1e13-4766-5075-b43e40d150c6,968724058,7709656772124950671
+3ea86b33-22bf-2148-13f6-1ca1461cbd8e,1312872488,2397810313769223239
+8ab2d015-5403-3c4a-4d00-daa0b344ac53,2344358103,9752826334287102999
+36621acb-d855-b936-8c68-9ae9d9c15cf0,1009835055,14726743673828123927
+f48a5028-9c16-06b2-e7db-1b9909f7660c,3114227308,6062638201466503745
+bace12a9-bc0c-7374-2943-4f3edaa378c6,1614599212,2940830806707787706
+fe51d35a-5821-b315-c2e3-78d61cbdbf84,3211370873,4241250294462837724
+c92cf1c2-c316-ea88-81c4-104b3e4c1a58,2757610320,12140860536296563691
+9aac2dec-7474-54e1-10b2-f1f84ebd73d9,4276578346,6924240747135301424
+c162a008-95c8-1599-b79f-b1c98e8081ec,1407976044,3261449902677498011
+d179dd62-4fd0-a5d4-e22e-ab18f7a2f12f,3087604581,16477055528603468180
+af198a7a-7b24-6421-4855-3eb7d009eb82,905073731,5248575540093511905
+82e0730a-b121-facf-46fe-70b0b07514b3,1767173847,2567749987507815301
+c25d4898-0807-1ada-37b3-7e62309c3a65,2924246901,13418663308234083739
+7266ae17-dc63-ec89-96d0-f6acb89f3590,1844488681,18185370250842193033
+7e77e8fd-5134-78bc-b6ab-76bf0ded227a,4045637428,16564596679191053246
+3fef74b9-c816-4310-115a-2633c1fb064a,3427006545,6996094629281230449
+d20c0241-6358-4ec8-f81c-a52dcab1dbf5,3140415447,10575049126159832160
+f5c9f83e-9c63-1072-5437-4153d1947bcc,3053580104,11040534256935002456
+e0d75132-1542-4286-5b5d-057a525dba57,312676031,1327951675214611143
+d9c9b731-9c29-cb50-ae6f-2d910646c20d,2534787057,244614211994509630
+72efd787-cf00-18d1-a0d5-07ec266a3094,1584355621,7549682032738040962
+9577c9ad-395b-47bf-5a9d-803bbef555c6,720186369,5319640552086636589
+415f1489-0e7d-bb62-135f-3cc4a2aa515f,2491236538,10262161725918985903
+07168218-c6a8-4b2c-6481-4864bc7f9748,2386406242,15763789215542944296
+68508098-ec4c-aa1f-143f-b9506c2a4233,2299366344,8493113198422395415
+898a6518-d273-0d73-4d23-42c20175fb2a,2443589858,11580062173341026150
+3498182e-2722-0836-b24b-ca08b40953c5,1363306184,9490642647125303331
+04a3a105-fe76-028a-4cb2-7ea4e5e4430b,3944377180,18073499175836578268
+b348f739-cfd6-0781-19c0-140b8537becf,4216445821,5726171457375101897
+0f6280b4-7e18-fe1b-4154-054af5524f39,4102817994,17693621716517337342
+fedbffac-23db-1688-647a-64e43434b10a,3805763920,56280268153947380
+22c59d10-c49c-09e4-b835-0ac28d6f44d2,43581291,17766470654632289805
+215bd1e3-62af-7e7f-c460-65eb3c32b0f4,2661660031,3940641474204532317
+b1cc4549-e53f-f949-e7bf-5ebd232a7bee,804684006,17205869192302327241
+e69183eb-2e8e-959e-520e-a1eb308d25f0,1785636487,18096472349447648814
+4f0dc7cb-134a-c41b-379d-e62241cfbaa9,4067642977,10950486008251489224
+2604eeaa-fc4d-9c90-fb4f-3505b9df2870,2115154984,7203301900098377670
+35e3d815-cac5-7d4d-76e7-06fadd178942,1060333874,1267506695584489802
+818d2618-b6bb-91e4-fa74-0d29d910cd4a,2746776799,9592599576940089074
+935ed9eb-6b87-4871-bfdb-1e86aad98154,4138703096,14546415827184004995
+65897288-9f99-b014-70f8-678595c99169,3097400302,13777501020600473107
+ebda656c-f208-db0c-5e6c-ec6001f3acbf,3366209663,2449418489192728350
+631ea2c9-305e-cf6e-9999-4e2d5359c034,9424170,5141652700831793208
+2f86aea4-0612-aecb-f7ff-aa51b16e08fb,113495617,856044768353972413
+c27107a9-9386-6fda-b1f5-bf2928bc75d1,2650212513,18244621614741027695
+41871250-cb65-2f7a-c3a9-f6327bbc078d,597344346,14851819266753148328
+4e72220d-42b8-d774-7dde-8c6bd6f7371e,2078930842,1847348977536991112
+2d1f6c57-c038-a6f5-ae27-87c1c7908148,514538338,7008107023467812509
+c3b69953-199e-dbd7-8893-551231250177,1814146640,13755736291251052476
+6de7d8ac-efa0-9ce1-77cc-da9531250c5a,625906358,14774780572405427016
+bd3848be-5e0d-3ab2-cc66-85f9d82ac314,2624101436,13518900384426527541
+d96d71d6-22c1-72b8-99ff-a8b1cf637844,1685833354,15134865915838139493
+979b92e9-6db6-8cc5-2566-c6c0dedb8cd1,3651889193,13414468453263400180
+0cb658de-eba4-f610-c4de-881437380fac,2554798651,10223498861937781863
+cedea07b-d1b0-01d4-c58d-5663f4361ec2,3911530134,4028253139467173262
+46660e45-c97b-688c-39d2-d58a1bd428c1,715391329,8476252776222256211
+c6816347-ae50-5485-b282-f47ceda8843b,3403427161,12111167344065989275
+0e490ca9-d93a-f3bf-4473-58409cbbc8af,2781485350,9540712366833493118
+d9975e31-a5c1-f90e-405b-7d0555897d93,3860837494,16309229040906296389
+296d17e6-a4bf-2879-d405-038588180975,525899181,17406699990340288737
+ad085046-1137-392a-55b6-aa18196fff34,2105397696,770279031481189293
+b3da8542-bd37-a312-b45b-f4339ae9b9c1,1091428211,2380292074313684506
+f379abc6-f529-ab31-e51b-aa316fc842b1,302214270,17412666380377095083
+764959b8-c373-5a23-7619-48914066ad00,752691234,2497003729735080497
+d7102a23-134e-3308-07e4-a1b554a28288,3228378086,5372864875766143522
+1a68bddc-8a50-4bac-fc5b-2e49f83c7593,410761845,8510265632763790763
+689cf128-ebd3-fe05-327a-a56537af22bd,2929351526,7705315533473004766
+1e6acc81-ebdf-1fa9-4627-1abd7aad322d,4150280154,498670629583165614
+cec7c3e4-c6a9-c0a9-a7eb-3d8fa6f8a532,444348442,2923237358210804741
+700911cb-c6e7-50fa-e2dd-df3e9762a459,663842239,5708397214028472349
+13a085e4-0cd8-0e2a-4235-717f6c0985c3,718837142,16923051940960887679
+c2cd3466-f0d7-a78d-2a60-b239bd472690,3998906045,9752662531210175023
+c2bb0d66-5e6d-c9cd-99d8-0f379e696d87,3835628393,14429141102092547266
+5060d485-b979-a23a-adf9-6a0ab16ba2dd,3170336188,9156475020884464446
+edd2c6a5-5b3d-4aca-e2ed-bb374bc567aa,3866359843,916237596680426179
+5a978064-6459-5fa7-cccd-95db36e647c1,3979498538,8588928007703764048
+6370e5d0-0766-f163-694e-64877a263225,380188920,12501915283039797046
+177feee6-587b-931b-9977-fdf422492a8a,753844948,16216507223573535165
+d1093ff6-b5c8-724d-1a21-e24dedd54278,2550009557,17430192227538362044
+4df55bbd-7a97-af29-27a9-3cdb559dcb31,552472498,15150055247722049081
+76c20a82-8378-4739-5179-e542cddc4e74,3183146514,10879106861907876852
+4b14db6c-e028-4c34-32c1-e66036b150f8,751686260,7478961292870093819
+3cb39392-4751-b15a-71fa-3a097c7cca6c,3767545286,2434002679838261375
+c0c70124-3484-54e5-76f1-18eef955cfb1,2860852280,17028306067335111249
+d4731f73-5c5f-fd9f-04b0-26e8d442c69b,3160208423,18045626217835505543
+0f6c9154-3391-4aa0-68f4-7e1687dc241f,294431323,13069109866287619504
+bcf0096a-1181-1f7b-3907-53f1e9141fa0,3860422448,2668447176404968219
+123bf08e-f5ae-f588-e3f3-b46f39635396,1629727248,16211289185009742791
+34b85792-aaac-3f69-e723-ab1a463b6ba2,4288496662,9960430799841493931
+c3e3f988-420e-5fa3-4cce-731cd6fe52e3,1943738391,16012709073365197700
+da151f48-924d-3e20-0d48-b0c245c2ae94,1679090642,9108797195635322503
+9f5d9e7c-d8e4-643e-3b70-8b1b28ce30ff,1865639793,10157340793095980076
+2966f2d4-fccd-3f64-20f5-d3d01b4f7eaa,3525749355,13581223966265839061
+6ea48cb3-56ce-2316-dacd-fc0241fba461,2483332229,2890818411353696356
+c1a65e4c-1a32-23a6-82f2-25e76bb6f2f7,1982780912,286982403770467824
+d7db3cd1-6f39-fe98-99b7-22e7cb8958ad,2330494683,14334961438820600585
+3f1739e3-2d07-da7f-3ac4-67e3da90b699,983588840,18337297612777646776
+2bba1ad3-7cf4-5501-5995-d1bffb5882a6,1852669440,1816766874146128947
+9deed875-77bc-c87f-2425-bf8473c6e0b6,1702539349,5023749516201961613
+633186d5-9dce-ebb1-932c-99074a851199,2685729139,12354626087321179599
+1c589ca4-05c9-28f7-aec9-285109d49b47,3369403872,783460953246613929
+2d9b622f-a15e-7a17-bbf2-cdd2b1df3853,1029929228,9857562340789444827
+1bbf7375-ea6c-988e-fd09-692773f30bdc,3663087431,8467118188894631290
+cc880cd3-e28c-075d-799b-a67feb4e6e8c,4060040993,3069393664430265294
+fe189cfd-bdff-a825-7df4-0ff0faaa8fe5,970589526,2998433321514736522
+e7b35a50-54fa-421b-be32-1892839ba2e7,2315097605,8423181702503213505
+0354f95b-6014-17a6-7256-ee28670e042b,2409540781,1790193576180816688
+6f058637-2b06-7af2-36e9-10ec03708d3f,709501530,2360794812135291585
+b4362827-3a72-ee58-93bd-d1a2cf8e31f3,413106847,14400324584123898974
+964726f6-61d7-6e45-2bbe-75831aac745f,1028921233,10876639377680263581
+2bbe55b5-280d-35f3-658f-f9604a80a1a2,2969611756,6177801674648349113
+ea6ec9ca-10b0-1842-5157-ed5301cb7d3c,3530294281,16853664176959205010
+08c1df33-6ce1-fbf4-c73e-bbb85480d55a,3917361196,15324545125765320693
+eb0f8230-7ec2-98ed-3122-39b6fe38c5d7,3070256832,59750204890714573
+f23bcbed-0ace-afff-828d-3299f136baab,2803979485,6910859174197241595
+dfc1ad3b-08bd-41c0-aadb-f19e5b2edf87,1811141970,5404542306327198935
+adb8d248-6aad-aac6-3475-63ef9db02914,2301571932,149443134981989333
+1dfd9f00-12ea-8df9-8e2f-82b828664c95,350982565,78973425288234367
+3a275d9f-9643-e1f0-ed8b-f944a172d550,1461216159,15403242242504018807
+efdd5765-0b36-4132-7f54-75ccb6f79206,2819582290,17504542903903688515
+91d03159-af43-107a-9c8b-7584d7a6d1d0,4162316796,3465811599190420707
+4c2ef917-efa4-5133-0b01-c1f8530f5e67,3876252950,11175785756454077802
+5257f474-d3aa-3522-44bc-3c063539911e,778778991,157517218683946993
+b42f4b55-709d-8958-2dc0-063a4b897b14,3866741992,1609198153023282845
+b109718f-7dbc-4c14-df71-d437e4082831,3368572343,13336921699770331443
+68b5fd43-ee46-500c-3044-35afa8c9dcbc,225326039,4325400513170210594
+8e1926c5-b501-81ae-e23d-23bcff9ff4e0,3162927601,13159139198617569519
+8e066971-7db3-f7cb-1982-cb17836aab4d,999596379,3782094386348242518
+a3a8203b-f9ab-3b1a-27f4-f6f2f9dbe706,3095711853,4098115957230397547
+9e15e513-3fbc-251e-1289-84c900651243,1194733749,764135133167900366
+d8035802-a710-7bef-5290-fe5bd4243909,3112479808,6477770379325720560
+99620fab-de8e-d8b1-609a-e62053538729,1571772804,15772672760540615307
+c93b1f0c-3f58-bbb7-781a-356d0dd1d8d6,3449618089,2260738887057384961
+8e031ee1-2b3b-08bc-78ad-89da5d66e1d6,2277303238,3999278027395727288
+22c7afec-9391-501a-cd05-6344345fc5a8,3908820462,10381487237131557437
+0620d96a-9154-cfe1-f829-00b8145c8e6b,2972670715,16729456507272712608
+43e27032-aed6-a7fa-0bd4-49ed10ce8620,3511788365,14515856444480930439
+525b9602-5560-ec4b-9251-5d7cff440e96,3032780716,6188326983670167377
+5f6d33a5-f4c7-8532-91ea-e3235878225c,1884989954,2552479814775031833
+228e5f6b-ad73-0529-798c-96c9124022c3,2075134962,10690777202430684802
+c5cbf8ae-2942-bb4e-258b-f32c3b94017c,972018967,8649545274874544559
+d22846f2-ab9a-b3d9-a0b1-1eb60b1be2d2,2097664766,17188957721876378887
+16f7998b-3fdb-8d65-11f1-3ceff74beae7,2693100214,1095283606120904111
+05814deb-5989-18a4-1475-66c4d61769dd,2059147772,8217361631800177779
+e4b68bd0-05de-77b2-af6d-ea2fd7a197dd,1148174319,16881504688522794534
+f45ae974-926e-901b-9de4-ec54688d109a,3185840072,14683289003554972011
+8fd85bb9-87af-93b7-353d-e10315f8af9e,3918917643,13355606161167414
+2070fb94-471f-5847-77cc-ab35adfc3672,2538524593,14101273975277153585
+2f183615-d214-9e83-62c6-09ac883d7c9b,485345331,2925372255917852383
+904d07f8-2382-33a5-1a48-dfafe86a4449,1999816819,10401458523555483849
+4a1c72ae-cc7a-2576-6369-21387169c320,183419,16886817898359271629
+3540e0f8-e125-3c62-ba5d-d993b0af9b90,1722055118,14235910685758423644
+4ff6fbdb-c77c-157e-915e-4ea874fbf82a,826559364,8670472946183860209
+be53b1cb-f196-c66f-8820-05e120b4f106,1343846902,4532039166351024274
+15d1bfd5-0fd6-103a-6d38-3673df7bb9f9,280027207,11029960117846037590
+8688be84-8d65-af6f-3340-f8154acf82da,2937237969,6837844629712630128
+661084fb-ba41-0293-d630-1778e9078730,3741190862,15189514403559515752
+53918ef4-ec94-cac9-fcd0-af97525dfb8c,212534128,2053410365125631961
+a9869954-2818-ad18-3af2-0c3796f16bf1,2751504060,16208701859992837170
+d14101d6-c258-bbe3-2308-8909531b3a59,242831123,4912998892601813561
+22ffbc27-1930-42b4-76bb-6e1ec3c80dda,2901094370,15573526256799836891
+2633bb03-fda8-d70c-6312-2c8887e0f8bc,2875234323,17410754907629027912
+a483c7d0-3c3e-6a22-6240-a26107594b15,1792014743,12436322515662059024
+2f8523b6-75f0-cdb0-8521-d029fbf32942,3599552963,17134409778163885654
+b83fd1a3-601b-c8ea-0efd-9b7504c33645,1693455057,12468941662887192533
+d92e6daa-da88-88f1-9bbd-7aad57f294d1,3943011804,4233270476903986385
+a0d41ce5-e3e1-c161-82ad-9a73e6367d32,2858200246,15582000870326581883
+57e8e539-ad4c-c591-4952-90911ea47cca,2073351243,2209756681673485415
+f5916da1-757d-b9f4-3afc-e93b7067f498,1101205323,532291608646277053
+42271490-254e-6c7f-3fe5-fb3806ce37d1,1844469113,2247260703118787234
+4cc7be82-f55a-ed8f-fbec-55b15268a9be,1801251482,9548409445517171465
+df6807bf-05ef-be71-f1df-a7e325d8246a,2991616610,2704502089374493052
+2b50a287-3f83-c1fb-4841-1d7b0d04c9ed,1509802868,9060522755377830234
+c5de92d4-492b-76f3-8ac6-0f7b11283844,530957325,10381956720277191641
+20564b5c-ae63-f2fb-22eb-854b17d6e428,2071144983,9717752753440266425
+497b0f01-fb44-20f8-432a-c89621ea551c,891115968,9285860112488221825
+22c6ad4e-1eb4-804f-f55d-40aab4d4284b,4120717561,14049180466574119563
+4b5212cf-8239-491e-b803-97687550fafd,1357718378,8411705090705782312
+af6042d8-d3ad-38f4-85a3-414a73567bf7,72416382,10621637214194436859
+baeaa97e-9c22-1c85-9900-9227a0f8a7c5,2170950775,10818611039014979604
+671abd11-7e58-bf0d-f118-6eed86648400,2254407886,16590614796678536504
+31702037-ae66-aa6e-c774-91231f8de976,4037624223,5747425974932918260
+51ce3ead-1d20-2e88-42b7-899220fed727,1457916829,12015929909145029125
+a773358a-ec5c-f8f4-fa22-b56bd0e99da0,4035454582,15362124546964235666
+bb907b01-8669-0205-4c13-5bbcda4fb26d,3828129324,14933657474949676167
+37a44d02-f80a-3083-542a-4207d7a49eb9,3333393570,17143040438899290175
+240ff1aa-f8a2-ab10-e867-4958a6930399,2374055359,6646795731984721770
+ba9c0814-fca2-7101-a7c6-bc17c393fdf4,2350535145,17724203878486428174
+dd446a3c-5fdb-c246-6cb7-5e8ca4d51946,2945708563,3823155827646518665
+840f016d-6c68-a33b-4166-0fbdf51b8720,1892727981,8083980783864127685
+1d89a084-f56c-5d1e-5fb1-3fe5ac6e030a,2704243287,15610010564691240662
+8be82694-99fc-bed0-564b-71611ba9ce80,2200814985,17137958367668770706
+749ede60-47ba-fcb0-da18-b6f9361d8bd8,2965015385,9634427280356168690
+8e661146-c244-0781-a85f-1f70ff2629bb,4165430053,9428370956903538292
+595bd05f-aca1-5a42-9b6f-1d954514779b,735646250,17057310254050487009
+6e497561-d73b-fcf6-b24c-33d78671cbcf,2858121504,14768950855382065419
+3c8511ef-a3ea-b575-f587-4e750e6afda7,2871353001,9801061557941610077
+cefa1242-a761-8eed-79da-a55def9c60f3,2093933053,10535206573460953537
+f4edccaa-0912-8bc9-db43-f1bc760ee3e3,2014890531,2919565325634660937
+bd856194-3578-5e6b-cd9e-3e550ed6d8cd,3869032863,2573516972029328180
+3e5b8ba3-442d-323d-de97-04294905ba3e,3506101259,14273619265888565680
+f43d07c3-b8ec-197a-7489-899b826f6302,1557961639,6507190049248391348
+a8645e4d-c63f-5f09-e56b-8667679a4d2e,4166104155,6416249148467723139
+bce89848-7dc5-4233-6d1c-98c27340f13f,2536629206,3032576983753052619
+e02a7a01-41c0-1e08-034f-6523704f094b,1382950123,4090532406788881336
+83b1985e-82f5-0601-5b23-01a218c05b2d,1847088907,8763003727701081899
+11199e2e-b353-3f79-3d22-211069675632,3050943132,7830383181834109301
+d96a7008-422a-91ff-8e63-82c048b6b8d5,830790064,15064635678087912572
+f02d4128-b28a-d134-5a31-45e00d89c345,2722918712,8474580723476838438
+ce123ee1-786b-ba24-f3bb-127f08fd7535,1285134362,5406307495642150220
+2ab4ce62-ff91-7c18-7c18-163f7fd5cace,1508749323,18207904968672519873
+3650b066-2b9c-0fee-5ebe-7a7e70464e73,865947725,3543791579743955943
+46250718-8546-046a-97a8-843db5760a2c,1047747355,1771510640384471953
+1aaf0409-d255-c305-b3a9-aa9c2fc4accd,620580059,14156624265624667219
+5530f65b-1898-35c6-a7a7-a05b0df2931f,4181636027,14815006568636975785
+47f94c62-5136-a107-e0dd-04cc01a78831,453526111,1353845531553473869
+aa872ebb-ba52-3d3a-d8dc-4865edf88e17,2308121115,6844927145549924873
+d46d887d-73f9-711f-35ac-17bf6130e55a,506421398,11470912915379631985
+9c2a87f4-e3b1-7227-d0b3-adaf570c39b0,2393604989,17219502768683191313
+6ba15179-01e8-8433-3a31-8302bb61b2cc,1290289137,16205148760865004784
+d8a362d1-6079-5d49-d49f-d7bc76511786,2524903317,6665058464718154119
+30c3becc-537f-531d-98fe-93f8cb8a4776,615364615,7027244517578562464
+749d857a-e5f7-0abc-70f3-21eb478a9e6b,2528437408,12990716465361074823
+ecf5a21e-0aff-0ff3-924b-2903efda1fc0,1987368155,7594665564135226843
+4fc5b23e-20a2-d552-0428-cb6a68f831b7,1193167126,15041855338947671874
+78654e2e-b486-ae12-1e81-19e5f221b600,3282163738,13267513509299074166
+bada0ff9-1e6b-406c-0443-65ca6097cc6b,1214960183,7964520638988336481
+4ba47194-1032-4da3-c60c-13d886b5592b,2848012001,13333807204622043988
+de1a3214-aabb-da07-ee6e-ac96932ddddc,3715907266,8713967051053846453
+2a70c1da-054b-bb00-49b1-1c7ace822680,1255948486,8488025004200609733
+f754fe45-b720-ec48-3013-4520548358ed,251484014,10435137081535154772
+eea63dfb-b5c7-3fea-8c87-a8572fa593df,2895095348,8847245261834410577
+c3af55de-199a-b9f1-f510-54c6ac35dbc1,2680763603,15572484933185838298
+681e943a-c3b1-7689-d61b-7417c039db12,3223286397,16780574764936919749
+b484a294-46c1-a5e6-c69b-0181404239ae,3553952572,10367017957243170725
+829c3cc0-e07a-6a09-4e03-138826e143f7,3119459276,17554731668952642693
+de137098-6ffa-caad-9957-e338972a0ff2,3054918789,14336889221258040838
+9026046d-fd13-fcfc-d242-723712df1d54,4239389326,10837368463031676402
+c7845f39-c1c6-b6ff-8bf6-be995acd4af8,681060516,2167860435498946548
+3fc11b03-7ede-5cbd-fc4d-7b86bb66ba92,3961860141,7892766630680949871
+03260a0d-ac48-0679-7a74-c11b401147cc,1063539416,2350238949433486454
+50a2f491-8cb4-f505-a46f-accb0617a684,3215342080,16068213626278518027
+d4c2ea70-c012-57d6-62e7-a320a6c3de1e,3176846123,6821460228403219767
+e7a6ad5b-6c3a-2aeb-4aef-6ca92501f3ca,3464958338,14295933856526591700
+26f27a62-09c8-2217-3137-7d752b490011,3907935992,11830450781503883895
+d9c4c908-de43-0d3b-ad0b-9f6dafbb508a,2756406774,963629257336843419
+29562b78-99e0-f68d-c63a-3cbf08836ef4,1211584032,13163902040705312770
+67d28996-f8b5-7837-0e51-16f35542289d,3571996669,7023349200268663147
+3a27489c-f51e-6c5c-0c72-4e1f46b625f7,3438552606,15007360291183321793
+cb6969c3-8546-c33c-5271-24c809dbf921,2818795910,18189310214588114955
+1ebb9112-ca70-8f84-374e-e670eed77be5,1837365261,4147525583747393659
+504e2000-cfae-445e-b997-1b0d28a475f9,3013654853,17651572281063891473
+39ef40f7-ecd8-e8d4-8854-2a2c66d8d617,1212436555,10712751771792333308
+bb32eaef-fe02-6713-4f48-d535eeb38151,3427323155,9991351973908166660
+bde4ddfd-f0bd-10cb-6f16-337088a9cb27,2933283405,7619057341988426872
+7d83f400-f212-3ec8-8777-2340b49fac3c,2548176995,9536963105685624116
+b6f76361-fbd3-e829-02a4-8034a73ebbf0,2269177464,6991325043386654891
+812a793a-760b-4db5-322a-1bb18c5bfe42,710540559,11875856409918649483
+811deaed-0b4e-a331-f33d-cc37eaacfb14,1508715643,342418624349297554
+7946e932-b3ac-53c5-93b6-f43c53569720,284221480,4873252523792962911
+e21cddec-d723-d7a5-cedc-7b34367c911d,2023282031,4429823827308091685
+8bee6b04-048d-3e70-df8e-bae91a36fef6,132298142,16318692474899738288
+8484cee9-4b96-c956-8d42-fc3b36e2abae,3241085431,15245129414693375872
+61b6f84d-f475-cbc0-0992-74030a244b4c,1821058114,7102827866961581877
+c613ba3a-5cec-29d5-1ebf-3a8bc5a9e5ef,4096009103,59102978662225570
+da005c90-e8a7-dd39-e022-0d852463bc4b,2952141082,521014798249023622
+2ca28c23-3fd0-0040-13fe-a07183bd470c,3703432329,5008696077606979424
+e7e52b90-f026-72b9-854b-a1aed9bb460e,4256637269,15780968713542855312
+48377864-e82e-91aa-bd4e-44d8b275b304,448547637,8734642892219470660
+073202a2-3bca-77a5-4c19-e53f1d8076f9,4140038250,2500354196792822070
+7a483f2e-ab17-7392-33b7-0752cceb2c20,303143599,150994714290814225
+7071b134-2834-f1ab-b1ce-cdbdb3ae3abe,3603186363,4013400506049010587
+9e693bda-30fb-78f0-c401-d0cbde3379e6,469678291,6555617461038224728
+ae4d0b3c-e77c-707d-9797-df44ff664ef8,4214049336,6265750771179681049
+d552e0be-bcd5-27ba-a85e-2f655f54f1c1,2405540782,1101083955400474333
+5fd65b98-d029-4eab-66c6-66f05cbcb4c2,538143442,13771149805847991146
+2ebbce8b-df88-9ce9-c660-a419acb542b5,2411854885,4326285710338344227
+d9c3c201-8077-405a-2330-f6ffafa42286,882996532,13381289077822977986
+d9aee50d-c21c-0296-7472-19dc2284c5b7,1116980925,10462530364811179552
+5c296a26-873c-0cfa-8664-a83e40d1ebb5,4202791606,6973194281137439732
+e7e0d781-aef9-25c6-66b9-eea5368c1ec3,1433833111,16140011209867965331
+770fa9d0-48b7-3a7d-55c1-96df07508642,4005705580,15056249764792856512
+51ad161b-6dd6-a0ab-39da-2b7bdd51d35b,1940140408,11188648240240446722
+dac098a0-e551-6e36-62f3-02207be2ee97,1027658668,681932035333917138
+df677302-fc7d-81ec-6b57-9067ebfdd2d5,1850734337,4451735092919267391
+139e1568-4722-cf97-6233-f58c1ae17ce2,3149098018,14310528416948632531
+2986cb24-6abb-b25c-278e-7ecb39cd38c5,3472246910,5383572405797029338
+1446cc65-2acc-8d66-1cd4-6856ce9161a8,2098007656,17642701918826287148
+4b0ef4d0-437b-9441-07a9-5f8b368e8d51,3997687749,5770744890816478305
+bc5fc0b0-9bf1-fde3-fa51-5adcf7b73d3c,403365319,8389207500384349969
+7f23b114-f42c-6de6-7ac2-eb959598bf9d,3330527789,6796745758567476015
+e90134ba-23c0-8ff0-8d62-1a1bec080b02,231942739,7622817714770151180
+57a9f549-2297-f3f5-8875-ff7d2977181e,1373774448,16512591260304775850
+49d6edae-92e6-1da7-c8c3-b1281919ee77,561299270,629828514210012856
+728ff7cb-de56-1ea2-851d-aa4158a560a5,2760734177,6658755959262584378
+e9c91cc0-6e70-af11-a57c-d44e9c3d211d,1375332570,2005621483361810907
+4808f827-46f0-7ba5-1d32-0262c0944a8b,1420861904,16928185509801005052
+e0985a04-0afd-d4ac-1ddc-4a93b00663ec,2172611492,15797717347169061356
+51118256-9515-f30a-83a8-314d160dda92,3031791293,7170988559468825821
+9c1115c4-6b1b-23f8-3ec8-69675b75347b,2383576138,6780454690483929070
+0be7f58f-8841-cefe-9fa3-6f1e80cd383d,1387921488,3458690186350615632
+8b43967f-54d6-e288-a414-d572a8528206,2678354090,6789033229341315387
+a1b2725e-6d35-40b1-6482-c4d325b13499,1654682035,8418416382305631923
+a8e56112-83f9-bce0-9dbf-fec04c24d426,1258930146,10109927166702936469
+f05843a1-92a5-38b0-76b3-c2245b381f07,2786821696,11823179128876898314
+9da286f0-a09c-5a09-65a0-4db40be8ef78,1970384573,748146671195624980
+e8446cad-e84f-eaec-ccdd-e001ec524218,373358022,16742059323554911176
+976204d1-18a5-becc-2a8f-12e76a9316d7,1418369211,5420387587229879761
+09634187-d5cb-f593-7782-6cfff22b195a,2712102333,15330509805731748992
+b099c9ac-7df2-d227-ba86-e2f0d5e83555,3016059323,9986626303903727319
+c99e8524-6400-1011-46ee-8620bc59141a,2257042119,11828857102328967968
+86eb6321-9e61-852f-711a-22e48a18650c,1888169399,15758018544219700009
+ead98708-d700-05b8-7df2-b00fc23b1dff,2602379866,13097148405918389343
+4e5e87fe-a8e6-a5d2-e36b-e033f396e9ad,1587414396,8915437167453093961
+17465479-2558-8003-ee65-93023f06a4be,1628098044,3059606320081725899
+59818453-e99c-8903-b214-c33ff6cde7fc,3475770857,11844238870326754770
+8ddf10ea-f2de-7f28-8663-929c44124264,1209117231,17630033321768315011
+f4a4d16a-a27f-f44a-fed3-bb10be3d0459,306275901,649471932971559538
+4cd7cdbb-e7f8-3848-ea88-572252838300,3729461382,623846828167256925
+1a122219-5514-e682-ed35-a390d15437a7,896615736,730522645907508054
+67f5eaff-994f-74b4-334a-fe2d603b7711,4170047856,8469286299023067715
+8285e8ae-0dfd-1679-b5a2-5444402f4f17,3554064495,10733320357542665643
+9cea5e06-df6d-2c90-8f2c-8503fcc3e574,1151482597,4823038980203564147
+65792fd9-1e6e-057b-38fb-0998da4c9ab8,1831171917,15933820630669782541
+a6875fa3-4d99-86ae-f05e-14fe483fd32f,453525262,701671391617490582
+1c6f486d-c358-f7fe-a94d-0966f5d2ae95,2897492023,14409134574926575522
+ef1fcf50-ebc0-22b0-16af-42f404a7a542,732932636,4684979166682942918
+ad7c3a5e-0217-3e54-fb3f-da393712760f,2457993235,709978721448320583
+eb10fa57-f309-130c-6284-86e62b5886e5,3548417447,2696797039691782717
+d2844724-064f-3333-d131-f156f7fe0e20,652841184,5789387349308887111
+ffc0171c-e0a5-8438-24b1-54ee2156dae3,2678906576,10993639585560311396
+a71328c7-2aac-6488-cd44-c977b88f68a5,2120237605,5614061253092043439
+e0a6249e-b6d1-b8a5-ef2b-b0e8e7f1252c,3799798378,1866848238545613214
+575a96f2-5880-82b4-153b-3ffdf402dea0,3451431555,10194515157080255841
+ee4ff539-9ff4-3f20-7904-401fe8b69e8d,1504263636,18252180663767962648
+66c33b90-5fc9-29a8-26e9-39f8fc4bc300,1273190688,5824064381809995600
+36014566-7a5e-9c3b-a4af-64cc0414e185,3969443372,10449112869957472052
+1b65d1d3-4fa4-ba1a-8052-356fc2fec02b,1193545236,6123143658269872021
+eb5f5d2d-2510-2d86-6124-c88bd0eadfe1,1495265139,13090288026760324296
+fb6d7a87-3783-14f7-ff9a-c9054ece911d,2533741632,2259133766082643577
+e2ef72e4-d5d8-cfeb-a8d8-1c1e409cd8c1,2201696314,2180876566121510049
+9326af9d-86ae-dc15-564b-e44ebb9a046b,2816436117,18056897929398226862
+117e32cd-a9da-9d18-8407-cfe82fe3cfaf,551515902,8946181941097817948
+1b295b1a-2caa-6cbd-8fa7-981f574352e6,66981988,3217701127321875171
+e689d24a-0a04-bbe0-5bf6-edf32533c789,2468340609,10090040550701445020
+28d2fc0d-ee56-94ca-4a4a-b83c6c6ecba5,2706778418,14736053271993332847
+f8d9ec59-d448-3a4a-e607-1efa3e68285c,2093569582,4576101968046394159
+29a3123b-5b55-9edf-d618-03bb06967ddf,1610853322,15605903296569498912
+b607c91d-2eda-2bea-1208-437e93a7cbd0,1652746260,1261602951114674739
+53bf7e8b-70a6-1fc6-e05c-95b44122feb4,4281751623,14045369384744406687
+1bd638bf-448d-1e72-7fd3-0bd266ee9ad6,3955958487,9689783434196945844
+66126f0d-2964-ba43-2797-349b23ae9b92,1625309170,16617527132713748845
+93f9189a-372c-d8f0-d3d6-34252850db13,3837114928,8437095404260532524
+698f8f45-ffbc-056a-2732-00ed6e69bd91,3160212734,15232790100360668648
+a9de83fd-540e-e294-096a-b008623fd68d,2810756426,13483424842166155487
+b963ba22-b6ef-8ee7-9788-9168bb550b58,717369519,7310169633787648823
+2c21bacc-48bf-65b2-23eb-f11f2708a351,1104928206,10843905456904711775
+95759e5f-4201-c994-90c2-f793f743fdaa,2456885049,4891634211223296401
+95b29cca-cb88-7d51-4c0f-6c7ac43f628a,1466485968,15942415887950618152
+ff32d932-2ab8-d9c8-389b-3ce2d66800a7,1032038416,16908301734478276853
+7244d5bb-7eb9-7f7c-3fd5-81c9ada508f5,3927581004,8712985887258273903
+c863111e-39aa-de11-d58f-066b07799499,418661534,3838346647485005030
+36508e9c-ef6a-c07b-ad09-355e81f3aef9,3922865433,12746985697581154837
+b5a9161a-667f-0b9e-d735-72f016992716,3871183229,14720479019712192719
+524e72aa-aa51-bbb4-ed0c-99b315fc6a43,1562390659,13115662997980113337
+968a8c84-acba-12a2-3360-7eb0c752011c,240542328,997339181114750218
+94107c95-d64d-a171-9743-a07b2c4efa40,411066489,12460849000338990313
+c09b55f0-8877-5df2-a6bd-e15d60dbbbe2,1586507836,3312516191452294596
+8d4ce1fa-8c6a-2172-f2c1-74eabc2bb73c,3394965566,14818963009743841684
+0958e6bd-393a-70b2-f77a-da50451aa608,1482696852,7710325030677140230
+1a52a9b0-a1f2-ff03-1a2d-8d2ad8328100,747722595,7380181013545617286
+507267f5-5790-2ab7-4590-70f151fca7dc,4043754201,14282360157594283409
+f8222036-f462-f818-3602-7533132dd14e,1033062052,17983464039861561613
+22e3bed5-afab-ce69-e7a1-a7affd786bff,324839009,6417385699235930306
+acf3a94d-1206-4dd4-73e0-3ce2c7fd0227,3546973552,18141150052150834732
+b2d9a696-72f9-805b-82db-c8d8462e6254,1429764148,6738806229940099680
+ad7eb7e2-64e9-9ed9-2a6d-9b49820ee600,2541169355,16765798999509269269
+a197ecdd-bcc9-31ca-3d8c-ca76ba4c5be7,1400302621,3585540325728407164
+a67e6a2b-56d1-c5af-142e-3c990392869a,2665864533,3608977962352102015
+376bfdf0-3a35-2af7-f55b-aa89a072c6ed,2080651576,12407179028554139700
+cda1e462-5f54-62de-e9bd-d544a178efaa,1552802411,11350171977866431411
+887c8cf4-d93b-4a69-f921-c1afcd6b8c77,1823975037,8763920751253539516
+e3cae711-15ce-e743-aa27-4c51e93cd99f,1245969146,17519895980831042295
+08098af9-8fb6-1a01-39e0-7d87ca99045c,3953624449,513366718677295563
+1cd2fcfc-b5b2-c720-23ea-fc5498fb326e,3057100937,16833277186435756216
+0e1567d8-a85e-9799-c2e7-917326d662d4,313408391,236586763549645536
+5c9ea617-0e8e-dddc-14d0-4fa58caf7090,3981411311,3520338267397806836
+1a503b09-1786-43f8-64fe-96f0d1d8886f,326338233,17181480502808649391
+5af85bc4-dd36-0e54-9ec6-31cb05c151d7,150418885,2341424786097093611
+038aee2f-e618-b12e-4e6c-2289a8f4ba12,838873906,15566892523157408142
+c236c63f-4f0c-3811-4b71-b7cf54110111,1063687065,13990957650919045458
+7436d78f-5d96-cf93-bd59-70ab6c071daf,479136523,14644275958143699420
+c99109b2-5bd5-5e68-e2fb-337dffee0471,520886281,1708075235109506522
+699db30f-1549-9874-2073-648aea0517c9,3600890130,9367726067824421050
+0419f782-3500-ac6a-a5f2-a65b09438c9c,107834225,16144460052921727225
+531e6d88-ef27-df31-8b51-ac75bff31bfb,1055407871,9945121540709956953
+0b67c570-c4e4-4b08-3e36-c83597fc25ed,845058136,17538621479700748305
+64b953cc-8399-0549-462e-ae27a1f6d54d,1137854274,2505057023331520310
+c69d9193-bb81-f722-f4da-e76ab342c5b2,834020529,7666554384646287880
+25556ea5-8cee-d5f0-28bb-459d9aa708fa,2682197275,45146696742575421
+01edd1cb-d568-3a8d-c299-90f10658bdc9,2836162925,13960760972720899699
+b492bcfc-ae5a-b25a-b80d-0bfab8570f24,2725366915,13427141617585925865
+798fd230-7eba-1c51-a2b8-22b38b339ed7,3646912006,17111653692266463485
+fd10a819-7fd9-8623-4e53-9ec5096b6bb6,3304100920,16816078839379464941
+bd77fd43-e380-2f32-4cc5-7f038ad7f84a,2628745956,3074739330142739250
+c0c36007-4d50-9c08-045b-720f8cced5c5,452374373,413167001427098567
+5d01c319-b8af-67ae-c5a3-e0fc5e7d9c4d,2348564127,10079878556121362651
+8696defc-6859-6b02-97ff-067ec6500edb,1437231794,6421042822594596676
+0dbdc97a-4daf-aee4-1f3f-8379dce57e3e,3024863287,14764876159058373567
+bdc43217-b9c6-5684-6a81-f5f8146d0489,3285319467,1174668494190454966
+29946835-0e76-5c64-50c7-02b36b4e39c6,1636495264,9807076037475724065
+2673fccd-ba71-4350-388f-d1c3e30ced90,3239670313,11327282850782666219
+cc78d1e2-9527-658c-fad1-8a5239b539a1,2614007215,9485122274768340212
+a8aeb3a1-83dd-4505-01af-551221c113a0,247801780,7141625618428170097
+97359c40-5212-d76f-3bae-aa5ef0769c04,610504132,8453979578959971913
+6b536ab9-e80f-b8d0-ca40-f2cdff37b404,2115604005,6897578757426282647
+d5556be5-2db9-c645-e2df-9352397d36dd,3283736903,5349929629934462336
+60bfa571-2f6a-b7d7-bf0e-e4cba7987e58,2049106539,6152479274325871167
+fe3c069e-e2d5-7d05-3faa-226b2bb48e0e,2985168308,5887210662905737427
+e8381711-777d-8de5-47a2-d3b774e0f79a,3612668866,5579426583298046991
+9bba3a02-f270-f24b-8e4c-219ea990e19b,3522671142,1016423089234698118
+3c2ebf6f-a57b-f9ca-bdc0-1e5b0b1d6243,576081816,8737864036864045939
+479fdf52-aa69-e33a-7764-5b2ba23ffff6,4100925366,11198679050606992168
+b98c87c9-d90a-67dc-fab0-6ba12d1b7548,159638508,15496361415266316502
+cbe6cc4d-4936-6a75-224a-c0aa59160bed,2986126238,2693040888093758417
+d65deb68-df0b-3847-2e28-844a31c7b1fc,380945244,5359005603427020371
+2a4336c3-a59c-7aae-ae9a-c74d86cd2602,3852892696,10287861962240542699
+a4813807-4da6-f76a-b686-9fb67bf39542,2904338020,2565041848962189144
+efdb2fb8-a7fa-eb60-4f56-c7c5d3928eda,2747654066,14700065590056272360
+881e4e2a-02ea-6f51-77c5-67c1dc7da995,3868882953,8757370107676431184
+57d42ffe-3fe8-d169-6c5a-2086479a40f0,196651978,6007557113555392154
+6c9f37b5-f474-c6f3-7abc-5557d37deb51,809406274,3808605154691597432
+c71ce4ce-23fa-71cc-06a0-71c560c40659,2389109127,2113117380677415629
+0cb5a056-07fa-0b79-7688-390cb155fbe6,3310471765,5569001556231293587
+92a25007-e086-2b8a-a0f2-64f96f9e61d3,1140356550,11977144539951590146
+688c36f0-0d7c-e617-3300-abad9313bb7c,2499164041,15386684591478337797
+0b8f8c93-74fc-47bc-9530-e8971efa4043,2318029927,2919284114769962352
+748860d8-e338-752f-ec75-083299f262f7,1116813068,1185669755262044168
+d934330a-2ed1-4d3c-20b3-857b1a8884b4,1146961442,11095257299314832699
+ee2d519f-21d4-73ef-f071-41a99be1b1d1,3740049132,9554665260314679989
+9417fc65-b0f5-1d70-a687-1e08382ebb9f,1641693268,6073119887029922977
+954160cc-92bb-c2d3-4d10-1dd01aad5c48,2527682530,7468801672202500504
+48195ff0-f71d-2744-b244-f70de9701e0a,581515555,1919790922839030344
+d31b041a-510b-5694-159f-9298c7e16d99,2179808737,5572505761096268722
+a746cbea-5830-d8f9-6573-107300b3578e,2787120070,18120558946595644355
+a1e95f09-cbd0-f948-19ef-9176ec721536,4255291945,2599192186084491761
+d99e6d70-98de-4888-7655-c4f99839c0fd,3729469456,589553465177809602
+8c69b384-f0ab-7d38-1e65-583278b35c34,1251669452,5228490976384101720
+6e8fd3aa-a055-5a74-3841-bff4087684e8,1272573259,8921509857306594970
+27901790-5b1a-e32b-75c2-bd648cb50407,3329216937,6184460678266734157
+11048941-c230-b5c2-0e6a-2ae8b625098f,1778599163,360261025190293234
+79ae167f-3531-a607-d317-c4c74e4482c7,3503680437,15355001562990068693
+9de0e6d3-6f4f-7738-d8d8-1878dbee7fc4,1002678841,15965825696195253924
+722ef791-2918-c82e-196d-06042ee0824c,3963221233,17237972935177699371
+e132788f-f441-59c8-0d35-3803db91525a,430050365,8498777371304939195
+20fde93b-650c-3892-a304-9298305f66ac,1844906859,12757685931425292727
+fe340f41-58b0-eb5e-4c79-b957d4e6f23a,908067830,14739082999950517390
+0eefb6c4-558d-0f6e-bef8-95a4e1283b86,2500679782,13687560743037325148
+d7fa0076-295f-ce00-c750-3d2c4f4a05d7,3501558972,13741355339814342491
+54e500e8-2349-02de-6f56-e5e984555610,74117168,7829974839139341911
+6ff78c39-e9cb-8545-ba0f-8cd70e7187d9,3143209817,16387031065087325800
+de4cdbb4-7129-b224-5127-f845027d46ec,1338135889,4435298376495520363
+acd52300-2ac2-d587-0f7c-6a3ec32cabb7,1774652792,7897078403883710439
+f782f87a-ce9d-a9d7-8a13-05e1ac609a56,2758006782,18301733152491685240
+219d8e87-3d1a-cfc0-c776-4ac1bad728bf,2430381184,6379647753671830740
+23093b79-84aa-c2b9-5cd2-f4dca59681bd,3149969064,1088811280313506344
+dbb5882b-d1f1-0b02-244e-e78159b38bb2,2861767489,11100151555305669901
+3b1ff7fa-46e9-a10d-b311-4b6ef727bcf6,2942823346,14900748668556871918
+ea371290-5438-c3a9-7745-26d0907861d6,2665521422,2840926371124365784
+03f584b8-4a32-f81a-cc55-c7e0fbf148a4,3165424210,13966587299328131859
+1a485be6-0932-0f98-b2c6-6040b859ac0f,4211795035,5273097226755398209
+84d554ee-a3fd-d360-4ce3-722b30180f3b,3038236718,11244260072810118664
+99288e44-bfbd-fef3-6b77-c307925aba09,484325908,15383121468443331350
+24745ecb-d5c4-c48a-54e9-34ee9aaa8e7e,3773399263,9101400443062280090
+e3536ca8-f952-d9df-41a7-dbd94082a23b,3183396894,18309992967979749374
+a3881be3-5e1e-7554-21ab-88069f9ea805,3423728295,4659718329585883426
+f25ad429-530e-73e3-843a-f3a812db170c,1176586834,13833247787713548439
+f8689f44-ebe7-b30e-57e3-42550241ad1e,1916762097,12831262350170152048
+5d345919-c3cd-4928-c261-9ee75da94560,4234730651,11375284649383862083
+53e758f8-cc76-c166-7222-1512a728879c,209366676,11862422218868472001
+8b5312b1-cf70-e0ca-357b-378715e97e6c,1795159222,17790389092765020875
+8d483f1a-0aec-3763-42d1-cbdee7724d9f,3783564988,6287551354631792429
+04805116-16f8-c75a-8e0e-03dff8226627,430543729,15313740023944457567
+864c35fd-46dd-7f55-f8bb-8796216819b1,539955644,15471146814632763185
+6fc82b88-e8cd-68f9-06c7-777fba25cf40,1583020711,8364946458856371724
+110971c5-6453-72ec-2f75-00d2787b186a,3244826582,2743898122683921963
+c5d0e0fb-c922-367f-0f8a-048e27c67ae9,2817683207,13164883843912438127
+31854d01-64b1-05d0-f14c-0a1bd0d76f8f,1959774523,3528218033630149738
+a0a56835-b0c0-9831-0a0f-567d77166af2,3340219511,658776653055776161
+fed97ad9-0f02-1369-dfb9-1d001a1353d1,3556885750,8452751146428570827
+9bf8c087-87cb-481f-bc0b-d184c1043de3,3160129913,14519650871808798349
+0567a1d4-6d10-3a3d-9b17-296670857300,4039229162,16805968634327809517
+5b0c4834-2c76-2da6-6936-57fdbddb980b,1235111800,13526425924704508154
+1bb2c0d5-2de0-fd5c-8a60-536585ffd337,3474371321,10102322506632207965
+b4f7a59e-ccf9-d8a4-a02f-d08792bec99c,3887063895,14625716345682629597
+568e609b-245c-b999-1644-308d8a775ba3,2045331409,3734092642040010769
+71698bdd-5d82-96a4-3a69-28dd361c5633,3819311011,7488205632526738514
+541c86ca-8af8-265d-4457-53af8170c0e5,3006722085,1611168840704225264
+773b455b-ddb6-da59-b91f-86369efaa3c5,3336459954,17383679059254004242
+1ee70bbe-0391-c0c5-77ea-f21e75db7129,107544354,15548513929502933279
+97d3ed8a-6cdc-617a-89c5-bc93486e41df,2107084384,8826101701927432208
+1f87c4c5-4bda-c9b6-8613-c5e848bde427,1973509367,14477373330626752159
+3588c6c5-8320-f8e5-85be-9652f3c28907,3435393991,2190993440239801516
+682b77df-853b-1993-cccc-bc84ce8c78eb,2476107958,9384071858015384680
+40a05435-db10-b781-5709-eddff5d9ec73,1357719993,1844232343721156512
+b424095f-4560-d081-d94d-2d77c62705e3,3820376032,16511289162595805246
+c94dfa57-7579-a943-2a12-9cad116bfb7b,2545118429,1089100141341926500
+bf3b8edc-4793-a8e1-97bf-b278944f084e,1928405734,1516013955886620170
+e9767bdd-d8b9-794d-9496-2914b58e3ae6,360618452,17650544612024581359
+859fbb29-e83e-3f59-eda8-19c79878fc12,3501638179,3964214206807665428
+dd74c744-242e-7c3e-8ef9-7976061f4c1d,1993689970,8404075924283575037
+48b5ee51-5154-14e5-13f3-b121350568ce,1988022165,14540614809073848299
+e2f145e8-8118-992e-c51b-469505e077da,3330039871,11541577204071784339
+3d820bcc-fdb0-b8ae-6a75-01c92e245743,2395131671,15738128440587848357
+9803c5b0-a0e1-8333-6db1-eceef74c2667,4189283279,599137537014193252
+676ff4c9-7f62-fac5-cab9-f27971715fd8,1854303197,16272434923711375591
+75a263bb-1482-9797-0d50-4f7f39891073,3697157256,11241923895914817968
+ef6cd37c-6ce8-2ac9-2a26-b43ec9d1b993,1207727028,14962880969994940375
+c1ebf8cb-a613-9556-e414-04e802c7b40d,3890863305,17675833457926597572
+3b29f67e-16f9-e36e-8096-fbc66d77db2c,3627568412,16406075745805192232
+9f31ba93-2d27-6364-5684-3b701a8d1273,4165464999,4966391537937516561
+a882ea59-7d5d-1f13-c458-f991fc485d6c,4069718101,3005853043164372591
+b21ea6b5-8386-ccf9-2c17-97625f4459cd,2862529082,5139359286500356396
+5a6c004d-81eb-8ecb-f97b-553f4837415e,792532865,8628501550986717988
+6cf4d7ed-2e6a-ecbf-4284-a5e483f18cda,756893330,7045237264627761402
+c5028c2b-23b3-db63-080f-93cc1bb26c4b,1439184577,4496332681242934576
+74176ec1-9ffa-45b2-78c1-61cd8face08a,746867378,12008022152581897743
+ed514fa3-63c5-eaef-e949-390ee8b5dd2b,2010302594,7545495535402968761
+774f5026-3e86-9dcc-777f-47248d40afcd,1876541728,13253375455352505398
+3d80e05d-c732-f082-260e-7caea39c181e,2043072915,7985063267168215818
+ed6a5c78-d53c-b41b-841d-03abd210964b,1869976928,11408694106573028265
+45a300cb-0ebd-bd32-d192-b301076370e9,4070858759,9795337495231852485
+1a98d0ca-b519-970d-3e24-d20dc3b2c1d7,3150026750,15960987925759285687
+53c33128-db5d-2c1a-ac23-04c13c7758a1,2046578653,9963661360996377884
+9478abae-9ffe-02d5-e249-14725ec390df,201780445,15956592697218806548
+5458d737-8d56-ed26-9395-a3d592053e12,2413717187,12148739468452714563
+88568326-9199-2743-fd4c-12c8ed5d913b,1729212944,11829418409756453200
+bbef1bd5-8d84-9078-80ec-5dbaf379d3b8,2174683169,2916503368553021307
+5d7ba14f-bed8-beb0-d229-e2865b46022b,743569869,4715813733795531806
+35b4aeec-1ee5-4d99-5fb9-12236f192235,1755219423,16153845247113249907
+aae28dca-3d2c-a52d-f678-b419054c2bde,2426133328,15925024831040862032
+4ac3eaa9-ca4e-10eb-ef04-94b1ca8113ad,569686853,364864282583390144
+3d2764f5-12c5-f5a5-ce40-b4328f91fd2d,4193972157,6260830849582863683
+7114a1f6-76ef-a094-82d9-7cf4f65c8cb6,1553568597,2595131164487384415
+b41d8f77-8aa1-861a-af1f-b9a8ae7a4ae7,125119299,10025626534826116664
+2f9e87f9-72bc-b3be-bb62-dc2c8637930d,176774193,8079765567240835197
+0d0d039b-8b9e-303b-d6db-a14af282f6dd,2394820250,12401605026028439983
+d2a3f552-4e20-5137-2835-92a68790ddb3,3565122123,12759562923114355331
+bde52cd4-81d1-06ef-618e-d2220a4827b5,1173018334,6314626006031949157
+996ff85f-42f0-cd5c-a347-3f995534e036,4104338146,628643470054917628
+74aa08e6-60e5-6535-b781-f784fa22c1ec,331673401,4056948612625217318
+1cfe9119-f756-1ddb-85be-9954e7c76a03,3611996538,8988722054023385713
+d3bc1141-a9fe-095d-419e-c823516a529f,1777596166,12907328321777513990
+2e726df3-2843-d263-8705-b1c053627583,971918456,12262670390736092416
+ce170a87-2023-c353-d6be-0a0a153a1082,2705451192,3070967714053637180
+c551ef0f-48ea-f702-9526-825d89063e39,1285531322,3219095018027611170
+1a51d274-ede5-80e8-a860-28f3ce74e7a9,805886982,15077615541799451014
+24201b78-c915-1973-e37b-8bb04fac4848,2105226519,4682704813447140030
+ccd1a94f-b980-b829-1696-e4422b51053c,1749960084,15313335684260218969
+5f4dad11-f607-60ee-731d-3ff217e7f2e4,2396114114,1639870117676060932
+c4c512d1-8e04-dc35-94e3-3152082adb05,3051120686,17796906757690248504
+f27a7c8d-60dc-6ae9-14c9-68953144ced0,4132154237,3941616491214469217
+d4e817f1-f97f-6205-31c9-b9e72de21acc,2641187451,16286067227035725153
+ce380e33-f3f2-3c8c-0e77-08c6dc5469e4,4223535681,2000182179429785497
+6b43f301-76af-f9ab-aae0-9c327622c14f,320918889,10014551646633803545
+3565538c-e97a-9744-9a37-f3affa1be037,3481056874,9472104209621294206
+d7f85a58-a66e-276b-e245-7ae9e971e44f,2339008529,17465846703510859320
+084a040e-2873-17e3-d021-0ee8200d3ee7,3760062250,13986313117688185284
+061331a7-3671-e0df-df18-45b724bfc7f7,2588339072,9847333505852253576
+76f4abd0-3785-1aca-810a-eab4ddaf9390,1622539057,2592659061778362547
+2353baa8-829c-0903-1b58-0314a6a3874c,3591288834,4580212376736764063
+b3a418e0-06a6-d2c0-6bb7-2a912aa97308,1475443109,5112121786564376331
+fecb98d9-1f95-e52e-f300-f8fd2c9c4eb6,709768356,17788249705390228389
+2ed156f8-a847-597a-b2e2-f360612cdf29,122928,9916781889798425157
+87e1a4d2-cc97-55b1-f5df-68b904b761f1,48060118,17436908482700160459
+5416b55c-e2ad-6fc4-8b42-ae1dd35ddb2b,1171682998,14598850220029088459
+901e53db-4256-c7f6-3244-c7ecbb8328a7,3058319401,9771262301296299622
+8e819276-af73-d3ea-e07a-0c77b9d06424,3264023837,9097166904147182194
+c721fd20-1421-6ff4-52ac-ee2e2dd49ac7,446425894,10639526273415927963
+d800996b-5411-4147-6649-18243f8e2bcf,2648175677,10499984436917617263
+2f52bb25-19be-b99d-5220-1e8337860119,1569952322,3277706381937848944
+38b6bab0-9ba2-21b4-8ccd-2503a9a936b8,1204291038,12578244767736599606
+d7b79912-a548-96b3-81a8-1dbd0cd44b6a,2255834512,18186789323913766000
+ed0a3c00-7645-9d98-2f28-abcbcc3fb0e7,245130232,12083309461025178872
+ca99e882-6a90-d52f-4a7e-3ebf2d2658fa,649006782,1814657885317918221
+93c85eff-38ba-3c69-27d4-5a929218e076,2611319939,3295102890606579668
+326b56b1-2f6a-d6ed-1e7b-9b2a192fee27,251071373,14676703914626272892
+84223ca9-fdf8-dcd0-73a1-ae790fe253c0,3401117729,15312532703775682244
+4b1dc50d-bd0b-8016-d882-7fb45a7fb311,1560298274,74958507896128267
+e36ce4e1-a4bd-5997-df29-5fef3370df5e,324340535,12555064956841659175
+8becc406-6009-e91a-ef03-d428b1407be6,3870325929,14995630858010617556
+0af79648-5907-1f79-6eff-c20a26ea7f3b,3511886219,14769973844703506153
+f76f6e61-137a-6ee6-683a-dd4397c6494d,3588245305,18250003235703762177
+2f736dac-1ad0-872f-dca3-537eb3da6c1d,699704753,14045833439273720760
+43061462-2297-07d1-c2fe-d401c6b8a44e,4257039223,9382169717288925635
+72d45735-03a1-a73c-eff1-7eb119e09d76,2357078118,8654395219729554842
+e4ab5407-2711-8854-bdfc-7b07622c4261,3833044797,15830968242229078397
+119ed7be-9819-1f35-c19e-7083bf288307,811505622,2697755443478471160
+4f9c702b-7f7d-3de7-85ed-4132da927bd7,3762498375,2487769990579346523
+b4bbb4fc-21ff-02a8-5bdd-5c02c6090054,3537406893,16149326845762388572
+b611c065-31a5-3c39-eaa2-5069c0890960,2292312799,16500265233576172623
+d3fa30a3-711d-8216-1849-14cc52a71c5d,2827463337,16161435249905065784
+2fb023c5-81f3-7347-5bab-28488e117406,2501813815,9898081659710362259
+bb78f084-e151-f558-d752-d51e08619681,3842486914,2837222308372038003
+41ef7883-0ece-e972-9550-5e30ba8cd3ba,3551143585,4664818361114372805
+58ec404a-02d8-1166-150d-c262144e048f,2856100033,5142712869353908493
+0c4159a7-04cf-77ed-2844-e328e0bdb773,2977709856,11890493792281839541
+f20aba49-7ae8-9905-69a6-756ad963a8a7,156761669,17045797076786419767
+5645f0ac-5586-0c36-8679-25f97ed12523,891636859,3267567005865923080
+298bf59d-a2a7-817f-c0fa-bc5cbf43d47d,2392385527,16068490415900741307
+d55e949b-a725-3130-e0d1-a2b9a36e2963,2152699930,6888617550107466887
+92d1d2ac-416b-8d0e-d0e6-284dc76dd91d,756294110,17591144329943941416
+9ce07ddb-a46a-6000-2259-cf445f00c9ab,483330936,7871276621142184103
+9083666b-7b3c-1f31-2ea5-4a20066c23c0,408765291,17442926447215479244
+71d401e5-5346-7240-36b6-29bc7266f307,2402796460,2730975608340007084
+ae6062c4-7292-8a25-1fc1-e5515cdc13e3,1888991656,5532832127761058634
+58057e1d-0fe9-3934-6d1d-c54b95d7ef3c,2365002059,10056594274615250077
+6f64111d-ae20-2ae7-b76d-2ea702c3e205,3282933119,16216698603366168941
+3ef08405-6a2e-6ab0-2d0d-7aa60584b797,3975464105,18177555677900450218
+0e28e9a7-4bb6-238b-9f88-c4b7accae5e4,2614940132,17512984373065278956
+64a810f9-7b89-266b-c1ca-6d5cf77b7565,1264283880,6636835826628767698
+155de773-364f-bbfb-57d4-73bab14fc35e,3192705460,2176869610187351219
+a779d04b-e6f0-58ff-58e6-ddbf7b955e0e,632806919,2631185822867287398
+a6570500-8984-e597-12d5-3ff8f0203629,1140492902,11928250493409878800
+9773b7aa-f44b-1d07-635f-16b90be29138,1180654625,16278961032895115707
+8911378e-ae95-e573-03c4-103135f4e034,2738680461,6332828131300040294
+8097b405-f3e0-45de-97d1-d7a6f2d5ba25,1012813200,13133357715506867236
+30b5a8b8-e0eb-dd50-8fc9-369ed7f82d9e,3042361693,14149075030342249259
+fef640e4-0821-1895-d844-2f31f4ca8d9b,3607004361,13691565365811302968
+5c885e56-acca-c4d3-ca58-a30400718df0,18225962,17352909736670264815
+c6a3a44e-355f-0092-e8ff-d6cf766eccfb,3525193220,16210973741213453732
+62d6bd5f-3ee2-e6ba-c3db-aa78fb1f5ae1,1646770403,3902453119496122033
+4bc45af7-9dae-7aa1-cab6-ba5dee063a5e,4070143951,16628033031228365885
+81a2886e-5002-4921-a8df-95e6428a0def,12404225,9121795544652879394
+59a6b344-022d-df25-97a2-95b406479f70,1420938912,16290683322457248904
+b2569924-bfb9-8410-44a3-c990c3fb12fc,1662355937,8044370757576628680
+469b27a7-129e-8d52-85a4-f3d0b459c0ad,3307789247,16293930752656207752
+44c811fe-c1c8-0d9d-6ed2-17e96593d042,2237830268,3638931975226585701
+157413b5-1f1e-a056-a96c-aacc5484a9fd,640929498,861091684620984313
+8eb43853-9d61-9aeb-0f4a-0e6953ae25fc,3963851347,4185897145052659540
+89df9748-8b95-a792-299c-da437148f41c,770473682,13480596083105182913
+1d27006a-390f-8927-1ca4-683fbc58dd8e,2597610259,8788689630514584917
+42ac91ca-c69e-777c-37c0-7c2efeadb1a0,1469711252,9057454636318080171
+3d3cffae-6be8-7720-8180-bd927a4583d1,3201420854,1496073020358080818
+057300ae-226b-01c1-3ed4-ce726c8581eb,2161385097,8825895186857222893
+e3f27935-73d3-8177-c539-b58c60ab072b,4006498153,11359165168997821497
+5d4bf171-e0a6-a4eb-9e7b-5199dc7f1eff,4068888603,10532276694295687873
+2cbaae0c-a435-4de6-5cbe-2fbe30ab1135,3940121937,5377336041876157431
+c26b543a-4992-38eb-f009-c7f5366407f4,1795551171,9042282260678355195
+fc644543-7192-0e8d-f292-66c2e4f326a2,312490330,13638101006708401855
+e8ecbdce-b3ea-cca8-1b21-41f69813f1fa,3851642384,5321517541589970011
+cdb57286-2144-4f44-183f-431e4b93c86a,3921267229,3450378961735330389
+abb55f77-6dc0-3d09-3889-aecb5425de4b,1213990083,3938769851395763669
+fcd824fb-7355-62a4-ea2e-4dc1f00cb193,1971149219,17821020315882545307
+65f8162c-e2ee-d3aa-68ee-84e5b7079ef4,309562020,5578852587582870717
+8be42356-6933-f517-be71-94aba67a5a87,3871100156,1143687358817450592
+8833f92a-a687-6df0-a090-a1dde4fb229f,1256269109,6289375930968982435
+32c792b8-1b8b-a524-872d-39ef6cc707ae,2719935478,2816648070754903211
+882f3d3d-c605-6640-c6b2-cf3681184936,3260557098,4589597141795402316
+5e8b6786-e733-05e6-2797-b418b125a358,2917024592,14956095349489407415
+c7926006-0fc5-aa26-5b79-ba0f60c50bdf,2033728314,13543420283675031359
+a185638b-dd81-52b8-c5dd-ca2fc0d6db2f,3982519003,4985583347865464280
+1db58bc4-498c-eac7-3c58-20ea1ef15c90,3158744726,10443318117970415661
+8d2e876d-bfaf-cb59-fd3c-0551860a08a9,1665237946,4666958604794138909
+975bcf7f-a318-6758-2ebe-99c9fb039e25,4186265586,3886308193555677463
+b1fcf005-a575-91f9-9f32-aa5980e5c8b1,3114929725,16481272253410669661
+91c7ffb3-4fc6-26d0-676d-53c97c09a02d,4257666029,9516653001311957030
+e3d73142-55e0-ec1c-57b0-1333116459a4,2368714398,7044331579742785328
+7464a7fe-35e0-a90b-d78f-d30e3f63b578,1458387908,5921116209547153764
+a3ca5a7a-ceb1-2ba6-4544-1ccbf1087d3f,2285172092,2283374205544150635
+2676cf5f-e4cd-c1c3-c195-f5e4a079117e,862552990,5003239280032077695
+8a475e40-ad36-0202-244b-126519f9e03c,4085024604,6653429127032113563
+f0e63f8e-4126-0175-0652-1fda8ff97e41,12726016,1901029423757349848
+e221075e-2395-48b5-f718-7b4659484c06,1137941890,15201194821818103590
+36ce83e5-f13e-ccd2-bb8d-e85ce0f1d822,4015266057,17739861986610449678
+12f24972-8009-64b2-eeed-59852f358aff,4154567609,12883968700448137160
+b403a4d6-0ca8-925a-2aff-8314270a0535,2163111027,9429305883215083100
+672878b8-2b07-8112-04ef-fe25c980406c,3645387654,1879629111167885752
+c5709c58-0004-b36d-82a7-5a59b4d18252,3527982493,1982890105353927971
+513d77c7-007d-de76-dda9-f04471c7c31a,3903567905,2926050006128391413
+af545f78-8379-5864-3d38-36e48a85fdb8,755941783,8078301633070465203
+927934f6-4de5-8b81-1fe8-8e7a8a35e7bc,3259048265,3674267669803374006
+2ef25781-499c-5610-d7f3-c08df2d6cd54,269310647,15030280761480475757
+61395bb3-3a7d-11dd-380d-c9e7deefbde7,429171975,14393886953812207286
+a0f5e871-9df1-cbe3-275c-1cb205e23518,2522280125,17584128913918188559
+ac695108-0224-1183-f29e-eaa4e2876011,1953771651,13149548606551981480
+c7ee4b8a-7082-b4a5-b9d3-9e8afc7ff7a4,2994423341,7441904759250049336
+67c75bc2-e19d-38f6-1d9d-c292744ac589,1607210883,11755863635128116707
+75ed104c-2388-aadb-db0c-5034e1582018,1667636257,16272437870733959937
+00fadfdf-0c01-e985-fabf-bc9473db225e,1471042406,15219256978617273482
+644a6f5b-acb9-bdee-1a55-40089506b127,1224799934,11188750477306189493
+379c358a-279e-02eb-0e68-db1dec52eaac,2525957974,15702882230623001793
+f1b75ea5-5840-0194-9c1f-e8f907ca9349,3233171323,11917455575917975981
+f6a57369-148e-3afb-3c21-645042184f45,2836833676,17150485107331685462
+70baf46a-6238-19e1-6432-84db3ea0c52f,2551341703,827615337580807462
+9e48a4b1-05a8-978b-cfb7-c0ecea7708a4,232828691,5220058757993479925
+0bab4c8f-9a58-3cde-b43f-8e91fbfba172,972054975,10953332147827844106
+b5c070a5-621e-9a01-38d1-9f3ac3762708,2019361704,15321649880559869267
+539edf1a-515f-8799-e8bd-c72e8dc04ae4,2921926496,15193663103000807847
+7bcb3926-3929-0102-46d4-cab7537f1fff,416593047,3711544425634297805
+551de9ae-3cb4-f4e2-cff3-715f8efcf17e,1967765333,15272195705921249692
+cad5d2cd-4893-07db-cdad-597bed5652b1,3095283701,10288196255390922328
+78fb5e81-0c59-5e5f-dff8-879778baae9d,1409698829,4460761406196291977
+847bc9cb-fd88-e6a9-6eed-bfe3a6713d04,2699969382,11665347932487901016
+5ce9dd87-641a-2c3c-ed7f-e5add726a78c,2836850658,12383145559035256596
+1e685325-4109-91d9-17ce-6f075b0b9673,2674708519,16588487298229068157
+48959f4f-663c-b754-a1b8-e6c4d7269142,2100150924,8258335716201637163
+87f5bba2-c4f0-b3c9-ade9-71cb492ea5b3,4266073879,11861247425979550086
+0d2215bb-0894-22cf-0cf7-7a40f26cafcb,2539591173,5535514633261064310
+8e31834e-fcaa-ac7d-bf79-88e57ea8f11f,1066150119,16276201288568933476
+0896da45-7283-16ae-79cd-d2c69c6b8c87,68048760,9527974144484270971
+7b82de54-b04f-9a65-da5f-d4a38821ace9,2017490599,16189792909133097177
+dac748e0-5482-6080-c8d7-4eab6374dcdd,1432103788,13940562797148442693
+6d7380f4-81f4-430b-7ebe-b6dd2c683d7d,933625152,18107905489587172207
+97ae3c20-7e71-eb98-3899-11f0bb8ec1fa,2433494868,17081329195421296686
+60e341ef-efcc-22ec-ee0d-b8b57dda6e37,260601679,12655077728252557628
+a1257612-8694-4df2-07ee-f3dc32b1a31c,3353339043,16000787491181947637
+0495999f-58cb-2117-01b0-4cae5973866f,4147834858,12783449090650758526
+05c41a7e-2106-3907-d542-fc1f1bf3a3fa,2790212035,11234205855109174756
+1a495f56-577a-918b-d1ab-ff79266b6621,2691378725,5470898090890017435
+ace55890-a476-070f-b2d8-502acd42e68a,3313409358,6963594262489469874
+0da48d79-5de5-109c-ff1f-b82fe3af8ee1,3326647416,6347346542415495325
+b276d41b-ff09-ef2d-ad60-5436c81c3ad9,4134258326,11735355296583149142
+d83731da-0519-744b-9d83-4afda1bdaf31,1312011559,13421562496237782810
+efc14f7a-da60-0755-9c90-d79ff6a68b2d,1301734898,9207929189321049447
+d0742bb8-7f97-09fb-7500-d97c528cfbf1,909891532,991626345559374705
+e4dd03c5-f71e-8c38-6942-1642efb307de,1506812505,13356710691483790274
+0394affe-5ead-aa70-cf7b-e2b63c3e1890,3494743668,13504652039602536965
+3e4e005a-5c99-cb2f-f902-d7e4e9eab5aa,2632117024,15570838870055512827
+9673c4d4-7af5-226b-5e1a-c959571e7836,3077772951,8215450702772018228
+1c7c2954-8b7d-57dd-76ca-21327e829c83,2831417518,9359703897517779229
+69692582-adb4-0a81-34e5-95d39e0ffcd0,2103111917,7722153603991204350
+135f1d4e-2a3c-79f3-1616-3393aa6d8fde,778459037,12505411806565200003
+c7695058-f779-3239-6e61-22b9d00166bf,2829384784,17741354542129695665
+f1f2a696-5d52-1387-a241-55d5129dd6c8,1010565879,12794436658545531273
+5c8c811f-b27c-566a-fbe9-324d5fbd2817,708493273,6478106508666539123
+d8c8eb0b-c07f-a322-7804-29a33b7fc56a,1464405279,5282685403867186791
+1b0dde7e-0c66-4281-8323-81e546c3a9c0,2642157149,11005899234537557770
+4daa94f7-a4e9-aa50-56d9-2bfd19628f92,3542641544,17561278583324514170
+ed3e6f15-63be-07e7-936f-63da0502b33f,3774361401,10668952831310960468
+95d894da-bcab-0b95-2e6e-b35d1c496e44,3861549901,3735434196214511716
+c923421a-bb11-6517-4632-6a0d41a8242e,2990975354,15603899942329209745
+23e3a108-166e-acaa-c351-82fab6c1adcd,4150739518,2226650569862492862
+e5157ef6-a420-d003-22f9-3afefd231cae,3661551464,20644029791056103
+087de486-604a-6737-1162-06a24bc3b4a1,1102623932,6620073853196702493
+4255f7db-dcda-116f-82cd-8424bd6b0b52,361294593,8008950562331361905
+8c207702-d3a7-d10a-d1c2-f4214b2f1b6d,1256032986,12194802877513710359
+0c58dd24-80f9-024d-5145-e75f1eb12db7,3057187833,17142463187929519297
+18af7f1a-aa81-52f4-7da4-7cf46ea69c1b,2818059439,1852510136298472155
+d040c6d3-4126-a0f2-29a3-41e05a960612,842620615,9693982648949644248
+d8880ab1-1a5a-d1e6-878e-03fa836999df,4203110983,6143267211407319368
+a0f03c1c-cdbd-f093-65f1-cfb3c32c6450,4078804891,14005677804712844065
+af0df40d-65ef-344c-42dc-ba2d76ffe8e7,1613589870,6038687232013415491
+46795a87-63e2-ad84-d148-4a082fc6c367,770607905,5137427304863497353
+77da774e-8c54-16d0-1ea2-5bc2a2274f7a,826255209,2040951354110634936
+6e0b14aa-00bb-aa13-71a4-40a423948912,1205431996,1212396865006739544
+ecc9a73a-2279-4b03-e136-dc326367bcb4,3712977205,14868440526850622224
+a7256691-a6bd-545e-2dcd-f627bb14bc61,4119887333,9326818215256664678
+b1a7a760-5f3f-c157-1ccc-59dbfb4438de,2091693114,2075872886739842429
+a399f418-bce1-ab9d-0e60-377ddca04b0d,2565580331,444789389668746108
+07385299-da08-9184-e031-3796c3740813,3670751413,1334889025779929291
+2887e469-3f48-9a99-15a0-a451f768ae62,1117066791,299049237918708378
+4525624f-2d78-537b-5307-64ff8f77ce9a,2959074859,8165201998128990462
+519a2e8e-92a7-43f1-7191-4d23ecff0fca,4141667217,9200697227070405381
+fcc11152-c50a-6a45-641d-970aca3efd98,3454043827,16260336873677411827
+655e50b6-bdd2-a460-8c83-83b528ac533a,436909200,7795317443491865295
+559d7bbd-a940-5d72-41d0-ca0a962c0a6e,848529068,2403253133927130360
+cc820e06-8562-6f89-d4ae-bcf881cc55c7,3129974252,16185466735395194330
+26e4602e-36b9-7097-d035-887142298138,4288211864,15967872660230296657
+701e4d8e-9a06-fe3d-fcac-26455eec2b59,1501795263,14592586736435117822
+e1ce6c8b-0666-ac57-4c9c-8ba9e41f58ef,4161866831,13070535200430586263
+9a98ef6a-753d-9efa-2de2-5c5bdbd4846a,627990583,7920667201307445416
+6c03b2e8-7b91-0a48-d1b3-1d5582c17c88,3180645884,3998612351582090577
+a96943c1-c4cb-1612-60ca-74e3904bcfc6,1166364896,4178538705723190295
+1c4df5b5-3792-280b-f369-37f62e4f6289,3670298272,13952247023792230496
+c83f6016-f2d3-d7d5-33ad-c9167c7c8149,1607998971,18093620443438813097
+820a370c-d3b3-1113-31e1-8c09ddbe3858,2239807481,7377701335574262871
+5ddfd33e-6900-b93e-c0a4-80757c19d748,1050072859,5667855877096057567
+2be60638-af55-e157-cb42-61078b0bf650,1604121564,14884771031653783155
+b00915f2-9e2f-2a31-5cac-66dedb46c85c,4233706996,14734452236725337383
+88b96b69-296e-8d96-4c66-3a3b47c814da,803466585,11348229197842513399
+d8bee64d-41af-0f56-1528-5ca157e68bfd,2851909056,18062907234266385235
+0d42ae16-c872-504f-255f-daae21cdfbff,3345393765,12599772505115262672
+1830263d-0639-1616-22fa-fd8c3da9e77a,372516405,5423636564798454469
+9db56dfe-d7cd-fb84-88d7-0299fa3f8b8c,3512067806,8160369610276241159
+d3b6de37-53f7-c75d-acb0-a3b651c5e8ef,2267695735,6782741914230042145
+78d7af31-b0cb-10e1-8e98-1043c418046b,342688897,8748070341339099843
+493b16d7-348d-558f-a638-aa775c4faf60,1725455924,10095588748312495596
+6ca4533b-918e-26e6-7b7b-ff447f94ee90,1406666065,894801672243659149
+cd64de4b-7ccd-344a-2eaf-f03c1ab6a497,3670455737,4360708193649225775
+32927df1-b361-0346-afb0-4a6fd3308e67,1391994125,14701418404145664193
+7fa18756-0701-10a8-e964-7ded00975187,3078171504,6558064613453242340
+d7e7ebbd-acaa-8faf-2efd-776db1ffb5c3,2118228264,17296752838562646426
+67a21c79-e6f0-3e89-9a8a-0c32bef6ef21,5409089,18320884859605537475
+1db38c35-1602-af60-5a46-83e10eb61c9b,81461196,1863951885771349893
+5ae8820c-4d3d-435d-f452-78a2067e2184,1043868637,7432434550726091443
+c1756da6-ea84-4ae0-9b9b-219327e07e65,3509991182,5071920907965180564
+8fb19aa7-782c-120b-5b95-2bb698e160c4,2955338193,1559755829819124059
+9d3cd041-245f-6067-d634-2206a2324938,1269040341,8887911313978326931
+b46c0382-8761-099b-1479-0dd830bfcc6f,2798390135,18334628901295082601
+8915a56c-ab3e-ec78-99b1-6576cddfea30,2839644083,14074350534795389097
+93904df1-6241-0ec8-5527-1638dc847277,2880661305,16295874167227731636
+53d65ebe-028e-3cc6-028d-9fcf22bd4ce1,2645725168,6656122910670946745
+b17154cd-21ed-bed0-e649-00b9e7b69597,4094003119,7984767183993555924
+1ea51d36-ff83-d74f-dc17-ac0a0f0c9e3e,1716078102,15312419601018029612
+64c5a8b7-947f-bed0-2d19-efd9872c838c,12809633,3939020146870235850
+eb77e278-9080-90c9-9657-675dc7555065,223396295,3280826990176828789
+0f9744f2-9203-ddbc-2afe-7df74e8ed184,1360956141,5121745174219241711
+1ab69884-7819-97a7-3b10-a50158143394,3521878160,18417887883789846946
+e524f8af-1130-3f56-5cad-26bfac8d150e,2031185426,8744903917793838699
+17496876-bedc-01e9-7a11-2af396819e55,671501483,7577542452829809065
+07194bc8-8d19-6601-269b-c9e5d10755f7,1453049035,16156004199172020509
+84f2b7c1-a323-55cc-63ed-8ff9c7df0a1c,4199095080,17760108355710734560
+9dcf70be-d344-d155-76d2-72cd5d31caf4,3866557295,3952140149024247240
+fd8297a9-364e-90ce-4c41-b72787aea2f7,1084180313,7085796901435092768
+ea63e016-4784-8336-4523-7930b037d39e,2678344434,10279786764340847452
+fa861f41-ee37-ea61-8ad7-974b8aa1b52b,3869201347,13119351888552395910
+f42e10a0-b08d-c582-05dc-6120c244090a,1559484889,4665671832839827166
+ea720ee1-cfbf-c832-757b-1d7ddb53e97a,3864562395,3508898801493979077
+1d68e731-cd0b-03b7-0aa8-d491f55434e8,574865214,16191926136021749557
+6b46e2be-8a96-34b2-92d2-db2cf2ef2c6c,2352094763,3713203872332285503
+91ebf611-9436-abb4-596c-094ae9c44d12,445043556,16332501216704196258
+12c5603d-c86b-0358-c7fe-4917baeb3d06,2844835178,1838266271341699864
+2fd45703-cbbf-89ee-64ef-30dc3e79cfe2,227902237,14396727204489366237
+48d22f01-f359-877a-8482-1525d5de8527,1509396323,14446662481237019072
+82c70fb7-2e42-6fe0-f690-1c4d6cae3ca7,1507096402,9393459140870122713
+9aae5ca7-2cc9-b7f5-a04c-f409c187c61b,2237397268,10513368468750134701
+260f59e2-f802-5091-a9ea-1ffda5c9b668,227326590,6443903604737334529
+def8819a-ab7c-d434-25e1-7391884a87ab,3847596894,526365323237202595
+ee658b4e-92fa-3925-388c-fba10cda91b2,1300866684,14429051398397061992
+d5ff6a90-420f-2fd2-4fd4-eaaeb232ccaf,2974088896,3975920337093624816
+fefb3c69-a112-c8e0-b3ca-a1fbd99da0bf,2866776167,14317747373441490828
+d6a84c07-9928-dbe4-14fa-26c7f7204c1d,3937757913,628868453404174745
+ddd2c5a9-598a-9eb2-f733-650b53eefb30,2231566194,886427849374278556
+f3c2f24e-22ca-70b1-68c3-88f130cf466c,3241400764,5977778284886442916
+4126af80-746b-fbc2-9975-967f064a53d9,1865531121,5954187476390982206
+c7877e0d-e191-7c0a-a5f3-9eca01ba49be,3360950144,3875595007233079615
+56763026-ec16-d1ac-8356-1b359f383f49,2903474718,11971782743595825427
+4d8c5b04-1bb9-dda3-30bc-de915ba0c7e9,1985746131,1162629759515635459
+72c18bdb-29e8-e871-0928-97d48376a366,3001846443,15692533243060487052
+ff480d17-65c0-5273-afd7-a5832d296e8a,2631695395,16173058490064568021
+70a52db7-4fb0-85c3-99da-4af955d6198d,3918935790,3717442255335382010
+24248a41-1645-69a3-5a2b-ab73d02c42ba,1023250494,100188809329674392
+2254e2ea-da61-b920-da1b-69f6cdb4aae4,981083046,15197597842487131484
+a7453ec4-3725-7511-edee-ee74ac9f5ff9,1063843982,16594981236306329102
+e51b9291-664c-f037-ffda-8c9e70dc7312,4259374332,3574081345014850618
+66eb2441-09c8-3e67-bafc-00f5c9dab701,2842915532,10491390038197609580
+fcb61829-2626-3895-70e5-57f9c7822e00,1940273015,12579923410334695583
+fa0fbb3e-88a6-f9f1-f7ed-a17e06f0bfbd,4217078065,13485285888930015584
+0f7104fb-b013-a153-609d-4355215675da,666877217,10195740935670137337
+e765444f-0b6c-35b4-6276-38803ea62d17,2044256728,17743736527325240021
+dca6f615-0048-7c64-1e0b-248c0efa5e52,2493197201,16643672176188838167
+174c627d-3653-e58c-8615-cae49c8b404d,3352591946,10557933110294775120
+06c21adf-3059-0d3c-a763-a7b02c8a3881,75352399,5316928858185192585
+ed9ef8a6-858c-8aac-219a-b1259bdcef4c,867114157,17579737954786850240
+db046f51-a9e7-2d29-b3a6-e2f5557b4302,2417742669,8605281117218003454
+e6742d68-a625-bceb-5159-05f41e6c34b3,3976256411,17726691108012954472
+6a34ea45-e6fe-0f8b-3b60-98efebbe1d3c,1970167654,12118645621389465925
+88dc2fb6-06c4-c679-59c7-fef6e0761e67,3334024427,16311747689351052344
+4f49a4e6-8744-ba16-db9b-e60f6e3fe14f,677698200,14520087389864654862
+edaf1eb9-a95b-d470-b89e-ff30c737e7fb,75248266,12481390158418927944
+85e79633-da44-61f5-40ba-fd438edd24ae,1187452617,8690456234115524574
+41674013-2cb0-3750-71d5-478686c3fb9a,4242886327,6101855356254689221
+69a02144-3de7-0260-983b-d7c5d468f8f6,1929005945,547756381791827845
+82b2e8d0-74e0-6bc6-3329-231d498a41a6,1804341637,8457560554585622669
+2a029bd8-df5b-e5e0-6f70-ebf99262864a,2511192938,13211184745796296868
+7dad4f90-36a3-b12a-26b6-c1224ef4e5fa,726686736,16290568202080341598
+cd069cd3-7559-b7dc-e332-bf2830f90499,3600074714,47069291789655557
+7d5907cd-d627-8011-39f1-777d595a3faa,3760489287,3755065852338427782
+0b1f9a5b-1aee-8373-127b-296d5c52795a,651127681,17839606250839846871
+1a88068b-7051-123b-9558-ba7c946144b3,1795878647,11037686908303793298
+f058a7ab-41af-0a0b-2a43-b9a1513bddba,83636987,9078773830491464491
+745c0677-59e9-b90b-2a88-31e815dd2229,38839140,15039655475674343523
+9e00f4e6-40bc-6e24-0ef0-822e76504135,1429147619,11396117823477028554
+79f2b741-642b-aa0c-1901-24a06a9a8a2a,3730553221,10857559723309552310
+11f3a38e-0e60-50ef-d679-e0be29ddda54,3913720863,12472995595776685041
+b5132c21-38b3-8961-b222-32ab5aef17f7,4053945073,2974204765796824590
+e34c361d-45b1-8aa5-69f8-d476d5e84b74,3386499306,2691808910824575848
+7a4cb1f3-9334-a374-0bfd-1f61b21ed268,753483550,5607456000396809670
+ec9a49c2-6eaa-8627-6d5b-01b3646062de,1888027142,18393476897666201520
+5559899f-a4cc-a901-9d5f-def9329d8e14,1911089349,8781455283254064689
+e2c4fa9d-7418-6184-6435-4989a835628a,3254394794,16063942543762618637
+6cfad6e2-a5d4-4edc-6e74-492ed50f37b5,2964967171,678346557528150991
+507b7854-d5eb-9656-a5aa-65ffe34df9a7,3538953913,17179490114455308595
+9e4187e9-f0dc-7e19-6ffa-a8f76a2998e4,2423467914,10907007381994807301
+7f00bc83-a717-3b45-d379-225e4456e135,403140713,6991097528062181504
+f86b38ea-f055-452c-b48f-4fa9cd9ec35f,462239501,7849193047143558414
+73a6af06-32d9-4d7e-73d1-1f7ea74d2f12,2397661741,13040187273056728374
+90518e8f-b40e-817c-eb93-1ab400be3ad7,2046380368,3489479922314958218
+8f5b5b00-654a-0a77-aff3-f9abaca8d601,4056873089,12922136671794621425
+884949fb-d1b8-fc8a-6e96-1c3ec3b784c4,1194697359,17999066926520255200
+813693ef-9c9c-b5ca-72e9-be6b2c6ed05f,145988699,10690924766362853058
+3a4b597f-ee18-5902-cec5-df9e0067621f,4291224148,1950965541241861037
+fc44d3fa-4847-7f5e-8333-00cbb510c9fa,1894128960,865767375530617465
+febf92a6-b041-b240-3ec3-96efafe48a7c,1148877979,15850611676331759461
+ee3a3581-ee70-ff37-f0b3-fc67f487754b,3589113478,14757585809749348112
+1927ab49-10de-2971-e261-c30b412b55a5,680702885,7728082830580021063
+dae79fd2-5258-799b-4684-7aa56cc7c3e4,1596409373,15594783004389692297
+919faaa7-1d56-210c-28d0-ba085f3942ec,454410628,7214047399947674960
+e135a133-d848-cc4a-79ce-1d847d2fd42d,604641134,11212262642348034414
+b22d9ba3-971b-c8a0-64b9-1bad6e8941c7,4293726080,1355918264209524539
+0736f3ab-a6df-1b73-01c8-b67cd8eac3aa,2042573379,17644590273587867423
+05c2fbd0-f4df-f7f7-4dc5-3fc18af0e5ab,4216527292,10878380310454014800
+0b6859bf-dfda-ba74-b895-4a1bea671b5e,2951713284,13079766242909470620
+1673fab1-a1de-7dd3-89a9-45953331f9f8,10114856,4137654558004320543
+fb223201-035f-f23c-9131-9280d08726e5,455518325,14346893466461980070
+32598915-4549-9d5d-e4bc-5adf39f35653,3828105900,10597867616990733313
+3ee10b70-b58f-2eae-f18d-b3db58e70f92,563120840,9414555462112079672
+53df9643-c7fd-0a74-1937-494a7a46295c,3330791097,12705411779534313435
+131b4a25-56bb-b1a1-ac02-bd19a0711fb8,3364462886,6406778550876906494
+c59f78a6-4960-6444-5bcd-3e2f3255482c,3295368037,8723549282832030869
+4690b47b-b169-6ea8-af60-69c5b03a68e3,2289584668,12015092255604206373
+1b973a4e-a0c8-dc33-0098-fe790c3d2127,536170084,16069982116994351103
+f0660839-b949-c0fb-e8bc-a766a519df49,3919469510,7825594132049880447
+95e2a6ab-9c7f-27bb-ff84-b9db939e6540,3731351531,8111253285510797664
+0417809c-f6b1-f6be-7895-849355c678f6,1426568779,17053893394574502629
+78388e24-b84f-d90b-8c9e-5596c07cdb4c,2873108678,8154838931637780458
+233c960f-8731-4d10-191c-e0940e99123d,1658462318,2740120982957656661
+96a8d299-4669-5f71-fa9e-9e25da92576f,877228964,9023302114935228294
+8baf8497-f849-7f40-1ded-b9ae3d1b3e6e,1606242319,4025147586519592626
+fb26c60a-426e-3a3b-8196-64760800bce1,1272962640,3269467654386394721
+4ed63826-bffb-2b5e-057d-23e7628fbe06,7722193,2302189608121621470
+4241f275-a154-ce3a-e8dc-9a04f6538fa1,1876320400,14554094390212728178
+84b81d1d-d3f8-f3c1-4f04-ae896b5048fd,813916313,14681114611474781359
+8c0dcde8-0dff-da42-8083-4097dbc51063,2663107631,15378405587540373522
+74fb0964-d2e3-17fa-1974-3931dbee2932,4016601235,3293774795915804313
+2bbaea6c-7b1d-5d21-4795-68a2fa6c3e46,3793290811,10225879477492310573
+b61e8251-ea5b-82ba-3572-7f18db5c3de8,1205064265,11249261281103100558
+fc4b88ae-02ed-5f31-c21f-be1c73d8ab9c,1942986538,6417011316046379786
+f29b85e0-3ee8-be0f-b654-12b043bc357e,735677145,2499337649349971490
+c3befb87-39ee-8119-5958-4794ed401dbf,964867523,4693666242566781287
+ac13c012-1213-66ee-cde2-5253a292003c,1380211590,6978429504685991310
+e54005a0-c38a-651c-4130-1547274ace3f,532321454,2738279951100694263
+b2ef88e9-f59c-3eb4-56cc-e82a95e0fc0a,1196346177,11568232766972758086
+ae6aa3f7-2b23-485c-5094-5d43984b625e,1342112482,8142079239766245436
+7cb2de2b-2d6e-cb5c-af39-f3632d4d49fb,3015851390,7575037780695427369
+57614407-dcbc-a464-0f43-5226e4abd82d,608496679,5764539326015288651
+1312e2a1-c2a2-80f3-b31a-0fad011b632f,204035442,6439166077964060125
+00c73ba7-d26f-e5c6-492c-b39372f75063,2534660793,2468173456330879204
+7db08a16-b705-390c-0402-e02ba8252369,337882759,499949313745444531
+4ce97dba-829f-c170-2781-659d44569d23,1447844546,6389199428142176713
+81d4e5da-9653-5671-6823-17e113fd65cb,2596247139,13539903405159458237
+e651d733-020f-7d20-581c-2632b4fb34f4,1883944935,1402895849223707252
+94d66886-a8d9-3542-fe4e-c6b7f4dfabad,2190704464,6239278795591007428
+01741724-6abf-b151-3821-a89b58599c9b,679274185,16237974525799662167
+d47bcd43-34a9-855d-889e-b78631f93862,3948863727,10173389207612230902
+80dd05fa-c7c9-0502-9622-744332b0806a,3109084494,13766659325095374074
+47a0dc7f-fe29-cd44-15a1-338d64a0ae5b,3167638893,14361640730709109277
+de36e668-b111-5992-1343-c0ca26e513d0,1560087494,11035991080761154693
+b79e1ece-55d9-2cdf-60b4-9bce406da825,4203317884,2529661337487529603
+c7a14d43-3b21-ea2b-aeec-a397af56cae7,2017588939,10444987118677901394
+9b2c7910-37cf-4235-fcc8-7ce72a5b63e7,3381923775,16096617604475876999
+bff33659-f5bc-ebb4-6b5e-45ea69702f96,1956352041,14679454859625979734
+6a8089ca-add4-3949-aac4-b0e6495384ba,2342270824,11510225436706997982
+2c6c9095-43ad-f632-ef7c-cd26fabee8f9,1827808376,5427987556026691044
+d45ecbe5-70f2-1623-146e-cdbbdad06a20,1040251250,2506812458350170730
+e94bd897-9d24-336d-5f1f-8668ecd72fdb,1249881312,17335104086367966983
+ff5e3bce-93c9-addb-4f3b-41918ce3e637,4191415858,1948895574851081874
+ead0210a-000e-e549-8f7a-9d1bed5d08d4,1781855654,2509108889438416228
+be5d49d6-3119-341a-4cca-23de95d97729,2197847381,6201411762091665796
+49425d3b-1759-4f18-5746-29c03c313be1,1262807271,7850452849200657607
+790797ae-af2e-08c5-09dc-fbd564aaaafc,677952074,8404981723725709896
+4bd54d64-2b53-8c18-c7dc-8eeda5691f3d,2728788798,24175982306228737
+49121f0a-0d23-5f9b-f0f0-e2eefc64b814,1672812689,2379012394197814467
+0e81bb8d-53dc-8ca0-b312-2d9794a98243,506103322,1420061778691853590
+234e14b6-0b35-3748-4a38-50e076b603fb,1143487591,3876668497392681743
+1c4d3f09-e303-cbde-473d-12f573e56042,2159045746,1503243926318184951
+26cba3de-851c-c4e6-f4fa-e658894bdeec,1313810793,1806388926528432546
+4b9b0f0f-d074-76bf-a234-aba891e1d189,1804251452,10377684838528424381
+c39f83ef-48c1-2d56-e844-e033a6b6c92d,1181331545,13100637321099060795
+477fdb98-44be-700c-25ae-125ef42817fe,3818359895,4037986950202308069
+958e2baf-7c2e-2f98-d86d-aeb54fe90708,2390774356,13790188291165898615
+acf224df-9b7f-b44f-20c4-d7e43fe7917a,1863274975,16922915544191958561
+9440be4e-42f6-72ab-a226-dae26588c19e,2371298638,2127832911452956621
+89f601b0-fc67-9203-f4b9-93ada988f8e8,4159059159,217808307726177057
+472a00b3-bdc9-9970-4628-3df7e5acfebc,3038317675,4691225740893567423
+021dad23-3268-1e8a-86d5-0820f5142f6d,1382370781,9072158571200467826
+471e6972-3759-c290-b181-f6366e4fe94d,272732065,9394523541499965288
+399c4c8d-7e7a-8462-fb83-6d81fb2bd079,1159637361,7368274000440425956
+ca6e76ef-ac29-b9c3-b11f-e0f308883aba,687418716,1522008735860570650
+a7532631-28b7-54b5-39fa-06d46d8bcb9d,1124103823,12517098966989781439
+25d7207e-1c4a-e549-ca9d-0d21b1e6df36,1750438823,8327041388461528220
+ab8fde5c-6683-b48d-7875-7d3b557624cf,2908125704,7208615069392948704
+77a7ecb3-a5ce-a4ce-796a-4c5a1329b271,1109389352,14260590972987190099
+d4ddc1ed-e115-59d7-2e2a-ad962e3c482d,1710656400,2791980971690055779
+d6dc3c39-2b99-609c-6ca3-5cf239393a70,3152106443,9665116138668668506
+bc711201-6be2-089b-a963-a468d679946b,2750281031,927509884554967889
+d1514a59-f4e0-8128-4125-8f1f39aa41df,2699356966,9462282513520433070
+ac5dbc4f-8057-d91e-f746-952f4fa55eb4,312833064,4224975129512252287
+72948a2b-6de0-79b8-a21e-0bc7924ca5d1,536465572,4281323878227311595
+838fc3ac-b48c-12e1-8ad5-3f23a49e73af,3947316287,15607507520123989535
+ae02cc8d-cd96-4281-9f7f-352a47f46ad2,3733008550,1617604893220857177
+fc429943-51d8-3043-d5fc-1b3a82f49221,2353015179,16294141455398455751
+c6e6de1a-c5f8-ef79-adc3-b8b38e83e18a,787715387,15077547336202958416
+c665df3b-199e-f9f2-00c4-ab721b15b7b6,818532671,13132621804028607717
+43dc3351-0a43-0109-9838-7d78e64525c5,2544969233,3603855228626073557
+21a4abab-5586-a2b5-16ff-7c98780f5192,1123677644,9680692735805857127
+038693ca-070d-f069-c81b-16740fce2473,47974366,9068547208634370155
+9178ae8e-4937-d2fb-e284-b5b951c84ebb,1102021123,5988559353079635835
+ba1cdbce-ffff-b688-7c6f-74ef602c2555,2720007925,7781446142453737268
+d684cafa-70bb-973f-e96c-b0dbafb01077,1900733062,12135021697093662721
+5b62b94b-413f-aa64-6ebc-b5b79fbdaa0e,2998386702,14203039332967342062
+9bd07a1b-74c2-9b2c-8bbb-412efc0d1a7f,425143876,8508323856884664470
+74a416fc-6a87-8b0a-0fe9-b41d5d5ba103,3526749003,3494811725827724636
+a535d754-5ebe-7038-4a8f-5b98292f45fb,876803401,5639214962246371731
+2a324c6c-47c3-dd07-2563-9721d9d5d95b,1500914957,16941304385008021699
+fa03e6f8-d6c0-30e4-adb1-10b64682d725,3458345103,12751731291196973821
+f8e5c7a9-91f3-7af7-462b-7b4b8e17ccc9,1820859084,3281882487759860108
+7125a44c-a636-8fad-e996-4e8f55a5ff12,1518938024,10375568505222657821
+cf7f245a-8495-4bf4-fc33-85c4927cd85d,668957246,6001439983671509710
+4f5d8750-6367-a0b5-5d2e-2d06158185ea,3861853574,11614332499426502777
+fca74fa4-e81e-a055-ad35-2c439f247329,3744016009,9999685193316025276
+5ca90dde-7637-fcd9-0b63-c3fcc6f32804,974476732,9706392433894312734
+a68e3299-a71e-a356-4002-3f2ae7476ffc,2797760334,2665146065234479570
+4245cd5f-8134-92c6-0e1e-106011bdd97f,2962912132,17495423203099458835
+9e944195-8371-e07e-e3a2-b9211883d720,3952814092,7569472778160335011
+793a14a9-2d8c-cf5c-48a1-db1a768174d6,121171903,13105893309477014311
+af6dd3a7-2107-c530-da23-f769f74dd38b,2904939163,2947466563328716362
+f2e68ee5-1245-6d2f-739e-268054be4fb1,2475949454,12246178451534553277
+9724d17d-57e6-f938-4377-077ed3762822,4208931895,1515434704082288172
+7460cf47-9729-4b37-3773-8c0273b4124f,2281466838,7668961931861715304
+0c6233c4-93c6-e1c5-335a-6d989563d79b,594870351,13209938563929028132
+d2c85e25-534c-2752-11ef-51826199b8ac,2697338686,15783210846257071873
+63b6218a-daaf-901d-e6e6-523f05fdc640,3120984900,7821261864408669854
+77ee9eb4-0c2f-6d93-f832-2aa62e3d0660,2426615568,16990903207799024447
+9c0d2776-dd95-b8ca-8d70-37b07ba9fce6,3766242490,16135663281621885778
+e47b3755-2305-56b4-3dd6-424ebb683b49,103317141,16803233493359020169
+20b36573-61e4-a1ba-055b-dc6861292764,1235785008,4793746723330071521
+092582b4-59ba-d340-f06d-f62db56825a9,3546441833,2625830110318653643
+c46c0925-1e55-46a8-3f29-9c0c99b19db6,1095843458,14651834956525664407
+fb615617-fb18-a275-e91e-4cb148ab8f59,793338471,11641890356573243724
+bb985049-8f1e-99b8-64e3-69c56c7af965,777237780,5779215932414009212
+2eeab65b-3fce-55d7-e998-5947e2964daf,2870280644,17314013794401652383
+c3ea191e-01cb-0f67-7f4c-b89fa7a1fa17,3067102324,9658068593504294138
+1240f8eb-c814-b12b-3f7a-ecb47a5b4d5f,1970356229,1143294569151096182
+37bed0c6-965d-fb57-b057-74d1eeabf8f8,281644007,7747028922066999001
+4885a334-e125-c023-0aff-fcd3a4a22d0d,3749127397,548661951494117554
+56829869-523b-c950-da63-4ecb7d452788,3382861024,11468421772334086496
+0f5e237a-043f-3b3d-23de-92779718fc9c,3572102638,17679500363225686122
+c731b3b3-d79f-df53-422d-80f18eaa3680,3863715868,6422327043190860723
+6e390531-dbc6-200f-c872-8033fd5e0e53,683506760,10343327881191852116
+09043cb7-27ed-9f36-3be2-18ccb6a1c222,2354432077,18167335660881288358
+13ffb95b-304f-0b02-2c23-817c6a2a5927,2460947621,10558029137348151589
+52dd9ba9-3e37-31f7-b60e-b9bab793e7c8,3386314706,10703716208958052795
+ae40ba82-cc4d-6b45-07c7-e0a23520d913,2169531604,7010252635788236705
+95055aff-6b15-ab06-99f5-f8dd91ca7c0c,2784853414,6437219536413146503
+3fd5d418-2688-6532-1aa7-bf84ca3dfd5a,1386780739,15654482761160988721
+dcb1735c-1c43-c5b3-a932-f27d0ecc3e57,2699836548,9566274508571821678
+4ccd3649-e7d9-1b5b-8700-9baeec69f106,1150611497,7094077103131921949
+fe04a40e-573f-e9a7-2ce0-59f29af192c5,564961047,4538720249182378859
+c4898bd5-2e53-da26-9c77-7b3356022dad,2043883431,14318213234787668924
+b13f867e-6120-90da-5cd1-292aa112010a,1964612457,16871896845503785102
+4cd72b4b-6c62-0f69-98d9-d650c7408464,2608319133,10070943809869013667
+454cd9e1-2ef3-a189-7ce4-ec571498c200,3480512769,12754765076972178135
+31a3ce6a-4f9f-6cdf-4fe5-d27aae2340b8,1532907864,14717683588051725852
+f67bb71b-9253-ba1e-57ca-05683c9349bb,532611889,10195864734817839007
+99d3e86c-bc2c-9bb2-0590-f6fca88ff5f1,289356357,266275202809012935
+ff7f916b-db48-ea73-2342-3c14f4e83360,629162544,8958573282461782109
+abd4cea0-1946-9fc8-39e8-28fd265af239,1976563932,10795211518602591484
+8ce1d0e6-96c9-2782-1ea7-6b2d679d59e9,1246738712,3334359764617046733
+25b6cdf4-2adb-6cc6-8b6f-a69270dca37d,3750212730,1826421311002532516
+880e15dd-fe06-1270-7360-ff649f1d8304,2573571079,17702140716569970537
+71ad35d4-2f78-5f57-8560-89a4d4490f33,2298893128,15242654119816396268
+ffa07ce2-03f0-7396-6ae3-a1d4edbc9b8a,492352352,11109327790668765630
+b4d5c151-315c-ecae-72e8-673b5b2b0009,4037452116,14730734715709442571
+98b6e0b5-980b-7b6e-f82c-825725e23c22,114465554,2643791920552643904
+ffb57319-7193-f3f8-3ddd-5f781762f7ae,644530484,2174823576987421427
+790fac18-93b9-c43d-b5af-7dce26e60359,4174009697,6309906318880832868
+473c0b01-7a55-ef11-4ce6-7c14542952f4,187701198,14300620939522678595
+9caf5459-1992-123f-7622-65247205c388,3728532224,2334095297955933321
+2b2ad9ee-d08a-d8ea-705b-6305bcf24443,3077913658,15387857537366901439
+ffb5d5be-7d47-9d7c-7d29-c7311dae6f65,1970053542,15759913433814487902
+707a9891-b7eb-50f8-d05d-7aebd2ae5b65,2031964876,1888745084211389193
+fb30adbb-6980-34b8-bb59-94b96e888cc5,60712959,10983604129576572814
+54f0f95f-a238-5abf-80f2-beb1d6e2a8e3,679666829,16263204859401047087
+2f687f9c-f6d4-ec65-dce1-7ef27be02b64,1542654760,4596879048392007850
+4a8998fd-2f8c-1127-fa58-e27b05e33edd,2844222029,15408070571967137817
+6d21dc3c-a845-00cd-8228-2065d833ea99,1877385877,697808714283842249
+e0cc7fc4-0d52-ffad-0650-1864de1c8b38,447173486,7556543493116599967
+6bfcecdb-00ee-442d-0df7-4346dedf2dca,860267404,18314721437299985527
+aebb02b5-38df-0c79-ceea-6a68a6f29608,1900118599,17853579970721487634
+fe8fc6f4-8011-43a1-812e-bd4cc6b776f4,447084224,3041740975206582918
+df903a24-8f97-7529-17de-9285ccfdfb02,2067083039,8501090884598049188
+0fcce7d6-a23b-d0ae-3cca-b3bb41838faa,3591198611,17169041183995388742
+64d15d63-1b25-e36f-4590-3bf1eb1a4cdc,639160495,12760140386903488749
+e3ba554d-cba2-5d5f-3aac-1acf0922a02e,1061353120,4330214475934451930
+03d0a6af-f0ea-f52b-e4e5-83aed4733a37,3641353773,16495822766383177134
+9c38eb42-5570-ff4d-f42e-ccea3f6b0b21,4236802569,11785498978385124766
+affd7b0e-38b2-1f90-2dc0-43fc169843d1,1085131611,14837018007147387822
+1d8c45f5-1677-2750-ede9-b3c4be256e68,679543327,3442254561183654604
+41feb32c-c08d-8ca3-9a1c-4b4e03e1174b,93621726,18055991625798843556
+7d5c16bd-e344-7b9f-7d66-5bb1c81ab0a5,2465822057,13144290271253634172
+234677cb-ea8c-9e65-77d6-0da06730a6d8,843013379,1676419302341633670
+84461792-ead8-5e28-7664-af20d2481de5,1175145499,14331091689111466658
+34660a09-b194-908d-2a24-143ff33ecac7,331710856,9876027294667789842
+40c4e70b-d9e2-cfe9-51a6-66b050747692,1900477985,13070303079890380711
+32fd91a4-aca9-8e9d-6ab3-00d5e044f92a,4201199593,13290877631765153306
+6fb5c9b1-ec26-4c12-0722-2f96038675bf,3307753776,3140254789196081818
+df27ff38-b930-fac9-2a8b-b48d8c65e855,2947064490,7851962552088919789
+88011b62-ed2c-c946-e261-5513979739aa,431403322,817352286050204159
+15fda3db-c8ca-9777-8d3f-29036891d9c3,672973354,10042699780521272496
+b43594b7-b0d6-8b07-ae79-9568f3284484,677624962,9490312938540809345
+551c553a-9da8-4124-d13e-eaa34f19d6b0,1333796602,11366728818071552920
+653de905-0d50-1866-b6a6-ac7dc0f24d5f,1188131851,2360647648587010815
+87cbc905-fcf5-83fb-a3b9-5cbc58baf362,2644967264,14804218133861299603
+7ffe0a82-397a-9d01-af64-05366d3ee2f1,1531299278,14922667093213643073
+b68ee8c5-f6dd-b4c5-d945-e8f462750f19,3980703047,1209580968626534210
+bb5f9efd-7b51-0007-54f5-157ef3656af0,4122207800,4579840353326128595
+56f76a0d-a39b-fe68-3333-bb301581a041,4043975567,9203725693273885496
+32c3e0be-354c-53f7-3376-5449d257a617,291575282,17698294401724845951
+6f053266-4f5a-7f56-c537-3013b628cd8d,3827631254,7466662072674040572
+4ccfc795-3204-f7f4-8312-2a3b5c0458a2,97556107,4218113097990732820
+060522ab-0e60-fb18-6c40-0766df5724ce,1435344110,17174155844390183832
+e629b96e-651e-c9c6-11f6-28078326efa1,3537636744,1136441845608431443
+b067c396-9e2b-39bc-29a2-6d9f303097a8,1285622217,4695634402815586300
+6c6a33c3-af60-410e-3b27-be1cdac820c7,786018330,1961680988078672597
+9acea472-a93f-a81d-a1a0-21d9474cdf9c,1029441504,4839666967027333190
+9bdc3026-1cfe-43bd-2f52-b2f5e1b75461,4029420314,9784884536023200427
+6d4f294a-d54d-f3c7-3dec-bc47a7d35b84,1669709821,12129653687957806480
+4a861ccd-285e-706d-fab6-efe2a7303f84,1123358410,12093180853350919290
+6d980d7d-e5f3-5f50-3215-b335bd90ec0b,3275239603,8750629091940615897
+ad7aca7f-26f5-c577-f1d9-ff8c61d2b64a,2318631190,17199252377841420067
+0c7e17fb-919a-795e-111e-ad88200be413,932292207,16908637462463772869
+7f7fcc33-2a88-fdeb-d140-9d54ef4ea2fd,3327988479,13819465916233858615
+1fe6c4b7-e00a-e688-fbbe-3d3d14bf4bf2,2328010552,15307424063247439320
+ea80da36-b437-ae4d-af3c-dfab1c827677,917332095,6709264310209940221
+251f550a-63dc-be04-cf53-66d9b4e95c7b,3745840728,11197762483862827080
+f1970fdf-307a-9201-a6b1-b8bc93e6eb9c,1944099222,5182149557861935913
+fd70a95f-53b0-7ba7-250c-02fa4cea1738,1998904987,11748763985196879486
+a71e2568-67f2-3a07-f6b9-c46376a81b93,2289559686,3502398048827863340
+e5c016b1-5191-16e7-a5b9-1e34680b55bd,2124116818,4898335641992864269
+bf8d2960-fdfb-005b-1f8b-13f984563066,568719205,699341204063477868
+e7eeaf85-22f0-2ab0-585d-97950d900c84,936296182,940871904450709884
+0da90e80-1971-6dc6-ccc8-8a1bd91fa5e6,2029260623,9596011866676555972
+36611352-1c65-3ce6-70ba-738240113ae8,1402016625,15015555840419445215
+c996bb99-a916-2e77-97f1-24fa87e9281e,1928503225,1416166116643635103
+b53baef0-bc58-d952-72d0-a106ee07ee02,2142465944,10466290921449959202
+fa809bd3-7afa-f93c-d533-b89fa7775f67,2714096946,15634772455319308683
+452f9e0d-8308-b1c5-3e8c-77f4f5ec79ed,329776782,15901667869065184028
+4589655e-22f9-0bc5-81b6-9f210e8d65c9,4005133203,7730774991458608314
+e604b8b6-e0cc-8b6f-ffd1-b7af34c3dcfb,717334214,1454161428121961627
+a577b9b8-f6ff-4b10-522e-9d3f1675860a,122278617,10276431451074095772
+faaf8cd7-bc01-cb2e-968a-00fa069aa2dd,3483303114,5263447728281317202
+96f34ca8-9428-ca19-9793-0df6b83eccb0,56177648,3297839368376155565
+1213d50b-d15d-0ed9-3667-1fe1d49e638b,2918578569,7407220681014063036
+118c2650-130e-e629-ee38-958569d94e65,239064481,11828036525844193223
+4351d5b1-241c-ca6c-46f6-dfc4ac3bc82a,3394011295,4055508939662489721
+299c3253-0d37-edec-d6a7-3fb85f684af3,2220148651,7965925717356212094
+f78f1b02-1af7-03c8-f713-bcdacbc6dc99,1459702007,351713120536649740
+aff7e6d9-0447-8519-2509-69619cb1aec6,3455784490,4330442169250031461
+7825cef8-b0c4-c74e-dd91-c17c5bdbdd8f,1580438268,9871350220058945445
+ae81fa78-1a6c-bada-4634-37bc4964ea86,756444165,6597293769371222316
+75e6885f-a7ba-4972-4506-eb1cc224bfc4,2937682749,11043777726038182892
+4b87c115-d852-fafc-deae-692e0213c1c5,1226164537,5509955896831664885
+0cd6308a-2dc3-fe5f-8c03-321b9d97b1ef,3302397150,9635056454852533392
+9358fa19-68d3-e7b6-4a0a-ee66923ae5df,1234286920,16800293072557592995
+3195c9e7-5611-e17b-6e58-7dd279797c8a,1818280113,15406694230179363587
+65179bc6-e2bc-677c-407c-668d4d5b32b2,640620247,5069470760794167670
+65ab67c7-e1ac-0639-f1f9-5f5aac131adb,422020237,1906308815609720924
+9a7b3326-de3e-6964-164a-7da12acc71c4,1202769638,17654998842720106811
+c157cb98-2d4e-e47f-3acb-2193d56ad5fc,2354790148,10252421652497831877
+8caf13ee-392c-0e76-e94f-4a1051ef3a69,637769654,12208932629723465477
+a021b368-f727-c687-72d4-98949a12e656,31913670,1464548116903420978
+0df145a9-58eb-ea49-3d92-4de3279c6e47,3788325402,14118846079979903178
+b5d7beed-28f9-6ba4-57dc-96cd945ab8b0,3053414390,675889309454753312
+bfb5b705-22ff-70bc-a8d1-ef3a9f484303,370245184,18316164147828614182
+ed56ec48-e743-a464-c697-f01c071e2a2c,1213228542,12776060680763215218
+9628a449-dbc1-af4e-b1f1-0850b31fea3d,2008405040,13167674606959437815
+a9d0f7b2-59e4-71c6-596f-c7cd52c6ce2e,3010304625,13529663526673070878
+3ade0843-a428-95bd-d5c1-21cfec6f184b,3577252336,18345103151448977084
+09a0cf5d-b68b-976d-7344-23968acae714,3629184321,13306893375375684725
+cd4f04b6-46fa-968e-2805-ca0f31765c13,3364529218,17884377631257251483
+9d9d71c9-23b2-a8ee-3dba-60bf43dad82a,3889083991,4835587567032323102
+f7678fcb-6f40-5b11-942f-b621064cf5e5,2178603876,12289870987580562100
+26c0ea00-5d1f-f83d-3b8f-18d45bd101ce,3859197952,2867041809065999628
+6c96a439-ed8c-dfdc-7a6b-64d4a813f5e6,1686965253,11673168788875140673
+58a1cc32-3664-16ad-bacc-7f57cd104fe6,595962918,8964157679702211710
+015bad4e-10ee-d430-fb2b-1f127ed5d6da,2629712029,17003620527604321502
+ba8c39b0-6f0d-d1b0-19ae-aea000133a4e,626291997,17516344916234907392
+e31b2488-4c7a-c41e-8ad4-475d8c9f469c,1113299849,4769175469788793154
+9f16afaf-f3c3-b024-3bc6-01de9bf5a6ed,3778001018,9865816104510825273
+955405b5-edb4-63ff-8f1a-a944e05686dc,4128114185,15815154754783225368
+c537f56d-7bdc-b666-95fe-746e33a86603,2887969015,9035347961895409286
+6d9a0dd8-de25-5396-db86-900af4293706,120203994,7086424645692981792
+98a135be-1a66-17c0-4e8c-c49bb3f772b1,2744759328,14442670916475645055
+f1fc9216-9655-0b21-3fb7-e713db77a11c,1056922869,17998835947188039446
+b38e86f7-7d05-d9f0-f9d3-e40d9817aeb2,2014124755,17767524837668667436
+3a1379a2-6fe3-5eee-1bce-2efcd50669cc,3615876075,12555176197073047275
+27958f52-1a22-f79b-07d4-3bf4e8e2689c,2189508625,14498722350188294771
+b9c62700-c842-2d20-2933-f9331c8ecfe0,4289741294,12747668622108575938
+accc3d2a-c544-557e-a4f8-251c8c57196d,4098794343,11392476445766468490
+ca48b1d4-569f-228e-759c-70acc1421239,2845017246,11953916391476385474
+36517ecc-fe93-58e4-418b-56ee4e778e60,1488899074,9194786528585299027
+9f2f3b45-3477-f460-2ee9-75f4466edf71,2050540230,12133902636546813427
+525e1e6e-1c9c-278f-7639-61da416b96b4,2383170043,4630718246209991446
+2affdb1c-71e3-5545-e005-c71ef7002613,662414033,8860853647118921220
+1eb3b816-f0c5-28f8-4d1c-435ab703df27,2676713325,14475013016430989101
+48414f48-7136-dca3-6531-bd65ac0cf00d,327667814,3572433052370658021
+bb9a1d18-1889-8eee-e586-039a9436bf55,4231577624,9140968336024131618
+4b52c11e-cf12-006b-b34b-a3cdfb6ce57a,1218449961,435691059223033683
+f880fe21-05f8-9ad2-d405-e22d614fc719,3477209269,9016171602903442146
+21f7788f-b667-0d9b-c942-098f9ee67712,599011351,11870262740851809996
+61ec62c5-04e3-effc-d471-decdf108306e,1680946036,11488103545248719732
+783bf7fc-8e2d-1e6e-7429-f81a99119481,3890513664,2197859081999660955
+ad6fdf11-2a5e-95c4-0025-e926727e6c10,62922316,18012772526668506406
+26898b82-5cc6-9ae5-281d-f4a05b99063e,818372109,12624694341216216560
+920a5212-6ed7-1268-b5cb-bc13d92a08aa,3495731231,3742348334426606149
+5f4a1ba3-add8-182b-7fe7-ef452de92b93,1420352448,4813407978013067687
+83811057-09d8-8786-4838-664ae41fabb3,1947571648,4056252030716268710
+c76e8838-0962-2a4a-2ebc-4745df8be586,4236690867,886834387008031061
+5009dec9-cef7-f09c-3424-58358c83a923,2917227886,14972146950623833546
+6fd16b26-21c7-e43b-f281-4ec8465a7933,2718148671,12622488614841329788
+bde77582-3f0b-7b96-ca74-e049b354e2af,3862732462,7313635865001375889
+f522a244-72c6-13da-becf-46905e5a9b70,4199717987,7171114525153006659
+140b8cc9-ddb0-4488-9def-a6da0e9d878d,2809797323,8700334199861071009
+4923232a-2d74-3e53-6608-14221c3f8baa,1027265745,10701012192612186259
+2283fac8-0aee-13f1-ed08-b157e0154a19,3250884784,12806859032440177915
+ba886a4e-40bb-dd28-0c8d-27dc032e3c0a,1238682506,2348653447648363917
+66521234-5434-f755-e145-dcc75649190e,322903938,2403347746357609521
+e1b67c22-c34c-6655-fa9a-7264cb66066a,397393661,5565600461066273233
+267457ab-303d-d2e8-5f15-c4c308085c2a,2800490464,6197981162358287507
+c13bcad2-f3c7-193a-4fa8-c5a81091c86d,3563110621,16495486965530548834
+fd59ba7c-27a4-8a93-732b-827c8284289a,3755841014,949453224779284033
+a2e45f21-cb61-5ca4-18c7-557ad4d77fb2,2267119019,2860427847131006250
+5d0b0b77-8cd2-7efc-da66-0fb44d7958c1,2919909373,15888470988468038424
+db9b704c-c15f-d2e9-1450-7bad17deb90f,4254834359,589951345621113883
+78dbab8d-8095-bfe7-b823-1b056128fde5,2719208322,15465215120206680151
+91ff456f-0f6e-ad4a-ffaf-fe305dd1e16d,863565601,15425288101989262422
+a238f4ef-1aaa-92c3-d142-ad5837495de5,1368879260,13880545802628660464
+72b2babc-9398-c428-b676-cac5577da604,2686089773,16906276708416318698
+3fcec367-f3a2-42db-e758-bff7c9bc7d5d,1301766889,2049896960308215830
+916728c4-385d-0ce8-e86e-40807179ae4a,287962085,8088698722151712140
+3471e2d5-bfc9-fc0d-e0e8-bec300f2b78d,1182074109,10575828994491629732
+4961a2d8-13ab-aa49-b32d-fbfd9db005c1,1123515374,2735126010034562736
+fed99d05-90e2-cb8a-4a69-eef86d362756,1056598539,3870542619300014206
+dec26d1e-8c9e-4614-393d-4375450ba821,3561077094,6445481508379498463
+0116ab52-0172-748b-bcec-ec7e60d3f45b,1575780414,13707705467433919018
+9a229849-f34b-05df-8602-17d1c84ee80c,3540746056,18046922511912452667
+f4c0b7fb-9f17-1393-9f2b-8d5d5137e174,2927863038,17912213376078190292
+bd1557df-637a-78f6-352e-b0b053214237,3645722898,819957891410734856
+312fdcee-433b-e3f4-554d-bb9aaae2a5b1,502984440,3455333097759727098
+61ee7fc5-d584-bc18-04c7-1b95b926c182,1963951700,602236841905919545
+01156d63-9b7a-32f4-238a-81246c4618d7,404434808,824255052367829268
+bfcd2ec6-ea6d-427a-922c-665b97f011f9,707865816,7342158276443413463
+e235aa6e-e029-39e4-d391-5a0032862340,1967611162,1166582156544298066
+eda23817-56be-077b-2b63-c557dd12fcca,1449296422,11599519679906448112
+195e652f-843b-6c51-b305-690e009b7aef,334488095,8118117633129921243
+db8ae459-3a8d-e38e-8bce-d78da3e2b071,2116719090,247412360397953826
+71117754-49aa-89d7-2aa6-1ab656b5e2e9,784653084,16829535284262770240
+51f9abfb-b10d-de4f-dc64-a2e87360a51e,2240008924,10148764398308182439
+3335de45-9e85-3d5e-3289-62f0c8d9c858,1095752409,5276645666482301665
+2c0760e4-9325-bced-7e2b-41fe58e98c28,4291831421,10720034663495710173
+22aaaa93-fcf3-94c6-2f35-675b7b66c32f,3902934092,1611985192890060704
+aaf1698a-74b1-d427-0bf0-6b2158acbd04,4005416196,16762027302258777308
+34045515-8695-0f57-8e72-2c04db47a763,4171549296,3919701923632224742
+2d3d31b9-54a4-143e-95fa-84a44138db91,1238886585,12779847130189938771
+ef38fcfb-d79f-5c5f-740f-3ef19c6b2e26,1468135972,7322902239699974653
+d042540c-e9a7-89ec-cef0-84bb78dc3993,2300746057,5562950787645666187
+5ee6e95d-2ec3-2c8f-405b-ffb6cb6b67d4,652860107,5635185671784578046
+a28df9c1-04a2-d729-af67-5375e015cb1c,245632390,12158667718337222668
+08a6fe22-778e-a4b3-074d-681446a33226,4118621956,12640494520348661713
+fb8866ce-6749-33b5-f796-b42dc7483bb2,3671663477,10132664865507520968
+49620244-ff32-3330-572c-098d03cd650b,2596570413,759151819839715407
+a4bf8fd3-6d6e-0c61-05b9-c3787a1db07a,344481182,9357050504659762784
+bdd7242d-ce7b-112e-7193-c20a7782d4e3,894546467,18251075460266146372
+fa1bd26c-0d54-9141-8dfe-3dc5a02b6160,1418891923,6084633859482490345
+946ac92f-1699-46f4-86d2-60ca4af0abfe,810716625,17643350509761250668
+ecd83028-3c6f-efaa-9403-d50d2967099e,3782770289,14994179541965922267
+6895a462-8309-4eba-4045-edad3a9a4096,3906675417,9329454601996849568
+765e8991-c281-62ce-768b-c7b6468ff1ba,1021933519,12310557926677038501
+c882aaea-5483-34c9-1b78-481c6b1aace0,289536140,15467294737687461792
+94d7a077-68b3-718d-6162-b67fc5f779bd,4102699861,14721265867846980929
+9f61b8ca-60a7-bb2d-12a7-eb10a32079c3,1166455364,367162841121219064
+024ff148-6cb5-3c02-28b4-71c97165e09f,2524522407,2497303963981495223
+975c8b3e-836a-ff3d-98da-ee78ed473ac8,2864992862,16588082103268035702
+985ec7e5-3352-36ac-3f1f-321706d690fb,242563886,6458363000814776283
+accda638-a176-11bc-c17e-eb72cea17c09,3746028015,171216883813079229
+47e29414-7a30-1d1b-923a-97cd5ff10cd6,2985021168,6295929896074784008
+f75f3b77-35c4-f69c-3806-fc19f1e60dd8,1365588157,535663742452868512
+d74622bc-4ed2-a372-aea2-ed80ad0032ad,2265231628,1263918697959851422
+7c79194f-43f5-3c2e-6e31-36893740b388,1647557681,9589217667717207411
+820f5568-2872-ca7a-61c8-70e4e84cd996,3745776228,5758791669455826345
+9c0627a8-1b07-dd1e-e212-f5d089caaf1a,3447958288,17602743435992057042
+e5193eae-b914-f831-f19a-94a1a494f097,1286709446,3055499538796319905
+8574cf19-6641-e41d-59e1-53eb7f88ada0,1806828612,15032588046306536027
+ec68d7fa-4acf-04ee-773e-4ec863a1b492,3844238500,2218603417166857160
+265937a5-f36a-9683-0d99-5444b73f6f8a,3420252568,5474297392976431934
+47321d54-ec20-5945-534d-fe5a6b7158bb,3063990446,4990729362544809191
+c4092d1c-5591-998f-e7aa-0d8f931cc414,2577261037,2305344931067431751
+029fe73a-0bcd-49e1-07ba-465723739ad1,1752154046,5315917538545480220
+e623c70e-ed69-a266-d715-b54c0640589e,1111486134,9128530270103017366
+352a77d2-91cd-5134-a052-9a8cd2d36501,3367382999,9795023367578287686
+f9a83792-4912-2062-da62-eab727ce2799,1351460346,12917254889848839427
+e4dbf57b-017e-01ef-a40d-6047f2c1b76f,3294564581,5159440833720242038
+49b619ca-41fa-c6e0-3473-2e36fe722fc4,4280285323,6257231252089190992
+bd53dc52-e36a-68ad-4e44-f0daecbb5eaa,3877594461,8156074429414733369
+e1a586e6-ac16-97c8-d0da-4dcf3c6d49aa,3839298431,2264842227576327156
+880e2e35-34be-f94d-5a6b-0a0d99248cf0,3154729811,2487781368800175560
+ec49a78b-90e3-8dd9-369f-dfa8fd483770,4217661347,3213068153230336237
+8db55b43-8c2c-7216-0901-a9beec811018,2387945168,10162252433654244445
+ec95f808-1793-06ac-59eb-50d6d337050e,3554926005,6793350538925797349
+063362c4-4c6c-6e59-0409-8a011bb04d68,3962666628,5121401159587525694
+dc05d763-0367-e3d4-e4b3-c96e6ded451b,3243452228,10395700769059127115
+9fa38e5c-d91c-1f7d-81e6-0b5b69de337d,1747980554,16563171636675553758
+62af3497-4480-391a-ef35-8e443e217d22,3244980898,2304175718771744030
+10c90333-c64c-9ca4-b385-abb696d191f9,2640248864,3724822342294719811
+cbd518b4-ec85-a569-839d-af5c135998d5,1956371872,15431019049985577145
+ebcf3efd-519b-47bf-6bbf-5bce4381f6db,1200876340,5291322957085276750
+7204f490-8505-2c58-a7e9-9e26b29e5c8c,1012050347,13161179942736798074
+70b6d17e-a9e5-c688-80ce-2572737540cc,1617020709,11540886038860391767
+cb066899-26eb-0dea-af95-6fbe93c0cc96,1174514823,5469169181051488829
+87118fc7-128c-2c43-8df8-908dd0a6ef06,729049007,6126396357574135770
+9ae07491-4448-bade-8d90-72d11bf9f4ab,4246873152,2533504579875832856
+bbc56438-56c8-4e2f-1c66-c40698fab426,2323206490,1868261112506609407
+b370f512-c518-11a9-12d2-4a6a44ca3b50,2977919496,15897532285684041958
+041ca3cf-f9b1-53f6-8c6e-c5bb779ca3fc,482778234,18065916958329844542
+2b1e81d3-864e-cdcb-d749-9ec788783ba9,3292800334,8551681098017032039
+b081f372-3cb1-30f5-cee3-f86e2f801e24,1689762680,17946028910090363143
+b1d28ebd-2cf0-a117-82f6-5610ef3c3a4a,814124291,8393862236448257482
+ab908ecc-d559-0a1f-34f9-1e63b916ccc3,924240319,2624620033773408621
+979d0127-a2b0-124a-e7b9-396e039be1c0,2330992208,10039961147923663937
+981592f1-bb8c-c641-365f-c82dfe015945,2828330313,15857869529309246867
+5321657f-b2e2-6d6c-f247-a27f0c3f17dc,671230494,9473146666907020636
+63b0d823-7634-7f25-3bbb-d680e388abd7,2064742859,10209188564185815501
+adda6860-9e2a-c038-9387-3f107a4ffcd5,2538768766,7241259112029334118
+a5031851-2f66-6c71-cf05-4c4c1edcdf10,1117604954,16183800302814783849
+41181bc3-ba52-d771-e624-3de231216632,3045154405,15979712627383893461
+9d26df73-9b78-8afc-ac13-e8f33721ab01,2464110196,1172242104823808320
+d963795b-c360-2f25-5948-cb62d14acbde,3760534566,5807926028425825827
+f20b62dd-a178-1eba-33b3-2f8be42c3b9c,1321756645,13259084881444212248
+9c525aad-a980-104b-0d79-bac1ac60b8ed,2853862048,4883466467786625634
+f54be125-5037-591b-3a22-747f826a06a8,1705945594,2143993513013621855
+2706d446-7012-fc90-2af9-72bfe48ed894,1412000099,16543753811444515202
+716fda81-31c8-e181-b1c3-b4b04a77e517,152353662,4955592452658569057
+8fc7607c-f88e-2d16-d4c2-08b3a58d926c,579743773,3414430770581387836
+66d9b389-4f15-5b18-0b15-1f6a81464231,3587380750,15651812790890693746
+ba194596-9e16-9149-5a18-81e8c912ab54,4166908797,6023811897665183076
+23532117-6e4f-1bcc-0e20-a0a539ecb83c,1623767030,17617030155720300950
+e2c9c377-3660-bac4-b143-08c704b58996,1729860095,7947842253188044813
+d76b69db-839b-df88-bf24-78a0004d959d,3218588898,9825086495500662279
+b09cce85-a488-e622-b700-de83789a81de,2040755584,4639008988313552984
+0a28b0a3-d285-c2a8-83e7-d75ed780120d,1982804517,4880823563834907649
+71e1441c-21b4-54a0-96dd-9b3e5d8a7d0b,3012007026,343079687440254536
+dfbd50f9-233a-ab30-4cad-a311377ba758,119986910,2905054647487797609
+330903a9-8dfb-c3ef-533e-ec5776b4ae86,4289482353,11126227922291531693
+f25d82fc-bedb-8517-9ff1-98f0aa2f13ad,2554695620,12729033709638411542
+fb05c039-a8c1-27d2-12c1-3267d081a87c,2635039253,5305378612365148459
+ff96af7a-a92e-612c-9dd6-e77794cc54bd,4118281922,15657932606264342649
+e53ce970-2f4b-b84c-b8ab-18b930d966fa,1606306218,13104194957478824282
+6c0433bc-9766-ecd3-d619-042418996b17,535313920,8052179087438716745
+3a3b3882-4918-fd26-3035-7c4f66442c53,4287370036,11114533056833417555
+f6619c3d-2352-4b0c-8321-fc657d010f18,4189485874,6622366116237987887
+fd20d1fe-e8fb-4403-6b89-3f4c636446d4,1672963590,6302402286983487271
+6ce2b17a-3591-86b2-0ae4-bf546485421b,3743914728,13356423404288985631
+9edfd2f7-fc45-dc4b-5773-e18f3b3c8bd0,3761311189,6742015689126817820
+62929e6d-957f-cf00-c664-10b4ce604945,1166553441,7333963046393231452
+e35984d6-7c5d-1c58-4e6a-7063af863b50,3388032075,17010402369307978003
+7f1a9ba7-728b-7d9f-bf93-99e129ea609a,2808349322,17113036792983450104
+16d920f8-4bd4-deb7-a3ed-82bffb1a40c4,472467688,3991120645261850836
+435a342d-888c-4edd-ebdf-7990289fe1a5,3932376380,11931082925382689695
+405e7cb9-fcc9-389d-814a-add1db13406a,3008621706,2093195319451869310
+3cbc0e0c-a045-e456-284e-2aac0244194a,189727754,6630056592313367394
+71663181-197c-0791-0871-593d278f5bf6,3104625928,5739197953990529819
+cbdc21e9-1a47-9186-0f8f-1e7d5186686a,3029399566,17446271460589843642
+7d40e618-547d-3244-8a53-31ef3f949452,457086405,6919509333429215582
+97777d65-7f5c-b945-9183-91a2c2f8b606,1675935260,4457607375451099565
+e12f51cc-38ed-6322-13b6-1aaa5db74ca3,550685929,3964422371220788522
+795bbcac-e605-9c44-1a52-769cfe83da0b,3644747174,11250223094533518204
+d3093d1c-fc66-bb15-f852-8da02c239c26,3409927105,17645880822315842939
+8ad9bbde-f27f-8a99-ff9a-385fbaa05b76,3382642761,2981879809507145787
+084a67ac-c985-73e2-3272-3b248629a137,691198129,12615185481017302223
+77c128d2-f609-3221-23dc-2134ff316ccd,1698441205,7185615126850623611
+f8fac7e6-0b6e-2fb7-e4d0-d0ecbce34790,3828077466,8838962376591069897
+3e77ad9c-92c3-6da2-ab35-7094c109a557,2233204296,5288595263608509553
+48a282ab-f985-e379-8eb5-e24ba565eecd,3502496839,4121359904933292983
+f872aecb-7c6a-45e7-ad88-ee3b9fbd7c4a,991782914,5358835908376292638
+c4d32851-0e35-f561-a2b4-80fc221d7004,3090158304,1959205430426372510
+a017a5bf-6a4f-5f91-f4e5-58cbbb66d0f5,1176839588,3676147511183907073
+5069abdf-818f-824f-6d20-000bcc1118ba,3207244914,2152029839300482
+b97ba5dc-26c2-b32a-97d1-8ce6da79ef27,2834715648,15298646154215910300
+3675091d-e2d7-6275-6fee-9a3f777884d7,632935762,12890917273437074735
+34737602-d3f1-7a68-0570-9b326442bc39,3313569057,8365168792021553512
+f313acb7-d795-79cc-e243-5c6f18e6b5fa,2879818181,17629725991054669697
+90c7b000-fda9-c142-68e1-6eeb0f82820e,3970526534,652850556087018198
+bf684b10-56e0-c40c-fd2f-1864450c49cf,3568303587,4276827118115144085
+47e9c52a-9ce7-f6a4-f681-ac041674d681,1376456555,3101042723391645518
+4dafc6a4-904f-ac63-49f7-587337181b7c,651374101,8414431652678120939
+e5059a3b-9280-1827-7616-f61182d1a6ab,244004411,8733422021112381619
+4b216fdc-e736-981b-056e-dd4fd3e7bf77,918862657,7761274203810615810
+4aaa0dbb-220d-28e4-378e-701188248bf7,2573423754,11883158207973985810
+11139c35-290a-8901-345f-458be9391f9b,1827048850,17648650048606385169
+98a6f33a-e6a2-e967-bd8f-b4bfd672f31f,1954565703,10255651714537635792
+7d747618-ebd5-2867-9265-e3ef3ea7f006,2430894049,5279396986633937169
+44894f12-03c4-4659-453c-802b861e1cf3,351257283,11412333117220723131
+74b4d163-3070-5f1c-5469-e72087fd63da,3395130480,15134515124510801822
+900f992b-d700-204a-3ad2-e1cb8435f5b8,2356442012,386303474581167384
+6b2632cf-c303-fb55-f90b-770349d3072e,1028413586,13649081748824677831
+ba15617c-637b-4f8c-6081-9ba13e082e29,3323587888,7509510094313629151
+1e423ae7-8f65-57ae-14ca-9b1a5eed8dad,2295313914,12806190471548753605
+b6b32ff6-da93-36bf-ff93-9cb15a40b5b1,300708298,3533165037214400812
+6d848320-4863-c98e-096e-105139855a4e,3274123643,1389148429930632078
+f47882fe-ac7c-3cfe-42ee-cb35c1ce81af,501801388,8426909335435234580
+4fd4e81e-180f-630c-d663-337757cc9b78,418397453,17659832861175269567
+00c8ebef-3d76-3824-2b3d-067198f91d4e,1464625384,1840843366882805427
+0a1b2a37-c332-0851-39bf-a6b93f3f1362,2470222184,14780918748236976808
+621a3459-b29f-7e14-b11d-a322cfbd44ce,2012545866,4914294269683747431
+24d267e4-2201-4438-d155-041b3171c3ce,931316625,7173389708450879592
+cd8918cb-59b0-614f-b19b-5117949ae45f,877636345,14339975550589270970
+1b1ddd5e-041d-d05a-7563-7680985a0519,4015230737,4864464947599847387
+a66c58f5-02f8-e4c4-7090-5cd1ac9b8653,1788336446,5635346190001662785
+64f02cab-9da3-69da-3680-5957aa8b740a,1347003026,17186546566447401231
+a0adb6e9-f1b6-f9a1-2346-2d04cf9ffef7,2010513500,17125458044306258207
+667d1e93-4d13-e1f7-73e7-be7adfda8fc5,775880823,10191047077503111362
+f1c79991-1fd0-f44a-4f00-406f69165244,2811293759,14503355161462871723
+f0db8bc2-3806-2eb1-da54-838f5c3a5b34,3827036696,3843206569546595727
+9ce16cd2-7a34-be54-2513-cb49ebfbaf64,4260353270,14297423349905318267
+36c63421-ac4a-0bd6-321c-bafce4c37c1f,1263601399,13796245600774573573
+95df976b-4639-3f66-b5bc-d2a64e5f33fb,1600944924,8729636073547324984
+920458ee-7b32-fa3b-359d-f6ef85928b1f,900949572,14820855376274509602
+224c8474-8065-a222-c825-1f36b4ca584d,1359228212,7009614109927234921
+d409ba3d-02b6-5d07-517b-78af4e218ca9,1268980635,3944514709748470024
+77c53f00-c468-aceb-7d3b-aeebc6c251f8,3888258583,1876708936126458150
+cf714f97-5289-c8dc-ce55-2fe786f2f13f,2622594248,12561711164432907725
+72f133fc-f178-482e-c7d6-e916f9b7fe20,2781757814,10533550856590634362
+0ff9fbf5-529d-bbdb-c427-bc1ee3c42d5f,1732185658,14815545805803617882
+7e377d2f-2229-d0ec-abdf-aeee92e97ce7,110101458,889985745011334763
+7ddbe682-8dd8-0e71-e171-c363eba9cbdb,1824154885,8507042964699696000
+47f72c9a-aab0-5876-f899-355816c0f52e,2023381716,6595929747105219332
+feb851f0-9168-b7fb-37f9-97f3952ef2de,170715744,15366420465189512116
+b1981cd1-26bd-35d8-8ec0-7f76016650b7,1383622495,2684744954599761791
+3eff01d4-cb81-6144-9ed9-8a41ee632e71,962331383,10470422529335033598
+3563621b-5be1-ff00-859f-121f6c32eef9,2622216341,15453246786751665827
+c78682f8-76f2-7ddd-1d4f-ab2e57fe6b51,4186673783,13710804490983572383
+f9801b86-79b4-10e0-f7c6-e103a7b18e8d,1340509807,5307820116171493758
+dbe70307-7646-3e66-0054-9fbc0f3bb27e,1476126789,13894601337226786770
+9e92193e-ebd5-1887-2dc6-f207a527f90a,3565805097,17737705206165802943
+b1de1f4e-e7ad-c99b-8681-906ace72df6f,3434263255,13683066697217539520
+681e78c6-a7ba-7f33-234b-6c84bbaef516,2254929429,7879253136670645880
+e5c3ba0b-5ef5-62c6-cb22-ff9f00f1a8d7,397197986,849316294817899953
+6df97f9b-97a6-5e95-7ddc-2050fe72ff67,3063317719,9476502603126863273
+848b1683-36e0-51e7-c2cb-dc94e7a32f92,4248924079,2706285735668425936
+a715b1b8-0afd-7d4a-47a2-76a558668c73,1882941907,6503700133167306408
+897a6975-ab1e-723b-707d-5b55700de9f6,2716577993,7716099477206346488
+34a031f6-f477-22ff-9835-53051b061ca1,4288764118,11564757552070972362
+35f9a9c3-56b5-2d49-c730-db961d23f25d,4109068465,15794338309174978409
+cbf714f6-c9a7-f45e-b004-59d3240505e3,2117817938,6094953831297311601
+ec7b5312-b863-55a2-9d8f-1b8212f2a066,3061370268,12034884523780865968
+9a52cbfd-f461-8bee-729f-f269b1db7edf,3238070920,1847944273234208676
+a4a12f63-1c70-a428-a5c0-48dd3386c512,2317053391,2559017055232992952
+e5f5a7d9-5de3-3f23-575a-35472b652d83,1290478026,15050394728375534090
+e85c7a66-5ea0-cf94-9c39-5f73c4528b22,4146632859,13526485891978904144
+68b541dc-18fa-cd8b-18e3-af13566056d0,2551256012,355180151720314559
+04c44829-8155-417a-683f-8e744341eba4,1998244126,3280236743094766221
+b939fd67-beb7-494b-f348-1cadc151b506,677331957,17302387254111740869
+25aa3f67-3971-60ed-42e9-2fab5551618b,2191031052,3921581063992871628
+5ea4e297-db35-b3ad-ed30-9d4eee3d73c3,3772317872,12874813565097726105
+85bb70ae-c0e4-9bcc-12e9-f13a693445db,3305647272,8116655407173317044
+da8d6b14-6c48-5162-5f9d-165dc5c8ce0c,564860985,5194957313877214662
+fc9d1029-282d-0cbc-b544-ef7d68a62534,3625739611,2254501958135245393
+1628b6f4-b486-71c1-8511-f1a09feba64b,4018251060,5741001140491139782
+0d370b1c-12dc-e11a-dd46-d2548b51136d,4267348233,5424290551281793181
+892a5f9c-6b27-bb52-7db6-272fb4f8b06e,2159923474,10370116240117680040
+09d3551f-4a4d-4e31-2ee2-266792ffc6f0,4263144947,2038649883496549102
+59b2ebcf-ce75-e15b-e1e6-95ed22b806f3,3180279843,8242877269653281785
+a7541b74-b740-c6b3-e568-ca50bb63b4ea,876307426,11581205834892966417
+1ab5f9ed-66e8-7012-fcc7-82b8190f774b,1484629954,12191561045616313550
+c3c2ece7-efd0-1fab-bd00-de2c36ecc166,1725909436,6942316427978688911
+551eacf7-9e9a-b072-edc7-68fdc143e137,3397388564,16424938456961708868
+ac79ea20-2bc4-dc66-4f74-ace8a65fab97,3218244526,1502312381900971950
+5fed6795-fd41-207b-16b0-1550d2e9f3f8,1824552706,15622473013486759810
+5a49adef-f34e-075b-5ef2-58e1063b7ae3,1573717228,10920868116591463964
+f98715a4-b506-8d86-7bd6-7792d2012cd7,2150877546,465415914766458543
+c2a09608-2b44-18bd-4665-eb1b1eb1c285,3966632850,11539903846590622460
+ca5b342a-ae66-21df-3b6b-4920173f0b56,1681308056,10938320369149145891
+16a198f4-8907-df62-60f4-b8bb0415e8a0,2543625442,7836624482986433153
+f65de064-f29b-3737-e186-e2b2180265f9,207012398,4212190983055530171
+c1ab2f21-2743-3b90-f2e0-1eb40e4d5a06,1291029686,18250986974118660019
+346cc0cc-f871-2746-77d5-c86effff4c05,561377851,8798286009606611106
+e1fdb42c-da8e-21e5-1fa7-56b0999877c6,1310293420,17699252721013638992
+c7f3dfee-ab98-2e1e-6c46-c31d2bdb55e6,584645382,4438805329580826264
+53d1fcf1-a84c-b7a8-cdb6-e33424a64ab2,2651873855,17326833487600363224
+db7e5542-d6dd-4582-0d90-10ed3e594510,2484282715,1557531481640829893
+10d58981-4c6e-3325-f4e1-4b8469dcdf8b,3471933576,5734445190992681901
+a8a46c09-b8e7-489f-ef69-a91efe52db60,3312824977,12420052141955477029
+ae79d949-96b0-c317-e2dd-85194f2f5d74,208366315,10294818238376671738
+f5b9e625-841b-ad37-9695-ca7aa2352dd0,1588112041,6467304701763997888
+a76ea436-a1c6-4559-a506-d14ad78a19c1,37447941,3328608981827514436
+b3508a03-2878-7d5e-10ca-b1bb9a7713ec,2893428582,15537196562246815885
+5756a642-755b-97f9-a1f2-bd7f28ccf91b,178301913,8384718859695518839
+5c2b443c-08af-4dee-51f6-cdbbae139e54,3490901362,1789130270160126644
+ee9d961a-3010-b879-7da2-46d0a3c06d4d,904183324,10954562021245261294
+750a10ff-3420-fe81-bdfa-d420f1c6a263,385271420,13817714538181681597
+d72c2974-ae75-2fea-4a7e-f89afcf44dfc,3273575060,3993144020872749162
+69f92dca-1c98-593f-ff15-b49299506bdb,2942137024,4553856301483143529
+763c60b8-4f96-7aa0-c074-e9f2877f86d9,819607394,8177834115005536629
+cc145cc2-5a65-e6e1-142d-a30e0cd68e1f,1629939558,10470057978928051639
+8e8b6c1c-3f8d-1b34-35bd-2e886a3716b5,2181242993,11352933096320713270
+5648fddc-dc2a-d02d-6cf6-f9ae167328e3,103825886,13367893384973574319
+9c721023-02aa-3dc4-0b25-e69e002ae98a,161450031,1737148223850481814
+564496d1-86fa-aa14-3fab-8874c0a44f75,1114774388,14292541580953038560
+511fc47d-4aa3-fd58-9653-767b9c586ce7,3635463200,2468197336454852661
+a7cbeb9e-dbc4-dd18-cef8-cd6f3a061187,3067709689,4197739611114642509
+2e567f34-b0e5-cb9b-27d7-592634858bba,1266425796,478844789033851599
+76fc9356-d49f-bb75-7f6a-f2437bdd9069,4133437569,16684845485468637695
+6d769805-9d3d-fc75-fb4e-3e4176d7643e,3972345585,2797807006434220722
+611bd1da-02f8-73a6-0e9a-7c7f666ef25f,3574372874,11612006500781892393
+4eb404a5-4600-7f19-c939-e329da63e7b3,1684145368,11040033776110385679
+05ca7a4f-e821-abc3-5fb8-9172f37c1543,748696751,18143376494756177260
+73478dd2-cd00-41e7-725e-8b3de8f61686,3997087665,5830071220841967172
+c20f35ba-852d-11f9-9fd3-58910d164f95,3901336168,4794180820064391015
+b8c038d0-6901-fdbf-cd54-55aafb42771f,3373025939,16574263217089490281
+7e4dd0b3-c0cf-678a-6cc7-a4d0c57d0d36,3915542702,3364994823048507636
+1693bf0c-6290-1165-ff52-92f8c0f85b1c,3839233902,2418435434728519084
+3122bdbf-cf20-45e5-2954-3eeb8730802d,2910437911,15726847336343941920
+98096180-977c-4c20-68d7-9a86817d4dd8,559017540,14270535031829689709
+994b4267-4c99-412b-0082-7dac1d76087f,3389663505,16887693072588130910
+2e369f5c-2de3-c96a-3ebe-3c254fc50b63,1941597116,6892155478872569438
+e48835d9-b8cd-c3d7-9332-038dfbb70331,4170076005,1006228393897098566
+15a77f08-f9cb-e551-6720-adcee4fe4ed5,1178608,4332717472186561199
+cafbea5b-51ea-7a99-0f2f-d768bf6b20a0,3442017946,12594481614890186623
+8faa9a32-7277-a917-ca8e-7f2c80e37553,2151265787,1815361107617945524
+36b7f3c4-f989-f375-1cfd-3ec921ccd493,665007910,14562653663484263563
+1fa4a392-c533-5540-d869-eed9e6cc6b33,3009942343,8833098787161811200
+ca15c328-6eeb-af55-fa23-d0bc8def8138,1389492363,2693700958288759913
+878ec5be-8687-6f1b-59d5-41587fdde9d5,3308993180,2298662718044780724
+1af789e3-a3d5-9ca1-a30b-6d72aa61c485,1216071489,16831293565474632913
+e0b67777-da12-55b7-c69d-b474fa92b0be,512641498,15713690812152738073
+3f96df4e-e3ab-3d6d-4e8b-efdf0d366ea4,1631180912,8644834055900554678
+110c88ab-4b31-55ab-d14d-7e38bc57a180,3748522984,7132626825361194378
+08085023-638d-e0e0-50a0-e377237250a3,3927658138,9023412667995072484
+5fb686d5-1235-cfb4-4273-348b8b459e8b,3450124461,14820298167072723807
+43450b33-ab62-8a72-f113-58ba8e9ac454,2672464039,7666997758235273381
+1d1c0e44-5852-2724-fadd-cb05ebece54b,2443064077,9579202066325661898
+9a058b54-418c-6291-e11b-d9b58bf59d5d,173243194,991913307521293623
+5d24540a-5c04-c684-f79f-30634bd9f8fd,1420329750,17269316195309599758
+870ecf5d-aa08-0cf6-0d96-acb0e63b135b,1219378949,2745738876794747444
+ac858866-7f23-daa2-cfef-a3408a9aee63,1175407973,13661807761911635342
+e57156d6-0565-ff8b-bf25-dca1badd6b58,372184863,18229685181313910365
+0885d106-e391-0ae4-db4c-099c42e89986,2673658329,479511440268352673
+e425cf15-791e-39f5-46b9-a3111a83122a,945865812,6007645425835278795
+dffcd48b-aea3-f24e-82ad-60350438540e,503542969,17210157676190432240
+76fe6bcd-c892-baf9-b6c8-123dfccdcb72,616256887,3527336159690764235
+c5f4605c-a7b9-0a1f-74e9-e85be8035300,786164090,2966824532556199216
+a6d0eb7a-cbda-998c-ad55-88b3f4696c60,690946759,6059994007888337696
+a36757d2-90db-465d-4fe9-e54b57854fce,1709252619,9745969904134560197
+42216f5e-1dfd-9e4e-2915-52d51f7b7df0,229936434,17776397122913706306
+0b462e3b-1a3e-fc68-a0b4-ca6508241a2c,539965852,717856024134657718
+01ea2b04-71ca-773e-eb82-15d5461782e1,1723832865,13189372954531488588
+bfb313fa-edec-7da5-d277-4fd6b0a4d434,972090753,10038116872367956447
+c53ab1c1-c83d-80fb-fb7e-cdda9cadaa1c,2718067031,610805411071262476
+4bc1e0d6-ebfd-b577-ff04-d8d23f1ab1d5,819332119,17348006659902598702
+9bd8f142-9cde-2bc7-c5cf-2ba6619cf1da,3218955075,12317051763049875715
+13a9fafc-76ea-063e-1e2e-ec6826cd9d8d,1217629390,14165139350553019631
+849c6d80-1549-65a3-a4ad-cdd43675c417,3851180858,4811014188631715855
+f7681757-3073-691d-d090-01f0d971f97d,2161894862,12189318379115334241
+25f33e27-94f3-9d0a-8fc5-7eac51a895c9,1945232314,11830343260793471860
+dce73acb-590f-5f29-4f52-cc2ecc359877,4027138086,13615208600255885739
+14f5b581-aa48-8078-9a08-e93d47617ca5,991050040,5396035459347200261
+6dca9f72-34a3-345b-84f9-a356edd37ed8,2761592552,10575757855315368118
+280f6c84-a1b0-78d7-b68b-b159b9a2d3b5,534445511,11943417932919451095
+e0185ddd-5d3b-8bf5-bfbc-11a03e3b0e97,3589369407,8640610322943246876
+904e661a-7562-edb4-7bc9-69f466b2312b,313038460,3825453629631701580
+eae05fdb-f6c9-70c0-6b31-e82224185aa7,1384444909,12868747458591949181
+598168eb-0e5f-bd48-4df9-b011ae24a1c4,1161582415,10442915948195735219
+07edd8e3-530b-db72-cd77-559139cec170,2812560485,18392175062381783615
+94afb2ba-594a-3b70-fbd8-690c69c7d078,563151004,495056522044564795
+6f2dc6b3-6eb9-b5b0-70e0-e2f03235d32f,1084394810,12872578604813714668
+355bbad7-fb66-532c-10ff-2f38be8168cf,2027994341,17425529339158823627
+6d77e236-6e3c-c4b7-7e7e-d631afd5a56e,3498559648,7738682746433858612
+26ef5a4c-6335-7242-eace-263a7892632f,2064485090,3201037970070604232
+1f6d59e7-c8d3-7b64-6fed-55e733707836,180220108,2625627545978680008
+9f2db5de-6314-686a-e21e-a9b2010d6609,1469327585,13398577974694270960
+be37d83d-b151-a9f9-92f7-90b5109debc0,3240090513,3003917570712826846
+f250cc8a-9722-8d82-bbd0-bcaedf98c80f,713483100,5185144930138100520
+727d680f-feec-36a5-e457-b4696e706102,2199665417,10250248713955765027
+b87a1285-8cac-a915-92b4-51a1bd1792f2,136544556,3786615295895096297
+9228e524-bcc4-eb09-8816-8b435a5dfc0d,1740964406,1182207521309317367
+487c7153-0713-f8a1-304d-639db3152fb2,2364356340,8114385399974285506
+32eb3d58-447d-65cc-060c-9073777d540d,352516514,10691116899316772772
+ea7293ac-2bd3-bc29-a530-df74948708cd,1513490923,7485829261833525377
+9aa16df9-f149-7c29-4d6c-ccc2444d9db4,66503641,9158156845422057183
+685fa6b6-0c32-99ea-ff53-d6c4a4b31499,2422735034,1708983605648730559
+554be498-76d1-c6dd-74af-ea70d556f780,3047638733,10692674324270711996
+92abf1b2-9587-67e0-57ce-f462c81aee93,3243747880,18426912364870964856
+19bbe35f-cdc3-665d-3658-1378011a7591,2128042643,10599196966147104942
+d09536c8-5786-2043-d856-24702ab6842a,3087883199,7320921623391895247
+d781f7f6-1878-b9c6-5a1b-b4bb2a0e6fa1,1284834546,9124730704902341752
+ec9f6d4d-9e52-09f3-1445-bf0e7aff1c53,514059251,2944704521223056021
+82f15a99-40ac-5af6-059f-2bf0119992b5,3351982956,10447496018929413381
+d8610180-aada-e527-e870-7b2add1ad83e,4020055588,493799357671852338
+ad8616f0-25fe-922a-6070-75b0af7243ac,3232705574,306309006478725455
+11c10991-4e6d-fc8e-7d8d-a88f5ad480f7,1445770393,15720824656341197045
+03ba0ae4-33cb-4f97-8617-7a9dab728a7a,167061813,13328349862387276277
+2a3621fc-de09-0389-fc49-25776a8ea716,2997673738,1318345930750462923
+9fd36888-12ba-84c9-8847-d2818d9efe05,2005459311,9933936885090002515
+e2c3e302-7c86-b487-7159-7d0456fef1f6,3230871258,7551222111291310249
+1ea2a5c2-513c-426d-2acd-14396af8a1a3,4172307947,2525559434585186689
+0c213a49-0a39-34ac-b55a-1afb58475286,2616774167,17452352674245368678
+ce477351-9437-9b71-4161-783add7e07a1,2239851652,7624447319194964424
+81c061ca-d464-8d69-4d1d-87adb153b96d,2238220470,13629744609682722489
+0062c2f4-3be6-31ac-df22-00a30600bbcb,1293577626,18410878360982825310
+584736f0-1d3d-da5b-6435-3aef21453aeb,308448708,12724719732583382956
+e058201c-d329-6bfd-2203-ac3da7e8f557,3834414549,12408557837039554089
+88841ee4-e54e-ff8e-55e1-293bc607acfd,1096516087,2091322436104160946
+cc5cc49e-2e0b-9a47-de5e-4889131bdfa1,649565031,1418128789850851407
+d13102ca-a555-5fe6-a019-00859ff06bfa,2212978467,1252366624272989809
+50e623b4-a3bd-5c0f-5de6-c07538744bdd,4257436403,11831320292424737598
+249d0110-63be-ee86-d2d2-61268bc610b6,2797873135,10664971807193580445
+838b3bef-564b-c8e0-67c9-669f4606c03c,676600325,1790200607918284312
+8701e729-9897-9723-9cb9-a13b6cb70d88,3448822636,1857523952377190423
+64521135-eba8-201c-91e9-5737a62107df,1491053861,9457688093410498841
+0f6b2ce3-7e5d-2352-91a6-1c713b8aff72,1999590588,12170643935875268663
+fbf0e787-edc8-16e6-a16f-78b46b4406e5,3697785699,15167794252541954831
+31eee5fb-197d-6c1d-6231-1177dec2cc40,3484208474,15014360808166344774
+d2d34548-faaf-01bc-98e3-7fea3cf5d50f,2892829315,519472102638587163
+1cd164b6-b64a-db50-4374-2267d8ccedf2,2416702133,607501241065566890
+eb35055d-0599-16fb-3f16-5f4656de30d5,4222669930,4027199521533337922
+906d238f-a08c-efa6-7d7b-70d46046d043,1497081531,18092738594588331698
+abbd14cd-a0d6-e4b9-b017-4ec85fe1f1f4,456702414,7793126313568767490
+f7bfff5f-6ec8-8f2a-dc0a-62426d5471ff,1110666625,7176728599951069019
+03cc85a0-5a93-ec4d-ec77-f2f58cab3380,3879053727,15623152196960060444
+0911125b-9e4f-a128-dbe8-1f3ec254cb57,4070026152,15409662175420453863
+ba4d5f3d-32da-ed74-1e94-a3ca2d6b0c24,839588227,4964659511627364075
+0e504ef2-d49a-c239-468b-bbcda2c8f0ae,2431578210,3789679987739367425
+674d19e6-5ce4-5031-7042-0f7de75cd8f7,2142631143,10309118368557241007
+076f56f7-392e-a125-991a-e051bdec98e3,3375494934,9122149506999818026
+a494c6d8-32c4-3308-5ebc-05f640da5bbe,2581741926,15622244276432248162
+269a31b9-70e4-7af7-1789-141a4bd922f4,2557324949,9643158818577536914
+33bbdd3f-4479-292e-02c1-26af35d9e690,3242190140,6651803713435422169
+fa82e093-e286-46e9-117f-6b7f8e7a8c4d,1508994742,15516406209519491173
+6e7a6126-7a91-8c09-b5ae-e1da6c6efa99,2943219117,6897503177796969502
+d6564ab0-4956-b4cf-0ba7-8b345d8cf3f0,18520599,599947995365502143
+7b285962-43d0-aa1b-08ca-1ace13030c27,3072130599,14813583419281831753
+c36c270d-fa11-3636-22b4-bc50b01c6ce2,2492877354,5137013831401588976
+498e6a9d-e8b6-e7dc-0371-00654145a340,1923198230,8844347343829811586
+5e0d1dc4-8230-ee42-ac68-543080d7b07a,286663756,11298398011090884119
+4c1ab2d2-2384-0da8-31ae-823aaf35a4f6,2767846087,1411466923319204006
+54647e21-f99d-d734-e8dd-e7500192e10c,1413904629,3024163446443998354
+816766fa-a023-bbed-27b9-94ccbdd97492,553872302,4120539629614606279
+b0d52d0a-abac-9349-e4f2-332b29a43d66,3289197410,2333602464876253750
+1eb8fdff-9e44-2833-c8fa-98f04079cef7,1741642241,2735002003901439415
+8df7568a-da45-a5f9-25bb-42d82b8ef427,3337824777,7390175733432809304
+c07e62d5-27b5-5fd5-96db-7d5369e342ad,3236098261,17174770698232817003
+6599e81c-307a-83fb-0773-fbcfb44f4483,4131860421,14476880858721478462
+7e9c9d1f-468d-512c-6605-366aa1e53118,2585657626,6047490046198708177
+fdc5894f-e7a5-7a80-1d4a-a744d4884745,1774961238,6884328358105934431
+2a0c5017-5941-f6f3-b528-a972b4a60a1c,4283662749,3177893371125426842
+fc086a63-ffca-335e-40ab-ee1ffb8ea90a,3911465280,16620416946231843467
+66adb658-a743-e4e5-1d01-5c5ddd85683a,4105986502,1972104481202946600
+c9920242-c053-b8b9-48bb-63e1d637c9ae,3295800949,4278795706651375223
+5be4515e-4c99-f963-330a-a78c610b3697,3539502697,328984018247075694
+f710b46b-838b-a89c-655f-210290327aa7,3411136570,5446083944259212817
+768c7596-e01b-7a6f-271f-f096a1513f9f,4244759196,8874879269033323646
+9bd8e5b7-0927-7b3a-dee5-dfa2c360d582,2363631599,5805979666861935033
+4d789e19-d627-ddd4-15cc-8d3fc748ea96,2657080972,2957731355349658235
+82cad261-944f-cd4f-69d6-ffefaa48c29a,3594880594,14005207737029100393
+7f93e54a-50cc-6f07-bf40-145fcf1f95b5,1025253178,16052545071787510695
+d0421cd2-e8c4-c895-2d24-c2f1539c82ee,2337977683,15510951446510385048
+b4e17db4-a4cd-4c53-28f2-ed526ae7f1f9,1871420477,3765576236715099978
+31c5d262-2d2e-4ec8-0675-4209165474bb,1213063912,11111130737511331043
+d948c6d8-3289-fe6e-0b6f-38bcf45804d9,701725479,17005104657295383199
+cacce18f-a4a2-1826-a895-126cabecedcc,1451050284,11443123971396159607
+cf3f5783-97f7-a3cf-f2fa-a5b7336cd26e,4260872666,9858311539939914824
+3a516c8b-88c1-e76a-8945-23040bb1e8a7,76753842,6178316324168815904
+8340717c-b02b-f010-0363-bdd5458f6a18,352055434,2696382246641576794
+4c11ae7c-a537-3a1d-c7ae-f20ef06b136b,2165975817,2920374284067930943
+ec83c4a4-899f-4202-88b4-c80b286d0452,1071529983,7075553873293425051
+85ae60ce-9760-0e3b-e6c1-884406414bb0,2299462289,2296351611502822240
+06502bb7-a435-a0e0-03be-528816e60e3d,1910072660,4344635229352519961
+e9874cd4-5121-8310-d4fa-81159b0e1001,2156571467,7469858217193669790
+145186ec-3c18-91e2-5085-4a141061d3db,1257251580,4259031250169831251
+663d9099-f8dc-275f-b2f9-9842faad5334,2625274574,6883264653882980483
+cce0de38-5c60-0bd0-59f0-7ddb2959b5e3,1672472276,6579429469808187239
+f2cb864f-d020-8e63-01b0-17259abf2ca0,3583099485,10390646733503096927
+2fa1d559-5231-037b-b51c-5ea63b3b6ac2,1499459790,16767314815396697784
+51e7d000-e10c-2cb1-cfc4-de31f4f10802,378235895,3010766530810982255
+85d2133e-00ce-70e5-5091-075397edea59,2494299566,11376085936300115555
+aa41d37b-d081-f769-d44a-88f3142732e1,1518633319,8153512323380711929
+3aca67af-bf7a-859b-ac21-5dccef34395a,2948568891,5859767348876433459
+ae072393-d702-c501-fb4e-171dd1084213,2027110528,7103438906584642100
+74f006a9-d48f-ba2c-8626-177afff98b10,2214711555,3824496016451669474
+2d7aed20-fd2c-649b-2081-ac636a4f7fda,3652260027,14955063699181639521
+c6175160-211e-6f5c-b6e4-a8ef246f1332,1370299337,2863575840997393184
+7f7bed7d-9197-c466-0445-676eac3ca9dd,3987326849,3995789801029975946
+eadb0ed0-6d99-8754-5124-81d3e2665089,3197596586,7746745274153510794
+9a386d37-c18a-8859-26df-56228f0aa2e0,3585371248,15338106282551380650
+81575797-deb7-b85e-efec-f29dc63695e7,1521186173,1883816129932416575
+0ac5bb1e-3703-afa6-3e93-d614c888f5dd,678376094,1505486716998697928
+e2ebe62a-6f3f-0c2d-5ac5-5b17d0ff09bd,3267518771,13911553220329086769
+c37cd00c-8f04-545f-5ec9-86825c3db365,723187578,8619433329557534755
+d7981506-c7b6-6224-8fc5-bb5dd9e938fe,2488579520,427716704639294910
+e6dd37c9-2488-8cdd-ae0c-ec0a89ac989b,3932419955,13458886906141865882
+d07c075b-9a96-8304-b127-57607dc69247,847369451,1126948815625182514
+75961fa4-41f6-3671-ace3-3632d0f0358b,396427154,6768913989922920990
+c3d31b87-3622-826e-59d1-5fabcafa4a3b,1085266129,14008325165584790581
+1ff20e54-8140-84c0-5dd6-a03538f36906,3085921772,11080754361367309660
+8a8705a7-7361-776b-a9ee-b681e23b37b2,3863489898,17512493642718985743
+0122a561-aa91-a58e-2a12-a904a213ad44,3480459515,15642654929695408825
+73fbc73c-0e4c-f02f-fb82-669f27eb67e1,800870264,11725614062384458546
+2458e0c8-355f-556e-f04d-7283b81bccf6,698659081,4713930581390193240
+6e1418de-8830-3a47-c56a-060069886a28,3037338913,5581060892591368947
+4cd9a266-ed55-1e8f-3e86-371dd4a59b93,1135767121,6221906867757917385
+652fe298-94cf-947b-7c32-27aa6d81647d,95570895,13830351465117190638
+89820834-dab6-cd9e-47d9-0e173e6ad5de,165477559,5717587921898799919
+00b01bef-0f98-a564-e6dd-b6f3effd0f90,243347327,9851457302873614225
+1a168755-a0e4-a119-5dae-ce155254b28d,1897140001,9695664905942615668
+b134f3bb-5175-5e86-239b-b7ad20ffc742,3004855389,16010673048919780819
+5b7070f0-f054-1842-b510-8dec697aadf3,120813539,15582452602344066232
+26b0e8c4-c467-f233-632f-524cca73d030,4124210252,4410627042285804211
+bd4cdd2f-0dcc-a1f7-24db-b1bcdb3d2fd2,1230164484,7077022962753328442
+4e10e52f-6896-bbf3-ed60-cc554369a4cc,3794298747,5574495454262407134
+251d562d-c07b-44c2-b58b-0ed3cddd0171,554006146,824522274154594088
+431f8c76-94e4-e359-22e9-36ad7c7f9fad,1409328979,10610829208872869302
+25920113-f716-5e54-aa59-991809b667ca,613529250,15140208134386198271
+a81bd5de-3988-772c-0b31-c71656776a99,4210550905,4697447351190797681
+1de55a32-334e-3650-930c-273551254014,2490228208,13674402798898688677
+beaf214c-8bcc-752c-7cff-1213e2abb6b0,376562710,18144806941875655316
+54776e6d-95d8-47d2-2622-cd9163d98c63,866075548,8804853678260070068
+b3a17a16-ac8f-fdb3-f8fd-67e34a032d8f,413668170,18113462283914850551
+b3083c2d-6a90-5fa6-a550-52921925b585,2334769509,10076639055169480908
+527e0b56-3b5e-9334-6511-632885fc99f0,1287383864,6271856103906008424
+8db737b6-aa39-e9ca-75dd-a6d4da0eca67,3279613387,9240707072777098493
+e9c6d67f-413e-19d5-dbae-a33a38dc5e8e,4156375357,10731572102387979457
+9bfed1c3-692e-7130-12de-696ef680e47b,2974021817,16180583256974529979
+d936c010-a8f8-7cae-5503-136acab1ec44,1413112668,7880713387463525326
+5ad885c2-2882-8381-f0d7-792b46ea54a8,1004900190,16591719233701825459
+bd165f43-9e9f-bd6f-f460-ebb023fb83b1,4120963752,8239964053981838661
+5757047d-9b20-f433-182b-4404fcdb9438,4282071909,11174041697014799609
+35222142-4bac-d758-4e7c-5cb919308baa,1344937108,14998891253591494409
+a212acad-86da-82f3-1639-83e17d1a18ee,2897883307,12236523812975428749
+2161892c-aec4-aead-c651-dc249131ae62,3873294441,13571248101496926874
+d6a4a60c-370b-7573-da6a-8387b6e94d70,894306773,15527785618552094595
+09552e90-2492-0199-1dc1-f0b1e381b765,1099501828,743283546167239635
+da8a888e-bf4b-edaf-1065-00d75bcd4f0e,2268248455,14113747789318645356
+900b07a8-645e-b112-ad22-f6bf5d309f20,2947645426,7988027069400946275
+b4b51dbc-021c-aaff-11e9-f22a980afcf7,3335103921,6739142910497881803
+10cbcecf-5559-ecad-02b0-e242696d4a29,3507840562,11725803972057006638
+7ec390de-6a32-4a4e-129d-a528077ac834,7728752,5428855941374891252
+cc8cc1f9-34f5-18b1-31ce-89819f5c329b,1126493501,10767744171161999205
+aa8fc0e5-cfd2-2e22-a0de-5a0f2000bae4,1567245537,7209663043315445406
+ab39eaed-016c-c0eb-ca8e-cd3431507537,163777400,14351396394701559436
+854fc017-6bae-4032-ec5b-d680d45c71b0,3865973363,12516759163630144028
+2c314b6f-0b7b-89e4-264e-fcb164137b73,2554114139,5079006816889314677
+d3743bc7-5414-0cc1-f13d-63e355f49ae3,965392324,5506649734496376233
+6d33bb8d-737a-cffc-2f46-2f998e8a30b6,1849328637,15871985633526574841
+8aa47b9b-e47e-457e-4552-9a318b787385,3728909249,4307538520923042147
+87d9941f-2644-ceaf-8b1c-36f737cf918d,3909444241,14976763837693583104
+0a96ba68-10f4-7c30-2b54-2e676777defc,3867213472,9205960877547686050
+2ac69930-dc11-d0b3-6d5a-5b80d1f6236b,167798019,15131172242483047283
+3fd05ef8-4f7d-a881-178d-1df0c21fe231,432384552,10043647379980173566
+b20cb1d3-5bfc-3d9e-da84-afaa4cc90452,2935912088,677627421126718418
+50535132-5005-d1f9-f320-809acbeff741,977606804,7851769960398232344
+04b705b6-d6be-575c-cfa4-267fdef8c2c8,2094835008,803397824199582109
+f40d6971-19b1-09f6-593e-1bb2c4a2d323,3486275547,16772851708791469871
+5cfb90b7-99fc-7ea8-c8b0-1ab698ac46a1,359343761,119195053285229476
+3b0b1140-2d87-ec82-1992-bc1a786f5877,1526811464,11443012647083914362
+a0527c3c-63f5-360e-d30b-f0cd030f4fc5,2391645429,3172902024387859885
+d49a37c8-8c02-98b6-d44e-0c2c4e6d7c2c,3154821740,4300932858476399565
+ddf68a37-81e6-03f2-a15f-924348c27315,1621474641,13252324619006496396
+26ec385a-473b-6e7c-2370-e8f89cb6e87c,2074294058,12422383775739492293
+9a2411a2-d031-3b72-f49d-11c0da36277e,3713137587,11290469496309863484
+4077fa16-77ae-574e-edc6-a479261b5e32,3724695110,5875311835926767866
+547538d4-3981-f4c6-c9be-c2bb623ecb90,882541403,17161796697731210632
+a9ace93c-0a0e-4eab-5b15-bd78a3184a6b,3808175450,14338974129257486642
+2d2a2463-6119-45e5-d006-28251eaa1457,3999038750,9493781547859727709
+65026067-8a85-0194-5095-b66611410af2,3189794471,9654786628203081683
+406c2a6c-c1ff-7347-23a4-1494e4f168fe,2913502011,5083580188617895367
+3d061677-94b4-f8b6-5f69-b1611ac9cc0e,2337825799,1471866051450200495
+f90715e7-78db-6953-ba9c-5c9ff54e319b,3476818410,2248023832853846861
+0af257d4-64c0-1de5-2f31-6c1e67c49d05,2404031413,273290002887042274
+539fb0ad-886b-100c-06f9-e04f56dc4d62,2014842224,3778691240001586348
+96fa546e-7fd3-8631-59e9-9900ef65d0e2,1264770628,3272610984037771043
+1671928e-3640-ea63-8986-1206b8c92a08,2074274023,190712322292733700
+2bc3b3b8-ee94-a7ea-ca5e-ab3f24d75e16,3052301998,9230029581196554961
+47b7886f-9197-6c54-43d5-b2d9b645b441,2861243269,6204966556884789898
+6509569a-3976-ab71-5fe2-55b2f9017c46,3665440946,12156737000688210761
+5b806c8c-79c4-e1b6-4857-c9355da918d8,628241566,10643938101358935043
+b68b4f57-f845-b466-c6a9-640defc31ff1,2670407880,3772207136721852294
+c524c6ed-3a07-4c3a-dc54-9f591c32f844,412192561,14427358192770712840
+2034fa55-97b2-62b8-c6e5-dd9442f88c2a,1743995699,14840153958432405505
+cc52fa8a-78ec-9883-eea8-e58d3992bf55,772019589,9258083303508770111
+8fdf2746-64a4-3534-631f-911a632b587c,2728741863,2662432053675163927
+aabd6c39-3750-6899-52aa-f8739adf5a0c,970347520,10904286546611866117
+3f45b0bf-afb7-4bdd-36cf-8c2597b61f0a,2852257529,404521188740594622
+5ba84394-19d8-047c-11c6-e661611d9eca,2399285809,8153785307706457566
+e6bdd8dd-0394-8cb6-72a9-fc8260001ab4,34946846,4044286479291409201
+e50894ba-8bb7-7a09-343c-e59cabb53d40,2231174516,3337494251620526897
+2bcf3837-87d6-6a6f-6e3e-9b98243c68bd,3351708465,1305054623463162264
+ff3071bd-1082-dc1d-4ed8-3fcc7803d370,1295305111,12015831655103183638
+51535d19-5de9-58cc-f09e-f82335cdb3df,2122426948,2896612068363519131
+d8a123e3-85dc-1a6e-bf35-d006ce7b66f1,4202284002,5101523623790920340
+854734b9-f800-218d-1c40-6c77f3e64c92,3136946060,18086727073149607122
+efa754c4-9fe5-0e81-49b7-9f8c00a688f7,4251737748,5151013355439997871
+9e0fd6e8-a37b-254c-955b-e6d67bcbc883,288395847,6575532773869638176
+43b331b8-5c1b-f793-803d-6f7690ca66fe,4272633315,15593940056544915198
+4a973bc8-518e-103e-a1cc-5a4eab67a34f,4046690216,9992528800473735613
+7d2c1e2d-3dbe-1572-8b48-c82e93e40392,2887625429,17475882759490290879
+5fe025ee-1051-2fd8-2061-8221a7627ba6,1553761983,3845879127184863965
+27dec89b-1870-383b-ec4c-43de3e27b572,1449282818,9736219165673185503
+7eb7f5eb-be84-e1ad-f4d5-d0fe04baaa6a,1932823292,17883518205868192209
+b106b3e7-9706-605b-b0c2-54e118ca099e,2832926703,12943577264345014847
+10800aeb-e3a0-8a56-3cba-872ab7fac52b,2473036460,2758023272865670666
+105b8dea-cffc-6ce8-83a2-56c847f61bb0,184109105,4828521777793720112
+f29b025e-4cbc-d6d7-7cda-e246bcb94e4e,3481256354,2425095115817831260
+97776e3f-9fcc-72e7-3883-284b00f156c1,2051670681,16297712391124950266
+635d1078-6340-6d8f-291a-8f0daf5de6cc,1859593479,7753942070090172588
+4d1d56fe-88f1-c1f0-00f0-57ece589a15b,3082624990,17776503009735594517
+f5d3fdde-9312-bc97-8cd7-4aa35b125305,4019174746,3601818896538487008
+fcd99955-b1d2-d35e-0cb0-a2695ace6715,1740398813,2585002453601534102
+36072afe-321c-eec3-ee01-dec8d98df781,4271548796,81810835602182263
+90f284ed-038b-6d49-e9fc-077f176e7774,885721335,16217359421234965519
+9dd61f60-b609-8c5e-89f2-c74d80df1c71,1062034321,17866839002780300276
+43b98d5d-456c-3923-617b-f282d9b144bd,1543215910,9388577668058018611
+97820873-fb7e-0434-6273-7afbe49a9751,1225082021,9607823488475365746
+64db5c05-ec6b-cf2c-e199-d8fab0f98b36,2342282139,16354415754875352103
+a7f3a9a1-2ae0-16ec-ceeb-b98e0b1eef0e,2348369524,18096968566396270533
+f58b6c60-523c-cd6b-aa63-854af76c8a2e,3528024003,7532342580729255478
+274f12ae-e2a5-f74f-7358-a2b3fa4a3b4e,644426856,12794620331913622170
+002535db-941f-edc5-e3b5-80076fcbedc4,2890625364,10961188522745828528
+1726dafe-eab8-b6c6-0ccf-2f62234c8592,4067979934,8548607616995672359
+dc78ac44-61ff-b06c-87c8-68410cb92053,147385742,8753743276109852590
+1fc10d01-0947-ad7e-69ab-0d86f8e5d327,2295947073,14596458786855582098
+aae999fd-4af0-fc02-e3de-9ff2006fe67b,1433555290,10879178746688090238
+dca4a409-3250-2746-1007-7f5d15057056,3781186549,1302495651429499676
+95cb068f-b520-8e3b-e255-6b82358aa134,3767072573,11674111330475997096
+de705a93-7ee8-00bd-cdc8-50232b5b01e8,1058895426,3244754176559783017
+d026ba33-89af-df1c-c48a-f8f258260c33,3101292534,7880490083523059770
+7fe66f66-7c68-bdcc-6e28-b06216129f6d,925305365,5287542696442987057
+611d763b-e2f2-3d99-f124-3b0af5204b5f,2895877679,17428735949397418482
+1651e494-ccbd-1b31-8f34-352392ea7ef1,716160502,3749417827939793699
+5afcfd33-021a-5b92-43af-59a39a8750a3,3632977064,14103379151411039279
+5362065c-a8fc-506b-2606-48d29aab5bff,4162098175,8609140268237010964
+e314c2e1-4380-197a-d566-6c8ab98e4e09,514617647,4033997363713960497
+f8bff94e-b23d-9f7e-12b1-49e7200fede1,3830066655,15289484416565728886
+7fe108f7-2f7a-9fca-46c6-e89fd6377f25,1037260756,5519659216994963715
+6f9d6043-b554-aec4-1676-a16bd0f914fe,4252589050,2111856916505555395
+379ea7af-d786-c0c6-85c8-03d8cb58f920,1073606684,4492473307701238043
+d7d4c1dc-0fc7-9d4e-5ec5-c873b911683f,3125919398,7950904476527500097
+186fb53a-4c73-ba7d-be79-87cf2d9068dd,2786076607,14542520366405734872
+11131c50-ea79-e8b7-2adb-f870c23251b8,1052625397,14035380921902507447
+e664415a-8e95-96c0-1260-5de858130898,2169500701,10144356572926545704
+0ebb3111-4a09-40cf-7c5e-9ce155c41b68,1007244912,186785608715049346
+ce9e9d3e-b6de-49f9-3b48-241bbb0dc821,2855524499,5320468080828541145
+f4eb8328-1d33-1b11-df01-24878feeba5f,4039718853,17805359167078282340
+e24366dd-d578-77d4-7644-7605bd735f9c,4037029657,1263450879512012843
+269bf224-f54f-a4e6-7e02-07557905a3b5,3568610810,11836092193055322655
+75a6303d-c05a-3d46-0dad-fe10f53ec9a1,1339466289,2982437245787760856
+3aa5f750-7ab5-52cf-d630-862f9f7e6327,427808168,2509083384029196903
+f06dd4f0-247f-431f-4606-5b21ca578ef2,3024621538,12255358234770903241
+e2fe8e30-e954-64d5-0043-73364857b8e2,3307242130,17297534531310827970
+7b5aabe3-8f09-62a1-f1d5-5848006ef7ef,2190557173,12885795465936360470
+45cbecc3-12c7-83e3-18cf-1dcb2b94abde,1243231351,5779157694545179114
+8ace2aea-4df4-6315-6cbe-7b3eeb2f380f,1944386562,9114106606584066906
+5b6c62e3-5a04-3adb-062f-d2bc419ad223,886479856,10621827285236496106
+f5c38d25-78f9-85cb-c96e-052f2e06fa78,65774849,451649604529030662
+c3403c93-01b0-3091-07c2-098718848eba,1651294566,11672221663353812882
+f4479c92-d0fe-8e75-82d7-1b6ee76c4bb4,874462926,9328769457247787663
+9e3334aa-67e7-05b4-3ab3-d15c39a8fd79,1500333558,3399051166138933933
+927813e2-1295-38ba-2df9-b15dbd6b2306,3828367199,5680850741701672040
+a8b4c08c-0cb1-36f3-7267-83f94271ebc8,562038342,7936266297564232213
+9ad1e3c1-3b7b-308e-a049-056cbfbf36e9,4057296377,3507514243693434078
+13795c56-c8d2-f994-bb65-3b87ac61d67c,2939754665,12825915738156616716
+08c3804f-92c3-2a04-c2ab-a8be9c7ff6b7,3822215989,17056583743956977750
+0ddc1707-1cb4-e47c-185f-d4b07201bbe0,1179907513,1935506816548785771
+ae89d162-78fe-ee31-68b6-74bd1e736f03,2182440103,6607569478426246333
+e3dc807f-1453-12b3-2239-22a3bfe437f5,1440584740,6813262870176368371
+140e132d-4d5b-dbbe-9705-f4875957967b,3836291023,11082316044989735031
+f5e8ec3d-48db-4ec6-bf38-6d2d2c0b55ac,2716166688,17882877698890527584
+be4df259-5612-d38b-9e67-58c4d24d9629,477136860,15356630827121431468
+08f3694c-d986-dd48-434f-47728ca9aa32,2258431261,14737930784771692687
+25686274-9122-4a65-ce56-8081151e901b,820647386,1817871563600108257
+65fa550e-1916-06e5-e0e6-27aaaf72fcde,361673272,1963125733704242493
+8127b04f-99ea-8549-1274-0ab2a1aa2df1,777888737,11402241683801216252
+a8ecd719-704a-68a5-7b0d-b72da9c80f22,1520702141,9315530684074113276
+5b962139-43af-def0-5069-4c007b1366f1,4030255817,11592430507329967877
+b8e00c05-8b93-afbe-7b6b-0e1f56711261,701865929,1723593934713308075
+f112b7b8-3073-2005-9aea-68549d014dc4,3671982061,16088455984082778742
+ccbc10eb-d829-c725-5fc8-f41ad4b2c0f5,673040944,5932523044208808173
+577a7fd1-4f33-0414-01d4-c78299175d43,3539510044,5537372554825780842
+65ef0d41-f979-44ca-0da2-b7b7a0fb539d,4026957237,13858416012489426772
+a7fdebd9-74b8-2666-d511-a1fc3a6a352b,1014890515,13754450586237242781
+b9665206-d764-5fd0-73fd-cd9871ced614,2936149955,15431670774993058188
+4e45c287-1e01-9613-c646-d4ac3e7ef135,252963955,6318277818823558133
+1b870c85-155a-a664-d46f-9f38bc07ae89,1722622102,14633645109950975783
+83a3c4b8-8926-2177-4d52-a3224a21d0bd,3649663807,15169424224483830188
+c32cee8c-ac6c-df3f-752c-09fb4981d51f,3264370061,1549328771221583995
+7bba7e61-d27f-4be9-e2b8-447a291d4bd9,645567458,13136007745464961564
+d6e8bba8-6914-2567-3415-891ab2349a72,2533584566,17762859376941624274
+e15ab73a-8826-4fb5-6bab-594182a3e76f,3253905859,3628961635429778539
+a1134e85-2b93-c072-f362-5d45e83ecf9b,3047083753,4713906659010755581
+87ae68e3-57df-e38b-1781-350d46f09aec,2856964847,17493092517760553279
+5df69b1f-4eae-6f98-3985-e99a9d366354,2577023169,9079451785152397031
+bde60ed7-e935-dfd1-6bb8-77f4aec823b1,1182956681,11807596245924374798
+93d8e05f-06be-436f-1525-4b8ad8eeeb4a,328403412,1522133520207021083
+97c31e9e-36e5-b3d3-bd80-54b4541b7cc9,697732374,10386641238926258466
+745039ce-24ac-2bc2-3552-e4346940aec4,2558929762,17873219244522236190
+03f94a2f-1e94-1fe1-904e-31ccacc744ac,2143437836,10140605863829624062
+2ed8d6a8-9fc3-47b1-cb9f-5879994f5148,1009035831,18086512074096732423
+356d7156-2073-a784-323f-80049959e6f1,2535484442,14393199081027916074
+81098d34-01b4-9353-ffff-9c09742e0a0b,74993209,8131272662271721798
+0604a749-e2f0-8098-5ff1-4f7bc9f816ea,1775290084,2372360184477653574
+97731164-e352-73f9-40c6-8f4ae5fb68bd,1605237963,13583912215143983899
+b0e81c61-f558-6874-a3a4-3af630afce40,3288538800,6467013338010519444
+fd7da2a8-b7ba-9706-2f60-9fa3fd32e248,1385931986,8684303164021023902
+51e92a21-e771-42d4-2993-5fa2c51fd809,192124197,3357929478333859286
+fa238cbe-d883-48cf-e137-6c10f8052e24,4275248660,9220145362319395470
+f046727b-c3c9-2a5c-267b-c5ae88a19730,1597997460,3700020646518737610
+035a7783-012b-5087-2379-ffe8b9e06cbe,1604722887,12021065523994694357
+538a2f31-e0ee-b8fa-09ef-5a83c9a43b15,3654562978,15596650429765658668
+ad9b1b4e-996a-a28c-247d-f55351ba0b9c,566559274,1534096379764374039
+8ad7443a-f100-f83d-7dfc-1942f9ebe44b,2879307230,12775922085126551860
+6deeada5-14b3-98d9-e799-a7836b701f98,1795681110,13804789681809771828
+73caff66-3fae-3a6a-2ef4-b01228c5373f,3546247958,4004124175652309969
+16f40a8b-5000-3a47-c5c6-b314e22cc482,3215211297,4468220557283319580
+5696462a-e6fd-e18d-e96a-890b2a1c2eb6,3844225853,18310784679415156158
+5f9e9eb1-1f39-656b-77e2-73dec9273223,3859362712,12246925306357072399
+5ace9256-1448-5c59-538d-ce2b4a308db4,1157368714,11086101333949440836
+4b55b3c0-9d83-b1e0-ac31-ad1c0cc6ae3c,1716092048,16297941458825338786
+1ab0b27e-354a-7b04-2e9c-ceee712c4bc0,2390241008,17927527558976170626
+1409177c-0a76-df16-f287-e7d94fb3b242,2653641572,17892238551838613785
+6a990ccb-bb04-e990-a0bb-a4d83f2945f3,197626741,11010221637805162461
+00d5988b-db90-74fa-3840-43251ec3a239,1196697119,3831666712272339815
+a6b1f984-6e0e-5848-94a4-a203f3198ccf,2222904675,6347094582188406091
+d25ca464-08a7-953b-07a9-e6aaeadd5fc5,3986215863,1330389793261675950
+69b5b3bb-c447-c902-e4b2-22135038464e,1962831883,15038901436569125503
+50b4c81c-08eb-9347-5fae-881e57efbb4f,1765263474,13772308169247270338
+feb469e1-0d9c-535a-031e-01e74fca7d98,3010132269,15666149982399990515
+a5c26bc0-e85f-27c1-a950-fa6b9cf53260,148309502,532709416216877291
+c77e8951-c127-1479-7121-ab71eaa3139a,569891443,3105883685552540203
+5d6db7e1-2cff-ea6c-5412-e9c83e3ed619,553432976,18149502747097123024
+e602e665-e0e6-95eb-1b97-844edbb29b68,3215350296,7033079641434138190
+25d59100-3696-0797-93e7-69f7a51820f3,3579873431,12651449792691354375
+b25b69b4-9c42-abfb-e24c-6ecdf77e075c,4145895425,10539482545744522719
+f723daeb-91d9-ad91-667d-1e64a334a5f0,3391309617,15320306619844204026
+94190623-7b4d-4566-133a-d53b8a29f59b,2025538778,10122902785561885755
+1c117ce1-5fd8-e513-966e-b6ef7354d698,2761890183,4765770897250943767
+31eb7d08-d43c-70c6-0fc8-ae34be362f2e,1218422239,16354607893582142155
+1c8aa7e9-77b4-9cb4-ae1a-d7fcf0fb0e7a,2555902012,3440715154180128650
+bd8944af-9a76-1822-8355-a50675a0fb09,947599407,3085050199781539534
+324b275e-7646-e54c-f77c-3b1ffa1a3064,2580635451,2758547385902863419
+d733a430-e034-d295-22b5-2b7950fe014a,4289206398,2499089494760947396
+30fc4a2d-73a6-0308-bdcb-7b9dddf38d91,1557302178,8236517299390976046
+263d7d49-96f7-ec57-3c8a-bcdd3cf2719f,3385881371,14321352842309240001
+efb11305-46ab-df39-c7fc-39edf5a0db5e,4063765250,17464561033134593991
+aaabe1e4-ddfa-bd9e-8066-15d454982cc3,3302635892,7444473761893684444
+010a32f9-4a8e-3f4e-af73-12f316352d32,4198996250,2451827250831357332
+94bb72c9-eb8a-764c-ec86-bb42e7972ae0,777803373,14724944982613486253
+51ee2d77-b890-7bcc-b281-48b20d5e7f2d,3599624421,8993827746587534090
+933a6ceb-f224-ddaf-349d-df834b25a8e3,217275324,14311906452503523009
+048ff2c5-f3f7-bf84-5be2-ac64af9a89d6,3612092751,11687419222012811852
+715a9fb4-7cb3-b517-3acb-6f8436df9615,3862124543,5294392091023249093
+c43deb01-a628-d195-89ff-bf211dc12157,749410164,7839164081611587386
+6e24ec75-e08d-be6a-53e6-f2d6dcfcda5d,514897431,17438444020913914927
+b65905a3-b0eb-8c56-4e71-94e69e4fb8ef,4263460491,13133325401925148
+37fce47e-2bda-438a-92be-d3bf66264fb3,3691035922,15569662834872997129
+76feb3d5-075f-2707-cdf2-d0b259e98688,764791693,16076797630450192093
+457abec8-3b64-c317-29a4-869f060c7cf4,914367911,3367861000224579951
+6f41ac8e-c338-e504-f4a6-5f4d9f9ef702,4163743320,5516197231529479968
+eb71f5aa-159e-761b-8e34-1f61fa4955ef,3994090700,8871017372803438314
+6f6043c6-b058-2fc4-7b8a-67f4cbd2bf29,3401947763,9197207301874503831
+94cb0ddf-9d6e-5ddb-d369-8ce855b833b9,3577297649,448313392774795605
+d3d62bc2-9ece-2255-e7de-e4491a4bf6e7,3153492339,17706491666724745691
+e0eb97d2-39aa-410c-3997-a4848d772bab,2464376153,466184860710224632
+197b42a2-21ac-16d5-6a1f-09177f66fbcf,760037664,14096022780205285615
+85038507-6ead-bf72-05fa-56dc8c849b89,2414251435,10830027792318932297
+f9af44ce-f355-0fca-dff1-1404038bd689,783914580,17287176433088832802
+f8937e3a-15bf-1af3-cf93-0147d8913413,1066795145,4760513278781445511
+aa7ed586-097a-e8bd-713e-c529e41cb421,715260066,8594700223097979589
+ab697030-df0f-1d00-ae9d-281283ca59ad,903348246,7070459141278657387
+c9986b33-fb4b-2867-c165-b7588b9e760c,1030640016,16123206825410592630
+af8f3332-9b4f-ac20-0c03-05a22368790a,247844283,5083703699293426083
+f9d49779-6f57-7116-6b70-c5cfecd2369d,1103674715,15580368525036768875
+3eb2fcaf-95e4-6b64-2548-2270ab281100,3604657393,14988704632464565177
+1d04add6-dcaf-936d-0be4-5b392fa478f9,2942841722,9853420314448088732
+0cfae71e-9b99-626f-9261-bb7c0ed9ad3e,2745404536,7624591833587196392
+92ae1bdd-bb4d-361d-444e-da2343a513b7,3044113680,5812758994625357930
+16a09bf4-022b-b2b5-c25e-97de85dadf78,2082823337,9266672166432363674
+23b58022-86d4-71ea-3a04-7f4de43b16d1,1690761478,11362978878747357811
+c30e9305-1f96-061f-5149-d4e8b00c85c2,3902156618,11128402657738518611
+193d5e1c-8882-96ea-2568-072468f4e1e2,285431461,6611601662937257902
+210eb85b-d6c4-6bac-450c-3a956c37b022,2150040216,11324779799407333350
+0cc68578-6349-7d8c-9a0a-c2bbd0d54a9a,3683870681,9701997035646101939
+f645d8fb-8494-f71d-91f8-cd9e8485dbb4,814037269,2454929874510068715
+d4dce4d4-4fa8-767a-6974-22072f8d56b4,1725067274,5721366200173273218
+d1a1a419-65a0-10bb-e140-cdade86b91c6,3701417646,16469413534149667357
+0fbdfb1e-bf71-886c-fe77-e73f1b860e8e,1672189742,6782531222034614041
+208dee6a-74a4-4104-3ef7-fa7e225f8022,256544379,9483162425249764093
+03a3c280-8239-a3bc-0bf6-0e651b3f3a58,3492472746,595596434902109384
+5618bb64-acfe-e523-1dc8-27b2eabfd15a,1860476236,9676128168352242713
+71e3d8eb-4ee8-4b88-8ce7-ccad9f9365de,511396812,10039584885553653096
+374fb953-6d28-1cbd-f3df-c083e1ed7678,3774853905,10711311994894843259
+258649dd-63ee-61c3-8073-6dd3a19a809e,4166743773,11249343394712164895
+92f1f347-a994-d527-f643-4c2f369337f9,4203451994,15387979614370462625
+5378bc71-c81c-321b-96a8-217784d7e3e6,1826894673,2662937436076499323
+c9006449-4600-ec6c-16ec-970014bc867f,2332881787,3456735530428284168
+b805530b-4e74-79e5-45df-0e4172c4c75c,392548105,14666600367099551198
+b4b4d547-935f-a44e-0335-26f420366ffd,1481889142,2418642197658751723
+9253eed8-3d09-d6f0-8e40-af75987fc52e,1815214954,1589487963377062256
+8d1ecfeb-57ad-534c-b274-8d8a85f9329b,1973341936,14687493548229105719
+a866d000-9e77-8826-a4d0-39e4e58bf5ab,1720516134,15258248011991567169
+c023478e-572e-d116-c87d-682b46690611,2424526568,17401804030684803432
+5fcce9d1-77c0-acf9-9a03-89a299cd00b0,2163116130,648642595903985536
+a7866474-2e90-313a-519e-6fac44fabe59,1632768511,17082403568604894637
+f005a632-69a0-bb22-bfdf-c2460855b2be,1650126099,12123786086629943604
+ade91696-a0a4-a841-cb88-a36852ebb779,3832287408,12416810569440931152
+3d16cfaf-9786-7ece-0390-15957c95d38f,2999345705,4369023345767372950
+eca978a7-c208-e548-a70d-0ce28f21d634,1200582985,2801750474911380510
+a71914f3-ef31-3bdd-e3ea-b17237213205,3194282255,6379555324232725267
+2188b789-46a5-31ec-dde7-c22ac10a12a6,245562122,10225555058106707827
+69cd3e32-ccf3-d71a-0d3e-f9ad8dd7f80f,209388126,17431804620498984257
+4234dc33-3c02-53e6-1daa-09a3d9c1365c,1356639569,8750230717602167137
+5ceb23e3-5faa-5cd3-5351-a0d93a0ca131,3778639054,13379179116433106966
+e4f6d6ab-d879-a92a-7f91-289cc69819d3,762157577,12750607000768377518
+d81cf82a-402b-a19f-400e-55ea7ebf93bd,1752919907,11859029639906407878
+70c4a491-2dae-bacd-be72-e2be772c617a,593895285,2505902286064159597
+dac07d82-c50d-4269-b3eb-d3f1e5723c50,3897661956,1716916080088073527
+ea592b53-958c-4aa3-c2b6-c673882f7be6,3850597319,6162251127618488959
+346d3233-a4e1-ccd6-0396-73455a5ac67c,3465538781,5201567697804995636
+9bc38d2e-08c4-5c2f-947c-c0ea8e00b428,438023958,16917683704650352509
+eb966964-29c7-120d-7017-5707ca2896fc,1548190927,8976803946021501851
+314e0439-123a-9f8c-3d3b-4565f08b14e9,2563301078,13225584985317334925
+6ec118b5-038f-b6ec-e7be-11201ab023e4,942848761,7931122939438143502
+bb762f40-8fd6-4f94-3608-0563839477da,2837852402,12030593345945577595
+673cb46c-a16b-b35d-7118-dd9d244e786a,350577972,18085202260416499354
+730b6ddc-3c1d-119f-37b2-c9d60848c733,2670488973,8170773637433857054
+11d87154-9cb9-1f94-dff6-a1e74df96497,56729760,18403758441192510944
+bee05150-b6ab-673b-61b6-2b6adbf97636,2109019865,10052130276323574927
+cb960b77-0f99-347e-c7aa-c6106b12331c,3213011132,14264394038156395013
+54e20a87-3c8b-9a00-fc21-03ee05a78e20,4226432491,8062560328198500573
+dd9cb8de-7c6c-970c-f1f5-73f804fe2a44,2654502440,15166419038043852513
+82400f91-f296-b2b6-5af2-d40fffff9106,2866828265,3233664592455629666
+21c193eb-fd5c-fd42-4cf2-bf8eaf91c0a6,3253831755,7706830564015609895
+4e41892a-1916-7228-f9d4-af379fc224e6,1077947540,15091844556227300350
+4db9b60d-42b4-dec2-3d16-cfd732eed6a8,164139863,5526480889210685008
+1549c637-f123-2bc8-400d-6c875711b340,203376787,10184329730221360121
+748150ab-ad4a-90d8-a0c4-36b988ac8784,4143376343,10190526998022211384
+a8a92209-29d8-5eab-21d5-37c3247f52c8,951936072,14037101825676382785
+52864c06-06a5-2c66-8fc9-9d7221fc9fc5,851422108,3129763846728255193
+564b5831-7b55-aced-c8dc-3127b2069a6c,2282991471,1934975460727257126
+da3ffb94-bc80-f1cd-2112-0b7d7e3d3fba,2511512686,6601066897590815447
+e4036bde-b3d1-96ee-b42c-81a4729b8972,3742166178,9464079389288487648
+626a8042-2b1e-98f4-a7f6-ffcd5d90f0e0,3606249823,14356303175501529249
+87561db6-c58c-794e-0409-ca8369edfde4,207322321,5028045186040395316
+9445323c-abad-5864-de68-8bc3896e6c34,379170965,14216687463584307159
+44a49e24-93b3-f12a-dcb7-0826a65193cd,3882116794,2138838065104572786
+d0ee235c-41e9-085c-2d4c-3d193a49efa9,3547081151,18170462928410624388
+34e602fb-66f1-be31-9b92-0dcb1c5497c5,3945938395,6293175962227897897
+931c753c-1b7a-43c3-1181-f9cbfa5b27dd,174676697,10954563710403176281
+85f2149f-682e-8c64-43f1-7aef06581df3,3989410679,12113685378656957247
+d65302c2-7522-3042-404c-e75bb42289f8,583781979,17432932790959924698
+8fbb73be-cea3-b92f-39da-13394071124e,534407247,15364900614303279006
+0730637a-0fcd-abb2-c63e-bcd58ddc20b5,3871115886,4828901317898850680
+5ced0ba8-c256-6a6a-ba44-ee4506aba0f9,2528466407,7463442431045150306
+86fbcef2-5c61-d5e3-63ca-0c7e72729e82,730311315,4836167085749780220
+56a24d27-67f8-5ceb-5110-30900d48cb43,3516967277,7546972537457828499
+44a1567d-3c14-3307-4771-08624c2c3789,4289679845,11904304196499064901
+83b1f820-c189-3875-0154-a8e01d224232,83556930,2671479610263607711
+74d4343b-90d6-74a7-6ca9-4dd1cc5b41e6,4139379184,10578818327470209389
+4697b399-5086-bcf1-12e6-7e8c46641f7b,3548988538,5527558772514327163
+993253f3-2853-9366-a2d7-8541782bec97,773167641,13171319347948895118
+429717fc-6f4c-6711-b4be-0f2cc204a459,1843037958,16822783093036718523
+6baf0062-8a64-17a9-c36f-cd7a1cec9ead,1445543694,5916299239625199456
+4bdbb988-fece-1b1e-e993-2377a6bfc90a,1398380502,4141585955669283422
+20a94ddc-4d94-8124-80f8-b28a6da01a1e,1002535991,10247644895050464069
+33b4a106-941c-8b3f-73b4-83d62b57f279,795428014,9639464426322519371
+3dbccc8a-21bd-8f58-cf1e-ca29994ce375,147619623,6838553312376563236
+ae853059-ddde-9cb6-d739-7b827e7b99ca,1464007218,15083394730644070668
+e33515a6-bc93-579e-a05a-cce353cfd2dd,1125139953,17382395709049243204
+2ee740fa-3b04-b393-c03e-2a9a1f07942a,3704207690,9720843525212866124
+c51c1e11-4a75-33c5-d2e8-14f4ce6fc597,121690467,13881250253694565616
+9ef9b0aa-cbc1-d646-1062-0251e0df2c69,1654781012,10275726599616494435
+a089c044-0a33-9b6f-e191-627ef99f947b,2207216527,126344784425064383
+b7ba303d-295e-7c9e-667f-cd9978ba7350,781299186,13182189983006204436
+4dfd9593-3468-0348-05d4-70f5e25da6cd,1317360577,11219839830340645865
+a5488c63-1b19-bf91-df67-c0b633abb4e9,3657833912,1299412536404348583
+c00a30f5-cb4f-7d58-fcf4-7c9eae474d50,104912409,13517820615738095879
+86080661-202b-5326-ea81-22c80ccb69ff,1180703797,18303387631704467630
+5c327960-4f12-db14-c3c2-fe11a40de927,2238265005,16298467880767613587
+4a081464-dded-3b8b-7dfd-ddf11ebea5d7,2223166019,17340091635385724821
+290be7bf-5d4c-5578-16bd-e693ea97abdd,3340651125,721027842049459425
+a70f45af-7ae4-b2fe-718a-498dc93e81f7,2381074503,4665533766560770082
+d026ec03-520b-a371-9216-550e84a87b78,2677178683,3411456793959892941
+6359342d-e7d5-5112-addb-cb57c4ca268d,3545994488,5484603877863369720
+68e8780e-998e-7505-9a9d-8d8eb8f0549f,1497695568,15716294330025334014
+790f3b68-96ac-4a12-30f4-bdaf8fe3b628,1969348176,6436998475308688577
+4331a4c9-9b95-cf1e-73e3-84063e05413f,3960372675,14596404136938433375
+3e0faa05-2b3e-1e6b-fdb1-d2cf95af0e29,3416422903,17640275007464216692
+3c47ee3f-d321-92f5-b57d-5d3b97e89039,1213964418,15584401003540840310
+800a98d8-5dd4-9341-8fbc-c036ac2bf411,529397858,7642105971535790746
+40dfb854-d868-e00e-71b9-83f2198d1a30,3323935808,4558050156585742912
+2ceb4640-761f-1b97-a14e-dd548fd730c9,3391047578,14193150089270624254
+8584ce13-d5c2-a48f-7358-e35bcdae0532,1631839390,4174766470101268933
+45a2df28-e7a8-905d-fcb0-4850d6bb7255,2135886279,982582857153242746
+a5317d51-490a-396a-a92d-2e4e4f27ec83,517114171,2679932278373492899
+cd9d8f30-a601-5012-7f01-61fadd064144,1246457832,7082258845723252838
+ef098e5e-13b2-d354-d20f-1dc416562718,2548103783,13398393693111851239
+645866b8-234c-c54c-d6cf-03cf9702316f,3683033998,12740063565181808013
+d7c7f58f-740f-25bb-13c2-296e04baf67a,2801001538,432604637768775728
+4951c2a2-16ec-479b-15fd-78c8f5b0dcc6,1141908070,2029547001773786158
+897e6a3f-e2da-438e-9ee0-0c91db80fe6f,3103071377,3479459022843113752
+193ad0c2-8bb1-417d-f554-fa08e83b767d,4200218815,14186674278029180190
+d6f5d52f-89b2-fe5d-4120-f501d37528f4,2708512922,13901316818347624292
+aa4c925e-8f6d-4c2f-8746-a7c5b037922f,3805156593,7523625493285088568
+9123c4c5-7f32-d888-b8cf-ebbcd8604d18,3267889005,14567874373914207352
+e5fb734c-6600-3d26-3f0b-c2e169705137,4267460970,2941303531714591492
+ba69fec5-4680-372c-d0a2-4cf07aecca6d,981029726,11657554757546549747
+f61c492b-50b2-1995-7143-ecc5f0a67b28,2549032578,878517648741034581
+d9f0ffd6-2e83-e60e-abbf-0940a64a4aba,2675501651,3652247203965364648
+5c72d01f-a9e7-7f70-e0a5-875a1d3fe437,1956474552,12151852528726787012
+1924db83-9240-d938-fe7d-ac3755e43a5b,2795952914,15914733301238896898
+f293587c-b2b3-6bfe-3dc2-3a64a912cc82,526478473,6097006126812103250
+c91f6cf3-5e54-893f-9217-42f4bb626ac4,3417017025,5263478257535033441
+cd88ba44-294d-f69b-afb2-64781bbe3ee2,3266202998,17643636526663141436
+eb41a5f6-4220-94e5-ef45-d05ba4773c2a,2749223910,3269136372404786723
+4b5083af-1119-b020-ecb2-83fcc93a54e3,2020020261,1836588511965721664
+6bcafa7d-0fc1-6eb5-7b1b-1c4369e1d4c3,2069072956,1933209344446018058
+a09b34a9-961b-cae6-edb0-bc74667ac123,2477773118,5134211473568076767
+fe9be2b4-f0b7-75b4-16e2-29cffc708237,1057539631,15713902420117155924
+9260f06a-b13c-e41e-f1dd-58bc1ffe7adc,946879138,17684229098281243858
+894a89cc-ab9d-3308-f552-bd494a1c7b76,2299311798,9013427175071609870
+6525124b-adc8-1399-99bb-8d8863b03d90,1931766663,677504452415650978
+026ff3d0-b296-debf-8489-e2a34d3bd35b,3079371363,17075866569722330515
+a471f3e3-7836-bbe3-fcf8-e9233e03f800,3185689071,12787627553813033412
+ec42914d-1ed9-2e82-6a0c-b082787ba444,2051499008,3870262719755929411
+a9b5cc82-078d-7f50-73b5-ee260ca7476b,1877864617,10218168560933933151
+932321ca-6361-01c8-ca53-29ad02576463,46336935,14994945441389328385
+8fab7c6b-4a6b-f6d8-72c9-b89d5c12b9a6,979063421,8049672520105294955
+089e9990-6fe1-c739-8328-00d022c34d46,469164389,11816955500065436616
+e5a18713-3a90-f382-b780-2dda07dedeb5,665452638,13139447929267646998
+a9e3f9ab-8407-84ff-415b-365e40386306,3151998635,3605695989878789660
+86eb660a-9fd7-2213-d1fd-0b5eae68ef05,3240820272,16809430562050965388
+586a42c3-a612-de62-7721-41977ba136f7,1754548130,13460639114570291434
+5f9eadcf-94d2-08e7-9c19-1573be8c3734,3964437229,6969592092983951185
+1b4f9a78-ceaa-794e-112d-71333f9dc070,4290435517,9171598282369849314
+a1e4688e-02ea-cdea-dcd2-a49209c9fbd4,103225748,7352908632514045495
+26648333-7b36-afc5-b036-61d6799f4699,3327641301,14068011125475030481
+484c4c02-e623-4e98-5ab3-659be9ec47be,2639819649,4386311005207280225
+2127e7bd-001d-7674-b030-1b336e8ae267,2832949992,2714982885977126283
+2c40eec3-f4ea-6509-8098-234749c68d7b,1781633394,11719971672414413725
+a85981a2-402c-bdec-cb78-9c8d901bae9c,4076318796,14738834185902637044
+28e16f77-5959-966f-2ae7-b46c3ec70a0e,3827825398,2942200773543454807
+62cc1bfc-1b8a-a940-c6aa-05f90ea0662b,3641178935,931743757325781921
+805e1302-68be-ba6c-289c-ca0d1b6ea410,2152206075,8411806353228202049
+2e7b2d0c-f7ce-5f81-24fa-967585808967,2762501065,14478742984043270176
+87d0ffdd-e624-a6c0-7399-c30fff592704,1410753647,12466985400477353045
+fadd2ae0-30e4-f1a6-c352-7eff40482da8,3534913749,13098280398355533999
+d92ecf96-0ed8-ed3a-6b57-834c6982ff64,184507035,4599042863067780079
+5bba596c-00f2-a13a-4c47-0977d02641dc,760283452,1140586726212816599
+2b406f2d-51d0-77cb-30e7-3994a70154b6,3598123850,2378579834802875406
+76385e87-c532-263c-783d-13f8fa410ed9,1664474664,10606153084471058275
+a011f1ed-884a-e398-a81a-b269e6358c76,3782806353,303968421800761959
+2967d549-ffe9-1a9c-c8dc-a121c4f02387,3609082021,11889804157232020671
+a8a2868b-963e-3fcc-2992-e198fb07ea0c,3734953863,12550646809154029794
+6633a122-09b8-d24f-28f6-3f5bedfe4833,4112332726,5675288133008147710
+b28cf5ff-189f-a6cb-6a62-546115b44568,3499738024,4966312000629000156
+feb78041-8205-97bc-c63d-bd481cfdb75f,3402211147,15535102369776126953
+2022c618-82f8-5de0-8137-b1da9dfe9636,2895970600,17395691206043132597
+d1d8ab97-f92b-ffcc-84c6-127630fdd530,3506151143,1723235492018481735
+bf4635ef-1a1c-f7df-40bb-c7cc82bf2d67,1932612628,3408042506791077646
+531d2b75-0783-d361-df3e-3c6c5b769ddc,2247793833,3779152725779141671
+d717fccb-b9f6-53cc-1434-8200e71ac407,858936107,9144113962101138376
+0c1795f3-0fd9-a796-da1e-1adadc1cdd08,2490835516,14501842477961713536
+3f56e550-3827-1103-02cd-9941cd6c14ed,1788121366,5327039251599022639
+ffe32329-d210-03b0-0ed0-21e7d64fb22d,1449123638,17217883681255130862
+41123459-bfa6-796e-a6f3-39a7c7b5cc4e,3369510150,7971337485351205990
+f2c0b850-dbd9-27b9-d9d5-cde40025f45d,1371920497,16120057584672205923
+2a86fcc3-6509-3f9b-7f19-89641173789f,4167470156,9479227087639851224
+0dd6a6d4-264e-01e7-ca3d-707a9ff5bbb7,2730522626,5875696750700447162
+aa82da25-84ee-c9af-a328-26fe65f7c771,888775499,11618107708656417179
+3d46373c-03bc-b7c9-d1eb-1266f036af69,3740742222,17905725848709289272
+63177e7e-1a78-6166-ae17-4cd4f75a8b05,3639173907,1082226109196017063
+c70a7380-09bf-544c-fa16-ea6aa71f5d1f,425856135,6249606078499652504
+c926e7c2-e1e3-c157-0a58-7f4d5d1fdae4,3791012883,15979611035783610322
+daacb6e7-d410-4353-53ab-3f11d69d4e4b,891342855,2077025886347723312
+03018ee9-0ae1-44cd-a4fb-9538de516aa7,2137046857,3136533369290870363
+e546ce2b-7022-2d70-20c9-ad37a4a1bf71,1227111074,387239935507210771
+bf72f6fa-faaa-afce-d476-dd4731bec7ba,1124833013,8746552431203948160
+d12bcd93-76d1-fb80-54b5-c8b5a83e05f9,2155282586,16977125652538805400
+34c9481f-bea5-e9bd-396c-da68225e2a80,2194092897,3840788584172672837
+4a870439-af94-fe0a-6293-49cf130a4f83,1700842577,13785471273388296980
+e19ebad7-199d-6bdc-377f-70409585dea1,347520261,6403655770265452376
+164b2bb9-bcb6-1b40-15a6-b15fa191d0e6,1452532884,16194457531306730156
+41103a1c-afa8-bd84-3c43-4852b0e3f199,454758920,13571136026484415326
+3e04ff92-02c3-df03-de3f-c6964796b04d,3863826536,6634483430588831480
+522e8b9b-6a0b-5de1-8ae0-6dab3029ca12,3485087377,8101597771771955154
+a346ea83-68a6-e17a-2a88-e6fcf1028ea0,522827115,12620061130756885717
+8381daae-e1a0-1768-10d2-dc61feaa9488,3568662887,12242513996772410469
+323273d7-1043-0e27-54f2-5aa7cac41d2e,3470434853,8075727361607794229
+66a8767a-7eb6-4f26-065e-8af03e46459b,4208721876,4825434227801917580
+f51aa882-f1a0-94e8-4ad0-b4e2e2b71b09,1826869994,176285018112741755
+49a5cc9c-12bc-36f1-5916-d0057e570eb9,3636006832,12024383343872599000
+6e7e1c0d-b81a-aaa0-195b-e084525bec59,2407061394,15021962654798054617
+60cf036f-b290-c147-4bd8-75d0f9822f75,2851364362,10347791016297400109
+99177eb1-10a2-5be2-1ccd-07868adee5cf,2669788769,1975340332578531574
+3994914a-11fd-de7c-b73f-20d87aeb0200,1650629442,12467437757104887219
+283a4101-eba7-b2a5-86eb-a396f687fa04,1149010416,3459417310226911482
+4223c740-6432-da87-f93f-64f31614145b,260616701,9278284188654795301
+8996c633-2e72-200b-0fe3-8757e7c1f53e,3631424357,12620721797682598099
+f01c17f0-dd0b-b4c0-63cb-6df758e22018,1330330085,15914173555895896298
+be08b427-245c-1754-93a2-18f354a3e0b7,307473534,8820638817781091649
+71afa113-75c2-5207-abd6-dfacc2f16d31,1804985291,17510097274780091255
+aaa8d534-4ac6-40d7-c0d5-8db487ea6806,931436879,9514037277228012537
+44964191-cca1-1258-eb3f-1a2b29a69c76,4171142598,11227681584316463901
+6a61d2b0-691f-e148-201f-45ab3097ecef,3254667224,17914055846799745971
+36a8d7c0-7aea-6e01-f3c5-be72cf700385,3841027332,17972294907580238386
+cde10e2b-1140-5482-5571-3b4871e8ed98,511959786,15387070576538029356
+48ad43ef-db81-c3f2-48a4-243a1fe93832,2586279048,16330946844915047289
+bf5c31c1-effb-cffe-fec8-eb934089331f,1281935999,13070297581267404045
+c4e250a4-1e97-ee7b-5db0-800d542f7951,2564559015,6712452554818052593
+4bc0bacd-475e-ae9a-f73b-e31ea7a6347b,1525459814,17901739116168525422
+a0a2bb9d-80f9-6d1a-896a-2209b3da3059,3962878339,9422359696372950503
+6abf0f08-e4a9-c2fb-b537-c85b320325e8,4153229326,3759824125233290791
+2c1fb415-84d0-451a-eb96-6def3e4546d4,2407171456,18349541113218954001
+d1dbb786-e271-7054-b22b-8c021208e840,2682404968,578884395261065385
+835d50fb-7f99-abcf-8c9d-b5d0dbb2910e,4141105857,8492096371194535961
+15cdda84-fad8-3b18-7b10-ec3d8b958ee5,4012561278,17329825767687088396
+75b0bc50-d9cd-4d47-2f0d-ff2f7aba3e99,675855556,2251177858554106151
+3f802c38-c79f-3386-57e6-9d364079afe6,2188911776,6531569392156467273
+fcd0e270-8b0d-5131-d1f0-d8829608910f,952219924,12456801500970463166
+a87b9049-4568-56e4-8c4c-f0d3ec097adb,453568071,17044908634583022986
+8b0e1ed3-5b12-3231-9d39-0ce861be5c21,2533382664,12328942040769427834
+5c5a9f11-60f6-fcb9-4c48-afa8ec17c700,1174901416,15859351474427535187
+b1c4d35c-13ea-f717-c0f8-225bbd2502da,4008612117,459756185668656586
+d3b2d7c6-6cd5-ca40-e509-f9f01db5d0fe,3098137140,16951908557523318647
+d158a5e4-7843-4378-6646-fc8d29bebc60,2397103629,7096630557235853747
+44dbe41b-8dfb-4e9c-4eae-b6988dd00335,2417550090,4340548550429878025
+807bad48-1900-e538-7318-754a5502ecc9,4152014654,9330914369197523162
+69b42ddf-3c3b-8112-ff02-78038ea36289,2769777483,2816199107404841309
+28d84c4b-f74e-e3cc-723a-c12ab5d9836e,19533112,10105324412540546305
+ffcc0191-a481-f99c-d2b0-aa1e7173e868,2433670844,8298899033408308688
+f28b1945-eae9-fdbe-f543-e7d86837104d,991172030,12836258538483877914
+c5d6df82-148b-c741-4bc0-62b4006d80a8,2703167797,10473706695099158743
+86a69fe9-c1a3-7eec-5fee-d0c19e2c71fe,1169815708,1958469249286667986
+a5ad5a4e-9805-b928-48ba-d0ac3b6190d7,2370436943,6428121983451899940
+1bbed507-ce50-d818-a889-26d791da7b06,3306169426,11955103407578285377
+60d10e18-6062-c25f-364d-5091f143f8de,1983031423,7949570312320220114
+d1548272-998d-2669-4a64-b51b4d973f66,3767191372,5910955777854348892
+24a3addf-3ad1-9880-ecf6-b49363712555,2358591100,8188843586750605429
+4de01c61-a78f-f35d-10f5-dd4f392b2cc2,1908551737,5696136796878496962
+aa37746e-2aea-d5fd-24d5-baeadf810d4a,927530354,5719916540583120414
+83eb4f27-5b96-f5b7-c3f3-f22df0549510,3749302042,12783060866426607966
+d8aaca44-baeb-6f9e-3d38-6d30d4152b66,845302147,4364908783753265792
+a21b7310-06e2-91e0-8aa9-4bb3db38613d,3391613808,1667607985840107026
+239bcf5d-4e1e-82e7-3fb0-46ecbe61374c,3980618746,3319311147690133670
+7ada65a4-fbf0-8607-a28d-ae36838a5018,4114148070,4101758873697862030
+d394f3af-4541-3491-894b-1cb4c12bc7f4,185442223,2475328393016902785
+923a392c-082b-f33a-caad-1c62337af180,65270998,14262407455939881558
+f35587d1-5c93-3e58-bcab-7374577e9175,3719674395,2996850491461689317
+2d8d10c3-5f37-2938-7cb9-4d2e9cec61c4,902298763,7689931537799417127
+c809b80f-2ed7-207e-88c1-87ef8ec1a395,3673523827,17076040437093162011
+f87b8376-478a-5494-6d37-6ff22715f4ac,3931442860,12562697161215172860
+081fd9d4-c0e4-b647-007b-3338862b9492,2952277312,12018499776732339282
+d751d1ea-a64b-f01a-822b-221e3a1dd1d7,1061595533,14962405567350952478
+32d0f173-802d-70c8-6d72-33b37cc5ce10,3821441240,3807531796693921079
+f711ea32-e376-9091-6fae-7d1bf0017dd8,2250386061,1659524842125722819
+a5c42357-7a90-31e3-509c-94c59b22d3fe,3326358544,4296096348611328323
+e6a77e5c-ac53-915a-d2fd-9c357a5d8548,3824669497,15782683047085442211
+c0c91b60-6b99-db30-3c81-6665d067a21c,2293490682,12159730804969229328
+9e8c57d8-52f0-c166-dec3-04abad089fdc,2056956892,7563173985999035568
+1471df44-85a3-71f6-983b-bf91505cc20e,3410149083,1783213278210040260
+cd995e15-c263-36b3-c93a-bd7c9b27a9f8,3867992719,759285321578608082
+a4762026-c2c3-cd3c-a27d-80fc1668e261,1157883802,5650343547691383734
+9702af4c-44d7-5ca5-a479-4e2d972c7ec0,147145997,2749649829138418570
+31e6df08-013e-b29b-cd09-6eec759b4546,745838294,18203023194503973727
+ab02e90e-db63-70d6-6649-72b9b7469e04,411434904,16308497942011625071
+93e82d8e-bda7-4540-a0a8-846ba3a35e87,3797541298,6179852799511726533
+3a641a1b-6eed-3dde-7137-1561773b3bc0,725886756,12156314232566839885
+fba158c4-0558-5cb8-b33f-2f1af35abbc7,3476977597,3147251608181593301
+0580868f-02c0-22a6-834c-f5bb94df5826,3723788321,679286219134179461
+c24ad557-a084-b22e-b47b-19a7da31ece2,3671276022,8200603517705886792
+129ab095-0808-d1c6-2ec9-e13592a59c1e,1325084922,5444258806422901015
+c111a090-24b1-9e46-14dc-9425f3f29b13,1526701381,16547188368804478740
+f701304d-d414-0a64-0c0d-3145d43acbd4,1116243113,10444426531870210338
+f2266307-b8ad-ac71-c6cd-560f871860c0,2414037312,164976842945913609
+7daf21d2-5f79-c029-e609-ea3ab93f1916,284750657,2930333767472515222
+9391fada-1041-66cd-79d9-11829d9619e5,1028503677,1404293151453764742
+25b84a8d-b1ed-6d83-1455-1795ea27699d,2799942546,588633614466786001
+02bbb6d9-6119-f07c-9c72-5632f430fd84,1183086015,14095318511445098114
+b07a183b-4435-0807-dc0a-1eafed21a8a2,2625239698,7302727101563560701
+769b557d-da0f-8a20-76a7-781c94f0c7b6,3485718702,17348125988791132578
+0ab292fe-cadc-afc7-6962-f35c29572003,243002434,47316160822475097
+bd887447-2c8e-274f-4d6a-c9fd3466e56c,2954425139,1110120612472048977
+db5acf26-7e2b-7ed1-7799-4f29a07968de,1500447560,6497045239121631167
+a812a7ad-93dd-10a4-7a84-bb300c6f5eb2,1204404402,3099844309803351764
+bbb8dfdb-5d13-b702-63c2-9b2555ea8e5f,2499363320,7639191190451412915
+a790f68b-9931-99e1-98d5-99ac20f596e5,1099884741,7413118424480615888
+87489ab8-0a91-5914-2b19-da1421615d1a,1632605404,5743845492468752539
+b09e6871-1ae0-a924-59ff-923ffdaa5c3e,840447518,2438690013911248938
+aaedd4b2-335d-08f5-9544-6ae314f683e8,384273131,5614653723567819610
+9c270752-7888-c743-4802-fa415912b7a1,1188212842,13026595896952498963
+dc35b35e-a4fe-60cd-5bf7-22d10b70b42c,2798384448,6872780491045615650
+cc67b2b2-921f-b225-1f6b-2a3cb343ea75,3150967787,14561882532096844727
+d334abe0-391a-bc7f-c75e-74d2795c0ac7,575837503,12194686891733443572
+12c2da9c-fa1e-5876-2f74-aef580295c80,3589982216,7475137045029947201
+ba452c36-0aaf-9b6a-00f9-5f28a3fb6ee1,322508034,15822054166720248039
+d0665855-1a4c-8af4-49e0-29d770124a87,1210443466,7277371778957005642
+480d952c-753d-0fbb-2626-0af29b842c87,4148256186,2958364274168213274
+8485b44e-1f64-015b-ab9f-18f697b3702a,647628576,12711287335650708760
+1a6678b0-ec6a-f286-fd81-77571fbb10da,1995018302,3303347542549149034
+5700aee9-af54-351d-3313-cf40cca31d90,2606559609,10783566747486114487
+810cca71-847d-c0b8-7ba2-ea09299a88a1,2812831324,6856071352174476108
+47722906-9a93-8463-b4d1-a61d9d231ca6,1554464026,12144176387274816445
+3fd4e085-70bf-5d73-eddc-47de9865309a,1963343304,17694590271819671165
+26ac1eb1-4027-fac3-6ac3-96ad8d5cc664,4192672521,7703243651039901327
+47466b8a-7401-34c1-cf16-c73262d42caa,1579959084,12213122302754136061
+f1217cf2-4e4d-27db-7ae6-dc3a7d7a2ce8,217449082,495405512264170895
+ef75abbd-5d84-8f1c-38c5-b92529e1b9eb,663505749,13662202337831735639
+74683795-bd59-a96b-9603-1436bb7625c5,2041147628,2243238740662355298
+7f26aa51-769e-fd05-1132-1ba0fd46849e,3399924014,4576703888065769473
+d5a7c87d-4858-62ab-67bb-a171f95054cb,1917332305,10904226964913937660
+298c5e8b-e766-94b2-9e7f-0970dd6833fb,357380456,1790419688649555492
+9d274d31-b070-b9de-105c-f233d6c81a15,1888702742,14336512096539403714
+3b51c00a-91bc-c299-bee9-ca33b6d31fe6,3789261935,6694383754115406292
+7a76f227-83d4-bd55-03e1-3e4242264ef5,169114158,297366529679497673
+63cbea0f-3023-6c35-04c4-a724278af8d6,3346728697,14683021729253228136
+c6ed781b-5b96-044c-4884-16fa680eb9eb,1700893145,15772248726381108046
+3aad5b53-d35a-0c27-c63a-94b9b507f7dc,10124098,4851355641800542395
+f54495f2-6884-1269-0e01-de80cdb0dc40,4111396198,11202378854636816806
+74098ed1-3409-e6dc-b043-095953388281,806277793,18000916437344144299
+101add71-9775-cd50-032e-08cd1d04ab8d,1790795751,18287187281324994985
+7323a2fb-6bbd-e09f-008c-a76a8d576c76,3090530475,11715970841826117338
+15df9020-eeae-1246-dd50-1752e24c7578,4222620525,9300849123539876826
+ac6c3fc1-619b-5cf3-cdf6-7009da082c43,3697507232,4793493338410848127
+5ec60880-ca20-4667-b1d5-6a885c5daeb3,908719088,13323947329996404770
+59e7c23c-115d-3606-eb02-38d0c36cd1d0,1229763936,10849707416895017405
+d787341f-9e16-fe04-aab7-9637946dc46d,3610776404,3788406514405349708
+e4e26de7-a336-25f3-4888-a06dad66902f,828411007,127568635878529957
+c4390fe9-ff0d-225c-a973-0c797c7f28e6,3997989948,2052191497647409566
+5c5324fa-bd6e-8d1f-57b9-e43c6871383c,1064773174,3528948192672466771
+06e1e32c-5975-12bf-e744-b6ffc8053526,1165165003,13140961017895133540
+233504cc-698a-e413-075f-d2c01e1d28a5,2063426214,16711550978512299031
+33f6175f-95ed-79ae-4a8b-c1a90d82a5fc,1317584415,2377771108684067206
+ea67f606-2108-28ee-75e8-df6950601711,88385118,16392458499595970522
+23fc7eaf-f973-bd42-29fd-2354afc958d6,3346257961,6249452115998693230
+e00e2ead-cae0-f096-715c-5eceedbf0221,2644199013,13562385482140530409
+9cb0a2c7-134f-7e90-3709-90860723f2b9,990091498,7358546443773932868
+b1502c75-1cf3-89ea-2ba4-c25da2e8e020,3565590680,7830028819180787930
+c78ea204-77d5-2c9d-8327-414e0e506d1f,2137819101,5309566712161926709
+06229906-69b1-e322-80ff-cc3cb58d8605,4056905493,17248009390237712732
+ea6e57e7-f217-798e-4d58-4fef7650b21e,3741750487,1690426346375824211
+203c70c3-d8a7-1ac4-6d14-c0d9a0cc96fc,2648388391,14912275013313134571
+6bb9f441-abc4-d7bf-d4a8-5f0f03d70c87,3143524896,4275545729024888504
+56cbb2b5-6d78-57ae-fff7-a6f07e0d30d2,250489970,11018693831702676162
+89475746-59d6-bebc-92bf-1a3025e15dbe,2783303870,10109033660408473337
+a5997012-d0ca-2a73-f9f5-b54995b36e59,2934201492,494362554570226911
+86cab569-0129-242b-e9fe-0a99a2e86a33,3191595439,15652252068711567456
+bd8ae3ae-eef0-6d5f-46ff-b12d6bd29ed2,380689253,12164278115619365899
+46f49a13-1556-545c-605d-26c4c01a6541,1924598825,17989046984611929299
+041bb688-1eec-52dc-c7bf-671cbbcf2ebb,1530558216,10001271868760443470
+9f71cea8-7a9e-94c9-a270-1566e844e017,1553233940,15884203631463241261
+7b01b8c3-d9d2-e7eb-9315-fca594b5cc2f,4070741542,499607745164020660
+030879fe-9cfc-5048-e84b-675feac174c8,1069950187,14019212035907245707
+a181059e-0c62-f671-1425-a04ab138efd7,186138096,15525886927236672056
+a1628b8d-e2bf-cbad-1662-2cb6d232b77a,4266449350,4732958928669024454
+73dbc094-ad88-6c96-9c86-2945cb576cb2,3574373769,1575626791299470404
+0a6992a6-df1d-e0f5-98cc-99139ba0999c,293188178,6172910692196295375
+bf37812e-249e-e856-6b8a-7a7414382a95,1963711597,16113167420828994360
+ebf89029-62d8-07a4-b316-3239535f8463,4274823669,4594608386648288910
+20320504-13b8-3c9e-934e-006519659b77,4273410181,15620636187066931326
+4c4961fa-cb22-276c-0bfa-c29c92fa6ae3,1981540274,16875500514545470452
+62900d99-1dc4-d4e9-28b4-c573e7be9b94,4263032643,2028354606733401614
+c36ab41f-1087-db3d-438d-9a090268a12f,3628176702,12987043356819181168
+e901e751-2362-d99b-7cf3-ebeb7b875d21,3303829876,11412432055571678076
+16e62e1e-f281-d707-781a-842196175cf2,637039810,1592522006686809961
+e8edb65c-7800-0e44-ad9f-fd0f8f08a282,1171926474,11005173673414765714
+852da141-6f25-abb2-8058-cf2f7cf8d0e1,82016844,11462529004566932695
+88551556-1521-aeb1-4400-b2b67a704e98,1149975979,13938351351046093574
+2899e36a-7b15-d374-a754-fee9bc781d81,2540861069,9698289366596671582
+fa16d563-84db-5015-c910-1be2bebf7d5b,3903572994,18416651000236358829
+0ee22b28-b757-4c1f-6f32-41554ec815f5,4114474093,15472274487077028268
+8c7b4dcb-6c9e-2a58-3a4e-24a32ee66ca6,881076104,1999884287683767120
+803f250d-7cf9-b804-b6a3-5ff2814ad82b,3694755997,13105354872210799748
+f5dc58d0-008c-d3bc-b697-0c2b0db66a6f,1899354110,9568741144041646751
+62d955f5-2397-3175-7898-d527e1a2976c,3505397803,12382914097362698813
+7ae3b3fb-26e1-81df-edc6-eeaf45020378,2828845911,11547729072967132401
+90730d8d-d893-9447-a7ed-5e8c9b5c08eb,930246637,12626951143691336051
+382b8027-56b8-0d4d-c67e-92852312df09,4163660046,4441727496658698964
+89859f26-e0ae-84bc-55f2-448ede664c0e,58642714,11275664252625270776
+7c31cc5b-6d59-a519-8805-a49cb0c674dc,2045438988,7465517694898154503
+996f5a26-6019-6dae-76ca-7948299b18a1,423360166,5526820310592994855
+186e9422-4125-2a85-6eab-b26281352e06,1119681445,17136649566355979416
+83c5f351-40d0-28ec-9ad7-b7486fa8f2f0,3286876468,4808039998238687920
+de128c97-3c8a-ed0b-fa97-8bc5db369c0e,3291369364,18289209659432582997
+0b26594d-393f-423c-16b2-6a3e324ca3de,1769791195,2409908767553729204
+9716950a-8860-f50c-9726-9f494a07bfd3,3790984281,6320567898659333714
+a3b5fb93-33ce-8316-1efe-07bca4e5ddcb,3402574393,5646729540790281723
+948670fc-d1bd-9e49-9fdb-6a65377a1450,661487290,4014460975233067489
+0a061f24-e338-4c76-6cc1-782a8eb4af47,3659982393,18055105923191953402
+55df4043-8cc6-1e55-703d-4fc5b14b2b30,3219050634,3717521720789091080
+a30ead92-a017-1871-7d38-641e390a4576,1189678293,14088378969468358125
+86b47d84-e246-61b2-0ba5-e5c9a5e86b63,568165711,12767144273596539733
+0e594268-764a-c6ac-e534-aea4966cd496,2768619150,11022197084389851942
+487b4195-fdc6-4925-d93d-86317964ba70,4098670355,6164286585711958604
+22a6fa05-bc5a-f1c5-b6c3-d0e6698a0dc3,2868066769,11957620367404928297
+df3572e0-c4c5-e818-2619-64fc189dcb62,385619102,547405314084569912
+5a06753d-167f-48a0-8491-17e96857388c,3165966244,227452434785096893
+213f0b65-ca74-d75a-c9ee-03df926c2e7e,1602358951,9797750720562463704
+3dbd610e-1e6b-629e-0b9d-bef7f27fa60a,1367985405,4866309200751985006
+523660ab-93cc-0c1e-9df4-c81bc3993b33,2483612627,14385210027850567471
+962ba44f-45a8-0a6b-951c-8da0a18837d8,986399557,13930395886779902281
+fb06266f-08c5-e7fd-3654-564a4849b3a3,4254405310,2421482053343228010
+ba20791e-092f-8fe8-d7b5-1663600b78d9,3701362816,12935150464932664592
+26bd8747-9400-867c-211d-dc7c3366bec8,249403494,17351520008531822635
+5f083614-3937-8c54-ab6f-4d3f439b7ca8,3327607660,13729357633925810348
+a24e67f8-8051-a525-e9f1-d9797a083e45,419353184,7741256910512828737
+c21a4dd8-5e55-0813-e4db-7a6476dec1fa,4133437859,12935119495650098724
+393b1b1f-514a-e862-2cf1-71c95f36681c,114974227,10283472390794511534
+1bd1b221-a30a-836a-ad65-e9e79187e6de,876257615,5444542858550924701
+57628347-3f70-15e1-cf7a-0865b9400b79,296975975,5688693252486192428
+208c14a0-8f78-f902-43b5-0a3da81589e7,625630747,15347642718618209529
+2adeea63-17be-4f41-92a7-1c112ca23626,2667296028,16246788718396315029
+73df0f43-b9c5-cdbd-d060-2e3ba1eaf04c,1476868031,8373451435296130286
+01761272-1719-efd8-82c8-0bb31586f81a,2260886381,1967108512146286536
+e0cb835e-19ca-63a1-ca1b-b91007b7a02e,517315481,8301137399171442873
+ebc57f69-ebc7-877f-3e61-b5206e399a98,3190099042,9884351587313319822
+caf352d8-bcb9-6427-4c91-417eb10a2f11,3122152207,9016714992253047672
+e00a19ff-eff4-dce9-f567-31555c73e00e,4158812442,5394927720979774409
+adbddc85-ad87-ec14-b9f5-dee5b871eb39,2843275765,14342209019054023845
+5613ac9f-02b6-d465-eed0-95a1c032096a,4072544834,16271521029361684748
+190feb74-0abe-0375-d139-0e818dbb5de7,2401005195,6991222088062483374
+3b0555be-35c8-a692-58d6-815913477fa7,858785240,17872238590896484448
+a6995968-f89e-b4e0-60bc-605dc72f26ed,1735847077,18183872027012773036
+3c4eb7cb-d261-89ea-f717-2b0da40d8ce0,252815684,3176024462448982341
+a4cc608a-21aa-2c17-faf9-b9686fcb180c,2236392622,12283394090381958856
+1f4f7ff7-4fdc-a3bc-8972-50ebcb391c6b,3457696304,4048267879884447568
+e4c089e1-cf1c-03ec-1cd7-66847b047412,113018137,7305353594731975943
+fb1dad3d-4e1a-e03b-a9e1-4c2f425c0e62,1236839414,1175803474020044223
+519279c8-03b7-01f0-6e6e-6c9b2af7981d,104530697,12382617063834774984
+fec65717-7724-916c-032d-5399e4608a27,399704234,6345133550855586246
+4ab5a99c-79e0-4caa-63cf-bf16a993c26e,4084399789,11423585944356722315
+a347243e-4e32-a41a-13dc-46faf41728af,708469818,9302754121800462123
+c8ded7f9-fa9c-a90c-c59f-88a402fd7892,4135095510,3047863975146163633
+37815019-3c70-13c2-dfcc-c20fddcfddb5,3243344647,17607418765304974190
+5860c253-27da-e3b8-366e-8a898a45dc46,2360154466,3446433013208780577
+48eec09d-7339-e375-30ff-c1698acee1e7,1065701592,5710546987240651661
+0d2b1d04-97e2-8a3e-b07e-08aab5b0375e,3612008219,1648080225821717775
+f0afc7fc-6f2a-fdd5-bd22-37395fb41bed,1654448655,5242279169056407127
+334d2b8c-c55c-c370-8220-8797abd037fa,1972353456,11463581178882619512
+f9dc739a-16fa-fd56-81b9-60a6430cb027,3513509024,13940950928429521150
+0547236a-6747-8b76-c0c0-b1827b4d421e,3529475477,7596054001728798707
+576db7bf-f1e0-58ec-10c0-44d2616c1d6a,2870032724,4023698400774854649
+abaf447c-6319-e53e-f78f-339af6efe3ea,1644901746,11633169161272532506
+12784545-38b6-4235-b820-8ba8dab51f65,666236508,15151401503624769244
+4335edf5-5f0e-e1ba-21a0-8f0eeaf224b9,4135487372,6703431588398008622
+ea2677e1-c131-5fd3-2c21-89c510fa5119,2895799256,11266641289580387093
+b23272c6-c3a8-4e9e-e0f7-adf85ef0cc09,3102632986,14703906944687631725
+81265348-e45e-0c0a-2ec0-bb51bc129c6e,2458562496,2105947893358122103
+8b7cc5dc-4872-3a42-ea4b-fc88c9bcec8f,1978411527,2167959941815953890
+cbc8d016-5fe7-e027-16ff-d505107ef03d,2798052707,17835148360762490400
+3e006216-d5db-fb96-5074-61f4e59caf53,4237059584,1779919123018187216
+070c0181-f62d-8404-a8b4-7d64cb943bad,508976995,15104600495998829681
+3e9c10b2-a6ec-f547-1ced-fe153cff6991,3062103116,16811395605863348480
+afd3d503-e310-14fe-6d07-357607e0fbae,555976657,11818056201363383243
+9f2ee206-f921-5fa8-ab77-98904594f87e,2588860278,6987396238350746749
+bd8b117f-c225-b024-eb5c-84849a13e6c1,346870397,17727247788998825299
+2086717a-3017-452d-20aa-e730345c4973,2383287446,16693336763129478627
+746a8043-ee23-10a0-559a-7604b580b3ba,2909330184,15083279040161243293
+b2e3f7ca-2e75-ca77-191d-6cd8a1722cb3,3481250537,11139574590237382238
+8547bf05-c185-508d-273a-7bceb2972354,2414197964,8218327263805268408
+d321a54d-9791-4a68-0deb-334b4626810b,1892403155,16397656105104764599
+a46761f0-fb93-c0d2-e4de-4325f7e2233d,1885018196,11284649467877676382
+bb5eae3c-1fb0-c56e-521f-12201a3aad10,3914374351,9588465661887401677
+d4ba1efa-bc9a-ca8b-92f5-96570a96137e,2521733430,10959142244766038790
+323878f7-2f1e-dda3-ae14-2ad6f1fcf8bd,4147672747,6534079431285515805
+4c623dd1-be92-1ad8-75a8-f77cf2684a3b,1451293281,8247688114749991792
+77c7ffc1-7037-7dc8-c9af-1f37c176aa61,526674410,15925827201122309008
+cfbf4b46-a100-57d2-3f35-1b974bedd939,164530142,8199809256769492680
+bd5c8536-b319-f92a-aba9-a50715cb81a5,628699252,12867050341068409691
+4e96e830-8ec1-5455-837f-eb36906cd485,3265636853,9831039654023679707
+8c1b3268-79f2-4f06-587a-54fab19a2859,3536067474,10327781737106169884
+935ac6b9-098b-65b3-6b14-71e95bfc1be7,2378203620,18014377330017441248
+1f4b26c8-87e0-4501-b5a9-d87e94806b79,3293574267,17859214312640491080
+a02f1d03-0f41-b8ca-1e57-eb34a4ed5d30,2908303792,17006531279584808483
+481462ec-3aa7-396b-c9eb-aaf711a1de17,1510701117,14227818511297321712
+abab4070-79ad-558b-3665-582ee3376b75,4254604503,9854702997215192302
+a3f8b7ef-5927-bbd9-6cd0-0814c2762837,2700620096,17743113333818435950
+31ccc127-4007-d761-5a44-2c9bd234d297,1499245601,5299724544333037116
+26f46ab5-48f4-ca72-6bb9-51b5031937a8,1938809145,13262208150525879147
+9938fc8e-c186-3d91-069e-c1881f0f4bdf,3178126036,13360364778363688677
+67e28490-bdd2-fe11-d2cc-3f3139f66cbf,383179642,15449749665389695076
+dd0dc369-fe52-bbb1-16df-5572e4117b9a,649643463,9021000078875106163
+f7d1e1ac-b51c-efcf-92fc-93e07563e407,3623124033,8199579355224379297
+c431ee49-dd51-b8d0-c4d7-b1049f517c6b,952885058,14290137426143812430
+7ab4e8cf-5e06-10ff-e528-31e37342b0f0,457398144,1932496193718843748
+582e303b-209b-d093-ff5a-21c9e034194d,433712852,9116814518093872497
+5a198cd4-0581-c712-092d-1a1a36d870a9,2668257889,5307425343476623978
+6b8ddfa4-2648-5015-e99a-c37ac6b02ca1,3275458445,3104013040026735471
+a6160e82-c3de-a653-c23c-f05c96b8adb8,2499762313,5656839133201978724
+3fee2548-8155-74cb-c389-287a4cf908ac,822241007,8242149964760667212
+04616189-c4ce-b720-aee5-d8954ac05851,1088551539,6458371038706635370
+5c2b66f5-2513-5877-b95e-d5faeee7d9cf,3644940720,10203003446859787773
+c6bc96eb-989f-f8a4-c5ab-c7455f30cf8f,2769133554,16943552296096552404
+e85ab0e5-e132-dd43-0939-44b91b03e493,736877334,9651170927675528598
+1206c120-dc9b-580c-a1c5-3e9b776bf2da,2531421997,3492961684168943068
+33615345-f5ad-79f4-3054-9bb44a728ba4,662318736,9495071621331508698
+611379f1-3e98-35aa-ca71-9b6793be6874,3605064810,11652270196663797531
+30ddd04d-590d-43b9-fb35-0ea42e7ae632,3464251879,1097946622834027884
+03eac0ab-ae40-6471-171c-60ed2f0b88c4,649903444,3687264730301715794
+6c4166cf-f0ad-ec97-e84d-61215950bbf7,1256378201,7006646747696787588
+9f118151-8df0-2066-7162-cdc4a77ed7b0,3219169377,2827197679242320719
+305a8e0c-3cd5-6208-9007-c81b66b8823c,2493481519,11028711813394755322
+8685e2fe-12d2-7e0f-3ddf-e2f09a85272e,3985291567,10626933232377552797
+62487929-533e-c0f1-f007-0be68ecc195b,3655805442,4826143685794728693
+42a4ed1e-0aa7-433a-4f02-7f27aca51643,3025649621,10920157259690209869
+92a6569b-f43f-5c28-3c56-851869c7a0c6,1440139277,3801085326726683369
+cb61e387-f49c-ef44-2ecc-a66ff2d2d330,592264933,8083394428651646926
+199a58ed-f1f2-72ee-4b3f-3dd36c1d036e,117996026,17185492082327808618
+9d6c33b0-c478-2a80-eb07-290f03d2a87f,2172221519,8451604591731248276
+30bc5b10-b03d-6a4f-3667-fabf3ea903db,3678911932,4712147715215202974
+9e972aed-80fb-0e5b-02a5-c4e0575329ee,2157914453,2028904964050347122
+b67505ed-1fcf-6b41-f5e8-ed8ca37eff48,3495972719,7175830007175303297
+2b5a3736-4f6a-210c-669a-305b6b2341ce,4024651578,6888125228374004136
+9e88ef49-c9a6-7b63-f047-0294fa2fc9e3,4077580733,15141335025274605426
+b8c9ca85-5325-111e-8e73-b05b63a3cbd2,228140743,602597009947503194
+cf68bdb5-ab94-4ed2-0dda-f40da5857832,779819283,6342701317009798057
+1dc23916-0cb3-d2f8-7432-309b54ed8f01,2321216791,5527689509463009605
+4eea37b0-e8d3-ad3d-c7c7-811e4f05e7e9,1168661725,4305545888036799545
+c17c2926-4b53-1341-f1f7-f25f3b035e0a,2662936544,16508286106305410343
+b1498051-2627-6447-e4c3-3409fb39967e,4224416794,4965873637966370681
+4e4d77d6-65ca-ed87-1153-cecd61ef2f74,1056566288,12003596695500941760
+c7104e6e-0625-5c01-007e-eda88ec426a6,491223498,7382529357585695944
+64c2fe69-09f4-a220-c1ae-9731c8ca9d59,3158893459,7675079834012837734
+7730ac77-9c51-9d6b-87e5-4b0a8fafb0bc,1716210282,13394821837476327116
+fe8c008b-5328-47a6-23de-d7e1fe536fcf,965115395,13901503926234876844
+cb4b1fca-16dd-a14a-ebd8-15e13e87de9e,3426202209,2338202931357895689
+95763a80-43f9-de26-87f5-b7f01291e3b4,3729712060,12819276165507897510
+bbac9707-0964-9f4c-6869-52e6091dad17,3054468566,4188268726656267500
+9e59d156-1ba4-f7ad-e2c2-50ce27a446af,977999535,6545459359520259792
+f07d15b1-32cb-f7dc-4f93-667862564d6b,898640319,12443700266521663472
+9e2a5817-e008-b1cd-5192-5fd1727a0e50,2822882012,8318642768360064861
+ba2672a4-e063-ea43-60b0-3573cc8b43fa,3024001830,4351549613754361984
+f69d78a0-30a5-c056-ed7c-0e2127c8415b,3949635815,12750499372683417545
+93a2eb40-68d0-eb03-386b-c4665b7678a2,1076151136,18016785222949361722
+f77fa33e-3d19-b2ca-4bde-ccd94f4abce9,947955240,7833085653716972672
+994e61d3-57fb-c26f-9bf2-9d1c3fe7e9d6,1960482771,13380104103437890664
+4f62d2b0-10ac-9100-c145-967e16cd0a0d,98763878,3089079521471848031
+c5b50162-feb6-f5a5-c33d-d8f2088f09c4,214688693,43064308291189948
+ab818c0f-5f0f-a100-3bbe-d796698e3dd3,1581811196,1107953667888915429
+c63912af-f880-3677-c096-ae898b70f403,2795393736,15123416393644546570
+041d2832-cbcc-4b0b-db2a-579380a7aa18,1634236315,6558415240858807764
+d0675c75-ee02-949d-b97c-e269ebad5200,2559703359,18124932014666897578
+29e5877f-c7f8-a988-ed3b-3751b95df874,830721903,7303749550927035024
+8edaec95-8e64-b00e-ab3e-d6c373b41d16,483378329,1677995474042887325
+fde296b5-f6d7-a6ff-f2f6-1766149ddfe5,733195848,6884319202030739929
+b82bf917-01b3-855f-a803-2631bbe1af3b,12561719,7317343282459332846
+5952e4c3-5a1f-e8e8-3b02-ddb30bc0e7a3,1225523395,10895108037815055112
+9e2e1bb9-1d8b-a1d6-cff6-0c65e34b7c96,3739410816,16645123398966425969
+b2f5587c-995d-9e48-63c7-82f1c16fba2d,588089746,8550451644343756211
+ef0bc334-889d-22b8-01b1-26d41fa0fff3,3971748487,16867020431044659705
+234c71a7-f12e-fe14-5b09-deb697c1af1a,1542561547,13463244729983758029
+f2436f05-d64d-1a93-ca9a-2bc4ed174d18,1487530689,3361222945129245412
+1926de0a-07b2-4fca-8bae-4b1862a334e3,1404398511,8268547785173592600
+66534ebf-4d2f-f821-67c3-7b63eaa03ae1,2630693311,10038907862604721162
+3fc8715c-79d2-65ab-6829-321533209c57,3938452915,17283459998902597648
+059dbfa8-9a0a-06c1-321c-5c6d7eecc202,4281788877,17333489922919398971
+693d44ed-599e-199c-08c9-f9aed8805d6d,125952548,6852496986916542402
+1d2bda77-9189-09c2-d04a-e859269d3c37,339687044,2697091972113865068
+34786bc6-a6a3-7ccf-2bb7-25a798837489,3551509679,4398174289721736673
+fcb54501-a0b1-70fc-b4e7-727f806ccaeb,4186531133,11347427006458223829
+c6cb98df-0e25-78ef-a7c1-f85f1c5597ea,1839565452,10521684747356292249
+b3ad3f3a-4249-f791-1cc9-ec2e38f10d78,2370199315,10932975301864327701
+fded2bcb-af0a-e6da-16d6-6310009d1a66,1094970398,17778347013989823864
+44116127-7685-4fe3-080d-3e2eed23a108,3333104602,16393427556769276194
+2d9688ba-119c-7fbc-d96e-bdffb0d6846d,611376589,10398088198382345268
+53628368-6101-aca3-4fde-4f63049dca1c,4134111524,5392276233446935727
+497c3ec9-f29e-8952-92dc-ea8ce3c1cf13,2746469018,16813368595253054349
+4f939bad-fb13-0f34-6ffa-6b0d75c34df3,4079782072,6321175107233839569
+f9f3c044-b077-3b0a-72b8-c9379877c7ef,665654599,5413165448079109369
+c8048eb4-dbb6-3fd1-6a18-60787f6eae43,875822076,4019312307827769043
+175ff074-6571-9557-cc73-ca1afbb5049b,3227263436,12987791913201792388
+1d4791ee-96f2-7d10-b52a-e0b7bb890026,212713112,5498984861732521071
+697a28ff-4a24-00ea-b36b-b82c9aee5f8f,602387514,17295278809876009867
+51dcf911-bbc2-3597-823c-592dc0d79298,464338169,4352175063304559231
+ab5768b5-88d8-c2ed-9696-73e7ba920cbb,455812634,13413810465984689254
+c97f619d-13d0-94ae-79d6-02140638bd35,320780929,14182516568630633940
+4ea099fc-0765-9ab6-cb8b-db58dd0b4cc7,2703079194,5093443953104542123
+9f65381e-774f-1be0-dd08-d952c28bf8a1,2026911489,13140029508076808596
+5ec86997-ac00-975d-84ac-4914824b75a3,3672000119,16916459681442361081
+2c83f451-894b-8f15-0c4b-b8619d9de5c9,3986862288,11611660482721644828
+0a41df89-0db5-3c2c-218b-fb97d0026593,3872123500,6661863816356748386
+bde00dbc-bdef-589e-5904-d953b1b9b815,3564261337,11351221735785227071
+8a9eb95a-187c-dff7-92ec-a34bb024d030,3086690108,8438879999975745745
+069eb5c4-fe14-9887-dade-145e0ee857cc,1328985306,688890363588175581
+a7d40291-f356-589d-68f1-591f51ed4bdc,834901004,4268963960474159176
+16aed489-e67a-cf02-7b00-b80272cb55e1,26974448,11749682048535056467
+52d3bb36-20fd-fc62-de67-d1df0802d49b,2812417773,3479030637317708936
+3084596a-7699-97eb-8f65-e43bb3533ab2,4291858437,15242709041145454860
+43ad2786-f9a8-a280-70b8-6414f6298844,3979221609,1317112208869818017
+48a6c3f7-2a8c-24ca-01cf-c98ed345f09b,4257150596,16656263928489353689
+37abbdce-1069-303e-81d6-261e03dab09b,3977046426,2312832206336204278
+379ac856-f061-ec52-9bbc-b06038703e6b,1134094420,18328993737366299560
+aa03d9bc-f214-ea93-061c-bc5124b738a1,33421556,10407484426937150736
+ff037504-1227-1ffb-4409-93d9e0051791,1333209851,8195881619630880294
+29a48f41-e566-fbb9-044b-7cc608a31dd1,4232679546,12283564716760651757
+68feb0a9-a859-7e0b-2e6c-23b61405b497,2317152460,4946130471280467793
+ebc2bb74-7e8a-1c36-c427-bda63178d0f6,3939245617,2744787949133437773
+20e8bfdf-459b-847d-5427-e5eb7dd2b9e6,2482101475,15166117601300639920
+f4a95247-4547-9670-c179-0fa6b7c6b672,296432798,2733438562210828686
+98c49c74-16e4-ce20-0053-b15d77e73ea5,1362293350,2871355740100308079
+5a55d855-d9cf-bc3e-901a-e2ff3a98be2e,3314863056,1327406707366252034
+5c2ccf4a-9414-55f8-36e7-d6ad451662a2,2969355406,12133974892461053006
+8203fa35-0639-c4f2-bed3-421e0f8c0c0d,2199804234,10633742190864233983
+b32458c8-09c0-ab10-441e-69bcf2e8ca1f,4187427447,6623543537703744821
+c858acf5-2c1d-5756-5ac4-92a6af5acd72,2368738161,10322770133222289043
+50d5ab9a-63f4-b293-14ea-a14a73ddc8bb,3991782638,17437961563564932282
+e76ef221-d95c-aea3-3654-d7cd4c2b520a,669408968,10928618312362392682
+0700b0e4-8381-5107-c127-4c728de04c75,2823924490,16595002289726574803
+64249b01-de73-758f-aff9-1e01b9b86503,3752934627,7153046146232806233
+11dbd83c-0062-3138-83f3-0813387c239c,3872667135,6494812958654055133
+164593a3-da13-aeaa-5110-768eea1ac289,1553745001,13661352210981595451
+39ccc05e-0062-d3ec-3c8e-570faab4d1cb,3088157415,4645679303141236382
+718e3b13-d52b-3d89-fe90-7d6d68a61c9a,1483659637,10212665491389936009
+72a27a5a-d3c9-84a5-cb38-2a824286f456,4247098621,12004212996359754725
+16a1a0c5-67ab-4408-e13c-a14b7eccaf1e,2745843997,1287610213425548637
+637d456b-6a81-7a0d-94c2-7a8bbf807242,1376849508,13726427182522335810
+606eab25-d126-d426-bcf7-6e342a9e9754,386089923,16389866132849381695
+26bc5438-f649-014c-0f45-b2d931815763,1970551747,436590289945506056
+2afb58ab-e50d-e022-3232-b2b7c7cda82b,1979537427,1582938740820135379
+1fd8ea38-443b-7932-1de4-ac1f04a541d9,3373641239,10209394900254103821
+3a9bd5db-a02b-59ff-57da-47aa86f7d8bb,4008503628,13951222515205474986
+067f83bf-f819-583e-c9c4-c82862d6a7b5,1943651006,10100707600039138945
+036fe589-820a-22c6-1452-ab6b418b25f2,679505781,5270534490398953710
+5b0703bf-9d4b-af4d-00fa-1c7d24442aaa,4123535344,9874380451441213424
+e1aa3a53-b835-5d65-c8cd-8335621511f2,760583035,18090609041172365398
+1a15d47c-0316-85f9-4401-44537b196e35,2494512943,8229352831690080766
+ca31de72-7e20-e96e-7866-3d8a8fc07299,3778164522,221939679383319103
+da8a5829-1705-b94e-56ac-4e1e0a0fb377,2730986299,8903064965851795718
+455e09c2-6873-ace2-a5f4-b86c163e1ddc,316781381,12762818297044407051
+50ead4e4-31ab-23a9-1cc5-a6ff49e25cc0,587897511,11490653019544475250
+3428cd3c-07a2-2c26-335c-8962f9d61256,2028010049,7355845590536521394
+a3473e44-61b1-4323-2c7c-3900d31af9e6,2725945561,12576779757576803919
+c22f9da0-6ca2-d4ca-dfcd-6c3df0126dd5,2112753678,16700988444442532381
+113f8464-cc40-3eca-78c7-554c76595966,3754737767,3286901634624683634
+93934f12-4620-4c6d-9ec4-ce04613858d4,2966306466,11586942107436447836
+bf85d459-ac24-fca1-fb79-99bb101a88aa,1881555180,9014881809051932199
+06678b64-16ff-ecf5-ff04-87260049b602,1045700495,6902233692024838126
+206d4476-60ae-dbdc-0b8c-f0d5935e26c9,630729408,4828540324850427052
+27a20bfa-9bf3-e939-ea14-35a246fe58b9,3515481980,14914396834040157344
+4b9aba93-cf24-3089-2c8c-d1b88b9417e9,1721655157,12093251543763693804
+be2a31dd-c91a-cfe3-f68f-79bc7d8440e7,3578193245,13136131503902140202
+e858f253-a720-83c0-e932-3e71ed8156c4,222330030,11149727195383922272
+e6847e8f-6be6-ae0b-62cd-0bd88af84507,3163148528,16903069403222381119
+2efb1a47-cbd2-95ab-c3d0-328665de86bb,3731121928,15196064863594063902
+e4765366-4d60-d843-67f0-bd8987729e20,2797050432,18400322161731921512
+c8c13b83-a511-1ef6-bf78-66ec9f2856a6,3537901804,9938480051470774194
+8f53d6ee-7483-8fbc-d9ec-0b9d9d48eabf,3816788685,2278416591321991245
+1ff2f649-6135-8878-6f5f-1c95890d2220,2027091196,194894591778118479
+1109db98-9622-f9f0-ff55-82d42398fef9,2146796583,1299200892902855476
+e27565bf-0189-407b-d5a3-91a5917cb5dc,1247043337,7767441650722676654
+3d132719-1cfe-90c4-3299-f9164a684454,1084314328,17226887205348367091
+0563f28b-f849-0244-5f65-8f989f9bc2bc,3424744488,6516633223464015697
+825e8b93-b430-317c-e647-c7d06e28ee9b,378577871,9544529898675526346
+2ed6003f-6a85-90ba-3c38-d7531fbfbee5,3969472019,11319609350039392053
+34320e2f-e99a-104b-eccb-28d19d90ac96,120624000,10405731824237376539
+dd71c445-c85e-f24c-1fdb-e78d43f1de7d,2161417475,6054636189788536391
+d2f39f1d-a6ff-fcdf-e802-5606ad71bba7,16808848,3656600841282188374
+a4a3daa4-6ed3-6a5f-7ca2-8a946df07f3d,2322803440,13925747601566965886
+f43b4c4d-5c6f-7557-8819-dccd4fc45826,1152337456,16287312537997650168
+d2b4d5d7-f908-644e-59a6-bf20b194183f,1347520757,17998043061645726453
+b44f23f3-9f4b-0962-7f38-e99ea24539a2,100890724,16949091003866779397
+e854b983-b297-bfbb-bfe6-ec0c8855b3b9,1677008660,4871062660298922410
+ef1f73cd-72fa-6372-8589-90e7f3df6c39,4062169077,9471085290357277418
+3a68bd9c-a3b2-c37d-5e20-b1079e1426af,1402944982,506139672893160119
+1d0aff3e-5865-b623-09a9-8cb654c97e75,3713773469,6960793730438748121
+d8075fb2-6705-e1dc-dc47-bf5dd447fb05,1889542420,13731254168732604847
+926976ad-02b9-f174-c32a-58b9b8865120,1960800207,15403947171235918716
+d21a9ee8-1292-af6d-4c58-33c4a422c35e,3924755002,7264221325860834612
+9a065fac-617a-0ce8-5220-ff992b837fec,3594902036,6752438964035629884
+5883e88f-fe1d-a817-c193-5be8bd3de7b3,1540736170,291297026954319269
+8b301672-575f-71da-b64f-57415de348d8,2892310353,13168994654310955166
+5d7a2608-f384-a4d5-ad15-451a9157a821,2867487225,1609979226821230054
+f93aa8c8-e655-8f2b-e2dc-9baffca1c9a1,895494298,10948257081413694781
+6c3ab436-cb7e-7142-aed8-fc9a955d5550,283832143,17018449049474979341
+dc6dc1b1-1c29-851c-ecfd-55e358712e16,629625933,12261380276871211048
+3d97bb77-1758-63d6-4f46-7ea28c0a56f1,4067711948,17293285388638466738
+09cc3d11-cbb8-6918-970c-4ec848c3056d,2125852063,9653851954325407299
+a273bcd2-84da-8405-701c-e34be0106054,1116491119,10606364142044171007
+d5376991-f1d4-f3e9-12b2-23b7417d3c41,3195097380,13721747333989058399
+8df4bcfc-975e-7025-fd8b-07ac388501cf,3460071097,17706968520812630227
+6e3c49c7-fa0a-bf5f-d9df-b35e4408384a,1233978315,6179059839375956083
+c332120a-e89e-b254-bbb6-d330245b4f92,2184012352,15977766465070996097
+b463e33e-aa33-20bf-6586-109402240375,741989742,10923573047241593754
+312312fe-8646-ab3b-3883-e1dadf0a3ef9,4267598036,8460309702902156664
+59475dbe-7b3f-294a-c6f1-8afa41df881b,1939565379,14198415787372834228
+1d02d1d9-4549-918c-2efe-2964d8d2abcf,2859682306,6426527484614379975
+e27d09fe-0068-8aa2-7902-c7b84a8ee470,1328896278,12953284510817716285
+d3f35e46-784e-8e5a-5426-8c61eef8709a,4132149176,5635520215390224534
+abaefb87-26e1-3f61-e682-910354b2c12c,645051762,7895619769838936717
+317e6a84-936d-d6ae-6e69-6eae4f7e4aee,1951039737,6198115680507068065
+c794cb86-9fdd-d85e-7262-991b19bf65d3,223269302,7208192396979729849
+5bd63f91-dcc9-10f4-fe36-808c68260ba8,3772920230,10853673529150072752
+7c5775a3-788d-d589-6878-2f7f97e501d1,213488560,9966671409450216047
+0f782bf1-18d7-ac36-afd9-a635e1a0a0b8,1935682676,1652672422518064936
+475334f8-1e8e-35b2-b754-e6d21b15ff5c,2408677712,13125732564976437281
+2d72f427-0e8d-0368-ebe5-86f3a11428fa,720236316,3421409739514250694
+b13d3bf6-c05b-496b-364c-b3c23ed44187,547739497,14988467504083168989
+944aecdf-31b0-3761-ef57-32bd66891dd4,4013901347,758170550012750270
+da6a8732-ce45-4e54-dac1-1d161623330e,1613041643,8166364347039220865
+91c2b99a-dcab-e776-2ecd-53aedbb45d75,4088292458,1794998523373230041
+13b35bc1-16cb-813d-858b-f397bef78272,569870865,5706671988588739971
+8f50920a-d2b9-1e5a-bab3-65bd3b4699ed,3558499473,8359248964896502947
+e6363cac-e00e-f94c-0f91-4d798c2d862f,1283939341,15127728189892399291
+5a5c9a14-f51f-ad89-5215-b982700f4aa8,3783432284,16692631938940500275
+db84eff5-86cb-7201-e52a-91d766dcb7bf,3449191182,6610780497356439947
+e1af05e4-e99a-26f8-865e-e5103af93687,2382784485,4350730768585338940
+92cd1915-ef9a-824f-82bd-f541c8cdec88,3865513415,12651229523909509850
+a1c52aae-ba64-7a73-2374-ccea82790872,2384757261,16417339411769465489
+2eaa51fb-bd8e-3247-ada2-0008fa63ff19,2034933837,5127108477369153965
+28b5bd41-547b-b396-0810-c39a77c6e96f,3171295358,2504722641957501071
+5eb4a421-b7ea-b452-462d-0f922dd5e8eb,2275763557,6926902659176526939
+acb1f0b4-88f6-4dc8-9deb-8a8c59ccf878,3795573717,17844025969232051210
+86cff6d2-b7dc-1ceb-8cd4-fc098b3910fb,1553091775,9365654961760518392
+a687a514-cc7d-aaff-0583-99baf0b94eee,3482489916,15075164427102152899
+512cc734-094b-f43a-7108-45cfc68a9d0c,3744336021,14991390300754610183
+18cb86a4-b12a-d2f8-f3e4-a7ceb854bd6c,443978459,5899479354106100559
+b3144314-399b-6edb-2fef-d22d90fe5bc0,2819172432,2359457528593076639
+acd7f185-c2c5-dd12-97b4-7ddb57e80aa6,2312325192,10703132578796628905
+cf08f3a6-a532-d818-22c9-7fed97772e31,168711683,7298280212075192656
+3a8e938a-1dea-3e33-0fde-b0505b0a1e4c,341366552,11882476344826475139
+fa38e499-7611-2946-9a69-ae374f97bdef,265035640,12985188322320330749
+5c8cd5bd-4ff8-ba03-b967-d2bbf0dc928c,3219409541,10097728411413510482
+b1a93980-c6b9-83ea-51bf-ab26a77bcbae,3900464462,4316436347083389233
+de142b4a-1051-b5bc-aa68-5345c6a65f43,842809978,13468530247315243161
+1b6f2d8e-4105-1e5d-bfd9-a8d71367cea9,4172066647,15132639924904109493
+1b94bea6-2f2e-f011-f740-696e2edbdbc7,3943320677,7930418319252723294
+a7e34e33-c266-5da9-031b-eb08ad6548d5,368833143,15807901618331259537
+c1f22ad0-cd23-cee9-69cb-f4bbee30f899,1695620096,12670356425768869451
+7e6c01f6-bfd4-b304-7aa4-d3e0dee6d0e7,2426644601,12919276984322977843
+2f46e8e6-3a77-129d-7ec9-83090d8a838d,939600929,10534388853141100587
+2500fdd6-7283-8939-9c45-9718ed8259b9,777022527,16788781830827578955
+857446a3-1dca-7303-8d50-da091011b6eb,2391733587,17142617611008576322
+8a7f1760-6b86-9aa9-9dae-0fbeb439019a,1550061206,5680780978968814038
+31e28127-55be-aeaf-da10-ea0d928b215d,1847280279,16651002843301013690
+f43e93a5-7ff8-17f2-7990-3bfdd85db989,934089789,17621884122883012600
+9ea769e8-df88-3884-67f7-952e70782fee,1808278150,10670795558519813223
+fcf471f4-329e-a5c5-8595-3024113521b0,3971346096,8281564866856987737
+5c149e91-74a5-3f5d-02f1-ec0e57308243,3997860895,3505485931195947621
+c3770700-a2e1-a8a8-91d4-a5b0988eff03,4086591176,1339434745085738300
+31a500fa-774d-9588-0d6e-d28721e60718,2347911381,17917561305882710617
+c0f74e37-c57d-5d49-7199-76b38b52eae2,238003477,9467662882771029397
+c73b4205-7c7d-b8ef-0133-f55f45a0b8e8,3051746383,16826664101110539274
+1f2d520f-8c78-881a-1077-e24b4c5fa543,4266559278,15981288681173240376
+21540433-4600-836a-9236-adf549902761,767628198,6035632383601109629
+c378914a-3c20-f73f-9a15-bc91482634f7,1361460915,14549542632876490852
+e9114a9a-9c2c-d54d-c7ae-c79616ad966b,2755040312,7678337428952803913
+a2b4bd47-5e4a-6385-55e5-3b8971b35d81,107088745,15067073514038122390
+c46c0728-62b6-941c-f244-ab4ae2ef6f94,391913245,3243181409735589211
+650d6704-d3d7-48a8-997b-42d3412f5edf,4048793775,14195133644809541421
+7aba5000-d43e-c220-2375-e8b81a4b1b2e,3590397579,16594622277042159635
+01d0e3c7-dd07-2abf-7cf7-b54b09652c8e,1962711240,9097150498258416984
+b342638c-8765-0399-f2fb-b085d3362dc9,2269139664,17483198765538951342
+2ce3b245-82cd-1ee9-0326-18aba4ac2774,576253154,15287077721105029978
+09d35514-7f79-8de0-ddbc-af920131a747,3212006089,13817781540417101722
+006a09db-13e1-e095-5829-b6b66e04fc94,2508964914,11927937970493072356
+27058c62-468d-6608-fece-82fe7be42725,914612045,12308383077469082232
+80904197-c435-f809-52ff-4faf5490425d,1443007772,7237870116868109064
+2d3be73a-e40b-0c69-26bd-24cb0caf0d0b,4236055474,7086562321434349682
+27a1b829-ee5e-4c20-72b0-83b267444a64,1698764308,11584191596385301227
+a919bf24-3868-0e2e-a369-201adb523989,536965422,2497570283679812310
+1f028af2-b0c7-b5ff-8710-4ca2c7e6165a,1587100310,17131553289330229220
+259bc6d3-3023-7b17-8d3e-6777adf34e8f,3414262984,8694010103212018379
+5fe5b763-61a3-3a8e-012c-e6a7168bd81b,3161118779,10490316707291041055
+e7fa4ba5-145b-8391-c077-68d3ae4aa5cc,1108106880,16197827524904104758
+41aa84d2-22f0-ca5e-873b-bcc7888b3f15,2703769798,13542111138472954472
+a1ea1afd-2f53-7fd6-5859-3cabc69e94d9,1227046662,13736822753499619469
+cf5dbf4b-3c9d-5999-83dd-9654b9152b47,4131516343,7723182013186115367
+21cbf188-3f3e-1962-8071-b7c57faa29af,1908442605,683432893025263937
+7e45859f-8220-e5a2-721f-4a0be390b06f,3930054818,5593046886944998167
+ff2af968-b5e6-9d01-abea-08fc00030e70,1839628897,5043555256947188138
+31a08db5-a318-2f0a-ad8a-b8f4a7fd2340,2622914865,14381076960753522601
+42f14e1f-dcf0-b91a-7ca4-ad87508c6482,643765690,1199576043054227267
+387e2a38-83cd-35eb-d17c-9aa3d0c6dc5a,1040128548,3184879404774709718
+d0bdf94e-0aac-0699-18e3-48dc2ee815d6,2523084783,11223701457457135448
+c81a141c-c6d4-fc6e-0c35-f97f26d0d1d3,4215182857,13500178868433547711
+8a2a1dca-4c41-33fa-6a76-15981f1e946a,3393351285,11969843457550046205
+870bf3c8-1b93-e8e9-6fc1-12b040b22786,2055382796,17044699882815867565
+1d93f063-6184-3122-13a0-c24358a6b3ba,1510947090,17721181482049917813
+13e570ea-6437-f99b-55a1-59c92b6c5a8e,1261206029,14019298848838005704
+665c48c1-0728-81f4-2c84-5d4195310d90,1880171515,8942103736729795540
+962ca9e8-70ab-7232-cc6a-2f8b97d53a6e,4059484764,2660989254158061479
+323b4612-df46-8488-e65d-888a53bfebdb,1111590882,1469373689924339433
+2eff43f9-94e8-9b32-9742-6a05a0f150d8,1507093413,5752251865168681562
+7a9fa4b7-4c6d-09ad-4a64-f250ad60524b,1023086402,633218927744110872
+53aa3900-0e75-6b7e-0f79-e1e82a36f8fe,2385855515,1218761463120510001
+4839e20d-b179-d1c6-0969-173aad3ccb0d,3841591748,10788519622388686042
+2b795096-9034-6477-4424-9fdb3d00cd18,1638385546,2644516604003482628
+1b418bbd-e02b-f60d-2236-1bb7cd307389,4138895079,15308761619230705613
+821ee1b1-fda8-4d34-5881-2c2675f641a9,3819755945,13678152422482432515
+0075f1bb-93a7-39e2-bbb2-40e28f0c95e2,2073827478,4019012603064658232
+1d25bbab-9d35-5d86-d8c2-2b7b9ee05bbf,3119265347,16521428160814527144
+0e9122c0-28fe-b105-f8b7-56291374e510,1874213778,3382658508883470522
+445f6c53-2f7a-7d56-1a76-65242b0a4e26,852291311,8355443146485697067
+934e1e80-e398-40b0-6ffd-566aa7358d56,142669625,6217016845942014061
+df0a0664-be70-fb77-5abc-0a651e4b183b,3784961410,15664559760245954776
+a5b185cc-70ee-5081-6cbf-7701cb12b298,727962990,12781504938082271185
+dd37cdc6-8ada-d41f-49a5-e656c93da0f8,1608774474,14981030538629866182
+7d8ce845-c4f4-4ff3-2458-2a81abfaf65e,2886338413,11840343507299473450
+83c218e3-022f-6075-0916-d9820b288ec6,3872234040,7487784200141315325
+6ad188f6-0562-9435-7984-4d9e3bea53a2,2922064088,933654463886087549
+adbe3d78-19b4-3b1a-95be-2ff02a59f247,300802060,10196186672709520856
+f8bb2fab-c5d9-4aa6-55f3-7e8cb1ad51fa,3735685130,9855828513159405297
+fa2a72e0-b7a2-246a-0f58-b0c8d62728bf,2318117358,1681035775087108690
+66727769-301f-9be3-18e9-473465cc2f03,3209726294,12879123060597427849
+669cb0fc-7bc3-c1a7-0ae0-01d6a91f2f61,3440709867,13058896972853200822
+d026e26c-e3f5-d400-7975-3c8c985d7260,361567914,10562160983945606154
+9e2fcf28-7799-b407-59cd-ebd7dbfc58a1,2813274395,17205607596473818118
+10bbd3a6-fb02-5305-a500-a16c469160a6,1647525023,16866481460383972440
+ebb30330-e172-3b4c-8d5b-1bb71d47a994,2082582705,6330201320201362526
+9528f4d5-ec37-26d7-0000-8a6e86eac83d,2127614769,15784267910063371353
+18a3b27b-eb66-4f44-031a-f64f2d454376,3450719859,10399345007272829376
+b0215fd7-86c5-d80c-d4c9-8e630efffd6f,1545549248,10116529470568742879
+0a5392cc-7b74-e1e7-ceda-0d2c19ca131f,1691166299,6489447170356138198
+f0d8b58e-17bb-65d8-eff3-90162cc14534,3976843925,16235679843726408597
+ed428b3e-552f-2edf-b18f-bf79077d76a9,1592483586,10170903425784946977
+f01a2fab-a792-58cc-0aae-b520600d7a98,656381966,582508674530841651
+476e3212-913d-972d-09d3-cba56a781853,406223739,4974122354090514058
+c9ee94a8-3470-6714-ea83-5dd5ce243265,3234689940,7837542965912499269
+f09df0a7-9750-74a5-20e8-238dfb9ddf73,1677248121,4014489441614341153
+e5fe8517-99a5-c47b-f198-a3442e0347fc,473004678,9881957432047975617
+da9eebf6-8d21-2d89-c243-bfa803c4c6fc,2522958965,9738019302679670362
+1483d096-b760-b878-e16e-055064b61fb5,3384994316,7992991599225241030
+27e1caa4-2a3a-a9e3-efd8-922e3bf21f41,2562634619,6243056958617077045
+c65ec5f3-bc55-1d36-c6a5-696c59eae84c,3126164018,4051261741819406091
+bc42cea0-0fa4-b253-7745-9cf8906fb595,3857150209,11486654145121574617
+fee9756e-a436-e953-68b8-664322d5528f,3620795270,2435600452640266788
+0525256e-6640-ac55-68b2-5c2946b22c2f,3892725601,10989250682219672407
+4a17bb63-5b33-0c1a-14a0-abb22ce62a7d,4081575706,11612667120538400256
+24623410-fe25-abc3-6ddd-34dcef95065f,27943063,14075953130609245588
+b638377e-a886-8034-e1f5-4c226a081f5b,2169383772,1721572979932445413
+6e710dea-879a-24f4-7729-013ddd29830a,981642307,2518823243159524574
+3dd22362-4d5f-a7e4-fe67-6c0bff0aca05,2352555313,11110487010755352528
+a2161997-de52-b2d6-3ed5-f932fa0c7454,991289901,18038602760325072163
+4a57209e-4784-a1a5-8256-d7a9b4a8789a,4236643874,14148226143270721552
+bc04facf-07a6-7fb7-34f9-d0e47805d81a,2670264909,1703803801391095480
+260c20ab-9594-7d98-8ae8-c87775fc1aab,1077365607,18439352158053731570
+a906f676-30e1-033e-d338-f92cdb9240f4,443972198,9932744575355055849
+98d165d8-7586-df7d-12ec-ed5360fb994b,2107125172,15723398850078124242
+d0742300-cb41-c4c3-89c8-b1f17cc08b2b,3360215857,9631724360336336214
+af914dc4-50f9-6ad6-ba94-7de6bff491df,3969342195,12924479245119660034
+7da05ca1-1abb-afbd-da26-c745b6ebba61,320906437,16504854142557054716
+b8b239b0-72e1-b41f-fc2d-b6855e3aba70,1466903168,5161700437545528309
+b6d9fd45-a08b-18e1-a87f-20646e97cb60,1008731104,11421019701821397620
+d7ab025f-3539-599c-5777-383efd8437a6,3279686724,4565375485816179851
+f6b0c8c2-2cf3-9605-64eb-09ed80d66ec9,3185638931,15092664823598263302
+3f6de1b2-d170-0b77-7749-a9d7336db783,1659900897,6889481945467423107
+01d8e12d-1e2e-5cd9-4b9d-4dc6591eaebf,1213628989,11238705813322288841
+cf7fb034-21c4-4091-48c4-be8563d233b1,3158864566,17539377843092912015
+ef124dcc-e1c5-faca-c324-90d3e3d545c4,80486041,8260881698546480078
+905c9da1-b982-c1d7-905c-0a6d4bbe180e,2826971229,2122121571898028214
+47b788ac-4df8-799f-f7a8-e15b17f47772,1012405811,4754428964542289344
+000bfd55-f563-a054-2cb5-e4456c7f5cf0,2460939637,9946800103511513645
+9e71176b-bb22-8e3b-fc91-0fb9f71785d8,1757741895,11324454306919803695
+b886f219-b15a-6923-02f0-63c367381e54,1169173515,997581925586335369
+85e042f3-650a-a90b-e828-38971680d745,649001049,17842282834062285632
+e2faa0af-fe7f-b951-4c3f-74373e3a5f28,1801673380,9377801672518362325
+f5bdc806-da0f-e299-cecf-85007acf6ca6,2368143658,10484896001662635974
+27476479-d7f6-eb21-e9cb-65cae01738a2,4030879072,3098300650827147525
+0fb7fa6b-7142-2e53-b852-61118ab3b293,3970542099,60559441002979917
+e6593aed-f414-d187-169f-1445c18a76bf,3456322243,8149516032081544713
+d5e850e5-4d1e-fdf9-e4b5-2fa66219256e,2203315449,15855335267316917881
+f0e24f98-8457-7aa3-3973-d3f58e35775d,3273971992,5473280523088260436
+fca477c8-9ee4-631b-0171-f86226b9d5f9,2541880067,5829601224854496314
+64de307b-71c8-ec35-e0e1-23b21e2bb46b,3141950236,4316902652238212302
+0aa2d2a6-2ed8-f322-01c0-a91cd3589928,1047584478,17242663455298215162
+b2784f3f-14e0-6d75-d99f-094fb189bef5,1602540138,14050047974538318343
+5e53db17-2404-7aeb-6f57-1bf15db6c92e,3972846820,9833530377343228751
+c9f19612-9b24-9f4d-a82e-5c6e7f2e5a34,2965198087,7594143301297504017
+4b8fbf7b-b8f4-397a-0113-def72397f106,1421274243,17192635979305164695
+280a5ad7-5823-5374-e6b4-a52b27452363,1011150676,2422899305937981514
+dbe75b06-3634-5c79-ae76-a0fe231bb64c,482924336,335687167653306077
+028bf6f6-dcce-7fdf-569d-63e82d65ca4c,4123168178,8636255528986240650
+48286611-d554-6079-d55c-25f5570cb9e6,1186493192,15603597024367280606
+a5cadbb2-a101-4128-a914-afe89c335b79,623947633,7613027880685244503
+4443e1c1-55cc-5e03-760b-b4cea587c003,2165085560,10406508986143774990
+b6678ed5-0502-3fe9-7134-939affa9e535,3722503499,9372770354620461143
+b29ccf41-497b-46a0-d283-071d80d33a22,2657335665,13980105212372988867
+c55efc8c-6b64-73ed-3dea-591b93f98fb0,3986508359,7800024594114977877
+7b8e5299-9564-8a9e-c901-8eb9e3133b05,3781832800,16747951241264133253
+868d8594-078a-fbaf-664f-9e52698121e8,3859008690,1832033069838265185
+e3ee1a9b-6c7e-38de-ce58-78744ec8661b,4199456462,5527996271193358697
+1e30687d-1b21-b697-785e-4b153efd3851,3509638470,17188253140960100009
+62278bd4-2822-3034-5bdb-5c06261350c9,1775938137,1703601404982005108
+5666e077-f61c-c889-3f68-7f324f96eded,3151817516,11875492141521349287
+2c700915-9463-0ef7-61ea-e10bf8014151,1844069126,2217234626097924551
+91182e53-eacd-c9b8-4d1b-0456cdf65539,1987448606,4040668033007331120
+2490da05-9ac6-b840-f190-993bfaf0bfc9,525292434,1420956013258797518
+322b2d9b-fd9c-719a-c032-9b44771fd211,1755686978,8529948111694349935
+286dc2df-d83a-f166-9973-ffdc384f6dda,1063961005,8836858230545706091
+843faa67-f196-5c82-bf45-ac00a27c3f9e,1360840782,16318095436058524197
+c02c9f37-e24a-75ce-4eb6-4f5ff2f31f85,254548133,97958690876889456
+f5d560ba-d5b1-d7cc-313d-837701de45fb,3492415645,5410578787519716179
+dbcb6676-b6b1-e843-0454-9e6d51a67427,2807110676,13879822634229392652
+72e4c2ec-f0b0-c315-f312-b60dea4cd8db,1490611616,9760647703442784517
+d76ce0b2-798c-807d-0b0c-46d7f630c4e5,2501766214,2972408760619916389
+377057af-6066-48a9-1f2a-77c96a3374af,3646983845,16177796297197203356
+0fb377ae-4583-af6b-6367-9651ec3cb6e8,3213518256,12768697138177442022
+65f16a6f-8ff5-3a88-1b35-e77b00076e45,1036286256,5529984768855268714
+a89eec48-e5e1-e77d-cff6-a869c911b572,3553834614,13231787304506906425
+ef880e5e-a7ae-31b8-768f-fdec93d3e2d3,1437312652,11884288836111188667
+5606ae52-38d0-037a-7419-dddf8646f8c8,3750342349,14248427966989726860
+6b7cf1ec-1163-ba35-c5b0-72c19924662c,3072252233,11359997903406509037
+c50ab8ec-a5ef-0889-4159-f0f3c454a168,3991001598,6117167096279058260
+b91d80ce-12ce-8fd4-34d8-984f5cdd68db,1900932316,13962495088905931413
+f688ebcf-eccc-b16a-9363-8094d8109728,1826872711,668161481893198182
+2b103d6a-1464-a515-69e8-9874ef2ddfb2,1630747424,11039249481202841528
+6e43b2c2-d2ec-ac2e-6628-89e84eeef5f9,2643098567,11518111725765700294
+fb4c8f10-e60e-eaea-7a1b-2cfa4248ca6f,807860154,11919554263180096101
+0f967a46-3304-f1e1-76fe-485059c44535,3264254333,15372250834054833052
+3c9d9898-0945-436f-f403-865c3c7b0a5c,3437875561,17532708811244654220
+c22c0f16-32a9-b060-8bbf-63b98f875d41,1459725719,17833155522992274597
+3d57e59e-7898-2472-1f3d-7d5f313418cd,2509733258,10956377156816943178
+3467c466-5340-af6e-9482-9aef07bdf5dc,3322827565,842007127671366347
+c9437292-95c6-8b26-8b13-7104eedaea5b,2191173905,7115212661515882292
+ed40d3d2-7976-f627-efb6-2a8bd4ab90a2,1996835583,3204886969482051972
+eec94a43-18c6-3759-2465-4d7d8596e49f,512049790,9817509894757346433
+68a1b25e-0ff7-a0d2-aac2-1c5c612015f1,1641696305,6549621079977700910
+42526547-9848-ae7e-8041-7a6d017f08e4,614842238,9750746018526912481
+4ad170f0-c9dd-f8ca-bc72-8c636fbb4183,575791349,7663304951547986320
+526dffd2-f3ff-aaa9-c65f-1dd09742556b,2035471992,1363157320680558108
+8ad515b0-a7df-a0bc-eb08-3bdb0b69b78f,1002910000,17496497404132479208
+27c80bd2-0ee6-be66-8acd-7828331c00f5,2096087146,8334941823072292933
+a9fa7d4f-4fc1-0e0d-f69c-2e061ccf816d,2283963177,12110460171182178524
+59275ed1-86d2-8c92-3146-95e8b2229c6d,929380661,15566281154942287660
+70a80623-ea35-e7a7-764e-602e42e5c595,2562496267,16076866834701291108
+5f974982-af9b-881e-452a-4b1428276a4f,1916986631,5299508281072284784
+d1f55973-7657-66d1-8878-3e8e68d7e6fd,4222093000,9901601356410333935
+9abe9c5f-4285-57f9-99e8-a54cfc62d3a4,2121644193,12940287329011365081
+ba75c7d1-6ad9-0122-aa99-ab9dfe40705e,2915295274,16174920130315022147
+4a34eae2-e72f-ce91-3f6c-e940cb423559,1454534620,10295055614989514221
+c1d468f7-e5db-3338-ca24-caf40c2e26a8,1559063093,372291253192028977
+49730825-7a05-b9ed-59b1-ecc8b8449dd8,1859900541,1576303960478284837
+5dda0bf5-090c-7017-9f76-d2f7b9cb0995,236058284,17939182609253799621
+4afea1cd-c03e-7d88-41e0-9b0864ee2903,3790912863,1535364808370815288
+d0d65f9b-12f4-e36a-74f1-9bcdd0081e23,212160934,4026976359784018570
+4d4759f9-7eb2-6d16-bf34-c12e656d0431,2938222715,11312337232883910507
+9083ee85-2dd2-f936-b0ba-86a0a61f28f9,3407204131,14202696835675946252
+bddcbd62-3ffd-c432-53da-313fd84ab589,4091491973,10724847805048925941
+6ddacd3a-9c8a-4129-094b-58274107f618,2875145734,4797510783905401911
+bd54d43f-58ef-e02d-aa57-d2dc25ede228,1587597196,8355952679154866453
+7f2fbe74-f98a-c2e2-5cd6-9eaf9f17f65d,1757278295,11087324165999336844
+fb8a9e87-91a2-6e6a-0269-111eaaa60751,2414796209,4083448468453339043
+a5f55852-6038-fe6e-5828-4bddbab9f959,2291951343,594331654151350986
+44000ad6-0109-bd44-643d-09496db5ee11,1384193167,1420634907446054932
+98401635-e9e0-fa1f-a98b-fa1edd17117b,3210403281,14374439231310268786
+5cdf41cb-44b7-6c6b-d56d-05a0d651e36a,2347903515,10551927823813264642
+c68e1381-e7f2-bbfc-f83a-2161ed95b536,2411000510,9051762098384366079
+4e539a65-830d-e2d9-ef2c-e076fee8fb62,4229028200,3390737541192309762
+ff9e0fad-63cb-33ac-ae15-d89cbaf64a2b,840305591,1347973263876725406
+6593ffcb-c0c7-94ca-ddfb-48147e1f132e,4060483106,378121709218436880
+22d65876-201c-7f8d-3671-62cffa2b7655,3040851529,12914077374791994241
+415a6e64-445f-f0a6-c5df-27ebd2f2b9fc,1363817047,9109132710401302219
+d5dd7684-6ddd-2185-09ba-9d3f89c827ae,1899231104,8989090301861214078
+9682a0a9-1000-b6e3-5afa-b857aeb31da4,1858714547,4270613868460902681
+e8409551-fd95-efee-6a9e-ce3e668e439d,580897475,11992474119133591809
+307c5a54-fd51-77c4-81cb-477f80276c7f,1654188159,6700064193134673936
+499ac0e0-4016-ab45-236f-a30f5762158e,2987141873,11933287740654582567
+e73deae4-e856-35fa-2c83-3e47f768de72,1485544216,9806343156320312437
+534f5bee-0137-ab7f-2e50-b8f96533132c,2677607139,3287067564966081230
+2224d3d0-c60a-a86a-8489-aed3f0af8668,777640192,11911838916678341291
+058280b4-0d62-6d6d-a8e4-23a3eb2b775a,1232858796,5606167151282324943
+e750eb15-e608-dab7-16c7-00b4b60b0848,1184383943,241109904064317194
+9cabb814-c009-f68d-5618-74d7cedbe96d,2992053151,5210905169602661937
+4a304985-196c-93e1-32b7-7f4b2cce3ef5,1896599941,383616734232717668
+bb3fd36f-1d21-79fb-6d11-55d8896ad416,542126326,11609486642604757126
+d6c5497a-302e-4779-d668-ac66d5a9ba30,4177315341,11311493559774890449
+e9075ca9-7e01-c033-7f16-398e4dd5aae0,2794550030,10075301507972615750
+cf28f4e2-12e9-c518-2d86-64b6a2f965fc,228147760,18011853214149970992
+57710d2b-8f72-f1d9-0095-2c39efb0ef28,2253289654,1036012879912952048
+6fa3487a-13fc-7bb9-0de6-95199142d356,75696283,6647498123712716441
+38abc749-e4b3-7d67-4fc0-f15e7a7fa942,3781017053,5471075060589650572
+d7e65f57-402c-6d1d-66d8-dfaf7da74fc4,2886351055,8830813231879327169
+8b7c2055-34da-b4f2-1e56-30af8bc485d3,1857246622,17061267448220175147
+b864e6b3-b92c-615e-b8c6-bc63b72136b5,2452591881,3714253344660938836
+29d1c9b4-ddac-abeb-bfe9-f63f143da5b3,3123273432,1680923602890613571
+6261954a-e152-47aa-c714-9d70150eface,2220753818,91911745282052905
+33caf50e-effd-38aa-e785-6b32dc832c23,1038024694,14251984737169688109
+bb6c3163-30f3-92a6-1392-fc5e9d738817,1694644675,11378909782596839718
+e1da4d2b-cee2-e652-5a63-53eb9492c72e,1097567989,6200126052468517711
+6eb377fb-a5f2-92cb-5817-6161d5065033,2156203427,5229420850009222997
+439c94ca-da10-d9f3-e0bd-70e8ff146ab4,3528336688,7659188121728727065
+f56bd6fb-6cc6-6027-27c8-2a8b5a189b71,1794517077,15328961837096147500
+b4ed50cb-e703-8e58-032f-c40a37cf0e78,2636792154,8314551769120353415
+b7525539-23e9-d993-1b46-12ae41d2f6ed,2894009465,10488261277774424956
+a86d54bb-8c4c-fb45-660f-b4dd9af68f95,2508292357,1217472969090441362
+5de0dad4-c435-2e02-116c-c5631b18a6c6,3668577707,15178835977988803384
+ab7ed6ac-a53e-c86a-4843-16946eadc4b2,3851626664,16599248038287840402
+e00afac9-f318-2d2c-99b9-c8e0ae5e59f3,1650843211,13254259794907742139
+ccdef91c-9490-d8b0-855c-ff1f701bd2d5,997999975,7678252017815075101
+60ab8c21-6143-8cc7-932e-7f86f8de007c,3338847315,16293152559660427010
+60ed630a-29bd-46f4-9926-ab8bd4726442,399856287,2703232241753936344
+5f59fb27-ef9d-68d7-3b41-df67bcfe3674,936361515,4270909849609682328
+40bdcef0-2925-affd-e560-3371ca505ea9,2337355192,16520159398823030949
+292c864c-c390-a1b5-7ef0-c7e4a0c93ef9,2909288334,4845627385354453117
+e140ece0-f587-b203-8503-3d08d84002cc,48316801,14136068405567072217
+e9d4d30a-81fd-ca00-305a-039e048a4d8e,1683057147,10253896514487158353
+f3f8623f-8d94-9f4e-3cca-378a224aa856,2198618257,15765180764525087863
+10edfc70-2c3d-3f51-4a90-0c7e4f627a41,3724415507,8759153767098356679
+96fdf3a7-0066-1640-c644-f08ad1a16db5,338299062,15537124826481476961
+29c8d15f-e1a9-2c2a-3228-a80c5fb84daa,1806822927,229131100236944328
+a2ffc947-cf82-5ae1-0301-7877280fa9a8,3780847044,4481460530701676317
+cb009a35-7aa9-d8ec-f62b-8216e84792ae,2140590889,18092115792573650986
+177e3925-b21b-3240-2d33-ae262b0d58cf,923832088,762432085650810780
+1a1cf0a3-aecf-2ff0-7d05-39781d391bef,3387934191,14961404177222513310
+d2067acd-abfd-3cf6-1f79-fdb83e9b083c,794321992,6366953319474700443
+5d6f8959-f9ae-0a50-057e-1fa0888c2d04,3750104971,1239058635315349807
+c1ada73c-f9f7-281f-cf77-a1e31590b020,3035040280,7407536233169565624
+1a57d852-6e4e-b657-3a10-6884f9c20230,1345342608,16927391934428557543
+2e099f4a-3062-eda6-ce5c-5bab08f47664,806230717,7210415890027825991
+9f5ece65-b898-1a64-d36f-d6b949d9f3c5,1866484621,2031235624088005884
+49f54374-b323-c310-e926-2f871071d383,2496596368,9176272031764951263
+14fc5a63-e36c-9b7e-fad0-a7f4aee5ac40,2041794445,11842950563705612837
+c19c9ebd-3a97-12da-abfc-6dccb79ad5d8,4287525701,7753901243742941899
+c1b16a6f-f2f8-3188-8d5d-6c3cc90db515,378733675,17650093148824694883
+ba691f21-f005-ae62-2726-5ba4d119fa47,214580155,14259289061494768566
+3453d205-2099-b481-96ed-0cc013712138,1741550599,7132356807819745015
+fa88afa5-a18c-c763-e5ea-ec4758108d5e,2561869562,18052572436176977157
+e2848eba-7c71-9870-e377-c8c4f89f637b,4173194394,4267169865449663230
+44eaabda-f152-2bf2-db95-14ce91deeccb,3565988331,10714729509175233254
+2dba0755-3c0e-26c1-715d-a2736ba56c2e,3381934743,13314278838150396453
+55bdd088-8c91-34da-73ce-b35ac65af263,2608744269,3759273732525695337
+bac78a55-38cf-4334-71e5-c5adc551c043,352426835,6642885094396682124
+826cd38b-8e52-3501-4c3d-29ad661430c1,1067395192,17622062315755178136
+7d089e0d-254b-2590-5d76-6bd52efbbdde,2509491517,3686865839697341203
+b2b1ddf7-331b-912f-eff1-183604ae10fe,437938660,6856874181042351458
+832986b9-40e3-e347-93c9-3815de3d3c24,2888838838,16275383266970188755
+00380eb1-fa54-0994-0e71-e7c20bd248ca,497567082,13390843388407165774
+34c6b5d5-fe35-dbca-e512-d161e7362320,1105209581,17209566851959903723
+52ba0543-f6ca-afe3-3c9c-520915c84c2a,1409284261,3874588706052892800
+4f0c2c08-5277-1a7e-f8d4-7eff47bca2c3,870138751,11175680825609582158
+aa3d74dd-682e-3153-ae89-521b81a27e35,3040731802,14846467396989735897
+716b0293-3126-8878-6766-32431d41e147,3286044093,1080217261064883098
+6283489e-e3b8-00fd-1fc3-dade580cb33a,3937238621,3825850612948110612
+4d99878a-0759-877d-5db3-5af89887f7b8,806338532,13358356745774325619
+7058abe5-eac2-2232-7f8b-c74c6ef21b86,3285170462,4235346816520320958
+fd029af7-feec-1f20-d4e0-c632080d9146,1282741968,8112682721389767483
+5eb539c9-5f9d-e0f1-9d08-c4678e56957e,784420631,13501301794981984905
+197f8ac4-267b-34da-5518-17ae19e197c9,1252157930,1970427126595669870
+f134f8a9-f589-f48a-b41c-5bc5f88b99c3,2570251013,18357935335270326114
+bad14c7d-b982-8647-f85e-f0346c7520c6,3245960831,1260338357021187987
+87f5495a-1e20-ee6e-bb9d-74f8b4370ee6,3609911797,5010304462825817548
+95d2c1e9-9201-3208-5bc0-d623f75ab4cb,4052955202,7263004431942008052
+fe685b6b-d5fc-21df-ceb3-0fe0bf1e5d29,3946660804,6865291850401620429
+98ed7ec3-43ca-f35d-997b-d011f3dbfaa6,3692663206,9342630364052095322
+a5897d46-ae1b-2b08-07ec-4cab36ad2794,2368351897,3193795411742920832
+15144a2e-2487-c9cb-0f78-39ea22cc6b55,1498149435,15057581412723876542
+b348a601-6a5b-0a3c-153d-b09bb8230b81,1012831252,12458288476665514452
+bbc0f052-bf0d-d97f-01bb-6119966ca047,2505701126,1092233028849507713
+39aa0893-c095-1b0a-f9b9-b8ce8bceb5b9,3259464490,441618854357614648
+90af6385-caf5-0100-8eea-901d475b0367,2848769183,7949492811434754778
+238852d2-c5cf-d94c-444f-1f40fe50a86e,2778246705,2970744806056506092
+df2d8e40-d890-9eb3-5d31-78fea0100ee9,510433445,10839700134663764146
+1ef9206d-f132-796e-0889-2260fb30bbcc,1563880834,6759200026101889741
+0e7e8fd6-4359-9666-19bf-4c8a60289b7e,2134032550,14262220861648103468
+1db5b81d-6f46-399f-7d92-116c7485a05d,649053321,3892044609816978669
+e995e1da-2dae-d43f-ac03-31b048001435,2600923995,10662634402605881897
+4979fe4e-7cf8-04af-ca37-2a13b5fd06cc,1843704977,16005670625786796236
+ecfb2071-e79b-7286-3f66-c43a96e99e09,1135216804,7138684324396805401
+b7d8d2d9-f227-7870-570e-78d04a676f15,241962690,1494875070446167090
+1764b36d-0fe8-e2f4-b579-1d94759fde96,780612339,16899853242238916842
+30372a79-552a-354f-9a2c-a73922849132,2270752168,6967356618976207337
+720a6391-048d-56af-a089-5369e4ac99b0,3545643420,12725184918429524495
+9e2b67a3-fadd-f052-9ccb-44897c4a22fa,3392003076,5378702761405682737
+081be546-4aaa-3efc-6d8c-f37905d1aba9,1834874694,6620886125846758040
+c0582889-14f5-9d04-ec1b-642c6da91d0d,644248150,15547587751045299707
+9bd69c9b-5334-870e-28ea-6e9d8868804d,874063128,2927650378483486480
+d01acc68-dfbf-170e-409e-8e9b15b01235,2446486976,11989374463975720581
+7196d55f-2416-6520-49bf-e1c8e9ef0ef6,3243537983,17426378938066308457
+07d91c7c-bbf4-b16e-5076-7af7594fd4ab,1470407426,3122017445355603408
+a64912d0-dbae-0150-8c96-49a4744ed987,1167674719,4447355991274887862
+18ceb8fc-48ae-d9e0-8811-8edd6ddcfe86,2366807403,18117861393061724930
+8a1ef6ca-893c-a26f-98e1-92bc9a0bf9b0,3080580392,10094465482227260207
+fc1021c0-d953-a14d-fe20-8db4d225b72a,1930899509,7323474586574022864
+42dddc8d-d077-2642-6b5d-4cd2f0cc652d,4085756343,3303523377132991634
+138edf30-054c-02da-8f0e-2a2bc0a1fbe1,22050330,15707274059439276051
+731e81e9-0bbb-fd3b-9689-9ff4d8572925,1708250948,16109537384738930558
+6fe5c9e8-9947-6afc-5e33-07222a821204,249400384,10956103565921759270
+7d5a41f1-f87e-d72a-662e-d91b2d5d3466,1505494650,6452354295519551621
+02d30093-f758-33c2-548e-eb986df0cba9,897049066,10889596038248156540
+c2b1ea6c-c99e-09e0-5b58-46bdccd6ed45,2476509881,18241230488499574949
+ef451ce2-d30d-f0f8-08d0-4571e8cf1289,3788074541,18026850510360943582
+29423f70-9056-25d7-1102-fbfd445f0c90,3837892310,10836692581771002482
+cad835cc-4a9a-52a7-6ef5-9794b1940219,791859149,263138975758805955
+b0a9b3dc-7b1b-d4c5-df27-c9786e35727c,2370978001,16045673842184137092
+d0280283-1f4d-f1f6-e273-76898810b57d,589290494,4978440571526047101
+f3d1d89a-1878-3640-c764-57f9f44ad99a,1829985837,2723085523687621679
+650a08b6-de9a-9e20-4279-965a46cac535,2277482092,5658457935504517385
+f7e74801-829e-5f66-bbc0-31d46f06e2a0,2823722112,14596037632813871246
+6a64c9c9-34da-4f79-1694-7fbd2273a314,443601214,12105606814518897030
+22de36ca-7bff-c6dc-f70f-7dc0530d62a7,2916625283,7130884341778749669
+39504e63-11aa-41ae-d5ac-51bf4dd5110a,183854939,16242611063943294923
+03d6afbf-4c6e-3f68-d0de-4b838fc2bc5a,1574038276,1976290916692885647
+3ce87596-dd4b-58e0-53d3-0093acb037a2,3388433110,12540088790367541218
+f188984e-e751-fec4-2917-b11df8c3981e,967102126,13135952964545755716
+f64a731e-0b6b-48c2-3009-be9a8b52ff0f,2598443925,14914043228532869811
+1780bd31-467c-8e97-f707-cf391555d660,3941914315,10671147403296833903
+131f662b-ffe3-50ea-7f34-32b391da5fd2,2633229501,18121379521500168190
+be37d673-924e-07be-5732-b7a9db829e99,2129154276,11779576613578822393
+2756a78c-f93f-ed15-25c4-5f3367e7d38a,3196672684,1290901569230005857
+7da3a197-b076-6827-dabc-0640c3de194e,2228827196,2850553360905327286
+493385c1-d4e6-2cbc-1931-128bd9a5dcf9,794271414,10036218307699940587
+fab72074-12c6-26dd-5f83-84a18eab504e,4092234149,12081698749978023749
+34b2b03f-da7f-d31f-3466-6463b5a514e1,418232355,1657663046542506462
+cccfb794-a1f8-713c-c5ca-b0b3334e56f8,2532983068,3331219174955056935
+6af6f5d9-76d4-acaf-f444-13369b22eb39,4107938930,5219816265888898963
+bc162b84-f00c-ee68-7a34-bc4b91856473,1330517471,17100332729183146918
+5f6fa0a4-ce89-2ba6-63f8-37480c17f9a4,189045359,7430195467209211507
+c8593535-3ed7-fb63-ce54-70c0f39ab1ae,3993939303,10132877425278106142
+356ff4b1-4319-e475-90f9-36e43a521b43,519361913,6708271474026533007
+cb449bff-ed2a-9ef0-c624-7a0ef31f6bde,1372253815,10249846266721870380
+2ca71a40-92c6-7eca-b50d-5f220af81aa8,195464740,4368910200899455804
+96dfc646-6f7a-121b-df8b-7ae759ce9fd5,723823718,6075991123390777070
+5d4befad-5c4a-8b4f-3d84-b2faad43c280,2602335130,365844275026835627
+7be884ee-8995-e4dc-9c37-2e696c8dd7ee,3420973045,17320728311323405902
+98273927-8b9f-e1e2-d7d7-e1c62a70f06b,31278612,16464719288637425210
+15661f85-0cf3-551a-5ee5-a44c81aff146,336602422,14713097908687658861
+bf0bda8e-1747-d104-052b-a81c5e520ea9,767324536,11301835963371707639
+d5b98aa3-0d17-c377-e46c-38b706126589,744550306,18067913610400508078
+ac8e3d45-1211-cb27-20f2-c88af36a4530,3570214424,5621792276337318524
+28282851-7d80-cfba-5c9e-c8bcfc35ff3d,3569569727,12534713012813999834
+bb9a4a9b-1fa6-ab26-c9c8-92d7d9518f4a,3948903647,7517156154588611834
+d53d0ddf-43df-1cd4-69a6-6a800f28ca4b,4291305042,5707875215825541714
+164b2f29-a571-c515-5e9d-684d8053054e,3443778225,18016540463746238783
+a4b62567-3247-e0c1-48e7-9d88f992f376,2420754134,516089552626066046
+046e0663-9006-d66a-5034-429190911794,117215614,7081555296334858363
+a6b6bed0-e141-0103-eab5-03bd397b6911,2564625933,13781503919643820062
+d3f04899-8c46-1f37-bd00-8acebf8061d7,1565443800,11069484980308710663
+806e59e2-0181-21eb-8fae-aa7c224f3c38,2973138252,8894227852384249478
+6ca12c37-0a9e-b24c-89b7-1ff07803fbeb,3820633982,7195406144139447167
+1d7b05f0-d81f-01ba-6bf5-76b33ee2f1ee,4048551895,8983394191479307309
+956df917-80c2-4cb9-8aad-d1a9280958ae,141835479,16228166877468032043
+c64f2d9d-2e89-6954-dc1a-9205d09e0713,3215874051,17561280584548387883
+3437ece7-be46-71fa-60ea-265fec087bfb,2235858406,1050420033000803582
+6afa58d2-2b0a-172e-39d7-5f490217221f,19335278,1870164657516918169
+8200ff65-cc80-10ba-d994-952569466e14,940327480,7981249996044655022
+cb5cfd24-0302-bf99-1b07-ec80f822128b,2638169395,10721906377794972846
+aa07aa65-df99-dd83-e841-2eb4838979ce,1123224622,4025230836715074231
+a01c0809-5c41-1f11-45fc-840fba9bf4e0,3636290293,15012121503434852081
+7fb22d5e-f638-91b5-9b31-de9d319925d5,4270945875,9654114188246676810
+49e07491-dea7-35d9-c221-f4cbdcb53175,3436793845,11998074240939185875
+28636e58-eca4-9321-2a50-a461822ab4dc,154261061,8928367372648503434
+7c4e02e3-61e8-dbcf-b8ba-06f903b38806,587667191,1581218139788796074
+85a3204c-5833-daae-60a0-5ad351c385b6,3953895665,5608212225303114324
+afc26e6b-4530-2876-7ff2-07912753ffae,813648442,9269112762748758146
+dd8c2048-0d82-e6c8-02dd-c991785eca11,275570866,3330550465907875894
+c06e731c-38a3-a8be-30ad-9233ec8c5e98,746332727,704060023283234996
+a91b6462-2797-db2a-33c4-f3e9c58ddb98,3015246850,13651293482202235113
+594dcd45-5e19-65ad-d98b-0daa2b62975b,3945017705,4756586113482020651
+7258767c-c374-61f1-a0d2-be8999bee09c,2590432492,1367912279396448287
+789e3df8-60d9-c1d0-742a-754fda75abe4,3019266467,16182155623355531108
+f6c43d71-b763-1eb0-f7d0-861b369ad4d4,116853719,17143012201284450434
+8a1e418a-dc50-9d16-76f7-2d9e66ceef36,4019388957,12653350032595540864
+4fc2c401-492a-31b7-95b4-95df10ec4a46,1415903446,6635669982481150451
+7063faff-3bb3-02b9-0267-5b4695c0fe6d,2341823928,16013320741089958046
+fa13f43f-b895-8b8b-43fb-a62d45e47c15,1174449878,4393704399476301703
+0626766b-8462-300f-8dbe-7677a6128ad7,1195069588,5221508149240494096
+31b8dc07-5e65-39e9-1c4a-2f5aaabcce37,4278274677,8641479203987419295
+d3766550-b18f-44cf-af8e-1dde6736d04c,79403303,5377281908707767795
+df115240-d14b-b1b5-c563-2f7dc5b9ba06,3766620329,11034185280800137182
+ef4ed01d-3ca8-175c-93cf-b1b60b570fec,3821708898,13251836210956454819
+86fcf967-d392-e577-586d-39617402c109,2631296927,6710303331951904340
+1f1ce69d-1fb5-7484-1fd6-aee127f5dd82,1919528907,7916935364564916673
+23e5a38f-9bf2-a444-c6a0-b3064727b4fb,194968823,631092354841240325
+755034fe-97ae-070e-7ad6-5dda871466e3,1966275510,12273629096055602380
+b41a82a7-0c46-d14e-1fd5-0bf625c6c70c,2057030012,206993861997516882
+b4323f2a-a72a-886b-0793-a3675ecb64d1,1963272522,17378751505079209711
+3920fb75-abeb-f914-1d01-126869e58563,1969947567,7961440717177926590
+e4a2d204-23c0-5c1c-1c14-958460c6e3db,3101482111,9619981391857102758
+1e2d2920-2881-a337-43d0-7e6951d5140c,4151942858,7322900348547455786
+86c79b6d-ce62-3df3-4052-91e2a558ed3f,1716093873,11482957417348725836
+04d61724-b58b-62a6-f2dd-838848fff731,9228286,17986164344972221353
+89cb1bde-99f8-ca21-3390-0d4477be1110,4114242734,94885063288461081
+83e2e20b-609a-76bd-f922-bbd969bdb1ea,1108727763,2437740953244642839
+428e40b4-a542-9acb-7064-8a06a6851a55,1463216350,5401050249128269297
+991014da-f7ea-5ef9-d896-ae397d3e2920,2068213917,4504619907447606393
+49742095-db0f-67ff-a91b-f9826889f949,2529600594,3989352045736152991
+804397fd-1d49-6092-48f8-75995d34cffe,2267429265,3225056260130872592
+bac5bbd6-2f7e-be19-0926-e101bbd9cabd,1133573282,7487369047485456361
+84fa5047-482d-967d-12f9-1445904542f1,223288119,16481310393409553443
+be5ddab5-d0cc-23ae-7ee1-e34d1bd744fd,616606311,7435949868105066736
+c858d547-8f83-4e42-428e-201662276a8c,1535430369,15765700799403273268
+ce52e7df-0b62-7c1b-72bf-f53b72757e46,4115637931,3259889087550286792
+99e414ed-6415-08da-644a-7a39ece166ff,1402487698,12891754207713460728
+5ed69892-d5b7-4d23-8da1-68877bdc297e,499134333,9047155731968543735
+3c6c63f8-2e1f-119c-77b1-a7140461f026,31508412,17383246018522848338
+ac079582-085b-f183-656f-e46da476bb4c,3483489393,18027884532046892631
+b5acbd43-aef9-61d5-9d54-98de83c8a04a,204761341,15365070154626199095
+b80323e3-820a-229a-9e63-e932dd523680,2996873195,7396754735438560326
+27520803-66ed-ac2c-4ce7-2edcc7ba1df2,1307742662,13900597638274801886
+cbd72e2d-1e5f-1ca3-bd06-9a5b3a964d57,3750598202,8039421606943611443
+4f5daa8e-baae-a52b-0075-4493b731c757,3281311263,2401356984447857710
+077a05ab-c7dd-5173-61ba-78b1ec1aae81,274380683,15631747059873067161
+ae35cc19-76ce-143e-5295-d7ce4c995216,4129619373,5613283460119322296
+11569523-2dde-e6d8-3a8d-3c8b38fc5e95,1681126092,15929342710171010382
+c29920be-d906-9d5d-4b69-c76c6aede953,3485435662,6717329985629274224
+d7478054-e9b7-0e06-c6c2-e89d9ff4318e,1802097130,4856202496141499496
+0594aae8-c340-b13a-d0fd-440011827384,2129437324,1896215409976590066
+9480a6f0-4ef7-8805-0795-ab1503b36fa7,320803258,14524019563095658493
+d26e07b2-0ea9-d459-2aa9-e3e606325723,1586674992,437686770143176922
+90b51457-6295-1585-09ff-62311363d081,3638936018,18365014966214415046
+df353345-8b7d-fa18-a14e-264525320cc1,3466637391,12933759206811945044
+ff80fd89-b80a-9f88-05bb-a2d42efb0315,3741343438,12099267782858625284
+525dd5ad-8235-180e-b1e8-e4fcdd38ccc2,728639695,12044812091138521564
+55e1808b-1acb-9570-22db-5bf42b2f2e4e,1565922955,18019186480244541650
+e3b695d8-8382-3b2b-0a93-109eae825d18,1182728664,12594880449606138109
+fa92472c-6fa6-bd6e-5297-a17574c1517a,1882036026,13871472808741588814
+ac3b6386-0936-ff3d-2aab-f17e2d0f911b,2157065714,1267382978322984455
+8a6e5069-0cb3-d7e2-39cc-9c426fb599ac,2840750333,3280916746179372728
+c0a0050b-370a-0376-e84a-84d1f1c7040d,1972852017,15985217341183869185
+d0b4f315-6c74-15f8-b389-8691ddded649,550216257,5276914812362132004
+1bcbbc2d-c643-692a-9c82-0773b052167e,1708468940,4422271433173501869
+855c2bff-1e58-e10e-fb33-39d78ffe004e,1752550615,17032518211416131821
+a0929b8c-2723-6926-2198-c37048a9ce7e,2018761621,17328644475529430292
+10dfabde-f9db-f964-1f15-b7b790ac7d5d,1365267373,15704772714648134445
+39876a8d-1b2c-4f3f-c40c-1cac5b0c5311,2995478538,854592125684595018
+302d4394-a1a6-50d7-866c-02ab4b85435a,465656365,2425348415617202007
+0e8187ab-3b80-fc15-ff84-5149ab5c5a91,250625243,10864664724384092588
+ad71dd9d-c9aa-d657-ffc3-b45548b63e02,2258000681,17048503254760404762
+6ade30ef-c14d-b90d-aaf4-276d0ad34da3,512530089,3602305606823311066
+303e9083-6bf8-ad3f-c0f4-2537971128a4,1399443827,5228018432146792423
+ac89a3ba-a5ec-260d-dd70-b84de41008b3,1557457270,17301493238232200832
+b1c672e0-9f24-577a-802d-7f76cb9c2dea,3229614349,16988944020678419066
+3a399f18-0cbe-e832-432c-66690b3d72df,4135018050,5850682195261035559
+c1e652ae-66cb-39d7-9757-908c864b156e,898595227,11514033722614198358
+884bc075-8a20-bacf-2b2a-d198de7691a1,829304632,12857303931057219531
+9c44c0cc-1988-918e-a6c5-7615ae02156d,807291464,2346364230064126969
+1764bb34-4977-5b1f-1ba9-8b06fe92f0d2,3816104988,13815877938902217491
+40daffe1-8d80-121d-c738-246f66f87a52,502032950,13572474533041364680
+b4033bde-01d8-8e58-1b3d-cfab610bcda6,3737599170,3824754343452488753
+756b5efe-8aa7-3e4e-b5ca-fd6325523b24,3275023433,4353047800879998770
+f36d27d4-be45-598d-6736-f815ef050012,3985299224,10208673579775279237
+78ce3b57-57ea-aaef-1a37-981725d08803,3448942823,2187337166815048077
+f6b4db89-5d16-8dc0-2909-f94e885af82e,1931996762,17452275668268229710
+a04a099a-c03c-92b3-45c6-ec728f3c1512,3012154516,12115543388842875158
+d0599ec8-c559-586b-fb35-f55933fcf8b6,696637155,12852188089836116768
+e5d72b30-3033-28b3-6e41-99e8ca2c5049,1616004209,16227111606061985980
+e2cbb181-c045-8ebd-7b25-aa0e5aaf50b2,1648798856,13987471514150238971
+480afe4e-ea8d-17ed-0fc6-2a4775ae4e72,941212592,12276787284813053945
+9907534e-a080-bcd2-6f29-0a1c670348da,302785002,14063346413853897393
+a6a1e2a0-a0a8-5b46-dcab-d0ea0e707efc,2199849764,10101050338462204469
+5bef8441-17ec-dbd7-d10a-c3c6c6e38d11,720370976,2501689617452967378
+01db2449-8393-f921-5015-9b2194ed3318,4226340261,11701661623434313582
+e2f4c7c7-f8a4-e468-07a2-1dcbfdfab293,1493350439,7004243703869353100
+e06b3f7f-4dca-1884-fa17-52f36d892138,3380942692,5994064235517105908
+6ed626e2-56ff-9c71-d57f-18928a158636,1834029191,4285135270266823439
+8a2920bb-4b5a-26be-0b5f-b83223ceece4,1968950696,1716089315052987934
+6bfaa81d-06e4-880d-02b7-5b9d0aed390d,3334923726,17450548863326152037
+1f3c9371-ac96-e9f2-da39-2a573fe48d2d,1749209330,16370833676402363386
+59ebe2d1-d0e7-b731-57d5-76234b89d238,3680822650,8853323746958556630
+60a8fead-af88-cb19-3303-cf5aa49487b4,116736269,4573098382505448420
+38e12b1f-0ac1-f1a2-d0bd-01376ee779e0,150716287,14635065797312594529
+5760f9da-5e18-47be-55be-99536787d68b,1051949640,17980478173991737964
+e668815f-2ec6-ffa1-aa73-035372653e80,1773860180,16081657286068360617
+0a98ef98-a01a-d4d7-0eb1-34090c54df1e,170048396,7821209379749516599
+086da358-cf73-459c-ffe2-891025fd435e,3978493277,13623590341937260598
+18f22bf2-9f57-c293-2091-74ba9e2f1051,1563031126,11329152069713619945
+b0f36893-a461-bbe8-e1ae-145b5a774cd0,2341592871,245520389112532248
+36cb37d1-0640-b467-e0f2-4c24ca1e2076,3571471055,18412943231759507455
+c2163eb9-efc5-7825-41ca-492b70a9cb8b,1072091929,14194497290163654900
+4ecc1b05-75b0-71a8-bc99-51c414d9d20e,4025420892,15680757971302864159
+4ddc57c9-6e3b-f7d7-62f1-1532ac6db2f6,1995031663,15991537879327343871
+1170098f-9b5d-14bd-c7f2-d6a449752909,2018234265,4701029809719025254
+68cd3be3-22e1-670e-8e95-6ade2532c477,3441847042,16743314185237592026
+0c3b0154-c948-8a6a-e296-955f3d8cdc08,1460415704,7949090839914158287
+90fa17f6-24b4-7e0e-b790-160d9083a7f2,828031708,7379473495941828443
+3b223781-f448-9995-9592-da40de5a5a96,1992878421,13450428361686084065
+e28f73d7-c4ab-4ba8-daa4-23ed738ebba8,4157283953,8491455620195565282
+59cc7acc-30f3-5190-6393-40946ce1a29e,951727439,15438615862872271502
+1f6c5fc4-f2dc-59d0-0f07-c036532b66fb,2030654735,18292321918343723312
+7512039d-6ada-d7c8-7227-4ad3fc83d15a,3746665020,11449963926823935106
+faea5dbc-f9d5-838f-f4ac-4322e4758814,3559285334,17159038890142779966
+672f63c4-d65e-5471-4e49-ad3339165b7c,1912875269,14823980996272731586
+32410548-a843-ffd2-2e95-2a922e4179b1,2145174577,15094003623585006266
+4369e9c8-41e8-4401-73c8-e5a32ca9a822,4036633878,5579472018049017290
+b5891d92-dcba-b27b-48b6-1c540dd7b474,3030042050,2781305816212920648
+ba7887b8-4f5f-c7d6-3979-991ac5854c48,2409675301,1488403130558574564
+391d7dac-fbe4-8a4f-8b50-74bf3153aed0,4106397929,15294775456570675883
+35744924-04b4-bd78-b9f6-5b95bb454eae,3663754099,7858657175925959042
+13c22f60-0fd4-249c-11e3-a53f2453def8,1339963192,2633232121130891351
+cf9b9a08-50bd-f94d-09c1-3571a63d15e6,2303039110,11722225177720591707
+8775342c-c587-7e85-a063-f1a0b39b26cd,3752183918,16109524947790465063
+9c1d7b3e-ba9b-98da-c35c-ed924af719ae,2061593713,9052280078289926080
+f8f781d7-f2c0-0956-a593-53d48c8dc3d3,2750091198,1752101129494403055
+97c16edd-58c3-b04b-c55e-0a5e7a679d57,3392152693,160640445126327900
+49992004-0efa-5021-edac-cbf0533d19df,2271128057,14949178958253457520
+626eb185-1ca2-0ebb-39e6-9142dc974875,2920458484,7583120432712829529
+d8e00c1f-a2cd-a8ca-4e7d-96a7027877e2,3595911935,8265461478449448886
+efedb743-5258-269c-e9bb-991382cfb73b,498432924,3192245120625865372
+5dd19ede-0158-c2b3-67a5-c2d31c06bc59,2717189229,15669272576256479165
+6835a306-62db-4485-1512-35f902df81b4,3871597571,8679037237492190428
+90874c35-cc3e-fa0b-2d23-43ba416871c6,3253866947,2754554404708670292
+1027f73d-d908-21eb-d1da-6a7da313d181,1382704429,2277753647504512029
+4c01190e-0da2-9745-290b-1ba8dbff0812,2030205568,12589318047712090450
+b68f3a54-8e5f-ce85-849b-3cfcc7dfc66e,3896459290,13110543158126605390
+8091c0e8-455e-9ba9-a0df-ea5133282763,3124198893,5203180222542184468
+282c3315-535e-f83e-39e6-1817d2976d3b,2808512175,8031621406198772272
+ad846890-b40b-2b98-5b75-73d12ea0ad0f,325371726,2494069002293233675
+c8610d8c-cb07-8efa-847a-5157afbdb931,85294066,8911014222335395024
+ab1bc9e4-6131-a1e0-16d4-8a7ebfaf1e68,3384026054,4370474068327994001
+7797ff87-c030-a9af-4c38-fc738afbd72b,4023843680,5633969549817978279
+84bbda49-1454-5c6a-b22a-2547c2b6097e,3259447684,6425993712955190583
+58934da3-0703-de15-3ea3-aa66c31eef3c,2159375629,7334544492602910165
+29b99631-5e45-ff3a-6f78-3d683089e200,293842896,3564794336101546940
+4e5d627a-bccc-1f89-8ae6-29eb3895a806,3928814758,17865804870464943192
+a04c00bd-d964-b702-ca6d-b3d45b783ce9,755576209,18116101135004198089
+46423d5c-a8c1-6a0d-5ed2-934864d015fe,2726575185,1532433218877453232
+aa65e19c-1b8c-b1e2-d891-dbb7e338d2c1,1698311400,13937203626775446355
+dad988de-2d61-ff97-645f-1bb70697104f,2123430511,16151505505962799881
+caea0cf4-f61d-8a54-a97c-bfd9c1c0953b,4134381817,8379465021597276243
+482f7943-52d4-12f1-6fc5-a744057d6cc9,1795288717,2118923884900756017
+489b61fb-f98c-31bf-3b2e-a71aca943775,1844159064,5952316133468701342
+eac960c5-d543-36e1-50c5-5a64fa8b727c,2099559578,2843955736690838515
+8eb37513-bc72-f5ac-3a30-5c652871f50c,3714059650,16183892173312707613
+3f890040-b017-708e-2fed-664eba758207,2046617952,1390659112796647769
+e83e3208-332f-4c32-2d13-9de2d69d3196,2832724245,3753067679304944392
+8ce818ba-cabb-fd61-c322-83ed0d58700d,2740434136,17806389443271948697
+c9f0b669-fb18-7e61-c0ad-27478c935177,1916437670,812377967891100145
+52a532dc-7207-724b-7644-2d93a26038db,3073365881,5509009661482198778
+5592c066-3ab3-670f-d9de-0b1bd95c3512,2362627109,11431735360865972291
+d6732495-15dd-870b-6727-773d2fdb9640,2106581764,4123844235013550824
+fc77af77-4a37-97eb-e171-8319718020eb,3945419870,13512081522108303099
+5e38301b-2b64-e57a-3bcb-11cf456f8468,542431373,12305402602736493130
+ee83166a-74c8-5114-dd59-53d4657c3236,192950735,7599076457896826910
+81cf0c5f-6731-e826-846e-95098b0679ed,4043977738,7893938271860512160
+35cb95e4-5956-e10e-c058-55066e690c3e,4237369794,15906118542768630836
+b0f534ff-5df0-69a0-58ac-5a98f3c0117e,2123403098,4182421182786325420
+ebaeddc7-689f-c0a1-b537-c1d6ef6e7ac6,4175303248,10799909147249248055
+0d34066e-f98b-bc6a-c98a-69cc99284ec5,2399852156,5341611549211569314
+17b59eca-231c-609e-4cff-761192e9f312,2261750766,8486837975979014770
+f8a2d786-3814-fdc3-0fe7-463bd796bb93,2400793530,8276510419554524589
+0b7a1641-ff08-bbdc-cb22-e845154f64ea,3370537629,11178797309178163654
+7c61b52b-2e57-22ff-9766-470787ca2643,1298646056,7271220440389043963
+ed174629-83d4-bdff-4259-eb1c24271949,680420798,207861208424013272
+86a24358-f663-7824-d547-419a72c76311,297572697,5428953077621568437
+4e0c614c-b129-b05c-3ed5-6b8718fe091a,2664954752,9537644991211946825
+11817c4e-0ad1-c59c-34df-9a6222149433,707103715,2514823725565317932
+55909cee-c42f-2e87-e03c-35c9d1d15c7e,3842749652,8396485577211430498
+5c17888c-c365-de72-50d6-84688272403e,2227921037,8345836752831991353
+4abde38c-adb9-60a1-205a-14c4d5e30c7c,901040591,18343147280213730546
+e4b33b70-fa2f-6c63-c6a9-a08b8bdb8e49,3040010570,6288146020709219495
+179e3235-3ae6-ea4d-0671-e975f8e8ec1e,2381026970,14202226968217545004
+eb6db574-d2f9-576b-dcbe-6bc2aec3d9cc,3946964993,12160086327408665211
+0b02a1aa-c5ca-eb21-181a-1fedafdb87d3,480317202,6037470868331251394
+13733285-5a99-23a0-2fcc-f8d775659a57,3299831970,12515206090940876897
+c9455bac-6513-87d0-65a6-166d87f9bf8f,2765194889,2288105261241046178
+533e5656-45c3-b7c8-a214-3a2d1850d121,1333763639,2826546756596848744
+90e654e5-f91f-c1a0-161d-9bce2ad9b386,1645013708,2342124690841874423
+c73893df-69f2-06e9-df65-da64e3112573,4293994074,14637457605035940268
+0c2c761b-fa06-6741-29a4-0ea89fdfd60a,2316722393,7424586929257893452
+6492ae6b-3884-e729-1180-5bea97046ca9,2823786403,6582404541751189252
+5472101f-28d6-a4d1-aa27-e10f2b39da00,1970734482,8454123535056947401
+7596eb53-4ed9-8006-1398-1d8cc6187b35,1007169612,11771253770110690276
+e2395652-217e-8865-7ae4-9b9c9d8fc431,3804881848,4045649766149625132
+02c093f0-7496-fd42-1f66-5f67a1dd9ac1,2852798093,12501926542403077100
+91341bcf-af00-e565-d021-62a5017e3a86,1354153940,7758768658874193431
+b1ceb902-25d2-7f0f-52a6-5c10f84a6bb8,2917841251,6494873847028824227
+6183dd85-c7cf-3673-57b0-9308eafb4f14,2846771563,344173943451535348
+d62079f7-51cb-7cfa-55e9-258bb6eeb42c,3126241233,12572984342197034469
+67815cec-a996-aaa6-802a-fa0ba82abbe9,158691572,9007235751543791892
+8f215241-e782-7462-ff0e-cbfccf6a3871,2904906396,7956848295132671890
+01c472b9-d494-8b71-a938-a6a79c06494c,1566127868,16734126465868551680
+6af7e380-bb75-d183-9b0b-db2d97452e07,1392781069,3835932194784069908
+9789231b-1da8-9188-0c1c-c53340e6c9b9,597032597,7028564501126132786
+94405a97-44de-66f8-e5ca-aecc189dc712,1642246179,2326058434429674444
+c832e1e2-d6d8-010c-1803-166c849c0b80,63010257,4475765734596347945
+8a2dba69-295d-f23b-a9ec-b693f0e86d9e,404041944,14280411604212034555
+c3e436d0-ea6d-2287-eb4f-3d8eabca3e5b,3670309752,16775735203694725523
+fce34084-e1b5-9d97-07ab-c4168c485ece,525505491,13011794528313919968
+f6c9abd1-86a9-7cac-0dba-21057ad8b6dd,237578436,3214609251940663850
+79c06f57-77e8-52da-9873-98f975914998,876179298,9117797083585704197
+4f509da5-6b0e-ec37-01d9-8fe6a5f396cc,4024702314,12843282921156099122
+fd3ccf78-7091-e615-3ce2-ca7a11a41473,2690681369,4943447394018917344
+b3f796ca-4205-bd8c-c2e1-4e413f4f41fe,3523287063,9802698261806363946
+113e6778-c74f-2569-bfbd-c360bdb6d9b7,294301879,7715607107638570092
+641f8138-83b2-bc3f-2e82-6936f374f88e,2969115244,13280870071741897912
+4a459a26-9f81-65f0-ae81-7c4b9fab7d40,2610915212,10390841114336944680
+7fbbaa3f-1544-c24b-f917-76b9c542224b,4176999483,3596262139392007138
+861a8eb0-b919-12ef-19c8-ea67c2d02e34,1512818229,9311075387533147733
+c200c147-54ff-51ef-eaad-1416325a8220,645972737,15410281444066525823
+e906b2f0-af87-8796-591d-f9f7ae517188,2565424153,7133289284830563208
+79540971-87fb-7d71-c9b3-286fa1413b98,4051106173,8125336607524660638
+afc7396a-add3-8a77-2ede-b0facc4694a5,124367343,9862486753327048018
+398e6d87-80b5-a826-0042-3cf0e7d2c1e8,2599327357,256318399928226463
+e53a393e-2f15-de27-bab8-1218bd751097,1634269215,13100468818411537553
+4bd24091-3a07-93c5-7980-7b969e770e02,1660631959,12944924624102531671
+cf07e3fa-420e-856e-dca9-bce6583b3bb2,76388140,8171320418148262225
+9238e7d6-dd41-eef0-8ff7-f7723c18e9b7,3634602767,10897595484539360039
+ad469c5b-7d80-0b85-3f8d-cc099bff30f6,3620123655,6660286018192349405
+b8be5a13-e53c-0ee4-3b31-50b469a3a83e,1272726009,6894948865000550740
+d1b0501f-e85f-b30c-b2c3-f10b96383f1c,82914647,17674776922558493612
+9a0ed3d6-6794-10bd-98bd-d1e65c8bdb75,2762952372,12185440955364687200
+43116db4-469f-f201-1f9e-af205475ba8c,2862673242,5729152411833881439
+9a388683-7f98-522e-e98f-ccd462906c6f,3649193048,4870694488531722700
+7f4cfa3a-c766-7410-4846-ef5837a166cc,545875552,15650071965492046431
+34204e9a-a619-d924-244c-3269c433d187,3571450804,15501974659925116952
+77b7c480-cbea-dc74-d67e-1cabd3ac8ddf,661290105,8169155135124210912
+4d29b144-bfe8-3cad-41c9-64f0ebfa8cd9,274793315,7365303145657095940
+497b20bc-9c67-c587-1b70-728ad4bac264,683805700,12999665876927153343
+f10217dd-eb25-280e-f76e-c750086662e1,2667239018,17877788367929143600
+ec3526f1-9b1b-b982-1702-3a690471674d,1934303216,14374561144832336533
+68f6fde1-94e5-0171-a2b0-9365c4ff8270,142333522,1555510839745622086
+932ac383-6d6f-2f53-3c0c-f72adae8ec18,1440354010,9606813006378511998
+12019a90-27dc-5b59-ca85-d426d6fde2b1,4131090001,9468836585052131221
+341fa23c-bddc-a75a-6e60-45381270e04b,1364853921,6616465771337912071
+b2148143-3333-48cb-44dd-b5207ef12891,657039326,10023794933988648934
+f364c079-1c1f-bf75-1efe-d4aede13d803,1677708050,3217255707703871113
+0a0aa6dd-2dcf-a314-1b54-b743b1e56631,3453779941,10823185479072375922
+b07646fe-240a-9137-ab12-7c2adefb6563,1424366967,17513415611683683423
+702ffb6d-b356-b52e-77e0-67179cccb5ce,4125546127,645038806720438213
+ae130043-ba4d-8e2e-fb4d-b4d1e2ae6fda,2726661557,3871203157461138638
+131cf35a-7c06-4fe7-0243-6fb75b993343,1717846287,2330259805462934569
+1836fc62-3352-9672-58a3-18c1db5d5150,280041198,7053475923385398362
+78b5de19-d42f-b336-8c74-a16b6d2bac4b,1579595333,7768087692089336654
+25b02d3b-45d0-6b33-63de-5e1024fd185b,2192282901,10077446914626632879
+22791fbe-50d5-8386-a59b-55d76b5ab0d9,586415822,6034025731174431486
+05a100b7-2a18-b884-7ac8-c0456ac99521,2306610816,6383712178785259961
+ff4f8c96-5eb3-21f0-cd6c-fb304b1686e1,3051807207,18368824469581247032
+b2184fce-811b-230e-e651-11af2b6391b6,576298875,13546616562303761705
+9a715696-467a-db69-e092-e56b8ebca2bf,938587117,16778220702642475492
+ec722b8c-3736-220b-ef37-70fc10b8c2e7,1490409481,10091220207703398281
+8a6c6bc8-8010-86a9-4dd4-87bf20708722,2921299088,17166335098133607066
+3ca9cad0-3dd4-4990-414e-edc007389ae8,928873460,262132701477427098
+c44f4189-0717-dcca-0aee-7d474cdd7b76,581367568,15755594453544393318
+415138e9-e76d-cd14-7d1f-927d8ca232e5,2653180429,6418045338916471488
+c0d3f181-87c8-7943-52f8-b01d11c0899a,2228462698,3659303164972227460
+91627266-290f-cd2d-b575-15952cfea7ec,1557051888,13405391181391689338
+c0c5b6f0-6b94-9ea0-d150-c4b916ac2c03,770696527,4975056116882491428
+7eb332cf-358d-4fe0-993b-caf767a3a4bb,1127847346,15236097539646838543
+09939a00-80e9-eef2-1a62-5f179502728d,1346936888,10857552706567053687
+986fe084-fd44-9ede-a57c-9b69af5a254e,310416633,17584087900637172713
+41f13202-2c02-d4bb-7cc9-e206fe91ac1f,2092674705,1097543404493850630
+4a83a36e-405b-ce3c-7540-6faf9a670df1,1440497606,3487038765122232999
+049b140d-9ba4-957c-e8bd-60b65e91b423,3642674485,10846281166001782575
+b9a756e3-1827-9b34-40bd-6f79af1a9004,2285075935,11647356489340274835
+487c6bc2-81ff-41b0-7dbd-38de63be7b0e,2197373150,14803485849039576536
+df480639-1e21-e9b4-6bdc-e01c70944f05,3750387385,17330172561745389291
+41236e31-c1d6-2895-ed16-6ee392258e64,2984436017,3260401542253848329
+fc06ab72-3a9e-014a-9dcd-455dceae495d,1454841435,12580516980274923389
+6c40542a-f1ad-0c6a-aa9d-5ad780e6dc24,1596708563,2203166840860341355
+ea2d43c3-db84-703f-2c3c-cad5939d28cd,4110594095,16646401859140764682
+e523eead-7f69-d34a-a171-177e2b3552ef,455928911,6344846844072595130
+c4adb675-1779-dcb5-d3f0-daff0180f2ba,260811494,7437388080164166923
+13274835-ebc6-513b-366e-2a6783fd9cff,536924746,2036835441265337259
+2d5ad882-1451-3306-0f35-6f169ec51dcd,3667013741,15267283715572848260
+887efaf1-6aa3-eb3e-b7d2-e315cdd5182b,884811859,11603068103477431007
+e98d5ec1-36f4-1857-30b7-6900b88d977d,996419182,1037956704507222571
+e7ae8d1d-86a0-8173-cabd-2f0a9a3af643,3838182331,13952344170012864553
+0ec5ec4a-c197-3594-89cb-3ca724c15640,386672806,16747809933014359093
+3e7ac07f-9cb5-225c-88dc-9ff4b3599392,2380265738,17624151270366537983
+75dd8954-5cf3-10c2-1fb0-60dd07ea1042,367416299,3130568073021858882
+f901490d-2c34-016f-12a9-853d04df75a8,1666639768,6106295831366075473
+a8b93443-0a94-a337-b9b4-51a5771fa0aa,3854263206,5524260365943222924
+1cc89821-645f-3a7e-18c5-3b6fb52e27f6,3425620654,17946498938978787852
+9c737318-e9f2-e046-a263-0ce09e95c3fb,907608221,11377359374952553070
+c79d24de-86d9-c15c-867a-797f39db9e30,3746013952,9579229690730462963
+f10a278a-372a-ac73-abd2-32ba15be4319,699084489,7734519883296334830
+3f2e76b3-683e-1f92-a066-86a68742b072,1969760986,2001252917173711562
+cbce1b06-b248-6142-b19d-0bd57ff54463,951997861,12870001651586115646
+1b20ef1e-e79b-ab65-b49c-1a7aa9aeda45,58586813,7512035315427408202
+f10c3404-95e4-7f3d-b1f6-643c68f193ee,2977083909,17223884958946855220
+02537945-77b7-463e-4256-bbf82a2f8ecf,1141107776,213420338573321721
+caed6d2a-c135-1408-47f1-bea187a15156,2971535024,16487360284301418756
+0a612a9b-115f-de45-a8ad-bda4ef7a5b64,4169236142,1407600349633924275
+c259c803-38eb-5e8f-0eb0-753d292c09a9,522916860,5509925589134043041
+34e93c05-5766-d905-0b51-ea9123dcb020,1517201235,13978209499831975611
+8ba10129-9db7-4df7-7244-84dfbc822949,2591152582,9596400037998857353
+fcd2ca41-7b42-a993-6a19-66f1c0e508c0,2559358576,8448393330092707159
+b48a59c0-c0c1-e582-7968-12cc06d70634,1278060768,2652995396018324640
+b20319d8-3aa7-ce2d-4bb3-a71bcb00e43b,2581729114,16245178187099076156
+a5a9edd3-7fb8-2e65-7132-9a93df444d31,284149454,9722855911650836883
+54eab966-3a58-a15c-f3b1-62b6f41372a6,891894596,6969375681965973849
+8efef08b-c935-b9f9-1f5b-5fa9b3a1257d,1669486344,10889942671724330948
+bd61d84f-e9e9-1621-1f21-4b373212dd7e,1742223979,5666786832709797558
+487490f2-2e5a-d704-e1fe-1dfac501d6b0,2001728047,7782549157331392545
+ff3c3b5d-01f9-2d8c-4767-f28d589ee995,139513020,3068345582665998726
+80a0bfab-5de5-2d7f-1ebf-44ed39d0b643,3119902599,15479597219123899535
+1f7c34d8-9a82-3b17-59a7-45a444d542a9,1434887071,17993825811499900506
+2904c10b-9934-838a-3327-f5b424668513,3248640272,1686954506604775030
+25afb5a4-1cab-fc71-3a8e-f99f6aabb1c1,1876380440,7777547165637108656
+433e0878-560f-6e5a-2ea6-8066c0ef9c2a,1170292892,705422689268153213
+b4c98d90-1a19-e81e-f092-4cd105d02be2,2877466569,4317365563305990254
+adf33c1b-908c-14f3-e141-669c08fdd036,3855657015,6206989873492186825
+66a379cc-5b48-dcce-a3f9-47bf0da8ad09,3034101241,7508725057848565435
+facfea41-14cf-404d-a3f1-d34122000e9f,3618166827,14656307671144611159
+4466d1c3-0040-a13d-79e5-6b12367fe3c4,961634516,5697601836643355963
+6657cf1f-7858-3ddd-be5e-a0e796483f71,1683548995,4546404712582388751
+0d769ca3-6fdc-e251-7c05-c802c34b22e9,3794705463,13063450942862365197
+9b9fd005-50e5-631b-5cdc-9bcfe1a863be,356960248,10729108883076556943
+fb232079-8971-7b33-e16a-28ae3880bad5,2808123168,11270904531114865608
+c3da2e59-ee1b-7796-0b39-e8b60da49369,3738439005,10097532020285479997
+680c82a2-62b9-1c68-4c38-aa50856551b3,3573889935,11632997853267237609
+88b67f3f-0fca-2467-3e6e-f925547f47b1,2195348519,12876354023211116648
+e308b5b3-7315-3e22-c1ce-5433a0a692be,2832272254,14824607706566256785
+96283bcb-a431-76a0-2ee0-9880cfa45ec1,3767949395,18426500027713808507
+ac664838-1e98-b6af-e1ee-73a638ce8a65,1411990763,13506110856123288976
+68da2113-d688-251b-eca8-9ae52aba4b44,3182310041,5192055797639533889
+1933f60e-74f1-9804-bdf1-f1de263e0c9b,2423795062,16793033283692811522
+079d313c-b71b-b935-a4a6-9eaf4e283c3b,4262767793,8418934168818729038
+b0a22eec-50fb-9d15-fd22-87ee77fa3a61,643283385,17077782231998656956
+d769b6dc-2a4c-863f-c947-8389abf7682f,1076842831,16437551364577625416
+d924e300-a321-33e6-96a7-56fc11614bed,403893569,2485073521176285377
+e22d87c1-c238-4572-d4f6-e2fa1f665dbf,1097717921,9465649891088629946
+0552db2c-aad2-592b-5628-23c59efd6723,4152862566,16874195787986681245
+f7a6ccdd-239b-9cdc-4105-729c0986a0d4,1950201876,14095014007399673954
+e6584c9a-955b-e9cc-88e6-98daecefbcc8,1881475382,6515686021967357652
+2c1cffac-af70-24e7-3075-5de39f5ab093,927781548,15175228227705594946
+edf0159f-d57a-25ac-afb3-a21c039ab0ba,427322639,6805242237031932876
+36561f08-bc95-ad05-eeae-95f0e8ea651d,3483819430,13493622241952736263
+694a583f-cdfb-4712-75f1-3b1718b6ddb2,2625261867,17238886833706126983
+593cb51f-2175-3a41-7943-e7c89b45dded,1188591446,5514097208674529186
+6fcf177a-69fd-2fb1-42e5-bac80a5da299,97960701,14904979291265135800
+08a3b463-bf79-4024-b145-4657d67b77a1,1092202055,516521297175819269
+a100bbe9-86db-1c2d-33db-944dd1e72ec5,2303922292,14001551189208580087
+2b7e6eed-acb9-ec4a-2a2b-38f1a522407f,1479103958,13033702886490677103
+150ce2dd-e6db-b79e-a83e-152501445e00,579083159,14661890742259040755
+9b806dc8-67e5-c403-0c0a-904600610ebc,27358523,13238723171123422699
+8044fd0a-00ad-2c7e-aa96-4fba318375d9,2679446987,6296580111975823257
+86358892-ce16-c05b-7282-4f70742070c0,3486820913,15788493330010970575
+173d8040-9f27-6a5e-ecab-ce823c956300,1536839646,15138641308997335441
+3fc207da-c2b9-c451-09ee-e853b733c012,3636982318,2588258655009422785
+4dbc9057-eab9-b21a-39b6-093685ff95a1,2232071420,4795829135623336609
+9f299a9b-2075-e648-5639-845d1541a5a6,3519897591,16613336137830541358
+7bf278e5-65b0-eae0-f105-9f7b1fde26bc,205115445,15705932834379652916
+3f73fd5c-9604-c2e8-9f03-15e79bb09698,3787853062,17796107940999283595
+6aad3fc0-e103-75b7-b888-f1fa91ba0444,831422612,16348786922465624089
+e38d0f67-6c7b-1b1c-512f-32c50e646804,1219043414,14248240018362741719
+9a21c4d9-f39c-de33-28fc-0f6364275c31,742840001,18395665675276984873
+52bcfd4d-8a49-bd8d-b523-cd9cb35b8f5d,3705786824,2290643830354275785
+14fc7d28-f2d6-8005-4f84-332d67f06d2d,2781626530,7654889029520336712
+ef177404-bdb0-3504-b59d-1e6967cc91ee,3990564537,3422182674045068541
+867f3f81-ffa6-80d0-c0cf-77d8bd7bb09f,3710618506,1673166055176504449
+4f324512-bfac-5120-6b9a-5019be260cb0,3586385217,15011055949267451885
+6c24d866-e301-4af2-4df9-a309ce778ee7,839994735,14638112806796305667
+3853a38a-a2a0-2670-184a-3805a0f2bf00,3640574015,7046837492426253620
+a464054b-926c-7fe2-9938-ffc78c8c806b,1977421629,13847928074482658305
+fa55c524-2577-0c37-d5f1-cfa4e5929e23,3348649960,16871969073885571708
+5a539dba-10d7-d4ce-a5c3-585937c597c8,925359242,10222672502927988358
+00e44da6-8918-7a5a-2c8b-7d30acb3e41b,3770843283,9637537832492561785
+1644de3b-ad12-a1ca-735e-63142904fc95,4134949199,12248830894064144498
+eb4e9148-4d05-539d-609a-810f0f078434,4179187621,17628850819349417599
+3d169318-9e2a-c267-86e2-729494d62484,1114962023,4873707487548635319
+ee5d43d3-bfb3-f352-08a5-5420e9222c2f,1822705315,9281617263492844533
+87a556aa-5b10-172e-ba04-f121c4aacc21,3420685208,10468346961245711004
+ecc77421-a90f-c114-f10a-dace8404d9c9,190179757,12764005653406003791
+f5320427-dbda-2878-3d9e-a0f4c291954a,51340031,14543278033793223188
+883c6e0f-5acb-78e0-4d02-4e33a2d5014f,3481936996,9281408463736251132
+faf180ec-6ac3-7564-b79c-976d6fac2f48,897860073,17301691015879007704
+2dd08db7-e89a-3c00-f2b5-a553e2769d71,4236197341,91007299952422360
+1c90f4c7-6dbc-3351-8c3a-83a7dba8b159,3262632179,18270284167492083889
+6fc772c0-ceef-e8bf-e093-616bcb36b71b,3265585578,3257251600687769120
+0608399a-720c-6c9d-4999-0c59df726ea0,820021230,4114397043676882883
+698a4d17-0b35-9b7c-2ead-29c9c32c6142,3881836312,3829629493320333141
+8cde80d4-0ea9-e5fc-e905-18d7f4b0b104,485579098,18196830602470283103
+c0c9000f-275a-741d-f0c1-a6649a549f2f,326417017,8875542836093123117
+6f080806-2c86-8341-30c4-7667f76ff68b,1145160478,6473850532395711922
+fc9321ba-40b6-3747-20bb-1311fa090e9f,1920239238,9556022574748158923
+ab2fdc5c-83e6-75a5-e76d-bbde7c83191b,2457598806,12171259532652916561
+701222e5-c16e-f014-e8c6-25efe2caed68,1184652414,1081475531595018038
+249a3107-51a1-ad6b-2e7a-8d8cd54981ad,3584259359,17610238065185708609
+2278850f-2d7a-d325-775a-ed79cc5961b7,804009185,16227528386780182626
+9c2a7c30-f5cb-0ee4-9be2-367e5ce901af,1271534173,1331476931335284026
+b3a4d60e-da17-c060-4aae-619389f16651,1654143573,2464978081499354755
+6475d1f6-f2ed-99c1-2d4a-ad69f391ff7e,3839723808,7919848129648243539
+53e84699-584c-2310-b54c-2e6baf4be419,425250464,16910425345376478851
+9d40da5f-713e-e3b6-a025-b09211c2e701,530065505,5706613283371621057
+d46fe097-64a5-26c7-0a99-615968b63586,4115698088,12534055251821626804
+93fb076f-ed7a-be48-cb3a-2dc0fa9b37f3,3859156003,7173991436473755274
+b57223fe-bb6e-1d19-6085-9cb13ea64e6d,966157163,6739828070210420607
+11502d76-b378-49a8-024a-4962dba64e54,555008922,9698570108051642162
+23a31004-7696-ec5e-5970-d9892feacb4b,1669543624,3590522476224900965
+65382fcf-6df5-a40b-52ea-daba76d32d19,3929614791,800258225890222558
+75867e0d-d4b6-85a1-c59c-12cd17038e7a,4253883629,18092755216302274934
+f7a6f7df-a0f0-665f-482f-32457bcec84c,2752547051,9059520047508256733
+1b6c012c-6c13-1ffd-e36d-b0aca8e5c3b0,1012071370,5155421565677724712
+2d36d89d-538e-f0d9-1a4a-36ca0c729d6c,3416956697,1243262471966682041
+63acea67-555a-62da-8353-c8ee731dd73d,3769922928,341345954902978499
+43feed8e-0371-3b75-6304-08b8a9ac4eb7,2330018334,533756856861450639
+e2d76ca6-c64c-9857-76f6-27e71e0578d2,2906331702,12010139882789681351
+73bfe9b6-e240-d87d-eb39-b214ccf7e2ea,2893924418,656772661342558481
+fe5d7033-af79-e7ae-443d-ba4eebb23f6e,1414560468,12412588453340961114
+b1c08147-c6cc-36e1-372d-175f420db68e,153188736,12957553769085131227
+917a8884-8dda-7812-5058-ce6922214166,233535858,5320390115563574044
+dac1c5a4-6e9e-89de-d7b3-705419cff023,2453173193,9659740192723998821
+382f1cc4-965f-c1e2-e2f9-0331e6e087c8,2788477553,16650254708997614301
+07c34f49-7bc3-e3ee-c3ed-153d5fe3907e,2681168816,15958937299124666456
+cd6e6a9d-0ed7-c446-5965-6fbea39018e4,428367461,9081865754181889562
+230d7b55-a391-fcb1-e9af-ca63cff199ed,2178826343,12373582143451013934
+c98011b9-2324-0634-d3e4-5bbda85f6403,4257508038,6846977663985027634
+c7857ef2-e050-c478-8126-ad373120a4e0,834050754,17111463029682922535
+32ded091-8d3d-5722-b326-d1813bf50302,3355289605,14837398538772129610
+69b6910c-ebd8-db97-82e0-53ba3ce65e35,2447117071,7981735356480791533
+85c050d5-27d2-a1d6-e38e-ea14f50d77fe,1147646107,112841254503349623
+1fb7ee04-b13f-a7b0-0cc5-260ffb2017d4,1111769449,4474833038712933496
+dc01c31f-910b-e92f-a988-5b8b7b3d4249,3774999180,1997846337946593459
+0ead5eb0-8d26-d78f-66e8-aa3d1afdf8d6,1768619690,15624822824721966949
+0bf1009a-556d-323d-959b-0857024f5036,1718401981,1810649058028459039
+c7bc037e-2d04-c550-a085-9c5da052d2e5,2117076490,12132139090330512116
+41bdc3e1-197d-79ad-7057-2919033f7f2e,1382605913,7530094130505033754
+e0011deb-e007-b2fa-dfd7-3b32f4d750f7,2710870429,16359865497169496366
+37437519-7fed-c527-0144-2c2ba35e1874,3558678820,10603190219630982709
+7d8d5077-45d0-fd33-8eba-fdeab85e18b7,1787455866,10935927251486558829
+80c42768-f031-4669-eaf2-2d1b89390e01,3587940569,976917209565586700
+6d993fb2-33d5-16a2-6051-39e59b3f838c,1525488482,8652714415189598824
+91f7fe62-bfab-c3d3-ec13-0fbc5b312709,687255405,10107502351591649907
+8677bd24-b959-ab93-1a19-4d919dacbe8f,3911172661,795020889823974232
+bf015ca5-cb09-c61e-6954-044b5b8a5ac2,456414848,18354976081988176867
+c19d67b9-787c-ce63-87d0-ab7706964726,1881914852,4185320709877762408
+0c5963c7-707a-0411-ad5f-01355ac69dbc,2245071774,9472043819036739300
+00a9e9d2-d3fc-45f8-fb64-51c28acb27ca,498401281,9616326955326111124
+2af07a68-5811-f472-225e-18a9d8d46711,3375579226,3035352900734384874
+f54eae58-679f-b30e-5785-346a259344d6,1430858252,2104413661477490530
+490bec28-7b18-5fd4-eacb-177ffbf8a69b,3544263118,10458256506379770727
+8be747a4-6d05-4687-6603-a3b754d2a23c,575481817,9925510630762740903
+29c8fe60-ed52-28cc-97d7-9ccc07c22244,2463455913,3864861702868598361
+bbda88ba-f807-0c5e-a0e6-4fdbee754e48,3581305490,7134824758621828215
+07a51d1e-a119-81d0-7a44-6e0f869d87d1,2417469880,880539846279523012
+074b1a55-0ea6-ac59-d437-4ce0c390c989,1472953139,14671613288190157018
+8bf4b1f8-1a23-e37e-df1e-71ce8d839a60,274954266,11691617319669380845
+2523fd27-f69d-86d3-d592-d9fb340f6c27,2440882769,3079434732270343462
+234c0608-739d-32b3-1654-773b4e42194a,3873699293,135876566804288603
+8b99dc26-f6aa-cac6-9417-cd8c167d956e,3042309155,18091655160159793780
+30c791ba-27b3-b7f6-b355-6873db488f01,1071413298,16100214685916807416
+c38cf3d8-111f-7bb1-2f67-2219794d9d1c,2884410973,14979729416435891151
+2b5faa4f-d5b1-00ef-256d-f6f5f3eeabb4,2664088286,13361415338534287894
+b9fa8a1f-c071-ef10-960a-08c489714742,629406133,9292028098144647774
+b4fbaf43-47c7-f0a4-fc01-5570d9369b22,789635772,11238849199267024465
+df4709d6-0c33-d7a1-1bcf-8066d660cd0a,3026548730,15199558605156666348
+2162ad67-417a-0412-57d9-937138691c86,914804068,9984848521210655780
+3f704bea-f4bd-87b2-fa70-f798533ea21a,4008750671,5695456034952518210
+afb5ca24-07e0-dcc6-a9d2-b9cc8109afd3,3958840416,5672673120613935322
+504080ce-2ae6-869a-9286-1070b344a6a2,1203065969,3823509068422190813
+0683e310-7a91-ecb4-f3e8-03679584ba3f,953545805,6205951134356058197
+c0a6b94d-daf7-7541-7b8b-e13e3e2ff93e,1425665752,1383284283915903842
+f16e3f9b-c13b-2554-dbe8-be7515a41ba4,1559655666,1264296495782952460
+3202614e-dd10-bdff-864c-c594129b5430,2541662242,6850869522739722815
+0bb8cdd0-7df8-3209-8f95-97c1353aa06c,2493555014,15585901748649690793
+630fa717-9cef-4ffe-0be6-acd9406bb626,2026825179,6342763532452224913
+98b93d57-7005-993b-a1cc-0cc8305278fe,1360667839,18445666402039888587
+e3710e97-bd98-6330-2832-325296147c27,3670025286,8203746746051895287
+1220162b-357c-16f3-874c-48e833724a35,3790945506,7160295415023597295
+049992e0-b9bd-9c5c-3dc9-687a75e0b55e,2656966901,4416300885029732039
+24e4cc38-a2d1-9148-5e2f-553e4e3582b8,407929239,4061017264560162825
+d7a39b9e-ef14-c725-bd18-b81d6334bea7,3256320381,594626758290295034
+7b86f7f7-d086-c2b0-7380-7371d4036307,1450209040,3395577735292502461
+656ad2d3-b879-6eda-a64c-0dbd0a0b218b,3542948930,11857070697360216404
+1cda062a-14ce-bfa7-006f-9bb8653b767e,1260418758,7779855788116750032
+6dc6dcd9-3d73-6cf3-4f30-ca9d4bae614a,863442920,11113334146744484861
+1e5b324f-893c-b50f-515c-ccfec51dd75b,822024129,16456173586528183344
+ed3c98f1-65b2-c6dd-16b8-33d8f8692753,4088658713,12766142549984556835
+979879bc-7e6c-071e-f091-a53fa411021f,2263056582,16079373819115716688
+f0014250-9608-bcb9-259c-855dec17b120,952952915,13673617474427170985
+10b64180-2c07-5489-4685-e8a9e8b80526,2760310793,15599916589707505870
+1366ec97-5d71-5f24-9712-6968178ddf7d,2052527430,5851893718864366701
+40c541fe-a294-f4b6-b1d8-fc25b33b4724,3396199335,11190406223506350429
+aca171a3-982f-4f06-ebc9-49f2b9e9a3c0,376468365,11967830482318690890
+115baaa3-d491-4c68-7cd3-6eefa82a82a4,2886164571,2701646296368479874
+4fbca6eb-b860-ec33-faff-5dd36a9a2267,2630062988,12160671722533431883
+2dff8c81-7c3e-12aa-647b-ac28c6d1db80,2945178719,3927053126895492771
+20e7d877-42ce-72fe-8dc2-857cb120f21a,1855404314,13730604041937530399
+1c5716aa-364e-6838-a3d1-b7048e03e7f9,297690526,1459844835168169866
+691e03f0-6842-77ed-ece8-224eadc808d2,2092661961,12704702225579690565
+d46dcb22-1513-c292-5c31-c1192664ac7e,903583931,7131631103698734296
+89bb74ea-0923-bcf7-12a6-6ee69b49797f,1682173630,1228036933107529463
+8f173958-3362-5bc9-2b52-48471210b0f3,2682095392,2712553482399683939
+1979da07-a5fd-6851-062a-3c22e0918d3e,2623660223,1804557103207609964
+e52900fa-0033-14fd-f6d0-480b915352ea,4087440934,1645755340557765281
+43ea291b-a25c-0d96-4968-09517da4d144,306384311,3091188755591138892
+a4000ed6-7ed5-bc11-a13e-7242d5210027,3940869404,2590826967252486480
+d91f2610-6ca9-4e54-66d6-b263528bd07a,2055877353,6421758856830694591
+8217a6fe-fce4-32e2-c61c-dc5cde027002,1348441754,17747114708512906577
+4ad50ffa-003c-fdbc-2c0c-9b7926f58222,3398370840,9480380575412312160
+104d4448-2907-6d49-e045-44df0c507615,3349433684,11964821863188777852
+1dc5e894-7c26-bc25-8ad2-7c653e2e484f,3449103568,14026038845000812132
+92760ef6-9d34-1f77-b33b-12ba2f8f2d5f,1157894357,1899963846994491576
+8a49637f-42c2-521f-1508-8a362512abe7,3592412858,12039162188085623628
+b143b32f-414b-d4cd-ee56-1f0723d285d5,3053371152,11232915487132959420
+8c333c10-88af-a19d-122f-28ffa57c0d3f,315133606,864875421946513942
+247be2bb-384d-50e9-621c-aca57282cd85,2589662768,9003874118020901688
+dcd617e3-26d5-70a8-0586-7655aa034a12,1659072530,6845675333772463361
+d7a0c3aa-a02d-78ed-66cb-70bbf06fa8ab,575452826,10954332841088386735
+93e76039-30da-60cb-8e4f-b616359a6090,3547013126,13690002040692587172
+97ebccf6-161b-9d27-7361-076427e378e9,1783798420,11608767228702209419
+ff130435-3cac-5d7d-c44c-0fd04ac8f1c3,3453152339,16935474258045849037
+29c91d02-94ee-f0dc-e182-a7c07ddd193a,451087444,12133620880746031098
+d07f8eca-4df0-2c22-28e5-e318ebb393e9,2535720431,15509893741009039959
+7c17f596-37e9-f129-23c3-b2e0cdc83447,1297890648,13266874207898086685
+84b6b70d-9626-5954-6e6f-c2a7f29d0339,4199291116,598162119279713434
+31b2bfe2-8094-7a24-537c-6c00708c6581,1778072776,16619332601513036919
+2d496da4-4ff5-46c2-fc9d-6207d0a57f0c,4006649637,7356808720988060942
+a98bc838-856c-d2b7-3148-7ab2fa4f6441,4250413033,2521433905945156574
+568b5f20-437f-d827-9c1b-5aa32386d3e2,4252854898,14354517896457530112
+0ad70861-c0a3-0a5c-37c5-d6894cc0e144,4003788191,2479143863419921439
+7b4a1659-3db2-b0dc-e288-7ef0cc5f34e2,3108153987,3455543038820240764
+be87ac05-43e7-45c7-31b7-937efbc1af80,3127899786,8220090360115144520
+881e86b1-4516-c96f-87e4-d7ba7032c75f,3642986742,6023039516328229489
+e2c4245c-108a-6899-b387-fd5267d8d56d,4028792898,3107653638102872937
+da85a43f-c001-fd60-260a-79326aa43bc4,3402799309,3858607306663246072
+88648062-9c76-ee4c-9e61-a5f41503fc57,369483348,622702656683780090
+0a27892a-4c88-775e-421f-b5b9910e2838,1632306272,5801304366453176149
+00bef514-09e1-a115-cde7-0fbbd937f155,1738564805,16520240756652223519
+b162ece1-ef4b-84c9-d7f3-8e5f71816074,348410013,2800790150569486500
+cef0ea5e-b95b-fc81-26fa-be2bfdc8b265,2671959538,712254697112062304
+d0b442f3-a9a9-b51b-222d-d6db325eaa2b,2552383125,5188114997802476282
+2eb0728c-9057-4908-247e-843330b58962,2672447338,12360180242225444362
+931f1cc5-7fec-3741-73e2-9bb618d22927,3281644732,16366878817380554180
+ef82185a-42dd-4fb8-9d2c-82b255d81ae0,792520564,15989491642764600872
+9235398d-c1b8-58e3-66fa-c1ecb054e30a,2331768740,14580267957166043350
+c22ae3eb-e17a-7eca-5d5a-5c271ebb2b92,1688596187,10438323032435609107
+c0696c76-0881-7bfc-72a5-8860f770f959,1832265000,18270511566536753029
+b1b0b723-ee34-ea58-35e3-ea03da94ef23,2380334293,1312584043170696873
+f249b13f-a9b1-f1a5-9f88-d432e6bc660a,3365709214,10910546015293739014
+8259a134-c07a-d923-1956-73b1141a2510,1774528868,4286367380213960298
+5fc9b61b-e8eb-cda8-5621-98b3cefe61ac,254172430,14781254205671868978
+67e550ab-914d-70e7-8d81-5b900d1d44ac,2439999078,13236835979009067230
+d3dc526a-8c99-cebc-aab2-a5eb9c7de56a,3808797547,7693646322195864649
+bd7273c0-a699-9c55-0c98-42e4e4fbf7e4,4104817812,10713950729197897465
+bf112639-4961-b5bb-08d0-e1c10ae26986,148223540,12127409272516685507
+a786d63b-bcb5-a070-b787-3a3d2467d776,3110340261,8100928140887203050
+4985a215-6243-880c-84e3-224be5734e6d,2748929451,16842410638564772819
+9292592b-b46b-a2c0-b2b3-a5aa24e2a069,3190368400,3527345639733461849
+80562d90-8c74-1b0e-4e2f-997056531d76,465992963,14856727667442074134
+55bc36dc-5592-bc84-685f-70ea000de485,3631302102,3044017635115937124
+5d6d62b4-1cce-ef71-3c26-f4a83e83404c,3679104788,7676528773134573594
+dd6628e6-bb22-4a1a-6930-0510e6eeba2a,3387009973,1786609704275937465
+5acc6f22-9e0b-cc9f-12ab-f9c2599166ba,2837773594,13965456686060219344
+b1541afb-c138-4faf-0300-d1186df7af2b,1980095946,9619630168817905283
+4d8dfb86-665c-097d-1786-ffc8d36b032e,1063218309,12322408039845545308
+ccfb8a73-a030-4ef2-199b-5a665dba3c85,1736801255,8314743597726884149
+93f7eb66-c66d-1c68-f1d5-867a9324aad1,3935414668,10895328779708858119
+2b0e34a1-8775-dfe2-5a3b-3bfef4ab8a3f,2576723465,13315596522977625956
+cd6fc50b-b37f-d9bb-f4d9-b7a3dfec09f1,2697821209,3781171705879345053
+1c7d5d06-b2db-8a0a-557f-2515084efc01,1021829414,18379078196787980737
+74f9ef79-b379-055f-ef6b-12cea9186077,3043112507,12910316630741395167
+fea206a2-2a88-9cc3-fed5-b1e804006fdf,515861238,2827834856586678713
+bf285d52-fc99-65f1-fbc0-2fd1153261d6,2814842973,11681798299058038272
+9599e027-1811-3afa-c2aa-8bd876728a12,2854927020,13123645527855157199
+bb47fdd9-665a-c626-4408-119280c8a602,1369010756,16425236074230612420
+7eb583fd-60a1-fcca-04ba-0eace3f83f65,2571260502,4680281673856247834
+e94554c4-55af-64d6-0394-83593876f475,3706489124,7720500479154634368
+727f4331-843c-d9da-ca51-74498f0ef823,3911637044,18132242764637478447
+0af03c95-4890-c213-3c03-4d1b7d11772c,2438376025,10769624985612685332
+9ec8adab-31b1-970b-36fa-c45e481df278,909141059,4503331263733906885
+cd105670-d7fe-3a39-6c72-2f4957ee4df5,3658624778,8366617584837045463
+de02c78d-da55-34b8-8141-0dd61ccfc6f5,500595385,3523868132598295618
+48cef060-a59c-6b88-d1fb-87d21d7877c2,2358762105,9615780691384173062
+d3f878d7-5b08-b173-ddf5-926dbbe7ff6d,3076123379,16413430456361192712
+7b9061ba-a379-aeee-1b99-74392c4f3eab,1350001051,473106066116176926
+03aa1cce-d3e7-14fb-fb05-1ab6935e774e,2470307528,11094851592394394414
+2be1c469-e90f-7bdf-af7e-4fa963eb18ae,2195826433,7425628158955446886
+e8bc6ba0-3950-1ace-d588-695a8e7deca7,4186468299,9120870169987705415
+43e7603f-fdd9-e733-b81e-80ce20acd7b3,1983713831,13899246756514170692
+ebffe45f-d77d-46d8-ba92-92b5b78aca3d,1982099019,11423225221420848758
+f29b4fd4-46bf-cfe8-12e9-f0aea801b42c,3173681356,15625060069896503282
+eeff8efa-0664-6cd2-4442-ce2b183bb97e,2677912108,12201394357448844924
+5ade2804-9f81-ef33-51fe-5d35df0c603a,4113185838,690861389351131726
+a04eadc4-e613-38b1-687a-a08b1a63714f,3045888167,12027529001726555072
+26bdd879-b7dc-55bb-873e-fbcbfc8d89bd,3035641259,1532559591238093014
+6337fde3-ad98-31f6-bc3b-e576d3a04df2,1203553893,5235517473718644706
+32a660d2-68ba-235f-b2c1-f47f8f766d0f,457715731,12590903423582708760
+6bda63c4-f121-8535-ace0-279bfa8fa9e1,3388349265,16917026885307328842
+a7a9c262-c267-1c21-7211-1c27e47cf48c,376639242,16656031593339563843
+20a20695-6dea-2918-0c44-e462e3cd7cdb,3547260895,4814209930496721047
+84370d91-31e3-0d39-2567-bd501ff1d37b,2588598921,15905504176048627835
+c036ce9a-76a9-01dd-abfe-1f41df9f48f8,3474331139,5201164326058851389
+ef1958c0-2eb8-8d82-0fec-a70546664a2f,1847695460,15511218200988887066
+814ff9dc-14be-0f67-d6c0-0af1a13667cb,1292626253,17293862702411722637
+293d1363-8da7-d495-1133-8ab5ce841601,1330484419,1509854523619408959
+8a0ed6cc-4ec4-4146-fb32-d4064d89579b,3142204268,3584644651178603035
+281e535a-7b59-00b2-d727-c8dd35204083,1796127997,12641083450111659540
+ec9bc58c-51aa-ede4-ca82-57f459044150,3039307299,16782783945908652867
+da8f3dd2-be05-7e4c-d08a-0325e69e24c9,1790233259,4679422418890428130
+4b31391d-e464-2714-0a58-45999599a47d,196973535,9700292339735510312
+b4243b37-1cac-6bae-0211-74332cf6bbff,2834710807,13405265875525269583
+496d5a7c-6a07-159c-eccf-2fc95c804b01,4272449411,168902224227531343
+e080a051-1f9d-53fc-01a0-7ad3ef4191ba,4072136437,14626635243425643075
+bb1e123c-4201-a46e-cbac-d9da89e436f3,2074729538,9381987837986680526
+3a49a38b-c900-1daf-6a51-f438e30cf0aa,2512391341,389782131365837320
+fc573bd2-92b1-ae84-b0d0-8d3220f74332,3837744476,17278778508601724083
+6a1864fe-b0a3-eef4-ee59-d40237975232,754972913,196928859657747269
+adce5057-0413-b4c1-c7b9-6e07264f37bf,1217414407,8425864861781356467
+e56a01d9-5e8c-eafc-9656-ba50176ce51c,2371819591,11623037493839084471
+78b25bad-0b23-b2e6-392d-aa773d418e03,3868568400,3217012885973728962
+b566aef7-7b2f-cad4-2adb-d25ae3c219fa,1407795694,7535253094681307198
+d07b8ce5-8d39-1442-6b91-9246c114593a,2158921031,18204611140912483315
+3c0a0cc4-22d6-cbb8-e2c4-94a559bb28e0,320638662,13036849240607305151
+16abec98-8704-9e4c-7974-f47299dc5288,2017122394,4034165706458018734
+51102619-8460-bb47-ee86-d82fd569e0ae,3186122078,13606276204210985312
+9550b5a3-2319-a777-e2d5-2b0fd28506c6,1497969625,13562628832451363108
+6bbe1d87-f4e1-005b-2c2d-1d74a997522f,3548980594,10663931329630554069
+a53b3e95-f317-4aa4-4267-111b2e0a5cdc,1309050092,128356896614662099
+82f23101-a32c-c57a-d733-911f020a1b90,1195513051,350532564294113710
+7d677c40-5a1b-d58f-7780-84a31f4cbd0d,1330121299,8429060871390278421
+b4c34819-ad1e-13ab-f673-b3c535a69012,3736345081,18029379511502975540
+d7ed2c03-2103-be83-d492-520bdb60b0a3,3188570013,1954063650414946700
+9e37160e-0dcd-311b-63b0-38794a7160b5,24158122,8185172797323362924
+14081668-35d6-15f2-ed03-c8016c70f1aa,292181138,906501026375725181
+934cc8f4-1c4f-64e5-59e5-89133e7b332a,4082743376,7301912391301247724
+8d665247-1dfc-ef37-ade4-71935dfe179a,966860784,2511787268474475398
+231bfb2d-9758-e954-7a43-bba167f5c9d8,4137299031,7573381876298334021
+eced22ed-c7d6-2813-0b0e-c33c488f9703,3820014224,8605157393068208488
+58290fe5-4477-a8b6-2346-e9f52bea40dd,3590950548,17514652183597360208
+0cdfea27-130e-e32c-2ffb-d15247534e72,683081481,1389200935461012072
+f25fe43d-dd76-79ea-5196-226fda03bede,297372173,3219950029622063150
+6d2d4edd-bb5d-9dde-5aa0-f5f3755ff1f6,2032555085,16979122590682478137
+706c2f0e-20cf-5389-895a-668c5e3623de,3464737882,18028066126890813193
+99e393eb-a673-f069-f74c-c61b62de0707,730669538,6955275086973040083
+dde63821-c89d-3c6b-6535-4ace57d986eb,1874634925,118976236064713035
+3815297d-9068-ecee-8e76-2113cb9dc6c9,2297134698,17919790132146519920
+152277c7-d7c9-78d2-995e-af5edc21ddd5,3169111372,1318065693802942922
+dc152f89-3fdb-bff6-d2ee-2c3a42c14874,3291823941,12388545714817383445
+6e43619c-a415-00d7-4488-7017fd56cd26,848669973,548535064760266945
+1a878fa5-31d1-5474-5268-fb4ee93c98d6,2818585744,6841892275446196154
+0d5678c5-16df-0024-aecc-b7b1d806b8d4,2553296155,4785109940626959702
+4e37bce0-55bb-64b2-63fe-0c67e33d3148,2710848267,10358165951276292414
+80c731dd-1841-9fc2-f831-264b036ab684,1902603919,725031406724301596
+07c13c1b-91c6-e60e-f7e5-22b49f5f2cdb,3636177619,13970793512052849726
+d9124386-4860-8330-3347-cde14dcaea8b,1696250965,182363397606683400
+a62179ce-8a45-d507-bbf2-c95c9ec3728c,3741836489,2399977994837190611
+7f44a5ef-9c70-8ce8-1c54-15d6812b78dd,3145449808,15859034558086176999
+e80f0f3b-2542-1516-ec0d-4238727d67d8,2737544899,5231057894247984425
+1c05e2f6-6e0b-c762-18a4-9150a2d630d4,1559378826,7021749573311549030
+a38ec593-fc2d-32b2-0699-2f4bdcb75a41,1210731867,4684119469316115372
+9e221ac5-3db3-51f6-ad5e-e33fd5c6f20f,2952821200,2846217620203563379
+5dc73030-768a-9c86-4bc6-e45d23873c1c,3323565540,11790962170709187924
+03acb9b1-a33d-701e-4455-2740d16fc46c,119120855,9734620625779226690
+8e4f8e1e-ec1f-2132-d75b-f0de23cccd66,2521019742,3260499605866058178
+f4c48f69-fade-68e7-24e7-70d6f43f3bbe,4202814823,4667676505265713243
+cb47fc0a-d307-bdb1-0050-3e1464295646,2798726643,10102486428982875270
+67c58336-1f9c-6fe6-72dd-f5c638d2720d,2308692555,346173054374983525
+df6fd1d2-a462-cde7-6387-0ed297ef3944,3659241749,5781444845622133874
+0b54f2e4-b5e5-d564-d467-81ca6645370c,815244531,3777922564237995649
+fe3ec40a-50b8-ab5f-d43a-76b35ad5129b,3226575314,2663421916729753692
+fd39cf44-8027-30d5-2dd0-00936419115c,1087782385,6247843329067472341
+33db50a3-b29a-4ff4-5998-15a0df9e9323,3086164675,11159762992179366404
+fa486ed8-8c1a-06d5-eb85-78b7f89d747a,3349580267,3023581749452083896
+2dd9a352-cdf9-563f-ce6b-42e2ee85297c,1168907303,1126371138802487874
+dae09e1e-be21-838f-6646-31b3aecadc32,2840369389,8568971974524596490
+228e6659-f83e-38e4-4709-53c3e10070fd,3454900274,12936282697281629928
+e850166a-b42a-e7b8-91f3-dd00d3363c78,4182698966,5819322293147751433
+f3d57c5f-55fe-7edf-d2c5-b4ab7db55e13,1102279496,9538356952904256588
+25a3c40d-5258-945e-8e1b-12853844f066,2569036269,11440366746866777019
+df36c358-f7bd-45c0-de08-2a883ce541a8,2801387407,4237596484457623196
+e721a73a-2b45-d6db-315b-017a9dd1dbe0,3949317368,7467299751880487308
+b4b5bee5-5708-a573-7e29-1c15df3d5524,1053139463,918665454526877378
+8d4aaa4a-e46c-e118-b1b7-2d3d3f43b8a7,3423997216,14502456614752930993
+b65beee5-ddd5-24fc-4f88-b5480e51308b,1795704335,17676369224249586332
+7e7edc73-f8e9-8e81-33c3-f28235c476a4,4250461740,6939792081403839026
+714b8bfd-338b-bbd0-8449-1d149813242e,3217541919,3518313982110640755
+be0f6123-15c8-3096-197f-44ee59b9a68f,1203780077,7870064589275188118
+96838aec-f1b7-63db-e432-20438c7664ad,1785298407,1061296775995039928
+d49a0027-9146-d980-40a8-3d2fcdd28788,377925640,8310277096482004041
+a2bd4a9c-90fb-c706-cccd-9fd9ae2888a3,881094322,15789825951916475492
+e71ebd08-163c-76ca-e9bc-1b8a96337134,2305068030,9942674910810512579
+af016e59-b4e1-be02-54f2-3ba9ff4ffa28,331196569,1697050363682139412
+9113282e-e911-d0a6-0867-55dd15352c42,264302699,14089585009369689297
+dc514404-b535-0a2e-e8cb-8735da8be6d9,3106635323,3851839129521340654
+7287d297-850d-5226-f653-4f488257ca8e,1061861683,9784276842435694947
+d5dbd6ae-4f16-8c9d-975f-d2e537969471,3152698117,14430791472088364192
+5ecbb2be-e641-47a0-a71c-76de976508b4,3038940309,5224257291865562201
+13737aec-49f2-09af-af79-7c1515636e4f,269685613,5022962093044268232
+e0a5f241-675b-33cb-11b7-a70f71329ebf,686537155,912496278886925252
+8d62ba69-ac61-e2b1-8fc9-c783fb41d0ee,3353846181,18037255271839431245
+bfdcc5a4-f5b8-53b4-4754-6aec10851d52,163749811,9843108053728678144
+d7ae38ad-c596-7104-38e8-156bf67b551a,3407748790,2730921836423747765
+5144910d-44b2-cbf2-da22-ea618072048a,3609772691,12145489969146897246
+2ebf543f-cf12-8761-f361-12d15628c86d,531184432,7552226621375196950
+c1af039c-353f-d7e0-5540-13dfacca0528,2068203393,16526566537489003431
+4d8d5bc2-a3eb-3d02-3f9c-9e5cbe73ef65,446403377,2785565186891470671
+cee6eb5f-2746-b38b-f964-52caa7375969,2954085711,13649474364436014136
+e8e30b4a-419b-8934-b105-485e683774d2,3586537622,14954317658153060875
+cdc98018-2e1a-7c41-38db-10c7337a2229,2717184788,16313651914185264661
+fc648bb8-1e5f-0a11-ac27-1da06d9ae5cd,2056957377,4202821995031460563
+d345c1b0-e5f3-87b2-1337-59910f5ebc5c,873661194,13887332982202477027
+f6e3ca2b-4b6a-06ab-da09-4327daf2d5ea,1727807215,4230123880383486822
+001fb2ba-eb74-21dd-9378-2e5b345b1d59,4213709686,7166371686820913568
+6fc7d0ca-6f2a-7818-626f-ce0ca709a27c,260097603,3420851191592710736
+19369658-c593-90ad-4492-af25b0517688,2877047397,14760457907071921834
+03d3fbdf-7d9d-df45-55c9-3da68965fa11,814342703,1980108473576447323
+f806ddd3-d3e6-72ee-088d-7f916519d106,2146345647,4875182070139790710
+d3dcf45d-5ec9-d287-eeac-15e8bd80440e,384666180,13005859993199046945
+0c239ecc-35cc-c0b7-9213-14305a90a23e,372637310,11673573504966557891
+8f37566c-87b8-6181-9565-45a3599cd2d0,3246185297,3399073786064448239
+1dd71bd7-51db-abac-02bb-f90a75ead8e8,1068341712,13784985944275386330
+8d01d434-8619-7ef5-a447-e480ebf69dd5,1265086333,14068078612370186134
+87fb2e6c-9e48-aa60-446d-2ff87ef68953,567199284,12804258873878825331
+7ea8af67-4372-bc79-6f3d-fa1e4fafa8b6,17843655,17849732160851208142
+915b2de3-1a3a-4789-be84-741de604d5e2,4119537518,10165514807454132188
+531ba9a3-21bc-d922-7778-44d342b33651,446050876,12827589129088100153
+e72e1eac-da42-d931-2f27-ac25b04e22a5,480787498,14279221974626046731
+01c30aeb-e73b-a0ca-c1ed-f3cdf234c12f,3036311970,7424289160885375860
+d433090b-18f8-5da5-46dd-2640af4ed42f,3859690928,15107486537091226888
+ab4ce285-edf9-11ad-ce07-84dcf248f1db,3931007608,9174736750213606193
+43f0fb43-5d30-8186-0ea2-34e0bd02f276,1434910981,11921155604151558091
+5d1da483-e300-f4fe-2eba-a0083296638b,2250091846,8192304468288827566
+2a1dadc5-1472-94c5-5f8c-36ab784e902f,3945937307,11358884361998718390
+1088127b-3a12-14f5-098c-89960632fedc,1216682528,15736212067939916076
+50509ca5-dfee-c9ce-2aac-49f77ce3d425,2585406307,5115983121876981311
+e6a31fac-5402-b7e6-74fe-4729813de033,1110693752,12946215274782528583
+2770b4fe-359c-8aa9-ea61-77ff0f3e915c,1218841336,9587482047726042488
+9025eef6-300e-bb27-762d-6f94700433c6,1735343034,8278086135958615501
+c9162f55-1ae2-ee2e-bfab-4611ff842795,3318974368,15104267499916703529
+4cb5d19e-b138-bd86-ed72-804ae7e12456,623754504,13620131847549020052
+ec18ba5e-1298-8a32-ea6e-88256b2f66d5,2799574434,5522215769231737635
+94e04d99-9619-a30c-7e76-7bcdff3cfd41,2889633727,17680538570303931858
+7fdf2a5a-f294-50ed-2923-5d7e82c25362,3287385087,10824335931454304347
+fd55bc07-1740-64fa-5dc9-1cb2221a115e,2235953856,16618108326376513032
+a99984fb-16cb-b7f4-cff3-fa1d7324fe2c,3727031103,12971380804759030598
+688e686c-88e4-d0fe-698b-3e3cc9ec954d,1266245161,11802599105939754592
+3e1de3c2-13dd-c0af-a7a1-1fa661f3c719,1801430538,9780522329839985672
+39afe142-4260-2ae9-b9c4-ae4c5c35f781,990453002,15974804326572184175
+732ad7c8-b546-17c9-374c-53846a36364d,2038897971,7910984794352369235
+179ef4b3-7c1c-859e-b338-e6c78050f544,1060106234,11501561076076402258
+5a8cb53f-8aca-efd6-c165-11d4b6f4f629,2032675540,5310153922919460769
+cffecf07-0584-0892-20d8-89ca5d1db1fb,3561960572,16767331921872162594
+29f6a499-ae57-4a58-ba3d-57ccfb08f6e1,87912474,52294323688996243
+e18bf291-03b5-6559-43ca-7f817949f1c2,2855293187,11395328547063428130
+e8894c5b-105d-9d29-5cf4-6d03daecbacb,2733803714,11918301466652948594
+46ea16ec-88ba-557d-7197-5837afa98410,2700900762,3058427562291210101
+001de257-1185-64a8-32fa-634c7a5f190b,3989846459,2947059000357695916
+67a8d3be-a73b-b46f-b7a3-1adac674126d,689535428,16039107936712680267
+4e6c63a7-b24e-8495-3de3-83c0270a8bde,1028054304,16857116651447432052
+7744662d-8ecb-375d-6ef9-3fb6f33aeee6,3166899466,9743343834687016124
+def4098e-1ceb-3b79-939a-671b4cfab1d9,3142530076,15996846526499110007
+b008ac9f-79c5-4566-1172-547448fe3ef6,4031442645,7530531018857234187
+d336199c-ebf4-cc8a-8799-b6991bf83da1,1214591010,7898898736232828225
+799f78a7-eb1b-c181-1b4f-9f680f22545a,1128528487,4669689269889029016
+eaf04aa1-7ead-5090-2dc0-7391ae0cfe1b,4000449886,11110416419114523434
+f9f45c0f-aedb-ad51-ff86-dc2022cb6251,4030997860,13387434816626051667
+38de6e37-d742-a967-48ce-609b592adf94,116468304,10708896202712000943
+289ed683-cd1a-05fb-9b52-d6b4402b4b2f,75597133,3399191563631149896
+f9a184c7-d979-3d4f-f210-2d315890f385,3932766711,1581818295629209299
+aa1adb18-cf04-b5b1-27fa-708d5f7abbc5,1989511103,9137324004314410329
+6eca313a-bd9d-5d90-ca49-ac985590f4df,2045700492,7840465215018435188
+f97c64d8-774c-a378-df8e-61cabca2cff2,1740879190,18029933625674548203
+f71e720b-cb2c-ce77-f3f5-bad17be85c2e,4046869938,16847235094457245524
+b899549f-143e-fc98-dbe1-f44d1ebf6329,941954590,659436092920253879
+d5e0a228-14de-bffd-abfd-7e4372fd055c,3780269464,6182926453149582239
+b9f1e5f1-7acc-feb4-0191-1d8bded9e9b0,328272951,5735416043039737872
+d7e2d3b2-bb0c-aa4c-a39d-6b1a4e3c9a4d,3340417177,6682319594307101354
+813a4723-ef04-b258-fb46-d434d6c17784,1827964650,17273019410249188361
+c9910df2-df05-37d4-edab-32926d96e658,338615469,6668380508174111971
+af8736bd-2c0e-b587-307a-503d14924324,4071997612,14318974171010968002
+ae63fa0c-91ea-e6d1-40b9-5ccec144ec07,3683813084,15682310759228177259
+ca478f27-04ac-3a44-35e3-0f36b754e90b,1676543726,4867222527678951991
+692338d4-b45e-06e0-61fe-28557e0b31d0,339693522,17688495782168003016
+818d8f5f-5efd-38f5-cb08-0e44b3a34dc9,3375049245,7353254826817273895
+5a42757a-4fd3-412d-23f6-894dda101528,2157544612,17703261249577744200
+a49171e6-055e-5192-3707-fb973d035e79,3817829847,10935044942330868195
+9631de8d-9657-2972-907f-474a0f9daa0e,3691451591,8567269831363289051
+2259dfee-5236-3a3d-09fd-807766ad9e7c,1161556166,17126532929458540586
+20538b48-4b2d-fe0a-ecd4-8c48a7f16f18,1627125777,7162810405102923125
+d3ab4537-090a-0167-fe43-8e4969cefcbf,1632466914,10410500982235046315
+1e122432-3dcc-9aae-c4ba-812fc97fe5ea,427573086,15383959357648709001
+a428553c-c75f-629a-0df3-69e18db4c606,1978108856,4310317163620520420
+247a81e9-3ff6-0296-b3f4-fd52108fd3bf,1648345026,7742693084226382347
+3fedd4b0-5b25-e9fc-567e-24e45debd14e,3100970304,13629735215604652122
+d7a49155-3a2e-8f9c-9f48-9a8946d1a742,589622637,7630428238491643645
+a8919f9a-8378-dad9-0fb0-23b07cb00dcb,752186748,9165106033441890174
+4dc36f74-3f81-e701-ca66-64eca03d69b8,1107205485,1888281201038127744
+34a01db0-9916-9c2f-ae2b-74fdaccaaa4d,2323900113,8856183829675947149
+e4baf9bd-57c3-0318-46ea-dfaaf8f54b5b,2124072841,7691659151249858268
+851daa26-4e37-3f88-9250-5aca51325007,490780226,4944148608042461196
+348d25ba-d2f6-b473-e271-05435e64c65e,653070103,8256513236595263312
+f937ac16-f475-ab53-6f19-50d3302357bd,3353937620,6738057852704366579
+ab62be19-2b2f-dcd9-1cc9-67a03c0b5801,2674471986,3155748480669577346
+4340acbc-2b3a-29b7-7793-8ff8eeca7a93,3438035967,9975385990616943596
+b6db9e90-c45d-3c9e-b2e1-2309390e3798,701110062,16630988052636196424
+27a32621-779f-adf4-9a1c-36fb0b53806d,3954816894,11025383372188829469
+9624cf02-e57b-f133-4639-951a1ec5f1dd,1693990278,564952092220100454
+e47e5891-a58a-a1ad-85d1-04b6a6c45d2f,3672535807,11919132997698958813
+7218da22-5e57-edcc-9ac7-a806e38f817a,2494304123,985138318427015753
+47659a4d-ee8c-cf93-d768-17eda9255e73,3882482941,1561408956029604193
+c7629b33-b251-7ff4-d957-30f907fdfd37,1634706324,12422593378435016690
+e770cec0-9afc-8e4e-70b7-ac0be880fb97,1969803335,13367647711087636831
+cf50a1fe-5449-d32f-5276-cbb2e1df9490,3935179190,17505339945385181113
+29c50837-ac81-35d2-9293-d3ee0ec2e2bd,4152596175,2750650773680629520
+a43adc55-7e40-7cda-1c48-ae0890dbf12f,3316272042,4225978377767670805
+bf48437c-0444-3416-c55f-587d044769ad,1690283906,16473219233886431200
+3d5f1b83-d522-5e0c-d893-069172270c1d,2456050963,4961764437671117363
+6bafc443-8586-26fe-199c-c9afd17cac50,2365631865,18117355693116235783
+25ebe404-933e-ea2f-f9ca-aab0681b1d02,894346140,9671949205641826748
+7de81f60-4ce3-b59f-e15e-204967b11264,2647154195,1797564881752567954
+c5b3d5b4-ce59-147f-f3f6-bbd4eef59517,699825323,5376786713802353513
+d7a0180e-2cb1-3906-070b-18f43628d77b,1847683615,826220119122750370
+7f606b59-db02-aaa8-e65a-31b3e8647e28,521063244,13648902824065008549
+d8887fde-2c79-3058-f84a-1ccd5d7b54e6,4191309620,4637232750437950122
+9efc8081-3855-b6a4-1614-2ce00df01f3e,1451876887,12358916844121325625
+f16c307d-c3e6-8b42-04e8-3108f3a52f47,2790418868,4966265731482903794
+3aa82fe3-6e96-0dae-ee57-68cd495e6588,3506817263,15294827470617243377
+33ded936-0aad-bfe3-9f0b-cf682a68b097,1149030715,14025823528127135807
+4cbd959d-c94e-eda0-2a16-203f7e38b043,1870015809,10907352615625255338
+b3328f5f-dd08-cee5-5435-afc720d04b76,132354750,17005018966221749655
+5b81c89e-a710-4acd-199f-b6d7f92903ce,524791730,13778463712589432840
+49cc0ce3-7189-b94e-ca9b-2bff59b0998d,1663921565,3110109472255864932
+e45913db-29ac-6f1d-85b1-5df29ba1d61e,59316488,5102085183682270994
+a9e41172-7aa2-6ed5-0b13-741e5b6d0d73,3636270175,5563709060396298357
+cdf9fcdc-8f57-f159-4600-daec5c6ba3ea,1985887553,14936256465339690329
+710e4dc7-29e6-e919-dd35-e7e70eaccc20,1598633998,2312964672014787789
+dadaffa1-d9d8-5944-eea2-e219e6e0ff05,2165362480,8779354528850006834
+14c1a090-bfed-9e3f-1b8e-f9991fb8ecad,2635599566,6695051830689883750
+41a72efd-6396-c8f8-9916-1837f945ac25,4038704600,16121083191958050640
+63112368-01ec-3c08-4499-0f5ce337b5b7,2040451601,13943340068131326476
+b49d089f-0be8-9274-d19c-107cbb79f68e,2269575266,1693881727946303924
+c427ef47-63c3-e187-ef79-b12a1286fcce,2852792339,15800112176229614078
+690f8365-4a91-76f5-447d-e770c631e2fd,120902935,9393250374064587668
+fbe1ca74-375d-34e4-5d8a-bce56248ee89,2356145190,3432591638913411921
+006011d5-0d8e-f850-1ae6-3d216b4dee83,3186665867,18406484925453767707
+a646b6de-533a-87c3-b4e1-20a138c4d460,3753773122,16788818034235099083
+05c2f6c5-0df9-d983-c323-b0da8008eb91,1106453712,1686722109925847104
+0c40e9d1-91d0-d679-fed7-c156ca1ef47a,3184891485,1823210388435289435
+5e726681-dc17-cfc9-4c86-5ee6d10ea1bb,2766836616,11074536701068100014
+0fcf7435-2f90-94f8-ff0a-e353a9ace2fc,1106052599,10074589592096168614
+5f524d5b-ce44-6108-a343-0d987c64d9a1,4214217236,16568999456343881750
+3052864d-4e75-2188-98ad-6b7df32f3bd4,2188249832,8987860347284565898
+fd21f143-315a-8755-a403-4de97816c566,1017453108,16857772712718393639
+3fc58b74-7fa7-503a-24ad-0a350b5affd1,2988401026,9709023536995875695
+026b2bc0-7dba-8308-5482-ce6f43d1b570,1458033820,17423008187204988740
+90862b6c-afa0-2ab0-28b6-ea1d0e77305c,1279002298,3426387822000868043
+73e518b3-6948-748c-6cb2-2263bf77c244,392618046,14680570483725178700
+b4e849a1-ac2e-6a01-85c7-f6a0889d31a2,2089805312,696966661743394165
+6f4b5af6-5a42-0342-8dc0-023caae810c8,2605039676,753501853397516369
+32a1b7a0-ebea-b5c5-0a4c-b7c2e50b24a3,3944819202,15556532766591244305
+519a7d31-053f-d5e7-baf8-fd78b149266a,4001192077,17822109929315574919
+99325d59-bc86-f0b2-336b-a50f5ddaa4fc,1380662580,14981489061710381192
+c03a949e-c252-6f31-f5b1-f7e7a21eefb6,1005921943,8374361778450448984
+59985906-acc9-8a92-7bb7-c11666cc45d7,2162751981,14998388697307940155
+4d22df87-ad1a-7ddf-8d59-59f9dba255e3,616569607,17082434310507554867
+f7e7f3cf-d3fc-6627-46e8-154facf0a722,1013363274,14198532943184263971
+6f198bb0-0b51-653c-abdc-5f88e5e442b4,1844207041,8756478494342092893
+e8a92635-013b-1ce3-e857-988ec3892693,3759701028,10819672348789302765
+c3f3007b-10ab-38aa-f6b0-778c9bc81767,860073329,18327874847283331333
+e200abf3-c6f5-ace8-db97-6a63355eadeb,1923659844,1415091790912354379
+592deafb-f85f-f7e1-5537-9dd6508f0f89,609198139,6101359661458327841
+cfe0b0bb-bae7-12e5-e51f-4adce96748ea,3007560577,11182716855004516257
+26cc7704-529a-6007-a989-70347743933e,932554075,9922644121044186680
+7d442165-1bdb-5f1f-89e1-560c9997511f,2437403980,4868277855198387689
+f7d46537-3549-5c46-381c-98989f360833,1929808720,13159979786718329567
+7e85ed6c-44d5-24b3-cb5c-47cd794e433b,1551873884,13162808476640439626
+68a2e62d-a70a-df95-0794-56d97f8eeee9,82509825,12597145772481754720
+5113f1ba-398c-daed-196a-497d45f9fd2a,492531664,15493950206317384495
+a4ca7b17-410c-972a-37b9-365811df2299,2084054831,2006359031555163227
+2f98a43b-d7c8-53f8-b85d-c10c82944383,2481619096,6888758072929638369
+ea891223-b636-4c5e-b3e0-458c2f4f4464,1508596363,16253748192930604801
+ee4c78c8-ca17-2505-a3e6-9779de50969c,3598215693,925524288567339269
+98a0116b-079b-6d9e-89e6-e02b920fdcd3,4168269237,9991697313846603581
+2d617bc8-1dde-03b4-a0c6-6c75b23d54fb,496305910,3555390384518235820
+3b56a5d6-8e54-8810-afaa-af70d9c865ea,751770691,433227071029940497
+bbf7f856-e2fa-e232-d3c4-323176514df7,1893874748,3644934819333444030
+a3c93a21-1e15-5437-81dd-bccdd8bfe1e4,397124727,15052348295748795534
+6332b6c5-7f54-5e2a-6023-909f865adb6e,2892611621,12486764489560260585
+55e35179-38bd-5f4a-9d67-cbde438c7126,3164545043,13962723211643831841
+64fbd619-38c2-27e6-903b-45ac76322079,2784770727,12443512913200843181
+32abfd59-2b00-0cba-5a79-108902aeb0d8,3504396937,8699773579650479523
+25278824-2b2b-4788-5184-1c56f201920b,397346626,9550141425043243443
+67dd1875-333c-58a2-9c1e-069164601a08,1788850840,3587452681140296133
+5bef88ae-eafa-976d-1b20-17a8534ce1ed,1691927883,4224580931605159287
+6a8b47dc-8587-0692-044f-dbf96ee45063,2328979621,1489226798622563596
+0af1c7a8-7f8b-0920-5395-690f18c44d59,571313499,14167542133518617865
+2e75348b-7d38-9979-4551-321da5a097e6,1588224165,51078990452072594
+2a42d2fc-edab-be15-ecaf-f6709490a5d3,3573281131,17726740633309637728
+4632d278-35eb-f0e8-067e-015b07d2afa4,1616392756,6688618686323662031
+f7c62741-3d13-f9a4-d0b1-5adc97ab2ad1,3400337024,9932564315001049064
+733d7239-14fd-19fb-46d1-dcc26bfc2fd1,2204105522,1971247881482503492
+04a6dd73-2cb8-8798-5f37-d8141941331c,381936023,3965828779549915805
+7b24a6de-dda0-7cfd-fb81-afe029f6bf42,3691726169,17666565340382241862
+f8d38bf9-b819-0b47-a123-84d6203a9743,950810073,10510064838557878104
+a1e34162-8794-4a70-e212-9b36183296fc,2738418787,14674964184649268243
+ee029bd9-5c32-6930-15eb-9fbaa10dcf6e,3996203739,2676458363086447187
+f28db7c3-a9e6-e0d9-84f3-2ec205635563,1030397129,10482277510033351385
+4b97fc60-ef89-0f69-e8cd-05ca3dc3695c,1533063185,3675257959472010865
+4eace532-af95-4cef-2cdf-d891be37bf9f,1388342301,14427252857492575388
+3c16724d-e3e3-3fd0-7f43-32099679aa0d,1100933156,5820950070787164778
+892fc98b-83de-e4cd-c8be-5af61354258f,1469063552,10832065906815840185
+bb278504-ebdb-d535-8063-a7e4bad0090f,1989758411,16668023637988968214
+e083a932-3c34-ba12-14d5-02baea509c1c,1684321073,16460330421972270645
+006cc6f7-1f2a-4aa3-55f1-107127796052,3001961919,765953772752779106
+9c9fed5b-6a5b-b5d2-0d88-ccf60dfc70c9,1483571828,10249395830288864500
+e7eae9ad-2708-933e-8f59-98dc0ebb1798,2589862793,17123057284645604014
+1469a868-9100-0a1b-a8d0-352036338f0b,4009685862,3682296380250782406
+579a18e5-c385-b3a4-13b5-4d6e06ee892d,912305805,17344368629926327867
+1484d538-4cf3-7873-f573-f36cd4aa3784,2966859580,2907913484212840717
+f84fc5d2-03e5-977c-d362-54569554cd3e,3356657343,13311437245283586183
+011c653f-a4fd-1f65-b95b-e7929b1ccd74,2911773580,10565003820841318009
+a6d77d43-e629-39eb-c772-04545d0f77ac,1428373989,455768541368104990
+297dd695-69d4-2d67-055d-5443cf8c8fe5,3126118639,7919462058572651864
+de2d6ad4-bad7-d311-b7ed-266854ebde08,1265701512,15527523715232194610
+1cf94321-cd4b-2837-ae11-d7eda318b089,154761631,966460429660923828
+4b94f053-b870-b95f-1204-e0b8c51c55d0,63698397,14837704988042541867
+735b6375-aba4-25fe-1f19-8cb88e9d9b89,2994853835,17343928988594991690
+02d2e89a-6973-78e5-69e3-72d15483c356,2031282459,14883520064233074451
+9f639987-e607-a40d-fa57-141b267bf275,3526586813,11428217674017339088
+7f9407d6-f479-1ebf-8c95-af7d5c0bf0cf,1565364475,18218501552602285714
+e1218683-d307-2047-af18-9bdf49dd1312,4125253127,7057987918770522896
+f43c1020-7f6e-6be9-6388-9ce8161ff2af,3236507838,5506536468900617290
+cd59553d-2dd1-1dad-3f06-ce2418c683d4,670610615,16945497288832264620
+10eb9cf4-6039-57dc-3de1-cdc02658d809,1626817213,17337810037082108453
+b15c3d14-1ba3-2d9f-e52d-5962ed0fcbcc,1539545361,2845542455232011525
+c1a09c32-446c-4e63-6312-824e9e93b97c,2533160883,8786635662217797808
+fbc07a47-bd2a-15e6-a4be-f000276a26de,2123654801,90484498728832186
+78363588-f69a-2ac0-94b9-dd90374452d7,682899641,5233826392781691848
+e7b2ecbc-3474-74dc-5bcc-6e2880650fb6,598394081,13678703735820065341
+ed1c8ef7-414a-c767-d4e6-4920de245898,547479405,10929734341124040032
+0a1fc06c-3161-775f-4597-057d40433056,3754609041,17046848894082966112
+0b837482-86ad-6d83-97bc-d2afefe17820,1244473024,6254967695030024271
+5dc054bd-94da-5774-0e14-3f521be68f60,321453567,6327198923670688714
+81a1f8e0-0346-9981-29ff-52ade3a7fda6,1852249808,10366831094933194429
+7513346b-4f40-8828-1233-54247d1ff59a,4290547710,5900692664760409395
+479e2903-73a1-6590-a62e-2543fac2eac8,1261712389,9856589816143398961
+35249e66-bb31-a299-ed3c-0bbb8c3c7229,528063573,16538637064027188149
+ce63b955-99d1-7e9d-9b4c-b1cb85322611,2992070559,17185141253399413079
+ad91212f-ab87-9a70-ed16-76ddefcabc89,1243245399,16052289410938788949
+a38f17b9-fed3-8493-6390-47966f66f67e,200130291,13231372371966264031
+54ef6722-0ba8-ab99-274e-870b036d110b,1740038734,2508692781727023643
+e5e52e06-90b2-0e6a-3bda-3d3df20f590a,1963740200,3107162158328361109
+8deb02f8-eef5-2428-81c5-a98bb894f0e9,3591289167,715224396927988694
+35fdce93-f6fd-3ccd-c139-b7004965dc00,2182328578,14855201594532814382
+04524b87-8d55-637c-6572-782409f76716,2686519164,4121059173774470147
+e4922ad7-ccc4-4e21-ba1d-664c6c1565af,449365747,15425964385323426107
+9518dd86-603f-2daa-acb1-465d8ecee94a,2883639844,10286592211043574886
+f7ec9b39-9808-dcb5-f124-a0426f71612b,3388548252,1225320427632607167
+03f95297-730c-6ec3-007f-b2e365f181d6,586259461,17228835704912964086
+6eeca7d8-5d66-036a-4735-c13432ed3f0f,1344370876,497011232009708323
+bb046fbb-45c0-e15d-daf4-9b5af099a541,2946798003,4093993823189205008
+43cd48f8-2592-91e2-a796-5a4a4c5cad83,940506808,18139173835243877380
+7c2081ef-3083-b279-6c24-677249cc3af5,4176891391,2630698719325394999
+93cee395-213c-6e76-2249-6f909174afff,967617615,11903275558715924044
+3a730d45-8bb6-8049-5fcc-41440325c2f2,4249562451,13453007298011582514
+853e5cca-d7c0-6960-0ef6-0df8b1d0dfed,3455635407,14124162501458603764
+6b998ae6-5248-e6b0-7405-0b32344fb6fb,1615495350,3829651558353735753
+809d1d3c-9f5f-3411-04fa-78a1a6419103,4000511970,13209486585315496079
+2173cf2c-8c8f-27d4-11d5-29a75068911a,906210399,8293812806564794190
+992bd173-5362-1d26-5774-9034d6e62e1e,2626116352,16025575726703559228
+66ddfaa8-ddfa-b942-a508-1630d46f5109,3371513737,8374426188899385222
+9838a927-b1df-91af-9c62-6dafd8f92a3e,1194703810,2701903945838011815
+8dcb361d-d6fa-b82f-6a1e-19de81686ef2,2066611090,8228073128207116210
+8ff3bdfc-e4de-6ad2-a99d-c56222355125,1754325259,7816115922483587694
+0e635802-e494-30ab-866d-dffceba911d3,278744228,12545824366570070389
+cd580001-bc60-f9d5-51c3-897d07b9c824,612269686,5063436122524576743
+20c2750e-2ff1-cc47-d28c-a26976bd0d88,4262696482,16440418751416330358
+e33b358a-45d8-0701-d4ae-46be95ef6f05,1739638569,3241003410191353903
+f920645e-7097-fea9-6c95-09856ee55728,1024088162,12091561673669669296
+0fcdf905-9b79-740c-8a80-2a5c51b4c9d4,259489507,17726819879460154999
+e776207a-0fd7-0a21-f7a8-d504c78b2d82,1002096640,10144609681699171874
+9db5ed21-a38e-2f4f-12b0-2e37a0f03723,3139328587,2006269342289521987
+2e5b34b2-aba2-2f36-ee21-01470726b7b8,2347392536,5765663473329483868
+cb23af77-05bf-ebcd-323d-e3ee696ed341,4243433170,13517353096487874248
+56367765-dec8-6dce-056c-b2ff72fb9e68,1584160914,15091582540184731541
+efbccafa-bbf6-15d7-77a8-d73abce0156e,3136095080,8574654535212639449
+9bc4959a-9be2-e2ff-587a-e2a2bdddf0cc,708487836,9658265193555835566
+e2716af8-bc27-61b5-19ae-200ddc61c418,3669594930,6275287794056735699
+7db77f9c-e7c7-44f1-7251-e996753699cf,147896240,17885884451897171427
+819b2ee3-f1be-5e15-9c41-482f6a221c18,3348362139,11147227355919824472
+69f565fc-4c16-3da9-7f91-cdc86728f058,1055890916,9446211564087696961
+8fbbeb9b-372a-3c75-8f38-93121dd6eca9,61507884,1909686787827611600
+2f922c65-003e-9424-aa34-92e2e9ef504e,3261816804,3612154711542959649
+2b550b83-0926-be33-b7fc-b4c025f1ec8e,3041084024,6596561396348762382
+41b2b078-9b41-95e4-e8f4-c9cad74991bd,3038083869,8862417723363004384
+c19b4ab4-039d-066e-17e6-cdcd07f875d0,3805913284,13900578258068760724
+6a919369-312a-85cd-f3bf-1cd38bfa7f71,2678110258,14775219704249250240
+0813fa2e-1af8-27cb-a66d-6a0ae7681cd3,1190263519,596883924303023791
+57f947fb-dd73-a6b4-964b-1ad73ca784a6,2399148925,5175992979637463316
+c01397d2-b1ef-ba1d-3b6a-4e4ff94486be,287485698,11096306111863551150
+1a2deea1-bb48-2b18-061c-9f51d4eb9ea3,2842144787,14108577970805996936
+835eeec4-4962-657e-4df7-80a63e377eb6,1013184389,7915295262516258560
+31814e6d-f291-8bc8-3cc5-07cd1654ff37,4041846304,6852773015223604912
+f9213d27-b87f-9682-cf9d-4f960bebb8fa,300626703,1594013868180462351
+cabb81ec-b7c5-09ea-f01c-7803c1bb2bf5,3976477763,730880210944908190
+fbba4f95-b30e-3a1c-5e1b-60e1734ba28a,1520062527,4455111514405590278
+b88e9cd7-c924-fe4c-b735-ddb34c8d2845,629820421,11031994277399465643
+0aae8fab-cf49-d80a-5f06-e39acdded04b,169166612,7453856335271695031
+f5c4b8e5-476b-e60d-d824-367363ffd4f7,1034034309,5270950433468753248
+4bb02288-38ba-5157-094d-3bce2cd8fd1e,4153447938,12212484398106280278
+ab27e7da-967b-9f92-44d5-047d8d62fc1f,3025048423,15204479829259769611
+4f2fd952-1de5-f2de-7072-e9e785674a3a,783461857,17167927167567745920
+335d6bc2-90c2-90bf-e2d1-c64ba4465b20,1139750198,10115625959541889038
+eba4da7b-871a-953f-4c42-d9b6ac62c222,2700195665,8363172090711563096
+d4d65afb-4f9e-f80e-bc00-70c31b9bd0f3,2979527667,16876603737032517873
+9dcbcc9c-33df-07de-df28-8c6697e9befd,2439888464,4027978645207219673
+9e4e5cc9-a61e-38fb-15b0-10d7f36fb650,674994567,13975815443082306378
+988c5feb-1aa1-19ff-7dfa-4c1b6208e5f3,2404235255,11953157453097753251
+0415e034-1aab-4ee4-51ac-23bc8bb267ff,2517213677,8698820339787867557
+4aa8e6d6-646c-4464-b6ad-00a97c875444,2793127918,11470154108030546179
+3677dcbe-21bc-289c-8453-6dfe5142630e,2550000054,14125954425715186404
+43ac42ea-17c1-aebb-5c17-1aa56b7e6b23,4276744437,1690060877308945089
+81985110-29d0-3cf8-15e4-aa5d9388202b,1938272256,2829056420847011291
+81aa961b-d17a-f0f1-561e-e2e828ee4b1d,343078538,14408603112361263715
+ecc116cd-7f10-8877-1d8d-4989c63955a4,601709230,15051149591597083169
+58625d3c-5a3b-9d64-c7d9-0ce0bdda32f1,181158942,7733837087315240288
+15df9116-3f3e-75cc-48b4-d125bdfa915f,2463732162,10642897740674986984
+f9dc57d2-509f-4ad0-5cbe-90d20b77ecd2,3283393523,5013204878988594916
+0071a702-1d18-94c1-6513-2b5eeb6829e0,3809413173,13521757613577565852
+0a2d484a-6105-3052-3e7a-759a888aaf97,2021064137,13279443131595628511
+328f4f59-abe3-4fab-a4b6-69fb3144a74e,3016249876,10929761383594364759
+95340af6-eefa-d081-10b8-69f5955b3bd9,2297244814,7504779489820215311
+4411a46d-ef86-7081-ccb3-1281d60d698b,4067240560,2142149172847224568
+b14b05bf-9667-0d8b-93a4-b36e5af96c73,3203525150,6884728206452830076
+6f1dd022-3665-a12b-63f0-e1e1510cb835,2184277455,1704339189787423644
+c37efe9b-e191-c0fe-3f25-67bc0b8c402f,3403529523,7466587013179705876
+9ee0caaa-7799-9f13-6c5f-c1a995e140d3,3950788767,9784054472244532266
+fb98bfe1-e4c5-5117-311e-2abc193e2c5a,1696572713,8288415355629884290
+0e225665-2120-a270-0df6-baf832f7cd80,4083659840,1219285211264416934
+ab1f08d0-8a94-f638-d37e-8e77f98fff26,2407693135,7242727754973355944
+c0c6ed39-d0ef-3b52-0cf3-ca04e763059b,254371673,790449820265549973
+9b57db51-f917-d46f-28fa-1ab713af13d1,1007995469,5032011873064766579
+b6e27bfe-580b-e6d0-cc57-2320cacb5333,346455680,12697114480308618747
+0b60bce5-f908-c07d-5377-238ec9ae99de,4226435179,14364574288357224808
+0a40c637-b1d3-1441-2aee-a52bc21560ae,62820421,5783706824199988172
+39fa54cc-5b56-b19d-a42e-241837f46435,3348113003,17382287791676888987
+09ed6b7f-f7dc-8151-68fa-4048d2a93d58,2515321071,12185900209741957130
+d0a92aae-2aa9-1c00-98f7-d7742cc709cf,20558473,251969762907512380
+86900fda-eae1-a89a-4de8-a9e175bf859f,2055465424,18156792112542521658
+fb670c7a-7d36-378b-6b3a-29da529de1ec,1411495825,17104113315729285272
+4261fe57-038a-51ac-cb1c-22265ab15431,1244412931,16503230330354922972
+1aa02ebf-a8f6-e135-b8e3-3077cdf6b698,2965366620,8676002201640270869
+b7e68d1a-ebf5-74fc-0e55-b4bf8b4f6dd7,4214960265,8702422980482420958
+17e05a25-d5bb-8634-98fa-855b1deea048,4079026735,10621738963018785016
+ee1c2dcb-842a-cfb2-8078-f315de5caa30,4202555110,6831878169294445169
+612b30a4-9dd6-2c72-e864-38f485b19c7e,4100718458,12055059837123298196
+678af583-8bca-c9c0-85c4-ba9902391ed5,1684331531,5204739517496072483
+f470063a-f716-05b3-d3c5-42119e210ac3,4265745679,18012471349461322466
+05c8b5c4-84fc-39aa-36eb-31ccc83eb6a6,3378126646,15146709037314242791
+ee0ca321-aabd-bb39-dcad-a1538168af0e,3086055531,10874256628214117943
+322051e1-2f2f-9fbc-32bf-32fc30037a52,1250146498,9219606882092737249
+c44fc4fa-cd39-9391-e614-222e8eb94d02,2493009281,13663226311628621775
+4bb5b198-fb5c-ec6f-b6fc-14213e51cd59,4077612031,18030820946877537888
+c8073091-6a36-0460-65d2-f55f13c83e8e,816654253,13554715069323097840
+ea37a12a-3899-115d-efd3-14631da005fa,222227091,59367101619781507
+e5e252b7-caef-eb97-2538-1a6668d40d93,3390435322,1061725663096912490
+b410d6ea-ab89-5f02-8c72-6c8e4a55f443,3938342384,16920323006837774242
+f0b82248-9a9b-f71f-33f0-d173d2897448,230652723,17038406226784833781
+7e0c9472-1e9e-70ad-ca06-77a46aa5aaef,4029956185,288935460200271376
+1e173f25-3fe3-fc23-c3dd-04594a070efc,4178934251,7077138479186091425
+a057d8bf-5816-62ba-6f26-c9e873128d5e,2471246208,16939093297004828604
+1a7ab744-0cab-1002-2331-8492ed9b1ba0,2964128171,2306166833791458444
+a2a75264-b216-e395-97d9-69ae440eb01b,1390043545,14906330784671293875
+f5dd3e1a-5aba-da13-c40c-9d3b068c696d,3843779509,7248723802150440298
+59a38301-d72b-c05c-7abc-39b0a234eee3,366445090,1772618261234828110
+f6e3ea08-20be-a5a5-6070-dfc4ef5af4b2,1802983896,6389748281086338187
+c4f5e87a-ea88-8ed5-5455-2d630e3c998a,2325145120,4734808976166360712
+74c901c8-952b-3a9b-548a-2aa6b243b152,1323633586,11115711051276435318
+ea7f9ded-96f2-45e4-63cc-b5336886dc2f,2582360013,14623885645292006709
+88b0c791-131c-f440-a69d-924ae9efec22,2873271672,15375176414679840520
+dc79ba18-8d5e-b599-479d-4c3eed7b763e,1958799959,8621097807036748411
+52874eb0-5ef1-9132-176d-378ce13a0c6a,1136294612,9738862942950006147
+b58fda2c-db3d-2d13-a8df-7b70cec2274c,1532900810,15979111183802887455
+6099499f-fb59-0689-9917-90c7cfd9aae2,349938407,1674555282131384307
+5b1e89f4-4f74-b4bb-8bdb-58d07ea444e5,1122072458,2605581135169126625
+1034a578-e75f-2238-717c-bcb47c864a48,2850353145,16691176418171408171
+535ec09f-9270-3a30-1a8b-7769ec28850b,304473130,3641796579372970623
+bb346ac4-2fb2-3f99-fd11-b13cede825e9,144449197,3163703977889149995
+312047ee-05a8-a6e4-c79e-457772265669,4097591990,6016840364354624605
+26728cf8-6fb5-ac89-9085-72b1df321e92,3478542866,129558887757047559
+55ba6939-7ac1-3f34-a6ef-a2015a25c5e5,2704674596,10511316749083185098
+16406671-2ebf-3348-ef83-042a93f34d94,2548569085,12430794609825376574
+13916184-7484-2d66-4a74-2cddf770e3fe,464005300,12228038643700957805
+8667ff50-995d-d08c-2230-ed603e1545a6,1448527709,14882294392627123578
+a0593f5c-595c-b0e4-2b94-2d8ce9dc1b71,2366414671,4429955072138222014
+672c145d-7d89-98fb-40eb-eac5d9c42902,749123467,12571224011779512670
+9b6b29d6-a22a-ddf3-337b-a442cc87191f,655553770,14333814379442701483
+252b1632-b152-0cfb-e358-5e4387111e53,2144722314,15330202354612082898
+29865abb-3140-3a95-658d-0b66cd3fb1f5,871748884,5106539533919499071
+708f796c-03df-d638-0eb1-31761bdb7e67,3048078917,10325552169555242649
+b0733b6f-0b58-1acf-eaaf-3e91833be2b3,2061313233,677520850894961359
+e53e7444-f580-96de-7368-7725e01afd0f,3641697882,18085471590177861297
+a85f7a53-08a2-e951-2bc1-f07c39645d7c,2425900770,450998900204436920
+73edf392-421c-ffc6-81d9-c46defd84d0d,2726326741,128903665091181466
+c50f2ab3-8845-1653-dc79-678de2d9679f,3340504200,6732886785149169779
+88113e03-e224-2ae7-7d81-aa19ba9b5503,3218064795,13016228666133809154
+4c491a82-a9c4-d02f-c147-d777ea79fd6c,851723971,4419750235098713321
+392b6179-8254-9a0b-dc20-c94dc763553e,4200200950,16152295198445331522
+a670fd05-cef9-207d-c630-75f8ac9df4bb,1491282834,695429151723387422
+a3d618b9-d118-3532-dc27-00f4435fad0d,1627504090,7664936000057120326
+855560ac-6af7-dd94-f12d-9cf7a58ed981,1537282471,14600549256746935286
+34f5ae68-5420-3113-0af2-331e62f7f192,3877216022,2534339150676869763
+5b4ccb58-b444-1a42-1304-fc821d5476d5,3463673275,3968203079730915592
+1a7dc67f-dcc1-a46b-d7b2-d74bd4cb01c8,536361698,15657744086224912598
+f0be70fe-3faa-4b63-9e5a-d23d37887fec,3515708043,2690692143857484417
+6607e382-60e3-b863-c17a-4fbc3ae87a1f,3412266074,13368375622062390943
+e2a46d30-f9b6-6b0e-bd6f-9d2c59e26262,1366786275,5756990909376024703
+8708dda2-3458-5aed-5749-cef17d81b21e,2987603450,7111650955726723191
+ec956638-8098-86a3-db31-02ef8530ae7f,2394855420,7866493113572476869
+58509b8a-8f7c-089a-65b0-b76218193e6d,1709317619,3294891958981616397
+7c3a7bbd-1962-d426-82a5-e6d5764ea449,4159743794,12918769545333527427
+eb766345-1071-486f-cac4-e5bd911f00d4,4113011873,15432852256975875742
+bdc8e58b-73c1-c112-98fe-da07053910d8,1065871263,14476364828979410122
+dfa3d74f-5ac7-a8c5-9fff-192da0e414d4,2027937190,15967522423155458452
+4f560e50-b33e-e464-21cf-3958242ab79c,552090812,4686306912805469830
+462af0bd-7bab-0cb0-9cb6-dcd75d49ac49,4192444950,12753833726070272648
+3a1b5825-94d6-8213-292a-b4866c978bee,3254797549,3044214433495994228
+c9631b24-7e8c-1a7e-8a67-9e90a763b852,2629108189,5661231296633831310
+31bcd124-79c5-60cd-f023-5999851974cd,4172385558,13111271650466993992
+a1abeb41-7f96-247e-7814-1828aa0462f4,3826631949,626932698516199636
+852931e9-f6b2-9b56-e017-7964e5d26563,4171377143,1855977656781160985
+24523bb7-78c1-acb6-9f97-980c4c06368a,3447395032,2306382252967085526
+80c7197f-7009-6a48-9a41-170b170a6923,118005680,5942960564930945099
+11925cb4-d221-2856-98de-575e657fcad4,1714613198,8153817119077955530
+72bbc350-cfd2-6778-a245-226a187d2772,1346278191,3645855759856630647
+e64cb00f-de91-ee97-a0f0-e5366315205b,3249645122,12977190575833320842
+f51a6d6c-30e8-749d-f5a7-af88c8c0d50c,2615332584,6500133664975089225
+f7c25b0e-8976-b9bd-c2d8-93d39e2ea184,64105314,10702753447415740852
+dcb8ec08-c07a-cb8e-c9b0-03a03a2c77bd,2793486904,9004846779297671229
+6ac80bbb-1d8d-cbe6-7e33-1f506e023daa,1357270404,2860442444464810975
+1247e22f-a44d-440b-2684-5765e81daa37,1215493292,2681690417598909697
+994fe33d-b14a-9a4b-c45d-3ff2300110bc,4244328795,2030500319866232655
+879598b3-9f61-2697-2bf1-697611678a9a,2566871787,10749144942239014185
+3ccc58ac-b867-5bcb-3f92-faa30d8f8978,3464231738,6698758199465600872
+14526cfb-6132-5188-d950-c46fb2e9332c,3973305017,13493471047699505520
+0ea71437-c031-d128-93b6-64d820da0079,1167887601,7710380494668183533
+dc781ebd-02bd-0610-cff2-fff2fc54bbee,3668934839,1351514438524787725
+4a29eeec-7f2f-01e9-233d-3256d70ae648,2405295803,2669145311774259356
+d4ccc84b-504b-5ac5-bd73-42cebd8fd188,1452570991,5652749511279188428
+7319ff7c-795b-336e-9a33-2206a453b4c2,3706517875,1949702136815661566
+32023251-c1f6-3794-7a1f-02daee28a4af,2764806498,17355570535328748814
+bb81c7c8-fbdf-4e13-5f29-8049ce544f7b,2368939576,3298067470161060327
+0f4d16e2-b55a-2323-f3e8-db7955538bd9,3272299370,17642716418282746853
+193ecd26-9ccc-7836-414e-f658f484a12c,3399161188,520293082175390815
+668b224c-304c-2890-1268-17ae564c2d6b,399342501,10055493059867179056
+fdf760b4-0aa2-7aeb-29ad-fb424931483b,1826430416,4763568268480541258
+2df5f9f4-be76-b86a-9b7e-7d6c917516fd,373720206,8411319646405614085
+cfe8623c-2b42-7bb0-8005-ea4a37faf745,151835115,9971414951418260589
+84aae79f-35eb-35c7-f832-1670c1d37263,1101619430,4336754636785899048
+ce76f1d2-7357-4b80-90f0-91abce44dcb3,3552395470,4323992688346119302
+4f63f75c-083c-c71c-ab6f-e94c5c5a5e9e,3173415854,11417824563278373315
+a0601710-82e7-c32d-e30a-385c425676b9,3880398716,9110658607321729871
+a9ec1930-9c65-5b3d-e02c-9fd2b61f134e,2941235842,15163871057865289308
+571b8b7b-b537-9603-3b47-6b55e3914fe6,2991827095,16868500124985136169
+1d1466ce-9d13-f222-feb5-b4beb24648fd,4002075027,404115271408627687
+b7c173f7-424d-04dc-a4ca-2a35271e62f7,2333218023,13916934431616308931
+1ab54a20-a8ef-1716-6a93-c13b0e341a7f,3566920864,11174248477156939636
+bf6658d6-935a-b3cc-3902-5b2d135237e9,4280878477,9867383802402825877
+34e00e3e-3b44-be05-20ca-c8755710be13,2838610292,170846742813709932
+03920a6d-850f-8b9e-aff7-d9f608bf40c0,943300181,431482626160315664
+6234f286-b2c4-42b8-d8c5-5b76de7fa289,2198430273,11469772871134899291
+896639ba-16be-59c2-fd73-9c80bc52088f,4001459202,13175267002006039008
+8f532284-a0cb-7a56-f6e3-a2fc7b0858ea,337585184,4484422871243392433
+3a5372de-ab96-315d-49bb-9e7957745f43,560112645,10717598665900954186
+8953b71a-195c-07c9-a636-0a38b0bc1bd1,3379425017,14044797299271550700
+0463f671-f76d-3e70-8061-d3e17257cd76,835795079,2189516845905315012
+5776a383-7246-3964-d516-94376228c689,1455865302,14673232572682186290
+3076ce1f-e110-50f2-321c-ea76b8024626,2312804964,4946401141238777727
+ddbd9035-fbf9-ebc2-15bf-9b7d18c59c7b,3615156732,14606307063996115756
+356236fa-f53e-a7ec-e991-f6e0815594d9,1891105173,6431052566981451348
+6cda199a-ae7e-c6bf-b440-77685c2b7d10,1780594914,725447372082094372
+d9f1f9d8-67ef-5bf9-ba8b-ca412c9c9186,1105046807,5930556061955827432
+568b855d-f9c5-4443-8a09-1d47f41a0f23,1905280330,6679908263352904113
+d3e59080-2bd8-dee0-d750-58c66ddc4aff,1811696392,9604589580633860692
+84419101-bbf8-8af6-3828-023f71cfd0c7,2833558210,15454936227611980243
+e7802a90-c3d7-ac3f-bca5-f789edc92023,3079371489,2483557911587106209
+bb6d45e7-27d1-7f18-2ef6-26b6e72d7031,2834890653,17587719714183585004
+24c5d7dd-f77f-da47-e9f9-300e4c83bbcd,3938890761,11454339930149078740
+ee253e5a-3c70-d7a0-1f30-ec6d81d4ef93,813363337,7733517073366366993
+0be0ae35-2f31-22cb-64d1-ff12a9d64db2,577139045,10558526493983828889
+7422ae26-e112-0208-75b0-085f8579f0fa,3136404972,10125248206812986906
+feac81fb-66c3-946b-e527-a6925b9e838a,1191849625,1786510546373555456
+e5c52e0b-f96c-fb94-da43-648d250e2601,2287226990,13452613503991470985
+4f0d0eaf-4700-36be-83d1-593b2c20febf,54066551,14347409689533872241
+1df5323b-64cb-e530-9516-395c8683f239,2377457868,13127862023785785619
+9304bb87-2a32-14dd-eabf-a6cac9cb2177,3886586543,11962369702462036435
+c31d8c42-e728-62c0-ce52-5b60e5eee147,2916832599,14175523249505199424
+e3c66a89-3c41-dd55-0d67-b0caea71c3ef,3784908774,1762415480713970651
+10e2859a-32eb-18ea-a760-4e911168cf3e,3519096517,14149531957839377192
+c5678858-c19c-04cb-5f39-5f9658545f5c,3190932796,10316214929626318021
+15275883-dea4-3f03-0ee8-dfd1fded663f,937887405,3843209594686197982
+7a7ea078-9743-b8bd-d077-05ef821d31ea,847113657,9050635085850415748
+1acca649-a884-dc08-5d29-0b9af799ad0e,2794373958,6052289049816649470
+8f41f3bb-3ff7-ac34-e928-3b750de2967b,1655442480,7639636278704191952
+4918808c-1513-203a-0bf4-0e2eb762870e,921044105,3459234224058697618
+fd911c4f-6e6e-347e-f41a-b29d075c3fc8,3610590193,12410099129983270013
+e60c53c1-aa37-4dc6-d07f-daae1acb387e,4211356676,9140412644756426960
+dff46733-f5f5-4cec-67d0-6b7c9b3bea83,3713803013,1520463865684679566
+7223f84b-374e-8c94-97a2-dfc2f6e0cba3,3813532810,4175064782784643036
+601d1baa-7d08-5db2-afd0-386055275cf4,1098613333,11613857082138319451
+77cc566d-9d19-74e8-4837-2517348cb496,2154314867,584638725705440807
+eec11cae-8613-2e6d-d999-b0ce7183d0ed,3851199161,1774521044705180088
+bf5fc5d3-9108-63ed-514c-fdb6b7653c6f,102182946,1987859319200751867
+fdc8ddec-2abb-0e4c-d796-3f822ede85d8,1091030649,13404445726400073127
+8e6cbc90-ed0c-52d9-8a77-fdff7880275c,3538888114,12028097175231550153
+9686515b-b7aa-3bc7-326a-a3a4ef47f243,2369271949,18262808936013531713
+ba2d471e-a2d4-8758-2483-d1d87501668e,3791537728,2980573208603932035
+c8f0d250-59a6-600f-3c60-9a34d70c614c,4270307059,13487612775159149904
+ec95a47f-ac6a-c051-4a7c-11a0b9ba443c,3390895857,4890623324745320777
+22175517-fddc-8676-bca0-d2b966bd7ee8,2640261520,10840282568587044704
+6aae3531-e817-0c1c-ec07-3efe29a45e0f,2687954589,201802681219450887
+4b1f2679-20ad-a8c5-6180-1b566a1191b4,2556537634,6992845597437261352
+2d98cca9-0c4d-19c4-5d4e-b6090e39c3ea,2161834126,2726240107733504564
+58593315-0490-21f4-87e7-dfd2ea12515a,2633081436,2041516953107892364
+49870d6d-a4f8-8d12-e424-123074c54961,3512536222,4715567183740296390
+1f5f7120-82d4-9c04-d804-69f4f2ac5649,3671396616,9869976677843493092
+4e2dd424-43bb-e781-7150-a138538fd7d8,2539909500,6930520848595277501
+a5d64987-5f08-9f33-9a52-f3f407b4d50e,611707772,11425895287381486522
+00256116-d582-1548-037e-4dd2789e63c5,1022404506,15660585879473526072
+d88532c5-e0e2-acdb-d97e-1dd3e5b7fd33,2428052637,5639702293652111961
+864f70c9-15b1-5cb2-c88a-4ebd755e7d2a,2432705548,8377322219900003592
+85121742-87b0-48b2-ea76-78a6f4ac74e9,3006030615,17068712238833545191
+4e3343e5-2cb6-360b-6a67-65618db6583f,1056431472,10730084971628363493
+710728aa-0d62-9e05-0392-ca7833ed1348,453457821,12375691904270491247
+22d21817-ef88-0f08-9e89-f6e1c55ce036,2829569107,4591312144217098805
+d6e03c1a-0820-b1dc-5cdb-04ead13374b4,3325770020,11483622566359355085
+79d65daa-c129-f176-cead-d016dde91761,1293953402,8924722256945464751
+f3160818-4684-54a4-2f66-4eef1ddeb3ba,3602624526,11783369067112680712
+83306d9f-7dcd-f6db-7016-ce476962b06e,3473208762,14309713269870973194
+621c5621-8768-5462-d915-92a7b695320b,2799711375,7158566227447132658
+7c407cbb-1e35-fcc7-797f-02068f3258f8,3739499245,5619811797656533588
+7f28d68b-2c55-18c0-dc8e-0ae3a56cb578,2293390982,17824105266586661991
+386c85a9-4860-45d1-8c0c-2f66d605cb94,1084688229,16669356011803616715
+907616aa-bf33-9c0c-77f7-e5d1504ed5ce,3597511430,16008861873253027940
+e14fa8db-51bb-3599-3ccc-5992a9dad131,4287363345,4156769192470612973
+20a5f77c-57e3-7cb5-4c77-cb037733419b,363864600,3873678445252944142
+a3d1b1df-f10b-bccd-debd-b41445189ef0,1218318752,249671249849917695
+0520d34e-46aa-979e-adc2-c20f3eb2a69f,501596410,16478901622301077944
+e7772765-c610-51ce-757b-6fc5cd39370d,3460965680,14089348014973807023
+c7497785-cb59-b29d-c4e7-42c079b23a2c,2703798422,15477779233691432496
+472fa20c-5fa0-00d8-2b66-5bbf79a0663a,1017690786,5834116788203260337
+de7b411a-947e-ef60-bbe1-936590d41d24,971907334,4047777485828950783
+92b23cfd-fc9f-dcf4-e47b-9d638d8657fd,1650217101,14594256586449416380
+a9c03b85-8ec0-fe8c-5277-3487e2586838,2661151590,6201724901606178475
+c2f3a5e9-4d04-e4d2-c604-2b21c319445f,2739132946,10603671450921597305
+4615515c-cf74-5dd7-da7a-168942d92b5b,2720500284,5704317442005120760
+6dac3c3f-96d4-2aa3-b8b2-3c849844bc20,2644704833,4660445873435336819
+dc775f75-f4c9-8f2b-b7d5-7f1be97eabe0,4074518177,4441875016427621285
+0a831edd-edd0-f061-98b4-1d7b2df9acea,1718402272,6444216726182070584
+cb8765af-4b86-32f4-77e5-fbf9ffb98886,3002636227,2851703693311601203
+2012ece4-f387-dcd5-fbdf-fade9e8cd644,1453898705,10392239396113870675
+1df310de-eafe-1792-06b5-03b234b006f5,1660699473,1403739070002707739
+10fbbee6-f1c3-a451-d882-3b29515cc2d8,232800748,3816239201638236875
+42da0e31-66cd-0d9a-7c60-3560efffea24,36812582,744470998247573518
+3b4b46fd-3626-0549-9cf7-732707e3edc0,1550570282,17118052863598578753
+4c27440e-6ce6-5255-6187-924dc481acd2,1072980076,940838152535412181
+21e908dd-455d-64a3-939d-fb3837716683,2294354798,2068488387084864923
+f6ccb54b-8edc-75da-13ba-5b5d3be855c9,1159526559,1510033042922559671
+754ab3e0-5a3f-9c83-e20e-71663af4faf3,4015285512,11166436719612446034
+7eb9e3d4-d579-6984-7a4f-7ad78a8c79dd,1267115270,54401263568757268
+a20f8b4d-834e-4db1-b841-ef7d172ece78,2742035971,10670153463279743441
+6a11abca-f3e6-d884-50e5-751c553fb572,3763126565,8154774523710017951
+92f13d99-5b6e-46c7-5560-b0270635b201,3064036240,10896424969465187342
+90b7e260-d5e5-63b2-811f-052c529c5413,36692541,15206190831386126087
+a4fb6f40-153a-18fa-1487-8bbd1d62240d,383026624,14658089943109798545
+eaab0c67-65b2-ded2-d61d-c615ac4e25f0,3015320017,4245472520573904280
+68313cb7-53f0-a7be-1df7-b56d3a147f75,2212834402,13378951720783490604
+53893b45-0bac-7aa7-4dcb-3ff11988cc61,2598260093,14772274518019701529
+266af71c-2545-dea2-9a0b-948f8016776e,3041222401,1939397884027480364
+bcd1d998-06d5-97c6-fb5b-015b8ef17b88,400487988,17699481524254732752
+0ab8a2d4-dc6f-a5a8-a889-bd00915e12ad,1793679609,11100716822273766214
+806a01a0-7045-80ce-2828-4404fdf8d433,158133653,11770263567530307152
+7c411d0b-6b12-ea37-5424-e8bfea70adbf,293013695,11711837423869309527
+95d0df15-07bc-225b-15db-52944ce84713,3194520937,1884995347106984443
+bb60db28-f9eb-9afb-a105-d8188288646f,2278982348,16192834265852364085
+0b084626-330f-415a-4d3e-20513027bbb0,4014601,11252327837225814999
+c42c5eb5-8e07-0813-b86e-fd5b7f34ad12,648142514,9006502389918182635
+fed0fb78-1095-52de-7db2-feb50f8b0962,399315752,1342735355162312663
+2758e30d-ac3e-9269-f91c-fa48b65340f7,2477413556,2115858944712106814
+e977eef2-fe0b-6fd0-ad9c-51205a8c5c18,3890306442,17274332720732778360
+bc9aa492-046a-903f-0b3e-e3bbe2906383,2245111416,10773895349201470438
+0ee03d3c-fc89-8112-e93b-a9d589d737ba,4250108036,10168917717600134345
+c69fd306-50c7-8419-38f7-8562a6a28197,2298836990,13536526277697038590
+af2412bf-434b-c4f8-f234-e9539142f70d,3133847709,16938054376461397542
+15e12792-fcc9-e135-a736-18993e045b23,1916171051,11964362512063383187
+19feb524-fc09-ee50-55cb-ce34d30fc1b2,1697050849,16555099879655451825
+9c4d4fc4-f413-3ca0-ed98-d5bf164b0cbf,1991807372,4359069838421297998
+cc0f5788-3502-61eb-b40e-289c3d3c32cc,1710499687,17532416914776417382
+73a9cf25-41b0-b38c-4566-3d826d9241c2,1218947108,775405080053114296
+63bb94e4-57f6-b8d3-1d74-2c1aefcdeeae,3032958764,7532186969376648685
+2021f969-43d0-ba8a-2d78-367122ebb387,1648780405,10944302704915680891
+3da3685c-6666-29d8-5e67-c50d643b4919,540032113,15070334243265794129
+a3c8c3c1-af3f-2b14-f115-c09f80454cd9,3447744856,5427057508872676064
+a0ed9558-ef99-036e-52de-2829f72879a4,1732121594,1895970124761501994
+ea50199f-f919-6043-f65c-b81a31cd5c6a,1397359300,10780394931845630283
+08cdec27-109c-2689-9907-68fc3d072684,289292038,9054271510132024263
+ba56391e-f826-c52b-3e18-2e4e4378dfd1,2876169595,6880670600231142162
+fcda1147-f9f0-db36-d095-45adce53882e,2449983797,15231067985269743856
+af16e42d-0c6a-cdd5-c76e-2e730d94fef7,3787166487,6204509871309585727
+fba2b586-67bf-eb4b-e502-084f1e2bcf4c,4130511552,14248873008245569960
+ab4f4eca-3062-6058-bb42-88dfc3ee127b,3925530839,10684548757943339134
+f02c19c0-6f33-f1ad-0533-2d7f6f4d6ff3,1522011800,13886681226594861330
+c4e8d7e1-df1f-95e6-0edb-36a650704566,89924333,373189838616801457
+8dfac100-4a4e-928f-d3da-9b271ea34603,1665914885,390580402456394297
+40e4334c-07d8-6e8c-18bf-a5e11229782e,2698846804,1434158308442007565
+46560bce-fb6c-4aa9-7305-b8dec08f53ec,3211023163,1930977554100208778
+501b4978-fb70-b4f8-7e0b-4379d30120aa,3356102333,16481753088495144923
+dd624723-2b5b-9f8c-f956-5cd7acaa9de8,4258902288,8313007928643804702
+1da2811c-8667-5dba-582c-8f45ccbe3ea0,2967978499,10515748248864589450
+cb2c9e8b-51c1-94a3-432a-5c66f8631c57,1395932513,17889032709768510557
+d5526d8f-b74e-632c-5d45-dbefb27e48d0,598869736,6413487599803744069
+4ebacdcd-a7ff-153e-d80e-2dbfa43c14db,440832226,15782346849398055529
+cb5bacc0-3eb2-b87f-1611-e512374b3fe5,1177459371,10448977102874032222
+b5a46780-0d9c-c51a-700f-b41b71f20af1,2276616718,17729179842165819764
+e28b4165-5a81-8fed-c619-7052815d5c58,1765799468,12758251036494794446
+ea4fd5e9-a037-b6b7-c2da-44ba0b6ce6b8,2310978304,4006965441162517973
+4f19c0b2-5074-cca0-7c2a-21ebd3aca608,1916315828,10621921225541011068
+d617fb09-8632-542b-8ef0-edf21952ccc2,1602501335,7089635101821191473
+8f9a5cc2-85b3-175f-f476-40b3a47ca64e,3797664127,17962027808260363389
+c1985df1-62c5-3bcb-39d5-5101c83483d7,456606049,16041772377253062139
+8c5fa7ad-8106-43f1-6d85-3f547aa1f125,2482039960,9913439594255061189
+056d67c2-c26a-c080-6b02-d0d9604f7620,2145248582,10098693315538960752
+c08841ad-f8ad-c706-1ca2-568fb55e9bed,1650590427,17595061576624307970
+b5898dba-ef58-eb02-20fb-38ce72146f91,4086770532,14425724884950942340
+6aff8cbd-2919-89d8-08a3-998e4537e52b,2298229148,12534748200314187620
+7c491ac1-ed4f-68d8-f26d-e93571cc4efd,251912034,15424005378377074037
+d9289746-fcec-956d-924f-9607af7e116c,2399133944,11957933316633008736
+abe0bbd1-afb4-2eb4-861a-b1f3349b6798,4097779956,10520275230746712045
+9234e0aa-141f-889e-fefb-464a745f8159,516679931,12836627094857170662
+ff3a08c6-e41e-1d18-ec57-5e75fddf15a5,3551901402,11551776411469193419
+0dcb62cf-dcc0-e646-57ab-a0eed01eae56,3519612304,9346611160612746687
+907138d2-a902-8a7c-95f8-6f556e5ed6cd,2491404526,9021409277698347511
+bd06c368-8230-a280-0b6a-8f71f6e0dd78,3122792551,13922139785296290689
+a34adb17-aa5f-4c78-1af0-ef32ba84461e,1423270687,7479219289563108978
+551422ed-ff6a-e840-08a0-bdf053fa8b5d,2205413029,13410961373088856923
+02d43790-c1b4-42af-98a3-557bca28accd,3703228306,1207642195247733908
+56e23098-3aef-71df-8d2d-36bc00b8cb07,937467165,16621618320516610923
+71ed0ede-eb09-9d14-b266-c359097bb5c1,1885857718,16784730011076109246
+55537e34-e82d-341c-0bf6-7607e7048bca,4034229810,16637375661086030605
+db2c3359-858e-4a12-184a-372855f95355,2133659040,13229516127177329403
+36f1f0d5-43f6-496b-3be6-2c2b25ca9cdc,279093518,15001532289884071654
+efd293bf-1859-e22b-2871-dca56ad70d3d,3320799667,15991547840977534381
+9bb81000-87d9-a783-f4d8-57e8b9c081ea,531276580,5490196165521101890
+4f614812-178f-8f11-8720-e8f7d6b05707,4228059261,15342346866329021259
+ffcb61f3-6b75-2910-1f5a-68b4654e56da,3281860507,5118981707655511149
+f3e69a79-3af3-0571-6d09-da75f29e4e37,3206969557,7252487528244999022
+7e558517-43ca-df63-dc8c-e46e30c6331e,2030234961,9247170257770133757
+3146f493-32f1-f530-a751-6a3dbb487395,1538656314,14291913479393922516
+144da1a9-f242-1ce1-d7c8-ec142767f50e,4054737764,11319507640286426297
+23938b86-fb81-3eb0-bf09-c393462e2cdb,1252933431,5389716861746204497
+b778fd8a-1efc-0572-7e1e-31dfc363350e,704657959,6732475362723349193
+0092f957-3bde-e4ed-74a8-5a218f0d01fd,3288195217,17733742633496812144
+2093eaa3-ef89-cabe-1fb8-74703328007c,2196722313,4521412656052834307
+75d5301d-c2a3-5255-de0f-18785a7f6bf0,3991696378,11075533468538225456
+afb3bb5f-9205-ea3e-2040-c82dd878c608,3779264871,9673811061821920290
+83026c42-4a0b-b3e6-d164-9ed6ddbd6d8a,2923953959,5220668560642962242
+b6886ed0-4fc5-1a49-6ae7-57e50766a3dd,1780752987,12181878254334786200
+6973a8e1-4d49-25b2-22eb-3baf1f2b0570,3868654745,6627881934687327140
+16564ae3-98c5-c8e9-570b-ed48f22a926d,2353951932,5168803049978683055
+24a65fc4-4b49-a205-b61f-a110580743c4,3377883068,6123666660153547314
+8db59061-a0d4-5c91-f99e-09cb7aa5b266,779510382,10404886255166899553
+408ea0e3-8b87-17ba-38b0-fdacb856fe08,348691537,7721073661694508483
+db91688e-d629-7bd5-82f5-1bfb1cffe5e3,4259664957,1540588382470459624
+344f79a5-80e3-6384-6779-720df1f35877,1817106449,2698513490081145429
+7a128e7b-bb15-1409-9cfd-657f670e6d5a,1148036059,10552425965368927606
+53492ce1-e4da-afff-af2f-2bf7bdf81690,1410129563,14475497013545845776
+ed649f86-8a26-72aa-c779-854c76c16484,2400783000,2279193377196174519
+4c6d7be6-8c47-7c8e-6bb1-f1639d82c7c5,1193742376,6059841970282974475
+b9959c6d-eb04-1cf1-8b04-bef3bba77996,3646899294,15304317099629193496
+aac2dae0-5bdf-f096-4c2d-f8a47a41444b,39968679,10251139662156973428
+de1f0ce2-2c70-47de-7088-05b971989446,953961979,17711507866872688820
+90191c86-46be-4118-f6d9-8c4c6fe06b73,2303913808,7038733644122289675
+5488c593-864f-1eba-a846-4f052496a0d1,1785038541,5583956783118638006
+0ab76476-2e8b-6fa3-e762-1566222a0086,3427904873,14201377918022757805
+15d01815-dc2c-2181-fa34-1dc10e3a8eaf,787863757,16334497273468132493
+b03d5cc8-f2c0-2a22-934a-a0968124e039,2220415211,10778998976672089092
+60cc26fc-e388-f450-a27b-6ab7968f49f1,3393448944,8014928790320755394
+d330fdb1-9a74-6c75-e56c-49dfe8f15a8e,49634945,4324085308862015507
+2b2430f2-2dfa-7b1b-96b4-76650a01ebf8,214553962,18014550883833394334
+87a3e7e4-cc9c-3269-dca2-9857bdf2741a,3258574022,13533541357165429276
+a65c95b6-3cb8-29d1-abef-4dcd669d357d,4148580548,11213413281442795424
+92de96f6-2a4d-53d6-4972-61337d40748a,3424836058,107647636979952663
+1591d71b-34eb-e582-8867-27b16dc51477,712918651,13859798656571240728
+0826c38e-5db8-e8fd-d2b1-3302a4ab9c38,2099409196,5994566738980952767
+29bd623a-0bc5-e479-2571-0e0e7e7ad95e,1708186338,9548580714443318402
+52a09eb2-76cf-d3cb-c7d1-7d88721e9ed8,2255773445,1749860052476136674
+1010e417-fde8-c9ce-0364-dd95c5f580a0,4225035571,8558192373413138876
+82175437-3eb5-9150-0ff0-9fbaaf63923d,781951903,16632748326016781625
+d1735372-b51f-fdf3-9c0e-86bcef2bc48c,1823530364,14019201569735591552
+646ab4e5-3648-bca9-5d3f-dcd96063e23e,3310208192,3352212280187499759
+3fc96c4a-13bb-c5e0-426a-473eb7f1a605,1786464742,7000138155962737927
+93a67fab-b468-26c0-76a8-dfbc500bdc02,3392059189,16942883993736778493
+317292d3-07b8-5d99-88be-c0d111f4227f,2380785427,627900507046177506
+6488e651-c56a-4fcb-8358-efa7fc456079,465324215,2083026127364114881
+f57a4cec-34be-f60a-8731-405769ded178,1443864878,482761386235340587
+68a04cd7-903a-4488-cc72-22e0847b8406,2463978348,11937957704843101046
+31b3089b-f982-32cc-aa8f-6ae7b3ff567b,1430637092,12482199000647438731
+76e02813-6cdd-c662-8a81-5aeb0ac92635,372426481,4289099984082447443
+e827d8fd-8baf-494c-6e8c-ecbe8dbbaf6f,830946043,12514437465669437566
+7f4410a7-80a0-11f8-8256-c1267d9aca4e,2891708613,8454306005750964237
+d79b0448-0fa3-f205-6aa0-dde8e4c69e24,3143214020,1836788865140468591
+6bab11a0-24ea-2450-e195-479c0baa7f56,642272218,4448661266737638911
+8a661781-1fe6-6367-f9b3-4bbb871e2b5c,1857822553,12677562305086249525
+b16f6580-3a40-19be-0a0e-ea714ca064c0,770777355,8367191013324134028
+bc7d4d2e-aff2-a2e3-371d-217e37d86762,3105965786,10036449292160529865
+86b61af6-4207-9e3f-acc1-9155bda7066b,2071061056,4334299332608708825
+0d76a9e0-95bf-1798-ab61-169d113b5d9f,2856691596,7166390291502774607
+da12dc29-8f9c-eadf-2951-0716de1e71e3,2079122998,5101019694657108724
+f76f348d-4687-7fc6-36a1-9c14e0d83598,2231729079,11632515970177533576
+bfeb1caf-26bc-bc76-9e0b-d4eafe131917,3679463822,10519677671124879590
+46153355-c512-3169-b105-152717a3a27f,676185934,7082213343107609020
+eaca9b2f-17d5-2ed5-462d-630911373cb0,3914629604,17824488462899083657
+0cf73833-f454-e5d2-7f92-ea4aaf3b2c7d,1516956227,11004264431130608265
+b1e05909-c711-1daf-98b6-a2e1dc0a9787,2309565302,14513982152927666125
+23ca1b1c-d0c5-9c9b-c320-8ca858cd1fdb,4207611785,1765044895437872423
+fe04b3f8-c1b1-a600-24d6-9609f0b424d1,1072860983,28900495675083469
+7dbee52f-cca5-101f-bc32-40199312144c,550686610,10456174667345551555
+64e3c058-b4ac-694c-23c1-bbdde0eb26d1,1844089891,1494042301941857967
+6e54d5cb-26fd-0054-7a28-e44bf911d850,4162352696,10724460468559744716
+01e65505-5f11-bb9d-885b-6578dc46a4d8,3286370225,6476174079202370033
+0f254f26-1cfe-4e09-a4a4-67d69fcd37fb,1185946475,3142315267375780653
+ec4117aa-41f4-4d7f-4b91-7c3d29574557,2552483584,10265805434918037617
+2eea9e3a-c106-c3e9-0a0d-6452e78db7db,2946150774,4749096202882195436
+d1c5116a-28ca-7c35-ff6c-032f561e6f39,1853956096,9619448990609226213
+1b6ecac2-4cba-9032-c861-da34d13fef8e,10483049,14584967440443209218
+e6a63854-24e3-1dfd-0c1a-746197cbff8b,1403278435,3391496831482937949
+990c20d8-55cc-3609-c351-ef942adee95f,3402280722,3474382155755064965
+9da4f4a2-4026-cbe2-5ecf-3cf8ec11ba92,638997203,5428324022042463623
+5b1a6f6d-9dc7-b19d-564c-825cefc54f1b,3996427532,6772493957239281221
+75af081c-28cc-2bea-4428-05daad01488a,170801554,4037165892347245097
+157e1cc5-a624-e651-3a8d-74f231a017b9,1574459164,18348262410711217444
+66a50040-373d-7457-f3c3-e1890376d3ae,1538598717,1397041065100819346
+b0a5cae6-2867-2cbc-d607-72b3d47050cc,2647140131,16510212042523862537
+f253ce29-d36a-ea49-7d28-ca73eb0e1656,3306685918,16253980640597156752
+6c3ac2b8-acf9-e729-c950-f654e0fd649f,3382957795,11367833901819942105
+ea5e184d-78cf-8d3b-16a0-ed896e3a55fc,3470270884,14992150558438911344
+67517e02-3050-efc4-bac9-d061a7b80257,3945224833,740739179195082441
+85da87bc-3c88-d2ba-2473-1b12a8f6b525,3899554938,15223693122346147294
+49c8f1a1-69a0-34b9-1239-0c95be923b16,1133936408,4272026787436182778
+a1e1c4bb-bd75-0523-2541-f424702e0ab8,517683851,17897035209275613047
+6c9e9ebd-3b1f-d5b3-ad02-a15bf95bea13,2486974430,16216352323609597746
+e450b6db-071a-b85a-b542-ef0e45ccd2b9,1457237817,5265772847714357090
+622c1ff9-4cdd-478f-6c4e-f183a0e280d9,1657433829,17327612946662457618
+d67527c3-484d-7382-e476-27900ac0b3a1,523318988,9982818564903612
+692d4edb-0b34-4f1f-7192-9295173edd27,3722172559,11645845384723074172
+30f7b628-2dd7-d569-5c11-4cbb4c85bfa0,651766368,9852048752324527600
+0b9c9cd0-9197-b35f-a67f-b722e07eb922,1466256331,555199679617709636
+5ee3af00-5e67-3d00-19f4-aec08241650b,4067116413,1443091917385708622
+ba46e163-4057-6691-c109-ba28c3597a5e,2929340954,5157259359052708259
+401d16ea-573c-bd7a-8632-47eaff2c1cea,850888333,16106714369220020247
+1b0123f0-cec1-70e9-48bd-8af2bfe413fa,513022853,14800901587963835155
+ab8abbcf-c44b-058f-7955-268b72659a80,845536559,1377482766127613040
+ceae50ed-fc4e-dba7-e96c-eed04d1ec543,2394035515,4257226047730962166
+bd38ee18-d283-8c61-dada-0ed831aacd8b,3379075595,10423030538339476875
+fc31cb15-b910-1ad3-f41f-c4fd53cb0756,4276879628,5497557673124808927
+da85acb5-aa54-2b0a-a888-05e2a112c4f5,2151002851,6996492149567024536
+2d85191c-27a4-2e58-5e5a-1e0cb67f02c3,1448477705,6699338256574230097
+d6d837fe-26aa-8788-1edd-03595bf783f9,108670941,9940277507503793960
+cc82bfd4-0f13-87d1-4772-91240e151327,2135689652,6213673682202503272
+67a8c2db-1607-7e09-fd05-8358e239f52c,2069637897,14778315817179240417
+9d4f51e6-1618-d476-abfe-1edd2a2e5c3f,2002010560,11865844549189997965
+89fb7a96-4a23-0e35-24cf-417caffadca9,817036303,18367132181405818778
+d0222702-ca6e-863b-594b-93881fc95b3a,1470593286,6415439131602334378
+8b5fa581-d424-918f-c3dc-d0f70d56bb86,356264757,18126712014644678880
+2f36ef4c-a866-deb5-c948-dc00d21a2cf1,1208994826,10106037507297175302
+0e05439a-3608-5fee-8030-9427ffa34888,1064265959,10884388540926119123
+d57a9641-08c1-5bc5-45ff-cb9310979b01,3004505510,16731133312850351046
+e82a8f70-e8a1-1049-4195-f2db66122824,801980083,786237933552465623
+da51e23a-6774-491e-8993-a1b25b89d3fe,4229130512,9787376384874749802
+13c41c36-b989-74d2-30d6-fb65721a846d,1725014255,3807159650921022262
+e7c73794-9c01-3179-9426-f72ecf2f3735,2768425133,403186238222687240
+45cf33bf-76a7-5692-d0e3-46493b22ee08,1806642364,5831300238862693527
+3af4a30c-95c9-114a-72f2-0336382931f3,1325839672,2160037976351599115
+d15540b7-b64c-3ec4-8763-a2ebfa859a91,1141336052,6012768807269063783
+c7fc0a5a-885e-9cb7-4873-8e7c927386f6,2640385873,15884198454695953001
+75f4d64c-d756-6042-3bb0-7cdfc562bef0,1253623569,8914556693324392308
+fee808cc-8d10-f615-6e1c-893935a69666,4048850122,15973150932652028749
+7f226235-d6ca-8994-08ad-2a155c1e352b,2385185449,9827021043671951479
+6b842e04-d810-a0ae-c858-fc666a127e06,4137766956,570442632955794417
+870b0aa4-ab78-9cf0-64e4-9823a0a55d2d,1987796464,14528386039754530198
+5aec0391-bed6-38d6-adf3-244829e571a3,1616609703,6030498849499927928
+9d444cdf-709b-b74c-9a59-15e6286e0ecd,3562540098,4469727636010947631
+6ebf2e82-c614-c79b-d2a1-a21b88446d5d,3300231769,8459285019869839970
+30a643c5-cdb5-7b64-b7b2-1353e6947e4b,3573418724,13337826486611926873
+150384fc-9b56-6c7e-5cc4-0f505c301531,293161170,2414896343349640617
+1851c58e-fe79-fd6b-072d-32a654955a4b,1993338025,6464215674448635324
+1205c518-dcf9-1752-96a1-ef000947761c,2204523129,5371036729284207499
+e97f1f18-8fbb-c089-fa87-6df7e328abfc,3301276133,11272621220026034847
+3a0aeeab-fdec-30c0-6f90-cf8cf2106cf2,1112800862,2348421445425060551
+97722bf2-9f19-8dec-13e3-8f84d0f07fbe,2863774801,14819460173709018813
+98c1dab8-dc66-8307-3f61-77b3e1f5329e,1584304560,8309785432777895618
+554e87c9-1dfa-df23-2a0d-8720b24dd0cd,2784791615,12976475636387680472
+0b575fd6-c243-e00a-03f5-bbd7a22ac873,4087435176,15468703327290927257
+977d116d-0fc9-9559-bbd5-0517ab48702a,847739318,6767771351036455674
+04f7fda8-9208-2b44-2ce5-b45ca2a7ab75,3007919729,4819515144283425436
+99eb2087-b548-19a8-6081-5c6f9a97448e,2560117404,15008238965192059022
+eae803c4-27a4-9a85-9003-8fa7b6e13c5d,2569321201,3651096499260166682
+16afc7af-4dd3-06e0-f4b7-ece95bb1e4a5,3698153314,6939584648746198735
+8389e25b-6967-5fa5-30d9-1e95e5a6dfdd,1367654626,10471305441623004694
+3a66a0f8-ab03-b717-3e00-82ba9846ab58,349186414,13586229566413934296
+442ca589-e745-127b-b2d6-32d6a79e4a4d,180092777,2528446921617987167
+6c3ff4d3-66f0-78b1-2946-aa58b8d3a57d,1940374014,14939322390296494223
+af16f500-872a-19ec-bfbb-e20389085a90,4116844206,16243937545018472322
+70c9579a-f9e3-b32f-d883-7cf4adb3c65e,878956279,18433225406991993028
+6ac6870e-220a-54fb-bc42-9068b0935bdb,4011889292,14076500724463000980
+b96d78a0-09d2-d532-c358-b5dccd5cab9d,3937754433,11364333826197991890
+901c04c8-1c06-305a-2852-1846851abb81,2733939088,17629046358654126743
+8c1606f2-9d5b-0efe-eae3-36efe100a3ac,3167535850,4439171717912589243
+f8a553ec-f9db-9659-7cee-6d139ee853dc,3764724651,10244829208919995506
+ed3e5a02-8a3b-2a50-507d-049a51fe80e8,3362506818,5457194905813418227
+733f133f-279c-57fe-66d4-e4065a81c022,2991654076,1457176019542443822
+20791f05-e45e-c1c1-1ddd-ed381bc6c48b,2857950897,4284527946270865070
+998136ac-e1a5-530e-200b-21be3a73749b,1899438169,13888757335983316777
+c9befcc1-19a7-175c-d9f2-002aaf3c0481,2260596795,10184608869256720436
+d7cfab20-8598-98e6-3a19-6944e55ad359,1205423228,15947715007550550923
+3b53aeea-b695-ae91-c54d-ec9f8f9460f4,1410480495,16442843414398983848
+f6a9943c-4c73-1326-2afd-94b710be0b83,3451368963,5431698337185278339
+9daca8de-e30f-d2a6-ae6a-80e314e3900f,3767970099,15111284903790595700
+365116df-87a2-cc48-ec5c-0962ec0d59f0,15082342,2661192627900112532
+791e8924-6c8e-df2f-cd32-306c880951f9,228843284,436552488418359886
+49cb750c-8bdd-d1fd-8c88-97b26ef4f18e,3919727449,18291946677053582823
+ce44ee6d-7fba-1ac7-4c94-45cec6fa4f27,2591816332,6242399551443865736
+d0ffa9ad-6168-f1c7-e729-44eb3595eb93,3578306945,4623872243103327422
+e322dae7-12a7-d085-920f-31b2b98832c6,4235689259,3613786764824920241
+49dfe379-d248-db31-d6c4-c22a5ab65dba,1968432868,482492131283439523
+37408ae9-9d35-079b-537a-45d1bb20057d,3722130570,16894744654013545717
+400f571d-16d8-5989-48b5-f1a2e88e6aa3,1270469741,13096816646269376462
+63f49d08-3b2b-d0ad-ee81-f5a2d356d48f,1823294335,13984824916520217058
+4da6e003-4c9c-e7d9-aec5-2f7107262ac5,540952471,7733316413494150391
+504566fb-b0ed-a02d-3fea-1d308ce4d9e7,645615425,11318688451199083199
+23ff03c6-1409-b6ac-dd5c-3e9f5bb49f59,1197056146,13644132904076848041
+a8aa02db-dee0-2e3c-f077-8c19ed9e5f62,2282864160,3895472746110834136
+13136fbd-b1c9-390f-02ac-9f8ab11249b3,4118162191,24673940979149655
+d34b0eeb-0543-18d5-c354-f4398f6c5742,2838430961,3974215853323616603
+0cabc30d-5f79-47ee-ba03-85ad284fc5b0,3295500134,17037340968381390547
+e14dc58a-0340-6185-1ba7-7a6e0a80ee68,1244472845,17919656611486678638
+b8f534f6-0495-4b32-571c-d4611a0f1850,2550563923,7245294984664715527
+3532d891-43cc-748f-f4fe-876f11646bc0,3464950911,11783102751624865032
+a1c2aaf7-4604-07af-1c56-b4b9a4e3b48f,2950680669,2594815149036586724
+efc7b43c-3473-e822-583c-d6f84f7ce212,3808905588,5257671780179580724
+43c4c317-efdb-7644-625c-6c4faee3ad1c,534051122,4314003822894262218
+bcdd6e2d-e93b-855d-9db6-6acaab96b110,2133891180,2460662365810402871
+77410415-9349-31da-62ef-8b76386212c8,4013741939,2247754237586347299
+fe70387c-bcaa-5c9a-3e14-f12fbb29e18b,2410005424,7271999798964957103
+d42c3132-506b-e9a5-ac9b-b951c0a85a60,1036189777,4664234740923498385
+6994cbbc-6d3e-6010-b948-18085e38fadb,1402482619,12651376753625886560
+99899d29-a057-ade9-1796-67382cdc080a,95740690,18249117735568786084
+2872baf2-3995-8555-aca3-e68840c503e7,3026082162,8564046113902222235
+c02f6071-39bb-3169-2c4d-dcecfaa1dd36,1996447172,13422202730746048293
+132d80af-62a2-dc2c-f23f-caaaddb2c75b,3090783234,1302787617535105190
+a78a3ef4-3a78-f106-2b56-f1cb1bd94329,594151917,16454772816192013618
+0a084f2d-3a2e-13bb-2dd3-cde3a0b6b8ce,1464889568,14371720548201413845
+81d3469e-82ed-02ea-b23e-2e0b7103ee57,1933175644,6923644001619236515
+776b2a03-7e67-b5b5-1b05-2de7e3c70c95,383708862,5693915108550389962
+7649de96-cf81-bbe8-b067-e13e1dd94312,337852801,14657931001249825793
+c6d9a850-a8c2-4d92-6644-22058a664610,3283497203,14202544922904305201
+dc83d83f-de50-b5f4-f5f9-3431f6b42a52,4239474268,8184629526563911475
+b5b1f1b7-e07a-7a2b-854e-0de207dfd9f4,3227367046,1095319824028405797
+d25bcd2c-45fd-c99a-7b52-9227e7055140,1178065815,1226764724125293341
+82adfca4-0634-2e9f-6586-da6d0eba1ce3,86789405,12685023484053102053
+f4fc5d72-c080-facb-fc65-d7e962bd2fe5,1220326743,17536519826373544971
+e81133c3-f44d-94b8-164d-074a1f6790c1,2258159742,9403997520699967804
+32a80fa9-f602-9397-f0be-9a1e5665e7c9,937553245,15642216670350244062
+d04d2f68-dbd6-5f28-351e-96d8ae75ed7f,3123874821,6693188397022557603
+50528cf8-f15b-b260-4af1-3ac9ace4cc59,2621301357,8253725295820286073
+365c9341-4cd1-2c13-9d8f-61206a699352,51609646,14387629479718060004
+1f25d6b1-1435-7b76-4f35-a38a971b429d,4177356902,9858454646278459670
+3c390b41-830f-60c7-9817-ef35c9884059,4213342164,9021279905932500385
+33382515-d7a8-32c3-93c9-f4334848737c,1270246639,3519090927136266732
+70e56296-ce24-cb64-e844-638d2e0bebec,420171465,7909152168250483792
+27bd55d4-0713-b09c-b925-a7dbfb87e4cc,3362269553,10663355975208597479
+c9b2b075-0766-4352-56a3-923d58abcaec,457651689,10970063974980196117
+c1c47dd8-1f01-8b7f-2916-dbdabf4e5053,415040031,16367509119448725738
+d70f675e-39d2-c848-c5b6-0ba002260074,2924313328,12647365975312006949
+e95e5587-9a2f-b75c-2ea0-eab8d220c7d6,1375779602,1862646768371294368
+d9989cbe-751e-fdff-db5c-1efd22430013,2654389877,10851701717119514254
+f0c6192c-6c24-cd3c-7432-851429157362,443735750,492879760276955100
+8ffc7117-d52d-d08c-d8bd-842b0c1abbc3,1884969908,5481438193009292067
+d4c46860-58ef-74a4-c3a0-079794f3c863,3727212883,2852728941571986074
+416048aa-4227-6604-c18f-e08ab32cf844,899643940,11934114263746721090
+8e14e8e0-f053-0068-02cf-037d1582c949,3142970249,3144747598419124805
+1296c9bb-15fd-452c-ae7a-8405eb84637d,861023702,2530860057825836532
+2ff61c8b-b665-1cf5-8555-ac6d7df17b06,1063033879,12430806338906575379
+1978de8f-670b-f29f-ac8b-67772476e51c,4153768176,11654670671981723956
+68198a9c-731c-9d0a-f8f2-348d9fa1bd5c,3721088905,17002502162525346423
+49388712-8eba-2554-75bf-498b66591174,1501422856,10221050784971305885
+601f1c4d-a77a-2bdc-a17d-6dbeb9bc9bf6,1862148401,10278177465946125180
+3d260384-6ccc-8824-431e-46ac4cd26b32,2099308997,14576308065589101506
+45589214-b623-a6f5-1981-4eb4c9122116,3233840804,10224921951742893712
+f7207493-fd59-fc5f-1239-a375575f79cb,487173921,3984739306917229429
+21a9213c-baa9-8df3-e55a-958d8efebea3,3186018215,10987255423931955272
+a291e510-460a-eccd-b82a-651412785de3,968280829,2602868006706606473
+ea6c5157-06e4-52e8-5769-b6d3090f21ca,3342405555,9249784965008328687
+948c3f24-97db-5cf5-54fa-7a48a760fe5b,1029488285,1249569732386593354
+850fb3c2-8f5c-0885-bcb1-febc37102c92,844926284,5275190448499271043
+dbdfc8ba-d3f7-2800-6f0e-bd5dbb63a5bf,1002907759,12537097931998266696
+98275339-f96b-ca86-704a-3fa54c9c1df9,1424615765,154046030395736035
+44327c53-e0a2-a72e-a1eb-321d8e2eb2d3,3941701981,5694736660526585512
+e9bbfbb4-b579-c256-5289-abc4ae3e3c55,3281708453,345026793288808361
+ff486fa3-68d4-6cd7-a9ea-d4b7aa476c6b,1484306220,5436865044669348444
+c7a3a086-39e7-cd13-e7df-5ad6836caaa4,2813581940,11056362022213765641
+dccf985f-9214-e4be-32b5-2158059c1db6,2679080658,11553854689229042231
+04be2b57-79a7-bbbc-fa90-960e167dad84,387392094,16944485021515820733
+f1469df0-cc45-a409-a3e9-535b74b4c093,600205488,1197590083647348065
+804f8ba1-ddc6-70fd-ba13-f44a679f0acd,948727594,2946688607086383457
+3d919544-7f02-4e66-8065-1a11dec5d753,1927540529,3280231965947517704
+172dc511-943b-cab3-1406-af9d6745a2bf,1955306218,6347564039779778571
+c6ac4b52-79ea-8efc-c547-f046fea0101e,2580343581,4189483509736996414
+9cf924ca-68dc-4d7d-5680-bf9ab1eac56b,4113234445,14568882092588398172
+09a55d7f-482c-38cc-5a79-0284b8802383,3735321636,7423694078293253220
+108e6984-3082-5ff6-62b3-5c27a78e34ec,2899970496,1744707251727425661
+16df4caf-4acc-a6f7-87cb-d2f5194a499b,1905871254,6053464558483958038
+fca30dfc-ee50-7d53-163f-e4e5e8939201,33757493,10704898831337492847
+87dcce31-a804-75bc-b5ad-f04be9713ea5,1817116317,7444310872559514654
+f436e3cf-1c93-51c0-881a-aa855e4078f0,1301857972,10677805552446418311
+2aaba896-8c67-d177-5b10-b461de771aa9,573633715,16861089201071020139
+283e985b-e9ee-2f37-d656-7889220b42a8,877257121,6981222212024337797
+b89de119-ae5d-062b-72a5-54599d9d6e00,3912410098,815375249952025091
+e55ec945-7594-474c-d830-813661137859,4000095154,7577543029064461645
+68182d8b-e06d-31eb-8761-a528cf330f23,477223137,13541184645402427199
+f3a1518d-d339-27e3-8690-eac02578780e,2311697207,3685618450068016798
+04d1177a-336b-6894-79bc-bff8334e2822,1282867137,12528515413003591122
+953454ed-8bc0-d740-c1e4-346129c0b8a7,3693614960,8493337602312957848
+9122b2d3-968c-d559-c777-5a48a011af94,1181178609,1335620343371556024
+1992ce6c-940b-2be7-105e-4ae46b110255,689795954,5346605238896745191
+aafc736c-f80a-7f6f-e4e7-84a5da2fd452,863615184,14642564391727544956
+13bac1a3-d962-86eb-6c49-b4db594f18fe,160683004,12932707667285205244
+ef73e5cd-d2a8-9915-1718-3605f38152df,3061841248,14309645400682230973
+f8daad5b-2d7c-b5d3-b8c2-d0a28b123831,3625504305,14985943717908532442
+bcf971d2-a5e6-8ba9-b194-f48d6b77da45,3830012264,3298220958598133182
+cec8c244-f40d-9e6c-42e1-3798705bdd81,426655709,9325187424551526734
+43ef618a-3b0c-de98-cb54-de794440d237,902975692,9115215550727555108
+f5b36bf9-b48e-869c-a103-2073ee74c7f2,4006564012,3460827876119597449
+ba798cbc-b6fe-46a8-bc08-75094d9790de,1464549729,5488970122003125892
+966ec9d9-1f73-3c6d-3cdc-cccda624073c,2016504191,17090029899090654239
+7e7dbffa-57bf-b483-4fea-d8cced84615b,2518241754,5868582754478807085
+16c60b3c-1e42-d14e-213d-364f3dd361f1,1889368405,13947547653285576917
+dc2090e6-bba9-cbe9-1418-318fc55581f9,1271738248,16675308556721758299
+d987f0e7-4dec-ac0a-b1aa-0f1a6f87990e,2972325944,16321211169558067387
+d935b848-05ba-7610-78bb-cc15a63bb24c,3559302272,5027990796167183161
+450fbf4f-284a-6dad-683b-5cd3dcaccbd2,3352612762,16503549449588987718
+99543134-5c25-3f1e-ff65-682e0dc842c7,3513032919,10772295712432724457
+052ec406-801e-5c7b-6381-e7370cfb6003,1814617034,6753836750670286230
+4e475919-8a50-1ec1-e4ad-9118d78cf4fe,4144593973,10151324935848770634
+32c3df96-ecb2-f114-c39d-fd0800164b63,652076377,15460677510098867700
+d4516ef3-f25a-81a1-6836-d1c139e9999d,3868583229,14418698901231527965
+22a33f20-e6a0-b8b7-a33b-0146780a91d8,2836121051,2162180541666734597
+c914bbfd-0e50-abd8-a471-76d6463eb8ed,2336375492,6529769656674349991
+5f5fbbc7-7850-87a9-b88a-8b136ba8a359,3162619028,11246467543703476244
+4ab1af78-e7b6-a6b1-01ac-71a2b06d4894,996267261,5631537871207314457
+71c1d0a9-b5db-ec49-91a3-517d31c5680a,332701954,9957890399967565944
+b4f31f23-a15c-b3cf-2d98-ebd62372285a,3385925869,6580551556523038852
+e3e36724-5907-b5e4-500c-03d882b7edfd,1207019371,10937043330057038961
+d4800989-49d3-27e1-b8f8-10a9184299d2,3306985155,4228153822525533132
+26ec057e-11e5-9845-1756-b4adc6a1cb76,893205211,8493836166058495363
+1b0695f8-4791-674e-6b3c-9b945bc2bb2f,1803880106,13847252136268023810
+7533eb85-9876-306b-3357-d4fc90190318,193848536,6338718047787039247
+93c9da80-1c57-7687-c5bb-d5a145fef11c,4118838610,16801817968716635099
+3ce17ce3-1145-0954-2291-b1fd8422f61f,4224256588,9872664742641908553
+67e667ab-f4d8-fa82-c39a-d4879266009d,3485047818,14245160392267902934
+4dd71810-f690-6e30-bb41-140a7f27eb0a,1597723651,17324003267122197178
+f7d532c3-f74d-f2b0-7cb7-55589dc5245b,2957649844,16630973198069855422
+0e1d70cf-cbf4-63e7-810b-8adc47b6ff15,772069130,11333473008374226449
+53345dd1-0b47-f42d-59a5-07221d4ca41e,475734411,12662128050992889317
+c882e812-9756-9a51-5c28-fe394bdafcb8,1372880861,4657787818084315270
+0905c99e-8ea9-64fb-673d-5aa54ba2827a,3452088880,11206372755814420375
+65cd0a79-58d5-a0f3-70ae-a2c6a6db3781,951394572,13796229596514783352
+b47b880f-3273-48a3-09d5-a84103212c2b,2314972143,6692717734527420999
+aa470cc0-15b2-b489-1867-efe1c388e9a5,782544203,3517320755773608571
+1090e40f-1782-887d-9dc7-023f6bf945bd,1042216446,5243840208714663327
+c406d1c9-ca32-b3f1-6bdb-b089f8d384ac,2391908943,15207972190791298183
+5392e820-ed40-4ec1-d3be-21efae165f7c,1976727780,16265712913844732785
+faee37db-d440-380f-9366-c33b253db98e,2536780636,8573772863890467909
+79970a99-8908-3f25-f912-8009ac4e2d78,1410551847,17420309550664378070
+4a4cb9e0-8195-7aa2-5cf0-496c59b2e36b,3671831079,18090409833404752377
+64de2ae7-dc75-d759-250b-cd2fb0ac074b,1229442512,16256620766102748226
+10e3257b-7eb3-f63f-e37d-e5ed926e2218,1631773984,11040576130002117220
+57371d51-f71c-af6c-5742-28bd4d4e404a,3679642856,17555075174341375426
+4e6c04b3-1dbc-d728-8f1a-a266b06c513f,2945924829,14048198430177688825
+03cdb429-e3a5-7edd-ab68-5d7d26d335e0,3548049851,6393617133864737307
+777a4c2e-cc8d-5774-d308-0b22a5eaf9d0,3990786958,10357064897799438001
+cc68c59f-6157-3b4b-a17c-eec2ab1ba1a2,2039411989,8601264047370605128
+f60f0fea-3ea2-c2b3-8526-fa95d82b2295,644415984,13633835396259814227
+06a4c845-ee32-ed91-042e-8635cd49ad5f,3849268955,8323601834594187529
+44995be8-92ef-39e0-1691-29c73d8e4db5,2376630366,18344983891054885829
+bbcfa4f7-e4bc-4096-d6eb-90ac69c0d587,4200237426,4874226095049014264
+d8893d89-c0ab-97e6-ec05-fbc1fd25f050,3634674771,15346988703027173633
+69afbdac-306a-7139-5aa7-30a5325c12e7,3986352334,10940565265928163346
+98f40f24-5467-0a8a-90e6-1f48b77a31c1,3774042151,9877795911636095710
+56f6a8fe-837e-0323-6fd9-525951c07d70,2040421861,14188507918903110345
+48340582-495a-dbe1-5cf0-a0768df128de,3409936672,14536836040728298688
+51ca6c9a-a49f-71c7-fad4-e2f29b0ab177,522892299,13570661664694490161
+08979f35-bf69-ff39-f076-0e5bce01d460,578090299,8571540153248641938
+87be66a5-f30e-8d58-fdae-24357a0cffc7,261381121,3153616332232389184
+f6a6d128-a6b5-3ba5-7650-9b5ded462f67,1220608460,16971168365123165334
+12358b55-3136-b869-b7ef-cc95ef63a423,3329877165,13487421606226268206
+3db47166-1a9a-4e25-f730-e909c9d12064,3197510738,2066779181123900520
+d4cc9c39-bf07-b3e3-01dd-280c0482f3ad,1342147536,13219327090760325534
+f3d5fdf5-920c-adf7-c709-20a6759deb07,358249803,13143871528128283468
+34b3d4d9-8720-1797-f861-21bdd732fcf9,1625950205,11894652274974278458
+dbd81bed-ddd3-c7eb-0c4c-c9c17802abce,4007674382,3973336180464839963
+66bee319-b856-5054-37b0-100c182f6f94,1384284154,11731076561453324452
+822605d9-b93e-87bd-cc63-d629163ee235,781163457,17435860426152305868
+8579ec53-a14f-d25d-55a5-9c7c1e5b4bec,647556967,15862031531391657006
+cbf2a120-26af-41c1-0795-ae03d21bf80f,3776155115,3211775490746334441
+c8504907-2e69-d747-6380-51dd72565653,1201735599,1210900430616344420
+23a98fcd-4ded-08a6-859d-2b921bd066fe,3877329948,4159548548030528037
+2c9a0427-0647-e964-8001-8e1ad8622480,3119510129,6911438354145905569
+113f393c-b432-590f-5153-dec1a80de4a4,2045118168,3785358417628522532
+88278044-e82f-9692-f2d8-01ffbd881d6e,2463152644,17596788602620643482
+dd3b197c-d915-27ab-d179-81ffc87e2e75,2250331120,1782485096327869238
+7e435535-8081-9e8f-4a6b-e69a4107899d,314325415,1960582809321976638
+44cd91ff-309b-2e2a-99a3-b0be18cf784d,4068548381,2831737142145820382
+cd53c9f6-372e-4343-5253-ffe1dd7152ad,2888460290,672035215455011200
+589acf57-7e19-6e5f-6e10-30773ff9c367,3056322897,8514409983034424462
+a95d9177-a12a-c460-670d-aea8221e667c,476375174,7356630409093947482
+dc3aa6b2-575b-8409-9b80-a17e755bce6b,3551155435,2141361924776775597
+cce0c3af-c27c-5394-be88-9c1c0ca64090,444992187,13068644114542617770
+b6586aac-40be-dcef-dbda-416fe7be3b83,4101590137,12685754036643977852
+6800988d-dfaa-669e-0578-b6163604d704,3107326709,8658290407115008790
+29803683-a302-60d1-1e79-59428ecf4690,398089293,16491817042942262871
+0c636452-92d8-bc62-ca51-0eda090fb42d,2452231427,7655165284348079705
+277d2580-87f9-37b7-a4f2-36da87323770,1339427826,6354512253092885565
+502a360b-f836-f79e-3c64-9f95867cca74,759417067,948084962057117131
+a203c7ef-dc17-1433-59cb-fa1aa98d4895,2790368065,8764661374292075570
+d8ed7fef-56e8-c9d6-0b24-b84bb1bd276f,3266330354,9128300072363800070
+12cb9b7d-462b-18bf-72e6-2b05fe7e1268,3571400096,15968215959147641980
+25d15b01-2ce6-a737-80d4-f46c8a94b117,4122792611,18346623545033318025
+28c282b0-f773-1971-fdda-a013eecf85cb,3437729454,18328362753276785913
+fbbac45a-dec3-7e0c-1373-51e189b5f575,835701699,7170417208790607691
+4250003f-d4e0-e8cf-f415-8f1c918943fc,3473705670,12267475802780460517
+003664f3-e821-567f-274e-398349a16407,610130252,10735653703841250273
+3b8e55c5-3c96-4832-859e-7b04e7c77f18,1682152778,9157035236085035327
+e5b1aeaf-0a35-a470-1203-0fd6c37bd2b9,525017534,8778224618118438200
+6b712c5c-e9d8-89f7-c8f9-2fcf595b554c,1186204422,3233413819498689150
+91d60c53-77d5-e934-9851-b984ee155ba1,1200787257,5525640965314503875
+bc0a5c31-4396-26f0-5231-f030c12f37dd,336387043,5551841187862256350
+00b741df-a6d0-d341-bca6-13f1b4dda542,2415580405,10016741875180183465
+a8932dec-9843-66e4-b5cc-047a27ab78fa,2881130801,5907060888678307148
+938b91b8-b0ab-744e-1a91-a0c3b0bdc81a,2716430556,11841647420399032224
+285619a8-db23-33c7-4442-0a1aa8977185,3395837997,15440847843451478736
+c2cd2f31-27ab-00a4-7791-ba2211d270c8,2120277590,4388147482938474006
+af96f1d1-3cc1-bcee-3db3-aa7e207073d9,2551042105,11191428675761580999
+ac39e734-844d-7a57-d196-9160c2db2f89,1482669588,14989026166040692780
+7af83569-0466-95cc-2347-a0135f373803,2712949062,5331293843228786626
+9fda8b5e-b16a-85ba-69f5-68dd4a59a778,4022448004,10213366425483741123
+dec26493-390b-7b36-e426-5c526d46d1ff,2253477446,16976254125985115828
+0e105832-8599-9c7e-961c-d06b6f437a1c,3654309575,1728162183382069915
+c86bec2c-807f-a169-0729-b36511e56e62,1554232398,784394505039945973
+041d5ea7-b78e-d5a2-f4e8-0fe86d9b665c,1596845250,514582163709086831
+f9f6b6dd-72f3-160b-3aee-2f61ffafbdf8,2170268637,1027388629933899223
+f5b279b9-4bfa-7954-518a-1f6f1f87410a,2897489787,17529579622109435211
+4ab188e8-1f15-9cbc-02db-d1c67a44590f,3196777701,5101577860076152303
+77429c6d-3847-3fb7-dd00-1be019281dc5,2821786280,7595138901120524457
+716118af-917d-bd6d-f4b7-1793891a4ff2,2086400025,6578166604764925478
+6867280f-89a4-6f5c-bbda-7ba4a6a7dbad,96826064,2764499346932778722
+c7fd7810-78c7-d9e1-d7f0-b61e46242369,2443168270,10104547062987091601
+33913664-380f-f16d-90c7-16830c27adeb,3358102556,640474867025931452
+77bafec7-ea30-d8fd-97fa-c9cb475333a7,2195700948,12303494590865225943
+2b352497-63a3-5625-3ed6-82f2a4232197,1402729662,6629137532179906749
+814c3c40-ea67-b866-8554-62d96f351328,2590297867,14606408962891599937
+24bef4f3-3788-3255-cc5e-633e5ccf8959,4006229169,10228776207262996124
+d4757f12-ba63-f861-5756-231f0aeba185,612577160,1536673628909082407
+6dc2a305-f6aa-72f4-04a6-7485d9adfb12,966530680,6847738322512573589
+7986f93f-b57c-317e-2977-38638b1a9a9a,2091262858,6321288337212814840
+ee713752-3a29-fc36-6c55-e4d5dd86e8b8,987837795,5448924962635532186
+b8dc71ae-0bef-d3c3-c0e3-91906ed3ce8f,3151882104,12449307555721462005
+3c563716-043f-b8e7-8ea9-732e3e736bdc,268400548,12350502306643474341
+273e060b-e4fe-1096-39ba-dcf22753a25b,2553434979,14970394540641350299
+62211732-43ec-f4d4-c373-f9abb8ce414f,607866266,13621758602942451459
+de25cf06-406d-2fad-e4f6-15a296064ea9,4017032607,7793226188773295928
+02e65bcb-f6ae-d26d-cad2-52e37da60619,1285580178,7287848060746038170
+e1e80bb5-ca8b-3e90-1ae4-97ce23695d2f,1500324129,9603380709042040751
+7e98593f-b057-7bd4-7fde-7db8593e0197,1612591600,1440528446468078934
+f3dfe3bd-967f-81f0-8d77-48c57b84e9b3,1863437523,15653554290535931216
+93a1c297-8c19-cf29-ab87-611d7ebcc08f,267129156,3461258315612589282
+81c4e1e9-a233-2273-ba31-7afcb3b6f301,4172215899,1313493389766946649
+813786d5-5ec8-4c15-6697-32d631f57f44,1061202938,4134865968311780707
+8927d660-3a11-907f-1ac9-785d83832bd7,1396440119,14665976670499590746
+51ea1eee-bccf-81c3-0b86-2b41bd36befb,1104991385,2257683080523635790
+9bb9142b-f27b-d6f3-3ea5-e05c11db2741,3973871046,5168316419660680840
+5dde68da-cead-3c32-adbc-6881556d776b,1995948496,552150708278154642
+59c93d37-f32b-66b0-12b6-2bc94077fd32,2187233872,6578845567317563118
+2b6ea45c-7c0b-6a1a-8d46-d61ad4638982,3100701198,1215141277677135005
+d0210cc0-eec0-1cb4-a48d-b49164402d0a,3302771828,1202937382930145717
+5f3fa1b6-3bc5-b7ed-30fa-726fabe3fee3,297988114,3583381050328521756
+cadd5a6e-a602-f3d5-b8a0-65e00a3da9ca,2928463276,8425977596367649676
+905ed063-a065-64ad-e834-689615cf9c52,1863819291,3744248714133017116
+b52acc8e-cea5-fbd5-f70e-741e164da823,2158439098,13141176621794095636
+075b4951-a3cf-461b-ff5d-959c84c5355d,999347781,17409874876134279832
+c414a1fb-5866-54ad-50f5-2328a5d20749,1746241414,7622186158225452691
+cf491a6f-b9a4-5fc0-60df-fe470b71b105,96941001,1738915002276339001
+8d22a7d0-c1b8-549c-3222-cda41214f398,2812304148,15727626480032769952
+6c775336-92de-b375-1eda-19dcb46509ea,3030992087,11481942758660072797
+a0ebe3dd-33b0-7ccc-13d9-2b4aec9bca17,3448791672,5966178299108774287
+68fd00eb-a057-0e8d-dc99-9ba3a4186e6d,3220711832,1242591943483267640
+546db9f9-2bbd-483a-7ef2-0ba1d8efc71b,2875079681,12253348847153350238
+9bb336a7-85e7-d771-ca25-e14b627e680a,1906745610,6567458476538900979
+c3fd320d-f9d8-cc08-c0a0-76e2b6dd5cb9,2030351553,14429058095992986224
+8cf63b02-eb22-df54-b74b-549798a5af1e,2936245228,1687844753431462480
+fc3b0c14-f4d6-b7a2-b73c-c358337a9725,3678574087,838881387967844653
+3e6ebb23-0a88-4683-a8d0-e57c83f62041,2127863928,8086243055766067818
+73fb1a99-e765-a767-0a92-a266cc1d030b,1594008468,7691868882356534957
+3ff83796-ce68-fa53-f835-b6be9f0d5faa,1895280443,11900862277311160948
+5944e4d7-2b4d-f8ed-0826-609f2dc41da3,2175619318,7798890590989462836
+85056bf7-bb73-9d34-c7ec-dcc5402c38d3,4274814286,5282659413919135942
+d4fe171c-0fbb-12b9-74a2-e85344ec445c,1006544689,17746956838533780154
+c9e11ebc-db79-f0a4-8c53-4eb1c212d380,936790209,13616708470795062475
+ede58401-7578-959a-09d2-2901b59b0e22,338176409,17318554155088294062
+d5ba62d2-98a0-f79a-65d3-3d6c8063b575,635553056,10468876014886959037
+d456172c-5646-808f-5577-d98b9ef4238f,3088170509,12600100778488291574
+78479dce-189b-88da-4a4d-573a791fbca5,211986772,10691729227476992202
+2df7f370-e168-b360-8550-54309c054a25,188145959,2871200655619728760
+fd05ac72-8a35-e3d9-b143-18fd868e8d52,1314261102,16406021137237968099
+b49bdbd7-38f6-eab1-1db9-b75e2f6738eb,3474160296,3518434335068817010
+814c6762-b25a-fb57-a5ae-02517a4d432d,2895105050,360329544901261617
+21d3c69f-d054-028f-4660-b5e39556b82e,1897421666,8445617714858963444
+80a5a2cf-3a1a-8eed-f841-0149461e9fe8,1365791566,14733326360845769856
+71abd8cf-55bf-c06c-0afe-1ad0090786f6,3214922187,7261144330754154600
+4f0c6ab3-6c05-4373-fbaa-a0b7cea7bff4,2947177149,4662987325628023545
+983fb108-67aa-b88c-a43b-32fec1512eab,357063438,7896068006387078578
+759edf9c-4323-a78b-58a7-f90d2856937f,2372771916,8454076974920565679
+11f52794-9350-18fe-50ea-c253db671d77,3878433930,8440033855265472601
+268dbb97-d562-3c92-424c-2bf46839441d,910502217,7117777599727760779
+df5e9279-f68a-b8eb-1805-667d6e7ba2e5,2503851879,12474587336041935731
+b90f04fc-6d21-7c1a-0c1b-201681379264,342680557,16232752200664833758
+5af2b177-efd7-1723-8c79-f525457941f9,4130929565,271297914286035260
+c320314c-b4c4-076d-241f-b1a87a865c68,1973321242,14632516403722715339
+728bba4e-b61b-dd5f-182f-c3c231a931fe,2718251642,3491802458996390130
+47a47298-72b8-d436-c756-3ba9b443c7d7,2625336788,27114807709786192
+16d9f58d-cc89-54b6-14e8-2ffbdfc346fa,830393988,17707139697244747342
+abac297d-95c7-359a-e4bb-26340a448dcd,3808569700,8332278603073218169
+e26b3fea-a3a1-cafe-ca50-238011501924,99727380,3735535272478285625
+e16c3e6f-339c-3cba-c7e2-941457dd3dbe,2214840090,10243174154951759686
+16af69c5-0768-0389-79b5-0f628dcc0f9f,2694266313,1916442758625138827
+74f352c4-659b-bf8c-e8b3-f68ba246f5e5,3631380284,15304459036076484922
+82e6b9df-85c2-6805-7eac-c8e5e486a573,1285816497,7208621014624473017
+528f0296-b1bb-434b-8fb9-70d1665c30ec,3649456958,652525194499969984
+e9347692-f400-5891-b260-4960f8417113,2557255670,4106653776870259494
+242bf946-46dd-a80c-2d73-c04131496308,4002955908,10634186494728363093
+5d5d4886-50b2-64a4-5407-d236597b3a07,2179091916,3581954240301141149
+12ee593f-31b6-420d-7215-081978aca760,1818142223,17352248835743130293
+a810c361-6d2f-dfe7-042b-fc9893f275a4,2926764402,7010153524456289598
+0c1fe24b-93ee-388b-e115-17301cba641f,862153221,2426353751585231276
+8dfec6c0-a878-3e39-d8af-4ca5935b961c,2037759224,3099456336808383981
+8045773d-46b3-4526-0eb6-983b3e78f0c8,4257714585,3802770882216264125
+1b25dc22-52d4-1cf3-16fb-d2ee97014e3b,1119550841,5956855320919974601
+92f8da63-5015-dda3-3d39-a89f5b2f8f03,95402273,14048587531210615751
+6037ccfe-b5e5-4d58-04ae-f237e057fc4e,850076357,16782693651952939991
+9896a3f1-2b60-e331-caaa-eb95b39699c1,3186505327,12077719663850699043
+7c7a36d9-a76a-c6b3-0519-910fb5a975fa,1219846200,10110924576094993235
+5c8cc8f3-cf75-0997-5a6b-b29f906c841d,2210426167,11477021221305812134
+48da4740-0065-c649-aa39-fdc1cedcb1b7,3996462921,10694975493270108311
+db5eaa0f-5c9e-49b5-ffd9-f1b9eeaff2d1,3673822045,12738535562567018559
+d46a7ed9-3371-400b-a8ca-4ef3f31d5966,641042677,13811810857650030079
+da6a65f1-ab7c-11d6-9aeb-166285b9c876,1818664194,611802509403329510
+a3c6c217-b8a5-11e7-0f8c-316167783ada,2315821115,1189230840962645615
+0f631bba-aee5-b627-8137-7cbd2146163b,2641785072,9585786081978571556
+7102eaaa-1712-0dc9-5047-c3af7061d830,3387254660,667273225230087539
+3612b9b6-6026-275f-0ed4-85d4916984e1,2114061027,1465771997282447914
+b8d1439f-b06b-a385-d90b-c9d8e9a61d96,1977340598,152830678050080044
+28ec0130-9c54-ae4a-6e71-4e53c9c42b64,2720722060,8667307330638812858
+8e0e3bf8-5c3a-871b-d473-39e57c3a3748,2940540398,6062261108502373873
+22ad1dfa-8bf4-d880-ae04-6b7e37249468,1103603394,13324605080921162889
+d6754023-73ba-773e-0a76-9f3529a148b4,3576575982,212163575661315073
+b99aef6a-a826-4ec0-c36a-fab566c31acf,2748585318,1898866017910289751
+d3a1980e-0bcc-a7ca-5fcf-32c06c877fa3,1641511268,14206674493763242997
+4a4ff70e-c7ac-7867-ebfd-f37a70ac2a11,3410991383,16134447936204901841
+9a2a2a4c-214a-f90e-1de8-07c0c9998e78,2383705967,5800462266944752313
+053e7d23-0c44-bd96-bcbd-04e88baddcdc,646667369,6794174175689334017
+bb3658d0-b5f0-13d4-e55d-f881c69576d5,2857401444,5718237067815520024
+f2d43ba4-9b5b-7a5b-3044-f1743e048af6,535635979,6880637690843441342
+a1bc4ad5-20ce-e8f2-19e1-b4f12061ecb7,3629526826,8292672934917449977
+2fe547b5-7afa-8b26-a0bd-40de6af753fe,1539923653,15996615504995855294
+4a3d8ba5-c86e-665f-e350-8470880fb2ce,165773399,17457267323629552757
+a9f3ccfd-54c3-a08c-0984-fd32a2541bbe,4120811170,17188109632109532607
+10e9bca9-05b7-46fe-78f5-171a3a7f321d,79866406,2143829439462348516
+e9ac33c9-7a7e-20ce-ade4-66156bde7c88,1479997580,13277880249146869014
+97aaaf10-da8f-38cb-ec6b-330dd49de1c7,903998150,4333521837286277516
+2dd2dbf0-0cd0-eefc-bd10-d7f1e23ad422,927889572,5284722370053455161
+a41a1805-0d0b-61fb-a549-5c73ef43d1e1,1773959375,17699204515742354589
+eacef121-cffe-af9e-f818-d691b4ceb00a,3487328277,3980278806210710562
+d3244c87-1ea2-38b8-4afd-9e5e31d0e75d,2184814434,13281230970299026013
+73dabfb8-6873-41a2-5d43-1d60015cbbd3,2009162528,408905318264477219
+1751547b-51a9-e92a-02fe-abb8a3676e40,2177195255,9812000471548999151
+1462fa74-9533-cc46-00b3-357950af70f5,703083330,10192536339596296863
+e14e48ea-89d8-fc93-3080-6ebdd43d5dc2,3642837120,7183250259659487471
+c3f518bc-5f8e-69b9-cacd-ef419cd1ebe9,1286138385,5933550419081870465
+95352550-1276-154f-3887-ac35059df320,1675041022,17164061228138950482
+53619858-f110-9cff-8eff-bd63e03db4ff,3138765592,17304527019822001234
+45fd6611-202d-038b-bdd4-f6cb77076598,1736785275,10393024213498717251
+58f765d1-cab7-c9d4-73d2-f1907c0a9759,1317828190,14070436371007787765
+ed0f6d0f-5c86-1e65-1a67-87cfb021fa3c,2017495836,10813003624917094767
+fb7a33cf-02c5-f0c9-edd9-93fc84ac5d93,1351327420,9332558096821337536
+7fbfc39a-8877-fa81-9358-d61cbac7c54b,2684971467,18140797826326891395
+f10912e5-6cbd-5e36-bd41-9029b70d4773,3770930932,13903548115336520125
+eba54c4f-544e-4907-fdba-e1466d9d6991,2339806997,795592138055509496
+880c5db4-44eb-6e7f-0270-dd213bceb5a8,3539540448,16282160901777049893
+5528653d-3736-f489-4ef3-b61ceefaf500,3882286882,7307510305710254417
+7ed2aa81-786a-aaff-7e4f-882ac585dfee,2027626791,4460848036149060546
+9cef41f5-2f0f-da70-ffcc-4651fadf0dca,3620323026,3489425272871755741
+b3937d61-469e-2cd6-7591-63dfe99fe118,3484726497,7970026697423203192
+b7d3df9b-b546-acd0-dce0-c05ed22c3153,2532739547,941475379367425313
+2e59b5d3-db61-361d-4b06-387df3528e62,2243859776,16489126613998402401
+adcb6486-bac5-b6af-86bb-968e19d709ed,2621992700,2322399521901085635
+9473122c-3629-3c8d-5b91-e9322b978f03,1154524913,9719008155392304349
+7ce3468c-3e9d-b4cf-1aa6-ba82fd8660f0,367956191,6319589871447061764
+61bbebee-f582-0ad9-40d2-12031c1590d1,926493658,3171795589064323622
+43e9bc39-03c6-ed5f-2646-c96949884343,4100655526,3438169647691950901
+d36a7772-1dae-2a64-f789-8552ef9574c7,2200453533,3449739048801904578
+32747079-9c11-2191-9851-b1597799066c,2680418151,6984261041723966381
+d3b100e6-0dfb-9f14-ba86-a0f97f136262,2723777791,6859039969743052990
+7f53b8ee-e3c7-1cd8-e60a-95843d3fa04c,2175698645,17045723815322190175
+92651e00-6159-349c-9f23-c47f36cc4685,739152390,12723646792041083164
+fd3f9b03-df50-2744-2637-4db3d8bec314,1686567264,5406692790706985967
+7dbeb836-b49c-85ac-6d69-e4ad6e1f63dd,2079777072,10976915074683639784
+4cdb7809-1438-0238-b6f9-f7c1e7fae33b,2394544499,992507644744233827
+1104065a-3cad-4d18-da71-97eb39d8f72d,3131197383,16630057729571487229
+b408010d-22ce-5042-aa2f-a85a9d917c06,3667953994,5265188174026069033
+6dcf41d3-21d9-2bb7-39a7-42016b2c4d26,148584943,442576648544511722
+4706cad9-1423-3eb6-7360-79f4c265cc6e,2911462873,1832255408417274079
+af9c1f78-f3d4-fe40-8847-f1c1f2377600,3165183894,4797529037249874065
+10ffa55a-800e-ecf5-ce92-87e9aa6102f1,3158648633,16401597831160366736
+c4f32616-0b40-fb70-199e-59504405b2b8,1608150402,9738391891838366870
+6e1f486d-7756-1ba3-9c2f-81de46e51b58,2354394763,12255191167059571165
+648e48d5-dd64-29e2-1857-9b82c59719ec,2369821452,6251399004004896313
+e7cdea31-c2b0-a36c-19cf-a38f208d3099,3457268328,2096490037236519760
+96c01985-0287-1566-0179-f2d8ad2d5fe6,2005927098,3403895777988445732
+d0ca15ed-d7a9-04bf-9205-f587056f5621,1400243980,9465681361765431723
+cd41dc95-a49c-74ed-16cc-1e6a5b61f60e,843142183,7296538231099955659
+32577e6a-e8c1-615a-42a6-6878eccd1c7f,3358079338,11455174750134974001
+8b7cd02b-7114-8469-a741-eee763c5ad2f,3872297666,11345843826255223665
+eb22da1b-73f7-bc8d-dd83-92fe38c510cd,4068803955,8048241850467042525
+1e20c3e1-4283-0a10-2942-63700d8cc984,1197584303,5247509094959094025
+1d95d3ff-7bc6-4b36-fbac-3f5313b84853,2980488971,2904845304520312057
+d0a93490-5258-866b-4564-d5d038aec275,1165388148,6391904932144459763
+9fd9954c-e58b-bd9e-3ca5-9a2a67034dc0,3823071704,5265629193404818216
+de40db81-0499-a793-7da7-c889469e9a3b,3200782512,12944498819895152308
+63a2aa6b-5249-4eca-70b1-8878049ce001,1818309965,5767465083971429068
+070cd9db-32a4-13e1-4a53-a678f545e437,1913505029,7057934897261263590
+2869119a-0ef3-9e57-9179-b0fb29a9b242,3485821321,16546722536559275806
+ae7511a4-4fab-790a-17ba-5ad598667610,1213231939,11291931800895474268
+181ffcb8-b0d6-988f-02b3-c8441c242935,3004709005,2157058407415251151
+ca317c36-4710-6428-1ab6-41b385d4036e,4080112797,14714335895677552399
+13916449-fabc-07fb-62e7-c4e70c8cf98e,3954000587,4472767005812102036
+e5216b27-2301-a18d-c606-e85ac600dc1d,1800381208,6681288316981579309
+7033ac8f-3231-739b-1c41-19ec4a287b97,235867339,9546966880061756752
+05463266-3af7-4f89-897c-c2860f618490,2734627936,13855220418431878983
+89275c74-ba5e-07e3-a290-40b6eac2f332,3311914273,3987315653812228598
+e4901169-699f-1918-6315-17f9e55c6e0e,4049599746,17965693504167539400
+b0b7f992-fde6-57a1-b098-73a1506cd45b,3844520134,8026102643617909793
+79cbabb7-3cfd-d5bf-7842-e41da432d31e,746376638,3623614825901208508
+15314f53-35fa-553d-32d2-c5679a44e21d,3860848859,12660646797230419504
+4acf14d7-2768-d3aa-4183-43b487eea537,4184216781,245198979336929397
+9f84cd88-5142-ecef-6e3a-3241bdcb48ea,1955161848,11630380633750654987
+1d1776a5-4e09-b29c-bb44-69bf9f4313c3,1656713403,1289276451146336061
+128a0926-73a5-1fa5-dba1-9631d9da8332,125331788,17235479613729609264
+cba799db-774a-203d-b210-88eef59cb355,1180726664,5035434116195204834
+aa429f47-9cc0-343e-0393-6acaea32ed2e,985507058,14579718152526202899
+1ebb4b4e-47ca-13a2-70e0-3ded599c89f7,3328264630,12536806480300453409
+be6a9dbf-80d8-77b8-9f3c-b8f82bd5fe9f,2622319218,3336671760538706001
+4b7b264c-d075-56c9-75ae-535ce5204d34,3248098013,18019017814673527258
+c0dbbefc-5472-92e3-8794-391797caaa69,1300308396,12637844878510029238
+b895dd59-6e3f-c55c-6424-b0baf89c32ff,330367940,3522542406339969101
+99251d71-c86b-29fa-4eb5-0895b8286f85,3021956505,5620473725906770127
+4f33f3d9-46ef-cf0c-a5a9-f2429ce394e3,1039506619,8800382563709123584
+eeaa9737-3011-cbf6-2c3c-179a59d83676,3817396666,12188354428232495355
+16e25eb2-a425-6747-05e7-d12e4c51f724,3711176723,2765932268786226704
+a0edd8dc-fed8-c9c4-ccb5-a43fa435754a,1458267312,4290537545310203039
+03826938-75ab-28b1-e642-f989c551f99d,900786760,2740369325104193523
+8b64589c-b2d0-b290-7105-eec2503431bf,318295598,3279680842736951880
+b953cbea-6306-0b1a-f728-f8ed4c6073cc,1066480515,7283657658779339097
+4945ed16-d5ac-d1b8-ff5c-026ab585ebf5,3036621811,385688275988969886
+4caf2d2f-57a6-6a44-19e5-69f2bbb7f72a,4112836058,17490951518534503775
+db558678-c733-f35f-acc1-85a95c6f7331,171117794,7531899995705515112
+db7b37fa-a32e-f1df-ec74-320184ce3094,4034305210,14859683240714533239
+401dc9ca-3cfd-452b-90ea-33ae415b7a24,2276779323,4313458421897259335
+ba85e075-0141-527e-9c63-ea56c5ab8681,3770095751,16849972669126498194
+a70c5356-93cf-fed1-55bb-2102d3ddccbe,2780162522,6027338164745652036
+79b91ca9-7aa9-3eaf-42a7-69c02edd40b3,2654600121,17278695642012656457
+c77969f4-2827-82b6-83d9-458385391ac5,933324803,16537597010979017233
+f3ee78f1-d5d2-7107-bffc-c31cfb426316,928463237,12233957532374633879
+2c69a071-a7bd-d765-5440-100f69f7a75f,2043968898,4123419969275372603
+4922c803-4874-9310-c491-e03a7817ee31,3630413419,9626538993499594853
+7e3e6311-4440-e5ef-82f9-15231c1de1db,670468235,10831428522848759123
+5ab3260e-cc8b-53db-3ca1-758fbd97ae26,2494871484,477188075801356186
+7fc371bd-5120-22a1-5180-3cb927ce1bb8,3887961891,8327531548910571562
+dc2320fa-7017-6a1b-752e-71045b861bd5,3966892754,10020189911685535875
+67d1728d-8595-5a0d-b8f1-76befdc3d3e0,3862591569,17913697323018343890
+3c1ca635-b749-ca8b-9b17-2abfc278896c,2806346140,17594411542399438090
+e53ef5a9-e97b-14e0-a7e5-d2f0ed04c65e,1722038305,2652276897489342222
+9f81e3ae-6d0a-88a7-cabb-060e1a7ae14d,2465322382,4282854798107809824
+dc28ba15-fe3d-5341-a1b5-074f034b8a7d,3470431217,15478640901730302813
+c13e6429-787b-0887-f0f3-c7111fc1cca6,1619241776,187922618687694913
+81adf61a-52de-77de-3700-43a0aea03781,2056002158,4085518074390536852
+729f7742-8b01-6d65-c35e-e4ee42b23392,2450652890,10531934073429393755
+6ab83efc-1537-3c6b-33e6-a12f9058db41,550984000,11114577215843765163
+57b7a6e3-1b1a-befc-678c-09fc34669a48,2752952774,2904135906185937103
+f3ceef63-923e-a6e4-dbd7-b48c536a9e65,3055740936,14834028344049761627
+c4b824bf-8fc4-b1e3-0836-82f3ef68c9df,1688307373,9327639574394517722
+c58e3ef5-a3bd-3ac0-e015-a6007cbdd111,1698400970,16095999563496575379
+3fd3dc66-8f14-9e75-77b7-7d28fc5deef4,4292135475,5915601508144863033
+fe60cacc-aed7-9e5b-f26e-618b7b7f247e,445364592,9054441203832314004
+294450de-7564-64ba-4560-31b86c4f06d5,150940647,2656165063809790979
+b4bcd693-e27e-1046-4253-faf370d9b346,3632336658,3413059258663423023
+c9d28ef6-7217-ec71-7853-bf242266d223,3637852870,5127931161888145419
+dd12f55b-b70e-0a4f-2497-c784caf16a00,986510004,12638901119428621057
+e27754e6-a471-8ff5-947f-6d7f7b59f7b4,39228665,8243498603883515601
+06888428-569e-b655-56f4-93c9f35b108c,2549576298,521990685161941608
+285c458a-9452-788c-d756-29ef0fd60f86,1916362642,10459546060242663708
+5300d063-39cb-83d7-22aa-063ac8253e82,3563754298,17131922139737539250
+08313e04-3c85-4fd5-5c28-f76d6a1a6468,1322412528,8151010508480856651
+d9314b26-be10-d188-731a-57958cd15091,1933306877,12644070019256580394
+ed58a1a2-c480-6886-3502-d6c742fcb827,2178859345,4173758960764311425
+d5a5bb16-4ce4-698c-d7d4-247c3af25054,101908067,1153340200563708290
+de4c461a-ebb9-f4af-e339-bf65062c9558,2600555651,16151909417591227413
+33797f63-c736-f42a-e18b-009472b23156,3870012595,3457195813303036739
+7fc4e690-c2cf-4362-6011-2cfad9162724,3587395138,5147183824632965247
+33f10460-7bbd-6dbb-3ff9-c8cc7b77a968,2416785239,3381705615665428126
+4fc8a2db-750c-c28d-6121-afff03b1021d,2473824240,8588570211057396799
+8f51f2b5-e71e-8dd2-b962-b73999c4ad37,3131274733,91081985192110148
+65ec412d-849d-9188-3d22-9175a521e67f,4162575568,8975168456449098875
+535900c2-6ce6-7bf8-941e-8ffe30ee3ece,3076261364,8589625547414090821
+fc712db0-78a3-69c4-4ba3-7c42890b789f,2870213744,6573823229878620947
+5042def2-aafd-a0e7-b616-847827c9a3e3,1539928543,7912647775407477930
+2c3dfb7d-96d6-0245-09e9-5c293893b2ed,2041682657,10268123241549619100
+97ad7a7f-d56d-fcf8-34d8-80957ae3a36d,44024396,18173817247992499831
+3964928b-2493-eaff-f13e-21422951bd99,1877701083,10820578756738984527
+e8ff13e3-b0bc-d7aa-28ca-45fd58e7e986,2384031693,3759581341139119793
+eaa555a9-ba3e-0336-4f6f-7968cf0fdab4,2449246454,3268675434290400016
+4b51f9a1-8e9e-d857-5e62-9c13d508cba7,3026297977,7863246819588717895
+c5197234-21da-45a0-88ee-b26d1d45615a,1231836568,1712292894921292038
+b3ebda84-44bd-5b0b-6f0d-b24d4c739331,1981582256,51218413576473114
+4619f3bf-5b80-966d-befc-5ce8e3e1505b,639253699,3609920063535903162
+9b547211-1a07-65de-3462-e4bad7e64e6e,1784160327,11239593298921354910
+bc77349a-be4d-db88-d594-f1f76aac95ef,280147335,5234709190862491981
+6c978cb9-c1d2-029d-3b1a-bdc74fc52006,2972215893,9671097701007357386
+5a989d7b-a4ca-46a0-a2f7-ce1f11903a76,4213737700,12938128602242145187
+c5cb7ef8-db01-8f25-936f-3b3d98bfa256,2864233678,11656121721663341024
+f903fdfb-0fa6-ea0e-2479-df4d0eb14be3,2252306394,6606731826006220361
+86db1f5c-7514-94dc-556e-687b62184b65,1167317728,4810056946280231989
+52b92d4a-2b87-9331-f933-8b795a5d5a73,2543808898,6421366723914045416
+e5f42b7b-a04f-dc86-d34c-b4526a63219c,3668376284,1163581575270706884
+a8d4a05e-4f34-326b-bfe7-eb307e5ca34d,733220724,9123065254443532415
+08f05114-55cf-8e90-9670-3702b8be4d42,1152487744,14872399482383550197
+986142e3-785c-3e32-9a95-063f6cb1e7c3,3203332371,9093890183969627932
+c760690b-ecd2-0922-34c9-2793dbabb269,219568615,11114889358658676319
+0a742fee-9303-30c5-a2bc-4082ac9d68b5,1676483862,7558572305038439421
+c0f19951-09c6-990f-727c-7ef94cdab624,2513701049,11543255847581922218
+33599a06-3016-1b6c-bbd5-e2ec999805b5,3634986370,9272125677804533600
+3375c93d-2b7a-9ef5-9b4c-6b18ad5f8b3a,4050249569,6957846837792078450
+43cd4199-dee3-e5d9-862b-ddfcbc77b55b,4008834356,12228949987159054297
+ec591d06-68ad-fa75-866a-e720be7f8972,2556885984,483013687377176826
+01f79e4b-da0f-7909-a0df-856113bed08c,4212149391,6023088640362805805
+3afb054b-bca0-1a46-f628-9342ecd176a4,1083938822,16100048138067588267
+65886291-b087-a3c6-9938-88b3d685ede7,1322007038,14212438574356374072
+159871c8-4ea6-1666-5e5d-ea8bb7ba874d,3516380515,1153897214674072890
+67515316-27a8-b32b-ca27-8706ae96c6ca,3484047266,47400309461851146
+95da34a1-bdd0-1f2f-c786-849e4979493d,3722172925,8294665329328629742
+8cba73fa-7503-0ba4-edc6-51f34eba0add,2929514890,15074903344407152571
+43961f42-10f7-8d3a-e024-c001b8112d75,3158251318,274839851750668699
+db308dd2-bbfb-6b42-cc64-5aac73f3152d,1455389060,5140439813839228646
+ed531e9c-dd6f-71c2-3f98-d03e3acfd56b,2522024771,7103973045948426275
+c45ef4f0-df8e-b09d-b6c2-ac79a41ab7bc,3487614376,3790605854519579620
+9260e126-77fb-5a5f-fe90-2c5b04c69ed2,3209919389,7330957435291932357
+8ca5f595-d96d-bba2-f9ab-5163beed6fc4,526223736,17160890910245901968
+3e7f6d2d-7409-be2f-3c54-d3f27ff4534c,2109359058,2808863985996539527
+ab5a6b7d-15b7-0b70-73c9-49abb6f28a1a,2463472341,8530540549244221344
+1d61dd0f-cc92-2a7e-5d8b-ceee9f17d62e,691775639,9467872612904863282
+bbfd93a3-9bb6-91db-4442-3f4a68de4be3,1190914170,6786934182433888119
+32b8f6e6-54bb-e7ab-4b76-50603dc2c453,3772814563,8189437551752718142
+42d9160c-1be3-7555-659f-6d98b1b8a020,2493644934,6430500602731573326
+05f2d86f-e75e-769d-7bdb-972c6aa21d55,4225001465,12705174106098883065
+dc471e08-21a8-d5ca-94ca-8b79bd807d03,279477040,15730364082279236666
+e9fdac3d-2387-ca9e-ed18-1eb6db1628e5,3207666971,8514866201574289061
+5bdec987-a9d1-0459-e532-45d72582c70e,345474111,7766633903961008103
+9e7bbd14-04e1-ff33-d2bd-6abfe78ef6f7,1316895307,15580252791292112970
+3d16c320-c699-7505-622f-a84a80e79cd9,1150175594,5938818265904498620
+a1f589c1-a3d0-7652-bfd7-ae1e145152c8,1823614482,4616221348009824808
+595fb6ae-391e-a43f-4a84-7701fa377e8b,4006985444,16605721556895612685
+05ea668f-8394-fa25-f913-a4044d8527f9,2967593360,8512308232907978248
+c665b106-db73-5fe6-b753-a774690e3422,3443051374,814295509868425090
+e345afa0-adbf-a723-e7da-bb91cd75ac36,1625499179,12124023544896079153
+7d477dff-409c-43bf-7e51-a41340627082,3517210358,9228583743615279642
+00f9fb38-dcea-684c-5b59-9da73d6a41bc,183797802,9846966831371138063
+0109e4e3-a251-d8fc-b492-e946a8e922a2,2848355051,12948850004210280627
+8217f4ab-4d72-ce4e-c06e-8d54a6974681,79078868,5949080021713442433
+a737eba4-5102-9f16-bcfd-d74cbe6ca63c,2550913315,10227059945788389003
+d93fce28-8b39-52e4-9ad5-a53d16b3fc13,3039803117,13260341500166922020
+9f67930b-6665-63af-7179-3b8e10489753,4164503720,5623622623091269655
+2e9f3ca3-05b9-fbd0-534b-a6e23ea2731f,435351392,9853369858880064268
+08fd9b97-ad27-b0ea-3872-bec289d40901,3769686762,15852942721131990520
+366242bc-992e-3ba3-1886-fffdbe4ca217,1753313123,1039740898674840720
+0b21aa54-3948-5511-96f0-1ffb72e302d7,2322831510,17172617121792951009
+182a12b0-73ef-efa6-ffde-25af7c43501d,2620572591,16983425014364824064
+a9cbc160-5249-46a1-c329-685b8d5692f2,737438150,18417603942279925263
+1d51ba2f-7333-733d-4d6e-19048170d6b9,2720337433,6234698202364425435
+89b0d511-8b9a-e93c-5f29-3a57afc24ff0,406077498,8213574564357374003
+87f1b9bb-3b51-cee1-471f-08a8eb527dd4,4292341018,9328613339817787967
+18e39098-a1b7-386f-d01e-f9ced6537588,3560585760,6938781148806277264
+218110ee-a277-30bc-6687-2580687a34b2,80578778,4810224477273182414
+83e5b93e-9ecb-33e8-4783-5ed4b5173c88,4209784138,8079051093143644246
+20f72f3f-7bcb-195e-c6a0-05ddf220cb94,399362812,2664166208932564812
+7717c74a-805d-75a7-d1a2-0b258f52f686,804826172,862582768563111845
+a853accd-85b5-a491-cffa-4584f21eabfa,3944500506,15098596184055106587
+411de5fe-2e19-7f44-9d48-2cd4b71c3c60,1314083348,999216587673738847
+e7a6135f-5889-2887-8ef1-f01f86cdb1b0,3195869014,18311273321188649196
+6cf2e3d6-d679-8247-0e6b-7636038f8991,2588238576,10625835857008987596
+55545bff-546d-67e1-86e8-83972e728058,545906255,12354966358304193321
+d7e2e2c4-34fc-6d7f-d976-c4b4b6b11699,4050428078,10927820086387137248
+9fbaef68-203e-3e74-21c8-faba2ee07860,3233069026,15598756337055671961
+bf2125ea-b8e7-71c9-19e0-3b80cd237fd7,2577889350,545271720637115202
+81a5d5a1-a152-3424-0fe2-667228335877,1469600621,14080869238876503164
+c3ba40f4-3591-9935-c793-7b1815897c72,1625556069,5762699165673571797
+a5ae053d-9efc-bc0a-3c91-f0bfab6609fa,4059519649,12326888049398326344
+7567879d-e541-3e7a-5d78-baa8055404f9,3629520159,3861339091219296467
+534d1952-ca67-0b60-ec63-d0c3f8f0ee64,1537719795,2564664752859486406
+79958360-ebef-37da-de5c-008a679670f5,2361355011,10124868831886516329
+e7ee12a2-19b2-135b-f7a2-f68f7937a1f0,2404776642,7690434978676378954
+e9e71ae0-ea83-3970-0e0d-7278d39c0282,1210597544,918105554695011666
+840b15a7-34c5-220f-750e-d08280bf9b6a,613020450,1380995802715222492
+38ff86ac-e204-f232-57b6-ad699a52bb1c,1664799911,9213035706930211897
+69861e01-e567-061a-7072-6dd008e47528,810616331,17446834735238615176
+2def8088-57b1-0481-8f85-bac3c1043444,1607750701,9062788845646948232
+5e94a1e4-1668-a154-8a7f-ebfd390d1b7f,2925761569,3214767242395645833
+a558e9f0-ead9-79b9-c1c8-08002e623fe5,4079594294,14656865933894520339
+9975f85a-929d-e9d2-cdfc-2c2d16c1220f,2939430267,1060428388376848816
+991fbfac-6ed6-8f0d-6ce6-8749fc1c1e33,2932374900,2406730564472966008
+81757e0a-397d-ac60-3e5c-b1bd1b6335aa,3122014454,12108711756675874856
+1e1b112d-6d41-6a9f-753d-ac4e0b668b04,2591649902,16875905137903352094
+1d68da3d-0859-5a79-337f-3e3eb88ec919,1120221553,2209127482087513717
+ec955277-d6b3-e201-8084-35beff629fac,1140589760,6405647541468100866
+02b1f5b1-fe7e-8361-3220-0af7dce05f8d,1810302168,14771053181575561184
+a0eda62b-8881-3479-fa9e-57ab351e2046,4022526083,14988937223269321695
+8f7e2932-a967-3944-461f-1cc397867c16,393906534,4807891015818796316
+d3923360-ed1f-71ca-4d70-8dc9a7d1819d,2080327650,13780589295667323290
+29ff4a8c-d8d6-8dd6-8f80-0cf429af7fa5,1574872005,1793870087247026260
+5178c2c8-4182-59da-0189-933c26417592,2917413269,6258983584183805661
+e37621a5-c086-16a2-ce30-5ddbc8dc09dd,1105641813,290578620322497765
+3f3cac8e-5036-8dde-c9f7-9d5d7c009976,153118793,15150770247996571338
+2572e120-d000-edd1-1c4d-73538a64a028,3498871563,7682726973531122949
+1574939e-9234-4da3-754b-bda38792abe0,2846246713,13809865085071789958
+920e0f1d-4318-b7f0-04f3-51c1e02edb5d,3673366109,15644857572837129357
+de59869b-0526-cf14-8641-abfc328e6f01,2248786595,11046115767375102073
+e6b9c7e4-8077-dd3a-43f1-58957f2e7c5a,3347318708,10809204959485177005
+6f326afb-09b9-ff52-4033-a1baa15d5461,3273071005,16613864284887777923
+2b6a42ad-ae2c-cbb7-c150-dbd4ee24bcac,2517368395,189220957258102570
+491c44c6-cfc6-2463-d98f-7ee6eb889205,105845394,8363754747385718149
+6503c320-7baa-1f9e-8ba2-b8bcd25c5fb2,3843481138,8195421467252302035
+956e0843-85db-7f65-52c9-10ab9988783d,4051690896,1242327290926682332
+bdb20419-f128-d729-df4a-e140927a624a,3595150227,12883959678427041096
+9ccea798-54c0-2eec-0426-6fcded270a19,3046611361,838978915483782626
+6c0a1415-a085-a783-1c75-3fa9d7a1b6be,3773151747,1725926003599797221
+fd369527-5ab7-8a64-8a2a-2c0a69161ab4,4142251376,7373674943565753503
+6ccac078-b834-08b1-7924-3c538ea4c89d,4024363465,5326626590237657052
+5693e9cd-052b-eaeb-f79c-29740c425372,344895329,9632336708615481667
+e751ddae-30f2-71c5-14de-971e290ca095,357339512,9294288089022726804
+c795e9c0-dacf-4406-d2eb-78620a5b9c63,2805342400,9011784235492995945
+e1b6cf2a-c1c8-c1ee-f3de-5c0d411670fe,2527736376,2923764097188604036
+9e39a283-3c03-4bbb-ccfd-a2a082ec2071,3837861692,15749700583026107716
+ea80eff0-998a-60fa-cd59-39edd2d0762a,3103620009,9739535576171013322
+245e73bd-18b4-d8c5-85ff-bc765f96fa8b,2766707395,481248816444273231
+14ff002f-b883-60b5-dd2f-697a229361b6,776537977,1345152190449734338
+6152b9c4-2940-0431-0a59-c2276fa995a7,500383805,11674733304243776897
+8d02f26a-c8ce-31b9-1c72-b69ca2483180,2878367614,4663783427740443510
+05c5d513-3c50-c5fb-f117-8e904492545c,3889848055,17317075987722882506
+db6891ed-e6ef-f622-2b16-7f51d4a7363e,3954415189,4579602559021488658
+e3b51bae-48d8-ed36-7045-90ec77315a3e,4127880176,10273226069005054929
+c6db6313-92c3-70a4-15b7-6ab80826f1b6,2226116112,797512045051139598
+1ef09713-3bbd-460e-333d-3de82f3ee7c6,403990253,4087824110694389076
+4675b5c7-fbb1-7106-0133-208b98955b7d,3317896352,9803812362674291776
+62ac2c78-d55e-8811-02a5-d7266f46ac3c,4199850476,2760911684181912979
+a92039ae-c5ca-e3e2-ef5b-59d388923717,3655148566,1610159132830486137
+84966cf7-b42f-2671-b879-bfdbb5fb0133,1758237944,3987090815190362644
+db007c67-a01a-d579-b176-8398f2fb6e4e,4113379746,2418483782237112743
+42a79d76-631b-e09e-a906-1018d99921fe,844657584,18168858551501753070
+db79a028-c024-efc2-67b0-0fea74b1bb87,1981220910,14978107735122403894
+8633760d-3789-8227-2b43-06c5ed37d28a,3653798580,4281908442433809303
+c26b5be5-1495-9f6f-c617-25427392e56c,2646437151,2300638267482114779
+0bc1940d-0dfb-cb27-506e-65e22866ba77,3956918619,5952954961598227670
+39b02164-6672-d385-34e3-efffd0334837,4071963996,3351837010260068065
+16a6b9bc-cfe6-ec89-cfb1-5e62ad7968f4,1402895002,10294788030508486340
+c8d2efad-6bfa-ff82-9c50-dcbfcea4cf2f,273175335,6702696427586035175
+0b939a46-21e2-8262-188b-6ccd6370894c,3932613197,3962927018278347898
+d6535dee-88ac-6fbf-28bd-df2a6d8dd0cc,1770296977,581890543494297728
+9d7b9dbb-9903-c356-257c-1c5eb73986f7,2976871221,12206538386068051195
+1d70a22a-3c21-a89f-1fb3-efafd034a36e,416396169,12617751905585882289
+88c6c7d2-0f0a-0f6f-5f07-bde14ff63223,4115414044,16691998643502192955
+1506e809-0d65-c213-0737-9c4736c28923,149635981,17684903272674655196
+6fa1da92-a586-d5aa-0cd9-68ef6741a973,1579570609,15972392461162535223
+9f0b5890-01e3-a168-8532-6871b165834a,1432916448,17814659968050939728
+870c78db-69de-aa91-1537-3b4082d8e3f6,3141541393,1701651743066662630
+c6a08445-cf8b-49bf-c10a-4f2aeb2fb135,2638173575,8446935571310806251
+a4e7c34a-8898-6d76-e69a-752823eaee32,132080863,15737411088722658985
+ee8fbe9f-5cec-43cd-c65b-6ca2e3a622aa,2967683322,413815293078003695
+c5eed66a-5919-a5ff-a434-e962de3b0602,3129973824,14558157392188356266
+aaf4d7dc-71fb-f597-308d-70eb78b518b8,1681550028,2358413114830634706
+caa954e7-36bb-2b4f-bfaa-78a04c5747c0,2504817807,2286228479868810138
+dc0db55a-1418-5076-fba5-89c3f9ba4de6,2996020086,16809272833009160891
+55b1dd4c-ef2f-9b33-8859-2a1e8acc2a9b,1740363312,14468558400760034380
+4efab2d1-2704-0d3a-dfa0-eea488a41885,1658020418,3170386787132196080
+f3b2fe87-b362-a1bc-ca27-65e80bc58734,2286957128,4758028279759603491
+9ed77f98-7ac1-53df-26ac-10a702bb7d6f,1653681242,4400905140551894334
+2b1237cf-d629-77e5-8463-8915778b38f7,70745704,16981817448991609658
+3e4f8a54-fa81-47ae-73f5-ec788891373f,2787347481,18200024250324130662
+63913e8f-2674-6b16-de3a-c866cd8af5fc,3499807352,1376330256392676542
+00914a4a-b295-ab6d-a54b-1884dd71aa1b,207330084,16138489536576398942
+d8047d4d-2acb-8895-08b1-91fddd4b59da,1962041272,2623227496109407280
+d2807f4d-30bc-1a7d-8540-265661d47d40,3150906832,3956152345724091709
+d4831684-cf8a-9247-9dc2-f11cd3b6db03,4113840696,9824842467823428059
+b41014f7-287e-906d-9301-c8baeb5a6f2a,2176069205,1983615445878606071
+2997adcb-95a4-a66f-7cb7-6eb36627ef6e,2763897348,4560544505597282626
+bc5c9170-ba8d-288e-9a31-6eb3eb35dd71,3173790901,4767815858568684703
+665a9d95-6fa2-d6eb-082a-9a3a67a1f4e6,1945709819,14840330693513789796
+e419dab6-7c5b-f149-c9ef-e365f9caa073,3592883128,3113478737840084485
+d65bda19-7b8a-a87f-d316-a8c6e1950d6f,2798158317,2012710821114113927
+0e330722-59ad-7688-93fa-03b259dea29f,2450154118,5282139824453335655
+8a9c844a-e29b-e5d4-e699-2bcfb871beab,2807318227,7885390607380309457
+1cee8502-3e38-3e10-d7bc-ba234e71f33c,2078364062,13348446281412866690
+01e839ea-3f97-91ef-b5bc-a859e75e1370,1397207496,12701638354278164553
+8d9e56db-b846-ecfa-87d2-bd8189680dde,4274812968,13491853671856662797
+9c3acd25-1fe6-f7b8-d2da-e8f83b19401f,1378212166,12462194863543840709
+05190bae-630d-6b25-8e53-03672a729689,3661442204,10992873193738471509
+c530a484-2f67-0c40-ac50-033e5735bc11,4124743121,11552725181754474414
+d0239885-81af-e620-88a6-4aae26da2c38,2405846844,3626628843989704168
+5a9726b4-1e0e-27c0-2b7c-4bc99a6b77c1,4117497342,410202156899809555
+11caafb9-86e6-d29e-0c86-f252352fe963,4173546988,4752485003245022250
+f24a3439-0efa-8237-ac8f-e7d8bd008b1d,3353108253,5633710638277985371
+9670a88a-624c-edcd-c8ed-80604b851309,3653380341,6595103100436316074
+2eafc533-540f-e407-01b8-83da295a9504,3076472539,387807267569370129
+9534196f-a198-cbca-eeab-eac675261914,837393118,12844275329950284410
+3576be7a-7b55-b731-ec7b-3ab985d8b8b2,3122023999,12588435429202915428
+b6027fc5-f5e6-b11c-6b44-92c3d8ac78ec,683091889,15592232873057195398
+bbdb27ad-b913-ed8d-fe15-9db1431d556a,1993139913,10887733671009976469
+3cb4bbee-3c85-4d19-36b1-03c681a985d1,2986240272,4626847201969999075
+376b2360-7d65-043b-cba5-425bbcde0061,3753216222,8868073405799956567
+d2ff0c6a-e550-d736-217e-957199884dc8,4149236071,8817171500092723479
+5bd251c5-6939-78af-d421-52a565085365,1874255397,10435666414433442367
+9c6ea528-15be-0c11-ff5e-310534e669fe,2725991620,4393787421723861105
+8843773e-331b-633f-e678-02631d4f4117,1243384913,15379464127676930085
+cee474ae-cdf8-b3c1-1e9c-4cd855e60ba9,3787347211,10085601161978657022
+933bf9cb-9fd8-87d7-6536-670f85db9626,3016360667,13609096290387096132
+39f83e34-2a8b-013c-4b20-b09fbfb56b43,2487338671,17377078710667763958
+eaf8ecf4-edc9-048e-c1ee-167f743a7f46,2612091671,5343797284420906167
+b07df1a4-3682-f4ac-383d-fb4f31210c1d,152610200,654009864501641766
+c79120d3-6ce6-b919-5199-bf36ad87715d,1915356256,13280412847398420386
+1d75bfad-f6f9-62a2-9582-62674f79bec6,3531042253,3307157065799082606
+fe53428e-9231-de45-cf1b-e118fe3c9ba0,3039443742,9292871872522700588
+da3e1f16-36a4-05ce-4f56-9fec7d7fab00,2832400496,3794899255355689202
+a7b713e1-8d54-2517-44c5-37e8198444b0,2525030038,1987214835317854338
+1cbebe16-9358-d13d-abca-d6e350b9ddcc,3580695292,15909253602234334768
+0bcf1497-2b8d-e0e0-4954-2d0832a9d332,3782907941,2106028775355955462
+0515e5e2-012f-f0ba-7617-cce316b79f31,3605933411,2279833114417493988
+0b7f4a6f-9d93-4901-68eb-c075ba2e5713,1454503674,7451313273557367447
+8f3ce5aa-72c2-be20-704a-b3729621e397,3635079207,6157850312646699572
+50c94a3b-c1d6-0eff-7c7a-dda56288eea2,1594895839,18402776217657577224
+7690a7d5-f17a-0d78-ab1e-d7b9978aa514,3653997670,8299852900704700693
+73129ebf-296a-e1ca-347a-dcc6b1b79461,473037620,14480978232736683072
+6d62c6ec-e214-ef81-5e7c-8fc50d74852d,4267591964,15412065021474994783
+48275a29-929c-0b64-bb22-1ee563a4cf77,456815162,17350427848201818141
+ae48b515-5ce3-8d58-3191-cf5d1df6f119,3879923264,5160425932649798021
+e00ad754-8eb2-060e-0a36-eebc13ff9fce,967070968,7356841266429663270
+e65d7336-385f-c13f-59df-c5927b527c92,3506179420,7513601298305712356
+8c8559c6-60fe-b519-3ba2-a7a8f9ea1a3f,4247065826,8692300307625988740
+7432f995-6e24-278e-b793-d829dce9af08,3761651272,6762061057373762922
+a83b9270-855a-818f-63b8-50d198b6d246,2342277696,13239699479425893641
+4a61dfa7-ee75-e39c-6a41-1b05a0fc693e,1895809320,12212096411566104741
+6328b07b-d7c4-f229-0cff-c17fc5d38a82,1571791120,1145989945564585149
+cb0fa1e1-46f6-ecfa-b5bb-650530dbe48d,2330426972,2707902361177721272
+4c8ca2f8-22a4-ebad-e321-34387bc44f87,1963825610,15621858262055748249
+f59fe9b3-3052-8ed8-acde-ee4ae4b2fc75,849237555,14287924432193613602
+88b9f5f0-107a-3ac9-c299-83c1362ca373,942353985,9294426515238213440
+afd603de-fc14-ac4f-23b8-2c2338072827,3058086982,714727118290864633
+415191c9-0edc-a489-a514-cfcd39201498,3635432438,14161629459816110237
+489beb89-fff0-2dcf-1188-3c99e3bd8bb4,396392179,14505331646455437822
+335e3d65-0e1d-40e9-93f3-13b4eb9ca037,1687052685,3454626801462953826
+06507660-0785-1f27-4188-fa026698353b,3384354669,2418741785602048626
+0a2ce0ec-b2e6-ccf1-4c00-bbb52026f859,3244024045,4516046656079630462
+efb72de7-62b9-db34-f19b-52f7c35cba9a,3713083865,1788307488818265838
+9464aa73-2656-a6e5-c7f6-43f8773c51fc,1144467704,7686774865941425434
+c5b66f5c-96a8-2c96-18b5-a9a8871cb42a,3301435123,9569798945084425701
+049be80f-66b3-2bee-748b-c6bcd15052f1,1515705395,17460709910905067104
+8667bdff-d375-a50e-d9d1-440d746e8c7c,849802101,10813942089783809121
+2e1546fe-1b2c-bdd0-45bd-7f90af0718f8,3678526636,12335178938010224904
+ef397552-8016-aaf5-2e58-e6d63b951775,4074080560,14848314935852824250
+3a1fa374-eaea-9ef8-f952-62aa91fc8701,1648658693,15510292170654900810
+f161631f-f719-8dfe-f6e5-a6c4effa3de1,2618111719,7262804742290017297
+a8c884f3-b4c3-fbd5-3bf1-30cb8d161a86,1112527894,141362169699030191
+2545c5a1-9b70-a7b7-0ecc-7c8641fe605c,421690089,10413117827866950180
+e69e1cc1-3670-5724-b5e0-13c8452551a7,1234385478,4844479425309361833
+f299a5ea-4407-f320-9014-592c0aec663b,1054287981,11488885332727493723
+fb9ca716-c359-88d0-f1ac-9407edef2e4d,837324510,5300887796930769449
+2eabbd3a-ce8d-58a6-2159-94c639c77e25,3604761598,15316740544707571343
+f468feed-f5ba-47f3-9288-0648c49e3e3c,1411234266,15842239661221894461
+8650318e-84cb-a37e-c563-3ffcc641883c,1685298510,7435366321737344109
+6f5df621-2d57-621d-da7f-802b6a117f7b,1258861194,5332444465365903006
+6e2d8573-64f5-f389-cde8-ccad5553b1ec,2956255492,8668528751100763010
+68a57a85-79e5-c825-1bfd-3d8046cfbf35,586283285,7719727090346927662
+00783f95-bf27-cedd-5a20-5051f8069a5b,3005950977,13620647768479926573
+8170f942-58e4-fe04-9946-c4d4f7985399,1526386042,3848735134050995655
+f28886bd-54d8-51d3-f432-637c5a79170f,3388538526,992819659570905390
+6c20cfb9-5859-d753-6e42-ade8796157bc,2580636847,9453427501132644658
+c3f297e5-caa6-7a42-3dce-23b2befb343e,2477762432,9783924986790134014
+8ba75b79-1b1f-79de-16f4-477e16b60d3a,841431274,16417630955737029009
+0c0eedc3-5f27-694a-3660-bdb47d40085c,3255660578,9844082069167587970
+2bdf41f6-3bc8-83c5-7b67-6fdb27f80fd7,4237826918,2784956688940822164
+fa2e6327-b2e9-f9e9-92e2-e45d86a7bc4d,3185025541,113751286887100819
+041274e1-d7f8-1ea8-dfc5-863c4b1d8dcc,2515954339,9884173402032069222
+c595fc1e-f84b-a350-691a-00ac686d2bc9,2533387732,15737201656193071477
+31276886-bab8-9b22-a3e8-02d7f320b8f6,3277461488,12167469239554567890
+950bfabc-b9e4-ef41-7556-ed3476621886,3723785322,12546899752119485473
+bdde4f47-13f2-0c7d-c631-e471406315da,3267170295,5067683473981270271
+12979238-b628-6a26-25b4-9edc5a0541cf,3152818666,1462244505503261799
+9ee29329-c136-b872-46db-2322ee8d73bf,3186074682,11510345234046608521
+598a2d57-b3be-eb5c-45bf-18ce5583c8cb,1291609102,15747952453574472720
+ad1558d5-8287-c1b4-70ce-ffec65fde732,3709816828,16936198778704431351
+fad3d9b0-290c-dcbb-74ba-b32957620754,2498463771,14676606407779238534
+6d0855c0-8538-8fc7-97a1-803722240794,3676586785,2815889482818776779
+5633f287-987a-f116-1de2-2376bae446e3,3602837948,5875217316302456627
+a048f670-0699-9587-9acb-21476d27b8ec,882571859,2543385409772666016
+408dce5d-2f4b-8287-848b-7b8ba81cc274,3483169749,5919132296899208993
+23d39b4c-a064-ea32-3d23-72afc303ec0f,2872205977,686066816748705299
+5a16ab4e-0318-a8f7-60aa-2c39297419a9,3955516082,2136323273530529374
+05cd09f1-c196-03b0-e4fc-7689e6286383,2625647365,16576372532054669481
+74906d91-ad39-a03e-94cc-6d1cb3b72b4e,3532892230,4505674544089976004
+8b22814c-4026-6da6-cdca-ec1ada395c43,2442464557,16867245089145261414
+4ebde5fb-12eb-e432-e402-150861665289,322728132,11135987802171127350
+dc46cf85-b067-0b5c-d967-4ac9d56a4f1b,1413847431,2464700616820153840
+0466a9ae-4722-8a89-aa71-c0fc392bd35f,1477343043,10128573783199462569
+179f1b8e-3e87-7ea9-4252-8445ca424f7d,3944337897,13389758192534199996
+7c8bdc54-ea37-f353-4941-947266963fc5,1747258566,8109848590982136931
+da91fd63-39e7-e3db-7d54-98a0ac53ab62,1969122668,9643908243616263576
+7ebe5955-cd8c-c6df-7c4a-e20cb98f20ab,2629081817,8887194321587614923
+6b071ee2-4b4e-6b31-2d2c-676508970dfd,3230428745,3630021716421308099
+23fa5384-a144-8b6d-7e85-1d130603857a,4172784876,1287800165721209128
+f48d54c3-fa4d-1969-9965-14af820bec03,3533949675,12298366966455665542
+6cb4b91b-b236-84cf-a725-8248170bf129,2484837713,585009184634549631
+16fce541-9f95-f90e-ef3a-a1a6af83fa6a,3994773879,16182806519369496470
+0033d1b7-8190-d850-da2e-7daf5bce25b8,2539781208,15445777671205863298
+ebb34886-bd23-4277-6f45-ecc0a03fe8ea,1831548220,15393462427333868621
+9552059a-0ce3-fe93-081a-49dc788d697c,2387892501,18295173296713862583
+553d4aca-032a-aab2-8ea9-885c877eb914,377083750,6929574171555586083
+3aaa3c2e-6b43-fde1-04f1-93c089481082,554220837,15682294094940517119
+634fdbc0-5830-1b44-1bb2-8cb4c52e435e,1145597554,3003175090444651112
+7bf0f16a-3537-f3d5-459d-7d569536ffc2,4103641632,7583506022540788502
+c7c53fc4-9703-ac78-d7c3-f5e477d943d3,724974133,11854306983966672389
+854d4158-c9f8-6a8c-5121-6cd9d9ea65c7,3595503978,13413933174059242083
+ff863efd-f541-96fe-4b32-c5bd0a8221aa,390954590,16540458580901729803
+9f9ccd71-477a-5cde-3783-5c1810f4848c,3913652260,7298166976662322829
+14c14753-0e42-a109-ff85-46aa880bc6c4,1074736015,15188657835737123404
+a44ce9d7-7745-8559-8ee4-8fedfda176f8,1207003883,8457695392579666163
+2fe683f1-a019-4363-8a72-0e514a38b922,250372361,3245652708662852345
+d867e606-e4f5-efce-0e61-90a6189fb4aa,3373596243,10445787888344852377
+a84c6796-1975-f907-1868-c072208901a9,4212137860,7521686955820103184
+95799a60-8d7f-3ea1-dc99-19b0e7023010,2988864607,1079412183976004730
+0b37b542-8e0b-066b-b1b8-4a4cc9cb3737,1650128921,11257084144695023036
+9443c18b-d371-c8a1-2aa7-67b4bf71b3bd,4007769401,16524788880739370118
+5e8b1305-39c3-f703-939e-21c2e1609da2,1448289161,4669312484540979416
+9e455ad0-8bc0-ea4a-d3d3-6a948448ae71,469959645,6567438154489181872
+77c2731a-048c-df33-fd50-9ff80dd1d05d,3584304604,6922560206828842920
+1f08fa95-8c7b-72b7-29c8-00e5b4d16d9f,1740241841,8363661046714454706
+7780f98b-897d-1de5-643d-ecaf276ed659,2693978258,5565424016288817407
+bfbb39aa-d96e-cf5f-770d-325c972c6fbd,475041921,187370993671602756
+08ff5380-7ae3-f247-de8c-680450553694,977825049,9213284537145743981
+e175ef14-0f42-9f48-1807-988d93852f43,1836586639,2541107392056016028
+a0ddd0b4-5abb-ef68-9542-1910ae543573,160163739,18285821413518061497
+e441bf49-4355-9a56-4403-8db467f0f360,3267447784,2787577615920167671
+7ddf258b-5dbb-2c4e-e10d-122b2900eb4c,3905147378,5247733768097549161
+bbf16d22-19f4-3247-98cd-9c4d377cb3e4,3947244871,18195274776713418510
+0f608d30-03c4-a616-4f4c-990fc5b394b9,1727756383,312719648364980849
+fa820ff8-3a71-f87c-4297-15d1382b6522,320362596,8980312832969771930
+c2223b7a-9bb0-ac97-0dfb-74c29a8e5374,1708301460,461596419022555503
+05a5c1ba-fee4-c4b7-e713-e422a22eb357,3562209448,9283069906240336380
+da4efe1c-69e3-33e9-b226-b7240d18e4b3,4151261784,15005053008544048733
+0ae903e3-57b0-b242-995e-64a4e224607e,1993263116,239668267419892542
+48f1eda0-d025-1abb-c8d2-e28b3699b346,3990138885,11078598132974077892
+ecb71666-bba8-89cf-26e8-c9650c64ed4e,1569820958,16147435101387767554
+5a861414-0677-e75b-3694-dafedafb3a5b,690164605,17898227968262175598
+6719c467-fd57-d1d1-7124-36ce20781213,2481050417,8356571677642559599
+4d0773ac-f639-8cf4-1797-91a2f3fe5d3b,4212054214,5516184769466435869
+e764f167-9def-325c-63be-5feb8c9de109,603402596,13975551337487822235
+e38746a0-3b89-6957-282a-6271a7501ce8,901205886,16649199825156524444
+d7b9a9b8-87b2-46aa-9984-cfbbaf189151,665377628,1276264701822209176
+9ad042d2-2b73-1d1c-0054-51da5a0708e7,3124310321,4583981671426294958
+0131a564-1360-935f-bd42-7b8827f25a2b,3477337591,10620079404653373893
+734a6899-e21b-6faf-f448-7f2d73b1295d,3493868118,6503586850299351519
+0e7abb4e-d730-9174-c651-258965571ea7,2244396642,2115197461134504939
+f1b0b8a5-ca67-c270-cc2f-1250cb2ba018,2952472049,1213302722729835366
+3d034451-73d2-dd1a-0620-ee3d6be81937,3336568690,14973795946502207332
+5e60195a-b4b7-e964-21fc-4983f44546cc,2557651074,4778432175584947691
+2c43b706-7c1d-8ba0-2868-d9fd598ff6a6,759925717,9084872350838125431
+7d210f09-3107-2ec3-7468-55e2b8abe69c,2397136536,18365876914052899968
+87ce2ebd-a764-2817-6cb7-b19f091ec35a,1514544089,3877114008132910578
+fa54582f-0a05-86fc-aa9f-19e98b2ff643,2892074293,16534954828147951963
+fbef38c8-b8ce-c76b-f744-d8afaa33811c,2963084700,9971886592099195942
+894a81a7-7a26-009d-d135-df00a66b6c38,2255296411,5403755729028301527
+968cbae7-9ef4-734f-7ab9-84177d15b674,3205441207,10153763063157680978
+fe285cdc-6de3-9ab9-a309-7656e4b85f2e,3035456737,2550639767965238073
+c14a5112-9b1b-fe97-c61b-a90810daddf9,2966735538,10025299976235275626
+458e2435-95c6-9bf7-7558-47dd686d0933,1055184666,8079855894750259779
+6ee1a7cb-6a42-0940-4a1d-c03ccd7b78a3,2681265662,13133102552202087774
+31929c48-090a-ab6e-e6c8-ca7f935cf330,4294474491,11306997044584875887
+e625cc4e-a352-9fbe-e98e-9c3c13fb44bd,3171029562,3942284983472123151
+2ef77367-706c-61f1-59d3-3ff0d42a628b,4017155239,16644190569999708725
+b87047e8-4601-0e8b-dc99-b2c406876582,674026924,5603325207555059325
+2032e7b3-86ad-f7b9-cb0f-8061d9b782ea,2083405972,4670350314230223681
+8eef05f1-aef0-09c0-e7a6-ec9aa2268708,261650927,17034711120933254393
+ba3beb88-e2dc-debe-7596-823bbe48158b,61553903,299402139684258217
+403015a7-2163-e1f7-464c-94a0d6d33b73,1507927461,5456781928825281671
+9c277557-47df-f5a0-3738-499cf974ccbc,1305406268,16904331657246530572
+9b739e60-5729-d375-bdef-0df64da61037,4245069115,13541222797277295821
+4d3df47f-4084-73de-03e8-73b3062326ce,533831747,2413678620657897073
+19518d1f-9a30-86b9-d752-f7753bf50c2a,4138666335,11757574836397611789
+1a0c6841-9cc1-6d4f-9ee8-0fcaf1bb45d0,1199404793,6014223296253953861
+fe25d6c2-a18e-435f-1e1b-f382dbc4e5d3,1573702646,4251515537326228824
+2c49da95-9103-df5f-9391-a8228ac81061,982896891,10401079284792242594
+0e3396df-1a5c-661a-cdeb-5252c43abe36,2858637966,13462624134808523661
+f91e0069-83e1-ebfc-b6f8-1f3a76868d61,1055865902,10636887878173450556
+d6d6a7f6-678e-802e-0c4d-10c2c022a46c,822994530,469821373430992464
+f3cde16f-ca9d-cc77-d831-c5d53906c8d4,2737220722,17683130854651202705
+7621aaea-8004-fe1b-b7f8-7000db896d6e,2374456113,13767936842113734985
+9ccf1a73-481d-b267-d8db-a5d77e476b65,834237807,4906763798375843368
+2a963e66-4f63-3af4-a6a6-87c10df9176c,3907075598,8774032370937419781
+cdb23821-639f-d688-2377-b3a856c12ca1,1600411860,10433030783094054457
+1db3f30e-0598-4769-e42b-a04f63257d40,308397881,6009343032131343700
+54b60d57-3f94-dd88-7d61-b8864e0e5c25,1414236698,559339494275667959
+1d32480b-a24f-dc8f-204c-d982015914a2,1603296108,750575680967461724
+9930a758-c414-f73f-f6d5-40043cae6dc3,1155681144,2645610706163495104
+9dc47414-42cd-53e9-31d5-31af1d755e82,2059250005,2067772991462174934
+a19266e7-c9cf-c857-b367-7bd01d2d8f3c,1181937471,3248234849414327948
+fdf3692a-dc40-81b5-0b17-cec5f4d4acc5,155643670,4546955275649959372
+2a5fbfb0-47bb-8c5a-f048-b11f5faf7bbe,3523998651,16249171485618162020
+5d6aa932-f596-1138-5f88-29e9cec9c590,1523159975,6621444073779805623
+d5f24984-1059-495c-67c6-914c067912c2,3719888364,10657418014815680569
+546e1475-8fca-7f59-b9da-55a7e09b655f,2971612636,17186306018261056576
+a9596793-bd99-2103-3ded-128ae7b5947c,2838967356,13390317898562721111
+cc51d390-85b9-fa44-fb33-fcc17f0ad7a8,2563382808,7990445873840419885
+93a05e61-a1ce-d95b-773d-79857943d55e,3591729957,1328248224365488180
+717f2454-e499-9c90-e29d-149281de188c,3201134244,11977637661283721907
+7c10ad44-eb64-221d-9976-c052d2fb846a,177015679,14246518626424988340
+12723741-2332-a0db-54a5-110db6bbb032,652878874,15856256305022501010
+4364f86e-0475-171f-56e4-3ba4a71d6a81,775524953,6601179132375982102
+2c903b7f-0abe-b1aa-6ce5-dcdd0189a844,874141200,285381244781091420
+8c6282fe-0de9-4305-a14a-334593d7c0d3,1647610536,16829740754352241815
+fcb910f7-5fb6-eaab-712c-4264f4040084,2117911616,17521479879630567870
+0aaed2c2-ce74-0eab-0679-21a8a87c83bb,203689825,4875539623745967298
+d162632e-b3d7-9efa-01f9-43de4c3d502a,1903296829,3260587281130055382
+fa1da176-2f0d-1246-1c81-b654f59f9d8e,1319299962,8150688837219697084
+09602202-ee4a-6ccc-1363-502d03ea27d7,2551720536,3006294862584487118
+60ce495a-35f9-7f5e-3e83-f1d28323dce4,2921488119,10609540995833565795
+be3ea32a-244c-5fa7-82f4-4113e2912125,1793869300,7009959623208323830
+84cb4209-34b8-2a80-7b72-90b0777ac293,3604386513,217302797765596858
+f698480c-a6a9-ff44-a83c-d1bee38854a5,253932204,2972676849284643915
+c8713e87-b245-d4a8-7639-f5c066536b0f,3530056363,3762282586917344704
+d3fe98ea-82d6-d5f1-7152-7cd905411820,4002153164,8781736674863678511
+a5333b1f-f070-ba6d-8bd7-220c83376329,3455677089,224067956352852921
+f5a68bd1-5c49-e0d9-3a72-da4ee29e35c8,3699759745,10082527228752529577
+4d0098c1-3bde-f3bf-9c71-0ac82fcd5c97,926704336,17911228303025851441
+064b3113-a8cc-919a-d62b-708c7af73fb6,2112231621,18273332715833575787
+03f5c456-adc4-dc3e-758b-8e0d6d973cc5,2862074455,13367898675418735453
+4c5dd214-a9fd-981f-dada-4fb6b350a39f,3872505580,919765898897104273
+8c3939e8-21c3-06c5-97cb-3ab9bf9ffccf,3862543854,8749603662829223730
+5b69e572-28fe-67cb-a1db-ae8939b37d5d,141912769,55220980116336635
+9b55fe6f-8489-52fd-6072-97b532e8b844,719000957,3396874130142239821
+7df892ca-625b-2481-0fd3-a0b06f6ecd12,694489833,12546205062044933082
+d4975990-516c-eaa3-8549-b19ec8ff341c,3771137285,5873116127958509479
+501a78e9-839d-275e-738a-cb04046a995c,1724355886,117304606357774603
+f51cae74-8124-0a01-41b4-d7eade33fae4,1720002840,960520361827058992
+67e8d5d1-8c66-9bfc-bab5-e73328e082ad,1601301146,15725785314463021024
+f8be90c2-b921-54c0-b50d-1b10d8415788,3603096404,6968832224904915907
+26fb6455-65db-7cfd-10ee-cdcd9e161c2b,1680223314,12260842077094733195
+32413e42-3196-8d14-1dba-686ded817dd1,133857309,1759227616512799721
+fb4d3ff7-3ca3-bfb3-5300-16438016356b,894800137,14334008782824214322
+9c4065bf-be44-4129-cb90-800013f2e36d,2865816639,8587737233165112395
+8026285f-bece-a533-ee46-ea6f82069e82,2745747759,4511069110788990635
+5d34220f-8176-72aa-3724-8d335a278a9b,394022493,14807947093742751353
+188769d9-5fa0-90d5-b762-4459749ddacc,3147304333,5672738218117358965
+4338d52b-d98b-7d53-e90e-b8046fdffe9d,3736991141,1456334624009291033
+10e42d5b-be45-0b96-8db1-b2f9ffd4b64e,771854633,8467261947542196017
+226ec53a-79e2-ed94-844d-940e932fabf8,4155782956,12336756409120493423
+b3cc9ba9-dc25-96ce-50d2-f306f73620fe,3046141511,1762485061286397081
+99db9e42-1e0a-8a10-6ca8-813007268df7,2505847865,3860605486589809445
+ed07b541-7b02-79be-e47f-d5639505b289,554470310,10985757997721934976
+2f3f554b-2010-6e43-ba84-015b1a21a998,1660255518,14856607861494069051
+726bc554-089e-d588-21e8-f5e182eb6ee2,1102469991,3957257421664534129
+3b83297b-ed87-fa8c-98d1-2591a7d7d65c,2840995604,2059424815800333669
+5428e032-e1bc-b0dd-b2e4-cdea0323ba19,3605132359,16559996758168225763
+2569f0ad-cdd0-2e85-10c3-1dbbb43c69bb,3594401256,18039500490012675533
+1ebc8b35-a445-1b43-0108-ff8fb89a3f73,2396228151,1996013575300254555
+cecd603e-6cf6-7ac5-a1eb-b4cacc5f6e1d,4266612295,5052405777026299172
+b83b33ac-bb03-8043-9201-f5621793eaea,1088092187,17426948582276750751
+c142519c-eb4b-9abf-528a-df89d702aa6a,2619942167,13275295970245399600
+d09f5437-fd62-b1ef-38e9-e193e0f1fd7a,3433928036,2851365307771598677
+a13db40c-b627-4ea9-9817-11f6c61b46c3,3979792182,8212927901631435972
+81525590-bfd4-5eaf-31d8-3a17f9a12348,1899951351,6067074418313750791
+11d2b391-02c9-3be0-5748-ff5f7723b2da,3356046824,7649765610342784781
+775647a1-1910-f928-8f15-27467ea7b599,2136979852,12692977754182170970
+6e84e69e-d0e2-ad26-7933-5f31a5661a23,646232358,39867533813866982
+f3061fbf-4063-0dea-6690-76e9cf1d5ba2,1756719296,11746039345887819993
+867d3de5-ea51-0fa5-3383-24bf9c80b89d,2953695363,14168174974654305295
+dc31c82e-9012-dd08-54af-dda58e3a6043,3338327723,10215989837263737000
+fc9f858c-3f3d-4f17-4ed6-0265102e46d4,1199258557,7207956787573802071
+3bbfcfa9-d58a-37e6-b5c4-44d434c67277,2741127571,2236210617373546098
+6ac13532-4320-75a1-dcea-3f4d30c47aa8,1275353792,14707098402469984495
+8a96a9b0-346b-3ae4-08ed-410df77f6834,2082432432,12649798987545821443
+1e2f4f41-ccd7-2001-6d04-ce763144ae30,3399381678,12285103468098001036
+991e2da9-c51a-1df7-4d14-ffbde0aff22f,496854365,9237460685599624585
+befeb008-66af-5c30-1636-27aba11d0e1c,889244595,1666932019822274966
+52475e0c-cecf-1f05-42a8-603f777db115,262781131,15363025456562341696
+4e67e9ce-ccae-26be-b13d-00fc3a02a338,2279814747,10272780976016461771
+28e64ce3-05da-66c3-59d3-de7d89670c34,982429486,17544442456808047714
+c8fe88d5-f67f-200e-c0d4-74a2dc120b97,3297593441,6221491482222898635
+a45f3106-e44f-7cb5-edb0-88797c0b2a26,68350918,1198317580984100495
+78d4c5fb-95df-97e2-62ce-99308b1b70c9,1845764488,3569727919267835365
+a9310437-2ca2-aabf-33fe-3a0628687dfa,513661980,4567307924718308118
+484d759e-d301-6088-d35a-cdb8dbb30d20,1559277616,5755000086441902698
+e7885b3a-3a35-ac06-8364-14f574898f3e,655117867,8961138669127108881
+c7ef7995-3b2d-221f-c18c-b7f41ce00818,1814456182,7274917759415372009
+1ae4bb14-36bb-1928-c5f4-2629ac7329e2,3522331271,11336326008934113305
+abe8b5dc-b371-8bd6-cb57-dbcb98feacb3,2078718847,9344610109295748484
+de6f0d69-ecb8-fcd1-85f3-5c24bacbcc59,1732905015,3681543365455451857
+916b8f09-87b6-1c9c-79cf-f8231657738e,3390229328,11177224749053161683
+7a39f313-1505-9f2a-d741-73d146152054,2475339464,2672784913044813248
+f484e59e-fe00-4724-8361-4d07b5890d9f,3992410349,10621620976553637100
+ed2d4604-3e93-885c-32a2-db56ab94f01a,405817523,3828668902069966102
+d5383ccb-9eab-1e15-c1e9-cd3f8cd0e855,2737408964,837994618688930749
+6cb8bfce-9e9b-3623-807a-648018383c35,2469231761,5870327716310204890
+b7e2b610-caa3-5d44-cb53-aeb21a4fcd86,3318170013,4130404787970846938
+d892d86d-fef9-08fd-8707-568fb94bbb5f,3665003534,15038917051810458025
+e640e9d5-3e57-dbb5-352c-0a13e724f51d,2436338564,14386473570426719825
+561926f8-1e1c-82f4-3fa5-9e6f999d5eec,1157810793,13434348998940117354
+4f149ed1-6ecd-296b-bef6-4a0150a8eccb,237601375,2534888892229261253
+86fea695-69e4-612e-9d6e-ac311e1d6107,1673569647,8199739944420046149
+5be970b2-e3b2-c67e-7d9e-aedfc2676717,3117687266,8281302425593227061
+ce9f31a0-82d9-f437-600a-76df21531cd5,3814458362,16550648181527244300
+c22714e3-6407-e5b6-3795-616b3c3ddd47,832366138,11336341736505545091
+20f846b9-d7ef-a6c1-cc1d-79c789baedf4,2335062460,3888373540972681394
+580cddd6-9bf0-f556-a7ff-1f18c0f15eff,1787368573,12508935726749795554
+85f42478-2397-2b02-20f8-615b33334fd0,4058839155,461092606554216046
+2005a1ee-3c73-d8fe-9607-2d323801243a,558350414,17614145596307137264
+715ec47a-8610-07f4-72c1-ddf2c7399259,736728042,7285597728516047820
+e360c84a-3252-10c6-d419-03d2ecb8a7ce,2324900843,13555951175221851668
+a6f04e32-0cc8-aba8-94e3-9c622dcb7142,2399042777,13470408244174452830
+d9de2d33-1690-5e3b-e467-6cbc0d1a4bd9,2114079973,11403746292805469375
+0bec09a2-00b4-de72-cda0-347cafd3751b,278522716,16728282626553045589
+340c407c-5795-3398-852b-dd1f68ce2b7c,6028924,15535919205966836341
+e0e782f1-df31-1bf1-c1ca-aa7bfdbb8350,715625986,17011325151316978395
+b2378da0-c68e-8230-ca9d-c161e3cba3cf,2751490425,2760778719977326609
+52d5f39c-ddc0-a05a-6ad9-3607d64a9ce9,247789554,13750472405897207361
+e78a1d27-2d81-269e-6509-37f5273f5250,2756961652,653575466215866574
+639afeb0-8697-7293-46ce-64aeaa1d9757,2397857996,4041255342058973675
+01c2110a-b5a6-bf3c-3ae3-70020b8d82ef,3024749021,8874065253068287216
+8172e284-cf42-ac99-0ff9-7896d5136e04,1448294182,3619260691994015508
+1856d962-2862-c1f3-7e67-b9e3a6f07b9d,2303799185,3991599350377611504
+6b92a951-29e9-db6a-f4e4-e55bcb95d55d,3647506524,12444754946753037277
+7e092136-0931-737d-b2be-e76496b5bf8f,1917211266,4767170364876704847
+23990792-2e7d-6772-75fe-33c0ed1dde7a,2094300599,6666002824600766614
+7123b705-1fdf-bd82-e36d-6a9aa29579fa,2887664315,5995577691533951026
+74aa9ce6-5663-4a8e-2d10-017a3f11dff8,628829433,11164457103807755299
+8faa722c-83a9-7e72-a212-7ccf76d5a009,3384641386,8921496840054485134
+b8fc6516-2a66-1860-6854-6cd0de662a49,2030557532,450408750515345870
+985fd776-f094-ef84-027d-87057a5d4925,3162238045,13414742727399134071
+a6ace382-7408-f4c1-51be-55a89791cede,3149801644,7694143450353304791
+1956564e-232d-dab7-704b-f0ef7ee8a1c8,2654148722,10448024411134945026
+26310a40-66ac-8c2e-1828-9959049f9bce,3241806083,10208468558662555259
+6c85a7d0-2afb-122f-0bd0-d248b6b6652e,2561562423,13655983296151835551
+0b02e0d6-bd8b-5cf8-6cf2-1d0d8adf9d12,3321217445,5184408435065133522
+026492d0-dde4-6e16-cef1-bdd94255da69,2536772615,7659467410012174490
+4fb8bd79-0f32-62d9-3fa4-247b362e974b,1660334783,14833958986855012103
+8ab34505-d1d5-a72e-b78f-a0a3c9797847,988310253,17146427686262309641
+f650fec5-a619-cccd-052c-45ae1eb16cee,4175406148,11009327243845561384
+c156ade8-a4ef-7db0-4f50-ee7d25ded133,3559977034,302790526342996701
+77e73d30-00e9-d82b-32d1-5e94206875dc,2489121007,17669984287690623957
+ea671807-f284-a001-3460-8dc08eb0398c,3642984991,12529194209505022016
+7ee4c260-7736-e57d-3543-bec6b47f9c91,1288306337,5580485213190529040
+4a4f07bf-d44b-66ce-028e-55adf60aea78,1528840418,13712638494412411082
+fb9fdd8c-2f8a-f441-da9c-5645d2ddb1cb,4012605466,7185718083532819488
+c866ee81-3b0c-83f3-d1e5-84294003e8a8,3079864139,7237012427547907158
+d8af876f-3c10-96f1-25b0-c6ef70d3d0d6,942615619,13853844477689649448
+9a69088d-7451-dcef-37c8-637207d968e6,1747811461,2891347535197776794
+06dff95f-3c8a-46bb-913c-89c26faf94e5,4031520034,9948849515237121888
+c1ef9cca-9d2d-082d-2437-fe329e14d5da,734890495,15998000058871945433
+96691f9d-2840-4ca3-883b-0dd8aaa96fdc,3858975654,12179542053819252484
+01153cc3-539b-6b20-ff31-f6fd7988f486,682137922,6460893232248618646
+6a04e0b5-67c1-eb3b-dbdf-c1df8c6c5305,2870642744,6161566458107360463
+a25d3fe9-9ada-7c5e-8d7d-ecdfa12c23e6,2114380752,10399827882434294285
+535db9dd-4d54-4972-2306-f25ad8a74439,1069652067,6387879890326715186
+2086fd94-cc88-31bb-3db2-fe2362955704,2569002955,7562429166426897710
+9dc41b44-ea25-07e0-100b-b145b63c8115,981203627,1764703600217315314
+fa8277a0-20da-5789-b118-0cb6c4287cbd,3991112290,3174006587772258593
+9a1a49e6-556c-f6c5-19e5-31eee45bba52,301380777,17455397845705790234
+8389a0aa-d34e-c5c4-0fb2-b58358a7243e,2932439514,11754780389584519235
+9f197838-2109-e3a5-3f49-fd894c370b02,4013833870,11498618183823827284
+b6f8ce36-814a-c5fa-e9be-23c58b5c49e1,3960755220,17350501288320557149
+d866ed35-6505-fb0c-54c2-cce5a8e7e000,3034315610,17901712187236726457
+58143fd0-6245-0eb2-9036-30a7fd1a358f,1911060263,6532080351993570053
+7e0ea2ef-f8d1-f446-e4b4-591c0ce2146c,3707153652,14924730393662148972
+a91faaf3-cfca-66cc-e019-f3d8563c8b9e,219337366,14081684607674791542
+15159797-2b2d-d915-c477-f20b2a86cf7d,2636301122,2559813324968073840
+2fc2ed8c-d6ae-9ccf-cd08-325e56e18937,1001257048,8019695967074359768
+8755aa55-f77a-4f71-8739-f8eab442d4b0,573562323,7064213294666615013
+0da93997-13c9-caa0-afd6-cc40240af0fd,2750582177,4353222443815375494
+42f03535-9a7c-92a8-eb64-017c3baecfb0,1788170407,3178159757519432472
+246242da-9bb3-3ac8-3cdd-98ceb1cd1dfe,4039181484,5457607622433857372
+ab49424e-cfbf-3695-a4b1-76a1d9ab7df9,3128258345,6518712366011867787
+5cc75c3f-a935-8078-01e9-a6cc8ab5c081,2121711363,11534276744658045575
+6580d110-646a-6998-5474-69bf1021d0d2,4143188755,17114555068709149674
+10fbd41d-225a-5688-5424-03e7de5efd25,3115901597,651694661750668977
+080d47c9-dd38-078f-f2a6-d9ba184370b1,3300016185,16501284674131976812
+b0b1b9be-6604-6af8-868f-98c7fbce61ac,2653350721,190079602665555537
+0855be59-e219-135a-02ab-2f10cb409765,4244946825,3536083132728766686
+282b4b7a-6dc1-6a1b-ae5f-39b3a41f4c37,1583518815,17528831133945735793
+46f1d0d5-c7f7-1a75-e642-2fe31f4e836b,567932040,16551876516178939651
+c3a42d48-68e2-0075-94f1-b23ef6a2c8f2,1533166887,12895049184831648518
+0adbaab6-9dde-10b0-6a3f-60883b95199e,950534275,15494864827332528101
+61a65d65-a668-cccb-5eff-541b53bd3b34,4285959009,16294450594122113268
+44dd5085-31d7-fa5a-7210-96fdd8eb5d5c,160545165,3084968563550010877
+bb1dabb9-fe97-8ff9-f975-4c43fdb46479,3089087552,15353613551147105827
+ff86130c-d3e8-5240-055a-ccecbf65477f,3247774031,2824749423327707090
+4d0cd55f-4653-1ea9-1da6-87c0fbe3c378,1162645974,17885058412941122362
+4539f792-5654-24ec-b609-7f87e9768af8,3451081308,9863543641611224629
+beddedc2-c9d0-8310-2526-4835745482f1,3437633242,8684540070750830940
+bd43c3a5-f86c-79f9-b353-122e2e85412b,1386506890,7884194869824515474
+cd6427ba-1f7a-784d-8d7d-b878b859068c,4152155383,3721254456718552649
+d0cec14d-288f-2006-6a45-89a145bb41a1,2539927939,3667389458494645146
+519fbcf7-2028-6807-1d83-59adbef9ac55,979335030,11543341461423875023
+f6e1f557-ae85-1dec-8de0-7c1c9bbf1aa4,3305442031,1285368573589488313
+b082d03d-584c-c2ec-31d5-5c8bccf4f2b1,1704248070,5541138293495141568
+a8804817-0aae-c365-3d6c-6e81f9118d1c,1241129424,11723074736966153267
+253a5d6a-3957-b0ca-c1c4-54b328886739,3012758501,1394750369758319737
+0a732635-ac47-8fbb-cc81-0780bf774619,2144597530,7072879465111303684
+3f3415f2-ad11-bdda-03c1-4ed43c98a845,4246378360,7537589593906962479
+e7493150-7dd1-026c-c5bc-7db8f7ae6fdd,2845282096,17423604306052231560
+f6eefde0-779e-57ad-d3f6-07d9426cad93,4039415052,12442841724735155935
+d60da8b5-309b-61e5-428f-f56819f514cc,4212470422,16451823813134723339
+3e8f4eaa-cb90-1f97-3710-8cd3e1cc8c6d,3241830203,5407793199478826790
+e151e6bf-e130-2141-f2ca-80a479815ff2,2306653126,16589444350682579422
+c682d9e9-eae6-9560-dcaa-9bcefeed1e08,2771528632,5062253471543088393
+a611e05c-34ee-a488-6110-1f2e5dadfd55,3263601916,13751374664022384020
+572c6b45-b2cf-a094-44da-81555b19b3a6,1591930557,6040265638613445530
+d27a2059-e5b6-2eeb-2fe5-9798e5059959,3099965422,12512484876761377370
+0fc266d5-1ebf-51e9-2d4c-a6aa2adc16c0,81836628,3846466836721674528
+2c9eed09-f286-f3c4-5f0c-4b77f70d27a1,2818212417,483641088590943672
+af1c01c8-e12b-3c10-aebe-dd79fd2d6007,429242367,2283683599772440654
+339b2558-70d6-be12-afc3-ea03b349dc5f,2691437049,3984481309637315328
+767cf4cc-93e3-9d29-8d07-a65e69755537,3322949775,12257563202959749461
+d35cf585-332a-778b-dfc4-44c19a8864d9,783693947,18194631552401619804
+c2e68d62-6794-4dbb-ebb2-235590948458,1432080933,13145842947028417134
+7c28b5d1-a47b-1377-4dbe-d30b0492e047,3256019383,7041532789804590691
+2b2ce241-96f6-7630-0c4b-7ece29212212,333871186,2889582549035923113
+4e6349e9-57ce-0a2e-f267-2c6095db6011,339966537,4234797145744788349
+317f5268-e974-5ba7-a0ee-745ef40d24e4,2844418322,5042164310562010595
+444751b5-f26a-e486-aff7-324fb74eab4e,2288080749,2168171829782993472
+6f8698f3-3a0a-7073-ac1f-1c4311dc7262,3827490525,13411547033457457747
+5613ef42-9ec1-c98f-57e2-df0b9cee51af,720369722,14605702073512985099
+ebdb007b-994a-8fdb-1d9c-3acce2b3528c,2130220347,2087984609111033800
+b218d682-ff63-9724-cec1-7d593474f2ef,2458027754,17230008432709849514
+a5116203-ca1c-c77f-978a-bae8c12ea713,823935641,14633389065603842017
+469a58a4-2146-dd9a-11e9-610f19dfaa7b,2068670023,5788047180324047026
+67fdce5e-54ca-db59-fd3d-618c4753b927,1795765966,1522213107605269298
+fe0596fc-bf45-e1e5-0299-6317ba87d856,3832967464,16234383044922478796
+8575cd09-0b7e-fa6b-309d-e31a0a70be1e,78470902,17615322115849194422
+0c85bbbd-31e2-5f16-4f34-780b5b3bf1ac,2793865405,7610215511466352453
+e832f21a-65e5-db78-1fc8-8b745b774d45,1361947855,13157302768712402962
+af24b72f-78d3-bb03-c0c5-f16c6ce049d7,1149008605,9358577708603117489
+30ffde4d-febe-7597-fb30-e58d06d0b188,2286137136,9212488308093353921
+6b598783-3b03-da51-3828-45bab6c05d9d,4250334846,14839745006857510702
+46f71071-35cf-d486-63a9-dc106e5487d6,1729950615,17855437586413607990
+5dd0ea87-d936-932d-0f47-3003a9b91f4c,1375237357,14024598503614265485
+1854d08e-db3f-72e4-b509-3e8f4b7b4abd,3476063454,16520396786272352006
+5067397b-5d87-9ef4-9d45-a3cb7699fce5,1459180569,1265237546123300140
+b320e923-ff7a-799d-8c65-4fa6e5f7a39f,1996903237,5411973226587622913
+99e18778-f195-08ba-e075-87ab7368bf6b,3887778990,17927844080205111590
+912ee790-0d70-1ca7-59e6-b5d65ef59b7c,235976386,1250065004222816424
+ef0b031c-118d-3974-11ce-2a3d737ca5ca,965710143,16236409244939473006
+45e154ba-e85e-19be-315f-205d18380071,3377878678,14940424935976381472
+1552d861-75df-c87e-435b-1ad2e77093e4,970815151,6134062507493341329
+9e0bb187-b7e9-e407-1a9e-b03e5fa5d1ce,3076585809,17549893668467681402
+8f870ca5-afeb-dde2-4f2f-d02c0ac6cac9,1298609469,6811680345547796711
+6924b152-d8be-790e-e262-14acf61e76cf,2929382426,11554507685717062937
+dc2b11f6-5b59-a4c1-e3b3-097e16ae8750,4121484239,11973094777290492178
+08269066-d6ff-fd35-512d-9281dff6ceec,3603505745,4618876715535768821
+1da39d06-b446-14cd-174a-e061fed07d85,2250619207,9086985831012537572
+45148207-2849-fb0e-d7ac-825048b25f95,3621402206,11905966750507276943
+0c65b599-c64c-83b7-6cea-dbd3ba031148,1498068568,9813076097886802315
+d72903d6-c550-af33-65c8-2c5811e668d8,2402925371,6399896370313072449
+d5393005-d044-c179-edb2-1864b9520ef4,2888376049,18357137157774668989
+5ff1de93-9bca-f27f-a6fd-91160753ac80,3264214742,16648929666987294071
+d2f18bb9-821c-019d-cfe1-71a9ff8070e2,3962609687,3317609556337222718
+097fc5be-3f94-12ef-c949-b9f2563aba6a,2684005676,2550679307718918849
+538a4828-e4e1-5f82-2c73-ee2690b1605e,1758152565,2730968940218859392
+1f46b910-8643-33c6-0f4a-050e4ce11519,3640564637,16798133084273978338
+f8de9e85-26a3-c34f-7656-aa52c33b2bdf,2030057957,6180008688184315112
+22f59415-5a42-885c-eee7-3354c31c9880,3506854011,13663748540042411509
+adcf18e8-6c56-824d-dfff-ef4573d5d7d5,1239639897,7943417387565984711
+9f1ed796-0a87-2e5a-e247-0257eda67ad5,3104643391,15761956409398567154
+1c0d92f3-2397-1138-625b-15d87eb4edda,2184157386,5148044470924268299
+d7594840-84c3-fb0d-b649-a4756d7950dd,501822703,6162947316339701534
+69312c65-ec3e-41d5-5ade-27e8f44d34ed,3781818599,5412820447064500146
+dc557dee-ed61-a6f4-7bca-2c49ea2948f8,3929795395,13995836906061445682
+072455bc-82e9-0650-9988-9876e158751b,571537622,15571345322740319214
+51cc0401-6d74-bdcd-c78e-00a542f9e178,774357861,10175924866781882797
+da88b08e-84e2-7059-9904-bcd5e6e0c58c,593638026,954499269977942800
+05f7efbd-8f37-31b9-9865-1e89109b2904,2546702760,8576494514236746199
+38847104-9f98-1d7d-868a-b760d62fd02a,3440962638,9799879565228181311
+5c8f5949-9ebd-b46c-1bdc-abe381b162d8,3137648593,11039690369633422230
+719444b1-5753-bc27-ec2f-22169c4ffd40,4058568480,12997579225830603625
+eb555b14-a719-aac3-0f89-9fe586a805a3,3767622296,5794176979153907863
+99c5c909-8904-0550-58de-b09aa81f8bac,4015428345,4899347636553716319
+6e1964e2-97cc-fcff-3500-8e4ab2bac433,3043000452,17079191150108253798
+49b06e83-67d4-d474-782a-ac64667ae229,1420827375,4350616722134404946
+6f935b96-c7c1-6bd0-34bf-932abc6265b0,3071762133,14218917387406357221
+d38a69b9-12ee-872b-851c-554856607123,2825201175,5250162376961422830
+16fdb9ee-924f-5e2e-d625-33cee7e1cbd8,3786081109,11953256631816851445
+008de28d-009b-a935-0126-c7e828ff681f,3407230435,8821688169509737176
+faa322b0-f19f-b927-42b6-3a3ea1932dc1,1924603878,7500581335035977730
+c3c32dca-db6f-65f6-1321-6dc41adf65ba,1996212160,14204234198569794281
+44dc72f2-40d8-9bfe-5496-192c29dc57c9,530588794,293688104803534872
+8d797981-8009-daac-f57d-04a39ccd09d8,2807701544,5512318519660079198
+b70afb59-dbe0-46a4-28df-3048c1bf16a4,4086363199,7148333330180426387
+cdeb0035-74a7-30c9-677f-be9edfda5906,2004271993,16720578963732476110
+36f8e4ea-b087-2205-c853-7b01c59f56a4,2172336910,10049631080880003290
+f0143f07-6042-65fb-0eb6-b0983791bf8f,2304336166,6612779786485312363
+c20f4b27-79d1-01d3-6bb2-91fa68bf7edc,2380002405,4935209570940661550
+0fe1319e-b8f6-8669-b376-5e9f634a5acc,489193173,1088107010914126617
+60f7fdb4-7dbc-3523-7ed7-913b880473b6,1942635692,1559730974676200549
+ac5ef53c-b13d-bcf6-2021-3cd741436b02,3090064865,17541551244687037660
+399ca0e5-0788-9aec-04cb-2b80bbfdf77d,1121323817,4846266136679974917
+49ac7037-5315-1445-cac0-e1d5e52a76df,2732749976,8795681102065733175
+98f77b50-8b90-cbcc-b43a-7141e8e55806,4175433467,15998449097435965126
+30d4c930-6e72-b56b-9f22-52005458a9d3,2115904208,547806083035540470
+594cdee2-0b63-8206-1d67-e96b6d9dce79,2486809143,17048482944579640152
+3d3db67b-da43-3522-ba26-6efdf4a81c7e,1111174091,15463255296886763879
+41ed566f-35a7-0e00-c38b-3345f1fa0cc1,2099312391,17087393801733973205
+c6c7f0db-882c-7441-97c2-8dacc8bd2138,974603371,13196199513856450634
+820f16a3-a921-8d7e-439e-00f0d95051c2,214533155,7232394395155297176
+9b959811-7059-144c-6488-0c69c4e67c4e,1142317041,2666618177250556113
+04ab1a64-b320-3e14-958a-dd99318f53c1,338784106,6424689216462966902
+a495cec2-0ed7-5feb-f77b-6d440aa0190b,4136804967,2798978602853210767
+c4eab82f-aeaf-1d3b-6c51-b30a50299d30,3163191006,18217400014625191046
+fa6b5e7e-0da0-4a91-e9c8-ed020b4932cb,3801929157,4107119028267649636
+f7c302dd-2707-cab5-fe1d-bd1578e23c4c,3653124805,5569205244768032090
+93dd5492-ab8e-08dc-8172-afba1e0aab5e,2953633470,7294492206722394983
+674bb97c-af9f-4358-bd97-8e7149e4a180,3123467251,7912859661972347593
+4cbf603f-ca03-942e-b7a5-9424da3e988b,3747150261,6612475832110193556
+1f60f7f7-61c2-817b-eab3-840deb803c1b,1153092011,12560024301368560194
+adebc8cf-bc9d-4e43-632f-c92bd853b9bb,2446853745,12441866846458608330
+72965b5c-d98d-978f-62ec-0f625bfdd116,584583336,2843966276730557074
+7f47d1e4-8f7e-08dc-694f-cee90e1be048,1180126399,7343206416680223844
+4196fadb-ed78-36f0-ac0a-26e26ea83c37,20626236,10512296073566848158
+15784761-4ae7-7995-6f25-e0ba3886b364,826166259,845485373863697444
+f32b2002-1744-2ea3-7942-b1361725431b,3637697078,10616668389244974579
+fbb32796-295a-4632-b161-d3eaaaa72000,2865289650,4148515711472355760
+31267ae2-9830-0fe7-6cd9-4495b60de04b,3304255916,4680122332209682045
+79cb8d9a-bbe3-5c5c-ea72-80e9c383653d,143557568,1256820674914087773
+63063747-a987-2dd6-b573-fbadb49dc3cd,1048363462,17851533664445666874
+ccee98f6-be43-5f2a-59b4-dd2a5f2434cb,1896971804,6077136009923740425
+1a4a319d-ea2e-44b0-d79a-f5a881dcc3de,4064707295,2865389325327457946
+043d86a4-a88c-6b65-4d2e-1048df062542,842943778,18346024950203581457
+de8aadb2-d220-38b9-2109-7908b9322807,1433985092,13279382771454493251
+ab79722b-ef49-5b19-adb2-4b11a6d0a62d,1728834997,12545177118407017723
+e5193932-75de-200e-d90d-6c7b069a8d32,4231065616,12068214908973911839
+338d4240-852e-e716-ca04-52b3879c451f,801054689,14976810144910378096
+ba2f388a-5758-9008-1ce3-f442bbb622c8,2812543246,9249091588536113959
+b7aee8a4-ac40-78bc-8dc2-c82faefa2da1,1452816873,16236030683181978929
+0db87d92-8e4b-922a-2e91-b9e7e100e77f,102085876,7105014797609014932
+b1da861b-cfa6-6d66-588c-0ceb9d56fdf9,2026738903,11515007228969849977
+67e01037-5f74-d74b-826b-f03d9d47c19f,831541605,7868520014447466757
+794be021-7b81-3f86-6d9b-8f0f0a3b9967,1737315760,4813355507437618841
+cf4e3534-e44f-afdd-b308-a9127746f842,1035297248,8158347071062648682
+1808372d-d32a-a8ae-033b-153dc9e9b4c0,2726388749,13702666564363188559
+b4af335a-4a05-ce9e-fbf2-b2de16f204ae,1379845872,6442570926624218387
+ff459e50-0e49-1c00-3c2c-f2876af617a9,800721702,5775576923703808565
+881b63f7-146c-f5f6-ae36-a8c9f0b775b5,3294131532,9379324741630366661
+6992fd79-f904-911c-d9f5-6ed81e3b19de,2163305366,17134074052285930530
+aee42ff4-9b3e-4582-1418-c51f06cf94bb,421188568,2180544154435919233
+7b83f2ea-2fda-500c-04ad-967647647781,2531169470,16184448773647273590
+6e271a82-41f7-f4ac-4a7c-ce63590a23f5,1425939440,11875660809405135070
+ff82a1fb-b0c9-d363-d849-d5c320681f40,1783638104,5935872063102693458
+e8d76e93-f4e8-5a04-941a-6fb722f9b265,3138907356,11561723250476382427
+6c1b6d88-6a40-cb88-4f9c-a79dcf94727a,2635240721,17623939107155202965
+5eb8bd1a-a11c-c6a7-ff78-395bd0864bec,3826053129,3797690546549232130
+d725c713-fed3-a131-1891-db97e755925f,1879589595,14918368266968793496
+1a75b2d8-e685-7026-a3ca-bffdc54de5a1,864647704,15967326274204236373
+13e01dfd-034b-1253-998e-e6ae17a6bcc1,2533220594,10042971249901745014
+92551be4-c8c4-a329-26db-44f4bcb3b72e,2852961376,11870606863392719878
+b34d9657-4e57-ff2a-81ee-280690f0c929,1625353298,6481430041990125292
+5a486faa-170f-2946-1b8a-393294858721,1872123962,9457305686986814197
+4330b967-e628-eefd-5290-bbdd47acbdbe,1129089965,12379231431474719199
+afdca58a-5e7d-590a-f7c6-c6f94c2cfb25,260469913,4383493463738264759
+260bc404-a965-2d86-e6c2-b3886816757b,2190791093,16723165495897108449
+5be0ca08-2b07-feb5-23ec-b6580fd23f27,2099554721,16297307916005047767
+58d315eb-9539-943f-cf9c-d5c05f90d3d4,962253477,9325102409340411652
+2297112e-4b51-3819-00f1-3199c7f4d29e,174361042,1938227842158567117
+a3d0cd61-54b0-fd57-f345-12c9f9c7b036,4081288931,2787839261633477211
+bc389b56-c05c-30e4-01d6-1f7be506e580,856676508,13029716832504192158
+789dd2d7-1c0b-326e-94c6-7ec0ff4998c4,267509259,11064833194448757904
+f1825c33-618b-16c8-8712-0a65c1f27cba,4144969700,5576639386791596364
+5c9171a9-90cb-1b67-6eeb-a35f91abad99,86794557,2281911432780197697
+675d0db3-f962-7c6a-8dd6-915c34f9e5f0,1571709402,5555245994426042543
+3c3c55ae-0d75-5ee6-0333-f79dd26e6072,3100796704,11624486690600844099
+28d8ea1f-e1a8-bf90-cb23-cd3b187ef56d,1429562465,1674517284467856993
+ec53c5f4-523b-225c-5833-097b5ea57b25,3610211496,3907863561509207344
+eef6bfa0-cd7f-bfda-de58-1bc59f2e841e,272130581,12477321309715544479
+fe53fbc7-7b25-7df6-b140-03cbf3c86f99,550841846,13104854779299886587
+1dd3ce4e-8692-2e70-34d1-55eaf12e677e,1394460522,12851648878853308494
+93067b93-be8d-0703-cfad-108010368aa0,1920822438,5203677064367478150
+dbd10279-2345-cbe0-9120-b320b932ddc6,4114906587,16056047661035701933
+12a42fa8-fd8c-e04d-9c77-4b3fc3aaa3eb,1198457425,3879610442671960514
+9e031cfb-05a3-46fb-cecd-8c45e786f4b7,635849525,3090240933741866236
+64d13e8b-9198-6372-2171-316f9329d8f9,2213330609,2697176030760835454
+47c9ccb9-e728-3ef0-e079-e7ccafe5321f,2898322674,16864081455241610352
+2a0d61f8-d420-cc64-8f35-f8f0f6ef11b8,1849626789,14659180360432075590
+a3a0fbc0-9ec9-bde5-2208-e41cc0af4a6b,898423526,14786425606364003960
+402bb6df-b4cf-d4fb-e729-321a927c01f6,2259373703,5169888962127380587
+841ce71d-ba9e-c520-aab6-cac6b97019ca,4249044086,2242497549971854213
+9307cfab-c8e1-9760-59f1-de7655201eab,3886743988,18437705768066814919
+2e26f517-58f3-02bc-b654-6a72a84a8def,4262387385,11153240430250369680
+f782cb61-9d80-80f7-473d-d482f3e40761,3086219063,8662517242629200271
+d8b781c9-4d9f-e7f7-bcfe-b0150046288f,1402280334,732895845795819742
+210865c6-d810-2818-0dc1-84678b4b0770,3218342345,17868638238704556284
+b9fe9ebc-0839-6373-59bf-786c37c1f439,2903666900,4266357943077067624
+dc11a295-83e5-714a-373b-397dcee71bc7,4188367620,2609286475028272623
+c1b79307-c957-570c-aab1-8ed07dc8ba15,281564892,4409474634350717393
+f6cd00fa-feb0-1a87-5690-5ba77210832e,1531204470,10754021882140104530
+1d915bb4-be18-60bd-c951-1cc2fe2f5c26,1722358591,9344537216489183573
+9dfa6e07-ebc4-6c7d-f646-54746dfebd09,3117706241,14240006182322392261
+f858ef2e-1348-0208-c0f7-f183a81ad7f9,301942928,2549421687401286806
+3c3772cb-7970-a8b4-8bca-a3c0e1a46a80,876547420,17487279341256007249
+fef96d88-5a1a-5636-9f5b-e3099bfa6f86,2636662361,6257036571229011222
+f1bcb0e4-5343-5369-30e5-d2b07fd599a5,1698853083,4558369515971814535
+b2c64be0-3173-6c6a-8d51-b16547e0a88d,1536403931,11114237303909555595
+6530760d-b1c1-10cd-a8f2-4341949c8c41,3546779263,6190879459469784059
+134f18c3-6d9f-f105-c90c-3f06305a2bdf,3693676304,993036943941920216
+4574adda-53bc-5dca-2546-accd2c06d549,1174270844,2348003395356673229
+0a8d42b8-971b-2559-4f31-700e78c6ba05,2256420898,4557959161134065667
+fc593e55-8a15-be60-f2ca-74bab9aaa674,1707141798,16475722719411594911
+d8b0c42f-eb12-8b28-4428-527326de4bd6,3972932385,15374007401278412406
+ae1eaccc-dea8-97e5-caaf-63ab7df8a4a3,384789292,9568169824925853501
+e57b1041-f221-7e1b-6b1f-3751ba6c8455,140207602,1191896506293650353
+b6b4d8c5-db4f-ca67-f1da-76504b4416e3,2507628127,5183042219247005086
+6d62f9e9-e510-c91e-bf96-da1d966b03ff,1053617746,1382933175933455331
+1a7bb8be-b2af-a324-4f07-f6d5bcfd45fe,1785833073,12542068002426809061
+5c325081-94e0-388d-0125-9decacb5d241,1346391285,3600962344168252971
+d28cdc85-16d6-122d-c5a9-0948bd937946,3947019652,10507940522760541323
+52b9084b-2866-55cd-5324-321557da7337,1403807735,12459048838991175746
+a503a4e7-ff2c-93bc-2b76-385112f4474b,3321496499,17757326602505680960
+06760548-c51f-84c1-9d1b-be061aa58b62,2572483025,16308826339331152748
+54a64a2a-dbc4-aee4-ce71-0a59f08a30b8,521810930,7874871031537599840
+2c4b6851-2c87-c2ed-a152-aface58a0e43,3322959445,11138290633308576846
+f63b54d3-a70e-bf5f-6a36-455514775b82,585146465,3804462138125661509
+91c975a7-78ae-b77c-69d3-5d728aa93505,599444697,14332913346494093741
+89cee444-61d3-7b7d-a262-3eca205ccb0f,2560575215,4348930504949593586
+2a731230-230e-9ffc-e8f5-cc3df08079c6,2546713139,14207862748645053129
+4d550615-6c32-757b-4ab4-93c4686a312f,1815286463,3220207758021175570
+7f6eae85-4897-2c5a-69c7-5594a642207f,3001468651,6184396783942684505
+b9fcd6af-397b-239f-8443-bc17e3a348a8,3567700250,1346527647346302374
+28f95dce-8efe-3b1f-3d9b-63f245748cf0,1874044230,8260918718432782682
+3aa8ca26-c596-8fa2-8617-66fe46c1a0f1,2964653218,9433333050770420233
+9b7fb490-1290-bdd9-149f-c7e8d4d740ac,3578994841,162109697502346092
+8e177e62-9086-5f6f-95e9-797408112b4f,2615126828,9417305385201801403
+6732ae49-39be-e72f-d798-17813ad45850,255822120,4241599083144371018
+5e191dc1-2ec9-c6a5-7bd8-a36ae0dfd4e9,1853125656,16996436652989758641
+262eff65-c2dd-fd04-54a1-799aadbdda2d,3683762807,3332966829286970215
+33412eaf-85d6-36b4-6840-1bf83037888e,3552056083,8803109839647633536
+8ba865cf-4d1a-f8a3-2155-ae98d8efd0ba,3082213849,8885536240735909506
+cc343888-0fb4-c2c0-a04b-1093e347f28c,3512149858,1309679704891456476
+9cce3cc5-ac2b-7988-ac8a-8b3df1b6689f,3708964906,4608849806150521987
+704d0899-ea8e-e7d5-cf60-8f6978bdf501,3856345762,3455585499279442029
+f4dcbadb-b922-b68a-6981-398a0b20bbc9,1021960051,8639866541193001592
+fb6045db-52fd-80d4-b88b-99e840e9eec1,883997172,10617504339427893238
+5f193300-8a35-f16f-21ff-9e46bab70825,3438747168,11273056564746860160
+880abcc1-ad57-e337-3539-ed09658ea39f,1423911997,3728625834849673794
+98a4968f-e249-e999-4ce4-8815dc308ba2,701070114,3508025430235307850
+ae104575-69bb-90c4-255b-c336854c0be8,487464377,1031034715562351827
+45c76058-02a4-48d6-2d45-d9afe3cf4c2a,761304246,11105599775805035466
+69e43683-40a2-f768-4362-f9b1c81561f1,3697173872,12788072538641105322
+2446bc40-1ded-0f16-15bd-f019fd4c16ed,2872242073,9171760351107258187
+40c4b174-b11f-3889-7a1a-e430a19383d8,4022425544,13077302626853161869
+4a49b880-0fa8-c90a-2f66-5392c20980b9,1214659507,8466375126343333419
+51305b13-d1d6-883b-2ebb-71240dc8ab36,3261527052,12377503190016990848
+668700ff-76c4-909d-7b69-01fd01b89592,3492653947,17922528925810559861
+69c3d8d2-e494-1fd3-e184-89dc55478d0f,2226901500,3722379652996022286
+3afd95b1-2757-1449-e2ab-3d928cd80bbb,2874452425,6571167316283022645
+4faf2d8b-9f6c-0f72-5b3f-7104da4dabc5,3575574924,10633412823797523846
+35f8ae69-500f-b5f5-6563-a7abbfcde47c,563232667,2095839834085445378
+05b40229-b59e-dd4e-6af5-5aa03cbb0ed7,1933151261,16452202221639856876
+1006d0a8-1028-5504-b2bf-a0e8546525a7,3565953962,16997530620716996584
+dffe8a89-b3a0-3c35-9ed5-f6478e0e8e06,363253800,15476248075099112711
+d3a0c147-ca1c-2281-bec4-26ccfa57d9bf,1479862479,15311530071195112725
+abc5390b-f786-d943-c93d-369fb1da25d2,743368789,10498758822275812998
+ed90786f-7de9-fd41-1503-0bdc07c709b8,917206684,9669959270053881857
+51879e4e-aebf-fb48-e209-7e47cf5e363f,1443008255,11075310585203544104
+31df91b1-4493-1d52-e6e0-388c871be186,1053357008,8855388169445319077
+2b81095e-6f2e-d0e5-24ea-624e8a5ebc15,2726018260,6118544143149944142
+80853b25-73f8-5ea1-bf46-868143a50b1f,3091634606,6536604692348425265
+005128f0-738c-08ae-2515-cfb3878365f6,360129431,5064025003332264946
+346b037a-78e5-008b-5e23-fbb290d36343,1282108364,2887057376344207957
+dd1e0be2-ac82-80a5-20f9-47d8cba27a48,2840005322,10570559058329684294
+b6fb5a02-0855-525d-bc3d-80fccf1901cd,4293011625,18378227822173492386
+ec1e3c15-2c24-325f-d8a1-52e59daa84e6,2051118471,6665707585449423634
+ddb38081-8fa9-e55b-0a26-270f58227c93,1623665568,7566425874877478374
+fca817a2-b87d-4c60-ef00-8a86d211fa70,1087060576,11421660317799121819
+cd77843a-aeb0-f012-c458-0cfc59e55e2e,995160164,4327864818484136097
+6f434334-9279-32d7-96d0-35acf4e5ac9d,2194694551,15592456510532701633
+f4265065-b437-cb0a-4c19-3ef80c935d08,1535898678,6824694749940100189
+01d99b52-dce8-275e-a565-0a3aec8165a3,1800290418,8623890105660111664
+2c2b3877-7c46-6253-e302-9cec70cf5c09,819771983,1495029243092575501
+3ddcd775-64c2-da7d-8475-8eefcaad796d,3999274967,875881476470229838
+7ff6c321-8935-48d2-ea0b-f1fc54fe8a48,1691762341,5782614286934809300
+3bd9cba6-3cd4-aff9-fa75-1fe598823911,3163744335,72442739695311264
+7bec8676-4917-47e1-c0f0-4027a5905e31,3831556020,4611504979175074697
+bb9e2ae8-ec1a-ea6f-70db-1132c2cf2e3e,4084567024,3634370744329167208
+566ed34c-7e9b-ffb2-a46f-3b4ca418ea24,2351851326,9198334178442626087
+d97e206c-efab-c81a-749a-ec216cf85709,483636270,4303524078310010232
+ea04675c-4022-0c0f-5de6-18930491229b,4150363779,10757330689037671898
+b923781e-49d7-7082-49c8-579d85726b66,2293839819,2950452069169122023
+ed212587-2df8-01e6-d165-80ecac56db71,3503847853,6415247810982213558
+584d8346-707b-a962-a07e-86b0082f5a85,508022078,7905683394466700395
+d0c6816a-0255-9ce6-b92d-d3877fcc2999,4294163333,10500044299076253243
+ad2472b9-a6ea-41e1-e9ab-8ac8dd019e98,784136454,3719362172911230964
+bee5c0a2-4e68-5c86-76a8-51d494add665,830248077,15551699312456859273
+ae313a89-9add-67bb-562e-22f6c7e8ee9b,593932158,15992984166098411661
+822ba6ab-b5ed-ba84-4422-d6d31b0e0c65,4233493655,3386391271987672259
+9c218c3e-d5d7-fa16-28fe-6ff54e00b063,178897173,8758367253897447810
+8f1bed04-ce64-70e2-49ed-5e0295b4b87a,3480324290,3193440627110310545
+a1b5ce77-7fab-a1c4-1918-d66dd829745d,664399587,9930465754775654476
+6054d1b2-9df1-aa08-12fe-60c8b7dc5dc0,2598868126,15942732041830395079
+2f18c6c3-b429-1848-4246-4b7e0f79226e,3788908006,12566651639396882791
+804a2960-8ea4-151e-dbbf-884dbc76d9cd,1371300164,9199595976556848259
+d221ce2b-5e21-2a0b-bedf-6b41f251118d,2411111029,10425617175290608502
+6c40e333-91e3-08cf-9ccf-48258cbf159b,1234489568,10738285417632158324
+98f179f6-f251-96e9-f1fd-4eb425b5271d,3525703296,10723569696041693764
+9ec55e95-4290-b153-901f-ab62348c1386,1351065746,8891261919193308655
+2882f1e6-9f30-0ac7-04c7-fe530b94e432,2757049492,7505006480269852824
+1ec17eb1-fd21-2450-e6db-b81d262c9884,1776874612,8582483749310358871
+5edd7f80-4dab-b5be-0ea0-17fff061d869,1368653999,176896142062806968
+a29a1d05-68c0-ef75-4e9f-d786b3b4e76f,1603619088,3859904246725319564
+3c4b690d-5e0e-9ba4-4e7e-75a0683bff70,2257085773,14844432173704321850
+03a4b3c7-a16b-19de-8063-d5211b0455fe,439687048,6545141977672723253
+fa3ab9d4-75bb-aa4d-2600-0c23009ed9a4,3457578104,17078409334061626960
+d4abb3d2-e111-82a5-896c-11a235ba76e9,2451149677,1056256156944089480
+bba93fa8-f679-8d09-1e38-28a9afbaf41c,4114528946,3475751727794194764
+0e1cac5f-81ca-7e33-c6fa-293697b729e6,31702605,13054938206487918176
+69d183f0-df36-75f8-ddcd-fcbac7488237,2831022643,2996186234757472891
+6446a79f-0dcd-2d77-7027-7d88ee3fa8be,2753564098,10204030166752151468
+e9c44a97-f334-ec91-fb6a-0b729a799f21,2985857690,12566075471701028781
+8f4a8f8f-632a-ac58-2ab3-c2ab7b830f4e,3287744324,16910520479024548675
+cc988115-660e-23ae-40dd-542ce6933287,1211327229,3503037050241007592
+fe5fe901-8e1b-d28e-4b5b-4a2bcc0b3f33,3393320267,5398954929863783873
+ab652767-8afa-544c-ab79-54c4ce139ef2,2521731812,1703922970051907711
+63cd82c1-2092-60c9-b37e-66b133735996,2331030466,9531223275963804541
+562209c9-0511-a361-2a78-0b0e69868972,168190437,6914352098548255886
+cdf06de8-f8c3-b278-d2f1-61b26353607b,1948695213,8801958640649601492
+c69fcca4-c2ec-72d1-7573-6863ea042dc1,1913017701,16368073087822315716
+86faa159-0804-44f5-d257-de9d7adca7c8,4085298748,8765013500055299834
+40fa7a10-93ca-7af6-3f14-0e552ed7293b,3748354017,6260417080991932017
+fe93f317-625c-0895-5fca-60e05d73c811,3589436007,13078382129341099421
+e27be691-634d-298c-a2db-ab18a5d4ea75,831344948,1761239665707965496
+02360cc7-c9c9-50d4-9325-977a7eb566f9,1250843991,3469218641221622239
+794d6d09-5184-dae9-5b08-b8b44939945c,2938712818,3238246030230817924
+7ab24896-c822-1c0c-124f-058353d3de84,523252200,13517206066133364432
+82b3cc2d-b831-8c4f-3439-2f06cdf49f2d,2228719092,1028885249387461501
+2a08fb15-0ca2-f31b-94c4-9860549156bf,3883794668,16746575673590928382
+698adf71-e97c-1d85-9687-7af0dd46427c,679854355,15391415916031755144
+df5cce9b-364b-de68-fd4d-fbedd8f518ca,1415816804,3194284697709785093
+8fe2b3ab-0194-0818-9bd0-96f81ec20aa9,4070888335,18192099531437513837
+2bd59245-7e1d-8330-8f6f-afd39448105f,55075376,9243975537911026158
+8ddb7232-06a6-a4a0-5f70-5fd876a14f81,677833091,16691484620984595686
+67a6e88e-c512-16b5-df00-6840eeb99163,545928156,16763262631445300693
+29321f87-3c5f-7876-54c1-1da5ab72896d,2369436271,3629206890323275656
+1f02de9a-eaa4-8ea7-0f6b-44f9f6317659,4033893053,15975813502002269753
+cf33f29c-f318-a63c-956e-7b084349a2f1,3236549058,8814407056787328828
+fa9de7db-3981-e4c4-584b-c8c5a27d7a05,521695325,11203414120632456015
+b882dcbe-3c54-c4dd-131d-e3fc3feebc13,2063945200,16205529044449984910
+f24cc64b-75c5-9cd1-42a3-3586d2d62a4b,2589660286,1116846984587723810
+c97db517-beea-18f5-4862-88c5f2adcf50,3134761075,17237351462204936669
+80b0f1c5-afe1-62b1-6a95-6703e79a639d,1307502878,2331468693368651666
+81d28236-029e-a6f2-88a6-53e11fe6ffc4,98081468,6605919046324687973
+19ea120d-2db1-cfaf-0768-67fe9e0840ed,2341898409,7740269794625757066
+98a0635c-3ea5-ce39-946e-d360ef849fc7,1282454222,1945621954242360346
+bf425115-23f4-e834-2520-0cc95fb28d7c,866981900,1561055952868590293
+5096d83e-9fe7-41ce-a3d3-8fc67a7a34ff,500238164,8682043174148938588
+962f82e3-3cff-c98e-2af0-8d4f7e109d2d,101604491,17028081471593810616
+8f367e5b-65dc-850e-cbc6-f8fc2950b61c,1198995352,4178860747107111703
+5cec7b4e-88ff-b294-cbb7-f08cd66cbc50,741693846,10261273582971761257
+361014d9-4724-4632-b1af-f2522d90b5c6,1936264317,15703630053547817240
+f984fba2-a525-38d0-4b81-92d79200c096,4251633708,5405899642732860454
+5753c809-531c-05f8-be00-9ba416caf2b0,3829021176,5060986988799163515
+59573f7d-ffa1-b47a-8cc1-77309a36d38d,3368495245,17114354535773006968
+a0c07627-5ac0-c748-1203-5aad0274933f,2061488400,9554266805366112056
+76b32bc3-1736-c450-15df-9a7884f3882d,1365699405,2651106187555959075
+4ed75914-17c4-4878-6592-7cceb6ee51d2,1247508026,1421901776277852786
+00f40a82-f7ab-4fc4-7395-9dcde0d984f0,3339135485,2486346115219141184
+eaeb4189-fd63-f368-5ca9-2b34f940d769,444700547,9339438380923172949
+067db394-7f94-3d40-4379-352d0258f8eb,268057274,10948974180695585020
+3e3aeab7-d2e0-8b43-554e-7e4b857a4e52,1172387212,12906849951436750857
+64c26d79-3bba-cbbf-8c65-851ffc5b674e,2800146017,17138423326788230598
+ba9337fd-ee63-0a61-3619-c4ac8b84dedb,2039293289,1019169842910674267
+75966255-51b2-77ad-8cf8-9ab3f5a481c4,1089713972,2952504642787407761
+c642c3bd-9031-75d3-c13b-8a0a17511bc4,3569992920,7940486960888317129
+efd655a1-a10f-45ff-7190-b4b7db017f62,3787200717,14799736725526178075
+7aca234f-9d5c-788b-f305-37d9c4435323,816488123,10023741016965600561
+bb90f3e1-7108-7699-39b0-2cf5871c6724,1057547811,5198285870118077395
+97c22531-2d88-e0e7-44ee-56b8805e52fc,342460453,10114506116636989370
+1c5b4b56-0589-66e0-c562-53fb520339bf,751201345,2932855643389103702
+740a3d01-cca0-3fb3-3efe-399f514c1d11,4032673738,6200628204554774420
+9fbb9082-cf1e-cf06-c4f0-b416b7887da2,4180389391,8444536357535010008
+aa0babfb-1141-c311-a861-6370c4f38a16,2623836085,15737080808144235658
+220d3498-d7d0-046a-5f56-7a67e59a78f9,31862769,477026250781777802
+1c102a48-a08b-cf82-a90b-2f23550887f4,596774847,2221795842700316661
+6ee752aa-323c-d528-9fde-8f6a657b208d,3267241359,16448280884611335311
+afaa44d5-c182-035c-0b99-9aa987352a93,1125633499,16735221968068338074
+afb1f2ec-05f6-188c-c6c6-5b3b5e77bffa,3195434074,8334028353906958153
+785f92b3-a8ff-03e7-0053-bb91dfc628e9,4104642906,10582794186012437347
+0efecbcb-f513-8c16-3497-7f6c6f77e68e,1416815617,7394329435331854209
+f35b68f0-8647-02af-94df-4e33801ae666,2231644989,10737115368986159112
+a08ecbfc-4c86-b015-bbda-daa17dd974c4,4123458354,7068023313420616676
+3d409be7-1427-8455-eb3b-88d28e501a4c,2711867170,5937201865151193425
+d2c8d655-72a6-a61d-36c7-d315ce015cf1,42762701,16595946580856437863
+1ae68e9b-2a84-a108-d6f1-0fac7034edcb,2135215357,1285979170686279746
+6c1f7b67-6d62-bb62-9c7f-669f4a8b6f3a,3070619995,3187415241604522032
+e243a0e0-224c-a933-e24a-a1ef83c885b9,2409510579,757803097341249581
+ae4e1db2-48f7-4acf-2847-c2bc9986ecfd,1091680130,12177067931684827444
+15c58be7-1a25-520e-0f27-f449333097b4,2137321412,2623424324215220893
+5ce0aa52-af2c-44ab-b619-ede0c9984955,2701297934,15281544183726886419
+d72a7610-4170-cf5a-577e-70b031a4a498,1696650219,11649299479410611649
+65529566-0a59-759d-2f42-d64c9a13f446,3907144648,11047741249186169055
+4682f7c5-1eb4-3825-8377-784a9cf815c8,1218260240,5562916395562323341
+a0df2b5d-3a03-c7c7-221c-22f4a6555a87,1756681567,16565525167893130185
+12c2448a-7abf-8399-39b9-d0553f465ef1,2568175156,8820989763387300385
+aaa07fee-a1e6-19ed-a194-f657477fabb1,2931881390,14209153904892719898
+7dff929f-013f-1e3f-fe7f-98e5f371dd81,4142334217,4490599777131676668
+878abb7f-0603-a536-8bc9-006674dcd4c8,2473571870,5461136171052972633
+f4076727-d26e-18f9-0cd8-3c833b8c1e36,204770155,3836099359628958741
+9b7fcb12-9e01-89b6-0c72-9cf92eb2f375,1588359507,9147598612323599126
+8892ef13-93f5-f28f-f9bc-8f74bd15e3a6,3121720251,16717397055706129966
+79726690-9e15-30f6-4e92-3145f9939381,1790023398,303988795442874078
+38ec7126-7936-7b43-e6fb-0e63aef40790,319931290,8670429412049501224
+ffa69674-787c-92f6-d2cc-9ad476de7af9,109102973,15745844557095036135
+6fe02f70-ef73-8b66-207b-df81158e0876,2889361717,16000973581600461833
+c629c247-2f75-2846-bd40-84d4f5a6159e,1275512536,10631532396092421859
+a0526919-cd75-9045-70f1-c361416183f6,3840365211,9720190816717702938
+46d06b17-8f96-a698-b0d2-9bab92082cd4,3577313511,13622169454086959280
+b5d20d99-89d3-5484-a114-6436f1729900,3171317669,766215008259977752
+c9c8ebce-1eb0-7730-f16c-3bdb93215df5,2246191104,4950873864524941412
+9d9ba908-2f42-e5a6-8fb1-b4bcfa0e2dd6,2789103371,12224665069972436212
+12319708-43ae-b8b2-c3a8-8b32dc3784d5,2816711537,2904404765118575381
+e01345ca-c3bb-7eb4-0f9c-15a90be96f65,91845887,1389600297836640472
+7709991b-2d12-ccc4-6d4e-e7929ea0e0f2,1981497481,12854924365842822688
+721bb3bb-679f-78cb-1dc6-147103ceddbc,728529384,11554770877459336177
+9cc3d9f5-922d-434e-0644-25a51633043c,1081724877,5639191043346896914
+2c6fa18f-9e37-2cf4-559f-9de74f033ad5,2935076409,12772423299015043247
+d04444c8-abb0-a20e-54c0-3c825402a133,717802138,4549869589659978467
+d281d52a-3837-c537-79c2-8ed6be02fca4,2672196648,15238142443595456609
+5c66b41f-d708-9ddd-ae57-05494a863357,3628566663,9545392594018012516
+bcef4a48-5c9d-ed27-0b50-0afef6a4c341,344519730,17176970852078816536
+b3df324b-f64d-cd11-2525-9ec9d7e9a970,107914396,5545558160256135116
+4df4f04b-fd87-93fa-3a83-22a9faa46f5e,1413842495,9759755574427690669
+d0765fe5-71d1-e965-1893-475dbf118ecc,1136362618,7176903614185770006
+7ef4089c-7f8d-c50a-2c02-cb482268349d,580724455,822903066524907858
+5cec5c81-8876-e4ca-8adc-2f5c4d791e03,1418388791,17030081769593252737
+c47987d7-f197-49d9-a5d7-67ba1f5e6fc0,2991171118,12021055415288580308
+45d6fe2c-4ba9-5788-d963-0c4901b0a4db,3946178414,13825616917946008596
+86c58354-21ca-f0fc-8bfa-3c766a31d17c,3864270601,10560779407700801641
+26bae2d4-ea8a-1def-5b3c-5f4612300c8a,2509376109,10145887444695727155
+a4ea3224-3633-2da2-1c35-fd0d2b9fcca1,4175412146,15421027523651606667
+8808aad4-1971-6706-489b-37e04219a52f,448322786,6948690762490564932
+49e0abaf-0536-295e-ebd5-19a8d8383cb3,2997860796,17117391262831898223
+4d9ddcbd-f09a-7bdf-f696-48f32314baa2,2108629514,1412829742918808028
+38a51998-d744-df61-d5ac-1fc1124ef920,1662739324,16259425863824369314
+b173a037-b54c-661c-cb2e-227b916e77d9,2310477572,9424563571152739253
+7ebd2a72-4ae7-cf57-13bc-e8554c9f2052,4079412058,3593928196648391482
+e7aa9b3e-d506-d5f5-f087-f2e38bcdb9e1,1402348175,1273901655206180819
+e6ad0896-011d-7725-d3ac-e2a84e5ea02b,3034283427,18084144257867808296
+b5ad2c33-75d5-c8ad-1eb2-dfa37fdc8dcf,2857879198,6589046637803574774
+9717d0d9-4f22-9686-0113-f203bb9f8678,2932265112,16069291566802174743
+86f7b6e7-dd46-50e6-52be-e1bf91fd74be,1423283509,14292834414161888444
+28264c2d-9fa1-800a-9c8f-d54542980f5b,1824445638,1977070302119525027
+234fd9fe-e5bf-5a8a-f23d-814b716077eb,3195266278,8308543029481661051
+f4ae3510-40bb-d9ce-5970-98db32d11fa8,3334456997,5632820921880934226
+144ad02c-da32-1233-b537-2b03f12ef2e5,1889111528,947979622319529551
+c0d085bc-d56e-99b5-db48-85a017cf3050,4272133843,16115613906031571417
+0bd08221-4045-5a10-508b-f2a8d8cdd19c,1152583993,18017773875219933912
+b4488428-694f-cb65-3bb1-769b5bbc56b4,337149023,13050992868616383047
+cad1f4d7-5f80-905e-d527-5f73725114c8,2185397684,13095620323359322387
+16c87519-101c-3550-9c25-4d9fdca05b4b,473596280,17318532633254954766
+5b502ddb-82f1-2e93-78dc-911a1a36847c,4187506236,6316219260022996611
+8a651fda-0c1f-bd44-cf5a-77ad0cb49ecc,1040462816,868361090344978335
+16c725b5-31e0-378b-b2ec-095a491e4f4e,1718686979,4818493858670227694
+f24359be-6919-fac1-2b09-ed69d6e815f3,4197161698,2928253609696417509
+b86180c7-b323-f506-30e7-6afc126c950a,1127831614,7926093856879500632
+f04990a7-ffb4-b460-7aca-54bbfecc30a0,614486967,7694438440658570569
+7300641a-9d55-c556-94c2-5447a7798c6f,13759927,12025827403483999313
+39048f2a-83ef-6b12-8288-690ffebd57d9,1347587360,12578222923577428402
+78ce8b17-5cd2-e337-a606-3d4e5494a224,2784476599,14489699910948167800
+ac9d0114-5e08-8787-8eff-3513ddccfce2,1758627314,6650163607446207726
+37b33b39-67ab-76ab-1d4a-ccdcb1bcb5dc,352872515,12518732149114663982
+d59938c6-2303-2c76-1175-14a63ee32a5f,532105985,3596425285459770804
+eef93546-8f92-1ebe-750e-e4fb9465b299,2272678099,692825711595045489
+da05ad2d-22a6-a6a8-eb20-b8e937adb96f,1306304165,9082085679580949139
+d6d33db0-0c3b-5103-84af-5882101e6624,4211771767,5690359122099303798
+a56e0a36-1cd1-83d7-62fe-2c524334e21d,1303381625,11023570757915965196
+73956c8a-b7d1-fa39-4142-c135318ae347,15659097,16176969504048390491
+c5e28dac-8a08-cfe8-c388-0af4bfa9d6cf,3424333830,11263121778540068671
+2976ea4c-fe67-fc68-c676-ae4059824b13,3123764819,11331265607744127643
+b456fce9-c89d-079c-85fb-737e94806c03,1699023691,9324194894879547619
+e531a0d5-0765-2b1e-2498-e8606ab614c1,3268507706,5153042757659883537
+354299e3-0ab0-6ba4-3096-0585a984fd59,1501996941,15297583872590916555
+8da8e895-8824-c595-5929-c26f48af0e9b,1926124546,3924943468415226476
+149bb036-644d-e799-2deb-966b5e96f285,3280829147,17827886668048456369
+df9b29c3-1d01-0b85-e040-5219334bc774,1331127520,7326919916566785960
+09506de6-dc44-0c7c-dc1e-9afa7e6129b2,419732392,17266738656346065653
+f4ea7989-fea4-c6b2-dd04-850739352712,1567960394,18234316244857679996
+6be702cc-fc03-04ed-16dc-e53cb5c75886,2319076533,17363626006520448543
+f456da63-d7be-a949-72e0-d189f9e2e341,3734554526,979111777933384397
+4655aa54-85d6-b31f-677f-40dd8085133c,4124592957,5514382926480689951
+758b9d8e-475e-71c0-7241-884eeecc18c9,463667826,15124819255653538161
+d3b60381-c2eb-6e17-9fec-f632eb9d15bb,3239697112,14885367368453679050
+7d2ebed6-032f-2594-c428-79f7d37d3d99,359084125,15261327075834808575
+dfffa9b7-a824-ab72-d2ee-6085fefb28c3,4242862284,6354626708574342154
+fba15e26-02ca-1c51-a7d8-10d3c4dd2e54,3291194094,5055447424799931753
+cc35695e-a3c4-c05c-8e24-57e51f2128bf,1393827871,6587823151904584999
+a1ad4085-8c27-2a37-3bcb-bb5c4e52e3af,2031315033,9462196720926695205
+0851e00a-2fb3-a285-a43f-6e10685ac2c8,230873279,6923452339380466327
+f90bc8e6-ab85-b5b5-0c9d-f17109aa2d54,1278024751,7823408590290380602
+10127f8a-e451-b239-48ae-5dc01edc631c,1950282504,18151833029873394052
+0e0ad0f3-6000-9919-5d0d-549e8d8a0b2c,1134403222,7849068286654621228
+a395c0a0-2134-b93f-c5bf-db4b80ad0904,2322722310,4405551939243919030
+d692eac4-0e84-c142-b6c3-dfe40a929222,663727850,12464076469953050028
+80c7315f-add2-77f4-2963-e492a5bf86e8,1922492142,3476972985321716538
+db9f02f2-fc7f-5853-f4e7-184083e95537,625442501,11084382405390146957
+0d2418b4-ecd2-603e-c440-5b0a76af3817,1692982872,8526700680103960647
+99501229-44cf-a38d-c0a9-d3f30e1a1eda,1103391266,14116489946955919619
+b5dbd527-70bf-0ae8-6f9b-034ff95a6fa4,2435138293,13801998644605102022
+f1779bc0-b4c5-379c-a58e-e3929a44aba1,3615738014,7840202408504557787
+2ba09f17-c66b-0cc2-8fb7-c560302a23e4,1213330689,13267203237558781539
+9f6583a5-be24-fca6-9179-f551b1bc31df,3154298459,15657995780740541479
+dc63484c-6d53-1dcc-397e-ad1163a97daa,1861114403,1606288599390748742
+11bec928-2d73-118a-90de-0dc72f81b33e,2456682098,10600372489225314601
+e2302888-1cf2-7603-bb72-0ec73bd3d130,2949555941,12770745898270266836
+cc79d527-e889-c5c8-041d-08053ea39324,3043227049,8896339625816525088
+578ce0c2-3d74-7bce-b929-232a99b5f349,3146819245,10593876312653138219
+c99abd0e-5061-ffc2-c738-2020bb3689e6,1095314711,11772306721782373587
+1078a9d4-ce0f-1a7d-2068-9e8351be2825,3634287498,4467645623911736752
+81288efe-e627-6deb-5c97-fb0d6f2bf515,1665773551,14844127274214835161
+64a1159b-24f8-5196-c9be-f0b75d4a4de0,4028016311,5445950883166426005
+a3d1cd1e-317e-8c30-4228-59c042649dcf,3956088856,3562196853425280211
+f026c5b9-65a4-2c73-2dd4-b3429a9aef2a,375688189,12132305634608161044
+b3dcee69-132d-bcce-27ed-06d6b6bc02aa,3783903958,11768766182652620176
+42d74436-a72e-d9bc-213a-aa8c94d4ea43,2516693291,17386763179326267381
+43f77c65-da58-8112-72a2-5ca61aa04869,3431914054,466405172455632004
+389e60ee-18d2-30e5-66f7-1a52c6063d51,3382160671,17024538672663036077
+6ac3129a-ec6f-14a0-03a6-0295b2a68364,3093835788,5212570905961024138
+aa186a1d-f3d0-bfb2-73d4-6e9658346e9c,3534003945,4350874345137898539
+2d157399-2eb0-7c0e-2d39-666b91eb47a2,3366897849,13239542919146588682
+7d3e3373-ad5d-f5f2-79c7-fb2690242999,954276967,7354378556954193507
+d7f7e404-b5f6-70c7-8a65-94ce21861004,904068019,671888103434943765
+a4d71f68-b365-1acf-1522-8375825495ec,432321727,18378510022077765028
+9309abc1-6956-53f4-bab0-3a71f3f04e1d,1360951492,8567293290998439137
+338575b5-93a7-4e8a-8632-21b35aedfa58,51901007,10011088318003639160
+51a8488c-7791-6057-152e-62e38dfd39ca,3224464038,4736765634501844800
+a3507ca9-3e9e-ba51-2684-9131f503a8c2,3615592751,9506904056386661053
+5d21d4bf-82ce-346a-8aa4-1b18fb034123,546203681,2038400881143005988
+d0d396a3-7c38-0866-3bc7-8ee47965bb50,1694342896,6088726183221412602
+ec86f4d6-18b1-1083-58dc-b147811b3a6e,2544089477,3814081409448097114
+97578b7f-c122-6730-29bc-c4e3d6270ada,945017996,10037483143197272721
+3dfb4271-4aa1-c2a9-301d-cf16734ab35e,410745796,2959532983143819867
+4188985f-927d-e29b-255f-6f6fd9b10014,370200762,17158061277059856735
+40f396c7-6793-03fb-0432-da7fde2da6a2,1815303078,3851031707087812202
+107f53de-3566-7d20-31e0-0ab59de2aee2,3272569279,9577946340617934611
+5fb72bd8-8f2b-ba26-a34f-e7b67b18a8fa,3104833495,16440076078500374170
+edfc1677-63a6-60cb-3c7b-b94d340c2ea7,1265418041,13511643735572323514
+11704631-da8e-fa0f-8d94-5411cc7fefe0,993616911,7617824855170260077
+13bbe718-06af-70f5-bcc5-cff01f899feb,2742533200,6428941964010037695
+8ddd800c-9e36-92ff-da4f-9ac7a96fe544,2489056797,15372399787220659833
+b4081af2-aea2-73ff-9d3d-8ccea86a7667,1085279606,3618998742425382579
+fda2f313-11ba-80e7-2125-004012266336,3084115572,6778319770311623829
+1aa4b455-1d1a-0fcb-e6a0-8503d8035d48,2522466219,6257159493080166308
+48b6baeb-a9cd-a547-2ed3-b28931db02e0,867687349,10291588492271530527
+90c144ac-3811-e0c3-aca6-cdac98666192,3825453162,9035135861767398821
+f2f034d2-1712-78d8-308a-1c9036d7582f,2275853554,10525127996347708215
+aa58670f-6f66-b4d2-4dd4-c5cca6bb9329,933282564,9748920965296809021
+2e700de6-bbd1-1c10-c533-bc3934890b58,3923828071,13015693105149166101
+9eac078b-8476-aa04-d6f7-0d37a3c68aa9,1006582236,17928839365248362608
+0b4dc9b2-d752-9a28-c3c5-070de9d507c3,662831320,9141985115341711386
+953a2f9d-ac4a-2e19-394f-3b9ba7cd0d80,142698822,17901734492852371396
+8d959f14-99ff-540d-30e2-0436b66b8d1a,3712761447,11560958216598748099
+efe1c11f-8553-9c06-9b1b-826598dbb2d1,3873503189,16685267625006642600
+16edca1c-4ba0-5494-7de3-049e964ce9b9,362570201,5324493053187389587
+43a3b581-5650-aa73-b68a-5898ec90317f,2783508547,17750451218929674152
+29695609-832a-122e-92c3-f3ca5e0aa17c,2136978082,1736635371894603948
+5a5ed57b-bfe6-3538-ae23-3fe1c64bf0c6,2081236848,3941970875516118788
+4f60268c-09ee-7d42-5191-c4dc3d922bf8,3838630356,14415341832674267555
+29d449f3-7cc3-776b-ad05-f8ca6411f915,4242862432,17235719118907379866
+c2db3d8d-f23e-de36-ca3a-0def6b261724,2581503475,12428710571177392128
+8fcd139f-143e-59c8-1358-6761093731c1,772253938,2538186078171858330
+06fa8e58-7cc9-4023-5bb3-0099c722fe6d,2206715775,4487039833134253389
+9d53660b-99bb-22d2-5065-d9422e207824,2528781479,3261560887277503121
+860011ba-855f-06ad-941c-e5cd32e8b6ad,2320318210,9711653234966792587
+3a2e88df-aa95-f9cc-f84a-640a2c33a8b7,3947858235,4861291041083107647
+16470c0d-f4fb-c600-a18d-070ef4b40e4f,2868180232,16748422089827698109
+0adad7ae-4ace-58ee-d3b1-318e2c0cbc0b,1797958484,318100082977787550
+2510ac85-639d-388e-d7ab-45deeb03a681,727170659,7720064481976478683
+bd21c490-6c24-d051-54c2-1d1c0800e3ee,1847624715,2025345174846618261
+ec6f7c8f-715d-02fc-9f37-e51fabd9ce45,3085980068,5251882834142786230
+008490b9-af84-c67a-360c-c90d41e021e5,2742878447,5244737970366265176
+a139aba0-813f-5853-362d-28093bb05556,2936044639,9132337842199117410
+6f54109d-2be8-1e78-2da4-809fc0571b93,3737608297,7844359519133042194
+3f9a57f2-b8c5-0054-936a-1b9418d6e166,3389667938,4198970790562567838
+c419c6f3-c396-25f2-4d5c-0b4cea7115e7,2322293183,11691943222164735957
+1c5c51a1-546a-3dca-1a8f-eaf02a4c6990,1550389221,8852041462380000930
+dc0eeaa4-9e09-f72d-4131-ebe931626045,878469782,11953132606122070415
+4946ec18-4969-0379-f466-45ada366ad34,638313319,15005451863029377431
+4fbb2a84-910a-706c-196f-4567dc5cc894,1011440897,7918973464611678181
+c91f3228-28a1-788a-aebb-dc9cf5cd18f7,1591502142,6419879027048236803
+631b2b5a-3083-967a-7bf4-a89ebe74ee68,3747689061,18118586547022985475
+da3ada03-5af8-97d5-9637-1a8f30d4424b,890359588,7278081741474853641
+8eb4abd2-458b-51f8-a977-0ebe1d32d045,946378738,6742665747092326281
+097b2571-e62a-cf28-e930-d700d0e2d0ca,106594389,8868575274871677013
+78ec43c8-7f47-1516-0a9c-e24386c56df8,2827026986,17741453972718457117
+95883409-c591-2b67-56b9-bc4e3c7a08a9,1113125822,17251175179101233641
+e7a75381-3bd3-214a-0aeb-66da2239a224,60954117,11584768338537300786
+d1df5c1d-c13e-31ee-5cab-e15d3062cad6,2151231866,13815933708887502636
+2fd09af4-f1ce-a59f-1190-aeb2dd681c83,915219134,15351714857122489949
+6c59a655-d014-7749-5557-c6c466b74003,3229012851,3366601277714630042
+9bb17b38-2c16-7411-5ae1-67342ffe7c1a,2686418890,16762286387988545260
+0491dbfd-0890-83aa-8ef9-e6cd820b5d6b,2325260454,1494116797737112816
+bb5b3383-bb6a-fceb-f17d-9263b54a14a1,2483544834,6530646695645110163
+cabf4d9a-4896-7b1e-6c00-fd6049748032,521401916,16457445511331220242
+b817cc8c-4c70-2ae1-6579-ca88ecc61ddb,1159985020,2867567683162526179
+289096ed-949a-35e8-c25f-8fe9a30eb858,3515573254,17915344606385305522
+a290d6eb-43f6-87e7-b509-6f8640f78b4c,640643575,3837765620337233561
+ee236a90-0210-420a-d7b7-756b8adebcb4,1944459762,5449753317802036753
+dcde3901-c0f9-c282-0c8c-a8d99f9b9358,3426096024,17298441099360697683
+521e7655-899c-472f-1d9e-5d5cad5a5ff6,1293766856,13145807578758522124
+443e94f7-d223-f20c-e9a0-7c4141c50b8c,1855916314,5106545603526821602
+e3bdb29a-5f64-33a5-6ae0-f783cacad378,3515034162,7245055537897735868
+e52f5c69-75a8-16a8-dd88-dc88a7c109e6,4061662171,5922102996036070457
+e9f734fd-9de2-641c-7609-a5e2c92ccff9,1868511472,8233174917689488274
+87c6ca1d-7b68-bdfa-dbc6-4e12ea59f39e,2215748437,11167748954946758024
+da85f000-71be-48e1-857e-3975d0310a25,1338930068,8347005001631665076
+f60f7ba6-92ad-d302-201b-dca2205463c3,446997431,12009741161820226067
+97ee51b6-ccf3-0f38-b786-b24c678120a9,1766626404,3927814810895887317
+93c31fe9-b299-6793-903c-008c28989276,3302630049,16501250406436684532
+8ddcb92d-66d1-e50d-78df-668236ed0a23,3040869395,7740896137746523126
+c8f3da7a-2ac0-cb0b-538c-adf74e3355ed,2378794270,1141126804282951565
+3620fd0e-cfb2-ada7-377d-c7eb2b5b2515,3378144311,7931158390080615060
+d09b41e3-7b1f-00dc-8ca5-819a70075c79,3585799641,16861954020295529955
+db206de5-07c4-f841-8d87-54c207896716,3139853825,17545476065715534921
+65df9888-87f2-9a8f-90bc-aeeac3d936c9,1780032306,3789384248556608104
+cc585c65-9f23-157c-8c02-f83285cc1d06,1668011909,4711597716323778768
+8189ea77-7ec6-160d-04f7-36ad19eae961,1017510384,14153407637411938275
+b660e1d2-60ea-323e-ff2e-795ebff99b41,835416970,7413214108281975056
+6f6dc4fe-6009-9f14-4df3-fa3d948adb21,1887109955,11922143418504835598
+f54e34b0-fda1-4142-3d50-753795dcd160,1164443152,7065987760351932281
+04b77d38-2156-0d8e-a53e-be62a7ca513a,2457816629,10382922292714750946
+495d96de-5442-d699-f2aa-ded6fa004828,3069897397,6060361344399710126
+bead9a46-de3b-cc49-9081-0f80054dbcc5,448448697,13033084302638327904
+97d690bc-cce0-8ca6-c90c-c99c69379477,1203551269,11999573577875999307
+477f0f5e-4a97-e762-8dea-d0ea74532b07,2876801206,14336982272012783597
+70475ac3-4287-95db-f1fd-89d870703f9e,2365312683,10767188791167125751
+b7993e4a-932b-e115-864c-eafc5c731f09,2358168166,15736097344231219848
+65038ef7-931c-0001-b593-47099228209c,3354842598,15504132205061455683
+3ae8b7f7-ef55-cfe0-af79-c15675bd1ce9,3792390424,17587763921400203821
+afed8eb8-0565-a36c-68a4-0e6215142f40,3834757392,7778024399519072723
+2f5e903d-e7d9-6ae1-3333-802c5238cdbd,1809047477,3765743324293947208
+17055f6c-1f48-4ba3-706e-be51fa1ef1c4,988416790,15820453011730283775
+22bd5e56-587b-b6eb-080f-038582a4d031,4270214591,16170465415555666906
+c05e02d8-d31d-3205-7983-e44d6b1f2847,2686188622,5281018192404722548
+73fea4a7-b6d2-4940-bcd9-391c289a3153,3550381964,10980361714594745187
+704c18e6-ba8c-8e4c-793e-6b87fdcd5b78,1756523157,9416008112356426878
+c8196339-2680-3b65-98ee-4ddca44e0e01,2187880501,11866436786575494622
+fe62dc93-270f-c19e-aaa7-c3c9002adf38,1664754691,5460358380763780936
+313ace8a-d71c-0a66-e391-89af3832a5ae,3949551259,1430296748170348164
+ba0c09e3-42d3-46ef-5e60-734e1f53183f,2539069988,5652932843521239714
+2f4f6b65-2785-95fc-0a4b-3280be33c813,3432775522,4721934848014059373
+a074d10e-8c25-c884-e5f8-bb2e615d96d2,3817318972,11702924991024504625
+2942cd09-d308-ffc4-7757-5a6f4724144b,2476372993,921640624910094551
+2e575166-8d24-a213-9b39-6ab0b500627f,511078766,18236720442227781303
+47934bc4-adb2-9955-8d07-0654d7513e48,2811915933,12035798021902384806
+f0d076f1-3663-ab8c-b85c-043dd7610a5f,2868853384,1298194305082984921
+b8807983-b5cb-df71-6ec9-eac2a594eec1,2838512291,11222223059933542116
+04ac7101-8653-49dc-a1ec-aca084ecbfbb,3021902283,6701871610668794758
+ac275522-e610-1696-03bb-71f224a556b8,959955973,3443825198086900758
+577a2438-9ba9-2218-9be1-54bfaf43160c,2459422594,10835448163873767726
+01488b07-b29d-f06a-19fa-282fa4159503,2760683910,15287322762768759862
+80ea90db-5380-239a-d6a2-29b1ac6651f0,2556149836,7736043398987454675
+257d971f-5862-fae5-da20-1cd5cc571c94,3119753084,11026195723070943939
+0a1fa871-c83a-19a4-fc14-eae066785948,607790041,7272768374195748511
+58ec94d0-7974-c17f-a164-344924f6e764,1891032378,17586327748962785789
+29f2313d-2cc4-1dfa-4fe8-435e9d973398,1221017581,1234682727391994214
+089dc27f-0e99-547f-d6da-a76f378c52e5,2645892742,6273795303825884514
+71b2faa5-add5-dc16-ff3c-34ad4341b224,2755693355,858003984177977467
+cffe6964-a6a1-6598-cc42-edebd131b9a0,1641310608,14505468125664667582
+eedc1fa9-6bba-e289-31e0-4efb1545de15,1995039269,3360051942654390382
+9c57f05e-acb2-379f-354f-e032d2106afc,3742360547,5595527468157841999
+83881482-ee12-262f-4660-2d2212ba6c84,2185552702,15660119555672730284
+cb5bb529-5fdd-2d5c-9f9e-c05e7ca4bc38,451627755,7264719288197784897
+20208429-0bb4-cd92-3db3-d511cb4e7949,3618409514,3276711370675996022
+2cf53f09-1207-d89c-7b50-02275164a18c,1178813249,5822717127848714318
+41c0df75-7ce0-b313-4fae-995372591d9a,3190187505,12630163457229744347
+ebea8e59-9bbf-2e11-d465-e74a2dad6f4a,2515028878,16562617278699895493
+33dd2868-d9b9-556c-9d1f-9991aa493afa,616099976,4825700069580027545
+e414175e-7cd7-71ad-2fe9-602c6f16578a,459807242,11369807003039062108
+34e4a2cf-81cd-75bc-6c79-a85f958d6aa7,3088826357,9283177790875545646
+9f402139-9885-4658-e208-2b76418cfdfc,3269167146,2852741187967815185
+bd36bb47-4a78-7ebe-409b-5a30f8b455e7,362283785,9693117542971069645
+a4796b84-5796-9b84-7cbf-6fd54cfc83e3,1536108797,6510117842235420168
+e85f8cd3-d759-c95c-5107-42dcabf96a88,2786895773,6870592423883115517
+a52d5fc5-b95c-2489-a694-ed579e07f0f3,2316918826,5540501212956509634
+82f24a2e-a423-0428-db50-a8e652c0fe9a,3908302284,8351631879352337357
+88621ca8-5a78-952f-cc2c-75695968d380,3446477329,16042073820018318962
+54116310-3ae4-4b3b-b829-1de86966011b,73297358,12546687101631548774
+c0e9317e-42a4-e097-32f6-605bf17dc3ac,55675301,733854241138650949
+f298713b-bccb-da13-25ae-af3f2ea20018,159048464,9941170794400480629
+27c27170-ca7f-c132-8041-941fb6be8c5d,3917382308,7739526423264842280
+0fb2edcf-22ce-bc80-a8ba-9036a0162e0b,3910842270,18347060624143071555
+9f6d5f2e-4590-1db4-7fe6-f7d35a275b7b,668824416,18287165099225565975
+40fbdd6b-c812-647f-8c3d-0c3cc7092ccb,4278578988,6733415312353235987
+5f315b5c-9820-1351-1957-04cd7ceaf4b0,401454503,13039639412721396146
+ae896ba9-8ceb-2dda-a45f-ad6f287f5144,3915136962,3015095502342131187
+28231039-8ee0-0311-0154-2a707c254cd8,2973682199,7682439834306689214
+289e6467-bdd1-0ddf-9f7f-0b65fef70bfa,199376688,18107381615958023150
+54d6eb2f-9a3c-ccb3-c4d4-51a73d7072bb,545472165,4368531912697149544
+94edeb91-f948-75dc-ceb9-1f188f81c2bf,2072259161,12932526932169073634
+96865daa-a19d-2947-06c0-1b9ed8420404,42787055,17660730936553363545
+bf218c0d-05c6-5afd-b833-48b52a1c48c6,540135595,12297711596506282111
+d9c65466-1651-7253-6fc5-6cc5f8efb280,253404789,12182626497138296832
+96793278-8641-9755-00f9-d7eff804663f,1762301677,18346658914452565020
+60797e3a-5335-89d8-2a37-0c69f644b598,1994756583,15246681419847688806
+709480cc-14bb-d97b-4500-996b727e36ff,1382362928,10736089078704654072
+1abf3802-c6d2-2689-2a95-0d8e8cd2378d,642967188,17645572606127250395
+4badf18e-f55b-ca73-edfc-87a40328e4a1,3018049300,5088623630082678583
+bf4c6653-7821-3925-e3d1-3ce161ee331f,2171719896,18264345855731820725
+ce66b64b-b905-61e0-eabb-e43afb2f47f7,823479055,1134008206010164301
+b075c852-034a-b22a-784f-5c66b1725d82,2453846210,16627367108781148425
+e0d49d64-fd4f-6609-d0f9-d4ef8ab389a9,3577497671,5946134439925695641
+cbf8ff75-a3af-5ba3-7790-0e2247830ba1,698407302,11609227213470013481
+9597bb90-a396-5ee9-ae2b-78f08cbb0a70,3165015454,583873837001474419
+2c83e497-217d-b3bd-b428-60f3a991299d,1815036860,3604325805807260490
+6bf6d42e-7056-c34e-b64a-541783d4e1eb,3841000073,17047354414901331283
+0ea7fa0e-b057-30ca-91b8-55ddfa377381,318092944,2566680177299820554
+9024f125-20a4-cd05-7205-ea736105865b,562989032,11764316013420692383
+ebe06f0b-7bfe-043c-2132-a0613f398601,972702936,16179829884074073858
+164fa853-b37c-623c-41a8-ad41f407f9c2,1352697064,8902206823254632853
+878429d0-c9cd-0909-a677-b99ef57b1b29,4036094800,5486031045963967217
+f847ece6-3c61-52ae-47a6-0593ca175c02,3814429127,9473186417248731926
+d8ebff5c-4853-5ce0-4ed9-e8bc3c653927,4023187514,8278131303187198389
+72a8f89b-c12d-a2f2-8034-ea1e56b38e8d,2573650772,13556282004865572149
+d63bf19c-36a9-7316-dc75-21af7583879a,1859323472,17851693953806401273
+725bf958-5330-6441-9cac-f5302641e95c,1463196809,1326422104662547755
+6a24ffc2-ef93-6c69-5c33-7d57d808e593,212907839,2294445522941233376
+6191fdd9-4b07-813c-5f7f-7c4325bccc6c,1336241843,6730401173943012732
+d74de2b6-b0f5-541d-7aa9-88e5db884ad3,3237664256,17268588389886915287
+bc694fcd-4696-d5d2-f2af-04a1f6022b5f,1448282458,8832511012427047308
+e032e011-f3fa-228d-a1e3-8b8ab1dff11b,3076922381,4955727142727930305
+d4c33344-35c8-32e0-53b9-873afee3d560,2691573556,14585146442649674320
+55e9a9a3-4c51-5d8e-1fa9-ee0a8c7f9e56,1801282083,1582199292244023359
+d8e56211-2bf6-4912-43bc-595db22700d1,4031188840,14596330929241467259
+f83c7dfc-7d6a-8ef0-fab6-69c75f0ec045,4038500101,1439289639589296597
+a344df02-85bf-79b8-ed07-e76bbe2240b9,4092575702,14069903769986441271
+a5194191-ffb8-e9c5-964d-1cb3d8b40aed,1990539479,4061950999713323067
+b146aba8-caa9-fd42-2a1b-3c6fadd85b28,1425082250,6328777462477605025
+802ea586-9806-38b0-858c-36c8493e8025,87355469,13527032547037437751
+38aff9d1-96ed-7968-8d09-dcd21344431d,3213359638,11954091594470311257
+8b420ab6-fe11-9baf-3cc1-fe3b29a28a8b,3383179779,5556992413760151224
+48bbd937-8f62-abc0-f160-ed23f2730b86,1017935369,15424017173535204206
+ac530a39-fc48-aa57-d94b-ad8522b58477,645292479,12388809121745677809
+fc6b8591-9409-4a26-c724-485ef2d4dff9,3278506235,15544397777716828302
+3655f52b-6f9f-3425-22d0-a387e1b98fdd,901912298,2569871955712984067
+54902245-a870-3fba-8a72-3f2685d2373b,710311360,424752291133376125
+ca02946c-e4d0-9f45-ef66-c7665e8541ac,2824394068,5930775917430554350
+1e834f6e-570a-2452-aa48-6e9a99040762,3505230167,3365999722338029005
+ad670c4d-7be8-fa55-6bf9-6a2178224a06,3879624426,6868241741652528521
+4fecde5e-2836-607f-4cb3-d5f5dee26d5b,3615357168,11006604614948816764
+cf9639b9-409f-2845-3fa0-f0826af0960c,3558400679,5687581033855506171
+52a44372-eba4-14b7-a65f-5f76500cc685,3962892703,10503780021441918204
+6aefa0e9-6531-51ae-404d-35d41c853430,1148135194,7758115958401413504
+3e3ca7f5-c280-513a-9172-9a482532ef09,2454353622,6381741772902653919
+da484f14-0963-6143-4bc5-03ad225b2eca,2463554534,9838281773470720506
+6368014d-725a-93b7-3670-1b4c0b9e0dec,3681891271,13781398244453772674
+1a008561-9434-a13d-c5b7-e23d25cfa49c,3308352489,2959320469900206658
+ee3dc9d3-2a34-9b02-a4a9-f8627ad7f9c6,3567649637,16749069128093278489
+4cf5462b-4508-57cc-fb8f-5c82cace370b,3417318923,3736682922654738258
+511c643f-fc59-18ea-0457-9813cd7478b8,4003959503,6770433384151964713
+c79c16b4-9fb9-8e87-c816-a0be4651a5bf,201512260,1891034529440792409
+319e4d18-6555-1557-df0b-f0e64bafd8e9,1223744776,14920723705145596747
+78323a69-6a37-059a-8ca1-7e0c86132697,1749051702,2740916880929409403
+6fc97891-6e8f-206e-9418-af127f83d634,833863861,17471895983374984140
+91885ed5-2cbb-9db3-c5cd-c1154abe4867,3955451726,18313125019637751198
+3d4e78ec-8570-2a70-33b2-37b12246db8b,1483102683,6612443398541104715
+077611ee-b8e9-704e-a847-009a6f0e2772,2753849370,7017963075788937569
+b6a798a7-e8b5-d571-aa4d-8632ec95f970,2429390532,9651835030045554590
+188b174c-2587-e9cc-aa0b-abb3853f473a,3796377957,418833166987526553
+02629375-d561-c223-a954-9feadf26179f,1501770828,16532420750087851068
+1bc70f74-6331-31f0-147d-a330d6a4b7e1,2647679205,8892490280273753219
+7ec3483c-84af-c540-3c5a-0faa1ea075c2,2400164223,10951881071212288586
+05f8a9fe-0d4f-9327-d580-05bdf24da7c4,2272060820,17582301785295515160
+1fc9b296-0504-cdc3-8199-39786e73cb78,3070852746,6854238100235016445
+7867abce-89a6-b5b4-58a6-a1c025718479,1269449238,6669497503643564209
+cf1f6dc8-e8b3-f10e-d90a-b3ae6876d6bb,3404095758,10408082698040763453
+f4807fa3-75cd-0b02-b750-36e0c364efe3,2688785604,8004522240010050782
+19626f0e-d989-06b3-4a03-14d58387a736,1043737592,4562614469196230968
+3330293e-1014-ad3a-2f3d-4f22953be93e,3023752570,16518846074293680678
+7efb3783-d992-f147-1031-47fac43d812b,3043456623,5519394590255743564
+da0c1bbc-738c-b624-f9a2-cb6664d0398f,161271357,11326938559017286082
+da5d906b-37ec-ea2d-75b7-f096bbfe73cf,1864302680,14082552375023689745
+a72ab149-bdfa-fbfb-41a6-ac7a3b71da67,4218256892,1209726581882631508
+9b43fe7d-f17f-5c06-7ad4-47d86e3d6fb1,1274792450,2724282930774546878
+126edef1-8521-1711-4984-38fa67c2330a,2406338729,3754001665928326352
+9ad674ec-1a77-4642-41f3-027b68aa8efa,1780565693,13767346395673306408
+524813c3-dc53-fe54-0e07-e430661bc3c1,4224820090,2239945524093447884
+4fa82bc2-71d3-da1d-70a3-8de19766612e,1779974162,11045482081878528487
+d01b16aa-27cc-0043-f007-8bb1ccb9c0e4,1950274635,1535125728603723346
+66da8580-30d3-e990-f532-8a5b3390ff00,2317166864,5996920782902178063
+94507cd8-f475-800c-f144-b19561fb80e6,1860164572,17031640890827964806
+9966e4b9-558d-b473-ef3f-b37b07a3bcf1,3053231927,17392596819894558772
+9c59c4c6-e83f-51fe-54e3-fa869861cf09,3479053223,17465146313897887948
+175e00f4-8cdf-8473-a06a-88e3fa8a4812,760544027,5037969808165885931
+abae25b2-9f6c-0635-c01e-56a863906536,2305935280,16109540201198796108
+b7b71363-0eb5-7a7d-7289-28d31bf9cddc,1485897286,5455432760031530753
+4f9dea8b-21a3-843b-b9b9-50e3a48f50d8,1920330313,285525810626160100
+e8899fd8-c583-2645-2de2-2cca1d3fc9a5,2945097370,16267192199854150049
+9c9818e0-51f8-fe74-4f96-482378765be4,2700354603,15887963794815575518
+4d2df4bb-fd16-c0f0-4994-d73888298abf,1501009281,1954774313729905754
+e9be19e9-27b5-3fca-f6e3-b630d20703ec,1680311354,11531245639183113273
+a38ad8e1-b36b-bf76-94b3-4633f4c9c99c,1659100653,7930956125191040063
+da693175-40ea-51a0-1e75-d3ed11e0afb3,1348024912,9387724538007140766
+902eab3b-4976-4def-7b71-ff3d96c8cf93,3853394595,6460472055724975725
+98862204-39bb-d5cd-975e-ebd3141d7f72,1334217689,10510995065543679081
+5f6f119e-2e5e-6a4c-7460-252378a3e9f4,3969036208,9552392078183741085
+fa4ad9b1-4fe2-86b3-1532-a3683c503a9a,2014355907,10816909022209453374
+1fcc5f5d-ee5d-240c-a8fb-64de0e08fe93,3452007051,787105863868601673
+f847ccbb-baf2-0e2b-4b54-d4827d4e086c,2903679746,7922375178525507179
+f53208a4-b541-72f5-2002-31ab64b36af9,47074583,9466404686358401710
+42768a8b-37a6-072a-7401-b2d52766e5b4,196900304,17066972856505509892
+98089f16-b1a5-50a9-b8a3-9bfea9b57a41,895311917,3516758445179499463
+e2b68ad9-5cf9-0635-6ad6-1c35754fd256,3226761636,6027593476326528746
+7408594f-c6aa-59f0-a083-b53a06b79aa9,3272738335,6591381401378733952
+561c79a6-4b7e-ea45-9031-0dd99adba62d,762782293,4810461375523611343
+bf56ae97-cb71-5fec-09a0-7a1defc67e33,3442964200,14660601943439573180
+42b12ff9-d2d1-13ac-f106-0b6f11963e46,3271454411,7039830407333861453
+09bd398c-0ede-f358-81ad-7068b6be4913,2266107309,2966249960585839991
+34d2326e-2e9d-6456-1ab4-7fe64cc5a033,2971623734,1350645791028160201
+5437f2de-aca4-c8da-c1a7-fc46fbe140de,3197517312,3377810356751005853
+f9c595d0-eeb8-8575-9974-17732a502965,999873759,17183617214180855890
+43870458-9e16-92af-af05-7d5b8185ff18,2935428442,9496365711352706446
+c7d06aa3-d187-f1fb-5cfb-0d89b3c9795e,1371906376,6495834523279503569
+abf5b978-2a93-9bca-97eb-5639208925ca,2704786400,11706775574240478417
+9a1d378b-6ab1-0294-8638-7f9f8321e62b,726199868,4795145321421186947
+a2289cfa-453c-bbfc-356c-157a0531b406,755700903,9471515983091693379
+ec8e539c-221e-2172-1969-187504336ab3,1524071134,8176824835392316622
+865edba7-2179-0151-94c2-d691f0d0a4c8,321500543,13292437996988843477
+9118a998-bdf1-618f-72a9-dd9559e67701,4089636346,2675061768941896981
+9a995c91-17e0-6e93-32f9-0d506902fe18,3149551219,7419012579073262322
+2c131181-0b91-730d-c8ec-95a73b271ebb,1622299615,18187012954385389024
+45e4bbfc-9df8-55e8-aeaa-9c6693d61fef,1930574903,4421520084430709690
+20e0bdba-07e6-55f6-44a4-d9a2e7ef1f4f,1512590063,1209282514576083332
+bf3fb92d-7f57-89fa-b443-aaaad00763b5,1428770321,15033373795161129798
+d4668051-b399-668a-5c55-ab88fbe15779,2083180656,4377187417526467623
+e15a05e2-bc7d-9579-9c51-27875eaaa41c,1799925732,5870888962643410597
+a51a60cd-0587-e874-e0eb-75262be41aa4,91050058,10377051882217753612
+83d845c5-2d8b-2f6b-37ec-57d197595f28,1521862926,11662490519624628820
+b9fffdd5-3d38-a8c2-d178-50103885df57,1832792251,13713501490463086804
+10eeaeca-34a5-2f55-b351-3573d840580c,4058570831,1214110152012796965
+18becb58-78ce-fed2-3808-fb22faae46d4,466879721,11918709710203375171
+2de4e7b3-bd47-95a1-6e03-99da4b56b5f7,3202617658,6638353701946944047
+bdbb30c2-f0d1-f332-65fa-e90a3bedc00e,2571379180,4061081595160498020
+a527f5b5-6a4b-2e41-a232-52feaa8867a1,2570248172,4374298110164482601
+8767e180-6f29-14ee-42f6-c65bda1e986f,1009992487,16551309408103076193
+b23e44a3-4c31-4c63-ab2b-b0e33fb089ed,146612034,9570102156097350247
+57dacead-7cf7-d578-d83e-fe3116583498,3395805628,15965065428401677670
+6a19548c-fcf7-2a47-7304-02a947338ade,2926368389,7320813690163839251
+e0fb9615-3771-d4ec-ba35-ac080b8721ae,2055401470,6160403962419825980
+157d0465-29dc-dd0c-10e0-07953d062fc1,2899594333,12428010962223100492
+473075c0-5d70-6fb2-4833-da98d866cecc,3924717788,3647371446619765271
+38bf5076-69ae-4c72-0455-42f5df5a2ab8,3069827309,5169783219214369472
+6be94ec1-db6f-0e4d-e418-a4311e22bcc8,3767947035,18074698462117135979
+dae722da-1da5-5f05-9061-8b33107b5c85,1003008000,1751411276744966514
+a3db4aa3-a1a2-d53e-24ed-b27843032cbb,192845133,7154689030591910770
+b631a904-9090-fb85-2838-e002c7078574,2292850732,4773618073361482449
+67818281-ad10-ec38-4571-86530f5a0732,854394766,5527953727871405506
+4c6c27d3-9414-8fb2-767d-c7d322f7c31e,190536385,11928682698090447027
+1e9036cd-cbe2-1d98-a935-ef73d1e6f8f6,1690589648,5578345305607548231
+a8244093-9aea-4309-1b0c-309a9a732c76,229592130,12898007211933805043
+da447a88-92fc-23de-9a19-913fe5c358cb,4122954639,11980433567916377720
+9335e3b0-b7e7-ce1f-79ec-972ca621e764,1649369185,17732215160540612141
+60530e2d-7d7b-cec1-abc8-8fab5e808597,3957607622,10542713530189282195
+2ab332e7-5832-ea8d-788a-e345d071f941,3619442737,11605673971096948029
+5f76e883-4172-871d-5102-dfc0c67d66a9,3803764036,17172030347530186748
+50a82d0c-98ba-4b3d-b0da-e80384164210,2647984052,8867728069183944437
+d5d8c8ad-d6d6-406d-d0ff-e9beded8d8b4,2520740435,6986236288479999344
+abd00e73-0926-6e7f-4026-9ef385f2f515,46068073,7511130154826803300
+7dc937de-3bec-aef2-30a6-de9b59b17c34,3515052187,16713509000502656246
+991e00e2-93b8-2388-ff40-0be152ec480e,2189234449,5970460908845586379
+76c85d80-7893-d64b-0287-aa7e72b1c499,3074506812,3923824853393141183
+2e76f7a6-3ca5-7869-aee9-da8abf01c21b,929617122,14741849240335453052
+30faf9fe-85f7-cd70-5a7d-118c9352d6ce,1377670532,12186864711636182091
+902c1fbb-00a3-b004-1b2d-5e4c29b809a6,3893469974,15204680730048970549
+fa346e6b-d6ab-91e6-cb81-56e0cf21f29b,853529327,11967995932204602523
+4981e58f-2fde-be56-dc40-5a5f863f7db3,1920743861,9424801948883469273
+64d6c7d5-ba4a-3f90-93b6-ae097668e5b5,1717695369,6424952360450244298
+ffda4104-e596-6856-0e16-323ff3496ac1,1101188032,4955370597053955523
+1ba83f88-0497-0bb8-2d8b-2f1402de30ca,1773809685,7081172064564766220
+87b8a201-5b06-04ee-82e1-01ef23057610,3930945314,16755777453123177520
+858676ad-2585-5832-ef39-a9db56e53de5,2468032083,4945282125009541727
+63d31d4f-6e39-9c97-0ee4-8578259ff50d,10580909,9877060355030668242
+c4bb698b-c14b-421c-2ece-d15fa61b8bf1,1271910823,15412799594973929386
+e7c9005f-d4e5-0dbc-6aed-a2bd3ea7bd48,2958920775,9010625194501047944
+e837bc3a-18c6-044e-29d4-8c94de45cb39,2776229158,14492495076665431025
+12192628-f673-ce56-cb3b-1b3a7db39878,1776392545,7363324577737175119
+6f47c3e3-138f-7ec1-5606-dd0400d18213,214565968,3100303725675213444
+eafe38e4-f3ff-499d-ab28-76af41143cb7,3262878369,13486441773364410573
+672077d3-011c-3f97-25ac-d0073d009626,2539153025,18122255663809109076
+da5be759-f567-82e8-621e-b2b9d3a5d9e9,3716608391,5880948537188031661
+8701d5a0-c167-0c63-6561-010c8569bf97,2202495454,5007199515114859123
+99fd0bfd-d4ba-9703-4130-2dd378c44eff,2327146845,11507993293480643445
+35a6ef19-3b9e-df11-cbf8-805447f1ddc1,4088739047,17233496066349713042
+16cb8e68-89a4-f83b-d267-2e6e944ba8b2,3583998942,16623140339426641144
+91b1447a-b960-f42c-b673-5fb8e1bb784b,2608194079,7700801216895026874
+7f93795a-9218-e392-6747-847367ea2bd6,4111645067,6885867607618112241
+9973bd12-44da-bf5f-7dd9-351f76ae7434,2249604618,4475337650703043398
+d7009ec3-5dd2-ac9d-268a-a71489dc1fd3,1184598859,7417406742111944412
+bb11c781-334b-1e69-5242-69fc40b139e7,1237218202,17232064069797095201
+81e6d4e0-148b-1bb9-a084-feda84c19f9f,1934198964,15587849928246812686
+80450a4e-cca9-ae27-db66-68ad168d68d2,3530839977,11998633294039250648
+4dc26585-ec0c-390d-8afa-41ecf040d362,1113558374,2914742371231090000
+b71ae905-e2f8-8b8a-63db-c5e3d0a8d726,2815317409,8621299199889399589
+55225087-6449-6ad9-6d4e-5c58b5cd606e,3641266668,4012936628021886922
+2aa233eb-9c33-1de6-df2b-c699e9f44374,1989793278,6858027780265460498
+5c687e2d-4963-5f76-21c8-fc4089b8e057,130107183,15800584084753960480
+4cfdefbb-30ad-b21d-4122-49e70f74b707,2899352706,846023551631338193
+a0edc68b-9ea2-1a19-239c-51f60004a8f4,3483667078,2312510547393609320
+76fdb3f9-e5f4-cdd6-06c1-c3db58219d26,304587126,14665846926709842023
+035ee0da-1907-81ab-acb7-e8df6cd60ebe,3771307116,5198895707333408465
+00ce33dc-f415-c61c-0322-9c30948970d9,3182085701,254448132583886139
+5b2e32b1-6f0c-82c0-7a14-bcfb12f83329,3762426308,3504603790762665677
+71fa41e1-2e5a-1c3a-1338-9fc69dc33820,690154427,14520542324461340718
+9ecb8310-7ebf-98a7-eacc-a154c388dbee,1111971720,10320848937115357928
+63f2ab15-a6d0-6bd2-2a87-7ed100e1131f,3233489165,2380493569788644542
+7a681cfa-3a47-f3d8-0b31-a9b197375d0d,4142654649,6270899248151609879
+ab94f292-f7b0-95ba-821e-b962b7e85015,3649525800,5150375951075698243
+ccfd44dd-e90a-3566-7d4b-be0e20605188,873119645,6777321325267319591
+419fda4b-e45b-6b23-238c-5fbe72cd86e5,1434679836,11458690184100036331
+8985ac63-41a2-9f5a-867b-3127faf14e0f,1938538140,12526925912473762091
+787ef762-e376-77fc-3831-5f6e9efda7e3,3460957025,8900407504223673122
+700fe77e-ee47-752b-a26d-099fdac58b0d,764004730,2640343150087327257
+d6ecffd9-2d11-5c36-8383-727ab5eb9a94,1155050040,522720268962998126
+0c5a6dc8-1fb3-0c2c-1f1f-b2ca70d64012,1730439386,2325784560096488254
+ea813dd1-8e93-e04e-2faf-6a78a85794f3,4186211087,6151440044114160546
+218ae698-45f7-0769-82bc-81f26b29a0a7,3455534973,14573971724968617758
+41ba7319-a0fc-65d7-13d4-a75502fb3706,3756102171,17416738296857904708
+da42de1a-c61f-2a64-9a00-2c09262eb7d2,223500721,14905322396271551687
+07b57054-51a1-1e46-f78c-e8df9b865b72,4001591428,16536910326095603285
+dcb44fc9-0dd5-5787-d706-b570992706f6,1718221582,13051955856045119212
+d87dc934-79c8-2fa5-fe5e-d75c83afb30f,3222032929,13576396551548836411
+2deb8737-74f6-c045-bd16-c9486d3c7ac7,769606346,9978614518880314356
+d02b0b3b-823a-01ec-85e6-2d3abd0c8ceb,1873897007,6418089419556720106
+aabdb21b-a06e-7336-e7bf-1fec54175c2e,1836915573,16375909383673954828
+7231822f-6d25-93cb-111d-bd4323f6b319,1822411713,7021420789821714868
+602887d3-273b-5ff4-e302-4149915c032e,18720736,17458179441274640428
+88cedfb0-6e31-ff83-7e22-aafcd6b23270,817377416,7344229071384247331
+65d0869f-0161-124e-77b9-e68217534ed1,2347675533,12729842594639124661
+5eb3ea03-76fe-0db4-7899-a21ed4e8d499,854181883,6825042901531822478
+835de7f4-b6e5-d656-3930-deecf7cca72a,3514319041,387494630825765780
+8480c167-9dad-1bd7-9886-a49ff42474c3,2829577550,16710955148475578498
+d9a3d5c0-bef9-b1e8-73ee-33ce0285520c,741627313,6247416844600869620
+18f0461f-137a-6fc1-96f3-757def8f2d85,3607865762,7203948569208748820
+39ecae69-0daa-71e2-a0e7-5df2a6029c91,4187864541,8803183061939860078
+a916327a-2377-b9b3-5896-31003d46b06c,2901599721,16277476291562470778
+e2882f4a-4af0-5477-2fc8-be5ac0e3a89a,1727131646,1412365077923778752
+c086ed9d-f7ff-0548-ce44-8eb8b3e87b83,751816131,7176496298516298791
+6f82ee37-e16c-3cfd-8ea8-94234bb54663,4184361479,10204605046768701422
+af431d88-4447-c20c-819b-5bc0836955ad,1764536515,2332616144741667507
+6775f0a0-6955-5e25-45a3-e6b8274c6037,3213557224,4556850201531461240
+dda71d9d-8e7e-7a2d-7ce8-c4625da15e87,3734734653,16299648249219525660
+26e569c0-930c-ef7c-3807-a62a18a8e92f,4003167812,6907043149710138129
+5c4b8537-741c-cb1c-ca15-8b857b91aeb5,3089221780,913526858789577109
+ff6ab921-880d-3480-fc32-5815c509f73e,3316474427,13015696304632295391
+b42d4351-6a90-b2c4-6b65-0cd22ae252ac,4062462605,74309497068933340
+2fd2793e-ac9b-9b5a-ed8e-71b510c797ec,1138919810,15185416938619730298
+ead4ebac-855c-d546-a726-eb419f327a27,3197684500,1341000403889382185
+3b79fecb-bf2c-0242-411b-b1d7fe834ede,3046152492,11019435984426347732
+f9b9f99c-2397-b2d7-6df1-1fdb812d7477,1837314850,5445552905120255414
+aea8420f-7b1a-632b-784d-d65c5b485cf6,856277393,3092695094650403063
+eaae5028-3f06-cc6b-e278-06d257e18d5e,1562660287,11401662636991124094
+b3a5da22-6829-d269-6a65-07a763ff8e52,3161055048,8991708311386900577
+35df20f4-5931-2790-00c1-ef09452d76fe,3041002327,7007924418504189326
+8d545467-edc7-bb1d-0507-218bd63d54b3,1293687872,589356463646036848
+cf754857-8423-4359-4516-30cdcfa63046,3512388783,16495405515093181380
+3f02d4f5-caca-2ecf-aca8-69afc9fb231f,2653982029,4924188253641939967
+ab41f5ea-3cb5-648c-52e2-29128ed131cb,2251876335,16823661619844995297
+0a9b1702-9709-2841-4316-9f9051448f30,2927181737,2402137371818121563
+b5356738-63fe-7116-9c12-e5d7466420a6,1124608580,7617265711917849073
+049a623c-dfc7-3d99-b138-1822b5dba955,2301812561,2790991214528275707
+f3bfbe1f-4057-e52e-5691-c952bfc14a34,1792147058,2137928591762791976
+0a68d067-c1a5-62e1-89c1-ba199918a82e,619557096,3151030444787197988
+9a642bd9-aa12-ea28-d0fe-7666fd775af0,266321318,5449386363447757350
+09d21819-90da-bb58-21bf-684d344e1c1e,1045295255,4787264968325739869
+668f4ba9-abd4-2250-0655-0d93b3cf36be,91884381,4330535551894135827
+ecd6e216-0ee5-6c82-59b5-98520b471d39,1192467506,4687095877897814934
+834a0e54-131d-ad8f-1b7e-699b98fef970,3788664476,8077438909112096705
+925f21c9-11db-5506-f5ef-122e78f9d80a,2175635326,12391345293915676753
+bedafd47-70a0-8314-292d-1033c6c69f8a,871125742,8265833600402548361
+1987fd79-920c-9f04-d43d-61495ab725a4,389495799,5263818881798443151
+eff3ecc8-538e-aac2-1cfa-939bc69a2d85,1500291011,8216103966684628332
+a2d9a0ec-7416-7e38-3c23-e138ae27ec52,2194508363,5334342152091521799
+31ca90ba-585d-372a-befb-cf6f4ada4c64,618719732,3671634181671474372
+5665d4a6-d428-6480-5273-5ba48601c01e,3984885924,5191082058455771547
+861e22d1-526d-2af6-875d-0ea5f49a48a6,2774011683,12760467831060807303
+4d3779ec-463b-7d5e-7364-32607f00f9be,117342698,14217817317310050267
+f761c5c1-22d3-fab2-18df-6aee31224ba8,812694639,12041312143886066976
+22e5080e-a111-796b-eebc-c68620eff321,1150813959,8156961901598533722
+98664f99-c3eb-dc74-25cb-c97d3ab6a4bc,1286460248,11136412722680393376
+b80bb4b6-1f6e-28fc-8bcd-70e6766cf87b,926417078,1036064580862716714
+6f7a9b4e-ac6b-f2ff-0145-0a36698f3277,621719656,16586080342723117408
+a75cd685-ffbe-dfc1-25c2-1fb3ed471567,4290396236,2632946049010060462
+32944fae-3166-fd0e-3cef-b522329fd835,2592350243,11205860264715958865
+22e129df-f4fe-0dfc-e171-bc9b18359261,1022672891,15828179735812826143
+a9658b72-e220-8867-8dbb-0236e873b79e,2637632659,13049370654357081373
+c824e961-3d62-bd3d-91ea-a960254cc735,943027631,15082064520404968784
+f3810a1b-5e04-7aa7-6997-c4807c806266,4259183087,10175226742825605956
+692c67ad-db14-7ec5-c1ff-47940ae1286a,1076564127,7967059374706222504
+c1fdab46-57f8-8c70-e506-427b6206a68c,3630377122,12424328422352278648
+30d9acf4-dbb0-f4bf-c817-225e05b9920a,1094309466,5814233386879195352
+3faf8927-4657-cec5-4f55-10734f847a42,3329204157,4999453540313175279
+ed6422f8-75b2-b25b-761b-57c3ca73ba0c,4252544362,10537808163331954574
+8dbce3d5-0101-40d2-e00f-0d107b8efc87,702494862,16314984728823830638
+719d7f25-2039-51b6-1d04-d26e32979e5d,3313438430,17440479486008208989
+3f51cc5c-d46f-b5c7-cf14-7048fc497852,3573084042,964254671588665999
+65f4bc91-d312-57d3-0540-8fef0417ae81,4189605076,17823608280082008451
+c7846008-0a10-83be-d475-fd457a101794,2688276097,4516568380098950755
+c036781b-2563-0164-d6d8-70925c2e6998,3740389619,10096049678873325017
+6c7efb51-e481-0cf2-583d-5e2308dfed7e,743499438,12514030185303901040
+3656d3e3-0880-a179-3835-cf68096a41dc,1510432562,15098472285116117856
+497193e4-c030-7209-2f1f-a92aed220231,195465295,4454506466949223973
+e05508bd-667d-92d7-abd0-9c7aac3a9b05,4104582141,10236893321861406436
+b5e6f135-5424-b80f-c1f3-25e7b3d8f880,3605776314,12849650283049067674
+f57b5546-feb9-36c6-b55a-7de5d5f09a64,1298068387,18168496347038148804
+10b337ca-e0ee-9e14-8533-edca0c9ce781,3079620360,6174038199398703338
+d1a2d500-fb0a-9123-a0a8-429243fa880e,2240354571,16709555222640577555
+055d6314-aebe-bf0a-d600-bb6955b34c6e,2138248382,9658582528687611899
+5a51f779-8216-c1f2-f8a7-7e8e4eaed079,1821973379,3519034606324981040
+66ba7795-2b19-3d70-5763-0945b366dae8,2500267581,6944308458357486395
+5cb8e844-fa6f-b81f-76a8-4ed896e6ee1c,3350489122,18291559964218710973
+2ffb12d1-0f18-4c26-4b9d-30a4754c3612,2461668453,2990448304568599393
+ae298410-5eed-21cb-13ba-3d2b9045a604,791868622,3042620705156074119
+82c4d1a2-e337-13f2-0862-5838a35ec7fc,2795001615,1648073619960898368
+b7333159-4466-b4a4-49e5-38bd6318660c,3446002814,10494060486041104902
+0177b5b1-1a55-6ee6-e450-ecf48fd8ca0f,3507876416,3387073966998966691
+b1111a17-d603-e5b9-192d-41da323c50ae,1396229838,15667853124225406484
+b7802f83-c485-4c88-0d40-3e46a7991499,4290150038,6686830022038493851
+206f9bd5-585b-a151-2255-f8b84b00f1fb,3568407836,7788409913906568434
+2e24fb02-3641-f416-46a8-2ebc8f7e467f,2309844818,11206502393544162795
+b343a5ef-ec0c-d858-e7b8-52d391612608,2259437252,11011724547637993622
+047d20fa-de70-390f-74d1-e6b133a9381d,208654839,258117786417461249
+ef3c4d84-d60b-70ec-68e8-25f5484bf567,2423014144,7689805547953445994
+7aec8596-b5aa-42b1-5e75-12a23059c920,2641026776,12772262547260479121
+e65eff9a-0f14-096b-5889-be97d4bb0e14,3575973602,3263130267139153840
+ab11d3c0-e18b-14ac-c072-b06ac711ddf5,3885573137,17770589906083192792
+3dfa7adb-4ff9-629b-39e2-bedc571ad503,663503811,16243910402984109029
+e852f47d-303d-0a37-05c3-ff215903ffd8,2250617784,16569053872059256105
+bd4b1a35-268f-fd0e-8100-f9e92d0c67e1,726167230,11802454433982920945
+5cc3d662-6cd1-6b58-2f4b-e7dd71701a1a,4274938026,3483391971736478019
+3b9c1ee5-34ef-025c-ae56-9b0f7aca2ae5,3793705123,9503443773830790357
+b34babcd-fce8-a1aa-ec34-846b450b53a9,2336810722,16294680491499422206
+196f0a0c-b390-1062-e5be-7571de31401b,2473613347,4012105848236582001
+67870377-03a7-0cb3-6d6c-e768bd594628,228730091,7467440445650648735
+a4dd69eb-a5bf-0e1d-ee13-a0636ce4ea5c,2107036450,5828846720175829417
+415bbc02-51c4-66a5-14df-c9dd967e5495,3148840465,4020339433455058823
+94c87f68-b972-0e2f-4c44-537b1ad7c9c4,2325046852,141436150366939823
+d8d3f2f5-675a-734c-431b-d64e2c606aff,3141619821,6510924756446466622
+12630b90-412f-a717-7547-6cc260b7a17d,3917612636,6420152504207309329
+dd0164d9-003a-e394-1cda-ba574ab5f205,2574884091,8681319127467766902
+7074d2ce-767b-d54e-34b7-2b9d751c20e3,1776153636,15365469023853482597
+65f44073-9cc2-3de9-32a9-ddceda0b3ae2,2809500665,9472728012422405391
+0df4dcd7-f7a0-d812-6fb5-0632e04a3a00,3701731977,18365292623597788535
+5ac41a37-fba3-b8ed-dbb9-b347a76bfa3e,2502490336,1861543486080501709
+03d109b0-f968-a7ba-8f0c-edc767c40868,3467529823,10912949971784693819
+41ed2c36-a089-75f0-8ae3-cf2e290a563a,271472284,6664899582824519846
+aef6f4c0-1e70-1465-b391-8a82db00618e,1639139101,8054829358768030224
+0b1cc65c-b9d7-a3f7-0ba3-0d7660f61195,2598169824,7579575663466950980
+69abb4a1-cb0c-f699-0735-867942e6324a,3195441733,17254860549463490516
+acc22653-55dc-dea2-f916-52cb0e32ecd4,1471951642,10299423238900364493
+b74c4209-e8bc-e6c2-fa6d-0f8419f62983,2350474512,12721727255692921089
+daa54a45-5eb5-2100-d3a3-5292653c1f9c,2489154397,12085502155387603527
+91c4e898-a009-4e28-bf78-a084e5ef1ff0,2812146655,1770695723267415539
+5f55caa5-52d3-b73a-53d1-a27a0b26447e,3090076531,15708941228311676786
+9e6c8432-a920-e85f-2442-c4dc900df62d,3351238180,6410759017446722097
+de4824f0-d9d4-d028-ab82-63e45f2db46e,3999743181,8671329850681003200
+9043f9c1-7cca-20d7-3df8-9a9c684036df,3901928488,5948077131917152182
+71b81499-c747-1726-b11e-2d9dbffa168d,3703700662,3687521704175634067
+6ddb55e2-626a-3b64-3943-1c264f5f047a,900784966,1773102758814921469
+ce67daac-c6da-b344-9266-27c8f0c58262,2843901508,8373814857706632615
+a7cf9f85-960a-f012-a576-b44674d37dd4,1943527366,17885168092457684246
+ec3f6d47-4012-7b37-1084-7cb75afc6f22,1104181904,16717655333498723649
+522e2279-08ef-9357-ed09-2f52b112f347,58366558,3657729932877975761
+9473a64c-7bd3-ed1d-7d1e-29995dfdebb4,593772567,5521568106003770071
+2f06b00a-4004-25c1-4dc8-efed10f77f5e,2072441719,3948596874606017648
+8590666a-2b62-aca7-7fdc-9a5fa190bacd,42816519,17674606648108248478
+bf992b53-550b-2606-2a31-dc95cf471d44,2801068746,10781862514831447510
+6d4fc02a-62c7-2257-e78d-456cc664d4f4,1912650935,12021803163564514117
+0bbed23d-7086-3943-3fed-709886216381,2999854016,5624690150622344664
+00368a7b-8f75-490d-0e05-745fbee21178,2176643211,8046065100138748708
+d89bf6ba-0cac-8298-834c-10d1af24d5e3,2147649766,9072250580564339316
+d187ef3a-09d9-2727-488b-f240c8a89cff,2809135510,15896609171864305123
+9b8976cb-f6bb-b3ee-2c8f-0226ed2ffde0,3441756963,1775817163219161131
+67567ddc-818d-4d62-c72a-975dc373e53a,811424336,16389070948605537013
+6beba714-daa2-1eb9-18fe-b38ca958e06c,4080477578,3113059260888111128
+f955a381-0de2-5274-7787-71cb50fc0427,3393251688,18059201283638726032
+35674c12-4b3a-3780-e1ed-830371dac1f7,104247057,6436126777807389304
+07a87e41-f080-d8f6-3b80-c5fa43767f5a,4111040531,17504137427731118539
+e1793199-4bb3-7252-b5af-b69e4a8e04a9,305314223,17448928619397768731
+f75d055b-5c3f-b02e-5a0f-c45d0fc594b1,853755377,15840035093410716109
+060e16e1-00cd-8cfa-b59c-d5b32af3ef6a,3139160780,2404353664150719901
+710295c4-3303-1021-ab9d-e6b53dd8dc27,2934234598,6269310490106812079
+0fe6bfa7-495e-227e-a075-f843a007587e,1167613315,16740255459418163958
+a76ede3f-37a0-44b2-63b6-c8fdb645ba71,3189944148,17523471132475130941
+7c283cb0-667e-00c4-dcb7-934931e34363,4000282547,6004807982474369987
+44b431ee-b234-324d-648f-ab7bc69a3714,2127954619,15303583260620391226
+28bb2bf5-476e-0718-ca39-7cafcbb5966c,4269759427,1816808514209964599
+cfd66a96-4faf-531f-0ca5-08e101125938,1402579550,12768451502602145641
+3ecf8954-d5e7-f06a-29a0-ff6e9935dd8f,317035251,16966841952756859227
+a3f92328-542f-5555-1efa-e172581b6aa8,389092204,12930841849692550901
+f166eb84-6aac-9d7f-a3ba-d9a83265fc0d,2842721222,17162848639822188608
+9b5d4e51-da80-9bf5-616c-7f4fab2ae0a8,2760975427,4296261215163426728
+ee4bdf0c-92b2-f30c-a3c2-dc5ed5261d66,186888421,5102531455817554725
+6291a4e5-5450-75a3-0d58-de89dd480911,3392363982,3048357365031339735
+dc86e46a-ec69-4d2e-aa90-4a618cb474c6,3162726042,10957200809142637274
+5f433c26-c51c-6ce9-c376-c8bc3e79c8f6,2462426347,17549050604628337250
+2e4bc0fe-68be-de70-27e8-30c1e761ae39,3973880564,2697666593652498681
+4b744d67-e648-57b0-fe24-f271a516d054,2133016141,10663867883863454405
+6935b1cb-e9e5-6745-2090-4f71332379fc,3282711552,18258605991637425794
+d48965b2-e639-3b3f-0ea4-b2029800faee,2797815850,13737474291416457281
+38ed4b08-36b7-f5b2-c775-3991c8496ea9,773246965,5489378876924322947
+6ff76fc1-4992-4ef8-9360-d81420ad95c0,3619665078,3549866074939383454
+66645303-e686-2057-1c05-0915ed62ac1c,3531785632,4958823554093823316
+378607ca-8288-6ca0-525a-8b71ee55bca1,1952030404,2894988908903327282
+6e7b0897-74c4-3f26-a050-fcd2f1992473,45708899,14369893712949699837
+afc3d256-6642-56ea-8235-4239cd68840f,4271513057,548614257885496887
+63d74a08-7b7b-1dc1-a7d5-4ea0cceb291a,80104611,2137183358075474380
+fe2e47f5-4c95-e97c-e00a-8d8d6900819e,301185626,4815693690033540529
+685ea7da-79e3-8e3a-e231-6f01727f2c14,451118982,2889814826102368368
+f850e2b4-5e9e-cccb-299c-6e6b2994844d,1476411622,6414789014526484688
+044bf305-5b90-6476-ebc4-7e6cb2a815e5,1264211154,3774350515049340132
+8587d158-e4c1-b1c8-1193-eff62bae1d77,3164235289,10663038348733623788
+73a330a1-454b-1729-21b2-9f11fb04eddb,938760396,6634801309443642870
+f5017ace-b301-81a6-e8b8-ccdd1920b706,3046217821,2999906513033512924
+919d3374-5e81-185d-bbf9-cd19478c83af,4259927490,12211053246217289041
+5c8caeeb-1f21-f31c-314b-e6211d3f0981,1781105795,17218460179342448967
+f311a4db-eade-b3c2-a0a8-8e7008bfa3e0,2767996181,16590935674178245276
+36ed8df4-193c-006e-e54c-e23c80a82fe3,1687910989,2663932178772524579
+fe932b08-3430-f17a-d2e0-f5ce6f665665,2724594611,1376465500909633428
+9e2d99b5-3d80-7041-7a54-c2687effba82,1188822499,13900530129900403084
+4c6eb1e7-343b-8fa8-8edf-2c807f077b99,4285719565,6651771805476004529
+f85947ae-5eea-f3f8-c7fd-d5f288aae0db,386725702,821828920615251584
+5d716dff-50a2-a1de-c54f-210eca816cc9,3793169193,11045124667622463089
+7780c174-ec4e-73cc-032e-30921c618d37,343522665,3263102249085660291
+ffaf92ae-8e30-9fa3-76b3-05318c0f5b11,510958200,18178489405606273057
+03f886c9-e74c-3ea0-4906-7cb6ea4f7294,2479099843,2686548075443167957
+57a11980-5576-748f-fd50-32e547364eb0,549429778,16265337710901473333
+e163dfba-8726-a74d-4a1b-0778a1fcb38b,4273274879,16263213629843298108
+d292f93f-a18c-eae5-d8ef-9da20e76369f,1679913620,15504885841834927926
+a9bf598a-eaa2-1cce-e93d-8dae05beab50,551745740,10550183130682808645
+528f1dee-5b15-15e6-721d-14a87c9f6956,2321879177,15841795694151687467
+d3a31de4-133b-6d83-ba6c-ed36cfd1f968,1614888424,12886153087505776066
+f53610db-a896-78bb-932e-83b2ea07eb60,849371816,4250125689341756060
+93526fe7-e5aa-e305-685b-5e792a824dab,972124092,17376855794197910003
+e8f82077-7449-e2a3-3144-6a99290f015f,1301354658,18232016819499854149
+1d251245-9fec-c4f3-1033-e495ec1e8bd4,2350560739,15431593135619646403
+88ecd2af-3106-7ce6-69a1-4cf227ab64ca,3350837764,16965708213954701648
+21d7e653-2335-2c9f-7c74-cae8bf540d53,1895956180,4557429880405650522
+a724ff73-042e-177b-9598-0dd9a130c61e,3116040644,2237453652937242473
+6c5207e6-5497-6b7e-0789-1f82c3ee905e,2376001142,467990987397767524
+52291556-afa9-67ba-76ed-71efe6c2bf4b,2405690932,3489008946835803565
+1a27858a-9e49-de96-eb4d-d8c298c56def,378965450,11817699182895350694
+205f6390-2cd5-e89e-25f6-6ec421ab4b87,1461547850,815543071475645738
+a14726d4-6186-0780-7dbc-fbff4bf08772,790023318,11808685644048423131
+1c0d7f9a-2b82-5742-408a-b8e431a46a0a,1780220909,5693922393517209693
+2ec6f370-eac6-f14f-c721-21c76a7c2d4f,2554309566,6284149079480741266
+214418e8-52b1-f1ec-9920-257484ce6574,2112058342,578133007719363044
+70db71f6-06a7-bdb0-e5e0-920cdd395c16,21898141,3308791848582328503
+ba80504c-1851-2f7b-f59c-a07450b5f8be,518053077,14813681159261737816
+84d24c05-3239-34f1-7db1-df26d13c1d37,349359507,2916743686112776802
+dcfea852-5839-3674-fce3-1281e17fd11c,1209877096,17449135935984169794
+fb2d13db-7312-5d30-c89f-a26a1b833c98,2513078906,10574852068450290491
+b3ac65c3-dd09-3185-cafa-b4e5ad1081d1,2744088969,6607616998666334421
+1ceac927-102f-cb32-9e8e-bdf33b75bfcf,2383414290,6618783100860977926
+6256dd64-1209-d152-8d46-a7bbd02aec63,1773881446,3891410442563164770
+307179ce-c0d9-a74d-f712-7c82af1e131b,23046877,11879104429603531906
+5b19f2c1-b3ce-8b46-be4b-908810ce473a,2813059049,4358053993686006
+7377f660-4bfb-2b33-b4b3-2a49a7554035,1661334736,16811094289845217801
+c7ca689a-bd6b-0a5f-dba1-597630374544,2001312980,1543803784943334022
+63463aad-6d58-681e-ba6b-ccdd5629d14b,750102930,12673294634001470086
+d78567d4-b498-c592-0c82-925771b1b2cb,155091541,7520613629884152939
+1bdfdd53-cc3d-9d05-8690-872d3fb0d5b7,824841552,3804379787252017305
+6ba759ec-ac01-a887-4c6c-2b51802639b7,3608163353,11753388528830879217
+6a128662-9606-0df9-f771-1c4c91303ff3,2472944821,11586637579673371218
+01330000-a6c6-2669-c12a-25ac6c97041e,267742235,10313874593614339601
+dfb2a761-75e5-5114-34a4-3f32412a0d08,4201949692,3137952057900946985
+b05cf2da-0ca3-a2cc-94ef-c5807ba5291f,1577637582,7053501843418221130
+ae1a41e9-fd7b-138c-dba2-3ce5ba85ba1d,4062461571,15200253880943389874
+9bda9679-927c-b129-33cc-b8b813e7f6e9,1787906060,683014029302319286
+781584e8-79cb-190b-8988-f4a91f6111a3,2734419232,3116130451273943698
+aaf268e7-dfd6-08df-45d1-62f9e716087e,3637492741,5344182594828466628
+cd4dfee7-3a8b-093c-92ec-1cf99a2cb7f8,2895462630,16737803049673067117
+84a7365c-121a-9b2e-5be3-e68d6bf548a9,1206035257,13706438153540643769
+50dfbfea-0f0f-9bd5-a9ac-d8a5eb48bac8,426745001,16104046617669140898
+890deff7-1da1-6ecf-5dbe-dc4105395de8,3387946455,3863772592103736530
+abccde74-5751-6ed5-5805-db51b3dec6e9,2517549814,8505820277593639832
+bd832dca-a306-117d-5438-6490e6e713bf,2562146358,12992188868314355622
+524ca2e9-a98e-dea3-849f-45922376b2fc,3527294064,14437989251816088738
+70949454-2f14-1622-0a7e-65d8027ccba5,2446273898,5551636585787999337
+d9240635-1a06-c0fa-ccb0-ea993e398034,2300381421,16533948397302926843
+0874373c-754e-d3e7-76c5-8a743c82eecd,621222041,11248664695218103184
+da4a8d21-5e3b-fcd6-023c-7da1e6d422d1,3259333882,6775880014068587682
+32cd8c40-41db-f03e-9d38-ffe0e87626e2,539517599,5000828127728496269
+49d23ff4-774e-690f-2160-36a6b0a7fe1e,4003470385,5810115890933905137
+5f44db22-e247-e30f-ba58-b6ed3b94271a,1360488010,6417495476449154299
+f68f0001-34ec-4dc8-dcfa-d5d5e7d51f68,148952268,14354583166332358887
+73653976-bd63-63aa-9d10-0c797891e847,795650887,6706033075272622553
+6b4856aa-a545-c22b-6972-b15d77849310,1551863607,13058598324939493597
+8cd0bc18-5554-30ff-36d6-d75ba26eb67d,272343274,13522711378925680822
+998767b2-3660-799d-0271-52ec083361a1,2493468031,17902052635873304484
+77b22a53-777a-959c-e79f-bdd8b4ec0d46,2663576053,8995557612697734990
+c3f035c8-e6e6-bce9-c3f1-5114a107a7e5,3330672236,12959912584433016560
+22bfdeb3-7728-36d9-048c-1c53a8e73b96,3132696928,15521142951997859828
+b6913ddd-0a27-be33-72c5-93e8abebe2ec,3164456365,8694442468481640774
+cfb59393-00f5-4025-9950-9cef778c90c1,846579684,16139967997847800815
+96987ab6-dcbb-06d7-3236-a4946cf5e492,1908796447,1205166637591464116
+8a41d14e-1c2a-fc00-ed1a-b4a78a9f04cb,2195987220,14026958312439345153
+95dd0be1-7225-abfd-3687-4c4a7bf597a1,3700019007,15941936049449146720
+f38c3de2-2739-9d89-bb2c-e38a0fb369b3,3385133035,906769186963256539
+25b0b3bb-e492-35fa-d080-f6f9f9d7d14c,2416291727,11324508563925344350
+ca387994-1061-0016-d802-e24012b0e610,597896836,11140633204999465987
+bba85943-800b-fa72-e484-b1ea6e99a435,2508333727,6266233483282186323
+d2c1baf2-bc10-a916-2d73-ecd0bd51eaf6,240911502,5885820572270692005
+75bab189-c15b-8bc4-2c7c-631d5502dabc,558618422,14292974863786034392
+bd0d526e-8598-52a3-71f7-92d60b93af5c,3287059448,6854042937320595958
+eff59b2b-ed1b-fd8b-a344-eb8730adfad9,1919647180,2100890385545066958
+b6ad8b30-8e1f-0bc4-7387-df64111ccf05,912042078,17690753459444621494
+a7abd022-50f7-c99e-e051-1708fef4ba8d,2970663547,2264377099599751780
+45e32e00-6202-4b6d-f714-9da51a28924a,1130838065,2064084377716540233
+71ac6eee-6459-8381-173b-a033d463ebb7,1538243893,820386372121958252
+5fe1bc02-4a39-f835-69e9-1514cf618ed7,3006405051,895967586021096755
+65d91dc0-fac8-e3d8-5122-6cf653d68f6d,2366130293,9034056494266897292
+d28246fe-c72a-4b50-0f8c-c3c54c388266,1122762184,6064225870154455331
+e61241a1-224a-f16b-0090-fb66bce6bc36,456345974,15910257191065627986
+20862fab-0085-6812-ce77-6a5c29014d49,4240575789,3534890059765159400
+c504c39c-cfd6-b010-299f-861c5abe33ae,1976007604,1705932467626803428
+d29a3303-1801-a402-db6e-74b74b311796,2531866587,424023335148121590
+d7e6482a-6dd5-4497-9fd4-ca7203b11be8,3713331621,411704523394465200
+af57ad6f-515e-a4fd-2a50-be3aaf63698e,1451816921,12211321530937708559
+29704e86-cc46-6f4d-df42-892885ab8e96,2148753777,9105606513201233052
+c015b332-b1c4-36a6-757a-b483d0572fc3,2649369087,8341334642506946732
+495f2efe-20d7-1cce-cc58-8953bd0af84c,984099676,8951466474820916135
+5b6f5ce0-24a7-e60b-3358-f6dc93781e03,2346561741,3672971492830892301
+5be4a4ea-3236-b7fc-1623-9ce3e82e59e7,1569880932,13192353868835013869
+1d92f8df-f5dd-25fd-31dc-beb3d3dd815a,1072931430,17344707393252359605
+9488af8d-6a45-bd2c-fd70-81281b0b834d,190148621,17598118875630345340
+88c31eae-d317-b4d6-b2d5-13d52669fca4,3918105231,1191593718479578461
+20c9f27b-1a02-cbaf-30e6-2851d8177f06,3303055434,11171683514060329511
+18a41c5d-dbd1-363c-20a5-230033c31bb2,4235861275,13324461568275563843
+bcce3623-9e03-3187-ad66-0e6cd53f91db,2613003553,7735256154324450897
+a6d7b2e2-b31e-258e-35ca-c8a399aed22a,783237361,16365605129656174867
+9441bda5-7213-ca66-6389-c0d41ddfd909,3706920173,6983318575845343463
+4afceed0-e1e7-a1ab-32e3-b3b12766fd47,22230271,17174949341890281596
+c10c4e4a-a42f-1ef7-0483-770bf0e2c455,3657360306,15879412410452051729
+91f0a841-8b9f-1491-aa17-ff76739624de,4097601037,10718755803832809350
+e7174c86-655a-165f-20f6-e2e88e57211d,1520065553,14684046699831396379
+12748bcd-3f6c-8300-b419-1d65219626af,463107752,10174750806555623622
+58ec1e8c-c436-c810-d430-5cce12278bb4,3578436733,7097049451728011060
+80084a94-5bfc-5083-96d1-579cfbbe826a,3270457587,13302292697116998247
+5a06e128-174e-70b8-b25d-c2ea6a08823c,3146476202,8014468619072398040
+7c91a540-df93-b166-2055-94be8aa5fb65,2047112793,6713269194650500586
+cabd3cbc-2a28-4850-d228-9a66b7c1ebab,4002925245,14764245265889343236
+070279f9-92b8-f012-5329-9612e3ca9d43,1322714682,11280677525204675267
+e6b8ac46-3a37-9576-c56f-df463ff22b60,736036416,13575229100115832104
+b32f8380-0553-c556-2a6b-0ccc556e0b91,2633676913,6183288721397277396
+f71d30be-75c7-8502-ea29-e352fb706872,27350722,14778829073633367387
+d47fcacc-79a6-558f-a4d8-e47c03b2814f,1900643701,5765730711315549001
+c4947a64-e6bc-3a5a-9121-f657493a0146,57612897,17721304149205800149
+456fac9c-cd3a-c51f-994f-c8088991b83c,344613683,18325505786612322127
+0d105a9c-d198-1312-de94-d1c087e2b93c,1546202521,5210666522016988112
+b736e939-d885-a506-b7d0-c13686f9f280,1777651006,10134438661306694127
+8b0c9104-d51e-2b13-464e-61ceb544a514,253968631,1645349406771124427
+75fe90a7-bd2a-3ee0-6a2a-cc3aaeeb38e7,803558833,16809280479729775095
+f6c72a21-93d0-618c-b6b9-b50947725b79,2334385268,17164067317795296104
+4c22effd-5719-c740-edaa-3ab88aa1a6a4,2320084920,10492210833268833471
+1308df32-e8a7-fdeb-9cf7-0b93f684134b,904216514,5476001380509314752
+a40d9f82-943a-2015-67f0-26fb3418739a,351621967,10140796919823407632
+e36d4999-b4e1-e2ef-9dee-b068fe925085,3018555131,1600651687871055388
+6f267c97-a559-5203-5ffe-68604eb760b2,4113095230,15253607434952813188
+6cb2090d-05cc-b44f-d2d8-e9abba7e66ad,3011652270,7474003830272580602
+68c60680-c58f-cb0f-8820-16f4ff4c523d,1790766374,1611443609072975779
+5213b4c1-4c05-5fa6-f670-9585576536d1,1751884817,2373451193539041061
+2a5ee391-63a4-2977-3f5b-36f8256ebb29,2864274029,17048126049543340059
+751009db-ba8d-a441-3313-5b8995a47431,3928453513,1558344690732629458
+f34ceb09-cf51-d751-bc3e-3a1eddafc67c,1989966744,10044684436841035427
+72eac3c4-2aca-8685-3caf-136c1d4f635a,2073307615,329852854550782816
+5a9bbf73-d2b7-0a69-8e79-0a7e50b4d933,3870807421,5364039046160736502
+1ec9657e-8358-c646-3848-66ba71400866,589926930,43715895588341892
+fc85e129-ac16-b88a-8cc2-2706a549a040,2219079666,18414178611682843558
+452d7e69-461b-37a6-60dc-de01f28a8e19,4178844940,15721145807824128268
+a478e3bb-3dc0-675b-1d93-8ec61764df8b,1563024511,1319125904557462109
+f60f3636-b934-b824-41d5-499c7f7d4776,3581503173,1797859773232255672
+2d0732e2-96d2-5795-33b5-86478919a2d9,4135886743,7509905652103778592
+344b47b7-2a99-4f3f-0dfe-f00a24cc989c,13537574,12742391268806973985
+00195167-4a76-47b4-d8be-83a81575405c,116024240,10016243491761759894
+b264cdf9-ec86-ad19-3216-424c9ff2c9bf,4027851094,9533513007651092013
+ce8adf5e-2998-cba4-1cfc-41ce4681193c,266954581,8993133331673413420
+a52526c4-d57e-6d45-f87d-3d7f7264feb2,107610528,11923091295187343797
+fedcf052-563b-8f04-736f-79f898100049,1491942273,1649424099069850968
+c332d39b-d967-1254-4717-5a9dfc1d229f,1716696261,4596327603368084591
+a257db17-c34e-418d-13a3-5dc16c93ec1b,2461556493,6910362952688021951
+b506559a-ef01-4a02-85fd-7e4530eea0f7,3753393387,12723579606843089393
+b297c7e4-9b31-d60e-6bc7-7b2e69e0ad57,4154517721,14852123916930620639
+de8f403e-9af8-dd61-7b27-3fba06cf68a2,3965359258,16461069316834056097
+681c51da-0de1-161a-ad19-9f25077bcfc4,1968125152,12193375187472233774
+8d0ad4eb-89e8-dc4f-f5f6-3a77f9bac400,3408296115,5730554491979447093
+f394c385-84ca-32a6-a482-6032697d9055,2019356613,4790417854918783164
+10537df8-3348-030c-db8a-6801dc794533,1586936935,52719500184371009
+b66d8c7f-d526-c009-002c-a9706c4d7227,3595661745,16691962785208746296
+5b981c29-eb53-9205-50ce-fe9577f8fc74,3950186688,7620356780655896001
+bcfa66ae-3301-2a22-935b-a83d34d89840,3500218757,14870424862657299345
+f16e6807-68bf-8c0f-88a8-300bf4750f12,1327658376,17375718650876354101
+eea79ffe-0b7c-9589-d667-4b0628cfd22e,3116603175,4070823036837633766
+9fffdf68-edb4-b6d3-bb56-92abb7205645,149369290,6015220919366410502
+1c3a7d67-49b8-cda9-19cc-7a0c7a079d00,3946577510,4307426285932442004
+f75de21d-97ad-943f-f47c-f76bfebaba00,695189831,9523949207085653482
+925db127-73e1-27da-b582-d488c001d24c,499898062,12159608803017499902
+bfcdf391-adb7-072a-b933-59870b5767d5,1233799138,12338755837789526658
+7839dc42-642f-1e9b-6324-32c4a45ab974,3872019244,8051030167243060039
+73f6889f-2506-6dc1-023c-67fdddcb3786,2209816700,1676488597549284322
+98f2313a-7989-3b09-b2f6-f783c90e9803,351710710,3689988664213560155
+26a82d17-c726-eb42-7f46-bd379a42f66d,1433690493,15949310044126773845
+f678e19d-f13a-879b-790e-58a19ea50e86,3602434953,13110302979040714361
+5ed378aa-f901-8442-4c0a-b2d73e8b7407,416242801,1677706412261990075
+1b4ea267-aa74-65d8-7f17-e22bbecf2ebf,2461776553,14897002474310399562
+0d0b9987-a8a2-3c83-0da2-cca5c0cef2bf,2433179576,1029214241130639835
+19b88dd7-4f77-2647-cef0-c6112333b29c,2181912807,3735821917922080978
+7ef1a6f9-6852-02c9-8fe3-441acca8c01b,1464828378,16231908061043678853
+d4719c40-e4fb-36c6-b406-d59885bdcdd3,2467679778,15121866520410989382
+bfd6e4bf-760e-9a04-ba53-dcb0ca9ffb4b,2389967144,13790703831616632208
+48e8d373-ed89-96f0-cea5-3a3a77ab3489,3636995183,164771416366188164
+8a08f986-7345-9556-8cfc-b7ecd61592d4,3167808203,8084759762716308392
+9c2ae34f-3891-5ff5-9543-47622ad3867a,865315230,2989764873085072145
+6b7b93ed-689f-6fd7-88b8-e9e0f6a5a54d,3659095264,8774176903168103356
+6f7d162c-b31c-fe6a-01b7-74f023ef4427,3146173108,9772582030876202924
+5822a1b6-f890-f70c-c388-48626f8e6f69,2038871760,10548767260098448364
+ee2620f7-7f7a-1edb-e5ef-b5f7d96cf632,2915940415,17935883174939947512
+6d51e5a5-c864-0318-6a92-7b41682cc8fb,3870874404,14813956696580754470
+94f15fc1-06e1-8099-a364-ee4280dce3ca,4234984242,13531475202835354673
+3e3b8b6d-43fa-38b2-879b-2fd7bfac7500,576026071,4089641834903006208
+ea7a0f8d-fc80-3701-9fad-382f82da664d,4027622304,16465707564118605248
+3d0a61dd-29d8-24f0-32f5-6886f722a41c,3989243679,6605602099134866699
+bf566633-2b64-fbfa-873d-ca8138fbce59,1890452389,17723604922611008972
+3882674c-542f-f228-33e8-52f37c34733f,4033207602,8551552699244493157
+4b3e8e7e-3aa6-f476-7d9f-f592ecf0b9de,1534641324,11393004972400664366
+b4fca917-c4db-577b-c81e-5886276f99fc,1814616925,3569507432343658936
+d9943816-6c9e-af6f-d358-fa6a661c672e,122757596,2805577271263299950
+e99ee3e8-47a0-fc05-1f51-405ea1aa9877,1292139564,820602306540715788
+af1cdbf7-2a77-0e27-b810-0944e944e5e9,706875769,2873840247184849182
+f79b8580-60ef-920f-7c5d-d25131925bb8,2511486063,6492805926954951089
+d2d379db-8f78-8176-233e-f2767a33e1fa,2916859231,14554557765836021960
+37af0e0f-ea1b-f97b-f0e6-87f4f27a8085,256088901,1403465411262260643
+a6df4acd-2e30-bcc4-a277-b39ab2b15944,3317568172,9431600882524125092
+8ef8f240-5745-7da9-1f24-1b07a9673291,2751500948,4248106983258110069
+0fdcf3cc-9cab-8caf-f340-3c50796193eb,2289205201,2984458436538898917
+59d7b49d-a3e0-eff1-88e0-c9a441f60345,2643749403,11059970886268447009
+c05c8db5-a173-1ce1-0301-796681341832,3420296117,8018944619874447015
+ed6ea943-c407-245e-5725-59d5cbef8d21,1736570471,10134006197652326335
+90150eab-a840-47a9-6a07-393a4284808a,4157511648,12196214659884135449
+85054185-df49-e004-73a9-79d73d92a963,1666563266,3729477925360188686
+84f026cc-b59f-1216-fe3c-d0e7e67bbab8,3758119996,168874865462066400
+4c43f44a-c22e-ed00-bbdb-832d6e73fc67,196934049,10588230375410141623
+638b29ef-9a7e-5cdc-8e9c-1bc6538dac64,1090768577,16673959782344405834
+19a40b35-4e3b-704a-eaeb-b73292a22a09,4086475738,8805556362229571124
+36ed4dcf-f504-f563-8d0c-f2b9d04be333,341435505,17216098328035472692
+6cf2d169-8ebd-cf28-c6f3-43fe79182f6f,1887227218,6591573291685787986
+dc98b531-50c4-8095-5c54-a464bd954a06,3468354662,8329565178918233153
+dc88ce4d-99c3-8ae6-a886-c96d7f715eb2,4277211675,12106187869825878717
+208a4a69-eb29-38fe-beff-bbe296ad0130,1058265998,10982622413911894876
+8e01f1d0-9919-51ea-7335-78b340c12b43,2036879253,7908985916841125267
+9f088249-39e5-fff2-ab5c-9bd62f02b57d,3404156016,3046331362641640498
+2cbc0579-f056-9339-1801-06c2636edc5f,2954999126,12097797506604100549
+348bbd49-039a-7e12-2549-2bc13fa0d0a1,2145140345,12547568350925814738
+82888648-1014-1d73-93ef-2c001cbb2b15,2484977332,12151861758092849388
+5cfcbf40-7a0c-e233-8acf-7c45e7e4f4ca,1485839313,9061965382710078704
+48146fe4-0b59-5cc9-4f6f-3523c3690992,3549366472,15270235277818391884
+7f861e80-d7ef-89d3-911b-8dac182def3a,2411845961,6444380249229067485
+a29bdc54-879e-b988-3a66-8acf294d3af2,3397093060,7250935844897416449
+2167aaf3-2034-5554-2df1-4aebbb768610,400365414,14545893509324368784
+b12bf4f3-e49a-be7c-85d0-a8e0cb622ff4,210755864,6296189810333492886
+3408a525-4ed4-239b-900b-38923139682a,1464261168,52614754180278435
+d3b02ac8-809e-23aa-98c4-9b31ae9bb7de,610686399,6862033199349909721
+b5dff404-dd05-7388-3d13-142d80aeead9,2803518007,13560848990467018259
+6b635280-7880-4960-96ac-6735f416bd4f,714218621,17054209995497237060
+5a273102-ebf7-54b2-e09b-8a46fa7c5b72,1013040618,9854951382703232945
+0974dfe7-b4d6-b7ad-d0cd-118f6db994fc,114554210,12079527356433472485
+35153a37-ad86-5ae9-92d2-adfa4ce1f949,3961965347,12695991404039302777
+47f7dfeb-7a1e-10da-cf4d-c5974b8b9d45,932894054,3084487797918307932
+bd0db1b1-9542-ccd7-1421-42c319e37b03,3276097186,3278345255255377581
+f804631b-cc5a-6afd-9818-c273a06e3613,3473349198,2668145391026857675
+6fb6c862-dd26-5cb1-aad1-71e114b1144c,1316075499,16901545750564854841
+727a6bb9-1dff-f79b-4f82-011adeb98bf9,1675630028,1593682698830692896
+a7d25193-e9c4-c329-b578-b506cb1475a9,4138218811,3760357564394006525
+42bba331-5d2c-c496-b98b-31eb7699e923,2936479077,8620786770566759901
+701d7b2f-cc2b-6d47-0279-c14e3d0f4b62,3270656663,12147693705918191502
+db46bd52-943f-cbb3-1aa3-fb53ea2b1b9d,900817479,6877312318381307318
+f0d461dd-0776-d478-8beb-d49ce2efb306,3831078931,14992466765509408588
+0864432c-97d5-6364-1d8c-6075abcff1f3,2453589257,10759440917082958748
+e4242610-70ad-b440-209b-24aa8d475576,3225889981,9179848565585237902
+e68d1dd8-5cd4-58d8-ad2c-b64b3d817f47,1501128158,7129578577136418563
+61f50997-a7e6-01dd-51ea-e66a02c3eace,2282717050,15882964660796925090
+7fff0bd7-d7f8-f178-99f2-2c9663fd1e44,3252236149,1657077856642291402
+4ff6f58d-ba9a-4831-af3f-adec2b7a26dc,4182761030,6880114327831792214
+3989b4a1-ebfa-a9a0-61b5-5c210c18b14f,1611724427,100653959058171890
+22446722-b9fc-59f9-147a-32e627b99ebb,3047659630,14930549432471932691
+9e08da46-dd37-1239-ffed-d5a0ce9f0031,3573281942,6446034348434988681
+4b4b3c50-a4bd-1445-0c0a-ea701310fee2,165161495,1644707828495644740
+1d1bc836-ab51-d7c5-6c3b-124713d8ac95,61341816,16977612007754101653
+4f34f541-ca88-9ddd-333a-d848502546a7,2966588607,2508632518328592971
+f6438421-c268-844b-b1a1-a774f867e4db,3623045273,160906678674969800
+0bed9d6b-2693-7136-1bbe-9ea9c7f2ef4c,1817094903,5589007894684238230
+9bcd1b1c-e739-59f3-fbf6-4493049e6734,3237230326,9613215519525259157
+c8073b04-3aab-4af9-3734-b233802644f2,1081117629,1916167756941312656
+31741e9a-2951-abbe-f257-b00e47efe078,737278355,16051024046626490480
+a766f731-f651-920d-a093-0b8aa1c99d24,730576267,13419013296719464151
+646d7c00-99f3-50b4-a1bf-1e3df7f74f0c,16245019,5224825492709732209
+7d7e13e6-e758-14c2-fcb3-17142a3cd7fe,1136489691,12463071538624565159
+83d57abd-43b9-0e5f-f49d-f8d2813fbcb5,1962728152,13985429371356616410
+be1f63e2-77c6-64b2-adb9-31abd3163309,3030343453,14195579613927891968
+72b11b65-cdf0-c72f-ed38-ceaa053e3a7f,3822178542,5850446058051959702
+46795ec3-af03-8998-0d6e-de5d7c423032,1196027217,4800916708471528998
+4d6fd9e3-7c13-e200-bafc-d4bc0dd413bd,2568105972,4921141967714298984
+ba91254c-f8af-44e6-1b6c-2623a0184e44,624299839,12748413272591697520
+4d85a32b-325f-a791-ee83-f63435a3eee2,2930145338,15528527923054912042
+74b1c1a8-0879-85e8-d79d-7b2b2521332c,1266765480,519126809119896260
+f9d12ab1-7d47-1549-64ee-592fa7ccc28c,517608423,3278965254075531280
+a14a3b9d-85f9-1a6d-85dd-d51424511f6c,1901620460,15575350046991059132
+8392541e-74bb-cb3d-08b3-443a54e827fd,4154280564,5976760437290708414
+1aa1bc5a-3195-072c-520c-a8c5a3a36d98,288353435,5542584252986755082
+71a72afa-42f0-57a7-86a4-894fe4540b3c,3916846340,5564802690073873894
+9cc31974-f7a4-4ea7-7ce3-78f8f23157b5,3019134714,15682182198034832697
+b9709907-6da9-7b0a-394d-5a68cc5e4729,12148849,17972801529379504379
+0f84ad02-0f4c-0914-6b3e-8d6e81a2601d,360397711,5591944526191473134
+810d2841-0f9a-ec79-20c3-2bc0deba591d,2517498496,5648654135462291554
+6f1d634b-126e-56e0-008e-bd75436b953c,2219696817,10977843346403775242
+8097d44d-ac5e-165f-2492-0db3a8993aaa,4213405111,6090160424644872670
+b276dee4-37f4-bf2b-2028-2b78e54a2a70,1751222504,9200779961999975707
+64752bdc-1696-0835-7c01-cf5f82931184,1313357119,4945386715149336633
+d062d18a-612f-de82-6ccf-8f2eaf3dbb27,1340748367,5683735478232062265
+50ef985a-f405-656b-6e56-2800b4823c11,1561942592,2137092182011972028
+d40a6990-5028-c5a7-16e1-562570537fed,1112531894,4742264792083739569
+37aa5f00-4481-afde-650c-a6b8de72d980,2718893867,4889470469016887745
+b2e2636e-d422-2125-7d22-449c3f9e5c09,4072206313,12647962173571829865
+13b46495-5a37-ca52-65ca-7681847266ae,2699365634,2337945009225310286
+7ebdd20d-bbe4-1521-7d76-9c5ed16f9e89,2190503650,13716841133611210275
+caa438e8-2292-9a9d-0fe4-66f186a400fe,123407654,5872565505824613522
+d7c4f94b-efb1-b53b-0f35-d0de44db5a2b,178974034,15158982133230332435
+55915015-c4c5-cc84-6a0c-d5af68c3abe1,1327325260,3151471365294264355
+ef2bb0fa-9f1e-79f2-abdb-22fcfa144963,2807583135,4246543977477924279
+76316cf6-6edd-e5c5-32cc-b9c4c2bfa54f,3475166825,4027459795137156472
+f3abce9a-803d-0807-5431-c1c17abb5c49,225059246,16775673118097102109
+fb0ccead-da79-c2b5-8c3d-266f6715cae6,2296001075,6379962721531315772
+aa2fac7b-2af1-9a5f-bb24-9f2bcd3ded1a,235498036,5307213819382165854
+e454d089-f1ab-cd1e-1b3a-86ef73b3a6d9,2147101032,5910182179417224853
+596a11e7-1c7c-fedc-322d-4c95b0d062b8,978465519,1973679378050811257
+7bec431d-1305-ab5e-75f1-d0313e82eb55,721661980,12594013173746149765
+8da830ee-7b73-30ec-667c-773e5152e43c,538726701,2055631760441896214
+35745663-d864-d8bb-dd8a-fa201797e96d,434867475,15007799885992309908
+79691d29-2f5b-948e-393a-6d808922b85b,2830900008,10242070834296354116
+769a76c2-d2f8-7ef7-2291-45a246bd7bea,1446314162,1005770898619963759
+4d91a746-6aaf-1f77-f07f-cbecd1933209,3884069328,12903563401629098075
+78295f4f-4ba1-ceba-b4cd-7b7bd2f7d5db,1495800004,5228509023168730604
+24d11c89-2389-9a04-0da0-65d7c302a28a,147638507,7306812279340583473
+d0f01815-8694-aa3d-10d4-2bd90da0682b,3687787706,3811676519431592293
+6aa83aeb-7a2a-5cf4-9633-0df4c57d1d2e,3843746014,4390397245640710034
+f704b0a4-7e60-4f77-bcbd-58669f1227fd,3387851070,16850048637859680189
+26302f76-9fe7-89c9-bb12-2196e730a4b3,4260128363,12968666805534561049
+d3df3db6-5097-20f2-f498-ff8efd561f44,2596889868,9332398508809134323
+1b899b56-d34a-e53d-f7f0-9df0cb246e07,2852309369,6098936851603937115
+52b1f506-8f4d-75ec-4b49-a697bbd13366,224660954,8772337538386521291
+89e521ce-bce9-89ce-029c-4781c12b5a92,3375553756,13396553745432956543
+f34d67f5-9946-7e24-0368-2238db39d8b7,3239220206,953370918867759995
+61c8c399-5551-c5d4-a073-2799d0bf71be,8854056,17702888402324810133
+95fff607-5eb5-97b6-9410-75f023e37f8d,2513913993,6168790861059676521
+23c3882f-b051-cbc4-73d1-9967536b5cde,2275398217,1023698176146467748
+09bf66be-9e45-e530-70eb-87d308365a2d,578817218,8505373851082114395
+ac839e0f-b527-e21f-1ae1-2fa08a763f5c,885366250,469456317726485832
+d4f82c2b-424f-4945-08b7-c7f9a60301e6,1627077299,3948339382237783178
+a5036cdc-2fc4-664c-ab2e-4bf0cb23ca43,251177365,16931332310289063354
+038db363-3453-a1bd-1e1b-7c6205f5f1c2,1882522527,3115799575629570171
+b2a5ca9d-6e73-fb50-8305-037a8b8e737a,3305735531,17322098092102221733
+0c1fcf00-b5c3-6bae-4ac6-a4efcda11ad2,54794172,13177143798270022559
+42f5e3a9-8657-0db9-38c2-18d108d35c89,1754624192,3783463486904973995
+3ed60ec7-730b-dd00-9353-dfee0168ab57,3250269454,13750815767153971883
+61451c26-205c-cfb0-dcda-a7ba8bdb22fc,308022295,4480972570341562851
+82f520f8-6fad-2129-0b44-1f4d48675fc9,2019836408,13680222215233452780
+2e961031-3c04-25b5-4925-3fd6221a2526,2763444814,626353529730045201
+9fb7464e-e723-c2d4-8804-b52bd467054d,3770697485,4541873090700135881
+2ac0d6a1-875b-eacf-b90a-3dbfa39d93bd,890757080,9822382391973119371
+09275bdd-0b89-7a9e-a537-7c36dceed451,3968441119,11575323181325095152
+3571258d-cdf2-d374-36b5-8559e6763b70,2164105290,14358178888940988259
+11101b88-38c3-5c68-e175-02c51a877d3b,3493813477,8079102478451403060
+7149bd8a-351b-c45b-b224-1d0e069a9333,1592503777,14372561176095893528
+b59f894b-2fe8-c679-b0de-c8c39d846850,3125661266,7604279043905907955
+243df882-041d-a6b1-8aa1-f0138a64c3a2,2525332914,15981958871087782743
+3246d148-95a9-36b8-fc67-5dd97ec100bc,1347841192,5125993919894911236
+4b6db961-2825-5ab5-80db-cd8b09312784,3871966843,914731650462332567
+6b82d7a7-3e19-7c74-6302-9ace24592bb7,997759844,17060793215553537671
+e7ee4fe0-ba29-f8f0-0c1b-725913df7396,2568152483,15210958324599853952
+24892be2-8275-373a-d4b4-af6a1b396eb3,181476980,3462490223854824520
+18ce4aa9-1f3a-047f-af72-e873c8cc8dd5,1337952177,2041414921241807226
+94bd7c6a-c032-6d23-d8de-ce6d886e2b19,1192793478,6420307448856604732
+707efb07-af91-0223-6d96-0768007915ab,486065792,17010263727590177298
+945bfce7-772b-adc9-717a-44c177fd0810,3608789017,17814515328306488823
+e7553852-e1ae-5e25-65a7-46386e994fbf,2760512784,10875997299850749204
+6461d309-71a4-43e7-c2e5-5453033feb1d,3511909589,18028015082496610149
+0d01ca09-4458-ca73-a7ee-4c833674f7bc,1173755367,10167396550275627762
+fa8acbc8-3a29-878f-0c07-882fc14a84c7,2572993867,9488641728935079553
+f9257bb2-6c68-2f5f-0251-238528ed85dc,1772599383,14922044107719467166
+5650bc63-a334-52ff-56be-4bff1be2a945,2574078539,13029312961240422716
+2261c76a-ba62-bbac-1692-dde1b1123efc,463240350,14077927090515554824
+7a982476-0957-a9cb-efd1-54d0ddb31641,30044717,3190969039080349773
+82822796-dd55-cd5d-27fc-a35bad896a93,4193660670,16382464177853490885
+a65adfa0-ac7f-91b6-2b97-329bbb9dda4c,3399019999,644937787696554433
+e7c4e552-dc01-c6f5-8d91-0b0699062f00,198270205,1949961011167990032
+0299ac25-0476-5b05-d118-a0a2a6028566,4254483113,13485403029699357165
+0edc8403-94fe-9433-c0e5-ef04bb77ed88,3899429589,6574161269550635316
+56ebcc63-b4e9-a761-fc6a-d72845e9b114,709977769,3726045536578949235
+5d796f62-9e57-b7e9-36da-f336249b5f6a,1529276798,50098939161056494
+baef4871-6b6f-f69c-b6cf-b738dccbf2ce,528376059,3527606356223365754
+b6ea11e7-6376-987c-3a88-7e6088e046c7,272202204,9438433281740942472
+50dc15c9-69ef-4c11-f71b-a7c8a856e466,3459494548,18090107359033143407
+9bc0f46f-c6f4-9b34-771f-dc8465932e11,2169409608,5351738684282170061
+f8c7a554-7679-c300-9f6e-7b9247582405,3494481705,17614653117340466390
+0881ef7b-eab7-1b8c-f2c4-ea779067d94e,2638291998,6704522713677052166
+dfaea8b0-b7a8-5a4b-8d3a-f16d5649037c,2366920785,12390866887888680913
+d0a67aae-0b21-a5ea-44a9-f59aa681f00d,702525440,8890768555429909553
+4e27207a-81a5-cf00-03d4-00b03036cc22,2008822034,5846816784003244802
+5f1c67f0-e848-32fa-6e9e-7b5a51448953,977574023,3282023187835521604
+cf2d1867-c585-7845-6ca3-79a8d0cf4b00,1673762910,2197871144081300189
+93cd6e33-f7fe-ab32-d722-c4e79830c972,1363437644,3547029342314497048
+f44c8231-01d7-4197-4dd1-c2ec0705799c,2769106669,8930650974607544966
+80bafab1-66dc-8f51-848a-7b62bdc1501f,3533934104,3751359831199999849
+37641ba0-68f0-a17c-aea6-2fd362320fd2,3118247189,197181510086898733
+3dd07818-4b2e-e2db-fe78-c1a2b500c1b9,1869829691,18356089102037997449
+2b5b4698-777b-19e6-62de-9a2733117b5e,1750624135,2943931182619844991
+cf7e677d-0c62-70d0-a278-698616ee52bc,1030803679,18013049311101534849
+15e864d1-5bee-6b31-7a02-7ba1bb4b84c6,1029700571,10399456646053021605
+5b7df600-451d-0721-6a99-fb926bc783b5,287668466,2632696162900972555
+015a1fc2-f2a3-ad4b-a9b9-34ed2dd6db3b,2455167036,14659742219133523137
+212a0bbe-3680-012a-169e-1285cb194f45,3988933251,2633381956734306980
+b654a6f9-79dc-98ee-2081-ddabd2500df3,2986111694,5326779206567481685
+15693c69-945d-1528-03ed-3d161b2f033b,2223292641,15078843292721356667
+1117ef3b-c32f-4a94-0ffd-53c34c98e2a4,181795069,6403950814477123024
+029bdcdf-4b82-9c89-f85b-45101423803e,3030507729,11351566499614591213
+7d18617a-c819-f27b-9ff2-162ebd653aa7,4262908972,11847461529525153840
+4bba7b49-b2fc-2475-e886-e63ab3b82578,4259870605,4327836770954273918
+090afe4f-714b-31db-b79a-7c53106a772b,1085442821,13660842901677991830
+07858754-8d06-68e4-c8e7-c7a206ed7707,213272647,12852528595403618830
+d4b0f2aa-79c5-c651-8cf6-c4513bc6a710,2769489335,10754554727502415460
+a4031756-5680-02ff-e61f-e3cab4b072aa,576581350,7372436622204616399
+f110ce0f-c6a4-b1a5-8c46-b5ed672883eb,4194279507,4083670994092199959
+c060e31e-82a2-e102-1a31-8bf56a2f0694,3797602014,4526084067594467590
+4f319e81-086f-b1c7-655d-c04457aac45b,197429994,14172615784138155088
+1eda4cc2-d02e-81f3-da93-5ae2fdb6bf0c,3621080553,12478648790790233888
+cd59f4cb-5242-a51d-1f28-c394027ce19c,2325873414,107160382164417711
+48272ef6-77b6-d958-5420-cac4209781e2,3105781827,11798898378213014304
+80103450-28f7-92ed-0d26-d79e81f6eafb,3443206079,13871412264996731682
+d404a768-95c7-ecba-42ae-9cddfae27300,3730093295,15398674952635399682
+c88d2c49-40c0-2055-519e-358e63f3ca54,198454797,15671302747574802667
+a455c68e-d231-00aa-b22b-f120cfc12162,400238069,10703994303577383270
+f6b3d469-b8e4-f499-b7ee-cfd8dfea5ac3,4204672984,63532806512460570
+4cb9d742-d568-c7ce-0ae4-2b713d49416f,3263764549,7307930928015384842
+9881b047-57cb-3b8c-4fce-5c8ea22c0ed8,407864846,12982029173341810078
+b0bd9677-fca5-c552-87f3-f0bdddee3a2b,1241065194,16981716377611132701
+4bda2f1c-2d5c-41f3-fc27-7f7116564548,3471050891,16554049783183578150
+91725241-c1b3-e2d0-e41e-65d5ece43726,4062008025,7401544466828718604
+427347be-0543-25b5-063d-9866d7ddee88,3232293893,13216844004323594572
+476e8d6c-8a39-6604-d0ad-c1256d6d8ef2,892450086,1872356431191040397
+3df1fe58-5f6e-6055-9f2d-09c3866cd1fd,3206469352,13652123298613850020
+6d1b3547-4be2-eeca-826c-c27a649bfc5f,3754350343,6896209567823552844
+89564fab-9ad8-3e53-4b86-71582bf95747,683200450,13307753557308162474
+5c687ff4-af57-6e22-a404-8fcda913da2f,1119599266,4366071908161242733
+79222a65-5719-2b1f-9d3e-f327090485f5,1585095342,2673048696983219631
+054bfefa-187b-7a27-0385-84071ea06bcc,2248211294,15723208250542442446
+56e985f8-d0d4-e399-d6e3-fb22dc46309c,904393345,848210134768442195
+299471a4-c6e6-f99f-ef86-eac2af05c3d0,3514681327,2328789694598274055
+407ef2e4-35fb-b2ec-7002-770b98517452,2227298372,17698109302696029437
+013432b3-582b-9970-d9cd-7834a19450e5,1367172439,13011265335233741086
+aff82817-11b7-a583-9e08-72890ce1cd7c,4088328768,4896126359582406991
+ec4b423a-afc4-8eb9-4c01-2165dec4787e,251110421,16908119968539358918
+d37b52da-138c-6455-dc33-3475059f861a,1155669675,3792887145541444982
+337ea343-4db5-18fa-6fe1-1ce484d7bec9,1022066881,762862471115217808
+ff4588df-dd62-ba47-7451-cb80f5437d1d,2988531979,5185204471174415405
+73966fde-8a43-e54e-96d2-e4def0a82f91,646860312,10078821232207564819
+db44e7f9-592b-114b-cfc8-7ab0a8cc2703,501889162,4157438988062228049
+a32c0f4f-771a-d61b-692f-f1278f0544f9,3585150392,7587515997747131450
+3309d50e-1666-2c8c-1041-33ebf74f2b31,3666859899,6648195321127178701
+d87658f4-b42c-431a-9974-0a2c1b1d5714,2698974582,13792687237714699944
+aae519d2-f471-a440-dbe0-98c129591d61,2067491730,7534018016882524052
+09ddf785-9db0-f73b-0ecb-06a3430b6e72,284696653,9947431847123980658
+5c0d6a58-ef66-f8a9-13fd-e6e5fa28f978,3778364236,4104004204705740814
+718fd779-1877-7221-dd6c-5b1e5016a93d,373092134,16586686838493676268
+721b6dcd-1063-13e2-ddc5-04e4e575424e,269043537,12411874179751039136
+5ef0eeff-9f55-1d10-6109-27c29a0b42a8,1931801750,5134602911169684341
+8a5c5614-5f9b-76cd-2196-e905a4802a23,195396464,4781448652832412767
+55752ddf-33ad-f841-2c05-5286e3541ea9,3058985382,8512748543485302891
+047d957c-6e68-05e6-8b08-1833f6d8c2fb,3282164034,5612273367452252675
+d42a08fa-c284-d997-f06c-aea5dacd4027,1038277619,9283700831804436278
+b72882a7-73f6-7afb-ce3f-17f45236ac23,1169675934,10313634809472661969
+20331cc4-a487-cbdc-5a65-df07a20ffb52,3518569810,7335816583455328769
+8238cece-13dd-c9b3-5429-601c0f667f94,730816805,467966270815291732
+cb9a8dfb-8507-1d1a-d87b-7ffb0204570a,874536747,4000402000572555254
+c300b5a9-571b-9dd9-1077-148f666074c2,258825383,16870100333925354497
+d6b322c3-6aa2-633f-5d00-c101ff566185,3936510627,14249469474106340574
+c2058349-0469-c767-1233-a4eff50d0f88,3595952526,18073126158636395625
+7a81da08-9962-0c53-ad81-e6028cc7e2e1,2380729443,7407074900751524539
+0a1a4326-7a0c-460b-2322-0ec0397130ef,279630783,15620820379476252709
+1527955c-5d76-dff0-a713-2e34f200b879,768481805,12463156198963906211
+7f059a22-5702-76da-7b1f-e7163e1183f7,4029213821,15615951314685290502
+162f6ce8-fe99-a2f7-3544-2f95930b3e8c,2464282357,6188485217160544400
+af6124d5-55d6-b6bb-9446-1929f3368198,2020440109,13839781983298419084
+85022773-424e-3999-fec8-6b233befbef8,4025035293,16308286340743620561
+43a894e1-5007-1f76-914f-a86e89d53ad7,2701759885,14471532344976440111
+d0710edf-6e49-8986-745a-869b313a4836,2063752673,12788557561995374196
+4cb83982-af8c-bd92-84b0-665a9a7cd0fb,2290497509,8545323066925607396
+fd54dad1-137b-59eb-9742-1b31d8b5effe,1697615850,58078743216913857
+71dc9a8f-f178-3c9d-d6bc-857fcd1c4de7,159570498,9837782239348660468
+1e08e244-8e6c-2cc8-94a3-bc5cc7f87b99,1282004485,55682644683389334
+91a342c8-3f17-6b8a-1fb2-27175287b0dc,1238288052,6145845448749068534
+b88d6c10-58ba-7d91-395d-5ff9636d734e,2584109752,1356642853797057303
+11a04be8-366f-4180-dbdf-fef0b6578d5d,2173753425,9681047771628269831
+ff17627b-3b65-9f2c-1eac-96e965611021,923902037,5324298179166956527
+ea0990a9-d3c3-46f7-83ca-84a4090c9279,79818628,9117556119772890883
+5cdf85f1-73bd-dde2-9fa4-f7944605cb5a,793118293,9912317880088017319
+25358b93-c20f-dc13-3e01-56fc59175b19,3757145987,14028882462486095671
+207f5d5f-7788-ffbd-7302-57c7d854c219,71813304,1301357322985724441
+8fc15a6c-4db0-f7c9-a594-9bb0897d3211,3837720858,15183318779853368041
+45610b63-e744-6da4-a01e-85c1fc828dd1,4082487594,12888379605368233147
+a03ae13d-7b7b-5cba-4df2-33ac7a8c5b03,3910605637,8632929811913876685
+ac09323c-c2d3-f605-62d1-5bdcac259d70,159202123,12150894584434463875
+6b210d60-3133-7359-17ab-8874473cd0fe,1246365727,5761006949131679193
+2084a90e-e69a-b630-401c-769bfb2d9fa9,1753393796,8586806381509808534
+036e7957-5c83-a0bb-ef23-7e10da79422f,767153320,9885019739419295291
+5189f52e-f72d-ca6b-c21b-bcb915f18218,2777895445,11005989335479931210
+b1c3423e-2afe-c062-cc76-d3087de8db6a,2888410445,16251520125677055291
+8a20dd2c-f2af-871f-c0c0-a4b71a6e60d2,1551499765,10042131092874801093
+daf77eef-f669-45aa-e1ea-a8616dfb2847,105619377,14302550640381045676
+7dd39b4b-fed4-5f84-db00-35e0d6afd842,145788960,7307337567004215168
+9baae622-8b87-dd5d-625d-883c21c75c23,2549863843,4212209410440800418
+9c869645-a641-2c3b-e2eb-7859dda1bd89,2291743351,9562408269318043790
+1707fb64-eb86-6503-a2da-7ac3d3090757,1459905770,5632248484249119777
+758f765e-85e8-0ec5-99d6-5e41f4a527fb,740369691,8194276496089386492
+f38c934c-89bf-a535-ae47-43b7c70ef72f,3121054280,6800592659677861723
+b08df450-9184-96b9-2ac0-6a4dd250d56d,1389016424,13107633444179304327
+f1c94cb5-9c3d-9efb-f0cc-836a17378f2f,1484311255,4881457215703269439
+b5476003-b3fb-9847-764f-39542695bc76,1780003837,17976005316347933254
+cc6187bb-8bc4-1478-afe2-776fb389788e,2437821229,14955200668464104180
+d897ddab-e25b-00b3-3c87-481b38c7ade4,4039923818,15705009716881005336
+f1416f16-ca79-4bb7-3f1b-2752c8d8f89d,3069856249,6645613448205550855
+fa6df413-9eeb-a8d6-2df9-14a4aa04fef8,4050240674,9062950566132806488
+e2f20ab7-da80-1f21-efcc-4410aa5900fa,4119853270,2412302635984279201
+c608ed81-d55f-3828-2c6d-5eb53e833a46,1424954546,9382574088501091680
+4ada1e4f-e157-6792-8117-7298a4316127,2309575825,6708307560327165841
+575e8c89-8ffb-1ea8-cc7f-58e531875cb2,3527010861,12590051641767033025
+5a83def9-bcd6-40f8-3d63-c0ae8d274cfa,1499090380,10245715857190764237
+107d4503-0967-ec22-41f6-175d94de1751,3947668913,8594728631344422015
+f6fab5e2-d0ca-738e-f136-898cdf088e6d,157617294,7323575886939192117
+87def5ff-3feb-c1d4-4ada-f05eb408ceba,2553522201,5155537773937595208
+a3f3e247-d642-5b19-b36e-f637f5bee4ed,4138703683,8563067297736129685
+67898040-a8a0-351f-6c30-811b38efa7c7,3321955131,13861423583982024186
+9fb08c10-d771-7e9e-3aa3-b7e917f17544,2834856168,7432483045558223414
+fac845e6-ad3e-2951-c081-a5dffced695f,2418837697,12120574154611442099
+f9d53a11-e039-e0ed-d575-e820c8ec0634,1364883558,3363015752109380990
+b60c4705-3ac0-3f61-3413-1795b52e1e7a,4293230151,14781124387876770190
+33fc9352-1910-3148-817d-32283f46a198,3158218097,14558359200690762904
+a1445134-edaa-e267-0b5b-15541e97a72e,1897004821,4631633971428934865
+c9d1fb24-afec-3efe-97f3-2cabfea8d44c,3835880205,2683016537872089707
+e6e55e29-e46a-35db-b8e7-36add4e0467a,4258541959,17280865049299813951
+e9038c1f-5437-0d07-385b-fb533948dcfd,930913563,6083726513107311801
+fd2ab2ea-edbc-adb8-2401-6ec08402a363,4246767108,8663466497256533320
+c8891e9e-7ab5-cdcb-5cc1-a9d20538ad3c,2038539815,9499036470173982019
+e7797b97-c2fa-5b4c-9eed-8831fda84441,2221898706,13232910220438222211
+2da31c14-4feb-114c-0fdc-770655a5b1de,887583594,2885400023967319393
+aa4a94f2-97e6-c529-523a-9419f06ee17e,3776810842,15836338888852251580
+5923bd7a-8bd6-6f59-c8af-2b44388959da,957422505,13181522324478361811
+38ac99e8-6728-0299-399e-a68a89825272,362316434,16600895351703485894
+f9092d87-9d55-a64f-41aa-660771b17101,1031181628,15691103991109194394
+979ea4ef-c1e1-f0b0-8787-73ae3ba0ebee,2366835193,15128161772740351293
+0faef9fe-6249-1eed-b72b-757810616d58,2463226810,10273669675607997796
+f7525c5e-6565-ef6f-175b-2d0462297f43,102993749,4302454302120170423
+887fc1bf-2762-ab22-5b01-3f552fe8cfa2,3713646909,10953300556140667436
+5913c85c-760f-1bb8-ee16-4891d8acd3dd,840615709,12873100037984145386
+c45835eb-a281-2e0c-7bc0-868440bfa0c7,3225573761,711617069228575819
+83e10b67-578c-d221-ad5a-33cec28d150d,1924562514,4756287945499972515
+8e79ca23-435b-b980-325a-e50362ad6e2f,2172377449,18400290073312989434
+f8d607d8-7cbb-19df-7cf7-572455906cb8,272214259,11263794204096551177
+aa5fad77-1970-40ce-17a2-4efb68f55fc8,2856975671,17494261676626096462
+2b0ac8be-0c84-7cc7-d488-a6e0f90b41c5,2830267709,11152858107933838720
+0e318c17-558f-11d3-2717-bd7741d69a06,776507584,6375445537629721344
+c5d75634-427d-4460-a1ad-24ed88e8eaf8,3447040902,7792480186487919933
+c4ba19c4-41a2-ba19-c094-1db654235f6d,2374386658,3555545079766990387
+0252e13a-d87a-090d-c05c-14361ee93efb,3356582980,10994879382409774059
+b53cf277-0bac-7d75-4dfd-0a7c9405fb21,1671373236,6483237671045436039
+4f8fd2a7-61ca-b1e0-a661-2f22332eb84d,4134822733,13914972477267468157
+26e958d3-bf5f-957a-94bc-9380eaffd74c,3708928717,17552456505826447117
+acbc5deb-516e-cf64-207e-bd170f47e867,1526784393,7595853057030027160
+441d8aa2-e77b-2f3b-e3e7-db7fefb3f6f9,2701379360,13253305011670238877
+07996e12-488d-a134-ce18-4341ffa83dce,631928147,16150711161872242887
+ed4f434a-fcb1-d763-28d9-5a3c90c6395a,1834309177,5192310813076029076
+c36b712a-c3ca-d4f7-7149-9664a8b60404,375198913,1269425378122097093
+c2ba0856-b94f-55f1-9bd8-bcc620e68c83,1163490717,15087870167837121449
+1c0ca0fd-0013-5083-6594-d405806f0713,301799983,5208031229305881180
+a14fadda-7728-fe51-948f-39c93154f4fd,576803353,10696836730723458494
+fe0014e2-858c-bf3f-8ad5-0f0ed9cf3b35,1605916751,16799095198070561386
+6f25c5a6-7d0a-a317-2754-8111d792760d,3454300101,16389882236102376107
+1547ef54-32af-2195-946a-ef0cf78ba7b7,3609769788,8918191868032051219
+75e655eb-e902-0756-3e64-5a88ae4cc296,453190532,4731301916596736988
+ebf88142-6808-34f8-715b-06de563d414b,1939352521,13245442666323837751
+fdd818f8-11d9-2862-aec5-13f30174fc3f,3265597133,12411778176001321690
+560b08e8-2553-e32c-fd23-ab25ecbb4f9b,2705163327,4724551518526219870
+16c8e21c-5eca-5358-90ae-01eef53fb6cf,2987173742,1461886378164695307
+32dc7569-f2da-52c0-397c-15595180a8af,657237025,2880891071426325281
+5d558950-0934-6066-3466-095da014da77,2630380699,4230305442161502398
+a4572bdc-edb2-4523-757d-47e964f36d84,1010882097,641736706308981477
+5803e038-41fd-4d69-fa0f-afcd310cb089,1652498419,7421846430234623615
+9a2a207c-98a1-271b-4a28-53fb084afcab,1336661489,11491991263434831642
+5ddfc12e-d0e3-1764-6732-6dde55047d23,3979129731,3714008029586120093
+4fdcd0f5-904c-a358-e14b-552b4633648d,2276813822,14651640370040442840
+2bc0ca56-be63-ad7f-50b2-6823cda7e0f6,4105888663,10331397892584141905
+cce4e4fc-c7e1-d504-7082-9cca6a927759,2774779385,8998017829429662371
+f4512701-92d0-6543-116c-b5be4c807159,207074028,14697952229058799524
+47f385ef-baf0-7565-195c-46075d4f3db6,308891295,13069688253792854005
+66fd35f3-95e3-7945-0ac5-6d737c8648b4,4146361581,14981489121465543451
+99dfa34f-7692-7ee8-a035-3213291b4989,3318873934,7099565410041654202
+70e29310-c89a-4ad5-f576-eb5980be9782,2029360202,1014547691924796107
+b5d92f4d-1342-599a-4cf7-d25d9cc27220,551929013,6711173274891322159
+f3f8e800-7813-843d-828b-44a6f8b658a0,3570053557,16646609306727579311
+dd7c0d3d-7c8f-187b-a651-393adfa16fd2,2644793930,6682736181631871271
+8796cf5d-fd1c-4ee4-65e1-58dfd51e7b95,1277157636,8399040752500154163
+53e002e1-36bb-ad45-a457-95017bce4db4,2803256431,14805798702100698289
+a49d9494-c535-3098-f890-575ce068a57e,3845711605,3810551557697396399
+5be06611-8264-a49b-9c9a-c7366077b1d8,3168796710,11026145590308645933
+535cc2de-e2f9-4968-6d20-c982227d987c,4220886635,14613002650049857841
+912f1b25-8d82-bd25-2ad4-72690c842101,688827428,4483576293825256915
+4502b2f2-4bb1-b0c9-a1ad-851c625754f1,36114360,18293795058933951067
+e41fdda9-2574-3676-ad2c-7f006db13dfd,2448916362,10877619761585310845
+6aead7f2-9cfc-70bf-47d0-452c26ef1868,1139211609,7992585620503705054
+db4e74aa-daad-9fea-9ce5-ab8c33a67a3d,1455494173,10997375094879690522
+c78e6667-8929-8165-aa52-a813ecc6e09e,4079908752,12777644616693626575
+619560f3-1f0c-6528-27e2-4c06649e2ad8,3125702471,12757432490634471119
+d7ce3ac8-9d00-93ae-9dad-1df91fd4575f,2783858779,7965785165520873771
+6383bc9c-5a56-350f-a998-f89596ff6ce3,3897202111,9303724982324188144
+569204b8-ae2f-caa2-1e54-babdef46015b,3050125842,14255584823136886905
+c62f6a28-5703-94f0-2d06-a1345533f51c,187989826,12469511011296302930
+1e01b8d2-74d9-c22d-be06-d9279eb6badf,3425434476,10731723035711345589
+e539f45e-fef5-af31-4fa2-69c43dca4f44,2734911772,16158910065093887737
+72444cc2-d2a9-93f2-8194-730fdb2d0575,2405763086,643997691147910434
+fc58ae8b-508a-6f9c-2edb-7b09d36afdfc,894235095,12396058228860807692
+deb33790-e107-d4d5-2069-8d5ad939c3cb,1836997461,10372968577328793755
+4d42fb1e-0245-0dd8-4a76-40331f1c1f14,45061738,11720546677235120154
+12256ff2-ce19-9e1f-da16-0566caf603b3,2651793920,6419257050569037581
+9578addf-353c-26ca-9f0d-7d346a281f64,2029690668,11843071128887308118
+253b4d33-619f-67b7-cd1d-e5f7c766c024,240320029,12057989332665799846
+0c3a2254-2e79-366b-f183-88470a175f4d,1656442162,7247365880189664
+d02644db-b6a5-0862-6343-8030ef9cd52a,2834322931,3717387804854601620
+d6c3718b-7ef3-5e5b-6516-fb3ba5a9750d,1400955335,9195625828191708813
+f1b2b521-a433-caeb-e7e5-0570edb00a01,4283088213,330033022114349544
+a18a355a-88ee-dce9-b5fb-d832d259b7e3,4253245609,4124390797401376589
+423694cb-b14e-7c60-23ce-e576fd0a6ff0,2739886575,211065238122791927
+10e6ca3b-631c-5320-643c-ed26000a665e,3641899264,1420794643072601154
+1abe7da5-3fc0-aca3-ecce-6c09e3e3d4db,1682084791,9301266879866103760
+2d85bb8e-c442-b6e8-bee8-b79f1816c588,3615194361,16592825488442726984
+9d83b1b0-4bed-9e34-36c7-102f18974020,2949023548,5385452465158427825
+e4462a99-9e9e-4d4b-a3f1-4f6979523ad6,946709246,14201690930725172949
+0b773cd4-1030-f8ed-3893-34e2a4ebca17,258160772,4333552243369599579
+546f4a85-5634-0ebe-9c54-6bcb8c823dbc,1538812542,16109321562079287788
+0dfe77e5-b15b-e6b8-4e21-387853f1791b,4070851157,14506593904924763500
+1565d78a-4174-13ec-a259-c9d485ac54a2,1850050586,18299561807790713446
+5c871130-c2ca-4c4f-ec52-b32e1f09c214,1971442791,4087432557590511757
+1dd7add3-da79-760a-244a-3c3082898a87,1295926312,6763932564358403204
+bf1db1e3-f998-f1aa-873c-a7de3bcef32d,2322008025,9693711724292283805
+2f00c02a-baae-8122-837b-4f04034bc368,302068530,6037045668696166263
+c9cf6bb8-5f21-d24b-fe47-f0103bc10c99,4110983840,3736379851745675537
+40a28e61-3571-e923-99a4-3b0f8c7102d6,3064439778,744552135938423020
+1bf5deae-7c28-f4d6-4f85-15a917dffab8,1454540846,15438050055781797790
+4d496200-766a-a592-dbf3-09b074fc3baa,1183663115,9107403672229494179
+79624ffd-37d1-6ff7-dfbf-abb73ad5e511,38764902,9066965493098700915
+a92d3bc7-2975-8b85-bf8f-923ed69151b7,4144405667,2518124365221693957
+3cebd5a2-172c-b56d-3842-7f61a8b22783,179158517,11333015212600697099
+8cd696fb-8009-3c7f-d734-f95fed4992e6,1326260151,12657390072166740961
+c11294a0-9007-d2a2-1641-c3c13ed20990,2694565328,13907505290296182167
+26ba363e-2f91-070d-0ec0-a314b6230409,731339774,8146265376888147644
+5de13f51-dfae-b272-771a-023258404436,2601567669,11368342910589200447
+bf1f79b8-799f-40e2-580a-ab098f1e7ba7,2474085768,2595847139056024470
+6bbdfd71-d9c3-94d5-4051-099cfd225591,2960116648,8469654469835722316
+53ce5add-e0af-a8c0-b391-0340f46766e2,55937878,6607746546828820671
+60fcfbad-3af3-8cb5-875d-3ca7ba0e437f,396321437,17207641321625909400
+ac9ef7cb-5ffc-fabf-5dfe-16b84c58bad6,1018183005,12032988388429796525
+e885bd9b-7bec-ecc0-5e8d-76d7a94e45c8,3895159473,3018829108889592250
+933471f8-43a0-260a-cee7-8db074cf5dc6,2085472172,9572667438679594243
+b197bf44-b383-c0b4-3791-5b55ee940fea,1983836286,15459216726828854743
+c3678a09-9aad-ac6b-6ea4-bf7e625ee6ba,3844133460,16318365663339701750
+7394cc28-04df-bba6-594d-e71d7be99268,4047035989,13306962103600441659
+0ade2f5d-e031-2211-284b-79930599cd3e,3803577797,1382187482839706345
+8f493af8-d361-596f-7bcf-7b9dc663c2ae,2769620565,11401779421914034699
+726df118-878b-a9fc-e924-6aa9df7ff27f,1754833707,1812544200894531909
+2f7181f9-874c-712b-ebe4-a36b25d95828,3922629664,1291272006063233512
+a8afe7ec-9f95-d5bd-f9e8-c314e08f35df,3527895421,9266156662425605814
+57386b1f-8431-f009-0b7f-6b9915340893,1582175939,13493490386702900686
+a76fc5dd-6983-48e2-3ba1-aa7763462cbf,3635098895,137976429608573919
+3411f55b-c9f4-b4f6-4a0e-bc8a89ac53ce,1805784292,17992796040686044795
+4a1e190e-200d-c652-90b5-3426339c876f,7709491,12157215658356657623
+aabd1b29-8d47-ec52-9d41-2da6359ceaab,625896395,705385677036573163
+cc746996-9386-f4c0-43cb-081273cffa2c,3696201347,8464114490393388614
+10d9e50a-2d98-bfbb-5d15-83132566466c,2674157208,8647758222027273989
+f77a0700-0477-c4b5-0dbd-87059cde8042,4281307819,13020626808958698833
+19b20d5d-6e07-31fe-1170-dc4b21458d17,1730201062,15004557865550418127
+8fdcf9f0-2878-0209-bd32-7da65d131d73,2918499947,6953856292768612225
+27cb055d-a233-bc98-e2db-8ec2fd1303e4,2494074308,16024460779706785017
+68359ec6-ec1a-f7f6-10fd-92b42251de5f,3415432267,14732150707027786865
+fd742e23-fce6-30db-2cca-46c76f62864a,2011538161,3651060135405221246
+e29bbcd9-8350-68c8-441b-d947cd7e7bd2,2389456784,4934554599421698769
+b24d8778-3566-869f-4527-489b7a0958b6,1837789917,15227268368363083266
+e610fe7c-0043-a313-7aba-dec88c80d233,2954975484,18166511489844702822
+ba0b25c0-7dfa-b86e-7151-5db1a5e82beb,1554180033,3794734105544878775
+a4f7b639-140e-b231-9eaf-3064e72978bd,3691425796,18330959789133931736
+4ccfefa9-e906-616a-eca5-39cf5c0a127f,586578531,7370788592087644072
+50eb94f1-1e82-7b18-13ad-77d0ad95de26,1839422944,8922873608053575768
+5efc056d-5b07-5f78-2291-b0b1a0e3dfea,1187382159,3100682535881932778
+c12ae982-0fc2-b3da-9971-52e25e661cee,3292460318,4075060014227846354
+e0f38b78-6432-2c80-48c2-f496187814cf,38674354,11468312755652970265
+312e0362-fe04-1248-400a-35077c7ff81a,3487929755,7888659043994416059
+2c339812-4f2b-1276-27d0-038e4499cbe4,423418724,12457328770560689780
+3c982ecc-1a3b-b73c-2fbd-061497aed957,664080281,7129028664880748649
+2bc5fffd-c64f-937e-4b68-50df51d61844,1293160476,11717123348998743318
+0e1eb6dc-037f-cad9-1ec1-01508f9bea98,4074196661,2877817747854680571
+89c56519-9693-fd4e-726e-80e50c144d20,2180196810,14894453096057799835
+08871993-388c-cc3c-da11-2b4b6c18684c,1442787739,8580232376953460366
+78367863-875e-95ad-2508-08d91f9bed6e,351011949,11687176966871310566
+f191e8b0-7270-5981-af19-fe6c524c4f82,2023279873,10732634842761738498
+5833a46a-4a2b-15ab-a129-6af68b215a72,68695059,11259182204760110899
+e0326ecc-4cd7-50a6-f03e-7896ea851c79,4108118842,17199952315402570975
+980e4321-f0b1-e782-9b8f-43884d8ac442,1582819232,11330974629017152397
+5890d1f9-adfc-6f12-829b-e7c82610e656,2023097865,420817661334881433
+5827b295-6329-48da-3e58-6491bb2fb002,248386508,13896196056109375969
+479477a1-b76b-52c9-afdf-b9a6f9995cfe,2140860154,8936649003158533581
+8ff8620d-2801-aaa3-b37b-2e5c0eb37d5d,953756583,375748577195501492
+eb0b44e4-cb4e-d9d3-e44f-e26f419d9e15,3068730062,8041436188894986053
+09e51e23-9747-4f2c-1e80-277a8afe0598,4270066761,5583188362451534881
+3098c611-cf58-c8d2-0479-513c4d2f3242,1300367412,1581171540324539635
+338a59cf-8844-9759-1803-7f01d7782bfe,2333478846,11424397235816526803
+f3489013-6ed7-eada-94f8-fc5cd16168f8,2297359313,3468983439403838595
+87a7e39b-d07a-e20a-fad3-faebe9e15374,4228645494,9022482387532305714
+a0304328-2702-3548-d637-d458865c2309,3737282672,681355905894470443
+535e47d7-0aab-8649-4c05-f6d24a29ce58,2087559568,9973888322717214342
+099b3ab6-dec2-e0e3-1a67-ffe2505cf359,753265392,3285630909267305430
+c07fe850-754e-ce6a-2d49-806799ed5139,1295631676,7580641240069076656
+60c91379-23f6-7c47-d677-47ba84bd5dfd,548833511,614935534421473445
+c3b817e6-4f76-23a9-fba8-36f9ce085285,1129199793,220004432220065648
+57b45183-0b61-6236-e8b3-faf4cb4040ca,72021864,17662694115301406758
+b9e6dbb8-f68a-5b34-e9c7-0294ee7758a4,1003573167,6307310415001528897
+710c45c0-e623-d911-fd1a-5380f1579d39,1574978696,12901061494177818087
+7272a1d6-28af-7158-6e71-30d30d178965,1999682851,4109594978467386482
+6abe6d6a-3b02-b05f-b365-1af72c4bd574,3968300451,1823072999736622034
+6468b36d-2e06-5203-90d4-0ce7ca8e7257,1247035609,1331568116458509543
+83977e21-3c78-af6b-b9d5-1340af9f7a5a,3692713931,11081721409211672840
+d16febce-c846-1f3c-5c99-b9516abe0be4,1050918450,2824444280468126995
+bd11a801-1bf2-7103-3b05-7236588eb5c9,2471918352,1677837019843909333
+31ac03f0-a874-acfd-9469-315683c1d9bf,1805510759,1556733429607029440
+f556380e-38cd-4143-dba1-5ca92e3c9f84,2326007906,10991030914418775256
+42118e9c-1c41-c4d5-5449-06bcc6cf5159,3304439487,16013330441043735184
+a191fada-e95b-3eaa-d37b-d437991a5094,2070456911,2740409699877323278
+33ce7907-374b-7630-c313-54f43ecd53a9,236012787,12439526895821717974
+d66bd4fa-963b-a931-bf50-344af7d2a641,4230714832,13030074478756455859
+63fc538f-e021-02bd-ea3c-bb8b9c0f07f0,2536822417,14278465768664762823
+3df42e25-fadf-9324-4ed2-4e8c1bfe4589,1067009376,16470758372983206261
+129e6eee-f4b6-7bfb-4e3e-e16bcb3b9255,1457461467,14328952000362810991
+bdc143c9-324a-ff50-4bdd-39ba45335730,2312611996,13331221954002181784
+5c015e2b-9e3c-edfb-601b-8ca269dfa59a,636474872,566089658998608286
+b85a0869-609b-e1fc-095a-10f95376529b,3018814273,12251548805972559846
+2c27e694-0b58-09cc-da1e-0e603a20d420,1227363153,17737503781458474149
+650820c7-d4f2-3d06-9f44-6cfdf1c42638,3427184663,10723729790642254129
+134010de-8234-bdc8-33a5-dd8c6395bfff,2460844914,1674466248922691934
+8b089218-4833-e810-def6-c97faabbdf2a,2300730865,3896051193339927356
+cca0f332-e1ba-e63c-4142-d15406f35910,1328301773,13312823106316020722
+ff5086cf-e6f9-64b9-336c-4fa7e985a62b,1847639866,5148155055387624867
+a01f1e80-e1aa-cbde-a77f-3c42e7887b35,2351540809,13350654500752961863
+11578e78-b477-de99-048f-7b4b80b2c4b4,200558707,2068602887029936762
+7d639000-863e-5698-ff18-da629468c2a2,461601004,6977334307404562336
+c20fc4ee-4123-22b2-9b6b-3aba8d817b57,3799777385,8243042991650557698
+2915c143-cf6c-2e47-360e-b7190c779263,156700207,13440996174868771333
+fdacb0bc-6b94-42d8-7422-247617efbe63,2630915467,4984148832136369527
+aefccef2-55c9-cc31-f924-c2252b837b92,1887306639,12250134520847231039
+fa87faae-eeac-b51c-488f-360a9f70cfaa,910170922,1912265183970931565
+a966b637-4240-4ddf-d00d-abb1b798bb7e,2884523304,15089741143940294408
+15435684-7039-2f35-75a1-409b847e16f3,3073929790,2251033939262589420
+9100173f-0aab-0634-617b-6db0e0165369,661030832,16974133202531778808
+0616b1df-0de1-6afb-9582-bc3d4153773a,2543735325,10595256789920727827
+0914a1ec-1de4-98ee-88e1-b1658e9dc008,3389415967,15869942752484617432
+60ee2a90-57af-2e6a-0934-64dc5701cc0d,3956493403,15605995699113626135
+ebcb8ded-e1da-8794-e184-4f3d50ca7ef6,3665202774,16821479973680115489
+34b8d6b3-0694-c8b7-8753-396f4e072949,2710438826,1216866017716872236
+a908df6e-d8fa-b595-7acc-76bb756c5974,2050042910,3574274571133497742
+ee02770f-9bbe-9369-b9af-026ed47f0212,1917140457,9743554969660964272
+4fd60fc2-61ed-eed7-5b0e-f0d26f8f9199,3746393568,5555637312658235324
+0f253a63-4941-05c6-e16e-d89023bb570d,64473335,8964136319191164899
+ba4f661d-762c-f673-a9a0-9db99a5a40db,2973716772,1432907789426627871
+b839b5d3-69ab-ac82-b7c3-d3bcbb168988,1948850714,8458422337435153779
+5c9c4f10-e93a-a91a-d0c6-b5bbed9ffefb,2436512340,15054723616177777117
+091aadcd-c8d6-e1f4-8498-e68c62e5a13a,3972750177,11785259134782941390
+f5c53df1-88bf-31a8-a414-6719041f1f2b,3575432840,5087884212071962103
+6e065b1c-d1a6-9802-31d0-5830bd7f6ef0,810231021,11378738382228265474
+64a24ae2-3482-aa26-4d18-6ea637b9d2b6,2699276772,2146707220837100417
+4da3eee3-c302-431d-2bf5-44e9f723f875,2744521010,17307675159436161237
+4bab01db-7a10-7812-7db2-007fd93dc91b,1752318639,6636644075106551618
+4851572d-131d-e469-fec9-fb6e1a38e73f,2398932681,7410641720197783001
+ba987b03-cfe4-212c-a3d3-2b7c2dae8b60,1230211990,17480637049067930486
+a7c59f28-f016-d193-b3d0-f3be339b0ac0,630470428,1430961836416424126
+141c2897-afc8-244b-9f8b-30d6fb560b0f,2834548777,15861124198464110492
+0c7d64e7-e86a-9932-b3d5-c314b11ada80,4094495204,3927660028149045049
+9691a3c6-19e0-f955-62fc-d2d7f51e397e,989029103,18266638163088535217
+9223e964-7a46-66bc-60b2-9a7a682a36f2,3949502432,11160135041923619868
+469b8b37-e0ff-50ca-e408-d1cc03032e5c,1209079316,11029265268776495648
+12313e1f-5c3e-8b1d-82aa-2376aad2b900,1570613355,15738348618229221103
+295f4551-61c0-ae8f-f2a1-ae8eb7d1923d,2251743257,17014516544816677700
+e8b6cfd1-b938-43d9-65b9-46bb644db6f8,2473456931,13235098387207687543
+a7456221-feff-c562-ea7c-46fb78bba335,2275629102,2586456185452330194
+9f41eeba-4ed2-c6e3-469d-572f1acda985,2974184820,4341251116752297948
+ff28b1cc-3dd8-e471-3b51-cb8bcaaf1992,908234957,15796185968425266316
+398db677-e978-2762-bc1d-3d64ee4c413f,3607748788,12510741391475844732
+a57f3cb2-6012-cb8d-b7a7-d592b282655b,4285840961,9196723353040968438
+63e83f5f-88fc-69a5-dd04-0c53c2ae236a,1806178485,6365958545572392091
+75a78706-4318-24b8-b6ab-daa3c945f657,1430041512,17824066447733624296
+450a40c7-d399-9a51-e02a-ce0e8ffc6128,2315772135,16256800169627576211
+a20e4eac-d29b-188a-5734-67afdbc7dbaf,2939802236,16309142941457302461
+5285bf19-3363-bbfd-6622-e9707a56e5b1,700600463,5513732886241349384
+4d43f948-3612-14ee-8148-a51f4eecf624,1267526384,13347027619711815204
+e55acb4a-4ed5-ae41-ed8d-363f236be5b5,4189524846,3349808061270986378
+ee053dc7-e9b4-6192-e3e6-1e34b2f6f7c8,3265147232,7704827797402529914
+83b406f1-01d4-dbf1-0d0d-c979771b0b6d,3969430508,11799575089961547756
+ef7b7bb6-751a-8d4d-03cc-010244000d0b,2440934149,3621252621465777051
+f89d5d8b-3ee0-4161-e0e0-a1bac98a57dd,3012084277,10075180761339825072
+1544cc2d-900e-ec47-fd67-b4eb042be59a,3532021802,11625774799023244761
+6d95265f-77b5-c07d-3ef3-8b26003034b7,1402701,1126059725674986144
+cec5afb2-278d-a8bb-092b-e089914bedc3,4009688075,10822175235782056663
+f20dd579-586d-a369-2303-3a54c661ff58,3695710164,15675146895270826229
+f620088e-3758-d435-ba70-fa70ca74a0d6,2747061272,12664893255527126079
+bceacf46-2277-7027-3d97-ae3551c5da59,1379422727,839635538108305419
+40084fe6-aec0-f1fb-513a-89eacc762d2f,2808805583,15133061347275125305
+771737e3-7b0d-b831-8b32-bfe18411d00e,1666240495,1863584238999925735
+bf04a4ec-d776-d1e4-37d2-b8c33d34eba2,2008870749,173347332989010929
+b79d4e0a-d3ca-35a8-bcdb-dfe7c4c5d408,1263809599,4521187064180601415
+fc8213ea-ce35-b596-c94f-de111d339a45,4020077405,7336825805720921267
+7d8ed5af-5542-d628-4c79-202578835707,1500821820,15586984276258335155
+36eff63c-e466-414c-1345-aaa78a0cf925,564132525,4461727777461707977
+827c5f42-3a18-0647-b755-fe54f81ec397,339422819,1262956958216757937
+32d6849d-1386-f899-9779-f99d5e59cb78,907658473,7220249234241355411
+ceda3030-393f-0aed-bc05-a5f37f98752d,3795003144,11176098188096585435
+65443f9b-7a57-4a41-c188-132e9f00fe2d,1250425468,11112947983750188026
+14ba6dcb-8291-8be1-16db-18cbace88453,241919627,1032458552955108113
+0f148d6a-a9a4-2692-b4a5-24de4f4add07,893826705,15455278540398106471
+a2399f50-2bf1-816d-3d4c-0682339466da,1286997724,3511520200626835659
+66486388-3a08-6339-516d-6ce582ac3049,3567438878,1368427862600913440
+f0c98ec0-8034-3d53-39f8-f4b1e519d9c0,3445663894,15191625406808226712
+d34c76ce-80c2-8236-24a8-680d25730e50,1607883475,2157100252407338844
+e35383bc-b40c-245b-ad22-56fd5f72b1d2,3050169958,12246173652146033908
+aaacae92-9eed-b4cc-72a5-bf015743659b,2353831091,2755438994894448810
+8d588df7-f2e5-cf2b-9af1-84512166fa13,2442242892,7556704510992296474
+17968cf8-6336-9f66-5cdb-56a1c47803c3,3827141279,555203748181790837
+14056855-cbc1-cb7a-60c2-9c5ac994fb68,3447934279,15505062941214322712
+fe7bdc39-20b1-cec7-543c-59a670927bdc,3863507176,14784642944943248472
+24834eef-ef07-f089-dafc-2b1ab57ca70b,3818385947,17559900005358431916
+ce14b25f-b9b9-9f29-cbd6-579651bb8e99,2098185162,14071599048686564913
+09b1cf8c-ad2e-284c-622d-184cc1509ceb,2351663628,3400571218612186350
+02d5421d-edb6-2b89-9736-56e20543bf01,1201123291,12598842950094916623
+2c6c8392-5742-4b25-f064-6cb3bcae3409,2819343153,7049244272286257873
+7ea8e9ab-de2f-1b3e-e5f6-c5ff5058fca2,3215687369,6191480441971717403
+be1833bd-848a-540b-84bc-b11eae45f374,2590306330,12409740111742770965
+3e68ec83-93f9-a22c-a9ee-e015de00f3ba,2716444027,10825707890426052954
+a988db65-2a31-1684-19b1-0515e463a780,2206107883,6238052617857120400
+84e756c3-4bdd-3780-51e6-b0930c8abb58,2471985320,16524203769257608622
+a965e77a-335c-9124-5c29-1f6206135408,4206900787,7866792088148843544
+96bc3016-8c6d-10de-0adf-a6fdcf8d24bb,1228789896,1262317813743344399
+0ad13fe1-36e3-68a9-6f7c-845d7b9267a0,3795387152,1212217850059207544
+fcf166fa-2542-8b90-707f-4fbfa284c06e,1311314529,10224459240677758784
+428aeca9-0531-3271-1536-5ecad19e8acf,3304005723,16127991051301162770
+5922b862-4abc-5ba1-a3d7-cb5d19f1bce1,3567991711,3091730104598133840
+f4c5efd4-657e-11c1-2015-8b04db4ec19e,1836930292,13435281979343009683
+15a4c635-4544-e1d3-aebe-f35c8ec40c17,2689536454,12897693907304620416
+7a681a0e-e933-b89f-bfe7-0894a8ad9f58,2228313556,580173645394659243
+1c0dedea-c72e-8a71-97cf-bd392a81e3aa,3629289341,17302376555021657061
+3c5dbafc-62f3-3fe3-a73c-740ec96cec91,3211999840,15639393557163054012
+de198d3a-cea7-0010-f56c-dd172e29b293,1708669449,15294738640730522297
+8f942118-33ea-9d39-0d5b-d17415d65849,3281800844,2290194953026374118
+f16af2b2-e45e-da9e-aad0-f34ef58e7640,2287513620,7432871486811937814
+873c2588-b2b0-4707-4c1a-0ca77044c463,3600825061,12712485339157954950
+93c000d1-3b4e-58fe-d9b7-6e1b7a291723,2929264891,13803388442187232697
+275db20a-62fc-bbd1-2825-777ee3450b2b,367509425,14550216088157115380
+3f31cc7e-edff-1af2-db50-fbf295b0c603,2993675037,6713135601816502290
+fdb8b534-9cea-5d7d-95f4-af1a19990c42,1206406095,15376968407759169725
+c204980a-7c27-2af1-9c38-4b84d2c2d3d9,3410274843,12750448432138546812
+42d51496-c0d5-7ed6-9629-4d7239beafed,2727575233,5212049021969358135
+392b2942-2eb7-d7b6-ebfd-540da0da094a,1326976556,309131829437773480
+1696f4b2-56d6-8223-893f-2743fc04139d,24700116,9178481232333231281
+fe44150e-3429-83ee-04d6-5b6933af063e,4044273147,1547411571492174960
+be3671a7-215e-f4c2-053d-94abfac67240,1313908920,12017259523238217290
+bb169bb5-e8e1-7ab7-156b-16e4b750b675,374669551,12175672620361274037
+01c18481-5b10-a7c0-fa5d-cb91485f32de,2975950350,1109494522952506895
+47db4f21-490f-0f7b-4b18-27ad98a8fcd3,1468367266,17144193461119101525
+d45549c7-47a9-ccef-3883-95631f980ca1,220626682,16692673900941868423
+55e6d562-87eb-41a0-8c11-807581319842,2062023672,16431495282510241588
+a8c3c085-162a-5cea-414c-76f718e18f37,3512938123,7695059832535638814
+77b76d55-71b2-e443-c4fb-de581988e751,3842108148,9273928232490595010
+ee936321-6c15-326c-cf7b-a07bfd231990,947873135,12619525396506430546
+8cb58d23-e285-4447-2460-91c95871adac,393438750,7707357976330098866
+9c927659-6cbb-fc1f-8906-f70215c144d2,3667867627,16977048637380734910
+54ea6bdd-fa34-8096-c1e5-371d2586a800,4018448916,5850815895026346714
+136ccd76-ffe1-35b7-10f9-961d148b4ad6,511292437,7750623219319170232
+a102753f-ff68-d37c-ef40-2ea54d1a3918,3885175672,15535628258082715314
+05396eba-a82b-a73d-2a24-8c1a00a63e29,37369667,4140527216953932949
+3d4ee4ba-cc99-c516-b820-3702c7593daf,3081365846,15680236384079560762
+2c4deba2-a955-9ac8-08b5-38c30e3447f9,3628503284,4938938576561930206
+51f73d5c-33a9-1649-ddb0-816c0d8d1589,2940572712,4478429835208006573
+f6c7ff67-42e6-f932-b54c-3198d7ebccdf,3013742791,11453782203690717764
+7fb19cfd-4a11-0d1d-3118-f77c2e063a22,956424004,10935178614042293523
+485bbbf2-2bb3-aa61-cd3a-e87beeda2f07,3985064143,16210668073874401803
+9c10fc30-f505-ccd8-8f4e-48832f031957,2228060699,12688063610911706674
+bc5d34d9-3436-a160-3c6e-9b919a6c76a7,2302909473,5260184255511432146
+fab79e44-bc0c-74ca-8543-3b7c7a188488,2243624529,7139738579206031804
+17833fdb-8065-6196-433c-bbefabf5ebce,3375227003,7922614557359404933
+23eb10ab-fd5c-2f0d-ea56-fdbcebc09cc0,2256132221,2703305735037083419
+07b2b245-ac4a-e8f2-effd-a8b079ae345c,3815548289,16184293719780935120
+ae54b11c-7367-6b5d-caca-4ac5d42fddd7,3328114643,13513470993132927921
+d844d1d8-c5c0-670e-106a-cece181ace67,1899925243,9784518863263749898
+4cbd1a94-4c46-3ad9-08b0-5561bc016cec,704465723,6369714985220522389
+0e39b352-eda9-d631-4085-e99f660eaecd,3362837008,4184812566886142652
+413bf9ad-9b82-4480-55ce-26ee4cc9fce6,778067073,16207756061924113168
+54fbf798-df62-80a8-514e-edea829cec5a,1361383557,10461668868259964974
+99e5dbc0-4d40-e9cc-a374-77205f67a9de,2746056583,692040963630471809
+99eb024a-98c1-425a-77a1-b205a2b850f6,1225397815,13257190218392040840
+5e21b935-a787-7c7f-df52-ec34f671f3e3,1010524830,7972463368985439194
+a8b584a7-f1eb-6f68-2bf4-2b7bc488e8af,2703240424,358079936875961122
+b039c10e-6097-b7cf-ca75-c00903fc5a1b,3152363030,9471111732499575133
+d201e4f3-83ce-e44b-7ae9-d41f34b1f4ac,76442855,8858220351766246749
+ab707019-c89c-ad7b-a714-6886b2e484f0,2796131305,9515682916784742237
+03907dd8-0a71-a865-133c-c6236f3ae8c0,23999608,8639784748921182471
+1e791bae-2eed-38a2-f6dd-a97dd84341a1,3422491443,13926897377260110643
+ea899781-22f3-5565-b23b-50568aadfef4,1218135798,1821689666410451674
+f9fca352-9089-5e8e-f8c4-1c756a5e8a11,1844983021,12964468334617784271
+f612aeb1-9883-e8a2-ef24-9013f04dc4d9,3089887511,13553101078488256685
+01150fa1-4c1d-77e0-fbcf-34fd78f5cfe4,1225170743,13614253166306473038
+520c64aa-cf9f-7aae-5cc4-8663def4cd87,645600948,3745965061471579534
+c918b03a-a0c2-0d7b-c4e9-171847bec8b9,3452626196,14968554646579115066
+3d80520c-489c-759e-e3dd-e47fe035465c,558910230,7068312492201680232
+505bd9e8-6b34-2a9d-45ff-452a421ae28e,2939428679,13052643604288863764
+14ed8fa3-e2db-2623-6c8e-34424f88e15c,595620046,11189675195206501373
+630f9a42-f4c6-23a7-ec79-d0d491165c5e,1194242698,11123648292692432476
+86132cb7-dba2-233f-40e7-26a2868e2c4c,3200261158,16051189538031030928
+8b24279d-7634-724e-472d-579c13594e8b,3584010915,13241589543966528455
+9b5180ce-3355-ce3d-86b7-29efd79e0e80,3181194865,18362495760994587196
+a63f10d4-f171-fd92-1e8a-5e23250024f5,995668905,13823899467448726468
+f350dd05-2cd9-8b25-3a3a-f164725789a0,3355942504,16293066929114700597
+cfdb153d-b275-b74b-3d08-e098eec671ec,2028173789,10535166533456944743
+15d002f5-ad42-d767-adab-fb71e65b2114,2156088821,10012709118554784318
+0943fbb1-5bac-291c-41c9-9f83e523c19e,992541135,5718029014643864147
+458b43be-0a40-4d9d-093d-abc1411e4a92,2334906848,478374687345794318
+75e8b9f6-2f34-c003-9b9a-8dff5e61d758,3138733079,5104017844545738295
+a4eadd61-460d-ca3e-7c50-e49d1dcc6f0e,2187811569,5656064968017434861
+0066cf55-f301-f942-c6df-b58cdc8f8c33,2715781854,1469504840575832079
+9713422b-17a5-72ab-14f0-84bab1961ae9,1007150227,10854063730096935590
+b785af28-ed71-40e9-17de-1fade20dd7d2,3245432448,16412836866746643734
+e3aabf1b-922b-ab5b-8256-50e2fb497da8,1452977761,4113105772325038251
+27d42230-47cb-b3b2-9666-37fdcbf1148f,1588190503,9829585795795100800
+92f1df1c-8983-ae1a-a08c-95fd51c949e4,2010198812,9819451771429914277
+b377304e-0bec-2be3-2ab3-debb2617cf5b,3648345978,6913892440825710096
+eef9526f-7f21-12d8-3011-7d117cd7b959,637783861,1542480601168743276
+4f810b81-aa21-255d-a74a-abf4e3a9f2aa,330345451,15897591866687294330
+7363103b-b42b-c632-b00f-47fc6b165068,2788455363,11994206180305911237
+f0dc19f5-2160-3618-d573-8ebc3e43a004,656583300,18131911661956758180
+fcfadcfa-99df-771c-d038-ecf41a260c4c,37492544,16441296833801908739
+84e2b3a0-0829-971f-6228-d354f3ad68bf,1635428619,16111024216003775490
+5299116e-a4c8-dfbc-96ab-c27c5b424a86,4073851524,8673404623798444792
+2ec6f68b-793d-6a20-a20a-1c8f08cae045,1936176059,9344302105205009219
+99205368-2022-aaa2-f03b-a4c436caaaf6,3154041849,10326807633933442409
+c14f3e3c-322c-eae1-39fb-5ffd950e31bf,172679128,14436545146144157137
+8eda2eed-12f3-f90e-d110-1517133a4243,1415649609,5318807184903366107
+c66e0674-e6ae-95d0-17d9-5160e3cbc871,201903821,775644213519221436
+9887450f-2cda-0f4f-b02c-87608f1eaa3b,414274156,9985819074699314581
+5a9db487-33b7-715e-1bd3-3a6a1d00cd35,1793239878,12809189894642263756
+5dff7a19-59b2-cb3d-2368-6a7f822be8d5,87919422,12526910895635232838
+308ebf54-fd5f-c2f7-1beb-3baae1cd5fe8,2470701270,12299411003626418397
+3c9b6185-576e-4eda-af17-426ad43f158c,2308759982,9118100970905481869
+e25044cf-0cea-2ee3-5526-29c818a47f80,1890475746,4537060897184925120
+c50933c8-e052-2e1e-180f-adcb37940e88,2325038818,625553384823323976
+672b33bd-f782-49db-e29f-8c4ff8d012ad,3953053497,17344192455011015660
+3288940a-bafc-dde7-754f-1e7b24b1f674,217316163,1119136543809393355
+75fff904-5f77-5627-3e85-3247bb9f7f03,3296158126,9852294886105754120
+8929ae73-2fb5-9415-8f0c-9c768b40ca35,3622065569,5677367199122216908
+b14eef95-a9a5-3a65-6c00-9e6f80ce652d,3730227646,10707785222613901759
+1fafd13b-a04a-5983-cfbd-854e7f43a4c5,3743670944,14699385066855790545
+e587426d-6b2c-3839-92bf-62bd3b2df2a2,1779124977,9517320482968357981
+c2f534a3-6abf-3263-4129-a2337a9bcf18,1405096336,15699219521093626059
+6e224b1b-8a4d-3218-753e-8f93efc3fce6,2936073105,11411315557735635597
+f84ee296-7154-1e4e-e395-176e78becd23,2672676870,8765369843581750796
+7656ff8e-d055-0150-f08a-11a8218de8ff,2232168744,763434200201929135
+c6384114-e235-1555-54ac-d2429fa72029,853300653,1079392553259483362
+1fefbb5e-bc03-480d-2aee-78d698570b55,3580688065,15287117102478566709
+172ccbce-11d8-6271-19cb-8a7d2d1753bf,1080651229,8112118464685756644
+a78ce125-ca63-a693-4ab4-01ef72812dd7,4162322744,887591360681753286
+9671a6a6-dc44-697c-ad6b-604d74f94a19,1905520039,15474469445600557269
+631a09e2-4385-349a-aba3-4e1365355b40,404729978,12771402638858849002
+04fe77ff-bf05-2454-61d8-66f49332758e,303154340,15545196547484381925
+b053225d-08f2-3bd3-018f-c018f3062dae,3179774432,5107702282532440553
+7d9afe13-174c-da1a-2fd7-a521de7d216d,367859579,3449000205906252330
+ee4135fa-0610-3b92-c98b-6705d5449a07,3002807594,14608756157448927802
+83249731-5564-3a8b-895a-731a2bb6c196,2976332934,5740260898186362262
+d3ea0387-dd69-01da-09ba-f4b3494dceca,3363037324,5341621178707081794
+3dffa37f-13d2-2a96-cd70-32d04d44fcd8,413889133,5206890499391842360
+751a1953-481c-cb64-b7a1-8a492c34a8fb,466690952,6193138169540513563
+e55ecdd7-eda0-74bf-50bd-f38c0fa67681,1961338860,14113126608068230230
+7b5d84cd-405e-0351-fa41-301e0fb7db80,1641156500,11525363653891610302
+3378b8f2-c579-3287-cdfc-5b4fba645be2,4102862492,15048705538379506376
+c3ec7bae-0ee7-06cc-5701-609cb28cce05,273865214,7545994448181810205
+a6397313-3213-b0fb-d447-405de3540ffd,2051583499,761809527158754629
+63f756bc-75d5-8559-4fad-fd8c6091e070,4013902436,4323972771835839486
+74a0dc5e-e3c0-9d14-7edb-89094bf7bbe2,159041698,1658698256412479353
+3d9c55ce-8ec4-512e-e75c-f09612e8c201,1034755859,8484856959080839705
+138e2028-2079-48ea-db24-10b117795ba2,2399933155,7069386327556503295
+92288f69-6891-e931-cebf-6c60a4cb9bf3,3437605207,4227200718907687063
+7239c0b0-62ce-3c91-ac18-b0243ec006df,2237070363,11066761744918593536
+dcd983b0-8208-86f1-c779-68e4f99857ee,3737997291,4597589872179103288
+91074cb1-3d78-95f9-1ddb-92d8cd918e23,2727778107,4892232441955211956
+a19af866-8652-d56e-7485-667a91fb1a87,1458872277,17857394722184221693
+b3162af0-869f-5f59-cd36-a57378c07fc2,744663298,1724842783605647377
+5e5f014e-1657-2bbb-0c9f-fb47f21c54af,1684337780,3439687624111722675
+f3037789-a414-3f8d-32d3-826e9d632bec,527127009,4680064164666694839
+41431b9f-b5e6-0523-568b-3491d7a81f06,1378107176,4926507578942358965
+95aa2f9c-ee81-b9d6-7039-b7add90b25d6,2688955370,16885065672914532757
+ed07e446-df20-467e-50aa-d395e3f4c141,2201315382,9108870604555197650
+94de5311-f608-7d77-28f8-100025df3223,1726803355,17604503403497951567
+65e8fa17-7133-9b62-c68a-44c36dbe3865,1347525750,8116253358211197617
+4d35cae0-15b2-266f-980d-ec0a47777718,1242117944,11847527991675484377
+7917474d-4ce9-c92d-5088-180a2e0eb140,2780599302,14253344327688851376
+d5c3145b-166c-851c-eabc-a54ca1ac6901,3351081892,15863955169467597552
+d3ec3934-8c0f-251d-7631-cce265a1641c,2910272330,6938151346529521034
+b6118297-8ecf-4a55-4efd-f2075894e901,2043592461,14112962264153904250
+1fd41b71-2de4-bbb0-9c27-fdb60688ac4c,4179291221,11904583989960874933
+245cd5ad-bd6e-fa4e-393e-ac27c8e09f7e,1533720610,213469009887712999
+c843b785-cb19-7189-511b-952e0d9ab7d5,2210070038,11673394168040597847
+61f0e2f1-1744-456d-1887-3ac9faea60e7,737751185,2424521902216946004
+f9ed47ff-7a05-7aab-894d-5619076feb80,2275189891,13219950678320889397
+8b551736-2f62-42d6-7dd4-6f06d37ba728,932085332,17953348551461699583
+cd49d92a-47de-a2f3-b417-c58f6016ba4f,1388653289,17637759753303895366
+9ed65096-41c4-a4ab-bbe4-b03e6eecbd7b,2805191452,2913201865639396519
+aea30d61-e6e9-8191-3f7b-c7c145d01bdd,3227206117,14061711888299754841
+ba091b7d-4c83-3cb8-caef-086a7d1861f0,2405646847,14070967808865869597
+523c664a-001e-1be4-0dd0-71f390a2f3f3,3411700438,17503668938426826382
+a9197660-7a76-377a-da80-8fc9142b93be,384579535,1863336565636787073
+bc488b02-c63e-da45-e08b-c1110e9db687,817038931,638539648480994882
+57510830-b1aa-0632-b8ba-525e643ea155,3867555522,17581675656238895003
+075b3cb6-024c-0d75-3c4a-32c77e1815a3,7047056,12101001204435748083
+1469771e-8a72-b38c-c54e-45129b7080de,1359830688,14681896549569888695
+47fd1e95-2236-e5d7-17ea-441c866f341f,2656773939,12125063166179813003
+da7a0ce1-1b54-8ce0-ed4b-f9a904016672,791640097,14863960869884027622
+379aa41b-cfdd-eb83-daca-982920dfe09c,3027887284,16091117391159328643
+f3628c55-f600-9c38-e3c7-cfc79f77c3df,1794671306,10109489501328980607
+9d888df5-8243-8a93-2d07-ef24b34fa516,1961772287,6659675210067685396
+4936cfa2-85e6-46d5-c63a-4d17d94981d3,2337972348,10589657397959813678
+1ca20294-d588-3617-45bc-fff97da22e08,3646579737,5073396444295041394
+83421cce-5e68-34cb-a278-876bc6378c57,2546773760,11897374914906254371
+6f5f2e49-f5ac-f097-21c2-d8ce18586ac2,2168892175,9706428066446014039
+283c60b5-8291-0f1f-767d-214c25501a34,3011030143,2670930127766742354
+c5b75667-085a-c260-fb7a-3143792c5bbd,527246778,12521211950291154481
+71c058d9-4383-c917-e3f0-1a4be18ae624,200745448,6821036277325061947
+0df5074d-6f02-0759-5019-a662703614aa,3548102037,3226571994387936861
+6690fdbc-0d9f-1b85-b81a-807d4a3c6509,2384258262,12154915202854713156
+4d748c75-66e8-32dc-d260-91cb19ab867d,264554043,12334447062217130268
+e48b5f2e-32e4-cc95-6752-178b943a3aa1,3464249056,477967645228437102
+052ee664-fa43-e766-e456-472406d8a8b7,2102559357,7786538026900868224
+e93388fa-62a4-8c2c-38ea-8e20f7bd6656,1504092963,8375974143089034982
+49f847e2-c02f-7de7-6b2c-d8066a168f4d,85169940,7699794793541814160
+aa088cc5-573b-67c6-2c16-a9c8e84d8435,2387780229,5991783756304682813
+65630627-9d52-1ec8-1dab-135d3669277b,3511464467,14543297857836174110
+31563940-bf9b-7c42-ad4c-56b6b961df6e,912016294,4313741611513682813
+f2c02310-d550-dcd2-d11f-65a3a404c36a,157645027,9204627336654286538
+7552ed65-f141-fb2e-622a-d0edc9e86038,891684275,9669295115366261616
+a3486b8c-8d94-4c0d-f608-5bc35fc59a39,2080875501,13406011549059290436
+4ba6b0b9-00df-90c5-e8b3-565c68bf895b,2289140155,1768326984025916113
+c92a5b9e-ca07-c1ef-716b-49641c7b6200,1316013817,12283652495275924520
+f59e1164-d37d-5620-87de-041a0a34d3a9,933472111,16350494519115460855
+9d27a711-103c-338d-ef59-12849d9f54f0,234905427,10643788647331112453
+65c43fe6-1fad-0aaa-e102-7c607adfa869,248195365,2640483345104231846
+750e01b7-631a-9ecb-91bd-3ace0ecb0afb,3505091897,6529080020739927700
+c0566290-5ca8-b2de-7d19-65406ca679c2,1642302271,18435144331042113436
+d4255a1f-d565-6e92-b10d-51c2fd117b79,924345658,9264817280454064246
+f8b9bc25-211b-9e0b-c11c-2eb58fbd6b61,1061570818,2838482870614612894
+68b43dd7-56ce-99fe-83be-ca630f934e54,1076880284,17791899850751433405
+e812e86f-ae0b-721f-4462-26b0fafefcb2,2258746039,11992756869941704584
+cc369882-2624-10f7-dbbb-339d171ce366,3550486889,11720833218471460644
+b889f558-2295-611e-bd44-e6006883acaf,2661241793,6827458354769266709
+859f342c-474f-ca79-e088-41a52d9c2ad9,844401333,14168989222668291225
+4205f077-e880-d9a3-d2af-a1a76789755c,3650662272,7942510146011889439
+3d51dc47-4687-f833-e820-5f86f2c2c0b9,2946659433,17139878763090496990
+3d074245-d063-f1dd-a740-69b50fb387b0,2237754432,13223786740977450784
+477a23ce-0541-1cd2-6c47-697becb1123d,1171036286,8459166405759815869
+e1e12bd4-5ee2-b93b-876d-cef1fb0cb378,3340460087,7928855510536974068
+280d7de3-86a6-b8d8-416f-7c21d6e32c3e,801393723,4873799601648535951
+84833b36-3633-abc4-5b79-3778707e368f,4008503296,6509787693155519600
+a398505f-ab5c-bc9d-607d-f5fb3331bc10,1512251749,11289009237681584887
+d849e7da-b854-521d-50ce-676163bb3cf2,1235364269,9386381007017060610
+12fab9d2-faeb-df67-9ae2-36b273f3be9b,3099107562,980378407597111281
+584633e9-09d6-9cd7-aa40-fc7eec7d2ca3,4263989306,10034121641721607109
+9eb385bc-377c-7bd9-334c-2beac9766423,1724268325,4846324098400376864
+375948dc-28ae-7508-0cfe-5fba3a27f745,3657954759,2047281400739205056
+99f872fc-7e86-720b-1b90-ff06abd50c5c,4143015924,14600581981213449760
+35358aaf-9a82-7c91-a8f2-ec79ed90c8eb,2889361309,7790916350667671329
+9f483caa-a137-bf77-70d9-f0e10645bd33,3442554039,18271353446901457050
+e32745ca-1056-3dbe-b333-c35a388a441d,1081844212,10855493811021459988
+6f9fdfa3-0675-8dc8-6df6-3a84f83eef68,2779274009,4756976159391290837
+ff8254d7-3764-96c8-39ba-1ce31681940c,1239428628,10739940982732927014
+fa6c34c1-9f32-65c8-2b36-f954f3c6103f,2874946112,6515135349422106403
+6c010e68-1a1f-99ff-143c-b501678207fa,3654740097,2787777232864295767
+36fed55c-fff1-2ea0-68e4-fda1e79baaf7,3372146765,16590079885905455606
+cc087949-99c0-b8f9-fdad-9f925b078a1e,405312858,5163591561042482084
+1a99a84a-a6da-cc0e-f4b8-3116e12b21ec,67546909,9252961698949005946
+41ad97a7-953f-4c96-a5eb-6ec5cc69cc12,1575492010,18196246699992783272
+6999ea6e-2670-8720-004a-b665f00ff9ba,2641830967,12894453695599518552
+a842f377-55c0-0631-7143-801e055c8289,2854657315,10056763645440459969
+410ac123-df36-d19e-0949-2aab5d313d78,3634606008,8696126356553580819
+02031d42-9480-5136-32d8-7eff80d5c659,3389567971,5457585083897408098
+244e1f7a-48f6-464c-4ea3-3a885c126df6,877840013,8455837239514565221
+23b6eb5f-2a9d-ccd5-e73a-3c1784e9021e,1538851406,12866512439944364463
+c91027b7-8192-c9c7-b532-4303c82a7258,648040898,17534860384562807274
+d7eedade-e223-6cad-87fc-f08de5439e75,3120729235,2084818392914257691
+3502c01f-cbc1-70d6-4c8e-a840cd4d84d7,4268504226,629000494775828808
+228069b3-2bdc-30da-2e89-df3dc1fe8ba7,2207287142,7231844612924116415
+c943fd62-6782-ed09-390f-121d4bb4f7fb,3666989978,4955260688002408528
+6c4d08e7-4c78-5709-506e-daeb13b3cff3,2967414831,6325785134616147279
+0e5976c2-2bba-e197-8f74-752ae24f6f66,1268468162,17225225000272918439
+ab6c15bf-a04d-6bad-ba2c-6bf9a2f0b26b,4118482977,9884310113506792132
+2a40241b-3c1a-71d5-4aed-06fed8baeb7d,3892242212,5120232398436055836
+fc083fce-394d-25ec-ef63-b672c4d15477,1355831176,310892827662537837
+3cb6878f-3aa4-1af3-dcb1-b87afc9407e0,818445735,11218658713098456639
+d266f86b-024e-01a8-f45a-a77f5378180c,2474155001,8320360058826621241
+c6d73cc7-dcdd-d124-c6d3-2b453c149d28,349076488,11156940111802670063
+292507d0-2421-0d9e-12db-9f5fc8af745d,3015619129,2990596050257791546
+3de2cabd-cc08-40b1-a351-6f1b1752a067,3153872252,16933002829838635598
+df1c8568-eee8-eb8c-373b-e41aac57f8e3,855990251,10608054791372809994
+5069602f-1cc2-43e6-b8bd-722e0af092f2,1962997263,5074521558072600067
+23d1dd79-0b0d-0539-8bc8-09c715f945c3,93580474,12102346163716012725
+ec3c5686-8174-1d84-6c3d-c3428703e4e6,2732104182,6819603776024088454
+a5106942-086c-05a9-c151-799efa7835da,3411443630,10259559621323542122
+f1dc4eb4-9dd5-5960-c6d8-4e4b5239333a,3559349672,102096807770503552
+d5a0cf3e-dfed-f0f4-c31b-ab9be62e45c3,1129935820,3766778528078556008
+2c47c79b-0c92-8f2c-fcfc-1b5d14da2824,2851772722,16043061327501454409
+1e10569f-defe-9981-c994-3b2016ded14d,85584581,4584344164387238436
+fc652fa0-ff09-c58c-95e8-df8b20c223ef,3613127972,7805250954816703839
+a8dd0d1e-4aa3-3863-0f45-495c27d6f7ea,817982844,3182584962058448687
+ec84db43-307f-3179-59a8-074ecbbc7678,2776695609,3590962415627554047
+7758734c-2015-18dc-4a89-906009d8dd81,3214875329,7600595869545194997
+9e172f14-407b-e339-b780-6e62cd061630,3776433909,9362131337562712668
+c4ee3935-90a0-9359-4973-b93069f0290b,2172980651,11634047275025095987
+bf388886-6256-e0a5-07fb-296d80659b19,1984292053,10478544565235427258
+e7d66e92-107a-8695-2eb0-bfcfb83afde5,2458799984,2635872497420402677
+3aff9889-ec2d-9194-6c00-2243768f514e,137374453,3451112862439764328
+f084ce07-0b3a-e276-073c-b6bca5bdb196,2278649360,12328007911817522873
+b042ac61-1fd6-2eaf-189b-5abcfd842096,1551193888,7466052322627583112
+7dee3060-9f7e-0576-9373-ec6fdd60a105,2017528570,5518328874936387666
+cf4ee9a7-5726-c20e-ee7b-cf31350b5c9a,3419298341,2198642795183321308
+5892376a-3ff2-9979-9853-b40c723c8638,483755177,4363433700031179518
+f3c82569-7812-74dc-6621-69ad4bae88c0,942657811,760172556030568525
+fee7d74d-5be6-d31e-ae9b-432a504a3943,2618548011,5882816142018981121
+5852bdde-79f4-57af-d83e-6477a04ed208,435825995,10011769911244069109
+2a3ed0ed-7231-2dec-517f-3ca09010f042,2721419458,524902334550500946
+a1dd7aa5-8bd2-a3f9-c1c5-b033397600f0,1750374078,9722639297753144459
+969d0278-be42-e894-ad90-042f7d9c458d,3259016760,8791598001329379872
+feac4656-e5b3-1f15-57e6-99926f21d24d,2596337932,683711230773283332
+2311c1e6-d737-1d88-530c-beb07126a1ce,424286445,1144612779801559330
+79abd5a6-4769-393c-124a-f95c543c91f5,3619020708,15143001132437236062
+74d65904-e6a4-f54e-92ef-fc073b80ee01,3247187446,1121589548599144461
+dcb22dc1-262b-896e-a8c7-16108ef2b779,3445937104,5015633907272667552
+1874e2e4-c511-b2f3-5ddb-dc20d4e5a3f0,1278917705,1960424824093908683
+b7f06bb2-2190-b028-6cb0-0055137a36dc,1868444845,8574795212874454298
+c17048e8-9b1d-3757-16b6-8c80db213c54,2500642282,6511100389671710600
+f828fc43-513b-6e27-6c4c-d903e05a3336,3296277956,10797539911483753258
+b4646fb5-b2f4-b2d4-478e-c50f11e05e3a,2958116308,4635765790797621564
+664e1b5d-8030-0f03-31b9-1cc82a4f5f4d,2846267574,4489184989235867406
+0dd829c7-c61e-8033-9a85-90c17c8e79db,1330070350,14145182002055720702
+1597fa05-3455-1536-a1c1-6ec444e78f72,4097012180,688511440896729403
+7e0e7d6c-6d30-ba8b-bcce-d0aa7b5e586a,4153672550,5789943812959989627
+8d1ea267-9e48-17f5-2388-bbef431d7a23,2805908161,9813151959588698753
+9217f583-af5b-3326-9d19-43efdd3c8f7f,776294848,16033495946633272615
+510c1ec6-56e2-cb7d-5e6f-9e2bd1b89070,3531062952,7632496403948022006
+959c54ff-c654-3026-2b88-caac348d9c80,1710469593,10127291760536904042
+2c2cdee2-6fa7-049b-f23e-03755b7a41bf,4220639359,14860250817370091421
+f46faba0-5e38-1b90-14af-f77d7ebcde64,2165001424,14221236671130137322
+b67129cf-2523-a7a2-195f-652b78f1950a,4195808301,11761697142191581519
+c9e4d75f-64bd-ecf2-41c6-a70e60f5bc95,4098141574,13868444346358075998
+14aee6d6-a9ee-49be-3fd7-0f8d7afb0d3e,2490710206,10047975851436746498
+329a0355-cbe6-b159-8d62-4e66457f8952,2995644958,17821112571088500737
+1e1a99f8-6796-7157-c9e5-959c22881e6c,466032526,10399978132874676105
+99ee3b2c-7295-a75c-a4e0-2b9d325ba343,1935639737,5030162217365032085
+ec72b378-f62c-b333-6aa1-56990e9431b4,2341203666,11734833870436938402
+925a7c59-aba9-f38c-1b2f-13e6ad142f6b,3326593935,11519824246669682622
+e1ced144-456f-2cd5-0f0f-86b0e492a0f0,3038604683,13047827877573424643
+4470bf75-dcf5-a52d-8199-810dc24f6447,1399542651,1640194433304194340
+b17fb105-97f6-4292-3cf1-69f67a59abbc,1352200837,4572141568873919051
+df65b071-4f80-3592-07b3-d8d17dcdf3fe,3341820229,430766351200960844
+73285641-6ef1-2f3d-3037-f5bd93f0e25a,1151115705,6531166650424065619
+a14b1e10-4e0e-f62d-e88d-96c1fbe826b8,4237288652,12102057309439857955
+acb70cfa-f7f3-df31-ea30-b9cca2d725b9,2503407013,12305095782718496563
+b80afd31-f016-74d2-b12e-91a0ca27c4f1,954071453,17670420793816495054
+32c92ed6-2d4c-8f13-985c-2e8068b07700,1345295321,7401289325114650163
+d9469dc0-a42e-5c79-efe0-0a956e4fd5f0,630432332,6432012607787515943
+9170cd73-f8df-3bbf-6712-d55a330a4cdb,2571350563,701500237785523944
+0c07e3f4-cdd2-e820-591f-cbcdbbacd1e4,2005341707,4399594361456028497
+3a2f5ee8-c0e7-cc2f-8cab-e2c9f9cf2a76,2053603356,8815895573175776553
+0effd131-bca0-8b2a-e9cb-699a102e2d15,1320285583,18056278053621329226
+11e340ce-c326-a547-e727-3618bf3e58ba,1821551419,11808135869573897466
+b19e678a-4750-4489-a564-f0cb35789e7e,1478915324,215132858089481533
+88286c72-0145-0fe6-47b3-9e2eaebf826a,3283476344,4474129865294555340
+40e01dfe-7b5e-d501-de02-725551bc945b,2573082982,11734537501283425926
+76a4059c-4843-8604-219e-5285a4891d5e,2336807722,11359332376122183523
+8e4a572d-1b31-3d7d-7a05-af650c98d7ff,724265054,5706989099350765552
+f7cc9675-d089-6258-b124-3d0133b92813,3096939981,5416155431177632173
+6e9f4d2f-8461-f5ea-2ca8-07bc31d9f0c1,410716283,5174480257936263468
+265b6d09-80fb-6837-b126-a0fc11764542,961506986,17455771725973628066
+426a1acc-a689-31f7-3afb-901fd42af259,160803760,10014438978250638190
+41bad357-c602-1383-3a3e-34aab9a4a043,1772057089,16602165206267915877
+6802928f-d642-7b2c-7744-dfb0f97e65d6,174708129,9380352533293149525
+5e5c5c47-3e94-024a-7341-a474005920c7,2647566991,5560271229990042345
+61e52b84-9d7f-5229-b2b5-031d6105a9b1,3585837982,9328544212917477223
+d939c16a-41c6-e3fd-1252-9a9e9497bdd1,1883116353,14917185016389064926
+e8e59374-7f2a-2b81-19f9-7fd2a6ce4ce5,407740870,6255985281997068719
+f282b8ce-c1a0-6d36-c12f-2ee8b260b238,3885512276,13360504609622895819
+428ea8f5-feff-549d-c549-2b4d3d73d664,2478943318,14676449368748728179
+28bd5556-0d48-a60d-aa04-0ba708820cda,2705192016,3774009781462688967
+9bd80994-e052-6893-e91e-f87573de39b1,3066758874,10482462754627558732
+06b41887-94a5-8512-fd4f-2e740964d9a5,3355320838,4983895907913597466
+e996cf41-41d1-8245-72f3-5e79250d6a01,3332523090,7403663005804108719
+a925bb72-71c3-ab49-4b95-e75a40d004f4,881202795,7495271576656595142
+db00ed21-47ef-4d69-8a04-63189ff9cc3e,42452211,5126453532871076109
+8ae42b35-a856-1113-6cc7-abb9f05de5da,3877715445,3271591287144598043
+f4e8082d-401d-8b16-f5d4-032b8cf6cc34,3664249039,13580893210529702649
+96353fc6-81c7-c182-2ffc-40a06163f852,3060859385,16758860710160378347
+aa1773a5-6323-efb3-6d87-08fc6cc703f2,428251181,8863956500356287
+9a2bfca7-a298-7a52-55f9-e8cf4b8d736f,42013924,2197763359291802531
+b07f4dfe-9e03-9ab0-ead7-a932d60a1c3b,2616866047,14750247631769573381
+365958eb-df1c-6f6b-3885-9ac8909ba246,4233716973,10202016347300441130
+fc8c6645-4c4b-8abf-1f56-b0bcbe77924b,649237483,7488918427819472216
+4e4ba2ed-9726-8b7f-a262-f3d63459575f,4027331980,1895079386139010789
+18827eda-1d5f-6aa6-a300-1c3f79ac7767,2008851179,3459521943981005154
+bb1824a6-cd8c-7fb5-8367-01d2a76b1ed3,4225230347,10928122811914395810
+f3131445-9735-c4bf-6ed8-c33f63173eb7,2583491605,6174702621107141082
+373ac276-7def-08b5-0802-f38bf93fc529,2645072071,4537317010336825981
+ea336e62-dd0b-5b94-a6f1-29ca634de554,1047768691,310192865296538142
+59f65e32-c24c-2dff-5578-73c977b56118,439218387,11450283214942494024
+c76fd85b-9705-cbb7-a529-a69f9b46852d,2285362098,9242338723549643003
+4a3c7676-df5f-90cd-dccd-71ac242457cd,1901417682,1006499166250598406
+bac46265-76c7-e7b6-ea3a-3507dd252421,782931869,3293445135452576119
+f70e3c97-bc12-64fd-5a8b-5800d3a91754,233959318,10547912227296817358
+20a19915-ffe1-f5a1-632a-d7f3772e6141,2660578195,1326843680933555645
+00c4fb1a-84ed-0ffb-8c89-789e6c483046,703055447,8215039238317036855
+707bb1da-aebd-8667-676c-1a5a2e865190,3092439466,1999965268912023682
+de7fdc56-66bd-6c4e-292f-7dd74bc103da,1277086397,3290451012202773426
+d7683932-19be-bdd0-fb9f-21ce30230f58,2561432910,15590254244864554591
+ccef0d01-95a7-73f2-bce9-3b77f1736daf,3558337575,1292707764660915617
+4490cbbf-cd8b-5db9-9caf-966bef42d324,2901670420,5181540582506344463
+e77268fa-ceda-12a5-97da-ad566cd0a627,604133598,11715185907603589472
+9c870f89-b8a8-2c6c-eb6b-5e987ebb55d8,2168813694,17638346385220595579
+39050a61-fbbe-2f20-e691-fd97a5dc9441,1097371369,16382906333527227210
+c161b876-d51b-138c-eab7-72a6ac40585c,2102513516,15446345164268256365
+2dcb35a4-8a29-f90a-79c8-c0768a824b23,2199371463,6660496135066849151
+b91c1ecb-57a5-7a05-0376-e5e4b9dc8e80,2166156786,13615350974072448959
+ccb88249-bd3d-bf8c-160a-644ab8a63807,3802498979,8255918009557411536
+9d41ae22-c60b-b470-fe53-4ccba825afd9,1904120590,12720249260352024762
+7481a141-6995-9ff7-4f23-dc78a33bcb98,2836143035,3682765648307877740
+231bc423-a58f-55e9-f7e8-5a69ec2ceea2,3167721566,12623288872775080318
+a4255f12-4c30-f7b8-a802-41f6f432dae1,194719524,11770296395352540253
+b40b3050-a4c7-c739-0ba3-d5f2872707bb,3151592105,5610516074527181684
+7f4b8ec1-0b63-2611-b901-685acd07ade4,2454145768,13983107100808212371
+7c2047da-3204-95fc-ef75-e059a16949a2,1057912383,15914160154664485556
+fd1b6e55-14dd-ede0-ccf5-24c449f76374,13991632,5065412070354782538
+78b546d6-c0d9-e4d4-3c10-5f617a276812,293152644,18110536603710117175
+841e57f6-256d-9553-a01a-a4d28fd1bb27,1091032780,17013787232800791107
+957dcfab-20a7-1ec5-c55d-e1a9162b5bab,990494130,9000107106277251941
+8cb67997-b3e1-aa0e-1e11-52dfb053386b,1583557413,10839382275310624838
+9c191b24-28f9-8e57-f3d9-081f69af2dea,1499908507,4309061548173523489
+ecd9d6ef-d6be-e10e-acb5-4678eb5dc4cb,2082971137,9664334284589679736
+9543ed7d-d3df-a16c-cc65-3af917b85c77,1098918050,2560882899256111150
+6c4d0cd7-10c7-077c-5f6c-463a632b3061,1161853576,6847421075583892154
+8b576d10-9d14-8361-fd42-a9068062b1ed,4002602009,3644385542648531493
+ef4c5dea-375e-4063-f755-16c8aace0792,506047047,11631705711150679045
+7a1808c2-dd1a-ed77-4ce4-ae6efdc00280,3198520122,2924568799039136960
+495e3443-bfd3-08ed-2927-7238a0c6d916,1556503205,16552124695227054726
+ed8add7f-564e-739b-76f8-e1a87cc7da24,4278089037,12901735530818563334
+eeac1c28-1d6c-6a9c-5d34-289371e0141d,1162794066,1239360069508271525
+3ed4c058-e260-2877-3c55-f11013ef6aab,1767850437,3619893772121788892
+8d7cd484-5170-19ed-ccdf-dc97af1eeaf8,2961654464,13938711854369890587
+794b433f-8c83-f850-1e16-e92bfc47e39f,3282332928,3385055527106825439
+1a2d47ea-8db7-2a0d-e639-510f7522c580,531720614,1764177091042775784
+d8b947d9-f9be-5ef9-e1d6-45d803301c12,929233018,322652340295187925
+7ace3ab0-c49a-b1ab-2724-19c00a1326eb,3167233540,12011133000462085692
+7fcb1c2e-61b2-4fbc-856d-f21eb8f60a6e,766202716,18242983206185730508
+7ad521d3-5856-84b9-0ce8-ce501bbe750c,3420973329,5929062415468194609
+9d2b3e02-37b0-40c2-63bc-2febdb88b07c,3227213229,8284450589166400817
+bcd4f1a0-68fd-9c89-7425-a054263110e2,3514305545,2560529032663799348
+5e90cac5-8e0f-c1b0-43a4-0c752b7ac5e9,249873583,12907042481881899242
+85dd7564-629f-fe40-a444-d2d368a67996,1400176934,2565087250073256163
+8929e529-b555-7970-2af4-bb70dc547ef6,764915222,17597960945360608207
+2cae2e5a-ae4b-36e3-d3c2-68419ba87913,2808622742,15112316374475855073
+da548183-a739-916c-a996-2c9a5802c80c,1522625658,8906212243262059240
+80aee1b2-776c-14c1-4de8-6ae98e5c37ba,4091182734,2974811891028199633
+587c7412-5551-b2e2-a66a-bd075f4fcf68,3569423067,16812758691115306302
+ce7a44b0-244b-8903-d667-0b53b7acef80,1564996381,11517930369799632866
+d2b0f91f-8223-82e0-2805-58cfec875cfb,4055554469,973386912151090006
+e5a1b59a-d7bd-01d5-0e4f-c328541730d5,1687041714,10802949683727408791
+ddcd03c1-654b-a3a7-6ff3-d0ff3b47665f,965516639,10733673614682226656
+67a918d9-db77-d2e9-ef19-501eeead819e,514603483,15533779529921713696
+0fc930bc-4488-9191-c229-82a7390e52fd,2262783613,5762990642314968703
+9bbbc731-063e-fea4-d662-b2cbc4576db7,2239900811,12945414344690699359
+c839feb8-0efb-150c-f885-d1c08791e49e,2820300029,16716704723698841581
+df1159c4-2a9d-a66e-7bd7-4219937221ee,2283579555,13436456969855469417
+7d366c70-ed00-e516-9ce1-ee0d61a04660,148845227,8839194942342725457
+6e5860ce-9f5e-2419-378f-68b6026c67db,1915641819,2999109284217032594
+5b8c027a-ac34-980f-bb57-640be8f04d1b,382039411,1277082132722657495
+58966626-3773-4ac0-2be0-b3021fb0bec2,3292517024,17756428249547348884
+5214405a-a39e-2f6b-209e-e75599b1d0e5,2075535197,382917180133342340
+75edbc57-440e-b344-f0e6-d06ce0327a43,349257642,14760317990737684709
+00f29505-c4bd-0e2d-e072-165d39764396,3477122368,14149966393337850108
+16bd4e24-71ae-450d-95bd-1fefa3912f46,1887093623,12142321074832143861
+00d70289-3afa-3c34-df27-c0a5c29777a2,3218268084,12077619267401218535
+b5c8b419-4678-174b-5bad-9919d4df8b85,376952606,737126115428592977
+74b2bb1d-8eac-6dbf-6e7a-d0326c35e331,3978059034,10033922819123157678
+fd58ce5d-12b5-5122-04a4-f44ba17f9961,1522504270,12238928375171238811
+21a9e97b-d629-20dc-19b3-06d459924b78,2878973292,16886633527793923602
+eaea31e4-94dd-5c3b-1740-e061cdce6fdf,2215347891,8225074710818590850
+c0565f0e-f2fa-ca3b-bf13-258b584b5769,621961324,18003495053952016974
+2ab20e30-7cce-d288-90a7-bc0ba0de06db,3765167503,2743689473606190071
+31c65987-87a6-44f3-b51e-1b2824c7f1e5,2647994146,13791419618306568836
+41236b87-3bc1-eea0-5bc6-081e8c7699be,726813676,10211370496402158773
+19b77357-d9ad-ac3f-5369-138c1975b88b,4075918969,365422629043328780
+c010983f-ddb7-4dcf-464d-83a58055642d,3946119946,10116151625443952584
+5389fae4-7971-f35b-95a9-c0df379d9743,1289485531,6684824324741492606
+724bc8a5-fab8-c0a8-c0cb-946d4ba5fbac,3624455366,4385162144650565129
+f094b6f5-c137-9c84-6d6a-dbbf9fee9fb5,1545362676,15088933814331707236
+6e395747-794c-8245-0f41-df84031535c9,2429524076,1361086104339431796
+55dc293a-9ca1-adfd-0270-246ec074a6b3,2383160721,1334507784879019738
+e4b5d355-f0e9-87cd-f55b-660bdb3b0fce,2487416766,8504325254287093294
+41f1efb5-31b0-e040-575a-36602b9d51e0,2788908429,7589080860171317954
+11e3f706-df8b-4ad4-08fc-e65c26a710e3,3836882583,13257501270583888161
+133dd970-df7e-b49d-f547-d96fea77313c,1589046518,14461049912302127199
+7b773050-23bf-3492-4d5f-bea92aab43f9,4278170057,9969644987286914606
+a47b00e8-e730-c6ff-d123-fa84861a9588,1025470191,11591965269162371956
+a2679675-e098-bdf6-dc24-1f1ef9b73a25,1875798840,6503610093772258954
+6e8d4d93-d207-9896-1c93-0ce2505f6ee5,1797228704,2787356818079170042
+1043790b-8c23-74ba-7c65-651b03eb3bcb,3896703625,1203139847238473882
+429f5f4b-ad52-782f-c1e8-de6e1dd1778e,1263377146,10375933360845870274
+3fe9de2f-cf3a-6754-cf34-92d19e2bc0f7,4163898220,18156264736638512956
+89adcce3-9554-e566-17a4-0c3d0da143c2,4206417810,7600355572414852167
+b12dc355-24bc-2ee8-8690-5aaad8e412d2,3950543923,17350925054212966150
+ff08f386-df41-0bbe-dfcc-f210469ab1f1,2167145054,4597633317653037410
+473dcf82-8de4-0f57-1d7e-ddefd0839c08,1997214459,16541023507562240184
+6221a400-221d-41c1-6294-bf112ccf8e1a,3297010813,1985858323611269542
+416555c6-ae41-d6c7-c601-be785d7915c1,559228357,16310081415443641759
+203e2bec-00a7-289e-5192-410fde1a9fa5,3685053400,3389011121156239524
+0a94574b-88d4-50f6-9136-c7382d78b078,4791461,14947428732516790514
+e59465f9-d9ec-be47-bcb2-0daf719aeeec,2091864197,4412358721230489513
+c0433c4d-cd63-31a3-7251-6d9f244d658b,1288241382,16314937312855812806
+9352221e-5b48-a638-0eb0-699ffc729ba5,1732907274,6967715329906336782
+50b4b99a-acce-a80d-72e2-e7153e58f781,2397705196,5726808847095440618
+244fa640-610b-9ec8-6818-c812c3deae4a,2746418699,9003382179503691731
+31f0ee16-e4f9-c33b-4211-b8673d129569,2026599497,1780426993099348483
+92f4461e-0ee5-ff40-d696-c0623081951f,4140770692,9202078169699640345
+01b7b584-c448-54fa-1cf9-fef4841673b3,1243283845,5513871412224652321
+3b69b279-af26-4ef9-9aa5-5e9fee6e9d39,2838595085,12275556185880689200
+a7013a64-97e2-55b6-bb73-8b6ad72a7ce7,3241816455,11770579019677341284
+4026d62c-440f-aea7-6a1f-0a9bc36a812c,1159041980,10469236465572817274
+60ecd92a-1ec6-58f4-9360-e3d769923272,916695305,10462026313035158508
+be7b44b9-f6ab-eb52-5912-47c377d523d7,3950075995,6670287802252605484
+ab9c17f8-8f24-88ae-2cd9-c1b0e5700ca0,1002762863,8102574267140300524
+5644789e-287f-9942-b861-300ca170f8eb,660956989,1043882843061834823
+0b473aef-6877-0e2a-05d7-46e9ca7d6e43,4067099683,9780059773056734235
+053a3542-d93b-6a0a-3d24-861667486afa,3860149465,15889900186485353069
+02076edb-ad61-7330-4302-d59401ecd8ad,3098466030,10331141072486161948
+d844b50e-9f57-c2fc-4aab-093e381a26c3,1650664845,13042725418820793997
+0a2ae4d4-8af7-b48f-f4f8-03a4c5bd35a8,527717840,12710735073836290153
+ba4232e7-5c47-0778-6d8e-4248ef021ac6,2205031409,4073599703786156232
+0075e784-67ef-7400-d3c1-65da3fcab20f,1058756739,12304045636284562072
+c51e80d5-1f7d-27c6-ebf8-e336af848d03,2032621940,4174070789181908331
+1fd3162f-1d55-7017-e6c7-b0381e92a370,2658068596,12749745479679992676
+c6474f61-173a-ad72-1419-039036675523,2747161827,14106583427678322863
+1f8488e0-6a17-f984-13c8-bb0ff86260a0,1462730152,15465127739386564235
+cafca3d2-9a25-0bff-1795-08c9794bac5d,3547963582,8767464948646428457
+e75ed606-1544-6924-0d31-87c7a3df97c4,2895326714,4020376866288240829
+0cb56ea5-d2e0-6dde-7100-28116671a8dd,3489634481,3866234850464543681
+9a557551-fe3b-693e-81b2-c40ecf1ab1d6,2067601368,14367672101629496244
+b4a63e38-e751-89de-6b21-fcdf84bb25fc,1593072196,15944500195858614843
+c2650c9c-483e-26e7-ec38-6d9e466c2904,1014313724,1488230726531258204
+0ecac20e-cb02-8791-10cf-68efbf8c0138,2533546454,15937934552250243249
+27ddcb41-7354-67ec-a38e-7609c2504f7e,2093316770,9113664260542096295
+e82e2f02-08ce-0f68-0f5b-68aea48a0907,373430092,3911399989568229178
+1549672d-31fa-c737-6d5f-b08ab3d62b1e,4258853801,12433438443242167721
+498d0957-5bf4-6591-fff1-ef59defb7e88,4213121190,8326353562393511612
+f81c8784-e2f7-dbd0-9f4f-d615e7f493c1,2421198276,13855081003097183411
+f58937de-312c-bce7-724c-107d6b8c6d3d,2654557827,4409767152843905798
+a1694797-b70d-0710-8cd2-5ca69e43c370,2842802146,12575733803042476536
+3dbe5aba-06ae-e894-5389-b1b4b9a0ddfb,4210069134,10641362531482761761
+9c53a136-1f25-3733-ef17-c2ccf2a0b56c,3415238134,144102672694545062
+977b65aa-5234-4f4f-db9c-2bd41fcf5243,3365156321,15837029878796332954
+09724df4-9161-e65f-ba48-1d3ce3453ab0,3520197917,10469705673004169208
+9d747f6b-6826-3594-4174-643acb0a27cc,2626216310,4424366294760227938
+fa7ed237-f127-1adc-b851-081812fdac56,2297918468,17005268483012414541
+075c77f0-4564-2b36-f1e3-b4a4e16fc987,3796545259,7272667714861901089
+9f7fbb6e-4ca7-3218-19e9-668027f3cf0f,3727329656,14812709839128021162
+fd5ca918-b708-07df-3e97-3908095fd8d9,2011089055,10052138930219423546
+5570aff3-7613-a5dd-daf1-e1e353cfe523,1069282963,14102499978209502290
+05cc2045-daf0-85e7-8223-1529c15e9cf1,3142000266,12741361906840401691
+6a369213-0022-e047-08e3-88484968cc05,2480269319,17816356030432362198
+8afbc7cb-15bf-d058-166b-54b4f952417f,3142224672,6610930111157871999
+05957a01-1cd6-ba4f-820a-c36b66bb200d,1994060011,9816474360905073802
+3114bba2-6644-cbd6-6ab0-57cb53e49014,778233569,16774833070813666399
+f2518c2a-c15a-ff3a-ce75-3b1bb487a398,387751030,11439937760106757747
+26c507a5-eb47-05ee-abe4-e8e33afba3eb,2584941711,4002612198127634268
+55b72db9-81b3-f921-6fc0-7a036a4c52b3,1391384829,11116455176365750098
+7ab27edb-6c56-8310-aea4-d4840718ffa2,3308293272,9487573754486038187
+73003a38-a81c-7f98-889b-3d2471740b72,668548662,10691237652458615278
+1aaafb9c-901d-2c7d-8809-1b665f665c25,2070384140,12656196712354747955
+443083f7-9f82-ebb1-6290-8d3271483207,3337899106,11422802510065545164
+2e45d705-28ab-c549-923c-a3fb500f02a8,312149277,12750672593182668831
+3eee7969-4311-3d45-f8f2-4da71f5bba7b,2607812060,11278928599626045675
+0677850e-a1cc-4b67-d6f4-a287d2cdeabc,333557309,6797904064581827136
+028d99ed-7ff3-5b3a-8dda-91466e6927fb,4245896685,15313642983536363285
+95e0822d-d3a3-d1d2-628d-2b431b16f793,3568813398,7582273483709142381
+867bbd70-956b-fbaa-5d25-104dc52c31f2,152417905,3486208167808118926
+eb776f44-3da1-5df6-9839-4878192506a0,1658925541,577735354054265379
+e93e84d5-cc16-18f3-8906-10c3330ad6ed,1534898225,4287345217431591542
+d5c762ee-3e3c-7a11-99ec-025b83060d84,2210477097,14127844250993888958
+812d7244-308b-ffc7-1811-7666db51a6d4,316677451,8278992759124508103
+903e640f-c91d-15de-4180-afaf2a1cdfb7,134000619,8956269882305728809
+51e98247-98eb-d917-489e-b14ba09416af,3860385886,5184812957405117798
+2d126efd-1aed-f228-b7e1-bc16f69b7d73,2336136919,11242454979567317841
+06ce6586-a501-b428-5aae-0db70307803c,874159935,7373923604227477745
+d91a4058-2a51-f8d4-3628-4b3feacc1bb5,3666421915,9500324984497205915
+e92d9eb1-5cb0-58c4-7d14-f1b73f1c2f90,3305606375,3176767420740753546
+f0509db7-d91c-3ce6-076f-84dee912c337,3841537243,14464305007887549919
+9c4439f3-26bc-c88c-2746-3d8582d52348,3529874485,16137290072200998327
+26d1a12d-48a1-7a40-8f37-38ce16f12fd6,3249102613,15214554144191584946
+e715872e-35ca-dff0-e85e-1a4498a42f3e,3003136746,668872789633639153
+4b82ec0a-a1be-071d-3869-a55954603f7e,348649948,3319992829525383786
+edc81b41-1478-29db-20a5-20fd5c1f74db,3253658324,16904421929461420248
+2a27afc7-f0c7-a1a7-5cef-e34d3ad6be50,3343318941,12873959407460753223
+ca680d4e-31be-2934-9a03-0183ea35771f,4211350872,7420994379273890498
+ba46528d-c289-3993-6e46-9c0656506c3a,2029933522,31988155343581599
+35e13f47-3bbc-733d-11c5-b71dab6ccc9a,2741504311,14348910152210808945
+d151da28-6aca-3b09-aa63-a08ef1584bf4,1737091632,2557478178491386577
+4accea93-df69-3669-a876-b10ce4ded18a,377937912,6022058397911511942
+cfa136ad-9f99-3cd4-1ab3-db1013e2a182,797193330,6207360817949838521
+bd051c56-25a8-88b7-0083-8c2179511329,842052133,15292719863796795218
+09422702-4b82-a312-f458-0a6591986bab,2622242694,2249553559949937518
+6c43baca-e667-683c-6a70-e05bb081ece9,1143036041,6421556614158366459
+cf431bf4-7696-9e5d-ba54-2ea6d4b39226,4248595820,11989059819792393387
+ce5818d2-bdbf-cdff-24e4-74fc4ddb884b,359516875,56841819763479828
+97d02dd9-c8bf-809e-24c3-39a2721ff76a,824007759,4716501469498834842
+5ceeda94-bef1-297e-c334-4c2e13ac7f28,337257968,16227211587590852541
+506c9782-dffb-1349-873f-bf4dd3b45150,1554479526,15124847295700778307
+be7413d8-8dc5-1505-796e-d388efacd397,2654617805,14028767711274340807
+a29ff4b1-cffc-d975-f6fa-31b61ba3e28b,354155052,9882700807381264467
+64f28ae3-8e29-bebb-5b4b-fbc770f24a9f,3298779851,13604005656405843025
+310c1246-6a58-c13a-6bbb-0bbccc6eb5fc,1749258513,1857796052699565791
+830cbb8a-9d15-6bbd-b05f-00af1a9edecb,3616447380,16650034121598417422
+61a2681d-bb53-a544-bedc-4e95f3eb5094,306887623,4115088394872167233
+342dea34-c2f4-b6a5-4c59-163412df3b63,2765574965,7593786014380507048
+3c5b2679-10cc-7a9c-1e9b-b731c3cb0342,792940610,3034137992863742867
+92685172-580a-9dd7-36c7-21f11ab89e59,3686456751,13104518626313258097
+d2aa5632-08cd-4369-708f-003d8cd6c07c,1460936025,13035176569260894979
+51c38841-f1e2-cbf6-faa7-a7bab3d7d713,187410628,10136978810902789345
+3f3e03c4-d50b-52be-dbc5-b23190cca071,3127671701,6789599919738234231
+ac0799f0-64a9-0be5-4138-4642598ad289,3703560617,14162023209056478974
+40a0e77e-ab2a-33c8-9b3e-0765cdb53351,738771656,12363201364756170691
+3fed4514-9711-419e-4a2d-730b3212ac05,1501492675,9322622605153735183
+bf1d0f22-949c-8fd7-eb14-6495f4bb5ed4,2703126400,4966083000558522963
+70ed6bba-871a-8496-992e-4e42503fa2fb,2483563293,9059562385090626821
+190a6d2b-9006-ebd3-558f-e335ef48f2a4,2583229707,10318567350709948827
+4454428b-784a-3375-4bcc-e60a95ac4068,828158006,15994110034102285604
+32289ea1-3cb7-ec8b-c38d-6edc38e31a79,2651484429,8542890403436663128
+1e1a8851-5704-15e2-f9df-2aaa1efce627,3304604307,6400007421577004485
+34c895de-4f1f-fb35-dc8b-4d0a5b1d243f,2358840897,7577830018763999618
+ffc0320f-ecc6-400c-dbb6-b1b3e689a112,393056092,4018553591066032158
+e6d1f309-d995-f42c-ac74-a905c3d1a5cd,1275238569,2886283138974947823
+597876e6-28a8-1aef-7c84-ddfe2c45b4b5,1879530560,13129088861752062235
+7444df44-7ae4-957c-8d54-bd6523658ebd,2613143347,9738765616565678790
+ec4cade8-2b4d-28a2-241b-9ad5a912bb2b,2812812346,11631712778480114370
+6a884297-aa92-4299-e003-6c0d2c68e903,3537949170,12469557914364651573
+9bed189a-3366-fed1-1139-27f6ccb702b1,1538848687,2518136263988550086
+220a06ad-da1e-a7b7-8c3a-bed5272cae62,2504933245,5509735953614536200
+3816d708-eed2-5531-9f19-48d61b28ba5f,1985541149,1015424291151642117
+009908ce-54c4-ba85-42cb-a2842c954629,4006415239,2674204941717355639
+584b9987-12cc-0703-1bf9-0f49d76b71fc,535884264,14442012134861274326
+cc8447c8-cb5c-b3ba-3694-b33c808da5a0,4262157776,17219676238342056841
+7dd6eca1-d94e-2cd3-fe58-39ceae03cb74,1928212477,11960892232727324493
+78d42b07-3f23-63b9-d317-811967db6a77,1351956549,11725060240870972284
+1bef2cd3-35b3-f953-8473-66d249791e8d,434808609,15165708891617205101
+c14a732e-6af6-5e7f-08d0-a2aad8036549,1474923463,10715727991951555228
+45b106d2-1d18-45b5-f045-103e8751d773,135770650,11034510576330536453
+13c1415e-4120-4f00-061e-56dd98941c7c,1137961215,13639068821383145032
+28cf2468-208d-137a-0699-45d3f1b34644,3072752597,12230512959711372687
+7cbff3d5-c861-6895-08c4-fc6f9d223d67,1428804002,5683131877647824687
+3e12fe21-f409-e0b0-73a7-09c0771cfef5,2396147397,6417571238054500458
+0656dd54-f2e8-dc3d-5dd8-9a7f7c73f6ba,1388363542,1494174792637257993
+4120f812-6a52-f010-3425-d110858be107,1635218526,5373168199102284458
+076baf53-cdfe-4c1a-5fe6-aa87ec1b43c9,2357888156,2587987583411152135
+545705cf-226d-5979-f482-f3bda6fa68e1,2226159126,6607512513031166579
+09cd1c91-da4a-1026-b6b3-bac02ee64b0f,1945397967,12375259414328866640
+a33bbfdc-6c61-cd83-e643-e368842fe646,2463078243,6552427801670596093
+e027eccf-1811-4a2b-22a2-61b34c40d01a,4010173966,17661527252071874639
+112c7b81-b25d-e90f-c02a-b3285911a063,2697834455,11932351145376661853
+c63802a0-ec8b-2c5f-9d31-2446990c9dd5,2207434662,17091518906557107616
+bbfaadf5-cbdb-dfed-2516-46a6a6533c6a,4230046387,182784987214564459
+8776766b-179f-2d89-96e2-3e322fc3639c,14487786,5033729779562547925
+7cbde44a-ea06-b985-f188-342fdac63b83,1281995574,14053862130038773543
+a43b10e6-05ab-cad0-93ee-fd6c9397c2e8,3420957386,12821959125381243956
+1de1cc1d-ae58-ab29-ba81-aa34ba4cceb8,386611733,5789043145124052112
+3035ed3f-cf54-4af5-d7be-6a411176947c,3392232418,1868148815196087192
+5a75500d-5eba-c814-e55b-ee067340da0a,3683582553,11634623254429767720
+5e7bfdaa-11f7-adb4-a7bc-5078d748c571,984087417,14345441086868907886
+de5ef7f8-0f11-4280-9ca3-24b01b3e7b38,2414787442,15861486876011607241
+bb3aa7ad-294d-2973-fcb8-7c39b8b395f9,1121377597,11759674618511479458
+9837c355-ab09-7c1b-012e-b543a08c9a56,1925503093,55800513037911824
+47d8602e-9304-76b4-874c-3d05a5aa67eb,1882278248,13733574403920591210
+d16ce11a-243f-5fd4-5620-32d7affd5174,3964809079,11412886728376845411
+c9cc5320-840f-bfc1-e5be-8d70ca759566,2043898012,15717386684585637704
+a70229cf-368f-534c-7515-5db432c95003,3557783551,12915481314501007301
+c0cd729c-9930-6d04-c5e2-7d03bb1e6d9d,3121665996,10393865856972457795
+faf6b3bd-edbd-1980-c967-777fc699a57b,144335831,12900093418311496833
+a316068b-2d2c-c657-2af3-75edf3d6a9e7,1987218944,555028704084460805
+3f9af68b-f9d5-3c1f-6a19-61adce8b72ba,3664541217,14234747748617164412
+c01d546c-301f-6072-0a1b-21e13800f8e9,86770765,1430047944288168240
+2051a377-e339-3adb-60df-62c4d2c0e154,3655096621,2200375935479623935
+4593944b-1701-a89c-cf20-aa380e302bb9,2769901883,6217712443602253851
+832af389-a5df-ad06-688a-a422dd398813,1495995579,7112066478886768307
+f93f22ce-efa3-cf8c-4a9e-1e6092388369,3811343532,11926858066466442846
+b5a9e442-e607-9ec1-dcc7-7c7b8b2d9ec7,164535333,8031938752198779605
+e4a3a5b3-92eb-cb70-ac66-74ab1b7bec24,4121622981,11602831407336567985
+01dc25bd-5faa-5a57-1c48-5cc7e8bac683,3855215003,9139413447633531435
+d38e2042-f5e0-594e-e8c4-e28658636797,2408134071,4437510478739205130
+a5ba4c49-be50-a1da-56e5-0bda9654bdcb,3930609941,17796551521880897543
+ead7d629-5f3b-09fc-5e28-ae16485438d1,4259268426,13407923887883471307
+fc9dee55-73df-63d7-a18c-77604026cecf,4009433543,10421601378427838045
+d902344a-53f9-fe00-f351-02d1884f8cdb,4156303212,13056965886168432641
+b049c37f-ea7d-3e25-099e-eaee23641454,2429935914,1173335670354470419
+d33f715e-0de6-1acd-453c-3c84e2933542,2029084493,5002942449855095368
+0021d8e2-8d94-bd26-7663-d588d34212a8,4164666745,413924291750160778
+a75d570f-f556-0a4f-80f4-f864ae413737,183778148,10327262568389865021
+e654a184-5601-56e1-89cd-8aa35c29fee1,3436346799,12852135899940518453
+7552c920-3b08-c543-faf5-750b1400c6e5,3115621134,10843274672256649154
+c1ed5b63-5acc-069d-765d-ccc5e205a973,4123984715,3984017511555154563
+ce366390-4438-5cbe-c44d-4107064e9623,4259369521,8719795075076296905
+fbe0187d-f5c0-483f-fb28-c9b12c3fdc54,3249026141,3286116335124152377
+9f7b5ed1-24f3-9167-7f2b-a4edc965d492,1356445235,17401345261551734127
+2a61989a-7238-7b55-eb39-e94fa487ea25,1167069182,8186657874953878671
+664e8804-e738-ea58-3615-bbaddd476cae,2342043646,2134679365993136400
+c0d72e51-e200-7c2a-ca49-5840d7c88c6d,1899880515,14641684437282791866
+54e48c22-1d3d-ecc5-9030-fd2ea260e5cb,3947014197,1416261269397300242
+b8a3f596-0d0e-7590-64fb-b1a63ee23fcd,2399303774,11363953557414070816
+e5e5b66d-49b2-1a73-2af4-2bf8f8e25925,3276890804,4563473787658619641
+3c4e504d-2204-9d0e-e942-00dad362bc0e,1112491388,4558934353543721074
+6e8114a0-a373-99bd-48b4-fd811c0da604,821789637,11613825984016817532
+6d4e3a21-a4d0-b54f-81b3-eaf6e9c2e351,1173106379,11325173595452325222
+806e935e-ade9-ed6e-7fb9-10d59a0df484,956512633,10500293760322619421
+b38b2ce7-86d1-bc24-90ce-70f6644f2e35,1633703674,10673778472887363370
+332bbac0-aa3c-b098-63b1-f7c38b619a68,4099462425,6897162300225776124
+6a793125-cf89-9d91-c183-ce8a964ad6ac,4061538489,12968910805113748698
+a4ddcae7-54a1-209c-8aa1-152ffa0b68c7,4014131319,4765740752556781943
+6ebcad03-01cd-a5db-c3ab-216621dd0c1f,4282653573,6396319456337194918
+7d233327-42d6-18cf-2853-20cb746cf0da,3964456114,5167939373859667192
+fa64c399-b091-0b4d-8329-4a3aec385506,2563372505,8175336608889430527
+5a26e6ec-591a-3f5b-e143-dc3b2ab1d9d6,722888442,62443804445392150
+254e8b30-1741-0349-98a0-512231b4c8de,2146505013,1306849215533470480
+ddd6f6f0-15c1-0933-78f9-bc2eca75be8c,1483143079,10610469371313689939
+4d5ae457-5226-9e8d-218c-7389a548f24f,780436914,11419078385910139280
+f47fce75-7a31-89a3-2acf-5bb5de504f39,1314658432,10499404451852857028
+5c68a891-31a1-a6fd-9efa-b249ec85629d,1674147681,16240258199480835801
+fc29d2f7-937e-529c-1590-ed15ee93d89d,3312980665,4716973119099757721
+5f0e620e-3dc2-2f61-fd49-e14b02098bec,1018908499,920230883357732658
+83e82da1-e387-b4ff-8a11-9388cba19435,2150279195,4626744906230063116
+98685762-2b14-ec1a-42bb-c5e700744e08,742441181,7935947941119916482
+dc409e88-724d-3072-0259-30417eff4107,3337855597,18264008743246119382
+7e79b590-024f-b393-889e-0b5e30057c9e,273936369,14494410439018639187
+92b847f7-666b-bb06-836c-9ae9ee5d8828,4060608826,10268539343723290055
+4e539788-ffd5-dc54-b863-70f47e2c1750,3520040979,14406138921885889065
+e301e9be-8369-0ee3-b09e-8d5f21fbc21e,3483468879,8556529471738581214
+7c2b2397-ed53-ee0b-520f-70958df1afcc,4060008999,879876936467767319
+df95e955-62ab-048d-c365-630f082823f7,3238971883,8528731988879582792
+f9e969ee-2479-f5d6-9895-fa6b5c47e704,2362635604,10856989745599034574
+5ef1687e-3114-41f3-bb9d-505f64f65954,433648499,17822560174131327456
+dc137797-064c-3bc8-f98b-ae4a93fe65fa,3988376477,15385074243081646980
+40197af5-71eb-22f2-82fd-039114f41c69,1263044934,10896594237427613455
+a65db4cc-0bf9-68cb-2b47-d602659bfa68,800035615,208319764870140705
+fe84868f-4e84-9e6c-8388-41f1348f1c49,3347088943,12960180801776828957
+84867a0d-75b9-7eb5-0ee6-98a4b2eb228c,3831777203,15758558037829988126
+7d3d252f-0786-1abd-1382-80746276904a,2382801072,1181537416209868321
+77f12714-be91-064c-5eb7-be4c53159d07,2745880909,14790720864392403767
+2b3372be-3aa0-7237-922d-9a35e77b92b3,1476559124,6231969268233171349
+c1573e97-dac3-b461-cd12-b1b2a18c413c,4257365659,10725847775468231947
+90721d29-d983-4448-45b5-6a0e9f6677fb,149991177,5416421915946815214
+8168fa0e-6cf8-59c6-1784-0048b95c4100,293530497,9969791901242970066
+163b1c8a-692b-505c-a300-53249b5fd512,28916599,14401787558675611656
+30b96e4f-e61c-0f5e-3a41-a08ede208e3b,1331940160,4606955962606432788
+ef6fa69e-378b-8dc3-1bde-d63c9ba000cc,2876537072,4888005128868098350
+9ba71ebd-05ca-a8be-a630-512c1e2a14a1,2282230997,3478173860176872905
+fe991df3-d779-90f3-b695-6962709a7605,2724353152,16395742808394512351
+f4c7af9c-fa8b-0591-2455-9563c55def20,4279222028,11429241986948019649
+3948f3bf-c5d8-ed22-743d-c0053c2095b0,482073188,12337288544667063769
+e5f3d32e-08b0-4693-06aa-6738e1816c4c,3840576493,4316710690110584564
+b08c68b2-5367-ac4c-56bf-247fdb5492d9,3323849862,1300179571544419714
+d4868b5f-4f84-08f7-6b8a-f7292c2d8353,3022265711,16852628243765622276
+3288e576-8621-5bce-c157-1f43d8cafa19,4197408736,10552008415007211930
+416e591c-2b5a-1c24-7b86-5e8643925154,1195155953,12314946705870755775
+dcf457cf-c852-ff7d-0bb4-bf721a5518fa,1607346931,541183774447451485
+6a1ee857-82a3-54c3-998e-c5ca37d41c99,2731716502,8229532110089653543
+4d88b834-5db5-79c1-e788-af53bc081c91,2356075828,5425904606453402509
+4b9cc97f-4c01-6585-ddf6-cb8cf653728f,3142797489,17108097646715656181
+c46ae391-8999-9e04-e6c5-c35b5a9742a0,1571688256,7258146023123871559
+fc090708-7c91-fabe-f10d-e22a1c0b5bf9,2032967288,17645248322657323274
+a7176b69-8320-643f-63e9-6d3c10cbc497,4046987613,2758936550090896787
+e51fbeb6-ee0e-3ccf-e818-165a6076d60d,1395048674,15294376402008138571
+f55bf20a-9e0e-0d73-734d-bcd03f32b6c6,1921259688,3297222103489471912
+1362b304-8f23-8a5b-06d7-139f0fbfc2e3,3443502528,13011387652245177043
+06d8181a-a61b-52a6-1bf8-cc8dd83d0201,3754967727,14220183125777187434
+ac936270-5191-48de-8e2f-be02909174be,3714707510,228357420860937401
+5aaf95a9-4fe5-5abf-a070-d92fa67dc5da,106955715,13573612195787410808
+ba1623ae-3f55-785a-9365-8bcaa6d6d305,1136722271,12551001539993246284
+f63f2463-9de0-8b78-8d75-6ed4b4fcb978,654578121,16637697343124763491
+aaf7a6fe-467b-c614-63b4-40b3f9bb1716,3512271788,6437363773620724377
+edc5419f-57c0-4e46-6527-23c889d47f36,2554766899,2593595033578020796
+67c65120-f6b0-ab60-bbcb-ce997f0f3f99,1770520725,4334299194989965690
+20a3a10e-3f11-0d71-df9c-3dfb697b570b,1522692834,9305299540865646266
+efaa0d39-bed6-156e-de4c-948ff4d2a17e,3453457524,3018413084377666054
+c0d8444c-ef18-7698-1871-a1ba8fb82f22,3570857281,9936395599355321704
+8c7c59da-5777-30c4-8146-483c3d735601,2377225832,12514440665633628213
+84856017-4736-d59c-b72c-0d7b6f72421a,2433901158,8309944797764283815
+dc79108a-d49c-6389-bb03-cc8d85d07193,2394430692,12130557619499526364
+584065bc-ab54-d6d2-beef-f89c8fc8877f,3373434288,7272751005121180958
+b2794f28-b4dc-0212-ccdb-4d5a8b3eb968,477903490,14070493677911452748
+36fb7817-540d-d1c2-7a23-7a2a0357317c,770169945,14716243787808185544
+5c635e5e-32e9-ab63-52a5-7a6cf32ef550,2929512618,14398580165285241291
+9cb3b185-a82a-599d-6360-38b969614780,85735139,14554183338008478290
+115c815c-a36f-0ae1-9da2-4596c8952512,2017114516,3475563036693400872
+7ae75789-28e5-d19c-cbd1-1b05e543d45f,1257111369,3790259748948193491
+cca84d35-776f-f81c-f61e-1cdb57fe48cf,2205918998,11424228768582784857
+0eb8c543-1904-3249-3c13-f46f8ac29bb1,3810778755,12604317730066713735
+a1d8e4ba-2e75-58ee-77c1-1cc54de0378c,453958382,15776429611675307897
+85a1068c-122a-0a96-7b3a-346116d11b2c,1532140403,17013635558951719545
+2a5b9e5d-dc7e-da58-de96-a010e088ee6d,3218119755,10658790918732745391
+9c1b27e3-5b24-6c73-b28c-4b723ee7ba8e,2747475634,2725811004482071117
+083171eb-d3e1-c83d-30aa-e07747fa1be2,3182602582,9868987477383076084
+7aa78d8f-63b4-3a59-e962-305f82052813,3651527314,5554228330634944216
+d7584e7b-0c07-ab9b-4d5e-bdbad5010c5e,1711537726,17791351448334299414
+c9c6bba4-d196-f139-4441-594e836702c9,199473829,9923694615620625640
+eca1b3ce-59f5-0ce5-6fb8-2dc0135860d6,1587596438,5446194213336846264
+1eedc62a-c8c3-6555-2568-18eb278b71e9,580451359,15480205840636904318
+36490535-3af6-b597-ee80-a87096c13518,246060640,2332291847384113876
+0eacee09-3f9f-890c-436f-522fb2cae06f,3879963866,7228283396439273979
+4fb19d45-7c7b-7166-3820-36f9204ee117,3339848288,18442063137625741844
+0f87daa3-e08d-f732-3b06-ada749383b3e,741256610,17756965738000849580
+576bbe6a-95fa-c309-d654-75b92aed657e,3327408591,10283801485712966187
+844ab55f-aea4-0673-2145-ba2530a075ae,1419417870,10087883042478099834
+bda38f0d-875e-93b2-176a-f09462cf6a6d,4172226436,11367300030295894058
+8d43c470-d854-f64e-d069-72c3e616d18b,41359411,15385653461997622545
+f45fbf54-aa75-b5b5-f1db-1ca0862df31c,3189202809,17771415717143111006
+2a2721d2-e7a2-1a81-b471-9915d4a8d2aa,894534797,2562625305553522496
+98c2d851-203f-da51-cdc3-32832a429780,3687364921,17707708730727082646
+bd054df0-d2f0-a71e-7725-cd418da35536,2092173644,6969325013472823114
+5228e8ca-499d-f5f1-d653-9fd74b4c7cfb,400192048,17877689311198179500
+6bb8f96e-26d7-e6cd-5700-64527a016385,226280941,12000890233869143063
+349e8ff2-53bf-646d-df30-b7bccbddfa90,2675587528,15636969004557927532
+7d256d1f-79a6-fed8-b530-bfcf842c9dbb,604404853,8449551490442070027
+edbbb484-ac3b-6faa-6933-72f257cfe8aa,3736577795,16650991973774040063
+1daf3a8e-5cea-f946-1172-1dff9f2a126b,4077611111,8018897543610641359
+41a3141e-4191-44ad-e96a-1358df8e4238,3229562548,4392816805121887228
+a6b3ef5b-707e-7817-92ef-199d1b078b5e,4146615148,9181363524916080873
+9d9c6dca-b143-fc8f-7e68-d06289be4051,2939719818,4651554220744916427
+c5bd3368-d83f-aa40-c63f-b4b141e86bd9,322829947,16098809588627102990
+8c99d33a-2688-1b4f-072b-c90478b0658c,1473370387,5274519423530777919
+49263357-1abb-e1a8-5822-0d4072655d32,3234473157,10874443821244323791
+78274bc5-0024-7e92-e182-375239ba6b40,1305950505,14786020501670978900
+e1ade8cf-7e5c-d40b-5d07-ac969451ebf1,2006427179,8713760937672881612
+b252da7f-bbc6-307e-ab8f-5f31c36679a2,3315247559,11211568903296534651
+b6521a35-af53-5d9c-90d3-f5c7ba8c1f3c,1796760405,13317055546585814212
+700138bc-55bf-8d94-4c14-955f1c65e538,596331743,11202295471443033765
+b150c947-8390-1248-13cd-233db279f55f,3783889588,1931555977622271435
+bf2dfce0-9aa1-7c1f-cac6-aa6e3548b75b,2321524486,10277760931258470260
+e6223464-2244-f978-7ebb-7d7618d09b8f,3405452079,3268246786379572272
+15bd2931-390b-e72e-3236-a0eec2fae3ff,1601232819,12827695384724904608
+9619f01d-d174-a369-819b-49ee77b8020f,3762107354,18383419692324533563
+e88b5aab-4b3b-64b4-40bf-223dfc17a7d2,2326431925,15260061539413922260
+8109c3e5-d067-79d5-a7ce-75b5a44b49eb,2424274938,13686736543934424107
+2439125a-0108-6ebb-3a17-3d540f6ab63b,1352009791,5015329370928044627
+22747912-5530-07f4-d5ef-35e78e7c86ec,539767148,13867046807890422711
+c8236c74-9964-bcf7-353d-efecd5733ab8,2723203969,333928035239596026
+eccc48e0-80de-a33b-47f2-c72e39a52237,3745726050,9285044227545450218
+06676613-72f6-0477-39c8-13f3d7166f8b,1467523651,12002407198734217638
+a1b07f56-3aa8-8b5f-3dbd-d425532a86b7,3200972212,17432197112854340169
+54225f91-bde0-723e-b98d-66ed296bf599,24782730,8075717273484217937
+223a400b-0899-90ee-a3b7-94b55b99a915,496405216,2659103008382895321
+fa85a34c-a101-9367-e6c0-1f6e29c2d625,3800998531,7501618326260601974
+e1c64ac0-4bc7-ae4d-6106-e691311dce88,3263532438,17770880959956233996
+15304fcc-98f8-ae5c-3771-8c2f1be7b7b2,3363240272,4945897962011618631
+5259998b-873f-8b59-fe10-631c055119a6,830632434,9433190757158540895
+afce44eb-20bf-840a-9371-14bd92ce9cd0,461826159,17116695727626469141
+18d86fab-ae00-4d82-73b6-5175607e6b12,1740020063,1803126965202163501
+a785c2d3-0440-3aba-a248-a756da8f2b6e,2416629959,8096567233814941118
+05c82949-2265-5535-9c17-20783906cbef,1605239372,15373099800796613851
+be55c446-e5e4-8456-6518-17fe028be49e,3025463863,17939167115615637124
+424bed3b-132b-2cca-a42b-0fe987027574,1758879140,13779953055927811178
+99b10c3c-4183-1bcd-7569-1e8bd0fb1e0c,3924754774,16835954428435335275
+b499f24b-aab3-8c63-8fd8-33b92127f987,1214398416,4597518484161658356
+7cd52f55-c0f8-8a70-3fab-f80683b4db9a,3849162373,11431174284731893977
+b13cd461-ba87-76f3-5542-b02bd42de4ee,697088895,16910581299888183243
+952a2678-1a0f-3796-149c-4ff1b35ce769,2277152568,15279955126882049333
+72025c57-4c5a-c93c-a100-c7ad7e1bba9a,3163942872,9804107861979208464
+6e4a91dc-cd5d-bb4f-cd1e-3401552504d7,1803066561,13802466938442926934
+0bf413f5-6075-f465-05ca-671e79b0ce18,2701585483,339409065071020629
+c2005ee6-9920-d61a-3e0e-7cb13237c2b3,2102092023,4876704460503200877
+63ce96a5-19a8-fdff-5d0a-2b071ce12a13,3116317635,2343663694922684252
+085538ae-2173-752c-b64c-3979e56e9269,2295651980,4435308396613821212
+f163ab84-2089-4ab7-5968-c075a4656e36,2354754236,6167297663236274036
+357ade31-cee5-883f-a559-52d8940789dd,1234810683,15237798032211496306
+f4395101-bdee-1617-9dfd-ba3b6a856094,411529146,4941537097991162380
+42025163-1566-8de4-22ef-f009e29ffde4,1637719753,6087451385682272276
+6aa118f8-d1cc-8a07-e4a6-92d9d954cedf,3378509273,8575340199032917089
+3eb6639d-3b92-c12a-9438-67e296c3f012,1321802211,10427838803617111663
+c9544197-8320-e916-7224-ba291deb5295,212106749,6597504162391337181
+1a25b385-9845-a00a-fa44-2ea778f5d21c,2934673849,17261196833880370171
+fd0e37d4-1368-d3a2-8466-cc3ae707834c,3802080241,10647211517253492246
+8e435365-97ef-e505-0e77-fce316542f2f,3317194159,5936473419217807187
+9ff11e55-1622-b581-e8d9-f62796b9cfd6,3169713444,17884810391588464058
+6393a934-e81d-bf9f-eddb-bb6d14ced61f,1213438715,8850203453479224049
+bc3efe0a-82d2-32dd-f2fe-971632c54f3c,1325675545,17425593869923858710
+2916303e-2948-402c-8546-d34b26ac6d60,2555855822,17433194640958805212
+50e152d1-e7c9-5547-1a20-6ceee7de47b4,576342418,1332602704734116314
+70369757-740c-50d7-5736-d3ca8bf38cca,2314956326,12513991268073151546
+28008071-ed21-5474-be98-befbe5c2af7f,1112380375,3679343928100944785
+c9635159-939b-1376-96cd-71495b8c7e98,1805436912,10023906068795837589
+d603288d-2fb3-675d-0249-4568122b80ab,3887136491,7192904261435096865
+3cbb6c14-c721-6a5b-1ec4-42fa0fb13eda,2136737608,13777480379609576002
+40754cc1-c7e0-0d12-4327-48cbd6f40164,70611269,2474525593455297732
+3298a5d3-9ad3-c24b-63ba-d1e26662cc07,2651719635,5755045025531063800
+561a365c-a066-78fe-5f3d-508de598a3db,1926015818,517853235926431130
+4f5e7732-692c-e400-f7a1-28d463ebb814,339514437,1415727445285467642
+7b61ad85-dde1-b45d-e826-f518717aa950,3610900837,13857718061721411083
+017b0a4d-fc18-fdf1-f28c-9a5a0940c3b3,653415494,17885898288261175114
+23da8b9a-a478-49a3-0e76-4538f3a143a1,217959987,7587503354420297546
+73917e24-9b68-f361-2eb1-6140aceb077e,1208828171,973566805145648201
+f821bfac-0d1a-0153-4753-7c164c8e60fe,1196985003,8598441926825159769
+5a22bd94-18b1-c88d-367c-3ccee4063725,3126274846,7319750831240647664
+62f46887-be4b-bd01-e8f8-c7c8d214a19d,1874283282,3204511203872945069
+ce62848d-a3c4-0bd2-7eae-821b5680a466,1791775853,8811937586623244832
+a3a72348-9c7e-f291-3b01-cbc133d20bef,312241397,10394191963955514771
+e7a07a37-dc0f-74dd-6c28-875e61d2291f,506807470,4277078198403762963
+e72348f8-5829-3b23-fbc2-a3b09c9ffb18,2899116985,13625709441805070657
+e5ba683d-29ca-8cca-d145-495b491a6e1d,2467859234,9204477769565551478
+5851cfc7-060a-8ca1-1d53-edaacf65f6d0,3423182235,9400391226603769453
+8ab8c56d-fc52-755c-322f-be22f0f812d0,2383103509,9978248295881546165
+3b8fef93-8ae4-aac0-6ed4-d5985d390320,2433752934,6773566760011978402
+d8d9fc3e-06e1-a1e4-0a19-0dca9b501d0b,139041289,3047610455985885215
+7f2e5b56-24ff-ee17-7c6c-d35f407a4830,1659620794,11806505303224714431
+4e62e206-2e4b-5b54-4ff5-18df8c261059,2856867049,6231483444416546753
+98671c2d-49be-875e-1925-c7b4b997a49f,3255125614,17930313862641112907
+72bfe13e-c6bb-ed79-169e-83c2334c19c3,1564624388,9840712118280472302
+5067bc21-cd86-cdc4-45ec-3c71b89a1bad,967520299,24485586892707443
+24b87ac0-7437-0783-8c38-7bdb7ad51842,3635552074,10539346116905699291
+0d5a6dab-d4ff-c55b-1df6-da2bb3efade5,2970160768,3491262828375842561
+7c80e275-ebb2-15fd-9cab-d5b1c724ca85,3630912814,14447665229428096472
+a9ac1a87-e655-ef89-2ea7-f5437e4028c7,1238239461,649325658680121437
+21ea7ceb-ebd6-d97d-bee3-dd5f274fa5f2,176231989,11989754003681516809
+e6fb84b2-0293-b264-6782-975aced2711f,1236222890,13090261173813748849
+ac767f86-99d7-7466-56d5-199901e5a477,2047954465,8899188718658070157
+0db3e994-09e0-53ae-5e97-96b56b641fa9,819369886,3127845866071703962
+7d2631e7-7a7b-5eaf-64ac-532256c2e780,4229971233,18392306453212116405
+c39b209b-4a72-866c-1aa8-767029fb9d3c,1384884077,10240201420639702237
+97233fd4-7b4b-c508-8a40-4c86f6ec78b1,3434027672,11741085676167249293
+83c1bb08-334a-dcc8-fdb4-5b9c34432ef9,3946126005,1101042972166116908
+a97b75df-69ed-ad63-703f-8179095b5dac,3883306138,3347709799293983128
+4a8b426a-5afa-3231-7648-0bc7d6906213,3897375806,448973822117678451
+ce6606fd-163d-3354-3c70-6571fd6b10a8,328105505,10882824822913886385
+8a105b14-9802-1edb-b2bf-30a2d8ceaa66,49898987,8263067943291716794
+851edf2c-5e26-c796-df68-e2628283633b,2246591611,227667331260916293
+ecdbdfc5-80e5-94a0-1936-9e643cd13760,1976213253,3652949639531294443
+51f43780-8c67-9736-20db-2b09692760b5,3184757334,18124151767178532554
+0c3e0096-b659-8a24-88f8-485a57701679,2967602302,15161777613263502352
+3ea9a3c0-e6f3-7cc9-401c-a2b62ab5e306,4228481545,15839008615299429557
+1ef3e6d4-a7e4-b380-ec0a-6f030c3fdbe8,1234707764,8440899098526590285
+e50c5ec3-07d7-db70-1a64-032f07efa2e6,3555003528,4046823520114378729
+e07e6e2d-aed7-ff90-3966-e0906e508080,1888599449,5016811362346336963
+0ee8408d-1f63-14d8-e8ca-76257553ef2f,337792892,14420934626435174994
+b2b38803-95d5-1fef-eb09-8dffbf91aa51,457255938,3986197685686516828
+0493649f-d7b4-b333-6750-6af0c122361c,1222560272,3696011411598595574
+d60ea6ae-9fe8-a7b0-a38e-2778d9c13ff1,1345009450,4521995321719162749
+8a7641af-1698-b437-ccf4-09557cbf0930,3967032917,4647109921278231036
+e04862eb-ec91-253b-bdb9-cc7525ce3da4,1155384622,3982090512704125044
+1f99cb4c-a0d9-b09f-7600-bfa18e0a24ba,282349183,11849238412914588030
+72ea6124-d3f4-1e44-3712-ac82511ef50c,796233476,10608008901242717053
+7567deb7-371c-36e5-7551-ee3bda399f27,4146162386,12038841122947388419
+ef8d0d78-635e-ac70-00b3-cf78f15fa13e,2137371653,1255735344724214193
+1b214ef1-2ffb-39ff-de14-ca81f040cecb,206790677,1354614714327289340
+810044f7-a2ea-99e2-ea95-5c4feb85ab8b,2498597610,2955666762915465403
+8f127a4b-3254-73ea-fdcd-64a4108c105e,876987301,4612629679876458331
+6ff709dc-34f1-c0ac-69b7-db4d89e20a13,117827297,8714577463662464296
+4c558f40-017d-14f6-7c9a-fe51684fbf7f,2587520696,6883588532796520782
+7002e33b-2cf5-7f5b-1857-2b3106b78d6a,658478793,4836810168614381253
+02e94ae2-d75a-1633-e8e7-eb0ebc18cc48,1280193529,5460525294029158363
+4a17551d-7b20-22d2-e0f1-bc19afa6aaf1,1690520814,11027025856687552268
+5c3adc1f-d8ab-9d86-bbcd-a0196d865604,145847325,7223245936063877154
+2eeb6823-6774-686a-2981-4d74f62a2025,3252956125,5060530093282634278
+3b6ed044-93e4-5d88-e286-7bcf8e4f1fac,1924186685,4622466946739678128
+03cddb44-ddb2-4308-a19e-412c3bcb65c2,2623615700,4674559462807872015
+b9e2a939-b649-911b-12fc-6a8662c0ca0c,4252169900,10451288946735218237
+7a0a279a-3eb7-6af6-24ea-544c9bf8d28a,630048270,5668737029291506638
+8fbc7fd8-fd14-8205-11f5-20af74a125b5,623915982,12850347950931374192
+62fef775-3fd2-03ff-d930-e985238f6c69,2987688230,4061055044910604997
+f005321e-69dc-fe78-96cc-8d0863d60a46,2162704264,10427457635012631125
+65cd7f63-29c3-9bf3-815b-21509b111690,2071574853,18296620339931176765
+e7a6c3d0-72d0-08fa-1c8b-46b49993f8f5,1012115798,14940148545673113444
+e948bc39-9a3b-04c9-d3dc-ec0c2fe069aa,3346866618,6595854982353189487
+49df0014-659d-0a8c-d121-6eddc62f4cd7,1063473189,10280500439762112028
+8bf96b38-5120-f39c-f97e-9fc128c3347f,3102563351,6272976866340460444
+a9b2e0a9-7582-8ad1-6b77-2af1b04ba5c9,3923244533,18219551309346131076
+acb1e5e8-8bdb-a227-4620-9e360f12d730,1980916507,5124321211095006546
+41c10705-efcb-4a07-8e61-b2860cf25010,3087675364,4420593050830418603
+752bccec-f1ee-b1fb-ca7c-456b04526f2b,3287221646,13770253512242660061
+b0445a2b-73c7-1a5e-a699-97138f7e4d3e,1093285290,17383442697260348689
+7ead8519-8b1d-4186-11ba-f29321806a22,649001997,9697060899638563537
+aecfb400-28ae-b132-edee-f0bee221be9c,1544971757,11413253419275522547
+b09fef94-e635-8de2-73c5-793a60510406,3688941223,10739461358136916959
+a2ae8ae2-e65b-c386-32aa-0c29ca74d8bf,2864280867,17974912311221788452
+131a1d86-e916-73d8-1683-84d1ed6ef19e,2375536519,14604879926999935913
+1e13d4d9-8bd4-bfbe-54dc-43da660b3e2b,3193472652,4525490172249820987
+b3ec7884-9b49-fd73-7292-3a0d80a23d78,4075637155,14197422505757555419
+abca5edf-cbcc-e6ce-4c28-dad38cdd2399,716388202,5973333701117772680
+98869954-8ddc-d91a-73bc-b92694ab81da,1325933935,5229380491875678591
+67b2a781-03e9-551f-5cc5-8618f139a52b,737168599,17044127600837100980
+2bde1d53-3fd8-68bb-0ada-4b30226cef50,306589479,3536105437494817211
+13ec6a2f-bda6-7914-e308-ae4ad1cce336,2980930131,2303706778371257524
+8a9449a8-f4eb-984c-511d-eac6dbfc332e,689010950,17399135656266128209
+deee3097-e3a2-a96f-1cb5-1ea9191b089b,2333053548,11494861269766004817
+36934c1d-7542-7ca7-6788-cfe06750e21d,1556347186,437490951372332691
+92a9587b-e373-716c-1318-8e4c01023308,2089083066,2249034859906686870
+92fa6ea2-2f1b-0f21-32ab-0ccc94137569,2393191331,16591038327874280474
+c31a1d4a-4a54-baee-2cf8-1c928806537b,862856013,5210646200246661802
+7317ea1b-d327-f878-6e3d-12dfa1ed6249,2181441603,1057015834708262384
+b410f91a-bb6c-062e-1767-af54e5e7e94f,3425634849,17456997543488295130
+63fe8e56-f16b-c905-ca06-bb2c8d6de362,2138615582,16115084327603001909
+decc3c9d-380c-811f-a6ba-8db42380a9a9,362389804,10542265356392448635
+1ce01557-2091-b943-5276-dd69e00f9477,3803568005,12473737859435058448
+de3cf879-b64b-3b2a-5142-398119e500c4,967017685,4864293204056192848
+05c59d57-2d80-45dc-a18b-2b1aafaf25d8,3226145532,6683297584561610189
+b9ef6ca2-65bd-dacc-31fb-629f5155b5d2,11846812,14410629663551938482
+4ba96ca8-ae57-e555-07c9-870ec48f8c7f,1916776760,2314951566541497385
+fff0e082-197f-9b24-1a92-134af14f3713,1873756627,965277721901127403
+dfecf33d-dfe8-909b-71fa-12c9401577d3,1661847256,11014461749105187969
+b1f30fc8-22b4-bad1-6f95-50b08d145fcc,3163833069,4122924737021523068
+f80b34eb-34ba-2b86-cbaa-3e914804588f,1828176350,8721107919530734935
+cad2ca45-1c1d-f6b8-8ce7-c847d90fb8d2,246639966,7015690670193830882
+b60c83c8-eb0a-7378-178f-5ebe330aa424,2743275386,6951788681603380566
+cad3d497-3b1b-9b12-ac15-b6a79ab9d375,3950109189,2522126504748408909
+9d89bee2-d94f-aa37-f4bc-3b25e6e6763f,3165133674,9905172316208768253
+d5f44acb-c14d-5c10-066c-3ff27738bcfa,2360483102,3523356575804587826
+c045c95e-eb28-3adf-f3b2-50fd526088aa,1442316322,10718563796792441398
+6432ddca-4662-906b-2e52-2e3d0ffc1f8d,3730860495,2952069656705956156
+1a8c51ea-71b7-4ea6-2ee7-da43f3a80fa1,1249455888,17113080697990904954
+ffa396a2-47c0-31f4-3660-a3f108551492,1095876479,2470445978670596236
+0d5c5174-2361-254c-ce2e-6897cd8d92c6,169176689,6889740681694782562
+672fe3dc-7f4e-d676-6ac0-ca6f23b5aad0,2573966301,15391485838168717666
+ccfc32af-d68d-fc8f-36ed-ab0eaf92b116,578723736,3660861148884993193
+9e1740dc-dbc1-6594-0666-86db686e0153,3108714133,17326381157062054448
+0e570460-8745-4245-043f-f53aa0b76a79,1687547491,7757805721691237016
+e393a1a1-920e-4e46-70b6-37bb2d051bca,1340025782,12082122101191370573
+bf1b8136-71dc-9230-f7e3-3e875813fc49,3299605508,12881191607479794294
+373f16d1-4f1f-2c3a-cedd-455ad9824ac9,1751459165,586284878605248367
+f2ef98d2-85a7-047a-f81e-ca4d13813b49,1122328429,6231150403762638973
+635de3f3-498f-136e-05f9-3c25153d3eec,1798814740,8994313988411640993
+7de1beb6-3294-17e5-e7ee-679afce71413,2438695025,3809320292137126876
+e2c30b76-0725-5859-fbbe-be6078a4f3e0,1566091060,8222900593683359949
+012f988b-ecbe-4316-9773-48de69a137fb,2231042919,7017133629099153841
+28cc00a9-3279-3a13-e180-e393f83d3bac,2093449637,4134227999493706065
+00a25857-69c7-6937-c4d6-1fc9cc36d98e,3173411148,3964037757393616323
+33029166-e616-73a0-b78d-a90932a61090,822024744,16957548412762725462
+18b6941e-05ef-2ee5-5d0a-d0101239e04d,913230056,3622605349344049273
+45dc3fd5-14c5-e5c3-2b83-cee4fbcd9f8c,266510269,196736887053685614
+64813dae-04db-e653-cc07-110ee83cb5c1,3111119788,91415973242697147
+e8a55de1-3194-0f25-c34a-23f74f88486e,2722048131,1864409639679617880
+98d6a05d-ca80-da21-cc20-f26c9e82b07d,2761956683,10855296515625558144
+2e7873ab-1066-472f-22a4-74f14941e584,4268695209,820591315306856717
+6556910e-0160-0cfe-5188-6d0ed57c86b2,1568897998,11087662305851206624
+8f2b766b-65c5-16bf-2457-0f0076f377b7,2421756110,6834387684013153414
+6ffe52e8-a374-61ab-4843-2c87432ecb51,2875807810,47410021293426730
+cb2b00f3-9af1-1820-7023-bf5d58f2e6fe,3156708891,6875126901828698852
+08d5b67d-835c-cc4c-5f4b-1863959df27d,1201921897,1374233215677728983
+f8324984-dc08-9c79-b4fa-d32a2638868d,974800434,4289547123214167240
+1853b731-1a6d-0a0f-d407-329749eb0d86,1325412355,610087085022845204
+e3713d9b-9468-ec2f-debe-202afe524c6b,3260831350,1978922197355823209
+f7b60fa6-9004-d95e-e5b7-fe05c5110e23,2118383920,7307093493056327154
+2edb25ed-6cf7-fa81-f54e-f96fd0486895,655201638,10274588817739167457
+e5f238f4-f993-7b8c-4e6d-60c858e00f9e,2303403883,3236198882187765432
+bb53e57d-ce43-42b3-226a-e9c848593d08,3756456450,185377747774653759
+094d8ab4-7ceb-9504-a3c4-d81558da364d,1186754858,4576891245786345382
+546b2904-6529-39dd-b381-3480ad36ca81,3790636842,3027404954178650006
+70ce2541-c8a9-deec-96d6-82a8059e8131,3273908195,13376072086830314244
+b4103453-f574-d719-53bd-0b24e844d0d1,1323584904,14029448801755836422
+d33e9c28-a658-425c-8092-8e0eed447e7c,1930758016,9104445838461644209
+d4517fad-38ae-a957-3387-ddf76a4f4014,2414916305,15530701221325908432
+a49e24ed-5fde-7877-9743-2b40adb692d7,2699441765,14863697879650122440
+66be88c9-dda6-a62b-e651-f02a81f45ed0,2438380108,12028337692757866982
+fcb516a4-9eb4-75f2-a0b2-00daa94e2f35,1394865779,8181115932160652374
+5e6bbcc8-3be9-e3c2-1038-e81903e2baaa,433048009,13190447208512151112
+40e5084c-708f-7e4c-8e3e-a2140125c1d7,1121981333,1899176080645538826
+9fda02cb-1f23-18c0-6910-bfef2085c8b5,1742649047,14958486643147529721
+e0700edd-5ec2-7fb6-f4cb-917d498018ac,2913640376,7982595467724513848
+edaf6443-5c92-4a6b-dec5-3f1280b4ce77,911804296,18409268626959055099
+119b005c-dd2a-268f-61e7-7c5fe9665ddf,2700716778,16239778677716638238
+f57e5b4c-47eb-4979-0889-1adca4599dea,2157961848,6924737468420266044
+82512d8a-bf2d-57b0-f26e-35c3d2d36ac5,3385634619,10719274132032940882
+b9711630-2b11-0b19-7c4d-c125d3e658c1,3945651566,9597634231671537543
+8f18843c-0da4-de6f-c1dd-06cd17591f29,3662440039,13456713460060710119
+1d960f82-7f63-7af7-df28-139df6373499,581829351,5076162562071498768
+dd73d85d-03d1-dcc7-c576-b000bf586510,2704931473,3178014839732313069
+e850f4df-d99e-d8b9-0a31-e764113010b4,3257221047,5937337272993840327
+882c6ef3-aafd-f6d0-7403-a1ac24d93a80,503806936,6432161121565603118
+2a9e37bf-7b21-a86e-66ff-4f773e62fa0b,2656875654,11502535601134363297
+3eee158d-a437-2a61-aea6-9164771480be,1779241456,17016344445228400215
+f16491f7-cbed-c8b2-a810-08ba38414ded,1201375132,187648226633884256
+3296397e-b621-08fd-a1e2-f4a2881b0b62,1343517377,1832385367913469684
+0b60db2e-84cd-7a78-19c1-3e0aa40bf957,3906737780,12213723255439680937
+c55e3526-a3ad-46e5-ddc6-6b9ea423e346,3922143333,14003334065926314287
+d787bc48-9cdf-6b86-6d40-48e7c1d44406,2091107265,6472039043875896106
+43ba224d-5b52-21ea-ea88-932b1b595081,427084250,12696312641810078873
+37250a5c-64f1-cbe2-76a5-d0d2b581528b,1780081186,5475467318271216353
+c7c91f28-3df8-4893-92b0-f762b6c1bd9b,3703882805,8125805825606205656
+f947b182-430f-5774-1128-55a92d2d1949,3274542773,18320212660975471092
+90d64cc5-f230-9ee1-501a-5b06d654fe58,1522290218,10861904187049397923
+b6de50bb-6c0d-c795-ea02-994435a52ffc,2774613273,6880959057717854202
+f634a2dc-6e20-f076-3eee-dae111fe0fe5,2166961749,6784090079323163631
+45f2c6d5-76c4-abef-57c0-f07487c427f3,3502758736,3116405525836161876
+ec76ccad-92c9-97a3-7fc7-0b9236b8f04b,995733876,12344253801662709670
+ba3e3458-3572-4ad2-3efb-c0cedf5d8090,127811791,7390652256969313405
+0d7369da-c572-765f-3520-4f42563016f4,2128542996,6767161387280548583
+3a9cdbad-64ff-5bb0-07c5-6cb1a4ad5fd7,3335078216,4864947915250534473
+7b8eb63b-7cf1-7162-5b61-72dd77b55f40,3504737610,17556927320703272763
+a83a3ea5-0825-6060-6622-dfaef7e98108,3754116292,647172323398293979
+b3306c51-1803-6b3e-6cdf-d8b41e9779df,3473044577,9982477688925329074
+8577c8fa-0b05-5bd6-6004-0fb2d9a12934,437702659,9518728784549012488
+d3bfc59e-16a0-ce76-1d9f-eca976bff940,1602848802,5196575951454581754
+4be64995-cfd2-7d68-0ce0-b17722da93d2,249192039,9919811162111342877
+f8e210ea-3cde-d6fb-4d2d-509abd6e2b4f,1798677618,8076751826573581649
+dea9d940-f7fc-cf83-7fd9-fdb89d8d3e43,3008014372,15972139872905359881
+b2da89ef-6f97-3e6c-595c-67f9108f76ad,106974028,14158004559555013484
+91a510ce-bb79-c742-9f8d-8d4f5ff7b3d8,646560038,81838442516574145
+b7aceee5-100c-30fe-dacd-18ebe9d6edcb,2785781770,8189348993724997500
+e419d16c-2e04-25b9-b856-8550a1b57a99,3170530084,1986902441574359533
+c331f22c-86cd-d12c-0e72-00bcd942f2b0,2006052553,13670328911055620739
+ac235696-b419-cf0e-12a4-cc49791f3581,3430196770,8578557426011001114
+faa1f7f3-3a1d-28a7-05e2-356f7bf1a8fa,1037851999,10661045948105230331
+f5970ad4-fc6a-81df-a0ad-709903f5cde3,3914635168,17127646938409067070
+65ca9552-3d9a-874a-dc51-5887bbea77d8,452221977,5872311235840279347
+74701a6b-a325-7830-e2c2-826c0c0e85b1,1085054185,12035967388038136895
+3ca207a2-d146-4c02-0871-bda53d68be6c,2434382550,12946320279003796376
+73704ca8-71cb-430c-f532-e5dbf2f27784,1285706044,298537790595584940
+dd003767-48d5-ba9b-c310-eab11250b298,2098698433,17235819307456317930
+c613eb99-4511-5a28-74f3-a8aaab011d0d,4036112704,10330600031386027024
+513084b9-606d-f734-5488-8f989be3d31f,3352220031,6407541760742342141
+0e0cc8b4-973b-f7c3-5358-4186836be826,2387272575,11738556966969069837
+4ab1fb8d-ce1f-46eb-8526-0d31831c5231,678307036,8022737988725465264
+fe8a7b71-d5d8-83d8-1b1c-6cc36f1323f5,386357992,10712638668743515030
+d2668308-4483-ccbe-2e39-1d9d13d0b7b2,4158225422,6699184741967283317
+779667d8-9816-2957-91f6-d1546c2020d3,1937211723,2021972585241292353
+c45d0b29-096a-819e-8cc3-24b96a939d2e,502645773,4011331232875835935
+75280529-154e-63d2-7ddf-32e19e2923cd,968935531,11389430094082785519
+38d957c9-1a29-4242-f7c5-adfb5abaa35a,2720558994,4686113488104397556
+bb880f86-dc5a-90fb-3c80-5a0ebdefced0,91104922,6628009250599949428
+f5870b34-0ec6-d1c4-7d6a-67dfad6e6702,1336232433,1391414328388139545
+3274611e-a69d-d4fe-8623-02ad4c98b893,414992255,10822379293253763560
+c8438bfa-3960-dd20-3ad1-cb5c8d90a357,2239783452,17580165587263149051
+3945d67e-fb96-e40a-be7a-071a50305253,169708323,12227293592212479325
+272ad737-c1ea-2e9a-925d-554a1e879c4e,2663361290,1848376070815453629
+e8e08197-0f40-9f50-ecca-b274302fc481,182387218,13074779580370468002
+5c9edc09-24d7-15b6-8910-5477aed31e13,1889818764,3824810140120460618
+96475133-ce5d-3af5-2f41-07439816940b,3521626914,9513652343527864515
+f353dd71-a0ad-5f4e-bce9-5b8d85c118a9,478477323,777384919231583135
+ee217f41-df3a-b023-5eff-ee36fc45364a,3038563088,12067038019559762250
+efe9c0a6-6c95-cf28-5c8c-85ffc70848da,1685606498,314946162371712594
+8a323e23-dcbd-22e1-cf6c-3b2714c1ee4b,585892428,14865609965807963380
+c645ef9b-1df0-3151-aa45-64b9ff5d48a8,2597141700,8291150003589917818
+74726c8a-d76f-096e-ac4b-efc945d403a3,78894727,14850542631045934079
+96bbafd7-7ae7-2b50-4347-d5f54688e3b4,2040925869,514085304303365651
+01555d25-8f70-99cd-392d-113c9443efca,2980243020,1125438304826018054
+d70b7f35-d59d-efed-55c8-ba1c6a4fc53c,807042924,17475686957119999331
+7fee46ff-0745-da08-799f-4a7c5df9e36b,589190363,12638801318582077220
+de6cf0d4-553e-77c3-a2d9-f7a1b2385056,377264730,4621534536471164124
+39b816c9-4de7-8b23-c8d2-5daa0b0474c4,3014514809,3330286852299858019
+50f7a705-077f-2ed4-a643-08aa5c73f442,2531039962,9450775180449160636
+0891d48e-7e95-bd54-c98b-42fe5a2e4f8d,1610159164,11450796574605456851
+cd437ba7-50f3-46d6-429a-905c483bb11e,2812267324,17954108263180264542
+2fc73cfa-5d63-c922-8583-a948f3d37051,3525238685,112505706298000840
+47da9081-358e-3b59-46da-73b3743b652a,1275537972,5254134116952135481
+4d963a91-8fe7-7ec8-5ef6-51a9d61c0e19,3610626739,9124240719262849160
+3b5ca6cf-7731-fd57-40ab-6ec5ee5e169d,874738654,9705987117242247852
+dde85cac-4fcc-bbdd-d12a-6e471a73fe7d,1030635775,557246491537762721
+d7ec972c-a629-c3dc-1775-79caa1a418c7,1518012516,15772922649671527510
+19d8aaeb-869a-a652-b556-a5aaab81a359,1494256697,6358975301912550905
+e2c59504-3d17-0577-479e-57fd08132041,2382236014,8164894896044405968
+a3e27251-0cce-d432-0b71-7adfdfc9ff3e,3057315619,4973045255617976901
+6f00cb46-92cd-21ea-4dd6-00253bc7485c,84615300,3376580982662923929
+4abce08d-d7a0-a797-2628-651f352383cb,3292720163,11497633305584713248
+55e8f285-ca62-6c26-f77c-47c25674b777,2259005381,10945473757948842002
+077ed098-da42-4bd8-1ca7-e2ce48e761bb,741186800,4955712938858537715
+5d50ae85-f0d7-ee02-4c60-4010e898d452,3116914875,11105112159957928220
+67e14885-b835-9486-7410-5178b82f382d,3594418897,3133370841768244445
+16b40623-1460-7385-2a49-3c323f5720b7,2832036261,4411683368541218077
+c2b05f07-d181-156d-148a-d4f254039a75,3178697754,15717810820752129579
+9f92a088-c084-9182-a8c5-bd66d8b71673,1482560864,14904901223363308719
+0fa93d45-80ff-0eec-62db-3c65197dc4c0,4130318239,9629529264284054250
+437e8d6f-e470-6352-9bd5-52c6ad52f2a6,2606030978,14281727071775733223
+f805c55b-de8a-4388-3b78-a52404c44ffa,4128175217,9717263770194193175
+7cadd077-e240-1714-fd2e-a72884deb0ff,3541323453,11966108081563490434
+66d7af26-167e-9106-2ca7-5187912e3766,3506767269,4428842598019473647
+2552612a-3699-5f1f-1857-4790310e1729,3646689997,8268629402164103190
+fb241687-9ed4-ba28-e52b-856b95961864,1282395097,17298569536142741394
+e2af098e-e254-03a2-6332-149a5a8fc41d,810344798,14657825292433934747
+b723b274-6123-4a26-d522-7e55a28de2cd,3297671610,4518177730465604903
+023eb317-a0b9-87fb-b2ab-bbd538944c0b,545161360,9158179561856072667
+3bd6f83b-f02f-0ac2-abf1-c7f79f36f9d7,3596249420,3193932771380635309
+1634c4b5-6dcf-d1e5-538e-117982d31711,184264971,12000552155587530858
+5a165372-fbb7-64ca-5be6-6b0f9cbd9afd,3049349557,1634797773199203052
+2fbe3688-16aa-a159-8fd7-dd5e0df02532,2636557861,14437029421878278040
+576653b1-5a95-0f11-9319-d2c5591a3f3a,3434939826,17448207282468702927
+4b96cc19-6a6f-c5ee-9d85-fbd0a35b9655,700852129,3129773868431466151
+12498cb8-2759-3a3c-11cf-f274dc5a59d2,696132457,496148283997755315
+eb3e039e-c370-f8e3-b491-b5702df29fea,3321919276,7430000456200265603
+d27c1288-2fee-2411-131d-091c0580ef89,3737260825,7324393788748650741
+159f23a9-d5b8-8ecb-fd79-1c48f2b6d112,597350452,7343979578609079620
+21d956fc-0a2a-7a90-4785-86fc41c1f6fd,3608255374,2363899545718035880
+53602c36-5a49-e35e-b1e9-c9bdcb579372,2656035812,10178763817292961598
+82454347-a096-cf63-fd1e-70b946d1653d,2329696595,17857870058191515773
+f6dbd42c-4b38-0038-50c1-233c99ce9ece,943334725,10517513035755298707
+fe224ca9-828c-21e4-d0fe-9969c1285805,2496316714,7601716549075012250
+0f2b4d37-5632-5f30-58eb-6c6107d39aca,2883563284,11326118856754569288
+873f6bf9-5a5c-2712-59b8-034ab42cd1c5,4212689566,1816877898238402980
+85f0f2af-62b8-4ace-37ef-10963c8a288a,3527902843,15638551588791358239
+e6b4ce32-4506-2928-38c2-87d33cbbca27,1181492345,2058133160793918052
+1c37b137-dc82-77de-f474-bc764bec0651,3756374901,6043530107174807720
+5a2a27d3-beb7-0a0a-75e4-ff4d81553f41,998796391,6424850009187418112
+7d1a1c29-b4b5-a7b0-8998-07b3574eed13,1840712266,10171401518246756144
+06aa29b2-4f65-a194-da43-a827107f24e7,2604668559,11426991382031316951
+9942521f-6b04-0777-701c-cdf9c956ec58,3099195315,5456699422747682671
+d8ae00e4-5550-5fea-125e-07d23e808535,377995411,14725012661856157873
+1f0d06cb-0fcf-f193-2435-021ea452effd,380867467,11512358000240499951
+15795902-25f1-85de-a582-3ebd9b0d5f5e,1700452332,7313023483483176617
+37f26dd1-587f-6a19-d1d0-3fc4aa70dc7e,3854852184,7476367476847782841
+a95e8e23-857a-a658-891e-079b83c8fc37,3393059183,12099642085147195954
+e492de7a-658b-c1c8-a43f-7483ba37e9e3,1284377584,3226221436666641474
+01730837-0758-77b3-bb93-6ae5285f8f25,3901969387,3396995758266208610
+29f2e002-2627-2103-1713-f5677908efe0,2095884847,1244262993634878085
+7254e582-7099-8fde-014b-f059aeaad3d1,1693134021,2532306573035070717
+eea3705c-d87a-b402-8213-2eb3d2fd811c,1907766587,1217842208875609608
+6642d3fd-d70b-bcff-8361-c830debdcef4,273412611,8906216603980992019
+5aa02b79-8ed6-7bc5-d2c0-2bb88861921c,305153289,1199897038598038329
+6c01a417-e7ec-5341-e508-cd7597059fdb,2343424301,1895031851192573320
+cfd45c6d-e1a4-9819-233e-c03bf15790cb,249651799,3212853100986474333
+edb17154-e495-f674-6989-bb7f6f19fc6c,2235237754,3842315279043875141
+75469197-a09b-cd18-bfd1-7f80385d8371,2599235274,11669595979544718251
+5432002a-ed2b-d9b1-485f-4ed226f56cf6,3831140529,18343964408895229677
+127d5f8b-7fa8-85e8-8301-a688a13f34cf,2164843775,4535702974558009560
+3bef3627-875b-b3bc-0c2a-8a92ff9db14d,2606041664,13998599121777069614
+af981d48-dd1f-8732-09fb-9cfd5b429a6d,3326218777,14434505570606078231
+a284e7db-3a5d-da89-e062-5a1c756e21e3,2617197836,7983174878934519595
+704a5e72-b116-3476-dc98-3a70cec337c7,2406528655,8766858827137889063
+4a61ad6f-6aa2-f5a1-bb26-7adb5069a5f1,3470274710,7133753611528495336
+ddc4f98d-2af2-43d8-3b75-b4c3f5ab6efd,1442174134,6021737665013700624
+4e930ab1-1e5e-6862-96a9-4b9856792ebf,503596215,6194949110007846511
+c0712a3d-feff-7954-8ab8-e4b2b8e152d1,1918219663,16591792814491421236
+48cc533e-21ac-c615-66d4-b79440559411,697030175,14069752032366725562
+643104f7-20c4-8c3a-6421-375cccfcbb00,2090039691,13714991769425612638
+03e3fc51-40a3-ad21-f7d7-62d9cd56fef5,1527032327,13382473171639534093
+9fefdf9f-4971-3e75-3368-8164b53ce514,2351996835,10645492527074575829
+37756041-1721-446e-6f91-63ecaeade8bb,2740633029,1477637758036018079
+65eb94d5-7830-b2d6-e607-a8430d60d91c,3975916864,11784970342297455044
+4ca6c065-5e3c-eb2c-0393-70d22ffd4758,3104639824,6942042728211905821
+fe501497-80ef-3656-7972-169a58913dda,2897729849,5562367656759641631
+7f43bab3-2f62-6ae6-833d-9c5dcbca7405,1580106812,2140763811229056223
+66addbdb-5b1c-329c-cbd6-f4fd0b12dcb7,2529344875,2652337279095639931
+b923b0c7-5607-63bc-dd45-d81062d59bef,1598348207,4053680833068114767
+b8f74954-2fab-abae-0616-115330dec604,4276825812,17465224394024388131
+ccd37523-f211-b385-8b1e-60ae05e080aa,1556635324,4437543661360744132
+0920c6f3-8ec7-149f-1ed2-1ad0464c5e89,2034258777,769528613261824420
+57c15208-6f2a-0b3f-9bf4-05cd046a1a61,3500587722,15151861833234975263
+965ed8a3-af05-9ecf-dd4a-d7c14dc4b397,239922473,516381246765186769
+6ef0213d-2add-3286-d834-13a49b2e82cd,2479008588,12056652063822338486
+076740d0-dc28-0eb2-ca62-eb8f59ef1cdd,934808805,4868626081701229700
+0c6822e9-1bda-c69d-99a9-b005505081cc,3633843756,5363858986945663909
+7d061c49-cb33-5998-55ac-986dee8d81c5,2129730209,8041382531574648242
+339ab95e-a10d-5c38-d654-71a3a6dd08ee,1272473410,15902162607887799650
+584f0c67-74fe-0e05-5d84-de2711eff418,130454939,12601593921093585068
+9c7fc70f-acfd-be49-6766-9af48a024b23,3732533556,7687302095909090251
+443866b1-bb6c-5c99-1e94-1f4f96d33c6c,987100546,16559277465974117657
+52de04af-2c83-aeac-e76f-59cc0f5c0839,3366574238,13771004072262568818
+a69c6da2-8f9a-2fb6-7787-8d7a405fd1d3,2597432804,1909284828721951503
+cd6636f7-9830-86ad-30e9-01077d870061,1818609208,4457387963402030764
+8d7cf8e6-79e0-4896-3a3d-5bc22a93f7cd,4030526025,15044475779793841121
+191c16c1-db81-2b8d-cbcb-068a68a2dfaa,1313485332,13837316251713185129
+69503f08-37c6-2d35-d35f-e7aff29acef0,982477156,17611244594959078206
+a503e1e4-24ce-27ab-dd5a-c2480f8166f0,293600725,9407514677094939489
+2c456999-0937-c1c9-4eab-5d8331d36f2a,2292471251,14231304188698764365
+b17d2b88-fc0c-ee7f-4f10-510d98f368b9,927067920,14313743698716592968
+facf11d9-bb0b-98e5-a7ae-e7b07f33354b,1543174173,11750358708853627598
+15cb0f71-7cd4-9616-24b5-c55f2d6421ad,1561210657,12386105779180353290
+40ee9a47-7a45-4379-7c64-ff0befa0b617,2988362398,9751630572622780239
+2c84071b-6130-5dd7-1ef9-440feb7fc26c,2809235117,16476478683871140916
+b97b07d1-db9f-b993-c341-20da2c00fba9,49648097,15265412345611821721
+20da115c-d6c5-7ad3-48f0-df9cd69e6fc3,3000751181,11572524763865127503
+8184daec-2774-1cfc-9f5d-0408515b89d2,1404535392,15121721622052812260
+67a25f2e-131c-3ccb-7d4c-ff00e7f462d1,2037493762,11957073610081233421
+e9cf0379-823a-889b-69d5-bbeea2eab833,2538597932,14038299670707928565
+05c480ab-fd51-4d98-946e-f52332caaffa,428368348,4534800492721203218
+e6b96a7b-ca37-1755-5554-6e01d0553237,2008042480,15756927378484297244
+716040a7-1aa9-c8d0-7ae1-113b1a55ae5f,1740799375,11475602000243413456
+fd0698f0-2d4d-67b4-298b-66dd73b6576c,3801547187,4966747264167213305
+6554da28-1a67-993e-5476-9a6416ae65f3,3846407142,17202900018413074033
+385fe047-0d01-19fc-fa67-55f8e3396c23,2071204992,2893264611226026080
+bbcd1ed8-d01c-7008-3ab2-2a438b242f70,536757854,16723022429799624843
+4e05516f-44d5-382e-9b52-4a285f67aed4,1369219145,6874847703907887503
+b5b680b6-c92b-c70a-5838-204a3cf9c327,2413814099,1516189831650109267
+964f3d9c-58a8-e2cf-2dae-24850c3d5038,3896873416,7939007751216680843
+18136842-bce6-f8a7-80dd-8f4858f4b41c,469251225,8344461647364126397
+e557ac78-dba7-f01c-dd5e-f1b1e1798bd3,2264094964,548242829457017148
+4068ad59-48d4-c65c-53f7-e65d29ac8a42,2924554435,4938400611569721343
+1bd4e0e0-d924-787b-fbc6-54440b4098b6,3079545639,12189689305005625063
+34874ee3-05f6-8821-7c73-b91f9958ec67,1555152130,3946119696799673908
+2b77548a-9f2b-f63f-a04d-fe3c8e7a2ea8,2882134257,9695775240702197992
+6160336e-8138-7400-6768-d4b426e9af9d,1338379546,10343828552746068079
+aa369e12-c7ae-8dc5-4290-d899562f3c53,291336873,13035460471840072887
+46373230-0059-b59d-913c-74ff467476b4,2561232485,6443215534643189348
+ce63e9f0-a6e8-c5ef-4535-97ddf472a06d,292969585,10941938350713723899
+7446a665-b9f0-f197-534d-b4586a988d79,4103511859,4300486667346695391
+eb213d85-f11a-8b37-0385-5b4e01cd4dcf,3569218276,10843579038240983353
+89be4e08-e05d-e14e-a8ee-6aa501c0572b,3132408591,4889881556400424924
+5f4a9727-fb55-3274-44e0-0caf7fc60f45,1207855203,4059174426738991720
+aea50b49-67e2-8eea-331a-d6da12de0fe8,1793951182,7408734379643161022
+e58f46c5-5f4e-36a2-928b-11dd5367adef,2867575883,4018708263863743195
+f522d917-e08e-01a2-0cd3-1c78e745f30a,3194422215,18379945493465603322
+18400bec-5e59-8396-8da4-476e0aa6adc7,1740601432,12034071185051925527
+e5abb07e-db50-a212-f5a1-368cb433169c,2429905470,15019286295227964879
+8baf4581-c4a5-38e4-0948-6c27ca32721a,2817970110,3694269908004593940
+c423830c-1663-6d7a-9974-c619eccbd073,113473847,890148894537516384
+77cc1b4e-bb50-ce25-5b23-5c67df3e81ee,1336819058,2022722341347897253
+c650420a-a391-7190-198b-6f68d0c26fc2,2467617535,12623907204122154350
+7277ca6d-e7eb-9785-3af1-bc376079002b,1980435177,425063868568771306
+da4a2463-bf36-b6b4-8539-f81bed984685,4086237662,15931839053435742516
+23043a18-5aa2-2237-49a7-1a1c38fcbe8f,964081582,14655822412067384254
+e8332b9d-25af-97f7-064d-e1bca70b1f23,2613571646,7788602086839343237
+c5722a5b-fbb3-426a-0158-5ebb16255dc7,2697670963,13280034952402330985
+4b861663-ae48-3308-b908-d21a7b5fcfa0,371572664,9826312084688016186
+89494659-4928-c670-5b7c-ab746aeedc33,1463664556,10159919080692185571
+3fa3c991-9b9e-9cbd-e331-52acbbf2f2af,2779247852,2704264672096611072
+4a31d951-02bb-50b9-4eb9-00fd413b98cf,2437623531,14437762339059828606
+fbbaa0f7-a845-b19e-841f-e3674e52a360,905939744,15501145419148749015
+4b4d84a1-770a-4656-f6e0-6533e8c5a787,3780549823,10752025354804660148
+84d7a72f-c119-1539-5fa1-259219f89447,341025484,2940027093506480803
+5c5a3809-d010-843a-9759-715022dfa8d6,3197283859,13248814861024478915
+e51c38b6-305f-a492-1e43-97444984d518,150324105,9242432965994752077
+df0a1a38-998a-5332-31c4-bcfc1464f011,49275075,7012696869293684124
+6fe13107-fcda-967e-70b5-376ab819c108,3367549949,4900345889733737304
+cd8fe584-88ec-16da-cd7e-effdfabe7f8c,1190301392,2596226692088544690
+13cb5e06-4fd5-e989-2406-3c2ef9d63875,2525582675,5774913520420149139
+8216c940-0a60-0d81-5c8b-23553c950967,3098039836,1370724359297893544
+8dec4af6-84b8-c46f-5ead-254dcb9bf4a2,3617549371,11279123181257277106
+9e3f44d5-6b71-4c46-c0b6-da8cac30d29d,1168934519,14843703707403787975
+da6e50a5-fee3-6109-c7dc-e5f2df535161,948578954,6069196704425330403
+7b5a2abf-30e9-fff6-27fd-b86813aa88bf,1645199655,16399861627990887023
+ff0ca063-e701-653f-7f46-f58216e81aa4,394200776,14744324062786374645
+bec36581-0644-7362-68a0-789e31b921da,812441285,15301673494866661057
+237e3bdf-99a8-5abf-6477-d79f32a740ec,1174561359,4448881840320515278
+c944746c-46d7-a0b4-e47c-1f5e0cea5919,1664973488,6291544381963353034
+26d3c37e-4d50-cd51-4ef1-dc895d19b73f,3391390030,5516152335747290601
+825f2a20-a7e3-f528-2636-db559fb057f9,2101933774,4793043708052657476
+a1323770-7637-0d42-fc4d-b56fe1bacee5,72241725,1252211840961342540
+c92f7c1a-a649-98c0-e7bc-f8852040b462,3991156437,16247714519152313335
+e75b8d07-6e9b-b780-7cb4-700d4cd1fa0b,1808770172,15279339936848124054
+4afaba79-9d9b-4407-68cf-27a3f7fd83c1,1487516414,12871745141427313783
+c25e1194-4b4b-bc1e-2612-bb18c5bc088a,1525385228,5412454058275642764
+98fb16f2-78d6-5840-db9c-42bd8784fd01,1397361618,5230921312962801391
+41e5993a-7418-2b51-c0a0-4cbd5fc7e042,3129268504,2953878888112499272
+ac9eee28-3f45-a26c-eb4c-2aa31242937b,3452519425,2217810224062119670
+9632e9c1-3555-f0b5-88e5-2937bc952eb0,1057036391,14846114476473872380
+dd99ea93-5aa9-14e7-1370-b164eee68047,1298130377,13799330999605082259
+5c680d78-0b3f-ae48-95ff-6ae3af70ea12,2460518164,7211146861083636908
+6250a086-a176-c760-d9fd-548c65059b6b,527508369,2800378602725835116
+86de25c9-0eb8-5cc9-6c00-4b3b04c31b59,1667947765,13357921176914749250
+0da2e50f-50ee-5c95-f5da-99f2c8c9b593,3297791377,1746945273461452775
+67a4d200-255e-7bb4-1ec3-4e86870d0a6e,3038194973,15208280826446280891
+3888c0a0-c59f-d86a-ccf9-95d06fb2ea33,2250223267,6053780085443595450
+62d558e6-8190-2203-9f5a-a22efe8de361,45748308,279578941912004538
+21169250-990a-25bb-a3c1-52607fd0113a,2001813938,247539405216676121
+94d59007-0b83-59a0-2339-71acd9c4b390,3817568559,5892981119623049648
+9ede2276-320f-1320-3875-f900aa103151,3724002666,14388382590278213560
+9475732d-2d82-b098-fee7-ae9933a2b056,3083480159,7754093111688294380
+aa0574ca-d717-6738-fc87-6fd8b7e43c99,3665468089,4938446634087175257
+755048be-660a-9845-f3dc-030ed2f7557c,1182808878,5892267711246000497
+cff1bd20-fdda-7793-4b31-ed780329bdad,1490243464,9822797011726718215
+aa5eeef6-04f6-bb91-e458-96fd86f8bfe9,1097251339,6032934055065132592
+ec15844f-6987-7d30-3d8c-fe6fe1d147a9,3986109237,16942462734022811596
+d63334eb-c5c6-3fa1-9f00-842f2e63906a,1418906063,2672841170667958805
+f3febea7-e7b3-5769-9442-d2d65fe341cc,1837801274,15588211855543163663
+16eff3a5-ae7e-71b9-5bc6-c58e9844c36d,568112160,455389967969050675
+63fbcfb3-033f-0c37-3852-05be9dacf1b3,2735078696,10605581390009314324
+fe8994d6-f73a-b912-952a-bd161cc84288,4198393739,18242785265177899814
+e272f0ad-75f8-de9f-9eb5-989122cdb160,2448078441,9560409535835565994
+947df24c-6cd1-b23d-af7e-d49fca62e3f8,2102077282,3840755151748838373
+6380022f-3e8b-93a6-fb57-8d9bed0a045f,1838236276,6562367897670775229
+82031b0d-b528-d9dd-60ea-df14f9c0fdea,397910728,16662991786259665921
+2937704f-2eb6-544a-20de-a356f9dd9963,3237341029,3585963910963474172
+e321abf2-1387-c2ec-ea30-7ef3eedd72a6,1463411239,5052450649276463226
+c0f1d4c9-62ca-8a95-3e20-d34a9ec10675,2239608833,7048042736155097065
+1dcc6411-34df-1000-722a-202cdf07537f,2861297540,2458520307569340076
+b6791585-18e3-7464-1e89-d19318509b1d,2461877553,2236920023215293741
+f4bd9dbf-387a-a074-0606-6b4e0e798f0a,1192536625,11203887652411600213
+f0aeed5a-e7b4-a55c-5ffe-17c5798214b1,1766248380,3137398891626849276
+e4bf2d4c-71b8-f660-1f4b-71c3cfee4955,3176721778,2173713754159541408
+c3d2f143-f476-d641-3d26-03e742bcb162,1871997723,11737049079507593610
+13aa1ddf-c55f-5eb3-33a3-1c8718e162e5,3228365155,14684700044983483587
+6a1c26ea-aca3-4968-7c4c-9d657a34babf,2476112911,14901973708326406267
+a00fac93-d072-5056-21c8-04cde1017f41,2583875109,6696833420526421335
+2f43242e-f8e4-51ea-fa3a-cf29a9200718,3831784129,17426337102602502406
+14bc1833-3a11-a36c-18b0-1a391df1eabb,887792314,15594285842118199929
+8983a4db-583f-bc6f-d1e8-3654b891f5d3,1555008168,15379024414577137969
+20780bb5-5ac5-3475-d3a9-773aac420cdb,3395103391,9479060759003102500
+7acde7e1-b30b-54e2-4773-1202fe143250,266402316,10627139467158074544
+9d9b724a-8076-8581-c4dc-403aba53c953,211695534,2628947882351714203
+e37acd3a-ebbc-8026-3ed1-ce76a5471d7b,824072253,3869803365862162158
+9c193222-f8b5-37ae-433c-206928f2067c,1628403641,5900604584161211963
+700a9956-a999-74e3-6832-f5cd6537f2c4,86009795,1165569241192998573
+60f18407-31db-b1ea-a1cc-0d5fde2932c9,3050210447,13704636779017118772
+06fbc08d-d1f7-e4bd-3304-9ed77ece3297,2054512115,8094287281561885342
+81fb3019-c152-7ddd-f0f7-c9727f603abb,119690790,11052727694113470857
+65ea8f66-f277-195a-c593-1bbb2d343d4a,1277995162,6595112646063973888
+b2e30879-9654-90a7-1689-95aeb932980c,2995690814,14189043057154920205
+8a178bae-649e-b76f-11c5-f4e0615002ae,1413831561,7971979854718213457
+37e0adc4-ff8e-dfd3-0d3a-c5e24f9ab272,1046136620,17099146613849468210
+b3f3e1bd-383f-bf86-b07e-f08013e7f1e3,3243288370,14149287983332527273
+2e27435e-3586-d4d6-df6c-ef9dbaf8e4e6,2140752991,12795244499605327589
+75337970-d838-59a1-3969-5cf9d50bc9e1,157878369,18250489569770032219
+4eb8f86b-fefa-76b9-820b-2f218043fbde,1120240781,16667015800048051990
+f8390b62-cb56-20e3-83e6-7754de10b6eb,3875130091,1629132501175221488
+21820e13-9014-4667-04ce-7df537c33644,4021345845,1292292604545532165
+7b62c299-7599-dac6-709e-f27f65021c76,3669442296,16702512305792485017
+caf78d6e-8a81-4d1f-8fcb-34afed33bf8c,2350235979,2949838186891375220
+7c909e3c-d3d0-2eda-9a12-5d1308020699,3046178132,6214328887768800926
+b1636fac-c699-d5c8-be5e-f2d6b82d82c9,2041405301,1672225172057893985
+885bde48-948b-ab90-da5b-7618cf5c8d75,882117506,2841686714846828590
+95efb896-6f23-1ac3-8447-131afea56a4b,2922491812,11440830890595088346
+2a06cfb5-e443-ec99-2295-a95a422c96e3,3748184800,13539183765857307221
+2f394a08-f537-24db-c93a-a80ff5f590cb,1967804061,13996335086890577004
+81bfb134-f065-fb74-a6bd-665c73e3e8a8,4106578547,15004020971829182909
+fce4b3e0-de06-11e0-fdd2-d6c82d93640e,3290356747,7152914689625384627
+126d6bfb-1196-a631-aa94-e380c0899c8a,2203776206,3104238673449116937
+8c49b589-5e53-8da0-4dab-6052eea11f6c,3537347091,10833418992090847445
+5a31331b-9b3d-cb7f-3001-2126888ad7fe,119035299,4762349136829980825
+17dcd8ee-edba-74ef-efdf-ff354c7cf6eb,1488058202,194008010854661301
+7579811f-41eb-fe7d-f6a6-1cfcfb84d62f,3846856930,14852342626818195287
+7a0bcc73-1139-0750-a47c-b8fcb43ea9b7,1237307260,5581253800921672180
+5f9688db-1c0e-7b67-3887-db188554a3a0,662739018,5476500551465822952
+c64f08fd-fa76-f7a9-254a-a5aa543d2d78,962716136,13187777670447771506
+bb63eee7-9bed-b40b-faae-6517f74dcbfb,3829377413,16890383656410212745
+bf77dd1b-b559-ee9f-4074-dd1c62e28a14,2380080871,5274775943900333931
+84a4d3f1-714e-f952-8479-843ddb823be1,2297804472,6508479365123334775
+8c7d5641-60f9-4380-56a8-d7c403f9756d,1205781479,718628747761324336
+64da7511-5577-a1b8-5040-cda70970170e,3510169598,3950580030293194577
+ad861cc3-668e-54bc-a00b-0fa2ecdc1667,3525862996,5227016845637325941
+e3f52525-0330-4677-76ee-c89d40030d65,1761802153,3782652616302263551
+00d9be77-e411-992e-1658-771907724362,1793973077,3816294987432890375
+1ff2b0e1-b6a3-1ddd-cf56-63472d2895f8,2343520108,16852352851800542468
+942cffc5-1d43-1985-6783-ab30d5ce9ebd,1634737371,8242720442108205244
+457ac7ed-d1da-1ee6-6d74-73e3b6ca0e86,2348776299,15400171491610639042
+3c186dd2-0790-426b-584e-ee020ee7aba6,1862132519,7036240941675712601
+116c8627-1963-afdf-194d-cfb27b76b5e9,2279310729,5033993753571191102
+59a8c220-5988-6686-1b02-ea787adc425d,244239131,1156323496323302552
+fcc6f77f-f090-e1db-1216-0e6830da59b1,4038481667,3515238204816589962
+9ba2ed48-b185-909b-0ec0-943149eea6e8,2337477637,12836448293782218731
+fd602c8d-32dd-523c-26dd-6356b760c480,2232787468,4149754138719714168
+4208d86a-d1b6-3045-f937-3ac02b144d69,11628407,12898567420372339650
+f472fde1-fd00-b042-43b6-d855ab38e6f8,1895200053,8755298995519772728
+a876f88b-cf39-3c63-2e22-4b075f67371e,720323667,3049732354215060844
+1b0d390b-4ddf-600d-bd29-e2bd02fc7613,1964959449,13598020564964432222
+f2e47842-f94f-dec4-bc90-3cad10f91fd2,2646193871,3174898724176259665
+1a4d8109-7c75-192f-50ee-e40076897ed1,4013384585,609000913436823349
+f3d541ad-28de-9ba2-3bd9-c774b7330acb,586738316,308726867651302951
+87d08874-308d-97d5-2774-c59134f5894d,1117685821,9744523892521265926
+e1618229-3cf2-9b80-697e-3b6cad1697e8,554047455,13434163871673621627
+ad143359-1bf0-294c-f8c3-688baed1bedc,4061436327,4172347734037390400
+1129b609-33d2-9f25-6e99-6209c7ad106f,3936108805,11970184521274085385
+4722cbba-796f-f81b-5374-3035d1366093,1390542541,1922302458435625784
+868424ef-6e94-19f6-3a42-b006092c9ec5,730643659,14003486216853036723
+5050ecde-d886-b037-8258-c00b08eb2975,3874524866,13953923536471090476
+e994a571-bd39-4e58-b1d1-ec99f7d64874,188214191,147362208435629102
+420afe45-bc3c-ea6f-94f4-cce6e8ad3540,3265976384,1259269230536683418
+4b667b81-7c42-880a-0841-c3864ddbe16f,2715563926,17459181182279043037
+fec52f0d-908c-0bd9-6c2b-74933d312fb1,4175106129,2455454282227987850
+5dd857e1-b50b-a691-1a06-c9fa25509fec,1808139865,15530800074632036476
+601eac7a-8a1c-be1b-0942-6541b6dc1201,2174764054,6626852020477026895
+a971be7c-5300-abfe-11e7-f8403897e1e5,1927598766,11555724725657832721
+8d6b76b8-ac08-3de5-a772-33f82b6728db,3802385887,14297117407695550405
+db39bfe2-2d1e-c24b-179a-34513c10dee3,1865144337,2235846613251464295
+15ac2d83-3cb3-9209-b2e1-fe5b4405393e,1239824546,7919704648227241192
+1738bf78-b7e0-6a5d-704c-c46fc230df54,2169317037,160559657000508443
+9e2788c5-5216-b834-4277-daaa0bfbe1d2,261901641,13792339789761941403
+35b77931-28f8-0b9b-a72b-df40a067d3e3,490877520,4942295882102586314
+b6145449-52b9-dde9-6f59-9be35484eba3,2706460222,2947228647102104423
+651a62a6-f6e8-b800-1fb5-64a8e94b4661,2757144250,11501148906914294488
+91ead779-62fa-859a-3d31-98052ee89202,3029389584,15006938325364443173
+991cd79e-96f8-dff1-a280-7bd0a926382f,1590583259,12249865982376040054
+e8b3393f-7c1c-5815-dfa7-b774373b0d4c,2587847193,8717958601904012111
+4740070f-36ba-434a-35b9-a446c00bdc02,2214290713,10652272470724039248
+4fd1ff8f-4589-3836-6105-a5a1167e74e9,3602282482,2770637256760126310
+215c648b-413d-1a13-9a4d-7012d213c056,130603232,16094786318718477973
+3615225b-a4ba-590c-a0b7-3eac45359858,2538670595,10150446170749026684
+dd46c703-08b9-a9b7-2f34-0328200928ea,671373856,5280439984530652278
+41d0a78b-5dfa-3eae-ca5f-5357eb5e5fb3,1786955997,10586809769848000970
+5a1ec36e-023c-cb6c-a4e5-8e17e3fa5a0c,3531608857,10372740384550423026
+9e2ac3dd-2b31-423c-3f6e-294df90a9a54,2032714191,10379413621442072820
+dc552826-4443-3eba-292f-353bb07c87fa,2891630567,15307823478706672627
+80d1518d-846b-7d57-37d9-bfcb81caf858,2558523870,11953275956684586348
+d32036fc-745d-990e-e314-e458f036bd4c,3532865081,3109951487357276256
+7e9cd5ad-3c41-c9b6-ffa6-6c026122bd49,3492512122,17591126675052197000
+1c528401-40ed-3046-1ecd-df4056833d80,1939477800,17944110192088378147
+1ca21f73-8d3d-c245-8148-a841c22dfbad,3561510461,17500050443719417072
+9b202e61-9036-15ff-bbcc-137ede15a554,4252140325,563760277047483476
+46af3fb7-1f4d-335c-b9fb-11d8c76d463e,644493271,12639149709162890232
+01575ed5-0388-a5bf-4ba7-f7f2331e746e,3375796931,10493096682695368275
+aa73c696-3767-edce-fd7e-c1dba05f0e86,76429461,5869132076334182118
+cbddc6d2-6cad-ba31-8a66-9441f9f5f8d2,68478687,17584963335960446097
+80245c9f-f02d-8c2c-c885-7822a49664e8,128820123,7896618655291586482
+40644605-8c18-f4d6-7bdf-ca04f378b7d0,3841535443,4690742707195991212
+cda8aa75-4e99-a28f-40aa-0b4f71c98781,1805877474,14420521542538868606
+b393fba2-4018-2050-c690-35def78ff3dc,2178987014,17660990904148436739
+bfd887d8-e91c-f4d9-94b3-0ba7e3d6f8b9,2926317393,16960758294360598891
+b5b5ff8c-8630-947f-40cb-919a7589cb96,400173384,6587408581826892439
+4e07a5ed-9669-20af-5a0e-6e6c175580be,3342367525,15367879793531196637
+22c3c713-20d2-0d9f-dd7c-52d10d2968e2,3170826588,5900777095498795135
+89a4a587-1717-7fcc-53b4-f14954b25ccb,2291050545,37834889336826839
+e6de63b9-0ba3-d95f-5b83-74494da1bb80,2033942714,13613076726935439627
+9e9460b9-47b7-274f-babd-c051b48cf8be,3428874642,3821757241619457253
+9deb2478-48d0-96e5-5198-30647c5553b4,987490965,13511224509495118115
+a5035cd3-b8ad-881a-761f-3554d1b903c6,77660448,5775531043918369083
+7befd7a3-89ce-c41d-e7c7-eef429d5bda7,4208207471,1660280151489080466
+e39e6fa3-304a-77ad-f9b6-46ebe78cd90b,1500339454,12347657133299875954
+f1a9ff8e-b420-a2bd-8b66-c2b3d4bbc8c7,2659689913,2908844123434760476
+e4303c28-1299-ec7f-ba19-6c4e97543391,2157665765,11879658486381890413
+746c16aa-e4ba-0e61-605c-4e4415897c6c,552876758,5888529326643354217
+01099bd2-c621-6a06-02fe-6c46565a7601,85549165,18064534997623777078
+175ec78f-a026-f47e-38cb-4825a3106e74,1530574418,3761908060207812439
+c2cbb43e-0fc2-c85b-de34-ffd280ff0faf,2857127016,9320327546252096599
+ec402efa-10fe-b069-789b-8978c9c6b20e,3159225482,16100672280720173469
+24643833-3b36-de5e-25d0-44e251fef27e,549647393,15482971564403782160
+a60fa876-dda8-1f79-2640-96b6334815cd,2153664044,12474752471169752332
+e804942a-093f-9bd9-ccfb-7af69fb0190f,2137530962,15523629906464608737
+fbb94138-ae4c-fea3-7732-1b781cf7f454,2881973642,11094467714745685089
+4a83f14a-4ef6-cee2-973c-418dee4f6e3e,3405421836,9492934530507474518
+363f2a06-1206-0eca-63b3-de2cd19b7b66,576375637,17353277056842800008
+4a531f14-8f1a-2cc0-2f54-c757cc102c3f,582234541,8651107657670201297
+c9b04d75-403b-0f35-7580-534e5583eb67,4047233143,8817643508886886950
+4b18ca4f-f499-94f0-df0c-73284f53c662,371002103,3184369547081787460
+6ba88664-5294-29b4-fa29-cb0dc0990f6f,3266209020,3695051939638619560
+b13c4c1e-eb5a-2007-5e1d-7a19562cc8fa,3330435666,3248356037498042253
+5d903ce9-b128-eca9-aaee-dad8b632d9d4,1203335819,12606588514927385296
+11cb2afc-b048-4838-a7d4-d6f1c6e721be,204472297,2270570794096515490
+91fffcd3-73a1-fa51-0343-2bb32b52ff5b,3612781630,15555612817908444086
+21459634-007a-0db5-00f1-77c264698b4e,2164331411,91069859648118204
+d17d4e65-e2d3-790e-2782-c1007345d60c,1453521887,15352031896622473467
+289f2bf7-ebe8-388e-72ad-9715e6b2e1aa,1956855317,11679668135102020431
+7bf0db4c-7dd8-7d79-f970-66c7c17d70da,3437459102,4873628251111719999
+cbe6c358-0e71-7431-4b12-99992adc9dce,2053419043,11490902960543888839
+ad55c09c-4c98-2601-c92e-2bb151a8ea3d,4103925155,13222955198886704528
+5110e688-84ba-3650-0107-83e917975b63,2101155368,3799281256996436138
+a0489c51-d75d-8e97-edb7-d8d6f30a8439,4003585816,17218541183085581771
+2c5963b0-e8d3-977a-918b-97c191aab976,1362801017,16689964668257069848
+a921b197-3a29-fd0f-f8ec-f2b7b4bd80a9,1722395040,1973737221222262582
+73f756d7-c624-fe5d-61db-4e9dd4dac6db,519684903,17136894907144633788
+ff49f473-21a6-ca62-c0da-7db28b629cb9,537371617,5267297002805037844
+1f74c0fa-ac44-a532-cb09-a88c48ef3561,1086242189,9955553195507077564
+e3de5e46-bc89-fe73-5315-804ed4e2c3d9,1201639769,8716001772549099196
+d99195fd-61c3-fa67-e66d-0ff6c4c69637,1085465766,3394742418464171806
+3d8f4cb9-0bcb-cb05-b41e-9801eebcb518,2987289614,2850253785583305840
+548e6169-221c-3fb7-bd69-699e8c64bb23,3898674299,899300498114020258
+058a71cc-acd2-94c9-08cd-513d7e461241,2584357281,16437469324073742618
+2214f0a5-e6b0-a832-c82b-a4f0e18bc235,2532016265,5924886788413766944
+d0dc80eb-0a35-ba5f-bd00-64f71a07f45a,3687600336,9093815050853866286
+8cd05ca2-0ec6-852f-277b-4165e968fae8,2455474408,7857789307182724446
+4a451267-5942-f6de-b93e-0aa5b61359cd,3458413521,15436205798719884379
+6a442326-34df-6929-5f43-454e4bf096c0,224856154,18074131714239022614
+57c2ab19-e239-2821-bcf1-a9865eef3fe5,1662989250,7241685424653291728
+e437af5a-cc7a-0e45-8870-c8e2eef0cc15,2898133908,6134761773951813384
+490a9da7-ff5a-d4d2-82e2-3186b4acb8c8,4202583647,7703946752375228138
+63dc9689-5c8b-e77f-5a69-10e06a301a99,2799169157,4011027404613103387
+9904de4e-d17e-7663-9183-0f29a96d5567,3595949602,15996105001596283811
+37526517-51fe-20ee-762b-abe89153967c,3583891551,17002040438971797682
+c9d72225-2315-2bed-869d-f7e75fd70070,213054944,16542645106827862442
+4a9123a9-4544-b843-b607-c84241dc44c8,275178327,13006492610962385642
+0fa5f5b1-54f3-7a1c-5cd2-ae8f6b0d41fe,3572237771,8319721638050735543
+59f9946e-2b90-7785-2e14-5b4b629b8d8e,1847424678,13377262235315797351
+6442a637-793f-4a3c-a384-1be6258a808d,2165111221,1542158284986944400
+5af15cb0-5ddb-23ab-0832-78bee108bef7,2203026020,11026642256433557369
+a302bc32-f192-25c6-37b3-eb8df50c6d25,3822787369,7103500616812660316
+9ed72b7f-0088-79c3-8f53-c79c2a1a4279,1272930377,4131892721703335711
+db0dc554-43f2-5cde-a9d6-102413d8c612,1120587180,16477556547655865831
+5e1034f1-dc37-41ec-4ada-d0f69a853b70,1641575470,11991764144392343235
+8d482364-7d12-e06d-2a0b-933f7aaa7e0b,2283312179,92599929301276105
+ed70de52-d039-3b90-42c1-0676da3c48fd,3678773841,1416847712662021742
+fcfd073c-38ca-fd99-ff6f-06ff09263677,2032378232,15213141831704726841
+9bd34cbc-103b-8a1b-cd9d-722105bcc3c7,733742969,17491197530483029459
+1adb82c3-7959-8d64-b685-8cc7c7fa61e6,810902972,1992359596429202878
+90522c8f-7862-647a-1f6a-20203a4c7c38,1613507599,13706861943982044864
+2fb57035-111a-35a3-9aea-03ad0b37f7e0,2318824233,14732604750011573515
+787aec7b-9a8c-4596-bc74-06f3da70ba63,3636865719,6163834622194440669
+52a52019-88e0-351e-1ed6-5565b9cbdc45,211930726,13515995905551426045
+5307d848-b793-fdda-bd01-b837d6b66d13,2941107762,827670511042189201
+de8a2b65-ba37-9d10-fe9f-21e174840a77,605411214,9116055164571831057
+73975ca0-380e-07ff-f07d-517667636313,1942311421,9525659165449132550
+83605f2a-b4a1-bf54-8d99-0967a8a3e336,1470371586,16613824937586303725
+69270e1b-6fcf-629f-6858-c91ee29a01d7,2101470115,9960715441294536038
+fcc0bacb-7329-31fb-a2c3-8ac17ee8a0e7,2976751787,14681188400361340554
+edf2a05b-6a1f-541d-b02c-c2178b967020,3063059727,4301951146010438978
+caed2462-d700-c640-f0e1-525f515af012,3985717536,15136512858607420188
+65eb58ed-89e6-9dee-ebfc-0e11975d7709,567550332,3092223118599240299
+2871fcfd-e854-a586-cf6e-a34e5764f8e9,2508543109,11335422984845076800
+914be70c-3e5f-09c4-9a36-c6452dd68b94,1146375870,18012425594475483817
+e273bc7d-d3db-083a-875d-b34e584edbd2,1306609630,9411255519528728960
+aaadff23-bd2e-1d7c-427f-47f7024e03ee,3722723465,3831243687235493421
+551fd574-1278-2ead-b016-dce6ab64c74f,2571012488,10239665476278569204
+75d45ef4-35f5-45bc-6347-9d72eb69224f,3467106244,6132987445445933799
+549d92c8-0523-f0c7-3aea-d709f490bfac,3393328833,5551800222054183927
+4e756453-f3e6-7501-75ac-4a9b24f956c7,3153894768,14050138428906469851
+1c834b85-b26d-5018-9686-29e9117c5bc2,2826854631,18136488583174804532
+625b2c98-f562-658e-26d9-7c12a3a1f9be,1099658600,3432065436763976838
+442c6352-f72b-e265-f19d-f37e6878cc93,3380824464,13919757524003944692
+3862f649-3a60-5558-3afe-58ca3edd5a53,3358596597,1503725749242005831
+bced0a5a-5a98-29af-bbea-6ba3a273e27c,3726225673,6424134530345160215
+e5997528-8fef-eaf4-85fb-9fec5ee9a91e,3128669157,14127117145955904366
+d2f00a5a-6b6b-c428-c611-2ec968ef6347,2716094832,3638960980464281948
+21be0935-e55d-7da0-80aa-5bbab6399d07,3691000027,5816015772935016100
+5429a3ae-a218-7e59-0bee-11a3eada18c2,3244212082,8097955649756001560
+880bd1f8-f7d1-62c4-d973-7313433e0247,3398064544,17336180342008959222
+a5286240-0c1f-421b-1211-499ca7543dbf,148971764,15939734141828202318
+9794bb80-991e-55f6-3fc7-4e1c36affa86,680845961,13723919530962478371
+30f97ae7-fb41-adf3-b19c-b8fcd97868e0,1502264341,16020667512179882669
+0d6b2da3-1cb3-d4d8-d867-7a435ef97fb0,3566444114,16855374941136484925
+37515211-a7e4-6515-efe7-f6e876c74727,1169472581,10221468641679944833
+4b559cd5-8d2b-7345-5475-b8f059ce8de4,3246712179,6791879062853746107
+b267f336-60ff-bede-c7be-70d488f34665,2449187287,8002430767724306475
+2940d804-51c6-dbe1-8a77-8aa587db1640,4053296711,12909908253401955350
+50cfe4d1-3780-0424-b254-06480c61fb64,4240627859,7622266054868441735
+e0017222-adcd-9c7a-e46d-b5ce03b21514,3477691508,2543915658733411912
+3cebf3ba-35af-0d55-0336-9c9068aa2d1d,3902795941,9872998537475418706
+4e998812-d5e3-9cca-22e3-6298e15e6850,4126010253,13777108437028716906
+d24845cc-2a16-88cb-cff4-30afe6f0cf32,3435947201,3167810766805267801
+e72bee51-5d42-ce43-ebe8-c511d5bd34a1,2524261372,13409506186677827940
+43dfd69d-7ac8-a7ae-53cb-290de0f76051,2914973349,4873807466330726338
+b39feebb-b780-4b52-f030-8c52314775cf,530750168,6151956113867085988
+0d866cc9-efdf-ec8e-6e10-3580fdf02e26,1991778986,15590276811952750514
+fec6fbfe-eb9d-a96d-7a89-c9465bc9c52b,582461382,15720561253071929618
+a05fcb5a-26e7-be09-df8d-106db85b56d7,1479884172,17096451940131403617
+ca27c3a9-d662-d0ce-9d2f-97cb60ca5a1b,3745261229,3015512115023824872
+b65dbe2a-ec30-538d-7d74-d7d11f7fae70,1764557781,4137320404513380301
+2916b7ef-9add-548b-237d-374d5ad12c7d,2184268636,779425190995831836
+1e0c6ab8-e6ff-bb79-fff7-3298b0544d00,2925560345,12698019801363284553
+edf1a1fd-3af1-85e2-4be6-f64ea34ee2ee,2040272434,12345515335218865315
+9863a9c6-a2c4-e45a-5653-1c86a3750ae5,72626792,6348876014792156724
+cb2708b4-8fb5-e209-fee6-691b478992c2,4066468143,13995924917322060312
+14f82921-4e59-bfa3-f8f0-74481ee1ed2c,3777715665,2833245637651622527
+6d889e96-a248-e703-1ad6-fed5d7a64e7c,1264410868,2781101823227061742
+e9fd5401-e043-bb1e-134a-87f84427277d,2938385780,7443984457177946136
+0b83a7b8-d81c-0c8c-52b6-3725e465bbaa,3507247646,16165206042079837428
+2044b495-301f-e353-c7fe-5498ab76597a,1628173999,5663947820418544864
+8dda7512-ee1e-ee2d-498a-333d63cf16ac,2215074773,4770816741350541534
+335800cc-eb13-2670-a57c-a4ebeeb093a3,2635572980,5522801870528084231
+e32810c2-27f4-0cf6-aaae-fadb6af51ed3,1778387239,2787171276195743672
+f2821e75-7326-7cb2-b149-d373fd30d9cd,3392961883,13696447931750468217
+0b3eeef8-764f-b0e1-afe6-f84b5c26dfba,852150726,12916741753496602150
+4913d58e-0aa0-3765-25ec-5803eb5f19b8,2723133978,12340971130870114333
+7f8a2569-0475-19b7-528b-2168e9d7f9bb,4100788776,6548388033684498144
+aa5ebb2b-9bc1-dfd0-73cd-cc9c6f683f0f,2234088670,7192478667040341628
+315820d1-bb28-9cb0-da7b-9e9a9c223ff2,873857715,17992210438244727740
+e7f2edd1-08ff-9ae6-39f0-21e3921e0293,868739742,6894593665939629366
+7046882f-c64f-20ed-2e3f-86e43dc0715b,1316818847,11453904054125929198
+d914bcf4-5a51-025a-807e-93da172dada0,2056217619,2200827635596409581
+291de4c5-bf2c-6b18-97c1-60b39407ba11,986047192,537206681689557611
+2843e125-f4fb-c725-129a-6cd92adb0786,2372996574,7369754466231291872
+ce394d82-8a07-4cce-b586-6bb79fbabd79,940786041,8560374758340680265
+6dc1d525-7906-770b-d85b-7bbad3689f55,3114123514,4335186988328427860
+c657341f-4c95-312a-b956-866211d43cf0,1078476,2404708477189653952
+e834f39d-a228-8241-4719-d69cc5153a63,3613408794,13999998198847321949
+ca7f4476-2743-d674-3462-5edf8616cf1b,4070528794,11328348050614702499
+5fc8ff35-2321-3722-02e4-1c92b867b706,1273608371,2950647015970849662
+636694b1-817e-1d4e-9015-705e041c73cb,2618524705,9659461199455236769
+a785cca8-9553-451e-31da-d4978c0b2101,2437051412,13997705706732416513
+4ba3eedd-5824-91d3-a28c-70fded74c225,2031091372,4470626955018956724
+e86cab99-0780-ccc0-7dea-db3f0b26cd0c,2718403295,6113931404107664857
+bac3e895-02bc-b930-a16d-ba34f2feb0b6,3703268935,16368962227079823895
+97784d84-e126-faf2-01c6-4085baab7739,1654888041,2039453690396050313
+af222612-b18d-a9e5-84d6-c61ea0677d0a,3930524381,7852377045755532921
+bb23a2a3-b065-d4de-aab5-5b62344972c2,1069692798,527098129803119031
+4ea860ac-ea53-7990-c76c-4d5363241c8e,3422723076,15643002951377370525
+59b3b543-85b3-c71f-aed5-a836c75a1ef4,3770132610,15737613892194414701
+05c0d443-7aa9-f9fb-5daa-53bdcc99d78f,934105754,13256397639819751119
+d9b4726d-00dc-d548-b947-405d5e3cfe2f,1512909059,10223999833223748014
+ae92c404-fad9-f2fa-5719-c945507348bd,26789938,15787051838050400535
+fa2502e7-ec4a-4213-dfd6-96091e0305c6,2490754141,4458226089034413264
+6935242d-534f-677f-5117-cab3bd7c8de5,311442919,11495082043922964189
+923aae5a-196d-63de-2770-4059d2d44916,4073318342,2376889583500167490
+f9448e27-c4e6-d23e-aa43-5dbb8f3af24a,3277542089,7063074359440978400
+6c72ba24-fb28-b812-fb1c-631152e96b09,1808335048,7433633550248010495
+2f3ecb6a-1184-5c5c-5f21-f6af056aaa67,1812463621,6606728828369986881
+38501f67-ab6e-1b5f-176f-7f1428f12b5a,3951908873,5872882877741655349
+6d3051e3-2790-0730-31bc-7b1cb960de18,2155617289,5558083084930553704
+c6c75cc3-90e7-8fab-0947-57d5b419502b,1287534720,14376004335431180090
+4df15694-8fa0-510a-af14-79db1fa22af6,3434708867,13203739105686405508
+16a26b02-6554-b63e-9ffb-c4eb4a284acb,2924451203,1955323796169555375
+9582378d-27e5-7526-973e-df4df47d2109,3553412454,8365481697156049815
+7b5add2f-838c-1f12-8adc-48af3b475a6f,1097499720,7238889111980343204
+4fa8a74e-a420-518e-3cef-d9acecc54563,1891855499,16674025183799412120
+e17b1442-6efc-bab9-cc27-07eac367dfa7,1360034743,9400209547977663290
+3533a3ba-ae44-8ed2-9592-422b56c536ef,1435727519,12706582272769152429
+38d0bb3c-5f84-5f0e-7e5a-8f1f025ff61e,2451773668,9981181361375532036
+3f729bba-c0a4-48f3-9dc3-b15164f6c021,3630427970,17929482264085947389
+2a752e3a-3821-a26d-8085-005fc7bee0e3,2952154014,11431073271485343950
+be5396c0-4d59-263a-052f-95b386b6483e,1893408484,5424150648935568719
+eba25061-d01d-952c-1b67-5bb642b3cd03,423457341,17874697970544769745
+e89dece1-7782-7204-d45f-efae34899e48,2749619138,5680982113162719660
+dcba6d47-8109-bfb1-4490-0b368568a691,1976410223,7419932057737129003
+4596e239-c43a-7fa2-2d8e-c14ecab6305d,2906588110,10884869808489233122
+e7fa9418-69f6-e4da-2304-570692dc653c,3107385179,15831942944703349659
+c0e25adc-f0ea-8354-ba24-d792d6c0e8b4,221962969,12015823014339069459
+ab09e4c9-8676-8d6e-d19d-f6f8022f3189,137652060,17629956166784555132
+61d684fb-e069-be17-b7f4-054cfd119263,1408350268,211370276805461027
+bc5aba73-c50e-25b1-1640-26985c173e7e,1562794360,11537561929519483104
+1a944e64-a630-603a-2810-6831e7aa5efb,839063582,11848524930503559875
+f6b1d47e-e632-04d1-4693-c90cfb5f47f9,1875322713,14329850050453468172
+ee9be06a-7e84-b85b-7c77-45c30351af3d,567031561,17647653408626128066
+284099ba-8e94-312e-e02d-dd6689cffcff,2217488508,4939177681291124822
+7e9c6c6c-870b-45b8-5cb1-5b7525556a99,975015158,7784060153880365360
+4bcb6eb1-08ee-886f-34c6-b8043a33ec40,1692781903,1621176976535847323
+ebe4a189-bd60-cf6d-c8e0-ccb17b0b46ab,804126180,13975556534240030513
+ec483481-4b55-722d-8350-b560864124ba,359104618,9045152972871053424
+e396d4e2-3346-1d1c-0138-0da5ca1f673e,927345873,13487371536342285370
+39fc517d-dab0-45c7-e0c9-5a7e1b274f17,543557991,8165308260690868325
+437eee63-8b45-9d2b-4bd1-68738c3557d1,3716497213,9848626170716137678
+608812a2-7707-fae8-858e-7c45c845689f,2083813126,1176585724460858191
+4e9bce26-4861-d310-1014-e14f8bf43452,2709383236,7981793676434631166
+c2bb8106-b9b4-12e9-0783-114304457c54,282633957,18131942675985098735
+99729bc6-c1b6-3016-310f-48c08b86a1d8,2471866705,1850821559497927954
+33b67baf-224b-394a-d621-591c88dd8de3,2920290602,12451518623509728681
+3f438672-5355-7fec-5c8f-7a1881b34529,2965790333,10826583665868750785
+846fb68e-976c-5d93-5381-782a39adb86f,2261177456,11955921804250930933
+f7a0007a-da61-cd7e-9504-8e6f96c6937c,3234237595,17580380075244347537
+da08e659-1053-9e7a-0685-d4bba1a1a593,1102602591,5148170458683975255
+c87a6143-bedd-1f98-08d0-e3ebd9e0b2a2,535290019,2129473374087050256
+f66d7615-873d-6639-b7f2-a270a9f36839,2194214744,2632946119190368749
+024e1113-7571-b621-d1ef-0978de6af8a9,3655883025,10650601478212081282
+a1d2212c-4105-1839-cfad-0dd2ba285ac3,3981243671,10878683688696687886
+3ba145b1-7714-0265-ce11-71d3d638451a,3610276647,4886469101021702193
+7b51aa73-e14d-bdef-4dc8-6bb67ef10c86,3668971231,14740666934673961586
+4f5bb79c-b4cb-2c0b-6dbb-90c485ff7660,160564055,12600513676470220182
+c68d3d9d-e5e4-1839-4cf3-02ccda4157f0,3653736804,15102299000307208687
+893983d8-c6eb-874f-dac8-002b78214a3d,621661943,11437376750366864463
+110333e7-4178-fcf6-76cd-342d1516250a,4027823877,10963218980097958605
+5cb973d8-1a19-1a11-2966-156829fb4c5f,2626786459,18396425905113552060
+f4e16ccb-d39c-b704-23ac-92fc4f92e091,4189685351,9475482511483169467
+c0766b2e-de3f-2e3d-abd3-81424872056a,4130634278,13289922749670924452
+fa4b5345-ab6e-539b-0474-5a213ad79a20,36590381,1335976322158412362
+c429937e-e6e5-baab-7d3e-25dbb08b39c3,2715216841,13697972548860640148
+e72e4b97-d951-bf67-009b-ecd59ee33db4,4270728623,9182122541279860401
+f0248b3e-ba58-7cad-15db-1a64ca5b75e4,35259190,16090419717565690547
+e26868f7-cd65-1441-8671-d94a5fd1c18a,515852436,14621095619439477141
+be09bf45-47ae-28d2-2d6d-6d4ec78253cf,2049249310,14898755724632144032
+d8f44aeb-6ffe-d30d-e16e-1af9b0674f33,397846541,9701231878664494517
+7964a8fb-19c6-f868-cffe-5ad618a91d9c,3532668298,17760434844748761323
+f942cd01-a417-ddd4-a88f-921b3374dbf5,2299864685,18243717627276303886
+9c5a1e45-cba1-6c74-ecd2-6740e28aaaa7,702061365,8072676343337048463
+96fafb4f-9811-9a85-4932-04a5edd09df3,4230407061,7924513682018272251
+99484732-77c3-a1e7-1964-d72f4938e976,2300567413,14003226628503465524
+69196058-259e-32a1-6f2c-446b2aa4c0e2,660199750,8377550443446564594
+bb0015db-6367-4d66-dc38-b50a552ce429,1186846324,5425975793136801285
+fe448599-4729-ed1e-b752-9cf5265fe7f0,299145445,2451046147372096108
+4d088261-294c-cec2-d52c-2cf42daf3c4e,3191611895,8441190552307931953
+921475e5-cf58-3000-c102-b1fe2b099b52,1464296401,12969472157983084088
+6b519bf1-c03d-9f48-fd0e-412d0c7e8e58,1342125916,3064212656740123797
+ee8b6752-2ab1-9ce4-ffad-2187b64e885d,2545898388,1155277942641324552
+5f747abc-7191-084c-d30f-e2a8f41b403a,3486565537,67154697389320497
+0fc1800e-abe1-8afc-dd24-5633f1b31a89,806606543,6607802930622017386
+f37b0c9a-ef99-fa3c-46d7-9ae26f88e187,222580940,2818261993469737537
+77286b5e-6e13-3fce-7536-56a624d9f944,40071728,15712046814895509440
+f93b702a-9f82-2bd7-50e4-e9cb70e7a78d,956589397,16887016352159064439
+6ef97850-0388-e4e6-0285-6b229dd360c6,483275545,161986909972388609
+7cca13fc-6332-7580-d804-3b7f0f006c3d,1819047021,16278767605602720486
+639865c2-bf8a-dc90-3872-fd8655948b03,464197975,14007027614181465423
+a207ccac-832f-aa10-954b-031eb3b59236,2615369724,7940067534218192713
+0fd21b52-4269-f031-db31-f3e8146688b4,377981772,4632716400680188069
+25581595-de16-b268-031c-24b69188b08e,1784411714,4345668525128571542
+3f80f709-3939-cd61-78b4-28927f82cf93,1101709937,6581812454035382569
+ab6c0bcf-497e-a0bb-09c8-cf6923d9b33a,711739479,8902041243016975254
+492e86b8-d069-6ce9-026d-a38bf0572b52,3635037766,3659436989276783130
+3f18e48e-8d65-1df8-c28f-7c098bebc25e,3611294396,14968183263637699693
+a2f92735-69f2-f396-a528-05160bfda985,3850894187,1621311606176193183
+5fdac1ea-07fb-2fb5-74e2-6c5f38e5e5cb,594718433,8140683199908809955
+6d14fec9-3779-6dec-ba62-4b0721a9a9f7,1631074352,7396276176527216750
+a4d15ee9-1b16-27be-4268-ed1ae40345e4,2175093091,18202768735686082993
+60ca4e0e-a508-6e07-4499-808fff87e585,2161333426,18070846469848728264
+935ce13b-e7b8-cb4f-ce5f-4840c80b964c,2999265386,226408936745719542
+8494fac4-d9ee-51af-30bd-cdf8cf2fb2e8,1552545060,6207347162975851876
+a0b1915b-c831-7b61-f88a-8ab2f84bbf2d,192856553,17709325635148597458
+24bfe47a-cc27-6264-8a62-2e5c85aa07d5,342435409,14530497993063387611
+daa3221d-18cc-2347-771a-378f7a342429,2726058015,8665184320381285601
+d31b7a9b-e4c9-7ca6-4f50-88ce338106a9,3672781207,16152299583502962107
+085bc177-9d4a-dae9-fa91-d4c5e0e6c06f,961471659,1793306536908741504
+15c9cd30-93da-cbd3-a214-7274a8e10ef3,2546116444,14330918095990561206
+8b3dd31e-41fe-f0b0-dc85-cfe6a147c7a6,1775395329,11382432884978446331
+c3405ca8-59bc-58bd-dcf0-5cfb43cc5b66,3400174386,13663302238754242544
+4768a2c1-450f-717e-bb31-ef0fc4f3c73b,620531283,8881033592759275275
+be64b8c9-1c46-a8f7-f57a-6dbe1065e4f3,2281860232,7627538102432350422
+4908c07b-89e7-06c3-d4ef-1b0d6cbe2f46,3038456173,6078750285120021682
+3b291748-ad13-2262-6998-3493da9dec18,3715176813,3758636794045242771
+b04f21b6-ed65-e5f7-9f90-af13a0f75a41,3381474382,367955491804983456
+0b06fc22-0b1c-aa71-e25e-0fc35dd6cffd,552608818,9492143624577856212
+0a2e4c39-f0b3-6ee1-91be-959dee5d9079,2086002125,11043336933825506369
+838175cc-f305-7207-ec49-a5c7ef5a8eee,1708878709,16375869679672950401
+039b787d-24fc-f43e-da36-efb6149fb1f5,2814716186,12887999987271057776
+d3f4230d-915e-3850-3854-d72fa918f9ba,98472545,16019570312793125497
+18600b56-23ae-431f-4273-854463fc3351,2642956793,9648056554437935241
+40089a06-163f-8e68-476a-d8f3d3719f8e,3330512414,17096507412135570840
+24036b30-f94f-2759-c4ee-1d1632f9ea12,3295229652,9474826577017440611
+4c6bb451-7516-df18-45f8-2d8a63b2814c,1927050434,2086978626896644096
+00ad4f64-ad2f-f706-53a8-94cfdf538d7e,3152137947,13262818024583749369
+fce6736b-359e-aeb4-a9ef-0494849f0e48,907308540,12880985777027629447
+fec17163-cab4-c9bf-7e6e-ff90c23eb1eb,108124639,15693384506381253850
+0dff429b-9a71-8d97-9d66-f162006845d7,1294549884,10493887057114937203
+19122edd-2d3a-8f3c-6777-941e0f8824d7,3631730069,14026545831161017004
+ca0c3ce5-475e-d3a3-934e-ccb90cd6937a,1614711407,16499491679410199827
+fab6e7bd-395d-730f-d01d-9cd4f82becfd,1673078257,12654896768570252752
+2040cc6c-0742-aec7-05f0-97e4ac3870d3,1835341583,13942571900795515059
+c3b4ce9e-8669-5fbc-f2ed-ec72bb22398e,4233819045,16364173152222005333
+790f86c9-891c-f78c-f2a8-1255385925b7,2337297097,18238272352168404367
+ee975d40-7fa7-6653-b929-a92ac0d55e63,3002129594,16790455074286520806
+d011f811-f039-33e9-3bbf-67ea01f70f57,1114924952,12278902838708958283
+8f223a33-f658-c2b0-28ed-22ba330a5246,2755875516,3487507940483748053
+0d92dfca-baa4-9fbf-0f7d-ee4fdf2d878b,1977535794,3831588392351600799
+9fef05d3-1dbd-9995-289f-0b04e7b2a751,1563085278,6124583796145849553
+949d3532-61f8-7fdd-c1a6-19e4f11f6532,3082078851,6973137611070222323
+07ad9bc6-733e-7812-f80a-b64412ccf984,812147292,7431127382564493270
+f0a0af70-ff0b-6835-0f96-e8c887f7c257,1128305228,15175876881394803855
+900212d0-f0c5-6b02-9ece-aaf09eaa6508,2416565657,10383400207257803977
+12acdbde-63e6-3620-4fa1-e23be64f93dc,1897004808,18147860998024450541
+278c79e9-fe47-3c80-0550-d3dd38cd13de,713046060,9276652339270815174
+f326a6b1-9fee-068a-df17-673cd39a71d8,3216051130,17848738034207394115
+099042d8-793d-8bef-d4eb-7adca37ba873,3708844613,17494784236684267849
+3a0e98bd-c1b0-5404-c432-031877aaafcb,1720131673,18388956175467232829
+340dd94c-28e0-2b41-3b51-ce21b8db1c93,1962624204,12758257992819848290
+641b6793-5fdd-1114-1597-064acc524972,476659273,13236248691604024594
+b46f534b-a7bf-589a-32a2-e295f602e228,2449140547,15939623993557475045
+65b28296-2559-a778-4f57-f880c16294a6,2422342427,3406904802959174396
+c60733a5-771c-41b7-b5a8-15c0760ef936,1837937262,2402247947414347758
+e9ed9491-9cd6-9836-9897-f666d890ac6d,988810681,3050633787175254115
+63e89075-6991-b3d4-2bc1-71602d067f4e,2549411332,16960215322655967378
+0b982ab4-a539-90f0-9d29-024978184592,913923300,3893893246863119527
+3e7f6c00-5014-98db-aec3-52b9c9048c99,2431242812,14090121063700502860
+5c0545fb-8648-87bf-bd30-1510a026fcf1,1609550942,15358104840733233619
+ca80ad2b-db22-cbab-4669-2514b2e566ce,1032545874,13321817685148336368
+a2adda38-86e0-11a2-5832-7583abb449c9,2531654191,3757560129697305205
+e3218c95-a6c9-52aa-bdf6-33f146318952,1387632510,2054110675646227867
+b678ce00-e0b7-1ea9-7e98-8cf89c441ac9,3708036367,8540879044875832897
+d8c5efcd-9dc1-9f7c-22d0-49dff140cab2,2177409679,5554363977560593917
+53ecad46-08b0-8724-563a-b5ba9671a0de,54372066,1461934014313324731
+397b45eb-05e4-c8fe-e1d9-39b9f892233c,2715766127,4631197162550006428
+b63a9d88-098e-9072-4e48-61bd0c9e27e2,2403053070,8109530772335078308
+9770d158-52ea-b8f0-a75a-ccd7f6adecca,2465683645,6680350448997036326
+9e9ef95b-5d49-af82-d277-69112c81fe19,1515058739,3510944818155826095
+d393da8b-32fe-376e-9124-da7889890dd4,1536840692,322142474600155422
+f8a51281-12ab-14da-5195-e7f3186cbc65,3413053251,2370475669391713113
+70e909f9-52bc-6305-6dc4-55be352cbada,4144342010,12263744581746480859
+98fab645-52ee-08c3-cefe-54ae0fb16391,2934601627,10730426466725552115
+34298894-7e80-c3a1-846c-64ff16ec4aea,3587724163,4082301029463860248
+73b897a9-328e-28bb-b0a5-91362429a102,7391385,2294710019712694907
+ee1be8f1-395b-684c-e551-43899d6c8bdb,44588528,14299618562775206484
+09925c6a-b50d-cc53-1775-6a2b1e828c73,661771571,5161021802035921680
+beb4e5bb-52e7-cb36-45e8-09a81b048c85,3962984650,11753358767696902230
+5865a8eb-ff38-4497-744d-c71f9ad283f2,868014501,7623646938822020977
+d685cf66-7347-dbeb-6f70-8ab349a5153e,148704665,8120134384646066760
+4e20c23b-a747-a5ce-9135-a49f8aeedbbe,1091256195,16270089729021137969
+ee5159c6-332e-1a78-d301-234f3aaae160,2259097889,14117922037312543009
+35aae0fb-e247-1a1b-bb47-1f8ff1e38071,869879265,3302563771961392997
+5698fa1d-71c9-4319-d563-bca4929502f7,1421446180,2067416438454829392
+258161ab-3097-ffc5-0aa0-8634525867b9,1172492459,11011398143474562015
+f5869496-6247-5791-a8f7-1362c1124bf6,482630178,17593979632653453086
+f8b21bce-3f26-6c48-09a4-b75ea7ff3931,2184714566,16873758380263186310
+7d240bd2-b3b7-63d2-ba9c-6c9080798f9c,1831438433,557096704714540057
+b71dd55f-d3f0-f978-d6a0-cd7e6329c850,824233579,954116974220679290
+d4f6efa2-1012-5f83-a6cb-953677f118c5,603102296,13792782132458952909
+f9208d7f-6e3c-3c0d-36d7-cf36f8084dc7,2197386573,7607928954630392138
+12096b08-2d17-6a18-6a40-78e4a2e180b2,77760992,14270871202823967341
+c22d0957-fa3d-7435-fe6e-3d9101b925f1,1523989576,18310670434052269133
+96cbc201-991d-2180-ac64-e789b430e2c6,2265354851,1412841979328591986
+d1e2288c-aa86-6be7-6f4f-71b990f32c88,1786838806,11623558193090947410
+8551f23a-e3e5-1b53-1a80-508294676494,251235392,4326654658429530168
+4fd8e8ff-1eb3-710f-8652-079e371133e6,1711758849,13011794886776007785
+73592fbe-aa6a-b3b8-e4c8-e35bc6f2154c,1352562680,12832556006192081174
+2b828b27-24c9-a306-5712-62cc6a22e338,2541309500,2123975685675642893
+9a4451df-b8e2-0f51-8395-08e754a1de7d,2026136992,3545047915382294874
+67275003-ff33-7df9-7ede-e209515df682,447427769,17859312409865137937
+7bd3a822-ea5f-351c-e147-3d14650a770b,3224037058,16276348586590402711
+d120cfed-ce1e-500d-983f-c8c97ae66eb9,2477927843,5849878127568083934
+d775aec4-613e-3a72-2a2f-59ee2225d0f0,3106238933,9508825497215524469
+75874f5f-a247-a3f4-9bd6-f5e476736a1f,868233603,13686774331432994546
+159530a2-32b1-3d2d-5d6a-89665bb516b2,446193905,14380655435286573398
+396854d4-18b7-a665-b3c5-3ac567960154,1034171375,4797891816922736727
+08e33f74-8f85-a285-0e4d-b8d49a58ab93,2998413981,13329241699962870639
+7472b7b5-0897-47af-74cf-a06c262b844b,2930521481,5256075186284515047
+c12de5b5-6be7-b82d-5dd5-a53892f26e3e,2806634013,14884908504622935297
+2105c72f-58e7-8c83-ef1e-34e7bda834a1,3089419752,2950564411008709780
+bf210d8d-e85b-e5d7-fd9e-f777d8c4e074,3610290761,11576911550278047681
+dd8f7137-d620-fa3d-b861-782ae32a8c6d,2400730338,2500528338864331121
+8f29beed-cc79-bd84-4a33-f6de59d0bef8,477723666,4977741138977566483
+84f2bc68-ba30-160b-7ad7-dda84d7d6b7d,1497398869,4035416455507575065
+2201dd16-b787-40d1-3433-aee7f84ff634,641907962,1525924926184013139
+14f3b18b-36ed-2b36-a9ae-baf23fdfc0f4,2380505796,11985625126376407238
+9423bcf6-268b-cadf-84bd-7cd8796e00b1,717397342,13313435340636993117
+9607249b-d787-9de3-c02e-d4cab16f6d2f,1113110449,15921484733311552443
+022456be-8a2f-4f69-4007-bf6072f5753b,285476317,9789098114013060689
+cfaa7d41-bda3-7a56-6ebc-9d009dded00b,1120885629,8768170422215409213
+24f62493-eb3e-e534-560d-b68e4cf506d1,3833598282,5633488647324533746
+58cb7950-4500-3195-14b1-6f1734a6b477,3302281137,17014194853152532574
+3e270f9f-553a-5544-639d-2ed3cb64e588,290054168,11978504332020774624
+35b08d2a-2079-fc24-4bb0-5093423f9a8e,3618935447,2120582375115299450
+ecfe32b2-815b-38be-db51-df210079a518,1282713222,5815051760899020003
+07d0d0f9-cdd9-dc87-32c5-5ce4a99aab8d,2384090758,10075349489595093452
+e6fef21d-b3a3-ed50-72ee-97a1e3535fe2,2507467683,15460862446576795781
+180a72b1-6f08-9444-addd-bcc8c190064f,359102820,15995522861012969504
+b3cc94f1-322d-2eea-009c-c0419ac53435,2451021649,4253184864283985846
+768a4845-e338-03fe-2cc6-e4a336310714,2434849904,13709152536845254687
+21cadc25-54e8-9505-b4cc-f99ab5cb8a67,1666967000,9146179286767750052
+eb660beb-71d7-80eb-a364-07ab8daeb848,2098344291,13456624461350329382
+bd13090e-fffa-063d-eda0-45acbb1924c0,4100860992,15669961082871197713
+9b5bf75e-d515-35bb-722f-8dd1413bafa6,1044630795,2646390951754327570
+0e0367f6-641d-0e8f-ce28-64a869ea1d75,400573474,4030113241696556515
+58fc4685-7f0b-55c3-379d-fb074ec18e33,3566615968,13454396959858277513
+10fb4945-1c6e-5f04-44a1-0e853716669f,14510202,8329180766908771757
+e9a81865-81b7-7397-675a-bdd6d0d37c43,1921279972,10073813845708581510
+58370373-7f61-6b42-e71e-44f7fdc89872,2574674532,16468516937099139834
+0c369931-4b66-888d-8d91-ad3c842ebd7f,3268420110,11982594853942144295
+bb71d246-3004-a518-6d5f-a8331162debf,1386940966,2610682456421671521
+38b4ff15-270f-848e-a485-82cb2ccbee4b,1785697355,10519192837372391983
+d886ad44-3bb3-2973-04b1-5faac9772b5c,2109735385,16300445291986664807
+5ef81d74-098f-dcf7-6623-fd091a506e43,1723796232,3961871269760951720
+e3cc6eff-d97f-97cf-7b85-09e40c17344e,3192861600,4039327441993637158
+fa20c606-4899-a84c-302c-ad8b2fe686dd,1965469477,10530084038971937509
+9e29ef78-5ef5-1e31-8a6d-57b6d8e83ed8,437184451,13751730368957605247
+bb7f0af2-914f-72b6-d4f2-88b3fae39726,2886118618,2770269427027809089
+80fe8e5f-dac8-06c4-04ce-931dc8872ddd,3150289654,13181396896520081246
+eb4e4dca-357a-0ce8-00bd-3c84e0df922f,3735513303,2567421953663026289
+11a0b296-d78d-7db6-e854-b7adc14bf29d,4247588546,9842498016630370800
+680e05b0-cce1-8fba-4cec-1f9b2a0c7102,3835223138,10362494508667846249
+93adac68-86a0-1e07-22fc-26e83aed9443,3830215750,5557779295489960748
+0f9b98c8-d24f-f835-707b-b21a7cd695d3,637484876,13431392848876099053
+31a109f2-3113-17ce-61e5-a3f33d16e22d,1998566926,233242712299045355
+7f9ad010-c0a2-2b79-f5bd-b487116e5de0,438702857,15593767466623347480
+d7a8aee7-db50-9c25-1344-90a1cc035cc6,2459339448,15466431983137617503
+833472ea-ef5e-5a40-acd0-539af15cfaee,914042455,342701515569933909
+523529a2-78b5-5633-4073-5db4cd4fa8f5,4038321249,14937572086682275883
+e5a7f431-9e10-44bf-f315-8c09cba2b2b0,613580758,11483126821966557559
+dcacceaa-c7a2-c025-c7bd-aaf2353c28ae,3495103788,1974228394898511286
+153c5203-995e-6f95-1d99-d2b846fa80c5,1095502752,4456828074504627669
+b09f2a1c-16f7-0513-061f-4f9e6965785d,3349247840,4947850781839986239
+4892043c-5e19-2d4c-b0a6-c71eef4e1d92,928473522,2403585502304098118
+a9ff3e72-9735-ee32-f27d-8002d0b2de03,3840874579,7540469287663341422
+46eaaab5-a840-e91a-bf20-a52e3cc9eeae,4104349948,15292437715967875921
+ae985e0c-501b-8866-b71d-16a1598fae8c,4133611323,3732878722372546966
+a9d887fe-f60d-cb57-d290-a12e18b8bcf6,406078975,8223749931513911150
+7c5c5381-94ae-d4e4-949e-55a3418a25a3,698941936,2260851069817047398
+3b2307a8-eb7c-ecd2-594d-a55c3a23b3b8,4121534808,13965140922390190396
+f6ed838d-8c1d-3d2e-4f08-3b02f7ecf65f,2397539159,2241601993529706075
+36279ba6-85cc-ae8e-d5a4-c1645ae0fe28,259994260,8003811085335856797
+515e52d0-75b3-f14b-6cc8-7ea0ae53d59f,3124464941,9088649081533626202
+d95f8165-9a17-cc6f-2e3f-dfb16ffa0f82,1926396969,11077878074773482867
+dc6d6ea7-bc2a-5179-e4eb-499a5db19134,3886234752,16548302167234566350
+ca5a0f48-235a-8cb8-ca97-6e51f2df1484,2973710069,123153261849069504
+f8859338-17e6-3eea-caf2-9ac17bdb7d7e,1916397749,16046081298369794742
+adbae378-537e-1676-e151-7306746ada3f,3166780445,3136918487347144835
+94614ae7-3264-4fd1-cee3-507354d9a9be,724197927,8914507367708797636
+01478967-43b4-8ea3-ae2d-2c7c3af28243,3835116843,17943160234470770825
+7b09ae20-6ac2-6b28-a256-8ba673390fdf,3108318567,7114790883408643515
+57fc790c-6670-c4ad-9728-c5841d2949c7,3742524094,4327852605416997387
+d4b493a8-b0bd-fb67-aef3-b189df670cf4,4271616889,13637777280303457994
+b756d708-548e-40ce-eb84-4b8e040306e9,2778784139,13741992727727297234
+aac57637-cbe7-78d6-c841-eee0086b4e1d,651218387,11934379069240168869
+b9343b54-59fb-dde7-3b8c-1f34c20fc9ce,706527934,3055195565967128037
+9b801e39-8f68-7fd0-f531-875d4fb418fb,4010161688,4761892085676601134
+f56c6d2b-d20b-77c5-fb9a-d1ba327a0488,1768669249,18338657157970630361
+9ec76cbe-d06f-1925-fad7-21b75d0b7e4f,3642337473,17384039878000481405
+491cb402-1e52-7212-1cfe-eca878d5ad27,4257936618,6435687112054049888
+b7f2a738-1d64-a8fe-536e-2c1b15c9789c,3544623435,17233255742917458670
+b07966a2-16b1-acf9-3ce2-65e548cf518a,1307833930,17626408488182084462
+b174d225-9055-48b4-4567-ec09c750babb,1885565854,11452699516281210955
+5d3ffd66-a70b-c68c-c70e-40f0673aa501,1959785578,9314963281810759163
+b2b85588-af9f-b5ed-7067-889f57e06aba,1930379614,6792648355565976172
+5ad509a5-98b1-6375-172e-8f8b1758e32b,1498301610,1449574069034197365
+6bb924dc-af30-d8c3-dfc6-6f4ea5e527d5,3335092466,17042776360967970309
+d3f4533e-d7f8-28e1-7b95-b5ad920287bc,611717706,463127816128820980
+45903f32-9edb-8aa4-d3ca-bff74785dd60,3803835247,14052552147131815135
+900cd0fd-eb4f-ccff-f5fc-7592b67e2c58,3578889031,8519441171114533655
+4f91942d-7b3b-0685-1498-55b7295b0a35,2770116025,18327725858523790035
+0021b6a1-bc5c-3aa6-0fb5-e79a6448fcbf,4236756878,2234202972463828182
+46bb2e8e-68d1-c84e-a0ef-564c8f807f94,1032873730,11949520581681386531
+bf09dece-7076-ebec-9cec-5019cf0a3f5d,3393518881,6008550595294754212
+f2048761-b6c6-323f-66a9-0c495549c2cc,3151460615,3393051489547432784
+5e06dc96-9b82-f8fb-9633-c9c24d6a4598,3873234734,10661645291958565963
+56cff2cc-50f6-7e60-7c95-cbefbd4e2193,945788577,7479367182404808243
+11ecf5b7-cd7b-e017-0ac2-ee6476c2541d,1127463289,9864983125396900052
+a6012a2a-1fc1-9e43-b7dd-555fab004006,3356811627,12183363079740436268
+384405e1-dd91-d9c6-5ceb-c71e02d9e8df,1034406280,5619293574972114499
+ace00953-6a51-87f1-4bb1-64212f1854cd,3130051838,15485621840476934865
+56ae5fe0-5eff-2f9c-e299-c55fac16ebaf,2755871102,7546939114255952175
+55053c88-123b-0d6b-b4fd-d4e93357cfbb,2745205881,776890617765977489
+565fa180-789c-ad45-2827-6f0b9ad4d742,3461277542,16932419135494113859
+b8d65f41-0c23-b1a9-6f1f-1b003c4dde51,1884892643,13165476427706482380
+87f84d19-844a-7b54-0c52-bc1893074940,3326567832,14398336586279707183
+11f1be8c-f8b0-f18a-d061-7ef624746786,81171522,10807733022887056881
+6406d4a1-a52b-12ec-ba88-0c822f85f827,2526874229,10312035959400482533
+9739f477-2928-4d74-720a-72322e0e23a4,3117327726,16517914138905878441
+fe7b2481-717f-d577-2088-9bb9ae5cee9c,22662198,1804496668996806002
+41c10d8d-d44a-a32b-8fe9-25ed3802b99f,494081258,5521948855438690142
+1d516f4e-289b-b92f-24c8-4bc823d4856d,1639529037,1954477956261599776
+66754df2-f752-d8a9-a8f9-338825147dee,2430740435,15593469380701290971
+caf5ab24-c2f3-65b7-6fc9-f68c8ce0a8ae,356316563,4468436083234965964
+9d5b929f-33bc-72cf-aaad-e395b976b4df,1130223842,16044239812236049942
+f4d5d4d6-90ad-0877-61f0-96c5493371e2,2944436076,15764191761992454071
+833fd4a7-37cd-a0d3-4938-8a3e57265bf1,1859228716,11176749789315620856
+4264c025-280e-4d9b-d6f6-0f3d169a12c4,3786588818,9465788504899419713
+cbf9d23b-726d-ac95-2572-c1823d49d8a8,72125437,13384696846844669781
+06a739bd-457b-f6bd-0533-bf7eb8ef1ac4,2667468259,2159890280918760167
+c14ec47b-4864-e12e-4435-44252072a552,1210220270,13686085888720073664
+3021629d-f0c0-013a-8014-f979c0aa1217,334346371,13696548832716556413
+0d9851fa-a918-2ef8-658b-18a2e4ff4d14,2471848674,2064294148660499484
+d1bd8686-8e05-9c16-d263-f40ebe818459,3056937127,3929131659968521013
+99feba5d-dcbf-02f6-0029-fb725b8dc4bf,4267302527,10494669369069093170
+6a2dc69e-af5c-ce52-270d-7376a9fc1146,2964680518,9668396544409035759
+9a9e698f-74d3-4ee9-6e51-f8403214604b,951354492,18226793767944401498
+985ec63f-d078-fcca-fd51-c98b99f0ab1c,2643553898,16987401362895807751
+66ea579e-fec7-06af-63fe-1c8e493d6a81,2460633252,5525486401840505911
+66afe249-489d-dae8-7dad-167b3ff88fda,4080873819,1696138581026775306
+53fa5f49-16f4-7e8b-3c38-06c72d7497c4,386962535,11885499702051436590
+68da9e55-2778-27ad-86e9-768e451721ae,1328084722,15113842188622513819
+8986c0d4-be2b-d5b6-3604-e535687a0e56,3919798920,18181937958833289007
+c49089a6-f2fc-cb47-c024-26dd237c8e3b,2896859847,905676183607876165
+1f4698ea-0de9-7ed0-c77d-93a051c582f4,1794240776,11089544930985811995
+b11ba75c-a188-973f-cc20-1f019487b38d,1024715369,7419885374304162536
+e8a18779-c290-5439-976c-24350065165d,1760886268,10035526177778066294
+0d7ee16f-51f9-da80-a40d-edcb835f37e8,2413582823,827148273934337817
+bbb27cf2-b111-0070-bdbd-f4f12eb78c6f,2050128093,8068038479251469486
+5617ea59-19e4-557f-7a40-ecfa39547d3e,957603124,15448350568917880247
+3b636430-ec42-6bb4-7d7e-8e879bbadd5c,298254039,350516828213818095
+39bf7428-0cff-10c6-032d-97ad53e66c96,4164050470,13087384653749057715
+f8034213-0525-19ec-a051-b0225756a473,4161989872,8324741383337179738
+e31b4d86-dc78-42bd-c2c0-21e9a0e5bb72,1748499645,7931362590032256107
+33bde8e9-a854-6239-e70c-4b482227aba6,3603980999,10885006590251570006
+6a0027d5-fdc5-28e1-926a-0ddd663aea98,1855230670,10453448214637125423
+dd9fb7d6-d55e-b3bb-50e7-a286ac8391e0,3073852117,15285854099610788148
+95bd1c81-9844-6d4c-cba7-de93c558f08e,1383794342,2350474073286394018
+cde11d7f-016e-7fe9-6e1a-08df6eca4e82,1947846816,3899767320584366445
+287ed869-71a4-6fa0-2e15-ed4ad4a31621,3592449816,43474364667522579
+8e0cd3bb-ea59-ff66-d7c9-3fb67c7d9195,2961202541,5304353088516929514
+d10a4176-baf5-7967-afad-4ff8af8c92ec,1483604300,5017459790322631196
+5405e7b3-b1fc-dc91-bf60-6d7a2d2435a2,659847410,17372491855977288588
+b98f273a-9649-2587-691c-a6667961e773,1798316946,12025554685526713655
+edf75b5a-c6ab-58ce-6cdd-59a9a5c44cba,2020114070,1031479409517062926
+9d7a716c-11c8-2cd0-872b-41376cb5481b,1557367502,12673051287202707195
+bc28a9fb-5ddd-dcf6-2158-a513b4a7edbd,1662937300,14719554542476351064
+8addc28b-0e72-392a-68c8-7a3d439be771,1725388356,9212403077875192631
+36b508f1-f409-ea40-7446-88b79bcb98bd,727577811,3019575490356322514
+e56f0542-c9e2-4db3-fb57-9c3b8df5788f,3033108425,10839578756702331546
+d13d54ea-f2ce-6c85-7e76-c915501d5bd9,3886321168,10588025536660909403
+78f5eab1-60b4-f00c-7c82-3a680f8936c4,3692066318,9932678985414785379
+1a763ba4-d55a-53c9-cdc0-a8edac55f210,3274500874,11912445413621701823
+4c22395e-3e15-b487-87d5-be21b1c16255,854039373,8844013864441101809
+380f5326-02ae-bf65-3b9c-1cb7ce85f4fa,2115766038,14596643208102564935
+388097cd-0fae-9dc2-7890-c657a27501ef,3329925327,275876405092347894
+cab210d3-c334-7b5d-3e81-f40f8d2d5774,1337899965,16910152884812009750
+7954bf28-44cb-2de1-cbc2-3a76d23ac972,4215754492,17443516813424708090
+8bcd973b-2dcd-849c-0f8c-884e34ee92b4,1338751389,16065999088814994765
+aa2e86e2-28ab-0d59-9236-e02a94e70043,2546298459,515225700566009313
+f7545653-5077-c9ee-6c1a-a83a6f48c50f,3050633860,6483233826071931294
+d57c1e12-40b6-2ffb-f661-a54f98d0d10a,2157314234,8930225279331133012
+50719450-eea2-e1cb-6703-09e5975db035,24296195,14196650731416323703
+cb11bf9a-0461-f522-6ff0-d8151123ecff,4158263093,1366019230831681708
+8ef51730-eaa3-77a7-1144-135724722c16,3483440105,4314216074802186648
+aaace1d1-acb4-fc77-400c-806a73c6aa84,1696194489,1792639965515495472
+de996527-ae61-a709-f8cd-7a42f6b866cd,4192274750,17600713836713211006
+4f06dc92-a7a4-ecb4-f47f-a433e76932b0,3770395877,13473446965788379007
+52c90420-3c87-8a75-67ef-075a7c2517a3,3166780167,6474343761695129406
+ddae65ef-b198-8490-ca84-a3315f588a18,3995007606,9974332853215811480
+e7b83d48-353c-f2f6-52da-c60863736adc,2325923916,5251155002595353043
+5bbc056f-787f-b7e3-6a8d-ce7937a546a5,1557298178,3498514825985874507
+634e6c91-8877-afd4-f9df-ee8db6768429,588413975,15597949603948374088
+2090775c-c130-e9ac-db7d-efc239f10559,1263339761,13734253219311667473
+f28c094b-c21c-7835-722a-ec78f0d7ffc8,17000824,516327080554945275
+5229a994-77ab-fb14-1bb0-d5bf9116ccd9,2842084761,3447518179267380579
+6f4a46f9-9407-5cad-692f-006ac76caf3f,1879838619,5252231654916908966
+8f44e3b7-1a33-ecd2-a63e-326aaa712b20,1086879089,4662883370597309543
+b3b6be93-b9ac-17a5-1c23-4e036e999b41,226504830,12143246192478981793
+5220901e-18a7-faf0-9ff6-c1f3d41cc418,2924566991,9907025467098492808
+a2919f0b-45d9-4c20-2e9d-5cf28b275fec,2231898323,15665188796496989886
+f4da6b7b-4881-c777-327b-15f57d0aae6d,4139143909,12145114075555022614
+0b8bf59e-a706-953e-a508-21584647533d,4079995089,3663960555513960112
+5fcc0af5-7997-6f42-f48e-1982ea767464,2909061480,17789924397575714514
+dc10faae-097b-3458-8ac8-31ad9cbaa8dc,111503490,11865322612519403517
+43afdfdd-b049-a7fb-a6a7-27ffb6b1f629,552363456,13390636755114964060
+79023a3e-d11b-3d61-d5e8-a12944e1d074,1053975817,6077234797729844340
+6dee57c3-d42b-e019-a4c5-0df5165c7ba6,1132275920,12210216970558633686
+5bf8e7e6-09a6-c84f-8f11-ab7e052fbdd5,2465323517,1497424418196005395
+cc88bf7b-0fec-e391-0b0f-d7b02fa05bc7,2093775483,9993316297019585055
+5979aef9-afc7-2d6d-b017-78157b57c8fe,152555506,12981076042272671575
+a43f0a41-a368-1650-2453-debe62ca6f61,1931171286,16350236708693028784
+9efe3393-3a4b-9e70-9336-fb043feda3a2,1753212471,17432808747109488483
+d0976526-d852-add2-e972-ccd36809e3cb,39274587,7029175243957720969
+7caed036-1969-ebbf-f4bc-cba1e49a05ca,3099357310,10332048292084454042
+aa3ebc58-769b-ec99-46f5-7b0f236d3d7d,3089326596,6547980986891399815
+39fde235-b821-91b3-4df6-94403d871fc4,2830452330,2024876999398119039
+0eaaa8fd-5499-5889-a9f9-bbd6a8c9c973,3154710110,1522281989798376424
+4e8484a4-b19a-13f4-ff53-828bcd9a2320,1003551069,15594029013209889724
+52f68238-44fb-7a6f-8430-91cea7387c51,277691017,16686921048012146359
+42d3eb1f-7399-5550-5e2b-4908c3d51b76,2069119624,2664375239158121455
+57ae7ac9-b01c-8ebf-d702-72416d5997e3,3214227086,13433796084009593692
+eece8fbc-d65b-e633-a96b-bf531cef5cba,246971317,17109316170201216058
+e3fecef5-df50-354e-0056-5d3eb2ce93eb,1016813491,17682465679586910925
+f0a023ae-aac4-dd15-7e28-b455c15a3dd0,2513970017,4460193377102255012
+4afec9b8-2e93-9e02-87e6-7794f5476c0a,1288882466,3389525245705291043
+ba4ca292-fedc-ac90-7ea4-5ff4ef3bb3c1,4117113016,6630174196644979180
+3e465c64-d874-eae4-0692-8fe7b9ce2f4e,654204465,7159515165621224391
+670dedfd-e569-8b77-abe1-18c09aa39816,3627080544,535738663961820432
+9af8f9a9-1933-b372-7a42-4dccdadf5146,38414058,14312261129580743856
+eb0b0579-a11f-8bc9-db17-7f34ac8c3813,538537589,8128981599176899355
+cd8aa4a7-df3e-e074-8465-42e66f4f6fc7,1741283269,3472002700555357804
+43b7640f-d0bc-e012-8900-881f3f279f81,2879631057,12368317481989010141
+708390ab-2a0b-e233-32d8-3c89ffa36c5c,360600845,380300905736284001
+20865009-7ac3-c5b2-30c0-014f39a0b040,4039018416,14674150355737571632
+f4487e34-aff5-c4ac-68b8-08ce711b724c,3131018071,16475358230893517841
+219a8eff-f319-4d3d-79d2-f95a2eb76471,1795998015,8274192677149315084
+414526bc-477e-bc46-69f8-30f2bc523484,1222213058,4904431729746117823
+71152cdb-2767-608e-452b-e37dbba5f257,2964828252,10650611839053352735
+e032b947-9590-db46-d53b-10e0318ea200,3051764466,2521056147425859282
+818e7726-cc63-209c-c83a-58bc7bebea97,2037044819,1103052835326809274
+30de9594-dab8-6366-0a40-1d976ac7b1ba,1190235070,12679208714945957433
+35feed8e-e988-8d21-9af1-fe63013ddb45,3562101908,1266067904357569852
+e6baa45b-20a5-7751-80c7-23a05746a40a,1642275282,6442169265414507992
+50079de5-27e9-2488-7dda-a6353c3ae8ab,3623013222,10241625635341710768
+6551bd50-88af-471a-f41d-e06aa3ab48df,4200916432,6602756821949514839
+51ef85ac-e333-48d6-460e-f7650a0c0aa9,72937311,2901591169221689093
+d1476488-5b81-8d9c-0674-5b7388c41b84,1866252404,8002372051464117954
+5701f341-cdfe-260a-64b9-c8725f2f47b6,105928020,10137379638776058490
+3c6b24ee-43bd-efa2-051b-817df78b304b,889752919,7934237929259485852
+45875820-b619-0154-7728-f7c19b14b845,101506865,1050997588640227641
+1de47683-03fe-115d-1198-4b045c7cd5c9,3161224654,3821959397247538244
+26a9bb4b-df13-52d1-214e-a97c1cacd800,1988353067,5337087159828607631
+70e6794c-70a4-302b-5512-e88b9e54addd,2637617888,15452304404294596767
+dd4e205f-f19e-4ab7-537d-e1d8026a6a33,1679265019,6851602370293636080
+80207127-2783-98df-8322-3cea4635a2c5,1985966401,18417064019153885033
+f5807963-3aac-3745-43c3-6992e53019d5,1976924156,15735881798332750301
+e11aa533-fe93-9d3f-67d1-324fcc4f0f58,3156762078,15159203709469473926
+2be4b143-31a4-ac4d-ff8c-035db00013d1,1398944132,358125489287624835
+fbc6f5f4-cbf2-8ee1-4594-ecabca2c4724,3614249571,16033225935671387522
+0a7c19b3-2de3-1ddd-3905-4666efed565c,3358311440,17412100968037351836
+d63e0414-9af3-2712-2e3b-ae27787d5ff7,3376173533,7182339206717846133
+bca138fb-a77b-8cd9-5e6c-e8aeea6e8a61,2130175849,8492317543601851250
+1b2d26fb-4249-c599-113c-e166164229e2,507060988,14950887767984065217
+c28021e3-39fd-f479-bc50-a3faee0e0f2e,2488266458,11943764483038794534
+6a499bb1-1aaa-244e-37f5-15f1f3fdd668,937843572,1859406928409829700
+55448933-6fbc-1738-b56a-0db997d80a46,1223480314,11864248898760817799
+c70361ca-a5a4-e4e4-00b2-752d48582f7d,4220968701,9432484667857732306
+8b4f2c31-4474-d595-af02-d3bdd9415d63,3779003134,4977395293698331924
+40a20ef5-f264-6faa-fb29-718a63030a16,4019716901,3463447888819659409
+1a04ba36-fa56-33c7-562a-5a5e2cdb6df7,2215215546,7798942606967627364
+a7d51f78-9f83-182f-b81a-479dcc9e9596,965042422,13212734364047639105
+39dd0fb8-6a21-aebb-aaa8-b4c64a65ece3,865713038,5817676102921186139
+641981b1-caa1-eb7b-f377-6457f6b5c9f8,2705232125,2794779699087086165
+66f60b05-e5d1-5593-fe8a-124ee145aa53,2261882642,9859004663621621714
+e079b70e-9d8d-110f-c857-cf565c93c687,2951014177,15010742625858990906
+09ef5b87-ad0b-bcbd-1923-6698abbbdf8b,3804525467,15149855840515652894
+bbb22499-ddbb-5093-a08b-7236f95c778b,172180634,5723448230369577822
+c6f5e944-ba36-12b9-08ee-950afccfa271,392450830,2556245399808593023
+9262856b-499a-577f-14f5-76d4e1199296,867339177,14337037264958229409
+415c8032-dfc1-327f-0262-3c247411489f,2637441857,14577647712504445495
+94fb9e0c-1978-da9f-81c8-9fcc0727950c,1437981669,7235791330851832730
+fbbce963-97e0-0654-87c5-0637fb21ca06,2338470787,17135317038856809134
+e8422420-023f-55ed-4382-541fa23928d1,1516204698,5526530105311066403
+987e396d-89b9-36ce-e105-d0d7ebcd0e4f,2668458007,17587917256274091835
+e339caba-eb7c-25cc-dbc6-cbbc48a9be8c,916759327,6426219269275623216
+46264287-5ca8-0c73-dc95-90ed3ed88298,915734911,456062533545824580
+9f15fa1c-d92f-b0af-63f1-38e39d5ab98c,3970020711,13245056019060197334
+6880bfd9-afbe-0671-9661-4c9c7e39140e,435311918,14858207164985983112
+ebde6540-44e9-f948-4579-2bc785c77aaa,386733129,7935401316409509180
+d31f0dbb-54c4-d322-7305-40e98b6e2c5b,1792735056,3646101088568592980
+5de9348c-64ae-7cac-8b20-10d6086283ae,3451815634,9189487857765357124
+224bff23-9f25-2781-59f4-3b2541256151,538117911,4765126171468243936
+9fc98332-c27d-ffb6-6cf4-c92ba45f05d0,2190538810,12329948282187882751
+5cd3057e-37d2-3c2c-28b9-14d9e238a0e2,4009006273,15952074270559361600
+c03121e6-6b52-a3cd-e7fa-89eb9985546f,1764072910,12679638149208236700
+e577202e-d734-3056-3d86-e4685effee19,3291943032,15253589886078364360
+926f7311-d2b9-8729-575c-d2a97dd46ff9,2286125356,6347767557375253343
+a2461f81-8f7e-c351-cbb3-b6a4a0226a13,971183232,7508716874342580887
+1963d1cb-b213-44f4-2a9e-d3fd755795b3,2137222362,15243046497079120513
+ceb5f14e-9171-fec2-993b-f2c4a3958bc3,1678063699,3243412466258319915
+7cb4040b-c64e-56a0-990d-670245b49c8e,418247085,16348699526749603960
+fa4bdcf3-15e4-d609-cfda-1acf2e9d16ab,3223649904,14467748808694616484
+4c431f23-89e8-c453-0d80-4a190fd36f3f,4225821662,1180160935263538426
+30389dcf-82b1-f3ef-c190-a000045549e5,847669358,5433475218119042101
+b994ab38-1ffc-5552-f906-eef2247c0967,2416543005,17357786108134588452
+6dd38dcf-b3ea-6368-11c6-e70c76f07f59,2115014468,16595487389940470612
+7accd0ac-b5c7-c466-1881-7e37a6f8ff74,284385110,11453104843731132809
+8119b89f-411b-191d-0dea-6807e0aabed3,2187173394,14730046839077443117
+6d080fef-c81e-8c63-5cfe-4efee8d6441d,939013242,13607153942294622852
+af69a874-d6bf-becf-3984-4b17a5804ba5,1215664656,6564456818260546696
+17b21daa-d94b-4756-1641-6dc7961f275c,4203343644,783986656310771799
+50da787b-2a31-ee6d-aa3e-81cfa6863f95,3507828500,3647248373159672387
+2d388619-8c2f-7938-92c0-255887f4de08,1680918129,12621756350657260194
+87ec2a81-8ec4-b02b-a693-fafcd40d36ad,1521548308,4342790949517740630
+1cb5c83b-a794-d620-9478-8f0bcf1a7226,496811175,7715849664597638340
+df38bffa-1d6d-daf7-8554-f5b5715d997b,2189306873,15915334612633130487
+92b4c1ac-a3a2-d6a3-7001-2256ec2912e0,3219831322,5877858749467366025
+23754a7c-d7ba-1afd-4a66-f170df28b7c5,3300419458,12514025982595877808
+ea9a8210-54e6-048f-c07a-1f546ce2cbc7,1738333647,3586243300630384246
+a1de06f1-e960-d38c-0960-31192ee44582,2621729849,2971967728084883218
+f5b5f7f0-1bf1-c997-02af-4a6a9f0150ce,1059784351,6966528703126106057
+fd9297a7-8e23-f31f-1182-40173703a880,2872292111,4120937387617348821
+8bea0d97-1af6-f3e2-1cb5-ef0b57440f77,4245303499,3159991303674127109
+3a3d0b5e-cc76-9818-0c77-4b442a225ec7,1992649604,127443375932723989
+e373e3a3-e878-f4dd-87c7-19b2c05faaf3,3628580249,4485308518224819367
+7499f960-6bf9-bfbf-8456-9f6443840a10,2205733111,8448394702489968024
+f681fc76-b318-412d-7902-4a9788b82c92,1648240125,11935014462284109271
+be111978-a339-a0cd-f298-03ddd39703f4,4276477760,3231942401411041048
+d4ca4284-535e-0d3b-3ec1-459fdcd9b861,576522145,8152556058162233295
+19faafa3-8660-133a-a919-66f9df1c86d2,1828982240,2581461403227625259
+2c636f59-d5c0-e7d7-5178-83fed67071af,2256975811,1542006260017720898
+940f0f7d-f1f3-17a1-3c13-7f497ca68dfe,1573342951,14562338549300230424
+10b999eb-6f5d-b903-4957-d8c49d07caaf,3605407057,14118885692564488694
+c9d4d26e-71e0-a2bc-4e0c-30626b6aa0ca,1077142652,5442724405742344808
+a2deabc7-f766-23da-cb31-0a077217c404,4155151633,8446224493649253079
+f853c64c-8b78-79c3-fa24-34a1c27dad5f,411675318,7817535994623956066
+27f72fa4-b9b7-4381-b88e-7dc427fd78d1,1570608753,12780646529008780868
+c1967794-c184-0a0e-b666-7bd62b1e8cc7,917147876,12265161789287722529
+157f4c60-30c0-5aa1-d1b1-dd1751dfd748,2795315822,13766705672447935569
+838e7cc9-2a9d-2444-e16d-72574308b082,3527588767,8821393192850583967
+533910c8-041b-d388-3bcb-4e4ce1a155be,515567884,9038416741091623318
+1621e70a-3339-99da-59ed-3decee6501d7,4017537075,15254617336775475955
+7dccd4ba-eee9-57f3-5c4c-654f42857ca3,663191005,5940329525115686911
+3498b620-8eac-2b20-ce6a-ae5989935ce3,2463673194,11705114923606157642
+ebf3140d-8b31-72da-39a2-25f59624537c,1362666384,3089443872110029336
+fa89f15c-7e3f-3508-5811-2359004bd4d6,2659380871,9355647563534411503
+3156e26c-3994-6b96-083b-4045e44a41d6,3844225918,18323913751362203178
+fc696bb7-9f7d-3a3b-ae76-8da52f5fd58f,3325793803,1310189765259570518
+d80ef48f-ec70-e060-e07d-e180dc43b86d,3441541692,14748539597035987015
+c2fa3133-62d6-c253-b45b-a6e7f97e4017,1680108492,13701349035759074234
+86c23f65-6b9b-2c43-19d1-ab228adcc7d9,3075111845,17093781625568474241
+f045721c-d944-31ea-cd3b-544044c2458c,664936263,3185116648877031164
+281a2508-1486-faa7-5d93-698b7ef76f48,1621431304,7727483458876656391
+20bbb2d4-86a6-df9f-0e16-6f1d668b9e35,4196597694,909250719636243451
+d36c506a-d7b4-391d-c3d0-981048e354d9,1518261639,11180023172277116035
+307a6cd4-cce5-8e05-2640-c27f9bc4f056,4048504650,14307538958669150887
+944ca172-f2b4-2b68-ec86-e18bd51e8d32,771351904,568910469503452025
+735b778d-e55e-46ae-df48-6862cd474252,1580929882,1765709532707480370
+a8811896-eb90-63a2-414e-fd7095c784a1,4111365386,10718657262697634653
+5e348b15-dc17-bff3-708f-37a6da742b59,758087425,4996053013295738012
+1803ad2f-7358-26ef-118b-32b3c0f3b715,341422443,3081468051635523514
+b7f819a1-e3d2-ba35-891c-9da7eb9ee74c,1883900316,7953199533268581768
+a7bd64d1-f181-8cac-bd01-e0880bfb48fc,1573996350,11016820142036905489
+20da2a4e-c9a4-017d-8d5b-2c2d1f363025,756242550,10033977321457327599
+6e3f12c4-f017-e017-c870-1346339f1d56,4268529477,11571361140601746320
+b630b839-bae6-4322-1db7-0c8cb36846ab,478137691,17639170700509563943
+04285e16-d75e-1fc3-2af5-fa3ff7766da6,1081048186,4155091019162152569
+877d23b4-0915-047e-609a-b56e19b586d7,3381308630,5217432931770441770
+8b1cba20-c1b0-df8d-f302-b0a2485b67bd,3681204517,16681341587248888912
+3536212b-d8b7-ade8-55d2-e6387f62d027,2861573672,4304613171178984792
+b9a9c2f3-256f-827e-6f70-f270f853f448,957764572,17049433961610734096
+f318af13-0257-b935-07d6-7eb8fd8f5d15,433623881,9339746690967905664
+5eefaf8f-d245-5fa2-2642-5c4f444f986c,3589473118,9537727200461533611
+e36e3757-3119-6ce3-8427-00abe56ca027,3684880506,14698265166836279037
+1c910436-0452-ce93-5093-5daa8547e843,3963922330,13588009286470564638
+ef3e6e8d-18fe-0a66-7697-b504c54a8ac2,889726089,11975823968477114195
+89456d5c-dacd-11a5-a17f-ca31237d6273,1293555687,9786010603316757743
+8563af86-62ec-45f5-2b97-9ff2b5c7b2a0,3352581306,17750609624400538153
+18925264-d7db-1348-d53c-6095397cd655,3933053184,12711288725898842709
+b423939f-f8f9-d2fc-220f-74e9a37d66af,745942976,10074908912982285713
+42e21322-46e4-1431-c4e2-19939904aaa2,4099643013,10845165190752904181
+c07252e5-9cc6-b790-f903-1d6a1d67f46c,3055581371,18060788572694894566
+ac2c7186-3a8a-7f65-434f-a87702b974a1,4055197788,16761897168319950772
+ee6b841e-cee5-1e27-d35c-d175021be412,86530660,7322556994718953103
+bba04d6b-65fb-3386-ebd6-30d80c55bfb1,3679233850,4301383387123230936
+672a00b4-8254-de78-6f23-64a706991033,3290594556,15943520149053365119
+aebc49ca-b9aa-cde4-0ad8-dcf3c0b0ca55,2348276334,2771292381017060556
+9c6c6b2d-812d-c722-e8f8-911633ae6f2c,2405803275,8283231390734816392
+156a0742-8ff4-f225-a2e4-5d03c5721087,1445881990,8260935835081424375
+41219ec4-ca3c-d5c4-afce-930eec6712fd,3990145972,8411299933613945063
+09211011-017f-9abc-9743-391bc157f7bf,811420316,14346929531268454639
+c81e18af-19a5-fd1e-618f-dc810fdbb4e5,1035420340,4335815818284003254
+46508734-ba9a-7907-494f-dcc74195e2c6,2483076539,4104606166022361751
+29b7fe64-a1ec-bcc4-5707-18e0299133c2,3053797249,12287392801879737519
+3d30dd2b-1897-cfc6-da35-223359cb92ae,1809307928,13572792932258353374
+6ec66b27-e74e-1da8-af3d-2f5e2241d460,1832410172,8546729753830806799
+35bc5ec9-97b1-cbc1-a2a7-a6b5d284bd2e,2535449223,11578664290365134905
+99273a04-3c6a-852f-4a38-457fe7c6d727,1152787260,15351604002263827698
+8211f5c6-e2fb-fa0e-745c-c8e691aa11c8,3591778705,12582808131374999809
+b72151b3-9ad6-1d80-e268-00b68d16a419,1626870052,7499624903390011599
+1c49b170-b7c6-2335-9c84-69034f5f1ada,3729137317,11653298885971704808
+07e06eb8-6829-0d62-54df-1ecc5c3b92ef,1339149812,9744683593492438304
+96ca61bb-0447-8e68-9407-2164e8936a5c,2940561755,15801973519517751375
+7422ac05-1ff9-ee5f-a7e3-ab7d80656072,1276255277,12905872414576578179
+73e2e790-9b35-252e-1813-7b0b7062ba7a,668266901,4898098093297467609
+9c4e30ea-a219-5058-64b6-a372976e35af,679390436,11964261051735486350
+16e89cbe-8281-9bb8-e514-b59c177e680f,3126031799,6903945502702130922
+79c38ab1-e473-fb02-cc67-9b1720d140ea,2202136655,98575870090584890
+5a15d033-ec47-e8ec-cf8d-870f0bf347ca,1313266938,4316450265913600271
+f8273ba8-dd99-9b3b-3a94-406982c37db1,2814695337,5410320219774132079
+0b4e33b0-9543-c633-66f8-8cd685514f65,3330243023,6720534307171892200
+1490bb67-f6f6-10c7-f6c0-e9b97e6b5738,1673636355,10698562055588248243
+9c07f823-6d8f-9622-6c8c-d0641005687e,3930342405,13484910243202545426
+17ca3df5-2fcd-0f0f-5ee3-a327b00e150f,3884669681,5333637817726313717
+52a62bde-7f58-15e4-ef91-35ba5b3144e4,3529497336,737689028242380564
+e7d7712a-8ad3-4577-6c36-0053f9ed789e,542102496,1259863654819038893
+9ac3a52d-e595-35f6-ee34-ea3b1034cd8a,209024569,91710684600048836
+e8a52a07-4e89-e5aa-89b6-beadb9fd4e1b,401689805,15059743166869440596
+2f0812b8-8680-a733-e1a7-8dbb324e250f,3487441655,8720533880623678905
+33c2db0f-68c2-076b-83eb-f47f3d0c6af5,4152778360,2203869868010481574
+207559ef-9921-4715-a679-4ba86f525e2d,1600003496,1590128853428431130
+f0c65395-dae2-f01f-7331-5c09f0a7d78d,1088495066,5108332169436745543
+73e3595d-5897-f3cc-bcc7-e5b2706c0439,4228267057,2694440545862232337
+642337a3-5503-03eb-dba4-7952bac0d1bb,2850214091,14578668808104849316
+bf4c1e2a-0e5b-73e6-a183-c88546d927e1,1413639950,11286219119754094968
+7d147807-1db5-4769-8f5f-5f0c0c0f039a,2980676218,5474676182639369258
+86640fae-7d12-2a70-8441-458ddd2143d4,2151444793,17299571476533922602
+473a82ca-787f-aa52-1f28-89d4961132d4,3010454113,17798020260507931481
+ac4042cc-88b7-3fd6-4b18-6c97eba41e49,4104644105,5932082836487641565
+bf82ca2e-e404-a551-b7e2-f457a7c7362d,1097463465,5402743992161201352
+c63c62e4-2b66-becd-aef2-f713c5387b30,564057454,13035129258221081782
+e95ffb76-4419-de33-55e9-d3508ee49dcb,4142086590,600878210088600950
+56bd0d03-3831-e37e-6b92-332999abdce8,1422005893,1588212539709275821
+a9d1516e-f3a1-d89c-405a-096622e71216,1292463293,13988204691446297616
+9003552e-2f5f-4bbf-c9fe-f17f49b942be,3888052097,6436721978972468920
+c10c24b5-3def-32e4-f97a-82ce6f26f986,1767853713,7830921716312818448
+f33784db-15e0-ef03-e4d5-457a4444085c,2658790338,14781979910228752674
+55abc706-8e1e-8de5-a9be-b3f75be99468,555869198,2310673201574447360
+34918924-bdec-fd1d-0903-0e38e766d15c,2924160911,2548594252592726607
+8dc0bdb5-2067-85e2-b826-c906e60f85ba,3651138373,7768792255254842461
+4b35633a-ce88-a3aa-7669-a2f6f4c223d2,3796482536,3600172073828289434
+0743d1a2-0bb9-9025-d024-6e5d220c8129,4023290078,15494414881347941733
+7404a984-b90c-e6e4-1edd-beb505f6159a,4074872943,8231901738989066396
+e13f2758-5ef6-f599-ec38-59b0766f06fb,2761272116,7041544731718785141
+59feab6d-63cf-6b88-6320-3f590c034480,358172463,3881328777059988200
+3c0efc94-957e-e633-65a6-d4db03594caf,2665275370,2714681440535090844
+44bb82ef-9179-a3ae-8010-af7cd613a1ef,2472480736,7842804176141957013
+fbcb8149-b167-e617-a377-408749c9cce8,2794420266,1365410445874322508
+7be2e809-c69d-c80b-bd6b-32a38d5531b9,713019628,17442908173998371033
+fa13d64f-5a3c-4d89-6fe6-48edc3030c3e,1569954654,8863423627656105979
+b99128dd-2909-9e79-05a5-a709b7c6591a,531279977,1879431753754884880
+74e5fb49-2281-fc8e-7a82-36b5dd098765,1144037209,12977273435882321993
+8a86b315-48fc-fe4b-f771-9c1b853d5266,2390898446,6738152442277416224
+1d6bc7e8-7af7-6da0-c607-1f00aab5088e,2038460305,16167421701975122548
+8dbe508c-0ea4-23ce-8daf-d6a38d78a585,4082439857,9886408526159099786
+c19671ab-5eff-c50a-f87d-f62418fe0289,586268761,251693671458096182
+e27ed9ce-cc18-2b81-2fb2-f9256d099028,870793053,2626579211771713478
+8728b10b-ae14-c12f-2a8c-b3337c26584c,48999993,9071022567268857363
+bc8a8300-56b7-ea12-bd99-15626e7a5402,2183480187,15051644091739745493
+0520c56c-7afc-21d0-99f1-0163a667f4de,3147232143,11483404137495183066
+d7224a92-a31b-9ccf-81e5-ccd57afb23af,413212891,9211488197252132859
+b0551ca9-674c-7410-d811-d95ef4e178b2,4148952600,12057034721851542706
+4c6f4689-057d-4c39-c449-294ff650274f,2721301209,4740856787059588132
+d1dfa19a-0562-f4a8-dcb0-4832775cbf64,2900150296,17064313619243533567
+67017a80-ce94-b77a-ff9c-5e31f269b39f,1705042573,4105422459842772937
+2a5359f1-8de2-6849-ab80-6466fd192ad3,311065572,16103699748205524664
+c461a928-cd12-9a5a-bda6-6eb8f5d86cda,3375957663,4096874003572283742
+b05a66da-aca8-44f3-e756-24ab489ba9cb,4182753152,12663479984854746707
+0bc12914-d254-4bee-08e4-cd18e239078a,1547092409,8511325689493744023
+badf4c75-c29b-3765-217f-dd03d50bf1ac,3710203940,7254770600358193808
+00f256e2-45da-a5a0-8878-781bf5dab65a,998753319,17707937168634224592
+b1c4ed27-10b7-e43b-df9a-df9e3b9f8036,2108288799,5743006448309227373
+d9d2fa8c-f1e8-98ae-d221-3a276c5533ba,3262240628,10741768849349374163
+a1b0ae10-25e8-eabc-5928-652f56f27e3a,2410784235,2714335836300286661
+5aa821d1-e899-cd65-9d2f-0a303f958256,615646562,15022665230608967004
+2d582134-1cd0-45e3-342d-6139f383b349,1712841301,15683237950859589059
+6b99b44e-1b6d-b38d-bebe-7d111d3681b1,1468987103,4390727110200614551
+11af6c44-0b53-ce7a-b468-cf2096b2d320,2770958774,11633137467813719008
+5d6c9711-5d63-8a8c-d031-8e59a9738cbf,2632810500,10591695829838563212
+5aac6312-c66e-07fd-6662-4003a9e709c0,4043045425,7195429111426611587
+3177a459-9024-7501-21d9-c85f49db5105,3747823468,7713906082716796665
+097ad1ff-5510-0eda-fc03-7dffbfdb75d9,3972202172,10572577940848514613
+9782eea8-eff6-284d-5c62-948d7b6a1976,2971146910,9690321643412154178
+ca42742b-0955-8a6b-50e7-6d88df0f1f39,1748527861,1160367501900606772
+ec0b39f4-87a4-afe6-2d6d-5d202f18c1dc,3987868177,10504661020700726688
+823bebe8-9baa-e6c9-41c5-5775d8c90ad8,4001587359,5933924716736973143
+672969a8-b251-87bc-120e-a4c3b662e50e,955505861,957474531253314276
+aa37535f-516c-057b-d593-5bd88c21f6b2,464885965,5554230864206431839
+15c29fb8-bd6d-576c-4cd7-f87057f9ab1e,882679659,9233049237795145815
+66cb170f-ff05-ac80-5849-cb5b0dfefca0,1146196262,7613923989461647363
+78aa87b3-dae0-8381-4d40-3198a2a7fc08,556405793,18365418042991463663
+09d207e2-328b-de4b-0490-97aec79db5eb,2290011858,17687945495491855754
+cc6d285b-ed33-3d06-e9c3-8069d721a0ba,2352515755,8241919885536786284
+963ef028-13b7-46ff-12fe-4a4289ef8312,1766558695,11294324269326819516
+d142924c-ba68-827c-58a5-23c5cb9d69de,4160260324,3084535510635488647
+e3765b23-c0ec-9dae-0a3d-8caaeed8b1d2,1892400144,17691633223646706606
+be524e54-060f-face-b309-ac0f87d0a1b0,912210360,17509701529066570546
+b59f037f-525e-74f1-a8f6-80c93e6aea09,3419394872,18203401446581364872
+695660c5-06ec-5f36-e3c5-3d7a672e256f,2101877526,7809956683655255784
+f2108599-e7ce-095b-dccf-7e40ef04c52e,2056899628,3078588584880502374
+684140d1-5063-7b18-2bed-24dcb16cb2d2,4106697739,3522296689829506463
+5a383f39-eba8-23ea-3f95-3fcc209daf24,3014580587,6619106948973744753
+d115f295-2554-6359-0bcd-f4b9542959a4,729210230,13502710742672860989
+0d1693c6-74bb-6789-c871-d43d720c92ff,4273655648,1273332417668147583
+982adb0a-3835-c5a6-1107-6e4d5bdd4e49,2351274154,11642029300973012519
+9cf40c57-0dd0-52ea-8ee7-ef807738d512,398076705,17359903463947607150
+c3bfa3b1-af12-9678-b9eb-410634dfebe7,930007699,7291112126679549915
+de1515c0-15dd-4ddf-0228-57b7f85c482f,3811897275,14653811556489883677
+700da807-740e-1dec-f1f9-69be0999dba9,4025343290,11215809499719022513
+9ca46e29-5324-dc02-a368-f1a32fd5044f,2122724601,10222784972221383355
+b456a76c-521e-be1e-77d0-fb140869df80,283539943,7461012103615912559
+267628fa-b424-20dc-106a-93438993314d,2763280721,12456567234545093099
+8d5d3ff8-17f1-cd8a-25d6-c7b8c8bcdfa2,2776341369,55154432356523678
+04df8d2d-b0c0-694f-e4be-23b0da8468ff,3261975923,12798490648939938698
+bbc516b7-0c7e-8797-d09f-037b89bc75ef,2985425230,5305041093976448304
+98fadefb-2bd6-78ae-ccb5-a7a18b9408da,3926153831,6814907152336801942
+cda3de53-240d-e7f2-86f1-54184c44da85,2218490588,1017403570849313878
+e7fc3431-958d-b64a-b360-1ad260bc0710,1290357821,17358761199360146779
+393817d4-1986-ef3f-e327-509a222c9e1d,2075509868,7494756555352621118
+50ccdacf-887f-fb1b-ebd1-b7861a3f1907,2945711781,10334710607821446789
+5e9e1ae2-c717-2308-4b66-0dffc9e0a7fe,2521725260,14348399205165689916
+6de4748a-c254-85d9-cc2c-382fe5e8d04c,2108780732,14269894038341637683
+3b390e02-f060-33c8-247d-73765d14bcc7,725139103,10951784833169052835
+24f40361-1897-e480-5ab2-35ea06737bd0,4223914472,3293041070708791034
+bc16ebc0-6806-46e6-7f27-a5cd7fdeb51c,3846936594,14889182499656995480
+955344bb-a9c9-253d-4f81-39267b607b8a,2125123726,1820670037125378059
+73b219d9-2113-e9d5-33ce-695e09dd725a,1705058294,2487525292416877038
+d4c2e853-4bb8-c148-02b0-a81834a39530,525451788,2124837521222387475
+892af9e7-8c5c-89fa-83a8-43688986d6cd,3477692699,14262820778991057415
+b8b71950-fad3-7630-7dc3-e6da5f3eb01d,4027307895,4538430217641825040
+647e0a80-eca4-002d-7945-4041939e9aac,2249097963,10351383149889183674
+31b6034c-4616-b9c0-1248-4bebce9e0693,1419629138,17811071336003978050
+c671a51b-e5ac-58ff-0fb4-67acec40b38b,2933439510,14236817117148357191
+ada9a2a7-513e-a4e6-82ec-f23b445b2d0e,511958088,17104819759783766180
+cf222df2-0514-1d2e-3015-4ff765afbff2,664693826,13814432289709290794
+e0e8d1bd-564e-8181-3043-6fc58896e99b,1036390107,14256497642910514509
+e88acfdc-36f1-ef02-85bf-4056868c5f0a,4136137239,8990625046748918682
+8b56892c-a776-b911-2257-ac1629fb5bcc,914776533,16749020798251779573
+18aebbf0-5885-b7a4-0f38-4e591f776a5b,840889247,10085598936681090000
+f84f2381-853e-550d-745e-52906e27fd24,1143798703,1071738170985672300
+b8817228-a187-11a4-cfd2-51b86b95fa9b,156890298,443840190967884445
+44b8eb06-d8d4-5c16-44b6-dbacc91ced8d,2309754722,11998515176768303269
+24daed74-9b93-1a18-cde2-5c4a53b42452,3888550018,12728671914756389854
+641ad892-bc0e-8f22-8660-bb24a6d7a3e0,1524478150,2988967868453900269
+81a179b1-cbc2-f89c-c8e0-669f8e872554,1673292558,853523613320652604
+31700747-1160-49c2-9e35-a78745605434,2925562128,9042790400198745547
+6d0a7f00-d3b4-9de1-6f8d-11f0a741ab76,4082197436,13269752673389131696
+6cab45f6-9513-1073-e235-44e6c5f67c87,3463582550,13672692793057614009
+6ccc4d4b-28bd-a1d9-1b64-1bcd686a2486,3971547996,18387982745633438449
+fcc5dbb5-9f34-4410-e128-85192b97dce8,940215283,3874715433745796755
+12bde2dc-e427-651a-00d9-6a41dcf0ae17,2916579783,11247542036558543780
+f40e5531-eeaf-db75-36de-9c482d571d69,1233522107,14157735122482689039
+6a711326-15f1-d315-1caf-43bb035c4cda,432463074,8508113178839213835
+97655da0-6a67-55a1-780b-6e7a32743fc0,916103117,8572624018359029734
+3ccc1f86-cfc6-e6bf-9b1c-2b6a4e3d7695,4068418074,17304490328767845169
+b00b1e05-33e1-245d-3389-0091f5b94e95,2247591885,4649469877212041617
+dcf6aa81-a4c2-537b-33df-ccd674462273,350200709,8546583108653487104
+de849bc0-f412-7362-d1a2-df510606b94b,1214881837,11121365212792377145
+9fb660fb-c356-6b35-ffed-5f738285ca40,1933430146,6280120304004211146
+bc11baec-2275-01e0-9d1b-00de9b38f06e,762017950,3635146171325075076
+4120b6e7-f90d-8660-7011-f23f4de9ae3f,2831779806,7344610262922532067
+15455e3d-320d-76e8-b11a-40a0e1d4a781,4259736459,14803877312766175629
+b9abcd51-df58-08d2-af35-483067e91b83,2079243940,10796200314011260114
+afc7d191-23bb-0fa4-c87f-c9885f42cbe6,2876045306,15640286044630488023
+ba573f22-de5d-a35a-fcd1-68866bb21ce2,2122313068,15287899877519942031
+20f74bbe-fd88-e256-7bbd-08b715a7ac2a,2664491070,12984486665256143554
+37b42bc0-44a3-161b-3d46-6f81653ab0ea,3369299820,17349517776685545832
+bc90a546-0188-1321-6e49-4a2f2bf8f7a6,1993883185,4040133130693321519
+fcd2dfb5-b093-144d-5184-e063835c3aad,2413519250,4264754928305014805
+5ee36e28-7e3f-5a52-0366-9e2a44e5ceb0,414547812,15551601227547756900
+ec313132-6a25-5473-0836-4040dbd1a1ad,167678323,10724088205938376040
+8333c955-d9a8-bc69-7f36-d1f4a278830e,230029040,4507023882930445427
+60a6705a-deaa-4f70-1dbb-37930cd6a833,2841924947,17415574230717776805
+7088092d-210d-5baa-5966-d6fb7346b6e4,3491028674,8474829272952208188
+2428c892-dc7b-2900-c092-5751b48e0967,3947704130,6474634921656582652
+4289e707-4cf3-9757-f78a-8b08ccc77a38,2826210137,10233898896891831166
+61474ade-4ee5-4bb4-740c-e3178232d50f,2444940656,17627115100265317918
+876d3db5-d06f-4a41-7ff6-0c2ea88b4dcd,1013599137,5272109634089733869
+afa05197-970a-d75a-3994-3f70d33c51ab,812842931,14244537309384876566
+1bb75899-6cc5-feb8-3cae-f7c9d7aa60ae,723410776,2199527405550979036
+d52e8308-b9ff-6324-52ae-05ab7ccde45c,1738566458,11347242081156226412
+f7609487-6b55-0a10-77e2-4d63a01cf82f,4227793556,2000707140087799416
+14d50d14-eadf-44b4-d54e-dd5dddc10207,1836933341,10552354720988034565
+0b59b44a-f705-11fb-a396-0bbf4e23d731,3921341716,576915977512211081
+18ae5ca7-7b37-d284-1e64-217f24d221e0,1288483871,3490238212945828301
+577a23fa-c960-4f00-b8c2-4105ca1608d6,2146767595,10677126913373562099
+9954d143-f1f0-46e1-d778-586feec466c2,2002071105,13950936762404989261
+e5cdb0bb-6f31-8177-145f-cbe31b4f9067,969774456,14935379476318266938
+164e54d0-deb2-775b-ce68-4f57f7806fe6,4249660412,5449196983079125216
+593e6dcf-5759-30d8-5d0b-891093530639,2057711614,6789627977171948898
+7eaf9b7e-7447-9034-ede8-932a2af2bcd4,3103756588,6986265228452971999
+6e3cb694-f38c-4f5c-cbb6-6da2250f0daf,669793701,4408347776195413775
+af2899c6-8888-db43-ce9f-50e56e0707fc,3568736011,9880297747173457797
+2f4b7279-d93c-d2f1-a182-f0397ae3535e,3812246684,17368140805606823303
+7d93823a-48a2-f9ec-5f78-3fd390bc2413,1912864971,17593426632118892229
+0aefe03d-e2ef-5781-82ca-48b2be9b9247,1411682168,2692560968030460112
+47d99d26-eee4-ba92-e68e-c251edbcf45e,868108842,14035085088106938367
+b5a627f7-5292-753d-7712-ce974cb5f7c3,171714433,10516586239890361775
+b4cad9a8-5732-7d69-25f4-a9e8071247f8,59580509,108531997445422069
+74715e90-3be7-ee54-5663-97e9c6411dc8,3093806957,10404280484028806779
+19a6cc60-79f1-3601-1597-9187b087e1fd,2886229408,6925453388870393067
+4391016d-4738-91b9-7fc7-87ff39be3745,1414188037,11593389642574048343
+960ea52b-bd67-3452-2cbd-34f85b1cd821,1186912298,16021202573148292970
+8f58c680-1c78-8890-0684-85f934ac176b,3724117087,12324667115514746236
+cefa7bde-7372-8583-d00c-27369d5f791a,231478555,7224662630918663993
+e4f47c86-3c5f-969a-0264-cdac82f90634,946595898,17432626984135980406
+99e28eb3-304c-8b7c-f105-3d4471cc10be,3206538106,17324898265116961135
+864dfe26-7bac-629a-deb9-38dbbddb215e,636952575,6664951679695848514
+c87da8f0-f2eb-46c9-95cb-cead39803d33,50044375,9810773326583970358
+13f2756e-427f-4065-3e6a-bf66fcc7def1,1429990513,12528258396725173654
+3f80aae5-00f7-0c93-8d2f-4b6ebef82376,2331938954,4969618943696218730
+9f2fcd99-f31f-2c91-dda2-082ba0816baa,3654446025,15109142265385874275
+8588604f-7f60-c1af-c017-8eb09ca6d4c1,1062602824,11264464327438686851
+f4efbeee-4c35-ed40-3d67-8281ea123322,1695370176,1298428147550039616
+0ff7b559-169b-bced-b7e7-4f8e4761ceaf,3316207712,2515473269401352708
+17de3fde-2ad0-0cb5-7242-5979843fef89,3339310452,17551666263278179819
+8c26e25d-fdad-36da-66ba-554ea26e11ab,1268396147,1271075187669627285
+1a7eea0e-61dc-2b6b-e688-6b9597185791,1229853132,9383799459165233138
+8013c956-df71-fc81-adde-c654e207a585,3035119873,12260227793711909363
+0daf9ba8-1d6e-8da3-a83a-c29c4b2de810,1908196339,16585760958601525726
+adccf20b-3b32-c495-ca3b-12576b097d23,318248713,13382595629418049300
+eedb79d2-f80b-578e-ef70-b8a5c15cf547,2446528950,10128501606375058743
+37d9f173-bf4c-16cb-8086-c3da7bb075ae,3515341191,4281956091601516477
+73d5ea89-1e16-2680-98c5-81b4682400bb,732389466,3651866025820116401
+dd95c050-e1a0-03f3-47ee-8e64ce2538ae,2814710074,8366586503526493720
+4bc0f6f2-73f1-a0c0-5a36-02e57a6257ea,4199131960,5970759816918011803
+556de1a7-c11f-3376-a83a-7366e94f2a1c,1316911317,585088699523229876
+d027cedd-4671-a6cd-8eab-540b5ea82a88,1393461456,88564070497501429
+8fbed4d1-b10a-a5ba-f874-66cbb67e5f5c,2566207729,6053772696067408218
+fd0c0387-8fe1-a44e-4e6d-687321dcf812,3160075724,15284027663169906223
+e216a68b-d083-96c5-bc89-2cfdc17d3a79,2232931662,12599028236455589218
+0616ebe7-3fd0-e808-249f-75a99e799e0d,86682886,6612347005423655411
+36a4e9e3-b5c1-12f8-4d07-075c1afd68e0,617710693,12648062744728702804
+bf9086aa-559e-f345-9016-ea75ffa51153,1385730596,6123720089387730592
+34c4070c-7a5b-ee2c-d817-e174916a7b11,531957015,12485710271369105771
+a53e4400-e60b-acf4-3efd-683ce42b3fef,3733286141,4799818124791255088
+2177cd94-505b-355d-ec18-e4ea1cb5d622,242380141,7758689871205966021
+964f885a-5eae-e9a1-20fb-8206ca241601,859605956,12441907365881280196
+d84ca990-90f4-a55d-78d8-c9a68fe2c128,819435787,12239321927496061620
+7d3f42fa-8b33-f449-2f94-b5abf49068af,1185611389,663497238751835272
+f6c85dc8-d7fb-5268-bdad-c3aa090538db,894711005,18402198761626993809
+353251f0-2dc1-b8b9-55ab-a7e26aeb6b50,635556964,14951859605894564190
+df1c1205-24a5-7b74-07ef-838f9fcd32ac,4073236456,4724786972900912970
+9b4ac251-b7c0-20bf-7493-23876a1daa61,622045829,13243069986008489665
+bfb69f0c-cb9a-bb7d-d610-2b283104c3e2,3446727161,9916694398806108032
+0f86f53d-3709-3cc4-3eb6-c17b89d95f62,2328337152,7110411788104511183
+ab7cc1f6-b238-ab7a-9a86-c7fc19978946,3569696696,615880054641554720
+dadb5a3b-9a55-13f7-1755-56d283a15489,1646113097,219725327912124769
+6d687d6f-eca2-656c-1b8a-1f448c383d71,1973713618,8899790761207302256
+dfacbfa0-cc59-86a9-b2e4-e06d01f39f14,852148927,13163216619640808946
+ba589792-765d-e8cb-86a0-eb23c45f276b,2381763059,3303529639620838276
+501c18e5-d5ba-ee5b-72c7-3bb8bdd3a2e1,287195675,14339394333280868051
+cbe3e4d6-d7d2-4da7-7795-9fa9f6eda37d,232386644,9252823555023054675
+463907b6-9330-f36e-15b4-1ab5d32f22e9,2363629322,7238080894204816635
+6a566953-fee7-9ba7-94b8-785f8f4ce7d4,4065326058,11447827285734372499
+736a3234-68f0-e130-382f-6f7ca1839fab,1799516051,14016259742064043880
+3e9c8467-312a-3c7a-e452-e6a66207d8c6,675557633,4378418355970040566
+57046691-4a7e-a753-9c12-2ffda0ff3244,2639430762,14963963885051932148
+897b6b27-dfab-38c3-1d25-e0fcb1c3e33d,2206320908,17145450502558766452
+bbcd472b-0199-cc84-f061-b4c3921180dd,1762878831,12168014503551186755
+f2544348-3a0c-b591-8640-3393f47b57a3,3297835604,15276125687028174886
+55b380f1-4da7-386a-0983-f554fb35592a,170165662,12307547619108995737
+466bc47c-66b6-1d7f-9180-80ecf8a43db7,3508907958,9473533511745411249
+d0bb5382-a3ee-be5b-e635-f0b5666d76d2,596955338,14506240556888088541
+855463c0-5ef3-b53e-31db-632ccb89b719,3330685570,15119267074389555572
+86b0ae61-82fb-c252-a313-dd34d3038172,2259586406,1604866352124803022
+d6fc10e1-b5f9-2d72-95c4-788a6159f46e,1651255004,16668961026118105918
+237cc5df-9535-9a44-2f88-22fd34e52bf3,1430939043,1604281004607049023
+19c7d13c-5bab-ecf9-7f7f-4f312ce053d2,3744767239,2300724381559648046
+26a52384-15af-ae5f-76ad-ada32412f4cf,2426334702,4814026117373188075
+245f02c9-6b75-240e-aa1a-73d28dad243e,49841605,15809885531015521679
+e7877f30-332a-b9a3-1d64-68297a0ca165,559025393,8454890433818636243
+00629b75-16f7-a58d-ceea-222682782ca9,732330885,6877865949226169582
+3125a55c-f17f-6574-8009-ea7ae1abe43d,3463620891,13730611984372564570
+25e40362-ad71-0668-145e-1dc64f4da870,3724343047,4900027645856798985
+1a8998d9-3ab2-d482-23d5-4ed25c9a42a8,3039694816,2419974653391593048
+569639f4-b633-8111-ec94-1859bf23e9f3,652798998,12154537997450833730
+881a91a7-6a16-2d14-bbb6-b23d40931cdd,3479568547,14491278255147633885
+9c681ed3-8cf1-2e61-9793-9f32aea360da,740145345,15672825770239985287
+68e82852-b270-9052-f382-4115323be38d,2966246936,7944520521724323086
+7681b295-d878-0926-e3eb-ba27fc277df0,3441924356,5220153541134106765
+841d2b0c-0e16-1c93-7e04-763eb6fe3915,3616008401,8408533139219117509
+1906756a-add5-1a50-14e1-c084d9ffd198,3014298702,16610124684177370626
+61338b70-3136-15d0-9067-a97cbd83314e,2162274643,14120776699436825437
+dd0cdf13-62c1-1be9-9eaa-7c769ce6e90a,4683706,1452066294020142091
+4696f790-4f35-1fa9-b3f0-c5c07ddd7a93,1371579983,15218485197804797015
+1a12257a-712f-2725-6703-49d3f1628a26,2566543547,8713111648176586371
+92cfb3f0-1f0a-23a5-f25e-d8a98bb81841,311348331,294206671668104680
+5436c749-0e39-502d-c381-b372393dc7ab,635297386,11500524394264660259
+869b20b8-da17-7a50-b9ae-33aa669f1d7a,3062855192,11893444306580066366
+2914c936-c8b1-9b64-fa33-fa76f6c5d59b,2037056365,5716979701295571658
+32fb822f-550b-695c-135a-08b129d1e4cd,2861952013,10519923534628595141
+123c31e8-9965-b9e3-2422-9db8980e05b5,1316646263,6003688406160038178
+0fb32dd3-9ead-f724-b5d7-ff0a82809458,653150327,3948254466717828041
+0462ea6d-b9eb-0601-ad90-7a15fde31cb5,668081854,15686665569518299580
+906b9c88-5d42-392b-b451-bd7cc9701774,2008943297,3520541289900069393
+1cf5a8b1-90d5-81fd-62b2-3df57d396f84,1899876094,12610206943978248723
+299ebc62-cf9b-ea37-8f2e-08129be17726,234152161,4026840926249775356
+dd689eaa-f55a-6e2a-8749-bb6183c7f03a,157743155,2872081012323269843
+49290f61-5c6f-43d6-8995-37ef3b0bbc3c,4195941145,16145574150838703799
+140c9e33-8b94-221e-3446-5e64205dc37e,4113439917,3217185591764118672
+949d26aa-5c9f-8a9f-b5d9-bbc2aeb238f7,3148265039,11673417108811357349
+9cfa5756-6ccf-c897-d413-555517c9642d,4020928696,9309426416519831970
+0168840e-d207-8609-42ce-8a22ae44132e,2235759056,17883555331609301824
+f00b5102-ce79-d496-72ad-7874a8339bff,755737061,455026906140527697
+e392ed0b-cc40-407a-f7c8-510222e00395,2423860148,14453700758761191417
+1daa68fc-3701-8b7f-3a53-7720d959c3e7,998166983,9289512074888319248
+bf0b207f-3797-c488-3cbe-458f16981da6,580074382,4290839783122943971
+e3888b8e-799a-14e3-a7ef-41a54f052374,3515942440,12792321158570114678
+2aec6389-fdb7-bd99-3a58-42e47a217aa3,828032675,18251859154605992827
+e8fb7a73-1bee-a1cb-2f4f-6faf535ea677,1635707961,4146273948518637998
+5bcb8b8f-1b0e-76f5-efdc-5e0f2da1072b,2098627387,4257204073176392183
+d92147e0-fff9-d472-ff1d-be7b36485769,1384896792,13135399648575248897
+17e4c9c1-dc85-f6f7-6789-c4e17d934754,3106020453,1288178101199472138
+c5867d18-406f-f1d5-6cd1-c39f969fe69c,249401105,10253916282110186379
+0ba2ada7-c52a-5cdb-af3c-e17bdc4c0b61,3911752321,5917525353974976010
+4ec108d8-b034-e002-f82c-1e511a8d2582,997653793,4754904093105101262
+519e86f2-feb5-66e9-a9cd-6adbe494eb85,3701858687,5606188102717999620
+e43f014d-e5a2-3bbb-57ba-c67bf43e0343,67978420,10875131805043054927
+eb4c7f78-cbe5-3b65-ba3c-f89c234dc0b2,1608132756,8093751006563528124
+30c95ec3-6073-6160-c605-43d6017f4045,952024171,16948124639107205650
+74820d64-683e-2b8c-5302-a13064eba6a3,753493297,1552137045322011477
+70686b6d-0b38-2d0e-8dbc-83fc21605042,2546197189,16446433464131526413
+1dec2dc7-8828-a386-6159-84902271db0c,1009119946,14553775323576663146
+a5da4a52-6016-9117-ad43-a8692b505481,2671188304,674825487249578616
+e3ad0036-8561-e468-65b6-e28eb0cea094,4256033100,8256213116206877223
+f29ad15e-4611-86a1-0072-1ee0eec119b7,3621025638,16138764196689446113
+ad317408-2b72-85ed-b7c7-d63082e0db16,1222108650,13788584947185338830
+8d0a603d-e0d5-f775-5603-fb3cb6957844,182563195,5977369177112358132
+29e7879a-18f4-0a6d-402b-2135f673b76a,260259109,15407793480612142326
+63692e85-c247-905e-025e-a87d81400c3f,3359787681,12886951187716388438
+48c0049d-e9e7-2302-aebf-e4bbd6a4f6ec,4174246461,8490488122902509606
+5e68f917-212a-1c5c-1a0e-742013dd6bdf,4274728458,12744588915200698888
+daf7c229-631d-9af2-694e-26663ba24447,3613618821,8045281698493444087
+6982e45e-0d91-e662-5e95-5f13a3e9af4a,3651652741,3858989899781790572
+608a224d-c576-8a92-9b9a-157e5976a052,91366706,17711492153841790653
+c125e123-b583-ee52-b66f-648654827c3c,3953996266,14066816672471253928
+c23dce4a-07df-2fd9-ce84-e1323b37646c,1770887616,8586043272945144280
+1a362988-df61-36ba-fb9a-e2efbbe67c40,2396848253,17326224998697171530
+88901572-44f3-d42a-14ba-e2119867726a,3613843882,2672495080497118025
+053c15b4-f251-d727-8bd2-bf59111f1498,61102376,11299479643817372411
+0a09a938-0670-0581-0c67-f0a549cfe261,131762219,9147014458338212748
+2b3a1c8e-99f1-3cd7-0a77-fb58c6f2db9e,700646936,482877465047785361
+42bfaf87-1852-e31a-9770-a31f3d0a7487,2638118994,5820374992884915150
+4d2bffe7-0c89-d0d5-4b90-8316af2922dc,2096459833,864129135510311325
+a652f922-cb89-ac4b-7569-79a00f8bf08a,1220821287,6722236120511187124
+298e6d8d-3e77-bf5a-2341-bf589980606c,2670758107,4393412625958027894
+8e46e270-a778-4119-1335-e69974d39b78,3124741341,10460960791945526827
+c69d084d-9f0a-8c53-dd73-775a5cecfc0b,549647796,9100718774596309232
+fae868eb-6e2a-2e20-bee1-63b12c3c72ff,130534297,13569433663605184792
+352ab42c-4839-ab20-52dc-7ba38c360556,3970415582,1670422034284668853
+7e98b8d6-568f-7885-3ca0-c741847e3166,1490030131,15043770340841715706
+3a5fe43e-f5eb-c8ab-f9c0-33c3b36945a6,2917725956,3834954669267779297
+29046b5f-870f-3fbb-72df-20b704d19c2f,3987869930,3442119399019103977
+0a3a5d0c-8bff-a4f1-ab4f-f8693ddfa1f1,3425974876,12389558208504703269
+b29e8ce1-a56f-af16-0702-15210c2e5253,3955032591,14096816733123089500
+1df948dd-e2af-7f23-fc39-9df8e77e961c,3130503266,12621972786642524786
+d7cf8eda-fb70-5dd7-a7ac-f9af0537cd12,4116079413,11174394226175871161
+c375dc84-9c44-63be-755d-2c461ec0f9e8,4169094756,16339778797090350776
+4faa2bdf-8596-7995-e834-79a535e90680,1550746921,13432154555366101517
+233a3d1b-4489-e4cf-ea36-30c574aec9e8,3500848436,16188761146518380990
+cbac2069-5bf9-a37c-2b51-3351413e09d7,2926231678,7398801805140949270
+429e1152-8ede-09c4-1b50-755b03565adf,3389742737,5574170454174045453
+9150a756-56c4-7c43-fe72-8edb3b438781,1442355415,18384621688514581026
+45670e0a-6ee9-3c20-8d3a-0deb1632fafd,4064902371,4759991141086950852
+3594834a-76bc-e257-b130-96ddd67b694e,4239301709,11134289287330709762
+f724c80c-ce06-fb2c-35f3-2251c80d466e,3115802979,16016064661414444719
+b7bdec2e-2693-9e39-963e-a071eeed269c,4043159688,1869976729713213269
+7cf231f4-41ac-3e2f-dee9-21df0e32e822,4010410708,7536302449131023266
+5ea24ea7-4558-80fa-f7b3-882480ddd787,1518382670,7488313164468653655
+5b71c657-66f4-64f4-f832-394863484d47,4109787378,5526394235803435381
+619e5a3b-c0b4-6efb-aa31-47c0a1d9eccc,3764341187,18316332987766102430
+03f2adef-286f-d24a-ea40-371a64d36b15,107174398,17320224743187919281
+587ae88c-f560-5658-4fd9-0ff856ae8dbe,3074101349,5797448920449265663
+10bd7972-f2ee-a526-6b5b-0eece20532ee,1429467546,2374774256269499747
+3246e5cf-2277-6732-15ae-fa1e910ab603,486284875,16578720564343605592
+a4af9afb-6a0a-3001-d67f-ca324bb025d0,1034138963,15122602839330334244
+5b16b4bb-489e-9f02-ef49-5b9d08aed572,22611297,3027438289919482453
+ec32a6ef-cd9e-9c65-2890-a830b55e06bf,664235954,470441709432415200
+519b5c9d-77d2-ffca-4864-ca9ea2d7f651,1273477159,7407515523731073129
+e2166a08-6008-6c07-d233-fba8e3b9474a,3664866721,8636156317455493602
+2ea63271-a72f-24f6-5e46-ef1099033b04,990483067,3866651702279788833
+84604eb9-08ba-75b9-02b1-eb50b3c901f8,4241345025,3940632945549595485
+5d3ab313-a0c3-3851-ab1f-9429f60c3c73,1565559276,8755509641420499956
+26348638-c0c9-15ae-5254-b37af4dffecb,4113583303,16685853826266730510
+882ca935-4707-e093-05a2-33953817b249,1912650863,4244300782010074748
+4884fc29-1e83-9cac-27ef-ab1c141ae2ab,1176975716,355882918408895172
+9f5a4710-6dba-3c29-c4e6-3964a5be4a64,3709383170,8793785574876320253
+25d86c8a-6868-6267-7231-746ff28da99f,2740473664,12240960804792997414
+b42935e0-e100-8a2b-c149-e20e85884577,2226859733,6403081200296634689
+bfb9af9e-2055-4518-4cb2-349001524f9e,1627358285,15367590707924958610
+bb10da5f-fc1d-0365-6f63-8c31830cc475,2972765676,17078285969486764380
+cdd7f2ba-7316-60f4-0fbf-d3de3f90919a,1637968547,17122860167503605042
+136a5968-ecba-9043-d51c-349d5a696e6e,1141059491,9455481639412974922
+a04a8626-e9a6-4d9f-0d35-e6daafd54854,899460458,7441850724024934288
+0f959dbf-3a48-ffa8-5404-5a9866994951,1154961389,4043287623821127819
+193830c2-4c97-7718-e379-72371bfb26d1,496388894,16096544989820203049
+1b0bee4d-521b-51ae-9051-95f4a48891e0,3567785302,9663893254798342954
+1aca69a3-0aba-13c5-d83f-4930faa16a97,1795460899,7889770463543416939
+aa630598-4fc7-3c95-9fe8-b8d3c2a1c611,455239200,14692115640702672635
+c7b87293-878b-f89f-c5b8-e9684b503273,397958391,11941641273961218007
+5edbfac4-1e39-0a22-6226-444b6bdeb24a,2771913547,9576084395890234851
+8bc3d311-866e-69df-b70e-7c8ffe510414,3346305819,870987737625463181
+9600f75d-f6b2-a4cc-e088-c87bdd3d17c9,1674630389,2687206990744125852
+fc4a893f-3b7e-4878-4bf5-b5b19b291f75,1536860601,16278393168137457133
+85c57c2f-f800-08ad-fde9-140ad7aa7d48,1621778062,14867235684023133860
+56fb2a79-55b9-faa8-3995-c9b31b5497cc,3585516513,2534096041019605318
+9776b9f7-ed40-3e24-d6bc-14f66a78ec48,3711183139,773862770398404144
+2c34917f-35c5-2807-1f57-132aa55f4cbe,717947398,12365838685529879831
+8d7bc852-3f81-9a8a-43e8-7f2ab4d64b5c,1370487084,7630532780138884033
+e2c5e860-94af-66dc-c72f-a79e4cc6d8c5,2812862599,7393018209626218742
+e8270836-fcba-df4f-d1c1-07b5ae906823,736781585,11120702044859599389
+a58e947f-1b1f-a940-57e9-7e334cffb5ff,2927353884,13339764833168607458
+61faf9f9-2f4d-ff3a-5cff-c87687904c25,2962654603,15092374608430596358
+e6c73152-ca13-0bb6-ee84-5ab38c4c244e,1234711890,15892035954428164096
+f7566f34-3894-f5fc-1a16-28e0d7888127,1607895884,5345580240267554656
+9fc2ea15-9f41-a17d-d72f-d974fa394a54,4285492676,1487938991402557269
+575838e8-153a-a985-c5bb-70a82e8dc990,3789641917,16490650369153665744
+d3bd27a5-cc23-e042-15d9-5f88da5259c2,1738089831,6825032730835984942
+bf67b73e-a625-e527-5469-2258f9c149da,1317505337,2155545187424161870
+95cc672c-76f8-6edb-803c-3c73e3bb6f0a,403328458,6265484697007171733
+74816a2d-9075-20f0-4815-f5f5cc7bbeef,1594545572,9266664023827068823
+b35dd66d-c9ec-29f4-361d-ba2b5a950a07,3472621123,9616688555351810061
+8ed03895-2b24-5005-6340-a45b2ff5bcc6,122416892,3651601827370061825
+986fcc31-99d6-473e-e76e-e609e25cc733,1528829200,4893803297147973739
+05f9805f-673a-fb7c-bf52-5d535e10df10,147829882,12296792123037001935
+14b184f9-16d7-e6b1-ab7c-f5d6211f4e13,3140809999,13426384750022561638
+f7a63795-e284-e21f-e543-ce77beb7a3de,418836427,5229912014876306286
+cd3d8058-ec9c-717d-7268-35778034a0e7,2112096382,956365662245452051
+f05f6964-876c-fd93-09b0-b7df99d18215,3457844407,66978047989750543
+055f3538-ed66-3301-e097-8908f8baac8f,4278785066,12581708198250750415
+0d49453a-a51e-3884-28a5-f90d6d112d90,3799382075,2890515270637869291
+fe8b374f-e19d-801c-f07d-ee3a31fbbc31,1105240198,5047318952858671500
+8b96ceba-754d-ff23-54c2-baa6da0e5fcb,1006056228,5950170979779341194
+88060f7b-e431-5094-fafb-12ab0ae3ef9d,2479472809,10965165411632141890
+80718748-173f-c361-d5a7-80973a77f74b,3416341868,10815805787125217206
+735c114d-502d-c6db-6c92-d5e35836971f,2576131992,1694215333027926779
+3b66474a-08a5-ff2a-a00c-0c9add8fd8c4,1893577990,1147399999914589559
+89a52ea4-09f2-ae28-5808-12a0851325e9,1535183170,9151827880615362666
+2b669d49-ddc1-e120-a119-6d32a8aab991,4109115115,11681595050196038864
+071f8379-1034-cf82-01cb-13af3df4a406,2560962287,7667805531841150766
+0bf812bd-591e-3a0e-1931-dc9ab80bdc98,1329673739,4462509921549212573
+79193734-fa27-63b3-a7bd-f2f796e9e240,1600416483,3676830371708197231
+42ae0e6e-1508-467a-11cd-577f2a533303,1021084457,12352644308041304806
+a95a5943-5a1a-22d0-8ec1-211559c271c1,870594155,6862765555621171114
+d2e2e814-23db-3b86-0e57-3fdde82d7646,606857148,3105776899697455122
+d029c5ed-2c94-20e0-e140-a786b1b51702,110364110,6718478144116913359
+6f67f286-c02d-636a-dc1b-f174166664e3,348685137,14208044491384847813
+3634680d-8a45-3a29-802d-002df6c11be1,3403190868,1667013276329793621
+7c0d549c-4209-19c3-a3be-808a64cfa4a3,521812357,8263840533110199886
+f70c4474-1550-58b5-a841-9412b4b8445c,846186558,54004352694889883
+1d83448a-d011-3740-db06-a41db699fb8d,1913394367,4781742162812212779
+f20c253d-bbeb-2c08-ff41-4425044a5fce,2275546520,17064118913504884921
+eef68bd8-3c52-9d7b-c328-44ba0b851c84,4069970670,4732938247523991325
+a0ccd456-0507-a17e-9207-be9b7dda91d4,2943161396,8434870933968721785
+b12418b6-f89c-8bdc-9500-1da442849632,2084347280,3553951309190654786
+e87c3fe2-5e1b-6f16-aaa5-b9366973556a,3162729225,12556037714627423968
+a67055b4-0434-11e3-d561-4081903632be,101292309,9651380022834787337
+3b9ab66b-029f-e8b1-eab2-08d0b0d2539e,3772831794,314418063897745788
+8817290c-0d92-08eb-5866-2e7b4663356a,3393545452,5748477029859883572
+7f3f17be-1462-b6bf-c38c-c9377099cbc5,1108506888,14445647291406671472
+ab16e42b-ae7e-fdb8-56c3-20c330b72f92,4000026354,9687668110468092362
+2391f15e-b8eb-96d3-b017-070d104bd369,2836237016,4354010757656353814
+41a57eb5-5fe2-f23f-aa3a-2f0e3f1ed07b,1815164821,5523791590112940309
+d8dee1cc-8077-d46a-500e-d675ea2aaed0,1714940150,12702107262259621620
+9ba4b529-bb60-e13c-b919-51a6133af7ac,2044588946,16460893480568134616
+2cbf5d54-a2ce-f172-5ac5-0d11c56c8699,2144581375,13781815917243000684
+94ee3bee-70cf-30a7-6c68-2a2365a242bd,2846950888,8739557479413931851
+0b3481d0-cf25-9f92-7b75-72aabb224e97,1419967232,8021066534224651208
+ebda4ba1-f4d3-ced0-0f61-700b34b0d1c4,2445385359,9441672551117204782
+c3575c99-9a6f-37fb-f4bc-53f3c8e65cf2,2828186456,7902158865546731885
+70001371-faa9-bc14-439b-aa9c5c9d90d5,4101111276,3728139421204199454
+db23c8b3-d15b-918c-18c9-059f3ae4d831,171206937,17598911071927306584
+1ead42e9-2ffe-d72e-87bb-bc650357fa5e,508201086,17393784042176766310
+5d49312e-7727-9e3d-10ff-4c373bd21aa1,852778983,10672892644463068582
+8fb32c4a-62db-ab18-a7d9-7ac3fe00aeff,1618782731,4091566425368716645
+d91cd8fe-d5e0-5f3b-5be4-0bc41992a65b,3184312576,13429505620495148368
+5c33cbb7-5070-4d44-43e8-f152043814d6,1279607416,16189625536796241515
+3abcd593-2751-a14c-2985-9bbc3140bcba,3813516931,17552342305671254667
+7f8dee51-6fd6-4f80-e6a0-f25854ac58fd,3509166391,3251649368002614751
+e4ad97ba-832f-3f4f-e940-70e9d8271858,2952928331,11845637290746530616
+0bc07413-07fc-4624-5839-624127d1a4cd,1645920666,15421893032695749618
+ea98e7fa-90af-de01-8f31-10ef2291488c,679854952,5004907126201701649
+6ccd4790-a4da-1d67-5cfc-babcd23dc696,719745384,5982036168001061365
+1eee6bcd-d39a-587e-07ba-8679702357ee,344733496,14773265745308944927
+62a13d0e-46f1-6d04-ec60-e54a7d2fe2d2,2444729981,7672319054006699950
+f10489a5-e1c4-b8ec-2e62-8cee6089f4dc,1362824793,3601561210381831993
+b6c98da6-8e73-ce68-cbc4-926bfa40bcac,2943637244,7860831689352685184
+ceb9e5bc-d325-7a60-feac-ca7487caeab3,3393055178,18425685720840943024
+2276a3c1-adb6-fb9d-2859-93f1a0b61832,2186958035,12557301900280444038
+e8ca5c3b-1b36-a014-cdc4-52b2abd8d119,4278620332,17070873611303582060
+8dd8c207-9049-45e5-40b1-95b234c6f8d2,1509688877,14310354522498804529
+c8ae9dca-0946-dc5f-5578-0ce6849cad2f,2397056809,4162810758398917651
+5d68edfd-e4ce-b686-f5c8-0875b8ee37a6,2375232494,16338108731464675947
+8150bc10-3f34-27da-334c-c5a9104ac50f,1029387515,16361850188517918173
+89abba99-78f3-1c8b-c398-15460903dcd9,3332037632,6014275613380067960
+82b377f8-5865-c0d7-6e38-6f6f4b8df574,2209800191,1116855720327866486
+6d0b54b5-c13f-6dcf-019e-9b2b84a54b81,3389465801,18304903046581167354
+5ee86668-3f78-fb93-8286-c38f891d7a4b,3027261025,8994741706532394159
+e46a65ef-74f0-4756-b399-e19bd5306d58,1028754177,16191348024553915359
+8069df53-30f5-3b14-f3bf-6c12d22b2c71,2842066337,5351505731671127561
+18bcc56c-3ce2-11c9-52d4-e61e70f05038,208944320,14421006633834488795
+7b3cb826-36fd-0eb7-b945-7b605388bd6d,2456509134,1552283577681674573
+d0e10bf2-0f63-088f-562a-3344e65d8aeb,2482921535,5940740998607125937
+5fb59b22-a061-e0e1-eb8b-3a8bc9b122ef,3724150206,16970013280181715168
+ed861049-cf3b-17f2-b175-9a5715f887a4,810170044,817652719519387241
+4d9f1d16-607f-1617-8da4-3d38ad3d391d,1505921410,1055826831195667366
+e2388a40-6742-9ce4-7d9e-836217f9c1c6,3564626183,7663910186525135697
+6e9ff089-2974-1f10-c0a8-7dbb6609926a,3008905579,15815855168170905346
+31d49a0f-aa51-058d-c0e6-e473b29865c9,2138722839,7200109600811017795
+642ac04c-668f-9b0b-4f77-8b61a3be498b,3589128202,17087119227412761401
+0d2d8c9d-6695-f6da-31b9-275ab3ee3a13,1807789831,13196515575009943559
+a17e789e-c429-74dc-5c47-d7210f535c13,528459684,10874838728860529931
+9eb3581d-8df9-741c-f449-e67df8105147,1175375032,6258646825250839358
+f55814ce-4b50-1047-272e-8e0dfbe35146,49536557,3404632046834199293
+c9ee71c5-9db3-93b7-0f82-6076131a75c9,3350500027,13277069424255502986
+7b90e61c-48d6-3cc0-c04e-960181551409,3565149640,13870623140765252869
+e619bd0e-ada3-1abc-5367-b7f2d416580a,182836668,9737254343759535764
+a99cc83b-1077-19aa-19ec-fb24dc94a116,3490601125,9799759165454689529
+ce8b2b8a-d89a-5dd4-b8f1-1f542c90d879,877030248,8272545081843670256
+ba9e30ec-bfde-1ea7-c71e-46af9ff931d8,1712063662,1192365297754887910
+0e332342-5385-603b-ed08-cc0eeafcf439,1972393185,13773542539180751664
+9e12d6ae-8f51-4eb3-07d9-f4b084e6c5a9,1725970966,633311869195589242
+df29e273-b572-95b6-6512-0c252ff8b147,2521294193,10727640869432309026
+cecb6768-adca-ad23-fa1d-a722461b0edf,1746572530,2391276070868721493
+20fd97e8-29c2-5d10-67f2-3994dfd1ff75,2313641059,3514596414303538735
+36597c91-35d4-11c3-3d44-dcd249cc8c14,2113425719,7990180936145843656
+5f546e98-b754-46d9-2c96-9d6a0d9d695e,1088339191,14013779837805648050
+a013d6b0-050c-bf7e-1a83-0bc5ea8e6beb,641541467,15771633715320772512
+fe579ad0-4665-4984-a429-a329e7fe8576,1543065759,17301573739562273247
+c33fb692-0bbf-5e90-933b-2611869ef81b,62686754,7619612079765301389
+3e41169b-fc89-7f4f-6926-2b60ad11f724,1158607646,3870201855899557348
+44424613-272c-2dde-39f8-f6ec16be4285,3030872675,4969784989959730085
+346cec3f-1864-1493-5150-f7fb692f4017,93117814,15605247093993944436
+f1848822-21ee-b18a-a2b7-2fed8a56127b,4196925542,6743516577539955384
+5db595e5-f533-d167-4dc9-65e4413c80b0,3744459399,4637657209300088533
+15ec5f69-b15b-1245-ff70-38888d2f7431,745374025,371464589900513689
+aa2ecabf-2e0d-460e-5e4d-75f9b39da096,1343359336,13962014431629741077
+526d3f3f-0259-4e73-4097-9b33bf9e982c,41100125,14817364701293410635
+a2ddc862-e461-d001-cf39-3bedef622b4c,3218744006,2458618284040053494
+30ed94d6-e833-8da6-5ce0-95aa06544375,1320440245,15373470736975086686
+9b939d21-b30a-18f6-3b01-b5e807c2114c,3029857337,4162133981510092213
+0d0a5066-0aea-aee0-79b1-1d310c65fda5,3637905943,3264548795953436717
+5eb03d57-4337-88d4-633f-93bfaf1b77ed,3923542302,6038414591838027195
+b32d4e71-b373-4071-c229-83a82b80c41e,2122817177,17379745594552275106
+9149d1f3-3b19-16b2-3b71-debd46af81ee,3279832100,9822268157759085859
+c515aac7-0252-f9e0-f1b3-20404b4c79d4,829527984,8932844525950516371
+1b6f1c81-af7c-30d4-1613-b4103fd4738d,1164960236,6759936445059453208
+014e9f0b-c82d-1c44-66d9-b813404c631c,303061904,13052393186965492667
+6441236b-b10c-5efa-8d15-54c27d38477d,1847569796,6921751323561834110
+091670d8-6861-c4e4-7f12-f55aa0b16e0b,2367107375,14134920909869335075
+74aa9327-453a-3add-f312-88a0c7ad2596,696173740,9705418306030403077
+9c39c7b7-49ba-bb7e-f1de-47f1a11849f1,1167223639,1500815443511509079
+77d95216-cf2c-de05-45f9-2c6efa36fe75,2608151553,14274297820679461410
+dfc52061-69b0-ed51-69a3-00a54bd0db4f,1918051106,17966635024991513361
+798f78b6-a8c4-0520-0bf9-7fefb8b0d1bd,2085989175,6369143364953628225
+12fbcc32-cde2-2a4f-ba41-3367aac1eb6a,1201516451,2788698639178535055
+6bd71d5d-6508-5eba-b023-3645a4245e6e,217789239,1180647861845604826
+7cb8d376-5c7b-ca21-b64b-d1c748aaedc6,2456421752,530499899219448981
+b096d171-afbd-d15e-7f63-1b0a313ca43f,1066993351,5068990640899349777
+b7594314-f8e0-4c01-a55b-87bda316ef02,2831137395,1545677890811784462
+cd3f8c54-f32a-4572-2477-83e7326b9e16,1200449876,8772262237767873088
+a1c212a3-4190-de19-863f-0fe24aaaa26e,904850478,10577165559905012389
+f40aa7a3-77f7-8ceb-db8f-cd9f802f6242,3463668371,2295383810582405608
+56816f82-0293-0ed7-3d48-bfd8d9606c7a,1581284007,11374760218972507697
+e131d726-19f0-b2a5-0a05-6ef9ad7384e8,3545835879,7241035930110482605
+87458b82-ae75-f2b8-8bce-4368edc78271,3563024497,11155548069188638327
+8fc00cea-7bb1-bfd8-97b2-3b49fab82803,88744591,10514711920706487149
+c4302b76-6877-1624-a536-19bf1be840e3,2590563432,5207737018400544251
+c3d8efca-8e5c-4868-24f0-31bc1b95b25f,2446503606,18007189326656606486
+366dd87a-1075-77b8-e465-ce5fa9d82cac,1524353753,11953043352845912504
+f2f22f1d-d832-8ba1-e7e8-a9f39026d1e9,1558932320,17569109579876047761
+21daf94b-ea8b-da2a-1ad9-fd634e8167e4,998937903,12785633767447805683
+5050bff4-920a-ad4f-a800-a62e5c481e17,2856667547,16902862486300417440
+284200c3-15bb-be73-467b-1f0673dc23d2,757428757,15434268235042428804
+783060b8-b3ad-0584-bcee-c79180cddc35,1402569369,4402903885399446932
+3a7904dd-af28-27ca-6998-75f61bf0b7e1,2061351491,612449693915713371
+b869dac2-c42b-870c-22af-f4ed71129a9f,1398230345,6681719919028434625
+388deced-781f-afcf-cbbe-befd5485545e,2487667783,17671593153023743949
+294c3f68-ccb9-7f97-c124-9d194f27f1bf,1606921056,3251548077253853933
+d137958b-44d5-23e7-1bb2-adf15cc123ed,2122630311,9678520119579787899
+ace45c28-ed53-2878-98fa-16a9251dbe01,3811652833,13701053602813083132
+9206ae6a-9b64-7ea8-c549-cc3e1f7b0b85,1038999468,16674810123642009451
+5572539c-6c9c-d6bc-6b5f-e4485b08f92e,3276753091,14313832648380085967
+e523e6c4-3c36-fe25-38e4-e705ece93dce,451627565,6076757314068303228
+c98767ac-febf-b696-69f0-88aca15d7be6,4046512273,4861716147455198801
+fff006b2-2484-6bbe-e3f9-dc5b33260b7f,1637942866,16992792611383504342
+03c383c0-dac7-0cf5-7eff-b0fa1df4c661,2792336858,7300027050800741576
+6613be91-1562-1696-9080-142d834b2375,4270680602,15182258842285437492
+efdc4f8d-99b6-1fb6-edd2-1af44d6c4514,437482808,14885277581578069736
+c7fc329c-8ba0-a3fe-ac3a-bb955fb46b54,180658120,7765258285820667527
+4cb2aa63-aaa8-51f5-a797-92e8b2aa48ff,951192413,14044357544432336781
+35b6d852-80c8-90c5-9970-d7998d2d6622,440767631,2282927279074307520
+2558419b-d5c8-e495-bf21-ccf5b3193d29,235292056,7594764568034496944
+e70a0840-4340-b808-f725-bae374c250c0,4101732028,17673052233037881824
+03d2dcaf-ece3-bc28-de27-8c115d54ec3b,1091928191,14553692685164525165
+8fb53566-978b-07d0-9ac1-3afb1778bdf9,1554557969,10310254716197203485
+6e704aed-c5ee-116d-22c0-832ee4f1491a,787945344,8056748635935655302
+5f2b2917-de93-03de-e355-84f1b6accda9,478209569,4134080141635936048
+a32ca254-354b-083e-12b4-834da713c741,2034979548,14959605702572127055
+c941a14b-74b5-16fe-19f3-ef56332acfd8,2295954601,14079247327768099240
+ee42f9ab-5e47-433b-5d0e-637306b21817,1417949455,9866235398213326123
+16e38574-9449-837e-47e2-a46a5efa9836,3379638619,1935816526415880506
+017fff04-ac75-f965-d978-785b8f108c20,191179584,10599671544882232014
+3d7f53b5-f570-bac6-52ac-c363bc7c3da5,3409828466,13757966654264096390
+1ceffa78-d07f-c405-627e-4891dbb45727,1995395350,7295441521400923964
+d473e072-ff6d-c812-c7b1-c64ef347d76f,3429447741,9199267450408234625
+f4cae8f9-5925-2649-3b6a-36ca38b4b1d1,3629148704,14470777762715662685
+55602021-2eab-8803-e0e6-e6923dd44117,2846678147,11004563034135163242
+0e26c67f-d38a-031b-dac7-02b03c3acce2,2130673166,6534811279715810751
+21df46e4-ee60-ade7-293a-7c2c918d73fe,2922006308,3004672365619728658
+baefa3e2-d3d7-5c8d-bff3-4b4f7bb5049b,1817361570,9352617022822267976
+cfc4ebc5-1092-2639-a36e-1e2b752e5131,689515973,12290064715617030273
+a212574e-0d11-91a8-b1eb-998223da5cf1,4147332737,4463461138574247340
+e4456b2d-eb29-3d57-686d-316648916789,867323243,4002007823190998538
+b8fc48cc-02fa-5bd4-50fa-5a26a6106a9c,1162205117,9810912582689264478
+071f0826-9f7a-31f0-e064-7a1939a777da,1207627285,10038134614012989298
+ff4c6100-b3f5-acf6-711b-0b046dde2ff2,3102992037,8976481550935849610
+b4549e8c-f8ee-fcaf-a58e-b81d355da81b,730520585,16825250746518187764
+01241af0-2ea6-5fdf-b770-c35aba09c0e0,2238225022,2411009659355717564
+3c5d51f6-07e7-e766-6eed-8c5354d84c30,2519279994,13999157462990755949
+e574304d-f1fd-89fd-b499-d7bc72cc20d9,2846331893,15211254114045861224
+99c1345b-c0a3-f9df-1bc1-5be75aa66f7b,3557733409,12908015877979589569
+3cc0040c-331f-9b07-910d-63e436d87d1f,629134678,6802992898313355820
+8a4d67c7-a675-36ad-78b5-854f950808e4,708019517,10823845095486067247
+4936f417-184a-6dc2-c89f-2319e47ff1cb,1603172250,4022330983470567285
+73ae6331-4f50-7504-9e17-ebd85d29b7ac,867758113,14123051296823590623
+6454d7fc-74f8-69ea-651d-f4c2729a5ac6,364780005,17868260812873496601
+d077fce2-f4e8-9dc5-cbff-cb1535d73098,656241722,11955769500269867447
+33859f37-597e-3466-f624-11c0d2029d29,1631739224,11975676794538877497
+292b4264-a1cd-8584-0c12-3af2e9582375,2548223314,10607423158909920515
+dd0e97fc-9cbd-6bfc-90e3-f026237477f4,2098550621,7102521104913555347
+2ff5aabf-ea14-0251-30c5-a7cde29aa2ae,359746943,16140276294331383865
+3ea2c7bf-f10c-7b5b-3db1-932340df8b03,232834105,2888304443881409112
+3a478803-d5b7-24a7-9cad-8f40be16ba49,1532774010,8353450132700889392
+0d2cac6e-28d1-5e49-8adf-79592ad86423,3118578770,3892952115747331443
+901f2970-a786-7fca-9cf6-5bde234bf4cb,2231744588,12855680256481852151
+34b8ff31-0d4d-6267-41c7-e94c2497017c,1928130840,18063609996627955969
+b0b84479-66f2-09d4-68fb-5f2f7a07a5e8,3551403180,10209849224288235311
+6bd1889e-35b0-15a2-e59e-55a07b9ffda5,4142737241,16483704073623850906
+6ddf9a71-ff01-4f9d-429b-43e056b66a78,1528707577,18312555291128858725
+2377f938-a3c7-7063-9ec2-dd26eca2264f,1402616636,8124454205275813970
+61da98f9-ac13-0586-b096-d8e96d5ef4b3,1443364538,10508639766996718792
+6516b122-8cc0-64a7-858c-c5893db8f687,566597533,791721421107441841
+f11a6ff4-cfe0-5e46-4dea-14eb0c73a48b,1808286629,11027120047651568076
+939d5d37-5d44-36fb-a992-92e447956f9c,821165242,12031901757189913833
+fe4c6b5b-071a-3695-a406-4b8979927ca9,2543266344,7734751955454087461
+5788cd40-dc94-76ba-cd6e-529331a65d60,1044090584,16701877558952319733
+8bdbd052-4d4b-b6ca-1f17-52b07bd88559,2516227512,7351194196716198641
+aea70cca-9e43-20da-6a42-b542971ad5a8,3187421287,2309468740881574289
+35b3127b-9ede-88b4-c510-b697b933a5b1,1030510421,13070823732145349342
+84505db2-295b-ef5f-43be-f4bda4ae49ca,1639197541,14088301389202372096
+5e875dc0-6fda-d1cc-0ed0-23596d49cdf8,3563626694,10105163243975455431
+cc540a0c-0e9e-47d9-76a0-bb94537c580d,3676758917,2185558167041421812
+a43d7558-f02b-7bc0-95b4-75dacd0678cf,2325169644,10461572078531086948
+4bd1643e-43bd-bbdf-40bf-463e587b291c,870083635,3363217678088013847
+fd579d6b-925e-79c2-0de9-878fca64dabd,1557902758,17273292005107225728
+79384cdd-990a-425a-4a39-9d4d7386782c,999106837,13322654513890259657
+c6a29c20-c1fb-63be-7744-616986feb790,307785641,15051473865952838330
+de834514-0bd6-062b-3727-8609d8d3714c,4024223744,1570977272933279589
+09da499f-8d09-d703-b361-653a5dab4b2d,571175658,15598235808528398045
+71a4879b-9ff9-e27f-eab4-8b9aad19a8ca,845869293,10727162473407463172
+3d43409a-640a-46b1-0259-c2ba21b07276,804368319,17427717950461320313
+da4b03fb-54d1-790b-cc71-a9b618c29b65,253095807,9378139865758899434
+b38fa469-2d87-8a7f-cadb-698367b887ca,3875054182,8686991038209277481
+5e513362-0289-0e87-1474-83354a55b59d,161302265,17740659503077276989
+60e288df-ca9a-cc91-80b2-acaf37f27aec,2799563239,10705952830616924305
+ee61f209-1f36-a2ca-f6e1-c66e50a82fde,3344256593,14333328070141941725
+82263381-415f-fe1c-0c7e-08d40862df49,3346517149,3869888680675236300
+08c642f3-f650-31eb-9018-1207c0573c86,3184731811,16858368259569027553
+7aa7787d-fd08-8479-c114-5d9615b7d61b,411551016,4341493166186589342
+b6a58885-a754-fbda-1e66-f2e401132c29,4195075347,2819490461930583638
+a9a9ffa6-5ea8-e470-ea12-734f0e3757fd,775942483,18307725238649904663
+5ef7174a-c97f-9389-fe7b-d8a5e9e7fbde,2293593302,3340124253278548244
+e5f71491-f5ab-96f9-1ff9-eb5893682c60,1509070994,17881220532471034624
+e204b5b7-2892-6180-a030-2fa571ecbcbe,4141196262,11848256185260967025
+e28581c0-bd40-6bdf-a421-7b2069208be9,3737229621,14970891300488021427
+f457b814-a97c-aab2-c03d-3d577cd03d73,225123483,2213862431174620110
+f8a5aa55-6e7d-eb3a-6054-a23df7d1a448,1488669406,7958696133493631134
+f54f390a-f027-db68-7205-e0537f4dc053,1561826369,8299905316794513942
+412ebc8a-b62e-3ff9-f0bf-64bb77277ecc,545480502,3836777694735164940
+66c7e3c7-cb1b-1836-d642-e42f081d32f8,4252742354,9355132740687415726
+4912fbc5-bca7-27dd-448d-d534c51fab94,146871667,8033234755791311111
+5d44978d-900e-d911-62a3-a283f48cf7b6,4252777923,4244923808919540711
+ffeb15b4-492d-6770-49e6-b8ab794406e0,2820109551,18377550108360675207
+d3bc3c24-98b4-f384-4efb-e8144cf00d89,1152336231,3365145877927096155
+9b620ef0-6d5b-452a-eae4-329e7ab6da22,2665718795,16528888331863201038
+bf113d71-4ab7-25ea-1acb-f79c8fc76df3,2201939184,70755969004254695
+649ee042-4a23-2298-cff4-2dae457aabdb,3257248097,7490868439766374508
+58e2c9ee-21d1-d43a-bd58-f696bae139d2,3164623324,15833932037363336416
+b769ca42-ea23-57a9-64c2-d5c1b4f218b3,2541073737,17745109595083282162
+0f4231cf-5d9d-a279-ac13-a69c115356c2,1600939869,16997656217163320852
+fa69502b-dd5a-69d9-3dec-845d6d4d1af4,3486326932,11332952635665738498
+1a5d641e-7178-db29-8978-bf436baba2b6,3501355396,8687701114177303219
+492154de-6920-e616-f24d-0cb5d2690881,3233652640,1432214402920555956
+4fed9d50-af86-e69b-8afe-e04308f2b355,2934257356,3976707910657466863
+9e2ae14f-a617-1d4a-2df0-c47df1a1922e,639158901,15731728514106644985
+8dd10c19-6c98-43e5-1fcb-72f30110d843,1612788920,8138169460885340421
+adcb693b-e71a-f7f4-0cd6-223edf9f59b1,4050741746,644236983075887606
+6a2a58f8-27f1-4c48-e0fb-ea7f07498473,870954009,6672517972341198980
+9a78b6af-04ca-0c6c-9355-19f5d128731d,171452743,13691378595524698819
+df1d589d-56fa-f3d4-161a-41311c44fe38,904828732,7370839521816584938
+3952ba40-17f1-5f83-3e78-03f982c80450,2628877278,16132658488237067264
+fd1ee07b-67e6-0bc9-4b49-fda4f47daf51,3155916463,18193970857650648636
+bd4d4c1e-6fea-c3f3-c34f-29dc837af130,1294716479,4969038812182635986
+5291dff6-9b93-ed4e-27f0-ccd6dafea078,3718034928,5577386099641460271
+6a944b7b-dbe1-111d-a5d5-50782cb6a3ba,3821081636,15778596031025166821
+e684d890-eaf7-0af4-e911-9dce44d51b69,1526588753,16735212170103922666
+cbccf6ae-ba64-49e7-25d1-d6dd89c2bd32,2788006680,1215600586014487838
+350790b2-748f-cbaf-97d7-ca83f541f1f3,3977229630,9345119821187697653
+f2395011-cf15-fde9-535d-e19e058fbf91,2567944270,4293699654334594395
+d5667490-46b4-eb14-4455-700805043a16,3427303249,7145034752762574914
+f1aafb5b-4853-8797-fa04-3697dfe24a51,582087693,14117002728078719856
+edc0e445-e5ab-0f32-974c-fcdd5509a95a,171585383,8919462696024404316
+df18fead-d8d6-ec7e-bcf8-17ec839ec0d1,41191427,13791809475105908977
+7157edab-8f99-a944-393b-b38cc13672ca,229245453,671672884168556672
+8208a7fc-242d-0945-3324-7e87bd42dfcc,2128298413,11874954144659324106
+b7ca31c7-0b59-354a-3a6e-390013add8c8,894170426,11844730859139658877
+007696be-c773-9ec1-579e-f681152bf28e,2224204736,4690538266696454171
+c5c348cf-a7e4-5b4e-8a9f-3300d9ee82bd,3302189813,12420258168646772697
+652a36d0-9870-21f5-6669-8234bec3b2db,853932888,5714129187558532711
+cd9d00b6-791b-32dd-f521-5aa15be15c8a,903860772,9616981128954048828
+fe911524-7793-3ad8-1e1f-eb4404bb8827,2364581341,907237250059163329
+323af049-6381-1d5e-e75c-76faf93491ae,1500636875,13687856154658895779
+5436d453-e080-8fe1-5fa3-b2909cd7380f,1741436848,15299924056029635255
+6a41bb04-f454-64d6-d479-5462dbe03fc7,1687758134,6725724770013833932
+21f727c3-eee6-9b1e-87c1-a86cd73fdc47,425182695,16424383538703780052
+7d5da331-09a6-6b20-3095-b4b592a57450,395208284,9720546122599224811
+fc0dbb69-f86a-e76f-3b1d-f9ab1fe56a0d,1405472604,17852426591343133117
+90f64f17-150c-1e6f-c519-2561f3e9451b,719129100,10269621761654038728
+c9f52282-53b0-f114-d873-3d1c4744d1d3,3301629621,2222020689868754454
+eb6f4bd0-1c03-32ba-9e1f-a396b296c337,3007454812,1678127210123649471
+43c34161-e340-cb32-e022-cc1c13e814c5,1189264167,18330229904909221860
+d75b66a6-9fed-c078-d2b3-54ba6fc0fb52,386165899,12380541360134791060
+cbe03ff1-6d81-becb-0186-6e7b6f4d2937,1504661485,2261286402429269650
+b0f14598-5609-4542-6f60-0422a5ac7e5f,1171935753,12261310699495420115
+2f5787ca-5714-0925-913a-38cf7e8fd15e,2501751724,3157856502489524127
+298d7a1e-c34f-c912-e3ed-b45837ce1367,2062221883,2532832611085509011
+a9f47d39-beed-e7e5-ab6e-a27e0a378fda,4281154033,6567082800037642896
+947b510d-6011-4c60-9162-e28148631a07,1196320370,16793262347646809025
+77e82454-e771-b1aa-4b5a-ea9df4f7c0b9,723719520,14309599618237419311
+b8059d01-13dc-1af5-7820-ec8ef32df45c,736850497,4726958149091725190
+70e8382e-9aa7-bc61-ff12-9a17f055740e,1078100760,1211535870672790406
+9c017ef3-1f9a-d356-2ed2-726e6080c012,351806032,10704477259441040283
+dde587dd-cc39-d3b7-7ed6-95b8c26ed310,475467017,749737782758696613
+539c2fcb-ca2e-e563-5a37-75591eca3106,1172593677,7707786492414915922
+42dcd19d-f2b6-4c2c-5bf0-3fcfe93839b8,1518254874,17970485368251894659
+1ca87f6f-0bbf-cf06-5ea2-2d1d3a85825d,2607371628,9114944273206024120
+2d296ec8-8d33-2d92-536d-888cb8fa0511,1685872062,8227101520352918062
+3b87e0a9-9ffb-1ef3-3b52-b22727ca66b5,2920886141,11698282479728779952
+03c830c2-12b1-b64d-3560-b69ff69e0fb8,3557342388,4978329433858109708
+fdd291a2-596f-817a-8b9f-4a5ad653969f,1585656188,2436681140166375986
+f838f177-da57-9e32-e66c-d85a9fc720db,1298699199,2597688599271546592
+87bfc3af-850c-655c-bd63-4419ae9066bb,3189026082,18401827881159656138
+bf6fd657-0018-c21b-7abc-f424dadf976a,4150128692,16470041076207593639
+12f93aac-99f3-0096-0c11-e71042c4aedd,2422509106,12898281362392717290
+3f6b44df-5998-c1c7-300b-fbc6f7158a23,3717523583,9301709735517133823
+1ee2377c-5ba6-6a73-2de8-e2034d21d6b5,2210852266,6819730788854669337
+d22169e8-dc40-4be7-48a9-fc899dd15629,787834170,1245365007106300099
+865aaa38-70d9-e57d-302f-096f41383df3,932735859,1968114162389955016
+75a5ecf5-21ba-8835-fa9e-2127832cda2e,2534187015,53583493491862659
+3a87e142-2fc2-b25b-da9a-57861d7be75b,1230704071,7003112752839256413
+65ccf8b6-2e7f-891b-86d9-2af3299766e3,2560472262,9334445271149795897
+6750a992-68f7-4d7a-2252-2c9087d2a5c0,995665900,12126326582215589312
+0d3b68b0-ad90-4650-873d-369363c3bec7,2357740434,10030552155334556158
+36827cd7-dae3-3172-c6c8-3df358ed5177,1675183310,1729182149110185829
+067b16ff-df60-af2b-e28e-abdee65aedbf,3800532275,12924120567615192347
+7246bd0d-a783-e396-55b7-968832cd884b,2814946405,15682371356300863938
+00b57163-d6b9-7368-caa5-ad009fa82a77,2578701324,15992219630618774621
+b01eb1bf-4981-abf4-92fa-dd8debb7ba8d,1563366502,12809122394986202987
+bbc372b4-133d-0e0a-d098-13493b851a51,1314719480,4767585498971390915
+6d49046b-b806-6bcc-46f6-9956184631ce,2829031007,12604406806306617722
+a700e5a0-1339-1e55-784e-d3326a9ad223,2319329655,17531934073755080842
+62032b5b-d664-db3d-3731-a2cb8fe4d350,4208728730,5605340203340176573
+d3b5b7f7-3558-0285-2827-7878c752ecbb,3775011841,680595915479329805
+f4271b4f-ab00-840f-135c-364f74ce0dc8,1894241895,4391045785992095428
+6dc2352e-a398-1867-12e2-965831a56fb1,3252300205,16149512877623423963
+79e68643-08ff-0de4-97a3-50e23b30ba63,2770522323,17228521665538333872
+a02e452d-5409-7e94-43e8-13e631c9b87d,1279631593,1855884075920343211
+b2423567-62a1-2875-fca4-134b2171e594,2082954562,10815508039866712158
+9892d8e7-2f4d-f70c-e58d-b2aeea522a3c,2712726890,15589646242080483582
+f60072b0-d7c6-b751-d469-634d81f72536,2536974592,9470421282234237704
+211825b6-09b5-700e-b180-c95d422ca526,4152297418,11382124169918055940
+95991571-6ea6-7b94-06e0-35d83bd61b43,2442806710,13142843639325093291
+fc07bd31-6b2c-0bf2-4493-874aff961f26,559225543,11259619980728849576
+b2c1054b-8386-3d1d-d0fa-6d0f0ef45b62,1835053024,9088924027833096328
+783387d9-5e37-3878-b1fc-72d31c42faa2,1146834709,1157513957209010645
+db8c1177-a3fb-2d13-68f6-43b5b110c038,146300864,17610103246721223377
+1467532e-d373-2423-7699-3e5bc182b87b,2151842582,17101077927023931184
+1e851cd0-4754-b3d5-8996-a9769bfe0f60,3953988990,3383137218650015510
+9fb570e7-eb08-5302-1588-3d85a226c857,593708869,9723530315585436637
+abe4e5d7-99d3-e991-a380-6654fc4a377b,1052025726,8744533091546333700
+80fd435a-756a-e0f3-24c3-6045daabbed4,69806690,944065740446172397
+7f7c99aa-1ae9-b677-bb53-4a8be6b8f064,518645221,11691628938820596195
+cb22225a-d97a-ba09-e55c-b55aed4fcded,3939568938,4545408402426203647
+8e3fd2c8-1fd9-f99c-22a4-b977cb94b3c0,1299925303,10727464565144539048
+970a1238-bc4a-01da-ad32-1e7bbfd2ed9b,4019001460,5762112499672489910
+ac539a90-5562-09cd-8c2c-8c0b0a724b16,2548513907,1093932405992769200
+3b6734a1-bd74-6b51-f054-954651533262,325444396,2594507864222720097
+c38642b2-37e9-558b-18f3-9df04b1f9f2e,1092164147,17028636443796120407
+87338c02-4bf9-3306-762d-0ffc7dcd1de4,982413464,10040575193533467021
+e4b519f2-fd43-ca9a-6e55-23d5fcbd4166,1380146920,14996665541722540681
+011a2136-790e-244b-0c7b-c3ff76fabf9f,1845056084,14569934772297469509
+358b2b7b-80a3-7195-2ff0-490f8c838108,3770873449,12082182458948006928
+43c98802-b9a4-c6fb-700d-5f0bdeec6145,3891833279,959185733592797984
+6dea011d-c5b5-3963-f3fc-03da6f868621,2040843921,17743363205701543013
+bdfda709-feef-a943-980f-24fc43d29f08,528580365,11841495773872597045
+2d72052c-081b-3248-11ce-d52df0617d0a,1494214502,7439375228756036833
+c326974b-8429-214c-724d-f73741002568,3172441213,18114534916689048808
+e520c41f-2da9-553a-f700-68f87d1bbde3,1734422437,13397653627883108295
+de904661-b970-5ee3-6419-811a7aa296fd,677843021,16405570948016676259
+715b3c6e-df36-2209-ca8e-39c75c8a2e23,3741132813,11578670906292969810
+99ba5f49-72be-9aed-d13b-1521fcec88dc,498857919,17491923940274860615
+658a409e-c8a8-1da9-cd56-b54c11ba771b,3357260668,12267784402108019261
+04c349f2-bd08-923c-9180-ed8eefa91888,2109943884,7546249223422529172
+509ed7fa-0a58-5d05-5842-4e88e13be510,2620315221,1788457059690992137
+43495410-54d5-ab49-cc2b-050c74bbe385,2376142951,3172944041323388978
+876170b7-71e5-9ec7-aa0e-54e8f13c0dfd,916156958,12037349327735141490
+e77288f3-4bfe-9649-0d60-a6832d353e49,3464198800,6193814969103904758
+e5cd0745-a2f2-5653-ac6d-5a60d8dc2683,2124454166,5230302422802787176
+b92af28f-c71d-98e8-3506-24b48b0ede86,2203806648,16271522172417168013
+8182cee7-832d-7562-cdc1-982f64d0219f,393761472,8109592029506456564
+e8d8437f-28c6-e26b-c475-3343193e469d,2012378802,8839667234025288666
+4a865055-2afb-7260-f7d0-aac2a8e4436c,947770878,2700187088910130464
+f19726b6-1a55-12d2-12ac-f2e71775bc41,2722786409,17879183457296648526
+a61bf8cf-95a8-b8ad-319b-3efbf4134962,434836003,351843593837152188
+95594d98-81cd-91a8-3022-db1228131536,3421920310,16283995521614454263
+a37e4654-ca96-8475-5f38-a6e15d73de68,2879689696,12227575543172653308
+d6ffed11-3d2d-4a8e-ba27-c88657b077f0,3747559615,11437842592873781702
+cf92ae83-210e-94b9-6aee-09acd96454c3,4209540564,3319094729895054409
+42bad200-c6f5-1285-df1f-cdc8cf1b981d,680383267,330240951273346228
+b293039c-517b-f96c-ca9d-65b7c59f1244,2951193635,2210583925456797748
+d8e7f0d9-af0c-687f-26a6-54b8d19caa0c,12578092,13977889033344757053
+858d607e-133a-f83b-dfcf-fdf40b1b1273,1557851134,3180951793563317579
+f54a51fb-6c4a-d6dd-0369-1b73da6955ca,544890385,9397660828929929685
+2f61bde4-77cd-bb82-b066-9d04b4c56b42,1936294142,11949175520866697833
+8500015b-49a2-a8f3-0820-ac1bdc3507fe,3274548496,2994850151633065418
+d931db10-bb52-b290-c144-b97d6c3ff437,3375917317,7624179905407108017
+8153efa0-c38f-53fc-06b7-e0e7e590325c,1235095881,10286600907160629755
+f33a7195-3fa9-39ce-75a3-ddfbec4a4232,3537397973,17448172001687164582
+8002136d-2370-c67f-7195-e7ef2a06573a,1044863114,15722136200234507229
+520aaf18-caec-5e71-f04c-87b663e4c88f,2049701250,1158139097210286809
+ec9a949b-6878-302b-ed67-38ae20647f38,2818628430,7029897752128701477
+4499bd86-fa4e-2086-0955-6121b4bd7653,3393147571,10573865021023213949
+fcada821-6c51-f81c-67f6-f87b299111c8,2894687949,1924081731113494391
+44d6cd34-fd4c-0763-4e3f-060c7413c438,182419434,18118952757855777235
+ee7ba53d-c363-1d7a-90db-f1e1fe009d6d,1057562534,1182513902714010844
+645a97b7-d23d-6883-3510-facee93e5a98,2298042551,8940596611741548838
+e8ceb264-b7f2-b86a-80ca-6d404b7e20df,2938065098,15151461522464410965
+4c9f28de-de5a-052b-df85-fb504020f8e2,3055855401,3205423120618628775
+d8a8b6c0-6b0b-13b9-773e-9a4321debf4a,2414139206,9550049543912226179
+117be5c4-a84b-4da9-61f0-477e46a83630,1255111231,11260590262068436105
+d9f36554-1eb7-bdda-3b15-11be7b189b0f,97145264,15753822871280124878
+615d92cf-1946-f481-68a4-90dc5c01ef0b,2224844333,5145969267730765016
+3d8d8429-1a03-7cde-8c01-a5b32506070f,3752285831,10428306224311261839
+63b28498-29ac-3abb-764f-bd2738ac3879,3765226959,15006976359833295034
+21b48661-a128-b8fd-3b00-0c0baeecb880,2762008484,639633547483413596
+80c98079-e65d-5a1d-08ff-2fbfcb5228fa,3227812013,3418040329579829938
+ef79c966-d5cb-a625-5ad3-5f8fc6e4b537,3649294731,6328330569897597441
+49f14f24-8c62-30c0-f0c8-0095d7264e1f,4276819585,8785246766674540216
+bf4ea51c-02b7-f0d2-388a-bcedcf55c5af,967979589,17076285063470595221
+49ef3fbd-3088-96ee-ebe8-498d25f9e554,1148287604,2604232176051555842
+3ad2c9f0-7b4f-689d-53b3-beff48a63be8,808623853,337998936534416897
+3d92dfea-6f95-39e6-ad0e-c7e3b383cb11,3166411997,7907450642339332004
+1bf4fb04-5a81-8962-68c7-60b9e7005647,2975713915,972160225331919698
+a46cd003-df85-e31b-00c6-1e293bfc887f,156264603,13371633104695495204
+ea3cb5b5-45b3-20e9-cb9f-f02ee40d4638,3827606191,13664256942671807725
+51171e1b-2a85-83a9-08d1-7c53053b07bb,1805685909,1067541613797381709
+4713db1a-3adb-7786-5543-252c33994340,4068752890,12060251328268222234
+a5d5bddd-898f-c40b-cd30-5fe6fb7c7486,3249407640,12421157648909816723
+947fca14-b7ad-7745-ef98-ae601f8b6411,1672291875,16046577801299155167
+87a3244c-6d6a-341d-6d5a-fa5e43b5beef,1833071925,9280968257837379621
+8b324dd5-731f-4d16-048b-a76af4c87b90,1584968660,16779367736313060232
+51a3337e-9b95-0ee1-d8cc-2ede75b98f4d,2538372749,4074309508559351884
+62a217ed-fa5c-cac5-2e8b-32c9bf3d125c,3513550224,2342505578879730632
+b6ce1607-8df9-ea20-c99c-2e94311d8fe6,3224020024,6395372533896335246
+1b6f28af-270f-e040-486c-2c914def91cb,3232893852,6269900483849484858
+8386f1f9-5006-1db4-fb05-c495ad550214,3556145211,2853096885758518026
+9d6a00c4-d136-7b82-1793-d4d977d1c844,4159040016,2357387352325750451
+aa489a82-895a-9a6b-edc0-6ddb5b560fd9,3749596979,14346525327243309174
+3216412a-1aef-83c2-3a58-d690b49e3cae,2873382527,12033719088292408071
+0acc9f36-87d1-affc-f282-a9d5cf8547cd,304154903,14450489697263254408
+74449489-e80c-986e-300d-76f2faf57743,228877151,5473861535823205400
+374249d4-484d-f8b1-c139-1095c47a3a76,4265931785,16372461954442837069
+3df2d646-07d0-4ebc-9759-bed53dc58651,2847402338,13457245777096533666
+6f7e87ce-1fd1-17a1-cc78-3dad53dc1c8a,3358844293,15653648786354218652
+ef1864ba-36d6-c7a7-ec81-6ebc41374de8,3645681005,6960080828409182540
+cbf4c595-58cb-f76a-60b5-a4fec1bab023,259956388,5131531959779700032
+7cd6e636-5ec5-7ac2-d08d-959f60852313,1209758518,16631867705879070295
+1429c8f4-9b6f-7f3d-c48e-f11d50bf062d,137880462,15651899415500101535
+b25da2e6-d24a-e76a-341c-461585b1da1b,507730184,16088704662669224055
+4b9b77eb-cebe-d03d-dbf3-88507e34c662,190819403,11659432014091736710
+124c9afd-a76b-035f-d99c-f98c2bab6406,2292150751,15479930816696227550
+ef3cbaa7-dd09-c231-dd22-82dbd2cbbff3,1720827583,17906127707900543073
+bfa742d4-5a3d-d4f7-9cda-c0b3c72d10d1,2808427895,871405702077662594
+72d3104a-2c3d-d246-3908-827c81487b8d,3821657813,10914162494296016967
+acd9c619-cebe-ee83-e68e-47d7bb757fa6,1813658257,3701012840714729525
+4741d0eb-d6f9-5059-389c-b60fa6428976,1469443972,9370852880507094309
+e6c20e6d-a6c2-17a9-440d-1879ff224806,615605096,8483940058521944213
+6df00a88-0c2a-2a9e-e639-0e0893f54cfe,3997738367,1123520151613497512
+48318bb8-5f6c-1a01-f400-cce325f91921,4214348474,11136850804312475484
+9e82c762-462f-b9a0-ed83-531e8f6dd8b9,1931068327,5730350220817137619
+ca0e8426-1066-e6a5-b222-236fc0cee2da,1547703971,15583853833704379306
+2ca4d402-2add-2640-c296-d59f1cdc471a,1241122507,8322925496616237142
+8cf2bff9-7610-afaa-82d6-0d0ed8e50522,3047775164,713059624736073900
+77aaeac6-ee92-2190-1254-7329f9c755da,149424602,13097680746429753658
+4d9aeb93-c796-c1f8-acd5-a6f77afaed81,222286140,10644668631183567962
+724a529f-9420-91b5-756f-bdaec5276e81,1173010125,12542714351481007965
+0219db05-fe4e-8140-1e20-dcc6094461fa,259027556,7221914211031611436
+28dfc321-1fed-2a97-749f-8c9362472a64,101520940,7982788440983422977
+5067271a-afcb-ddd7-2a31-8c3e8f95704d,653974631,1309104112231448636
+6e61a191-f139-5e52-074b-7ec83a60436a,1103486456,5791940576220030736
+da3bc64f-d635-a919-8834-04ddda9a4fa7,1378133104,12003829921676640357
+01912fe7-9f9e-fd74-3c02-dbe3ec2371a2,1427416622,11755650204966625180
+d1168a8a-5684-a30d-29d6-b0a136b6f199,2634424632,6187816905990099854
+d76d96d8-1b9c-b9be-1d3b-71bddc2375e5,4213840633,1091388339068677485
+ce5baa2d-01fb-3b51-5dcb-c86a23bb4490,1155879823,8909671898684574679
+3c1ae5c4-1cc4-210a-dfc8-991a1bc0b357,780510600,16560685051578886121
+5e332aa0-21e6-f0d2-7996-6bed880d7a3f,3084352076,4607730303965715434
+13097064-8b20-d62a-a184-6b7cbf630ca1,3626201957,12510062116400742872
+17fd0de5-b351-f4da-3ea8-6fb56a607196,1483289964,13915313445298935067
+8cb2bbce-585b-3503-0f90-2dbae76dc5e8,166336944,8388066441242485323
+3ce1dee0-0be8-ada7-7813-a9570901983d,3852776078,11235522213652705643
+3d96d724-3241-b597-01ab-5227824b4fd0,2664428426,7204676271051615409
+3544cfe2-abf6-ee00-9d5f-68cb6d3c55ab,2216913426,15185343956898470955
+9abe2092-c6a2-49b7-5ad0-f81a97d05c00,332602724,17676593868724255732
+bb28a210-58e9-d04f-899c-d064f8a7e91b,2441025192,4844977869136264157
+506b2b6b-69f9-55d0-36f9-fcac86c579af,2702880844,14361716820727897134
+31900c1f-18c1-065b-1141-6d6b8a55c011,124544552,1409189834001978603
+9fdf628a-5c07-f9f0-a867-2a065b75439b,1940707197,9352876626107726117
+26b75970-b1bd-b8ef-4526-c6fec62a0617,224306110,6734315512673963917
+83c4c594-4f80-3116-c235-9904b1cd98b8,2650752148,6135700412894778270
+e86b937a-8365-a1c0-9e5e-e74302a13147,2000574269,2956238983811894362
+3223cb68-27e6-b455-1340-de165f7adc30,3884231630,12878629872527041398
+8741d3db-3d27-ea68-0c72-19c25dd0b9df,531977439,2752217142235766591
+afb643d9-d1e4-6d9c-5c74-7f577457677f,3908784406,2081346310990224548
+2c4b51b6-5f33-6255-f406-929a25407357,1187451461,13882133792219327606
+c74c5f98-ce33-87e6-e21e-f6a22b4e9c8d,2496912212,13654233288614938123
+4ca9a4bf-8146-9483-2440-460053a1a5a3,4223285350,5951728332793787811
+3afb5372-91dc-ac5b-a6f9-0a1c183444c4,1220298828,14171486093351705537
+92f0c4a8-9cf2-af5c-71be-95213f19486b,455203332,11678283326966820033
+bb90f5b0-b2cc-15f0-bcf8-45c45ea64fb6,3044433289,13689770048711420341
+855c178f-97be-1cda-c02a-79fa5f5c8290,2438531300,12406469851823204377
+41562e46-e855-5dfa-1626-8809a1f67a49,959109075,1004431592826975135
+b77906e8-2ad6-3227-2c93-f2405ae954ee,198117306,11610635017781355990
+447f34d6-c911-82b5-4276-da648d617892,1764647261,17257058833425892796
+b16baa5d-5202-e4a0-a5fb-383b5234e5b8,2928119261,15193106655472449765
+e5142c0c-93fc-5549-20a7-88c01d351901,1501884026,1808497223616292510
+d31e0d5b-1b4e-6cf8-bbfb-4c8b6d164dd1,4027082611,4884751997716337697
+99eb1223-a9d4-af92-81d5-b246f9467161,2934649617,4953163185152021994
+fa120e3c-33e5-ff19-4ff8-fff9d57e97c4,2062568888,15702274947960712391
+3edf348f-8057-2e5d-ece6-6a2044c4f722,3151684426,6217571451451021067
+623cf3d3-71b1-a2da-e99d-89425e68abde,3843948674,10568416587542371414
+2eca757c-9fa8-c3dd-eed1-a170241d5ba0,3974381454,17221403940941702926
+00492df2-ee85-c603-c9cb-da5c6a297cc7,4108251210,7011861925166095034
+1c4b0350-933a-0378-41bb-e9c53122e55a,3060470754,4408622431310347943
+69b7edb9-6c4f-25d5-28fc-81b10ec356fe,2377743694,14535986476102972247
+690d5dc7-28e0-2fff-7450-9d79bc9cb19f,1642328466,12359417497940058378
+33743459-1c44-183b-e13b-e507f49be98d,2687271916,5273638923063789348
+6f69eef1-e995-b68d-f27a-3b53cdba022d,490049997,2640435692919941944
+313b5d1e-9746-8c5d-c9be-e8123cc51dc9,796042725,6043970365343033951
+ea5af4fa-c3ac-e2d7-01e2-42d2e071996d,917018927,2021871405713643329
+63fc8908-c091-dd49-d8af-0dee65240352,2374608817,273819053737272656
+2615e289-de98-a528-1836-5475333e7a80,2755724104,2858882949243865572
+b7a78292-cd82-9734-c6d7-182a39fc52b2,2653941205,9054708577376054273
+58b25b2b-01b6-c3f4-4ef7-09acb19bb25d,3431662299,3365523249065439945
+694b94b7-a7e8-d5a4-55ce-e9e0bb269bbb,522766931,12155205787721390984
+b2359e12-d96c-5f45-f0c1-855c05b1fcd2,3405885510,9151166496500779112
+9de9e304-016e-8281-4aec-50a3e924f5c5,976645260,14305898628208198802
+19cee327-0434-3bce-8b8e-a04f2a895dbf,2720406193,4551249384582373957
+ba382459-fa0d-25ef-21e0-6e117f362b0f,261932559,4316259119227614509
+45ab85ac-701c-da89-90e0-69852a8e0fba,3436447954,410121806800894429
+d9145e67-d71a-4715-9d0e-aeb15d74b03f,3733185512,13391234392816718476
+f675220f-1636-7835-3333-c21a66903bec,4026414789,10204249320457845143
+dc2c9f90-546d-515e-b43a-64e5ecae4fee,4066857193,13185133991421033033
+77b98761-3e8e-381d-040a-1ea1efe41e4a,1522203508,7648792518235333818
+1aeaadcf-31eb-7c94-a248-33a828f549d6,2007697924,4589679399627251837
+a1da6983-08ef-4b61-14ce-97ba9d8153ba,1181071590,4129385143687968097
+45a4a1a6-2eeb-e715-efa0-443e62a4e28a,400717212,16938067061772245569
+7c1896cc-9405-8d77-e2b0-ab94090f9676,3064273456,15634503430940014974
+d8de1c0c-6f1e-83de-9e1f-e8907cdc2d8d,2865845000,9557034518832743273
+a6e3e1e9-87ea-1cb9-50d2-e0f6f4170188,1730205127,611742038916636662
+050580c8-9853-dfc5-d483-383628fc1502,825145565,6213178398019461723
+e357fe04-9cea-0b1c-5f53-e4792209f6a5,3233032813,16435672393105814876
+f0623145-0853-2452-4156-dd703e2028d2,720392755,9868084022434818138
+2bb182ab-7398-bd0b-cc2e-2dd5273def33,2383850243,13884768465675842764
+bd6dbe68-7d08-7eb2-075b-31ba0511b172,4022563808,2552913570218059629
+9a96a2a8-5519-6988-4630-8c7ae2f10be7,2208964709,14149927144901384446
+18de8ad3-f9a0-261d-b718-4e9a3175e839,1843204317,6981909854210985588
+7b18bdc3-dfc3-c622-3080-c73863246790,2404724832,12165614588490191261
+a6cf6208-6945-beda-a13f-3360ad03cb33,829396104,18123577657290292933
+3b7a3dcf-cfbb-3c38-cadc-fb32d3949854,2864865037,7462624738268215323
+47fde6e8-77b6-1dcf-2dc4-f2719ca12179,3162039470,995336769260127480
+affbb60e-d73e-548a-eda0-549b241a12c0,2976279608,6791546001835863890
+17bc8415-0b97-7dda-6aca-479efce6cf3f,4100109004,16126742607704189129
+822add24-7abd-fdcb-9f08-5a5942e7dc4a,2289749472,17033866800981388419
+9b1aaab6-6f91-b61d-cec9-e94450082ccc,2400391748,1016984508925009344
+5eac0e31-b8de-11ef-b585-fa66d804ea68,274723501,2571341097934640016
+93073ef3-6f10-1068-e86d-73d4621cef4d,3642776218,13388858766335759535
+3572141e-bc81-b8dd-7e3a-31b9ea65fada,1472045840,6676010522890284602
+dfe77f0c-ca6e-19b5-8403-168d21d0162e,2933990739,9013024145165812882
+fcca2e58-bf91-ca69-91a4-5a19fbbe9413,3374351408,4784934859352043851
+098be046-be99-3c73-2297-c2a0c9efa18a,2136596582,6395985411269560636
+2a3a8c1e-5f5f-0a5a-a43c-11a93e673922,1469782217,15886573783616060076
+9297286d-3879-a7c3-3d83-0df0fe868521,3948015078,2658445793895179474
+ec7efc0a-d2fc-c3e2-8677-1b72e59cf77b,2023279176,15032807225887126189
+ed03a34a-6c79-a197-2ccc-0141c929a079,3327574651,8681771294770543855
+00f652d2-ac3c-a160-1207-04277fdcd872,3486604698,7155294096543473100
+0267aea2-1c85-dbdc-6232-dd34e38b5302,3940004324,4668258317970518807
+3e8a4af2-9fcf-b9ba-de33-0f37576b320f,1000086948,3912906394641158008
+db39f2fe-63e4-31b1-822d-41017b39c622,911438609,3055489675047274778
+b30ee96f-ff86-c13a-badc-c76f6f6cee51,1052903234,4073711677574756067
+0cd29533-3a0e-89a6-e1b1-76cd76ba4e1c,3228449745,5281747951836565644
+d876284c-b8f0-7c7b-1dbb-a280e49a65c6,1589019213,1896196066083398447
+ee860d11-857a-aa1b-1b6d-2337ae775cc5,145675506,15159015488980349968
+47fa2427-ff30-af5a-eb4b-cffe67024ba8,1243162788,5997437209738683088
+5005d078-b58b-8aee-b76f-b5a2cd1539e5,2764856203,7933490676701312637
+2fd9123c-e5cf-a37c-407e-2c48e6325800,3171742689,5964721169864135761
+f9206af5-2e19-3254-4b30-5a201ac4b301,2113228678,12012511381379048752
+049cf204-a083-39f1-ea88-826346ce26ec,1683644266,2443016756944124137
+b8390163-4aba-ea05-2405-618a94d8ea82,1052293349,15903102884925470659
+cf430a99-f9b3-20eb-1cb9-33ec3da6e8cf,2540816430,9974469751546617743
+ad0cee04-b96d-ee7a-3587-fe0c33314efb,2782859083,659635412733348841
+3d622c23-10bf-e0a5-fc17-ee2bef2eb708,1364796131,16446609459487013799
+644891bf-5e12-7319-16be-eb06d17e93f2,187113090,2417779238128375695
+e009f3a5-8ba0-cee9-2d7d-a94ed4e498d2,2246548614,14566097933989948279
+dd396ad8-320a-2356-6f3b-99443ec91e9e,551134784,1230923627117957068
+bdcfd207-5cf7-a07b-7fbd-aa64e34441f2,3399257907,15251082297696911060
+be681d2a-9a83-19bc-0c06-97f8c14f495b,3730112504,14551826492559621311
+2a407991-55fb-0104-f373-156392a7f3ce,783206271,7239667465308141514
+c73f9e03-9c57-c037-e5eb-6548e7123706,2179644778,17642897160003463974
+7101ca71-c356-81b2-2819-4f020782a86e,3941072760,14006183196543894570
+9f1a7860-eb0b-bf3a-0816-cbf7418a8f95,4115836773,17953025626135396681
+e16ad8bb-fdef-c2c6-8cd1-56a00b6ced9d,200708067,4508541340619360619
+9c3dac4d-e3b1-4e03-b82c-db8337eefb7e,1475649323,7236270105872778131
+b5fbfb35-2a36-add2-47a2-871469536057,3745494379,16839968196935014480
+c5858e58-19ce-f829-f0ae-25f0731cdf75,2398233650,18229839811671565281
+78496140-7859-3913-3163-1403a01aaf13,2002704635,9834120084581837428
+c4fc86f6-4ceb-b035-420f-c12148674d18,1195184295,10176381825205431123
+af4c5d19-c769-9095-f3a8-ad76a0cb71d4,226396233,13511482145960548232
+346f4191-02f1-6d44-b40f-4e2b10eab532,3815543487,5158895549828352121
+43b9f295-d8d6-bac0-92b8-73c70d333774,734317158,7592885965442205202
+351547e2-fb86-7505-02e3-160117d5d6dc,3295381944,12092639257271769994
+10baa897-1233-13ab-6301-d403ea085370,773539692,13310160437862325889
+96c76095-4bbf-b71e-cdf9-7af6aff19af8,1648679581,15393519930683675840
+91cb4ffd-13f1-61c5-bac7-fc21a5abc2e3,944585045,13848902560179222465
+cc1259ad-1a90-f961-5f67-1607d0a1709b,2909786569,15024737560515081235
+d5c47789-0819-627f-8f2f-d31505c2538c,117318913,8246707080802555043
+8ab39af9-5a55-8219-e5c7-ed10f87aa122,1846965632,8089352190998577541
+752eb7fa-d1eb-28ab-9748-fed5076044c9,3676321166,6892222764123522054
+0d43082f-73cd-1a8e-3c7a-bf10af50acd4,1023404530,4105748463660120754
+e5bc17a7-b1b2-6ac8-2e7d-a7a450462469,3636256757,15182867518513572002
+e0929c92-1fde-c595-06cc-e346c23cfd66,1117243651,378447320499789106
+349117e7-21d6-8e50-690b-aee2618777e3,2386726849,15932212506875909925
+f3061f09-ba3b-78ca-d191-a303795cefca,2866417683,15602502332183970646
+2cf70708-8ac6-5a5b-cabc-470440665b4c,650728029,12797945168896462335
+70a44fab-095d-8216-f18d-1541736e3e6c,440556037,13799685376851600545
+e0d9af81-f439-d5e2-c610-3faab9041927,1769579177,16792562559463267150
+424bfb2f-10e2-c238-6d1e-46b0c0c28239,3005387270,5576454057150152196
+8fd101e1-9ef5-0d5d-8432-fcf94ce06ad5,3968144102,16935652286255126501
+66763544-eb25-5604-31cc-51292ea89974,357207505,8306307198048323944
+312313dc-cdf0-2127-644e-98ec7e4a7f14,1080528168,4358552842113942155
+06c62276-5953-c3b5-c2de-11cab1e53c9b,1653598417,5668821143547477737
+60691594-52a6-63dd-d0bb-68794719b5aa,3528513313,274525564314544166
+f44c9629-d08f-3550-1bb4-93786069f17b,1683410484,11988104282567478790
+93442797-44f9-73e8-4d2c-65be8448db74,725623816,5580134210423664240
+0fd1be6b-7d20-d9d5-0b29-07183cae95fb,2210207240,13707947240877025633
+92b407b5-8d1a-0306-378a-8eab79fc19eb,3428197331,15518254444766542333
+3821f9d4-dea7-acc9-96bb-a0c0f2bdffc3,474656263,16098167232718625905
+aae0afae-0edf-3b7b-42bc-fb3967710e99,1079129075,16405019012713525969
+322a5bd9-0733-f230-43e1-f28dd5ada323,620743900,16752378913774320281
+56df6a09-b1e8-5150-8154-169a6a465f0e,2032333584,17084851046185356784
+c2f4e94a-df94-6c41-f5f7-c14bb4519700,3548813294,3533378661786553365
+abcc8d94-7ac1-e786-34db-e62eeaebb3c5,84418955,8886512731224392221
+47367ef8-dca4-24b1-bf9c-c5c0dfa53a7a,3375794595,16012371114779126284
+c8221bad-da3a-53af-cafa-1e22d8238ed6,3629775892,8854091876204562502
+db8f206b-414a-62ca-b20e-ad0195976204,335730815,237935617436863552
+8f7c7bfe-e7bb-c16e-bd2d-6629b3a2959d,1042518438,1277192248035295074
+f915ac72-f082-2286-481e-5c4878a4567d,2936331716,6690110096390576842
+e59bffc1-2edb-e9bd-8fa3-5ba36eea4799,3837962579,16862282013442546091
+ecca32e7-84d9-2916-cfcf-cc8f5f56c472,898279554,98136327741762127
+fb2dbffe-870b-f077-d7b2-d01d58994d99,3665385103,16213524834827754349
+ce744378-8343-8f05-224d-0cb92aa1fe3f,290694564,14681761549549334095
+331a8611-cb44-23ac-b149-9c86aa6bda56,3325590141,10548653809938280254
+3323439e-69b5-143b-1444-c8ea11843da5,166070018,1198194264049355956
+b4ff0061-34df-0a38-4b1f-daf387bcabe6,931891928,528152045295876403
+6f795c4f-943f-1abf-045a-5a95c65e49ab,2397656210,16943319442910130782
+c52952b4-c66d-16b9-bd44-e68c0df2042b,3870001829,3014120574100095107
+f3cc68c3-f389-f884-5849-5729dc412178,2870702427,13360858481451574924
+68ff5dde-2801-c75e-550d-58069ee922ee,2615640497,3424569521038339994
+cd65b23f-4ef5-dd18-3536-69f564e34620,3612391828,16209197377016848182
+09e5fc75-bef3-9ce9-e8e0-dd6e6f0e7a6f,54297567,7007745090748715719
+fa905f60-0ac3-ae90-1483-31d4820d5dfb,326215427,8687736664208185693
+321a95fa-5cba-31c5-4935-c676e7b872c8,3713870529,3794129494398692513
+29266ba4-d98b-acb1-abc7-9c4298c412da,1957664704,11897112580323916808
+59447d91-ebd3-dafe-b8b2-795a60bef5de,3591088461,14671001334441726235
+dc46265d-c96d-244e-54b1-ba4229506cbc,868238882,901698145585732633
+4a774556-e6d5-7fd3-54b8-6a5dd9de25ba,4238832735,5309248504937566626
+f077bc9d-337e-843e-55f9-6258de72ad1e,1172292803,10974083215615532673
+4a804867-a9d0-a44a-3a2d-6925c94b83fe,4197943270,5515924650352401658
+04196cb8-6cda-3559-b6fd-974fe5135406,2001795733,4576720627082139731
+c0d9ce1a-dc5b-ed50-ec6c-9a5a1aae5263,1031720699,2783574019071297690
+d21cb594-0fb1-18be-d854-8c0411bb24cb,1661234536,5867521494981112596
+f5e7c36b-56f0-7abf-33d3-260d52e06eca,312100062,13023039288527204039
+789c04f3-6d3d-bff5-088e-6b368753a8e2,2092743039,18334307275163146284
+f01c1583-932e-8a53-c74e-f927ca3a282f,1300727232,2673064531284323704
+10b3fe0f-e5cf-1ddd-c4c1-d98e4f576538,1158494875,10996091121741732258
+1c6df3c6-3022-6f32-6c7e-7d5ccdafb924,3241977758,3123205588001402634
+8e7ecf2f-68ba-a693-3abb-02b42761735c,3084665189,4310394256612896262
+7eeed904-6f16-d257-b9d0-fd07fdf5ac81,3407085787,1133899383843288217
+f31e2a46-8ae6-6188-60cb-d06be9d08d57,2392536753,7463647050265237155
+52c54d59-09d2-319e-0dcc-a7989675120c,551669050,16103274744642681734
+a0fb8a4e-4ed7-cbad-2be4-001f6f8032e4,3917068506,586317698801284631
+f0d7cfe1-f3e5-df21-e4b1-29406be45f8e,2277540215,7068877186128533713
+46ad999c-db82-c4c1-8731-f0ee0fbb6230,3814985888,15289037321672406665
+948f3fa9-16ea-57c0-5644-d84074d71f93,11365187,8477533615450121205
+ada94097-93c6-7d8c-af61-1e895e96d9d4,3700319485,10485712521687367339
+9fd1182b-f82b-caa8-2160-1621955c18a2,705263089,8570122114193165049
+ad67dd8c-b1dd-8890-8f87-400ade0f7fdb,2251716022,13790065989234008863
+0dabf24e-63a7-b648-a7ef-cf34ab9ea88e,376751211,6824952330727722274
+4378db97-68c9-9b90-78d1-811668a5aed3,3659409978,8281438089868796380
+bfe1cd78-776d-df27-ff4b-5c882e7c83b4,3880404137,7380552161708972135
+b9301fc0-302e-ce6f-dcd2-a039c98c9ddb,1242435255,8704666062873110012
+eff6ca19-ee23-ed17-3179-2d34eb3ebd71,568585190,3941360440044994927
+7ed0228f-f438-bb39-e9a4-92eb49663ed4,4229626830,14030290651893841155
+2dd8b668-0c61-61d7-b080-00f72b3a6598,1244742494,14548871580401553916
+8d7fb2dd-d147-cc6b-0051-0bad983659dc,1712911572,10336108734086346835
+452af341-214c-a4ca-90ab-cd36994df73e,638156043,6968236150122097206
+5827b4ef-0cc3-7a17-f38d-493775207eed,44290466,5992948108618443228
+93fee491-f46d-b1bb-40db-e4490cd641a3,1697847259,13029383985890655871
+e57bd10d-73a4-301f-495d-838b8ec0b7ad,2758985003,804077784504116880
+737dfa7e-3efa-0055-8148-daab89595031,1389433689,3524235055279578163
+3c633e54-8d04-e691-d36b-9b4643dbb349,1490064146,2546076243297490159
+68ca084e-777c-dbee-909c-cff879bef3ec,2674545421,8735615744833493279
+c73ed0d3-37a8-826d-7747-ce0a6116020a,882779997,18110852831635058104
+c8a68e4a-02c5-a4b4-9f7c-7642fef09643,446677422,6720398433985738806
+d0649ad0-36ce-b37e-a0bd-e69506d40ce4,83762849,15426549035872431413
+f025b586-6b23-1207-9135-262cf7d4d638,2525938377,15347405649708562604
+2f8659bf-62a7-ce73-26e5-7962e188fa66,1339430655,9102137734058541082
+3fb4eb30-e61a-d095-0284-bf21fb188372,1076463096,8216934334743196685
+04bde954-92a7-75be-a1c4-2262f24e62d7,389864902,2763063821241873957
+8280b66c-95d7-f7f0-b43d-6670f04291ac,413218792,13784095045630505761
+4a254cfa-759d-fc4c-8ecf-9662168cc826,3779994307,11847823510439466970
+c8bd45d2-b127-eb82-9cc7-9c68be9fac83,1955881195,7057192727346919513
+c28a8aa7-bb2c-0e90-48d0-09d873f73d6e,2520355130,14523635494505605206
+b22ab7ab-1342-62a5-401b-8c8e0cb44204,2075596794,10879034491304426025
+8e20c3a6-0f73-ee14-56bf-40abc1333003,3594368255,8182735188611301708
+101f2ad1-cb85-d0b2-dc70-a132a3299ae3,3359785753,18214954121818995875
+32ac76ce-3b23-15e4-1378-3b450b732236,360638340,10900785763180052889
+ff0c2551-f625-bc5d-dd21-fd86cd663c8b,935497268,17260618714023476811
+8bc5dcc1-8cd6-6023-05b0-6df7888514ef,803957281,6983764946472113929
+91921c24-b82c-2c98-3103-590315c85df5,2569259055,5700666232346823850
+efbdcfe6-abc4-dfcf-bd1e-5963b7e7fbf4,3918007272,10626133653160507555
+7c5cd001-3605-7985-38ac-f45b4459eb00,888142835,13348416483149088197
+2c454ea2-7e57-e85a-6900-16a670a68f0d,1127391949,5646296434113985106
+6463c5f1-ca85-4b22-e619-98e4670c5e98,2348404466,12415290917651934080
+6aae9836-cbbb-a789-0c0d-55f83794eae5,1966642944,8151104327946639677
+d449033a-627a-a873-47a2-29281868051f,2283137139,9448341244363626029
+438c56ab-9c90-c77a-b7a5-3d9f2270889c,587487414,15491776061328288560
+e59a183e-765a-253e-d3d3-bff18c4c3710,1599364754,8053906133023236865
+bfb29e3a-f710-ea18-bdf0-813020f57f27,3378049890,15685698970729309594
+d8bff82c-fa77-543b-dedd-e94ea767f136,3280673883,3003696194017121433
+5843e5f7-cf55-ef7f-1b61-2a811036d439,2158115329,1513579407900794544
+d01fa76e-e4aa-99a2-f6c1-0912b1f940cc,127827507,928747967059522851
+e6e717da-2c3b-f691-400f-6713c3e0906e,2657046542,13577456595726346773
+24f17236-829c-d25a-54b2-4c82e2600cee,2597932265,9328068882901754890
+500f93a5-cf62-48fe-4f17-2f091c4ee786,717273055,5490274350867051140
+833cfd57-52c9-4e0d-3365-9a3743b198e1,4079630291,13004434980696285308
+dc71337e-b06d-e101-5eff-e7d668a67836,597913421,14449771012632154338
+d0857add-3aa7-187b-d592-00e6e1500266,2458782301,11042198379931474862
+f96b5214-dd1c-ebad-4a11-938fe246eb7b,3697025293,1104127964451534542
+b4acb141-a7d8-29cd-30a4-cafc5dd78a11,1809240721,7974711678348090730
+4debc4dd-2865-2f06-847f-acccd26423fe,1278004906,1524352467708805939
+f95a8ec1-e938-927c-558d-d06faa3eb304,159934618,12048136798705009902
+b719b418-b290-055c-cf96-2f6c4c336d76,854576659,14717103650147811606
+a44dd49e-995d-d47e-d306-a78639f2b9a5,2538856383,6800406441260105753
+41ba5235-e7c2-2a91-f6bd-bf8a9f0375ed,2030396115,13481269447501181674
+ce52003b-0657-144d-156e-601fb1e3bfa2,1788184043,5438745088515264509
+3be73d19-7b27-f699-0240-545415274d97,2518264312,14427423501680308825
+c39ebfe8-3379-e397-217a-752bb60a871d,2795813513,9613029330288024786
+5cbeb036-d008-90d1-1efc-70954d92052e,2658478144,7701778766481598605
+f1c4e1ce-4130-e944-ee20-ea1166677768,3074352467,14092233796122509412
+1b335844-8697-bd3b-fe4b-77a5c9dcfe30,2549413837,13911319213677774414
+037ffce2-6f89-fd0a-8c76-f28ced5f558f,446971261,165245009771347859
+3ecfbd8b-592b-cd96-e065-8e6e17cf0d9e,7145656,8608773263490355001
+f82e8dae-f609-8427-e0ba-b557f55f7118,2977482196,9131333643582592946
+8c2887f1-ef8b-43df-111a-bc473a2951b6,1748594347,411365272462379185
+281c1f1b-b238-2594-dd38-3115a9b3a5ca,1252208564,3638998933339415716
+d62400b2-9590-a44b-1400-e15f13fa2de6,40921948,3961699918614828379
+bd8735c0-f206-348c-c129-bee8c33168b5,18143020,3005284735561485152
+4659e263-46d6-fcaf-3b85-c1a442afb895,2017515520,12755178372847128746
+c2733ba0-6ced-171c-d522-d0c0ab5a5f55,3640816239,9426060216191566176
+70086dbc-b563-c42c-911a-4c5242412e69,1694656225,15850070747651870752
+fed8c951-a35b-7ad2-b880-e58115b1210d,4287616890,12789691104022930240
+834cd98e-ad71-001a-a64b-9baaf309fe26,3197592932,7259536921256932702
+178beef0-e3ab-9bcc-1e98-9c075b28ee8b,284384656,1471523715744934488
+f741ff54-d50d-70a0-8c71-374bfdebfca2,472715309,11016937841527981754
+f35c1547-5404-a219-c9f0-792f32d59875,28504973,14112734558802720968
+b528d5a8-c321-c520-e8ef-366aab8d1793,3785721560,7598453368962165088
+1ab992f5-4d90-007c-a222-02c4eb47a38a,3022336022,12168892720761696138
+c7e37163-0586-b16c-2a3f-a8a448c70fb6,3513639180,14253347722362605272
+d8ba25d2-7d42-7ddf-6f9d-bde9828e38c1,2418971119,4713253976875365515
+b9daf7ab-49c8-859d-332a-fd5699791232,649149033,14756059298138556003
+914c5ce2-08e1-920c-2303-f44bf64995d4,2710407443,10676634992353193607
+c21dd50e-601a-69b0-9116-265f20459def,1266979741,12060301584918742908
+713d95f3-4b5c-8d9f-167e-864af9a01ac2,874905603,12245833247094934209
+8abc81b3-f654-c492-df3e-faafb0941a32,1625108956,11043066619086598444
+859399f9-3856-541a-c94b-785a7f11626c,3226089513,11860459651103886553
+d90fc11f-b76c-3a17-389d-fd875533d5b0,3791033195,8544982909231416756
+fb4bcb18-42c9-1d15-e9b6-69d543248802,238203421,5244993946069760426
+f6bd5493-d597-d68a-9627-73956ab7a7cc,2468763919,17847571970717409198
+0c531e33-3af6-b185-ab63-fe17f0bfdac4,1808965380,7956399195472928940
+465ba424-389e-2d77-9fb5-f743373b714a,4291286065,13018995370628300871
+855fbae1-c9b4-b9ac-2c50-ec6bce68eb30,2277425561,10384855793015227442
+254d2cd4-e068-1c24-2997-35a35f9573b2,177491043,15669776281817703021
+af36ec73-a790-90a5-138f-e00640fdf84f,2768555638,5438734082349316516
+5fc49ff8-5d45-62c6-7abe-b387e9a9f31e,1218637652,11363193933937690870
+b95e8112-4b61-399a-b41c-3c5eb947c31e,29358975,3776422311812413509
+1d822737-2e12-376a-74d4-aff6696da6d7,3243928891,17041932724815636961
+588ef5d1-325e-4d3c-56e4-30890842e698,749318574,3599140082094568541
+9fdec356-dbeb-c0c3-2001-00d603584c92,2593075543,14440205161695735984
+668d26ed-5d70-a2d5-834a-940c798dd7a0,118393596,6704136774969403825
+023e6327-9243-9c1a-f365-638980d84775,2555559081,6369411227407202109
+e2d62ae3-3ae9-f410-a77b-9b505e3939c9,3613633603,7892282804098580329
+465a3088-1f8f-660d-9496-81a7898b0977,676032535,9679307889651597220
+71707ff9-1434-0f3c-b177-342e7ca1ff9d,606493186,13116833365220056275
+bada183d-7f9d-9372-4bc1-b80849023f99,3782034488,2494117801030687963
+fb2f24b0-c978-730c-5030-21cd74cf9264,3236324074,1321012432977383344
+31f5d201-8e49-e540-82d6-ac4c334c15d7,3928764896,16276555333374876994
+e47c5966-b023-1a14-ba69-9ae2df056fc0,4261397164,438583160098508777
+3084881f-aa90-707c-907c-363ed6e860d0,1986891190,590525263032996649
+5c1a4237-5798-8409-671c-2660107f1468,1088893283,7343923456595832025
+c3bf74ec-ec2d-9b00-520d-3a752aff3e1a,2839049701,2876737558111049743
+263f89c8-662e-1b17-9d82-1a8dedf31fc8,1019505418,7146831257504205825
+6ebc1ac1-2a79-7831-a215-2e35c84a4939,963291900,7199152930987612431
+47bbe3c3-46d5-a7be-0a9a-79912b7dbefe,259663534,10320580884172912771
+60107cc4-e80e-cdd7-6d28-d5f0f4a22ad6,3259761867,17424541098458569048
+38ccbaa0-b19c-2693-0cc5-28bbabb3755f,3116793904,3178907990494649548
+b85bee0e-73a9-f8b4-2dff-79aead7f0ce5,469918557,14885062444402430639
+707046be-1da4-ce6e-cdc6-06ba93d7d63b,2999362740,15448644912996565151
+1dae2ee9-0329-ce37-36e5-133490bb9bb4,2953934213,11493497070600506291
+1e82fdd4-150e-0ebf-f28e-57920975bc12,3421793705,11854875146083406309
+56bec96f-5dc5-e04b-c5ce-5c75224ccc15,222345218,2379748148675560813
+7120e87d-0dc5-9d3b-82db-9b26531ec71e,3414820032,16906663229847728845
+f9acc9e0-0845-6f60-e6ee-8b447b39fd23,443933545,3500446354149913975
+0d0505c8-2457-fba6-9160-d4fda07afa9a,3699118479,1705517652820808471
+eab7c1fc-2382-7614-4758-69c7a0ef2b69,1123088324,1682995206599222281
+ac047e7e-e96e-1897-7620-076b290a37b4,311308460,10206768889628297613
+036f50c5-6043-c1ca-a864-7fd3d1658cc5,3806567246,4478115134746183986
+dd16e6ce-331b-124d-dd07-f9acd68f7c08,966134355,1007090936119531625
+4a15ac31-3755-fe1c-8363-e5190270c5b4,4146225822,1153016333088494072
+b55440cb-dcf2-aa4e-6f63-76439ae597c7,646979675,12066041520137645800
+6648758e-f694-97b7-dbd1-5cc23184930d,1451945830,11698561580125566481
+16e0398c-dcd0-ae87-3b7c-50e1cbeee69c,1817711260,17872395780114734001
+3ad84a23-d835-53de-6e57-fe88bda365e6,1753293702,3813107419822513842
+77bd29ad-c821-9a20-3c11-35d7a6b54bc8,1027594969,13322223339687331673
+d318c4de-5589-e748-64fa-92f8b4df9808,3922785768,499340170032017669
+e3914d63-171f-6903-12fa-cbca795fd59b,2251702298,18410958973113338849
+f4121d95-731d-10bf-2073-87bda2d71a89,4200051097,1841790808100228157
+c9547e07-2641-f7d2-3abf-28de57f9653f,2665711343,114647801748350578
+1d0c724b-7d29-7480-49a9-e3bfa537d3dd,3672284529,8925476084949886933
+d7a8700c-b159-c944-b3d6-559250d3c0a6,119629924,14996925042294765363
+b884ab2f-15c2-46ed-29b2-5afddf5897f2,2412060824,660727112779551104
+120268d5-a01d-87a3-6e8b-f5bf6545f8a6,1798977327,3281840731896895251
+ce270b3b-2336-5bd7-b1d7-71854baf28ed,817708284,18230353417898859146
+0b3c2797-dec4-8acc-3451-93ab806ea5a7,3671682288,16378240837554533588
+91b089dd-8b25-241a-2af7-5f9c82d93f5c,1837722822,5770244542807848550
+9f68e1b9-db92-2ae6-a752-923e0afe3afa,597706494,5955307773168426568
+eb19b9f4-d6f6-025a-55d0-93171f0ccb92,1880241709,3379898214488332421
+7c0fe8d8-e294-968e-08c9-9f91f9b5eb91,1715276145,3041576841616595945
+429e5448-dff9-9d1d-9756-1babf5f37db6,1329411269,5281971169183160650
+e623ca34-2c14-b136-6965-dcfd62a5d8d1,2646445557,4640033224183360066
+4e814294-a021-7743-68dd-abc31496cb74,3017360243,43926818329462922
+0fddbcd2-796e-1dfa-00aa-0dc6fead9b76,1898910760,11654713597759632358
+23da3c4f-395c-fa67-79a3-4daec779d57b,943733192,12816061195656238724
+ce5a716d-f76c-2dd8-8cea-e19a532b43d3,649246983,14826623970405783657
+070ad3a8-452b-f1da-a75c-020ade3d1974,1002302166,4820037770747209749
+8316ebe3-0e5f-d490-8119-882debf71c70,3924432892,10209004630618016653
+9c0afee2-e7b6-48d8-9355-18d2a255dacc,1771054395,17227518348135102876
+abc6f1bb-0e7a-01c6-727c-da06e40abd8e,2898438996,2017672550889751973
+ea768403-fea3-d3c1-c23a-f1671c4d231c,4038793971,11567678701691060754
+f4ab45fc-842b-090d-89d1-dd9dfc9920be,1212659132,14050414666354473109
+e54dc720-5e58-c3b1-4e96-564e3ef86c34,329725327,17739300452829986915
+8874f4cb-935b-c4fe-5927-bb227a851ffb,954929215,3753211144579443436
+a8cf68ae-f413-7bce-d150-6d3616be076b,2986105967,16054882327790429816
+b9415713-5262-bed1-b112-547d3363ee2f,3533466053,3605887592136422497
+96b02ccf-4539-01aa-4582-d18172b1062d,3383414639,966393187127173644
+d20f7363-a855-25eb-96b7-983e3b0c17cf,2554717647,143469916888165367
+a8488ca2-0f1c-4bf2-ccd3-084cbd57789e,3513400165,4136238646294019058
+dc4df564-6113-aab6-0717-fc0dee8dd746,318427375,7368471294961255582
+cc1bb8f6-2f5d-986c-6208-97cba9a10450,4162906430,9911114198053183216
+fff1eec6-9579-a339-b3de-766e63dda9db,2592856863,1473569226386801480
+008a7dc3-e5f4-7a2a-fbd8-03bd32807cb1,2464729483,10266974639817883791
+80eabdf9-b1f6-3e42-fa4c-cb169e836820,692534494,5403637913262146367
+3c539578-fef4-d0ce-0bcc-25fd5a6ae27e,3662728427,6997014942202228821
+c8eea12f-e245-2022-264b-c5d041cd99b0,1485606172,3096315390470701449
+adc8bd08-6131-19db-1fc6-38ad7b691b69,1581896925,8130729956227745593
+dc342c08-635d-7680-16b9-e085b60a4bf2,1788600360,8714007163171229088
+2ac94f75-f394-b7c9-e90b-2f5ed9473300,2467763807,6154956112512771786
+813163ac-45b5-9317-b23b-6840b60d94fb,3788315,16845428089250503215
+3f339e87-4c44-ae5a-2c87-f1b5582fcbde,1105599791,16674731407156714391
+8dce81e6-9efb-7e02-add4-3a9d8a44e2bb,3188363566,15043860395141464193
+2a40648c-4a3a-bb71-0a76-4feba1b19521,3532367368,6612844853605112565
+bfa17c9b-6acd-4fae-27c6-6b7c52903591,564158771,8988791919790422427
+e3235dc0-1e54-6432-4c70-7f8a9ac0020b,4141737641,1938020266097383118
+37fcac98-b720-aa1a-14b8-3baf313d2661,3635456797,3299956836415824262
+bece1c3c-9cdf-0a7d-3cdd-0168f1aaf10c,1225726614,575421002767076955
+42f2961c-e1ef-dac9-f075-8b6e21914ccc,479042820,5338124450951450311
+a5dc6c0b-632b-77bf-6877-e421a760208e,588034243,2058839361749001257
+4800261e-3c0d-d6ad-a451-d6e2f22aaaa3,1386389154,8040328464721847520
+0f059eae-6faf-7ea9-95ae-ab6b74435317,1887585262,2948251229556327444
+c22b09f8-028c-9ab0-bbd6-b834a75c9262,1250461873,679089990324863234
+5731f4d7-88a5-0850-31a3-71381fbb6c2b,3700639649,3276811897366754828
+3d8c8d35-85ec-7ac9-294e-8732c3694cc7,3121149522,17373520046719197317
+e117a267-4a2d-3fd6-3ade-6ea22cc65e1f,3573092798,8297855764221493816
+f6a53e48-e130-90a2-babf-1a1216fc5cd8,2190604713,110661477445912092
+dc718f4a-6a71-d828-19d9-31d2d1846c83,3813098672,14879862146993235166
+def7c4e2-d9b1-c967-557f-530f4734057f,194219403,351325149842929902
+6e5ad60a-bac2-58f2-6a19-93114dff708a,2286050563,2400850078300285577
+4f6aff1a-8de7-167a-a4d7-050653765de4,1246437639,12925467742829902531
+e0b3403a-233c-7e5d-a42f-24eb9fe23780,256072618,1853825866392895641
+4201e5b3-4c23-1e0b-29eb-ba0c0f8e00eb,521912019,2531885546775993096
+7e9fc018-c484-90fc-78ba-51fd80c51046,2055307709,3376134305384158722
+6b2e1946-df0f-6fb7-3852-07825c37b536,3271244348,13291688960142025938
+ad4a13ba-39b9-0890-d641-2b400a06ab48,3269367117,9041585494357138437
+1f37771b-6706-a1fe-6b7f-644b7274dc95,253022165,14783991129379665762
+4a335caa-f68f-33b0-a03d-744af76796a3,3218870569,1797410787733791137
+5f9530c3-be36-d21d-17c5-3d2fac82f05e,3790357248,9761547294645660731
+2addd979-7517-0315-bbf9-80e8a5a24ab9,2263672416,9452503777608334171
+98fe9859-53db-9df6-4c95-3d49bb980e19,2144971509,10738105036527086859
+d2483cf3-8a3d-1305-51c0-7cb775eebe66,2314213392,10765875291839786067
+7ff5fbc5-0725-87ea-7078-ae260c8e1b36,3027586155,9318698040161628012
+787fc1b0-6bf4-6496-f383-05b37061dd7c,1181778265,14275306383557146727
+5a571311-4783-d60d-c0e0-572360bbaa84,2775803102,2823805058002791825
+9898c891-c966-a1ac-1b17-8414fb19e622,3702966589,16861784915949747096
+06278e7c-182b-36d6-7256-164fbf8144f2,3267472197,5970661746771516743
+66eebabe-f739-7d76-f3e2-3187423dc66e,1278929361,17653228162409350389
+e8aa6c09-23f2-75e5-0fd7-755c13eec6a8,1511831073,2019827663398448339
+0cdc455d-92ab-dc26-36e9-39991765f858,2920498567,12966441851754425079
+6052c622-c2ec-a7bc-d665-3c0f8d5c921e,1279239642,13658135181201411066
+3c200c9d-9cff-3869-a47a-2d365ddb8720,2712639727,3698521696921001045
+9e1ae5dd-e4c8-505b-2c08-1e138d38ce5c,2533455981,3063627357057305181
+4871b059-be0d-0313-543e-6b81b92cb6ba,2658610616,14624971272792884378
+8f547ebc-d619-88bf-815b-ced7ab482b27,2069292423,16285694095488484997
+822cd4c2-2b76-0dda-cfa5-ceac946e8930,986524725,13287888941265192966
+08adf106-a65b-16a0-38e4-6dca38e103f9,1809226613,10060655155531243063
+0184a554-daa3-1403-d5f4-301b739c7ac6,1273832301,8608953161104381734
+051e6547-f1e7-4fa7-6ae7-0b9853b56fd9,4052450848,11658370955884941730
+4ce921a3-71b6-33e2-801b-55efb615994c,2994434352,2821024575730090403
+c33120b9-3a74-766c-3a10-289c438a0251,1591987773,1132465001024830422
+fcf7375a-a906-c3dd-a382-4fbc7adeb038,1292167521,14458224522776617416
+16b057a0-2628-9099-8be3-46c6fff7512d,2301682298,10733390974083606340
+f405ae57-3d14-7d5d-e058-783fa93bccf1,78430549,14054619041152984423
+a1298f34-a88c-2718-e4ab-e370f9f8011a,3325962835,14054426993574510164
+4072298a-7755-5194-416c-1090884d3f5b,3098138541,12823746660205535252
+7d5e7ea5-5d08-c0f7-7baf-c066e4e31e00,1495011518,9071550387169851161
+0ca3d1ad-b81b-2ea8-7a5c-ea51ee3b599a,1162154192,12207409651654840694
+f7e64217-319a-71be-981d-73f73177041f,1469968972,9810493780076006424
+77cc7f50-be72-6402-98eb-486aad714aa7,301592034,7058293808599694324
+246007fc-b2fa-a466-6680-1cdc2de8a117,3650999241,7516824188033518923
+adcfd76b-5679-3ac9-bd85-1063f97a7848,1209044219,3464514303812503343
+45023dc7-54ba-33d5-0484-49431537bfc8,2940295335,16118423636793060313
+c3e550ad-6e4a-1daa-a4c9-fb5ac8032782,2973353393,6979305527187221871
+63423c5f-4efe-aa6a-58aa-3dc2b47b65dd,122606853,13333213812680090685
+652b5407-cedf-5ca6-8be0-b6c527472bf4,3712146307,3078309995829264523
+0c478a49-8fdb-3e09-b787-5107d8dbb4fc,2329958575,12522324941062609487
+c739cd0f-2a97-c969-e355-2de7dfe9debb,3264665718,3825798419600637842
+e44030f8-f0fb-f62f-a229-0f4afe437f45,1637490568,1099710259541190545
+e22340bd-e74e-4a00-92a2-20fb4bd4f01c,228693564,8776553832354982935
+96f169aa-4ae3-377e-77b6-a0e7be283c32,937194267,6570028876035488826
+bcd87612-b039-500d-82af-9696c961555b,2897587224,14647315872525360022
+217409ea-bddb-c28f-0b52-9b34e6954bb3,240399539,6271390545143213297
+9d6eb967-27e8-54da-84d8-3b8be55391bc,2506217417,4687499619723287082
+4f5983c2-d5c5-017b-5bfe-cdd0d280ad90,2153958668,2746131065929036702
+3f766eaa-1606-40c9-65ab-bc639cbde3bd,172556977,1291712875727860784
+c4746a83-bfd7-2450-75ba-53b3a6622943,774010500,6527969009985531630
+13fd65f7-9bb5-825e-1615-1410739bb3c8,1060131954,15367305694550937980
+911a86fa-f3ea-a5fb-33df-edef063141c1,3744753351,4757373255244290296
+d9c3ce14-38ac-8bd6-532d-341e4d359ca6,1728388208,7882452838616265799
+a239a149-23cd-52ac-863b-0b0bea99b763,2353630271,14009957029320998266
+4e5d7b37-e903-d752-994f-3ce5e3ecc11a,3609234425,350321554751466304
+bd87d98b-bc2e-e14e-88ff-a60ae15d014a,3142067842,13978714068126590266
+5a9528c9-e6ab-f160-cad5-174bf911701b,3030593675,5785360560062143967
+d6558cf5-595f-41f8-bd72-39bca67d69fb,3342350608,1254623121133380625
+f611da00-bee8-a72d-4475-4e546798de7d,2788162277,3880707696591950392
+783efd20-7d98-fb4c-5497-a2cf1ccf0fe7,274707622,4247713529399341491
+6c488977-eb3e-5435-237c-0d64016db252,2334336085,16538969407010378334
+72dc2374-b13d-935c-2664-78d1a1d1c263,1410877917,2975118726209633132
+24cf26e2-3f0c-5340-6c9e-bb38b7259d3d,317913294,2656078293907522239
+e847c0fa-5c9e-f6bf-182c-c549970b6cb0,1047414894,16405563944933872621
+5331567f-e881-6b85-74de-3b19a78a7df1,2119386084,9399169622445005178
+038cc9d9-a9ff-9c89-46c0-c307c49baa69,1513299718,16113847252483304692
+e3da0dda-9937-48e1-e731-2f18edcbd210,1124453053,9125913703464519174
+33f65e28-ad0b-84b0-0a90-88879c27bdcc,1426223638,11174368700582431471
+a135bd29-7151-bc4d-56b5-490543b15801,3263341733,3543752003136296614
+03b2f4fe-4b2f-eb23-ae70-f9de5d7acfe3,3482590799,17327800150081903165
+174aa4f0-8b31-8597-a971-545b72249dc0,1574544190,1711151011731689812
+cf640e10-0486-78bc-720a-b77263cf7dbd,1618732445,10336701135322400005
+90724bfb-2974-3a3a-68f5-41b23de2b7f6,3807029860,11009014976883932195
+4c850699-5060-21b3-8ddf-4753d556c100,1359774232,5308455251082783754
+829de04d-06d0-8e7d-14b4-358320a24a2a,2991553381,5006994626607501788
+727c0c89-6756-d6c7-434d-e8a1af5d46bf,2427624787,1906887395914707778
+aeb582b2-1e95-c057-41ce-4a1662d6858d,2088838530,13540581989259998820
+24b174ee-d6ba-957e-a960-1621bcde0b57,1042496387,3210083166266422072
+1003f22c-b5c6-bd9c-5d8e-3c90e1993a51,1974604755,1496577310992420441
+a1cfb0a8-b2c4-bbcb-4a08-6d2c9e025b5f,1355796785,4263190121163840367
+175f44ef-3252-0d1a-8998-bd52d0e05033,4129170066,2042796724181789700
+e28bff85-d216-9b50-d737-17a2a3f1f9c7,1114633502,4325497284100607993
+5c447a7e-5e58-22d7-857d-04dec7f25e13,1149125358,127907657035247325
+c61ab6d3-d965-b915-6db4-db6bb10b5812,3430637538,13148016827332444103
+b80d6355-77d9-744d-13cd-8b7dd376c5f4,3684607855,2484271921672207227
+32bc98fe-8157-59bc-8a57-472e8de1cf20,1613006689,11107675076638318477
+f382f547-0fe5-005e-7ae0-af992670de99,2673678616,12568744925773778714
+62f2992f-5aff-3cd4-9e29-82fd0bb7069b,2501466423,17538296480689772092
+e28d40f0-f5cc-f2e3-2a4d-10c278757728,4259888786,5163620018110611342
+eadd129b-b7d6-5825-6afa-333568917466,1674183805,15823988260060688418
+d5b1de68-6dd3-0c57-47ac-7738a50ea404,1825157689,17930226277458664580
+c698e0ec-ab6b-fe5f-8d87-f1e2eefa84e2,3682712073,13186218472672904078
+bbfe3d7a-3905-6e05-58d6-06afe186c5ff,2648647543,2139457407443345926
+a22e6e26-4668-7aed-bb6e-7ac50c481560,265176355,5421643985231922999
+765ce38e-be0b-6164-5f5a-f7dbbfb83d75,463102502,643133289575499153
+b5af9e1e-a337-12c7-e0b7-2456128ed92a,497169833,13724658163778391483
+bdb58190-557b-17de-d89e-a0e74df16204,1305961083,729180744012159999
+8c904f98-89c2-18a9-27bb-514d496f5155,564214653,14108490709952513675
+12a925a1-553c-997f-9790-79f057ec3ef0,471086646,7375618509181027584
+61589437-92b5-5642-998b-e18b38b9950f,185613080,6866682391512209956
+594b1695-7975-d379-b920-f9178c604a8d,1435250800,8716856457911884479
+4cbe4e46-3006-78f8-7f20-dbee1d550539,1383003485,12870108743634411587
+9986d329-d07c-76f7-3eb4-665e2289d54d,534116135,6442651035905305545
+62c931bf-35b7-1c97-68a4-468e826d42e1,2547505321,11909529853619351731
+5295ead0-b574-8f8b-1588-8dedd655b012,1027874224,1585326452869897703
+02455a95-1391-25bd-8060-5adc504806b5,1428048900,14816895620018097901
+0c9104fa-27df-ca8b-a87b-e396c0660bd5,3772126109,10266512409806011584
+bba04ecc-6be2-813a-3972-2b75c7e4faa1,1921684070,12458898981998399973
+b9fa10aa-3532-c333-7048-7a022a5d9105,1204768009,3164723485595442543
+92720fba-cb3f-6c25-f3f1-972475469176,3991927993,15990132680708661049
+752c0315-683a-ff55-5600-f075882e3a5e,301077684,15852344823726388620
+575887ee-3289-b980-c9c4-930890c45248,1421555464,18127664553315232565
+72f18565-50b6-13bb-e51d-20249f25c8f9,1835129504,8700026699442991978
+d330654e-526a-9cff-3009-c71dbb28a91c,682115051,15683508439734848006
+d688bb60-e6ee-8c6d-9cc0-79c6e8bf83b3,4165970111,17148546718941745802
+f3853e7f-8692-28ba-6f8b-488b63a1c908,156580384,14637455801486966479
+50488291-0886-e793-9718-01d38bbeebf2,352875874,14282818379646422276
+fcdaa8ec-4df6-e475-ef3b-89dcaa88494f,3702033902,13052665897753354249
+e55716d2-1ec8-cf21-c954-1842d7d4b738,3157824346,14898549197980751896
+2f9a0d8f-672f-25aa-29cb-695c9a1830ec,2564574966,10108524510992917179
+45acf6c4-d922-7e84-b2eb-5b6a77cf75b4,550867443,8020708227056876164
+54676158-786f-41ed-9651-0c77d6b9f5a8,4234310194,4087382160186954899
+cf083cde-2173-5983-d915-874e225cb819,1030622020,7082329302963623917
+fd30fddf-30ef-2673-f4c8-d246763dcfaa,2423350354,2275293464169266386
+d2293b59-6865-df32-b155-d611d12cc6e9,2504698493,9877364871981552593
+cddd6f8c-1b3f-a6e4-ec3b-7cc9fde54487,1798423840,5200783027466506489
+05368fa1-bf32-cadf-048d-ee0043b210b7,2909648824,14681117727879482450
+669fe397-159a-0f61-fdf4-39eedafb2372,2871161843,3088696065984802287
+972ac876-a8f1-be78-e25a-67d1cf6ceb4e,3389165291,4382989694788278753
+bd91808c-de95-d9e1-3edd-11c2c48609a2,4156039039,9698800612771749597
+dd34f646-137b-d1f8-af1d-da42aa0f48be,2967214934,13686223691853040302
+99a2572a-b466-aa08-54dc-fd1dc6bfe050,3004349177,15569746650066568078
+42c6c9c9-c674-90b8-cdfa-06169a7bf5a1,4011707410,16579467854752480762
+2d672863-3a8a-5e54-9884-e655b7c61e79,3335877819,7731562854892790496
+a5209541-0cbc-2309-bb24-4b13dce08a39,3343598985,15834335841877650753
+2f31570b-22c0-0f3f-8e14-5b6a3bf2eda8,3224279405,5176025172708957038
+e6089a91-499d-baa6-e7be-c1071c47cada,248198646,12533992662124581836
+af864711-f755-48a9-b677-ac9bb154e19d,2584981485,11556572487857835572
+33e57817-7288-3535-0f92-e0f94eb0c73b,2917024520,17586308779459513093
+1d9eff94-4dcb-fea0-cec9-1edfaa2a3e2a,3143796680,6006197082961354160
+3fcd9deb-ec30-f846-4cd5-4dc42aa748b2,2632533432,2627612297786197361
+fa2ad55b-faa3-2058-1df5-313b4161ca37,1692830217,14587798028885678259
+c1c4e208-e570-d5ca-3016-707a181ecce2,782201781,17346780357776813860
+1e678f27-7ff3-b077-eb2c-0393a00e8106,4289315397,11901597641254020610
+78f3edc6-d9a8-a3eb-566b-934221ebdd70,531748582,3730051592148688242
+0983fca5-0ccf-6ba8-a64c-ee8ba23366b7,87569048,5385083754233257139
+994d339b-ee0b-cf51-a3f5-8257ff690f4f,3890414487,18165298892905409538
+5a7319dc-d87c-dff3-49cf-2387f7c63be2,986250505,10738055904407878915
+0fe03584-3271-b9c2-3fc8-46073758d0f1,3294022974,16613327244775556398
+73fd01e5-78d5-35e7-ac6f-eb19bee58a04,1434014605,16054938094071003765
+6babbda6-5b70-1b93-6cbe-bbd28057a516,1938054178,532641978571912377
+40c06b12-e69e-3149-bd60-697160c1887a,2540140347,9437327222481205378
+df08d67b-5484-fa0f-6a2d-233392e5ffbf,462481093,13515115065282580478
+2059c429-9cd4-c972-6256-f4f6a8fb20fb,3862158979,3664528839864460950
+f9e07c89-4795-e7bb-506d-8f433d4b94b3,800965279,4770128030291915011
+e92c3f18-ad21-bf2e-3684-eb6e676a9013,925246079,18328287197491457576
+24e4ae0b-e2cc-f7be-b73e-f4dcdb82735a,1275642643,17002547921743198498
+c1ca72a5-bad1-4006-e4f3-844233219822,3450364171,2546302592567797129
+bc06639f-d09f-c4bb-29b2-8866ef2e4d89,2796499187,10943850511093442561
+49746b03-7c8d-d022-b92e-39022e15339b,2107709459,13674341702872740878
+a976e1c5-2dca-346f-928c-c85496d82331,2515808877,6181468310959670531
+96bef7fe-bec4-eceb-e229-0ecc9c3fc13f,1845739351,16878266317565893937
+26a62fdd-3467-e9c5-d033-7f1562945b43,1350180197,866992705430375164
+b0c680ac-ff79-de52-a89f-4cb3c614cd7e,2862832789,16653992641229256780
+ab8b65af-c996-c4d1-39d2-a3d7c03743a7,4277011012,5732715788786379105
+6a4ad17b-e5dd-420c-1154-54c6cbf8061b,3826902294,5115900506550287803
+240edd83-3f2a-b4a5-454d-0f3d1c8fe168,1651008528,6981374899778505663
+5978a04f-7987-b160-61d6-aad4744d4713,1168036163,10315498988386609251
+b7800087-3083-3fd1-40a3-c38d09830c36,1964380932,1484891568286544264
+87c8ce0e-fb37-442a-fef5-f35a15b6a224,633959612,13058153640899447215
+1419a6f1-8ca0-35bf-f3f6-299b28410bc9,2391597542,6062616111778436246
+0af22dde-6c17-a3f7-535d-b719ab070367,2812394601,17358048064483271514
+4b038c1e-0183-c068-11fe-310b9d6131ef,818639061,4831639030969981339
+e8f90909-0ccd-ba14-e461-8d5ac650ca59,189194584,12503744874791845195
+c068d07c-340c-400e-9691-281f8d811cbd,2819906167,16117002782250751426
+4bc56b76-2ace-e63f-2a94-0ca2d3aca1d3,3525590900,16620567076616551858
+db24bff9-8f96-1ac3-50bd-967b913d54dd,1425975442,17574335689226065293
+50eb2003-c0e4-ea9e-f81d-213a2e6e09a2,2787305674,4707725740952317797
+7cec591a-6225-42c2-3ca4-a9c2544cbc37,3774040370,5862833874099828995
+55f475c4-839f-ac31-6ece-1e46d744ee0e,2390695334,6879867510908354330
+9a7e10f3-cc6b-9294-a395-e560b7412e01,3146319080,13279612706439703505
+75b83fe6-5c24-a80a-821a-94edb12ec649,1865557342,2128649705430630352
+d47c0cba-c6db-3890-980a-3c92d4091d75,3640939734,11065351412834487195
+7b48d738-441e-26ab-5dff-efa195efbe15,1134731565,17374824313668874345
+23f96a33-e589-251d-929f-c49ba3012cb4,511813726,6547085562461466989
+5d7ce72a-5013-0b62-a13a-e6718e12ef4a,478893424,17100647209584131116
+17d3421c-86c1-8a2a-58d6-28a344fdb657,2102683122,13933459599821508780
+9273196f-0462-76ed-361a-1a329bcbc11c,3714339908,10040668273344766299
+fd5a16c1-9518-db9b-1058-4cd0ac2061bb,1448809039,1142056984207359870
+6aaf74f3-74f5-6da8-3ad5-2bb496c934d0,2595704391,17546134498115937897
+baf41f5b-13c6-55f7-eba3-698e1fd0baf1,1415874861,12865046601578662886
+4b274e88-c4ac-0c4b-70ee-2a87829b8ccd,862844979,4360004778392402849
+ec9836e8-6537-ebea-db6c-4b9e901f63a8,3286197691,16860999662242899825
+c00f2a74-9e95-63e4-fc61-264ba564ca1a,1519996132,8803058974621777225
+e9336d2b-e27b-052c-83f4-5c9a16b09da3,3124755278,16277735002007039001
+69edfc57-8dad-7cd4-c3a2-890c3d776382,1344995671,16230675764023263538
+4e660225-5a12-eb37-3721-f482749ec391,2564872753,1830072078913743953
+f9e1bf48-de9e-a69e-94b9-4182b2aee9f0,131534877,1253030618607057568
+8c31023b-ab39-2927-8732-9c1e38329172,1223977155,6648759386804250802
+67fd0df1-d7d8-cbd5-50a1-690c556015a1,999869661,10028508988776474383
+316fa202-bb37-7a7a-db00-dc57e4306c46,3269041768,12544564625037021746
+5e926b92-6439-7d9d-9357-150d72eaa32f,1959547634,18151102123268954039
+77391ded-51d0-e72c-5d93-cae5e7c237d7,3405731788,1340393413954291159
+9ccd854a-f6f3-89f1-641b-f0b27cf19589,363530955,5907805371467108875
+4eab71ad-5885-a1fa-cda4-7002ff842d11,731304087,3503132223312297372
+6aa2a09f-5d32-7cef-b5b4-567425ac64d8,2552924211,4334451848616775448
+698dcf4c-da45-6857-ada6-e12aba1ae51a,998591355,10279427103007250616
+de9bd0ff-a652-52db-6b32-90e1c981a6e5,4115255779,17743588045130678593
+3b0afd7b-82f8-936f-e1bb-9ed88019b196,2446310451,15997403628743894589
+494ee737-cc6a-f33d-ef07-844461801855,2659743208,4078302564162107653
+774afe71-36eb-c41f-ebdf-be5d908e005c,4063920365,610994010195784312
+adcd703f-658c-fde5-dbf9-28cd88df0c1c,3976770380,1123509127295424429
+619d7bef-fe64-9dad-f655-8d0a1eef910a,1101272931,12158919441122241259
+1f105e6f-251c-748b-c641-5983ebb28f89,766396441,3976448323807410306
+666155c8-5b3f-72aa-8ead-1331182b3581,1022638416,13613771775925299821
+86deaf86-6c98-222f-d6cb-fb5c9787d2a8,183339146,8821350023016045829
+cfc41945-d0b6-0416-0e98-824d17b0a691,2879687569,16066221907763136432
+1856f236-5561-d6f7-e38b-5b81b455b5a7,340312200,5157664373401778356
+fe4318dc-a81e-adfe-7aaa-e7a34d9155b2,3902393922,3138992207694676896
+f8f65afb-56ad-b73f-7ee2-71db08bbc5ef,1658488977,18204554767685069378
+516248cf-a4e7-efdc-1d43-c4567178e9f3,2757183624,3750333360667021394
+4fabb19b-c09f-65cc-7b84-c266beb77e10,1273262280,14774290552374315771
+c068aeeb-f014-27ca-4311-4e5f2cb8921f,4230775297,3431002977161021476
+9f277e61-2d18-569f-b4a7-7fc616b2b90f,3987801847,7566304432668707007
+cf50864a-b5ea-041e-9f2a-87ec8405e396,4213288109,16058973652218644179
+1e6b6760-225e-3e19-4333-4617b943af08,2020949231,2697032571121023064
+16276a0b-efd4-f0b2-338a-db478bfb7a02,860028741,16464212446362335691
+ea91ff7f-b6f1-3870-fcea-867fa83e92f9,2664331590,16481871582305800821
+af081e1b-e0a2-b701-33cf-f4ee994ea56a,1537272644,13865168235173961257
+aa3b58c7-62ac-ab06-b0dd-54e28278953a,372155711,8879934151109139282
+e0182820-676c-f9d3-017b-1f230c335f65,440189567,16049481133915173511
+162ee8dd-1ac3-1fc0-8de7-e5f57f2fca11,1555064964,2450829379926543323
+72326c9f-1adc-262c-91ad-a0b45fd640a9,416038632,599955312717744723
+9e0943b9-b948-a09e-a101-1ec673a0b034,2334096783,1694762201880708722
+f98f625a-04f8-0342-d17a-d45474562b3b,4057345496,7176489695680145581
+a34908aa-9c56-c9b5-277c-a379a73a5563,1646592341,6766834872630840544
+528d13bc-25c8-fa70-8006-fcac561a818f,435382525,808744748246227523
+f2abb175-d592-5cee-8843-5d30ca8407b3,2772437592,16809904368546108963
+87bb0f87-38cd-9d91-2984-23cfa608033d,108741170,2927505963620043810
+9d33019e-9f4d-0a62-25be-1da3e4c1f49f,3795447101,17912270511283871043
+8c0ec2ea-aebf-112a-677d-c395509a8c89,1271951301,4812242900856267057
+ecd8eca4-3367-d8e0-e81e-31bee0bae4c1,2515785342,8220106423471466219
+4280effd-014e-2164-788e-fcdd2877b35e,1479233912,1772507241383293679
+49eee905-0d78-923a-8b63-7821dbd7b957,2454769978,3289180581765329577
+b3725cf6-3b78-bd1b-333c-5f4c91cf271e,1549383211,13673467638232317854
+920abc9b-a52d-687c-f340-9cc6c386bf8a,3857376333,15874138502352382831
+8da930b8-d7da-bc95-63d4-fa6ee1791fc5,2520956423,4135039517225768679
+23f22b32-5ced-8d60-146f-dfc5a6ce77ea,3486473681,11677366410802181188
+621fda25-3825-aced-ef59-c86bd8988cdb,1387734693,15198023274088651321
+bec74542-38ff-a709-ef3a-682dae958fe5,26599829,16643898802048465527
+d7070a29-6e25-6fe7-7699-69d7178a2f3d,2784959338,15531972575880848339
+d21bc4f5-a44b-b535-29a2-4ae645e74a79,1995407257,18157728727188100749
+42392fa7-1f60-4037-cfe4-eccca24006ec,1716205883,8444933992149755327
+8064b0de-4513-9edd-5e06-4a4745ebf712,3135742547,14666539724080637279
+4efe5ee9-c6a9-ad04-e13c-98a86ae94038,2093810155,9907335515176116394
+9879834c-2f55-6e47-4c09-e7833e5650b7,3901949887,18186033606834757785
+6ffc2115-8556-bde1-e345-1d36ee2a700f,3657811754,3409716777536857922
+2cec3921-4187-cf1a-5151-5b61de3eb1c1,4185900022,12797936221079230393
+dc72e943-22d3-e151-9e2b-3df9039e0502,529790151,7587048128451157138
+531d0258-38b5-5113-6d95-ed56da3c4259,2708787091,11700044266000189080
+237b58ff-60a0-843f-7eb8-4cae22dde1d0,142329982,2849903882539017800
+341fd186-0319-5461-289b-6e75af7327f0,1869567804,8158274738350792787
+285ffadd-a9ea-b66d-5c30-4e9f7c630bab,2902268623,8575562314165713508
+e304581a-9c8f-8eb9-3e4b-d50b3c030a3f,1878270008,3006364213654707796
+37e60a48-bd3f-8f00-97d3-b23e61b57b47,1951219503,4504034862471965408
+772f247a-5962-7de5-482c-908106167bbd,1962875314,7265031896169794431
+c79ac271-3a27-81cf-1909-91b25ba5d3ba,1658050636,2870240684500348032
+5f5334e1-4c10-fdb0-bfdb-56f871c7e0f8,3896818875,17375144434211412430
+d2f8913c-4019-478a-2ac8-e0a6ceab9934,2478873443,15067573896543916935
+fe6529a7-e352-906b-958b-7bc422e4d1de,1723669273,2240998320641338966
+4efdef81-bb75-0839-f218-00439546cbc0,3067476555,3137638862995546361
+6ceac6d2-c96f-000c-b1ba-6943650163d4,2616676805,10530215980944123747
+7195b1b3-525b-e1f3-9e94-bc38c1903e80,2761983806,3853371888847382560
+5aa48a4d-5933-c559-4eb7-cdfe33fc8d79,854485563,12054414861996275108
+f2fe145a-e39b-676d-fc83-c69124ab184b,2620935440,10498228954093374726
+2c42b5ef-95c5-b31d-f5ca-1fb0d7002361,3126384185,1223576162582913012
+f68b3829-ef4d-a3e7-a6ac-22336ccf418d,627415889,13086150065130944789
+23ae4b2b-4108-5985-fbbf-2678186cccd3,2513586847,9809740072121811444
+f43cea0a-413d-8f6e-b659-bb69574dec7e,392146600,7122790285757879146
+6611d084-b2b3-650c-6ab4-09c7cbedd265,1449967389,2343295956805417901
+d3a2daef-af18-2672-1bf5-2526d9619ef5,750962407,18373382679440422246
+784c1aa7-a922-24c0-adfc-89049fecab04,2424833668,13199448557980658114
+86e4f8e0-e32c-baf8-c823-c3469457dd41,1806336476,9145199495158126779
+f00c1d7a-e40b-6a29-ccce-4858e0619d2f,120951621,5549858538550934613
+4b0b9516-eeed-414e-d50c-62a2bbab097b,805992154,2530565195220396127
+6d675966-abf1-fcf1-cfe1-306d5b69df3b,529877098,4853690090608618772
+6d2da66f-4b9d-87b4-d7c9-db3ac72a617d,1891392482,8510644581846520843
+fe92e5af-75da-5a16-ac8d-168a4a815a73,107031283,12024250228663438217
+126a27a8-6701-1d31-0add-da021c44b955,2212937797,10116493330526180090
+3c689f86-be04-55c1-ae2b-a3338411a654,11369347,1094643339027794794
+4ae2a7e8-e689-0eb1-2f72-6165c6c2ee14,2229327327,14089358652754326887
+02dfa04c-24b3-4a7c-fbed-52e881f72f9a,1839349074,14660369537505765982
+5df44531-6bc3-214a-048e-39e3ef37f626,1182975563,830015234385639509
+2ca8fa93-9df8-32f3-8320-bd0b6fc8182f,1279438736,15376916351325016495
+c52a65f1-2733-641c-02d0-acd3a6a3989e,3071738447,3549026887643290584
+36bc77d7-3d24-d3a1-9eda-36103641b20a,4256548788,13126909028396482008
+a22a60e6-9934-93fe-4744-eeab29ab0c96,2310884845,850957789349011921
+c8e2d928-ad37-1b52-c32e-d8c3e58aa55e,2674790766,13715969642327956092
+db7d730e-a418-08ed-eed8-094006b44661,2818765622,16589731104044734703
+e6040205-2460-ec7b-bd6b-a7828f61f873,2989755796,4004106038781337852
+b7ffa0c1-9069-aeeb-fced-249b65242e83,3039147334,480781715470681832
+350b01d0-1ca8-137d-47e1-7dded9d96f80,1580851596,10492350005387477258
+659a0f7f-bf1f-789d-bd79-5a908067c091,1654777770,3233618762073183165
+05dd76dd-175c-cae4-09b9-a528e99494b6,1298814453,11626764467029579333
+8d70b38a-624f-563e-56d3-7c5e2d64b75c,4042634871,4495212136243343853
+adc8c17a-174a-96b1-14bf-babda7159750,2275396536,11815066592901226516
+6b38e13b-6d4e-703d-a8f2-fd6eecb95969,3654791811,2484914253541663176
+3029c152-7200-154e-b969-1d976fd87e86,3177123056,8690094964144378342
+18aab253-2b9d-0365-2e62-776f5b4e5750,587890548,1079902417102110906
+3b70139f-c766-4304-d92a-610f6465f5a4,718409669,10394956896427891639
+6f3e7da0-2689-57c8-5b01-d89f1b39f2d4,22312789,9014047011978635624
+de529636-46f8-c31c-2c88-bcd0a61a47a0,2920243702,2156687070247385496
+9d7c52c9-139d-e6db-8975-bfc5d5678188,1368201637,17433588954973641130
+3fa0dbe4-1c40-e4fe-971d-65282c2ea7dc,1228251455,9964113182549491324
+c13d3044-3924-705f-f33e-379f50421b85,3273894133,16407735376720400956
+128638c9-ade7-38a1-ea09-d5ba49f681b2,2196172628,11176197441256791
+d0dbad23-ee92-4ed4-13e4-cc83fa395698,167959592,14401319960511078134
+f93d8e56-e2f7-5d55-905d-34038881d9a8,4141172569,17859750318754116794
+a2838dba-9dd3-5a84-5804-b481d2a976de,972627656,1586525903059724008
+da3117ed-7902-ea58-a736-3ef32bff8db5,904091845,17075291036435096051
+abaaf90b-9d35-9249-d21d-7104020b5bd2,3592981523,2395988091357209888
+851b23c0-2974-ce9b-6feb-e20902042ffe,1668431034,5568449455481506422
+bddd4fb5-3a40-706a-2718-18acae29cdcc,2927312446,7211059733210991219
+e066daa9-a3cd-a89d-b3da-d52d5ccabcee,2192300316,7074221084275427895
+5186351d-bd27-c41e-6f5d-21030704c42f,1152759432,319021850130400934
+8f76e8b8-a094-4cd6-97ef-29327a8cec47,2948616794,7145327749863963742
+2cccc2d3-dac6-682f-9cd0-3cee221c9fb6,3183664559,474228884552537995
+3ec632c0-43f9-4324-1dd4-321a84dee6a6,3904602075,13955659281617451831
+d6760677-b03d-db15-7ded-0cf2424ed34a,259598581,17271970047110358028
+fd15c995-67f7-0124-a52e-c989e112ed83,4007486516,7893317375774797707
+9eeabc06-ef8d-d9ed-c184-7e0da30b4076,1269531324,14186710935889970428
+4dcc15d7-8e81-0d2e-b0c9-7f0c77d8692f,113756357,11824111983152491948
+f9fae420-8945-70c4-39f2-fd32c1dcc8e0,3797880989,9296729564684539885
+17a56254-b4f8-9c32-3975-ac7c7a9ea479,876904740,4642833015666895980
+4a2eb371-eab3-5b56-d989-f9373f4b5ee9,2761871740,9099551218993920396
+d2ba763c-3a8b-35de-2226-c4e37fb01e56,1537318904,26349902117776145
+595b7d37-2702-dd87-3842-a8a0b765e0af,1848263123,8575636956874932932
+3e0d219c-de12-8167-9daf-d5b4c95975e4,3654137320,8181052764911740263
+50a26777-59a1-6a09-c041-dc0804df4d44,2382953996,14903726244292602419
+519eb947-640c-eb64-465b-7f7d3a26927b,2872882639,15170791690011200607
+32c3e5f0-a683-4a99-d95b-d1204cac5c58,656910440,8468267222456400887
+d40c102e-04ec-6b9e-0ff0-08c02c6ad204,161063037,9063453193666500454
+56867e52-fd0d-1be2-d4d8-48cd0467738b,3385730390,11428509167093316916
+a852fe9a-63f9-2917-db13-4f8121db7d20,785131631,11893779997821613809
+391074bd-9df6-850b-077c-396be86a1cce,150442960,14408988132148272917
+d8c20f64-a1ab-b946-5a08-97080063061f,2613073727,12619770443744911104
+da6c4fbe-849d-2e1c-e6e4-a1ddcb06f771,2388537313,9000056969595457080
+dd272693-7bd3-1353-097e-04a221d7adfe,3609604025,13862432820477470277
+b23c8789-c213-cdcc-d84d-f3290516941e,491342859,6403588469712833465
+f67cd3a7-8b23-1229-e422-20403f273ea8,3637762148,11630876519280275792
+e7d932c6-5415-f975-a7f9-d0692a742da5,2791394499,12555861262396882651
+1713b16b-8a5a-4073-a476-184042d0efef,2544904879,4641348572120457911
+18837bea-6a38-fa55-3a67-1ebcbd93c8f9,3725620065,14128910889952110518
+e8d36765-3a27-94c1-e906-43f2bc836428,768914932,2813270865320908713
+aa525d53-c1ba-eaff-ae54-37be5b2b0c03,201282927,6921408969212184010
+8bda916f-5ad0-888e-f7e9-9939bd2f10fa,27066719,832037722397754115
+98a8d037-7b84-9193-51e5-2b0088a0f6d3,788023742,7851578488030893485
+66228175-a2dd-7d8e-714a-03c28b80778a,1251134629,7006261943594358252
+d70775c7-1c62-577d-7409-5358adc8eb57,1430753796,8598899631288798770
+81c614f2-b6fc-4f01-c1bd-ab1109b0793f,2255893670,12917647652813452361
+b85cf4b0-1b91-29c0-bbd6-76b562a9b826,3396784127,8197769945018334636
+cde7fbc0-851f-5c4f-d03d-c33952e9021f,191139378,2460429985900917405
+f31031ec-792a-585b-d0e6-33fc01ad5510,1802543069,15131568006344359569
+901606c3-3dc1-4768-128c-df76390c8a25,1686584443,9430209758286888855
+5425ea35-a8d8-0e9e-7560-153f17398523,3778517934,17839356709692378824
+f55bd439-1675-154e-0f88-030d024a5f70,3955505708,16448119264146406245
+f5338517-92dd-ab9c-7779-3c3932547a9d,280914601,9823488451727614532
+69665b3c-d7ed-835f-ee61-f8e9c58c7b28,3020431980,9210934754357231518
+f138d257-c0b1-338c-3ca2-a69555f5dc57,2926028797,13014836822244598861
+63f7b3cc-7221-d15c-54f8-58090284fa2c,326448314,7726007829537526001
+07b49fd8-863f-aace-3d37-de3dd3caa98b,2412305805,6535043900976775173
+253ccfd1-fe7a-75a0-6794-89a5177406a6,2816552362,10275923605274331125
+2f2be750-2169-8321-90e0-42b45e876443,1910945236,16603470668334032640
+fd0ca13e-18d5-34b9-40d1-9160a5a87b1a,1947416705,2829937612755328689
+d470154f-b897-f465-604c-70e7656d2cc5,2901557196,3387344070370845578
+b747e598-044d-960a-295f-f63d154283d4,3882121727,9272067530890304638
+b8765d18-46ac-7fe7-b27f-192ff91d0da8,1359335348,6087571835229870394
+204731be-875f-53c5-c548-48d73e2e2916,3754644756,15772545154685537393
+cae9672f-a80f-c153-068e-0a130166ecc6,3798430960,16623113339805501770
+5a1680e2-3c44-f9e2-2e0e-90cc94505644,1219661760,10237943842776267418
+e0bb2c29-29da-dfcc-6e74-fe0c79308a02,158758156,9164833289372962843
+92c22332-06a5-47f9-917a-16539aa3ed53,3334139192,1964232435861729367
+8c741a41-40f9-d5f0-2d5d-5522f2af3678,3207181655,5201380710909157641
+19627944-e40a-babf-2ded-773481a63aea,2146066775,665687664645198604
+9baf76c6-a052-2788-4105-08c161677d0e,3885052928,14754491335463961031
+9e0ddc9a-7ccd-f84a-6ce8-51c17a66e42b,3413160332,17412037599922882908
+9c4950f4-8f94-0684-6c1d-53138ef2ae33,3750653290,11246288914372316627
+592cb5ee-c06b-1de9-ea80-ff14e7a5a1ec,1235488537,8707467204275326833
+d3d368fd-1ce4-5dab-fec1-5988d3941763,3494802379,15047657775470597661
+655a91b3-2480-02ea-ccad-904e3f036604,1391502415,17237654930720142089
+fda3c39e-19dc-4f8d-6a9d-20466084dcf9,4257034929,1060505073201852260
+6e267f7c-c99f-6b4f-74d9-4bd6da4880e3,3966051354,1788391867977200999
+5b44f25e-88fe-c33a-9f7a-3b293bfe4866,1222649832,10588980290866946644
+ab411806-f603-f786-4771-8bd080cf12e9,1838296404,1967759200032970080
+063603ff-4ded-e2b1-cd9d-0e65c749c7f5,2310436647,1308760118018602753
+5053872f-c6fe-7653-616d-8bde12a1a43f,782677844,7464725118893822225
+9e879a4a-02d2-bed6-5548-fe8faa41f5d9,464041881,4011344903131078946
+5578f744-193b-8a89-9be1-4c484f79504a,701376962,17128341721516021100
+d3b77baf-351e-2bad-8dee-29af77b1cfe7,3151812234,406332639915464088
+be088e9e-f7dc-8182-9be1-653f7e00f2f1,2662041210,10594408466449191757
+64f0c6fe-492c-07da-ff8f-16a0b77199b7,2027542747,10606885996555133515
+492a3dc6-a469-d099-239a-eb6599883c0b,3860142104,8052392303189316573
+86a07b17-74fc-4ee1-64f0-c18a982e1916,1602612273,11406657804801167199
+c6809674-a373-e714-67d0-bc75e2e271e4,904574,11357955009131642634
+5fdee251-fa32-aebb-fc5f-9c4ceb981bcb,2454878518,7654809614291271933
+e8dda675-dab1-1d4d-f5be-4315683bf550,2293012680,9963743748277612020
+9ff5112f-c08a-2aaf-3cff-71b20e299f06,4117546472,8521823826113093397
+40ac2148-2554-a5a5-90f0-39d0f0af7580,4234344822,2691864281515534756
+6446aa57-d323-71fa-f3d4-7fa16e0408ba,1828853735,17027706019440747628
+b486396a-967b-36b3-842c-4f775e9a689d,4153502457,18190524249745157250
+d3a301f0-919d-44a5-c730-4b19eb80b22a,1811237488,9477818926574485340
+d1c91461-aad4-52cc-ed9c-51298348dcb6,125747675,18397184195539449478
+bd0501f6-5dc4-d989-107b-25ed05a4134e,2310570051,6842048044654716690
+e5a09295-53e3-f6ac-68a2-1a775a67d837,3452824663,15293790082447964640
+1396688b-d83e-7f49-ebae-c6a4e2523c88,2088362425,12860267303638051945
+2914c919-e5ea-215f-abf8-163aff8a80d5,2001352138,3664406804113004455
+8702aff0-a07d-80f3-7e02-f896a60cd53e,790636076,10443536613664809433
+b03c1d1f-7969-fa45-d3ff-a5250e862b5d,3744850966,11141185105857097432
+93e3e34e-49f6-5d05-97cb-3012f933df12,3742616595,17114572359491380385
+1e327623-9e21-274e-0c7c-7d53ea106cbf,3474938911,3328565041325045824
+3cc51571-c0ba-78c1-10e7-f77eca2a229f,3923513097,8204980340717101178
+a31b4f12-d0e5-d6da-f042-afd5b91e0374,3750831654,4074588405123308997
+2b652564-8c18-b522-1f04-a36ef4dae659,1856010395,7589921901734001222
+4702d3bd-2121-92fe-0d45-c281ecd616ab,1228894762,13898056311413976045
+2e5b6cd5-e78f-364c-c602-e074e23be76c,191276038,17786510512058841845
+e3ff8305-4aa5-959d-068e-7780725c2609,2749538432,992572670977585740
+0843e74d-6b00-2c93-0b2f-3df337806da1,2351935329,1183510029125051053
+50d4401e-7b11-a46e-6146-a1b7088ac353,1989328503,17834614935134098639
+9a35f5e9-b91e-de33-1aa8-1d2ee3517c81,3967226433,12421164293928255900
+c77b4c9f-3d76-30b5-de5d-3a822e5819ab,1449487150,10475184019355016329
+df46ed49-0318-835a-3b31-f27a7c3f7a56,3791797304,4607510495423229551
+6f904ccb-882c-f06e-374f-8e87f5465534,2470740187,4570077523204679175
+ff6cff68-bba8-41ea-c0fb-46943d857741,1824804497,15437938356884745859
+4ca8ce94-1d52-5c55-866c-9dad2bbfbc5a,387479056,10576366572966152806
+f64898d8-fcdd-568e-0a92-fe5f91ff3429,2657259339,4760545130713077127
+f8d62a53-e475-0212-a118-1b135f7396a1,1451046862,12394845730813683097
+4858f16b-6529-a4bf-85c6-67b97d8e0c01,3312027394,261779253264512027
+d2dfcf93-4fc6-731c-d7e4-56da1d2b8d82,970659063,15054724763976703212
+19998eda-e891-a7fa-4417-ee62f189f1a9,834996372,17294235814568564958
+d81bde27-6e39-479e-7582-4c3ec2eea7ef,4207693718,8091136078373112008
+904a8261-665e-34ca-d63e-b3e377363b43,3978627476,3986057530269024079
+e90d98da-d134-c45d-c67e-7bdf88b1b04d,2642591004,17332897384896504416
+827c11b8-38d2-3fd6-0e7d-cddf29a17fa9,338464419,57681772690353893
+017b4302-9dff-b607-0f80-2decbc93cfe4,401297016,7249208111838390088
+1d408468-19ae-f2f2-d7c6-19469f0ec603,3222627750,1283880652648483734
+fa63cf82-fdbb-6c84-d7e8-9dda4d0e21b1,2328173977,15739377750875950808
+f5fc3664-dd0b-d0fd-6509-be79ec99c674,2878928880,14763077450779200218
+9f5e7ea2-21b5-068a-fc12-3c220e125b26,708444399,8762026793752883930
+429f1c05-1f4b-bd5f-e047-a81582036702,4246743393,12836809963179136891
+5443b608-6289-eeb3-6e42-c964a973e7c0,4258458466,6130286271792959235
+bbc578d9-3bf6-49d4-cb2b-748e04d23dfc,3856603174,10161290523309985263
+76b0d95e-8232-af56-9ee1-a268319447e7,4207771296,11687452108254357826
+919e7809-94c8-56aa-e522-fd1ca9da4e81,1038886557,4212998099535971267
+f9c3fb1c-856b-f9a0-ce00-45b162b44088,1098260686,12252953287984733716
+46774e1c-c4e5-59ca-8e47-088a1c27de7f,465362042,186511400520773635
+8a731f73-6206-b010-c547-d4671a77739f,3193086506,14085378020631230668
+170d98b6-9c64-7cec-7870-f1f1d361366c,1657614739,14404924350748959520
+092573df-628b-2a2d-bd95-701661cc8e38,3810914397,15455946885349332547
+3f51f273-722d-0680-2b71-08ea0f53babd,1814980523,4292472640229924201
+2ea591da-6e6a-4899-d6d7-8a08453ac649,3484129746,8700168069915577206
+1deccf77-a003-559c-d670-63aafeb05b47,1612759350,5251901445859256
+46902695-a1e7-e370-74a3-993806c8f0fe,291988584,16209744946782122163
+03f4cb9f-59a4-1dca-1e31-c185855f06e9,711651943,14524266367972432334
+22e48ad4-4f14-a228-b5bd-efbc2e1ce334,1728120529,2986309542760758846
+09da77b9-b482-5e23-31ce-d89d60b13728,3376664736,13864770294973647313
+b2ac0aa4-f3c8-c1ff-6984-beeffb3b2193,1939254333,17319656527230686566
+7ea21657-6f27-703f-04e1-fab71dec1a79,3712513470,9929455148082875481
+1e46b3d5-fe61-d96e-5074-ebb9637fce6f,483310162,1946412654333493485
+c2c34e6e-3b1c-e6fe-6395-e96ed31d8bb6,1223754116,17922640233587026127
+d4c71561-cd32-dc89-b46f-7e6c30761210,171878288,8833640061974435739
+79fed72d-3364-9d21-2249-535c9cfc21f4,688192996,3385092553202861478
+1978a905-9990-13ed-c8e7-758e92cde2d0,3319363955,9223011789778864987
+752522c5-c23e-8018-2f79-071d3c81f9ae,366737117,12841700511652699189
+93edc401-e43c-da9b-3e47-172db9e9821a,1538541441,13678567819315535764
+35b2e1b5-4332-9722-a8ad-264434bbe7f8,3119129934,7551755918348652255
+7b6f1648-82c5-d5dc-ff91-04c5a8a5fe65,970848546,8907992533044879937
+701da867-9ca8-292d-a4a6-57e5f25ff87d,2022113712,6555182902225961932
+a36a97bd-ba7d-9c12-877f-4e26def29a15,840560414,15598154586972873400
+950c1e47-eef6-94bb-96da-e93d4084d5d6,1838264038,1221798317676194316
+57e3eeeb-1f5d-6f9d-89a3-327b770f540d,350891217,15323137533330013325
+2576979d-54a6-13fd-b54c-6cf1bd084ab8,1223169369,8378441288767815414
+c7c65843-0bbe-d70c-c1e1-42005677ae3e,909469258,10106065759062832291
+e9557171-9611-e7b9-5175-ba449288dbae,1171990488,8281420671710951236
+cdf92bb2-d425-4e43-79e4-cada61911881,2650255819,3992776275775577714
+898136e7-e8a2-9c77-aae8-06872979b389,1435901265,13596553031708920987
+e74a5dca-e704-9e77-05a8-5b085b603f5c,3541924311,14988188872780495712
+3413e17d-1988-226b-ee4f-b8d25a1c8fa8,3976154008,8136200460973358195
+76d6df91-aef0-5940-5a76-2f175a804411,3715117695,384376901972501431
+9b0890f9-01b4-9268-2d01-7ae87f65152d,754021258,9062484118250640159
+8a0ed9b2-3bda-1fd5-7008-52d9382fca66,1307669739,1034825319886360380
+e68c3679-775d-e3e9-299e-cf78aed4eacf,764230912,15544138268409104417
+b0adf227-c483-1a74-bc64-4338bfa85fde,1562229051,15483938430690340209
+ba9ddfcf-3d34-9123-9e04-a393fd1e3f89,211570565,2980354373273986750
+a00032b3-2ff6-f3d8-a471-e235acc6e09a,3555877570,695702235131775076
+41e14db7-f404-74bc-f63d-9521317b5924,4272048376,15653274708193670743
+beb9b2e8-527d-5e54-9b5d-8b5612415afc,4197070063,1314334361562896489
+3adda8d7-959f-47e7-d29a-6dab5cb4baa7,3461303303,5484620373079249521
+72113e89-592f-5778-0e72-e5d65b15b79e,3156830306,16428853197921076807
+ca5f4ccb-9339-5a7c-cc7f-c7e249b1bf6c,3563163652,1511605427250194849
+920dbaab-846e-b566-6a36-cd7e8a1dfbc2,136753848,6172939648512655602
+693bbc8f-5ea5-d73b-0b05-a44f723773d3,1882470315,4051811532181568525
+2a23ec1a-0064-5828-d2e0-e0c1a4478c40,3115928128,15478427428889906628
+d317274b-efd2-7245-f1d3-557836fcfae6,298174209,15247875629707647933
+e244e981-8c7e-c8bc-5e64-254238da2bb2,2975084051,1228910549234746105
+27c74bdd-9d2a-54cf-555a-40027fac09c3,252394753,8902166243212731352
+340568aa-d29e-dd5f-7ad0-21804eff877b,1837698916,16833436896543424480
+8e784857-fb09-94a0-72ea-643305913dd1,1116606861,7045602818226394949
+b863c812-85d5-6397-fcd4-c006d7ffbfb9,469617361,3248791857807766931
+ba050755-ae5a-4ef2-ff80-60b51abb462b,2148033554,16198124970881806243
+05ba600b-019d-e77e-021a-e4f35cdc9e09,4075554524,12091930736086005188
+88617cbc-3e9f-b694-1d00-15f3ae83940a,2573583853,12943117777952900875
+f05a6b53-6f19-5c0f-2782-c484bce1964b,3915071350,18401268497285981052
+926e8e69-d0fb-5d28-17c0-f47101dee884,3406947572,4710261618905888621
+8eb4c1af-29c8-2383-bb3b-3e03ffc5471d,1611044281,7832144683883935290
+f12acb4b-bcb1-b76e-05b2-f3d1c223052a,4207419677,15116138660152460327
+f7ae89a5-a8fc-ea40-d4c5-7fecc8486fdb,628325053,10523104313947222332
+2112d2dd-ece5-c401-0204-2370ecb69333,2848184276,17374577596324459376
+953b95a6-7744-aa71-5a3e-b3afae0c8853,1490956268,10032554200210638151
+b44f83ca-c497-6ccd-6b6b-a568d4a49842,2245016777,11337251895852902731
+afd4bd5f-1ab7-6611-fcb4-24f309bbf594,580130190,13341271226141072589
+3031b629-e84b-3858-7121-2a5c6c1cd093,75920916,18424145160795347553
+e986a310-fdf6-8299-3017-3d52cd01cf2c,11620063,8722296895207273894
+bb568891-11c3-8f29-c2ab-7ff974f58566,844504862,7590061157186665880
+ae1b2cd7-2f70-9749-4bbd-a8a473d9026b,1495584313,15830800966514593534
+d606a8d6-061a-a156-2faf-ac9869a5cc3f,3351015212,4883707859679511542
+02f038c5-5cb0-c9e5-add9-7ab3e28ad149,1455742934,6127947637126786845
+9e189904-e07c-1ad2-d4cb-b560b084a518,59657091,3302440215091176670
+300ee344-664a-3bea-e111-32f19e478d96,2758082348,5677378398778113129
+d19eda5e-7e83-3e86-82d9-a73f4a65be6e,1257169105,9979312260133826726
+7484c4c5-7af6-bbdc-8e23-362e5f9c928f,1026297636,13251380120913134602
+6088836b-c470-2cb8-e013-960affcfe7a2,4247728161,9605145136787861229
+3caa7446-73eb-28ba-c1f6-9ce5c13d99e4,3058581632,5737469543559681683
+17da3786-5174-8b36-1937-740d1c84d137,535966132,14461429706032086663
+8e5f8dbc-9bbd-d898-8cb8-d9b3b7317ccb,1151908925,4438900190579180347
+30a2610d-70bc-7c0b-7e10-79ff24042164,2568221995,15343069492196241942
+c60affe7-4970-a951-f630-aefe4c2c7616,1240803453,17441874796434962597
+04205297-15ee-a104-70f2-d1e62eb2948c,3495817209,6892108258703822751
+e1b7e867-a69b-2d28-a616-2dd61d22e235,737022336,14189709437807456973
+de164b72-8111-4a39-c2a8-f56048e11251,3012638050,17592611989627149451
+7876cc35-7026-5b40-ab5b-66f71e9214bb,760815449,663419386768874462
+05d89523-9396-d511-a46a-1bfdebab3219,2659247551,16078049362191455926
+a5bdb1b0-2a18-5003-0898-0787420601f5,756601830,12209086503092078889
+f6f1d8c5-b1db-ae99-611d-5470fc782840,2425806893,3428894736394907768
+a1b8d6cb-db0b-5ed8-cb9c-0bb9a987dd10,2498327433,10622946253924846875
+a4dd295e-67b8-2457-29aa-225ba93fdef5,4098846755,3556860716175297324
+c8f912cf-e634-60cb-43d6-a578335a9fa8,1814878725,4909853952030139497
+a577c3e0-c238-49c8-bf85-0cc308416f18,1444369589,8597648512138649560
+0f73e94c-75d1-f30d-9574-be3d82875d1d,3722141393,10529457707554312236
+b21575a6-5e6c-06d3-de0c-d2d172b7e9ce,2324144402,2530506347125487365
+8c590d11-08e3-44b0-e06e-82b53c55378d,1950220745,12596299539306666725
+3681d64d-a1be-c060-3101-dd79c1e44b6c,407952813,7010879759338904060
+0d4f17be-5128-80f4-934a-8d880bef710b,2308735062,18012751212986601956
+b978723c-39c8-657a-f2c3-789c749e41d2,2595972217,11963068151978168722
+2fe83d81-b35f-036a-f694-083cdbbf6f8d,3714499021,18117337827413867924
+d737635b-d741-8738-4f75-81d5d78ff48a,3151119698,17473361065089276135
+ea36706d-43d4-c042-0fdb-2e6b213f2fc7,2747978271,12195071046724767665
+9685f7a8-da5d-a961-29ed-802f353f27dc,586183639,11085649292490271271
+d123795f-3611-8c9f-8ec2-2645cada00f9,1206372574,6302534478013644608
+3ce9141b-fcaa-31e2-5bed-6978cc56ee4f,1193262334,2882901256452385469
+67a3a959-a004-0b80-8efc-7cce13b738f6,4139939759,16755145849673451505
+39e6799a-cbc9-c863-0043-fd1805dae412,1475774375,6148150153007086832
+790b185d-58ea-0e87-2578-b834f25286dd,1462392125,11517245490002240441
+2c458a51-b31d-7f77-e934-91030e8fabe3,1642135625,7262304472948542793
+2463ab37-cec1-091a-c245-42440f6b1687,2785109138,18117543100802315038
+1fb8dbe2-734d-471d-efa9-68499f1d0864,4047325710,14490775607751938972
+0890ab7c-1df8-f4bf-a922-a984e8ca36d9,1695986795,9732411245400324086
+b70867f2-145b-7f5d-cd91-5a0fdc97bdad,3087187408,12392765436387078191
+c589d206-1995-ba22-dfea-f9e66fedd311,1210483655,15912922240093548503
+fa6dd44a-4ae7-53de-655e-edc4442c782a,1893722412,17654984544198701067
+0d84994e-a3b9-1adb-efe7-422e76eba689,2902388424,11764087129977562863
+fdbc952d-a9c9-fe3e-3a0d-781fb4098161,4235528819,15781107995351777902
+85fc00b1-1c57-3b0a-4cc7-6bdd6f5edc43,1983314591,14229762582977227035
+bd5566b9-9df8-15b2-d168-9aa66af7c9f3,2132702027,6626243581972457066
+a47cb51a-a63b-98af-ad4d-2c9d8bb0f379,1770299557,15005317939692570150
+c6c41fad-3f97-b950-719d-ea67eb2ee13b,413217625,12890086674313590712
+b116d76b-833e-02f9-d35b-d0f6b38db70a,262879222,1980502269470697848
+42105d28-1372-b53d-0854-6e8d527b3963,1881656092,16067501753046549705
+58fad74f-d4ff-5c86-2c40-8327e5a03289,2711489275,3435233112481887373
+8364727e-98fc-bcbf-95ee-301b103355e1,1389843865,5981313470320441733
+f809ca1d-d27e-91f0-9e2f-3c425c67fb61,3193475803,6908324509325316142
+df0fc23f-b53e-0512-091a-20847f7e430f,2724580242,5569965776968520257
+aeccd4a8-1eda-cf80-ea9c-cae887bd471d,727593386,892379494018736062
+9aee9b41-e63c-52f5-8635-a041460f4073,1469774033,10733680344190581526
+bf7cd768-793f-d937-2d62-3dd33ccd7940,1597998781,10539519987835806787
+9a4c9dc7-63c8-a569-e544-4ff2ed89a3cb,36860856,4464333520489506604
+f48ef2a9-0fc4-9909-8eb6-bf16c8efacf6,1637531689,11633781266203659204
+f4152b05-8319-033c-b751-e52ab1d606c1,565639206,13096563197695500820
+cbe82c7d-48ff-b6cc-bd5f-86cf0553f6da,3091599778,11050871122738687184
+8f5b82a0-9337-5dca-9887-336d36487338,419165791,12663104305513077040
+785243b5-027e-b617-e406-a43821c74a00,3370614951,7714838908525609688
+2f871dba-12fb-20a0-2aab-4735f07bdcfb,582755135,3078446754638385670
+8a9fc23e-f5c0-cae8-a1fb-f2ee23777b37,2878696656,13910380213498546615
+a8efe6e5-ee5d-a99f-cc5b-f0ca1b08d19c,2358413114,6527478830871419010
+8669be27-5788-91b7-ed9a-6b2163e71b48,3101720506,5850513493186716254
+24482517-a9bc-d611-9149-5b160797aced,467133574,11953314278513033873
+fbcb7401-5bb5-4e2c-25c4-ae6302d14437,1625575133,8728467263401736287
+71720cf1-a457-2d7d-e608-4d54c7ecbd76,3639736791,15283072267625440920
+8d22314c-0aaf-7c8e-ec3e-3095639ebcad,1715743113,6846101440640087715
+ce6d3129-3ff1-2f67-e2ed-07cde83cf73e,3295458315,1869066769530950157
+6a6bd2f3-efa7-f6cb-3219-95740b6d9833,1663400011,1537859473425733819
+af47fd56-4c6a-d6fd-6cdf-cecd37d46bdc,2587767561,10959576898628331314
+e05ea8fa-ed75-ca1e-8671-39d356e37db8,1106470445,3572365109287534603
+0efe898c-2ba9-4c37-65e3-afec88eeaa67,2540989540,7041816515524282859
+4b0faa2d-adb2-f6d4-1759-57068f65ef3a,1515400609,12191037427928866242
+b7ddf643-29c5-e75e-d07c-58aa69515a6a,330094213,14517496526401454811
+af7d93d3-3f68-9e74-53fa-f07932cfe92d,2322718833,9056692799116422994
+6f25a9c0-9da8-6af3-e9c4-165c00ef30a8,24974438,12849343198168368283
+6f827bd4-196a-1d19-464d-1fd752d5e8c5,3383226153,13856812923368621605
+e50fb7d0-e399-fcf9-5924-557e9ed5b136,3142269580,9591505386118553705
+dcc354cf-9af7-c442-1a70-55fc31766679,3626923347,4329887079938019264
+831c59d7-3543-d175-be59-4e9a23cb6715,2550649724,13110072634873225312
+dea19cfc-fe4c-2a9b-dd24-21e25b0e3156,2182471663,14926003504483847324
+db6c93e4-a583-5961-0f37-5addd33f6eca,745837791,15122713546846128030
+3587d8a2-da80-aaab-93b6-3920df87e3d8,819968623,15966858563484621689
+db411211-7d90-7362-d22f-0316e1a6d6d6,501952474,9816924770665169557
+3ab96881-3b98-e37e-5a5c-e603b8891b2a,3135676009,2662767318747357397
+466ab164-ec55-8f59-4066-f93fd41d8333,1576205311,2462807514645199072
+2779a2d6-633b-eed3-3035-d00ccbe5c7b8,919428097,7617690081014521865
+bf2e3bff-dbde-d9e0-854c-c3f30121c6f6,3297193390,15592031990962952793
+125c9710-24ea-e818-fe8e-ab15c30eb2b9,65302436,3326971668845209301
+21beb969-ff5d-8fa9-737e-422499cc8568,4031683801,13090628631734695942
+266393bc-e838-554a-d6d2-b5095453773f,960020399,11080011298478197638
+ae6154ff-0338-e5e6-0d4d-c725525d2d63,4062570384,14950514933802024161
+fe7eab09-ee91-d715-e8e8-e9e45e5a3362,1139308856,3351025131439097879
+a87a93b4-ad61-8e7e-aeec-f81c8d3533ba,1834517852,8267360683787816373
+86ef8f4f-326f-5bad-e43a-780caf448a95,1518360725,9910212653342515690
+9c714f46-c020-cc2d-bc57-db41f6082c6e,664954302,16693966195813856769
+ef62ac78-4948-d405-7cea-1a1f600223d7,4177201754,11201557438879914824
+b41b0f7e-c5e1-2799-2359-0ca3b0cc15c2,2258232101,17807460990691924755
+d576533d-0de3-737f-c8cc-c87f5c629dff,2885408013,11401067998673511169
+5acc4691-bab1-7aae-0ddb-f6982db2d68b,2933770779,14248710801761498911
+c8e6c495-421b-ea3b-766b-e4df26159f67,765145000,3636342893356034376
+90f48fe6-2988-8b13-3e58-88339bb177fd,3453726298,3382655940014376643
+9ddc72aa-22ac-8c39-ffc2-007cbf3f3bac,922917136,2220257014926118395
+5740a7cb-f505-e43e-6254-2299a8d0b019,2091532893,6208374502218449648
+b749e3b7-ad1f-6540-c5eb-89c62632cbdc,2662957525,4159851558516682908
+b6f4b145-04ca-a426-2522-9dc461dd6e93,1625690038,17743032515712323517
+75ab7046-95ea-e92a-b12f-012fb6de8a3c,830088983,18178388880356533400
+de20c956-c2c6-75c2-3640-d535ec215499,593186468,732910781086525894
+d6022899-b2a7-2e75-a752-e0c94dc9022e,2462790119,2900061536450735118
+8df6199f-eceb-4b6c-ad3e-e601974e7ddf,567134992,10201912220580815077
+27661246-9c22-0991-c265-7f7acb5bc196,4218234504,4416211680843110812
+9b383372-cf2f-4f50-a7dd-ae486a9bdbc2,1342818800,13195778178235456200
+7703f9be-912b-e65d-1703-2d1a12750331,483178736,18393307261965162952
+b00902e4-7837-7d57-a92b-880f9ce8e7ce,236674568,7479550355861627616
+6527b037-e0b1-b452-5ce0-28a5f85a2de9,2725506161,10342396905592383612
+c72238b7-9f07-903d-5b9e-4d8334356d64,3515573468,17825407676970487849
+fbbc0ac1-b44f-b2a0-211b-ce4d13336450,827150743,14410082309776162783
+adc220ee-14b5-271e-2381-bd43ceeab9d6,348984124,8438574839594565149
+1c54b2b9-17ec-4b41-8045-b243eb2ed8d3,2098428137,5560806139220446881
+b104e437-e2f3-acdc-5ce7-930729c86213,1469675098,15321479274626309266
+1bdc534c-e508-bbf2-a911-0dd94c0fd37e,2590636195,872567456603566386
+ea355e47-ed81-21e8-f264-ecbaf72f084d,730788620,3334615349298961327
+dd1ab058-55cf-8008-a843-3af5980e1432,3258539577,17429504769359273047
+86864686-4320-a7be-ca91-e088a24cec66,1695290068,4045537512275578722
+0c8343b2-07ec-1547-1d42-e2cd27b31845,4209840541,2374875215266395555
+b9890560-27b9-8c66-1b69-9076b1208171,587156394,5287396849620034542
+8e5ae1e9-c95f-62b7-9282-98b0098417ee,2287889124,3588008549345436620
+87a4fdad-b61a-a383-c5d6-25ec5b1f5386,2197775598,898435949057838515
+fe0e6807-f78d-d06e-3ae2-e7ef9720e4c2,2852930582,8168926968450880709
+3dc17a63-0adf-1f55-1fa5-9e268dcd45e7,1139520960,2375932887633547093
+30bd5c3f-7c3f-06b4-0623-653a9ab5de70,3460472266,16784357509816060531
+8c70afbc-215d-a287-9e74-c9f3be6776cc,2828626911,11237540317365482737
+6a86a6db-c7c5-3cd0-2419-54d3ed5548f6,1273731730,5345908933420165961
+c74d4cc3-b760-d232-b54d-2fe974fc6561,1651272746,8135699726453252499
+3cc897be-7e64-3042-fbbe-50e827945870,1807179272,8036106235608739974
+3082680d-5965-4ff4-3dea-f27ab242bcd8,1199561990,1528805490755337201
+64c51b8b-7922-4ab9-2ba9-af8f3507a297,2602857728,10223797649253333347
+287a06cd-07e1-02dd-2cb4-650b93480441,3136545612,11293859582835194019
+efd90ff2-9e11-9b1f-275e-935d863b5f47,1167260812,379443163661846243
+acb3031a-be1e-7b6b-2e31-3a33d2eb64c1,1477819567,11889882262153176958
+315777e9-6f48-bb99-711e-f9c4aa4f41b1,514792207,9305448089561293838
+c2b3d10b-41ab-2bcf-f263-a0a2d9127b4b,4138560930,18014016500269994157
+d2aabd7d-b291-0e78-c749-a63c57b09573,3015340562,634391324772088995
+b0b526f4-ecf0-7731-4e95-99ee09b4ed7a,114334354,10315321037285769507
+8957f6ff-9609-14c9-27f6-fcc5a46aaa2f,1861767182,12955029212427554095
+328da3f9-22f8-fba2-6091-3791d3d63246,2124532871,11240966006696163832
+1cdf6f70-36ed-7f94-73a5-8bd6729295cc,2662746542,17551876258694761733
+05d7ae25-0fcc-7f28-35bb-be93c76c7f12,2240210392,11408564600013849010
+5ad96cf2-09ea-fc6d-b229-687722d47c4a,1457923030,11696842569172651468
+9cce664d-1224-0c24-b0c1-ecf8faf0c540,358329150,17840542824520816283
+550c9c9e-9b19-8f0e-6c13-987838852e66,2427010955,12631015816581976177
+67a3e8ed-b224-9904-e6bd-76357f52dd64,1454093126,15758438699839684342
+b0f18904-b204-e917-4843-acba03001c32,3244595448,8994522445879911838
+b6b34b06-9d51-903a-de32-cac97b9d622a,4265645899,17635855145758056218
+b4c55934-6b72-6411-7ba8-14a9d006e896,1554395833,7161128922381691087
+a22541a7-3718-b0f6-f143-3db590f08f0e,4269793326,13913586757321286384
+b86041e9-2768-a680-cb14-8011c8c6797d,367104679,7932587493579852534
+7a522256-b7a2-9a5c-7802-0fc7ca2cf9ca,3862726415,1898880872723092703
+a9818f90-804c-9625-7f95-efc2fe287e98,614982025,5950011895903626295
+b53e840c-206b-a343-223b-93f154e53c91,2201905676,8949903022456239780
+ab542036-c535-d360-8558-1dd5ec2f65a4,451637750,8130425054596762927
+540dd7fa-0502-2efe-91c3-1fc81b51beb2,1583300506,12728615839599971222
+03f31742-418f-2c61-8e7b-28f503c5fa00,1795858075,359706871090431054
+f00ffac9-d958-0517-2e0e-b08b5b83711a,856343611,6635242492900323035
+5a83d3c8-b4df-4560-e519-a37d7957859f,3820508428,11105550934918044447
+1cd6ba13-7b85-edd4-2f68-b0e2b144e7c5,575800884,337869164751453374
+8da85e4c-c37d-3640-b6df-fa0fa0c77da4,1696861925,13050557638344211699
+81aa7860-1eb5-ab2c-28da-e37ca0039722,4209806925,7413388508072249130
+4f0a8b9c-864d-0100-cb8d-e96e40f8fb25,2023947772,17835133702416570783
+9098849d-b824-7d25-9aa8-c30836498cf3,3575241928,18323225334558517871
+ff2a6074-4a2b-8e1a-20e7-51039caf065e,2015548793,11572541929510358173
+fe880902-773f-8954-52f6-680015b12aed,3314219528,14145518970856736024
+d259cb2f-7d8d-bfe8-82d6-43476acf01ac,1763400993,16456507920514201275
+a9dc5600-ad76-df7b-84ca-de671b0da5f9,2899886320,13762015102204523395
+da5f7f2f-4a69-ecdf-f052-6d81b805fd61,2568312102,7707736224476918332
+529e6e4a-9131-6674-b5cf-7a9e11cd2f35,914188771,13093318838987572638
+5ad972e2-9f6a-39dd-05f5-dc99a007b5d2,42455258,12676240708511824981
+ed6bf8cb-bcf0-ee0e-3a13-da2ac871d8d8,4093354463,7792733381112932772
+3cad1be7-af9b-7e8e-c19e-a275ce53e136,2089998027,408895161564992917
+9fd4359a-06c8-6621-1693-b2926dbc06e2,417283269,5245782569071299688
+ed302f58-df09-18d5-ecb3-af769e2d7e9c,2008766158,1403915434762563443
+a5059ef4-7648-bc81-7c4c-9818cf0e8de2,4152978582,1799925317442120948
+97f86e7d-8e13-23fe-5793-fadeda6b5cc5,2017544283,14073088969965457423
+a58d0a8a-a4cb-e474-2012-8cfd61f44a47,3808105069,3451526389886714774
+9d80e3b0-a25e-c148-1880-41c222b97346,119856243,18128508969193728659
+75254465-5ee6-383f-a33c-ff218dbf911d,2456212837,1855068177640149790
+cbd75525-999e-7548-90af-679a71f76675,282789794,10853479876046565382
+10a5342a-bc0a-68ad-d8f4-9243bc60d0c5,2367542611,3946075080806320537
+e59875bb-22cf-3f6a-1e50-141526020aea,602092976,1061460228501841598
+475a1310-b18d-3a24-bcb9-168cdc8fc110,1578207675,4635138247714012401
+6e9168e9-a890-a401-2c7d-a799e57eb2fb,593118829,14925032008930283987
+c66fcd8b-6569-9048-0f52-651b7c25d7cb,965105557,9166237226958290647
+46afccfc-56ea-a7bf-4429-fa0989463f17,460406837,16232109156826753260
+ee6e0f3f-effd-cf31-fafe-bc7750f6fae9,395183604,16865039799138302071
+cfc95608-08fe-36f2-bd3c-a5893c409ff8,2259733963,8284313075146401670
+a2823307-7902-1acb-49db-769ddfd6a8de,732486831,13196290044696022067
+7900a081-3573-16e3-e8e3-61e36d804d2d,3641405893,1784808041220858208
+8871b7fb-93e4-f608-3a4e-c793491626d4,609950065,11697439948108522927
+e86a343e-3e94-400b-d059-ec9e3df2613e,3312521966,16323260513954415059
+0c124316-cbb0-a041-db03-d6dca7f1aa93,3347171749,7653945585463315156
+04e691ea-a748-aca2-18a2-47b15450834a,4081690233,17683501970981233878
+e0011e43-b1f1-0d72-0602-6226517862a1,2870121821,4084874801252590877
+9ed25813-5d94-eaf0-8179-c277e4e32b82,2206494610,11270927000829748495
+a0a3fa1b-7cca-7356-7acb-0959c320ff9f,4074704192,17138569706166512826
+4b89dada-84e8-110f-7c17-a2c558b62714,1747341952,7674272142793060935
+517d00f4-0948-5f81-a353-382a30ec28b0,2616474053,9983564412863982913
+ee352e70-1df1-a726-6b2e-045267b9113f,4223035568,10626423429947043094
+d07e4b7e-80a6-0f14-e6bc-e5683e60353f,925203507,17153883900808700307
+c433cd82-4b08-d403-149b-5edfd034f739,2325632365,7079945445342302649
+80a2ea7b-d550-3c17-09a9-8c9b57069139,3682023899,11102026591908831334
+632a1b9d-e72c-4c95-fef9-64731cb834e2,349426579,13283243297050505909
+0a117b74-63fb-2b03-381f-fea7eea6a4ab,2319010230,14668644007608130852
+775f9860-ae1a-0a3b-34fc-ad81739d4afc,3862567352,6268297017714790160
+1b291cc3-7205-0fe6-05c9-60e29797d976,889419265,1873437245123566538
+c73df7ab-2e43-9eb6-270d-60b55268220a,2137966504,5440513039862475586
+2f6c693b-d1a3-bace-45fb-0cc697ad1da2,3900706514,11959825133914911936
+fe0b3cac-1907-bc25-3af0-91c6c2d1797d,4013510209,14749619050002179548
+fea37ee0-0a36-2bfb-9f70-007be03b91ef,384876003,5509501066875665567
+aa40c69c-a84a-ce3b-9839-8db2e9ede7a4,922666853,3774480158358390530
+d88b370e-0aff-0c3d-e3be-db2504f04160,3448375719,13974076798785985331
+79c2d51f-8d55-d9bc-2212-f516c2cd0476,2662116370,4276712995623517475
+c6026c94-0eb3-0ecc-ba63-94835e662e9b,2793487506,4256502229387051737
+85cd01f4-f410-f165-2e3b-2062f1c55451,3432947683,16418886321132822152
+1d146db2-cf65-f33c-976b-328235063185,3529758703,913996142348787711
+7849e43a-5295-b462-d594-92ccf03728d8,936751800,10255971724215331881
+d297bd2a-eada-1259-d1ec-cc7c499a01dc,1424978499,1628021047167402175
+2b92d513-a1bf-aa29-0f60-ed7398d49dea,2575614243,1004047210830416803
+a29f376c-e684-0dae-407c-388cbda120d1,3955205021,275998836909818639
+52e7e69f-3a17-020a-beb6-20d0444cf9d9,1282710219,10914172273882882379
+6d8fa11b-17c6-3dac-7e7b-24ca83dc09d3,635666557,3256186943615788843
+26723c77-eee3-b0d3-e744-93f7fb49d65a,783344738,8403874758559515809
+7aa1d636-63e2-45d5-9ce3-6818f69171a2,2625811239,12387614794715089270
+abc7f35e-9eef-c1f1-21a4-90fc879f172b,848653174,6537139448487113984
+2bbfdbd6-b53d-0eb9-21cf-6df2d0680cf8,1387280209,11925547115376301266
+68b9cc5b-3d1e-34c2-d1ad-29556fde5995,3497828075,8891517465159593369
+d83328c6-c596-d0c4-e5d4-89c396bf5be3,1174539145,14028637698029376273
+4b0d4d47-7caa-2ddb-3b0e-5ef63521d7f0,1038438173,13952377152933736899
+90f55608-da60-2cdf-d0ee-056cf376d073,3994859435,915457558994504243
+d3c89601-7348-d65a-6c2b-5e7c7ee128cb,557391054,14497569064480975645
+e94905e0-dd5c-901e-0b61-0140b24521f1,3588946477,9158959570230052691
+89359ac5-d396-4cc9-802b-bc42d918b89c,4226077391,5495552487683935122
+f0a5b184-d88b-2ca3-b2f2-3fde72f7e26c,1382046382,17545852593335494351
+0fec92ed-8fad-2428-4899-db4fc5ef566a,1535082393,8224938351246536580
+0c42a694-4b0a-9441-907b-aebd404a1bd6,3053913552,15894718110458882611
+0714ac48-bd39-a318-9fbb-2817c32317bc,1822764698,14556651261837825890
+2292d8ff-2491-a828-761a-7354d217361e,3908393051,16362995937595592448
+ec364635-62e4-27a1-1f4e-a7342f256e56,3596553302,10929608640046821116
+6cf9fd44-3cac-0ca6-78cd-6d9f5f461452,3959279036,7210211859780045785
+b63d8ff2-0369-82af-e96e-9e031fea2444,1554704926,17268712601811793950
+a66bc609-d047-fbe3-3694-a8ef7bc5ac63,3443250848,9797110617967533224
+1ddb3ccc-5764-8eda-6e26-e24d38733606,3733915451,8814700770245280211
+57f4a2c5-dc5c-f419-a227-460e8adce05c,256969392,1333728645335362895
+ae7fdaae-b485-ebfb-b4ec-005aa4abae69,1472217011,12738836467042111378
+fdc2e312-00bd-0b3c-f004-c0ace8cd8ca4,2008223795,9542746316474170729
+fbc498a2-33a9-0f87-5a16-f8c9400dcc03,3346462366,5253739601746504694
+db04390c-2ecf-1952-e330-8b4aa1da8adf,2400137464,16463192370871768681
+e3b1da8d-2f17-3e5e-ade2-e50e60dd3085,1381712653,3061057068021776197
+47a52b48-5474-feb7-2f17-ad1eefc9ebb7,2847366820,3384174503291912875
+48aa4522-d548-886b-9f30-09d7fe6014c4,1799168755,2128283730677438371
+d2a9bb30-7317-da24-fcee-be6c39bbbbd8,3862758264,3061027950540749404
+2faa2d0e-54ce-3136-d71d-d19e6a121284,1955905207,7653737752368390670
+f924cf37-f576-8dda-0dda-1e32bf31489b,3035644945,5636294339903142448
+1f4eca86-ca46-d901-90bd-01adef057e58,2293189829,6801250923185918993
+874fb213-e47a-ffe8-a2b9-1852eae9b4f2,1296154536,2126272510784673001
+7b117de9-b845-df52-2b16-944357b112ec,782916188,833896918029488962
+1c97e3f5-83c3-1629-5d2b-0dd8a0d020d9,3264665156,2476910325970664327
+c989e8f9-a911-b93a-ac16-807ec1e7ecb5,2565099803,17327428907675109466
+0e50d32f-94a5-5c69-5fa3-5522f9c89272,1779167062,17652496096648571156
+6da62856-3b17-6084-69d3-4ad479def406,2704784626,6413782192619652116
+45ca455b-6b86-56c8-3234-dd3ddf15b647,1006961363,8885387862793637633
+6354f291-db42-b1a2-d3aa-122e919e04d4,3621408590,1474661829241469617
+ee11a897-6bd8-b7be-88ba-310d31c8fba1,3656241480,7377425150735655451
+98df75f0-bcc9-663a-3dca-b3bf353fac77,206852308,8454769704720255362
+795badc2-d66c-923f-c970-9d5a4643c037,165905189,1156492741156202832
+197fbcfa-de2f-91fe-779a-8dbd976d3623,2674444971,16630487355297739172
+70a28aad-755c-0012-ff58-f600552155c6,3195251517,4106456118686989282
+ecd55b3e-6a44-3628-0d63-a5e37d32f080,1572430945,878743418340211641
+49b0f50c-e778-5604-ac9f-98366a4e8049,3364060390,15775696658770614736
+9ebcfb3b-65c3-d24e-6cc9-224f17e936d4,926819455,9056202863225739506
+072ed831-e7c8-f958-dc88-fce3e43540eb,1086476181,13735224800037975487
+a71696f5-fcf4-7361-f117-ca24e0381924,481183582,17610959363021619879
+1283ec15-da13-7aa6-4f30-6e7e9e221764,2779292401,14388327083044200999
+f06cef03-97d0-9812-ceac-736ce1ee0ec8,1595057086,4864819276246348180
+56c03d73-b2fa-1cc9-acf7-f33d2688aaf7,1253055248,8585153759072677042
+4856cb3b-c336-b27e-e06b-c086caa802ae,2379004320,8781903931275470415
+c98f7c15-0eda-f4da-7995-8c525ee8a265,949258675,2934364308915100258
+9a7af5a3-9f50-9ad1-c0d0-ce1a8ead1c93,1175385793,12464012667513206862
+4f940431-019f-882d-a92a-89f57a6e43bb,2371176571,17328934237276061370
+2b39ab8d-b947-07ae-3f77-26e7acb37631,2056664559,4553093274989400085
+bb03de32-6ac1-5ded-2471-ab0601fbe6e6,2772977560,13788158199734392505
+0b989bf9-1e39-f483-ac3a-aa97c0f1fd17,2644389116,2202833812350712003
+c9248dbb-2a3c-f9fb-c93f-9ac31dbaaec2,3529948825,12678923415143404570
+0d802825-1f1d-a1eb-00fb-622f2e99cc43,2296458504,12199899431874498438
+658ada75-23c5-1a13-ed7b-0290a6b61d76,2453025787,14478830486184470180
+6eed5434-cde8-fa46-4567-3e2a5aec92da,2489102483,1645809098096911039
+5769f7be-8570-fbd3-b491-1fdf77573033,4208782439,15222358015351441923
+9ab518e4-4ea5-e11e-0299-d27fa1123195,1563444894,21862936686199843
+7bbfdb3d-014c-fe5d-5dcb-d1b2efaec66b,544848448,3156318838913138543
+027d4804-bf3c-a239-f303-65e2e129f46e,1926064317,12744529583127776304
+69d8d966-ef86-30f0-2d5c-c07c2bca8f6d,3310985581,16278907388476549110
+57b51195-98f6-0293-0fce-44dc3279c17b,3229520409,10673188259028052276
+d40514ce-8792-0df5-0ead-72b82469759b,1778973900,8449121890909013868
+523dbd42-5070-eaf1-87d9-46f2919e065f,3737297430,4015033827636979695
+388e61aa-09ce-fe03-ba9b-4cb1e3d2d43a,1351145320,17910741587256030306
+9d51cf95-6487-1af4-47bc-4806da872b42,3337939148,17085988702142512301
+035525ac-5c8e-48b3-ec58-424fbefd1adc,1663288833,10012910341322577984
+103963f5-797d-d9d7-8ec1-5a70431662ba,3087101044,6242212284971786680
+07924f43-a26b-c277-037a-1aca83d909a5,1291738195,3825311900502162241
+1da3f880-642b-4d08-d3fc-f135a0104af3,3524388071,11145014890712267891
+a351a42c-18e7-c6bb-3811-0b567a06fa2d,2747060150,3812257624951867833
+55d884ec-e21b-e2d2-b9f6-3f4b5469e441,718868914,8775312296590587838
+f613b9ea-0f83-176e-9bdf-e48fb97f90bf,3753517223,7219047318246168255
+14df34d9-3211-046a-1cd7-6cd8c1d2fc99,3521928946,7470275971225616997
+812dfe8f-fd1b-0ab9-671f-f78310c1b59b,2537339922,11135404983305078679
+a1a84680-0068-461e-1921-78901f3a197f,3967195702,3236805058547407143
+8c6b3a65-a04a-ec96-dd3e-4546b3caf5fc,8116045,14721992625120517182
+595b0678-182d-64cb-452a-0b0e72373e5b,2920854788,13417637732393881053
+e09110bb-eb82-8204-e88a-b62b2b7549c4,3653403066,6119689762911800185
+c7a10832-cb6a-7264-7fc0-79789756cff4,2830200171,15890694098087052862
+279e4e80-ea9f-1142-9bf1-eaf2c8bf8411,1163866151,5471620256613735820
+df2c6168-7764-9701-2202-9a967d518c04,2180761121,410874296750490839
+69881eee-532f-4ba5-e800-e0cb5516bfad,1666138327,16485952641103507248
+a8311b4f-e234-85f1-4d6a-dfae61d2589c,2925811691,16055171853055520479
+6772dadc-0d09-75e9-0aa5-433a98ca5897,2192383836,4590767222799650840
+6ba5cde3-7201-69c8-fcef-e926a71c244e,4064532881,9557746938423626724
+9e30b156-6c42-6ca3-e664-290c7d936521,528646534,956081833668545503
+826bdac8-4692-e260-6126-eaa1e902aef7,1423075075,2644760662411863774
+fb0a4a73-4e97-5ee3-4978-e8dbe1604341,1949592128,5202719407848226768
+f307fe45-aabf-652b-7226-f66ead4db908,1107660239,747717134174659668
+75d9721f-dedc-3cab-4aa0-298ea4fc2260,1565648550,3558118300894844965
+98b8164e-a4b9-ab1f-46dc-e34f9f8e7ec3,1601693948,7272446678294926128
+42faa686-e280-2526-1c54-94cfc8994a96,804925945,2846856302804794580
+9089e102-9b8d-197d-0556-076b02450d01,614905669,17692790548990659020
+d9d21067-5df9-f6f6-1588-e44f8a594a67,1048225141,10632379687753304480
+2f2531a8-43b4-e768-40fa-0bd4754ad1d9,81213433,12425892531696775988
+4a3526bd-062b-4762-44a3-3431ddb39396,3759695498,4941359059528184335
+a0a69557-3712-f5be-9776-fd812cfad719,477047116,8658988423101738369
+893c6e07-5908-f2aa-38dc-b4c827067219,2880653666,5258336372720250768
+3d46a097-6465-bc67-c2cc-0520a87450cf,1745833481,15281730559796187814
+97676c92-5e33-4622-e288-7f8995d8ce85,703641020,11737626215385888997
+8e62ef2f-5013-052d-f247-2c3a4706a2d2,2533540414,3423727841778557887
+07096668-9ee6-5c99-1cfb-db16ccdf9174,1862339949,734361663380414681
+af57dac4-bee8-21d4-6a1d-00fe4cb636af,3551344878,7344110755151941025
+faa20eb3-1ced-0cd0-2f0a-021c4ed1c5ab,2842243336,8383459636836201605
+1b9ce944-f100-1d9e-d430-79997dfd90e1,2083062646,10739200967602124111
+f7b2a72b-f780-1696-fcf5-46be8433b698,166514822,3797442754228894193
+82a6dfe3-fb9a-0967-adf9-ce13a9af0114,1677556033,2902233762764910271
+80e5c005-7461-00fb-074b-9cf53090fc6b,2295401743,8683542081134565038
+e70e2ae0-a7e2-f60f-686a-8c0ab313daef,1200495704,17676708140467360412
+c6f42832-fb3d-97db-7861-064371194b7c,2441665279,3700386733883672815
+b3642acd-ffa0-3adc-b6ee-de9fab25c61c,964715110,1327117358155172376
+108e7848-1e36-a8b0-faeb-9e8d9b4f2fb1,1077123998,4883406690506210667
+92cedd07-7835-b2d1-8f5d-cbe13faecd62,2696821891,92078984479919242
+724ee430-fd91-5731-34d0-fd9c0ce13389,2684284299,15068561383865945026
+66d2b1d7-522c-9d0d-2005-a882b6320b64,4267991758,2252422816111888002
+98fefda1-780a-ae1f-677a-527fc8dd7f68,1510718643,16768565295811252012
+cd67ef85-322c-f834-849e-fca4bd3e8166,289025535,7169791857373861920
+850a2a32-9724-2d84-fd6c-b49d143c6cf1,2085221315,10546418641963740452
+e9413aee-52ec-b6c1-9b78-0e874716aacc,2222099388,11887488435715594008
+b98213e1-4f9b-56f7-7742-a63d53223eef,1539745937,8409041497774424536
+1f2bdefd-612a-01eb-648e-15e4617f7b78,1392484869,18390776947926345048
+f0e9232a-9e14-b28f-98b8-2d0d05ebf1b3,3711048517,18162320547909559677
+91a407ea-1635-7b95-8516-c66923d76fac,4007296557,7346863651263943808
+cd7dcc9c-06d4-9b8b-3982-9abf3416b34d,1174791387,14038639290842189913
+f414d25c-1bc8-3d9d-c80d-21a7437ebbf9,4272834146,207819691014725322
+a9d14c15-7918-3582-3d11-aaa26d735a79,3195925048,6516874875092462644
+87184b43-55ed-5149-f997-d950f037f85f,3261934846,2265561798919768223
+b85177ce-3a4e-9eef-ad0b-356948f7cf4c,964851221,15755709214321734044
+a907de49-0d96-b18f-19a2-ea98e6e135c1,1027323414,3484947072855591257
+8d501330-e959-51c6-631c-4276158566d5,2860726302,16849986925312783751
+2100715b-54db-a7b6-3f7f-8de204641172,2614859602,12847432092516017438
+de9227f7-c2cb-3dd3-dbfc-50fc9bc63cd0,4159482171,12890439258096286818
+1c62ceff-8110-cfa7-aa73-5f4ffa040902,1672503291,18360901345231796941
+191e4c37-2184-e784-608a-904b8a04448b,3215947193,15214931599904414033
+00936000-4ed8-e48b-13bf-1ff4025d3cec,153187713,14095437094155134327
+e79b75cf-51e3-b55a-cfe0-6fc94e9fe6f1,2028470085,5488972297578087567
+f1580098-1f04-2145-31b5-f233764ea62d,3416159674,1733959876096124160
+3a216cfa-db18-88a6-47bf-a65477226995,2081277865,78108418700675004
+affa407c-00d0-4b01-4a45-a589f9a09da4,3333628942,12683089286833391314
+81f6bf22-a629-ec19-012f-4151dee7c0f7,1772467772,6597979904756609533
+b0d7e57c-1a73-0c33-b842-690c2c28dbf4,2870830778,7339575759733227373
+288d767f-9bcf-8a96-c20c-e226b3d86d57,3882539322,650188923505865634
+e0c96f2e-c9f8-3111-2e68-704d153f5139,1357878637,10369552287390814938
+4bc70456-2a5c-0624-8dfb-92b85aac96f8,2484278627,13031397957836651565
+17b87688-1f6d-a0e0-224f-cc8b721b3d20,1866055532,3822495196196324181
+3360a1bf-b29b-bd41-0955-7c1094aa9143,1020977711,9842092969600229911
+72bd4655-3360-9a0e-52f9-725325095774,1362428168,8224354358437235223
+fdcc6ece-2747-623a-5f7c-cf8c2cee4f0e,1483623737,1816724508854963345
+2753f218-c30a-69ba-bfe1-edaba9ef42c9,3055458416,14441152664452441364
+9e502072-4dd6-0205-2480-1e3d69ac2a5b,1181466885,6359627771625659796
+c584d85b-b395-b3be-4b21-973b15ad8de1,2623387417,6999544498435655990
+fa26bc6c-0ac3-af03-5927-bd6e8b41ceee,999201487,11862976428516477380
+b8691fad-2cd8-8159-a5c6-f72394a3810d,2805533766,12536516081339175477
+2fba3095-2046-9da3-fc31-c0c249d04db6,1793934211,12199529401104231510
+05204bbf-4bba-1d89-22f0-25fcb203a176,942026424,367266443540876481
+94d0565d-a949-6838-bdfa-015a415024da,279327654,8751716427411340889
+7781bc93-3699-49b5-afd8-7b2b88603c63,274656749,12448484588006596520
+2d81855f-ff67-ed19-5bf5-f3adb417eda2,2191684793,5282092684641195861
+f92edaeb-cd93-053f-fb76-6bbd2135e0e9,2842893358,4902582455442147265
+c68c4a42-1613-258b-a459-c5b7dd918a86,1417581633,3033578294531967172
+46e21d9b-572d-71fe-3c3e-1ab83b11ea7f,710317810,18240961099038093688
+2481b62c-5a8e-f046-bfbc-f6db319dbb1d,3713290555,16805585299735819670
+a388e0cd-2994-059d-e5b4-6c7bb167f57f,666288558,14925196451331795938
+c285f29a-b720-fcaf-1b12-b347fae61ba2,2434932620,1500957234984062193
+b603e862-f719-501f-983d-913af64b9173,804526731,7375523336681617857
+12cb78ed-a629-558b-1407-a62e418b07e3,1650826073,8028519006103327895
+a0a2eba6-944f-4922-65e9-5ebe1fcd96d5,1196783307,4492598810704444783
+adb0c6ac-33e0-8e29-1a42-64c697e29a32,858799130,18181441541124582652
+fafba455-4175-5664-d11a-d86ca28923c0,2762599859,15313637522662071463
+786f2f2d-40fa-1d97-44df-2dced72f4ce2,2638224291,14856054289013685862
+c00a6ec7-2947-8fbd-07f3-c34578f21c50,1185111342,11847966493150695821
+37702d5b-a622-4f3d-4355-22bd25ffad54,2991309176,9839239919256184433
+ca9e0502-e69f-3757-8177-5809a7a1d865,1680367117,12028471927466469762
+58210bd9-20be-dd49-344b-fbabd8e7e51f,1841314698,8626638615367034843
+0a5d603c-d776-e41b-afb3-25fc5d16328d,655839127,7220921823612208905
+cb9c4c89-accc-d6c5-145b-fc281dacaf3a,1710900828,2325725463257486260
+5525cd31-f73e-a306-eed5-d80d4c1021e6,1391407436,8964400709527032181
+2e48ba43-b75a-4e0a-7970-cc35414b6419,3018450263,16035432198288047453
+83d4deb9-26ff-35bc-9f1a-55be1d81fa36,1001863914,3961282498920275473
+90bebc46-ee9f-aca5-5ad7-d50de97069f8,3931661682,11085887571845027794
+dc83120f-daaa-407b-e524-5724cdb6f087,2867380369,17146619169282010203
+517b1e02-ff8c-f8e4-40f0-25ae79458705,2520154265,6962511785885365158
+974bf767-6ebf-1eda-9fd1-915f658b4a3f,3455859689,8662488880945418563
+d74d8776-63fb-1c8c-eae8-457d372c4700,727606897,13739163726127499969
+649515e2-34a9-83ef-aea2-726bd701f325,1637043896,278604138572453827
+06dd7692-6b74-cf70-b694-c1bbd41f4658,3427242185,12016188097421917595
+ef2a1bff-666f-767e-dd8a-577bfa8ecca8,745725571,4884586106781468568
+cb0c6e45-2816-ca92-e098-ad006cf9f9b0,3939506147,9840165257713534635
+9f25fac3-b9a2-4e35-96f9-6f2980e41509,4095751041,4789919800008423750
+2baa01ca-e1a6-4b1d-7c42-82083e3e4b43,229352776,16188079886382610600
+02e6f5f5-4145-5152-1d9b-4ee74d941a5e,3223317355,12362344651778411632
+69b6cec7-2d3a-31bb-1b3a-65714c4705fc,1665754204,15993169069175640115
+42b60795-eaec-340d-0a24-1f1ff7ea3b62,1448557973,16051233713594335370
+53fbca36-e087-0916-c238-47bd650cf86e,3529726998,5822122161877608832
+6b68df44-67a1-c718-28c0-4a1c8239962a,563145011,13425338000267537014
+f56f4f22-9f8e-799a-c9cb-8f05584c29fd,3167653580,15098799487458775862
+cd5ac14a-9538-971a-9de1-c03145b058ab,3983362486,8567453137269912611
+44ec68cb-944f-03d0-f170-48bfa48749b3,1419580493,12478736241248487390
+ba29ced7-398f-d30a-5a1a-4e338a4934e3,1539203012,10585924128822695500
+2721accc-94a1-75d0-adfc-3513620dbf1f,841152425,2932185656726412205
+8419eea9-89fa-6184-615b-11cb874f1920,4091779176,16936696926061460574
+f2019831-b11d-2381-0113-e762db7645d5,3045376476,288995501102373044
+2d67760c-bf30-a987-0218-b8f648cd235a,4233248963,2749114708975430512
+95bd8c06-3feb-440b-8b4f-529162e3dddd,3596025954,2624544929022341387
+bc49122a-fd63-b895-7e4d-29938a18e754,2808566245,11947553097330744094
+83a52fd2-0dcc-e30c-6d66-ac61dc48cc1d,1481891737,13566474699640537061
+6996dd22-fd6b-7ea4-c495-4fd3a81b1507,950534733,8232426029095884111
+05cbafb9-dc9c-75b6-f6f6-194b512fef9e,995522039,6309176338788507911
+ce0ef393-5888-74c7-a1d0-cf875ecc0670,588031505,14419528319455188677
+0ad99cb8-7569-286d-5b3d-d0feb52267b1,2217214713,8512128565283310774
+cddfac36-522e-16c5-0d59-e64dc719a8f8,1181707958,11038034981090412793
+d86c156f-332b-9ae9-3e4a-39e557ecf810,2286707989,8784233389676449606
+6e3e3a24-e44f-0e6e-8872-4f3349e060ca,4019116390,7070014927928796548
+198fdb3d-229a-394c-352f-bc16b1693626,1582890472,3079447464835857427
+8ebc7f3d-64b1-b1ff-6912-c643ed8dc27c,2325345843,16181980071470404140
+dca19126-54a4-9dbc-1c97-948234ad8904,349163884,2130203954313934735
+48d87dd9-490f-95f7-c4e0-186ecca3f72e,415643280,8763269010728411938
+4f20d54c-05bc-6ef6-5850-2d5cea5a6cde,2841765907,1210848852279949632
+8769c599-5053-4776-3f9c-2d8ff30f9981,4001681880,1008586530313262395
+768e829d-aee6-db30-8ea9-84cfad91708b,1536339339,14037937525443806846
+7c21ba3d-20c9-3fb6-75ee-f2e50432f8c1,3684016753,3809984924209645481
+40183cf7-f9c9-7472-1def-588edec0d130,2375370787,7607664209167065501
+93086088-3073-29ae-f043-74452a5ba139,408626018,3244241771366425020
+53581e1b-a9f0-1710-277a-4399273074bb,1762907503,3177492639689445979
+a9683a6b-32db-61d9-b34e-1b00618eb482,2710664040,2631500970422912626
+97102b60-6466-2157-0be3-2aee9f1c889f,2097746011,16524889967890904517
+b2e3e950-bba5-f9e2-f954-1e4f3f0c441d,1950144014,8937695044882026832
+88d5c77c-a89b-a1ce-6d0a-7fb8d572c588,3270207954,5256626273194396577
+99d0ff18-a7d3-bc03-97bf-87136e9a600b,1679133295,12424496803957130509
+3404ed6d-5c45-d25e-0241-e9a246497ce1,2206481004,13040514106088381309
+2400e22e-50ad-9f04-b08f-5221fd11de8c,1054493905,15149435615967461282
+e05ca9d1-df62-be87-f221-1f8e6379dfc4,2155870821,17998995740899902055
+5d1391fd-4899-548f-eb69-e8041aba00b2,2917905261,6952316679035736192
+5178f53f-9b45-9fdb-4885-a2fc7ad3043f,134336495,12846621519534450536
+889d1091-6886-804e-f859-9126023fd6fd,612770278,7969124036940898924
+4df2dd81-f61c-6e86-c64a-f81c37d33bf2,3709171225,9209403782059067268
+ec27471c-b09f-3068-5e7f-b3b49137f7cd,4038563643,16982061746858415943
+bef00d09-16e1-eed8-ec7c-5646202569ab,1038944018,2358350095693946583
+6ee24ebf-d2c7-6663-f653-9b4d0f04cf9b,242314214,9524122521486399562
+8732f717-08e5-9f2e-ef18-7d789c00c7bc,2584205287,506288203639886480
+53e30bc7-8bad-f9d2-926d-fc3cf39b6323,2400813861,157545844141174162
+95e7029e-42d5-2da5-74a3-9b94c0e582cb,151029477,1250956954122984441
+8b88aa12-bc9d-73fc-4c1c-cabbd0bc655b,3946617542,16501379398860631423
+13245dd6-60d4-de5b-92a8-2fe307075453,3773759235,1997211167558108665
+027c4a76-3667-e4ff-b5f6-1298e7228d79,3787625313,8107375039273473555
+3cbbbeea-c342-4272-bb93-5bf217b9b29f,2571507395,9895845907952213159
+8919274b-3f18-25b9-bc43-04e81df28cd6,1994538911,16335781940593326601
+109f5ead-7d45-cba5-a262-65a307db8ca5,1861711245,17008062088679243552
+4d28984f-a91a-b59d-f33c-dcbb792656ff,2571765498,6411325007185631099
+234a4dbc-d467-b60a-4917-282169cacb4f,3281573297,13226034794938849656
+ea749f38-c932-a842-13af-5b3b9e35c5cd,3502044814,9441537241576584801
+5f3979a0-c259-793a-e06a-ece58147447a,3881656440,14858026529993675435
+0bf77a49-ff57-1775-782f-34ab738cc0d0,3445795876,2862127410637663843
+7a1a2079-4d58-3014-a27d-7729ac3ba488,4171170734,17685194776408468332
+7d0f916e-6bbf-3537-14b8-6a548e214af1,1790083935,17767232114482136339
+7a5e2a5b-6d19-9f90-083d-62536b3e26c3,4217330672,7562564282408747196
+2c8027a9-b2a7-8de0-f74f-fa6f046f0a1f,2587987379,17653205542553881741
+961aceda-6690-8c40-1333-7e9f490a8861,3815744669,14724550245628939350
+3519d825-074c-a039-60d5-f5523013525d,32721980,10885297600426148103
+cbd4fcd2-a47b-3a58-8b2f-303a55bb4fe5,3957404201,11234469689738319110
+9f389e7a-9995-0ecb-30fb-96fb53bbed83,3785124321,16628418306363076020
+151128fd-360f-bbc6-7a6a-423a9fc8ee60,4067698387,4290293471436042175
+c25dc739-78bd-ffa2-cb3b-cc32f29b2dde,3778268393,4828218409123423447
+cdda050e-321a-f750-35db-0a6ea9f00d24,3688273852,16874387361435043966
+a74493d5-6f6f-bcc5-42e8-b863a77d1219,3929543799,18322942505069998345
+96640e74-c42b-070c-7a8c-1d7beadb52a9,3734166843,8011863052915349887
+72c0aaa0-78be-7270-aa88-8d09fa7aaedb,3261732309,13103212217067313484
+1760af85-bdd4-4dce-20e9-098a0c880542,1762005852,2824425027251774235
+3ebe087d-64a0-ea67-66a1-72a4380dc5b3,1340213715,15328502814152698980
+eadced60-b143-cf58-2dbe-00bfe6ff8267,1813208222,1528269555587318512
+5f1c5390-4c74-87ec-d870-d39bda10ce57,2704494859,16344997825522391135
+cebb8fe7-153f-e70c-9b4d-8904fab8ee9b,2996608016,464257684897343381
+f1373844-6fb4-d4ac-35cd-011c0f59ae97,2919019354,186312584605929309
+6fda93b0-f07e-b725-8340-9027326d5ea2,1132069652,926212257032186271
+6c0d0d7b-2c26-ca81-7190-8d1e1d1d47fc,2656154893,2689296801745454733
+38b87c5e-df36-0d2e-d295-2da3c263acbf,2887389382,9482758541823025539
+793f5650-5007-ea68-b2e6-09bdb21d8be7,3539281383,3260500086047780361
+6095290f-9af3-6437-efc8-98c87e96326e,169197137,14662659444196385556
+92e2c5ad-4451-2c28-8ac4-3415021bfa84,2974146364,14114003463520414721
+c0d6c14b-d503-3b4b-7293-73a680f6ebe0,2004356136,327343523509176777
+bd17c9e3-4832-b9f9-c871-c9e0728bd158,1000834256,5047718922902007862
+aef3d5ca-45c3-10dc-9300-6fc8a537dd06,530882872,16773350295981176574
+bf711ba3-bb0e-558c-3332-42cd04f563b3,764358897,572119350933569529
+4fc7d0f8-3675-04e8-ce98-acb9a68c9036,2715873843,709855093882284066
+58d1afbf-7a2f-0d4c-77b9-50ee04a9572f,4290090204,16264790370976725737
+97801dab-d4c9-2014-aa9b-5179a3b405ef,4044911510,6125432570247322386
+8784dfb5-54e4-8e71-0fe5-a887dec5305a,4102678986,13653414304276591780
+b81790a8-4080-9653-bf7f-0b88df141372,2993151892,16044535778622053356
+4f64e28a-e1a2-dfd9-6f40-428ba3512c32,2302930420,1814749997433754069
+120f3997-5560-d92e-2da6-279ffa346e35,2993106221,15477948532197366515
+805b765f-59b9-0850-1310-22e3a219a924,3669112649,8602634111968537655
+38ac67ad-1043-9a94-c9bb-3d551b4213fc,1768040777,3307447130999122544
+22ac4830-8fb4-a866-d3e4-d3cdbe9b0fb3,3158554308,970561095757387610
+cfcd1b39-2828-4f0c-6d3c-b6e79b6b1c3b,3635518291,14594728987717952000
+8ce0bac4-fd6b-eb27-eddc-eb2c3a93994b,134850648,8234085738640339432
+84fb72c7-0b1c-68e8-37b5-8ff07f988d7b,3325389403,9598532924978606252
+715c5a7d-90af-40e8-c535-7f559bf622fa,2532432939,1575962503668724598
+926f6df7-465a-b406-722b-0fd486edd14d,1442219432,16398024323280382025
+ad30b48e-c9a3-c982-bc03-6562a2340ba6,2977511221,11944227997040821263
+f4a16a6a-8c50-871d-354d-a32e26681669,3428824803,10019963539167297922
+438423ad-51a0-2165-a48c-920dd145cdc1,1351432665,7712414241773249864
+7e61b1b3-35d2-b354-c575-50c10385f383,503767024,4138225228619864482
+0849f2ab-9c23-2baa-4752-94a125836267,1337508218,76011519053482312
+fb7d4408-b3a5-e484-1b26-bd955a1ca4da,1389114160,9790961056531010592
+40a29821-1ffb-21c4-b213-66f677da89db,2294918831,10480194458785893824
+a8428c38-94a1-78f4-5b76-42f1a7dccb47,2605274223,3001695250926018384
+bdca6527-4008-8ac7-0ebb-13ca1dee10ee,357215823,8249928976317551135
+93a16e8a-2971-e938-1cb0-140a06e4d52c,117808450,9727057475158266531
+0d531a1e-088a-33fb-d9a2-96e253bfbb5e,901130489,607720924438937372
+b3504983-5244-427d-87bc-9779a9d54355,976824055,15305396453655262217
+d95bae07-0e51-0ebd-5861-e72122fb1c4f,3173453559,12683132116927604899
+9a79834c-bb3b-54e3-1e92-72fad22d4316,1964931968,1391777736673659775
+6651ce96-e66f-858c-eada-51a964669c47,668336977,5847085036283756679
+44dd975d-6ef5-3516-51ee-96bff5f76733,3991349759,9152525768177744611
+3479f69f-c243-b0f5-97f7-d4f43c2e4611,3282552882,7206803946706298184
+19455c81-6d39-35f0-25b5-795c73b0bff7,634654649,11907981645767079424
+9c5750bd-dc26-ce4a-2aa3-f746b850e5e7,1990241880,13861900407055535134
+26f80f12-57ec-3cec-c0cd-2bd472b7521c,2668471140,15695981407308173160
+9899dc0d-64c8-3b64-1640-243e05b34e41,1635381283,8653688724505013829
+68f91fde-b96e-1ca3-b860-e3f48cc52891,4161198452,14054303900875905576
+1cbcfe40-a7bd-971a-fe04-25626cc0c65d,1649316061,7887621304838579642
+5a9f2e0f-312f-8336-cb85-77bd276e2239,2441088420,13291763660893995321
+3441c3d1-984c-f27e-9b63-8ce800935d5f,2308933884,6751379901818588791
+ce0804ee-bd71-9a89-6a20-bed33ae3e02b,3661028065,6356906823267567840
+5d469fd5-0234-da82-fea5-bb56652501d1,1607510320,8211224317017059197
+5343a9d6-1ed8-afe2-031d-30407a8559f6,3269244028,13374229496304506384
+e321ca4f-c072-b1ce-485a-55798ace9b93,677088487,3248048965358234884
+657bfee3-005f-d29f-f017-46a310440d11,1494823356,10812815038955899918
+e1bdba9d-b939-bba2-2381-af5100eb8d0a,49256120,12474251402223265943
+4123d027-0492-ed95-131d-2a1818926e2c,1024095570,13949116796612104929
+e37e1058-c81d-ed21-3361-983cfeedd178,446628511,13408133428011919210
+743e3c8e-b16e-7cba-24ce-7a5e2e03827a,2105033993,7030432060005414165
+b8aa6bac-b2a1-3304-5167-8019134adcbb,2474494137,468942992073041812
+23ee4e8c-465b-e493-e303-5fffb52b73af,13378003,7118942821970560560
+0e06a5aa-d4dc-f549-fcb2-659127dac51b,4021343637,17593443027322625860
+d4549f69-d3bd-9070-a8bd-5063aaeff1ea,463909431,8725535499918832148
+660f3bd3-b14b-bd1d-9a2d-1a7909522b07,3227015651,3881138184074117961
+6e666657-2809-f514-0198-629cc40cbd06,2544302887,12558281959827713154
+c263eee9-342f-e783-904d-4daf04526736,3458177221,144520662707146004
+a025367d-9026-4a83-894f-733c0a56d0fa,499146507,3529870409686269214
+99ab3d0c-8ec2-bf7c-8be3-ff3af60ed924,581145296,14424298469790403048
+42f4108c-c426-9e3b-c0b0-72bb24836135,788236736,3810759137161766195
+896a0513-7aa8-ac86-4530-b6461adb7d70,957994203,16983092995505108347
+ee10dd95-54cf-8644-82db-7eba7f353e9d,1154566119,18442780363340029814
+23d07bbc-9821-9034-2c12-30f4aee57080,128879304,11713095261516034682
+41e42371-6fa9-3b80-d710-053f78e29cb9,2169827216,16189733548000807404
+bb885eec-e142-9329-71b3-c7a9b6be477b,2510295365,2993309511676574560
+08e39bce-8248-2271-f56d-f6cc8fbf0a12,382392725,12537579526694648753
+2eb0a60f-3b50-5110-d651-4dc411b326e6,1988916437,6251160329280072109
+d11fda09-49b6-ae87-6875-2705f27b7c9e,3678027416,8296749072400449769
+e977293a-5fcb-f2b8-c248-56330592c390,2653046248,7468766183098100543
+8c02aba9-e13d-bf26-9221-aa53917085f1,3525375432,10251686619835486770
+c4fb3150-a046-3b0b-cb9d-02d5bc64786e,1429121695,11799986006600416574
+f818315b-12a9-2312-d623-0178d637464d,3981344068,11626507766854295277
+1dd4b059-a120-b545-43fe-42b587855be8,3841901575,5649471741523370206
+26182515-ae62-bc7c-b15b-d9cf524790d6,29065484,10152900987134567803
+ac9b0e6f-3a39-106c-8058-ab97411e9cdb,872688145,15385451091276818965
+6b6ee9f8-3ff3-b28d-93d4-370e1449e04f,2967422466,7808400471463094675
+8f8412f5-5006-4aa0-ca5a-a1b22561282b,503485538,16096666175003648135
+a960e1bf-1b3b-d954-d420-79e872c52a6e,1773104440,1012360175818180227
+eeb3e2b7-bcb1-d1ee-ec07-d10a45a01382,158561179,11052514865984014784
+a68adaec-bcbd-499f-63ac-e2db2969348c,2374991636,5275494537026046156
+cf610468-0183-ffa9-fd54-b859de59e1e2,864858103,10804401856992306161
+d95a48c2-1c01-a3dd-332c-8c800a869056,752461043,8909506964787448759
+1ea60dc5-62b8-a85e-5ed0-b5b9336cccb4,560281795,737686256968329899
+0041d612-06da-a39b-c218-10bae8beaeb5,476973252,5915787751782473956
+2cccd0cf-fbe6-db9f-1f35-09c55b6a6fb6,4202671211,2737095869689787830
+ca753319-c84c-b41e-99dd-53e2dd35ab70,908998962,12140473052145134909
+65acca66-e9f0-597c-8c26-9793a70b7a5e,860308376,11218991855224875651
+166c7a93-82c5-5e4d-ee34-a5fcd26277de,2579819369,8368723004235206020
+e762086e-d616-85a8-098c-a3fe6fcbb21b,509148613,12562982886804102370
+5ca31c7a-89aa-8101-a6e7-92e9487a9ade,3630739489,10299069445990835856
+f13b19bc-4973-7b5d-d28d-85767da85702,1340168862,16567245346333676585
+62022787-0321-a1f1-ada3-9d1be8f07616,3299102528,15896355836884760231
+60ea10f3-51e0-e814-8da4-aeeaeaf0c8e8,3834282285,14925758403907183207
+0509b849-53bb-4c37-a013-ea6862ec3d61,2790550740,9613243022196991540
+a0033a58-103d-c4a3-76e0-59b044dd7e08,3218054332,4601457288683862128
+00b27af4-095b-eef6-4574-83b51406ec93,1282731895,11995532547571765048
+c532f528-f97d-2c54-0d0e-863222650ebd,4270804263,6305696874269226844
+ae22fb48-9842-ef13-01bf-f46916743215,1132642908,9531615456478245019
+76549ea3-62e0-34bf-4365-8772f0eb9176,2528571270,15692607520927452173
+69cdbe36-006a-defd-fe1d-8b42b847da47,3498124082,1668884884893390446
+074b2ab5-c379-72a3-926c-cd811063d2a9,2053544449,292560342116393287
+68424dd9-bf23-1aec-95cb-6edae4420372,1256548022,5674362526491751649
+b74be70f-429c-bf0b-cd3c-b1288f21eb2d,2396990747,7620695942107870220
+f165c763-b954-084d-de62-5c2f5044541b,3968486503,3402031833601578656
+e7ef86b0-3d7b-4ab9-a53d-48ee1a2fe5e5,719975064,8390109872304351648
+f49b8ed6-d5dc-c4ca-91b2-dfaab26c6294,1660001394,1860530980776420662
+0a07f975-deb1-ca3a-aca3-882e8a9cb7ee,2121092302,10415067612196070011
+981299d0-882a-79d2-ceec-e5b1017062e1,1620117755,13781264333291306488
+0889e5dd-d796-5794-ac70-2fc976439b8e,2151568485,7397812051333573035
+708b57f5-3c6e-30d2-84e9-6e80b96f0cf2,1112440542,14955616934551521078
+b865889c-f354-8b10-385f-aa98c3a27d2e,1733696569,2941674632039051929
+a08e4903-ed5b-78a5-f208-b0a9e58a2242,1894180496,18403224429440133006
+72857045-69ba-f35e-f957-0640738aab30,1170439994,4838519465091982563
+65e32fae-e66b-d279-75d2-418e89cfc340,3026357338,14243919890134601471
+46e81803-08f2-bbc1-9034-1e917aeae567,1101370684,9508919635739177387
+787f4f22-c2fa-ed89-1489-e1eaa7bc0030,909622612,16919388748208401354
+88e0b049-adf0-4cc1-655e-73555f07df6e,3257209410,2896105942115920431
+47f75ed4-57df-7014-a35f-a50a84ea0131,1924999177,11742624759490518162
+d3c5e946-7c9d-deea-10d8-3c02e05aaaca,2192301814,17840862831843601264
+b08c8f5f-eadb-0146-b7dc-d6ea88e2d4cb,3726387424,12955793556760024017
+43222e7f-df73-d487-bc2c-dd7729e615a8,1948242676,15991624746536464070
+fa2cdb61-5223-727a-17b9-ef1651943960,328371645,5996291487576709926
+f2e60d37-a886-131c-7625-d47a18a8bcbe,3054130360,3892376997270186282
+f275f0e7-cba4-1f5b-094b-82034a232279,3486854247,11724040634212130979
+3ffe0dc9-c8ff-6aec-c80f-ce22396b4c93,1904300888,2014907198488314039
+817deb98-b086-4784-c571-f5d924be24bd,3695778496,17389265318384322019
+94dfde62-9e6b-96e1-e5ae-f91eb9256523,1880562779,13898520170766920523
+a758c6c1-4996-08f9-c0f7-e8b123650f17,4167236150,13786604532330107219
+5cb78f57-fbb9-e6aa-2488-e78a8e5fce3f,3783954299,1162244906239670899
+93854fb8-a3d2-4025-be4d-35dcb8ec8c89,2615786435,823871503379158590
+8025670b-2041-4588-c4b8-1dcb741cbe15,259198016,5200251359121293011
+0b05f45a-c73b-dff7-bd45-6fff9a9b3485,687129494,8595632464167386373
+060a8f35-8067-d6f6-9303-9ecd9bfbb0e9,4285113589,7521038838862088900
+c1a89abf-3ac3-95f0-6354-af351e1d4cca,4174778181,2227984031880474224
+f79f64ed-ebd0-cfb8-7337-61550685db78,552633737,2587478896442723678
+53827104-a516-c431-cbfe-9c7919b200e4,2888693529,3281813928587218882
+dcd531c6-ee39-0542-4ba5-418e7b0156ec,2288429537,4467995608600654292
+70b3ba3f-0530-6e9d-2945-a572a3878240,4074344025,3662038862239430697
+f5b63f8c-0f40-8a6e-d933-4446d4560067,1991695873,9235572338210684384
+63f46d6d-d0f9-7c4c-ee30-5162b27b6851,56258278,7319816062502890194
+22dc2bc6-fbff-c8e1-9e51-37fd1b7c47f7,1778969652,6787170376458919301
+efde3dd5-c7c3-deb4-8558-39f99495e60a,4049962046,662336371672375502
+ee26f156-889f-7a20-4ae5-5118629cbd39,3805955074,3926823030137315193
+df7d154e-1948-81f1-d23b-341830a743e7,3713984091,1123849504524671543
+e95fade8-96f9-b677-9e57-3bc7066bacc9,3823511540,11524231347306965564
+ae42bafc-419c-ef23-0876-32a09ca4f7c9,3061803722,16774795916587130516
+8d0d15bc-72ec-d4dd-2bbd-0f3904ffd343,1397479824,10335364392647594418
+d3039848-13b8-1ec1-2595-5d3e3fad81d4,3732038154,18047675975692790016
+5cd95bf2-52c3-c929-d14a-04efa6dfe9fc,2016022240,547368578698276159
+915d8f27-27ee-df53-8ec5-9e1b41393e65,1541835020,11916350902822001164
+01afa31c-0d78-1fa8-6d2c-875866fb695c,3271785157,5666759840942701528
+bdf7bda6-0580-2180-9e6e-0e0a6081ec0d,1831136252,3700840687139849146
+f7627987-4c52-1434-da52-ee63c1f57740,1799150341,1496801189593381879
+50cfeec5-bb01-7964-57bd-7fca39c57942,3688768250,102713054561003686
+82f1ba29-5a91-6614-3b7b-8e2273257e5e,618435549,15157191875074943418
+21f0a906-96e7-cbdc-9f21-494f0e1eb973,3582662795,13454601180257407045
+80e962b4-b8af-e3f8-3cc7-2aac61d3eef3,3833752221,3573457468581292460
+0dc4e2d2-b541-7546-be21-dad2b3cb9aa0,3552563564,1690609414383177856
+5f3ce7f6-ff94-0ed9-fd86-c8070ac98af8,3599616648,16469778258437089394
+1cf11795-5988-288a-4054-d99beb75031b,3294255610,8264802598518414071
+5444c314-afb8-f840-fb2e-052861657e89,3927766475,2342403803604679423
+b511b378-3f18-b996-fe9f-74075e53bd9a,1383301113,18254138321536699249
+e21648f3-e03f-3148-340b-d05199b46e37,878711464,7458010810122097914
+d7efe702-fa59-044f-3284-e02b9c45f5b5,2576475399,14822990916168257196
+a0b38bd5-7779-fa00-5dff-af0b6db9a364,2416470734,15724517938560842309
+fec8443e-bdee-c9f6-ad3d-5fb92c8bc55d,885217762,5231777484724777462
+cfe35009-764e-2de2-62ae-b326f8446734,379388142,8975914242582488507
+20b37bcc-f76a-d3b3-acce-39739cfe9150,505237497,1045000777644878483
+563629bb-e221-b240-b1fb-edce5c7fc53f,3526170679,14651084746211071769
+5ab89f09-880e-3253-fd41-e71f010aa0aa,3491893779,12228792795111289159
+a3d43917-1ae0-8510-b499-3f9415dde55e,3615677714,304899953152097656
+3bc18056-4b88-1891-7412-1f8858ac0e30,3869666487,1567345943558472028
+fba97442-8612-e97f-4aaf-d13f803cb0d0,921381439,16392602115881935049
+c2980c94-8d33-a021-50cd-82f5408ea1d3,1937997251,3574477131326378931
+3a91e387-0ea0-295a-f235-dfa3d4f1ad56,940745073,9354916515254646777
+cb8cdcd4-a893-2e8a-ab97-c116172f4f74,956474197,10961590163784026719
+56776a16-2081-2a3b-c84c-0b09b69b176c,92365921,14529309957486119039
+2d4dae07-a08a-f7c9-bfb6-69100eb8c979,4018129950,4664831711229519501
+3a903822-db39-454a-2796-0c5d9f29c295,196080945,5602877144493033923
+7817ebd4-fab7-33c6-639a-b6bdb5628a9e,847920557,525186955245873506
+2b97188a-4833-ff41-5c3c-fda36ac910f6,406457841,4535040629023704087
+0a1121a3-cc68-55c1-baaf-f32859904112,3306088844,127698091747626844
+ebfe2e00-0666-b070-c9db-17a6e9af0e59,1244629672,1236679948769140224
+4ab367ba-6321-5c69-9d1a-f1d2e59dce62,3187187854,6946139137374622603
+11a21f1b-4883-e443-e092-620745336250,131083300,6435711185877424915
+df327a9d-e485-8936-22b1-0df07f85cfcb,3382700116,5242549932804106641
+bfd6950d-2d8c-31b5-292b-5378f0eda460,1241832036,4823823296410999419
+08f091dc-9cc7-8e86-5aae-e896efef5232,261590512,12964374387494771124
+68be88ce-7d2b-ee0a-ff99-340c872ee2d3,4293988618,1128493330997031503
+5310c515-0bc9-960a-a57c-95b8ea322e3e,3752066513,4201541368515899527
+56294713-49f4-bb80-76de-5c23c0f204aa,1844371762,1957353121259955250
+b81a2f1a-e0cd-ee26-ae7f-c85a0c5bf198,2979924252,9650641639857113724
+2a826cb8-817b-0492-1670-be2b25ed9d31,1092742289,11110587174905742210
+3ba65a8c-8c34-426b-8fc2-e8ae7ae01533,1183318265,6496012920289963577
+04b18f64-88ea-0217-c3c8-9869bc3d75fe,639238486,5797502270773631513
+d59c8457-0d26-f8be-8cc7-42dbda316340,2411871433,4280278185954022434
+fc2305b6-008d-1c74-c602-eebf6831471a,2876632031,5063556597615970578
+1a93477c-f165-2c8f-9371-89aea29155fb,1617260242,13233793924319027283
+afa0af00-0324-824a-21f8-9d5211870188,966509058,17675976877100343839
+7fc1f95b-4ef8-9e0d-04a8-96a4a2b7cba6,3546125101,13506254309482743320
+d87a94c1-cd88-b001-e23c-8636d9527e6c,1921337614,5248999863719647864
+bc0a5210-a17a-fd28-fe23-7a1c3733e676,2505586256,1392263543443628525
+17e05934-d8b8-9cd5-c570-8419c3ba5c8e,2017414563,15098703436068373001
+978fcb7f-d383-72a3-bef6-aaa7b39ec130,4221984989,18269558781129125802
+83374c48-b773-2ac3-4242-e9a8a57816d6,2494186837,11366981955412133874
+35d75f10-64b7-a0d4-1c5e-d27ca9ce8a1a,1768092726,13817275260971389444
+df0cb67a-16e9-5dcc-fd58-67facaf58a73,990523248,12275384747524506055
+e63da4a0-74a4-f4b7-796b-461401ca82be,3691549496,8018591131361080658
+8eda7c01-7a7b-d767-952d-b3d6803d3f79,1986745324,6314281613498032550
+f650eddb-02cd-7ae4-5141-fe9cc48ec332,622522002,3758941629975474012
+7ec9a0d3-5baf-161e-5b7d-3aa140f4abeb,4019617311,12059430116263667703
+230f856a-1f75-fc1f-642c-556e1cbf4e37,3641066780,3178379220631969393
+3e0d3fa1-2c87-69b7-33f3-a1417d2a3e11,3748646695,5577986245024965343
+34deaef2-e5bc-330f-3c1f-c523c4504a55,3442113633,8172383285367341797
+599016fe-2bfb-5926-6d67-83256c255b76,4139052420,16398546851894239403
+df67540c-d9db-2103-6532-fe8a27ed17a5,2597434885,6707184478521089765
+7928cda9-8d2f-b34b-4391-bd8eae43b0d7,4246710787,11345481254688656318
+650b9b1e-2ff8-0739-7457-a842feffc894,1679110872,4174375417364255433
+d6dff91d-1991-65ed-764e-8e908d6ddbc1,1166219848,9224455152491747928
+b9dd13b0-71b8-07a2-983a-df8f3926e1af,4266079310,15952421356739614228
+eb785d78-cf33-3bd5-5829-1ec3fb7e757f,4246371961,11505774359388175692
+6fb791c0-97ab-aaf0-f5c5-e31d97b81b3f,2872939509,1775646302108490254
+6148cc21-7135-2b19-518f-3306babb0e35,1895244396,1024033192188215906
+3cb45cfe-fb7b-225d-7f95-8004c4684c7d,2197569291,3943954722048687257
+d4d0843b-7049-2610-8736-0aead53bd118,1438844208,17428419636965653776
+1d4152ef-d173-73d3-4600-173062263a62,87013456,13302455876161401290
+65a794df-419b-931d-570a-6c7854acba60,369451774,7306845101094326613
+377e9826-1758-1f06-aa90-56a3d4d3a317,716350493,2911375464552373423
+014a265a-27ae-6f53-d03c-857d90571854,1490106144,4977064652452018605
+29ab0acb-8883-95bc-da8b-7a30bc5a6bb2,1117482366,3454696498125423647
+30c68fbb-4e7d-ded8-3ece-0d7a505a8289,2027442450,16235771918476898484
+a0fdebfa-2ee8-d015-6f3c-12eae735c323,1864708145,5244580420869966720
+0827a993-efd8-03d6-bda5-5ca4acdc07a5,3628991099,16301269021881510072
+6d79e6d7-054b-012d-7084-20265f038825,912658926,13623074158267838709
+5a0f6783-68bf-5434-e643-33f4dc2b0305,676770068,8510618594708760427
+6b77bfc2-6f62-1c03-d34f-1232da2eb4de,3419787205,6778041970064875961
+f3101f23-8799-0f58-71ae-9af44d0773ce,1220772908,7283623706742200554
+3dc2315c-246c-f6de-7e77-7c4382aea393,512232382,11465514738627182340
+d7d8c85c-4ca8-23f6-742c-ea519ef4dbf3,699406526,11232102772573142584
+4df67933-2faa-af7f-0aa9-8d50390ba0cc,2596968123,8662539335890775031
+f66fe54c-6694-9a97-340b-97d3faf31a5a,3105457837,8375163128910727965
+d7d96209-4ef0-6bcb-9c97-8fdc619d9c6a,1211843624,4431004455592214489
+799b258f-f0c4-f070-afa6-4fe989233fe4,123490154,10843168456734870516
+49f4b948-6739-690c-a8c4-674730988688,2607283933,15682503292764012193
+24a7dfa5-649c-6e65-0052-2375e7d49b1a,63781613,1683120798459798180
+50cc60f3-e5e1-597f-8800-5bf8c2c5e1ad,2538461674,12421202912378739764
+37ec1bde-c52d-451f-cce0-ff75b5c1aaa3,963049704,16054276477436774706
+f8cb31bd-94dd-47ee-ea2d-21488ac10e33,1961116279,1829925199401224741
+8588e2b7-079a-9e96-e953-51a2e500c374,2138948920,3208125388612415569
+f6397012-d4d2-d830-95ce-590c84137c54,2837969749,13898747780605718039
+3979ffb8-2baa-48d4-6ffd-6a86943a8722,3525959883,14210553712210662504
+f582e3bc-89f3-56c3-1bb1-0b061d05e3e2,3458019381,2532612130296751797
+2e023092-c60e-167a-b4d4-def40960670c,3904119492,2087570559978304235
+3fefeabe-056d-8612-52ff-efa280df09cf,2381390021,2203602664017777813
+17aafb55-4c62-e78f-af0d-2b4bccfc85ab,1539541115,4529583711169719737
+8bd98ec1-5bfa-6028-8936-4bf84bec9269,2897749039,18065485515937733159
+f50ba6b1-7be4-a03c-9e7b-a403758157dd,102988770,7928923313012557829
+e017b60d-c11d-ea12-7e95-b2ac951e58c0,3952576382,10880611377804334414
+378b0a4d-b870-ff44-32aa-5f516e256e88,2307815903,16639798212497037533
+9e7e8547-3599-bcd4-9cf8-e1be69dae46b,2839519656,15046965672415057497
+9e34f717-25c1-64d7-6a37-0ad580717b30,392629286,613942666681664721
+22c84747-4876-8194-360b-ecae947435e5,3284060361,5649924638370521985
+4e2b629e-5c52-e112-b48f-fd34c0bfd91d,3010249136,15972830091984820847
+50be0b69-49d6-a7d3-6e93-8c1eeefa5268,2834803078,9162436553950454210
+24921d09-113c-52e0-4664-4ce98928ea2d,3223366668,15395943724405563996
+8d79dbc5-502f-0d99-9e39-0c5868920c7b,186287280,13229199922582570857
+f6a2d89e-6da2-e54c-3e60-0772c8d97f2e,487500337,2528978857180251352
+5ac31028-02f6-352b-0afa-0b661107ed03,3908326273,1604810728611673800
+d28e1704-6a72-d657-da69-dcec8ec8e165,277450486,1392452593375025600
+d1ddcbc4-9db5-2783-ad62-0f3f6b4b334f,4104149848,10328042254964309935
+a812a4a8-ae7a-9450-0f92-152cc5f0ffb2,1550051514,182066179527626382
+b2913a67-7937-c05d-19c6-19fdbc06a888,816795989,5225770355141976362
+a002f149-7e7a-f29c-adc5-2845334750bf,1572679028,2480304231431192826
+61bd67ff-5b27-cda7-f434-3b33a6ddc8ad,404834992,10608017351525387132
+0907b24d-e91f-826f-8cf1-2f4b65e92d21,108593982,16836827779294236232
+d7bdd87a-7cbb-263f-c25e-c07ab199d653,2692397761,8895999510915294903
+a658da51-84ec-09f3-9b7a-1bc57ef88e0d,3752213220,480868945758618756
+8030248a-cf2f-ccd0-5ab6-6096b4cfe042,3421968852,17604713672797674360
+21042abe-a40c-ca57-cad4-55708cf9fe10,2110060434,13772448587260672239
+9b51c7e0-8d9a-859a-e604-3760e7b6e0a7,2263397423,9278253961368279220
+f5ceccac-f604-9c3c-9bff-039d04c04260,1216732394,5241735819597556771
+2036eedb-1fe0-2abb-69ab-f899211b0fe0,3219599009,8461572741827821683
+b05ddffe-2ee7-3436-e2cf-f3c4b9b1ff27,1097129083,3385358709832473311
+15860758-7419-be22-d5a9-209891264533,1667553918,16833037534531527537
+ec059c9a-1215-cd49-6afd-127e43d35eaf,4046271139,9288068089253266659
+e2368111-c1ad-aee6-1b6a-4abf009ed03c,2328517516,1225981392103336938
+faf26a36-c438-d345-dc06-22b3b953a333,4070787232,2333279747286678063
+62816381-0ebd-cf55-9b65-e446759f41ec,5956198,8415127514588855042
+be89c2b0-340b-63c5-c808-4c1095c3ac06,3909549656,7285782191214477224
+a18906b0-65a7-1925-b450-8cf444ccac3a,418782825,15166862924121104164
+511a0fac-1d4a-a813-541b-c079ce6ad572,1230926826,2241963043528553709
+980465c0-f597-7398-475c-4e7df1d1cf53,2972520487,14025522812587439504
+221becbc-7096-9a35-0d01-77cacba0dfe5,912200371,10540817106318946348
+6bb10454-e018-c587-72ff-b3ade1ce141f,2223712136,13914093743928494118
+430cb125-ec6a-fa7b-e0a9-226663df9414,442087109,14962086015093318448
+3a7a127c-0190-c2c7-3ccf-d3139d06c26b,2867637086,2383159887249683960
+92d42078-c974-2887-a075-caf42247be3d,2606838253,5277891962214981281
+b4c49dc9-9b75-7264-edca-f034c3877aae,3440121724,6258322941501234801
+bd7c2eed-226e-38d7-d376-30cf3343f3d0,81685391,14900394327330910905
+e9298618-18fa-9f9c-1690-57ead550c5fe,370450961,6791658244862921637
+b0cdc9f0-d9ed-1e7e-1176-06c9a9e05033,2098710746,16920413991376124889
+e70afabb-a7a6-3629-4b9c-21b601ec484d,715396618,5143882080993500264
+f56e1bd5-8989-74c6-b289-a30a43c6958c,3309530415,3362155529028344426
+54bba90d-97b9-f9c1-9ef3-2ccf4e110361,3546940880,2705290749770132640
+e04af1d6-3c54-f0af-0043-2dcb2ab9fb04,1942395323,10142122355529833945
+efa3a7c9-e87d-3db9-7cf8-07476ee7b6e0,2065092571,14891651890896790311
+004864fb-dab0-64fd-594a-1577e8983d8b,4264395853,10675037420938019665
+7f1ad176-6e23-08dc-e17d-5f68c6393a1a,2880832808,10391755825735213244
+1f5d2aff-dae9-f8d1-1dd8-d8aacfeff6ca,3386596071,2878343456011378234
+7dd428d2-cc07-c1c5-78f3-de3b68a19b5d,1059166932,14957726962098042534
+11a3e2d0-384f-12a2-d934-52036a5add30,3001407157,6442537308940740477
+2b28bcaf-8ed7-5f77-6517-65563fe827ea,189382608,10805856655446861619
+4ba9c17e-3789-3be1-76e7-af9605afd269,3308835701,15087251180401591590
+6d6b8f6c-6f2b-95ba-14d2-e4dc6a2708e0,120722802,994434022986956950
+61a9a1f4-fb28-984d-7a4c-1dcda53ab8db,3840673884,5677795705859313088
+ad04504f-e7b5-b291-670d-7380098b66f6,2807106332,2702735480298495441
+482fb233-a217-a32d-6720-18d80fcd36ce,3585042154,12233198278230375228
+ebd5a449-4a0e-f3c8-34cc-a83aaa4b52da,2744950629,4069820387693501772
+b1178358-8391-8f2f-3b25-0197e0b11486,3071201676,13786927258819597710
+dbc0292e-3586-2701-e77d-28a8356cfcdb,43373756,12545086430905712811
+0c0ae39d-8221-a700-075f-fed52b0816ac,236325426,11558360164367395616
+01ca3c38-baf5-e5c8-2e40-5760241a4dd9,4045418321,16814829608932390534
+c7eadccf-a45a-59a2-25e3-6bcbc1fcac5b,3156918374,13664938082432151414
+2d4a66b4-76cf-1453-40e4-d2112f451421,1462746979,9443558985336494042
+adb6707c-d372-624d-3e0f-ba5577675370,1341902863,17139482076928648132
+9c65666e-6674-3ce3-a7eb-c7ff6433c355,1496179970,4566230420976398104
+03ca05dd-42ce-b1ae-6f9c-63643bafca44,3428843127,147136889954221256
+b32c3511-778c-43f7-a514-f1c7ae37c73d,3952715776,989638499920590964
+29c1228d-35ca-1b6d-f080-67828aaf0506,2279347325,3035420354619610043
+4a583631-dbbc-d723-adfa-4287ff53049a,3658390644,5780903695875487823
+24eaf875-f57e-c2c6-1030-23559f9615e3,2978706400,18045651930930447699
+ade421b8-a175-649c-f3fd-6d3b795c0636,1710943513,13441178106743512620
+5545ea85-89ef-a9c0-f7cc-3c3e6c3b8943,1212745378,14876203278066898953
+ddd1dd4d-8926-4138-ee8f-1fc48971d739,3238398689,5782478373028957212
+4c71cd08-80bc-6e38-3cb4-88a15e582453,454414296,4930993271270344419
+488bc35c-b08d-f626-b7ba-26f4d10447af,635623284,16054595280677222944
+2aceb5d5-8dfc-5616-32b8-c62a3af5c5a4,3576257128,2648803895770664505
+ac75691d-d7ae-a332-bd3e-d6867bbee411,1300490985,7170821737615814296
+b3d52b29-dfb4-1239-cf68-038702bb05a9,3446426897,15094563444530373904
+725dd69c-b5b7-e15d-c7f1-550560b4e977,1276504091,9689443765068364478
+87c17baa-5a4d-11e4-baca-9ad38d9b0c1b,1324151005,10826075388304071809
+26bbe464-fd68-bbed-7260-741313339b45,1055900794,15361723029159034068
+ebccbf78-0377-cf0c-839e-9fef6d94123c,1145539978,343220549131875994
+726af5b0-37bd-677a-2f3f-22f04a5d49f0,4135851128,1602304811372545473
+e71e9105-bd61-8acb-6c25-b8dea2c7e626,2933945275,12266800090403062018
+2df70fc9-5b87-5aa8-e373-02ead63f6722,4231321630,1376118451751993800
+9ba9c082-f515-a815-a996-dfcd9d2e1fca,4128215527,2577225863968266190
+347422c5-5348-6f5a-0003-0ca37d6dde22,3490756826,14777435140921713991
+8575ac25-57de-8443-58b3-3ab2dcabd7c0,2616573369,3244655020383795055
+da4c4e87-28b7-2206-7e14-4b96f3c32982,3105966782,12070948949476550517
+24cd463d-658c-697e-70fd-1048649cc23d,1894170615,6579577309438651412
+e106ff9e-5281-e5e3-63a2-06dcf5b57658,840460174,5255985595012528946
+432fd77b-4785-98f4-8ad8-dde310f008ab,1102863724,4856880252278446262
+0b5a419b-f5f5-6a6b-6a8d-6f84215b0a6d,341733111,17884943549393318367
+9541f093-36cd-773a-c268-c320d84dcccc,1401062918,13067184746669793241
+a6d2e80f-c52e-54bc-1cc1-e8e1cf935dcc,1562041550,17003647560848495161
+c5ec568a-c1a9-3ec9-1057-020098910849,2782287885,3308540928532152059
+16a0d6e3-53e6-71d6-8372-337ae168914f,698936392,10470908194983702039
+b2207fa4-08c5-3ed9-db37-c6a46df70e18,528889684,3145175587124303469
+60664489-ee26-728e-c13d-4d2c25290d33,3185223659,9083555383585200450
+594045ee-9818-82d5-724a-cc5c6982c7a6,11781556,14028415450251348210
+f4e98297-5a68-ef84-1dcc-96d533dc0c34,180252448,1209871310639235030
+9ce5407a-ae0e-c217-75d1-5763295e7b50,3896321413,15199952132720063036
+6df493bc-ef39-342d-a385-5691f94dedd3,1023908158,16970602236805281528
+54142a1f-e364-1909-95f0-59ceb8ee2ab6,3605769553,11876344344576745375
+1fd922d9-59cb-3404-dbab-b29e23413335,1263980075,10607673697408138946
+bb45a81a-ae9b-bb06-51e4-f3c4e1fa3fc8,1924756251,17583891962910420328
+a7954ec6-52c2-71ac-cb1a-f8cddbac0677,1891792190,1633051407548743722
+699fea7b-014f-4626-ed64-a7d68917a416,2913166087,17476975496178525194
+ef0ecfe4-3c3a-77d3-a9ed-3d639c5b8c69,319306368,3086657390767756646
+fb43f824-f4ce-db68-d0ac-8deeaa5f1fa0,2769560179,10256540275288613459
+7dc2c617-6ab8-bd57-124a-6bae4ffc7b03,864659917,3999735500704209511
+5ab0e091-0d02-8dcd-dfff-b0b9f6584141,3003728259,14846111629077120835
+d7136846-4268-04d4-3258-e7f14dc42ce1,1800270179,3213924381823430761
+175de199-432b-a99d-a23b-fa4b3606bbf8,1466491551,12736109134903388064
+b7404cc2-f0c3-4540-1f80-2c5d3034a7fb,3977889620,3170372158853344404
+3dfc4900-791a-a858-b63f-31202a878593,3838274195,6569909527918597678
+c3d83e58-be8c-3d30-da72-16df58302a5f,2053364103,14229080922597097191
+80b7961d-a025-1071-2853-ef9de3e5ba0e,3337807044,1523684866010782690
+41f98981-c46a-4bf0-9c3c-12bd017a420d,1610093760,18320132259810801920
+520efeae-270b-58f3-3987-a8246ab01dd7,3231373681,9577802949155433344
+b48391fa-cd8e-0cb6-2997-1e7fce8d1366,3553534053,1941505064907219454
+27293841-6034-308d-724e-ec66453587b1,875720736,11882864709116547786
+84c41212-9ced-5817-aded-a948f315bf4a,3343140363,13576067787665940522
+a8644c58-0b86-1ea3-fc7c-70a9d8f1fe2a,2973705676,8768814659860094814
+3f4e0c08-48e7-de67-f277-17363380a85e,2417311749,5153346631353230946
+127b9e46-0d15-a193-bcb6-3602171c9eac,1405584490,7248056474722083688
+174f3b96-b1a2-8c81-232d-062f328e2da0,544232245,9529645226295370248
+4467c52c-3665-ebba-aa31-79a2157abfae,687125583,16194078638953849823
+3149b02c-3047-600f-2c3e-c19b10cb631a,781687455,8825587564337916076
+755f20a2-0ef1-1675-df19-1183c478fa4f,1130824123,15975924551923610493
+15a1dd8d-814e-ff96-ecf2-f11a7153fedb,3846452204,14278734394497638729
+112e25c3-f7a0-ddd6-5e4a-c19d1951b286,778059193,5321841095513735801
+bb23fd40-c2f2-03cc-5855-fd4f0ebdf796,2745541408,9336338147295652326
+0fa93ac1-6392-32f5-6ace-2591a905ebef,785293628,16271116631553983676
+18971665-f251-ffec-bd3a-973f88b7e85a,976027097,4274219876210793121
+78dea8a3-5ef8-d2ef-415c-67ecdc2b58df,3699119319,18257080807589779065
+3f55c9df-b121-d328-2944-4b3caecba441,1287814846,15821971354709114554
+778990d1-158b-8a76-43f5-f5c77bc5360e,3432498926,6835139875072161768
+23cd10a8-e87c-4bf4-9459-14bfe079a4d0,3917356885,5265116074762545103
+c5e394f7-63f5-a5b5-d40e-9bc439327638,2246058887,14320639841812227178
+cc626f81-790d-b916-2868-80c7c6c36a14,739252204,84438148581393358
+b48734f1-6988-3ca1-5ca5-d78842025569,4134171422,17603162315623846434
+06188432-4bbd-b6b4-6fa6-1ef8e6aa76e9,1284083013,5011648097622377461
+84144275-e16d-c20d-c03e-4e0e7dc0ac0f,2911069436,8913775185758345932
+20dd4ca7-65b7-4b8f-2390-cf8a686363c4,4097001909,10715991872503410744
+d06b03d9-1850-db88-4e8d-13f0f116136d,3194724975,15892030919713491310
+9d15cfbb-2e3f-f227-ef22-a76719fc9cfe,864946372,6568312910459952044
+52014198-b63d-efea-055d-dba46ea7853f,1858200089,2343556397974660131
+c8d9395b-7ef1-9a51-5a1a-2c07895dd1fc,90724412,2594049318298323872
+73c2f377-c43e-a5c2-e527-d100a50d812d,152167201,14839784090759358921
+0798c102-814c-c898-d337-778e2c754cc6,4083373909,9758743239541271017
+2eeeb168-85b2-e320-bd2d-3b6e01309473,442966751,673504067902520130
+0263474e-bf39-6ba7-16fc-2b598b601c0e,2501175442,4196479655663869292
+b17120e2-4e56-f953-1ce9-a3df870e72b6,439788392,9984074726291716085
+2ded6353-c2d1-a7be-9c65-adf0f0cae087,1958469256,10209807744534597703
+4d93bc96-246c-5623-a6fb-871a5abe7a39,3373949963,4746286549270724528
+68a2bcd9-e6f1-c65c-1124-1dc6dbfb0735,3789939419,4240867061219938123
+a3eda4ce-4e73-6a19-c362-10e455b8316a,1097889467,1890252613413129186
+7a0aaaf3-3344-7308-b8c9-89fb64c29530,866033417,17029293557845000889
+c613966f-be0b-8d4b-9715-95683046a799,2095404860,11239286219453049786
+cd0b39f2-23cc-2f93-1abe-0bb16a6e3b4c,3228116136,13065767889281783703
+1ea0996a-34b1-1602-c4f8-a333d60748b1,2429173044,888214586697167273
+663e27b8-50bb-333d-11ce-c5256a50c7fa,1935373110,16326505151961266244
+ce7bf942-7ee6-d4a3-536f-3aafba7ecb78,2762226663,17431059420122184995
+1fddab78-1a6b-6dca-6297-d97fe4cdd42e,1977790376,8207598507436411215
+3b8f5c73-c13f-5d62-3c7d-b901d03c1ab8,2066685325,2653382505327700501
+3204f6df-6b44-8fc5-1759-82f0ba9262bd,2630776449,3781893826593921217
+93498fb5-31d9-6149-bb12-f68d4da32218,2300041133,12640574837889048500
+c53c34f9-2914-dde8-0bea-d37c95dc0612,411723793,3096609924433856123
+23ac2d0c-58aa-c87e-adbe-55fe49282f6e,694086511,9336649340094830309
+30f21522-e0c1-e5d1-1fff-a56678134f62,1209413825,17529947219835027257
+c9ea5c96-0eb8-cce9-a1b6-6e6d2a9f8fe0,329954461,16252515197621127041
+21acadc5-1a40-ab64-b6a7-490ca06bbe22,2024195504,2462543885319070910
+7036343c-b948-14be-01fc-e548bd20b033,2735692865,5846460944066407070
+7428d25d-2bba-0de1-a38f-b3fe728e488c,1577968132,2840950406146370831
+ef0b0c26-1bb2-80df-6970-76548fb82749,2649829809,14349635706404415615
+38b12894-4e55-63f7-218f-ac5d9c6104ad,557823836,18132113110873787834
+3309b84b-dc96-83af-6616-f767f984fe1d,815394471,16023986004360212953
+ff6c4aa2-3ab1-fac2-bea3-26985d75fb4f,1395823430,8140963411135727289
+abb477bc-3599-84e9-6291-04f3c47dbff4,1114286683,8096751135190621698
+ea5f72c2-1ea5-3261-8d63-b9f7a6ea98f3,3462428155,5177092919167989124
+270f2a26-ed35-cf6d-aeb6-07806567907b,1695627910,6474445377183113877
+51f24d38-da9b-ac3f-f076-76a2352325eb,37254577,8631463224538155283
+f9d7a4e9-680f-9bda-839d-ecbd109fde84,4198488712,10534928977352976122
+a3eb221e-bebe-3c84-4632-ef47c7223372,3112180283,15556093139553289739
+98be9a02-65d7-9fea-87f1-d419f544fb57,287903314,6428752457319004659
+be01e171-9012-6a27-a62c-f2da46fd3a94,774143000,2970684406885223275
+2513303b-b4f5-b8a0-a37e-4a0489b5084d,3387572671,8097290812519392048
+ee67a246-f407-ba02-44e7-270087190799,1135120703,2103851234825752151
+d341ce15-bd48-9d29-d1ae-d4b724d212b5,2434241615,9548194325308091094
+37a0fba7-a0e9-bc51-0da0-eea44bdc5e53,2639493549,9470507817695378669
+fb38102d-0153-d781-34c9-631716f88086,1049023916,689209017887558599
+0f1efb51-c0a0-46c5-1d73-b1a00dc1636e,3441338022,10166029795072049103
+b068010d-0f33-c8b7-6b78-8186553fc52f,3068633061,16811567785783127535
+4565256a-8888-e86f-587d-92e43b2b1d20,2444164291,11446705798314536746
+d1fdfbc8-2fc0-fb1a-c302-0e15ebfbc7b8,3489023726,8981934334647292188
+07ae9e42-fc46-0b9e-da35-eefb32b7a1cf,2962481840,17959622138927407530
+23832ebf-3f1e-667f-fe22-85543a3f65e0,2551382426,9037600120347988743
+674c5c5d-863b-07be-5f54-b3c0191636b2,754766670,8660825749587733998
+e941d365-e4ff-3174-d4d9-7fdb4b5a92b5,2047259716,13118086671733755105
+edef479c-c3bd-1e9b-267a-2c5836b06bb6,1051883985,8434997616281870473
+a3de3a6c-ea18-2f68-d35f-f430cdd64bb7,1094944425,16397227865362876387
+7135a433-21d2-d87b-33ea-cdc2183ec91d,92484456,16178186112132394588
+51fc232b-6cf3-dd4b-4ede-fab2d78b6e10,591764545,13839100698363381268
+25824135-ed72-b9d4-6a1d-548ce876e523,3128119499,6672600020703085380
+4d7fbd29-720f-9a04-c07d-fd02d411db5c,3109283456,18349086300075408825
+5fa0872d-5ead-8241-29f8-5d4ccf6396e4,848610407,3839818395565660157
+9f3f620b-b185-260e-a51d-33de7354f6b6,1857976963,16234093624647186557
+7faa032f-154d-4971-c6f9-c45a513c46cb,2059751067,8533434706441778893
+58625b33-cb3d-93cb-2474-fe2c9ace3688,3047607504,1339268557782925898
+b2dd3603-681c-d63e-7bf2-2bb0fdbef39a,1009173706,7908049495671351771
+3334bcdd-4c32-a5b1-48e9-e7e044768c16,3670061036,11292743533653104275
+4b1154f7-2862-02a3-e3bb-07aa60f87090,2123093656,15244068808477873112
+49d39eb2-7acb-e2e5-647f-5cd274cf6ed7,1947068993,6799385327399042098
+6417fe79-f62e-45d6-101c-3f1183f37f1b,3415210337,16035675655744790918
+ed910c1f-a058-0592-fffd-631b19a702dc,1980209314,18219496474203667570
+8a2d04fc-9934-ae4d-6695-801d751ec469,2991368196,6691129704931119634
+e6e5c379-4054-b245-8e36-e196e47c81dc,2051784150,16697581648509404162
+293d18bc-83b9-8bfb-1719-d89a78470700,4214359422,9087231823887105464
+d0b0b5d7-ede7-e44c-c0c5-94465e07d98d,998870163,5023842198631935879
+ea2b2923-f84b-b26c-f352-4db118b2a5cf,2694755601,13026684770513816521
+342b5702-b29c-a320-b7b3-8ca46f8c5867,3279136824,5191673979055453529
+67d2abda-16f9-35d8-ddf4-eaab88b75a56,1100813017,6092666927091871534
+bef178b5-ff61-8e23-962e-71b0efaded4f,552887552,15094793990780740707
+90a2e8fb-56f8-387a-2d29-94ea33b1b1e6,2931941294,10056006194949456401
+4b938da6-6a04-ba51-49f4-3cc80c57ddd1,1077632167,9054566941912482767
+bcc5db04-36fc-1d37-ea09-19ceb7bc42f0,522267678,7385103383130857417
+38eaec07-5c7b-4275-ec34-86c897e244c0,1403024132,5586056740593591405
+44b596fc-d53a-8c7a-ce33-a136500e5193,598916365,14404219332587954766
+5ada3fb9-2763-5e0a-682a-c886b1e54f84,3703867540,14215819615411446450
+da49eba4-2a64-f135-58f5-1107c926d34e,577753222,1693587754492342744
+6adde675-bac0-c34c-84b7-ba6d504a3a1d,4164512529,17659935701389265115
+a9b1aa89-2529-954c-0305-65bb535fb17e,4289941608,6700031107363648818
+4fba9e2f-de24-8cf9-ac02-8fa536fdc439,4090175777,8600000349646323098
+769d5991-fb42-6062-93d5-ce2dee8076aa,708226310,17148568234800559860
+6bc0140d-b88c-25df-8131-e340814000b4,2518716739,17496466041375841182
+39b8eb0b-d9c3-0676-faec-093f5a739b86,876163198,17258493503556733421
+99cda96f-e12e-88e2-8df4-d13e49f14d75,867981537,11392347696191454077
+c386d31b-d6f3-78dd-8b55-dea95d8cb8df,3900438534,3199433729115444223
+e4b1f19c-a5d8-f9c0-5d9d-fcf21c87711c,3725339873,2086414149996092196
+b84d9d9b-be9a-3ec8-e146-0097ee2a5b6b,2047491429,15417597429531772569
+a698255a-d039-ca69-ad68-b20e5c2a913d,3217762593,9506448450355268558
+829268fb-0247-878d-1f65-05c86710ce11,1338405652,17590337679349416179
+950089f4-da59-6b07-09f2-476c8255844f,2796432413,12559169555509932052
+2e6c6c41-c647-a0fc-432b-482695020a9c,71908874,4167091754552960937
+0dc976dd-95c2-2f51-6040-405773eb60fd,4126682349,1427025576767186689
+4b7fd47b-5625-b1fa-292d-b7f57a9f75c2,1750690648,11478224406705858162
+174b620a-6b69-2de1-1f33-fcc66c6f3426,4217872658,7236994957195356462
+26006229-161d-bc11-fe5e-a20985039759,1328652612,10975874191172005224
+05714f42-0db7-2404-94bb-af88da3b0186,3668848285,16109584057323138071
+b9e20cf2-3541-2c56-e861-bafb9bcaa483,122710237,8231840066742401032
+d82420fb-43d8-13f9-0e2f-28c7f08c44f4,1499503346,15206112235611752497
+9963d781-cc80-49e7-e5f6-9238554464e5,1136800191,14874608954377165260
+d1328cb2-dd08-e491-8fea-55837e52bf9d,2890076504,1112410896895403438
+9f1a7bcd-1aab-26f6-b0c5-44f7f78511d5,2570317376,13764674690614736750
+0a1dafb3-91c1-9dc0-a9cd-ae82bf236187,2926033502,6975239718058676511
+d2a9591b-badc-fa08-58eb-9d43423ab3dd,975137078,7062300490744349982
+a2c58d09-6a38-947a-6d7c-7c7933d1df81,87673396,3553677729809213971
+b0d8fbd4-e894-4ef9-e5e8-88a583c5c9c7,1224073822,16759896357147880546
+5e1db2f5-c2bf-c012-5fad-3732e30f5040,3897415998,13116273180339221434
+36a7525f-c826-0d01-886e-5284ec8efb54,1898708742,1603967440532092252
+44328f7f-06c0-71e1-cf0c-3fab4f67a2c4,2495036958,16743094051793404505
+49cd14e0-71dc-8445-4e4b-4210bb1131de,4246738684,14654678819919312036
+18176aac-fcd4-72d8-e622-e2944f2f238f,3801004206,12655892506990864965
+213b375e-85cf-64e4-c275-1968d10f5f2b,1137681013,6309308004217788700
+da658b8e-0bab-e182-ceb4-38a9270189ac,2089617982,817426214762454636
+0e67e963-b9cd-466f-1e63-491c39585e6c,579693624,6354803632871686994
+4b38a6a1-0f6a-4d02-c071-f4c31b7aeb5a,1470683530,3066371930000430092
+a3a062be-0275-a8ce-9004-dcad6b74db63,1250073215,16711060080933892431
+6660b2a2-8cab-c60f-bf6e-42035179e3d6,131668217,5562312457408537310
+bd2ca563-0f5b-d4e8-d98c-62e2b326db00,2679942764,16508734752223099224
+dff6aa3f-2333-47cc-e6df-014092e1ec6b,360985468,11589059456872876777
+bfce0069-7a2a-d8f8-f0b9-5afd304e0e14,1459446177,8367289433803691205
+77838ad4-eec1-4bcf-e6d5-e17a9b8ba6b2,2072939476,4635175262725890556
+9f7e5dfd-c5cf-01bd-0f12-8466414e9d87,1184597565,9539164898427633594
+010737d6-e6be-5ec5-440a-e6b1b293944e,4041373115,2780383518680701970
+3b93595e-24f7-fb49-c2e6-4b44411d2cab,3988507285,16530727092477417809
+16273123-90eb-03a2-f07f-2be1ce31b86b,3684622093,3993629942473045043
+de841248-93bd-c71c-c69f-af48d2079e27,3096736195,17045889029630563048
+64ec387b-5c50-059c-f709-09c0915ccd55,3659366164,13296894473577639226
+39e2b1bb-a24c-38d1-c746-fd7ca143ecb4,3138084329,2212985175319787890
+cebf188d-d639-dd4f-96ea-39cb14b7e70b,1636266305,18048030412332566025
+049ccc3a-0956-ff9e-ad98-6915df78c31e,2441499920,8840087845978395324
+cbfc054b-4434-8ed7-e508-59a1fdd8bb85,235076023,14688344273679464339
+43da7280-7c5d-dc9e-1cd9-889e774a9410,392391290,12181800012676084156
+156ce7de-91bb-3961-0cc9-d4b213ff201e,2998237192,11642118581231617140
+a342aa56-5ceb-101d-69b7-b00b3587153a,1493602443,9538677752257855542
+23a61b67-31a1-e381-1b44-1c4c2524917b,1325471727,5928944771481201632
+59737e35-503b-7d15-764b-3adfed1073ff,1109706148,13530966597024947411
+9f974bca-4945-14af-852a-99431e3c8dde,863218035,15330468399188701006
+d42037e0-7a2f-d2d7-1e65-5bdee25d08e7,1937285256,13449545946779047425
+971d0aea-fb44-2186-0625-04f3ef431f6b,3868821157,17396840652321610553
+b7ca3020-2c8a-383c-dd28-2e61a19a1871,418872283,4431775334646698795
+09b0f41b-085e-b74d-cdbe-e2529b626984,3089628720,319454321855598400
+1b5e7be7-9dba-151d-4653-ac4b3a05c873,4094647062,173445012453949398
+8464c7be-a80b-4e7c-cb9c-3def30de985a,1029417700,16358948895000624739
+fc799b8b-85f7-8f28-ef68-e418e91e5ec1,1538231635,18065082158225011496
+e94d8e88-2de3-b151-2381-d923a52d1535,2929329125,11552048288301718684
+3ffcfa60-211e-cb64-65ff-e58261e6cd6e,475113360,142616106315561844
+b8a2ad6d-1ab2-3b70-6090-30af2a1f350a,1411560436,13721131875259644908
+44e6704c-33b8-2760-953e-3569974aa6e8,1172957268,5639107775055260740
+8095927e-84e4-fc94-210c-e414aa3f3fb9,326696278,15179923929455439967
+23b74bd2-ac24-5cd6-75e7-490f92034e1c,50292821,3960602404150334158
+02f3cc33-81c5-f0d9-0562-063d37db881b,3508389144,2976401731347691280
+21d04879-8bd1-d0ec-2ff1-ec77ad94f84a,2138493085,7689274540608672944
+1204a126-4067-4ab8-9df3-48664a7eff3f,1038656671,8833174602042562894
+1bced516-5cbc-495b-d8dc-2c41163fbb90,2193730577,5517875861151800317
+4526e469-65a8-f16f-cefb-f5bdd9870ed7,517489180,17529117092043965281
+f7db52b3-ae21-f496-b604-e6f2e9a41958,3093199270,7425840534850817983
+9b027da7-d37e-ceb1-de29-898cbe498ea6,2105879989,11770291931646363279
+f07d3fbf-721a-8359-ea23-9c85c8a2448b,939666753,13441242076788237806
+26f13481-68cc-30d2-69a5-fb3a42c64db4,3636881136,7899248985832406859
+d401db7c-6e16-6645-580d-81c38a712b38,2853463483,11764753304409393350
+ca411136-1f13-d06d-d6e1-cbad9caf5fe8,3937929352,13596571644041294590
+5958740f-f52c-a18d-1b08-be8395759e79,2065130825,1041704569627365724
+30fa0983-f3c8-bbb9-842f-da3c80aea42c,1414442589,10330199813123812844
+50eb0be4-9925-0252-6e7c-369969ca1e63,2106569371,715176718997280589
+009d98e2-860b-e658-0f98-a6ffa4c9f3cb,1646047909,7268905510452094281
+1eae7107-4db4-a843-b732-1b566ce51300,2948198764,16404846482891603524
+67614304-fa60-1ccc-aaa0-ce613a28d0c7,3540522706,5352351035110253382
+31dca020-aab5-0c89-5e25-868eec8fd952,4203350050,4991775273212180369
+b38d59de-98a1-eca1-73cd-be3cf6cf75c3,2055118713,18393472843599849235
+418ea00e-a76e-ebc5-8636-91fe065f4e75,3889418367,708300283627559699
+b86ebff7-c76c-b561-7147-233b5150b9ca,2568090085,140773062000252652
+0fddca15-3963-74ec-378e-d0ddad53ab60,2579167676,15953228709622283836
+df05e7dd-fe76-03db-0b52-9cd303016564,4082193697,9551752619865187745
+f49c051f-1739-5635-17fe-efd768ec6de5,2565730558,11625511072075047284
+cd578526-f238-3f4c-f142-a677e54c0b31,3044659820,18219826976185673745
+c2280c8b-b144-c0ec-71b4-56c094b72371,1311169175,8773930211221873402
+16ebcf8b-bbf7-d466-a6f4-3c805e7056ec,2978452504,14492751718267742442
+759c3167-17a7-73c8-217d-955c6281da4a,754233340,12433255634078267221
+e73279db-046b-3358-5938-c6272bb985e7,635930019,10331565164268823022
+bb129154-a780-d5fa-bbd1-d00e0ae47f6b,3627976699,15501016867975585621
+90ddcd36-3301-1718-eb37-be111ce62401,584677825,7252768431006680853
+7e5cfa60-719e-48fe-5b65-18c134c1807d,2883536042,3174775354809756412
+fadb1560-08a1-a3ca-9eb2-de8c3814f5ac,672553614,3783589378951183356
+646a1a30-8f12-cba3-cb26-fa90611dc80f,4053124403,12238008585927021625
+62e7a885-95ed-6d77-7029-1cd32a4583c3,988629721,8764348146578317823
+36eb6f98-f5f1-bc12-f3af-bd234214bafb,717733365,2117557729498593223
+3028bdc0-a52b-02d9-bb1c-42a7bcffae8c,221459459,14104622894200834535
+30235add-7511-5923-590a-4962879eb5f8,775374386,10417424391864937582
+19b326b6-d5a4-e5ee-5cc1-61c84bfe3b72,3219449081,7355161193917440933
+c90030d3-10f6-7f09-b4ed-aa7658db882a,2710703942,17982627049639978808
+ece3ef01-8173-1753-9b1d-c994cee4cea2,858683097,5631520259732247836
+1e1448d3-2493-79bf-5f47-cd2c6f4b4185,1776206358,5575722875392610008
+17bffc8e-fa07-9084-b406-6e028d3d05b7,3746569377,2299134455410224146
+e4971465-3dfc-9900-be84-e64e380ba018,105535523,12327877194035907693
+00501422-0e29-c6d7-b093-793a06e0a841,3079968155,5482419177464929773
+5bc70ee6-2ee8-b3f2-07fb-a252fc35a4c8,27220008,1461309074681494288
+e63f9c00-bd35-e06f-53b3-6e7e422c4292,1914846426,657871690476799803
+4eee6af2-2558-cfa0-bec3-7d3ca68f3718,2065662168,8636065373667257640
+3faacb07-e03d-5576-3393-274b96372c09,860128331,12296970193547622574
+47ad1d5d-a064-ce0d-7e8b-760612702f2e,3006516929,17265978436555845682
+fd861e2e-d50e-de55-d9e6-a1281e6c978d,3198744525,14332301905848112565
+14dc5583-ba30-ce9d-222b-6dacf4482d06,3810853202,8492613194427676148
+9c189a4e-7a64-9193-4079-a5db2e7e246e,1085266032,492466695415249710
+3109d4aa-dd3b-da1f-8ab5-ef8febe8cf65,817686235,12681121271290609781
+034dea01-434c-d5b2-2547-9bd3f5ba463a,3683843712,10577210858205984737
+369e1ed5-654c-d8f1-b205-f0a9a51f0aa1,3570989680,17491442423257865650
+cf08b52e-2b3c-dd33-606a-a901d7b194d9,2772178707,17619400669126206088
+ea494668-6c88-b504-89cf-96ad7e38dd93,437497762,5017158978560500189
+28d738bc-7d91-b83e-62d9-787790a9150c,2938966573,5604788600947823415
+f3655737-3f67-a93d-08d0-2b25b4ad75ec,2052626807,1533324493658185469
+a82f3d20-3c23-53f6-fa38-fa7872054ed4,1020842943,14092167374587589343
+707b3d12-ca12-88c8-413a-0417aa52b3fa,116212626,10115067383154505663
+0161bad3-cd93-6f80-f3ee-24a40b0ac52c,3382670275,13396724505642824409
+02749d32-c1e1-c897-a266-b593f83f927d,3695317171,7831951779283416151
+6179d138-02f6-58c5-9c0e-0ef0d96144e3,308786056,4120927944017786878
+8ed0e8cd-a467-c34d-feae-4403545836c8,938768722,12148591322446803110
+6f31a45b-44b4-60c3-858a-31405f1d4008,521543311,360593974581762325
+339f98ac-0d15-0b7f-629b-b1744db415f2,1916727858,16932751155857887932
+6805b886-bac3-c1ce-db43-006fe62245a1,1532954307,10427678497006665012
+ab9b135e-675a-56c4-756e-1971fcb5f90d,311273160,13543775266932775853
+bdaa0733-8e9f-72f5-a8f9-e85c5ab4d17a,2169643912,1044643060390091280
+e5fb3f39-d475-991a-20be-644ad17db1b3,2146477245,9033516177779839534
+ad29ed2a-7cad-33c2-9af9-0d4ff178c7dd,1067422121,18330443348884262419
+a2e7bf76-852b-c28b-ebb2-f8297440dbf9,3203622294,17394058334183388962
+58ac3cc4-04ce-0e9f-f47d-f8b509154d77,2625355629,14733763324701015819
+ec982c60-e624-023e-53ff-05955e105701,3131890662,1151591369749860606
+2a4b7ee9-8f64-00a1-fb77-525d5fe1d3b5,1458223930,6235683828014918668
+07ee1476-fba2-96d5-bd5e-c32d904d0e8d,2631111234,3233869672359679279
+44e34812-df32-2698-2aa7-d02ddfd3aa25,305401505,14515010110149955073
+bfe3db3a-c26e-8f9d-95ce-206288ba2908,722820261,12663107546352382453
+44587fe0-8d08-7701-fbd6-85d0fb89dbed,3727065490,11966780431450708217
+5c07bef3-52cc-49f0-e23f-3e4e933ba59f,3089451251,1950419873105709317
+2ead9a43-d37f-ea0d-c8fc-e3dc5d919ba3,3392646438,10705646867832319354
+a4f9eadb-ffed-43c3-6118-66bd55c11184,3912600625,13474504915942303085
+7d9b15b7-3468-fd02-451b-30311a1c9671,1373538069,4844788947291102713
+a0d7cfe6-6baf-215d-eecf-d5e126dfa619,2340044554,12055801229762670636
+441654b7-4ab7-ad4a-83b9-8a3a09ae5bbd,1534335685,10519555466545546695
+9b119d1f-58a4-296b-f63a-fd9cd5cce300,2766058306,16994375007212242495
+e34c1615-e201-473a-ec33-543cc74853fc,3556661824,4023626707476494603
+82beb831-0069-8e2e-5581-eeb5b22ef36a,3847114789,8687045650375342618
+db0399d0-2926-0e35-10fe-6985f98fdf83,1979527304,16112234782500607649
+2f9f00dd-a3ae-04f4-1c73-717b0c277ee0,1704021917,5283012468974745897
+e6e60666-c1f9-30be-c716-cb6a1dd55d01,2313928344,6602914481849820648
+22fc029d-50b4-7a49-416d-34ebcb132920,218742477,14958644161997628997
+f624de16-0ea3-9f08-41db-dc49bc7670a6,3660659505,2779335855044883907
+f0c0c384-70f7-e27c-3900-87fb40ce59ff,1388864950,16083016738730714564
+47063d6b-d685-205e-c854-3455b5233fcc,4294811445,14269805887261519274
+6760b0f7-41c4-c5e3-ea7e-2b9a1bbc6569,1731015346,3754032529426291320
+fb3d0717-03c1-89dc-fa11-f8b5c207904d,2645754787,14538205336892515717
+9ec57924-79ce-5425-8ad0-9b6965e324eb,2798735572,4351762659310108322
+352f959d-62f2-4764-9797-3c37f637300a,3257666547,15275319735413719866
+2a223fcd-132d-2da3-b247-3fb9e8a7c365,468119054,1599801902595220102
+c87f6492-e169-c636-d9ce-7ec6370f73c2,230060848,16024100456106346354
+df047665-5134-3e4b-b14d-bcf67b779d9a,3120939134,1600133505945137597
+5804361f-e298-37fb-9b63-0c1bfd4664e8,885881041,6808689605437346465
+e6affe78-cd28-f33e-fcbe-e7e7a8d605b4,3330864234,17616540571665166783
+2bc5d156-3537-e5dc-9ef9-c2dfeb454e7a,542455408,2962325619935411377
+bf717825-44bb-0247-aec9-35da97c0e395,2428866174,16934020704594390902
+448a2ef9-9f94-db7f-6734-166d39789f99,2665881484,476819939458449686
+c1dc3759-570e-7925-bbdf-51a3c980fc22,2558469275,5683794728037746390
+7586a2bc-cb1b-abe9-0b6d-3c4d8b6fd9c9,3955885462,16837652041421887170
+a7f555fd-75f5-039b-cc52-438b0e5a5562,2842405334,3701245740987431580
+64acb867-265a-55a0-1231-1644f5570510,390285165,4435853437864967624
+15eff9f7-b0b2-193a-4709-5f91a53df21a,1474482185,16398051832078713364
+3a49fdf2-ad61-e914-cb88-0b6754f3f67b,307511800,9646635648483984769
+0c66c69c-8b78-b445-369d-dc590e250fd9,3908065994,9692802615198384815
+30b145be-950d-7a72-cce0-64cb655d5db0,1282533538,11225921653910393137
+9c2f0b35-f801-15dd-d053-012bf4eaf27f,22223379,9750689397290729857
+a78e1aa5-5c11-ecac-36f6-0a4b68308c2a,1889350090,13960559638684333536
+d8276370-9595-6d9d-cbcb-7ed689da99f4,1151836703,16183215498704463601
+8178cb3c-6b9c-0c6b-f232-af5bfb4bbd3f,1392179498,14655562521606690720
+8ca7cea8-140d-e9cb-4e90-9195bc4adeb2,2364021650,2865002920312025949
+af63f6bf-243b-d9d7-30c0-8357f1b8edfd,1645880514,17945531786413173193
+8ad81a20-15f4-83d8-74db-9b2f7df00c7c,3998797949,16490882885257237372
+a6697407-f68d-b031-37a1-bb6671808ba9,3203956568,14349866274015652073
+728945dd-2760-3313-af54-ffd5b3e6a393,868281815,11110896496758741150
+df7f2c86-cc69-814a-72a8-77526bef07c0,483283693,5347333362062642068
+abd4f9e6-797f-dce6-489f-2e0758a4727c,1623207127,12643543639204983708
+5d6bb0f3-370b-93c4-de17-8dc5c1da118e,1621695054,10456672597197123453
+9485069e-b2c2-e9d0-2ffa-66bdc035be5b,625630089,5684540784289799970
+7c563b25-eb64-a6fd-10f4-2300b2592931,1697953521,1418176269457639831
+e866900a-58ef-f051-d20a-9dbea794f82f,3133030445,2151765936573626679
+b43cb1ab-7371-161a-68db-5ea80c7588ac,2002185570,14270693177847600910
+3a983a23-8285-5ce1-00b7-731c52df1223,3244787289,17665463440472292566
+217b6b07-a083-7593-4515-d3138cc6b9d0,3685623946,7369920725368486093
+b83f6a96-1740-c3e8-cdae-cf05cd3223f0,1753178045,1828861265700631115
+3d2a83d0-809f-445b-8e6a-713b42d0a74d,240466846,11541670458273175341
+f1e28598-5617-09eb-ec05-a012925509c6,1195379756,5739418896814889927
+456670f0-eea5-632c-766d-12b2393097dc,446760951,11780141619139294739
+fcce9675-14b3-571c-5b90-f79ffafb8e73,2759034727,2689805384407731779
+e65e0e46-a071-b769-216e-b04d36a30004,1152487009,15281693280972183066
+21a0946a-65f2-1756-b7fa-3dfd6f3f7ecf,4120960077,14952452313079726539
+d2c4ec5d-78e4-93a8-9039-e3de02d5545c,2463509253,2674333701907343733
+4d3bedfd-57eb-687e-07b9-97f7c5368087,3489745961,6236631967941871964
+fb093db3-0e94-e1f2-d53e-3ac26e40f03f,2984278349,668989075538158955
+2bae8538-0ddf-e0bf-b61d-71308d56a908,2027074134,4801642781476926007
+385a4976-21a1-35cb-8869-fde0f6418f77,4047052756,12376861437188365150
+18a1daac-2aa3-d0b0-6f4e-863d032a4aa0,2365226104,6540676314523805552
+6f5aa4a7-d6ef-b4e3-d660-0b417013a983,2770329289,6833589558652612671
+ebfecb30-a3ec-e8ca-15a6-98b3028ea4f8,709710135,5611027864439704893
+16422d0e-768f-d647-bf8a-5cd241357a05,2690939210,11049516061791570389
+474ecf38-d23f-1245-f747-0536eb117b55,3575791135,8971546919374818953
+8bd31ec2-df90-91f7-06ac-7dbf0ec3ccc2,940948234,8323207016665015283
+b322ef46-e5da-f0b1-1e6d-3242ef6f7ca9,3924261959,7158824452638466957
+ad5ca812-eaa9-9d5c-adb5-fef8cfa1c52d,3263838289,9918403388696783122
+741f449c-b82c-aef2-440d-0a112d1feee4,2528775808,17456266285892442969
+408b3d3e-794a-0e6c-72d3-9731e1f82c5c,2229536432,10794228582048412599
+e8631d00-f978-e120-9c64-612c20a3a7b0,1144513006,2190720394197156768
+0095317d-472a-31b0-7a16-27aeaab5f9b6,20689749,5617646588998067837
+e4904d96-7a6a-119d-7382-146b938d624b,3966422806,14416638188295391899
+2ad6942d-5bc7-b9d3-ec17-06b480d65c80,3155111814,3476306309105023196
+3ca62afc-32a6-620b-7525-bdfd508d0615,2994744465,1452366456989276062
+96475034-9318-87b1-afbc-a7739b1d6a5a,2521453200,17505877721521326938
+d75770f5-24a1-1c14-fc17-3d15b72b7579,746218408,6750352089400404269
+6766f2ab-2593-7476-134d-d5f0e342de3f,1036742484,8129559572132922405
+86183df9-9e94-3562-5fbf-6477fa92ef70,998206987,6700181652877543250
+e0a37b12-987f-dcdf-6a6a-9ac21112c067,2957364859,3350097773980332039
+c18434f5-ea0b-c406-8861-4d260137e38c,4018845153,8917096160673638390
+e1f402ca-c541-6813-d46b-b1c315c6cbdb,1856949432,5993721823617765676
+e1872e7c-0ec7-ab99-3947-1444dad6699b,1964212313,7192217561819259315
+ed664f37-fb6c-071f-f416-cb8201892032,1933501760,8985005410021908799
+90210192-9f1e-41e7-1846-6e5bdf4b3d81,1672257756,5360485082043133787
+10efb5b4-87bd-d01b-1689-a370b4ce1595,2492210878,13203835392060144647
+815cd576-6c72-1a62-4153-3d4817254c33,1133848534,7094147714787104685
+96008fd8-857f-64b9-54ee-099193f6f111,2411237142,9982419104698815718
+150eb31f-b964-2a0c-e675-4073867c4834,1978479857,7154039768351787116
+276667a2-6e01-61e1-ea50-84e92814a077,681601009,7278683135131647932
+b80a2779-d848-031b-a1fd-0658b2c09d1a,4036014031,13270635845087802770
+c420dba8-ec1e-e5b1-ec3f-7542295e5ab6,3288425832,15569173767064720099
+03471d1b-2e5d-7bf3-0f93-d98cf7115a98,2133404028,730707298814289293
+c6becadf-107d-8d3c-e1b8-878c825351d4,1913537709,16317473743909667831
+b5998322-0f9f-adbe-ce3c-881130d96ace,1908538083,2250232149886356979
+967f0cd2-269f-2c2d-6e20-b9dc074d233d,2846759504,3346183675852958505
+b411a473-d33e-36b3-486e-30ec1e2e3a93,2089255955,8673439473959846393
+71f6ee5d-d677-fdb9-508e-0b6637053ccf,812078753,9909696986413383487
+9a83a197-3af1-fed6-4dd6-b65a99ae7bbd,2058968518,9788504651042606472
+3e48c173-5d21-c68b-a5a0-7b9840262fdc,2809718862,12458879353098091888
+2159b1b5-a635-4989-0a12-be5516f745c5,3312176301,15239363467965309040
+2fb4677c-8562-f3a6-c4e9-dfb2113205a5,1849980771,13522675744741594168
+2cd3f10a-42a8-b3a5-d527-a362c0988975,191007767,4248569629109283505
+169f3ba2-39de-8ef8-5d63-5b38ea9c0b19,3879220326,4579169859170622863
+7e9ea6ad-a355-6b2b-56de-c266b8999838,3988776165,663578043766309061
+2e30b1e3-ebc6-7401-1f19-f53e4f4f61c2,2014105018,13202636020850822786
+2e8a7630-9b44-51c7-291d-6803425f08e9,1412824221,16435450467731496233
+29159b3b-0c8f-0762-c56d-99e6dafe7b0b,3075646036,683399391782081815
+b8b7ff0f-d6eb-dfa0-898f-f6c19838a39f,1161226867,7785292155509163448
+1af2a70b-331c-9a21-b9a5-1f36860c0baf,2798909740,4808774960512935228
+68575bdc-e87a-7bc8-5f4f-0fd8b0fc6e12,1010888355,14538499661577036513
+e098abc6-d8f8-67dd-bfc3-f148ec0a83b3,1043215516,4419331386968824282
+a6ba3aa0-b94e-287e-f383-212306e24f73,1455631545,17260603775335395075
+81e176e0-f5a4-26c7-311c-1e26ef4b527f,616492801,12537730179168066035
+f8437b70-dd09-66fd-8de8-4e27116b5f81,2593045064,7018364359504112394
+864a180f-cf8e-aaaa-0209-38a31261d509,24379359,14088310754097801223
+9273ddf5-ac4d-8afe-442d-d6c0b2779780,199811428,14450238849755277787
+6b4a048f-0926-f207-6ad4-b0860e48444d,1742976451,2045764077059157613
+9d19252d-55fc-0ef0-5003-7dafedffae8f,3578505876,2696382953375672786
+06195cd1-8093-f387-939a-15b7c7a581ae,3023489101,881631795706964528
+5f24b017-13d6-ed34-5178-ef6ba9567e2c,83414468,6653467647639503097
+9a3157a2-8288-9625-ddbd-841d6fd911a2,2669731937,1705338771736130048
+4aca9c62-d7b7-151f-dd15-7e8d7c260101,2471390880,4057383474716035191
+a58658ec-11de-495c-0913-464e0baa6392,1651943810,7800333621245141685
+8fc1ff18-739b-b953-5bed-1b7b8fa495d7,852886516,4994203103129848725
+5e97fba8-8b8e-12c7-5ab7-7448efd99310,3170164799,1706794837441648552
+b1d64402-c3e8-babe-d43c-c1b5ee59fc8c,3946768915,10373284881114437207
+9ff893a3-aae1-3d1f-d115-cde93bb0e843,1026510638,15105935769578580851
+98f80b89-5697-24b8-6989-5b448af649a3,2814146412,3655516681896289625
+96526483-1165-3e6b-c296-f6cce454a83c,3491659152,1192018470381297322
+f61e5786-37d0-c0f9-b933-a2229ade9ba5,1451821607,9737886508544510248
+19cd33db-ea78-510a-62e3-a88558a80d5a,878668592,11659893515533692611
+cf89f332-6d77-569b-16da-c4820cf01861,3932560816,10340105673111893509
+5bd2c39e-d541-5b4d-5242-f471a9959969,4039781820,4239899585746145133
+98beb251-3daa-5354-5159-6612c66f7adc,3285562652,5256987647321434873
+4b8e3251-794b-e786-43a1-c6e56497d0f6,385772865,905708238496472333
+31b61626-9feb-26ad-02c8-15d5e3b8220f,2240466493,6806830263586676573
+a5dd7399-1793-19c0-a36a-26b918d37200,4214670864,17224595871689785094
+e6b5ca13-6e71-59f8-98c4-00369543af19,2875261871,2465841243788045993
+c226603d-0316-6da4-e978-0cec197cdb6a,1896564172,11039733485129426827
+729ff98b-25d6-e4b7-3ec1-f54cf5b281ee,4142584099,15146703232303818734
+0bccaf7f-097e-bca1-ea06-ecd2850a3ad1,2986187923,7931158824758386941
+ac435e9d-b2ce-e348-b014-d8291c1dd4c6,1879866998,9993363718071968005
+9c3b3bde-7d3c-3e76-6a41-b5f4ca42f0b4,1512721305,13745044102269005824
+1d35cd22-2120-7cfd-9f82-85929dee136c,1207800433,3437270925343400504
+9dc34b94-0700-94a0-f0c1-0f1f7909986e,405238386,15849228502991407121
+a295e20d-fe49-f0a0-5bc3-d5cf471453c8,2300528944,1288569895199548682
+87976935-f3a9-b510-ccdb-c80f88625c4d,2060309759,15753788751432921574
+462a6c67-f4e1-725f-e749-e13c6491a70a,554817669,11383467953000660829
+e8b90b66-51d9-ab1b-af3e-ecca09d91b64,2139856065,9176496978714166137
+689652b3-8e68-31eb-2297-351ad28a1691,774431440,7681114583156857785
+2dee74b1-178b-f1c8-b6c8-7856c596d6ca,1288361868,4650590807200792711
+1e17e7e8-bf8d-7232-698f-e4299986286d,4065878296,9226217307599425651
+386f1452-fc4a-b44b-1f28-151428a0226f,17453045,4288185682945783166
+75c0ca80-7f2a-72f7-6ae1-76339c418c26,1786098189,11225798023560034380
+35c8743a-4ecb-a1c0-d2c0-1a697a410af0,2270158316,6155092555187657504
+3357a374-5066-ca04-7891-d0948b1a070c,822330537,17531235540532275412
+2ee5f3fa-33db-d5ab-1346-2bf2e410e28f,4044098710,1957960324601464330
+8fcad4e5-d46e-d2e3-cec5-b70d8c510b6d,2274551339,7550028841619638088
+a55a9907-f713-43b6-e1b6-a4895e11e3fa,1484587545,10794003172360016120
+24c39320-f867-0f6d-1a93-ce0ca596809c,2653812684,13405415840812815331
+54563f69-26e7-cdf6-c1f3-39ff9ee5942b,1248555570,2547843344564217451
+964271a9-5191-f21d-71d3-ae5a20ef1c9b,3060515584,14218073723724363900
+b4fa7474-ab49-f9fa-9377-4f449ca6552b,4200957251,2896649884526935846
+c68dfd50-dc40-8415-f1b9-b52fdad90122,3126586348,2114946459949399887
+01d320bc-ce31-5670-0828-253431d129a0,3175262577,2553114746664141520
+9a98ea2e-3b08-ae55-d058-ded2b341a31a,2220393136,4714210528756979827
+1f10273e-de09-2c35-5059-3b9ddb84aaea,1042890006,6699196321447243219
+cc0a1cd9-db43-7c6e-6ef9-e8ebc99f0fdb,2570387539,3315159048984194910
+745f5cb9-5b77-b9ec-a38b-37c8b585b0c1,3721510342,3834061406877365071
+871b2c8c-d48f-fb7e-e9c2-eeecced84c98,494626,10038738448162091084
+1bc92e8c-eb83-4b0f-0121-34ce6eaa6be5,1538059349,8655948165759679565
+32fbf690-9299-13ac-41c4-a85b5858add3,4082720922,9410875937903050075
+5ef32f16-5f97-f8f2-f213-0edf3debdbfe,2551508271,3086330553272512029
+d10300e2-456a-db91-8e30-065d6e9d5a1f,2904050192,13898082825550657097
+5c16f460-91fa-1c12-0d06-c266e441f390,131718490,17695102342170174297
+e5d357a2-afcf-8abc-7ce8-8cf143384aaf,1682731732,3275118368116286304
+04118f61-6c28-fda2-e0ff-f64994031b44,1821077172,17345428360487403626
+a8d0ad83-fcbe-b33d-c9f9-3d99f8b57f52,2392289365,13420820386770812090
+cff4e6b7-ddde-054c-05c4-a2584f578326,3399097238,4949666113136202548
+968c4068-2dd4-b6c5-58c9-7755180fe4c1,2953528588,18109954610511647139
+4419a04d-199b-f166-7b14-400b4ca0fc4f,1890366811,10046327824371902224
+b37497e8-5065-1689-343f-abe27543026a,3181623739,9705555962922007538
+102f7876-06b7-14f2-22ad-81c0edc31da9,1513732026,15869508566748562678
+25f38bfa-2285-e313-13b0-c8c236020bef,3055332664,4202693476694088507
+0a9e349a-3e31-37ee-bad7-4120e64b90ed,4127655450,10886200428803305991
+fbb0ccb4-984d-c81c-37fe-374f9606ed6d,2482731451,16949896211609015225
+44ae3d2b-b190-466e-ad2a-cb1bfe9f47d1,3601301347,14718605023673447494
+93e76242-d175-3d05-2d7b-4e0efaed3b5d,257605840,14304126654822392164
+0fa11573-b928-59e4-7a4b-df0406b36b09,3352864883,12666222675825971334
+1a2d5375-1ace-d599-5454-0aa33a7635a3,343501799,6335861563075860562
+0e8af31c-ebf6-7640-1049-c6d6817d101c,4137916259,1322096156266156958
+64a256f4-77a7-39bb-53ff-0d669fc1dad3,4224052286,9154793676729110885
+75c00942-c309-25c8-f8a7-3eac82324f81,4111541085,5128151917921966675
+d239c79a-02d5-c75b-a157-77187fe104ee,2796613315,2474611583467640753
+e856ce83-9f9a-254b-16c5-53c7606f4c4c,2416401747,1789565847337979104
+d6651e83-2ce7-45ea-0cb9-7e350fc2ebf0,2654619453,3466004858462338304
+fbf74bac-6046-38f5-f0ad-306e5462a241,2600094058,12306400263485146257
+91036f90-dcdb-fba3-f0c1-d2473e9a7b37,674767970,4480509181731913351
+a43661b0-36a8-ec0c-da81-4f0c50f02aa7,1000577202,11963678063246025055
+0f97ea76-3004-70e5-87cd-928ea0685610,3880347461,15607319566268187797
+0ea4ea30-d7f4-e063-6345-da7381edd570,811125577,13069375842724948358
+f94c7fe7-935f-7949-51d2-72c1775f708c,1849815653,16332330249169814737
+db9aebba-c16d-7dc1-f42e-6a9607ea01e2,3494059283,17875373584856472757
+061cf4ee-ffcb-1de3-df3e-6c1880f302e6,4225235234,1721343850682678684
+2579a0b0-fc6b-ab3e-b7af-42305f551938,732968012,1253692252713241190
+3eee52ed-c030-c283-8a24-cf26c37fb6e9,2055468887,2246799831230668614
+594f0084-2bca-f6df-6e55-1f6acc08d87e,3238641247,8909080839815373244
+bd2cf5d2-a8de-e303-4577-4ede038e0f04,2166370311,17473119601475543877
+be1cef61-fa5b-af3d-8406-057625f296ac,3025801056,15036372649886887999
+7bcd5e76-ed2a-e127-05a7-5deef270c9b5,246939056,11880991585266994778
+88f443bd-79db-83f4-2679-dfb16d945095,3005913535,6637733437123976224
+38b2c0c7-c893-13e4-959e-4a4bf75a7369,3747346981,3544760929969086028
+44367400-9f43-7e69-314d-0e6941640692,301603238,13119166773059761771
+302c99a6-4777-b214-3dca-7cabf801d705,1532999217,16994379818210232312
+f5587467-7cb3-e0f2-6d30-a0133b4d60de,2001503060,16653218298255453443
+d487211d-535a-fb62-248c-111c40d6233f,3782998922,818393412571333472
+43559036-297c-340c-a69a-cf78001bdaf0,2399612952,2107172594414287560
+288d6ca8-486b-fcf1-54de-b6d62053dbbc,1199426702,16064460301884654756
+690d3fd1-a4d4-a6a9-0716-e6f7f7b68945,546663917,13685742515930936715
+a36d036e-3418-05ce-2575-fd42a9a39efe,1472102601,14629810674438722851
+b47a1f39-0c5c-f99c-b2de-73b203456110,3868151896,4953053475922484115
+e68f3b5c-2622-4342-9463-3434e32c76e7,3498407269,12722331944641678556
+f9018be1-aeaf-7e95-eca8-1668f7350418,2406207553,2982445902978930561
+faae508f-f6da-f325-4e0e-2d75328d0444,2942883224,8599895021593782198
+eb9e0aed-150d-4a3d-d799-a8fe9db8e477,1550959551,59793621023530509
+0d6c82a8-85c5-6b76-13ea-2234bf7fdbd4,162677649,4225368210479356842
+ea9af5d1-d9de-9ccb-e2cf-40a6aa110249,559515367,13897630047055121848
+d5d8c49a-de1f-9e41-28de-e65283cc50da,2174956823,17687401321710365160
+dc80e57d-7148-81e5-c84a-13b513d669d1,21795673,7973642472995801609
+11e87690-09e1-58ee-53b7-f6f35eeada48,307617495,3568207823297426662
+13ab696e-3e45-ff54-d76e-93feb48df7c1,2703023980,905878682242707282
+b50900ad-2a3f-e96f-3bf5-8ae26236d807,1579511121,15748659936627041834
+ae01da78-2dbf-e97d-569a-24b14e12f9d0,1763455958,16472226533471638471
+168aedf1-5ac8-fef9-db92-2a79048cf258,1631725659,1318934837184503124
+c9f6d46d-ee9d-6cf3-577e-e681f3ab11cf,3097327767,15046907144167812006
+e39053ce-920b-2126-05e1-367d0e99c6ab,305568307,9248784112169971685
+b5ce1708-2a37-37a6-ae86-ff69aaed5a30,1133710165,7721342717740459915
+405694df-ae8e-1cc3-108e-7cba62d1edbd,2475426392,3857783143601064182
+3e33a3f5-ffa8-8a85-ee96-5c344edbdb22,582055492,15001435919137924854
+27a3a399-c74c-2ede-a9c1-b9cad9c690c5,1804340291,15474418322530929138
+dd92212a-7f86-d345-5e1b-de480e06d285,3621967023,17210630213556340050
+46e111a7-313d-042f-085e-7ea843e3c347,3790376817,11177835149206910323
+1ec7029c-ebf2-44cc-61a6-746f089818d3,364488068,7189218777454485408
+41eba41d-7778-c39e-382c-02ba47d0061b,1029872057,13995676065895745002
+d3843269-8b9b-8a02-385b-e7870cc1de23,2879450723,4214587943728544458
+65b80e18-ae76-f116-93a8-0c4317526c18,1609783783,15937481236411389886
+3e214a1d-5c33-c1df-02ed-4739df1e1a18,1295949460,9283349762745393107
+408eef76-48f6-ad8e-a192-70f2c29e73c2,2913871606,12201615468499007564
+1ccb8efe-ec2b-77cf-2670-a2c7e4504079,1610621730,4029115712906139255
+6c53b393-abfd-943e-cc37-65ac1ec24f85,1218781608,2471201845150818503
+7da46e5f-32b0-e057-2a54-9743e6e48884,1391886167,5253685084409220501
+1f6ce5b5-dbfe-6465-00b8-912ea083ddea,2294720585,9268339677877380414
+06ae3018-7984-c964-2cb2-95c044fbe88b,2958739628,9655414938376538559
+8310ede8-044a-525c-1899-8c1b81baab7a,2260862880,12477525382329009323
+41632f4c-52ca-82c7-a3ba-bc5cdc7b8d54,2643201660,1058006616606356142
+eec09373-8be1-f083-64fd-593327e9dcf8,3642024419,9792337453914590315
+02f9b04b-3bfd-0b5e-845b-2e6ab1c5f759,2402559934,15561466300150916543
+534ad190-cf2a-e6b2-46d5-3714c226d63d,79816791,15432947712259388116
+9d253727-cb7f-a7b1-f646-abd03f44a37f,59837520,11472789010351101988
+dde5fcfc-0453-0c6c-d84c-5e15e4c22ea3,668633049,8115333230841024287
+12754e48-57bf-be13-3948-8fcef031c10f,435495124,11630043091055166848
+20127e93-6544-86fd-d8aa-94dc12c66bef,2409924390,8659351806901738458
+acf31dea-d9d8-d959-b0cb-f8add02f1f66,1663863542,11390677876026294490
+68d9a0a3-664c-5d65-9bcc-96a9d976b9a4,2650970937,989612137133749602
+86ccb1e4-e44a-78db-e7a5-6bcef69b98f1,691454180,2877300106130657505
+4e425f33-eeb5-18c6-9e30-181710fa7d63,1032174596,1521288120241926314
+3beb4b28-8f1b-3ddd-8edc-6a68cee37bd5,914105075,1695878396418383921
+e1565588-0649-7ec2-2913-a676cd8dbbb6,3291436228,6672362620653945662
+a1db5196-747c-45ae-7a89-da05fe548e64,2498054002,7759205284281729896
+9576d3af-aae5-2f52-822c-4d5d5aecbd09,2001114248,17871513135153048453
+816ea313-661a-c79e-c6ad-00429a1b4310,386361556,3010243821421214442
+48d91166-266e-8180-5be6-57ac3ecc1499,1880852167,3853368124209903042
+66603ca4-a47c-d65f-270a-2208681abe0d,4087388388,13618783143766100920
+6b1bb6bf-7d38-e510-c129-05ecf6218c77,361889760,11358228618095177983
+e9aa431c-4893-3268-6186-ed4b4082971e,2138193571,884342335444839904
+cca491f9-308e-5c09-6f0d-50138f7941e2,1310746176,4429348484577396242
+8621308f-9e08-7035-fa25-9f446ab45ef0,628836619,11577293405859806128
+6c39d931-2163-40cc-a9bd-55fd18493456,3995501351,2106385134595978687
+c3ffc9c4-50e7-4bb9-c513-6d7abc1cb58f,3893807603,9272467337507182846
+5d7439a8-53a2-4210-da19-22790072a054,2752047964,11628117319141459113
+4c00abf8-b523-c815-5228-593838aa3412,2828134636,9751183390877924705
+af6b999d-6cde-8461-54af-8115e220bc1e,3552571903,6526182066359974014
+7f9a3b68-2459-422a-624b-3fecc1541ddc,4043668855,16175280883995204265
+96509265-a3bf-5eb1-6c5c-d0b19a3a3322,2272442390,4404596509991483565
+3c55443a-ccb3-45e5-f86e-ff4ed6017efb,4094204126,9632401331973734260
+755d7d27-b432-8553-cca8-e4146d6181bd,251061358,8193831930441429280
+c33fd9c7-7ac5-9512-322b-088d6cec22a5,3145400627,14526081058585398047
+619e3121-72cf-818b-c7d4-330436387c0e,751880011,3415101107003573253
+8261a647-a351-6f6c-b9b7-15998ed5aefa,465127888,14810416000798389143
+a40b3240-4607-07b9-c8bf-1f9e3975eb9b,1485465933,3873313395493303584
+4f87579d-ed73-8b59-074a-2b6f48b2b07b,2752207566,7744142418246702107
+abe3f34f-8d8c-73fb-0b12-99fa2e5644dd,4088316910,9112427671597233253
+1a2ca0ba-a301-2899-d918-5e8b8ab7e862,315984290,17917531168275728150
+07334b60-98b4-eed3-fdb2-6ea1926d5ddb,868988235,17536121093294623141
+f12d8f64-ffba-e62c-5107-f2930c7cde4e,195568906,13659383183479614488
+c09bbaa6-2e57-7f2e-f382-1d99aed64fe1,2201540074,8228530120077572740
+da0e7d96-f2bf-621b-d636-657cf2fd89e4,3624906094,2964723519067803551
+43c1f33b-f0e8-7713-d5cb-0f4cf4bea3ab,1088676705,3002249965272491621
+ddfdc19b-4523-379c-8a55-86536d58ddfd,3953639629,10416339918771042941
+3c57e9d8-30c2-d786-510d-47df3f998627,1416596324,3334003024438439775
+61238628-098c-5af8-ad4f-38e3c97aba96,1838589309,17911518851926131038
+56f41cc0-93af-57d6-cf8a-84f92d006f97,4198070306,13889602659167991661
+2f3fa28d-bfc2-cbc7-a726-18c73c94bd7d,2003866093,10479990380306881778
+efef78e1-3648-53dc-3a0d-774ce602865f,1223811331,3523735638122679272
+062aa12b-9266-d7ad-0070-e6c0a8dcd00e,2240499566,15404531620114594510
+41b07de2-9871-a4dd-edf1-121c92f6e5d2,779204404,15513569988874760935
+092f8952-e5a0-3997-02a1-89f87fd348d0,854043757,9043983556479542624
+ff1bdfb5-f61f-581a-2591-4fd2ff32eefd,939713075,6982174800978856029
+3f54ce24-339e-694a-c76b-616109384c76,1291577254,1333864902486474893
+b6ce4272-5e61-fe0d-d926-2ddfa38fc431,2772758636,7341520494776633801
+8eef9eed-2543-4001-256d-f46399b4c1df,3270380145,14935033584158292825
+4f195ca7-acf3-7cc5-4c73-5fc67398e3bf,1797372968,16135877893986166491
+3946305b-ccb0-4d6e-6992-c69d106c075e,1569439229,9682565765269995345
+13504b93-0c8e-57bc-7811-0ded9f16a992,4050243111,5471824016084058318
+2c449baa-cb2e-1d51-2b11-a90e7dc588de,358233687,15510006220152775869
+b59f8774-9729-5ed9-33ad-8ffb15bff85b,2791535063,51026090316529525
+81a7a751-45d6-1657-b097-12d6e5767d53,3993943399,18267557212683109325
+3550b575-2f95-1ee3-561e-5458a0eb5264,1242868541,7164410732774444689
+f1b2942e-754c-0695-9941-c94b5416b367,3073061540,10210866383849570881
+57420940-ce55-0922-bdab-39e3841866c3,741140325,12993757437327824641
+77a5db48-8984-f49b-f143-9fb8c5d3224c,3569859876,13084822174712838117
+4b39cefa-8e41-5666-8d26-b7bb79390e86,922100978,947733754612387864
+1d8ad83f-0fbc-0163-f8c6-390830acd1e4,2289392677,18433527884499128577
+9c626b8f-9dbd-81d4-dffe-c36e65438fc0,3465783532,10139264060282627201
+c432a869-24fd-492d-3ab6-b1da9952d359,1036413127,1905019794265537579
+eee8d8e3-4891-194d-a4db-2338566856dc,3793027238,497259791794729208
+b1376c7e-ebea-aeb9-016e-f518bdf35b98,1856514882,4459261408462001232
+8aa09b24-8472-b3ff-5bca-84f132ec4e38,2555735629,1148634606782538996
+e713daf3-1f93-7270-2b6f-be8c1e1013a1,1767586680,16083440178784538838
+e88642e9-05d4-6c25-73b0-50bf8982dd44,2753677921,512317594399148381
+973698d9-be67-ea41-93e8-409039850ebc,1153429396,7966083903632513653
+e5adff79-82e7-6059-2905-06efa4d062b7,2908956062,11547720878390936802
+dfc3e2d1-f979-faf6-06f4-115f69ffcb43,661718201,17032281342246089117
+37e31c08-73cb-0043-49d3-22fcb5a7f3c7,1127870065,10761299757302165645
+5f102964-599f-e46e-2778-1a8835aba2bf,327851279,14332613758072428073
+a4046564-94c6-a525-ca60-c2c75bf83cd8,279060723,17815977582869170438
+bd52d325-b3e6-61a0-cf24-f1640a2a899c,2819698998,13905915628635648968
+03747a68-18e9-436a-71d7-25062bf0a183,2937605872,16354106550956798215
+09a07e99-89c9-5a50-96bb-01daa0ebebe8,1780508716,15527744810945349733
+db5f6c25-3b5d-8033-3b6e-105dd18d8b78,4079527951,8737061074863910156
+3c49b5bf-bdf5-d89a-500b-80e765b00925,3688195194,3452364663681777976
+75ddd8d0-bb16-4ce6-b892-4359367f8db8,433502238,6063253375217444583
+6c0162e0-8f59-98a4-6e6d-eb0c51403248,4013552902,13976240841686675994
+105d370e-2276-a3e5-409e-1a750e4cee67,873937579,18086199349947792080
+2c28cbde-a0f8-bc26-1098-17f5c40d5dba,3592430208,8136174853792794130
+3ef41d33-1d85-8923-acb9-a96c18a6f9d6,315382277,5406781423660838568
+00ebcf79-0613-a683-edad-cd94f076e01e,3134395941,16454778584308293317
+1ad2992a-088c-fb86-d338-5245f8f28d77,1647608648,16869276838549774244
+36dfd70c-90e0-34fb-508b-7d0b98f7af68,2539433201,10316256896390023073
+7a4d7fc7-14af-f958-74c4-a77da4ce5716,3406671227,3194608112804244688
+de8cac49-049a-9cca-49de-a36146314090,2191740684,3236724666524601384
+75858195-d4e3-b5c2-7959-463d0d684f95,4009365019,12675419956960007655
+1acce82d-9da1-1f8d-d058-a7402f3e4718,4268206038,2553624137882747777
+918f35d8-e9b4-a2e5-45cf-caf62b13e02f,461774049,9830210368906351789
+c58c7cb7-4f5e-145d-1c61-0bca846ea2fc,3282209414,13298464082009553723
+dd5fa687-22c4-aa70-5f10-867839e27e7b,2827347065,5253241513578318334
+db167e49-e39b-d075-1216-a544cfcc6f61,4270626674,14804313120908600596
+40fc987f-9117-09c3-6026-e7962de8c2bc,722284015,16876042358711166552
+348c4c7c-20e2-87a9-70ea-2490c4f9c738,1729858944,15105835301634521770
+123062f3-b351-fe18-1dce-5b6dd308b7c7,1516589746,9896868803088564113
+c9601ab4-8f3f-f459-89c3-c1325a5ccdd8,1623700179,15505376990703134869
+05d218b2-1856-7eb1-6e45-ad32ef5a5483,2745860686,1078792153393488059
+16d3a6e5-c454-4558-592e-900fedfcedb3,974740653,16087194188308194741
+9faae06d-6b6c-9e71-605a-0b8047eb05be,3257036778,7315212366767602105
+75fb75ac-3bbb-43dd-1e23-a4504a34a403,2241976674,8155663248955438485
+30ea2ef2-fa80-edb4-608a-d6db3a339918,4294515025,13299571815706458169
+21abbb5e-28cd-8d77-1296-f55341448300,679856604,15141582811162879302
+8fc868d4-db32-47d7-14c1-27a3a48d12cf,4062208126,8451989761715459025
+0488a67f-3611-71a1-c35d-b70ec90d6cfa,3071955699,7490620712790754590
+0bfe8558-45a6-add6-5b69-9054e4813fb8,2004980805,2788763497365764200
+3394d17c-198a-6565-3a9c-8d4dd69c39be,286328762,17122789363343839733
+c02f3518-2cad-8b88-0d39-34950c12bd1c,161399994,11250637823753373822
+fe2f27f5-51dd-dc5a-681e-50a2e9bbdfb2,2099451030,16605173522663332264
+b39b9104-1d78-a2cd-b7af-935cb7a5bbfe,1338961532,5248012732106535685
+58d02455-d0b3-f04b-96b6-ba03ffb33e6b,464042512,13979290311304167811
+3729601f-dbf3-3cdd-8421-d87d5dca5041,435657393,17205109648407265141
+590a473f-fbcc-7e94-59d9-c78d0cfd00ac,1421797515,3523956707816409556
+781b447f-0f7e-deb9-2b5d-10533e2a0a71,22677315,4859913863064548504
+b1bc0ad9-a762-6b2a-04ba-a4eacc563d1b,1260528067,13289918030006800002
+a8e478ab-fc10-46de-34cf-b53c4c9e575e,3185851810,4430723465060265256
+dc8f99bd-e375-3c2e-7cf0-77b8104cd546,4130141351,10616303523329158714
+33f0b54a-28da-cd85-8afe-8333268daf49,1969185107,11767189196857606785
+3f4a30cd-a993-5bfb-e940-49a2a5a2ce43,3117247723,8167258020820120308
+66be95dd-73c7-18df-957e-d3a9080887f0,775327900,10931673546292012911
+7dd19cd2-ad47-813e-dc2d-1403cd05f01a,1334395869,6061973424372550848
+4b4be34d-6304-db63-4518-6dfe7cb08f92,1414500219,10619162264366928815
+d784a21a-d32c-1abd-444e-e92fc71f69f9,1989718087,324544720041629704
+b14f1579-ac0b-1def-5e1f-7927bb32d584,1368799107,2417519407582700371
+4ae25f75-5989-5698-c4f6-fd438624ddfe,717623893,5377952426269670216
+96ef8229-32b1-57bf-1093-6170a26f7532,2269953296,3708749455126873520
+8f0ca9ce-32f1-589a-d111-8b655681673d,3335195669,18194036695111507113
+390e481e-ff78-48c4-ef5b-68169b99b530,4224726462,2796041954777158129
+62859ae8-b0bc-644d-88d0-3ab03e1e3dee,3786028747,11842811318029910609
+e11768e9-9b76-077d-00c3-f655ac0586e5,2303736405,10510724556130875128
+bb65c186-1660-0c80-6841-3c6624463686,1082780037,8833766958774896797
+87817c1d-c86f-6d7d-384f-a44f8a8a0ce3,1325527717,12466438339593165097
+f266cca5-0cf3-84ec-28c5-ae962adb4a57,2456505431,17860168905823713232
+148a2bbb-4e82-e270-2938-595ab577c738,603130376,4123391599971844643
+2aba20c1-d3d8-b0a1-0a6d-ae26ba1383be,3165148637,5133888463418646421
+738ac3d1-39b3-ac74-2a21-3536e9caa255,936669393,156191274943511857
+69c5a65f-75e2-07c0-307b-ca8fbf9384be,193995262,11746886047813693853
+71929099-ac73-0613-939f-8a0e234cb89f,840698054,9828016603313036612
+ffa0df87-dc77-67e7-79da-67bdaa2e60ee,668665314,2279630524709730694
+37551f4c-8168-1bbc-ea17-b30177224ea0,3031831240,5397311198483437620
+43d15eb9-1f0a-eaf2-d1df-e8e7bc0ff9df,3614486636,8389543123631532557
+a82ba3f8-bb4b-bf58-e981-85c4ba320900,3897690939,4571298417077333636
+27abe043-4f18-ba6c-c811-70c416c80fcd,1684305961,8122878179380552388
+bef03603-cc45-d330-a3a5-45b9f8226f5a,2509673356,14026473998869206625
+7e22df17-506d-7560-e87e-34f625a1c953,133962025,1825006523521918113
+ec484613-52b3-44dd-2d0b-f3e3217404eb,2715022249,4110722260350989052
+d1ec503c-6097-9dd5-29c8-e59c4700796d,130307410,11116557284132584186
+3c755886-0a28-2819-ccb9-df84aad0f96d,3888336438,15423379384758876769
+153070f1-ea07-8016-008e-2c58df3ebdf5,3686238890,12443847628691395746
+d99e8d33-61d1-7fa6-18ae-5b5a14dc335f,883784038,12142715236917514915
+8c9e1b0b-c9f1-023c-be83-d3f03ac5a86c,2601143573,5938032219429981578
+fc7ed5d5-db22-761d-3bbe-f1b20ccbc414,339521979,9321388121120643980
+88992c4d-2d64-57d6-3c7d-4ed4673d026b,2745055226,17790648035637426363
+b24d2f19-b6ff-1d5d-771e-db5e9c73d5df,1410534232,16434288630475710114
+61040448-81d8-a716-75a1-f487f8848eb6,1067774438,7506353874464774772
+2bbb6c6c-53ee-bc78-5d4b-6ac6b7a3673e,1561002458,3245601074035067260
+04062624-b4e7-89fa-9596-70132704fc36,844379753,6651255774526532148
+34025504-6ecb-8c19-f236-2b5212c75523,3114954179,4256833580963560073
+3bf6766e-f209-8907-d162-101b798d95d7,3347243914,10102730643932463346
+e73c8ecd-76c1-b252-599a-c26edb42b8e6,585603379,10294636709134028346
+f411879d-3818-85ac-7f97-96883b581e2c,1847877736,18133950937118666184
+e20c47bd-39d8-3ed5-d2f2-f8359a36bbd4,1953926155,12423324291291367724
+ab049872-06c0-4b91-efc8-e666559ccc17,3164926340,10671739405140040880
+a7cd71f7-858c-d414-223b-4eda7636e80b,3781552845,11990518189739803658
+eee5113d-242f-ff01-c48f-7a4d9abd0690,545718213,5426868738935716237
+79e8361e-9c5c-85e2-79f0-2f7528ae3480,2835233308,5424342818020948052
+25347dee-8a85-e301-e7e6-3511cfa92c3c,1422956946,12412103124944327941
+77834c12-6834-1552-2896-ff4027481f72,2531153961,725889227962846980
+59df257d-4ad9-bb16-9e03-4280cf7f4431,281427855,326745823447930660
+3c8893cc-92bc-3c63-0fbb-dbdd25d7f236,2196431440,3719194983727840057
+7cac7a74-607e-84ff-a4a5-78361352b96a,351264551,18365647572326214621
+1fc1eab5-6dee-ed38-b28d-99b0cfd2df81,4139075954,14331151024622302546
+67b9a541-4bb3-4204-c887-980381f6da50,1051155273,13366885827902999912
+19d8b225-d364-9d4a-3404-8881f315b3b9,4252255551,11023201974526353796
+62493884-cb76-7847-bbb6-d79702815ac0,1555047044,13292623177863457504
+799f43b4-297e-e298-6d4d-44f3b3418efc,570815084,9570917418615999922
+9a219b02-9f81-5e6a-9237-8f88863dd500,3901978157,5055919966337601497
+b8f7f201-9283-0565-2fd4-59983883c9ca,1296276974,81079334596893678
+00607d29-fa31-036a-5193-81f5252bf6de,4217605942,8773152997653499562
+3dddf61c-d255-d930-f56f-601dbfc9d307,3214764230,4862133008500319603
+6a7646ad-e6c0-cdef-ee81-4d053b1df581,3505297019,17577342407434414408
+f30ea642-5aae-737c-3fe4-b8c91122c9df,871840160,3494448380530580371
+ae676869-4a7a-ae29-020a-bd90c381b371,1670524860,14257552899724974134
+ec9cd177-d479-0255-cf40-70da39e139a1,2233300522,2504937580258258200
+2f8dfdbd-9852-3b5e-4df1-ee3647134d14,336199248,18004596295739727998
+26c6b80f-6ffc-9a89-e253-3baf86717ddd,643352419,15004538050410037609
+defa6d4a-aa88-9056-0ceb-b891731a781e,1794814871,185790871399442469
+e458924b-4d61-2d72-62a9-5de1e758d37c,2909937561,4960756438228520961
+ee53fecd-c074-4a65-7958-af7cf6338f5c,3418277426,11534051605799195373
+eb166d82-46c3-4315-caa1-0c54448e2c5f,2922101658,1965976311653979680
+f2a179a7-9e6a-1026-25ec-84bf70f2c491,3898571073,2587169623883596524
+c6eddb25-4405-46b3-039b-9806c3cb099c,1711425278,8985450005049824311
+0d12ee15-6280-6224-eea9-bd400bcaa6a1,2861261522,9739946181671637426
+9cc5d718-6361-0676-5f48-f13600cd586c,3778999978,5641002370119522242
+abfa2264-e3f6-8445-1f42-1bd479fa5ce9,689889942,15297306993202528598
+afa1d30c-4f8e-cbb6-8067-b8131eda6d99,1912622959,18035148356610995053
+f5f7d544-c19f-0351-6c89-d3f4c87d4df0,982992680,6983753137945707227
+02c72c54-b64d-93e8-3f02-eb880cbde365,4275331758,1375544308588688494
+c8c19102-ea35-951c-db8a-71c89f9c17fc,664522756,14907896730057634154
+a4dca5a4-d22e-83b1-b452-917b59149a24,809230006,11146582198615817339
+65b0269c-e9f0-d170-86ad-8398eb95d10d,145871648,12500655759771248915
+4d78d26b-27df-567d-ebed-d2e38dc0ba2f,3408430291,15362894204609581782
+6aaa8edf-ff19-a3af-a141-d1b6c5b040e9,759671820,3087020380889237512
+b27fd9bd-c870-494a-52ec-164aca1b37bc,1481875283,14086769081712898402
+63ac64eb-4458-d38f-6982-e672ea15a854,2309071086,4728041595674640567
+6b208b97-0bfd-bf84-0cd5-3fb8a299f034,2310324512,1475311022037410965
+dd01b30c-082f-2ad4-093b-b7f302a7cf45,2783392502,129847746391834663
+f2e069e7-62ac-4375-faf3-615b5a11e67a,4207616847,3959663250991814053
+f4b27715-1410-3c66-a229-85d372c17049,3038822169,10583627562882989358
+90f821ab-5dda-5b59-6bb9-7303279b74b7,1607778979,2407362484705586850
+ad808b03-4d1d-5953-cc7c-4fa7bbc07e9e,1712632827,10863523952534098551
+7623dc22-b781-acd0-799c-866bf81ec270,102561344,3888050425827739198
+3d8b0079-218c-bcb9-48af-cb5ba9eff0b6,2471039207,1734165850162862127
+f858527b-b68b-7446-8716-a0963a6c4f85,1599700082,15360747023667121824
+ab6fbabe-7eeb-b178-f20f-af83cbac428b,2175160519,11763386402538156474
+32628259-1a26-c801-f802-f0437de4d879,3228752298,1465410199006767581
+096f57e5-44e6-fece-25b9-6c686ea9bc8e,671145514,1074877815350935307
+c25e72ce-1115-3f1f-b8fc-714cf86bbd96,3987675807,6830768421725992729
+eb6c585d-be0e-02b0-41fe-64f5de164b50,617002310,2011910450064930734
+85323c1d-0729-7200-2ee6-31107676b2e8,404077460,7335356295451898229
+ae6cc4f7-459e-b238-2dc9-b722e014ac50,2495767021,182486483198262106
+e490c7b1-9bcf-a218-ac1d-e30db455c2a2,965557459,5245017272405183634
+64111317-bd6f-960c-69c9-e4af2b763096,474738318,2203688720081311042
+c3b9e2f5-a1e3-3f17-233e-af8720e35a66,3692639316,10504123325882805567
+ab638295-2ad8-f9d1-a047-f8cd9e4e9f17,4066233904,2055669198914285867
+93d62f44-e8c7-23f6-dad2-89b3db717811,4002244793,13069054899965037259
+c1101942-e7d0-06c7-0ec7-8967ed9fac0c,4269924165,6126227217814624384
+681f8812-3ad5-51f3-8fc7-0d8404890e49,3449604819,12945619382990370920
+10395d32-c47a-a2d9-6a7e-33b24b7e18d5,1181681725,9905854152741838234
+38b0da7e-4464-9a16-dcc8-496ef7444d3f,2053210767,6783860375210562048
+25a4c431-c0c8-2543-3586-9e61659b0505,2931158388,11818825889546855579
+6bfc610d-924b-7dc9-7330-6f12f70d6751,2814116079,3478899634105836094
+83013554-3ac4-2266-e707-85f17d006f18,355754293,17697529186245904754
+e650920f-3701-81e7-a462-8a5d0c110efe,1637367479,15307825538113194863
+b5856c60-6ea1-80a4-8d49-65d115c5bbdc,547987099,12093693588693092295
+44ebab35-215e-b717-771b-30e53afc4f46,1985413495,14885875169040439928
+7a03b4f4-ed69-6ca9-70b3-4ee65b421c4d,4059318100,1182169115801919934
+9bf7a5fd-feaa-1383-ce68-53f079c1608f,4016732189,16493911219524667028
+8f39607b-c59e-c92f-1bef-5f9f6957aab6,2527076751,12411590125674856769
+849d3f54-0fef-5cb1-0d6f-f34013c020f7,3735705985,15186748873622389257
+8da03cb3-ab68-141c-3a4a-1928ac4ade99,584968583,3611204724148138610
+7845b6a8-fbd2-8af4-98c6-ec2b5a4a15b9,187509349,5911674809515881497
+ae106cba-a5fa-986b-c551-ae1f8d0bc703,875485200,2103953145212595170
+f756f934-57d1-7be5-68dd-e538cea64d2e,3321640235,14490473381004298350
+2f4cb0d1-3b32-5240-bf9b-a092e95e4ab1,3616209210,9993550994055182971
+f3819ae6-2ba4-8e99-40ea-b3679293b3d6,2050535674,5364428685048308955
+68be707d-ce01-b537-ab1f-171bdeadbf48,3212376802,14294722533846455895
+14c0e4b9-5ab6-c0a2-31b5-d1ba46a39e91,3136261260,13744673177294620765
+b8d7b7d8-b018-77cc-a45f-809156db1ef3,2306808908,7399027048432508656
+296b6612-d9bd-7d49-ca38-0a037eb6d760,2326680964,7811547802771552364
+4700a476-b7dc-0f1a-b65b-5ac06f1609f1,2479724576,14202089800651609361
+6cf56260-6339-e32b-fcc8-74ea71397473,434247672,14520191624356220427
+b4b3d131-f4ab-fc19-2a04-1312a75d8897,2052893768,15656344140619537020
+2c40344a-5b5a-038d-49e6-2b118282e708,21476924,8396457002812196234
+8a39bbd2-04bc-2e7b-24a8-a54f05e850ae,2149773475,10215318438667203552
+e0d2dde6-d68d-8647-40f0-9e249746a356,947426542,11138011781272623103
+aacbad44-66d4-95e3-686c-777927968d61,2815648954,3580254768800641464
+32feae59-30a8-dfe1-25ba-7fd09303f4b1,4086703267,14235996208322486899
+67cb905c-1c35-2e99-6efa-631b97e181f4,3390764498,5665656868576364248
+aad4ae45-f00b-7f02-8964-2e0bcd27a010,3489293110,11004508972709602204
+9416b8df-fac8-60dd-7d18-6b9d900c23a9,3665387901,12384258271444010366
+88058f81-996c-57c2-209f-ea46bc31c608,197785873,2499408552916258214
+8009546b-23a2-d79f-50ea-d8d71f794a63,1727755666,11491461357978652663
+6f144a58-c5c8-ff0f-6928-0f94874e60cc,1646374170,3964561479862678164
+1ba1781b-424d-274e-57b6-0946dfe79487,3610613693,10452609945960468058
+8167e820-d43c-4f7b-a255-9964273b0d31,3893479005,7724785373566137643
+c7c42385-e12f-d3f5-b364-6ea8293ffb61,4081800662,1467891533449460355
+916fd2af-1c3a-4cbb-283d-7d826e510bc1,603230771,2879789768701340300
+b5c4c0fc-e216-c721-6f84-7771df2effd6,153237694,12397172028394310329
+a34ec046-bc4e-4fef-d80d-8db9f6c93f44,1360796007,15645866598580971507
+47148ea4-88eb-0302-88d7-d5feb9a7adee,3838083960,13777148267988526094
+e3d660fc-5aa5-73ed-1d06-29f068d06ce9,3668279320,2688599593547842386
+0bfa26c7-5b32-b0c5-5a06-4b457afaf508,776255465,17836432992993248548
+c08db7ad-0e9b-f7b1-6c37-5b3b9f7b317a,842156986,13134299248742465073
+89be82d1-9eed-3d6b-6a3d-770d35b8fb38,3220826703,13270240108703680590
+82ff36ff-ac57-e56e-1758-c5d294f3723c,2197746590,8889573196770010262
+946418c1-4011-30a6-496f-8439ca748490,4076339373,3611641407398571120
+5f2488dd-a52b-e818-2ad8-1caa73e7ce41,1203873462,5489296650585005004
+e3bf4758-b51c-9ffe-fbe6-72991b46990f,2657344222,17009131941746431307
+5c4452d4-3b2e-1136-025d-490eb75c7e81,3092004509,7006688276540055515
+c1982a7f-edb7-112e-a151-a40650ed6724,3133827910,15285973552097472745
+fe788d8c-c0fe-9dbb-a5c2-423065250b72,902033534,3574215823881578027
+814cb814-cd89-10b8-6ab8-370ba0d7abb2,854787520,11865907239932359203
+84f4ad2e-58d6-6b20-7be6-8cfb5650a85a,1140365933,16762958535085342422
+ddd8fc7d-0510-a64d-c80e-8bb94d8832a2,1341565478,4880547508769713977
+c304b0d6-f480-b64e-2abf-1e8dd74a10cd,956427211,5983433087935794730
+5051bc76-ff56-49ad-6aab-c0533f05e8c9,2873866939,10983920481705576239
+d50b4cd3-e7a3-2779-29cc-8539ea4a4358,1481307149,16697381856146542341
+efdf15d8-f956-d79f-b8d2-640074f11e3a,647291252,6458862930945589071
+d1c585c4-e63c-7db1-3401-4c240e66e8a1,1889941879,13210122049272313780
+18504533-36e9-7b14-0274-b7f1aa8626c3,3952317616,14494871112451508125
+935d7b5c-7c3b-e4fc-d1da-6f87241c9a5e,2969247725,13231767463638160784
+f44fcc32-0fce-770c-7f12-89d6f2d33c1e,2510738055,11279446503613247682
+93daea7a-6db2-e06f-4607-23130c355b1e,1159465247,5444951933210867719
+626c7eb6-1de7-12c4-1b14-791e4a05ade3,650103115,94778399433580737
+f3cf5f36-dab3-eeab-61b7-ffdab661bfb1,1391782169,9988048739741128636
+6eafd41d-e293-fcf3-2c37-20780b98a69f,4104134016,10931380230261533240
+23e15f1f-ded8-e598-ee0a-1b825bd31c81,2339458287,8413072809742088769
+b3d08b80-202b-eb92-ac19-830bc9bef624,3808729284,16022346760275447149
+060581b4-019a-5884-963b-fd424b2afeac,3210642885,17554645685346420320
+696fd84d-4deb-0de1-fdd8-e4f75cdfe8c4,583087947,1002502961986495859
+41dd018c-16b3-5eec-8adf-3c213136a815,258396462,3545670513327942840
+06b04156-132c-1c01-7d1c-6549eea2c33e,2496513356,17364702914900759095
+29a79f58-66f4-5b51-47ec-ca6877330e50,3611202128,14699886151595988939
+f7b1a71f-9b15-4582-e568-ce7bbb97e359,271548635,5645897273724868029
+ca82a211-8552-4733-e296-49da876a7337,1308994699,17006958748886016656
+b3732c8c-fb1f-8427-8561-8f153b048559,358249329,4497974701591696119
+98a947d9-10e6-6428-cfbd-cba8d0df8213,752997539,2559844746786091346
+b82c55df-ac4b-a397-52f2-f7ab43a34de5,3865807413,9677589673007086644
+a0753407-9ff2-9e2f-a6f8-7299dfea3678,3164554024,3370070732019513232
+ef8ec663-36fc-759b-5009-7ea9ac4616e4,920452263,13384705552749077549
+c302960c-30fb-1736-f484-2b2061dd426f,3886048869,8060533841785978749
+e9db0814-373c-9244-91d7-788bc89d957b,1306285500,9102379202521729541
+55e018a4-abef-418b-41af-b0af917ba773,1615309121,131276102305208233
+8ed48c7b-ecaf-eeef-ec49-ff4ec3943945,991115071,15521127297958927626
+fcf66f4d-33fa-efac-f28a-2b1c2c0656db,1695474945,10717604936789960321
+95190dbc-8641-4301-14d7-f14742dd0f9b,572145735,11229841403133503994
+b22b6484-d046-a3c9-13e3-03ca1532568a,1181815105,15496554243276688693
+c64d7ed1-bee4-bbc0-3bfb-50ad83a9ee8f,3573712460,11187929641495551667
+c825fcb6-c630-2377-08c3-ee41752b2c91,1247859660,3931239518441893979
+ff164302-ef97-c861-04b7-bee6c3b5f046,750342067,5760488058229671066
+3b694dbf-ae8d-473d-59ca-f1cafcda05c0,2430214049,16918012129725744666
+57fef795-1646-88f4-7ff3-dd933964adcb,2220271946,1149658170529622759
+ad3bcd24-d8e4-c9b6-1282-8ccfcbdf1b6c,2462060021,16955476614121253207
+ea7b55db-c8c9-0455-53c9-9dd8323f28e9,2342553091,2355988502071851855
+911a7318-3445-2397-9659-8dfc9d0b4f2c,2957348276,640273067844691046
+faa47719-7b10-1e9e-1843-6d499cff8e91,391995771,9563311756774572717
+5bed5fce-da6a-a066-78a7-5fcba9b35451,2740970053,3106114102458453079
+a0dfaed3-a629-7a27-7ee3-56db47a67bff,3091435471,15892202334190203232
+f2102bed-9dd9-9df6-7709-30a9f83b8917,3966926744,10518944161244879280
+f397ed31-1bc2-4f9f-4317-ebc77e625699,3793467485,8274324231170230529
+48f368d8-ecc5-bcf5-c142-7877ae9edd03,1747694343,918500134504505591
+5a4238d5-e161-a73e-f72d-cdf920ef1acd,1604917096,13591429675135124355
+d3159764-8147-de92-bfaa-a561591d1fdd,2783801179,1527482526480391711
+9f34f444-05b5-a0e6-a7fc-7fa660a75520,2131068916,6256213921337755172
+d452b4df-1726-c0b0-dec2-4e0a21d7e71d,78552231,17280922937706347640
+c37e8de5-9e96-a73c-b929-6a2fb961dc1d,2877074129,5146627915243132506
+bed9937e-c9ba-07f5-946b-10f386333008,1382508113,2199601090956300430
+8edac3f5-504d-8f3a-5125-d0fd99032c70,1146731816,16649967241121555462
+12ce8c85-0297-8c33-44cd-b9d06436c123,2428750158,4373319780733343725
+2978edc0-5fc3-f15c-2538-7dc3f81924e8,2767237255,531195016226489759
+ecbd150d-0605-76da-2c4d-c1cce9932ba6,2534222369,17046326034943082725
+1908e931-3303-a5b2-cf20-80ac6edf7bfa,280314984,5082540335445702741
+f07cca75-e6e6-3d35-1d8e-ced37e1c285b,3055288071,8397961832005234240
+0a2e64c4-c191-6217-9953-e00aefd676da,1298643565,1901453694956165270
+4f1c74a3-0bc2-236a-1e46-05a9bb60f188,3452435435,5217124660291267741
+f7956e90-97d0-eb9f-f2f7-91d0251f385c,333304019,1682402553154117952
+8eff8cba-8cae-ab73-77db-f6548723f5f0,1599385384,3425007500868968468
+9596f3c4-8a06-0c30-12c1-427ab1b1549b,2301183423,5782454827910479674
+bbbee277-a169-aebc-cd49-c551f86e7874,2361854135,10810635139657442659
+6d1d9794-05f3-05f7-4496-83088d57a4d8,3341637230,7781240555231277306
+3193cb96-bcb9-7b92-1656-0b483983bfc3,3275533201,13170991278377323585
+0c04898c-d524-d90e-bc8e-0805002cc6b3,327590558,17896972753647328598
+3709b195-62fc-0487-4a92-e1c8c3354c73,1659173613,5185031236108422162
+ec612509-8357-6cc9-ce88-c01c3f67f1a4,3408713900,710233761938944882
+a07a6766-f09a-58ef-b46b-3e47f48332b1,2521762203,2108608028987052586
+98aa73e5-7945-4261-6021-fd1918a853ed,1784722021,1057505046615618100
+437b6914-9cbf-7671-82ce-d715103917b4,431983161,6202817001860429020
+9b4a491c-b754-5cd4-760f-38d831479f8a,4148588925,7057359446630159802
+7b2a21b0-74b8-f58b-89dc-2d28f691e531,3266341987,7534211980475227976
+394114cf-ae59-d74f-eed7-48a2e5c011d9,1916478784,10845863310546472447
+ab34d7b0-8cb5-78b4-3479-aea8cdf646c4,2570758068,12678274055064878588
+949bd174-7db3-cd30-7ecb-246675cfeb38,4028122177,10203288604384220356
+443e6880-1a80-9fc0-b47a-9164d24481c3,2453934102,15331531961854829517
+8d68a9d0-3ba6-258b-b9f3-a0d22b1218b6,1448669076,16465659043617544561
+84610d07-8d93-e621-a3f2-65f31df747f0,3255295804,11550030654597801934
+7b8664e4-2366-fe00-09df-f18ea721437f,3550006869,15100617893819750723
+76fc3a7e-cd1f-d63d-818b-0dccfd512677,3483109567,9033160419139022152
+f353d945-1d4a-2b88-6052-f7649f78d804,4070522524,18118538373623913020
+f0e004b4-ba8a-a927-1cea-0e927c5dab78,616733738,8401179335577551596
+3e0d1e33-2ba0-0879-ab24-7dfa0c3fb969,1507287683,18269381794411366365
+0cf88608-79c8-1ec3-ae0e-4fd07d388ecc,3461450791,17465999659732585973
+37ce0a77-9247-711e-fa14-12acb54db2d9,3279724166,2454431394259597296
+adb1164a-49ab-cae3-bc5c-b92781669d33,1467541413,6717838766190649985
+d769620d-be06-27c7-a464-f18b82fb2201,1889810494,13929645533329440452
+1c0272ad-5afe-86a8-c12c-7a503767f5b0,2612772070,5493117404999184987
+fd8a6667-fd38-c24b-48b8-a86f300212a5,2797793426,16612488939104530074
+26c62da5-8233-a027-557a-a8f779f0971c,1114525800,1955658134574561835
+87b194f3-b53d-ada4-d47d-bf7f56044d6d,4057008118,17222653307626795277
+c6372cf2-b6cb-f224-f18d-346ed23da061,364851866,4317634629932991545
+377e855f-2108-d18c-69a5-e7d3b391466b,1111411763,1880473686538746697
+a58738a4-1cb3-e79c-85bb-bc67ffd3ef33,188331482,11055038624914183055
+5d978eec-5692-4ad4-4ec4-376376e29499,1539371055,7925132550857968626
+d0360b10-5cac-8c10-81fa-6574ce036a7b,649735322,3621528493559676518
+b5130840-5e3b-69e9-19a0-27f6255cfff2,2599932261,12291486244925542077
+f04e8480-657f-5062-1b90-29f9b1dd7ac8,3379661342,10589828484875433642
+c422807d-bc9d-74d3-a529-5b8dc8148771,1177024991,13261734203171505368
+e8850a03-b437-4789-2dac-2af537dd6f98,3480251143,2528406340396953130
+37fd9916-7ae1-d4d9-03a3-61de2d89a578,2981983407,1847078385951612202
+78426b94-25ff-36ae-f9c1-244e4dbc7fa3,1079367659,1814389028368634697
+5f16520d-157a-cbfe-cbdd-2e5799568b62,3565021434,16381807610319048504
+6a300d6a-f7ee-5599-be67-9bb3fca55232,3327972015,7503204310696563643
+0a6158b3-3072-d67f-5fd3-7297f31e5626,2043673949,1868558286778651840
+37ad8cbc-5234-fac2-da18-0429682b9159,2844897903,4501856195079200828
+7d68cd47-d4e0-e2a4-0275-eb213b7d2f61,3330934479,18189040225538533363
+0d813308-cf6a-1ad8-2945-9a9ad0dea261,1063699247,2148848585337362442
+673ec384-20d9-082e-31a6-657ab7c4c395,2621125096,7507856350611086566
+beaaf6b6-f596-32bb-4ab1-96d6b526128e,2629832703,7439420939659947003
+40919205-8ba5-4455-3b32-3a48d9869189,2227459654,14709449685613103363
+0ea694c7-fc01-1553-d9bb-6fff1d175845,168405668,9053385403359766465
+96821c66-79e0-0d64-638e-c355d6039149,1694016045,18356323180680169218
+d440485e-f9d6-5867-a392-3e3c46663acd,2840896594,16575467061997826466
+6699728b-3b8f-bc6c-ed67-6288b12a1719,3966586737,6329036719205287689
+d96fcfe6-db92-de50-a084-14eb3b279ae2,2984337821,10354843326168735443
+2b763b70-3e1f-11a9-2f20-c07499d4afbc,430620876,1361563429401588805
+2bcd71cd-c4f5-6532-4bba-b6be6c80a0bc,1094079785,11955415855643878245
+1311ba03-9f4a-8ab3-09eb-bb30c6e9868a,2570133924,10921542750728297234
+1890842b-f199-4f5c-500f-7286f1442a38,3789756588,16503555655655188399
+48d1e970-fcc4-ded1-62ec-be7924fd4b01,842770420,11667846924595780405
+d6296090-a69a-fc12-b016-20461a83ae01,1302697629,15052340413570920350
+71295b10-3a81-9c59-cebf-454fabf7b58f,3287223029,6010309786468847872
+22c83e2a-c960-ee77-ab67-1b1892d00f17,3696570580,8795871993475388840
+626fba93-f3df-dd1e-8858-2e47bfea2ce0,487468225,6802713715385942466
+7d814086-bdd6-ceb5-faa4-5d0b4d2a940a,2435440263,10674865474449566695
+22a2fd9f-4b8c-b083-2030-b152e1fc4e41,244495738,15769808802234452763
+a9b59ed7-8f53-3c88-7af7-4b22c60c203e,2369004337,16278211797914473154
+30503bf0-0053-f2b2-5f7c-443b816baefc,3332212258,12257287683771876908
+a6c06df4-5d74-5bff-d6cf-465ef7ea5b20,3687722540,13795337044354905344
+21b9dc46-6d02-2989-e84c-aafd556926bd,1686131639,491431369249913526
+59246cc5-d746-bfd1-17d1-1872c8584c05,1828584512,319003960115621444
+d80c8fe1-30e1-a2bc-b2eb-36c68df9ee75,2211962462,17952080370900111016
+7aff8dd8-9061-5e74-24cb-987ce670a406,2428878843,15064037882506031434
+b75f18fa-3b4e-d98b-d926-a82b6275177c,2041196923,1676328476940557043
+ad95a95b-42ea-9e13-963d-a4a93408aaa6,3124057434,13962280986034354429
+579b5541-6ab2-8a39-1da8-a05c57bac569,2093802689,15113067321800130857
+fdb675d1-8027-9a55-92ee-796c035f5d68,4187423185,10097634824803499168
+40db74c4-8b05-e3ac-6036-de68622eb446,776997818,2038263277471947095
+31dc1e25-dc23-f925-0b99-ad5156f615fd,2339779783,1475088052377895927
+e7879234-92ae-4bb6-7484-fc71ce7be096,3815181644,3212374429001849102
+ba378877-78d5-4680-1585-0a9738733379,102127905,3037524638829481282
+c4bf86d3-898a-7532-d131-4dee79a54939,1344702916,13813014450868951585
+2e66aa38-769d-1e8a-c9f3-9b913a06f0cf,2212485384,17674173120608389465
+f1791f3d-1a66-7ec9-2e63-87fbce19afac,2554108774,758800834804433215
+4edfc025-7728-a8ee-d9ee-8e68fff6e423,3173272131,212002648698722755
+a78e8dc5-30ca-96c2-b0d8-8d534b29c6e4,3298920860,16199885531612581289
+537998e0-10e4-18df-85bd-6e3327dcddfb,1496312532,1826099282491989219
+dd80036a-0eb9-a783-ae22-f4afc219cde9,3345188929,8536022612696326333
+f0eefea1-0e34-38f6-e520-5a89acf2eb70,1428462033,5493904195205990877
+344ed182-a06b-40f6-5a7d-9580176230bd,2643192229,15532353018029412851
+860be518-2f81-c994-a56d-b2ddba10dc10,547528735,3817114227974346892
+af629bd4-cdaf-2376-77de-15f7320a684f,3010955361,476843952842049407
+d899c790-925b-2827-ae2c-53ec8f824933,452684916,9291053268998243568
+453c1b04-b1fe-52cc-9378-7ec35924a0ab,3093061494,7741984785858539823
+dc5ed5de-cd81-9da9-39a2-b6ad090ec0be,1989198593,16112915557508610137
+68ed1941-3e03-0215-bca3-9f52a95c66e3,2542029936,7579510528160287955
+4369f7ce-baca-ec0d-a405-55ee16b46f73,1487265996,15803675838459291392
+984d5753-6bd6-4c55-161d-c11140993093,3613270817,2328455127152498850
+7c1003ca-334d-adc3-ee55-fb57ed532d3b,3699064418,7722675896619999338
+61db2a6d-f097-5169-a96c-c4556061c71a,2395222090,7265549002080901454
+0510a71d-6ba7-74f9-27c1-4f4cb308a903,3455803376,8120843986150119118
+9853c5f0-05bd-f299-73c4-e868e3950da4,1655107013,6680278449449808941
+03712174-7175-96a9-47d5-e6bb288fd99d,1047999312,2538452318283030242
+616da96e-157d-6c6d-29ee-a1111db0955d,2290097434,9449232573600091953
+7afad360-5533-b51f-02f8-d621ff9da965,2031941612,6253215724978689334
+7b313324-c795-e438-5348-a407379d1864,300562800,11114705692244147912
+14d632af-1c00-8f60-d62b-8c7c65f99a26,3267132495,11064971479876930886
+1d83cfcd-812c-8c7c-2018-b85af241fbc0,916091082,14374752232838068454
+bcae813d-3a8e-b57e-682e-f9c538b2fd70,981410105,2623905464721482972
+3073ae46-30b0-388b-ffe8-2bdb852c2007,1912559371,14708822218216473039
+4785ce4c-5ae2-5966-ccf4-588f68d2f7c9,957873186,11786213695498988942
+a6291705-4dc7-c601-2ba2-9ba85c330ffb,4253729320,7951629720700511491
+904c4f43-ac72-8708-9ba4-87b6d864975a,2292767139,17908719130562622317
+58cbd42d-b678-1467-4bbc-de3a959276c8,1388183694,14921798709665957526
+1e412fac-c857-e518-0fa8-dac000951260,2970076342,2331868214673485410
+93dc2291-c646-b54b-b889-bf81bfbc9ae6,637278066,14336371044846356394
+183b497a-24e9-e6ff-2283-f8e122f66a81,9675522,15299436552951636908
+fe46e60d-4da4-f6da-b7f4-cb55db840e40,2277786206,12979330032931076012
+80a13a2f-d4bb-1c02-d0b8-be853423894c,234339461,6350077378765879487
+f90bc9e2-6b94-177a-0d6e-0dfeca1ff3b3,512407198,16462198699433328925
+450e167a-6878-416d-ea70-f45267792879,3097520428,16177961630385221444
+29a84739-20e8-583d-550d-d871721965a5,898735424,6194849302755876751
+11931891-a0c3-1195-b6cf-e72d18630c1d,1311300577,14255155041890338790
+fb4125e4-ac6e-982d-582e-9814fcb9c519,3631810252,11455598997544017419
+90db1021-391c-876e-2c16-1c0bb69849b9,1647205668,12941639457762621285
+687cbe48-1a81-bf3b-72aa-b352f6b38606,1845598717,16297649372870946862
+3e553700-39e7-8077-83e9-38e92c571fdb,1260442298,4467936331503539769
+a5458929-2fdb-a17e-0318-8ed191d20e12,2976019232,1131986639091864677
+4f5c4228-1b70-c3c6-11c5-c864e724202d,894675496,15047221735853713261
+e1e035f0-7bb4-a960-3d64-93c9bbd64ced,2691991992,22821923965668543
+032075a0-3a63-e7a4-372f-2df00def8c10,988237154,11473640181118272161
+6f2d6dda-f98b-003e-0ef9-99377af2d246,2009952366,12430074989762601727
+b52a85c3-806a-9651-f794-f524c05e2ed0,2581111127,7646078996728445298
+fffa3c84-7b7f-96a8-13ee-832ef7de897a,1435292319,265687385945682400
+ced2e97a-3f9d-65cb-cefb-4674fc8610c1,2760450946,9795549975645838623
+573296a4-5381-d107-02ee-76d61d771717,2499990407,9097737697386811290
+ce7eb233-2c6b-4207-2a8d-c0a2ba657fc2,1246941309,16239279306164079678
+96867369-77a6-9a79-f295-5b7af300bd09,2919660111,13863561567077976740
+cb329126-cf2b-0f98-a9a4-a5f543daa7d1,1708107699,14837433396549738818
+435233e4-dde2-5d8a-b775-aca46aeb5940,3141796977,17963244594023280050
+6685e949-c869-a73c-72b9-74afca69761c,931041303,17741015302252934963
+6e97b10a-dc9b-ff0b-9d70-d7d70b208585,1149329590,4029620931471469726
+8acb77ae-8fcf-010e-81b1-fcf2016eebef,1970987108,6312423480679176770
+fa3a4668-5085-7c1c-c090-c11dfdc61d2f,3180828984,12441610278274199064
+c915a9c1-adc4-3a73-41c8-88fa77b62d00,1533032899,10630468456181068680
+2fbeef4e-ca54-14cf-a40f-ba4442961e75,1251969289,17140166689906976335
+40faa12d-7073-7845-1977-ff79212048b4,84764536,5038688169061792876
+664eaf85-4a62-2550-243f-ee7030364abf,1092451995,8280097431706471855
+01485d1c-e966-f871-c9e0-39c9d5d066ae,4196432898,4027421002785694374
+443947da-05ca-9988-f657-75c771d2671b,2616289159,6883254594211873787
+51d1e9de-9a70-65f6-a73a-58b8579a0107,2852615117,4574808915188344822
+93a3b7ea-2d10-8146-2b13-e4a81b0b4822,4232268737,16177596785488895793
+04c7ed50-5e0f-5846-68d6-c2c735d1bd62,824470803,880058038386564359
+33f5d0c1-fa1b-0ebf-8919-0787fc1d78fd,1358886964,13159229648071866507
+e4c6f27a-09d3-058b-1555-826f4013cd34,2594183074,18045288583605893199
+34479889-5bb8-7c34-f5e3-3959ed5d41a1,2871501770,1992435032391694159
+f17f09dd-9c5e-ed70-49bc-23ea17c44f68,1847611188,2834148519088909281
+f838923d-b854-3b2d-ec6e-ddce71c1c65b,3532294856,8838931475513014501
+de023542-6306-664a-bf80-25322a0fb974,3312916623,17402424558691829310
+c5725ebd-184f-0428-847c-936fe87a263c,2828697874,2768763695611649585
+a3184887-a51d-d2a4-414e-00110c91a836,848096615,16338445264600735458
+140b25ce-a8ca-344f-237c-97a67beef608,3444741935,1448597387768147292
+89eaaac3-fdd5-dc96-a440-9366b0ae75ff,3315091387,6952899466466626403
+1db7aaf9-04d8-1645-eca4-818dc70be0c2,3223230675,10124054586587514287
+748bee56-84c6-ba56-fd31-756b17408241,4237694941,1669492715204012305
+12295c9f-c35e-dae4-97fd-5ab1e07fcdba,593343087,7797600832396069085
+907884f9-4f23-49b3-891c-f644b33d68d5,1153791331,7078942351440411055
+3efbaaa4-1423-9872-b137-5f5c750b2a20,3228252725,14363967966709401510
+d4b963ef-14ff-47d1-0532-bc2918b9f2ee,2743474725,7839028595305757794
+2b29b438-6db6-bad5-75e5-1c656caa5d29,1050335866,12030098377722936558
+e32647ca-699f-6a5b-5175-4fb84dd00839,3594378043,860435263394427812
+993f00f6-2d4d-1375-584b-ff31ecea3741,811343398,12314127624930537322
+e44583a7-6d25-ad53-3796-563a10c31659,643050066,5483665914429051915
+251bb35a-098f-fcf3-52f1-909579170f8a,3859819610,16609737405665948462
+34de6f50-c02a-04c1-2041-76b518cae2f6,1785070286,3043607035296149134
+b4b84f7b-141a-5a47-6a77-5500ed4081f4,1720032199,3483294353173727851
+3e1b9bd5-1cb2-bf24-6ac0-ccfdbfeb8190,2121810635,6567291393402161566
+57d3655b-5ad3-718f-0b40-8bf570a3f80d,1328158712,428746383966324545
+522a2503-fad7-6e33-bfdf-923d766e823d,433368017,9018550380650649350
+4ef0fffe-db99-ea1f-981d-fd9c4d11def3,2668257722,13343946962600827244
+bf50e0ae-8b05-6254-9395-46592d690629,1601164323,10278100450951395162
+6a677825-a75b-903b-ffed-8000107aefd1,2374045115,14204387805239036462
+8b09d488-41f1-43f4-c2c5-032ee922b0a8,2577890061,14450930742808120335
+827ac746-7ba6-599f-fd3c-c187338cac0e,2828755224,13836103644074153538
+c69c9f4b-b658-2415-2558-0e87f2ec64da,3349537568,6242484151529562824
+e89dcf75-7418-626e-53b2-4179e36c9016,2828190275,6791550025564921469
+a94354f4-b28d-fa18-e2a5-130ea85087c2,382076598,17336673129946977172
+492d3fa6-2165-7e62-2bcd-73c1978c1d67,4051251564,4604842430190030170
+f9138dfe-3e75-5d99-402e-24d3d6109fcc,2328054461,14036492340361402551
+f6f675e6-9ecd-812a-2091-72a0602710b6,2674383840,15194826960855885766
+8e72b430-2465-39e5-73b5-ba776c4ee88a,3693716304,17403691625313724654
+242abe46-1aa4-17f9-35d9-e1df54dcd32d,1914149840,649779777976313268
+afa794d4-7075-2b22-820a-b5002510d332,523448468,14230726051844482575
+fb6ac0ae-1013-f85b-da8c-7cf99d83840b,2002904792,16920072452948669834
+9dfe2eb5-882e-4ea4-7c9d-4db78b217aa8,1148475283,8669573815034950197
+da153c55-29aa-be43-6ef4-4f139d8c5c9c,4122994487,10536245839691869873
+d85aae6b-753f-699d-c629-491491e4d659,879596352,10974415347083766450
+0c477143-114e-52bf-d574-5e8ba12326ce,1576085221,4320274909949999197
+3a32c04d-9c4c-666a-c794-276254668c32,4234379973,10008661474453704160
+a28df712-1ad2-5ed6-6b94-ed6091e948e5,1404222521,5759145237253941270
+39f4499f-2f62-dfd6-63d0-0194e5930836,4074491358,7520040536745181599
+c772f6b9-c32b-56f5-f3f9-515eca00d81b,699223184,722755794115234212
+1c096205-d30f-a649-4b9c-7fa6ea302a4b,784733646,11040592813409121450
+0741b7a0-23f3-e306-5789-97194c9c4700,2826423546,5652589488648469740
+267a460a-cd78-bfa3-c15f-b5c625c4c828,2748200558,13616089492392775901
+28b12a90-f8ca-104c-4988-aaa26a8b8dc5,2057970374,3214759676191197398
+b2a3e103-19d0-f815-78c1-fb849c15c5e7,1519382079,11919477732394939661
+86e31515-7fba-ac42-0e2c-609959c1cbf6,3217046937,4162338809891200038
+4fc65e07-b5f8-872e-4d69-ad31e3215279,519286220,13903837621254650008
+c3de97ee-a9b8-a361-eb21-14a4d32edae2,1099679094,1846285478034712788
+cfeddbbd-5639-99d7-6ced-9f7ba74632ab,2096048183,1975959583913269560
+1bb8bbf4-603e-2ff8-5c4a-f71f05925b2f,3783992567,7233093985962077609
+247df9d9-1cc6-a5ba-e6d0-3344631f4e22,24388035,3429623430532365661
+b903c651-58be-409d-0b7b-ac6dd794cac5,2268058091,4006090792054218989
+3664ab46-1cf4-4595-6ecf-5d5667af1243,2968799248,18271861547695935040
+309976fb-9e06-fbb3-9e47-f5e7d4f3dc41,1521625636,757402912918024954
+66be8aee-4298-2365-af1f-d2718a003f52,2265972511,13352809660427596196
+ab4572c6-c6bd-575e-ee58-d8f0b8ec6866,2074634047,5884001204048977520
+e00101eb-24c6-dbdf-66fb-329d3ad54a07,3634830932,13140307029359892085
+1089a30b-d24f-f936-9c54-add54ba3cb92,118925669,16697237330818439046
+4cb173cc-8681-138d-d24f-3868d907e3d3,1968816457,8889269577103660331
+7cef9f6b-3af1-50ef-fd8f-e668e52be91a,918431395,14330083947349097631
+2ab4d4fa-5209-1e69-1126-4c48a32c1fac,2618226861,8525832248510278292
+b4ed19ef-d2e0-61c6-d02d-da75bbb13df6,1361208929,834780737143799506
+817308f6-8cfe-e632-9389-95b6dc44015e,931004824,262405304653489313
+b776713c-1d16-5902-c464-1f252d2eaaec,5433059,1291398434987370027
+fda3eee1-505a-b1d1-dfb7-7f29abadf493,333651490,1313595044704911646
+109debe8-1bd5-8b75-4d7f-0effaf0c426e,939023269,6396721560767321600
+0acc5563-505e-b012-d3b0-5e4edfc778b3,3738676048,7861489980783414983
+69f87591-bd9f-c4d8-e51d-b698ebdda659,1183864213,14610302251497075583
+e6bea7bc-d723-8cf9-f605-7b11ad9df9de,3910266910,7500261713392483855
+fc27185a-1cc7-b116-b683-cad281f76b41,1116601387,17314783187011691834
+80617dcf-c8d5-2eeb-7831-caf7b601aba8,1542052686,8222623654598692633
+14d7e8ff-f5d8-e783-f10a-e57618eda880,515055340,15116909074605717576
+1a47874d-34f2-e36d-c0e4-143330a49330,3602064387,4375674821549434443
+e54d6279-5262-db04-2afe-a08b1dd1e9b2,1932939911,5254517576776461091
+adceb280-d784-743b-9129-89af91db939e,2617650049,1046693267333208704
+e6977817-3bbd-a214-6d65-37a16faa3687,576037580,14795162595482260878
+c6abfb80-bc6d-a0c5-b767-153be2f6fed4,3703369866,10874728236227817475
+63371f98-f925-d7d7-724b-5f2e4f47d887,1885026035,16054918343297204935
+aa193b05-91a3-0339-3b83-0f10262b3aca,317777152,13063533154944720346
+cf3cfcbc-5f84-2a8a-f8ac-2d1d625279ac,2223356052,11341843717012737005
+96a624bc-19f3-b309-447c-ce36cb6594f8,53140595,1206420957342453966
+556d740a-df82-dea8-9e1a-5397b29c7365,2123634405,6923286477447521789
+e5660dad-e23a-edfd-1fd3-e5a8f15b63cf,1125802754,11047088281421391491
+e8c2d6cf-c030-9758-1e65-27343d808cf8,2633176775,9972555431315470001
+3d015bef-3dfd-762c-a14b-b1c85ec40586,1557293355,5255038641212541573
+0fa8efdb-fb38-8456-d5e3-18c2e710809c,320396127,16329590100980635594
+1ee857df-bf5c-fe00-26b9-81432d021c7b,3206868212,7819114586005278020
+3a6478dd-95a0-f5bd-74af-da726138f8bf,3345421161,17429260634604836635
+a782e186-de7d-fcb0-b7e2-eea4c9302527,1479905215,7374380958948690167
+2c4a94c3-aff3-374a-d8e7-5788d1eb8879,918222799,13633555135021757479
+8638d916-7a30-c510-9994-0070f2e8fa09,1161614990,6306437024815255787
+46b0c2d9-f5b3-2fd4-07fe-e9b5dbdc25f0,4035685442,4621932151780228689
+3949a66e-19e2-ebe9-65a5-e9fc531b6e1a,561754112,4368853724124560577
+57dc2337-cf0a-0524-875b-b40089328788,2280508440,13180062206547075570
+a3990eda-9819-d976-12ad-6029e557c76e,2914809438,2778031215353196756
+96f31a9d-356e-4826-959f-030a6a75e6a4,2531505063,83727117744649747
+4e5b16fd-6b9e-f516-7745-dd8ab000ecb9,2645537054,5255104921288097990
+35da0d48-8091-3867-f137-a8f04411fbf2,1352124005,17823813945307988349
+2b50362a-7122-792e-ce6b-209ceff975d7,1046198672,10697696349155715583
+5383206c-0490-69af-f7e1-5f42596e2b74,3658863366,1965900915565063849
+d6ca4b74-8036-4eb5-9baa-135bda0a6d02,1516383365,920273474612608863
+81471979-6e35-2e71-8834-4b595a3e96a6,2673615443,912940890307566445
+d036dd78-6e59-a93f-64db-8e94491e1e15,3297677904,12713968553405169278
+5698e127-bf2d-e705-1124-db6b88ae6af1,3209072711,9252937636606816088
+e6909b99-9445-b144-d8fd-7c399d353f2f,3507522176,12445390305836069519
+e7f9e40d-d45b-794c-8793-758e5248dc82,2461016398,548522729959764177
+b72273d9-7df8-a848-785b-680a0032fee8,613852462,17169581769918338212
+8f78e468-a8c9-c000-4143-fed3382ffcaa,1068184986,513974207797606120
+b9845bb7-f76b-3088-7de2-221a661ee221,3622328349,8623092783609096763
+75555e9a-c67b-3acc-f225-9af9376e18ef,2752597320,15782152107938933850
+f0a6e647-8b29-20b2-64d6-cdf874cce5ce,1991854661,12522578502558017031
+7cc2f13b-c44e-3209-36ee-fbf79f7eb6e4,4071085178,8127083930185760029
+ce77a6cb-e993-45b2-5ffd-562b6a2f4e40,1404582082,6320033688665864760
+1422151e-7ee7-69d6-7d59-bc1aedd724df,3250604382,5155518040680020768
+6273a1b0-be24-d988-a080-cd93605b49d8,1607439602,8092962949193427150
+5668965a-2ca5-2da6-e41b-156ec7061783,3763526772,16880690859682219308
+4cd9571e-9718-901a-c730-6d8036864bfc,52491407,7656853675758059425
+feb1e658-3dbb-d662-cee0-712d679b9024,2839974683,4761007188941949695
+56d07b87-78b1-b918-a11b-cf40a882dca5,2701816742,2835150099355595699
+42607835-ea82-10b5-f399-c577d7699d29,228506237,4329323713839271515
+13639dd5-41d5-f83a-87a1-aa29358b9abc,4106279034,1270753079277943512
+da358204-d5a5-2ce4-fca1-a317200792e8,2290782984,347661469168889193
+1f2db878-c482-b383-455c-d0f3b867c749,304682427,15831406397163717011
+6fb7034d-2c6e-ca34-ee59-62ef153b9e8a,3503557474,8588692727265933927
+96daae07-166d-0859-5b31-ab6f2d03e29c,597050732,3835882671752583194
+f3783623-069a-77c1-dd55-e7c31711f51f,3483658700,4978363062745894907
+37b16a4f-6c7c-1bf8-ad84-cedfa4aff789,2363926274,13511571590130561205
+11e2687a-81c2-91e1-7ce8-bc53398da30b,4089757396,4941255066391654821
+c6a9d86a-f25e-6e34-2367-fce9253c87b0,2716560304,6642127350767237465
+17f9053e-e320-7552-e502-f6b43c967104,1320444741,13009327126597976166
+c270ba64-070d-6b62-e2fa-cea34e5d6d62,3902104415,10939249302599574218
+67590cdf-e60c-f55c-6d40-13c89bf5178a,1381052592,13026492922449223593
+c84cf321-1601-eb51-7757-1aca97a978fa,3975428610,13768404107396894367
+67924950-e6dd-becb-965a-0f66258f7a73,3406623347,9123189141722394235
+e701abd6-decc-68f2-e1f1-e2309e3fea2c,1894684919,16613969023718991074
+60389996-2517-1fe8-ecdf-2b53a8791d3f,3112571443,532737822143419960
+9b915f69-b5ce-04f5-09d2-91457d79048b,2391353373,11374223279685064302
+7929be9d-d390-3f1a-3147-9e495ae345b2,1757208138,8106664668763013762
+431d5975-43c1-62a0-4660-06f616cc9339,2834332937,7202379424106378228
+3cabdc4e-2212-a624-3b0f-bf3db1a6d0d2,2070081524,12137183913495656341
+b0d59c81-d3e9-7faa-93e8-98d2c3d2d057,2451488236,5229822880446027593
+554f9aff-e51a-dfa0-10b0-c77a401d3471,1561875280,12247550531993900993
+6af2cef7-3797-ea41-2f73-86439354980d,2776596336,2561923116512705923
+f1ad5b15-db24-1115-e135-e3a9a0e2b004,1303809983,3905460376829752521
+2c509094-e186-1c58-fd63-6887792fcea8,4031534572,3877777464294852557
+44bee108-6ea2-ad97-1c98-cbf92c5f71e7,1086735757,3633960352280902402
+befa93e8-f4dd-0d29-2e98-db5e97ab0af1,4152752753,7182793370268586470
+c88b1a3b-31fd-95e7-700a-404db137ef74,513844932,6489258660062775319
+f3175e71-9df6-ad35-e0e7-aaa7c76d49fd,3459151468,3295690284814459661
+22c5991b-b3ef-96c2-7714-64bd34976f74,3731141950,15232718936703978938
+37213df1-2bd0-2bec-f741-9cc3c8e6be0a,3581005613,10220231154109663996
+3a532f7e-24b1-8da6-580e-f1f381fd8c62,1197108686,5455974507837264513
+79f1d643-b32c-2ca8-8073-65f87e25b9c0,1965377635,12688919426765161628
+a7ca9621-16a5-dafa-15b2-41e24093c954,3328716087,1434505261744887559
+fa6c5362-35e7-25c9-8d49-334bc4dc029d,3559708769,11630839885014352737
+103e7083-6bc9-7553-2aba-aab803ce72a4,2773266612,18021363957999312902
+2969b33b-f4c8-292e-21cf-2988aa18fd91,1733982215,5546907774244533714
+c4cc39c5-e718-82af-6ba8-a849b9648be0,2670312534,10900670949357964143
+257d2e4f-e23e-daad-68b9-db7a71666edc,3880289226,4561772109198911248
+9e5964a7-e35d-50dc-3dc4-5faf9ff39f86,491214260,12874690371588184369
+c079564b-e373-46d1-0827-04ca2f06a5da,3744505918,10711485414227779477
+1eca1e03-6a9d-6e71-3969-999e77c7b4bb,3388609868,985987257942633560
+7a51e035-4364-9db4-31e5-eee89f5de43a,1655598238,3900921922301830143
+3f2634c7-bf12-400e-b9c3-a3ad0b54c6d2,2259045076,17296707598837893135
+f8fa4045-10ef-5407-ae66-385d33bf9e3f,828773717,3393957167959182918
+32b77413-fd49-1de5-f7c1-563ab4baf244,1700273588,4525408844972598605
+a463deb8-0c75-d080-9835-8cf246f6cf3c,4224051024,3572685200741673558
+b18ddc75-804e-1bfb-2892-5488cb6167fe,1781866885,15244227517802970785
+ed03b802-bc2b-f6f6-37d9-a82d93c1de59,1055645376,17273001939299682066
+ddf6c8dd-7b49-1fb3-fc0e-eb79db9ffccd,928789033,9445847078672681061
+51256ba0-42b7-4921-8463-cc76c4fe45e4,428700034,12503392296265572456
+510247d5-f95d-e28e-e0c5-b9b906770b93,3211244413,14632878195597466462
+7e1af5af-5571-8636-543b-8173e0d97d07,2531681504,3042149406178598848
+56265a84-3ed6-421e-ec37-9a3b409b0678,2327028289,7438660414303524725
+f41d380a-d2f4-e37b-7154-a82bc6ebf6c7,3409216659,1900597764652024160
+de0858c8-2b8c-ac52-1132-7976fc6b0e4b,1296981548,4135189264668343
+62efb2bc-8c2f-5a10-241d-598577eb7b90,1448227526,5951715792711320664
+33698f40-022a-5944-4aaa-7754d2d7c7d1,3702566201,15343001025462663293
+64a009b0-b820-b5bb-759f-96315aeb71f4,3992290351,11272896673563694817
+f64d91b5-dc38-7af3-c3ec-e744e77f6b1d,3924490649,17605292852748975875
+ec3e0031-25a0-7985-d64b-88698caa8744,3597134968,7984058944929023047
+5654926e-6835-b7fa-6c80-8f96233a3866,2033021246,2225627424951405023
+dded62be-d49b-25b7-12a9-f4e7acd75360,2501995510,9072247709791287780
+140b8af3-5f7f-37da-d9e7-be9c52acee49,3830356259,8219625094401099835
+a6af06ef-0981-0d44-45b6-d92780dcf183,2831900369,17599536624177692551
+41a2de18-86a6-86c0-9b36-46f4a84c14c7,1569487719,1152765449400027421
+f041c7fa-d466-0bd4-79e3-f374b0ed5f35,425069607,9779605546382435676
+8ea4ee99-dae2-41e3-d36e-14cfa1f6b94c,1800974947,13040136535959978459
+ad839496-2ad8-d97e-17c5-656827459e80,3273724488,17315919048927183975
+7e9a5505-7122-6444-ac1b-d1180b679804,3114519198,9814178642378527852
+82526be9-3385-8ad9-1eee-e493fd7f794c,2179792179,12727189982515868349
+01ff96f2-b8d8-2191-aa0a-50f618a009b2,2994208337,6867819086644435800
+5321cb5a-a927-7e6c-86e4-f4bb00d87d6a,4145235902,7154304644668594582
+319a614d-45c9-da0d-3315-80eebbf075ed,2325022140,1562584447366273782
+8bf6014e-5692-6b35-3b43-f5f0a853a70b,3186422329,1181392542609993306
+d71f1fdc-af83-917c-1bf1-2458f4944d44,721640598,12399161543180531470
+c6340006-ccfa-a1b3-d449-98019f41d62a,2169657919,15357040283083310265
+32b15951-a69e-c9c9-e7b4-20e13ff3dde5,2705952220,11316889162967860328
+acd5551c-17f5-9358-4aae-07df3b395e32,1103846508,13169570041027224090
+62419239-1047-f441-b9f5-442ae5246d8d,967198622,16302190493362663913
+18c5561e-b4a0-360b-bfb3-3086ca4622f0,21637676,13968786029541856702
+f1152b4d-d819-fed2-e258-dc64087f9d7c,2311252911,14413246507051292894
+cfa92f1a-8e00-c28c-cd7b-2d996eaa2fb1,3927295950,5529152919544436693
+770b6c89-750d-7317-3350-16264616569c,2533687285,11893064289347255579
+cc8846ae-27ce-7951-f954-7fbf1b115ced,3785074266,12402512831687868885
+b9edb10b-0a35-e87e-8777-48e83480c38f,2622065019,14877405597133853308
+30b51480-52cc-160a-6c1c-9a5f0a9de926,1219396388,11360666770995309153
+7120438d-800a-831e-916b-b37587e98905,3132200536,1768032951108210224
+49ce3975-48bf-ac13-63bb-f51df4ccf82e,690575139,13191346319482042819
+65f33a1c-dac5-47df-89b5-cec473cebcca,1144745365,16045467532008424640
+f4fa8e2d-2d18-cdce-8776-3195fa3efa3f,2341627889,4861532845732040333
+4bc4c282-7ec7-1e21-7c44-dd8d3c9cee9c,4088047225,16743312252670985687
+16bb8f34-e5c6-539f-8633-b83dac7dc573,454242507,3951663466688124846
+b5e004c9-2cff-b295-1d76-6136375c4cf7,2295998691,438904035642364478
+7ae3f4d3-3e6f-a897-8a2f-234664bb4804,3735712071,2628385911106880695
+bfdf92e9-d00f-5cda-c4e7-0ad325ae21b8,160498222,10104698767111413631
+4a0e0d46-3a7c-63b2-df54-673578c5d006,3396157649,1046362842782417728
+26247b21-4655-e897-3b8c-b71fe470272e,2685517549,14909680217196557039
+3d1adbd5-c65d-d168-7968-8a21dbba534b,1113452978,14727236226560691539
+4281387d-39b9-795d-0925-dc1d75d6c2f7,3317219705,11347103410384449061
+26f255e4-176f-3d07-2b94-bda07e8113d7,1338988043,2205870859857644935
+5478b8e7-f0d1-43eb-e7ae-d437f5c68cc2,1471362104,2747942262288468934
+1284dfb0-268a-4190-a170-8824b80f7831,791704964,7998058228778992790
+42c4d472-83b7-54fc-0bfd-35c212a297ff,1020798615,17474953674311758515
+010cec53-b9bd-3e13-86ae-d5f8a79b0711,1486919969,16242122816072573265
+2a9c7498-94c5-9d71-2f93-dd11a2bf2dfe,134129481,11707357172170502805
+329b9cf9-5c5d-debb-9ea6-15e8587e080e,830646459,1447402040970203969
+dee97bba-1727-27fa-9e34-5bf36faba27f,4079317042,16026428000326948616
+c811f77e-50d9-6a25-d750-9aa4fa923d32,2308657603,9108814579725636279
+36c2f62a-ca39-e86f-7e42-d139b4c83622,1904522537,11878615274511179564
+010bbfe6-72ce-33e5-01d7-d87f8db86a71,1493003037,8316019010056766555
+ed886d42-3afa-5f96-1778-f66902dde878,3424860224,11418654784641094886
+6970c1dd-924e-41d6-251b-3a5d47463654,1117854988,9416657354243291467
+4823ca24-2a99-9248-0030-cc4d5d40626d,1430061428,12105548710984542792
+b4f6ae05-5780-e3ec-b47b-443a86235f7f,1174325366,9090914618643548710
+dbeedfff-2248-252f-beb0-7e5c87151438,2320703971,17600265223873724326
+c596edb3-4e3f-2751-087e-44a870f1f686,1603008542,17767574144108699707
+d5701b85-28cc-a778-54b5-6895ef82cedc,2388903954,9453913816781236896
+818c11ea-bedf-67bf-6a2a-a5439cb8ba32,1776955529,13500876817782926718
+6c17c6d5-6d39-056e-68d4-124a29e42005,2183325315,9344368823041218222
+4bc75290-a39f-5a4c-a82b-f7886dc09abf,2339996487,8692538713185949437
+94752cac-680d-120e-3e95-6b6ffd0aefb7,262133525,15659789838655470142
+0234ffcb-fb42-80c8-9e68-b2ce070e067b,1948955412,8983287932211066606
+41845980-084a-ac7e-993c-0f7c031509f0,4111802349,658542326565010982
+47598d59-b328-8c82-8126-2038d81531af,751303017,4991980985497786558
+4c7ad5a6-eb31-735b-de46-f5a75ffe760b,1755721018,383331466867238646
+aafc11db-cf96-2cff-7ca2-191a951fbcf1,3247492777,3297617834424584270
+1d9e4a5e-6513-2ea3-8420-4333da45a742,3138926102,16817420147987131264
+afeb0d4d-ab49-fa03-b9b7-b5691a425f1c,2616328811,32869996327501982
+1c9673a9-cb10-13a6-ee81-b44c7668c101,2798053734,15888390527691665640
+5fd16392-480a-fa60-b0f4-a355557338c5,2388080120,628674498728162077
+0197e61b-7546-c259-bf64-2e6419633718,2056136001,9937932913797238471
+c2bdd411-c407-8e15-537c-b5e0c52ab568,4143661914,4168427492741047466
+8a504867-ec0e-5934-6a33-fd9504ef46f0,4130303484,15947628948366079443
+6ecc0d85-2968-0bf8-88f2-e057afa5213a,1018118406,12876380747920153370
+9c26bdc1-4523-27bb-e17a-413c3c9e7388,3386463067,14095941553581674166
+bf37eab1-106c-6101-eae1-52f699771947,1308621036,13726929473816722974
+f6885e53-496c-8695-76e1-468ac644559f,3593361940,9483449795022761979
+051a03e8-c590-7b17-a406-2a973da24d32,1559637661,8543360587676764412
+ce3963ca-57c9-9674-85a4-1a8d28aa6819,3849651706,12917820468549728273
+79dea28e-b26d-eb50-4bc2-81d27b9f90fb,4122960389,12116800263136470465
+4cdf465c-35a9-79d4-bae7-e9b02a1b9cff,1803236256,13227956008838736265
+c27a1ec2-5f97-d2dd-6fb9-0656811cf8f5,3897740397,5163881714169570683
+60b33e9d-50af-e9ac-9f08-954dd1e4bf0c,2467980685,10981193568826018133
+dbf28c39-57e6-83da-e2ce-7e0a1f6304c6,56528785,2486624389895043337
+dfb01f77-9c0f-c18d-86ad-482328143f4b,2263247687,2867187169767280275
+65722184-d7a3-b62e-0a49-5b23d5fec6ae,3845910421,5914585323658494269
+8fcae925-d11a-da8f-5fca-7b59c5897f89,3260894207,14173130067214269810
+1dbebe6b-f057-5137-6ccc-a2a0dfa2a863,86640210,5543578120775341767
+e0a018c5-23d4-50d5-b51e-1a824c63536e,2667957279,16888307075947282767
+4c5a7187-a2ab-c3f4-fb08-cf836fdb35a1,779353234,11737110887207615531
+ba8f6c50-0a8e-53ec-704c-d188fc7f848e,2440944642,4038789139612040701
+be8dc427-7e87-6035-b393-dd24548b418f,1787271785,14427478462560896270
+54475c1c-27e6-820b-efbd-4272dd5b467f,287192134,7199286188144041573
+72b06516-08ff-c8f5-b41e-32588edb0f4e,1823817559,10477898764194064380
+4746f73f-0443-f9c1-bc6b-caab3cc11d61,692410195,9547315794347450470
+9d205e24-8ede-d7a3-02f1-a4c14b5843e9,3952250328,3072355637821522227
+fadb8229-2a91-45d9-3446-7c9a1ab6ca32,1979647361,2369367691370961792
+33f9d5c6-3dde-c011-4d08-2f77b93f5983,2480662404,1563046624575489914
+f176ce75-fb06-9a23-e138-92d1c5d616ac,1438705201,8260767353682929909
+fede4144-f948-5747-7040-354ac2d152b2,344549635,10096244617848265501
+73c3db37-54df-6a2d-5c07-dd474e1d891d,2854097043,12552548551896004283
+13d03ac2-f852-f46c-cf89-a9ac182a96a3,3170532191,8665461543614152322
+21c69770-63bc-a3b2-4cfe-52c5bc318a68,3742302278,1272738472046541878
+9df5562c-bb36-e0cd-bb93-3eb3fd5454fd,1501918227,6289597249957918676
+07b30040-ff1e-b557-69fe-52e1f8289709,3459964807,13431165406893291195
+938848ea-3455-baeb-3095-aaab67a68f19,1631529609,1791637065912392350
+07d19d30-3354-2703-7045-42ac9141b7a8,3154221001,5240765840722517656
+7d8d6062-1aeb-2a2a-56ec-963820f9fe8e,480152781,1344264688672853849
+e62e306c-fc2d-5cc1-db9e-589f1f44425b,1410558276,10552284515588200257
+d76d224d-9ba2-7edd-5f72-7041f7ec2394,3169123014,2036704211387354244
+f272f11a-eeb7-ce1e-8eab-d06bbd3efd63,618559380,10155170862438038889
+2e2c48f9-a6d5-b441-691e-aa4cf197cdb0,3773839999,10296833684445329035
+9a5ddf53-1a69-e799-6a19-3732b8d93469,1034550577,10588581352359282855
+07c0832b-1d5a-c8cd-75e2-d5f121a36700,2117407481,13739155283298907902
+32ead2ee-f5e0-ef4e-0621-63c5aebfadb0,241713100,2673089383072687469
+2949b3e9-a710-bdc2-4fb1-71c15f5a7e5a,3306243007,8395243523644266441
+1322ff5e-5c71-1070-d2eb-4289a45c589f,1754512500,620196632867448155
+c04547db-b309-1d55-0cba-9c1aeffd6de7,2211159345,12063225230840276799
+53aa53aa-9af8-689c-ea7f-019d13aace82,2641747375,3080879070295803642
+5e02752f-db48-a23f-3bab-d9c8199d78e1,2685617183,16240681484780860943
+e95bc0b0-7a4c-2ea9-ec72-6e6b06e846b8,15278355,15097410082107236233
+51f06165-bef2-f666-38ad-63d115cb526f,653436537,2281706515128530864
+4d0e8fa8-d445-0316-8f0c-b4c6f7b61f4b,1137149271,4118434283619244467
+df03fde7-ce80-dc97-748b-39c8e1e4dbe0,1668121916,4909487949788684529
+9805a4b1-eab8-cd0a-6f9f-567652055b06,142473200,9100667777257435488
+5efbabbc-5ce4-c00a-ae09-c85af73e7329,3343675177,1427132348038451648
+95385319-3eb5-3ef5-f018-cc7b39b1f041,1068117668,5585083218439366985
+6181dd32-82e3-89f9-dd6a-73202662be58,3148543352,16834793267009802930
+fe1368de-fe39-8eba-ee49-c5b2a6581a3f,751890675,17055131486827913780
+9d1e8440-610d-60f2-57a2-adc85f2631aa,4018583225,6992429572954839232
+ad116c0c-8070-03e0-0891-4879bacd74e8,441415134,1073640568278417089
+f48fb405-f641-c61a-6df7-ad9530ead3c0,2503267451,16605208465417715680
+6feaa95e-41f4-720b-62f1-e3ff6ef68a84,2481627397,10573723064918953863
+e18677ee-86b8-4a96-608b-1690383e3505,2847455393,3859075420787051532
+26c5880d-c9e2-0b4a-3dfd-e1d6f2a4a1a9,3967625925,3849445371538935539
+e7378691-d2eb-4ea8-d903-f1c4b11121bb,2303694043,6507377715339648855
+d7a90fb0-5b98-44b4-18c8-ece2ce3f12e9,4050164695,9078543946798692766
+2278fd23-5b23-a733-e4ea-e66c60fe4469,2713853355,16212596917702729968
+835229a5-02e0-c763-b534-c9fbb331565a,2754973747,2315257938094105000
+218ecf7a-931c-e99e-8b52-d03221fbad05,2507544234,11113427860179225122
+e4b3765f-d8a0-c8ed-9513-0ec50409d31e,1380152067,7602832353968737486
+e5c65319-8b07-d939-c4a1-18ca87b3894d,2163226038,2358961604849115747
+8391af2f-071e-c11a-1b4e-456d325b7e81,3451948631,5709145505356089878
+00aa594e-dba3-238a-ba56-98e67c797f0f,2812461502,8761830521254189228
+66ee8f93-e506-c68f-2b26-764ccc938f7a,3336799605,3594821618022236449
+636bc563-3c7f-24f0-9c56-42f848633786,2680556731,4189268586972758502
+76b72013-2f68-c70b-c56d-62883e867486,2810084929,5400859940121302124
+59e41d5f-8573-e65e-aca3-109c2fe1edcc,1048330990,8296037078338962397
+2f06a6fe-9203-08b4-46cd-e2056ec3f8fe,3306152546,9913691407044189940
+c4e854ad-d07f-1ba1-4eb1-3f2042f18c10,1860574781,5971014895724454265
+8cd05a0c-be46-bedb-cbb5-9b97d918e4c7,1166985884,10813738717330275423
+fbc78d9c-8df1-8f58-1a65-640a4bc7af78,1391886994,14796153962016039358
+aade05fb-2331-55d1-f095-c4e322419b94,589662326,3049518816964623452
+f654fb5b-2bc0-e01d-9209-9f426ecdcac0,1526359082,4235829009926661872
+6006dc3a-6881-a245-4787-a46999a35719,3756902678,13956269411587466531
+e93ebd1f-82e1-081c-1935-f120e8fc57c0,3235166300,369772855103479806
+c9c8f018-d266-1993-f780-50b8d37ff54b,2677395991,7037332905423001580
+3fbec6ad-2c9a-050b-5291-e2fcfca32fe8,3158641034,11559730719433476273
+7898d267-6a9a-7a63-3fad-3a08f7280ef1,681865260,11356962923747737134
+08a520e6-8e8e-f439-eb4f-4a4eb6f044ad,1431140127,8375039373379577107
+7d3b87f7-ac64-c232-afa5-ec40cabffe01,3592729407,12097791474026920836
+6afaaa5b-7889-cba5-cee6-46bd7cb0dac3,2277565646,5517762276689337121
+13b32b8e-add6-bd30-d91a-9819bf5d0eb1,2260837566,13848949068833519180
+a50706f9-deca-bb64-aa5e-03addc691968,858650728,2076091506478483031
+77668eb3-385d-fa13-d730-bc592ab67610,2479797535,5447661592658534498
+00a1fb6a-3768-e2ad-0447-ecfe0dd55a25,49859467,1367965833452281916
+4105697b-d45b-d9d5-ec08-38cf448e5f83,1025744810,6883819935873814678
+f79fc3b1-ca5d-5303-08f9-66becb29afd5,661550241,974917880055000376
+49c239ed-8c58-05db-9623-4b0d3960e5bd,2097473618,16683279082732528060
+f47067a1-6c70-f43c-f4fb-a1c2b136b488,3841881820,8685465660454516542
+c6335334-68a6-2fbb-de65-3bb892adf2d8,2170478117,3185408367748266055
+56bff5bb-61cf-1020-be7a-9630b34579e5,3080782352,11301220557546666223
+2ac67ac7-3a41-c5d1-739f-158c673c7f5c,2086334204,18257979379624641083
+0d2b8c67-bbb6-93a8-0963-eb21a01378ef,4107259311,12313110380495941554
+60ee479e-43b6-b1c8-89a5-6de08c79fc44,966227224,9644254138363726675
+f1eefcf4-c7e7-64fe-9e7f-e753950569bd,4011076401,15847259146799833064
+167b45e5-4dcb-03e7-4ca6-50c52c46c1ff,97433405,10342717363379016558
+1e336472-f11b-58e7-6b7d-4638ebbe1c22,2364208011,4442862597507884711
+0f59781b-916a-2cc4-53e4-961b81b654d0,411892531,2082419615118652322
+64a4c358-c38d-8ea3-441c-12dfbf0c8ea2,1516913136,4734333494335405336
+da6ab2e6-7f0f-4b74-756d-f19581f79eeb,2506954012,1493745926956951522
+bbc602c9-2877-1a32-1a4e-e1e7d7421a19,1085064134,8409124099453835146
+d100052f-175e-c2f0-a7cb-0d4d19381d3a,4172677786,14966634399924779921
+ee8b7ece-c135-d55c-939c-99f4490a4259,2371133020,14685168655975250213
+1b8b4b82-613a-d1be-3537-407d7062bb0f,1663846072,11971616758850401659
+6c4440b0-1e57-854e-866b-089f057bcaae,3155293228,10574602242740249079
+7d2a0184-97b2-ca14-57e0-32ea9d0b5768,2681935127,13377839096922998073
+85ea2124-ce31-73f3-aebf-ec06fd9e287c,2259942963,9066263249989035362
+1bf96150-751c-327a-05de-8691f61b4daa,1101267083,15473836744093979750
+d654c624-394c-2484-fdb1-7b0d527559b8,1770016142,17721245185637048841
+19c773cc-aaa0-c074-4881-997feb27be34,753063378,6962505520410787653
+04507101-3a17-0bb6-3374-fd5c710a409e,4177867342,14720692183659493554
+c09bf7d2-d417-d788-9caa-7d276875834b,3423194940,11505373731717174491
+026daf38-5688-0039-4b0b-2486656ea734,1996353645,15652603515751176970
+991a62a0-683b-5346-3f0b-382a101aa715,2638357666,2850524358874375637
+300706fa-4458-d9d8-3df7-cd4462b01795,1314558630,12009050417918392808
+9a3d9f8f-cb7c-3c12-6ad9-99500a57074d,628290665,7977117492080108974
+4a3b8fee-5375-e870-723b-0d740320826c,3632955478,3517043791239785905
+4f3b144c-1dbc-2d61-985f-5c3535b1e49a,1197845458,5316513486412825116
+1e15b7d9-e0d5-51ed-57ae-250744966e9e,52437317,15088835994558935776
+9e7f9584-c69f-db93-82b5-c0af5ddd861c,3800846942,6966181191278796436
+97382902-2263-9332-110f-7785a5618e91,1694081073,4654102950021221653
+3db8061e-bb8a-c0e8-de0e-f93105788d9a,268831275,5798324063618778854
+d5f5ad3f-1d69-9ddc-26f6-44439ad36d4a,4269113349,3316702409342676224
+70e63c08-0844-e954-fab9-a1fa84652f3a,4225620200,18242233068351022460
+a2011b2f-5664-13f6-a6ec-58e1dd8bdecf,2648200336,5897747357341476874
+18c629cf-4c36-052e-111f-e512d0ec5700,927730198,4521045833514437959
+778ca114-64a9-a915-732b-cd255a619c2a,3923959862,4059029094091707426
+f4b7861e-16ff-ef30-a389-babd469b036d,2755412230,7304313979446786186
+b4c975bf-d701-dfe6-4ac9-9109a4fae3f2,1397276039,16485987018449817983
+f061c10b-41b9-e745-184c-5a348c6e6224,2740253030,8021015191997084049
+f1f1f509-1187-6401-2747-5dc020747a5d,1718128783,10964027347096965096
+e461480c-1136-e9d7-8c30-305a5669b564,2203738544,11301620216634826044
+1c1905fb-2032-f820-a0b3-4b02ee00896a,1090776576,16168055550144578490
+34c60715-e99d-a945-5ff6-c3d1d208015f,2983855425,53448365478726327
+086f13f5-e5ea-eddf-e784-14cebd905e08,213179520,6313372752544003723
+f4b4fa0d-56df-69d5-536b-7bba0b4c51ee,1614269987,10217490557911005749
+451b19cc-b512-cb18-ae08-28bb0bb5d5af,1903629075,11369331419591376795
+76087db5-609a-e9a9-d95a-026f70385cc1,4219638123,836770484665406805
+69f0ecce-0263-d7a5-c368-f86ada09e564,1022185648,1116444531233774312
+46d8953d-e6ec-ad74-fc79-2c9d4adda53b,60360705,18237807061199808402
+ce6cac2e-2a60-acb8-8a03-ea7094bea42d,1967823310,4185892025599099661
+4245a546-a656-d3c9-22a1-f3a363b7b763,2998522598,11989221344735453050
+a622ecbb-3477-5eb3-a497-53610868cc90,1662753603,9169674514136870940
+81f246ec-3e6a-d7b0-a6d1-ddc72e3415be,980940971,2927137408068877717
+23b0d15e-e883-9ae6-ac10-4c1079486d07,3684439235,2553059756621049707
+27ac5ded-07b2-0e7a-b76d-36c664ae7791,1342249117,11351090057573751672
+6c8a2ccf-f168-fc3a-a4d4-4bdb34dc0d0f,1781025407,14419220598770373117
+8c11cf49-7d7c-1914-74a8-c6762288c5f1,3036631686,3323039362987394845
+adbb4014-9b48-daac-9582-c24c78c8267a,877421826,8453015731769403306
+3683ea0c-622c-a162-6e9c-6b769e467d9d,1316313404,10115344937154670360
+c097e679-e2ee-d89b-21a0-7e7222b4b28a,746712630,2065463073426056730
+18f1ab20-7940-6aa1-d3a0-195a3e5c3452,225381299,46268656518363403
+c9d0a98e-1ca7-8796-9c35-0f01215b6f3d,2744860907,10733328979606631520
+e287a01a-a069-bf3a-c2f7-0e0df6155a4c,2115212466,9536541915814630892
+77264a6c-3d95-2055-616e-27046058bb68,3935804348,2411388674369257626
+642ebb21-212c-d394-81d0-9ce1bc94977b,1840120988,3416560005026441372
+8a697d57-7f59-64f6-d476-693d07d77601,2136964748,10518830664423251866
+db5b2432-d815-0df1-1974-9b3492cc0c5c,2119950948,6018693037391954404
+ee44e17c-92ac-55a8-9d95-9974e5fa7c57,1846097299,1009238211564513757
+31bf1da2-7129-ce84-df99-e84273129439,1624726847,4330073563672606049
+407af0c9-c737-0b64-04ab-3e4baf1c16e1,3179264085,6814947310483913781
+299831db-7b1f-1027-53b5-72a95528fd36,1736822015,16101381860026749724
+cace3e13-b146-617d-ddfd-06366b05a517,944924469,315463832581233527
+446d9b2d-f025-2afd-3c8c-a38c8aaef25b,1156981660,4202554374416279461
+5c301f96-660f-a2c5-fb2e-31407e0cdfe1,3462510947,9907908182139522336
+4dab3414-8c76-88c0-6c17-466a36743ed0,1055745560,1082346666692607563
+c2f9cb31-6e88-df57-aa00-8754e29136b6,987887853,4416999526185146797
+e864b757-4f0a-235b-c3ed-727d54689064,862075540,9032307072826539989
+7dffcaa6-be9f-be6d-9c46-70da8f71d09f,1994350344,3440847622954445
+b2646c5f-f3d2-50a5-ce33-c7225b7d3e7f,3644962684,17522365375395254531
+72cd2eef-3e15-6d48-ff6e-6d4a833e5569,958003879,8069935714866028637
+f8e57db2-97a3-217e-07ee-ab6fe0ad41a3,88331915,16757116810907911938
+4f3a103a-bed5-6dc1-e457-63defb2f4d2d,1834815653,2128729904104223425
+19964d36-2c28-1df6-1e94-19bb20e02bc9,3284642905,8262033855451563401
+89ddb517-75d7-6c20-03f1-e8a02733f869,597443200,13640546340033586733
+2c86620c-1c1c-f9a7-d05b-6a836382fedc,1099516984,59301462003583050
+d5ddf381-cc78-bd45-6ac1-51dce19a398d,3302195641,4441019194423294257
+ebda7708-b883-96a5-8269-1f6ed03f98fe,3816508458,3674935085906003568
+658a63aa-cb3f-be2f-73d7-cf7e6d73c091,3292465901,18214397964892644047
+2d9b17be-275f-6146-88dc-7ee0b93bbcb8,358998776,8493181882689259361
+a7bd8573-4658-599d-bb2b-7556496fbab9,2482868818,4980062954848609916
+e8c8c357-4bb2-5750-00e8-f61aa09442e8,2608125858,11731905430408980906
+4c02c740-3366-6751-af6e-d41eaa432912,3145773212,13395801264360675433
+320ea411-e7bb-0548-12cb-b1066168934c,1701225512,15267449977581095092
+21741efe-1853-efec-3b45-89e8e89388d7,1258236662,11452218687148533113
+48d1145a-573d-870a-220d-09caeb17225f,721879176,17755173074230017429
+fd3f1fca-0200-771d-3733-0230575fe556,1302555051,14383559542887394829
+e5e906c2-ca01-8cb8-9f6b-b0a873a87d00,1388811431,2185218090760536051
+d3e5598e-83c0-51f3-fb60-6e531604ac75,3779587783,9017379903345357148
+1fac70b4-f7e5-5210-ee69-0f335db89213,3842975272,8642582831350102848
+0a77f9c9-08df-945d-5761-eabd49d34005,3819246037,13663457005860722252
+42589bc5-c122-fa47-a202-4189b8b35012,3115020194,9673148056494319470
+8c5c58a2-5ba7-5529-30fa-54a604e7c046,3678701081,8812562757835376126
+b61655b5-66fe-787b-c65c-9e6bef11b2bb,2780984063,15516593005355635086
+6cf27d80-04ff-40ed-b28a-3f953539093b,3750012514,18205038251613056817
+a46fe7b5-1019-c015-c6a6-208be15d73fb,663417295,15055660027085006751
+9ad92a0e-1176-2205-7d67-6c921324440a,2075103556,6986855231875050804
+c757d469-6db9-81d7-e76b-c691b420d890,3620759420,16613808925787555661
+63bd453c-e87f-1109-13c0-bc4cff364056,4113822719,9549648824018778626
+7a3e75b5-d747-6ba5-8c26-54627896c068,3041946455,16901287195861442517
+0c768c73-dfad-e89a-8b8e-da8bc8e57e7e,1011204371,13568551202092102005
+7b1bbaf4-17b4-0b47-4bbb-98af97f5929a,765271778,375666042093493819
+d575f29b-5c63-5538-105e-1ade0dc1a8f1,3913407083,6408224198276924142
+18c132dd-2781-95a0-5d82-9db7a3c35d8e,2131673573,18409077525326916829
+059a861c-684e-c6eb-3add-77044b6ae912,3991214635,7810927913213445208
+fb18a3e9-a447-c278-786a-44e1bb7c8c16,1458533186,12255501271801204497
+e70ca96e-77b0-10ea-5eff-2a08ae12320b,3797362364,4915532499782816271
+52c8f79f-c846-1f22-49ee-203928f61261,3855866881,13912819325562787114
+d4ebf124-2980-aa39-7e1a-f366597921d1,4136703873,13298415744418229148
+134b1fa8-7c7c-8b7e-9d65-20bb7e3cebbd,4009665414,477320395487600982
+a86c7e4a-9b10-00b9-371e-86846ac50eb1,4111180757,7161998135540965169
+13617338-81a0-eed7-c0ae-a0eebaf01772,1404696353,3246989854660777639
+453eb724-3c4e-3c89-12c5-b1842e161bbc,854936850,11704095310234498686
+851f92e3-6c49-5440-6e17-454ee9c3d6de,2634533377,5191579953352728851
+6bfea9ab-8fd6-cc0b-0ceb-54701380c43e,2883530294,5642522740401205421
+880248b9-c8f6-4ede-a0cc-6deb7d29d33a,193298928,12725559333008024469
+8ee641fb-f6fd-e3cc-4e2f-9fe968420bf8,1981860164,16352466117480472500
+f68b0cbd-264b-447f-85dc-9523f5ac3d2a,1699855332,2190312521980770901
+c9603a13-bb39-f33a-45cb-e41bc3b4895a,1990787523,5912802108928080352
+0f6756f1-0147-04a3-50a5-0214128e555c,2020648163,8572160183972782814
+04632fb2-05ec-028f-2cd3-b7684a1ea686,1510684850,10885712081390506540
+6ca02d26-a0ff-1047-3ecb-b8f0cb1da1cb,2952674794,11012129824676229333
+a9a4318f-8984-3b71-af98-ce62761429b0,3278012937,9015452094344385838
+7f9134e1-c4ca-58d1-3c30-6bbcf8d5cbbb,3669557622,2152464956679818360
+a009a29b-fbb7-95b8-ef29-5dcbed516e5c,3522522646,453980555581951301
+3ce2c155-09cb-ab74-4d3a-93b6303357ae,2012507760,12009023610748775361
+892e1447-ec7e-f4b6-426c-2b8ef16e8bc1,3368142606,6476940605213094184
+026fbecf-3da4-4f36-5669-192f83074c73,1295740664,11728509368540764205
+fbed46cb-afdb-93b4-361f-6389ffd1a971,3179328628,14882905680715440917
+00f60a95-5525-70cb-e5f4-7d8ee0f0e0cc,3550944772,16453863876123066392
+7f838f48-47e2-d89e-054b-4abb9d3328cc,3396110425,6237917537786690142
+70035e88-572f-39bf-115d-3ca4513dfdbc,1542595427,13857282289706453357
+0bbc3bf5-18ae-7a42-d79d-79ec568a0300,833789216,8573877870404733592
+8050aaf0-7445-b09e-1a87-b73ac2ec117f,4128567546,4187362152966130938
+8aae0da5-6671-6544-51b1-a7b47fcd3a73,1382677182,9211315963813194990
+a38a8fe6-e07e-a0c4-54a7-c847327eac57,3234170442,17461335254012394828
+6a0e7012-38a9-6be7-ba8f-7035bd6d333c,3923716273,14689729425469425116
+6ecb98b1-f10b-d313-5c89-a6c5ce3ee962,3304427554,7885049974817222989
+6b1b5641-8a93-212e-3480-71ef5a941763,1151935840,4930055880709770700
+55b7a3b5-058f-6596-ea8a-cfb913cd6ea5,3741845167,15328182876501700965
+90e55471-a93e-cf71-a80a-c877dd4b81b3,1937786588,5864651181344736738
+ffce3962-0a1f-21f5-84eb-be9bed707fc5,2275807945,2677875104771941293
+61518b2a-ae16-10b4-b399-4f870c630176,4010925340,7713509234318835402
+eec29435-64ef-4902-4f8f-4889a6e246e3,3248810874,9487990820513417491
+bd061585-115b-c41b-2071-5240fda3af00,1709278034,12206083062211894943
+4d2f4ebb-85c2-a2cf-1593-2080f6e24d55,2115593090,12095691270901462224
+5bcb61bd-ede8-32fd-9da9-472b8cb289cb,1608172149,14704360147113149686
+c1c34ea9-1b42-29ed-bd12-82995d9d1217,3364083839,17765785697966455383
+649391fd-9ef8-3bc7-4950-105175f5fbfd,875386688,3791536208161013264
+080a0889-7ab4-d95c-eefc-fd08aaa28bc7,1338698020,6138940714276808660
+fb289341-4afd-cff2-3a5c-3ad70f0be8d3,816830045,1914000322682728207
+81e90457-b59c-225e-5400-df97c54a8230,2233150980,14021403836897673535
+01876ebd-667a-3682-2742-8d54d5ef629e,2958743021,14778664002183483343
+161e935e-5dc4-9235-b2b9-25d52ddf4db6,1237463629,698542886196551645
+013055b4-99d3-8f30-c928-1d7f7fd17bdc,480924482,9037033920469702884
+fe57c559-edce-1ff0-848d-15601c714a3a,415766958,10795869611327620698
+7ea5979b-d3ec-827c-a63d-35e0a7c3ac53,820889035,599890699827388663
+8eb49542-ce32-20c5-147a-0b49a697d1cc,3856899189,15988550535262618548
+ea6f82a2-e486-3a26-3af9-0ab486ba9f8b,1585540827,18124521318657516836
+43d3a3d4-4f63-7939-21a7-46c496f483e6,4206750682,12494623029654798964
+418a32e9-7fb1-0533-5db3-8dfcfa1e97fb,3377652381,11318752539221232665
+92306a9b-0de6-9254-ee0d-df3182e91b85,376212830,13826030899066478763
+2ca2c711-3565-c70c-de0c-deb0db0aa607,3955973362,1835085972778165495
+d428b14d-0655-a6d4-7945-78278e0ba517,2051672895,57483740597646869
+d5ef78c1-a34d-ba47-5708-78532774ee16,2641800446,28244178010999440
+bb70f5aa-5cf2-340a-78cd-aa9dcf41b82e,741771399,2516394938584537627
+0be832e5-8fc9-22d2-437e-44c47705cdc2,3448912688,9258833070527360017
+25ed04a2-8a34-2a19-5bb5-683c160cf5e2,4072795593,10815632303274742834
+d6a32da3-e3a7-377c-753b-5cac08a23a76,1609604809,6818662853334708525
+cde4267f-a935-0e1b-8683-bcb58488d2e4,3712946914,2636716962183616945
+dc4bac30-5be2-5b3c-643b-ae3c42e218bb,1601190257,7347991701394241421
+62cab368-7b51-43b4-9264-3239e138f345,3739467593,3296500220702352866
+fb0c2865-5674-cbb9-790c-57c80fc949ef,1206796099,16710099314034475349
+f5435032-123a-646e-8294-e2a834e553fb,1517106712,12114870829059675272
+cd4260d6-8210-d9c9-1c6a-fe1a158fdacf,73616349,1473204663939007296
+28d0b185-67f5-cff0-5121-b44f934a3397,2924587930,9451356213262557103
+6489af34-b8b7-7281-afdb-bf81e13843fb,1217543047,3522307343730921016
+022a57c8-a4e2-6046-e834-02ff0c25d9c9,2042601805,2569733085761914417
+f85baa3a-e097-178d-4fd9-ce437eb417b1,1303030090,14645574841885288889
+56aac72b-9359-bfc8-fd62-c7a8c86f7575,4185054805,16929500239456550522
+cee4bfd7-8fbf-e75c-15c5-34de93105e3f,3511291593,4631802264482052931
+c04f3b26-bf8e-e356-9abe-ef98febdee3e,1088804764,13597861896718215818
+2b690bff-dc8c-fbe6-09be-c402694d1f2a,1424336056,1949989421480755995
+18a9bd23-ecbd-6502-5f85-cc9973538e9a,3357158124,14910482197996437541
+c8c9cdd8-b257-3159-0159-802112184583,1431296363,18101449132984267202
+13565b63-6b7e-ec8f-32a2-1cdae3cdd846,757528181,10607401768758908730
+96c8d68e-29c3-2653-417a-01c58ac38e0f,1758096713,2162047362785832461
+cfff059d-e8b4-4f14-0edd-85b9a924c0fb,1692895790,3268633384900009153
+5b3ef2d1-b4af-c018-d22d-83e11f0daeca,3247490541,2890522514435975927
+73a41f16-d1c8-f7f1-561f-e558b139ade5,1165821772,2223958013842960141
+fc4337f5-a5f8-7676-9631-93a50c5a9aa4,2518250968,7427374308935060135
+5bd34228-fab8-4b30-5981-0ad3fbefbb07,216365191,10076610215545176597
+48558c98-c731-199f-6df9-51a75bf3dcb0,3017077721,13015295921026342210
+d9e0b792-4779-82ac-5790-f06fffc2988f,2513654957,4529811890803764070
+e17e0646-7164-06c8-9789-a8243c6d7848,804865716,9502769323709096052
+a09a8d30-254c-3467-4914-3a9834a1aed0,3355989551,17176161240562862471
+61d3bb0d-29fb-72f9-41ee-4a3319d4e32e,1903728750,17751754136760047745
+6f48269d-8522-cce6-dfa9-9f6dba9fb873,2896263319,136509492415460076
+0155c57d-2244-d4f7-289b-154b78fe74cc,726389296,3822147518482214137
+ee9c8a23-1ce9-5b3e-ec89-1d1e51dd4170,1095452765,6636449967440960612
+3cd307b6-7a73-a234-9122-185c09a0b46e,1061780288,9558220555801091370
+5d1c3cf3-e741-f4a7-f926-7bfc209f4c45,2102134488,12006464215317663067
+6c4e1d42-a787-7173-04c3-d5583cf47af4,2602725944,5583009690353288070
+48705801-94d6-3ddd-a22b-d8b508f56076,3734908969,7876650811292099635
+1497223c-552a-347a-fa7f-67489ef5cf09,698181248,10988669104021560059
+82c02f8f-8dc7-f6b4-97f6-b1a96e2371fe,1991854520,5642291395836071839
+e1c25e16-d40f-dca3-88fd-728ae92272b3,598324096,8034769242130487495
+0f0d87f0-b132-e202-7bd6-791217550247,3268959674,5324436343577941511
+a4c5db62-1023-781a-acef-ce2b2f80b860,763160317,18428280176886860147
+f4784604-5847-d68a-7efe-ce722de6301f,2550260016,15648351890067484545
+4844647d-e159-bfda-a13c-5ff29e03db1c,4211389280,14841086721263882851
+cc075824-bd61-132b-21a4-cc6231772980,2462359415,3343702398119637807
+0609f659-eb92-aead-72ea-77d987fffc90,3649371505,4502691232893727886
+7c81d88a-7935-4ba6-e506-9308dcd6e785,609823957,5481882315785499909
+6af716e0-a17b-f87c-bf4a-27a3e2ac3b0a,1476659577,6381031558910449818
+ac6a1dbd-a09b-2880-8239-14704357ddf7,2027352240,1442436047600951414
+ed41ab65-38c4-a06a-943a-013f47a56640,1694232348,1944252998059698606
+0873e899-b456-0e3b-5ce8-6704db2247f6,1533445311,18246163562547313255
+e1765e75-7be6-651f-1a96-3f7f6f2b5e35,1716629866,13498896949423011331
+9fd269f9-b53f-6b03-d4be-f2b641498faf,3765673411,1112969759270317220
+ddc4a070-d563-7f65-7d7e-f3fb6ab43e9b,2253329889,1074154169064336959
+d85274b1-a905-3628-84ca-1536b4d523fd,4059962406,2275446399946394400
+ad83f155-ad84-e8b0-af11-f9b407a54d6b,159413741,10330741796047343996
+3cc3f2c5-df3e-8f37-a2c4-e1d2ad6bc401,4151849018,1734371388156147230
+6292009b-2b0a-bd37-38e8-45046acd4972,1196571180,8976725855640056954
+3a7e40f0-be87-9e66-0fbb-14dfe927ebda,2584584442,14348422825778556397
+99cd02b9-749d-1a3e-ed51-13eb9b6c8991,3335245109,11013938970390954407
+79359427-7bc5-1e2c-30ee-1dbee8693a26,3101642660,6708726513542419971
+869254f3-d38b-d768-02c0-5dd54a121622,2344155072,5326935909955408700
+04329405-4fce-0a83-c90c-5c43b0b83727,1013496968,18009026086659359485
+fe91831b-0793-13af-1a7a-43e82faa912e,2842126452,17481864111775601158
+b2a24273-28f2-827a-316d-38d9ca9a5a2c,3996333491,12428975727799013035
+88bb8908-9ee5-47dc-9313-a45db2526778,2929810347,1310971530444021416
+285fba71-ea46-dafc-bd98-16c96eca651f,2042811666,6163940459936764436
+efb7b2e4-6a3a-8fa7-26c7-8fde436faad1,910658392,10436448057558046189
+61fbb29b-233e-d9bd-9a45-b080af34efde,2913989780,3161881279646946554
+9da36f12-5dab-41f2-5e04-929b226734d7,2709202738,3713420590719853709
+619af8a7-e339-e05a-5f4f-3c7854d88344,3985381989,16145138089368119998
+f5ca68dc-1361-1a68-fabb-173d0f70f452,3176278478,8830437215172781187
+ac461384-b0f2-46bb-65e3-4d1af4f96568,2118498590,5069759871953703643
+82298437-2210-b959-29c1-cfb4d95e4d95,1627439918,10720460338890895227
+7465f611-04ac-e42e-da7e-a36dea432efa,2202100366,13770289457081013383
+a1257803-914c-4cd6-6fd8-e8dd3884b294,1063789422,1831436797208485998
+cbe93c12-6ff0-5de1-d8f2-630d39c97db0,1306857485,4949991153636565278
+9e51a40c-5b66-3a67-08df-e720917a9a77,3001917645,13196926185849060190
+58dfcc32-3cd6-0256-1e64-34936f21008c,32382175,15805223082350684210
+667e62f7-336a-271e-6950-01e576f8f5a4,4203756350,3181759026192278086
+59974185-9d7e-864f-e49c-76edcab20852,553476053,706339883148348958
+d55cad38-7e43-922f-7e7f-ba9be7d7f8fe,2492889361,8975476880893534562
+123a6b79-a8db-6953-dac0-8bfa7e076175,3617647540,2328574166790714495
+5a9e4480-c01e-e997-b06a-262040041861,1022159634,10844957218474957579
+84905032-6b79-85dc-aa8c-8f66749962c4,3315555560,17495439685340724285
+120e1020-e642-c2e2-369e-43994f03a065,1002570414,6904036702909049156
+0962a80d-43ca-12fa-d3f2-ec5ebb69cf31,1933060889,1210854675508035602
+30734e9f-62c3-54a6-c863-879b006e635b,595935321,5065554334274607975
+02aa21b1-a93f-4ab3-a9ae-619dc60ba3ce,516539879,16564768060562952011
+c46fd4ac-1462-ec1a-acd6-79dcb4666090,655713059,7127862145003850551
+2b8f25f3-ebad-b5b6-c880-bc039d9f8904,3857106446,5952563113036864292
+5e730867-6a59-9ee4-a12b-b187012fbe51,1131895184,17226796287051198737
+f1f2e59c-1a2d-780f-cfd5-b8bfa5eb907d,2123464531,2928238266109825720
+a51ab839-888b-4117-1383-5b3778c67290,1045575112,15883740827424781632
+fa2b1f09-82ac-1f49-e0c7-875e5689d942,1104256671,4631624580339697813
+81bb5491-cc82-f340-025c-a7726707ef29,2669310796,1954442771867798486
+1368a270-bfa5-6fd9-f311-6c9ffdbcee52,2086306115,16385981542688120856
+64d8ff79-9f98-7fe5-dfa6-9420d96e33d3,3716303547,9180816309875774326
+c30e1bc7-4c9b-d1d3-d406-735788f5c7dc,2283668542,14389456101253535318
+afb149b0-c23e-cd58-0acc-ac68a4ea3987,959968234,11187127742434853782
+76879ea5-7c36-7aa4-5017-65ce944a9176,1369839939,6574645436274372468
+d56382f2-ca97-4458-2582-27ba26b36f7f,4060137216,853248909324502558
+db76ac2e-084c-bfc2-63f7-a54e0696deba,3950286699,6802183638668967749
+fa21c05c-d9c8-f9e3-8e99-b025cd295416,3388566930,2063125657742857227
+723cef09-e1ac-89eb-4846-d50e1b1fd353,2665134852,6295574812583394928
+a5451dd2-91d8-8dc3-8bab-94ceb52fb539,1095606050,7506031628371845199
+e7ed987e-077c-fc34-2e2d-e139ff2bdd4a,3274668682,163625428117487796
+8eb3a356-120d-bd54-bf82-3b61670cb884,4200146950,3705980786677151965
+553e923f-14a3-585e-6ca7-321f220dbcd6,1254416791,7707903745092577452
+e89e06bc-a250-d8cf-d363-2cd57a64960d,36986477,10211333142765612042
+96f2e293-2cb5-963f-0f7d-a8ec63464919,2135311577,17616161204945107064
+fdccb69c-571a-0add-c683-5e00bbf407a5,384904298,14053031614038375137
+d459d46c-a415-5ff2-3b91-91af9eae7dac,2141809554,14423568369138563428
+1d519f77-c042-d2f5-495e-61e9b2e474d0,3287393706,15200877879838041609
+41e14a56-1e98-5684-4861-b14ced764053,1284733810,15601615294995562553
+df384206-dbcc-3d2b-23f8-759f7c255745,543263061,8184085143811399290
+68981b08-b49b-9f96-164c-3cb16ce63959,1583071205,16158558151134874981
+8aad4624-9e53-8dc6-fdd7-6f33cdfcf188,1877616981,11162168859295893806
+2bf38c14-530a-bee8-2a0f-d5f899f07c2b,2326199475,1846308988070223510
+a7a8b4eb-75e9-3f2e-6899-0edabc29f864,3480553321,8127017695107019405
+41a7331e-8401-2366-72be-51f44b158bb7,2385361230,881803333328774027
+a389cb22-2458-032a-4f41-91ce375cc279,4167073231,9364625406224007190
+13955ef4-01d7-59fe-dc49-10226cf3abf9,861664613,15248890877413353941
+8c518474-e047-df66-adae-40de4d4fc288,145197470,1195980813869063960
+6ffcdfa6-a412-3ee7-8b20-e3d8d3d074a9,3370243895,15769146684090798085
+de4ed4db-cc8b-94b9-3239-ae0c21854b0c,2170142522,3287100383622295055
+5d9263dd-ff27-f5c1-1895-82c1c6747261,2458416796,1531361821018799684
+b6f051e1-7004-4dc8-6ad6-14eee4e75cb7,2813947825,9597250213443080994
+4a9780d6-83c4-b0c9-5d6d-e9e86e021258,1035656168,1939041387579394097
+d444667d-0986-af56-e310-8643cee3da2e,1766773332,13921657732085206156
+2f7a0acd-dc59-00d8-03cd-5bdb0fed8279,2930838190,1896564745676909234
+f86d0514-7cd8-9a8b-f841-799ab59bbd3c,2440435243,10526751368220091234
+6f7e57a2-ec91-5a5f-ee16-5ffb45868579,2380038059,14851105663629663765
+dd612433-ba41-f00d-cfb8-a781cb32cad0,2402447431,7021716578712940251
+ba89342f-2601-e3fb-66be-6b093cb15748,1973766789,13239843047536905545
+8f0a83f6-5350-b8b0-6e75-6525cdc4bcc0,2344715226,10319309946939640777
+722f5967-8850-39fb-3a82-4d175c0281d3,3839554248,3191340417889019383
+9975bb70-459e-5b44-34b4-22f41dac4d6b,823786313,5851053480231344309
+8623257d-243a-3428-c518-101fe4db2e97,2890290166,3152799645223234865
+9e6e7fb3-d562-7962-b05c-b7f053c12865,2400186732,9499146223759711154
+a16a9959-00c3-4ec6-c76a-eede6b641670,620574105,17011836900894621421
+328f9f95-1d59-b53d-0eb1-a34b16dc2640,621686769,862906182430656105
+c2885466-4808-7334-6dc2-5d1ef078a6ae,3904145550,14907536055848626857
+02b58d4e-82b9-bda4-cdb9-c6a3cbdfb9ae,3092348947,4242783134348000938
+a2cad120-dbfb-9e06-b03a-165571d0e059,3260121254,2776556405490533700
+ed72d0dc-b1bc-61d8-87e8-afd0aae7f99b,1902572973,2280670658701650784
+4d5e8b82-f46b-c3fb-d3ff-6f56bdb4bc5c,18073452,9657547800449852612
+149a6d61-69c2-f9c1-fe41-f196b49c36eb,1419603320,5110757493305745032
+4a073648-09c3-6a70-7534-66da9331d6cc,2348300894,14514758803261661305
+cd0735eb-a8e1-a897-f5b8-b46ab7a7ba3a,4187931083,2504280727757310216
+f29581d4-3e55-5283-c65c-ee9fb04b9743,535276056,8759764138022997222
+3f1bd78a-99f4-a1e2-708d-7f352bc069cc,1501173730,18418585164542531943
+675a8e06-c4e9-0c1c-b7ed-d4b70dcc0ae4,2464288744,9799544389051581909
+c261cf2b-c208-b406-df49-7b694f1da9af,503983487,8874364417061465998
+e09626b5-1b26-c941-dc60-56dab2761696,1535736639,495278541598121446
+e0ee820d-5c73-4f49-6817-aef007557659,2062896914,347248418929713017
+5484a7dd-769d-ed27-eda7-817ef82b9c1d,4026054794,10620964842982398454
+14b3be12-f307-c86d-963e-25fc6781db26,3354949269,12933617690416591373
+870c9cd7-8bff-c282-db16-8026474d0dea,1211290370,10460152528245818495
+73927f65-199f-2c3c-8cff-420627ef63f8,3906209173,2661200302777422256
+dcea4790-5212-1977-500d-80ce27374bef,1685990728,5743554133881851306
+61976f37-b3b3-4cf1-8303-86f193e28a6b,4226535281,13372227287120932382
+cae9c2ab-48ac-addc-13fb-1295df69b8a0,4194750177,9209984576724278549
+b279e593-ada6-a7cd-6f24-d3319384c645,3636744932,8924552839530575184
+e6b8684f-969f-84c8-79ae-81b5f8f4c939,3382598798,5149374357282756272
+b8789de9-9dab-6896-4b57-ed9a542e8f90,2645980912,8885794791578978466
+ad2bff15-a34a-d386-abee-643d9136a679,2968868836,17130257374850935667
+996c1f1d-29a1-7e6b-3776-e30e7c057c38,3207403330,17207847873095660129
+ffbcea50-76d1-fe19-6378-1dc9982147fa,2274630553,6114932213439951931
+c0c66e2f-ad6b-fbb0-c5c5-675f6ba7dc73,3014503744,9912171514656507223
+4b43b5cb-5627-dace-5820-1b7d4d1fa11a,3886938257,6965259752291051395
+b778039f-1cbb-a360-e816-026c5b77bd97,973245138,2235685228785671250
+346e3d2e-4e36-5a46-8cb8-84c14e4c83d0,3683487312,18221552907016416593
+d03b2400-63eb-8b20-ec1b-f8760221a10f,2513687332,16526997561355725362
+3344cd33-be75-57a5-6175-8bcb57629a1e,712164589,12614572259551358224
+a72ea837-532e-d027-44a1-41e3e5afbe10,2867855713,14332738998195627155
+1fe9693b-a624-dd95-cec5-38ae4c9a802d,2881918996,7197033294210019217
+64072b37-8db4-dbaa-8a07-aa74cd91ed17,3514173884,7671369616766864197
+3f52d448-813a-971c-8887-07ee6581adde,1516936092,7248680970562919465
+9a14ba05-b14d-f872-1b12-9050aa723ff1,3770015755,11170410840364569306
+59a1abf2-c28b-a587-0dc4-726105384e9d,540760258,18273478443930790412
+7acd2166-a650-016f-9d9a-5aa92f401f51,2785806318,6894136365469610850
+e6179966-c556-d3d4-3f0b-16fb55f12fcb,2230110091,6016769678469239062
+b3b48b40-a5dc-934a-77cb-d33572bb37e1,1797361860,2546234107881233652
+3d3ede3c-5a1c-0700-c7aa-813297209c66,370209492,6889014325363402478
+da418694-b1a5-75b6-c4ee-9e35bb9f185a,842038250,11067996749716230000
+734554b7-511c-e5a5-b3cf-cd48e1e3e07a,88340110,6928848520017832685
+dae86892-5a2b-8c54-b9ef-18e8b44b1b24,2556049691,3427433761780901992
+fafd6d8f-c1ef-3e1d-7f88-05b72292e97b,3831403236,2783726330667654117
+51efddd3-fb0b-6c62-7365-90065cebe0fe,1489929167,14504542302807057191
+618d5d92-80a1-c53f-1f93-5a0761296230,4090045218,1375815032036244354
+44217ecd-eb23-89bd-0888-e8e19224188a,3934113711,16561538102989905222
+b82fd3b0-b7f9-f218-62c9-970f55fcb971,2912942703,16451224740407682005
+1aa95055-e9d9-b3bd-31e5-c6637783d515,481042486,6900121840068712270
+d182846f-9371-5c37-8963-698b48ed252f,1859709033,5734494603403059692
+b2670d46-19b0-c091-d5e9-13c61535227a,88760663,7072906515528771426
+7dcd60f8-32fe-c6bb-c3b6-c77a2f1899b5,3288812829,17850281430141219101
+671c705b-67bd-91ec-923e-9407de4767b6,268017605,16474459047393944957
+fb89a70a-10a2-cdd6-005f-da7675f081a8,2297903948,10170132711354221747
+8b2d9684-1e54-d800-735a-0d1c02dba0da,2472692996,8154385670596868560
+3923abdf-83a4-5ad3-8920-e0f17a537cfa,3532710309,9224830335246389321
+34109521-53c3-8c6b-9a1e-b4d6a222f5c5,1784772849,15796236846190443482
+0a1148a1-d4a5-b38a-378f-b89108551310,3212313109,3227728428427960027
+4736ea0b-4fb6-da31-e567-9f4e146f8e6e,3190883825,10366482459522886687
+fcd5eb64-9e1a-5ea5-b329-c74c23356034,2413365122,13080314089015223555
+4ac02495-5e80-8c78-7ca4-1ba8d767880c,3723816271,14724446293495249417
+508f2d71-73d3-e83a-f08d-4b52719435bc,1665698757,1425463433428381662
+e70440e1-82d8-fb57-0050-e83210f466e8,2067658330,18083701209081769877
+e8d572f5-2086-9261-d20e-93d5c9fa194d,1878151498,14498482535389626085
+5a297b7c-ed15-3c7f-1f43-ab13eb917caa,2524044357,18040323166550243124
+abed837f-b70c-d4a0-b5a4-a40c669e7d0c,2251264372,9968525985355488620
+d2d7edeb-498c-ea05-055b-11d950799ac4,4069433664,18223059608169209411
+1d7746ae-5d00-df30-0984-a837a075fc70,682743531,2610673266435494670
+c02ea60e-ee68-9228-044b-a9330a7f8987,1945033960,4127932364888652824
+aa03a341-2c32-a195-1ecd-e0a1b191178c,1875333205,1580667735003283480
+70405acc-a58f-125c-879e-0b09dd15f07e,1062566618,4295361798688067655
+9e7bf800-d645-0b70-286c-0fd99f9a4807,3879541530,16499555324596220482
+3835d2fe-53d6-d1cb-3a8b-ba5e98feb5f1,4153485714,5353316253737275360
+085b3740-f1d1-37ae-cb74-7ead2ea55ad7,2366583729,5004460415005027551
+c87045d5-cfa7-7e40-3d14-185baf63f58e,2113847448,10545255491029888818
+d232b845-f227-b51e-ef78-0b2418b326cb,3194362549,13147229359513609206
+9e9a0ab3-2aee-3454-df55-57e335477f52,1165338671,18267974145843804679
+e71c434a-4e37-0774-267d-60ae474552a3,1031530872,7482933045274367360
+e857d066-4177-eaed-fdc0-8d5557864aa9,843980368,7508289130069695834
+1ffaa154-fde1-7a1f-646d-0777e6ca8ef5,100645770,497615383118124010
+d0ef6d45-9f70-74e6-ef0b-8230f0a6c05b,2078154751,290983294571405589
+61f7c89b-bd0a-a4ae-d2ad-9f4938a9cbbc,3197072085,2030960559873686103
+d60b4d43-0dcf-000c-21dd-5d7d7efa7f12,2881526133,17800507012069862302
+f48f1f16-5d5e-f90b-d8ea-f365493b8701,618949067,10531735387110643792
+355a5364-0448-bb58-c076-ed56c8091bd6,1041358018,15773702337556417739
+442f0beb-9607-6128-329e-d5fbfb15eb19,1856270021,931685212533611299
+66ab7996-cbf7-c618-4190-117861f87038,1282946882,7506859993156771718
+e68015f1-2d60-ca9f-19e5-9467596e026e,532815802,1181649215095475164
+63a6cbbf-f948-b1f4-53e1-b1fcfd86bb67,2632278588,1759425274718058548
+61a459d6-a1db-1f67-c52c-2ad873eda509,671810395,1562278225637200796
+2ebf6cf0-3b5b-7bbe-c940-e834636ad304,1072580870,2366078146423259606
+3d8ccfb8-17de-6cd5-7301-5befa2628689,4293411506,6464826772418916859
+1e1ab917-2068-e1f6-8d4a-2b682ec6ca5b,1544990439,14916344799176984855
+b03186d7-0b4a-9adb-7dfa-98e86a5c8714,2093430023,14848235215533080610
+7fd1fbe4-9d58-b635-4acf-0a3877dbc2ef,2329647852,2875732281922770183
+34f7df99-a62e-5fa2-663f-f56ac0082157,106867966,857713467742404516
+5d000c47-4c4b-b451-9d20-3b4ef4d67210,1831525366,1865523503474604214
+b28fd273-1dfd-a757-a559-04a639dbaaec,1908954534,3478882702142507906
+dc74620a-8c5e-e75f-a5dd-d05b24394bda,611036058,3282700552130012223
+e29d0fb6-fb6a-7a88-d68d-73d1311042af,4283917058,7888997338464512365
+c5a08e0d-70e1-6825-d1d5-451c83274154,1571149272,16595719248964246272
+90a89905-a108-1a6f-56b1-a18a01cba53b,2204941294,7469709473759526636
+656bfa72-dedb-1656-f7b3-f16f950604bb,375122398,12812604942045902756
+31ec5f9b-1762-c027-7cf1-9b344056b02d,2864061702,17445698733875939378
+88600f9f-4ace-4424-6139-dd2c44d92b4c,2402451802,12987459934857807814
+1bd4bd93-4717-b0ee-8fd1-6a7dad654092,3326126170,9654272909866137085
+218d360c-5322-ae67-d249-d341ccf7fdf4,4279854387,6268580190986814795
+3691a93c-fc8c-f5b5-7e48-518bb5a74a16,380653323,4164095307642180567
+498b3b9b-e8eb-9e55-a9e7-397378ab6bf1,3173077280,1063693858952716533
+f901cad6-6e89-58c6-dd80-792274d4c7ab,1774976663,2930267732451843675
+ab740721-ab1b-ded4-d754-c59e86d5bf99,2758848481,10010165772253017933
+227d00b6-9773-4092-4446-6b089d65d1a2,2677295318,1534940823272904018
+3b880a29-bdbe-8c6a-1403-8d26cd5c81f7,2376571927,3261488326191059306
+0a9bac23-121b-c2c8-4e52-8db4841dc2ab,3204500348,355127353613889377
+e00646af-580c-a97d-f83b-d8dd026a6d6f,1325264808,859507193849037382
+81d4b24f-0612-b571-7ed9-7b0296cb6d6b,3654518609,14663171890803706274
+6f88f57f-2068-c99c-49cc-cc7ee4411ed4,3135302390,16032720473835996467
+1e30d4c4-a65a-5e5a-134d-7b996f068ad7,1284421938,2988201153528671660
+2e50a0a7-2eba-ca6c-f3e3-8a34f2958531,1626995968,2786914134623783289
+777bccb1-6c85-f7c1-3050-fca22f4fcb23,2373679080,7979942746548813366
+36f878b2-c741-22b8-f08d-ed90ca62a69b,3767522370,8924951591872567061
+09b289a7-cd59-35dd-bafa-dbe838e39fa5,2573437017,13977695775877134646
+08d41566-6622-c22b-ff3c-fc57ef8da780,1585179558,3064223063939273541
+5645c034-7b51-4ec6-ad98-a62deb7c25ad,513952389,6102854663847308434
+34f591b6-78db-0d56-9a43-0ab80e865980,1167152725,196965157433062579
+c6534e31-a10d-4996-c167-5bd14e55a1db,2539491748,3871932222554274310
+1be92780-68f3-cc1d-4cb8-c9b4bc0dde77,1087901032,5005287097262218730
+4e370927-cd00-023a-bd77-ce2e4666ae15,1586362327,8583050981567277556
+204d4f12-12f5-14b9-686e-90a8cfaca304,3062427514,15940087970734941930
+1f1476d2-ad18-34d6-aff8-6d2fb3b297ae,3270809670,6920253198037461685
+527aac4f-a6e6-6e72-98dd-a1f52ff7dd3d,3954628252,15432282943921910435
+cfc81826-8b60-011e-af42-b38b6f3bb0e1,778118181,4589903481166422846
+0db12f96-4461-ca8a-638b-f84adfdf530a,4004542397,18309705289277289622
+3bd4116f-0b42-4de7-6d34-17a9d02cb82c,374937450,5247985506916302236
+04134d5a-415a-518a-f791-18df457f34de,2868956433,12249501349036644935
+69443dc4-fb01-3a30-e715-a944c8cf3871,2164023942,1557882932982509864
+e60f80e1-faa8-1b40-f777-967bc3582049,312116880,5367172755717125415
+181be465-ba50-6ed0-6dcd-ab448462da80,724689888,17687586898427215554
+7d0d6167-29c2-9a6d-a944-4082f6fba3b6,2546290787,677183126748759354
+af9dd6c8-76f7-0ed8-7f9d-e938a31547e9,1742699744,9434627657839288964
+ac9f72c6-ccdb-0999-5f7e-f29c48646f57,4071701303,7321036007523196827
+8742e8d2-3b3d-17f5-51ad-4a977012fbcf,2975674025,7083949980014820848
+89ae264d-c9d1-3aa3-e140-eb6b475c47a2,3524158924,9182083807407106355
+eb76c50c-eacc-7906-726e-0015366c52ad,2637930086,10953074796479306685
+a70e319e-affd-8c29-1830-6ce1e6fbfe27,3209858564,330433354791997435
+eaee58d7-453d-8819-ae43-176eca5d6834,3190990337,1050954482804280746
+9133a39f-ab42-c8c5-0e0c-a84ece4a4a57,433369616,2423119160826029691
+f7465234-c32d-39ce-54dd-42b90809523a,1009211954,9786483138539417063
+82b74f58-423d-216c-5d06-34ca11af92ce,2686521436,2686037211149827221
+0f7622ad-31b6-8c6e-6f56-47ecbe77bba2,3850969157,2029174790273490463
+b67a6050-da75-295d-fcbf-30e6a79df38b,2894486840,13465514793264897477
+1d76f5df-8bdb-86d1-e7b4-234d7a4db6ce,3757924631,13918344143713106381
+66f9f8c7-a90d-8084-767a-e165e65abff0,1671741465,18375475326414032713
+2627c1d7-7fb2-bb1a-ed9c-c2ba5e8ed9bb,3004908972,8114275787539121516
+bf969bcb-d6f0-a2f6-0c9f-7d309e3100c7,759089395,6757623407570216752
+caf0400f-2522-cc59-748d-aa94b8a7d116,2872712344,11753968703093638353
+e2ab7ac2-6f89-ddd2-38c1-8e1bdd395113,129637745,4606497699564688927
+d6b063a0-a7c8-f5b6-bbc4-ebb7ce762402,63024100,7668417147302773788
+944a43dd-dd89-1330-93e1-f48ff71f66d3,4129072546,16856787431272785125
+7502cb96-d30c-d18b-52cb-0007ffa8b32b,1462686705,813223859225578148
+64240afa-0db6-2322-5e2f-353a02e954a0,4218203821,2433107258811914698
+1b4c97aa-2d1b-87dd-a22a-e19040c69c0f,3861972042,7952400328982699084
+6a91de49-a000-1f05-17dd-2443756cdece,726009929,1552976807577624068
+d0123787-d97a-7d2f-dae5-26c6923a68b1,4058356929,17172403094499285233
+99ccf9bf-62da-df95-1645-55238c1e859b,1280329927,781750048987202099
+479d81f2-ce40-eac0-d48d-7f68a3746319,2075944721,13978955913045490786
+5ffd6b5f-0a33-e4fe-784f-d6e3c01e58c9,784539725,3037783431109677502
+dda44684-7ec7-3c93-6d38-052f5279e22e,1573618506,17706150047369193025
+d2befa63-bfb2-44a0-2f03-e2975e45e9f1,4264913775,16677982925729626580
+7e773ba6-a2b6-51a9-9bc7-eace5ba9a22b,3034760142,16648095173684737160
+c9ab8102-6553-29ab-26b2-0d1d0ca42c3d,1180251109,3883716383632744177
+48a9f01c-8a20-e56e-6601-c6bf04f2ab63,1993427187,2179089887727750221
+04c64387-175f-f1ff-a152-9a034a84f3b0,2461313925,10038169143034683445
+41e2cff0-6c6b-6427-4cf5-61895a89b5a3,3800219839,6989492319243359012
+85bcf398-9e3d-d811-50ae-db234101555c,282366315,16475204439477466428
+86d1cea9-86fa-3878-cdb2-1c9a19e52940,3965637997,3228043563003483058
+fe9a367b-976d-7188-ae4f-f5e0461a5a64,1660194867,5227025027693671351
+0e95cf54-2fc7-dbcb-404e-d8857712acde,112935345,9542460466431740962
+4cdce103-224e-abfe-93c5-91622f6b4e21,2534782056,2873909925373464440
+64d4a515-7f58-9787-e6b8-44474b4268e5,2546423464,8576071107372143522
+63d48278-0c8d-7db0-f415-ac9b81df6f11,496329699,16680951404848488969
+9a93abed-5e1a-e4cf-09f7-478ffc280ede,1263779472,9397424722129343960
+7b3272f2-627d-49fa-0ece-23a8e512ac0e,1872490360,9930091006241890069
+3e047506-7cb1-6fd9-f124-c1d5c96ffd77,3085589999,11611108950248048830
+1506903b-99aa-abc8-1978-3762e27c2b4c,715792760,11034107245940186496
+6acebcc5-bbb9-d0c4-f499-229ae14450ad,3818894458,14599809199967210793
+265d3d9c-e66c-660d-36fe-f03066b7a285,3252235475,12908196318319561012
+439a1e04-3de6-e055-8cb3-042a23b0289c,1302125129,18275012964515772300
+710da2de-da31-e085-c7eb-aae24ab68ae0,1801643762,12410345633037408144
+a5642e9f-f118-8ae4-0238-76f2927dd7c0,1384590320,12802725284531404924
+3f87263c-6812-be13-2228-c7ece49a455b,3257241773,7400175030272561931
+c38a76c8-2f79-65d6-3265-14d47093eb94,2191843048,12798868125818173721
+5db9eaca-e6a9-c996-c413-97daaaddcbe4,3813590313,8631142927973895436
+9347562e-cc75-3280-2ce7-d562f1fc1391,3044473863,17267257377809354498
+d00ca057-d652-f7c4-5e7e-613050112673,3077271025,8164528156253663783
+f6c32abd-8839-6c39-666d-549ab9a13c16,3068702608,8173490139954705977
+b3d5a36f-5176-6591-1539-b29806dc7014,346463695,7572197510128620301
+b8fd6ccb-d60f-14b8-29a7-4b24153599d3,2919527359,3150790307203341421
+e57fa4dd-5ce3-e08e-33f8-9895c145d3cc,2893975706,3773893713276933820
+9d439c65-de8b-53f0-3244-00700308c686,2705224213,15274331787189902653
+f1d8b118-8139-48cb-c372-f4c24af473b7,2559656385,12992979916531825449
+7da567c1-b2bd-446e-5d8e-d2a35ca82067,1784447727,2309498272186637303
+f1e0fafa-a287-551d-2b01-eef4237b426a,1733148940,1702331529576138794
+c79379b6-5285-e726-e8c9-78006f05cb07,2856464492,12640561938034813085
+542b01a9-f91d-6eff-d1c9-00b64641da8f,872784004,9202142070414176103
+4b7c8472-b102-704d-3fae-a8b1ccf49bde,4109483995,14824693905662689688
+3b363280-0bac-fcd4-6159-4e7807c3394b,3084180765,6458732381560863249
+56fc7048-d281-194e-771f-197de0a24799,2666016449,15258022893104030947
+3f7dfe50-d7b5-2987-4f87-7659278707b9,2205669999,5248311930484626966
+197a8d65-9ed3-b934-032c-e944deb50c81,148162579,16893556313983922077
+71c1def0-d8e8-d938-6586-905594232bd8,1721959817,7986451043274440001
+01bc661b-33cf-e1fc-8959-9ba5cc55ffc2,597032581,12508503546750961628
+39562061-0ed1-cd8d-cc73-183398e3bafa,300659295,2676234638749925358
+a8efdf7b-eca4-02c9-d868-ca77dc327916,4233007775,2787532514916366606
+db49df20-edbe-02a4-5eaf-129094d7d7ff,1022933691,10879945439204421348
+7c6bf220-b498-c943-89c8-5fb98057c23e,2309613672,6259029286498086377
+b2423a7c-90f6-0c05-5c44-2c9edcf376f7,1239057193,12992102079981238890
+29fba62a-b6eb-c66d-9494-7b4e88b26bf6,1822544462,14246262050572029641
+ae05f931-ae09-5221-ce60-ca5e21356ed4,4190930114,17463062685971751923
+0349f0fc-3434-6e0b-24be-5367561f1f79,304828268,12157490873484949466
+5c884691-9d7c-5332-a0d9-32fb02843d7b,1240802346,14794749607815943332
+e1c08bf9-bc15-0f85-80b8-51b9bbbd892c,1215051445,7605011241229957484
+82593bbe-b991-6689-956c-11e920bcd439,336538285,12711947790434328493
+a0801363-24a5-8dae-715d-8bc4ec3e7857,2040890526,18350568715843976399
+76ed0c04-8566-4bd5-0261-a2ebd5dfd56c,3493363415,8889070297838126513
+811d4727-96b2-3b48-71e0-0e1bf0eee3eb,899831851,11945685951774164316
+4862ee49-b64f-fef2-9237-c191c4927d3d,3238114544,18377288664685693913
+116d75a8-db1c-54bb-0637-ee4ac9970834,2915648223,16117428613490947132
+bc00ec57-7b10-817a-86fb-e7734d610756,1558507346,5831237263163587083
+9de29113-88eb-7046-a225-61a512b9d0aa,1877590984,2657587478830320781
+d5fbfa9d-dfff-847a-81c2-f0b3feef0159,2188745190,1131488603184687366
+5d4bf46e-9e93-42c8-81d1-ec1faf926616,1580246581,10800788774178200569
+2f840165-4744-fa49-b8df-710e4382cd59,3604377092,17547768069478955943
+8e7e6498-f6cb-0a0a-265c-2eae55d61cca,1520004828,10437275579109025962
+9c6a5a76-bcf9-8e9e-8d63-fbc6ec2d9e5a,3248781576,4965503526772722014
+18661d80-019a-eebb-64d0-395b40b19dce,3970484738,13809931685626986151
+159e0d78-beb1-fae9-05bf-f76e6409dc19,749143646,2844220001091263499
+80bc36a6-d421-849c-ba7a-85e897a74da3,4286864095,3357369257826905295
+8c112ba5-7876-9fa8-3c45-5291f9209347,2758233248,14182185346295970616
+b7be391d-1577-99d1-acbd-e3260a0d616d,3666074395,14344987430263792066
+a4ab02a0-834d-532a-f503-db73d647af46,667489581,16178081861043835208
+8756710d-0243-fb4a-7841-952e008f0a21,1018427560,12838468027406658703
+cb23dcbe-e5b7-c354-509f-924fbe732bd6,3966610100,7993283262874771741
+19f43bc4-da53-3c13-df07-2432ca206770,592687367,15051110571580101522
+ffbf314f-7464-bb29-9657-023194314208,1850258687,5265163894730280272
+f782cec6-c225-f4a5-edb2-f145d0851e97,1181522772,8453054699693166381
+74c88c77-43ca-407e-1f87-b734e7598fd0,3661318083,1416769099893289773
+a6936f15-b2c7-2213-7114-702a500700a5,1714188361,10507894267515179160
+aaf5d799-100e-7eb0-cd38-3a28f5e117f3,3468891449,18065922734485109919
+3310ca8c-bdf7-98fb-0e34-af2b4062626d,3653699005,14598489583934132284
+915fec13-a5d1-6d4e-6778-a4ffff47c2f2,3615475132,4524912473924562151
+4b834188-0766-92c0-5dd1-4a9780302b53,2383930852,3112997272915604926
+4d79d12a-8047-201c-55c7-3cdfc04e1f27,4067620651,1514898769937321018
+2f7fffb1-76cc-f8ff-0495-b22c83867204,3529371746,6638515971416649180
+56b3340a-7fce-f591-cd32-1e67e5534aec,1792316400,2590815591105332025
+7fc98a65-9f2f-adb5-b647-60219da73788,3009006546,9422787851902589493
+ee8d2aa8-ebbc-11a6-4006-6e84e48b7fb2,515352801,3513096903428370060
+4cdc1d73-0078-d72f-2f69-23c547abfb5d,1498013882,5827437897743298276
+1ddc7710-c263-2d2b-9d4b-fe1f05b32cd5,3227110478,4497929707682305669
+4c3f5232-1d0e-8af4-da0d-0b2ae9ec4e43,25228565,14053724373114109667
+8d86e567-603f-b2ca-f540-935605a28f6d,1587578753,14813530247894918969
+d4fedfe1-23ff-637b-b17d-f6b305354a83,3144696533,1699307543799138649
+fc23501c-e639-0fa6-21e4-9569930e2577,2546644876,468009429885793908
+34aa0e41-3862-cdfd-824d-c86de7c7ef44,1738598651,3467857988936012237
+e0657d24-8822-e414-8b20-676f369401ed,2515978230,1074405801368136983
+51d90790-398f-2dfa-8d2a-ed41aee11e1d,2675681733,1773920334328996462
+f0afca80-7582-5c98-d953-d4bbee9ab995,3800443499,16968486428093471382
+0ec520f0-692a-607e-0d80-b0ca9efe90c6,2584307116,2920080546621475049
+c7622d24-702c-4cb1-6168-9fa988035dd4,181730610,17155759725299557635
+0e0b9904-b28c-a303-82e6-338ee29680d2,1078725678,16989600592757140478
+0c700a4d-5896-9b86-c941-76fce699dc01,2050955592,12406023555162455621
+284cbf85-4078-b1dc-772a-8640557e67d1,2293552489,4046371776136796720
+8a3f961d-6309-01dd-f08f-f87b916df3c9,373652934,12660336431791134493
+af81b506-cb06-e43e-8bf9-178ae0761f7e,1384049664,17176960808920228949
+df0f8e4c-d3d3-f3d2-7b2f-aaed7e67572b,142598394,15861182081301379944
+e0064ac0-2a7c-e2fd-3c1d-34b2b8386573,930785342,8699705188886343650
+1faf42b7-6277-ceed-3400-c75f27a23a80,3147560067,18048477051600968432
+f2616d9c-8a4f-a3be-bfb9-3170b69f0fbc,1455941602,9116113816036061162
+42e7a0c5-351e-03ae-67c0-4cbff64547e7,3684679389,9442830289285822030
+742a3ca4-0e68-bc59-9392-1fe44f744307,1603229694,5105089196297267471
+bf8f7848-531d-7f05-e643-d8270eb86440,2099585329,6898421212759656665
+41823232-5065-b9e5-39d7-427c42cd959b,1682484883,6941929524398326981
+49c7764b-a2a2-e6e8-7c11-d7c745ba4d7a,1768581487,11465950588538770759
+1a4e687b-afb2-7b34-82c0-148d3c370e36,313331353,11626845875589355779
+7cc8083a-5f35-ed06-c59e-2bb9936211da,2103347620,11638912146500578253
+3c763637-7af6-6f9d-127a-e98263db8515,1320598169,3865550134749044969
+b0eadf8c-7f6a-c95a-001f-91ac81f2ee8f,435399480,11435141641041727616
+744a743a-74be-1634-31d9-96f742cbce09,2859725490,5074241003884386303
+731e2c80-10cc-b103-4e17-31113e8cf1cc,2919800764,976123927632805602
+d497264c-8fd2-5880-4a2a-dc9e072a3309,56881953,11845397343785685356
+f90555d6-b032-15b1-9dc9-ef1d8650371f,3802881276,3615805054844819468
+7e4b3955-5a44-d91e-ddb1-9a618bc380ee,2764397026,1005351980702055731
+c59bb1ed-8a69-23cc-7a53-0471ac25ed17,870915681,5018827955831078937
+ceb0abd3-88d3-c6ec-26cc-80666eebf6c3,1098445318,8400960285880864247
+8ed2a834-2cd1-06ee-e8f2-d600b66fba00,3431698466,15965256224246734973
+f0cffcb1-8ed8-f346-e56a-542f25797653,194176973,8825948555079679480
+d2f39517-bd48-b05d-c3c7-a2069c9792d4,2686461975,249814735661681333
+57073ce5-8ead-e493-4c71-0289669d76cd,912967131,14189031319958736522
+429732a8-bb09-149b-c533-99b483290bbb,3759865763,7734558115499186588
+3a3673fc-6b18-1a30-a772-a6afc36c46af,4049888891,4163472522589780437
+cc69464d-be6d-b5a0-4973-f715a98b3879,342152798,1981352834833679706
+9bee0fc9-62ea-ed47-9356-2cc7771463fb,693661187,4829878527137419728
+46da3a43-0011-3fae-bb81-3fde7a20eab2,607301078,7057596336763012323
+37aaf450-bc16-fadf-9521-cfb06b5ea86d,1478684148,18015703018008907298
+37e098ce-cb41-9fb1-b2d9-c34ccda00af9,1374905867,11964089698487886536
+a0f07ff9-3ed1-6e15-591f-33da7afb7df3,739429657,4845477624465518429
+f92cb796-98a9-f34f-ef77-0ed819d8ebd5,2141578980,6704638708343284596
+cca01cf6-a466-79c0-94ec-472fd3a29955,1280998652,4303793050303140997
+c87a8a0e-833a-79b4-9c79-c37446f1aa9c,3570325807,1192586520050455314
+734a3231-8d37-8ee6-2294-7f2d0f3ff1f5,250767898,2898907652227363664
+fd19cd4b-fcb9-69a9-0066-6d84f4ac6b26,1978253458,7270898806791618346
+0866f9a8-ea35-7a1c-2774-9d06cb8fcd22,843159960,3833154781152589300
+039cc8f4-5f87-c084-28e8-b781d381977b,3921308762,3156214569570086105
+5b67122d-d57f-6383-879b-c5fa8dfcf49c,2593560967,13177585561162655985
+d38df3c5-39f1-4823-933f-90d7a63be495,3595036194,8180509761780919240
+cd5ddd84-45a6-02de-79bb-47e1f9e5d089,3111313447,17176729148858012071
+1507068e-5827-9174-3c98-1199617b3197,4241835150,4656569736395147320
+c47c1229-ec90-2e46-e287-6286d6ae5bda,2100040293,12434977894835431366
+1e60367a-3ff4-d16c-7835-9480e0d412af,3316768845,6439705878594948899
+30c7bec9-775a-f42b-cebd-99fd342ed55e,3727034067,9698326770204684809
+4592c2d4-8739-c9a8-f026-3fd8b1885180,3032789971,953622509750095476
+3f34b92b-dfdb-787d-6b76-ed5aefb402a6,3087266916,16569253048208883971
+f65f59d3-7b65-56a3-c303-f3c2c1dbe97a,623581141,4230057105442097648
+789ab828-238f-6551-6869-ea36afc08cee,1092529664,6063173308204057915
+ae3e7491-6b42-9dc3-5e59-9870c83fed4d,750646195,7302279144295268355
+e2c27417-1d04-4cc8-3cee-386d141159c7,3992656084,1100324890955693649
+939e8c31-c073-3449-47fe-2328a31c92c3,1678461661,14560119075392160588
+ab7b6a78-2de9-b824-a249-4c4e61bfb377,2184911356,18130558547751865224
+6c214615-fd4c-543f-f556-f8494d3df536,1356063053,6905135167394802193
+c26af6e3-1936-953b-2cb4-fc88cd262601,1597644958,5540274788759781646
+8cceea29-2499-f286-5dc0-29aa5828a40d,543105124,93832526479660454
+2f421395-57a8-42a2-a66b-5f84502c997e,3450180416,13872326055773682272
+5beeee5b-3c91-5884-edee-405d698c3433,3007389802,9553465270090374102
+2a95fc78-561f-b6a3-458f-a76675fe584c,3777913782,12506434809881608062
+afd3ea9e-8571-c296-27f7-dd948cfc856a,4147054342,2263300999984531347
+b9ea5e18-0597-0456-51e2-834e20f97623,2934382908,4035135261611366851
+895acaa8-a079-2a02-f15f-f8f71ba40cba,322175501,17442170715607354922
+1d8d46b7-9a16-0b72-b1fa-69a730084ed7,3010017050,11939432124771519933
+75661879-dd92-98b7-5d52-5a400d378e69,1252134594,12036895654528346315
+690b1882-72f8-b258-15ee-dad9759799b0,4268553307,15866427156566191128
+a0ff1525-1108-7094-c5fa-ea3421b34916,3076886784,592803526327697577
+af91cba9-9fee-1ba2-f179-6b6b1be6b0bd,3906367559,10483584821468004248
+930c9f8e-74b2-78d1-e594-bcae764c2db5,1562709147,4961892128076306247
+f3047484-a913-de82-c4fa-85be918e79d9,1227666696,13139373363362885408
+6665ec19-cd1f-252e-18cb-1885014fe4dc,37851896,1618591175675825969
+a2d04aff-8233-04a0-5a3c-286be5b21e11,1610132125,5875985917437381484
+2df5e1ab-aae3-9c5c-5cc5-f323e6db8988,3061001102,8041397606193212058
+586e1c7c-af50-dec7-2f89-6eb1e617fa4b,3711665736,1501538345165394110
+f38029fb-66f1-e4be-fd82-3ab0498d9475,4275723418,1428451832385499210
+4e7b1ba8-5cf4-cbdf-88d5-e4c49e8221e5,244950943,1127511514060538524
+a45bdf74-043b-8f25-5259-697551db8b6a,3904248475,5022991749101271854
+4d54c268-40e0-4169-18d1-7aa8ce2dc6ee,2696006402,925624700873094168
+1e1f0788-690f-85bf-709b-296efe2d72d3,186984783,9749420635177039356
+f18c575b-760e-b18f-3ebb-a0930dad94ac,4012621659,8168125431689712882
+a47ef8e3-8e74-1c2d-bde1-c45a806cc070,4034478301,12168691307053480668
+83616846-161b-cce6-d423-1000baecc8d1,474349321,16080650809538326394
+38294005-735e-1449-a08d-0882a13c2102,202865426,14497838843771355455
+45cf1bc1-2b95-9cf7-ea1a-7e8aaa41699b,908992450,12300948561076421240
+0c91cddb-304b-8d73-af93-a6baa8fb3f98,3562761932,10201435020428404296
+e258c1a9-3ec2-6d94-6016-2c60f628e301,1395546541,16231549051624654967
+4d454ef3-d009-b84e-02f2-c2944ef7d468,913579931,5429169450335292319
+d9bf1d12-1b0c-ced2-654d-f4f7b4caf774,771379576,13157334065349764496
+a81cf19e-04ac-2b30-96ac-86c39ad5d61f,1264405315,4262647798633285049
+06c3ef92-0319-cf8c-cde9-9f53c8caafa0,2276489553,9597778020351179878
+acd5004c-ff35-4e83-995a-0ed46fe0e779,2684069960,5712202436259612131
+0ff9dda4-d7b9-fb1b-0756-a76aca28623a,698382568,4122759741836989257
+2f17e96a-1911-0d1a-abcc-7a29d44c3110,837923670,7332861344423933098
+dff3dd4b-460b-5f83-dc16-d5ef4928e71f,4129640747,14837894940588439460
+d87176b0-3cb5-667c-6147-fe47e6146005,3730024801,8803576846585074107
+b8f8014e-1707-f67b-af95-346120ecde0c,2828618739,2353686190599638380
+ca17845f-2b2d-31d9-8257-6c5652ffca28,1455572084,8291379352521723177
+6830b7f1-e056-0445-0a15-75e7c90d13a7,3861206805,15056506542974499
+18b4228c-8a79-80fd-bf08-b2b8d279451d,1933718733,18117364687300311029
+eafc9db8-7d87-be2f-97fc-047117566c45,786959191,1896539548092459364
+68011bdc-fc42-909d-27b0-02dece920a9c,3047496271,12769353723424816701
+b789ec35-1afe-4ae7-1b37-896aa8d39528,3623913317,16977319694493518437
+07865cac-d2c4-1928-bd46-8c2d2b44ac18,2356402790,3389020497479899130
+62d5c4d8-0918-ce34-5c5e-55e972da7de9,2754323709,998454993863585880
+f7bbfba0-78db-8c44-ad65-2d38af849473,2915490820,8659459263078978965
+3ed91481-3fd8-5231-0393-ca776180ea6f,904437284,16336983811906087106
+e3273c6f-71ae-19d6-00d5-575bbefcfb39,1883875206,18243078700692498564
+7ec2f9cb-acb1-511e-7105-2a3016889256,2988547129,8346022982880957900
+36d5faa8-aaa0-ec74-1b0d-13884ae9e315,2068279331,1072240992293067445
+6b229f95-7bcb-2186-af07-b9ac0ade99c7,3390504574,16726820788548688034
+cba61670-f490-5a6b-ae79-6c031ce2d960,1449364509,1490875765317301274
+3ad58cfc-d59d-50f8-5b0d-fd088adf73db,595150955,17810005626026463660
+ee35a31b-4cd3-11ca-fcb8-441bc4eb93c4,1681026529,571979170894943128
+218ce70e-97d5-bb4f-8897-125dbfc75417,1067203644,17662363120180082278
+5b1d0d86-a914-96e0-7dd0-7dc33d53f8ed,2870480382,523932211882853648
+6159dea0-5ed8-9f42-c049-915645d8139b,1565446490,101171654992992573
+a481402f-8c9b-6baf-037e-b78c047fd75e,2036714339,9695010153983024971
+0338b0d9-8075-a385-25db-fa4f59342e57,3990096045,1308812313941036615
+a3129b9d-6c23-d5f1-2d1d-ae5fe94b619e,1183634708,16346595839200712679
+fedd810e-2218-405d-c68a-19b737a16e7f,950863099,15305502942990280200
+a0708e21-ee4e-1fd3-8119-be0eaaaecd45,3639361522,3733309550453832914
+7177034d-78d1-e4ad-68d8-4d3574e30d99,327731468,471632511120969575
+b176c8d1-e63b-1ef1-3d74-3c94a3d09a64,2781172594,1720123815461638199
+2fca2a50-df04-94ee-79c5-dff137d9a156,2598868100,8960368061462691751
+cf7d6f30-6a90-0a9d-caaf-7640a679a814,1430843145,15397699504814035932
+7af346bc-f9b6-2e64-339e-052f9427cfa3,1321286786,1443966280403296264
+36739bc2-cda4-6475-52f1-852861926df8,3343328853,448531487733995962
+eb383579-1d7d-042a-028a-45de00756a4d,3020988290,8302643632365910626
+9d709cba-be10-0adf-07fb-1a82ac0e8182,2586491931,4720164945404748460
+851880e6-79b5-2d1b-a391-64e949fce44c,3732146865,10807858365626106139
+7cff5979-5d4d-844d-d93a-0e7a9b9d2997,3780122470,12783574274834998132
+7e22cb2c-7d1d-1815-ee0a-10c8a9a7729a,1831049687,15579143745268452535
+92812bab-4f72-60cc-1ced-e3c3246e551b,2811453356,16525533030679877177
+b389f14e-ca1d-74cb-86be-56542865b5b7,1056798300,3964602229239586732
+d4ac9d84-2a04-e33a-a843-c16bfad853c6,690997328,1656893335923036088
+defeecc3-963b-e710-39eb-f3f75e9ebe7d,2633126058,13382401493290785884
+92057215-1b5b-e3f2-03ab-fc0f328aa6b9,1886493370,7643095551521984289
+8b63de2c-b491-5815-9e38-46e7563b940b,1190156965,13107808997443057550
+c14e39c8-57a7-6aae-6e95-243f71ab5ae3,1977701995,8558061060287196189
+b39db58a-cde1-0668-57ae-8700dc3ddb7a,1275459943,10279038590252959352
+95c8ee29-580d-f9b5-ee3d-be97df43828b,804242660,17973528392091596500
+eb0b2572-e900-27db-4fba-85ed443f56f5,1933125894,17558364639073152869
+ed3562df-56c2-dc84-fad4-69540d077724,751034258,10830557187182161973
+16c896b2-127c-e4e9-58d5-eb480b6cbe64,1720853599,17113647039197662446
+db6da3a7-3e9f-1462-6eac-8af620f0540d,4113357175,13778602270042302843
+ab85ca72-d9d4-b905-0a92-ed576d3dd2f5,2699196624,4469956145511021158
+1ffb3a66-ca79-240c-70e8-8aacb948cf65,2343278241,6531323261041108612
+99397824-3c98-acf9-383f-f5ef544b6fe9,2007428151,3717796331593186765
+cb3ab48a-d3b4-cfd0-42c6-c98129fdcef9,1016712958,12875986891119817711
+72208dd1-b957-b824-e5db-90b728ae253e,2683580584,6424287469283879593
+723e8d4b-9372-6c2c-d99f-2c0a40c55e9b,2263141742,16714598845691120550
+2781fd54-c9b4-17e2-7482-960469bc5634,86629859,5969485124671180280
+1683271e-ce7e-5a39-3852-1828fb3f0d76,1471388179,5485267557256851555
+ad561521-a3fe-9695-a7c2-d6470f13e92a,3562193462,8266121490419792396
+d234c7d5-8383-5f2d-10d7-b492f9e8bb4b,2014459340,15203589036567627304
+e2e8d296-11f5-6152-04f0-5241d1b5584c,2862279257,1996460159540193681
+37a8a77e-11de-cddb-fdf3-2a39c6227510,3273016238,4516243194439375323
+e68aeccd-162b-43b3-e1e4-c2cf2ec86f66,727483471,5896221093586530990
+7ed883c1-06a9-d3d0-c0f7-6a93521b01a3,814609962,13340704823969637362
+ed733afe-a3dd-cf55-9614-28a9f63269c8,3978616894,16522042590393093159
+e74801bc-413a-3606-b4e9-b8cbb2477b78,4171128747,14999454045420219510
+0ca0893a-401a-04e4-687a-345103985c62,1481726164,9878703913576846276
+9e100aff-6e11-33a6-fea6-8fd0c08f32f9,2405543087,1092639716129396994
+8bbbc8b6-ac99-3299-b258-4851b3438575,2335431132,12036583860775973564
+842c802b-1493-8dbc-5641-2452f569f0ce,3310550777,12427236658108032268
+6f37798d-4884-caa5-502a-fa1b6cc2a8e7,2125536817,323591745758717385
+bb20f609-48f6-5a2d-7f80-8228e6c08197,3107892850,8742800681311140128
+b1254870-9ca6-0574-c294-d2d8e5c19392,3277018175,16389113797086186647
+a2855419-c646-702a-892f-a1171e1b577b,2205952765,4761113916490677990
+af7f8fb1-bd35-7e57-d889-bef2c452dd8d,4219007357,4406365664717210051
+3ff434ec-7c9c-15d5-a200-0c5cf05e569c,3565987808,11252039053089524907
+9f1f0510-ed0f-2c13-166a-9399041cf676,921698003,17709175418826271149
+cc227d71-4eae-e717-9058-86a6bf5ba656,2159519694,4885349450760363525
+b0b8b1bc-a6bc-a138-c46d-a66481248c8f,184294263,1795112562114445766
+63fe32e0-3280-c5b6-abf3-b9ea97946285,937771271,1857639217204669296
+371d3039-a33e-c828-6b08-927e58096172,3008661253,1176030158885302280
+a4dcb0e6-2ff9-d4c0-26ec-d340b8823cc2,2920944843,18358088932669179379
+fd0817c4-cab7-fab8-811a-1a37c453dbd6,2150832167,18400125802933883055
+104620e0-ad6b-d6c6-db3d-8925df3b5329,3296726249,13128945646282455698
+d01b6d76-103d-a353-c6c1-66c15b99d870,1856487270,10799276418382499234
+3324ae18-2c85-15e7-3b82-9b9fbeaeb2c4,962670667,4627954835734991065
+1ab6f666-0ca7-e1f4-0f8e-92989e041801,1231738313,11866060143029640299
+7ced21d3-8efc-db57-0636-9917f4318d56,3509806915,13466848272488378385
+437ea493-e346-f6f2-c036-32050f3c37c6,1455617840,208001997023064387
+565f75b7-5093-a7e0-6f3d-b042e54a4248,3575353249,1426755287374169748
+0a39d157-5a64-e210-530f-77cc291f1abb,1241263360,5080266935468655481
+12eb603e-99fd-2198-6532-24b958a49501,562715809,9837654328266883124
+6ef006e6-9060-4d0c-02b4-d288bf915316,4182377093,9429698643752509635
+406431f6-771d-e2a3-1ec9-ecd086221e12,3138227756,14553327971846990095
+ee217b7a-bcc9-9cee-a225-910d04bc3631,2522552083,6522282498279637845
+594d7c2a-2807-801c-a7ef-e9c59296971c,2699638977,237739265556065459
+f1a8118a-cc97-7338-964d-9229305c6d74,1069924269,694708264073921106
+054d615f-49eb-d826-8970-1faf8ad69df8,3634205789,2258912674143982168
+6e75108c-25b7-93d8-8040-74cb96f15ff8,3353557601,17933486135868687151
+3d57c81d-e11b-4ec0-44a6-788c98beec8e,400056310,4486965665942574671
+3af8e534-096b-f157-ff56-822fe51fdfca,3227913491,5833298893121464630
+bee5e3d2-aed9-d278-dd83-c1431ad548ca,2702282720,4094195156274077960
+58e1f0b0-b93a-2167-c84c-beab4baa1a6c,4228678876,8711272636105702178
+57425c4e-4233-bd79-c6f5-19ac4a3ac576,773564817,839814345983304330
+cb8e8273-f05f-19ab-db98-ecfd895c33f6,3120807764,15125966973447285736
+523bb27b-f3e6-d0d3-d92a-c46053a0ca8c,4069801253,13986748489938838130
+6bec2153-c990-7746-9be2-a26719219386,3543919222,5798747709098515613
+ff758abb-ace3-6c26-905e-339cf6e3bc4f,572168514,3132918800234709063
+6235e012-5963-6e7c-0074-f47b8355e0c6,1244799670,18118522770261492226
+53e1b058-2cf2-fe74-06dd-6c4123895228,1184825637,5643252809231962193
+63970273-1ac2-a987-3235-ddbef987d8d9,2391159048,13951295792627389393
+c9b624b2-5d5d-7628-38da-a4373155f538,2857462563,12657896175058582712
+02a1b88c-06f6-d8b8-7e2d-37c0ee571274,4025513044,15564216407206973756
+40d2b0d3-9053-56bc-3e50-e14f6824931c,1071709261,16361426937871032853
+61113441-223b-e910-1e7a-84ee6f12710d,3058834185,15473793393162972729
+cfbef2a7-2bd6-d72e-6ce4-df66468b5425,4179304162,4754413870240245474
+433dc34e-1016-1a41-95bc-9d5a2f6f0544,4140378753,13996313608833085260
+be1b9272-f4d5-e984-2ecb-8c5f07ae1589,2758271334,6667186454681932932
+84795069-c8e0-dee8-6be7-3cd05896e1d2,1007178775,3488703775063732694
+22c82fa6-d6ba-f4c3-6103-6698d9ebfd27,578914437,2028970656549628471
+2e565bfb-e61f-c689-e22a-49b7a7b17d40,1630261303,2174927042961230673
+9606de07-5f19-a5fd-7584-5bc5a363af41,2473824746,1386074411789802453
+1a22a8f2-2c47-9bda-30f4-cde7256999f5,146275629,11126193901948810138
+2f3214b5-939e-6766-bd0f-0a87c84900a2,617850961,5478043181630386325
+06bf1053-8bf2-4bd7-7bd9-347c6e1d6ed3,2365921398,721044534992362851
+047ab20b-0543-7dc2-f301-c609c2dbfb2f,1601918367,1850679115759598059
+818cc3d9-1828-2b5e-ad18-4b62092fef93,3237032745,12593500833871011535
+f003c891-814a-5e23-79c6-4aeb50edfd80,1871013552,11649359060056445252
+ce5a7da3-713f-6491-218a-65bac68eab2a,831284725,13275137747797912304
+cefc7ec7-9f06-ac8d-9cd6-d27c0d4d355d,1563018568,8799171007084185502
+eb21afa5-da4a-4791-40a7-ee1146d01237,1188199796,11779511807389900071
+39ee1b8a-b3ee-7cbb-cbde-eee81b308985,3834325647,7749848128019233356
+67c3d2f3-0512-b536-5031-a8310c0c2900,2312690308,2064183359168653896
+70c091ed-4a84-1d78-ffd4-4f4b8a67a9ef,1495513049,14955299426931277629
+1990fbf2-e756-5885-c990-844c476b3c45,1293114130,16728047094407392543
+7186e619-9132-3066-82ce-175294db26f5,1786715216,3326968990359880157
+38531889-12b7-2d3c-90e2-06001b5aef65,1748710874,400395384652237886
+59c1db34-c75e-dc15-44d6-2a71d8ffe519,3063754075,15841047900896948218
+7ca20727-ae97-35c9-a1f8-a10d7f2bdbd5,3052683171,12868920135541420617
+bbb335c0-77b5-f706-a688-e15516f545bc,527844423,9303638715594710293
+8bdec61a-cc9a-e390-e638-226de8ac9f99,3640313715,1803741904640514240
+fe745f1a-42fc-eedb-a847-3f7715896441,2562452534,10345082281400496055
+b329735b-12d3-0077-e515-30dc5f5e644b,2040271862,1087024902602495921
+20c1cd68-1556-f30f-935f-004ce57767d4,2057446246,2409294598080474315
+07a1bd5a-d1fc-3a67-5856-2a4a75034ace,1321373503,2545100481856628389
+8142b939-4f43-13d0-05c8-b8e22032017d,3049589489,11500090290348792133
+25f4bbde-4ec8-8324-3250-5213579ece81,2202789574,16852432729154381701
+35c61c86-8be7-211e-ffda-afcf1f5f09d6,1628391515,15166657710053186740
+e4db21e8-b21c-730c-add2-6b4d8832c698,2987163656,16689412531448073951
+2c1804ee-b275-70cb-f08c-f567303ba0e2,1047659292,3631479180902741650
+dcf993a6-6b06-41a5-d64c-c06bef5cb3ed,329568518,9281285659069083773
+21caf334-9491-478a-e32b-edde650e2fd9,614448705,1532624229797258836
+af12e6a0-8f22-0b57-67b6-f778aebbc297,3934325819,3280165129312903822
+43722bfd-1b2a-98ec-6145-52def276441e,2066215672,14300416984686117696
+84eae0bd-fa94-9699-ce9b-3e4cf5355c5a,3856962836,12887093430584690501
+b6aeb67f-18c4-0031-d73e-04fd67b985be,2266334420,12974432975429082764
+ce8e6140-5a40-45fd-63d3-16c99af00b4b,2300566775,14245119112673012714
+3f9c6a3a-7df7-c9a5-2a13-4411eb7686df,2805265719,5154132146675252707
+0097ab20-2673-2ba6-e2c3-256147459cba,1209157772,16213245971156220700
+71ea3240-e868-6f1e-6682-9d2da9a3a895,1798681392,9425494159046508431
+a3a4eb13-a895-b101-f6d2-637b049a222e,4021693137,12197583251962721570
+e5f777a5-3408-c0b0-29c7-9eeb3bbcac23,1787780661,14528115672827353036
+04a3c512-95a0-fc1f-e59f-b03d770c9534,269899056,14883805436925157308
+99820c1b-2d3c-6e49-9f2f-e6cf1340ade6,751347826,265793159192495000
+12cb1515-db62-c603-074e-6170f1be169f,221171695,17586568911004846659
+a8842c55-8aad-35f6-0c4e-f37b040ccee9,2159542445,14042989920411749648
+a9fb010e-8f9d-27e4-2587-97a0475fa2af,4284460528,16452515404939032562
+0be3c7dc-3bae-5728-fc1f-b4ee1674b24f,447478610,4070360480954913302
+f66151dd-6c3c-08a9-ff8a-84be247596ab,2552631255,7235580808865875521
+4e1b72a7-b89c-ab40-abe5-534014705a93,1311561051,5116039757852544465
+f7923ccd-d21e-119a-057c-1f0709b88dcd,4053549031,7756424819116819438
+0928738a-bbb2-1ee0-43ce-3cdb94c7b27b,3753014587,4315714354948369272
+f6bce554-485d-2cc3-2333-c3d6f1c7a680,2761423247,2537608993012820184
+97b680c6-1210-f1fc-ad48-53695deca60a,183315707,7826335999803175396
+a9df306c-5890-52e3-8332-ef3bde5fba4c,2215174786,3494554721978933216
+d1b141be-4b62-779a-9d47-fe59ef8cdfff,2185552263,1092872408280800934
+96bd43fd-8857-8e25-9aae-a06232793a86,957258365,11988319549769519688
+e0e7f0b4-3e42-e6c8-90a4-b93be66ab904,2596706239,10555819953660587836
+a4af5319-f4bf-f771-3910-e3a2502fe762,1084211343,14531096912177932661
+9614402c-619f-69c4-2c29-c9ca6a7f43fb,3098170794,12227691421238638621
+86a3c5e3-22ad-4c7e-de1b-0f9e1bf26dd5,932596884,349733439004445558
+92ee13e9-bfb9-fc1f-1b82-86a1627e7ca2,3481485746,12220965181635281187
+72cea247-14ff-32cc-64e7-5be816578887,1110450027,16677411421073194348
+6c7aca1c-d609-7b5e-2a79-02732f348377,1927734383,9152437914559731547
+b4909153-b9d2-5ed4-6074-75c3fa021e17,89227706,7530449845530590930
+f45b1c11-cad2-74d9-e630-8ec089f79476,2003975391,380342560169642834
+95e7b6d2-5f60-fdea-06d3-15914b0f2ee0,2944681256,12641054817197129149
+86247e62-bfa7-47ea-b811-1490ba8a2957,4072987747,8562614651432058917
+d29ee08b-fa51-1521-03a3-12531dc60ac2,1390441596,15908075274989507746
+5a0fdf98-803d-e911-a35c-db63bedea7d6,818030046,3657749269028587896
+176a1e3b-cedf-cfde-4136-99b83ec3f19d,2532296263,17428933288270157600
+ae012be3-7275-7f39-4686-726150f73573,799114561,12606383852948941646
+43156ddc-777b-8da0-8db8-8012b45d0ad5,475453063,3870284814138780027
+396d6690-f38e-6bf1-730d-63470d217c4d,3466974020,3370928834615701340
+752a2923-3466-68bd-0418-8acf48273535,3719666963,15582988949497799455
+a9d9c866-b4d6-e8a7-79df-8e5b5f4b9ed3,2711809148,5930260180362334854
+1d0ab9ba-79a6-b0df-5143-e3e41717716f,2001279831,474124485333789678
+f0a35b6c-5568-9260-c306-e3584e28eae9,237077458,1811535935451937864
+5b897939-20f2-2d37-9d82-0b2649fdeeaa,4049463173,15362065763887053607
+33256038-9e92-e5c4-f09f-fe1dfa3f08f4,3046545043,15465930551079072844
+7579f40f-1255-90b2-fbdd-31973d0aa55e,2004038727,9251244343017415979
+6a42a109-b8fb-39fa-7fef-bc214e1800b1,1433920507,3475559782266394670
+f91e4f72-d131-c5d6-4723-ba1cdf3e6042,2268924698,16696833951934368370
+0b5df727-1f7d-4380-b484-a7a03b28c717,2864453043,79343797657952102
+4d6c7123-10b5-7e9a-2d4d-f462f26a9434,559145493,13381729076345899201
+4cb2c5e4-c46d-6121-317f-6c9403d61d00,2399322892,5112764073972990346
+62ea652e-0155-7ea3-8413-ab04ef943f2f,4022705536,10165424998412992443
+eb6a06b8-21a4-4ebc-9bf8-474952cf31cf,1337644390,13358156771246958168
+00a4f692-92d3-4da3-738d-ffd65d1f6aab,3080204924,16524244128455104945
+44a729be-8755-29b4-7ba0-79844f928e95,1920430299,4209844420514125417
+aec6ab95-2de4-40b4-89a4-93a0ab4ff05c,184780638,11125016252501740216
+392ad2d1-27df-a7ec-6923-11719b4e5555,1086349964,169146284545791197
+ee91f7df-04ac-046a-7f34-644e431584dd,2890657368,10937777249847100929
+3b896157-4eef-b4e2-2b80-fbc89b17e3ce,3230970810,1481111767599539661
+3e5a1820-43c7-16f1-79bf-3e51648a5aa1,1277623487,11426919299505369584
+34d5e983-49c9-3b50-7a8d-f386f7001b3e,2665539126,1749379650341426280
+c8061762-3b91-b1b0-1c3c-83e49cec97e9,1019685522,13004049679620978712
+4fb3735a-e7d8-4ba6-8eee-c5d883f43fb2,4293890,14548994201193428167
+9c2785ca-f170-eb5d-7a38-ece45d8e0c2e,3219147337,5789712263740360313
+1b70eecc-5e8f-b4c5-d712-95a956b124b8,3353003268,6437679284610723931
+2682e6eb-2838-3012-d6e9-d1abad897834,2090535146,5881080871452340848
+309678e2-0de0-c90a-f88e-ce2a592d73b4,43682106,2365308622335328668
+3485ab5d-4036-b508-db86-aaffc22901f1,3249516658,8865389701380577170
+ccf727aa-6505-f3af-be2e-1bf569d7c527,550032809,8750485831704538119
+6376c9a7-8eac-999c-7349-b2ebe3cb88bc,4061394058,17553911435806645415
+fea286f1-213b-a194-93aa-a53f2d716584,3556120020,9399761925544246495
+b3997c52-c67d-0edd-57e1-a5dbc242992c,4132981537,6615921403295571018
+f2c81003-0370-7536-af0f-3ec934abb3ff,625364490,17878106515039557450
+1f4dba5c-efb8-f1e7-0807-596b5df53c1d,3740208284,17055065604450064692
+3dc05e45-870d-07a4-5dd5-9106b6f44710,107951872,16210600835440844399
+0d42fc38-4e4a-c9de-beef-071605396ddb,3897937588,3874256020656319490
+275c5070-129b-481b-f2a2-7f4cf51c4c56,3475201380,11674563531926952383
+e79dd94a-a14e-a059-f5fa-d21a9df18c13,4158787048,8323888311316752236
+a8411541-d9ec-1990-5d80-859a7e67f22e,555484902,10858801592268981583
+3b91842d-4678-f720-14bf-a5a526cb1552,2695008486,12872167249979131257
+b35cac8d-f21e-60cd-2930-64f6be05361e,4189237229,952850565525098053
+522f8af1-b535-0f87-214a-a2b582ec67a0,3520586293,8648963352508167019
+16ab7017-627e-4993-9863-d7caeba91846,2170673899,14347893026693305710
+e8a10c29-92f3-4d20-ab21-8f68fec054d1,3888986599,12161940154174521370
+eb438384-9616-b58f-fa94-ce6e9442f3da,3179605137,12941215466879393858
+feebf5bf-ddb2-bb7d-4e10-2527b42ac72d,4247680390,15808520480561064242
+47c2c3ee-e803-68fc-825b-85eb339ee624,4086012744,10782155359077819259
+c44a9af2-55ce-fb01-3d81-0cb61c5bc857,3983368875,11747675850611741944
+15157957-c1d6-e894-0120-b6f757db0c42,148270080,15828940037652781360
+a94d18ef-a472-ac6b-6fef-3b17e9b55954,2345195701,3166960271916802147
+455c34af-9e3c-7e8c-3aa9-075464946f93,3227369920,12701120004653454392
+02194bc1-3a02-f351-4c65-cd84a70c536c,371674765,11333259769295666576
+953b3250-8b7b-c8c5-b775-fdfd65f62f87,2827231183,12251269243481176081
+3ae597fb-70aa-f820-ade2-c4e45194d258,873532795,6964665911680607598
+bbd6556c-19d7-bba7-e30c-776e5a7a93a1,4251258684,7770909153077061788
+849eedac-b1ff-e58a-8c56-683b2e3d8495,2874166311,11851663952382282030
+ffa2bb4c-f5f3-1ade-d04c-80c55aeac6f8,570382468,17346150752351249445
+e694cbab-a8e6-84bd-38a6-a7afbe7855b7,2905674017,4673835365755387302
+5d0a6fb6-983c-63ca-d141-b3bacdcf8558,2258510200,12838837044114630158
+4024f1bc-ecc7-165d-69ec-5dd747819e1a,3109985205,13134093583927922474
+f125f052-2ecb-fc66-e893-5f0a95091d78,1320567599,3576630195744531993
+1bec6e38-ef09-4f3c-bbe5-a5ed834ae13b,287119306,916297296280263147
+62d61fd1-3a60-aa2d-ea82-5b5f72da96f1,737591784,17284194765896321733
+db2fc636-6c84-e3ff-c7ba-f863425316e3,697120437,9717976305358807829
+d2024ef3-96c7-2aaf-82bd-ac6f14392790,3557309334,9622815803098524434
+dc310e3a-f8b2-aaab-ed53-6b6a59ef6903,673945429,3611008326487543733
+bae440de-bec0-9036-6d6f-ffc093ac741b,1923880074,3505804892963242751
+666da1ba-93b2-1ad2-d745-7599fb300032,2255158873,16711541036346521907
+8c7d219e-4cb1-11be-fb54-e924cb6a64da,545001605,11011565998021700735
+3c30c437-e4d6-2307-c04d-036763a211b0,3627832494,2551686808799135072
+38a458f7-3757-853a-77c7-c973c659b031,3424873950,17893492609304094230
+f2251518-ad2f-04c0-1c92-f96a8e301b86,4152556349,10317795068446730161
+a3117dde-4adf-366b-cc87-90af475517c9,1885787919,852183844952960265
+2ad45241-f3dc-5dd8-7448-53257985010a,1895911362,17863726484782937738
+bcd008b0-de95-88f3-c84a-13436374bb49,4189588422,9709969321394765763
+d300aef9-df38-3c9e-9a22-b8550635602d,3084793198,7740184173379165239
+c5dc6ffb-2532-29dd-8201-e37692c8837f,2006945051,16993071282686885023
+af9393d8-f190-4770-15c6-9c9653449795,962437316,13865920289069717935
+d02e56a6-8397-0ff0-2ccc-a7bad40b30e5,540574528,7048278088948656358
+c3e4f0ce-d19a-4cb0-714f-a8310473cec7,3681669651,9768772667023250440
+ad6b67dd-5e0f-e5eb-9779-e40c04cfd700,1840794595,10366665402940782713
+57679951-85d1-b80b-0814-5d9d6d5f7ff4,2638492043,16809629251089348003
+2b876f83-265c-feb8-f565-bf7e22ccbf32,2795108263,4142222064448415806
+0452b083-586b-9efc-0716-ee809d22dc8b,2328019865,15396482297747962187
+8825c472-bd7c-f400-6876-3ca38f283d80,880402756,10834109156461672001
+508b9562-8d82-c4fe-0f0c-911bdcb139a3,2394683585,4211073845118351372
+ba8df11d-9767-6989-1204-e2f8f2cfbd08,582576012,398183474357953041
+6adb3451-245b-84dd-c38b-a0b405ae05f4,3764652031,11051085919132947713
+9cb5194f-6d6b-d96f-22e1-e2c7ef692b6e,912960490,17222081481700318496
+e358e245-f255-8ad3-1dd9-03cd10a13012,3045628894,1333600520646746883
+2b540ed6-07b7-597d-5a5d-9e0f9100060c,2599909228,6306577288835022508
+f2ca93bb-c733-3219-3fd6-f2691823ce09,4285074718,1321504923275858394
+24cca35d-248f-1c75-c97b-e5366aa86dc2,2752762217,3561795967696407344
+4a6d907b-7fe4-b173-8ae6-8ffdff72dd7d,3136642667,6361357713999186574
+99083916-4275-44cc-0f9f-a6afd51b3869,1528288231,3911564900872867807
+3030f3a8-c32d-ade3-55ee-f5ebbba3eedc,3637706362,4923128466353314597
+c6937fe2-8079-5c8d-e529-93ede56bfe7e,2191644915,5446752276205208561
+ed713bf6-e856-c0fc-5788-67a29215ae35,3558700670,3546810626381915565
+955bee8c-6025-6b0e-90e1-1f7b7a87f222,361955793,3840369166365560537
+1161a1d2-7bd4-4d6b-3113-ce81623b63ba,549509802,17307542606251923485
+d21cb4a4-b5ee-8edd-261e-0b93ebe83f54,1451463913,16418034205982686309
+e1978b4b-d8c1-2fcd-1d37-4a1f1668ed42,1078156388,7454929767595245610
+1f920f4d-41eb-6bdc-a3ea-283690efef0c,3514492189,9394269272728542162
+a4cef6d0-46a9-ca2c-0b82-bcff5019e278,2985031868,5728128724336948333
+669bb7d1-2916-d218-e307-b72ee7ba4a0e,3073966428,9589919906643567712
+c65da077-93e3-29ea-4c2b-d22181e5d6db,3175252702,15280797883618838782
+fa5e7ab1-9c83-70ff-b4c0-70cdc62d7d79,3793670480,15265655217974272494
+df2a6965-2658-6809-9288-a3228c7f99fb,713632346,12092894666722596114
+abe4c770-7ed3-c6e9-0d9e-498edcdc26c0,800986158,5736493120033338086
+28081a1b-2baf-e19a-a867-b8c1e2d9883e,1147503993,17007195603033539758
+ac0ccc48-8653-994c-82ee-dd2b9e94de7e,3031120181,15519470967622920366
+b7b4223b-040f-2436-83f2-c7f479a12d52,4047739181,17592881235114494381
+7ed4de97-784f-c2db-5b10-e6c3e90807ee,3357485002,1955374828218872260
+b38a8ce1-7c52-7a7a-4955-7afc6393d360,1765033034,1980722957432285774
+ac1ba4d5-a43d-375b-d616-32e5ceba9725,1995697392,17240175625693988229
+2dd10591-9ede-246a-447e-79c44a12c558,2985648667,530133582225511519
+02eb5cdf-4dd7-7047-e39b-56914baaba3c,3661416668,11698757581329144006
+68491a74-773e-0dbe-c3f2-b5caa33f438f,3710392768,8798726068280402265
+cf293b7e-3f96-ee19-e60e-a84b11b09db8,2208968681,2625889010891954171
+55eff323-e3a3-7d48-4fbf-b561837dcca6,1876409543,16474544586940186929
+a6e57a68-f2cf-c3fb-8338-d0a404cfd82e,1284902151,11465118212550267087
+254c74ec-021f-bd75-6d2f-91f0b54a4eef,420151691,4807739383312861988
+71d39b5b-8a53-0575-1bcb-2f278fd35773,2917921547,16877647178900218064
+06963c6b-0a4f-30d3-5d8a-05827c85f7b4,2265913782,14893336212618122049
+e9453e99-decb-69e5-a5f4-f575409f7b87,580948622,14050218317080316237
+150c4354-1846-9e56-d2e5-9b51ea2288a2,1054448056,17885525479331679731
+f592936c-589e-3e7e-2c43-baf8fbdd969f,2136558448,1690456246544064871
+3932cb78-d832-3bb4-3da0-f605495b4a20,292968636,904048690801422525
+35ff0f1c-cb20-ed35-0df1-90670ffb117e,3204650222,2663703593417570578
+bec58b03-330a-757e-68ee-7f5fd4a28e4a,407002037,2320436548564742947
+9b3c6fda-8423-d486-6aef-51edceafdcd0,3787003147,10296641489980868385
+00f28e4c-b4b5-c22c-6109-e948be881d0e,2588151415,14618105295071246274
+a90d16bb-07fe-3ed7-906c-4825c562dff3,2382868558,17739925847053019852
+f6a26aad-63e5-f27d-660c-cc2fa1f480f4,2825206384,976285439325008391
+cd4d64b6-2d32-c8fe-dacc-d665c4c5520f,1126939314,16164722681370186824
+3f28b01b-d3b3-af34-6a47-b0805edebc6e,3848111667,5726879147975486940
+b7d97a6c-346c-11d3-98a6-7eab0c5cb945,1546041767,12899352405609974932
+d8693883-c979-1ce6-2d14-df776d48bfd8,2920212088,1554745249345135389
+c5476ad2-68a1-1970-9be1-4539793b3f62,3762860825,10298399741140088159
+bb306ebc-7b44-136e-da62-d3896a3c323e,812309867,778558473873677114
+6223a2f4-00c6-2eda-1a95-0bd8200dd962,920707627,2095040713489182344
+85aa270a-9466-02ac-5bc1-94c23f9c01fe,2115493768,2857047321840336333
+2afc2674-5ac8-ca9d-14f6-b3bd9410d950,3286451675,6433825824006812548
+7456e6c9-3184-be50-d30a-bc61c95e6ce2,3629322115,6891281094669610436
+954f9a1e-0159-ecb6-d6c7-bcff3d560a8a,3694031716,8741308207970628454
+f3cbeabe-53dd-56bd-66a5-7853d28ab09e,4124615754,5435438777630771239
+adc153ac-ce7f-7a4b-da82-8f1270a6935d,1112940873,16625118162134824101
+07c17200-dee8-93a2-fc55-97966c4308bf,731301522,16896513045948684881
+a3b49b4b-acf6-31ec-fad4-ee3d9774c6ee,3463185369,5295244816962528280
+5d20a704-e124-42f7-58ef-3e569255add0,3219967341,9753972826683064431
+4a06cb4b-a249-4066-8e62-091c23cdafdd,880381082,18413889193567856694
+d43587c1-befb-e5a0-7825-bb7c832c1aa2,244738017,15313286147533042133
+372b4754-5974-1c78-4316-ac20b1de6b8e,699540212,938643544660402115
+063f23bd-0b89-ab9c-9990-a3a88ab854a2,3453530305,3272690874379003364
+bf19dc03-b42f-ee1e-8d1f-1bfff4dd33cd,2145409775,16027963211671502278
+d81881bf-dd5d-2e24-5922-2fa53c6de786,526667619,10241032491063792891
+16df0a33-e6eb-75e8-7e36-51bd7f9ea83f,1909189856,3954359725897918119
+3c145e1d-61dd-0784-eba5-25e009b9609e,13503151,16302440529102570184
+0ea526f4-5b45-7fe6-cd04-22e5590afdf3,219897197,3795349746495437239
+36fce76c-1aeb-ef0a-c730-d3eb03ce43e4,3683413825,5690561409219856868
+d408f384-9a9a-7ca2-bc05-e9dcf3cc1c6c,4223048467,16138298104396236334
+12149523-5690-40ec-7ad2-df306d4322a6,1711604900,14703715824102727795
+c0f04b88-9ba8-9d26-3d48-176287e1b32c,1097644502,8022110604740906562
+78eb9e6a-7549-c3fb-45fc-d4eb59bfeabe,2813942994,14415883129563645607
+2759a2dc-bfbb-2915-50ed-b7de49921e3c,2583028665,14593622874913597650
+09f3a364-2252-c334-dd48-162b9f8a4b1b,158925261,9050058524222226752
+16c6f216-c9a5-bf75-d8d3-4c3aec251644,2474481527,13919569940589537708
+fd1bb8f6-e08b-93e0-ee07-cc97c54635b9,1538786680,10016941685906539570
+ce5c8c15-b38c-b550-9f91-b9f420a03b86,2560400118,3088837793906173838
+33dd3187-3faa-5451-aa1d-e7a5a94adf20,2770647829,3835032319161725955
+8556083b-2e58-0978-9dfa-21408861602c,2246818246,13992522962946548217
+bc0eed01-85e1-c31c-61dc-640f8e6fe838,2504771567,3787936709680059490
+759583e2-bbcf-c898-7ec6-f719614621f2,2758315746,16442137131470113266
+8a5f667d-cf09-4a58-d3d9-d6572b113275,330505015,9284612168524522573
+f1b38d11-4e93-38fd-9f68-3563fe23ef98,4022816635,12438650239706276080
+55a9e272-fc83-01f4-e3cb-1a21a02c5e16,37494347,165020944141635591
+1be1761b-81ee-9b8b-d540-1df88ba33adf,317866789,12048577980368401920
+511eff5f-c686-5f18-ed02-a805eec22d57,2241082570,12272770471440067432
+cda783f9-52ae-4644-13c9-6b6b33f37ec5,1354445253,14170627578971067976
+90f80fe4-ee23-fc21-8b1e-98f972cc08fc,47309030,5283599598683687889
+d413a3cc-f455-ad9f-943b-b174e680104d,3673416841,10071249454296918760
+84d3d7a5-0ee4-aadc-89f1-f4a82eea2046,2598747802,4237588613320420793
+4ccb9d13-c3bd-3aef-37a8-970cce0b7939,2211732053,15683967187301857659
+c9d05d9c-b024-a6dd-2951-2372d7f590ae,1651667037,12581094913350555094
+7fcc5f44-1c98-44f1-7156-d46bafbfbdc2,4056290643,13318436236951866585
+01f8feff-92cc-5535-4130-3c1b4915a1b6,1818165824,13210440354014514015
+dd757b40-971b-73d2-ca4a-4dcb4eafbf7b,1723521757,11706129133042310751
+c4c95246-2339-2bc2-4d3a-d617870dd25f,3614821401,16467765828861634009
+bfb001d8-57e0-ee52-f1d8-17ac47109208,2577017374,609420411872288989
+13b3be0b-b7fd-5c20-dbfb-8810d4c1fd02,3594059487,4251595229969962383
+9a8e07cd-54da-6fb2-8337-55932c2c3674,2962305077,17964418257749218643
+ecbecc53-c6cc-58d6-ee13-49b061f05aac,2999740571,14142221082611505820
+be66fe2e-5c7a-a633-3268-84e5975ec70b,3083147244,16712232425431170291
+b5ddf797-833a-7ef0-521a-6feaa3a0a09e,31368346,17403940816488141529
+5e12e284-82fc-975c-b8d1-eb8c0d342107,3419710872,15364484381693851000
+bc007ffd-bf0a-80fa-4dec-8bdb93cdf840,3027452868,13252179126334519816
+6b50e030-8243-ef21-1a7c-487a8c342410,1911076668,1276231585365739883
+1d9c4931-8a79-29a7-3ab3-536ae166f2c0,2323968607,18361438234048488114
+3fafea44-cae0-7aa2-50f4-ef05b32d9536,2644092654,7176679946327907535
+c286f984-42dd-3eb6-e1fc-429142ea3e48,1556035374,26815196517461747
+fa28d80d-b366-bcd4-fffd-0300b175753f,3075666257,9326959915637459106
+89a7ebdf-1e0c-887c-4597-2350ee434226,3807222426,6271467797579408625
+d4d5e0ee-5bb1-85e1-4dac-a2ad68ca4ef4,4037529772,11401250573135164814
+fab8afdf-ac7a-df63-6a6b-f3489ffe7c5b,1303427391,1638459151800949806
+7b829bd3-3679-89b4-dad2-29b218cc4ff7,773355643,3479395332648725055
+76880d9a-9fd0-c101-e66c-dac59b915a24,627673196,2862120847924112103
+818a3ed6-f5a1-57fc-f1a8-116b4449c635,4256790286,2642582816787819466
+f12bfb07-44e3-68ac-49cb-bd1b3210133a,3011360244,10552783570132279802
+dd3fa93c-59d1-a00a-65fd-b22483d9c75c,250747754,3994549822837878762
+5362b4d5-0cf5-62c7-6fd6-4141c9513478,3150863114,11127620892041256581
+17de8691-2f46-536f-9392-4c5dae07accb,1167884514,4818267700545707544
+ed528ae1-7878-0063-d602-ddf7774848dc,7032218,16456603985273852022
+048d0303-b7ef-4f70-0140-d2bf10b0f4d3,222722922,6589871843971860265
+0fe2a4b8-bcfa-2dd2-ded7-94fe52ebcb42,3815858231,13569720642482794353
+696227c7-7b12-8768-10a3-738a72571292,2420794294,14391417469015077984
+3352baba-304f-7a3c-68d2-cd44ba68e3fe,3154289518,2746118642529287521
+b4efdfde-db56-09b8-9bb3-d80681028f8b,4262351368,15930059689925154049
+92847b60-7901-977c-f669-eca4efd4d25f,3017421959,7772065950951643631
+4bc88fab-1ce3-5d15-9903-e698fc1476b3,1513660228,1251077595141473560
+c6f1ba8c-8a21-e1d2-486a-71ad13064bb8,3119310880,17776749048953804017
+5b6fb94a-74b8-d0ba-b6b4-8c2b3bcc6aa0,1667957459,171313692760664263
+2deef84f-684b-e781-4490-84a64c7d8af5,3088196307,3664071784756885146
+f7a573f9-2887-d4b2-3ed4-cf644430ceb3,3016525451,8537668599197838417
+d61cbbc1-5aab-5a04-afeb-97af7440ab63,2491192080,4289681716877207211
+965ac420-a7dd-e3ae-72c9-c385c2994e98,747842115,12312126467078507722
+d67b84d6-9531-c7f7-e23f-533dbd76ba2f,1471723363,17863096856298973626
+b50ed0d0-dac8-b7d4-aa52-bd52f75c8252,10922354,913506115950309952
+cef9bc36-3af3-f523-b998-fbba650b5961,3904256018,8512112463665416067
+d5ddfd68-dcd3-d07d-d7b6-121e3149741e,2247304052,13014061657772725602
+ff4ce300-ca1b-ef3e-d260-09f192128661,4071280628,1591740590969281388
+b8746e17-0073-267b-21db-661b95729742,1813766287,10575379393917681466
+8f046ee5-61a6-9ab3-0270-0a76723b9003,3474866601,4162836487935970370
+daaa8e25-41a3-bd4e-773c-a73c8f5961a7,4154035359,13759335397174094877
+d50bd6ba-f186-e1ea-ee4e-edb5eedf15ad,1902277318,601897116550614970
+8d4b5b60-a4e8-c7ae-f676-7150b3b4381d,4025085814,2752285368823354909
+b1ef681a-f406-6c3d-bc36-0bf3153822ce,3664088943,12283907428497469449
+79bdca79-2aa9-7542-32fd-ef884db5e1f0,4163538865,6706693454396581130
+182ea13f-1104-7746-e1ae-19d7edcd97d6,720655486,9101631750884024400
+6fbc6922-ce9c-a45c-2a72-06a2cbce04b8,1891187229,13609800015809359137
+6ddd07a4-9225-b3d3-3437-fe15ecb6ebf4,475110382,15136948306422988459
+3ca1ae5d-b9da-d397-8c3e-d2e490eda1e1,3581272790,9375494993584176112
+2645833a-08dd-5eb2-464b-e3d8f4ec8357,29528599,6349031783352349693
+cf4a47c9-966f-0ce7-c372-25f98a8492c3,3638719487,11696834098819686675
+95da251d-0857-0456-b31c-58db03858359,3845197570,14471768813879869848
+f20ec1a5-8686-0095-b81d-6ffc798ffa8f,655076878,6354488089639561723
+741994a0-d6b5-71f5-f3d3-3ea064dd92f4,706563341,760077942584020061
+73a4b4af-010d-bd10-d550-263ce607e62b,149946176,9010751914207673611
+f1c923f4-1e48-f11a-fc16-e7da92da2697,120059103,12442832825531650881
+7862d718-b30d-b930-49b2-b843f0ec2f64,2457076864,16042715239219094299
+ce09eb49-e693-3612-f4bd-2bb1196f22f2,1339861097,11296859809408020456
+53f7d7a1-cd03-c853-ba90-30267eaf0386,3505951164,14065223586018135928
+5cfb7910-b566-a91e-7b2d-c39c36a80e59,2597315519,1271304952817087542
+f4aac0a5-fab7-edab-b7e8-7c43f79f9089,3510830272,8086784909364051049
+51a4ac28-3f96-b198-d246-8bed575ab4c7,2820903598,6199231870686235074
+9cda67e6-f667-25ea-276b-9b3bbf4a3051,2209732799,7860405746177575727
+8899c43e-3be6-7e58-d8f6-21a0be709b07,178051585,4545699970370184754
+3c774263-19a7-7ba4-aa05-6c5d22138865,2065034343,69205439653629028
+65117abc-88e5-4b55-4cd1-7cae8706b085,1188356351,11406576011507571627
+8984b091-1127-1106-70fd-ada8e97b3158,309914610,2553198625190424121
+4520d10b-f586-3159-a8f6-804437ce1c72,509293836,15690986767645401605
+de5a4e87-cc14-0f57-cb38-4e53003f9e3e,984031672,15801718718058396176
+b483e5a6-f813-ed77-1c9d-c87ea15e0f03,1041429180,17357975353776804963
+3f181a15-8d13-b9ed-d878-c636349a2394,2112541433,10719302928963000396
+f3b5b625-44ec-9bf6-7c5d-4f53bfa7aabd,3095355798,4142501048979727068
+6d845a0c-6734-746b-c50f-b8b74654df15,872994545,18004684210311590875
+b1f4eff7-27a2-aa20-d360-566e6edf720f,1064207332,3889434166054787034
+821e69d9-3ad6-79bf-4b73-b85e8c5fc1e3,1454174471,4830884051985436119
+04a24a49-19dd-1176-f065-d2e382e3f29f,1127892881,8719757415398697012
+11365617-fc98-635f-4e45-90d9bd523dc9,444767233,3429327382866607621
+1a9dbdf0-9149-a487-e3fb-d44650ab37d8,71287239,784895709940959627
+87e28481-cef5-72eb-453a-369617d2b3d4,2247670874,3146792033040636234
+c41d8960-d245-2a1c-435a-a8c1783bc21b,3154679809,5309578663548636860
+26dcb2f8-5057-3fba-3304-e6951faf7982,170314275,18271600872121694522
+5eabb920-a651-ff11-dc16-b5c8372d976f,2154906647,14337403991683651619
+0b5eacb5-deaa-c4d3-78f3-8298bfb236da,1614382398,12616311953757339411
+3eaec9b1-38a4-2343-3d4a-b544a203cea0,4220953806,15544130119688756978
+41e4e453-fa4b-1aca-66cb-8fea9c36ad6d,2980820521,6648236043975674982
+a462faba-593d-a674-6cff-4f87f1fad626,2606640229,7964948122978573066
+a00affc5-7cb5-5c07-21be-7899f4568663,3935693849,15544539277655847456
+1b861ca0-92a4-9fd5-6233-178c2f3eacfe,1693908216,16888169727618099141
+07659fed-b120-e5ec-f367-9bff8966afd2,2609390019,10700895636669688178
+aa23583c-10bf-06c9-8676-45cd87366a9a,3276719461,262777345626960224
+1c819793-a7e1-4311-b791-cc24bfa49860,1224577359,12347237624449810306
+e493b1ac-22a2-1e4f-1ad7-ae5b03b1a407,4227070218,11404183910291219355
+008cba20-ffbd-4102-d90a-ec035d31446e,3003266079,12285193702930069983
+2f6d2772-ebde-37d2-8989-c926bbcb4b94,3296291378,6168487759511417330
+d97f286c-0a14-aed6-da79-d3912fbcffbf,2428860108,9707866654037363311
+16de9215-83b7-b189-ba94-03450a8dfab0,977226101,1622753868284645395
+5c331e32-e595-3521-1865-7c02368eae92,2167142748,17887822616026624403
+bd68cc1b-6b2b-481e-cb8b-451329688b67,1398944864,4663038782083666960
+79697fbf-1e6c-b9ce-0649-be97bf86835b,1682881362,3546313052720783930
+8a8d76f5-b7e7-a579-9117-3c55f03fee32,640009092,11413906682628367301
+9d6aeeb9-919d-8ada-d00f-240c0c2893d0,1948066723,15640905683312612752
+5ff10fc7-b30b-48aa-df52-a6f6e04d6586,222936241,6807275552325629528
+321c1459-4d26-60e8-dbf7-5014a4aeee86,1051786172,12575057926806384752
+9d872b13-5028-6624-5b04-53f718344d10,3873008735,11198325761129268584
+fed78dd3-e163-e4f5-d246-e658b73a3b91,1427389817,10554500736600512302
+364bb2da-c69e-4a28-b5a8-bbae6e683138,3105455765,11596917602262527169
+bb16d0c0-01fc-473d-c033-8b8534452746,3358867397,10669020770332291838
+9543704f-dc50-be4b-f73a-db26b3a780d5,3802235339,14062491797129978845
+e52fe8e4-f912-7a65-1b31-cfba2b860840,579468370,15357639922054263825
+7d5749de-2c8d-7cb0-5b0d-c2f2a82de3b9,595423293,16359411579842069347
+a81b7633-79ac-ed11-9930-9943e6829724,3726108361,2842086224317972324
+a1909cce-b7fc-4294-6f69-42559acf3592,1767705660,15331693122923010461
+d14ae397-7dda-8c4d-d139-5db77eb0a44a,2131273738,12774132655981004781
+a5c2be6a-2247-cf5e-9246-c223776126a7,297912858,152602584038976348
+81ef2429-eb37-1698-9a67-b467a3054f04,1600646001,10642363139139701479
+f95b2bc7-f9ff-7ee4-e359-6bb0c39bf553,3210401432,3918189390493261077
+8c9c5fa3-ce0d-d0b0-67da-9d7e028b2c52,4012410806,4392164794083966150
+f1a59347-8527-846b-2638-3dc8a418c2b0,509270743,3743100953432464042
+2117b568-1ba4-0d90-2a04-dc1163bf4ce7,3178053473,3068562738520648136
+b7ae70e6-69ca-bec6-8d75-739667ee7e64,3298294708,667528585622510079
+f1dd299b-ea03-dcf1-f329-0d837a5a2035,319224006,2092170229595338299
+4875c5e7-b35b-a846-89c8-d5d1bedf0b22,1440190339,3995052329035566135
+9f8216c2-9499-7e9f-fff1-c3bcc1915d8b,2398040830,7957112075928068601
+21ffab15-3ce8-b670-8f97-3e9b171a52a7,2907084289,1357713600295557080
+0c5a4395-0884-49a0-e3cb-8578c9d3044e,463414362,11089594350470849401
+2998b886-4e7c-0ea0-2da2-a33edf0ffd6e,2455827276,11009466265046903094
+f2e5dc67-e1f8-3028-9eef-d237eaecd0f9,1535564932,7971613693180613974
+feb23540-5581-a4e6-6a10-91f4dc0c2183,1810360392,13374474329918886876
+46696589-3b65-7891-0c3e-badad2b79f48,2305087205,13314534443005141379
+050a50e1-7971-e5aa-0278-9bcccd0f6c86,3705242396,13080715307202927919
+94b847c8-b2f9-4720-2f52-40ae7165b098,1088233242,10590553195939869762
+ee799c4b-ee73-581d-9c25-317a5960705b,4198583455,6225790403942827096
+006758a1-d07c-87ee-1686-34993de8d1cc,1721856012,5524331507480083637
+33c3c3cd-4dd1-9eac-62ea-f3a1091f0e9e,1405627462,6412085172316830347
+1c23054d-5da2-c1b1-3520-6d13c42c8b7a,1073984221,7826156244739572948
+8ec47020-0037-a2ce-a200-ee071112bdf5,3148935924,16685347209139494865
+e19fa659-fc8d-97c6-1b44-b55485ed3fc5,3091178078,15875513971248327336
+a48d5e2c-5e67-a66e-5b4d-f778ba9153b2,505624733,15044335509395518897
+6186446e-4e0a-5010-4695-ff29d7d2c0c6,2733434618,9380283364391914159
+4bb9719d-3753-cb00-5024-a3e873215c52,1229186675,10239626642072976986
+99d0df8b-5ad1-782f-883a-7cc88863cbc4,17296877,4165855270716516954
+a43ec449-d0d9-a51c-bc6d-a3c3bd9e6694,3068249876,12131271403147655138
+341fee8d-5275-4d3a-54ba-53e95a11f3e3,3628208268,3064749602051759075
+396124ee-3750-593a-d063-05ef7ec7adae,385282659,1287375235703127679
+ab9518d5-c507-5cc5-05be-c71db88688cf,345174452,1959166872450575647
+fbe9a7d5-6503-afbb-6e34-2d45233b0d81,3783286848,9974046513282788206
+84afe501-bed1-4ebd-5296-1f90b842cf63,349084011,1229768976061354152
+03bb3245-2284-e493-d70d-3336a460c352,3549781092,16599546718848769349
+904b0047-a3e3-6ec9-1875-895cdf26e8d4,1658856781,11584662843692234161
+26f6cf7c-54f6-7177-4bda-c405c0e19c6f,1011368090,4783020886278757620
+b4b1499f-0e1b-55be-fc9f-f0a20661eab0,2041540384,17473654034096510522
+55bd02b9-eb00-9bd1-c718-e601cc95a3bd,317801235,13345751152166465456
+4b4df315-3952-d787-1183-4230b4252fc9,2200611325,7175439614997295574
+0f67abcd-2c48-4e69-b4d3-974b1f224a7b,927656122,18032611790363363238
+05ffb0b6-0561-b8fa-b308-38493acadf90,3348328139,5082910503155247160
+2cd5dd4d-68fc-52d7-904e-a77fbdf2f37f,1395954668,13552675208412071531
+a1beadb3-eb22-3815-b392-0cf52e5131d1,1039200543,13686160588454780864
+eeea75b8-c8f0-8b0f-1b93-b5a4ca509699,2870558358,5659238172267652464
+56481062-0f55-0819-0136-d831437e0b22,720302688,10167787787721266819
+dce71854-daa7-4e97-d30e-912fe052b829,3473596980,14021215895788347026
+43def8bd-7c07-7124-6f12-429585ceea8b,4153825618,893227979407818819
+b9f733fe-79e4-e63a-180c-a1a1d0382e73,963498775,13573924093961168314
+a3eec6e0-0781-5429-d1a1-de3e6397caf6,1356171404,5501486088266863947
+ce3a67df-89e0-72a9-330c-8e2441f18e24,194343363,17132256159814026156
+a0aa4b27-ce82-43f6-fca3-2eea0feac533,3493984167,3936085453037606140
+9f14a1c5-1c2d-1db7-b900-a2be36f7ea3c,498191834,15076003552240407312
+9b0f1c6b-356b-80f0-4a0a-f29d05b563b2,2768638728,1491805535057253698
+3eec1881-4db0-f7d0-dab4-681660f8f4d0,1454806464,15093522134930344721
+3adbc793-65d5-c6c2-75cd-9cfe26dde2e2,2127472917,17543719676886948232
+f5b027af-87ad-e6ee-3524-05f602cd2db2,2814045603,2406496784347855477
+650ec437-a836-c176-c72e-6fe97f1e81a6,582042438,11437282155176292979
+4bb6a381-9c35-7292-5026-fbe9c2076e58,690093892,14062323616000381220
+4bf7b64d-5c0a-b50d-0c2e-858bb78157ec,3647599804,5986402827113934129
+0172f9c2-5bb4-644e-2788-452088f3f7d3,1426657556,10580397527141232965
+c0e0f4a2-21f1-272a-030f-61dcf88b6d61,654761679,5015633449521794641
+ea812c20-eb77-5d5e-ec88-e4111bb8c179,3014127934,5169254071331516732
+be806391-e8c6-e511-f66f-9aa8c70b990b,1898795770,11947638093133967221
+a4c61815-da01-c812-07b7-4186b4263d39,4176700248,9907132106745487846
+b69d360c-f96f-7735-ee5b-4b69bb60323a,1597212473,8585914621700824406
+31dc4c55-fb96-4559-fbb5-197f3f4c835c,3064838887,9001421482188241302
+351f4dff-5083-daf7-e8d0-31aee6fb3aa4,2628290757,1261584664893923925
+20145898-75b4-e3fd-4ea0-377841438fa8,3339104395,16259524005702498395
+cd618596-61ba-149a-f19e-2c54c3b9b33e,1861016707,12155433934509800857
+1cf196ac-58fb-1e04-63ca-504dd7d802a7,3799046810,9605843439659768961
+dd87a4e9-7de5-f330-5c10-422ef4d24f00,563875314,15272987618163384687
+122a5c48-6d74-ad6f-fb25-6ba9dc359f39,1426437645,6831706797082297382
+3e6bd20b-06a2-890c-06e2-60de14417f32,272993487,6360972579850807024
+fd3b22d0-a7f0-98e6-94a7-fd4605a3b9e9,3939163082,1058350635523561663
+410d5241-bac9-1067-6f50-a2056da5c146,1547079045,12247065567818834625
+08808b68-8512-ff6c-2229-d967c9bea32d,1172887574,3400020368960308024
+d55dcc5b-d4de-7da5-3f16-846c329d4e5a,3428893751,17207824229575982345
+485370b5-5bd5-e6ee-3614-67e5e17be416,1008965958,16974753950803522126
+30830ed9-c0c4-3b44-dd21-c4875ac54eb3,15908611,13706523391731345252
+b93d217b-8d63-b02e-89c2-2b9156e067ec,881729879,14554526936901938236
+f783cbd1-9263-29bb-7195-64850e37e62e,499534414,1054539836942190192
+92478429-2f6c-653c-912a-cdd4a1ebb5c9,3508332825,2474693567855780704
+4b308bfc-245e-10b4-a647-99ee36e8c6aa,2229361419,8435519098968218684
+6927e913-352c-04ff-23a6-d5b5aa1ba319,3196186836,7232456439528571033
+1e6b0bc5-c4dc-b2d3-f117-cda6ff25f579,2965730046,17772773489577563389
+9e4be99a-1ffd-cd0c-6416-2c848c09dcca,4087372408,11659634392888245707
+2a513c32-ece0-c85b-482e-aea5f9d78c6d,315794388,10802498427270448118
+779a55a8-d305-e8b3-8db4-c33a7e1bcf1a,3709559517,12807267329277560991
+41f40c93-ca44-a518-52ff-c54a59bb6243,746972722,3693007447900903966
+153dc365-5afa-f947-d154-99a23e29bc70,4088607656,6304173643066663935
+bea4083e-b2c8-1af7-b724-ccaa95a3a664,3886934117,17058764640928116814
+0e3ed711-aa88-71e9-a9fd-2c3474e60038,3322505152,9712583914067254400
+84b6d7b2-2f66-c2fb-a2be-77603493c7cf,360949087,1981695463308996414
+738752b7-2870-3542-cc0b-f66d0da429da,3024862094,1466586334029035868
+82aaa8c0-a33d-edc8-0b9d-69cb95e58936,1498148164,3880984864413142632
+75bcb985-0c49-ff6b-676f-3fdc814a3edb,1081817582,3620981322384748059
+b578c471-2ee6-c6bf-70df-109c86653916,3245731871,16994257489375664094
+9be68884-2b09-c3ed-c587-e0486e237a24,326504056,18361991895194209437
+149d9066-25d2-2479-26f1-b7ed8b094a7d,3449233244,8142687229361289623
+d89cd2bc-8e00-a8eb-44f2-c62c0b3b7863,1534787115,11086890172209637057
+a1d23ed7-d7ea-d9b5-1c65-2e32a2733b10,153023967,15806184081339330483
+d63d88bd-9cdf-99bd-3b55-6643966cc305,734907493,1739320661399870532
+475ef594-70af-1447-af75-204c3d6b7c73,3378656611,2346550417254032555
+2b904109-61e3-4265-7ccd-e380c355c914,3599934131,3038976285447449140
+d0cabeed-7eca-4c88-5eff-3c939af8393d,1484027557,16813440873935145373
+322dc790-85fb-4be0-0108-6115bbb60b30,1341313222,7974222416061731350
+ace1c7d8-9bbc-a5a8-811a-e75fbd7faf16,2840009368,15386979802010742655
+10027dce-3ffd-b9e2-222a-cff97c35fac4,2042158158,1344573686633246526
+5d85bb8b-2d87-3216-d2d4-e5754b10d13f,2002052058,2233063540292414725
+9bc15c88-fb7e-43c5-207e-a63c3a19d4a3,3774086487,14965953339207172533
+87a24fe3-d82e-a008-3959-4475c9a571bc,1525463105,16202455074218532220
+514ef65b-970d-1b6d-7788-ffa1d7ac9c38,880061918,9229407671771759978
+2d3a8b86-2c6d-69bc-c360-f7db557743c7,498794490,921266194652645065
+ae875659-e830-423c-186b-be4bad375397,3791283109,2855632391983818047
+10c2f38c-220f-8f8f-dfd6-6e7780dc8ed3,2942948950,7984048065214484358
+7d7a7977-2e86-bf16-2593-02c9cced5cf6,2026336321,4538062351010830226
+3cb2eb26-bf60-0bdb-2716-60f176b43820,582973763,10627604302526551438
+0c14a4f1-51e3-d7ad-6f69-416445d5826a,4205701669,16601503166122277437
+9c19f163-8e30-09ff-5170-309bebe4c201,1288886315,15333253451474371014
+0c6c49ee-25fc-41da-478b-af824df3a78c,2416524389,10864537056986038452
+3259e061-57bf-eec6-794f-83e21edc68a1,379357435,9240245291382791925
+27fa0443-ceca-39b4-0dcb-dedfbe372a43,4272498593,4840563252047808726
+4a2d2967-f08e-77e2-3149-9f5f5bbd9bbb,2545198647,13147751208851824538
+0b14e8b0-50ae-86c6-768e-a2780aec8b83,1629229179,7043923040767648549
+72a3d087-11c9-f123-9291-688006197667,2052040526,5404293576165696840
+84370124-9732-c03d-9b38-69e42e22159e,536191830,3413695290355320213
+03f2f06d-4baa-375a-5788-a97087e1c2e2,2766541901,2568972460711835183
+899ad041-ca15-ea8b-b028-8e04d599274f,906810335,12733906533815506712
+000abacd-6474-fe22-8e8e-eb4fbd280b4c,158430146,12848805996315233712
+4a457171-ec31-e7b2-e286-4dabb993c37d,1184846349,5643189334416085859
+85d9349d-6ff9-f3d7-aa93-dfca0a2b8977,3697739497,7073981480662447583
+c69ceed8-bed7-2bc8-9a0f-15c7421f01cd,2762424646,6943716829733117141
+e1675f10-cdf8-100c-42e2-928a5c55998a,3032467614,663635716442533844
+3e84b715-a411-5516-8e01-3413937f8dfa,469596493,2047114261322839501
+9076d3dc-2d0c-cf32-3c49-f509afeda1b3,2253925229,2438766565760796061
+b2eb86e2-2632-08ba-8a51-bf6240857c26,3321984935,9354560092784742694
+aa9da2be-58e4-a878-d532-d664a79e11c1,2690280046,1796601133074450518
+83cb0c5b-18fd-e58c-ae0b-285791ed9dfc,2490160345,279737321000704304
+5b2e26c9-f452-4972-fbf2-a5dc69772a55,1363871997,11062507438722021151
+1d9da85a-ae1d-9aec-b9f1-372a346b671e,1616127596,6501104138309200103
+40c67cef-877f-8c6d-e414-fdd308c491c7,2106235596,6528712055721732793
+e9dc32db-0f90-c039-9b21-9463917ff605,1498018007,9543598215456347351
+981de419-f1b4-dd19-a190-8de629527e1a,410457292,3608022609330248926
+a758d687-793e-2001-ebb8-e079504e8950,4195002448,10367901442259698342
+4f454fb3-5e95-465e-2fb0-4c26c70bcfeb,1465198640,12479144697346737765
+9f9a5055-25a0-6029-8ebf-76825a978e03,3059202607,12074674166582191974
+55f0cd07-24d3-2bca-7d11-d711af4f2b90,3130557286,1202832173650631346
+a3d3f49e-9689-4899-ef34-767d8b146b8c,2701406196,2643822722902084769
+bae4d6a1-ac55-ba11-cdb8-0b3875e37f4b,1373554938,5614789683809758783
+2e082fde-dadf-8b21-af26-6feea55a57b1,1146450237,10284557482883860573
+370a32fc-3acb-6b2d-21a9-39c457b21d6d,3910598139,18258886217065411203
+51ff7c46-792d-e004-b34b-98b7ed1589be,694658638,14673438785666744646
+8fce8f50-3426-6f59-663c-e2cef322c953,2514619245,17327500832003359669
+1303f891-5950-6ffa-428c-9be775009307,667972165,16344097981954920526
+cde8319a-de34-3da8-159c-60bb99609e95,3241414408,13539757127147977152
+23c37496-2de1-c8e2-db17-30a0fc8a4bee,273310696,10047470138658332889
+9b6c67ea-461a-a9e4-e727-2f3a25813c64,428499095,15196846483783314560
+c2878cce-746f-7048-0d53-3a6cf10df98a,89373171,9076706074344300419
+2ddaf65f-bfee-5151-ff41-f8de4b2c3d88,2124002570,15404307237686684864
+7ff4af43-3355-8eac-629c-48bf1061332a,917246366,18337959545099817892
+b066e8f1-e417-fe15-36b7-6699b9b441cf,984133703,4034922509312109744
+3bd35aa9-32ab-5ca1-30d6-bd4a7464947c,3230411590,5421792112527167180
+30dc4f1c-1dda-c267-fed3-1f2ad0f3ba37,1349068928,7181454058002290278
+1cb14c81-d519-1f7f-eea1-246cadcf5437,1239450352,18309562112768871462
+3e20f84d-4daa-7e6d-6f0c-d5f52be714c9,3899941567,7799633045147945682
+9b844891-64cb-6bfb-6b50-6c1f7fc4fedc,3279250489,16276764544974918054
+959430d1-e5f6-7d2e-c10e-32b56138dfc5,3221953089,15297052871638522857
+9243c0ac-12fe-9369-05c0-20ff0979e4bf,3439071474,5196531869644318435
+7ba52fe6-ce48-a606-c8c1-9f47b8982359,514724647,4088774992156079812
+28f1ef96-ceb6-8a5f-19a0-020eda1a0b57,793505127,8578065430924866449
+3bb964e3-520f-c3ee-e7be-08c1a1a46692,1713006867,13228662087112351834
+83ac88ba-1a59-3de1-fd44-f03db68e02fc,2650291995,1206157702044409775
+3f4280ce-546d-075a-0741-6bca44606966,2680268424,6503845570483535853
+d162af54-d9ab-3c15-ec4d-1a03d7631ca0,2928246744,10711196533295182522
+b44937a8-cf5e-7c58-2c21-1af31b03f530,3759169048,2911973384559378852
+e9fdc85f-14f2-fa8e-2e2b-7b68330f3d0e,3671062887,17677888417364529370
+b1989812-f735-d9fc-c3a7-06a5dda1ecb0,163121201,6781621785818420537
+cb42aeae-d915-c16d-aa9c-7f8098c10568,3284932151,11803647874502871799
+f6563c8e-af3b-1774-dca5-e5a71c401050,173363648,12662028665499959078
+d99d2ffa-47c2-1983-d174-e3bf10d47385,1791058568,1609118683398364309
+73b2062b-41eb-1ba2-ebd1-93451487fda1,3987957,8379089424107577663
+aa5eb543-1258-2e9f-f8c9-4d013c05bb2f,3299499829,17547720081339850375
+83709d01-ea84-98c3-50bf-ac421c23bedf,2129847289,12792235767877850297
+302f5307-8ade-e608-7cf0-0d16b26fa8fc,878642256,13864549400211909174
+030308fb-20e1-e41e-e4c8-66aa5e853f2b,1319120644,16969872346866182892
+191f0c74-1d7a-e471-ac6d-302894e84796,1588811829,3059300052309959167
+f56d70e6-a0f4-0aa9-db86-4ed1012d54d6,1242548890,9598851707789033730
+6ef53d8d-c4d8-bd2b-49fd-90353900662b,2808464939,4442378198806079360
+a822c8f5-e6b8-aff4-1285-7225700cfbf2,635045543,15149857005714713756
+dce15bda-a6e1-964d-6e0a-14cb0a71feb3,1209749389,8168751202284103779
+5ad237bf-438e-2ae8-49be-cb8e434753cd,3541719280,13033587653552107751
+ecf30679-2aa5-5512-c0ec-ec35b16c7e99,2762817191,6801350579608421926
+c5954f70-88b4-32fc-9571-489dada3cdf4,3327693364,12046746591630468015
+518401da-b16b-cc8f-f6cc-d1a631b01aca,3025456530,16475417321164921241
+0e67cbe5-2a6e-151f-7d6f-5b494ca87905,3860432577,9193456021403878466
+c2f498dc-0d6d-0ab5-85c8-ad7184bd8604,3538471,10818685343728261946
+9d44c01e-c9dc-9d4b-3e0a-f0977ff38756,61819631,14663558906515203980
+e668f964-4606-be42-f4ba-6162afa412f3,4235513218,438646189516158874
+f3c43225-e37f-e054-ceb3-7119e7f54e0f,661103349,6812788307865606093
+a35aceed-6831-6ad0-9c00-bfa6d2a0fc25,2547946381,7342997640522698846
+6186206c-40cc-2b34-cdad-bdd179d6bae4,4195408612,17717937025348444261
+5d440686-8f50-ea90-5f8b-50133717bddb,529812125,3277412625346095550
+d14b8bfc-4036-8e8c-8426-a33238fd51dd,1348049480,11844317282580536925
+45918c66-fab7-50c5-cabe-51bec36d30e1,1623714314,932991623706313174
+46435e50-6554-9632-83be-e8116da8b6ad,838832682,7279986155347371176
+a5773079-72d7-d60e-4f3d-18e372b43f0d,3981482412,2431767193050920563
+b54e90fd-213e-fbbf-b8db-bdd89634598d,4002202237,13068794950108610511
+61af51a1-da2f-0a75-5dd7-7e728f6bc147,1518425892,1267933749891908250
+0919c457-fb1a-554c-723c-e5f5e3c39abe,886517266,162537027466372159
+5a870ac5-6229-aaf6-8c81-e4c9e20bb033,615787314,907362091461679969
+f471c303-cad1-45ac-3885-38b332c29c58,324920269,10400678223230056525
+ca1fa47c-59e9-7828-9dfa-5072f1e549c1,926919239,10933563465891688641
+f54a045f-3288-8266-c484-abcc0837d47e,2327005409,4365797430712711867
+d9f8247c-088e-2c8a-4bf4-b8011f0f1b75,2679171208,230303829122504442
+0e549f6b-90b7-6af0-3b89-185437127d45,4186720612,13062300193224324119
+be298614-10f5-11c5-c124-f4cb9345d5d4,2821979979,455072491473410725
+191ab040-0a3b-3511-7584-fd7ea74d8328,3910421557,137444626913827998
+3296d01a-dbfc-8546-20e4-9ffdc9eefd73,2221539460,4967964950981275520
+f7ed5190-0ca8-2f38-ba30-dccba4ce6255,3172023424,11202321863066116367
+4f85f692-9ac7-4619-522f-c77d0930f675,4128426917,15614019736089582261
+035f7956-21af-a119-75cf-91d528acdeaa,761596591,17409875118972084847
+526dc725-da12-9fe3-9434-be7b17ebbb85,2467823577,6018663236181972994
+f26229f0-a573-4f71-8ae4-4c4ab41c7732,3764449120,14051724463282486797
+cb123de0-12a5-448e-f0c9-771e8eb016d9,3964079171,9920769595975400257
+6b0a3f03-7912-b143-7816-8a10c4e3777c,2857849939,17928301276020127504
+89e6a430-ef34-d1d8-4fc2-aaf16f8fd532,907528918,13134939320385922536
+00df3ff3-338d-dc7b-2c6a-069a5eda1639,3972705574,781505021235995394
+7c4a7dd3-f893-75b1-d223-d1990a862ec9,132562914,5947071107821963653
+c79d0951-53e5-ccb7-b095-939caf959a5c,3397550686,4803444219676457532
+d4992b2a-225c-f2e1-e548-97fd894f7344,3164276568,14446814804775148685
+659fa84d-4c8b-7dbc-aa8d-b6619282833b,2950613192,12638259769328165740
+9bfb3850-6df2-60fc-00f6-46e684731366,333114743,15194339692151204270
+7ca71673-9fca-fc65-43fd-2569ea062d7e,2916892395,9402654650522522398
+9d0365a9-5fff-9efb-488b-571db928a5eb,3863822356,5299857645725660027
+3bfe8daf-5c5c-c5bd-38d3-4e3a012e3be1,1608833407,6311515108200212433
+92ca4f01-b1de-0a9a-20a2-d9c6c3841a14,711421809,16792752597258797754
+047475fd-8598-b912-ef53-94fdea93773d,2992136393,6577460958663100976
+9ee2bc41-3b9d-908e-2660-44e82c08a35c,2989910950,13044193866852830568
+6c630925-5fa9-40f8-2013-9a3f51e83f25,1424420148,2785377264301705115
+c80f31b5-a4b1-1118-0f8b-b86e59f0306e,2993031433,1692641234789560254
+5279585d-45c3-def8-d758-87d31f27bc7f,2544307099,6264498552311428685
+8efea732-8eb0-0d1d-db08-3b6eb13be3dd,766019231,18297920619502369325
+f5a04c79-3660-cac2-837a-33b1e5b8d835,1515070691,15799104710994848346
+293485b9-b8ff-f177-1e34-5ec8adcf45b8,4190510191,1968081556815399818
+c257bae7-5ef8-67a9-c8c3-a67588a8a55f,3644529067,14841076351195756554
+606f88c9-cf07-3de3-fa31-079dbc860638,2586418527,4888503074274964223
+1748c104-b4b9-2104-d887-f42de42bb7eb,3012813504,10499292298890959616
+f74fae13-ccdd-f014-8ad7-afcaa7f6f368,4291240165,16943446211795101625
+0e6f5e36-4620-ed13-ae44-9d1ac5a9c1ba,4109301528,9829529229178330338
+8b025180-3550-1539-59af-bc378cd2c7fd,603040371,3713174069134532440
+37c19f47-04c0-e018-d5ce-da706e0b0976,1491202170,13388308667364592046
+c6ab9675-c2c7-3d54-9110-eedf18b43402,1682453668,16215082341011823141
+78c62b10-66dd-7e39-bdac-4f2f4cf4b0c6,3192629524,6655226629533634404
+67a9f477-07e3-f24d-f78b-99d77ff315be,3669791631,18091164297716954099
+e922cb1c-3c88-82d3-7020-bc6871657f2c,2608074434,14257002226221567120
+b891aa74-49a7-02b9-073e-ebb32cc412f7,501614818,13553610013069872977
+c3f79a59-df8a-616a-5710-b07c654deeb9,454484291,9826959316792323927
+71f1ebff-829b-5116-e057-bf9847316fc1,3112772393,13127571424950469480
+12e1e344-6cd3-166f-eeb7-3d1ca3ecd2d3,284687861,17606150413706575389
+ad86ad60-2b0e-a0b3-6173-c852acd34843,3446688167,7978249670356139711
+c84da3a7-beaa-9e97-10bf-1029d3b1dc3c,2259811096,2623974440326222098
+9a91272b-cf17-0bc3-624d-65309aa7c958,3086248931,4931767341866461618
+a649a84d-79e6-1985-6e1d-12590c5fa91f,2858825538,5831993497358558403
+6c9f72c2-0027-c124-ace2-c5ad7c810300,842140137,10581744816334190082
+e22dd6a1-b82d-5662-46d1-dcf72edf9c9c,24924029,18446055562961414046
+a07f4dd2-9df1-1153-288b-0315126877b8,3147125939,5905187707651651046
+4d72c1a7-b6ad-df9e-4b40-5b4e777a6b1a,871986652,17069883301453838357
+ba320fd6-dffe-ba25-2f52-15bad5f92f72,3588826884,8767911157066872926
+a16c3b6c-4b99-f89e-b30a-905ea54c6b99,1441411080,13811534545173337377
+b99287cf-04f3-fb5a-acc1-16621d82ff5a,843164416,2901846693517208504
+20b480ae-e2dd-2447-e622-23b6b545851f,761624089,6809495630911253410
+becddd3f-7c22-b61a-157b-624a5d1e1ce9,2757562277,14143886243174805969
+ee65a593-35b4-3c69-7378-c2b3fbfbc18f,1888900017,3775828273301566048
+e5be2094-91f4-f40a-f24f-45c3f1684ae7,1432273057,113956170498608915
+3c8a991d-9fef-838e-1b14-bf2b6511cd86,1549420795,3337620957493233471
+e08ee937-2ea6-9b72-b72c-f66de81f5235,4088148678,3595345974810989670
+88820bfd-1fe6-c9aa-6fe2-e5eecfd324c0,355549193,4468158490834533776
+0d4833d3-5c38-63ff-f49a-5037bf26f73f,3645096431,15163683067985931535
+5709ac4d-25a1-b37a-2202-9545e6089f40,3963721273,9884017362115508339
+fba28b37-4527-d257-1b2b-61255998c6cd,1679487622,8168365111858100811
+a8fc4b51-fa9d-fa88-060d-15d3409eb841,2069062326,14007987583292997933
+33b8a3c3-0544-3d0c-c102-5bceefce199c,1344552660,1315283347051671302
+ecdbd512-4e52-c16a-918a-a33e44f8a4f9,1863317502,7772881200243976005
+c0c86863-7618-6ef7-bee0-b389214f3206,162143195,16649171428445201111
+25b54a54-cba1-e5b5-9757-ac763faade2f,1759761095,13617786054593664361
+7e276414-d861-01aa-2526-cc03365c15a5,838674607,11230987840272386991
+23445ccb-2592-18c1-662b-661c9e52bf06,3494990259,3758577403628775023
+9aac1eda-b5d2-0bf4-e174-a58531b2fcd5,1137194968,324100637951569650
+4fc5466f-4477-1318-f91f-38b5fe513316,3398707326,17187541575197102788
+72adf318-fd5d-5366-0fc7-f71ef7a866bc,4040086270,1281852906006904383
+8fc3cfa9-10d5-d3ef-2585-8803dcbf691a,2044950695,9590670424008472191
+86c79f11-a21e-140c-71e3-6fb0ba006139,1409777836,2688120309828059137
+08ade2d4-e715-88d5-8e65-4824537fe4ec,941092440,3525781317427093123
+6dda66b0-5396-bbfe-2540-80bccc342640,1356402687,14842625129693573154
+05efa541-6314-6554-ba34-781184ded16f,316342674,4654305401560459997
+0eb6dd28-9391-19e1-d638-673537424fe9,2921569494,16944070666707379334
+ef2b271e-f23a-9db0-7e3d-6845b1ac01a5,3347323941,12023685645988317734
+77d243cf-230c-412a-f2e5-bdc2a8a4b981,2618824307,9143091224788449688
+de63a039-6f88-6485-38e3-507f2daef2ec,2096418478,2720128197156125084
+db90867f-1664-48a2-9000-0e5542d17e27,1484454725,3909076641964867517
+32202e21-e501-52c6-b90d-2f9d280328de,3509008446,10426130740267570058
+a27279b6-a101-d463-51df-c5eb94d368ee,3668903183,1654640261230887968
+c90a7139-9087-c8d5-bb1a-474f64f6c407,1534541504,11724930576943872416
+f2ea7067-cac9-8ad9-6e72-ae795fa61b59,1231616443,11398492852065277231
+2c3629d4-b384-21d5-881e-a908c294bdb0,481115623,4180151450528092759
+8ff676e3-63e6-7c52-2c6f-f70d5d9259cf,2729800028,1629155265928161648
+f4ffb474-80a6-f42a-9814-a3d51adb77b0,3037507637,13118080481585300070
+b85d1030-7ef1-4231-49d6-271a65a36c20,3652917234,11590596181170941058
+de74f69e-c111-6506-eb31-661f6e016113,3212459104,3601342216916177003
+a60686ef-3e23-ef0c-e194-63b3383d08e9,1189884205,7205067592927114049
+624e883c-90e5-5ad0-3950-3c7f505bf24a,2574973821,1127176684958346026
+7b0e878a-ec6d-ea7b-d513-ce6145ede0d5,2381942518,13828249975297382705
+8b6df08c-2d62-b94d-7631-95841f3b9c59,1842936409,16655242332226714083
+d4cf0ccf-8618-5575-c96a-f7ba416627ef,2841148201,9235202461773221573
+f5003013-c6ce-1873-cebe-5efa301809e3,1784368773,3265412775531266563
+76bc711f-42e6-845c-7f6b-d848177ae86a,1274257992,219323993970583099
+b8fc03d9-5dfd-9808-9b67-a0b5db78d069,2674819523,10073684714604943545
+99eb7d08-f859-03dc-330c-70e1a5773225,1632971817,10184005183137445609
+8ff2f3ce-1e62-e2d0-cce9-dc9df13b1cad,4294146549,13657499284183723189
+4f521fc8-0081-d4aa-00d3-b547e60918f5,1133863907,7189699294723307950
+7e6df121-8aa9-6d78-3041-5c6ee94deac2,2324208658,10752332289618756932
+61965365-b4a6-d7a1-4465-94d3aa27e489,606440248,12809908688446408906
+ca6f9d5f-46ac-b878-57fb-cdf51e7f12ca,4130841600,16031374515896418483
+f29ffb6b-4903-1bd4-29ab-252d5a8be7b4,651929387,18153899816259708387
+f7c0613d-91aa-0f1e-91b8-1ab19e5a6154,2101852071,6701399211344995487
+1deda3c9-4f5b-d9cf-53e0-981da3d9a3f1,999986701,9497363584259768860
+4dea8e82-0341-d94a-7450-7d07f2dbb279,347921555,4942464503040717478
+3425cca2-9315-ab5a-cdbe-e629f850d8a9,3692754092,3887042273821290206
+4a53b1b3-1133-2555-8b2d-4c7a1bcc3d45,2857693234,5710433813314013409
+bf535891-5621-b4bf-3a6f-7466b6bd81ae,3238249772,14073073308708630747
+abcb0a4a-13b8-8eab-075f-7810d256843a,4229329084,17565467154643095200
+e969dbd1-ef39-ea92-aace-5647d124341e,314019597,15019505534465321334
+1bc37186-141e-e4ee-5d0b-fe72dbed8b8e,1791234234,10145165558750005636
+74bdd213-d384-9150-6087-a16ea8fa07ea,3076074613,6416034451845873538
+f3ea2603-ddab-d79c-cb39-f10453e6fe5e,812452107,6387839608717992470
+700dc7af-cf0c-0885-3a2c-27f839806182,3633323600,4734014658906629207
+58b5f7c5-eee2-269d-297f-247a7fb35feb,1200073495,15343285387598916703
+c5ea9106-604b-11f8-ae52-bce02d4148ca,217550089,3981114492864852843
+b913726d-feac-0003-dba6-4d2d0390ae6c,490960663,14588169525819963104
+922397d9-e805-483a-766a-30ba9de8431b,3706432840,2001246908043715614
+957c3282-e7bd-bbad-663e-808887ed8886,3818775531,2549331638538032782
+2533aaee-8c57-ab2d-6333-f1a1ddd25ee6,1698484954,821844000965762468
+c43eaa93-9cb7-de19-4263-fbe36c414e01,3081261264,10902941482099433112
+78087fbc-6e43-7cc6-c5f2-550ccbf9d54b,104439615,4461646604390070247
+1cc6a311-bc7f-5f1c-3c66-f8eea62c3aff,1647251121,4771528051376615094
+364c617f-b2a3-922f-e64e-aeb17130f916,4104863693,11804771036588437369
+05630bc0-c87a-0547-ebcc-676fec3d093b,2108879677,925067240926558669
+dd906576-1bea-efdf-cbc0-2c748e4b6142,1934073749,2991081921771358562
+5f2aacc0-6e99-3e40-b30e-3435e507038a,1365915447,6038914265430621623
+4bb9c3ee-95f2-6910-ca94-cbb8905dd124,396458321,12749019679433449994
+0ecd989e-fcf4-18a4-1c68-8d87a6e5d2ec,2930097737,6308427135360747359
+86c0c66b-8405-e72b-f7a8-ee41897b6e13,635729849,14368689789158804205
+71dd4941-8de2-4b9a-bec6-98ffe4ea3f4b,988651069,4063285330178220147
+831609fd-03cf-9180-321b-252daad477d5,3927656502,18356925064077362046
+8ab9d37b-b3a5-d42c-f089-5d41b6ba0f87,2524841614,10224938669972788662
+7d022c17-e4e6-0779-bd29-72c391c09e8a,4068319870,172931346001416332
+3828ad46-8980-e188-78d1-483caa02e13b,627171247,5652460057056672928
+5247544f-0967-1c1d-c52f-67e4409b0f6d,2489122924,1608545391789827940
+3c75b7d2-d3be-9363-1bbd-4a1cde0348b1,789657160,15629645125370101664
+bb3b6a90-c37c-4e97-71a2-7ada4c54aa52,3678844789,13064742174582290187
+2c714142-9daf-07f0-8b4a-5091ac080044,1778275471,14136901500047394643
+31a0792c-2956-834b-b7e3-172efb41d2f3,83706638,3543471533277746906
+80a04fae-edf7-ee50-15f7-8bd8160ae537,2890872551,5097901176588629325
+e77e4dee-3200-076c-618a-f24c56cd4cb4,1706276849,3676968583048631330
+fa4030f1-2421-a5cc-3636-58fd2dcf22e9,725045711,4816020654786062023
+3be7eb5e-810a-bd59-0e9b-603121b6d70c,2769809606,16609899304902768992
+4600ecf3-a82c-93f2-e73b-2fd5a36cb3b7,1240646814,5609509226273841808
+d19a756e-d94d-5eb1-6aed-ee2827902d60,3015171216,6434564562526353897
+ba5f74e8-11bc-56e2-a89c-69e9d26055be,4133313084,1809503767195776459
+5ca0811c-0ccf-f171-0261-3c57470f929e,1191440830,17604722926784637613
+312ffd91-b580-2dc4-5809-510922b0bf2d,3061976378,12785962698412838467
+91305688-d470-1a52-fb5a-5a82a7e85b48,2027983093,4234606560514750279
+03c39bbf-7ffa-62bb-1fd5-a3337462ac88,2218690174,12246890110129989924
+0e5541d1-5b36-91de-f130-b043000dc79f,199805624,16717821750360367525
+e1878536-1763-5acc-9c00-49a17cf1fed0,2389125929,8082871175588596217
+7883ba1e-81ec-439c-50e9-540a6e6f2268,1403397217,395895361960023525
+883f27f4-f4e0-0bff-584c-96a395d0d583,3430574257,8012687662020831330
+c090520f-d2a8-b1df-ec4b-1045a01a06de,3734596506,8333046522833821690
+f8dbd18e-44fd-133c-bf9b-2b8d8551b000,789439130,7583233675646876368
+444bf95d-fd06-8aea-ae52-d176352deb0b,2554243859,11720092802176844485
+d2958d39-bb45-3af4-bc51-d4adeaa2e827,234188848,17174751891446714905
+a8e5aebc-3a75-412b-a05a-6a9b10349f68,2113355613,6331438088632932011
+762a2750-4b93-c1ea-d63e-88506896667a,4101670467,13395288477298959132
+db8ce29a-77e5-ebb1-b568-25eee6ebea62,4182068428,9299263891557572626
+1f9b35de-843c-6c52-80c3-fc048aee130b,3306490982,14199485424278690754
+92c8fd52-7106-88cf-30de-1bb9ea3f5839,1657502144,1593461258597583283
+8126f82a-69b7-4a29-dab9-28f49493c328,3389712128,7182880653038788353
+92462176-a606-8682-faf1-1310c9f9cdcc,667004283,4383514659314468739
+58c92c2c-819b-5c09-2112-376cf269fabd,1097179835,829763048314495481
+3e6bb1e4-fa32-2ff8-4e3b-ce1fa7dadc13,1236806032,5454022610614209386
+2c483253-94f0-deaa-b2b9-ea03c6646f8b,2924599338,428763419715852676
+ae43190b-e5a1-cd6e-07d0-3a3d9a068958,802764967,1885065782784738720
+28f77e3f-6cc0-0005-5be8-3af5d8072ac1,3467789139,8352772108967452728
+5b154ca2-eaaf-b3b9-ba9b-2c5e34765d09,1785494682,7631848102018857260
+beebecac-8b5d-2bf0-037a-26a88909b691,2335846150,6360342680561642481
+ea40d50e-1aa6-8950-404f-3f74b3bbd4e0,2650523463,18187384351522545630
+ea9122a4-5406-d44d-14de-ff66466c42ec,3954443997,1613570031292151633
+d2f86123-f3ee-a49c-3463-617ce11ac5b5,2138977058,12274960334520987225
+749d339e-20da-e9d6-ab05-019313679255,3280018947,7519300793727326847
+63ae3f41-271e-aed6-8692-a186af779141,2234582114,6289085674108199419
+8ba910b3-92af-03fa-82bd-80c930948b08,3200138629,17324638466118651632
+c06b3a8d-03f7-635d-7b9c-935464564829,3815179323,15232138394737354528
+4c654fa9-a72d-08a1-2f12-a0414c8c2fe0,3302278734,1147148701500434727
+146abb30-a164-7ae7-8b47-035ab974a361,799268375,15818299542685805206
+ccf82257-429b-364b-e22a-239aad129168,1003700831,14857595272847436855
+fa9e5dac-c586-d032-0513-5d795b5bdce0,3290888422,16789444347568519051
+a7f4b558-d1d8-ce44-5117-6a596a593508,1795829058,1055293831110471509
+2195af0c-e160-fe19-67f3-e56ac687e8ce,2581558066,1687954472582630970
+76650f78-622d-9c77-2130-2c0bfe87e24f,1018355562,2459840479271032169
+722380f4-1781-cd45-b776-6ebf06858df2,1286563398,10915007940340667487
+25a08e9d-91bf-8845-8d7b-8904bf4733d9,824002821,12203338748913563018
+d7df7394-dcf1-8220-4340-d6acdc11becc,2890600307,5591302503867234978
+6c78cc52-9a33-35ba-22a5-2a9a8cb7b9ca,2674005015,16895011796193219889
+2ec6d16d-8d5c-c9da-2999-5f83ccdefbdc,4159563433,5102644462982081487
+e1626cb7-d644-c7f1-bcfc-8c6c7f92a945,1803102307,9599887750887857066
+e0e0196f-551a-1b6c-6bc8-22428519961c,1638426930,15335119937949848963
+a4da0e41-7de8-08d4-64f1-e24b742fc94e,685665899,3768446562852089399
+0b1c1b1b-f52b-f4e1-e15d-e41649032cb9,3642802727,17705632901183238216
+b433c46e-f5ff-70b9-9833-13a2c8272563,2561463463,11849793378302038735
+8724e661-46ca-3048-aa74-645b889175be,226620710,17493645267911943034
+63e9689a-a564-148d-9060-d63c9ad66991,4151750676,9798430993281671443
+a453ba62-d33b-e569-f4e0-1b332ddad7ac,1158209509,9248109730125413603
+d893dd40-1711-2c6c-2a0e-6898084dc07b,2290801550,386164115915274984
+919db434-c16b-a8b2-b0f4-6aa34798a580,2156474307,6357857479151973864
+62ec4554-9fbc-dd77-9934-a19264dce6b3,3826864331,14805892572643199730
+6afaece0-3241-1849-255b-491d34214db6,1506852808,11495874836754324928
+8ce93c04-7fca-826d-b6f9-d01ebb7fd330,268368970,14476308979523501676
+2e6dc892-64e9-21c6-adaa-6c54c7e5fd68,2263984321,3760245632680575965
+c11de133-a9ff-0b70-c9d9-2a82f9dd8f97,620375069,14857967273355711795
+fbe06d89-c9f0-d808-67a4-9254473e8ec5,2892675019,4973841250256554165
+94f89b25-4a0d-e224-3b5f-41798dd5eb87,3756367744,16346194908942674952
+f9ef04ec-0e9c-e3e5-7c0c-e97d158b61f3,1482958884,9690227380887965243
+6c57a0e0-e1fa-0e04-0c9d-58be5a3211af,3753527000,12056875902722044758
+e1ccc86e-f39a-c6a9-a7da-24ecd4f0cf2a,3477054137,3505065665176643753
+c67574a1-ec02-5d43-a1cf-6845ce31fdbc,3110195327,612653570231892910
+393a3cf8-b2ed-3245-cb3c-4097744e16fd,3276019040,18444754913230660084
+32c6b6a5-1724-4728-735f-559cefcbcfae,996150401,11084695988239063438
+d61a13ac-75d2-ce4f-015a-fe0c495ed197,3534179167,13748858165868063936
+3e4b6e0c-4b26-931a-7e07-934da117b658,778011132,5550150626892026371
+6e5a2d3a-10c6-6853-c9ea-85c34aad2057,3086897695,15631592443537563163
+e48a133b-93d8-068f-cc98-c5d4c76b1841,1016384911,16690109986133580652
+c5213c03-b6b9-2068-1fd5-ea47f7b18c53,1857408635,16754917484184258034
+6d8b417a-8c8c-2f99-d5de-2d61ad8f59a5,2161287877,5589136673113236025
+ae0b3c02-2ca6-99f5-5d94-72f82c944c6e,818417563,13537847850603411672
+e92dffa2-600a-524c-a927-116bd4160ee6,3664115993,16593862501255774766
+4a1fa7ee-54e1-790e-9fab-48257e80eb06,1500263185,5707557831153070376
+0ced53a1-b81e-5cec-64b4-c467d60be2b6,372335461,18425899951001727638
+66778dd6-3816-3ba2-c056-05c383d17f93,2488771410,13525586791560905566
+c803b493-d36b-8ce5-b5e1-57eae1e2f886,1494748488,5643033904664279123
+2719a53c-4294-9262-40d0-c41eb38f63e8,3697683095,16036814625541474390
+40ecc2d8-13ba-9513-dfd2-cbb8733025e9,2756769665,17557260606238472131
+2878ea32-0c38-b54a-c12c-423159c80041,3227255166,12827180617851870004
+9939e79f-23fc-691d-d381-d931a26d6631,458279741,9765235491694671126
+7c5be82d-0362-6e20-9a25-981a6139e1c7,421803166,8553179764914306611
+c44e468a-479f-f1c5-545b-8e0d9a4b7898,2692489688,426659506039368152
+eab3e446-b213-cad6-7cb7-82f1da80fcb2,2459379985,5650983370348081950
+0e0ccff8-7bf8-0fd9-d74f-5a119e8d1d7e,3369124385,7093702338397800295
+5c2e8688-0943-62ac-23ea-8be34e69d1d2,2872446052,12978846210892330934
+8e2df602-d667-7984-9f49-5188cf09519b,1903196538,11063190048667182111
+9c8ebf71-896c-1ac5-4c29-eff7c92a6d5a,1697099661,16740265570826408644
+d01d22b6-90a6-8b8d-fd6e-39e2b862cf3f,3067624266,3912087726688929533
+2491169b-79f9-859f-0071-8e89be4a5daa,3551351266,1628311564862927730
+f1e0722e-bddb-f675-6443-8a8000fb86aa,3600473435,2771280993833410268
+cb3e20b0-d3a1-df6b-3382-8505789e1b7a,1259906763,9063544156894911850
+16591ec0-eba1-ef17-db65-f7a8de7000bc,3268481502,10129543563812259566
+ed8b5d87-9ba0-ccd1-24b9-6c7b15944034,583463248,4950945218605409710
+3dff325b-8f39-381e-4748-244928eb8ce9,1064195774,954267790473706747
+100dee6e-eae1-d7a2-c4ce-9ac64f610e12,2967141366,11100885558874500593
+fc75fceb-a574-e877-6f5a-2ee20a91bd1d,1264350959,552493023699194713
+1d9737e0-896f-7ee5-c06f-df0e8223c833,1345434998,15851877670230974600
+79d8ae23-6252-fec9-e0e2-9f2e26012f39,1564356785,16654063138872944976
+4c9bf101-9baa-e92a-606a-e148a786676e,3147579598,15383038437912696165
+20e00201-cffc-c26b-9b6f-9ec906486792,1388280037,15675935788435417003
+6e41647b-6639-36db-1f5c-3d45821aaac3,328485294,10776990128540904715
+cac41c31-06cb-c17f-ef83-6d35b1e11507,2467145532,6506823184604253976
+a4495547-362b-e0f4-7d65-5164efd76f7d,817967654,10475242390541463596
+add4d049-926a-46b6-323c-1a18cbdaefb1,2413477411,4116204859270431684
+7e61bce7-7521-69c4-2884-78db3d474be6,838527423,10304903162277573774
+3ad2b0de-92ac-88d7-786e-e49e43840b4a,3959385432,15278503852547868637
+211c3330-41e6-af41-29cd-9971b0f9dccb,1487354934,14629529664523275274
+ef2fa7e6-f877-7f49-b887-0da6b11a1739,1767359477,10741215354512694304
+2ddf791f-a270-3934-59b8-6cb03f57a3c8,2939059746,12932864014233633580
+5656bcd2-90c6-b7a9-99ae-d60e16d214d4,910823111,11095979037747396994
+99f7b527-fbcd-ba5f-3909-d5b6ad022112,2040194462,4124052988073962539
+e0bb8a3a-ecf0-a63b-e6ba-09a6980232eb,1938219781,3918307195646500608
+9cadeccc-8014-6db5-2b97-bbf4e4cb9e5e,424922738,6462642982680936883
+3ddb44cc-0817-eef6-8e89-9477204fd63b,978914887,2047888808495709434
+8d0ac6b4-2fa5-c06d-8ecf-8255ab31b5bf,2410208862,5938781193786812446
+6baa91fa-c027-ea15-aedd-c93d56500dc0,1787041972,8621051097583390597
+28682e62-f67a-302b-cd5c-9620f8afc3bc,2261125925,13188131488117810533
+98878f40-0e12-c2dd-fb13-0d1022789950,747900265,9173585500193341192
+d5be2655-f4b7-7d96-45ff-1664e170fab8,2185900012,4880580660680066336
+b5b06359-324d-f170-855b-c6ed053d7402,2512195934,6407813214721283141
+9cf26f5f-dcb7-abb7-ab4d-198d86c0884d,4142711064,14386610664320968892
+a48e2c59-7b3b-9e71-a58a-cc88f716c2bb,2846506937,16457522359926597292
+1c0f58aa-0105-d810-a63e-39ef328b4bcf,3973553688,15664391387791642223
+76c4fc63-105c-2356-9cde-3a27ed4823f6,3527829942,1682688632830049957
+2a37608b-c0c6-7319-1cc4-22e4d3937405,2359142293,14574346765635175476
+8fc3d850-8ce0-3ef9-5a36-ceb4e5030fdb,234269612,15561302671721292663
+e1bb7f64-4867-80c0-577c-4bc59a18a958,3215383900,12079836789902985951
+655f9b41-2324-3a08-1239-7e7d788157b9,237012418,15918859203851367838
+f00b759a-72bc-1896-1474-672230dfdc1c,2817255138,5785896238470153059
+8eb6707d-2062-4e9d-391f-23aa17b56093,3949434596,4176010908734389025
+a547228e-ce68-2e6f-fa16-06ffe8874a32,495676329,2807383416792960639
+1badbe45-4b17-b6bb-5196-be4f0b122b6e,3686064834,14922600609924058513
+5f0ae0be-5fb4-4eab-7f56-7c8f3ca6a473,3052398085,10529311941048777296
+0dca4738-1663-c298-fe66-255daf070b24,2262353354,9116077270312648990
+110567ed-2b6d-d0d6-02a1-c244a7471e3a,1392204213,4745160418868970611
+cf264542-ae78-00e1-d76e-68085fa137a3,3160952559,9657070359298334249
+ea282dae-7030-5121-d2e4-e193835807e5,127565851,11772702050048142702
+710f7a2e-7103-f8c3-1f43-c71855d1e9f7,171784455,5821961913707416722
+0cd0bdef-5502-06c1-1537-3c3b9bb64fa4,45383451,13216115838514335053
+b26b500a-b50d-778b-5067-69638c4cf50f,1022878720,9310901070893359103
+d6671c74-c1ce-6af5-d3f8-79553116d8c7,504836117,12981988992646340391
+e605d0eb-75b9-cb57-7d35-12eca712589b,3718470340,10693223039784008428
+58b4aaea-d5ab-665d-5819-d46912cea5ac,956899594,10957049092312504059
+ce28c28d-e42f-69cf-2cd3-8f77881ca1d2,1563346783,9753072786978511997
+bccb21a9-e7ba-3692-45e4-9019df38294b,2577555314,7129121033337773074
+d82da009-6ed4-b197-c886-38487e2d2088,3648400429,8474182107418810017
+5a1457c1-515c-fcfa-bf4d-1bd6c578b539,560385890,9353256661782538872
+a8824374-164d-dff9-5095-3eddc6ceb821,566058712,6837027651957739569
+4f10dd9b-d330-c577-2540-ed70fa7677f0,3983724754,364787425798532669
+a7850748-e693-3c7b-7527-c4cf1845c2fc,811457638,8255616155345891565
+c1535378-c8ca-e8d1-745e-937cfe79a9fd,2173734682,6339689959504539001
+b5eb37a5-9d7d-0f07-886e-afeb80eefa1d,2783921150,1374018347451414343
+e48cd765-9693-f806-49a1-9c9823f8b241,2425248550,14634014600527250638
+fa5eb7d0-43c7-e7eb-adfd-21311e0d653e,3812971123,4785573796997285077
+454bb3be-2bf5-d0bd-632c-45bb5bfded39,2226826986,1427111284753581673
+f4fa53ee-0889-b5de-15f7-1ef02e67cc80,3626674185,8837669887417679289
+d6662862-b951-d8c4-8f3d-e1856b52b059,3055524527,8106690148921931820
+74a95344-2dc4-1843-4b66-3b92f7dee06b,1801059847,15446723261977581715
+633257f7-c023-6e6d-827a-4b172a0a91f1,2195472592,1227666838689308458
+b7574657-d395-2b25-df9b-62b2c1cbfd1d,3234321349,3886716211216610954
+e5ca06e7-28bf-28bf-ab1c-9271ba8fb472,1503600960,3143098688269119798
+9e6a5101-dcb1-80e0-5e0c-1c99de7712b7,875009682,13368915027588532047
+9745d476-a811-4935-ed8e-db7876c896cc,2297863907,9850741949070517994
+17202ece-6160-e7db-f182-0c7c4a99db64,1227031185,18148558655707745890
+ab26a4f2-5cda-c69d-9172-44aa57af27ee,3692274285,9322905857952593324
+4d8460cd-589a-0a0b-7441-cd2310ee8259,778566342,11673834573872623570
+c6079c3e-dcde-8676-f18d-e3edfd86405a,3934207750,6940647387230587901
+bebc951f-86b9-0006-6697-31b2d1d17aaa,1092280444,1608343694370375251
+1a155994-618a-8b76-fb1d-71e4d01a8903,146120586,7898757297134819855
+cc8c601a-9277-4343-c36c-75bca70c9553,795907567,13635160365964687790
+0ff3d6d0-fcb7-7efc-7f90-565fef8402e1,611665327,6817208728079783091
+9a18dc36-061c-a892-cc4a-fa575511ef0e,4081413894,3940002765665382437
+298ba42a-e9aa-e5f2-6602-0ad52b0e950d,215974406,17827121001422287328
+8f15e084-ea79-1ac5-2082-09653f84568d,1089676610,18247639282274648165
+1d63ed2a-cda5-7e18-ed6e-d87e453a40a9,3394019865,227272040916488067
+0b02ee1a-7f2b-6a43-0006-597b4c0b501f,112841958,11103524747299708503
+d6dd75f8-ed49-cf61-972d-432266b1558e,3681559954,8421360845538755169
+6d23dbec-04e2-d94d-a2db-0669ff6f7548,1393971050,14616913449845355191
+a5370ccf-2995-6c0a-0d16-1f75dc367db1,2729177847,17445981550813533823
+e01b2495-80a1-5003-1ed0-e929f8a1c8f1,3416445671,12179308651923402499
+295547d0-c478-72a6-a3eb-81d9938b6d53,659306933,8421400709746248252
+dae3b7b9-02c9-c0da-2d5e-7bc743361443,1727644388,16426156837580843920
+4a28d8ab-743c-314f-f606-4877fde47913,35566690,11283638080828194322
+f3e940c6-1783-7f03-64f3-d3eb4c3369d5,654643870,10586448060494007935
+713d3108-2730-3622-e155-0a1a27cd2445,1884495090,14340934201891019478
+3b634a6c-165d-f719-2907-2bc6d27237f9,3555691989,6514162403001507850
+1703b2eb-418c-24f4-56e1-74a2f59a6f52,1023101442,7048222283156783970
+86a93839-dc16-5b45-8f3d-664a03cce75a,619857290,17208335142306241097
+c8f8531e-0d46-caf9-165e-d0e27c182bf0,2341954839,1233823677696727740
+ff90ccb6-90b1-0f4d-1cd1-19318f960c66,2793423104,11477753914923193724
+db4787ce-7e1d-ac4d-3ec5-ef56f107e0de,3151088209,12346064168235308113
+d4c17dae-f2a5-cd20-e33f-346c8da5ef3e,1414048006,8976347310501699574
+4f6ea9e5-9bd4-689f-cd6a-c8aa2ca79009,3818991516,11817850692426968811
+3c1043d4-652b-b7b3-eba0-229e59dd8d09,2125459274,6690338198645322687
+231fbe45-dc2e-1d20-f940-b8021cc37bbf,2367865344,1978470975747365315
+5bc03599-c4cb-b933-55d4-3462babc0f92,3776958195,4847610194608086913
+d7d6083c-64df-7053-4a6f-e874988c52c5,2016291887,15663245013377959120
+7fe9b46a-eb43-9bc6-d4cd-f9c954af14e4,2767282297,15560195063190000536
+adb5b791-1672-6ec7-6fe9-0979cf99109b,1953145483,813708899516358062
+52737d40-e714-498c-fbbf-27d9b5eeafa8,3330648156,4172017048707428372
+a5d87d6d-85bf-1eb5-a0a1-e83f2f6e53c3,3065384324,9250855951248276294
+d8626fbe-b37e-4452-39d6-a248e71e352d,152606263,1625351502157419703
+ece889a1-130b-adb0-f139-f89825ff90a4,2080554121,18285511991015769397
+74a03254-6a53-9b0e-5779-5b91e3fa8093,413985184,13113689956273021288
+c9714531-e5aa-bc77-45e9-410a91c3b53b,3275901309,2637660979011923772
+7291fc10-1fc3-b056-9388-209e546f163c,1005312907,13244890068969428264
+561fe1bb-f885-b8ca-4a9c-b5986a05c1eb,2499157898,80301179089260675
+822b497a-3e72-62f1-16c1-cc1be9ddaa51,2682535225,8587215142192344262
+ceed35dd-3cb6-0fe2-bc1b-6877495ef62d,481110040,7878210482081010377
+3f110088-f893-6c5f-de82-19f6be62b562,1034344379,4690179040158834265
+cf458b07-29e6-c96d-67d8-60d70160825e,1828441072,11581963313236369918
+a147f964-aace-9502-3d51-a35568590c77,4166565852,9948735900313362394
+b07cd65d-cd23-411b-7e7d-b08280168951,4129180072,9959951783183832642
+e771a948-2b82-2430-5429-4aa1ad8a6f24,3911469870,12789761285299184235
+2e28fef7-2add-7132-fbc9-728a7b88d88b,93830677,1178938800134753384
+505a53f7-7874-537d-708a-39a2033ff58a,2658459388,14627239905752293227
+04532aee-5563-b50d-9fbc-9b3af1a3befc,1395316036,15136169628546633788
+009428f7-8d42-81da-31c8-47649b746639,1583490216,9057440233545965003
+834ebac1-1090-e037-87a4-fc6df738ffcb,3651414912,3493938288569732516
+f87e769b-4f8d-ed02-3b12-b27705ae2a0b,862850196,14875699956654250697
+07824f9b-e78a-e6ec-d17f-bca4674a648c,852552810,1088902999166551455
+0d0b94b7-8e7f-762e-be7a-af420d6734c0,3299122059,12627586214672176468
+72d38254-4990-64a6-27ac-4765af4c44b9,2267533588,9695696181537985476
+4ffa5c94-c4d5-e6b5-7cd1-18ef140c40a9,1551715483,3219115837030790360
+3717cc72-c137-ed26-846d-28cce3586f1c,3904825618,9751724454062566496
+09e5b585-aa79-5819-eb40-3a157aebea84,3382173934,12339719133139225282
+7fa4defe-51ad-ba9c-084b-3f2087b58477,741970685,2721518026059076911
+0d6d5c90-2252-5dfe-6c49-8fb3b8b03778,2411971721,2068810489576527600
+ecbbc081-8caf-4965-b106-d934dd26542e,3253953401,16779551401562834681
+c4b73a77-a36a-14b5-b886-4d1d0c93c2f9,2115422659,12061775472602290720
+08e3859d-359d-8548-3254-b2843c3519d7,3523753771,11273458034607806947
+3dbe213d-203e-7a31-921e-9e3385c1870b,1625228729,10584687630167092927
+8836875b-9555-3b19-573e-ccf8674a5c1f,966314895,11675279905962817641
+5ccb371f-dc6f-c5d4-5e79-8637791f2af3,2868655237,15559011718161985322
+2ec2da47-c7e6-2a66-b08b-afc101351246,3095906296,15365130333477714385
+7a6b2551-54ae-93d3-e1c0-d2b67239505a,797098101,10986742066773297845
+d5a24d4d-dfae-0c95-5ee5-cbe791188281,946169140,16537156950353243892
+78bbc1d7-b2ab-3fd7-b3f0-16219fb7f46d,1948937348,3812498087554588361
+12b1a62c-d281-4929-44a4-abae0d8e77f1,1727888220,11088156510359715992
+5325f496-9223-3b5a-a2f3-73dd1fd899e7,333188862,6613549758411649707
+9d32e82f-86ee-8b47-b4ac-64efe933414d,875172932,16402010702355023386
+355edfde-67f7-4c14-d61f-9b893e1b777d,3598903904,11701695259780384025
+8af3b40c-6d5b-e830-83d4-a5b64111c3c2,2106467185,10259454264144510542
+6d5740e9-4ebb-0f56-31b4-c76c1d528c6a,204098884,8078851295494318247
+363720e2-04ec-053c-144a-a2b8dda2771f,125475097,10391711182303494283
+13b8a2b7-345a-079b-2110-d0a63077fc70,3482173750,13121441126397685848
+186fb585-bef5-73f9-d9a2-6700a9941b1c,1935018240,5131832413174498276
+acdad099-cb54-ae31-138f-f904214382bd,2338112165,2465112815483437655
+87e9a093-0362-9a1f-7cda-7ad34058f692,3050357855,1561170821736661359
+531b543a-70ca-615d-b189-6b80ce79c455,2404377784,5891732716215702112
+f35daf29-4782-10be-953b-1af3035cada2,3617022709,5429527481241054115
+b12779d9-df4c-9ae5-1886-39c86aeb828a,1019377792,12276628784486134481
+8d9c5b30-7582-3e7b-6e60-e960ae5d7073,2792236568,17051294512242322878
+c068dc92-08e6-69f1-1b76-dc4b560e74d9,15036633,8637842594894297313
+562baa9c-d0db-a321-d02c-cc9da1954694,413835441,5113945831118789172
+78d35603-70c4-83a4-55bb-9791ec939cb5,2838565615,17368082225137209854
+a2ea20f4-9021-3b7c-728c-d630cf48c237,3154768582,14064862549833753625
+70631b17-cf15-8892-5be8-b2e2f6f390de,1701855191,3631751112998402860
+6f25c0a8-e3cb-979e-6097-b2fb69af7f0c,2991489742,17949854517042123726
+1fd6d810-7e9c-9436-ae13-85bfd4434a96,1315057046,9735929816282522370
+4c623500-c644-b79b-ed9f-74c757129c8b,2173496059,7978799592616977284
+cf119cc0-cea6-c0c1-4415-2a3352834c0b,771484702,17779194927126462853
+ea879201-acef-71ba-1d79-56ea0ad25ca5,2209756952,11583478551236222198
+75cfda05-ab09-fdb9-5587-64421a558083,837917340,12130982229463843297
+9e817b5d-e2cc-8a17-73b1-9eb8d8a59979,2523490369,11396340028685067620
+1d0b567f-ed14-0b90-3d0c-9e06ea47bf6e,1335549831,12378031276326997261
+213066ff-ccc9-a0cd-0fa6-aadcabbd7a72,894873912,5983433324449240474
+617597ba-e8be-4cba-27ff-3b06a1670a2d,1757780738,15789233994345246812
+6a13a343-8471-5bc2-7436-beac4f918af7,50208266,2671797970443303882
+2d16322d-3709-2729-5c3b-6e35425079ac,3350105447,2461579802497887105
+cf0154f9-2691-da68-a4d5-324f5ebe5585,2596363650,2442640910803807612
+e98cfafe-4c72-bcf6-30c9-96d74b157252,1669827193,15075369534730555511
+bd8facb9-63b4-c2e6-7ae7-963f562e3a74,1944096525,1426547517773158441
+6bf887cc-0e7a-7997-5dbc-fd2848e118b8,1897845403,2464291280074747734
+083398ae-a05d-7b46-d8e2-957f53943784,3783212467,5778962908740913724
+47e64c37-b12a-5ca9-6e87-cfc2e199be6f,2591185397,16487469213212940939
+a99df813-aa42-099d-4b4e-c531f4bd80d8,2416532858,17588292550214089519
+7a0a6476-37b8-7e80-9e51-9f54fd4f6b23,2608977575,3323990120514582628
+ff5f8b51-cb40-42de-5dd3-326a5ec42684,1389698215,10888985235902603949
+fe8d79a7-0bb3-a3e2-d239-fedad42d3f30,2414855982,12177678965412829112
+33ab7d60-062f-8ffa-c2a5-3e02a88548b6,4194463654,16334163504078430866
+1d24760e-97c1-8bad-4783-512bdc516b13,417795524,18013269875351409733
+b7c61ad2-ede6-2d1b-4ef2-0230b285fc09,1215052815,9416352559141891184
+270f998c-b41d-876e-9017-d3fe60c3735b,209821363,15872778334635574555
+2f27a2f3-4b6a-6a70-283a-82b1eb0ac908,2459713593,6762274212638725438
+64b67562-543b-bfbd-f47b-e2d00edeb2f2,3526402458,14322193235828506629
+7df3bc16-fcae-9a6f-1427-9bd910e4059d,423227069,3361347664485935494
+d5cccd6b-d209-65f8-01c2-5285b3a8afda,341535494,8414486928626345219
+a2164729-6d2c-56f6-bbd4-7d002ab630bd,2945536787,17249498636928181197
+33715207-8b70-4303-bd89-0d35acc899c4,3101569457,4011724882665147047
+0fe0a723-14ab-e9a7-d1fa-c80e11474a29,4165915809,3036316622124701700
+e493ac20-d0c3-5b63-07d7-62aa0f192d28,3439340097,12429586208169016976
+10784b88-91a1-d169-f0be-0e5fde5c407a,1719206769,2885422356840953113
+bdf5e206-ad74-f66f-73e6-21b452b08cf3,379893143,15922353683012428719
+b442fba8-cdd0-f388-b71c-4c400da50f02,4185258931,18108213649466481890
+de355038-ae1d-b007-a93a-1e1f91c675f0,955316366,6297327907410507175
+b75f8db5-a706-5860-073d-1aecf54149f7,576008646,8250181757978307189
+68780d93-e382-42f1-0653-b4996f513746,801329967,763478071829463006
+d517df08-f6e1-1125-31cc-b490e07dddd3,80994539,5053897276761744968
+4084637a-c2c7-51c5-06dd-44df07d94893,3360694428,8413501754672159719
+85c2d5ef-bebf-2634-c493-f13c69b5c0e4,1159739273,16007450032464236091
+16b4d46c-48e0-85e7-bd6d-ff240544563c,998008071,13781378328926955599
+091a1b1f-a19a-686d-e067-f0f95aad8cd0,2898426595,17236270247428818240
+e48a90e4-d513-6f7d-f52f-8f02182cf7f8,1230853246,9919794925473229661
+27aaea95-4f18-45e2-5207-22efec5799ab,1015684674,4885892759185035212
+43088fdd-abe5-fde8-379c-ddca39a4e655,2363443765,4457840543718626288
+f06479cb-24b6-579d-0275-bf5da78882ea,2537297713,15871816612177821097
+30afbfe9-da02-f858-9778-fc0281ba36e9,1045576959,215086039422393778
+a727404a-4c8c-9c5f-feac-5b0ed379d60a,256470252,16919823910450940991
+235d275a-9b70-6955-677a-ec38fa27c633,2378311435,11930192559017751243
+cc458910-0f19-7563-4ffb-0836ac56ae3b,3403766350,1004004611762403562
+031a3943-2c9d-0efd-133e-db32c09f06ad,1093623960,7382831318499873315
+f69d3890-0e88-a7f8-51ee-44eb054a75b6,3257764484,1678034108615251248
+afb04134-d62a-2fa2-067a-16af45b9a427,2163930401,4341755112888843512
+1a9f0dff-178e-af50-9b03-985eab88b780,3731990636,17015794311909209849
+096d12bd-802b-4635-497b-2ee8b0636c33,676616999,5762536939155389439
+0fad80b5-692a-532a-d8f5-f63e29b714a6,2897060036,13351232413242742164
+36d36bb6-9489-984e-0373-4510489f0262,3416918948,13388080112061836227
+9a390e63-a31c-fe38-0d0d-07f4184da538,1407534296,17423953788586321625
+38582c87-e5da-dd0b-2458-5d07f5e98532,371482921,11912391084987721437
+427ddc9e-e7cb-bfdb-ebed-a85903c856e3,1056217700,3119596198138020738
+f3124619-3b9b-b121-5e9d-eceb410ce373,2622945227,6597596807716104606
+c9f6e551-b6c3-772d-8982-2bdf6442aefd,418432784,11399386034926887270
+5098615b-4ae0-ce38-e7ce-387ba9587506,1428235982,14329445158487423550
+508acc42-cb0e-34f7-4e8e-5d3df4238840,3738925127,471768443102903875
+dd86f3b3-fa09-aba0-cd7c-8b2a0c983436,779550179,10949927636304002718
+52823c7a-50ca-41ab-d2b6-c525e49e0c7f,2279032941,13916772423761955728
+a55f07a6-d374-f10b-0b87-6c6e2b9957ee,3776538682,7007482128726518372
+8afe5303-791a-f453-8cf8-cd4700839d6a,163875388,1899349767801640340
+0220f29b-ecb9-2957-6142-5f36d41e075a,2464627094,7538757752407968796
+ebaa6ea0-69d3-09c0-1cf2-64ecade3db62,1637139888,2965971480416454452
+73347db7-d445-826c-61cb-1e8026f19740,4174717530,16734904276568741046
+968bc3aa-d9ab-1f0e-6304-b304e0daa698,3018415020,8754410116327753431
+0c45c175-96e0-9f3b-35f1-06ffe3672c7e,1443350790,793572890035254010
+bfc84687-2388-eb62-18bf-5284b48421ee,1650286465,5535428005183800168
+d2da7264-7d5b-fb3d-4290-45e60612278e,3446334793,6247593736173158568
+4dbcc767-ba3e-0de4-61bc-e1bf1ba28350,3172473007,2176070585272411131
+a6fee096-455c-18ab-766d-434a1771e64a,1326418841,14737526459680995366
+1562ea8f-1570-8eae-0bad-a2901cd7ad23,1862358063,10012438474839154420
+cb85aef8-32f5-f133-86e1-f1c1370e1907,12226475,14132994343821590762
+0dc0bd4c-7cf9-6bef-31db-0033a65a236e,1687056118,1537869681473213100
+8cc3f3d4-7246-06a4-5364-7657398cbd0b,3347911260,7302624271850263860
+e2f14d76-e40e-626a-9fee-6de9644de73f,2322889447,7810386404014648208
+ee56eb2c-ba24-0c07-a694-020865dc3ef4,160724410,25134954306670719
+14c1a667-20ba-e07d-5764-67424521b720,3491173614,15234294395886549469
+d86fb7f8-1e36-7c36-3170-bda3db86ce3c,3740232221,15047855829597336054
+2d6faa0a-8197-df3d-a675-76c8b5583d90,3614105869,1628285877396342168
+88790617-fd26-aea7-1e13-1dfaad41a954,2238318531,573883032493212469
+0a28d686-4023-2ddc-15d6-a6d80f88f871,2668704049,15073924488140674870
+6e8df858-acfc-6900-78af-098a0ac041ab,11680551,17219404451323238308
+5b96618a-e9ed-2035-d4aa-53d86d73f86e,2661217686,8914721929196006880
+efd9ad42-2be7-3313-8287-635a913c34fe,1595747919,159219421224889655
+00dfc5ed-c0f5-bb62-5e5e-4073dba945fb,3785360951,7890154739158267824
+39b449f9-eebb-97c7-eb6f-0e0a8fc84048,1009778894,13443587832894771606
+7e650df2-1f8d-1d1e-ae3a-8c922337cfdc,90063765,13085586126634120951
+63372559-b825-c96f-8e07-7ba0ded3ca1e,2820441825,18120718249312309561
+d6888502-52c0-1808-610c-29d35a86c2e2,3665193206,8546629317832051145
+edc88eb6-b77a-df5e-62b6-c346beaf37ca,1354925554,16334162531070630966
+399022d9-7814-48e6-529d-c71c49f967ba,2735527901,15925681971965618200
+bb436d89-55b8-3026-6ebf-ca5ebd7e1d9b,776354004,7251582514436136011
+34f2c629-297a-dae2-efc9-6f8fd3eab682,3589903815,3322752478393291755
+fb3fc539-db9b-d735-494c-eeab878d11e3,822294154,17196629793778758916
+37e7b7c3-c2b7-3359-6173-ce95a117356d,679460750,11029170973086905565
+c5a0e27f-f057-dedd-b6af-15773f1698c2,3935511039,18029156522042939707
+19b77061-0a35-7f5d-880c-2c789a4ea998,4066996637,17066274835496040568
+4e433b4e-ea29-c88b-f3dd-6152aba82b34,1555926425,9486635550739493888
+463c949b-27b6-ce8c-73f0-14f070012ba1,604613489,1447785685122542221
+e0ebd77d-0005-c148-0ffc-763043494f8a,2470292756,10804835124902319761
+8febfa38-d03b-c2d1-eb1e-8ad580fbd26c,835536397,12373459693135913632
+a1a48c26-5017-74cc-222e-d7c5c44007bb,1813171377,12175688006176667372
+73502f59-3dd2-3847-6641-6c5dc4056943,2966769050,13100595633978262647
+27e925ee-2d00-dc88-1d79-4f94c2141751,3530404499,7080634481875832251
+5779ebf4-e6af-cdcf-da95-6ce0fbb82c67,3680653155,4560750058407632689
+b94b595b-8f25-b64b-e66e-e93c5b9c1a5a,3272385031,13564509835516373987
+a2957b0d-e8c0-4064-40de-a60bed602fc1,1941275433,389634781791199869
+89e6955a-f92b-a3e8-00e2-bcbd7c68a852,2738836213,9900030209907602483
+7ee50e97-428e-fa7b-20ff-2423d837cfff,2793477868,141285808571873083
+d4919a6c-200f-52e8-ec83-ddf996e9784c,1713261670,13209671498890488202
+6a136e8a-fde4-50e9-86e4-2368038cf066,3251686403,7867717762891264188
+0202802d-a04a-107c-b686-26bdaefaf734,4141098031,12802796404947577613
+602dd1be-9676-2ff6-58e8-c250493ae479,1740666385,10566362577017925182
+4e6ae8e8-a9d0-ac37-177c-9a4958f71845,1837684889,16576320371144238502
+09c9760c-ca04-cead-c22a-d90b958bd782,3335817773,10032613486813544504
+5fa68e46-6613-6275-227c-24f9e080c70d,3581866763,16830254422531045381
+df6938b6-ef92-96c7-7298-949cda88dbb6,1915692982,18248082499429305377
+45277c70-7021-9a7b-6c5b-3034432587dd,254765004,6284828237020481771
+76f25702-2f87-41e0-cbb4-c76d3ff7aa35,1536541792,5274089691595786424
+f72ffcf8-f516-e207-7feb-d7ac4e462827,651583616,14701169590517741710
+38fdf176-0469-3b82-3bd7-e6711c876e3c,3631001270,1733536182518527212
+50e6dea6-273a-6bc7-29e9-ea5e33492d69,49092092,4104137368841539546
+09edaeb3-ed07-1a6e-6dab-8bc2c08e6f1d,4138743585,2432383845516894329
+1a0c0f5d-3e12-37a9-afb3-5d4d9e37811d,2545240331,17265831820737478115
+74836bd0-415b-87e4-f187-4432f1e65c04,128615295,15037214115102470381
+fd11089d-4b6c-fb81-1635-a3f614d30bbc,3741484590,10985383640222422977
+74525f70-fa4f-d187-7f20-afb81567117c,596195471,14034958166210751755
+374737cd-c05a-5101-06d0-7e3c9161c8e2,3996822175,12590129018065274092
+4879c98a-9577-fb3f-18a4-65f0d5e612db,3472440704,18357277480292872424
+b9b837c2-36cc-270f-321c-16cd7c7a5dd4,2931768292,4271171419775915186
+0272550c-d476-0052-0e20-b60bb0c3d67f,2167094372,17019796870300865985
+d943d3cd-3eb4-7e02-44f8-94b20662924a,2902741652,10042209852744594065
+735db9c2-bda8-f079-5d77-173947c3576d,1786240798,13839617055688894834
+344d5568-97ee-6611-2d60-dd53c7f22993,818880899,1425961384963796777
+5033bd1a-3f5a-c6ef-37e9-bd3423c3bb97,2496134455,5440736912560032191
+741dd489-74a3-48b7-bfd0-4a1d65dce83f,3654689638,9438668321590133450
+6530e018-dca7-9b01-fd80-f3f259a6e08f,1865592084,16634270089096372622
+b9755add-aa6a-ce09-2b4c-8134bfa92272,232502875,10889296930920278670
+16836108-55a8-3816-8d4a-cc0f945f91e7,2870299479,11533170299729570474
+549bdace-d886-3d70-b464-84680a1675dc,1026123638,15763292285375116168
+b826a115-b380-41c5-e1b7-0360d5eabe81,3920018982,17637555020432416465
+392a4e1e-c25d-1488-7b94-b498362c3f42,48880142,2625090182831126852
+1e28f21d-39c9-49c3-ae56-1c446ddc90db,3658841066,13911268195564300190
+bb16a182-827b-feb0-257f-4737c176ab20,1934067824,11486266976995066394
+0a5f7b5d-0b31-68c5-6869-f7bb4f5e6ab4,2594288756,9812816366855470945
+5ce77ff9-38a1-7431-a56a-cc8ef0e0abcf,986025061,5417682582558129658
+345d5d36-716f-54e8-488a-e4d3b3e583cf,843838400,4931474703274164541
+a5de1653-a98e-d96e-92e2-c86b81567aec,4026510069,3687335862892335916
+b174e7f8-fc23-1641-0982-e9be417c6ba1,1131870820,16054213408736508625
+5d07aa14-76b6-c0ce-2403-4616349764b4,1599031620,8157224629560897647
+cb083547-e213-ea6b-faf0-deef2683b0a0,62195604,10206711454688895397
+a25499cc-fb54-fb76-d8d9-034f30f43f28,3177091766,3540689781011507416
+76996261-b8a8-25be-012b-3b52db9c7da2,3468240915,9663653996958107031
+02eb1f6b-81d9-4708-0e51-0dbe464672e4,1093474426,7036038853198737724
+d81055da-c15c-f13c-11fb-7d4c6faf3900,222252234,6977589598224658478
+4249a261-25cd-2e6f-85d4-3ff8bac3542d,4269684429,643380890751286749
+c02c555f-c7b8-3d31-0e94-1776dc3073ac,522927023,13567936597030736017
+c719728c-2b19-afbc-fef6-4706520ead9e,1489073145,4705425468182136044
+5d3f09d4-830f-dc84-4e85-7e6ed4d14ded,3136863342,6632441843558499869
+d2771938-1e5c-67a5-7371-f0ae92202921,533938935,11134424474567326533
+2226337b-bf80-c28c-4db8-a0120dff2899,1092980931,9415621665484412710
+e37441a8-2c23-295e-94d7-267d77d4f3d0,787855717,3882843805324146275
+7b19b494-da74-ce3b-2e95-ea603e2db24c,3776240378,14670457040429647543
+de9e3919-5a7a-ee90-48d9-a4a03e13cb2e,3367563239,4107952066984994263
+4fc969ca-2855-215d-9d72-fac71d7dc145,434539596,5806735988331711748
+c2dc50ad-73be-4900-e227-d1abb8c216c3,1649807140,4535367571115015502
+ea00988c-c4f8-1e6b-e0bd-df116378bd8a,1782374399,1796668111946796167
+60ed340b-c0f2-ca46-fda5-19a74b9e442c,890873547,13371542240420381295
+935b8c77-815c-38d4-563c-528754d880ea,3063881756,6069750726294708054
+a69f2744-9c09-a17a-4942-23a642bcb12d,2708112840,4985099911426679679
+db11428d-e5af-1486-04f6-f4dbe7b5c410,3802561004,9728543756455130859
+93870175-c4b3-8760-b513-01423eed2466,3465300514,1212408772395523705
+ca2d15b1-588d-6e64-1dd2-b60751a9e773,1221324955,9253978433025509850
+973246e8-9aa5-4ddd-111c-3d1662428d80,206757315,14786034454332963225
+a4fbc198-fcc2-0bea-78cb-c7e2d705cada,2143485520,18162316671920055531
+256cc48e-2510-ef26-638d-79841309fbe5,4046843558,14921263389387043293
+136affd6-3a8a-e4ad-adb8-0481be556fb5,454602066,3207144971821834934
+6fd3f61f-b255-50c9-e96c-b1f0fd8eca1f,1278871066,14522060130294157989
+e245151e-85c5-a7fd-2cb4-d5c766abb227,2297382158,12453441545336481845
+1f17df9a-1355-6095-f496-e80150720c06,2664025107,10737377897813073627
+2085f1b6-ee14-f6d5-5ed4-af5081c743b1,77013140,13401303305718316394
+5d886020-fb21-9bd1-6af6-3227b25daaa6,52482954,14605130300786684282
+4e911fff-9d19-f85c-8f7b-64acf023d767,1542778499,8751659710299424042
+1e05bb6f-8ae0-a747-0a74-f875213578e5,3532344456,7869157705738772174
+5d270fe3-65b4-41cc-3ecd-a9323643fb3e,1606132839,14505196906183611309
+55490152-f6cb-4df9-8486-cbc5cc37e5a1,1552392372,6660072172139902700
+97491d44-7bbe-89e5-d805-9feb9ce782bd,812681809,6647685930624208438
+3dc46db4-f925-17b8-3399-60b7f814fce6,3080248062,11802857392262365191
+5b43416a-de1d-1801-708e-dee292237e2c,931032888,698483167990880051
+18b23ba4-c3d3-3367-ae14-24058cbbbb22,3018972002,17425728556838695001
+0561bc1b-a409-a523-dd00-f1e92446bf89,3883533232,815131327812245236
+bf8aab93-5b72-7611-3c8a-ac812c1f2d66,1748582936,12605262182791937979
+31ff495b-5396-10ca-9699-db7d5b2c0043,2257391120,4048614750274035453
+bd9801c1-5082-3c1e-6c99-c8768d24b18b,1761677377,12487412392282114285
+7d784676-10ab-ff69-a30f-a7d5628d924f,4139402921,16101796224939566182
+0879ca09-7ed5-aa7e-07fa-b86836b14d94,2629469613,10373322793688719528
+8e7f27ac-691a-e131-d28e-b845f66fedb3,1547586063,4532370126328372693
+91140e38-8fa1-efc5-69f5-77aa8db96f1e,2714872164,4353218354086050369
+9027c5c0-372a-e2cc-15a9-759744407a8a,4009343852,11266853035737620010
+7e04c119-6b64-77a7-bd81-f88c396e1f66,3696773005,4543577233344384200
+9a7a3b69-8f98-13d9-9fd8-b8d29dd487d9,1072607988,1065772930311713483
+ee60fe86-9dc6-4fa9-407c-10615211704f,2559815254,149107595061466220
+2f674886-cc3a-6074-48c8-4623bda91cbb,1045355629,15057499938498079707
+dbb5fcee-dd2a-aa8b-1963-d86f9552cc32,1893145238,17004757654350233758
+d9f53f65-74ec-ef82-8ec4-6f617a3fd517,22208851,5260774338805750168
+e6ff1dc1-c9a5-4fff-3a3a-61421ae68085,1601953513,3761858308732315815
+92e50489-1cc6-bc0a-73c3-b0632793fb1f,3180607144,8325906911619970857
+bfa7fdc3-f179-0904-a9d4-ad7ef6c7a6fe,2060433056,14957942274712835636
+a6fc6e3b-2005-f4d4-4122-c2a999ed6674,3089597783,2866058703421247828
+6e07fa40-1074-bc03-b0f5-30dc6c155a4b,2754995594,14323951303717816095
+1cc5b0e2-a22b-2901-92f3-55714532385e,3905073736,9376341667137551548
+688a1cf3-bccd-5499-3dbb-c8c40a69cc8c,3870089888,8452920306737010453
+cf4f3356-bf26-c302-2533-cefc8793f293,738528136,9918167241004008436
+df6f0b41-4274-352b-46f2-b2a07479eabe,181329899,1240163074992471256
+acef6122-e05f-a5a0-3e24-7c7e06d14734,11834256,13608715533749841821
+80be5de2-093b-b681-91f8-c16ca81a8b6b,1462780861,13049285601500130683
+1edc25fa-677d-a25b-6a75-293c1411ffdd,3661067122,186183202058620626
+48d1c732-462f-030c-02cd-69da84469141,636398044,6113895877431423868
+4ef25b6a-38d4-be87-a5e2-d1b1eadb543c,2658860810,9792320652938169580
+32eaa5ab-93d0-f72a-34e2-4e22f9972529,3769393206,4736472126125211872
+adac6ad2-82cb-6b9f-264e-b78ea25170c7,1153297017,346138070435759493
+f4c3ff4b-8ed4-49a3-b56f-7b23918b71a2,3341826838,6680577448335424663
+c0a67847-c3a0-45df-e3ee-7cc1625f2c1d,1921764923,5247161463096443445
+6af214f1-e553-0a83-6845-17dde26d3f60,1447646227,13814019985604531794
+79d6e4ac-c93b-d66a-0ad7-1cece76ad7fd,3411519421,12830361077542289160
+817eaf94-1755-17d4-ab77-c00290ba8676,887287985,11195214076795633966
+4fa4f74c-0bf0-7d4d-4516-c21d2ed25740,4294179285,15660791083931539575
+17766c4a-8b42-0bc9-aacf-f39457df7057,1426993564,3350811995163030630
+785b885d-053b-20a0-f9d5-674d13cf991b,1914937824,4371890071007972787
+8c9f9238-1803-4599-3b2c-ab3e12a94352,1259645433,3142275247401861120
+dd6df82f-8160-0e15-27ad-af5c041497e6,1494528280,16521089496412161977
+395d9165-c2c5-ceac-1958-fef65456165b,3890884681,5550308202994096132
+f5aa81d9-19c4-ab49-c14d-0272b230ba39,3795048637,10754775869299161744
+74715091-2093-4853-2ead-06ef8198ccd4,3594860885,14783573611502267290
+da507e75-bd4f-4dba-8976-3b45037ef9d8,1981485186,6634069928967877115
+e83d3efa-e6a6-e5dd-f7c0-609fe5ef6f78,1446182892,12944947028681898471
+8319b201-d9d0-d1e9-d2f0-3b95d2d59518,1333455359,13056683435948364479
+39ad384b-db18-d76d-50e7-556a5f000cfb,668294894,9313156032310067244
+a9a872e3-ed86-bcd8-e37a-a471812b3690,1108386024,11017941514866002460
+2af09841-3588-a8ff-6a6d-93492eb70307,4239665441,7015334524665637714
+3efb3613-3629-0c12-e0eb-dadb1ab338ff,1500532264,14963672385603389736
+b6a70177-0fd0-7861-4978-ce3da20ca2c0,2157800010,11674584991854368640
+a18a62cb-767a-d915-0df0-597fea7d5b68,3869924876,14932241522417260414
+2fe6bd58-a953-c7d2-0383-ee37c9347655,1969318844,9157072372561765466
+11b0d714-7e03-9353-118a-18dc1a6e0eb6,426834045,17410534678051911974
+d519f0bb-55e3-15b9-6238-ebe78baca9bc,2261586007,15708909434378456227
+455817bf-b541-8b0b-9f0a-7d5ca1994414,12683479,12257823904292068793
+26717d95-ab2c-eeb3-8f40-59664bf9cfd9,1892088378,6738219033012725967
+6e7f322f-a3bf-30ef-1b3b-ffa30bfa1681,1171721577,13410403350460622533
+2368d213-9f9c-2f03-60aa-13b4d6f93d6f,3846062880,2403501971825966653
+b61ae40a-6fdf-598e-02eb-c7db353e18a2,2390255698,6335883831530896552
+438ba6c6-7dac-f618-1e95-dd2734ec65b3,2823240619,11931941467738823274
+0f43bba2-84ef-def1-4f00-393031c0f127,2305896499,2585229303019101866
+00d6db9b-6d4d-d741-6df0-9884d141a458,860428638,7868639771224381005
+fffaea6a-a474-0a40-0b9a-0ee0c353e0f3,2636301375,5684132507140976141
+98da5281-ce6e-39bc-e211-66bc5cbe288b,2517576379,861889660987839546
+9900914d-12c2-07d7-af9b-d5e64c774d4c,3087929338,1540705610007286663
+dfe65d6f-f2f6-43da-0b9a-94a31fb7c4d4,2089269530,5565129041487941371
+fb5c5a0a-27ee-e9ed-24e5-f70534f3bbc2,3707513159,18411857137479321046
+e69359da-eaae-15bc-915d-2031a6980bed,3267213066,5507941660139599625
+493456d3-cf07-b65c-c4e0-755176949395,1841237011,1909964421310774388
+092bbfa4-3076-24ac-98bb-b482452ff3cf,1431997765,252404050012070807
+9cd0a595-e535-1215-3cbe-04668629d734,1249677051,13107293434623001178
+647ec0d6-f48d-c68b-3f8d-0215fb752b79,1786714830,14377858467128309632
+c341a1c1-43c3-6593-9685-cad7e416d075,3545938138,1590515364968078504
+cbc8618e-9cc5-6270-6adc-418a5176cdf8,2586710343,14538717036704388903
+ba244c3f-96a9-852a-0fc4-6a89648ff9bb,2684417469,5773042467979708380
+de6f7770-fb86-9b25-3290-e5906b154592,3669685767,16236797719459919899
+04a37ca3-54fd-506b-d269-42b2c2cb7dfd,3806184081,16600937048759250803
+1e83eb1f-446a-2f90-5e9c-1eb3669c4d75,1110656458,4143635240446139224
+91ded016-5bb1-46d3-f0b7-ece007f461ed,1192113444,10216293792688965024
+90a3c05f-146c-78fc-c5b9-323d034477a5,1046115726,766877018137974102
+68c26d65-49a0-ae84-34e4-cb489a536495,3266630117,11449832726500620758
+15af1006-797e-2f16-3c6a-282ad02f5a9b,4109694561,9728714364841842475
+9db0844a-2920-700b-12ea-0061fb145816,2556155893,2914979236963142285
+152559ed-fd58-6c70-3e9f-679adbda7874,988311884,602516989856383072
+67cd8ee5-5395-2f95-c7e2-4b2c1b83694b,4107547239,10633820370872499761
+d8e3fa7d-4f38-3ce1-e084-ea7968316ce1,2428289265,11719651979685635041
+ad27f772-e9b9-f340-06fe-ca7d2e70b330,1720832938,5019700122827407156
+c3966d24-7605-e4fd-1224-c73ef8c2d637,2042950215,16614461509888042036
+00135e83-4aa7-9ac8-dfa6-b8b207080a0d,4216108955,13384233119850754601
+80b189f1-471b-46e1-94a7-d27a74a92ed4,3290933932,14655069725058133094
+eab95bbe-8a2a-c233-9692-e990cdd9c68a,1165655745,6304835367723962881
+d64ec760-ad87-4c30-d04c-02818dad067a,2273437982,14539880030477440593
+62a45045-b2f6-f864-f691-02cb249421e4,1806091160,8732328244110881711
+c17d8cfe-b673-7dbf-3181-25100698f40b,4225879088,7366594212932459997
+770ed46a-7394-a3f6-b873-400e487e226f,3660802120,17987288011539183029
+261a3f3f-7376-b70d-70c9-ead95bd7f21f,1439568490,14898094882395694872
+403d477d-8b5e-f2f2-c4a6-b73b2795da2a,3708011165,5880057236682855811
+87202690-d8dc-7624-bfc9-9fa13ad5b794,867223557,13391845183341080646
+b6a4db8c-9652-9efa-4cf3-8e48e5cfc96a,447662120,15865296873140684381
+8efad2d3-056a-f537-05b9-f4c539634543,1835150991,3928635511919701782
+d917039c-3d96-b9ad-9e6a-97843c86f2bc,2686202892,9587712518542073199
+c585ad63-4190-9a1f-c7be-cb039004897f,2094250136,6084298626196069800
+f86b40ab-1d50-ea91-e219-6125b2749153,3759430933,3391749779185682033
+0bdd8d00-cd86-e20c-cbfa-5d74f701f354,2638185651,15500570097433158038
+59b9d3c2-28bd-550e-bb53-147fdb6a0855,1570810233,6129426369984196811
+f5d7620f-775f-b4fb-4af1-0dfc7a1bf5a2,3710662524,12088496737658452488
+ef3920b3-5db7-2774-98e1-f19ddc2e39b8,3743040513,11875673129774223077
+52812290-56a9-037d-04bd-09b622acb6a9,4075816120,15296459920795592655
+565d2b34-e53d-639c-a3d9-f1fe4eb70b54,243622841,4944478111482165451
+d8a4c844-ba42-789b-5abb-3b1602df8c0e,2125119847,2637837620122639797
+594791af-99ad-5d0a-fa13-e03aaba0d4af,1907984554,5376836137946132657
+d6c0e037-a538-64c2-17ac-dfc28663edf9,288219642,12733006881988217359
+5f69b521-649e-11e1-ce4e-4baf58e16ccd,4133734402,15432644273874012499
+40beaef3-c36c-7577-127c-f867a1b2db65,1418932907,3183669899022328277
+000cd60e-287f-4e85-1694-28af3db6a4ce,2333666232,17636684494271671873
+986e591b-d4a6-53c4-87f7-83e66d672f0b,1306745318,12989415771039243816
+61dd405a-9faf-d27d-4964-edbd9a0a35d6,281391951,12678075440533957805
+d9786982-d861-6540-a9ff-74bec167473c,2292155084,7671404531278036375
+1f3c97e9-18b1-c63c-d1ac-cb5c9799a4cc,4105314270,8878750087733581887
+3c036121-41d7-6a12-fb4b-d97df9e3038d,1654611064,15602117396232292066
+0301b69e-1c2c-cf19-8b31-95baaf123649,4213867742,13757547218502638694
+4cec4e9e-baba-087f-475f-f5f7a3b55847,2239788503,8736939950921709972
+a0dbfaf7-3536-0739-867f-d4db63d866d2,1495346800,12196442740632433049
+1036414d-c2db-a38d-3a85-b825f152ebfc,856459170,2273756301296512573
+aa22c911-083b-7e45-d3a0-028094a39a64,4163974174,5614846141412929237
+6f61e79d-6f9a-3328-d9b4-f58159cc08bf,383884776,13694506538885948352
+5620dea3-ff8b-81ff-543f-a8d93a0461c0,3562121791,16049283451079037311
+6670e5d4-f579-3f79-13be-bba1842655b7,1229202751,6475005055251725209
+8dc7e521-c95c-7567-a907-c3cd622ee650,2577680230,12030621884064341589
+77b01f5e-35d8-f92e-1d1b-636e03befa3f,2598427849,14887986084884265513
+bd4ff86a-ed4d-55a5-a16c-40ec1bfb8d14,3084862780,2267978034390355918
+9b81a138-6000-e27f-2b23-3971d582c02c,965469694,2965259099308065910
+6f84bb9c-6491-644d-c586-9dcde6be57ae,3907735060,13351946789030037365
+dc7a9fb1-61f8-db3b-20c8-a3fc942928d8,3617232179,14868411141207099794
+d2af6b2d-6b39-dee8-1034-248cde3c9cae,910804928,12876908761370808556
+06f4b196-f4c5-372f-5107-044100b76abf,1810365021,3185559581306060309
+5252c13d-2e73-e2a6-d0a5-7afcf4f2dfd3,1240354574,4476984962808613003
+bc4976a6-c2ff-770f-6e2d-5e3e2f0604a4,3444397386,12032437928122827851
+52f0bd98-08fc-d05d-3b09-4e0dd8c4fd32,2994519388,13214586541618926733
+6549f772-f7a9-997a-e4ff-ed0d5f98edda,1491121530,14753073361630362742
+25840372-444e-3b2d-d685-5167da6b7d2b,241205483,16921998076677371718
+79fd0d06-bef9-3109-0b3c-aee76bb25a4b,2287939456,6127192831642368008
+b7cd6377-651a-ddc5-fc93-c3fc894e2bba,1384570228,11106201272501321195
+742f28ce-ea8e-8ad7-b800-73206383ea13,1520190749,13405179802489137986
+6a59210f-3c05-46fe-33a0-3ee4f91b5589,3130772594,6801599222989334516
+d54f1071-96eb-2885-354f-473212bd3b69,3630536087,2748845220435078759
+3ef8bfe1-78ed-dc2b-e904-5d1efbc49f91,750159877,3484283899443163882
+04078c00-34fc-0891-33a7-73c8df48658b,2256994587,8573868185831645045
+db8cd10d-dc6f-d6eb-78c8-cd1650cc3af0,3111671721,13790677442630340018
+147a674f-f07c-6bf2-c3dd-cccf743b43bf,4170442008,10920886816850252204
+4841346d-416d-3d81-5292-12e4562614aa,2775270293,11492521671963462354
+8111c680-2315-6343-8eae-256ba4ff0d21,3337193309,4355217798545916429
+d37650e4-4a97-ef6f-5a4e-e9085f85fd83,4023763963,12006485980320052187
+e51f2216-d9b8-2d34-5cbe-f392f90ead53,2481095454,17148220935969518177
+d098193b-7131-8ad5-6795-7b766ab95487,1105282816,10472221239979657505
+832e3886-7d67-b5d5-e1ed-9f2b1e601ac5,1133682272,3305729975550342195
+669c5740-7b40-e21d-6a58-76a9b8eeef6a,2674348661,14388715894402875001
+e77f9f39-d60d-c65f-7dbe-6f07da4a5477,674447178,9711170447286284488
+3f7ef07c-3319-730b-067f-578193944d44,956088232,1278796671452348766
+9279b8cd-6187-124b-d874-3190453532f6,2538391883,8967610183140970896
+84599ed6-1223-49ae-4313-162406e65288,1867293219,11672492231782412088
+81546f99-ed20-b834-1af4-04c493b019da,1765891458,5822751875066056602
+0f2c6634-7299-8fa4-6472-7a7a9a319c09,685751179,8259304300234700369
+e8543569-dd41-b1ef-0473-506c99843d02,2230891486,9528853441564676662
+a84690f2-8fe3-4b07-b99f-a94ab65c73bd,47370196,8796305358839964580
+268526fa-6dc8-8d0d-b6a7-0c98b4e60c25,303944987,5020818527058816058
+a9b9dcc4-1ec5-b46e-9132-c75b55e058e4,784667484,9435396212124130257
+fdb97c85-a3d1-8926-bfb0-2a8529dbabed,721927631,4565472537273514485
+f2ed30a1-dca0-f4b6-2f97-e21c23b0d98b,3997712341,1605570725804157659
+c9802250-577f-9990-c0e0-6295a307d07f,3483592004,14601661822217090855
+f5aee217-9ed3-06dc-3115-bcd69640ec3f,1054468507,63436268008193534
+e298663d-ca86-aea3-7db9-05b5cde079f4,1693428835,1836048103019548550
+40d5f16a-d9ff-423a-f0c4-e6c1f52f0003,1932558978,13820079365806573156
+3ed07b4e-5a2b-4bf0-ea16-c2cb3c8e5721,3289382381,16601747161960562159
+c5cfffd5-239b-7482-a060-28b8a1489d20,361377555,18434967100028377805
+f965ed10-065e-a4ad-bdf5-98be9d685827,3687456324,8100216334765731200
+672f2971-088c-3f4d-dead-0787fc681c9d,3308633625,7867175551631226854
+a4f5fb24-791e-83f7-da88-8dd260e90e65,1081346284,16861979554341666898
+fc7c7752-b0af-0ec5-3bb9-69ca97a59b88,2013754860,5059254272276290182
+4083c5c3-5b76-b537-100d-f15be07f8084,2659230700,11296681901237094794
+8124dbc7-c80f-d0a3-1338-7e16e5d355a2,688963896,466291820488450150
+a476868f-557c-8e96-2049-1ea0a0061ab3,2577683729,13063517852384113280
+ede0174b-6bf1-a4fa-9f3c-959da1e7dc42,1494187518,4617145939359781475
+5e4d9bd8-42d2-bc5c-9438-a3fb43cdd875,1461457451,18442569522423184485
+8ebc18a6-d3df-f1a8-6a6f-439fc6ffe78e,1318641792,12792577829257826776
+c18470bf-f18d-c126-beec-7cb4546a8a51,2229121895,18220618107274605197
+32d2d42a-e908-3aa0-e247-06d67ffd1b2c,241125684,3002991427265186866
+06f8e23c-d202-4235-dcae-d877bf0a609f,1336443261,16589583149143918384
+6e3dde28-dfbe-f048-fd8f-f62668347696,1887812515,9851009124805854113
+4adebe1a-1665-4b31-08fd-cae6da67b2ed,1489856955,16231773826868479714
+bc03c5fd-f438-a29d-fdba-9c5d045dd3d5,1890642357,5542736668960031380
+da649d19-6c10-3fcd-8f7a-be324cd677d1,1837011426,3776384446541631681
+a0acde44-62e9-0023-fe17-912ef4d33c48,661789462,7068201296399615105
+bdc82e41-e69f-101c-2055-cd5ffde5a9cf,1275957644,48731175379069040
+b5709296-22e8-df6b-b1c2-ed32fda8ec22,4220954348,7028744430690239775
+8c982781-f57a-2b6f-8abc-ff61d25a8314,929922568,16625565974510528817
+f4117e2f-ccd7-593c-f549-1c299d7e6aeb,3414194330,2504549682119545832
+81ecbde5-ed39-c178-f98f-b7cbe58f1fb0,506340870,6053540157509477363
+df6adfc2-dc63-1082-2fd7-e3748911cf9b,465523208,15664223854268499820
+9925a2fa-8786-75ea-5e32-91b53f1190b7,3138343682,2581610095463943813
+36acc83d-8b91-1ee5-8474-4d670ba93dea,251369922,17689147952833878502
+f4a66130-79d5-8b12-4b09-fafd04b9036f,1595426932,7190304095631336313
+fc9836b6-c620-49bd-ae82-73b60ca2f203,3870488778,12346629924280289097
+22e70894-deb2-5216-c224-1049831369a9,107342005,119903722783438646
+3ce0c3d2-8d8f-4158-bac7-fe4b2b982e39,3350681633,3698170840520384577
+7973df60-fc19-0d9f-c8f9-c6a4e800cd1f,4095887422,790332367287107549
+79a293ac-0963-1a50-70a6-e8bddd72d1d9,3911852257,3311871619191506346
+047ba7b3-6d30-45a0-84b2-539ceb989d10,1299929936,745517571930183473
+93719f10-927a-1666-65e8-6ccc16a5d61a,252941597,5654601785819228514
+e5b3ea89-e3f3-4c47-3598-7677f08a707b,3682323875,9494322708204310372
+faede6e4-d58c-8548-825b-89bf934251fc,1841078750,14890512264599948647
+e7abc487-17e2-2f52-b38c-e1863a6960b5,4082115271,858699719288352169
+b12e0eb2-b2da-3d43-ef9a-bb2ec272832e,598166217,1423337882973345399
+32f51dd3-470f-55e6-6b99-542d8475bc11,2369798297,17616495114119399162
+97ad1e0e-5aea-0ab0-8b09-e260bbbe57d2,4211489645,6973755788427295942
+ccec1385-274e-a2d6-8f51-436b915bbb67,3698334107,8187508409231636139
+4338f55b-4692-c26d-79e4-440a518382d9,3616286090,7459427438561908618
+99f824fa-b706-5bc0-d206-0b5921d44234,3242579187,14849444856379790838
+71d59bf1-710c-f087-991c-a76d5e044c1d,1701873711,8834352434562308203
+c9cca778-2b30-5980-31f3-eaae2d7d1f7c,2495380322,13112884277453201824
+5a8fe886-9f9c-a3f5-f040-a6d38a69a51f,205255495,16216166344328194463
+d27fc885-c2af-77d3-7003-6f9d48fe6450,4092004573,8065834109111432071
+d2efc41f-b0fc-2bad-4109-18fcad12ffcd,3436278561,11175023384193326030
+a58bd9ee-84d1-3039-54f9-039610b20550,660487493,10603056241700785212
+e4b4c557-5741-5770-b614-41a8df85b968,800241317,796258959034953629
+eae9b7a2-b207-2228-1558-88722fafbb4d,3934648520,17830537343639205213
+4380cc75-d572-8aa1-9b6e-ff9aa05de9fa,2247139481,16256400241553190607
+a6416144-b687-9a11-5930-8eced9868399,2515533077,16083213150123279274
+ee15c6f8-81c6-05b2-8260-dccc33619e73,3377237364,17674156323731530286
+b6b1a5b3-646a-6fe0-7ffc-086886ba30da,2365655795,1603685765177086053
+826ac0d5-a2f3-6233-36d3-b3ccbb9cdace,1727556832,5478862557535889440
+5c485d0b-2c5f-b0c1-de98-ede120ca738e,2638388247,5568224883726751038
+a1500f9f-d0e8-5e62-56b1-2705462342a6,3657695150,15073777338481530272
+138fc17c-3b03-f9a0-9390-90048999d24d,3578438977,13715162877158543927
+8f7f5651-39f3-e4fc-cd24-1dfbd44d2c66,2287220771,2613204623919572321
+4768e834-bcfe-76ed-a738-0552e63ebfbf,1016326420,8839107504284955763
+2351825b-f8f7-0792-9150-225fd40da18e,441549544,5770446204219872455
+7bc2dcf0-cc47-3db7-894c-cf8d05e98ab4,2101902978,7267770314999929262
+db0c8f4b-414c-33bb-611e-b7ce2d396a60,1485635410,16370589906888259400
+b7a3e6d6-667f-be3c-4bf1-41f68bf3b3af,3745827257,2247310011532936711
+f7bd3e18-3089-dde0-ebd9-b4303bf23a1c,4094017080,4820908352809315187
+57ced136-0e06-8138-fae0-dd14ae0021bc,2136600240,12073359335578514048
+f33837ff-3455-ab8f-9699-6634b2899cd3,3434775301,2371756175971696834
+3c587cf3-3c58-0700-035d-034065b646a8,1743203037,10042966781177789772
+4111c13a-e489-df90-a710-ee7736632bda,405490320,5843855892070815310
+5e5e7f77-256f-383b-83fd-d8595cf72a1f,306420035,15957985052561169281
+81caf176-edf5-24a9-1308-a2b49329f890,2181079836,10762972275744107512
+29634b1b-f981-271d-d980-819f616e295b,1588025819,2635552814261420283
+d8556e64-e9a8-2b87-822c-6e78d1bfc579,1587521167,18142432668332931383
+b33fad17-af88-127f-0adc-1bed4b2ce51b,2916359460,4294882823508247607
+81f1dc6f-f296-dd2c-cd6c-9b210edc4807,1361510725,17378584309264180786
+2ea8db67-8a86-cb5b-eff4-42f84c835ab1,3554255497,6780151925785799355
+afbb0982-af34-1c46-71ea-0e4d7e57ef3d,3434812226,5134444579991372472
+1727f111-e321-a8c2-de3f-05ab4e16e13b,2614243489,9065550232237595767
+12760a9f-9fa7-8c2b-2c26-1bd64c3dc55e,2455307284,668092206493966911
+b3934340-e537-325f-690a-da2a1b2cc939,3756105242,7955900287901629337
+f5c4d16c-b76b-2932-5553-42474dd0e612,3854665270,15083900755307947689
+30905ceb-eef4-f132-5d6a-ca917d9f5ef4,3070378504,8506383726972499696
+65a22587-2ff5-03d1-b63e-69bb6479b79b,1707109698,7108309459427004511
+2495bb11-4d7d-823c-c3c6-75453db9d39c,3676906892,15644598567959570309
+d994f325-ce93-b4a2-3f01-d7f90459bd66,1976509313,2754844386488155211
+eb4b0356-da71-19e5-814a-2b08dee6474d,1187948146,10879367133941810043
+d952a489-2876-a0cd-a936-fa1f196b8ca1,2458738818,13602381017447540347
+b864adf5-a0dc-5624-3976-27fff7b676e0,1470216449,13845675827728881729
+16897d38-14e8-80a4-01de-75f20b3a8882,473148466,12204100542479978570
+18cbe839-1453-c0c5-96d4-7ed55004730e,244910118,10884368851696941760
+00bb2c26-933e-4db9-901e-22ef6cc8a2e3,1972034649,472340429039679536
+5061008d-c76f-3309-afd2-bdab4185e72d,2992030806,2379516885591773933
+85e82a85-89aa-06b5-def2-e94a5490561b,974328412,11026127799603688107
+b58b1f0d-cd0f-39b5-b26d-c079861c05c5,2000080103,16791074291853378122
+ea651df5-4583-2738-15b6-11ab1cb0a6bd,155775422,10068445054402437420
+0fdcc3e4-5dca-3962-ea3c-e71380653b5c,3202333261,15434481445966805942
+3c4a9485-724a-1b1a-708a-d6cc4aed1eff,2111081990,15114346092239649456
+b42a30fe-23a6-f469-f533-22820974fb13,2755268817,1828936325367342035
+eb2fcf78-6c6c-68ad-ac98-064ad19b389c,382266282,13483187365130343012
+493ad3b6-d0ed-61d2-2116-aa39168af9e2,462544229,1612440369524952132
+e3467cd1-3568-71a9-1d58-082a304b9192,419557681,16352213501819542860
+02f0d1c9-09fd-a636-6ee3-e062da9f4b0b,2304236908,12835162033409774879
+d431f630-b722-ff63-992b-aee5eb78b663,1532914598,13156938961324117045
+17680602-1b67-8ac1-29c3-5043a114503e,1890936568,5589315281564203621
+dcf18888-ea8b-0149-b0c4-39d9a39e4b22,2680107360,11193752005435525374
+0d95179d-e432-e89e-a754-cf872fa252f4,3742372667,12152335947195476098
+d68b4d06-9bdc-7cc0-9f26-e69eab54bc99,672091275,18316227784978189774
+b2704205-5782-6d84-ac42-cbc3f84cfafe,3065417476,17342666479102116975
+6c3d7ed4-367c-1b61-4f03-55978ffa3145,832758638,17092450778932662759
+924347d6-0a9e-e5aa-a3b6-59b9df0afd77,2440102117,3851951949836738804
+862030a0-bf40-4120-5306-1c0e4917507c,3377969706,16497030827778518707
+9ce8ef44-ebdc-a9d4-2a1f-f2e8acaa1a78,1621705872,12407572356621409276
+5012baf6-5b9b-2b35-464b-f5e8bdcc6827,2005486475,397702745727878810
+c2d70878-6613-da13-94be-07cbd4114288,2549649578,9329012267539176023
+9b90154c-aa29-bc7b-de37-b3e285f47cfc,872663545,2484589318192034716
+a375791b-7e89-5559-8bde-3292551e23b1,2329893817,18441404586609827267
+74844fdb-28a8-efb6-bf15-dde63f4fa2f9,2767445258,2562945089048970710
+c5bfc637-08c9-f64d-64e4-e7d990c02f07,3957281348,1028926592085809984
+c98be463-97c5-d959-f007-9cc0fd32a8a3,734624266,2442390355680899088
+c4710834-f59b-3b31-806d-7a2381d04bd1,538386599,5942276722020498037
+2fecfaa3-0d24-06f0-5486-08b3bc4fb700,2979624271,1690400554221645788
+59746cf6-c9ec-2dec-fab0-48e695fe5fc4,3807710334,8466081928212555752
+a944567a-ed4d-9f77-76ae-d1310d264aba,2660651109,28205557552115980
+25b89313-7dc0-78a2-000e-d7349c2e0369,2794605725,4428249936468276428
+16d496be-917f-7416-cb42-420728b30df7,3343489205,7366564520507043730
+f833188a-fc68-6de8-3f7f-3926e31f99e8,3106316574,10270242447515492704
+875d25c3-5f8f-21ab-974f-40f7926a7908,1718624651,8763138596271263115
+1b07950c-9b1f-a7ae-c9bf-3915503b82c4,700046807,6274171130133353941
+5e668857-0b5e-0640-4557-f5be40bdb902,1965313651,14308441322286378538
+46670e20-5259-5cf5-775c-bca15c2e337d,3751681468,14698690362338011441
+71da56a5-01d5-5d66-c534-68faef05e0d9,1481429192,16978869035291774246
+ee58fa3f-4eb2-3010-64d4-41af5acde301,1938210303,12149738967484055415
+bb7df0f8-6e94-f649-12e6-f3f04c89eccb,4285891178,18430271522734816757
+abdcda1d-9899-6854-f994-f6b2d6dd0637,3264133504,5393859719904329722
+14d03b85-04d9-5f00-d597-7ccf8f5dd793,942611244,4282702238702138652
+4bc7f29f-4662-5c2a-dd68-6cb59ef973af,3850923202,1869553701736632532
+5e8bfc01-d276-af50-f99d-9ad03e6b17b8,3744465959,16849251680071879924
+a600d8e2-7a5b-9414-b896-0927e1b56d80,1054414287,1334292161765347777
+50f08665-6678-c493-2f20-fb83558f0773,2470513386,7797838396009046557
+622b6336-2c4c-d1c0-fc86-94309c22dcc2,2139832068,16659532779134816197
+67ddc34c-c6d3-579f-6d9d-2f2146bdba62,1716529348,4860516509523329416
+a7510ed6-9de5-f3dc-61d4-10457484848f,3536964301,15167153890777367075
+1c080eda-309c-6049-efd5-7dc1a1c232a0,2627325580,10562984561547899149
+4c521a4a-e738-8167-6b46-3c357457d7d6,3526317299,7427030182544750305
+07767624-682c-1623-9cbe-bab25a23d136,3987718788,4852849436337727584
+312f0597-db73-137f-804f-fb28aff76c5d,492542157,10450303783970248491
+eb4ee7fc-0ec6-5a82-9321-e7177a8883c8,3134949066,1485450145869975930
+77575e0c-2c10-2fb3-ae7c-5d03913eaff4,1942979144,14764090197066744845
+c2bd1bf9-54b5-cb26-05b4-4778ed3d6bb9,1182386710,761716072264482662
+fa37f42f-2f8c-66c8-3c52-b715a14f307a,4253634923,1417222877547927480
+aa345948-5d6d-4f76-a1c2-0d0e13107634,3665189879,9360682996723219271
+a4d99f53-d184-ddf0-d2cf-f424108322c3,1381652422,17789439314862826729
+6fdd45ac-ddba-c293-57a5-733c4c26137c,862943103,8730514457405492743
+9bbc56ca-cf81-4d64-e888-858297e667f3,1417972125,10346095871890848215
+50b7f8c5-ebab-232a-f753-89c4f6ccddf0,2099756304,7507219265781579779
+cd02e21d-26ae-a831-fa86-535de73df21f,1024238531,5076498460043828878
+b927eaeb-a4d7-fe15-d4cf-e168c77774c2,516080990,17056105621167603123
+bfce8f88-0bba-2e25-c6b3-8b4251853d86,262311882,1708666760503943171
+afc89b03-178d-5b30-6a13-6ffd4ed34537,4048525352,5751451235631311745
+a9eaab3d-0306-d90b-c93c-2b2b076226f7,2407105750,6355655466812670902
+5698719a-ea00-7b46-b7cb-6b882428ef53,1798252309,11593803003653120921
+a10a1895-b82b-5180-8065-925bbac942d4,1167851545,5447464738436806952
+b01fcc44-9b9b-f1ff-d022-34e1671dd70c,3286501567,18065060784831916624
+f6400f97-2829-b622-c912-d5ca6caf6983,1541857299,6270483865253761181
+081fd821-f66d-5c78-8d80-703b780cfb4b,3357281945,18177979498789158309
+37c7d635-5be6-724d-355b-47675f8d681c,548299980,2290448159892741366
+2d911665-9a54-29db-755e-62acb53d3b7b,3730772885,7844238223861626905
+799fe272-a774-42f0-a62a-eb5b24222d8c,365195775,4143945653984164775
+6d288744-ecec-3ece-b7d7-ee48bdd1eec3,3983089195,8299451762800512586
+4c219dc3-4754-baae-a13f-3d7691fb09a6,1004891617,10013616236655786364
+5cc50905-d1f0-7998-5865-e72e297fb48b,2783469399,14291399377410991740
+773d3663-31e7-62ba-f11d-3d46123f276d,3723237956,14615313419607259028
+daa91dd1-552d-34b1-d0d6-55883cdd5610,3106444183,16398391346764306801
+2990afcf-1ffd-2e43-3df9-14429aaaccba,3825802852,658534012247111845
+4de3d6e9-1f5d-d177-93d1-4d4b282c825d,3594103696,9731754240047262067
+471ad028-122f-f812-db5f-c59aed546870,816948746,8066261508112994203
+45e7e659-fe93-fdf7-b900-0f59eaef0f35,161406752,2716222686988040758
+0debfddd-398c-56eb-18a4-a7ca325dc696,1605595047,17845634096206640554
+32320ac4-787c-6096-cad6-3d5032619dcc,2905474413,10336000909560316845
+518e40fe-0561-b2c2-c7ee-6216a8500f0b,3387809151,9544733605258687501
+5af9ebb9-7870-b30e-7843-d40b03c4bcec,2396512818,11948318250231468166
+f47870d7-0952-1e57-c5ec-0cbc5ffffcba,2121440140,12731788687988981288
+d89c39fc-a8e4-96c9-1163-a15f2fce3b56,4047071697,13908769138711784495
+da28e38d-6dba-3c92-8411-95ae962c1a8f,2453007297,17256093488730070488
+40dcffdc-1684-e6a1-810e-cac5d65b1dde,70215853,17944821499940125307
+fe3706ca-257f-1859-892d-ab64b788b42c,3886290591,13221417416264425646
+ea05b591-dacc-28ce-8468-d6596f24a423,3357417759,11314831588426388796
+bd2aa1f6-0ede-ec35-5849-342c97f0292a,3610396943,5303351339879112534
+180c3c12-3afe-b354-be24-7892af8558fb,4100781686,8653023509756076271
+0edc914a-932c-d82f-84f9-7b30c7b2ae45,2738369736,2087503274004127106
+a2cc2503-0226-478e-5997-3ad76c2f84af,2459301240,14280773839583281053
+fbce0913-ad49-e8d7-c94d-fda88b7b94a4,1593058684,11757806051017828470
+b8fb6e84-3ede-aaef-3009-1dbb38c3fe62,802141976,15875445079003685515
+d76a85b2-cc37-a0a5-2e02-545aa3742a8f,387293125,15981143222146284313
+2ed6e58a-56f5-8f49-9dfd-ec72ddabc49b,4246607059,17798225891885167299
+e090fc02-9a37-0c34-d3d6-db45183ec8f3,1158750609,10501572641686030114
+3ced0cef-9547-2a48-a12d-e05e33e39dc0,2321034690,5372853911147340725
+0159e99e-c90b-5fe6-b772-1fc297b906b3,1826673447,13797052832452626542
+fef8aec9-3cd0-11b8-6f28-ae2b21e9d42d,211119948,9913492828105391432
+019d742e-99bd-95b2-aa19-ffd8dcf391c2,416913880,16936937469201647462
+a50c3189-7e39-d2f6-dabf-1725e9836f27,2162594111,933118396292765770
+2ca38baf-62d8-e35d-0e24-0a91c9e664ed,2111672337,17434441348308922261
+a444fdcb-fcbd-d88c-ee12-2207648530b5,2419166773,9641893841918660804
+cdca59e2-0053-2271-52ba-09b225b4cd71,3176656925,12525548894842909374
+fba4b972-2433-ce33-12ca-ddc8b024546c,2053197997,5826058171496649384
+25d469b1-6217-38c5-3f23-2421a3ad0d8f,3469304785,7961528502040176366
+02eea5ab-05b0-0fb2-dcfd-7ade1439fb84,1428041340,17062391835675094990
+5dc91746-e21c-45e6-53b2-b759f58d0030,4034948166,10594105851043786432
+5042d7ee-fdce-167c-22ec-dc11b64eb0ec,3603377750,1457527206363071124
+dd4e8adf-db39-9b14-85a0-9517a712e5f1,3707312030,1427198255661507219
+bd870983-fb99-4556-b7f1-201ca3b35134,4181325630,18370809429018819298
+2cb0f821-dd78-16f3-856e-d4ae0fe810e7,1986481848,10569664492631077935
+6561c8d6-95a7-fab5-b11d-39bb23225031,752943932,708798564188261740
+00b0da56-4337-8576-5bb5-28ccc904827c,753694078,7690444360462557754
+d399154b-a187-f5f2-31f9-2267e7d37a69,531748353,15697711646970683570
+e19a55cf-6ef3-165f-81ad-495efa9340b5,627619893,8960249731334398225
+8f224d85-c27a-9994-47f1-4000cab085b3,526647376,2943177716600014722
+bedd22fb-7131-04d7-8fe3-ee8c1e74a92c,4228295957,1493670571423356124
+c34e2151-e633-a30c-e4f3-8dae9216eac1,2039240064,896525647232701216
+f451fbd8-ebc6-ae60-ff86-be6f05c1758e,373495329,6995383767115936810
+90f83f1b-3c9a-eec0-7bb1-17990f0fc571,249917551,16805769976772239986
+2727146b-b98e-9d48-c38c-d755ba1660f4,1096433911,11841694888913322227
+1b20a01d-b26a-9547-da67-b7426fca7b68,398251975,3744552542150616627
+f1979fa2-24cc-f127-1b6a-0227069ab0d5,31991343,12385864007336925560
+debaea92-d701-b44c-6044-4b682528d00e,435919422,11289836485888070421
+75556a02-d37f-b7cb-1a22-602cdc579765,2648307145,11069383364410115387
+d14d50fc-a8bd-523d-2103-fa398b4f6888,377568054,6202003353593306651
+e36db511-190f-d91a-29ac-a6f2f984c958,723235253,4544681487068329821
+ab03eebb-f80a-a055-5f4e-328b68db684d,1039549644,12049053512911250993
+68714b73-62c6-809c-47a2-5f5ddc219ad1,671291141,1266286584041462067
+ecd83c1e-75d7-6f58-e6ca-43709504335b,509402457,10662414368493920385
+ddf3a3f4-c7f7-6efd-8aac-7d671b032cc1,281029534,15252381659791406119
+3550fe2c-804c-70bd-18f7-740f696c8aa9,3434464767,17483682150924602537
+82fb35f4-ad29-ca64-f65c-08627db40316,400667085,18113944142618487756
+a08109dd-4dae-75c7-6872-7a918eef19da,2506032786,6281987465264509061
+6388301d-3f5a-6e41-787c-3a8ce0b10539,2292406100,18250430369628020841
+75d4bc15-bcb7-f559-2656-35a7ebdb6699,813693330,1734501752122861268
+c28fc918-7f85-1a79-339f-a0da3156b5f0,4193531595,13403442092342035804
+8f75a110-7b5e-ae98-89f4-3aa99ceb9b3f,1712556296,14202514415786839349
+d9a168df-03cf-2dc8-c126-fdcbfb2a1b6e,3704179035,13206487135428222349
+d9650d6d-d980-3abf-d361-f026c49f6d77,1461293428,5686792277710503682
+1e87319a-e719-35d7-49c3-bdfe009dd188,695376491,9937782354300204211
+5d78f8bc-f374-a92d-9f4b-90dc0c116d2e,3214359496,4052907958283242662
+cd48c7fc-0f61-3f86-2cb9-eca4aebc5313,2552307941,12814000625391596107
+619903a0-deb1-d3c6-28a5-4589c8164d59,2664695744,1577395058911861009
+f946cb9d-9fb8-d08e-3e8e-e061ef8ae95e,1044448748,18380599238782551093
+e48c7ae1-522a-5d6c-a12b-e8e1122ce805,276902119,16358240719165563991
+19d11dea-3040-5b08-59d6-29386debd948,3627787778,15313861938892563625
+4772b11b-6a96-7f4e-234a-5ae5e821fe0e,504922457,10174487539279567508
+bfeef106-d89a-deff-0750-1677571c8c78,3745398203,3600986505132568035
+09aa0d88-9c8e-2313-a5a4-d3afa5598d5f,4029759050,8790559195905766717
+8c9b648a-dcd6-ceff-22b1-bf1a79eb0948,2726045606,10317495014213145141
+f692aabd-1548-bc60-0223-bfb3cf415b44,2628008871,16679103618681203636
+e50906fb-68ad-64dc-9950-74d0ce3d88eb,336251290,11997397792469474127
+041da4a6-ecfd-ac16-2af0-f2712429f27c,3053220128,2571926919451014645
+5863afcf-2c1c-37e8-bd35-44c0234d813b,2469128402,16312366104481911218
+5451f097-77c1-90ce-9e82-a7ff68b9f0e2,1390429895,9108721082245599173
+ecb2c394-f8de-aa29-15c5-88a453464595,2498338180,5914023436629393742
+47a19b6e-ef76-68ea-1e14-4353dacf536c,2040478147,10276682454748854041
+23820c9b-1826-259b-684b-7b6e6c0f6301,1578824951,12149842405260605200
+8fd0e41c-99a0-82e0-27cd-af0abe0801d3,3319893191,13191773839584429897
+840b9028-9144-f35c-ff6c-dec55716cc6f,3004287496,9021825618765756948
+3549e352-28fc-5477-f3a2-e3f7e73c8e0f,3747658044,6312853390025058657
+8489882c-dc7b-71f5-4fbf-6e2651b12420,3801443743,13106256104925241454
+74714c83-b412-6640-b881-31a077413874,3430229372,2921523995755451707
+95e9f718-e2cb-da10-0b21-b8efb1aaa8af,334158521,3097531068850559979
+8584bafd-4586-43f4-aa28-0f224b54edc7,2802804781,14813843536369138766
+1606f3c1-0319-5ea3-6db1-fd74a2b786e9,2478323918,13722013603804514778
+46e691d6-ad1c-d122-6192-2ce10525a0d6,4269522288,14028378369419441589
+011433ce-f75d-49a5-aae5-99aa9e6596dd,4013857397,6417875631541407048
+362a7c42-5dd7-3567-9746-0bf8b2db5ac7,2653195882,2339730585508637584
+c56b8353-e06e-e98d-65a0-0dd13b8230c1,3247632457,7803638721001363782
+9f7f982e-3b5e-4607-ade8-84bcc12653de,215515061,9645400410449168321
+e77d8a28-4b39-879c-ffe4-4714283b276a,1908474772,15419054519691141800
+4a8f2d7e-139b-d195-8e53-a3b678ba6284,2630715468,13396548210409895085
+a93adf68-0f74-fd52-cf38-4c3232650128,1489091009,11442059665505709919
+8912c2db-11b3-c02f-21bd-f6acf199cada,987263290,14189493244796140957
+55bfce7f-eade-d4d8-f953-f4f5d6829905,996536513,10957660136072288483
+846b2806-c29f-f379-1832-d15fd7305a9a,3089619662,1870917829716991418
+c8779cdd-b11c-6408-bff5-584bf53f52d7,2578876808,6560130623254637838
+e329e4c0-dd31-87b6-090b-b8e9a819e32c,970339811,17077946246412812122
+4ea4faad-d7c1-29dc-31d7-e17b64c68ff9,2329465073,10837995412184660560
+06b34cca-d89f-bfd0-51d1-4abe1ab9bc62,1236827243,3613841638102905977
+b42df718-58e8-4f6c-fbbc-40e09d1a0c9c,2369701337,1356261538216126089
+25ddfc8a-71f6-afd9-4785-ef8209dd9330,1296182036,12201209522248974270
+cd52b820-9978-ee22-0fd7-b7e5d443cfcd,3288912018,6052569122242746083
+53cd9c61-0bf4-467b-5fa5-b050850f329d,1370163331,9757415858603626572
+67287c8d-3487-4fa2-5af0-e5e84a70d668,3912067645,2694696390629834015
+a5cd0648-bd0e-ce18-e11d-7ae9adaf09be,3212122709,6889460692952460151
+b500fb06-98e1-5076-0b4e-034718400f02,599510608,10195394644064181291
+a6c55611-fbda-3a3d-4249-96ff9fba97ad,1483169656,13387811072856159149
+ec6eb318-7e7d-832b-83ff-b7f9383625ed,2446364870,6954964137840094221
+dc64c326-cd74-27ca-5f2a-c2a097fea0c4,2588272541,18342459409190513548
+fae646df-ab9e-5896-2e4d-a86d68ec4915,4090780313,5503505327643519192
+54fddd8f-36fd-5d0a-4df3-d0e902f1c016,1443015972,11973574222547051803
+931d21f6-3748-9f53-fb0b-53e2e687cfd8,3473480241,14871101863443520349
+3aa26d97-9cb6-1d7c-111e-f3fb3d17d28a,448565681,16985922436177178709
+40bd7010-1655-d5b1-8e06-528dc6889ec5,678157660,8063924336213416824
+77d6e118-dd35-b663-a9ed-6c12f2fbecc8,532615546,17214981977691805543
+baecb28c-d8c3-c58d-cc04-4a9cffbcd07d,1650449446,1710892953514862776
+447d3678-5144-4910-e4d9-65956edfbe37,3793516469,6487388216898053176
+fa08f5b4-c8f3-6e01-bd5b-b6dd5eef1a90,808978238,15128201299807947603
+393b0c3e-ecc5-5199-4ff9-62ed39e820bd,4059112053,3546739452541801930
+23fdbeb2-995d-cb7d-8e1e-a9c727da9dbd,3436669468,10965128339796474747
+a59a2e12-6238-53ea-695d-2d10a93c8664,2123505158,15474571376651792749
+402ac811-517e-1788-83f2-4a02aa8ddd57,3864454008,11192471685028784257
+de65f279-faab-f6af-124d-0ef3ffd5df32,4010719916,1037805636112218192
+dde8e8c0-fa34-d42e-401f-f1354662171b,208538739,17628538347672861367
+7c13ab63-55ca-36f4-34fc-4990c0dab05b,2061345079,829429895992124619
+f35aacb9-1153-3611-2948-dc4f03257575,1524786533,14240455354946152478
+cc2c98a1-717d-80fc-0908-2d9b4b538a83,1743878356,9555797041269280581
+9d39c82f-1f38-2ee8-3e35-7934f8dea43a,3442911292,14545331121594092087
+61d32c4d-f077-a523-0c22-ddfaaa12c760,2763109934,11640749175279368399
+dacde7c1-32c6-c78e-1deb-3443d735a228,2129387591,12259355575767906698
+d13f5ca3-8c03-bfa9-2455-f451bce8e0f6,2137562838,1387253616495046775
+b70991b9-8861-0799-9c64-b3908cf36aa4,17861012,14063557882462800051
+afce9587-d137-db38-43ca-8af199c7961f,3587749999,202055789829904591
+9eb4794a-4195-af86-52ca-1ff6ff4d2687,3046848497,11754808684259175262
+f5d84d69-ddf2-487e-1b5f-83df02804057,792208996,10772573164407012087
+3b0873d6-f076-baa2-7430-690698eef05b,3845464774,6472913872228083417
+4b5e8ed7-bdc3-0b12-46ab-2b67a7767a36,3674950424,10679506269583104580
+1d668d3e-c3a7-07ba-3226-72d1c9554168,68627006,5344164638327141151
+b5846d1c-672d-b3b2-5521-900ad1376d64,2376551488,5274779870194638615
+d89bf86f-48a9-1426-2022-df2c3751ea36,1762096603,11174065585572389201
+a76c9608-91a4-ffbe-5e3a-90c7463797f6,985218787,15704545208464070123
+9db8784b-c21e-92a6-a197-aec64deb0196,156753634,1883991691378984750
+c5959d7d-3cd1-c1c3-bb36-f853c290f0d4,1080802389,1437319849853508737
+53a85814-5793-f46d-07e9-d87d0df8905f,703752631,7281179031332245882
+42c7f798-e1c4-3e8c-17c9-f56d83f9f829,3645888045,10132166670814977309
+1d39aee6-76a0-147e-b8ad-68ed19fc0c9e,3485061824,5899028842029117610
+f152fddb-6db8-3c3e-f97b-52a85c19871d,3525725383,15875331945363271776
+f96a0be9-4fda-e54c-eac3-103665160028,3877462945,2366901284368662638
+7998eb42-1674-ab71-bb12-8fe1a4cd4ed6,2882170308,6835673059310117659
+04b2d853-6ba7-fb21-63ec-0ad91ec78823,370977172,18236654112037604818
+24450ae5-0bda-4ac9-3ec4-d707ecb4a5fe,3748935512,14418716016410462355
+17f0867f-5363-36dd-a19a-182064ffbbb9,1237408308,13853684167675025456
+33096688-69ad-b7b1-b294-92d212aaf1b1,4044475732,5833128706491117553
+0d93a675-fd71-e1b2-8cf5-3f6f2902bb89,3102082880,3771667955890278218
+b9db629b-0db3-59cb-d45b-b85584b76535,4121589463,8090686047971677441
+97904df3-3920-741f-ac87-7dc8570f37c2,1470181911,8171366197894692839
+677ca725-bdad-2542-7e20-f62a0a5ece0b,3416335098,16704534264402417136
+8f24f568-bcc9-84b1-3eaf-14af1da28485,489115028,15574107309688213620
+22acf59f-f8d0-d48d-1d05-8603033c2385,3665455783,12716604970705250531
+104509d6-695e-7b5b-e3e4-679695d1f414,1633976122,5483303168629827184
+04d915f2-0fe4-8329-b036-a4d98e8344c1,3043462170,292712357689369294
+07e80ce2-e259-edb7-abb8-43496796d737,3020184452,357671974749524032
+6238b21e-db01-232e-1040-8dd62400e0fd,3626998285,10388777270808803241
+7029a81b-b4dd-b1be-d0b8-fc08cb29f82e,908345376,4547727370389485217
+d0cef642-f1b4-93b5-fe41-65ae30aa819e,239990151,8644693033716471418
+623f98ca-fc60-bd4d-54c2-5cc7c2a4c242,3004609019,3849490068893168776
+65a4ba2e-bdaf-7d48-3404-4782d041056e,1805462441,10085892511621306036
+7bc6847c-8985-2522-390d-316768e01690,4017521752,13400753056541965896
+3b2b5848-270e-f6bc-12c0-70977c8032d4,1354593121,13616184708528535651
+b65255eb-2ddd-ea17-c6da-03bb1d0e7641,4228504004,4001181434135028336
+fc5c6b69-ffdc-daa4-0f1c-70e5b14aea5c,1733581393,14481460023483138885
+c60c4b3c-1eee-2d54-1aa1-9f17b74425a1,2382941181,8656893627293479605
+326a3faa-161f-a135-8067-430ee51229c0,878869861,17783866261534469280
+413f9363-913f-6641-d500-570932f334a1,2552206424,10899292444311259964
+6bcddb27-7ce8-5d70-010d-30f670c9a5f9,1243163409,1639392411726412540
+4f6d4140-c098-2c96-0229-df897c0fd4b0,382570807,9480075531179630028
+03840562-f9b0-15e5-962d-55c52c7bd84f,1478325542,8690986933348116639
+42adf236-5baa-2725-b008-0ab413c5d10c,981862604,15576733460837262721
+c974682f-cbff-2624-2076-062e43880e6f,3513489746,16086928360685503161
+95571c2d-aa63-4aa5-31d6-3bc828b06df7,231000400,13120466058449604942
+cd479d2a-1ada-90e4-a6c8-9f3fa92f4b5d,581719130,17101556640725174121
+5d6803e3-e6f8-658b-9bac-1b954c3034bf,921019632,17001367591836467607
+fe6f402f-1100-203d-cc11-9cc925025353,1585182228,14224220249046691889
+7c685447-f584-c84f-3a6b-1dd5507b6e53,2717116517,5824893386829806937
+af96cc43-1470-d304-e783-ad96249b4508,773000003,958931379525624506
+472eed06-4207-84a0-63ee-31a014f74d7a,2163713734,14216931721277015872
+9146bd86-4b77-3711-f1ae-3281d236e05d,1601335008,386124402568324155
+e0bdd4e7-0f86-a89c-05e2-4c3d37a2e596,2427452111,12893835950549749033
+32452154-e8e2-311c-4c1b-e02a2ac8e72c,1665944928,8602004411942174593
+1b209abf-3277-0230-a36d-ef4de53f46cd,2585847332,15558063609039183618
+82f16c8d-4df9-1d41-6b5d-31d109500f01,2950667906,2260156564678380583
+d6775497-b8f6-256c-6591-4f3ab56001ae,2121763797,13497123462498978030
+b6ca8fea-510e-5aad-b93d-ecb44d22b598,110527713,6158392590673778640
+15190fa0-5421-a9cb-6714-508724e9fcd9,3725617421,10533078557505465118
+96359672-1572-1025-5502-8e5d0e9e2cd4,1282662645,7908317079387166777
+74221976-8976-66ec-075b-75e1a019d96f,2018221900,7260962434750370098
+9de3cff4-a221-c1de-6404-8656dd86a060,1966667809,424010852917277723
+5784512a-de9e-26ed-9d60-4d93ea5b1817,217545,15426244828809893986
+506df4ea-e72b-ea51-aebb-d08841f4b78f,1092982652,2879132845397587599
+391e6e4b-7b8e-8d84-b301-cbb1e054d911,3904448891,8236683568950872370
+867ac823-66f1-e74e-1a77-153c749f58d5,3410271670,9504889643207651
+c853c2fb-c407-dbd4-1539-a13f9ad2d579,2344644417,13624681596487280650
+e17dd938-da27-0f60-c6a9-813b4240537e,610717595,4963647222313623977
+35d2dd0a-8c8b-8032-4817-3eca37cb89dd,2078892786,15753081368787102297
+16444fa0-ac45-92e6-ce2f-0fb09d6e7028,2680070161,18056234295622914570
+b1a458ad-1ca8-a157-c736-9b8ec7a594b4,713903157,12163209349826264111
+75c59d5c-5a0d-55d5-7810-c2385feec079,596376088,16645603622942427663
+1e44dc7f-2387-c794-9f68-9532c57d5491,3505414856,6825189612648966385
+b6abf28d-6d68-ec8d-0ce6-db8c1d51d96d,666784186,2588524258671928130
+c3507201-ff84-17db-cb6d-4606357e7a0e,129615818,9242520013796307765
+1512f9cb-fe63-06e0-c4fe-745e9049c21c,3061724562,9004125294056041303
+d83fe04c-3d41-81ef-5077-749073eabfa7,999643183,11268744657835764902
+a4173356-dfb1-312a-789b-03ad106312df,3571709408,10779115036312610294
+dfee4f82-46b7-b967-2289-af09b5dda67e,1937861301,13405545872279921850
+64f6b4c4-5b72-e1df-824d-67aada35ba8c,913202947,12650020815730437046
+b0057723-99ff-0ddf-253a-5e291a9bc89c,90103053,4349589086729294811
+bd9b5051-cd71-850c-622b-c79b2cc9024b,2624627483,13369356173865395064
+7838be60-4b61-fc53-fd83-a6966d29f6d2,2711765167,11573497121062137217
+be524f99-df6e-cf9f-d852-1aa3e01eb229,3498920508,17420342199839728193
+c09a7371-c9ac-0549-a391-1784be36942a,1110726776,992101870781115204
+5883d0b5-548f-7bf0-34ba-b7eaa8498709,882242106,13404491262335782039
+004de5f9-edc5-3677-13c0-011245fcca6d,3268284112,2160648605985335558
+78d3da07-e46d-695e-ddc0-04bfa8130e20,2773925310,2391896645193730464
+828e595c-7fcc-1756-03d7-c98aa9868022,3599004369,14554974823300126904
+44763ead-e4ea-2f61-db15-ed3bff4c2d28,3532373477,14119378895301814970
+da4ef918-d8cb-26dc-bd38-7a5cf79cd0d8,4070178998,1185773133278736746
+85bbb83d-cce7-a4f0-32e9-a18862ba7cb9,71494187,6109087442327745862
+55ce8416-589c-d122-d06d-ec656a306b46,2810703374,15202002914680155584
+b9344362-32af-2146-cf7e-5dc0004a93d5,3360781307,3566064605295996145
+77aa5a51-897b-9b40-6b8c-1882cf55fe36,2477145903,5620447797611394580
+b55f3e75-8cba-fbbe-c7eb-8209affd035a,3964775386,1132889991262821410
+e7f8752c-5f54-6142-74fc-c4ab778f6d6a,4178051901,2668059961862271115
+b15417fe-0b82-ff95-4588-d9108f9a30b5,477655991,10766555057806606195
+410fd72f-0d92-2b12-92ab-02ae98e63c3c,3460776423,15495476307230713802
+06a4df23-0c23-b0ef-a41c-cf81464b59e1,4270070066,6209987472861905771
+1317f00e-3a98-8db5-eb95-d2277336a54c,2810142961,8951394298815916975
+fee76c81-bdf3-a687-2b6e-5a9c3ee38349,642172908,8603059980759444162
+c242b020-a617-69ff-c0bc-579815875244,1067339333,9934463780346828216
+8a2a9200-6316-2c6a-1994-82e7c88b217b,3275092481,83823599303255076
+39cebc7a-ed13-9d36-7497-c7bb5b6a3032,4076785562,9772868713592715998
+58fb1add-ce71-a6fd-0352-8db945567d60,832699803,13101395390657548832
+6c2fe53a-75f3-4526-4070-f471834b3a63,3995259417,10747447677592366922
+0818f627-0855-42df-e796-979a17fce49c,749500615,3874153464519644941
+884d4059-e32c-719c-c5c0-6e82f8b10eeb,3074262385,10763908292116523039
+6ce1c08f-9305-847a-e77a-16fd15e63d83,2274344114,18286639777357494453
+9bb9e9bd-38a8-ba5a-3ee5-c8ed78291f59,192040085,16779923433976032577
+b2331a60-f465-3ff4-acb2-1eb293139898,615063310,3726902073366685936
+ec2c5618-75ce-f6e9-81d3-4b8bedfb47a8,3376021162,14843476804947346024
+10f832d8-a186-22a3-15ef-25888d3f0777,3444406579,15318964873284232571
+f963e90f-479a-0312-a14f-502d9b78c754,4143661095,5263030145642101560
+342d243d-a2bc-8796-0567-ad397bcfad63,3991732211,4683684903014035688
+20bf6fe2-b34b-c314-9217-54523296b6bc,860405989,16288278461834122768
+4eab6907-b39a-477f-00a8-fcec91d0d899,4222926072,16348427883622469828
+5c2031ed-61e4-ecd4-d4ec-9a71ba28e6e4,1218973158,6016725492159034462
+bb0043fc-5a24-63d1-6797-c5c1331f6cb4,2762456858,6851272493452202557
+fd710ddf-638a-cc79-415e-f66e60302231,310958334,17190900060062096947
+20cf88e7-b0a0-f64a-470a-f6d4ef7e1fa1,4266326123,3267218535976561945
+74dd23c3-76a7-3db9-c30e-864554adfbcb,532971744,15561649511608433064
+c060ffaf-ef68-f600-59eb-4469c4a029d3,4078550143,17786116669894128724
+7ce9331b-7abb-6213-7ef8-0eb6294d049a,1820860304,8581005902394254640
+2b5920d7-3e16-799e-0403-5753b3d612f7,1586197795,12102054524803661075
+6b669f29-19db-14c0-f143-80bf84e6dfe8,1188582452,18326339159676385012
+12781c9f-9505-430f-610f-b1ac79e41c97,2728552803,2503704289171964196
+83cf7c4e-9e2a-58cb-a652-952082c4f83f,727931890,13966570831616062497
+0d670f2d-a6db-c2ba-c46a-0ba9c8ec487b,1745954070,11058211287342059330
+bf8c4e4f-98f4-7a89-f922-14e41e708256,3309416911,3310722420894655383
+62343dff-a4d3-e883-e6e5-ae44ee057233,441492938,7880316528862126339
+226bd8fe-75fc-97c2-3cf2-02f30413e3cb,1235044628,9271287004343633788
+4b4ad661-c840-e50c-7bad-d5d51503ad22,2030684106,12495679278432736893
+4bb52605-985b-4262-b67d-472fa9aba65a,37660962,7288399992515062303
+7870f7db-379c-9b20-f44f-ae610db2749e,596328632,8556876016258785245
+b56ceb24-0687-f53d-1e15-ad08dafd926e,896946009,1203030624671189323
+61e88e8f-d71a-00bd-a6b3-52f45e2505e7,322453584,13969978273743311022
+f985f955-7daa-2093-e457-4c3938984b6a,2280542700,7866716791525514932
+48981202-7950-50c5-1a5c-907f6b7fa494,3958120443,5990609090162594300
+b136e0e2-0cf4-ee50-c133-a41f846f41bc,2082471207,9693441716347668362
+6c19fd7f-e835-2ca3-037c-e0a0f775f4d9,2033366462,8913781363478738075
+ddc8f450-9650-872d-337f-dbc2e8064bcf,3268335452,3951449408733263023
+3ae42777-7821-e831-017c-33bab2ef2092,1766877104,13580171171497998145
+efccb2bc-fb6f-5fb0-3786-1d1ca1a0fb92,1364841597,3578843392034756029
+a68aa411-a6b3-f629-421e-c9c347edcb62,1002084380,5901424170598174871
+73e086d0-f1f7-5ece-440b-cd554c134a2a,2644133358,12286903627394759114
+79e55ded-1fb9-4ead-2517-76458a3f6ce1,2216711943,3193641760189235069
+cd0eb628-fee7-cfef-2a59-76104773a8f1,893216465,14793624143491020563
+3c5b62ed-e6b9-50cc-6e27-a6bfe0036e23,403278673,6993097456959968995
+2a71301b-61e5-c92a-aa41-866c32a22e2e,2835322402,18160487143461550341
+3b5efa76-d892-732e-c575-369bb9fd43a7,1157152578,11473399328547434748
+01a95bca-ea54-9ce1-48b5-0d83d5be94b8,2373477058,10211125927649465895
+fbd70a54-52af-9169-9270-bbe7ff6b1305,1535192021,4002241913445292186
+1cd3f6ad-7fcd-34fd-e836-b2e9c1952cd3,1453331484,11880965935866098976
+0c0ccb9a-cbd9-ebdf-7600-4dc2d2ba77c7,1457595764,12973351106658021077
+1e7764c6-cbca-0b2d-9ea1-d3b17548e67c,1513426679,16395602621749101908
+043e04c9-6017-ed5d-68db-10b4c7bc7bb3,1040810699,5795865331839894711
+07ad1941-6bb1-fca1-b068-7eba2ddc1bc4,24694479,15855954007540899421
+0ab497b3-1d15-4d5b-5484-565d8497d067,1915057587,6360954289279092981
+0fa74ecc-91da-b597-af29-d26de8bad939,2617710890,4102422788985578719
+d8d08873-94e7-81d5-321f-f91685b9abeb,4124274261,2845279375548058101
+f4e25073-ae75-6b24-39d2-c97ed90c88e8,1773818236,7333909404957927224
+d014d05f-2962-baaf-2e7c-f628a3233028,1461663900,9813885547481535750
+5a3bbb5b-aa21-67cd-9b42-ed3dca45e7c4,3340424939,10178999825685754895
+804c8d41-44a9-784f-ae6f-76bbbaccce5e,4118449620,3166650829454264725
+339f6dd8-556d-51c0-38dd-dee0dcadc064,442084540,1797146545745725798
+9e02c82f-5a3e-fb44-9070-3b94f5829a57,2393697442,3052106366313112295
+703a56b7-1d45-166e-331e-a294f63c2dd4,3411032813,13180131342273707102
+61a05ebf-7ef4-54f4-1170-3e95d6adcc0e,2074766545,4793881099979268434
+9aa81888-d9b3-81cf-aa6e-9914e8616885,3589700247,6791405349769643846
+93139ba2-563f-bd73-0482-b20df59b32ae,837551081,13015083476199439472
+69f72582-98ac-3fc7-610d-899f92a99712,2190421519,18336011820776129705
+2ce911fb-8791-2017-3e77-599654ce34f5,3591979731,12992341801684459325
+d9b7dbff-1007-ffb7-be2c-4fb8de364936,2970134756,5016335736947413637
+bf66d7ec-57de-7f5c-ab39-723782619932,1742628677,12591443471774539577
+9cf39e9a-652e-c41f-f301-f24288f382c5,3866415084,18094601795252741629
+015cbfef-0a3a-01bd-8688-2b4e9c0f5cb1,2060051231,18381464160553907408
+81a87b6c-f65d-adf6-6ad1-d95755be9ed1,1021091339,13720853503784402
+b8129747-729a-f1c7-2fa8-85b6b840e222,3818375691,4368962496362040418
+95001e15-b198-12b8-276c-96ec43809082,1848725808,13483875460463654086
+49b75546-e307-c89f-d867-a4daff543fd5,8718186,6862702609260738394
+3d63a7b8-ba48-1e5b-cbbc-ce4da825c423,2317962889,735487648710604214
+89decca6-0d5c-1753-49db-b4890f7afb05,1796775711,15283938130021328267
+b925031c-9e8e-e5e5-0e4c-4fc24abd1748,3876525802,5322999685021845052
+ac57d42a-2dce-a4a6-c07a-0b16865bf2fb,4015913757,14264104241434268910
+ad48096f-14b5-63ae-82eb-d429efb1216f,2676595609,10472735746356307512
+2246dab1-2efa-44ed-0341-a82b6132dd06,4164405289,9876199969973844420
+779f5679-668e-2757-f995-abdc6872f9d7,3833624882,9434619806297994982
+6ec0d0b4-e078-c62e-908b-33f074914f5e,1378859165,5775222847237206117
+20a8eb25-ca84-a0b4-de82-b970c7b88936,2156332146,11650747766215594278
+1678dd97-5278-a1d1-f911-317084b71573,2765770165,12287208058075349136
+de15b0f6-9840-04c3-a790-8c59f0c297d9,2770171875,15648675579828339284
+c049c3a7-263c-096e-fb84-49eb81b9355f,1877954102,8071968006390807770
+af8698cd-1d48-5298-2d15-ece797dbe982,1614610842,15394320768729465851
+f1105d9e-21d3-144d-b9b1-1d804e74f1e1,364830829,10852980165047484567
+a822e25e-3d20-7d4d-c3e5-2987c9bf63f8,282219061,13207397078162147008
+84b0831a-b254-2706-ddcf-c156cdc721c6,748236673,835654362523730432
+f4401d2b-4690-b746-96fe-cad77550ea96,1115508235,1472024563680551270
+cc757dbf-56a6-fc1d-8ca8-4d979d992678,2104938852,10091026785422356117
+094056b7-c041-82de-9b23-4a122f6f9c16,3725850081,3010443732137013168
+e5eb90cf-1a73-1fd8-c42d-72e6f7a5ec99,3085804439,17525377654776197002
+48facc58-682b-ae50-aa33-2fed27401566,3610453729,17028440205009521521
+891e91c1-e6b0-bef6-c6f7-24b1e3ea484d,2089484757,8479630222551936313
+ef1d2cd5-11c8-97bf-3dff-549352c3f3b9,2243704470,18271250475624229442
+7ad1cac0-f71d-cb34-1ac5-466278f5815f,1587973207,13311593313823940502
+aba7dbbe-1846-0856-aedb-24cf4349c88d,684705062,6226597527932827952
+ce86ea46-6c97-7692-d8f8-97561711d32a,41115574,2380768647410328683
+0ed5f2d5-2003-7da1-b524-83821fdacb24,2836496347,12815318481206908745
+ed8f1a0a-4cc5-9f6f-8887-f98a682c1d43,433000834,6591706705494967794
+133d2cdb-5685-5218-89cc-8a9691a0d54c,235632500,12944643938825315016
+099298a6-5620-4ed7-e7a1-795257b1d7ee,4209736873,16898579119297458069
+e7aaf3fa-0ea8-d0e2-e827-e9975000c57e,3833635032,3031495112854945407
+04cbea9b-9c17-550a-4132-c7fe0996c543,416582626,12206913501078019340
+39cb908c-f524-0fcc-e304-28578363e226,2639121884,9806928777777801361
+8a2e8e48-1094-0831-65eb-5c827e0f1f38,4046187296,12452074442047638188
+7500ffae-5211-090b-3d1b-148da1a4aa70,3776153171,9641783084933506215
+dcac87f5-132e-f676-5b11-ab01bb516dbf,207487230,2223428687503909548
+f439fb3f-2f04-af07-080c-35829a46e688,432856670,12924801952705795169
+08b28d7e-be46-f54d-142f-f1f905fcea69,31490568,10786741216150594013
+330a1c92-2bb1-ac51-bc26-2f7c26bc1d84,4293049744,8579868134079097281
+06833a24-512b-1b46-391f-273026974f8a,1513259506,11098304472349988020
+a0d23dc9-2a7c-b185-5c5c-9f7c0992dab0,1701722258,1130682450887589599
+5376af5f-ead2-0036-6387-73595e80369a,1220351718,17248165458031400958
+ed00bbd8-845b-5297-c51e-6f71883c0450,2753967313,1477383994342941798
+a95585fa-eea1-30d2-d174-5cbaae6dabad,1378869082,10377884133955801617
+907c27b5-ad5b-6d4b-d8d4-c31c4561728c,2918372770,15114562007256948009
+3b78c3b6-92c3-3fa0-82ff-e1fc11bd068e,1273247278,18294554432160231558
+7459d20e-f1f3-cc38-820f-dd4c8bad60df,2626246488,7084917635283227064
+7b14a5de-7cc8-6156-aadc-222eaaedd752,3392482083,17362204815025652198
+8d8e997e-5d16-a348-28f2-c02973a93174,2177097384,11716050817789621248
+f4f46170-992e-fde1-3f48-fadc9b39a507,307357279,13667802991504772428
+08193f94-12f9-098d-74b1-96c1d0c0a551,2247783670,12620680743693808017
+52e6e908-c455-24f1-ef56-52124db38b57,468741646,17910440252009930418
+fff9200c-a878-6ab9-6dca-aa25ff20029d,752155243,2885475300180797467
+fb4299a7-13c1-b1b4-c98e-13af34d6c500,397786280,14693767360746520267
+eb06b4d0-6285-73f2-b517-983f1cdb84f1,1878539234,12745760819810718901
+213b765b-b729-23dc-ffac-6076285b30e6,36553629,17907484399602140078
+cc43d5f1-b63d-56cf-1302-f8b6faaecf9b,697590983,8130383159976086804
+e4499541-ab3a-0a39-d80e-50444de08ae2,4212808872,17746904184301492743
+0a793e68-3df3-b675-5c1c-249b5762e934,3081421666,5997850401532925907
+b5d4b790-6665-088d-1055-e5af5bf54053,2301811433,18266410794493316715
+6b616fa4-ef0a-dcb5-006f-b7283a9e1484,2400282145,10057162777559924261
+58a957e2-c50f-8e82-b818-f0b15a54578b,706209539,7111825489230519406
+2741fd2b-24eb-442d-e676-489503dcbac4,3134026417,17458492613615308142
+45906ff4-de48-6e69-3d4d-03ff31a49e2b,1891197189,16025722967022052150
+0b35a7db-1614-cf1d-773e-3638a64ba214,1857483989,1910003641229767806
+096b4040-0038-fc10-dc5e-68ff9d71b57c,1466675421,12643658184046205668
+dd1a122c-46fc-5216-5aaf-8b445d214032,576615602,14110933747952594394
+24aa634a-ec46-5892-cd9e-3056a5caa98d,2596118591,16085716397510606527
+22514f73-ae88-b0ce-24a8-80c88255621a,1655311860,17329595750558012378
+2238fb96-9185-1654-815f-a9495d0f0e20,842688193,4966275886945025319
+5f7a17d4-39aa-3574-1d71-65a3006e5797,4146689995,15356592417531095138
+560fb2fb-76a8-fd1c-ec34-b95f2cac325e,3353222788,9846626110655871753
+ce5e3040-2432-f862-b834-723dc8015415,4087938840,759423928055600337
+3238225e-cad6-0ab8-9b1b-b179ba37cd47,3225090276,9175387899406548311
+9d4de449-b2ff-7ae7-f019-fc5c9319c1cb,3096723858,3547017071732651276
+0447a7a5-9bd2-596c-bf79-fc0a146dd7c9,2044252066,3426116703867666194
+9929264c-b06b-6e13-f807-9c107f671cf1,876953684,2044137380714372068
+8db3a245-b86e-f3a1-d588-7dd30b148aff,908774336,1353152780474578937
+dfff573d-5c65-7c36-151c-63930aa187c0,3110882996,14517514459821170620
+72747f3a-3023-dc64-9440-99bf56556095,1428732599,14518492140126222222
+2b2dc968-f451-d0ff-0cd9-2861b0645f88,3245692676,11755919918966927004
+4599139b-8047-a709-d8fd-eaad065bc4bb,4004196127,883818991928959709
+7b3f5342-c1b3-2c45-ca9d-c0b17c9a09b1,39423009,14460441422866308174
+86b11208-ff93-5e27-965f-43a6ee0edde2,1568094164,7734792327463485248
+b1b85e0d-f380-287d-da29-484b41af0eca,487537176,944834489135150937
+4c06aa3e-ed8c-d1eb-6f9e-cda39e5717ce,3225193613,6921355830340768330
+6dbec695-3680-de39-956e-2cefffe01711,2753346789,15473772713854333572
+905cae70-e9bb-76f9-d92a-b4040a10d8c3,2570179212,10344997778035814408
+9f3c3409-94a9-32f5-6c59-813fe48adde6,119205799,6875316415660866891
+aca805e4-68f0-b141-68d6-38ac98a34ce9,2884871683,11905205372447861597
+e318a3f0-0da2-6b6d-f6e1-838375c4f6b0,1159900770,13708937397286570680
+f4b53cc8-46ff-2b48-03c4-66e44e9096be,4114840823,16488284277640440310
+6c08c14b-bfc0-b285-93db-3d34152df0db,2605621392,7994651013961547207
+47f36e0c-d65e-4ec5-5d99-1eba2832f8f0,4286924007,10971310112610176250
+0b7acc8f-0fda-cce4-acb8-dd98f2e0e67d,181461665,11404403986620887621
+79cb45b0-faa8-71d8-a33e-0427624d1a09,3314352906,17803255957730538288
+69dddb36-cf9d-2eea-667a-85da268dd7ec,1188154389,2669888136478044771
+c512604a-4fbf-2e7a-dad5-1ede9475a849,2339909620,11867183383004230662
+fbafda82-d334-0d34-7615-915e6d081bec,494972122,3143408718111541553
+f704007c-7b5e-6a61-7bbc-70999b0c34d0,2159822217,4608515077061333709
+1148c5c7-20f8-1866-08dd-484bc8a9329a,414526608,3583707433958583588
+d64ee569-95c8-d052-6c45-c37c05280697,1600233138,2916795311247693944
+1448ed62-20bd-05c9-9058-6f4869d06224,3901618945,4997842532825565271
+f5b1f2c2-d650-0e58-de6b-15995471eb5e,1920828609,12902661028152794243
+2b570236-e4dd-2f72-fef8-0d6fd8cb6c80,2057684436,6085083540509962125
+d2503061-55e8-b858-cec6-da5fa1980a80,4201031478,13830452370455043015
+9872834e-4b94-5996-abae-ccaf68db195e,274062373,10733605511735497688
+1c323c9c-345f-eaa7-6c09-c50d8014bb5e,631076519,17376726001062197330
+d6e21568-a8ec-96d3-ea26-43b1b22b27ab,2043361087,4280902640909141299
+3accfeaa-1ca8-8717-0ecb-0786239a4771,2455522646,10198294176616430253
+637ca74d-017f-a954-8054-894fe315a63f,734353686,14678729537145402670
+dfec7347-5883-f1f8-ccc4-dc67a5d1254a,1068657334,11214263531827287980
+be3c8a5e-7f0a-7329-2403-c9f50ca9f0db,212548,4414468432047532470
+78b34ae9-ab72-ab48-ae66-ab852b37e8e9,894779522,17418035791721127936
+d0dd4626-7cd9-e76d-4c03-3462b9298d0d,509213222,10984814203139838976
+2e34aa81-7be3-ec02-b21f-d7edf2a018c6,3967673440,1459600227042789045
+e14595ec-05b3-611e-9c2f-ab0785acc02e,2555322136,6459803366556257862
+9f263afc-3614-6fe4-b6f0-958d14abc0a5,1113709471,12751300426126082590
+877cadfe-883f-e736-612d-c258b5436814,1083377991,8842692297209581142
+1b5c156b-f6ad-0986-cd75-c77018f49cdc,4204859080,12696276447151964000
+d83db5c9-f11c-4931-1881-28ac0f7a3b1c,1358431452,11911092438508395167
+34248da2-2d7b-755f-bbde-ff20d18a8080,2122595532,16064252132171506015
+403e0604-e698-395c-e47e-c19e6379b19e,3159444290,8986686052295090729
+ad4f0361-8de0-f44b-86ed-ceac3e29babf,48962991,15777497496607809821
+a19ed955-a41c-5dee-43e5-ec332d7d4a94,325478307,8420604911264637106
+5119590f-bb82-05b9-c8d9-9f2b6293ae48,1462740919,7609731535508310139
+5039ec1f-520b-2b67-69b4-4db008433585,1397067235,8124237091335222899
+a313dfb4-6691-4ef0-a61e-8f0a1ea799da,830562176,1164142408156042883
+939b66b0-d0cb-59ba-1dc8-9c157ba7b893,1211630262,5675621200257377434
+eda43dda-fffc-7608-0655-02226cc995a9,1557031494,9991641617466838173
+b908b834-df14-96dd-613f-bcf51df8188c,2400997256,1983688523644239010
+796ac48a-8e1f-bc6a-1783-17c3567ad4c3,3728255437,12821145490617473798
+5d0e5656-1c69-1e0d-edcf-8ca40c0fb69d,2417765016,11486239132164643067
+5738a624-42e5-af86-f17d-53d7e761d2b9,2563234775,1667474723651055036
+613b2a07-4481-87f2-14c5-184dc1be527a,2953185300,8003526829075564710
+559e287c-03c9-d4d8-4d54-87ee4f87283e,1453503945,10050027985916856661
+7b95efb3-4634-b35c-7639-ebd5a438f609,2113102790,10652426731523675945
+7cc034bc-c9e6-cd32-d43f-0d8d05d7dba0,3182123720,14695942900828076689
+fe5997df-0cee-d6e9-d2ec-3f3ba865b367,2041029077,4003680379906539046
+289e07c4-198a-5afe-3980-b3ca48fb8581,1893407111,16391783995640982805
+657c4e74-2d00-a890-c2ce-6c2c1485b9f7,637548060,12813940038593633906
+e90e96dc-0fbd-b7da-2cde-0de7bc6be763,879781777,7350182828383633616
+bc95365e-5b89-7624-c359-d37d01647988,1264488985,10278774453058108927
+d428a2ed-c62f-14ce-e223-e438445fe9ee,2315461047,8865014804151812586
+d5ba7f03-8cd6-eddc-a89c-b0629bcf84ba,4228193469,12580911965944556422
+bda229e1-6a62-b977-8dba-b6dbce24d412,3880264440,409975466723732771
+dc1ed4d5-5a1b-5708-3506-a99c6e923e34,1772994830,13444485213427960512
+ba930e96-b197-48b2-f972-982e2b6a6b9d,2000658646,17269775191515262624
+38dc26a0-ada3-86eb-69d2-3281ad11fea5,365692452,13075710109721706475
+9601661e-bc8e-0dc6-ac8c-32080896d055,2287259895,8278306186884128852
+69a791af-2ff8-2e02-b7d0-605f10c7de8f,3464545516,14695280575284057643
+a6f0dcaa-cc71-7633-59d3-5a5ec4206a8f,2381200070,1027692564438358972
+01e193c7-e45d-785e-9b2f-80335514fd51,1654167714,14051039471918727532
+61142608-246e-9cc4-f657-087cea6bfc23,3131972059,17563447507721074930
+0201f948-4bc7-9ff8-6189-aac742130ee2,1841288132,18255221939426404264
+6e0f9c24-a3de-4ea9-8f9d-88b97efb2d41,940206127,1473618123796906000
+61687c68-7f68-b4fa-496a-301b49db7d16,3841546204,10554516687917358243
+5ea1617e-eb2e-689e-2b5f-529217a21e83,91969785,3991971056620927125
+ca67023b-7c3f-ffa6-5838-299ae750248f,1773209860,8684993574904194891
+2c977f03-9a88-71b8-39cd-8f88dabc1929,3370203386,11910001564107696597
+c0a1db09-f6d1-c944-f44e-20fe97fcf008,21606675,6936949587287407122
+dcce300c-8e99-54d4-7a39-6b8716ffc011,3122637231,17331483745696355945
+55e86d74-9ddd-1ec6-bd64-6b62bb5cf3db,1836816010,16623164061317955091
+8dde4fad-1fde-0fc6-3e5f-4a6b26ad12fb,1766719989,8949221349058017213
+e8a60677-3a13-52fc-2791-cdfd5dac5301,2924190883,8840491264135153227
+0cd8f039-5bb3-e0ee-10fa-db881dbebca8,4171625793,12442714295927376230
+57737704-e776-56c4-b935-96edaeafe334,4208551186,1186884361124694349
+44b5f40e-864d-7daf-a4ac-0e05301a6576,1024271580,12071506315080638085
+4b242bf4-8a2b-0120-4fb4-a515a2964330,1074518310,2410372711911621419
+1a133317-fde6-a697-ffe6-5eefe789038d,2855937995,10394364579579208148
+333ab2f3-b90f-4554-4351-b07912fcdb39,3744903445,5163545812330098199
+34dbacd6-8503-1ed4-e24b-2a39772aae56,3977639123,7741292872854775864
+6dfd9577-ce0a-4eee-87f1-e9ed252bd5ee,3688176811,7821317041331860661
+8d9a2051-cc0c-1423-6e23-b889aac0af11,1044906602,11146786970019470906
+d6850723-848e-7d33-5a62-082dde8d7821,3862426196,5967291558421022223
+218490b4-42ee-d8f8-4a96-319565dee1da,1645386215,11155938403898274783
+89a03e52-078a-0e16-1399-ad42b8379992,757249582,11122494383315120780
+20cdb554-f8c8-424a-a1eb-6da0c49d52f3,2167370238,4159893422038625508
+239b38f4-7f7c-713e-8c81-87ac8683ecd4,227777334,16070909315346012158
+0b914be0-07db-2772-4cfa-f2701779c9a5,1958660021,9423401241527649798
+c05aa0d4-2279-dd53-ff26-5b5acfd65881,1525228041,16212576043646293409
+a74f0de6-3fb5-af20-886a-6d87fc94ae79,2565777761,5149022909492976688
+b229de14-af22-08fc-a1dc-000bd11dd120,960235064,6393591222115432446
+748c19d0-76cc-e0a2-3408-7a42cc2204c4,4177486779,201268589816210563
+3285ee60-f397-38aa-4428-c90a5978ed65,759534653,12004933368535280200
+4a7498df-55f8-5d71-2ec4-32775209bb24,1257190231,3732378961574386342
+36efdf5d-2778-276f-1b6b-44e07a2bc971,1113367420,7912126458436294116
+1a2cde39-3c09-d044-2781-454bc4c0a453,1173615317,16658704135792198330
+5fad4129-dffe-8849-8180-9c58953400ae,145466647,9178948382769240631
+0e061c14-962e-7db8-1c4f-5cafadbdb234,2277481229,16484863816363614117
+8e943d06-6104-8555-ddbd-63aaa2a21374,2460736383,1521486779243018294
+c90ae0c3-cfe4-cc83-a705-2ec41e8d9454,3258584361,8633896130540301858
+76c96d05-dd02-730f-050c-7cdd5f971ec1,57281275,336941844990648932
+ef5289f8-ccb0-affc-6fdf-19573fd7d73f,1354782675,10386994105176115738
+2d967557-2876-a522-9900-524dcd566f43,3364309417,3406732307203210702
+933a24c8-0f9f-bd2b-aa49-157e9d206d5b,1478152964,4103082162180227984
+26f36b0c-5421-0403-473e-e480bea4d65f,1102074514,240139074410006659
+f6e79851-8a51-02cd-4cf6-97c293461a06,1127338498,3384917195828844670
+9175051b-4355-1216-b154-b900a69c2202,1805488314,14746772511903317212
+6f3d83e9-b7d2-2efe-ab4f-8e78feada659,1073448785,18196747343345903032
+3127c8fc-a455-a4b7-9ef8-7ff3582ba663,3772707039,14649711781689337887
+7fd2eeca-d4e3-4a42-6dae-010f79ae2e90,1644389394,13063773672553927318
+2a57b469-5dbb-f487-501c-94ab109ff530,1471444754,15611665139758493822
+ceca316f-ddf7-fb29-9ad8-70a62bf664f8,1777318697,15998219055069362879
+af12090e-dc7e-5f3b-fd84-29a0ee0d743f,605333459,11462750654916888034
+45620b6a-7ec1-77b1-6272-5775b5178018,2220035144,2619434701882071754
+c90a78a3-f068-14db-9383-fc1b38e4106c,1289549667,4556622766191890501
+48704659-5716-4ad0-8b73-76997fe07f2b,714598625,4744813349100707680
+5ae8f659-13a0-f496-cf16-a23fa7e62157,699269381,5060529808879301709
+ddb430fd-8d93-cbb7-daae-40e5763a6ed5,3410297173,8040259099459028284
+437dade5-70d2-150b-3a4f-8daf2c86918b,1398885034,17762710183680055469
+e685cd7e-2395-ac0e-86ac-d3ef64566230,4268798845,8311022240821384134
+6d7685a5-989e-0201-f61f-7e8145543186,711632079,17099291247670525416
+4a67df2c-2e54-95e1-cbba-597cf257fc25,3399085354,10738321705894231223
+1c0ab009-efc2-3d97-a55a-6d45e597fbe8,858132888,12680079823516553632
+5b43de45-4550-4d54-1f72-f50d5249b5e0,1837777425,9207007070119851392
+4347668a-52fb-d912-ec75-20679f09ad3c,2506331863,17629320252014875745
+838b79f5-668f-87e4-c0c5-23f7c158836c,1783360058,14852607625963281635
+8a9fbcea-b0fc-0869-6c62-9d16c1275f21,1985112239,8261156648617491143
+d448a0ba-f12f-4f89-bbe2-54236bb0c12e,3841832801,15240453085359093039
+e49eee21-8149-6361-22ca-4943f46089a2,1038044805,2101476899924779579
+d7570f5a-9a3e-4009-9c64-3afb47a8c65c,4183224004,11997402417985124539
+7a7da684-249b-ebcf-124e-b22149ce030f,346232858,15287656760094251955
+d3b29aa0-5dd1-926a-7861-952ea4a798ea,578060060,2864218674427517118
+b802cb2a-a064-74c0-85a9-1c10a40dfec8,2678837655,12806360730096319647
+55e4f00f-a1cf-09f8-4131-36c808eafc36,1625001446,16679347027254852792
+0360d959-2861-c424-3881-eb8047dedb1c,3403869906,14936715795850192557
+c08e6b37-938b-62e6-029b-3b0652259c8e,421283289,7086695303662291836
+a6a5fb75-92cd-0b35-94a3-d161ed652dc3,3600341016,9926880974704573030
+d1bb501b-37fc-7c49-d3d4-bc2f43cba7e7,2000013563,8963489042618279549
+33bc10bc-3e34-b780-d0c8-814764702095,1461085918,3511976123005581757
+ab18228d-ff2f-5420-0f6d-ac112a8218c0,2897691006,14660936798661678521
+b4cdfb78-09ca-4155-0e71-8796f3ec3643,3635303661,4502278985790343367
+917fcb03-f4b8-d617-a81e-c7b08e84b3ff,896635893,11714300377855661247
+806ca41d-5898-6df0-0739-eb2499d527d8,3233478207,16483786823789278389
+59473be6-b130-e55e-cbbf-a6425b23d5eb,3060664350,8256841396153722441
+75ee8288-416e-febd-0928-bbdc3ca24bb6,2922427447,17891265159834349935
+e31dfad5-dd59-af49-8fda-180497598c4c,538428456,12953450614610541586
+fc28239a-e5fe-b920-5bcd-76d5572272e5,1918665888,13079801897725402931
+cfb55670-4470-ecce-afb0-4eaad9924f40,4042814984,11751362204266859098
+13f5062a-fb4d-3942-e014-c776dac3cc42,372030295,3238433160972765445
+3a8ada67-b28a-7d9f-6c37-e58cfb63dd36,2472614209,13259504757138726924
+538a4974-1458-a53e-e7cf-d0367c0d24d1,2434541330,15291420065936921732
+6f3e07fa-e99b-5f7a-225f-497675729a50,155166323,2981030997597568946
+c6595af0-d2c3-f899-1b1b-59cd8c1ac04a,2327380395,5669390161654907372
+25247115-5860-b18b-6a97-65cb23de7e31,976026950,17168428031056047149
+d69098d0-440a-b155-7065-0f1865aa3cf8,3461389169,1690086829439957483
+451e7bea-f188-bd7b-9a79-e9dc65c6aced,2628581239,10764673006213071532
+98e2dd81-9b87-a8da-5f74-2e7903571e78,164209880,11154990789819808161
+22f3a2f3-8a66-6fbd-a908-e94aa39a268f,2693069143,12749077252426566747
+554547aa-8a28-48af-4af4-58dd68fad2bf,2791116583,6200793556566325199
+8dd68144-231b-d6c5-83c8-8bdfae3d9834,2317523251,5603919119544865407
+f35f95af-3028-77ce-92fe-3028cc03eeff,1362620777,14906358395761269660
+1c20c5cf-f244-fe72-2fa2-21c7ac019918,3990225593,10342557351998244675
+ce631ea1-8d53-3720-9e27-06139f78e44d,2367683016,3539482193423353912
+26159385-e57a-ad63-3b75-fb693e90c0b6,2684881576,14830141185470684242
+c48a8602-a458-b452-b35f-c8b020509023,3732394126,12320994337575232501
+dbeb657d-4268-3858-9828-afab1a88655b,911068259,8535511652432790756
+f6fb335c-f6a7-632f-c5d7-f6fec0cb0ac2,3196460905,11297298894474778679
+e23397e9-c1f9-de69-6a6c-f121c7287f69,713549395,16590531415278587003
+de6b9a27-0e7a-d383-8bb4-99dcbd772823,1405634824,6042848780148009380
+3c7fe593-3478-6a46-b67a-47c3f1f488a8,2576251857,11913831201957459385
+a0d9adb9-20e0-46d6-5359-eeeda414a3ba,1549177252,2683984930594520203
+9baaceb5-adeb-8e38-4258-4138584539b7,2868372431,6227083729035604399
+9fa105df-3608-4bda-3fdd-6f413a634314,400084413,12665853618189750493
+c4470487-6c94-e4fd-9fb7-8104a3c83ac4,399307574,3780587754180889257
+7afdb78e-f65a-43ae-0eff-d31502847f60,705023425,10991651145353084034
+49aed93d-6b5a-9d82-04cd-fc2449b60362,3727763412,14793816605824754124
+e2d4e3fa-a878-28e8-d007-95058ec95a75,1968067420,3568483163377175495
+ebd7f1ac-b681-887a-e3d3-7a97ff05a197,231104137,14883738481568546676
+eaea8ae3-87b8-43de-a518-e6f03822b2d8,2147890847,6726151300018365156
+f09b33b3-86a9-b7aa-f644-75f6250b7bd9,3541502902,5089529500567157291
+291537f6-556b-7b7f-3d97-da9c9534aa30,128235938,10775710032004319467
+d3a185a7-7d13-bb73-9cb5-dfd25adff758,2259610225,11300052304051690148
+167277e1-aa7c-f48d-07f3-ae1bb3902360,1777926029,15898188106807597860
+387dee5f-81ff-5394-e0db-8507d59e07a8,3926690846,4082138194479149320
+5b5526ca-0f9a-bb0b-550b-763f10c1baad,364246810,9409645069190250363
+589ce7b4-13b5-37ed-2e57-89f2397c9cc1,4192963283,1539276579437943735
+785d69d0-9be3-b34c-7c01-854b21d8ce57,3930735980,9443801149939807176
+52d92b4e-e741-398f-ab7f-ea563fd71785,1054511540,4068442446811576529
+76b9c92f-e864-884d-826c-bb7d174121b6,4263478217,11760666790700586515
+d3474f78-3707-645e-3f6b-fb1ec9712602,2031489662,3657125508459386377
+ac402dd0-225c-a060-efa9-f08469ca4d13,3827386895,13134132562248726473
+13e0dba8-fa8e-f5c0-e7e9-a00465990c8e,71695329,1525065025472729060
+af218440-0bdb-e700-ec2a-5296b3c9233f,3228782573,15155972944778426923
+2ad7006d-231e-c3b6-ce91-05e5807f2b80,1763577833,11746710349464316916
+a7d17533-f247-a4bf-f847-b0365c43df67,771979283,4856607581454482799
+69171243-bb5a-60bd-af50-d52f085290ef,213114923,3188956166035527235
+f61dc124-4cee-a3e5-41a9-2f4e55aedfa1,17093878,10705794487013088634
+aaa71bba-bee6-e9aa-263b-506afc681aa3,3443024268,8176945509463733820
+fae8e52d-ebd7-5d55-51c0-295829fafa0b,2972328222,1016329244688398176
+2efaedc4-0216-4a4d-e8ab-5e84d73423dd,433504586,172069609095781087
+fb2614d5-918f-7381-f92e-3bfa1b712363,3800583215,6405007557288391941
+ebef0722-69ab-cea5-bcea-7130a240c4c6,3414450755,9515400410572751903
+3b0427eb-2a61-520e-ac4b-b7499b185ae7,3323353006,10200565470806585355
+fe2b9596-747b-40ce-154e-a6f12cc3c82f,2794424638,8375323055723565104
+805c0f28-8693-4e52-8b48-3b230de8bbe1,71961926,7790659772711402015
+a3476a7a-0940-ea0a-a73c-ac4974e0f573,1272077803,4493171333397798423
+31b6f343-e3eb-a616-296f-2bcaf9c0ad7f,868730587,3048025442384565134
+05ede04a-2dc8-47b5-41fb-6f73f12cd4be,4263645162,10266316631772213535
+e8243ef5-7b80-4f26-cfeb-12de121498b0,148573016,14561561303065685733
+458f1b61-3677-c5f9-72cb-6c27bdef73e7,1845863678,16124193611843764685
+9dc6c477-db4b-9c81-fdff-73209e6a303b,3377138059,9946866049822625107
+50980ec7-a04d-fcd3-d339-d443401af426,3080170974,4636171436568019893
+6fcce362-2979-a430-b73e-59a01f0cf164,1018462773,4902853929235366116
+0d2d6f4c-ccc5-ef55-55ed-fafd89c0d07c,3073384299,1444421424330959157
+e0b8d8ad-e7c7-f3e7-d8c8-b7855391b99f,3227610944,5396496745418215246
+21ef3f08-b0e2-7fa0-bdd3-08b7ffe642ef,1450070094,2863748521082651526
+e07bd16b-6c44-7077-8b6a-511afa9eefaf,3523893190,14502188081369900959
+926b4067-2021-bfa7-5024-7d6729359975,936522846,15788459691769290044
+e9687d5b-7446-b588-7572-924c3dad08c7,3289484719,16850284426238070751
+3656e8ee-3f1f-c884-e4eb-8641630fea8b,2027776904,10485640914131004659
+d6dec546-e6ca-41dd-6407-1b295e58e8f8,2826886573,3926845788426788373
+285081c1-a6b8-71ea-4d36-526056219c76,631919638,15797688849580999615
+d787eab2-69fe-eb3a-1e1b-c99f4bf1011d,1256129862,13980461809655001531
+2aac87c4-ff0d-fb3f-a27b-e072860867bf,3707834285,13786034464223202273
+8e1f7ad8-a7d6-a407-4a54-70bace836ec0,3608935933,11288574377916658215
+d43dff78-1c87-dc7e-7888-6907e2b2c132,2113452049,14566800392046058586
+781062e5-dba2-465c-6d80-df27e982d2c9,2455157129,5894081806670530345
+e5f5436c-fb07-5c69-3713-8b105c261628,347263210,9186454599183173717
+32c29027-6581-0fb8-c29c-7e6ee95d4a99,989552548,13718948789590664438
+fce7b9a3-9c27-357a-05c2-45059bf28227,1444168151,12447578830517751440
+0b95305d-2d8a-8035-5c01-fe0359643c84,4107399453,11778416685561105749
+828f440d-fddc-781d-ec1b-423f92b70a44,2871265521,7214759659571698007
+99b8c970-4b8c-891c-62aa-843c2b3fc0af,3700761759,11547021568177648336
+75094679-8a7b-b276-afa5-ec15cc9be2c9,3049408242,13379729104847521313
+688b089f-1d88-c043-5739-1d2da55bce42,2918853245,15242335288174771377
+e7de3377-4b1d-2af6-1fdc-9b8a0d3e37a9,478511369,2136947283035658383
+e7f3271a-4087-18df-ec36-c5df5147a456,3838234328,15335958247507707530
+03971668-e140-30a0-b84b-057d5feb4478,120164561,15647247340894096022
+be6b9d5a-de81-0dd2-0053-0b130ebb430c,3564493010,1344952251537170988
+f088ffaa-b5a4-318c-ae7c-3ea26856ae02,855817550,5070581703721720998
+ec1a3c84-114f-f976-7f7e-2c750fb72fcf,3572175650,17480104729714206067
+47c24e80-4d0b-becb-aa9a-76c05ca592f5,454534042,4021210153821240260
+08832bd5-531d-dbdf-c8f0-3a15448a925c,209991818,3187736829869564578
+9a0e0de0-437c-4014-1a95-13c8b372d222,1652397758,13082391128327128442
+c2e399bb-7076-776d-633b-55e3dd57799a,1070800104,6101590956762837768
+c19ce8da-9529-e1f7-67f2-3053439fd04d,3949109829,2160240632522052954
+84920a10-16f1-5d5d-703e-45798397797c,2776313680,3076025140821925823
+bbca7af9-fa20-8f88-122e-ecbae035be39,1297598368,17879321670429805397
+5d60ae83-a276-d18d-d87c-11a9a6df63da,3106746870,11479821287190137243
+4d94d9f4-484d-7b3f-059d-d8ef91860965,1588739411,268301304200288462
+50b33fbf-08d0-96c5-5818-9474c7ea5402,3324654866,12886349737784674181
+61e8793b-bf9d-fc9f-de5a-4b2f0c234124,1222246779,4229226036830069184
+585d6894-c3f2-46f0-2a1a-18661a2688c1,1293859666,348937660456402454
+7da85329-d68c-8b81-fdbc-c484d714890d,1806395150,4485286803302052265
+3ed5370b-bc2e-8583-26d1-06c07b40e44d,4040059114,8412808147073748986
+c9418b4b-c87d-93dd-cf53-e181d9c20229,4098063197,14802215487874812323
+1de2dab9-063d-4da4-7c7f-1f8a1278a67a,177004771,14660380553529025235
+6ef04b58-6da0-0c4a-ea3d-3f347944f3c9,1833534401,4331983459268383552
+3a057a5b-9456-7e23-7a47-5565dc06441e,647191454,5447926549885878778
+3070b01c-ddb1-1c17-ac4e-816fad71ceed,3255333734,9800064957484631827
+1547e96b-9e32-fe5b-d2f8-341e5ce22570,2726819990,10678294529754739986
+f0692188-e69f-d061-742e-9eda78dd90c6,3458848404,972835889329345176
+f897e514-5eaa-6bb9-a633-b2443afa2faa,3387246398,16232339246371994171
+8f3634ab-c585-c64f-416f-5c6fd8a28bf8,2999610849,14973398117165242987
+81c63a94-2f0f-d2fc-a795-1418b005203a,3842854084,15036575175478511151
+a5500758-7ab7-3c67-5ffb-384cda8fa75d,2541941254,5975230196879807127
+5d3cf49d-f067-efa4-eafe-65ff82c0d990,318515963,12114611014061516970
+0c2d4a3e-1f9d-cb45-778a-1e248760a7c9,2281472675,13887021012024354963
+72d8022b-45fa-8360-3902-79b36c4f823b,4162485122,11725741156763122290
+73ca029f-5f3d-d2b0-137c-36efd7bf683b,3280952387,4924701691648926005
+98fc2610-55dc-5266-6aa7-e5a8c45aa290,2114435537,16971424420771576012
+af4bc83e-808f-5178-48fe-e7bbf8510059,4172296545,7677743344861902662
+1f1ec08b-a9dc-7c2e-c1ce-69704c93babd,3415935296,15687085419170582183
+ff54a224-f13e-25d7-85a8-df53cb87daf3,3757777024,13332252299752118960
+2db648bf-e458-8f1e-b872-396de1d2f230,3426492157,13871198627913759991
+b3e0c02d-8dcd-853e-36ca-abd8eb8afa43,1144528204,18066082882058586967
+457819aa-9478-93ef-937f-ead6c2272bb5,819410418,9406434951671027027
+9f0d21e3-f4ed-2b67-0440-3a7e04c2bfa0,1930877402,7200988108352957838
+d11642b5-1460-d5b5-792b-ebb4b93642f9,4107965490,6976901348828685663
+f997697f-a542-7eab-6488-31b30feccc64,2134589544,7061255262049560617
+b9ce3f10-5a8d-66a0-9b9a-538d910e7720,213009626,7694554851374166832
+9b0bb7a8-2f1a-d736-faa8-e1f6badb28d7,3570621519,12456509631755722482
+9f1039ce-b58d-25ab-5875-22f17f4ddfc1,1161969690,13309537346733628862
+ef608b33-1d3a-203b-f144-ec74a693c125,1659934481,14850374563013214837
+322836e0-8e9e-f224-a49c-b1f53f8b7b7d,2434933998,12925415778185926684
+a556bbd6-2e50-c31f-4a19-4a7e5a15d69a,3913724687,3318703068829957761
+05e6bc1f-ef8a-d537-248d-748d5d14cd54,1378919356,11873277140329949306
+d568705b-fc19-70e1-d5e8-b97ef49ddffe,2078742002,10424791420090306432
+6d73e071-786f-7ec2-67fc-d3a6d5f44998,2179611730,3024340105575612151
+041d16db-c82c-a8a4-1a55-f49975fe949c,2089538166,16741481943684664780
+7fb53596-ee3d-145b-8e83-e13c40e67f16,1756531668,16525548456861135322
+a0828d1e-2893-0810-637f-2dfad12c2b15,1703052413,10708865284996602199
+bda88868-5202-73ac-98f5-58c1d66f09b3,1401457371,16250010022514657045
+c2452081-c3ba-f402-d75f-618c6760f4ad,1774897378,10038031365758247897
+f3c27039-409a-4378-72cc-d8d1e96d8890,1494299454,2031710223847331110
+10665497-825a-f2da-621b-0f9f39b11bb5,2821847704,7857069713539634425
+01d64d8b-e493-81a8-5897-0b774e6cc5f9,216326358,10400362956001917825
+77bc56f6-00c6-a6bc-7599-de6b4da75cf6,1055295323,13755025748825476694
+c383bf2d-71a4-01de-df6b-cca433e81c94,4258421342,7859906314993051725
+4dfe18e7-2de4-c947-bf13-99a78efe36b6,2184007700,16910189711497009898
+e0a0b167-80d2-0a3d-142e-6bf61ff9ae96,2919242536,5824587683763174933
+e50c1d41-9612-7246-7364-116cec2899b7,389757389,241302437448389776
+e3de64cd-f498-854f-a46b-0a7fbfe70eb9,4102945050,7039023650278222870
+7f7396a2-ae6c-3a31-4d0e-cd7a783a1c85,1937762582,2317915562681830856
+0815bd20-bcbf-942e-a606-142f7227522d,4015870694,10588483742297066557
+2c4ea4f2-cde4-659f-b051-bd80f91691e1,2163137509,3522544758095147245
+8d4e2d17-41ef-47ca-27a6-fc4583f05657,3672709947,1481397359234850026
+c0cde9eb-852d-053e-7f19-a44fc8a13d84,3067880228,8889090112730751054
+bf059990-7480-5431-0da2-6a343b6554f7,3778869579,18409542323770978203
+9b5206e0-f7ab-92fb-fda8-fed9bdd49ea9,3734813577,11818947461106122997
+cde8ad69-8fdb-eb6a-8347-7824d43e5559,1235977900,7909684124102730780
+8d016947-93ca-2c96-fe57-048573256523,4262026153,717443835307884218
+9e43effc-8a47-b93f-c7f9-33e70fd4785a,2519202878,11840565362479353131
+d4597316-371e-2e7e-b4aa-51e8943b54fe,2684825829,16358701645020355012
+c8fe4e4b-2e6a-91d9-303d-01b030f55f10,1466756649,16253648089949695115
+11730cd7-dbd8-56b8-7879-f3ba0ac58251,3794647226,216670490394619507
+4ba29919-9394-b672-6944-a558c439ede6,2546816858,4529435933073593047
+31859dd9-08bb-2e93-e72f-20e09bcbba9c,2641208628,9849251224942183456
+5bfd722d-ee58-a559-0197-212dd687c1f7,2675928838,14044455789586447408
+13814d99-d861-2554-947c-4fc440bcae94,2686573642,9251990152467871666
+79981275-a7fb-2944-e3b0-d5ee88897eb6,2430034062,10325442277872281941
+77a44ace-cb1f-4fee-a67a-4e091786310c,2842578937,16769006451141927241
+92b8bd7a-3036-41a1-a192-f10e5d319032,556927662,6530359832131982360
+cae95a8f-cb04-0d88-ae47-980f08b34c68,2770652261,10545787974498252959
+48fdcd0b-7833-0bb7-5de1-a8ed62209365,1346347668,441783331647305156
+16c51fc1-f6c2-3ac4-6c65-08979af61610,2406903311,6768172708485418877
+761dc501-9166-72b9-a9f9-395a45093630,2011393016,17051325007318165679
+6f84c628-33a1-7292-213a-9ebf96f375b6,1172133403,18015693044768121002
+a2109324-6a73-cb7b-af54-c0673c4cb6c8,4172284610,15626105686774566025
+67e93d71-ece1-82a0-dacd-19db1bc006de,1183335450,12672710412463592101
+77242c64-59e9-7eaa-eb0a-065730adddc5,2924767680,16374842835281443877
+df512e96-4ecf-2117-da46-5ddfba6e0109,51090525,14162033812396054064
+671c1f22-7392-2995-2193-1da9406b3c9f,2689048828,1013757836728410570
+0033ad4c-eca4-968c-9f31-a831c5091e58,1295942718,36723298692383133
+dbc3ebf2-2e0a-dd7f-449b-131e68ef5d47,3674521219,17591825624116639498
+0d128948-4cbf-4752-e77f-ad585d83ff47,1330876199,1670725000654104903
+6e92d568-62da-c83c-fc0f-f6fb074be81f,2890290301,18286452847105854826
+2b23754c-b7ba-58b2-406f-f3a5d604e60e,969223707,13874991784353411585
+26612d5f-99bb-75ce-e519-d6cb98b86643,1422039969,2881447621090626147
+220f905d-8829-eb8b-0af6-1da0456aaee0,2365964231,14602144401332602059
+e73a9fcf-cfad-4210-a16d-55434163a9cb,933089584,16694022993441479271
+748bb690-152e-3110-c264-6eab857a4b4f,909752527,16385368132928723041
+55fb315e-6603-e610-a855-28c3893d92e9,1283421046,4446011790647800322
+9c22354d-6450-759e-1f2a-72daea9f6fcd,100680115,11846159378474561516
+cfc46d8b-df1a-246d-2d2c-dc1293f0b757,1143615091,5928745019781933649
+740a92c1-5973-d016-d3f2-6f4819147eb6,1310685548,3457499433660003452
+61f61562-bca4-a031-9016-9213a24c0e16,4194251955,11610339547767012402
+1201fae6-2ed2-1c92-1aa1-95162d5dd8de,281858678,14117275975045782540
+8bef284c-5cfa-f389-2081-f07384b37fc2,3640329309,10181365371355559943
+68e0b862-df2b-c045-daf8-5b244a3979ab,3841307161,12679961206332098536
+1d9a6f19-95fb-58de-d3d7-34e66be5efbf,3819682803,10851091367736314587
+fdd9da4a-d18a-b9e6-8485-546ccd64da4b,1073940192,15404804146970836367
+e7819163-4480-4995-1bbe-d1d4650328a7,1979369771,14872003277519395629
+b6f4db42-dd8e-316b-ca02-d972f4dd46e3,1496557952,5699004094527135844
+4f7f8030-ad3e-67ca-13ca-58ad7c5861f7,441521570,14623400591498324692
+e1d63dd3-c417-f0f9-8ae0-80d984ba7d19,3051955458,12742243100706694167
+69b2f974-b01d-ad3e-da1e-40a7b53186ad,2061215972,17310352693362282157
+0005a8cf-24ec-7242-d8d1-3941a12e0c37,1461730658,15940590235609502694
+2fd12cb8-a7de-e3a4-8669-bc451c2952ba,1985709340,4446936526760443408
+24ba80b2-8a01-d4a1-703b-67e2116f87f5,1034984692,5153805772929139004
+efce2f35-4065-0abf-c596-6e54fca17e3c,3312961920,14680744021090148585
+ebd95a08-04a0-2e56-a08e-57ad4c34b371,429745036,11568712377702789880
+80346303-b3c9-42c7-3d75-b5c86bb34566,2346562554,16958937659115872535
+5d4c1c3a-4f93-25bc-1b9f-64307ad4aea2,3285644239,7244039884555979846
+74241e46-ccce-da29-0358-5fec641d63a1,3027200121,10605957338104650742
+8f5caef7-1ce6-50cc-ce73-cbe4a27b55a1,384492040,6369568348026062480
+78d149c5-5752-6170-3b20-98afe3305481,3601234495,3491029590036515375
+5952e989-b436-a5da-8bcd-adcab28a88c6,4261310025,7634478331526763151
+98204f84-a7ab-6bfd-fc11-918b08a3adc8,3532055929,9575188638270422365
+2670d77e-a814-5b22-0419-77df8a550e78,1848966550,5800530822231250649
+ed29fb90-5d7e-6e8c-17d7-6266ad6bf74e,2378425058,15671972946765010265
+a4e462a6-60e8-a0c1-a665-53fdaf5f5bbf,1246655345,5458866643862263449
+6f2ac224-04d1-2c05-4953-d3a71192cf25,1650624042,17696699216915743798
+aa1b6d88-360a-cec2-badb-4da8d6391027,2011026676,10408377725814882963
+dea71833-4db6-b38f-f10f-2a7a8a8f93fe,1495247228,8326133009129431229
+c7e29e27-8aa0-e6da-7b25-abe1fa70cb19,790301516,4488818027578096919
+9c7b62f9-3692-4ff3-a7bd-b4ecb9f8b259,1521991236,13408326299792131112
+8be069c3-4c26-0509-5709-f89e301942a1,1771399971,17044084459285110613
+a98331ef-0aef-e8fc-0381-a9bc42c424a4,1990229214,1541369732115926027
+a6585923-4e4c-0f68-6f70-d21a982efc65,3059855801,2184366710660014064
+0233e3d3-938d-a017-2562-7c6343c2c953,1473916695,1820890205897138150
+369fae9f-c3d7-2036-f428-7f3d545ff91a,906503934,4334499671716602342
+2454bf94-998d-ce87-af8e-941e139fa443,3177409609,11563947375772952726
+5bd8e81e-2780-dcf2-5239-1a691c032e74,402811825,4703764766218872958
+a074c43b-b481-2ce5-7d5a-b166c5574505,839341260,10242388229151474516
+72191376-75dc-9ce4-4da1-d2f5fc99ab25,3659896692,3429083371925377311
+4167056c-4aa3-48f3-b0bf-c0235b006026,2851477244,12195937354591519290
+92f0fee1-d1ba-faac-86ad-6aaac8e164b0,2983091966,3887233072722904438
+1e18dcd1-a416-9d17-a70e-c6163cb001f1,281491245,11850609090857741481
+46d38270-52d0-e0cc-d98c-6646959eb9d7,2625055382,6317021786757849329
+949fcba9-ac68-8371-26b3-f7a7c3963ad3,168410715,5056768623276931424
+d6408f14-bd3f-5770-2a55-1d6b5ed32ac2,2041288885,18157740437099336964
+b9d77f62-ad71-4bcc-8a43-9f47431b807d,1574770313,5630667066609681508
+8bd3602c-3812-305a-06cc-f4370410dd16,1162429698,3502732818961180319
+fae4daa0-dfa5-5e1a-43b4-00fc9833ac7f,1897571706,7992833261614321534
+1b4da918-0e5b-1af5-78eb-ca821f593f35,2800436099,15225800062174988026
+cd23b88b-e3ac-90a2-f87f-ba872bd8305e,3259284663,2084122637048979063
+7e4448d2-c3ec-db77-7a99-5a2fce561a53,3046544039,3075755776618519266
+e97717a2-31bb-0a05-6f2e-7dffe821bab0,767625770,8262013490583671063
+3b8ba44e-4a96-1a0d-6a70-ef751a1ca709,24721411,11001361314971723862
+8464d6ae-419c-8c06-1ba8-f76af5fb22bc,684058417,15772516784754509122
+01a76146-8d5f-fc7d-afd9-7e63631fd112,2597844207,196478501826505230
+04333c36-238e-2ecb-735a-16a2f9eb8f7b,2891385216,8814878372452467902
+f03816cb-93d8-56ec-f0e1-4259a0a33f2d,3176738391,13189734534052869747
+9136d0b9-b149-40a0-b8b5-4c18714aefc1,846150602,1779231028935594108
+6fbf586f-6106-e776-df45-c8ee36b6c7ea,1978021985,11396002496174868090
+fe03f944-727d-3da8-fd4a-dc7f5b94c979,3421823604,10167330586738036256
+16646fdf-1931-caf9-b23b-70b9b6a5a765,576400113,1226831749662713624
+d63b5c48-d215-4dcf-05b4-353db76dc54a,429665752,14799184202530761614
+b206b49f-b5db-7b7e-1877-6fc0fd930563,1616360719,1551288902769096793
+f15b5751-fc9f-8f50-b976-3b537267ca57,177586478,13142076386331125476
+50a8b074-b69d-46f2-ba57-c5515a4e3ad7,1207964775,7669802484182740218
+8fefcae5-9e90-48fa-7f67-0c8150e09abe,1899796941,14171440848410397337
+d7063827-c053-e8f6-db0b-ab211950ee4d,3490805068,15301622560568842646
+40c7f955-67ef-5a31-45d3-40c8d5d2d067,2638437950,488212606350418614
+fec836fa-a18f-3016-f3ae-736a7732bb33,3371860737,3841307736013405770
+b64f9eed-83d7-3724-1697-0b7ccdb1ad0d,2269395624,9228164289424723585
+988e6994-e7a1-71c3-602d-f42b364d6284,1756745452,376164807179055
+e8dc1233-d1cb-3177-92ba-b2de6f1bf354,3742391953,17110819150868106269
+01b8259e-625a-8027-b47b-676e48b89edf,1205914155,18300291511348844957
+860f339e-ac16-1087-783e-2d66b8548b46,4162088631,12612069350200124474
+340f4371-8ee4-e083-a5a5-6e2e394692bc,1553098321,14435141460580425065
+2179d657-fbf5-287d-8ae4-48c7e791ec84,697951377,16725474987884201769
+18ab632f-0f01-c804-3807-6d116fcc892e,2395683999,1084831309723701135
+c88a851a-8991-b32a-446a-18f052781fe2,366629264,10690389119443668834
+3e2308d8-6490-fb8a-17be-ee6ac23b35aa,3313301034,6417959591588483384
+6d07a4ad-9b29-6930-ac9f-0184aac35c79,4114678551,17115327181548999107
+3dcc00cc-f875-487a-567f-9bb4d363e1f8,1788715757,9095758318948797281
+f8ad9f2b-6ceb-de37-de01-671a8b26da97,1394867726,3541209532721323665
+4ed9f88b-1607-77bc-6487-59bb0d76030a,660678673,85296795788572966
+e9c6e65d-d569-a322-5e4b-05f0f2384b52,141607423,12820875560859316128
+88720285-1027-9a90-975c-c5678658e0d9,4068926266,7438753344006060500
+d5f446e6-31a9-5f5b-900d-9fd3926b82f8,1851035277,12786408909512501635
+3a5257a9-2043-9a6f-bda1-351021eae8bf,1467734818,15780169437502940301
+9701316f-924b-c8ca-d8fd-a76a9adc040e,891173506,11322714739526877239
+16cfa304-0b49-3bc7-7a7e-c2c6595915af,2580965247,2791194470667471691
+c81206d8-e877-4b7d-40d3-f81777a31aee,539357783,11849994393508228351
+ddc7c44f-3a9e-71bc-a041-67d79d376fb7,1699099883,14277406563154892670
+c694d58e-2574-5342-52bc-2bbdebda88d2,551934552,14560580356551222678
+1c998de3-b495-d89b-6fa4-293548bf1904,2942943591,11321253591528074296
+cf6bcbd5-fa7f-3fe2-8f1c-bae383c378cb,2092306757,2803755222320912719
+cf9e5a65-b0b5-f8c5-781e-6cbf446b136c,832079296,1682331309678574003
+75381e2b-0fbb-3370-4f07-e5c2e04dacc0,2558899103,14027727569842487433
+93b36d64-aa54-a795-4f4a-554833fa730c,4004357497,4254240259394384198
+f1a4e9d9-2f1d-292f-c47e-3d346bdd7fe0,2933174077,9254089855954422690
+4bf7237f-3767-e14f-ab92-18d5e69cb9f0,1276860529,3505192622962871998
+6873645e-9c66-d3bb-e656-c0e6664c52ee,2354302421,5391156261382278807
+4164d3d9-f012-8956-a645-1b1e2ff6036b,3529227577,2034898721747226492
+4707ce8f-194d-e5b2-f1d8-872e0878e0e7,1016739556,12125067873383549658
+994766db-0290-46cf-ce5a-bfac54e1a30d,1066203660,13749287965521639584
+0ced87a2-555c-2312-0c0b-aa6985acff8c,1235259059,1186205860377798926
+ea3c71ae-3ab6-897c-fac2-fa094512c168,3370152584,6385521555974962498
+5351ed2f-b086-ae41-1733-eb115e9df9b7,1548091549,1577510614024957957
+eb377e7c-6857-42ec-b770-f0262e8ece13,240938313,2472547105654852824
+efb42115-1774-3f15-ed8b-ce2f9594cc58,2069151805,5033410095442538345
+81470fb4-3ac8-dac0-3597-bbdb6450ed91,3257374712,13359447091117189781
+225dab7d-b4c7-db87-684a-6a00d174a4e1,490144746,12894784399923259868
+7f47a629-a30d-2fe4-fa53-5afccc627cdf,3638024537,9620112300373155627
+f44dc26f-fd1d-18d1-67b2-acbd8263c7f6,785304700,3006364780576830690
+1700fec8-4e62-1893-c428-7e4ee8a43e83,4273664064,10524996427722842788
+861946e4-f384-5272-587c-079432e5d878,1911106322,8972410734175480560
+4157d640-a26b-488c-9e4d-761cecc2b8f7,1544938521,2888490918299027907
+ac96d5cc-513a-0ea0-7f06-b162785b1630,3514690499,18057531117130900232
+88cb2247-f69d-9861-eb07-e48af1ac0501,3349335574,6365311107362544028
+7efbcfd1-19aa-defb-a48f-1140e48a0e2e,57459087,5600039696702955279
+0aa98cf2-bd8f-434c-e753-6890501e0b60,1785818873,16514983982579320049
+4d49bb7d-ecb9-666e-79b9-6458ff4ee40a,2777299289,11537382968895512466
+b6bc9845-fd36-a39e-1b3e-ff7a46c5c770,2703554055,13481177273364294789
+4bc75c6c-9841-2042-98d5-734a0d42b6f8,2034723820,2013744626086190630
+6b0d75fc-fc82-57cd-f563-ab5c96be7c23,3125019830,3339791330660211509
+98a30d72-2904-21a8-0517-77960ccb918e,1755858027,3947171844669852422
+1afcae0e-9e8f-8985-8e82-5c381288da9b,725935116,17663231086929069831
+680084bf-0b75-5c83-b62d-5794208087d9,3821898143,13721613158908756646
+56a730bd-6a8c-bfa3-3843-ea04ad269939,905090431,15257094493297090346
+1ac46566-fd42-872d-48c9-cd5ad536a6b6,1496028820,6116942070154798269
+f44e7450-1dc2-54e3-2e72-2b6637743f2f,2027414853,16877720109926540974
+5756ea86-4344-3c77-e947-96b101b060ad,1597479192,10825195806001133844
+d39d8aca-4712-5b72-a161-a861d827d92b,1103778312,5732263649224018851
+4a344ac4-3714-4950-ccad-2d35f0ffe776,493622871,5458981739569606235
+b2eb2523-5216-79e4-d7ea-c7aa699e82e0,252751449,4783062565702525042
+8086a16c-7936-9d4b-794d-fb627345c6b9,652049310,10107021179821407136
+12ed4ec1-a84f-52e9-1791-349bbec8ae92,1643212366,7930855088127979879
+268d2b55-ccf9-56db-ff43-9a7aba8bf353,2432896836,7306953657281954207
+146c6ba4-f298-a5f1-ab12-71bc70c6ca25,3832014382,8935177259946690356
+2bb7d042-3e58-7c7d-a938-596634a06f1e,3948473168,11663800363786080423
+0e078d57-59d6-864e-cfa7-53678ef32792,1428073397,10241380689715333273
+971bcc48-8d90-6cb3-8ffc-4a8fa32faeeb,1085892250,15078716744306862170
+8dc2c3f2-e3fa-a59d-654c-c2e2d9ff9a44,4265361502,9651493643957896892
+86ff9e7e-7bf9-d49c-fd7e-8e56238afdcc,3345704368,1459644712874976432
+2766564d-38bc-c30d-07a1-758d18561c49,144560886,4428342556482568020
+1cc625e1-0ea0-9f8e-212d-2fd516f3d1d6,1641044242,4746702962704479134
+a126e743-d115-7dbf-1d11-92ed207092e6,134741847,17317045117439155097
+b20d7fe7-8bb3-d275-a99c-5130c625aebe,1512157100,12602388983714643788
+54a4ab35-5183-0d49-d15a-96ec670e9ca0,170016801,16306967998536001989
+c088dbeb-0fa9-6e81-eef1-f67a811d1c96,2078697086,11127472786387061257
+7e2f1884-b571-3842-1421-2d7b716f1bf3,1868882764,4562982814453465918
+8cc2b0a8-846d-8a21-85de-0c0eb2e8b3d6,115769032,8457819635859537546
+29f721dc-a762-b04c-be57-231a2cb873b6,2389016035,4776007289542043848
+b0e2bac7-8067-c6a5-f0e8-ffa96a106054,3854264715,13701316344252536219
+41b62a59-a4e2-c070-315e-8a9a2bf218b1,2099951047,15966507939916645821
+eaf51101-539d-d032-04a9-ce12dcd3d6eb,1882102524,12278547132041032920
+edb3c70e-f924-f3cf-a518-ad1b859e0435,1754762682,15234853276624529736
+828bed18-ad4e-b201-d7b9-7cab68ffcfd4,1987808670,11085454832940744946
+4a2fdde4-882d-2381-7d38-381205f92165,2748414030,9007669932561209949
+7b449fb8-a7d1-2ee7-d24f-d70073f0c1c5,721900120,1170736189995320706
+449b7006-6892-d592-e5d8-6d2c44663862,2873720720,17438881538458574706
+368a09aa-9cc4-a6c4-d603-90d6ebe7b991,3282989712,15621642327732078338
+52afa0ec-3178-a168-3d20-011bc81ee619,2909298288,4510199336391744339
+779f6ccc-0749-1b39-2ef1-544c467a4e41,2658991127,3026725892148248884
+01054943-0599-cf14-a13b-be0194c1dae3,2913548770,4023958538198619778
+44961520-bfcf-ebb8-c544-9a9cf1584c5b,3710441646,6653073172450668429
+b858c868-90f9-daf5-89bc-8dd12900a817,4037072884,10316928103518139184
+1adbf90f-440a-61a8-fd8e-f884e12dcaec,1955716998,14538100952632316681
+4867ec38-9a5d-d4f2-77c8-e5a477a23109,48697768,16228285880327800096
+3023776b-5b9c-2e1c-e20f-b6764afa36da,1473588384,17440199683934401752
+ef4b31db-6802-cdfa-9f3f-c3475a1ce961,2225815806,7214997341485118440
+2ec56747-6773-e5bc-6aa3-ef1001086671,236481150,4201839085597242597
+e995f49f-5eda-e5c6-8145-31028663770e,3592774168,3872008506545965827
+2e4e3865-c191-98d5-cf3d-034a98abb493,3979033109,13132185382362533260
+7e0a7182-3b85-d4c3-69c1-77d9b53c9fa3,1372823270,2421746427899414639
+c9eac1f6-798d-5f82-354a-56b1d79661bd,1699141546,16981211925868938752
+1161bf28-059d-5ca8-41c8-8fe3b0e597b8,1920134523,15801297063500066392
+6003b774-1fd7-c8ed-8d65-97940d5d0e81,2699412155,7718698089719910403
+44c3a3e2-3594-cf11-0b9d-fec243b515db,1296652643,12827366270776747513
+45ea3221-5503-e2d5-5ed7-eaabbbeeaef4,2362314458,10634623181541570097
+a9f4fdd8-4bf2-4a9a-127d-8e5be83f26ab,2448152779,12935363309306369154
+695de262-a58b-73e0-7628-f82ee71b4ba5,589437832,10021633882828587373
+c53dfac0-6ea9-f3c7-d1fc-481f9f49fe86,1303343424,11259739727604195527
+06b74f7b-6c79-bfed-51ea-f450e31987bb,3346426880,14756316193937781124
+eab25e50-db4f-fb0c-421f-96287a63c6e2,1731427562,503887875818166224
+bd7a2d18-7229-bf05-7af5-8d5e81f98346,43516490,6964158468129788031
+272b2da5-3c3d-4452-7616-52e9985b51ea,3389745624,4194352172343234434
+b5996cec-27a8-3265-0049-858907cf8f31,3278468143,1597810240240002898
+7974a0e4-35b4-0392-93a8-083ef7b91fa9,2894462622,2445444789275451770
+8eacc14a-7122-377b-4309-5c8d1743a9b2,2127659066,11808119965640256833
+a741c40b-64fe-ed3b-48bd-2f0360974b6c,1861368855,3616898259325920168
+6862c8fb-2292-8d8c-3ca6-2d19887eb37c,1571349758,2593452773899877305
+890c372a-0d7c-d7cc-2d61-d3f2453ab44c,3014244198,4687598963047537152
+9de3ba59-8324-c7a1-2349-28f62c320b38,3035228947,18268577960268213683
+9052bd59-4044-e45f-0188-77500179f344,17405896,2491541564223574780
+78f7c394-bbd8-7308-6ffa-078d8ed792e1,2305781709,18208706062740436140
+197634ef-ff2e-8543-09a6-5e1de0a4bd79,3152990570,14898675073771355053
+88fc4243-246e-74ad-0935-b1e77493b954,2918543361,16349770651618620855
+9806a1d5-83bb-53dc-11de-195734de9265,4039470545,6318624418192322891
+4f6f629e-5fc3-9141-848c-f8af25be4350,4073965029,182974483752617502
+68520df9-eede-265f-a21a-e53ee0a45da5,855298358,13507508621020808218
+68cfd754-914c-8cb8-1065-c4ee550a625b,1121188569,3405717787511451836
+bf8df24a-e669-a528-d4b7-fd129b8c016a,4021810918,2216319657211315746
+fc5af9b9-fdc5-a747-5154-ffdbe1d99d8f,2948947662,12284564506041496273
+40d398f1-657c-570a-30e3-a30c46a66ee6,1010502375,11246757322621400052
+7fb6750f-b251-a847-e3a2-e53aebed6dc2,4157188161,18354338249553317090
+b4473337-1658-9905-98d6-30dd38ab34e3,2464419199,17339597183501839720
+63d3a5fa-ae63-43cc-dd0d-ca137455c104,3834397484,15158557503434898162
+bc7b8368-ab30-a15b-73f3-b10f1549ea33,1853536470,14883651469376597546
+6329cdaf-9083-e7a7-5754-7efee31ab8c1,2091287129,1101448944424202540
+3f23b9a0-cadb-584b-a3da-db078850ec9c,3464463236,9322439231010166447
+46aad2d7-bf69-3533-024d-fa725f430607,2091506336,15577577822298726894
+535023ba-a68f-6aec-1947-ee6175200cf0,1972397789,7254309949412170984
+195a6edd-0a77-c41a-757f-8f18aa961b9a,2460532145,2096898287681585486
+09ddb6ac-419b-66c5-0ae7-bfc76db7d64a,877991185,15364824785966950459
+34e28ba1-9980-6e3f-685f-8f0798f762a3,3614186405,6850409684213971175
+9d0ce76e-a7ae-ed15-a334-c07c9db4e5d2,3427967318,12381567064220807767
+01833c41-b60a-117a-1423-4a61aaa3401c,2795292108,14827321911943471074
+41a8184e-4b5b-3150-809b-11e07b1b7fff,4050857293,14958624169732403964
+e64627ce-0ab5-95bf-67fc-fa658caf841b,110879949,5840367524934600148
+0d1e9666-9e0d-4064-5228-91d4bc6d9cd8,1374652524,13312051681655823505
+0e6eb38d-4eae-bd46-9c87-fcc52809a466,2603701958,1072835934086369627
+6259d36c-0dc2-ad3c-06f3-95cc28e23033,2435825240,3728318662933307384
+ca12030a-8110-8c00-0a60-4248dd19f432,311630926,2296347636270973980
+8bef9ee2-c650-9652-004b-80bdfd2e10b1,116466521,14022644756763452728
+7cf62650-9af5-c5bf-9454-c216a3140bf0,3252996698,13271655803119025915
+bb13cb88-96e7-47b1-c941-c7bd3ba3b78a,1452935110,15847624462461384214
+2c5c86bd-1982-ee2e-a855-8cd18410355a,2809282170,1254599309169121742
+25f427c9-aaf6-608e-a229-59c285e9d980,967760880,4442464531674316400
+7d8a3b26-ce7d-7bca-2785-1b0f9df95fe6,198642762,16312942293763477085
+97457652-a7fc-443b-8e7d-bc087e7704ff,396649874,799308250942548569
+5db4b371-6af9-c4b2-14c6-0f8b139f429c,1696694545,6062331690869993658
+cd8504c1-8247-27ff-93eb-d0a04d4cd5d7,1716885655,3260595279846774639
+20c5828e-a98d-2af6-7a4a-9e6abe5fe1dd,2468467619,3650763106632153089
+a0235799-7dcd-e776-39d1-87426e94b04a,753000830,2371929201846628571
+ffe43779-8794-d1a4-6b85-00bb40edde22,3720753939,3234215343541792824
+c75c3cda-51bf-5930-e49b-28cd99ad47d4,1452161069,3551335627635807746
+46ab6c24-ea85-150e-c6f7-8a579b9d3822,1175858937,11752351970966031531
+fc4bdf96-44d3-a4bc-eb2b-df42596438d1,2603917124,13890953170637905017
+d400a71b-4bb9-f3fa-ce43-f469720e2b65,1731137915,2486433731509343403
+24a5ca59-2118-4139-ecc2-9d8111fb4649,479793706,18350425040874081190
+2c86dbf1-4c1f-bdcf-717e-d9806a66d58d,1167084649,15075213764007125627
+30d334a4-eebd-575b-2eea-6030d3158465,2018095779,3020897332952690303
+b9e5a045-9628-4897-c984-6d37147e72a1,3653275661,3617729054665470023
+47a12625-f380-228c-dcce-b793e291218c,3396674629,10791575312210292428
+369d0687-eef4-5822-c4f2-daa6672a7be5,2317850825,16350437568129938689
+f21c68bd-34db-f266-12ed-0e0240dfaae6,1089895614,866878987594498396
+7fab288e-42df-2c5a-9a03-d98cd06c72f8,3922330454,14542601566362390643
+5034aefb-2974-793b-fbd7-ffa942597c6a,3769450962,8328732157085173504
+da762fd6-9b3c-8e10-6f45-248a2e557d29,573219345,8078796217843400857
+397c5f0a-7cfc-f464-1e20-bac06fbba3f4,3150098389,7087713844481839601
+da1843e1-2a63-4b9f-00e7-d080e6128094,2279016166,472588341729184682
+9da0cbe5-75b6-9fbf-5015-f28e4cfec159,4237224285,11435103585902731964
+0f56d7bc-9252-6fe6-4328-0f7209bfd5c7,701276878,4159674556947261619
+f6324070-3e28-da47-1172-6158c1a71522,2841129139,13939919768390318519
+c58eb789-299b-ee5b-cf66-89817606a420,3231744944,15834613817092797920
+d785e50e-0d1f-4947-54ad-58c93c8d2094,996939494,2523687875013059742
+35248742-36ca-af9d-e3e5-6435dfe8bc78,2964821144,6944228354638626194
+a95653d9-aa6f-dc71-5c3d-e5c0942867bb,655157180,2135425051990266658
+3c86709c-af9b-b993-9926-e84e02ebaaaa,2448916338,7224521228558966873
+17374017-cc61-3eb1-9dd7-d47c3cf787c3,172157737,13839505246411326860
+b858a3cb-657c-17c0-3e76-4163a2af110e,1921994780,4020896698613880980
+9d025459-7b16-86b8-8ee0-e54f8b589be4,1233077517,6118139631701313932
+7a20697e-4a56-7c3f-c9c2-4f9077559053,1956599892,10847632001409256831
+e839e219-6ea0-8fb7-b1e5-57e4bc95ae45,93361011,2699256564622143213
+a5e5a507-56ea-febc-1573-a360507cdd06,3214085273,33072318461359579
+66e4e80e-15fb-8db4-3231-3807dce0bb2c,3154953699,2054163964167798489
+e636de23-ef84-4c53-12f4-3a55e10a1be9,848350715,4555944446302838487
+feedfbc9-41f7-deed-4e0d-9cab838c9fca,3640078938,14320240045397024526
+f2afcadd-8900-d9b2-48b3-d9981badbe08,1008852993,659640848192111223
+ae407747-23ff-a245-21dd-5b212d962e3c,629606927,16442241757970625686
+81e4941e-4481-2e03-4b70-56b636ee297b,3487482615,3658422915346058049
+8e91a043-12fe-540a-bb71-7712b492f07b,3964967178,11577334595398007926
+6680cf8f-37fc-881f-3e91-c749adae237b,1986421727,2469616360639572580
+3ebf0abb-20fb-f884-a251-c0c51b54aa26,3744067830,10834463201878183594
+06102e31-df81-05f8-6b7b-45a240892820,1937394922,13840952008520321731
+a0bb8fa9-3b2c-dcaf-7a83-13540efd20e9,3289667058,2497814750223676825
+a89944dc-8bc5-4b0f-0ac3-782eb64cafc4,4220014177,15031102965582770055
+86411d86-6bf7-ac3e-e683-9976467f0079,2763132176,3247158981293201870
+5281fed0-5905-152c-7535-454b63a4943a,2354723196,12765236976020901665
+8d603b46-f0ea-02dd-d307-403398212333,1389249084,15963839631453284029
+3c791bc3-2b58-c2e0-e850-dd358feebe66,3259149500,3633455185729107424
+5e1eb680-060f-9ac7-4539-a7189ac2f75c,1653135052,14869016217867712946
+85bd06f3-1d03-607f-a9a2-49c842cfade9,3080587800,4341172929752589753
+33cb58d6-46e0-8323-6210-282a7de866e8,2152939989,15781017706165658460
+56e95a83-695a-4880-e667-d56bada134db,3199847980,2953765442080047571
+2f1ce552-5f7e-84a5-48d7-c5d4b7866556,1843369556,5991664324534179570
+60625fef-969f-9152-ea18-e9ae30c453cd,1675629135,2894705354034365942
+3d566f3a-a9d6-6aab-a6e5-60cf47de40f3,3275372397,6753584694343726606
+6dcc0f71-cbd2-243d-1afa-1711d9d69455,3328231703,3483960099210486270
+ac77b9a8-b2bc-e54d-dd18-74cd76743907,2671688513,15921679390662041085
+8bb7cd0b-2c4e-6ad9-3765-4f765f6af420,1530200685,14202920341225084763
+75a605da-346a-88ef-5621-a82497135c5d,3711415324,3946557596378690076
+0fde2250-9ade-a396-4f1b-84d0258a05c6,2043501978,16856961464803188131
+59e424ef-a650-7df9-53e6-503159c93aab,4256389771,10883883208398557799
+cc851ff4-f4c6-2dce-5c56-1782a5db936e,495148851,10754117695058597080
+dc87d448-f484-6530-b06b-5040397cb1bf,686635537,4377639801900184407
+d8240150-aaa5-8775-b58b-c99a58dc83c1,1357628560,17725458259041856701
+2d8e2540-741f-187e-f8b7-5cec3e9d3a41,4085460295,13984011870221535644
+c4c35bbd-5000-9e25-96f0-16699ee5054d,2778359061,16975974997202091503
+ea96f461-6025-6c31-9b9b-cc4d8425eff4,3168794173,3313894758233739458
+dc8a74c5-4699-f4c1-499b-2283a67dd6eb,1990642880,17665609125919514937
+b9f07841-f706-08f5-3b6b-bdc5d6e44862,3086121654,7254994144987646501
+f5fb9833-d19d-f4b7-cbf3-2e66d5d7b447,1993394984,14452120769305119674
+359e5086-24b7-2a5c-6836-e4a71ab18273,3436273044,6554248055034971910
+e11d4376-250f-eca3-1e56-e5234e3ed0c8,2288829485,3359198988806453870
+cdb5e815-fab9-2c96-513b-080adf1a96c9,3264913912,9018432219502961567
+7be3a8fb-4422-a448-003e-3fa56b523506,745763252,8978758623546947315
+8c2243a9-8620-68b4-10e3-540aa7fbd58d,3009643433,8098240773342069115
+3b407816-1fae-3e22-6892-8a7f8cb12607,1579678523,12612560586517327800
+a79a62be-c665-09bf-f888-9a37c8bccf81,2685437530,12364464791140066882
+05541a5e-c2e1-b678-47f3-73574a309fb5,206838704,11360351810869493976
+6924f429-692b-b71f-2e27-5f6688262e1a,3327879468,5263782358003681057
+96c5be7a-4a85-adba-c88b-7896c60c11da,3833744689,13567134563496189573
+947c9cb7-1176-c585-118f-5ff442abeb7a,57720089,2064703684143896403
+f5673621-2609-f0a8-832f-c176206ed95b,790626506,2239877871471571230
+17b4997e-6bd7-70d6-cb5b-5cd7161d163c,1696828119,8167128827235480649
+85554009-e124-eae5-1a17-50a185cb347c,3698198134,11368607491368995338
+d27d89e3-2a49-e090-a85c-475329d7b7d9,2729580109,10861501998626082582
+516282b6-a1b9-5106-a52b-7e8228abc9b0,4169181241,1614229772689551391
+3f9fa711-92fe-e0d2-284f-7b6146e65b5b,1779517636,974306473862713356
+3fe3dc5f-6b26-829c-df33-8bdac17087cc,3686082020,7690533671303132686
+7aa445c4-a19d-a436-5cc4-556c40c7fef9,1470234790,202649800951881899
+449fdc29-a438-5021-fe39-01eab087b0bb,3902618156,4140479043264212155
+d91bfaac-03f2-e896-d2e3-17dce3173e1d,1378164467,8104615317611621371
+c6394606-3131-64fe-fe56-8f7fbff3a548,857551582,5820845286599300065
+590e874a-0d42-b994-72a5-3dc760c25f3d,2850383988,7976398394333904659
+ecf96f98-0846-bdfa-9544-cacf369c3c86,426688702,15203448754879121822
+f4288255-6e4a-ff9e-9e2f-7490d866a120,1189800515,11633888574319737976
+75876b29-45e4-cdb2-47bb-8c69dabec15c,435064476,835039462931791717
+d59c0f35-ff24-7aa9-f241-c37edb72e857,2792610039,3682460842809665929
+8f1f9806-4f5d-46eb-9e52-663bae9e26ae,2633866595,15338025653969367888
+4b5cf1f6-0b7e-7219-13df-a3cd8792919f,1537236778,11863955983406183579
+b5cbe2d9-e6ce-68db-92ed-542a013fa06f,4057273347,4735300381584832894
+7acd933b-3f4a-9c4a-550e-8886b6e57e49,1785297973,16416126928186113237
+66272db5-97e5-f178-95ac-d6efeb3cb659,2404799585,10714146276264455187
+76a5a64b-e6a3-8580-8db9-d5d9f6cf1e26,2678005175,14984829765311869618
+6ee2b555-f0c3-ff7a-459c-86d443967241,3445527608,1244690132727180555
+4c59aa55-6281-42e3-d12f-6a74fa1bc05f,2283276532,3435223372813855799
+f01840c9-0495-cbff-5833-49ac54c0c57c,248169763,14213866818933278499
+4529ed00-37b5-03bb-976b-192b232e97bb,1119758096,909513640981621862
+cfe7b6ca-2de7-d0a7-4c64-7f830a0b62f2,1595593971,13667017636414919563
+7ecd87bd-03da-4c4b-44bd-ad218b75f96f,1219892085,7078815237748165887
+b413b4f8-2171-7309-405b-d64859c13c8f,4147223421,9536564311415130726
+9f3bf749-0184-6dd8-dfdf-5a4a200f0d07,3741006318,17859150545559083655
+21e1811c-f959-c26b-6c87-3de92963e9fb,4157070969,1616419029841777422
+6c046c8c-5ecf-890c-745f-df1b295f6512,1132609917,1944912845127939921
+861e2973-f9ee-7300-e7c7-4348159e6e7f,568103111,13881948176479965729
+39fc0fd8-c8bc-6dbd-9814-c7eac56edc6c,3379206689,8330188532843818858
+74a4c6b1-8b57-fcd2-8799-42709f14434c,2991641852,1215118348629059442
+371e4667-fb40-104c-8c51-33f6e7ec76ff,199575062,17001126956820177698
+8d2c7fc5-fc4e-33a6-06b6-965e5d051e94,1474033357,6785003210034798328
+a6b85a3b-64f5-4c10-0dfd-af42f892bae3,927868532,17746692065466134589
+b7317700-eadc-0618-75d1-ff5097577e32,4049183357,3275301222883441754
+3fe24355-07eb-3abb-6081-6bc7e7b1e787,3355897773,1594592650827007097
+77723fd2-ecda-95bb-2550-3e8980ce523a,3285875299,14473246110836219376
+a7d4bcd3-7b89-a565-05bf-4ba9ece9e591,77227993,13065002074443912410
+77eb7f50-abc5-55ff-2365-68552e811cf2,75630117,11970500894988744646
+2fcb8bbe-9710-7a44-708e-be38b3727ac0,1306785410,988568479965711703
+d7440d0b-5907-ed38-ba5a-773bc0de5fc6,3262432294,12436227614986740643
+35fe4c8d-a141-c9de-2982-f93ee85d179f,1623956542,14677268134814027973
+223960da-691f-1842-a834-50f567244901,315834393,13725809948704853028
+beea057a-2800-23c7-7ef7-ecc84b79cfec,486031513,7822282827594933389
+f55f5c58-e89f-072a-c316-a89ec248d0d7,3531822707,1653326707630632525
+31a701c7-24fa-9c85-7c52-e88df7febe29,3388237189,13194533564083492393
+840efaa8-c5e8-3857-b8b5-93b7a7e315b7,1333225133,1493578293261138403
+355b207a-f843-700f-12e0-b158aa01caa1,4281335697,8975336158366695732
+c044755e-4f77-57bf-98b8-1a63159dfe08,1740101316,7525472263623880049
+d03155ca-168f-8600-a1eb-9e9921699b98,4140606956,3799493511845687841
+a13a4ff6-71ee-a2c2-15b4-e5e70f6e2224,4109292460,3065780970537300929
+2440fd67-c7df-66b6-e11a-c76301f7e4f7,2867563804,4868254754288064668
+5ad90440-3b13-6429-de58-e43213555a92,1865491365,7716041265152707411
+8faac32c-9a87-477e-0c97-391c26521b86,3198647237,5489347434351607129
+db5af3a8-baca-a0e0-0270-2d28fb747496,4075251989,8944545703532674814
+adf1259e-1af1-1af9-ba53-77438198a869,1067772571,18425904955341250519
+e5b07d9a-250a-cf7f-1ac2-31a93b23f100,3001061159,5650837630692504722
+10e09d41-56bc-0ef6-d853-acb739476af5,1990262037,14216740258108261125
+93c836d8-b300-2549-d0d1-b7412c70cca5,2561741389,9841388037713762320
+ade5e8b9-f07d-4355-c9c3-b2e72f4ed814,2590575872,6490785406100324781
+17ca9a64-2978-7338-18ad-1ab9a0aae18e,3950579530,15675052929519219029
+40c84e78-b45f-8af6-44b8-5fa35e2d95a3,4137214446,15622936930226691443
+ab8fd471-4e7a-706f-cac4-680bab7671f3,1583281879,17096901393238843110
+ca22b00d-29d3-bec0-b247-faab0f0b1172,1251567514,9095604689536787665
+8513919c-6573-54cc-4395-e2457655e8f6,3576579171,7352533868053339722
+5ac2cdf9-c501-c87c-7798-97a43eea0860,3210000282,7678519673228292098
+d014cb19-a57c-363e-aa96-a53dfa6b526c,3179630538,4222118130526753767
+16d01f8f-9d25-afb1-b3dc-7120ca08274d,2367468276,15263548654962081242
+71184ecf-20f4-a66c-1df1-98078b5594d4,4167745383,16789662418812834551
+5e2d00fa-736d-915e-daee-00f4f798473b,4042902269,9154513393490729626
+e48bf6af-79be-0c6a-240a-ed604b580c68,2952393750,13534070732915618965
+eec5e6df-8350-ea5a-62a4-cb9ba746774a,1095470018,10907282634451318501
+c6de72ca-69ef-8715-ffda-bcaa485be835,3856885622,11599273147174100148
+296e2f70-473a-4170-769e-7deca16b8acc,4188364315,8594533512601489710
+88c9c267-f2ca-7232-75c9-d448b2d86e17,3487308291,3661527785556645138
+3c301d59-a85c-5948-a4db-cb582ff7bb00,1702270446,11684494838399509104
+f05f35f0-b524-f515-622f-718c426209b6,3371858302,7301757749910185016
+617459b9-36e2-7dd3-12fb-a744f36aa28e,240718560,10357254557085210959
+e931634c-063e-9f47-4471-00560ec11264,3951398142,17864324165199009624
+aa144761-8be1-82c3-8d52-0d3113e8e8f7,1779946324,2761161955264534334
+4059d4fe-482e-9f36-d0e6-8847357dcc1c,17517584,9087831321248690943
+25dbad32-8c76-d432-55e5-a7f8ff818f56,2598294349,8444178627404289312
+8c8d93f2-9583-444d-0338-274e4d004339,4202226750,10202156066009664417
+2fd14914-7e85-9d0e-df3f-67e2152293e3,597896979,11356618321662583418
+3d24c70e-59d5-41da-5342-e7941d1ed687,2033671509,16949193318554477232
+4f5fa1d6-b06a-7f33-52d1-7a6926cd767c,2663340663,18219010008367486643
+b75639f6-39d4-9ce2-906d-af27b863d7c1,2728322042,14973948574683241826
+c2ee5543-f643-6692-8800-2bdfe4a3c081,1962440241,2263947309092692280
+4f7e537f-f7ef-85db-a5c7-45d1c3b9ba79,3601971159,9510032135813977888
+7018189e-35d3-9a10-fb5c-f784c7c59d1f,1545010820,3478343535904731044
+af83bb98-a85c-dc89-7ec8-dc59d0a2bfc4,1273884387,17905769502911451681
+d4aa18f3-b597-cbb2-1664-df355013abfc,3211831050,8038218429183913118
+f1a70cde-239d-bf00-6daa-ec82c183d9b6,2945479344,4178104497023773067
+d7d183a6-305f-12f5-e86b-90c98f30a185,1100595783,5553369800590375110
+43e7e26b-2550-dbfc-5a24-4c65801e52e8,3200237354,15306350465066377808
+884c6a9e-026b-9a19-bad6-aea9c7a8c3d5,1484984132,5019088574829601278
+9329b351-aa6f-7ae0-c933-d8ea9e14b575,3323025826,7497739603292140637
+de9b7556-9a31-2c61-16e8-79856decdc39,1326414446,6604198139124308576
+9d7d02f8-ae28-a0e1-a5ec-5e2d3d0d9ae9,2404184526,14680333508228100468
+6a95d5cf-4249-8c65-f380-dd21c26635e8,3042114838,8804297283746852239
+6d0b36aa-7928-c688-0228-691d98542561,37445505,6322873603977495954
+55100924-c972-c370-03a6-c3937a859f3e,1867810824,3546259221888717579
+cedc0b50-573c-d40b-6697-592ebb646f56,2368656462,15823664125717846003
+daba74ea-5069-ca35-1bb7-65032244f385,3229301021,2064746477596323842
+bf81ca69-4474-931c-be3d-da770407e77d,1175092445,4354066586676034228
+13f56035-0845-fb07-fd56-442bb29b8ae9,3695935961,7794500177974504326
+f0e448cc-59bb-df22-f52b-d36a3dfb090f,1626374382,14532337725918445317
+74ea94b8-f84d-8178-5645-8b2cad83b615,2133050437,17836361831139087826
+3a291855-08ed-d5a7-c47a-2916813d2d90,354340191,15719868164547061767
+03a84f58-7f4a-8aae-d506-43d20d100004,4269523440,7212638661079579535
+805665ca-f8e2-a809-60ae-8baf987112bb,432408480,15950265538032765111
+d5de028d-ed87-873d-fffa-5600e625c911,2683289867,5549464401262881594
+fd3fb3f6-e646-8eaf-20bc-dddfd4e6cba7,228816584,7921569884326707891
+7252c32b-911f-7d10-ffb8-e71cb5769c17,3791954595,14575119956919944963
+10b6740d-2aa1-1991-e25b-3d096157996c,742861813,13344501667297047491
+4b15128a-87ef-a704-d02d-994321ef6d23,3935316636,14156176248736487612
+39885a1b-b7b8-5a2e-0018-ae587dc17b58,1085695720,14679255404345060325
+44ca3d8c-e629-a2e5-192e-b4c22968c51b,1321989210,6050391013395941906
+1c1a1ff7-780a-4c10-aaa7-6a37c3e3048a,333233182,1822925414466312858
+4f8c446e-f6bc-3977-0e24-17b38c148667,1882352144,9962266258120800472
+6685ef24-49ed-512e-c46f-646b480cac63,2437968418,8701983680615639318
+2cb0e7d2-5a61-fce3-3b4a-8ddc57986905,1402309974,8663852690989857133
+960bcf83-b926-61d1-f541-215454928faf,4030868399,13012166054552734513
+6ab77690-8907-01d8-38ba-08ee43275117,2259919010,17016778618773483066
+9dc8fd64-46b2-9e85-f738-84577ece8e1b,4079869064,2745575078026810844
+0c0071f4-2615-c29e-f869-92652098079b,1000548987,4919195398268366685
+e5fb0852-26ad-8c24-2957-e1cda07eaa2f,2810369522,5758730601259539404
+70035d4e-ce4d-2980-5fe3-93f92da0e08d,806149896,1590212352677351051
+f9902437-a47c-a211-e815-5d8b63fd02d3,2045264107,10956540339996325223
+e044f3dd-988c-bbb4-8f76-70f4427c8255,4066872369,7314623135927054681
+3697a4b4-4ee8-5057-ad6a-0fba25866f7d,2568887298,12462614523095816823
+c68127ed-7040-4aa5-983f-b1cefb2b84ed,1437586577,17928022660887655464
+5319539a-b6e5-6daf-963a-5adab2cfef5e,4060332435,17711314708162748656
+6c394491-6e50-9423-1246-ad7e16804bcd,3505351190,12355712282530274474
+fe075e3e-1d0e-4a0d-fd45-51cf3b4d726e,3860413572,13892101048014381442
+c7f3a55d-4677-0ef9-d55a-9ab0ac38384c,1315709260,11129272034623213422
+1654c689-139c-3d89-97b8-4fce36ede5ce,1283527756,13860431901478537458
+0027da4f-73ef-e60d-57e8-8f547b4cf6d6,281233285,5073303366712326458
+503e0588-9e8d-9e3b-677b-2a17412ce031,3602074869,8296118238511084279
+6847e78d-c0ea-40f9-4f16-07087eae91d6,2660698089,5575657746400693924
+79c692af-4e99-1536-c8be-6b97b37e0402,526428713,17498400950328080018
+ec77a792-0bcb-e6e0-252b-496de3ca6ada,3447906578,320475552867312038
+b1f27dcd-75c7-f734-55a9-5ec873bc5293,4108812077,11770154449504352431
+a9105a6a-8863-a652-13a2-640e86d3ee3a,1150622053,17637412571946768804
+7a2f6e40-6968-1f32-da6c-d6ab1ac2360f,1691532503,12604457081439798377
+c4830764-10e2-6fa5-4c5b-ed2f43b0de6e,820901507,1523154862175726808
+abaec288-feea-9c85-d62b-27d8583e941d,1825093546,15926487759118018549
+e3bfa562-c04d-d96a-8c20-2889e8863574,3742672190,4435378095606543183
+ed5e6414-521f-8b0e-1e27-a1ee3d06ed33,2417905219,12010095919722645006
+4790e75a-9f09-dc4b-505f-5af73bcb8429,2059686481,17434540323744036276
+ef1477cd-598a-4221-d4cc-1952933e28b8,444495529,2925379971673836557
+c5d47912-2681-cee0-44e5-4ab32b867e02,2530862635,8989408296737545811
+c3309e3c-f40b-c3da-a470-caa7bb84694c,3969608024,11374050597961375053
+8a7667bf-5128-44e3-d87a-3f443733a30e,1546695739,6622092941001221694
+0b96720a-57a7-dfa2-a3fb-a41f569cd31d,2474315372,5384172559057438499
+dac12b91-d9b7-db66-57bc-173ec21f5229,1133631397,8329653560975282489
+aa7779ec-b06c-faee-bd81-f0010a6107fd,1818363938,12002462246084491170
+111d032d-288e-134f-3c2c-7aeac3ed02e2,2157722920,13458279120597528343
+4f8870cf-36fb-c750-0deb-f5191bbff8c7,745270299,13144790328763477147
+feb5a0ac-cfab-e4a5-5867-1f3fdf9bf912,2226487043,13756229461721455027
+84f3c879-cddc-cc99-0766-e9e6e16cfe70,354862765,9625195009309630783
+e351b8bd-4632-74e0-f772-2c8ba84c35a1,1940976919,15325848104683134845
+bfb547e8-9a95-f96a-cde8-b0464b00b2cd,3798077201,9533795258094913865
+64399500-d391-ab6a-dd94-d99a2d2b70ef,2675867877,6125010116873898393
+e39ad14b-c89f-6921-fcd0-7da1bb31669f,2730693316,10801132109359932238
+3abc1cb3-d068-384c-8995-e7d5d444742d,2693233937,10406464348920314126
+24cfa222-e40e-51f3-8fc6-309c5b6ff30e,1803376532,15154966287376815830
+757a8058-67ec-4779-0fdb-82b3a4766e5c,2451007180,18326613489127633621
+4296647d-c5b8-b5f0-9f48-193b03dabfd0,696384296,17906664539581470955
+8d7ad771-9505-97a1-dae8-4e965c37c0c7,2277597263,735496940501816989
+47cfefe4-ddba-f54b-3858-44cba4489863,3579924553,5951370526183947861
+ef3bde71-908c-d3aa-b98a-c88fbdb2ffd5,2492601633,14155735253756204168
+97eb3dc7-1c11-649f-20d3-8dd89871d879,1781756686,313906807794283140
+94090770-ea79-fdae-9c41-9b2243ad1b93,2143949512,4348532136573107564
+fdc0b042-75a8-e6d7-99e8-65f61234882c,279710712,4941445893301519252
+fe1dd431-14b7-0f37-524b-ebe9e89d6986,83549572,15404324723376362123
+d776bba7-059e-2ce8-62c4-ff111714d515,1198935090,5171629334125255030
+532a6edf-4e51-77d1-b241-553192ede16b,4172585296,2113161704482719306
+fcc1c23c-70c3-59a4-cc54-0deb08e28250,2183775054,9317470771178591153
+b591d0d1-591b-359a-346b-b8f26df64b4b,2537408533,4275385543113109027
+d04cf5f5-bf64-c306-bfe8-6b0c9a6ba2d8,2615214163,15222460284586465076
+bbc5255f-574a-8007-fb2f-c4b91a344ac3,3137924858,13460987965828656743
+4327606f-9831-6655-2b7b-11c831641ceb,3110349700,14080086886798942387
+54b8e010-9ed0-e266-2853-bf07dc5d12f6,847271016,5977278565852992830
+022190eb-0708-eae0-86fa-2956b749db5a,668524317,5950490447707045823
+96753bb0-97ba-1393-f8c2-dedd462c81e4,2828435141,7183686179325755926
+9f057357-c813-2ce3-5b4d-ebc0da13d93b,2634062110,14959464104503936389
+0847e7bb-2538-4e51-2add-56c99eeabc60,795541780,16110618496654105664
+9465bd30-19c4-de88-0108-4b36f35eccb9,591722277,14205988926763709534
+bd0bac84-a2ef-692a-1033-9e99a85439b8,3536910976,4690325154713672258
+ed99828a-2696-4019-de56-20a4ee0b0bd7,4187955098,14151474136253716802
+e5fb3a1c-997d-1189-3c0b-9a3c9c872335,936240617,12369248263204860108
+36575270-2085-bf09-73c7-95909f0b0d20,2029146985,8087954280897448615
+c523285c-d1a1-f3e5-c97e-cf1bf8cd7b3a,2001554686,8839553035047592413
+3e9c8523-dfcb-bc1c-2581-397f30f1b96d,2091985175,4080335112006889820
+b9f8a0f0-9474-1ed4-0862-864d91e2076d,1018375340,2542323242018933594
+e7ae2424-e8cb-9ac3-6edd-02e1f3bb9beb,3211138689,13143651264918127129
+cde65dbf-daaf-1c8e-8ced-e1ae3d9939cb,2330493079,10199908145616146539
+1820fed6-0450-ed69-d0af-0b4c9c102707,2735245278,15051995437347348479
+9668a344-c6de-2523-456a-7fcbf4816e1d,3294769683,1059333148935948490
+f97ba1f9-593e-a120-f05b-c69e42bfee60,3044854531,5885655241156939920
+5f9d2a87-1fbd-996d-b438-3d5099e524c0,4009648725,17866043901086769261
+de780a35-3ccb-ec03-a3a4-2db93ffe27eb,4290607016,14322908862806951207
+29d36ab9-6402-7060-3b3c-70d35605507c,3045865167,13615338447618308569
+355fc5a7-7adf-ccdb-1d39-4279fcff1f64,1223808315,5346688498562561810
+eda86d77-1764-ecd8-92a6-e572159a68dd,961853502,15894074756763916138
+5b414e61-990b-fc94-baee-7a56d72c985a,106045332,13416174618771608951
+7e46e44a-b74a-c74f-5d10-e923aca1cac8,1883019887,4759033908688899181
+caab5226-c615-19f6-0074-72e088fc8aed,1156897364,16969333283398142062
+dd842ddf-1e5b-9f05-2c49-581f4a35cf4c,497544177,5959078520370894790
+0dd0788e-b785-ec03-61ff-214f4bcc4e5a,1126400222,11480028454271008189
+ea5f9916-3737-d5ea-1f76-5b75e68c038d,737572179,8707343603234669422
+f4960dc6-07d9-4c69-e3c9-41df20bf3416,3354349566,8602144363534555672
+c88736e6-3875-f478-8af5-cbdb7b4a6961,940184385,1357032645335921087
+1342b94c-fb77-e22d-a6b7-99902ca69637,3094550810,18072833927161100558
+6ceb69cf-e670-0ee0-f1d7-e78345395ec7,5233336,14833234176235841157
+2cb869c3-d134-b5e5-ec6b-b24d0f3a4361,3182574664,2346759013635274614
+20239b72-ab2e-0689-eb10-39c0e9be429e,3722316302,8614410591463643681
+7bd0f62d-30ea-9b3f-d68e-a130fec6e93f,3822845268,2676227273609985801
+ecbe63d0-fe2c-0e3c-b6cc-d62ff88fcf31,2508820080,7456701277372515558
+fc22b2e6-f47b-6b19-c21f-9d3b404cf526,3205186256,2995631147106043109
+60c77de6-9f32-b6d7-2aca-38bd2d61cd89,2690660964,7597804676949020412
+551f5ad7-dd03-7ee1-ec97-179d5d413e20,1806016080,10298304058496030275
+9d15a5f6-b747-67c7-5750-baa0bca2dc14,590991886,18040896903468635573
+124fa8a8-9108-b281-ee9f-0a4aa996d86c,2388822553,14195304367445851234
+6022030e-8c36-537e-9822-79956f70c9bc,2013911659,545847081408441730
+7642b15e-b862-9b54-a158-69df6caad6db,999267474,14496847070265519852
+c1d6335f-c6fd-6a6a-c152-923f2bf3ceff,3279260930,695780319276198902
+c28f49cd-2d97-b0ad-8f14-621678e2fe36,2910035120,16947485474089729216
+ac105dfb-2a1e-b3c1-4658-080a96b96641,430718394,10373961145316593433
+e0ef4042-ceb2-5fe0-7379-0e4a9fcf306c,1865662034,31842932810071660
+0c904e63-3658-9c2c-2b27-be40f36ea3af,1332151050,10213912578156121463
+56814924-fa6c-56fd-dc16-3315ab76d719,2865580288,17472527187661624580
+3be194ef-955f-a8dd-c4c3-7c05f67b3bc5,1448755174,15436765657349574646
+6224d553-8bcd-4d32-e7a2-dee5a4a0ae3f,4042610151,18029968263324995802
+3a759d37-4a48-36d0-2136-02543c094fca,3100604906,10631214920193064664
+eca84a79-1fcd-8075-1efa-733615d66370,2449883783,9026935629863956244
+956f54b2-58a5-bf67-763c-4c492a8bad26,1020069432,17662165754967361082
+74766ad4-b8ba-b18e-ad1e-c9c7ad5a5939,1948134873,1656237421402108748
+69cd3ab1-ae5b-f1e1-e885-def4ff2d3d92,1259120838,482265419749883285
+e442fc8d-7e3c-ef21-78f7-f53f1843b96e,1508847790,4400682827443040125
+04aa6b43-98cf-5e54-7587-bd01c17ec594,2465225643,13351818835868919781
+16fbff16-e50f-5e1c-7170-883108f8feb8,3734372347,17815919874195638456
+b072e1db-ddad-d0b7-e2c3-6d49afd6bd2c,3501570842,4636369984369273563
+d0842834-b391-f305-7a25-cbb4a9d79b08,3986885972,12132274255235580688
+9106ef99-151f-51e7-3f43-a722f27317a7,2712000387,8912614343365164924
+609378fc-f2a5-35e0-8910-cbbe3ac76297,729168546,13560677473335142010
+b310449f-da99-006e-5f0f-b23b9fc92f69,934986661,10316856917061367296
+1d7526c6-20f1-d6af-3663-a09789b71e09,4140421950,4378132778219862586
+a5eb07dd-891c-af77-9879-5514fefc9c50,1583742100,12606294293489287513
+f728634b-084d-42b6-0e2e-0d4e245ea24a,3455207771,3210223880819924738
+0cca8bb1-e513-00dd-8eec-f08afabe5f7c,455721998,344258653571297366
+66575fef-ab26-c539-2db5-169d3d0210be,1625249541,14102079651215662573
+e4dfa2e9-b8f1-9fc6-5f7a-a5ddb7b646b5,1404835670,15476177701844966705
+e382a2a5-77d5-86eb-e844-d10f5cdb36eb,425088054,7175148324002420024
+33edfd9a-2655-2e4f-dae7-f5be2e5bbe38,3934411203,2291509722469707834
+9ab445c0-af9b-4a19-3fda-4eb7a42a2c12,2393217586,16509720637833074150
+0d7966ec-0ea3-511f-64ff-c74d94516c42,3550849258,14473930133404083297
+74694ef0-85aa-b830-ad3e-b2821a3e3e4e,290998854,13195140070842291702
+10c65297-667d-a3c4-f916-1b4d80c25421,1301673715,15165078236801789467
+647fd05f-5199-5ce9-fabf-cdc081cfc74a,2311085129,6491657414438044984
+ecd41591-fe0a-c8ff-4048-d75d5cf98595,1799849235,8130830376004839906
+d549bbe9-ea5b-4f4b-c53f-b0c9afc731b6,1680861223,732131365703583384
+b4dbd42e-8761-e1c7-7a74-2da6bd79955e,2575754195,12072462730610093675
+d91dd7e6-a121-74a0-a00b-0b67a5e6b385,3195234177,9355208927510117630
+076ed918-b199-2005-e693-e6b4459c06ea,853437221,57679639072305260
+5f2b6798-7f9f-cf2f-256c-96202113b495,428078691,5577288363802594144
+29ebc519-3a9f-0f14-dfad-5309926888d6,1986869808,8172187711166494886
+6ac34088-1c1a-e1ac-e82d-3b025095febf,4040125445,14410172268193647860
+1be923a7-a63f-90a1-d9cf-f1e9faf064fc,811952378,12042329908236512265
+7f284aaa-7f4b-bfdb-b3f8-f02f5fe28daa,3321717490,16946786994285933192
+35411182-b43a-c47f-c967-0ddfe7486d1f,1629453694,2175352159231416481
+efffe8c4-247c-ac4f-17e4-562976e67efe,3359979591,2276429230921529723
+d0fabc75-ba90-079f-6c7f-9e2322a0844d,2850365366,13609979321029358510
+ffdc252d-90c3-f34d-d907-cfc379c9d35b,3834555550,11550792666226959140
+5365cb09-effe-8150-525c-5cce279b3036,427552075,7172999543048449280
+456bf0c5-eb0c-47d3-8b4a-49b378451dfc,2154854020,3510280926824195944
+ba70fbef-4338-da67-a952-ab14d78546f0,938446889,13149964839581005655
+449eff14-1ecd-6113-1326-1293bfbfa06e,3577483951,7838954286832697472
+9d5a2152-957d-78b7-ac81-65fe4292ce53,639827433,13443789788723424166
+dc1c8e2a-01d9-0813-ce0f-3bc24efb7a9a,3295100843,11580029053002171208
+fde310c8-f7e3-4a8c-a69c-2d18747812af,3101348357,2793331118085318572
+6785e645-1fa0-a44a-bf9d-42207e35f73b,363175176,7922064602330920505
+a6c3b1c0-2c21-16e7-909b-577f3b7bb34e,1242768950,3703561177135174908
+d414a864-0f93-3a50-be7a-2ff4646a0b6b,1830596197,17294235368685187746
+13895e72-ee88-f987-604c-4a544eb2a07f,1494036503,14250745552418358175
+1c4a3c8e-cdbd-cf5c-7e6a-62dd9c5552b0,2738383769,602035984814440078
+d6257ede-4c32-b66e-9958-8f1eeab60673,3076140467,2714297842682021331
+b8d068ed-062a-5aae-31eb-f5519f948ca6,82705568,6542515447939551880
+b22ba421-8319-faff-d672-80796aeb3913,2480061077,12683683006508880437
+24ce9493-4088-7f71-18dd-33ff603a6541,3370237603,263135849395887509
+2051ea47-152a-9110-f995-3b28f6785bff,4030250612,11051640954386044407
+eda8df92-54cb-bac4-0d63-7054fcfea49d,1649335230,1676618350776218074
+38959c1f-faa9-6b73-4403-709f28f7779f,204463067,3150979706278107889
+c0efa69a-89bf-82ee-b027-bb0e04f83d28,3681556919,15724415684148473328
+508eaf03-bfce-9a78-c5ff-909e874890a8,2791577689,8447336343540781703
+129e8193-6d2c-0635-0be0-d4009b3d86de,1275122730,11474915703855539512
+0b2f1bb9-ac62-9ff6-8c28-174907e94918,868540585,18411119300574919046
+e2901540-612f-7dd6-b3cc-a562b8d84720,2218026797,1615937182097305799
+675f841c-ba3f-7cb6-b3b7-22649c34a96d,456262203,11486762425346946628
+50d6666b-c6e3-d2a4-b2dc-dd63d27ae620,2420110881,15880893265186486791
+1856b81b-d928-f8ca-d4a6-a6fdafe7f658,429871175,1910399110544212056
+feaff6a9-0e4a-d13c-1d7b-6a9cb4423459,1065809866,557861334717109120
+346b1595-a6f0-c1dd-da9a-b3d0df3b2a2a,2674103105,5455077352676960277
+5fd27386-8766-44ea-3ebc-0eeaf92d3d28,738549448,9099121179639284747
+250ff49f-ceea-5f42-afc0-0f8939f4ce27,3408819238,5043144885168431256
+792fb96d-bb92-6f73-ab14-e0b64907603b,998532250,17971906720319951671
+7a5d619b-5dea-5f32-0510-4514a6e86a36,718527942,520370801666534818
+f3c345bb-c881-55bf-c818-72930a5ef9a4,2325209634,4458570093901528009
+26a3646c-479f-9ee4-af9d-ddbd6cdaa2f5,3587259834,6689160218419777456
+32455de8-9ab4-c3c3-5e1b-5b81eaa10d6d,2572597596,12322201345949000642
+8055de1a-d37a-5958-0f2f-952f12abdf12,1076833386,11157418908027667864
+ba5e4924-beb7-ed67-1902-ffec7e1badc3,3808369884,5505516051074175582
+ecad126e-8882-e4e0-39fd-bccd7be5973a,132579128,9000732233047673880
+d928f9f6-142f-e646-6c2a-f5f09b986ba3,1820601915,6646771195474885734
+4e639968-a201-8c2a-3de5-a419b8c0b050,3792133056,14050599944429334693
+77cce88d-23c7-e5c4-d2dc-16a1c28917ac,4042476692,2319257373899927685
+d13e2c20-bc81-6c0b-5b5e-f006804ee404,3381381408,3788967934268806611
+edda5d24-4c06-be3e-edcc-f550da50e67c,3074783543,2686650814481229762
+c1938028-92d8-35ca-6c9f-4c3b701307d2,4168705748,10991787350534296575
+f030df60-42ab-2096-aa26-28dbd9bcd7ea,1742061938,16280014322645375903
+eddfa396-f3d6-051e-1f23-58e4af394e02,239260447,1557427966743562083
+c11b76ff-c3c1-060e-ccbf-5eec3b48d6e3,4111538829,11956145658526053869
+26b93e84-de8f-7c66-ee25-a51956b7c66c,3980689811,2158330943003421706
+e855968e-5da1-f716-be13-43fb0951d704,4011876690,10380343751224857557
+1fafdd83-4b42-6dba-680c-123b9c1b9dbd,1675885216,1873626729736031729
+13146334-3ea2-4224-e507-e7de150346df,369992486,3530213853486575813
+493d2d02-404a-e75e-56c2-b0dd135379ef,1014228803,9558925420423453093
+ab7cde50-0658-a8c4-83b6-be94f5832cab,2364060179,4736212896634563362
+c60e1a82-53ac-4d51-bd7b-5c43f55e1f61,1564008751,6252097990116582770
+c275668c-5188-7089-dec4-bd8c3989075b,1206271584,10909409893901233311
+7a373892-4169-66dd-9e2c-be4e65dea73d,1302680978,14826965552721207107
+25f68f9d-0531-e3eb-8f28-d427d718abe2,3428236231,11519790337599659708
+b1336f87-845d-22ca-12cd-90a4cbbb8bb0,3051271770,8793187460616456023
+24502e53-2cc4-77e1-beae-1387fb29f83c,1226965346,10751258082614029108
+988ea4e9-b3f8-a91e-6beb-26fbaf433cf0,3196105887,12316904120076640599
+bad05128-4b75-a8a1-6459-bccc93a9dda5,1713098511,10261556811315092111
+df3e8b87-5674-9042-8135-3f5d828f1cea,812508480,9165655354189718913
+f1d7c8d5-0f09-ea91-b02e-fd56d0c4c437,2578555293,12904684520074646934
+65f917e3-6109-252d-c7f2-f1425f4189ed,359974340,13747711727349306387
+21baaf46-4156-a258-dec2-cf8b4970f9e8,267271569,9252570401033656945
+cc9470ac-fda2-2033-e300-068a304be175,2808658229,10442219065020054371
+6e7b7815-3b15-72ac-4e69-3e537dc3c00d,1254448549,3995274785192751459
+feb37b62-2c46-878a-dc92-c273e4d2f65f,1181008146,14363661926252975748
+cd4b4d05-8921-439e-19f8-f554a6ba36b7,2487367853,1748230142511856406
+d2378801-787c-eb35-5f86-b0f5f23ce723,4047786227,16553575607136598064
+8055b5c0-2c63-bbda-64bb-e193327a2d58,1882097077,11549891561662786030
+47f12386-5bfe-4365-469f-ea1a893b6c6c,1901608887,18350950528678939297
+74fdd586-fff8-b948-3c09-5508c0e560a5,2763728339,2434783864891130706
+468b18f0-a79a-b617-2ee0-ce94d0efe128,3301976623,10160565932057695356
+7bc37bdd-2d31-3e76-73a7-a911ce2c49e4,862348652,11355672807088140794
+7475e47e-a5c0-c63c-5a04-b8879cc95b02,3229473650,18427223352050400293
+a29f8d70-6cfe-c5ef-9e75-2535aa2de9d3,2977084896,13593275809158601483
+efb3fd49-b445-8206-0079-8a39a55044ee,3572338570,2579710753610777049
+85bb151c-41af-a6da-97ed-a8824a87565b,2725512381,8684687700110734236
+8d7374fa-5904-9450-9b22-2dd1eee62075,1367366291,3899766891083419547
+d489b6f1-fb6d-2e10-32ee-8d92a8388ec4,2681654860,17704385058192272547
+676e5f7e-82ee-400c-f53c-1d0f943d3ce2,3421204419,11687755860848741884
+73230272-9fe0-2863-3c2b-40752f439a87,986693066,6437345059942370040
+de8ab6df-64a7-bd29-689e-e960156bada5,2182186813,17286355113768952904
+bdcd24b9-1840-3cd2-ec53-ea65f528eac2,4066768860,2106092564999110982
+b1305b72-2f23-7f3d-6dc2-e8e54757a4d6,1185265712,8534393154063301129
+790ae29c-f48b-9509-cd1f-ed2c39cf05b8,3724018719,5026718704786782424
+b5decd38-4289-7307-a1af-709b2d5c322d,219202988,171381065544964865
+7d098152-4614-1041-28e1-cf8f4218e1b3,2302987626,12810179040437778118
+3acea44d-9172-eda4-a508-09007e8c70e3,1766812001,4721074325389646756
+8e124635-1ff5-9d60-7a8a-2258e9bf20c6,1329400436,1541951121032838237
+33c03d87-8526-e885-39d7-1d76098c09d4,1261914335,2232080092699115115
+e0626c11-30f9-2402-51d8-8d5284d2cf88,1919432186,1244897956560602668
+87fc93b3-8303-014e-9c1b-a7517dd44435,3087688131,8199186007925640412
+48972bab-6b75-e3a2-f5f1-aee04ae31e53,3805140744,6714496732784606055
+3f36ae67-91da-4bf0-c224-4a16e41b10d1,853718732,9964020369345941653
+4e66c495-c482-48ff-18a9-0bb79ee27edd,602735916,8673567436232808648
+0601c371-59d8-c382-ebef-49c3dc83a87e,1275243631,2603233416010096765
+4796dbd0-5919-a86d-60f1-8149ed827ea1,1165730282,11941420079009050603
+0dd29c87-c2ef-07b2-4c74-55033ec39c1a,1859858965,2138539348789082690
+a66662c0-215b-0047-1ff3-8b993f96d8dc,1196125949,7103287332571632806
+e4190c46-8570-a3ae-e175-a15c913b089d,3302290338,4787046492369335165
+ffa8f817-a9ac-326c-6370-aa09c0021fa1,2802696379,2037369033671129161
+07cad0f7-71fe-0e71-2140-431947ba64de,751919128,4577887768981157622
+f1dd9d0d-ddc2-3a8c-2f17-2616f82c8f65,4141862546,16210272297220752384
+f00e30ff-61eb-fca6-9776-00e7ca623ae1,1136091469,3899467168988244895
+4c51878e-0569-1fcc-7156-485723fdd8c9,473697495,15514415511152235822
+19dc0d20-162d-926d-db82-43f9a830ddfa,698048436,3344220814156115982
+1d3d903b-023f-14a7-db9e-be3f92439f0e,4196000866,7012606573437424250
+70d71c03-0223-8bcd-ef40-2fd3c7596c76,562787094,8902215633131174428
+21216735-8e71-e923-b562-4fd87a00c353,2531797860,12002172810406111761
+71eeb31c-5053-d877-d429-3516d6f7da3b,2281633871,950061005489612655
+16cf7be6-89f7-ecf9-7c35-f00ac010e922,896479353,9442261348866449091
+2ca24d42-00de-3ead-fea3-0ad1aa206cf5,872006792,14770316666298834824
+a23e002c-c95c-8c8e-4e29-a2c65299be6f,112459933,3020050539659622346
+4a794a3f-5ce5-cdfe-ae6d-e89b2ca6d265,3656881842,9396278690633672224
+cc748a4d-097b-4a6c-7cd8-32dd937bff1e,1828556409,7227342922836374324
+56d0f076-c093-ce19-6b8b-45c4731d416d,2705881627,4421455214606041714
+a7fd3a95-c357-3671-4b86-c92d2fd9dbdd,1529113973,10034006016590936978
+1f0edf02-867b-9c63-dc67-aabede83bf74,288695393,17559545086919914797
+0a61cd7e-2eec-ec65-60b4-2b1e62780c9e,3211257202,6459962260397783697
+64993637-70e6-675d-cdcc-fce7d3d2144b,108834746,3305560396537762886
+b0fda081-7b08-aafa-8f6f-4c79b26fa7f3,4248473808,8051466470434518366
+59252c1d-0495-ade2-e63d-1837d880a715,1984077294,8520111113919522774
+86ac7974-c40d-6f1c-c294-43a09436b08d,1282788271,8525362223769922326
+969e5978-32cb-ae4d-70e1-156ac2d91a24,4017236922,13926925619056233872
+24b88c5f-e88c-cc56-47a7-6d3569f2e090,2671373724,14559034576310184652
+2478e231-6e87-9261-0c3b-989e025615a1,3707173766,16153877639358152644
+c71c4da6-6a54-0b83-e738-355e63fba0f5,3006103215,3342306602341969387
+5451cb90-aced-b303-91de-6927c9b713d6,3632512381,3660462102256768067
+4e668cc8-3267-b7c7-8383-70ceff954823,1365159873,14588714034840278126
+49929b6d-f612-2790-f962-c5d68dd614c2,3328342511,2796253069452457446
+0acb515d-2e09-3e8f-21aa-a91921a51a79,2966511592,2877505480544077310
+e415693a-6791-172b-c715-84bafdbd3f6f,1675059945,11065604908838551990
+c06b861b-faf1-7698-63b7-27243a3f1ef4,990947160,2258093835805701416
+56769446-2e51-9796-ccaa-1259b26c71c9,1758950862,1236086274146256046
+cc9f80f9-0627-2db1-c85c-8b23796b01b7,1353300150,2159907351840637784
+08c65b62-52a4-0ff8-d271-cb7cc3432e08,2355487441,1954085529967610049
+d274b70e-82c0-89b3-1cda-0ef715fad80c,3981467515,18207015098661691983
+f6e0bfda-dde0-ed08-a35e-f09647577fda,3871164495,1098002603491319046
+1633e074-dcc6-8db4-c231-8a4a115867cb,665638022,30191780557132319
+ec79aaa4-0158-bc49-9885-f972da1a7b98,3186111238,841669050033267951
+b87d3255-bc2c-0e08-1cb3-0400b613c49b,3836103039,9637601721788587805
+be37a2c4-9535-1e0f-6cf1-7c46875eec0b,1558216255,10920559420334943732
+36dc7e38-81ed-3ffb-7af8-eaf955470dbb,3687070787,1466870003677471335
+7fe89f8b-121f-9f0b-19e3-4d346ff76e56,1055771800,4201093276446695202
+35d7378d-cd7e-f771-566d-b1cacb9098b4,2274911942,16079972519289582826
+56c7a765-9ff1-4480-6b96-f858c2917e9f,336896762,4620799939030882127
+90661b40-6ba5-25a3-ee25-1ddd4a62515e,2994006216,18049191111566546861
+3eeaa461-1908-93c4-7dd3-7b6822404722,2853961818,17268779235193723143
+11a4fcaf-fe57-ca68-ebdd-59a8899b577e,3652714989,6293056913786806902
+6ecaacfc-a80c-5e9a-6011-948b52a0c994,1509015316,7109871855283898356
+f1f5369e-b98c-a841-788c-87c19bd79208,3155621500,5788997900807700010
+85063d6c-8104-c8c1-9c72-e45cc950fd02,2841673802,3447393504474549541
+90d70996-e082-581b-9627-ee768c352edf,1079890104,5387058457432566676
+5b9fa6be-e31f-5a46-7962-85b3c9236302,280938119,14788967424445109566
+3c0d463b-829b-735f-54ff-7510162d05d1,698538027,5929414046573643616
+ec488e94-7552-ff21-baec-70f336a5037c,3865992410,6963935888502477973
+c6890b4e-265f-e6c4-833f-3c08337f7343,1148762536,17405037513420302851
+b0742c58-b52b-7814-d8f9-31eda77a560e,3764145163,2794617050845047866
+c5e04192-8b13-7e1b-5256-7532f92689e4,3176852082,14461551954405371898
+4cc230ce-d033-1701-9d1c-b47300f02f85,4080141947,15542667243633234672
+62e59106-1a29-02db-96f1-97fc36654db1,128244194,17713961762816097836
+8b431da8-ae04-89b5-6325-3ff4b633b84c,3910541107,467481203344221932
+6661e897-73ba-d3b5-b323-c4faf86de221,3948110419,9924464077148643080
+a0f4f0b5-29c7-afd2-061c-5c69e837d150,3343120167,2081399226582714988
+8560ca8f-85de-3575-ece5-27cbd8e77918,1189385999,11257318613170095693
+4b07e770-e64e-4605-3326-bb5e74adf98d,3120594507,11000245489538779569
+6726992d-f407-fd71-c709-242a96a9149e,1396578112,2520917381270316700
+abf44532-c796-a7d9-59a6-8d3ff884cb4c,2059917739,17799955107766974162
+4a0117d3-86d1-1cb8-23cc-e6ef80381665,1111131188,18438977511352799261
+76ab2496-4181-b764-5c8f-511c83966d2b,3077372222,754823483264049495
+46714289-88eb-df20-3179-33bbe781b178,3183640804,9117569661169635010
+2e3d342f-b60f-ca41-7e7b-8058eb239ae6,4071465919,17035867619821426060
+932a13fa-0cd5-60a7-603c-ff80f9494a7c,281734222,5059950687435307621
+1da68cbc-d4d5-ab31-36ab-c87e44be363e,3839792479,10669311184574972250
+9361088b-2390-e37b-f075-0b5ef61b4d6c,3439754438,8209762829822062465
+3dae0e52-cb48-8151-c313-235954b2bdf2,155224876,8850907404316517251
+0037399e-3e5f-b773-3f0b-5f03a8f52663,1587146556,4265765554409658685
+38f64c64-0f32-8f63-0055-da17b678ddf1,3624430021,7270264545158560557
+daed11a5-040b-f3ee-e641-43caceb972f1,1076284787,5396488211076129845
+edc3ca6b-47aa-c865-fa6d-3657017f7b06,317583015,10188870599879349314
+cf9d3c62-4984-eb24-f433-fa24b163788b,997623692,10012574149741404946
+af30c6fc-0980-76d8-d9ea-d1c5e5551199,717833970,8467073528638364745
+bfaeead2-2ba2-ff74-81e3-a5963a7063a5,607962273,6999184711323506212
+e21c39a7-1612-74f7-921b-06503f2fca3e,440380280,7894754296303220477
+6d1174a1-a027-5676-4e5f-44a16ea6cc19,2794415994,9564774106730645150
+1e597c29-33e6-b722-6bac-8e4fe72b9589,2194269068,6489166274780611127
+9d62937f-5431-8985-4dec-a2efb49c36ec,709107027,7892762782594608249
+66e86418-5679-a444-8155-a5d77249d827,3765387823,8886363941582979251
+18e32297-fec0-a67b-ba47-4955f5ec5f23,3388763809,9366791216884179221
+447872b2-4d58-2eaf-d731-3d8706cf8311,1858789114,8333745367975764984
+7d241cdc-9dd9-f9de-cb06-4c74c903075b,3981464677,3029589740810613612
+ca2625e9-24b5-9c33-9f58-53623faf2319,2179464139,15801073595446055214
+c4521d44-5a46-7af8-5f57-8a3642e9b114,2384649508,15030380068877143672
+bf29b4e0-645a-9614-3590-cf7d623b07e0,4791738,11347196625034250480
+c0e7b06a-a21b-3968-995a-9305264a2824,1557453434,9716711671870968085
+f447602f-4411-bd09-b379-30e6e7e6ebbb,1090953208,3260107754012008801
+b56a2d3c-e2ae-972d-89da-7b3669e1aa88,216488264,16618964179210217335
+a1afc9c8-e8dd-1bfc-ad42-0422f9cbf3e2,4033111453,9354830650837295443
+6620ce26-947d-8a8e-8dc8-31eacfa153f4,868726047,8993869649871311917
+dd64b847-ac84-8ad7-eb13-9dc850293e30,1261701446,7104924352196872992
+4992158d-807e-8a4b-f50b-2f9985ef75e9,17151460,17939295285878690392
+53b8e7d1-4a35-bd76-157d-6cd7912e8c10,634351525,6753137096171255902
+0c3d2a1e-f59a-8030-7f8b-a577857f9a97,3421566934,15310683200880184412
+d2365d31-42c7-7f65-4be8-73ccca014c1a,2806188980,8113232507013614793
+e7d86a46-e259-39ea-d5a9-2e748b07a179,1155317262,3775551549328445855
+0da35349-a4ec-7423-7d6e-a1bcd3708b5b,1479794527,3877997206346331123
+3c2923b9-41d1-2ebe-d22a-7344389a6924,1930517425,9431850563953766875
+eea91ba9-b1da-c369-96a1-e34126de14ed,2559293212,2454011808364309480
+51d3417d-11c3-29ec-4618-8d00c9b7a617,1109914284,7543979214578863531
+63c7ee45-0c51-42a8-b841-726782d29723,1555352866,5501918047385021852
+9ac3396c-3246-a4a9-fdbe-32e6bf1ae6dc,2418588557,2433929948459480405
+0751186d-52bf-8398-ecf0-62b8985ecc14,551620488,16353162834785292666
+2e18a5c8-cc03-3d08-274b-c9320b9022b1,1038692435,10430636387343992315
+2e3c3b66-edf1-7dac-dad9-90ae5180807f,2719164080,17999475679508668513
+e8e3a668-d063-6220-b989-52cfb884f802,1251376773,10577193869745717656
+66aebb18-af63-0665-573d-32ff5cdf7d70,99357091,13103163706571908651
+aa1cc296-5693-649d-7cd6-88730c0a8a60,173045772,6835476172627524854
+00e91d3b-df8d-1940-a380-61b6b0ea89f3,254864138,2461040902857839408
+f3c92462-4f13-7177-243b-35f5bd8ff515,1170303989,13387216679721164938
+1a602eeb-f1c4-1826-8f04-c07f7da3361d,303228646,15018958616019352544
+7ffdf162-95e2-621d-cb73-3264b93694d9,3889672390,10831041294781797435
+3e6fc766-2a93-2f0f-342b-adbd9733e4d0,3781895103,3675610201163047024
+5a921262-bba0-1436-b027-2ef2054f7dbb,4185508442,12232235681226779553
+7bf1d298-9997-26ff-d5fe-7c6d24578275,528018703,17779291131882325886
+95c4fd3d-85b6-d52f-d9b1-c7e589d1c81d,4198725832,1713613507125098276
+85352c27-3908-735d-7a4a-4938b3372b9c,1947928856,12832925359087928295
+1f5d8c6c-5c3a-5252-4494-7a163d6a1b9f,4210854792,13582627969061118361
+f57c4452-3b65-5fd1-8d2b-56265c4e4636,443019752,10367691485997969214
+049934ba-3935-3de4-3f55-af2d7e0949c1,1297122792,4118735525139184472
+7b1ed826-8456-5753-0466-168cb6910bc4,2192482538,17086120118018355573
+d85c3a2a-ba8d-9f3c-8ea8-180303ee663f,1948645298,12639607418023168025
+53279bd3-b3ba-b3a7-2673-0bb4f6e19a99,2762145023,11190565882709909314
+fec31186-9d36-5820-6406-2315d9ffd393,2079314663,14294767218809361553
+d7bccead-5c9e-a227-99b2-852646d22a84,809267204,15818722361588999563
+edf9f343-563f-8d60-e2f7-150e0a6660c7,2687568248,9461653567218535071
+77c6df31-00d6-009c-58f9-c9c54a799e6a,1167255968,15305190018502865070
+b76fe4ae-40ab-53c3-545f-24c05651d7ab,1289193925,15419399974960168216
+81c95e79-8dcf-1406-8eb4-5c05ca696c62,154631995,2061058334290001565
+89c5fe5d-27b9-c760-a8f4-698794ae26f2,1052339789,11157477802140007934
+d27fe2bd-4fb0-8137-00b1-9d1aeca6586c,1636474281,17037073919022645239
+9bf006dc-2662-0851-87c1-cbe8471e3596,2138072949,6631245715573046041
+b10f0c01-18c7-15a8-89f3-3f0635f555bb,1785559301,4484789911676292266
+999839dc-f3fd-493f-d4af-91c9dd6427ba,2187670811,4616626137473164286
+99b492e1-be15-5198-6f04-6871fd40aedd,2566424867,1764204760716098686
+a2efabc3-fbff-d0c7-c4e0-6bfee88f6c50,1208615018,15734728195807913226
+29774caf-4ecc-6896-9ece-72d25f5a40aa,386958405,18271857646338039304
+e138b5ac-d760-558b-cc72-81afbe234811,2425255995,6545511675792242714
+85b47a1a-1e41-7068-153a-7ac330af4abc,3103468544,10064125573207736493
+dfa0c3d9-ea97-90b8-3b7f-128fb0830e13,1210764271,2905761702986708792
+3a6f1951-63df-4d7f-dfd5-ca6ebb81ba37,542892101,14424509116902320605
+3ccc351d-faed-70a2-14f5-cb592a959dd2,3943517951,9646170507168774314
+2002f90b-5416-a1e3-66ed-522209c94872,1454591256,13889350819022557459
+115e9df5-1911-17c9-cf5b-1205ff185670,4004379738,4165324440351680287
+3b32ecec-30bc-f9fe-b7df-fc804a1e6adf,799239772,10494103241471203748
+509a4189-a2b5-9041-554f-591af5630cd9,2028325420,2270985085457757345
+52405970-2ec9-6b48-2c7a-80a3cfdf6fc4,3375715608,7528586263654067094
+d055323e-1480-dcba-83c5-8b2b91c13b8a,3875916111,9365649327809387035
+255b6801-49b3-6a6f-f4ab-7238a68b554d,2063005332,6943520319028673356
+ba0e39b5-521b-3ef5-a69a-164b89d0e2e5,1482894243,16473191647386299185
+d2bccafd-28e8-7106-d811-00763fddc117,691221639,13074120191771028953
+f039e689-2f6d-623e-cae8-1bd5b2915cbf,2092233166,4451624027324984162
+15bfb61d-4050-88fc-ae86-41fe5e6ed3b0,1223809857,4245392948215043036
+250654d4-8440-4e12-3c6f-8df2662faec1,2244309399,10144741616973508130
+ab948c0c-57cd-6692-b029-42199ef3a2ea,3882776947,374680863210404601
+25548be2-75e8-b246-c758-b0b8a1cf6b10,4016844003,4798996646087059466
+bd781552-4408-76c2-3382-2b85d8ec74bd,4280155629,13199183675572334432
+9c380773-d788-9214-9597-277f5f7ba898,3802713318,16690583039521814861
+4b34266c-e7e8-a83c-1e13-122381121740,2985292750,1925427335369149238
+5358a372-085c-467b-4de0-6280feec649d,1336647793,8623335893445397313
+692fd047-df51-425e-f51f-2c2c92edd2fe,3983644001,10203549199729474120
+87c65f61-ead4-c0a2-45c0-665101a56603,837119152,14885390159790157842
+90bd78ac-bf00-657c-64e7-54ae41769bb5,2317557317,6304381142959459653
+012b237b-5ced-1959-33df-068be8f2482e,2767375791,2996568462481689939
+69a1d2ba-44c9-fc84-b54e-e6bdb543b9e2,1303044968,6418440399174802069
+46b5e7f7-0d2a-2579-8c96-2cf0d800fad9,2512406713,8046596999479262486
+4d0dae5f-eae4-9b6b-7bf9-7e8ed2368bbe,2464226570,12077548066584912148
+44117ed5-3d3b-1246-43d9-236a1028fd85,180407547,16506826624009084573
+7d23618c-b795-0000-482a-e2afa85580de,3354493594,2865691899341069090
+ffc8c402-935d-1630-3a23-0da0b88723bc,3216108490,7098269528253183736
+6f4e7afb-a210-f5b3-f303-4c5ab2c80cdb,195472105,3212052088359690552
+5a438af5-f40a-3051-d674-1d29aa11d6fe,3265629288,8992016882446611784
+6d6ca1ed-71c1-23b4-ff41-5051d8d487b0,2945002241,10832263116962175595
+9e304047-80aa-65ed-4ec8-683b8b49ba92,201107336,2982976265195345834
+058e6303-fad2-008e-99c2-34082a5b5c3a,1361731788,9433554887329244581
+27d43392-aff3-94a9-ba30-0eade482220a,2214469083,8688811572873031206
+65b49b61-2678-6a0f-f99a-41e3088151db,4257179501,1624628796733637221
+44280c51-200a-5ecf-949e-5bd87145bbaa,1500531335,8647182065796495138
+2de4ecb8-78c6-72f3-7701-e819d33c380f,687436800,1400753633704806553
+ba5ef803-628c-7fd6-0e65-9aacdc600c18,1410971664,3424753472584226851
+3d454ed4-8090-280c-a115-e269d1e82c5e,1503008821,14314827289540105761
+a6632d78-6b25-a91e-e70c-204f72d1a95d,3416074650,6993319081528921098
+84bfa368-e39f-571d-b579-30f87d765054,2822444717,12871913185458496989
+1f26d401-cee4-94d1-13b6-e7468a617dc9,1086980750,4964153245755659868
+e66ed15c-9a65-a906-b675-c87c3107524e,50323556,9735913459450420734
+909c103c-613b-f306-49c1-3c37453961b1,4218061717,11395482017677760164
+bdc4ce95-6646-e808-24ac-c7ce5cbe9dec,755914957,4818925926921618282
+4844eac8-030a-b3b9-0dc9-d8e47726cca8,3034746074,15935924711624748405
+f872c35f-fd79-9d2f-8d2b-55443f441c45,920128792,4963548178179782375
+9427355e-80b0-23c7-ed8a-23aa18dcf929,1762192193,4653134562923753419
+bc52d2f9-05b5-09e2-22af-12f60f30479a,3048931459,17549452344339435374
+f9ec6624-3280-cdd2-1783-e1d7c501e4d3,1672733007,11615599628990074647
+68129857-8aa8-45ff-80ec-af3e576eeaa4,910959316,13914233708780059723
+9ac082bf-d1ad-3fdf-6cc8-56e5c3bcd0fc,2897309297,5915368667059680708
+89fe7380-2967-ce5e-866c-0eb26cbd5e9b,2713936754,7880042604231736618
+0f14b96e-7174-6804-a4fa-985e1c254e6d,2885359373,16019030209508546058
+c9b336ee-a8b3-5ca0-73e0-e75c91daf7d4,3066780897,2573297091163175192
+2a70936f-88f5-b989-50d2-7398734e6f95,453707591,5985536040246337061
+4e843356-783f-e1f1-70c2-0b3795ba06a5,2156119867,7618942075227658052
+aed8c2f0-0aaf-937b-3cb8-ee0f86b73072,3793017963,228890764738769392
+5d722cc7-52a6-d492-b425-eb56c6a3b640,31601679,4335574455502238479
+085b023f-5eaa-3028-a369-b3b47c9a2fab,1711560003,1984564961592558464
+53967485-c1f0-2470-d3c7-d36ed8f57a8c,3342485178,12611042406123329600
+4b659c64-7318-3860-db8a-fe542b13871c,1104905909,11586512298024081000
+c53bf541-82f3-1711-7385-1e8d95c0f084,2085717895,15513593616774366675
+9ef37fb7-417b-5554-966d-77831123b961,3041213651,16062913449682352870
+39af86fc-61c2-fe8e-2372-0017f5f40a47,4124143115,3843781192836334708
+6ccec6ae-b2a9-e84c-2650-04d15972d72b,3694467113,10603871476463802748
+acd8d820-7943-8510-451a-e264568d770b,3960781354,8533294488491863844
+8cf6ac9c-2297-41c7-0449-8314abc3f8d8,3488541404,13886259188415875839
+154aeb13-ec76-e702-0a49-0b8134008680,1103675530,4538789331669093559
+bcac8ec8-f20b-7ba4-ed07-01cbdcd85bad,2525744403,9385652265436598974
+26389d6b-311f-c141-0110-a621f4e66447,1904319219,12861639851014148975
+79a3f773-a341-d391-e2ad-fff454c46241,2452124126,13924646371493604003
+87dc0d9f-8fa3-d4a7-a92b-db933ed44ab2,4261910746,10859989741837954943
+6d218257-b11f-abfd-fbed-dee048c8b2ff,2800980691,9109263978300949356
+9feaf2e9-9979-6e15-cbd5-02fa3e165ac2,4020298567,8867595738324395038
+1b29c506-da0a-2aaa-21d8-45ce2a560753,1327487262,6838192476484655874
+fb98802d-8ab0-e1fc-07d3-46dc6439af0d,4129649911,9724288065321711019
+ea9b18ca-55a3-9947-efdc-20d1583134aa,1830341546,6805728031544028713
+0b814885-f2f9-9f1b-ec4c-e51c0da270a6,2356412657,951805019761363632
+2ab9c420-4a5a-a86f-123f-390a10570915,944268061,12384929434190779433
+a2d62577-2459-4136-01f6-23d1ed135491,2926743064,15947904220908187626
+d1fc9142-3ee0-044b-fcca-9588e4107923,466669017,16951337098455298594
+200737e4-8e10-24cc-f7e4-142ea9f79cc0,3146465389,7745223377619373062
+3f39ce5b-602c-8637-ad5c-2f01b56f1ef6,771162536,16758631927431216704
+ee90b3e1-e1a3-47a7-24e5-6d7ed4e70b21,1898981452,4541811325518915743
+56b41095-c167-2dc3-5cfa-aa1288e04030,2417089643,14430728099018714646
+aa6ee5f7-448e-a50a-d979-849f1348523e,3838731683,2850791472669161024
+5063e06c-7244-1ebc-4e18-3a53a702cfb9,2029233810,17662916052525456785
+e913e5e6-073e-9c4f-d44a-3bdf8004921f,1247351743,5636173376218252697
+a013d3e0-6fc0-41b3-e69e-0e3b0b777baa,4190947108,15883655048689484266
+94704a45-c157-b850-212e-10ea57e2036d,2350495976,8833672868666359124
+e072c1f4-3830-e6a9-a516-52a132720db1,3406695833,1400736453912214950
+fa8f87bb-d309-60b4-10d0-dba797eb02e6,3961142024,8711053253614439317
+6cc28d30-cd1b-269c-d804-39477e7c834b,3801104872,12628775282815083878
+04a6368d-f342-13e0-57e8-31b09d3941e1,1650423608,11154667542214723440
+36bfedf6-a1d7-2475-9513-f3454962d07b,3903695638,17922425590990270579
+5c4ecfe9-1577-90de-514e-bb3ac62dd539,3341246243,17373138840287797481
+a8b3b0a3-c5fd-dfa2-c31f-246b0eccec48,3002101458,11820614961571515960
+3cd68ca9-a308-3b8e-ab71-125c69249ab1,2056382419,14635168172873627764
+4d8ef6b7-e580-fd53-9574-7b5442930a5b,2177668623,1176179976101293035
+f907cd2d-9f38-5420-5d78-3fddd3580373,1041012075,15079558703549829039
+2e60e9bf-3ce5-3bbe-6e01-3320ded2e37f,3213272771,18374134427155724938
+3d74357e-e150-5ed0-560d-966e13c1b703,3377761762,8176195549977979789
+5746df05-76c6-3db7-5ab2-595ac11155b3,2300587279,12080198852908023736
+4c70babf-8f27-3c77-56d8-3eaf56faf21e,3020926115,1751436004831429930
+829a8aba-09b5-fc97-f766-6e7ea13277cc,2513017795,6341119645578368723
+191bebd5-ef16-7961-1a34-b47a19b4c22f,1332392252,15034264353106709882
+5892ee93-2a1c-9b8b-64d6-67803b3b2afb,3190230482,9664258999265823220
+dfc472a4-b285-d991-209c-7258b21a434a,4158886992,1328118001201205213
+93b6e830-00c4-91a7-c5c4-c3e4834e0cc5,402642082,13872662454180707250
+e8d8e050-5d86-8501-67d5-ca0754a2c45e,3874511271,16378750482743220395
+deab26a0-e4ba-10b4-cec5-83668bd1763e,1187081133,8610379165701540486
+cf89f5bc-28da-e3c5-8219-54e556acfb39,3190089435,17700365357731285245
+5adaa140-838d-ecf1-351f-93d16b44e7ec,1822586733,15391256274964799170
+51dfd279-b7ba-d35f-1a3d-c9c2bb03a619,3555036689,8974885558977233703
+d9f8d88b-e7f5-c1fa-506a-07f5e1a1bf38,846270413,9919786887116415853
+9f35e277-e5d9-fab0-0ef5-e07129a33c22,2928194345,7299806744023699949
+e3fe9237-610b-3edb-5c01-be8f35ae710d,1108146090,7226472335317893956
+83d1eaa2-56c4-a6b0-e349-148e7b67d3e7,1430840265,15048554180682897448
+b1b87231-9f5a-309f-5f27-2a3a2227835e,3058244149,15879496257294385871
+9a60400d-8cf0-29e7-b3e6-493496e4ab60,1690307659,13772074080774507757
+67eba5db-4349-b3dc-f4c9-e12b82581442,1586850143,8439233220479637558
+8c7635e7-ceb2-3666-e00f-71a2f5a9e686,484302533,1726475032958161970
+f1c03ace-d1d0-888a-fecc-68adf0272131,2220162587,6369336117129280486
+b54f9178-aa45-c6fa-ea3a-b76cb671a0f4,2632336278,8772070013334482716
+bb086fb5-5301-d60a-799f-ca725c1e3a91,369943093,18249390386710430244
+e0a0196c-b095-9513-115c-b69047ec7a3f,1108195656,15064886107354370963
+1a6ea25c-d6be-484a-7a0e-efd7c49d9d0e,1769055600,5990715563905611595
+bcfc4f8e-6001-0671-c87a-c22fd3e65fcd,894978743,4048799839183584542
+65c71119-d20a-8a81-965a-abd4cc097eb0,409843562,17338724453056571101
+bf86c138-cfcb-4606-ed64-017152a70e0e,1337150435,6439027747618690396
+ec1f2629-9fdc-83a4-8ebf-80d76795a8d3,3481513798,941098803758150306
+9fbc7c02-f894-d286-fc92-62b6f2b61b2d,3371274807,638356791896043373
+78f5bdab-5010-d8c8-6071-83432a9181b5,194074790,12552638985944471466
+d690ef6c-6059-ac87-f247-4be0f17e1b2a,2300057978,9526765229545974860
+c6e3e4b1-b5b6-bacf-87d8-c7664a2fd7c5,828691215,18394198223587925625
+0cadb5a1-f522-bdc3-cd94-189ee2339a4f,1505734901,16765619423626661005
+f6ca108d-04d9-5ccb-152e-8d9167f5e393,2858348264,2747625438743415788
+8a6f6386-0f61-9a39-ec2c-6bc0aebba4cb,3781260746,17791215757486561069
+01299bdf-eebe-64d7-08e7-7981f5425a19,3202992871,9953287203741998195
+97e98fdd-c973-07d5-24ce-2f86fd432fdb,847607992,14805544805799563093
+045f95d4-0341-bf97-be2f-43ecbef55496,303105766,11646246876041607216
+44b0f9bf-4c32-03d3-ac66-def0b3e5e1d0,2143350027,8153684373855574167
+b61ef712-1659-f647-2119-2cd2bf5ee537,971151633,6091209737956212079
+3189cdf3-17f6-0730-314d-b2a0b7e8d1f2,1856364225,2318539467359226005
+98bbfc52-b3cd-ee45-da6b-7b4774f820b1,2564543368,940004035382332867
+8ea549f2-c66a-3360-fab3-efd2b692525c,3067807961,11483025854250210809
+f51a55a6-efe3-ad88-9428-2f69367d3d0f,3596225561,13501848844574388444
+ee8e35b9-aab5-7fdb-4fbb-1f391ea4caa1,2758631070,2384807983782277659
+ab83df05-a06b-bf60-6a48-df55e8a4ac45,3044288695,15294188775517639374
+31866215-1c77-2141-3c86-b810b0ec4713,2824213275,11255111831626709282
+10a3c9e0-d51e-6d56-58ae-396ec1706871,4280812826,14926503352420694846
+d116840b-cab1-ff1b-eaf6-a594f47f3cfa,2295952441,3480718600314445883
+f39c4f5c-fff9-e1bc-e43e-632c9b1498ee,2905428004,17864468524667347508
+c23a686e-8428-dbd1-57da-fdf1b9bd329d,1851336660,12609370808089191222
+6800154b-6b51-8692-747e-ebb765ccde96,3579188642,13428629805599106127
+eb59beb4-85cd-074b-5578-c697d3038f65,799495920,13658629472163077363
+741e56a1-611c-d74f-8941-9b55a7249668,4149165111,7893456343179055022
+53cdb293-eced-c715-3e81-2cf5704a0199,1688507278,8355645295236066211
+5e378111-e9b6-43b8-7a0f-ab3032e8ab74,215657039,16540553091753569171
+e2bdad98-b729-a680-1641-52b2174f7535,1679749959,13595852922357493156
+d2343fbb-cf62-c4a5-6f08-8d94b88b840c,2932895270,9450868806052621053
+fee2b4f0-410a-f267-10e2-2e740e4a45a3,3502851527,6749125260296681232
+dd0c0e0e-825e-3b49-6131-145b8a4dcfc9,843606936,8159582659702901172
+cd7d529c-acd1-ebf8-0e6b-4fe8db7c252c,63727804,12283441350785300308
+c37e16d6-acd2-9f75-4418-63988b526680,1023618080,11725627999634558895
+2a0cff1b-1df4-c79a-756c-9d3cb55d98f9,3587796735,10113768681836456632
+96e54caf-cc2e-d66c-7b7b-acbd2ae58c58,1769740869,14782694738340529654
+939bbcc5-6add-2494-a6af-bb358926127a,3546873610,851624689669718082
+75c1f91f-2673-171f-6bb8-b0dad8bea41e,2170947681,4824779871791366739
+45716d5c-6d65-814d-150e-a446779da76a,2630908521,16341378993871524933
+ac3286b4-6fa8-72dd-d63e-c56d858702de,638076846,12323357126471206388
+09e025b5-a8c1-4554-f879-81ec78152a22,948170415,16694704198341758077
+c480df66-5d51-a31f-51fd-b5e1a2647daa,1512669354,10874267309729089568
+5d5a8ef4-8b28-1906-ad01-f1ba681a10a3,188563554,6227246721103632004
+20d6cedc-7bfe-6d97-510a-d7e9cd221d7d,1754484983,9876891963899635054
+ffa7c09c-4deb-14e7-bdde-6288030c6f29,3682604280,6479155795321157870
+0d40341a-7b96-8c87-3484-7bd216862299,3068159641,4600705961920369808
+d00891af-9a1a-1ceb-b87f-dc21ba118c9b,2670840971,17550103136204006210
+18d60be1-2a05-0526-20da-411823dec510,2236339505,10910447163347761401
+2c2f90e9-5a16-7d22-3cca-d213a0cc2d2e,1917249225,10567654409866862774
+ed7ce7d4-e0fa-192e-dd8d-caf2bd02295e,3221031727,17384864840840868940
+015c641c-00e6-1dc5-34b5-46f8706a37e6,704952525,3740276677783253550
+2610e7a1-26a7-3b18-d000-9971a30d8807,1610957677,1495078326733308568
+58d3cb49-f3f1-5ebb-b610-ec7ac1709ae8,563312058,3387108497710847002
+00353088-0173-0dcb-0084-90d6b2cf85c6,871349541,12558759188445263979
+f6188522-edae-a3d1-673d-6742c0c0c708,1837352079,13458390374665791046
+cc2c49c5-bf2c-cb41-e1be-c70041bd3785,971004764,4905168936848883641
+04350861-fc20-e4d4-ae8b-457c263fe898,2313745479,202465761119033160
+31cae964-66b3-450f-1778-5774a498638e,2112301941,6399647194493321038
+db1f4f05-428b-a03b-0d9b-785d2a1f094b,4232257300,16870372207087278568
+a5cf2a2c-cb49-ce0d-c459-f400127e9506,1232689413,3702557600271060899
+2316d4b8-f3b3-8f87-0def-27bd7c7d8673,2950233328,18031751091713146771
+77c8b66c-64e9-7776-1f29-f78dca4e2d8f,2808969823,158071950594849283
+4a80339b-d488-7aa1-0c5d-c2a8a29e68e1,1189337474,16699941078510618804
+569b0d27-5c9c-37c0-49cb-7f2f70588292,3792421037,6166432184585570805
+5b761ff4-13b1-b9de-fafc-bffb749d71e4,891301010,2473726548149545081
+6b99556b-7032-0694-ee50-f9779c409e0d,2247653478,10683043338527473103
+794730b3-c626-3a9c-0eac-b6acb8127379,2463296251,10694298921243954790
+cbe4cb8d-5bc7-c557-4550-76aefc7991c4,665679631,3766259222670052809
+50cc53dd-14ec-c210-cbbc-11ebad5b799a,74999783,2782928961677668457
+afd3175b-7102-3809-dc96-d7880dcdc8fb,4237033580,7954371636678746630
+829517bf-a17e-ceed-5210-32c0b7693a27,3855739806,7543396205137769252
+4ee1db03-6810-9960-da41-182fed8163a1,3124935512,113306963038490116
+914a65f1-07fa-6e87-6f9b-0227153a393d,2358328436,9065850684238028771
+23dada97-798e-7249-7d3e-1e91b74e4364,1245488376,2142956681420659989
+328ac823-35fd-2e7f-b5d6-c95118f692d2,20433559,9884078904560999015
+32de258d-7e63-0814-9ab2-19e5a8e1d888,1822478699,729233008064758254
+5e7464b3-b4cf-5a83-80c3-fdc0d8ba8627,2752753282,13136179196256025082
+3eae7e07-7fbd-b7e6-ff30-5b618367ad56,236579780,3006187166957333195
+93dc2936-ad70-9899-0998-933755945a47,3226046024,12510264368229886555
+dacbe8e6-8eea-febf-20e7-9dbc5693cc43,1223310427,15468723003848260501
+a17412ca-dd6c-4d69-2db3-63dd2cc4fce4,1013880041,16636916917407760401
+079899ee-33f4-da14-49ba-1299ec419245,370407783,12493175853044533582
+19e99ba3-2d9d-5b18-dc35-161a6bef7a55,2659501557,15938002687949763862
+2a266567-b797-2b84-304f-0ffdc0e98079,1566781683,12146406059263895163
+ad79cb9c-8815-77f7-1832-db0ee5e4263e,1075899029,10822199873343467813
+6af9de03-48f9-bea6-076b-85a620b216f8,3958993956,15245389027938141778
+8a0e7528-f2b8-69ce-cf1a-386e855749e3,289064061,9756460554095074530
+85b52040-87be-da95-0418-a2b1034c97e1,762496833,6381468897725974868
+ec550b97-05f2-290e-2cc0-2b738e3653af,2226556768,6101774551776626037
+79808514-aa5e-c21b-2e81-fc40fb93ab5a,2733695395,14771515519937940868
+ef3629af-2310-82bb-5302-0fbba298b253,3719084406,13114324483220119767
+f871bdf3-1964-4024-3a03-8255a7732f88,1844959009,2711387142169782810
+2f202a73-9a99-50fb-1caa-eb1d005390d8,3574941662,7818152559354452898
+8c241c58-ce1b-c765-c274-95c4542674cf,743321963,12036593763678124262
+bb350171-c5c6-8e46-862e-7177593dce79,4281663651,15967682808705266991
+8a6469be-5a70-7a5f-4fb6-a3c931f8bc27,1274258725,14888587250374840861
+9a18e511-170c-52d2-8099-77ebb2c415b3,4168168615,14891577536166495896
+5611a249-b875-31db-3d9c-50c0153990ab,3906757685,2373079188321081426
+fc1e3bbc-9bb8-ab8f-00ca-f20031674f6d,3875787442,8270903669019891315
+0f518523-18b2-b99e-29c5-f5f175f6376a,528131687,7358258611773014654
+31afc128-308a-b2b3-d737-b3a0bd3b0ab6,4007942425,5501017645696472183
+48a4a494-0cf9-318d-2bd8-ddaae6484683,3911185699,552716421473187622
+c58af330-57dc-2993-3f68-74819c448c8f,311169496,10203608966911663069
+48a4a732-695c-3579-69fb-7303c2574896,2975689614,9602838220443323280
+db0bce79-8468-becd-9eea-13b982da2ad9,2127156517,11143615949767562862
+548dcbce-9b91-2236-8f2d-9a693ef9b5a7,732027811,7629646807499607421
+13d44ca9-5c03-c9c6-46ae-fc11d07101ad,2961769448,5672208771365231213
+d07670c3-ca34-a6fb-5095-1c048143580a,1320549038,16294839055000099090
+b19f3042-e0dd-1bd7-4159-a417951e520b,3016298370,16274881705334810957
+3da7232b-a249-79cc-71b8-f6c4f6e1c29a,3323975149,13350230474711302641
+a1270126-dc94-7a14-0386-03346250142c,1895658395,9029199167183183956
+ba317eba-796d-b983-e603-02764cc3595f,3577551358,6905626654714002661
+3d0b416b-facb-b3e3-1b7c-14c2547e7f30,57634531,607540600697673223
+9d3ecd8f-eb59-c3ac-42b7-240ed3c67f46,2446529892,10701179715877124986
+8bbe5b96-c452-2ebf-94d6-7427c2f730a2,1178226737,6683076608963810975
+c2cb9358-e4a0-2225-4ed8-9e736d1084b6,358441891,5001265460900969793
+106545d6-988e-3374-a217-a4b4170f1575,1822013823,12258289978612781020
+c1341142-3ef7-8296-6190-2ee6b8b9144f,1893328482,3175278304017202438
+2e3b8345-b467-71a3-34b4-42692e4301a1,4212196399,14749969310321662466
+9a75640d-5364-ab98-2164-33eeb30c5d7c,3428365565,12128887614722568865
+956c80d8-38db-531e-8951-fded90c17865,2894213790,10939402727730469663
+87a2aeab-3881-6939-c0a5-18d9bfcd4429,46422297,17506877896249685976
+91cd25a7-f845-5eae-7b2e-57d6d8a65d57,3177353753,9067490165559326985
+d8043f3e-7ed7-6c14-aa61-7c9a87e88a2f,718103309,766741414782821840
+1b068e9e-d365-26d6-94f2-2b626fb27fd1,1379590705,14884535692435853837
+d1ddbf11-311b-1b25-edea-26a3d62e7c4f,160848446,5098979542705881729
+a06e2e4b-6da5-1447-804f-d507787524ec,556579324,11840102996085048985
+db308c62-8a0d-f6b4-cdde-c069b5670514,4274833891,12597634776238009995
+b2d5633f-12a1-60ee-aeb1-669b173314a1,1907423075,13783104090644959407
+5e187887-c8db-aadb-d19f-c424e8af29b5,2994606737,2771307041556739113
+ef2b6b9e-fdfa-0c75-cb25-7285727b5238,809028667,11255241079958256446
+9813a6bc-aecc-8040-69f4-a4eb9ded75a9,4003744352,1246670831224438649
+c287f92e-2924-a7e9-f4ad-91e05d05375c,1736635066,3266281057178553207
+e6e057df-895d-bba9-c385-994adc8a9e38,581238291,1948709113105902331
+9faddb37-932a-e1d4-8947-bff8a19cb009,1154346755,1387575309787688530
+e24c9382-377d-96f5-c869-5c109290db76,3347503671,14211016343925727915
+278c97e5-d6f7-f372-8ed8-159ab32ff8a3,242919477,8032586332091127300
+d2ee13a9-ce64-d0af-dcf2-6190b222885c,1213804365,2238156913137749018
+077d8649-a5dc-2609-cfdd-78e7381929c8,4117430461,17131474266733994435
+754d71ce-67b0-3a76-bab3-a1ce6f0c8e29,2181175786,11160296049839572509
+830a7b77-a28c-bd3b-3779-4c1ff645be1a,2649574905,15414852718985847869
+19399bc5-02cd-49d4-4bd1-bae2afabdbe0,2538646785,12517315107237355631
+53c5a0e8-ed2f-3428-4f4f-80d941fd6d45,1506980534,10438420508388777863
+6682544a-b5d1-814f-d618-8df1bc2ba9a6,1150593334,3864965552114070571
+231e2239-3878-1c35-41bf-eeedbe91327f,881158508,7326175748100281726
+a4c2c2bd-d822-223e-0182-e8747a332e9d,129844360,15464525083192389341
+205aa4b2-ee07-cb27-5a59-edda40a88eb9,2904537910,17119305652310578161
+e1eff7fa-70f4-f184-ed08-e7f423752810,1220807563,8134705674586737035
+6643900f-1116-b132-4970-7197d7b1b9c7,3270127331,10768668793336682082
+cc19c18d-5467-50c3-639b-4421a1e8e96f,851193610,14312783027617281326
+e15b6a2d-9883-08c4-3092-d861921b8949,4121684072,16484537651530303990
+f46bd66b-abaa-d42b-d25f-a1b990be28d7,1324448804,3603889980594298269
+03c314a5-115b-e2ca-5cb3-81bc05c2e353,3302367114,6615726607258405067
+bee559ca-3382-b7ce-c70a-698b18a48828,3376319762,5052527803838275268
+86ff2ccb-fc72-bb39-64a6-89f00c5e1d2c,2385797088,14882703338063787141
+7d364920-51e2-8ead-d82d-dd1e00589ea1,2363772600,13738941746807106496
+1ad41aef-80fe-1b43-025e-a446ee9a5868,2298099487,5285525302002709396
+79f34514-0c3c-4d94-39c6-ff19aa9bc933,847225248,4817565498484218640
+77c93df6-2801-0e49-ad01-44d3a53fdf23,352438200,15444794345893736611
+34442362-ec49-4c74-2723-7e5e36e22fa4,4198051781,5969837530949197239
+dc7c95d4-1759-1535-ef3f-a192b30b1caf,1286272915,2095912093804728187
+5db015fb-e477-f327-3f4a-a861c093fb86,50481956,15815746768594694478
+67165ace-37b1-9ad4-baef-00ed5b4dcf62,3446636632,15392073549913310182
+f15573a8-485a-2bb4-137e-7e7594375f4a,1309247349,11170214135785033236
+af1122db-dab1-52ea-59b0-902aa8b88bfa,2688530402,9645318219624476855
+e340e0da-0cf9-4fb2-d180-01e7fd4c0b53,4018716529,6221356869915313015
+8b5344cf-4577-8cc4-8372-a11c53e6307f,3632719843,17619893962723426734
+3a25b3a0-47fe-7014-0001-e8cd565cb11e,1851642336,3076927666451690488
+c9fba3f5-ac42-344f-8160-eee31658b0a8,2803967337,13330992332440639923
+ad841d99-999c-3b93-18d3-91ae32ba2d81,3955158466,13100546301700843155
+db58b88d-c068-ee24-09f3-657d62860ffa,3747485611,7588661003115070948
+bda4d134-0378-bd3a-78b2-00220b07e4a6,1176057506,6764328593030262327
+1b132354-05c3-1e97-6e55-4a88c13f7ace,2662151975,18019278234875354329
+6227b7b2-d864-4b59-3da8-c854858c3d32,775996738,15561620191236692748
+7b1f893c-554d-3ce5-2760-3710ffb20fe5,3021761822,6741408973752928741
+f1e1d72b-dc84-32a7-8cfe-93d795a4209a,3652235792,17944438608778811455
+b6fd6553-c305-5c2a-2dd0-e90c3a3817a0,367177443,16618822621575461756
+781feef9-3020-bcb8-6d65-70316e28809b,3833014225,18137608980837475320
+a5ef4a35-4528-c48c-0e63-9932207ba061,1419276039,17335179073506133080
+603f8451-6fe7-1c81-1b09-965e451fbdb7,3366343941,17287989439436523818
+bb3b69a7-72fc-5dde-849b-384c8ed0863b,1601053746,16923856202527258953
+3a2cb2a8-26ae-8738-967e-41ee2c67e8b9,3733024700,9196254388477347914
+50bac546-4c5b-3df3-b579-09f84fe695b1,894882963,17192762747196335235
+39ebf1a4-ae1b-38e0-1040-038b1b92cde5,1322531634,9168107136966807677
+56d5aedf-966c-517e-8593-31f7e6ecacf4,1492294633,10266758326062540938
+4ffe4432-8950-bb27-3085-12ed26ba83e6,862214529,12791592876658030747
+aa6a14f6-17c5-eb34-12f1-7102f709237c,4051274280,3067741607139296386
+07c54308-ea0e-2c9c-2a16-8fd72c060f6a,2303877264,3116399909489025455
+65d983ac-61bc-eae9-8107-4bf75c2998f3,3426114555,15222812310255669018
+2053575d-20c8-8a99-37bd-2801e958bf9d,3177400089,11537361392748886300
+878cd3c2-0e58-1ac3-1314-e30e8cb41243,1398611925,6621974025735590957
+099cf9bd-1cf7-363e-7719-5b47e9b28b45,2412174068,1148153072490670693
+4b8bb774-408e-dcbf-6331-1e4fe3a9d533,4124665847,8387566296524676456
+74d51eb5-841c-bd8a-1d10-7370733fab84,813735435,12572904674640508828
+312c57a3-acd8-8e87-95b6-d9c9e307188a,1046481525,18143868126635051949
+0bfe1430-7589-8852-7e50-9eaf8b34905f,3854038241,13876698212071360403
+0c281a97-3ac1-ff1c-75da-b30bf42e3413,2567500553,4348280318945935667
+b44f342f-79c8-5578-84cc-b0a1e8d06210,897841613,5040855570332902987
+23368376-1429-c6e7-5f06-ae6c8cea0afc,843114630,2310888843916146398
+c2bca593-6d60-58d9-cfe7-b19f5b82a100,470942797,16259322958819903741
+1c85ea55-39ac-b396-c6fa-9eac03abca19,3056549650,3834319080196539592
+5022f315-8b74-a29e-c2ad-9963d98004fa,1331324794,16730497740765273101
+9eaedfc6-4652-7036-63a8-1bc292c32a8d,787106423,5747265517976129797
+7222543e-da08-9f85-58a2-64682a7beb10,2628551168,16437912556930393052
+62c258db-7be8-2a33-7de0-f4dc2f1566c3,565449691,3310559062996706732
+46cce330-4e7d-ad73-367d-aca249237b08,2376798780,5439304834832292795
+acb73e47-97a1-c1ab-fcf0-5772fe77df30,3064057897,1538205843029738733
+05f22654-a0d1-a3f0-0325-9c4a26f34652,322369479,4169211753430332490
+15759b48-3003-98cd-10a6-1cbc20ec8026,3404514726,16518897762023420452
+8f141083-687c-423d-e6ff-c412bcc1d753,3558307599,10750724629276877935
+d108e00f-c05c-2576-99cd-639bd9e2ea17,2667332802,2551649924454906985
+0bdeb1a1-2369-5cfa-cd9b-0ae47cffc356,1083304593,6713197759679867827
+c2c2c10a-4f34-e381-7b03-da0d312e9c2b,4251538174,11055233906785085223
+e9eb7244-f875-4c93-f61f-aaefae9e7f89,1022949313,4455837457246579763
+213ba00a-1de7-64d7-6ec5-3d93943073c6,91970957,3666852214184543335
+ca554a0b-294c-69dc-bb06-ea2ff184454c,1229253014,14641626716063662563
+b268fcf5-8493-594c-3728-1ff19711d84e,1002613246,4617333040724388242
+ed04d452-9e41-fc99-2d70-8f7b7d650df1,2599586288,13976382290170546763
+ea540e64-2308-989c-3dea-9cb56756d130,404701513,8630375707024729358
+764efb9d-d71f-e8b5-7c8a-402d9d5ae5e6,3867487747,7055002383442451144
+2b16251b-a21d-18cc-1e3b-549cd71e423d,40798739,17918636893904001858
+4d272ff5-f7c6-1e8e-fc48-9825c130647a,643709495,10221506242266732778
+68adf016-95f8-c8d7-f794-e89d30e84e14,1712717882,16847600072868908540
+328c104d-2198-1327-6e64-349b6ca8cc36,1266217960,3681814374681220529
+6f015bf4-3ebc-9164-4e68-4c82fbdddcd6,3267500896,2823535254436595522
+daed6b09-693e-70cd-56b7-7fec3dc55eaf,103418902,10444173776952372922
+5f7e2f21-8332-1324-d8e7-2bc26a96e4d9,2980006905,11134605295057447073
+78d19fa2-1ebd-19e1-fcb7-f237eab69c17,941799446,14978189106328589822
+02d11fde-3438-f7eb-3e91-537e8852662c,2425154402,10704826273108899788
+e4dea7e6-2859-0fed-a834-10e3d98ca455,3213773078,16873854588870187883
+63fb8ba5-8135-e9d8-a40f-e321dbe296fa,895573499,3655295679672143974
+501d94fc-effb-67f6-8e51-9b8a38039c36,2269947299,9668976074219919851
+cd936d13-04a7-b34f-c33f-3bed991b3102,2698722632,1813314933722089033
+7a0df07e-79d0-8689-b64a-7611d7582222,2304482598,10525634006716717867
+7351ed8e-9f71-7bef-5a1c-ecc26d98bab0,2066609879,14402447578624929470
+523245b6-3898-9aaa-3cf2-865f52dcb31d,1466350712,2168547983178650363
+5c32d51a-6669-bd17-f7c0-ec7e77516065,4120019566,10451555539159132048
+447f0729-f06e-bacf-c221-0875c0479998,4052469475,9806528243107810595
+d5edffae-1bca-a7aa-e21e-cb9e45862e84,4170178516,2194192144756967310
+4a2926f4-4c58-976b-41ec-4908fbdd99a4,2449355568,2146486207612461611
+cfa391f2-3545-1072-84b5-b679a1011a7e,3766493276,1141546002061070792
+25f7b5f6-cfc8-6567-4838-bcbde205d526,320534762,14729753572153507229
+61007b30-3ff4-65d0-fc4b-98b44226fc9c,3100579072,5250931589824143117
+51064fd0-6e41-345c-ca92-25e3a4e5daa4,4042730168,5326828930114534712
+1ef6e91a-2626-00ed-4023-b6ca97d45b9f,335106282,1281428634138264923
+cbd367e8-f409-8304-59e9-2c3174bef509,1734955946,12850146186995443571
+36e8d419-666b-acdc-4a50-2766706722aa,4246570537,11395535957862154541
+c42c4c90-4aa6-98a6-303e-7c8a28515a3d,1455030517,13673051161454909653
+924b7e10-b03e-c7dd-bc15-0a9d214ecd14,1250818497,17106473141514017911
+67781d2c-1da3-445b-257d-aa76f5e4f67c,3177445468,8533980047974102549
+cbfda2dc-86cb-772f-c81b-b8ad78b8e136,3279934642,1768860141798524071
+72bd7ad8-637b-405f-eb5f-478d60d33d74,4088807816,11358093119126038739
+d721bcf6-b203-1394-c2e0-da2fbb3c27a6,4112130545,5148757322432642229
+e9abc04c-ad8c-5349-41cc-901143d0307f,1695006011,8332771358063499437
+08fbc3e7-2f98-6ae8-90a2-26f04f90bd71,179869433,8578909687640070216
+448d57ba-0eb8-3ba4-0f8c-0666ec640656,3214139800,13136807878182970147
+83b5c2e6-856b-5d27-c87f-9ef018f37347,2286158053,6939186687308176743
+646102d9-cec8-8167-6226-c2833ed7f735,2498546451,10223135871400886396
+4459774b-201e-423e-7efe-2fc8a3bb4243,1446085798,10609939141836705558
+1010ced5-d2a4-c8b0-276c-0a0d6ba00310,1738018408,17160037589434098068
+ee8f9f9d-874e-f693-1678-83fdbf88c39b,1969423155,4984834228335772982
+bc91ff20-73fc-a2f2-7992-a07abe1b2f3f,3631536313,2527319785342209048
+437ea011-a915-834d-67d3-56c242f504d8,112879300,8520348780934269930
+6253e4f2-1a16-f982-6ea4-71b6b08d98b0,3604853663,8282045209009834077
+338c6695-35db-f46a-244d-104f5c3f3be7,892483922,4253242169551082114
+9e54fd39-8a35-cb41-7c40-8310d9274c16,2897851719,266193741470552281
+7bf0081e-50da-ecfd-34e7-4de915a49ac4,392124987,4268361796758914218
+aa5c4d79-5b09-495c-f53c-40b6bdfe3b0d,3515336854,8261424883471966382
+c2698423-c86c-3c82-9e8b-8f3573f75b6d,3584460250,17488301584926025636
+21c21578-37fb-d381-e9be-b18de4975aad,800888824,7163062335443428810
+008cc0a5-a3ae-ebfa-4e3a-53ff80de9037,824542245,9617154033286520125
+aeb8a78e-3518-b835-6166-84a560e2d29b,607530247,14012027586962438368
+1d4d88f5-c1e5-d436-7e5b-03439e7d30de,1458971877,14439123908872970650
+e4c18d4f-0a03-3551-77fd-629c834e6e60,790830876,12891088659878496805
+6e072d07-d7b3-834d-4819-338d18e89650,3868217359,2760578970254628611
+ad335369-f7d4-5204-73f8-bb9bc84250ea,3835709252,7833045505202962894
+bd044f80-a160-c54f-d2b0-31b757adf727,3975097682,13028870210852783768
+f936be7f-198b-7f1d-6926-a3be9dd4c482,1806777905,448822718951316137
+56e5cc0b-192d-205b-b85b-065fb7573bd5,4267028438,2155385144473553849
+7ca54f00-ca87-3097-57ff-2920f42a600a,1482243951,4998249623018879807
+e9ab0c9c-9e0a-2a76-7218-49f75d50ce34,236233351,17152311499319410414
+9b590ff1-080b-1d0b-9aa8-a45f4ad9914e,1752105731,12168248968446917046
+7e4d90db-3fbd-80bf-8d3b-9c80a392d2c7,2130158422,7257105290007273186
+1684fd2f-1545-8172-c9ca-3f0955caaad9,2026433847,320912252788017599
+97099e3f-904d-f314-703d-9988db56c7fa,2374983870,4102859755646128043
+b0aba13a-1840-2143-410d-bff73c49faaa,2734333822,897753892670918167
+6a2835a7-66b1-4518-5ad2-003b4870df3d,2264303632,11382749964800544443
+d6505670-aedc-413b-9519-d9b3aa709564,385967339,16665373261566762843
+52e47814-0d53-0cb5-69b5-5c694abc2efa,2581920112,2642232522178311099
+39f77ad0-05a9-2a47-94e1-016fede923dd,1423788232,14193490622956256229
+9f975ec7-0f02-2674-25e6-98484f0969d3,242812397,16115731554588808404
+289c4b4d-14ce-9773-5045-b94665703876,2548766134,17182864345681162183
+7de1f58e-edbc-d748-28df-1f284ddc3f3d,769024874,17261841562752251261
+262b7802-f1c7-2717-a399-2941323659e8,1223618541,427911492385538762
+12d38017-2c3b-30d5-c19f-a36f79023a60,2110918197,15148132739007883162
+96f7f263-0d8f-9df5-a7af-dc495742f271,3062111577,8418020466422758979
+e56e31a5-b9b5-e571-f4be-1a37f0539a69,3665796197,6110575454026570232
+079ade30-f42c-2c0e-6371-30561506a9d0,2787936968,3416660077555215822
+238a91a5-62fb-64d3-49bd-f14d6606a7b4,1539595810,10183483786216941960
+7237e9de-2288-8dd8-87b2-aee299581d98,2140722360,14940076080494661191
+c66f8f17-4986-ab82-ace4-a6ed8866f2e6,3525817608,18144556840850308567
+57eb405d-0eb7-fe60-38cd-f0ed47a0ee97,907189708,18231118918170179714
+8b66b73d-d739-b8f3-8271-96a46871a67b,1445927204,16078102812557861777
+92348891-801a-f976-113c-cad8f8b2540c,915500370,3921561675585459818
+e9cbbd47-a253-7496-ea0f-13b2ae0c1a50,770466656,2372359086306608946
+9175198e-bb15-eaad-0f49-aee1cb12a89d,1280910850,9377682814195699783
+5e129816-3645-b7fe-9a3a-bc34874810d3,1735042494,5902191605950260703
+a4fba28d-f4e4-0127-19be-5c10d4b5694f,1813067591,14242040879255750199
+78c377b0-d602-bd94-4170-4860899071a9,2425327427,9042215978842088646
+fed57eb1-63ce-5e25-a02a-06db7b5d709b,1398235692,7875090049989853638
+d0634d52-fe8a-1982-8375-6ff6b18870b1,3211982742,9833007232785545381
+cb58e7ac-f01c-0bca-0d51-545ac01e8680,2795438934,9749330499899749252
+749ca02e-46c0-836d-16f7-165bde14970e,2925986929,7840477359826751386
+447c8a2e-a7c3-21f9-d0a6-624859222654,2227126188,14995099557850445152
+404f347b-d33f-daea-3585-4b098b93af8c,2495709777,11376110239845464191
+3a15cd8c-0b21-c58e-393f-11b22531a607,1414225655,6347425084669819590
+7c3084f9-324d-e503-876f-1336bc3fa47c,4043582604,12649824557392868167
+b183c62e-a22f-90c1-f28f-eab0bb2ea4f7,2317126361,2425073543855491439
+6adbfd18-263c-e78a-c2bd-cfbcb20dbead,1583242110,18095657681077731502
+19c35cad-15c8-a939-ebac-eefd194350e1,3164731383,16991379003742202297
+624cb731-35d6-bd98-445d-d5fa6e4321f3,2608137084,2571730309522507205
+7f1ae717-b6dd-dcce-f6a5-32a2e8cf5dc3,4287109567,4555123535673645430
+9f093305-d325-7067-50cf-5a22950f9a8a,2557293330,12798381071705970257
+600f449b-aea9-ef77-9fde-8e6b08473fa6,322018987,565135764514212299
+4bf28ab6-e0ae-462d-cda9-636617b27195,3913246334,5069878109040328693
+6f3741f3-9faf-b95d-0a10-43cd35d69efc,109683555,16850237301170494246
+20aff5ab-a550-236e-36af-aed0af430bff,1881290262,14388039916304647127
+07bd223f-c0d9-6596-3e64-56b46bcb95eb,3193360971,14220528536182273517
+e24edadf-ced8-b066-5e63-26f43bc4a721,877983784,12040549015254703020
+6879c76e-f2c4-1687-27dc-e93e35bc7263,1811727767,12903908671943989398
+f8bf4ec7-7043-21cd-49bf-1ffe6897553d,3614671559,3535386161826110348
+a65e9258-d414-2736-764a-0961ed2e4794,2972652750,8835946712993940674
+ab0b50cd-2da0-08a2-f2c0-be42627b384a,3336879952,7085569084287663222
+b07528ed-107e-1032-9df8-d4b4afb82dac,646231899,14231931945489775372
+d011c758-41b7-5dce-f2e3-c9a89dd1cbfb,2804392304,17274643305821604306
+056319bf-dbc6-2a2f-1917-f25c62cc69fc,1311019415,11295226317381370006
+03305799-4274-a0eb-9437-cee6e312e0e9,1405611509,4794658619940659355
+07768347-12e3-9209-6844-22bc34bf4076,2178733343,13194172929563482293
+89b63548-51ff-8f49-bb6c-bbb442c2c43c,1492856718,5667567897659426345
+b2f2cce1-fb68-c5e8-dcdf-ac3dcdfdaf31,3495005192,8456276459902746748
+dbcb5150-1086-857d-79cc-57211c73dc2e,4290913255,17441160755959123893
+c3424485-3a18-8f97-505f-ae79feb4f4c8,2271369207,18358885701439541349
+56bbcbbc-f1d8-f3d0-d4ec-c5613708edcf,3047707852,652527801161347849
+5eecea89-fb3a-5e36-e7bc-c3cf607998af,1816408746,4784841026602621989
+a49c815a-a393-d918-7873-3ab49595ec4e,4053173448,1971092759769886565
+afd6c262-1406-8b92-aafa-9975beeb8a41,740878190,9318189064676422710
+b431c7d7-831b-ea2e-a858-2744d335031d,1468822845,8868598995792736952
+a4674c40-e35d-60a9-fcf6-fe9bed20a0c8,482587669,14062061406625401524
+5e7a2350-78ee-2bc7-2483-73aa6a9b236a,2188133659,13970340788262254790
+f3c0b460-39b7-e5e9-e631-8806fa2a282d,1782032350,3505715463444328051
+c717ed13-ddf2-82df-731d-185ed7f7ba88,1971426472,5223516254110019613
+c6c8c643-7e3f-e9ad-e2d9-9e957fa006ec,2182910681,16452791721713287840
+bc2d734f-092a-d412-2a12-8b935f056e68,85508253,1875632192606777957
+a59be39a-0eca-84d0-5e6e-8a642c20a837,3279369691,5914260794584444422
+553c463a-9d3a-0100-bde9-95edeae05818,1473194076,4655411759622911761
+9c9c3534-eb51-10a2-5cad-2570f6e4fd09,1961229506,11361666032508044772
+a250c1d1-ac27-fbdf-7617-99dbac411d4b,4218772423,3020682340799711508
+a9611914-1e03-926e-4f83-acf25cfec0e3,1957466366,4480291336987966703
+44168859-ae76-d758-274f-00dc257960c6,377555870,1659939067411773177
+96605ce3-761f-f922-1b5b-e6cbdbeb57f3,1617228103,4774196637491129033
+0d83a497-e6c4-0884-733b-b03da7302797,2158840068,8561683875140742065
+fc43a3f2-cc9d-9713-d1fa-8059a1510514,2627820183,12440921236316617682
+b5f46a90-ecd8-4a49-5d4b-4726ce73c9ed,1372511934,8399825360045247451
+1f75f2bf-8d20-8d68-e6a4-c79041bcf31f,489075906,7677535052280400408
+732d5ad5-2610-f46b-a944-19fd36dab351,3734691717,3348703256071403578
+9d283fd8-91af-2508-4dac-7115bbbb7294,1777626095,7617615942774982089
+c16ed7ff-176f-21d3-a32c-e65222de3334,502235062,14291355663636392228
+ebac86d0-12b0-4232-8344-f96a67703dd5,4102518537,8033965386427964824
+a85f5f77-2637-8988-d6d1-36a83a1e7469,4073825835,974039692329505386
+9f421abf-a822-d9b3-eb7c-12ae0e8dc0c0,3989853547,10607359749917351177
+9b6c62ff-fe24-25ec-82de-3e7b40457832,2934638340,5144133734559762547
+959ccf01-6e58-f40f-41f9-3662fa6beb3d,4086854662,8941330903927905643
+52767021-ce90-b368-bf4d-40fc2a4fe3e1,3150815333,9765106433744196890
+fe2a058a-0e91-8be8-61e4-5bd6f0240995,3201530687,3095229737634624472
+e4afd71a-5b75-2ee7-6dcd-ea584e0f1e09,1325682118,8542486724549451260
+4aa3cdf8-ed2a-0956-573a-dbeab26f15e8,648859687,16833083669751165998
+85d04fde-2c4a-d09a-4772-6f729cc89b90,2054734148,5872493582767982310
+a851b771-442a-a91b-b2bc-12ed591b6798,639760081,14011299654821938333
+8cce8b17-9b02-6447-f933-c41f3447ab3f,4198109473,4457556290106682949
+4d7aeb6c-2cbb-b179-3b9a-e564ccec7143,3109630507,676112364747962365
+02f706dd-3a10-96d6-6ff7-52fd7f0e7dc5,995867187,2749270593561955543
+8417c14a-dde2-dee6-bd32-cae21826f639,3478698791,5978043561855964392
+959057cd-9ff4-5188-4dfe-fe4d2c084d92,132733748,2911962023858854613
+25cb014c-78e5-dbc2-b30f-8450e483e868,2180437502,8910019422459116866
+40aa9a7a-59a0-955d-4837-a12bcd0ed4c4,3061335928,17165066398691747824
+cd1ae9c7-1e8c-1f71-e913-56203093604e,629582252,11978269797427652828
+d2b18a40-3e05-89d1-da71-26f6283a5661,1524344638,4726425758979873026
+e430ca3b-3718-37bc-45ab-4de358ad5b0a,2942572093,10552359181235763464
+446fa309-b9c5-f8bb-0d50-a11c9f12f2c0,1215671392,3727361546588527560
+0ce39607-accc-efca-4574-4e2b1f685c9e,2690817850,18254876689618212173
+32fe67e8-4aeb-ba37-9b40-f773fd747077,457586134,15594831695482882412
+ad56ed74-18ff-f7dc-4fd9-47d4532f12dc,3456755370,8172642154888671434
+cd0b559b-6e81-4dcf-885a-bab5f26a140c,586819861,12654248208036925603
+641d3200-5792-d8d9-a4ca-699bc842f140,4187728837,2869298624716546386
+2edc798a-ed80-06b8-982e-ecab2df8c703,3040248318,4583669725140443669
+f3006d79-60e1-0e31-e87c-3d5b6ab3db66,2308856328,2988266463975808954
+fc250761-9438-1fe8-623b-fe0e4631b1c2,2605733524,7691079032742461415
+f3407e8d-6ccc-c4ba-c985-e02365310035,2558994931,13317716260754486338
+d15b3930-027f-1810-bbbb-edce86d76ef9,751603967,16032795108519375272
+d0b5bf73-c175-6c3f-8659-4662180b2f33,2185786508,12537209475724694373
+bb1094fc-2f6f-a315-92e5-e1a3839f5b81,522659956,10861622423643688634
+21ae0efb-ecd9-b9e7-d215-64a4e4c222a2,4059625928,3140928294216594921
+596f1444-9440-3b98-8b70-907dceb4d7b5,342630651,1667759899409142521
+e15b93d5-5eec-bb45-83d9-6c2fcd7ac2fd,2691724140,7463297494909211795
+525d92bc-dfd7-2429-59ad-d1957c1b7a41,2042265683,2149827494169764499
+593719f0-9438-e977-e01b-ae7101314d53,1792915592,5914022215692980091
+591e4707-e20e-9734-2a2a-008fec342e4d,1975627572,5598102565013538188
+9e7c52d1-2a36-cc25-916c-70f9d2bc7066,1971899782,10556923215768030737
+53c58187-f69c-1d30-582d-f43ad3c717da,3925453874,7114425072230269536
+9e35c139-8eed-ef42-5ee4-b012d36c60d2,3996371082,32902721055781108
+4d66f10e-0b38-3dd7-0d35-53cc036b7b7c,2526206338,488363689591465733
+657948e1-b9a3-66d1-2042-040cd853da3e,1499201458,17157350870229644311
+b45b6548-0778-b59a-14f8-88e8f0f884a1,1417476269,10668686535296811906
+748457d6-fe30-17b5-aefd-381a4d0b6b73,587078401,1222256121310329332
+3b80f837-0b05-bac0-758b-24e34b8c041a,4173152148,940375213231387146
+6cf427f6-e114-6918-1764-3539c2fe0187,2281872143,2561191296858250631
+ae3f525d-c6b8-b006-fc07-bd203d4beff8,631294072,11849831534498945992
+1a479685-2525-943b-21d6-08bade735536,1088505285,6158215270831174547
+8507b636-684c-3914-108f-5e6a3cedd861,3526995850,7582061010107794242
+76e3dc5f-8a27-e9fc-85b3-6f90933509f9,3890267384,15813332152031627549
+e15a51b9-29b5-5438-3f2b-df2dae1d6938,3485204554,12925960225902398578
+4ce58aca-1a76-a941-1d19-53074f687d3c,3572839264,5138658193000909439
+d4a625d2-9988-1611-befd-cae59880cd61,1046853067,13781098593801286507
+a303891b-b5be-ace6-a0c8-5ef2876becfd,2521069352,11017491688530637489
+cd1497b0-7a3f-da7c-2b81-92a67147c217,1890811358,1419660574756523430
+12f03b89-c903-06cf-2e3d-cc49c5cc68a8,486361234,17540300996660560922
+5fc66ea8-24b2-6bca-7cc4-528efc297ef8,186758212,13010578847506940988
+e86cfcf9-8f74-3415-220e-da094c8372d6,911308114,12333216773072962168
+399475b7-70ff-6d15-d0ff-db95449cb776,1807730148,9389882917847716995
+8edf08b3-2713-efbb-7e18-b9d0b0a9a169,42935925,912461156090582869
+8db72d6d-fae0-8e46-ff34-1ed106bfdc70,2531397172,14931181056205881615
+4f5dc731-2c75-67af-bc06-25cdccde754b,3787541543,10313632175120138086
+68f3baaf-530c-a6f0-55f6-3c362f01fb25,3667137983,9754550426801519219
+9d87a2a0-da6f-7adf-e18d-ddf38536511c,1362628111,10774026838080954990
+600ccee9-45cf-36a3-e818-6e17389dbe7e,2690699796,18423047283161258646
+eeb97f46-9f15-86fa-d28d-58cf6ef97365,2728042800,245575703049403943
+8d8fa65d-e59a-fecd-94d6-5d124bbf6351,1499205441,9916938284376136048
+1970d9a8-15cc-3cba-f8c8-b6ca952b59aa,3816022498,15007688774968459186
+7cfb79d7-797e-d12d-95ac-eb6872737ecc,2799057076,10186819075213259610
+2751f7ef-4df9-71c3-f4ef-4ad7cc150baf,3988297837,16820554466854024723
+6cd531ba-2169-1268-9ec6-647248dea01d,4095929525,103969513438199837
+b0757fd9-dfd5-abee-41b0-ce3fe6a2824c,1422959341,2073375360782205345
+8fc07c3b-9afa-9701-d43b-771bc1fe70f1,2147689946,10562265308738895689
+659687b8-50de-c73b-7dc4-7f08205b920f,1801105146,2325839549206252138
+c7d21221-5678-d038-4ae1-80552049546c,4081819034,10671038835380386709
+4b10b721-193a-9233-3a4e-e8d0dda3c7fb,498541093,18089563375735324002
+6280c502-0308-7ebf-431e-3db0b1eb085e,3432321606,7273380063576784783
+3cd8aed7-7e21-37fe-ef68-321b0e26f89b,3113993870,9383966125682489941
+f4ce67f3-2bc9-b5ce-822a-7f1d74124749,533896355,7040201203119968937
+e1cc083d-5351-ea41-9112-d7b0b8c62669,3914869375,903416546302845267
+9ca7b867-6133-2b46-7dbb-d52d86b2ab25,382712850,5417026666788849938
+d7c04516-b0ab-65e5-1e52-5e56125f4e81,878313452,15530501594638987361
+4d037187-d937-a957-fa2e-295e77064e15,1829551615,14709136117098860605
+062a1681-a8b9-ceb5-5490-34f8b42604ff,665938245,1914963944023947176
+337c70c4-5488-9de4-af25-51070b603848,1513917652,2713719166873504410
+4451ddf4-9a58-99da-83d2-3d7594892ffd,2570829724,1720584325090496328
+fd045c87-e27e-4ba4-5433-aad884b9354d,937499298,12750921274765710235
+7c0cb337-e77a-6a2a-e4b1-6d1d0bafc9f3,4011631042,16749574314347895972
+d697f789-4d15-ad9f-1254-5fcb4d11a087,2148054810,7708247911027272127
+cf07c819-760a-ba5c-67e5-813c98bf21d2,3684924757,11915609952136331118
+90fd7596-ac2a-7014-cca0-b045c54ccd54,3914495817,1073712316007372753
+8d2169b9-8d21-d19c-4ada-40d022f6a728,302229680,6505373360273489204
+b5fc8eb9-1107-da28-04ba-ba8d25ae77a9,3287873412,9951658916712021943
+e7466321-c42b-fb6a-6525-49a53825b8a5,3512326856,10286578976783986432
+22bc0f63-8642-49f7-129b-89ca2c06221d,1754290521,13564241514946514286
+45e76cfa-10f0-8b21-6236-113e6a4316f2,1718390182,723630730925444502
+7a95f729-ec2b-7ff3-8998-bdd742840029,2353613652,3789052541732922662
+309fd6b5-82d6-e2f1-1f8a-f7625b409343,3221212974,16575731192983573584
+c88986c8-894f-ca3d-1eb2-72514a06b474,613148986,14743425437715452866
+c0200456-6123-485f-df4e-b5200286f87c,4170709245,1263291440476891761
+31a86d6e-b6ce-73d4-ca80-2821b9c2f464,1225203285,4416419307144077583
+10055a1a-a031-56b5-6d25-9392e08ff3cc,42720704,6185532803028561505
+6b4274ef-852d-3ce7-49ce-7aa73f75a443,116375545,2918914077627516396
+a1bdce40-46bd-b4ff-693c-fc3ab719354f,4004923422,10275378024098663469
+7a7c1b98-e773-faa0-6bfb-54d4dd547504,3071344076,5295452254243738336
+1f29e7d2-e82b-f440-049a-f1339b094093,4085724986,14608290714497013716
+8903b4d2-a16a-424b-7e95-2734d61402fe,3102018372,7501006454959359739
+948ea069-5e45-79f4-344d-bf1759863e11,1754998793,16818049563922762349
+ed712824-2288-d1c1-eade-7890637e95dc,1169561570,11666623217222353702
+93084c36-a2b6-98c3-e12b-aad3c25f0f68,2430933837,10663940867306020727
+9f33060d-6cff-9589-5bde-af60799e3e12,3283148364,16849164027752731154
+78f84bae-cbe6-4527-f372-497f01f1f927,1130430253,14782622851898942828
+1e0e5d73-9c03-20df-7307-0ea406df1494,3780483635,8643865683269565789
+8a78d5d1-4510-0b87-6810-c45c57b27b88,3144986748,3561164556994335341
+75adb855-fb04-a683-0cdc-03b65a707acf,901120167,1113740252278715578
+7a71fd8f-5746-4205-bbb1-fc15d0dbcff6,3980040580,13616881062858912003
+d3b759b5-261b-49d8-d317-d45ebe6e1f3a,1196580306,17448000140829061135
+a645c271-dd7e-5df3-7f49-2c8a0454eb73,1117655567,131527793083182901
+b88a2835-2257-8d87-3038-c62ceac3ce0d,1793113297,1749747925848391615
+d995fa31-e3b1-4170-d5bd-6eb4216c68b2,3428325215,12898205266424003105
+998b8d02-2390-7e8e-83b5-37d123f0c06a,3425585238,1445753511941059603
+63289c63-1065-3ef5-6069-bf894a721fb6,2548577506,2269797700599271705
+ae54f5e9-0633-8282-26b2-908255044068,747843167,14232091396895188700
+e0aed104-b7ee-0bde-bdf9-24731fa0a287,3638177605,1048957719641224979
+80941ffb-2fa1-d5cb-9174-5bb85ded7437,1883513033,2955616145556420768
+beb32dae-630f-8782-a65a-1d8737eb4d5f,3844871579,17775028643707380387
+d1c5ea78-8dbd-b445-2000-1929cff21a0a,1138439041,15768914165316581371
+319afb1b-c8f8-aabe-01c1-e68c370ff72e,981444235,6306871055413839702
+47b0cae2-a83c-68f2-2083-c0a613e273fa,4195921877,6671467964948629689
+bb18822a-e701-a67e-1f23-f9e7f5d1b9c3,3292809637,7869259348614456304
+f0faf859-c6b7-7d5f-3d2e-a9e68b236c92,3889536494,2520302791422872500
+477b99fe-992f-d218-739d-b3b6cc4c6392,2170232852,14892138520215127311
+9da7f603-689a-5157-dda3-f7f33b287fdd,766144938,5797898044079925234
+8a55bb9f-0077-7404-dc78-e3157490ede8,65669973,6416506052488078192
+8cb5dd66-3782-143d-e268-c341524535ec,2802541066,11644905164063009905
+5f4add88-5621-98fe-5bf5-5ec3aefb89d4,2678913451,6686968284499343791
+e07de433-d994-ae3a-9d12-c3a8407c0310,3770405314,5429015950657422945
+4b993fcf-26c3-7d37-0138-53e1ba9d8793,1260217406,4059725363443317087
+bc045c52-fc80-0e76-636c-3c39501cfe36,1103418378,14340533853989569875
+2677c8cd-b5b4-b45e-3875-b68b4b72216d,471899469,2256349737471823197
+4ff82e5f-7e3a-f1d0-7771-3356ad5db5e4,1198947593,4467457311159760235
+a439c8a7-826d-5604-15bc-2f20c86ec9d0,1724463863,10107178542415742850
+0f6e4945-835f-81a2-3366-a223b6b32443,2336453055,10037926411915724360
+f046ed0d-edf9-41b4-4c55-fac93edc71b4,3797729495,12075358545993269869
+68b52011-e3e6-4747-b86d-b4173774e003,924136089,16424759508629621972
+44818932-984b-5534-f969-b289ccb5f4fc,3270344310,14663173897880829973
+1f27263d-21c2-f625-ed08-59bf6b1c3de5,4153192448,17756012938148636455
+8bc53c15-cebd-b73e-9b1a-ce1542c62a73,3597092707,11412376537009567281
+492dc33d-69ca-b6b5-2f1d-5396d8e8206f,1615913838,290127371287252872
+425f19af-c022-bcc2-2e06-e126f3105637,3981594775,5424616427967555930
+9a3fd17c-a355-e662-cce9-dd2165803838,2418822628,4911345221945587134
+12106dff-1066-2afd-befc-99395fbc65bc,1849029086,17947597437912143740
+b22d5628-002c-e482-03ca-1e363a364645,2183917305,14604721649598888096
+4668b7da-857c-9e67-9e0d-a8ec5065f2b2,1699455337,15350170902769915388
+90deb6b8-7ecf-5938-c151-73d619616718,3869678251,15786554178007694378
+f147aabf-b598-736f-f207-e05b2950dbfc,3308824753,12449344322024561553
+b5b2ebda-8796-6643-7921-47b594457cac,2403618541,3273616321514381416
+231803ab-c44f-931b-f26a-df7101b88473,71188350,10169501390389843194
+e43ff463-16d3-a889-26b4-3d895ccf6417,481751098,487722395595930697
+f7f33239-1195-8c9c-d89d-e55bb0d08b76,852563200,2281511952752620209
+02dfcd24-1bba-32f1-cd34-a5004c5c62fa,3972818476,15307862190198321120
+fb13705c-1d72-53b9-8701-f02e45c84f4c,3679413792,6434960681961819053
+4d546492-d586-e491-a6f9-53a64c206cea,3481004291,610935593197073100
+99a991f7-0747-e292-9c9a-26495ee2eae4,2276905525,10694737684795026030
+a0839235-4a94-46c0-4b65-6d8f558a9f6f,2786746105,16699395025705441695
+0a170e5f-6b9e-f764-d34e-2d367b7c4adb,447910228,6508246360625206152
+9669a7fe-1158-1cbe-88bd-c10fa927a4b5,557370142,9599416009099454801
+7ecc7180-188b-7f02-6855-4f5b452f4bb9,1612515452,2733889058022325167
+2e7333ec-4a3c-2e1e-6723-6be3870e5a49,2841569375,8237561284790372606
+cd54fb35-a968-5cbf-6509-0e5b3a4631a8,1794544502,6081014902123973640
+f17f2701-e32e-e657-3a78-0afa2ce81dae,2610440115,14295444998556525330
+a3944405-1647-0997-b117-a127451ccf70,2560356585,4808447129316419403
+d19181ad-0842-6116-b18a-055e121916f5,2344914126,15235764088331534122
+db7761f8-7f12-ec0d-5038-3dfdadc61110,3663402974,6341629312859150157
+58d67061-f913-644e-a81a-5bf0661b93e3,1494770211,3705199335039660949
+20121157-88c9-3dba-0707-735917e5cffb,2062637771,6541794408766806287
+f3c752b0-2d16-d933-ceeb-04bbe515ed0f,2979588199,9620280840982374465
+fab23be1-77a2-ad6c-71d5-8a3fbe9a9f87,2953392178,5544655393208635994
+54e48f1b-da12-353b-67c6-1ec2d0088692,3590012452,1376668408327060292
+9c83c794-5f39-771e-a493-6fc2bc8c5768,3895509007,757929447977278658
+1458d8dd-60a3-f406-760c-4acc09b4d642,172775674,13973670249318270342
+61d729ad-b5b5-a780-dd1e-cae97a12799c,260954083,3643685071227821816
+7828c784-3d5c-be08-2325-6e4d8609ebee,828024993,12078843399040778774
+5097cdad-60db-758b-49cf-3177bb676e3b,2824827388,17593806852402965666
+4529eb8f-efac-ad23-5c37-df0cdb563c69,271867414,15497106319301731927
+75bb2a3a-4b2f-906b-cd00-035f39656878,3076336868,11773250136635577225
+82be6ccd-fb92-a479-a29a-0030dc41ade7,1721022574,17658616903084323991
+179383f9-cf08-e4f7-58a9-21ed43b573e4,1168747430,15808688019386733412
+bc2ec10c-7436-dbed-4936-687c8103ad36,2276109773,3950018955650932512
+802f77c4-3926-599d-24d6-75fcb9cf3fae,857907920,9171968250290948215
+03e17b25-b783-f39b-75ca-88c72740c5ca,323928726,1196961889539041975
+1dcbe631-dd7a-eb3c-2dfa-77e0dcf10711,3883330584,8171640703203603419
+db072a20-7c9e-3df5-fef2-84d19369591b,483482820,10638357412913282112
+71173a8d-7f02-eefd-bed1-aadfe47a357a,1400701796,446517091646286650
+2d29758f-51c8-fa1b-f5f9-659f8ab72308,660265372,4612906319889888662
+97582236-cd8b-3d22-d07d-3015cc9caf45,1947600925,3480983437999662859
+00703e67-f696-f57a-25e9-2830400b631c,3983086142,14178351917667973450
+61e3cca5-e323-f4a1-62f3-8208b7ac54dc,1705846158,11455084849211680053
+ae3ce0f2-da7a-4eab-56d8-ee8953b27084,330253407,10880068821403453738
+40b9c3db-a0d7-cf59-3df2-d277e7f75daa,130937511,4252913716520788443
+b85a2c7e-7265-e03f-b25c-d6e8cb79b83a,315336737,10921239030044391713
+f88e860a-077d-c1d4-e486-1b00aa291472,2259938146,16795624003312743849
+434e07e5-ce1e-6677-43a7-ecdb8bdff266,3739003435,14488076836762514260
+8fc46748-0d43-5955-cacd-a4f3b11362e7,3923522143,1231353175023356928
+c2114cfb-6e1c-8f31-7f83-301d5954b4b3,1650849680,2531270439786538697
+435e1c7a-a784-b6f8-d9de-16293fde8ff8,3476115794,784199154111783814
+243e337e-8562-759b-b355-114922f3086e,2691915801,8202905925184189243
+ba0dc554-86b3-459d-e773-10cdadbfb8f7,3529519904,14864615638612703896
+23a30e9f-4884-4375-bda8-f09c982fdf46,108670578,6364869546569715689
+12a7f7e9-55b5-aa30-a288-ae9b770cacfb,1730884497,17214083968103195140
+819491ef-ff32-b639-4e71-85430a49b98b,3511985568,10696749629946504152
+77b9826d-2359-62fe-677d-22404ccd521f,388576410,17801492563316567169
+8bef9d0d-6e9e-fb16-3b16-55af6bf65a33,2777262972,16240473846670601151
+9b786162-0108-de92-27e1-882d283c76a9,3824567620,11814481306637469473
+55e035a1-ea9f-7c34-8b14-ff866fa6fa26,2243734916,13202535220030477684
+196b1a8d-dca3-3687-9b47-4f4d6ab8fd33,2139645371,718542413853132655
+82c84c38-fe46-182d-63ee-60f2e3330e8f,3745623684,9287911764692982926
+7ae5b677-5a16-adbb-6992-d33ae9fb8c98,776440740,4607234866536187969
+a78d6c58-420b-bf63-89b9-1f68f759838e,1801279049,12251637782788739687
+8800d17e-a138-68db-32da-7ce636b0dad7,3699711908,2305534178048592255
+2eb998b5-e8f8-1651-36e1-af6d659a7e80,4042118564,10061206027275864030
+9075c2c7-9165-18c1-d31d-57738ed9ad8b,3831577987,13928498523251494378
+1b338def-087a-21df-d3f6-9d0a64bc4bd4,2843576021,14942666606569921817
+fb431d66-6b0c-bb14-e169-15a64b0fa881,3806037158,5831953761981920543
+d2b3d93f-bfaf-f44d-de48-2a58bac48171,1804918972,16325552594923923172
+6746e0c6-6c02-8af0-ba26-3291dbd6949d,4065825252,8636927236401457482
+b32bf646-5319-177f-010d-265a02e29722,3859488768,7845489361041355627
+1175d1ac-dc3a-498e-c1ec-31a61364fde3,3969283119,3687195103553142299
+9f77b224-5d5b-fa15-64df-15b8286fc781,2035385359,14443524007871541077
+45d10a24-905f-0727-eebc-0c251d9c89ed,3885616113,5782530264521997456
+c6323570-0999-385d-3eb3-f11614e1ad14,42868575,2813202391835350701
+9775c6a8-5f13-1a93-6e13-0acfad39bc24,807831484,13213549190648259994
+6ee18157-cdd6-bf91-9b85-6c92ed89b2ba,908956031,16445222715830656458
+da66c9bf-f7e8-d216-6fd8-64939f30eb8c,3223433764,9316258645498668384
+58d075ae-6d20-bb5e-9c42-0311b14114a4,1299239341,5733007305828775437
+a9f93193-3b80-30e4-fb8c-ba1c28204696,2077533870,11181332045326057962
+32b61d83-640f-1f01-e009-4430e953ef45,1435750755,16117582170087792184
+a1c33786-3ad8-e571-0580-3b3b30f2c8a9,3127373341,5800294220608071832
+e6a4bf3c-599b-a2a9-5d35-483ca13b88cc,3269851434,17370442369827958677
+863c1f85-c5c2-000d-f6ef-052f1b638939,1010119027,8050712608395789904
+0f35dd7f-917d-eedd-22b8-5bd998800d91,2737698912,7700539742659801987
+a8c341a0-3588-6c42-20b1-65dfb216d5e5,162061961,18160559587849179350
+16994333-6934-c05e-90b4-964442b36967,1923194281,6991040777791517464
+3afc9ccf-5897-ddef-3e77-7fed7b74661d,1996596726,16455657599745297886
+1fb2ccf3-98bd-a1c5-34ef-d864108de259,233593938,7818332268167133514
+2da5d48b-7c47-6358-3d57-5ce0bfa24207,342055293,12996602589392508112
+0042f0c0-cf09-d2fa-c751-aba6dfa2cf3b,975902257,18302747754912331437
+8413c57a-a9b5-2432-d5a0-3fd95f0346fb,934447943,171100937265398806
+bd8e9b23-871b-e57a-5abf-78d544d34a80,2244573850,7230136419520298650
+798712e1-5e25-5755-5f8e-077489439102,4154805677,1824896457482699237
+10c2d7e4-b000-d427-c190-dc4f6c1b51bc,1795340805,4969114238201671266
+bcc5de35-5902-46c5-b31a-49361e05af76,1237798862,10837327824019853540
+6e053376-451c-9200-3a22-563d230577dd,1962337855,6037462417279012132
+6793373b-3a6e-9c0a-ac3c-8da5c697cf42,1056240939,6045552625991299567
+70f6a351-f5e4-25b8-b335-4e23177b3568,3651395364,11100313135138265083
+910ab262-781c-bc5e-b105-b7555adbdbb3,2480259901,4108036218768466882
+a6d192c2-82ac-fb72-7a91-15af82031c37,72286122,1461479066633106762
+b687c51e-e8f8-24ad-2bb7-6024cb657d91,1587110672,2536978794248598517
+20ce095b-b8d2-5723-b5e4-785f31f5a0d6,2168967938,2607666562676345666
+e3a161f5-1e15-aa38-2057-a21bdb159320,1115868773,6902429103138063689
+c60ecc74-4b74-b6cb-5faa-597355817fe3,1084050586,8325411214391400079
+09e3825f-81f1-137e-fc30-c5fd509b0b0f,1907550007,5202046660550129895
+89a47f96-4efa-2028-7028-3e8e43f13b45,1208546201,17329952102382264538
+52efcd76-4c4e-b245-6816-10ed59e6de0c,2009620598,3236674321344308790
+47f4b1aa-e11a-e15f-c393-8b0fc3da07b4,1351832132,12903837152555086359
+155fb2e8-7f77-7d0a-6a4f-128b1a19fcdb,1523088359,2525679148106518836
+15640f92-a455-d8fc-d82a-ebaf75ef6fe7,946828734,8214311268064446256
+b9499b26-9975-b46a-7596-1b0a3e053415,3365279032,14020270421186289533
+db8c0007-d506-ae48-15f1-7f00f25c7b8c,15723188,2651800061880091372
+7ec527a8-b754-9adf-487c-7474f45f9488,1936740803,15893014331890395687
+9cb40c9f-7706-94dc-13e9-bbacb0f4eb99,1045475028,16537446458342370268
+3034969c-f238-fab8-94fa-5aabe339525b,2268399731,8949529542641201679
+d0c918b3-4b45-6365-d842-77c01f8fd529,2029646835,9935355621529247604
+46acb3d8-ba22-ed3c-ac2e-81741f27cd86,616430186,6204098502082839617
+748d8384-6bb3-a576-0111-7c6ab0516948,3921245487,7667944847713728482
+ba7f56bf-c4a9-b28c-0803-99c8df5b4c3f,4151675255,6845473078611684871
+047a57e3-aaee-6c20-4715-e3008739e224,1538631069,4836782213705905686
+6c034ddb-843d-1181-e858-2783f7c2ccc1,1378624328,12817175660750454082
+361cac21-b725-81c2-4692-adbacebe9744,4085828207,778866804099644148
+526051c2-2eeb-259e-d2a9-0f840b54f6bc,3500360063,12519416940029060107
+3af9b368-42dc-7f26-312e-534b4935894f,3075438728,13610669781892860685
+f0ba031b-1ae7-cd51-0ff1-03662f9f4f89,2130944689,1906377223690984348
+e4f1ff84-1819-8a15-4dc8-2139accc810f,1704773885,6156615218442017700
+fa967135-8b5a-9d4b-9b41-2e9c42eebf33,2687689366,6053433646129456863
+32285fb5-7449-5406-14ca-8fdb9b034d19,3108320381,7163774334512411334
+99c4181d-4249-5584-9bbe-20899294c339,2353482881,10032633039104884530
+1b086fb2-3fd3-4620-9556-64c203148583,570159440,9625433783804077681
+77b732c5-2326-0715-0706-26d5a7404ca5,2962473215,12076915665166590317
+037db067-a33b-7821-ac88-3ca79093dd9f,1941136431,3659906956333893167
+508317e1-6008-c2c4-cbdc-709ce5e2306f,134863326,18422090120143698863
+1be9f257-8a4a-b4f0-f3fa-a2c2b68a22e9,3832748356,963815215901531069
+36ea759e-3c96-c458-0b33-982abc460f2e,2460484365,4984384796333960867
+d9f1ca29-3198-1e3a-e585-26d064942006,3501973827,1768651923044889777
+fc7dd719-e2e2-a36c-83ba-61a36c2773ed,743192932,9822006746705945302
+f841eec1-2852-c6ce-577c-5ef8590e223d,2315304483,4862488497374180128
+78a7bef3-c46d-a1e1-862a-26bc8c1d8fdb,750887627,12005859488744193681
+3f1c0670-771f-362f-fb01-041c395028f5,1965264327,16912103610450748335
+d7b46dca-9ccb-1ca1-48f3-fd949b0c5d87,2598317142,4931258511840698854
+0074363d-ff36-90b1-073e-ff3c8ae4f54d,2645092755,10647637651132721393
+f833cb6d-3163-9ad9-efde-05916ad1469f,743336609,3085033865132883830
+5e5c53ec-db60-c222-f70c-a68e921410df,949253601,13522083899258648702
+545305c0-5429-1f82-d98d-adf90673243e,837247353,10512446779183927810
+8b0827a2-9a8c-d10f-7521-21d8599e3ea5,1100528143,9190258560369634048
+61c47eda-216b-755f-f462-1e31e346b93f,2894934511,14953689585672040032
+4e91ca36-297b-8cc4-0f33-20a325bf1dc5,3029046253,2385866044670576940
+498d0203-6d9d-7cd2-4942-f73b80dc5ae1,3723980540,4738776722781181453
+9d73fdbb-0fdb-1391-ca26-022e1e5e56d8,464870161,11327303314358923223
+870bc5d5-55c4-b908-9df3-2ea5cfca6f20,3265406896,2714420648275334909
+b595fe72-9217-9e4c-f46e-31150c7d5290,2373125666,5900570966347662654
+1edb1293-fa22-2d76-06c4-7a12c9300415,661894755,16338320199680387333
+8c67b0e7-b6fe-95a2-2c1b-9e29fde416ab,923530438,15693527040085813732
+730cb102-0036-2b3c-4088-805d13faae56,2594711910,12697369014411481741
+f7cf2bb6-7c4e-43f5-442c-d850a0abb854,2408281086,7913425857096317189
+314ae9ad-aef8-9ec4-6b9c-41acc59aeaef,542262328,1905169588749838627
+a14a97c0-8c5a-9c53-e4a4-342950516778,1860527001,611399448136258796
+65934ea6-6405-6cab-efe7-d73995eb3d94,500212989,1267872259102415931
+e752b44f-5cbf-2266-ab4b-61a6177509ec,875948946,6522145397717527545
+7400dccd-3426-b4cc-f162-58902fd5431a,3483723853,1439557872574168038
+1098d46f-a0e3-46e5-42c0-c15f0354f270,52590821,5665098151998952499
+54046f11-1402-5566-72f6-6c1eded4478b,2186753264,6157852286790316142
+635151c3-6146-17a9-8d68-765b353e2a1a,16754311,7949578601791439207
+fddf923e-536b-71b6-5b53-24f7efe82a69,2205566106,5763926884821876785
+bd64dfff-bdd0-d758-a496-6f9f56b76562,4139137421,4475988446927966437
+657e97d4-c19b-1631-e5e8-b299a3ba8552,139249337,8289069728980261454
+c49f6a73-9d1e-0e9d-6128-ce44c73af69a,3391827978,3389164021931071867
+33600acf-d583-d216-0de9-4147656560b5,2976981856,2291201684532195204
+21278dc2-b781-7f66-7f6c-e8d57c519442,174303085,11566876293601461516
+612541e4-d988-6a91-caee-a4ffaf1690f3,3997179763,3358643674630982229
+50c1a2ea-bfab-7ecb-f335-19db25178485,2619270844,1063142547839821993
+8b8be002-bd38-36d7-00dc-1be530d3c53a,1009045237,13878713376180147351
+b0378e95-2ef3-ccf1-f094-f29f2e41633a,1048650619,3341992951189646999
+ce1a3351-3e7f-2230-f15a-56cb9ad129cf,2164206541,5737891070341193088
+97116a8b-ff02-e427-2bcc-3bfb52eba270,2927717184,1193744279819137580
+a3fa9904-f9fd-83c4-3629-e3a54ad95a39,3878638383,10528616322003359522
+b6be58d9-228a-1d6b-4b2b-52c89c88395e,691766575,14517593097565087405
+dc80b606-a2bb-95ba-657c-0a820fa92acb,1950627990,11123878194382608299
+f78b2104-4372-a32e-e7e7-7a4cd6c6bb98,2575879484,9111170785733617290
+377d67e3-b9ea-56c9-7399-ddd900b0962c,3935325135,5530017449057771404
+9484c66e-8471-5ea3-d4e2-407033283797,2816816663,16801236868754755726
+ae9939e0-da85-304a-1c5c-7421d574476c,1051639013,16763159177981177979
+9f6d2794-a635-2d79-29e3-41c6d3f521d6,606205295,8136191225216325368
+8f18be63-d08b-e494-916c-27de6054b440,3546689108,9714095125217966076
+0db82280-60d0-3beb-57e9-6a647e7081d8,4042284225,6873463753192056943
+182e8ba9-2f63-e2d5-7f32-f2ab207f96ec,4062603925,7372115906454837150
+a44e98fe-7826-911d-d8e8-4c35bbade4f3,703366776,2528226799506195977
+29367717-78d8-1ad8-9f53-660a5bbbcb2b,1328732402,10441423592253540428
+faae74ee-a3f9-ce3a-13c1-f77a6882a375,3319456268,16268681762877334626
+0a3043cd-0c6a-46e8-37ee-94db30f56b55,1727754971,537258468075992731
+b710f950-9d67-e315-1c0f-94ddd7781a16,172809207,13128432249978046092
+d0d86f9b-d697-9606-9d32-c9f63cd8b978,2563893645,14711028047380004402
+1cbb96b8-4095-9d5d-d45f-9eca8fe825b4,2970051463,13907898304610970117
+9c456175-2296-aa95-22e7-98b2f792ea9a,2090395578,1895611708581854207
+605a6517-1ef6-e7c3-3db3-ab516e0ff891,555586385,5019627248918511958
+d6c83c76-9391-2d82-cfaa-9ad479427a0c,1757999865,7506991762159708516
+54ac36e9-6bf8-d61e-319a-e2368c4b498d,3607496504,10859036273665886709
+7be699f3-b6d7-e44d-ab4d-40d20079a081,2996522478,18028412834360277643
+0d919b03-aa50-e73d-9f14-de83b04d64cb,471383714,8478638347342987415
+7d927f16-4d00-e600-bb1c-c9583edce3d4,1542606374,13529093370600164978
+a19485b9-df72-0da6-95cd-a76851c90a32,579123351,16129875391859892248
+284ae966-02a7-10a9-eb37-84608976c280,1447426488,17794603927123467492
+8b374df2-ee31-bc0e-26f7-382af8b9b2f1,3045883116,11130302513597920458
+0f7d1e8c-ab39-f518-582e-f7763df5bd36,3935794799,7576012491683617487
+2bbb8447-84ed-8b37-e520-c8bbb3033179,3862247474,8923468953662910882
+3aadc0ea-0b33-4420-2810-a440608aeddf,2089021449,1100347774222824652
+ad618c91-6443-422b-d993-c7acbe78edf2,971350775,10390215788481367487
+fe60fe6f-ea3e-b663-c6ff-966d01792878,3350585771,1742345059384258635
+82db7879-cee9-9c31-0203-79d6c627b360,2201238966,2581528703812781965
+c3fed111-1aef-8a15-4707-10dfa1cf96c3,2115160348,13162476305286946533
+7c7461b3-4c08-fe5d-3ddf-1ddeba37e193,615628070,11973741685032533105
+6883b44e-f6bf-9a7d-9802-ad5289d99a7f,4184788627,1561673364341787738
+bab8c157-87d8-23a9-c371-5b4ac7c67461,3219200531,3863382866212773365
+650b772e-c8e2-3fb7-d2d4-cd78d905abe7,1620792775,9389986322696998042
+3fcd66ba-00e3-593b-9f68-3c77f06f37f9,4006606905,12461498089312907581
+fc4f19e6-923a-08cf-0aa6-83e31c4731a4,2570395057,2864486968954433570
+47d58ce7-f922-0a79-d45f-ca3943c2fcbb,3308442398,8397204400380208416
+aa24129f-2232-c975-8ac0-9f8cbafe331a,3591812555,3215994417299298564
+be4fa7df-89da-547d-ead9-7eeaf700717a,3832392115,14813285340629886554
+4aff105a-aee6-8e7e-7ed2-43b9acc41810,2745259469,12768025343822710825
+5f6edf57-9464-8544-aaac-b7ef8916d7ee,2656575357,462219902806386643
+38ef3a55-8ca3-8d09-e9da-78e36c5d1655,1779173601,12678193761501545701
+2af0a022-81cc-c669-fcf7-45e00b3cc240,2056137595,6528880486464884874
+611c88ad-0240-c48e-18ce-fa986578c798,4088477578,8413047173021537
+ac1974c9-81ba-5a1d-2584-97f5aced7aa7,2079132749,3934598774608087689
+416b2a90-1484-abed-cbfc-9037aa9e08f3,2181301625,5051974533979137459
+a7f85310-d99a-0b66-6641-275044854305,2863438893,13351468430431578814
+1847aae9-056b-8c00-9556-968fdf5f1b6f,623108689,3502163834382537667
+a0229efc-354b-f68c-0f15-2e36280d2b91,3430583225,15263406097306127685
+03c2a3d9-10a2-d45a-77cd-13ce85e60451,4148333072,5310892105274763312
+ca128436-2bd3-0b82-4796-7670b5893be1,4056619720,17295118976718273219
+b5d15205-d255-8d9b-dda3-39032fcc003a,1431108726,5151815604199187985
+2dad485b-fcc6-0148-d646-028ab59ea060,2169519838,14551189256453801033
+97972191-d4cb-e5f0-cc5a-38d950de1146,1453301960,4518427448987079560
+6676bc87-2a71-26c4-5cb8-bcee6b384dc4,3510609968,17428791902399133696
+cab0930f-4ef9-30f1-0160-bb5aaa189bd3,1922854674,6896020625472988459
+26d12762-78cd-3a45-17b6-264b0f79f92e,1159654904,10832491937261531467
+fe809569-b715-5d15-4932-0f1e8f4255f8,2420017766,16868025791256674820
+f07bd384-be55-2334-b174-214190ed0eb5,748847482,2463686822598957746
+a770a252-4f8d-c607-77db-80de3afd8c64,2734509426,2423521655333436640
+c74bc72f-30cf-0f14-f70b-09309d3584c4,1714931513,7084275089840224810
+54385787-ef9e-69f6-577b-8a977f3bc971,2022868885,9498761239851053729
+7b4791e5-dd56-e0e2-80a1-2516f1269e09,793721196,5639029163942604014
+b5ac9873-3b64-4803-e019-d9ecd7611135,3894460537,12954182384980278984
+9d36e8b2-d367-cc19-bec1-9fe7ba6c9e5d,2782360957,9582274824833424126
+ad9c9604-aff0-01f1-ddbe-2b8589e647b1,3208015440,2394073603472947481
+c0529ef3-5650-9e2b-3f33-c382be403441,3809204856,5912574892394593960
+6b18906c-e58e-b7a2-95f8-d7a650987edf,3383112566,12449752525834395582
+1475f4b3-ff92-fdc8-6753-2e99f95599a8,1315780488,12822060275143443470
+a82b5e20-ebc1-e667-00b0-e4b5ed8c7bdc,2059887523,13014702662261191165
+3785b45f-91be-9039-37c1-a94274af6bef,2270072127,3335946642963065988
+e6a2d190-d1bd-b382-61fc-44b9c5ac0fde,2716044539,5761470687273847193
+af3bdd78-84a7-4dff-42f3-fb68c8df6626,3976537032,8796776629287684350
+f382f22a-cf89-27e8-0912-30687c7df25e,2102675890,1883559532486940379
+768556ec-8ea4-a31b-a17d-dde1133d2109,4194026548,11420206713446610268
+dbcf5016-cb16-b683-a132-cb46a81adc4d,2592020574,11456400812531547338
+de34071e-96ad-15fd-f317-5fb4fe1ec5b6,3099887864,4620731430125697330
+e1070102-9833-eac7-a6b3-046cb8ab7d9d,1521997443,17590318127407034358
+9b6bef75-9476-ec8b-97ce-cd63ba2d2e67,4158085474,5829097065744991861
+c91488f6-8a75-5959-0e52-6a20748e5450,4196901614,5464882918225165529
+71fd7c64-580c-ce94-43d1-64ca400d7fa7,2359927680,16088051194326997179
+2a916181-4ef4-a2e0-9073-e41a64cd5021,2550543726,11373986493052836896
+9237c4cc-7dcf-7c34-74b4-445b5ec492c8,3195933014,17808579947296768185
+a82e97f0-31bd-83bc-3ffe-fa4e16eb0b59,3820822602,7285473135996225562
+bc676c00-3197-ac0b-6bce-e511e00c43ba,634458367,8254189964144575330
+bb46d5a8-d53c-cdd0-4d5a-b51734bc18ce,1419395808,9324073605510855233
+917f0a63-bb0d-33c3-498c-d1fcc6e8e06f,1162041471,8806313438195616521
+2a2c10a0-9691-9a63-4c66-8aeca1903112,3340426250,7123624268934450130
+5d30f2af-2e90-ce36-290e-d27f4bb9a6d1,1211480197,18152630296618582488
+5be19246-9dc1-1f85-6807-014e8b871d75,957693661,14055208169518301384
+688f68a7-17a0-b0f3-cda2-a7208b5cb821,1093084909,7010825479410109308
+9b1b5517-ff82-8f2c-dee3-d0ecd77df63a,2256862402,12647562256279466988
+06da3a7d-9fb0-6cf3-60de-d77286c4b209,1529228402,8271393044346160898
+3e9607a3-fd59-d902-c39c-a0f057adb40b,2814865193,6012816229593200227
+65f1e6c0-f963-868c-6d27-9a877f32f834,4053515079,9337204384110485339
+528b5ef9-bf73-1342-4f1e-28e0a6b9788b,3686814806,912545029749594766
+e828a094-b26f-a625-3c57-0679a72d0ad6,1889081449,400389539478425173
+6a98567c-13ea-e31f-a783-245b23a0dd61,3732583802,17237082944128838997
+aa1aaf45-0404-8c14-d658-0acbe60cbd26,244420345,7947504761402278006
+8597c393-f8aa-c877-400d-678dbfaeafbc,162274933,62020122850959513
+b80ba291-bb67-9d6c-0cef-c5016bfc48c6,3607338394,10138935804044650404
+eb0448b0-93cc-23fb-6509-4eb54a126286,3720298036,8627195581286750006
+4f6c9e15-24b0-4ac8-149c-cb2816f45fb5,3542514113,106867269760418260
+ea84282d-f60c-1f60-df5f-5fe088e9cc82,3144773647,16338666665324860287
+d9936be8-28a4-88e9-99ef-5ca3fb4bea0f,1934511327,593630375047287401
+8b092274-80e5-ea61-ba24-86ceaaf5ad15,2328861733,5394065844263449102
+ee611136-09d2-cc7c-5d90-fade58b30228,2117966172,1634209857443854204
+c19dcd29-481b-5950-8957-02a233c8e28b,3227235914,300620562104958785
+2167e810-d917-27ad-36b8-c4b41d2dbbff,2123769509,11550209754667322029
+b4af661c-1b31-e5a6-be8f-7cfe6bab7b68,470282676,4252932459362690467
+dfdbcf18-fc2f-adf0-2096-d305b37a6f4b,1935467880,2816513553463780665
+f2605020-0f14-ce73-cb19-91a9ed0b3055,4198127327,8079142553423322909
+5fccc866-007a-dd48-40d1-c2803b36a0fc,2873230857,8856043432836081232
+81cafa4d-d9b8-dd5d-b608-85a014d4d109,3609797485,5110579743984715947
+9f648a53-29fe-c48d-76df-5317daf89f06,2186845242,17639749630906071557
+3c48c9d0-5917-3a7e-a024-351516b4bb6a,1811229962,17693223633165432026
+b5178135-911b-ca2d-cdca-6de27681f505,402096106,17442586731182457601
+87114c0c-d7f6-d7e2-693c-02cd05789e57,2591708859,67462284285702314
+ad38c227-a3cc-89f9-3354-5d06e2baac8d,3685880798,18006508917734954461
+7addd516-c5b2-ead5-f9fb-206c62b83c4a,1442640100,1937910017088673000
+887bc5ce-57be-e397-f2a1-2b4b0f1f02e1,973119934,7214490130024812296
+2428ca34-e219-9253-699b-7b7d8b00084f,1247297416,3831422886065209604
+c21fa373-9729-91eb-d0ea-0ceaf14721e4,1559785308,3239102616026915850
+4eb7cad7-cf68-f168-2ebb-2cf904c0fe98,2524559080,2531907176839420563
+db3193bf-6e21-4139-4b41-73f4a1bc09bc,405252545,18226474417152400386
+bdba1b90-e038-72b6-e60b-dc58f9da363e,3935681528,8431079621396910168
+a2a45052-cfb2-a052-d66e-aec7559c46c8,746193,1201042423702518986
+e2c67b89-0194-ab34-da65-f6598f62265c,179274759,14222295632035035567
+1b3fe660-58b4-788d-4bc9-f16fced35c9d,1726260023,14558975592448223819
+ebbfc6b0-945d-2ed1-e443-02dad20add98,2138008713,4070844913502815516
+5fb3ca6d-503d-0537-1bd7-0fb1db554f54,1013021161,10428483676075715737
+879b5b74-dc68-547a-c033-5be02249e2b6,604315339,9100866114632273508
+4b08cea2-405c-2884-2a75-750e38d96f4f,1513401766,16418973887166521552
+57cceb96-d277-e833-3d9a-f7268ebc49b0,2233305485,14204484164164347739
+5190cfb8-7b8e-3fbd-0e69-9cc6fc667dd3,1029261999,17596528225146453887
+c02c7140-0a5a-fbe4-a772-3ebee7acfafc,1427856010,8703397894342107106
+094bf939-dde7-deba-992f-5d5b0eb56539,2236704216,7937145606886766746
+6fd61df6-fd08-430a-ae3e-effaa19e512d,1326861011,14653757019350655104
+525f140e-e58e-0c71-67c1-fda02a97220c,221440804,9290925653927379066
+3514388b-fc64-ca70-ff0b-36468b87ef86,1738408342,6316561307044451043
+e9ec0bf4-345f-6d46-44f8-94e6667ba202,3667766245,8731959064329903317
+2d58d47f-6b09-b76d-80e3-4ea1b2547591,856155434,4658525110563959388
+3bf57ca9-ce1d-7abf-5ec4-4d7ed777bdef,130903959,10337995396559480901
+4cd497cf-714a-4e9f-3a64-e3690836eece,2098602299,14697690138095074179
+f87c4a23-a499-aff4-2b40-d694d685cc5e,354480170,2259293854154007594
+a6c676f0-e20a-a69a-07c9-51ce13791862,3472303778,6185316759439673735
+06564e5d-31fd-9ef8-94cf-8c68a5afd5f5,233676261,17867141005717713967
+c52927a4-3a27-5768-1b11-0b97c7c362ab,2201690272,2689842475834825045
+dac7ffcd-8081-ebfe-9a55-58b1a3077bff,1634724384,5376021323128674664
+83686bab-dab5-6891-e2c8-41bec16a2e9a,948919937,2924458682546633199
+5a3a968c-6d53-7c3d-96a7-ed8edd5bcef3,1690646900,2911159511972468263
+5f4bf764-6101-a55c-8353-d4c1931f5f2f,2113890375,12199269066344263185
+0591ddc4-2ac3-776d-c108-4501fd1900b8,3895690255,5010900775225879242
+fe71e08e-9cb1-4e25-8757-9136dad632fc,4020557722,3047623515379616100
+7d42bb55-40b1-2a22-0646-d1ee963cf977,2008329303,15504176876455901053
+93c5fcac-b48a-1c09-0b30-9b8e69f96c87,1475405299,17584466939282264707
+fd1910e4-0b31-9de5-2210-ae1284a01d67,3164578485,13571846212242482163
+24f33cb1-e258-a888-0b5d-38e633c0622b,3946832524,3983914646050600352
+97e1334e-80dc-6998-fc8a-7eb518e7b703,2960670858,6237379442775224546
+da3c6c1d-956c-9581-8248-3d7ebf75b24e,671107530,6831155178645850547
+5547f256-77d2-00ec-d550-d655096d5d6c,644939913,464819984175829302
+198782f3-1f3e-4a4b-0652-773bbc39a8cc,4294403483,6953459870274224406
+d8bab045-4b45-22a8-a99a-f0ff97961d7b,2945997039,17531253301884168277
+ff67821c-cfcf-f647-83b3-000bc88aec5f,3873779629,289139682837822653
+84c00e1c-a76a-1492-d567-02130e1bafcb,844241933,5153100783617883340
+ba144a29-c9cb-f26c-82ca-acc6928314b1,3292028753,14216759830317637356
+9ddadb33-f3f7-f4e5-d861-9297a78dae54,3615211750,13609685126632296780
+5494aa1f-05e5-dea5-e79d-c9264dd727bb,2031442727,10659098035745962737
+84644673-a17e-5c5b-64dd-c0ab297bfd7c,1122658274,11331025541490191608
+569caf8b-270b-9344-bdec-05f7a9223e20,4140499995,4662676640320799943
+94c71efa-2fc2-a49e-5ebd-9f2d7e607b1d,550483991,13321722000923770768
+16694bc2-9ce0-2577-6319-ffc6f4786e2e,2902970072,4730391569643823167
+4bb55907-ae26-44c1-d842-37cc6461738b,864285196,2979833005563313043
+cb3af007-de82-6d55-608e-e6951d7a6fa5,122066439,12850618754791979985
+035be9f1-b9b0-d989-da0a-d6980c364e88,2592306186,18192819379011769604
+664f3365-7eeb-89b9-4f73-e6cdbed8d94c,3634078472,11815548600589358481
+0659ddb7-06ca-97fb-b02e-421390b85b37,3593828325,17099266221594627999
+78d3cacb-c34d-4385-22c4-369762be5b12,2040195932,16976153468205056069
+0abaeab7-5d79-ba07-9d47-3f83559d9c47,3678321982,4808260443041939463
+e8af64d1-e5bc-040a-4867-8af3361e180c,679071229,8160435291110554605
+afd84309-107b-907d-a22b-9f469051c8e9,1682508603,4374385609525480559
+87598cad-91fd-b67a-e5ba-272055141c6e,1037008612,17399156543118859024
+03a8021b-50f1-0bda-96e8-22c5033e1e55,1182524039,3844224694310101260
+4a5eaa84-2046-3155-02fe-a57105524680,3774247635,875148125905971987
+cf03f9d7-855e-66a4-2114-19dcc07c55d1,1173139633,6574555822615844687
+60ac4173-03e5-949d-a6a4-64d3ba69ef7b,3880592815,6095245649486755282
+7193e582-5928-a77e-7a59-da482be08563,849220111,806333212218900885
+cc75ade3-c38a-0778-fc91-8b4382a81034,1691721800,3207545584228553079
+a5cee54d-4268-aee8-00ec-b68e030f3dd4,1756440496,11825553797261740900
+27443a4c-230a-5358-ba1c-6649a326a516,3555889551,10192515643631179594
+5605d7d4-1ef5-b89e-371d-c993cc33aac3,2474447910,13190170750668929164
+e5897386-ce60-466c-3570-76676cd65a7a,3937460273,5462359391619826996
+394f9a44-02ab-701b-79d4-8454bfa595bd,1770868348,10387204445264248224
+fda904b1-a617-331b-d241-9f67edd4eea2,2951846568,14674965309915995426
+7b03565f-3dd1-4523-4e2e-9db8c5264d6d,1540905293,9046970482563869128
+4f7c76ae-d8fd-9fd4-0c3f-50b5d3194b97,3290946517,3787768204967778444
+c112fdca-e11a-2799-aeab-1fd40037e1b4,3795931394,9501694570015676755
+dcde97ae-ae19-34a6-290a-0cb5db126d8a,1022741888,9884495038221226404
+ffbdbce9-895d-e05f-57a1-7384f88854e0,357943614,2045235381883902648
+41be8f19-b361-bb21-baef-faa318e05266,384394419,10702370004809605689
+e7d24fc5-a396-c9a7-9bd0-12da00719190,346570899,9846970761453560101
+9b00cf2f-de3f-8181-b3ea-62d7865f726d,4053289110,3234415699990626614
+4075d934-3da8-8a4e-78d0-7b00a7508c40,3380004695,10945530538630935755
+d5ba92bf-b4ad-4420-48f1-eb515f50ecaf,1044836990,14102778529787431364
+45bdfc0d-669c-b7d5-7394-2ea919db438e,1321423447,1976258073603692184
+58995164-7b18-253b-bd83-7f886c7054e7,685672441,12348483988000998829
+4b885d71-9675-cae4-5a4f-e544307b4420,2708136455,16308952297558304448
+e76e2ce0-2c8d-a639-73ba-1013a14440cd,3359694819,5746098316235032574
+257ade7a-df8f-b06e-ae8b-5345cf6be869,1998976231,4372534415588118171
+ca9958ab-3ff1-850d-0181-835cbc0e1b67,1672775045,2771249267481387214
+b1508ef2-7174-c81d-a01a-474f3f27d0e2,3918309606,11228724745123174046
+07076307-0187-4a8a-1fc5-9dad36fc6321,1585581682,8115553087354445989
+a791d63b-462d-efcd-9e1f-f19f366a82a7,3408405201,1054387178094771405
+b80db812-15c5-be4a-54b5-718dcec8edc4,4164893541,9391165612086776650
+9f6533d0-5e83-7470-d68e-a6b7e099aafb,466484740,7471090911697694628
+87994392-8d04-058c-a29c-f5e75951115c,2832553788,8444235861390440916
+4e65b253-99d1-cbf7-58a2-a4756dd4c59c,2525561343,4291862847885836069
+fa3cc491-2125-cc6c-2eef-efb89431fee6,2821556194,17608439210685348704
+53dabf54-253c-aa82-a56e-311402b3933f,2153603480,2231358855639519139
+2140b28f-9503-b840-1280-1d3e7fd17e23,179282533,14785659228876262364
+3312f937-6c65-824b-6200-d00246abb79c,2701781382,2920342292708484494
+85b1e493-f110-942c-179c-2070eb0ad8ec,3489440383,15627156468417758983
+22a64f8e-9b64-cae6-a794-ded8b92352c7,4136604133,3441085537742421346
+77c71c2f-f37a-32cd-4f07-13b647884f8d,147887531,4374697815717982118
+f9798371-a771-669e-37c3-64b2ea6e4b9f,966658198,17971018054104346987
+90645d9d-0edc-7b35-61f0-be562253eb58,1938054771,3740569324761525387
+98b17ffc-1ade-0166-5c02-37c867203863,2880671654,13579046760914501986
+c3f8d0ec-eee5-e6d9-0b5d-b403c8747fcc,1040701714,9575484822366686739
+1d62072b-a77e-5e68-95e9-69350044bf3a,255062736,9084019273627818457
+369e22a6-7ecb-1a97-9c01-4c73539d641e,3839187822,16771562357146871803
+153f8eae-e6bd-8147-9e6d-d39f5a5bd3c3,3319336588,3281558756744098282
+9294c70e-36e7-f579-1a27-9ead6acf739b,4232955843,5066362545318614561
+7a2d897c-b050-f1d5-4b58-25e95b7312b6,1778751420,7270533828393160285
+c74e82af-6671-84d0-2dbd-9b54d17211ec,972075779,9791346663203776179
+286f97ea-f9a3-5006-7094-118634700a10,1569736052,10918571604492346737
+9a491487-016b-f584-d9fa-87c92faf6814,2181095086,9536585495397577440
+1a19c26d-995e-db8c-d9b1-6d42212712ca,364189104,14355902088459936369
+341f5f5e-ea80-9ca8-b74e-f073401420c6,4237982685,3746175831867240062
+ae81cfb3-7ef6-bb29-a6d3-132f0be5b8f0,3417249679,17469118301225171012
+e32b2330-dee0-16f2-afab-0a92db771535,2392890336,14977728593250469589
+341104db-4f4b-c0f8-33d5-cf1e6ca7a547,3679559235,9238893522473482555
+131485be-661f-cff4-607f-1d5939ec222b,3122324241,6134994156220008217
+123619e9-52a7-089a-bc03-f5c920ef4a7f,2116787129,3679344469798618971
+95b9a4c5-b2f9-2d7f-8b68-bdaf37400b52,2313493458,1311566824474623116
+e1ed00ca-3216-d179-781b-794bfcd1136e,1091746971,9518683095859715072
+725d684b-0b39-5961-e4e7-c8449f0c413b,3781915154,1914256443946344083
+a0947d5e-4e84-996f-6abd-4b16bd50ce9d,3353444715,4916048067770873987
+553a7d83-2728-6f7a-5e2f-07cfaae46f9c,1108964382,7559035958436506942
+77969263-5fcc-2884-1ff5-54d1b9f158ff,1565931859,2206681101284384555
+08a7232a-92ad-d31d-0d8a-1a6adec5e25a,2952100367,12605945363810381615
+10199840-59e6-7388-e3d5-946e46c6ef54,1638464932,12012817920305774684
+b2a4ea9e-3a59-d438-cfe3-585898cd897b,3983551073,14009678844897013447
+3b18e7f6-673b-1c59-4fea-ca4a39c1254d,3583699062,12461817230616610380
+3939ec82-1d38-00c0-a646-85a1119f40c1,2619434830,1871478141723012084
+8e1bde67-0414-934f-3b9c-3db6a5b49ecd,2298306599,2937686015719577781
+7c6a804b-0247-7c26-c404-1fbcd62407d2,1810292128,11084291776516987756
+17419829-9930-54b2-75ac-8a6a8332e2ad,4074663778,3972731738479851617
+8ea28b1b-d371-5dea-dc5a-3d3d6d0b36d1,107020428,8792186752287663031
+4c8aa11b-5f59-a871-4840-176616d45372,3883528585,7232288420921071393
+61eb0808-f81f-74a4-aa79-c203eb024d62,2097902420,9653471318520386460
+babb67fa-eca8-aa1d-2f4c-4127ab8edbaf,550277273,12841885974286498679
+a06576c7-883e-1ad0-3b62-b99dbbe0a0ac,3806545912,10248978610331359653
+af66e459-bc15-84c9-048f-883f2f361a86,1288507395,15503231178851623009
+2ef956f5-7848-3329-e8bc-dc017c440467,1078152405,9484467834322514962
+0d96ba72-c7ad-11fe-dc43-ecb7354c1155,3648495255,6934815739366124731
+3f3f9b98-04ff-85e7-dd23-dc13bb6017be,565865896,9109203541308383495
+1f2e1841-3cb4-cfe6-44fb-1c3622bec509,3916849994,3661042609339416407
+05f131b9-b045-3ff2-5073-2aa0ed560d3f,353447437,23492226008486969
+e47f5de6-ea6e-b3db-7d02-a40adaba620e,169103847,1756296533806656228
+54d9eee4-f41a-5050-4424-18972698d8e7,178000795,18226097909544873535
+2d5aee20-2b48-db58-9e6c-3a5ac346280b,1051157091,3766372808661325974
+95387b66-0f7a-57fe-f090-5f06b2e0da8d,1872963413,2040830553409747426
+dd06a0cc-bfa8-598d-eb24-517660f0bbb0,3858914803,8072795208944346343
+67caf552-3fca-26c5-3a7e-5eba0d5204a8,4057129855,17308471814334677466
+061cce3a-746a-ed3a-327f-e5148ad2430a,349020269,4710675872984392166
+fdd304ba-ddaa-96d1-4a31-29ff74805f30,2542508064,656938807409773310
+9072c983-db95-6c61-8e4a-80d5d06d26a5,4095986552,8827843318610214771
+4dcb4376-20ac-50b8-7fb5-0464ff0726c9,2334043686,1774858407292789306
+978f7f65-17a8-ea8b-7eee-095142ba4489,149326789,15348225324193983232
+f4c3fb90-8911-46b8-f5b1-7dbb36be5e18,491722078,17652225587862774002
+381eb549-bb02-5038-b56a-8386f160519b,2811647286,11181590239004856927
+4aa4f325-422f-1513-a83a-4306293b39ca,4119661975,16629138904002450092
+b010518b-93b3-a41d-6420-b1d0af1f63c6,2989612339,12656406720231186586
+2e0cd33f-d13c-3a9e-2f6f-dafa74c29872,1998380798,15875205930940460985
+21b4fea9-e2b3-1799-a3f8-1c869b9a6577,1775212995,13523014506032880380
+05e5724d-dd3e-56c3-895d-c893d3a4d662,1092374685,6138960259710719082
+2d82285f-289b-30bc-6fb9-76bb9b04c368,850057018,4592050377533234891
+7bcc8e89-8261-2865-ce5d-3a1d54451a5e,138894808,11203211749764001360
+d24cce72-64ae-d05e-91da-91ba4e2a903f,609569733,3073758999453741294
+f45ff05a-7741-a518-6731-9edee11e8d17,2951368856,2337323337918359192
+7202da47-1f6f-3bdf-f781-eef0162a3477,2510466096,10886936500807640738
+a728d81e-a889-d313-a1b2-d5df3b0452ba,466600578,3635106992510826136
+4393ac4b-e9d5-93b8-3bf4-4142a02a4d9d,486748764,289360911155456510
+8169768f-6b79-8afb-cbb4-4e96c3d497cc,3439392711,16282786933442270027
+c2b8ea6c-205e-295e-e28c-97baf5ebccde,4081395027,3152410164499205922
+4bc0693d-59c7-7134-6b2c-0c5cb0dc428d,2798817609,17677185257322129168
+c599aa71-9637-9ddb-c5e8-cc5675515998,1774747589,15924677355587974770
+99292624-ac88-a9da-1f57-9ebeefe49068,578135930,15207162376104529835
+f0035609-8a78-bab3-465b-e98531ecb89c,486791198,16365294395750591528
+3d325ccf-ae8b-ad16-6178-eff5e93e494c,1832691697,11036943220846787719
+445cf1c3-4fd1-5c3f-da36-3b9a6d03d30d,4168211175,4489493469043415594
+d662a4c8-271a-c22b-823b-1020d932f426,3767552474,13386692549349466157
+54052813-2e22-ec00-a9a0-037f19191296,3345909622,2715637427277536656
+1ab4d48d-d0ac-25e9-4a54-7eec2cb23ec7,975081918,1793443867967072286
+5e6fe59e-bfd6-f075-1a87-b977606d1f08,685005263,8120997637160546765
+d4bcb94f-dcf3-ad01-016b-485bda062817,1922046105,1812340536822232129
+8c6b4ac3-3728-af89-a157-d28fc8f7388f,1498579732,866813666521680431
+cb61b5b9-a2f2-12b0-5e4f-27deb4cde704,805520602,12589920638043812912
+dc4e5543-c3a7-bcf2-3f32-c4040e06043c,233102802,8663804099254370779
+4f0a57df-098a-a3f7-9c7a-cad8ed779fa2,3036196787,8644122343745957046
+fd369ed1-630a-5854-df98-62da92ae61af,1702171973,14680532236244171804
+b14177fd-8c4d-55b6-9d8c-a293e04c0414,2045475500,8026503488442930546
+52a08221-299e-3111-833d-254792becaaa,1410294739,17484065640216878604
+8c8df521-681b-712f-4dda-3f9effdfde3a,3035902565,114663227659084147
+55f35d3a-4b08-4718-7721-32f70588d0bf,3588052824,5902439322171611119
+599f9467-0bfa-d0bb-519b-7439b58715de,3725411552,547342569380909776
+e693e9ab-5fac-03cc-f48c-6c925036eb39,4029270746,4779582549138035715
+63734b78-85b0-5316-f5ef-b49fc97c901b,2100508779,588732204882003845
+2e2ff657-f456-04a1-28cd-baf5970a1554,35966434,7725284403980649521
+4e2ad842-2eb3-3f58-4fac-3c82fc269b8c,2751311439,1590090885558741985
+7d1cf5c3-ccd7-0fea-37f4-8aead557f6ec,2780103486,7312857856886902249
+33a4d89d-8447-5312-7edf-2d6cfbe8d1b2,3824410930,8974606860666433988
+6120164b-bf76-b4de-53c1-be97acb922fd,782949779,16053800431653416567
+217d4169-1f87-d9c9-5cb3-3583c4596c2b,20482994,15096154930027399869
+eb99ab5d-81cc-fa4f-5d31-4a20b216c55b,488577362,4580964130208632062
+6e576bbf-051b-41fd-ab6e-983ed7a2e8ef,424177069,10394412167492428106
+98c703d5-08bf-f020-5d6f-c17bf742bc2c,1824683753,2924495504894645138
+25fca9ff-a599-e13c-6ae4-ce8d54a416d9,316548968,9060140182536358403
+82b0c448-b437-2425-0f93-be89d4f9763e,1699860570,4642580524755569251
+14ed96dd-25b3-c580-2bf5-266db2692c16,3690968841,18382074547665769823
+80b69242-92d6-51d6-5708-9958f5b4dfe4,2887369699,986072204632303945
+8deb2eeb-f5da-01b5-861f-54fa1daac1c6,3325627784,17450149653924111435
+707e8c97-9194-8632-b792-eee0e265e1bd,13702545,15358655442343017277
+ed23a12d-5201-5018-d07f-f3d77079558d,2919390490,897435727459343174
+02e36c64-3e60-6144-194a-e8712781696a,768527619,5733376301224559924
+c012f16b-fcfc-bbed-b338-e3fb5d348bd8,2814060587,2336036481292992088
+87a96926-0ab6-e10d-0896-63cc90194536,2820192901,15587090215621224827
+40e69903-b5b0-dd27-4409-d23a77cf8601,2937106591,5788107325787333019
+5ec77f78-95ff-ff76-f180-242167de8f87,3856549498,18347665260940857409
+b4e3dcb6-f411-2f05-ed16-e78fbfcc9a2e,3218456655,2070310289451930282
+19e408dc-f5c0-4b88-2177-5bd7080bd54d,2450939810,364511813355270129
+6334c4f2-8623-68ec-ea6b-54de283cd0f1,2072160918,323880994492776830
+1101e345-4bab-e38c-20c4-a50fb2087ce8,3885306114,14635041349687647346
+a3570462-aaeb-680d-992d-1e35d89e930d,3291472340,2013578198734184630
+9e5d9ade-7b75-d9ec-bcb6-f1f3ddaf6ff9,4259646435,9776568311804280093
+982213ee-0855-8569-69a4-7aefedd73b59,1846945177,382168451131659098
+04b77932-4f5e-04f8-9856-7d591211e7a3,1772789524,5354590768931897172
+7fd35676-158b-700a-1b1c-960de55d3dca,1702457844,5214184375724468081
+9601bb27-9e9a-36c5-5c6b-c813b3287f1c,2466518305,14835790883402827039
+d27ce81c-6ad6-3d98-6b29-9f02c1219c82,4067542285,5195359810956563751
+c766e35d-9d1d-11f4-d6d1-5bfa255acda6,712374594,17262439876211398137
+b66f4e6f-4e57-5a24-8b40-2ab300b5d59a,836530175,1216690790362954373
+a23e71d2-3c83-565a-db96-585fb68f34ef,3996925052,15917333225035697356
+816252c6-d51c-ea1b-ebd3-19e478576403,2892533289,7912978313817084256
+9514c2a2-29c3-4d49-a34a-b2ae7d3c9a93,99183648,11431546112275921975
+a43e5090-b1f4-9040-4397-19053f5114a7,334544406,10997559811344397912
+aac134b9-f5e8-4d8d-6272-ceadea60f6a9,185679769,16753332985151358888
+78a7a91a-f3c8-bab5-5788-9c9290b83066,1397513569,4484252483425330588
+0e477ac4-3fe5-f75d-94cb-da44506851c1,2795299311,11041320590510001911
+6e35b5bc-8bfc-a23c-b7b5-09860343dc51,3605167971,3280877355977576858
+978ed7bf-e04c-ed63-e1e9-df83cd939852,3897856129,3048118190814340957
+32d14a14-56a8-fb3a-934f-deb356c3581f,3629294909,8456547450281342383
+cc879b97-db39-25d6-29eb-423834959cf0,2314256612,8404153050167288691
+c91d4e6c-aa50-f6bf-2c13-78ff635a7ca3,2886354225,5103785580490979058
+5996011d-93f0-582e-554f-59cd438005bd,1433184482,17662220648756126194
+ce18176f-e92c-d2d3-82a3-9c205b8ceccc,1033848371,15067564035723719009
+89d3e475-a755-19a5-3343-c601a432d497,3448167484,9792067665664919806
+36c702b3-a2b4-5fd1-8f0d-8c97cb9d1f6c,1546802677,2790401570873881185
+0d493821-5073-5650-61ad-21c88eaccd1e,556528998,5220247256634947391
+feecb6e3-3149-d816-823a-bc57ece7e862,500776837,5094763356822101233
+03a94d6c-c824-aa51-2af9-81c6bedf69ad,1538920368,4978895722762611912
+c2a10017-4363-e809-d27d-bb000e7e7509,732825162,17602560302735146525
+ec91bf9e-0d64-bb6b-a8d8-aa7ede0a8666,254868266,2670139928405170554
+7b4ff7ce-5b64-9829-806d-ce57d634b675,1143919159,3676374488634826390
+6470e478-3117-e0dc-37ef-a4295f614ba9,1667121033,414230828730260545
+d75ba986-cee5-21f0-5c80-4c92c5ead21a,155534964,4861511455103025494
+66961b28-1c0c-80d8-bbec-1175c4b90d3c,180668987,8924905050277987269
+2a9aef37-7e9b-3725-5929-7c185eee568d,1423479481,577099781267198779
+1c4bcfd4-da44-bf0e-e883-4c79355a6802,452555517,12187931247987313211
+efc23a7e-2498-dc26-b828-02f460d833b3,3399341520,12723703351230625895
+85d8cbe1-d9c6-0f7c-cdd6-a67adac25b6b,3591807305,1008653794201223319
+6330a82e-4bca-de67-e989-a8c3ca60a667,3393365115,4807092843888543257
+7aa589bb-e5bd-f45e-0391-bd5df436f248,2648339414,10882331492214879265
+a04988ac-c399-174c-7000-c5fdfa63ba90,2160212815,1396377291033562014
+4bbd31ec-5ae5-4c9a-4847-8f4df44a98f6,1577315622,15360985023040373010
+e1a44dd6-384d-66e0-35ca-5700829e80ac,456450375,18130236191714844402
+a4803878-f01a-675c-aaf2-a50e3f305f51,665058478,3914141530941976906
+8ae7add4-021d-0693-d179-d2a7385ead84,3993728848,7043828267599019864
+d3d2ea6a-d523-61ab-565e-736201730b64,1926374579,13334258173379218212
+8e0d9c76-7a11-3dcf-b8c8-549d757c3897,2267593099,3965623838710556981
+9bc2eb1a-82bd-f144-2a1f-ad9d6df2cc83,2919092368,12041467331007827886
+043adab4-9e57-95b8-733f-8ca873831ea9,4169656632,13349748029093513449
+67729b4f-b0fe-e923-bcf6-41f5815f1047,805579774,7828879506433995323
+75c30898-3071-e471-655f-8c12308272fa,3792823182,13029462069106517640
+c7408d79-ffd9-e87b-342a-c954ce2084ec,3983405054,368935440163558309
+ce43d053-4ccd-a917-866d-5cc5254e0745,1158773120,15123249357567905614
+081d34f1-129c-e582-6732-00bc29d19222,1961033134,17223079664904402347
+1809deaa-3dd1-ef81-59d2-25ae12f6cc80,2956353639,3595606888242770523
+e841145a-2d73-4fe3-85bb-ae990c4d731d,3602083019,17963992851246865994
+0dcdd7ca-2139-ab41-11d5-8b61fd9e215a,2890747620,11010709593508681141
+c63c8468-33cf-870e-c90c-3bffd78cdd6f,4260486561,17364551144113016039
+11ea61c8-dc86-9e4d-2dc4-1cfbcd39dd4f,2522619357,10185611214805863694
+0f9f77df-477e-2e7b-c2d2-a1b38a71eadf,4239272120,6972192964672981552
+508e3a99-c2f8-51c7-8f9a-1d917063fbdf,781601852,2929045709222537314
+7f3e6c35-cfd2-054e-a2be-b66c4806a7a8,1716422326,8388678204249133874
+adb86686-6284-14cb-3c2e-03b6da8124f5,4026429418,18419399009463079655
+0c70f0eb-0f91-86de-f680-13b983797f6b,734422821,8004294071263986038
+4af93f1e-15e3-a929-ce7b-5d7325bc0173,3889242918,9827782688611025699
+228dce64-0c54-957e-a151-9267a541627d,3590985550,14218535143817707983
+8041f483-d218-998f-5f34-681d4c07451a,1611085787,13043653660432035009
+a14ccc67-f682-1740-6a06-8bf3c4ca79f9,2545932747,1266139478948850307
+006afcf0-dd4e-b38b-9eb2-ba581fe60533,3145637249,1846047254076200805
+8985794a-a068-3ae1-54e8-0aca39cbd14d,1676368736,2013979056052478269
+2e0f5dbe-2c15-1fff-8677-3b40dcd1215b,3623140537,17099719099127533484
+a80752e0-9406-fdee-35fa-1e648e03c4e5,2767717031,11231623926616704850
+bb44b000-6f60-587d-cdd3-26610398a9b6,63974105,6716047692127705440
+2ed6b828-6f8b-1399-8d79-ce700e5d088f,1604501094,1907486051704227977
+103b2d3a-6951-c322-913e-090bafb2cc58,448953501,15477910321372663661
+bace3b3e-7d79-0cac-7116-633fe1180912,1617321753,5957348458110525795
+a8ead989-6e69-84bd-efa6-3c0bceba93c6,2169014950,4446725868942788242
+93309b56-4db2-a05d-03ae-c72bb3e57d67,2317925700,10132543100282007854
+740d163b-3ff4-bd71-8686-0a4901e60c4e,190820517,5687486213237825801
+0edc7048-6e6b-c857-f23c-c5cd73b0a027,1416724342,15970733360352204669
+01581f0d-bdd1-af92-03ec-592c5ed8f3ed,542951310,8237242563179648086
+c62f27fc-90ea-1111-3158-6a013ffeb4e7,2219739944,16835710134941309194
+7bdfd2f7-d801-37e5-762d-9d4347aee4fa,445142140,11980332446495107222
+553b782c-e95b-5093-e5ee-80ea2f4040df,1157958223,4014491412876740411
+992db646-2cb2-04a9-3a83-951665033fee,471253753,907055783140398315
+abe62254-422d-c129-fe77-632e827353c8,2847856454,3373668185595957010
+6541f9e7-6f2b-a4ce-8d9b-71d8ad46193b,363050964,3959449131432614549
+359f4b28-8489-8f1f-912e-5e52811495cd,3550083083,4994314223496421303
+a2d8fed1-f694-dfcd-5aca-d3c30e80352b,3635135068,7715101450478352202
+c17da820-4c22-f72d-89e1-528db29e85cd,4004752352,9660073770626088113
+3168cd41-1d03-f5d4-4150-bbe1b51f7793,2606632411,3459164125847516881
+c78891d9-a9e3-51d6-9385-84fcaa15f46f,2594871200,7503805650446957533
+2ba960fe-ae26-4ed4-52d5-c958d5233cde,3790078836,13528611041077393896
+53261081-dbc4-443f-a8ee-98fca4566fa9,2958171376,14492362045489445651
+da9b33a1-7e66-de4d-d01b-2a2bf548d716,2829819664,3800813862046329237
+fa3f0446-3078-f54b-022b-4994209e6830,974133357,6003261783896356613
+503875d5-8936-ab83-5b9f-5f04b54a4f0f,2649324280,6722601383061141442
+8f5380c9-83d7-5e93-297a-9744cce5c974,1657125817,11539729673986649692
+bce1c347-1153-1b29-55a4-d60e87e0de86,2209327231,14903779061832057109
+5da2ab35-abc9-b493-810e-22e5f3d84988,3381649769,5505683293683103930
+0343ea6e-304d-6a65-03f5-28d0f68d5372,2921422348,17770014302908494913
+96a3420f-b1b5-7dba-38ae-fa29cdecb611,3247056802,2037004640219726421
+8008f40d-9ac4-55f9-6130-862c565b6b91,1461703400,5885325237076597910
+c71af5f8-55e3-0b30-2064-36f77f419502,1704546782,15429738622632762237
+bcfc6761-1cfc-c993-7eb6-6d35b7180de2,79698634,2011877987224286622
+3e7be5c5-46d8-3c67-19dc-363168e7ed6f,2549421484,8656467105387412858
+3b9e44ab-b82d-3b8d-2d3c-848018496ad5,122003794,4413856773704130704
+a9165bc3-4fea-f5c6-fa80-9e5231d9fdbc,1898330358,12628656844966258178
+8b89e0e1-0a66-0020-d8bb-da104d5e82d1,569753563,10951364267859122658
+7a4b5d06-2f86-54bf-04cb-cb23b2805934,3993801150,14225742949756028819
+3c33fa7f-2889-0c17-9ccf-6f66e73f484b,2102157167,3899620214351208904
+918dc469-8c13-cb54-72cd-b54417690a8d,4064508869,10506556516520674974
+7705416e-f14a-6e36-f03e-a48c540da13e,1168723771,244074447854588132
+139a1ef3-6d73-3bf8-ddfd-08e7ad2b132c,118704049,15484449399894358474
+cdef817b-50b6-a2df-2ecb-0aa4c023ad2d,601993337,13718381136498209557
+af3b8f94-5001-2f62-240e-b5ef21223ebf,432607679,8567799158046941188
+ecf22857-1101-8fa2-0743-985a42774fa4,3578293436,13119679965134077295
+28ed8d00-e78d-4209-5d0b-769797597f66,718355587,12705330117482439939
+c29c94bd-61c4-7003-e28d-40ab8910f294,4288674961,17472822402384515018
+f11ee855-5826-e18f-dfa2-bbf859f992c5,1533692775,15620310927338505952
+2d9dbe24-b6b9-4fc3-2f57-d34158db2a38,1379329316,7983175336194366503
+ee10914e-a398-3111-e567-6f0f90509c55,1202055446,5402971135341330074
+92d58dee-4142-2838-d0b9-2b09aa29bb12,3148551791,5665710120428494876
+401e3bee-fdd5-e205-0f92-228b774ea3bc,761306751,8060449180472399637
+66728f7d-58e7-efc0-e18a-2e9eaa9a2550,351841063,9375709604341517678
+18f8c71a-c070-7249-2c5a-b276bffc4367,606598123,5705240084647572961
+8cba1741-c5c1-95ee-8de1-c91956a67064,1751176820,9324198726981695343
+4c0ec29e-a758-a723-b8f7-bc692de3d025,4196200829,1870101986172902412
+f67f2265-ec0d-1607-8a28-c6b6b4666097,4269749916,17832136994791832879
+accd5838-d05f-a71c-9f74-b74ce32c125c,1547303588,5217268233358947484
+225a77b1-485b-858a-6639-9fae9b07e877,591221059,11532280102480807207
+a7813002-ed73-1965-bbf5-36579e73b79c,2204374599,17994317165185276602
+4c0c0e96-1422-f647-f9e1-a0acb064cb78,4240287181,12894705392935454776
+dfac000c-4e46-5c1c-2e88-0cf68fe1ae87,3147074868,13786442982110214467
+7f02c7f8-3edb-d101-6d5a-8a49ea784934,213882398,9557774286619553542
+ef576bc7-e8c2-d45f-a465-066abcd44068,1628822982,421224338105876826
+46151022-ef2f-8114-b594-c16b349305f1,3667896437,17193549421912339678
+d1af6a7f-42ac-cbf3-898f-efb24b68632b,937454171,2516261860273103956
+37dbab62-e9f1-ac1f-9de1-ef45246d93e2,355474789,215399268103816129
+0e253fe3-2e83-7a4c-d133-261f211fbcbe,3800387045,11073435956582183782
+985e00e5-1beb-c508-3486-97b5387a6027,2311361201,1261935193140590892
+4ab4025e-0f91-ca37-654a-615d4de3d5d6,3429125257,5033454598878525150
+4235e8cb-0825-85ed-9eec-91d4e09f7a82,644919878,1892530770446918042
+4a679433-7caa-6b49-05fb-b1cb423475e1,740519490,14791558579246984946
+ea336462-7122-f63a-771e-fc387ff9c0b0,3600360922,17841996180809053636
+03a73778-0a1b-e3dc-b624-6e67c23f1df9,2389227109,4644333506522831228
+a9dc2435-9f89-0cd1-114d-594724c28881,3837318488,472114270851381288
+3cb0e512-ec3c-5413-f333-808f567056cc,68982816,5783026745408891651
+0a171de4-c258-4536-c261-f6f48b63bf36,551248942,6482316996925952445
+eece8c57-52f7-2c18-b70d-adb9a15cd430,3215738539,17565509644885234800
+ff8e434d-921f-88a8-d8ee-c178144be0d3,3316798905,8713089800387386284
+5c25a6c1-f02f-16e5-9361-520113578acf,2846150068,9320259798414501013
+743e5fcc-948c-858c-ee15-81d043e7c2a1,2969348705,5325371331309268630
+54868ef4-54af-6a00-2b11-7da238f449b6,796793855,5958063166978722286
+79790c00-a55f-8fac-e493-b44c271a7f0a,1051954662,15563798864379147369
+e212c5f1-1e27-63a3-e5bd-77f20f2e3ce1,1366123856,14019246051284550569
+aab9f483-4a8f-60f5-004e-43e43b12483b,3470965758,10903186223991516431
+8f58d2e0-275c-c328-5b0b-f2a3a2e1d9cf,1259240525,17690337298509659664
+3e03a439-616a-9e3d-b767-713003310db3,3170843735,10050930543053698540
+aad82305-6e71-3b88-092a-b67ede35fd6a,4026382438,12485728075026891341
+c652bd3f-439a-85d0-9821-adb7fdf3c8f1,1519923629,10396677516355132472
+1b27faa5-647a-5310-cc25-ad4c55f7ca4f,1974233313,11977330537223014031
+42a2ce39-722e-118c-bc2c-763fb9d052ab,1576635467,822114207645377866
+9dd73d2c-2a47-77d1-28de-4cd6185122c0,157996736,13772831186488070456
+38578e24-0703-db57-b0d4-551ca87b20c3,3047620936,13040344641423566015
+e2b8d9d6-7a41-9d9f-d04c-b07f91288c41,3215333006,11655670031765817432
+9af31849-2b6d-51c3-1db8-8ae75104ac6f,2033314525,8627594316299883155
+6f2a491a-61f7-1d72-0f82-43e7db66f4b6,3320870091,3572868578841176821
+7fb6de54-30c2-cef0-9c49-7f9e3162e4de,3727925616,15992983579385762440
+3c4f9786-f50a-8a5a-8c18-beca62c78b01,1527534,15363582586892371296
+bb06b02f-04c9-e9bf-754a-8a3a0f03f427,3530090310,11663632612797884409
+220cdd4e-1723-ea44-7b23-2b18db92fc92,3048508653,4070127354658201336
+cf40ef56-f2e5-89d2-bf72-1645270cfa11,80681529,4297147072966826431
+1d5e08c2-fa50-fafa-a732-186c303764a5,1391882518,15036586173845169441
+b3583a33-4595-2274-b50e-6cd63f4a3a6c,2401499340,2141817209357973950
+c02facbc-7400-fa0a-50eb-8abc93605b95,3534707291,8381587473637595684
+efe89264-5d1e-862e-0819-98cf284c0f30,2756835820,13840015015565698839
+eb178396-4966-7841-d0da-d6dc4888351c,2170767463,4125876830409505291
+8aae91ab-a0e1-c82b-aa44-7faa17121ddd,3743709899,15365428376153081668
+a6899328-652a-e733-58a8-891c127977a3,2774273386,271159969254392235
+d5ed8c11-84e4-a8d5-f716-9666c8692376,1752618409,4702548105955418226
+d428e94e-9eba-469f-4ed6-b86abd3a8abd,1637943376,13779955851489027264
+a4081c3c-d6c1-c69e-9daf-e09132d6ab98,3162628830,4568326350292971624
+120ff3bb-f54f-48b0-f9cc-deab83aec57b,360073960,10304497928153386080
+0d5b5435-7881-5b3a-7ba5-6897e0a640a5,380473821,14865154017999548346
+659715d1-f874-a3d5-e99c-ab62e1f9217b,733131946,16116396223466579106
+8d8ca619-b093-083e-3b4b-dd10636fe5eb,961863860,5181469746276382529
+896a8f6f-f558-a213-b3f6-7b10730e8b70,3060359602,9413694569207703206
+9d62883a-13c4-362d-e357-c2f5b437598c,1922225676,1102295772961387705
+7c7e8ab2-b0ec-3480-a4fc-8978aa18e957,1535678142,10823522518686708507
+5cfe0fb7-f1a4-c123-10bf-385878574082,3151490813,6886841923186497620
+8fc3a38a-f795-4b30-5476-76448f4d3356,1059913455,5418654274026225362
+8e3ff135-bfd9-1ecd-b125-020e85ca178d,1047404012,7181473731297098208
+33df8ef4-8bdb-49d3-92a9-c22f02b304f7,2605763624,14697732392066441467
+71339186-4755-433c-9e2d-dcf177c46238,1252927075,15093634802615311460
+dcffc958-7128-efda-a658-dd6b9f46b5ee,3582412249,7023822989863593730
+6358e4db-0621-aa48-692e-e28ab18c0692,297884685,18303375824910875348
+713db37d-8eae-343c-5391-253f48ab2d09,1090658137,8564848531616420912
+aa85a783-cc14-661b-f337-0f712595f442,3689503444,2104000247836903073
+c2576d46-b066-bec6-df6c-0f20e797552d,3741575318,1387436731837163907
+4c6233f7-bd91-d56a-6211-9d185d47323b,1940014266,741440011111548306
+593c87cf-9197-c383-d7d6-c44d60adf54d,2959020436,13150439168903354384
+37d002a3-5d56-137a-c15d-22605d250110,69462262,3424675484618567588
+2cc2cc52-31f4-11d8-26a4-ac1c8e0c8d32,2467197540,6235113905144310780
+8e78fd57-c72e-bbbd-8834-b94a901fae8f,2407217306,9308974897919071853
+4ecb4bbb-5140-5b87-06aa-b3ed0ec1a328,1489807769,13855822744917638061
+afc951b7-aa75-3a71-0b43-031cd5899187,3609486856,16329567740185428027
+306f959e-f44a-7adb-6d53-96acfb01eb52,2427412293,17801574287966125041
+f03c9d5a-83f2-dce5-df44-5e2af8592b0d,1167653125,12953012998555220169
+2678c354-fe4d-9fd5-87d5-e862f641ac8b,3257002850,5775931707049289955
+fe915a49-50e1-dddb-2430-f2b8279ddf28,3687748447,5934345770609655843
+6550d0f8-e604-eb3a-fcd2-288e36869296,3984538497,13545035882416977592
+3dd84290-a936-8702-87f1-d6336567265e,2168293784,17773028148056088438
+4810655e-7c6d-64d7-47e7-68e8dfb39da9,3402652680,1585065730850922713
+16c6617c-ec71-c1eb-a659-687fe369cd3d,3093771367,10195496197571443265
+3e62f337-10da-dfeb-2f49-06034fffe149,504770372,18101317951129037479
+9fee4c85-c469-863d-1ce0-2ad9f67eba89,2748248408,5049606269574531911
+60b6f98d-2c26-4aa4-76ff-8952369a3272,229502915,5550468884758763912
+a62a5610-2cb5-4368-595e-e739f9e89c76,409332987,2011938712318733627
+b3afaa50-b0a2-a079-3b84-8881993ce5f7,2765563947,18422421889662363139
+c6b37f20-a7af-3a69-b061-8eb2bb22a4fa,1946083607,513402879062010323
+13c8a4aa-f2da-d1ef-c956-eb88223cd7f2,3687280225,17883577875846302588
+659181a8-7296-a523-45b4-824ca60c864b,2446985359,2374493040920328687
+b474a4d2-dfcc-7354-9021-9d3073b772ca,1888271658,5084696954692661399
+efb712ff-e58f-a0e7-a11d-f0bbbd965a81,841187961,16337539130160996599
+f3a3bbb1-00a7-26f3-298b-dd1ab553344a,52440328,6403543220351866539
+f31e3243-3d72-3c50-8675-0399f8f81739,526047219,3183200958482079308
+c839f4f8-9286-2201-178a-370791bddaf2,4145614626,866002716036997150
+7d06105e-59b6-ca21-561c-6a05df6605de,389400764,2760905452411124993
+1392866c-9269-d709-9285-8d379a266f3a,1429403655,3945925345936545732
+d76058b8-b0af-68b3-20e9-f690eb207741,229403730,11350676266063480488
+a5babd2d-2773-c537-3860-a8421d25a166,4217565379,10059994067512411738
+22ae3380-bc2c-71fd-1cad-f584570e9b0a,1919906634,18342097652961799071
+a99b745e-e301-5823-15ed-49c4efcd36d0,727938910,930015825702525250
+8a92507e-6516-e5a8-0f0c-fbcc134b49e2,1051204719,10922780000039876974
+a6f51ae9-48c1-7b5b-edfb-110231d66535,1012346470,18059570102014146050
+8d8040ba-bc57-4296-6c96-a0c2c0bf45d8,3639233961,8033607261267194675
+2f0b55e3-2d98-8030-516d-d4a924901fa5,1591394975,8508331633069598864
+18c60a71-499d-1c0a-5e2e-36e6a4c8b028,1282623342,3455489624624858956
+bf8f2750-491f-0f55-b5eb-36a97a0ad4af,1979515677,924946618755530101
+835b4dd8-6c20-9922-b4f6-9456786cb0fa,2818858651,5923917662469936811
+6c9b2ee0-a762-376a-c75a-3b2935aa3558,411050595,14942931102715954261
+47c7ef53-0acb-a80f-eafb-92fb9c0b1400,1505809990,15347096906393489594
+bd2472fb-f73e-f894-d3f1-61b7398ca523,1817903584,4712851873924710382
+b4e516a3-fa21-ef95-ae94-8a5ec7987b9b,869610350,17784384042855648761
+1b15bcd2-77bb-0915-bddb-28a1d747fbe6,2216196417,13495068899883604277
+ec60bde5-02b2-9762-451e-d636420fc035,1853421009,123473109098899147
+74e8d447-03ca-2274-31a7-c4d33647ea6a,1057754701,6602620398283374902
+1907353b-eb15-0ac0-1949-f13586afa535,1763600169,15898667924629808523
+2456a04e-f8e9-84b9-6968-7a7b4416e78d,2049429039,13294206477814165422
+6197319c-b0a4-c74a-ee01-4b49a9ba456b,2032454452,10271884179671298320
+534de8ff-b07c-881b-5ae0-5f9587d9643c,629613564,11372693649321598229
+dcae9b75-f208-2b1e-07a4-754e326b8601,460626669,14246154874160069831
+dab022df-5b99-fcaa-834d-b11aa132ec27,4072159791,12060385718420852234
+04606b13-fd01-d0e2-9315-dc44fb6d937c,2239769841,14252752924594154420
+78f2bc42-d10d-8ba4-af24-ff52de4c254b,1045409975,17341115729007033110
+b203d3e6-6eaa-9fa5-4b43-466842a0a024,3244999751,15797089529191561886
+c5c21de3-7052-70c0-19d9-bbe44f5f8eed,2749516465,1438828504560541820
+4f3f7f3d-e8e0-bb42-2487-7a6d67ee08c3,442523438,10630606041701758128
+bbe965f0-1fef-abda-ba0f-b55d79545859,2001391704,17220201444555195884
+9ba46e21-fe8e-7c1c-2789-397848576881,2430962765,15512869783748318426
+3457887d-d968-0c91-45b3-b6eae44f3d62,3954915142,11746630670546646622
+2fe9e811-83c5-3fbe-617f-e6537b4e4734,1356231908,16614098168255610199
+3c82f18b-d541-f72f-12fe-2424fd129e1e,4084416043,8797107404391595209
+2524811b-d6fe-ca44-95da-e2aab6f13f8f,553281657,7695245876002283680
+6a1bb777-3392-faa3-c928-cf30be8505bc,1250801909,3801399010621614035
+2b9012d2-dff4-4c8c-e377-18f22c01c1a9,2545412193,3721264188678239945
+c9006959-4125-f86f-a3a0-81657af21e12,3780823042,2715585119352901840
+894d8129-63f3-5418-4f55-a62e0db1d89e,3086209563,7704085325166412857
+c43eaa6e-9ed2-1868-51c3-c03c955ab767,2134231082,2827170189422730026
+4ffadbcd-302a-fb42-fd0f-75a4f6ff08ed,903576529,8641086100854376830
+def5934f-ec28-8143-1a36-2856f5894c54,3424475614,8883810414425019956
+5dc86ec5-e9a7-0102-8158-9f5059878170,344565351,2354708728009169225
+4d58e8a0-a6b0-184e-da61-621bdfd2c7fc,1216672245,9850409314243783684
+416d512f-a28d-0dd9-4b87-5d04863939a1,191248619,461111800763205094
+c6b883a1-87f8-2261-92e3-29ee965b3a94,1545765109,7690755856223611098
+b0908283-72b3-4270-b610-081097d82ccb,3028587336,3792671245973801698
+59bec8fa-0e2b-0f11-84b2-e8e8604013d9,3973165737,1825752820234873883
+aaf43749-545c-c790-3f73-62f3b42ce237,1830546626,4580452728403080757
+925c1edc-2e58-81ef-e40b-4590f507a0c0,1070382318,6259477382129186710
+0051978a-7bc8-2342-7d51-0676dc9483d4,1202455250,4541088574448657939
+84821e34-ef8e-e770-8b02-6756850fa2b9,4018828855,8806353038080260149
+10ed7227-4a35-d4bf-48a3-71914c617181,1578349960,8043357490020014865
+4abe2af8-fc80-6013-9fe0-9e3fbe0a474b,2975647041,13512552779675004309
+06acdd6f-5fab-1a4f-3916-bb7b8ec64816,985185953,3354677724894468541
+59ea29e1-225a-6356-1c00-84d60b660651,362534338,7065143700272020615
+a217ae23-8aa9-b6b2-496f-97034e1bc49a,28904371,1946695437904896854
+12c1dedc-d8c6-9915-7c8f-8aeff7169ad4,3572263315,11735339708912789315
+c49dfe1d-91bd-faa2-810e-2a2733204434,113665012,16931654027675920677
+ac6b7b88-e2ef-2c9f-0639-78a0a6fd0f58,2710714626,12990184801290815632
+96aa4972-ed89-17a2-4212-64a51303f9f3,2926895651,4518754382523320522
+289b0507-21b8-5da8-f586-6d849e130e17,4272600734,13797839649610665883
+6f084175-c48d-5243-3389-b3dc2f005fc0,3689109465,14184739232137928297
+ac2da7e9-beb0-ff12-b8e8-df59f63f5c6e,2841610416,13648315257875001649
+b9a42d81-306b-3bf1-97b6-b519c6fa8c5a,2198983682,10143186034735935307
+3533790f-95a2-687f-85bf-7fa550d3e33f,3564843312,11392327078808780008
+1ba4ba34-3309-0aa8-0fbc-11b6ddca74ac,4092598344,10941879807860146792
+1233d157-4733-a49d-7db5-42cc9ddee140,3901819992,6309773557661734604
+81544482-c1b6-eadb-e898-0996ac12635a,735807213,1603487747908255385
+46917f49-ed2e-6519-6ea0-2ef396b79cf4,1887899483,13398157189560697663
+428450d3-b2ab-9eff-f810-d8d03318ae29,3539873301,5759882211541503528
+f5a6e0a7-8816-1e1c-c4f1-a0ce579ec645,3603218841,11414820963721385771
+6a41dfa1-f6d6-e731-3441-f7d6ab84f2ea,349440936,6125996266913229741
+d78005b3-7b94-3ad6-403d-0d0d4e038ce0,2435642378,17831468989001624800
+224930e0-f5d9-ad83-2a53-213dc88f7870,3628070945,15063346045427111578
+492314ae-1244-9c5f-fb5d-3b7b12461c38,2262378624,13183911173270222732
+63fd7a82-ed45-61f5-f789-39827cf0429d,2473615328,7168504295486652676
+4508a137-9277-3bae-9b0f-c6d3e3dfdd5a,4076209489,1013077868960216434
+53820b96-1774-07f6-fe0f-f543b7cdae64,1266768901,3251558190645726865
+b3f38103-037c-994b-5912-0ddd96186703,2853478664,7097846058345784275
+9662240d-f1f4-098b-f410-1d0807a2257e,3105756510,13978237154665303216
+378cba9d-95cb-55c3-b63a-33ecb7e4f810,3386202097,17834731108050581254
+d4ed8851-c34b-d3d0-776d-f856b7fd4779,3228017434,14702566980002224689
+77a8f6cb-7409-dbe7-b032-21ae7ac9f1a7,1300924255,12627310044946108091
+1088ad6a-f479-c3df-c032-8a40bfa95cde,1248102392,135871601057980369
+29cb0032-da5f-8748-10fe-37a5787aea38,20134305,3758105530306039865
+08f15285-cd37-0470-4488-cffec996585c,4084881216,1664962412933450717
+54d3705c-9ffa-eda1-434e-62d44fb3b7d9,3074830887,14061517112016125547
+b586938f-2a5b-e9c6-be09-b9edc449d221,2595729534,16329786300894899390
+aa3b43ff-5865-f7b8-47dc-c19c31fe05c1,3654659992,18172843645147820196
+d848d8e5-6206-4d97-f199-e43895f71a85,1886672999,7285055724349966006
+a4091c04-e983-c925-3111-fd24842c5cdf,380245321,4198011501791909351
+994d7aeb-8225-4664-642e-42171926210f,2508562837,13286643039266872645
+8ca43658-9f21-80fc-c453-9c67a1022f1a,3861375612,6046983205856713910
+84d3b7fa-f33a-1958-5c04-480144714ce4,158355075,14781105960230286268
+c793fa95-c9a4-497c-813e-c725d1389c0a,3898644835,343145610047312129
+4c9d78e8-f35e-a504-ff27-dc0f852706e4,2895483525,1648612219178924300
+d986ba52-61bb-5f3a-8c5c-201c9290749b,1245129803,2325691061216760248
+37bfdcbe-5568-afce-30b9-b5b8018e13cf,1678016567,2370097000780342650
+52125913-c1bf-5f18-92c0-dc500baff42a,3940999679,16951450453063483078
+2ce3d576-9055-aa12-0aff-3f2ba732c5d7,4090648628,14341050261900463931
+d4ef236d-747f-393d-9399-687d63550189,2296138234,8373778188270685947
+e81ae5bc-710d-8dec-8fbd-09bd3133fa37,573280037,2339494211532943242
+4a551e1d-a77e-9864-f8e1-2fced22b5dbf,1878145765,14952701216832952704
+e5ae5357-22b1-e672-3744-67d116cef6b8,1828621102,14364827941841427708
+5eecbb55-83d8-d5cb-6744-f8ee8b000d25,2646418580,2598947494342138997
+ef735b30-ac2e-dd6c-663c-e5505ae5dd7e,2302457166,5483988711984582205
+00f3ad44-9d3f-5e7e-411c-a3cd5d3aa14b,3691834457,11854378572466274877
+bbb79c6c-2d4c-7c29-e8a1-3ad73c9e4708,2526682442,3671099631796937528
+336528b5-5e51-ef06-39a7-220cb777d8ef,254185868,6386235994440753196
+68d25d91-53cc-c599-7ab4-91657edfb3a0,2524821381,17701417246557422710
+9c5d592e-ac65-bad7-e48c-f272446aff91,1225257607,10080395990853093220
+3fee7dab-9dbc-56f8-04a2-f0d25abeff33,3872725985,4785387290653200149
+8359f78c-c6ef-c913-acf3-1ad3fa120521,394269536,7827771356681117299
+f63d5ba0-be7d-0f96-7ff1-18faa8b77e80,4231633120,14639361119559052608
+8d578cce-4424-6d32-0532-a7d115c6ccf1,1059364473,6001329510069994168
+3cab547b-830b-1908-5f1d-3193a5467b06,644554185,7405104395384435792
+e8e786b5-30eb-c4a0-0877-39395ab39ad4,1505177215,2890737339561410223
+87ac1757-f7d1-bf7a-4726-c9533dba6729,289293470,11322370641986557386
+86a16c3b-5f1a-89ca-d7ba-139dcdf23c1c,2664601923,13193477254770833371
+37eee114-df75-6db3-0795-669751023460,3938230552,1477048763702868217
+633714ec-cbed-0dcc-810a-134624682da1,2243545085,521325587965695205
+e67f9044-83e5-1580-0f9f-1d111f2ec22e,3356348086,6275340837705180536
+fce8b630-66e7-23fc-b75a-99f6d82135e4,2443465303,1976944291549845080
+b5478f3e-5f80-428b-85bb-a849a7cfc1ea,98514263,11906719279960905972
+f973bf95-a5a2-905a-6199-810d32a7b39c,951454397,120334779551659416
+9aa37647-7020-fb0d-85e4-0cf1e272e5cc,249787390,10245683369545209139
+7e4df22e-206e-764a-ba59-572d09f63da7,313694948,6095270518362826554
+82c9bb00-9a7a-b618-3bb6-676d9c769676,3793045971,461164706911175454
+9f1de4da-9a2d-b62f-6afa-6074dd1f336e,3164751233,13186271162509747874
+8bbd357f-d316-974a-0990-e1ca0ec28a0d,2156874428,10934353637952880321
+a4841e14-cdb1-bc2b-ee42-d553b333a2ce,1531839987,10188605577040373961
+4fd07932-ea05-45f4-21cf-4b445ad0df3b,249374448,10351997044983303146
+7cd5858f-c288-a500-a77f-3c35dac84ed5,904525555,15487988313808559601
+d55d0ebf-c6b1-9861-c0d1-9f44c4eb1508,3726169022,5430337800983848595
+11244802-e671-0a71-f8c0-544e062721f7,3018028661,10245759828237946805
+484250ec-fbd9-81f1-083d-efd1195a38e1,501179628,499779653132723396
+1e6bdf94-8b56-0f28-795e-e6441a42ef5b,979176103,10378097978425997189
+3fd443b4-5ebc-d4f3-f5e2-25a5285f11b8,2345161818,15296224611276807273
+215f94a9-bbce-ca45-b50e-f027c75635c7,53135027,11965104758760108822
+216ebafc-48b6-9ef2-f6ad-fb91e708a7a7,2329427563,12888331634503268738
+fb13b770-bdba-e0dc-0fa1-f4bc4fd3e104,1245533347,12945029546791357699
+794ef832-a4be-a063-673b-daf88d11bd16,1136085488,8732432992394050135
+2571b4ef-72a1-5855-9067-79e633479a1c,1766257550,3140187099480690728
+d781b109-768d-4e4f-26f5-fe8c48d7a33d,2863708392,3635360449823958417
+75f6907c-d355-f35a-2bd7-b0db31a2fe7d,3691494094,3096364430654009723
+a8ae12f3-93d0-3d7e-99dc-5f06af9a556f,2887998260,12092779713039916045
+1a252f5a-8acb-408e-5644-fa03ff1e79c8,3039243310,588314163156125415
+81cd6325-c401-0973-ee7f-6c8a6d6514ac,540148729,1981951974164264063
+78d484d7-5180-d813-9b07-24e46603f887,1106184534,9749686405612726252
+4ae2c590-91ec-e13f-cc80-081e011f9c96,1991740577,17687258503328898128
+9152ae41-db07-552d-cc1f-8e8b92f463ef,477635800,10112977748936574662
+eb25fbf4-8c00-d94e-27ad-179787fa18b7,4288106219,8641791339658200748
+f771a44f-d47c-ebf3-e767-1bd2ece34f4c,2811739312,13001852279697629347
+06118d59-e420-1ee1-a6a7-bb0f1056ad76,589596420,6720615331014580346
+ea1d879b-d016-2090-091b-1238aedfe70c,1740996740,6998125082956312915
+040087b8-ddda-65ff-465d-a39c147d8dff,3421893653,13320330523004419827
+a93f7aec-b05c-a06e-7583-c930888c670f,3217155371,17476533882954040070
+6f4b49df-fe1b-d82d-602e-718ce176450e,1651897220,13696203826826877648
+3a238760-88ee-a252-69f1-747eed825318,400680530,10410424291650933573
+e3fc455d-7760-a655-f227-e6e85c5a744a,3699820968,16286724152983532539
+fdba51a4-7020-55f3-8222-68368ec0d6b0,2558751566,717037242675452327
+2f9a2ae8-b55e-c7ed-fe57-4783aab46361,3668541108,10267366843672607886
+f13745a9-3f76-aa8c-5be3-c7d5088bb8d8,3342989152,15553694118206513350
+9ec370e8-66ba-3f19-6962-2526ba67079c,1565153096,2876878653972983229
+af93f1d0-f93a-f6e0-51d1-a08d3f87b9a0,1801061979,3861524995099386991
+0c3b8944-40eb-86a1-8389-089e39a0d106,3906624100,9768125946332415894
+822e84bb-928b-0714-4ff3-7625485a3050,1141621320,3124879578411169762
+bcaf406f-ecd7-e691-60a0-4be47a61f8d8,1899395536,12920116015609953726
+1ba69029-61b3-0cd0-73cf-e150c60de07a,2511721973,10491239164514446433
+8ec90102-1fd9-b7b0-7675-f7b54ade24de,14806901,10216666610731512865
+f512b208-fe94-3899-b0c3-a369e051bb9d,2350327634,10888912515778213131
+f6986589-eaf9-6c16-dc61-ff895fe92dc9,2337113198,2365552166659795623
+4dddffb6-5082-5e26-bfa3-9ed706de8ee1,1614881537,13802855023577682281
+e5d54eeb-d7c0-0fb0-2129-78b9b4d2bf11,3269918520,5143259479814163674
+ea6a31ca-3cdf-eef6-7d09-f655014cad27,2507225291,17068865853021519603
+17e75f00-5c74-f1c9-0670-252faf375b2c,3625017768,17207757946898734573
+aef8d949-bb6d-7681-b6d2-f94817872cbf,196089106,15104618041862915343
+a7e35015-d64c-5366-428d-ffc87c6cb3b3,2172965756,4835215684914659397
+1b784041-72d3-01fd-c5e7-42b8784c2c87,3366554302,16660242357267921594
+92979165-3e4c-fd33-1dfb-07054072270d,2145341706,14224745786682773814
+aa5e166d-f353-fd9b-8f2d-181f746eb4c7,2709507453,13120287743320933241
+18a9fee3-fc5a-4d9e-ff09-c299b0bb87e9,933300508,6640432566729341339
+b8bb42c3-2695-9fd5-9014-a3ba091f58eb,1606990164,10371735364844216809
+cecf232b-2b12-383e-9eac-156b32195894,3612049577,11392772625504060141
+b09673d2-e99a-6ad2-1761-7e7e47967c7c,1979829190,14536486250372696436
+20f51c98-46de-bcf2-a670-c3dae7e74dc0,2776904745,3399606582421774008
+e7acb611-9b27-3614-464a-f2b448a4de1e,2352224027,7700421278918600418
+de0bbc2e-ee21-5dbb-6177-cc52fdf1a414,1275710446,12778653965363332119
+a0b540b7-e26f-cfea-8a92-432706602e1c,1503176083,18297182715902165761
+f14147b8-0b5d-b3cf-3474-c43c38c96c99,1953892333,17190517963087852051
+d52fff87-397f-099f-8778-c8cd280c1f16,2542998972,12109489449603518212
+f19d2b26-8f65-204c-fe0b-6723c04af78c,2235659032,15027881426067472078
+4d971f4d-153b-f2a3-ea53-7281ee8132cb,2707004830,9003480684362573497
+5dc17e04-4819-222a-4918-6fc00864711a,3943839585,13446362668517029752
+51419ed7-8ace-e15a-059b-372ab189cb11,4244627643,12801946066896140000
+5a8b80e0-0650-8c99-1c8c-4f7011ec9452,2251705732,14334582756861427043
+e0a93c94-6297-dbd6-e31d-0906566a4859,2683992942,9483709104307266374
+3e4631e2-5b58-f89c-be3a-597f560b4043,4255348239,3632478549505795791
+2b1bc2b1-53a8-980b-308b-f56387842664,296366401,16626316509694724363
+56f71e01-f2d0-6b54-7e26-cac5cbf429f9,2198635120,13616935155674292046
+9749ef03-0cae-e88f-99e7-d83f3f93c3a0,3847598860,988891789367055052
+bc88d7a7-b385-dc7b-00ac-9f202e5bbfd5,855295243,749314673764650771
+915b3cb8-da2c-47de-3828-8370eb73f285,668432979,18002501362051564933
+cb614752-921e-cf75-fe2d-38ac4d1d1277,2907588683,3277254347510203600
+ab02ec88-d907-9eef-2f2b-833b342677ca,2826696260,14439900649904323857
+e7e101b7-c7b6-6fbf-2aab-b3ecd810d711,633263525,9863489403474561001
+5d24e1e2-7cb9-73a9-1992-9e65fc8b54f7,1541561848,15268939436039294962
+75f13be5-fe57-720f-1625-94d9c5a0653f,3347692319,15273482365335566837
+ce9f5d62-cb67-08e5-9dfe-779d89eac0b8,2831801084,12440152991733658059
+173ec7c4-c3eb-8b30-05cb-3fadf8a5c055,1278157151,12147910657316397346
+2be41cdd-cc03-9671-3914-6505efb7da62,2252933294,6611803634476627297
+bc8ef1fa-d78c-4789-aee0-4190c10eff41,3376530058,13487270871946199085
+6f79ee8d-b389-9191-9cb7-f56d9d9f1dba,1999329735,11784838103772017134
+a585fc0f-3d78-fa3f-3b04-d150017e9fcc,903876568,2041898684482849467
+d31831d7-0a5c-43f8-2305-b202a7f9fc35,844676242,5974118125236126519
+c955855e-5984-5ddb-332f-04fd1664c1a3,921696203,10932746587919913738
+73432d6d-5a2d-5ebd-709f-017932ff8f70,3537499981,9473804528935387180
+c0ab3c3f-b08e-f307-64bd-3ff670676acf,770086048,9734513789296915033
+3247be51-74b1-9207-4721-4d84718d3296,3349010050,15034210797973264638
+5be4fadf-6124-bc18-b3bc-3088e9802041,3008083599,13085426283262142935
+df09c5c0-2694-4615-962d-bd6e7aff8054,2663368915,10540179285751597053
+5be1a047-71ce-a63b-8f34-86555f6615b9,2362524311,18191037529225179048
+3ab92c84-97a4-ac78-19a8-f33b708c5da9,2267492052,18436287913087480621
+6d21ca35-3d3d-5840-fede-ad563f042e1c,2725542383,3041222041443267347
+1ffc124c-6f9e-ee1d-9e6b-1784851e29e9,2928226343,6788091640403552378
+56869ee5-2e71-b72d-2a87-6702f4faac64,3341395581,16086804775070544067
+1c7b749f-0d35-0fce-10a1-f632d038d493,2360874695,13481491085215780025
+fedb0f55-72bc-7bf2-12d2-46b04961dc11,1392001062,2726846957439549492
+76756132-b9f8-40ce-71dd-8fe253e2b832,833514391,16558826534889324114
+3ff1b9af-5c05-810c-96fa-fe9185d90fb0,1351024356,2783008499107702703
+0d870a2b-dc69-b50a-6b47-f8cec107b560,427074507,5791057950575418639
+cbfd73b3-3f08-81e6-8f82-20c1513caa2c,2195412769,10075127203462319172
+f8e417de-abab-4aa5-5ee4-658f6393daf4,2019702054,5529617837782794284
+b14b5293-8317-c1b3-c16f-0985fb618b62,6956336,6691675292811151970
+7e37b595-3cff-e9ce-37f3-f510fe59e115,3360227219,8148409769113008580
+73f21377-2648-ada0-28a4-cc605bca8917,3944807053,13303435354807243354
+871e7f49-678b-1014-1039-3be01cf17721,621539304,7546378465485468916
+c43789d4-6c46-2117-cec4-2951627ce447,170694754,10673065878584633137
+14552d94-75eb-faca-29f5-fca4d0fd7a73,2789130711,10222798310810841723
+4dcc3f9e-af7f-aa07-65a7-752ae384cdbf,3473546772,2368617013947265378
+3a6490ff-07c4-2c74-b90f-307b98b297a6,2225531239,14569796477731355708
+913a99b1-633d-57e8-7534-f35f3e08cf7d,1926691033,10271557390503956670
+d5703c72-9e2d-ec48-9cfc-04dae8a21eea,655369936,17966490910648591188
+bbc9cae1-85d0-70a5-d12f-ad77581cd5a9,168033669,6240187964767967443
+f0c1a21e-38fb-52c4-eaba-f087d403d0ee,207955073,17082006619647619890
+a668ac58-81b5-dfc5-6ba0-0919978be4f2,1052587906,3711321938414729740
+8499abae-3489-ebc4-b7b1-fc74b26cc2cc,100158844,13441123478825212962
+db608da1-6c1c-9370-29f9-ee022e32b4a8,4213237804,12353041017652067977
+00128e01-91b0-6c54-92be-7c118016333e,2897123389,8555253223540438305
+2432a859-4506-79e1-ab46-47a519ee23d9,4163638585,11744614663191399719
+3c480076-f42a-429a-fcf7-86a908a762f1,1099880510,8862498633796014517
+5ffce8a5-5e8d-5e98-1fbe-42ce178d3584,2228352854,17467010521742688191
+59cb0a14-aeeb-a04e-1544-d318e57c6594,1627987984,6195937012513286733
+53a14372-fa65-b14c-87bd-be17173736e3,3233264494,11489006225811883175
+ffc3694c-3d9f-200d-f7be-f0f91c24eff3,3775381175,18112254382877061963
+52fac90c-3997-dee8-ae6b-35f60c2a7098,3732111917,2639724280422253681
+26163a61-9a98-741c-2c66-7b61d5126465,2951395247,993517416795649218
+f267cd85-b82c-6e96-48ac-b8ce2791494c,1520032783,5690328337319540111
+b6797738-78a7-0e43-7313-5238900c1429,1987754432,7720266408904299847
+3a313415-7e17-9aea-5c14-204433c51cd7,2083012910,14486514986774073437
+19850c91-950a-b9af-d043-9d757d952525,211555983,3586274489730120671
+5531b6d0-045e-33a4-749a-a99bde0128dc,1837496305,16678489716136856162
+9597ee65-bbd7-78e2-a765-dea1f0087529,3799515942,15863326042592427405
+68b7f20b-9244-254e-a026-2e223f982c2a,2073374589,12607336549535109425
+54cdb7c8-3d82-53a5-808e-ef9e3a56a3a8,2698713115,12215537506941748068
+f9a8ac17-0d49-d84b-04f9-a6be8da6a38d,150724219,13819806474888192904
+53afb9f2-b843-6d42-3dc7-9a5c5fb14957,1615220295,3402772788999740613
+30cb28ec-b5ef-ff55-d166-75ecd59aa43e,2843358843,9058641233320001269
+95dca20e-55a0-d46d-0bc3-c444ae782107,3053962403,8384281531827645135
+8ed79a3c-f130-c378-7cb2-b37222c8042f,153013776,15067735915688991033
+8d4e0918-e159-9525-c122-fecf1c406049,922196962,2497715832992941560
+c3876032-b326-e5d2-faae-32016547e2d4,3494092568,7906870063003935464
+ad01d16e-50f3-b01d-0ca6-0faa5b47cf54,3824387280,2146016274983548808
+c37a29f1-2eef-e8cd-36e5-8fdfd5d551d9,741292449,17896569853414516522
+dc4d25b8-92d9-fe51-c38e-4877941b0058,4269497900,817262553543841587
+9c78f221-cb12-a770-1e5c-a906fb595c6e,2131836776,4203476468230634950
+16e07d34-2d1a-9f1a-affe-8585118ef77a,3216646255,6667255744582730837
+c91e8a37-c6aa-3f66-c3ed-1ab6498c7fb6,2570192702,6422751464565752250
+8e5730e6-f884-dcec-d2d3-d3d63eca751e,599343401,987170454333594165
+b6104292-ee03-3263-7d8d-6b0ac52f7b52,1375181819,9025258793020978616
+e7dad912-2137-25df-78ea-a6bb72fda8ae,780944212,2846099895329921334
+28ecc026-c0db-526e-47e4-fa68a24bef7b,3133083294,4527969218270084272
+45b3593a-3002-42a8-1493-da8b9f0e510a,1923013356,382691882774330885
+9fab7514-7f6b-1e64-5c7e-6a2a722c4969,1264580184,13118394798451587602
+dd445536-ce53-87b9-6c91-ad1ef30c51ca,4255848265,13034464131943272713
+2b8a07db-7803-30e7-0591-d16d41c33bb2,2417353003,15150619018316360731
+5900aa16-faa7-bd9e-f40d-706f4825c40d,1999845046,4647469573890937791
+f6de3cba-6c0a-0290-21a7-9bc092d853e2,3240724598,947062987357476280
+4b1f3797-ffd1-ab2d-6181-075ef0cad59d,3893825956,14704877288835738892
+2a48053d-eae9-0442-793d-afce6fa60b7c,3158503238,13434250348194919299
+1fef76b2-92ba-888c-2f53-e7b93b81c887,427298722,3879032802264980378
+00e4dbd9-be89-3cba-4c73-cda391a79c4d,2587049598,3368175298185011444
+5c61725b-6e2e-6e93-6888-372fbd329681,5650688,16074233057138121283
+461025b7-b4d9-7f74-fd7e-2c0f9ca9b37a,466160578,9842934117204972424
+899481d8-6b67-ad54-15db-ec4cff360491,2102018942,752126078030168370
+e97b9751-de3d-46d0-5e3c-1abe2dbf5eb0,679041381,1474167002765430323
+60bf5e71-f8ed-835b-ee97-23af03e989d8,3803818965,2793844478796902344
+28f4e389-98b1-9a8a-c4f2-da600ff367e9,2766721297,13485524272476633310
+2d7569ec-70a4-1ac5-71fa-ec945101b08f,25360747,2687914502703984961
+c6369c0e-00a3-47ce-d821-f71a4375baa1,911254816,16887718285189227636
+4a947a84-1991-4502-8895-c336c1a144af,3000969021,10284491185087027399
+dfafa389-3d23-f824-7b90-1c3f0796ef34,824396417,6372362512063003959
+f4f5f18e-39e1-8a90-802f-e5d7616e33b9,612181752,14994869691546023099
+cd097900-deb8-5de2-5220-c9351fdc5ef6,233341267,8179726378440784101
+58dd5ecf-a162-d467-e049-de9313a38f25,4031009479,11094346385070593859
+f65c24b4-91c6-40e1-76b6-1ac12c71f5f0,3681794897,16483322140304488802
+f7eaa5dd-3096-8c84-0867-afac5da1ccbe,1083206653,8071222780501940731
+0cb6ef8a-c528-319d-058e-5e439b779e7f,4142581170,8896451678020818268
+6e7085b9-fa07-396b-8f19-e51105eb168f,761037834,4671325530715320112
+ff7938c1-d64f-7ad9-ed98-00fbd44dac04,1319677387,15967628527159416343
+1abbc938-ca98-547a-b004-b92b4cd7113c,2427455528,8966582624003578660
+e08b4cdf-76b5-cfbb-2f1e-1a41969fcf99,3580200958,5131870522126824618
+529603ad-2982-840e-775b-2fcc87ae3848,1012084526,15075508744651339987
+d03141d4-ab87-9853-a39d-e9e78b264538,942145894,10267617578955258543
+11931ecb-034c-7f4d-b787-da9cbcd116d4,1216386167,10146012232758217658
+467f36d9-7625-756b-bd7c-f8a8b81b3226,866947779,8455045534361490550
+1512e3fc-7c50-8e1a-99e0-f1d5acd5566b,38830253,16994315469476951624
+86fc9246-f08d-31c1-1461-4b71545e71b1,2766467438,10416963129988956540
+8e82df55-2dcb-7184-894b-d4d29dfe7f4e,3239754276,16417747337539126242
+e8b5aa60-867c-dfe1-ac56-3acfd5ee0e61,1759978317,9604504379990597730
+c8b22a18-c566-839e-cf97-9b485992a0d7,769350237,786519789710681209
+4f547268-d8ff-5fab-6b85-e5237fdf106b,155406334,948755988169630380
+eb227e68-b73f-5b5c-8ba0-fd77de444849,649630786,16078090212076076975
+28ffc187-ab78-cdaa-f92d-c35ae113b8f8,2370618854,14852814894900009031
+7b2b6354-ad7c-27af-bd6e-dd8d92a66c43,2145887987,2388928664480025840
+8605a677-d4fe-70b1-2299-4875bb29b3dc,3633833880,6344594944327480786
+fe6237d0-c734-f277-0cd9-f8e23b3788bb,63805607,10631326927955471273
+2404b226-57cf-f06e-9d42-8f5ca3339f9f,3128495761,14698025453917877559
+a8c1fc67-9eeb-cd3a-7948-4d8317437b50,3002151995,8462181068248882509
+c6c0bb4e-fa87-31da-d6bf-2b10f9e5aed6,4016474722,10956291774425590886
+646b1420-141a-2fd4-67b9-4e6c6a0d7194,2554016615,9409775608289911989
+8683242e-4e5a-009f-23fd-54152add9e46,2023626896,12057525931868200
+6ddf50b3-1f3a-fee5-980e-8899b0637d83,1322528780,4209994561693486294
+6019ef07-144e-c99d-16f2-6c1f787fffd2,1090300425,8207567494153372015
+1f63738e-baa0-c72d-b55d-aa19420868fe,3454670374,2412479187064842511
+ad10064e-88b5-bd3b-1587-fe68a8e30145,59898522,7184772201691366780
+e16b535f-d4b8-ea79-46e8-1c3b15ab24e1,1972283347,12076710964557856331
+7172277c-3c89-7ef3-4f1d-c14450581e4e,3200910103,3092060241024064894
+b37d54d9-092e-d5fa-7208-e22e4c405aab,2097299086,7234714664603919880
+7f9e77aa-8747-0b44-0ab9-76594c022d7a,78917602,15930902857393480206
+0f296b0c-50ba-a27b-b203-0d5d11570fe3,2367840639,3961573492309756832
+77a14744-7f82-dcf1-458c-50d5538e146a,3814060187,14673828865755167591
+b406c3b8-551b-94b4-405f-34b901620445,2243358935,14852905575503974216
+f6fac801-00c1-519a-cf08-4a62cdf3020b,705374834,8600559262359416141
+a32519b7-0774-b35e-79a4-ce4c864ce058,4289373211,3058362871901177249
+bb242a23-f8a1-4e63-5677-ed26ceae4891,1438914974,11949242225026795349
+bcef9633-6d8e-3bd0-be80-88e58f07e71e,1678745529,16068817430927497402
+afa94dec-12d8-eec8-51b0-1a6365dcaa97,2860917745,18386556751236577988
+8e21801a-8cef-8cb2-2677-3fe322d37ef2,2036197698,5452986016676674106
+f2510f62-184a-b80c-263c-8a525526e3b1,129688631,4726738029259447998
+4575446f-1b6e-7fe1-e37a-cc9c167930e5,1684199577,2990592098700765313
+97ff039a-3d15-68ff-7a2a-116e58fea572,4260407911,8021902522416620105
+6763ed04-ecc1-5921-f797-7f8025fa3fcb,1324388777,144716999276413079
+219bb108-5dc3-eb0c-a78a-9e88c31c5bdd,337786753,2512868091619847403
+e9030437-8d51-d283-670c-5415989fde6d,1011917877,7021388256061214007
+ef5c9f5c-0712-4904-7a3a-2aecd2adc0ea,255253543,1344098609390814800
+1b27c943-ca37-93fe-478b-25abd3506ad6,1547975588,10996087578383769843
+9628be97-173a-94f6-ccda-f7d03931c487,2052886527,6572661976367488848
+40eb47cf-2689-dcf5-433f-9276324a2f3c,234298451,8696184805385585404
+3469b1ac-7dd2-e3f2-0564-a557becf9828,3506922699,3169652701078377675
+5d428b2e-e2f4-8324-57b5-02517b55253c,4053728543,8904480240339704423
+6243fa7d-e904-b17d-fb89-89d03b0d11ff,2822000800,5742901936465794972
+d63c71c1-856c-9a28-9b29-c8c4f573de6b,128015538,3899577339382816250
+e1cc61bd-b182-0aad-5855-29636faf6b7f,168694125,13215652027307745671
+06edf025-2761-6756-095c-4f3888d7a9e0,3420277811,2046017354796900272
+9918974b-db00-e1f7-9f4a-922a589e448f,1658927006,5953456632149021435
+7de08758-1766-3d69-094d-65675c16cedb,3251869962,12345178921354886523
+4cd42263-1e09-53fc-f65b-7d196c2c5a25,266422974,6376754971385675886
+e4e682e9-b4d8-f944-a3d2-083c0afbcc45,2818371074,17711165036650365271
+8af07e85-90e6-e12a-125d-0d8d84946245,2688494606,11415580834732046414
+452d7456-d8a1-4319-60a2-d7c25f93360d,39210315,2066717979656056708
+88ecdd56-c699-0f76-c1a4-28ecc10c8e2a,3354038177,15526316270389451885
+4d3d7778-fa9c-fd83-a3c2-5c743a79645a,560494738,1831818259293319534
+f0d81e30-9ba7-8efa-9916-0e2264280562,2322920956,15211125719087360088
+a9071ddc-e36d-60cd-d875-da6d1795d244,980929901,11563066007841227821
+8b3033f0-f60e-5083-bc09-27dc1a73b778,4118389050,3247643945442748275
+d41ab2a8-51af-28a0-2836-d8fae1e05630,825641958,7267421874233709720
+a5dfe6dc-3735-ad2b-922c-b0b51f7e0e01,3403177051,3567753541289112284
+6be57240-68a7-a4ef-e3b9-7e4ccfdb08c4,1488820704,12828708174846062978
+b003a34f-5a99-8623-603e-af96d10d099a,3151537683,11802165883787714522
+9855ce09-0a53-91f0-76a3-e576f867cf8c,2384072802,14583549592746509818
+1a960136-ef29-e570-f36b-dff726cdfd7a,1794361042,12057865147318837278
+5aefc4b9-98d8-c23d-3662-5c698922eb7c,1061279062,13664045124613270464
+0a84884c-9b2c-a027-4e5c-1aa83abbb869,2347922661,18071817491477998466
+341fd95d-8990-8825-7427-2e21b0894799,98509112,14354929676925086634
+6df9495a-6a7f-b5c2-6362-38466c57c3c4,670611540,8266675101276712864
+7510bd13-b4b8-e4f8-c952-49ba15aea00d,4006047549,1449270344752020061
+f565b6b7-af35-ee5b-1251-42dbc3528709,1807454786,15270311269900628090
+25f22cf1-d721-9a3b-ca6a-aff1954ef9bb,3106761407,4561748016697693235
+a87c47e9-1b7d-d678-e30c-90959de54c39,1740598264,14015470758740414419
+628bd00e-8741-4311-74d2-35ce3f394481,3549412103,5807610777227051577
+329ce730-6be1-5c27-e2ef-b58d116798cb,1950290741,5533797136973349275
+71b7ee26-ee30-2dc4-24e2-6b4e6b6300af,3968492079,3867279810358624078
+bf665e1a-9ee3-6ff9-2ffb-2222700c8740,2518011714,566592379596075724
+3ecb1c91-54f6-c48e-2473-e0921344755e,2495469750,5243964809255122895
+27059666-55be-4867-ba59-61c08f0328cc,2121067613,14400042546749487915
+4131602e-5aa2-138a-b801-e7e9c89ebec9,337293408,17628400048064806985
+06c9ae1b-e648-c9f1-ffe3-18d29113bcce,4093815743,9263312037193922587
+9cfa3fc3-ece8-c56d-3064-20a48eb4e710,3391927413,5810795432539123575
+38a84184-6e2b-3a92-1596-08c397e2c7ff,2088058806,15735492589920284156
+ad7517d5-6924-9880-3694-7efa2e4b72b3,363137580,1921192623718076513
+a9b36028-a1cc-7c5a-c39e-deb154dd3df7,3960841033,3047207374159379182
+7dbfe7b4-9885-3a2b-ce0e-a3ccf2c2eb75,1316186573,8129832581674845494
+6a841692-7914-76af-fbc5-6609e679aa12,1051077786,11203076387827300514
+4b7823f9-3947-35ed-83fb-82d046c639b4,608605660,3693275469855794400
+f9d0720e-95ac-e3cb-247c-0679785d1b07,3627082246,13481033478239468033
+4f3a783a-0f2c-cf1d-0353-08f2de2717f2,1454181037,10292551020993807499
+5c2eac8b-c774-4e22-c276-bc4a808d6898,2646500461,114742639423931075
+523f38a6-b677-201d-97d3-766eb354a48b,3157133327,1275339037841866427
+1957e5f8-4741-86ad-1d14-27279fe8a2cb,324442245,14856198398465895602
+2036564b-1758-dcb1-4db2-a01ae663d314,4187406563,13403730159361211474
+f433a025-521f-a55f-0df7-7b3667db93c7,3935195138,6283410564054534723
+936d6de5-4dab-4fea-f1b6-b291a55cdd32,527862475,17668175369109257632
+8a78d5c1-f63c-058f-d619-5f241429d1dd,2845399601,5536506289047581452
+12a75205-4753-62ed-f2a2-39ba70eb1818,1672833477,12705061591435616112
+d6d96e55-d5d0-5924-4c83-7265bbbf5119,1690494049,4632147789248744923
+e85aeaa7-77ce-ec06-64f0-65b5ff1e9719,2386628934,1166372246693903288
+eea26fb1-3ff6-99fb-4738-3348aea10859,3781305076,3690457003921618015
+4a61090b-813a-4e75-4a78-019f6d4ef74f,2312642194,10317612145524938970
+84439190-030e-59ad-3b42-4b43b907b4cf,392036052,5345488445829070781
+887df798-6e76-6e0c-3d8c-0fb77fbc3fb7,1540223668,16447793567929618175
+ed8ec6d8-1553-caa9-3d4f-8c7c48cfc24f,222098812,14723613338448324706
+5f4991e7-8e34-a2c4-ada8-5c0e80ef72e4,1011038884,6617675176629201286
+1e87a669-59bc-59e1-89e2-092f2263a042,1682824511,16451954310879050586
+14e25c70-fef1-8e4a-1189-119f1cf49041,1796918961,8131302474447548074
+cd1b7832-1f1e-ae05-197b-bd4de844847c,2241047158,11901716714544603154
+295ffec9-52d9-250f-a425-b9007cf540fe,1980962508,2600712204540998979
+b8ec7dc9-666f-bd76-4957-2f0582533a66,3921064041,1910635148489330580
+6b871d53-09f8-d73c-b641-15e9f0915daa,3968687158,4704991826028630834
+9191fa58-1646-196a-aa0c-241e516154a3,1814889344,6594902123515683631
+75c01939-777d-f88d-6ee7-1d7dadc3ccf3,732554180,12107216073870777477
+8d99dce9-fb88-18a5-65a0-243d721fdae0,511077235,1476705904027460694
+10fb40ab-7b8b-d57f-93cb-978d6b551ba1,1726480339,2706416506495369709
+70be3fb1-bcd8-2754-c1bf-af6a2d2684b0,2776550026,6416892204854810067
+aab21c77-e7ca-4bbe-9a25-a23462eacee8,3104574795,8775612651982867363
+81de21e4-5cdc-5ba8-909e-ede89a61a25c,3261529681,7097013489872238738
+55db202b-3697-28df-c88f-e4f7ebf7a0b7,3927625832,3574082428556584208
+cac5933b-5918-ab74-fba7-c0b8c9e7de1d,1753593960,6037265307481277947
+1295da76-1c2a-da53-3d21-d62c9aeef022,2792258831,8118305861607583120
+ef9464e9-bda1-b81c-d99c-93863c143605,4176484878,15728303560673229637
+cf6bd686-62e8-aa49-1472-8364a85c15ff,3706944793,16712144016086241790
+47a644f5-62da-fd95-b842-bd7a704a6e4a,1407431011,8433409517050415012
+c9b68e67-8d41-6097-b360-f52b8b6bedb4,2211623075,2983230035674231946
+909d8060-096b-b8f3-3030-416707d1510d,2210473969,17340870798018294543
+a5a87631-a52c-5305-35fc-7222deeb4c89,1677848553,10309217302945895028
+89084b37-799f-58eb-b3cd-8c2ffd2459be,251981935,11067087381859926
+02759d0b-77d2-6a90-a726-60674ac0e0c0,3750373384,2824822915022889882
+eda72b38-e6f5-3bd5-847d-cd72428efb15,3968673298,18388757119143274715
+9096d1e4-6467-74a1-f8bb-87119be159d0,2273500346,16846835280139452301
+fac59051-d6af-cb0f-8ba5-842154863eb2,3370815376,5169166804198547378
+b730414e-b419-2b94-7010-c7da0a45c571,744155892,5595783094478080209
+cf0b3c0c-9a20-e193-6cf6-c46d367722d7,296015145,9864204456017415313
+aec1f008-1f44-b11c-73d4-543ac1823ea3,1632151754,4417294875176894325
+d674a097-87bf-8b1d-288f-c32c290adc88,3926641415,1650401233745919754
+328b206e-0861-26d6-d811-1ef97fe968d3,2839478829,1980979360719642782
+93c99f4b-3956-1722-1e9a-8bda9f4ac5b0,456398222,8092275864918516796
+024b1c1f-4d50-63a5-31f9-501ac51043f2,1186824847,8943690963633913036
+b95d07cd-df54-bbb6-5636-68fdb69aaf54,3339033234,11073265853808263446
+22264dd1-8ff2-1265-67a1-256fffbb18ff,1455535378,10481799166686791593
+49ca17ef-0161-e8bf-bd9d-cc84fa85aba3,757174439,15872527598391573896
+fd6cd672-2b9e-7015-b968-74bdbfa1ba9e,3084303451,11816572328202892545
+26b4a593-85b2-ff2d-ed4f-7874afa43d40,2680626489,12790206594054373611
+4c6bf70d-ee2a-df28-df0b-d7a6b351032f,2618839426,668947085327488500
+ae2a4d4a-50c8-31dc-adf3-c602009af703,1913311129,13432622675314798591
+bd3cd60f-4846-685c-c80c-81d69cb8bd46,1309246700,1883829591263474866
+91267e09-965c-e0d0-9a8e-57f1d1c1a09f,3302322354,13843531421933108103
+8e416bcc-9589-2d22-94e8-10fa581998af,320387204,16905695731088434852
+b5b464e4-67a8-dac7-c2eb-9ec0a89776f0,3731826718,14274292163417301495
+e50a59a2-572a-3672-a46f-ea06cc419525,977720657,1383713972952167538
+45bef580-4505-4820-bbb4-345d5b1d8c3f,3526061638,13971708894041662145
+8f0fb41e-fbb6-5415-ad7e-6fbaf85b3a7f,2842227928,15137435603474645292
+997a7e33-be5c-4641-5544-85132f92e867,1388287720,60540663057874825
+20b5b246-c312-1136-9601-8dfe6e8a5a4a,3216053382,5600326145878715043
+89104b21-2908-f893-c558-747a5cd8c245,3327914701,8805592016417887523
+5938b6e8-a7dd-6996-47bb-bf7b7c861642,999630079,12190811729802896071
+b887029d-300b-81d4-ed6e-4de953d1c45a,224680840,8305087279109584906
+b871412d-2d68-34f7-aae8-486595950f2a,899273123,1925694092726925469
+6d62ebff-0954-b582-3ed2-bdb2622874fd,307467524,16483940695821749076
+bdf4ca6c-77b1-8260-3852-5bbe373d5364,2347252166,16210576726008958818
+526c27d4-d38a-84e6-1c07-dd63014bda50,1755791147,17761851899444711302
+39bb6d53-5681-e82b-bdfe-9436352e35cf,1343186794,2814946690085289675
+f953b9da-e818-8f38-a629-8f2a15f9a8cc,918061744,17398885551734722484
+18784ca0-2663-169c-cfa6-f9a04fe417cb,2619793427,1048538277433444284
+3fd8b58c-0681-714e-b3d8-0e0f37afd318,1074279883,8913032964642949093
+cc39bd40-14e8-c4f4-15e5-085b9fe0f5f3,3392467140,8314426427465781651
+12da9556-6b28-cddf-1b82-ef0de920288a,3472627156,3014124711327663360
+284a2953-46ae-2441-a7cd-39c001b0c893,1307045031,8025436870331337838
+7f7d83cd-b231-2330-cdd3-17b9ac63c0c9,1125795257,1700009418304284176
+42d7b5c9-871b-f3f9-ee6c-64161c02b9a4,1156475360,7306174938614785848
+2d923965-6efc-ac5a-03c2-080450e91e32,3041370499,4067468538272459218
+6fd9583d-f9da-7de4-3cdd-ee72a104fdba,2113151579,2294463092884477935
+8dcafa96-15e9-a44f-b587-c07a1269b9ba,918238571,14843547162427475489
+de418586-1e0d-8ca2-83df-5e935077b51d,4210542957,1515783203212215773
+f64f6432-2f9d-2198-83e0-0db0e86a54f5,3684273818,17006824987613193928
+9e80adf7-f3db-e474-f24a-5e04bcf2061a,93344231,6358321234711018294
+d3136af6-64b7-b936-7c95-906771ceb6c3,3930530296,4058714463591438570
+f36e142e-5702-2bef-45f8-74ed726d40d9,385229614,10593506325617651904
+71751e1c-61d5-fc94-577a-bbd068d0ba5e,531110102,13226719061348225293
+b0d66832-a016-a73b-ebc6-963b019eeb1b,1351796067,11705526898003235935
+963f680d-6748-bff8-c911-7fbc7973493c,1156641865,16678161616127235461
+6ac012af-6a68-b13c-b4c4-aae4f6e77734,3042791083,3406656030209207051
+f78f63de-6edc-a0e4-5208-81889cda3a02,2408447956,11819992854048210738
+f753e67d-7cd2-eb25-551b-613ca8c25cf1,1410414890,8867165451372115708
+1df75e28-5d1f-a969-d14b-40f942a2a8fe,2399338264,1420807527661850716
+c505c059-d3d2-b1d3-4e65-5dc0b4508c01,851116422,2711573704321919882
+e748e328-e4f1-49f0-1df7-734b86f8d3bf,3732503008,1049024272295766113
+b333bdb7-7a52-4307-2c5c-bb41415bacfb,1295156810,7168992301723157387
+e6e75c5d-4cf2-bd34-35df-72979aad4653,1351814367,661045503346410846
+83a40098-1bd3-26f0-9236-d8a96081e283,1186711803,13053246311050697735
+3e49a78b-f6d1-fe91-6c9b-b76ca1fd5037,73751127,18129347257367241709
+21ce4fc4-fcbd-340e-8d9a-78640e399ed7,4070993523,6491076646784187582
+3c43e1d7-4b86-c999-21c3-776e57fd3eb0,2279560009,17427383874508305731
+5a0d3ff9-8b37-d7e3-4984-43e369c58f06,4245314149,8083547219419202817
+eba9fdfa-b470-c941-a100-d30c3de55f20,2164323556,11317237316606067680
+7919f037-dc9c-4712-00c7-601fe4dc9599,3963675919,3327357679260355443
+0f9faa4a-e149-92bc-9a39-cb7330d496a8,3451087333,16012026254685104969
+5f32c8be-c05f-3ac1-59d1-a09c199e13a8,4102775672,5246897277634722033
+93be280d-9962-9d2b-1c83-a2dfe4bf4534,849750151,12198573979893386901
+6023aec2-d97a-b890-d149-133a12f8427d,2957074103,12529820627303114421
+1dd0f7da-238c-002d-d3fb-6a04a8e8bb8b,1383890415,3657441620539904968
+dc499350-2047-9ac7-1c59-881e6f167dec,1823957766,7401920923348165301
+128b1b7f-dd55-f537-f52b-f9f4d62566d8,3910541951,475499184011445117
+dc404427-6901-f46b-8886-cb7db1278590,2266372709,5633096776803095465
+c30234a0-3a00-0db6-a577-b9bedbc57d36,2531801949,14320264452092845228
+379e8b1e-c189-6b05-9a44-251ecc9a218b,3115781498,1450494997012696059
+9618273c-77bc-823a-bb4f-5a43d277874e,4097668279,9596414025539678458
+9cf85bb4-6bed-042c-d2b1-28656ae37c3f,1804248772,7406150285572792669
+2e3d4946-c49e-ac35-b534-def2754d0828,1109816290,7133556458425841518
+9abbf1f0-339c-1bd4-99f4-9d01d6e208ae,969141552,7752667928981569532
+1c39a9fe-c8d6-d754-ed88-d2033c609ef6,4036981480,7374951175387951222
+8e2bcdd6-0ab8-b54a-f2f7-fe9c8f480c55,2923276122,12170878770141281529
+f8f94fb9-41bb-18bf-21ab-70944bd3434c,3889923178,16939479388741632553
+c79c61f1-1ee3-f103-e437-e31266dfba9a,1735801553,2985829784278123267
+50e3fafb-ed87-9082-48ff-5cfbd5e06d59,2797364273,10524268304181266983
+36f57916-cf71-99ef-eeb9-db1ab6c90501,3124340508,5372807725237294818
+23aa356e-5215-cbf9-2d71-392230f05ac7,958254842,4361472754602361596
+3eefe272-34d5-bf6b-7d41-fff760b6b493,3054879131,919531768068463605
+16dbf0b4-decf-cb4e-251d-fba78f1a391c,4247582022,11974361184318337981
+c97279e5-5652-df9d-8dfd-0e4543098106,3743291423,13603128876943932789
+69bef376-0362-5a83-7550-5921bf7e2ac9,3145908416,944589573864940236
+32272606-bc9e-b4cc-4b97-72df704c1b06,2549937508,10930777840142406600
+5f37ee3a-3c30-6a7a-117e-468bea152060,2929645832,12976184401364325174
+f0733d61-11ec-e10e-4e96-eb87e51cee08,2767621995,10835304266346819780
+b4d70186-51e7-709c-1fdc-67f6bed6deab,2392837972,4332078086509943885
+87190886-1e84-8f6f-2ba8-2cc8f0086555,1783454711,12351403888557347836
+c91ed138-d1a6-af79-2d8f-44f71081b430,4153054515,9082250716361301199
+4e529407-cce7-5f9a-1ff7-1606097af926,1628372105,5218102515809504706
+fcf82c91-738c-cdc4-4225-84708fb9e80a,3938727647,10821260605714800992
+0cbba978-210c-005d-d366-4021a804ec8b,2527720515,3468318396363356741
+8eb89e59-7211-fe0e-26e8-64b1733a9a15,2079349104,3352887947238890557
+13c02600-6dea-9b49-6742-ebff50978567,318044905,378065861912581161
+989614c7-eede-23a7-4dad-6559bb503dd4,2740117807,4681593881111949639
+72de9352-ea3b-8cee-dda4-7e9de59d222d,775519607,13369178041211751052
+9ae53d2d-a2f1-f847-005c-5170513f21db,592309888,9450576111100060507
+517fd90b-6f94-bca6-b1b4-a083c17358ef,1456082900,14908507512657707809
+803cee5c-a6c8-9c70-e099-695c66cfd435,3411349967,715783230587088106
+765bdb13-b14f-393d-63b1-0d854058bfc2,4013634044,5998528101220720372
+c62fb06c-b314-e017-31ee-772163699956,1586810922,7188975014655816115
+e71b571b-43da-2d9a-ce32-f9c2d8f8d9a9,3047375344,10763438563919906585
+5deaff2e-3a49-af30-9b51-543004fdc343,1705210901,16798892421991980329
+5bf985f1-533e-2575-13a5-b8d2199729d4,1145173666,8880583246851097494
+78cc8064-d895-039b-f7eb-b945c0af46b8,1085561528,16781938590862265059
+d5441807-28de-585f-24e4-a55205a5caae,4184612341,14752408670992170165
+b7d3429a-6bb6-dd8f-7a7d-83dd968cf3c9,1474513549,4353690443858761581
+df05a470-9c92-7407-46ec-8476ab1acd5c,4207508511,18082661764612228363
+aa2854ab-ba24-c21d-7e1c-c89e3a02a91a,1776513648,16680071724004424208
+c7c3272d-6243-ab36-dc7b-a8468356a32d,915783093,1444478765982707822
+1fc0ba9f-4577-ba3d-9c54-a6af5c6178a5,1325222400,6895237175963484912
+991b5014-a01b-ea1b-7d0c-67dff4e28935,3618523333,15113126673094219414
+b6d5274a-9256-7a1e-22df-fbc7f63fedf1,1109253016,10579787354950550817
+c56ba676-106c-43bc-5e56-6b33cb8cfa63,516095306,5851957894203525481
+be9e4fe9-3ffa-fb1e-2588-a6a2670e9cd6,1574501930,7050935700677345540
+40591d09-a7bf-5406-f765-f8d4193fbef4,3629228724,8909606547663421845
+627549cf-53df-3892-93e5-0210b91dd0ee,3108320336,4322787574696925381
+e0686e44-2a1c-a81e-6b35-483331a0809f,1675396970,3108653185645747142
+a625a845-cb4f-a1aa-5bab-66e5937b6260,1299564178,14555621811105002204
+49cb01f9-c906-7c0a-61d9-ad553ac6b7ad,2769805238,5151543816898740816
+d899ddfd-ef89-df51-9f46-cfc1fb94bfa3,3556944162,15765643791439466081
+2a15aed7-bf18-bae2-7367-9a61e5d4182a,2636177188,10583329603667202321
+2b0f61b9-0d25-369d-80e0-96d246f14d17,4074640750,18334479435558209490
+847bcc83-e0a3-8618-8d95-a463d817fe84,361465063,14892731451304398006
+56d262d7-60ba-9c95-5b06-15ed605ee03d,1579596743,15423113333308320889
+81077acc-112d-23f7-1c21-91e2bb5f9f07,88395509,10465558213479961968
+cd3ff66e-36c3-635e-1b92-9ad1f33199eb,2921449999,5061442775937941821
+42754171-7ccd-3a58-9f7d-6322130dcbf2,958872678,10793440913960025988
+ad7d1df5-89f9-a773-3c1b-462721075f78,2590537004,7818320089821412811
+ad1faf86-33a7-e8bd-2111-ce341d261c82,2198448433,5559491913731559355
+55f93c27-5d34-6e6d-480b-961e0a60f54c,1341180249,3473605859480723701
+89d6af00-32a7-bdbc-c373-c20438cc2f3f,3934934918,4788823842149252655
+05964524-4749-de27-63f9-a62ca47df02f,801798733,10674193787938729784
+99d31e71-d684-d8c1-79dd-ceae4e847550,2576432381,12395391084856195608
+0aaf0186-4deb-43ab-93c9-602a5a6e82a3,3088796458,9234684248960844733
+a30579ed-5758-f5dd-b83e-801a1cc2e7e8,1420329711,8385615415380260861
+839eb4c8-60dc-0beb-b89a-9cc7e2277a64,2341095278,4387879090690314258
+a8e5b852-ae69-efa0-c896-dc4b388d8015,2471474917,12216395855050537907
+177d71aa-643e-aa09-d9ad-bcece7b78e2c,1408998219,15491299534690075194
+3ceb1d19-2d6a-a34b-faca-6e7e95d1a2f1,92370239,14552227719251353701
+935296d2-a42d-1950-9258-f0325d96dc76,4021432220,10334510253497757947
+233cf89c-fea9-1e3b-8040-fdc173be4f1f,4141130056,11984639386261446019
+6e42f5bd-eeaf-6e2b-7ac8-d5fd93c8eb32,1561965096,8497233849352095606
+3999c318-9bea-81eb-fff6-f8abca9dbce3,3664508180,11596819436195068148
+2b4b6031-713d-c3dc-ffc3-7c4791f2170e,3761486035,8473102718900824357
+6df41385-8b04-abc2-5969-5c7be5e989d0,3948311756,8674388363253057297
+7121a4f0-dc69-2760-1ecc-b617636d63d1,3939751057,12212919165334473253
+c4389b7c-ad54-acce-b67a-626db5fc14c8,2197885721,15864485172490742931
+b1d4e79f-6145-b8f0-e07a-48b829e9fdff,1725400798,14731873160870117645
+bd2031cc-2728-894f-5097-924981e520e2,713213803,8309315628675087090
+cef8f776-e465-45ab-7800-f4d48de0df1d,3564517324,1617588948205444882
+8a673414-be36-bafa-bebb-b7471ce44876,1674117347,17701271804024708366
+11bfdc0a-3275-af6b-81f9-66c5976a73ad,1454383250,3036726977072128507
+292fb712-6dfb-2c56-fb57-561ff5460fa8,2998152695,1308808308075930056
+f265abbc-9a3e-dfce-bffd-8845daa3e987,4077155349,5975644579964564206
+3e13416c-593e-ed69-db6a-00933911f61e,99729660,9456588440706420714
+efcb298c-fe1e-7063-6c48-73e84dc4e92a,3496074503,5269080342094944577
+7cdf91c7-25b8-bb99-67d2-bacd89c2af1c,3054858382,14708276910187904199
+1056af42-3ebf-4f08-9d0f-70bb51a53b04,4077502241,175237203239855533
+10e235b5-8349-6750-168e-01fa5d06f08a,3319222758,10672477838288086231
+470f4b84-8fcc-e7f5-fc65-ca21477a07aa,2255570865,8423191589920747365
+de8b2ec5-d444-bbea-240e-44385f43b995,3825922116,13009610117249534697
+55cda007-08b7-227a-2b9d-8eed22094702,1653349939,4524495763548187540
+35647307-f7a4-436d-e0b4-9f56a5c8d80e,3301368955,2357565139548648936
+0c18e278-924b-1a1b-003a-3f4e983951d3,3161153914,14853986576621479539
+2f28405b-a012-b1b4-5b07-3a1ae1f0f3da,2993674114,9219862559288838690
+0bc8a24a-887e-87fb-881b-5e9474543588,2271608528,7239790713917596576
+48998f12-5e3e-4e3e-5e97-12cd309bc32e,4174093005,2384589606115384218
+8a7fea2a-178a-ce49-4fda-798bb82abc7d,3421821318,11224313911527807604
+c2132765-f259-42da-0aa6-0faeb98029dd,4056265510,15980407328871727773
+e8ba05ae-223f-7a99-dd68-4d5e5b1f3f90,3187319113,4159181177210425566
+006667c2-1a4d-ad3a-d3f9-ffb9d29c0d89,3270947115,10513689180709344769
+63958232-bc17-1064-0129-a82d8efba6af,4107807041,4305741261798048506
+79f5ba8d-03b5-ca44-38d3-ed47de251bb4,1885954859,8500025853592010395
+d2fdcc5a-8f36-884f-a9c8-754c7da611f8,868237352,4798304526834772290
+6c9f8c5c-9c6c-c707-1380-a9edbaab0e8d,3947673432,17506276311224619702
+694e7603-01eb-a35a-9ce4-eccfbe23335a,3857098353,6060990188527851335
+138a7254-a65d-192f-de83-0e9d1c189a16,128027515,13473269915040042441
+09aba682-1744-2d3e-ae01-7bfd1baa9b1e,1593071644,17879523099852041158
+c26fba08-14c1-2054-d456-fc4b8016be7f,3881430059,7525651740727855899
+16f19ade-f819-f1c2-9d0b-2f9a4cda9a43,3902569486,9820206230565250076
+c124fb54-f4b7-8750-c1b3-7a19d17f0e83,3273899278,16893382847553711595
+8e2a3c81-1b1e-95e4-0f9a-20ae14535d69,2593103275,2926394961333236779
+06770ee9-1f56-6264-2524-0f3f7492845b,3275635635,946269407401485446
+4ec4c2f7-8ba3-de10-3559-90d75cf7ff37,2598086428,8263604262537474291
+fa19a594-f385-4896-1be6-fc0f98c12aae,2239208847,11991824127432735929
+a6674d8b-4591-51d5-d2b7-bc008e4728d4,2272472907,13550910650001626689
+8470434c-69f8-9a29-d744-49cf0c74a925,333741832,11010903168349516635
+af5220a6-1a10-3f12-bab5-0f09ce31eca8,1507716842,3743697200742295675
+658aa802-5efa-acec-3ce6-00e6a47fed9e,1684399342,2434236907609198511
+7e6a1b2a-50fc-e22d-72e6-1f711c7018d1,359280527,10625809798106424373
+bfb34fc7-ee0a-5634-8ad8-57a03fa19ccc,3649485743,14670438461345414128
+64b7e34f-6d4a-3c85-a7c4-5ff4c5355410,1095507570,10597719259089138615
+17e8ad08-6c45-5177-513b-1bcd1b0ca84f,2487308893,1860929522357424660
+1c7f1310-a834-67c2-6230-fe32f71b476f,2113462375,4671043844383092373
+25ebaa34-9321-3bce-b805-c4db216d8f3e,1921584807,14849104466911289835
+4ca2d629-448a-6d4d-ac1c-79c4adbcc1e7,681196535,8591974029916448295
+00fa3669-37b6-9508-31ec-a7186b65d4f4,1289158274,7953497105001657889
+de71d491-6049-3bc4-9f92-dc0f49393c73,1192308134,5294936994999601779
+20b7b549-a883-ce4d-e732-13704cc7b3bf,800022654,14978034963314546698
+5c4f3ec8-d259-6f14-42c3-68f0d704ec6c,4215826652,9218260711802496929
+dd38c1c8-2a38-2aad-0249-d62dc4bb4ac4,1677390294,13754089269813847721
+30db0545-1899-4a8e-78e9-aae2127c3e39,4174335530,13620438756384077523
+dc7ef5f7-598e-f0af-4de4-f7a6cd9ad0e5,1980355334,12061766057442772265
+83a410d3-82e0-fd25-cfd4-4eec8dffe2ae,107080671,17896828456658590002
+ff8d0b40-4b92-561b-16e4-2178e6c28004,793853013,7542844083891978492
+b46492f1-9a9d-f9ae-ec1f-c1cfb8c75e86,1005772359,3045601938775414252
+01b9604b-1dd7-8598-ae41-961bb992e5ec,1388666798,9540754903362636073
+c244f9a4-279f-7111-2737-515aa5c46239,3629001401,10797880075455691222
+a309b58e-6ebe-8dd3-2c36-b76ee54e4635,3565968573,5729465041462931923
+e978b380-ff6c-4ab5-5363-5c266da978e3,1756328729,1064177369245090569
+5913bd91-0d31-aa74-6750-758c6490e43d,30935312,15423044495617534451
+9e0d92fd-05a6-a561-5d37-57686cd8986f,1290875951,2506313679126366927
+bd8322f2-5f32-fc17-6564-c4ff48061918,3439679633,5657049286090750179
+620fb9fe-ca87-10de-5ecc-e1e155885a76,1914938530,14722981208317002837
+197f1b6f-d1c5-94bc-07b0-05b0785eba72,3984194554,1930187138416209434
+e55b8c07-244f-cff9-96c9-c638ced5b315,885611560,3697644289718534733
+caf90573-48bb-92bf-d5ea-0dca5b15457e,414843716,9300636000584487993
+6fc7aceb-734c-bac7-cb8a-cd05ead4cca2,2342208233,5158814163850836831
+ff54b275-7339-fbbe-3447-f96b299fb4eb,1472556539,14318122421450346231
+96dbb035-1085-6039-771a-cb7e0ac66084,1753630815,12038717736940803670
+07ac3742-c8f9-4631-75d6-1b99be0a657e,3488546652,10951529415059530395
+b022eff3-dbb1-bbc8-336a-258294829067,588031484,16634805571030530048
+34fb1b83-d9a2-61a5-1cce-37291be31153,3277157579,11899580576904521841
+ecab769d-fcac-0862-4113-bcbc8a4cac12,4121238273,17311853844786854572
+87dc4d6c-eb0f-4ebc-49fc-8662c3fa3077,282163852,10297322038078358441
+c4891404-9a8b-306e-9dc1-27b9afc9337c,3797612712,18360594423279020899
+17775acf-59bd-04e8-27cd-c18dc3c21c55,340799326,14734628843472814831
+687497f9-9b4f-02f0-a77a-c98b5e509f7b,259116161,6236997804593178007
+efc60fa4-8d28-edaf-d236-213f2e8cba24,3462388942,13781140188827521368
+44ac3a8f-4576-51b2-19db-996d968a1307,1994207683,16826439990943298433
+34747f96-82a6-bac6-a5e2-a31503b11ef1,1706846358,11404289123349211318
+a03efd64-c0a3-52be-caed-30366cb4d32c,4027993860,185167996588843904
+e35f28ed-e35b-e57c-dbbf-20f7aaf9d592,3771689757,2416913255342406662
+bce088f6-47ac-e99b-3c79-b7b10cb3337c,873793934,8585872581268190575
+3164f9b0-b906-2c48-892e-0a91052fe309,4130958639,10824705303294517547
+9db35b82-c54f-f799-090c-bf20399ac95b,1145747937,1659464907645868287
+9906a44c-0a07-aa07-d4e0-292139969797,1592842704,13816998570713291744
+c32d6216-1d77-2b60-4b1d-a37855b1f21f,1878061194,6442721094003003438
+9a54a3b8-d4aa-a503-6001-dcedec91cfd1,1577444141,12946913915616849615
+fe94c073-3155-8682-e006-38ffa2b0551c,1954619562,3274740882634896416
+4aded3f6-5de5-1231-b69f-45bb3818fb22,1835518517,16442609062016762205
+7ba94ca7-0205-975a-c577-ed153ab51d5e,4204423066,6856631199765064864
+c3e238cf-cc28-3f45-a928-a2cbd01d118e,3589997549,7753806043450770091
+1cbb35c6-cddf-eedb-74ec-877255d03c3c,1625195076,6089769805067356106
+2a371d1d-2498-2657-2717-b1fd26f0fb83,1894782874,16350000230185755753
+aeaceea2-c877-4db4-4e5c-ae3b2f350ea9,1731445368,1931953018363714186
+68381ac4-b50e-d47b-6473-552c1c5dfdf2,213800466,12649343173182476684
+8f9591e7-ecbf-d807-e31b-d39fa4775c7f,1531067207,12603203854217748957
+7db8b02f-c119-7d6c-bff5-ec5a3b0da876,702235675,5604410426391913355
+6a67f5fb-4209-a7ee-d9e6-8ddc5389b9c3,860214274,6761781642406255258
+96a5b603-0734-27ac-8339-4641e1b78e32,2058767726,12691012388812436954
+92edef56-06ae-ef59-3781-f1a953d2e0af,3710277150,10978587667979205784
+a0e0fe93-46ac-c1cd-3af4-04992c237c04,2988467100,9789504936801238651
+fad09d87-60aa-1430-6843-f17c35bfb561,1360404401,17641125982734965019
+e9232e9b-6dd6-fd64-667a-b1c2f318692c,3535346079,15870223702563440374
+2e3853e8-8bb4-33c7-453e-b4b1b997f925,1856545253,14896641999612615455
+543060ce-0592-bcf8-399c-1ad6771c84e2,233943735,5311042834165508219
+d3a5e384-3cd6-e061-6813-cbf81fa441b7,1166020498,137454805598440890
+a5c8e5e0-811e-4840-34a2-70c451ea76c0,934184092,12941863431449537942
+8c023178-ce05-8408-4338-bb2f138d6a02,1573246605,16442866463852684320
+81eb78ea-c4e1-df12-acd1-2e8a79e3528f,306094486,13875138227338999039
+a9b12451-246b-ca3d-38e6-2084cca8e119,3319814345,18322680277835350660
+784d3b37-64e7-fa7e-38e9-604b97f34cad,3371538798,9231567675661967011
+5cdb891a-6870-cb16-acaf-1c9cba328cfc,4138064368,11864767012085941091
+aa04bd0e-20e8-9395-8edb-0caa41d9d2ed,3431888439,7505681281076767162
+262fd760-ea77-6642-7bd2-d0a102d4a4ea,537917607,18006239659043619114
+436217fe-3976-ab70-ddd4-c42829ce7525,898800006,8574341738881177576
+9aca23c0-7478-d7da-f93d-73bfae165cca,183595887,12470485004531301608
+ce00b573-331b-9f17-9680-74775405f5b1,4286667492,6039300255634147992
+a96e10dc-21a9-5081-fd1a-dde1d4cf53cb,4087459231,1409204442423310254
+1d46916e-985e-1b76-f709-2e89c44f2e4b,3053350310,7603453285896609715
+05d79aa2-a57b-e592-3656-fac31e650d54,3157386410,16766143573944030089
+3018a316-1254-1145-3c70-fb82962d07de,1960143563,4169381183795723411
+768f2873-95da-44b5-5b22-8e220fc3c443,4281377442,14623774451404821259
+a03612d4-6ecc-cf29-8c9e-8ca534c53e55,863048441,1009781489379705602
+6ee0e723-3b6c-c5fb-a9fb-9a5015d31b18,626153084,3969722052921246272
+ac8d744c-69d0-f4e1-be25-f8e885d2b544,629112711,11332929296496499292
+3dd56c62-08c0-af7c-087e-a903c7be756a,2702394189,4581537686603305963
+321f7a2b-31c5-eb99-f48e-4f657583d4d3,235821683,12443968821806937877
+a2ed41d7-a7fb-ce87-8982-f3058c8c34e3,3364186550,1755837178590209099
+e505140f-2e9e-335f-f54a-c02ece1abfd6,1510362679,16507234643591684211
+5ed56838-2710-0e9a-ea80-d71dc6bcd9c4,1527753756,16494979390209305511
+8625c87d-9002-e661-3597-90f2ee8a3629,3902798817,12483669662086325115
+4da9203e-508f-6df4-1cb0-38819932b723,2400666686,5089331278299486076
+22ac22ea-da0c-ac7d-851a-4d8d89e4202f,67521836,5988182828383083956
+dc9e4ba8-8068-55d1-8edb-e1bb5acca300,2371908884,16214497518651080592
+ff7e9a85-eb76-6b73-2305-bbfd51bb2e37,494361435,15196882898391623154
+4e1a516c-2679-4835-fd10-085cd4db1c54,1901906265,7262173110785089085
+f131ed8b-8feb-651a-d840-4502c85f2a5c,1758015386,6020599126903971757
+2cfc42cd-4874-570d-3e8f-0cc9370b34f1,1511734732,7864359197866949537
+3c86eb61-c453-5684-1833-c1f74e3494db,2905550536,15982871453197607126
+0764b61e-2535-60b8-8715-df90f026270c,2962941989,11503781206345400555
+da1e01ec-d169-4510-7cac-fab8ba763f3b,494762402,13148318062499332506
+4a69751c-d79d-a91e-8225-255c0f6cdb98,2823154833,6085702892856508699
+dd455ce6-2b53-594e-a275-7f18d48d3e1e,968317776,18189790416485257716
+153dbc78-f141-cc01-ef03-76eef6eb2b7f,678817532,2936805031395230345
+dfc6a4f2-5969-e789-82e9-25dbead0a523,985031335,12074201326749785924
+4eb47198-0334-8c10-b7b5-ffba602d8361,917825512,18239610723809075792
+3f82a804-fa3d-6562-30a4-fe60c569f551,3243290228,8212868439504898199
+d1a8da84-26f6-6273-5a9f-32d3739923ae,3639393730,9934576920784681532
+c406d689-703c-ac49-b407-2ff5dbfc2c1b,141271504,16815679178669578330
+ecb2ea12-f04d-446a-e180-e7b523daea62,2532496875,11210884558047774519
+904bc892-2f7f-d633-3302-c0efe65fc02a,1023177206,11357036765940875170
+ca9dafc6-5c63-4526-daf3-1758896336e7,247991860,13730874015014169575
+be837eb3-4b64-df1e-8ae9-2106f1c7aeeb,901464387,8330803442071775249
+692ce3c5-8381-8622-d944-0590b120d3ca,104383434,12747097736358324112
+d806f64e-929f-14fe-0250-c3b2b2d8c541,1405101713,12119383763738200374
+d0aee9d2-1f48-41a4-68ea-88199ffa18cd,4080476234,13735166985365116115
+9a31ffdf-6105-92bf-7142-480332041372,3006410082,9721780829768208068
+e1348bc7-df22-f3a4-23e2-3dcec58dafe4,2044292712,1898582072635583386
+83a85441-ddfd-174e-bafa-8667d1262082,3796489155,16575110557335405085
+6a87ef01-adcb-d994-6750-7a73ae9ff27f,398402105,10350880938540399785
+dbf8477c-8428-b20c-911d-72a60ab60bb3,2970797632,2849365681020057231
+82c35319-c005-03de-74ad-d7618f29663c,1020237121,9842689140785708280
+06bda82b-b7aa-c10f-8fb5-27a527c2e85f,2372202263,4529554269549758046
+1e7c619f-03ca-e098-7a02-91554041b1d5,676413936,15280472940397553212
+162585bd-c6ae-420a-ccac-7ba0b25562fb,2338577782,17799630151506265316
+cbc38fc3-4f51-2e26-8a5a-964af6a81d1d,4130500086,14060796501882611843
+c0b7c36e-0df3-836a-d26e-71b66fc69d43,75844894,2128472044263841982
+bd39738f-7dae-eb69-62d4-de623080c520,1492536917,4301650968296808441
+568a6b36-1221-043c-cb9f-20c103a8df86,2684823629,7217238398677549905
+b91a94c9-e1a3-cccb-0ea7-f4dcddde0aa3,3521461499,629726266735556553
+9cc4107c-1953-3aa7-09ca-c9185823818b,2786017999,1539403791396480573
+e158fb86-c684-1f2c-3548-3499385e5d1d,2894052358,1121753828932605344
+c1d6ab3d-7012-4a54-2a1f-9f43f78cd154,4045132280,14760139803680688481
+0c329525-0d3d-3ade-0e88-01db8833240d,582748318,6716375260705002522
+e6c2489c-4eb5-998c-3f42-667e1d3d4a20,3471883954,8009974508181688513
+83404379-1b01-85e2-0837-71952b3fc642,3986007254,8258705463991719503
+b63f680a-ab3b-154a-354e-dac938b96793,3238041310,16738285918552128349
+0507960e-38f2-3ff8-b76c-aaf29d84bb2d,1930590292,17882781460596545151
+543227ae-9327-1d06-fd24-755415139963,1413150532,7523494600075430419
+4e0d8901-a6b2-2bf3-a443-d0aaf2f6ae81,1456629947,3871044843897306862
+7dff54f7-a470-43d3-7b14-5fe381e658fb,1454422598,3867511123822407292
+b1ba4e6a-d039-1806-5acd-59e5ac0a7369,205217402,6666782170369510287
+62fbed17-9f18-ceb3-0e58-bb175c628a66,1934085412,8556159262699969024
+c3e8d72b-db43-12be-cdb2-1578e80e9281,906966567,3628604172908246348
+011ca3bb-c926-e3b7-8b74-254c115aa46f,1045468131,16391445381481200442
+15866bb8-1393-c80d-d8ce-a26052eea95a,2451160050,17601012230299411120
+c7739974-b722-3d3d-3eec-bd02878c5d5b,566353921,11738412056505909837
+36e7c8a0-0aaf-b960-de1d-71c68d890b27,2296563492,17910447109591865243
+888399d9-72d8-19db-2afe-130db65b5234,3850095993,6715080637588169865
+39b09b6f-19cd-c8e2-2730-fb33abadbd75,2569493183,4817599150939729255
+385721d7-5a76-ee94-10f2-d5a76496b9b4,1661378445,4749712756774077570
+23f4c01a-b776-3106-dd59-f29f5e12cba2,1661607538,10444674612147948661
+13e90c9d-9b63-bd18-b9fe-e9a1f2a64c58,2789552026,10513387915446649963
+be8d780d-fee2-36b4-59f9-0db85a4504de,1006710978,874873245002061772
+a5493bd2-0d5d-f386-fdb4-d6f9d30821ab,2023735735,3255448533149067665
+3cf79185-9610-bb26-2779-2186425dd0b8,3010738994,3819295890811542399
+0f3d202e-1227-12d8-fd21-a737a6df2ee6,1621485854,16681256750047417614
+3d639614-c922-60c8-1136-3ece097115ad,2755101280,7609321760319632384
+cdf5b69d-ca5f-90db-7e1f-fb3e21f030cf,21241139,16144662150912361428
+4c832262-0142-7e9e-20c1-8a11889efdb3,1173628862,1214192980411902368
+b6cc366b-2bc0-3a02-d048-fd1ab2bc4c7a,3652812746,2125638455835178681
+36ad4dd0-a7db-81ef-9624-b372eae1c475,269720462,3384035695979358459
+d0a64c5b-74bd-25df-b64e-c7461b50fe7c,4149963808,11009081681294374650
+797bbb9f-42b2-dcfc-ae70-248cdc43cb4c,3851336469,1372761378937987341
+9f283d9e-7bd7-4c76-7b61-62b4dddae1de,4032158070,15100067486453562354
+32209516-8d73-bac1-0e5c-4501acea6be8,3750182116,6864969039001082156
+a1406779-b12f-8581-766e-2da51deaf306,3653613442,15621796083475163266
+4f93e782-c947-1ca1-c0a8-f3651bd3eec6,230445338,8910349151542844542
+ec5583a2-0207-7465-8f4c-c25c8ffd839f,1863877130,12537593085724102205
+2d43e325-acd5-7873-2875-f8d602bfc46e,887536520,8424302438793954271
+ad58007a-d292-dc42-b8db-ffdba2a4d87e,863652273,8248620552726933551
+197fd68a-7333-d1fb-6c56-7be56183d546,2977821673,8001319450101534134
+39031259-fe08-3d39-5e01-6c259e67930e,1525983934,16261117494443717913
+66630730-afc5-e83a-e912-941f22888d4f,3483223871,7130849582328644081
+8d3ef0ff-4edc-b0d6-d019-ead349fe7545,3952260126,13284443559665399728
+6914afa2-7eb9-f03d-d8ec-35aec39825c2,838397574,8601843028118855380
+7c463ca4-1baa-d877-634c-3593cbf647f4,3744933205,14201027170730667624
+7c403a65-2c93-4c9d-ee32-efc63fa4a2ef,2922876789,10870982371115216495
+61491daf-245f-090f-9056-a0a6991708a7,4237904140,10695675799161454951
+59381a43-22df-3a90-13cb-24e868e039a7,1904924666,8498389070124033852
+04b44cf3-682f-18e4-72ba-bcff2172eeaf,3911958498,14305999505432380031
+63208eaa-e309-2239-ed2b-6797bff871bb,2143285511,7038133559363708403
+b8714553-0c07-02f8-8cf3-a329eda95d92,1271478733,16200674017757760445
+501136aa-cec5-f0d2-1359-09f187174dca,1102286342,11605897424023752821
+34bad823-04cc-177e-b1f6-ee4e8b5b1d09,310359634,14611434895154445466
+66043b31-0c92-c214-dbeb-6a68b76d2dbd,1466760743,14408808829939410583
+737744e5-55d1-de79-faf8-c77a526da2bd,1327195277,13984985811030750854
+cbc53302-b0ae-8971-0d66-69fb3192176a,4217979122,8397877376816288321
+50269c2c-1da3-71d1-c642-b2a882d0e007,3899867624,14482883240215381712
+30409439-ad9d-ae42-3d39-02871ca85aef,2433442598,8134818580163077519
+1f3ff9db-3312-82f8-06c7-10d56955df2b,454663071,15098768307827139235
+85313ebd-a528-9cf9-0b60-0b69d5e8ddd2,206465275,11368112160244652309
+1960cef1-898e-0ea1-2f3f-2e9a9441521a,365104341,11967122234215366913
+33c33d5c-a655-d559-9dc2-3cd4b218536e,1361042273,4510593814295758215
+1aa5518f-459d-76c4-0d0d-368291642dbc,4010391394,16235430055772690098
+9917609d-16a9-bd84-52bb-c631ed261bd5,2898664042,3862663859181405207
+6baf93b3-b444-df2a-c789-79a4b8f475c5,3812579949,10744330497524750673
+e2d677a6-e1a7-bcec-f72a-3fc90fb0f984,2072286311,13278200645595334029
+23d0eba9-498b-8b16-c9d1-9f20bb3a5e04,4095198916,13035785844427600440
+1a986194-e19f-f00a-f9bf-244ff9b1c1c3,1062982452,6850438052665709352
+5b9933cc-d81a-bbd8-9501-f96121752a29,4049434273,11598911415637790716
+59794ff9-e53a-734c-7fe0-363f8b8bfbe6,3498418724,1763934147103914367
+9100c390-e46c-30a2-5211-c9a5b336df88,539867225,11501652393538666407
+ade0ff8e-e3db-d1c5-885b-634ae217833a,1834494217,2995645485342210224
+ac6d9490-6bdc-8524-f89c-ee6d929698b8,2615918213,3908806718077565999
+b67d385a-17ea-343e-40d1-540e0999ed8c,3932513531,14247997365697601611
+0b1d76c0-6fc3-7497-4bcb-4d33aaee9a20,1069836465,12622509096022112575
+f04fc9a0-0681-7317-5993-858fa1630c6d,3983062176,15275020053257293784
+d4dcc90b-fe39-2126-02a2-7fd2b9b31ae0,88288325,4458239054143289027
+69587c81-0dfd-b7d9-f522-54ac6155bb6a,3947073091,2483285145066905752
+3de045ca-720e-1e54-09f9-a683ed8f2461,2536049786,4272287443780334384
+028a11c4-223c-8380-560d-3bc14e2e51a9,460548045,4792012378036635855
+cac3d9ec-c818-d7ee-59d9-3bf7944d9896,504269678,11962634664358671258
+a85d7a79-f313-9a92-d257-c8d319cb4bb2,1836588598,2796131927708174539
+dc8a5586-6622-c33a-7ba8-64547b2d27a9,2371065036,5595308691892156355
+c61cd3c2-7d80-a54f-4897-86cfb7c37914,1751524753,9465765995885751346
+2bf72d0b-50f9-b9c7-1c8c-571b276c40a3,1587508645,13034857384494977865
+c052d840-ee08-5fc6-7cc4-9df3abc028b2,4066125728,12801558112844228297
+3e27c918-d6a1-c10e-8ed0-472f809eb7c5,389549500,6203946449511958210
+8632f1f6-57fa-c9a1-88ae-3d7a7ac59891,1290926403,5048726873543829865
+9084e8cf-eb82-4986-f36f-af1e01116e53,827054709,16819528709986247173
+404dcfa4-167b-f1de-bf8f-0f63afee95a7,2024342858,18234625399023489950
+2f848b5c-14b5-6fcd-2698-074814440f7e,1468771273,609498074299183318
+eb616dc3-8997-f1c6-7a73-cef9583e4965,2484196842,2170421146258214463
+08953305-d128-2833-0eb4-f4905cbd9e62,2998673821,12414842282812156468
+b4871b3a-ce9b-c33b-c108-2e46800be667,1868036999,8464772622803820915
+7703de60-0d73-8d98-9566-4d94f908836b,335357289,8930319750823525401
+d6f54dd5-0eb4-dde2-3e00-691cd457e531,4271071457,7003799357484828717
+16bca8ff-1722-62bb-9e01-e5569a2e488f,433865417,12376776869781572437
+27020ff6-ea84-bf89-b27a-c5a3307bb85b,4242409622,11984112716216056093
+203bb375-2f5c-fcdc-1c1c-052388dbd83f,3341447748,7512844001840089506
+e233927c-0d66-3fa9-4294-89226c404844,2095948323,6915432183943908582
+a1232e02-c007-fc1b-43cd-b0d8738c00e0,3869643024,8770395086658285605
+1abd37be-d34d-1fb5-bf55-11102c5cac64,2000892797,10051696273516020322
+5780e082-215e-e0fe-4bb4-7fbf15e0b96e,2027175387,6067215817959913225
+86189ce3-7b00-590a-f7f5-76625a07d067,280351568,1481391749229181615
+3990d84a-94d5-463a-35c7-de13ddd8d0d9,2965273191,10772397280516347692
+219609c0-36a6-cf26-bb80-5a62430772e2,1888465510,12865068795340156518
+81e2df8a-2f84-ec10-57a9-4faeb8fe5d18,1778475183,18405650926024126020
+2253528d-9734-26b0-6bf4-ba557e5c0bd0,3228226717,2749972113938234232
+14ebeb89-915c-e38d-8b08-92b87f306a49,3640773410,15145452860523095724
+ab945244-2aef-fb65-6383-3bd337143699,1856254939,12954172803099891422
+6ec0bb71-cd4e-00c3-79b7-9c3a0b70999f,2721975007,9666689581729762227
+600e6448-f13c-2a8b-4273-59a5dbad471b,1084487969,2501529075946164209
+03ee9689-5783-0dd5-d5ea-99d13e976e9e,40898592,2869749673232697932
+74d49b1c-1db2-dc62-9a4e-b04696616164,2883745509,372722727772051509
+a6b3cfbd-cb37-ea86-62f6-6565fefbd5d9,1343984947,18037413171977373087
+e69233de-ac42-a8a3-8d06-fe6503c9d0c8,296830879,5181181036756282287
+3ae7b5de-4ad8-3455-68d0-1ab914a96d09,236139845,13585300519309296948
+c07ad8dc-db54-c5a6-f0b5-ad9fd940b0a7,1292138826,419232576766122279
+afb0da08-fa30-e258-4fe4-d2ac665598aa,227555115,12984499774437411548
+bc93d8f3-ee26-6e8a-1087-3ca00d41fda7,1243119361,8992858835037922227
+1adfd3dd-f097-b2ab-3c8c-4293ac523811,2061613842,2362319269533055094
+5d039ce5-2dc3-9f15-8304-d0bf66132ffa,3734356397,15481473611492550378
+00e01156-2f3a-bca0-0f30-ed580d0b2ae7,4276558831,13829358397341804855
+a2f7e16b-ec86-255e-3fff-6f38b88a29db,100453645,9629770020585063445
+4fe792b0-6ef5-d4b5-d5c5-48903fb251e4,995556984,2675922867451087208
+3a8b99c0-10a9-8e50-85d0-d94b5511edbc,3040329893,8003739653034167716
+f1c3e34e-8ed8-499c-dbd4-48a696a6530f,2222878433,15140334582845150201
+9f66c67b-5e2d-5c9b-a082-71787dda33f1,3417907516,11283030991317089036
+4257ea62-8745-22bb-f11b-0d0b8550f131,2283658959,12262185470785371454
+7df7a1ef-8863-1a49-4de2-88f34990123b,797011074,14602331107098484098
+41b44f3f-dde5-82cc-2812-c785bc4a5248,871999388,10474418831709392455
+c9b300f2-0f2a-a68a-1ba2-5458c4b373da,905966960,799590165446034570
+fb946b0a-94e5-6c87-1f16-17049d9f8cb4,3316151858,12803368599065385702
+e12bb139-217c-1bea-9c10-152d58c790a8,1681716647,9246967195783228377
+6fb8973a-f3a4-ec6d-50da-1b31a59de07d,1979483486,3486762202784159418
+5f88c9b6-7f2e-bd49-572a-08dd6b837116,587150986,14409680235414907297
+b7a4ace8-210e-f617-b069-99441ba45304,998218677,4631405900243126268
+51518dfd-81b1-3733-51b5-9da69ef432b5,1637993389,14054231528451967677
+0f55f255-1318-9788-3dd2-95a58c290557,4253555600,10528719151350342858
+31bdaffc-529e-2c70-b575-aba19209ffe7,2868836615,6398460671544144129
+0f6fdde2-f7da-74da-3af3-6f45a2eadde5,478810230,13028195231206742078
+19bf3b6d-88bc-2cf0-2014-a680bf954240,611513116,6570438297606860833
+0e3d4587-1d67-72bb-9421-6d9f674f34a7,4020102587,17780035441026941332
+00725e54-e913-35ef-d0e4-0e3af78e3fad,2178173406,5711042557578112719
+4898c825-8427-1299-d13c-681e19b6dd06,326517499,10977791548355124736
+34393b25-666a-2f33-038b-f936c4c47830,1997997569,2830047416016954298
+a86a5d4c-ade2-b7c4-7456-a43bb7c48a84,1633087464,1919280494659718752
+383cb0b3-8269-0175-361d-3d26d52b3118,425925982,7682137240945335200
+45f8bed1-21e8-b36c-d7f7-d1ad9c0192a4,1059197021,8949335148254455857
+3fa3e626-0fd1-0a6d-627e-f7620337d0f3,3871493452,16354818896512927878
+f819e62e-60ff-efd6-f104-29b7bd4a2a90,2341933196,12221576931777661702
+94c13cf2-3c5c-90f8-14df-70d758b15515,4281766701,2862974452424647897
+c28d5b3f-78e2-79bd-1147-d808d29403e7,3585066639,14184612883678552075
+d3f905f5-071e-c923-6ca2-228e546452c8,11699004,7002937838829009228
+d4122d54-5925-c4fe-e35e-0e534f8428ac,3499673735,10831963941787571449
+d1789d12-4a03-a816-5b27-e8af3fd83cca,133767467,10622100700123670770
+35afa1bf-47b2-52f3-abb2-7825c8c4ebd2,254558730,6564073461099130679
+5ea32fd6-a07e-c299-2e6a-979207cc54ec,4037321900,3558091434810406104
+5b4efdf9-9077-1f93-e2bf-12b986e7f3f0,2424539275,9188802638756555910
+09df840f-3d80-dbc2-5c82-c1ce03c25262,1069622263,2519894876933588763
+fb9ab930-5858-2751-04c9-6a1abfc0c47f,3493100304,9347500220896118498
+3ed73fa6-46cf-a78b-46fa-46b13dc9944b,3779641979,12721144325904850383
+60e4df6b-ebb8-1d5d-2deb-fcd458fa850c,723788992,16885034909161621616
+171c5a9f-0d54-cbe7-f1d2-4ef714e2daa3,1689386024,13830743927019259371
+bb6963e6-ebce-0fd8-c068-89b5648e23ea,3136753844,16241400222178402445
+bdc7b3f7-d98c-5cd3-72af-1f906f0b488f,1986696926,4917452095470970323
+19ef14be-2524-e2e9-f4d2-3eabf9cf8424,4249887362,2107640489044778113
+bc23c5fa-4e78-6946-d607-89d5d095993f,1310459797,4330336044748378385
+c864a21f-c418-cc55-7df7-e07b3f2f40e6,1603163141,18298394881241293988
+088fb157-331e-15c9-c2d0-c31f1e29ec77,2510393338,10234572690856877536
+d76e3ebe-bcf3-cebe-6300-bef8d6d289bc,10540525,672946796620407099
+e6f1bf21-099e-8b3e-919d-508df8b8dc6b,2439133527,1415781702168692199
+ffe1a4c0-312c-e50d-ee83-a50222ac95d4,1889794097,2882720536791617688
+128a2f8c-4414-c4e3-d3b4-9591260c9102,1897217741,14329929966085082298
+257766ed-b4a8-2f0d-2d53-0e7ce9367b8e,1842505659,3140503894233939409
+62e8409b-7906-b827-9af4-d089871be29d,3511838964,13889691705053676243
+47ebdfe3-6622-6d02-a182-f041d3660b8b,1711220416,12311407385029837548
+f20b8570-1e8b-256b-4608-182f4aa56292,4268051481,9527430684698776695
+730a966f-6933-2b9a-0275-f952f66f4d4d,3883340272,9964483941341422440
+df43a914-d9b8-bea5-b943-790449cd84d7,4258274927,4766265653544321817
+64759030-416a-497f-d159-0572706b6cbc,1537017809,3657446408122798786
+0a8702a5-8b2a-1323-b0b1-1227d990d83b,1428322615,16487887012803779875
+2d773352-a84d-c486-1be2-ae4dba19e76f,1515193361,5770205202104164794
+3d6fae2e-83c8-13de-46ed-55effe4c0cb0,1615588370,9770690891567593224
+30fdbad7-2555-2477-a264-ad2574f1e5a7,3662591453,12334409148926447893
+27d372ba-53c8-eace-8558-127deb512bf0,4024649805,12107676714958169084
+b21fde95-5dc2-3941-0989-08fb92f06eb0,4203296044,12371314622215550649
+3d31ddd7-7bf7-4bfe-69fc-faa85dd67cdb,1984552687,13260859149984071121
+9f47ba4b-5215-e4b6-0c9f-a509f26ad8bb,3590316581,17638556669019085262
+6f5b4e2a-295a-532d-95e9-a8065e8e3ad3,275304465,1959110279750601952
+3db0f8ae-54d2-449f-778f-c8d35b181071,2990036691,7334439536850231756
+7f3440d7-cf40-43d9-163e-e4a8e4b10cb6,256820245,3255637648483593353
+87b8797c-e7f5-7a9f-4558-d3faa9ca9522,1014358236,4245295235646705631
+afd2e2c5-d417-b776-73d1-422b44f7f31d,1836356215,8709484308227976507
+885da31a-fabc-04fc-4fff-69532dc835c8,1505331027,7085124610249989769
+cd359487-2889-ca9b-4607-c79b8c62e217,1825831444,6330192970110174583
+e6d7ff97-5dc2-bcd4-5396-13c439df56dd,3229017615,13737738143976059807
+fa767e03-99f1-a5e7-f7a8-7c375f8f34ca,3510805088,7878760352707509509
+a553b7bc-236d-df6e-1896-cb29df9a51f8,3580047924,17967794725225281817
+cf933e4f-ead0-a7f3-bdda-3b2e14d95442,2764863066,12153270236796547538
+4a972f38-1c0c-2546-14c4-1035d30dde7b,685422220,1919571034924667902
+878e493f-566b-b829-0fe8-b5986a0df9a0,1108490286,8266418470361078611
+0ce65f0f-386c-2068-4ebe-1ebd1f75f651,703287237,6811730638898157382
+084d4379-01cb-b2ad-303a-6655029d59d6,4190759287,7504392713882485419
+b7fd690f-858e-446b-ab23-edef0a3374b0,361936504,875441995979067062
+35c14880-88e8-997c-2387-e0f63e38cf2a,346386863,11604884658991012375
+0556440b-237b-d904-b670-ec8c0d5240f4,1788455194,7283715579739483132
+4bc35610-00d4-625c-14b9-14846285f66c,2418931361,949011725659914877
+284513a3-3833-a948-813b-15398279e63c,1150021245,6707037903871601597
+8763eb80-fdee-a230-8044-34ce5ab2f001,2859294840,608809095078899891
+72b3b576-f191-2071-6f4f-ffce74d3da3f,3948199705,2668677862619657827
+a0cb1836-e803-7f1e-4561-b648cc3c0379,346110978,11713579644718992983
+5cf3fd9d-a8d5-48b6-44a3-1b601127c287,2315351161,7150920172922951560
+f69e486c-1b37-335d-7179-11b53e84256f,882365250,3051044208127797727
+a5b7d14b-ff52-de7c-a4f8-fe5742889a1b,121215873,17290434959100204780
+ed8c668a-060e-5700-fd17-10adc8a49e87,3807466334,4797707410728153259
+f269b12c-d2e7-6e17-631f-754dc0d2de85,1450654730,857050625984244514
+66112e2e-33c1-c713-190c-fc0bb34effe0,1066842915,10655611597486191713
+7ddd9ed9-9eec-4a4d-9163-7b853b79170c,2966875258,16298770686769077554
+e67ea058-3878-578f-b030-54c835de6859,2315782722,7726576092308458380
+e29fd290-7008-eac4-abb1-36126b52b6ae,533192983,14966089585710275253
+96018133-9aa7-c2a9-1a88-3e212ce82ba5,177322755,813413758600258434
+203e4bfa-d98a-5cf1-1039-b51d06aef207,495196470,4344275462639796998
+ac013692-0548-1c4f-822d-8595c3ccdf25,1949215665,13972515422545447262
+dec4df69-95e6-18a1-7010-2dfc9abf225a,922215352,8568876890066893286
+4a1c6ea1-372c-be6f-eb76-cae5ab7cc34e,2309438567,8240101248294684517
+0d1bbc87-4209-7bca-f3f6-8482082bedc7,3085407326,1478430340375575852
+44683191-27a6-aaf8-ef4d-6e1a6a350633,1179805479,7047872068164521486
+19597e78-33a5-3235-a460-0d318ba73d37,1854378299,4663792448897460866
+204014dd-62f1-da5b-f8ee-428c7996e287,2480783466,17228113972960863702
+c7430973-a544-50c3-1cbd-1ab36de8caaf,3003802931,16782239796080343703
+ab88c677-867d-449a-1d0b-64dabc84bcda,1006032564,17016651762204476594
+6712c624-439d-0c5f-c4c3-3cbff2c1c8da,625675842,10862256202071444655
+1e076c3e-9b34-d697-9ff6-bc5f934824fb,2706894549,2236157805378997037
+ed0f7f14-a869-7073-10cc-02dd71a2efea,4284553915,8452865244132551958
+3fb5d580-3d19-c5a3-d4d6-f646a69556d6,1366162284,11083846596705145728
+14f22fc7-9ee0-a50e-376b-c8d1a6753266,1167804287,7500619558445050159
+b8ad4dd1-3329-8c66-e33a-28c2ff1768a0,2619628497,10222942534572101940
+c3407af2-de09-9aec-a181-1c1eed6397a6,1306491765,16221087070940400120
+a7a99fb6-d2d5-f1b8-fa1f-be5f89e1bdab,562743113,8554456812912226424
+448081b3-828b-a182-932f-2e36afffa8b4,1619757440,11351615311936043475
+f64cb23c-7e06-67d6-90d3-30ba5f487ad5,47512874,10985518473555765291
+7bf5d629-5f3f-1654-8d87-a0062612d38e,4163610511,11062128585605295774
+cef8df8b-bb21-8387-5360-483c2f9053ad,26740616,18438467957106660114
+0b1b7d05-1cff-7531-b84a-d8de1de8e062,674372675,4550696740149725205
+83ad0c79-1c48-c375-e657-c594d160858d,2661812805,12848844065175090599
+99dd5950-68b2-d589-6a0d-1d85f396b373,2213526495,5764163102355932546
+b67e8f4f-403c-efc0-f947-70814761870c,2336409982,9392886067634916129
+5608b28e-e7d9-bbf0-f012-f4b9f1824a83,2082757472,12461368529703315414
+f5d0a8e2-4754-e081-9cf1-b1f13f087b5a,3784207755,476379439003464008
+d3bad4e5-a3e0-4a54-68eb-def8d92c4a99,2128778667,7914693783137183767
+313b3267-46fe-e7fb-4372-29499bcddb2d,1585524992,7500277517843925151
+44e79468-15c7-a003-e40a-12f1fcefd946,3899746873,3978049120596289026
+ec8e8d36-feb3-2280-56c6-a08aa1c545e1,1200863845,12147021819980564968
+44fda67e-428e-5068-a863-5cdf7f5bd05d,212322615,10876173956176956362
+8578852e-f065-dff1-5c68-23e58c070dc8,1223816049,13984198082088559018
+abe24796-6823-c4ab-0c27-cf371a4c857b,3704429329,3045003642858661357
+d24298c8-1781-933d-a3f7-0f31efea7d00,3304865308,10960259948874227764
+8f7ea2be-1f3c-a092-385b-35706fdeec69,4139586786,12647968949754775765
+f2ccea68-9b85-7303-c2f6-84c2f3391b4c,4177635039,15320726364740913772
+bab2811f-8678-361e-aeaf-b215dd3c583d,1400962423,12773105499569316307
+acfdafdc-f382-83a3-c611-fb799823c8ba,1703059303,4911286764684943591
+e196b950-9e60-5118-3f14-adee916b78e3,411265492,4445219797128973633
+cfde9849-b3f3-51c2-0879-00e146518df8,4099873590,3722414698354616553
+c395b3bd-d4b6-3d79-a862-4d956a31ad09,2265495045,10168930138103045737
+79120972-fd25-aa35-bd4d-53f02b647bdc,1432880469,14114938942349082902
+0e1dc963-40a2-17b4-494d-c4509effe6bb,2570521016,8096459272484446060
+71029e08-a8f8-225a-daff-f226e4aeb48b,2976659393,7078649327758634673
+4511cd10-fec3-0e45-dbf3-51e641c160ee,1165230808,93376183705207126
+62afa93a-62aa-08ad-f121-14e0dd6b0024,1438520235,5739058508878605341
+0fa765a5-19d5-7d99-c8b3-4023eac96726,3671350834,2979540463275052743
+4f6c78db-14fd-f450-75cd-257d63d09c2e,3649838222,13544377932952533846
+131636b2-c5f5-42f6-0e85-cba127d1b627,1346924083,1717511903425279844
+61c085f0-5a6f-2888-737e-6213bc1a0add,324811511,6868619751186254612
+2f3a8e6d-8e92-afec-af88-0e59371033bf,2766430387,13888010495765337999
+35e68a26-7e7e-e023-7660-f82c80100465,1247054464,11377884235280078232
+8e80c2a5-c9f9-57f2-985d-dff62a57fbb7,3320692065,17835393962162967816
+97e8b0b1-6417-9f0a-260e-e7b4e0437d1b,62969778,12444086086418351485
+df40d27c-f18f-2cb1-19db-fabaeb86c173,2875380396,7755651831949436613
+bbc36e81-53e3-1ae1-c83c-b2c5388e3dbe,2596136723,5294376701476075279
+ebcd6d5a-f7dd-a5df-9840-d84efbff48e9,3300211258,7453392430274804699
+5ce714ae-e91e-708f-1c64-b6fadbf50484,637237144,219721877118793292
+588cd416-a937-dd7b-1d91-69c18609de06,2639578749,16807072122053176185
+8a8ca363-d837-63b6-67bc-4f6571c53599,2123844741,11542850018981905602
+3c587e1f-fe6e-ed56-0745-9297760bec6f,2566808406,929900052205438063
+6d886932-0c98-44fb-5102-c6411f0354c1,245850790,17780836061700347660
+cbcffd5f-d78c-ff65-bf05-4df84a732159,791874580,8980548737343000892
+4f4253b6-a33d-306d-7182-35cfabd52620,2639562402,4575348775668918582
+de1f8293-d8df-ff43-f10c-cdc191a7d5b0,1470739161,16393102215758707937
+8ea9fc25-119e-cb84-b204-f0ecfeb6a310,1825282219,12430878789259915404
+de6fdf1c-b7dc-fa2c-bc78-e649660c61c9,1938839011,4644705781637980618
+ba0f6baf-2e4b-095b-0138-33a5fa6734e5,1788541712,696168487937644542
+a6820f4b-ff8c-272a-2722-b3c2aa44d970,2153281621,10947270173549342925
+4b1ee2c5-4067-d699-e6da-a2bbe4229bb7,1162977923,15993736649704686308
+837de429-a41c-525c-99fc-d09bbfda3e82,2633141301,5815961687703350871
+8fdbeee7-2efe-b2a5-d811-b4f355870b99,2927306307,8192742858277971714
+94779a52-1cf4-07d6-bc32-aedb77da0d77,286191328,5364062367382016093
+b3c32990-e2f0-fadf-523b-be15c32ba28d,2976808921,16729663775041794737
+629df93c-6b00-6180-5a44-c19a83a94993,1610743763,1165593571381474607
+3a1f0730-95ac-c0d8-7e54-ef67f141d1ed,3086254176,13167342994613000371
+ca522083-9a51-f30a-b1ec-6cf78201933f,2921576251,14691827824075484985
+201e9ced-23a3-5cce-1553-6f0896ec90b9,177114743,18039794231347853230
+ec5b9d7f-c806-d083-41eb-777781a95932,3591767364,18178757110664134902
+237b98d6-3a08-ee55-8ebd-a951f8179f24,3359062987,5454600724239666033
+ef56f092-17e2-7310-5549-82a6842667dc,578418549,114349442875427016
+171123ef-bc69-6ced-774c-53ba093a8ada,3912631979,14738531556297650788
+511ae8cd-1049-9cd6-9c5f-55a1f69dc2f2,174226465,9021654632224051501
+706e00b8-a445-35c4-ee88-c4d61b9c4b71,2060052903,13482528249947722452
+d2b2444d-7712-e7c7-e5a9-7412e49fd137,4272118681,3227198219513381985
+8720fc75-43c6-a9f0-b99b-653176997cf0,3321166961,9823509185299454950
+208dbb17-a6ac-79c3-e898-2658f14be978,2483033054,8185357295767740603
+d4503fb3-1a7b-7128-9a00-a0357e9c1efe,478711786,305059962914189577
+2110ec6d-818d-f753-9e8f-1ed1d9037eef,1525894195,12454092116575325605
+d23adbf3-d3c0-e403-f33f-b89de8f2945d,1235899936,12110041088353496591
+75982b01-ee3c-12be-aa41-f84db96cd796,3510093968,13736433121962057466
+748dc946-b0dc-64e7-79a1-4f7f264e3756,3137932508,8499384172203080460
+7b1cf9dc-d8d5-d6b0-ce2c-19a5f8a374a1,1416302028,7030522644533298536
+2a32a324-0291-bb3b-68ed-929847580de1,2927193852,12449041082126745917
+72122b08-9c41-5299-ab88-476c59df982f,2421076186,7428815012879755919
+aa0e7b74-18c7-1d11-6d85-db033e163086,1322946207,2750159932906653012
+510ba053-b0e4-ecba-100c-184c42ebe975,2740185593,7887905711261585057
+14449f37-2ce3-0a72-fe09-b9be592da3b1,3174847365,1754337852996983785
+31ebb286-a96d-b016-0a4c-eca5a4467d6b,1498293880,4055664727515792049
+c71bd3a4-d186-7a49-610b-0f2f4b3029d3,4075652544,15893861756306468776
+d311305a-15e4-2d1a-03ba-32cc33207a14,3541343783,8093431913436347928
+ed5e1f67-36ba-6f27-d571-093816ec55bd,190668270,16979653009466834185
+0ff9d64d-7644-4ab2-b762-b8a878815930,2972841901,2355910330516797799
+9b2e3b66-0c07-5908-3c99-57f9ff25ab5c,3387284970,18040981722117612247
+8d862254-4ded-eebd-5c92-c0b7d9451e05,3230402174,17629448302840457715
+b539dff5-4e35-97b5-fa81-b4e3536a6058,3432588392,6293907840321882347
+014cbc4c-4b1f-86f3-a788-bc9ba49510c8,1744529371,4509678849364041660
+71ffdd84-4448-61f1-6671-ad0f4f610595,966045721,14107398122296156852
+4c4c5ca3-0747-5a98-760a-512ae29f89f3,2047095387,2428767600653879944
+94136d81-8c90-b72e-d7d0-7cfe4f59eeea,1671709750,6538269587067175842
+981bf18e-f336-acaf-7387-c6ca55c47c95,533070805,7932194367314621135
+35f66ff5-234b-05a5-82b6-db4c27b4bea9,2247236870,6811343242304914336
+93796c37-40c5-2484-d3b3-f43abd73c121,3252045896,10798056418325839903
+60a03a9f-1f6d-c806-3a0f-00957af1ae7f,2571685761,15089884379449739927
+95d68a18-271f-b693-e1eb-0f39ac556e01,3973825501,6121501945650335257
+2cf7a9f7-35f3-fa68-650e-f4919bd7f3be,1459156065,10959516061924849010
+b84c6ac4-a9cb-ccbe-48df-33f16d4bcf1e,2656876967,17403224919156576104
+62785c73-5fe4-0d55-0df5-4856f20bdef3,1426799559,16899080418163647412
+9e4749c7-1240-c401-398a-0ee8632d74ef,2530219289,5114306748992110836
+b05b1f1b-8e35-e47c-9150-27028147da83,3367152,11768576817520535104
+0960b439-1cf7-21dc-3e34-20bb56a594cd,1651777960,12742453977028193660
+4608bb92-2075-2744-6aa7-1ac0e63b3ff1,4173796023,16181629651902665944
+56ed2f7a-578d-ac23-6ec2-0ea0590a33d5,265037265,12193077893322154441
+f89468d7-07a9-1df7-9837-1fb2245c1f78,3345837683,4442990820458581104
+d205925a-655a-db37-cab9-0c88629d3615,3328886246,11214629805320498389
+0d1e4fa5-9593-a6c6-738e-d29d41ec8b99,3157461598,3229863930568659483
+071bb875-3de1-7b8b-1404-9a2a74e3bbc9,3508004807,848793249994170556
+9d26f3a6-20e9-d66f-1208-6cb2808ca5fc,2666389895,9232226995607970465
+95f62033-50d1-3e6a-1628-1d4ea5f9fdec,2547576864,214803819570361055
+d57b1425-112f-9c98-5f52-1bd31e475005,622143462,11323007389406424675
+ecbd8d70-cf5e-e7db-e41a-19e4b8b31977,3069408359,6097181925392149887
+c914c34c-0d54-55fa-8c5c-83664aeedf03,2369531993,7160010009753189446
+30fd5ad5-6b06-efaa-dc09-ee345239bba3,1293746733,5083318347206843423
+90d092f1-4a11-5214-9e2a-ee50ee30fa4c,1447698237,209427029734775045
+183e53e3-5c67-1f8c-d328-08ca706ee9c6,1517827701,6979370979803739425
+c92347c2-8cec-7abc-bcf8-cf092dcf80fd,556795635,9077724789197027957
+b60159b0-c797-786e-d612-005c0db61c1e,1175509215,2701123497691011810
+2763979e-3b82-72f3-15eb-c255e52bd068,175027146,2910461689472808414
+c83e8ba5-4852-1520-0d9c-b1d5b3b46de8,2875498594,1380206265986274706
+b20923d7-51a3-aec8-d204-75fab6ff0b70,1623768048,11462452514660099993
+2fc2c01e-2026-13fe-ccb3-e5a551706151,3264844141,7980219624270658389
+5390bd50-a75c-853f-5fb8-293466aa3f08,1985251862,3735543324389776672
+37aaa541-9e5c-7e05-ec18-cad4fc6eecb9,3169313184,14683012054261327655
+6852fa9c-c035-7af3-e773-2336cfc4dacd,759294303,8590998767715086375
+a77a3251-a03e-6513-22a7-08846b56449c,2717695970,15438242295850705794
+82fba707-359b-6904-0bc8-f1383953d322,1653312421,14519332752171629519
+f8768f7d-c6bb-79e3-0b42-bbcb2b152a75,909231917,15334089951796300541
+00dffb84-02f1-603f-cfbb-72699964e0ef,2540696370,14795089725532142042
+04b3e88f-5288-547d-1c04-30f623dc3367,3644738680,17653534782124370099
+06e27db3-2ad9-7f25-48f6-4ef31dc6c19c,907991811,1804858038620865779
+43576b20-7616-7564-8eda-51e639e52bc2,4051027829,8609567436179454726
+762dc129-e2de-14f9-6c1c-f4066a6f49e0,65433207,8290062589804285883
+f1e6e368-f69c-88f5-fd6c-33fab2593a6e,4257208101,3635768969111339557
+6305dce1-dda1-d80a-97b3-6a75871a1e10,685547934,16175946799070463416
+8e4b09c1-5ed4-d947-f3ee-382641d2e3e1,1630480678,11288393159008621255
+c1a7689e-ea91-e718-70e6-49b1b3cac601,446481489,8171211507098619503
+0b59e465-6dc6-19ec-06aa-9849ce9cb644,2252866802,15657005561625692100
+83abc04d-df84-eb9b-2bc5-0aca31fe57cf,3450360064,14442544691391455202
+342fd097-fa24-79b4-4611-e131df2abc4f,1791187267,5267762204954597622
+567a28e7-2a54-b0bb-7987-a91a694e3c20,2074611935,12621097983011827033
+4b8216d7-88c0-f5dc-25d6-4a7258a7902b,193215480,17270457408989699578
+bcee1049-c3f4-e8d3-04b7-700c5c673d1e,3468472917,9629317210479442961
+119a3c6a-879c-65da-6d6c-0c2f0bb7476c,4016129420,14585365527986980917
+1c7c67ad-54fc-a316-aef1-44e245cae7ea,820701504,8564032357815101250
+3a2f26a4-4060-01c6-a836-ca89c69e0fbb,4185788719,2196847890110070633
+bfdcb45b-16e3-9524-0bb3-f0f7d690d46f,2050360682,10127656332185445343
+4e627615-a276-63db-8e06-fe5b20d7e922,3667508238,13392351436406187063
+1d025068-1870-7ee6-03b3-675199aa5dde,533091777,2955231800208019778
+def9eac3-c6ee-0c12-4946-5648a2a78e61,2614282617,1353462734303925963
+3e535a01-c778-d5d2-88e3-4e221c5b8fb9,4225556985,6268827727122008615
+913d5b4b-cf3a-e2b5-cc58-b5cd836af1ca,3278042702,2380263471032784982
+0537a602-e113-ded9-0208-77d3abfdd905,2211794414,12770904514477846443
+28fc2eea-baa3-4f39-d554-21128d0d5249,1176119903,14806203118159061999
+c919198e-be81-8cd4-cd22-645f647a783e,1932966329,12996689576905268713
+dbe96ea2-613d-d7c6-0159-8bf16ead4f09,1190267486,17625986926631888417
+7c82b214-3cef-a02e-66bd-50b8d6b2c2c5,1017121381,3728961242099735752
+5d2148d5-28c7-c329-da0f-f0311badd07f,4087917589,110812360055264453
+c6132934-6ec1-f84c-8e80-f546cf9fe9fe,947000707,325156099701313311
+af48cf80-5072-2650-1f80-904ccbed4fbc,1951411888,14718316823551163102
+10169651-aff3-8684-8c39-c4ded7586058,223293917,17839912943156594374
+10f574b5-b42c-fbd9-f673-04d76d24874b,504815107,9140325267615301352
+e185089b-1e78-99b7-9257-0ce832e2fe60,2630271913,14390108301485707387
+cf783a98-43df-db46-0214-c2fa374640cf,4027613565,397273328462832233
+0489c243-2d3f-4576-7ff0-bf7034a51650,2854244745,9095201192890755296
+54597a4a-93a2-9fb7-3966-2ce563172e19,850822260,16136607561484359740
+e38ab033-f446-939b-8def-2ceeddcf1d86,1340040813,5508367558931963825
+cbb3572b-bb31-5d77-f671-d3e7cdd46c80,2927549953,17396279383396031250
+8bcbba08-ec8c-5661-1f92-85963a10922e,4119283288,2414736006988696078
+60f2b511-9966-37f8-6455-2b66dfc991d0,2651638411,15089409406109689423
+62770247-405c-a897-0435-afccccc19ab1,2382548063,7168242886231594966
+797385fd-a733-a39c-f3d7-851c4ef31ba8,3042486423,5054222524569512235
+6a50524b-6853-7ff0-abd8-235b505bc6f7,2538681642,11284160425190300552
+a0136421-fe01-a14f-a9e9-5bab7ca488fe,1439100665,13975286929065142326
+94447f79-1a82-ea21-6979-902e0604c956,3061762865,9607143321203542284
+2288b8ea-70c5-4fba-ca9e-d90a67ff2c95,2323383585,14434897713831889060
+af5d3c4a-2983-9b17-c048-abc46df22e60,2164819580,17443261640654561515
+2e7516de-fa15-4d76-aab2-cbf286747dc7,560746355,135616430744310158
+cbeb1459-69e1-b228-a913-6cf5f5fd306e,588172107,12127050609265480432
+0a0e01e6-0e62-8eb7-2756-37d6c0db8638,3404807697,4913750725825031296
+a2e6c87e-4d4a-548d-7a58-abd842f88163,586628188,16148926186484581129
+6601d4c9-0eb1-73a8-36e4-694378166601,1665390131,15780899546888655052
+47a0aef0-9704-d4f9-dd9d-91ab35680757,3705506231,10531116440802836521
+fb536794-4025-fbbb-deb2-bdd9a5cea88c,3788203364,4219755521796842969
+ecef92a8-436d-4ff1-6d75-84e68c0465ad,2507248281,6125335217779481801
+072808d2-639c-ffa9-af43-3b05aedb66e5,2910715109,11522603915276096281
+fea4b599-9e14-a7c9-5997-3e604e4406b7,2978485773,14656763021834597740
+2c6ad67b-9bc8-03e1-786d-c4c384ae130a,796560305,13524743662513558643
+a4cbc745-b9d6-2773-5ddb-786b710f429a,527188149,6311189952838983170
+3e784f76-e78c-d84c-d2d6-bdf5970d351b,3231493918,14964032166531856816
+8d1cb173-1895-da5a-4e78-e64884b11fd7,919932840,16736950392860330056
+63880059-78ed-642e-8143-fdcdbcd33a43,2740719342,4195314304446496110
+aa4aebff-7890-6ca0-5c97-6f72e7f55d8c,665895819,13715800971107834003
+dbf5c8db-8a64-cda7-3e62-f2a264685346,599147578,3345803340952448664
+2a297638-5f08-06c3-5052-a71dfdb8ed7e,147173161,18206954299033466008
+ee1d2deb-931a-bc2b-2f4d-444102a02fc7,3333423913,9268548836123850256
+362cb2f1-61e7-023e-b3ab-96ad5972d259,1661036045,496489413029700885
+e20c13c2-5ed5-16fe-a23a-f5659aaf1653,77936615,2574723417762192987
+79d6f169-fee8-f6f5-7b5d-441e25d1e51f,385287649,7693117117792654900
+f3f77761-f524-ff35-dac4-a94b701d1b4f,3063971087,7245880301709464136
+593982a2-3bd3-3f84-7dc4-1893e8d078a8,1413898686,12164457603406993028
+dd5d5999-a5ed-508d-2e11-a330a2c78b88,2961537201,16982635784504363768
+10b8a535-2ae9-43b8-504b-e3f2cbfcca8e,1642731908,7323383165502108133
+3ff28063-8391-0236-2e43-59b7a919dba5,4141041575,14048393634782600834
+f427fb4f-3b1a-f153-f202-858240f54af4,837963932,17184256693859101324
+ee8ec96f-a336-04c6-d665-3c29c98b1835,3959350625,10606908054037477811
+659a73f4-ed18-3913-939d-7ce5e4e8995b,2748380409,12040589249299299412
+136470a4-9dc1-722c-f488-772af9ace97c,2461804821,3711528000280468161
+293b5baa-2548-5911-3099-bdf814b8171c,2565893355,17035012617638578609
+26b81e85-e607-4e43-ead5-550ff8815eb0,2574895568,17325314824873873233
+1a368413-2cef-1af0-0f55-6b447d375ecc,3872667076,17590602246543409814
+09b3a0db-fe5b-9f7c-a59d-24159a9c1baa,1885946583,16077889774903669761
+069c7ea5-8bec-2e2f-d00a-cb07874dd7c1,60171560,16826907386387248830
+73f3f265-52e0-dbe9-13f7-a6ff5bd46f8a,1157365179,13773323384565575524
+5a3de753-25c1-369a-7bc9-e0ba05cd982a,3499055449,12638205033450313731
+40c09b46-85e3-1a44-ee33-f84a58d6de53,3053838442,5334875236105773778
+bc852137-2c40-11c5-c3c8-23ae61e11b1c,568121729,11622586810046592802
+92330dfd-30b3-eb54-8c1b-6a12e9c09894,2315530079,18161941842423354787
+27dcd9f3-d3a6-b437-24a1-1b02a11fc5a2,1963622736,16495314465685567755
+ed9c2bf9-2808-c6c3-f356-d6572beb73d8,3160554991,9581532520562781408
+3f5e2c0f-4b61-c3c1-4974-7f0cb8bb604e,1698925263,3309799153954021236
+555952e7-b5fd-a968-c7d4-c60cdd2342af,3183189290,18339155199484200138
+0e4a2a8f-d289-1544-e17e-08d8b0494587,2505288073,14561180232416091838
+521eadaa-5386-a511-026c-1117e258b065,3046968074,13811042920839180760
+2daf2aa6-b883-96ff-dbb6-b4cd5c530afb,324744778,11052934678490425201
+ec49a94c-f457-7dbd-501f-19d4b7f58c0a,1819898925,6224282931701677796
+23c1bc97-9a7e-aae4-df2d-26343177a8f0,4054795797,5408699054505004288
+b15b97bb-f5e7-f0de-1738-9a98671a54d6,2945494338,4987161652202284063
+39629b22-b596-5d18-3aa2-df367889eded,107660547,3810496480239220741
+12db3a00-fe21-e889-d755-7cd7ed322451,2755574225,16496185777211598262
+e54c8362-9f0d-0514-d146-8d27c638d0eb,595392206,6541723576903176217
+60bfeafd-dd54-a70e-df4a-8dd571ca427a,3430666257,17940853873589949690
+bd25a3eb-084b-dc30-b42f-b03db8c162ac,3471285879,10317516546071463886
+17503e54-e100-f288-7802-733917dc2f83,1703548405,7534957802231806293
+12882ab6-5651-b125-469f-d3a0ec44d0e6,3026933052,274673661325221832
+0625d773-2856-de00-6cb0-76bf2ad00370,6291956,13561590796557970252
+4182ac26-dfcd-2b20-2a19-24c954083a37,1315948854,8448217178752019301
+30f78432-31d7-2888-a713-8be0cb311a4e,307601292,9172494120415013947
+fc6ab5cf-d73e-8a5d-5103-87cce62a315e,1345161305,15283330976251668604
+da718a3f-998a-85b0-8afb-a02cf009d117,3301767499,4073193181717229014
+94f4f1f1-c814-f265-bdb4-ca9786978769,1540109048,3373946156130581136
+c99a74b9-5532-10ee-c18e-1a07dee9b4a0,1546441159,15525692580655276875
+0ada0442-f83a-6d5a-db9b-7c9edc7a9bdd,2105134518,17262636692088899267
+232b3e65-2637-f5d6-8871-9c81619fc052,1924614660,5025637095787399020
+ba7f52a3-ff94-92d8-b33b-e6312077749d,3364404521,14720625803110261715
+6ac08fa5-4a2c-96a1-0521-cfff8bd0af80,2231700724,1428853055750897799
+581b8489-96aa-3e18-36a4-6c978de80c9e,567578142,4553288955839675981
+15687edc-37dc-2e05-e4f7-ceed5756289b,476939115,12862254865031211432
+24cb87b5-791d-6982-b491-a601ce1441f3,1015529387,6063716125000739900
+7f1ba06b-cb07-136d-71f6-7c79313268b9,27285487,14655984206037678607
+42b7bbfa-eedc-d5bb-894a-760912386f08,3891643143,10660691196266983613
+536bd531-cce4-d5fe-629c-2ad81f6fae37,2496831657,3055252137639991647
+c0b2047d-b9d3-2211-da07-76fbd6b7b0e9,1819505691,15839441454121734096
+dccb7411-5080-7406-b4e1-3605b9636b92,3378757052,8549944899594945952
+8617b673-94d2-2d80-525c-975faf12f7ab,1075203360,12498618253999593042
+3f1c0382-8f72-395c-be6c-e4a1e023486c,2464573943,10961676312407084643
+bbdf7623-4f91-ef56-dc8c-d6041707a31a,539783039,7369166052552983270
+5e786390-2eee-6482-73ff-b0204d69cad1,367338284,10908591818622206346
+b63f815c-d6ea-afc0-a1c1-9a0c283f113e,2755472493,18088814978730077401
+e01e49b8-34d9-1434-5047-b1294de01e66,3201143069,15214383748419782207
+25e31675-1697-4ba8-0ac4-7fb319ac1324,707834340,12357553062743993187
+56ae7e22-8afd-11bc-41bd-456a0973b33d,3263563929,17496248647147091268
+54db1800-d88f-d139-65fd-68f981549c6c,1257806298,10438104939590948493
+5b4bb9c1-4ab5-c3a9-3802-7f0997435130,3561146033,1648201139431604563
+b70884a9-89e6-aafe-38f9-03ceb9bb15ad,1104731287,14521879956973632896
+fb26bc93-9ed8-b032-e418-99a71382ca15,3522171778,16262726620634984913
+15c1870b-09b8-95f1-3e24-5c34e752f730,2264369372,6384492978685500103
+2db3e396-25cb-7fd0-4d0e-6889f974bcff,715913424,14504833546290748734
+78f1f778-a59f-51cb-98e5-861aedb529cc,1850102370,363861483195522020
+9d0fc24b-860d-9766-b82a-b1c820a565f0,1078614141,7554020995207271237
+03b0a664-4a13-cb3b-5c80-a67a867f893a,2786608473,9973064918447501195
+2cf25964-c9fd-a410-0208-913150cc4dd2,1312837812,1273400949810368776
+3c82b02f-8262-b854-c48b-6b9843da44e5,3597330799,12905860693866712056
+cc8e4e5d-42ff-c8ea-a11b-eb87e258e55d,1090003474,12746563326405997029
+76f99395-e679-5fc9-7925-fe746811df09,2844068134,12654155288749607971
+a91cbfb0-6150-1ccc-6c11-84529c92aed6,4236126173,4797009980958125528
+bd6834a5-6dd5-b3f3-8392-f03854bec153,1230169601,988782180566820646
+9b905d94-631e-b9c7-843a-fe1805e0df2e,2427753516,6739822420173410239
+be21fb39-e060-5333-63c0-52ac81612146,638923141,18426301789718985743
+82c76d5b-c2c9-3147-8777-7a6c43859dbe,68132469,8829993772040906910
+ffe3b739-34d3-4b9f-f981-ca62ea6514ed,829564489,14257474770489875663
+8d4ea2e4-d1df-67a1-30d0-82602db41cc4,2724312825,8398620708048975325
+f0d670a3-d0aa-91dc-5858-d25cd46ad3d8,46043567,15325488158837316326
+48a6cdda-85a3-9ca1-7e0d-4acb6629cee1,481878671,7083874991885849385
+4271b017-c722-bc67-fc74-d79f07fe2464,2265184283,1212686320308174677
+203535bb-8806-33b5-95a5-3c9f81429629,2410832731,12266291688428865300
+bcd3d48f-d1c7-c2b3-e528-2c1263ad21bf,3913187621,10194452393377619928
+4e75b61c-5a61-6c68-b2db-770176a75320,2345087277,7232315610247060459
+e76762ad-149d-65e8-82bd-fc29b926b9e6,1435031369,16808320028546429121
+70f7c98a-e4f7-2af5-cb59-953992542c9c,3785790280,15357600315043829474
+831be728-f17b-7e0d-5adb-fc024c7ed20f,3773935551,3256799516651826739
+bdc515f7-ed84-88df-b54c-265d6617bc7e,692085848,13597010510460536139
+31ac6389-c505-e502-72be-6f0091fac11f,3436357366,13594128049178881627
+07d5ba6d-6c0d-688a-1563-d4a5dc04cc50,284831932,17578516038266467503
+19e47bf1-5d26-989e-3355-0f3fed9931f0,2770175516,14937611769471928648
+7faa96f8-d78a-508a-6dde-26ce580e0e0a,3407254993,10389084310386683274
+28b91974-fda0-6386-3a14-214482d5cd74,797369163,7667382507082066128
+2f460595-8a4d-8bf4-b63b-4a885ad23046,3402729766,3716942172098238061
+e24920d1-b963-5e24-000f-0cb87140715d,1337693805,14838337794198296037
+2c4d1ad7-1f33-1137-834c-9fcd383995c2,850786789,17464598881473067335
+98b42612-c1be-9721-e7d0-1933503908fb,3723818216,3028311066502064107
+3d3995b5-ef8d-500b-547f-5dc522eb3ad3,4101392309,8263276880169596282
+78c4bae7-7b99-e36d-9561-86e68c8c2735,209186174,18333597025969770874
+21b5de20-9f79-57e8-b35a-e10b457cfecb,3522988942,11869654814559430518
+563baf6b-802e-348a-e1f6-c1cb6c3d66c6,4180375923,13483051847834829956
+8ad085b9-85aa-34ef-2c15-5ce84e9f924a,736122123,10470593205718194757
+f4fe3cd8-bff2-a222-8fbf-647ffaeeefe7,1406829974,13684214820675909515
+74109c84-cad7-7d6a-c39d-fb5b22368ed7,835285545,8484258756901809515
+0810120e-ab17-3fa0-926f-6b410d2ed367,2088718730,11955534437427411470
+d8047373-3a6c-8874-09b7-5be770b3db42,365414600,12466543302117138951
+9905c2b9-362f-2a18-cd3e-0ba4619b4354,872182477,7238731482601072946
+f76716f4-163e-5691-e568-6de6e09be6df,1817046964,9618354582134671370
+45926b0c-b619-a077-19ef-e9c9be05b6f9,3379059134,5873960103121896603
+5befa690-1828-3db0-b2cf-023841895c81,2931705267,7638744712399802675
+0d7982a3-3448-34fa-5414-f45569af8d4d,1360363636,154267992394074752
+20e7d678-4a7a-36d4-08ea-58cafeb1dcbe,2913888310,7962729414010593737
+8024f19b-fcb2-956e-4044-96f283920e33,48945498,18331901995869333920
+60801f57-6387-7bfb-ce90-71f921a296f6,1863612052,6632159883638239867
+e2485ff8-1ca7-e095-6522-a9ba08beaabf,3906081368,18050414768018129348
+04d12a9f-6fd0-e424-fa12-69aec3291939,2606760266,13733199306115260586
+a7878583-cd0e-96ef-826e-e5949a71f5ff,2979195785,12429963953151614230
+12152fc0-e59e-9399-85ff-95a3bdf7fb7e,2381895652,1447698894720355481
+bc415e01-c324-e1e4-0c28-4d85676f24ea,2973649196,13883376884853427034
+6445531a-9b80-29ea-f96b-09955b9bc019,3664882938,16912613366943220500
+de269521-4b3b-d69b-2bcf-5451c1f5e64d,3748824761,10233703839010053985
+708db72a-d259-fa03-b66b-ab125bfb7d90,1703237823,9769980727739200001
+02b8c7c8-8d69-de59-0494-adb6333a1d01,488866950,6841930939715756917
+8b29ad2a-e70c-57af-55da-9bb047163864,449797744,9342408053421246048
+30378ce1-c1a2-0085-891a-b3dcfea95925,4086876111,2753498398747341761
+ac04b070-ba85-1d62-9e81-0d411d06f812,3908195520,2660956191415771899
+b8c918a1-068f-f3fb-7d32-3adc8ae780c6,802325709,13642313082854258693
+82591da9-c3ee-15ce-680e-8f432e132b20,3654171777,11029283781808765186
+1fb5ae4b-a416-cc3a-7458-a111fcb8f389,1366201174,7724298147162142700
+c44eb286-5863-6844-6fd2-2e1a8f41fb61,3557499135,12748084820546964405
+a4f29c99-7bc9-ed15-9543-752b1d574a70,478145273,7462163785852268199
+83365d5b-bf5a-05b3-bab1-f41caf5fe800,207500164,5222802231885724834
+80c319e5-ee8d-1dfd-7677-0ea6eab29c3a,4117720571,13334817353907317824
+5671c46d-3250-4782-93b6-9ba4df871cb5,626551563,12749005392084437476
+ce46cd53-efb3-c1d4-1e97-4f24c5bbb5d8,80580425,9501431760406793261
+26ccd301-617a-15e8-ff73-d92c6e174300,2355237803,14363545618599271201
+9ba93513-4d95-963e-dd4b-8a7102f0ef63,1481417868,4286826934330428424
+58dbe1ee-22db-9284-598d-825ddb481e44,3410782504,2753517106643838848
+092950dc-21eb-a223-3d0f-18eb322818d1,4142854364,8495764317692820109
+3269d522-3521-3243-c4bd-2f400484b82e,3832079956,8802969257590351925
+99e9dca7-9b72-2d7d-791f-ad4032e43fea,1921141513,12702112200016104420
+643c55fd-dee4-3d5c-5170-3f17c6890cd0,1027969089,16225687771234694416
+fae2ace2-49d7-e321-eb86-3a709f5cd6b5,3805176132,14251934372177333496
+f472f51e-4440-fedb-3daf-a5b549cd14b9,757136177,18297803216341418709
+5cbcf109-8a4d-2cd1-96eb-4e1b9623f495,1824867972,4873163092243304709
+23013d1c-71b7-2ff0-6271-66e48fefb680,899184909,4089924186982850264
+dadbe247-ad24-0b49-4492-e70897577217,1932485756,13986337059737619055
+c4c18f2a-d56f-2900-c089-d9699f39e6d8,193745852,5582973156963239382
+c6e0e9e0-f5e5-0d9a-3847-36bee9987b3d,4064841550,3827769827907151021
+1d451a6b-0db9-8f28-0dcc-d6c4d98e6bd7,3136070764,15153543710466429371
+15d07c51-0d4c-d23d-611e-8f037b0b630f,2622604333,9234143788886817859
+26a604fd-144c-51aa-7f75-a858832e3db8,1619818865,7516347109714794511
+00f78200-bac3-a469-0b4f-97b29bb7b869,3666286777,1734975561825474922
+fe7f56ad-a6c2-7fbf-eaba-f35a9e461d4f,3080776358,5406544749277079243
+1c3d7df8-041e-9596-3264-721f97fbecdf,1055285415,9841938024699743618
+178ba77d-3337-3e47-cbb8-b7a53dc578a0,483920378,230894938123845548
+2be54952-b288-ce1f-0445-ada0b0007afa,323295453,4900090991626234358
+49dc72ec-329e-4fc2-48ff-2d17ab0b70cb,2293323820,5335215946805133819
+3c8f3395-2694-e25d-fe7f-227cf38e71b3,3376695655,1986411115722342243
+d1b7f17d-f689-b91a-9a4f-e61fbabb375e,1484860545,9644187116154129972
+28ac02ef-9cc7-3cc0-13be-d149a80cfbfd,441128971,12972265038646084043
+9037957f-0f30-9e0f-e669-78301000a5c3,1840734889,5138582733399026499
+00913947-f6e8-7438-934b-8a5f5357586c,3683678099,17788879839036629090
+131148bb-72be-a010-fa7e-5649884d248f,743259348,12522115586298579723
+99416c09-1dec-962b-d4f3-32fe93876182,2111206497,14737154310359134043
+38cedec8-a3ff-f431-a6a1-a0dfb3038696,3200723462,18120436203007798598
+7f310fe4-5b81-d630-e75e-a23f8d680282,1408018960,10594484819176713078
+71a6d989-4873-bfd9-ae5d-222c0ab2b162,1031622396,6198445345889026672
+b1052dc4-d02d-5c4e-542a-19f5113ece2c,90990340,16778491274519874356
+9e583b32-3b5e-d4ea-df2b-8c6dd3a3c342,443130688,13518628548145326140
+eaff8398-11e3-991a-3646-410ef1319f68,1089522201,624633134785518074
+e17713e2-dcdf-d787-114b-a135d07e25cc,307366047,16073259315452099919
+66a56166-6ee7-4494-6271-5b9a2080b9a6,1086862682,17933245745534620110
+ccaadc29-64cf-ec7c-08df-3d501fbd6fcb,3988211456,2075045635061140333
+1bc51edd-fa8e-9acf-6c42-6ef3f6531056,3762892260,6293327662328184904
+eade39f0-b8a8-1e11-c489-6df6f42c824b,3739472389,10253137713250895764
+a7b51dee-d768-9635-2c71-a6fdd6c5c06f,268789274,8286978158138617459
+947f43d6-30ed-de31-a812-eda05e91f7b3,3728415847,1012706726923062109
+415d3a60-cc0d-81df-ec70-dbdfda64bc74,1584292744,9432282853745763329
+6efd4a9c-261c-fb63-2cb0-92c8693c4f14,615102959,6531334458711413979
+f9dfa948-c102-cee6-5284-33ca1dc7e98c,3614446973,6492947867405556917
+bd328bd3-6031-0d7e-ca64-663724f40137,2300112068,3910903688205307661
+489b7c9f-f0c8-8a7a-95a7-18e5255cbc11,1513544942,11461334203876302516
+2bf53f9a-5b10-0e25-aa54-c1ad0a5efe5f,1503857019,4492187077640618972
+94e40699-929f-1201-c2de-a68d571f3c58,3635607183,8432388508042175119
+ea3198bf-fb34-64f0-6ad7-4218bb9e2b6a,1803536074,4439863367734075149
+b555bf5d-2c08-fd61-b5b5-f50e444b18f1,4165157231,14085633038989094979
+85a6a80e-0668-8de9-297c-b81fe146edbb,95648869,503330908038578745
+264803e2-92f6-6094-f447-ac4bc3733157,2695512554,13963318950782374438
+76a2176e-d33d-ba03-5752-1458d2334140,3712330336,3025517654347554876
+0906dcd6-b050-b004-9e8b-b47a35b7c2d3,4245455205,6679803248053780312
+08392362-c3b1-ff2a-3ed0-e465b0a4e0be,1993875170,17547725725465324243
+2852da8b-0772-e37f-df3d-d1f75eceaad2,3197495912,9219716637976724857
+28324755-5861-13a5-c47e-435db9640f87,49591838,3021176259627743297
+66aabca5-7380-06a2-7cb9-8778d3d9caed,3480144471,10312648864292594126
+099ec586-4ba8-ea6d-2c33-eeb563f4a0a7,896820434,16164395823259226961
+1b6027ee-8555-1b7f-2d91-8b36c8cc5aac,792039076,4394974166055263522
+f30ea02b-51d7-85ff-5fc7-a98baba5072d,942055379,1623799732267763193
+d0283af4-4d94-23db-d5e0-b3ebe51e53ce,3817736241,18385123415137143644
+e1c5d765-b3e5-ae4f-29b1-e85cbea92e23,2461088327,3280935185153609830
+22adbba1-ba35-2d67-bf5e-53a32b95ec00,747786418,16313220051091284834
+5e1f40be-f846-28bc-1c62-b179a23780e0,3869673049,12104093041645670791
+42c67007-b9dd-ab12-feb0-6592a35baf40,1526084681,1292696754922142000
+3536882d-b262-1737-6202-21055afe5eca,4163156959,1541440910411155032
+b4d900b7-000f-dde1-24a5-4feb51ad1ff0,1036576218,10235165529698766127
+8f1aec6d-54a5-fd43-5fab-b5926b60bb09,3274481677,12907333300438387269
+c6788844-f6db-a81a-6177-301859a87e9c,277832728,3670088820369735547
+155e1704-eaf2-e835-03ba-75109964d1f8,86087213,5437409268989999896
+c946fd79-df7a-f563-f320-4923f1128e19,4059515196,5672470576231221958
+c07749ea-0fd7-22e2-a382-ed479b30dab3,2240397390,10647445481871967925
+1b3a6780-e07b-c6d4-a4da-b1475f6117e6,1095828764,2386705040942840887
+9d7e5a88-048d-fcaa-95b3-42114107ab27,3437543892,7904660998205215481
+06507f32-5feb-7d88-30c0-e0e9d9dcc2d8,3118037796,5686107282181363084
+6ece4082-9c4a-3f4d-2f92-bddbe2abd395,2072611733,11937916978837449542
+67c21b4d-bbbb-4aaf-26c2-2e4709f586d8,1362329544,12683759615852945748
+6df82b1c-45ad-b884-2e9d-ff4e4f07cc47,2163779209,4483334995258941077
+cb4a3caa-868a-fc27-0c09-deed977ac1e5,3319314082,8913489717928323787
+a2738f7d-4998-1271-6726-e4aa88335181,1726803212,12661512455560926143
+7d02c65e-1bea-9afa-ffe3-ba44c0833a50,3620337420,7672035342851058413
+d4e4f687-e018-b60a-e983-a587553e6fb1,3987723929,4172537870954616379
+c383823c-a40a-24f4-40b4-e6fd28d2e544,4088084199,7924801119515277790
+52b7df70-a06b-87a7-7ebd-dc7632643b82,1405610448,1175453260353881527
+f876f340-39d9-3955-c73d-949b5e93d001,1963975817,8718654274148040837
+74747043-1a3c-e828-60b7-acc9b179316b,3179329525,11053236511783957358
+d36492f3-5c1a-ce25-7d92-41be45762aae,2770089494,9384826298513205273
+cd98451c-94dd-dc72-3b09-b423005afa27,2272965861,15052664844107445070
+69a1a131-6861-2031-9512-4fe41240f758,3192697624,3609415601337757641
+33fcce84-d09c-16a0-0526-567c046fbf94,2340328408,10215693252016149118
+2d3f2735-c9a1-2df8-123b-da74f1b39b90,4003278740,6501452024216599891
+c3a63ec5-1a78-0a9b-4337-01d5a2a0b620,1824674851,12395351056910141129
+f035e24f-d578-4ffd-1865-7330cffa7dbd,1336614347,4463177050443834873
+ee73d241-ab4a-4b33-0224-45e9d8b6f1c6,2109227137,6181981613395128811
+e0af1597-3b11-ac5b-874f-5cff4edee877,685940634,285845058245603497
+31cdecbb-4273-67c7-f983-ee191c7d6da8,2266485099,10933508871425858495
+df482e72-a6df-57ed-15db-234fcc491b67,605060157,4466418391067456429
+72567d17-7ad5-6835-4b23-654e579e060a,2488575366,15748471633248466648
+5f4ef01c-90d6-792c-71fc-e702fb0fe140,2610964188,2954376881477939836
+e6a99357-d621-a06a-35c5-6ff59ea5e857,2156865254,8284949664370761294
+44ad5881-ca53-eba5-4691-3086540bc6a6,2198594828,11127805960263006554
+cfb13793-fa38-910a-bffc-146fdf1fd97f,4018501519,4083300775579883045
+2a5f6cbf-583c-62bf-933a-a940eb475339,121453293,7231588214332878677
+9f092343-dd8d-2726-eedc-c10603debdab,114562066,1924988033146574215
+1e5da32c-527c-0c15-904a-038f79a33584,764788432,15016164634887701994
+ac824759-0004-d4eb-d745-65a46b6301e1,915901663,12687641050975277022
+e1e86199-f53a-9f16-60d8-d7fdb9b292bc,3082942628,12428100346098903289
+a594d102-8f64-ab2d-bf69-599a7a032628,2626051638,2240848526831247557
+61c05380-14f1-1196-b100-42e7a4e1dcc1,130711666,15348894340622398145
+1256ecdd-e8b3-512a-0e05-d35349a9c5d1,606285882,18056953620214885875
+b9daa6eb-050c-714e-69ae-1a08a674eb17,3172084692,3915326223079456380
+537e7b3d-d3b2-22c0-c53d-9ad8a75b1b47,2301156306,3104034258130318559
+79ef78ee-765e-1dce-8362-583a6928f3a2,3880017182,12965737115755804709
+7effca4e-a494-b19c-b6f0-a56de321d951,1045222142,10962296508097948098
+3bb44b12-0a85-e210-2827-40ee70fbd52d,4037479613,16044573182725444691
+a6592f8e-8872-f815-86eb-7162471a1bf1,3261288080,8869021153447586014
+e52a1fb5-15d4-1673-e7e1-d225b65e4fdf,1620969413,1791914804383102749
+951697a8-9d08-2b54-8921-23da5b41ba1c,3291374765,15820724397103614059
+49fd2765-1b63-1433-2580-4ece1967be37,327037098,11279407532873937763
+d0654abb-ce29-59b6-0f76-1d72e940460c,2818660883,11393831877430562540
+0c24e626-7ff1-22c7-3d57-8493b2201baa,680127860,4040683576885518124
+f4964b7b-821b-c227-ee5f-590027e57e0b,3914654482,16253070046464026669
+0deaa250-a992-97c2-637c-d9f29d6dfad4,3465761821,6604441647052378812
+64b5aa4c-2172-0d93-3214-361d068beada,3000556848,15178774460518303810
+57e09303-83f6-91cf-cb25-28e5af0ab32f,673264414,13400338316361907720
+cc08eebc-2660-71c5-0956-64240b1192a5,831437948,5285951762188167266
+6d8a4c40-4b5e-9bb4-da21-2f90fe4592da,2792655791,13686915613807624045
+a12d0cd6-8a50-eeea-585f-fc9dd23995b0,1781925253,11806388684203671367
+1b70d0ba-e7dd-6498-9194-6f260bf2235d,491918405,9725895570844266556
+844c7fe0-b2e2-9594-c3c6-6430efd94c48,2028988815,9250674163824437177
+a7b7e881-3e74-a7a7-cdef-ba17c2cf88ac,1022291170,3348441275778465335
+ff9bf353-5a39-3adc-cad7-f077e80839dd,4273276070,6264282281982155019
+88fa9fd5-dd5a-4d4c-e022-6573f96c7a14,1572476286,12914778907166002024
+92638bc3-7ccb-865b-4732-2aa494082d41,2327196828,8610804363229816134
+10a3bc6e-313d-1dcd-d22b-1510e514beae,428150297,13720665682985440622
+e9f55b02-01ee-8c96-b9c5-04239f06bec3,3697502630,13460852747729403596
+e32a79d5-b4bf-2dda-b236-a6c9b09ef834,1362352603,18259146893551075767
+0005bcfd-6d88-38f4-40cf-c3a0a44e0f6f,3189145163,1573882565760791183
+1c11c238-c38a-4760-2253-38dc915125d4,1586651157,12712252706629232469
+c063032e-3c32-bd55-1f3d-523d88e19c01,2846712082,18096779071113432835
+d1386600-4ddf-cf34-7337-73887b3617da,978081387,11914893831943621137
+e004b547-0a56-1597-763a-924a16dc8ed9,2050726773,3881938350910641370
+49511184-6827-330f-b5c8-eab776fdc6cb,132191593,17704461835591350683
+b6a18282-40e1-f1eb-d1ab-c5aebd4cba59,2515374499,2827244388802505225
+6d116c69-37ea-9953-261a-b53e5f3b416a,2675376547,13044357340697726737
+c213c8cd-0c9f-a0dc-97b1-4fdf1cb25bee,590415286,7104744762129769320
+8b362988-84c5-54a1-d4fa-09d3e906c5ad,1570824090,10055257164726221208
+cb36109c-0bb9-eb27-ee95-ed631df4c641,1720853610,13890484643444029716
+63f24c45-f4c9-4245-7403-22b3b19330af,4179970195,15107631987274026005
+0ff10c64-2f34-2693-3754-71d5e7301139,2494264151,6812601406284045007
+7c71fd63-d740-ff9e-7002-1ce0775d6e16,3791425864,17754815035817037816
+66d9a5cb-978d-b41f-5988-f5971fcff55d,848909783,5865876625866115203
+2dc7656e-b5e4-7c77-acc6-20f879e03221,2191217351,11817946023260285098
+178b2db8-8a1b-3a71-c650-269b1e1c926d,462692795,15967673019504369489
+09a793ae-9300-077f-d084-976295ddebf3,44673868,304892659408264121
+f49c5719-8573-1ed6-5d65-fac6267b7e31,3457471391,2502100754204359264
+077d6d12-71b2-0a88-93ba-2f4b100a6db8,2969030778,16432301335544601154
+c28c2606-e16e-203c-7dd8-532cd4ffff80,1075592516,9538554985041681898
+c6d2d6f6-2dfa-75b6-99cf-797d2755d798,458316471,12731441031303087712
+d906584f-adce-12fe-cbe3-d8234a8e7fe4,711630231,17088621857508322842
+db02d088-7343-c797-0a9d-db3e5d5b263b,3972160165,6508226401314910323
+16524065-ce35-f4b6-6062-195b9301dff6,458492849,16461294154424066440
+30bfb88f-948d-1a65-f536-7a92bd94b4b9,2528353668,18414333534294577998
+2fca2533-c007-d5de-7015-39ab41ea661c,2221220196,2680754568136215497
+eb4642a3-4a88-5918-f25c-b59012c00ab1,3526390670,13324714976996992437
+a91a0f67-6b81-870f-39f3-6073e9a89e9f,2820147607,10731643460737047292
+1a6001b3-d518-a995-b8c8-5fe1c771c243,989125829,4185441567459367909
+d74ad821-3932-350f-067d-bab7da459af4,2220542908,6937913204706261736
+8ea00a62-9094-0004-1fc9-187faf4771b1,2067750712,7785939321772509531
+ecf82626-2be6-8604-7d6f-aa097efb3af8,3878163224,8146746462864022454
+44aa4885-a9b4-b140-af8d-b468aa4deb84,3418609062,5533616525917672766
+dcb89dd6-a4bf-58ad-2675-5ca6f61130c7,1054923127,4686742665699488827
+45faee65-5906-d2f9-e6dc-1c4a987cb0c5,2921866574,14336041554847327594
+e77721f4-ef57-99bb-b9f1-86fdccff5054,1941127238,8308155109813014391
+5bf2c970-0c3b-25ba-ee0d-d29177e0c1f3,3902919184,12494384553162603402
+ba30b300-4f5a-3bb3-3d51-27453c3e3d94,460001116,13839030196614018335
+deedd190-9754-e937-eb78-ae23e025e20b,2314857601,556770570096776396
+ac6eb5af-e96d-e955-c4b2-5fdee88a1ac8,2520916398,11890632553129285396
+7725122e-1d5e-5954-e551-59743ab80309,4207950417,905215533641399281
+ea590be6-5691-7d0f-f450-40d02cc3f3b3,3603480840,12407029355419331684
+7adadc82-aef8-7c47-8649-8822344ac38f,586125576,17971981410398052733
+130ffe5d-057b-9221-023d-571da5bf61f5,3920964736,12427436064628270066
+847cd4a5-8fee-2666-07d7-064d93859381,2851781264,17933458898877867740
+f7f2d01b-9f44-40e7-5535-1a4295180b1c,997844130,964584613986542336
+5832e950-2212-f719-b98e-c0f3aed6cdbc,4265457883,15707347895361419139
+bb1c810c-6e2b-8216-976f-77710d7f2d87,2254823265,6357654555736308524
+72eeb91f-6811-254b-5e23-f9ba6dc28575,3910891821,10151128184715909991
+df61e3bd-4e9a-94c3-4765-9c0a4ffb9b6e,3393740275,5309964084207040634
+9a5ebdcc-1cce-8ac1-6ffb-0727aded19d5,1837256926,13232841270957701312
+dcc9542b-1b74-2ab6-8ffb-8c6f89ed24e2,3193669729,8502877072362537272
+e24e2ae9-542f-cf77-bf79-0d7660b811ac,3662548907,6865751635151104197
+0e8c804d-45b9-33f7-2235-58754f280692,1300234400,8252644324790914361
+b11c01ee-ce3f-a35e-f669-e4a7682b8273,2873941478,3135161791417629121
+dad6a1e1-e2c7-9387-3a57-c95923da6b33,3257549009,17114361963249035463
+caa8d846-f4df-4fe3-809b-aa06190eff0d,162024970,16076162096755350944
+4c1059a2-83cd-7048-67f2-d839be2fb653,1249079929,425320236246049444
+c035ca70-f1cb-6307-1fff-3da4aee4be5f,1632673297,12281996383499264494
+e39d16d7-5ff9-a734-1cee-e9dfd76970d9,3675211300,10881821363078670195
+e5bbb582-2f84-488d-95c3-1ec8f01c548a,2461552662,5799525041391637419
+7eb8746b-8339-8bbb-fe07-0d8c72ca325e,618603665,11197222652690459139
+90e0e47f-624a-d62a-6c5b-60a8979f9269,2027666186,6856396860369063365
+60fee30c-dd3d-cd7d-c48e-96c0e79f4a88,711079666,13638173797889825438
+6ca7dfd6-b412-88ee-9699-372966e45554,1431307899,2881150564041883617
+fd126329-9de3-7a1f-bbcf-7b6763b1745e,537716325,2615111461974855745
+f53572c4-d5d3-0cef-2455-68147446955e,1949912137,978396888327717205
+005d41a6-afc8-74d4-d256-71c992ebe33b,4122796000,5507404935982862068
+e8b150fb-88ef-0356-7173-8e883ab06174,4148344556,10653375644461516064
+bdc7ba94-c151-174d-a8ce-9c17f923e97e,1000648680,17249260943269137382
+905696d1-430e-8292-947a-d126f579d9c4,986617478,17114065950463640842
+05b63ebc-a313-aeab-b8d3-beb7efdff64c,43524374,8787764523656692246
+dfd56f13-1829-238d-5d2a-853f696b5efc,1889078041,9431334987609812464
+25afc432-76a2-3b95-0aa1-fa92b26c1042,2392621551,8834971929500316778
+27aa5b96-6415-8f24-f3e7-380dab117eea,2406506037,9211516399349831440
+e84ab656-d501-44b0-1dbe-f11b101d38cd,348702166,1058176655666343124
+9dd9a712-1661-98ad-1f0f-523a9dc848d5,1826020353,1306544145207850728
+e1522397-88ab-ac44-fee6-d323a1de05e2,4286235341,13406396463092149175
+2543e4f2-2966-49ca-2503-ff6caaa8a82c,2873718182,4110572801569789893
+e1fad6ad-6547-c2db-29e9-4a1023627d79,135975747,7371095524798392802
+1e00fd87-53b1-21d7-c86f-848629a07af1,1980172383,3575181139737173981
+938c1e7f-ff77-c721-d800-4d1114727152,3721727367,4302743177334567599
+660fc0b8-ee0d-a595-df9c-984bc939d536,3507018707,13624176966754311634
+245c7386-0806-6ae7-89dd-fbcf7551a8e8,724218337,14767636786459576456
+c68c377a-43b9-3414-e592-a36fd315f849,2390128000,5695713537898760361
+2a5f1907-5606-b3b7-62cf-77981ae2e123,1067686538,13669326746867389859
+99383a95-5451-a506-648c-4c84e3e47693,1944023553,17094785724162280198
+54d80957-1b7d-47a0-9290-98ddbf312c2e,3545640550,5714586659178523702
+88caa5b9-b4fe-ebd0-33c1-2f7cecb338ef,1343758520,10287998539200566011
+e7a3c747-944b-9d21-3038-c16e48971e0b,2003907477,16647219945611413937
+c2cf02cc-84d1-866e-4de5-78dfe6969a04,1976296158,6107147537610519369
+378855b0-2282-262e-85b9-554f527652c3,1351040235,14598085872131770190
+09a45e6a-3018-60c2-6fc2-6277902c71a5,1528217067,5297115112944212453
+4e885edb-0013-bc00-4ec6-8e0a40e85d2d,1362207212,2023660204222277522
+9ce7d6a2-c4b3-27f6-506b-b430fa7fda6f,3879937455,16671735848900695335
+b13e4256-8242-e5cd-4d33-46b3a661bc7c,1225955443,4155262496325014437
+f3a7c2f8-9ef1-0d1f-a638-3b55495043bd,3760521753,899245650927689556
+f35b6fd4-b0dc-40bf-d85f-af398b30a97d,1809499913,1876347918346857071
+bef5debb-e989-85aa-9fea-8e74e00aec40,3214732027,15228169392041577587
+516ca450-3fc3-39a0-33f4-a24dbd9b7059,2893558173,7479149821979463705
+2c1ad74e-f106-2c80-16a2-b766f687eb9d,689435155,16367691465206973883
+5e1f25c5-fb2c-a3c9-17ee-10c46526d88f,3962342162,6921369874739978923
+420ee9ba-ce75-9711-c2b5-c98ac5d6dda2,2269872958,9143252388376133626
+cb900ea0-8250-8130-74b7-e904d14b8d22,3194752378,10389067714950339807
+2c114a32-10b9-135b-22dd-04b00d9d4bac,1053232560,16836557748791053504
+184ef248-e2a4-aaf6-8e80-b8ba7247c3fa,3789225036,16130693589761206745
+37d9f4a6-b09d-a55f-31af-30f087ed5be3,638808716,4792122112984679884
+5e26bb37-d175-400c-8dd1-009acd3cc32c,1973280042,11571645691953264310
+3ff9306a-4630-750b-13cc-5dfe3c990a94,455917892,3265392371801580064
+03c55a8d-e78f-4419-ea6c-cb526ae4f35f,2034459683,9742606574370109474
+c623c2d0-ed6e-d12b-9832-1746288c3608,898046731,9282149539086521832
+cdd0490b-6528-87dc-7e6f-94d1db1b3a7b,1309785333,1510207694925855473
+da792247-68be-fd2f-3a72-c41363692beb,1203126079,14575145452772687618
+a119b4a9-be77-c1b7-6a49-d5d5dc85009c,3807399669,645830839918634618
+429f225a-00f5-b43e-1158-5b2d70b7cc00,2066793395,8551823598998431261
+d49a1bbf-616c-83e1-3f32-9f8046b27a1e,133122240,16896354706840389146
+b50b0a9a-5886-9792-a7b4-3726b719025e,2291544916,18407859792413701766
+758bfb9b-7f5c-b4d2-94a6-8c0b2c9c9433,1601082541,4578679047037946927
+b8106efb-a3e7-8c65-9c3e-2f4be4911d36,3800274541,12904368339243725331
+4fe3b8cc-3702-d201-6051-2a5924475c3a,3624488065,17234075294327796622
+926b3dd1-7790-9a99-94a0-883b922dd46e,1714603167,16114118082450379310
+3c39e596-716e-8a26-d298-8283a151a335,3593737065,2800885737411186014
+8fb9f48c-6712-2abe-77ce-5835a1b2938a,1478690480,15605037518922113984
+cccff405-2bf5-9d94-f7e4-0a62c61b86b2,3913893927,17194298604361684162
+ede440bb-a967-6452-1613-3c8fb24ea060,3552092062,16395290648410352591
+82dcdcfa-4092-df74-9532-039942d11bbb,2281590402,2843349384347210147
+0abc03f9-dc0a-7943-de5f-29889a3625de,4252366156,18442133665774117166
+c8a2079c-c8ac-c1aa-ab9b-d58488d09cd2,701101007,3189863745880851025
+ce2f7fbf-2c36-ecd5-2524-078a0ae17bf5,1972686606,2588746710540773186
+9d74b678-2f68-8486-4a09-e671472252f4,1084969555,17598324263228296086
+6d37ab21-c960-2539-f782-88ac8d5c202f,2464423232,8282356439789020834
+9c10c6e7-88fc-f3be-1f3e-8392f74cee2b,1869804048,8157115247356371421
+1a330ed9-1217-59e4-3e6e-9a312432a944,1302552324,4813147952171622992
+6b7c411c-8aa0-97ff-6460-b995f32ae53b,3725085520,15224716257376096822
+84909be6-ffa5-2854-ffea-5ec7ca392d72,132054976,17174394673600689672
+f2b4b041-a87a-00d0-d6e7-2c70bb1ddb2a,190246536,1211345577599204047
+97adf3f2-e423-ec97-f177-aa197951094c,4167316055,5403832206155876098
+2c75f221-b0a1-d230-250d-2d1f739e8269,3983752261,8546206203216318421
+e214a21d-7351-d7b8-db75-ae9213770df7,1630383903,10798265501789927674
+7c28d5c4-f724-5e3c-f02d-06398607021a,3347077480,430511164369958353
+ba3aff42-e801-fcec-81ed-eaab1fa26614,373264769,2688376958770003724
+eb042283-2a7f-73ca-b795-1a40a37aba05,4231685761,12989765678244815166
+d4902a19-6da2-dcc6-e4c0-16ca647e839f,1874088574,16713781134189351068
+d96fe935-1e31-6c21-4d2d-dfcff894d598,2060573358,1538668110163176814
+d7399817-dcbc-83bb-e5b7-89eb07d2bd99,1338633697,5516329106596307537
+2304c148-df76-7db6-0773-e0fddb20e562,1696380343,10155017420857821952
+57dbd380-3eb9-0036-b1ff-16a1bab6af3f,3426564841,12709397944170083108
+d946b760-53af-8c51-7856-0f6ac5f424fd,2340778639,7772125717261245139
+8b4fa117-d312-6f56-eb60-86199d967739,899521715,14423199852176800435
+72b35949-ec1a-30bf-46a9-39e1573c7ed5,3137649096,14843813837574186097
+3e926800-bb60-0af4-4341-1882d07682d6,3650774219,1996773335375676714
+5454b873-ef00-72ea-e919-a996ba989f9d,1828640054,7676909660687593932
+ed40f63c-68f2-d984-dffa-4cf2b5394cff,2634670104,4442784174624842908
+27238a1a-0703-8b9f-61a8-247093c7e97a,244158057,4987489691960199274
+aabaf58c-b01f-ad33-dd73-c3d4d96cc5f1,3369566099,9586922851025298316
+4dac7630-17b1-81dc-29b0-7602f0828f5b,2345543843,4912629854088275887
+3f3c310e-9390-1cef-5099-34bd6a52dcf3,2980974903,17320249436513534359
+97ef5a52-c95c-cbac-09ae-f0a80dd5f77a,3126508996,16902990223382076958
+3a135166-5f72-df86-69e5-ccb63fe08753,900851694,10334579918392165575
+390a88dc-2040-7094-a056-535e5cbd0ba7,2757266036,4499236284142759058
+d2144752-f31e-18e9-0c62-a01bb8f592f8,318652484,13776556783149719539
+8aab8af2-5fda-7cb0-292a-0533e7bbfc81,3708631919,16188843512467255500
+f14271cd-a2ba-fa5b-ba05-74b11f875cb3,1230446108,2179947051102204483
+afe22b15-941c-0393-d3e1-b90bc56f0f58,3180594780,6488044737486441002
+b48696c8-66ab-62ac-0289-b9ff39d5ae26,3490049315,320872424196630960
+d5bec408-ac54-0445-b758-e9c7249e4901,3033780084,13418182717650572222
+cd55c82d-3b61-99ee-c28f-dd4487835a89,3361699263,17811609154667173683
+3866b903-b619-8234-a42b-b21d5d6741ed,36878130,7154413411318399495
+ee630de8-fa60-7698-5752-ec60eaecbf5d,797486865,1746575519082935531
+0a3dece6-d259-85ff-11c6-4f3b417c7a9b,1641136041,14380955103265099555
+ffe10f2e-483f-131f-3ffb-d4e5e6e81249,3102657182,3525901596833759932
+42193e53-c589-d9c8-1c1f-a80d7c482595,583505033,14921190034367836441
+31008cb2-320a-f30d-0765-4edae7154368,3301454241,4748152825514380040
+2c4de099-8446-3895-0b70-75825cd52174,3132967519,4542309050297185179
+027cf93a-efa6-deca-b3e7-56dbdd220c9d,3847482295,12529122075899528626
+8d54fadd-aef3-bbd4-0cbc-fde631e2504d,2523727802,12564209836894860775
+276f955a-bdd9-a3db-ebbf-fbdea72aedb4,2641559916,16414308269561439672
+4cc9377d-fe5b-b4dd-4b0a-2784dc5e9669,2937994676,3802919136338460958
+4041ba80-70d1-bc89-d3e9-97709be95584,3577047231,17284598446734739269
+58c0bf00-8657-bb6d-dad3-92956df60057,337447061,3336879390448015380
+0d02c45a-bdee-0423-4ae2-51ee1612422d,842074909,70487851612969874
+fc9bd640-eaf9-0876-1e6c-b9af32b91c6e,567857778,5246688924532680999
+21ece805-fa69-81bf-44bd-c425c60a3c69,1664091279,243591844537993038
+28633fb0-b08b-1ea6-7089-7977fbf0d98e,4245105770,2866799781767850359
+0a1c3df8-0db8-251b-12ed-ec80c761c171,301164076,13200200188701707070
+f3d49f7d-5bfa-1a06-1e82-7ace2c928e65,2987345163,12501895924102635375
+adef848b-12fb-2271-79c6-17e67d3175fa,1382974450,15886949419430328836
+f03bfce5-2ec6-448b-a204-f58f5eb54aed,3695094367,6833035719965445345
+5cf614b7-f46d-70f5-0966-d650dd3dbcef,1377168250,17384759984879282428
+9c145abc-039a-3979-029f-f24e8b24abea,4022885748,18166057705739678753
+a0841b1c-bf5b-adb6-dc48-eb0ea43256e5,2898839138,7018230659446472731
+4c9b1f04-694e-3bb9-4062-d24143b098c2,3427849468,12150060079755075856
+a5f9991c-e34c-e9d0-ee99-5f48c37b37be,1402686849,4880014281672562454
+27e57a1a-726e-b6cb-b6bb-feae243e3847,308837479,3172113092999182924
+1de5b101-4f12-ecc9-67f2-64007fa24f09,1152060346,11325466260873077682
+0885a83e-bf33-c80e-3341-b87779fc16c4,1979097427,7805302629587911122
+38bef2ee-925b-1412-32c5-dc2487b45325,1113291436,4172141006630742747
+a03795e2-77f6-c3e2-7276-4b98189e45d5,3801930527,16095082890904161780
+df426a5f-3b2e-b3f2-a7e3-30487e08b415,1763622252,10218568430822950852
+6edcf315-3d29-aa4d-26cb-87005b006848,427661901,6675814115269593733
+b91415b2-399e-e1e1-f190-2028dea406a0,1161339255,2253967391585037055
+a1969a77-e23e-f932-2787-2350ef0a9597,3588646304,6026076518851005382
+598042db-9e88-4a08-c22e-a6d11534cf9c,1081718229,7550991071557338968
+49cd72fe-1e75-dc2a-98ea-5eb0c7d21400,1998079996,2443940832035338668
+76dd1851-39f8-d226-d0a9-2b5c81622995,2561302750,16098382060799521312
+38e57f59-52be-b4b0-dc6d-ab27cfa9b155,2640753927,6210300346026236014
+3d79fa5d-ac30-e2b1-a911-ec2ecb97727e,3651208549,11867346507261617475
+39da7e86-2aa6-6309-3caf-3a84b82c1fc3,512434052,14584709115887797323
+5ed3b306-0c3c-0042-9932-cb679a0a26aa,603804197,974781130833788294
+42b5ee53-a943-7a72-6feb-41337f9eb88b,1761813090,12828131580535608927
+45c0839e-1394-7e49-6b3b-4ec3002902aa,2086167241,8046586280574677929
+a2a1b82e-6d9f-be75-7fdc-170d423fca8b,3585115787,12926667475471608492
+ae318e10-720d-adf8-a46b-bb033ad1965b,3784099808,3347679061558039992
+e7e0abe5-784f-04a7-ec2e-1837524f7e38,4241518089,17270102727387178710
+bbe5fa9c-be75-7ba8-cbc9-f67790d87420,3059094278,13678661516469605049
+f4cd4ca7-95c8-5a60-e7f6-36821ee5674e,1218302255,16970180038220836573
+68266c5c-58be-1f85-7a82-cbf9f49007f3,1516752646,17105404543414326356
+75520579-d4ab-d30e-06bf-da2ad65fdb28,3759780887,15210124906253220692
+e1307f2d-c55c-942e-a439-e32310f96e98,66855760,9134898085281854172
+dcd4cb85-7cdb-005e-610b-26d186808365,209786468,4322423122684609180
+47f6139b-d3cd-6b4c-570b-1ee66ebaa1ed,3063708203,4291856933630063094
+5cf739ea-c816-874c-0b2c-81afe6d32f05,2359828855,1641972585496246845
+7bc3e38b-4261-7eda-bf60-c5d2bd33abdf,3758642506,10268829314472529076
+fb629d50-0618-0573-36d1-a29c8692c39f,3127208919,17440735558931343373
+a2dd0795-8789-9ce6-20a5-3db115dd3f65,2095800323,4702494259831531453
+8b9bcda8-9de2-ff04-4280-2fbd44818ad4,895051497,11525307675480946300
+4ef3cc44-25bc-0014-1bd7-5e868fb5a123,873111830,1470620734554816730
+b6d09068-138c-a6f6-3386-1ee6285cc686,3059541759,185353195409256160
+a71dd024-7f44-9731-efc2-305b7f1da242,2504986679,12080747306272449624
+836160b6-40f5-27eb-3b78-a596c18c1eff,136600444,15269545551828962119
+5d5dc1a8-033a-86aa-8f5a-8075aa232440,3460779530,15263336139837686652
+fd35a673-8873-fbed-c2d4-1826b78492dd,3459721233,8252676715736852227
+9d6ee6f9-17a5-fc8f-ab1d-7d1d18b7c437,2347645977,7606889530028874924
+fe96d87a-6600-cc92-1f40-31630d7dc992,3097301801,1798067240520102257
+cc396480-b149-8c3c-6975-69d793ed4777,94535946,17422904279694021209
+651b33c9-7f28-4269-1023-f3e3160c3170,766368665,5187226078037513104
+3b897f6f-cb2b-d389-2410-d66f755fa075,979454244,13430349852150709105
+dd286b2e-23ed-03a0-40c6-1f34f9e64c0c,1479658866,6306885313936958691
+da2df547-5b12-16f8-8366-83eacd22129b,135732689,3138698151037454278
+8600c98f-1453-9fac-be7f-77544bb88231,607090118,7844527012582342797
+74589074-7460-f293-cc56-548865a4bd8f,2669079627,7556536063657116766
+4163b48a-dc40-aae3-507a-468ecd1278b7,2243615226,12398120422291835681
+07917a80-3f89-212a-664b-9c917f52aeee,1057135119,16437239961034146875
+c24b677c-b368-efba-a196-fa62ce3cac78,4276180092,11082030490461709403
+9615500a-2d60-a852-0299-ca82e8a69fd3,3000628051,5166847344720581189
+1d4f799b-7f4f-74d9-5b25-19bdb260d03c,2057048201,11595565790374242256
+1a3b44ee-c4ac-6c54-1f3e-836d28bf77f3,1171507669,1148817950406047212
+82093c99-cfe1-11c1-1ec5-b0404a25c63c,383961726,7408304066121426204
+326e3aa7-a02c-93eb-9657-7831b075582c,376350225,4831714585453774795
+47b44564-50fe-771f-2b82-6fdb8c287c25,1696499432,15780178865865116955
+47e16560-7944-a754-15be-b3c1342792b7,2578212952,9932959906573277728
+6e24d153-d9f8-abff-dff5-e0a89b0af90b,4240491220,8491119962608633788
+90ede5e6-8322-eb57-5409-ddca477631ff,2036614625,5977428905531950959
+f051e833-4964-4d67-2213-28edd717a116,2802784878,1859698852412357026
+81cd1946-ae75-f860-bc7b-fb1915e3fbb1,1726972718,1070345950749744645
+6279b1ed-2d1c-4a9e-c2cc-06d47e4d829c,3519402242,8933755568022285981
+e81a8c92-dc2c-f1fa-5468-d0a851870cca,3412533928,9852586115877077860
+26082a98-154f-c9e7-f159-40758c06fcf3,1255677399,5479242723420242835
+0fa78de5-678d-61a1-4714-1c19b71059b4,3007699807,11612478745000559903
+667601c3-19c1-e911-cf4d-dd3186886e74,938013874,4933160987003391247
+224d3b26-8f3f-8506-1bae-f12e3432294d,14715881,13054429321485923767
+8ee6c2a8-308a-8cc8-0b87-30bc96e5bc95,640638582,17518459519080576288
+74d68217-ef8c-e6b6-0a75-b46c147581a7,26371051,10318810185236361648
+47799690-34d3-54f1-d3d9-545180ec52f8,208178649,13205444029721690163
+0a1aed4b-27c0-3039-a152-4144eadbf281,1619477150,2500800700461619575
+779a19fc-6619-2f54-d713-f6d4366915b9,2867599676,1060429597535317156
+03f81031-9705-f10b-47fc-4b183fcd3469,1055838305,5934577960171104682
+a2b38aa1-67c9-5c6c-f2c0-d716413a558e,410302163,12818984796101604610
+ebef73ee-53f4-cdaa-a1c2-b7f06859e95e,1922940169,15827862239357235029
+bf8784ac-d9e8-3a76-c905-3a2529e54619,2726230152,2061816035666640614
+8149d4f3-5d8b-a9d4-3402-5d24926fd977,55341262,10564685635216889094
+ea4ccd55-72f6-4e17-bc34-d8d3c4ca9599,3829343520,7561303412268961403
+fd074c8d-0527-2b2d-7e67-7d8713c939c9,3069950295,8370926700693457756
+607039fa-3d91-bcf6-92f2-ffe7b8b3798e,2589875284,6091349542649050905
+10f9917b-c60a-64ee-8c0b-a0a7472d983b,875355167,4181762590775094642
+cb8af6d2-d56a-c0a0-d1ea-e8e6b29dacdc,2697414542,11566564096590222837
+9844a6fe-820b-8686-59a5-121b8f5fb5cb,601117530,8630017889029035851
+e79f54f0-b885-2e3c-ee91-45cb974b3932,34824555,6065691309638235225
+6e471d2e-36d0-1e11-f253-ba0d3e595e4b,1704263628,18177431236483580351
+42511537-3d10-6453-62f8-9f5045a50f8e,1312668843,16697815714574983456
+f7615e6f-4aa1-3187-f785-0b493cb82c40,2762762079,9768526142127970931
+8cbe1ef3-b2ec-af04-407b-c83f860a4b11,2106913831,11317872516309907579
+b4e32191-4f0e-7756-ced9-de59a7310167,3360996090,1600236624609447957
+dffc34be-1aaa-0d34-f79e-25e95b67648b,3305866193,3509205499210991628
+306ccf53-4fcf-f2de-2d51-1b8ea4321640,2154843579,8155979183258486548
+e8452942-1e4b-ff13-b4ca-e1fbe1993841,219828013,13270336291713498296
+7294feb5-1f43-859f-d72e-1420d3466363,4167096958,14610708860549875848
+d8d1cafc-e193-86ca-5918-314f3f531e6a,3694052304,606920474532386221
+80293caf-9c8d-f36a-3d3c-e343712d8c70,2725347541,11143911631231938378
+b37625ad-7356-35d4-daa7-a85b5c8fe223,2398149708,838882097346954031
+e7f0a508-4ad2-ab6a-b8db-f46d0b53734c,2743293349,13662499093894021476
+a8ee3b01-4215-5b99-ff1b-7be999abeb09,631679288,9265496822281131807
+f27cd6a0-3ab6-b7b2-5fa2-289f9445b664,763559168,5624982803244370005
+a5c8c426-1304-7c76-6b69-ceed9452e8bc,344628054,3529956483908525331
+5cf616c4-1328-3a9e-c3fc-e2c4f8a9aebd,3278102291,17694323140226186865
+0e446af2-d737-30de-3532-8ddf718262dd,2375159412,9654538187675515698
+b70c8f91-bc41-2126-932c-6d984189589b,580699731,1511867895434317380
+f615b826-261c-c484-b937-4ca296ba722e,3693522296,18398130267324893794
+f8280eb8-0dd5-f519-a0da-39bee4cf9a1f,2123602176,8357234094441549006
+73f5fbb1-2d09-feca-0294-205fba076ea1,1625765148,9000951036415658726
+f323ee2a-a83c-661b-750c-059259fb5a91,2091849511,12416080292488333317
+44df47cc-e1f7-dbc5-7c31-b372d409ed37,2135787473,2886643970835735099
+837ddc3f-ab28-53ca-2320-a20ecd4ef8c6,956387756,13717762797805756729
+9a715558-dc04-0fe9-0041-a548dd9f29b8,2583182498,3012640482481031732
+0f4166a9-ea7e-b8ce-2f47-92cf277dc834,4087523898,7510098323894633820
+a23f796a-5a96-0c06-7f89-8b83a5d3f56d,3220972779,1132977654717544479
+e08e0814-1d07-2f19-786e-630546713a51,2759910580,6953192239314889473
+8dddd7ef-34fc-2c5a-a6bc-7a045bbed1a7,4044621268,3619302244026038668
+9f0a2c17-0306-7352-8e1c-1fd6f70ea9ea,1795558250,3499525390595236299
+10dfb52e-52b8-d4dc-0c41-84f0a9e7c9ac,4405422,3168721358851173942
+13bc4cdd-5f74-059a-874b-572b4484f5b7,1558437415,18331499320283714478
+cd1b5452-dba8-d894-1bb4-ce7cb6d64d16,16722622,3757687372910767057
+e1fdc4c0-dbb2-4ecd-57af-d055c81a7a59,2711572759,4555883053773546064
+46dfa610-6c83-318f-9801-7f5885e0b5e5,1951709475,8758630684433454601
+9afd383b-77c8-10c4-d6f7-96c61e54112d,335542854,2696906119012178281
+bc450b9d-139e-8410-f663-9c072575002b,1355285976,12255078714879672925
+6baa760a-5f99-9ad8-c374-29008078f99a,2926107526,13359368677822586200
+b2dc6dde-24a6-c320-992c-88439c0ffcca,3641042823,15820848221863429424
+b27a8e12-a458-cb4b-7537-d514e333a6cf,4082741086,17660685483593472837
+d82fd117-784e-d953-80e6-2c396fdf81d1,1272036114,14645462650679168376
+86fad507-01ae-eb21-13b9-8459fe3232d7,3040931827,8651655068187526189
+40fb511e-c65d-5213-657e-7f63fdc6a334,3711218358,7637930940464798897
+2ad41224-c8e5-1cf6-09e1-7e7f7adda853,2156371712,10099221878343726979
+4bf54772-095f-f895-3ec1-e9aa591d2684,3514533230,2368980539155570389
+ecba0dab-36a2-650e-d968-2a66b0291db5,1957978325,7023005275423825351
+50a3e7f2-50e8-c21a-82bc-ee2af50e7d93,2460019722,4627334342692305280
+c1f8ea4a-3da3-0b11-af25-5314ac46d036,3658374406,1055080389150757504
+88d2072a-18ef-ec70-90f2-8a90d1eae6e1,1792483734,4004362410547461166
+1751908a-8d01-9593-e3e5-3b88217200ea,2536255107,263761318952890616
+c707d0a3-d461-b32a-fc3e-f3bfaef96c8b,1912857408,11317054383406269612
+f30eab2b-89fb-25d6-ed25-ad9b8c59987d,3925022352,18102931480333037574
+7652c736-81c1-6f74-6a16-5d61c5c678e5,4040186346,16344812796938215335
+b26847d2-ae71-7aae-5694-bc57f556ef6b,3650278119,16155527094371122356
+99befe62-4ff4-936c-0d1a-05d24907299d,1400176075,6332613712916557489
+203e5e95-593d-0017-2aba-7c8917596a6e,4005990573,4696217493073817349
+62aa2157-d53f-5373-53a5-2b2099233704,2128220281,8932949117634190786
+f0b0a855-ba8b-6e52-2885-5fe2dec6d7e2,1065470754,10613055670516920976
+d7a2e1e0-773e-1097-b801-5fc55227b1ab,2060965291,17548736634931616586
+6107c174-c2bf-2269-b3c1-906a86b59db9,57163091,7029757498018873352
+8b552fd3-0bf8-0375-588e-afaa423542e1,104887312,9014477682427801587
+72312732-1e5a-f437-8978-ad0c7ec93121,2924747319,12491227953200073607
+cb521329-d57e-3660-d070-2f799e3034d3,2679665104,10749287841643635285
+b115c618-0a33-1229-f045-bafc756b9c7a,2607418177,9919587668300441851
+a03e25ce-af09-076c-03ce-e46510833496,373082199,13262192019906982256
+ad10b686-e786-1048-ff94-b10609e0ce4f,117455290,11751395765405873997
+7ea91c53-97f2-b44e-1b8d-91e016132d57,3748930596,1631687800828504007
+f02bc34c-d5c9-0b51-bb2b-02402dd43c20,3715671944,6408897893481760389
+17e27d1f-baa4-3bf4-18ea-cde71cdba7fd,3627313815,2323940240109426648
+e11e91e4-c11a-ac6d-1fde-598e8b512e0f,1971009542,11103359852207286934
+d6de9373-0133-4328-9e0e-dd0a646f96d1,1570690835,4704431205963261156
+bcc6c3f0-5aff-5234-3282-a44142d0b24e,3847929264,12572403661944580873
+db3466d6-0899-4d02-6e30-6888033ef21f,3852822920,6889019707319501271
+6f198da7-9a32-a0f1-b481-3d3a23b3ca29,1740835161,3661184697718813489
+f533ae56-e2f2-9b29-549f-fe0877ba5300,1924932880,12302286185373142446
+899e9288-000b-ee19-24e9-d90d94413672,4021880414,1227477714752232250
+561ecfb7-849b-5992-7a66-8352aa11963e,3929725745,16836208726494691116
+7fff76c0-94b0-3566-c46f-7577206fb4dd,665148305,4425176797125246837
+4f79333d-cb46-f674-ca53-bb965a2f1324,1017591542,12661415018626212827
+7393e9e2-9e23-1580-4e81-043701fbadf9,1398671275,1020278455599842156
+83f8f7cb-2920-2011-e306-ae9ab66fc959,1621169919,3941514455958588376
+d7e715fa-716f-f705-4e05-c8a0acc2f389,2175157681,2540558453136401317
+cd40f1ba-763e-b924-c8ff-1c7b22fc5bec,3256890811,1745975544010253903
+982127f8-3576-5beb-628c-a2e5d172928d,2606698643,12498102574149640093
+a9bc85e8-ea1d-d85d-d12c-ad05990f1df0,1125930567,5262408553020088590
+c7fda610-5442-40c5-b075-0a2324131fdb,2608626407,10538043721955457880
+6f9c8f35-717c-2a73-91cb-d944298a8315,1328471017,9441482352674129004
+cbc105db-1c8c-738a-7aff-0bcbd659d593,1188602587,18426068778595369160
+99efda89-0ba9-5a6c-e5f5-f4f376b9f699,3037114596,16664656781014485923
+2fd85303-e921-32df-83e7-5dfc7e42fadd,2332675725,4630506552355366016
+456ebb8c-d6c1-6d18-8eac-eb96b095dfdc,1075375460,11037150634584886391
+c1e68b99-3d42-23de-181f-c056f69cdf31,1239482445,18277129932960370706
+c022ee5f-9099-3558-a9f9-1c7ee665d089,1228677891,16089070064552719333
+29d5c3f4-aae2-df1d-6daf-c3f1b91d6f27,1281698459,10826755835264901152
+8d448177-b17b-2f52-5498-3eec375db697,1651892606,1606898788439786914
+4381ba20-329c-8d56-be66-47386060b400,841661780,8111155852071713375
+b33de232-6fc5-85bf-1f1b-b9aadcad0c85,59355808,3831116832943980832
+55d8adac-8980-afc2-640c-3784b40e82bb,1753076970,1391881515215189683
+4bca4539-4c98-f155-0612-ee4ce97556ff,1018566035,16810781031007468153
+46b99d9b-a18b-2fdc-7f22-50ba6004b3cc,3238253314,10892960619812135751
+975e8a25-7963-0ce2-2108-9a22d76062e9,3371987424,13639777694929257565
+acd01450-b567-c8da-95ce-1e034ef38e96,2844739619,15976371829708653470
+df5666d3-090b-7a83-3e3f-851c25ac1931,247602688,3700079306695040810
+17258149-c39a-79a9-df6b-8b06e2e15e14,4154739213,17196830521013353986
+2082393a-ed73-75e5-4d7e-29ebc070c61f,1065017537,790037778396753561
+7bddab75-d591-6d9e-9cba-198da090717a,380255991,4147721885334924796
+f8458f4f-30fa-4a4a-939a-74352dbd3b43,2943438850,12018967762326046209
+cd2e6f2f-447f-40f1-bb20-888249dfc9be,2600331894,17352576641794985325
+44e14395-1dd6-0221-8ffc-d4099745d0db,712692692,10241932552365049606
+ce3301d0-92fb-55a4-a4e6-9e90eca720fa,2061472317,10489054952499588527
+32284b15-cea5-5dc0-2732-2ea7007cea09,311471456,5345765551755008366
+0f1ffad2-5dc6-92c1-aa61-e2eac1a20142,1122499180,15658308682990640627
+dff918ef-0fbf-f489-6fbe-6a7c551bab9e,3315907846,6553029268454565429
+928cfc84-10eb-8c2a-99b7-91a93075976b,942827587,4462528964795696755
+c39f122a-0e12-b587-bd87-5a60c72b7bb6,1038798846,17264196874157997844
+2ea032ec-c0e2-9b58-f7cb-60af09ccc17a,3263802870,16175555563763827707
+d80711c3-20e9-da3d-aa45-51478ecdf590,318935260,17894047629491425485
+9de96b64-ef56-933b-0973-f5d72bb060be,4223241232,1656910767786777909
+64dc756e-9f5d-91c1-87a4-4a8a3b7e145d,3830752043,10995071902968316499
+2bd45693-2712-3d6b-c86a-3f797e9d5b93,904578984,5100379279903744202
+f0380d5b-f092-cb22-6cb8-3c7aa90f4d93,3742411146,13584813659002667791
+ad20fb30-b7e2-865f-6ce4-e7d44087f8d1,1155502190,16587400753588719500
+b50488f9-7341-5b3b-f25b-cfcc24146130,123861202,17449179200592198773
+8f721d43-9005-aedf-e810-7c9a5ae99a60,2049064807,6820944953153739939
+1c855032-e725-0261-420e-dd929d99cb0a,3265862086,17834423611087726245
+cabd0801-54dc-8b1c-8c9b-03eb3b9bd8bf,3468266916,10463853732724720446
+1cd1bbf7-ab9c-c075-5c78-44b9df0473f4,2401666518,3830884961123332946
+a5a9570c-b157-26a7-e549-3ac64c8ee3eb,1604156949,6727409805357091898
+6755ffd4-3234-1f7b-df5f-3b30e60ba371,1386385784,18357372799748382040
+2b705907-4ca2-305f-97e3-5fc40b546a06,161511265,4678416470204172854
+b137cedb-b137-03eb-b15e-a083491f6add,1531521787,2190287344873627572
+c25772e4-f2b4-15b9-95ba-24bdc2349bca,4013143386,6752866532230931915
+ae752173-0255-81bf-a677-25d8134696a4,3387113679,13893858748867401716
+ea8b0dcd-a250-814e-ffd0-ce93ea619012,897374397,15356235515310669521
+6d5e5ee6-7b4a-aa12-e7d1-9df64bebb015,763346841,849062059187152438
+2ca55e6e-7a12-f0c7-d2d5-287c4be4fdfe,3330537675,13972285502753174539
+6691eca7-271d-3420-c71f-04450485023f,2669617964,10433074018620557823
+fdebcc8b-c485-90cb-7d00-fdc57eac54af,3504027694,1954135053864249818
+85fbf0a6-b624-d598-ff56-9ef8f8a93ee0,2442122194,3101323560419206435
+6c67d7f5-d67e-b6f9-0e56-33109741c9b4,917137906,15734709368482345291
+1e4acfd1-5a2e-1341-8f71-da02b84a5280,4029889138,14621331406685764965
+52e62159-d5d9-028e-de71-73dca0edc086,2196071998,16885695247054214332
+bbe9bfc3-871b-f545-5b05-234b087b27d6,3229147090,14959032459064318503
+f1abad5a-20cf-cc17-582c-c5bfb01433b3,493133947,4991681564597220614
+39eb6f6a-e206-4322-423a-249b2523a475,270025240,15763813394647852501
+80eb8e87-8af5-5eb7-2289-d6e2563a883f,4078717158,2352507344080476927
+b6da512c-a7ac-1396-e301-6085f8f819ef,2744575286,5094816431141584079
+83d0bfc8-184c-907f-8e7a-7ccdd5c85271,1891931490,9736925628301837613
+4fbaec9f-d21b-784a-97a1-7651f315209d,3799314144,251755249536062024
+f74c8b88-d6f3-ca66-9102-03c9345b5c31,2499311619,7610288201019635751
+f4ebb7fb-2061-cbfa-1153-44b521a53198,4050101432,3477208695688360282
+69092230-a34f-4c93-ef22-8ef80530ed9e,3443646671,14749953847968308274
+7fee3a62-679e-43c1-f413-6c2c5ad984ef,2318753566,7340223572624915329
+2b87d36a-0bc9-0cb5-3a84-cebc3c6fcb39,846286071,2900805365647327663
+7d6ad8c2-b888-9f2b-5917-d6e59e66d4fe,3086819736,6446022870812641644
+ecd39366-d576-c379-e038-342e550cc02d,262928511,3907619902534320531
+048cd572-c5dc-71e5-02ba-5f3b4ee47160,4278666659,8752771804567514602
+50558777-cec8-05da-7c66-611b569c4698,3323587854,1368709106707082510
+4ea5c8cf-b6d1-4e3b-9b70-9e84b0ab32d7,422908625,6286669540849169123
+e829f9da-edae-1172-144e-3c4dc4c866aa,2414453711,685004080353759511
+3939e9d9-4203-4e6f-e585-408cc25da8cd,493850714,9586046596561001496
+94217a60-0200-dbb4-02a3-e30b99a5d3e5,3320647959,3900121028211223061
+96582dcf-5590-7c62-2ce8-7f93ce554258,4278946854,15200801061052891203
+be71661c-613a-3fd6-a24d-43c6f910aebd,1624703048,13642289123606281112
+e6cbdf31-5000-9156-b4cd-3570323a1000,1888442183,9262932043509468106
+f8cca539-e430-1ef2-8b25-e427f2d41b14,4044678012,13636500006283116886
+de876441-de60-09c2-48c0-e38dfc04f157,2291111159,4309794635836058784
+c4632471-75b7-ffee-43d4-24489ab7172d,2402885137,8984965074089980750
+46faec22-78af-88b3-b54c-f57aeaf29e7a,2847190876,90137323395346571
+7b504545-2f5e-aa59-f774-e37796e1aba1,1528729570,10668181454581922141
+8101f82e-653b-c98a-ecda-3a6bd4f66aa2,3229242743,3577440451783560210
+cbdcdaeb-5618-ab63-c1fc-0f9dc4fb981c,1533765324,18274665001982538498
+80ef12ba-248f-2954-e837-cb2482637606,125753862,13496550441270850504
+35f8f300-598c-4c21-c2c6-c461d6e83715,1225182125,13383744465679361172
+9a195701-fc57-e1c1-1ecc-41dadf6b50fb,3575965529,14293150231416088623
+dad4ebf1-0c8f-46fc-ffbf-abb6b34d7dc1,3120486860,359787725361321309
+50068224-eddb-1269-0f15-4ff87e085368,2124945732,15867590893200087588
+e2e12336-4091-4296-1dce-a17386efc70d,47500745,17017265676998990974
+ef98d186-7acd-4ca2-2da3-50900be46b16,2885386491,311554334599546209
+b054f1c7-b12b-0d67-f062-513ac9b37195,2962257112,16665258119963041326
+38fd2e4c-5f5b-0247-a0b7-7f8c3917aa69,460399394,10024457405250483280
+1542a7a7-8bca-2152-f5e2-32509fe4209a,4042951681,1443354816955518066
+5fd24d71-eac1-d803-d152-fbee492219c8,3037945086,14261849522719562063
+d935fc32-434e-d04f-445b-e843ac66fc36,273553434,468852278378072506
+550d38e8-44b9-793f-20cd-1950b451e89e,4021446726,17385197681204529859
+c7660230-71fc-08ea-abef-ffd802729d23,1855764762,13552220624179116135
+973df600-1b98-92b8-801a-a09bc53f74b0,4066048484,18168512062407318906
+37f4c0af-0d76-b29a-1f70-c5557523d8bf,1855063118,15204199651074905573
+c6220cbd-f128-4c39-c386-28b180fcce56,3328739086,15644700792452404447
+3f7a9ff3-f268-bebc-9bce-a484762d598e,3423152059,12540215009053727974
+85f7e570-2ae1-4fbe-c3a4-347eb8435dfc,3716275909,704468888229520092
+e9160d76-1693-528d-63f3-ff9df3ee2dd9,2905378745,16230112142518321937
+cf67f6a0-5a6f-10af-0a41-8587ab7dc3c8,2634834465,4303372727649693320
+677e3fc1-4c7d-38c8-8d60-b513c9357a02,1486910689,8837349315291350269
+ecb1ecd2-08d2-65f5-7dbe-8f6be27110f5,1644735974,14564015329105037667
+76ed3078-1e02-9464-0b41-50232938ee43,1696487287,17504502314980686870
+c4fd835e-5f1b-bfcb-2176-5ca8b9a50faa,3429150159,16731045091176735535
+6c9e1a50-642b-6c86-a9b7-4eba25f5abc1,3701436647,13987598846582371207
+793e357c-98e4-7de0-1ca4-ed0e2ad7e4da,3704593332,15803181131022537628
+5552d865-a16d-d4be-d53f-979d45c7f107,1830730791,2325060405215708107
+7ca3cc70-5df9-13d2-9673-96df4326c403,2457803131,14926493355336003679
+f63f3bc9-d200-de90-3333-7abab8f7e11e,554870561,16930388994390861058
+01ad186c-ca68-27b6-76e7-54a52ade2261,1827463103,1873457340555875074
+a087de23-9580-bafd-0160-78143a2ea728,300965624,14000804867399948037
+0dcd175f-b32e-93e4-23c3-24724a4d9f32,1606306380,12424277069394872122
+7fb99ad7-3b09-dde4-17c0-c987472a514f,2172172676,18026518324710644593
+c8cb8566-857c-173a-4bb9-3cdd18c3eecd,3792750455,9218697224341743799
+33d7f280-6e12-c054-0a55-270ee9e6b08b,4000808305,15224451898488166661
+9c487354-1920-2895-d561-756308f25f3c,1912194290,10071607832072065029
+ac92f4b5-a7ed-c4ee-7a7e-f7a2e55971a5,2964759803,3435168131695890037
+9d4217e1-5a53-0a5e-44ab-43b6163ff307,3747633071,4867916424553019964
+ed849f23-7da0-741b-a621-2453f5e18b91,809124525,5505263467936412970
+c4daee50-6656-c991-f5fe-52f7f6cfa7bf,1743011900,5830978110237990450
+8ce34383-fd70-3740-22a4-4c3c7ca4c503,4149447349,358825740112921812
+f64cf310-d944-1dd0-3f1c-07a4031f396e,1692696298,16542365844689287153
+520da516-a769-39a5-357e-8828578ee1d2,1329677857,9082812904622203929
+f8291229-4c43-97ab-cabd-de274783ccc0,2543306576,5443799803883148692
+8c0ebfe5-d82b-062b-f7f3-ce9065e27624,268251574,18261665570948920876
+b5b6d5f0-6030-51da-79dc-7787c3bf42c7,2544615192,1065850845135070743
+b67a63b7-12da-4eff-3784-3185715b150d,2526584258,16062560365245355450
+f0270a03-9c59-8c99-a8db-f7e4c2afb2d4,232105188,4868514259264385015
+b4ad66db-1e81-2b1b-67a0-15189f6b55d9,3681226349,17338860747396890889
+16618141-192c-b04f-a6ca-12753ba29850,2947787525,3428730505600364684
+b5c70f0b-5702-6b0c-2c8b-37649a5969e2,2675253325,10882943663460784210
+4d1a7768-efd7-0003-f547-02a30956f2a9,2132254302,4074160655826159105
+ba0425db-abec-7d59-3536-e17cee5f8f6e,4029728173,12514749123749433348
+2ed6fcc4-f6fd-5a6e-0787-0b036db4064d,2928322948,1197516219445853158
+86f90e0a-0221-9cc8-f51d-d8556d503758,2275596967,10853118546277345468
+489fa18a-efe3-1d21-0e1e-9e661c105cb6,3666387689,17177674281153028780
+8a6970a2-94a3-daef-eef8-f818b3c81d9b,2402043400,17567879528049033667
+6a282c55-e6cd-81b2-be18-febef9bf97b8,1838818833,8532882281121681353
+ea059028-d866-e247-e801-9518584ce6f2,1780318549,7878413235029705160
+90b56b56-de37-ac5a-2c77-7e9c6ba4b07d,2088368817,18000802824905596235
+4b07f19d-f1dc-10cd-41ba-3f34268a0b48,729075971,13730392915587897896
+d95df164-2934-1032-f615-72ab20b964ff,4019151536,12037348435005427511
+408f2c92-7d54-5c72-3a17-f1060a504632,3511329666,11045318964358812511
+8bd9787d-970a-eaec-d16a-9d3f7fa65950,114936446,2471197407001561689
+84dd0e7b-a166-cb28-3f93-ab87e467af01,697796223,2010848548746004582
+d98b988c-ef59-655c-d5df-dfd5b3dc0020,3494456339,5635962619159525392
+5f7bc3cb-81fc-68f8-f5f6-7070f239ed87,2396160698,8914878915695752951
+162f7712-cdac-3270-51d6-819a1fccc297,206741798,16157513598317270964
+ed088c62-c7aa-aba7-80b8-bc25f6da0fbb,3684905553,1459951559663712839
+8342ea88-f336-b292-3708-14de97f391f3,460542630,12504807867992764828
+67ffddf5-e5f3-33cf-ef22-1d6086512243,40041674,5859024615381455517
+25c0a498-fe52-fa56-9f31-ce25098f3880,863686583,10027660764027701653
+c11b635a-389e-ff93-7ca0-0a90925db10d,3306057781,30315694805696018
+9c2d0933-20fb-4f95-2c52-c384098f120c,1765248267,499487657930909866
+21f32639-3a6d-115b-eec3-c6d693930d99,2846749226,4869431492785704286
+0d634748-9c99-962a-8542-ed9292be94d8,1827110461,11267425120131459642
+5705701c-1cb6-f01a-6333-ad8fdd339249,1941787143,5716938476659063580
+2d1fe0c8-e233-9a57-70d2-18ba2e9d7c98,1432211641,275304909084938312
+0d89e1cd-b1a5-97c1-ed2f-f33dfa965859,2031199189,5579819202255498539
+03387f2b-7644-5bf5-cc83-2ff3be5d9fab,3613865281,15009093501615242180
+b60e619b-5b76-5cf7-2578-5066bdd9066e,3097292068,17459228097537184802
+a85dd05f-5ff9-d0bf-ad2d-1a74f07aecf6,3307746235,14583310936665545238
+8edcc596-46be-9c75-562f-e7817335edaf,617415116,2295631902991013579
+91e0692e-78f0-8617-9ffe-ee5fc904d8ac,105036531,2781649904350810800
+b92dd56d-9da1-cad2-98a8-168e5f85a753,1984602374,14360042478307820100
+73555fc3-9b56-05a2-d836-bd7aa034eeb2,1314625297,17483312086946760809
+d0564a49-2f1a-0859-3d50-7d76f03b77d2,3191813793,12766796169496095013
+dbb10263-1da5-8571-a8a9-0dad69f953b2,3114169215,15629617034162458010
+ee88af1d-5ed3-8ff0-9034-3b8f3d721104,191874991,10063698827889765711
+f25e3d60-40f1-39a2-80d0-0d4cde93410a,2303123594,10414390108772734646
+2e8c63ff-148f-60ff-a67d-4a8be5092d5a,2469151703,14468012100555325939
+41d73e49-695f-82e8-c774-d8bc6625947c,2083580943,18141040041698161669
+5688a728-a950-cbea-f5fe-ecf241d8e13e,184708622,16581666766683384612
+21c3b66b-c4cc-af23-2cbb-19fe4304cd28,1712677618,16457414715089283762
+56f08942-95ee-c6f0-0774-81c4a754b464,3766124026,12113974209772315272
+e5ec4b7b-251a-3572-36bd-ca9db74642fb,5615702,1625260351336660806
+ca55bbdf-8754-0412-d236-1e1e2f546a8e,2379643262,14872815941425954242
+0933b5d7-f625-0464-2bbe-d0877c090491,633348655,11602179028856483273
+9e4e4fc2-a357-44da-096e-297c6b020271,2170231985,892370879447870215
+cd55e951-3980-290c-0800-63c1cd8da5ff,3364427614,7640490629118550296
+ce9f2c0b-79cf-c6ba-46e6-2492dec564ab,2872794730,10489026201814018110
+f912c330-e6e7-5866-c26f-bc6d62f77281,638432733,4495823216111265415
+2412d6a1-d3a6-b83e-60b8-5f99a6b7de12,1339058553,13042262292898573907
+146f9777-0ad0-f97b-a446-ac40bc304361,161584993,8898949510720656146
+11b68520-e590-e1b3-87b0-ef04c2e6be35,4146710165,6506327530067630669
+f50b0241-ae9d-f03a-e3aa-a9a2504fd326,4080761762,13843052249868331546
+8aba9379-2ff2-befb-3d71-2ed17ce18e8b,2709488163,7792333568476577434
+9e9bbe8a-2ae8-b09e-9eac-4380e2a6e71c,492090199,542293891639310928
+d04b65d8-5e19-b6cf-be58-c25383081784,3590925350,9517977769534538773
+d1f7c7d1-262b-e6c7-f558-b26f32687ae1,3749875674,11713268832139672201
+8b1d86a2-4e5f-97b9-fd4f-cf4b66d329b1,1925957900,2761687100523749607
+01e5fefd-79ad-0da5-4675-0f3a0c4f8e89,1452834859,12359222980824181218
+4fe3ee12-d741-54cb-634f-13f338a5a55b,439337780,11357835308590417553
+cb4e0e15-54a6-d817-88a4-7d0e2f5e4e7c,799257023,14188144113661160462
+f1f85cc5-d445-1433-30e8-302f6383211a,2580417764,5750992185014523282
+c3c118f5-2d33-bb41-6ed3-f33cae885aaa,3352693243,6136256527770980341
+e69f6ee7-08be-b51e-c1bc-0501a3b86cdd,1604176471,15214354534076634399
+287238a3-1872-b665-e271-755bcf60e1ef,733711539,8226405645532986178
+c94fd826-49b4-ca64-e646-7fc9b3ca51bd,2196014801,13435024931262597736
+8b075fd4-8770-aa27-f736-e94e72ca5389,714328875,10820763837725198342
+4f807dc8-46a8-253d-735b-f9da06e34b69,2409883811,14510945669894147879
+a36fa185-c6ad-94ae-9947-8a49115d4784,3873217120,9186203963886668902
+f556bd27-57d0-5a89-15cb-0ee9de399c69,308669211,12212649271485907514
+2ff6c282-d97d-9877-b0bf-1f33e9836669,635641313,11366065182685054478
+ba9b6f84-b249-41a0-36a2-820b753948ee,494216906,5610687437334789364
+080e798a-cd83-6fb2-be23-c88d206eb0e0,3785261029,16214028374618997755
+011c8e4d-567a-485c-aca1-c843d0276bbb,3450039719,9377440804791975153
+ded7168d-2365-eaaa-764c-fb6878eae85b,786424121,13472955381240972321
+c0748fb2-a5b0-2e59-86db-195e7c40a3d0,1592227132,1785023444694795242
+b3f2eede-91b5-25d6-8c32-df72c026ee3b,4190490386,16192226205546345844
+e560ec92-a4a0-b419-f4b4-24c9f32149cb,1104805837,3381138871358819615
+1a925c4b-a42d-f25f-0936-f032cdd275a2,2465435774,5550183175184678846
+7720a145-7a9f-9522-1562-890d17c85264,2364383636,5249614320639887877
+19b2fe17-da76-741d-d2d8-598c5a08ec4b,2497122228,7642199113833261298
+99d51c1d-32bd-784e-798c-2114255b6597,1883234526,12647834680887291006
+04393d6c-e4d7-9ba1-a0b6-e918c6c46c3c,1914221701,11251434520417752302
+439f2fd7-5154-2bcd-95ea-433679dfa7f2,598295304,7630005391731903186
+6f8cf6ff-d1e5-5ddc-2da6-d779b00d19bf,240247144,7441357294514998013
+0b446b32-9050-db49-d714-62b9dceed2b8,2146671602,12380453355521103572
+24fa1ac7-51f1-cd05-808f-1fbda3d9d790,1165600923,18014705349735556629
+89cd1e47-07d4-e46d-43b2-0365f0579e37,1607933846,5194335847011644930
+0743b028-d77e-2135-6f79-a7edefb6fce9,483311695,2757216461467678161
+afe4a77b-1cf4-0cc1-3a2f-ee9a6d8105a2,4089190562,11724450165881654772
+5d6bb4e7-5814-d364-b9c5-98b2a0ff82bc,721048447,16997726416579757130
+18fe1f60-b953-cee1-2422-020e1741e7a4,1055530039,14277988218580059409
+c5ede59d-7e9a-a783-b7da-5d308fd6165d,3439889520,14829578623690266456
+1099227a-2e02-de79-5f94-90937a06b485,3273257282,2105775172649529392
+fa8ae707-c26d-0eba-0466-f4942cf98e15,1602092517,3676908652068969380
+6e43fbbe-19a0-0f98-28a0-88df7896eb5d,4015017069,3892184063984889585
+9d11fb7f-7470-93b7-eff6-31cfd91239e4,2676664552,11787731151463034679
+6136dd39-77b0-0fc3-3c9d-0bf7fd7562d4,1499140625,771713946686035940
+c565737c-29e0-27eb-0a39-8f910bc91df3,2117542659,3667827464978506510
+cf944f93-f745-101b-3f81-d19fcdb92c88,906415347,13283316947424291267
+24c0094c-6207-7666-7ea6-2420aa514292,2492896009,14867294578729800963
+ea502084-2a2e-fead-c1b6-c7ba65e49a95,3269967224,13370111806156896920
+14869862-21cd-cb55-536c-dbd95e423161,4213975135,1201956472824806774
+179c1c68-980b-15f1-d556-8a357c82fe66,2541259213,11671433597721360507
+ef4cea7b-9a94-902c-0335-8417c182e02f,3939918582,8716537986525968955
+f6218e1d-0187-9a89-e50f-4fac3bc5ccd8,3939637670,14748737929174848821
+22e6616d-7bec-c696-0fcb-76e8a4b22483,1521889567,12663227588871500271
+678c3273-e546-434f-ea59-92352cabf251,2253025986,5832807151491559016
+33c4e770-3514-049b-3178-80281f2e31df,4245475948,11673503054579165254
+15463ac0-63b2-6138-e744-1b589a2fe57e,2002075798,16217823656054198938
+3c2728ba-10f4-5f80-ff71-91f7351c0e3e,2062302692,9185606768504967705
+1f16a4fd-488e-5bfe-fd32-aeb685adb1b8,404824170,14274016149363203926
+807db2a4-7d93-ac7b-e9d4-657b18869e82,1603390953,2168293322354791901
+533adb9f-9fa2-31f1-233c-bc7fc3200105,1982639335,12470680528798978753
+90b39762-a1ae-5b9a-34b3-c18c248c59f5,1127314793,3750409976042513156
+1e8ba7ca-b802-7c36-6436-d505d52fe9d6,1399473677,9218399458445644546
+1a16002b-459a-5042-7a38-a8071c1bad0b,3683962215,13104540988034621525
+2eaf3743-b64e-14a0-b193-b7e79d4b90e0,1124731383,8726051919681203405
+57537743-2276-f3d9-5c15-0dbfb01fe2ef,3316000420,5899307973507447783
+ca251a47-0823-dafb-bf4a-cdbe19bf787a,2572834186,7473360485819227536
+37058255-f7eb-7a00-d37d-dc961f9294a4,3906148144,13782584381661849643
+454ead10-8b81-b634-b521-2aa6434a5e5c,586177432,1274085499168728520
+bcb3d192-3c5e-05d6-313d-304549198af6,4044104439,1847773460883651388
+c8d50872-c7e0-edb1-28e4-fbd03c972a38,574189464,2608973328265015439
+920553da-3a18-6b9f-cd86-3bd072b09d2a,296279084,14390407611701502445
+b2a44bb4-5ebf-c91c-3043-2694bb1c8b5e,1931095576,11501088784358346876
+f5872435-bfbb-95d6-6568-4951d4ec0d25,1904197324,13949147992436107569
+c0377a4b-3c9c-f4e1-62b0-4b912b7cec6f,3943139592,16847636022846424847
+d0bc8189-8f88-a935-5373-bf6f7dc8d1eb,794975002,12244097514997531359
+e3d442cb-1742-a232-fbbe-f94b3c292839,517763305,14540128923172070753
+d5483de6-f669-67a3-7227-a6f704f5dc7f,315426500,15775235631006962119
+bfac20a6-630a-f242-5bb9-dabfc1280ea7,4233240693,9132303429537317463
+c06963cf-2679-2288-e065-a3c665303501,971772463,3445809511647060537
+3fa6aa67-fa15-3758-d9af-52fd2f734b13,1079655588,8524905704869756272
+2f6b2418-ad6f-2ea2-b660-69e5d38fd6fd,2241898038,9629636930961688032
+2b633e57-1111-6540-450d-581c89ff97ae,4151573533,6796875007085303619
+711473af-9709-b206-68ba-4ac2924b7f99,2613351215,14578177290975364517
+7bde783b-34a9-5543-70b5-504918b0c7fd,989519599,7578278535961369764
+8af27775-15c7-5599-755f-eb5429299b19,2911276849,17429736752500000424
+86080abd-f116-56fd-7645-5b711b885995,820164297,13205030713134580705
+1e4a6d2b-296b-93d0-8002-4a870b5d0344,719735382,6334204303128585437
+04b4fe7c-f5d3-13e5-8643-6b01690307f9,2203308749,8649039357150565680
+407ca373-dbb5-c245-0c96-56888ac348f5,3675947866,1509858364171090790
+366aaee7-d29a-0cf5-9063-823467a8b0ac,718265047,1863786329743245003
+9db2d3c1-133e-6080-a55c-1c08f46706ef,300115871,9082142747951380182
+3246d436-e0b3-4dd4-8408-d27ee6a4a48f,1744918721,3773816890984158184
+83dbeeeb-1bc8-f402-4697-b0551a23da26,2067936223,8052425437086124678
+9d251b3c-19e2-b320-1f5e-eecdc13d34c3,999868170,14018352043966654495
+12dab5db-1f7f-08af-60c4-cef8abf70e6b,1218205047,4885449516644901373
+a456425e-a9a8-e360-d040-078ce9d0faf2,1071535099,5876962400170423757
+d2c60df0-c3a6-a0fc-8fe0-d245dfe85803,982575944,10514498687882128971
+5136b21a-a230-f3a1-9007-cc4012cab21f,2385952575,5007381971316300910
+b1670e99-022c-34be-a7a5-af7ec8b02e39,2576197413,9021995670342049886
+6afaeb79-8c93-877f-d11e-1b0bdfa3d043,2199647402,14891602818929225780
+3935ce46-e4c7-641d-e83e-b9381080e11d,1957887664,9209198865814534766
+b7522c4a-c21e-6214-0db6-f2cd54ca7d08,3038177608,1160082258855991882
+7cbbbb27-ac54-c2e1-cd03-066c01355a56,1602198699,7326562933147355838
+cac88d64-d85f-38c2-608a-cdadbd7193f0,4027588440,7947698566556119336
+07a0b1da-5545-b16c-8d2d-beff0b2e8ab8,1614710085,6500045728876398808
+9bcc5b4c-610b-b194-6863-36a9c89ee754,520297605,2199526834530798720
+63597b19-6808-599f-42a1-42bc77977b58,898721903,12568347264402456769
+7f188aba-c008-065f-7cef-2b66cbbb4494,1377949161,9388754270663723685
+34ff9d75-b6be-5160-a76c-90223fce1462,3748965483,9219185533568695065
+93d4f637-88bc-b1c4-d9cf-0f2fa0864f58,4281214534,7456167261660123831
+f926c435-a07f-e493-f430-b0299c3c46a0,933178904,2425775729143880881
+642d1189-fccb-2990-778c-f7289dd90679,3483115134,16314264046477755447
+2998abf2-7bd5-a636-6388-0c61716e0a44,3645987304,7805662464444513521
+218d5c91-b2bb-f664-bd28-64b887d33bb7,937498580,726576713808461219
+35c8e728-5206-e0f5-afc3-cb557c862d40,1342632113,12785516737541016959
+45cb9f85-8767-bb58-74ea-4d282efe3007,1803799722,15103901910935710343
+9ef2d5e4-fb70-1957-53d4-2ba9346ce74e,756059087,4406586582095260949
+027903bd-bcf2-a4cb-a3db-22bb47f82dda,1163446034,8127677997196452695
+ecc54e43-4dbb-765d-37a8-d964e1f558db,2001003184,1235063045450217876
+df51b744-de30-b30f-5a6e-3b2ab82adbfd,315313502,14641887046657545532
+a5e2080f-3217-019e-d26c-fddcba6669fd,2284309516,4143154704532964041
+649f648f-90b7-9a34-f8b2-5bf02438f4dc,1491823881,15840967886819409573
+26cc0c2a-3dbc-ae59-ded9-69f893175055,3501572330,12670969202149934384
+fc361e49-2e7a-17ab-931a-f86de6eb99d9,3189520894,15860604969947780980
+d52787dd-0e81-622a-4611-c208418a6bb9,1332409766,7604353291903664032
+048bdc74-b5b0-faa6-35f7-f770a79292a3,2189285236,15909390281208458410
+2dbcd9e5-e8c2-d6cb-ceaa-320f09f5cf78,1846400490,11840906708994962140
+80514fa9-b4fc-862c-9cab-aee272ec28cd,1934360926,11864109886019170301
+2f511e59-5d83-6dfd-e2ec-6aab128fc84e,1565064883,9772793098368850447
+4b2210c1-d09d-585e-44ce-752e42d0f297,2317102310,6389345409417140734
+cba89550-a111-c423-7166-ac203dfb4cfa,1600520740,9384801396594263726
+a2b1f6ff-d0c8-8a89-5485-c7251ab17d9c,2282520674,4320545776011020748
+68259f34-0bef-d213-9575-584e6f24e43b,4066740787,9766234063835954045
+b17a7655-9992-032f-1d62-b48e109ffe6c,3062636061,3364016209960547853
+b524a89e-1c8f-b46c-9068-346df0ea7ed5,899229831,10623522273723137250
+5d42623d-273e-bd7e-61f7-6fd6e90467aa,1024365606,6759440755207464818
+67b85354-5219-9f63-4d2b-94a3fbc9fd78,4291723571,3209960761867293207
+a5551e37-b81b-6d3b-86bc-f45cc5178238,3190425918,9109341720984734593
+866c13fb-2468-48bf-614c-53cb6408b1bb,1443961210,5835317811675295945
+e5ce9506-f05d-55a7-48ca-c451519ef518,3619404878,9834579817742946848
+ec7131c2-d549-6e4e-1b36-10e622f64d6a,2560017833,7022016595258179030
+97a9897b-d8ab-f672-decb-995ffec06fa6,243210143,17457707829930020085
+accf0aa3-4ad4-b430-cf31-44a541eb20e2,3239291810,15491738927575860590
+c6303038-a402-7f8e-3aef-9fb2497b1e73,2931781570,5341106226271355613
+019ab075-7c66-94d9-8bf1-40aa0512e535,2925256850,18391745535728103601
+eeeecafa-3abe-350a-ecc9-3c29a09458a4,3947914707,15436196488553895446
+d05dd124-aadb-8c43-7054-f29b77e2b7d9,1920653255,12521899471658124749
+48cc815d-7a45-c6eb-f911-eb5816f96b55,156043631,12048636446604937422
+6809cd5d-d89e-a736-42cf-a212687aae90,1391979032,16619891750879521002
+0a3c0d41-1fbc-49be-1253-565f70517a65,3071620481,18246905771508938672
+4a5366c1-1e04-a0a6-2be8-5133c9393ccd,2907394037,4969321256947358460
+172f692b-638b-4add-bc40-2766e45af7d6,448478218,16695795708899578325
+5c91671b-d5ec-06fe-c02f-c458d08bc9c5,2483554946,13051577669458632829
+dc4deafe-92c9-f7ed-d2b5-da3225cfc097,2743315467,8823189936934919701
+9edf1e76-5b01-0dcc-a497-181839002481,185165380,12053445602272099968
+02e5c425-2c60-e985-36cb-af907fc6bdff,4153064936,13762430835694571909
+4d421d97-1677-9738-6c12-743a91f6f571,3594603258,3159258885754022683
+40d872d7-6b1b-f98c-d03f-cd23d8917d64,1740704916,4380170123090649215
+fa85f87f-3625-ec60-a156-007887d59e1d,2008587743,14730365324949652800
+0765fd02-738d-d424-e9d4-5285ebc2ab4f,1762216664,1830581218748739607
+71670eab-1e5d-472e-f545-20bfdbfd8716,677393013,6571137527186049036
+e1cb8911-48d1-6743-4d94-892e2bdd1c33,262280917,5989999985519687604
+b4e503d2-409e-1d43-18de-0626c71378a5,473348423,13550161842087856549
+49c6d6b2-47de-65e1-e0a7-08e88ec2f734,132814104,9879649032904130258
+93774604-b71d-f3f2-5a8e-3362b790118c,1715398026,9946391783931307575
+c1bc9523-e6d0-8bd0-fdb3-12fd29c8bd57,1852398164,18122867652990467678
+663dcf34-8500-b159-376b-b362287cc57e,1533760147,11641984488777339178
+bf16e346-5495-c16a-0af7-9dd0efbef262,2652344975,2978648042935030541
+2c59090d-e3da-2f0f-7c23-3fe3d55f9112,2102919347,6575069621353210244
+0093bbc7-08c4-a738-e6b1-4b1cdfc1f0bf,247644301,17097464902670147708
+e32863a7-29b3-b296-1f92-6dba5bd535d7,213086207,5838459216821030787
+fb1337d0-be2d-d4a8-dec7-aeb7067056c3,1662116123,5377388425839207155
+e0297620-a3b8-5f6c-b3e5-026f706d38c2,2198505302,6118488221787890263
+2ffed401-a00e-4b1e-66ed-fca977ce7304,3589847943,9250327342308494420
+1b671e35-08f2-f8b4-d418-0934cbce3a35,694263820,4835771148828867177
+5e1f3768-914a-022b-59aa-8ea71f3dab2b,2243951156,13752067074507786909
+04ffc471-ed76-cd3a-1349-4b3577deb03e,3155107600,11621824182609824486
+2eedf43b-93df-64b3-49dd-76942ab01fdf,1403613402,17738839255613280491
+c4574c80-3242-abec-4d21-3d65c85705f2,2658838921,5833376393990062587
+3f95c2e4-ab01-16da-c516-148d7edb67ba,2497769876,9558180563177199343
+69b9f3a8-f323-8441-7df1-cfd3e80b442c,4053904637,4005721377852013883
+9d533e5c-2497-869f-7aaa-d64c71769764,2723551254,16538255790063336425
+f89a0825-59c4-5787-c9a0-adb8b61ac7f1,1999903578,11470328261443551159
+cc2fee25-b5c6-8c7a-3544-7083d677f31c,3664731365,17467098905431726789
+d5167e50-3691-b60f-ca7c-b48fb956a9a6,2852805499,11837748587113477476
+1d518af2-2364-18e4-056f-0f1c2a340e88,736968070,17188622931279461011
+8a4cfa65-9969-ab1e-26cf-b32f06a4915d,3395227409,2237208468557083964
+aaf3dca5-7441-38ad-93b5-dc6e1a10e610,1406264843,17565758767476881764
+0e415635-0c93-0c81-2165-8b81db03b1af,1092008823,8048426778077620936
+9b1e1466-20ca-1cba-faac-f4804091487d,81708027,12526373928069316086
+249e1469-da21-d96b-2830-3d5f11761cc1,4237073398,5302437966015746161
+a890d03a-fa89-1d42-46cb-03ed8e32bb5a,3309332455,14456050003807696807
+66729227-ab32-64f1-c509-f255b05f46da,549986167,1416457479091347293
+30e6e896-75db-b34e-b4c1-bf2ec3daeb9e,204154182,17354757508450103672
+e9d0687c-5183-c165-b885-428b052fa0bb,1723149916,113721153031471647
+f05f0389-5b12-55b8-e49e-52990fcb6e55,865425562,7292539811931452250
+9adcbbbc-f8cf-b2e7-94b2-161aceb81795,4155288920,6394380516091406680
+62dfd083-c375-1cbf-87b0-f71deb3d1c1a,977524715,7771305659851737883
+273d8784-f6c3-a762-a92f-3c7d4c7ff84c,4001529091,939002573309706920
+af97f656-239a-1c8f-2672-73ceada1a471,1826356743,11365504552323789524
+d0af28ec-712b-f3f2-e879-0d4f1cd9b8db,1248135192,11416872868004946231
+f42db62c-f55c-1fea-56a1-d094a294ac78,2257684458,11600899710940650243
+0af9f004-cd80-a29b-78cf-da99ae30f983,2405020368,12101703103167153887
+c70848e0-3efe-8c07-3dd4-1175b731ad81,739233477,15654805436520837086
+ecf836b7-1417-1ed9-5abc-8b1dadaafa01,2705627496,11849632555526692257
+33f56a11-abfb-181e-a512-3a67b26bba76,965865864,8204058263783794406
+df57dddd-a3ab-0f4e-35d2-01b6bff29ad3,3178392219,12654632043800614768
+d5360dc3-6f87-4ecc-d665-ab611099437c,1316000423,347673291350460038
+a11edff4-c79c-023b-4979-fb79db0953a0,1618115238,3075520515476734532
+960e8946-b05e-dd05-c6ca-5c1740bda009,3900023223,12351610313279796831
+739c10c8-db50-c1dc-8b1d-162ac94651fe,263195780,2901857587733253756
+179b4970-4686-66f4-1467-0812f79a74f3,2584941870,8081510827908986884
+7892fa58-c29f-675d-ed61-f71faed3bf68,1844376854,5896092600210509442
+9b249ad8-6452-ebcb-3587-52d3b021cfd6,2571980371,16752136262647462003
+06063ddd-70c6-ac72-ae17-0e9568f87565,2604118096,3964345326280165654
+10322555-4391-ac3e-6e53-a3cd63459f7a,2115239797,17096630230989701046
+5701006c-4be4-de70-5242-00d2fe1d707f,833978269,11396779664278699717
+c639f583-d9c5-57a1-3dc0-a052af33b434,3001840807,52312813734702487
+c93ee41e-299b-388f-d1d4-109484c76c62,3488535419,8268541441687462657
+7e549a56-ec59-93a4-5190-987888f42105,2534951032,17229944395889262182
+57443d30-cbf0-95d3-450e-47026759e22b,3388168373,4157559893855215073
+ad6f0982-74b6-bb17-62bd-ae3f619bc5ba,2035655573,6818310769780677927
+653e0c32-9734-d6a9-d54b-415cad9a952b,1521591994,5428156250418516089
+9aa60172-0196-148d-98ad-6d8164636928,3111114018,14755586449254215216
+04ac6def-8cf8-c927-5bc3-ef6ca05c1be0,1796468084,10539113440540510263
+20323b45-2974-9798-c073-ce260d80420c,2761991190,6373225106847555434
+f198d53a-9964-4c72-caa4-4af9d0e06704,331065945,3995012511950765695
+7f660c1f-8de7-2413-c951-afb064c4f0c7,2561317947,12225979106171647755
+c42e987d-17f1-47c7-288d-62695ef0469e,3173949466,1344453572457299607
+70ea33d1-4373-0308-e6ed-71de6f6842e4,1534284846,15651871086127693346
+0d6bfc13-9499-400b-ebb5-d94f60e85391,3648331145,13814957144071856726
+b5d1fcad-105c-d55f-7b7a-212fe74f9f10,3583721778,9079041875360253325
+636a4da1-3c59-3ad2-b089-fa6ab485bf57,2282060443,664267021130093985
+4058f14b-4fb3-19e2-dfa0-e72c7cdf2e1c,151587246,2067637028938384278
+ff2d25f7-1369-6f74-d2ac-36397b066363,1415645866,13184077275088911426
+8778ac07-9c05-8c54-dd57-4261c8013a37,225999819,12226142040417292361
+cf8c21a2-dcd0-0298-c17d-bb8223bea942,1739273419,8646647886449285820
+6dfeda63-a03c-44da-260e-f8ddf6f84841,137660611,4473386828948015232
+94c15a9e-a4df-0340-2e18-cab621907498,2805674660,17621343029512658087
+f0c5ddcb-7c6e-9548-f74a-46ab6b6ad5a0,4111532433,10611180974466415830
+4a2806b2-65a9-a3e9-9263-26f91f9ee5bf,3060140762,5038023144528324972
+aa4c511c-1253-83b6-a8fa-61dddd06eb48,2385925018,6508273641679907671
+7217651e-65bb-d961-a5df-c709668df001,2369663312,14664592999762287516
+16cfd697-6249-e1c2-9f57-f1648f74cc37,1295864413,9172371417509232791
+ac80a979-72f6-edf0-4015-87b30a00fad3,3536611019,5409004811737889303
+b652de76-b3ed-a152-dcd9-af58e85e577b,3656457832,4146966730607628411
+00f14fd8-fd13-9c56-9337-c85777323738,36500051,8601237757399450715
+c9c76518-217c-8a42-f538-bee57da3a27e,363470619,3135201920437585250
+be3c5425-39ce-6120-47b9-1113ca2548f0,1681824267,8609519644750439336
+f62988e8-f2ad-eca2-839a-312e73cf5c33,1729549592,11456584682305177132
+53d1a75f-2223-6dfd-36b8-3635eb5332fd,1514095660,17880285990772584958
+fcb39cb0-f1b8-520d-c530-8125d119d227,541705232,8156907276590343900
+8d9605c4-7a32-2e5a-dac8-13a8328831ae,3674792688,2254985689773621386
+335a4277-9179-5b03-c7af-6ebce4147119,1888014224,14066054119224563375
+da59da02-c40b-e21f-5924-458297453a09,4256715822,17109225314519953958
+505f8668-64ef-9b4c-06e7-073a0175af4e,4014512868,4129087759750582852
+bfe526d4-0bd9-e46f-952c-772e4ceef09a,689536021,3538733096265782668
+3b4a6ec2-fd87-e3da-795e-c481061d07e5,3948954300,4968078985010117658
+725b4727-b920-b068-1eb7-621c64d6feb0,3217932985,17894914546342516388
+9743e0a7-0c62-ad93-df65-421b8bf5b0ac,1949816288,8868881569216800121
+f005f084-d7a2-2f81-0fe0-8406965f2983,1475051665,5787410133515415912
+1647c037-8ff9-58dd-703f-340cc06af79f,3197741521,5772974426043184618
+9a6e40e8-dadf-3406-9f07-ea91f899ddc1,1693131474,10090559674289292911
+ea0a25ad-10fa-0910-6ced-2f22781bb51d,387889252,5679032349333934449
+bd4fe5b2-cb4f-0159-82a6-c878983293f4,164085177,12441187812171504576
+ed6dcba6-fe3f-7715-3ec9-2699fb17fe91,928897448,12284099223089495707
+f74c7ab4-0f2c-d16f-cd58-35b0027aa1df,2731399876,12854042920364721808
+2054c0af-694c-429e-8891-54ec418dc1d1,115982641,6788140759928214710
+b14129c8-4760-3446-b961-6ac244016d31,3079515112,14586252719630169204
+d38fd06d-7032-de75-9fce-148236268af9,1144667212,5493401556000351094
+01d4d97b-542f-8255-ad9f-9058cb2e0c85,1233058175,11288191465303286630
+045b1de4-31b2-3cf2-ce8e-8c4a0825c15c,697580478,11897600145501380213
+1839e0dd-2fdf-2be6-0541-ec2841cbfdbb,1951669678,4308493794761883216
+7572e6f9-d549-4c3a-9d11-d1caa5359269,961272326,16228332637507645574
+ec73d86f-19cd-2a8e-bcf9-3208e46362a9,2078197372,4542619861133526475
+b4f97e6b-4a26-2cb5-6c31-5c24abcfd70e,4223931943,6928497757255939900
+53f017bd-0e59-d8ee-f7c1-269abfde674a,3475818562,15706084933140744626
+50c604ac-42c8-6974-9051-d60a180edd46,3848025658,9528911150324515564
+42f538a9-ff1f-b4f1-c97d-618568894dcd,802929067,9368750030398780748
+7614b432-11f9-923d-0fa0-948bd906aea1,2044849302,7050888396780505186
+562cf2a6-29b1-b8ff-8d4e-cc8b2d37f0ed,136160249,12808935464663893524
+6836350e-4e9c-60e7-143b-7eda7854554d,1343147914,10215614001051530477
+d3ab7b4c-46f8-e0eb-65c3-e9d865bc93d8,231160652,2849039960079790660
+c5b79b2a-61c8-ff8c-6bde-79b120504dab,3518292571,13344561928244589400
+c5e1b603-da97-dfeb-b048-4e222c6e750e,4246928667,15228160950677942553
+a6fed626-a561-bf73-809f-02d8675309e0,3061480528,18183173536874645806
+f1b59f95-6899-2083-4b4c-b9afa5f04fdb,2356152877,10810028196959962107
+e653e084-0675-dfda-76aa-9f0d78fcd1b8,4200773926,1965349514360070820
+aab7511d-43dd-a6c4-ce0c-83b644932b84,837896579,10972172582686058947
+8e3796a7-69d8-7da9-9327-34d27769f946,1428602737,14649575754362690588
+2ad633db-3510-33fc-81d9-37911014dcaf,3285095497,14394387467917998377
+d8d80052-2e79-c18f-b1c3-28b4c8439195,1412064498,1176619068615218505
+289f652f-5cdd-4363-e234-712f99662fbd,3533258258,9362084328485799910
+ac9a99fd-0f93-9d8d-02cd-f31088677513,3365403427,417826804349381701
+e7720622-4e38-18ed-5048-297054d6472c,3026882880,15847571865197144526
+0580fcb9-068c-8ffe-2b20-cb554cc3889f,1048547643,2257141914645822393
+a31bf5c6-cc2a-6d12-f930-ecf1fa046805,3529311284,5862961963541745992
+2640e0c1-46a7-2a88-d222-f09e3d3c3a0e,3539998462,3584999506195395888
+f93a8e55-b0b5-631e-8e67-53440784b254,1609574712,9735112447723272025
+864d4b11-5006-536c-6ccd-9496374f7d4e,2598677753,18235594628545048997
+d33121c2-03f7-2233-65f0-b362eee0c4d5,3519011165,18265490719219176615
+bd2a76ad-cebc-1afd-8d2c-bfc223fad231,2800300369,16437261146000774278
+cfc5d3cf-0b6a-4d60-21fb-30636808be02,2045358743,18089100187995220089
+9467c9d6-3d61-94a9-a31b-9f89c1faea75,2492349899,6390156663282336030
+8af61ca0-0f5e-4d58-6da8-253f3c1ecbb2,3686880606,5526496673074001409
+ea62bb24-6046-ea76-5d4e-e2883ff67204,1732884394,9902339579624348310
+3ec1cc3e-3dfe-0ac0-8e76-4cb706c0d0f5,739891799,10175998748549088636
+256824b8-63ca-e7ab-cda7-a21998b2f14e,1708665607,15430290774519168299
+0f2b5d1f-88db-9a76-49d5-04826927c6bf,319285163,12193837367934075752
+dc02a660-c9d5-1d0b-0f18-c8f382a5449c,3018308858,13888511105117555613
+a0acf67c-6171-8d62-1c5b-e39ba93b5cf5,2569089484,6554476699677754706
+5bd6db0d-e76c-6a7b-a005-91aebbe087c2,1506210048,483043946873960557
+feddb617-b9ef-4f58-0247-7185d340977a,3324938809,2895768132413668111
+d51e31d4-2352-2689-17b7-657543d4c903,1807504934,16787177277966064797
+348dbd3b-0ef6-fd6e-64d7-2bc4298608a4,640510364,4795619003478989074
+0eb55dc6-396b-6193-a1db-bbc057c97b5c,3412776402,12411957055674822744
+b7bf4360-a1bb-5335-aacc-f0c7649c675e,2718777460,2341766640086193420
+26ee0a4d-c193-c1ce-5b3a-404e24b90e45,555071137,9831627825757099418
+c17fc57f-ab04-8f99-0812-3d5f91b74b96,367658822,3788486065767503002
+d735cf07-eabd-e389-20ba-ecc07fe84a28,866846038,18056788945504637370
+6595893d-d6fd-3fee-2172-29b92b136baa,1195602971,4415872281556062496
+44907150-47e9-a638-e434-d0af026a7d4b,2843800339,16542180721115227958
+01e8ca08-9810-c176-6c67-37762d39bf05,3261548850,5306005349756699099
+d437a197-d345-1cbb-3250-57f3d8b819af,3493788183,284031309746746077
+c0775011-7fc5-5471-e9b8-c1d1e8a4f347,3305559051,4264572389156819560
+cb014232-2490-9739-5ef4-c6d0b16f8ab5,3742403005,8866232646761209814
+f20ceb52-f681-0bd1-f862-ece1f4b4048e,1074376650,10819112132759402506
+2f538a76-4a9e-7b21-f7bd-a4cf51ef2702,2342915427,7218779866976385609
+b5a56aee-f61b-b62d-1201-7b856a780f65,381093424,17057929213232506108
+b40ef452-6211-8f97-9e54-f2e2cd9d6327,1181508248,10247049488593590252
+763013ce-4654-c7f7-4496-6cd4ec2ae095,2571502347,17303250858403391637
+c2eba6ad-f487-de19-a528-e22a60a40d7d,148223895,926106343949781270
+1374b5f1-1c1b-e279-7d61-e5cc79f8cb34,860821881,3853791945682452889
+474793d0-0820-603d-e38c-d14a4f5fb4f4,1894657090,773935142196664851
+d165f2ac-0bd0-ee1a-958a-a9206e27a925,3916571333,9750858300235733234
+c38fbd68-e4db-c6a8-dc5d-0fffea919951,2103823102,1850622247633385720
+6c8be63a-1302-215a-ac03-0d71ac91edc3,540717894,2552886834531039101
+6b45a743-d731-f38f-fc3a-972c7ef95fe9,2778493617,15454489900968982255
+2c9f84e3-56ff-f5b8-0777-27b5c5033699,644870055,7237353320498819967
+cf3d7d22-19aa-27b9-2a3b-96d5417044a1,1819631632,8807760632382941182
+23f5a82b-5eb4-60f7-b7e5-3d5a2da009bf,753804434,7525920137840955869
+f416e413-acee-0e78-0e01-ca2f8822020c,402229134,8827607742960624055
+9026270e-2831-b728-f825-fb6c395466c2,1008911334,10760968580499003288
+bd26d380-c850-99dd-fd81-56c76343dfb9,3545040904,1155139872075643133
+5781605e-3914-23a0-d4a9-7b33e7920e39,1505756,9224597281546691524
+ff9670d2-a6e2-6c9e-f56d-b04899266782,1664224042,3926903797388292200
+9002456a-2156-64ef-d625-62dac6c8f2d5,1646695498,1151768549690392123
+3274c134-6c0b-d5b4-ac16-4286b779345d,243628900,11482148234867860537
+dbc279bd-923f-6295-6ff0-fe173b960c05,2754236254,7260606992861365266
+4fd0227f-0938-6269-de45-f5569d40eaed,201739391,8090473138105441407
+5fe35b1e-a06e-ec4a-a5b0-995c6dea5dc7,1719702601,10707158421356604610
+5378e5ef-f916-2f83-3b75-bbc535a3cec4,532367946,17240560306144104662
+40f15a24-76e4-30a9-577c-43445f0ae14e,1590609059,13999455383537224025
+06151f63-acaa-a5de-893c-d7c32a5f14c0,2672204908,2716550889654077728
+4f72f113-061e-a87a-b540-39a31440148b,1784276398,3629891224405095695
+d899ecae-fbc0-7d1a-e3df-3046aed99830,1759560287,7097160665446382761
+89f63885-0bc9-9c31-f168-a3e84b85ec1c,3841705444,904794548032981961
+1e334425-d6a6-9c27-2525-a6da503995ba,2501410997,8712444312273020909
+ba1985e1-032c-4906-b32e-9f5fecacedd7,2313997792,2547847795021218190
+47e9cfbd-a24c-34e2-1c01-5f9aad720241,1524829884,7489607735531940503
+03eb4f4e-c43e-1fdb-6ce6-b1101d25c9f6,2748924366,8759249939147058677
+7d3862f2-2c02-5faf-ac3d-9dd728b5f906,2754124446,18186320189935269576
+f7071a78-250c-7a55-853d-6a4157a40ceb,576702455,403858710924881872
+6e08941c-1597-408a-d24d-70f32ea13690,3747022507,14141666577757799486
+1093a2b5-0b71-4c52-ff42-ceddd49c2eea,4053837986,10417309782485136935
+5f8887cf-f4a5-5247-782f-72a236a39bc2,780701900,18186065846655720452
+41a31840-ed44-e449-9399-25799258e644,2782653973,639486880185437325
+c4c3fb5a-6980-d87a-9ce0-be6ff05346dd,1285424569,25627695275848116
+26c65924-a4fb-c73d-b7f8-b5b0606aa738,1456681519,12028406172877368186
+da2a8fe0-663d-25ee-72ea-660821d3f908,3246664174,16147117977242423309
+b7519a96-d2f5-d63c-d759-da91d95b48de,1305733966,17553069300661516833
+af51a954-6a97-0eb0-8789-6dafa8db2abf,1019231435,12286708644010438742
+5c80191a-6895-df79-757b-66239a3596c2,1079545432,2582859524286456729
+2ce98e27-8e07-c042-fc4f-eaa97a09f7d8,3623357860,14124054666505709805
+6e33a45a-1803-8c53-61d4-cbc474bf099a,341151114,10255318712664838684
+83701705-533f-1e36-7896-c718cf6b037c,2947693895,4485193019596461004
+624b4ba0-7189-9539-452e-3f22a39b52e2,3581760918,8841753671528353459
+34f151ac-a487-a77b-037d-698ed3cc901e,1675040522,14938275995619372896
+f61345a1-6eef-2f6f-5386-6ef262a85b3c,2104401428,431846111717944485
+607914f7-127c-1762-edcf-1b2a7c7caaf7,2865303877,15052136475910372551
+fbdce7f2-6222-1cd8-c7d9-a32c8f100833,1522061452,9515782969670216274
+009cc4d9-7db4-47dc-1117-573e6288da3a,1614789985,440326375564352238
+041a6d7e-0b77-1354-3e39-b5b044c6f718,4002659397,14609294783387040231
+2d821cf0-5f6b-8065-8e67-72aeafbffb49,2090553830,8606747593036058687
+41b6c5c3-c7f6-f103-6b0b-2df54ca8a525,3260942964,16037627426646304419
+0b82cd67-4368-7b79-afab-d6f5c43f4619,2184190113,6364615940300488713
+d541004b-e0b9-025e-6d68-d0c9fbfa8cee,1646614945,13766824230178628706
+5cbbe503-475d-3d71-f9fa-ded4fd84e02c,757427205,959310643326489356
+9d8e9168-0f2e-7c72-df7a-5925931a06a9,487892707,1482083465004336587
+f16d42cc-ecdd-551c-0bbc-1af3fba1d4ab,2596618724,10147674809166264730
+032ca793-bc56-3644-2601-b664a5046cda,3335260219,11306218428641157221
+a7d2e0cd-8aaf-d854-2d2a-9d0736ff2c1d,3550106649,3808855039842440713
+f746335c-122f-fbc7-b1d9-3a8321150da8,548701928,2955591897486815497
+953b2967-35d9-3204-cbbe-03cd0332763b,3476845399,14682072630526482764
+0fd423a9-7b6c-759b-3e33-38d65a72c7d8,1555277687,4112576514776561460
+b2d210ca-b1d7-9856-54a2-88caf32c8f44,1102313273,17668845605874561874
+c9e10e68-ced3-da32-0700-cadbeb488f4d,2356938804,7889490170527430001
+ae97dc29-044c-42e1-aa2d-3ab01426d24a,1900281309,3115348535859007527
+a2a8c937-0359-253e-48cf-f4878d1d0472,1663627025,4032661756972361524
+c97519eb-c63b-9087-5488-382ab5d12cfc,3035934968,13438464411505468705
+927c756d-8701-e12e-a11d-dc4cd4c2fa46,2903817247,11780615056404591138
+a9233767-58f3-2a95-af48-ddfbe3b55dad,3552113453,50155401417576855
+c66fe75c-311a-8bda-7d97-dbf831fb2f2b,1605001393,13887512025645871631
+bee890d7-210c-00eb-6d73-47b93ab16ae2,4291059524,14167499235251040859
+16f65a94-3421-16d9-b2e7-7e2de08f9398,680855357,17792521270842302628
+bf99dc8b-3d63-765f-c1d0-0908fd5074cb,1451194787,6732591004784949600
+307a1ccf-c146-e101-8b9f-eef9b06bc9f5,284440755,1648076031216975621
+ec5f2b84-86ab-8093-b0d8-3c7e393b4dfc,3326682122,9362557774721141790
+1818e1c8-b227-2469-4b09-95bae48ae02d,176098686,1876120462796426515
+d51a88a0-23b1-34d8-df66-63c0a29dc4ba,4034500102,2944689149771936608
+73188449-e9cd-6305-e24f-fa211fbe7379,3655040489,12406262227517426205
+3e6e0a4a-43ae-a6dd-5d79-3192be357e44,2943849613,15170684113871147420
+9d2c5ce1-5e61-0df4-f7cd-b377020dd330,798762768,2803705851130380455
+f5c7da55-fbe8-7252-a42a-a24cdcac9bc7,2350730997,7130102235727212153
+902a7943-dab2-4b5c-14fd-b73349a5106d,2233714543,17561535730067904034
+b277026a-36a9-e4bb-ac1b-36a7a783c6ee,931271583,3844105311978085445
+c7bd4360-4ed9-2efb-5f23-8325eb122cd3,1661559097,14776773169863587092
+5efba344-09b5-e95b-5356-f2eef75a6780,1612644031,673853773012873259
+0017e74e-328d-840a-e801-67fa1f4f1100,2715633896,13922092635109945232
+f6d490ab-af0a-bb6f-dae6-7a514fec4b4a,266625989,12397630762098036998
+adc858d1-1b0f-a39b-2a2a-3fb29b547265,3419886987,4985176747761278553
+01c7bff9-c9a6-4fcb-2e47-218539c187c7,3324154629,17454605552361798863
+c078c164-b571-b368-1a87-599488fbcbf2,3915203577,726208459865995088
+52c28f5c-719b-90e5-3a9d-2142f0c5824c,1039577525,9063027050528891746
+71d89c1b-fa8a-61f1-fef0-7da33f8fb43f,510491372,4784148894879897992
+6a4691d0-fb9a-d43c-43d7-876917271bdf,3898253932,8060551683565745004
+5f021c7a-3ad7-5e46-cddb-ad7eabccfb74,1688817132,1613944000830583249
+2ca63e9f-f4d7-ba67-8552-7290cce4cc73,3584006226,1397945028625520140
+5b7cca9b-2d3d-d469-b995-a79a367ef460,3695356365,13569956310934449609
+3f053389-a907-70db-90d0-5ce136772bb2,2106307806,12198087528174808412
+d9f2111d-750c-8e02-0de1-d01aac05ab37,1719818470,14469798563574062692
+583efef9-d7f3-b32e-4fc4-e8f1e7e3160d,1879016533,1110866000308061334
+f89075ff-9d23-20de-86bc-1da03ec9dcec,4007805587,6753889268606394012
+cd5edff5-d654-94f5-3c63-ad028380d747,1288813766,8543125290324564774
+9cf61a9c-a3cf-cb6d-a196-e4a014d88c4b,3274584910,12377643867965695445
+b96374e4-0966-bdfc-4f86-24fc99532d14,3934683181,10675375257763067428
+1d5f9422-244b-a841-a866-69d1c717c6c5,1593704853,13312271399854773256
+6d8b4f18-5261-9a51-2c4d-fcb6bc7e1a0e,1439291082,16255341434597208113
+0b7fa09b-ec8b-dd44-1665-0e44e53bcde6,700826112,7472669754064546989
+25aebcec-ade4-2e9e-515b-cce27e9ed3dc,1734824396,17242222344052769633
+85d6cf1a-11f4-2518-089f-7849b33e6786,3727019503,173119646019399288
+f4eebf1d-081c-e8d6-e39c-c3a94fde400d,3044110650,2089270277671394536
+fe247ade-12e6-0567-0e5a-93aa1618da34,1865325961,16834385127628862950
+6f7daeb3-40a2-fe31-06f4-63a318a4c7cb,3298739416,6606600905714616467
+be46b18c-a86f-8fb7-b7bc-578c2d5e791b,1600846107,4813477346918720719
+df4c6cb2-65fd-4bbb-a89f-e1d6063209fe,339978587,10782372771543967073
+aa15b3f8-1e8e-7b42-ab00-5179ba06a67d,275309611,3220836299266509193
+1c3ec271-1a50-cd82-72bc-2476d490820a,590780053,6159247810796333029
+cd5c080d-881c-2b88-6bd2-35cddf1c056a,4039340039,17523365237260317676
+2176866a-3106-79b3-86f1-29d7ee08e526,1317315595,15658872566720704297
+217fdb52-f3d0-fc53-c9b6-30428a77a28d,2876713080,1423923881731566232
+c716ebee-4b27-9565-7cfd-da53d380e69b,2373676235,11170458814366959372
+e69e3854-1c5d-6e28-d374-4a511fec13d5,1626167852,5167092879763544627
+e00760c7-9b81-1646-c9e2-8b5582c74e01,3028172916,7007808734568674407
+003e5826-f135-4fef-4a7d-991f7cde52ef,1146566125,12736702625523532682
+53107f1c-6af3-73aa-da77-6735c5753947,1813659429,3453018087000353449
+0c5f3b7e-275b-99bd-3b76-684fcbb0f3d2,964701660,18032356457540824244
+3edf8b6f-7a64-41b4-5915-d5d9b28fd86f,2054438354,18125671551504673870
+37a54ab1-0f38-b3af-5f5d-a23ab6a807b7,2744427112,5236299093203714042
+ce96d8b0-f425-794f-22cd-f841f572bbb4,1038470402,3824232747892167277
+339d3f6c-b315-4640-6ce9-336e1bc4fc9c,1677145894,15806328235637593883
+cc0ca991-d0f7-13b8-c2a1-66afd3a43e11,556318157,14862339503600005916
+ebf5cac6-45c1-db2b-a01c-19f4c9dcc2d8,2550150201,14288337389949054183
+abbc86e6-fb1c-b2fa-dfeb-74e5ef167216,2386448801,16527728536076542056
+6b8d7678-c14e-2a0b-fd87-fbbc27f2d8f9,1507001641,4303268255358786818
+78dcaea3-5525-7d60-e9af-ff551765607c,3015073781,17822515647315304445
+79844eb1-87bd-a471-2d49-ea5072a0fef6,3566481510,1497835600728738594
+bc2a2f69-e9c5-0648-4bd1-19d9a7ff8d51,43165372,9099499759197264601
+ff178ff2-aa50-7b2d-a06a-174b0d37019f,328300451,4554944087793768038
+9468bd6d-ceb7-19a7-e83f-fbf8b8f9333b,3401048232,4784603163093314277
+9c04922f-c0b9-c1e1-d8ef-c7a5da93b2a4,2236610848,4062726620994121762
+8153b50b-6e19-c0a2-2420-75ed4380c79e,4258556210,15045191961684342244
+9299f838-eeb7-816b-bb00-f1449acb12d7,3706256796,3858572229102598550
+23503136-7b27-90a2-0714-57fcc763f4da,3449260181,16684986667269002701
+9214314a-fd85-995b-114e-6cd717e04d53,2091869927,13649802485981487074
+9e4d0365-817f-7062-7160-6be34fc0caa2,2524760790,12533757494694312943
+d3a7d968-b7b6-58df-f175-d5ec01c55e51,2948415084,18097188125399946859
+6c02a697-f6ec-7f9b-62a0-db93a316ab73,3326850106,3952640335460135288
+3c1e2bcc-8ab9-e932-5dcc-d2ef57bb82af,451453505,13063110916438297468
+e994b26f-21f3-56fd-a036-aec0f9ea64ca,105980432,5922874297847816860
+ad9f2043-baf5-96a4-eb88-abb5b21614c9,574277407,16732707555027562273
+731b7d68-39fa-d671-93be-dc4f9ce20209,313263912,6323022418920374044
+415389c4-b092-ba42-ba07-80630f710d26,1206398337,6829734427671632576
+e3c17c1a-0a0c-05dd-5761-27eb9144d14b,3617923950,8497284938927189996
+84d655a9-742c-1668-a29a-322365195dfa,3086068345,7268766480151785597
+38aab3d7-657b-d094-b86f-2af5a8c189ff,3584521232,16915792661682470320
+99b15e6a-eebe-e496-fd2c-e861a9c074d8,2566363469,232319052741534997
+a9baee1d-d1c3-2b5d-248b-5a9943110398,671147875,11484341834859025911
+c2735d7a-c2a3-24c8-4cbc-e531b155a9a0,832744675,3499636029157850017
+896f4429-fc5c-83dd-3a2b-de29df424c20,592604182,18099253619300283191
+b8daae14-3f6c-4549-7cb7-676ee8b75533,824521488,13232243884227605071
+a7217733-f0bb-fc27-ea1b-630a34a491d1,2158827638,14722016581347540798
+b5791965-7f82-5c1a-ee82-11dcaf9af7d7,3074306105,1729050600300064647
+a8e67f49-131f-ee77-00c6-d6fa984044d6,3585044538,149592178985878064
+01b14ee3-c1f6-2943-7031-4cacb142ecde,2666343835,11127420182000001010
+58ccaa77-cec8-e37c-8874-5921446cfc8d,2792333106,11377585756797443813
+3f839fa1-329b-44ca-5a5c-46302604d5b0,4052825303,17267298359320810039
+7214ca5e-717a-8095-f872-cb18ade4f079,2119475487,2164953238728558538
+8992d774-a52a-4549-efc9-437485432722,453890548,6399444769500238664
+67265ca4-afb2-dad3-7e76-6dbb0395f487,180320518,13613765119070928491
+35cd100c-14ec-900c-7b1e-3c8e125962fc,2933976806,16543155133044469964
+6e19508c-120f-2022-fbcd-c59651c92582,2741167175,16177103337022477739
+811bb22d-1daa-7bf0-d1f9-b2d9749ef5db,1334445829,1054217319312296562
+0dc9e37c-fe0d-6dad-6357-cc29da9779cb,3171846890,10637943248883099382
+76ee7219-f79a-a160-3aaf-2fb3e7a5ae7f,2838329025,12625468752175342892
+e19bc666-aa60-fd85-71a3-37407147b8a4,625403950,16188187413024561566
+e826ff58-aff1-8aa9-88bf-73162bcbdd9b,3312046794,3768400282231004918
+db448acd-d9d7-1a27-3126-6398bca55497,3073287813,4458221271231826478
+272ffd70-eeef-88ea-c75f-3b5a61e047c7,2372047742,4493569048083464455
+19c122b6-1ad7-f531-3d84-813534038a7b,281066694,10878328175127843593
+a59144d1-8041-fff0-aecd-b1c588736409,1619271318,16830638221389149136
+af6374d9-09f8-8f3d-d3de-fc9cdeb4206e,533339568,10133648972525720506
+d39f2892-1f7d-d47a-68a3-1f2a61e4e784,3236179562,9075019029925604320
+87841cce-83d4-3435-97a1-a84c63415b58,3565260689,280359968506939254
+f43a0aa2-8509-42e8-7bb5-0734a6412a64,3406835021,13786398115383758511
+f3381347-c295-9251-89b2-c50bd85f226a,410377601,10959737558799091515
+4a321ec8-2703-ad47-b207-5a78d5e215c3,3521941187,1515602104748199602
+61b7a6be-ad60-9590-6199-31ea48069b09,4276021350,2068724494112942742
+0bb82ef3-2db7-4863-e592-4c3b613f335a,274617001,10770995427714631227
+eac4d5eb-102e-e7c0-2095-ffc84fdaa025,2560963479,7069110343951563056
+c90396a9-358b-8023-fa48-efcf941550f1,3479987787,3513430031843112458
+9e2b6fbd-9761-8845-0c8f-c208f07951e4,2100187565,12296450979819312581
+2c7129fb-939b-bf57-7bbc-fe8a4be76748,4189810025,11248722819727157228
+29bcac72-80dc-f009-23b4-cf67d641be61,181963368,12828866106783353799
+4eda1dc2-1dec-12fd-44ae-829768318e2e,3903176587,2753383076067458923
+313f3e2d-8d7b-f5f8-78ba-5dcce6e0d2b7,296201951,3816389245868683278
+87eb492c-c4fa-fc1a-e08a-ef1776601233,1485682781,16930779378624591453
+34ed5979-1567-28da-3fc0-72beedd50cc4,3898207700,3255244028492110903
+d13903de-17a5-af58-6b92-5cd0bcac703f,3580721700,12282929064162313555
+5b37bb85-4c05-b287-ba61-b0b35b10b613,817943486,2647786721726627499
+b0b4f413-6804-c1f4-fb96-662434ee0536,1912513319,3964807360709001107
+335db2ab-39ed-d733-dea0-15e686895f33,922293851,14624604183326858610
+f6e49159-0bb2-acb9-2bb4-e9aa7b28af60,4021446592,16053579997504388906
+8ef7f798-aff8-8c37-6757-125c7fc5dbbe,553622453,1409083842724297854
+7a735abf-174c-70b0-85f1-58b6e2f7b783,1027413012,5411326860674219610
+bd313731-583b-c8e1-3587-2d33ca05eacf,3139502108,11735953890375341888
+061224ad-2980-903d-d730-f4487d4d4fe6,3430211772,16396829569369493673
+8111f820-924d-2ad0-67c6-0272ef398265,419290340,16879976187374980416
+7cbdc2fd-ddd7-55ea-126c-1a0274231753,1723607911,10261524735495170567
+5c6bb48b-949f-0755-5756-7d7272e2cebe,1310422221,10199527105903171543
+7f114969-8d44-8e0c-b352-4b36a60592aa,2740374047,10152608581560855682
+5f17f23b-0ddb-6bc7-5553-27de0c37e0e7,3849374427,11149917697247844604
+cd283d8a-eaa3-ba33-77bf-61e88efc168e,3403899085,1611753705380947459
+dec048b6-9aee-1912-336a-ee60091e302e,1391138728,3391640925689190200
+df91fd8a-e034-5b09-d888-0a90fce0c0a1,2405766121,18000235967145103875
+cf5cc98e-9f69-253a-7f59-b06c043de345,129762641,3460622173634373578
+1f5fe84b-85d5-c065-3cbd-c4dc236d5f83,405483618,11649296821607515868
+b48560d1-a726-b48e-4e86-807e3f7c2bf5,2250165704,3475676208687941773
+242e8404-e895-baf1-c785-c7358d0e80bc,2704872701,7096825145006323487
+3fd66fcc-f842-bedd-8b61-373dcaa452f3,1647085828,4836127080735778899
+b69dc357-cdd8-14b0-68ae-e077b5e3d5e7,2540755257,15967448942023513349
+58b4b750-2489-ec8d-3f1c-50483eed3a9c,89670033,11652764677070945467
+2edfedf3-ac32-25e9-44a3-e95a911cfe37,378160683,15874733364796667166
+8fca5e56-7578-9c8c-b7ac-e473ad5add76,2192538657,8501034332156882797
+522b943b-212d-e060-8e3c-3ed772a09f8d,4189875488,3751230433602783696
+4d390e5b-216b-692a-38d9-59cf2a9c9520,3428710108,11392581704081122896
+4156b0f4-787b-2776-6558-4c72d23d3206,1892340939,1790590223305112200
+282620bf-25a4-beca-326f-921b65ada0d9,2253888054,13899675282095280593
+74b2582a-2509-2fef-f92a-19ed7fc8bf5a,1913534762,6962503969561479697
+e5f58fb1-c31e-03e4-31f6-09a4c47b6b25,228053245,9711898541851788365
+912ab547-07a3-24ff-6760-69099468412b,2249765114,1480566852905862552
+e96b4c1e-5a4d-7a69-1220-e2636deb56a8,1126889168,8075420259117118147
+f85aa541-b0d5-81f4-5400-f63995a77645,3383361008,11335748632623713029
+869d6e08-8b72-ca6d-8f35-f0b73c58011c,2584418871,16949633519039547107
+0ea934b4-76a8-b21f-bd1c-59c1ab60f964,753122142,12863757182658594057
+a6008279-bf11-a4a8-cf79-a45bd0d7ba02,943854887,4065354303160224694
+276e9989-95df-1737-7ed8-010ece0839eb,91282506,18039865185982154836
+7d2d19d4-a452-40f9-db5b-2464017a3cf0,1485642679,14565300515145840654
+b587b917-79f7-0696-a0a9-4277e1270b31,2116964663,17876677251794643150
+b051fca2-bd2f-023a-b117-340bf688a38e,1194493036,15224590564587833102
+30c2b409-439e-8b21-fa31-b8f777e3f454,207853745,17945647359373777250
+781cddf6-c910-ece3-526f-8bbcdffe739b,1450850113,15720900309794787231
+6f30624e-8967-5482-07de-25f13defdaac,474022082,24190183718130411
+5d17ccfd-b57e-9efc-72c4-975f595d462e,3354259727,3569469924702472814
+408683e9-1f9a-ac8d-74ac-21777e873b80,3850994102,13182596967874539580
+e2efcc8b-a50e-6e23-7f9f-5ca593a4735b,2535051538,1866326689247389211
+474724ef-8bcb-c53d-2008-5627fa497238,3656565397,6492131971083377973
+d0f20057-d492-12b8-7a93-fc7d43a3ed2c,754652041,16841346107517376056
+787dc5f6-cb83-b12e-946f-7401027a0325,2109894907,8047069260623939377
+da72e16b-4ff9-a0db-9cc9-9c0c1edc416c,2214811850,3201157341953017511
+af97d789-2650-1930-69ff-1b51d06ea6ad,2652889351,11540767133427589358
+9f69f172-0671-5701-3c7e-cc75022dfb13,94298078,4231440553783847830
+b1bbca3f-dd99-cff7-c2fd-a0b973e4ec75,1613354084,11829570057503843602
+15261444-57af-d48a-a90c-30ca142fe14e,1595876007,10515532890058460084
+d8e9c862-0efe-3d5f-9dc1-52ee290d3cb2,363429095,14851289618751601041
+9823608b-9c15-1e25-b2c4-5c54e27f354f,4481405,16712239029811719870
+cc15093e-01a5-9a7a-06ba-97ebfbc6cffb,2859109946,7514764751317969794
+3e87d160-7604-48f6-6a0b-9104f7a17798,201971848,6197299291929835030
+418d9473-8ea1-98f8-f44b-c8c7c3e42241,2057583666,1542521247753689305
+77b5cf8f-6cd4-af02-aa59-970eeeabc2ef,1664596464,17142109126459350780
+fa23230f-cd45-3f96-f02f-329e16740882,3298476032,2494330418976651187
+f1c2d20c-b60c-39d6-9506-0df80e61994c,1644555555,10107563459335418392
+425201a1-aef9-59ac-860b-a1be86ecbe86,3716170220,16288080198865581544
+8878c9e0-e566-01d4-387a-9ecca8924f61,2943201444,7867103376433046375
+8acd91a0-8507-a352-ae96-101d25ebe80e,2812928542,346909231887423287
+e7cd2a6b-ef25-b4f8-b7db-71456e392815,2008687671,2545882362831270122
+1fa76ec2-9db0-efad-159b-cbef26cbdb8d,1925537337,16065124877620128551
+0fc20ca3-a8ad-d961-41b4-25601c393322,1655946085,15152520899472257656
+382535d6-b738-2c89-a7bf-5d47f220e6c4,4027544128,11722654071668471929
+811be791-c735-37d1-cc3d-00015f4f3101,596001890,14299625853963418870
+e64d398c-3f8f-8da4-b02e-38abe58d2ba1,2681000859,14249049884557316374
+543afb70-653d-6ea7-ffa5-89da929be435,761537644,3192582678376413644
+b25a4318-447f-7c77-6799-8ce4c34a6bba,2589048030,15719327686174984251
+0f829479-7078-d5f2-9c6a-210b048ca9e8,1772023217,10911592876584953752
+2d6b5461-bce4-9ffa-bbb0-c7ee669b3d9e,1736206187,10401064648408481963
+fe59c0cb-d12c-504f-8ce0-b3ca824bbf8e,1383292398,7230389737904790739
+34d063a7-407d-dc7d-c3e3-7ed5ba4e68f4,964958508,2682372276400266062
+33af4565-6745-cbda-2981-62f6db8eb5ab,3673503668,2853833033792886877
+439ad524-e6a4-8bbc-7b94-42cb9a9c746b,374069987,2358870612216700414
+0d12c8ab-9025-d46a-549e-67cbef560794,1483768210,8914047213777156902
+2d501dfe-a542-5b0d-768b-5975e829ea9b,4128105939,418924851955892608
+fb8e51b0-dad1-8e47-a20c-b4d89e1bb952,3201514670,17316197427902447906
+951d8004-7529-e40f-00af-ca18363cf73e,1690230209,10975664963318242989
+b2ece4af-2094-7895-23b2-150a55e80fbc,2651264379,12240083903851588232
+11c2a21e-d8a6-0b75-77fd-f8bc4cbca7d6,3625299451,9526594781684337664
+e079c38f-aa3d-54d1-1e46-a62e1b115184,3836057019,17844066506435634128
+dfc0be3b-17e9-d1f0-771f-4c62331f05a1,1114281835,15195754050637623218
+ec725d6a-d096-5fc2-cc38-4a5d98fa3097,4272044208,4508997936862902794
+2c34c1f5-527d-541a-b098-d2a66770db13,2458096970,12963388824451889009
+64038d59-fcd2-78c0-1592-83860f45e98a,1064046713,14224284484182380717
+ff606368-4091-b25f-6afc-3af4fd454c86,1245156571,5854940904519757871
+2f963dc6-d81b-a215-b8d1-882a3b7de846,1673223670,16389275798489536382
+d501dfc2-456f-6bad-a3c4-68772d62c3da,2617108603,16692645472264283405
+7e4bca9b-ade6-00f0-9327-c1236b4bbc0c,2486561117,15675234465352971397
+7ead505b-c511-a7fe-5911-74d352ee2f69,2621861217,11929405592290454553
+831d3fba-2509-349f-d5a4-914a61c36b29,2638283862,3625713614197916629
+f7956522-2eba-9536-1a61-ddc5bff15149,3163927895,14874865117349208071
+93fa5d6e-0059-a1c7-c404-aecd5588dcca,987834097,8788759594955653889
+c9680f0f-157b-d247-4237-6921fda9b3be,4051360953,15579148392621063294
+762c251c-7313-b7cb-3946-e810725c14e9,2135606016,13260861175982909567
+4ee57c73-5d1a-0dbb-b276-b0a552fe50aa,2881194402,14353407668389937430
+d69df776-1d2a-3d98-2e11-3285bb09ffa3,3933240164,16395785485512440665
+9957ed73-6727-b077-9ab8-3c9974948915,3458169117,314638163952276472
+5af01331-d9fd-cbe2-a4ce-e75e457df47d,1967977158,12163954467599270115
+0a5314b6-3719-983b-7e5b-685566ddbb09,663607290,14700327845331606351
+45761cc0-556b-9423-3471-a3ea98fd120f,3285635358,9142207029916641995
+3663f4ef-d792-252b-54ce-fa33fc4bb172,2714767397,17751786430746147814
+83dd36de-bce8-9157-b029-990c0f1cd55a,3703175095,730108664514411946
+850702e4-088c-09d6-6d1c-2b66b2abad63,2642159056,13264017384736978802
+2de1fb6e-6d22-6f27-61e1-19d94a5890b4,570964818,6912325122828057424
+6aded8e0-d4b7-359d-4a6f-424990eca0e6,3469454753,7149825821428403743
+32b58ec5-9506-749f-3681-e27e0630b43b,1537925405,16131944378287165937
+c5cc4b5d-acd6-beea-f4d8-5bf867d31110,1331177899,4632352968528315011
+88d959cd-00ba-0f5e-e17a-09e7681625c2,1486139916,16937537476139552906
+d26d5eef-4899-9a27-78bc-8e74c2172b47,4090441045,10731703646077971330
+9a556023-5985-8b33-0124-a5bc84e8ea4e,1633645728,2928700551509467002
+063c4494-a7d0-b5c0-2084-b4f69b860b21,207695909,17646234939180841751
+667f79d0-f933-d088-fc2d-733308aa75b5,930890262,2136755153412493088
+8d438f91-9e27-8ca8-9a85-05b591bd03ea,2727480662,4680888074404102754
+0b90d9f8-f603-523a-4887-39564aac0762,798928365,17405665033067790960
+73af293f-c082-3b6f-1c5c-33f9fc0056fe,3546545347,6132125022116533904
+c0fa4c21-3571-44c9-474d-e2cf9e540ba0,2867082612,2123117179794465902
+24e8dd07-69c9-7591-f635-f155b85b6e3c,2859546188,14231484671853059896
+0e6dca9f-40cf-4e89-c8d9-d9561d4a310f,1650626554,4931009627068209957
+16af9c01-905b-2197-3ae7-294a6f0b33d5,1229992179,9635218047230024573
+6e02b9c3-33be-a2cd-3140-908ba907d8a3,1324661167,16983523661277482377
+e5d38cc6-71b9-632d-bd68-33291e1313d4,2350423380,3823465792803017359
+2d72039d-5051-9234-e339-e82ce9fbf737,3772642299,837773457915672671
+4eea6a17-47b5-8238-4e5a-5d8050cfe483,4162686149,9829023575512062113
+cfe82b92-90fa-b0ad-caff-9cf1ce8cd5d1,3300862184,10489484523505752568
+5d2e0f5c-9e2e-5352-b93d-c522b00e339e,1428160493,7557585701272788322
+5a9278a2-4814-f487-750a-f3429348f229,2740346950,10841729595752123076
+6fd20a9b-5c87-43bc-d9e0-126b0e43b8d7,957278197,14133068960361524011
+67e22eb2-af3a-a6c4-9539-63729a34227e,360436999,12929501212919961501
+af38b3aa-fe0d-3078-a5fb-78a6f9cb673f,4160292496,3557273983233425261
+fd16163f-47bc-db4d-f3de-70a7d3e22b0c,2358705077,1755712344323312206
+be7dbbae-de31-6142-9451-bd9d4a30fe84,2220820607,15468953392095610053
+c39fc107-d0a2-9f93-3e3c-334ec7155420,3954625991,12288819019422831313
+6c914c64-49d7-af70-de18-3b078c968637,2214269305,3838335230583896380
+ead581cb-39f3-b550-8a4f-96c3a4313122,2803794790,10763942205425758322
+719701d2-c650-7dda-a669-9b46033e5673,1637696264,14443983341342870815
+a44e84cd-2feb-3ad8-770b-f9b1a9db538f,1609646002,1164573354135546013
+270bb875-508b-f68d-6839-e47c2009ccf5,2670477793,12989792161866388467
+4f4f4519-e05e-9163-728c-38ea1f372791,915355895,9097995804038404088
+7528410b-cf95-0ced-8a18-e57e691e9cd6,2320548267,16184505575735261829
+0fcf73b4-5797-aa28-baaf-e60d8d306736,315570183,17836756089230093097
+85e577a9-a5b5-b2a9-0938-9492b98e59f2,1020654859,7761580225918963673
+830b2a24-6088-e703-b087-541cc8f10e3d,1290349263,8078607102669066468
+407d72da-8d44-887f-b8ce-f229c1ad0fc8,1890055098,15730939338999524483
+47772367-63fa-addf-5c7b-4a4b29eb5ae8,637727253,2687411992046126155
+4b91d6c6-2e2f-0c05-3e6b-a7e14d72b76b,2557102476,7600747485570132883
+8849f6f4-584e-4b1a-fece-898a424523bf,2231061781,12371828859851240301
+97305bac-c64d-b18c-92ea-a3175411d318,3133822580,17711454191704239044
+fb8f276f-81ca-086a-0190-4ae83e67165a,2694978250,109408912721713713
+a07468a2-891c-4285-729d-9aaaca154cc6,2863133180,14884735317772392514
+08bf59dc-6dc2-ba78-876f-46877c3a7178,2277053137,4690635090406095616
+3ba2159b-fa73-adb0-d3ff-f7c6a690a817,4089392520,17494278327485165587
+ddf2745b-10f9-ea7d-86d6-3dbbca25464a,1050721028,11363673558072432708
+088816cb-a8ca-1c35-edf9-1267ec8ba0eb,460310859,3665799980100485447
+7a1cb254-13f8-fba4-8379-0b1e84c92f8d,2359881334,8676646786338801268
+ab6f1dd4-e1ea-10de-2a16-a0e4b6ec1cff,2687408645,12429963034077736286
+ddd0a1e2-fd4c-7856-4fef-36cb8e80a5cd,2750959031,5984046850615595271
+48a67dcf-baee-1a57-6cf6-851a36f496d1,2404632935,6686526871176046169
+b996ce99-a700-3f8f-0321-e55aef654b4d,645498860,5259413911434619252
+22185c92-84fa-b0d8-ef52-71b792a34794,93708741,13654322796848285068
+7bde8278-81f2-23bd-0b64-0cd2eaec13f7,3422371087,11625779940580593399
+cf656d96-cf9c-a82f-4762-0dab86028a60,4062924415,18331673566800164893
+daf1f50d-df77-244c-c100-912e51f11e03,1255808182,14866371640617765399
+9fb11bcf-2ca8-d535-2cfc-d0aab80e422a,3352996738,4049813020010690288
+0646c08a-b8d5-0106-f179-8075bb156c0a,2807373424,11769852367038826510
+659cd09c-5877-5ab4-e528-8c1d54c386d0,2332019354,132364732812641579
+fa06fb42-588d-66a5-0b8c-fbdf1f779f47,3831379578,16857281094803797727
+2d229997-3585-408f-aaf5-87061cc1abf6,3820673270,1009026607227469993
+6460e946-b6d6-ab14-8d14-6099ddf8a0a2,2982073078,10958128079285983881
+3b41efbb-3d67-00e2-4c96-1fed8f7973d0,1206231894,1021058403495631260
+f9146c20-2827-d036-b144-577431a7ce86,2394501240,1324393607955606312
+37e8c06d-7869-6df4-def8-4bedf232aa31,3082637282,11980563777410903411
+fae1d7ce-6c45-455c-bb82-5ae2cc842719,1693595215,4309280540654728662
+bc4e6a92-cbc2-2a37-0702-dd0a90402b4b,376803240,16723629648316742329
+67adf0f7-8bbb-d063-c319-6e66a1ddcc36,3851958429,15402748945215447602
+ed9b1585-5c1b-5038-a4f8-57507de7db83,984761773,12243790737257887305
+5fcab366-fbea-4a6d-bbd2-205f687b0f0d,2535812232,18109650510749025272
+f7c13c05-5840-37ab-22d4-f4fed47c7c13,1432370896,8914171558157737789
+e5b2b31b-cae9-6fa0-cbd7-b1421b0be0e2,2161773040,15330124796596608380
+5ca3d5ba-524e-411d-606b-045f0880b624,3041216037,11554011469247662043
+8bdf7a14-6262-9512-7823-0764ce6b8dbb,3328205918,17935396456141004657
+0cb0ac97-cdea-9d3f-1383-fb502dc66a5e,3044566703,6899610040004713657
+3239920f-403c-e2c9-9c54-7b38f18f7ec5,1169209063,10706754219039287042
+b9f10a15-01ef-4465-af84-c9c8a2dc44d6,2368630524,1924543992901367999
+fb036b28-53b2-4c9b-b20f-7118bf6c943c,373060419,12187275281702796127
+dfa74afa-65ef-c2d2-fa89-a68642df74bd,3663220357,14761757059649961628
+2b713110-d578-c01a-474f-a08c8fef19d5,190684358,302352469171985019
+96030547-ca3d-7835-0cbf-d988a3a7ecf7,1412992058,1926528581383999088
+7e70cb3b-df7e-095a-61de-1378693f8af8,3999279811,4121579063637243308
+efda5bb5-bb38-1a6d-9917-0560185cad9c,1321482375,4622497562869819968
+0b385f82-c66f-035b-f6bc-e24d28211b2d,394133058,18439192828744296644
+ac182c95-c07f-0eef-68f8-6aa780adf09f,1478677270,10784484449728478005
+6d590182-140f-d8bc-41f8-77c8683c2ab8,359647471,12683287738903472214
+20e946dc-5402-458e-4609-b25c42f71e0e,1245013184,14989198924283609916
+022a4bd1-c20a-9c54-e5bc-01b89108c691,3474524471,2646868595448518498
+1cf8b5aa-7cd4-87a0-2060-6f7b90cf5322,463956926,4455759126176159420
+d6a007f8-0b5a-f87f-583b-294f731ad92e,1197795280,7066768976597127234
+58576cce-e9d4-5fac-900b-8a021439aa25,1638864044,11477191700042958680
+bbab9e0e-a544-054c-09e8-abaea0e81602,1806326731,13952118992689604798
+7fec0655-14dc-8031-ec20-319641f4aac6,1222543058,7391304939999140940
+48f85054-d5c6-a6e7-a2f9-2f4277c6a9c8,82618269,10618750946706689002
+a8c945c7-7424-1714-35dc-fb0a62be4127,3825008462,18357535563753314946
+c7b87fb5-dd5e-ded4-0e3b-ab4349b31900,868447624,7332848138190533937
+75bd44f1-8f8d-831e-6bbb-fd738c8476a8,2160978267,7396321227911824299
+95bbf6e6-a7f0-99b8-7eac-423b645e36bb,2938054497,12849494362174466199
+b6412c5c-2e94-557a-f952-e31b66409d55,1239911539,7070780465973837786
+30e447f4-0948-4a61-ff32-1c7471d7a323,952032841,5096841597773592184
+8fd5fe15-d4e1-8865-3909-ff5dad41bc80,3426745140,8960177614268149420
+edbb84b1-517b-f7d9-c214-1435dfa5c81e,2510220386,18197492874030455612
+33043963-1922-d54d-da4d-9ecb0c97c36b,47411914,5736771642520227234
+0aa2ab0b-0111-9a9e-17e8-ca5e95bffee7,3500798455,3351156786442261715
+eba3755e-5aac-f5d1-4013-084f2db3bf8c,2384560065,11691233598072457582
+bfe826eb-8160-6d3c-c295-517831d4fe70,2720599797,17848955811017893319
+5ac65fc7-5c8e-f94a-4d0b-2a20148d7440,949350721,7380747691780679627
+ac905998-7c85-d0e2-de61-7d3008feae1f,485481292,7930466067798817137
+234cfd91-a583-bdfc-593f-5cc6bced0b68,4216975711,7831199550768587897
+024bcf66-4e52-fcda-0edf-10dd604386f8,2191683748,13105775188259466078
+e7392332-8657-1793-cde0-711b1fb1cd94,875866859,3530519455577757138
+24e096ab-bd8e-3984-bec2-4a7553e46a70,32124835,15713103918025579148
+da615376-b93f-f601-89ca-f18072e8da95,3822568929,6334880428675790995
+e8ff3579-02a0-8990-9950-ce3a0a57f55c,2196834383,12281164552251602922
+37ee3d5f-5906-768a-0d62-f4f583e1d87f,3897166602,5872235541254805646
+25283501-30d9-e574-58a5-e91eb272eb8b,2928816695,5203404107529071235
+e3eefbe2-725a-6c64-a003-532c9660a3ec,537481178,16304688124246964202
+c6a32797-a637-161e-0abe-732b0b29ab18,3988070147,12447835429706198303
+4140c4c8-00b6-ca3c-4561-d2b1852392c4,3084789724,5083040397189668587
+a333ac17-3b5b-7b1c-cf92-074b2b4c21c6,996031281,6739259895734993180
+172801bf-f113-9b1e-e883-60909b9f658f,1452466367,17666809996655922321
+219bb509-0b0e-0535-ee83-9f0c8cf74d06,3672285858,8229982449977800056
+ff11b5c3-597b-c042-5b82-47cb394ebe92,1460537716,5616195124388461777
+20d0416c-4b0d-1529-c126-e36c88bba3a6,2392520237,6854064696888563471
+a964b90d-1f09-0c3f-3dd0-0431d15e2169,2463564496,14111911435025188360
+78a7c02f-7b1c-9db0-cba2-6cfc3fc5cd31,3051527660,15987386686318255746
+a974441a-cfd8-d17e-4eb5-3d2729750703,2343734642,13752886035683677266
+e9c28881-fe44-18d7-2164-9f994a8663e1,1532065987,2897136860084851721
+4df8fe09-d9bd-ad05-340b-52b4d33c4cdb,657376049,11923447543515537840
+57011e25-a571-4b22-6a75-46cd10539d47,3557331165,1408107315894816567
+9c0f15ac-4052-7c17-276d-989f669f5b1a,3093889925,13463391365026766489
+2f3d72b5-44d1-aa04-8683-7252e2f1d841,3885274750,13298464165733737603
+661448e3-afa3-0870-ff15-53a4ce362738,2574028149,5726186257121110386
+abba1a4a-6d87-170e-c4e3-fe51293ca08d,415326459,6539938799042164795
+c2be1dbb-f5d8-e63c-c132-a0db6952f30a,2192525695,14207541114670698208
+96ac86a4-5423-a6ab-b9d4-a19b403bb727,669425899,9270518778426836085
+dff72c5b-ac51-60c4-4df2-825fe724ecbc,3776802403,2960231371186540620
+4191ab6d-a70e-2b1a-eab9-0858f9a91139,1118566377,9830822803688590933
+1f6ce105-7089-a638-5665-10704ce3811f,1067589832,2008822663335108651
+e5b70a4d-f52e-ca5c-5dde-29e1e68bfd49,107305391,15305385675450507556
+91eb41b0-93b7-e71f-0e79-9b3280b8fe8d,1685025812,14381693260191985805
+97857a57-1584-3a04-11b0-58349abc061d,881543096,18070184486804780181
+859b081a-dcc0-936a-c35f-cc905ba49edb,2745759657,818967027792497802
+a7e388aa-1d6e-fa1f-283d-5e1d8b87d754,3268190438,4475839389676344748
+c7de2f67-4923-1921-fcee-00eb6e41a63a,1224186815,9084199459004848890
+6e0e123f-d665-d134-a49c-71f47c2142e3,3849709630,2856612612419324167
+851dbea3-945f-ada6-3b3a-dbddbeed11dd,2449402914,4078011285980005616
+b3117e4a-d73b-2a90-d2c0-05e82aeada11,726886414,11169066478750603904
+e4088a41-96ee-c0e3-0491-e18162a67e93,3488923863,5264396762660830464
+021ad79f-cbab-29f4-c683-e1b2f6662b26,2235273725,16289343553320187335
+2b9df3a0-811c-6f3d-73a8-3ff473d0652e,206096808,6956312064432926664
+71d374c8-010c-1da4-9670-268e95a3f185,504204456,16786312419289612992
+5b695ade-ab21-34ba-a7e6-90f2213718b9,3162681413,10271610888505920434
+8aade86b-65a1-bbce-b10f-e830d17b6d2a,2873373053,6000396862017025447
+cfabfb2b-5bc1-4b2b-64da-b2a498782b22,3459385875,15661100954506505410
+31f9a83f-b936-57c2-36e9-251de4d92687,879743264,13398088682416870935
+ca4f6d5f-e72c-9a72-bcb5-b27706ecddfb,3894732833,8986311205464413996
+8d932920-94d5-14e2-b452-12a764be2680,260069407,84969349461810076
+daa97ea9-4be4-78f2-0e5f-132188bf83a5,1386060713,9300697366426261679
+26def0ce-0b6a-a15c-7a31-4c6c80f21fc3,201138367,1905587199897434141
+359946e7-9690-9542-a3b7-9862619b8309,2918967360,2463122837912481528
+b79c4719-2798-613e-2477-9b5cb125fc0e,3146766716,9198986576895499276
+28c45f9e-1b10-af69-a2b1-2c6d982ee48b,265809937,16547557571037335198
+f553bfde-8ccb-eb6a-17c8-9db200e76d93,3401930596,15070734772688486771
+8f8e6920-22de-67a8-f10f-73b6491d8258,1853666819,9040540192197476612
+0dee03c3-da81-f5c9-a369-d463de71f818,1646463043,16971548245679708243
+ae789148-e49e-5328-df71-f199e5df30e9,689169057,17364359620086380335
+fe456c17-882a-e04d-655b-59fd4676b78e,1002734957,8405833733728774803
+9adcad7a-f294-10cf-9298-cdea4a7d36ff,444299641,12340439536137704968
+f0e7c9e7-8f3b-3821-5f23-af30ea72a2de,2951634203,11314964498475644099
+9f2b92f2-1a10-1f25-88ba-529f8336e59f,4191807511,15359575559816920758
+9918f22b-397f-0ca6-652d-d815c497d5ee,1891271877,13037536248544760795
+38fc29e5-4a14-b85d-4a63-6efd1c6edfc4,4000659336,15035936533274955068
+15729f4d-a103-f177-d229-52573c48fb4e,3320992687,6988100789935172162
+4f961d39-9823-bee4-3baf-135f3ea5a65e,3028850056,13336607207178166971
+90af2452-7a92-5187-fde2-05948cb95675,2095356887,6677609551493802040
+b7a0b860-7457-7b20-c05f-d7d752665f2e,2256090589,9642991818459995338
+d172d64c-985a-eb97-3ce1-a9d3960451b4,3014503844,17642692681524975674
+575982de-ee83-dd8f-6a1d-6acd5401657c,1438244481,1817654497434665779
+2b144ebd-ce72-e875-7a65-f88d187db301,1939609797,13907215072666605720
+0be68edb-aba0-9a38-293c-362015a66079,3995039162,525433693971409902
+d8d540c6-3f8d-e7e9-89f5-6ab76e01233a,1817859348,5629311400814055737
+4e7b123e-2e96-2241-f8ac-795ec85a442e,857379649,8862427898982061379
+d9fecbc7-5dd4-950f-a08a-cfe55e797db6,133946582,1817132154801611260
+3d66fa72-29a1-5a7d-5fbe-b9ce0c55def7,3678578064,16081437761401218220
+ba9cc3dd-577b-0ac9-1b23-bc3c557c91c7,2982077368,3598404698943932755
+aa4e5182-f36a-d1e5-036b-c431831d8e81,470461650,8914315316328168033
+2f0f5337-99f1-5cba-60e2-694c101284e9,3061118992,973392546858575081
+f63590a0-dc8b-4a17-d32d-a3f042f213bd,3238165091,5497415183388713771
+e10236ea-706e-bb9a-27cf-eb483ff10383,2461289932,9687596094569644466
+33b4450c-b35e-7e1a-1548-9a4b72398b03,2218931940,14105413766174167349
+8e52b823-b595-3e80-e192-98028d44f962,682670354,3124960411663606366
+cb1c573a-2918-1101-c09c-097c44efc17a,4093876604,7978159174310806464
+ab7f8239-4c4a-3d32-b32c-cccf9cb40d40,163795068,8282839320828118524
+211f95e7-8403-e69e-5d48-3f0d1bc9f31b,1049631985,15606457165803630092
+517c52ac-9d9c-576c-282b-c0cd2d82b7e6,2922954280,5272444484490488409
+65040041-c0ae-1b94-3c97-4ffd4af7cbed,3170372529,16607630640514572003
+274c2893-8730-7c8a-cadb-c40df174e66f,2880316600,3545181514179928772
+a045d91c-9dbf-4aa2-60cf-e94803ec08b8,2509295774,14470460104854997265
+23df6e5e-432b-a69a-b3fa-79252743282a,2965248574,5743833922031221389
+b684c627-e6d3-d9c2-4c50-acbd01272b67,880305926,14921240197327280336
+f758469e-a731-cb0d-c3a4-bb0bd60afd1d,396857566,17426300433570595635
+c2e45b54-6f20-c42f-6c48-bdc62d31f4ef,204051159,5804265821356943264
+de24150d-f1a2-1707-5c6a-7b020494f9f7,785087140,6656682321856831530
+2e25b82d-ae8b-dd47-61b9-ab25d058fdbf,2627103851,11850764903040329252
+663293a3-e3c4-aa32-5d4e-1eb7488c237f,801639141,9715376509538713934
+df0cb747-70a9-3f38-dfab-5f1361f1eef8,1502191862,1025628403427457594
+42a21c27-1d6c-3388-7059-6ff7192e7fc8,1734933474,9800277578160394084
+ce02c5c9-0ccb-1ca3-f2e5-4719020cacbc,1489271565,17985597296328562134
+d75ccb05-3e59-b5dc-8242-e5c9c880aa97,3910227508,16308152446091378335
+2029a584-69a0-ce66-bae5-4da9ad716f0e,2338477618,724401365275214986
+6e51284b-c455-1a0a-7493-7f536d37ce12,2892679852,15576675241973215075
+f2e5cc66-72b9-11e0-7ae9-878a850d3cd0,1339597773,3280949871019476277
+18886a4a-b3aa-0142-340f-9d1709007a00,788188032,7264201496515818780
+6ca30d51-883e-ce97-83d5-5c30a169c19d,251377270,10794861532894907146
+34e49a93-5ceb-b389-a75e-c4c0866a1529,165074487,7097327566795770759
+e8066bc4-b4b1-5891-b322-c7241f78d274,2869835203,7706571322881984573
+5af9f2ca-877b-9e46-af36-a9a6a6e00f72,4238257896,2985684438918130251
+80025a05-276a-d9da-2743-0eeb1879af56,3943163476,1079289877293976630
+6a45f8e5-5ebb-4772-a814-a250e1d3b966,2371393923,7241707779889760534
+9460f494-138d-e323-823b-1d81595ce8d4,973386089,15712550970152998674
+d49592bc-570e-316d-fd3f-7c754847ef84,3131984848,5485550217444326090
+39ebcb13-4a8c-f090-a338-b53608a2c762,2945446458,542442842161360765
+6e45e372-367e-4711-4987-30a39723ec4d,2889278209,8045638794342825624
+fec795e3-da3c-960c-1e30-de406ac0df91,2697778023,10608373296031503998
+b552b344-8536-5da8-da7b-aa8447c868d0,4103969783,4077764413028777405
+53ccd4df-1f25-7db6-e2cb-17aa67261788,710482097,8586822049141954773
+b29ec110-a421-0b02-a7f7-d3257a288003,560231186,3514007360512249800
+11e37d3b-db55-739b-ddad-95e7f1463682,3111855119,18160624885779290433
+c0d55ffd-bfa7-8e80-8cc5-b21e5990b3b8,4278760529,7921290519750665248
+75c9be23-8ce5-9db8-a7f4-a6ee973a4ea7,3979399070,4694196985393113707
+055da427-73b8-46ef-fdbd-b887fe76e7d7,36019059,9838795794703632273
+53072f31-1042-1400-d5f5-8b41ed246657,3132326479,1176053912455845444
+25ae67f7-34c4-5c13-7cc2-943d5f09e4ab,644610158,1035504886455559514
+a8399030-fe84-2198-487a-1b5b3a929eb1,2582764116,775267030740442494
+6b58bb26-d7c0-b0e4-e513-fc21ecaa0134,3972194567,6369593407668149110
+4aa8784d-3249-bdba-7425-b3becd815c3b,3651820770,12576127302872149727
+cb81b860-df29-3f11-684c-9d7aea39f252,4209767056,15527619356546387854
+6ab81b0a-5adb-dfbb-0b16-18dc48d23c04,3786599467,12783553640255785001
+e27ced30-3718-8a37-9ebe-35cad1dad4dd,817395396,5281766001218203548
+c7610880-a295-3e11-f823-a83c351bbcd4,233309029,4748820161264608482
+3d680555-a063-9680-1009-77ba9b850bea,1983469690,4155604378465042365
+eb6d3dca-60ca-dd93-6098-e96f3bd15971,155146356,14331384044459811983
+36a0c2c3-bd1c-ba67-5788-4799fcf8e936,1883905610,13942169670572222764
+df6583a4-0182-0b16-7d12-9dddf3f62b14,194522774,11005118145543257493
+2c3814d9-8b84-2767-f4da-41f4592e59f3,4114049816,15436073272204150307
+ed378be1-bb7e-d48b-b094-c1ce8d0e3c7e,1741114426,15453424605239523048
+e6fb9963-6a6c-ddb5-f49e-f5ae4d69b5a4,707809945,8495537371775728771
+8fd3522b-007c-086d-a32b-d0ad126fd2f2,3999944784,532955978642716615
+f37d453c-230b-285b-ce67-27efe2cb4e5f,1139936031,10639310513425902726
+fad937f4-5fcc-46c2-282a-6917391e6e5e,1849573163,896914229197883190
+fbfd8e0e-ae95-3813-b105-42b5d075de32,506824054,15725800628512186478
+379e4af2-8054-be42-4515-08abe3c1ee62,2659224620,8616662578297932299
+9061cdf5-4be3-0555-b31f-7e775426ec9a,1300265682,11299127998408643367
+f5188744-e735-0c26-0bc6-33f6e474fb5a,452212204,5045588482811291107
+e13a047d-281b-3e51-a0c7-5894e08cb21b,448350490,1232400656512993010
+37f4e93a-292e-7373-2c8b-b1d508ccbfc4,2557708896,13570916636189465417
+f91bb878-8d77-121e-4275-632307e68cd0,3935153940,5040946851400278347
+a71690e0-1f01-d050-06db-6234cd4bec7c,2200474618,12757806129952404332
+a54ccf59-25ff-a164-19ca-e26c54fa9c26,4217932666,14187833039129641518
+92f63d4e-4500-471b-8cb4-7192c880a222,366436695,11858456929266437327
+014cd8c9-6fe3-ebe7-4330-753989e3507b,593154479,2117243917519806915
+3c6717cb-8d8a-f983-9d06-c264e184003e,3973600757,17566559696354866227
+fbb24e47-286d-8e7b-3665-c1a601754ebe,1245440432,8561811750844272590
+2ea9645e-4d7f-c94c-56bd-13563d6e7f8d,2665063119,2035424840129815959
+2664cb4c-16e2-3aca-d9e2-e1cc51f27a37,3207396339,3810539393802077223
+a992eb0d-d8bc-1137-d40d-3de27cd27137,3855136868,15904214766404466790
+2595aa50-4fcd-1d14-5289-1c0b991e9c67,616855339,576392907389042407
+45440bc3-9ba7-b39a-45b0-e4e7c9a3a8e9,3523973154,12116034045139944488
+765e0353-5a4d-f43a-31b1-d2e033742910,2224710928,17791821018328764396
+38cba0b9-8c4d-5293-5049-ecaa2df9873f,1488865900,3581492199888366449
+b3994dbb-ac7f-8eaa-ac62-9780600ad2ca,492952085,5804233607269773344
+47e1bcc3-4b38-16c8-3850-ed98bac93313,4220372686,1604542690242272455
+98a8aaaf-fb81-4a18-ef9b-d4638f0f5914,1776468190,7824799057529090704
+6691f295-2aad-5c25-4f56-4f6c6f1bde66,1954252054,2478839998649128528
+f1457453-6e02-110e-2212-9b79caf798e2,695860185,9732462973155532530
+ee988708-590f-f4cd-66c4-dc73069d9804,332416928,6458236407741385748
+7825099e-d53d-2af8-118e-4aeb51c48292,4074493658,9064748228049442342
+1721c1a8-9e0a-c016-ec72-e70a773de167,607921167,10945202528633466299
+d65a076e-e10c-005d-fcaf-2446abaeff9f,64087726,536636956057385335
+664646c7-84d9-bc4e-02cb-dbacdaa4e9a5,2973928505,4031926265748453322
+a0cd535a-3823-4305-75d8-89c7883f0f5b,3072878111,8202763448311110990
+8cb4770e-0a4d-b846-a971-9a655cbf231f,3433683277,13598516774693229965
+356c468a-8009-6d8b-30cd-772a33c4a04c,1829954385,7173581730504990921
+76a2c490-d8a5-341c-e019-bcad4633c157,2492898988,1226631203701233126
+4155fa30-f4ac-e82f-19ac-5d3bdbca88d1,142286925,14693088478097020600
+f2284cf7-7408-d9ba-7789-b6d059e1e53c,449388489,3637765404378455485
+9d390b77-b961-83be-7344-98f7bd8b2f6c,1466314195,10175650903942327834
+ad47b961-c2a7-55e8-4840-1b044ace2160,13776535,5594363107453751437
+dc790b64-40e6-98ca-7a7d-245eaf8a9172,955862139,15168398421228428905
+a27c8929-6fec-0f1d-0f3c-02135ca8deca,2702422661,2061231965860291485
+328be2a9-9d73-07e4-27f2-80dd32853a60,3777470463,17942873356264837544
+c1c162ab-b9a8-57cd-b9f6-b4ae1a12e7af,3983327071,11239288805176950864
+3060772b-e306-5b7c-ba1a-0e2f0e4fa08c,303810431,17418578670850084373
+5f576241-ebb7-3f44-bf3b-6d6f71d5506d,2018249221,2201207353908681086
+d3594ddc-88b0-9aa9-575c-3f972a32eaee,3353540516,8766577367523813322
+1c8dbbb4-6a80-b94e-66ee-202d4d658fd6,1526560599,18221456030282605439
+b64f9aca-3b52-861f-7db5-d322f959cb34,317674002,3538946589668977236
+0a487b39-43b5-facc-199d-8e20f2089bae,265791564,3554698003703620911
+d10981e6-dc54-1c66-ee67-cafb08cff02d,4004410791,12025125546872981380
+a77254e6-4d78-1ad7-0116-4a97228a1076,3145460224,3258361589354352415
+d13be32d-de04-daba-03ff-83c6f09fbc7c,404858471,384367294818020412
+670d90c5-0cb5-407d-1ea1-f27b91045b89,37387785,2005366146628328009
+ae3476f6-6a42-21e5-67b5-74d75024f6dd,1690458322,13777431453346455536
+551a6cf7-4808-d8d0-e991-313cacb91dc1,2618035670,13329610860985872857
+599c8bf8-6909-69da-705c-e5cebd07177c,2150767348,9788441940675480252
+eed24e19-0497-f5df-1caa-28707c0ae19a,570405867,13449554873208689627
+f92743ba-6bfb-8243-8559-23f569aad608,176253390,14260271117827136186
+832c5b8c-4d9e-7a13-4441-3b9b1bda8411,2013785124,11169962920215489352
+99ca4b78-9b6c-389e-311c-863e03f3550e,1236670086,14775434200354406714
+1f4b095d-4f7e-9634-b0dc-ab8130d16ef2,2881973812,16424231652706753646
+10c1e117-d889-dbec-5258-357a2b33d54c,1970208464,9081298357349200363
+aea13ec5-a64a-4faf-bdf3-c353d732c099,2749040620,14659924744822168115
+2380398b-296d-c8ac-d1aa-9bfda3126b04,3874658263,16125598452165416973
+8ad52326-1a36-c2d4-1cd7-cd620e2bfb12,4023327378,17997169514173032146
+04ceb87c-279a-b0c5-7349-3e9abb7b72a8,726554971,1689900789166705424
+7a6913e1-9f36-eb05-536f-831af386fb71,2829144145,5213812461692047405
+3e968a59-4831-1a15-3ea3-a4881f8137b8,2612262740,18109745276010133118
+bf50a050-91b0-27fc-90fb-4c085ee09d99,3803975988,16136828946806993388
+99a7526e-fb3e-96e1-c6bd-65553b84fa59,2040178207,8040275647050898347
+53003853-5a90-6fa3-483b-34d9f349672e,900825589,2901083854422683220
+14e9fa82-d118-a2b1-b800-320d601245d8,2519578221,14868723623460121654
+258f6dcc-9d87-23a8-320b-78e5e64b84ac,3900081493,5360227533504557400
+ec21bdce-31fe-9714-3c26-29ce17c6fea0,3413097791,8931694971974501970
+68d42d84-02b5-3d27-2c3f-9a94952f1882,147035732,2614741504136145707
+58fb9f14-bde8-9984-83ad-e25b4cd38fa4,1705659656,17216127148962926259
+452f7ba0-c206-0364-5a59-5890de8d21be,333031125,4767330477901235973
+dbab8507-14d8-3a53-e87a-38c2cadf3fbe,112761636,10142440453674392278
+18209567-23ff-5934-f3a6-8b2d2b8266b2,230286554,13122486006434523462
+65d2fe71-f479-37c3-2fb0-553ec2e9ff59,2214293294,11371608476972122250
+38a60dfb-7fbc-49ae-6c25-08fd4974fca8,673487142,4152033417409428530
+9b679419-db69-4b6f-5f63-2208fee83db9,4139621226,830737450573484896
+782aa7da-0a0e-628c-f51d-7436658d3e0a,3303482669,11385715844596574986
+265d41a4-ff11-b697-ec2f-119c9ed782e4,3341040841,14082367998997538916
+303fbc5a-9653-952e-95bc-2d04b7ee1100,2630737781,17864431266626228794
+8bc6536a-efe1-5dd7-b0af-91bda4743a36,1798474259,4998803137555932106
+f73475f6-6fb2-a27a-3837-b3d5d43690dd,3855156052,12838450841537232657
+6a7ec21d-2f26-f276-4616-2b9f9a64b7ee,1765182988,2181251232002967265
+af301597-6ccf-0f91-5683-05cb76caa470,1979823342,7259704201494627668
+2e26befe-7588-f1af-1248-9c0eba40aaa0,3327469230,817744071893266600
+8a878c28-57f4-7695-cedc-0a35082e58cf,3047770194,3217601159478531987
+6b94c0ed-2dca-6e9b-091f-cb21cd5b5a31,144244054,15615862856266646919
+2702afc4-92d8-cdd0-72a2-d9a6948b47f7,455002602,5094255594748877219
+79408af7-0ac0-33a6-5436-cbaa75538aeb,1005637032,5523590719008020611
+6f46218c-434b-07fa-5ee4-fff364c2cba9,2159049523,10230231498471067692
+f0c7bf85-d9cd-1c04-90f2-0318976681a4,3832616466,15311015174235067872
+6c4efa96-1799-0bd3-f13f-aee8fa72a479,3418636203,11455151113680506514
+cc5772fb-c82d-9cfa-a325-e1e636450b48,2060128320,12483968771328972065
+fea4d564-26e8-e122-a975-eed88b244f67,3172415847,15417206881078089308
+271a7872-2950-8a80-d37c-2ae09f229579,4012892213,5548611949533266455
+31ce16c4-1602-5730-9820-254212a2ff63,1790327990,14280154802932300626
+a1fe6a15-037a-63f4-7279-e00067be84e9,1403528805,3760894407595179226
+20a0511a-e1e6-9bad-cc98-dd3d73b4adee,408510913,13472549619640416924
+685bf4ad-f013-4a8d-dc7e-86bd41cef172,4089473132,9028662029156696623
+ec365d79-a7d4-bac9-6bf1-23bf3a01acb1,3684674158,17608964452792901602
+8b3f3bb6-3621-6b84-95f7-ea9f437dda41,290888950,11744859753500112967
+d8906d6a-f989-5197-bcef-5e2b6b113283,3613054375,14576276027899837882
+f73e2d14-f4f1-92fb-a077-dab6160f5931,3080366511,14576131790752502970
+e1763a0a-f2e4-4396-4d86-2697e03f5b9b,947815182,8121995585085686966
+3ec087ad-5b64-1dfb-b06e-329ddcbcdce8,3281368494,15438917620501029901
+5a14dfdb-c745-b56d-c0fd-31a25ea96a27,324831886,1959568935813944450
+85d11bdd-ef80-fa37-e239-5e48a0763da0,2406083283,2258521131430501406
+7c5ada34-54d5-80b0-8770-df6869b43756,3399476767,12178251704133151911
+17a7e0c3-89eb-bd03-0530-1df26221f7be,2096918426,1759532438458817459
+591b8cd5-3a38-621c-13c4-650c65fc4079,2806024702,18123302850538186999
+d8928fba-bf9a-b49b-47f4-02d173c88aaa,2702846408,1137234145662639613
+acc327e4-0c30-4693-20b5-5820f585f9c1,1017773043,15856005582208156592
+d6c984f1-dcb2-ff11-32e7-2eb639dcdcbf,3757797131,15567564030087904577
+72f36ea8-472a-aae2-cff5-3b9cecf18ec8,1180835691,190813643592039199
+0df9a050-1e25-1c77-dfc6-e8ecf0eefd1c,3549902189,16057915823887034740
+deb25ec2-b2f0-1580-110b-8c3d41c70196,1236926001,6728647625348717031
+320d6b15-2508-e2d8-3c39-ea2098eed59f,1671114751,4243661029171052390
+ebc65f9a-be7e-e0aa-273e-ebc648f85e3a,4185369651,17664543710297463326
+eab7d81e-0492-3179-7082-03a6d32c8329,830148320,108346448410939645
+5cd1f6dd-edce-31cb-8509-0b4f04a50657,3177341378,9938733881354341926
+d685e47d-3a81-d6fd-aab2-b275eaab3781,24441743,12286954138708370207
+9215a2da-b3a9-3cc1-cd29-50ea92c88d1d,1050627661,11588482273423186179
+f5ab226a-a11b-a984-5a31-a60c121d71be,2809574535,10726267488111336737
+41e5e9da-dac2-b71d-680d-ae0e5107a560,1114016523,4904690065026589504
+552f6233-bf0b-7ce9-f66f-800f657f7697,3903429299,1834326098035498407
+a641b407-9903-fd76-46c0-c6b02143df0b,3904185387,12314554232111111522
+dc943722-e570-003e-087e-2b07b8482ac6,656394563,12890734956444493271
+8d8a0f9b-59e6-d04c-e026-57e4df6a09ca,2335010878,11496070100518980294
+9bda6c9c-2c9b-46f7-59e4-54a1acf14250,3059778306,16134954212634980078
+77f72e92-bb16-e661-32ba-ab04cc7a32f3,654876176,5415147581501100247
+ddf85083-9599-61c9-75ea-bba6ea0275db,2975881973,14896920385106709025
+4ae5253b-c477-b684-e89e-9d42debbb4f8,2413074978,2678902157986220372
+1630fe77-df56-d035-84e6-b978acaa5c48,1341900801,8171203106027664166
+8348ef36-56bc-6be7-1615-5585e86f54e4,4237841806,9578409396541662562
+3ca85194-442b-888c-94d6-adb6c889fda4,1174423210,4945986658631635184
+3e6bca58-8280-2258-74a8-a72a80694c3b,1163738031,8529414087069396725
+d29f8a34-8ec4-545a-d96a-aacdbfd1fc88,1830778627,5823908564031615201
+9b4c343b-2b19-15f2-ed08-914cc8c2a702,2704805138,5454684178199241062
+d5716f1f-1b94-9811-0a2d-4c69559e637c,4279513974,10752673895503978501
+fdcac7e3-86be-5a8d-47d3-2b21ef9d5d58,2253379182,11188227513768128819
+8c99cf04-1696-a07c-3e4e-e6e37c87ea22,1596192894,5848064522874215393
+a5e6932b-0364-0742-3b2e-62e89b2d0118,2722106501,5056907383921498352
+1293c90e-7683-740c-11f4-e0df657b1c7c,3101590276,13427063254122257089
+1014562a-b763-5d24-48ba-d7cf0d0b9840,3193968998,10406201255033092479
+d10b38aa-79fc-f6e7-de69-e83ef2adbade,246589444,7449033103561693113
+03996dc1-85a1-5564-49e7-2aad5fbc95e8,2237764811,13921986999550970502
+c03d35df-2aad-5226-e90d-7432fe17e610,484383238,10144057853655355834
+4e7273fd-8d25-ebd4-7afe-cb0733b44303,573561173,8943378177629154801
+1168bd3b-f470-5854-2555-5a044f266f96,1574550364,2517113406181193629
+ae2d7421-ad49-f62e-3b0e-5c49d270c011,4264234853,7890826806736257794
+31e3fdc5-af97-1e6d-67d0-678c0ded4a76,1922822147,16318058764884062727
+977cab43-134d-67f4-2e83-47d0c9b034cb,1279395571,15316286361722320261
+e8270775-3d1a-d935-9ab0-753d96bf4ae1,3597118224,1074951802844521146
+77337571-f664-3ae1-7992-0156a13572ab,1267093732,5179203844183553666
+7db5d37b-1106-d8da-2118-0784ded23393,512324818,317177576600144266
+006d718f-1b6f-3742-4ac2-c809dc1454e6,1213968795,17956653680756621410
+6d71bb12-3af0-5694-3f38-ae6e2c0df919,4038997735,7391255275860691156
+10006052-0fd0-b9e8-c093-5bf1ed95d812,1330089922,7721470247521227749
+b5d93035-adc9-1385-f8ee-c8506706df4c,1040412100,6808301788852363191
+164e842b-faab-a02c-f412-70e9c19ecf80,344691745,6692755787981120536
+b1ca7b08-335d-85b7-eb15-565b35371120,2114456977,17785348485087941532
+31fd08e8-c371-dc51-32cc-e9e562b619d3,3271718194,9022798449487412684
+42e5495a-1d73-852b-854b-322a114073f9,1983958365,3920612890053218479
+579c24cd-11c6-5bce-3446-fbc897d234d7,3505296943,8196485353120507261
+3ea7e8d4-04a8-dee2-961a-7602e5b285c1,1885570584,12728953125846538372
+ee9cc367-00e5-f3f8-6537-87a32999e030,1456357059,15774961179381709016
+516cdef5-4209-2fb7-e298-bf8f9db06ae5,1118002982,16135573341139181846
+83e68393-4beb-3071-ce8c-9d1512d57ffc,720499295,872705523138482696
+61a6e7cf-75c9-a755-0df3-2c5db2418bee,1994046710,10151081944462242004
+ced41d1a-b9cd-f71f-9ce8-87e8e3f44254,3137927632,14557696926006747340
+5329b3fc-f60b-8381-b187-5547fa7102d4,3753220240,11881172321071961012
+eb2bff2e-daef-59f2-f22d-d0756e652b17,3761407847,11934120362987470867
+f3a73198-f7e8-962e-749b-99675d31f710,865521511,13191821026686782819
+56cb069d-48fe-d98a-73dc-2a5cb74cade9,2855412941,53273295703311842
+74fc5a80-d704-69ab-80e7-18bab225cc4f,3843451671,8580210927214682794
+5d5fa02b-e937-2006-024b-3b82135fb63a,3250291393,3056698133766017675
+953392cf-046e-27ab-975d-ae1d75582947,246371168,10459008233016995818
+9977c1f5-5362-167a-8b4e-bcdcda6867f3,1347870231,8731144657087272115
+7a414a2c-a13c-5de2-1a58-a13bf1f57c3b,3484474716,14466307833866906621
+1ddaaf70-5a69-21f3-2758-af4511e162d9,1494698630,13664929532986194993
+445cd602-6ed0-cdfb-c227-5e8cc2f231e8,244404295,17746579869542833414
+bc1fb091-8695-fdd3-2265-596ee1473987,2145083282,2844635900411880572
+b83fa66e-c785-55bc-28f0-dcec7c3332e5,1441077025,9515459800667452760
+cdc6ba3a-a97a-c094-e480-230a9c2c6996,223693903,5990247785467175641
+18373a09-4376-d65d-0936-d4dd04705164,91708219,12207116152573596830
+bf40d73a-bc63-0cb5-1ad1-b28689a755d1,3844436296,12078270342766400628
+c99df144-9def-bfeb-366e-495557baf325,1966926626,3675560551644247246
+ba7f8991-1bc3-e954-aab7-ccb97602a0bd,3954926875,6848734405840373826
+9a61ecf2-f6c6-0260-7841-eeca85647fd1,277303316,8313598472345244309
+afd7b6b6-4148-1716-f56e-9956105867f0,83915864,7665800852217382991
+868e3751-56e3-cd7d-372a-1ded71672c13,2485450431,12325829661824513140
+b538b033-ff5b-449d-a5d3-218c11c7425b,1698822842,1076271454831902441
+7c218a46-5cc5-6a65-9469-e6ae90e08140,463584774,2905877693428234099
+780f6ddd-08ea-a670-ea7c-e4429378c09f,3569282422,12835304829486619035
+381c05ec-edc8-7abc-65f5-dd907775bdab,2983025974,10651153429448134934
+28af49a7-eeae-84a8-ff57-be8cbbd0878b,12009365,4895466657794532829
+76cbd5e3-e48c-6fa9-746c-bfbb85cbda85,2710228040,12144343273896224797
+505c3d4a-590b-a639-15cd-21db585506c6,1426393565,15543307878781148852
+26f2b831-1aa9-19e3-6923-cb49f55ebd7c,1378943359,2001504552020230933
+1d9b9639-bdff-7c12-18a2-30f96e929467,3650491264,14162146340086516201
+85f8eaa7-a3e5-d07b-7348-5fb9c5717cee,2520720165,5273601706164301993
+de27f0bb-2f34-6edc-fb76-aebde6b89742,1406263841,17608071139623130347
+c82c7aa2-d6c6-3a18-7b62-418750f751e5,3565762550,2475743654071342661
+0411b958-4d4b-6f8f-2900-11d4c0581f23,3701686545,1702010621378060740
+11cefa32-c465-0fdf-b9d0-c9a7d084bc9c,1055977003,5296856572478649145
+036eb5af-0b7c-2a3f-391f-9cab3f24a479,494037152,9246962680376523585
+5d25d047-ed98-4d01-77d6-afec0e12caea,3067989785,10054389097033850842
+7dc31e97-b479-06d6-50d6-51746ee02653,1969801219,6861098558507060086
+7f711b99-d0f1-332f-28b0-d583e1e28c50,3055271070,9402779699934964616
+ce76d926-3912-95c9-222f-02f0483b4791,4005241148,13309200619951637753
+483dd9de-b8fe-af16-f40d-66043217cf48,2041704009,14545400360480635897
+cb4a7d20-0bcb-fe1b-c33e-503ef2c6c840,783481589,13962027711709612996
+086a8a86-305c-a43a-3186-5f26a53708d6,1450189324,3020415475984378978
+3483ae69-1442-280a-8715-899df37208b1,2530482169,1000497433881613414
+59ae5827-5244-5a00-4d49-9942fb334622,1494533914,1351960118648638725
+1305ff2f-7140-b4e5-ea97-efa0b4a66e58,1225298292,1226250580848268597
+42c0da75-2898-c9fa-2bd8-d5886073db38,511325715,2481370435049689770
+b4a63803-17a7-f076-aa26-a2a8d3c4fd8f,2788412089,3472552506057396568
+e79cb3ea-d655-08b1-a1b0-dc913f33fd79,3239481061,6097231167690602772
+2eaa7409-5283-58ff-995b-3295d46dc9c6,1420597733,7452896301724846903
+fa04c618-516b-06dc-ffe4-7ac16ea90486,2169493758,13984439597663580601
+0aaf38e1-0b13-c03b-2772-0ab51abd08c5,4240035247,11986992879637126718
+02ddbb2c-25b1-b43e-17b3-baee767434db,1548317363,5370039004356452014
+723251e9-31c3-8661-52d6-dcd47e3adeb6,531872117,12301545961968543461
+422de843-ebd1-555c-27e0-70310c1bec8e,332499717,17976953032015888424
+7a7d1a20-33d0-4e8c-d078-8baa6539b161,540069052,15959837292751708404
+725c0fc8-75cc-a929-b50a-97f2ee47d22b,213900728,11953097907120292681
+7c884117-c416-4306-649a-c9ee5fd2a2eb,933601314,9782249090678779869
+4ac5e7c3-7138-54f2-5cd3-9cd5a490c71b,521584783,5896193968208587609
+bed26f3d-f42d-4a86-2888-4bfa102036ed,3999797441,2154837725443040602
+0ee01864-f0de-91cb-dd01-6615db9f8616,1128359007,2552411702463586013
+a1fd36d3-0596-7266-782c-13ba770fcb84,3589955098,16984669723727573749
+762908f1-da23-588c-9db8-dddd7eefe487,156903972,2661825270743688794
+d5a54a66-213a-b290-7867-e0fd56f60155,2502288598,7575429441904966073
+0a460fba-978b-edeb-2673-711635e230f4,3500904961,14735859662976752323
+cfd8079f-c94b-3396-3e03-e7beb49a0410,1746155778,870100209414128713
+a30e2a7c-4472-429e-8085-30639a028fa6,2283469984,7514731529347862898
+d137de14-bdfa-0eb7-6aae-88bd5384b32c,1400732367,8234766202627619492
+c1729efa-2546-4da0-28b6-719d066acb93,2079615308,13650999966225427064
+de057eba-65ef-008e-c619-3d028be0f788,365994875,1759087712409209193
+2d451591-6eb0-30fb-2a0b-ab5259dc727b,2656212668,13207174422169307439
+423477ee-7701-542f-fe33-4f7c22e5a804,2053592166,5418389386447644891
+860fd6ad-badc-aaf9-dc5f-f4f464ad52cd,911463234,5235010146560048474
+80baaccc-43ed-a631-1d93-ed425bb6355b,992801182,2248554463810980450
+139c945b-cfb7-ae1d-617f-e7f79b41cd4f,3452199781,10689453916732020108
+d9b335c0-ba24-c00a-135d-051502a09a6d,3598853742,6389825357191548311
+a0a7a5da-0396-8e06-1b24-44f52739427c,3583771824,14423466110203252791
+a33576e5-88cb-3992-f744-fd4db96b5f09,2913593342,12149560349919993416
+9c6335d6-e6ee-2767-909e-47ea68e1f030,3320201307,17891721442933452127
+7322e388-356a-f61c-605f-b004847bda45,1090507092,8707071396296325112
+949bd175-fa55-b741-61bd-cbe1c1c05e9f,2565269810,10875935011609931510
+b7f3f9ef-9ea0-6c4b-13a1-f33a062d4374,4117051505,2453277720729825836
+4b7351b2-4c38-f8a7-5785-6318ca7b07b5,2745405657,6233896280851516014
+b2399c8e-83fe-ac08-7a09-fe2823ea2ae8,1904521688,14358918210384661697
+7c847e16-6492-6d9a-8059-ee7d788255af,3301393926,10195414907815189491
+531dd4fe-c4a5-07d7-ddc0-5da7b4afbe11,1950311126,3011198284119976713
+ba4414d1-edce-8fbb-254e-4056dc264c78,1667125116,4622170179982213765
+a9e5d5b1-dbab-63c8-94a8-591f1f145da7,3327264600,15052974654022080937
+35e4835b-3de4-5c0d-12d6-4d66594e074d,3680395402,16779303404014857093
+a12ef91e-98b0-a958-545e-4b7a870e3d27,2459100316,9791283974633687145
+dede6853-1aa1-2b9b-bea2-d6b9a4dc61f8,3251193177,14931025471924221844
+7fb5c2e5-6347-9e2f-a470-4292d61f8604,930549164,13390967228485667616
+456cf97d-5fc3-4c01-0fa0-f26d1fcc2e6f,96887723,14674542637545911141
+b287a8d2-39af-633a-208e-9dcb2f30591a,993103778,6138749628828773137
+284f7b30-fb14-82f8-22ab-02d2c88fda90,3692491370,7039313556707658209
+d08e243a-f65b-16e2-668a-f2c72395bafc,1951869273,13492182607974574391
+55f63ffb-9c90-589c-dbb4-80f7307b28c4,4138605118,14036628178685121804
+616e380c-6d8b-1659-564b-75922825c6b9,584386417,7406660564505911398
+bae5dc01-239d-98d1-4526-87acd552ed28,4146414181,707270771724137693
+82dd8a9f-2a27-9cbc-b47f-d5d14ed54875,911009210,13234670402078602394
+695d0f42-7073-76a4-01ee-0db25135670a,2324813271,9524526757614911385
+271d9877-50e8-4a8b-b138-6e78bec4937f,391328859,10310108004057019463
+9b381370-29cd-fb68-e92d-33a6e6a38c1f,716723905,18003298437587820178
+769631fe-ec7a-69c7-d233-a6cb55ebc525,3515209971,8625429501172141038
+5c5cc5a0-fb9c-5606-618b-c359a5529338,4024554959,868668043051354569
+55a963a1-fae1-14e4-5cee-69176fe2bf46,1302654771,6547513935235861999
+d77a46d2-87b6-2c3b-0622-e0325a4ba9c8,1962856064,18351972291533326877
+52a0c65d-9d4a-7130-ade3-e4f4e3891a4b,737729106,5044119804937558617
+f2be444d-4a5f-0996-608b-1ac427748d4b,230422330,9798094359580533180
+ce29f523-e6a4-90c8-f90c-4d5cda94fdba,1837258327,6050038411044577810
+82814cc0-f337-30e8-1c6a-85df32b92c89,2822292437,16318714890186096196
+0338f7ce-5511-6af9-e41c-11b0f3f318f3,3362928138,17555865706484968741
+ac61747d-eb7d-553a-23c1-5637d0f6ae16,2709830444,13455161474488533666
+4a19783f-d4ae-8d67-e9c7-1102e7913c2e,282716842,16104942777077716582
+1f23f398-6187-1c60-9abd-ce9a558c0399,504080827,7096068205960129076
+b079bc2f-d351-ed1e-62e7-133766fde126,1957453976,4577326938821648243
+ff7a4c80-4911-1fb4-5806-cb1928f1f6d2,967671406,1995874495480042957
+ba6eec58-13e7-3ea2-15c1-c62776fdd265,1595795233,17065867515341637908
+b4c35d1f-b35c-0415-aca0-bfff48561fdb,1074517164,16835964576026973529
+06080a71-54ee-3c37-27aa-8da8ce6f2840,3274908089,10031546587089018909
+26472c3f-5695-dbe0-f32e-f2f02f1f35f8,835641328,1940111097005623506
+b7ecc1fa-2b25-c0ca-0d16-118470d49b72,3532496589,1062137894439650310
+16de0c3a-94f1-7ef2-8fb6-fb996498200a,3385620839,16334763664185477248
+a8f620cb-b4ee-0dba-1964-16c851e1c50c,680951247,8187813238746737260
+3b53bf98-de30-8308-9e1f-bac97c009865,1348519236,1350170990601139412
+0ea6a482-f518-e40c-79fb-76d84a0d52a6,2778296092,10678467090076133041
+8a4d6891-8fcf-bc9d-8bea-fdb433b32b32,1947310613,13117446317060626366
+f8c16870-b435-7929-1d50-7aa0e7c40ce7,858898324,17515936525912667383
+c8d23c4e-ea41-8b9c-d293-09f61736703e,216221178,13483402151687744219
+c0792b52-077e-7ead-12ad-5bea7ff96b81,3822072128,14305185082087691046
+443052ae-1b30-ab26-8243-f76c359d52f1,3812252827,240450374155339982
+66b56214-8ad8-2155-b299-b51b623b0208,3082341050,9910296523120401740
+2ee6aa4d-d0e9-4632-56d8-8e18054348a2,361779399,17992254228126417841
+fc750b1f-7fd4-92cc-3fd9-f783a9d95f68,152660255,5788882124854375189
+02681331-58db-f140-21e8-74bc0f2abed1,1167499705,9735109323152398265
+12c84b3f-dcd0-3ff5-e582-47ef7d4b3a59,2827639038,11736679632988238023
+6bac5e6f-1f78-203a-3c67-ce95615aca99,538572386,13495144855574330460
+01531304-2e04-ca96-37ed-ea91d8223c47,3230823532,6742916813653680407
+f9a4f298-2541-7ec9-a0c3-f2baca13fe28,2118509065,3935989211497138128
+59f3e961-478d-d204-83d3-cbae014a5822,923653473,11547854006047410137
+2cfed110-1bba-3c8e-d2ed-b7427375f69c,1617153939,13673649367715297751
+84b69b27-fda9-9022-5b43-2ae054ded6f5,262890594,7793697458956140973
+53860218-11fc-b769-c930-1d7fc616d20d,2319733270,1109740305401127858
+afee73c6-5895-cea0-46ad-e6880d843571,2441004318,2930462085577313222
+d8bb9702-c3b9-a878-903e-90a7a8575c28,441894569,4911044448574681293
+ca96f255-d4e8-2068-10a1-cc3f60342e93,1089952813,15473804888116345898
+546e51b4-a9d4-87b3-e942-403c10ef2fce,2832826136,7387143514716215774
+73ad3d34-ce25-d289-787a-8f661b3f4b0d,1574819682,2650040490358339952
+f15bc76f-c891-10ef-1a2f-cb8313a4390b,2582835680,3349084092477774084
+d3f16326-2711-c0c4-79e2-83dc1a9d63af,609618405,6031376525720033777
+2e66d732-7c9b-1a16-0643-2405cf79e388,3518304071,13421533366758507098
+9669e20a-71b4-d0f5-8ed6-15ec497a4eaa,953699922,10965055850983462128
+15fca4c5-6b60-fa3c-90f5-d3a6267e1614,3534081122,5949942170857060608
+9e62422a-e08d-1fd9-d64e-70b276bfffc9,221136362,745945766496039970
+b0b06f69-3e2c-5c3f-55ed-bc70158188c6,1931521849,4370896797331289950
+1d8d3416-7e20-d416-3704-ba449c74399f,355959850,199922299060590582
+1bda94a5-6665-7f92-7cee-dbe4116b71fa,2434793623,2503102427068752727
+db4fcef3-fe5a-ef29-da52-e17bf30bc8e5,723675308,13979408987793117259
+fe605767-9dba-83ca-4cc4-bae5a4cd220e,4038804386,17744872891581200915
+cc0bb677-079c-4d06-a795-3de2aaeb1a73,61624642,11418685818766422899
+0d49b9d1-bebe-9ef7-3c46-8c22a4acdd7d,3532357906,13527926980277980717
+f136908d-ef0d-13e5-6860-d88a04ab0017,2424912476,3533475231529469021
+61b4d2b5-b4e0-c800-c196-993cafb0dec9,381352296,13602779742925059733
+d90bb887-674d-e211-a212-940769420d0d,2048641588,84206829613621632
+80b19169-7380-dcd5-5550-b5faecd5f6d7,954548585,8938965357446792273
+4b874301-0149-bc03-4407-d2c7567d614d,467882189,17269812089947524806
+9d9a6ee9-b045-e0bc-193a-b4df16df8911,124998534,11132408153443036040
+9df08878-c588-9bd9-9cb3-a756b1f537b3,3233400331,1387147363468247519
+cb205d0f-752e-afde-4301-13edfbac3435,3051241512,10553986956760044313
+6f2bc93f-f600-9552-3f56-5606e44b76ba,2709423027,15996255828702626544
+ef5458d2-e6c2-94f8-5fea-eb136b1275dc,1532358485,12652230902912149211
+22044219-c798-5a61-405a-460b6b5f2a74,3678020288,12872936084482653820
+80460bea-cf82-4a46-7215-a9c59a1362f3,1223424448,14992619815278773573
+fd799147-9157-2bf4-c9d5-9e37972d9d4f,994151865,13633641113749495308
+a9da5af1-6550-e220-4d26-c4db0893edf7,2334706729,13582844636804115164
+ddffa500-932c-1c1f-d843-bf6dbd41a8cb,2655708868,14359830778684287624
+af5be0aa-4745-1031-f571-c188f32e1635,317344343,2719673512534889772
+221534e0-0384-73ed-5dc6-8d28f4deec7c,2461907960,13062464921795840708
+333452a2-ba2a-26c9-1a00-1bf94db3f6e3,2576007390,16101084116856724160
+6931aa18-8676-cc73-bff1-e2ea2301280a,3163864326,2969906135736134683
+b3fb444a-c218-72a0-3b5d-df7461a68af4,3721498815,9128558987572707385
+7e3fed74-12b7-0f7a-1f26-9baa822dd0b5,3609286405,78898354329344295
+5dc755f4-a0eb-eaa5-851d-ec34e61e3e6a,1304431344,13790273804297323646
+09687dc9-fbff-01bc-79f2-4f69e2894c77,31489989,14189118287982781230
+5030a9de-5b1f-9355-c544-c36ee006d1cf,3105828810,17382185601787741078
+316f5584-51d3-ec46-d5b3-9aa7de8567a1,1165569936,8969209446219673982
+9cef24cc-015b-e6a8-674a-fe9184eb7325,3258732773,317099851135606246
+0baa097c-aef8-dad6-0b20-15d5b78f6f24,2928851921,10642784025343081443
+8a6a54aa-ec32-ef88-ebf3-88185d256d91,2790187778,2651580664151381374
+f2fe1bea-f3f6-a361-9480-eaf6280f6a70,2944111270,3629214657100146867
+2e1dcb9c-ce85-c917-584d-c117ef2b7459,3894246963,2823089743606928018
+6d3e3666-48c0-33fe-8d20-b32bacb4746e,2098161681,16807904967923853885
+b943d769-39c0-39f8-a35e-e6e40e250a26,3421631806,13140789880187654099
+3d3c17aa-1b61-a928-b9d6-8de8302eb7cc,3652903241,6850082714026221713
+de48f1b5-ad31-01e1-c4a4-8c4f0dff2c17,1298256815,11707172961205889916
+f8a0d0f1-8368-2c6f-dc90-e6f037ac7be0,2252488721,10045177532918478857
+1f42ef43-c72b-44d7-9a13-62b0375c75c2,4047524317,9349824414171768924
+6d12f6dd-c908-717c-0303-54b3b5ad3932,2196121821,5323920077999638573
+4f524d0f-5528-d6e0-e21c-a8398a342d66,591050610,592995735929329191
+b4922a8d-4e88-c500-13fe-049df20fda61,2998584627,1552745549645935424
+1df02f35-ef76-aa9c-9a13-8d5a7ec87abf,2213009638,4288266630873953526
+1e2e0e8c-813f-13d0-63b7-6970dc665b44,2576711790,4896100325450180163
+2d0bd8e7-d144-d8d9-9859-82cdb7fbe574,1386596271,2401761655540137375
+70174f25-cdc1-c629-285a-4297393525a1,1920018647,10915232787733014848
+7fc005db-4a25-9f8d-fcab-91dc93af50f4,2574991525,7225856420040716136
+145f1ca9-58c4-2429-545b-9db46ec04a9f,3268786695,11952812026662201185
+bcc5b094-cfb1-0029-6eda-f2a22d0b857e,3780792723,17089072037835349796
+dee55bcd-40b4-7a09-ac87-733f9c3b0a47,3398243013,9560491550817413331
+2b261d1a-3290-cf38-66bb-295ce86b6faf,2031300194,6998135898826598832
+fdae3f81-d50a-c1e6-2d02-b95f2a3e1278,2158600952,6680037710647373252
+934206de-af2a-d5e6-bfee-96a28324a176,203890791,506862852296592356
+466f7980-6526-904c-9aa0-ffe50f73a2f3,2574070598,6888810869593722308
+e7bc4056-00ef-6c79-c7e0-2190ce547dee,437592276,636820172314760592
+def7ac6f-caf4-54ee-b235-1841a529f9af,4062190758,5234979274809330753
+d6c440cd-6f0e-e61f-8940-b2d951dfdbe8,413962147,7320468742200809505
+d83c7dbc-b980-ea7a-f66c-1dfc2bad2f38,1145810364,11294435561979142033
+a11ce713-0287-d641-976f-c815e16f4158,2404445717,16636572050167459121
+1cd6d9f3-95a1-3eef-e957-67187741be3a,3743873598,13080329823124970587
+c6fc69af-1614-50e9-4acc-29362e9b4ceb,2190717328,16007623586561966067
+edd9407c-0aec-62f4-3d8e-62708a87065d,2721211796,7591054974138262184
+5386e286-522e-52f8-c332-dcfec7c2309d,2925865722,4109853508091256449
+4382d04b-b5e3-e493-36b4-c851bfd6a44a,3407020962,12133970831362173105
+8d8e4fbe-ed73-8bc7-28ac-40d1bfa01d50,1252689692,485697599253089304
+087a500c-2ac4-af86-4d28-0f9e2ca04dec,1594750815,14805812492037968102
+b486c9e3-a6cc-54a8-0d73-7a45d4ec4fb8,1768111099,8892108792080430245
+5085abdb-49d9-4326-43a5-6b4eea187742,824122223,17714961025701506418
+a92a5102-c232-78e7-0639-5c611fe969e4,1870954961,8538826157543244069
+d3e54a35-1cba-3922-cce1-aa603d8abe81,546995762,15939223651490387742
+bab713bf-ce35-2a26-9bc9-83ecb0c9560c,2220265255,3332502502596892337
+91744733-4688-1174-f902-65016489d79b,2833860263,5824734954020721469
+50dbfbf9-b208-792e-8416-79980cf09806,4132528074,17758964559558620943
+fa75c320-dbc8-e039-efb7-54e390228416,3898496695,16037809667647091341
+e340a26e-37c9-cd1d-5cbf-967557e9eb17,3236199916,8418722479267476757
+5cfd772a-de8a-36d6-d501-7042232a4900,1082094900,9739480397247559937
+d55e60f5-afdb-3346-2c90-b1b4e5d941b3,2092153350,7976902279180938210
+d0a21503-b0e2-2220-50ed-4ca679309ec7,2507318559,16029027460523743339
+20df5721-cf49-035d-2544-911d32c9113a,3086965457,7137429789989096492
+104ece96-c909-90eb-6978-3a23c0a4b63d,3882525668,14153827074223877919
+a7dbeef5-f32a-8ac1-445e-76d3564064fd,2629337344,18171139180094582729
+37d0339d-51b3-6c56-c2b1-1fd6f5765a26,1140993770,2432464172707944278
+1a509f24-acf2-56eb-f539-b775943674f9,1974471081,3598019087121390101
+26b07ee9-3367-e05e-8ba1-18b7cfb23f75,3501213648,4423264392886495273
+8159558b-258d-6389-c3ae-24362f73fa61,1166147556,16509229554845083290
+3634b926-027c-0e9c-44b7-086355948bcf,711713212,9350831459483250198
+4736222d-d40f-fc96-a6f4-9e15f8eb1778,2336816582,2090299136617931992
+0a6dbff9-8d64-3da2-88f0-ecc23e9bf397,2150095910,10777963714106833715
+64f6ae46-f189-ff89-9ecd-30d31a0b680d,2813336054,10555851845698157409
+e717efc6-f678-f5d5-5228-8a3a71903953,4202199155,14277704538413420599
+52fa3efe-3069-a714-aabf-4f451823e700,2707228941,15293525847365589980
+a6fe20cf-8ae5-c341-3a6c-73c6e43ca6b6,4092980362,3935847076832963492
+23372c60-db0c-1afa-d22c-ec7eecf514ae,255208589,6570727718998582997
+31c096e6-54e0-25ca-2c41-1f41f124f163,3912142022,8562422772422836239
+e37cc983-b3e7-8da6-89ea-127e688ecd68,2826377635,2497966916191583186
+2a74a358-1f6f-687d-e3fb-4b526d1fd060,89468767,14778309533776386002
+be27c885-bad2-022e-ad1b-3e42e2e526cf,3146394868,13609179160653575514
+4a84db16-3a39-aaf4-9da5-7787c1e0fbaf,1936977498,13037365921863486720
+d538826f-736e-3f11-5ec6-bbfb3d223f0a,834814290,6167116482623499347
+eef95e7f-a231-4bb3-ba43-2075c6515d5b,2810656406,14834531303691732837
+b87eab84-5f80-8e72-5cdf-6dc17126fd23,2003758358,6103098626567199606
+7ec64db0-a7b5-b665-6ec4-dfe6e99cf984,1337867095,1494728975161116644
+3ee51698-17a4-386b-37b0-e18f3d96280e,1534682623,9434090024528755889
+12319bd4-4206-8e0c-b3ec-d8e29d764c6e,3556342213,8591302721161037804
+c6a803cc-0f25-cf38-7eaa-17b6a90eaab8,1006707211,5776805883958124402
+9ac5d197-165d-6f8e-e7e1-6cf7f12befcc,2453403649,12826021309719383642
+47ffcccb-3f87-b29d-b88f-6b7d73c5d686,2226089187,17184526018040508112
+43ee42f7-e3be-996b-ee46-cc4a89c5c5f5,1037488896,12038114165967006683
+c33a68df-5d20-5af8-038e-8f5b9d90c071,1836308982,11564519593578590689
+3e654f1c-18bf-7a7b-f5f3-41804ac967ab,3587231834,15903515171433617775
+e195eccc-06c4-1f2f-1eb9-ae4238e7b6d3,2639806187,10399479486949688030
+b9243d0d-c7d7-ea7e-87dd-c67cd59a312e,2839324775,6145999615887968019
+416468cc-1ccf-d2a3-caeb-d4746a972ef5,3808070744,5784145549222656477
+bf2eca7a-e28f-5284-6ef1-c52c6516d0af,166681763,16180113988149535368
+c36e0979-5cc0-67b6-4fdf-187a4527f074,3194968319,4857190717260842591
+11ec80e5-6ea1-c730-50d0-ddd1d612f306,3719367257,4963692022465787318
+e044e6cf-0e98-840b-a444-cc78561276f2,2613449595,12938834926423525184
+f17c041b-8595-a193-4395-8e852ea86356,987823161,16783928881474770744
+2dc77db3-90df-2de7-737e-3989684298e0,1129629409,13812590982325871726
+a8f53fc9-85aa-5247-6ba2-16ee44c6b70a,123758998,18291750836343819048
+ed6f6f8f-eeed-a433-f2f1-2faefde756fd,3812956795,15317995515621458130
+b958adea-e309-ad38-3c23-2bc899630766,2896327575,9500193235526340605
+800e745c-b758-8aa4-e6dd-b95deb554788,2738312608,18402855101311422151
+8412fa6d-e909-3915-e77f-feb59f048435,3127073018,16108983977302622699
+9c60d797-42db-68d1-5cfa-29e9326e16a4,1917889513,17993824037239489315
+86a686d2-ba03-ccce-30f6-b5dcb5088598,590691649,11406106273814571532
+228bdef1-dc40-a558-188b-65f2b97c132c,1736851791,10472307843805273784
+4c80d388-eac8-ee42-2251-2ac85ef72ccb,1735705722,13855276937774498171
+649944d9-bce5-e1b7-eaed-d005f54aaaca,2051047385,14164231111147982958
+03119b4e-4476-2232-957b-13d617dccafe,802847400,7356743304910154380
+c2e622c4-1d47-f22a-3ec3-7791f95f3396,456043037,6863483611172984156
+d36d81b5-9b32-9ffa-006c-7afb257133d7,1202035188,6546025726534728242
+cfec3341-3999-a6d1-bf31-7d1fdb8d5f01,929624110,3792220937914748318
+28f2522e-2240-4157-9861-f69b7db4a8c3,109886138,4157633482713107480
+7a9d541a-0fa3-0704-3095-1e217690355a,555083564,12112488662687454666
+39865539-80ae-2230-9863-32a1df89ab38,991081601,6216542179664916188
+670d6046-e553-6472-12e9-73e3fbcac3a5,299689857,3552057684036165706
+359f766f-01f6-6608-a7fe-4f6e0ac5c4e7,173656089,10987417796157636104
+8ab62c07-25c2-66ee-3130-545d4a78b58f,2394506069,16451415891650906974
+8a1f47b3-13d5-9daf-0d07-fb7f3a59d9da,3934990251,11391236564638704575
+a6aa59a6-5016-4818-ae34-1317f1d009a7,2046132337,15484802515553147787
+13f05ae5-6599-7a90-162b-6936967dcd4e,539109224,7571273222608576251
+f68165a3-2a05-983c-b564-779482346999,411161631,15262660479767145361
+4a690429-835f-c756-2653-7c6642278679,3983325779,15145621432065246770
+03303e68-c5c9-6db0-8143-f98719f9b24e,214735018,16814466503467425488
+2dee658c-a1fc-8035-59b6-1a10a5ddaf30,1221930357,5437448984101458058
+a4507b62-d133-0285-639b-b6cbf3c502fb,1824128592,13967932897098625441
+50fcf44c-30ad-fbcf-1343-bbdd5233f55e,1900016968,6664000983221055325
+9917f815-68b4-5c39-7bc6-d60e70865879,2099027949,5704765238263835787
+587b03c8-b5fd-eba6-ac06-032247816e38,3693888911,16078225774661749287
+0ba5aae9-57ad-326e-ace2-1481340b6f36,3296866703,13694512841515593016
+9bcafe4e-db85-04d5-8c55-6054d8c42fcd,1936641450,6728893233746791637
+ced106a7-6bc0-efef-e115-90b4675b520e,3546974132,12169794139179546281
+7de956d7-62d9-daed-71d7-4553cd6ee1ad,747882573,6859707499943449210
+a4c33d2b-0bad-04c8-bf34-e6cd034640da,3883004038,5493644976680895032
+56e37bb5-ef11-4afc-7a8e-a92e0870c4e1,1050875623,8900957745615827084
+026c2466-7e0a-3f30-fab8-301c6c727970,248162240,15152272031662494557
+0a3767ae-e0f0-6198-0a80-1b3da79f85d7,1156120978,8155217242487431161
+a29533c0-ce56-96d8-ed03-885fad827853,3617144851,11882189401014234604
+3d4cef62-e8db-3c25-c9f6-5ad15ee347cf,4291912656,13982135074870560144
+170b8b1b-2b9a-a650-b067-0de053445d00,523857317,14082261729760807362
+3e61b9b4-bb17-eb78-9e97-602b286dedb7,880890360,11061054267846789002
+67be6b26-fe31-9940-c903-59f52addaef0,154588678,7399442941291467772
+4cdb19e8-0b07-8673-d828-ad91aa974120,3541453246,17017611089699047149
+7cf0f065-a6ca-a902-09a6-b780bd39a6b0,3827973995,1869618897800233693
+a11fa5f6-19c9-013f-083e-81398d0f4c0b,2621678428,3861356534573376801
+74c58ac4-7e0e-7588-a889-cdd657bce8e3,665109425,7417881222761962116
+9a4ad3a0-01c0-5f85-a368-c027f74c9913,11473021,2456035443879250956
+e04f760a-5530-6e2e-72b3-8d9183f5bf48,1972840548,4576184606300518465
+9b168644-6fcd-8f3e-41b4-912ff3ce9d64,1006593474,7889223059659380569
+94f8bc1f-db87-37a2-1fc3-73e6b6862106,1305040895,11852739247289904966
+4de61b97-6cd9-15dd-5012-46c0876d5083,2009203117,8609411001133564620
+4cdaaef5-ad63-c7ac-cbf1-a9b8b663ed4d,1080671176,4761331364192815675
+7f7a390c-a5f8-5e01-8a46-1158e182f813,3778693759,6785141898589582857
+3cb925d1-978f-cfb5-0017-f87e8fd7ab7c,2600243010,15479293894415278901
+4bf079cf-d092-59b3-dd03-228fe1e734fe,315000676,4004059939211287025
+0eea39a8-7cab-6b37-d036-1c7e02b37b1d,4215693019,10632108756790030286
+68ce7647-e4b9-1f75-9ccc-75b0869fb51c,4279139038,7524281261451003116
+fae494c9-737e-3d61-4d5b-8203db3911a6,2039827457,4664686530639465803
+bed604f3-bb40-f015-969c-11b4fee18021,240866357,5773328037812772032
+fef939b1-a117-9271-b5b6-e3c1eebf886b,4233574023,6147234259558002544
+816003f6-4159-17cb-e61f-43d7d1267a02,769045051,3773066573493207444
+3769c934-1d57-a661-db77-54abc54c8c95,1714553933,15499962390484733011
+ab1058a6-e2c4-f3df-d898-52a30b576995,3410619711,657581337374446246
+a2b692f2-b826-6fed-aa9f-13c1bd6844ff,3023922678,583981826472016933
+28e574e6-08f7-9e52-fa18-2e70c77683f1,2169063925,5814434649064239630
+4b849b11-0ba8-2b43-abf6-7e50559b8045,1684369729,3419539741677156496
+fd34b258-2e1d-266f-bba6-e79961d9d310,3842897067,13915009908764211936
+ed6013a5-628f-de10-568c-84ea82767f69,2109251581,778610889566807946
+02f9fa15-517c-19a6-04e1-fb3a9ec6223d,1210381725,12569612490326631741
+209198d6-4b7b-0223-7f3f-edb7f0242b05,466390731,720022398708926058
+e34749b1-99e0-dd61-6722-add42e61b053,1451433846,6322542504533309997
+ad085b17-0f0b-722f-21a0-829d0fd55699,4275682954,14820758946243258430
+15ae5538-cb48-adcd-3a83-66d8cf963720,295492881,4931184781260913361
+4ef28ba8-2b98-19b6-3ee8-6737bbb14890,57760561,5495027376654889887
+39d8c62b-71c9-0ed2-8026-9c99c9f8a358,841861896,17911876159481738210
+870284a3-7ecf-83f5-919e-cf7ae39ed890,131736172,4925663469665595187
+386f7735-6311-9941-1253-522fc754d6b8,2681514779,7955939200592264216
+d2d96ceb-9ca2-8e67-691b-07607f4cec8d,1445129850,2462922772131170154
+0816fcd4-04e1-2673-3982-aff14ca68451,1779128680,17277172281482457488
+ff8941c8-fc20-cbcb-b7ec-7b9a31814f71,2968783321,10840343000834844245
+dd468428-75c3-f65d-5dc2-76f9eac11247,3578208018,5356472319842131553
+62a24844-977d-f9b5-e13a-2d638d923c24,2242928376,15763731891365760706
+b7360320-6f4f-b4d9-aa4e-0c5b0db86365,1321995129,4280277948833386414
+19625e8a-83a1-f57c-0b20-35dfbbcef182,2762896909,15767642782521331612
+e817b84d-ff86-cc96-2f63-cc04e56bf9eb,470985265,8356979184632347438
+10920be1-f0a8-1c1b-163a-812bdd5ed248,3842094872,8510419023372523850
+79e06921-b2c3-dd00-5b9b-c0edc57346ee,3830088601,1510430950249753493
+8e47828a-70f7-e143-5eff-2b0ee0a111f4,175872476,14946018131019530618
+37d07563-a291-f7b0-f39f-0ecf2e676df5,496366251,14636932675106382532
+497bb25a-f8d7-3783-08b7-30ce850df8ba,227350526,6302394532621408734
+ba34b51e-fb7f-8243-415d-439966e9dbf5,2698090705,12780300654506424716
+4c2e672a-b497-fa97-625f-1e3fa5f7acce,2754151578,9475994620911519450
+3a6f692a-7798-9397-44ab-2311dde8c0b3,755197775,9903388210584023156
+c66eaebe-c75a-d33c-ded9-889206f490dd,1735508254,10292303399975461744
+2fc3b3ca-6960-78d4-ba3c-a0ec06a453aa,1571589378,2979853482728123138
+6d83d7fd-cb7e-aafb-a548-e084c4fce67b,1041036213,1912506646369303877
+44187fc6-955a-3a56-42e2-355c20c70c92,1117174621,1881636800438001971
+708e0b58-e736-dab9-4416-fd6082933e80,4084664537,16769025867045644571
+e761a61b-ac82-448d-89f3-b08f550688a1,73941570,15900028166002708835
+2052c447-cb30-4dc9-d68c-7f324642c637,3925997263,4479283196054646626
+95f5e6ca-5a64-f497-2bc6-c2a4daf0bf2a,1442718347,4463431301484147016
+b10afd2a-7a25-60ad-fb5d-213d048dcd40,6105352,3614433417617303636
+c7396261-4187-2baa-4eab-bc8ac0c198f0,2366196183,7590018250854200346
+dd58def4-ed83-7af4-38c7-7ce56099a610,481834315,8732717820589638145
+dabf22b1-5e58-9e87-f33e-b856cac92f22,32920971,13414725005854355672
+c43e0b9c-9579-5643-a533-c22a0302cbb3,3361812209,2623224050829701063
+b1f8d86f-b094-cf7d-e796-7bc58f7c9195,3836195676,13562244594912156773
+00b8cd9c-089e-f7ee-dc73-fcf0c0220388,2989607606,3322387867433001405
+442f3d21-5921-610a-d9aa-a3b6344ece7b,1420906685,2984096240405498500
+e43d8326-e424-92da-e4d2-b4ef8b4531dc,2071836300,4949092408269670166
+ac2690e0-1730-0f6f-1e1e-92c6d845ba50,784178002,1919476122019094790
+c1ad09cf-827e-e0a9-adcc-9f31cba6e564,3084246867,14877480603503708033
+938c50d8-73c5-4c16-4853-294a686328fa,2283101469,9664107697637409226
+47b2cd27-0d62-3269-05b8-0643754d112a,832423107,8855875540049630672
+d1c565e3-527a-19b2-8ed4-2d056a11d5b4,1096316779,8008032448367874797
+9c3a81e9-ce82-fb80-b2d1-00a38c736e6d,3600850865,9057382929408046020
+28ddf060-e08e-1550-e39e-a55f7855e9de,2636527668,1917612916231677181
+cb0d6163-cb4f-c1ca-a898-5322fe3c84c9,1716347840,8007732017151983540
+7cc34215-1dc9-5096-bf84-2cadaa2beb14,3464894359,13018446095874274436
+9bebcfd6-b52b-a911-8b68-3edff13c561b,3797460590,5631545016360991258
+446c7e8e-eb75-afd4-81a2-ad46be31c362,1637509288,9534994128259904138
+e5f8fee8-6532-75b8-38fe-46d31d283bb3,1839270826,11019833884642395850
+798cf48d-8650-b85c-990d-b1e9ba3aef98,1920316140,10053423204461529483
+ec35df0b-1fa9-a7cc-860a-e6d3119182e6,3291695416,12208792720027150387
+0842d041-2839-b512-0426-ced41a732187,2514721127,9656442557050340759
+fa4f33c1-1368-eeee-1227-6f79ada467c4,2878614669,4315141877019471997
+b0b49250-57c6-5113-b673-b6d62f728440,3460979924,5663589345959669188
+884eac23-6efa-2daf-2d0b-18ea1bacb271,3255336111,15937929486062662592
+2cb73010-954a-c171-4840-aca3cbfbda5c,1559875648,157656335646121815
+673363c0-8819-4577-c4cb-d94df7de6446,3679423103,13327814228579839092
+cc0f8057-87f2-0481-b837-893a0a9e3834,65968901,3880870221158294403
+5e4ffa63-2942-a93a-8bc7-9042b49d0f11,3619976019,14103618630738878238
+c819057d-19e8-55e5-e76b-510aa53cc461,2024797054,14576756838040999951
+e0bb4987-202c-254d-061f-3960eb1d29fc,3286815098,1720820247914308274
+6e364acd-d567-3a87-3d3b-3d0de72fa8a9,2106889372,5539598558073745929
+52297f0d-068e-f50f-7d4f-139c9bdcfbb0,2689852914,5748627790314643585
+e11aee8c-0702-a462-8dd2-1352942e0077,2407362226,16191833023880946843
+81c24f2c-cf00-fffa-7458-1fd1e381fd85,4138798124,9660553708821938711
+df54116c-9a8e-cf21-77ae-6e30852ff567,3819952950,10746023140727376386
+1ba67860-1c0d-21c0-b361-3093e302eae1,3766160292,94060569233660678
+7ba2fea9-03c3-45d3-fe7e-10d3e5bbd8d8,4203838699,10751632941999170572
+b9950001-da5e-67ca-cc29-c7bc3626b506,2817752047,3407210737238798441
+f4c09178-b5f5-857f-01e6-1d491df3700f,3288304371,2347681503901433468
+59cec897-f20b-3307-691b-6815debb22da,2787881858,3724089355880730296
+5d1e771e-4e63-c5c0-4f6b-0ec68c10acb7,3899310806,1304554927749405679
+fbaf63a8-181b-b9e7-5c8f-bdde51a0ae69,723851269,3253994585652583920
+ea7c1f5b-0712-3adb-fca6-e5b971bf1dcd,2941499257,18133907811183517888
+b3600c0e-e595-2d28-d121-a23fdf43ac11,639237732,836183536147936649
+778065a1-5055-d89b-54a5-df93a65daf59,3934095846,1072550526337043080
+d73b97bd-2725-761b-b9f9-acdc89eca523,1336157185,13821914758087094194
+5a6be8a8-aa4a-959d-d20c-89515a4f16e4,883868577,6708436949277499526
+23e15a25-0e37-2f4a-c1a7-b6af3b1a054a,3970079169,13700410162289852145
+7539873c-72f0-68fa-7bb6-78f84ab0801f,2194171050,6069560859543402830
+de2d12f8-13ae-cb7d-e9a0-d22f478cac68,1121658281,17272100723791812681
+4d538a74-4888-c8ec-ef42-9c5c34d437ab,1941350192,7564796076336202086
+af998824-1f8b-9fcf-0ac8-291640ea1807,1414504483,18242633678292247358
+315d5c36-6b2d-c30e-21c4-5180ba295d6c,3007960756,3298992024935527267
+e06ac027-7460-9b9e-9bcc-bdc4f38cda2a,704435305,6708755090076180431
+b270308f-aaac-adf7-3d8b-a3d3426ce0e2,1943631670,5768359506331433072
+66f0c960-efbf-f0c2-8ddb-13d8c12a364c,189295576,13011254937998209919
+bfac68c3-ac10-4ac4-73d8-675a77c1fd57,2436423431,11648147690186713366
+19b32d8f-8709-acb8-69b4-56ae1c4e37a0,792932328,10370011903101607478
+61d4eed6-d062-8690-0eb5-d487a4964479,883392844,17180219247242864147
+b6c3aa0f-0003-7d63-e9e0-38103eea1b70,2643910914,12736438360104071829
+c8885cd8-48fb-01b4-6f7a-38bfdc469359,960086969,17362501642988473040
+411cb2a9-996d-756b-6b84-2f946b14acea,3193709627,980009346135078475
+62922240-d842-d491-00e1-70a9bad74d5e,994915657,10431966275505143038
+591335c7-011c-3a38-8b10-ecf48962b6e0,3043197139,736033894509955265
+e3953c65-b57d-b655-82fd-b3741c9982f1,52495121,17697823360186632551
+e12fbb4f-101f-865a-898c-4a44dc48cbc4,2553233442,13943433214662638446
+2b201201-b438-7fa4-011f-0d029c4b0851,1521731178,17865975032238546168
+0aa9cb03-95e1-7fd9-ea8d-c5bbb63e7186,117908900,6992905419961267005
+9ab4237c-e8e5-c594-00f4-71cb0475a2ce,2765192777,14109273698917042627
+67b672dc-62c9-70fb-fda0-7188ce0de5c7,1886881294,17631110032721717741
+a94ef08b-5218-e42f-7493-8140bc035282,541852234,3515391922542038684
+c043252a-c8fc-f99f-7514-0c338b695a77,3458034933,9154864177115468856
+a0f1b79c-346a-06c0-a3a8-5e0347379ed1,1931636725,430320643121353144
+a960e6a8-43af-b0bc-4c14-29ddc5505dc2,3258872652,17801870391172300014
+690915a3-ffb3-e28b-2e88-40e09074e6cf,813814363,3172890234503827590
+ae873325-dfb3-14eb-64f4-ca64607926ab,1629690229,4136676241238319840
+01de1bc8-66c5-44fc-ac81-0963c45c7edf,2445112353,4072744843354347587
+bda10674-b4ca-e675-5571-196f4c050280,3247097557,17490969784201108452
+98f0a739-365b-63fd-7c3e-0e4ad6540377,2478759360,3510473617469044985
+3a1b7cf9-7ec6-2909-e4bd-dd10262724a4,1137969283,18102635093071331199
+55222a34-704c-bc89-cd8c-9194b36514c4,306717550,2953693126830695223
+e05db164-cfa5-6061-c792-8b63ba41ec51,75334965,17070765771295589359
+4e6176ad-adcc-5d60-b860-1ebeecb1ca2e,2965440672,18017036460757297864
+472b5047-941d-72d9-9414-c8f1150c0eed,3872544483,15034404289354747949
+8cba3332-a166-63c9-e048-1a5844828e10,3835566230,13028040350744268514
+17f7ba11-5f03-0da5-0535-250f3b5e95d1,3156516773,7700468371553780818
+88c313fb-221b-0a60-1b84-29f326449951,1146969625,18287397542310153651
+b85c8ff9-65a3-e07b-ca39-ef444fc09d4d,3950942159,17211748815697802041
+a6db74e4-2839-4e22-e21e-0087431216c7,3557482065,4017812032369870418
+a6ba49a1-a8d9-ea34-4dc1-ceb717e3ebe6,1216709695,15254989156669250182
+4bb2a573-7d1e-b870-61f4-274085172e1b,1716021208,1697184339083464172
+c8167def-1313-f5a1-a83c-754c07be1077,3664097909,5883875440029157879
+3d281f75-7ed3-d051-8c4a-1e6e99bad767,2900083121,2042562422882835970
+e7b056fc-d41e-6a4d-3937-8151e7f0da8b,2865609289,7208206216672112560
+1263f1b8-d7d9-2e63-8556-3ce153a4ccfc,4290484796,7866978418592348862
+15e595fc-e003-413b-1a8e-5beaaf415a0f,4294896001,4150243487806126252
+ba6aed1e-455c-71e0-6147-78feafb70051,3045525701,16003046886164678861
+c04fb007-139d-a2d3-41aa-4c7ec1b029df,1535910013,18312816044738577346
+bcd4be78-2adc-0604-c87e-276a224473da,1490420887,17819158456674027690
+62191b1c-bc7e-9156-1e6e-c9be46fc9c96,1248969568,17647452051949069053
+f788dd73-f4af-3a77-f8ae-0d8839ab51ae,1395448118,4931265390501280397
+ff295b18-55eb-af1a-9fed-035afc5636a8,1118526500,8922136423088219202
+704ea553-e93d-5649-c74f-ab01d093d348,207604883,4559816714421571141
+e3362fb2-24c7-6cb6-3191-9410026c7c16,3892194577,12938953325805549355
+49b6a861-0cf6-50e9-b3c5-3691225372a3,1694454964,975607854612783392
+f0e58581-f58e-717c-df87-46e7b7bdf385,4015843203,16478595199649794917
+44b3d299-7565-42e1-4dcf-edae1685c176,2898097036,16777366635951348690
+d45eb22c-7766-bea4-7082-91f331a17431,1836842315,4794043322072735926
+8d2c03be-1a41-9bd9-6f66-8024d4a50e57,2693928807,4303946407806743935
+08fed13c-4282-fab9-0793-8b39e3adb399,2899431188,435959362020214708
+8a9335e7-9f2f-28bc-0a50-bb64d8baf2c6,3102926007,6310847763795183034
+b4b98f65-b2bf-b689-14b2-bf7d1a84aba9,2936420856,15772629899284091290
+5967487d-6d3b-9b93-82a5-799ea5722e45,448205361,10713367345077146539
+262c48bd-dc0c-30f1-9dc1-9d9eecb4b259,3755499740,10037672549067716201
+1f84b926-7434-3b7d-bbcd-a463851f8644,659818382,13836180985881897945
+0730bcb5-c0bb-9c32-3521-41ab44b35788,620777041,7745519727346299702
+a70a8eb4-8ecc-bac2-567d-08875f969d4e,1005518835,8182966565881316882
+835e7506-e9b4-eb08-6b42-4bb530bd0fbf,4213507197,5336517910108821052
+4e4a9881-2d76-3997-08a7-b84715259c5b,2765367729,17762207201728738928
+9d5d61cc-b24e-1ddd-da1e-fc3546291e50,722494838,1334637705099789963
+577cb8e8-2558-5685-b752-008758cb4856,4243089677,14864910614875042524
+6f9fab29-0f0f-8db8-71cf-60f7786abbb1,3317081451,8239503788351350290
+da6739ac-326c-cc2c-5295-5869101b7254,413920975,17039874829828260273
+662c7979-d8cc-1112-2170-b28c8116553a,1990725631,9340962427179745463
+119b463a-f39f-28d2-a499-117a30ac1c3d,3146515941,4540444379344472711
+eae34ece-bb33-c64f-fc2e-61e9cf715e4a,1478279746,2116647669956148128
+8666817c-253d-7a83-528c-8e7dd832821d,1779051930,12995907020261430477
+b1675a58-3d64-84e2-fced-9f8c688285d2,787805082,16048519487767419541
+6a2cc1d1-9f4e-f3d8-25cb-edad8386319b,2703726343,6704449184589444552
+a9e89a6a-bb8a-9970-e304-574ddfa12b2e,3998983890,14235799574827054970
+0dc88523-ba1e-69f8-07eb-2f8d06488e77,1665717687,12033261114602494888
+9d726a48-6dd2-fc76-2864-b0dd2decc4c1,1231567177,7165157295123566611
+b2b743c6-c519-6df3-5f9d-295a667d6aac,1638731833,9545769548951113280
+10507e85-160a-296f-0f95-77404d216aa0,1783656630,6353764621638809266
+bc951ad9-5723-82fc-8c7d-c09c5addfd4e,1384168294,5081730616854385917
+fbff6f05-32c9-c718-cba9-c737f9fec6cf,781211380,2056945602274682649
+e72aa9b8-7241-5594-505f-57d3de2e3a34,1867058345,15668907982640216019
+75acf1fe-3418-6c2a-050b-5396e3c3124c,2313179879,8738385228789218815
+b3d14359-2d35-534b-7bdf-fba4426ab47b,97853550,12818637411475951817
+5a7f1c31-7c98-e466-3bb1-86a44122c8b0,86972879,6889075130447494404
+8bb15999-4cb6-fb24-227f-30f2666cb15f,3034235499,8031196052264619933
+4e0798d4-cada-f6ac-ad43-7ee1ae539fc5,1885168875,7596068577934313087
+becafe1a-52e4-e1e5-3753-b8e82d5c289d,568946848,359777651544739258
+0b231dbb-3e66-7e7e-bbcf-2fa5c5685624,1336029045,4976143365034060384
+88a93364-0821-d987-e499-b19e89be0402,2015802034,7466313118435171839
+1e4fed1d-09d0-5509-91bb-6b2b04412f62,3819587150,15764284764195044472
+ab7d9508-5f32-5adc-2ea5-37c7b9556b25,3568871830,14285707289464380546
+d9f8f7fa-8428-7aee-adaf-a418bae8e117,211405486,14762640327742597584
+7d7f2981-82da-076d-0484-0face1beab68,3187737424,4402200605900664346
+885aefb8-a5b2-030c-ed3e-84e88176dfcc,2196462450,8958739139873828161
+acc7266c-b021-b3d2-d161-59719585af13,573350995,10498704082412166529
+36678fd8-58fb-9744-8193-4d1e48893f55,2031700897,6385307682742794286
+1a586e0b-21a7-7406-4877-0ec60ab41651,3096168462,1474504946413166577
+3764c7a5-1cfc-231e-b999-8c5fd4e83efc,1730162257,12482640644736971780
+69e0607e-8459-4b30-1640-a9752c39f687,2963295073,15382864711219818702
+600bda03-bfee-ad1f-bd28-a1a0ab981cd8,1198796885,4472249086771665148
+8dab0b4b-7dfd-92a5-1423-56bb7f0203d4,2587783255,8741557222871090731
+fae89bd2-c379-6371-94b3-ed7794103474,2448198225,2130910609479132929
+da0581d2-c0ae-b92e-31a8-acf1397a8575,1952876853,13906725003283112748
+3e534f32-5abd-c5d2-d626-4ebaa58feed4,2961340527,3683408042000497698
+df8456fc-8150-bdcb-2e01-7107a2a312a4,2362814001,7749186638281966857
+82973e42-cfa2-8285-8a95-901f1d8549b1,4098130982,3252312594279328542
+d3dcc8dd-a693-4b77-9bc7-7a0ac0f98d16,3179984792,11225837368656003056
+0eeed9b2-bb92-d7fe-15dc-fa16fb8613c9,2414125545,2781514349973194853
+fe0dbf9b-fdad-656f-de2f-435bd90ce1e9,4258967698,16093745060286859637
+7b914e3b-058a-03b1-a05b-ca276f91931c,2849079567,17405424929131517480
+b276cec1-0537-2ecb-cde6-f11f2706af07,1534480250,17609633843027776778
+87dc2195-eea8-36f7-3b54-3b275e7a4e96,3369180838,9734134977656530150
+13a53717-2e80-46c4-bd30-e4df6eeeb225,3002249195,17608341800504067186
+679d50b8-e881-7dc6-2827-1861e86e6ebe,2663416108,7396788218484057491
+80ee575f-a9fe-b1a0-52c9-e7383865544d,4079466074,15677002378803370098
+d2641fa2-1e9c-44e6-3d66-1382f78a99d2,2019728435,6642018657379143191
+7b92e28f-0821-7ecc-bf18-c532f13de967,78161896,4372101050351293623
+e1f75598-bc18-97ec-6b63-009174366e76,4181988726,17501713680741061754
+9f87b470-51e7-013f-af51-d4058cf800fb,3581608498,8574364621580055045
+cbf5713b-fec6-cb25-2153-416c5063708e,1526485078,17742272093299451071
+31355803-67af-e3a9-c0be-d0cac0a7e334,1692490133,8701649510829640262
+8aa91c85-eb86-1a54-7f00-1f32b197452e,2597258147,10580125180085562322
+4156622c-c7e2-8347-da8e-e39f2d9884d8,1265426332,17115432129382498248
+24fa1979-3842-b411-9379-cfba8729ae01,217831698,14675327685489443351
+ea59e3e5-658f-2fb7-3e71-e5d50ecc6180,890906852,16829662817035288809
+d0ad47e3-881f-bb49-f607-5bd7cc3cb387,4094080487,14687301967073873038
+5c0b9145-0b4a-741f-c3e9-5c82315c72fc,1999881428,7113419990045532646
+7030fe74-dfc2-8f8f-9728-194a47e36ee3,1502608877,14323843993787574405
+65f40b98-c2e8-8d34-92ea-cd1877ee5cff,4020819346,16392003653351298907
+c4e584f7-bc48-cdaa-ba1b-2b33fb7dfb5f,395592957,14965317895673818224
+637271ed-0cf2-710d-71c5-a55e0d788f94,4129952616,16807293571500521789
+7f0e6bad-fe8b-73fb-69c2-60210402c3d3,1576813751,14828509552911713455
+436c260c-e3ac-1862-9b9e-5e5331fd421b,422568607,18300649980739032021
+01908310-8bcf-bfa0-8e47-030db60f4603,3592019680,17265985385865373028
+c78a8bba-e516-bd8d-acf1-9373dd6c8f3a,1278208852,1653822727929871971
+826aae51-d0f6-9e4e-0afb-b847b442c62e,3107763271,1922099595652990252
+4b186ec6-9d7d-9667-28bb-b4bccce2c46e,737364243,25294432859305579
+648322f5-bcf0-ff41-80a9-95195451fee7,3643364645,1035692500272768503
+e1b138be-4ace-bf12-485d-9e548d32ea58,1434978728,6932444054599027598
+bb5cf548-5fa0-5433-26f9-2db8df305d48,1951193612,5179790787378920259
+e3c20772-4371-ffad-4a4c-1dffa0e5e72f,2158735758,5246048560749690477
+887a1fdd-d60e-d733-15a2-56a4a646e8f0,970055914,894493860098377496
+12915107-77f7-28e8-ab94-bf03fe3e253d,3313787856,8558560609750782357
+0dbda252-08bd-f134-73f1-f211cf821ee1,3891284956,7288261025843125944
+4e85bbf5-8a12-dbf8-d0e3-a31abf2c05fc,161917519,14596938960472652747
+eec2b7cc-1b1d-4bc1-67ea-2fe231113fd3,2357052953,8969341880153783791
+8c6fa653-2af3-c1a3-58de-ec25bb79afe0,2818835154,3613793392049357542
+6e3f1fe4-a26d-e9b6-fa53-8efa0106636a,534493782,3581887512784849748
+27306e09-b650-67af-7e0f-f75467a23dd0,2670644497,12169269638926580123
+d8f5a207-88df-f424-e09b-6c5a236487ed,1553668979,2901199134793018668
+c5d60c3e-76c0-0b5a-ba21-7b1adef5ddd3,1980384998,7466093889451162191
+32a3b7ad-c48e-dd7b-f867-91fb69a2d102,675625280,10307986847067942292
+ff9b0a60-e41a-7b2a-672f-7140eb18944b,2591440614,16691377466168567744
+b627adb3-c733-6826-2fa2-599d378218e2,787867257,5756197972342213441
+f9d04a48-5f82-ce9a-a160-46fd14953a80,4114336985,17664648429767204801
+b86f9b3d-616f-061f-9f11-b8e73c85814b,306513358,2900165359890490434
+4ef2cc3d-86f3-55a5-44c5-a06f0dc4d5f4,12411453,9178256073721098426
+567a62e4-86ea-89a6-2a0b-8fbbfa17c45a,2360230678,5358063563651876032
+d76dca25-76fb-91d5-19c3-c6eb5761dc3e,3639966199,7291537798555096408
+8090ebf4-9878-d2d6-31b5-83f602999c82,4166520560,9167852768595702213
+e8ed2549-ac0c-2088-e534-1e08f1a01267,3260031352,8803962883287343034
+58fcf8b9-4a00-0111-d478-ba8b7dd0c831,2711714278,12750957045617043136
+e826e974-b1ad-0575-6305-2cc3bc7eaf74,1684007753,6405575489426652714
+6fbe697e-4b57-a61d-c586-a486c40bece4,2053146568,11998618403246138488
+44d7e24c-15be-eb8d-57ac-ca9830f1ad50,1688290710,6909300768246599542
+837a9ef4-8bc6-60d6-0a4b-2d3e3753b0ac,3195876677,14717740097741263584
+c8867936-f9e8-0f5e-025d-72cc161a36e3,3122811494,17248184145491504030
+6a661d46-db42-d3a7-941f-51c2db761b84,4274116997,10761263965190424676
+db6a7a20-a75a-087c-6b3f-e6336e71a49e,2130311907,6438754159804935967
+bdb2272e-e5d2-cf1d-97da-217e213c285a,2834238237,10526664529701306402
+872769d9-a327-6407-5193-dadb6e1ed3ca,2594562904,9049267531497989797
+580f52b1-8785-442b-0f04-27f0194ac7bf,2050987758,6392323244501625652
+b461aa30-2163-934c-585f-13e3870a5756,2151989141,17420210785389203077
+9dffa5da-527d-c4a0-e345-edc2c9fad656,1267729867,3662620728507755652
+ec6ad2b4-549c-58cf-b0ea-da6292b076ca,2121845898,6023540428946593363
+5475c7ad-8ea8-6274-b694-ca6d0f58861f,1549507449,13151153802494567272
+3ff3f18e-b866-0786-6fc6-c74badb89bc1,284199035,8208191374488646969
+ca253e8c-9055-b61b-6e65-2fb026a657be,2386717136,13509216629263520592
+f204f858-b819-6a0a-d4bc-985a0ccfa1a5,3292958569,13550412881851416996
+c96d21ab-779a-4acb-a773-bc5b172e5511,1021341002,709571030925435197
+83cd0ba0-e0f5-83b1-76b4-7b869631ea70,1264917278,2646695007359853628
+97963793-b5cb-65df-ba3e-3370c263f98d,1721218882,1426864481604759966
+403ceb44-0bc3-92f9-5456-c60dfa266aa1,1764786098,18234393351085218072
+25033e41-5d52-0dfd-634c-b56f95b2b701,3147774815,7857684713417805571
+e2710cc8-7c6f-7f24-7772-6b364b201240,444077786,8857326624660233775
+8b3147fd-8a1b-8be8-b515-a3e3e800260d,454874175,4372974248699483368
+131c5b55-d2fd-8c72-9235-5b859f743bfc,4054058490,2731493184286349569
+f3229276-aa33-4ada-8870-8657197b4819,2461303040,8163177134913088575
+c4f9202c-6198-8d00-ddf6-508e6e2b0bda,3838429980,7265007016943017894
+aef22842-9190-a4b8-00af-e24894bebbb6,2072223281,8052700177355448199
+c941418e-c36d-581d-ffbc-94f8f01b405a,846868233,9856727331291573975
+108d6f41-cccc-b12f-83f5-33108a58aeae,3693453545,6373648377851067117
+48df03ca-fc41-fbf2-4302-ed2e4b0b006c,1507534657,612596175469596802
+d8aa78cd-4b0e-e4c2-178c-c2d1b417c50b,566100348,4378581407939286846
+3db4b81a-df92-579f-4e58-4b28bc23e154,3098763364,2976715821292336396
+30330472-41a3-e347-7c1c-bd9850e23962,1548707137,10728871595650437219
+c67e200a-bf97-7958-ddc7-591747a3db7a,2785122764,17845894082951910911
+708183ec-60a3-f1ac-077d-0daba5d04150,1407383071,14405825248134743018
+bb3a23bd-467d-50dc-7b7f-733375ec518b,1778248233,4310863724107787535
+bd4779b6-fa63-ff29-e6ad-cece30ea43a2,2753863734,73797066848449948
+8b63e5bf-902b-bb94-29ad-8584090235d5,160974209,4641746529195434593
+f229a60d-116c-755f-87fe-3fa9b1a9a751,381300381,6527104693448967929
+8e70e2a5-b229-6640-edbb-99e0514df5e2,1802236744,8328749116676337289
+7d467efb-5daf-5be0-0a8b-e45afd77d568,3711149955,4574174973422076901
+a81fc10a-1e53-7ca8-e4c7-52b79540f31b,3897599688,1064845725960963007
+a2e150b4-b956-0f1e-007d-c7a70acf3edd,3517010239,11323173565117748693
+66f9c6a1-724a-8e43-1bda-e1eeab9a6196,594477762,14156967604924673609
+68231c6d-0789-ac27-e3fe-1588aad5fead,1295224973,16156323071013452828
+e2de78c1-9e19-d3df-bd82-2d1a92046101,2835117171,12487449981424878522
+a0d005ff-b368-d195-3602-d9dafa8394fb,2688267845,1329940642935400321
+e7e3097a-b163-bfa9-a4a0-2a4e6b94f01e,2249084147,17728862728108312601
+5356ee4e-00fc-9488-e9b6-6227b785f083,1316201177,18137662923690721467
+08b92818-10f6-3ff9-3bc9-35f22c6e6b0f,3670881055,7651673905494822385
+79f26533-f025-f157-78e5-139c0ad4a39c,1981049352,8640295970804210779
+e3b1db92-a3dd-0dbd-1522-2656e3a84328,650110411,9727470771809543961
+30297905-1446-823f-0200-f3129ae8de1d,2831583881,9932690973044353909
+208de274-960e-80c1-b83e-26ea346929d7,751722548,397748988963967014
+e69ee14c-4c07-db2e-6152-e59debbd634f,4020144833,8387905466954716682
+d30a9946-fb05-69dd-ab4c-b0e3ad9bf3ca,2728833821,4545606281241974707
+106c00df-7af8-a15f-7b70-05bef88c35cb,4277006466,4915870846352334225
+6319999b-40ce-99f5-14bd-c82dc1c21a73,3723496979,4821740525823458030
+d2241d42-fa1e-645b-a673-25f4ff522df3,2172890298,7941586966248805242
+19b70c47-8ed2-4a30-615b-8a91ba35a8e2,2158483367,12831955399066351528
+c985f27e-581e-0026-ff22-ff00c08594f6,667780086,708556050450275349
+5922cc30-e09c-9a0e-2c88-8cfb043b1cf1,2104073817,1231930682667675057
+627e99d0-dc98-7bea-7b16-9ece8b6b5f65,828077189,8218280522839540700
+9cfe84c7-4534-17d1-ffd2-7d9e3f8e4cba,3898124599,7833221136485567573
+91aa60b7-116f-ee7a-a18b-94ce5d8dc42a,3434741806,9626397753429062996
+229de720-093c-7c88-24ce-42077c526a2b,3982765696,12230212043593615680
+7927bc28-eb78-e537-7762-017b8daf752e,1139932713,17847049402939878848
+22e392cb-4a64-83a4-5fac-9a69a83e4cd7,2657580186,17898800254186264180
+b359c772-e076-425f-dcbc-26f795b48b34,697162659,8285605677066719763
+945bf5bd-a16a-ff27-9f37-a1a53202d197,3182824422,3885789954548458166
+6da806e8-5474-39be-a203-5b8bae3e0999,351590422,120507887592613186
+9c936fc0-d272-fb92-c299-d97a45e6f768,628462461,2695706182006666428
+388543fe-8d65-45a8-dc4a-4a6148bf4bc4,1486460782,16529892781254981185
+97d9a7ec-c15d-f95a-2f8f-cbd299cc1910,4184628620,15175854752198475580
+3b3ae431-8a65-e0f6-b4ea-dd03e7fc33dd,1917868125,14512440028710875550
+c2611755-d6dc-5497-2340-25c36d6d7956,476656848,10677037595903885407
+097408ee-daa9-fb55-1a37-f4f88e86594c,1728345353,7735567690143084437
+6fb06e18-aa57-d594-9580-716b1a02e185,3801102632,16401705858719977800
+10cafc00-f51c-8758-ddaa-4dc61d1325d2,3881551616,9900014635168723327
+34302705-93c9-e203-e90a-328c86c875ba,3425854240,1256600020150894622
+b515ded6-1ced-0f06-3113-4b44b57fcef3,3747069071,16054490586735790710
+9471920f-4721-988f-910b-663521ce0e80,1476462706,12973822791857169171
+5fab15a8-8fca-6c66-a30a-9fb282f35ec4,731397478,17899986378487778021
+bf48e0be-c5ab-a328-bb70-773d9ca8c73d,1144010351,9578565938144884269
+473115e1-5371-bd29-47a6-20dfce9ed627,4202377852,3712482906440203291
+f834fff0-af49-267f-3c5a-9e40ac273fe2,1035972506,202976451420920233
+b18ee04d-effe-d6b3-b1d1-dbb6b98fdcb1,4176469286,10041689855629381098
+b243afbb-a2c2-6b22-df6a-92e333350d67,639708567,2381868720084543344
+8a5fd1b8-3b8f-4821-cac5-9d2e3b3fbd08,3371749043,7590023187865154272
+34af86e6-b302-6eb8-0588-7626a6e39221,1781168555,16851669211733468111
+60be1208-d746-8636-18dc-e579cb6e957a,4021660334,7552615974276271003
+f80e3e73-3bdc-dcc1-0e50-86e721f511db,1365383561,3857755967231151702
+94aecb1e-4395-481c-6832-73a45070fb89,1518572262,3161673076866624666
+8b9dc163-03d5-11a9-1ccb-0b10b278af81,38828953,11645219253893093281
+479e3193-6ad9-f32a-d865-deac2e223b38,3935648361,16349795953465366910
+2bdf99f7-1f54-b6cb-0589-e1d22411df27,1399771448,10986957846148597829
+6dd68eb8-fccb-c904-8de9-a0704335f1ea,3949864319,9777157251630657730
+097c3c6d-2150-37cc-4dae-bc1000983abe,1306317580,2580172093055514426
+cb48abaf-0928-6e30-1af5-85444026d982,85707528,37229227264048108
+a5c959ed-794e-873c-a60a-2164c3aca130,2262556651,18379813414525183892
+93720676-f906-4fab-3b6a-cc6185f6d3f9,621581797,11878518607271635961
+f8bc2f86-7535-f1e0-647a-de16e694a99e,769578445,15619818281304479508
+cccb83c6-f034-c79d-833a-1f9dd7c67a62,2995620988,3305131711215379714
+dd570e1d-3e96-0f3b-3476-9038507c192c,2563286732,1033409947899764898
+d06813e3-162a-eedb-7893-88075f1b097e,3173543738,14173458767808774357
+b1ba9c83-db1f-58f0-f49a-640736ac072c,3867013797,11211927156121185980
+46d0a18f-f344-bb36-0b5f-c6005819936b,4090782876,8692172027602517313
+f55c9571-837f-104c-4d8e-b2d17cdaa0da,3334143652,8712887780475627311
+e2d16566-2839-c8d8-f825-6a3b9f166ac1,1239076424,12902715248479440461
+3ffea083-1db6-11f4-4775-324dce7a9678,1884779624,5552107018033963341
+16136707-236e-7f10-da19-25cf52d63b96,1635784083,758072503854210503
+22377c49-650d-7047-be73-a7742ae71afc,3856748706,18431413674732765324
+3860570b-8352-5444-cc0a-a8c3ab6c5028,4040278070,6739016092120696147
+a1ab9fb1-9aef-489f-3ccd-f138547aa494,1513981937,12012547509923662057
+aa044411-cf9e-25e3-f80f-20dd2b4f0a5b,2719715403,10151915879193732652
+78bc23c9-e25a-ed0d-1387-c698b269712d,282685227,14693577387706487537
+5f21f81d-d402-b873-65ff-2c93077a569b,3674279696,13026180635033234260
+8dc1e7d4-6114-f2aa-09cc-94af572e74fc,1329804540,875593047895965570
+4cf22863-7864-3d53-0c3b-f4b7a52727cc,260497866,12789317242544404747
+8f28e50e-90e9-f541-a199-cae9eb640cee,3927680112,7389795504512864098
+9e54525c-b226-36dc-2b29-3a527e16891d,848578043,17674901617851488710
+2501a7ef-d306-6b34-2819-86e4ad9c60a1,571826884,16641661691100891242
+4882b495-fb96-faf9-322e-cbd1aa23ae66,352798720,16055026719291854777
+9ea9c930-10fc-fbe0-44ba-71753a22a1d0,3686135481,17360271503819186173
+850b7ece-dfb4-fb7b-bc02-5bf6b45c3e98,590025553,5442567755949720441
+5043c3cb-e81e-79a4-7bd5-94961efd8fdc,3415525538,15185729225369783736
+c483720f-7152-f3e6-be30-d121fe7d086b,184327324,14383036842321231139
+66770fab-180c-22c3-0024-1283316524e3,2700962584,9645994243537507692
+01294afd-e3ca-282b-a5b4-a84b3ae4f85f,2290673723,2727813289358952466
+da7fd8fa-08f5-49cc-4594-d69b8bc1e74f,1169346853,11265581246356515725
+a7fe01cf-b27c-8575-1143-8a303f29f19d,2841306114,10341538829521277556
+8f005968-1137-5a5c-920f-18c22ab64e0e,2688229365,13970806430116931332
+92490b37-d3bb-4218-5723-58b013fa3f32,2648719080,15788191880184089330
+9b9adaba-2052-0eed-ff46-9b23d7e27d8a,1472932784,17541167071850180834
+1cb117bd-2396-4439-6578-f85258dd0c1d,3278739983,1578426311554139943
+627828f3-0ca3-30d0-08a1-3fc19636c7e9,773643504,18304433747080700324
+5f23aee9-a800-5508-9f28-394c692a75ea,2218222120,5223400148448406839
+2c697526-fbfe-1a40-b571-8cc798801702,4189294306,2320930031329103758
+7a638037-4d61-5366-233b-3929162da5bc,2855496801,6844474922359366320
+3b14052e-9272-8055-705f-8ae17d88e824,3476558238,6922177594594368302
+9b3bfef9-db8e-8a9b-0ac0-b04ee8810c1e,1616261218,1601980191106755563
+e6d3ea67-2671-9fa8-849d-a30d339df434,313321571,14120540641930822068
+42e150fc-a6e6-30f6-8e23-e288bab113ba,891136538,11344065455881702754
+555dfb0e-1199-9aaf-9193-e1b2361e5038,64714522,1402334326754797904
+cda0ce32-a4ee-bb83-693d-43eaa4ad9c55,4001787633,2554894042573668388
+085f93ad-b598-6573-5c18-e342946eff4b,3961960884,2741289999125655293
+36a912de-7b31-a98e-6c77-55fcb56b22fc,2827001647,14999851898956880564
+cb657910-eb0b-d3a7-226b-e756e38b43e5,3519206393,15653272054495714483
+f03e261b-14f9-7134-9ae1-f93975747311,1763728816,4536372099423409706
+8c6ab503-4b6c-973f-2210-ed5832c96f28,1206290645,8489561244744870356
+263045db-e4c5-7811-c4db-8386004e98e8,1235101587,18425468916979800194
+7b0017a0-32b6-75f0-e57e-3025f85e62be,3365682487,5164429244977682181
+d396037a-5bc7-58f2-e924-38ea0588c2f1,2317855175,9226151607583363183
+878c66cf-8424-1950-036e-69be6e9d194f,811537161,8384568214586556229
+fdc103fd-fe6e-f286-8185-1da11d5e68f5,2492039161,15296846298331829880
+ec6f435a-67c3-1b9b-39f5-5a59d6ada9ca,989583563,14305627397294115677
+7f5edb64-974d-5d6e-b12c-d73d6099e30f,161324507,13682861895214202438
+5fd8f2dd-595b-cc02-ddf0-f9844ef5d4b5,3206820214,3219270677356314285
+00671de5-8258-0438-15e0-e0338b15bbf6,3791005497,5152597926565868781
+62142e9f-f90c-2527-0669-e5f3eedcf79d,544352784,9465546488347524871
+7d7d3a89-a916-c9eb-7994-017a3b6686df,820318793,7702134750057690553
+70bd5864-655c-353e-842f-e08a1dfb5adc,309235167,17045155928468984505
+1f2302eb-b0f5-8536-dda8-c083e734e8fe,2211231033,996369527928380317
+6e46fc0e-ecab-b471-3ef3-321e08ad4157,1437698847,2723273683364479498
+e2724890-ccd0-bab2-b8e3-b2115410d6d4,4135210755,871323094655784909
+2d911e94-3ba6-67ed-f646-618f043ecb80,3702964162,3520693636286344173
+1b501f32-b6b9-26e6-ab14-cd874fe6672c,20769694,8948563985346941505
+3fb75003-f3c3-b5d4-255d-0aa9df286820,465191199,4951130557952231001
+2c3d4cb6-88bf-6ceb-70ee-81239d4bda00,53097356,16790605729701931893
+b207cbc3-b77b-f95b-1e44-c2bb188f3a14,1362935191,17130048672950796776
+976fbb6a-8b16-999c-30e2-205928f893c0,212381479,1965773178983695063
+2112fba7-bf77-1822-f907-4445e066444e,4157001100,16174439833001288448
+a1486ff8-5abd-c0ff-0314-275869075017,1084573862,8678591072923897463
+0ae4e86b-13b2-0ad2-4e62-ae7e4d011259,932618568,14368237602090868675
+c3e9c990-a7bd-db71-f0e1-92d3117c3982,2403745566,2024650478944476636
+75fd1142-ffd1-a154-e86b-371b6a9b62cf,3490568181,14926135041981165309
+0d4760e7-1ce7-c316-4d39-07991300b486,3583405380,9208122945649908816
+97c7e931-43ca-6425-89cf-2078bc499acf,691067588,3920570425284184835
+da0bf3e9-5511-cca9-966d-7579868da693,1809574011,4573839164112148203
+a7234dcb-99ea-032c-1ac0-6ef02dc81d3b,3948583773,16415812149358033715
+5b06b125-ab86-e321-d435-939140c8f6cf,531157693,16865742510761225833
+9c8fd8d6-edf1-5413-7c47-1ebfc07361a8,2531647054,7188780535739307804
+ec8465fe-a9dc-9c2b-5009-79467e9d5cf2,383610627,8269200729716430880
+b50a442e-213c-72a1-e241-aac735b76a8e,1042786453,9438277870192867485
+f8a948d7-13d9-e3a4-932f-cb6e7f899705,4200449631,7044626203975613158
+994dea0c-2a51-d2a5-bbbf-c845d620df58,1767362555,14742989896649394546
+e4e50c94-08c4-931d-6d27-45f8617bd9b7,3983213618,7167760178901973095
+26f08be1-0d3d-f284-10ae-caa86cc3b2a7,2304286784,2821000093411111638
+9104889d-accd-665b-f276-ebbf6d832991,3822266944,5994722954882581285
+bed9fb14-8e4e-8863-734e-d21c2d3fc3b0,1151840900,8833860035798090170
+5030c312-d756-f3d8-3968-03747526ae72,2990645936,9223591114075685721
+71b14b95-67f1-65e0-8383-b15cbecaed1e,4289556397,9227506457951095048
+09a5ae10-d5db-5100-b372-01296b011e51,708418315,14730899101525520152
+a3523237-9a35-68ef-55ce-f6f3ac905631,33044893,320716513226699074
+16a05887-d02a-41f1-d18b-762ed4fa7038,494305268,2097274345357005688
+b683ca6c-7a3d-7878-6950-95fb985d2048,1091191679,7155422210608104772
+18caab28-7661-d3c4-4f7c-710c8fa38768,3802054539,6015304386351315030
+4cd9dd6f-d63e-6923-9364-d6752dcf7dc5,1607885757,10788568210270056056
+f038300b-6b25-8796-8009-70499085f6fd,2576445460,15934848067633198945
+6de923fc-e45e-0575-fe51-6fa0a268023b,1356939838,18420302610741890052
+cecf20a3-6936-90e6-c2f6-6239035ad330,2014801240,12896959631997000760
+91be3ae6-30e8-1d0b-2729-f48dde702945,3011299049,12186497978885718686
+793a9918-1d41-242b-c1e3-948a9021c279,1744999683,9834970940373938995
+de06aeb3-262e-3ff1-60ac-d263f65b867a,576293005,17961471326946737140
+a2ccf661-b168-4438-2988-bbc87c0f096d,18316557,18425807077015852920
+27eb6c26-214c-8dcb-8f17-51fe8c23f3b8,3896428828,15576679626657275510
+175e7780-33eb-bb2d-c5b9-fcb2e449bf20,4119641033,10692420663703243180
+62126c44-d331-d4f4-ac57-ab65bad85c9b,2862512117,12659067875451552350
+f6f6b3cd-a4b7-4794-162c-93531bd6b4b6,4241227374,15634266560620172904
+ed7d8f7e-5b10-8f63-34a4-90581afe3203,318760438,15450426897336998081
+72d45e0c-c586-c256-0b20-cbf01ef6d558,809186559,8876347755020180343
+49e7e1c0-050b-ddad-2307-dbd29e47a515,1382445579,12851511627893021076
+a1e0fdc8-128b-773a-89a2-a39676b3a65b,2917485470,3887046669326434624
+f05394a9-a926-ee1c-ad75-1220ab22d4a4,2325003382,5983911018947704406
+4d7f79cc-bf2c-76cf-f888-aac4472174e1,3141295971,5766409636001940391
+e7e47363-42b2-3417-223d-30141a8b1330,95815791,4282755493525789528
+0e031269-5cb0-ac8c-2733-180b248d0b93,2899380875,3146034671083897262
+d7955218-b912-6b56-b240-e5f441cc2b37,367141531,11189925703768028357
+e6e36d5e-2d73-da43-be17-74c7aaece02c,1358814368,4490123883902347671
+255e0ec5-2e95-830d-65c1-2f16577ffe07,1048433537,13830268622893722490
+2682f902-fdbb-232e-baa8-6e417a00f0e4,3339984790,11998247993496252770
+09898244-c8a6-f169-3858-9372c030ec73,803514433,11251281510387253918
+cee7002c-c0d7-fa5d-52fa-1afe96fb4b01,1013480777,6097281080277866319
+cd7376b2-b9c8-aecf-5220-6e3ad5d47689,1155385250,572288641367272476
+e833bc15-1596-8869-5d59-5e5ddd060622,2286396977,12341949163427630478
+1dd1b0c6-609b-5c6e-860a-2c7c72fee6a0,51950429,4437013176789397849
+1f97c7e7-8386-edb2-e781-5b12f4af0ef6,3114121959,11489856489154192009
+d5120ea6-c3f5-a615-e565-94f7ec3424d6,2789308464,16449101346884750729
+c6b36a52-ab0f-094c-8771-009caada09a9,2237712463,5879332153314436798
+d8f5a777-8b80-e7da-857c-76d81cf51dab,4017675148,9931455982327351813
+3c198474-3703-4d81-44f5-b6c7c606cd61,1384527902,9950552091128017856
+eed6bf1e-16bd-21ef-0680-2f1df60fc6dd,1207129333,13732514764858259737
+8422f0f4-1ba2-4630-e946-52f795c39242,2983710738,3794256316372308349
+f2721db0-19aa-a0b3-b601-64dfb9270f65,1428092105,11651741239925345934
+100ceb21-b721-c7ea-d6c9-5cca256cb2d8,2617782893,142644920584511904
+d2158022-c114-6d7a-741a-7055c921db8e,3976932740,1735732564294771336
+0878a0a9-c014-c375-e1da-e1e7899d7594,891956025,1107099425559947654
+9ff21cd1-50b9-1778-1112-a0faa71dbc4c,2122156743,17810519479284216486
+d84735e9-3acb-0bba-7ea9-111e75e6a122,2450144762,5647502380613485003
+b6ee539c-44d8-3000-4e7a-839e659ac4e3,1969270271,3718226397771779245
+ae14cb15-e746-5c18-1c6a-83ccd7ddedf0,3533634885,10449282000619186938
+3bb33e79-0a76-6058-059d-657f73108631,1807692249,9688996195565852574
+f43d0868-57d8-740e-e17d-6851f2b1eaad,3297614761,11737373178147598087
+d1827000-b33b-b8af-5bed-af33d85978ef,3452239712,4147655275983912247
+c7b4b92a-e251-674b-e988-096860c28eef,2022384728,9351431950464796867
+532f00d7-0adc-4095-ffdb-6893151134f9,2341663592,14426411865971297999
+4192d2e5-95a9-c902-eecc-05beaf44fa68,4157512114,9516449890430118158
+a2ee798e-8202-7b45-79ce-a80555747e99,2266270911,13659638172137385833
+d56d5e60-a2f4-d2b3-d0c0-6de0eee6e4fe,1361125364,2166669109451703335
+67cb14af-e55d-b2a6-26a7-88fffebb1e5b,1451379534,14978347882339398479
+5eb4d8ea-796d-5e67-c187-18e9c1e1aeff,346270512,18096418264956027529
+84a4f198-8391-0a27-3834-3b401e357b12,3423993851,10278561053987692328
+13a18053-07af-889f-e5d0-5aa90aeb2f79,2053336907,17144890579302037543
+5a358013-f5c0-2ca1-0b06-ac2c2de9e3ef,3565197976,3822402278251740007
+afca12b1-849b-14b8-8ab2-d56f123dd0d5,3253845915,5677609394490618107
+5509b4fa-4d1f-2b93-1c59-25f23ab01d30,1804191020,8540185204243745233
+daf2774e-0472-e83e-208c-1e98f5afaba4,3578246278,14448265573179842261
+458bbbb5-fe0b-15e1-455e-ea74bd8406fe,2405717706,4706096520150683910
+17c3052a-3b69-c3e0-31f7-7ce639768f18,185261148,18018533900370474219
+deefb14a-7329-9f94-ae76-48888ac0942a,1188000932,8216563176295215789
+4a255a6d-69ac-043a-ac56-3d3105589110,1778556588,11605265613628170153
+2e0b2c43-9eaf-95cb-dc1c-ce8889c3b436,1355536322,10439346056987064946
+9eba1718-f32b-bb42-2980-2674c508bfd6,2793060145,3756625405052545954
+6fb7d137-8305-e1e8-592c-1fef91327fd9,4216348425,1603612124732894386
+b165b799-85ac-b006-c272-2e054dbd28fc,961085351,3025428323759812384
+64633592-7fec-24bc-a38f-f5c9c6389620,2680049934,170367100659572880
+266e7267-deab-77b3-0aef-993a092aec5b,2090360404,3147090887340363020
+c71c029b-568e-e421-e46f-4a0d5db998a8,3609120993,11892584147617743087
+35c25ff0-6cbf-f78a-7849-fe29411bf2a5,3019635831,3036792325555734070
+a8144d7d-ffe3-be17-6368-c23216d4ea02,3864379575,16119868849165560854
+dc29ac7d-77b1-3d1e-3fb0-3b59a0e854e5,1362117860,4553231483113150037
+3f099caf-9baa-4359-9a90-b6a25f3b1bcd,3314679266,6937496863437786222
+e86a6be0-952d-6014-7b11-3306d5af5235,175104534,2528495750631750851
+74c7eaf6-a64a-24e8-c321-ef5f9e649135,1588626950,15291406184189905346
+278dac7d-5c88-5e26-8968-c9f132935617,658958068,9839259191902887728
+99f5055c-90f6-8d62-0f6c-38b421ec940c,915905749,12998180478247145356
+48fd47da-2fdc-d349-080a-57fea35f3580,385068543,9625650713822164980
+dbd1b20d-77f5-7fb0-0605-f6cbdfd3b722,1927552631,15942705782987836495
+8fa6ff29-d095-a4ad-b2f2-7e65b3831416,789407970,9047518638954769632
+c64f01b0-e394-7ee6-a000-844f9f158f1d,3407334441,16474884357925624933
+3c4b4878-9f50-19b3-1c43-66db036443e1,2619881085,13223064388990627436
+7cf69d4f-708f-5c02-d0c7-a49a63fde8d9,2442437726,6901402823718251090
+62e3c3e9-e70c-d854-05c2-44e8847003fa,105769620,6929162588350168631
+238bc95f-4adb-ca1a-2972-3e4cf2d47d5b,629977077,11062161608226663133
+7d360099-1e80-e554-8b7f-0bb44830e09f,84091098,5960500247909704756
+501c9fc7-fec9-bcca-a934-62ff832ff113,3264388703,13167723348905528108
+d822061a-86a9-edec-7978-516eff707836,3840537819,13565931434178616449
+11c4efe6-89f8-19d8-1ed6-a7f71675c5a4,73199288,475703547514226107
+859bed2a-39cd-df32-9687-8eacdd059b0f,3187767667,15016384242843734553
+209d3bc1-5218-5d64-6c99-fb5840f92c5c,1593387708,18387205777264808967
+c29bb766-d7ef-fef4-4c5d-ca624e7c4a8a,3397626180,18032666804384260586
+4c126793-d711-e8ff-edff-64f91b9ab2fa,2827200458,2274652363367828862
+37a42ba7-4a65-cce8-68ae-a4d114f46814,1349007532,4284196227761318064
+8ec9a84b-1346-82ac-9f16-9b755ca87c7d,3621372238,7292711419019361150
+4c62fb0b-c466-72d5-9a2e-a756ac329dfc,736058438,15321922124424516902
+bf975a49-06f2-7e7f-efa9-763f86c8e64f,1223603944,18192702019970511470
+962421d5-9edf-c9a7-21e1-b4bb5d49b22e,1715640483,1442109295003679718
+b87a3336-ab0e-9a20-f6ca-db8f2217b46c,399945971,14346619877205905938
+1bf979ac-471f-d9d7-d008-b7d4c1f8e0f7,1731265901,15117429997949728362
+da56c46c-578e-2c65-10ff-09035272b394,3310831035,12487095976282613322
+120c322c-fb78-ad1b-9a22-ea2ed9510e64,3084317872,8455175447178367847
+e67018ac-d46e-e6ad-12f6-1fde881a8536,2233655355,2661037625370782604
+1d1d95bb-d3fb-cfc2-beaa-354080d491fb,3371332659,9710585441630653218
+b1088590-c686-a950-eb11-87645122fd23,1861448949,15521962830998201551
+5e50d45e-53b4-25ec-cb5a-584d9a761a06,3634280896,17012173299077782396
+9e552592-116e-7d92-9b51-d86d6f7d6aa5,2449466864,1488744027596016622
+d3cc3396-af65-d6f9-0712-c5ecc588110f,3840094074,764268879989961283
+0f38fa52-6d6a-ef6f-51c1-5e63233965f2,7560012,4872081364477740386
+287c2768-cdac-c8d6-3c89-62ef81e47895,1632669001,10545033474946993714
+44ae91cd-95f0-5f32-ff11-ff17cb587015,841277551,1137874112282746951
+d3b553ef-6c31-27ea-0454-ddd19c9d40c7,2986541490,2561144491961801582
+0a8f67e9-f91d-df9c-3e4a-89f32b07557f,978259643,10923300044548461521
+a5919916-387f-4e1a-8d98-91998c756f9b,2552037801,4903160342388788001
+b8d6029c-07f4-50e7-66b1-b35ec14187f0,2875889764,12755667104638507651
+cbe24cd6-2be8-a2ea-456c-18d367017640,1411244502,16010056885869340759
+c8ddb16b-aded-f969-e3de-8ad227407982,3796050810,14543958501327421967
+60da4113-ccff-e96c-c57d-ee3d936821ea,4155538199,8155000417755081840
+97e3bf90-e28f-8411-8bea-e7e52889237d,4281707376,7770227810114590396
+64cb3f3b-f06b-758c-1bc9-4ad96adfc8f8,1466031085,3951852412507105217
+af2dc9d3-9a10-b8de-43ad-cccdae987447,1192825467,4160241771978572546
+8309e084-3589-6f6f-683e-79befa4de541,3702861636,8000736789371258368
+c251ab73-599f-3a6a-65ad-45e164cff135,3508670096,1905245585934742356
+de413f6b-51a7-2a31-809e-768db766eb9f,1317017626,13873227507348297731
+dec62910-914b-dbb7-88a5-2a9330789b0f,1249479045,1142702458510880391
+1f9e39b0-5146-3a76-cced-785ae5430b3a,2698614027,6908873765102957831
+1c18ab1b-dfa9-a7cf-65bd-9cd0502bec63,320631199,7492134065448517060
+9b0a3935-b72f-95d5-0513-0ae376e3ab44,566865688,15157482385109704280
+9ddafc91-f0a5-c28c-15eb-80b9ae54f640,918724170,18384539995409855901
+1e77ae5a-70c8-537d-cdf9-db5735ab71e8,369997086,14332629122686610989
+fc58756c-af2b-5768-7e5a-048ff753e7e7,401372889,4371346684737798192
+5f7979e2-bc3c-a098-c1bc-c14788e045cb,561861098,3010038800406649904
+a5ca0937-82ef-bce9-37c5-83ec0e2dd682,3804817697,11431237767588380938
+0773edc3-754c-b529-ba65-268bf307a1cf,2813242954,5737319616840758150
+c9c4a151-983f-4265-1a8b-3e1441c04688,2188196125,3467967681048650886
+56f17ad9-eb19-102e-cdb9-9c43a3ea5e35,3889423922,1423044693411533591
+f00c489b-bfbe-ca83-a106-1e434fd08944,4167803439,12213983959432852060
+1e32141c-0ff5-c966-89ce-5642f1690cc2,3185750566,1378528508062162302
+48af00d9-b755-ea6c-689f-866dbd43954d,1893353589,1142952205969512730
+1a04c3e9-6bc7-6c17-dd52-14992970556a,1611598943,17806611612535073671
+4f16c8a6-bad9-f761-64eb-64885264c539,3608443672,4010994830594366675
+52ed888d-3b49-d361-684c-861b6f47a6bd,2021558732,11340344794471611435
+76c1605d-62a0-8a1f-680e-62d74a1f2011,2362702547,12131944618192624322
+8d5e22fd-18ba-566b-da10-a1d72642ce6d,2993780282,5721292223981824595
+56a6ac0a-28ab-ce8b-e997-655df4e8204a,3640102269,8519211887151307508
+8f4f968a-9e0e-f694-bb76-36f13509dc59,3056353386,14356394258863341704
+4184ab8b-2300-c7e6-a444-ce3c3c8f7921,944645474,649952069554042418
+bae655bb-3026-e136-7abe-f12e387486eb,2235257991,8301144152297087170
+530f05cc-3fb0-4d46-c2f9-f2f83fd92b18,3651404478,551617027725692520
+cd320b10-b0d0-a796-1c03-ac733d7d7b13,4201014472,7436612462832644743
+d9d5e4ae-4b27-e439-116e-bd5669472e1e,229000345,6953608158561982829
+d3543707-e448-e0b0-3184-c78361284aa3,4098210515,10653094000547103224
+0c1ecd0a-93cd-9669-bb6f-b6326759db63,1098195620,7106749111007898519
+e79417bd-1f4b-097e-0612-d384978dcd0f,986322665,13359978868034050241
+13dc5f6e-a561-3441-4ab9-8538022e23b0,2274425096,4977474574823943219
+c2437e28-c6ad-4f77-f15a-61642976a1e8,1363324999,13379819719515609258
+b8b0951a-3892-fd39-26a0-7492041a2f56,2690225216,13422711694630538869
+1709a3a7-24fc-a706-bbb2-dd3848de3fa4,2147733643,952771816587959578
+e1156f7b-c7e7-7538-3999-77ed4fb1d573,570119923,17577151342519055139
+d8651f9d-ca91-abe0-79d5-8547ea5f9679,2328409680,14038560168245087233
+36551b95-2c38-3870-da4b-e51ed8c32124,2528664647,17384468740038484726
+9c7c5714-b97d-9b0d-b740-8144c6d77864,1654510917,8243816944096152681
+ff8942a7-328d-34d2-0e3d-de223272c229,2674075420,11496489705010317677
+44f2b34d-08fc-b4f6-0d66-b898bb784fcc,2412068975,14053187514789172992
+d1755b4e-18e5-7485-5542-db985eecc343,3873064489,287485037067950279
+2345018d-e31f-c792-c20c-91856c19bd5c,572464667,12468363129427918207
+28430760-300e-75c2-e356-9ee57757f899,3820189987,5009892472451136836
+07f44c40-9245-0119-471c-1149c22735db,3875335532,10387296476373991364
+2daa6302-cec3-b79a-5b81-faccbfb5c7b0,1319769984,8202979329616834301
+796bc789-cd92-7c77-194f-b395454658a0,2379086698,15565275257156437554
+393a71e4-ef11-f693-dca9-dc1d66590e2b,2916912636,4213709835794814674
+d12d2178-cde7-8b86-ee0e-80bb91dcceef,1131724214,10100172750947512490
+22173eca-8ea2-7ae1-3bdd-e5fec7c7625a,425855180,5471840293053282424
+65f7fa46-e039-39ec-bb44-f277a7af55c5,883974307,5357699072407655247
+fc6732a8-4442-4225-c428-d9d26b9d2fa9,2217410052,9339266731988841597
+80157b33-0f92-91f9-841f-75c867b0b0b8,3168904750,9439757626726840265
+c701ddf3-904a-4892-9b6f-e2e6f1ceb27e,882653134,10019181761293893044
+d72a843d-fa06-7911-00a0-009ce82e9dfb,1884690316,11808659199801874656
+a90841bf-b34b-fe6c-0c70-5134bd9fae36,780984230,12998678138158632346
+0dd67631-32cf-63b9-f91e-eda88006d580,1523108168,6763455914949896146
+a6e8cae0-27c5-f1e3-6259-63faf23216b9,500651029,16297748519775913321
+c4155a86-8e90-ffd3-c709-6d7c20b140b7,612956354,13492756396433135073
+48acbb1e-04c4-e02c-86bf-2cea0c560a7c,872497847,14675090716505849936
+c3eb1619-a3ac-cba7-2225-160ec47675e6,193017116,16232856555857568103
+0ff8f7de-a6f1-66eb-03ee-46c8d10f00d8,3489682143,757785401425238862
+b7a35cb7-e8c6-6256-e5ce-a706177e91bc,965608619,615468825183765332
+c2940897-6f8e-3813-b56a-9d2380447092,248021099,13832763793673689992
+92f5de85-373d-0c73-a0e5-67dedf8b57c9,1586730236,16285666346699332626
+7a5114f6-3771-9e12-c356-bd791497085d,1798529135,13618522511807556816
+9cf0ec61-24cd-9f8a-f89e-ec4ef1c57723,2091314457,13043176160955340614
+c1a18258-2ba3-c1ff-cb60-61be9c74569d,4021007359,5362502285666292135
+d6be2a54-e0c4-f0a9-e131-993ba964a127,4078112097,12187817117481432084
+a70511c5-b0d6-dbf8-3fd6-f04ecff18a3d,164909970,16983555283645277422
+57729506-e2b7-b41f-03f4-5fd1512797ef,3173531349,4797022222817504116
+8481b96e-300d-0d6a-e893-d239ec3605a7,690367566,5293519767593399921
+8d2a70a7-30d9-ae66-e633-1666ead1e2e3,2256733885,16149633485691391796
+7bd18347-3c2e-c717-5224-6c7353606295,3690267265,1556171481011548594
+9a7db8b8-f3c8-30ae-abf2-ede1d0348c5e,4091565222,13930260261909173768
+d8bff460-9e9f-11e6-228f-6aa026cfa759,1926878520,1452265071032165877
+27983892-6059-cbd8-c0e3-2580fb852cca,1043553530,16503957445890888856
+37dc079a-eb5e-8f1c-28b4-d9211cd6a96d,3681429825,14710708682989553529
+761acd8e-f65c-0edd-9530-37cbd45e4471,307591943,16860838065831836004
+504cf1f8-f0d2-f6bd-541a-ea2c99a90ee1,3471066735,15264947808769351111
+44939540-ceb2-3c79-913a-eab0f7f21a26,2701252569,7426872013269359906
+b88fe517-8f76-8994-9d58-c4b2c843ff38,118838394,14218610866518576201
+b18f4524-64b5-1bf4-66ce-05360cfd0249,3860258343,631217520104937663
+4c76bcde-729c-d63c-0175-8facdc6fd83a,3973583384,1179688537774621031
+2f5858bf-e650-1a8b-3d9c-614d4f55452a,3789066618,3674404313492407719
+6462aaad-596f-0324-e40f-a255653a44ce,3251887426,17345174727090821910
+138c7964-8133-a5e0-b7f8-cb4b494cffe4,3979666628,236578472244770723
+271b17f7-e5a2-0327-598a-4cae7bc237a0,3552932438,9572328917203032242
+03faf7b9-f36b-cd53-bb17-5e31dde218e0,2751867049,14081545339161366583
+1fc542c9-3f62-cf64-581a-f02df6254983,2478989147,15724057692051350231
+88b365bf-440e-fbb8-0f9c-9550e9fd788b,2702829824,1833901857268259912
+aedb900f-3085-6157-0df1-9643831bd2a7,3532009829,12914212524606041388
+badded7c-7427-bd62-73cd-790867b6d91d,1020447757,12333155111021356980
+59c9545e-f123-cc06-72b3-02b56fa52e9b,2470165927,16836224789257071318
+0ef6868a-2f8f-59b0-4a0a-0f9796756617,3487218581,3148202600977148009
+125f96d5-d0c9-c700-b59e-b88bdf341592,2449036388,10997753980493513978
+b3490111-4268-9542-0fca-50519632ac36,3559483927,16326283365338139344
+686c3650-d422-70ad-0ad9-7894e6086398,3759289816,13102386068590311368
+5a602a74-ef53-512b-d305-83069cdeb514,576863541,17503703178287436956
+92ab031b-2ce4-d4f6-d8a7-acedc667ac00,2320366374,5760462929069853340
+3dd444e5-a341-9355-7887-46e345d652f8,3089927658,4508638247463496248
+c0aec33b-a6d0-f878-eb6d-89220c0784d8,2068540486,11276217001790886862
+41e60827-a1f4-dec1-8679-95466814885c,3889894870,15036876451691543075
+f98dcaf2-0ae6-0a1c-a993-e22108520caa,1083871785,4809561191678390068
+52c033f6-3fae-e7c1-2e4f-d0a6a8206930,1586191638,16561733380915383290
+c6b159e1-77f5-414f-8564-b4ffd98ad356,1847068866,736483401590827067
+a6568a0f-405c-8f86-f8aa-aba5d6b1f04b,3957522381,3761715683161877991
+35f7a63e-ecff-292c-df95-983d13f6c25e,4069895093,6089283098221450819
+b9d692db-8ead-3d05-ad9e-b10406b07251,4223219731,7976914068434470175
+4725e279-e281-1dfa-6893-ef4eba7ba91f,3156155786,1138714498064457547
+6d679523-af2f-625b-af85-66d2855c9fb2,4148196141,14900266767165290787
+18c56218-1f52-9897-db9e-2434e48492b7,3240630376,7831175292238682176
+834c3edf-2e59-18f6-b72b-1db2c26af9cf,4007407532,7822054403422583395
+94a40345-a168-2d5f-2830-55c405c55733,2469942074,3272524039503299589
+fb001128-b8b0-fa0c-82df-58d67d21cff4,775064668,5585666442075113093
+3bf304e6-8ab2-3459-4171-b08663e89826,1463141944,1320003143404050417
+12a4be58-5ad1-605d-9d18-66c8d99bbdd0,3246590448,4666226961981080186
+57d2bd5a-0c14-68ec-d20c-bbbae0563c03,3082813178,5510897619058486407
+e4569d12-f0bf-01ad-ba7e-02c25801c0d6,58997225,3668569518651350419
+cc622ab2-7162-266a-ed44-560b850cb6ed,2946137627,10674323611420756139
+9e99593a-0638-bc17-bfe1-1d564cb30af7,1439612857,13284487461189901130
+80ba96f2-6913-a453-26a1-318fa24154e1,3713758066,18341640362282142570
+f91561b6-9c97-df8f-df3d-6c2a4ddee7c2,1612728254,13998451068857605562
+2ad545b1-e298-4e06-ffa1-48cfaedb2949,3812348440,10466733574913393795
+43c24692-b41b-48c7-3ebe-0fd13337b7d6,3143063716,7082498040946280780
+450a45a8-5c4a-073a-234f-e65ed2e868a9,489044012,1914687782418947831
+69e7505f-36bc-a984-3958-b2638bba8c75,2675220925,9205339006259774781
+9df89a32-2776-a080-2890-e93ef550933b,4174767116,3805506449792167773
+7fe7e9fd-136a-6848-29c3-442fc939deb7,3560165208,8544033934761239680
+04b5ac71-d222-09c4-46d9-dba2eda57825,3537600486,15515282476358042388
+f23891e6-46b5-5949-75f0-d6194dfb049c,1076655573,7929037563621868545
+9ac6b50f-4ec5-0eb5-c308-a10ffa7f5198,2493491533,5283789135755298768
+091ea86c-9fd9-b605-7f4c-c68a27374754,2151826667,638175179298203339
+e719b126-b4a2-ebb2-4d92-e58971a589d5,985609467,3478285008986213442
+75267c70-555c-c301-0c94-b1e8e4e473a2,4125286029,12897191974605535737
+afcb9e6b-b187-0ab7-2a42-ecf867f4d88d,454600392,12345929498706233677
+ede77528-ad0d-5f7c-3565-c8d82ef7c780,3025462667,11789312580030681016
+7ef3a089-1833-3122-6583-904f91b2f03a,2948973224,6517049884856851525
+9b9e3a2e-463d-17be-8584-b2160a40f5a7,3407414629,14768613355041465542
+01cdc6f5-ec71-e3b4-b88b-fe16dee0f9fc,2785954567,17197113258776803870
+a7c51dd1-bd64-ad5d-b39e-ddd50a808e29,3475226115,500430760498228280
+fb0199c4-ac2a-875d-b4db-79e85cb1b6ac,1385146380,2221351036180929582
+8e56f517-1e6b-c227-ee50-b5ad028f5865,1007862997,3874899868507189948
+fd2c3e3f-e44c-1369-072e-a8bee593ac70,112563716,10586991266535663837
+2d0b852f-164a-8d8f-60c8-7d5419df8c5f,1220248902,15464455167847053479
+a8fca258-ea5f-f58c-c618-9b57ead3f4e1,783569546,7666046455593662490
+dcce0f33-564d-f9b3-8d3c-34ea23374de5,2540873377,12270364853725697037
+2229b957-3296-45a6-6b22-ebfcab34ef85,281617584,17075725378068264290
+64197722-d4b7-fdc3-caf5-e4e0c35e837d,2925459525,13701901880153590260
+ba11c227-9c77-5fd4-c1b1-ba1236a881bb,3999791333,10847825287352257407
+59150b46-8f3e-af2e-d0c2-5ae7d5ba4d89,4266110151,2633788530216872667
+22189342-a7b8-46ee-aa20-ddbb715d0607,3609523819,12246158533246687227
+c7d840c2-ab75-7c76-c88a-42463f748163,3435218726,18355697960334235024
+7bfb1976-203e-ae20-d6de-5f0f129eea2d,2291117495,3559786691030823178
+88628bca-c3be-ea5a-4bcd-ab8d5b74cde7,1124794574,5723667169019353015
+3cec1267-9305-bef2-d51b-e485dc13d5f7,3785744329,17129438683029646760
+2502e2a0-4a71-a1a3-c262-c8038a9f6f43,4057972278,6758108238609923533
+21e36ba3-784d-db86-4757-f146c08df5d3,4260433444,16541012652101024538
+c49f3f50-5e0d-2e7a-0b57-5e94c2afc21b,69849077,10000486600680398581
+2a87ace0-3a4c-5981-75a6-d7d60551b24c,2556889841,6811239013929221443
+48e930a2-ebe9-4808-7936-8e363709df84,868570226,10126322116977677024
+56eeabbb-50b6-361a-cf0f-012c43def567,51951281,12459202786310045155
+ba485b85-1aeb-b9bf-2b86-240a42edb413,833840252,15543454455726697746
+3f82dd4e-cd99-2ff8-e7ab-b76a89c8d4a1,3567984711,403862171537622382
+08fbc03d-b2ef-32d7-550e-b53e726d352b,3133536604,18239863303099139581
+c8153460-3176-c6ce-dcb7-186dd29fab90,3261327005,1845441604179290222
+be58dad5-769c-6415-e8a5-46784ccf7962,1000904981,9246113322060766800
+e8c99df3-c380-2e10-df7b-16b4d27f3e91,593567293,3515801180537301395
+278e95aa-9167-306d-9aff-1bd06b9006a1,3539571831,17899618256755317068
+95ad5c65-5b66-9ba0-17c4-9a3be1af855b,2718252362,6120725022484457574
+5e65b9d3-4f54-ea24-c72d-93af8317cdb7,968579335,15836290514091948970
+b8a79d02-9030-3fa1-fe15-fc7c1f636cd2,374055573,4678316886978719965
+fffa1d16-72db-f31e-6fd8-06507bbd1ccb,3342036266,6047054268148296633
+26dd2505-8674-c1d9-46e2-ec91d3162dcd,184472902,17085439207840671532
+501386f5-6b15-37bc-2701-db728e5555f4,979412718,17991904692777117644
+12e351ad-9a86-7607-b9ce-9b6e8622079b,2248848034,6969680534558690555
+b4da30de-d602-1a92-e55d-96fa32e673e8,1788692267,14945228647806626942
+fcb96cbb-3ad7-f106-f536-bb60287641ba,1755005126,11355707134473974215
+3e959405-e2dd-323b-d55f-f5fd8104db0a,1202631090,8935415973373113626
+8cbfaef4-f87a-f145-e24e-fd113fd7f6c4,79798399,4146424526768794835
+c594ff30-dd3b-6d68-5704-203e3af6f465,4179801147,10804597980344461065
+e9766e23-404b-3713-608c-4655b69bbe49,965354368,10343688952663217516
+d70bb290-c190-93c8-4ce0-20377353bb08,214812937,8448937051264204537
+5364b410-cfdc-4d32-290f-e8dee7bffa3b,835946632,5175853805509256259
+8664159a-c450-62fd-18d1-84797ff90863,3461710210,14688986709295285404
+a18c84d4-6480-be91-9adb-a4ad4f47bf55,3241878185,15494425461712303675
+c8faea59-5227-3663-3776-d3dca5a272d1,1258336266,5088520073156930709
+7dfafb90-347f-d166-c2c5-39aed232eeaa,828213437,7524418826270630989
+a12e4968-1c96-217a-fae6-1ac62e78fc05,1572518513,6169455207405013104
+08b84ff6-c1ec-856c-ed97-a4c78b2a4b7d,696589907,12145871078154622829
+bde37446-2f76-e5ad-8ea0-e8174cfeedab,2123396333,690039667393763350
+97063237-5cfb-bbd9-29e6-e6d1c191fe83,2183124650,5217882328010990923
+e8dd3f91-233c-9467-4199-4f60742139ab,576518035,11714371035122699631
+3532a777-ceb1-734d-e38d-a2044e82468e,2919109308,15553757780968792952
+f08d4baa-879a-d892-701b-36db2e38469d,237435049,9518981913893482585
+09319e41-4578-8b6d-76fc-a1e140f4e2c9,3883834519,6965321058034016339
+0a354298-f3f7-105a-7af0-36c99e73a6fc,1449427916,13837367737119027283
+77132da4-39d9-b874-1878-1e3877e27e4c,1521762280,531792747534174079
+3471fc37-9854-d643-19c8-d054ef5f9fd0,3775687362,15473717964185367358
+0c4a332a-ebe1-1034-046c-e2b785463307,2135553594,13232183554420957095
+496aac6f-70ea-fc81-bd0f-d84f09862de8,2343940523,5631337639284058757
+4714942e-5398-172a-6805-07e3c02405dd,2673500385,16117876509297626665
+d85d6c13-bd6e-e866-57ef-fc0c01614659,964971720,13145511214411218159
+95c7986a-b1b6-f39a-c868-1fbb24e52c2b,3320826875,14616571220706292137
+0907ce60-a29f-f8b7-8570-b45183c64103,4150662178,10157962145165916798
+af1326c9-a396-050d-3447-62eb9864fe8b,184038505,10060857176571581755
+7732be2e-d247-c5ef-1d66-459dfef82da5,3254003628,3863773386910704504
+b907c93a-1c7e-310f-b434-f4f27a52c955,2428550128,16953137804138647145
+3cef26fd-39a5-42d4-731d-062aa9d9b7aa,2848724262,16621436692433438740
+a2b958fe-a711-88bc-7e75-26462609e78e,3338302640,13810556812686575697
+a15a99eb-8e07-f71d-7d83-25d95673afa3,541880066,11682529948072483562
+c824decf-43e8-205b-ebcd-8b32419974f5,2600255713,6767506563865639057
+19eb15d2-5fcf-cc22-cef1-7029adaafcb5,1269984827,13533986950082421869
+13c2b968-7fb6-f720-0397-eb0952fd8b2e,2257383509,2017678399613796714
+35306915-ff85-fb8e-81eb-e9c6aac0dc8c,244042689,15779041189490456679
+42f2b77f-e7b0-6040-ca58-c0cf21bdf9d6,504376027,4392818573592286086
+256000f4-5d83-a3be-ae0b-95f290492be8,851916479,6069084395037400505
+020896bf-aac2-e9b1-5e8d-bbb68aacf3da,1167246563,8064822072777376510
+96f3386f-4633-3371-a285-ffb7dd25000e,1514605761,6433776319025123885
+6cb83171-0896-bacd-20e5-29235c9e67f3,1929792806,4050445290544844769
+40a200a1-510b-09c3-409d-a9d9ba796c01,4076560558,6779090810244675821
+68947a2c-eee4-0fea-158f-2d95edfab452,3401812014,1309437399525738167
+0d957989-3057-369c-af85-2354d97381a5,625311147,15963802512837804222
+1972ade7-1a8b-f1cf-3216-2c639cd47b5d,729014375,16341162601091159251
+db6ce3de-67d9-75d1-bda8-1c8c83e62ceb,571479838,13173155592831446285
+e2a2da03-defd-e6ce-cf0b-de00279d2a9a,586270724,5070173024366545157
+e797cc38-0c04-cc0a-bc63-f01b295264d6,417292875,11020967106229445778
+93281807-3270-20a2-8f19-bfebb01e6e6f,2102091710,15974451100737038889
+291982d0-3592-64e5-0110-3aeb2395e429,1961827092,4508704727230725004
+5e6ba164-c955-0deb-4874-151a8f55b761,1857994910,9912822939888729990
+be0ed16e-900b-6cb9-b19b-ab271df668ce,1192940265,2065114307935873139
+1c24e392-1fa8-1dda-99c9-6c350ac92b47,4175943848,16999358217312090666
+582338a8-2fce-9cdd-be13-a2f9ec3d3235,1674991469,6270373391879973313
+216b802f-4092-48c2-b786-ddda6b853110,1348231135,6442858283810644036
+a04bb8ed-3156-e0c3-e34b-8ba62b466e64,2691940993,12028005715002405442
+ccaebc1b-81a9-1e6f-02f2-52b1f9fbb10a,2055341451,7184879103067174850
+c365ac65-608c-b3b5-e220-d6163cd6929a,158019296,7733972404058718285
+11d07a59-90b3-60fd-1d30-93b5e66ca8e9,3528288896,2515828857949129938
+6b3f974c-61ea-f8cf-3e3b-aa666b677e73,1894893837,5035020148474856899
+f124be54-9779-0b7c-2016-8345807adab5,2985247480,3845707665394916687
+6051d2bf-37ad-717f-fe08-6f55deb839f0,991005940,6482262646424852403
+c3fd9760-e18b-c9a1-d71c-3810f0e5fb4b,2327726056,13122934623729862905
+17773f75-3d3a-3925-1161-e692f323f291,327480668,1725877586563633334
+3e6fd80c-1b70-a9c9-a2f6-3c12c8010500,1033081485,1888044284767406951
+949ebfe9-d8d8-4f32-e2de-55eb2d8f392f,371407036,11733622616995854087
+af988720-3f0a-8407-ffd3-e2b54a0d17d7,3779482602,3647020358864225448
+58f921ae-79eb-e01e-bef2-8f8d1331f414,1192662723,3389117774686598266
+f5008fa8-a6b1-4285-7767-5801721baf23,3586223673,1194423776671775902
+ee6e3dfc-237d-f3c3-b490-04e45f78e12e,2680193572,15732476330985878050
+46789fff-28ce-d6c9-b046-f4103a71e1cd,1204319501,5683219266259311444
+450dadce-8b0d-6f9a-64c0-52eb4bdf07fa,2158241608,8885240823553459138
+122a1621-8051-51e2-7787-215161f6f40d,3087896821,17883343807564930716
+6c61153a-c28c-30e2-26c6-6aa7a37f17c9,1885001423,16512803216514207926
+1c02a453-30b9-bd09-535e-e11447cc404f,3213754243,5640886641389948561
+f82e9660-14cc-e0d5-7e9d-e101f974a687,3723148091,4975179029733815076
+83da9a85-c0b7-a214-a9ab-b4ecfbc779a9,1407070451,17904510966328970980
+ec2e3800-6ea0-467a-b761-26a9b62c08f7,2856241570,7756499595809984321
+505a2f33-ee50-9472-2236-fe6e90a65e3e,3189453661,5358794453534860397
+9e4c90f2-6b2a-2253-39c5-b35fca605f14,1759496143,1190177074757649862
+63e9a3b8-e4af-df63-d719-7f932368e519,1778571195,13955420829331750385
+966d5cd9-e844-5cdb-4ec7-33bbba5bb8e4,1594907095,8176558327204665553
+eef0d82e-bde3-95a9-f2ed-fbf9e50b02a9,1473994192,897788740326670177
+d5479731-eeb5-22c0-7749-bbbf22f1bdc1,4132369084,428428648026120367
+17ddb03a-900a-7ebd-7a5c-7a003f5f1389,941528806,2294665920799804619
+336bbae7-59af-1d5d-ff39-d7471de675d5,1077189637,17900224680515057642
+5c264f23-d2dc-036d-b12a-ce42925e676f,838955335,13985151679476151324
+c1395e5d-bcf8-fb88-c264-3dbefdc99483,668967200,6115574565953434125
+192aa353-f46b-1c27-9fae-2ac4d4d6060f,4249625058,10222206194559675707
+e2823c76-332a-49d9-bf48-c7c276fc7320,2445405203,1547835114020251047
+49e9f76c-2aa0-31c3-f342-c7a6b4582576,2862607871,3395265497585942305
+fcf89186-9a04-b7c2-2510-41ca73e1ba3a,4092038546,16426982324575355659
+8bb1fd64-c4aa-70cb-26bc-a23ca09b57e3,3893844737,10006803238086662638
+f89e790c-0ce2-762f-257a-85d6289884b0,1068731523,18409149323511684352
+23afb6f0-7f18-d289-996b-d796f7c4f663,745873767,5978825775676441090
+6fcef9d1-1550-ec1d-3abc-e54a3d1e5f1c,1144781129,7624922766326181937
+dcc81516-7274-e0ce-bc3c-c48eaf244a68,3756598359,5982732627762466782
+052bdb27-df67-2c61-b065-0df4f3136c58,944756954,17959421265232588256
+286375a8-7683-4928-3f70-e2a847f9a206,266409438,17404161716930764107
+cf6d7e7a-9599-3e38-acc9-4499c3875bad,1628318715,4797867636020832211
+5df254e5-2f99-b073-9f62-ea479bed9ea2,2399977586,1877308580051758817
+3bb879f4-ab61-b24f-c848-8db881e7b5c6,594370426,18003333663755825607
+75682ae9-7bde-ec50-191c-5212568017df,4046240975,13300088167023544815
+dcf17aa5-8260-20dc-7114-e69b30a5a2d2,586160995,16276675881560541050
+6710a201-ec06-9384-f108-cfa87e4cca05,2652540570,237514421149957130
+afcedcb1-7524-3e58-7189-e09aa3ead5f5,4061984664,5616675577355662504
+156228df-331c-c9f3-3bf1-4fbb02db8e42,1729221826,10467909149686164423
+2516ab22-14c6-b055-b9dd-9e8c6f02a1c3,3798477731,17277592141659325865
+b4514712-7d0f-f617-c0ab-d3a4d14651b4,931885338,7263832878596923302
+192ebd64-4d63-54e6-646c-4577d33afa23,436690012,9081943740514036335
+d13d62be-d0d3-99e5-1b7f-c25984a66d9c,1899518614,7957869958332931441
+ebc0667a-a938-c0c5-e22b-0db6ce3ce3a1,3744648983,15190728425287624808
+9e7a9151-165c-c5de-d1b4-6e9aa6d2bd0d,3107991341,250082313142408444
+1dfcad86-aeaf-34d0-4c25-ae33a8f20712,4024892186,8268860400162315566
+39feb499-b9e2-39fb-8278-82423f41dd12,227425142,8809048457887792333
+93e44fed-9f38-adaf-4759-2b138c1b7531,2923231297,6866275216059703293
+8d48214b-576a-f686-38c6-2b29548594f0,2947128894,12468506184945959013
+80279d9e-75bb-7d05-0315-2d7060f05f07,626997016,167416602007265907
+fe377bb4-8738-d7ea-324b-e5e8380fb678,3514487537,3717988443262316130
+20fad491-3dfc-a8c0-5315-76dd3ad416a8,101424074,909505246745766791
+1ef196c7-9be1-fdc5-3572-759635b17d74,2331796985,4766903483921103344
+e5a8df55-94e4-b354-8ba2-b7bc889391f6,3595126771,16558061868382269555
+71d1953a-83b9-74a8-f078-379a53db7cd0,798657990,3276687687165708699
+b7a78a31-6ca5-c03e-87d8-5ef1fecc4bc2,1748484844,14117404059865888262
+087995f2-4583-1467-d6f3-927cf700d0e4,179688572,4994420194940221450
+0718c9d4-1760-d13e-7657-a2250dd90dba,1853344049,4497452641689711906
+9448ac2c-30f4-705c-0fc5-384c0637eb45,2224708635,10130331466950897811
+cbedfd9e-a489-a792-66ab-770d84d5f290,1468603984,3880819366725710860
+36c642a9-5d92-1924-45ef-9e80a209c138,3636824687,2008710275517689767
+82056a7f-8858-30ee-256a-e7edaf948749,2180451990,13660252143017415730
+c74425e7-4bd7-81fc-4ed5-8a202ff0ebfc,1852162556,14978523056194533481
+54fd7438-9f6b-61d0-734f-3378add4dd38,2426456627,18098833986763231321
+b0abc81a-82e7-8eb6-2319-fac53b896012,3646176165,15599919309032744719
+0fa6fc4c-6649-bba1-4a5f-880fd3a1519d,1605215235,7175492817461114953
+0c8de14e-63e8-4009-f051-472aa4d4e4c1,3762369851,2784692708068847520
+b651bdcd-8868-105e-fb90-58ee5c51b63a,1356325755,13798341930752737040
+b76aabdd-a587-03a6-50b0-9b84878c2f87,846448887,3992586738137252167
+d13bd4ec-1d46-9287-c7fb-67581eb4cb61,1152936849,17835941109473174973
+c4e1e6cd-ce9a-a8a0-78d2-e667fdad2fc1,1903847773,3310067120661343286
+5ba6a457-5831-9426-0144-ab8c4fee32b6,989866530,4334652292695224184
+096f6052-e29b-883d-0afd-4fc4c94186ed,2554372162,8519944792556347032
+aa756dc1-eb84-1854-75b7-ab2079b800d5,1685729777,17527621864928214541
+6e3fe7c4-15c0-9d1b-e68c-f375edd553f5,2608189428,4543515258771726982
+f1040503-efe1-8424-ad7f-1db789dce19b,4194438255,8146587444682327585
+96273fcf-3eff-c7e5-81f4-b6bfe792b74d,1529339196,2868624755464188783
+94a74211-69fd-090d-a598-84dded8e1012,2185057752,16717359690340550649
+f08ff0bb-39cf-8577-99aa-9f43153f78c2,1366887759,10999033865637246017
+709d22ae-8703-c6a2-720a-11c3611cc6f6,810013977,14159353224272782639
+dcdd578b-10d3-9527-b496-1ba08a8423e2,780153631,13908218577883536876
+46f60370-79c7-2b8b-4c3b-e7b683e1e318,4092048473,15944874247253008584
+e8f54ad9-78d8-caee-197a-8a7f4c98dc15,759953255,790053498924674931
+d41318f9-cbea-c662-55b3-887fd73fd738,2280209202,7581611049464790180
+ac7d18e3-151b-3f4d-5635-53cd2bea128f,2380602131,15311433375236601621
+caa2b889-c148-26b0-71ec-49e61dd880bc,779136376,1896797575291445896
+3105408b-a1a9-8698-6c4c-bc956b9541e4,1508557517,5996145920135530815
+63c0bf90-a858-0bfe-8928-4a9efa33ee1a,3246152198,9936216023020109984
+39a7b072-5055-004e-941d-25cdd4c30be0,382796276,9789369988153681283
+d8836fdb-30af-ffb1-19b2-083492d6b63f,2635643463,6087860704252833094
+0eb99901-068d-980f-ee8d-37fe707d192e,2128573533,10893565514683785380
+025d43c9-5a65-58fa-d015-d39bcfea76f0,2369666656,1987630668922899043
+a87a0d9a-1ac6-42a7-7336-ebc0d926abfa,1349538346,671303548281870714
+21c9279d-36bc-43f0-24af-a67ffe573691,2505896983,2573385226441331818
+38c38eb1-5bcf-2f5c-bc3b-dc12fdcabc06,1810306631,7599314193763793243
+63512dfc-27c1-c954-fd03-0cf8997c137f,3339910045,14644306165977530363
+a3730d87-00f7-f377-0de2-dbba86574431,1369675718,14635271033947295599
+7236f1ab-f758-745b-4c68-969b3e58379e,822173400,5924149506884514251
+f1fff6af-0f2b-e62b-8ff1-2f31cfc12ede,1411093162,11878120507657837174
+399d37ab-dc34-9d5c-f138-4b6fed9b21ac,1994927896,14360771872784926305
+d8c75bbd-a2e7-2d40-0ca7-8ea7b9841a23,704879500,5935146439956386881
+d9fd8cd8-a9f5-406f-3db0-04a6bc33374f,1924657923,9258414215936976092
+b74f7727-26cc-2695-312b-575d13016186,3930314381,159292566986254994
+a3f77994-6142-0140-f296-7ec32f8dfb84,3375352826,6594955790578162463
+1316b3d0-741b-c66e-8772-ede0d86c0486,2954651475,13112876932834939987
+17fd3197-11e5-ee10-cedb-f6c5eeed7ef7,1855556359,5804272186297661088
+7f2ddc48-e3c3-d7a4-b10c-0bdff1cb6fe8,1164375263,10328448118213165761
+f066f403-f26a-dbad-1c53-75af47bf8e6f,3564772225,3834195848382377491
+271c5d1d-d24f-857d-f482-0a175b10ce40,2597424314,14077860276562484286
+8c6bb415-6096-fe2a-a13f-c05a1d3055d4,3319298171,7554605452915333633
+0543e7a9-f4cf-e844-af0d-62188a39ccec,4025773429,12156630079601343100
+226448bd-55f5-8fea-4f01-ec6c23a5d055,4250372699,7380095437952607383
+30f53eab-6570-95af-d7b2-8e254354c174,2074029383,3749701429750676096
+dd501755-34ed-861c-11e0-c011bfbdd796,2998505984,11843264772912207532
+168061b6-5683-207d-98ba-ccc77d604fb8,3521013829,14097812789131615701
+18731a55-d29e-b8a3-0f2d-6369871b153d,1316299752,15862057770029527979
+8f02279b-f571-6d29-20f7-e962e098032f,3327540171,17247200344129719672
+23ee1b26-8bdd-188d-f3a5-3e02ff7ea058,2113335126,16324843103918359643
+174da000-3c78-5d2b-20d5-2b5d27c5985e,346069574,12777307584535114277
+2043939c-41d9-2e36-2207-5ab3da06be2a,2398660374,6692502928880530039
+5a132f28-0589-b0d1-cd74-99ecefce186e,452973491,8615232788313741703
+18d21056-2707-4204-43a8-a6e102044e48,3116801973,16086815279744176395
+d920ba77-12b0-aaf0-779c-07cc7a78eb73,2981807596,13636386018939235645
+ea0d5e26-43df-08d2-e9ad-2a5cc58ab166,607356294,9086124835123837440
+38f7d7d0-795c-5294-3088-174a08d477de,2598312669,16428955242602788688
+c096b2c6-b9e9-8ca1-89fc-f9258dd4b63e,868161466,13013815878719015816
+118fd7d3-8062-cc72-4577-9a5cd87bfd52,2011838602,3307052195207587721
+77c8d38a-60a5-9a86-206e-d253b1c06433,3223754681,14958167597750659907
+f468ef79-bcd9-5a15-be9b-4ca26e6d696f,1783625038,2092132673291757820
+5e2aa49a-6206-1d93-d399-44ea8276eaf2,4195723289,8917216873800151019
+954cbe44-280e-d2ae-93ba-b9893528fa04,2202064147,16482633496979838921
+50062cfa-ec05-b818-5f2f-08fc9795cadc,2307504928,2975388044572517498
+7380a8d3-4b06-7004-480a-263f68fdcae3,473256593,16249602798389527435
+30297903-5601-81d4-1f95-37c20226da23,3476027966,16068058732031172112
+52a54050-e805-3dff-d47b-cc365ff58c65,4041525670,17512319981572050827
+680a511c-0992-d7ff-a761-03080041a371,2666351988,6113043480734771344
+7aa8ce9d-1f16-374a-dcc3-697c29418dfe,2662597879,5194863978726451428
+5b44d2d1-e2aa-0d4b-d440-b1aa681a4e20,978503959,11085313753413467341
+8267291c-b3a8-e144-de55-541bf280f352,206371353,9360657931062248397
+05f1dfc1-dbfc-0bfe-e4cc-f362f31b819a,2981292379,5575545561996736054
+d0d776df-0852-86f1-7828-2fdc029502ed,1862326552,103929600607080220
+9ef6196c-fc88-3c44-b490-3812d9420bfd,2744438318,9473494881541927538
+45d52a86-1ceb-893e-d9dc-7949ea1b3093,3104389260,17335286252689740011
+72841b93-bbfb-e642-f712-c9648c089fbf,3738156824,2407049009889644147
+064413e8-0328-6f0f-71fd-db3e9fd2fbd6,3399199924,17466050804613422371
+025dfd7d-5cf0-b4aa-44c2-6dee82fd3a58,1410291292,11701675726365264557
+30d01d6e-f8b8-6cb5-f56b-a11e712fcca3,802078984,16789488371972565123
+81274e61-f047-8913-0030-b715ba45af0b,1963740687,7088429697052519776
+ae8a979c-bf03-31d0-0fc4-653cd610bc6a,3751903966,10251392183922665392
+b701530d-6603-0055-d371-e6a4c00ef052,4169216443,3010686758782356883
+813f78b1-f328-6c26-363b-528c0d73eaf0,4186311714,6412122957497667871
+e7fb5148-2805-eb02-0e0b-0247b04a97e2,2524794267,1436852702114584628
+46ea784b-c369-ea1a-17f3-38c0b9b38634,2834333119,10930045204859300147
+d5341261-8f33-8e32-db49-3ac782af2f9c,201354142,4514455157244435587
+1e2877d8-944d-f77f-16c2-159a4c62bd63,1140883006,28800683321018822
+ff030c09-605f-de2f-5b73-4c6eb04443c0,2322976581,5657204329402903927
+444cf796-162d-0f15-1a6d-155bad838360,3544786973,12015950224365466261
+26a60d9a-4eab-b206-9632-5e68849a2911,995270371,1484996282242791680
+a263f918-6db4-d776-3b50-39c96aba13f1,1091741091,17145933000512941120
+6c7a0857-499f-bdc7-9e90-6667106ae830,2204432159,13457318035159827549
+50325918-9aaa-3094-6798-d33512c8d6cd,98243783,2506551840991694313
+e5be6ca5-c284-682c-b713-bf3ceff0a3d2,1397251836,17551529745220832872
+7cb9a509-b47d-e4c1-9db4-c6b404ee9b11,1677932268,7265250498738641253
+6a632dff-cd28-5a0e-d2ad-82ed9c55078d,2049505575,4235204115101816438
+de21f685-d5e9-b2a3-6eed-821848200dc7,4077690344,11374605907056631448
+9522460e-e8c0-8438-b611-6d2495de24f8,4100679374,9663341415602831113
+5a54e69f-bddd-f1a2-59fb-5bc76082cab5,1842061551,8792114137819490019
+9c05185b-1cdc-f0de-9699-cd17a95234d3,3658159332,16020265438592649173
+6c4d218e-1dbd-5d79-3a4b-ca87bcbd60d4,4255085858,2212084978161491135
+97dd8408-3026-18e0-baa1-9782ef9d725d,1157844189,9929113601125831736
+1a232f8d-3684-8682-d389-0058fd31ee06,1395886872,13365906447466758919
+a2248973-b59d-9468-b38f-d11ead315f3c,3868782067,9719487067967382804
+264c5519-f757-6244-682c-3f1e69ab87a0,4253918618,16838378603167447211
+00cde214-d014-d73a-4fa0-46bbf83391b5,1805345646,12624478431091132408
+d7474eb1-c837-5ae0-9c60-d291e309be21,2798346394,3676901906953209291
+965f09a7-05cb-ca06-945f-1fea5aed6b90,664131692,9639657942637951483
+82e00dc6-aa74-abf4-f3dd-04e7ea141442,3581191881,9325821386805469519
+38be00f2-aeb3-6b02-2ec7-9c9b9562b923,4016428511,17428603346306070000
+d59352dd-793b-f7c1-5e5d-608d8d52c179,4170740571,6879677305709256513
+85a8c036-b72f-a4a4-357a-3a2730f8ec9b,3466382591,16154998811066009104
+a8fee2bc-18b5-1f86-0bc4-041312e240ff,655503674,8939604456590464525
+dcc8323a-c985-8f03-f38b-0a211e1f2df3,747968024,18029062323282122782
+53d7eb4a-a8ae-90af-dfec-bf04a74b98ee,715458562,8974211256161077519
+9367d878-9e37-046d-c895-b9b78e15df41,2030756524,16507946901848219629
+ef712baf-2a81-0849-7f5f-10dc11c3ff7b,4196369841,9504544614086156382
+59d66c02-d6e3-8cc5-5e8e-c4c0a1e5f0d1,2965937162,2336015053378011517
+84b7fd6a-2b39-fa68-7228-51871601ded1,4056959678,18053640513278448620
+3eec6c45-445e-0642-7d2d-4750949db6ae,3671638375,6869793245561136549
+250d1936-9729-934c-addc-4f63f1d676c0,630536457,3808180589646499461
+cda3356f-6e3c-8ea9-699e-f32a2149b4b4,1455013759,15807476966410644323
+a1eba4c1-4f0b-5718-40d9-30289ec6291c,1545091949,8684222931247191353
+fa14f2c4-4ff1-06e9-ec55-88a425963b2e,70216254,16530829378832826951
+8fc3521d-db90-3435-d710-0a5f38345578,965355814,4420633919006903154
+6b7dddaa-5f32-5b9d-bfee-42b9694a5f9d,1100891754,9208369179755406393
+aab7ae7a-1e6d-de76-7240-9c9909645d5b,938938831,6877558700141054566
+23af13cc-f27a-5f41-4f4f-c6c6de11a715,3879873856,4234912154597469279
+5aecbf1c-c72c-39db-669f-ee584066cf01,2804306073,14117727613104912212
+a456584d-5698-eb90-5182-2599b3611b38,3757967585,13627617802304709527
+140c98d4-9a54-33af-d469-37ca40340b1f,1235169236,8775483184287727900
+f2704aaf-495a-b028-e2f7-b911604f4fbc,162535643,1300439534319544390
+70478ddd-6d45-cd4b-f6f4-8df117903fdc,2140768043,14757840338670562476
+77e0fb94-390b-7087-f43d-97d12c304561,209605641,13777262177065854243
+1d2b4117-30db-aba3-8d18-33c4497c4bbd,226707782,7446087322498503924
+32945028-44f0-d95e-67b9-aa799588624e,3980648300,3145427354593177393
+e9a14ca9-cb3b-ffb5-58d0-af70d1bc3ed0,2665058137,9608297262855012548
+be2258bc-4223-07a4-125f-ba30e00a3026,572218475,9900902298125083382
+288af68b-c248-fecb-1645-a41785b33dba,45737467,5150955306684230460
+53e9a8d0-7a56-e954-5f51-37d39c6ed07e,2130826618,6643208972744662500
+7ac2b705-af4d-41fa-c31c-f2c7d4f39cea,499030607,80157964216774476
+44d2fadb-dfbc-231e-094f-5dc3d6804b69,657967367,5445028762047317029
+8982bf23-2f1b-d2a6-28f7-4b25dcae0f04,2929314932,8920635020449016039
+6744904b-5206-81fb-60a9-f3c92f0b86d4,2362351642,690745200968360421
+813ff784-9955-973a-fca7-71b3c5bd2a1a,2588779650,821317367566063134
+05499fa6-46b0-3e26-4695-69eaa552f26f,3427993674,15158270448751989636
+07e69321-b79e-93c7-18ac-ef156f1d5c61,3660076749,5204588264286845888
+e2b4601e-e86a-f24b-f0c1-86f8ab3fa8d9,704929470,12266616918024774664
+3a19947a-08af-78f0-415a-7f3b542d6e66,1851624953,14157368004605951465
+b7a609cf-50f7-5736-9cb4-a8e45b08ba6a,823564025,13947387712641646258
+a4e1a21f-70b2-1e33-bd06-42abd0530e78,4288608259,7157852871164777172
+7fd5c4b6-ee29-58b3-ef58-5e61c700b07d,4287118877,10767550859480866669
+0ed91f2f-408a-f52d-b6ab-a36d9a8b78b0,2394292779,11493816664173334904
+5357b4c5-d213-faec-e5e1-ea58bcef6ca4,59342263,15004741436088877517
+db11731c-d08a-d169-697b-a00e170fb8a3,1347670411,2782997135415221183
+e687e47b-2ee9-1723-1dfc-5c8db4ae7858,3309925455,11094000573964793089
+9b872b53-6b02-4346-f5ca-2e933ef7206f,919634740,15642497069546216770
+1228dcd1-aca9-e12a-b7bf-e1b90770976d,3214439082,1139255019605310710
+7440f2ef-3365-416a-e3df-e429462037c5,2343109566,3503028978983981885
+7e934721-2333-5654-469b-df0c65d2afd8,3307769530,18401074742668218998
+59f96412-92c2-abd5-7e26-dcc055f58bd6,2849851106,1552353601638989551
+13086e01-1f7d-85be-f234-94cf3428efcb,852441490,1390693857941357905
+9a1bbf0e-5447-ef4a-4070-fa6ebfafead2,2079280535,12413142702717708938
+b40acae6-ef8a-7203-3aaa-67061347a60d,1462034723,2934864596770428016
+4edada5e-9f40-df5d-35e9-c09caa19e257,1079280201,1247026183992141551
+55aa82e2-dde8-a63b-96e5-b0b06d2d6e82,397963836,11829606388437077279
+e4592441-4ccd-9dee-e1ac-42be59548c6f,2425840905,79953609427727374
+2fafe8d5-9dc0-78e6-c2d7-2d4f55458749,2397742298,15310930862136898937
+5bf02d0a-4f1e-6d85-8849-377a5a9d9f4b,138255588,17437948854376766804
+dafe1ded-b37d-5808-568a-e07ed6fe819e,1340460100,5692377808639629372
+6ec63350-b5c0-04e1-8415-fd8827034b4a,1723220214,8494688366716462431
+e5cc223d-d6f1-7491-273c-5098cd0ce51e,2230428996,14924191483967259099
+1609245d-7437-b630-d22d-32bf88b46342,991012419,4269509159893847771
+e6fd6c6e-d580-9aef-8ac6-5f94706654ca,1638485101,8150236306833320001
+eebdd7e6-cd94-eaff-6688-2ced4e74e901,13489867,7265287525777668059
+7f320cdd-4d7b-0cc7-ba63-2e9861de4951,476609968,6244483727949686811
+fedb8f32-bbcb-7dca-1a48-ab82845db5e4,3224183835,11593088789846165682
+7f566fba-32fb-dd1b-b3fd-ce9d395ea06e,2034991233,16169051833045154833
+7a012513-4f8f-7f27-a43b-b3e323f6c182,3197179058,1135386576677778546
+20cdf3f9-3c20-3ffa-54f9-1bdedb4ddbf3,506837536,16412558637226579605
+66a291bc-0a10-bdb6-ea8b-1cdaf486218f,2242267842,18305497153442619347
+05ee3c4c-6a97-0a72-2bf4-6ae49e0486bc,1966415584,16923599881825327059
+cbde58e4-cc16-11ab-e88a-3bd4f97fd2c4,2188953365,15512789020623048663
+5a2c04ca-4572-e1a9-81f8-f7068304ae16,1992077221,1895983773717029864
+d4148465-3d51-209d-e3ae-ff77a76580bf,4072514334,18318761905686465800
+bfb11be9-3882-5958-5868-93d84bac0f61,809551548,8811716543901694309
+ea945354-fdf0-6247-b551-4e22be06b72f,4127626972,16017855281269903340
+2051760a-a1bd-78dc-52bb-65da74a5edfb,2815010768,11726235525499778205
+13eaf05a-1625-ee0b-a350-85f3b8765441,2974826174,6294296082358642018
+eb2783cb-02fd-a058-1c85-33338600fc9d,3432801904,9187391372254045427
+45877be9-8d73-c925-dd8a-c6d329c120ff,4006206358,79002359266063125
+b63169b9-292f-5b20-7b48-d41000001ab5,1642965344,7861907825387441793
+cca52fc9-60bd-31f0-ae99-a5016f5161ba,2160840597,6024370961204774925
+22bf4903-8414-8612-d8fc-38ece136a2e5,1960428619,8128668105414089383
+d3da38a4-b2e5-52f0-1505-9dc742bbc8e1,2062197273,4314409986778673685
+52b0c0f4-5b86-f8f3-0c15-87e9d2c208e1,3179987680,2604103247365234279
+247fc1e4-4245-4ffd-8ba2-1f32bd233f1e,2647305711,18160304284646426447
+3a970b82-f5ca-1623-ec30-84138ce8294f,1737013946,8533878503141545642
+3cd5f6b8-b0f7-0a57-fea1-c3a1573de15b,1371976127,4897625610123946008
+8bbe6817-0333-229d-b38e-2251849a6543,3455330215,8039057331108917355
+1c4edee8-153e-d80c-1af3-a373a7741e60,2251439162,1554791598901310620
+4dbf57f2-cb82-76d8-e7e6-feda3f2ab07c,3953279924,11862755964646922565
+a36ba201-62fb-9ceb-9c81-3d8d006da211,3860153591,16197410836253965220
+b6ced371-dc73-c889-2fa0-02ae2cc0d63d,3578127858,1984757462982728771
+4c43f1f2-eba4-b559-439d-f3eca769a97c,2648785804,1992119348381364964
+5f9de6c5-3f3c-12ef-456c-533807c6c572,484575636,1386676038416991887
+ea28a4ee-fab8-8085-3785-9e3def805766,3714582174,2351596794058320808
+f962c27d-3357-68e4-dcad-b00fe9af9be4,3803413394,11586539291478857507
+6447cd82-2693-5a63-dedb-648ac2cc3fd9,2400224596,9304032927427754863
+5408225e-ff26-40be-2062-8a5a818ec3ef,984597789,13687762115645508662
+1543f025-9792-ee64-77af-079dea6df9f6,1740783952,2543772433738447535
+5644a302-94d2-7c53-bc22-26567afb22a5,260467388,8665031648243642724
+d2a2736e-e6cc-689b-3ca4-f6aad9be4dd8,3348640611,12153693657040169210
+e2199e50-35d6-8dc4-0af6-8cee2c5e2e2e,2020038155,12825319868477605387
+c89bf825-914c-d980-4fc0-d2a8b9022cf4,3419239689,15834914536739758876
+09e8393b-e58b-6b1b-3b54-c4a69e1e085c,1592930181,6451502816540284872
+506ed5ca-d4f3-f190-afa0-72b7b981929f,2064024264,7372865538788426801
+7c800155-9551-9109-2200-393e0f98b5d8,7604905,9957755276421154747
+5a820419-1bc6-afd8-b5b6-1aca06940325,2206129050,9805219618606989018
+17c9bb7b-d96a-cb06-c444-83b28d563e43,2067278419,9575628989671394575
+1372a812-f94d-f911-b1ca-29d771ad8ee7,1239040160,8938575506281904987
+c45e8433-68f2-f16a-215e-292c5423b43d,2807049731,741462418988454056
+10d425cf-be4a-f2ae-1fed-c5fe69d049a0,184747420,16507272603277705418
+4b38c14d-9cf8-c3e7-667e-842ca1dd5c1b,2256046901,9966635320695303909
+a936c6cc-7626-41bd-3a65-c38719e11ccf,626150231,328792401142836343
+2bfbd5a2-2962-1a21-8f8d-0394cd0692b2,535169868,17558864845121833708
+3c07907a-0037-8cbe-eb14-eda15821d730,1599651535,14363469933470910892
+50c5524d-341c-5a90-10be-e255c61f1804,2154528249,13687619139072200143
+2ed1324c-3dd3-fb51-55ff-8ede5cd9c50a,1740487251,14535712648429400486
+ee953d4d-45a6-941a-7016-c03bfb8f0633,1894880091,15368797652803818104
+d636f6cd-6926-4dd3-a3b5-8d2ea3e6a522,2297589738,3419927070539122445
+9f0b4e70-625a-e5fd-f46e-629d842cc5d5,646934139,7166415811102764468
+886de8e7-9750-022a-2999-a0189c1fea70,2661790101,15042546795149958972
+65448dc0-473f-a73f-7146-723fb128259a,879596373,16166951364682957522
+77d9cad8-0991-c27e-dc40-8e1d09d90897,3933290619,15851621069115967855
+d02bd784-2620-94ad-96af-bf6971609de7,3973190008,6783336753757246686
+11c3c37b-daef-8df5-b54c-7c893e03e206,3814720005,923788401767055220
+80ce55da-a24c-731c-5bff-534356f6318f,4190944315,18253698472589577348
+9f2fa4b3-03fc-6932-0e35-2d9c679cbd22,985145289,15307121210457370958
+c6353aff-2126-7161-fca7-056252ace90b,1672068987,17525235627297892692
+e6117dc8-c6ca-bf2a-d982-a1af341019dd,4074140339,6405067449028861234
+a16183e8-c89b-81d4-6db5-4ae0409740fd,1140370647,904943764232324210
+1461d5f8-59d0-3a38-d756-db61eb7f0529,2619951327,4760980191232082488
+73d88576-e412-e8f9-4438-6466a4adc61c,2907117324,15131248832937389618
+5a5ac143-ec47-6aa6-ede1-8e6d134f4deb,2348281445,15391263068346695825
+d39cca88-e497-9cc5-45be-1d86d837d4b1,1715437658,12406113846237189284
+563d8fa9-8bf7-1021-32c0-9dff584bbaa0,1618041978,477078159955234275
+2ffcb3b5-851d-2723-4c3b-68b372f718a5,1209772930,13991187848683269965
+f54cf652-e39b-2ea1-a1d4-60d3424eaed1,1637608358,3737581629407048187
+fbdac82b-86c4-623c-a7d7-5cf0fb72fb3b,1899070991,10552393112102743493
+961ff6a4-8213-fd8e-9467-616f6e004e6d,3056789970,7442008201223196719
+478ec785-c438-d7d0-0f1e-937fcff94c6a,396989526,2013722037573134005
+8bbb9a46-6e46-1013-cb3f-b403e0a7882f,2318542178,15170758989543514456
+4dd45530-d55d-cee5-1ca1-4af460d6b733,3108706939,10467166137060052431
+f72a05a8-8de8-b0c8-25cd-6ceee3c8cc97,3817818233,11142843698136615460
+aa2b3822-97ad-9129-e4ec-550b4f81d73f,836852872,870241348150052496
+a749df96-5126-429e-fe70-efad1de943c8,2595997306,5281162665113033929
+cad28f00-f9c3-27ba-04b2-1c7005f6e6a8,3186156990,8978604528686905143
+f3b95838-1ff8-377d-4f98-8fb66e788ed5,3213607082,8554551450430820318
+d95b0e41-a844-f624-0fb6-977067c5d3e6,346657455,11289702083005827171
+303c5b61-0864-20e3-076c-27db3201268a,66340505,11914762432817047907
+00676048-018a-f639-5e7e-d712b12379ac,328029858,11065295177791490212
+5da9b4a5-7315-7ba5-afc5-50c3ea8f547d,3007275118,14759203073520510615
+262675de-62c2-3a9e-7619-7d4298045de0,2349530917,7068414580511150566
+ab5fd23a-66c3-cec3-6e2b-5bf04f0ec3ad,4159443167,4831202780943316387
+97a7d6d2-1237-092f-c77f-d85bdd2adc82,572914386,17840928954431000688
+a90ba13d-1152-d372-6caf-b360c0118a95,2336873160,4694869709153404661
+375a8827-2aec-5aed-58d1-f2ace7896d3b,1286994891,17848346364577435676
+5a45ff44-8816-661a-7cc4-91aa17f2b5bb,2128441399,17468359972811056777
+fe002544-a40f-cabc-1d58-008f07f1a718,1854935739,11674247530965995673
+c6706683-796f-41bb-159a-d20695935bc7,2045582506,16920151998911962195
+b0be369c-5a2d-5095-ec4d-6d1a1b10c56d,2713654526,8091589181169497094
+df7e080f-8327-7189-e0f6-7108770cbc5e,1906377888,11311776140201672929
+50c90a87-edb0-d304-e6ef-9dbdc7293ade,83195859,422547553227009050
+78d25377-e603-6e6c-048c-04fe06314f7b,1375097298,809450272190305808
+2b87d75d-757d-298a-90b6-50a31ca77433,3715531703,17145393154110751713
+0ea4f9a2-fbe1-cd74-a0b7-5a049f41a251,3137514984,4984770650077021719
+b2e3c09b-e702-9600-f044-687ce0cedeba,97557537,227008535652883548
+fd375d99-206c-a6b1-82d8-82662b7dbe13,675198070,14636989708761032660
+d10c3b7e-7465-8241-399d-33ce91c76091,750809989,17774975772565607547
+932cb80a-fb45-900c-b494-7b2d787cc988,4111158066,9438830274331631714
+e8073f0b-d3e4-dbcc-3c1d-3f96f76a7886,2840509255,13893900401048265491
+2ce748fa-987f-bbd9-986f-3922c3d3f6d3,1805363225,9985294705899331941
+4e01f246-ee7a-5669-2af3-64bd8fc25fab,3306306058,16259784157398188700
+d7b210e0-6ac8-651f-f01e-a145ccbddffe,205990977,15688296279663321035
+355fc27a-0e7a-f821-4f8c-e2bf9af8d34d,700516256,8544413265220142919
+d2141262-d76f-19d2-84ca-feb631f50b35,1629385509,4739219734116958560
+130f0e5f-96e7-79b4-632b-fffcb8d0fd5d,2934553648,16061023967813597937
+5224ab0e-93f1-884c-d64d-b41eaea2dd4a,2219890135,4824906153046072922
+38a286e8-223f-0c55-f042-52d3481fb675,1566300752,13015115276697114504
+93ee639b-7299-2a45-cd69-7e482d3c0909,4215396529,17206317301743711543
+83ce4779-52bc-aaf9-bb85-c3fc6dadfea1,3259222538,15405449700106132786
+d1d1e09d-d363-7907-b43e-4b639d781974,2380161199,16139624130782531670
+d8fdf221-11f2-cb0d-3488-204e5eefcddc,3191821139,16514317370476020019
+cc4cd0d5-f3cb-3f46-142e-ec55efdaddf6,866320618,9200313768048425470
+12a017a7-011b-5499-9a57-740e1b259df0,1079451230,13216146341084906160
+534bff77-0431-8070-c683-1e6e25f23956,2002359366,9999056038063142418
+3c1192d2-7f80-8a94-b5a1-35908c6b56c0,2767973674,2702630187540528054
+e73cf755-516a-4724-de88-56b1754d7a9b,1419848372,13689059180075629875
+d98a6437-6591-c69f-26ad-0f1517bd1b18,1915343743,18144502992430101082
+8cc31e40-cd97-444d-94c2-935bea6e5ede,2150215280,13698076242865527774
+0be4dcc8-413d-3c61-670e-a493725c51fe,155121579,8328511414283652594
+1d820f21-b5e2-8af1-da94-fd6965885274,3163976355,15625130140162275883
+ec736213-ac47-8c97-5ea1-a9cfedd55e20,1581730168,938434918716206954
+d6a8d196-6ccb-6ffd-5f2f-73b0a49e96a4,1873814229,11666872339573838328
+884a4dc9-6442-8942-e637-561db5cecd84,2858434913,4259135156342040431
+3c7d462a-e607-438d-1fe1-bf625dfb3712,3188153601,10156700830412752537
+4896dd5f-0dfd-0a08-6141-04dfa3fd38fa,1271944569,437481869730483684
+99ae781a-90d8-45f2-ebcb-f0a838f5f6d6,4191122208,10963228529812339910
+9b67d93e-65c4-a799-0c2d-e5b1dd6a3cfc,1042719300,15429526566269353638
+dd4a8878-b444-301b-8120-e4c1174d2a7a,2065987220,16717171972977004949
+c0a50051-c2c1-9d03-20e5-99cc3314b8da,588482045,17648149127127326259
+29fffd29-8cea-5056-cecb-924ddfe51c88,304808448,2919565203429065992
+386351e4-7ae8-93bb-cdc9-0ca38498a6d9,3452981760,2700014591314026514
+905e1063-5e23-f450-3983-6b0103bdca1e,1948976772,1219554737598312833
+59a5d660-1e8e-f13c-2920-2e9c68d6aabb,460039189,18290469738352558006
+b4f3f85d-aaae-9a7e-db35-38cac5170f40,1308992908,2835138844682279660
+692e657d-e805-ba6e-b864-e59437a13202,3018455969,14935142059180809306
+16190d9f-604d-017a-11ea-b6253a5d97f9,1712130351,1720686257768620912
+d2bb2f52-6974-7909-8da1-edcc8db9d2e3,2499283051,10435904203015878040
+6310cd95-b3ac-f99b-5dc6-dcde9d64bc38,4194089259,3077153862537798759
+9e93fdf9-7c69-d1ec-2275-f1d30cc8f669,538858858,549206608495944110
+75e2f7ee-c44c-dad2-297d-493bf0da796c,2044171002,2538310736822748650
+2d772ec6-419c-9c01-3564-7c61b9063d80,1734862712,10325820838714580172
+72c116fa-0c37-040c-a864-c758bf28e2eb,2807764245,15031496191573618371
+1b59b019-1387-00d6-291e-0d5e52cbb0ec,3863601406,7965792232922948442
+fec0399a-9399-b08a-ff14-af5a158b789a,1439307284,4427289298294834586
+6ba3b635-e516-c6be-bc23-b38b6fa944c6,2452684807,354507384237431004
+92c6ce15-45d9-b416-5ab8-0ddef3154635,1641857564,3666888690983303311
+2634c535-caec-cf35-dada-f9fd82c41e72,538984116,5153630077562460526
+b32c0cb4-40b7-dad6-67a2-e6089525b8b5,3348054915,1616536738341099892
+15831492-d673-ef4c-60df-4dda73877f75,3546631976,17390925555815976480
+582c41c0-1aca-2118-8a54-b24cee145a5b,3906322120,12060716617161271732
+f3f3fd1b-0aae-2fb9-6a72-2a609d9ea688,3887095305,15871261701181617979
+cdd28b18-a580-5925-3152-473f0e2c10c2,2649633148,11195459807826541016
+1ac9596f-8630-12db-b0fb-efa94e6da136,2443968698,11812930100785547991
+37c62f5a-2d19-97b5-5d8f-7661f91df0ef,2811963829,10764437700560048215
+38b18eab-9d0b-a744-570d-a3b43e634cb8,3541416124,4192156671371354496
+be75498f-5296-a962-c43e-2e00274042a4,2888576969,12772544257289807073
+b5292233-dd9d-675b-eefd-1f5560da8a8f,1664692139,9256535299126818277
+07e4a761-73cc-df12-4d8d-212934ececdd,2946240125,14002865661647437518
+194783ef-c317-0016-18de-77ec7b813203,202619876,8647492045305029895
+635e1780-199e-9341-52ac-0285240b2f04,1258114529,16941038245543805165
+60aa909d-72da-d085-88d3-a1d403247e79,2766979882,15637359445133039336
+213718c3-176d-10c6-069b-6e8a136bd33f,683155445,11152522327453897586
+017f3696-e181-b946-d8b6-1498ac4ff0f8,4292151417,13457491783874553890
+8fc7665c-5df8-fc43-6cb4-0c8dde390df0,2802060725,16734474330191051066
+f51f883f-7531-9e5d-e24d-f69d81985f67,4045604969,5068055993307399631
+025321b5-bf18-1fe3-1a52-1d4fb6cafefc,1670269172,196883417415252813
+32ecf850-dc78-7f4e-d564-36e467db6aaa,2650222575,9817436845830410467
+c3fc126f-4473-4c42-bf90-352649a3165c,3141134604,1594112300407318700
+7bfc1001-29c0-22c4-4d6f-e1298a22c88c,3626050112,7802134195469726739
+26498380-6a6e-4839-028d-22030acd381d,1761390236,8477222727444233676
+aafcc947-1aa2-a9b1-6d80-a6f2e82ff3e2,3173840128,449949264369835505
+649178eb-2cd4-15db-6eb0-2939a62ed5f8,1630860264,2089112524104336850
+634fa720-d186-2a9a-32bc-c592d2827a23,58627838,8301363850838012142
+00909228-0795-35a3-4f4c-6d345a2fe5e9,3696544230,15596768945914444635
+d7580582-ca60-7587-aca9-af75a828afe1,4158679183,9161982171967867442
+0e8b7230-fc04-1711-4fc0-22ff5d3dd6b7,4044590510,2219384116437763798
+f80d61d0-2656-a364-27a2-90067da5174b,2928988312,18050547456981687527
+8f9971f2-2e96-1469-cd29-09f36b6f4478,2771380350,12544522884142207946
+894f4faf-0a19-aa8d-0ee0-d3098c44fac3,2285675814,8477921345306041148
+86fe7c0f-45fa-44d2-6e45-5ecfded4e195,3591037229,13340643558152027745
+2d075f6b-0114-30f5-ec33-31b0cb4c51e3,3591528466,4909462847014539208
+2bcd0b15-ea67-573b-84e9-6ceb0475dbe6,3704158272,6790049978323097282
+28ca9598-5e0d-0947-ab17-beb534247121,2496523712,13824591178630075834
+b0e03600-549f-4186-33b4-6d1dbc8969fc,1064523579,1283591046385270687
+008c1aaf-487c-71f8-b90a-cde1a79abf0a,2211231755,4615130334929872644
+a7ef3032-4461-2059-b64c-4638ce0d0dca,3065132611,10984478446405575176
+baee5f41-dcaa-8446-b5b5-0c1be91a562e,3772871570,13739549699592420843
+4b2ff7b3-1c4c-b06d-aa59-c301bd1200d2,4014049920,3349195569950532576
+49a17f0e-92a4-1d02-ef86-8e85fe97082c,3467542838,7390320723691073528
+157a2890-9de0-bab9-e5f3-328cffd88c2b,717265747,11966369056638584168
+3a3fddaa-6646-8fb9-4a44-9918e5dd7208,427352494,108618741821142234
+891aaef7-d970-98f8-c2cd-722fb33da93c,1627033013,12348516456104844799
+ada1b74d-2325-3eae-a095-92a1f2a25e0a,3599477378,11953386118174387910
+aa47cd70-a7f0-abb5-fc95-f3a96e4045a3,763396297,12723806063143050129
+594f4cb9-dde7-4dd6-caa2-577c59c5df49,659333457,3382996180002831648
+0b97e90b-8832-964a-20ae-b3e7c9553951,289829824,11496636524367515549
+79b4d0a2-d889-38b9-cbb0-91e07a7bbc89,2432552021,15933968153476967601
+b2c2354a-5e59-934c-43ba-4e442de0dcaa,4221817493,16306185079818021377
+d06b37a0-241b-9164-549d-1771f0be7bdc,1916419457,621661357056689959
+477cf125-ffb4-d068-a716-12a80fe3e347,3831508962,13600124534053107159
+4fade4dd-93a9-a488-0f60-b23676254d11,4104588720,352544975693502553
+87eacda7-e2cf-3dbe-93fd-a7b13fef4e26,1789409269,18383497055806080470
+969e5266-cbb2-47ba-b0f6-020647ba1068,174523807,790634142356864519
+efbd5b15-c913-fb82-32ca-45ff14599db3,1825941001,8435328282988905795
+b9c4deca-c8c5-5bcb-1da1-5e0e9542298e,3207578553,13372440321199898104
+8288681c-eceb-9fc9-9483-b16618cdc904,897394367,6543153964636540690
+bf23ff9c-a98e-8c32-b2a6-928a728d7ed8,3943567546,12054826697090739587
+377ade44-d8e9-73ac-7caa-0050812189a6,1383255953,8927378087908888707
+77cff07a-96b6-9ee4-3a36-41ad1de306ef,799868729,12166272238028667429
+e584956a-0f2e-22f6-f92e-7d425821bf85,3715429136,3283619096757846633
+fc7c97fb-f74f-03a8-bab7-82e98720d2ba,3276907970,7122355148623024358
+b7375435-e569-711e-261b-31e75e04cc57,1619605635,5407916544807527025
+0fc310ca-d059-b69e-3fe7-db19752556e3,991552289,5421781089574139608
+27bbc1d5-4749-07e0-e4e8-9f65fd8287f1,833134401,7160486312088580519
+391e925c-b17e-fd55-a8d8-b66ff2170090,157154750,16666423762746380888
+ce946195-63a5-369e-797f-ab4a80fdfaba,1346090213,1744165210398484011
+e4ba9251-53f0-8eae-cb2e-b099f6153097,434022376,3377674090364189237
+42f6f298-21ef-a6f1-ca94-c002bf688a37,1717060861,10493492603546333238
+4d1537b5-2b49-0417-c367-8c24d626fecf,3401270413,17827669353070921163
+87237323-24e4-85b2-0d30-61a642f8242e,864732356,9469354385944967234
+728413ea-c1e2-78e9-2e59-c2f8b02ae0fd,2167749879,1791810118779511039
+a4823c2d-c2c3-8777-1411-2463cb0efcc9,2094845162,7120674904719517366
+d4037713-92e4-2c78-4101-679b0ea8ab92,3054037969,16809965761031675514
+81051780-13d2-e5d5-5a33-009b2293782f,4089908985,17164916219124525950
+10fb8dcc-bee3-ceb4-d546-6953192522f8,2972011225,9245027433329239903
+b48b5dc6-5793-183c-d97d-30381ad35b19,3036655043,6411168872010513801
+dfd671d3-b66f-d817-b368-477abf92a739,2206791113,5784667566187045453
+65f50118-3a59-b3f6-e5f9-046c6c5c6d4b,1118199751,6656402306296164544
+bdaa9bd3-823b-eb62-bc96-7bc7938d8e19,1913616968,3503380563129691762
+ca65399a-1fd7-f1fe-3ae5-eacf7aa97b1d,3543231194,10248710365411552708
+2ee251be-f1d5-cf80-84d4-4eedb1732871,1662204679,14344161324664466473
+a82d3af2-f820-e717-2715-33caff9e34f3,4196945734,1925003005562235381
+43400627-90f1-9e6c-a327-494e26941145,2276570865,10120269390802215
+5108bb97-ee0d-05e7-6334-73998de92d0a,1115539303,11958110773218057463
+5b82c892-7856-4f7f-6e7c-7e9575fb784b,4284085281,16007208712250517655
+d06e845b-9be7-e4da-cf54-81e64a35191b,30293384,14538693769631308330
+782f4f2c-5d87-3386-3a05-3166a6e9a2bf,1527052319,17165021608124830737
+5299d3b3-7250-3ae7-77a7-83338c14fd4d,2054890769,2357858266991045428
+666d7234-36bb-d6c5-97d9-8fa988d86b9b,3938315771,1838801903155051959
+a4591fba-21ca-adfa-85de-100583907dd7,1919735187,910985293306200171
+31dfa1ad-6647-cdf3-304c-1e84fe609f6c,3271034394,17990487457840403553
+465d4d20-0aae-aa21-4d7d-d3c17905c992,1542121970,6862992354389764701
+ef05b9dc-d644-08b0-b6cd-6132c99ba95b,3446992003,17758080794660620199
+6b124948-9a23-7df0-b2f0-b09e0bf2614b,2077071158,10581392976591234665
+53536170-8229-e3d8-b1bb-100b6aff513d,1657515575,7356064856548204049
+71bc8d9b-d5d7-4ae6-16a9-3aa5b66eb9f1,1457766223,9358941965819432122
+83e64786-4746-7df1-6748-2cfb13dd8863,1024722457,4474445778958243380
+c816276c-6702-4953-c384-2c8e2e7708d7,479483910,9740897064699888402
+62b5daa0-de6f-c9b0-c73e-ce03cc404f84,2655055350,7122265223117345027
+324f05e6-6d0e-28cd-63bb-eb9b6a4da163,249805730,11324769599785240274
+6223f81b-b3b1-e65e-84cf-15beffbe1666,1166542643,6163237409927731755
+38c307f7-651d-1829-d5bf-317278cfc6b9,440539250,4143941125463674749
+d9c1a73a-bf1a-4eb1-3956-979af151ff9e,2423561416,16139796973308332682
+88059d21-88d5-4453-6f4d-01444142c232,3309340875,16792419271651773440
+799d651a-8fc1-7734-3e24-0fae2b95ba3b,1090065114,16338975109705350513
+49fe8b69-c0d6-79b0-ab98-2fdb75568d77,847023555,9611626939181356117
+fdfff251-c08c-6447-668e-d02c8e5d2045,2149009902,4000012987192508656
+015e3f7c-9103-d658-a785-2a24be621a9d,2685419992,7527054874982788760
+436bcaac-5a4b-2d04-a892-51fe98d37621,1606296703,1799126969172586575
+b53b5b1b-e4e4-c083-39e5-486964bfb8ae,2419455649,28498662790607604
+6cb86122-244b-bbed-297e-576f3ce9c071,2170632564,7842029002316174240
+df92ef8f-db4c-0b58-85e6-52b038f36588,974800660,7199728240181539730
+f5468ec5-1296-67f7-07b6-1690cf32856f,1757539357,7440813975962788498
+4f5913c0-0b13-56de-c4dc-c30af961b371,3760443758,15148709571065640024
+6ad20e72-154b-8c67-152f-479b6432e336,1647691330,14896553327079495153
+9a0921b6-a33d-996d-4a63-b5a6815ecc36,780623635,8190041799036531101
+aafcff14-a452-a63b-370f-b644926321ab,2817512463,1808857337738527877
+fed4d098-228d-7534-7575-2a9a49b81d27,3307909165,4691871033800987909
+f4337fa4-055d-1f7d-0d71-1b2acb62cf83,3377337122,8798778672511517970
+7d69374c-b261-d72c-b364-7abfe480d33e,1182702019,16663139496706170562
+79c4aede-b102-934d-37e2-e8aeff545499,91569292,2806811073670034360
+1b4d57d5-3e01-0a06-033e-1d42bde0753d,2982405824,7857446231030483871
+824e69cb-0215-9844-cd91-1e70e0897cf1,3020622827,5758500829427992938
+9bb3e62e-5875-3dc0-a79b-ae060e1ac74b,3517471742,11903673235956907003
+1eb3d743-a8db-fa8a-ef9c-c043b59994b0,281929885,12433258653162869539
+8694d866-6f7c-5cb4-711e-1c50aa0c540a,4260752772,13699594893149357040
+7b007948-9dc1-4d1c-ef1c-989bc61266c7,4260422925,3181721341190831971
+c74aa169-7206-9e13-c9f1-91bbc663001b,1197964838,18414451599341086402
+7e381a8d-8275-2841-f0d8-65a0c474c429,4096903387,13712644991173869131
+8eddd988-c628-90cd-52a6-729c8c321251,3093243856,11614434855985274704
+b0cbeee6-b223-5fdb-1233-1189d180f8a6,305630912,2883810361660799949
+a631492a-91c8-8929-9324-56ca6f5bbd2f,3823056191,17692886402717377623
+56dfcf14-b84a-f62b-92c2-5ecd21ff1fb7,2826569871,7639872842756165811
+a4d2c04d-22b3-5009-5228-850a38b4431c,882995579,16289687031670847885
+96e75ef8-69a5-c447-9afe-5825d83a8ec8,3336450558,16749092448297822676
+445efba0-a065-2e79-d0a2-605564c83a4c,541252315,7815402312023860550
+6540dd97-5727-7afc-8b81-99de6182481f,447803140,13526188568012490175
+56fd6f69-3d6e-8701-23b0-25702d7b63bc,4157490186,4664992704702836304
+f470104f-4d67-4000-3586-762e33db5de7,109000041,6914496947480410868
+d57d67e2-00b6-4094-0eb5-1edf0f9523d0,3457284471,15256137719868571969
+c64a5b5e-825b-2f37-373e-83e3735c663f,539158420,5872551397570176697
+ba635fda-c175-04ea-824a-89ea42253a4a,2159572316,17519054663809077823
+c80754d2-88aa-1978-d62b-34441c61d301,3330673689,984566926374702894
+50cc6647-e0ad-d204-2d94-abec4a35621c,1985641803,9220293098692149384
+91d1ad2b-b813-ec7e-7fa8-0bb700cd33fc,2214125411,8641951955732379784
+bf3b2e60-0158-073b-c316-8e74b943a2e2,3338094179,13546918891151468761
+ded2a1b1-8738-7b81-6c18-0740362e99ea,4060395807,17893439624459313607
+63806502-f20b-aa7e-399b-5a37ee94ea7a,329867989,6874443766012366168
+3c92a12a-8006-b115-1c0a-b1dce3e8e8d0,1044670503,5978614284723053454
+3018ac6d-9d1b-ced7-ebbe-33611c9c74b7,765588120,8722125696649941048
+9b946527-c822-ca14-ed8a-efc364de497d,3620944218,15782582556522221534
+5412dcb8-bd07-c6b3-0052-0b96dd2a3185,1693602323,17832958826474478932
+726cfb47-be7e-6b88-35a7-cfe558c6fb6b,1843104493,18019412479501454889
+538d998d-c594-0567-e5de-33b2d0b94fa3,151416981,13023177863323678541
+ae265f80-f5cb-8234-e7d1-0a693fc023db,3163725102,16242279272263692822
+078cb1c5-2583-c597-5d5c-a58c38b77af3,3185201719,4427590355434442091
+6b7dffcc-103e-7be7-d394-3376b47f0938,2420813851,3437857047051062934
+c4ebc59e-974e-73a2-8b25-e9d780ae3247,1408733629,4826451531080818602
+039ac30c-f8cd-f897-2f8b-787c5e0c3a57,1753520035,6317805576833840328
+526300b6-c7b5-a876-ff46-0afbc8e76cd7,1771827182,1832564362320058847
+22bcdb15-51fb-4fac-9f67-c7804caec027,2088615366,2377335485433550699
+e6dc578b-2a92-4e8d-97a6-79404bccfdd4,3499289329,11838127591334905855
+e02d3c7b-c86a-a5f6-669b-86113f8b14e8,1019081030,14387718552261893160
+27bd85b9-91d3-b34f-0fd4-88ad9e39dab6,1232557122,6133521427463445353
+ef7d4c4c-ef52-1014-015d-47ac6c5855b1,615442794,3742805290398396673
+dbe807bf-d45a-9d3d-008c-11221e8b55a1,454008442,17524143232880359148
+220be8bc-7bd4-fee6-bd55-462e2a969676,73354561,14046891463214568405
+3a0c8fc4-ae21-d03d-7f2f-9cde6861ca56,1385685444,7664334867376791980
+e71f8326-949b-d28b-9fc9-ac375374e0f8,3220710328,16674557096602084035
+d57c7257-6785-151a-fa36-a955e0f9bae6,608413622,17621355683427766611
+72c0b4dc-e9cf-3120-ffda-d488f16a5e4a,96402720,8265826414641933445
+19df9306-7210-bb5f-1b23-6b79777d3165,2479292454,13261665238805132282
+b0c5a0ad-94d1-be30-6100-a6e428ed5f92,1978435085,2461997348881599373
+fdd2bdc2-4eeb-0bb4-f6c1-7dcef4afc85f,4206763485,12463521986587567841
+430acfcc-d9d6-c157-96e1-967b536f1137,4188081126,11325579731538102174
+fd695c13-fd5b-d7b9-ffdf-a573e479ba06,2865717394,10709636360827836925
+685b959a-ecb9-2587-0030-c881f9c0ebb2,3225282621,17829009341105640966
+1093e9e2-c4c6-44c4-7c90-fc291e817c71,3692625446,3948670627709569805
+df34b817-dc54-804b-f7a6-6342df9fd3a1,3771725054,15212900864972442045
+78b2e838-efe5-b7db-c541-e46b90cd153d,269585349,14164548211957427885
+7e3e61bd-4b15-c9a2-fbac-60908242c935,2895834849,16041469287643133389
+45343048-bfe1-5edc-8d19-7b2c3fb6f3fc,4150599712,14651646494169492538
+21059905-390b-5be9-1cb8-cc6d32ef262b,4048037730,11616609222525653854
+e35ce1f4-545b-ef2c-743e-d6bbac98e905,4256102316,2121322174186487022
+9167b956-6a19-6f08-1178-e453b7c8640e,2049345607,2052218146111319923
+a663b6c4-a7fa-cf3f-b375-689a40d29d1a,2974948573,5059287527918497440
+f18a02c3-4b26-c2e4-858e-4de87fd23f3d,3038333380,13223925925049902588
+2e64c6a7-b902-24ac-d61a-51ebda39dfbd,2644870370,8171879273009677259
+b07e117e-584e-db6b-9c71-3a4038341b29,1458557518,18047970917363802292
+625ebbc8-c1d5-b7db-6dd0-2dfde4668283,4074736748,827997682345688660
+174d2bd6-5cc5-d8a4-b431-2b7c1baf8a20,852349781,11724777607103025855
+2b4cb2c6-3ed3-5d18-5e85-d37095d7ab7f,3889040081,4161078085809960698
+80e5d591-120b-f093-378d-a2e487562e3d,3199848061,13656051957089087908
+fc6a1ba8-a3cf-f8c7-b1bf-2dc7fd3c520c,3351789717,13328940247193832339
+e3f651f4-81e9-0995-b8cc-4b6883d2740c,2882725155,8685205391120373483
+7139008e-0bf4-8e6d-2f92-57d5e47a3ac0,1223211582,6648755179757229649
+8d020f0e-e236-9e0c-fd35-0dde968ff549,436865602,10668135857849323607
+131d2b4d-3144-9cde-2dcb-336ef3bbefb4,3094627299,16700693164320347851
+6c304a86-9da2-7c3f-3ff0-58b69b26fca2,2409825221,17055640282677302052
+721c5ccb-557f-ba5f-6bd1-93375e209726,703382762,17324846278819300775
+d67f48a7-5529-4e9d-5c46-7f571280e443,3016530755,7030418090873432795
+4acf3c1a-586d-5877-ea4b-9e086d021701,53754883,17015544692585239584
+5a1e6cfc-0217-5d30-5285-05b6965f021d,1752479993,16747952014095135344
+a379e53e-b481-f362-a79d-2c16f7d79179,4249803740,11279437368118127937
+6a20d9bc-7bfe-7678-2fd4-25d102869641,3009528386,18203892152920281890
+84c0f361-fb3b-f1d4-3251-d00f144819e3,3489401422,7609765827785265674
+f0433e2c-7a33-7255-9a58-d8193c5795d2,2537360950,10171634238574354454
+9c60e359-a33e-7c23-3e81-c4904d62d872,2114682015,9406464347575895193
+e9862955-6c38-2aa3-319b-b52f673b8f19,1752291978,9668730622246733890
+eeebf2d4-c68a-c4d8-7a7e-877fac86fa53,4221640035,6606997175886682653
+e3ae8676-3430-3157-94fd-25b9732ba585,1366840026,12663046985771196831
+bd8172ca-4a9a-4210-1569-8bebdf79babd,2797333172,7005373558399165564
+70d54082-d5c8-5c53-2d08-774cbfb446c9,3813835590,9149701197711304937
+fb684fcb-7013-a70e-760f-bae77a9a0a0f,3203592543,8936449004618124444
+a4b26727-999a-a2cb-837d-976eaed981b8,3574258538,11558270216699946862
+079af4f8-f1cd-1e65-087a-77d818535b2e,2889620875,1408972117980189600
+7e76b32a-b03b-cd2a-da22-50df43a47b3f,3240549221,11697361344632407485
+538b5917-edca-7cd2-4a2e-af1b7c832027,1609532975,12363679700263657133
+bf0a5b64-dd1f-ca1d-12a3-4accada16d53,3159160264,1254170297077128701
+cb18b37b-7c00-2528-91d0-c9caee13052f,785085971,6506254008489664799
+d91b6018-0194-e624-d9b6-ac1baf940a4e,2173759339,17654277991156095780
+09c4b01d-069d-d277-17a3-e1232fd728f5,1295720928,15889970184471752431
+3e6f6a77-09f2-dd07-dbdc-3e35decbf356,394187337,4064999847138589234
+02c5160a-8502-3e76-02c0-72e4eb759e47,3704016161,10624374557864765477
+1c411107-b96f-00da-7bd8-ae50896d1d80,4061789226,5052291281823650836
+e7a86ca2-0e38-1b76-3d13-98af51b561b7,2871361242,9126992456115288723
+856053d9-5795-1ab9-f4e8-2b46e8f83441,2480320995,12016387019171069477
+d8ebb1b4-aae9-ecd2-8c4a-58474de1f12d,2419858171,4184741868146206464
+fddd0c84-6cfd-e659-4329-a6534aeb9f53,3998479413,13100355529557265111
+43743945-5618-1d98-2139-f9d89e93c6fc,2880142118,11043856396820238472
+0ec75e00-aecb-c634-8f64-22e5332d63f2,3612421096,13905835677888188617
+a5318cdf-3ab5-62b4-aceb-d9d6fcbd013e,122240673,10294700654453242179
+bc3d4304-f0e1-1768-59db-bada19a614e5,1745520464,16387112390395305906
+aaf9ba7b-06d0-8894-06d5-8c520a85411e,3750496564,13157084712469974376
+839afa44-0492-40af-0530-ee5fe133c189,1995287458,4104749339657837717
+9335c358-73a0-39b6-396b-dbd1b59759eb,1039195303,17054569117884974669
+38f94dcc-c652-7aab-437e-3e182eb7623c,804635628,10355825913118407409
+5a2de022-f311-f5cb-32a5-a53207b3b4fe,2152022562,3237858786064020492
+cc18474d-85d1-e30d-4ca6-e29143ff6d65,28219537,16909705358860327236
+52c7d10d-9cf3-61f4-03cd-d7dff166d171,2700766761,16283917510276226670
+6e2be6c6-6210-5cf5-306a-3ae56f2c65b6,2385947824,3088448085064377854
+65a95e25-db9a-a6d2-ea5a-cbf17d0454f4,1709511772,8588911325973004157
+4fb33c52-632c-ab5c-29a1-21ff70afaa56,2481545647,12215132735239151095
+4ea33999-37c5-1041-8d6c-a3f3ab7d5db8,231587230,13770748389326335412
+b2b8671a-c711-86c9-ae4b-99f923280a51,1294900219,9334253364403668783
+a2a6b9f6-85a6-4e79-056a-df5c969c7724,652550411,10216911289642623245
+f089c260-64fd-0a7f-50bb-e2c90081b994,1294883327,10480042876987170098
+d56b012a-37b7-b3ce-bece-db6c46ebedbc,3711134318,2399820746500791472
+87cc7c4b-6374-6bc5-fe1f-3340024e9c1c,3228631178,14031561584459966509
+7ac032dd-2bc1-b0d4-8252-121a6f51a390,3099714859,10938305114732944355
+613cf751-3d3c-3414-fe93-d8bcd541758e,3838051419,18412189709734983765
+7aaca69a-bf4d-e796-d9e5-6bab2a9861c5,4169724894,16779706515326430772
+fcfe0286-abb2-8724-3fc3-7ca652bd4555,2748930091,3599520974062834685
+3a376d84-26ea-80c8-fa80-833829671a4e,1301635498,13377906678825172764
+c3162e21-23a5-b908-f729-4bd438dd624e,2236215265,14351358170782364961
+d14afb36-a631-02cd-35e2-6ac5efac9991,737850360,7828063659949597818
+c8677658-856f-d3b6-f13f-fe0aa3a29df2,1624542666,14367079025725553679
+7c1e7682-4f22-8692-7551-f27dcd384998,1835289060,11272570447445356614
+daa1634a-6ea1-1f67-7dad-3cbd765bb41e,834697783,5344146582554796718
+145f3f4b-c463-a9b8-db4c-41951c07ea85,3879553812,4293287064726009894
+83f268a5-dab7-aced-ba28-2a01e4d6efb6,624339940,5756126182919737167
+3d01c2e5-8ed8-bd56-5052-44c14c205c4c,504176273,5155813230246944601
+bb360817-db96-4ea5-e6bb-57fc13c954c2,1591495896,5295912340615740910
+5fbbece6-63d4-4aa1-c35c-fd316f1c02e2,3377134021,2667326764361078143
+62574464-baa7-067b-e76a-195282fe2cd9,1633633599,9925069020912283268
+e15cd094-f781-f873-e3aa-823260a217bc,2761160772,5539680097323011287
+b4cbc864-ea0b-2abe-b6fa-260d3e78baa2,3249173169,12659601636534392291
+a0dd76ae-9603-283f-5b0e-1b1283c8e581,601843937,17740403994583152619
+6b5a10ef-a0ee-2a40-977c-653e06c719f7,2956316145,4771198695824243519
+605072de-d67e-f71d-07ae-039d3023502c,1305462224,2939695398549720483
+1e9e590f-49bb-7980-8c47-53fba2ca91be,2248695573,3709776380520965834
+633b3ec3-8e52-ce44-6ffa-5b2d31b9bb7b,4252345333,10572771342271290358
+ac981e1d-0f77-ba2a-6919-c5194306d5ea,60859233,14692076894653222536
+b4aea991-6426-af31-67c5-3fc2070547fe,764168467,9250659474234009457
+7417e00a-d481-5171-f578-e3b998b35ca8,1371639791,14881529202256918951
+6bf7a37f-1826-a98d-265f-98ca1c89b0c6,882176967,9668592176102251556
+78a67374-e189-59c4-6a86-9dbca50b158b,1367020048,5270946311456804306
+71754471-b9dd-0ec2-d4d4-2bcad296c684,3019889141,9107129300978647803
+923ad109-2bfc-dd85-55ae-67ce8248279c,2066571136,10823580447613022361
+def2855d-1525-c421-a73b-8866dda71ea3,511371309,2873178811168751459
+c40b255b-af3f-0ad3-b266-cf969ff2654a,3718661891,10948151444767455169
+24b57918-4524-af00-bf12-24eb6c12d238,2196826769,2776402323926890026
+1d86c286-f93f-d7e0-412a-38247ce429a0,1350343209,10625043098942899807
+4b3c2671-aecc-a2a3-2758-ab4521ff9be1,1662068271,18331314238153259248
+c88f68e9-e63d-8431-2f77-4e373d289ded,2046551744,1587237705213324233
+bfaa11a3-eaa8-7646-2adb-6db4db387c6a,2393326841,9788668910029025552
+ba2fb8b6-8013-b739-e2a0-286dc33f6e66,2222870672,15795780556213644741
+40904fe1-8c35-eb86-d067-8bba74b1452c,349085237,15817312024530818955
+0e00e681-2a29-db13-d466-0f11e7de1b1d,954624806,4877059882395203718
+22c349a9-8425-9023-32ed-ac280c000791,2936325887,14959204686923351505
+1325639e-41ab-c6e4-c298-779d69f5ffc2,1736664501,11385582637430874771
+1dab3c4c-9c42-296b-8ff3-704ad2af25fd,1812447590,4354505518414470369
+4ec87ed6-5ef1-c08a-6db6-5a457fbd79ec,2923781411,3669378262121602457
+9ead4e45-3493-68c6-8f6d-8401b7c24a48,3238009609,8078359174724430943
+f9408300-7025-f557-903d-e5d415cd4ded,4153056761,8408069734069361931
+170ff57d-45e5-25c2-23a3-e46fc84702ce,2328950159,14127973619458147963
+7d29abb1-8ca0-ed5a-1225-b56e98207cc8,566345974,11674017285613192602
+9f2c976e-98f1-795c-5ef5-6ed76b48b31e,1085138232,9681665713682585534
+2f608196-93e4-3b1a-35e9-5e501ef87301,700379196,13465176857463421421
+d3ee0fc7-85de-75e9-a05f-f2db1efd4508,1198956899,11534156186400974895
+4b4f252c-4140-e247-b457-614c2332764b,1648440153,3226182337221437769
+e3b643c0-ec69-9d1b-6682-b0c895b64c83,1713174627,62038445070099416
+cf540a51-b706-d559-0f7b-5b337dafc021,29374008,12701070928281868900
+ff9b7fce-07ab-ce5e-0cd2-984ce760b427,3729196240,2942536197925286643
+09fd78f4-3898-d47d-78df-8644c2141c02,3889061282,4993587863536075915
+c6506481-dfa9-65d8-a982-fdd752354c5e,2789580737,4493426007029578455
+d978c4f4-2d5b-9335-8afe-f9b893021ccb,517584505,5495552397965067678
+c8cf2ce4-bb0c-9f20-419a-52980875bb7e,67894349,13964541096272222365
+f0813f77-6375-c344-b673-622dbe3cf183,1910065152,7433652618208220548
+4ad754e8-2faf-956e-4b57-3f49e3d73219,2384666476,12367814817905588753
+1af0dc32-ff09-0483-4036-77f012e7908a,2889047541,8800010886549144476
+d0961a49-9313-1b66-1a4c-529eeb84a040,766988623,5065691500283118178
+01ea2854-27a8-85bd-cc98-361d28b33535,1922634895,14818130239660333579
+e925ed01-766f-be8a-c25c-4f81651544c2,3649750210,15362753370428580822
+f3650c6a-2246-945c-603d-cf4789791d99,748020761,373841525318994261
+74e2e9c1-3c8b-ca41-d15b-5851d9057be0,1666613476,15648322268551337444
+34869139-c02a-9009-1909-aac5b6355dad,3413554893,3849947634966834185
+2879306d-2887-031d-bc47-845492822305,1120509610,4066886280589373355
+6e5d084f-1b05-8648-9fdf-551a08409e2b,1850185221,13784785326002939524
+7e8c354c-d5a9-05bf-1fda-61807aa3b4d2,695389090,17370144038607898843
+c25b4610-bdaa-2a06-247d-eac304c2fc15,1401050585,1955389947520195641
+3f9e20db-23ef-6dc5-fa17-94ba7e3295fc,3631156937,6823190575069214722
+91650bb3-7b08-9ee8-6b95-2cc2d1fd8d2e,2875494118,13762035768676840243
+3ad7bf23-7edc-f89e-ff96-3ab82bdddc4a,3213647698,17785477679480199450
+ae3c2113-a5f0-aba3-599b-7d4a3b67f3f6,966164287,6586614716026017660
+9010b4a5-3dec-bc12-e366-8e12a98957c4,31513418,7399028008830268600
+47c75c3c-d113-9a93-f8bb-db750e80c513,1143989726,11352816348740287768
+1c56679e-8c44-9966-7c64-2727bc032bbf,1590470676,8329204681661374031
+f3d92527-ab77-8c0b-3847-fe40e7a639cc,84253550,17711933315250395478
+aa61968b-54f8-b556-739f-70e7bf8b1339,3426269883,7668585770327169680
+abe5beed-5de5-ee2e-b633-3f876891dc20,149623793,2202142699488705928
+f31f359f-64e6-d146-b43d-5be0d4d3e4f0,3602040518,11260280949472409897
+34ab942a-0bd3-395c-ea86-dcc2b8a9781a,620024714,6012905667794424952
+9ceb1775-5c78-858c-7a9d-7d7a7c063b7f,3641858092,10431102438459116522
+3fcf2bc3-4395-7e1e-3e18-7f198f2758b0,2499129999,10854362371736832390
+1027e0f8-6ea9-3eda-c997-0a075261fe13,1994809799,2020372851264465340
+8b883457-5343-921b-eb7b-1b1850557e3d,453810295,17426990823002521079
+77173599-ccce-9686-e607-a1192b11a3ae,2221298854,16718743546558283876
+49294fce-8efe-0e61-fd4a-b5353660485a,2057220435,3951775078107094906
+31e536e2-526b-3984-8787-9359d49ab02f,277126175,791440786083610833
+3f67633a-41f6-1ee4-0b6f-fce2096cba12,2020916574,3053592117467631980
+29304ed6-6d1d-2904-d1cb-360e0a4a3981,1273847632,11006434830950594811
+58d3fc85-7e30-fd14-09f3-35fb85b332ec,3700045463,12316567951511829588
+54934395-e765-8ea1-0df0-14a0ff2af0a1,3175067156,795446182818640936
+52f8353e-4f4f-83d5-9e1a-5b649ff2e7a1,4110749726,11767947077461468068
+99c89246-c3d6-1f90-f9ba-347bb53dbb12,4121188476,4145133016989219345
+0825a2bd-5a17-0fab-3941-cf2f07c9586b,2400781500,6225508655301001687
+0ed886dd-4dee-d256-275a-78288b7c72fb,3945613752,6330388890389331086
+4ac42868-d1d0-f7a6-9615-7f89f3ea0fb8,4266342101,2048534820501124164
+a4816f52-05d7-72ac-bb6b-68e5d7289378,2111280066,17886433188881599750
+1b4b703b-e00e-eb07-e7d2-339ded799d08,2575480355,17283492484138402781
+30a142da-d670-5df5-daa5-7be2f405c31a,1495692311,16077601073263485720
+168c5cce-8eef-172b-f175-9553a9990b99,904666520,14146984355477844104
+b85463bf-09c0-97fa-be54-7f74455fcac1,1555645161,6925447188071875414
+814643f9-82b6-6027-d50e-5361c85dc521,1642796763,13550967644049527877
+b3ee2302-ba99-6acc-524c-f7eae438972b,149847986,1771907808662706788
+55c3bb25-92c5-25cd-84b5-bce6ebdd2834,3718658820,2397828416556871487
+ded1a69c-9bb6-873d-89ba-337fc37af5a0,2643190061,6182880265839370525
+f00b9687-61cf-4556-42c6-7c69deced03b,931186756,6145652130216430337
+6ee67cc9-33b4-b435-8e97-4fb035b09b43,749677211,9181362199275763603
+147b8ec3-67af-017f-a68f-756b7194f2e3,2405544287,7166310172156396699
+6299821a-2d11-6176-c71a-fca676149336,408141439,11078702023591316266
+32e15589-68f6-685f-bb39-9e8b389698e0,902488230,2062915263801591071
+a0117cfa-c9e8-e3d2-33cb-3e0c5cede02a,1229719405,11861086780428765891
+0cc1782f-ac42-2d19-0430-e3c572d7cdc7,3524125831,8275116546721938942
+286912db-57f6-0a3f-bf55-50f63308b6b3,2095952155,4100775677852250653
+f42e41e1-e631-294e-3582-0b9d55b9889f,2121292428,1391487956882789249
+0fee7cf9-65af-e7e9-17a4-cf7a8cd2dc93,2596983671,8039115272711370731
+05de547b-b627-2eb0-e604-a0ce0654ff7d,168333397,14666481760813563550
+c2cd570e-8156-6f79-949d-d709597b7dab,1590247094,6325598124202075036
+613cf4a1-124e-80b7-1505-3e60221a3796,2801486255,1292185981468063889
+a759a79a-188e-7278-90e9-1f8fa926d1fe,1087416685,1494358521115292193
+c996e6b9-8b88-229d-d543-2c77f3bd30ca,2597200734,263605982210106620
+2f264560-0afc-9081-b11e-bb05a639babd,1955047347,14400483582556229993
+76e445d3-f69f-523c-3a2e-fd2763b62ed2,3935790688,13445315370852829160
+8fb34014-b691-40f9-4151-c5caa96930fe,1318423741,9629195018712153581
+61330699-e3e0-a87c-9ba0-f5f316066897,1194668655,13692170346354317608
+6de2f609-5325-bd17-6670-19d3bad73a3c,954733194,15209884685937351601
+d07a33fb-b1bc-4b88-7ae3-56e0966a106f,2639254478,6724668640199854218
+8e72aabb-6ffb-5349-a77d-d995bf9adb72,138459429,13856080605835105795
+91582cee-f869-0e0c-80c4-2350a166c39e,3789538792,8721877990098767093
+791dd6a0-96fc-f5ff-72c7-a11d2f95e74f,1210812521,4975489972031646892
+9dc45e6b-3794-7454-91af-d2450bc34eac,1692239535,13857663034488940186
+2e8f242e-04de-0575-0b87-b5bc08e92574,4180952556,16219938896946368398
+cddb02f5-7c87-2332-8db4-94c0def0d96f,3866079677,14452923208953609647
+57b382e5-ec94-95a8-5853-532332fd14a5,1823573540,12274767330113086160
+c40490d6-2123-8fd0-dc68-7d8392b1473b,2123724319,13554118884048830651
+0c48a51a-f6d3-674d-087e-fd56238531dc,4198012164,9703598045421615088
+2947b13e-adc4-f0db-38e1-f4e542fb2d42,3125283692,5169039670737304236
+3982d82a-1b95-632b-6959-35ab6bc89203,3319753511,6890634096537677222
+add749f2-d046-11ca-eb41-850cd6fdb69b,4226536685,5196034083707252162
+c8c8c4b2-ee7a-b394-c072-03d642896857,4061817983,17665008472419968810
+ae63ef5a-fcc0-aa88-f1f6-6742620a8a7a,2101638118,16932939038449655563
+d2791cb7-3859-03e6-7f18-c8c89c16d158,4278842858,13585390775795602564
+4be4234a-d7d3-046c-df77-9bcc8533d85c,1721949751,17350188332401147315
+188c956a-2520-bcf3-eb50-2a43b0a1b60f,3559099825,7928135964197965658
+dd9101a5-1735-3a7a-9e98-8890c035383a,1908832704,2937033015711739823
+447bcb26-3deb-35dd-1a41-653b12ee34a8,4213399018,2192805913089482264
+17d23973-ba0e-7b57-4fc0-3c5f42e4e8fe,866936557,11693581151907688847
+de816e42-d931-2d70-ebc8-02f1eab159c4,3097580477,5506867141914152651
+25288182-18fe-5ca9-9835-b61daddf215c,2403783590,15828311576720608745
+6b486bd9-2b61-aeb5-230e-6cab700db811,3672608682,1933063709219403437
+e9ef4f0b-9334-e319-1b5b-df5083a971b5,272793350,16517887521186813114
+75a46255-e236-f1f2-b80b-cb369cd667dd,1418775504,13649318517061778746
+a3f108eb-4a60-5e4a-fa7a-6cdcabc9ec10,3230006418,63126465040624931
+c817ce78-0045-0a58-7854-975e19dd995b,1731941999,17878732217393182195
+82c96a2e-7c4f-7e70-a97c-a90b5731bc42,817240549,8515876575842345155
+94b1636d-cdfc-ef57-9282-9c4e70b1fae4,442942644,9711554803266910294
+21dca075-a910-a567-6ebb-4526ae88c0d5,2991623508,9423181816876014427
+d2fd1c7b-8262-d839-8ffe-7534c19a75b5,507746669,12308257153293178913
+09afc131-23e0-4294-433a-58ea67100c50,3710078446,17766651928892452368
+f0e32048-939f-2f86-0ca9-8c7e4cc4cbf9,1091249266,8209238599269620095
+c2d073e2-eac1-fa94-dd59-06a0a938af32,2296190763,12350799927468717998
+6e64fe11-dcde-d363-1b02-7d72d49a9571,1362429607,16056052759045763646
+5937e18a-0f45-86bd-eb37-940e415a1b43,2825474273,5635080387175322547
+d262af9b-b196-7da2-41e4-12a533337b25,3893859706,13444546277868448689
+0f956050-bdd5-ea0e-2332-aa5e727bcb8e,3506647771,17360677888080313930
+6d0a475b-84c9-9d0b-9102-487ff2552179,204502977,17695126775178009734
+4687c9cb-5205-71d0-b58a-a8dcfdfadb76,2346027950,15613336181636408790
+c14d088c-dd95-80c0-2c0d-70f803b21f2f,1854946297,8966625882978101083
+34108448-e9bb-166b-5cd8-a6c07a3614ba,1726980623,15115671020005415765
+3ca4aa26-aa3f-f777-ef55-d748eada761a,209693323,12224421498403786300
+f8aa225d-41e9-6028-241d-e8790dbc1f39,1293517199,11973018626242192511
+acd722d3-d179-e3c4-30e3-563ab429bfd1,42451241,834696161822773723
+ce01f8ff-94f4-40e9-fafa-1fa8d29f6520,540965878,208292738160673330
+5e306621-373c-8d53-cf1d-dba5fcc9c46d,3315387450,14970268567329674954
+76e51c67-0c3b-336e-b804-9813222e91cd,2930198847,17093897820301127605
+4df6b56f-df0b-382f-efda-f86e6bfa1401,1134655236,7529571242729798119
+7d96e24c-0614-95fa-dc56-a5e919cdce5e,2485421874,15657085655604987078
+0e01e661-0511-5193-215f-598b32f42657,286499455,3548854652452892463
+98f9a75f-8a6e-9ecd-ce67-b1385186350b,2861298409,15844970615159864445
+9b7a6613-6180-76b5-c990-56bac27ce674,1746376513,4480007515857599751
+35aa03a0-266a-f246-7cdb-2911008ab614,871299131,14307014841975361683
+03561e5c-d1e7-30f7-2dec-1f42a74f2f81,3609338692,18339655369321765896
+6c37902c-733f-c09f-8d6b-6a2bf468632b,2183172803,9484527283422658344
+d6a3c5c5-1a2e-4e25-a641-5120ced960ad,2979490170,3626567926564788757
+58f56e7c-b52b-e20c-780a-54dc533f3f2b,1850141416,17591531864081301167
+3c08549b-a791-a894-22a8-1435eae6d95d,847913207,17414732355752498601
+41a5dc09-7f29-92ee-aea8-d0bd259b47ce,2733173313,4291971158489799776
+c92ed659-56cc-f7ac-b294-1abe162054a0,288850585,14829500056903020555
+ac04191e-8e30-4f55-909b-1acea5bcaa7f,289177027,13038767738834139745
+761e95cd-9f0c-0a7f-6d02-be84ad776cae,4120219369,11446778919843189118
+cd84bbb5-2e61-13ab-92c3-cc9259020502,4076522849,9858528489705001007
+6b7eb74d-e0ab-4aaa-42eb-3a7f3802cc92,378152124,7257653789817644286
+d496bec2-60b8-9243-9311-88372c0739aa,1148751472,12417052387948098700
+a3c914ae-9942-2781-9787-fab603d2b6bf,1720230696,11949984029557312764
+41e18c2b-3044-874e-31e0-3dbde269d834,3537455317,3797573150753959469
+17f9ef44-bde9-cb87-11c3-78310a579b40,385797902,10831065184718634664
+2d590d4e-3dfc-b5e9-3f75-b85882a1750a,2993067806,2061798296417593288
+e8c663ee-15cc-8aaf-81bd-ecc3c229fab7,348253625,10717123794537120875
+449728a2-0ccd-71b0-4027-da20c898887c,2862612449,17166150433635567679
+f427d9dc-cdd3-7b04-d192-f576e2ddf747,911395845,9799781969381425179
+adb04ebc-04ee-c126-a1f8-665d860ba029,2372557105,7213144031275566772
+830fd89d-9bd3-f7be-5263-46edba5f4945,1900181549,11757753847369775076
+4c9401cd-148f-4d28-b12c-db8f52cded13,2153889090,4075704199587106808
+602ad4e0-bfca-ed75-e636-0f8a15563cac,2836749629,10520826721117019168
+89071bda-85dd-3b94-8ec2-d2b573c650bd,1727555232,8102766801006582457
+ed651b7f-18a7-86d9-3d69-17a6c3cfa9be,2278493667,11103279631101352203
+0cb8c36a-9142-c061-cd84-fc1545bb2c34,3190022890,1699062953577617540
+5bbfb272-416f-8de5-9d0f-05a234668401,2089656353,14306529542831229613
+e1024595-3a0a-e87b-c6e0-15b553093f1a,1738825310,18092975143537064285
+bada2fd1-1d8d-6583-a197-849e1e339f79,1666310777,1521332699680177851
+3786b8d5-d4c3-bfad-bc8b-52123ac327a4,3124672581,8435141507239526914
+29851075-f2bc-fb07-317d-903719c9070f,238032099,10477818516644145399
+de4d23a1-228f-a4dc-ff45-4cf024d41055,2170423842,8402479755119435008
+4d83e265-6f54-d0b7-adbd-8bdfcde5eff4,922638721,9888734338064566267
+64810c5f-2a25-ca7e-5113-6838f75a3cf7,2436759868,16461617341928201556
+fdbbf66f-63f9-cf6b-6082-3f6795c71c33,3982657954,7377420462698472122
+bbfe3461-d65e-87fd-8f8a-0ff6f0bc1c08,1385397590,3404278447865243992
+0e7e7754-cdfb-331d-b246-6946171192b5,2319656527,3212588698483577898
+49787f9a-f27d-94c7-ba4b-4c6abb7bac74,1456281319,7945391574381105035
+95c69773-17ba-fad6-49b9-caa18ef64e71,2755680968,9081861985290120987
+1ad7bf8e-2645-80b3-5768-552aa1d1618d,2484115224,14751289426508873588
+0f26c3af-ef3b-8f5e-3302-bddd193942fa,4232010106,8733370884593503931
+64aae577-cca0-92aa-8c6f-202c1392996e,3384463634,3097253611111537787
+4ac805f2-0d61-ec05-c607-0ddc92a81fc3,3335710219,1613466333869611013
+35e50912-8342-499b-f725-b1f0fb8fdf2e,2521686505,15817188093806509591
+5b91506f-6563-b6f2-d5ad-f9e480432116,1324705613,2466543023257143550
+cc8e7fa1-1fdf-8ea7-4705-946fc9d1e2c4,3974814372,9025968158138349490
+9a12cde1-b5e6-5065-3d9d-50682ede8bb5,592442381,16054449977516462819
+e21e97c5-c3f3-c2a2-f18d-a808b41a0fad,1669595275,4759252275402050338
+88a56ecf-0ca2-63ec-f7e4-34169c2289ac,2952055434,4565534944630235124
+48bb33d3-889c-3979-8328-0d2817bb2f03,993695792,13393988855070894582
+bc93d855-f320-717b-eb3d-4f9dc96d39bb,1623828104,89193596714336798
+32b42442-111f-b7bd-0337-41e18e096c5e,1123942117,2679373157389082678
+4ad6d68d-de4d-57ac-e22b-1ec9e83614a8,1191400535,15729118549447861360
+27fc72f1-ed32-5be0-c1ef-500df7259826,1682150058,1103068047745166362
+b4be2ef9-2482-194e-5d1f-093343c996dc,1999350064,5683022730622513880
+404d6a21-2b70-bf69-7dd7-5a36a75a8ad5,499744413,13114849545403611165
+c2a943c9-9c3c-e1b8-34d2-c37d9ea3c4ec,3499418088,4072788425851960179
+a0596dd3-6740-12af-1abc-5e0bb5855eb6,3751444383,3248230863847050876
+012111c7-42ef-a837-30c4-a6eabd5106d3,3339425166,16969155791561751076
+b78c6ab6-691e-f46c-20d6-4103a40177cc,1115427928,2021451981829343250
+f061790c-ff86-2322-b9b1-7223d5b2c7b3,3566024633,12421134663535626332
+6b8255bf-b802-8568-c5ce-199c83aaed88,3154807164,17480049922056316960
+87adeda1-47b0-b2f1-2876-a7cd758bab5b,4208690716,4741012454040276291
+21ab951d-ca86-83b3-0d40-24ea5435790c,2348032304,10808213976323270507
+392498d9-ab74-5598-cbcd-eab61f0ec98c,2345788408,12663272136130793909
+7d95db55-4aa7-ea2e-2f49-bf40cb7a5820,371115513,18080297587374238041
+a5275a23-1d47-a4b8-c19b-18745ec81ec6,2114399207,1207338262717573716
+f428af20-4d0e-011c-8004-8b79d43070eb,4097709630,3371733412952266282
+07aa238b-ffc7-7718-3ae8-6af219c2f750,1246387492,2297750840724166326
+258889db-e1fc-950a-152e-8d889e9836ee,2957028707,11105075282832938290
+8e379c1a-8278-78e9-36e4-b247ad3cf229,1808720920,1542850641685416297
+cc46a337-8ae2-c5f0-66fb-52f04914cd7e,3770346978,10303271923688273717
+ff2b9ceb-5550-1bcf-f81b-8779f4717540,2850541189,6685014843244773752
+daa27416-0678-8c78-002b-cbbeae0a6cf6,3070289897,4996790511014739599
+34ff7e29-e607-c880-940b-e0058ce5e289,2487612021,2210857336193159978
+f8efeeea-375c-ff9b-d6fe-04fe4945660e,383684042,2983334140333722121
+4d01476b-d06b-e640-fa24-6ff40a18d155,3804270402,5961069247201314476
+6c04a9b6-5cc8-e0bd-769a-f4cb83cb5c6d,3712503051,11905626301292444974
+7e2338e7-91e4-31b2-8547-99573d2dac2f,1298460457,1739766850959710039
+cdf49ec8-1fe6-c3a4-21b7-30b8bf5ca341,2959395738,12444018374872011651
+40bf71a3-d6bf-92f8-b476-88375598e7bd,1175388302,17994668539767393666
+a69eb135-04a4-21a9-0894-4f50e6b013b4,4007965137,11367475751309513251
+450d9fdf-a229-d125-d959-65a165b94709,2284635334,16060769311919910070
+b7a79a02-604a-ed4d-1a89-3934ab2ee25f,814949802,2821294707608927171
+4fc5ee69-a52b-2923-3ca1-38185cf8a26c,69287842,13041178067926055743
+5177bfbc-b5db-46aa-7e3f-e8061be08460,2316548737,17615060055248691246
+136aaf3b-1adb-bdd8-ac07-3c74f0720764,2259818142,5832255091797052865
+d5efa38e-c5b5-15e6-4455-d71edad09077,1040727159,12568551815687677093
+f4e45d02-fb11-913b-63f5-5a1798f3f8a8,940347570,3501971893670042844
+bd527544-f4d9-7953-9384-fb62b995e012,2978833394,299717262909756322
+9e8b22a0-75e8-ba2f-452a-e4100eb87432,3130739807,18032155411073594627
+6ed4fe5c-180e-3e16-63a7-7228bb1d17a3,1585816821,12215076084361316226
+463169e3-76e6-9968-c641-772d4fa9d2df,2864358232,15796372498724418842
+7366fed8-3434-1ebc-9d8a-192253926971,3418045484,15353028977847394014
+97cfbb25-dd0e-2455-dda4-3e0f5d531725,3071865416,13371243042200737771
+01b601f4-4f2b-314e-c3fa-8fa659016a45,2900719782,16659151986962157900
+1b03672b-71b4-ba41-8a89-dde3ecaa8993,2492020245,1731696884203627703
+45428085-2fc5-fbd2-a5ab-02c06dc2419a,3826081024,5482031962889654899
+2f45b922-b28f-694f-d6c0-462b36bc24f8,105522560,16746302547515390773
+30879a5a-2d9b-bb92-19cb-c5a6d61f7786,3083052614,16593312331972708826
+1414b022-cc33-5dcd-28dd-6fd05f2bedde,365818784,6203279953398025229
+dc120c89-44a6-8d5b-80a6-6986697ffd04,3974218747,18019881210019508861
+4150e57a-1f9e-7f75-41d4-b0ddc863ddb2,2401007765,3009337760572692223
+c05c9cc5-09be-75fd-aacf-d47fd741a4b2,3931492205,8383059304117336394
+299a5b2c-7a84-be6c-2296-1f580828e5ff,1122191358,4811820092740048699
+6a1c8677-2274-807a-69d7-69891966c6c1,2796684781,7145958465270523421
+1dcb3247-b6a9-253d-dd07-4b7104de6a49,3649646164,7945504511131258987
+155dae25-734a-391c-d6d1-1d7427d84515,1022094108,6714178771196513769
+4664199f-4b57-5d06-e81e-713b9a8e111f,3517787290,15886728301328834683
+73ec51ee-50c6-4189-8b29-52b1cce950cb,3358209399,5598888383571557825
+1ca36d72-8d0f-baac-2a8f-b56796a3efad,3524906952,9679659547368110156
+1d2bbfdb-24be-74ae-c0bf-672c7e3a7839,1313969824,3576256596366080327
+0689f1ff-4b6e-62ae-5680-2e653740587f,2732002392,1410132342781972914
+5baeba79-494c-3ba0-af1c-5eef421627fd,2700803734,3429304716284320254
+9b5976ad-2a4c-de99-1235-157d112bc67a,952934889,8856510589530256979
+39a44984-7dd3-cb29-70cf-12ae6200b143,2130269154,5683229437391880494
+653120bf-bddc-0999-2cf1-adb2d6c194e4,2376692548,17272042836043175990
+bf4c204b-e15d-e094-bbc0-2a1849365a0b,3288301378,16155320718276394935
+200cd770-c31a-51f6-42ae-084cff248d20,1800785293,17418836861674596331
+aa51e363-3ee5-0b82-0013-861fb8cd1de4,1544330611,16282493541291538361
+a87a5dad-502f-a888-93c8-b2ee3f83d3c7,3928779685,11454594520237447616
+516db307-c599-a167-537c-6e9cd1e1877d,1120432708,6666182564635462520
+c0da3578-8cb3-c9a5-5ad0-ced1073a7df2,2707916381,7898640048916396665
+852ab540-2e4a-ea09-4693-3b4a24e911b1,3514708732,467352328452777078
+31f46628-fa39-b8b2-768c-14c2bf220774,3321702389,14959046700498089371
+3e18749e-66d9-0e0c-2058-8f13da76a552,1154478542,10943162395923221987
+8c3039d2-c5ea-b990-abc2-bd023cb6d432,3479138339,17496033869956067372
+603d34b2-2b9b-4353-da3b-e26cf139d95b,1107083602,2033544507602584495
+3b8131a8-197e-583c-aa3c-daaa279c6fb5,1238288494,13019031584790658458
+b61730a8-ae1e-349d-7533-e0943322bbef,1332327741,7483101381196650060
+2dd35049-90f9-335c-7d06-bb75d70ab394,2949632828,15043770227158944664
+c6811cf8-c594-0bca-f0c1-c5756124fe09,2594037582,6616338263534759440
+e446580d-1b5c-072b-d812-5ff5ea9275a3,3291865170,11391162980443787929
+b725dbf9-c1cd-e7c3-8a91-f3a0f9efc24e,2211497971,16902728861396179391
+314b5905-93a6-4bfc-1ac2-7b79e79b4da5,2369534429,18295828523413111420
+7b7a4d8f-626e-300b-3c57-438113b68cab,2256089522,6599907977903870404
+a278547f-878a-7a9c-400f-ebc53bd23672,44310295,12539524564434123999
+e23fa728-2c9d-8d0e-7204-6b9e9dfd93b1,670007128,5920622364922511582
+715519d2-1836-861f-31ee-8470d31d0b3e,2002735950,10669085929367679136
+4172828c-aa3d-f774-a54e-b683302c6f3f,322860398,16432520839372457284
+90086a87-385f-4589-6ede-37c11febab89,4226489352,16692311312351780921
+cd00e626-b2dc-109a-647b-9d06120cbdba,1904202166,15395158419198502995
+761df7d3-0826-6c52-02ac-da8021aca12e,3254185538,3377860383744331940
+4917076e-2aba-52e3-6fc2-4e02ae48302a,3258143233,15294432561284235162
+907ff528-3166-5af0-7126-f4a72e5b4e0e,3157199823,1827858984519461867
+d6e2c2eb-8444-543b-7e02-0f77c97661a3,833329538,10779089431924884457
+3954f3d1-7af1-b0da-6457-e6d15805f7cc,3818572323,11002454644018117162
+23159fdc-6239-db9c-b49b-24d4781b8b08,3188928307,14229635461202772457
+9994a4c2-fe0e-f380-56bf-497e055c6a37,1638506964,3741476662386220546
+12b931b6-49ba-be70-098e-7c21a187a592,3052982751,4338903225721700906
+a55be1a8-6d9c-4959-f4e9-7cbad1d6e976,485450966,15623733526913230635
+96586ff9-bd09-ffeb-e1a9-0255500c3d51,4008650939,6101414694326325785
+39d8c8a9-7c2d-bf4f-4b20-23b65a571de1,3607915798,7982037298613723210
+59f3bf74-3326-1762-bc95-6da511d90ba8,2975395462,9510347625236799364
+3df9261d-21d1-b029-a4a5-4dfd0f1841d2,1494158767,11616795682998964203
+d27a578d-cc3a-ab1d-51e1-3c65e7a1213a,417417735,11727613171391144276
+c5911fa0-a49c-491c-3f9a-ca1b28673833,2166020222,7316836771886758436
+21a12383-55a9-c0dd-f3ff-cdae3c55c32f,2413947937,15035223517093561885
+55946c42-e05e-570f-de3a-a021c0882a6e,949149017,12965411627795815464
+f521391f-60e7-8edd-2c0a-76e29087f602,1396509846,4416628086003922837
+8562abcd-2e9d-42b5-c87b-6fb4c591b77e,3925538776,14156669505274657373
+d98c7fe2-6119-2d05-fbca-7866ab9196ec,1941598521,3548297158029018250
+42449237-1e05-46f3-b88d-2038ad80b820,1557939995,9981859889830178650
+2ae239ed-44bc-073a-6a7c-b4232ba2b87d,1571291749,12352701401476820471
+2a6a278e-5aa0-372e-7318-be3791a58ba0,3334208420,11867563824026127485
+be4a215a-8ddb-f3be-104f-835b4ed4e70d,1050227970,14070560357949487111
+373d0d1b-4cd5-c192-6baf-d894ec124d58,641272333,13769336277332234228
+a5b72641-8319-0a23-3211-e92979b654b9,2942652532,11571530851942756584
+5042826d-a8b9-71f8-68d9-bd55166d0381,151040670,10307966014651081305
+d159b041-eb69-c041-84be-204339b3207f,3799330495,16902607185396784207
+b13d8f41-05e2-9718-63aa-45f84e1e492e,3621573233,3011708318313170686
+72a9e296-f67d-db28-0ad5-7f57894eeb6c,3164893955,15684023619023664359
+d91a492c-1759-2810-e48e-3f928b3525b1,1537297126,11819637793303550200
+0169b178-c330-8b5b-3496-12dc24614ad8,1817881847,6289240465272207040
+58b017a0-8ceb-29fd-0959-0e8ec6b98ccf,4021711303,15027113237456599233
+9426fd36-f7dc-f2b5-8430-e8e006e60da3,971232674,3182829193372695439
+6e9a08d8-073f-9fb9-58fa-1d6346e3af3c,4183290032,7820357719815005799
+2fef18f4-61ca-a861-a435-21cccd948c82,1537515207,14795174773729182560
+ba8882e5-e7b3-5b98-e129-32d75077de0b,3986622481,18128925479570319755
+b8e93983-7510-2215-d7cb-c8d4bba86713,3500807475,2969227294673234228
+956606b3-17d2-176f-8eb1-e8f0f51580ed,327583664,603645625659675624
+20419951-d476-4211-dbe5-6e578fb3288f,1719270117,14336682929872541631
+ad55e517-a07a-507f-664f-6c010d2182d1,161751306,3122271385709119783
+22682915-1a8b-b96b-93d1-bdb088e02316,2790439442,6363906023770237597
+6a0283f6-a7e2-d8e6-933d-c1f3e327a959,1348732533,2314695936704302810
+0fe3b0e0-a72a-ac3a-4b4a-17b11b0af63c,1302331304,18002456473490525996
+486fc861-df84-2c6e-e9a6-cdef94ed7fce,1532753174,4194484988141768798
+2f3fff76-9fa7-b0f7-0748-e6e1865748c0,2037626691,3177581262510550344
+91747e58-cc7b-932b-2ac4-391fad2e6cad,1750878911,18392063244199561775
+f20c4a15-a58b-2a1f-5256-60d50d3d2b34,2896749431,10247613067550069446
+6635c7c2-1884-c318-9770-1900d1c2bbe8,3782005139,13167928871075139229
+a5d43643-65f8-2591-2e60-728413deca48,4007691898,2083354919638451500
+437dab55-c87b-27ee-d409-fdfd05a8f164,670758283,2578670515451313142
+ea126b31-3962-f9c0-f3ee-b19f44bbd43a,1419432445,15921930133822641509
+4748e8e6-ae95-28b0-8822-3198c410d0a2,2663540668,3974559923369621636
+de001e1e-0d24-a843-08fc-0e239656188c,1298627203,9587253828354308373
+99eb32df-67ba-bf58-d266-c5f97be409c1,3019290292,18183893979791258525
+58e6f649-5c02-2ee4-152b-42433519afa7,3371758245,15571956601152988248
+bbbe2a8d-80f4-a9ca-47b7-d8c7e9b1ad2a,3738727494,3413892156694301053
+6c8db97a-d7f0-1e55-9ac7-5d7b53842074,1566652462,9466795373308767582
+6bd27e14-0767-9cf0-e91f-4a26d0de41bd,1105392430,2214519861859219294
+dc92bbbe-bfe0-3858-186c-4e5c27951712,1952417329,14941004442985209405
+6ecdbf9e-a412-2015-59aa-a415cf84c1a7,442653488,4895200230565641901
+9a31fe64-8b5f-18e1-5a54-199967d821f6,49102178,5977531911736983835
+dd45d81c-1884-16fe-f37d-14dc6d03b882,2581991261,17439644475436478746
+d46e6e3c-e50c-a3e4-73da-8f62dd2af5c6,632574172,7781060196937451970
+eb37c5dc-1d7a-5b5c-b95e-b80193e3ee5a,4158086364,13663358420833705858
+48e35a3f-494d-1623-9edc-bbb158debafa,2096592175,17096290915693615883
+545af897-9a75-da8c-2baa-34232ce81c25,3097961270,110829415792502532
+81b523b1-3de2-37b5-c52a-902e291e5759,2886192438,11333313568161251363
+a37984b8-1c06-f9ac-d217-905483735028,2600349207,12621594379051968391
+e0961e85-05f6-33e5-74ec-af9db13bd8aa,3968112231,14946290687508131551
+071e7fd4-c7df-cb37-3bb0-8e0da66d52c3,3483457466,5345852117478875459
+1db2f1bb-cc4c-2483-943f-6f55150c8d50,2696811063,16219563829378826676
+f68d6a8e-3d36-ae55-b067-5dd22da4be5a,1407929162,9285400085701923675
+9188440e-0e21-4372-6ff9-c78cfa2feb5d,1760618537,8579748434419817192
+c6b051e5-c940-19b1-9a74-03e09a6cfee4,4050772306,9846259691728555321
+660f1d46-8a37-b3d3-d812-50fa4d21da2a,2663235541,975955788591320853
+c3ebab6e-9f5e-fb5b-8354-e77d963433a5,3277115164,13645009969232932113
+f5f603ef-2f1c-f3d2-05ff-6c23b923ea20,3643647731,9282369086073119786
+e2f1e2dd-fefc-9a0d-57a9-3fa07ed57b96,1822288678,15260481879668686165
+a4fabb93-25f5-45f7-d1c9-c45f80ba40cb,2137306627,16795094343567501856
+9151c441-6b38-2b8e-1065-572e87a716d9,4229272541,16289508509529437767
+55f06629-439a-21cc-6aa7-cfb43ca8ed0e,3489929459,611905708129380422
+4f14de5f-d4eb-44a5-834a-c6b39b8fad65,2538646470,7985312497267524575
+9946af2f-6d92-d30d-5c0e-f6bb7cad0164,2311936536,10332558742689849943
+5627d359-02c1-c6e1-3a3a-400b1ec338ae,4081660890,16011940922009088308
+69e9d545-6200-b8d1-4a5b-c70b57b28bb6,491321050,7969455619032300802
+827529ef-2446-26de-6de2-af86e10bfac6,311995907,6864592985310819672
+86efb06d-4ec1-5e91-cc8b-6be2a289669e,1944252123,8616392040031519600
+24df9d21-158f-5bf1-1f13-0c03f7cd6903,1643370636,15942820376663444213
+16ef43cc-854d-d8f5-204b-9272d97fea86,4143570179,12811665002450626209
+f133db80-167e-389b-d765-1e8ecbc3ce54,2856400820,13928694163694316000
+35de274e-0e48-c6f9-ad97-4e067ff68539,1391036734,7911905091249728131
+270a7efc-f91c-27e5-1a83-6d34a1727256,1047781279,10562269670024174759
+93727316-c798-da29-e1fe-dabfdde44add,2667115425,6103598932367013284
+cb5b946c-ae8c-8ec3-7eca-51dffcde4051,2692084151,17142950867561278713
+3108bfb7-d1e7-573b-63c6-244d40996825,2227265541,14696909546685503440
+c6c8893d-179a-4e75-6d0b-2e60a1b1375e,4054609925,3423288685622739394
+b2f86fc0-b7d2-4fa3-240a-446c7447309c,4224706137,2488073159136920000
+eea0d46f-2542-8e1a-ecb3-8d4f6fcb43fc,2510360776,9157834587276071443
+cba5af59-2d6d-fcf4-99b8-8e55ae676739,286131277,7332498670361718778
+880607c4-fd23-c140-a648-edd306565e04,4123605339,15294070649376155301
+0d9acc3e-c2f3-b624-6bf8-80073b9cfd3d,3085412453,10561163862780385827
+36255e53-8dc1-a42b-781a-58d97d5a5c51,642337810,4487631110972656189
+815a3889-d86b-4025-d655-771f338eaa03,3941746637,12357203674659203703
+4955d901-9c87-fa5d-e3a9-de5778b64cf4,593955123,1283025870849472296
+855c5103-7a57-77aa-ff6a-57f8931f5431,1942544674,13731367823048581310
+e76c1913-b011-33e8-0f22-7596d413ae7d,1636963017,5740832160338957707
+a5cad0ea-e012-443b-7a27-e173f76fc7e5,578197525,17562191044251091344
+04888708-1e48-b6dd-3c60-f35637a3f699,1983442535,54959129246175663
+f612546d-eefe-744a-6674-37919516ad81,535865138,16012345327369263589
+654ce04c-5105-aec5-e414-c7e93ba6adc3,3595342867,14092578924105023348
+d3e1ad5b-4a6f-ff8e-cf0c-51b5395f4b0e,413769074,10641253908577700151
+87f1073e-345b-01f5-247e-054a39259081,1618267833,15483477206873687344
+4c5ae63a-9c1c-d414-dc79-e5203510eabd,3238869271,7270603598877358018
+2ec881fa-be33-1150-bc56-d2b42a5c602d,283546331,17761925616832563783
+9830e0e2-8f96-3951-4544-6fab6b86d3fa,2935751716,17400340069959318831
+31f6e1fc-5684-839e-6cb9-2188307f01ff,4234136647,5460009581619687814
+5fc8a1f1-81ce-0705-1170-4dde084f50b1,2887457426,12790530152440149415
+6a3efd73-77d6-4151-d2b2-ba1eb4a6626f,1983427161,1579712946543600438
+88eea42a-4226-3942-2d10-dcdd92e22b07,3026099570,7669733418403357504
+8ec2da2b-7d8d-bbb2-4b37-0c60716a26c8,3792217174,5083210317764695338
+63a2c3f8-b33e-6bb9-f48b-48118e168c00,2532667254,13068648250370930762
+96063012-a5e1-ec78-20d2-cf94c215f8a9,3250102459,2716277421926036029
+0cbf7025-ed58-1391-70fe-626d8d532eca,3582235886,6291321374016108540
+dd1756fa-2b57-5b84-faf3-0a4064ebc0da,2775557289,12740413777781020266
+ab69fbaf-b224-48db-3e30-7da46cb790b2,2548745220,16148573866710332030
+3045d62d-358e-6da6-c054-0a7075a3e6c1,180277570,6149832831186222519
+825c2252-679b-3a32-221d-75629bc31e70,2976744637,3157974208527028578
+b34ab1a3-98d9-aa6d-3d17-dbeda8abba18,3586893789,2904777577076370391
+2afa0cd9-9554-f30b-c8a6-957218ad4819,2378446953,1003479777058244570
+9f20f0c1-10ca-0da3-49b8-7d00a7760a75,1011112912,10434071777002050443
+ed09c137-5243-ce5b-7592-1bc3595773ac,556684944,8441925155761322036
+7465f0ae-a3e6-2bc5-9ae2-c93312b228c6,2843475910,9580871978751662042
+88d64347-ef69-c1ff-9e7e-f918c692b915,3931367346,14308808626179389032
+20c9e1c4-26b2-8049-4ebe-9e74a356412a,4229850905,12401971526247849739
+961188ef-0318-0e3d-2d78-5f66e918d394,3557549298,2314878467593576709
+61e2ce05-0548-9c61-388c-9c88d0651afd,2651693217,14208113562416839061
+b679658e-bbe9-a255-460d-afb10e721c3e,4787473,274655896405470018
+ebe32934-2b65-0519-0e70-be797e1659d8,4248015872,17611609685171797753
+6fbd6f5d-9ef5-78b5-954a-26aca31da364,1268078969,5281734326647328873
+943b9718-5d8a-eeb0-e774-7212f3c4515f,4273513897,8625583335288217128
+29da6730-0599-b59d-9a9f-a01a598c534b,2637184560,15046138780326037470
+ffff851f-9e32-b7d5-8b3d-e27a8899511a,3630593922,11709792086298211583
+0ef0710b-bee5-00c8-509b-e4d90d23c349,875324545,16362804031606771571
+6bdf10c3-601c-cc0e-615e-c1567a030fa3,2122915379,3944535219131706986
+9cb522a5-7060-b4c0-2157-97e0e6b950ee,101606169,10450545246658900265
+6600d212-00e3-6d75-687e-7648ceecf6d9,1073523392,6134802060178535694
+6f412744-0070-25e6-61eb-6cc38f04b64b,2804868755,18322815224257475430
+51ab0f2f-9054-b907-391d-897ac2245699,190545610,17177704614698417713
+a656054c-2299-ac4a-f46c-60a41eacaec9,1155585624,5997116778461831345
+bff50aba-aa5d-130f-bca1-d6909b7a8abb,3569305994,9552001005923281593
+920505eb-88e3-6484-aaf7-06d7a15d1644,1341375173,12392917027412101642
+8cb439e9-5ab5-5734-43d1-c6301177eda6,1631335403,3009997345915486986
+8d111d72-a27d-e7cf-8e35-bfc7151754e6,3365883918,11159995547762981475
+a14d928d-2c3d-2332-0985-1248b8fb7f6f,2847815053,7580732277448997084
+7b22930f-27a5-8814-a9e3-b5480cc520af,686884638,13746457832806526217
+d00555b8-b474-562e-c3c6-d420ac8fa5a8,3098636295,6862749853226441150
+aa3e2be9-2f93-106b-e9a1-3475ec27ef01,2965738047,10205396406754986060
+cba8f26e-208c-4758-d78d-0531f1b30172,154643211,13903478906388603645
+3a53ec41-f3ed-dcfa-f1a1-28f6a0023b69,2372381979,7951001948703478419
+d51fba88-475e-5c2c-f8d4-ca43a6bbbb16,3747283894,14767638982651051217
+355eb965-e4d3-cc36-b503-a4a88a39f9f4,1020307105,1684988764994013589
+fb037fa6-b980-dcee-47e7-2513b76d434a,1045333811,7673032603824167978
+b06839a9-d75f-cc62-8fe0-b7c956fd73f8,2026981569,17874266010694417133
+0e2c85bc-309f-2f39-e6c3-a5267222489b,1204398051,11107699564977256848
+d24c8058-6d8f-5efc-bb19-d39c5c0f6f98,200405109,4310212495276093560
+8735205e-399e-671c-8cbd-bec23a231ea0,4182666636,16490474281489437085
+e55ab895-a83d-c2c0-7071-7545088d6577,1511542949,10898809896621823331
+4a115863-d626-6b58-31d5-68c81fc0da54,4283686951,8538842357325454960
+82e062f4-bd89-6820-de36-1b90ea1d4af0,412815984,4037302005800221582
+00ca781d-1bff-7bc8-d717-97bf28eca6bf,1545878851,14905835291468162865
+9a77c6ec-62ed-a80e-b727-2d301483a4de,2060004523,13078995030448264921
+4836210c-61cb-6425-f8bd-813ef71ec945,3461296205,13843233275904432941
+5ee65887-bacf-4d4d-06ae-7609e6014cdd,4207131861,571641065946767446
+45972aa1-825d-9ab0-765b-770118f9a7ad,406288144,4491299007589553094
+50c79e32-7202-59b0-c2c9-0b0b43716044,3538544837,5290001088581934449
+a09f3a9a-71d5-90ad-81f5-afa8d1435334,433596769,12187552950103077893
+56cf8b20-0d30-4b15-4204-bde69653044d,917033820,3543106700343163412
+6f586e3b-c7ae-faee-6806-25fa7d29ef01,3983811044,16871410985186667351
+329f132d-bebf-db98-61e0-818de919abd5,3166171204,14238945888909577940
+2f0709f5-f403-0cd0-51b5-de943cc16647,580073944,10194294372105604688
+c7be5cd9-1fc7-c813-9942-68baa5a1335d,2990214252,13415638196760410048
+91b04911-afc2-7117-0ce4-1e44f395697b,2347029455,1281090645163711644
+1a695738-fc87-bbb0-318c-d4c9da42f125,540183735,6935218218458077028
+d17c078f-7569-1e54-f40a-1009acdbe09a,1676193281,16146470331301661812
+f920a5fa-addb-e16e-d2c9-47608e4013cc,1500594357,12732745752872205488
+f896e7b8-cdf0-499d-4179-497193c48e8e,2618502048,2996861590205338851
+d74cc5b2-0d8c-e4fc-36c3-68934d34c63b,2749222524,9013767053046064054
+6e7b4567-897c-dd3b-29ff-4bff2c987f12,608662355,9286182811479996357
+6d3f62a9-1f8d-43fc-3cd9-099c7dfb2a54,2802268162,14550394952299029227
+313d6c33-503c-29b7-ce42-561f42bc74eb,4080421811,11860917549242279520
+0548bdf1-0ff0-a622-7ce9-33b27e218062,4231656959,4197284886378640689
+b406ce7d-a64d-2832-011c-e25d72261c8b,914745357,8811285850795136759
+84056c62-ea36-5a30-243d-b93e05337c0c,286230351,1820556535005162966
+e6f8eff9-e5df-55c1-287b-778c1e2cbbd8,1595018582,17948838713388719059
+35bfe7fa-2960-3a54-f335-9ec942e98909,4139639981,17000989676759674619
+dbc1bed1-32f4-4d19-e91e-6861c2d3d4a1,1779577949,12969550034527691255
+eea4e246-109a-d8bc-cf9a-80137ac5ac5b,2610144535,14274019019612038497
+94fe9ee7-7d3a-8b6b-46b4-d83c51047b92,416616447,5166352699093963015
+ccae3ff9-e959-c879-38d5-dad625c3027d,1418531682,8583297062337254557
+23b94b9f-7804-2c39-c048-7b8640df976b,520734389,11634418197003728322
+02861097-0fde-6fd9-c9a9-5eb9e5942aba,4042650773,5073408587069320884
+055a8b2d-e753-7885-5b50-f01f015d7e1a,948354638,14701057820634261743
+9ad8d15c-d02e-5d38-4f07-f32317f72f4a,3420410168,3196243683111342107
+44a44054-115c-062c-72a7-3e1e35daf646,2105187155,17447974743781084666
+d2f04a32-7efb-c81d-f87e-8dc6451735eb,2740072143,14412286403180662239
+49c088f6-2568-cc76-53fa-9e5422a8618e,1042559968,10616737339511401361
+46d411cf-4d5f-32f4-b982-616162b5a54d,3374141307,9303834015480150630
+8f43eb9d-c18f-47ee-0c42-4445a275c563,1455689498,13762121011259450419
+376504fa-c5ad-bf72-88e7-5488d0e1065a,3148364100,12181612501616406416
+ae14519d-c6f2-c38e-57d0-d299bafce7f9,2546607955,3558763337706589884
+69c84ea8-7a04-351e-8b66-af9c84909c62,2859399577,15101529148662917530
+e6dda677-511c-9a09-b43c-884da71c0aac,997594555,10921663031116382081
+ff73a7ac-3312-414c-dc59-bf12a2f1401d,1334903535,1796605386586993577
+10b860f7-1d9f-65eb-fd74-e9fba659fb09,581865311,2329701534711711341
+670dffff-35b8-57c5-0a46-0b8f7dc13709,695212274,12135181328798421408
+65b4dbc9-6efe-1671-f3df-0a753c05e7ff,3698779314,17405234342354917071
+e6c064c8-0724-f4ff-d2e2-9e8db058e7a0,57514392,14137234626191937984
+9ec9a4c0-4f31-8265-5701-f300636f04f4,1056388126,9385577106627645020
+1d92ebbb-cf70-8349-1c07-8a61b1a346dd,1844657922,18135446336313945841
+fd027090-fe28-02d7-b70b-6cdb5f84b4f1,792299972,16162861589300567724
+4ca747c6-d6bb-73d8-9dde-cabc123087d7,132959456,14314620464876341709
+e6a03783-f445-9d57-ca95-32a3ead8c1f3,3505428922,13895465749349604395
+fa128f51-be17-7cca-0624-a2775ae97324,238654980,18143945285327781587
+2d1db064-2fe1-9e2e-f3db-a2a9a9338501,2239587776,16144487885140990089
+d405e42e-d3db-335c-9f11-8da2b93584b8,3014986120,14293731766257291631
+892059ac-6db7-0e3e-281a-54744bc36cdd,2003991535,18361460272451662385
+3f3e0cbc-51a4-dd40-bfda-6816797b3070,2492928121,9254208239454762092
+566a3a11-8fe1-a782-5ac3-92fcb77d2f67,1680155723,11516995366196439637
+10015f4c-64c8-3d62-040d-3c92cb8a7c6f,423538927,17086104501790778448
+37ffb514-ff91-93bf-9d8e-d66da7e3a338,2373446514,9546863350055372972
+29c7c37a-5769-51f0-6440-5f175fe7d649,3610601181,9157289898687480195
+58a289f2-d940-075c-4aba-ffedcdb056ed,1445556250,1606939715399597970
+eb9beec8-b78d-9e5a-acca-248c8b6f98ee,4176462684,14643225585583664781
+939aab08-3444-e50e-0e0d-d1326131c5b9,589542743,15693221907893459661
+165a0785-f5c5-389e-a509-a0a02de689a9,1579767187,3075521448066745907
+bfb4d249-3dee-8d7b-da97-65c4cb7a3451,3605215301,9579611716958069734
+2f658d90-72b1-7bf7-bf30-289681b77690,4248698965,12883210042756372160
+2d2da618-27be-630c-21f1-e6cd0a9e3af7,2525384677,2193614930727393801
+a3f8076b-2668-43e9-2f69-227d1ad820a5,4257798229,14753870304510516555
+fa09fa03-2356-7c82-e07a-7ccbfa7cb534,4169349162,13072649547649879611
+ee9f4b8d-fc00-e0ae-07e6-2e40cfb40226,3296233994,1052310365154986881
+13f0367e-48ff-c749-d6a0-9dc5d75f977e,1647281480,11461848860143379210
+e98a044b-e87b-80d2-d625-949616d36dc3,211240802,6935570911120293393
+04346570-9037-ce77-4a5f-b69883deb53a,3082281230,9445468963712650329
+5955168e-547b-48d0-e275-389bc4d01f45,2062358552,6204675464523884531
+cfda659d-6433-4e71-ea64-b7f787faa8d9,3581628717,5977328380234211730
+3d6f53bd-4f04-e7dd-359f-0f0dc1b6393c,4242078163,2643636792860693898
+de4c5c42-c644-4660-9190-53d54ee25784,1033919541,14658956082277651833
+175484aa-ca04-d850-0118-2b7202d27d5c,2175274092,12496788103756368540
+246c07fd-5c1e-71ac-f1e8-711e21279f5a,233935504,7764477340967062981
+3b06e7e3-6a1c-09de-0fca-0a78d8174c6c,746330021,10390768024104301365
+f5b4f23c-afbd-deb7-a12d-516e388f0634,2151318344,8196004270351907193
+4599fa24-4fa9-f15e-c5ba-a27b0368bbaf,2091549998,2107083604301140711
+cddd32aa-eed7-88fc-8765-9a14ae6152bd,777335747,11403208768404582878
+cdfec52b-ee61-1aab-65e4-f10d01d0c948,3624663002,7371049237319251395
+7b5cf61d-e1f2-e1b2-fe26-5c917f9eb7a9,3161869381,7242791260291145311
+2bceda12-7675-9546-cecc-8d7768a0a151,3259083506,11004284384871994823
+ecf8e517-5414-032f-7a1c-717ca0cc7b7a,1281991803,6052432865750880820
+790cca93-4633-3184-adf3-87155586da83,4280790371,4599933566439456341
+79543c82-8244-0110-8a85-29e92f122c9a,4176130584,15663661171681778013
+d0675ec2-4927-fbbb-5486-8b0d8b13bc3d,2987106893,14699196624078939569
+17db60bb-da6b-2267-a698-0ad0692777c9,3631247658,1725176975038823857
+7560ef0a-e0a9-081b-255d-800d0231aed1,628969534,10174023652530141650
+186bf7da-1e5a-e672-c957-1b649ecda363,490414909,4641272200172233551
+47b4b487-1c36-313f-871a-70496b29c432,851184014,9419715740164960686
+9f2031c4-4cd0-819d-12e2-da6967930adf,1869226049,10831185198890743674
+0e269941-d857-fba7-4182-f1f226bad5a0,2962120581,16509222678814771580
+d6c9db5e-f3ba-29d3-cc57-51d356f878a8,2768482503,8964748605675820167
+692cf8fb-bd62-020a-1986-9feaf37e4a41,611428647,15530552699821418310
+2db9b6b3-3721-44f2-52f2-532fa385d36d,958898300,9234705766382651704
+13e1648b-96d9-4dd5-80cc-16beb3531e66,2438941516,2218661375608817051
+fd311b06-c1af-a1cd-6223-29ba6d2bfaef,1298183006,4170284860109338962
+640dcdf1-e71f-ad19-dedd-d94ecfe71e08,2282494738,10259869523937314165
+efc706fc-0827-f1c4-fcac-0a3b35a97e5c,1979586355,18073991836420332628
+d1ddeeb6-3455-6edd-c5c0-c1faeec8c191,1381266227,9856282657319983490
+a68fd444-5645-d2f5-b1c3-b9fdd2ff4b1e,3370383002,4808668531499203996
+bb7a54d4-b2cf-6a30-262e-5fe50b45f29e,4162253697,14125695052735391032
+b4c06add-9030-c5fc-fcc4-3982f2135b08,3804738307,2175597536860781243
+57a7dc87-c2aa-5058-0265-8618694ea1db,3200054561,11831100391813682179
+06a987b7-66bd-36b3-ac0d-ec3895a1837c,3888572359,3359881464141959196
+f03d64a9-998f-003a-c89e-7ee9776fd219,1350296829,11812515170738412501
+516c20da-0f63-cda3-67b7-52277c2a0c38,1237650295,15799374029941623914
+b1917e38-e68b-8656-1117-57720742d757,2362518454,630072244776635444
+4d513787-5bb6-3020-2e41-b694c0f2e710,3619327375,6987381238475408123
+9f4ecef8-57fa-2931-07bd-718ceed78d71,1443936217,17968056858966061188
+ce95f669-1bb8-7086-9f0f-552840de7c2c,1836748198,7555621511043025612
+264a4468-8df4-06e8-5e35-094cbc5185ba,1074820818,4486386762416496398
+186b1510-381a-d531-bf0e-3a5431a634e2,1091966202,7159736078403373312
+6635e523-021c-a67d-e428-1dad3ea54851,2632878794,4380913546093709379
+0ff4028c-ac99-ee59-3045-810f2aa1f18d,1216896926,8958450725490767425
+e39473b5-3e62-1c73-c90a-b81eb276479b,1262612814,1365386438125153067
+1e689e5c-2175-dbda-bc02-4a9a96567b37,2210357643,13086559457301789160
+d0a7a4b0-adaf-5e93-b0e0-036fc735db9c,388933822,10169105849619035558
+d24a10b6-a74c-a5dc-10a3-2d24001d33e3,1717505381,8058864778504591494
+e073896d-9812-730c-2e05-32bf5be35d93,3627382689,12431214954288352346
+11fb847c-da67-7c60-3424-bc6d52e5a57a,2560915795,8046773679166598848
+1d9764d9-084d-6e2d-b54e-85ebd60d4d74,1703871791,15830137095966591067
+b5a673e8-366f-f340-4bc5-8f9467d1c64f,659137043,11421447448231015233
+a4fb5d85-faa9-2c63-ac5b-5f6986537d7b,339450113,18242305821657732931
+58c3f6b1-03c4-42ff-f066-cd20a016a308,333214970,681855802433855829
+0a3368f1-bc21-3bf6-c93e-806f0201c3e9,397887934,17232117755819669091
+28d4e4e7-3d1f-9dc7-da7a-81c9c5f9a076,1174548971,11326693412937606839
+2f966978-4198-9aba-b570-d92dc4118bdc,159536952,4666312662878314099
+3dd7ccdf-70d9-9cd6-f26b-c682f7af2ef3,952313720,7558870352971600877
+291fb0a0-a305-282a-ed5a-1f38ecb27481,2212982195,14698642740867475146
+f1708ad1-6284-251c-b3c6-c9072316f3bf,1435707283,9102299428728494155
+58c436e5-8cab-79ad-25ec-8aeded19ce26,4246816826,4543163414503839628
+58f6a51f-17a6-20dd-be46-3493dfada8ff,3521295609,14941508665418290791
+df8e7f81-7a6b-d46a-0d12-a5c6103ef33b,916312751,18186370287498663438
+02f0d61e-fddc-cb0c-a086-73538f00c3bb,123202687,9512549394035013085
+bb624712-853b-8f89-bc9f-3ed02898bcdb,516725625,11861544754051307110
+ae2b7623-7f6c-518a-361e-b7ac25153b63,3943334622,10331385172656859800
+0d7550f0-0eac-8fdd-b525-27c8c2aec3c8,3395326409,12411428858989456096
+5d6da942-1ff4-00f7-aba8-1e10ef29cb7b,3651744549,2742068651046916384
+44df3ffb-86e0-592e-859f-4cbdc06399ba,452683999,12799217629024368248
+9d9d2a28-fbb0-a882-ae44-79d9fc4a4f51,1763557875,14535210095784198037
+04ef9cc8-5b2c-feff-20a8-ff05b6f66be5,1195483241,9168554294753886197
+220fe13e-056d-770e-ab43-a757b4145895,3663990092,9093222994274193061
+2abf8da6-b72d-fd26-fd1f-6955eca31d53,3790019182,16061929420606924789
+4fc70365-de65-6951-75e1-8c5edaa75794,1176570120,13618686486754486596
+ea02b7c7-ea66-25df-4dc1-614c97028c7a,2648981484,9556636060729124571
+e0a2eabb-4e5b-30b5-d131-94bb5fcc49dd,2766543609,452051516663999238
+9149c8a6-82a2-37b5-e300-f5dab170d31c,1352344301,8370148345201957937
+18e7f413-0a31-3bf6-9a5e-94b30f3c6c18,149779375,11752714466168006469
+849c31a2-b23b-472b-3a4d-082660afc8b8,1529565700,942771152628177046
+5ccf7219-f01d-7145-6351-447e61d4404a,2585752187,15469548895285701921
+c68f5cc2-dd96-7387-278b-4f85a1b7a3fb,2661771278,389893358294460609
+73fdebe2-5e0a-e7dc-a3ea-fa220f54b11c,582327558,8230053455504453783
+8047f16d-a9d6-2294-2c4e-a4539463a8b1,1660143005,2077695549878040782
+3231c2ed-821b-5825-c5f4-83e9f2919542,759205976,4061505734476888502
+63dbf857-1baa-c1d1-1b8c-83bfc8f37f8f,2057294381,8618786154497042350
+c61df3f7-f9f8-f1a3-b532-2cb740dfd9d0,2667640499,13404376896367095189
+67b3507b-1bfe-1880-a9ad-5d1903bf1674,3499759763,2257518364369723271
+c245f01a-9c0f-81dd-6822-d884b0aadf44,1231321541,14412408473511569576
+86427283-5497-a466-6cfc-7932fabee077,2083369483,6127373802956285643
+82cfff8a-eef3-d724-57d1-327d57e74f0f,3577018355,3502648133425980516
+25fd644f-229c-c74d-49d6-c08359195208,2306745243,8369303097309985858
+0ef70f18-9d9a-7636-0338-a5330caaf1d0,3615260585,15698255924967974138
+32e75d59-25f6-9a86-4e8d-348901fabd3e,219794526,539000739783762908
+4dd08a25-d26d-e46c-ba61-95330f65e7cf,2292050017,14063720021648663865
+dbe8a0ef-744c-5cda-33a1-68cf5a405082,2947262126,13992680504422128697
+f9d83377-46b8-b1d5-d94f-d656b42774e0,1571212380,6353443186519271793
+d7c9721e-b795-e0ea-e6ed-6c87e91ffbd3,1094780057,17543416685563411199
+4e3c0d93-d8de-1a8c-ac3c-7d603e7fd6be,3803614010,5189780989330765708
+677d519c-ac54-a144-b43c-418b14493755,237858181,11077281059319904437
+76d9745d-fcde-8fd2-8081-79406769984b,3046400952,4268032503800814258
+2cf46c05-18ee-b7fe-2453-ef096ae723b0,4037210150,18408728329534425954
+ffea8d1f-fa97-38b6-e322-deb630694a79,2360958331,7217635749863883534
+deb7403a-367f-3a48-95ce-60e1fcb7ab44,4211520267,6822652436755733294
+ccdb4f24-cd9f-18f0-fa90-a8089d4af4d8,820308809,3351355991020561922
+6a6c0551-75bd-1cbe-ab88-f0fcfc764bf7,1667837479,8339164364187723624
+6c882fbb-919c-f970-2a8e-4434e5bb9716,3158837250,562352107114704106
+948ff382-ebc0-41df-cc58-2cb120e7f09d,3548374675,229873257531521066
+d373fec7-3c07-7f4d-87b7-9c1e4d597d96,96173923,16354809720795794511
+13793128-5e5e-5d48-322f-0f2dd5f9fb81,3883460420,11816525736981037731
+8ac89a0f-d384-a7c0-8ede-f99621d58656,3565811911,8393723849351513509
+14df3795-90f8-5191-6cc1-8bb7884fa25a,2308461790,15574133550255016402
+bac3189c-4e38-a265-b297-c677a95cba03,450651250,4027843632788580688
+20c22041-c793-6737-2d9a-c993b9cf299e,437417088,756387002663362862
+a2d4e194-770e-ad5a-934c-7b0f616c280a,2749526544,7205380920088585598
+4257fe4b-8251-0a62-35f4-c310c27f421e,1964494673,6145568832049109635
+112d316a-8a7e-4440-2f5e-712abf47e9a7,3115965337,17736901958964933348
+4baf442d-027a-a657-40d6-e506ae4eb9d3,1971851242,14996435907341389507
+30459f3b-ef30-4197-dabe-b9b39f014a73,1339475914,2790964753668517113
+f109fe3c-cc70-f2e2-82a1-e31e1ce7deb8,2054031820,2799955275264445688
+2d33df33-b237-d5b2-a796-73138a211a2a,1288018110,8307555783950286032
+7f189a76-c1da-b60f-045b-073f571ae529,529844019,387591513513417711
+ffe67273-03e3-d51d-7f9b-4d7fcdbb09f7,156387231,9555475957597398795
+3bd095eb-3106-81a6-bb25-c5193786c133,860642531,17373272960736238748
+7e6c444d-3ede-9228-558b-c5b5332de864,1773431037,4692602203422238140
+5d9e0ecd-214f-6234-a9ae-0c8dda784d86,3798627407,16586306828701864098
+24f841ec-da65-ab2e-356d-41a1132c7336,479735261,2629751984654226675
+e00e9e53-b8a8-28fe-7a7f-8254ee9cd414,1595518931,11645471128737497016
+4d8dccce-5fc2-e69e-712d-99d7b35cc920,4259318592,6825356645070453358
+4773e513-2c6b-10d4-9609-dbb66c304267,2910314548,17863813367984752056
+99a64942-758f-3144-a9ac-d1ec3041b4d2,2312200768,328454439419006980
+da8fed96-73ba-5a95-61ab-ff440d6b44bb,916558078,5677589554109621367
+243d6dd7-ef4b-b3b5-dabf-452dae00bc03,20473326,10381948835922624460
+1bfb7253-340b-9eda-8762-239666201ff4,1746453169,17433774380293513446
+e0fcfa3b-3591-fcf0-f735-5b500db04aae,3319797574,15343928130323733267
+2127cc63-10c8-f5df-bcbd-b62b681eba33,2118629575,10752740573017374184
+8d1cce41-e4d0-42bc-4641-0192de7e3bf6,1140773905,10055486546638405181
+6a585ecb-e512-9d2f-ad0f-171a6108e622,1690684430,11793803052914418213
+82ae95b2-5de3-8cc6-125b-dbaea26fdd73,352423856,10202830893904848796
+ef0b5761-86ae-f9a5-7ed0-1ccf73ec3047,3631039771,15807405545548930615
+e5a1fc95-f9f1-af8c-8877-286aa1b35439,1124584515,15104534959749919401
+4d339c48-fdbf-281b-285a-6f29daaabc50,4086020665,13048019644639984143
+9aa91d8d-f25e-17d0-87fd-02ed5633d7cd,3498842875,5927186798122892507
+70eb8636-b7fe-6a44-6cda-f39837df867b,1179586013,3945187451606515215
+f54d6848-493f-09e6-c551-9dd0599f657b,3015381172,8552086295939794086
+a6d04d13-3672-f378-c088-c231fe94b752,3264018579,2509986655040667547
+eab4b77b-7c07-896c-35d2-e4f1d4d2f5c4,1807591133,1341474493369858126
+a6853123-bf9d-e199-f6f2-5b406b31ec65,1657249744,17240912574000169736
+ae2697be-2af6-8b37-d19c-e074cc4a76b4,4272434772,7461455586946324078
+80bf5a89-af74-456b-cd3a-2197a9d32c07,715381152,11723883725467183020
+ca37125f-2ac0-fbec-2fe1-576470eb5b7e,940142471,11859118661681147342
+01c0eb03-0c1d-3dba-2eb5-4dd022d55249,3800776889,2493547246976725186
+be1fa578-c9e0-5085-297b-8afad43c048e,243281698,12100847581019842882
+95279ee1-e5f0-2950-c0d8-bd25af073be9,1874895453,8723150549758458873
+7892f712-e60b-ae0f-de86-9c3ef12e6419,1035721857,480533296697951103
+d0e26dc3-a7ea-72d8-8fd0-41d662b0e13d,4116557687,10328375399488866527
+f3a23986-7bda-3cf9-1cd1-ee63b016ca75,696741842,12284897577044428577
+93c6a44a-33df-52a0-fa2b-4726875baf7a,2980811212,12724258049784808135
+fd2ce0d9-f50f-ad67-8bc0-45d4070ccc37,3082341613,5138445283570175173
+e46d99c1-8f43-016f-9a9f-2466b2071258,3469537353,14066701978202690711
+bb3ccbbb-85a9-29bd-2e3f-8af25cb32885,1151342005,16617622697128462632
+5dc7737c-00fd-6277-a224-356fa018355a,136006663,4861530879720335934
+6fbb7c73-edc8-64ac-88af-cc4dc68b9261,4045739433,1133033274165935432
+9d9de60b-8418-abac-9d65-83986023566b,1821480224,8748820929947081352
+4bae3740-d486-f6d9-e216-3a489978638c,3476798968,13544438934095655995
+a003550d-afe6-072f-f85e-466b93634cf7,2629722693,21220227162870089
+1df73821-d4d6-3aae-1acb-dfaadb64fdd0,564478076,17713944134747178563
+81b9717a-df98-5587-0f4d-30ee3e32c641,2451639072,13006692940808137835
+63c0f949-a8eb-77b0-9907-438fa17eb2f1,1206027646,16739339086621859014
+4cef1bc8-c910-a231-8055-6349b503664b,1431490984,12614186216397597941
+5708ec46-934d-7693-38e7-e3915edbd350,4278729658,10479232876816878472
+576d3abb-62d0-6c5d-4e32-774d8a807112,1550332384,12210264458676525100
+95bf9fa3-0852-7a18-cfcb-009d3142baf6,3876437367,7779709025323616604
+bb2d9dc6-f581-ec6c-72f9-b8ada3fba84c,1140623067,12363016985694566021
+2ae04793-5fc1-ef20-7e26-fed4b5f0f4ee,1169111135,3803801107156077555
+f1cba606-5fa0-6034-e885-2f41a5dbacec,2347467476,701754781537674493
+42cbfed4-6037-2b61-cb3c-08dc6e84ab9f,951981607,10631864578191496325
+5d674429-2ed7-c91f-4e6e-6e5c406ba14a,4060023484,17636147896346335597
+f39c71b3-614c-c7f9-63ad-d6ec77085346,173802445,16387557151376878403
+7a20ea83-e0ab-61c3-f50c-9b874f9747dc,3912068555,17511866484921155889
+7482db80-fb52-3e7c-5e8b-b49eb5c98179,1141833189,17702253432572918072
+fc045dfd-094f-3128-aa4e-cde7fc2559e7,1821779050,5825361151001969780
+352d2c5c-d129-7fab-7f25-0e6e710b248a,2034232961,8077172008061885037
+cb6df865-48bb-77c3-1425-db55c402ec20,2558345581,18362314377656474310
+81929180-8c2b-2ed8-3494-1fdb593c8d76,1119407908,14602740826361956093
+e81217f5-14fa-58e7-8354-5ee98ead2197,3638453624,14215979097036891815
+48fad873-ba42-b8c3-aa00-a1582af37b69,3502698045,8270695427368422651
+5082194a-f632-de4f-7a4c-c027d0d9e2c3,2298163226,16373210722881754011
+58e422ed-0cfb-526d-4372-fc7566d2db7b,4022123544,1058223845917471294
+46d0213e-0854-7148-fd16-e8abc6c5fade,1854879954,232956977770045595
+6c3e894f-0456-4fd7-c2e4-c0e98eac2476,2748945268,7784608081622271421
+02509117-ef7d-f75c-0578-cc6b6f6c68e3,3968434014,3330386171849047286
+9d33b6ec-89b1-fa9c-05b0-184e5db4370f,2301134411,9057049207124594104
+77bb6878-17ce-558c-6af9-1addd6d9fe0c,2188064134,4317361416478444200
+ac2919fc-b44e-db2d-c535-855440d349d2,2686986064,8646200901453087628
+b77cf20e-a38f-6e51-9eff-21472974779e,3786067515,14024504527391022610
+ca5d96b3-761c-b3de-eb27-0969d0c0a80f,2443075363,18069931718428930908
+da8e8432-a5ec-f4b8-9470-85cb26f8d451,1087383989,685649105311168970
+065ef570-06bb-9162-2d12-3f0d3774f9d5,3448052724,7570694287390259168
+0913964d-e571-e095-69aa-c2e2196a90dd,489012814,10765945791946699807
+0c5a38d9-a6d7-d86a-624a-7de11e8c7d09,4131133008,14448026884124706099
+0416681c-a8dc-11ec-a6c5-02db7f01cd74,3584161547,4649074524774447682
+8603b93f-d4d2-8e1e-43a1-1da5d1d04c08,2530933349,3028516315623163908
+e3cba181-a064-80b8-9dcd-ec8fbeff1df6,3424752610,7689950310136279069
+8a0d81f5-828a-f8eb-46cb-8526d30b9218,592003184,14208817029636892910
+2a434f26-9d81-3779-2372-a5963dee6b10,2418152403,15373396243657493524
+d680b61d-65be-5f7d-26d9-3992eb28f9e9,3470886990,8314117339690457606
+498d3efa-ae26-e903-1d48-b4446fc5f2c7,2624919852,6287021602282817077
+29e25c25-5b59-6a4e-f2fc-d08d0292ba5b,4095627351,13867953545798463298
+501eeaa7-258f-d365-ccb1-9dde76c978b7,2107548938,12090811007935145309
+52436dbe-fb8b-2d95-2b30-ef30d03b835c,3097362251,3291214911879710405
+40b5b87d-4493-f168-457e-7104da895399,596709625,1486953052269299725
+78201957-91ab-5b71-51f3-3321e4d1f03f,3494661223,3032774492020629063
+98701cf3-4421-dacf-ab17-c31bee06beb6,3217929185,7517065309630031130
+e367b9bf-ce6a-d665-1e36-7477b21b6313,1889245714,11891599996580596504
+ce0f5fc6-2b28-6040-8098-249c7424e1cf,2402393824,15124118067556864348
+af481d9c-9f37-b0c3-3a86-09a4d084ac7e,2179425563,2847482956727713772
+5f248423-5dd7-3895-6eac-a59d62246f77,2500094148,10454057858011096156
+45b9c79f-ab85-ae90-6059-b903c4932757,2795963234,5872278342066917427
+ec2ca804-1a93-7fc2-f0dc-def234dda55c,1119156924,4800012267383312246
+a91db998-a045-373d-5746-bb8c298f01f1,3253259572,790705818259559744
+7be58ab7-3ebf-dcf7-f7f8-8db68b027ec9,3262561625,10668281020507539978
+b4a75177-b323-528c-7d20-43d3270cbd28,2227978314,15917034244217057679
+f6cfafd1-f726-04bc-43bc-fdcac1d05ff0,994013220,8690486165552315146
+6a6872c8-d495-64a7-07fb-6ab64c0e6759,2782666279,1777448221132061348
+344bef27-8e41-8db7-d281-757ba55ac935,2717189615,4735107158766319220
+50c6359d-b7fd-8586-8735-883ad9411b1d,2609203067,13625464902062913654
+49a2c0f2-1712-fef7-fadd-c12da0624223,1355369069,14140367953976950419
+d12b5bbc-4036-64d3-e806-74099f2a2159,2993896648,14805266025616923990
+5cc05a84-c4f7-d983-3191-ca76c5ef3236,4122628357,28481671261550773
+142935e7-22c7-23c4-e1aa-890cba76fceb,3165639174,13293934882115101210
+a3d98816-3784-bfa1-b016-c8d66d7836a3,1816724613,12418088168679951808
+77fa5134-e52c-e458-2f70-1364e33b427b,106055020,11986595986606405430
+10861e17-2a00-3683-8f8d-db1f332792f9,767002197,18379927563302990283
+11ce4338-04ee-4655-1087-2c4baf2f9ce2,1366314631,13327712973809676192
+a3c56ef0-1727-2648-d3bf-725e5227f881,670604270,4125457088698837683
+6f5d9a81-8c23-9f59-7dd1-7ce064077f39,2754772242,6781975863431109219
+4dd0a07b-30bb-abc0-ebdf-ace1923c3a5d,618904248,15704983161518446910
+3ca1ae1e-2522-7375-c777-b75fdcaf04f8,620984035,4399776714700246270
+eead0aeb-20f9-98c5-0560-9fecac198ee9,1413600716,11157634814105331133
+0f29b424-e9c3-4000-e273-bb99df521a39,485899317,7125609591516331112
+60b3e46d-db4e-d9e1-4657-e70690033805,2444836267,7575279002434821864
+d813d06d-9a16-a64e-fda2-e991a69ac065,217427841,16991463023054404521
+d52cd44e-5d0e-1a5a-e608-0aeb2718ef15,3150229520,16747347834043149659
+b8d9f5fa-9477-298d-d9b7-db39ed5ee52a,2201111283,15742445008660347896
+fe723a88-9662-190f-aa36-7800647c919a,537455340,10550873038236961291
+3b3ccd8b-2d5e-2178-146b-d7f1ce595aaa,1158914836,3782022799301273034
+125fca36-130c-04eb-b5a7-47d5948ae7fc,1667765740,12179212295210250746
+a14c59d3-5eac-6ed4-d58a-6f496fb4b722,3128940036,16184699867939679623
+f2404f57-6e00-1457-0ab0-1551b3eeac5b,2436998518,13069016318944287493
+30d2ed7b-7987-3620-97c5-dc7cb210b819,42158684,11826229322761672297
+1bc12c32-c734-93b5-592a-4d505d0be101,3454237335,12315765216305844057
+16c0f057-8cf4-15a5-4884-b9f2f4e8181a,278599373,10903388778302942867
+2aa57252-3cdf-04c0-615e-69fd91158b02,1084915420,10116503173027715524
+3aeeb62b-7b62-f90d-736a-17351935e85f,4095841441,14656879180828561842
+7bfa3dbe-0bb1-2412-b391-8bedaebaafcf,840256317,18401676821629287649
+a0516581-a71d-1aea-00f6-5b677d06e4b0,892843227,3518485759489586041
+1c277a09-7455-44f5-316f-5d430137f26b,2511541339,11818427949601547385
+6a2c1c44-f989-15e3-2655-ec1976fd2379,1403733846,10012679617543598259
+dc2fb2a4-6bcf-4067-2f80-5712af9c5490,2995227225,11352528111496803172
+18d7a984-fccc-23ff-f683-589d1e89fcef,2522613166,3149280501644424316
+4883df2d-309e-c5aa-2518-d00d61c281bc,666152760,8910763769283469435
+33dc759a-160b-ba15-84cf-0f6985617d6d,2835249258,4855993025920801178
+e01f6aa3-fd49-77c4-c5e3-d40c5d133e0d,2167185022,4819182551947956740
+e0c830fa-b947-bec1-b8fe-2861961a3590,799089505,13853459901726213896
+3adb3042-c324-b7f3-25d3-34edb9db5642,1639198876,16804731934724266978
+8554a1fb-eb51-e570-a850-c1cea90fe44e,3910790790,10561785080898663877
+bbd50a07-9926-e676-3e82-0ac512fcbaf1,4064132149,16887833903599967518
+7e6cde87-3038-5a48-1ca4-496d38525db5,515636964,7789065176210212865
+9b5e9ee7-3fd3-ffbe-e452-51eb6e1ef574,1063802092,3713263356664780672
+0c3c0d02-c001-3d0e-911d-f456a4339599,3536799402,10485586815574273537
+8cf7913f-40d1-411c-cd07-244529eed53e,3110762394,11928683830334221655
+8c669e64-b403-34e4-fbe1-029b2e4e9f0a,4215955550,7456956437457953861
+7445cb6b-3395-f4d0-20de-1a19022f8721,380958641,2852425924316270019
+044bfcc3-37e8-050d-20cf-4796b5ffcfa2,1712446480,12326286177177883339
+b394981b-400e-4c6f-f0f7-4c2fcb6ccd81,2802910930,84690841923955270
+e7aa5642-9fbb-c982-21e1-2e1263b1ab9b,2252898987,4060515385117533153
+7f7e4220-f899-efc9-e3d5-109a2f0d4f62,2737835121,7122226451017083545
+c460fb72-5db4-6400-e7a7-c16fb650d083,824005604,9356195102219545373
+965ba2bc-541e-0e14-115f-267afd7cedce,3484605649,11510516839433953662
+0610ae7e-6721-15c2-c172-fb9f9f8bcb3f,3551969872,14937238254142669698
+4d3aaa7d-38d5-929f-fa93-f44db89260cb,624526971,15802208200729198730
+bd06a72f-edb4-1200-98f0-c1aa9f482c5a,1466047602,13921340071319110334
+74818450-f195-14aa-9722-fa3417b9fdf8,1054119143,8209650706146501271
+5ddc9e31-e40e-19f1-4193-ae40b4c8a32e,1178279614,17374416344998332613
+f301209f-f75b-8079-b5c8-7cde66f89014,2497685299,11081718188801284497
+f6f4f34b-dee7-ba0d-6128-7a70210b033d,3996871937,9567606366503185498
+50f6d537-3df0-444f-6b3a-064c020823a5,1203820742,15832819842945652341
+f838e281-e3f2-f1d7-17c1-3ee3bef78a8a,1263774354,16366400766755323318
+23d10e83-f3ba-d9f4-bd80-03fc0a164cc7,2160869708,9707478699395597571
+28f9807e-e175-1ce2-85c7-fa254e83ea0a,2749019397,15452437503137349518
+bed82e68-be36-2256-4123-e4b4cce57d76,654302370,13640325759500055303
+e959c962-682a-432f-50a9-3981a7036575,2677512593,15083680610286315413
+eec9b295-5c34-9e90-2d51-cb8889666648,1407035283,17962162672216328937
+f76c8c61-36fa-ef91-0434-93efc81027ee,679010795,1662899226429483819
+f93fbc62-2790-a0d8-9a01-b762153f846d,1409021521,8793375074573806994
+20a59b7a-308d-5b83-5a45-9d2802e3dfba,18774590,10063585592720277671
+21b052af-13f7-5f4c-9e13-5a84da485e5c,4175219816,5495113831954326274
+feaa66d1-2b4e-600e-c7a4-d1c39e8118a9,413045819,2459745254918635773
+9a428457-fd3f-b4bd-7ca2-c8f85f04e9ba,1401275335,5731819886194434242
+26f41ce4-5314-ca1f-3942-19af8a3139d6,1232415580,15664447698145039365
+fcc3118b-9b58-6f0b-346c-8cfebd6a2405,2670424231,13980775683042427570
+eb3da61b-8728-c5fa-0847-36eba9609c1e,2718828102,8244610431177028741
+2fbc23b5-6470-282c-30c6-f8c3e3bfeddc,1973128029,15659978157359177656
+c0f0fcf6-ed1c-a857-e457-0a2c72fa598b,2940490402,7840261247685246474
+1ea6ffa8-6930-b75b-05b2-0f6d1059796f,829053587,3909543458769891761
+dc7cd619-9319-3f0c-e6e5-2250a3e193a6,1973542149,13851262467150665277
+5988c6a1-6358-22b9-9845-de4237dad44b,3809409665,17917196783813371409
+3dab0925-f48b-8748-b042-b7faa430096f,1915729094,13613428769586256451
+6200336b-1bf6-31d3-ee33-0efc9ef2703c,1128101346,7361615387503304718
+a7cc3d36-1193-4348-5641-209c29ac5314,1368324609,11233875526820840319
+e2f45df3-81bd-b31b-3df5-c2106655d687,2864893436,7112639543787330144
+ee2364fd-01cf-0b26-35b7-0ae4607ce46d,1105448282,5917841216525213098
+d39f1661-12d0-2522-04bc-73333e727dda,2113141326,10878073317208700779
+22d0ec55-452f-d18c-566e-6732c6803108,3052370316,4409782070011156507
+cd801acd-6cce-ce5e-9fbc-c9f7090daf8f,2488323575,9474895329663224282
+2c7d62c0-03ca-d8fb-0fd4-958c97d1df49,1139251318,8404588676441913625
+98d6d59e-8f8d-099e-4f95-9e9cdceb7d1d,1039538738,4674467685191753585
+e91859c2-50a5-1cf0-655e-b588e0cb37ea,2171067091,14833816855257950044
+5928ecf6-076f-a02e-260d-f2b3cf5ceceb,2367245228,13582183410429337296
+9a7212e5-22e7-4383-1abe-73b18e2c31d6,4099242463,2240950783495126136
+21dda68c-b1ea-6158-baa1-5a2c131e9b2b,2564468390,157919780070331567
+033161d8-451e-2bbf-d33c-13efb7c78791,3369459315,15443361556359802741
+9a5a3788-2440-961a-d09c-0fb3af80a668,1780332752,1535112248414202829
+601d019e-05df-045b-4e6b-613bd35895b4,832824521,3800689078308646049
+c90c4fcf-a499-e097-eed4-f02f48595104,4237443318,7289042125834269754
+376ef44b-012b-5ebf-b14b-3fb264c60345,2603810709,1495071348812550088
+412f05f6-0a39-ae5f-5bb3-84e243932c41,3803753736,4324932570951508692
+4ba07601-e4a5-bd75-e883-000ff6a5b60e,1344670769,7339975576252146655
+b0e87cd0-427d-300e-46b9-df9a105f39f3,3173977164,4021212599080168695
+34f7cc8f-caaf-59ff-8e1e-a8956867cc44,336918439,5141678338763987970
+24b8fdc3-5aaf-0192-ec85-9c7876aba6f3,891148534,16550756848716366683
+85354dad-6240-c2fc-4399-743c57140419,2313336286,14267604535106173704
+8dfd077c-6797-890e-7fca-89ea8e512f5a,1512464764,5381083841058515382
+c9fb1208-1170-a592-e6dd-45cc07b1769b,2422455369,10562015062190238563
+2a4c0c62-5e6b-e56d-d2f7-d7e93b9283d1,2656819143,14145698527292347852
+0dc0bb0a-c563-92a4-cfb4-8233cf3b1986,204318533,12727679961219812042
+6da6f5d0-5847-0d3f-cebb-850bc72c002e,927130916,17785020178159883544
+1d6720a6-2015-feef-28f4-dcdefd948a24,125282235,10183296433012538003
+cef67ba1-4fd3-f812-8814-d4d83765b572,4222365590,14419588148836705821
+92d2ee18-6796-099e-3917-bbd93e7746ef,2913045376,31652848505121258
+18ab5d6b-bca5-467f-c652-38866913e093,599342210,7120790451138620434
+5b96c1c1-7fd8-9d44-474b-61650dddedc5,874573055,17936635203961294922
+b57c5385-02f9-14b5-a8f9-62b11f419a12,829224590,9189851726612010423
+2f996ec2-61c0-e4a9-2269-04caf0ac6145,2978655247,3970105991524159264
+75e6219f-3771-0fae-59b7-31ef8529831e,2676903505,16318093254529157139
+58576229-77c2-3108-1146-7d3968a2a094,1272476754,9136170701852739011
+cb20b662-6eb8-8fe7-9e26-27367c8f7130,1260639637,10421465386919873478
+51a30e0c-924d-d7e2-c5d4-433d620aeb9c,3180023943,8639672144863261959
+f8a7d030-201a-dd1a-3fd1-6cbe19ae2bf5,2844301670,13079756290748935283
+3d0d8fa1-dc21-d748-8d20-9d2ef86c214b,2323813442,4284062550017947888
+9d21b9a2-d149-b821-ff36-899963d34b16,181772211,1197217225155596028
+9dfadc12-8514-e309-babc-030270ff05dc,3928823151,2120153761111535449
+95aa2ffd-fbf1-bfb9-4de4-ffe9c0615f1c,2867135583,13613506722080072085
+fb98f6d2-dac5-922c-fdc6-ac3e274bd8bf,3364086683,18023660205664596904
+6fd31bc9-d2f3-f467-ae28-c8dc624eff9b,3344482283,15692386026477851954
+7f952a6c-162c-ef6d-48d4-c1556d04958a,2740238447,3019364057014561920
+7d4a0763-58dc-1410-322d-870784ee9b6a,3843891375,12458999409140152094
+f3706a5d-8d52-f42a-e7d3-7ef9b6ab36f4,1679992446,6497011493174021713
+132d410c-588e-d157-1755-c1233bba728e,1980521508,12990433868377495183
+0beaa8ae-09c1-58e0-6d2c-9afa721ee60c,963517731,13002114507635854293
+f3244883-a0b4-141f-5298-2e877ec21644,360363093,2972441756179739934
+df980a50-1611-532c-4cbd-9e26a20493e2,3811565298,13410864634972194780
+219c9ebf-ac14-eed2-5e73-0e0857d1af5d,110654574,1611180790163554088
+53b70f3d-dbf9-0e4b-8f3a-0a9ddce7e5e2,3820837753,9364803664802518344
+8c9f5a42-ebbe-0631-26d7-980f0383d4b9,1539742950,2063602125313397426
+28473cba-7ae0-486d-0d8b-f12b3d869866,2244671667,9479197630389973187
+68936102-e9d4-797f-5d58-e055d134028c,3482453824,12063082590012082277
+a074498a-0346-1ade-0f7c-7a1c84bec3eb,3579313931,13402277856345407160
+3e80d1ef-28a8-8dde-f839-da3ac4fbb238,391658024,16927814563281826408
+b54d05f7-72eb-ec45-d242-d70fb08cf9e9,3126630174,12186403254541195733
+ac063ffc-4989-8b52-457e-3ac7018b0877,830456404,12643039075486746055
+fa09b21d-f51f-25e9-0376-058fbe9b9341,1083951576,9397687794501024503
+8e4c131b-d9e2-56ec-4198-453805d0ba90,3968042677,15666317789331032248
+069ff03e-e90a-82e0-894d-f34f7bcd454c,3653609408,16940291875025686871
+bacbbad2-f8cd-62ea-327e-6b06538a9fa7,749300501,148176437801557396
+73071032-f298-9e0b-679c-ac8f6ee33c61,2872769482,6177588291139312686
+b9226cdb-ab08-6030-b7c3-74eb343f6821,3352595375,10729090219488077758
+1e8e1a7e-ecad-cc5c-19a8-ed6d4b2ba141,835253741,11038941724880671544
+b5a8a653-56c9-c268-3907-bbb91ace47d3,3080429076,18381665668383770255
+e5434b82-d355-0e8b-2982-b67add5533b6,67726067,4045021258520208003
+ab990d8b-38a6-b17d-5c7a-47e3933ee9b4,4178551972,16226129379729521736
+db749058-5bf4-dac4-010b-281f8cf64ab8,3102363134,16061047398982236425
+be64e05a-6ebe-8662-f825-b96017821c0a,1237594589,2024974593807982656
+6ff1cc59-4bd9-2ab3-cade-325ec1aefe19,3488406021,2486867937815481325
+99bb89e1-d510-920c-b632-1115e5bd2785,2011449138,5259379576014092807
+a09dbf78-3352-e5db-0b38-de13ccc44c69,411159260,5793028277860741702
+9c77f123-078e-9dbc-d862-e823b84e9174,2950546134,11024201091833047512
+dcd9cd1a-34bd-fe50-6fd2-aec15a293576,3226085550,11637954320055171530
+74b56656-310c-6587-ffeb-00dfb98e19b3,707170867,5045096001525787373
+662c8bbd-ae19-7aa4-1c13-6780701f1550,4198090265,3080470828958459131
+4ceccb8e-ae76-8f26-e583-5ec794078b1c,4284107459,11794804932275917215
+b50cf377-c68a-f4d7-c197-bff80e5277db,3206835916,9751678251756546671
+0d93cf83-2de8-2fad-a789-5d753451315e,2545633271,7363537920972535390
+22c223a4-a172-72e8-9aaa-02b63e331c0d,3872147264,16644110224935344757
+2a9e4ba0-c24f-0472-7ad3-0a7f43585992,2829906939,12153661089671033962
+0489c1f2-4f22-4372-a40d-79e8b509dea0,3162652336,12697933340813349902
+eaa63341-0d19-753b-511a-b6bc77e980fe,1784337409,10291092960745826485
+fa9a1ad0-e3ea-3412-577b-b375a07f2b0f,947233309,13477084418659761055
+97d24efc-adc6-29a7-fe6e-b5e610b74239,2612472454,6497633844813483653
+86fa846c-1cba-7a60-f15b-6d466356bbdb,3773638857,7917411780086066087
+b57bcf13-c060-43aa-7f9a-f993ef447e0f,3184167261,7546153380732416116
+6f325467-740e-286b-7bb9-3c55b6fbb869,2749708697,11806790496390912465
+9ddeb6b5-0526-d721-1710-9376b8dbd7dc,251450232,15315640567250781272
+85c4cbc2-e4ae-3305-b4c5-f7a944bf6917,1432401486,9755330907824586823
+c99b0a49-b9e1-35fc-075f-c6c687f90b7e,3161369546,6833589722678996148
+0a6aa5f8-2400-2c21-e1fc-99a5b10f9ed5,4269888634,3276058606675175819
+64619e18-7bfe-7d39-722f-213f3300f95a,4142782894,289135016081784920
+da4331f6-7b70-1a6b-7ea1-80ab918115a1,2655293129,4499628686629787080
+1a54f84c-bfd5-89e2-463b-113895bccd2a,1592893646,1573211610615196402
+5fe0357f-067b-4d43-6d93-19a0f915aeb8,3522555722,10023145202010383250
+bcf97f43-6b1c-e247-5826-d0e4589a442a,828520087,12029104436093472975
+dacd3260-526d-1ded-bcae-a981b8f3e774,4070696411,17334962737729386512
+ac6ea379-00a5-095a-250a-3bd567855f06,828873383,12583156523315511569
+6c27b230-789c-21ca-068d-2d2429dc2eba,3337651975,16170729583761710369
+3d95fb59-f4f4-8f6e-c38f-5ff3aa4a2475,1123084035,3247901456371978132
+fc894c32-e625-8655-f307-855dd248bf7f,3621799013,3852717529923919856
+97aecbbb-775d-29fe-4e49-2f1f75f1c1c8,1767550262,5716615977195861563
+c79922a4-d2db-7939-3ba2-313f508d0e3c,811681917,11196692182403645726
+dc3b2d01-9d94-72f5-94b8-5aab15be2220,775811788,2961645688047502434
+21946661-34b0-9146-fe8b-a614993d7456,1494687387,13570938023449666191
+3c97194d-ef29-de7d-afd4-c27891957e4c,3083424670,17613710000715952144
+4413fb45-61b1-57e9-f7b8-aca26d7153cd,116668892,2327676671775517418
+4ce26258-55c6-8338-7bf0-be98b7aa7085,909730683,15023160990817084306
+d2a96863-5492-e85d-6a6f-4f9f1511c29f,1275244516,6732678594429806764
+5d7309ca-3984-e9de-3864-b01cd867bd22,730750968,5460155314773877816
+e3fcb16b-8da5-9b41-c205-4b377d550d73,4262371254,5149866518920617143
+38f9ef9d-8397-5f60-022c-cd9b064e6670,1813154112,4889888393263641322
+4043b2fb-9cc0-6b5e-ac7a-e26fddc5cdeb,1799354620,287609281651906685
+5798566e-d7ac-19e9-b12b-faf0a983cc33,1776986755,11279274635061368574
+23914b33-2d76-014b-10a8-86b12a33a840,1429910125,1354106067754184905
+89785fbc-9e66-f766-316a-2a5ccb1d223e,3736064033,1394522146271225228
+25ee5ad7-75ba-d9d5-1dd4-030fb444c402,1186464280,10696803169171555483
+3ce6f7bb-637a-5944-deb7-377b0ec1a9e3,149354283,7227234888335601523
+783513c2-68fd-16a9-4642-28a76a2a8c09,1974705839,5208236141962481726
+c99e5ce6-6a99-e66e-ebcf-74de6380feca,572401858,9439397167531947057
+508212d5-fb98-9708-0bdc-4cb11bbfc926,1836821915,577078946602179629
+583eb3a3-056d-3c59-bf8d-4d7bfb1d109c,557134944,14460723834724507681
+9cd4a8a8-8b45-3910-f75c-02939e3dd5de,2322822741,4061086445112995850
+327d71c9-c281-2fef-8906-1ae017f68477,3345656708,6948666278601847617
+ccad8c37-3646-a96b-db70-512612d32541,966190682,8514331577358664976
+4856c219-661f-a85c-7bdb-92de7932b315,2704724491,161139368856456774
+2fb8b6ab-ee81-a4fa-283d-bc5c5578ea9c,1334747917,6462101467001013109
+073ad050-af4f-9e7d-55fd-ba1c48c3fbdd,1581950985,533081400988828775
+9bad147d-28eb-f3bf-d5d3-5f1aa8a2140d,2893498502,6020944785129969643
+b668ca01-9757-5603-ce44-17c1dd61ffb8,1955710542,14261292228565451168
+a4fc5df2-03dc-305c-e72b-cebac788ebcd,3015910242,6212917906953840693
+f7fb0cc5-b82d-c3e2-53fa-66eb5c2e380b,3769355652,7725063277466755137
+b175f5d7-e78d-b5c3-fa16-fd3c00927ea3,975866855,12120800842846541336
+a3f6bfe5-8916-ea85-6740-38d002e8b3b7,658872023,366890471235343321
+4c4bf6d1-d87f-7e6a-1bbf-ab181f3c5f3c,545993657,12019243463623043372
+f9f3a656-eae9-b68b-4b10-46d29907b977,3161797437,10433939554870076928
+9ee5eec6-40b7-3bf5-815a-88390d86ae0b,294182368,11538167931185944028
+37d4a4a1-5d20-0b23-91cd-6c575d5b5318,1940715719,14871806577248387294
+fb29b92d-0398-16f9-78d7-4ee2109ff83c,3274167812,782687042689160430
+82349e1c-8c98-e9fa-6d92-a52136aa683d,242428048,13987294048581275647
+c6cece27-5fdc-6783-baaf-fa774ade3773,500553449,12003577813078454729
+6a294a23-2d3a-4cf4-1ae2-ce8f514413d6,3735178438,3556971124898990255
+4b3b9928-9243-abe5-40c9-a31002526234,4163216211,17126156676279025433
+1a40425c-4a20-3c38-84d5-414bf2474ece,430679429,1326296698085334185
+c560ee40-fa9e-fd33-5565-790b95b000f7,3833634166,67271928028328123
+43960604-47ca-fa38-6860-450092828f43,1829971827,13375822826991505155
+764e1088-745f-aa6c-f61b-d36e8a5a7201,325928622,13345534285938081604
+08b73e4f-b6ff-f879-f780-26b83579997c,992424906,14517994305270597121
+f6cbf496-ae10-4cb5-2a9e-37b999683890,4189615705,10448670291814820565
+d02c3b06-d92a-a91b-70ea-e3d8283f15c7,1421057417,6958689131358410025
+fba6577f-5325-55f2-1330-b0677da1b619,1643427384,355283576416056950
+3714d43f-473d-7273-97e8-d773c8ef7414,2264189157,8681055908341155773
+897009f6-7a8e-fbb5-a922-ac46a92d26fc,2814838987,6063656522067254934
+6e5f3d15-d60e-6fec-3c9f-7f4e0f5a51b9,891854150,18191933242180908248
+72314c2f-3c80-938b-02bc-6611e8b26711,4053658454,4701011703983274950
+77b112f4-f190-758c-257a-d88347689a0d,2882305339,12764244446230353413
+b4d063f7-4fe2-b0f9-348e-1137238b435a,121031100,8232945729376747128
+b4940fce-1111-6f03-8942-caa466b7cc22,3086464594,4509858044060508787
+96152242-d4fa-07f0-5306-655f232fd6d5,4065323377,5869200926806867322
+3aef9e71-a090-518f-4804-93f904c3c09b,3571942915,11121018514800956920
+882d1f39-36fd-f393-c83d-6a6ca724dd2b,2132145991,12255830618560190283
+fa589ec6-f035-3c49-51cc-e9c9bc98aa21,506408127,2423553374064880977
+ca1b1d26-3f79-8076-718b-4d9805ac9bf6,2318171754,1632589906511518735
+bd734b38-8c27-5884-a011-09a385b4c45c,3723297296,7677167402616405263
+78661d4c-a6b2-7bd5-599d-9b9df997ed69,3938358899,12566763742605172177
+7699bd5c-4cb4-807c-b6f5-d0a64f1c7ce2,581490976,1678179027727000654
+30c97575-ba48-b506-1aee-f51dd7c529ca,3476052358,1925424036328466542
+83916a8d-11a6-9343-0ed3-1c2997ba84a1,3966038781,5755796319488104373
+8a7b372d-fffc-324b-a65d-5fc1728057d3,3464675865,268780805673015959
+fdd5ff20-0bf2-bd9e-15ef-13c41ee76eed,3420478174,4675829793813620525
+fe313627-6c22-2a7f-a9b3-f36cda88dbf2,3210976131,8201789737035347480
+3265fd58-68e6-9da7-d567-cb34a861b1f9,4275224835,9006366812704006168
+f68d8f46-d6ea-9bac-09ad-cc5caba59ca1,4268031005,11275055158517529944
+cfed86dc-236b-ffcb-cf14-f13e662a8bf4,3411337764,3536000990863258355
+27936ba7-82dd-cde2-df17-7b36321fa2b2,4280988093,7022271432135047344
+d219edeb-f51b-4262-5910-c3a9ee4fc99c,2890451537,2672838262013907831
+ac4908ad-8ebe-cf13-33ae-dc3e450c7109,1989349165,6395346685986457559
+2b6a61d8-f3a4-1335-a1fe-210ba07db901,2182632735,4661147090710267598
+e4fcd336-edc8-e79c-2f64-95f30f6376e7,2604817572,4636344489718428663
+522d60ba-75a4-4c52-a6aa-f7e34021ea3e,3381704285,5009257128912176850
+8710e0c5-2762-5c65-ee70-05b6cf96404c,2718770368,2101222351912740479
+ab5260ac-867c-e7d3-2541-ade4b64a8c1c,1199730156,15205934678557151158
+9dce66cb-59c8-55d8-45c7-957356ccd695,352122901,16910132224202663638
+64ef8120-50f6-a017-e71f-070672601018,831361278,8518967646189876769
+b66be79a-f0c1-d3ec-0b31-79addbfc19b5,1086900976,3390402828117585308
+8d34996f-225d-0bd4-756b-fc86d043d031,4247850637,2276172670672845228
+2264caae-8bd7-b688-dd50-1c6f778ef365,3219553954,9211572850638525529
+097f1520-3a41-0b66-6e35-acb182cbbe2e,1195096874,11522784707463580144
+7b6d5df2-3fcb-4e4d-71ca-dea3dec95411,11635030,4932028454784797434
+736b46ec-1db0-261a-b00f-1b84188ab6d9,4067975056,6535521680815304903
+87b7d98f-c02d-4ac9-bd2e-87b5c5018ace,3221483167,3681951391099641099
+77e2e4eb-ca1a-fb05-0f31-664b1ab4c2d5,1973573456,1940975799401850903
+5ef9070b-579f-d563-796a-f2d706934987,2311350300,9257000638121037838
+2e507dba-8966-e2d7-5e33-00c52fdf3a34,2194788811,17570295896540903851
+6c09edf2-c0d3-e3ba-19be-021f38d7a86a,3225404629,8847828040056831928
+c2a325f1-1284-1e7a-27a2-016d170cae2a,2923280473,18290518881621142826
+8ff3ff8b-80c2-cc10-f9f3-c026eb900401,290579380,12608656811582821238
+5c56813b-c2d3-90b3-ab4a-59ba3f318515,821854056,2668851788969455204
+01b5f82e-5c53-e46f-dfd6-2a0c37b2f232,2293573929,10903328587718804971
+415e69f8-7b2e-24de-e01c-39ad2ace8154,3160791456,14381978601063708432
+5998eab2-f4b5-5ea3-1aba-c40bf16e51f2,4126947142,339582696033154106
+a926ffaf-4b26-96b8-f8fc-9b183a101bf6,1882360880,17685541101032069852
+96b496a2-4533-af50-1452-a9ad0f03bc5d,1688973113,6841527389606552254
+a562d78e-cb16-437d-9fc1-ca1e5e6a0b71,1436585138,16396082355676988581
+7a09c132-1dcc-07f8-dc5d-6d80375d4c6e,854187842,1647261343284066873
+8d8e9984-c47d-0225-824e-a48e29f0954d,2781530209,13942917022538095276
+0eb1430f-d12b-f6f1-ac6b-10af49183099,3985949780,13205602458091689236
+2c6073b5-0633-0601-377e-9af60d97a386,2467864953,4925288412912862513
+c0916ecb-cad5-4cad-49ff-6247c174295e,3599516951,13441660303243349196
+dd0ad1e5-60e4-6a6d-db7b-a90cdb29f052,3486555911,3095250142356023498
+7146f000-ae40-9124-b7a7-2acf024f1f27,2915763361,14147983526709167678
+23ceb658-baf3-bdcd-9d9f-4aa5764d2a66,882420805,3865005228525584505
+3bcd1e65-05ac-71ec-5096-5bdd6f59fe5f,3154984514,3285237768364825317
+23265803-6aeb-4452-fedb-456bca03121c,2912048121,17034880311437143375
+21614df0-0f28-c18e-6e20-6e410203e7fd,622750662,8105581899379367896
+8a144dc3-8884-3275-2a97-e06ca2d6d7f7,901516773,10506813405720704633
+fe50514a-3058-0e40-502f-b9bb16c727ff,4249817143,14394548111112558874
+9e643d26-9371-d479-14bc-d2c86e12be99,1649580187,6652352005979925680
+e0fae836-5ddb-d616-d17f-850b478ae5d3,2100011657,1558294242290792597
+5d28cf9c-5506-2f3d-0f78-f025a866a09b,3500523746,7399730645126258209
+2ef79d15-4a49-1a70-8363-abd77a1289d3,3020111684,13710875911322735590
+c4c8b0d1-376d-7571-3045-21cda4b8ba68,1232098669,10245364923745660783
+f63d96e1-19e6-cc40-6545-e81f118c9e68,1020907576,16176271639756604662
+ad4a74f5-f6c8-e346-9e1c-4d0d16677fb4,431191758,4512864576474745714
+5b636839-1238-2333-1394-bff83e48091b,2258956860,12416392274523018676
+8b917807-2a18-9b98-0662-0530d236a400,85851684,3302909960862662170
+385d51b9-c6d6-48db-e5f6-daee70a9f00c,37272235,10913153849830515036
+f6e9ad22-818b-95ec-afd8-d3df6e7f8292,3709527721,17181615353713766468
+54763411-52fd-71e5-e994-97ffd2bef2d2,1864672804,12723072653085841906
+c325ee17-d5d5-4e42-194f-9ba13d533e5d,4019047727,12126959490652005931
+64813ff7-dc6f-e206-f6bf-ae6c0fa5c3dd,2475441676,14698016120252354321
+5500216d-2a81-63f5-5d8b-bd92539f57e6,3602974830,1946417949778973032
+acb03ea8-a929-32e2-ff5d-773718ea9832,282943957,7345303590185730198
+d1118cb6-d744-2be1-5f6b-0554f660684b,1447287929,12331015967937589250
+5addc17e-43dd-145b-6b23-eed8ed289966,4260769188,10186176084567600574
+e65d402e-3ba7-3ebd-25b3-f938d305f63c,718360319,16408173599216689331
+921f1a42-e4ec-b42d-80be-d7693c1ec14c,753737122,9941118100757075471
+deea55c9-96f9-ce04-5be4-aa42aeb36fe3,3727004524,15343166243037351783
+eb889a5f-63b4-128d-8210-bf8ed86cb1c4,144271569,16759547283791384260
+b8288c32-e7ff-9c11-e7a6-b29ab59c7d02,3627565002,11010109777801592704
+8626fdd7-fd6f-03a9-2f4f-53fd172bca72,3658752702,3931359893871237605
+60a03027-db42-d582-028c-cc7fb1de4e36,330278507,8868199447123208059
+abe2ad74-be13-561c-04af-b9d73f53ebef,930040034,5287298639265216036
+84f5da27-872c-bb69-e9c5-8de903229992,1302522066,17366512551477990405
+653a3b70-232f-44eb-d7bc-574e00726c6d,879906679,4009344226440452009
+38329aba-bb97-e140-ff2c-f38d30068eed,194479917,14575491059806006553
+5236f477-9752-f911-f193-f52b80d3ae34,668838381,6847542419796272571
+e7c632b6-d261-74cb-2925-392e19c423d2,3575806833,7768462841323362380
+d8aca759-c519-cbcf-65b8-25d352fc0053,1712753622,15055008809550207834
+97d28a3a-1abb-9210-d5b5-632a7fce016c,3286745762,978187253752892263
+eaca3ecc-afbb-f778-0f2b-3d982b4343df,1444486133,12088242892290489572
+5619f903-5a36-09c3-35b0-75aa44377c46,3118205504,9342899839738843454
+974db3d8-477c-03b0-dfc9-94b05c435cc5,3381403178,15149433241686345634
+363f6313-d975-670e-e227-c28b4cd7837b,3431877677,5482901569900376866
+e96177e5-7e9a-679a-e066-5e5a2cdbe66d,2289155636,7662142174466449631
+0e1f1525-4ba9-6e09-a85e-426920560401,504182320,13484368630839634681
+0b0efd32-d271-b770-2d86-cf419fcb6dd6,579300770,1829370081416486455
+4b2166d4-7d9b-3a37-a353-dc968f8fcdad,4150874128,10849440266921341813
+49f0c8a3-1933-0419-6e8b-54102008bc36,1466248513,16219379666496980144
+ad3ecf9f-e07d-b2ec-e2df-b873e744e693,322323365,4711035085896529804
+f37d76c7-2ef1-4347-2e70-abcc31b50e06,2984330482,13143455439777827556
+a9f32649-a323-16c1-b184-6801c2c040a8,2528723887,8091588168563076147
+361d4ca7-e022-6291-3444-ede8966d8a1e,1073852863,9617549690865902080
+dd3c8875-b543-3010-43b4-128086309c28,3742772463,3526730758649084127
+759fa284-6185-4e2a-8d0f-8921e2a3c1f7,1910106884,17805544565826240315
+fcb6dbfc-97db-70d9-302c-8c5878972494,1250613370,6623165011533768286
+cf268266-dcd2-ffa2-3c42-7b153aa5c2ed,2319445411,14790988925603768620
+96e21921-5bd7-7e98-d612-fbfaa4588330,2938741450,14470764543617926919
+c0ef562e-df32-cf1b-1ae4-43cc2e9a50ea,2623395376,10786358900728932067
+11b02cb5-b4fb-3e09-44fe-625cfc5b2dca,439385589,6993346154928243729
+930e020b-d36b-8e7e-26f3-855c3bab8b25,1709103006,7590042915297959958
+f782627e-a6f8-f9e1-9b12-766bb55f59c5,3004136592,17602899744625637594
+0df5709b-e866-96a0-d807-b1a0fac66093,675513671,14687206542206195345
+ecb1ce41-f272-62e1-87fa-e4c3248c18be,2048650390,12033252372886766686
+7c1dc0d7-5c1f-421f-c9fc-beeb5299be38,3139773893,16142643325422909811
+b785b7c1-a224-1871-333d-e13a486ada21,2480749263,14693607481871721238
+a0179bbe-4a18-5f33-65d5-524ba9529a32,532892170,6072052732181334348
+8f1e9338-6a43-b939-7450-bd66c184ff7d,4108604790,14218702121682547942
+338f8a3d-2c32-b824-0b71-62ef78864f52,2679221615,13917629312960015841
+be823003-c90b-574d-83fc-9c940d2985b7,1434077555,10913976378774190063
+7916d150-c3cc-0e56-1161-9f51a236da43,88078451,16081573570327662067
+db4c9882-e345-51c5-1785-a954fdbc966d,2280864009,2460479167269677997
+02fda589-6a1d-0b33-a33e-8748e1164f38,3187345761,9976746007441961982
+3da491e4-c7a7-26a6-3f2b-8d9dbe8b9e49,3621997824,13037213585698504565
+6ed3346b-5d1d-134b-5f26-9849dedcad5f,3959733829,1331361124999702698
+346dda8c-4334-66d4-ccee-13421b64e2cc,3497816298,6711762425636015699
+c8e75e47-239c-66c1-9fce-80f6260f0927,2044839315,17219536982529008901
+9d6876dc-f772-ab8e-6d8e-43ee9d0431c1,1494378128,2840432208414170177
+dd21d1af-756b-3ace-aa58-e5442b002754,2880930126,13730258004312979110
+234ed408-768a-8d5a-a630-213d11938f97,4271071225,4141206768069568529
+cd590a18-ee10-081c-f4ac-3fb0c5e45587,1822645880,14606941815125802659
+9bdf5124-0752-273b-0103-8745627f5ab5,895031829,11564509855317796524
+10ad110b-bef4-16a2-41db-9602bae2e98f,244102408,2528231144868963432
+bfcc4303-4d0a-3e46-97eb-815b86f1f752,3267922567,4603061142234818265
+ca3d81e4-0a1c-eb77-ccf5-2fa75ad24bda,2527541030,16473427187394541520
+c954f0a9-9fd5-8f8a-fffd-b1429798ce32,4010273978,12329085631251933050
+21225ceb-ccd6-418c-773e-6bd112aced65,2193274761,2225597387455250967
+ababc84a-42ac-3bec-81d2-c3ac19e534a3,1977803592,10064426415836208273
+80101aff-0953-2254-8afa-b919428121b1,4028498059,8321195623332632967
+4328762e-1466-7d32-9da2-2f7b7e9b0858,1089804992,17964898838573833782
+87884cf5-1233-51bb-14ce-dcc84fb58c5b,2526655074,9271332127923693899
+7acf7fb2-db24-2c0b-c715-31d12e903adc,4177179165,15650596424074742149
+39ff7fb9-4d5d-38b3-f22c-66692723d9db,605071344,9538967938894395394
+d68b6a07-4f30-a13f-6f90-3f83d28236f3,2041427302,6189766033157909102
+f06824b7-973e-b366-c878-e3bc1100eef2,901598320,12070015433970176202
+351d2d6d-5d36-7943-069c-3f2aadad667c,3821035574,15880999687217620711
+09766158-c6fb-dc8d-e51f-d54777ddd93f,173222563,10576141349213168372
+995881ab-65a4-57f6-b607-0de0ffd0963b,1727671758,493522370467085684
+afefb520-e925-11f0-086d-dc1c7f92cd05,289006843,17212408567086749397
+979d5c96-ea96-ba86-dee2-4db240afb565,3470433069,10731488927594974712
+f5a04a3f-3b35-4f87-cc76-af4a9323ae14,36291855,576229614799941354
+c13cc094-28bf-0e79-bde9-e080a4e464e3,1400105222,9783819202783534160
+bea80627-8d07-4af7-8641-2cff799b6f93,442269734,5791256096192325003
+5ebf407f-fd2e-a32d-4f9e-af1e7e49ab30,384781415,13692631624075789621
+ac1a22ef-9595-bce1-462c-34874b7943ec,2291233068,10930520134099680985
+b48cf27a-b84c-87ac-b6ce-c1ab09c5f4a8,277358715,17084959990851146787
+1c40b8a7-ab07-df46-1073-656b5ce44336,345662452,8230705439208893653
+f91608a3-d82e-3778-1bc6-b325895568d5,1982071650,10166806590485589919
+2fe964dc-563a-c939-fb09-6c2d3288f4bd,1708131805,2494484749186432280
+a7e3fdeb-546b-b196-1e76-567e6588d118,3110978152,16642212481727635653
+b77ef330-8784-c9b5-0ec7-34c611cabc47,3882627682,2609537449868655326
+e12a1f46-8207-d9dd-945b-8efbe4d11e78,1674189235,17379737351434663642
+12b5b407-ec05-008c-a5c8-4bf3ec974988,2425428084,3981245923570193041
+415e4891-4860-481e-8d12-0002fe0516eb,913731250,17427559342002997966
+cf0b8172-8212-f34c-4c2e-3a0726f7f128,34677807,3487369476733538232
+86712a61-9976-87a3-cd97-8766870f5c88,3717020081,13945620982925357776
+66e73a36-c3bc-d640-4787-588603b72f63,3885139876,16764863241518532122
+f2c8c8cb-ecd5-6374-ed2c-dd82ffba8bb8,3383960630,8584348637488193526
+0585d10f-00dd-d8d4-16f2-2e3939634a46,1964063908,8489233052914003042
+db73977f-0d3a-f5e0-6150-b08a3c2e5524,2214645562,998298188722106314
+328e6663-21d8-a0c6-ad34-1103254ee841,2423909925,5714571690966165813
+c30ce28e-f694-611d-b568-9583d355197d,1041714477,15122460952104962008
+0fa67c3f-7b4b-878e-0856-224650b85512,1808547646,18134717350920591070
+291b6864-e0e2-1ea7-10fa-93d44c9d6c65,345219132,15664765155784887852
+eadf4eb6-723b-4dfa-432d-47eb7ae6e2ee,681804746,5500094565353996491
+59838f2c-3b08-2e76-eecd-e0b7e7809ef8,1995989117,11205639398792010594
+6990b06f-97b9-62cc-b1d1-5232c5b0d630,3413877851,9507926813733214047
+e5b33d95-4c48-5184-6825-61b3df7312d4,2274014504,16418530793148102827
+21449851-4b74-b3e9-a189-3671ca3ac50b,2748987049,5535554109482947685
+1844d379-0281-a1a1-3532-876280fc45b0,2761472500,18438331018075139908
+4563250b-4fea-12b3-e804-5fed39163969,67237855,17790708891366341565
+5dc12916-788d-38de-4a3d-2bbaf28fd212,2453591306,4639809866619310493
+54afb865-f784-02dc-2051-140643236842,3879603013,18012680293730003764
+e6c24eb1-24e2-7d60-5601-23fce9e560d1,715359536,15593081756172039817
+95fc4139-9e71-2246-3b38-bf6b4000f35a,2158461970,2134082130505358937
+3083a1b9-0aab-cb02-4115-11301487f348,79045045,4770195369513599821
+490d764d-dfe5-4acd-316a-51140ccfe954,3323951754,7388834349383134828
+66d4e163-708c-d34b-b385-74fc315df8c9,2597005400,489457677270351119
+8656288f-2188-2a68-81b3-aa490ffe4564,2393993300,7061316135181004312
+d270cc19-ecb0-2659-c2df-08055f290e0f,4267104147,13659650220613244612
+78a706cd-8d9b-73fa-6d78-6379b8642f38,1187740029,16638660553602928559
+20fb5465-92c1-a958-3b0d-c0e44b64b9c6,78470890,7766165276837047384
+8121e206-b3d5-b2ef-e209-3cf2e74503b0,850422048,3423391858901451613
+662ea113-5cc3-966f-ee7b-0c9a490b9e4d,3243119713,11071052078495898062
+3ff15ff7-c0ed-2fd7-9f16-c75a512289df,2027558566,10911843747462527995
+51d46266-9684-2c0c-25be-77cba72d5e04,4287535512,5317083475687402740
+dac08c2a-b0ea-7a67-d0ec-231ca55cd068,4015820141,3077744114268127482
+25d611eb-075b-7770-3194-c7c1141b21cb,550685957,8936722020638932134
+58b31282-8eeb-6347-2ae2-92bd6081b259,4275673583,2287142390713298524
+ce9972fc-f010-6483-ebcf-cf9b2c3bae78,3201841601,9575148200076514578
+d84293a4-c023-0793-5c10-0a4af9170c70,1133103445,13328165708263379874
+658cb3b6-5a8c-b414-bc83-520206544616,3974333656,15622568121424555112
+aba6e844-2cae-1222-b562-b6f033e052f4,1923605991,10741626865681583737
+f00766fa-666b-c05d-2512-da5b03cb5779,1133282374,8534053241565467908
+ceba6645-7dd2-7ca6-9b3e-e2364b0bc0b4,3667119216,49117582865713158
+25b6706e-267c-b6ca-2c4c-245b1c25ab0f,930627329,10285462153292823773
+17232b70-7271-0135-2335-0cfffad7f2f0,3556052991,18161537171847838588
+9b7b8fb7-9f20-169a-784e-bbdad159a213,994094024,10593575925161544921
+e665828c-682f-4cc4-56f6-d33370b3f938,883975405,16346904972072694629
+6f683af2-05be-5ad7-5369-49120a815f06,314494934,2971518363534974543
+b9eee80d-386d-eb1b-d27e-f2b4f5b33754,3238254621,3396667990554591120
+083cd239-aeea-b36b-7e44-e6d897936e72,2851615141,6865497820889201471
+97c10e97-e229-6b3b-5cee-100c9d05c419,757048509,4235901781926623363
+6925f742-1123-e830-7359-997a11aadbd1,993997797,14841369027583537814
+0474b0c4-b0c6-3490-9dab-13851a945ad5,3014992012,3425613329192586742
+51ee6d8e-be7a-53a4-a202-0bbf9150e8c6,662477890,14906830840664603601
+71d0eef3-d8a0-2d86-3c38-7eef0195d5d5,1731534633,4594282241670796822
+b2c11b53-a7ff-d459-822f-51de2a6950be,923752962,3858217422152721584
+a088cabd-cdc5-fffb-441b-22abbfac2145,1518894069,17871987028449713478
+f31a2797-249a-9d5b-c7ea-b904f14ac304,1547100591,13665433719716929045
+d5751c83-12db-82f9-0d86-bb2d8c533806,2809675478,4103015670642041617
+a1f79187-ffc9-a837-6d55-559809b2f99d,2115643725,9590681835413639129
+7ef52cb5-549d-add3-f604-2b47c1d0323f,2018717237,3904855585012536765
+3de01a6d-5448-873d-df50-9a452d15222e,3542117388,9645374825845936453
+b2d52b4c-4a00-c023-57ec-705b112f5b87,2435230195,1351875420985244919
+7715e1f6-71bc-b3fd-82df-b78711e78ce3,3967288880,159177238103814911
+1b0ed201-cb4e-0fc0-2ca6-8247fe1dcf26,1986264088,6900448738450735356
+8aac3413-aa08-f0a0-73b3-e85ac98f2a29,1451712973,7740472416520430186
+8319d1f2-0bba-fd1f-da14-7c1ff139d1f7,1158312514,426467554084847899
+3e7d278f-ccc8-2643-63a6-92dc02cf0c0a,2911877891,10583895179789113260
+4b289f11-1b16-c794-dbd2-bb78e55e5118,385952565,13619185537753574557
+7d61721a-2262-089f-bbb4-9ee094a7a82c,2124897360,9402262056793351762
+67c73db8-98e8-5ab1-a50d-34a14533cffc,1548339805,3652259242412487648
+3970cef0-b961-164a-2497-4b1b4c49a122,2371927201,15926609262090426431
+fffd1cd2-b971-a9ad-5fb6-bcca6e411789,3454975075,8244200023814385101
+c535e897-5250-1af2-3dcc-896e93684d46,3223534843,17059314756200981822
+0bc179d8-6adc-fd5c-cbc8-81edbce2cbdd,740867442,10024541989494741267
+9fb4a664-f483-28bc-20ca-5e34c197c677,4066863117,1542599228291622690
+97478a8f-c02e-2827-790e-b636ed889562,653877902,8887315561161779305
+ca3b6f0f-a321-232b-438e-ecca2035a8e0,2338496126,16002105329784094940
+c99e6ef6-dc14-3d8b-879f-f837148dd038,2395254865,15329446134580360705
+039dfbfa-1ee1-3618-2102-43f66b23de7b,1547049381,17144791778971375079
+52f72c1d-fa5a-955e-4f7b-958313de72cd,3169838174,12330879897664931185
+aba8edcf-b72d-c805-62db-21444aaee5e6,38379032,3384743796509021482
+b6cde33a-9c7d-3a5b-e8e0-215cbd697fad,93953957,2008902806817767345
+cb7f7e30-8595-7827-2340-b99b76f127b7,2777482958,7448052950268457151
+f608663c-2051-233d-5990-e54fb151cf5e,3342202084,17524672091766196859
+ded5f103-a073-cbf7-8f65-dc9c24f769b6,3598862186,15000293597000201977
+00eb0756-39d9-af25-e3c9-2f8ff186c4a6,1156114047,4860918646292694061
+f09cca2e-32e4-626d-ab5e-e8fddb963d7a,3074530998,5638284111314334282
+e97efc1e-3c99-42b6-a017-ceaf7d86f43c,1137902806,16915227266622518646
+79a39f62-d2d1-6bc3-ced4-e522638eda20,2634234202,1044701515601311180
+f6a06a74-3a14-11ee-7c1b-2d046dd6d60f,764613060,12992352685018945805
+39976610-8dc4-87e0-0c19-6fc10790c1b5,1560001926,15509699573052930385
+43a07602-c86c-ecce-0a53-6b3a9c7d0afb,3214407354,12694775859680133573
+dc5e8e88-d815-9f5d-ba05-55cb2ed4fef5,3281020374,18186285324074654176
+4e3683c9-9934-fdfe-a18f-c2f04caf9418,1434288663,6804196665701041854
+d5e30a3d-1e39-a2da-31f2-d1cd92696f83,351513210,5010596567499542916
+0896ff19-c01b-12c3-e313-013cadd8ddd3,3803610464,2504806721755592464
+cec4af56-79df-655f-9f1c-7298871fa154,3446130142,12258560801357588326
+2cac3430-3555-f9f5-2026-72c221478f38,941191068,8879647395066411067
+273d50e6-0d5e-087b-bd6d-6ae40ec11c43,843763161,10833012533228332385
+938b08d5-ed79-42f8-a7af-b0e42b2007c3,2234988310,6072684992520188191
+8f703c73-b1f2-a4be-0c79-425a2be4b3ed,1129621609,9414825097366830133
+7449a8d6-f12b-4c99-ad90-5497891dbe7d,4172762226,15303610420786974070
+6dc145cc-5c86-1b9e-3013-2070e93065f8,1385963282,6833360767642987522
+12a75b4b-acdc-8920-fcc1-f4771287fd70,2353106543,7013641341579874134
+0b61211d-1b4e-2fcd-1441-56ec1060bbf4,4268611349,5224190693828503520
+8a790a2e-38bf-f85a-b87c-2fa5728a4ec2,2225155979,12864343752880999367
+ae335845-e959-825b-945d-9f0ca5f810d6,1700513004,15560439653273744655
+2dbb89ae-4402-3823-28df-c077d7f1babb,1902997508,7602969379864720115
+3861e52f-6428-f346-4c5f-5b272ecdce82,3112799350,6809945207943239988
+13d11621-d5ce-4d92-9cc7-cf0f22348ab8,2594692915,11457152828639686211
+4c715960-ceb5-8ddb-1e4e-4f90c895b8f2,2820654119,15957044468447959623
+801afdb4-c3d0-1094-30f3-fdff15c6b054,259583783,8415157009373813052
+1623fcdf-06b3-2aac-b597-88c48f9f4d29,4213604421,13217886943368923332
+bded8364-10f5-1911-906c-a7399f38b5b1,736713459,5598335515835117684
+d68acc5e-3d41-832a-a062-0926f2e5826a,3199855967,6841988041303715251
+b3fad7ff-0de6-836b-f1a9-d630a79a35db,2798876695,9987790934536759252
+96cd4c4c-63f6-daa3-4662-1ec128328e42,1546567210,11507876856023568074
+eb9826da-5b01-ea59-340f-141c59013609,1034439256,5261283503688316932
+d393303f-2626-f89f-5d52-cc0accd87de5,3486283626,1393235740296114452
+0396d02b-2e1f-1d31-e55e-b424160da831,821857791,11115916863805219491
+3bf18928-51ae-e544-0e69-92f75a64512b,871777187,1232844097949829503
+f728dfb1-b39b-f0b7-4e6c-64dfce021cde,207585607,5345901644944829596
+5af53fed-8826-5f2d-1cf2-23fb46ca1464,1096536815,18037309425922307486
+5a0405e1-029d-ad15-6888-ad6fa640e940,3673154944,15013190569894067292
+cf1f14b6-7fa6-7793-48b7-4c118c319dae,740152356,15405192407259382027
+372536b8-80f6-700f-c97a-7196973e3ae7,3495647198,9324274677023159565
+020f65b5-99d1-0a8d-ecf5-641e8e4f2072,1557068763,929538447369765410
+a85c0e61-b895-53f1-12c4-b037150a32a4,2550825201,2204385236808136971
+c88a2c33-a654-33ea-4266-d18019acd722,2517380400,2938990569342749463
+24ee13c4-ba0e-3e44-9a39-7a16b2f5edd7,610093930,13363918398120775320
+9db33cd4-f151-c9f6-4972-4806a7f544c6,1291657784,2780795482725045969
+4bedcf89-1f47-1191-814e-2628f5b82dda,967159480,17365445274174976466
+effbb54d-db80-a2aa-43ad-6ab6b5d459a8,3938922603,16611254242241754834
+fcf70337-7b95-2d4d-c7d1-051390311b30,3646839740,2751203116890601832
+e5c65998-c62b-d9c8-fb44-e4b5b8b88141,3352870768,16996218704706960638
+7ecb89fd-8961-21bf-5c5d-32e36a34bb21,2322601843,283165477998398585
+14b25054-fe03-897e-3a56-ff461a391c14,985572543,15969303011559029702
+493ece2e-4fc5-7f72-16fa-eef3e8c1e56b,3957813600,17352599760620780943
+a7340e25-bbd0-f380-835b-62fda4963d46,2974795345,17776660727292852961
+6e00cc37-a278-3a35-bcef-c4b27bbcdfd3,290391013,8486808320304153252
+0f8bf16a-fe12-f74c-48d1-4aeaf446a4fc,1165792940,17698110687057232780
+074dbbd0-0d0a-5b43-ee55-7a527ab1e1f0,3476198550,8633082979273521292
+b8bed8d0-a8b4-e707-6938-d1e8665aa54c,122829589,7400735435795699067
+722d32dc-8afe-6f68-82f9-2d8cb43b5cff,3576642361,10430270163644834780
+d1e58316-90b2-07b0-e874-55895baf7956,3473739398,13728398710284697329
+9406846e-34c2-88d6-cd9a-4243e94103b5,1718401838,16288218555029467176
+83f51adf-f90f-0e1d-29f3-320d3316cafe,2872213170,1584026222096261977
+94a36a57-7ac4-0687-bb84-494a7ec533a7,142308233,11230990944024950548
+d55f35c8-27ec-4e69-d2ac-d406de29035e,1964155099,11867337950332807823
+21beaa74-075f-0abe-5d29-df21255adf80,1654851630,2553485161090102303
+dfa15721-cc55-3e58-9829-8e994eec6d30,2334856305,1933092447439941020
+a388d595-6625-5ff3-3e9e-c42779ec09fb,3615971385,7054527913175218416
+e14e8e3b-7e3e-3ec1-9379-3705bdd1ca78,1383265950,17419589613974851863
+200f77bb-3b31-a387-7692-1d3fa9be0b50,3185661898,6111209827730373774
+3c05f5d3-7264-22f6-8bbe-d853e368409a,460973645,2122420329863206354
+56d7a69e-844b-2a8c-edfd-166481c91e1f,2154484004,9067265134000282092
+0bb6bd1d-b54a-e9a3-ec6a-947961dc1062,532791457,388456975179003976
+3aa604ec-b9c2-e8e7-5823-5973a8c85aa5,3296922560,14849439014057823041
+319b51f3-49e0-5937-aa42-d1bfb31965e7,743477432,4149553749415122712
+6ec4d139-82ee-8f27-8767-cdff73987b5d,1093124739,3032223887122340268
+0174e502-287f-e2cc-3272-1d40abf282d1,1229508225,13569782814827435486
+7d29a208-84aa-5142-3d57-ad1f6fb0f88e,1721909162,5152367675639430943
+dcd63ade-cdcf-197a-6089-c1d93b0070db,3414633436,4396272565626408971
+9a34cfbc-6f7f-fac8-1116-05f03c896d59,1077533833,17791677761857783964
+cde18c28-6c28-ade0-22c9-1c6926478b1e,831693064,2783449479990817402
+e728b1a6-7602-29ca-e44a-522d24834751,1301025677,9822632129852359372
+dec072f1-c13c-4511-9c16-40436dec6f0c,1182247287,13604277123548422188
+5e74e9a6-20f1-2417-f69b-c7b349553443,1306554748,14572544098277381358
+90b1f4df-071b-abf1-0e03-c34e3027dd2d,3317046393,975098409236158986
+cdafd5ba-046d-a5e5-b53f-828892a9f1da,3501570178,2301075549262697686
+89a545d0-fd49-9525-ea26-df4f4e28cbfa,2409572702,8701943393525040440
+4445ddd3-c65c-3159-cfdc-82b7c84e7921,342545111,10448172896452480779
+9bc9e77e-160e-cb16-5425-2c06147bf0b7,3926971041,10712908410915128548
+d7135b3f-c5f9-49fc-28ea-ef852ea78fdc,676507811,8974449368416902766
+c9b53659-ae63-5514-85c4-79802d98fa8e,3364157027,3142074149884571251
+28981ba9-433f-4df3-4ead-4dd776480cde,3704158365,17434104911325061242
+94a70a24-2c1e-7606-c707-2bede437e851,133280110,4375987905254860772
+4a585105-192f-fa13-c634-6281b105ab39,2199863339,13074048237896093324
+a4e22b79-9fdb-e8ec-1cf2-110f39efaa9d,2604422362,6653247548249383743
+0cf65855-18f9-c0f8-2602-313d07056de2,4126254399,18443319791317231307
+3462ad61-2dc1-13b4-52bb-ab7eadfa4d68,2114784322,11607856106154658281
+2743f943-88a8-a82b-4575-456da0c4827a,3202715280,4971882885561401774
+ecf1df18-6952-821b-eff0-9130a7ba3431,3805970282,9971379354074775470
+9ee52188-08b3-6293-ea25-1b16319dc69c,2821558366,4558167634231146195
+a68345c1-7fc2-13dd-3d1e-442fd2f2d8f0,3443613047,351927835041197882
+5e38e324-0270-593c-ffcc-c800f5139169,4278720886,9577574861467350192
+9ed41d48-a006-9585-5058-a7324f0cb0f7,4130788172,10253018159668160823
+ebaf7f79-5c58-e22f-4a03-809d8d9f3d03,3147472841,1347309601714626026
+13ccd910-74a3-3f38-6bf2-c9def8d1f4d2,833535600,522230009820662722
+8fd67f46-ae68-9984-739d-0c9e7b3b2492,1893348972,15408551857699402392
+9202ed4f-553c-2677-743b-22915b34d64b,80848296,14574147415390608700
+ba1b8aea-f306-5d0d-3f93-b3e0710fd779,370775837,16022352974453199670
+4dc8e436-f8e3-e1f1-b68b-1ba8b6e249e4,2696273079,5779697535658902387
+47ecee6d-624d-78a2-11f6-65c6fc1a3d28,4285284781,4772261264621532544
+fbf6257c-cfb4-3901-4071-3e43af2618e7,1412647092,8957081997599632374
+67967782-4be3-15d1-5de8-7af716220d3a,3634608477,5158752212326111439
+c150a3e9-9879-0112-13d0-4bd47289dd76,2699386762,16857685745641557434
+bf1585fb-2e0c-41ca-de52-beab2971ad3c,2247179975,17848891375578682942
+9f0f8644-f28a-77fb-4c2d-ce7104110370,2228721465,16818321411794472101
+faf35d62-96cf-0db2-0acf-1b4cf7c7c77a,2024504082,8792113522988494037
+50da402a-1d2d-f203-8d43-f4f28950996a,1071280688,8705299375916068214
+85090679-1966-f15e-c829-d6b28956a083,1879970970,12776521778747037493
+cdaed539-110c-229c-9476-6e816869dfd5,4036375916,10472369729205483601
+11670053-bdcb-0103-c04f-bc5e4027d92f,3822007205,16224887471603365034
+08fab714-3ae5-3771-bb19-177e6019d58b,2922252851,457160529669770414
+07c8a31d-ad87-b7d4-e15d-cf81fc4c58de,1432674835,8228608630058349866
+737da170-6be0-f5be-1a81-2ae9385c49f0,1255140982,2095687753753430022
+212c9c49-d5b0-d99c-3d3c-3247dfc3bec6,873217975,4030392632876278077
+22573c49-836a-d406-1cc4-c4c6f4dddb2c,2525283032,8266782351991206738
+12825542-2dc9-574f-cdce-54c36ceafbf6,1347933183,8850697964831809415
+245309a8-0807-fb2f-3977-b084cc2c801f,1899665731,2578979489525912163
+a0ee992e-98c7-b00b-ab88-a86a5f66734c,1372325537,9495664960112385805
+3504886b-5d3d-b45f-4a9c-417206152c54,3585129281,11255943946873783794
+6fdfeec4-5613-28d6-c177-3f899b177507,3612790009,18428935053352487447
+577dd0e6-ea37-8e2f-3ad0-6644804e6cc0,4219248747,3433352636236331210
+dfec13d8-848b-44fa-4b1e-11641038c510,3375460208,2225280187219576801
+ea6da48c-497d-8f81-d717-59225fcd5507,1324285473,13506779160909998391
+4606474e-a04f-fbc9-8b72-7e42d3cc943e,552261339,1581293220763042844
+0a9ed644-89f4-c4e5-2aef-def56456d7a5,3567261785,13397126037856738671
+859a4890-4e42-129a-8187-2c9184bad215,2448289127,6219740298528903050
+3f0a1c25-c53b-bd44-52f8-95cd3c93108c,2137996287,4963333871376434794
+5700d5f4-8aca-3881-43dd-df745ded9ff2,2867067476,4364296822286912840
+a2c8067c-492f-ca40-8c13-d67fcb0c3dab,971274529,16539962285671013803
+647221e2-4a41-508a-405c-c873920cba6b,2439205105,7377641818059238376
+668ea630-7be1-2dc4-270d-f3065b6c0e91,4143531822,603219917925277276
+9d7eb2b7-1f4d-c9cf-0465-22a8787446a3,2049665587,8697861382787394994
+30811747-8fe8-49f5-dfe3-d8b22e51d559,2061215788,6528231698284029011
+2b2bc742-3d58-5d62-9acc-926703594965,4261115727,10097538257008972148
+4ff21a1a-2408-e035-e296-63930b77995e,220519001,13400704891262723647
+7e2b684a-ac8d-22da-ff4d-31d1afd92dd4,404619975,13141080361691333904
+ea67bca1-214e-9577-4e6e-2adcfbd5e196,3086069111,18262186823900128043
+e8371585-088a-db3d-db9a-28e3c6812634,3647867585,2113981885873076242
+e1fe9190-fe6f-a8b1-fa47-a334e80d1613,1123656022,10893937724427897531
+7d987121-3bbd-5adf-d198-088fcc6825a3,310427507,2448772863440513788
+f0d89554-48f3-fe3a-804d-4efc45cde3df,445937066,2843114370807866563
+5cbc297d-6bba-f65a-2437-8d90c9e269d7,1415626513,7959900684839442666
+e5ace707-b19e-513e-aaad-65b54ffeef9b,3028866848,3039004213654822967
+27627104-6344-f141-ef49-ec2a8723c07f,1707458792,12228496890192570797
+613923d0-7629-e484-1f4f-cebac59ffffd,1883588753,3668210034544577763
+65888377-4ffd-53e3-1231-23f51f7273b2,2063231869,8144337226396274556
+d97b1338-bdf0-d4fb-deea-6972d6539d0e,2658015338,10261784366694551071
+8243b19e-ede1-4f31-23bc-3e628c5f30a9,1692923030,16766020715541176926
+1ddb4bc9-8097-7d90-8137-c8b7919d906b,1904039853,4570263890493317593
+aeb05860-27b4-86d0-e1e6-fba449852364,2467655032,15755364077813789646
+1a59b80a-923b-c1df-24c5-2a077339ce0f,1730446615,5464313278348988001
+605e19f3-fec5-8949-aeda-32b8b00b0b21,427422042,13022461485675293746
+03980fac-ca2a-9f76-f61c-82946cea7f53,3620519969,10251686080719736214
+e2ba73c2-c248-d30b-bf3c-a4146bf17ef7,4156748107,11278186649624797535
+2046a02b-548c-07df-b577-c23fd05a50d4,1948527223,9255438212818050489
+ae97e886-e8b3-1502-eb64-b76926cf83ec,1482255908,12757124439157390940
+b5b8a0ff-c578-ac59-7409-d9fe3773b7c1,1662807032,489340192245988231
+fc14c52b-4268-36b8-5e46-33e20ad6ad50,2721591422,18263872503058018096
+862ce7c0-c234-32e9-e537-3589f6dce601,3305764271,732847085229257285
+9f71690f-0115-52d4-516c-cd93e0628dcb,3354803945,11406307793681952407
+9c8c810b-45d4-1844-b097-af2e1b6a1480,103798282,13568411798131284607
+3ac3aa61-4022-574c-44a5-0d37b8f95958,2814100373,17478390317682678526
+333e0233-8ab6-3d67-48bb-ca6cf5887171,1967575933,9239676087521517939
+85e4eb62-fc9d-6f07-fb70-bc0438178bfb,3959183114,12203690432385549514
+561e8ffe-215e-b580-a475-f903e8f42d10,1599501523,10448663567055595988
+064b8b70-f6ac-e7f6-6f01-b2a7c68e160e,1137340336,2412023151823682920
+b39ddda2-3f9b-17e4-6385-003edc9b4328,3769503556,16615715192777056503
+f5daf65f-dabe-b722-57ff-a0748d469d3c,2388888742,12297703793753279050
+ab009679-f45f-7e40-1b86-cb2a26f9a4ef,2699803359,8675749464741368300
+235b2128-e1eb-fba5-7882-736b5e151a40,2983782478,12981291165288670885
+de4a3bdc-8604-5bc7-9a8d-90bc0e03711e,2672533464,13743174259629977836
+52c92cca-bd14-c764-3caf-25dd46ff06a4,1528120696,5370609700268609612
+11905173-e94f-d53d-6e7c-bf6e176f213e,1686431863,13658802809134840404
+36c61a69-87ed-4464-be4a-f898ec6ae78b,2897004474,2037701545861838182
+b297eaa3-f4b4-d07b-ce89-cd3c8f9f154f,3783823790,1233495756533520869
+dc8e47fc-5cd9-3596-c93c-3fd823fbcbe3,2354616894,2160608654681669146
+b5e480a2-4bbe-852c-d2e8-2218e8afcd9d,91679646,18057500699555073589
+c8863f00-fb45-02f5-4047-14aba0bdba02,3689486268,16760883776479479393
+777425f7-2bf3-394a-70d9-9f4a3f2fd756,2691655198,14488536120695169958
+573db8d7-0aa4-d7cd-5a2a-aba6760b4a34,1016336926,3975448596433791790
+0eff9c03-bc20-1b6c-c740-293a1860b741,1088016846,15619329963570541629
+dd00a168-cb0b-ca57-642c-bdcc5697ea9d,108731194,4978767789100630253
+d3a172e5-a1f7-7515-679d-8131b3bf4f36,90628093,4662338438260923417
+b7d8b10d-9bb6-7005-4bc0-437ac458d83f,328993221,9028555885447543561
+783d2559-876b-58b5-b418-327d2aca220d,883748420,15610432339522910934
+56b74f53-0bec-0282-a705-14d4b92d46a1,979316776,4651501807427688895
+81d99258-1d94-b87d-646d-054c779f6938,3894509641,8909628634751305749
+fd2c472b-2c0b-e716-c107-12f30c37dbe4,1289171462,12297674239486456464
+1946d2bf-5828-118a-052b-4b04c9d3cb41,4279739488,14241495313593657997
+37924038-38cb-1a00-b045-8697ac88b46b,2228501730,2859594148143984846
+1ae9062c-b16c-6b14-d846-3a1cb2624725,748477771,18267273963875479547
+a424da93-3114-9d1c-8734-6f584fd722ce,2731053911,14587540883268756129
+c4b8b3eb-762e-36e6-6e86-c0aaaf45e85a,2386723034,6305159202463564753
+bbecec2d-7aef-2e3b-eee4-3ef22b208119,3669000450,14267309596918920357
+6a805f32-fb60-573a-e689-029d89ab1340,1150978204,8403497894826971917
+525c6861-5456-3a40-acaf-cd662afbbfb1,2038718129,16439274509728341996
+26c9c495-4c90-62e1-fef6-7af054aa053b,1318863935,2609606585028038043
+60114501-5e6a-3682-f759-4db775cea5e7,3870856078,12088658826952869538
+d922833d-71b3-47dd-6b9e-780f35d2feb3,145381945,1444645344589185903
+20114a0c-1ebb-3466-a49d-85309c46e87f,4078016844,9917569408382058081
+01a4bd4a-089e-e7c7-c14d-fa4080abdc3f,3266746511,3755065807075509577
+386fc577-4840-f71c-02a7-9c7d6407c55c,1757451208,10640847200310791865
+16abeb36-39ed-f152-6ea9-8aa1f485db6b,1041113891,18154379676027738355
+ffa6668a-1d04-03a3-5e42-facb538fb4ff,2452678400,13932810786003379203
+caf003ff-c51a-1fd8-b523-3e7df3ad1ec9,2740626034,10814258219125002971
+49e6999d-4a44-40c5-1601-add22b0c3334,4119263340,17351613667127244047
+b68bc960-9ba5-3f27-fb2a-cadac908ad16,1450027091,17929120791488062001
+5c3ffea7-90e9-6d47-1ca2-7bc22ae031e0,2614048690,4395482222151771662
+49854d19-87c3-021a-b030-f153108e0c57,3918605350,1991463158122375457
+3e4f2ff1-3f8c-0ac0-a26d-78954a0ea9b0,2206570431,4833598767363359298
+cffb9b4c-242b-61d0-7a29-db89af7b9138,2959957068,486690444882837124
+abbbd623-d8ae-226b-cdff-fed69844b124,1383637151,2079921448234753209
+6d86a677-2b7b-582b-09b0-2ce0dd3d7122,1988687829,15225566233986596555
+db0c72a6-45ba-6027-ee13-3691471ba363,23460811,7929706956799641500
+edb39794-95ae-f49d-8108-25ad0903dc82,2108229754,5637506100501816694
+1019648f-1030-46be-a5a2-ac32bbf2ccca,2708389710,1421269769047361220
+dc6bc5e8-a966-ebf2-0862-7a31f9efc7ed,3077739265,11262649366151032020
+6007b1c1-49e5-06a4-cf0b-367e3c441ed8,1803936854,931775227304497364
+107e4043-6ee9-d7a0-e0e8-d242bafd1591,3983226890,12362244449497711537
+97bec3bf-4ba6-bb55-dbb8-f375ea376ec7,3001471644,9038218263366700365
+9d854ef7-c3dd-ec5f-847f-5d6581fb6dec,2995812978,12040773439742098468
+45e67122-5a75-8bd8-f9f5-d864becc7c3b,1537466056,5905228902504921638
+27d7b971-0cd3-5cb8-ca3c-9fe6f80604a6,3354366366,14695321002376996605
+d4b3c50b-d780-125d-f114-bb5c5fe3246a,60101943,1684692097051718639
+04f59d55-fc71-cc9a-4184-c8c89ccd6fa1,3838577546,16736412183829998310
+889cdba4-e029-3181-0f26-4a7adb0e9fb9,4161828582,9533974777786337962
+7eca4a83-22ad-61b0-f103-5acb6fe73c6b,1013069415,10525729704377376219
+358ac478-7a09-f37a-237e-70f6dea73225,3647212308,7645584885386022658
+cd94d440-157a-8dff-d0df-6cbc7686c951,2445179395,18049769774675351445
+6d724c91-78d9-e4f0-f032-025b726ab1b6,2478990502,220192320023822913
+9af1a8e2-b3f7-9952-f987-b1d2f35069ad,734153013,16701735038626695612
+47c9ed2f-9104-841f-072d-727d62cc9f53,1041262429,17961978581162287472
+85cb80a8-bda2-2464-5bbf-f64bd095e26a,1047330359,15003025170314872284
+4f3a2033-586e-a825-222f-f9019aa6966b,242578909,7295208000231490853
+bbc5c4ae-e6f9-19b5-ef26-4c58d725eb18,4032236655,14315154380473590611
+9ec7895a-0c5f-45b0-3fe5-66ae8ec32e7e,1682550392,1341355350547310290
+369a6c09-dc4a-c1c2-0f00-c10fe0066fab,562361084,1431799008237449986
+b8c90605-9fbd-9f67-be71-3746c71ffae1,1425021660,10923511985890709229
+340a6ab7-c0da-8235-6586-f58a6aed74c5,1568435647,12328669947141927643
+0c918bab-4052-2d40-0189-31c878c3b248,3175750537,5378707772046250081
+bd4e7892-d16e-2f9c-6d86-230f440498eb,1892768846,4650499378493812902
+a8569848-2335-be68-c79a-da107028e423,4152707340,10456751911989581490
+f2a46a60-bffd-2301-271b-ffe4782509c7,1204948355,15783136246668762024
+d61d3ea1-a0e4-fb03-31bb-a67f4cc9c0a2,807004434,1583413070120138588
+dbc5e8ee-e834-4948-5507-a8f34bf250fe,3528296663,4720308860701228420
+72b935fa-c43e-4ee5-f892-e004c0bc7e0b,1014722476,9843658184189056250
+cbf65bb2-5781-a990-16d0-737e9158b6f8,3158672166,13023005979073847427
+2ecdc893-6f6d-f747-909f-5f8c306258d9,3330834824,15784875844492624285
+44f867c0-fe81-db3e-405f-a5ad5ba84e44,1317152315,11764400863629752926
+6a137756-a176-8be9-774c-a7ae06a2be49,791589847,4810283043361481209
+f12c56f0-86dc-c949-0bb8-e5b84c6ef8c7,1580630345,14005196389731128452
+e1fb2094-e643-83c9-f4e9-564e4ab1c539,2676009232,10921445359183327535
+4d66685f-df9f-8f25-10d3-9b45cd5f8142,200195080,12445369518311421585
+cb965147-bbcf-be4c-1742-4c6504a8c4ca,497053818,1420633367932954789
+6badb1b3-d710-7038-fbf0-bb394776210f,544953904,6929703989864398393
+5752c431-eec6-7f5d-7ed5-c887751fee20,2327828960,16140526097163727684
+a6b016a2-97f4-2bbb-feca-19b8c816b927,2344036506,3912022247178476904
+032fd925-b916-79fb-8925-2e15a12b017a,1966442866,11774766693819938994
+f2f80383-2e60-de17-b7aa-6deb15fa3eec,29221199,4035545162972858705
+ad43bb4b-cfdd-a7b4-8068-1b355b584693,2713550136,4149257428333684312
+3d732d73-05ab-73e0-5e28-77e4b46f2e56,645836453,12434745590195042191
+4f2a8c25-0dc8-1a8d-8384-15b0269fac87,2462595834,4682943304537472962
+873d8dd3-079e-f315-4b15-21372f766881,602153642,13294317078461368394
+17439154-7e08-d262-2d5b-3828afb39997,2039917082,8268855266743357103
+4a26a92f-398f-8908-e382-6e0fa1b8d739,1109843065,6777385259859613062
+60ef0e78-7c73-ca7b-a6eb-4561d906dff0,822535733,3397354649560902053
+5d3d4d5b-80f9-28c8-805b-517c66c462ff,1697330084,4862031477556846587
+21194ae5-2a70-d191-04c1-744c2fd41088,2276246787,1591678152899148422
+2d0302cd-d58d-2738-948f-423226b349cb,48447296,8990736170529307482
+8869a66a-51ac-fdf9-9c6c-4d0526ed69e2,3068406550,8765335882424334208
+81216efe-1757-4941-97ce-a59d610052e7,1163607495,11143421678118696636
+f3978212-fd31-0fc7-78c1-090526c6eee5,4167311998,12750466871168486116
+4088cf63-01e4-0eff-33e3-4e7d3eb4fe07,1653547480,12405734011047784552
+80bc4f43-0868-aad0-5380-05e549798c5d,2253540013,15946203581983591308
+5d91e189-528e-782e-5523-3c6ff4fe9294,1645273961,6118910923962884741
+3c69b60a-1cfb-c4a5-aac1-e853d3228df9,2683348004,11912736600043644054
+fdaa12ea-842b-c778-fc16-47bb3a2fcc5c,3046570982,3970456795486833173
+176fd669-0b13-8cbf-e2f1-b031d894cd04,540403759,3268252189549589368
+3a16b435-0ffd-3451-c007-34c4ca53f112,1277948242,14508287396230260470
+4c374c26-ac8b-c16d-c3c9-e1186aa3dc81,1318875073,13560802055327941678
+87b28fc5-215a-011e-76bf-00ff4af128d3,4074422780,17761724035142993302
+7d3d8a9e-bc8c-d77a-c639-57dc8d5870c2,4292688822,1013423782095560063
+ced3823f-e1d7-8d5d-59fe-e3aa1cdca93a,2587688462,10935221518462780976
+f90b4b44-b270-f623-b780-33be26eb9bfb,1876352201,574804496887550039
+e16f27d3-96ef-e943-da20-339259114238,3428359876,13065725492857088763
+1f2398a8-1b4c-15e5-ce5a-9e10e4e0c3f6,3548420578,3083296456801022279
+8baac6d5-3606-666a-ddce-df07ace9cd8b,503123692,15002053486133636529
+b391926f-0ffa-9b67-9f56-a28748add428,265324454,13762627071192478591
+1644e75a-6962-4c64-123d-26cc16c9bc64,2400514981,15390890515797073383
+36e66373-e7ad-aef4-6f11-534c6f2e6d11,4050017685,12231258244525600751
+d9ff12a0-cb9f-0a28-b4f9-f0a52679cbd8,2804292937,3036477840277539230
+276f3093-3bce-c1a6-0901-7f31837cfed2,4090018838,15641880742442634165
+74d71cab-2737-b33b-63ef-af459cdc9cea,375324166,7161371628293762322
+501e7831-9a24-5c2c-ed3f-20aca25328ec,1192107413,15725142454304783158
+7035bd0d-cdad-47dc-2612-55c5f65b361e,3239031516,18132551975890584835
+791c481e-ec8b-46d2-9caf-ac11ec592796,3444470298,2390152847631045072
+3bf8923d-e290-c755-9c31-080c054fe963,403958218,1731193913186606436
+f9d1f1f6-e635-09aa-4108-26337d88d4be,2740247916,8187252423127735119
+b01f58f1-52fc-ffe8-f5a8-16179b1cee14,3318086628,8164636315157433798
+dbfaa739-5c4f-d4bb-12fd-0a85dfcc6c8b,2644062225,9730796386088920851
+7922b14a-1149-67d3-40e3-c4ba508daca3,494801288,14465167311347511248
+7f4f7651-5fa5-979d-a4ea-9c42022834e8,3613071636,12206608112556954545
+babbf046-812d-862b-5423-57893f8bf86d,2309670080,10097940721588017223
+5124b3f9-42c4-9742-6de2-5d6c5fb917dc,140292465,15177201308278225785
+0cf0c0c2-7aa9-c966-8eb7-e9d9fee291cd,3728402991,7186752260233119683
+52aa6803-df6c-9483-44c6-1c5710feb634,2430642975,15568510939937772446
+50d4e76b-ada1-f2b4-e3cd-672b3cf77c72,357601327,6621070403825300137
+67b78be4-59eb-24c8-09e9-cdf98ed2663e,4017921667,4992671968937949154
+f66f91f7-fbe6-746c-d7f8-d04a0c476fa3,3544187134,11574240338902693131
+321897c5-31aa-d993-69d9-d163b43e46dd,2799365669,10379077597612437997
+5cbd7f73-5fec-465a-791d-3cef0dc6e61d,2368480270,1131675393042566974
+271f9d03-9590-91d4-858d-6963e595bd55,986275476,7991437692229931646
+e4ac4a48-bbd5-c7dc-9a97-7593ebdfa2df,627089987,13520041924296144424
+f3c05967-0739-937b-f7b8-77677d142c81,1315381638,11621961145923650287
+fff0ed5a-6282-562b-0bd6-39e592caecaf,2898391350,9698821056972292406
+606e593b-17d3-dc5f-15cd-21ca43689c44,2114454948,7088443294299674940
+810bb05b-ac95-87be-d7f7-4559c8c58131,276196542,13290952935147719072
+5090c9d3-b648-335e-6943-b87e09629c8d,2442086198,14933366775759159254
+fb1af8b1-f789-73a2-68f4-141e9c4b5f18,175948679,10650205004428862757
+087edb4a-dd47-5287-fd80-67626f572006,3645126934,14765766124098701936
+f1f947cf-7bc6-9391-15f8-b8d06ac8e688,1273189926,16617788306595734897
+1728a6a5-a488-d905-bd5b-7b96474ba452,1112175710,396849781896181939
+6438494c-f591-62e6-a5f2-fb6834ed856a,3248779413,14361947285201508993
+1125c0cc-0131-2d07-a0a0-4fb595d73a9a,2351955805,18091823238911013525
+2d4f3484-b1dc-4e4f-b660-b5b2ddbe95d8,2874915458,10828991699597239458
+2756f86d-a01e-91df-dc45-0681f43ef820,648693781,6571711131037280766
+6b2c6872-7e70-9e2f-fbc2-30a9bf61215f,2403894771,2184772508159414491
+171c4126-3974-90bb-8bd1-d525119f50f1,3055171453,9034254251849428628
+65cb5edd-3b6f-f80d-a3c6-21d0cc087e4e,1061580908,14241183839588965062
+d8270c64-646f-a95a-c58e-8ec8488484b7,1975808840,14224214482153631553
+e781e298-8e27-6d1f-4c53-5fe224aaf7ca,2843334592,7511355371879126298
+4e677827-a9b3-cb46-95d6-cf20cdf022c3,1748592501,3106993056530578236
+c9e8839d-2ef1-8555-e9f7-6c55389c3096,2030073682,16259688631591279539
+097b81c1-35fd-c182-5808-27cb63516f4e,3635143871,8443203655132670468
+1a5caaa3-59cf-5f64-9fec-38c83a771b2d,606264502,2353542139691381247
+16bc4aeb-f966-7838-0d36-d66d7e46d1b6,3559351149,11500066407153015170
+c9ca6a8c-857e-a89e-792a-9832c61ecd4d,1645698409,17559003685727160205
+fed3e49f-d0c3-9d62-8fbf-555161f20884,863628029,6213506474208284984
+9cf919e4-3245-0d86-b28c-86db68124555,2228467523,5361731435906399947
+d576e7cb-1228-41b6-9171-d9cf33d88900,3223658864,13362507757644742529
+4e24deb9-9ee5-d03e-ec0f-da368e938180,94253183,782177011115311132
+6422f774-27f7-f8c4-b5ba-5afca1749ee2,1243648617,16902359433237365208
+3808f954-eb69-996e-9167-0c8957572353,1934296530,215836484894776394
+5b948178-1f7e-fa17-2cfc-6f684ce5f8a0,638677647,13159057976431432511
+8ab07db9-c890-4e3b-20bb-a5e719188d50,3858920318,16974054028018703062
+341ce85b-8494-e187-d19d-fccb18416e5b,2346043219,13327941337337619273
+bc900a77-0243-2710-a432-f2ce27009b5c,2615677397,10039771945140150793
+a7b74f53-c5ee-4191-3dbf-e1c07e666d7f,181186719,6744126360811329393
+d00b0dc6-bf9d-c6a2-7ffa-911f0e0d0b8a,2842592400,18339885827128244196
+ccb256a3-21da-81d3-c2c1-415619cef43c,1402906573,16601818547731380419
+4c4ff997-31b8-b4de-3a5f-42a7125a40b7,3622040349,17816740482686652980
+4134fe47-a332-c818-e065-f5c66a0be7c5,794157329,15429750343563838031
+51a32460-aad1-043a-0793-5382bc2499ca,2259272957,8210780898750778576
+52bb9fd2-8ac6-743e-0750-1df450ff14d8,1514323332,1836859907654774085
+6c093b3f-94bd-5c11-d1f9-c7ad6b43ff6e,3622285318,13043127468886338962
+0f748fa4-54ac-c00e-2f47-b46753bb057b,805586257,10401585491576897480
+e4424330-e9d6-7880-f297-4f8c67b8904e,1339264370,8167273129461171690
+2406984c-b97f-0dd1-047c-409331f11858,2291887522,15125356868573538386
+7aefcb4d-392a-82a3-c457-bd379ff22e82,3410105581,3988804271007837193
+1f457d93-1db1-97bb-33ca-9b7707c51b27,128127882,13844943660070473118
+2e79d1d3-1386-d4ab-c237-8a6e7cad2b1b,3816994013,3513319534655560689
+06ce1f8b-afb8-da74-7b56-5fa62244d7e2,1311078806,3163728702096147623
+0221b8b7-b255-3abd-5353-a2ee73f84a17,3435506614,14141830164250324755
+d0f7bce4-971a-d461-d991-418f4c226fee,1593465857,13743224030776413187
+b8a3ecdc-f107-a5bf-b170-bf32ec2d9624,158922839,3039741170882994098
+c73e4d32-f9f5-c951-d6e4-3fe847d134b5,2805978803,299799272465268611
+daea2628-01f0-565b-ab67-6b9f477910b9,1814991595,15508242571989554406
+49a2028f-966e-a50d-46b1-9ffa7f8e70e1,3571385639,2193240222965548695
+35a26c87-a3d2-e35f-7cdf-662ae3838d24,3953347458,9354667135369299495
+6dd6dae9-4527-d949-cc9b-918cd4ae237c,2259345051,12963406399298367240
+900c3540-c8c3-e7d6-b321-79f8cd6b7064,1569708343,12306759009508117467
+1d515559-b94f-b0b2-ac18-203d1ea9e8ea,1059426546,15252416916545489724
+ed65557e-9778-ef81-ffa8-1688cafba4f7,573976625,17370305218272145540
+34179daa-4b79-017b-069d-e6c7b91e53d0,2309463962,6878818498299799339
+a0f1e054-eb62-4ad8-9137-ed372dc1473a,1953946781,6031055231114391992
+8fc4691d-8ff0-e09c-ae98-7b6a3f2d3106,1886137948,17306019363295461371
+72cd5074-00fc-e9d5-8ca6-144af60326a8,100387693,14085471626868658582
+41a4f0e6-1986-980a-384d-e770189d4dfc,2830402608,701558558044071062
+c547a3f0-4532-6779-492f-2b8cd0105875,3500083849,14692404178522906744
+52050986-9168-d01d-cc57-8adc15b72b55,1625396178,1085609022252246636
+7d4347ab-8fb1-82f1-b65a-13e3edb80f49,3847277242,11353507524029805042
+fbc3ab6f-b568-0772-fcfe-ec7f99154dd4,3911104807,17796982766144631962
+1ad45aa1-50c0-a62d-0181-5290bf1e1c5c,3527350026,14335208789488253570
+39d8d09a-c496-3bd8-f541-03559b09032a,2129202545,10791147830321342333
+18d29927-cb03-d8df-0c6c-44765266a46c,3446237002,15467582280964737965
+da4fc638-0a41-3c26-bb60-6c9ea6de8cde,3503511260,3711879419551678026
+d6d9ea27-e1fd-7e3e-21d4-3031c079c2c9,556964050,1596360311905692756
+631921bf-c7ce-c152-5b90-835cc263d2c6,2186219192,9201749062920781132
+9e128817-4a5c-8ae2-64c1-db2d4a0b3cb7,3428315790,9581972127100378011
+3d673189-a01f-23a9-cf9c-1318507d22ca,1446862941,4341399332533547947
+f85e91be-c871-c764-4047-d85bdb917ebc,3273332184,10658155843904265404
+2465e49d-c27b-1629-93d0-e3026d71d9fd,3202556397,3067809100053550692
+42e8f5c8-e1b1-9c7a-c2ba-a9b9d659e744,2720513874,3451896996799793671
+5424b320-5870-f610-4d1d-fc741ab2eb28,387322499,3910816237688725668
+adeb45b3-8f3d-079c-9e86-cf2065a0018b,1427834295,16734260399669030324
+569914d1-e002-654c-7c13-c840bc1bd191,4032915472,8908965527905055355
+de51cf70-dec4-cbdc-c449-7934ce23ab5e,563386560,16670370985483236486
+66801a11-f90d-d7e6-07bc-500099760a5e,2323863282,16985520704659046294
+bce4a1bb-203c-69d7-4a5c-05a6e801ec6f,3567039924,207376905712500829
+12527db6-d836-886f-de78-272ef1cef7fa,1319505961,10703862930408826418
+05b87c99-6716-5cdd-369b-0054cd52880a,2563618861,15156130163592443453
+d916f7a6-5af7-d0b6-47b4-6bff7ebfa8b9,1027683889,17335979431300750519
+1ce8a346-f30c-5770-f7f8-01cf6612ec74,3039306254,15503431215993788428
+1ccecf0e-856d-f032-609a-f0a9fe6ce648,567450535,10822475622292627607
+e25289ef-b48b-94d1-270a-3e9fdb0f6659,1823643221,12913296468672921139
+caecc621-de75-4cbf-91fb-2339c76344d5,584452531,12663688256917865490
+22864d10-3979-198a-ff30-8644ede2de6f,2988626316,16608006388746899383
+16acfe99-d6ef-ae53-43e3-1598e108394b,1557292762,11049906886257210293
+8ef9b9e9-be73-f7ad-adf2-cf9cdfe5aafe,842714576,18323580736072916526
+63fe9cb5-cdb4-0ea9-f7aa-68f3e24b1a63,1073167552,13744376604166220976
+515ae1ab-2a58-4515-0b73-bba4a20da0a8,2335825481,17967958956280105512
+cffb2b49-cf85-4c55-2f03-4dc7e60bf349,249032689,13611622716659181505
+c33a4023-f9a3-ffde-840c-7aad2abb2fbc,2885210343,16197002566149133888
+ea09eef5-01ba-da5d-61dc-f210f003e973,556169584,5439721623631426681
+5aff6ec7-eb8a-53d0-31d7-fd44c6d1ad18,1913487683,5973089729092704308
+17296df5-e920-4694-3bb0-7a9b2f682429,3202444054,14615979976151607178
+322ec217-142f-287c-4c13-7f7c1c64c9c4,2019468260,10969243547114123441
+bee7012d-99ca-b606-b6ad-c56159c40ba7,1425528364,6219416666177395969
+0b62e1e1-3a78-7070-71f9-195f67c47ca2,2109925959,18115819778260031682
+6f55131a-8da6-bb1d-dd76-54ff1aaa826c,4187483755,5255835825678572542
+740d7660-117d-625f-2bc9-6124692f21ed,3712525858,10686435086748212917
+e8950940-2216-725c-16a5-a63077608c76,2281056316,3453494061477753370
+61a53c03-6fd7-ff3e-7dc0-5ac9567ba1d6,4029152667,7547414284871065256
+8251729e-0f6a-0173-d0d8-9968be5239f5,2988885644,2612707504486306109
+7265e57b-3eaa-8664-797c-a4bd974c97bd,3550150156,16795964176160058949
+fb910eb9-aa64-2e23-87c8-70a440111e63,1583820144,7888004270022965131
+8df915c6-7458-6e52-f2e5-0c31282fe8fb,1781722844,13519285649273976002
+222049fa-42a1-e538-4f80-055cfd2b79dc,2975308167,7782860640474490782
+97746238-9f8d-8dc3-0382-4433412ebf40,3641296844,10472843084604939549
+fd18c88c-4b6a-08e9-c5bd-2da9a0877c5e,3863390863,11029678248946649152
+c882e70b-b862-0e25-34ea-a5019e9fa9ff,1020919098,10396477459833794601
+a3b1e34a-9250-d12b-a715-b5108657a1a1,3810931154,14896249218617695230
+774c1f23-be06-3b49-fea4-2bc47f9376f0,2614748852,16214495196336638439
+78fa83d4-d3f8-b6ca-31a2-1a769318b9bd,3272601566,5506719599316497039
+5198280f-bffa-3d5a-ac02-2b4faae742d0,2977416723,13135803950343055272
+78fd8885-de2f-b44d-f1bf-86eb4464d941,587118796,13477194047654232002
+9d843e3e-4ea8-1051-df55-8f6734db2504,1775713710,7362024300892598086
+03509317-8606-4355-c5fa-842e95640c6e,594051760,3764912669622780062
+fb7a24cf-46c8-1e48-8579-90da1860986d,2925854774,13539538708290836491
+6f3150c1-da9c-7dd7-386e-021e26ef0a9a,3834911206,11932970005434848720
+178dc6d0-39bf-e524-5fe4-35adb161ad2e,2689132499,10231996578300810901
+56f2356d-da07-c84b-9f46-d4c218ed19dd,2071923183,11213592522389755346
+3ad6e6d2-abc6-aff6-75c5-fa5dede205de,1954881270,16772089503688282694
+8c5d0fd3-b5ad-f3fc-a370-3f4053c4a094,4241064429,14227446172915104056
+f1f31200-3c6e-d75a-911b-979e39962f98,742423676,13223401607246161545
+8af2f0f9-b62a-03c0-f864-99555dd95cc2,2824233772,1340593592901097140
+ab8694a5-8b0a-de48-c5b4-3fcf8bce0a25,1631283369,1676617611236165688
+3cdbfb11-8273-af41-bdf7-f54cc8a39ce0,1763152655,10959028686037877223
+6eef3823-74b0-76e7-5737-3d1cd37af03e,3560449452,6651843371969112506
+0e31f2f4-9ef3-f03b-9960-abfa56d49ad9,3597171725,9686902735432334746
+fb7050be-69ac-63be-9bed-be3450a034f7,1857711756,14216047109744833297
+fda06100-0ea9-e89d-7bd9-cc918d026243,3207423991,9413490011181726051
+724a6452-41f1-929e-aaab-96323f2882d4,2690622291,14152240047687722386
+253c62e3-3e23-e39e-214d-8c9604fec34e,3360955126,14327075702618133793
+6efea31a-dcf0-8881-c78a-79c56b616d06,3758868851,6480695510072969473
+9c4da8c9-5262-ed97-ca8c-b1c45374ee64,3141517387,17736585538065705079
+1a5125b6-6d2f-14b7-232b-545d2c64d6ca,4230032769,6949160497252450753
+6bd9ff8a-a00c-69ac-7191-398303aad90c,3861117647,15353136314401322364
+e7dc27fe-5f19-15aa-4dce-e4d23da9efcc,1029453065,16145110963789714233
+f97a49a6-803a-6d1f-4c06-a2a7c67fe590,2943780223,7261791407802942801
+605f6ac4-b068-193c-c2cf-40ef8f7fe36e,4046334169,3089373238919397004
+42b4508d-7e4e-cbbf-5db5-c4e0d6601e84,31957739,12831851161094686890
+577d1e49-0bf5-75e7-55fa-e51a5fd9cdf6,1023790825,5845294763753293364
+efe774d5-415f-9217-fc7d-db73d4a85dcf,2081664135,1233748381695552190
+75a39e93-2f43-c8cc-ae88-09c95ad44872,2620078396,15147769803315720550
+1db94f0a-db2a-04cd-3ca1-a3e6ecbb1824,1159270460,14177145013199475166
+e2bbfeb3-9758-0691-7598-f54a8bdfe84c,555798771,2708103006120231722
+616563f3-3fbd-1ba5-cff8-0d9d06cbf17b,2122618651,7325493540257004287
+573218c0-d23b-dcc3-f644-bc5f61e5061f,201147010,15241021801822502300
+186b6a9b-838f-4462-422d-840941699421,532795509,7213720028873088215
+97a3ce42-db03-64b6-23db-f729414d7feb,1635916434,6771387378023444933
+480cc14b-8002-3247-78f7-ba4a9e87d2f7,1379710351,2704853216138692776
+798f3fb4-bcbd-5a44-0909-6c47b3c7dd5a,1310249914,16105288849637156098
+ae123639-697b-a55b-7044-e071e174f2c8,3757415264,10127783625335785060
+0b5eca4d-4caf-65b4-301d-3845a251cbb8,214177836,14680672498475140887
+c3114430-6b2a-752c-7be3-64c66b6ba343,944696030,17378799327203840555
+c0ce57cb-160d-77f1-95ea-f978ea4966ac,700642343,13047470701627584795
+7807efb5-2abb-a088-7f2d-a84cbf2f76c0,303200321,15714043637885675690
+d69ea76b-a0fa-f364-6c99-3abfa800a153,505698622,7198484836363332018
+54cd3980-d3b1-3e41-7836-f0cf91245d99,457535101,3937916369062267587
+a8330f44-a445-c976-8ff7-ad6d446807e5,2862077134,16358564880710044838
+3c279563-c392-f20e-e8c6-b4602b1f67ae,466240803,8576879706032787309
+ecf6a67d-884f-b1a5-406a-456b99a6d1cb,210280677,9666066242207278894
+fe58c1af-5669-2e41-58dd-7c4175036921,936196238,9630458890398703387
+bda64847-e808-40dd-87c9-272f98a5e9c3,2007497575,3599782867938680359
+9e2b2906-e71f-8ccd-3837-04e7f554c2ab,1594430282,566325025552665755
+6679d650-200e-4dbc-c364-3b3aa463743f,1598599202,4334586760892492551
+65c7a8f1-ea74-3ba7-2f69-2687dbb2ed61,1732989859,13605189489265724247
+6d101247-6c5b-339c-8a78-86819f663460,1704731157,11031855520542472054
+f6d5be62-5686-02b9-81c2-e2615f6ddc57,1250448632,4381390497728950309
+e911728a-0ded-8755-9870-d0afd29137c2,525149602,14231650354861024373
+10a130d1-d795-50bd-8dde-604ba1b6790c,2258738781,8213652181579999983
+bb0bba3a-921c-8fdb-9296-1518d8739a8c,2388068080,11183532704716465032
+8b102eae-6c1a-f6af-c668-b44802ffffb0,2494296696,4027306139737838648
+b899ff32-ba4b-cb5b-da6b-0706c3f848fb,3238717755,6027841549763645737
+e395a221-1dcd-9263-9902-824c23173521,434380048,1889203967590976626
+4a416469-d89f-c39f-6d8d-5d1975f7a960,3406391293,15321307519152323083
+e3088fdf-dd61-8177-5f27-6efe7d36eec2,1911688062,541458113215481977
+496f454c-01c6-94a6-6901-f0fe4f9d7179,508312372,6706173338591582246
+6ceb1edf-0631-99e6-4cea-3461c777d890,245037020,2669227088929553419
+92b68725-7cfd-5036-c011-fdf7e735846f,1541354044,15994071511306546823
+62d6e722-9703-dda8-4408-865cab1796f4,1631422765,12150952008140177233
+c6503674-29ec-74ba-4a43-9204e5922296,2353970685,8556776353254866421
+46ce7c5d-7243-9a15-5ad8-753b81e0239b,2379375184,7605219462887656948
+4d3a6243-3731-7472-e711-b96843c39e91,2130553640,9012936234837611784
+97b71a3d-f63d-9c5e-96fb-42b436dd2311,1087158404,17945782904764288521
+9287be44-3307-c4ab-4755-9325917607c0,2073296286,8610855653885917709
+754468ea-45f2-34b8-8fd7-7e28c37eb3d2,4037980851,6476857996295854475
+edfb1f42-14ed-118a-654a-a3cb60cc4f95,1237776250,2315121167091882150
+069ad3a9-5a17-9fab-ed55-c8a86c05923b,477177995,3834826550469997386
+03856667-be73-a6a0-e6e3-aed9e92b1240,1752804369,15869371008357017554
+de9d1d76-3fdf-8d9f-4292-697e55a566ac,328999178,15699061986984324801
+0743dd6d-8d8b-d86d-9278-b7098386775c,2218449259,16305988275969140238
+6ceb2a7a-c717-d419-6cae-321af9b88e40,2172904043,11766219136875507440
+37e6e2e6-6979-2442-5031-f10eb8b738b5,3437674467,4928113439488590052
+d089ee8a-61f7-24da-e23d-05276c6abd0d,1137754338,14010061627705409335
+bd103994-b0b7-3538-0507-4dad861ca985,2172554920,16283225721565673194
+eb9839da-8d25-f68e-24b7-e2b3e9f21645,941458814,13656097183986690627
+7ca82fd0-713a-431e-800b-725e141497e9,3532004998,1980533341049607422
+f8f43da5-ae55-7d24-5f56-eb3b095d19c3,2104955945,16843881569450383565
+7d073e97-c9a8-7c87-ddc8-3b267487575f,620864385,11968398657781883569
+e65d56b0-0c7e-5c66-3fa2-5f443183715b,626629092,11995786513717218476
+49489412-7d23-8eff-35a6-28d1fc832f3f,12138888,447998888606391532
+be86cb94-7654-4a89-1038-917b424d15d4,1738780765,7153341078207217053
+6cb56e03-21b1-6d20-d245-cbe7755afaea,1998417264,5664547588185058967
+00a7c366-6f7d-d79d-ba60-04c177fa651b,2501893270,2668570683194066863
+ed30925d-e95d-ea54-ac9a-5d6f9b79702d,826630427,5751946490973623018
+a50fa25e-5954-0d3d-6182-25267cc14bab,1274467378,5377065515899367084
+a12eb4fd-ea5f-c70e-81bd-8edae04daaeb,1053405021,12380545517229868891
+17416177-c6f4-b391-b434-ba181f1de3b9,1772047186,6443034202230868686
+2642bf28-80e2-c26d-047f-afa8452b2477,4285477887,14215149982297961838
+124690fc-0e92-377e-86e7-54db3c2ad9a8,4083235160,879852930770747877
+afd20c4a-703f-0f79-d5a5-8052e0e552cd,282667854,5249154584875202691
+a7f49c9b-ed7a-d92a-9203-9e864d101696,2454159236,340272730464308114
+81417080-12f5-a77e-87b7-78d7cf1b070c,3527917575,10270256635669709775
+10784934-3456-1f55-1bb6-ce642f508fe7,3475745426,1820076039137631884
+5bf23b70-38c0-f16d-11c5-8d31d6a80d34,3713513033,12420721035803664998
+f82aa7fe-6cba-32df-24d7-035f9c60a850,3606068423,6754951352388513471
+11686401-b771-cc48-138c-10d833b7fd0d,657907823,5480373020322278799
+2af6824c-bfc0-9e65-c37a-fad9ec1a276b,1385796133,2243629876352180216
+7907f0ac-218f-4605-6f08-dfdcc4b11ccb,2176324097,13522696169384623226
+22c9e822-a2dc-57fd-b1c1-b6e0113ef76a,2753767348,13474228812469848945
+2c1ada30-f7f9-21ac-0c97-d5c275c31a9b,2313787876,4267412565998696531
+58abfa5f-5af1-dddd-02bf-f2c39986e6c8,141277174,14908041591135790467
+07e8c6be-fb11-eeef-ee73-340ea58379f5,1429366152,11688785396870402791
+71cd4dfa-a892-2ea6-2397-aae1d568671e,1612405458,12179093071354791907
+e10164c9-9c46-1084-795e-4dfa4213666c,1255044565,5094168164773032510
+f19eea93-b3dd-2d75-2849-522910b233f2,2729199207,638694316203175299
+e6b26351-c26f-813c-fc2e-13818fde0b2d,2231140352,4799569228635086462
+e1206f82-0cbc-453d-5613-b19b0580bd14,4155310909,3527401440411705489
+44c8dd05-b1df-00f4-fb8a-8c6c0ac74024,2742657982,15589853725279063112
+0086bdb6-c8cb-89d5-c754-c0886a7cebdb,1359846601,5248817276407790898
+ad20a36b-39d7-2688-7153-1d7d2fa4da1e,3792014841,8216252665827208282
+2f239d6c-aea5-c9f9-0caf-aaa82e7e545b,2512550170,17858053943145414428
+aa6d1ae0-9fbd-bc6b-3a65-f04ded379d89,2181424570,7435179463990517109
+abddb81d-511b-5515-c6a6-ac36ab871dbb,1109699332,10454248534967119916
+2404195c-1561-f45c-603c-a3489e1c5507,522453053,13493243221564366587
+7156b9dd-5685-60b3-a14a-baa0c4639c7b,2735820299,10796695091324253079
+3a17bc40-7d9a-8d33-d2b4-97d167f1bddc,1345049552,14901648274387056571
+ab1ccfb3-515a-f2f3-65a6-bc6f92c31a43,2650904221,10975858981198180143
+7de238f4-4d2c-5ca1-b94f-8210c8d3db27,1314623376,5738667973048926237
+b5e4c258-8126-9cb2-2a20-32f5bc381116,1575535883,15405292821135065119
+78d6c1dc-c1af-09a9-4096-3741e379b85d,970821428,12505010941677833589
+dbab4997-a2ac-a659-0d36-913bf08ddd25,3223766754,5847400116336316553
+9853092c-bb0a-6b2d-896a-03f5af1d5bb1,2574975217,17889490720246936484
+8b98d8b8-57ce-bc26-d5a9-79690ffa0964,2136984001,2862230065588006177
+51a14a13-3115-886f-79ea-84c3f53c463f,144841846,5481349273639841095
+9e4cf7dd-d554-5c8f-be4b-5159f02af533,748757855,17810055998328771519
+c2518123-6ede-45ac-8141-14472f048354,826154623,7680563842856940309
+4dbace13-bb21-57b5-995f-2bfd90821c4e,384274568,13991134139759619922
+8061c182-d913-589d-205f-b99719360840,1567895089,2447637915317854145
+a097b838-5366-7452-3a3f-a60c86b44dc1,4224083630,477118511084697923
+ef54b527-a2ad-5635-74ae-7284c3aeaaa8,2104104379,1743200864364111543
+73002e40-1885-5525-0b8e-bfe9897ac9b1,3258591453,18385866938562919683
+a1cdeab1-022e-02e1-4d46-676ac74232cb,1182913242,14696067321209247849
+a7ccfc51-ed34-17a5-f16c-fc130587018d,4249880352,8648754770787637467
+907b4384-912c-6e8c-98f7-0e30c18539c7,2059736996,12346625785951428287
+91fa8985-5724-289a-46e9-369a74dc6f1e,325226659,8404155947127396570
+faf4c4ba-7944-bb91-ed2a-75de26773a81,630475213,455969422007987666
+398ed5a3-4d8b-f4c7-4388-6358d41ab677,2348172843,8744877770134887907
+1b2023da-1334-65c9-3e9d-762fbebb1b72,2645920870,536402484788142234
+992eb0b1-f0a5-8538-a971-cc51b09ac07d,1869969859,9460765137887576134
+488177c7-5954-9859-7734-dcbf57515a2a,96082462,907191804743702936
+112042f3-ecd8-4983-63e8-c9f61c8c89e8,157567628,14302261245618466351
+7306eeb8-64fa-9be3-b104-0be7e6242e1f,688621783,6822014630449776384
+3366d4ed-2b44-652d-4883-776be0bcbf04,2413994550,6051535740998892063
+f036747e-5450-c229-5581-cb6b156c3fa5,1496637054,15553634286718764655
+0b771c02-34cb-e719-3103-df392e03ad1b,2719745422,17471807025968789069
+c0a425ba-a2b7-4b63-5b69-78847eeba9b4,4242623769,3096985782552712314
+7da410ef-94ee-9df8-364f-df0016b36061,3443215304,10642160269862063676
+c7aa066f-53e1-0fe7-303c-17305c2145ee,1957440364,9701736498459414970
+8f02601e-d405-3287-d353-bced58710264,2082985239,2901640980924024788
+40c6ab16-4602-ec36-1232-02b9d2e4f0e0,3519512793,8858051332315474459
+3cb5c5d7-416a-cc3c-34c4-9dd35face53f,1136865785,15701346999343907263
+46d1044b-0ba5-0bfd-63ab-4c9f4b76fc72,2087168448,2589212752523862832
+df07f9cf-c3d1-06a2-abb2-792b20242596,199150958,8028026761515978976
+de5b8276-45cb-d070-3679-64e2dce66969,2263020939,3352425471677019879
+5e4fff7b-bdf2-7fb9-f6da-b044a08be150,766401808,10846240805721463426
+f4b68050-ec56-f267-db1d-8b13bdd49f1d,2838232823,13190552932354201654
+a98222ba-a048-4603-0b76-3f93bbba4605,3261815332,8972910663150964473
+6b40611b-d8bf-999d-ef07-6c72f71d1b23,3388746836,12442925220746135403
+50d551b3-4d11-d007-5909-0870fb2c0d8c,2208465153,6096793525150918458
+564efe3b-36c6-c6a0-6cf6-c528833b5456,3442817559,13221043079558252860
+982bc5df-2591-f56e-572e-97292ec117ba,1252974134,1339306453055639822
+193495e4-86ef-60ad-159b-793dd5b6d629,2896061283,11972433253337433977
+ee210913-5ddb-4422-651f-5a8e477935b9,3971358657,6327639128929965844
+fab3420e-3f95-6b14-d90f-26ff4644761b,2264097212,8095129017451844847
+e4f07e80-49d9-a977-e54b-63cc8ffb8d64,1401971102,18244152136091629670
+16860831-b6e4-7a18-b5f5-a453bf6bf0ff,772803350,1955815561421049727
+2049fe89-5ebe-5b06-819d-4b04a558968b,2283453321,3438358219026668546
+ba7188c8-3610-e1c3-e25c-e173dcd7c105,1127176654,12624502346907870452
+a55afb00-6f5d-d6df-05d4-9d3e4473b468,3869557682,10762097827787143446
+96f1ae16-2430-be8a-af2c-30b2292c9148,522865211,7386469395551705676
+e127d99d-939c-4441-fb70-7d52f5f81eae,3880533657,17423113389572195593
+b77b800d-64b7-9c5f-474d-5664d0acece5,3432531036,8723574814726900643
+c5d335ea-3525-deda-b17c-9d9476feaaae,4109379866,11905110013233744343
+90277432-1864-b629-a2b9-e2ba3bbce295,2011192015,6181707376224558320
+63ea640c-5908-6a75-538e-9aef91c2229c,3958026369,8990943942102394430
+5fb1dcd7-8d15-f5ba-068e-236474635b61,733803503,5861650703821784750
+61f5b6f7-0152-e3bf-156e-96255077b554,4033447433,16123728263096884245
+6b5c54cd-aeb3-936d-76d6-72c1144ab308,2947305440,9980855264080837427
+4c19211c-44b2-f24b-09e3-12e395bfa19b,3401693335,9905926602796376227
+38c1045c-19a8-0101-7902-012dfb17a875,1138080640,17643601801529841190
+f23df03f-c6f1-8aae-3c11-c34f516f63e7,3365652957,12053825899911164869
+731e8de6-a066-4ee6-6a37-7cfa32001970,709131722,8183140769994438495
+41cc871d-c5fa-1e90-1ee9-5674733eb2f4,2951730850,3007800591625776710
+7adb1eb8-7561-763e-df91-7804ae851247,3794066981,4096126656512565905
+680a3745-73e1-ec62-7492-e207602ea82b,356486348,17023591994342840350
+ce14f5cd-0dc0-66cc-9c93-8d0e9d96d652,384633248,1780753482546836861
+2e5a82e7-96bb-ffea-08a5-1461bf4354b6,586686658,8363971519521309925
+ee791d93-3130-5d86-67db-5ba9879fd657,812226837,11335998567571459518
+80a23d8f-defc-2dfb-7a17-63f2fc424a4c,2016548006,3848168665811803825
+c64968d5-f0ab-5530-eb52-61a7fecd2e28,835930079,2203507144520079520
+b773d3cf-0b4c-6783-ff08-ee0fd081c502,1914974697,3247381739687005734
+48e39821-b9eb-0a8c-1cf2-271739a4d037,3983838582,16976788513367968284
+644cb9e4-7fee-81a0-f669-f05a3a964514,999106494,4249102829263223789
+b004ca04-6cbc-db4f-d216-143811c13799,4052901537,4284471213901702615
+b8b041dd-cd4a-7f0c-341e-d940986320cc,582128985,9648232025189454869
+86a760ba-2e24-4752-6ae6-56ccdf8b3552,4114778986,1048967190674839002
+318a32cf-ff91-e270-783c-e45907f738ac,376683011,4149477469730153527
+9522e445-952d-16f4-a673-b32907042919,2471942720,6897057526589808571
+9cd7c1ef-0a01-2a0c-ede5-79378ed45af9,2185903458,8479984095342901054
+2b3b6fc0-cad8-0389-3db2-a60742bdb3b3,2759720588,7596794210244629947
+3763a1a1-cd30-e513-3133-41ec560c51c9,2018908865,15733811442548751839
+8f2cf723-ca63-90bf-0cdb-1f4fd173f973,3212901123,10250520349392008690
+7cc963eb-dc6a-eca6-b5b9-b06570d84603,2404529565,16649348737034807197
+4800b316-56bb-4b8d-88f6-767125449040,327003521,1542551349566944841
+4ba3fdc1-e838-431c-5631-8640acaebe23,1845922195,8861672257014294711
+432bc457-b078-a520-f21b-7a58809d280e,1563239473,16149193811684151520
+87285bf1-4225-5f87-f6d2-74e7e804840a,4148311772,1296959880785359654
+fe6968b6-00c6-a713-ed3c-19f71fb1e156,4129920071,14569523472051402266
+0a659b42-d8af-0961-23bf-30b874d025e2,2008692757,11556822132108518487
+31e5f814-5565-fe67-c997-ca25b5347fe9,2376293283,10402526300755518810
+2ca4c4f0-e442-b5a9-08e4-39ac402e45d7,354247494,3542372543313281396
+7a7e0d85-eca2-acbe-5092-019c9154b0e0,1232520427,3652616796859177527
+00384393-0ef1-e11d-e662-5ad2f8f4f366,3345923740,14213124811625556682
+f33470e9-e1f7-b87c-7003-d6c715afd6bf,3086754088,6931256845235211903
+69ef0524-7528-1ff7-45a7-0c0f92cd5899,2080606823,15270534299216159860
+5d5178f7-3947-f74b-c423-9182b0305c31,1966614932,5707829912763421315
+2315fa3f-6ec6-6903-da7f-a46ade1a6c11,3466551185,10739325577713011272
+7163497c-e25c-1d7f-c7a6-20e6f92b4c8b,1226328139,13121372997776811491
+46f1066e-6f62-ef19-b46d-5f75cefc4ccd,2984093408,7044264288287615231
+269d64a4-5eb0-c9b6-96a6-1f587d4f146d,2365558799,6252353216516374176
+ca55c434-ca30-6f1b-b58b-9a3fbccad297,3645071132,7801720056955716275
+08f8e8fb-4932-bdf5-a8c7-18745f96d357,238770518,15590910708024514249
+fa3c2ac5-339e-2697-fcb0-c1ea0346d6ac,3297814259,18227120727054912995
+25322927-73e2-f2fa-0139-a8322cae3425,1351069974,10453487623607284096
+c2ae2e24-5d8a-6ba5-b26a-540478290c95,2378630355,1630894887008479025
+36ea7bf7-0f5e-c6b7-ad59-a93213f6eeee,3277694615,3173140716784465712
+47585d7b-684e-acb0-772e-e6cc01cf2fd5,908052165,6210406257833842439
+cd0d1c69-51b6-1c45-7993-24609428dccc,606967156,9745958645830439347
+b57195e5-252c-c0a4-cb0f-28f37ee87ab0,3648912169,14978297752265029403
+02499a03-6b5b-daa3-c6ce-51f753bcef73,1492045834,2896238710340918200
+5d705e40-797c-611c-fc12-1697f9490de4,1829349828,7899273015663833975
+6106e149-a7d0-c683-8fa6-65b0af38f44c,1577897938,6171367040406106414
+a1aaca44-e3b3-47a1-60e0-00d7be39a4c6,1193773768,11919000342029137670
+849cfc58-7fc7-d010-5ba2-161cb3876c08,737880880,6767341245549690802
+d1d38e06-77a4-ce76-e7cd-6e3e6fd9d7da,3113565548,4695016633615346951
+38a46b67-6b14-cf93-1e38-f770e0e9afd3,3705388552,8001343021443881295
+955538e0-c428-6c0a-ae6e-a906b883d63d,335746466,8852713997526361856
+3261bc78-e959-6aef-deb3-1d3ddef77cf4,3557390733,10223002994722091388
+2ffb6164-121c-6a68-dd8c-5ac9715a0a16,915127577,2939178097055290680
+d7bf9049-3695-efa6-039e-d39425bb0296,4178416899,4250995905078107918
+a8cd2e10-ada5-95d8-33da-f190ccd52ef6,3717120560,12456194495200908704
+c19ba973-bb4b-c7fb-f233-da8847cb4e37,3232528095,288886718712043442
+10db8a35-870d-774f-cacc-d691cc7d0c04,2102181291,5917008931519115667
+97c6a63a-f451-bf19-a5c3-3ea0634e5281,1267242885,16601865532239085243
+7624104e-872f-04ef-9812-e88159092ae6,94394047,6766045674585022074
+aee3e67e-e800-2319-bd01-7d61a9eebbe0,2911034346,15596047175542572424
+93cd0e47-9d65-7ed4-950a-7d141490479a,3281785407,2083274503592115780
+f2980e18-d8c0-bfe6-52c5-ecf9aa74b9cd,4162754588,3844690017903860924
+3c8ea7e7-b263-d616-ff10-584469101fe9,2611629627,2549651581612862496
+2cbc1c84-a6c6-5b14-a171-f32c807231e7,599514913,7034743403659263495
+7a55f43b-f2e9-b692-a4cb-e008eb56556b,1294958586,8070562022129131117
+577e9983-43c1-7449-ebc3-03251bfa5ca2,2196725144,2516704784724081166
+47596de0-cfb6-a5f8-bc9c-86873b8feecd,2363892341,11757300094100829660
+44d64f82-32c2-c739-4d1e-a63831f0163c,1443054134,2959867298840561536
+b293b898-2649-a8ca-a387-a0412faa1dba,858856016,2385243584219442477
+fdd6cbfa-2cf2-0e2d-1df0-da502872a7ae,796870475,5425992986551511399
+bd515db3-cb98-1278-af85-5bc0e9335a1e,3350090504,2516269786017054332
+71c04146-7d63-ccde-b671-c8315baf73b2,3529084221,10188742422264046976
+ea145cc8-6c3a-cabf-861d-12837a8bf3b5,507324938,17238949719896605751
+8db8af13-e1f8-0a00-260f-424fd224abae,26984840,15803723623726014899
+a549c3ca-bcce-1c09-817f-14acfeb7e70b,2129444426,14666069784873609019
+253e64e1-7b8b-cdf1-1ef5-1349bb4b2605,223714924,17502260164685799880
+bb3af9c5-161d-917a-6ff3-bdbbbbc2b48f,1368939515,6121569958550250833
+685ae398-b7c9-6c6d-de4f-e0020c1281c0,2091552997,11435078815930066965
+986d6ca3-7171-9759-b9b2-25e8b88445f0,120338910,5555527134378354022
+5378cde0-727a-a76a-9853-4b55027f4919,1748154151,7985969506017616887
+6333bcc1-1ff1-b6b3-c450-559e3dfd55cc,3754649174,6415482154319738045
+7de5333b-fb81-1fc6-8f4f-8bc343404919,1554628965,1578978602859419521
+ff4c21e1-2e37-884d-1f24-c715c490861e,2610466875,16705867298767217510
+44c3de78-2200-ff86-046e-f95935e276bd,2358473412,5367443603871574807
+622a1880-cba2-19af-5c2b-f111b0ce586d,1249822362,4513358449383865026
+d5f49695-f340-e4e4-6f6b-456cb079a45f,850794568,5409268514129515043
+ca697e08-7e2d-b531-2cfd-246bdad99c19,1140835117,17210831958459299446
+32427f97-2ef5-cadb-3182-993799d2dbbe,614587856,7351219556957939659
+15200f2f-a3e1-9373-4048-e821146757e2,2279995258,692574584339889172
+89cddd01-6b57-f47a-d30c-aa97c5ec3b88,1093489064,13987550889104004080
+51610b0c-0c66-22a2-4ce6-75362c72a19f,237762198,5027218187629579451
+5b23e0b7-c1d0-599b-c5c8-0f0da8e1b2ef,1487126694,5179099868183696537
+15adec5a-45cd-3714-d9a0-2075b5be04f3,2075689919,7698425236763729211
+b973f1b4-7c64-3d6d-e3e3-c8db411679c9,2252972244,17135703750270521177
+25094457-0b87-37d8-9e28-75d565165a22,3470894852,2299546623095210035
+50812e5e-7397-3d61-d8f1-bbb4e8f548ec,4250645307,4390436846204254141
+2869480e-38c2-629b-c802-5b70bafc66c0,2487612489,13876845866742747713
+30c428d8-12b7-ba08-5ab8-dfa16bb4e0fa,1237984369,3196396479628779888
+de4432fc-5b87-d1df-8274-7141f86cbbc8,588880401,7624856214545191180
+5da8b2f2-c035-75b9-e3ea-13f806c9ecac,626589153,1962632743543673739
+f5c30af3-9bb5-51a5-e053-3d3681e40aa0,3513861039,7351322881747935511
+180aef22-7a1f-9f15-8c9c-7142e97f808e,51184016,1104672222161865364
+1a47342c-8d78-5712-aad6-56c753c6d8d3,4144729908,1132796949575431614
+ecb76920-2eec-4616-b744-818a3230cad9,3721174419,3755868456210212461
+3334a217-0e93-5a00-e129-6f540f21dd7a,1716155424,6538174363676825980
+c693f72a-b382-ab9e-1aad-bcd4e8b34532,876951898,5413399217957171631
+77027a97-6c46-c45c-5238-019e8b80407f,1915346204,3376481883585751550
+f0929d66-20c9-d6e1-37d4-ffb98b95a3cf,2696100439,2774903887189675454
+c6fb1b58-1850-963c-06f0-dcb0f59980e4,3051636950,12331253599888252330
+b28f062c-8b2e-d2f6-e383-b3d93c760795,2315587789,9855417510424123139
+5ec6e766-3595-3ee9-e824-9c08176ce21d,1334834964,17486925592388122584
+7cc6d277-5890-a59d-5bb0-166365b50067,2981834791,2004219012738966043
+46eb7b6d-67c7-5144-b3d3-971f12ac6ddf,1559134571,11495557104340652545
+6809cba6-6059-fb1c-3ace-89e14bd29f01,2162747211,8876279188700360035
+2f0ea56a-fdbb-76c1-2c56-0634c283a1c4,323736978,3085990298740369941
+a3dfb872-3657-3863-9c23-8042b01211c9,3691095627,4273505785908918345
+7acc34d1-f712-5f9c-4e3d-0dabea881cec,899036384,12838596529827358779
+2cbd1b82-1be5-168a-9745-3b79e64cfae1,1234979909,8352114220264967700
+93ae34b4-35f8-16aa-d23f-83b318d2c95e,1229203357,12584011477368434801
+528d775e-61da-6366-3741-94534e55dfd6,2342456689,4971332135152955437
+60a86d39-020f-c384-ca7f-52b7478ea13d,1988892537,17308687348667271468
+f88b447a-a2aa-33bc-aadb-c89d176335ed,2780449942,13523128270977268990
+fa6861b6-36ae-9c04-237a-0964e9a7a828,1798590305,16602595828770870140
+84062720-e81c-d7a8-9177-ac804aed5dd1,3770804358,9744467735058222801
+830e922e-4f7f-d68f-5c03-f73d8252caa1,1431818454,5834904172727272864
+3490c8d1-0275-9a24-d650-6fb10215c9e0,4287184899,5362992849141038124
+00e3688f-1cf6-d79d-75c0-4179720d169b,334012937,3285925080521580437
+59e2b997-b201-60c6-5aae-93698a512bb2,3683418036,3405614770990106621
+b92b3767-567b-8bbd-bfe3-020a4f8c2411,1689057505,11077454683392505956
+2ee27c5c-8b78-4a95-1168-5cd81c55eafe,3723570183,1385752003080553732
+3361c6fd-f29f-2862-680e-abb68db4150e,2183459476,864038011098906229
+25f5fcff-5519-3997-0174-44ee3bda4e59,3927436242,3737002782638692500
+653a8b42-f846-5b31-955b-9dc8e599f0b8,1072118204,6576509649435342725
+81c1f27d-278a-09ef-ad50-6c8fa4540c37,1389080734,8362574824021427570
+ed0a4cfe-ce33-fc6a-7cab-f8dfa4ba3fa7,1422510780,15928500739450949261
+3166dbc8-fbc7-2419-fbf8-e3e16c3c533f,242424278,8137079532938372695
+7a31a537-f8cb-4d91-96b5-2771a49bdda7,1762423563,14579937405614775204
+6b824e8b-f733-d6dd-63ef-3aa165ad4321,3914252099,5171531005431322790
+8bb18c02-f179-fb43-56b0-6a6d84fe588d,2249116483,14672717839296187334
+a21640df-6d09-07f3-b90a-c0935ee9df69,3319064215,12423786873366272720
+84898559-726f-4994-65d6-ec9248c229b7,2658694474,15014917064242087455
+59b781c4-20d8-c28a-2441-d4c85dd7aa5d,4190978436,11935305597918536781
+09cdd642-d52a-1ba5-b30f-75fca39f65fd,1608204269,13419275278015822060
+0815a79c-d29c-eb83-7d52-27a6ba97ae6e,1739967073,8536682385527650549
+dbd8c780-5cc9-5425-1438-fa92463c28e3,1982041061,11923843572794239648
+abbd2a4c-a830-a712-b749-8c0dd708a5af,2983832480,10912706066746506499
+38e4e261-1071-9c7f-ba46-5dec4ca4c93c,1236977474,473661180912747489
+593012ec-1e51-e579-b647-aa928f026300,2153071963,6644950407550038052
+98653f69-c888-930a-86b9-9999a209e717,672710485,16923694549146224115
+048899c5-09b2-2a5d-b002-32b2529d04d7,3369086478,5895906432931599176
+adb09801-bd4b-f707-f821-94c02d92fe8d,3035695498,331081278901500769
+534877f9-a657-38e3-1981-78c66512dd1c,3824668616,16794516173900954305
+37337f12-3d6c-74c0-6376-ae13571a9b3a,2018495320,1040580085301248781
+ff4b7013-ef4b-2acb-f243-d655a6f82115,3423126207,14297629867779045440
+4ceef8a7-f5a0-c158-d3d8-01c60ad82cf7,3429293927,7352410851546803305
+46f63f41-c573-52b6-8d10-609e41eaafb7,93323402,17334125313436252479
+943af659-44fd-5781-b727-f7b77012808e,1507193844,18280281584719644836
+bfb10109-1d8b-7593-f111-3c93605892c3,1037521955,15299175542928788529
+5ab3d009-8c47-5b8e-13d0-9237f90e1566,3618830564,292703767466908094
+bf3e0e93-845b-9aaa-a31e-57e052e66db3,2914653700,6638414094183298224
+58ee4580-3be1-55e6-b5b1-0714ad48066a,1235063859,16946042799032964147
+4a07402d-1de9-fc0b-6d42-9f4c46cd8297,2383814782,17821747058211282461
+3306c65a-cd88-844f-8caa-96c07f584ab2,1744980772,2926463091035079988
+15ac3a28-a292-85ac-fd11-ac08b1e3452b,925782885,838737128603423152
+15d9808b-f566-06e3-b802-ecf93ea54351,1102734132,989358359062305391
+c1be8738-2c30-1eb8-3368-d18c1c4b9289,2416631064,144618218235039656
+32ab510a-7640-1d5d-8613-ef2c24d21dab,2842850063,11340654652665954922
+ae0c7700-2e04-a69c-e4a4-4e8332f0a082,1784859990,10057631163745374286
+07867417-9213-b2af-1333-b5c5d634a7f9,1711909177,5378042682889052081
+92274faf-6655-3209-3942-b5e63fb9e47f,784748727,18060726260793850005
+8cb4d3f7-7238-261c-ffbf-6c9108e98d77,4238757276,5661562551708361708
+3646a9cd-535f-3a5d-9eac-0476edff26a4,1970918110,8819254680520960328
+45915fbb-b845-e28c-045f-1710e4382269,3248035399,12619482498189505377
+7f105412-7f48-e8fa-1837-d2c5a4d23e5a,3146855082,7346195779500010927
+1adad19e-05d6-ba2e-7b9e-88f363d71cf1,4233966975,11040839816329186081
+0c5ad5f6-dc48-dcc3-546e-48e7be7fb2b5,3807443208,11408347470743197168
+55d43df8-635a-416f-8ab6-e86712713ff1,681430486,11933764012705945916
+2d3ed1d9-e4d4-69ba-7ed2-8e450799e3c3,3008480727,3962531103970988098
+34637b18-30db-a8a9-a120-4293d54e21f6,3062448428,490357754150780260
+60da7155-374a-4414-a125-125223db715e,3715221589,8101665003618762856
+0502c023-39f1-daa1-8d83-e0dfe98cee48,37771160,6219154954391741753
+d7a14044-ad1d-aeba-712e-6260794f985b,339931369,4657230089021099569
+c9b465eb-c04d-b8a1-d031-a90589f60ca9,774295846,16264381740679253272
+a0370510-6be9-07b7-dc3c-a0184d8f9179,599751695,9419664692817046843
+afb4ea98-c3b1-d5b0-2a00-254a721b8497,670775660,3282584763497126895
+111f7268-90c0-5914-aac5-b6a2adb86158,3953150016,15159995572796897209
+eff0c71c-0fd1-0711-5b39-165c7164e878,446745778,504917259234890059
+de5f3399-dbd1-b32b-c077-19c49bd252f6,2195814981,1661081540798707962
+c27a8ed0-ea82-006b-9a54-50aed07e4f13,844710019,5785169024731043317
+57d4bf72-1549-24be-4dea-760ab5a25c9c,1064651192,14273372279018663202
+939e8d7b-2ccd-e0ef-b788-4bd0d49ce325,3094184408,12908985441066719023
+2d937ad2-8d58-12da-5ca0-41d5bb277464,3943222483,4153390770561778206
+59826aa8-f8e0-c76e-578b-656a56809899,4266579771,15077030030891493878
+e08e62bf-4731-e73f-3648-61909129f38e,2725238541,1788713949475537734
+c1ba7d8e-3dfe-5d8d-723a-73c138510ea1,2521563679,8854971838064818124
+64e5af3c-4778-7f69-6151-48b81462fe18,1276660042,4254152590488754468
+ac3da1ee-49ef-de71-c2dd-c3ea5e3f799d,3968889948,11660712856891382635
+c0f27c82-5472-8082-d404-d91ca9b2623f,2164417428,4364944991743683272
+7f12f7c5-215b-71b3-f054-4a936509d0b8,2820976714,6338800665590215034
+5e593d39-b3fe-346a-330b-9a4dfb09f5f0,313543787,735155736735208428
+95d1bda1-9541-5be1-4841-458fcc38204d,906708821,15741306961382725807
+6dad985a-f107-ff7b-b548-fa7e69414c4b,4138244127,3975283931949807521
+57e89ff0-4ff0-a330-ea49-654e429a9db6,2774653823,89308846250442558
+910f3b9a-0d1e-adfe-4603-b7a99e135345,3347210100,17997095401007028351
+9e975afe-984f-2e5b-0c11-e132dfe92e58,1024995430,17139220330047910221
+344f612b-d927-c18e-f57d-ad7a407e0b98,4174466102,15080011581866002559
+6ac65de1-fe1b-b45d-9adb-7c704dcc61b4,3010970100,11037495699741576526
+2b416d05-adca-7c8c-3919-ec2b9ff0b310,1558601126,7602735688786527916
+fdf4e8e6-1c9e-0fde-18b1-415f3236173b,909031813,12454192127282842762
+3a1c31e5-c5d0-a4e5-ea80-a5426d3b3c2f,1535469247,3887588667463706485
+19fecf87-6041-6034-4fe3-8c3e4e6089b5,809655524,3725182735504654084
+b29cf534-db4e-f52b-1297-eaf7a07a7600,823164432,11576658404313044105
+3b416174-d9dd-f4cc-1777-59d93987dc7e,3013280679,1776203472964313681
+d45983a0-6975-60aa-a30e-d693ad8b76ca,3948983176,5909334644661237550
+2330fc1e-53c2-22ee-87d0-3318864698e0,1521078893,14892952689037893871
+8a252f33-bb1d-a1a1-3f16-5e18a2612516,89007681,8273169207041722831
+bb91a227-4ba0-48fa-d6ad-ae55a06103d0,4120713375,17682358998584491804
+1883a24b-6322-cf8b-4c30-1fe4122dfbfa,940861225,3294363927162852997
+8d7a90fc-7c65-4108-5177-c44ba38c5c14,2546094679,3439430973651789948
+5e03fc36-6e95-eb27-2596-6633e255e724,815249491,11054975898227985175
+3781d0e7-7e35-28b9-b6d8-e5de4f98604e,1110404149,6966994341639353701
+6806aee8-9ffc-07a7-bf75-ce3466eb8f5c,3023191537,17323244886957409548
+43169a49-ba31-e721-5749-4101dec90fdf,1581479588,6925209017029590632
+a7be6318-fa6c-ee55-f7fd-71447dda22d6,3706211388,7181296584188926180
+f56c24bc-3f5c-bc4b-fcea-be5cb375882b,2478294800,7998904511788846628
+67d405df-20a4-02dc-e80d-2f9b10d39255,4222254389,17194670821107573720
+3855bd79-5139-f560-a02b-d4ffcf17d607,4090826770,13155609117843591863
+093e78fa-228d-3682-99ab-19520c47f0bd,3938535093,14409800583632292423
+96301dc5-785b-9511-12c9-b3e4f1c5bddc,1081966544,13010327873939432896
+09dcce70-de07-cbac-43df-0e0cb9ecd933,639355519,17963295945494682779
+8c09d0db-e904-7b29-55a1-4b9cac973e21,196354750,16675118983087355873
+8321d25b-333d-63a8-1699-b66728ad7610,1849051269,2081623604283231762
+0e0d65d7-d659-97fe-3207-01d900c6a654,1423842801,14958356275863240822
+3fc2be93-00a7-72e0-c64a-c959cad5073e,694562012,2706572664678581198
+4d0d7605-d990-518f-73c6-6536730fac49,4001798893,1681830296460784824
+13deb0c0-3fc2-3cd1-ef01-07dc66e8ce12,3839779700,15875161614567870261
+93561e6c-6dd6-6fa7-d85e-47ee5f2834ce,635414796,15625347212629727062
+b5e2db78-4402-f65a-7a48-3e782f1657d2,1821203296,1232969082313419696
+4e72b689-15b6-1991-d624-ea8a49d35ea9,3810738683,695946063261051949
+63dcea29-86af-e52f-9635-413b13262c53,2734176310,12877003272325657941
+22aa749b-334c-090b-c1dc-bfaf9f2bd1f7,3835958293,984389843329039696
+07660641-4549-a7d7-b1eb-d12a3e6b4793,4134314800,16536855621203515901
+54c25a91-84e5-8500-d00c-4800d3bac18a,1741181730,16166471335148263008
+6559ab58-cfc8-57b1-b4a5-bcaa5e78361e,2370813962,15609272395034155283
+1f9db08e-4dfd-5177-b41d-2abe2a40527b,3801685360,7466721753866989022
+17648f7f-feb0-57a8-7198-4e948ea0a4cc,3473251919,14129248715555924978
+4bec6236-5d7f-0ed2-2d04-18d103502985,2590594558,3804196214314163284
+9f75460f-53f1-76b2-2d56-fdd35d4617be,566901356,17697990069956428418
+de63b7f4-d04d-24de-4471-7a280e0ea732,4018402195,10099387128434689724
+57367a7e-8eaf-106c-e52e-34cadd526d58,3431529511,1384751315797032008
+6292f3be-b874-b8bf-757e-c45278e3ce6e,1921319469,8238392507671149891
+5b460a21-9103-7b0e-3814-4b8f70e8859e,2495649171,17556057061310301732
+88f3d190-bf5e-81c3-676d-04d9c57c79d5,3645211217,6027732344065797101
+cb88b75f-9729-8f00-5f59-f535d2832534,112635841,2501807703087921029
+6bf20190-281d-af31-2101-0df5a330881b,566761980,11835845793942923883
+ed8bfeb9-e01f-5376-4d51-654b31c7a12d,1780631851,16497214720322875843
+71b89e1a-d3a6-ea97-da38-f8366d11b907,2736657220,11900346909467224999
+37dfe7d8-5c84-0e79-4384-d78f58411bbc,403018367,11901426345152269595
+3efccaee-8a46-10fd-088b-a515c10c4bba,2172283519,3101590848697666752
+1b5523f3-5e72-757d-5b23-68354d6064c0,714301002,14363926199235602037
+aec19a32-9e82-7f29-6c28-c7e1580ebb4c,1014858110,14038311612214427167
+8f1df895-155b-af1e-0beb-4941aa2ca2bd,284528949,11491623077267900767
+a46b3796-29ce-4ce0-f90e-2e30f1e379e5,281160964,5230834483576535287
+e2df3ea9-5d0a-88eb-3d2f-29b2bb2bfa44,3969938771,11125663957033060913
+29dead3f-1224-acba-96d8-dfa2a038c566,3919726022,15516083839511983736
+0b87b51a-b1b3-6bde-4c13-601354968739,3543515000,7094231519755974644
+ff98f2dc-2e26-f27f-d86b-905d10763369,2812653320,5605292218486919157
+bc0978ff-a6d1-3ca3-bf7d-853cb8e3ca2e,3328931928,10457519629608090654
+1a66aafc-8dc1-f264-ed23-91222f97c5fb,1257654805,2840680521977597283
+3ccde81f-84a8-0e62-a1e6-ed190bd8e17a,712436363,10845866803608761399
+d16b1d5d-6fa1-e04e-d1df-d247c54062e6,20520504,10803901070678688989
+43c44277-8bee-d3c6-b669-a3dcfc3a8d3f,3309157964,18146684786441003449
+353baf2b-ac78-23e8-187a-19c5f139e360,504926811,15261004136435696465
+a406f728-6758-2f9a-5d61-4ab2a38c80ad,2892674649,989539294227132121
+a9644d3d-2678-0431-8283-8004b2a91b95,878473056,17857083982529290822
+92a765e0-be58-b111-e548-44ca70ac1985,487577224,11588699700345484584
+49a472e8-7f60-98ed-6132-6aae9a48fd1e,559683931,1192116961810855142
+8a4db609-91be-317a-7e6c-318cae67b7ba,740696570,14600709572547571466
+af184d0f-c8ce-2b97-7aec-c3c34fb1d696,3945794469,6735874359219085405
+70de85d0-97de-5b4f-4f2f-f5cdee584001,2027256602,4700176338138278266
+94f94955-dbf9-82a4-919f-849cb0ed76f4,3525214013,13899414436847373406
+ed84f6b3-734a-3f9b-f5e5-4ca2418b3ff3,323092396,12536264253034066331
+a9de4448-ce1b-28e2-0c13-b84921532ee4,1415031412,17195317237170967506
+b9e3fc4a-09e2-d501-6d90-3273e5ff0ac2,3307196246,16424160454444137962
+1c36a0ac-ea38-6382-9310-2f2c85579b73,3680993292,5834179708772233344
+acf83c1d-ef04-12f6-9222-fa2eaf3c1538,2485053515,12404844684128381922
+b116f82b-cc80-079e-0c05-a3e3ba612d10,3611954826,15459001529324755751
+c1ff2c14-ffac-23be-13e9-bf73921210d6,3365530758,7522431629365783483
+396b089c-e24a-aabb-34ef-282679d68f32,2737540954,11302642202605164388
+cadfa40f-532b-3fdd-ce3c-3d3198615796,2144254187,14405880440915344863
+20ca89e1-705f-d5ce-8ba6-c5dc84e8c870,797069825,18224838191180119391
+55d3454f-a289-a8c1-9345-09d6a05b2993,1714374872,380349463263122144
+839bf1c7-d678-d315-faf1-864179f37b05,980924131,14698943203402960834
+c6aa071e-d2e8-29cf-713b-ba9af4c8b8ca,2369841618,10723624040673100256
+72ad303d-94a9-b460-320a-fe7ef1dc624b,564667019,357144613918918915
+c5c4b663-554c-6e53-1eaa-294157799cbe,2013006669,9178690896449906274
+e02a2496-b15c-f76f-c487-566b60aa1756,2693378297,13262050096682711354
+136a62a8-5132-851d-95e4-e044b8bfb0ae,1866314654,11522792241164872815
+0b0ae1cb-2b0b-6985-2dbd-8dcd466a5cd0,3834879469,15710576660471157092
+287c9d6d-3b0a-70b8-b37c-9c43861c6d62,1324394051,17277791855642103423
+b2c8c070-9a33-d050-dc55-81f8c3449f04,646729351,6855113932038892622
+e3e41c2d-e426-e69b-71a0-1c87c3ff157a,91526664,1739405864759348814
+a33e1434-a6e4-473b-2613-df8084f7de48,1089057368,649115314967203295
+4178a51b-ebed-25d1-e413-24881f232e37,2753002408,3063573259393476192
+6d85632d-f99f-9e35-374b-0737e7949a4a,2275453394,8070426059997407362
+87055168-f943-e443-1d16-bfcfa6ba932c,4264782266,17342969700835975001
+cacb94ea-31c8-c5fc-d62e-29b1e64d0bae,1733062155,12952923143899892819
+36f4c490-ffec-5674-f776-cd90ea371b8a,527923844,4428007354189254553
+6c5dc6b6-e195-5d75-fdac-44970b8cae81,1179676478,14546802398650834678
+ebe71eef-77a4-10bb-0c1d-62b6ebac8731,1538540579,3627570088737685643
+ea01ce5e-d3ce-cb84-926d-073f03e7b697,2801913370,2083229020127169618
+7680e987-492f-a30e-d895-3916c4cea5bd,1434655505,13888270480817125968
+deec1ab1-42ea-42d5-612c-dc354036d44a,3813037428,15013521785366662238
+36d9b931-324c-4e75-f9d4-a10e9b1a8f10,342960851,11558785939235621356
+f7c7dbbd-0985-3eb3-eaf0-a042aa46d966,404851632,6430318513217466504
+9cb14703-88de-2b43-21dd-76110b43f278,2365009945,16514839727051137904
+23bff323-7d9a-b28c-b339-d0c86e9731e8,3101229193,17585126360378081890
+bb1cfb22-e653-0f63-fbfe-67baf96ee886,1529302842,13814357669010660137
+64459d35-31fa-d157-6d7b-e029fa91d63b,4010057823,16249418123057963236
+104c44bb-6bc0-bb54-a77d-72f9e78f125a,1905239601,6007933094386792695
+72fa49d8-68e3-ad9e-292c-43b1bf23abc9,2172270976,16914194979052452183
+6f55ded9-e3b7-7bf0-1c09-903c466fa0ea,587271631,10400217527264039925
+ef7251de-b47c-b64b-2fb6-554dfbd43b2d,3679395699,1801252494263215723
+736eb6b3-427f-de18-cfc5-c5c367a6756d,76765120,3470210710286006699
+f5c57e96-002b-f890-c7ce-87cc0004232f,2628278918,9416152675718425811
+e7e54bb2-8928-0542-a9d2-f9c6189c3a96,3516125328,5532807708916862197
+8123fb5a-c8cd-0466-e0a7-ff24b794c744,4013410189,13840786391137040668
+13b1e93f-7107-a15f-0b05-055b01d0b197,2330557148,10467226725260645605
+d3146cb6-9b9d-eb3d-aa47-8e54f23886e5,969965175,4626127742664984474
+a376b6a5-f878-fd45-c682-3a5d0e843fdf,284113940,14148817211724520060
+21c2823c-ce79-a500-89ac-29194c8bd48e,4273663059,16773335328022194293
+3a58af24-a0e6-38c9-1160-32d574732cdd,669944653,6012015959779199900
+81b0f44b-35c8-3fca-5c93-944991d2339a,3071316171,1933617228591327600
+3684ddb0-74a8-f8bb-7cd6-88ff650c2e16,3563254671,10676982282367800236
+1931ce1d-ef40-14d0-bca2-6f50eddccd2d,3870551883,7735722292383780079
+544b8e26-040e-65b1-d737-1fd436788129,3876539101,14193599812673042334
+08c5789e-edcc-bd49-a446-37769f81a2c9,1297227433,16208381075442066044
+69ee7b10-e487-85ae-cfdc-21303370b3fe,380104217,17927172912700777111
+d5dec28d-ec2a-7635-7bb3-840d1c522ba7,213887828,13512307299194937662
+35822d61-1dce-74e8-5099-c5448675a26d,2416526426,8388310747238968416
+1209ad62-8498-0eab-12f4-ba94fbf0228e,436668308,18255060785548263985
+1501d54c-2e06-8210-30c9-ad30896706a5,1156602471,1411573675923957125
+825f2417-d2af-9afb-fd04-344bfe54bc1e,1451812068,5988762050778154140
+bd0837dc-47e7-6918-fa78-5bdbf1de2261,2405971320,17348513498900260041
+0bbbc06d-24e8-1210-30c3-87bfde02e64a,3457359652,17242295033522140213
+210c7861-238a-adf5-cf29-4b72ff5a083b,3769941783,6842471389855608559
+91bd381d-2bc4-6db6-62c8-e773df4f0464,1935928002,13226843116908692455
+f13c2ecb-d003-399d-0ed4-2395ed94ded0,869316836,8442138115637988249
+ec355e54-73c3-efb1-4eae-f81bbe7650ee,829160150,8652982871696577274
+f6f0c0d1-b4cf-c038-13d0-f1e4060ea2b9,2317775526,7095796256556813495
+649a9b81-0480-a82e-5b91-7230ae4991e3,162161502,12811324331676383079
+07cc2dc8-e76c-61ff-0546-7eb08347f070,609638854,7369113741834184553
+3e6ad504-6207-33f9-8053-1fe8e44b9416,1370336886,1483640928982131658
+2004fb7f-a64f-f7cb-6780-4189fb191676,3705470001,6495315056653259632
+a3c4c740-fc7a-ddbe-f93b-0c14628bd037,980628750,6244039217446670437
+64d9e68a-a37c-44c9-94b7-e006fe889319,1883865422,2704948528395142628
+2c2a3ae2-f6de-9cb3-a0c7-2c002b80b242,1163695181,16613228933858546043
+2a9dcabd-f30b-920b-5443-010e3f6fb663,1286258253,15278372687197359219
+626edcdc-f51f-822c-1507-2c5f641fc408,1242676071,12671956776620407802
+c5f442be-c9fd-048e-0bbb-c07258137792,2400153709,12659125348363611089
+3f4317e1-440d-0459-1139-b5e28509f117,3764298163,1243971387400499202
+0783de89-b549-7415-1ec5-de744f6c0346,3943148560,1715343696006815373
+4534aaa1-456e-ba63-1015-210aa153c006,25314823,5975836044106185307
+eccf77f4-4eef-7edf-b54b-ed18ef373ece,2167865122,8850179596734041633
+67abd75b-4f4b-d463-d11a-c98a8e48dc82,432851341,7172543619841474071
+380a74fb-b50a-aa51-2312-6ee18d207b6d,462485400,3933868672282804734
+42538c99-c07c-6d98-2d7d-26dc648daac8,2299054970,17353171103431376482
+cb6dbfdf-39b6-fdd0-bfa9-c95fd102ae3b,2959283202,3799001395090557171
+b07aa7d8-d5ab-f63f-7a05-a2b4637ed183,2873030174,14204530432657448382
+e4a9b4d3-d11e-79ab-0b99-09b47db6f68b,3625751322,15992983809860620839
+3d3ef5e1-a88c-dcf1-ac28-49f9a2ee0b99,855979855,6900784723121361653
+95b8a7f5-e282-8e7e-5455-ef5c444fbcd3,1344355773,1772940774999783103
+9c82ee37-fd0d-09bb-9f86-a86db92ecf77,2331589930,16676281162681660662
+425d287a-c3b3-dc3c-776e-c1977b7bc808,1051995573,10248729358136939336
+b09bc28a-ad79-2db8-5f95-6ce27df2e12b,413979515,480661092635865410
+c135c97e-b352-ccb7-5dd8-d172f776d11d,254365520,8460192563881718532
+4bd6673f-a6e9-c3e1-6efd-fa0f4e8f0188,3324802939,10381265941057584460
+5d32fa30-85ef-711c-f55e-4b0ad75e22a8,2720540492,12410110611396590679
+da7ce51f-a608-7580-a496-115a59c6f306,835272573,41986403303880026
+3c075474-b9e4-ec37-3670-ac9e5cb1b17f,937889089,3398810055523351308
+6952a2db-0417-2cf5-c29c-782892a0c13b,151506678,9681166239649379222
+04de2fd8-829d-40b2-c8d6-4b066f7e42b3,1992780896,11697840764952996632
+396043f8-70cf-c94d-ee10-9f73464b9b32,3379558525,4901371672095016326
+7b2331b4-c322-b8a6-5dd3-49c8799f2251,2008370592,7891314811382123053
+fc6efb86-fcb7-2df4-a700-5a9f75ebd4b1,3131039824,15674347496687887513
+414e2a95-54c4-3adc-bf0e-f63d65d910f3,2099480202,1641853719796302516
+47246525-1fe1-fd1c-ec68-539ace2e37fc,2083555033,11128276954319002183
+1ef828c0-fe0b-dace-54ed-a5560c57005b,2383411935,17379321861297821790
+774bdf33-3bc7-a699-91e6-42d1aca2e3d9,4024134471,7109430678612346132
+b8290919-bf95-1938-fe9f-82307fce6b49,3337949622,7022908228559241478
+f53dbfdc-f5c2-798e-9a64-3cfde023b549,4106724462,6230122559618622797
+49f2f218-db15-17b6-f157-95be439c6337,3752263669,8440607264893965509
+c5fea09d-b3fe-581d-0ce8-32b165b410bf,3785833148,3410735925093252013
+be33d4cf-40bf-0513-50e8-e0f137a699d0,1549708873,16373749264784692833
+dbf7b4da-c38b-a406-d355-8196d78acccd,1704937095,1876356441382408518
+8c71656b-8f2b-a814-4b13-f86c8ed1f56c,2335049313,10217057367827863158
+05452a88-7d21-3ece-2d2d-88bcee92cd77,1164925031,12418587277001139814
+0978bbde-4ca8-ccf2-84de-9f75e1936a10,2357438110,10774461367336059526
+7ece1cc8-18a6-9bfd-f5cd-cd9dfbbe874e,1793405777,4053385924937602838
+8a5aa05d-546f-8961-6e36-ce36c165ce73,1953418646,1538298360131066127
+c103d286-2613-8971-c073-5d3f70e5a2cf,3456769953,13173253741549387680
+789d5918-dc2d-a9b5-8fa0-efd2ef2577fa,62257176,6365992683809496578
+3b22c75f-3127-2814-6721-68c88907fd79,2929278477,1094290689786465207
+20a15d70-3178-72e8-3bd1-15f5b378431f,1696893850,10556172475360273293
+50846443-cca8-ced3-26c5-cb21b93ef7a5,2870317364,13304544394610425149
+c82f03ea-8c0e-d3be-ce32-a0c4c26e22d7,3014540752,9535477982646335486
+b3a89cd7-121b-0fd9-3bc5-9d7f1f5ea004,846474496,1120516150301435308
+924efeb7-3646-995b-d927-78c7a63e31d9,1926567869,16041681293757946563
+add39858-22c8-f924-ab4b-dc58c35a5691,2254635349,13926258088972522178
+acbf53a9-16e6-b347-ad88-a018bdca98c1,3782842686,3326149379183699390
+882d69b1-eb48-7938-0609-50526e01131d,152871544,846979252465189936
+b3063eb7-4399-60c5-33d1-6362fc5d3bb7,3987596309,6686193048418164712
+a03ec5bf-2536-8bb5-bf86-de34ba14f806,4067783557,6677462393757334444
+262a2551-7a99-af31-1878-620139deb8d9,2087678133,17465494143135201333
+7e1ec264-8615-9cf2-d6a1-41524dfbd436,491345490,6981495999895282066
+6657a5fb-1996-a32f-0932-c61871423d2e,3747999617,6933140197746344108
+276c7947-287c-e18c-8dda-e8311a51afa9,1967938984,3658670161727486478
+2e59e29c-060e-2cad-6c01-c83a711f23ab,1373421440,13515259888094905127
+f9569067-950a-e873-7801-81a577c36e6f,1213361156,15696137081524219368
+60c084d4-aea7-d489-4ee1-82d23cd43ce1,2534666716,6713294790217853984
+f75f5401-ad48-03fd-3f0b-873871a30700,4185801409,13633692559350059834
+e54e022e-7d74-806d-5950-c86feadce943,3593405824,9812956065526404169
+747aa834-f288-c783-ab77-d7291dccd6df,1892668147,13361332166353267664
+805f7b75-f1ac-97da-6eef-97cc459dd6c1,2209236619,4653054719224552847
+06198ff9-47cd-0a43-9d04-c72e393630a6,905480950,17983486309369519500
+6e4e6c63-3521-90de-9bef-7dbd381a103f,1417496768,3414075873742577194
+85e2b928-221f-a7c5-fcb6-3f5f7ed824c0,2808564909,609771457802848434
+463f08d5-2b77-d11b-1d83-59b11497dd66,492467238,6809128963811772656
+9d619f31-e897-4bc8-5c73-5c2c8879bcb4,2609401517,8012447099181426271
+766a6a34-3fde-08e5-08c5-7e5427c8e683,2747945768,17362009322076530571
+b34fb812-bddd-f7d3-3243-c83a758702e9,2239623181,5451221709292413697
+5267a501-dd1f-4ded-08a7-3c7f79061be0,2504849336,4533365242823275693
+a16eeb79-eef9-9f5b-87c5-68090c05c313,2359991771,3277475708010580136
+05c3e4a8-52f8-99a7-f9f9-ef0d1d66cbd7,2328322188,2420896755587334059
+9838e40f-2a74-a54f-fec2-c023ba329f1e,1533985650,8217468351387119866
+694323c4-3394-634e-ee14-80c31476a74e,517476861,5426094309416607495
+3c8767ce-ac86-9925-712c-44acf1ce99af,669431638,17616897245742961780
+be8fb7c3-1219-68cc-350c-b23e401a88b2,742014883,12721521573995556882
+88bca926-40e0-6e5b-6b30-8482ca599bb4,4015163439,7263321031163740087
+4940be9b-358e-7d3a-93d2-e06b7fdec68c,1969779691,14330318217720897447
+bd705bee-aa29-7142-e2eb-3ba765e56f91,4160118991,10914734452060723286
+a3b7620e-cfbe-a75b-e01d-0c1f64e05b1d,2271606552,18207192247614841375
+3fbd72d8-a8f6-3176-74ca-c56caac8ecaf,2699064947,3748684454302029588
+5d153621-424d-dc65-bdbb-a7a0a3c29125,3932097973,9947859598451375315
+a3d3506e-6b82-1a51-61ec-9b25d987ed68,2318226602,8265606331121071054
+d82990cf-dd10-de7f-d126-6b085416055b,1751008715,13008759946471074903
+c772ba9e-974d-9995-356f-3c353c1d3624,3260128561,338453397188594776
+f2d054b3-765e-cf0e-260c-736308a1bab0,3236628934,9897236711343717434
+581e03b1-9993-70c0-bc70-0b6edf89bf3a,3330680965,5551835032351236994
+5fd45804-0b96-241d-a328-f1c05a5b4c54,333898352,17943293214641651646
+8ab60a75-7022-f525-2b63-7b6fbaf43d48,3453954209,876840764039994496
+7f87d5c6-ff87-2035-f9ff-bc144676a34f,4143429183,12992210250012488518
+7950891a-759f-88d2-191e-2d399abbe9b9,3862595589,13919343021699286134
+baeb362b-522e-b83c-974a-ff29e39c2fff,2911142843,15098803279604244920
+5d3b1a90-e4ef-8193-a8ed-6dee10b7cfc8,3546379377,4580434080218336873
+f764dcc0-0b74-aaf6-8073-f9717df1efe8,2693873206,11514146218955751395
+b1f4dabc-984a-a002-0c08-d0f6d058b0d7,3308410113,7272805707319915594
+b03c97be-1be9-7097-d541-1b51755cb179,3196893581,9120761055249264847
+a78819ed-b6a2-1c74-20e2-d232d0a55e3b,908299457,5601797862995289914
+e6d12f63-b0d7-a117-c8f6-3bb40af77588,3917577034,669400337255822163
+82145404-5805-9bf5-376d-d752e3cbd6d1,2436870593,16539890915859159719
+aa1fa6c1-74b1-4ad3-21b6-5561405b6ef5,2730608207,154621444784928961
+6425a9c5-b8c7-0100-9638-fbc248df24b8,2895597043,4221148337813211196
+fc156303-8af8-1599-7548-65c58a2ca20b,1586050330,5590550644868683612
+4f93d4c6-c32c-c347-9a21-5183b071def2,2227380797,1046347993406649475
+eca0ba01-2468-27cd-e312-247e0bdab9ad,3143821769,8736154026792885547
+7cf2bf7b-e1ca-5055-9c97-2f53dfe58856,2562112800,1975478101637752267
+e655a514-340c-7d6f-4582-4ad0ccd4d6f5,4119668897,17096299602611708438
+830bf7ae-9762-4916-6a6a-76bde4c3dc89,2300845048,18426997982380511224
+1c8ad9d0-310c-0cf2-e1c7-dfe30b462d86,3677003702,13018291810443176166
+a8436d27-2e6b-72c7-d9e4-2487cc52d109,3591531327,559879489208789877
+335cffbf-3edd-e108-c161-46604d5ff5ca,393300138,10819949212796753841
+170e6fa4-7402-02df-756b-7c04f0903cd1,4291068752,11667346132733345500
+e76eec4c-87f0-e3f6-db23-17a8949389ab,3810453662,9527166292123695706
+c6c2f9b2-b8ca-baa6-5425-82c719c2b2d3,661396611,3207669788248914291
+96317364-d5d7-ca2b-05bd-c0be39ed4cc6,1777408756,15768418226337429474
+3bc2a262-5375-7dab-e2dc-fa915d2e8880,2801698984,7837733758081249837
+fb808964-8651-7b54-9f39-6e838663d353,1893657575,16764975541018251219
+b3e467fe-85e4-4a28-30f8-325e999195b3,3254411851,7456148983952870297
+390bc662-a71a-0837-0965-7161cdb9a891,356916825,14932045512553088957
+c5a0100b-0016-76e2-2c2d-37fa3066e835,637791532,17224869435588388470
+a9219e69-c363-0347-2065-feeac026d4cf,2304685801,10454652874651746863
+2dcbcef8-95ed-2057-8950-e80f81dd88e0,378994687,1313340422373950269
+5fe29bf4-b8a4-7715-0edf-c8e1a7ed2c00,3034752483,8884368079859910282
+b23d48b1-22ca-09e9-5805-185c7071afa0,1769004790,16403621847910985129
+60a8bf5d-43e9-dac8-fe04-cb63e3a87e33,2706643854,708627348974765022
+b069b3d5-024f-e8e7-bd93-8f2b903ab67c,3368168933,10975997137482078888
+e1255f59-b5df-9b39-35cc-544e9d82748a,167917099,6629761108149862596
+40789549-dd28-fa0b-aacd-e640f2ba7ae5,3816947472,7741880763377487025
+7e0802ea-2c1b-f3a5-519b-f3e931f11c7e,4123795914,5081154373252969109
+30bf2dbc-1024-40b1-8337-c1da959c1383,2368443715,5083995985725585386
+97f0c40b-1058-9d5b-2eb5-a198cac3e6d5,2891065611,16022837197743464813
+b6ae44a0-4d2f-97f1-dbfd-736a63246784,2659388158,17499207385048770671
+0f13412e-a796-5541-86cd-157b07429183,2365141260,11691143635314517979
+32dc8630-26fb-d323-6319-f768cb0df2a3,1695646225,2052091990918001835
+21ca3a7d-41cc-365e-cc71-f18b9984b91d,1773836926,16009610739368865525
+2a5c86a8-848b-6b22-4cd6-420f0994ac7a,2257684179,12710563984584387439
+792a9f87-fb35-8731-db79-d75f18565cf0,3437222950,17798128647704639706
+ef3b2d25-76af-e9f9-2b22-e6f2da24516b,533165800,8349056477111700407
+76cf4330-d56e-2593-c1a7-4226dab46d8d,670421215,99304112016064468
+c1a07370-755c-a8a3-649c-24224a89d1be,586336955,3353522331004569295
+1daac47f-0f11-a9dc-7e77-d9fe2acdd80a,3779665368,3087142843992888955
+52106815-b3c6-8419-6b34-43fff0dcea53,3587694259,5677300476946360557
+e7bbc105-99f2-87ba-ebd4-241aca1aa5e4,1578064825,2452980224585359886
+990223e8-8151-7829-cac9-a214f7bd6268,3440797260,12212270669784178442
+ff7d9709-712c-71f1-4542-b65c67161ff2,1285035453,18436124971577297891
+dbd67913-6eca-d087-9073-69a52f30234e,3440124010,10535179693853057646
+7f9377fc-9ed9-b76b-ae75-9a81a248cbfa,761390745,9294439339858748185
+0d041d37-3ea2-89dc-269d-b0ed5c196b6e,2787312026,1269703946686595662
+ee6ed36d-cfef-0a4c-c714-0e6fa6b00e27,2311088865,9123655658801896054
+200dd120-a0e6-d37a-902b-8f41ec4c912d,1852263193,8098168581781938278
+881e1427-a8a9-8364-7530-fe80ea10cdb3,1214104700,7254018242117142548
+6cf91bbb-350c-04f4-33d1-a1a5228c6211,2596162572,6275069108299839056
+69fc6bf5-ca14-1ee9-dd6d-36a815f2d256,2793787283,4203004294775176501
+6778e744-1964-323f-72bb-d0704a61f7cd,3969317743,13298102435611484453
+b8617f5e-1910-74c2-c41c-d65402f32dc2,1518184827,4480930076747057609
+6cc183a2-c68b-766b-b022-9652df7e74c6,2872153627,17035064119437780071
+ad03fb0c-56fd-0a46-cedf-c78f6ad3caae,2546941830,12532313551801770326
+87070668-190f-6686-4ad9-ed397b9cd51e,1362572162,15316422174870156186
+90541f6b-7642-77f7-03e3-434ce0929907,1812523508,2676695410976443248
+df19ee45-2e63-504c-b068-2b3ba98310ea,2992346767,3731476684720990530
+3b80dbd4-8371-2dca-593b-8c2d7a628739,3228266875,18261299848066677388
+1fcc08aa-dd5b-5255-d038-720b3202eaf4,2646799786,4698151499790690398
+ca8a98d9-07bc-ac7e-278c-4fd03a371217,1163262941,12605409952949525857
+123733ac-c1c2-e3e2-5ef9-d34136743fd8,2695066538,10223861345223606729
+adcd26d2-c02a-b22f-49d5-b61ed753fd16,2892864994,9120857022272791239
+8fc326f1-37ef-ae26-a67a-f2932dbbc504,1336194129,6592620832721711169
+5473d59d-049a-f78c-962d-5a91b363fc66,3850468975,13260660125901481793
+fdbfcafe-30cd-6f0f-9155-e099a7cc480a,3146581360,14458136053037601881
+bb040a56-1cc2-a35f-95e6-174775acc26c,2453351646,18188696537085463733
+d89ab547-af4a-7da4-ffed-2344b9a7b86e,4284269135,1778671514325050825
+d74d26bd-10cc-0b6e-ee04-8d50e3efee7c,885870804,2866473348711581346
+57a9abfa-ecec-92e2-4027-d77575d14e49,735340642,8317526598727991045
+27fec353-0a14-985a-0817-4aeb5d9e82ab,2354033677,16803928170996045255
+f0672829-a543-a5d4-a94a-40128de48fb9,1842731814,1658632153671272859
+dc43d3db-503d-9578-477b-0170250f2958,3877437823,3081776534760212970
+8553fd35-d5e1-12cc-53ef-b21ee40663c9,4095125599,5630990096057971655
+18227aaa-40fd-0ec7-347b-0b516e6b4f26,486021961,11623237114765415944
+d0310a97-dafb-eafa-c604-638462573b2c,1738324241,5745731070501304372
+667a4257-3133-e164-f926-5e5a10ca49f7,3824887198,6579047425587419727
+d4bd8dec-ee4d-afaf-8262-f6ab68ec015e,3472119082,1681568309480000752
+9e0a8a4d-041f-6325-840c-8e9583fb2351,4277118346,17292339159768839912
+5a04f333-8271-b4cc-da3d-ba7697fbd50b,475097921,16258240775773283600
+e19a5fae-3974-7f40-0a92-8f776fec27f5,1886678535,6639608612829007016
+0178e1d8-c776-91ce-a738-4e2702647187,1710508469,1616158771262547938
+dd128e8e-4a11-fb66-e2da-88138ddb0828,1192447425,6859420878074317316
+54ad2367-dfa4-9888-75c7-3b580f26734b,3242545925,9955222486489649276
+7523073c-a4db-ac60-1db6-9f92ef137aa3,357500188,12637442654058533020
+bfe17a2a-1e8f-e5ac-e258-5245163d888e,382205084,13358597916310002221
+7f588f8b-84c7-7961-a71f-6504789bbd76,2418616370,11870270433673255994
+2651fa52-a38d-5138-6ec4-c10e627f33f9,341582899,16869637102420571020
+4ef8365f-8c77-09cf-c3b9-644498d5700b,1594409078,7773950205073995487
+aa1559dd-ac07-9944-6fd9-3534904f2813,3870621140,10334271509723800557
+9141e81a-9630-c06f-7008-4a2fa60efaf3,3999393997,13459352675794712629
+08bb6a43-3576-a450-c5da-33d8391bea48,2253553827,8119939836991856153
+e5588617-0246-9067-fd14-3afff0198005,1133032161,2397542256404144997
+c9f276bf-2e70-d179-a85f-67f741f5f395,3310024076,9999624250976670853
+26053957-60ac-eaef-30eb-578c3cb40367,979614391,5127909501605867443
+0e83dad6-a39d-199d-3ebb-8dc12bce9bf3,1374449605,15204556042083117740
+7b117715-6b94-b9f0-bdb6-6065cd722f58,3607909603,985600019995755023
+8c193bc0-1b26-86c8-f396-c86374cd9d08,671546454,1672304047220017252
+fa1948bc-d6e7-e78f-30a1-66ab7c68c8eb,2442687071,10792238761078993189
+79076415-e495-230c-ec2e-f8980c80b1c0,4186100378,11404723398819728700
+e30c5911-64f0-a4f5-9350-b3104bfecf66,3341173560,10587026005661119614
+1e2a87c1-e39f-460a-4106-0b216e6073f4,240688890,2675936316445722289
+31c178ae-5949-751b-bc0e-5dfa2a94ebd8,3828867630,5882787340390495378
+302cb9c1-973f-2dd3-6311-e8772902b996,4072420148,1954871654896249587
+0cc6dd31-2dc7-41d8-e666-04db0caac0b4,4125243947,16804946456155948145
+76b0bd4f-61e7-f563-7682-c468eabcb8df,3576334214,3759351189150274019
+bd2878c7-4697-d428-c512-6b5aec85f023,840218111,10924510360265866163
+bb3a91d2-70df-8529-ccbf-1cef3984eca5,3281253377,14667014422520442809
+b31be0a4-1be9-9cc8-377f-4987a4bc5a43,3311204376,2733071025527123013
+68a3e9c2-04ea-b430-6e10-82c749ac118a,2751283857,5488563391316402535
+5505c9b4-9fc2-40f1-de41-392913608bc2,764628582,12067475677038957258
+35128efe-79d1-474f-1061-572b6bbc9749,3813988294,11813356536994574485
+f6ac09f9-0c74-ad78-74f2-c5c9ef07323e,3894360600,17792705615000524478
+a0646f04-135e-36a0-69b4-7b4768fa8fb5,122001451,11542223125276932784
+ef032b59-bb80-9ca0-253a-023bc64444de,2485134160,6571126995965188820
+16db10b1-117b-2482-acdb-d95f526af900,1438005553,9801865653161865459
+b8e7b81b-11df-0231-a62f-f9609810d59c,3513079881,18006618263508399329
+60fca420-7e53-1a0e-4f9e-0a9bd0624cd9,160268869,14632123065563419124
+1f0dbb57-454d-3e38-86d8-6ddfa0cd84b3,3990747345,4205855607606583455
+91845d58-f9a7-5118-deb6-a911c0e190ac,3774687076,17920008122137462121
+463e245b-c80c-38f8-4cdf-f0a4b3f6c3ca,3928834979,10132089373371874739
+46f0f0e4-ba23-dc62-1241-c464e943f144,4288951589,10864219528599392300
+fb8c425b-c17b-30d1-38ed-16a5acd0ee42,1463587399,4520493745942180766
+a33327d8-5370-8a82-25e1-5bdf57259a22,4175681828,7378529790519210956
+32b5aeda-e799-460d-4485-b523fd0fcd04,707954474,5243326925576288013
+56773afc-d9ac-f016-a22c-4eba39d5b900,2555130993,2752366138819452974
+a977b708-0e6f-3aa5-9c5d-64a74bf12d36,3074413988,2014228929236330601
+5f7d70bb-b77b-1959-8cda-49fed7319568,353499614,17630355873642439799
+7f52499d-5120-7ed6-e060-081c19c699e5,583441166,12356510854535165436
+50f5ea9d-527a-26d6-6fd7-0676e9e22261,290636685,10310363277526491816
+5576169a-f295-1ffa-c79f-a1160f0807a7,1383369904,2174206826950336743
+04f4385f-3a5f-b2d1-a331-2ce6d846f000,80486629,10459303435044288463
+f50a1a67-cd32-f76a-2688-a718b5def3d4,4000279956,8609914324061266506
+39ba5da7-f679-8736-dea8-2462578bf8a2,27861140,15383292063385723709
+3381f674-e8a2-fda1-7fd9-3cb51ee49481,3369427094,10636936064655789673
+2e76219d-7072-2b00-86c8-12ad1ee0d3f9,1647728704,5669214790451053174
+cd5fc69a-5895-8d6d-48f7-0fedf55b7cf4,1360224468,16113879650132777455
+c44713d9-be6e-5a83-3e6a-e2ba85b4a008,3098508827,14930980686859400297
+3367b14f-4ff8-39c5-dddf-eabe31f9e598,3617082377,9878053250192736807
+68a5cd3e-5860-271b-81f3-b791b7c0f42c,3297795937,3002334563875595748
+257ca937-e97f-13e5-3522-7962e823a35d,4036874287,7215246205119799901
+a6441f7c-e16f-dd38-9e2f-991a354af564,3391353326,6027736091746557438
+98c974b1-40c2-1b29-c975-dc8021c6166f,3683468500,12479120499977393407
+dfb9a3ff-5cf1-7239-aacd-872750ff5b27,3872905226,11182465814472885605
+885f133c-2bc5-819f-70bf-412a6dd4dd97,1278833709,3385940953862136024
+b9a8d9b1-9776-7d51-399e-0a7eb1e51b44,1639129613,1118695971472164561
+5d3164fc-ebd6-b041-a7f0-b3a7b8b6fdb3,4090897166,7917085676210878332
+5031be2c-cef9-be04-40b9-c98f5ba55a69,4195580838,6160405042801975364
+c38b4e86-dc97-46f8-2683-53882a05116e,3603800478,18078832241638004963
+39de8e17-6699-7b7b-831c-d5daa57fe9a5,284392456,16183704178278436754
+dd1faa86-0e50-b9a3-cc04-e47440f851a2,3130989724,17749717030608233869
+e06af735-cf28-863d-f9ce-be895a047f26,4236174558,7555143196535022639
+66e68562-cb20-8135-7d59-c9feefee4f8d,388147299,2056032190438040676
+aff98467-4bb1-97a1-4f5d-9c8403c25423,2978707126,6759806887239471515
+a522198b-59e6-b66e-3d53-21f14f948e5d,1450966795,17450735917545787380
+11a257cd-97db-649d-84f4-fea285af18e6,364227108,3842151048708236002
+b21722f4-675f-0a84-a985-4e9f4e530cf9,1175512399,4891971760544016457
+bf946eac-a565-6643-b953-a5f412b1860c,2207869904,1037659752031985607
+14b2354a-9ee0-aa44-0809-9c4eb10feba5,1967506396,3015014726043580297
+6d2bcab7-51b8-d2b9-674b-d36fcbf84c8a,2709152367,13113885529721962955
+59e91fe6-f689-5c15-a713-e86fcc73dac6,4084651321,13194369931410197984
+98aea542-40ea-e101-eb8c-9e26cf9dc759,1899768813,6205533263610713362
+e81d1477-0bc3-12f8-8280-aeb973158304,1107704121,12694939092340286569
+dc3471c0-b776-a857-fa2a-cd32a8a47f64,3063622640,6622529731177632860
+42642826-9e80-c0cc-dea2-cc861ff92266,13277534,1935171724343036915
+c6ba8c53-4375-174d-8132-d3977a732918,583253617,8504004148604534920
+fb5cac8f-ed11-9d60-0622-0fb431f7a8f8,3431380317,15784288426557882257
+fb034bc0-a19f-3bc8-49d1-d48c5d008da4,4122184927,3840640938241788756
+593be199-c899-019e-d2b0-d7c47e36c788,3136861907,3612141859835281564
+213ad8d9-0e5f-2b1b-10e0-0970d44ae306,3807979299,11715979133543093341
+f76054ea-f0c5-8c9a-08de-8c4803cab7a9,512137852,4780920521108091818
+1b298ec1-a1e2-f009-6cf2-bd447282331a,1894258875,11027883103532117035
+53c20d89-18d3-6537-910d-aa84488a1b56,648890221,14802389910937364582
+2767217f-6dba-6930-b741-d3cdaaf6d23b,3406247240,1262515936156263207
+f81712d9-cba9-37db-2518-b9a2c9ca1fb0,2263705122,6730259578324592313
+a6431178-845c-5727-6d35-4153c7f72ac9,2545312570,17192932068339452371
+ec893bda-a481-577a-fb7a-944582ac0710,2809380375,6385007372496546549
+4c131d7c-707e-18c3-3007-120c40b44e84,3679211044,11835414999395807809
+1b8d153b-62ad-a562-49e1-a7971d2e370a,3825486302,7248507303172176725
+17f5be7c-3c0d-f58f-be77-bfc055fbd162,321535189,7333517339164624190
+92618e1a-d0e4-41c3-5fa2-c3053b2ec4b1,2721432998,4131895807055938820
+41e6639c-e79b-7342-4109-1ac9a1f43969,2991534552,17973233132559969098
+fb7c5ac7-2140-200b-d1fe-107762121cb8,480108618,14801932837263122159
+2a20a49d-0d98-4ec1-90d1-449677172fec,1755609557,1617979969364836407
+878b3136-3ae8-4c4a-5b47-78edc59c2ae4,2461320452,4590991884501957909
+89be4ec2-ed66-73eb-8b34-4227e6f597c9,2472032691,5882776304058599452
+b0e7d8c2-c13b-bf54-1b72-3f87ca4ab9b6,3478744437,5668533830536948424
+11e8b0cc-de92-7ad7-4d5a-15e6f0f4f70d,1122350294,4617727738652961322
+6120b5df-0ce9-5e09-7ec7-3201cfd22b09,1444260370,6483050426538857429
+ae98683d-c29c-1201-a2a7-cec01a14973a,3442171924,12457939760929176284
+b95cc0ee-900f-9cad-a113-248fc8e6eefb,1661648365,3285614445184973374
+700e51a9-5e5d-6a1f-5804-406667d6aca8,2192520027,18321677263248511775
+88125028-9d8b-13df-056f-3c1329d1f02b,3344313827,7800441898862060992
+1c74f04d-63eb-e541-dc10-e608c65b5e47,1257773697,10953895851784615584
+87f6cc31-77b8-c343-a7db-7052273d4079,3723481482,14528829042562166830
+b73e7363-33a8-a203-9885-cf7ae0057bc9,3975216604,9368401376156762641
+9160d5d2-9600-023d-816b-f1ddcec59e1b,2843976513,9605070543919351274
+5c4b06f2-8891-c365-1bd5-43170bbad8ad,3411065725,12588261586767673029
+4fb2afeb-77e3-4a5f-2da7-334f55e44e1e,1464948112,1178350635943357754
+37571a16-1820-8091-3295-c1db679983fb,3903413974,4652680865295574811
+16416c55-2c31-392f-4e65-2f1f6eaa7bf1,2183018544,7097403889192444502
+504bdb70-e8e2-6051-760e-51a93f449fec,2521891484,5964843907003048699
+6899d75c-6afe-5cb1-ab09-dbf6d9b23c15,672063267,10436325389193429021
+08c45f7f-2164-10ef-f46e-c7e177a178e3,2886819434,13384613111382483142
+6d5598eb-7521-701e-c93d-5919b96fc5ec,3493908515,6591674030055888008
+68b6ac57-62cf-2cd1-e106-9fad55df6994,3547277855,7194010481587683854
+93556888-f282-7088-f2e2-bc2e8f843f86,1896365499,13233383228751868239
+f244ccc1-b197-46bc-f739-51110a166890,1620195349,12891361113012613312
+198543b5-619c-f8a7-4283-50c87deb1c5c,3171126240,11514806904599743179
+3ff1bf5b-986b-042f-9d02-9365932251ea,2226917187,7209662566747611660
+118054f8-05c4-b296-bf9f-a25461564869,881939926,1422792042919272834
+98a9bd02-9319-4a7a-713e-f5ec73a21d50,608164517,5542704195132390690
+5c6547f5-5559-11ba-f4aa-f01cea4f60fe,992504438,9412332836634388251
+60f90bde-d823-c701-5d5d-4f5bd6137702,698201723,12598624711314556157
+aa9e3d0c-acdf-759d-2572-7130ee60b13d,2854870392,12008158109556717427
+faecf5e8-6999-cc06-1d37-74f4db35c44e,3702653877,16832665288943750210
+6ebc8142-1482-1709-b6aa-8fb714bbfc0d,4000381113,3315955536887504723
+9a6b7338-f674-348a-b6ef-935ad9a44a93,3643778416,16413765888346901357
+78a9c869-d1f5-56b0-d1c1-c68972729944,567277320,12445298419438778497
+5daf5672-197f-dd80-ccee-9d6f64e09bc3,1713142047,2479652795659456323
+32314f27-04ce-1743-cb95-dda45967b18b,295678469,9946517986806995690
+395e03d0-8420-7f91-a073-813c38bc5208,1553673472,2839258031234836281
+b62f82dd-6e12-f0b8-9696-e9e300054ac8,3434066815,15281174580812141361
+caf8df65-a07f-37bd-3964-7036ade318ae,2510216248,2630033881862450699
+52ee5332-1bc5-f967-b92c-299c8dadf863,2951793442,4927553540019198187
+2994561a-8eef-70ed-d087-b033443de2aa,4006562028,14326416239985623802
+3d8321ea-adb0-e907-fc28-ba14bbd1c0fd,2242467256,10748674220724293954
+33ed90ac-1c9b-6f8d-e953-a5d215b7d87a,2043262115,4288323341473449230
+62415c40-6dde-7119-b2ae-d4a948a7fe34,2582195761,2006711020157254104
+81166d92-dd04-c165-9044-4b2f7ec2dce1,2846225893,18059620667675023238
+f031e102-c287-d2ea-5da8-f87ffc4d68c2,3375386759,16053954424029576765
+1411a3f8-481d-b731-9309-9fb1fafbef7c,3123744479,3744043614713813023
+2454358c-9426-82d6-e9cc-a091506640cb,3619022908,470753481826443248
+c507148b-7927-8d29-ae14-2e0dfd25bd56,3973378799,13653106364403735118
+cd0ca115-87c4-b713-6241-6812ab4f224f,2334469188,12277655056824230950
+83c1262e-895a-ab93-6da8-fa9732987b3e,563436916,16158137572160360506
+55af2820-212c-9159-ee37-33eb0769e88a,3329409380,17328359225918284486
+c034b7b6-34dd-5251-896b-bb36134d449c,3650190354,17417726214245357690
+2f11c58e-03ff-313f-5b31-79ee483d5c7b,2531315526,11298029247349034477
+6d9b49dc-1e56-346a-5774-1bb66c896a3c,1423174662,8072519612603613860
+1cfe1262-e903-1f3e-c819-e64a57ea3215,4133841054,1652714122467282739
+4aa9b8ec-d2d4-f5e0-d621-ac6082980f9a,2045441393,7563524452556353980
+4314011d-573d-b4aa-2821-7ee6a9461d49,1603729564,14249922719415059772
+a3417c8b-2a25-06d0-308f-5be40a646e47,762697671,211976893749500876
+8a402aa2-d30e-f76f-2873-ae825e095292,3583327495,15929838198212664486
+44619ffa-caf3-2ca3-8bd1-0aadbdf8fc15,3939553402,871474822636287759
+a8597fb8-4c59-e3ae-c9bc-c3fb5a046c82,4236368425,461942773109080255
+60fd172d-5c66-e3ed-c75f-6889f377cc1c,1990521083,2932845262587093826
+fe5a6c2e-70d6-7f59-80b3-9607e6d7186c,216757285,15683652416621778828
+c5b7b96b-8551-2e6d-eed2-366ca39b196d,780297503,11136411884984101260
+526a29ef-cc78-086d-9176-ce383b2894ed,2040359401,17236031156479209495
+ddef0578-275f-aa14-bb61-ba89421129ea,2544875950,9705299833088495965
+aaaf1ca6-460b-2f4b-2c06-e39ee33225e4,1686654429,7736286983373152000
+0878fac2-4e71-d3c6-7a54-2aa0eda9f13a,2422743914,10781018939645127483
+3457dfe5-1e46-5d7b-9850-4e91a718cafc,1810120709,15979936537072886258
+516adca1-1311-8587-873c-0a8bfb0063c6,4113649900,11450877227006541465
+0eebb060-ad26-11b0-8931-e6fb2d48dbf2,2280623156,7410345204362891439
+14bb4fbb-0bb4-5ccc-2c93-ce094aae7d1c,2215809449,7424084523259558667
+6e0141f5-e342-3e90-42b0-a0ccf4bf2bef,3196106541,8711919557891895061
+8644e87d-fd1d-44aa-8ba1-941516a02711,1759145942,14630273122390254549
+fdb471aa-b18f-a404-c0b0-8ba215cf6a33,414005762,4494294457263174356
+22e89123-a053-5b9b-2ea7-3fabf37925f5,3372119556,4875061296126909072
+0fa6f1a9-117f-0f83-564b-e96680b22ee4,2197859221,16648395069682044765
+3646e9f7-7843-af50-b1bf-d60140b99edb,2314310351,17120983094758869076
+98554083-4f25-fe5f-1ccf-e4bf7ebc83ff,1003570223,6092423959190940398
+e36daad1-468f-5fb2-b9ef-cf684f43ddf3,4201955118,3654937773402360728
+4ab697fd-90ec-89c2-66ba-e2eba548839d,3717083339,6315848100533304708
+35be3537-946e-8332-a78e-ff97a5e01186,1839651476,10706244429289504261
+4be35ab9-9442-1214-f2f2-52b4d9a18279,615305901,2050280141618630828
+0f5b36b7-223f-b7be-ec65-209a566671f4,2025917522,16076832002777633666
+2a71f699-8538-12a4-d379-d5ff25836c5f,3995828761,6039538466088532876
+f214f4f8-f8ba-b44e-98d4-c6ca3b37e857,3591176825,5311533419085854693
+57f2954b-5852-cc0e-cce3-ce5500b84f38,1846639390,16121731113783817031
+71617464-7bac-d9fa-5ab2-3fe57d14eae9,3461906524,6065963498384955947
+c7f09ad4-90df-5687-738d-d354c182aac6,1390844163,14305125472083445999
+6ef81d2f-08be-1615-38ce-25a16a475abe,3095485163,9784338180140012628
+b3ff1204-8465-1c37-4728-00e4dd7b4fc7,2400224272,16992283587057801198
+0017316b-ccbb-32d2-ad9e-66000cc513ad,1221592414,3991956444998115230
+8a170c00-d4df-a133-acb3-12ff6f0ea1a1,4073538862,6466707404423594945
+9666d5a3-7619-336c-1cfa-3bc843b29bac,3648756781,2574925894914264115
+1e7af998-5f4e-db29-3fd3-4e25bc86f8a5,4161306192,8950823236505411139
+66845f40-185d-cd3b-ee35-8bd3b9336c5f,645483103,13582650904223600480
+0c6b8283-acf2-4368-0731-403186e437fa,2050030889,3098413053338379135
+e1666051-8aa0-1e6f-c395-d91b8fb48dca,988606573,8697901031250798274
+45377840-2bcd-e7b9-34f6-9c1b1d5160fd,2954459580,17348146928926716640
+0f5be02b-f2da-07ef-dd45-b80a2d929ec8,399249199,18079372776349176047
+4316dd1f-cb50-6c81-8eac-c9945cb50d64,3079322303,10860447115217240441
+3e66ed2e-ddbb-3ab3-0a61-ba6c3bfc6406,2748027324,8736284877446615132
+c5fe5127-2c60-88d1-8cb3-6c08e2348ba4,1979745751,8814001268386186132
+6c710b23-19c7-5ebd-6434-a25a9d3fad22,1000636888,14681500156923810559
+b3fdf55a-3c74-34b5-dadd-053e394c0baf,1960838304,339837940580078405
+cd612076-4cdb-78b6-9aa9-f75de7434970,1553792207,17802250918387957114
+5c16ae3b-936d-2fc1-1c90-1c9f7b647261,1422128521,4768814903846995083
+69a0b78d-cb94-ff1b-35b2-e2d014475e9a,1188033794,2934813379848084409
+65b6306e-3662-6753-5cc6-c9c16ee77efb,2146741443,7968949110442779977
+76f2c4b5-0724-cf1c-73e9-e41c10ab6ae4,1599996535,8388772586625228103
+f64d8e2e-f305-6496-3125-47317e9fb1da,3480712301,5694699900282607338
+8328eddc-d16f-6c00-c6f1-f2c7520da73a,3403593103,744247940551142508
+4438e7e9-b8f7-e08e-227e-1102ac03808e,3106991517,4854908237813317801
+0cd4d755-5bcc-bb41-48a4-d26f1db866d5,2296850731,6678272246340507496
+926b069e-25a3-c9b4-200a-d4a3f20ef28c,3910406735,15601081557393662883
+2bd9cc26-dc5b-7154-eeed-9bb21c1636ac,1622192006,3427313204247391993
+896409a6-f1ec-f77f-a551-405b343ce955,2400549712,16280632100824154515
+9de5860b-24a3-b4d6-1b1d-e798155f6b9e,555320849,16966183268319219642
+fb47c6bf-1b09-e943-af62-ab452e28bad8,3225995338,10574825523225474116
+6d1e7874-cfc3-08a2-43ab-559e8c9d3c18,2380706228,5369764587625621390
+04559897-e70e-d73c-4bae-8ab8e229f9ff,3270876950,7224762042564618756
+42899a54-97e5-f8a8-c5b3-f5f5e1ebb3ba,4136861529,3417963971652198611
+fa6d3e9b-b241-cd4d-a30d-c62cca4a7cd3,2468201900,11793168922977134723
+7b7838af-0627-e089-007f-80cce9e71b9a,3505789720,17429073206346760013
+5e1e8575-0cc0-af0f-b1c3-939eb7c16ddc,2883187309,2580770267424918599
+d8e196c2-edea-88e4-9569-5edebb6352bc,2158557325,3040676289282232527
+1139e05a-1aec-9e70-7172-72c13fddc7dc,169317870,1543837121043424507
+8a798739-de25-22d8-c14f-d309060b2c3e,113184820,5121544003578130883
+b8e6c74d-609b-0538-f20f-46c29144cfb1,2048958930,11068012434439420906
+a1832c55-266e-b409-835c-da4d48ca3de4,378483720,17489383203398968627
+a224a502-a9b5-e647-6d09-a38a1e4f806f,560145148,11297346834773389253
+ece15289-a4e1-631a-f8c6-d89f3ddc6c6a,2913435947,15579386746979665049
+6b8be83f-f5ec-f150-b81f-268c1798b8ae,3469792259,13635064309569584014
+2fd62599-33b9-b756-1cd8-27e683f6577c,3621280648,10022371811558166021
+cd9deb3a-29ce-0346-efc0-abf017cff94a,359002337,5429836509296493135
+01569b61-7ab7-c94e-7dc7-0b0ab05f9d43,3972501064,10883722452487798329
+f33dc40e-d8fe-f29b-a105-3b376d7af761,3427543181,2347733166534180604
+40d146de-2e31-eeff-bd37-f517a2d342ce,3914718882,17845287701929522218
+3d6a0dce-ce89-3fd2-1dc2-2b57631af9b2,1750966770,13917629224201782493
+9af95d6b-f2c0-7774-e55a-9bc337b28ff1,498316655,4959497953984191280
+11f9a896-9bce-1c49-aab7-9ce8a50e98fb,3767508169,11428139957124207682
+95b2e8fc-96a8-043c-d9be-4fa27116302f,3460378370,9868182961168875300
+bd6ea9e5-8787-769c-284b-b124ab52cd8d,307334325,15609366834575471805
+33aa180f-a4ec-d3f1-2557-2805a2c3e81a,2364252217,9924333219038908258
+a03d1a9f-e7c1-c601-c2cb-f09d0cb7c720,200547358,13443994180147972854
+e713b53c-8481-ffa9-0309-2b196c26732e,3105275284,2379045600098700488
+9f34508a-cc6d-e106-a94c-59d86889cc66,1293671344,5278924183114623165
+7c873539-db51-9c24-112d-753477b678c6,1802471058,8186884268727320571
+0af4ff72-1d9a-1ac2-b1df-04c7f73fc3a9,1934358349,14780546158902701955
+09d865e2-6c0e-019d-6684-d9d7f497bfa7,920011902,2949711701965849194
+63622ff6-e36d-8dd9-f0d2-787e885a8dd6,3864326509,6489824222762496195
+3a5efd0c-ba1b-e969-ba49-2af351f8413d,524401286,14024414929860726871
+13e1dc3d-0917-ec2d-364b-f27df7625a23,4156162853,6443113668586785290
+149c84d7-f3a6-d32e-90f0-65ddf52d19c5,2401821280,14800834913548845573
+2ef04692-87c8-19f6-ec95-4746c07d9d1d,3627807610,11041830214430262512
+c3067d37-e3d3-a8ce-e760-84ca10d68fae,3921078192,7133894535553007622
+cf36c5ce-9d15-d6e0-d629-3525b6506102,4005745664,4234979422239298632
+4ca0cbf1-389c-7092-f2d6-b73e11ba442a,231576775,2250661661091317409
+a22e74d3-c4a9-c0c9-4c44-714bc28b1e32,2583305821,2570560364395697797
+d4ec3419-c925-4243-a84c-1c27fb16ba23,3735869187,3846272566919142410
+af24c2b7-6dbe-44b2-cf05-9ac54c532f6f,3331981663,4796827795687110694
+84393dae-3428-5a0b-0cdb-60ca3ae72a73,1754649496,13801493257221386976
+87079a85-b990-2646-e309-b2444f3a2731,1674960387,1416151412230405157
+5d509962-8676-fffd-b274-30dca19a56b5,2950475546,16881278125764765837
+62392044-d033-f6ca-acc2-61736b86c82a,4173249688,2291928737278733308
+5bea8f04-1916-2d2c-e185-87ead306465c,1140743786,9807884482046988518
+4b6a9148-4258-6d15-1585-529c60c2a0fd,380827651,15151021659351336093
+4392c299-f240-33ca-a9a3-a433a9f8e089,3669248885,14683866577454185050
+f4fd33e4-ca7f-50f6-5886-13db44f39cd1,1128315915,2077737190070716380
+232eec2e-555f-0c28-fe17-ce3b0a71a61e,2771622708,5181650228144749679
+72f6a93a-7253-7ff5-85ab-9b5bcef82328,2239074575,3849523997691552447
+c09887bf-6f8c-6db2-6e7e-33b6a96de278,2406347554,12205838765607240874
+f2ea6eb4-7ade-0f2f-5e43-297ac8304038,4123350941,5492282666050285335
+1fdb9258-f57f-8fc4-dd41-a60134c7385f,1951926546,17485037241418043658
+cd05c45d-4826-a621-8d86-257ddf9441f0,2971270137,17719233358323634189
+b2cdb11d-316f-0b87-2f7f-a2a6febc6b10,2321628910,8822073372417655885
+073ac420-482b-06fa-d36a-5c416b382cfc,2149923445,5376270136880180481
+91684a0c-e005-3097-6c53-6b0871ebb744,4227803985,18163131805114473171
+42b56de4-6bd8-390b-5499-172a8ce4d920,4045918122,10371080005410509117
+5fa576f1-52af-2fbc-7901-028e788b9ade,1815241139,11639263685688966375
+570e2a13-3ccc-5bae-b79c-e60282935f97,1427607064,12768607165702326303
+e9527bbe-9773-5222-9a97-cac765829b38,3944922510,9748333715594637307
+c4ff505c-cf03-a047-449f-805888bddf1f,650769625,8238423099038140690
+994e4118-d253-acfc-2b8b-b91dfdf5acaa,1560173763,9986788937817550650
+e3c363fa-74cd-1e11-8bce-0b35e8ceb981,330519852,5068654780692805137
+f5534b48-3ba9-3dd2-fabc-cabe2c3212aa,860718387,11425161146546535234
+b44a60ae-c3d9-addb-9bed-c816b9cb2b72,883043367,8892795231614257999
+f4cdb89c-a0b0-54b3-86f3-b54ccdf9e294,1202248619,1935056185058889467
+81635c3b-b8bf-95b2-14c9-c910892eda14,461060632,7944619208705994179
+9088fef3-48b6-d258-f256-d0ce25a7b130,2922341498,15861082006326726140
+9da960e8-f10b-13cd-6473-cc294709b4ed,1289023050,159180865923160895
+a489a125-07ce-3d89-c495-0eaf9e8a659f,1083244395,2465719199612476732
+624ced1f-9bc5-7522-6ffc-0d3e567c6566,3469912737,8070851862429813043
+f7578079-94a9-9921-6cdb-883cd4a9e736,2894838336,14681304979377287538
+cf67015a-9446-06c7-255f-957fb84cd4b7,4270273505,15314220675447743018
+0ce7d46f-ce8f-ebde-f731-b33aafa6f6d4,3940071033,13669258535906632069
+c7ee74cc-926d-d5f5-adaa-1c2ae5f5c0c9,2496028209,2650669882774704360
+8efb4429-c75d-1a80-8395-64205b18995a,3867817592,12407322278840355146
+a6fb8444-6086-03fe-9d04-7aa718633dfa,2615407383,13695530946201699095
+da8a95be-fec4-dd85-0d0c-dcbefef42e20,3299318402,12314906794963432564
+32a2e576-7e55-ad8a-9a9e-7fd94222f9ba,1578309488,13097948718874217294
+32d9b653-a53b-931d-20a3-580f96e3baf4,2503902989,17713988535962874176
+0051e6a7-f833-9600-75f0-98a84813f1f7,4287868742,17599740989700563542
+b617519e-6804-94b1-3276-9b4495423f5f,1049599170,604711547072182775
+d2046717-9db0-8dc1-fb2b-8efd8513bf42,2578133401,1139455898351898820
+a88d34ea-2420-2857-b9a7-c8e45513c6d6,751595291,9693268406009968507
+f21adc9c-a816-643e-18a5-cb7eae4dd7ac,563607850,3126178284672219934
+301202ac-f884-4979-1de7-47b14486eacc,211351517,18332690677438262164
+d1af7fbc-7857-4df1-5935-88ce88293365,3451235132,8872357430781978746
+6bd45252-6105-24c4-a896-8f95cd0740d2,1329780376,7645760254214022699
+f4006da3-6621-7a0a-b3b1-dc019336d880,2697207301,12902984333941475737
+4b41b959-8244-0b96-e5c9-f1662f858d8d,2583779226,5909784734155571529
+e28bd9d9-ebd2-8916-b63e-94c2e3ce3679,652340492,12346902174827370320
+b1e8b004-475e-bd21-5ff7-eccde67f6bc1,3277161466,10913736162160955505
+52676d95-59db-1db8-434d-fa3742c13ef6,12256134,2454975990284492081
+a5a3c3ee-fb60-eadc-d7ef-3a54349a0a07,1213220980,1747512600711364581
+544e1f95-6cfd-9f9f-2d05-12218f34bf7c,64865605,4810988286067419641
+ece96636-e68a-e28f-6acd-246257ca647d,1715232395,14207166701885075810
+93520b69-4c8e-13ee-7cba-17a0e17c5d54,3509759933,2156773098692197730
+2a25c8e1-55b0-4b16-970c-f3b429d85273,4058836948,17811520767910743839
+d1842ac0-186c-41cc-7455-b2182a5e4f82,3488793421,11947665406784933625
+22cfa740-ac1e-daa2-a532-2022d42cfe2b,1315704829,12069853396543389805
+6a17510f-065f-abe8-2128-6e2effcc563a,1208237273,9543072945067316398
+87da0288-7891-41ff-bee8-b9eb2f860dfb,914861002,10720437860795000215
+84a6effb-9826-56ac-4e75-ea2285a2e6f2,461567447,6113436004149439273
+cdbfe9d5-3430-a2a4-1fe4-f3e6f925e707,771852119,14133019927155080525
+ac380e30-50de-c18e-d769-59b15255dd8b,2933908710,5170357475577247280
+ab1acf48-00aa-7f54-b997-9fb32121c502,158083508,10860800827866865749
+e018d569-b721-e8ea-afba-e6a306d51732,2118162995,12606336921171532282
+c8eaaa41-5183-587d-6ae0-0a6b918b61eb,646974569,15787426698379823140
+a2cab3e5-66bc-08cf-891d-6c4bb32c2fd0,1896742689,5717009337410039186
+8e5a9143-f911-38bc-bf3c-b2b96ec32125,58944933,14260455602880286386
+f02727ab-e195-90d4-c6cb-fff410494770,4219064274,13809736703546579507
+851216c0-4eeb-9af3-4f37-1689df7a7559,2379233025,6962899599491266602
+3d961c46-1b8a-6e14-6a22-3f947d82a11c,435920552,4875637714755075411
+89315ddb-65ad-a588-c218-379b007c2d66,3526948097,2671667741967309469
+b71a5b2e-4eec-e978-801c-fd6a5c5aa14e,640909136,16694285586207902528
+93d5850d-ef06-ddf0-15c1-c55fe74126bd,134862931,3520432655704189182
+7187100b-da02-f15a-1865-0940af42553c,2022716583,1933441042066215742
+a7826e02-0d6e-a662-0235-5a90ae36f4d7,3983004314,9098082893578679722
+7077c27a-39d7-edb3-6135-50929b23fe35,512877136,15888281848886118119
+08bf3401-00cb-d3ec-1ad5-22ab5ab19ac3,3160313693,14375320806370973491
+d2088e49-9d95-cf15-1eed-4205e6004145,2253191586,8678761737768017459
+a1fbbb18-acaf-11a0-9c44-eeedefb8e03d,882984344,842785014725701400
+80ecd201-5429-afdd-fc28-9671ab3f5ce0,2433084062,5305298913179718135
+92f1be7c-9dff-e3e7-ef1f-6a5664df19e1,3011499044,12903581359899784480
+b19948c2-2e5c-b572-758e-e0e8419d8a12,2753960628,4855578930871164316
+61b7219a-7e36-f9f9-1775-ca05169a7b2c,1676003126,8012347371328473910
+35ffe627-06b5-ae0b-2bf6-8bd96f541022,1078890659,4099764315981239958
+883780dd-897c-0c3d-951e-6edf99f1e773,2808788458,13702993696833245455
+9816d813-8d21-cace-3617-cc46de0da821,1962416622,14529338549500093443
+cc045114-bbd4-ed52-7af8-cbbdfeca5670,1867444425,7723640895305158436
+f14e3b38-fcd7-9ad5-4a4a-932be26419c6,3564989036,14108922522556407829
+67d15d9e-fe04-e7d3-fc7e-e527623094f9,2185057454,12472384828390529867
+4920c80c-65d2-6146-1e56-c51e72c9031a,3731690034,2334927017513972481
+6c1dfdd5-2530-2db9-61e4-61c18746cbad,2946875467,4852889545289923941
+dbd5f76f-c0e0-5a6a-708c-85f5e078a825,3588727709,3198077197683242651
+b6ea238f-c9ef-54b5-ec38-6ddfd5c8beba,3771332578,8776281825995086719
+43300c68-79f5-2c08-6a81-206d73532b28,2294162087,6179764835993064990
+73aeec64-4c6f-11c7-fe57-721266bbb1be,2302812554,7487656143810925528
+f82cb235-b662-c797-e114-5c47414d4910,488465007,11688943283716015020
+315934da-f566-53a5-3969-1a96169940f7,2844209081,5848250315219719627
+3a71efa2-6f05-4df8-e301-d7a41d2cc79d,2642662478,47513018630043192
+b235c4c6-11fb-0fdf-7d6e-83edd1c3bd69,1867353307,2710408694753330786
+da059d6d-da5e-bb9f-ec3e-91e278d251e0,2235935151,10309369915878756543
+2de0997f-4484-e3d2-93a8-6d44517b63d9,2767338462,10074903467288589855
+35e6f58d-a013-71c8-b1e0-2c0a2fb877b1,41333593,9682275664210490467
+007f2224-d3fd-efcb-a4c1-4028af5cb837,3172329299,12151817176093621942
+87bdadcb-a6eb-c385-e76e-f56254dd577f,4180723687,16494164679096327220
+858d5fee-eaec-f6e3-b832-246e0e34498d,3002571361,13517629008844253716
+f92ef4a0-cf47-9a18-7e58-13d7a66c0dd2,283531565,17517931304529699320
+c0182b2c-c1b4-df78-7925-a5b8fcdd4af8,2683217576,4874467730778950559
+34ca1628-5893-d08c-53e1-73e3ffe87552,4229628314,2552728191779785493
+de40c96a-eb60-b86e-c8fb-4080550c46b9,652550424,14390583746507850606
+a7b4984a-c6d5-25cb-b989-0f81a26d4b66,3093538474,6814762286363067642
+d5742ade-0fd6-ce0d-1e43-0d9993afd3b7,3720259397,5997129865395617539
+efeaad6f-8098-7554-183f-76762ff4f6b1,3348306744,7540740460440896558
+8e4de6d7-5a54-21d1-5638-ce2ea559e8e2,611530959,17809186449105721609
+9fae10a8-f956-647b-f10b-408b11a50c0e,2660954898,3129247179428487550
+01182a06-49e1-a4e4-727c-f6d45e0198ab,1072466634,7190948072808354876
+39001065-7a63-d8b0-e5f2-2b451cfd575d,1788679213,6763823250684499159
+4dc1a4aa-b645-fc43-bf7a-f2d89adb31f6,3666660191,15167194880834047381
+1f194b18-8c7c-58e1-71ee-b1a325dee732,4239152021,17829418157051199739
+94b0fd6f-6700-985f-0c57-f3b390734b9b,2676735701,16831641190648204428
+7492d6b2-a8e2-3558-be3a-6d6e0d92e7ed,514103886,3317617596259169962
+72e3c85f-9545-42b6-9313-dff706bf8628,2126953611,6651575138120790662
+021404c5-97e9-e84d-eca5-7ac5b2ff0c21,1425421396,12858381317452407373
+b0f6f0b2-3885-aa1d-0afb-87891d8b44df,1055764737,16517319407560160753
+47f4cedf-5cb7-8740-2d03-003c97baab23,837834754,10765091758323019950
+39b08581-82be-62ab-0a78-1327c5c44ba3,2976307428,12226535176543728789
+7f258dc6-8f91-0f7b-8ba3-aab7262ae341,3427407365,10031062465466747730
+0694d58c-c86a-e29d-f6f5-0c61c3ffefa5,3574704224,2621540790335258450
+72d27853-a1f0-2839-81b1-f99fb268f4d8,3628298534,346017484992592705
+0bf87099-d5ac-af5e-e0b2-1f2ce40e8993,4221068087,18315042716109526966
+87ccefc4-f952-13d4-7665-37f0bbd9b0b5,1261479318,17324036199165066581
+2ca93d3a-eec8-6e18-2912-8d7a06473bd7,2045293324,2805652512605936447
+862c7894-d529-8f5b-8379-cc9f62ca4db6,2084184043,18307129547862395260
+acdd0693-a712-a4aa-5321-ace2b56c3fed,4073373811,7218036704766770982
+e5b62d44-2c39-874a-8808-16164aed88cd,1778546032,7751921952722667609
+8d48e800-3117-a91b-13be-12131292e88d,1225261074,2409243153896132085
+fc84ed8b-b4ed-3c48-2bda-5148b40cb49b,1149159222,10043258111051108469
+2c8bfbcb-da07-3b40-4b4e-f64b61567cb3,2572434824,12752513039865331282
+8ca4bf55-249d-e33a-75cd-e3d970b199fe,1490450159,3264747613742712999
+a7fc0779-a252-f84d-6db4-126b530021d1,1716715237,3811268498591931552
+74b983d5-51c0-a43d-cdf0-b6c7e1953398,3785055788,3525820265727389689
+0b200c6c-3ebf-0e3e-87f3-c66f17edeba4,2857517846,6040561225360910441
+53b87dc4-fc61-2156-4c26-bed234c5b527,1111976692,8189202629352815633
+a3914c9d-0ea4-bb66-ac10-911f3bb0c312,2481209800,8300586996604513705
+46f907c0-9246-a2d2-22a3-8d02a1d83b88,1160314790,6791328794000148437
+d32a1949-4f10-1266-c22a-c147305b8b30,1314621589,15901679179828405038
+5c1dbf34-cdb2-f518-c941-8225d0001ed1,931221351,16721236037005060207
+dd501bfa-c5a5-a256-e553-0050ac444b04,169360589,17402367591391237770
+cb40a313-6020-d65b-6f2e-112e7028cdc7,1598650626,15448875811704565815
+46822e04-b7c9-52d6-f1a5-f8f02cd1690d,954432446,2272239436607005622
+ace77084-ff91-a3d6-977d-7f64ad537564,864028909,2337944983109919372
+3e493db9-0543-db75-ac13-4b6a2cb5b7bb,3004319659,1469724781251927533
+6c275b91-a1c8-4740-e3a6-63dc1883a465,1698044151,4352886525612695254
+c43755f6-cfd0-56c9-d3bf-f232029f4818,3372730401,2776985246090551056
+8d8e6942-81e0-0654-9eb8-e13389767918,2853049776,8065818848223449662
+385391ee-46b9-e224-3627-c3c0fd541622,1753355038,15047975114123020265
+2aeffded-bca7-80a3-d0ed-a22694c916c3,1694745036,14035496702120224126
+c9c76c36-a5e6-6af3-8a32-f6bc399f1e73,2436906928,16208897824857736959
+aa3a1307-d023-9a77-b2a3-a8c07f9621c5,39039260,1296544707734255689
+a4f5f472-9c4b-3f8e-5ded-cc88c7c95f53,3153140462,8243439427482526070
+ebc9e3d8-68b9-3e12-4464-4dce73afef42,1157758996,3847988428417749010
+ea341de1-2031-c38f-a33d-c4010f4065c4,2912365640,2034343858695736476
+3ecd5f22-5d77-414e-2407-ebc02be7973e,2560437740,12882349912513417545
+b73899ca-d082-5c79-8589-5cb92423f8d8,4275460680,17421425468447971192
+ae270dbc-0122-8863-ba9d-ee056bf181e0,2533092862,7005093750747717853
+da1183b0-46c2-9236-adac-ddeec1161223,2514731077,11125588076113767140
+5d4d4d65-b975-e704-2caa-ff4f2f9ec1c4,99414795,11075575310132018155
+67eabe8d-b575-81c0-adc7-980be85f2440,1707433315,6173143567153241923
+6caefc61-1cfd-fc40-5b92-2362322bd01d,2367695813,4432068640390481129
+219e80ca-d3f2-8b27-2f7a-c16169860eda,4027218311,682792858674489633
+f64dc8bf-058f-1b0d-d5cf-726bf65ad381,287470913,4749780110353924474
+ce19f23b-f887-3216-bf7e-180690e64c2a,93997165,2951890254759206142
+27c3fa23-22a4-63d1-5ba5-5f46e5255a34,1251669848,4369199992690982592
+c27cf4bf-62d5-9ee0-d4f4-0bea70b24a98,4187340696,18441363059915163745
+38fc1620-ac20-be6b-b0cc-0cb7af6938a9,955910281,2232283894418771662
+958e8600-f898-d5cc-00d1-948275471a17,1944435921,11272006336679111259
+e62b7b7a-7d4d-0c2a-7f6a-ee212579fa16,4275366168,9602913502952124299
+5a2d1ede-dfc9-b370-e728-75739292b986,3400608043,12572486836874897959
+7742d6ab-f663-bb68-704a-5ecdf4bd750f,535431421,857979323706308978
+3fcd84c4-2a9b-a1da-03d8-e32fea2f1761,2859416658,7533227009809049770
+4a54ae81-fd64-cee8-0d60-9e7dfb7447aa,2865813580,2043433334056037242
+0fd6acab-0070-cd73-9740-56127b3bb576,4225197465,16936268701115025998
+6f4aa8c7-6fc7-a557-fbeb-4413751160aa,3559252452,14152074544634706454
+f3225b13-72c8-b38b-62b1-b528f1899283,1931413244,14898698475431141466
+c9fe2384-63c8-eb57-2752-f59f5ac42737,2972410929,10778689885692850616
+40c7d0e0-a420-0350-49f3-92ffc17db542,770342434,2618372510719491380
+3e0c8b96-9280-7239-4fe6-43587b4581bf,1291493342,868553667309317952
+9ed148e0-4d83-f1f6-03d2-29830860a6b3,342692447,11594346957113677402
+14cde530-27d6-3203-b71d-2846fa664cc9,3479199680,2266413936825908132
+d614df0b-6ded-4724-c5b3-1883eb8d843b,1519126295,12459530928110375238
+b84b4986-c005-5840-1e4d-8469481da74f,3613125699,3437660587247059652
+97287ba8-b005-b2c9-53d9-16a4a7442f0f,2435559332,12307644550651916153
+0a22b48a-0742-bdad-94f1-f1a79a09dfb3,3016701229,11888667615294719394
+7eb35263-b062-b67f-a9e1-1d92dba1f20a,1449369955,10561400116724482654
+91643a66-770b-1707-28fc-0697e235325c,2589511418,10883884797217119702
+fc17730e-1451-3025-bab1-38376717644a,4272344973,12332437294409843176
+c43ac7e4-3400-997b-3ccf-486355286ff0,2127151911,17568334862325496508
+69961f58-9ae0-14e7-cd84-823c15877a66,607965936,5087708275783177253
+1848df46-b4b4-464d-c0fc-05e9dac0968c,33521977,11591095070678818071
+264fe45b-0e32-395e-bb20-2a15d5c6a51a,3453060638,15717867874524452561
+7b9d2e10-8c73-46eb-3819-b434fc45ba84,3154443817,9369513726235322606
+e9600ef6-07aa-2884-aac7-86a7f4d2c297,1490418540,15072385687276968819
+60711c18-c263-9c81-a23f-372686726c0b,3213828531,10861928670776226614
+4aa99916-3986-f70f-b267-f5b0abdccb34,671004945,11734610451806003889
+816acf47-b99b-af7a-3223-6c63de838dfd,2596267808,13209815295620961268
+9f0b5cbb-f772-ee76-9b80-cdc87b66cf6f,1996818475,11748940923662647893
+bbe8bba1-9eff-414a-8647-29588ceddb37,3452364408,6346764891314366676
+154dbbf4-1744-4bdf-a2dc-9a111a75c740,3500237486,11903002281014127091
+edbe74f3-795e-8145-da33-bf1e2f23691a,2145008402,5066519746747353127
+9595684c-72de-13d3-cde8-0ffb047a791a,4186429583,16999763696442403774
+1c373260-469a-0647-0a86-26bfffc25fe8,836743327,4752627289268763093
+b845a0a8-12d0-b7d6-c081-db22e00b55cd,3944215523,8782875560849224286
+7ea75735-b05f-0be4-18f6-74c903ad51c8,2056218552,9839696775905370278
+d751241a-ed19-7e92-4e0f-6734339bbca1,2938890065,569780630703199541
+73f4455e-5226-421b-ab93-511050014069,996281210,16827128286590317139
+bed586c3-7fd5-e5b2-29e7-07c4280c6b2f,1530783211,11056036950584857219
+0eac36f3-5c11-3929-eada-3165bb81c9b8,46380194,7976672000775738140
+f11c4bde-88bc-a719-6103-3c0c53167ce2,2614781350,15717055804365079969
+34699cfe-1305-3230-f4bb-9c0da5528269,4170515932,5452054169352871019
+1004b02a-0e3d-db7b-7855-e4b5e351235d,1657799380,10933753042201586850
+d86bc13e-daf8-8236-8247-b89bebb8288a,2078950654,1556322169115971801
+bfcc03ce-e8f1-703b-d447-3e3e4095ce82,866078855,7314486482614846143
+ce8bf5cb-2336-b1a7-5656-a0ac4c087e29,1651171563,17619172034276702130
+f013c9c9-b467-768d-6d8d-d3e013de657e,2398843644,1394140579116234472
+1cb3a741-e3b6-01e8-0923-4ecdca853a06,1166769209,13583764015445262921
+e8afd3c2-7782-9109-feeb-dfb66dd0a5af,1358151382,7517020424828444918
+16827b3a-0d15-1fa5-c636-b19486dd58d3,4283096507,6832884586915638095
+a5ccd010-4290-e719-d9a7-9ad79e2c9e1e,3397756008,1617772853622628571
+e503fcdc-5ff0-fc8e-4f18-4b64c190ce62,2587032110,119583167709952892
+5177c152-d34f-e6d7-3646-9e9889f4c7c8,2417156036,1941685399478359586
+f4d26224-022f-08e6-4488-a219cceef10c,767489610,3569747576522619777
+2ecac492-f164-f71d-ed01-8ea2ef44423b,3573184688,12763335137929650135
+f2a9be74-3350-9244-72cb-33d8e2ca7f01,1394109759,2400082727375179001
+f5c84ba2-7657-1b5d-78e9-0311aaa08a02,3429705819,4115731103110759825
+026d1868-a42b-d145-9bcb-9626abe23cff,3645483638,9004731435342800546
+74091bf8-e64b-8f6b-f364-01777e45a7be,1621873450,14827311029382136238
+4d436ac3-21db-66fd-3633-3371b9f7eacb,3889949860,13554827932691141686
+11928d16-292c-2448-4dc8-8c25472d334c,3405696203,8195985120874290592
+c688c49a-7971-590a-dfae-8b3c7db4aaba,2467471428,13446544260855245974
+e4a6c695-0fc5-bde9-38d8-4daaf73e6292,1891931860,17029012475764039888
+e9f515f7-6eba-cc4b-f6f6-0da825bc02b3,3435157550,13153319107160382768
+cc3b23ef-c338-995d-bfb1-90fd9da56ef1,98642346,13622291736552068586
+1fd518e0-b063-6930-c6f1-66e1ce5fedf9,452905801,13555598104090378393
+e6306cf6-9025-68ee-ccf6-cdddb7509f99,3445094674,17172191814959291731
+7e353de7-5a90-1302-ee0a-86071f9e8c66,3073140249,12917320319520853635
+4dca188f-4239-4df6-9e95-0fdca6503aa8,1786107548,15517850883900145961
+c7b3b557-72d8-b20f-238d-c54ad1be0ccc,3050996227,14144715195072637680
+6d2cf72d-7095-fcda-4165-e272966fbd3d,515334850,6520226612393792830
+0102c93c-bf0c-1ccc-6527-4926039a818a,2492164773,13729199630210623302
+1cd950d3-6117-6f21-9c3a-e420ef0b683c,2851630212,16769623579256994390
+8293511b-8e0c-a08c-c1e5-a0f386eac1ce,2088351927,2442355173044527022
+299de710-f52e-c029-2921-831cff9b7a8d,2255293487,18136888112862391864
+e08e76b5-2a0a-63a4-d019-16e2a5291324,3790455111,4912268401694325041
+5c62a16c-90fe-fd21-a50d-29610ee00ebc,4099539909,2987461544532857951
+62359add-e458-41b6-2186-b14225dd7085,4092847925,13388508120974159249
+da39913b-a995-cb66-4b36-760d9a304986,2291552313,3959961078051556518
+d8e663e4-8e3d-5273-151d-9f1a8dfbcf8e,113417014,15355807317363176690
+387b73cc-227f-c391-df08-60b6a167fbee,3769764645,9209461117438712842
+05f22e7e-7ef3-f405-c037-df6572735106,3732784203,2129755287916912809
+c006f620-a69a-268b-6cc5-8138a16651b3,3787221509,9028355623145365105
+a398c4dc-1cfe-e120-e603-bf808be33507,2414223590,12436699883958336650
+fbcf1be0-2198-f468-5ccc-89eaeaf6e16e,1605420939,15024041066923586318
+c4c88a06-af76-6cd3-c471-3ae277d04905,1232957130,14127014779029911185
+2ae89ae7-994f-32d8-2447-e9eb2203165d,648873016,4291838982264053735
+8295c1f4-0651-0f1f-16db-128858d0f0ad,735022201,208076992688599175
+a98ee39e-5461-1ae7-4f7f-550098dfbdb7,2330869036,1845348858016155949
+1ba02348-80a2-e34d-1106-be8b6d8d8af1,279603426,2299227995901974113
+c62450b6-c07a-a8d3-e096-1d54a8fe449d,2982191416,5841119414484376051
+b57ca443-d665-d40c-94e8-5b42f9cc263c,108936216,2471758288860813656
+3205ca4f-0826-6310-8097-492160f5d1cc,3726974650,1725910046245020347
+21243cec-beaa-3bca-b697-66eb8f39c6c7,1002193177,5932817095480698847
+cca8ab96-8fe0-3932-496c-4a7038c77808,1251849392,9216437273234064530
+ad77d46d-e913-635a-8124-f43cd40e7cb4,3474773947,2528386978495271316
+b1d4c90a-e247-01f7-1a45-60ecdc60e201,2939504688,4958947206254415581
+6be6c406-f5f9-bd86-dcc6-e4cec4e5338d,239674428,7474529712414768597
+beb26383-339f-cfe9-4af3-53694a5db8bf,1534019322,17777622952661992602
+23cf1b0f-96c3-5b3f-0f6a-4f0fcf980065,706906175,7394901889313978821
+1dca00ba-2b3e-996e-aa7f-65ecaa7ed703,1737044277,17848300833906318705
+89b12c5b-1ec9-8737-0477-f51d60074dac,1644656118,15792175250563825393
+65703dbe-ea28-8a15-397d-5097933ed4e0,2056805012,14468565919251858077
+6311998d-4f9e-d3a3-6a10-1033c13c3721,4000027594,9337861630810370638
+dcff3c2c-76ad-5d72-f3ca-02a089d14c83,2032373599,6468388969372620595
+79cbaeb8-06b1-eb78-08aa-786016361e72,2073058906,10321909000144403931
+f765f47a-86f7-fcc4-16ac-73a877857085,1963293474,13220945560577219174
+dbe48ed2-d8ab-8fc1-3f2d-4482eab5a17b,889358204,16253575173890155562
+34c2db11-7cad-7993-7f4d-258d38a5d06e,1380224719,753183257733581003
+8df821bd-76ce-acfa-c565-aec2a5062029,985120095,4004402451987174341
+d7e8b967-8aa7-67b0-d7f1-3bab9d6fc32e,565558719,13746761964423497839
+6f6466bb-be14-ff1a-8afb-a1336ce75033,1916024618,9866425972148576673
+13afc1e6-825e-1295-e348-47a1763ad117,427917104,7024506167850540328
+ed59cfc7-2633-0ff6-9f9a-5a5ff4c2bcdf,2414744703,2246072101792932902
+d0056c84-1ad8-698b-847d-bf7224aacdf7,2907300633,7430050558249448204
+f0d79bca-418f-c189-ba04-94e000fa852a,1857731357,7965606896175527317
+e31e0fe2-89dc-768c-655a-8b84998efe8b,1866344350,5709549276242717514
+a07ce13d-4230-593f-70e4-4ac0d7a92f7b,2959648428,11889184680768684815
+d1b9d09e-84c4-af93-3602-164325b66e42,1969104777,5594544658672850396
+cc96b010-52b9-de92-81f5-08f4c0c6f663,2644367095,10423050608012291148
+f271b1ce-9708-8a7c-6ba5-e33516ea7b1d,2178556823,14967910476416000142
+4cb7c224-4340-c30d-ff4d-e63c1ca74918,406153271,13555832604618209316
+5d8ed6f9-0ab0-d6af-970e-da65dde31597,4014739763,14197252683667900652
+d47e5100-8368-36d2-9283-c7d3fc512836,1084866608,5652861904435994056
+1ac0b4cf-71f0-53d9-b1bf-4d55af2b490f,754568164,18225736440467838646
+1a2eccd1-da93-3f7d-131a-e5a48a7a6fdb,3895672829,2562395738967321055
+2767ddbc-95f3-f585-5893-327d7e0fec90,1348189641,2754336145060740529
+bc344a39-7d90-e19f-d3f6-20a4ebf19c86,3588066022,11913061671292256194
+2090e56c-2c60-97c4-04ab-f460cd4c34e9,2721742029,9177029095540715912
+6f1dc031-4c12-5dab-e402-39c08a5b5071,1033471485,14550990317911596854
+4177c2a8-8bfe-dcae-2012-25e2eec91119,3776383930,10338457226640937085
+8ced87ed-6dd4-78d8-840c-fa834fc55810,1050590581,13502800472871996231
+c5c52262-aeda-8986-f3a5-8806d06ce066,1341426113,13907904837326123984
+b72e0af6-935b-67fe-6ef9-609e41fe3b83,1072876859,5171912777744388214
+1a196e73-843f-99c4-690d-2ce3dd01b63c,4005264135,8215725069722374762
+0866c349-e3ec-7502-5c2f-11a82b7979d5,3103737876,10482688886668503063
+df84205a-2b88-49a4-409a-f3294dfb046d,2820337065,9822467953404693280
+d940332f-e6e0-05c1-8616-01b19097dc4e,1249112657,11016876649050390727
+04e7ba27-054d-a379-b103-88df5c7113d9,4244169134,6866969748655784312
+82792f12-8dbf-e12d-c894-aa2ec64ac707,3705573614,13897281165778743558
+f49b0461-ac06-abec-facb-32a722309b0e,3801970592,8077438856913359205
+66688cef-7e92-054f-2dd5-bbaae4aae626,2740698448,10974020598024806382
+2e0d2277-de3c-8b38-2b1b-c5155458319d,149007227,17484289952773892238
+6c71c1d0-5890-5cfd-7e97-669b28be81de,1428587993,2855406544074917156
+9fa7faee-19a1-1a35-527a-3486a19564c2,3231138462,6499843215804921244
+d5bc70ac-18fc-3d2d-662b-d69e67bcb4ce,3624295671,14225801964384229810
+427c8d68-5264-85b0-a038-02762ddae936,1219847557,1002083583592370877
+dc5a0fb0-a625-f598-5e2c-532f40718989,1686117243,5001297308530313593
+66773800-6374-7253-c591-752ccb6a1d13,1875301887,18055058686892678834
+6e39a6b5-f6a6-eafc-21d0-38d9ff57f23b,140296780,9908142235317007953
+70ea0398-5d19-25cd-16cc-27f1b58fa2a3,2964552122,7050377487815301272
+757dc13c-c01e-69b8-8d14-7ec6eef95ad0,3181488057,5767496707050654909
+1659600a-121f-a0b4-f1ea-45edddb62e1a,4159669404,9045320824940652216
+5a10b520-402c-8714-d672-92aa110ea52b,2853656763,11110297406333615742
+5916c216-47d2-32db-d666-cd1d9c323c1a,2931135369,4087496499675371989
+fb1e38a9-e373-e4ce-f7b4-ae34de07d596,2254562311,2253995019097299005
+47270a35-bf41-fc0f-a2c5-45bdeed1c9fb,4261120648,980903647312562876
+8cd5f96a-fd4b-5c3f-c3d0-9969d8052f24,1022069582,5173542214844765625
+578bff31-6ab5-e13c-c7ce-0dd797991202,3612751621,15533325679149271723
+14a160b2-52f4-7029-d34e-b6691e8fe49e,1845225631,780837206449599867
+e3d11ca0-a58e-300e-b9a0-81140da557bc,2155849522,16160702195791789680
+3920acc1-3652-b7a9-4e1e-b7f82a4766ab,1139604814,425452995131282314
+9246b4f1-7280-adf9-25b3-f59596130668,2355052964,15874207826037680737
+46f937b3-2537-d104-84a0-d09743c9a738,4019130971,8894297262947791277
+d33766a3-2f94-80ea-fdca-3798cc54ecf9,696645878,6822854910481183211
+358531f2-e84e-fc65-57ed-ce1994b61bc9,1909471016,13332693142744322708
+3d758931-1c47-84d4-4aa2-a517cb4d9a41,3822844763,2818887516961309096
+7612421d-2910-8343-a076-b0e9ba253d3e,1936208829,3770529382685877506
+382f315a-61f6-3f1f-7346-74c90911141b,874323151,4280071650595052853
+1b40984b-7ac7-f42b-9fa4-d6de09a2c5d0,419153779,14812818053350370942
+81afb7da-1989-e6f0-483c-778167688e25,3137083078,16786001443851853482
+3e4bb159-f319-1c2f-ad6e-c04f4b32a100,510902849,1125650515457939440
+2824ccd9-5a51-eeb0-98a8-20b9b0e30b4c,2189345510,11740703430555469181
+41e11ddc-b30d-7301-3c78-363ac9659fd1,86045836,5135461091948061540
+241fcc94-562e-92ca-15bd-32b4ad9b7ea8,2245768049,17493117071951442773
+0fb7e196-59f0-8dd3-b2b6-2b0f4379cf0e,3238801293,15221950460772971918
+0793453e-58a5-7367-702a-b4bb8dc13ce8,1201809674,278625742697212714
+c67f853e-8fc5-fa46-79c1-0634d066bd4a,139320714,17094145869435411907
+54fa9036-b8ff-d365-1718-dbea3a874019,1187372070,14889123301554638783
+9ba716b3-0e66-f598-5d0b-aabe7f881998,2915037067,1349956894027640347
+17ee648c-cd90-ad36-b275-c5d48815c422,2709211923,10674053674449425752
+b7a48b6e-0c73-450b-43da-54912e6c2e68,221671740,16616623394585553255
+925bb9dd-2752-1f10-873e-ea297307f2b5,323001684,8881499800075495112
+2325c443-6885-5f03-cb3c-c7db84de46eb,1087738259,5872905828488925577
+a32be7e5-44b8-cec7-fb4f-208a17a5dfbb,2483067180,12382193090599517196
+e3f39a8c-cbab-b9cf-7865-edfac19219d3,1897683414,9352571613258247113
+51c1576b-800f-5eb9-d310-fa868d78fce7,1304582686,13771324522634042859
+8b9b1ac1-0e34-4da6-cd97-1887330f48e7,4063293110,6079982947071703168
+8cdf9915-2b14-deb8-03b3-484e9effd289,1619421678,7015845907050755753
+49812c15-1167-ebdd-6c94-76052f2fe08e,2131685192,1973499939295857560
+c9683e6d-e115-de1b-45b7-c0421e57a2af,3660946544,16051412953068152762
+bcdeac4c-b53c-1cab-c946-365630bb6dc0,2000583787,8098432948956567507
+50abb300-f61a-d427-15b1-c71420aac8e1,3140936119,14421160551032368295
+be48e1d7-81df-7f1d-7fb6-537fe350888e,3165751354,7261325872947521712
+85287cfc-eb50-03ed-dcac-dd9db1fae276,3750801335,11883248355934259639
+3d27bb09-99df-5301-d04f-edb252e370b8,3260883316,12388891906950814837
+7afd033a-3828-0186-8b7d-af8d0e0bac4c,155392695,4141377394857418232
+821dde9b-a763-0b44-a34a-bbb12b574e9f,800516526,7287506909196404412
+66478412-fe18-7069-4acf-b0c723b20e65,3521496894,15932030020549632162
+4ad3dc67-ad4c-e192-e321-7fd0727ae287,3940941217,7574657502351474357
+30e7221e-8691-b504-cdfd-76068f94b793,2050406301,6864954992002247225
+994965bb-acaa-3e27-a8b8-a0f882407edf,4177972962,14455982773914232059
+cb2fdb16-a591-d943-9760-eb5f104598a1,2971871921,4785761259361539141
+b5ca61ed-d252-2081-f5a1-1d07b15179e5,3333810898,1992318941717378429
+00a7a2c2-2582-699a-0853-44a6c01fa28a,45624582,11301034239549728361
+46428e12-f28f-c9ce-7e3e-3f1b239971a5,4129941114,3163068132044057185
+14c38e3b-144d-e332-d5b6-56740c6070fe,1415884378,2418609042997118352
+58cbd427-7dbe-6358-3366-48f36b964add,1312407450,9178875254678051665
+99476fd3-e00a-0738-07ab-e1f39d53268d,3007554460,8956738583888239082
+b7426671-22d8-9d01-1c17-4dade5d86d5b,377745916,1379757111689247845
+e87f6484-9439-f9ea-fd43-b8601cba1707,2166974292,16075754292683455164
+456c13da-4727-24c9-62d4-0fe33c73ce4f,1825195957,9065315352083249716
+1cd736e1-291a-7ea9-1b12-b1d274f6c64e,3895238713,16684291206779841195
+5a4d3af6-08f7-1242-ebe8-29b216e1e77f,2947929701,6217050084063265962
+f5cc0c95-3a8c-d0d5-c40b-6ecd8f7544d4,3637086140,4044411036250691638
+9b9557f2-a5fc-8493-ad5a-ea8a5cfedbca,4009416398,16008680928909328048
+9ed9ce8f-b835-2e21-12d1-84f61dcbd312,2959405918,530564284860042842
+df02de12-20ac-1405-e462-a3f1ce9735f3,2513964959,13085469359966211053
+f270e69e-ff7b-d92f-d421-9efae62d404b,482114646,10264094241038053891
+cb2301d4-a3d1-43e0-1088-b12358da27bc,1044704928,7915193360316755042
+22b775e9-bdbc-ce53-4415-46732ec60227,2198438606,17052691646297163470
+18c57c45-cb6b-9c6b-0854-88c39397de75,683088444,4505603553118022487
+c3dc8943-d9bd-b727-06cc-39ee5fecc58d,1520936143,16091104264433997676
+4ba8cac0-4592-b1a4-58b5-aaa58aa817b7,2059989051,12508534008213257394
+3b47da3b-bfbb-2858-c11f-cb55935a167d,4228256279,13321815049616522817
+7562fc0c-35db-f890-b81e-cfb75e8cb8f9,1947676679,421482276407557026
+7106dc90-57cd-9a2a-1404-498efdf3855d,2387985733,8989755845725917507
+755eed07-24b2-9398-d4ea-61a4341faa48,2413484334,2548312443558962286
+9f6ddca8-6481-b5a9-b1cd-35f20578f630,3759105216,3906704552986662769
+38917c5d-13b5-74b2-5856-e8a58708255e,3282719449,4374292338613723365
+6e72bcb6-de5d-d184-4056-a6c344def5b8,1482437588,6342111917221009769
+6136d561-77d6-c22b-e8b2-65b5e8c5cf11,43818597,2809575679668211703
+c55d1862-67b1-7cb5-0fbb-ba384cd17436,1642216091,11097370002496174853
+cd46bd5b-5536-ff21-9c2b-9bff8955f48d,588193876,2486762231460533231
+67ff2e73-ad48-a842-044e-5c4d12836e81,1005517725,4765436116702324770
+d776888d-ec17-331a-6197-35bf6ac1976a,2553485975,18191396870893796422
+9b208851-8bd3-63e1-6c00-c34221fbcc10,1327857821,7403960056349269332
+3110d035-ee01-1c86-7820-435914bfc137,2254502699,6485956488047431469
+40515165-3135-163f-13e0-85906370cfd2,205101143,12740604515668751807
+03d5c69a-baa5-13cb-5253-f18d44124486,3307632062,5084710180920952153
+f648d738-829b-84a4-f00f-55ff8d1811fc,907130176,3069371412991127933
+919d55eb-3e82-eeed-af0c-be784581006d,561213588,1199214598366535846
+02d7b748-0e06-2b5e-5757-53c703b7e09d,1145437270,15123665539738472586
+a7c2e99f-8fcf-c4d4-7538-ac8ad625bf7a,1295800771,8261367520079166450
+9e60503a-5c14-d41d-002d-75be69fb4450,1614809573,1956650159123657366
+744b91cf-713c-8b35-54fa-729fb87e69e7,771425780,8061395782341780578
+83ddb802-0baf-1ef0-2ad0-19f51b3b4cb7,1302984599,18235567782068502486
+07108c53-60eb-9a4a-9fc2-3bf5187e2dad,781701653,3314765362252518572
+e472e6c4-00de-1872-e47c-fd3f9dd47667,853709392,11126627230598974723
+5c93e547-5524-bec8-5bb5-989f3ce2ab2a,2401722496,6418700844548623739
+b5dac5d9-19ef-ae0c-c548-067fdceb7bed,701062731,11621792805736868818
+669e9a4d-ca42-8f67-9971-6ce492a7e3f7,65606689,15018798480666906962
+67844923-9459-cae8-a93b-d394e7c091e9,2715959231,18109819501100893331
+0fd7a44b-ddb3-2f4a-e9d8-88619c27982d,1532677604,14631687519631830326
+8b7093c6-49c4-ed91-81e3-c6512537b5a0,447227633,13494987742873541239
+62d84c9a-825e-e6af-9f47-30da53145a67,4195645790,2370323658866807949
+cba86862-9a85-9386-c88e-b3fdbcfd0cf6,3234452177,1487108247915863543
+b2e23332-54f6-f4a8-b8d3-b5480deafb21,1054880176,4764132150735832081
+3cc3b1aa-1dcf-faee-fe20-5f88eb2c1a21,2944495138,17052715925055512182
+496a8195-e882-b59e-c6bd-e92d0da8bd63,2345205815,16395665450008711308
+1dab16df-ef1d-ac96-7f80-9f2ce95c875f,3847490469,11980915934022120205
+aa326ee6-86e9-628a-4a5d-a5961291c15c,2575774964,13002557918906165903
+a4422718-d6d3-d8ed-f081-b071dac873e9,4121149618,8116391689738250963
+65ffdc2e-470b-f022-872a-54ed35ea606a,3702679684,7427399154498887445
+918b0e74-4712-67be-8c5f-f0387e208b41,4241533477,584723142178754357
+5877fcbe-e75a-62e9-fd54-5ae5c38aea32,637516235,7382038698349317864
+15d72278-9a99-fc95-40d3-0a3e265fe3eb,4091161464,14901126005860032957
+f7bf2254-d661-f157-fe45-49daebf15d93,121522966,13691831812466917200
+9499e636-80b2-c358-d6af-7e96b14b8a72,3567510124,1149204351431119502
+9835ffd5-9627-a44a-6fa9-ea3aea7b4cc4,2147047484,12240362865610920144
+86a90888-f716-edae-bf95-8c2ed3493b7f,1187766967,5266696360277289595
+d81ad3f5-4ae7-8a4b-b76b-d22c444cc6fe,3739250640,4183468693553194568
+2876fce3-514c-d92e-89cd-000c04414178,1750240153,14805811158638675974
+7a09f2e6-a524-ff41-2532-a2e0e57a916c,972524964,448758053914084473
+fa2ee026-9d2d-e1b0-5e65-76ad129c6e28,3577830785,15196715168652658579
+26657945-1030-f6f7-047a-3e245a23c174,2024022385,17953175267546750876
+3696ae85-c262-a402-5f8d-a09a4b316c4c,214548217,15723308691510180787
+fcc5ca9f-8a64-daea-12ae-530ef7460b3c,290299290,6131044480364026673
+609e2edd-ca29-0000-d9f5-0a885ab6d7aa,3475573861,15037989718955737541
+cd664b42-49fb-feff-b0a2-1d5ed3c54d2e,1387224105,1909741471925751626
+195563c2-4508-53ff-39d7-b765efd27a88,1210512817,6325120967214319868
+a9cfb216-fa5f-f891-54b2-3d640a1cb74f,642923983,14541642865420063560
+4a71c68e-4f1d-c2b8-0778-892c465e9fba,1910515421,11703513688451210985
+1d1c7f2e-f955-53cc-0a28-1eb9e9414398,1475111259,12982832855238942389
+8e4d419d-5074-9391-f39f-17c4e589a8a2,391442864,11925276313055680940
+d140e538-be8f-78a9-e59d-f3ff30d25ff0,2414872673,8517448471502598179
+afff5a7d-0d99-0388-a4c0-5a076d383192,4138643949,9665068224818591487
+293daa15-d4dc-14e3-1d42-bace839c93e3,472022795,16110069764559169539
+3d22e1db-38b0-02b4-593e-9ef7727591aa,600944940,3977766914012620294
+90b18035-dfe8-6652-a954-963e8181cbd8,865839143,8057985382852612933
+f9d0a2b0-a7ea-a8ec-4cd8-42ce98c55b17,532799523,10285918240672104113
+31c79efd-a71f-fa21-4a19-5842a9d02937,2772818281,2862245368617154017
+5c823e02-db56-fde3-b707-8c32ba50c214,1868214848,3314599144929021246
+0402e444-030f-c850-131e-4cd73a7f032e,35853161,12302588076502668522
+1d7275ee-2858-50b4-52ed-bd976f5acbd2,2502329862,888652596795849817
+dde96b31-d997-f56b-17ec-50bc255603ac,3225790102,16852072084994787604
+b544f65b-7ce9-faa3-b1b3-4e1febc48221,882339123,17337886923360996394
+d639d4e2-2402-2d77-6e21-31a57e3b708f,1992735672,12119973723734121239
+20731bd8-f8e9-ef4e-9d4e-28d8db0d5cb8,1971611509,4700094512559220553
+d303c77a-cc15-eb75-27f8-f71a00a8789f,2691774011,2857879181922543509
+fac7f6bd-1599-ee55-dc9a-ac77434c9eb4,2275563048,2856480845185591404
+c92233c9-3ca4-ad7c-718b-30c264b40117,3421173757,17771425591690666548
+10d8566f-e810-8cbf-182c-914a0100f9d2,3250812055,3164884155810162155
+09ff6c71-0d73-e437-368d-ce5b4e7331c4,2191484771,10104939714199596514
+58e0d4ce-79ce-797e-3c9e-2dab10ee354c,123780960,14572766010023361743
+c44f2258-e52a-16f9-7559-b2b2883d76c1,2173797884,13582827220072162174
+2d3fd40f-eb48-d411-ce77-a97b4330c27e,114127385,2061514438341421224
+3cada39f-5263-fb3b-a04c-c33cc3b67aae,2022220247,4644683903993059946
+094224dc-1051-b4a5-6688-c84a63beef31,1605091444,349146187812678752
+9bef9baa-6281-d239-a0d8-d9d1e2bbf127,2051765779,7606667457428068760
+b1b5b8bb-57a2-1f3b-c860-77918fcf67f0,1682187299,12297459471494640532
+fdd10d73-b79a-7fde-5011-17b1629c970a,15436265,9802339026702231026
+8c6f71ab-2e23-06f9-f76f-c05d90f42628,2974214089,14777086897320943054
+163fe256-b7a3-3454-127f-75f524fd8ae8,547625706,263215332825559333
+f7bf508d-b51d-4919-67b1-257f27fc0a82,3153698449,14884669087126933495
+5958d087-a749-fe45-bc7b-87c7c88e8142,1390688621,18405686461573252793
+3646e5d4-b25b-d0d5-2a65-28ac84fc3bd5,101988805,9335350993861383646
+332cc8d1-dc1d-0f5d-1757-958c74ec2e5e,1031626007,13495312872972697224
+e4aa2a27-af99-ff9c-d595-78660483e29e,2255895332,1491410591043790949
+97b71f0d-517a-eb47-34c6-6e40ea4299ab,2314791858,12080530295532469075
+bb1f510f-ce86-01c4-7d4b-bb1e52dfcf8d,1968910853,7477950193182077393
+3550895d-e8a7-b4e1-37e1-dc508d23abba,1795195029,10316595944210617214
+0bd59437-2b8f-f931-de31-8f5ebae48554,2974234304,139371515524265749
+23f45967-d5c4-b5e1-cca1-d83f60b5ed49,3322134981,9084830554233256053
+68903f2e-e1d8-161d-9565-1c94a4fe2cfa,3622646261,653719606806605133
+7be5a21e-80ea-c8e9-f172-8fb1a17122af,2511327653,17656384750027856428
+87f377a8-18e7-5c5a-cd97-b81085b54fd5,3214013490,2087844123318544436
+72a86301-5efe-ce2b-8618-03c21ca90d42,2489235778,12423770703216410497
+fbf9fe75-6771-661d-babe-4c7713700803,1998430153,5715725958574250888
+3c01dbab-3089-5518-9ce9-a4b2c173233b,3096477448,12908135203844888707
+67d1a92b-d312-61d6-5367-4c78b16e201f,4262117542,3597783539768666635
+40416cbb-f858-f12a-1408-80435b34c73c,1883787930,16150628580860829803
+638f7128-3f70-7bdf-9a75-844fe99587fb,1156691395,2117794616225757910
+418349e6-1416-497a-7293-c3b8935e644d,4132026205,13664111728867124883
+2d234183-0468-db57-50b4-cfff349b5e47,1229555228,992033515485025790
+19b2e60d-120f-02b7-4067-176354297f95,1432057598,10173962532524374596
+71deaccb-892f-21c1-fb23-107ee6309f3d,4019509116,15902028884587668993
+2d37b34e-3fdf-d192-ae6c-0bbcf3cbd1cf,2320003585,15323417338661763388
+242f7394-a195-d1a9-4583-aecafb2bd2b2,3494177198,13571981607497689515
+1d425cea-5929-7d21-b001-4e27ec9ca80f,2202204058,16301433068847954506
+e13c0ae5-9c98-06b7-e8a8-039d4878a795,2128266731,15263139751929805703
+0192bc3c-35fc-5554-467f-28c8c43a51f7,1005059243,4846256391696470689
+efb75a82-8308-d28b-2f86-c1f55f0caa63,4255956428,15178381823155030145
+894e7ee8-49d5-d5e5-37bf-be0628c1896f,649017319,1292238003628662113
+5f543faf-9f09-3927-9117-bb038877d57e,1146989156,3979067493981678758
+5f4a5eb4-c7b6-276e-fd41-1b1621136eac,1741315509,5615455427597259366
+4e428efb-4ab3-43b3-b661-939cb863a2d4,3832712443,1802139024871665494
+8878be05-9f90-897c-5fec-36df743c59fb,2428254920,3669827129972723660
+8094ec4c-e094-1c5a-2dc0-36f1e7049f0f,2641649180,13721607321582001954
+3362b828-cd63-c4ff-b21d-e298dc6adacc,454032338,8578744561559549478
+dfad2224-5d47-4389-7858-3b6eed4aeade,1487318455,2726985829390975533
+d8ee2622-ea03-de13-2f76-992e11e887ae,972193351,16002469898642408398
+ed6db3d9-828e-7610-9b2c-65ca3054bebc,3023560860,2843071745708836079
+b1e8f295-4984-3cb0-0865-7b54f5963075,2824199997,9484629466537621972
+c29d092a-fd45-f07f-8536-0ec243d9ffcf,2013040436,715842701870931368
+721818c6-04df-e660-9dd9-a94bb626b7da,3636230462,2820078959194139053
+ccbd7bf7-81b0-a2d5-9e25-e35a2af01502,1905340789,17262703876888626613
+a7cd7689-a52f-57c9-ac31-611d4c105d39,2700258116,9611758705480958499
+20d2efd2-ded6-fc53-ed2d-64aa6ac583c8,1711761660,9032177216663959696
+012e894f-50ba-30b5-1683-d8a9c403c4e6,3429417014,8777219863663671398
+c8fb9cd9-c603-78fb-615c-96dc98ebbecd,59810733,10391139113922215072
+75f3f1ca-8d76-42dc-1eae-6f62ca7d0d50,189637211,7493386518352411569
+c7244a94-e421-f283-8c6b-6031a55a1870,2911984520,12893215222680192685
+866458ad-752b-d380-a541-e5a8a0416b08,3014683644,3142215740367890159
+ed9c733c-510f-d0c0-75e8-c80ad1cacc2d,2452770060,1749216333971062525
+a16b6a4f-15d0-2a58-0ba2-24739f87d580,759233966,12024497878606170490
+d249d6c5-7bbf-0bd5-2d9c-1d3bbf7761ac,1047788665,6042594042357671190
+a4896387-476a-31b1-f65f-e4d57975d21f,2831987899,15128896970980494535
+a9bbf34d-f0a7-88d2-5a6d-fe2791499490,2579312479,8969804158815452530
+c4f13922-85e1-c20a-f1d6-091ee7086335,3183444951,1588018400679831791
+30a3e758-ff0b-5700-39b9-01064d34ceeb,3486809904,5223946866003736125
+720dd5c1-b6c5-4e84-9dd0-cd3b17799b54,1073426002,14166014485832090994
+58faa1b7-c6f6-9802-2c99-71b207aa0606,3875819798,10836998187559801613
+16d38d2e-e857-a465-8cbd-92edc9c4fea7,2695317528,10104953294901301717
+c02ef95f-2f9a-071b-2b18-cd748584527f,479026811,9959688247608377282
+36834777-2411-8c7d-505e-03d7c3ee2765,1622113150,4044989587117669965
+98ce2a26-3a2f-e4c3-2bae-b570c5e40054,1912437819,18150620355850992033
+f4082aec-f026-3658-a756-fcc2d2ee3167,2074255576,2802618227961292832
+f45fe489-4424-86d1-918a-2e4e40e6987f,914975598,4455404599627570389
+11c2fa06-d13a-071e-49be-e1b1118c24b9,381567418,5004218060155355319
+c61dc9d6-0ae9-1bb4-6e1d-367b252d1d0f,4228419057,10567705163304037778
+e7e86c5e-2302-c23c-cb1d-fd9689519057,661415211,13796046774833230375
+769f3a9d-fa88-a56b-52b8-3b717f1951bb,2197526363,10206581357504983547
+7ec243b8-5d80-6590-5c71-858297027f89,535377210,4396656061550515404
+c25dd020-1353-ec99-9fec-ddaf1655eb38,1714188450,3815559560795363819
+4ef0e33d-b681-3ef3-37c0-08a8781ea538,1481675576,16589635923866958396
+a84fa713-46f3-dcd7-ba15-8f928b61f714,532262975,2644714799754993223
+7b5f520f-af18-4203-ae43-6988ff1e343f,1431007557,14739779445297746612
+58a0e354-2584-4d9b-1836-604fa086729e,2415026296,10360520309243015829
+7d50d6d6-3acb-7daf-5479-9d64d299d176,634305777,14799387922343977332
+38011f7c-4050-b868-88ba-3817764af847,1048636895,9865281782154618774
+de5daee8-7c40-37b5-ae0f-940ba63686b7,3807319406,12742599926563213074
+d4f223c0-854c-2172-a2d1-f084b399960f,633307125,10978549006128501280
+c43ebbe5-26b5-cd9e-d859-4e86dfcdb5f8,2696399415,3232828883090333705
+e292425c-ce95-b840-9ac9-12b9fd4773cf,764450312,13041203487307489880
+ee28b89c-d3d3-6996-ae0b-ab90d5dffbcb,3518969259,14171809076185604076
+5df4d5ce-d817-9167-7ace-15bab95786ac,2228478961,17038327631389292320
+43096eeb-fd5c-e22d-b4be-a2872c60c384,1587529350,15449350241222480886
+b26e3d54-8049-acb7-33a9-6ec1269bcf1f,1227399087,10782768594235517253
+061a8ee0-860f-e966-fa03-c3930d56c548,108595009,16513640812849131477
+820454a6-47c3-886c-8b71-4ef0fe72755d,2914168706,11372054933282405651
+bde9b2ac-6c70-d007-c23f-81542a519265,1015452179,13932449369068352578
+97066d92-59fc-2331-d9fa-7745ac34a1db,3798786342,14468694210055902827
+7069beb6-e1f8-77f8-c84b-2dc9141f0259,2511970784,1599028017880136009
+5531729b-ce27-3f12-18a9-e03689e3e658,4287255208,17053147984509282279
+d81a7117-cab7-4937-5a4b-a66a610810b1,335896939,8274878954978272645
+270f840d-508e-009a-84f2-2e75d5f30783,3047933917,16737659479302464173
+2540c5ae-64fa-2956-ecd1-fec7ce494b68,286080497,18415786693521224881
+76d06062-f9d0-dfd9-567e-5d43da59d6b2,1354435792,13880491902249275526
+89ced899-c95a-d68d-1776-15bc611dcb32,1395756020,15856612735536782861
+16a7117f-ccc2-553b-f41d-13cccf81e17e,1209428766,5501915782683001963
+0403b102-1ed1-3903-0483-2bcf9fb57b48,2977043130,10394282806591264660
+5c883e30-8d0e-5bf0-9b0b-349bdaa7f80d,3403229429,8638758726176887702
+65d317fe-3bb2-6e5f-0548-fed8c435d37e,2377842102,5130646420358206330
+61e2df65-af95-6240-4548-c55897c640a0,3190514709,14992406867228826425
+d12b9e2b-7668-c18c-974d-36aca16b211c,821274520,10665776636944225892
+32b0de25-f6ba-43e5-84aa-b6c1fdf81e26,1815316555,8410363439069930993
+e79aecb5-3555-9d40-7abf-cfb0119d5428,836203026,2603190288626372514
+299b88da-1549-077f-6843-b63ef3acfee4,1456285658,16638027711192657373
+44511b04-84ba-ebaf-9ff8-63fe8d64cc72,2737373839,16675687582828324559
+574ccfb1-72d1-c789-397f-ed32c925abc6,2978561949,15658270273579156973
+cda2117e-2cf5-42b3-f752-a4f431b2145f,2756724385,1865006417673504395
+01c4c6f4-6427-f0e5-8f06-758a34262272,4285698833,16122597967422233256
+f105c046-68e6-ff83-89ab-d4b33cf774de,123757966,8541469361649422627
+542f6cca-44ea-5b72-ab77-9dc0b4103c6a,1731603278,14053232168060457115
+03c10fa0-b151-85fb-c515-42dee134d551,3104705493,11626070698268588767
+65c4372f-a714-521c-8aa4-b3a24ab288c9,2680931356,6761552454272297648
+8e11690a-0ef6-181c-c826-579c52198193,685013255,5491859623980529629
+e2e8b52a-8ab1-f0e7-b472-6c0ffd76e905,2085863860,16337679196468089054
+212da372-5ad1-5ded-2639-652c7855fd2d,2820374940,541063231362498535
+4a2e3c89-6512-1652-f116-3ba3428a1227,3606332264,12563188345520320696
+6a5925f4-fbce-b819-af43-e00f4869eb7c,3727288352,3959679308291114055
+e0b48733-ff5c-ea30-617d-21761d75de8b,1431505968,8906789422072043154
+96913e1a-5ed3-ef85-e1a8-fec03ae97cfd,2676496708,12407543432260819369
+795467e5-fd16-3f07-e7cd-f32d2a0239b9,2723454128,11430461009471828320
+5053744f-4e3f-d54f-c4dd-823204553204,3311085426,7635134272849786087
+bd0dcedf-f4e5-4e59-2e24-3d9279f9bf55,304089023,12665147846430929569
+56c48d30-c638-c933-e559-cd95e4eb1db9,2813512682,501262293638324484
+acab9f2e-1879-3498-204f-708374a8114d,1826797074,3767341823633939275
+db5eef1e-9e68-95b1-7bbc-94d36f785369,3269546206,2150111650939927230
+cd7d62cb-c38e-67ec-2b78-4a62587b9dab,2829321749,8646469274690033630
+5b4be785-fdbf-bcd9-a25e-a3ec2537afc2,3652156898,10738842834396794207
+b06aef79-aa5c-25f9-8c74-adc6a69ce91e,3964115845,7449193393877690558
+5dc3cb88-db6b-07ae-9202-cc0df9592008,2520999347,12769859803618448937
+900e8551-1c19-76c4-ad60-5385e0d730d3,2949142322,5876490208035033445
+6a25b632-cade-9f4f-69eb-b7548ab1c01e,2056657527,16290765258375184456
+790533db-206a-ec73-4d22-90f0b2a16b7e,155777718,13050572632363639802
+c1b03322-4e44-3b54-a97d-8e9b48ac311c,4044458750,12651236056338403294
+1cf65029-f63d-2371-50e9-eb953833b319,4219153908,10636186295057825518
+f35f12bf-71c4-16f0-5d95-cbc7609c2126,2268919132,5820612144520668463
+43c463b9-f073-bb7d-9ee3-903a76fc12ca,3148158041,8435521265876540642
+53cf83d7-ed41-6be8-e5f1-90fa2a308003,556708058,11647641646160588187
+c82a8a7c-21e1-3828-803b-cf391ddbbd63,4107151243,1266240945331233986
+daba7007-aac9-2948-dfa7-eeb13fb62fe4,2565133406,11547833906977664405
+0dd594ee-3f16-3052-342e-7e8f8934965b,79738722,14755849580419362212
+d5e1ab7e-47dd-297f-2a73-35d8c1d80107,3022089364,17948766198871874535
+d4a6bcae-6033-bb2b-0e76-1075612b7695,496744643,16910969953494329373
+b5335233-e2ff-4169-310d-f5319466a604,4004728796,7915832412222902955
+88fbc407-6432-4193-aa0c-4733ddd5d6e8,488954473,4873750673135352772
+36aa9dbd-3d54-7166-559a-f53b2b74e45e,1658340242,14463472663853987054
+14661e22-276f-62a6-b162-f6de72b1dd74,341586843,5269626868662566746
+523aeed1-a761-87c5-1de2-62c4026e5374,2350984676,13051247560783798088
+99496a8d-a647-a3fe-2d00-764503c8fc7f,798011444,13739394348516614843
+ff5243f4-b4bb-11ec-de52-609062cdc5c8,1447969746,10851223526945784859
+648ce892-0f32-03bb-0d77-30b49e9b4c23,82592766,2612666581621926788
+7556a729-9cbd-7f84-096d-3020dd9de8d1,2262367368,4646202313774777425
+cdf8d289-03e2-ec31-9e5e-8b04b71b4047,659767222,14789228063090667506
+cc69649d-58c3-7407-a78d-467de82cd2cc,4107580627,5320434122714364739
+a5aa7448-3d76-a960-5c7d-c81df7bdfe42,4088284342,11436561347453101285
+798bcfe4-5ac2-c612-071a-b2468b6b52c5,343931511,5286548172774758215
+eec26df4-e1a9-8d9b-9df3-c7d035b60efc,2038815134,15536329126123548638
+3d22184f-3927-34f6-f61f-1f0d9d56846e,3920620633,17226480264947888156
+fe88a5da-5529-cdaa-b4d7-ee41676fd32d,718293811,15802675690468770481
+5e0bbd70-03f8-95a4-6109-d2684d7a0731,2771164319,9414644923787897801
+b612673f-bf5b-52ee-cadb-35680a06c91c,4052356355,14462436645393489293
+63170d53-1527-ad06-8810-8407d60d9d7d,1095559114,6400017144950533947
+a5f0f963-98a9-3ece-40c4-5165a497ca85,446625445,5426855643933510045
+f38c9133-ef89-21bd-ab3d-0a3026e28fe7,205840653,17414200236724666159
+61509ee9-1915-d9ac-724b-96d5b8534cc5,2066775054,10345508220431438045
+1b485ed0-8b90-f4c9-c0c9-e79b5de90f09,2604284464,3962857443351439427
+54943ec7-3eec-5703-8c9d-491bb9f63fa1,3965145291,17307237448350489231
+5094415d-1b6b-3656-fc6c-4cb17cfacc22,678993749,9679803210919415178
+40ba8646-c470-fa53-2edc-31cdf4d5339d,3166076933,15706858313457406709
+e37d3f28-1dc6-88d5-7c77-6747dcef8a84,1289476027,7596264724694873894
+fa7f7679-64e8-7a0f-c2b4-ba1942da6e13,1972151991,17540927373223902191
+698531fb-88e2-ed1a-61e1-5d98550db860,821158626,8590210505898393503
+b5bce66e-9edf-416c-7226-2c4ddc0c3a8a,242663455,10219474058727133106
+b0c81d9d-0342-6ed8-b879-e0b4ea031c15,1893593467,5831401542827078857
+2124b002-b63a-9b56-6185-e0d263282324,193016335,8037595114978556461
+03d96d33-df44-2867-5b30-14275e2edeb1,1257791978,751591863141125958
+ab090abc-60b7-fd5f-4399-aa0fd630aa18,2938944051,5429121752647540421
+7c93cbec-70d2-8b7c-c61e-932ba200c56c,744078500,10581219365635118706
+a7a58cc7-ac4b-5ef7-ffe6-7c16bddc4453,2442169079,12426652819353116002
+d88590c9-ae88-2da7-1ad4-f5b3f862632c,2592413249,7864307356009288393
+e07bf493-5055-d148-fab0-6b10f8195cc9,1355446243,1958040228791766481
+09efe70b-6742-7c50-93e6-ed245e253446,2195588699,17611755948936471257
+0bd185bb-225d-7d3d-6650-dc1091e3d2e0,744836793,7748910112591963340
+0b93c5b4-33e4-05fc-5019-8f3267c720e0,232342584,17896660406420018887
+20e99274-ef49-d9fe-1e70-be7486e13ad5,683366872,11378568230864920567
+09cef247-1b0f-a121-7cbe-c60998935474,3337072497,8056866421492531045
+94541d0e-ba79-eba0-8632-672220c05462,2600181443,12828024827517953482
+72ce387f-f1af-83ad-393e-600f169d5b6f,2343569087,521127577785683768
+0a98ea38-a576-e03a-edc7-6ff1b38dcad5,3287740792,12673933938112650893
+e129c218-a182-e071-c908-1d77c56270f8,2624937880,8498259437077789026
+0c50fe73-78dd-1147-1145-bfbe87a16f54,1551821663,4329668105175307439
+a9953e8b-677b-c0ec-77a5-aaa4cef473ce,2370895923,4472405723721778092
+3657c557-672e-d524-ef78-bf61a9cb228b,2096181264,12402903837328427902
+0aa80fb6-689a-a4e2-2645-743a1135ec21,1930346087,14338233201374084711
+2f353e78-3347-93dd-7c1a-cf0f2d723146,328775879,6808875126222307720
+60cf2c30-fbba-c9de-ee7b-bbda4bdb8807,2935722392,15761577370099485394
+e9d6057e-ab03-a757-fc65-9f6067a9d496,322999221,12633298159772892775
+5f968e0a-565b-695c-f36e-8b4e16febe90,1033717059,15225593096134732585
+4690a570-0c83-a5ed-10cf-83a333cd3546,680429559,14041343587944952179
+32ff1572-00e6-22b2-a49a-a10bc909284c,3895383701,1473405542704603964
+9105f2d3-0c03-e9ab-2551-e8e754c34b4a,3818354686,13558187288024656322
+5f8b3616-1081-5b25-6329-61f3c2843818,461264503,2773359432779039839
+602e47f7-0e3d-573b-a890-34350489eb91,2963372422,13393817336144399999
+1fc1f869-ae6a-cbfb-6d70-1292cc46c1ca,2469378989,13031909261586439158
+0b60545b-9bca-6ca8-dab6-58b88deb12d1,2197113951,13743314405842155208
+2072838b-eb45-5815-cc17-905117425c8d,1111298063,11903239071103294158
+15d76f8a-b093-3800-68a9-fe77452d1ba0,4098333665,6284867992045047982
+5c283aa3-9297-aabf-fc57-57eea6f2a4f6,2542223970,4339648960106337244
+1993bc1a-08fc-fa94-78b5-7a36abdd5901,1060834098,7768535111266273379
+c13770e8-672d-aed8-92a3-ada5fe57557f,192671207,7072694240467506275
+9f117522-671f-1855-e42d-049ecf8801e2,3049576272,644447927225752015
+e27a1736-d213-abdf-a07e-7a0ec4a376df,385315229,1186745684344500676
+fd905b27-6e70-3a69-d045-ee798aa16ddf,4007955288,6521723074577627592
+b74a4319-c254-ef8d-5017-b46c985ee1a1,3626086202,11084576698108789511
+0215ebf7-df48-4a61-7385-6bb9329a6a56,2075068939,6822309005592939066
+6af65ffe-4f68-c911-bc6e-99f589b840e9,2680687335,3384078853424190030
+9d324639-9d0a-46a7-be27-86a9cd91c18b,2648987393,15413388787484224859
+1dd050d8-5ebe-f32b-5cca-b648c53ae690,287088050,6158579376678424669
+71a6fc26-7cf4-89e4-38c5-272581104c4d,2862803423,11351515790096022494
+cf60eec2-8367-d2b5-83e4-faafd4856236,1294630413,7361381613978924387
+6b713455-1a9b-bb5e-8fe6-276c81bbb8fc,2615729611,3949043454623529634
+24502ff7-780a-e573-56c1-4b051762e60c,2193301813,14647496875629746930
+a80a467a-3b15-2387-cc0c-f0e7fedb504e,2621161958,14650019028072650052
+774b41da-1bbf-8ba7-6668-34ff403fa470,39815790,3277920865341720892
+a3bc632d-7c08-e958-cbba-f14268fb55ec,3725372876,10631852451228869674
+6eecfba6-043e-3504-0e61-6adb11a2a12b,1626064033,17560044406114763604
+4f09fdc7-859b-5195-0afa-ab0d87b507af,3627399621,2452410453920619629
+e8141d95-e411-8162-6065-024dfc6e1a0c,3568651533,1903354070616900966
+76385685-c39b-099a-823f-7d2609433fa3,1010750306,2327798137771779891
+88ee04cb-2ff2-ee55-3f80-77056d1fabe6,932640988,12245354515025879466
+b5a4b415-0a4a-308d-c368-97b9a49a80ef,1036853057,7391845733046739206
+2d720a87-5fcc-aab8-2f31-8b5a3937e027,879033332,12750761349106630050
+5293434d-8813-325d-bc33-fae61d2694a3,1058601628,15438533036678290713
+5fc1bdef-68db-52a7-84d7-f654292f0de3,1867674021,8047958857574806107
+c13646e9-c39c-8f2d-bbba-544e1eb8505b,4222564473,13449336511274244095
+e71f5128-2b2b-0f4e-cde5-8286d9329340,3176106407,12169525135813158507
+c4ed7cdb-9157-7543-17ba-54ed5305a3f5,886525234,4527095073044221702
+c04c9208-b1ff-2907-0a85-910b24fbb3df,3475728794,17056006143056672205
+1f2551b9-eea9-5c4f-0157-8052f7b903e7,621638337,903797396014848186
+5c744b8b-55ac-5791-d342-6f0fad63e4dd,1511066067,5906060676149683337
+de02976e-3e5b-13a4-58e3-1cf3c83e694f,2265734736,2440287513982295096
+73f66bdb-a593-24d8-7d8a-a758749a67b4,2839112608,7959419207206336791
+0a91e2ca-ff03-03f8-7104-92de4e941f84,2458988410,15855196038146347049
+c8610cae-2a2a-55a0-1264-787e3413ad92,349165976,15519549768062231605
+33a90921-ab82-9d09-711b-594b8f12f348,1831039909,3104326880592003032
+3541ad3c-8f76-07ee-af03-16366c0852fb,3336706611,2196540050473946620
+e8ce37cd-cf7d-3a61-ff42-e45a25b6ff72,2776470460,6483096593147533523
+3d4d2097-9b17-d3fd-872d-10f6d873ba8f,1337714381,12151309812738726474
+85c6d73e-94f3-950e-dcb4-8c1b0ab3b77d,2840700109,15563350051625904861
+750e0559-7b55-f7d6-a49b-0e2151705574,2853159441,10439657491997523280
+f2e6ef74-95c9-a452-25a9-77a0ed318b8c,3628307344,14730939422314126475
+7ae6aed4-cb75-f8b4-65a9-b4b57acc681c,3143907019,719115979161125254
+bd2c9324-6afe-0325-4ebd-5d2e0ae0c716,4218822172,11533935039083277235
+a56541b5-e067-511f-7e52-a4943424107d,964004907,2757447813216650523
+d34c843f-2620-9887-a795-a490cc789bf0,1660733787,1101033072140727124
+c9cb47a8-c83e-17ee-769a-b418cb3c6e43,355684963,1270868487215918344
+5d24427a-a0de-44a6-b3a4-3c7e4d8c5772,2489062625,11726917086645628957
+9bbfce21-70e9-5e0b-74f5-9c932fd5a9f5,3481781655,7356171960096406997
+45e010d3-04f9-49be-5292-f6f5dd167ab2,169599334,10567032457961939058
+2bd677d9-840b-1378-c70e-6c6944625638,1145986235,5619248949292437232
+c3d7164e-893c-eae8-2aa7-db0e4183faa3,66257924,14090672831430815819
+ff6e9af4-82a0-87b8-02ec-5dc25e449551,2731986002,1607941393980046530
+5f6e3dfd-a5a1-8ad5-612d-0a2dfaafbb4a,3175913120,8287607356832540351
+5cf6f36f-8a9e-b40b-1ae9-204bbe5d3b75,4226560794,3477361147156987534
+8b147059-1d59-4df5-7b91-1cad89a14679,1035033832,9960545288640321901
+f877dd87-effd-5334-6341-c44ec0b58be3,435376966,11619133399463593498
+26713a65-f0cc-cd38-f49a-d61865fe9ca4,4041249570,6191279626640465264
+fd71536c-43ef-08e1-14dd-3d0858771781,3153109371,5985130360622065770
+74b41ed9-35cf-d5cc-d037-42c4120f9686,3776425139,4758165132052004096
+77dc3644-18f3-fe09-d568-539d8ecdcd77,2364507133,11706869946935112376
+c231c2bf-66a2-7a66-5a38-988d2804e579,8609392,310283372339544979
+1e2f69cc-41ce-b910-164a-724b31cc056d,1912949167,3533404634083743568
+ed5722e7-e83b-3db4-5777-ee916b276a95,819406608,7928436642534827148
+7bc38fd6-7790-c947-8fc0-8a3d2b03d056,3255491396,15365639059808663651
+50559946-4ce0-bcfb-b1ae-8d9534e34dea,2074607828,18407531224672183502
+30257af3-89a2-99f6-0564-31082a1ced00,463456573,11203862506403202594
+3c5b2d89-05f6-5760-1f5a-81fa9161b19c,1736964751,7525626176326770862
+e64e35a0-53f1-b743-0561-cd3f0706dfda,1506756959,8994890798587955735
+22956697-0524-55f0-915c-fd14c8be417f,73970315,15507782928836163591
+c981af11-a597-b8f5-d8ed-71ea7ddff805,837122326,2628430337674809598
+46d96644-4ee9-34ac-7b33-55a8547973c9,3044555002,14537035812489965893
+8b6a601c-4f8f-c5fe-0636-8dc42f1d71ac,3923423986,16587293283045447247
+4f0bf449-a2c9-d5d2-2a9f-0377945c8cd3,701705161,16338539172957417130
+fd18f61a-d88f-be21-6410-c76d0b1ef428,3700163727,6758624354620022863
+44e1d37d-792a-ff27-6fff-fbf5cdd35891,535665667,14139538122850015952
+73069cd4-1db1-9539-61b6-60ae1ec71932,2453761781,6647076179702142115
+0aeacc3b-8165-2ee0-bea5-0793c7829487,3333851818,13361199128087272148
+689c8890-4751-c981-e9fc-b6a73f25819a,3618772305,1978456865017147917
+8e973dd9-9240-9a5d-bbe0-f1b1aba1aa4b,3990305612,17083737142828862881
+e730e953-4eaa-03dc-afc2-0af5fc49a0f4,2233994657,9161039732529208633
+a1db75c8-2244-ea2c-c5ac-d475f35be6ff,2101847331,1301803571524414758
+794b4460-b6db-428a-5b8d-f863e2571e0c,3921303536,4220893641900282578
+0bae4f3e-849c-6bae-e3ef-72ab1b245e99,3143450016,16135335017297910377
+9c792bff-ebbf-3d25-7c31-86a1ea68f4ef,365218594,17869941733824200425
+70699499-c86f-7fc4-cecc-3757d7e8eb7e,3362741914,9865938164951472091
+569970ce-ccf3-e6cb-cffc-399be94354ea,3995066636,10290026481736387021
+453f1c37-ea75-f6bc-725c-01736464a109,4135116918,4547429036529618492
+877dacbf-d961-a45d-ce8f-1ff4f1a6b5b6,1624956840,15838298149960516120
+0f780d7b-75b2-baaa-9d98-d45ff46694c3,561699812,11528225180288565766
+ae3c996c-372f-cd19-fd08-5aff92983446,3004413797,5827402902603685829
+34646421-5bc8-88b9-07b9-f49eee9216f3,3063403549,13059842316855730639
+6109ad80-7338-c646-08e3-36b36b029760,3986801730,11422637645262444860
+877602e7-13e2-f8b9-5428-0ce4e75f917d,2748611977,16719045778374931275
+fb5df3c6-3184-6c46-51b2-43d8f11ced7f,109479246,10917416303992145318
+473693b5-0269-3f70-3bbf-bb36e5d2e9e2,4150245079,12047949448770400066
+d58247e2-d831-9e04-a802-d2d4f8bbf3b6,964966920,2238598335581006929
+73da0ce5-96a6-33e1-65c0-af13c7456542,3668091159,9633648881515549097
+66d9cf9e-6c02-785c-6f08-ccab219fcb4d,2305920367,2772958362887402320
+a83c86bf-1428-c5b5-6a3d-e3b5d3af484b,456069125,16816132799998031868
+45d97972-28a6-d999-3e55-ecbc5e2e306e,1515202585,11011997944479121903
+4f5e2a3f-7560-c2f0-2e30-db23ca38d4a9,1139969528,8799426319301883970
+163283fd-8e0c-bde3-4a07-ac7268282f0f,4248092604,16336872763391688757
+9bac5fc7-cd5a-6d52-1633-ed3434d2e984,2683192117,9946212048660736019
+b93fb22f-f30e-a430-1621-998b06a36c95,3249330808,2872401710499304136
+76269ab9-0b39-b66c-477c-a22ccc2d3909,460572042,11049278835700926243
+65e8b377-8786-1338-deca-45de457e2652,46462972,11369703162440439513
+e40b56b0-712e-31fa-4a8a-aec75bf3e87c,4163234755,9533763755102581561
+c2c76939-bc2c-cfd0-f457-747a5d9dbf7e,1531208333,1150418171753054858
+8f1d18de-b64a-46e2-dc0e-d96cbe252523,4071181870,17555945796516012969
+c9082ebd-08d6-bf4e-b838-951ffd20aa12,1017571225,9601259758567731506
+3bbe1913-da01-4f6c-5494-b1b4fbfd9aaa,2664870610,16299406216239687055
+20995c86-5def-7ef6-fea5-ae6f0c085476,638382895,8125775158895726154
+714ee2cb-05bc-5df7-8e17-bf552f129fec,1908474228,836786416242439309
+38964a32-cf24-97e7-085d-7278325804f4,252575327,14789875185276846422
+1db38cc8-bcc4-963c-e083-7677b1f714ea,331182698,14518526587586544816
+71688fa0-b7b7-5237-4d4b-f72ec6ec4f80,3446561578,6009640226355751666
+9d0502a6-c74e-e60f-4f6a-6c47e9f5fcff,1329855312,10525474115927693749
+e0dbcbf3-0055-a8af-4b74-e4794e172465,3280032303,4302877515782409117
+51e0c922-da27-d89a-6a22-ce2f477cb51a,4204465459,3834235933682374172
+0402e435-db9c-86f1-bc99-23213f900f60,3449984782,17040616053112935627
+de7aa1ea-0c57-1cd0-eb1b-e9a0ab2d2bf0,1670852109,2627319622476376358
+21c15d7f-c012-1c92-44e2-d45c425daa89,1090958605,12300598077029133406
+829ed59e-1771-d41e-b987-79d06933dc57,2874115483,14575122609492642116
+81765c67-d3e9-6c2a-bd56-c2b0716a48ed,3615564609,645278222812594643
+4e7b0a07-10b4-b476-c32b-c571e241986b,4072463104,7807601521405646841
+6e9e6a12-c1fb-7bf0-2dd3-33ff420dc495,2236431358,9185101517067685828
+d71ca493-f65a-6608-35dc-0c31001b1a81,2232333080,16672206552467063874
+ffd807f5-8c73-305e-e730-f64efb0fe451,1735408012,14599852836381175486
+11ca53a5-9ebf-4e6f-8ab3-3afaaa030cde,4254215041,5277279294913966931
+9388c3f7-1aca-5be9-a547-870e7d33e427,3198176980,14335103991695621032
+0b19b2ef-06e1-7e2d-cfb9-a8e6aa8a4779,1816511947,16316357232451187536
+483d57ad-39b9-9165-1264-6f2268198d49,3405455908,8119302478537192807
+fe2a04c3-18fe-233a-21c0-cac883e306fd,666890895,5694892255027237413
+800bdbf7-af4d-4dee-427d-1338133319cd,1929587388,17247652663531094837
+f811f265-7b06-25c3-dd53-441d9e8a62d2,1381643379,9515197709735191369
+14325e6c-b86f-dd16-7902-3d3094ab546d,3625026445,18332618748864004237
+54534fbf-1c5a-0b68-b0ba-3680771afe38,3644970718,3724113746740272675
+c3caa433-5615-026d-f112-09a5f8849926,3866724220,11740233740737939709
+c50ae67e-9593-c210-5a56-53778a4fb2ef,1489840882,14481499454105367364
+d751eff0-f275-5201-b74b-cff59b6bb5e7,2954265190,11935639139266723364
+141e5fd6-147f-b4ad-f023-583e0150227c,3673314357,3073862684764438007
+3e966cb2-fef0-11f1-4dd1-aa213c8d4757,3003578629,12142643971513214836
+51884ee8-fe65-ebbf-a896-b6ca3ae35e18,3112338217,17908475149512057009
+6bb1e310-9e9f-32f1-65b5-f261deba884c,3283765697,8246572658389952848
+a71ec2a4-dc3d-410e-7a8e-3b240d3b9ddd,3595787202,13576926924644438297
+50719c67-0f72-0aee-f8be-eb5796defb3e,168947321,13366204001065489109
+d6b16299-0407-dc5b-5543-df4da8c0f15d,1023163082,13961613890174477900
+cf485d70-d6c4-c77c-3838-f78bf7e0db38,1045803352,3888112359336062722
+09a0318e-9e2b-01fd-8cc2-7d952441a9d5,1239088457,14006006509022212109
+9faff265-1dde-cf75-6c57-98e00c911224,574495705,10758136640407553841
+634dbb23-df48-38c6-92b5-3699c87ce346,3094452758,18302187378216477974
+021a12bb-c3b6-b957-583b-b889fda15e47,3271090357,6137461682575588554
+8cfddfd7-8ff1-92df-585b-28f244fa60b6,2473024759,2957754904860496548
+56040c72-fa42-af23-b9ee-0e74092a76f8,1859842784,4955973178200900303
+8c5ba936-e4be-df34-1b31-bd84f7f7ce56,487680871,4074974553266873830
+3b48a654-1c80-b20b-4a29-4d8d098d4cda,3920919917,11287904042131870327
+c915d807-a8d5-344d-6378-194ce690fb85,679971401,12771633959981143511
+26a7ceb9-bb64-d960-50dc-013bf0b9561c,744363261,1748830152271800871
+680cec00-e8fe-bfb0-3515-24763f098213,1621801038,201742850851761022
+f729d155-aa36-a321-f1c4-241de6b7d113,2280320490,4949949022913052417
+56977f29-9238-4af4-306c-242c3ba2e147,2550731789,16233081150750696249
+94ac43ac-4d4f-3ce6-07a6-1de1b9c9f393,3405738932,7932737096172298078
+2f1661d4-151a-f802-5fa0-c8197875ffc9,4271444534,15886908991246036257
+b394dbc0-d426-eb58-6a92-ee3aa12edacb,1351071494,14711200948173934730
+7d4f4fe7-dd58-4b9e-4b96-59dd212188ac,1492329021,10774135268969878471
+83d047fb-da13-4373-27b5-c29477f8eb31,940746678,11179725287349578631
+2dd9165d-20d7-1aa1-c7b4-039bcf484a1e,168176953,14825474943476838361
+f600fdc5-7775-92e7-414e-d9c9059ce079,474772070,513920097829209075
+e9ea1da3-09ff-a642-1db1-1208944fbe84,1530364574,14601345841636413844
+38a71e0c-86da-4ddc-9240-fd8f6e879661,3439085653,7809230082331389455
+f3ad7cab-df09-1760-da72-1ed6bfff4dcd,3900645804,134964352498472180
+52a2c1b9-e1a3-dff1-9e70-873291f22d51,2244149407,8216100784106272105
+eeab4b8f-d036-1969-5c7d-416abc09b6c1,3507103168,6209539098092875073
+ec538199-5026-3725-4ffc-7251e16c8c3a,4034527823,7476512676581711588
+f179d4ee-10ee-9ad8-44c9-f7e69a38641b,3618846974,4680965914954673084
+3060294e-07ac-bce9-0982-48bb8a57069e,2932389053,14453364665976880426
+3a2bcbee-77a4-e898-2110-a4b35076b194,2808781451,3235334931416344797
+ef933b96-9f88-c4f7-5e26-081ed2503326,1500791135,12324668974773149924
+817d3e2e-9f95-5788-08c0-63e6a293769a,3678824717,3772711912995896076
+baae1bf3-df89-ee47-f17e-4fb199d2ccb9,1988149584,4404026276418741659
+438415bc-b94b-31e1-b76b-3a37be31787c,2480714378,10687997469155773505
+b89ebfb6-30af-6222-4050-77ac218b8408,986400573,3110333758796781491
+f1fc2d0c-0f7f-3e62-7326-2a548b05c66b,2363637394,17197104631840631706
+1d553d0d-6900-b250-c98d-924c8a8d1d88,2969341695,4385312448929218616
+99cf7e7f-8b06-0d8d-5337-bfb6141b397b,1539223332,620295525614201554
+d0607d18-41c6-97eb-019a-5bceab9ae0b3,2908577920,7507230089882990518
+de674bdf-d36f-5bcd-2f0d-5497a2c423ed,661224775,7838048080663437494
+e10541d9-79dd-2688-2e6f-0e5fefdd646c,467091561,17894002032102493867
+47e0c54a-d4f8-9cd7-711b-b3ec189e1377,1040040103,4609681477700753671
+4be3a62f-9c58-7992-9642-c6c0cd4dde4f,2908570725,11577675283509190747
+9ed80295-4b75-f03e-4be6-934437ef69db,3615333683,5858401660576858641
+69a8738f-d70c-8aa4-dcf4-79b81a896ea0,1065984849,8581508458894390538
+3a21ff01-56cc-1187-b7e0-8832e2bbcdcf,4066051602,7374567944884266909
+f72917c2-f122-1726-a6e6-cbad038e79b0,3713557323,13706436970501821950
+342ccfa9-86d7-704f-d359-726307755823,3569406105,1520384305139677658
+b9f63903-27a6-b6fd-7453-7616f9e2dbbc,880699882,6669819773629958562
+d2a5642f-7462-bfd5-3b19-57a9273c2e2d,3766209419,11184554379045910830
+84535930-f2ed-0b6d-ac16-e1fdb08404d9,604221680,18225923507531065299
+181c0e60-5078-4209-f6ef-ffb3c8788546,1936333493,7434460004136498434
+18851ad7-fd60-f942-ae02-1c840068a698,319512916,10549577904817284929
+270a2e14-a946-b2d3-2615-2f25edb1bea3,2810905467,13056871512023391626
+17a54bb3-3b7f-6717-dbd0-05beab680a48,2416314469,17148777388187893972
+ee6c3215-bba2-66b6-7879-6f9c066b3246,1017993122,3216656201635603562
+fc622a7b-ced2-f493-8599-821f8d247bea,2801588085,10421576127073438801
+5eebf1d3-0e44-ccff-9aa9-19573475f7a0,3750166794,4136013795722415991
+939c884b-b43f-02fd-5fcc-f64af11c7298,2965074354,5258362726696422087
+0384c185-3893-0202-454c-bcafc992b512,998661732,10533541276012006673
+5879b159-c57a-f093-75f1-570e84797489,821084842,8157008774748112716
+f75200eb-3688-a327-25f0-027d73df0f50,1001456674,9600582688601723769
+91cd8970-d001-4a37-cebd-a7a790591001,3334852801,4141749242089102191
+3abbf684-b254-784e-5b9a-70d8a0230e8c,1653508405,8095557660547103397
+d41283f2-5977-af6b-ea65-f682e1a332ab,3867287628,8918087541317917122
+6b1a0825-80b8-94d4-cfc1-452977e16ec5,2241475640,15235370099112066898
+b1f03106-ca3f-3197-8876-04530cd221d2,3541203860,9387852757109634815
+d810779f-ca37-20c2-56ed-e5fe2255ee91,4212284533,17882420623401022160
+9d2ad80b-30c0-9d4c-ce5e-5bf16a8deefa,943245629,13409235157237294327
+9a8f62fc-3edf-7a1b-d693-ee38dfcaebf7,3543667140,791591266963558807
+24ea5aff-2c0b-5325-67a0-a47da0dbbd94,2788119944,8048453433673110176
+f37365c8-fe97-0e60-8463-ddb4534518be,2841979103,9002935865202634499
+bd822b33-15c4-84a4-256d-b55d6b142b11,1883450925,13701838411955111751
+832f0ae3-e879-9166-2135-855013bea3c2,1351837764,3818942734473756113
+157d37cd-c2ca-30c3-cfa3-969fe06f43bc,4170469151,6538657946238543004
+499d186e-372c-c5e5-69ce-3cda6db895f8,2529277701,8510238833355544638
+ff998b73-a725-7d87-fae3-8f9960ebbb69,291005497,13467264714578447720
+6d6bf4cc-bfb7-cbf7-be9b-99e549bc8ce6,827755749,14417220171114724502
+720432e2-5da2-3834-9bff-8d8857d73608,4161025400,16055876898757478216
+0b664aab-ea21-3570-5c65-48e84d207f96,370633723,9949437928647655754
+9121a304-42cc-7737-82ef-cce63edcb62e,553004760,2460772735546234384
+2c836cff-57c3-00c2-7acf-6e63bb18e18c,833818010,1341099857239424306
+847c291b-9162-b8ae-555a-0a478e8f4fec,3173127097,7604638160278938389
+c8afb2f6-362c-d920-2d45-313903dc3e7e,2099726290,16589100346425845797
+95c2205f-889d-ecca-481c-79bc668a8f6b,3395970149,14092790081299198927
+ff4b871c-9415-310e-68f1-81c2b65dbf65,1436434295,18165049870927764179
+fc7f8919-39fa-05db-3801-1a0fc480effe,1246440597,11494220405415615414
+c092993e-29ac-5104-1166-ecbb0c6013b4,2563291742,13861741658186651842
+e08ce86f-ae7a-bfb4-beb4-e77a909aad32,1030777833,11230564981335652070
+135c43b8-adae-e84d-2121-492c9a80ffa2,197534342,7931036777260679475
+ce625a24-6000-7fc2-2599-7fadbd0a35be,108170847,15764171536968709975
+a3a68459-d750-62e5-b646-8488a968476a,1289270990,5796169543910658935
+f7a48328-b7e1-454e-7b3b-9351c0d6fb90,1919909918,15726606480581170751
+54e3c474-0fc8-b27d-e7eb-3fd1f8baf9ba,3946041579,10688474405072299553
+ae32c0a9-cf56-bab4-9ac6-4169cc041203,1404046133,8130535908101245346
+413e406c-54c5-cb87-7a40-450a63005358,3172169937,13320012560454054950
+d5cef88a-c05a-18fe-f976-6200f4ff3ee1,878826386,1991046167256800318
+eb71067b-3877-f82a-c660-9bf7e0326fcd,3812849426,16718173926234646666
+03121798-edb5-5bbe-5c8c-868a86f0a5c1,317515185,5235331605528317792
+824943fd-ed75-790d-c84c-25cb05dd4c9b,2022378022,11882913413568897375
+d374b907-f658-3daa-a4bc-ac8f87b779fe,603009207,5272391345953031183
+41d92a82-fbc9-7358-5110-bfb8ef81c2e7,2170806374,3911578273293887619
+25b9cb8d-d981-8676-6cad-61c975109b42,3728115216,3690950185757618750
+fb11836c-3885-658e-80cb-c2ce268c1c58,3627878979,10594944592179481233
+67fe18e5-216e-762a-12f7-3892e2564293,3948367346,5413867742890052072
+9fdcbb25-45a9-2247-77f1-26db99853ecc,2990541767,16417696775066930932
+4f2b09c1-52e5-e7f6-c265-c6c25d9c1971,3269671098,8508981780548990805
+efe43898-2ea3-d5a7-16b9-ab62360d0b2a,951632885,9058078762240314240
+4d86cdfd-eff8-ca3a-b84f-23acef842794,2985140170,12380556960712591245
+fe2c8286-3f8b-61b2-7dac-e2b45f11f11b,1634856460,2512655189067511732
+ff00b808-1288-1180-8eb8-654938ca303e,1963907746,8895628152507198409
+30701e70-414c-1817-dd3d-c5e15e30d91d,2608525903,12684915229454407438
+a361a15f-f761-5b3a-e23f-fe9715eaab8b,2871059492,11284548058859360212
+13397bfe-6d33-b33f-38ac-c7404cb17b2b,1833239334,3952247809713076617
+4db331f5-87ce-89a9-99e1-670da54e28b7,1019721065,4847266499548864128
+a28f43bb-8b85-913e-253d-86cd5261f9b3,3782782564,17209573875645698804
+465a038b-3f3b-ffb9-a08c-335e73da1b75,3172178138,9006111482580888471
+84dc0e46-72d2-ab31-b17c-44474658864a,188464963,16420049972759127287
+8a7753f2-9ac3-275a-3f2b-d4ef22b9c09c,2614594306,3884923561614425555
+5a817952-fa20-9dc1-8136-46e2440c7cb4,2285989902,15162641432842219193
+57f3b29a-1bb9-7e4f-6f57-b67717be662c,79065400,4734688742019941256
+76271d7d-e788-cd1a-3657-d91ed0990e6f,161323318,3895653367355345809
+5b40ace3-0843-95b7-af2d-0c298278bc5a,495981545,12052620273816138867
+7ba6ddec-65aa-1b79-a7d1-fb0ad285301f,2749626378,14979592333386794921
+52fbf4a5-c09d-2b0c-27c7-17a5d2915a4e,1300906405,13198029924731872142
+10f1ddee-f2ea-a465-9420-ea975471f40b,1677713146,3023343280019862483
+3cd054b0-1ad4-0f48-a2b9-7a2b6309ff11,240937695,10525012183675108986
+911979c1-7d72-adf1-2bcc-dfa0bf2601fb,106202716,4012096783369629515
+48dcbe36-95fc-48b4-9935-ac902c96181f,3077853035,2065877641570077974
+b1300d2e-b0fb-1898-f26b-f67c5bf0ca9a,2768090920,11309074949981714910
+b2e34225-c8e5-d6c1-490e-eebcf9324dc3,2029124152,12060974161576555754
+e453040e-0364-581d-bf85-d8b0060a5e26,3778546141,17560669847405833504
+0b3b48b7-49cd-eff9-9de0-7ca9ca0a29c2,1167413744,17086404765598601782
+45b8b1eb-991f-1a07-bb74-0b1ddf090f3e,79225783,5904116833105170637
+7a5d42c9-02f8-e947-c84e-468b235f9d4f,1996404141,6102383837735153378
+5b4a4f9b-f74e-0847-0ad9-588f66c1d740,4254885510,13639451142598067029
+e91e1fe8-af84-cf82-e6a4-43092f527ae2,1629787076,8820767138914270533
+6154c7c7-e617-f362-2c87-d0ee92ffaab2,2752462657,6855496651790220297
+27fef6cf-4886-7e10-2dd8-63ecca743c4d,3379401716,14560411536740373355
+7d8006a6-e4aa-546f-509c-f52a91e73922,3877323368,1212584708093008129
+072f2859-3de6-5720-df84-2fb17270100d,3870092960,9575877453343630036
+5db1b2a3-2fa0-f33c-62c1-a126b32c358a,3097952217,3549653367085195545
+60f1f767-4b46-8edb-b44e-33d240232716,3623085486,12260590718410818723
+d0c31f65-387c-4b66-eab6-41f11e41a863,3787854127,17867763762139354689
+b2cecdaf-af32-3ddb-7b77-f462c46a443d,3124413497,14017530587414632976
+85690740-1943-540c-2a16-5f4a1fe1dbb2,2372917775,18119688726968117005
+d7e84303-05cd-682f-d771-cda671a98464,4156102327,15414370418317088191
+f51de357-99ba-6017-1e39-e20f0a92e9bf,1942293915,11260206699673315142
+0bb84c5d-e689-1483-e5c6-f1fba08dc5f6,2352531003,8579946516360500806
+d8d398cb-88c6-dbf5-284c-c64afb3a00a4,772462761,6054343859349174442
+08133075-b39c-1983-eca1-b55a5f27a420,1457527152,5305755826411104924
+c12ec369-2553-40e8-b506-0576c164c5bc,428297106,15781805977033896496
+3719521a-5262-2a79-ed9e-68cb5c3f172b,4152536515,4495882440287794108
+14337e22-d80b-7735-2437-5b0af29a8d96,346179089,13225886761066419348
+b8dc2fed-5cce-8607-f9bf-1b5af4118d57,798967359,4614073097034882544
+5a7eaaaf-10fd-655d-6a82-d0dee22a7f35,2605742124,1488604770197553835
+43e26d85-4498-0c29-5a2c-248b8d7795b7,2561314755,11532398940097301528
+8205501b-0e3d-9bda-eedf-a78b60016fab,656975968,9901869640478550685
+405776aa-1cf0-bc3c-2a3f-0dcd4f27e258,3060806586,15595450967189565426
+7c78a877-5834-168c-78c9-81c0ed2e5263,127950894,3763962131534239129
+2a98a2d7-2333-d1f6-d43b-f8a78f3c26af,3460232030,6125917545400825018
+6b7f2f75-0f5b-5fe9-57d8-0b99614ab0cc,2802744363,3746378912071687133
+dbb163d4-c293-5690-438a-c0e1a80d8c98,2048732088,17253986163476284997
+36c9c078-15ed-d492-8a18-e80035ea6604,4164820631,3470182194698522118
+258d9e94-358b-6ca7-b43a-ecc1227ba28e,2765850780,12300489824124438314
+be1fa0b5-73cf-7848-e81c-e01461f46df0,3307335407,4221485600473803900
+687151df-f018-f612-bac2-2c71ff09fcc3,2800484725,7289639431089200221
+f4e30d78-d380-3658-f663-1ad1d3dc4f54,731375466,3996381294689720240
+c97f1bd7-18af-0f3e-5c47-9b6c690090da,3946584636,6744296140422933563
+03bc8bb9-13e2-be55-c4bf-929b802e2572,1449465101,15277596225401163901
+6da31886-0d5c-97d3-2533-cbcbf4abd099,2840804938,12594643050292805696
+6f7125f5-fcea-2419-7b4c-f5f95d3cd7ca,2984559708,4264090205879681355
+2d9f90cc-94ee-22db-ffa7-bf1c3eb884fb,2485350445,14576028312570858334
+7eb4f7b9-e33c-d589-c670-8f8623ba191d,2211689055,2455922468983225453
+803cf3db-17ba-85b0-64fa-94fac598b13d,2565892894,16667774905227471233
+3bc6cfa8-e389-69ef-dfb8-8da734693927,1936765156,4938261260531210440
+94d79077-3449-50ec-1d00-c972ecad5d8d,3290291250,16735963123272705026
+6de458e6-e847-1add-404e-ae6eabac746f,4175927937,17604216699084270314
+8be47d7a-bc92-3a54-8e69-6926d4c1d1e4,962030100,13976294104242062561
+35cf6bc4-3b4f-b6d6-5ee5-e06d5d8f5e09,4220297508,12716430079788110986
+12332073-65d4-27e9-2e9c-2aeab68bca65,2659587525,9761419328211747504
+e34ce992-27ca-d72f-1338-5d58428b9778,1189521470,17930035650570898045
+906f1367-36de-e912-5c7a-a6047cddc794,1918024321,532640746707819304
+470a90fc-09b4-f8f0-bd47-6267e55eaa60,1304229095,4894660464574301230
+42a9f19e-fda8-2a46-96e6-fdd26c4dcd0b,1194851045,18174610752387048144
+4525597f-b18d-81bb-af83-6ed579f7c392,3140021795,13929022087140130825
+5fa5e92a-73e0-212d-bde6-6b429bc9b743,718248340,18250007566743814946
+830c836c-e701-91e4-7160-17c9fef70680,2333699289,8976958128665512532
+bd7ff2f2-6167-4b6d-cf38-9fdb9e607f52,892943406,3673970617955216600
+afe5a3aa-b6c7-fb02-cc00-a5f5437ab887,3129006465,12121711149672652652
+ebe43b68-6ce9-210b-9a71-8e733538de64,532047571,6482976784072297963
+a33ef536-45d1-bb28-0c27-feae305df044,422973363,5615639893934848924
+d6e4acad-da89-ea8f-e467-9722ef390a9a,2221758964,1793880804131292317
+1e20e524-df2b-d35c-5856-237f92fad91e,1179489437,58198711876213612
+fda80e58-355f-7a55-4cc7-fcc57eb52abf,123046656,256758802340487077
+c10f2b0c-01e3-ed30-1c73-1fb67fa7ee42,3606038007,3580926180137131415
+fb4de415-3025-22d2-e9e0-ed1124b06474,1182533870,8148235859358951082
+e04fd0b4-9b20-40eb-8cc3-9ee6d6e294df,220151920,375064535951820157
+bd14faeb-1a72-e2af-a861-a4217170d923,589404807,11046676346605100213
+753efb3b-8fec-0096-536c-4fe7b0164838,2560050299,4372850986020110332
+6ba8c020-9088-3cad-0ea8-850e8733036d,3432145676,14540237400528462684
+16526300-e3ff-540c-b4ae-56d7b1f0dcfa,2504433540,1806700612203004994
+d61aa265-caf8-7b31-3c06-4562f4c3a058,1335608306,7728720026671167293
+93d5de59-33f5-1e28-c095-df2de110cecc,1166493377,3693397996976623408
+424ffb7c-f871-ebb9-2a82-97989eb35473,496534776,6357711729865095317
+fbd48df1-f406-6420-5e95-51f40d071e81,2387355205,7346498730683475952
+6a0708cb-9566-76a9-c0f3-4320f9ed4d10,2088827165,14145552244362229470
+ce6b8ea2-8ec4-8a81-6ab6-9bab3be19672,3025232432,12354265493613524672
+f4e76b7e-cfc9-601f-401f-3b8c9a3f0676,166724830,14555426346903803084
+4c06831a-0581-c817-5c9c-113835e6e5d1,3941477612,11984756186965256161
+67b94b8a-e861-cc00-3add-26b4a08076ca,1408065660,5120474307999351775
+9cd68ce6-0fd4-9033-9685-34c18be0ec9c,3743706636,12434243938455863646
+02d0905b-ce47-c885-16fd-7510a34cd70b,2156101235,12471892513492215648
+f749a732-e1dc-3ad7-a2f4-5ed1dd6cc4ee,4015849334,3575665520434359358
+193e6426-010f-e246-c419-25713d1f9a24,4179169204,1601784079143781792
+119d1d11-20ac-0d71-b90f-75dfae912d26,4273972295,12412451279302859537
+27d3fa4b-c412-44a0-ff54-877adc6a9397,2801653539,2257229933712306899
+c2a9e8be-e761-1496-1644-ea8166e3f2f1,3059723461,15917057167943216326
+6e99ad90-22d0-17e2-9a6e-85d75c2c6d34,757217189,5227035590166299528
+f2a2ae9e-d164-aafc-03e6-6090716e37ae,986136771,3503456671580889508
+444dbab9-b734-a887-2929-77f9d95c716b,1328045314,3201185118715895035
+c7da2cd1-6574-1a7c-048f-0d136d0f060e,10193081,11439474280673723327
+1c5d3685-e0e1-453a-b08e-9ee76e0011c2,531549379,12388436459581763943
+aacfd319-1712-dede-bc20-5618fa49444c,2504027976,14207381196350108132
+6c00c88d-4128-16d9-663c-3cf243878117,3446599003,8708411167343425310
+0c8dd5d3-6f05-c785-a745-7192d77fcaa5,1084741184,5102446122957937573
+725e8080-7cfd-9f74-f759-cdb36dc3f07a,464986529,2245595275519990382
+210e16c9-b7ff-d4cf-74a3-2883dc7237f9,1127428828,12273762580280317281
+b5978ea0-6de5-79df-d8ce-1d719ee68600,2389538744,3551444038559545831
+4b7a9d6a-470d-ffbf-dde0-06aeb9e2fefe,158380430,9330341725960482451
+aafd5331-39a1-483d-ba18-0aaaf485ca4a,3485551711,13441782645056834630
+8e0addd8-c149-40a0-157c-18bf3b65101a,2875761158,3734777505644698130
+8d382e30-63ed-d3ad-0410-a8d0bdd33b99,2836218674,3372806663845861774
+73eebcb0-5a6f-dddc-3437-989654808769,2750520195,474053008577376745
+fe2f3290-615c-e232-21fe-f36dd05eba90,3208127359,8028646326672174968
+10020eb0-3a3e-962e-f824-1ae8a5e04771,2639318018,10389788550852966994
+05f8640d-c89a-2014-fa53-302281319cfc,3564003380,6596967989755723653
+7b14a810-c859-b39a-8c0c-79ced60a9223,866029505,6650318747229476120
+e605036c-1ae2-02b6-1d02-de3768a80b36,2768651652,7618707030529428772
+2099e13a-4846-3c3a-0690-6d6c88d8b05f,988825228,8473520122017794041
+b8767971-d46b-4f14-780b-092570832a21,2395313033,4825673422824190921
+7c1eacac-7a7a-f091-2672-ad65a96bc630,1047388656,18114418098530296665
+66ec4fdc-67ac-e021-070d-135e59d218dd,3728448504,6236970547924941267
+10484d44-9b60-8b1b-de75-88692f7b70ea,1551974297,3058788551898651014
+d9d00a3c-700b-3aa3-f394-bb48a8be5f9f,2204306604,17085450399686960006
+7e60668e-9f85-75b1-bb82-dae5b3744d96,3827304173,3871967866484518905
+987e237b-6692-10cb-1693-0586d20715fe,820906038,2508566046146213197
+21cf25f7-f78b-dd53-a7a3-c778769e563a,4211337733,16166685633913083715
+31c261fa-4f26-be30-b34b-c6d310d0293b,2150481504,2816606072708608607
+4a592a35-330e-badc-f680-a4a4e35fb993,307878581,14718324071767878563
+2a602193-72c0-557d-0754-6bdff0de1a1f,1541391862,16078400209885931188
+a132e55f-946c-a67e-47df-6ddd540947bf,244095853,6212368779094755919
+fc42ed5e-20af-5aa7-3471-5657f53d34da,937788611,14378217574077134160
+91f81b04-2edb-cbdc-8799-838986fbe404,2780863461,18223126683314605524
+4cc40d91-e949-ba3d-205e-f7c9dee79818,439026612,8604007858818916174
+13bfe13b-5539-2d87-cf53-e7c715bc8604,2118048763,5112174102930921974
+c0fdc74f-f01a-8e56-310d-69b964a5fd63,3231155007,4477415721961915241
+a80d2393-c162-7a6a-9b49-075cd46a487b,3502166946,11803787239887648639
+89e26ef1-4a13-4f03-c2dc-8fd2ad87e0dd,2407155597,2653474456272588646
+ec1319cb-2e34-e123-42e3-22c5fefa0ad3,2581192016,12810909587013435380
+525536af-1d7a-a449-8015-8f5903e4925a,2649775880,9064157203186918732
+36ce4a88-12b4-111e-842d-541f6b92d72e,3378017999,773253070543295083
+e028864b-10be-ef24-494e-ef8494110a15,313509612,55787796998908520
+38e69bfd-afc6-5275-467f-9fabe1aba4d0,3678323640,13598319483771957531
+887e5c4a-fcea-5614-0d83-3b03c75c2e29,1446400589,8642589940878966880
+5fa50afb-4857-c2ec-ed30-18ed14962eaa,719665863,8106654192919386874
+ddd3bb18-db3f-09b4-7649-654a8ca44c65,3038796652,10025920116493100562
+4bf24f94-1165-be71-9a7e-31634b084d23,123418671,14942506292592800288
+73f18bb9-fdec-4688-45f4-7d658ea53961,2806828180,14149080728634806624
+2fbe75e2-6b2e-1f34-8d50-759fd419ffbd,2149518653,10341390702494478294
+bf49af69-d1f1-c9b8-dd6f-2c370a6482a2,2546570257,1291808437877492221
+bc3ea1e7-858f-cde4-ada5-8b50ca2e5b27,1186302745,15685193246700418499
+c02a04fd-ec8a-45b5-c268-535da5278733,238360588,8690866762129215028
+1c14b406-851e-28a5-bc5d-3de28c13593d,26063227,1953185687520373041
+56e6790a-6213-5715-04b6-d3d7d37efc76,44244936,11215769950814796504
+f7d52166-1d49-e0e1-4dfb-d59d74ff24c9,1841287511,12778023122460983523
+286a9515-143d-4c36-ab05-59f59d6a8459,1246929035,16430879659351546962
+3478eab5-887b-f881-72e4-d1b0abc360d0,428956368,7811975230593886544
+1ac2d647-62b5-af96-af96-1bfb9a86dbea,1152735637,10518280337844298330
+316078ed-e005-ad73-f134-a5ac22fcf24e,644876346,861250134402509487
+7b6f8106-9812-b479-3878-f7dd9727f611,1597282345,5214866762129838029
+d885e439-f945-1c4b-8028-dba05301aec1,3207920723,17408450229366564751
+9525fff5-3bbb-8cf5-e016-dcf793dce9d4,3588989599,3152482522364777300
+3618136c-31c3-255a-80f8-2a064f58b9dc,1971984868,2644480876317871549
+e489fe13-b6de-dcee-9545-83d50ea7ea1b,2725704413,17807753439670364088
+986524e0-eed3-6937-a87e-6bb0b1e07060,243517633,17693866090579685601
+5e352805-d353-6407-d9be-e0453c596038,3547454963,3317955600837284314
+cfc2324b-78bf-96c3-db09-aac823c59807,1963058414,2994684344576020850
+00d2a456-fb8a-99f3-e9ec-db5c95f20fa0,937869069,10156203220681438242
+4fa4b625-a226-12c8-9c8b-d8f251509f83,3235182944,14290778423911490098
+88171319-c8de-e43d-932a-3d49a9ced20c,514800503,12179818517077694638
+9e3e5db1-9ccf-62a8-ae52-2151f33edb58,725063890,10958858069952293443
+11d1e075-bcf1-94b9-33c3-ecfc4e41707c,3272769315,193234922529379206
+e00e850a-fb3f-1e23-a770-efd298e8b5b3,2718900080,2259547758979165041
+972d693b-4d65-1869-7b89-cfae4a454f64,1320370550,16578107220130986400
+298fdff5-1c9d-0dbb-2380-02bb5f937757,1931239549,13761830891086498912
+e9a5771b-3b98-b8b2-7594-f95528f3359b,851609678,14533769211992083332
+c8977233-65d8-8509-0c73-0a1cd6584713,787508186,12384924657635974423
+e38f76ee-2787-2c53-da2c-279914b73027,2215783951,11988282464283028905
+e1c266d4-a920-df7c-abbd-de115d253743,2461400212,4747081358896041805
+840d185f-89dd-c7af-607d-e12122ab4db2,1519768972,4141294904541378480
+313c094c-fbc3-7b72-e502-d64e94877131,149901668,2866512570316949220
+492aa30a-5315-49be-29b5-3484fb3ed6ab,1609966827,17637418659646326111
+f8abfacc-6026-d692-49bf-c3d38830ce8f,1541706643,6451548976519184990
+cd1b8157-9ce2-c94c-f005-6624fda4215d,1154072798,3037890787252571349
+033f1e85-8ffc-b2f8-623d-97fc1c692628,2474258770,14752867260980608779
+2e6ef502-53a2-94d2-4154-5c3ed64f19d5,774920495,3224475030209990753
+6c0ec1cf-c364-1927-2269-629f28f9f5a1,4039782573,2485073194542628685
+ed90bee2-5425-4250-1981-f691a3d21dbd,2442510893,7993580393466469021
+b66faf35-7914-d97e-39ca-7785a858dadd,3136317233,6162227376146919582
+4e521590-b5f0-5f24-4929-418f8278b1d3,1243017785,11003320981228749509
+c36a7e10-f492-84d0-26db-02afb7bff166,1846941511,3310103132100074290
+1afc2362-b926-b24e-fa6b-28c2c7571c57,3315190509,3731658032287229269
+e273d049-da88-72e2-e5db-bf05a21f1d33,3257814506,8659998804864545844
+b3f846ab-7913-b096-b14c-1f66fb258b61,2352388018,10244458474961901102
+6410903e-6cb1-8b4f-f41a-60732df0f2ee,3838289349,4832135494858795193
+a7cdab29-f42a-eec8-174a-273a168c61a2,2047937187,12585083873538936837
+8d330247-ace3-405c-d21b-bf0be920846e,1572343701,6661537137017774030
+d3be6a40-5f18-4e22-9493-1e13ba4a6fa5,417396049,16552391352857071747
+04249eb0-e01e-1f53-efb0-2c5643f6d22b,4801396,9624472774589702333
+d64c3ced-39f7-a24c-d6be-57abe13cbfa3,3943912583,11595626069985771035
+6d1ffb9c-f006-b150-f2ff-efd83a95a751,3422563563,12319595463803824388
+341e55cb-f289-c14b-de50-49db6d458220,12881526,14600230716837645292
+8f815284-b796-6f49-4fb5-ff3fc515c079,3873471688,3541995939985020545
+89ee5f83-0cd3-911a-da7c-839ba8142f02,3901497263,6913319442813366872
+da938025-6e92-4005-ba99-cbe78535ab72,2477721363,17066517476254092043
+d0c19840-cc5b-1edc-a131-04877b89beb6,4128747873,12362901938050839560
+01035925-07b2-89f7-5e0c-3cb58e68fab6,808542697,7136064408640656186
+b1ae342b-c90e-50e9-9b03-3a1c15e9feec,653813311,4982361386759094526
+91c6a9eb-bfa2-4e59-06d7-1f6b9dba79d9,583845936,6388769051313054966
+3d6b3357-46b8-8cfe-90b8-1eb0a5117216,585545587,12155017839281000258
+cb6eae16-b2ef-9674-6f83-b8ead77716e4,2091520641,3985247350033204523
+71c0199b-3b7a-5ace-3fb8-2289cf006572,33472028,14327534065081192542
+95b2650a-cf16-7a96-1d97-0b431e6e9554,2908143549,5104497133715500941
+04036501-cb67-0fd0-48e3-e21adc412fc3,2327033419,6399490320474410935
+604401e4-c1c4-fd27-b094-a20312736b0b,1291497272,17081800333077224479
+fa64bd4d-4678-f731-baa9-62a2e7effaab,370955210,1895812325223579195
+4d44c5aa-32f0-e5af-b0ef-e291b64e31da,3955395314,6015314726727822600
+26853733-8fa3-8c2e-c6bf-b8762f1f1bd6,2101209337,17463254432236007113
+79770941-8205-2a65-6754-2f87b58df04f,1934180550,17138961723219780277
+c8e3d253-7a95-ffa1-c31f-70c53c64e6d0,1897511999,10480940938209151525
+de2d915c-6e08-2bf5-000d-7b5847d92f0d,1829637186,14528482859783425235
+f1434443-8e8f-d97d-e8c2-2736fc6677ba,1931057912,14163116663866506274
+fed6b226-db9e-bb34-cc01-0def9f3ed46a,2549835340,14137633560420224595
+e055c389-d837-9395-72b8-dd9e10bc88b3,3604738853,17727394454729827509
+14fa6cb5-69af-f14f-73f3-6a06c9cddb42,1568380812,4080899142293256604
+7bedaa45-a142-841e-1a85-205003b70460,2126627545,5222896751635040805
+956749d2-f2c4-9f64-103a-5dbbd89ae492,18321437,14434489775805315055
+98844b75-4e98-fa5d-63c7-5bc8e25d0859,1864262270,10034840781310311927
+34939f53-6c67-5dde-47ad-7a1a325d9923,581681664,14366963138015417259
+997f6481-d9b0-0c7d-bf34-90c47cd5a8ac,2020635108,1028397088592018681
+5ce88ad5-c8e3-bfd9-6849-228fd08c9e9a,3036193088,5818257012140334828
+c939c43e-3938-a046-d08c-031fc3a3600d,1580495345,262162166342158641
+5f8e30cc-f88c-effc-325f-7aca4479ebc8,3249184512,5546986756314073325
+e512b8f7-fd81-538f-db05-eaf7252dbe92,3048320683,12118104519180643188
+8a59646c-ebeb-2aa9-b1ef-bd702fa2560c,3087968623,10738492260402398674
+bada626d-8de3-3e1a-97f2-d3b75e69f0fc,3609702976,14538280536429728090
+8049acf5-869e-a921-2939-4bc0d2057700,3301048461,18236977241892240097
+85c6245c-67dc-e9ab-2f8b-4aa128376aa6,2798339780,7435413973303365592
+1799e7d8-98bb-bbf7-73f6-f9c2a9fffe5c,2486107323,5818271372656056856
+d8d95eb4-6e79-9690-73f1-d0e47c69b006,1704859345,11994689471690041347
+63a35306-a45e-3b84-bfa6-ca2eb401edc7,1201011900,9284893549610118601
+da02aec5-7581-a677-e0c8-c42f93d125f4,1529899758,533665428771053597
+eae07189-8933-943a-da2e-55ece8e89263,3902467167,17072075773337871592
+1de3374a-8635-82e4-22db-1525d894ea0b,2915209908,2501113350228121646
+7c9433cf-3366-a071-a631-f29ce9f3e735,3569259923,2033536278637909795
+167ab3bd-1772-097c-fee8-207a1747c86e,2371883257,8611360795644681733
+eb1809ab-b758-3d4d-be82-0a209526d0ad,3645168207,6378983437745001185
+2803d1e3-ad7a-115c-830a-bab091dfc712,2881319507,12338070566572185770
+dfd29c45-8549-abaf-da05-a70134bd97ba,3524975533,13655900860310533580
+458acd91-a1d1-5a9a-3a31-b432515c4148,520089229,5840195111516400004
+9be0c230-bdaa-e4a6-3508-a56b58fabbaa,433595331,540138137760418467
+2a29130a-169f-fee9-431c-a287892f71fe,1977245557,15713462352726241388
+0f661034-c30d-dccf-1bfd-f8b98e85e9ab,1147826950,2163426537505425421
+d548b190-492f-cafc-4ab1-9fc5c5062b89,3533425974,6706542746227821084
+fa4ac128-717c-5bfe-2d51-bf1bd341155e,2826034674,4669507743588632365
+ff22cf9c-b57f-cb48-e6d9-58fe4d4ec4cc,2278751071,13667765332412728240
+262965db-950b-fb03-67b6-478a8e07828e,539584940,2126213842448932269
+1d4ece58-c63a-cc9f-ab52-e17bcf35dce8,252949578,6435799072311449623
+c28226a7-81f4-8e97-c49d-c6e980cf202f,2690803880,1472690595297431609
+416d872b-ef13-042e-f528-5157e90432c2,3403884120,14554490908291284709
+98d984ab-1a93-d601-78ba-9d05a5569389,1989212445,9077344522714731855
+ad4a8137-86bf-5d8a-3f9c-73d85e648aaa,3670221166,18122573224904469301
+2ee8387f-7c4f-2892-6ef6-0520e00bf8a5,3270833112,14959985607153266284
+d8fb9916-6574-0439-4b8d-1a6998cbc7d6,2160484686,15072426408564668892
+202d104e-a35a-0c03-c274-b80e04552059,2534426726,5666157856870288458
+6847917d-ab48-29e3-02cc-ced6a6e72339,2131195569,16436891832923842983
+f186aa01-f71e-6b81-bb87-31535f8786b3,1767697105,11726423458994634706
+286245c9-b0db-2c44-2eb3-b3fc2cdd1bd7,3289191737,8511534837170206571
+c15759c8-bcf9-2836-2663-8205e04f53ae,707496981,12222173190815622503
+3a173241-5cf8-bf50-2512-a1ccf627cbad,1897109314,5020884741055212555
+d496c4d8-5a48-2ae4-e345-96c37cf66e1d,208559935,10612782898174472429
+a584572f-e284-4357-0f07-b1dc9a7dcc09,1000120720,1566524767596445339
+bb1a3990-fb84-1be3-fef4-46d0961ab4b4,4148774318,13824170265165255100
+728bc698-d6d2-8c15-5766-6a741f58a54a,3836357033,1415710510045292431
+0913af85-bc78-2fa5-3dcf-4e452b630446,180689422,2696762273818616557
+87055418-0f04-0f2f-6875-1a3cdbc15e59,5680559,16744273411831545205
+3ae5ea33-591e-d736-40b4-c36967e9daa7,3976383418,2227295904076342029
+cf7e9d8b-0738-a5f1-a7c5-87676a4204d1,1893599731,17020767677308282907
+87c5b55f-e6ab-5565-f62d-6797803e2f78,768614655,4743994240881156479
+8b586b1f-852c-5c10-d29f-9f8752a75b44,2414117645,3932620131026274029
+d44f564d-70d9-58dd-fe1b-a9b5bd711918,3582738647,4580348766675978306
+95dc7ecf-af48-820e-24a1-e5c153dcacbf,75434596,2520372109516262200
+82f24255-ab9f-994f-0933-d0dc48dd93c2,953767904,2228602362359909754
+c3d63b2b-5b46-e0d9-d6a7-2f25d54f3851,1926024356,6429556238516174403
+11b5003e-6c6c-2d44-d619-d7960bc126fb,2074975271,18175737054201025707
+c5084a6b-63f4-2310-dc05-be1f55fe70aa,841862662,559519748131700651
+a98639d5-9a61-81d1-5112-a138375d0dce,4124956536,10195630315050328681
+5dc0365d-5320-dc7f-be49-908092aae3c5,2477186074,14417117309720790411
+8c2b5923-60c4-eb53-4b40-97c4dfbe300d,2724235180,5256516597275087523
+2a6466f4-3cc1-f9b3-aa5b-c2c21f639e5b,1932184860,15524929746822922556
+b9973dbb-4b09-a6ef-2b45-857ab56c1244,2592899852,14121932465966732169
+b65ea5c3-2008-951b-aea1-ef6c4a057317,4219916472,12463851471499442220
+bda7c8b3-83dc-60a9-6c41-d9855e128811,4083566464,1954896253069433741
+2a76bda1-445d-1a34-3c32-b9bdc9b842ee,2410152814,11967700111483059580
+b0e2eefb-9262-a3c7-3120-b9f242ad4905,1632675727,13984268268913070532
+e8c7869c-c8bb-3b36-e0d1-6e3df0b4cea3,2103197510,5429893088438378325
+313cd74a-c22b-c2c0-a87f-d2420005b492,3061499772,8081553101575239926
+03b85b43-3394-8da6-3dfd-0fcb2be8be14,1098407073,14541986655669256623
+93a07dac-abb4-1d05-58c0-f7595ae5b9f5,3849382182,3189408835490172322
+1d765c69-30b4-863d-c7bc-bea68ec0ee52,3447970561,10986074562338035092
+2aace718-fc55-a704-b959-a6039b797b5f,800617733,9992174937286191068
+88cc6567-c188-85e4-a40c-becd04b38b6d,3259897665,10709484243680321889
+3a0f9508-f4bd-3461-2ef6-1bd27234fa90,2111714597,3997589344707734301
+6571adeb-6d7a-cbce-56a2-24883fde5678,1314117414,11826719883969833523
+74f8303b-2bfe-2ac0-f73e-3cb6e6e96ce0,3707757774,2431206131506363544
+9c078837-d6e1-363c-3441-1e37f060e3f3,579163042,2567041085945368012
+29456b25-d0f0-b718-1943-283c6b017428,2878070244,10617583680898355270
+7a194f06-303d-8f50-fefe-e447fad2a898,1091180850,3874867747167484162
+6864f7be-bf92-a7b7-c609-5a762c1128cc,2527682562,3209862493747610762
+c7de65e1-ce80-e770-3bf4-532391ce1969,2804547875,12229754157500565341
+6677064f-4fd4-4a94-a5af-55ebd4901062,3972317585,3339950545506836469
+ff6194ff-0b94-79ec-9564-b6020d893ca9,408369778,14919741915263430271
+1c5fc985-c92d-657e-3012-09a4969b5f2f,1809077841,18006793983882932988
+bcce6fdc-87f7-7698-1f8d-1d35bdd20485,773638540,974618571844959658
+006a2446-39d0-49f9-02b2-767601736120,953070860,642563181818361036
+617dd09d-990d-d1ef-8834-d82ae9870f5d,1715932218,3721862088087444296
+0ded1213-8c59-497c-0af8-43988ca4ca11,1382739168,8066868902419701372
+d2c38324-4708-7003-a36b-b8762d263b68,1235132722,16037467469755749408
+2d583f08-b7ba-6f7d-7e98-5e416d46a58d,2037991241,17246505838305493819
+1ea56a95-1a66-eaa0-1024-a2197e2412a5,2195588080,17296141410508754620
+5259172b-7edd-d0a8-b947-dbfbb25039d3,2482095869,8486361324052117352
+936f1a2f-d319-1937-b930-638043abd2fd,2884762018,321172155462048156
+cc4884d6-c1a8-d0b1-69e4-73e481ab84a7,3090927539,5167992360631084234
+7e458bb0-5512-bece-b076-70cfc0c3c596,2344818095,4694478735495884065
+30614bbe-30dc-07cf-f43e-e73054be1e0e,901381261,4075390917927065045
+49a6ed6c-e09b-4d52-fdb3-2c9b285879f2,2340071022,12190345972076215586
+84208a7f-35da-45c1-42e1-e276176d6361,1065402714,3326831894188952165
+aad3ef06-1788-311d-d7b5-748cbd6888cc,3994613066,14707785639308488068
+68629311-0955-1170-944f-209c34885a1c,607617569,16123477961475622592
+d25c748d-cb54-3e63-4c8f-fd40b24778de,2703321011,1606904705626843936
+14a95c3b-63c4-42f5-9ea6-96948609cb9d,2361932545,3369783576984839515
+0e702493-65b3-707a-41df-68b437b3393b,3787742176,15099767675722043437
+55e88b5f-6c40-880d-6eab-dd0397d3cd71,449883167,10713881902310284651
+c7337207-d0e5-aa15-4ad1-ec802411d0e2,1538166997,17796861963914741715
+51bf0275-3582-913a-f023-2c4276f0319f,3661883328,8292657680663650771
+82263270-2e22-bd40-3c77-e3d0e683e02e,1932821991,13240184815228462975
+2fd11ed4-31c2-1980-9a40-aed9505493f7,1171375530,15865617133391875590
+c372294e-c7d6-12f1-1a3d-e31a4a728b2a,1466673577,12760062928663851603
+45fdd61a-ec7b-9983-78a9-5a2c89c2eeeb,2804241902,1538705189258401743
+25c5d9f9-b501-aaf2-192a-b8c231a391bd,1447803435,3404678896450522866
+4e963133-dd48-b953-0560-17bc23625758,19956526,3194010269504165996
+d885a87f-d358-a41e-265c-86caeb9bea68,4088789397,16119829036259187078
+9c88025d-22df-4138-ecf7-c99c49e8527f,3814142814,9028430702327578325
+12c6b29a-6e22-a3be-1cd9-d4e681fe811b,34002523,17517785993636265174
+3afe16b7-55e5-26c4-491c-cd7e8d909d6d,2428416178,2452148818348461434
+d1839520-7977-6525-8cd3-c0ca638b2d0f,4009746208,9042401376679271667
+e60c80b0-e982-14df-1f23-17b06806c593,992697314,15366332177277007375
+150b656f-8235-0492-671a-c6b07a9986af,3862879579,14868957217980530998
+750481d4-5d08-3499-f94c-a255f4ffdea9,1572999653,10791848480737236283
+a517f244-ef1f-a153-3c3e-077ef0435a82,1888244395,3903714352029527726
+92cc7270-aa61-e30a-7aef-a9e08c7fae64,1789209114,9744789121275320837
+9f7df6cc-dd93-0c86-8f88-099d47bafdd2,503409976,11026345530938589360
+97658eae-1cc2-2b88-2e2a-351580191a49,2167097322,6391565232311535200
+e3a9e092-da1c-f145-4e11-ea4b0b461107,2368140000,17591128061774296726
+62f161e2-0969-1b01-00eb-eab8837ce217,2211930575,8613575735218471477
+34955e7b-096d-54cb-6c51-fbe8efab1ae2,4205075582,6494938105976445610
+9b8fa4fa-2928-8aff-69fd-39c52ac3e5e0,3335412168,11479352229183973230
+bdf77af5-3f08-ec99-31c6-90f7032ed0e8,2814575217,2555798245815486319
+502c43e3-7bdc-3adf-30cf-d82c9bbae507,1029495593,4008411172979204977
+32bb02ef-9695-ef22-56e8-ba178e4c7823,885155193,14861815749283235553
+a65ec0ca-614b-e0ae-60db-fecfa4c05163,977162331,7613834422024690972
+22795c76-3561-e310-3313-f8ea2afeaf99,1628262704,12417929116533607674
+39be61ff-bd3c-43fa-a1a3-1689ff85e104,773741207,8277951338149731610
+3822c70d-9ad1-665d-9244-97faa7ee0435,3818758651,1686617257508151562
+468f040c-992d-d519-3b5c-58b95a9e8e48,3857133197,7541485488035427746
+3a70cd8d-d7de-49fa-1851-4e84d563c7fa,3441551791,14148219152007711899
+ff72620d-02df-791c-49d6-531022ea918e,452670506,8435877717278061254
+27704a27-0426-5189-2655-6a3c7ce9ca9b,1991468183,2982897996678215400
+b469d42a-04f0-0814-76ac-cd47d888f05d,1600093868,66673536234691685
+5e2849c3-0de2-a197-1af7-8692abee1941,3362225753,711995031131388201
+ea322fa0-1de9-a829-64ac-d76e71a2eceb,3857154213,11143882641134642206
+54177137-0864-73a8-3e6b-796ead14ea45,2641749203,7344792577889833581
+57878e72-90ce-e199-3172-236c8f1c9947,2095721640,3275714050956241120
+3c0ff4ec-c8d4-7728-0ba5-3df884006d2a,642012296,12219135332150747769
+ba795cd2-545f-dc8c-c571-e7623d6b5e24,407057390,14769462154465868641
+c021b26f-7350-d940-d3d5-eb7df4717476,3985994947,12988303604756053859
+761203f2-236e-9daf-3ed5-4287b6e0b4f1,955656654,9583405754796312327
+49c87732-3027-b67e-296c-6ac15542069d,1925826562,14723666705727180407
+7b8e182b-03c8-1d0a-9ad7-c4940d861bca,477532781,18437351289482697834
+63001fc6-f3d1-df66-75b2-d2c8603def43,166135403,8751766581302502775
+62fe5c52-fbac-090f-b604-370b871f32ee,4177447004,12465079697095295361
+049748d5-737d-ee1e-addd-014c78442b65,1470634357,18039945318873177870
+176de2e4-006a-f7fc-18b0-cf7c6ae0b35c,2470239190,12644716783889166559
+12d5dd8b-f300-463b-3476-c17dfa695163,226133310,2352739810068277088
+63ddf7bc-3a16-f68e-05ea-dd062d41d8ad,751882489,7666008396725565444
+0c1ec25b-1bfc-e8ff-86e6-f4e61e577f6a,7930890,18280675523340270975
+870a03f2-54a6-042d-2e95-efbf92413f22,2412123658,6872707993294514010
+f0525fae-0d1a-b95f-ac3e-316bb4aa585c,1427373410,17461326106037926522
+04351bdf-2fde-45be-08ec-d4dd6e95f702,1705924681,14780937740445787717
+ddc85894-266e-6403-3a05-4d3feddbf16c,3643234065,614986468891269095
+24207626-3ccc-35fa-52e3-2a6c20c27de4,1848215325,8142104638323195523
+9652984a-c2d8-094e-2c0b-0d4aaf0328f9,3927983710,13621866874341638998
+f63c20a4-f166-b17e-d23b-323dcc4f15ec,4043189824,14854879251516635859
+1cb54c6d-beb1-565f-35ba-486c208f2724,293561876,11702527404848565717
+4cd095a3-67db-92b2-fcac-cfa82425bcbd,3613108191,2291080516675278726
+c307118b-8ddf-eb73-9306-60abe0c3bea5,221520738,15739404094590256017
+fbe889e5-debf-5c0b-5119-12a917c73eef,3058754627,8283439187725380202
+a8aee90f-7de1-0d63-53fa-2b0bd7d3ea70,1404226502,14727111751676553067
+4ba330cc-22fe-c740-f020-c20b4596636a,3801397519,2033991789520407464
+4c3cf2af-c9bf-d9a5-724a-f34ca1286acb,24683045,9066900997187248453
+4f7a6793-47c4-1d94-0040-d8a06e1cb025,1338896667,15551568167664135729
+a89733ef-b468-752d-babc-03f62318def9,1891384719,15142032692217959801
+40e8d44e-b774-a6b4-f741-7f5bd0d1b08b,3281351984,3164953952036404949
+152bf521-fd4c-434a-0ba6-3d9893eabb20,2833390335,17488721418419978451
+3c1e75ff-9c17-6959-d671-84928ccbca2a,1069365321,8751220653197518833
+07073a68-1066-20a1-6763-3f2a518bd877,1897888672,4359785746463034308
+aeeb4a8a-d41b-1008-25bf-0e0b56576867,3227748011,5260731177823146747
+4807336f-0afc-f4d3-e8d2-24e89228994f,2484149663,17943929339053477180
+e5c3e85a-a40d-27a4-684f-73e1d3cf0d1d,2609979960,10944416911384131289
+f9a2f06c-5351-2c76-ebb1-b2d22bd41524,2699838554,7796235410715401144
+12829b3e-5504-3038-e9d8-1cc96792bb56,3232701265,9667491427132031104
+df2f775c-2d05-9353-9afd-1788f867e36b,3099860742,1451117687974382503
+36258867-66ee-58fd-1378-8c76026688ba,2792791425,2002163168619817112
+7a9d088d-dcd8-8489-6599-f15a08658dab,2454355272,12227780953032226096
+1beaa769-12b9-7e99-7cbc-55f1742a6277,3154485497,4728435346212159239
+6aa0f20e-6311-44f3-f271-19bdd068e78a,739730633,12396515464844430630
+0b0c1a6e-1153-5755-a9ef-3356c653b896,4064291978,7803766672580630647
+58c266ca-5acb-ded3-504c-d7a8d848e694,3177960091,4152954672296922607
+1bab538b-1aee-db7d-bab6-a36ad0d6b22e,1280759709,6133175566498522971
+47b66e1f-6f24-451d-f2d7-8223952fc65a,2296852356,11644327615803237822
+5fe12ac6-78a4-b13d-b4ae-1cff6922d798,2701553828,9890964516389755397
+180274f1-fd8a-60c4-6c08-6fffc073cbe6,2239237041,9403130728066239715
+9494ca6b-167e-7e0e-2cc3-93f54e392388,1638790275,10916543437041113905
+0104f3a6-4271-0d4b-4d32-d8ad312dcd4f,3743380290,987871073301674772
+d20561eb-8742-f463-0328-ec9635db7adb,2891805466,16599987036478846501
+d5a2e234-7d3f-f9a2-de41-3c784cf45fc7,1769636388,5035727886798383334
+e1d126e1-6dcb-6510-3674-4e8f9532cef5,1182678536,2632553505383180137
+70ebbb87-b48a-f387-61cf-fd9938c4b752,3669011961,4002795954571857956
+fa9c4e8c-6493-f67b-3e3c-166a126721f0,1885787527,12222037601546401557
+944c128b-120e-7c02-a4ca-692a97676a77,2356045776,6304449368829852329
+f393d484-3771-f00b-6ed4-20c18cda454f,3495115244,3304445830749751467
+87b134ad-dda0-788f-97dc-403d9d54d64d,2971480995,7468635535505151415
+d017166d-a18d-a811-725c-fb49e3ad5de7,712332113,12886996689118557974
+082301e3-bd4f-6831-9626-9abbf48135ff,1474864029,2148539000167995901
+f495625b-b6bb-af82-f42c-778d929a7b99,4219504058,763351470834072320
+da78a257-30ab-86a1-d16c-77866e2cfb0b,260839836,7898473840514784629
+63320339-6381-7f36-6db9-9d6fd78a9616,1239856335,3987823817879538112
+47285d1e-2cf3-9451-6fae-32979957236b,2145734114,4332909489630981584
+ee9a4ce5-4ec8-759d-6a31-3cf03a75ac44,3441243076,1849807468878586492
+6abb6702-dd42-1920-0be5-cc257c0e1d29,3074758053,1523146347111472163
+53c8a99e-d2ae-aad9-f338-38c82778f45b,3380858508,18273229584999264608
+27855ac4-0528-83d2-ae7e-9254c133bf4f,2611134872,13880941358914669234
+ad30dad9-3338-9379-ed9a-3a52f71914b0,2860720507,11244206612268683138
+c753cfb3-d538-a1f3-9cb4-47873981c51c,3132632188,13839960713798583388
+538b15cb-3207-b939-28c6-8def5bb0b475,424904408,5046115448048308642
+b06df1e9-52e7-700d-12dd-a58990e2b058,958223114,5023029042278403855
+8474f576-ffc1-d134-8b18-ebd2cc344f9b,279380918,9016253679204738728
+bb5c8533-4069-9429-5865-fbcd940a013d,373441234,14774905810826214735
+205d74b3-a425-fc63-38c7-7a64d5ef2bbb,4251381659,5380354712672300458
+da8d7f67-c581-5dd0-f7df-5c5faaa8cf30,2854658575,8845803808372543046
+611adae5-71f9-9ac7-28c9-03830a3f16ae,4231213077,16731581191904042768
+69c19080-c12b-aac6-aae9-614b0cfa40da,4291909516,1140562631212415022
+8b7196b4-0f23-229a-3dd4-9982c30ba113,1887129851,15180228719837964693
+2fc2316c-b724-97b5-bc21-329cc527c0d0,2040039113,15079920765466006715
+42f7f171-409e-9d96-2341-6ca2e57795ad,2286367724,5047098011124467052
+7885facc-591b-0644-5504-de268624b047,3253896326,3644629979700245221
+766e7d3d-5bf6-ecf5-6b5d-5022a045d903,1965824128,12145588381627822406
+ec3ae294-bce0-7a42-e361-42ee504dd631,2040284257,13156561347481698750
+c5d033ad-2cd9-177e-28c9-6218716cd47f,2743613271,11063102221178183503
+2beb491c-958f-0ac7-0e2b-d3660f2efee8,421623566,5994767757366086382
+e845838f-9796-62d4-0515-6e4bb7518eb6,1690211849,18339518344485735137
+42e0824d-f4f3-003a-fafd-c5c6c06e4cec,1962877892,16401866215259704236
+8ab7d3cd-4f24-f244-5a20-8326a98e93d5,4283396161,4440988047318498025
+0cdbf4bb-a2f4-e8ce-eee9-b5dda41c8327,936019066,1135501297790587558
+e69a97bf-a66d-2b66-a561-16738b1f43a7,867655025,5684687795302119542
+f9be6288-2689-83e4-2d83-669247ce569b,3199868895,2420929470152302846
+230f7959-e8f7-efe4-8e83-1e375e04fc69,3766680269,14134958029528654717
+d95796b2-eab5-2a53-6fb0-f52b49d26266,991739069,573533100288996183
+bcbb0002-7b27-199a-6dec-e6992acf7324,631382051,955196778782667923
+8307ae9a-d0ac-35bf-861b-f2e975f1e064,2128560181,3234147785205473400
+f42cbb43-d779-66a4-cc1a-e2772072be6d,209238298,4977885123002284706
+b285c081-bd1a-2e4a-4410-fe6462e5253c,4230051081,7027023466000492528
+39f83398-9141-384a-be33-c8ff2ea65af9,3334356274,1411702412315096080
+c02a608d-268c-83e6-bd42-6ddea6d5e927,16877985,14618318748883824627
+37ebd9b9-f8ae-dd1d-83ae-c8c1057cb795,412735461,876583676207375421
+5bd216f4-320a-e78c-4003-634db370b96e,2504512053,9705211375696658872
+e8c59b52-5aa9-5077-fb45-2f42191af00c,1772516433,10106014074930884142
+b3a00a6f-8a4c-5bd9-627b-a16a97526260,765050695,10871646886046551648
+4a045bc1-0e5d-1214-6414-37542b8da31c,3118552541,6700836553545431670
+1ba757e7-a8aa-ba63-e124-32e5c0cd0b42,3895632210,12171766380123250135
+2b16920c-3bdd-e052-4de0-2152bc2e879c,3148192027,5363022534653711942
+db6f230d-1290-5e15-8ec8-92a545d92f7a,636880783,2961830189748971748
+43d6fda2-7e59-8dd1-c28a-d9eab65f09a3,1801175970,6448705942485434257
+019a2b83-f874-2999-9222-c480743cc54b,1841136015,12929937971811453426
+4f918ba8-344c-46f9-20c6-7b7ed16c1883,3368772932,17883339822695329963
+05b1e031-c4ca-eb6e-91a9-c7ff5dbdfafc,782694989,4481672982672147992
+ebb4e6ba-b46b-840f-7bba-7cf83a575cd5,2107678329,9749851261044647903
+3fc5d135-56c1-53ec-1076-8bdc8b5fcc5c,3078860308,7489417402804124394
+1956f0bf-dd56-23f9-0564-bf37c15b18c5,2651581610,17773611995137042708
+fa656963-6e08-a4af-1c06-be95cc5377ce,909117223,6025443314372277455
+fcffae25-34e5-8585-5791-bd37fae4b9d8,386787442,17421584710209875409
+5210d500-bfd2-45d9-7656-24c33fecaf68,4237082861,1351502547037183487
+ed7270e0-3855-8c51-17dc-d1cdd7553c55,1350357031,10252857361559534689
+bbb889f2-51f9-d2d8-bf81-3c586b00f8b4,3267176340,13603997697458426666
+d8b01b11-82eb-3eea-843e-46025ba1ce79,2440349212,1234323899158639057
+59b9b4ee-0720-328f-a648-d5d4a4b59e1b,1444067963,7858269543011626990
+b1bb5ff5-d733-a692-cb56-d06f9ec26e4c,837165474,7242113550520181661
+28e7257f-2fc8-8335-91a6-c5e1264e0216,1652761246,10335456704239835379
+c691826a-fe7f-abc8-2c28-b633e27d3d0a,3603434014,8226948310659476891
+e37eb491-3c61-3804-bebc-bfdc082a1f46,1945817389,16352394684337683434
+b4f64914-6de8-d341-fe78-e3a1ece62fd4,2187516636,14516246348259607698
+faf87cd5-eda8-a9bf-d9f3-8c60695c0daa,2057094797,17098861113122539913
+fed43a6e-9583-9204-086e-e277e70ea2d9,4178404864,11672917062650733209
+995a69a0-1c31-8233-d57c-5272f1a3be6a,2778844984,4167230799485386450
+5a9474f7-4851-3d85-dac7-741f6b6e67dd,2340271397,12922679409740530591
+db2bf698-feee-973f-627a-35f8d88e374c,2519947549,9491593453584597088
+356082c2-a08f-fb83-186e-2fb08d5fee88,1924019062,2988346165468100608
+aa56a0d4-2a20-677f-5905-40d0f548b096,165374825,1179815056548473665
+ff38734b-1741-2173-3a08-de62673286a8,2517289568,7161406306448939703
+7f557e77-b117-6f8d-bd3e-f75537d52a33,1128275529,3103506449814381265
+9e906085-cdbd-6525-e12c-e84352f3cee9,2937884844,16855661366682476953
+3275a1f4-3ad6-6fa5-b3f9-50a40b49760f,1225443849,11659172457689936244
+334f377f-f3c2-523d-8384-ed473b80c03d,1532934586,3310398952503690587
+de32ea0d-ec2f-f4c3-ab0b-6922cb3c2f7c,743889502,3161764394683604852
+7a463bcd-e528-decb-0ddd-9c28aa69bab0,3214495326,12807950529182418608
+afb197b2-9bf3-1af0-473a-baaa8c35866c,3236496901,8257802458643075277
+1497b530-055d-1bd5-cf1a-593a210e96e7,3647060090,9900327203204022808
+6e4041f5-da6f-3db2-ed88-7dd9b2e114c7,2941837694,1020514285193741356
+fa2aa12c-222a-44b3-9f46-7d3698f582b5,3642947192,16658853657739642946
+e66ef742-26aa-338c-ebe7-32835886893c,773647777,1087023407229165019
+a7d16147-f1a1-d34d-1c60-248d1395888d,3891298924,8631856062657429618
+be4567fe-82af-9a28-845c-16808735e647,576718201,3635479572552754217
+2197bfe2-710e-a005-4168-0380d0a04e48,1698062843,2137030257030475518
+e36f08e1-d2f3-0a68-01fd-35426d5ef11e,1665396421,12665617907489944144
+847eccbf-caa2-6c62-6a4f-c474a8f33787,1994448706,1560377377458828645
+71a3e0db-9383-0552-93ad-500c55c645b3,561572415,14434278903769228439
+10e7c8b5-820f-11ac-54ab-9ae328ea8da7,2247484488,8192872512513330556
+23052f01-ddfe-4f8c-ae5c-ec07361dcd16,972877122,11733838527256557729
+93c01c57-5f8c-83ec-d7a4-edfa487a603c,3336542426,9538784697468519817
+d5ba7e9f-4d21-9dd1-2b12-a359378c1686,288360829,6347589047851964936
+b60f05b4-5c0f-1c95-d0f8-ed20eb6ab565,2939368598,12100603727914916890
+feb6cb5a-5b6f-2f1e-b115-ece45fe7fda2,338777227,2269727121328657070
+23fda54e-0e14-57d8-fbbe-9fdac6e7a44c,3171665061,8733579608046527894
+5d6ad1e7-f096-7826-042e-533afb3a2e90,538747040,10180302970579457635
+4ab8c1f2-933d-1f86-9895-b564474e5dc5,2815406482,17525800377423731367
+0e90a1ad-4c5f-429b-659f-d94d4fc9db70,92498907,9072829688762192052
+dcda827a-2b97-380b-0b12-29b72e1ce50b,2667559497,12087142941248599798
+bf2ee348-0021-a239-c6ce-c989f62476c7,1274987696,15206736648742636388
+3bed05cb-a8f8-ad31-0b5a-935cb8545447,1464044133,8959275321485379399
+3c692980-90a7-4511-5120-2940d9338241,1720749865,6922943314175665597
+60234c87-4772-aa3a-a57e-f1bf08476f97,2889181655,10878100330878813594
+b6a6efd1-1cc0-d7c1-a654-5fdbac4869ba,2788897678,11488651609165765847
+0f9d615a-2a1e-818b-75d8-19b85f5a2d85,2080736515,10608244845738548099
+be143371-0a57-8534-e01f-9ecd94f19298,827889372,8511370395375074279
+4c0b6f1e-d3d1-0a75-2e97-6e7f67875186,1721787138,9765043178473221420
+63c9c4ab-6883-8a4f-68da-8b10df7c85ca,1644236633,2424694932175232833
+21b9bdd9-1762-31fd-79b2-e416c4b63849,3650999942,8017873339438583465
+431034ab-40f6-fa6b-4e0a-72967b7a8028,3975068376,5189714007099533740
+ef63c1ad-e930-fa5f-caf8-f35520e25ec8,1863419331,4576694284216663923
+e9f09436-b3d5-56eb-0902-0748a4655a9d,2379689639,8754640875226319964
+a0ddc847-1639-8e27-1220-db8feb7e7b94,4271437113,330411760598960911
+b359d707-c851-5e25-4e23-0af90611837a,863792888,4265697564308683440
+65932fbe-8781-c4bb-9b8f-b469b2ce7070,3216418122,10164194761727837850
+8ec4d008-07e7-7749-c7c4-e9e712fad284,1525202263,10893156342269139484
+8763ad64-d071-a21e-8e23-304d126b64c1,480239730,4108215101776011116
+573d3b5f-a2fa-db5a-be4c-ce02a9f9c629,381075603,6410662854651832791
+b005f01b-01cb-f7b9-51f4-3bd42561582c,4058400123,10181728174449839630
+c9512430-0710-0410-b989-385747dca138,4141694019,3213163250841927281
+266c75f2-9c12-1364-3eac-017faadfcef7,1824183882,6855055073305708026
+5b5c2865-4553-cde1-e63b-9ea9beea40aa,536793453,16835966364030178183
+42dac0af-b215-eb4f-a6e1-89c23fb1eb35,2485283727,17544022242746817924
+4899038f-b031-0e0a-3c81-40b0c4c27926,703622927,8541584957859125332
+93abe848-e66c-274c-243e-78d48b59707c,3302018162,14788690782401329121
+9f9e4138-7be2-85f0-a0d5-d4394aba039e,746774020,12135609979600701747
+3637a390-742e-7793-d380-c5a36ebc61d7,2069358798,5694015675032142588
+3eef2d1d-7ab8-e555-c9ff-f9c7c9ecf72d,2737152276,14072297355963119921
+00823220-94c3-09c7-eb59-69fe0dc8f146,1452941325,121062541461625389
+ca04305b-56be-20eb-521a-d77032570e91,912946801,16593564822127448974
+34ef0b04-5fbf-c60f-7b0c-344699edf70e,1733307356,1843379353180885595
+adf03c48-b1f3-0289-7cb4-96e18bb9553e,4075747742,7528963622384234555
+0b824a0f-cec1-577b-5f39-5adf9703a439,2180097207,12407626017242352830
+ba6c80ef-668c-efee-597f-ee95f4cb5a68,89429111,6201609586273167131
+22c7e768-90f9-fc1e-1cc8-2546828eddf2,3189905509,488045954785970660
+98705968-2d73-8fdb-5f7b-bc119d273e2a,203774731,9112286572512026600
+49d25a18-70a4-da95-dcd8-82ce5c457e68,2004409580,16914434679718019134
+82a4057f-04fe-3924-eabc-04d8e1b17c45,1686353958,733004472501718710
+af3f3a58-7fb5-8979-5435-2944092b0317,1801078154,18178293581839463540
+04f6997e-0bcc-72c7-ad2b-ac31a2f40b2e,2850722834,5735514916286976290
+92c1d804-9089-9f75-1f94-0930925d0918,3592497313,15499715907328456214
+c1b49562-b3cf-4b04-1af3-d4002b7127e2,2893933296,2434109828089330925
+4f94390a-b1ca-9398-6dc9-bba3759adf37,2900829673,16011977515597453339
+39a4710d-a5de-b194-15bc-4aeb1196b372,2171792795,2525139467916571713
+b801a51c-5dbe-4b79-7dab-e5f2a2c4ac96,3750033732,4783124477335076165
+0ec1b3d4-350c-98cf-4915-6729c43c413d,191752668,12155662918359355312
+4abbb2c1-0ba7-6310-b471-e86f8add70dc,2246681414,10567842860836803053
+e360cc9c-d613-aed6-e45a-849cd752f4d4,1270448935,10060277325129744946
+a31d706b-bb7d-213b-9b5d-f4fcefd8450d,3597807737,13167178540886353418
+4c6d7781-6208-d13c-e601-da63bd3ebb84,1249725416,11344460674939555770
+f6c123dd-91af-2462-a14e-207b7957c731,958392798,15356519894253537006
+35634a02-35b9-db7f-d9dc-f9aaa3971740,225298273,13178328251164813877
+a3b86fd5-4ed6-20b0-bfbf-c0da247515a3,1222961190,14710792027394645329
+c1e82450-8ecd-1ad5-0798-b2187262e4b7,336958008,2300827019878980567
+29b5270e-0cea-1d96-0859-c286e23aa67a,3524343381,17277000773509691339
+88ff207b-e239-ed1e-158d-fa3fee81ebc6,1782049621,12241289233932936519
+51165538-b4af-df29-502c-e541e92f162c,3378559290,14896093918570472590
+c1386d76-5725-3660-4b5f-d6431e0fede8,3284276042,18066441702606538407
+57d92a42-d981-d57a-0156-77fe2f312d30,4220499275,2545928729439656045
+65599f5d-3b0c-a36b-32a5-63cff02a2ee5,3992702018,107018861375098413
+880216e0-cb0d-9e9f-c5da-d673f5dcac02,1239711417,5112507113866887060
+8d8d0ef1-c6ec-8643-8e21-324efc2f2755,827405987,17395603763818149417
+237a5460-685e-ad26-b88b-efb7eae3c6fa,1401610798,16292959334251827725
+e289a151-3428-2ac9-084d-5a2c1a350b23,3582792962,16059045274936535429
+b202a55e-aaa8-d9b2-d1ad-eb9d569a0426,491463572,6804364728331041999
+7ebd778d-7071-d5a3-0c09-717fd95ad7d5,2173333408,2127209917632897199
+19729108-5709-7bef-d3eb-67f962be3e06,1906264108,1144586270594480900
+8a3a1299-9db5-7338-fd6a-6c5fbe5419e1,3882396225,2226514339822961268
+9df3c71d-dfec-0c46-a36b-5a6ce4a28001,710445553,7277584165617664949
+37516788-04dc-bb2e-c3c6-cd247d3067a3,969525425,6534877022887519917
+3cc4054a-ab18-b6c2-d797-2692ad77102f,3788837041,2918972694264428380
+8f45aa82-e3af-a4fe-ddcf-fea4d3ce23d5,322530833,8052947533707183198
+ace1ba14-d369-c5fd-6ad4-b33221e4d2d9,979732479,6849202887986052357
+b30eba16-d57a-021a-e008-822aa662f794,1342015202,17281564664569432814
+0dbc42b7-41cd-7869-30ea-22357dc34c99,303384605,16748434912412052589
+c29a9908-4d19-b9c2-3d28-eac074d44c40,448540583,12593604873596855938
+f4785125-c777-2fe8-546a-25ef66e1b933,3325150400,15940639670129830220
+58f8d484-adda-fd9f-c857-465685a629aa,134427889,10258824813671434930
+bd3eb5d8-c376-9bb4-da3d-efc41d053d1a,184506639,4670636515295168069
+8f1ccab2-70dc-d3c3-bac8-ab856e137f34,2246197366,12925018989367482854
+a4334309-b022-b808-2036-c71d5f07ac93,4197239899,12309600323616270684
+372b90ea-12c4-7ad3-0af0-baf8bab364cd,3887597133,5203509410115201705
+98647217-8b9b-0cb1-03ff-42495146cb73,1147369503,11026925843813270104
+6ab9ea58-919d-4bec-168c-f780413b61f4,1174762519,15440611540764557302
+c5d13881-39e7-ce5f-e5d8-495190c29c4f,1296639427,10878996943085861107
+5d47b5d1-7343-ad15-13b0-3d253859723d,1854788348,4193452083145213191
+5e60bd70-6c5d-1be0-061c-7806e16596e9,3046830191,6135483640964263648
+850a7313-63c4-94c4-112a-da0f8d86d62d,3473095865,7256363777275697430
+bc790e44-b317-2cd0-ef85-5f1315fddba1,631846148,7574047655308931700
+68ea0a26-c607-3c20-12b3-d40e5f7554b5,1881640191,4599359548872669735
+cba10309-e20f-72b8-e2d4-d8385953e857,3822811333,18070125857680797926
+5e07d442-ba21-68bc-87b5-7cee09764195,3060299102,8815574226664361894
+1c2fb997-60e0-b817-1b9c-5ee6669906b0,1718846261,8836793552880766139
+dab352dc-6664-2d5e-39fa-7e7669708a03,1321100771,2693320026205632394
+ac6700da-9cf2-d206-1cf6-200c04c26d44,1831706452,11558478189924977940
+359f4da7-46a5-adb6-cf83-9fe414cb83cb,3960359608,2120463220160663968
+9400cb2c-731c-88dc-294a-64df5396e3a6,3702620675,18098115127897983948
+8879751b-2fad-cae0-0785-378475385c15,234211854,5019836712396110771
+7c881793-9c34-f0b0-19f3-61a4503fda6b,739386344,976677884776602102
+ead9a497-89b8-33cf-f287-fade74057ff7,27261721,6837059114554768294
+4b4bb8e2-d1fc-229a-fe9d-f5a50c991a3d,2254368065,7452341941496969919
+13faeac2-2e49-299f-8ece-03141f437469,2871830212,12638592490431070018
+e577f4d1-7777-4d03-c05d-d8493a914139,1756583843,11659423200359490525
+d4cb09db-2bde-bbd2-7200-b258596e5164,2771806749,5921969708552269991
+6073f7e1-e6be-e3dc-44d8-0a7591639da0,3248820270,2948711637717700439
+6f2e45a7-5ae8-76c4-1a9c-3a3af1e95ce9,4259042209,3507117310546456048
+625d8134-5dd8-8f35-96da-545ad0ca0ef4,2137058831,12537807800879395327
+12ed249e-00a4-a484-0d91-16323130ff5d,4083961419,4302159201650401643
+ad18670f-aec5-7669-88dd-9966b76a25c2,581880762,12261439536804442609
+83cb314e-7072-6db8-5efe-7b59cc6e2826,3481821602,9700734781458170155
+f2f9b9dc-1151-99c6-fa28-6a0f122f6052,194211746,17765160376144951124
+2cf7b78b-4031-5115-8fbf-6f2aaec1605c,1202400720,14703131388989923227
+25dc542f-d643-d70d-89b8-7ce6191d6109,3234437852,6622937536772398544
+d572dbb8-e824-6c2f-b35a-7610a0106a8d,133151313,8453519099732846155
+fc866f9e-d4f3-d392-85af-7ec315cb8fdb,1374687199,10829370134996580977
+e5ee1a05-e715-bd3e-7f46-37537d14bb3a,3012598834,9666730998587646972
+be8aff01-3071-013e-965b-0b9664b90b95,1741162926,15879392673127946001
+3f98e2b7-ad9f-0792-bc03-562063008285,813020981,14718821233730143958
+f68cf33c-f289-b870-7f70-f1af39fad2af,1324914350,12949505163166178656
+7f93bfba-1238-6b61-dc1b-472f17043551,2912192683,4885974928550768513
+72886cca-1f7b-7ad7-d10d-691e8a7efdc7,1731787113,5742191295435534939
+c369ce21-4112-5f0d-9dbc-19f6badfeaaa,1438117188,11283939557504554957
+cda60351-f9c8-4672-597e-7d41b35fbb86,2914552651,18038308895720178124
+97afd493-43bd-7c58-f885-4259128f1e7d,3604575964,117694568545928113
+882caf37-f0fd-f7b1-6156-fee7e9922299,2448579823,2145723466463589932
+dbc82d57-e672-fb87-3949-4cb7f57e0fd1,2484641123,18276778347547661361
+9cf82910-315c-9578-d6a8-da714f217bfe,1829753919,5446116226671174304
+6bdea253-60da-0b85-bfc6-18bede6a1794,3516530950,4505176602330325706
+c8ac6be9-6d5b-88cb-b979-b71daa263bb2,932183115,17060420822393821312
+6daf0671-5d21-e1b3-dff2-2edaf9442110,1741761681,502039340287124653
+21c43dd2-6af6-c3be-69d0-70ccfd01b7de,82677119,16857097357319393803
+0d2ab16c-7663-dcad-ee9d-4dc5c8729746,3261035885,315070293404227963
+74a5f73b-d9a6-7a12-6d3e-b3e9e1063506,1453857285,1396444540741414053
+ad47020a-2d3f-6fcf-34d4-a26390cd8438,706826151,921654233990137262
+f999df77-b02c-2be0-9cb7-be764c8260b6,1389511583,15603918357501145703
+a1743129-9d00-91b1-404e-3b3062f234ff,3008946667,5358785620126069332
+d02ac0cf-6c25-936e-333d-76f793713a14,1059270650,6517581253867845260
+0fc8e0b1-0cb3-b1fd-d6f4-592173fcd9f2,2125683464,4910813714251693646
+e2a5b6d6-6e74-34f1-839f-58676e702725,2135686359,15754485548310581221
+edc6507a-935e-ccc5-e669-1afacf7672c5,1285424945,4523257169037225943
+a04d2e70-6a2f-edcc-87aa-944bfe6fd815,4269477293,5763631589579698923
+0f3f5672-a61c-4997-3b90-61eb61288b40,1225570059,14724795991124737264
+32f315d2-4fc9-2ca9-e1dc-9c03a166d608,1529611944,1408150150375719158
+68c61d37-0833-5026-6495-8cff6e400d37,3118229613,362323904085282768
+a0948b1e-56b1-29e6-e9b0-4325cbee74a7,243064025,3838287476769761411
+eb502ac9-69f9-0e23-9822-5ca15560bdba,1506013051,6043388345198363668
+42b75da2-d387-47ec-8d1a-99723afe07cc,624434272,8965129017693169118
+b6c8d566-7ac0-b11b-b32a-2637ed486f05,2982819455,10700545338709306598
+cdf2c6ff-5083-574b-b0e1-993a998951a1,1404616817,13539180161080902192
+e0d75fd9-5060-14b1-9f33-cf1a73efd040,788090680,14374300795832717538
+0ab4fc24-f0b8-91b4-6007-de87c4d52672,1164087665,5242896270560199590
+88f67a61-a745-d443-d348-e10853f5d4f2,3414354466,15584526382940531752
+b1c94e02-a26d-606b-7239-b88b198b4099,4061896180,12635727294137227840
+181570aa-6e5b-119c-12aa-fe3556a8f863,2076413992,674670173067559926
+c5614ebe-2495-3365-140c-a47b7680fb2c,3742420300,7234981955918522824
+133b6a25-9edb-6ee9-dc64-2266989edf4a,365481291,3762117646756291917
+58623f95-c157-2379-bf2b-99b0b552a267,2737436696,7637228618485638641
+e683b1b8-d085-4582-f6f7-530245e7086d,1130591723,13684772067168764683
+5a8c3afe-87e2-9ba3-d221-db245875ba62,649240424,12922212583852782525
+0f0acbda-ef4a-e281-90f1-779cfb2d5ffd,1365538465,16132427615764734226
+e04d86b5-6093-6088-7c7c-5c5b26f67f7c,3144410375,4507034369712797985
+c7b0c645-670e-5ac3-8bd1-dc2db8940d7f,790722252,9423619326240448743
+9f0e475d-7e96-737f-8237-d8472d096602,2466305034,6256774965277647708
+9d08ef5e-aad9-1618-0a6a-ecee23e9a67d,3807810857,5989814812660913314
+cb23d627-ec55-9c1c-71c6-74eeca3c009b,1786726717,11393048214936023583
+7c5aa610-4eb0-d231-639f-e735bca589d2,2257548492,2594950956568106874
+4c468960-cdd2-1f5d-d4c7-d3d50f3f6b46,2390416118,13581064280720050521
+1fa108a8-d8d0-cd91-00c6-5edae003aeb0,3556044331,5028939308036867661
+c9cd8fe2-e1a9-ce79-6a07-bea1640b82a4,2299922825,6559359674026099248
+539dd492-21dc-35ca-b47b-a69cb408c99b,4095323081,5627881523413369041
+21183e7c-d4fb-7635-066e-03115a818146,2847289246,16504265888391302954
+fd90beec-944a-6674-9f95-804fdd85c826,2054617982,16757882983935590941
+e64ff784-d54e-69f4-ce69-3a46a7cc3cf6,2233501118,1814252295193226162
+b168da2f-3eee-d405-2876-d3490b892044,892981642,12216670012397324369
+77950df2-3236-8c1a-9654-a26520bfb24f,4196189745,16958373083008552428
+080cfce3-633c-c886-4403-ddfb21888959,2583628068,6452508019783553428
+de143ea8-b835-4efb-8757-72e522bddc3f,186894194,12187109873684224753
+7ddf5408-1d45-bcb7-e433-b95597f9289b,2071455060,3549296431454689209
+1ff99bc7-a7c0-7bad-1f7d-02bf07ac74fb,2157502960,12299501476541822687
+fd097302-0c60-293c-0435-584b955d8033,2832413492,15531189652712878190
+6b9d61c6-ad71-a66b-e937-a3843bfd412c,965430939,17531264609812046915
+6ee64ead-e934-1827-9c9f-ee813050aaf9,3677823845,14436026180197571127
+649d26a7-4da6-c218-7095-61d6a38c9571,2796358532,281100117422769889
+f658ef52-0fbf-ec2b-807c-545168c2647d,3129223732,11383010670265358728
+288c1465-7339-c441-dba5-3c3cd9e7c0d1,1077508995,8981086577809203816
+45168cfd-0d33-ee94-549e-7427123b7d50,3305618106,9456009966499867905
+ac9c6da7-d33a-aa17-b534-2928a527ccc7,1972535399,16349801007255920605
+0773e79b-d1fe-6c8b-c393-b40fa3bf3ce9,4081016810,10246590033169705099
+d0794569-b372-4e4e-d208-42883a121268,1066274007,2590301766910263193
+3b6460df-9f9d-6125-89a8-d6996b282fb6,2795812447,17554338997993535594
+960d1d8d-a50b-a439-472f-57d413cf11cc,2145454329,855881947178272298
+ba16f0af-1450-b8f4-b10f-cd77d9d77a75,3985063378,6707231312190875093
+809e14a0-d54f-91cd-816a-aba2af96d48f,2710063672,1618346978207681746
+cdefcc85-7cca-0bec-9187-ea355063ca62,2308566235,16453687212318607646
+9969b97b-9e21-a313-45ed-fb6516eb3793,2829949264,17532345948561630014
+0e235ccb-5e35-fc4b-7acf-cf2c07d41276,4111962262,7758471265460253810
+01b77325-9dcd-a8a6-14a5-350a88ca1e00,4290172066,4034457780165967021
+e5572695-09a7-ec6f-1d2c-58487473c436,2399189547,14375278709444050962
+0f448c1f-b060-dcf6-947e-06d68e72a788,1467763625,7259815385925928149
+9f46072e-1f53-eda1-3dba-03c7924a80db,472056484,1310127401292828384
+412a590e-ca3f-aee8-cb76-d4942cb9956f,2695481947,8561494849505940226
+e15a9282-1398-5bc1-7538-18a9e96ba4b7,934046615,8726302202901126387
+9a139cde-64bc-d3e1-afa4-5976ef3274d6,1894509090,16444650381324077
+f8b17438-209a-77b5-5751-9bba024c1458,2684753055,10307201559362889979
+db4844ca-f20a-499a-17ec-fcb53643bfde,1328572543,14027009525856386329
+23ab26cc-f201-c420-5f63-ea770c41424a,388373309,5234234994218540125
+93b1e2df-e81d-e251-20d5-8396a999dc3b,2574414853,17056647374713420122
+23c433c4-6785-6ef2-4e45-689070101ecd,3342590978,18344260945006878564
+be89463e-1053-3808-5d00-1f348a15de48,41781709,13725341665078835084
+e4967d3c-4c4a-efc9-abf8-02dcb86ca4fc,3717720540,4680426735522658567
+96cd254c-414f-4ae8-fc31-938e93f5fda7,692421606,11278359069266201883
+468febdd-8785-ffe9-152c-b28a886a4985,842728426,10012750354364434998
+787a9e2d-06b0-f011-6163-82d4dc519373,4157851455,18203264168525877141
+6c9dd3dd-4a58-7e94-1e9a-0c6a009dccc8,1368372791,3157367138396896540
+06984ec9-f16a-c3fe-cd4c-3183dc1141d2,4266514243,12042222946421130920
+70821122-8f32-195b-2a90-381841f24207,306011474,6001921056495484440
+f3dcdd98-e97c-3000-0e8f-8800cad85850,1080556626,1454990619747897044
+58ef0672-ed91-6247-1e4f-8d2dfc4f5db0,563419049,14179608746731675591
+e860aec7-6ae6-9468-712e-38e46af78d73,3701132567,8244289645354974855
+dae5014b-4c9a-0580-5e51-5acffb877eca,3413535383,13505867000794434487
+f3a25833-19e3-6bf9-6d9d-f0431b2693d4,310608558,11535714854459770187
+f0ef9f6e-45cb-f7f1-f1d7-f5db627337fc,188660911,13364421795885502590
+3003dfd7-d533-e09b-332d-afa865f00912,153224752,15998648224632537194
+97f5ee50-a4f9-e756-c1b5-cff291cdcd6d,192940252,128431562658775646
+d453df57-f384-6693-f84b-7e946551adce,2122801900,10360386099931830878
+f0690af0-be02-4609-7827-15a317556fec,3523579251,479663350094795626
+e6bd40df-ddc2-9bff-d86a-4403d2d68c36,2001049354,11972607197963762161
+4219f25a-e4ba-a3c0-072e-d92e1ac931b1,1266107373,8707446475540118430
+480b079b-742c-eeaf-bc13-d4c131f7a2ad,2805651287,7648449242276297747
+8243043f-531b-6426-aa57-d1a5559721a4,3183731526,12745813077309216803
+ef782eda-46fa-09d0-7285-c112f72f7e8b,314629955,11702822526222226932
+7499576e-079e-8ecc-d269-d8630743545a,3825724070,11370555739858761771
+28a5e836-ece3-c313-0d89-ca93eb4d348d,233214628,12440076803016032900
+74170d57-2ff7-d6a1-314f-aa30619e6fd3,2527661993,4833984940420591609
+92e52560-b8de-065d-365f-a18905f97187,3440743101,14081346601363134849
+23cf2708-6ff9-19f6-6a1a-ffa3a1ff81bf,1356686424,4183243197818730370
+49f6a386-9d56-da1c-884f-b6566b06ed14,2174164485,17022965967351703685
+cef185b5-dc98-5c96-a79b-040a0b61167d,2012612220,2581445521936509047
+b96e59a3-09c8-8bfa-ef56-e64d333a9c9c,467121441,490706265110859148
+4273b754-aea9-82e8-f3f3-395f753296e2,3452996496,11926864256420558423
+88fe76f0-a85b-8d96-8c3c-d090a5e288bc,3767100281,11279004495007839281
+03d48bfe-794e-87cd-3b6d-601bc71f6a43,3451698134,2685613626698737114
+9bcf182e-29f2-553d-1321-c6017e04b25b,591314424,13963426388627908253
+d257495f-ec3a-6c89-85c5-ed56e1ec1399,2592752088,4746647930665911288
+b9871a4b-7acc-f991-3b44-eca9f2190dca,1804760208,11915968272920128791
+3545b18d-21a9-e050-eed6-13db120e7f19,1643484634,8906407534564256608
+d4a57258-0837-a58c-dac4-d5ff4413fcd7,3847486135,14612192492299590652
+f447acc3-587a-c432-43fd-4bbacd139733,122175122,13880148366446274039
+7d3c3ae4-b89f-a7c4-b89d-b123d3188a53,849462102,18139787118709250830
+ff7dc8de-27a9-6f6b-8c11-b9e90747caba,2301424791,5318137741234736127
+37acc79f-a6eb-bbbb-f48c-0ad49c7ad6ee,2047961269,10500378750547491226
+684cc549-afb1-84cf-ff8d-e1ae4a69d0ba,1040443413,11494683359931722179
+584fbe99-497e-608a-789e-3919f7a389ff,3863479879,2976212457188789052
+aa4b3562-28b5-db70-9cd6-38aa30e72c72,4153023799,5631057199110321639
+0298509b-ecb5-a011-6eef-465d8faac954,3350296953,5977628533424120905
+f8aa85b7-14b5-6771-7814-ae8c4bd0af70,1348595944,3464302520346091502
+854db40b-54a4-bc57-9625-b9ab026b13e3,2649216174,5659089661409155090
+767c5306-ada4-f630-ac27-9e9bd8e02437,1036546377,11526754272587023597
+6849792a-80c4-d901-ba52-d53a0d045094,1539932540,5787563265601758500
+994f554e-7896-a70c-cf85-df243390a519,818792607,5960467947910675648
+67e53982-f9ae-b83e-0f93-cc5758781641,2172467155,12392544953199669819
+c718a3bb-aef3-518a-be76-082a6b424d09,253244410,8669700103898687815
+e5a00c3b-4362-7a75-5a4e-b0f521cf3a7f,1858117151,17438370842589426049
+a9e03b14-2981-ef8f-cd56-3654c1c8d472,3356954114,10091144489866333519
+2ee43d00-e9e9-9859-e8fb-8698638e4b8d,3427832271,13473143212696704328
+e6c52e07-4881-5fe3-8cee-21b41fa4f690,4247516610,17529693444020799362
+37494540-4ee3-ada9-12aa-9f15979d4220,2092884351,1280635557269053797
+360a0748-ecc7-51af-e26e-4bf93fa3bc60,969573068,5982569918244963099
+5b172a25-5174-0f42-6e3a-d2be878ccea3,3325800540,16344184440984448726
+5cb6f4ca-3375-0e5b-464e-15ac78a68a31,1971452682,16548097051735341344
+d27f0641-ac32-0d70-5669-58096491d8d7,2947826911,7409599013407589452
+d260c6ce-80fd-9530-9ec4-15a1ac3873a5,1471809228,3570784753054671689
+bf3e6f8e-52bb-ceac-abdc-957356f706d7,3465493303,6363129508137466280
+ac74aecf-791b-7784-360d-928f1e750a95,2825580796,7799351097794907479
+db49a954-9fe3-6902-f85c-f67249ae99b9,908704470,12562604623777619495
+7c939edd-a147-ba92-64f9-3f1f5dbe0b76,1277013216,1955970151858593089
+a517e913-88a6-603c-e520-f9d4c67f12b1,1667964021,11766188883342782686
+4761b793-134b-6271-7aef-ba1dd6d35598,4054121051,8771525283934632556
+f4e1ecae-b74f-0a07-84f6-cf6437fa3332,2719497523,6724813811124039046
+ebb079b2-b42e-7e7f-2567-2c0526542a84,197908582,12841335767653681021
+e32cb7a1-0a40-0b42-441b-e5bca6610169,3526117260,14075977642473082100
+8712422a-c653-1477-4037-508e2b2b72cf,2416652142,8623826278556852592
+83d9cbc0-7d8d-394c-369b-70298f375d7d,2765464991,9058622186170356260
+aad95425-6d23-16e3-60e0-328f9fcbd349,567603500,13995101533960308977
+adaa56d8-fe31-b4b1-d694-cc6c9884a415,210899640,4612166727138185912
+f8add12c-2146-9817-629d-caef33f1f255,4116716053,14514684995338700731
+19fa6e04-3c25-410a-8961-8d9a61b69573,3878527671,10467598593652619226
+79ae0064-bf13-ebda-6f38-e0a43b34b9a9,2583394931,8063069677360830114
+b28c70c1-0336-32ae-0bf4-c53328c55547,1379792323,4610170105435912941
+0aa7154f-25a1-c18e-34f0-19b9de7f94b0,2101547418,13742191338813459801
+995cb15c-f3e1-6356-5cbf-fd5dbeed8270,3370083468,9896317981221096214
+75a47a8d-f543-bfa4-d410-4206cfdccf44,1939109659,2163051147034314874
+f6bb5582-0529-eecb-1e57-8c8dea437c3e,1808748485,8286394437955417437
+574317c4-8c62-8d94-0ce0-d844d1dd5dd9,693273575,11683261675239827217
+f1e5371e-e442-a5ca-9942-282d2699f63a,3903299992,11389024586604510150
+ef6726ed-6330-e421-59dc-97f1eb43de57,2875498442,7093903899351341437
+4d5937b5-7506-9597-de22-c91a68028ce7,2927689081,12345880822462906217
+3aa6204d-e06c-0110-aff5-eadb4e71c5dd,3648540743,17649622047840732514
+76f6b3cf-f2e2-7a65-d687-d60484887c24,1611833294,13184114783022752761
+173aade5-551f-d1b4-3468-0c7ca364fec6,2247906659,14605979475677454752
+c7596663-04f0-f2d3-a227-8f53c706e955,3743624914,2948221486097965663
+87bd865c-1f98-619a-bb96-acd092cfdb7f,701096887,1837285581039157416
+354558b4-b8e2-473f-4855-48469141b368,3031925220,953109640727396182
+b711166e-6899-78ff-4264-00d561ec4bab,151780052,11256756851161710123
+584d1181-0b4a-1b4d-5d11-02290d56b5ef,1061133258,6227260427875125698
+2b2fd6c3-bf60-3db2-bef1-54103ce02e09,3583678594,7708682633605415958
+00fbaa66-0122-14a7-445c-4aed4bd84d5e,3839202040,7242401570042098880
+b0e23ab6-47a7-b4c8-7a31-62fe3096d8a7,840206297,1900812073874791265
+c6e95a75-0109-8596-72f0-5fd343478a1e,3902118875,3106763537269717203
+5de3e37d-d48c-e9eb-33ec-388cd298154f,941348206,15513334733422299724
+ad4c7eb7-d095-51a6-406f-ef58744b0eb4,3924845677,15473568477721624828
+ac7e9060-c930-583a-b3c0-4df233883d49,2651708878,5549935814426944740
+6365836d-4d14-b55b-a050-d242905f0212,672332180,4186478653977880829
+076c0f1a-ffc8-440d-398c-2d57e06cbebd,3827409893,17082715855801538270
+2885fd40-7a8e-6eab-da80-2afb2e7c3631,1446878418,2092935414551858629
+152ddc5d-76d4-cb1f-d06d-140ad1410671,3834885263,4812713902533830903
+0414f7d8-3030-e47b-4039-caf094e1c6d0,4131506933,5820131914791058922
+8aeb3e38-aa72-6a7a-97f4-c92709c82a8c,2824294382,17288840691351299166
+842039bc-32a4-ecc6-5dda-0b00db374b50,416110197,11790783149651140143
+06f82af1-1b18-c115-420b-6072b1580b9e,1004682951,10921209680569226325
+205632f6-5da0-9c32-7701-8ccef72aad0d,3577217252,11908205880287719351
+74acd015-3d2b-9574-1da3-9f147520c569,3286757811,325784433197308461
+a20f8cfb-0b86-315e-3bac-eed0590c65a1,3561071381,5474147156505145001
+f9a1c767-7a15-9662-6da8-1ae9e3cc0915,1064178908,7665156183767071951
+db75b968-5ae0-2c11-a2c2-aca3e545bc73,3315391908,7961818101010061176
+3b479c4c-ba3a-8aa7-1924-12cbbfa89131,2467785683,6846250418611902498
+6ef3bcd4-51cc-923a-2b5d-cfe39074c197,3334801061,10790491848619327333
+76e5994a-5a51-cd27-d518-2acd267d0672,3822315249,4119156855441624055
+85274c36-aaa9-4521-e247-4e8ef6336f02,897225300,7301462053113320330
+375b91e5-86d7-2f08-433f-5ce24757cec3,2744601375,10810243487659854529
+863e53ae-8dca-82dc-163e-f8c58fe234ae,3341274874,4808804672883325848
+b4496a30-1be2-779f-a73f-7ef36b5430fc,2217356104,11279447849209329093
+18c6f073-daa7-acbc-b913-66b27038f76b,1643792506,16670473819901083390
+4886b3cb-7049-b3ae-0ac9-567326e73495,75014424,4716836612776816758
+f84d45eb-4215-2acc-ff69-c751d71faf14,724866928,14276185091293831876
+6880b43d-31b6-3a33-cc71-14ce2b2c4cfd,4074348947,3199214552095296410
+c4606ef7-917e-ef85-17f6-39ae8cc794b3,3522183168,13963488898913855812
+95de8f23-5a3c-1e64-f6a7-492574bfa49b,1976071281,12644030733897607848
+5d708bdd-6b7b-c28b-f66f-44a1efb2e793,3272800711,7931288794099393576
+d1258180-82a3-7a06-d1c7-e4468fb7a8d6,1876559666,9980162364646471187
+d9033676-9c09-ce06-5e09-f989c2ed35d4,56309082,5312647086882195957
+3f75e386-7909-7b68-46ba-055f90b56009,655119585,4497875462041718311
+5cbb8929-029e-99ec-d9fe-689421287ff3,1668258568,17816473075528137500
+9d99a81c-7f6c-8df0-071c-fabfe5c2a75f,2949122662,1286313707552780033
+0168b9ec-e98e-f7ee-744e-0e0d25eb1684,2225584898,3772974742380202651
+d416c183-45c1-a810-2345-a358b1c3af92,3571673410,10806332253634567790
+9083e405-1dfc-e581-b480-6d2dbf7bceec,1905916328,15257204235379903705
+e3b955b6-8a6c-4c1e-3fb0-6cb9df3181f3,1047610295,14463062189537270546
+eaa2d16c-8c8c-d335-0627-051ea601bd5f,1000032804,17413347071880134268
+e1a8f917-3e16-c694-4d4c-81316176ca82,1602652690,11726509552116240336
+edf80f35-004a-3c89-4f10-03d19ef6ce89,320737347,10975104321021049690
+0aed35ab-8d88-1921-e658-940a66265f78,389704831,299644905550221115
+751e3e2d-ecba-07cc-7a7b-37b3ed0ea40c,2596795922,1919602854707126742
+052f07f9-37ba-59e4-7cd7-0257672bd984,4291509027,5796893744103670121
+ef1fe69f-f562-43bd-5f22-8398b18de6ef,292180677,3409830445181053965
+57e0341a-ef8a-cc34-49df-f64630bdd29f,1968439450,7590651276247044260
+0a287d79-e15f-1b17-4be9-968c0f5545e7,3965250247,3214186133779336047
+52f3e51d-e835-3edb-1d8e-a3fb488a83a1,3988919803,1789977214835601307
+bbdb71ee-4f1a-a813-a790-4ec876b3609d,931786811,14816458948681386773
+de5d42ec-d112-5be7-3553-aa091ca030fd,656344243,17436818716363862947
+fafcbda9-05ee-95d1-c223-ccd4b9fd9fff,2060839715,13272456074075602355
+9d07c59e-fdee-0322-b1b7-4f1f5ee1c6e6,1994462920,9658611706064888998
+b8edfbea-147e-b2b2-4e7d-0ef09dbd4de3,1571537042,12865368368708159917
+f058031a-a27a-0e61-5a48-71a560e3ae29,1045001154,281930731204750683
+59243a0c-b8e2-0f5a-3521-227a7309d02b,3063875287,1455508061779816937
+d832cd9b-0818-4a55-ad43-5e42a3a73cd9,3855524507,6796860856509789532
+4ca0e8f4-da43-7fd4-2816-e92114484572,3936012030,15558518170091618716
+56d4d105-b46a-9457-8acc-fd833ae373dd,1927216630,13468501829229956243
+1d230c45-1e31-0a59-c825-dea7a6e3c644,11420087,18064938790415040689
+778dc044-65ff-f4e8-fe55-4b087a091f53,1649343120,9294745013505714671
+bf704498-39b6-f290-a5c8-c143a35acc00,2911224668,17285918029217659216
+5f933414-df2e-8fad-8bac-1ebb33644d10,1503282985,7590715683478063602
+8e8a7cf5-92ec-15cf-be05-de556679fd07,3972036315,12034664537592911432
+1cc61a31-b342-7fa9-a7fc-39d24b22d8d2,2883329360,10689940540530090944
+0ac24461-b329-4a4a-9a8e-7932eddc372b,3636167313,3867080280857010868
+738cc388-dcdf-4845-343d-a22138a6f4aa,282271370,9080343257261909130
+9ab77059-84c8-9ac9-9bb8-ea0bb4da53c0,1358588002,8246103354323896579
+f84d71b2-26d7-d155-3939-9574889d8ef2,3123682495,13064802583253407291
+70d29ef0-717e-7842-6a4a-13a57808f37e,2817758795,7050174739377690570
+0f7241df-e1fc-3bb0-a3ec-bcc2bfe39b63,2872634282,8245667339427858795
+7fbee9ab-23ea-bb38-e729-e014a89156a5,4256782934,10989991889585394600
+0e1ceb82-18bd-e4dc-c4c9-b2b11c6673bd,3817111903,7104642671323333750
+5d404ac4-60d6-dce6-6e98-9ff6e9e3e63f,1021260477,7274407044159363209
+deafffd2-208a-9c45-9022-6914ad436ab0,1093162930,18100989129334408704
+6633d709-fc16-3264-f9e1-a79ce9e883ca,1538951005,6442950286408801555
+607b421f-dea8-9151-99f5-d6a2f4135cee,4115902257,5644104195211776873
+9ae09270-2902-9fb7-f4a3-463cf847bd76,1716471015,10325544396913736809
+edc859bf-b455-62a4-ae0b-8925714c8b37,562453279,1405473177065135229
+f1a0cdba-ccff-5659-9f32-34e98104fca0,2345754021,11396923429380035488
+e14cd0fe-e985-16c5-1d73-c5f38a418bd6,4043661437,647810084413219573
+c5b70c30-513c-665d-385e-7bb0a9e5a321,1821635424,14172720663202972380
+7af00776-d78e-ccbc-c1c1-8abd5726edf5,2436030434,11907041306421043796
+59cbf539-df5e-98e8-fa4f-a76feb14dc62,2534394154,10121721609296841627
+99af1e45-5375-0216-9a35-81c9e774c35e,1590626238,18165918348788444029
+22cef367-ceb6-1794-db85-fc3baa2495c1,3877686430,11720135237635746619
+73ea5238-e912-1919-45ca-21fa7a3915c6,2481498404,6137322372904907266
+f964f8e6-2874-80d0-4cbb-c79cb178bebd,1971081579,16652664696678749088
+df39c39e-2c95-b556-50b5-c028e29e42fb,40561305,8275400480346599935
+c39fccd8-fde8-6987-949f-2c5028a3b957,3658031414,15123069856369092873
+edd8d338-46cc-1365-f0dc-7043cf38680b,2692135644,13264024410352796681
+88396d9d-36f4-cc03-2caf-6eea5f34627d,1328397324,1715732506528725145
+d66bdd7c-70cf-a687-c04b-ea0fbff00ed9,2137824561,4932558014106094326
+ede0b564-8beb-e923-f09e-3436e2c68fae,691307986,11027065760781044294
+8ac4fce9-bac2-beb9-863b-ab1f7a486290,716055145,15152446019859821690
+ef4d4b3c-9cc4-f635-8767-76abfd64f499,3705082952,5231798714653031860
+9f9a8676-822e-9461-c63c-2ed3680f0cce,3444837311,14867659821444787066
+75d444ed-6636-651b-6d09-20249b14452c,1027920104,9802892621977866382
+340eb6c5-aef8-6aaa-0688-0a1945391a44,3868522262,16255277292436650379
+d8fd90e0-5a6d-15d1-c02d-ec5c166866cd,1793690866,2502566482513743510
+6318f57c-57c2-fd32-ee4d-03156e6e2755,1787967486,13080841286851240382
+97d8cbb1-cb33-6c2e-f6a7-1b6c15918f43,3472432475,7944614688192558364
+9de51767-05e0-a1c4-b383-1820c3f5707b,34406170,14442210619434339162
+4f81d885-183c-45c8-01f2-6ad5ce97602d,2795568652,15515062838257565212
+134cb689-61c7-8e99-3be4-e11928fcac99,2702433287,3511773061541439402
+5349e414-457e-8b08-25ac-8e974a9ffa60,944917201,13784712294538649826
+78bc2cac-0c0c-23da-3557-9c0b734927f8,3202642947,12360290220377325569
+b13466b0-1f4d-e77d-30f0-f6e5b15d6717,945728265,544895378319779331
+dec33abb-af99-91d4-6cbf-3127a2e53483,3822639082,12102383937316500667
+4f00fb61-7f2a-e8b0-c384-1c8911d380d3,1848064669,11394473987809953298
+ad537ae3-26d8-7381-1319-ce808231696f,2694496125,4150250345420893587
+288e4ad7-bd00-81aa-a658-d1423b00b3bf,1866271193,15303461673449436790
+486c52e4-c0f3-6733-8888-58177a15766d,3923845602,11484155491817542129
+c3fb0a2c-56c3-00a2-6a9e-647e7af19cc9,2798253999,16724998079328499673
+a65e0327-02e7-2bd1-0cd3-3fef8bcba13c,1711262920,6347443009555520651
+c745a254-e57b-a2c7-4b32-2898dfbb700d,3567670221,7981008642126896526
+9659e973-2471-7d3c-93dd-7c21b62ac6b7,2148502398,16482671029170827508
+e0cf984d-edcc-6160-bcfd-455da87fd2b9,1635522244,14101563912364221758
+427d7540-b103-7f9f-e647-a19d107a4679,2694003654,15363332751462333413
+2ae9670e-4d77-1003-8a82-8a12d4770f07,139008825,16003797060039661727
+e55dd44b-7dfa-3de0-209e-95da4a828385,2589072320,3075822805151091272
+97729654-f47d-55b9-c5d0-ecd01ddde9f2,1876149098,2375995133594837027
+354dbb50-528b-22f3-968e-613ce1a45d7a,2331664924,9910531295251257320
+223c13d7-4512-c166-26f2-43e4c6f0b297,1447679728,16415103093053811118
+a7007bb2-ff40-c0f1-3547-f37b7760c38b,2207126567,17683766331528280032
+db0f2f83-3944-2123-e679-cec6ee0e2259,2080362973,17917074472122034184
+fb5ce37f-84ce-f94f-717a-f74785dfa49b,3109870643,11334376800468111982
+527a5112-3d6b-5ac4-4efd-07b78e2da561,4243114111,13111208738626219904
+7a6026ee-1bc4-9220-7dcb-e6e454fb7ea1,297777357,12648440720799489605
+2111c219-09c7-4a4c-2f54-c7f081b51ff6,1770886326,8742195407666986179
+6ff57486-4ec2-7913-d96b-a6a05d3cf234,2653140726,6726166803950609679
+049c7023-22f3-7200-93dc-ac6ff5825913,3803856037,16023317690450199085
+5f68fc13-3a87-66f7-6200-d12cb4a0fa36,1917899607,12457456586416632666
+fda02095-4412-6cfa-2c4b-a96d75d7e9a6,2028043872,14811622135452624835
+8ad7626c-4072-d4ba-40af-9c247e3dd0be,410814033,7468152217754165248
+8434c9c4-7781-7c82-d7dc-25221325d599,172756948,5487031300993381567
+c64e4df6-04e7-da07-9119-21ed13e2d39b,1788761734,2487141947169124809
+6e4813e1-85ef-981d-1a40-512d691274b8,3844615905,15699448820906546684
+f78870dd-419b-fe38-27f5-c1a0c130348b,3773476359,1283458597380979405
+66bfd2ab-4119-c82d-a71f-c8017507698f,658454262,18048536142396398286
+676ab148-9fd0-bcfd-a2e5-9819afa2ad34,3294023580,8939287325014396605
+c4dd397d-f6d4-aa87-e3df-5f240df878da,1672710743,17519112089484929844
+786ffdbc-e0af-0bbe-6c22-bf727c99c164,4177287731,6986586427951784179
+bb631397-c897-2be3-cc80-6b6b640d511f,2444579652,7306535451875070396
+95445324-1347-bbf8-6fe0-8ec1791237fc,2984475443,15466552186698976969
+f683b781-e43e-5110-a83c-daf9c530e28b,848214349,14837434039841807465
+90c2fb75-9654-359a-9ebf-67466a1d3197,2419731250,7147631479380585674
+2a6c0a2e-23e0-2440-5ae1-22c5a78bce70,617074768,6476056784786262183
+c1551299-2622-cd56-065c-7f0a5ff43c4b,2722686884,16894427516442042439
+5ea33fb3-b656-8c06-9431-9beeb41319e8,3751466274,2716298260776840004
+11fad6a3-42ba-01aa-0f54-e3e1b64de882,3471406821,17860033866530565042
+a78811a2-c4c9-ae29-3e32-98052ff2e6b3,3913480333,1132885927862384724
+7f83759b-cfc9-7eb1-627c-0cddcb064a28,2846792144,4675042594476552057
+9ff34c92-9a16-5fb5-2338-51930782c306,3646757145,6052706573940203060
+38ce7c20-4116-fce3-3820-3b293e572599,1639010240,11335350466459083510
+1c53cbf4-bc22-ebdd-c1dd-1ae4c7565e5c,198976955,9239907364596266282
+74bf1f47-9db3-ea93-0daf-fe5cac8489a5,3405681502,8206263327354621096
+4467502f-c7ed-1825-20af-417485bbb36e,3674933678,1539230347434113116
+b9b5d54d-8cc2-ea07-21dd-05a7944235c6,2147321392,2481021019292381902
+13ad4a6e-f667-47a8-e4bc-f5284f358506,2901010737,7354465547879490542
+12d4396b-613b-a30b-89e1-0bdae77412d7,3602794010,1806080306686362481
+c199e50d-6ace-30b1-f905-bd1a148d3ff4,4242643063,3340006343280500257
+ca7a65f3-31e2-280a-807a-9ace998a7d44,1731875406,5987675233354236678
+59733dd1-9dc1-c092-869b-c293676058a8,4170493332,16469110936506095407
+5a6828ce-bb8d-24bc-506c-24edac740a3a,3010623038,7539069946487847691
+70ee06ca-d52e-55e4-0bdf-a7837ac04991,575840943,6709022433417634230
+6f8090b4-2935-ebfe-c323-8c97f1f3f9f8,3382409020,10726795105592030408
+ee3b5a0b-0043-7d1c-7e0f-76df59b859f3,1409378876,16204472198650409227
+0b7b32da-b8b0-f06a-6481-0b94c445ae15,447774015,14656470795029023672
+78478443-9ad3-9b14-33d2-e0d2210bf5ba,2211596906,13707989807453551103
+2e9e482a-ee42-12bd-1a03-94a642609b85,92971730,17750292356501876949
+05960455-cb66-c5c7-8601-f76d0321561c,2926670474,2689852062899262116
+5c83f0c2-9d46-f824-4c9c-1b0b9d39105c,1392226819,18035498976817827610
+18b4d6cb-5d0b-58a7-42fa-9578e57a8901,2007837947,15584371673836110780
+e9877dc9-92c4-fb73-c647-c3599970d2b4,2829932328,13728436738459497718
+6f870667-9615-c3c3-56de-e61b337cc120,3952949685,4849905119728411282
+483b74a1-7997-a758-d52a-a85328a61bcb,1639833637,6967256473650608322
+b7bb0ad7-0eb9-4563-e66a-123249bd872d,3006010447,1570432038891530952
+111ee478-fd81-a43f-b851-674625a482e1,1293162816,7947530622973108398
+214d2069-1a7b-8ffd-532e-3ba24bb311bf,3184294139,5119057672852625584
+be9fbb22-d3b5-cf5d-8537-b236fbdbe311,1308666726,10527971574447197220
+e3aa031f-ac9e-2073-6167-ba0cf80b56dd,1641206768,4137642993309472667
+c63c052b-2638-8736-8370-6b34012ae803,4257452957,10269293860000723564
+912e13ce-ddaf-e87d-2bc6-7bdca7beef76,3913809235,15418205441213002339
+d761838c-3c97-eb0d-b328-9cc87e7c9bf3,2009481328,3823894851460947469
+d286c5da-949f-7d89-4b57-e934c403bde2,3306913802,2457223663515339593
+7fbaf679-8454-4399-19c7-3e59dd3bc9cf,347260296,5134472562453161979
+e8c5aa01-8b72-96be-86c4-cc81b801ad2d,1263185448,13927676552836831675
+d2696d5b-ca1e-55a1-3da9-2d91cdea2924,4127446028,9346078446511774284
+d1cf2a08-87cc-2c52-3259-bd0c36cbf7ab,1221533828,1943478555288036207
+35dbf6d6-2d7a-2538-c069-529e307a10df,3017311715,1664627120063357781
+2f842cb4-200a-4806-274c-2c57a11fc956,1656335489,1992958659045775689
+1e8c5d16-1250-6f74-c17b-6b0f5d9b4a23,3805797695,371102009911392125
+e77a5119-dd36-f1fe-bd11-0adaf476ee47,892649942,9628433778965522724
+ab517e8e-4d6d-c383-ad86-e710206e18c1,1578422052,16741632632088717417
+7b983066-5b54-ca33-47ba-bc206d03ee9a,1681139986,1586898349853483945
+017661cd-d5fd-e56f-2c4a-adb34daad3b0,2979825947,7797812103680379879
+6a098d56-667f-328c-a9ee-e94c4db77244,3783190337,1455727691428535999
+d310063a-f59e-e43e-e864-3a0882eb6666,4274563301,14682348232051314127
+97b83930-f554-1890-6f51-186a856d8810,2525916332,17519982015916525514
+aeeaa879-2a43-495d-f43f-7bc987412cca,1422540989,15112475168907647364
+c6a45642-cb42-ce2d-19d0-892e202ca6e8,62306729,5013253195341979985
+28bb496e-9dd9-690a-d81d-d9ae82f0b564,3395652335,15361412066026011356
+7a6f52f6-720d-6e84-a81a-ab12e5a7fd6a,1442391778,14254312722255990934
+db819160-89c5-4620-733f-2d3928ffc241,322833943,6921192541585952747
+61faf175-e14e-f9c2-c812-1dac1b27d725,3481714012,15368081175991469749
+ac373234-361f-8e63-7de5-d1a8f5811478,1833136281,14008420625614609
+606c5641-d3e6-40cc-fc71-7dfc9dd9b324,2508151090,11955574207732634115
+6bbe2441-f821-4699-24e6-b10d0c97ec9e,3368364652,16079561128073523601
+4f01508e-8b64-5c9b-9332-f32dd42bf396,2054306090,16176420337574605193
+ade5ca4e-1354-c962-7429-492245732251,3632572516,15607040341956695196
+0c56e072-f04b-0a0f-5582-4a082f82a017,310273316,1746000470188181391
+e59b3342-4af2-b047-e798-7a68c9f5c85a,3329170389,13417654844172763525
+f793a948-dc1f-3ee4-a17a-178bcb011748,3346650130,2428741418700434751
+d28906bd-9ec0-da41-ca78-38fa24002c32,1791415763,6875586581994144437
+5cb64ea4-bf90-355f-ad39-3cbe3bc7a9a2,1232288778,6057691339899498926
+32689806-bc18-4213-70b1-5d94ff96521a,1697896685,9299665987735353562
+7381453e-3672-09e8-3f51-07d7d6e3b268,3980543478,2582117088391876722
+14179aa6-902a-706c-7fac-d4e9501b267e,2282511719,11037967270276224160
+cc61af6d-71b0-2f65-01c9-c8c0cf06b8b1,1977401311,4023169020019962406
+831618d4-fc3b-260b-79c7-02b514040720,10430242,18163244696968966019
+a36d5bba-5f4b-cbc8-e8e3-37766f69f4a0,2825720794,985745873023809761
+48ac161c-cff2-257a-b073-14ea0f176a01,235721550,4378980022163803624
+8963022d-8df9-6ad5-a75c-c6e78ba6b553,2532748917,4842322061095444944
+e33a9da6-a8b5-6104-9c66-3c7e3c357699,2345071661,11706389023445694496
+a4fb12ca-ab31-f483-ce8e-491c77be71e0,1594136122,12088712539978690466
+87d14215-12bb-9419-c423-d36ec4ada55d,3926450700,17873932389271469103
+69e4bb80-9b96-54a7-3ddf-b397e3fcfa84,1867801989,2603748764938117075
+e717c309-7ec6-1632-3cad-398836730255,3372684370,5447166565156671972
+c5e0dd8d-df05-77ec-ac7f-7d8b18de0da8,3910076205,15495695403393332284
+85c1db8c-28df-72d5-0890-e72abc524231,851098250,2162045940216073040
+009eb2ab-e0dd-ac0d-d904-071f88d57d9a,417195951,3841462518935363144
+75d1246e-036f-6d6a-ebe0-850582083e47,231555105,11485618579818167490
+91c52839-077b-b0cb-2005-027fbab0b1b3,3448817319,13384631173849312296
+01d8ccdc-ea52-12d1-f580-5edc27d939cb,801239750,9425300141376222073
+f61b8967-9762-71d0-b815-da59f36226ed,3519869420,75579108168611881
+7530e90b-c654-e5b1-8ce1-eef0d3732651,983387355,5972498567548059551
+db323c02-1886-fea6-c149-fcad8c8e3a76,3676855171,6630746151615768371
+96297769-891b-07b8-1e6c-14a2c29a4a92,2993945724,16599150480588196329
+b6910a68-a241-0c25-aa38-76765f4fad92,4108829219,7877109594191557278
+77030d37-3422-e6b4-619a-01ec1ebc0e73,247225388,14511958161737588033
+c856a088-54dd-3740-c2b7-76e151405517,3711977145,191502181081018169
+f23e8a14-619a-eaa5-e416-da253dc1c76f,2233709220,6663374922716563837
+2672b8a8-899e-53d6-82eb-8a69c06ccee4,300459960,11049320930714173963
+4d318031-a94a-456c-a53d-7e476967fa8b,1698569458,5063277610534078622
+d52a6064-4441-446b-4ccd-25b481498561,503169247,4331428806779368265
+d981c1fa-4892-950a-0008-ed143f0842a4,1633516718,618276404722431393
+13a5b6b9-c83e-fdf7-fe2b-8f60d355c7a2,736329827,7512362883337135068
+ebe5f545-3b7c-cc75-1431-87e9f3b33c2a,1296119814,2393563372893715789
+86bca071-c9c2-845c-4300-21f67b20bbaf,3082013334,11719342358205897231
+a49f4875-c7b3-62a1-132e-06d3a64bc702,2473269085,3349071290489027263
+ad6f740a-018c-e1da-b1db-e4d3db3b9e9b,1869177675,2029715710474285461
+c84ad226-da5e-648e-3f06-99970be184cd,3485170737,3198855914847916234
+5f649003-1792-670f-d198-db4d6bf32e52,3383984464,12933608983737580937
+89fbf666-ced2-c1c3-cd18-01d23416ecc6,2857314554,11158917862658263837
+139090c7-bea3-15c4-3214-0c69f8e9c48d,1427473746,728204302930885966
+1b027501-1dab-dbc1-e469-9eccb2587db4,425017940,9781362362019603018
+6085c2e6-9448-f1ff-d242-53b4afcc315c,175111502,18407438745413746670
+1538d7a7-75aa-6a5b-3336-9fa2b8a87a72,811744695,15220363065350149210
+7225500f-d1f5-9300-97c1-7b88e89d58e0,2857492550,16064280183121035881
+bcfe4813-1aba-9b87-9022-f79b565de218,1475043660,10149646425061185614
+fa043efc-c2d3-7aa6-1e30-4fa33edc2c82,4090618180,810661346553226241
+68fb507e-b67e-6b58-da03-d1c19a2fa60d,55142747,13342277484548045776
+ccc6bd28-a80f-4cec-50ec-9ab0bc6467df,322431470,13686614164969290943
+afa0cff2-8b32-93cb-e1bc-0de5bf331526,1530523406,17038905953581025783
+60c37360-5fe1-3b09-d19c-89d347133da6,111721585,2695091619533193755
+408262c5-068f-ed4c-52e9-c2ef1d3d6ca1,2772171604,10398450308657058892
+8a1e7c36-008d-5b5e-671b-0c33a552c38a,3271716715,7028065977131077548
+871a9d00-2281-3392-b53a-b7ba4197093f,1917197863,1814349991494957404
+d6058df5-98d9-4eda-5da7-cda1c4001f35,3887732581,6539952815897480782
+ed544547-cb24-a88d-d8c2-e8fb171d6191,1932779152,2568222759539445912
+a42b1ddd-bf36-36bf-5af5-2c9fb14354b0,2946857534,13466422821598998175
+eee807d3-a0dd-739d-84ee-36aa810209b7,7930447,7947882175674283760
+4422ef2d-33e9-788b-615a-cf14c037f722,2334895417,13364389180366394149
+c0072334-a61c-e5b8-dc9f-5cbe293e3909,2482101909,14686937744302290913
+72bbe435-48b7-240b-f3d7-ae65015efb2f,1826955840,4700374404053317403
+cbab5dab-e1af-cba1-b856-90cc9f205f78,1217179870,18225681940203654846
+53f72268-2193-0401-7aeb-14146fcdfe6b,140453877,16344491151332115883
+26a9ae19-f162-7227-e4ce-7635a63e2a17,3925435146,11295091121657255313
+15be3a77-bee5-7825-9fcd-46d0f51824ac,2951791169,10756885660389351973
+5ab9031d-b0ab-760a-7629-b81173406c78,2912544049,3876808061455022311
+3d3980be-0f60-6ee2-593c-042d54986efe,703984538,3288123657326308552
+2ac7bdb4-aea4-b03c-c856-9d8f5e20f8f0,3224866236,1236239091012239830
+c5e7d44b-4838-55f0-96f9-2f98b1eb9f4a,2462530465,8818387066444146491
+2956af79-f651-3231-4bfc-86b098512ece,2678085550,4002322981172808023
+7d9356a6-6dff-1770-bc58-5fc6885ed7fc,40467367,1724140740685184291
+e8624dd8-d873-7fb3-06c4-6a33ff584502,1708747636,1013865210853909520
+ab04c863-9fd2-2431-17d8-b50fe299f0d9,3483226127,4182986074089172286
+24a4ddfb-e97b-a554-9910-04daa33ec7d9,2437819443,11175884682456474692
+a231fe10-d6a7-cc5c-b8cd-0d252acf9451,1036875321,9067135996933996778
+e5de6673-1f10-5acd-08a6-ae3b929b1d9c,3133373621,11941079983459284017
+554eaf96-0445-9e56-3f2f-b1f400b2ca28,464040585,15316247853274025201
+58fe03cb-7c13-86a6-01c5-7994283c4f79,1484617303,1003651715717010445
+d98a0755-4dd2-8427-1a22-c176fb40a99a,2344284289,9077397602525694591
+e2ecb846-bfc2-1b79-ce1d-44b2d7fb654b,4087791433,14152704226997781233
+a628c7e4-f737-40cc-2824-9171cb0fde5f,891073028,10646393702937335495
+9bcf2730-3503-375d-afa2-b64de62ddaf5,1661611722,6251856739090194489
+b39b87fd-ecfa-cc7a-0d96-c16c138c72ae,2284454808,2007382180779415005
+31faf054-3c84-886e-01d8-1e731991c3ba,1662531314,10184803852302028965
+b3957080-f54e-aa10-d2f1-70c010ea69bb,253041194,4375540303264627120
+81a8493c-8387-a07b-dfbe-e4eab45ca87e,686017754,1005998310289286254
+01a19bc3-2055-ec8b-5ce9-a80abcd9af73,2753501047,8225587465967124623
+3fb38456-c341-1b9b-0322-d8df4a705d87,1641495122,17863143257550703568
+1cffff2d-ec8d-2906-d381-a4e788809395,4244248627,9651267219870837333
+3a0bfb29-5824-acde-6077-84aba6f16a5b,701848028,7315594638292228139
+738eeb47-a66d-ef07-4b17-270bc8f82415,1531036784,16488719004691440948
+6937f163-47d9-22e6-957f-ee1b974b19c8,3018468192,8000260721667196757
+3e8d075f-0cfb-db6d-6a22-6691cf1a19d1,2360236221,4142690310078687985
+69971f4d-91fe-3e86-4c0a-9e965130d7a6,1487988644,14688550816161956515
+7e5a544f-ac7b-d39d-2ea2-8697c6b7a6e6,900405632,13330365476673251333
+a2a18436-47da-fd51-a3db-a27a1a385a0b,3401831665,12006530473169170478
+6a8386fd-995d-f20a-317a-d493e317dea0,2120427847,13184041586698276254
+a276c950-c10d-2dc8-f898-8c0220fe4207,3480090182,6737510840534247851
+82ba2c4c-1dc6-a3de-697c-e3d2b501eca5,3781783086,5609272365624086240
+64952abe-94d6-9de2-95ff-d919a51816c3,1756197146,9909254348309209221
+739dc995-e30c-bd6d-0169-1b5e2b1c1eae,1722310862,3564837897960323950
+50c2ced5-4d20-d562-9d37-66100472fe36,182426819,2662157595011568071
+ee662ec8-387e-2231-58e8-571b2700590f,544321151,16109651358861507236
+6465036f-3bc1-5bff-4fb2-58c18b786010,3112376949,1984372485504684508
+5daa5b73-f5cc-288e-e256-d32aeeb79a19,2511270927,15678030342573949841
+3d57aa3b-cbe9-7e9d-95dc-66434e4d8602,3908921603,17759888919433908479
+c067ff36-978d-fa00-1713-5bc0b66676e0,326886780,15186325394258487754
+329280e0-b817-cea4-a4f9-93b03b353e04,2878365590,4492016396395111298
+15b8bea9-427f-a6fe-ab8a-573d6a65d85e,3842801177,15348004493462276526
+6feb0b99-babd-0772-0f56-c1dd97585195,3318483356,14940513866469613430
+2c1ab0f0-c22e-0160-0d33-4f22f1fba04c,2731178742,4173561965348572451
+e211eea7-100a-f41c-0d68-8c6643068543,423452945,9989478602344526927
+fb33b6ca-1512-62cb-b268-d7761081d262,2138742006,1185438547757390759
+836e33a9-e6c2-3bb0-a55b-8d41e66ec810,3296562651,3091632144326112661
+dc8bd903-21a6-6a25-0b95-a868cefa6420,4067781596,6543919293701077674
+c98e6f8c-99ca-e6cd-d523-bfb0f66bf76c,1013022144,13815953659696846894
+5d7bc069-879a-ddef-f779-c9bfef8367ee,2060990971,11167663929861541046
+d5f4b8a8-fd98-ab71-cca4-b81c75ebadb1,4180862259,17028412008738360902
+8778db46-efc5-a066-fa81-a162917bf8bc,923225560,13600145538091145351
+90d6427c-8d43-403f-6d6e-ebf5fbbb91f3,701587751,11437595059624586199
+607916d0-3496-dbf4-e70a-97e37c151726,903162017,5103589817354772649
+dff98b26-d376-4775-a680-db6358ebf816,105318846,15275230466787430093
+1c3431a3-0e64-771f-4625-e43467e618a2,1570435576,10803543623361484340
+c350682a-9098-2888-67f4-227986c92238,2669237166,777178989118673571
+265af10c-88e8-b61b-9980-e4930936981f,1628441171,5954031629223932183
+312f5d64-5af1-9c48-1cfc-59c02b226945,3239939049,12603103042218715732
+11940ffc-6f9e-07d7-54fe-595c094ab71c,20867007,10925020746691931260
+09d09f14-de8b-7aa8-6173-85d7b77e86f5,3010020115,4760626607231113293
+243a2ff2-d465-d5ed-bd65-bb19ed3dab90,4246359,571439147035467258
+0912f5e8-fd83-adcb-c081-567f9df49553,636081778,13736069870479047262
+b9e50620-d551-da69-7ebb-4bf7ad7f3dbb,2136000036,433571518739392639
+620783f5-e2dd-1b94-ec2e-e6e7a6cfc248,3492138349,12257793370042866334
+eb720f91-3b5f-03d8-8f22-2046791fc479,1421701209,2367316391182899147
+0c9f2fe6-e6cb-91ee-4371-b9acda7632a8,3084733225,9127343342151306069
+50900d52-2e28-b2f0-2b1f-2857c9608431,560555553,350895840840147484
+9b2e1496-b97b-eecd-6661-cafe58ccc73d,1432828122,7278263784092500878
+bcd8cc3a-c5d3-47f9-fea0-7a5bbfce2dbf,3094479368,14621113529522128813
+dbeb95d0-288f-7c6d-4e3b-142e46975431,1389166246,15316474186467414224
+394156a2-fe86-b4ed-b238-2bb1b94d1f60,3739230802,18438810474160989474
+c733809d-10ad-d02d-25d4-afabfb94656a,3702614287,1009208773230056450
+78ef2c21-984e-d74b-670e-c047bc39c6a3,4011155180,18258890833322583888
+96c88938-0f02-d316-f72f-db9470340419,3010477911,11849584168652122052
+b6d48ceb-e1d4-3f9f-11a2-2560ed8691a7,3050429183,8354677954392473572
+e71f0f95-072b-49b1-4460-601a0619af08,3069415637,16002964675650485151
+cf929204-2a1b-ccd4-ef1e-af3606f26732,4103995743,5290798698469243541
+e9e4cb7d-ae0c-ba34-b8fb-3344e2a281e6,3442919455,1857778008893540896
+ef976aa2-ab4e-e5b8-d77c-adaa5c578b8f,137785885,358061720905540118
+66863863-6789-2330-f334-2e2788843343,1776776377,9832060085873334964
+39858411-a33c-4f03-1ad9-2155f800063c,3184239086,15099013269703132504
+60bbed79-8c5a-c3c7-f829-176bc410213d,3714591408,13360897829494642386
+d4efa248-4258-6071-1cfc-af7ae1ff3377,3951580479,17717822814859397938
+bbf9e95a-0339-b057-4b10-54cb23434996,495376092,2765251618077270916
+3e1cbdf1-ac43-22c4-759b-a46663be04ba,3859940949,5353392892455640576
+a454bb3d-2b7a-a8fb-d523-135ece400ad4,1130377225,7281157178118579491
+6107c6ca-4c59-e9c8-1cce-aa0297cbeb46,3792793652,5231425756423931952
+89636cf4-7c18-ce92-aa4c-6f6629969130,2137616120,6973971437634845125
+6c8bc53c-ba48-bcf5-5067-2d0d1355691e,916559297,14502572466131907924
+230f6e06-9d12-a270-781d-b3971fa48b7f,2297603084,8953802787304479661
+48d48eee-67f5-3557-7003-2f25245491a5,3357093108,2743694395183915249
+e57f9282-f075-a4fd-4cb0-97af85a3d865,1536639259,7213919361765614982
+7af61ce5-47a7-4b33-e651-da7277974e9e,2166592300,11146208346416619337
+cc7461c9-b92b-f31e-7b48-16ab9e9a19d4,2692097251,12489054705333492326
+56ffb40b-fcd0-be54-0e76-2399b9d701a8,542613186,9003338067182906038
+d51bd39d-9aa5-2993-00ad-8339f9083ba7,1339354160,12285519881305231952
+e5767374-992b-88a9-abae-1e11d9df0670,3702961165,4258520607533258610
+7b66663f-548c-a23c-50c1-40f73e9edcca,2494738258,2451828159082952870
+c6f95342-0e47-bc86-d98c-658e81b9364c,323524837,16292617037403845421
+db61d756-11df-5957-dc57-aee6a0ac057c,3534781772,17426315563135483456
+71a2345f-7646-7a34-338d-c416f7c19dc7,1038842917,15297328313119049383
+d63107cd-8446-8db0-c54e-798dc6ccebfc,1237015243,15539017992693172256
+4c7c3da6-4d37-c600-f375-883853cdbb09,3043947759,8436098577960667778
+7453dabb-c451-e5ee-e2c9-1917b51325ed,727343212,5660159899979919117
+8aaf26a8-9881-d7b5-b46d-6ff252961dfe,560167777,13566957844619868185
+b5934ce2-51ed-0f0e-9837-3b5688cf47e5,1498206962,8572388144275874182
+885e4743-1be0-65f0-462d-006bd6f9a84a,2968786635,16765407436615654436
+f8f1ec8c-2aa3-f782-00d1-74bc6f93b272,3681253654,8318086354001441516
+5f05a8e2-31e6-806e-ea8f-51b5671c8dc9,3491207524,18232386017977682829
+205c1257-915c-cba9-484c-6a9eb7f6a060,2934197394,11809972931227200563
+89e6c4d0-e15e-749c-e955-804c6b2c6224,2567489365,4628672760636713400
+328478a4-5309-8e59-950e-f50d641ef0c8,763622812,2765987397338377432
+97cebea2-9e86-6457-01ff-7b62f83b24e9,3034498499,10548362250936996651
+384f9bca-55b4-bac1-9349-55b49e627b58,1713069647,17490272858688937947
+b672433f-3679-d332-d152-3a6ed550a66e,1575526535,2511256398829247559
+aba90809-9e24-dad3-3aba-68ea91aea342,3692530251,5840878927499701402
+6d8f4912-72ec-a0d2-1c5f-2b695266c19b,1515431850,2913344586897656254
+22847f8c-9d15-4e24-e6f5-45b00a2b422f,271427806,835997867693638992
+8f90cbd6-273b-70bc-d253-454fb869280c,4241003475,6999024163124015089
+68100d98-e706-c363-ea57-4cae048c2fe6,770693189,2563292060234706406
+f15ef2dc-47f7-f588-8023-cabbb6a5a981,2652009152,16342026995982502419
+d1fd21b2-72a5-2766-794c-2627c97ef070,1528093905,8861472711929829594
+23315af2-a7f8-5e7e-0087-aea0d7e5858a,3006313781,16918579517937543115
+0199b34c-4ac8-3282-9e53-5d10776a9061,5184351,15056741904907166464
+75607660-4cfc-7e38-9181-964e8988f292,1962130913,4313872185730716585
+0ad4b78e-4ef9-0236-2e1a-52fb2ad9752a,291924487,2746785362523692887
+9742430a-a152-0a3d-573d-aca55fc8a408,3995918780,11067834259779952963
+d1120637-a612-361e-cb09-a885d5a5e31f,311928982,6621110498305429565
+6d77ea9f-b455-6ff3-ae96-5293899aa807,624677278,4028440574252655140
+046e9df4-7fae-c473-cc9c-c9b3501b810d,709926275,2380346875078859788
+ee80559c-b12c-42db-4351-9521e85f2769,1692952029,13090441694558040176
+1d918ade-c76d-9617-725e-0f6317cdd22d,631383707,17247001065802371373
+478442ee-b0af-eda9-39d4-7540da67ce03,3731013940,13046806014240478741
+afa542de-a202-42f6-4ee0-bd9a94ef282c,147809658,8362329013246387053
+d34d7497-a95f-f051-d362-2a8a6d3158e9,504978408,18256445191759686885
+8064051b-d64c-ffa7-7b71-3c0e9abaccb2,942544784,3597861654487966743
+d9f677b6-1e90-2d45-0286-f76805e439e7,3215120094,17613779483906697884
+8de9a077-3488-789f-0309-2db0db2a45fd,3123477299,12343116123521582166
+d2a4cc08-d58a-4919-447e-a8f1b7a58a8b,341120746,9063132136939011217
+5151b181-ab10-c40a-448d-8e0a87a623f4,2504112658,10476999809475284533
+1d6d3e46-07d5-d4ab-3d08-976653b83ecb,2835553676,11572829985715110376
+28ad29c4-0b55-78e8-a086-594f8bdbf435,3194539948,1674114689920833126
+24a92cb5-f0b7-86af-3630-763c87a3d6bc,3608692180,3758986610465383803
+834a985f-407d-f141-ee82-9563460d3da4,3770912290,7400527354990575984
+a21b8729-8390-3560-4dfc-f22c89aa5628,2384168590,2090140689027318074
+8e3c870f-7c26-fc50-54c8-fc136311d946,4230932628,10405994413593877862
+077fc86a-eb01-a3d0-0f55-ecf2c7994e19,3389975900,8270049205406190140
+62e25336-3a48-2563-6716-31444e412ce9,573612131,11465089897239077321
+00bc257f-6a17-6bf9-1f0e-f7784a57027d,681540233,14613450233136172463
+02d368c3-23ec-0d3d-6ac1-37167b956f87,584632907,3574572424732425593
+85408cd9-103b-4474-825b-24afb7558ae2,3476424604,3244440336814648130
+0123e92c-f0a9-2aa8-6489-5ba98ef969e3,1656923336,7231498469319001979
+2189d3e0-c431-a3d8-5dac-029e65f79046,2994729459,17667346446143768242
+786cd746-a4be-047f-f6d9-59e2f2302b14,2759609146,2052463610836686379
+07c1b1a5-f73b-d8f2-9b78-8e81698bc6b8,835130149,2862064238662542984
+976ae9ef-b3c9-e062-e84d-520e62097c1a,1226115592,16099491214376623137
+fffa833a-f3b5-ca1f-7cd0-63425db37e2e,781580693,5216340613989083919
+d9c406b8-9181-9068-c356-e406ebf6e2f8,540432322,1947008739269810619
+16e23422-2023-db2b-cc83-36a057beb23e,3453629806,6389649994079648298
+bf63195d-0e8e-a260-e3da-db92071054c2,106404468,17505394672550798669
+434e6650-bf8f-0467-9460-8fc42c69f5af,3032537147,12466585369122039312
+105b5007-8cae-9b9d-fbd7-9d425db482c9,3799655527,17881106183247421761
+f1741fff-d1f6-4b2e-b0e1-d82f3ef6ed3d,1357737979,11478979712208812863
+fd1a64de-beec-aed4-cdfc-01696f8783c2,3524236893,9597701245717959048
+9a9c894e-8483-478e-34fd-1c23efd0d3a1,2316476898,8133271600805232909
+0c9e3d86-6b06-c3a8-4aed-6807a6ebb18b,3922787880,12598841544570792592
+ae3429cf-4225-8ad8-7404-20c2634694e7,377122899,8084597444602600313
+d02f6031-e34b-a1cb-64bc-6658e743bb1f,3334532335,10661137118254990690
+c4cdde98-d592-7efe-ee92-2ce5580ab5f7,2239901235,3227745496744333349
+3e70a723-6f99-31cb-f6d4-28552092eff0,364586235,1546688679308633625
+cab19719-f9e4-28f3-b2ee-c266e6df27e0,56778433,1861247342534659714
+0776c142-d974-9b67-881b-96a0cf6a5fc0,3739677133,10067206821753800745
+e104c7c1-4a1e-6194-12d3-2c360e33508a,3342105192,9889093600603249028
+f7629dda-1b0a-1cae-d942-7d873d8422b3,1351443472,5269363807989015417
+79b39d80-c4e2-50b8-7e66-91d9b02df4a0,1805363790,11638489172061868919
+c7fcdec4-aa87-b4ad-6950-fea082ad630a,3490578321,1508894271038028427
+2d3e5137-00ae-12a5-2d7e-a8e158058bd3,3221434487,10756165859928571070
+9125e453-4fde-2226-a614-3a8b4daebea4,4190302905,16496250804819430939
+47458133-35e9-f697-4d51-569873a95ef0,2353972848,9271926161252766968
+3062597f-86b7-4240-c130-fe701017f3f4,2149603686,3270677617360996019
+4f909700-2f60-8a7e-e581-828e73168477,1165064899,13660772289734390864
+4fad7827-42a9-f808-af50-1eb708ab7a98,470888163,12478112068460475040
+2dd79db3-65fd-e42b-4e8f-d588d1fc404e,157361342,11408208613797834529
+dd0388af-7a7c-34a4-e65f-19aac496e53f,3091408294,17559532547866850142
+8fe562f5-ca0c-d0f0-7ef8-8ad47361e714,1509354352,9529628212084267578
+cccf1dfe-cd41-70dd-2996-150c08fe90ed,922397095,10576347422075620064
+f5787b7d-c278-b984-722b-c0d9548563fb,314138563,424006323581185415
+b46bb813-effb-d9fa-731e-1d3a5267f90e,3713721516,14564032028238285466
+937efc9d-a403-c7ba-4f13-876e4aa054da,2655601839,6399740863446517232
+0c8c50b9-1ba8-2eec-ed6c-9462d6901f5a,2349215227,1124404336833900423
+42ce218a-f98a-7eb2-acce-32455d4c3fb9,3425993376,2052541210459390916
+788e5cfd-8e0c-5dff-d298-7fee89fb4397,3464143749,4122198734237032769
+25267ae4-8cff-2414-0af4-7dfb40f2022c,869206101,9209422550635381559
+37717049-ba39-8936-ec4e-4fc92ea4e529,4246663702,9687909118566784542
+e4584fd9-7a4f-acdf-83c2-8c7d02b8707a,2895440573,15075089591665757154
+af075d25-0e76-2a7c-b9c4-5b820822fcc7,1036094830,11927730774786461756
+ec3c657f-8bc0-4cf3-bf86-72df9d181e2e,1110345684,8303357037325058125
+e6944615-1f61-f8d2-582b-7bcd31a20fbe,1208894868,2716011687708705528
+16c8f419-8eda-8c8e-de9f-19505c8be27f,2640706086,13278747554146145447
+d6ecff13-6f1a-540e-a027-547281c19902,404252794,2397685200373097105
+2ec0ad30-a915-ee86-eec9-75e776703dce,816574904,12086980265897524973
+3155c4e6-97b9-78e4-e8a7-b2938d79cb38,3591380734,1950785578739046415
+ba47719e-f5ec-80b7-5ebc-98db0c41c269,3647829794,3988893023601618023
+9a72ac0e-3958-289a-5d54-405fc4a5ac24,630232230,14286792121525794412
+3bcc660c-8153-1171-472d-18f3a778a23e,1174477028,4369728027619958886
+172cd999-fe3d-6dea-a8d6-720b567c7668,695461007,9717533948976366418
+31f9b375-d91c-2479-38fe-6cc6f736dea4,2827271726,4857320631043666881
+edf90323-6b98-e85b-bf77-2df8d850e55f,2878718478,12477096799699867817
+245d5e71-53ee-4946-899b-ad0f04fde8ef,2078075879,3716372894630340574
+e87f70e3-4a4b-f4cd-66cb-699ddbd501ce,2869949013,5561378778672138273
+f7fcf890-f91c-e947-8357-af1336c39553,3443817140,13524693450354156772
+0a9faefc-7a6c-1162-02fd-fbf7aa480ff4,1351221319,8553168863140546059
+a98a848c-a863-6bce-2031-3a445980f55f,2983593333,6609673525059048673
+505eb1ee-76c8-5829-7733-87d8b60dffa5,2055833792,3456684688084115432
+45d07e92-a508-fc07-a92a-a2a6fb8be2c1,1884180376,16063042077698655723
+5634c04a-7b16-3c9e-1aba-efc5bfeec3ac,3625284970,14349652227935041598
+3686e271-a57d-3f77-e9a2-e545bc580dca,1216668471,12415073523331118015
+be3df628-54d8-b0da-5cb5-3f98686e253c,527055655,3818443437818855258
+aab348f2-8305-90b0-e1eb-607e21b235aa,520546728,16383821821687406510
+203b5696-cd14-25c2-6ff8-1382cddf8428,2110490618,16229197216656708132
+e0ee110f-6c4e-cf0e-01ca-5b54f9c827a2,939735900,10375584754494917663
+737f9877-bc54-f2c6-3bdf-bda4eb228350,3757189664,5556072168462936512
+6082438a-9dc1-736a-31b4-5c81e627d821,2137787934,16353856933334706113
+cb893645-7912-8ecb-44ce-1f42053abe63,1698744744,2352093389190117231
+0b9e0977-ea8e-886a-1cec-689b77fa549a,2746917817,3950631353825020949
+6a192c5d-7b9a-1736-de41-27e038bdd9be,3586303548,9746459751060911456
+9da285cd-b28a-0941-892f-ba9bd9c874b6,2789563272,15863322255264075722
+c11874df-65f7-72c2-2486-4954b91be3d8,1407720301,4899796028992244880
+a2744b78-099b-720e-1f10-a96a09989150,1945379862,6646357128445677473
+2136e2ef-38b9-edb3-9207-0bc796a8a2f4,1620646346,4865218629737943925
+6711a6c0-e302-3404-64b2-e2ab0f2515af,2481549109,14810020335407865635
+65ca83ef-fff4-489b-58fe-08a17cfe3bbb,3416049107,10803813502375091896
+1488613f-07c1-d97f-525f-7db883fd41ac,1773198125,10055905541019955590
+d1679719-ff12-e769-7787-4915a3316c7f,3994482711,9865476044694729145
+a9382470-597f-b63d-cba3-c7b5fb734a79,2487848839,5779682162863977386
+bf002563-9fbd-096a-aa45-9b37669b23fa,157891337,17474917163671562436
+4d74aef8-7ef6-c7ec-f580-d63d65692b63,3411835081,2120510948089977155
+9f3d7ca3-17c2-b95a-8e87-7571961d981d,1110702674,4082332835490013658
+cd5bd30b-995d-6921-8061-76891a9c6c37,1170913803,14021714142834915926
+c66b23a1-b56b-fdeb-fee8-e08568d10951,1764368872,17950751924907768676
+99c4c4ed-4c3d-d326-608b-97c41a744cbc,2038314889,14421894452421772226
+4c81b89b-142b-0492-cd83-d7f28f64ec4b,361304149,461194027866261257
+f2399805-1916-f779-7cae-b610f9cee6be,4164960831,3876402313806214798
+2beae2ab-6105-e61b-d6e4-888e9b62a28c,1584837237,2397670247480933576
+13fc489a-2010-fd0f-af2c-58f43a40a265,4266803764,9010338012171052791
+c750d18c-aa43-a9cf-0435-1b782a2dc9de,2644960397,17077409492529772111
+e63d8e51-d70b-c08d-f816-a42a2dcb53a3,3791404626,7367427418075948427
+cbccbf05-c2fd-315d-f34b-32cbf4f4ac7c,475028614,6865300199040537514
+a61192a2-ac8a-ee8f-1071-efdc6be70cb2,2213625662,1312568331963044646
+818fbbc9-be33-ba1d-17dc-083445d0b2f3,1477510493,6317958379960877553
+67cdc7a6-1766-2c54-e8f4-45b9ec5b3327,1656348416,15066093451675895632
+78325502-8dbf-59e1-5a10-9ff399536048,1992685681,16347356993646833358
+cf7240d8-105a-42b3-bf98-50fee6f1b3b5,759001804,11660971086281992883
+33384c19-737f-ee72-ae82-dac0db2d0003,1744271681,6192814961884247216
+00d36376-17dd-0334-bb52-11eff2d993f7,3720767880,1708621067745642889
+03fa4662-d975-a07a-ff3c-437d809bd8d5,576661594,10493202657008688372
+0d7bf375-2c57-87d4-1889-210d862c50b9,268709662,1902776204415820480
+f651d917-2502-2e70-6065-df937cac4878,1339597086,8543711162801368868
+56fd334d-8ecd-5771-5c53-5f832c4a9f45,1537716954,11396809776096383008
+ac9c830f-5b92-cc1d-c8c7-6b3c45419c40,1034230942,12850510001132591863
+17d4906a-9949-3313-5247-f338a01b2fac,1695661074,9751950289951376019
+e14eb3e1-1b34-bc2a-4f1b-1c0d87f59af5,2619970498,7498765115612115787
+add8fc16-0d43-6415-15e5-5b7c7d826245,255344919,1405146839753065804
+f8b80310-ff81-51ff-4a2f-fcc4576b2836,3407774452,4669069512366489878
+bc588ff4-119b-471f-3ebf-6d7f50926633,1092044914,7722368525747073454
+2742ef94-fc99-f39d-17bd-d06cb23e5ee7,3357425453,16887624081930153623
+6b1454eb-de08-3a62-52b9-886fc69f8efc,2043257467,17718912012842398137
+7409d9ca-ce7c-b393-83b3-7a8e8742f276,2827965551,342436170282108312
+1619da3b-3e9c-7b8e-5e8a-6fafed0b5353,3973826637,15254722836046084209
+980e93ab-25ea-d98d-88df-321745b2b434,3760754632,16362709376075948701
+794a83a2-89e4-210f-8aa7-333ffaf9ec61,1744139805,3213846926827097080
+8032d87b-8336-398a-7716-939074b34b23,728845893,43102831133714986
+cd5f4cff-d692-58cc-bc42-8dd47db7436a,4176356663,8993310067970043091
+67c5b563-5081-3146-d5aa-419532772cbc,1660751005,14326743559520888920
+148139b1-96fc-fd40-d0b6-2796d1194b94,2500328022,9570339102428333635
+0dac55f4-5cc6-6ab7-384a-121f41b071fc,1679963314,13182497248102594749
+ac2c79cb-5639-f47c-f232-3a0c0fb51bd7,3938349229,17606978729900486499
+9a050415-8ada-43ed-04e1-f0293d681c22,1812502912,8382473391767053404
+2237adcd-65b5-ad8d-642c-8359eca636c0,2792708753,5382351662823571767
+247effea-8e1d-18da-9a98-57f672515d9a,3204419835,17981858653829137429
+40cff0e1-413c-5042-1812-dd2288fd6998,3972530645,9862537918903928625
+a2237608-018d-9e05-7cd6-5c9ae473276a,167672464,17077713551632135451
+d1d1662a-fe67-df46-516a-23f70dc5bd6d,3060512109,8085122034016922838
+774a2393-afdf-c8a8-2540-62ee9f617d2c,3417860473,2601115933182438671
+19519827-2ca0-b821-bded-ab1c97a2a593,922188105,13100723658617361362
+c864b11b-c39b-59b3-4284-b6c34d32c653,433049606,15597492318592100578
+77b4ef10-2fc7-3420-1def-7704d203438a,87109137,9005311011556070246
+be6b1c28-961f-1439-e8d3-95bdaba48ae3,3693052591,1518555321129965620
+c559bc27-6bae-0ce6-391e-cfd83fcae09f,2145344084,14561868645996006600
+78e9f00d-5e12-eec0-38cd-15f0b4bd7436,2139751492,3527097915404890167
+662db5f8-b661-9064-06a3-a6224ae5a7aa,2846155813,17741402551018374299
+ae6192ac-6f3d-8734-3fc0-d416dbef26dd,3906008187,7745994374342629100
+3f94bb24-5963-cd66-259d-1033a2a4432c,588125927,12164371567423269714
+456eaf04-6f91-0966-3304-c6d52f18147e,3831431998,1335795554168166629
+46cda7a0-c5e0-5556-14ba-f4afa109b672,363965511,16313354234853455731
+5556c67f-949a-150b-6744-db08d5b1a425,367400893,6412545456107119140
+6ca41667-2d47-a31f-9883-12a0ef65e91e,923962125,17888434075930073984
+fab27acd-5742-8617-5fe6-3e617c0c56ed,747470888,16419086251595640576
+3d6425c1-6975-6bcf-49a6-077fe62ee89d,1905107616,13258187132359627047
+0933b780-86ec-5e1d-a0cd-81aa767d52fc,1418116496,10125030477211117412
+64a0ff52-05bb-843b-e239-494931318ae8,4079283006,11780930354212122674
+954d2915-b3dd-92c0-ad5d-1dd1e4fe0da7,723215507,15357915410567593178
+49fd8f0f-2ea8-ea23-670d-61beee4a2892,804628497,16055793255152012099
+ee009a09-7257-bfc2-b25d-6d3aada920ba,687450925,11262963969144067515
+7f884904-a757-99d2-cc17-24bc144529bf,2581113155,12906977960008767895
+e2d43d9f-a65f-81f9-6482-9c0d888bdc49,2960802808,6784602241109465164
+f7ab8725-977b-549c-3f6c-927283e1d0a4,920242555,14637166443025214297
+24af875c-ffa7-5165-bb42-5294dec16025,3555654983,17358883708115371382
+d50a8371-b469-761a-ec5b-fadf9d4cfb1a,698869589,9250554891663002525
+cbf7f4eb-af0d-b748-78d9-a2e40fe51be8,2348270291,4254270668975100370
+a03978bb-b59c-5e3a-7f36-63d246e36312,2355366123,16012122282481924179
+fc729532-a7ef-5781-0b78-70fb613de13e,2913430917,16686053475750550692
+0fff6d0f-194e-9db4-4557-2b098917d965,3866677052,13528315583213483093
+cbe00eda-93a9-a814-28b9-7fedfc096ecc,762443397,12213891390685680283
+92549d54-3551-cec9-eda9-ccca50497844,1065219080,12338344404481890564
+d77c8e1d-3a86-c2ed-5565-d03da69c3776,240516727,9743023185637319460
+10b4b8bc-4531-55fa-2631-19c87819bcf9,1080281432,12177981646033358268
+d0fc513d-ac6e-234d-37a6-d625f3997ff4,3329258605,15749574985790770237
+ee1bc42a-c8e1-6d7c-41a4-d872189c02f5,1594932873,12592808497202796065
+e648ca4b-b5ec-b0e1-22d1-f0da81706261,27071192,9049191633850004699
+81561b14-70f1-bb94-429e-4ba83fbcfe1b,1342612564,7307984046957495624
+39067434-1831-beef-eecb-03aa6b6b696f,3032101334,15691186575925889283
+7b24e9b3-b502-dbd0-f2c4-f8f25756cfa0,3619612720,1694252231104046132
+3cfc773d-7dff-e424-e64f-f2df77b4a6f5,2883737819,14762201371458200496
+483aa27f-a6da-6187-7f1f-81fb18867f52,1223812987,8842016327104460112
+7b01bf32-ebc6-32d3-826b-4d5e69b8e750,105965876,500151458594049990
+80be63c4-68e9-444a-d408-d19ad3b36b80,4279868876,12730083970694969956
+8ef802d6-cce5-2bcf-5a15-8369685dd7de,395310247,1119990400703675554
+cc652ed9-1577-6ac9-0bb4-4c6be83cf4c8,1433973103,10163737735976457324
+f1e05bc8-6d8d-7327-583d-946a83ab6c9a,3413573608,4468584058564740580
+bf8f6dde-53b2-7ee4-8644-a3c41bf9d22a,1379500695,16124708736047002025
+b76b4ad4-9b9f-9c2a-184d-5cb7a183732d,3953988699,15235438909755704391
+9d005c37-b881-37e2-2dfb-0af682b81092,1395200030,1665436804399989695
+5d8f2244-36fa-fc5a-cd48-cbcd015cfd83,1437795191,7448092498375002924
+91030af0-dd27-c6cb-28b1-c98111382d57,4001308220,10338075663888411334
+25fcd84a-e624-4fa2-a889-b81a0769d0ed,2262640969,6627492457883658987
+ba2b0e06-a7eb-0276-4faf-dcb0ac9ffa37,4031907546,16115849311603673792
+33ab75ad-050e-b96a-726e-3830aed7f39f,2516074485,4730074629909801391
+e024fc63-fbb5-3828-2059-f231b1d0cdab,2081059647,9613148095628862773
+35237561-42b3-2ce2-abe1-c752986e79ea,3111466804,6653171477092418717
+b819623f-43a8-5e41-71e6-aff20ed21980,4220011610,1730157001685214054
+2d0c232a-4d18-d246-43ea-186101bad4af,3267460587,5621371910140741930
+073129f3-29d6-30f8-2785-c819bfa06931,1222826994,15907598226616787096
+ae779b43-070c-6364-8dde-e6814b05de19,2639559946,6010501772390193851
+a1997d88-91a0-6656-78f0-91848cc73c45,3988079969,17368878543419964421
+76a475ba-7388-bb38-9fb2-dd60b0eb182c,80332397,11196311863695534079
+064a2815-1079-c65a-289e-543d747c9f5b,2563596759,18338501665193890968
+eb6f2898-6b0d-4696-443f-bf7168330682,2523033328,7836489934081490664
+74da10ba-b0b6-df49-1aca-befa6e4aaf02,3189119283,5898764575051380915
+b35122d4-c32c-193e-ff4c-78c670d18940,3371447344,85080606295132366
+8518f992-0632-b9ee-946c-648cf4148d22,3335395398,13856604458678982619
+e7faa510-eeb7-24fb-5d5a-ee313d95dbfb,1623688854,17577291122298230199
+0d9f6c1c-ead4-24c0-1cf5-fd41495ef3a2,1261804334,273418164029551284
+8f624f32-47c3-805e-2dd6-bf87d120fd6e,3309432932,6354686573423290705
+4768f443-064a-ad52-8573-76e9f14853fa,1512693861,6962298101706800076
+26075e28-3c29-3a86-2496-30b5dd92cf04,2258812134,947093487313402475
+e2e62eb7-b714-b4b8-3be6-c908442b03ae,1055141687,10013160367892293962
+2db0660a-753f-f836-3fa6-3fcf28cd837f,471721274,11941614500766962888
+cb7580c0-4228-b0e3-8056-c3609104646a,2430761290,4162830029936662857
+aaa96964-5ce8-1345-c9c0-b1d3355d899d,438883226,10759436623759427728
+e74d759b-c35c-bf55-fd92-f57e7066ea89,166226363,5938625506104305281
+1f431ba7-441f-28cc-234d-7bee6a4c2825,1738824590,13571806522067068106
+7c1aee97-df6f-28a4-6f6b-7210c71be25f,1556268891,3984742457876780604
+1b65805a-f7f8-2f61-5f56-6c9340b1d70a,1934716951,2910271879592879599
+f31b80ca-2f3d-0303-e036-8e85145d7ccf,1962383198,14362265285765471463
+b78f8b15-ac40-7a7b-a771-15b02f0cb3ac,4032664602,13328080504919208052
+983aa5fb-7d7d-1ac5-6d46-1b33820b6184,2088218984,8344208359689554559
+815ab026-2c8b-8995-11b9-b9fe71753119,3517535384,9732654214436853871
+d267127b-448f-83eb-81a1-30d26370026a,3616246146,13561005031509753454
+dcf26fd2-64d1-740a-9c46-d57bc9a21658,670929239,3954323688160910020
+4b0f3505-cbf9-329a-e40c-0155f023ee17,893500860,16592688737663466353
+204ff4f4-3f2a-68af-0bfd-da93383258b3,3554908230,9945973872532937912
+8d32843b-4d4b-81de-7c0b-15c4f4a2b6fd,3637804726,16954046030099084436
+932487e0-cc92-ddf6-d1c3-fddb9221c4ac,614755198,11147096471798158939
+96978364-89dd-c79d-00e7-18a0a792fcc8,1793027181,3471688084575026037
+308a4aa3-0bb5-cad9-58e4-51e9896a523b,3278344506,15199849660026930624
+582cab07-18c6-5443-4e88-4081955bdb83,699703161,13176319884117225
+b601c4b3-0195-8449-74fc-8765670aeb82,1093478781,4143587378072965611
+c95d1eeb-417f-6a00-fa10-83122e7468c8,3908317998,3237468659799536411
+d4e6d91b-5943-6b4f-4eab-bec3d680778e,2191422058,574978726156256992
+35edfae8-72d5-412c-538d-61715c295cd3,2134941557,18106365584503301993
+7852fdf0-3189-bbdf-7410-49ff81ec8738,2340594883,15973679277859879421
+182049c0-ad62-c047-80df-89c93e31f5fb,2297829782,2136436475942564662
+3ac00143-8fb5-627c-c224-eb1b354e6f42,2297500048,11642783894645562183
+cbde265d-bd1a-44c9-8740-21d83dc10f30,677757233,5257754921001493969
+6ca62de8-2593-e0ff-dcf4-63b21d569df1,3344027481,7237389041382925448
+0824d5dc-8c90-aa16-8bdc-145a31463b57,3944740034,15927792467660472429
+456eafa6-1806-ee75-c3c6-0de1fecc2627,874682302,3769367006832544249
+9876eb53-5e9e-0f17-3676-2c5af8830d61,2114855093,17912727264826762182
+405d218e-1567-2443-aac1-d02f18fcccac,1987466239,758331769535217060
+6ae77a6a-581b-f997-6b74-730e970fa844,1592842006,12649587230252986033
+8b04d6d2-f464-deb7-8797-554547996128,314331354,15749077565729740555
+cf13866a-a93d-a8bf-a5a0-d44d7496bacb,2593121062,14542456456717292779
+6ae28113-fc2d-11b7-13f0-b54c9fedff6a,3939039753,17468059813955198063
+d6659cfa-0fdd-c672-7c56-3375c3f2f236,977054335,13424784421206514571
+208f6d85-e477-1182-0db8-f5e79c9e03e5,3793716365,15672797806339500376
+bb640640-5e78-500f-c32d-f4662154cea8,2379460131,14981237259050859186
+9e0f808c-cc0d-6148-f500-ad08efa88445,2023907320,13944953283158050454
+29a199a3-7a06-6f74-7cd2-7ac23712306a,818443991,15229867710472307879
+8223cdbd-62a2-c808-e2ee-36ae76b5238f,2369623053,10766124377220211422
+e0e23c97-7386-9df2-8df4-d3a678fa8ec1,81339,8352822888618105744
+9babf58a-f742-63fc-debf-71cdaf87c894,759651576,4634707429936573408
+e3fbea08-8591-801e-b0ce-53fb7944bfec,131367685,10116560976588829646
+07bdee17-a4b4-aaeb-ca12-2b803b877bfd,3928573388,13528088602878886249
+3de1d6b3-7fd6-5529-97f3-4946856a040c,3901509310,5766724005037884764
+614e48e5-3c69-8df6-10d7-04b1f1d8c10d,1305928601,16443389887248659591
+a97c0a74-bda8-1b93-e95a-76932b1671d8,3322743228,13498372647885573167
+afc2b22f-e556-a775-d47b-6dbdd26bc3b4,2779013326,14564361352403551051
+83554ed0-4ba6-7eaa-513c-201afb5b1b6e,3842901020,3139629971596371104
+c52a2457-af12-4fb8-685e-9a5bdac9c885,3329675960,8148005439957093554
+7d2bbf01-85e8-d734-feda-029b8321e679,1226915538,13539619534745906821
+b0da24de-892c-f0c1-08b9-197d52ce9570,1328871488,3768781878092648066
+c6fc0496-e350-29cd-bd5d-6a73d85a411f,1241845180,16943909267972028365
+dbe6dc92-5be3-c872-2855-e09584a1af44,503539433,17226383189152596809
+5e6af27a-4280-6788-7aeb-77701e41e800,342509263,15573768134000230974
+ac4c240b-a86e-8625-9616-fd654fe5cf04,1941219213,15613110268635820545
+55e1b5fe-32f5-2323-053d-c78180ed3946,1665346243,12051419125312972030
+1b30b251-d8ec-d173-aebb-8a4f0fe5794f,1938539775,9393832730536225642
+0490723b-bf2e-a8ab-7194-3979b41aed54,397008389,12186388744324488731
+90091ed5-3f57-2c88-678e-14d1458748ab,1452301821,4124077615880231797
+535ba8c5-82a2-6f8d-dde3-305987b75784,3541593313,341512796647184201
+9c35161b-455f-e81c-18d2-0184c75d84b3,2500325171,6742682870660541280
+f50bce97-c3f6-974c-b020-54aa14d21a71,3580954398,14388644397569607831
+a61dcf6f-a2da-09ea-fe10-d427cb3637f8,429757145,5020903123928427262
+a88d1c6d-0718-c085-ff63-5c12934d38fe,105273088,840197273581672768
+beee9c71-4df6-8965-03f8-5e486ab7ca3f,2120651423,13003566966008847781
+79432be3-5f55-6df2-39fb-915fa7a283cf,4229383224,13061836993573929963
+612435f5-ac9e-b5b2-d90b-9178480a8128,326177258,14280034152005388256
+2a7248b8-482c-39ad-b793-ca940c857fa7,1071245870,12709011255976002097
+04a326ef-a877-6737-5e82-6fab75b0a343,4099157940,5553327717787916742
+17c59256-1767-4282-cde0-69e7c1771280,1128648785,1959641209498588939
+9de6849c-b84f-2050-5b0a-6855450d9512,1994308338,12814260992524919761
+c47b5d6f-016c-8930-55f8-1562368c742b,3422216913,12238507649294051574
+cf88a3fd-00c2-7b29-a78f-507979fbe7fb,2930283368,7396451643760302524
+a765ebf3-b32a-abdc-92e2-47097d56a86e,1691401856,4025888528443743057
+126f2806-14b0-f51d-3507-14e720a28db9,937834254,4760251968847483316
+eb59bf9c-0ab0-a7b9-e25e-ecd610a02fc6,2436664982,454846398646484694
+e748bc8f-eeba-516b-9946-a63d4c05b45a,1623133553,1533731756608241679
+bf3331c5-b73a-18d4-efe6-08c5b6f1d449,3789567109,4596938824226289245
+280acb56-b158-d6ce-2a7f-a838866a3c1a,2519505074,97361922645854985
+775bba69-d67f-3225-bc44-d22feb97034a,1076044690,17115913400748181570
+b2f4fb98-8989-1a28-d137-841a4076190e,1310720983,5506197604936501914
+8c29c5da-d0db-3645-b505-a2a06505906a,496562829,8646585926890731108
+028db2d0-c514-7824-08c2-a6549bc85900,930046874,70995303912786768
+cd31af35-3d6f-591a-a3cc-3c668b5c6c6e,4090431717,6023650453766313952
+b7481e6c-5cc4-9551-96f8-1844dc5ca89e,3753155585,11190241767879920401
+6d13b829-1d45-0cfd-3a57-55f737d7aec1,739250402,13458571339029044438
+f8841275-2abf-f9bc-7cd3-961eff6b6e98,1253634672,6665640758799014246
+b3dbfe8e-82cb-4b88-e6a0-ab3d4fa3b173,2624407189,10788388257616489659
+f04374a4-c656-f3a8-525a-d59aeeeb7e74,622178986,6335881844280788706
+7dca8760-4969-174d-aff5-a7307c84d877,1073015533,4246993236985980610
+08a4aea6-08c6-bfe8-60ce-67f485f85547,4087662077,5697381961892978896
+4a119f84-d392-58db-9f16-7a13478f3077,2522735652,12075163705227933662
+bf59b79f-d824-89c7-e79b-7a2cb4d557d5,876948170,14506384611363357893
+83c0a2dc-a9ea-b722-b153-4b13b71aee1f,3454438055,4977084831844425134
+338df5ce-f55a-3417-c4f9-7cd508203fad,1290302332,7808586040809074468
+afc59705-37c3-ab34-cd11-820770d03392,3142499541,11568209846897585184
+03e8f6e9-b103-4f73-06d1-f99eb148462b,2428650665,9102952619051734611
+1bb70eeb-988b-a117-362b-4279192fb407,3777453757,5894691247689413963
+09091f2d-37a3-4e43-0738-3e496a6ec63b,3913804867,6228034675996991581
+36faeeb0-bb7f-2189-e8ad-330de60a87d5,1807812244,16184201185925070138
+ed708671-cd3b-654f-adee-5e54827a75e6,3910711322,16175938810464038881
+2dbbcc4d-d982-77cc-8194-11daceb4da18,740806863,3434651800294334035
+a5e131b3-2e92-f9eb-004c-7dbe7ff2a206,3479247394,12771045094083253045
+349a7e4b-9934-2aa3-0761-bb20f583f4a1,2528566226,12272804210944914937
+1c6cb545-54bd-4384-95a7-be6e6b6807a8,2580468285,6220718268245922742
+fb6a7c3e-7551-77f2-80e9-35e683f660a9,2826034824,5622720882246022489
+8909e966-7044-99c3-5cb8-3aaa3349496d,354701302,8339655500953123485
+8be240ea-83de-fed3-48a4-8535c5e63e24,671058041,1385685074400365320
+56ba7d05-4ffe-43fa-ce18-c2b6b5e68c02,419076805,15583939030274060794
+2dd03a96-0108-c54f-1636-3d392e78f685,1581744571,5066622025139763389
+00bd473f-be33-7dfa-92a6-57b08eff9625,1045004694,2123033483151392559
+6a4be32d-864c-1098-8d33-7364f569ff55,1882875210,6406197025940768581
+5cb33756-dec3-2197-abd9-2d6d7cfc0bb8,2507115721,14939143237336026556
+6fcdb3be-aee4-8e4f-5fe9-cadd76202aac,220559816,736703258930290443
+b776c849-ac42-6568-e2a0-65c965cc5dd2,3404897264,1649383041334573633
+53c76ebd-0938-32f8-fe07-7080877c0df4,2193623616,5921706758919541349
+312567b2-28f0-02a0-e321-db408e500267,3977773648,11376399236098407571
+2557a9cd-a244-21c5-0eca-82e1e1f147fe,488233008,15024062299189290568
+27d04b9c-c5b6-25a8-a2b3-3edcabac06c3,1427674411,12791494648802714455
+01759840-90bc-e67b-59a5-039790fed1b4,3408700173,15356658141765652266
+f28f444a-be1a-4e78-b65b-b4f781e6f931,2140439361,1587372012360978868
+6006c0f4-015b-6fd0-3f9b-71a664d50aab,682231981,4526587403581420911
+f3c45b06-ed42-756d-0531-8c245f352c03,234397253,2734802973224726129
+6035acf8-8f3c-9430-5764-4f78e71ece4f,3223408071,12266312580036091171
+840221a3-401a-eb0f-b200-4f0be3b5542e,461860319,13053093004786136910
+89aae2a2-48c4-a375-3086-caed82043134,3590474618,11330176880816992489
+49a31dd5-d42a-3368-db2b-493369935884,2626673844,14754924380473259760
+c82f9565-5a6a-df49-2b3f-038d91720a5f,1274121896,2802690882717062387
+bc29cf63-6795-0513-0c4d-1e4a8ba16b71,4004819091,14729323742299690057
+f6782b1d-6a2f-8997-50a6-369706e66c09,1705780329,15940154813122966660
+3ab4f43d-dc73-27f3-0475-ad397386a370,2873202979,604150262766846128
+48987f12-0449-b742-434f-73bf69ff206c,2026168264,13137341767312577200
+5b9f859c-d656-421e-af63-23c2713ccd5e,510817193,10297821223651151626
+f921bcd2-ae4d-9db8-82f2-5221b5e86cc0,2661714610,7761127161376725951
+67e3aee4-db45-2b90-5802-0e283c29b326,867098751,315220573990337240
+ecc81402-f35c-7019-a17c-7f9430554010,1335126117,3655571340116027660
+5baf5138-dcfd-a257-bac1-6274e4c507ad,2616726007,16144167781275457790
+dfdd3f11-9b38-0c7a-cddb-5be75e5b4478,847599081,5897362993799716154
+12451b26-0468-1e91-937e-6887b1ba6814,3570636080,13327600438589151773
+3382a2b8-d35a-1b65-b3b8-174b1af5da74,173670911,150216788611551056
+e9d6e7bc-64ba-7502-b320-66695bcfc161,2882351347,6880544179902647988
+0dfb7840-b956-00c9-4f6b-3a8aca0bc803,4060218671,9483930894028713640
+5c74c6fe-e0cc-476c-1d00-55531f2b4046,917122678,52796719389532361
+45731e17-dbfb-6a04-f0f2-a41eb0ff1850,149610715,6019505037508728931
+05049f43-4304-f5e9-f636-3cb7a4d1d9c5,1127999319,43782267353219052
+78e77783-fda7-ce28-3df7-4c81cd3435aa,881822894,10461319987235449226
+56ac0532-ddcc-0501-65da-99e7ef10203f,2669692658,2275785092513546925
+7ec9edc8-d9a6-d88f-1854-9b63adf3f765,689524350,4857613906271120118
+9a8c7710-395a-e200-b993-ba1026ae71ac,2006516133,17546029048716244942
+dd809d30-25f9-1d64-9087-6fcefa54817e,2158497722,16886691140456878785
+1a9662bb-d723-c24b-457e-8a213e324a0c,2488380278,13684548718126595597
+cb9d5d09-653f-6e11-4c82-a2bfad9a053d,105746511,3882283808169627851
+2e88c1de-77fe-a0db-2319-b456538a812a,3891753203,5682390282791897883
+39b400d9-a100-24a0-5dc7-b56db157cb95,3944053872,8735311623873173162
+46a86995-544a-5e92-07e8-eee60be66065,233981801,1480182239199468773
+69b42f1c-e7da-1738-ca11-8f8f2ad3a665,1489202090,5354980383240456419
+003591b5-f234-f0b4-4b55-019a0690619d,2413420887,971363667203393326
+090c4047-008f-e0e4-3e98-eb618d3c8dd6,1787162276,10912225971213188870
+a3f1f372-8348-e449-a78e-a71fcf0848d7,421319637,6245372789448020118
+6ad25cd3-a753-fbb8-157b-33d63b8c8d56,122665256,4004152210754704048
+38862c07-cfb8-739f-a4d1-91df64551e36,2408849429,17603850303207711686
+f14e7c60-8e34-3099-94e3-0b2465421a33,1629542179,3645197381243863115
+a2dc8f76-2a1d-b369-64bc-5ccf3052f265,1920241244,17246699032259695345
+c555d388-556c-2f80-565e-cd3bd5219c19,3458931043,14057384555597034276
+fffdc0e2-389e-396d-1cf0-f91cf4d418b2,581318169,17123595316010140830
+c7b46bd3-f24e-0e25-ba5e-ffd9f014b8e5,2895930121,17576566629849988347
+a919f837-1c89-f0be-eb16-d385e3510796,631402,13253500918120954109
+6f9fe9c0-2440-6b73-8c1e-ca8c2f8a3509,221778626,2343224274575126918
+d36847d3-56b6-557b-8532-4c44784c335d,161766853,902160865925657728
+b673f734-f77d-dd8b-e5d4-aa9d8fd9f485,566471735,9937380065368946842
+43ac4445-14de-9676-aab7-a346f295317f,446586672,123679629573652780
+fe0e1384-ddeb-2029-68c3-a974f7dc6657,2753173321,8404955093307903445
+8d39e844-fdb9-860f-ea9c-1f2a054ac71d,2525424911,12310979622397049174
+d5ba4333-7e87-903b-b9d1-ceb603e5f3fa,3241587404,9895831772739931580
+380b5430-af14-fbee-7d6f-c76ee19121de,960844804,12555066249896312191
+4195c600-1dce-3d61-54da-306a74a9478d,2253474819,16914317103298779934
+c2956e1d-914a-ffb8-066b-37f0725f312e,776862777,2924098322048095653
+5c8f73e8-30b6-ce53-59a7-415951257f36,2837897604,9938185080903009494
+1438abf2-dc36-208e-cb7d-6d0fc5d9c6ac,3274049106,11675065327774638911
+7054901c-5375-6fed-1c25-8f3fe8316029,3094859658,289586132423851047
+6495ad8a-3ae1-71fe-0e1b-dbdba1a7795b,1361704892,2179231780362689988
+1a249fb1-88a1-1177-c033-982e3a306e80,2832747232,15163831349383752387
+37d6db7d-7881-eef8-7756-f03643da4c2b,979400744,7151007041604103219
+3165072f-2409-d02b-341e-4dbc9830852d,2088280800,14711344868475366896
+e69176d7-3174-5cbe-d61e-c502a357a617,3524136958,11937204659522629420
+4f6729a5-8586-5314-d636-7ddf068edd62,1203961058,2067503972788315439
+8585c06c-47fa-1437-f349-6a4f035db6ba,2069471672,10475633094459914241
+ec86f24f-305a-db88-84ce-f2efefa0629c,291153920,14427798393961473808
+97581b07-5a9d-abea-0c79-9c6327757a9d,3262769859,7040062823634330359
+b4e888d6-9f1a-1e7c-b9b1-133b7d5931b7,1604130034,4551535078631377574
+138551b2-eaf3-a757-1455-ee9ea1cf236a,1584066408,242659179082765188
+092f22e4-f870-c8aa-b937-ff4190b69a94,2561985724,2745974524458587431
+64ae6d3a-e685-be37-6dd3-9c4b6ae74e03,629108499,14510436430013031200
+edc3f731-4e2b-d9db-b077-679e641975b9,66704624,6531782241134786039
+77638a4f-da7a-2cb6-8ac4-ac3f7a3dca6a,620820933,8154480639156395339
+7b7faa56-c1c0-a131-b239-182d021ef3c5,3047047131,471359083508449817
+cf56dc8d-cbf5-4989-4134-2f9ef439a83c,2875084030,1265154197607036602
+9f53a55e-684c-9667-3bc7-fb839a04abef,504775100,11917753052068932489
+b56642e8-790b-843a-db60-22fe9d2425d4,3987488589,13603524463924813919
+f99948f4-447d-53f9-8a18-00a3c662272a,1775040324,2932326623030571035
+b291052f-a59a-70fd-07f7-e23c7a9ab6e2,210666977,12498552252782402835
+d3808be8-3b92-c4cf-9bdb-b6ada86ea0ed,2783007238,15012289721923953157
+a1cda180-73b5-710d-fcb4-8be9c8162b60,2096774201,9831066822680376056
+bea63c9a-71cd-ce83-d201-fa70ed6e6271,110724655,12533276877992896505
+0fb2eafb-e008-c623-8e3d-9c34401e0aa8,2452313872,8352044441315649662
+937ff0bd-ec9f-dc97-725b-4e6c2765bc38,4259365407,13785986510783424753
+67f47ce5-b02e-07d8-3e46-1f79dc50d640,3235777750,15447161962384686436
+386c07cd-b16b-e629-86c6-27a7728c592e,3228310183,17739939950123780323
+7397d945-f93f-b841-5c5f-b14062744b9a,302723707,663594219042938836
+a2afe799-bfd2-a9fd-2fe8-9c54af0f2915,1431820212,4293804316210203001
+0718659c-24aa-ef08-0b09-0168477ca0f2,3402597297,8513529364517965211
+d2dc7dff-a731-c235-9300-a573b3f23fbf,3678264943,3432903276665316918
+88d3ad89-1e03-b113-8644-817b84407baa,726040107,10601333333248415236
+bdb9bd9c-c476-6ec3-e1eb-95f420892e08,3288761734,2261075518670698241
+c369a7d9-7ff9-ba7c-d31d-2503812c9823,2307826579,2711477830593275431
+c1b5d943-4809-2d9a-024f-ecf4697b6a42,1657424955,429105220099326346
+c89a4914-ecaa-b461-7451-8959aec65d91,306136610,3569602391488103512
+4763fc04-93db-99b5-b912-66f3aed87744,1775630799,2525520514693865231
+bcf5e34d-941e-bdb0-e6a3-dfe652c9865f,2111199860,47728648471761757
+33411b55-8265-57fe-79e8-6065263c1570,1516648184,15942499580941607739
+86fff411-967f-7c86-c86d-7899831c231c,3873389024,11751681869864834801
+ff55d65d-92dc-e9a7-fb25-ba540303919d,2142686857,1586053953784585195
+b8ade0ff-57e7-34ed-af15-29d60b2bc65f,866993368,13487822786006928963
+76693402-ee37-ef96-4ea5-6c708220fd8c,3201325532,6658005723058118904
+0d5d856f-993f-d94b-66b2-a9d6df0d4643,1509112236,16910038619814526337
+209706f0-3f83-705f-0011-1cff1b3e5479,471512579,15162506041447689717
+d5478f3d-1674-c449-0cf6-0485df908e30,4148072335,9412026059845735278
+6f93a1b2-823a-1246-9a44-7dfaba386c7f,3207218595,5417072846111954346
+77a6d279-0954-bb15-f762-370912969596,3227759131,11264251298038074144
+d6e35ff3-1c47-e1a2-107f-0f61ff22428e,2684850234,16076219844473853229
+922da20e-7d40-d97b-47fa-4bd0f9a19cff,4112321349,11462581366749490043
+31f2eb55-6546-7897-b0ea-4e607d372845,3534964575,14164953048354519740
+9bafe3ee-99f1-a4db-96ba-d045ce030826,2561968061,885823986063098383
+29ad256f-adbf-fa02-88f2-f7096cf0d5df,2821436312,6712423817755869023
+96b1789c-e0b3-9193-1ff8-a201108fcea3,381840592,15739300653662922696
+470e3141-b61f-965b-6388-8124af6c4124,3869847317,12696233818163617464
+03ca831d-3e78-a487-23c0-869c4576c95e,1173526297,7975844987533690988
+525581a5-9f06-549e-658c-367a60defdcf,828455267,5869122547521846842
+cb7975e3-db09-7d59-8005-d1e237985411,1486408135,6160980854706088965
+b2d695af-8b48-27aa-6c30-0d79ca648137,244117472,263978154320978352
+3b107df5-ebea-a857-96ff-4c6565242c3f,2001861967,47981048676539624
+0c2537ba-6715-e25f-e506-bbb4e6c2d313,221388105,17910528754452054038
+a4dcfa4f-fedf-6a29-2259-c7ae74291a86,1534919946,8946115164808814736
+eb574cd3-2586-e07a-974e-f95c8f69c3fa,1384111369,17968896264037216536
+bae3637b-03ee-a6fd-c1d8-ddbd8b6c07e4,3034203131,16866362642934387512
+c4415429-257f-ef3d-d843-71c7eb07ac3e,2358144816,4236329607049781675
+94fc2021-3bfc-e2a7-e0e4-99d4d0651f9f,2949402105,14209299824716463530
+086170cf-6377-e46d-57ef-c7385e96c7dc,3445590886,16441005334275134069
+593aceaa-e82c-a077-d5de-9e94e18aba5c,2361787738,8634427486849643781
+05b5460b-3de3-3a83-7779-529ce6928ccd,1675585804,1978905317154823568
+4932b59a-3a6b-39b1-7305-a1ddb6b3bce1,629301600,2054548755516946628
+c1ecf269-f372-fc1d-d847-8c366677eb79,4070071047,8207309670484901359
+910d32dd-5dfd-5e55-fc43-f48d123195ba,833196254,13719545058595534778
+47533431-5e0b-04ed-ac8a-cdefb6867796,2793175100,13957519783091458677
+09739c3c-3837-83f5-626a-449158fa51b2,1422770947,534811674938293986
+8a08317a-c797-583a-4521-7326d5f8a87c,872608113,12312545999478980743
+06206a0a-e9fc-8af8-7e6f-1045da64ac8e,3079452258,5376145152978035121
+8f507bd9-fbc6-aafb-32b3-e06eb50097e9,2727044136,11867031765326611067
+a20e203c-25fb-ba61-af8f-74169318d66c,1432992895,6510440402769624676
+48573e12-8d1b-9151-2aad-a1eea76a2f6d,2253191655,316217448418923056
+75fe98e0-ffdd-a041-eab4-c4d38838c9bd,3105301180,13757396054241677346
+14564c3d-ff28-b726-bdbe-2088df0b34ed,3255897621,6052304506741399391
+1705b98a-fe9f-528c-df7b-dab26a4fa14c,3319234052,16876420254892975556
+93119484-1e7f-4082-e434-66f470061b36,332217093,10945666197898929981
+e497363e-f659-c350-a9cb-33d4e44e39a0,1968393350,6951883786135578929
+873fa761-b09a-06ec-cd32-51e900439913,3275382705,13992596094891926791
+b6268d6a-3894-e431-5a7e-410cf6fe5fa4,2089009457,10933657405520251123
+a2caf92b-d61e-ce1d-d943-10c06a337ca2,1874014848,4446574305074838631
+5202acbc-dc3f-8add-c775-3707a90822e3,661970250,4974647743412341772
+a0d1a8e0-7307-0eda-6b85-cb3ad7e6e9d8,2704910481,17848265985793085107
+04a331a7-940b-9218-3aa9-14e3229f867a,4122963230,11405630463354429409
+7f542b27-e663-50d4-6fcd-7aee6959e74b,2278564060,4088905767038933222
+580c3da2-7e36-b0b4-e998-5e01d11bffee,930174829,10577932917272233464
+9545e958-a71b-a020-1bbe-cd5bf7053758,2451869888,14109472499174860757
+5122475f-21bc-4e44-1844-c6af9de61986,2359936870,3888135724185134981
+82c0aea5-e0e2-5fb8-b84e-1a12d2075be7,23304841,13209224557379493631
+c3ad7d6a-f331-499f-617a-8a189caed340,542169598,4152050459843467394
+c82ee751-6342-a8c3-b409-18d4eea63fbc,773234267,666174689420522891
+a409961a-27c1-7dc7-68b2-978b429c222d,2525793525,14868323222818369617
+4b4ffdcb-3d3b-09fe-4abb-f706f9d645c0,1893817007,4895321975438503594
+0b8b24c9-f964-7393-26b6-b1f75623fa33,36271950,11329905045857400612
+d31cd1b0-dd93-61eb-b28b-d33b54819e03,1400982206,12573364780848222209
+3b85dc0b-883c-2c7c-1869-b5d3d9a384cd,2110239061,6861432867583880879
+e5b5e50c-ce13-45dd-67d0-9665ce01636e,2150517950,11283054410022379497
+c4fc27f7-4e1e-146c-031a-f64f15df0f6c,201295570,7548728040688686448
+c1712ca5-81d9-1487-862c-6226efba45ed,109659017,790446553905501598
+46af0b44-f466-97da-5006-43e47d0b3915,2258347680,15177819048089043280
+39d63aa5-d44b-10c4-8164-9abd8abd0fb4,2600001283,10305136234247770804
+c43d2c4b-2f47-1ee2-a438-df79155056e7,2661647468,6821066269279709453
+31313fd4-30dc-40b1-9731-82bb8a0d7b9a,1496113141,7722881187561052852
+e7539ad6-a0eb-9412-adeb-bcce94f7e346,3330936669,6474103921533376326
+9469dc17-183d-68f1-994f-22d09811b44a,630911826,3947401038693130327
+140eeb47-6380-2993-3c9e-407d1896b710,4279454576,14431989798382391456
+8460b744-00be-48ff-7302-b22c0118df10,2360562185,8068133414443219499
+1484a7fd-95c5-5894-536a-d6e8785469f8,4290588159,10945567316891445609
+5b1d8b31-5aba-7946-e0ba-3252ac7c3edf,256159188,12019839315457146507
+be372557-cd8c-fc0c-777f-90f7a066156b,3239234930,16234648909159568743
+63099471-14c5-10bd-32b9-c9b441842f4c,2349475101,8837527735381173542
+4c5e41cb-8ee7-c66a-30e6-f437d2846de0,3024112259,18056851677496020948
+86593920-c7bd-9f34-0538-b851ce40149e,1358010214,5169202791403412020
+7019de3e-a64c-e63b-4a2f-0acde3abd18f,4262178472,8661005423096705864
+d22aa7a2-9a72-bf9c-685f-311a85c0f1b0,2939809908,16868011968473892641
+666572f0-1c90-1c47-f0ee-b94749a6a7f6,2742544349,11262659491109594760
+bdfd5ccb-5269-fb55-e0b3-71cdfdf454c8,1089186558,4981945020372589106
+d8f1ba81-4c9b-eb2c-c27e-1ede93077974,623408924,105242127369237063
+627c86ae-eae1-c02e-8706-821ef2ab99fa,609171770,16822613681173682331
+7c697142-a1fa-6b0e-8763-312455d32938,1038837567,16513496984959275731
+b59a7024-8fcd-11c2-74fa-66c5cc7dc086,4001962397,10310854925952462466
+34bc5052-8a1a-9a36-1104-1cf1dbdbdfb9,3171003248,10110910366653413186
+6be08213-8fce-fd08-23de-eded79b44cd7,1313467347,7542443810822637474
+6d648610-bbbe-9646-0556-ed535438613f,2601417613,6839315928536603942
+65e4f353-39cc-1ba2-aec4-6603065c19d6,4128053356,15871378354203323734
+175a8d6c-f130-7741-7167-7cf6f7a72685,1793893273,15324190665255094745
+8fc20f50-209d-43cb-b8a7-046261271f29,3236373505,10868925523059469694
+17d2240c-4410-7af5-3df8-00b1a34b7b51,1626751620,4470138472014893306
+7969baaa-f58c-df09-cb54-2f04229389cb,3795646262,4546606343564335861
+150d1a86-1b43-f5e4-1f88-510268bb44cb,3552366528,17267359536762193768
+efd8bed4-5e43-db25-a2ed-08db8b0af700,870481190,15816719406831983413
+b4bc0c9d-a899-d2c6-1b60-4531a747ad54,3185839268,11168253483582054960
+fd7a3d93-88ce-f1b5-eeb7-13bb284c555a,1846900897,11896499061159013621
+1ecd48da-cc6b-d9c1-3c98-65c52de5ab0d,3007575510,8856658908104593444
+161c5a2f-f8e1-1cc6-3cf2-9703bace666c,2330517101,10798198852794185409
+3e65d3dc-5d4b-b354-fa9c-30eeed353f4e,1031594016,3662232561716060073
+a81a9ade-2297-6286-0618-12e275555bd9,2257384529,17080853610225258758
+3a3a6475-4e84-e627-fb70-dc9ea3e9f8bd,3559550152,9813190119789678327
+8af27479-80d4-a01f-a330-52b81adf5a24,210802942,11190235415289962100
+9671f017-3240-e4af-0767-73cf5c7a6808,3420517102,8969576789998750367
+19f80c01-f34c-a70c-801a-8c70e210776d,218069201,16319565836309164150
+97ece81d-225a-bddd-5698-4def7ffe0ab5,212188180,13614474642488492676
+1509f9c9-5bce-fd6d-7fa2-3d00f330c4ef,2199959828,11576707571604960239
+56d376b8-bb3d-c9df-e574-3b4e3e79d7c5,4218864538,6276970487914284970
+2b04f348-cb14-af78-947c-9aa27406ee42,3836661489,4627556662006565579
+8a5576d6-9b92-41c7-f53e-087a17f7333f,4178753764,7442106800000976531
+02968f9f-f75e-60bb-9a5d-3e8f6d8a3edf,3270746268,10590543441947526134
+373eb9ff-f570-d457-013d-36611ada191a,846670787,8255280365003059077
+a56c6cc4-48d5-29ec-50aa-771b6566e1ae,2884864776,13338152056683041622
+2f832c60-f2f0-6ec4-0e6c-dc52d22beaa9,1565077669,12750444769015123116
+e79e92ad-1fb7-496c-96db-4ae4694ad184,2722789980,14540840485001882929
+7672713a-b1b3-6d8a-7eef-5657373d7c3b,352760106,1997199452334908022
+edc96d8c-a050-cc82-e3d7-06a26d0c3faf,1043186435,14154311117152217127
+3e41e8d7-c1e9-6faf-3d14-220d72eaf41e,1019522576,16278758462072498821
+b74cdf15-2cad-068b-6fee-bce3346465cd,210174785,1329945449264925485
+bfb62787-ebe7-1cf6-0074-9e2e07ced1d0,3973469385,1779195684076833976
+84555eb3-1f48-56e1-943c-82f9343a9b06,3321689246,16142874054679141841
+a7a44a4d-12e4-528b-62a9-0bbd02e9480e,3865624871,9323683842810317155
+daf14fe3-3126-3cc4-0d5b-43cc1ec4e3c0,3118676991,6794771855313312387
+aa394bb7-ccda-3669-4afb-c7c9f084f8cf,3800814203,3911694059089978148
+63c258a5-a930-0540-0960-0eacc8105f9b,1060549708,7011545963018375412
+f7da1fe0-328a-ba16-4d2f-7abd7509c942,3603669694,14385814105788419654
+2904360f-1c49-ab54-6e4f-dba7b674037e,3642334801,14406083618573841960
+d898a318-e16d-f1ac-a82d-90f75d7cb856,3186879441,8320728796896531762
+8cc8b4fe-961a-06c1-ca7f-15dbb977f130,3107678614,6484478444638197220
+a2999535-8b99-2837-0edf-e7e6368d554a,3879840110,14135533867858685915
+f6b63f01-09c7-500b-7552-bae5057d79f6,1180491631,8139398537490982911
+f62c3339-2a3a-f968-c46c-03d84d7ed77b,652433344,8529296477794774047
+715c9689-2c45-6df7-bf32-addc40c59dc3,1596791071,6754545500075566005
+e526aca4-e8e0-dcd2-944d-6332e9637092,491192006,5784245117525466443
+ed62ba73-ff90-be7f-244c-63c746d86e26,1934914943,14009019070128410369
+1c7d241a-bfe8-fd35-ea11-3563cc3b7c9f,987075642,15849739474726860920
+4527eac9-db57-fb9a-d860-f145c794ab1f,3280800206,17362335164862254698
+7d3fcd30-0dff-d699-a75c-2f454a98ddc0,2924245075,3983176656597782696
+b9812072-d60b-dfad-7364-03ce95bb14af,1441587367,5686911701069443210
+0403c905-5b2c-e32d-3d09-eabbc02681be,3135165233,16766710250490799520
+1abc8db5-774c-cf91-b70b-9f933a450443,650634041,7728269010094228673
+2b65ec2e-f515-0dde-f2f6-d33db3c36111,1888160651,12327504084320528568
+5d117afa-1b24-84c0-4e0c-56ed92e2e883,1224022738,4184875960790467560
+94d20f30-e365-bc28-4f37-7e479a65674e,3530617917,5054721178301870149
+12beaab5-0a59-636d-2446-b30a52e3ae64,3417777664,1407658283527118996
+679e1cc2-f594-4c17-d46a-cf9f2d7e0133,3706745419,16687076561475618731
+dae63c92-ea32-2477-9dfb-1097d7021600,669253261,7154266267544859463
+c558b1ed-5e75-1559-6321-e443711a5964,3378917561,4809943754967746917
+e9a7ba16-d8d7-0eb7-e6c9-4831dbcf9104,1860294221,3072763818492043199
+6e570e69-35ae-c9b7-1930-bfb584f9a8c5,2314269533,7012882264811146740
+5c06973a-8478-785f-a5ec-79685e96aa86,387004180,17645022094206391971
+1fb196a5-eeae-3455-41d4-8e7e1eea29f2,2819445267,8101870790626793331
+6ecc0d43-dbc3-74f3-f860-194b6091da69,4219637718,6408137218745876788
+d9cca979-b6f9-26cf-9e7e-19b17d7c4bd2,3664244519,14673575564895591860
+9b56fd6a-0b4e-9745-09dd-e2047f5b4e2e,1289791775,398927413446481424
+c84bfcaf-5fe6-4d32-fc76-4dcda3f6cac8,3863809212,8177285492534391401
+69d08454-683e-0d47-9302-eeda8e9e0f18,942343304,521772663998089413
+49bdac6f-8f5d-28d3-d1bb-4a0fec0b6103,794132765,15149597783312539376
+3f8013cc-7886-4516-3630-8d696aa178ea,3024928600,14145563020090824235
+6414582c-8a2c-ed5a-7723-dbca56a643f6,3381244847,6189183354644083959
+1ac40c7c-ea52-8384-d88b-23f87587ad93,2327017078,51069143780798547
+2ff5d1db-78cd-89a0-0b61-76a67557c18f,2254560089,12681639214402379913
+f716ab10-74d6-dfb6-b306-7aab3eb98f1b,2252239104,14137807312952719944
+2ddf8ca8-057f-7828-4431-8e1af3c02366,781003691,12303853159478363895
+e2348a7d-4f7c-1530-6678-799f7e05946a,2082419916,13526267291563660392
+ab1b9735-d804-82f5-2378-c6dc82d87df1,3297914961,4589644832652283920
+9fb3bd16-bdca-937a-d7a6-f27f8810f07b,2414974419,1201193966481098422
+7f7c5e3d-c552-6867-d578-5021fa5e5a57,2958823491,4541296800907792607
+dfb994c4-c8e3-8e9b-5039-4d4ee9a8dafb,265184161,2599871824323485554
+f42d15b9-c727-76b9-3c75-a303ae4a977e,2113084928,12405428004086130915
+fc1ca8e8-f570-4d7d-a084-03e6125a9d47,3854604754,4529018585499192309
+1513c736-b1e1-1fc5-32bd-403ce912e30e,1154073404,17436647741803361431
+ae8e76b9-6c3b-7fc3-3d40-2553553ad0cf,2145730211,13734859584397005693
+d46cf6fb-092e-daed-8fc1-93ff1514c7d6,374212186,3450124038021818190
+edce87d6-b441-819c-deed-85c57b489038,2598776077,18078075335961892336
+a8a5c0d3-8ee3-0a07-6813-b15332e59e83,1181984483,1540743690263070057
+0318610d-2e08-ec8c-f35b-0ea3b38b6c01,72562645,11917469252150378708
+4cee1028-8ebd-c6c8-800a-537eb0f92a22,2221875833,16619525410116351728
+8d84211f-d120-85d4-f616-3dd01cc1bdeb,2416828652,8845435098987515606
+4421fd13-f308-95af-a214-7d2869f4fa7a,3191191262,12707638090044208505
+e072aba7-3557-45b7-cefa-db96597321cd,2910630762,2361038329542724585
+f0e0c835-c7a1-f506-1d53-5437663c35eb,286099418,225633672089001648
+eafd8671-8918-4827-6922-a33f136a427f,2489350944,6734037938601142959
+506699ab-65ce-63ce-19ef-b0c1b19973df,1608945715,11704315750089408809
+f30f0ef3-1d9d-b1b4-e8db-654522dfabe1,1462699972,15036506088997915306
+b795b59c-a2d4-1183-f538-577d95a4979a,1414679817,14329417979324918277
+307bb687-2777-5abe-c575-a7d390b5ed23,1169270494,4574088527090723836
+b710731f-fae9-5ca9-3770-70fd52a4156c,3714597597,10884370121872436115
+576d8639-bdd7-4386-318e-e25a990a50bc,4033101879,12603887882684323301
+0902371d-fa77-8180-b30f-011e02c9dac0,3997586448,12365096749013776493
+a9e00540-6c1b-315b-b343-c4f6760cd38a,1483027620,1956625436777464704
+c1f45be5-d6a3-2f28-49e9-c41f64f68773,2822290699,15929636095095106162
+d9a7776d-a38d-05c1-2d63-f830a5400a9b,3183952045,15493977689898078588
+8d5b4c6d-fc76-0636-b8ed-b56922e7bb5a,3896751331,16205061545020923061
+e3847631-5225-e8f4-a817-15df83883de8,4233229983,9230455133405314934
+79109fc9-121c-58b0-e36b-794a385f9371,4263199400,16082579875674178882
+9bd0f653-afaa-5505-7113-391c61712bd1,2017714445,15997156495246174101
+266a7b8c-d2d5-6fa3-0224-3226c77a44c8,2703624164,10004548914817043570
+0d278144-54b0-4a00-1bd9-8e9dacc59d97,553276763,797147633597686212
+6c6087fd-e815-5d35-bc67-5797d00199dc,2319140240,7476406070790780633
+6a5e304d-de8f-d552-23d2-23e5932ef749,1125976638,1932015845712364477
+01e8ee3c-1500-0028-d03e-2fde0f7babe1,3942246143,3068530919683652602
+f471e146-e451-a7c2-4a41-0be925bc7fca,675279948,4126985004667284259
+2eab5268-fddc-7b43-b983-40e12fd378e7,1451967341,8477577290103674021
+ffc13edf-9ddc-0237-8072-1017b4defc15,1341759280,3404910520161270611
+c69d1248-6ef2-c516-81a7-ad0377c7d9b4,791920228,11819600008543283098
+b5e6246d-2488-f544-6c9f-58ba607ec332,3140670230,10612423685491619945
+a702a7f9-d4f5-ef80-db61-da5bd3883c05,609197461,14341176351706638031
+86d83475-8549-40b7-ff27-5bb92e2bba7e,521270287,13206293004905774336
+340a718d-d23a-be51-69e9-d2e5348799f4,2587202131,15535621866149603759
+1fb68297-a230-0097-b6b3-b3e2966ba187,3890466414,17408908212483937320
+faa6f1ce-df1b-dcb0-5eb2-6f5501241e3f,1374367210,8043948099868694999
+480caec6-0088-455f-211e-b1738f354249,61319149,4867941527597229602
+2807eff8-bbe0-d847-7313-978f83cddba4,2548690242,679474241241736378
+f578de78-a3bf-1449-d59c-e577931890d7,342465445,17536688204999875085
+730703e8-2887-7206-763f-b574da7be688,204343193,15452714200783291668
+fc7f3ee3-e7c3-57ea-a8f9-0256ba3f749a,3391274131,12787892316763053926
+d28fd8c8-13e6-47e8-278d-5caf49c4da9f,1513864731,16789913973825915356
+b8763455-56b9-31bb-70ce-a45db4595143,3079369297,14573147309303330637
+a87d1d20-6af2-3b80-68b4-3f17893f5da6,3971866560,10387584772346548188
+b0df9756-6f18-d930-7066-e159fbf594ef,4137374431,14257917244498066992
+18943878-6b5b-7b5f-e0b6-98868aaeb7af,2749869821,3084323280256715223
+f7929a84-7e8e-b913-1ea3-f254671017dc,2763175660,8985386446442218943
+a7c60985-02b1-a5ed-2fb4-10bae22330aa,4047082113,7564373358533137863
+2a1300ae-e7f3-3ba6-d7bc-6d130bb534e9,706941981,10398497052629547971
+5612f924-e214-563a-b9c3-42d1ef3bb747,3789941387,5281039063406659902
+10cc2c32-447c-8f2d-bf76-ab1fcf26e450,2201655601,9650773886599730782
+57658126-6d3e-7e81-8616-cf696d8acc12,1486509522,8486149194903041135
+500f2c46-e07a-08cb-8157-181ac712dab9,3872249206,7707753112115676073
+d7506440-fb94-5053-63d0-00770f138f57,4054374288,912154190732671041
+ecb1623d-4e61-90ad-26fa-90f5d1f372e5,3682512803,9026633865908021893
+ec12a820-020e-7efc-3e3d-8606c9413574,1784263885,3460996334499152925
+47090274-6219-effb-8463-e80c07a258c6,3801668667,4332526236837046240
+c2252f36-9dd6-220f-7279-c549ba110a26,659946859,15139512933402634320
+be34fd35-2629-04f5-f428-bb41debbd643,689318382,10692022582355594436
+13209545-8e54-e64b-5c19-e006a435030d,1692858761,14653459046911229302
+00513a33-801c-29ac-4375-712e014b256c,2409336005,7995227672854378971
+2399d8d2-fd47-d238-7a56-a2d34b3ca67b,461974751,17755805571192407362
+cdc2f2c3-631c-1826-aba2-2bbdc21eb00f,4224804562,1715045822298089211
+be98a666-49b3-955f-5ec5-ad5aec69579d,1115987458,5315275767558739545
+d71aa343-2821-a79a-ed80-0b3284b33f78,4129670909,3590534942092249603
+d3a7dc38-a1ff-eb80-72ff-4f118720e43b,991931325,819794465376458414
+244f8ae9-4fa6-5625-337f-0af060e25c89,2962397874,3428152922607005361
+6bb4dba4-b5bb-3342-954f-b7ec3f9eedcf,4266368702,15678487501277497639
+19bc0a40-efc7-7d8d-7506-aae749d8bf05,2836695616,9202833160811237230
+5cb6821c-d638-8a65-b75f-87e84a187f35,3010320845,15146182750301009346
+9487b3c3-9682-7833-4a70-0a9805d1cb29,1498172288,16876349077390469012
+52bedb15-ec5f-dba8-f41b-317d3c6e0e5b,2221826572,6549469739066954115
+f761eeef-e54b-7da5-17b7-35500f156397,1679064973,11223932672737635222
+263bb4fe-910f-69ae-50b7-c9778b798d74,1127536695,8293043607270567063
+25aeccf4-271b-3ea8-fe7b-7a8bea389164,948838654,17718800149203087892
+3ed03852-f675-839b-1d5b-b428147b882f,214494967,4667007137926823360
+d090cb73-273c-e19d-ac25-7eb4b2c3919f,3793870845,17931937458785982709
+5e80ff22-0c1a-6cd1-37f4-9d4bf84af7b6,760685611,14083104532995891460
+5fd2b04f-65f1-e3c7-5788-cf494e009c6a,3529075885,5353484518000997551
+b661284f-c820-07f5-2fe5-58e54304397e,3198919588,2756569412822942230
+9d754e8d-6fb3-2a84-3926-630afb1cd21d,935414289,6667816621243632146
+e1911771-2947-f000-b080-c4bcc22b3da8,3577515542,7331740919328109704
+68247b09-042b-fe9e-3129-ca6581d389c7,3605932742,2357296055230950371
+7ef0d6e1-32dd-4814-2d0a-37117c922e70,335223051,1146665617067139626
+79224f4c-8bab-3509-6790-5721869fc127,540450462,10475305022386690087
+beef3ecf-6075-d644-aacf-6449e138ff5c,3136900345,3821011352580132842
+c8ab1467-bd5c-6274-b0c3-e0e78860f764,3347483307,15828418527025857639
+ac2308a9-db21-34bc-40da-f81cae4634c5,4292944534,10967361900245908257
+e9744870-31bc-7a4a-8152-7155f8573abc,1764658284,209702737869456807
+bcd9b7d7-7fd6-b34f-583b-2c163665b501,3516966542,6978490005144341259
+f185d3ae-4196-8d16-88c1-0edf3631e0dd,2480547673,49241478400196146
+8b482618-9bf8-d58e-0f8d-48f633b5c66e,1973321974,13840445423645591794
+4316dc56-3b03-4afc-3271-b70215a235ff,2714930704,18413802820389915086
+c279370a-91a4-4387-6a0b-736f3e263c26,1760570089,17850717456617959060
+977a44de-7d39-729d-15ec-135654d8b30f,3662185779,9766236734691392234
+aa11541b-d675-b799-f04d-02dcf0cc7c38,1089440522,5001658609230080436
+27bb938a-c89e-f077-5d35-6f6fe24e8ae0,2533528174,1714964165286353192
+81396638-ed3c-7b1f-db10-48b9cfc20e25,983124211,17152573098672304655
+02c06133-b5ba-ad1f-293f-230fc26427b2,4148770590,15948720191607308655
+022d5e66-cf96-2a5c-3398-fbce76818930,1060835257,7217692825830042106
+be93b3c5-d2de-a62b-ab2a-c76640b1d59b,609699154,11796407506876666806
+ff826445-ec2e-7a57-3d10-c24cc32b9430,2535217750,14794379825196783098
+749f49df-dfcb-942b-7532-7503e33c606e,2818934512,8255932638650870433
+c6af1817-4bc5-f6e4-b6aa-02d6ca920aef,667027327,1778612418965239020
+5685171f-2477-85f1-0c88-b319cb33f804,1411885800,17326051712517116823
+0a9e7046-4e38-58b7-dde1-01008ad2deb3,632647205,8575205952097348407
+296da746-2480-ec6b-96d8-4b6e17900457,2794277836,10633282330140079553
+a5088369-91fb-31a4-dc7e-745e70676060,83694487,1154408022790933119
+89070497-e020-46b0-e58d-0f233b02953b,2111985877,2867585092826747500
+783b1527-e1e2-aa11-d9bb-77be0802ae51,3171582412,10775992492220541798
+1a848c15-182f-48ea-e98e-ba3b9b4e9b15,2563718923,658121622728223334
+d373d57c-7516-bfa7-1d86-6ca8947e6906,2223171957,3090569979700198163
+fe102393-34b0-5dd4-6146-8877afe46294,641635589,9546578087096700114
+48f29b1c-993a-f7eb-dd83-33bbbcb8bda4,1284806899,2042042815265179872
+612f1dcd-392b-3bfc-4c0e-d941cdbd1619,3564993382,11066962346121312424
+6cb7d60f-2673-b0e5-f608-b70702338b0b,2543221336,2657280965356908131
+18d1e971-0264-f105-3812-dae5dc468418,2027598987,18436888134513706322
+7dd80868-dd7a-5f0a-2f2c-06e9f1126594,1377754892,12968910478588731224
+8ec48737-8ebc-adcf-efd5-89d6598e0b09,682712438,13705579049666184111
+ae50514e-74d5-509e-40d1-c74bbf5d0a51,539905232,16297485368691215943
+a0f3c69b-3fb5-bab7-6ce1-131741c39862,3892100071,14469504095735913064
+d03593c0-c968-0bce-48ce-c4d80d853d92,3298415013,3082510695945774991
+2b8634cf-c58d-55a4-b863-3fa86471dc61,19096859,13505947130616047582
+c9bee5c0-28d8-862a-458f-3bf0a20d1a03,4203202259,18364771064606135690
+1ff1c81c-065e-78cd-411d-c3bea5cda2af,2665838437,6116180082699357068
+7f7d8596-1ad1-772b-4bdd-5539cc9bed13,3950691773,8350636206991040824
+ff7e7366-5995-c050-694c-3157049258de,3248343145,13495436447987584033
+bf1cf7e6-5844-11be-72ad-a50f56c8f77a,154650942,2395372609140591337
+39db194e-1d4b-f913-9a63-9f19e7827ee4,1144889407,12420694904347623996
+e9b327d8-a9cd-45cc-709c-41d6775cf9e2,448029690,14100157245521259285
+ea4b515b-1d91-9656-503b-61baf68a0ced,1760655560,8580368238343543061
+b56a55ef-830b-f73b-3b01-88fc35443899,1210734727,7796837357640126451
+92ef219a-977f-ce27-1a1c-fa73af9b3e99,1309598809,13259101263842619224
+5d687650-9d48-9c39-78d2-146b24255bf5,3862313753,13869276373183196356
+04c0d2f9-15eb-fce3-11c0-76bb0cb93f35,1853780978,9694820706653559455
+b64e4f42-f856-f088-0ee2-900ed81e9f96,313170670,14705739516842864827
+e45ded94-09b8-400d-d005-c1ed3a2963ca,560929340,10838552831002360649
+85197d93-8d3a-20ef-796f-e73569eb4157,2574180079,15793614231382674082
+a50b7ad4-4e38-d5f9-b0c2-7caa561c20eb,3553569268,17234311417351042669
+aeec383e-619d-8930-511b-18a34509dce4,46670508,10982663453082415448
+393dc30d-2470-f55d-c931-3f496e18f3bf,2006728102,14755841370442935392
+e4bf6749-05cd-efff-dbea-3ed04fb40d58,305941196,7276880086828346324
+323409bd-160d-09d0-6fd8-939dd822682f,561531875,9170491077709267429
+a481c93e-3730-6a2d-b310-8be83ad671c0,4184853942,4616611706233522461
+c42857d0-f99b-4882-41f6-e886dfbc53dd,206807295,2166403311523644338
+147295be-7b7e-5b04-e5e4-da8102f50f39,1308016423,4431554877307898054
+c2e16878-f14b-381f-87e5-6e64eb8e8009,3958646129,14530100501655127756
+86f680ea-0438-f7a9-4de4-4812256803ea,1116099028,1992911249584749962
+141909bd-5988-8c3a-0564-4c8619bbe8a8,1964472421,11936431058641976767
+03b7e631-4a02-5c35-ed17-6042d40fc985,2088105409,4175952701125252836
+00ddee57-ef47-1b0b-dbac-bc28b82e5b48,3994373959,2030464386546373069
+cd0d0047-4228-5b26-22c1-f19b226de1b7,1317684141,6659535904747520909
+23f3621a-3f4f-a9f2-ba59-cf7cb957ac7d,1587209462,2879094152448443987
+24f38a6d-dad4-4313-f9f6-d24674004cc2,2894392670,1495937093741601302
+2a880dfd-9300-e2a4-e5d3-93242b947ed8,757225915,6159280377469599180
+3b4c3be3-edbd-9717-083c-eaa722e8fe26,1439574666,335580617460120171
+330c838e-8d7c-3d67-1be7-643ff9e79eaf,3581604150,16262599475267058370
+f8ea3849-6337-f587-e3bd-1ee0a6905939,391233008,4286791419005221460
+c68bd7ff-f00d-0884-bd12-426eb9e86825,1803664699,2035371471910461253
+0133c0fe-9b4b-1564-f0db-9e66001cfb13,3608578231,18236020462019879132
+47655184-db7e-cbea-4cd8-85d96904af12,1202135438,2041618672316654182
+ab7fcf78-018c-b239-3d89-e1a893f09af8,355992353,12777949517845163783
+23ab9233-4d97-9f8f-2195-7bc125c3b11e,1331700411,1302504545403552421
+399f1a43-a0d0-e9b8-1a1d-7ff974eb58e7,3961883764,1961537104361431543
+6ad35179-aa1d-b63f-3c21-cb2991efa256,356773534,2134354703333648626
+a00b0bb2-23ba-49cf-b79c-5eb9eacc3781,3759660836,16899912644952910705
+805d84a0-e03c-1aff-4527-c1dd4dab08eb,1457452101,2283139794541809749
+f49717e5-5668-5a18-fd39-845d7a91a755,127016706,9434541301570113158
+708017af-5e14-81cf-5afa-a4787972c5ea,4177051359,2628923214241234627
+b6205660-2314-6093-fa2c-5c2bfa5fcbc9,2604516345,4544713453054680615
+cfedf924-89a3-07a4-548a-25de0992ce9a,457597748,9303544918041522089
+1430ff51-f060-8a2c-23c0-7cc32292859f,1471395847,9460702871550367945
+cc3ed8fd-f7c9-edce-ccf5-8051a129c06a,3521182695,4330970873500835827
+0c51c1d8-f308-46db-da01-b19fc8947aaf,1175977098,5181860209419504333
+37968d6e-ae20-e0c2-f90d-a6ad61e2c1b1,105629907,6857635478770163857
+34e6a096-6516-2a95-5aaa-af9bcb406834,1529079360,12347693089586917687
+9fbe42a1-0f6f-438b-94a7-b8cb67819c0f,1575831122,16233142780005040034
+1edcc5d8-2950-6f05-ec41-1844fc288703,90698365,15096000122166272356
+b6b06813-07d4-c644-3d82-3475839e907c,481152610,7590281031908984618
+deeb59fa-5a59-50fe-0fa5-c0f9a864a1ab,2172841621,6757324557928466838
+d9ba2583-8a43-fcc7-2ea6-6e1713112965,339948761,13049087195853066349
+90b5f163-ff66-54e0-d9c9-c78f7fceab57,5918521,15329031123645300367
+9799af8c-a308-92b0-8874-f89fb5cd9788,4141982022,9460047444399057162
+f94401bc-c7f9-510d-18ff-861807783871,2257145546,5086778577621557216
+9ddb7d4f-98f4-e621-e136-3f12a8f0b43b,2880829317,18223563770190648507
+2bfec53a-1bdb-ae2c-9f22-380e7b301c1b,1782734858,11740001453749477727
+f0a237c9-d14a-499a-8708-37f5e158ae9f,3990887203,2786973429748427772
+e618d4c8-b07c-c7f9-4e54-277d4800871a,2171283848,16489467850828597799
+bb738bfd-2292-e8e1-9577-7623ce42af81,3937735348,6531600085065130812
+71b5609b-4031-5a03-485d-e70f66adeded,2769352817,3592627137984317047
+d39a9a3a-ac12-7d2f-72c6-d18091215727,766474231,5319448754817048891
+1a70f770-3cfc-92ca-d420-ffeb443c347b,3853893287,12738948759726476151
+8fefbd9f-3514-3622-5de0-9feb6c945386,2746579513,2939738664312582014
+3b6ab277-567a-f7c5-9427-214b9c7fe873,2931503862,16596284679482715507
+64c91726-7a26-ba70-897a-82c4a0eb42ae,3378417385,16610868264930295127
+c3369885-2b8c-8f8d-00f4-909fe20dda22,1047674720,15191990823606466356
+a78f2c16-2309-b5df-3eeb-40022be5d18f,1017165062,75577829892579855
+4ccb245b-18ee-b7a2-68a3-8a13ca7ae9d8,1908649216,8399088418812955799
+ec4c45c3-b90d-342d-dfd9-cf5fcad06ba9,1668085432,3779215677894275782
+4603902a-4f48-72d9-cd71-35df38e6354f,148120025,6909826988735406606
+9dbc50c0-91a3-fd10-5d85-97ee62d545f0,272366933,4816341191765027052
+4f5ba8a4-c838-e8fd-b384-2b82b94c3848,380082959,5941263592287153782
+ecec14a8-df46-62f9-cb5a-63e0477bdfdd,2387119210,9737035348915751614
+5f001189-b69d-adfd-d3a7-d419b4544a6b,229076496,12392308618567043909
+0e10b78f-ad33-5358-eaed-6bdbb66d2793,2801671351,8479842432238782438
+a07ddb8f-3747-9e39-bd7a-ef3d146ee3f9,3954138531,8462543497088175671
+8cb305de-eae3-2544-f3ba-8a4d8b58ee9b,2296647468,15723946054635877432
+d207ae60-ab47-7b96-17a2-9ca868ebae87,919341392,7447899592982969522
+8d04178d-095a-bf3e-d8d6-a7d78b04086a,527055417,6875597668531629303
+c1bb4e3c-d5b2-ee0c-7f66-37bc4ea8a129,130576933,16096592603933595121
+00b19e7e-1363-5a34-c187-efc7dd2d9597,2944251129,1016054897091979711
+860f671a-0e4c-cb6a-3348-19303f0ec113,2189422624,136965544340257816
+c893625a-82ab-48cb-a8ef-f22f26ce5346,3755582929,14112693991519646961
+32753a6a-54c4-7c78-6b0f-04fa900c1808,2224116521,12996561234116699767
+433e182e-ef6b-c176-16b0-922f0430f6b2,1144449549,1093041141638288611
+131bdf2f-2795-3298-ad6a-7deecb57eac8,2842445171,1453976408681126022
+6242829a-55fe-7ac2-a661-1e3e03552bfc,2708364285,7976784866788826320
+9939f9fb-54f0-7e03-fd1d-6cf235403ba3,2659394243,17432030103862152759
+8fd5268c-786f-d7fa-bf40-8fdb420c265e,2146027886,13996178077853879132
+68a91fc6-5176-90c3-7442-56e19582015b,987659652,743301321965111344
+b2dcb0ba-16c1-23d0-c076-a14e25e6af66,1224140616,17907596480773926072
+1da675f8-7184-4ad9-377a-4b43dce23a34,3091349157,11641846831521861872
+db7470ad-1840-4d79-ac78-05bb93e482db,955354013,4369571140897991471
+395efa6b-ffab-71b1-6288-fb67252da219,1271675812,18042515960846395187
+b6e85b59-9cc5-6b7d-6a83-ed6d239162e5,2052271077,16716939726957169727
+8c802703-df8a-6ee6-809e-245471ff3344,357873913,5685079366773286551
+aec2f477-b486-c888-d8d0-74f5aeada2d1,2098518407,18073533896751373120
+f3b154c0-e5e9-8398-5e78-6bf711e7cae1,3994784631,5889577111364980573
+d65edddf-5dde-8460-e538-d71edc1d4486,2325437790,547079149333195302
+5434c378-6172-2100-f182-dba41af6b811,3898259622,10406450424490450461
+022b16b1-c207-3562-1418-05f7eff7daaf,785943497,8938637680393766457
+6ec3f2fe-42a8-8005-39c5-edeb2bfd3049,3516449422,11943953720147349374
+e3d65f29-2e85-23a3-9aa7-5d3bfa1735be,957863603,18327436510026578017
+25652229-1a11-1887-df67-9ad1a190172d,3866365487,11375315732968552904
+8e32ab09-fc54-56ee-a518-7c138b0da592,1425598279,2533229259858944101
+f1b1283b-f4be-b355-724e-b57f5d28abf7,246542549,407125029098034460
+934470a3-b475-a811-3d20-8d383068f061,1912747196,4994112089669282100
+a4ae14c0-242d-4abb-3491-137204f0dca3,32438142,12912426657622342707
+5fccc06e-8a4e-2b77-8640-acecddecd5a4,2745811081,3334243143687286333
+6bcf1adc-3623-a5ad-cfab-ec807008e111,876908185,6654919786533439400
+f373de7f-88c2-b688-2316-74bf1944a5ea,3515619546,10245792885754985456
+fbc18a21-ac75-2789-e5fd-3914d19f5201,1837613623,16895354648796344557
+d800ba78-e3dc-5747-b44f-588675d8c963,3171805606,16248186149802673382
+5e80205e-66c3-7510-8636-37bcce1eb977,2532084014,8944561530404898055
+b4b936b4-785c-0a0a-abac-bece9b08a40c,3819021998,6682311880096329146
+6cebd963-9278-a539-3cd3-2563073f4f29,3182752056,9093158416491905469
+7dfa3c95-1e54-fee2-b058-fb2e0921f3c1,4084429725,13663151486944005415
+21186ddb-3eda-e0c6-c9f3-5c199694e2ed,262733936,12304021586654614240
+e8e86608-ca0b-00fa-d04a-e52eb07f3d7f,693156340,10628748325996251408
+96271b51-4957-9f08-ad78-9bd1cca1d5a7,2640155898,5299123336351057491
+c064dd75-6162-de4c-ee93-69682e9b717e,217478975,13509574484795718493
+97e3057e-e856-31d8-89ab-9c5ffb9a6fe2,1234662336,14190390260371370994
+b10a382b-beb4-da07-5a05-d2ef25a92340,853292887,6560087332954172787
+8ab72ff4-a7b2-9419-8123-1996eed572c3,591970884,5259516584437792380
+069faa79-a676-e3b1-ea28-33fcb468df03,3521969872,8067792542817126506
+172f81de-916b-8ee0-16e8-d7fe6d617936,2460443782,15718609559692257483
+31f70d12-9c2b-cc2e-b6f2-01fc09f5d5da,2610150685,15433611743296517689
+a07080a9-658e-5804-683c-8e52a0141ba8,791989882,12588171156599227181
+a7d2cf32-dd21-de1e-3ca6-05b27a06ae8b,999334714,3620161874325540176
+1c21a43f-37f2-1d55-a8b9-b9f153ffd64d,284756964,1234853277250840337
+8186cbe1-e402-e597-93a5-01e71cd0e733,3623900343,4094906880239358453
+a13869eb-e3eb-4b54-f2b8-ba27c2165f31,1548033602,2030804124916166772
+42d91b4e-596b-d447-7873-a6ca0ff10e50,597528501,4054255757360361560
+6dc55e80-e9ed-23de-c669-32a550bbe56e,2168949990,5191252906365808612
+0296b666-72df-51a5-f005-dc737c88d9f6,2586593543,7554941242869402372
+c0ab53ca-6d85-407b-1102-3d21cb898bd6,2617607278,9171824435088338176
+538e1b19-1900-63d2-7fb2-dfe2406ed628,2241159101,4915746619566134484
+6ac36f8e-950c-e0ec-6203-9af95d249b20,232964105,9520951904372051442
+f2a40afd-4279-a39b-fe6c-f6a8c0183207,548835923,1803053295401811164
+575e6726-949b-ab15-b1a6-0d20df6f2a58,636840284,9694833102965436468
+db609d21-54e7-2406-03b5-a82d0e3f8ed6,8395399,2641750801859451492
+1bd197c6-0e5b-bbb8-cdec-e399e881e3eb,2790068791,12956220556256815882
+4a793236-8d6f-7fb4-1d63-b4fc43111820,847398189,9272705602212997692
+f8a1ee20-138d-78d3-e049-c55139221fb5,2224169659,4713905493774276561
+96eedd61-cff6-988e-3ced-ad4b7b26651b,1079649617,4171792818089970870
+8ccfdbc3-4cc2-88b3-930f-e9ff90ad2734,2255670403,16780585933989353402
+35a337f9-d246-3672-5a85-976b3b1f681b,1286169811,9322538858631855706
+bc80ff77-da27-eaad-aa49-ed721bc4ff4b,3516141431,1309550768836122172
+3f37c06f-01e9-d5d8-5855-5214511360de,3322715848,5306641362409018863
+86350f71-4094-f4ee-b982-4b5135da998b,810082284,17085663398740596953
+735133fa-057e-4d6f-8656-fe8c624b332e,3769344431,275661070724415464
+e123e246-8cbd-5677-6ea1-2452806e0c39,1176696458,4656499905809663652
+4e83335c-c76f-fedc-4db4-5649efd413b3,3383767795,15139502054274704144
+5af9ba36-8340-ae0b-c713-b5e13d75abff,2197360839,5255826875235063641
+80b9504d-f735-217e-3bee-6f59e6d50030,4101997959,6070227585849287914
+a3441416-4da3-2bb3-2327-4cca3895feec,2953202324,5630587790878241081
+4b81f38a-dc84-00ef-f353-2a8d3ca5179c,3149350980,15711413033719727834
+47615c4e-85ce-2391-645b-3423c4243139,757776606,1068876757900077254
+b7d20ecf-9a8a-af89-361e-79f60d634e8b,1642961226,12746526589772310560
+07f5ebd9-ba83-f4e2-ea08-a456b18c624d,2557576675,10876552422722273318
+2cf0bb0b-365f-1aa1-989c-316a8fd3e95b,3397206189,8533600382802111447
+8caf150e-82f3-dfcb-82ff-4639c1b5142b,2320011051,4563108919211520972
+e21395a9-12a8-9520-7267-264858f20362,2348770519,5101122811599409751
+e0d4b775-e6d6-608f-8231-521088c2a7dc,3044314779,10577300421169279757
+47420404-ec66-d566-343d-72adcb0da5c3,3717244450,15051424966292798510
+a7abe0ff-372c-5436-91e0-37836e46c00f,553630770,811742292529904513
+60915868-9321-5c9a-0ab7-a390f9e77169,3438488701,10763482481720526702
+21f14efd-c667-2dc0-dac6-e2e874267972,3861850266,9900713867072810983
+58721479-ce5f-b2ba-75e1-c46ee1baef8e,1195373249,11994431159710609423
+9d7d6d57-28ca-1f85-5da2-eab342cac4ed,203410229,14861575904461261818
+eb14a9b2-317f-3961-f4af-dc9360870fc4,1754719909,6420598996471878374
+7785a1f7-a2a5-a43c-b853-9ee8af5328ac,2794397260,2186615522726536745
+88be933a-ea98-2f0f-6330-4850aaec61f5,637833719,428543214921845995
+d7bf8621-edba-38cc-810c-fc44750551fd,1408297394,3608392100650721089
+63be94f8-997c-6e32-27c7-a7d6c4f3dedd,1661855449,16567781752417466838
+8d9368d5-496e-4a6e-7292-7091e4e9f317,3684790935,11135363383233845984
+0c461ec1-5999-8ce7-9229-b970218a9cfe,2924609820,8234423204487386953
+2abfbd6b-de16-fab9-4903-a1255732f6dd,3172046238,17419342603503539964
+896511fd-3736-fda8-0905-cdea5d4f2752,1794015258,6526516743869950755
+dbdb0567-2985-88d3-24bf-ee597c4f8e7a,1848661807,5442651645993874284
+19eb4be5-17a9-431f-9f9d-69a98f714d18,2494154235,3614132891302923401
+05d4d035-d670-8810-d1bd-650f6fa88fa6,4224435352,11488873012274028704
+25378cb5-3d56-0d2f-94b9-36e4028cc970,4265887457,4949053233279185438
+b6dc69f2-403d-f55e-4267-dd93d4cf71a5,1705851438,7496987857321336980
+25473048-3e0a-7940-4070-ae1078cf9e55,383692571,17165573363427842754
+d598a844-f4f3-4be3-60ed-624fa3e2c0cc,1258115950,14723789001423881065
+6e28f5ca-c666-6617-cb8c-872cca489d4c,4167839192,3088625647850108483
+887b9a2a-7f93-23b4-f34b-e9e877bf5ab9,2983409351,14979696922992507236
+df9ae3fe-0960-96dc-962d-81148db03c4f,3434490374,5572681749239236114
+40128c37-5c30-ef22-9427-6626ed3932de,1203374278,10300551710736864684
+83b6a5e2-4d1d-4aa7-8ef9-3206463c2615,3519664210,10733459869422733746
+099cda01-c05e-24f1-4191-1bca9e6350e3,1624761827,8035849220946500765
+81bbe9a5-7618-426b-6bfc-399ea548b0d1,1097704340,4939400652839289157
+d02ade7f-54b4-7aa8-2279-01e9c4a67ea3,21256107,764713099493755868
+66cb7c41-2e72-cebf-fa9f-2310750337a1,168657368,1329832768150662892
+acc9dfc8-3a3c-66bc-6ab3-cface4248f81,1270764139,12741960172456655175
+2f71975c-46fe-b67d-3f08-cfcadfafef31,984673197,7816231054631580261
+66f91a28-84b6-36b4-0b62-ef87e56af9bd,2152964064,15673623553362526537
+6ce1e91c-51e3-a665-6b95-08ea59bc6511,4204910473,14769361672352616281
+c4e6554b-f005-80be-abf2-687cac1be788,3112385262,1012533822429953480
+21d89517-516e-a694-9252-06d554479401,3831768932,7902899248747902920
+5d874c00-2626-568e-45b2-4ca9c94edd32,115094080,12559479852623596095
+961e4578-a084-5ca5-0b68-7f355a726d9d,1114009500,9519477134012250576
+7d815b49-b6e2-4919-5bee-ba9c1c0aabab,3932991573,14941451553410827160
+f89cc553-e0c1-c23a-4206-978332a04948,3336973638,16247629893175441732
+fef0594f-b43c-3dc8-528a-d4a94a1414b5,2536549925,15087495519460133337
+51d607cc-0e24-16f5-5b34-2ad256f46884,1668107085,14870301445693770399
+b2d62267-09b1-99ef-f5e5-00c8db0b1aba,2900557832,13278312819613792994
+44208ec1-c588-8814-3642-81667e2ef528,3763125342,3593867530915500289
+e05ff567-35d5-5f2c-90a8-b0912caa5c97,3034892941,1632653183089474067
+bb547b9a-7565-37c0-83b1-f804d29d9e28,185700110,14106812456525659331
+bfd24646-12f9-1e3f-5cfe-836f6f710b8f,1228723028,13924816355507410235
+0a4e57ce-0617-c202-5853-64114c3fbd0a,2452969862,17183259646649310040
+42af928a-c3df-6571-0cf2-d678dc350618,2103318053,13965091734404203890
+e64332a2-738a-1695-d6ba-4a52777f9543,53947258,4585338643743108488
+00a443ab-4258-1d92-21f3-076a835cc651,321798381,6185463833507754648
+e1d726d5-04b1-08dc-dacc-805b110d6701,1578262546,3683379316510785400
+faf77e7e-f147-8342-1013-1ba3a53a05ed,3627367261,4014545274588957031
+494d01db-e6f7-30ef-6cb6-eb3c93ec3934,666279523,17752930641974840635
+fdc5d6a2-9c34-1058-4043-664cb19efaaf,2508757161,7826722120964373878
+1dbd37ad-5bd8-d550-50d7-743a2dd32ece,2274485313,9943213617653250591
+d36cc498-2599-d691-e90e-e8702bf3a39a,2871450012,3767257530666046843
+8339f5dd-d811-1f9c-6c01-236ce63af422,2175438363,17879856613337216644
+9cd91388-f8ec-b238-b651-d51935f7a67e,4188116450,14761027907796223001
+4e6b1ddf-1179-00fb-fee5-b05da23a16e2,1209335800,7164864592413582613
+88179bee-8f65-8641-9861-bdbf9293cc16,1263814134,13548047095440426418
+4e8ec155-232e-0a70-5c85-84611d02e5ea,2800496787,6475189727296196537
+df8131cb-1bac-9561-27bd-8f57df630470,3069747444,17764880712192985943
+149da3e4-49d0-4256-07f8-88377618badb,1547996028,5007948460117273214
+734af8d0-d585-78a9-6dd0-540d13d5adde,289363949,313701487889332046
+352ecb0f-bb4c-dd9c-d20f-8c3cfaf2f757,3096967232,14417545423159829208
+b9af29a0-a92d-d3bc-21f2-c349b0a99d2f,3761192808,6931100065013902553
+7ef4e169-55d9-ef7c-1363-498572fd560f,1209949748,2014602825149508001
+833d2e11-a93c-9790-11e2-9faf974eb6ac,3975005311,643605841884141668
+16b168f7-e37f-6e28-33c9-fa5202cf427e,1310771155,12445355861591669869
+cab8c2ba-d544-4971-e634-f07fc3a72b4a,538440714,16357100338347197608
+dcdc94f5-dfd8-c52a-e121-2c625a20c05b,1639474160,8014040059525505762
+37db2ab4-9665-b54e-1685-7b83be3a9c6d,3545002720,2023963997133217773
+eccec77f-d17d-fc94-8b42-ff8737142a8a,3372580301,13719521047858324225
+9eb91c90-d789-d647-8b12-cea044332c1d,1724704409,6975024923155627644
+caea2f5b-938b-2afb-2886-eea5da3f677e,2412211808,3736781714978177936
+30bcc25b-6dc1-4fe3-8ff7-1a24958a10e3,3166059976,5168043564366895924
+e9c37328-aabc-6d8d-2b66-59cc99b3d867,525286849,6381123491638082129
+2bd3d3a1-29db-014b-305b-b1fd895d7dc8,2093303044,12672237969617970382
+4af8ce27-be30-dfd9-4850-a79e94ec935d,3768684730,8463401317986113534
+8a6a596f-b7ab-0397-4186-b3bc6f634380,1557892394,11738985410318021233
+f61dd0f5-c00c-8314-b782-fa0e0258956b,2154454772,5690812186690758025
+6ea699d7-b678-3a76-0e84-9c76f211c2bc,935220692,12622504290430116074
+7a1127fa-a570-becc-0b63-4dd653ea82a3,4096075130,17801885022133353691
+91314d76-3194-7bbf-a291-2c746b587b89,986806592,14738144499956431043
+bdab8739-e1e7-e955-220b-1c85cb3bae54,1399313007,2539969666847263094
+d8c14883-8602-37a7-fbd9-d761c4531692,3265432858,1519886736636267092
+868a08a9-4987-c907-436f-62feaa16988e,2124070008,238985864512378692
+225d758c-3750-f7db-b1ef-c23823258ee8,1490973251,15465874954397437000
+b5276f79-c9e3-040e-136f-f3525e8094ca,2466924673,5576077497825663959
+98d876cb-8b49-4e55-1fce-cfc325abb076,4064487632,12371807290919407325
+e967f346-ce46-47a9-0094-9d89734d118b,242910574,5238800883078066487
+52e9d166-7d38-6cd5-bad6-594933e716ae,1912632640,1399594285033658345
+775efed6-de9d-3c0d-a629-5da62214a07f,2130877876,7534867552956483789
+0aef83ca-1c7e-e033-63e0-62124edb7320,2209339550,921652791932966405
+e539c755-7ab1-6205-6804-98c900bdf675,3141243520,3413218848761349571
+17d60987-aa99-d6c5-bbb9-c5ff5a1b011f,3082935755,12138235182120931537
+fc26a4ba-82e6-5f7b-ffe7-fa3fa992d79f,688886881,13521276946020740298
+c86237b6-c259-415b-629c-555e5bc06e66,3612287278,635070605219850979
+fb3d835a-3963-ceb9-1884-e3bc269de165,1600012599,13759493007072030403
+ba46eda6-bb64-7de1-b345-268f2104ab56,4120770930,9188454570692355420
+4b5bd2af-916c-a7b0-2014-b64574077555,748345285,10611513444682556846
+1a3993ba-2624-79b5-1a58-6988e0fa8b36,4178666907,4747815030294630184
+613cb49f-747b-c42b-b637-cfe1549e09c3,1578895446,7425415117752589917
+9385e4ab-47ca-d627-f245-3ff14d92526b,1378815941,17800925875029037754
+e99c7084-974c-0f35-ff28-56ba2bd26390,395779715,12577244944738374036
+4c6f19b9-3e6c-0cd3-161b-b35a3af60d80,1060021356,2478193324522613682
+07dc2973-9161-e982-11bb-f94000d586b3,930322720,10766998696922465839
+2612b85a-9f84-b8d5-641b-cf6a64de5eb2,742677022,11733895708379366416
+80d8c01a-5d93-f9f8-4e99-88d2008fdb72,577864183,11042887319483772466
+2f30b5d5-4a9b-895d-0b0d-d64b093067a8,2160440606,3504606879815567131
+b7027510-dce4-c3cf-bd08-d1ce867bf3fe,1805277044,6688684785946837871
+f64e926e-307d-e6c7-f9f3-a65fd1d82e63,793947057,6513429970357887432
+fcf75f38-68ea-d6cf-1a74-565aabb0a979,1636388221,4801418705993455014
+70bac04b-f835-37fd-f87a-59039a32639e,2815186976,109502396850851649
+5aa3762a-028c-ade5-a79d-3df3fde624fa,2972736615,560659502693244005
+b5f7a2b5-5656-431e-e5d3-9f54c85931ba,590126139,16496090593301687356
+41c0d4b8-da4f-10c3-4418-b1fb634bc260,3847634618,6513701019523825352
+ff2ea988-5648-02c6-fd66-a6514cb758a0,3815050968,7615657156586626178
+4b9e7e97-98f6-cd2b-22b7-e46256e7d401,2413137185,8098750740893943516
+463d0496-2d5f-4af1-1c44-7e659042780c,173181026,1952176611548762901
+f3a4baa8-3c2e-c98e-e028-9d9c9c07eff5,3648435368,5584399059785685128
+45634abe-4560-4c1d-ec6d-8d89abe1b63b,2390007079,6814732938183673045
+061fd0d8-a5a4-644d-b33b-dfd320737bc8,134222783,13737360220951266794
+15903175-b64f-70df-97a3-ea3795cc5b23,2283768547,2955757963117039928
+33b3b63b-a0a9-f372-1bc7-c2b6980a2d54,2179567673,4909259488975221675
+8b6a8e8f-6e9d-c73a-c47c-b5341bdc66a3,2261383699,296489337958844470
+ec4a0383-f622-55ff-f888-f52818aadea8,1797646586,10292423235481701773
+aad50cb0-4afa-aab2-489d-33b1156c3be8,1337412345,10084023494463648083
+12a7c407-f7d4-8877-f65e-30dd62634f97,2813734901,5051630888412013929
+1b72db03-fd02-b635-021b-27b1ac3fedd1,765537751,12787755632582156633
+9280d8f5-2573-be95-e223-61f7931f713d,1366353949,9797859361916617563
+7a150023-b992-76a6-5725-0621afd78863,3702005688,3060134847470657124
+281ff4ee-5583-781c-b470-dd4a8f640527,3476126179,618600267890052778
+01db3813-3efe-19e5-3666-89b495a55407,333109582,17755654593217115527
+74124f37-858d-1e3a-fcb1-e9df5540d42c,1502944192,6736683901825575844
+63e5e34c-a19a-953a-f165-293b38c8c2ba,1744579209,10879000083971110006
+d9591507-75a5-b77e-6cd0-ae236f4eddf2,1241749785,6697897628175493708
+1798609a-b9ff-c467-3ecb-a12f9144499d,1743771715,14464048746605267084
+1be60760-d912-f654-376c-8d11fe9128e5,3895118812,16703368544367017583
+f42d2660-595d-a18a-6f89-0d85e95682c2,232319906,16663938498481604659
+fcb21df2-f051-0368-c687-3561260b6bf1,126987457,9011857908384480628
+f25f1e10-0b54-8341-bbdb-606c50566a79,3882447236,13103176629138635286
+712abe5b-e533-6415-ceb7-73059aa7eecf,1350854522,18332548911365978232
+a15af397-804c-87e6-2c47-ce4bd3069d98,1442931094,14712082124265138394
+62aca106-49da-0531-1257-09ac9fddca5d,3388248011,13844766603250916538
+09d0b3c8-043a-e429-1b84-1b2d9c4c4c24,3800045929,6645138584920441242
+2a0bfb68-98e2-feda-2601-e0901b645c9e,1391972867,14175422994396501658
+4b58feb9-c5d1-89f6-162a-a12a644ea04f,247987691,5584777270413748139
+2e0cd459-f73d-50eb-31e0-0d81c0a26f23,1105156139,16768157949359286986
+7fa2ac3f-3afe-8646-dc63-205aa6610aee,268809482,15379646940081417017
+76ff2334-d7cd-9364-3c50-b35153d856e1,3266275645,14450848643155310261
+d4c304a3-adf2-a7c7-f28b-b6d44632a985,2614925496,18143676163374798006
+df03174e-2858-88c1-aa73-80368a753461,3248475455,18079143122341996734
+b3da7cda-adfc-580f-fc04-4570bd795baf,2307556630,15866097491151613253
+db111ea2-97a1-1124-7e14-d553c6cb2af0,4012276657,8531628997835833124
+1dd23f59-4f56-bc6e-3148-b4f773f9a99a,1115855762,7147123335695784100
+0d5d57ae-f87c-4776-30fe-aa950c10832a,2887707231,4650200593330242888
+b950742b-7d7c-f698-c8db-5a9fab6ccad4,4026639141,529139951113501243
+8b0c26a2-d206-d6ad-b7bd-03179f944353,41219504,17145892566297041766
+486b8f58-ac75-6613-5f8d-f886a10a3c15,3521855541,18409874441281828229
+8e11a121-cbb9-5d68-03ee-dc5d1d2f16b0,2659287521,16897469280666441424
+0deee64b-a85d-70e9-2a73-29971ed03d77,3804108734,18376400238805053697
+9e6d4d7d-7035-75d9-13a4-2d4e352cc5b3,119190409,411387079175280511
+5289a6f6-0159-7737-e0cd-f12c8d7f3cde,2924876208,17674583208541556642
+587f67c3-d932-2a67-9e93-ddb160d4bf0a,769394338,402662182660433239
+fc98d5e1-38a8-2e75-75e7-60da9b4c281e,3891794326,17119109083705448799
+b9700f0a-e208-6d50-aaeb-4f6eea47f2c2,1956369569,13463709813369822891
+4a828191-e94f-4171-704b-d77022cb1609,2344290947,11634593906635072038
+28bbbc60-3447-3c72-614b-21428b5c95d0,395636578,12389864092365570976
+9c3c28d2-6703-2a52-fd12-287bb1ddc65c,1433201212,16140989267990553301
+86bbef47-c88a-c574-4b83-ed92ee55ca4d,3940193610,2107407763426415883
+35ded56d-5ee6-0bd3-a4d9-fc0696a9c556,2521927020,6079812504982345397
+7ebf672b-f283-7d55-d044-aa77af806385,4062891641,6265526749510550528
+895da2d5-0ff3-456f-7c9e-31ee00c1c181,2191395262,9994741161214107036
+6f17838a-911a-3b2b-28df-83e2f76dd0d2,1474991852,7874463529929950926
+b032404e-964d-3547-a6c7-ec3941e20982,3461994858,475582297540927542
+79599ee1-8a49-cef4-a909-4851d0f30f3c,2955315158,14980437514961294144
+5a7ebf2c-844a-6c2b-ed75-605b002388fd,3743112769,13585977004731230668
+a2690ce9-90bd-ac61-f51b-e7cadc1463e4,4034791454,3349584883966683817
+2ecf98f7-91f7-18c8-fa47-bc631bc595f8,146465724,455894959711070607
+c5196526-ad13-7df9-88de-64386c9a4616,1675589795,12701423471746213820
+81f3748b-cef9-218d-6815-ac56e363af84,2599286376,11776925868641887204
+95dc3b68-3ce1-856c-23f9-2adc12b9aa48,4006568847,12580929589819400279
+fa78d2d3-b4e7-0df5-7ca1-574f91b6eaf9,2333074523,10971704357441387564
+1907b3fd-b623-57ec-0eaf-0edd83daa0d2,3537803579,10373078228677470207
+40d5ab85-1543-c6f0-a637-9f3b3262487e,636535346,17743682636089781581
+bda0df43-61d5-b77e-4b1e-fafc7d36b658,2737055725,429004922906810091
+8c59b66e-d1fe-c01c-1af5-cd153531adab,1315109835,5454711215583341915
+ede19874-036f-f27b-b7d4-89ff6d61295a,3936289678,6815555709000430147
+f13515d0-6c03-da1a-f5c5-791e8f043a4b,629765363,14937927262935060338
+59d8fae9-b72b-d899-5b75-fcfd70784612,1369472101,9675264482982920840
+bcab8807-84eb-a6ea-f2b9-f6fc256a2b00,1092256875,5717997253957429586
+0310ebfa-0930-1ca3-994e-c57ad7f8a29f,1404292993,9567667752334001296
+8bf505cd-128a-c716-fafa-efeb23cecd8f,3916352378,574543898287411493
+027553cc-55d3-63d5-3c86-66d223463dbd,2930845119,10013662282237433116
+619f6aef-aaa7-b293-b517-b5dedf7aa63b,3375905644,10714464971967626552
+87ca733b-9ce3-439b-b253-b0647686117f,1274899848,587100625883805581
+6899a255-7c8c-0af2-c29d-098d22f7e2dc,694505910,1348185930414385376
+8029b1f3-cd52-8d53-bc74-5ac256bb83d2,2005676255,3438938511219186366
+4ae7f7bf-37cf-e68a-9b77-1df17c739847,2265397007,13190405566191994050
+030489f9-83c3-f0e3-83f6-b004e2315238,3999557112,2595413188290116657
+5fb74c3d-46b7-f2ca-aaf6-0e456886f3e6,956235769,3152477275605699426
+810a5367-de8a-3dc0-e9a6-2b02a063c0f4,744635511,3973579522348997489
+2a0ba6d3-cfc7-44fd-114b-0f7d7e62fb26,372723538,3830175696433247117
+1a5ca7c4-7a04-7d6e-9523-74cb69501ab0,231381158,15731146484566565274
+dbecaadf-a5c8-1267-08cf-ae3639137077,2422662636,7951670455122416399
+fff6391d-3e34-283b-f24e-1afdd8fdd8a0,3984420725,17399269555410675096
+97cf9ac1-9ee4-a87f-3344-2ec2cdeb9112,144773589,11762161677782270594
+c1a666d0-0a10-732c-48a9-a9e9cc2237ef,1264551799,2549411254899270695
+6897bda2-ead9-f1f8-f2b6-525b6f7f5145,771205361,6642878136244471201
+84de94c0-90e2-c6c2-c0d5-97b3f5d57115,227580653,3952355866333989607
+33bc2515-cde3-2727-26f1-b29129bdcfa4,3782401388,8029123907791892913
+5e1700d9-a6e1-41d9-4e49-b88439869e6c,1451532743,15092070288129985935
+978496ee-4126-5e5b-4a9b-6b6b4771df93,2812624869,4451716198134119196
+ae6ea147-d455-ef8e-6eaf-7c0c03fff869,3940814716,18043948769076041610
+26bf7c79-7056-441f-882a-0daae83fe5d1,1290799762,2620791686471638488
+6f711c72-07a5-2b19-4544-f054eab26c49,1587689966,7406782062108286136
+77cadbfd-e714-75e4-549f-827afd38fc7a,608205483,48515088605404264
+ed787fdb-7343-0c47-2904-36ca88ebb4a5,2267219683,6781479439856751948
+ccd49ab1-d770-4d5f-2319-7e897e307331,3810888425,13704838101308558782
+c44406b2-1831-7c20-49a2-23940ea0ba44,498947333,11879561894146782490
+17b472d0-5091-1607-ccc8-c953da4615e5,2861729079,16278773094465568508
+069b3774-5f99-de4b-b086-585960e5ad6e,92426388,7269958240272961062
+b14b52b7-4eab-e7f1-54ef-7f95a6084190,149064699,14588315071412661199
+953d1160-2572-0882-54be-5fbfcb494fa8,975155973,14897330658618874761
+3130897f-d663-cad6-9c22-c587106d1d03,2320792072,7150887129759651342
+df5ba415-bbf1-06ab-0e30-01584b9d8354,2670046157,1843614460950673392
+2064f5ce-8264-1b48-9b9f-695625c4a84c,3763532304,17009815336618758145
+2de291bf-08ff-7e83-65a4-16babd2f9419,1672017422,15419121736353283675
+88721a12-0a99-8bd4-fcff-7a7abd9fc3d1,4281782873,6782295553988960922
+8c50e1c3-afd7-b025-2533-f4d0ece6e4df,1786781035,6302550926591220460
+3e0ae0af-0b6b-ba87-c6e3-6cd6229fc463,1018583306,14926924306530513070
+f9c2582a-6fed-3ad5-1af8-483a78dc89d8,4280374119,11490196242511251508
+25b90202-9367-55d7-3fd9-9de879d17a29,1638794330,15800016603067566624
+951577b2-f4ce-1682-27f1-be51ae57b235,1143657800,6782612618146206709
+c56fa431-ef89-aa82-855c-4215de877739,4065737040,8984035628612045616
+dcd6799c-c988-73f2-7176-5edb4dc9dcae,2983273908,14121127730558706291
+a5a48eef-c28b-e4fa-538b-a2274f410f3b,2968522985,13219488983369578186
+8600a013-615c-b503-d86b-7b2d84eb4f72,2621303221,12932561131955524416
+f33b6717-ae99-762e-ae88-96a8be1c169a,2606984236,10649096778893130294
+7125425c-545c-ec1c-5cd4-c2928b4dc72f,3992551364,3866665903599171539
+3715cd8f-dd47-31f1-d4f2-13fe455e77bf,1234566726,5295701777008133985
+ee05148b-b84d-9214-c264-b1c67ce1ddf4,1835438916,754802191679535554
+e3f9d52d-42d0-9a28-ee67-a779f5df25ae,512505480,13153697171491926809
+e38ce019-3ca8-9fbb-2921-c45d13140d63,2553608109,11826731058115738417
+8a5fde1f-6ebf-b8fc-676a-477db59d7d15,985924272,11023606992272618150
+1c9ad5bf-1067-598b-e207-41cc17b18f96,1977423744,1805124782146048568
+76ea58a0-0ee2-8c4b-45a4-f5e4179c170a,3280930217,13519002302598072972
+7e708c51-2964-c16f-f462-7f40230d9f68,1954955581,14445364936665942538
+c14f2a0a-0f02-2e56-5595-f2213e709394,3516834064,3173250781098339126
+5336f5e3-b3c5-0feb-7df5-d3b1541a19a8,1051328277,12983893368678849571
+b17c2c34-4b20-d96b-8f6f-8ab9be35c671,1325683683,17940455341441592009
+ded7ac5d-f149-c0ea-0119-697c8459ae13,384191080,10671201016620716078
+ad433d6d-7577-b70c-e621-3e5b8451ad8d,3501738025,9264844008487485195
+bbd7c9bf-f6d5-21f2-5a6a-fc71eca75000,755159469,8552086092059106981
+f7dd9221-d5bc-d18c-9f0e-7bbe36fc7cb2,4059715128,9927032565048394493
+b3155f30-fbf1-6661-ac18-e0322656d538,2404373677,12514920090954221195
+5af5656d-a155-7ac9-b7ea-cac2a18be9ee,3348595197,5491383224667638254
+44f5d090-fc3e-822d-123c-af8e74b3219f,1285223282,11013548823536655655
+dddb37d3-8552-38e2-915a-7b6dd6e43b7f,4042578658,9530758849597474350
+708f8fca-e778-8094-720b-9237aea6267f,1634231110,17780508639717939112
+ea642b77-bd6a-32bd-e5f1-ad905cb7ec48,1330792831,17269845616283117905
+d4bf5472-a9ab-0a8c-cf3a-e4c1488b4615,2458575562,2963634438491618275
+7edfa7f8-bec7-db9a-2744-83058b615254,673366900,3128796561320567995
+4a9caac7-b601-0d3e-73ad-8040e4b1f879,281140112,10372015733773566642
+0f0827c5-8630-6c9e-9905-fa685015b9ff,489070168,1760405659078976259
+c07bc9b0-a34f-e2d7-63a5-487ad0204b08,3857872097,13326598706882677669
+f5d00ed1-6f81-dfa7-e99d-3696c52f3b70,2290520,8223035233511922151
+c93cfeb3-d6d1-4036-3761-8aab5a68430e,426488625,7362292168533552102
+e7854bc2-dff3-237b-05df-9067bfd4798e,2461657392,5122229101125275967
+3ce68401-e950-fc29-ed49-0ac4afab363c,1049642915,2425938849407306346
+f98b9947-0b24-a28b-2f04-60d276babefb,2222987390,8790288495753548246
+963cc223-40fa-498f-13c8-69d6d223e9d8,3734562452,15888622682908475552
+22f4031f-34f2-760a-a63e-ac976e7ad138,4010276002,10487917662450554318
+c87a449e-6c36-874a-2117-9751d3f32eb0,1738260004,2128860323250433897
+49ab1315-9dae-7330-5105-1b5037e16d82,2029794946,13767470280824698591
+63124a3c-20cb-be5b-4bb9-c739ac5677f0,4105555559,12381464698796644456
+1d860b1b-66a6-3ee2-5448-84d1d6f353cc,1323992732,7368309719982962832
+cf6f17f7-1619-6501-0620-5472214765ed,1795201640,17499685844937580103
+cb63e246-2065-b0ea-a637-6f0aee02259d,1445398882,8806318421212979644
+a3ac7e22-175d-6e98-6292-515226d73c52,793493902,8294160382540682352
+9c9e88ca-b416-9690-baac-eb58d0e1dbcc,2922090398,12440518645739699969
+4762fed6-119b-b4dd-b38b-ae7bab0996bb,1699960692,14887821379502561814
+d2e3b831-d9e0-e813-96de-49a310ab17a2,3456297438,16221102247912206805
+ca23d0f5-bc49-82af-4f3b-1afa2a54fbdf,3037871650,15527688245785848201
+606c84fc-b7b5-97ba-5ac5-e25070bd5574,114608028,13321076811989793417
+e7530475-70ee-8e5c-c734-8192a20812a9,3677318026,6615962056045057763
+434917ca-9c77-9da5-bdad-359c0a48aadc,913043641,2270562423632345538
+8654c8bd-f3de-9c03-d235-89a5fb865b01,3816168955,7915458814158786599
+8d685d1a-760d-7842-5cbb-6177a18954fc,3869003548,14365143455781144606
+93df3268-5ac8-e3f1-41e1-d9350f76c19a,2223682178,16676325037238298471
+7409f6ce-d6da-244c-d345-0b43b7e57080,1563065552,3403490868448695278
+ce5ff5bd-a344-bafb-b9a6-859b589d7917,9651796,1059390760584222399
+2c0cad0f-169f-2442-4b54-6ae9d5760b0a,3738485048,16046646472380595546
+ee41c888-b446-7d3d-2b0e-07574ee31442,2990757189,3245761680035866224
+1160a1d1-4b20-a07e-7491-61c09d21699c,1113284785,17353200404699308596
+d0634704-1089-dfd6-4827-43985bd86931,2127380384,11168788079982732899
+6a3c7eb1-4cc4-0cb7-f3a9-36a10686ee9d,2563959537,2964788844141959176
+741aac93-fe54-31b8-8c5c-10ab9da25b13,1383355739,14125795347962440837
+99edb401-c8cc-92f2-2be2-534cbc70ea9d,2149624414,16397393065018498027
+88257d44-f5ce-021d-21fb-0e0dbdb2cbd7,108254044,14551309111264286494
+7f68bcba-28be-622b-f8ff-7157f255bff7,2023613034,1421381392458160572
+37ecb9ba-8fd6-c742-6576-28bfbed6f09e,1922886096,17888286318324641768
+01ad6054-95ce-f9d5-300b-fde21aa61f2b,3505820962,47679649954999738
+be40c5f7-4170-d6f4-7188-d8fa40957a2d,2481403549,9702357776086854272
+24d8d9d8-4990-3c4d-5650-18e1fe5ccdeb,2313949164,17441696411043723883
+760711d4-a829-f8ae-8d12-01b9999f6e2f,1985006253,7251245514674592428
+ea9587ab-77b2-93a8-3ba0-e19cd2b0d5ca,3347944131,2015744370502155302
+b5088140-0746-53ba-ce40-7660f2b7bc3d,2668944954,2068081349917491772
+6b256872-a31b-e189-8bef-45704c7ab780,2786576269,13804518571674990866
+40e24c7a-1868-64c0-83b2-0c921f581b29,1126663348,18192919013592711466
+6e196203-e234-4fb3-4315-f0f855582cac,4014639275,16543478429380494792
+dbbc42a1-9d9a-578b-fa19-41caa7bdadfa,3511428451,662159776768377915
+2c7ce70b-fe68-0512-2ff7-df88bc912f57,1902345495,780083557267356179
+eae81411-744e-f702-54fa-a72b6221bef8,580708870,15414618244328945266
+f222cda5-d9cb-0e28-dca6-c19e83bcdac9,3572785182,11621903897978143715
+a152b33b-4d26-a022-2195-899618163c66,3833252283,3696557301123398450
+327b27be-3900-d8db-3fda-97879b3f177e,94026786,11485683874122819429
+1afeb2cc-ff13-282c-6cb8-8a37493a132b,2047037367,12910089339587103758
+11250120-f482-fd9f-96a2-e08d2e7ef101,977821622,18030066505764542822
+18f6f3cc-21fd-8799-1d06-34175017a810,1620337498,7634188090947603687
+4eecbe00-7301-6a51-ac59-1f8f42fbb61f,2549312929,4784903923059721844
+4d6b2d27-c078-f889-27d8-557d93ea0d4a,2610592942,8834091394395831095
+9377429d-91d9-74f4-a085-1d24bbeab6cc,2778276273,16497510009640244298
+c3fb7121-6c09-17a0-d5b3-206d76a9fcdc,2129025923,18093465722981220670
+f6ab5c1c-5144-43fa-d9b4-4bf16cc98c48,493799022,16181348901471634185
+d61425f9-275e-a1d3-0ddb-61668ea1d091,4081953681,12149119622970992418
+3db37d11-0b37-4bcb-a3a0-d7af4005e18d,218695772,6102283738765001344
+92f34a78-8279-a2d1-5123-f6c0a540789d,3513277286,3694303198335602047
+5fb9aba0-3290-9879-ec67-802374f6561d,4125278729,16323004462701649237
+fea0e8ed-b472-917c-6254-0c5253f29719,2861399070,5793638466898862575
+6eda2170-ad90-321f-3c38-f0409152f126,3766393809,9328633694877861601
+285ade95-3b6a-eba8-b7d3-240b0df854f6,1256011288,4411940682437090405
+cf53ed26-d355-0f73-7aff-4402fe6366e7,3702871259,12342853594512091687
+efcd8b9a-9f20-1467-31b0-6764b5771e0b,2482609761,12391583131990850603
+b14dfe8d-9a15-9779-3c8e-3341415c3129,1699708035,2370055531021272732
+def2858b-5506-b5fa-e302-da2a425ee840,490221998,1416605472050049492
+be72531c-849d-9512-89c6-04a480fe8fa9,2128107814,898583662862621450
+0fe2fc25-2afe-488b-b588-74d053fa2c13,3882288947,5470595906470241430
+38e732de-a7bf-4f83-c1a2-74c4c9c960bf,594424624,7877121048194957732
+94ac3eac-d44e-3032-080a-2b570828626f,2829260457,10495302213777537316
+b653b07a-00e7-2a3d-2671-ba403b8ce948,82043141,2271577849423577655
+b5f9839a-6cbc-78ae-7292-5bd9535dc24a,1149032446,4649368139082320879
+59245f19-a671-b6fe-4439-bc0c3f7a62d6,267669760,13747367484866788030
+af3ca99e-882a-0e4e-b790-6831095a8be3,3638305914,10600373324944572784
+55c09c05-74e7-7429-69d2-89e7d5c8da85,1845495482,4893121120143279026
+216ff8c1-6acf-c23b-780a-c7c7b7a2377d,1444766002,16578796092198061301
+307eadd0-9b2c-b7cd-a398-dffa09e1ddec,3734725689,6482650475788250252
+713471ca-0603-ed4c-7cc1-a9e750924fe5,3130436999,11598731165911950859
+a2b80430-8e21-3f61-e965-2145eadec5f4,2991327011,10519590273540866052
+7d4bb609-7ca6-0a97-ecc1-f49d1983e8dd,366632351,13573028311313874136
+39334486-2e5a-b811-030e-80a61e972f34,1954271986,5209264664401609111
+3be60e30-95f8-2a9e-1b04-850451322084,1912381925,3133989634339172800
+da7afd65-5961-04c2-8842-f96e1f0c19a6,1748219713,11153260139054599697
+5dec222e-4383-56d8-59c1-cc8f25e515da,3271283995,11850367458823959088
+78ad7ed5-7d10-4799-f5df-638f88d505e9,4115708920,12892122638296269582
+c5e60868-a738-982f-6cd4-aba203e19701,2727479982,4926742570531392896
+1d9f167f-6ace-a24d-8ca2-b2cb8c2e647c,2610421163,6610648990020426816
+16e06d20-5e0c-ed67-e981-d449a1ec209d,403556368,4050789922639129957
+2c114406-c5d4-9ab0-713a-cffa65415f53,731705782,5982211416383762352
+4ac8b51c-d338-05d7-cfb0-16609beaa0ba,280089938,11199114953257650157
+54592676-ac9e-1a61-9eb0-6f648715e6a8,1442011573,12753663947880254525
+ac836cea-fb21-29ad-ef73-2c1c8a289a59,2806486967,15518957387483727620
+d80722c3-10cd-c243-45af-7bf21d0972d4,333852473,1393595149337392450
+a8212e04-880a-947f-54b5-c1724433b2b0,2540518647,13934805009019856351
+f0fa1c1b-99a2-a3fe-3f76-6cba76746fab,3855151538,2458148955495930148
+88d12200-7a55-92a9-6028-fac04c6f540d,2538538772,15025056581069784880
+105d09e4-8fc4-4dd6-3a4e-908880d592a4,2041396562,505488390314189023
+e9b79c0e-d4e0-df47-6b64-9d74fb2b7059,2586045843,17370946285711962563
+df3f1fbd-b943-b28e-5a93-e294104740bf,981537716,10559989664636795790
+df3d933f-5e4c-52bc-bb0d-1a99b958ce92,213143247,6870822172915132363
+ba7f6e8d-f77f-37b7-86e5-4e6989ece73a,4048083530,16873600028786941442
+36e95084-7a8b-6646-0f7f-332a94aee218,2226578651,2675177244607030225
+bbf35e90-7c62-d246-8f2c-7098c2661761,2406299148,8826335775132115968
+b43c2f87-1576-4602-5152-815ce4b28ceb,127845817,7227877603662884396
+34a97702-6df2-e5d2-140e-3b6b47f36e26,426551970,3783277188775486204
+a26b238d-cfe4-e931-9b77-640387583024,1108344821,15728372145242579115
+21e1c191-00d1-4c21-99a9-5675a49dc6dc,10818073,17497995164839074507
+a9c6eaf6-4674-fedf-81a4-9512172c8a0d,1190377557,8440821902056156057
+6d7d768a-be8f-3044-e82f-9b05877ff136,582806623,18287331404024210097
+0db8057d-6116-7489-ac5a-2b7532cf8495,2265693913,11956510596704942948
+5a5cd058-82ff-e75d-2f53-c163bb038520,4222674778,12503662919016870424
+42fbe3c7-175b-5bf1-65c6-fa55f84bcfa2,1985030056,1684101176742362881
+549dbb7c-84eb-f25a-1de6-34b61e52e8cb,1627264278,7194488039523686224
+0de10aa2-1509-78d0-56c3-f1bcd2c2c987,2812591206,10704798157820157438
+abcbe24c-c394-a4d4-2aa9-4a601e4f9720,649024875,16300187996382773913
+f126f234-d59c-09c1-b11e-de7b384ef865,151983798,17447479724157599953
+b114ad5b-0aa0-febe-7334-038ea05fb36e,2658788186,16452785091279291549
+4a9b0029-215b-f1ae-b828-80345abcdd02,969258067,11047072153905584067
+b54eca48-7116-ad57-b77b-002394195a85,3477467430,4591227976047418719
+3ea0df89-e17b-d732-1075-4d8412e20ca2,1420671111,11119711254233668452
+e4403fcf-60f4-dbea-a92a-4ec35e96661d,640755822,1431570044205572146
+a867fb4a-637a-819e-bdd9-9147a8688ba4,721649561,1352897937879793817
+f85401d5-4849-7fbb-a95b-2aceb60c52d8,2095123457,4637458666072554993
+a9cfab65-2766-7395-8aaf-e07815a68568,3405285148,15204334158861381481
+b1819207-be52-69fc-84d7-e5d212078b51,541505616,8055694537050245272
+fb1c037f-08da-6eef-d371-d951bd18b37b,3167287502,1227839654240536621
+54ab1604-6cae-53e0-27e6-b3b2d801ff19,1193931154,9593290498127247982
+60e7688d-407a-1831-9a82-380df663c6f0,2762879704,3542539238542092365
+77071bf8-e688-2b48-702f-ad757896895e,2304507590,6699603304902227352
+800ea005-4da4-d57c-a21c-4651d57dd2c6,3534669297,16085059142038646452
+a61f354c-da8b-1e0f-b8b1-af77b56fb2ad,836263908,8168690613288231174
+bceb4e83-91f9-01d3-2482-0d79192638f7,1748415397,14049628086809749577
+ac8e2d90-5f1d-42ab-9b9a-d4fb0bdcfff2,4237935233,2130708032719458351
+8fdbbdaf-a380-d243-591d-04ca348efd1d,3209675337,16695619755821686671
+bc589690-1dc8-de77-d693-1675731f82b4,2059824918,5600257102182594099
+9b032f8a-ecfc-70fd-09d8-bd9be8d19739,3291098299,822377168275293934
+f29970dd-3d7d-2a18-40c9-d8cc0b852443,2087396432,3450713933308295715
+b24c9f54-0025-5238-525d-d64038d5eb66,3163047898,7792854803030977444
+5e1d4da0-8fd9-a96e-dfb3-490a1c882349,1536180530,17276004040111702128
+e803f848-862b-8c76-31f7-2b457110654b,4174521029,16546072166306982240
+51ae552d-8716-8a46-2d14-a141be2286df,3844580006,4141556071014775615
+251d77fe-f43d-e0bc-2c66-183653983d71,2811689906,11943432251027757311
+599ebb29-4e24-d982-0d31-fb4146c414ce,2677358894,5931535356441605950
+ef0da78f-0d21-545e-1ae8-0e4d3d2c440b,485687070,4715611422032159329
+291cfe07-8583-0c6f-9250-39ea7c7be3b6,540312616,10442164556949676292
+3a861786-7fcd-68de-a80f-4b4dae394d3e,550235391,14945690738968007675
+755ed80c-2f10-9b2c-81bb-b2273b12efa2,2036885573,4309939806145493338
+961b3ced-4b49-2c65-0f1e-34eb1e038bd8,2932284575,14621251213996822535
+6f0a5aeb-d4f2-138a-cd4d-9d8111a75220,4025961511,17157972919129225999
+c129a0be-7a0e-b515-4161-6f2bb6bd7377,423420399,7943934873410502094
+e49f66f7-d09d-74ac-deed-77bd24b98c60,3223965285,13839094336977767270
+23599885-08ce-15c6-d24a-10e9eae82f9a,773740961,8982388564259335325
+26b97054-85e7-0018-9558-031d447b6116,2393081848,5220203562174129565
+ba727b83-0c1e-ea16-353d-8d7a4b8ec34b,3068057209,4642999674919633831
+36a56909-763a-dcfa-5982-f738f256506c,3104936360,4271184358651025330
+d473f1c9-ce18-68fe-bfc1-2676cff4d094,2544297227,15015211110960036582
+7f8ef355-328d-202f-6e04-d31f88e3b533,1216163316,1958450651591598238
+4f5fe48f-99ec-999f-2652-ea2a6481bd9c,3775025350,14456941306957905332
+59276ffa-3a02-cdc6-8cf8-f4b48f22ad09,3550232180,285716397020046790
+9e9b136c-4f61-2664-e30a-db00bbc17b83,693973170,8774873794929698824
+e69f8f3c-1c6c-c279-4f34-82816ea97639,1066034558,10344616791017463755
+31f77d48-0f91-e7c9-b190-5461981e15c1,2213773686,13241636124679739221
+4d01313d-e456-f5b5-fc4c-3477df5b8359,2915011935,2649825865814527150
+e0cb3b87-0a89-d64b-7165-4a8b0776c066,3783003743,14610637624504069991
+f1728da9-be8a-d87b-c8a5-e11587953777,2133656641,16992682731024085580
+30314193-b8ad-fadf-694c-22aa70255816,2418369322,4172256860456258409
+e46087eb-3f91-3803-4c7a-a62e9ad13871,3336072967,1989807285713884089
+a0c783b5-c48f-d315-5d8e-c156c82042f8,838542806,10545390677522056678
+b19f5ccf-d325-8cfb-6b6d-d545e2bfd317,3950485090,1935363804594569757
+18b4baf8-50c8-d7c7-59eb-a6d8dda85ba7,156078871,3927576971436031940
+b30b16a9-5aff-da46-8983-0eb2cd919439,2905274616,14419162114789261250
+830135df-bd93-d806-1b92-4a7604e069e9,3734523237,298556738276299362
+07de6bf8-ff90-f272-612c-970e3d358d38,1891064706,9730824830022831212
+08cbbc8c-48e4-2fe9-d397-fd81e27a78e5,549357383,17338808083150290735
+2e8fe7cc-91f0-2a70-d2b6-d61b5818d61b,2644204216,13491003200651702155
+16282fc6-27ec-fbec-4e77-d0647dad0823,3750507580,1959080552059255586
+800be8f7-00c9-c0fe-83d7-45c9ee50c243,2111096336,17897234407227387514
+1e7e0591-72a6-3ead-fc1d-7acd72a655bd,13084450,10328222697936941928
+5dd0544a-9c3c-2343-f566-832cf9af6a58,2768157491,1517673942489675168
+e1688e60-de02-be9b-0e7f-34839de74502,3210176139,9475940038455638961
+4265e89b-35a1-5782-ca62-6866341f8f69,155229680,15309664444637317477
+137f2d38-ff5d-f0be-0bd0-70130e92ef5c,1473833649,18176273199640011069
+39f53eb7-2b2d-36af-09c9-629e584af5e5,2034772066,10459077873899728661
+a0515d90-70d4-a683-49ef-5ea191a0e5b7,302695330,6051867066926194794
+22f42329-9c87-1038-2b11-33c8a663951e,1731290994,13029613705643969346
+65474e59-08a7-5896-f5e1-4017cfd7fa74,4261735663,2645959275314237161
+d9ed9217-9309-4710-4f53-0f8eda02061f,2741806814,16692172660697633827
+d80967c6-79ec-c696-9890-251117b3c164,4152853056,16358155830529948661
+7cdda92d-dd81-b814-a0bd-894844c7cb7a,24827562,5590968698238772074
+be0829b8-6710-994f-8de2-9ad58ce31554,1867503152,9227047318663535181
+415ee1b3-eda1-be2f-7fd3-5617b6700b9e,2383977491,15416698778179233135
+c1ff871d-b66e-fbeb-317c-48421ee9d840,1724213061,3679756826242475366
+77dcb7d1-9e77-4e4d-ae88-501929abad13,1948973937,4167917163968347487
+77ea6c08-4493-be85-9e15-16c33334b8be,2698695454,15434643825777239835
+4586fae2-8031-e762-7b3b-9dd88def5714,562504739,13436139161458412270
+7db45248-6e3a-f01c-2aaa-f6e1ae0d4101,3475996774,9490209586131930064
+5eaf818c-6180-44c3-3f6c-ecb9aa2fea1b,3739674273,12016239992450518849
+094ea462-3846-8e7b-fa84-708e2968cce8,3220947755,14088047354182349295
+3ee7ee83-77af-fad4-f670-e205724e7a93,515875742,2246042700335053086
+49af0a60-da07-cf60-6ff0-fee7800a3aab,3230601218,4202771572278927117
+5d497468-eb05-16f9-9219-b5730b460cc4,3287772783,15348370989299994628
+1a3ae295-b4b7-c93e-bedc-1389b38df516,4062114504,11374225124173437863
+88b6d573-923a-6c62-4c3c-f3fb175594f3,3114554690,14981201451303135288
+0034cacc-d327-080a-eecf-6d4340e51893,3284887574,3694127020257974852
+65778721-81f2-c252-2a47-4d87abd22f44,1068058679,3287001031333756741
+dcdef0d3-e4a3-afe7-7675-286bbf4a1c20,2782019565,13083003969149195950
+0a0f534a-28a5-ea68-84aa-4fb361efc43e,2059710773,18335652584720332387
+3e43b967-4135-7e6c-f707-29dba0d1933f,1377245670,10127517061558821003
+91923422-8d58-ef31-0744-2b751a6763ca,2434219393,5857913798956332137
+2778254f-22b3-0097-ed7e-30757ed048ab,2016683960,13709130984264618481
+224577b1-a1e4-9f5b-6063-2883792e1c72,2315935038,7874270183487007259
+79e343e8-b270-fa56-e5ef-05a9ec05acb1,2198551969,12042632956482833147
+9a260bfd-34f1-1f12-f8c2-cde26571e97b,126916594,8870710174015139529
+31d7150a-4b34-af32-f0d9-7f95c2faa27a,1099848350,10383342790608223755
+7b4f056e-1b0f-4205-48fd-30a333ef7257,1302850588,2094881360929146192
+8d717891-849e-8c24-8071-f5ebf97428b1,1139984279,12755365616639153630
+5f9a26c7-042c-a832-a307-9c34fc2babab,807151613,10853930840261218850
+3dfd6ef6-4db4-72a7-6484-325873d22e2f,135884435,17343287600857085550
+1d710613-5253-5f19-514b-01cc92508e52,1016232529,3007176321830979103
+c198ef1a-6f5d-4ab8-4615-aa02863220cb,271208543,1652108329271111417
+bcacd015-691a-f16b-0e68-91bceb950837,1760989525,7021031766983905886
+a7f88c74-a79e-db4b-1c2b-27ea65fcfd0c,2172325964,14767873648310814869
+bda5d3da-f0dc-67de-fedf-1b6eeac4a02e,3474197155,13053106781401159972
+efe6793b-1d8c-2e2f-b6ac-d692b0009d69,1580069434,3963642542564299876
+0038788e-2c05-7431-56a3-71e1b6f02e1e,1689240380,11469541286846336310
+49640508-50f3-800c-dc05-39ce52131295,1410132869,13834853103923394843
+7e1baaf8-1129-fda8-ea32-6e0fe4b18cb6,3429307630,14684658232195590526
+52729eb7-d7ee-833f-0e68-8228a6ca9863,3791408935,1973049319049261230
+d6351cee-228e-b30c-9bcb-60da786b5ab8,4079490531,14024630575349862077
+f4151562-248a-f13d-20db-2a8457c358ab,3369998925,3359273209400701151
+838fd420-7eb3-e396-b5de-a4da2d97cc78,2858953517,4569404820214620
+d0055665-ed90-940e-00ac-8e06f88de537,3617886551,4883378742244922380
+e92074b4-5eaa-8104-6aba-6e670b2c942d,411463034,15166236249205078174
+76425dc1-8229-fc58-fb78-16d5eaeb980e,2304974196,16893764419586544965
+162d3acf-a30a-55d2-3f60-1c3989be4869,2836930573,5877908180569096246
+6b8fc894-8a86-c9af-44b1-c6bc52542f66,2491726051,5400640187832853571
+83949966-4d0c-0de3-6946-fd5ac9285a9d,2982670510,15165769280697849509
+442a3ebe-7cc7-e2ea-a1b3-1c2333c5aa1c,3033442393,9944371178342995960
+9f389a47-f1ca-9db0-5f33-dbf74b017746,118811822,11573731798442200503
+19fb882f-b4cb-c138-9857-dba1adfda2fb,1924083529,4570160929248115663
+359733f3-c7f0-8dde-0ba0-19f28d7ed8f3,2358940382,14801188368707713998
+12b5af5d-adb3-47cc-83a0-f7d0239629cd,2924942298,310821280830623781
+3511143e-8ea5-f04f-8405-290fbd88b7b1,3376600540,6879775282554468180
+1cc39d11-2ae6-ed03-a29b-ca8d1666b330,740298712,11837839189388555871
+f062fb34-8015-af3f-7585-75d0d728ba94,4006768395,16145953734047412824
+671b8d5a-b337-c74e-e7c1-7a831539c260,554571528,3437831025777672617
+ffa6c20e-3598-c8b1-f41b-73acc2513c9e,2363189894,3124834184676212708
+b023df77-3274-6a0c-af18-60f996ad9869,4013851412,6111781088035561157
+8139666b-74ca-474a-6507-78db3ee2de8b,1878123253,6851489388917060456
+0f782e18-e31e-dff5-c790-6adfbb7cdf7c,4094235638,12692502177207795774
+610aa11b-dd26-124d-39e6-bfdbf5798a8d,2722913210,8520659770922572984
+2d56c97e-c430-6f03-7fea-5fef83db53fd,2401401609,9138787987222775241
+6f003d20-9b86-bc0c-1afe-359586b70aa6,2929894775,4590502995316591842
+47397d67-d00c-eb17-82d8-41ff97b047ae,3908103339,15593148592723556461
+9c9b5c9f-4ae6-2326-52ad-be1410093fb4,2009122200,6628692217145754424
+c2c1a3e7-7cd9-aa4a-a523-bcb5242e500a,3889875693,2819474262672975256
+e577607f-81ab-4f4b-eb50-73390943ea4e,4142596653,4566797803846642750
+86de7649-5d35-64a4-eb70-6e920f7177bb,2280215582,15318011618679725723
+ce4381d4-0a75-0e9b-a97a-8c3c894fd949,598035907,7307687183339611098
+cf8a81a5-93cd-ad41-b1ac-3eb02fec10a6,2868024542,6832359916462617270
+cc095fd4-fb3d-7e7e-ec8d-688362c5ec1d,3142529596,12988683846874658592
+5f3c0992-16b5-5ec2-7e6d-f6e3f56d67a1,3403068808,15565628073510382108
+d2c778a9-ba05-58c6-c2ee-9175f5c428f5,2279410757,4567268172071887546
+82b48e3e-c9e0-41e2-7ab8-fb7033499fff,3898337072,9997133868584815536
+183617a1-0b84-5bae-7b04-609888d7c100,607218617,14235534012865699548
+9a203cd4-625d-d76b-5a5a-2588676e717d,674982703,5455330348312041145
+c3fc1f32-6093-e321-70f3-025c7aacb456,3067225609,16269082387021567761
+0b5dfeec-7830-e938-049f-38f7560d2b2b,2663529338,13020025972453860947
+105cd35e-14a8-a53d-08ae-91b439adea96,142694894,13694269913152281101
+8eadedc8-2ee8-0f89-bfd9-9721267d8f0d,731841046,12680449000777724090
+a8d70d13-f83f-5ec4-ea23-84e569826269,1044823893,1601174561758195339
+12c6de76-6de4-7e2b-75a3-baa1dd62fccf,2099924586,14847434780509973288
+62e453ba-f93c-92f1-ea68-1779ecab3eec,2021439279,9377362835840801336
+7448beb3-30b9-e7ad-b8b9-38c0b2e2b5aa,520645992,6896263879845207818
+017d49b7-0e19-bbb8-fb49-8ca5612a5054,3674548485,2735260637015567319
+570552de-308a-5758-edd6-6cc15dbe30c6,1039988749,7634613321487540844
+ec382b03-802a-831c-d64a-e29485651ec4,3064328502,16296004476628598091
+9ac0458b-da31-e351-ef6e-492bb2140921,897390629,7205339972394765531
+a5912b19-ba36-268a-117e-c5631bf8f54e,2913590136,10949643187105450886
+1899fcad-fd7a-f845-b258-f40f1245ba47,1299509249,14764675639226513367
+556b166e-420b-1fb1-f9cd-1085cc311b25,699724686,1757605416727382702
+d4dbb006-938e-d0bb-c96d-7061b9b66ff2,2869532424,167814658843819426
+dc9d06d0-a0a3-e13b-de2b-babfbbf39e64,2674282615,14161329740606469087
+9d52381f-4b3e-5e98-d51b-f21615245b26,1115651305,10897248186923412781
+b087f0ef-6997-2276-8130-dae8e871ebc9,3051010941,9663005326803850557
+00a2d9ab-c87c-7cdd-c58f-f4a8a31251df,2218126541,5107834624447190680
+e9ab3443-dfad-6227-7eb0-79d4c4e9c98f,894961531,4917346607904405537
+d78deb1e-efdc-83f4-7970-b3936d873fc9,4021851061,13292775553072409118
+5b6f90f4-a93a-0472-f68f-9159ec9f415a,1199700580,10088533354205339982
+f1c44f48-e529-438f-6038-8471658e95dd,1727773902,10984026212913839540
+e9add0ad-db8c-b16e-d033-76c3d6ffae2c,1792087067,4902717626411077961
+0792e899-866f-c774-a129-2810775e1d4c,2392406576,17202815264164010074
+1035802c-edf0-4077-d602-6cd626961cb5,1188270381,3319530021580103931
+4e955d20-380d-3ec1-8b12-e6060f3b5197,1293335951,9705008713839264412
+1870e402-fed9-7243-2a9c-8e8a07052490,152901088,6141996199451495892
+d0f46924-31b5-65ee-757f-c0a4aff368e4,1158304614,17010754499566982988
+53905998-4936-3bfa-95e9-eab46a573a44,964533806,2563702063402048574
+fd10ff92-f763-f93f-451d-5361e510a760,4005144517,9290445116158514932
+19767d4c-5fc5-4d3c-6633-057120593bd5,1349285066,17293496141846285300
+2b34ad2a-fc1e-60a6-d634-becca1680c17,2613387182,5017828114461468069
+1614d045-2a0b-38b4-55c2-05d5f43ddbcb,1829756068,6490383851278233709
+feee8662-6814-7647-55ee-7f8e81b512f3,907607199,12636121136172670721
+1be512b2-8d61-839f-f65c-62d188a85c56,64083578,15467469776969769167
+99f07fd7-7d9e-1c4c-83b8-78626e14cd31,1708289387,959300041695890668
+2a714df0-7cdc-4d51-de04-4930a58818ed,2887294318,14455501940491807842
+f94aae24-34a1-dfe7-4b6a-179f4f0af85d,3393362227,11545536833552647926
+f24b29d8-1dd5-f6b2-d2e7-09be12d19bb0,1119792915,7978955363850740092
+0e9575d5-616c-b54a-dc66-a32a69f26804,1478745132,17805345222162290101
+9e57b208-5cbe-371d-2134-b85ffc56fa6d,1991881629,7216006315681636886
+3a1ca279-2508-5625-4aad-80f28035d8c1,644481061,4940408195914576845
+71412a9e-96ea-948a-c647-ebdcf363c94f,1867479028,13001630888336996556
+bb16e196-ce77-881b-c970-5d568c6d591e,2771487170,11323031698078576717
+396baa4e-b722-83a9-66a2-70b0da4925ca,1979702047,7995115492372304407
+243322b3-d53c-0668-55fe-b959a9619688,171222,18055429133562325030
+0fc2b527-f8ea-b5ea-0de9-06189b369735,3865117469,18056823562339592074
+24681909-abd4-28a6-f1ab-c1ba657a5b15,3794276650,5788124501713031803
+a074e359-7abb-30ca-7b76-757124739717,936611682,1651349907754549108
+68afff96-cea1-c40b-c825-9548c1402e64,965855263,16040679505061502277
+3959d318-2537-7fc1-407d-3d7ffec9e91c,221318186,717043376306535419
+158d6085-34f8-e9cd-629d-299a80edb291,1057110081,18188416015881929757
+9ec6460e-ae51-5d37-5e11-17fa2312e887,252851385,16276201595902409214
+51b935c5-3aca-1134-ca0b-5fafeed2298f,375122481,7242629899983644015
+fa2834d9-120b-e662-16bf-2d68cb14e305,1265009102,9106381368130533789
+f96f153f-9fbe-9857-3639-9710d184d693,3297418352,13138692149072489975
+5f0e88ed-b031-a1f7-d196-ec06765168c0,1977057535,1578037733125213681
+1ffe9326-6875-5fab-f067-b9a2f234478c,3483805916,4278903041730139837
+ff3b0c6c-8706-87e7-8ef2-ca4f00987f32,3406958923,7371651161342602351
+b78096dd-e953-8aae-d0b2-28d3b093a263,3848041746,1460299254016728348
+5cc55bf1-c4bc-6007-8c06-0e63ba40adcb,1463604071,11124136994043476051
+71112c66-c548-cb6d-0762-85ec1a65a3e7,4125734689,9703258140676769119
+dd72ba82-1edd-b00d-980b-988e989d98b8,1219513040,5758168487700833721
+8dfe644b-d2e7-3b15-6026-f4785be5056c,3969013656,3886985268882692589
+80910bb3-6935-a443-37e9-69f96f95049c,1291673248,360776423225002416
+1ea978e1-f4cf-0669-e745-6c9f64d4d21f,2396638416,17609355288834654350
+a3b4d151-eb7c-9e68-6b7b-8278af0fbc55,438783375,9856211412228973266
+df311148-f6de-e2bd-0983-a29787dc191b,956376146,11083661716392189858
+770cc331-8c4c-f3c7-f96e-14cab957b798,1339238680,3466721094042079062
+4da7b85f-431b-9a26-fb59-7622821a9525,3296926099,16934127871421792408
+40f7fdd6-e026-a278-713d-a413e3ee23fa,632730398,9900018739590419613
+44234814-8c46-69a9-249f-823004cf58c8,2157071767,15710559768212653676
+ecd62678-fe63-692c-4d1c-c1bd61a2ca45,1175911575,16791049750369167069
+cc71f31e-cf9b-a9b1-8436-3e5b65ed521c,1316827030,10473009440994710507
+a66f7363-f426-737b-5170-c412f1baf569,1882260727,12333298786331497193
+2898d772-6558-e6b0-4179-ea52cf31fe98,486303288,471593016007695921
+95710b9c-686c-d4e0-2d4c-490e808d237c,1333393340,4886445698852032880
+dd99d5f8-8d3f-4b84-e1aa-c237680912b2,3517129863,7021209695630330691
+6fcb4023-8a22-6d70-021f-5cfa2d332c06,1906937495,1821277340711324142
+41575938-5f2c-29cd-867c-5f4ea699a1fc,2781129029,7420251453654949214
+42574c40-622e-c74e-986a-ea5c806253ba,3587741590,10848696867722367056
+cb6d5931-f633-6568-2768-431e01864c29,3970109662,10621659178803824367
+ccde39a7-32bc-f0a2-a141-c16a46f4d3b9,3102817090,9979027559812438174
+4607e5b4-46a5-e2bb-1bb2-11e8181c10e9,834768009,6357774720028525671
+dd33a1dc-2a75-23cf-7366-52689cb93ada,3900609179,10178772338703647356
+abc01b7d-4e2c-db4e-44af-f6b50db783ce,360703748,1538087555613359858
+815081ef-bf44-25fd-4a01-fb87050c14e9,2228156056,17033581144962430790
+6b5c5ff4-9ca0-2d5d-71b6-39ed6455aa52,3234478848,4797664373846405790
+4032d70c-8e1c-ae72-c0e6-863728bf2253,2066557806,4808452766450441536
+495ebba9-89ac-ed54-f9d7-4a7652742621,3673281788,3183525892659360354
+dddddeec-a8e8-5c34-503a-ef65564932ee,2173360581,7697698557689266241
+cef6e353-674c-c0b9-0405-0e1229cd10b2,2445329121,9487645392691532045
+e43c94c6-4151-4fd4-6686-5e1503017343,345173998,4619513130342417320
+0e906289-de17-c632-e4fb-8987d7ee4ba7,1314621007,8607022193553212352
+d3ba3c8b-c490-0275-7dde-1d2cd792c7b0,1013786587,7795015400832977797
+371a8141-01a7-9bdf-f608-1b213ae12974,1777265758,16843498444436576898
+45fcaf41-6606-bd77-9686-b46bdfdc7e60,3672123054,7588713013325895795
+b2564d52-b3a4-a6c4-6e62-3c04fea0f1b9,530066656,13256707436891130469
+d65b2a60-9764-a73c-6b9f-936788d2690e,2078572057,10507698962562134391
+e2e70ec4-f88d-8464-8687-adc3748c30f4,330890604,8394519939258203967
+2c4e2319-c960-54d3-4e4b-616f4861fa35,1755410811,11783408538568915467
+12ad4084-be54-a443-6e2c-23b21a945223,3739514875,9709245594872482125
+73d2d8bd-8a79-0b0d-f448-978ce1d658d8,205494626,17011246098186740394
+fe44d199-3ca7-130a-020d-482c9e2d9761,4228568410,310409872096612721
+2ac00fa6-f406-a120-10fe-879449c39e5f,2401456651,7682408936634445337
+6b2c3f5c-2548-f664-a0d3-b08a3111f1c1,1838193293,9878230567207774443
+5498d405-1f91-5fa5-6a0b-91b39e59f8e6,16330149,12277276544009538166
+bc1167e6-187d-8f1d-5092-7a37af094e85,1267938994,6986607178487111726
+51960f42-a67c-2e4e-5407-9abbce1f5276,823767608,12746981213032674256
+e0ca27e0-de8d-733d-79ba-db63605cafad,3990806101,13217199722101388353
+ac349425-fac0-d75c-e422-431a1ea01302,476142911,12980854245255541435
+658c99b4-c3d3-211f-058d-5d443dc5cf08,967532907,17188139154473120297
+9ff24cd0-2ba0-9f88-b6c8-b6bd61e65e4f,196812227,22663216438035985
+e0886618-5d59-c77c-c9b5-b2ae68138381,3048799599,17655024932691449018
+321f30a9-7381-df12-f7a4-09f2edb45f56,2470997788,7222825063762043980
+fef15c37-9ecd-8a16-432b-7f157ba801e4,4184213156,3275976480522805527
+4c2fb8ec-a974-5f41-253e-5f306fa7be4a,2863314276,10569803791021895674
+93b09ef3-989f-3a75-1fc0-540fa079bfcb,241109656,6049132175322283458
+6e071e5b-c6f8-c7be-9990-0242a0c8d913,3960732884,9818204644467569084
+7e45fea9-68ce-7c7f-6111-b3daeb35d71b,2844383766,10691809327855277253
+870170fd-e5f4-2cd0-cfdb-582b90c388e6,1121101633,13606497338829572087
+de95de11-41c9-0f1c-1405-1ff7c82a1d01,103833491,705983503368962658
+c204ee01-48ee-b85a-32f0-cca2968aa48c,314752193,12020334033761544341
+9be65f1a-3bf9-2805-7ebf-490815a0f008,3944194965,12151744283097159253
+6521a121-6206-cb53-d3f2-89aab98ae0ee,2022465245,3446278310918313136
+80a7783e-14e6-780f-a17c-34513856fb3b,706872546,910945324756994517
+3ea1e2d9-03f2-e100-1ffa-23de127ae248,964663205,6913761516998478406
+1be63d00-2915-20f1-a551-e1db664ca6d0,152179172,18145546719022035824
+4a57234f-8e58-ad2c-a07f-9fcefeb59119,2396553351,17150008928465267898
+34e02149-0cc3-a058-e952-20de75b623d1,1473292622,14977072823053312012
+48b68635-1e03-dd8e-c754-4e42bcfe0890,2308589296,3112952119263415769
+5b59e839-dee9-ae3e-29b1-5a92e684a219,4040726360,7776067005197231509
+a5fbc1a3-6ca8-d381-e49f-a29fec8931b6,4246224038,17651360502634475861
+a1365901-6221-7975-ff4f-c65ee576f010,2515072211,14212847369700922162
+00af4d80-e566-eb1c-75ed-09ed7d0ffe10,1063596058,11639502701926359207
+692d8dad-56a7-2df2-8ec4-99bec1b01874,4278717703,855353415139436712
+75b8c06d-1e50-4f2b-bcb2-b29f0bf1a668,3217928898,17653768555720951680
+1ae6aafe-92bf-4622-813d-74172b8f7f38,134549787,5565001605237052466
+411115b1-8549-51c9-db76-094ec521ec28,213909211,14499195848544383381
+f47daf3c-c00c-0645-8b1f-ccbad000bd9f,592677907,16091476414414520871
+2109347c-fd1a-8776-fde4-c3d4635abd83,4021131619,17407078898236079689
+b42ebb6a-64d6-32ad-f770-866f3a9f939f,1603995144,15423436636822649030
+e92f1a61-871f-667e-2b7d-ff4bef51842d,4229185193,466277553972128111
+5b46df39-18d5-2178-be55-9677e083b9b5,53312301,12829668409182118434
+dcc06f64-52ee-a36d-99fe-b33c16584363,227135737,2588061767013885514
+ccd740a8-878e-972f-3991-0e6ac7c0038c,1866505686,18400313709819652586
+26d1fe55-3176-e785-20c6-db95cac03a99,3209198162,9460116434787067202
+79d8e07f-8a7f-7112-0547-9606f06efd74,3971195898,8775191086378596280
+cea64158-495c-8b16-914a-7d1e2c636f60,961312992,11536072962514621717
+0b5848a6-c645-c4ac-6d34-070fdd456c0d,1053458165,15596884204573399035
+b34f0313-9430-7115-f12b-c73a07f29392,2741328755,6745552555367978227
+796a4698-7efd-bdac-5474-603936ad867a,3481584039,17506443858123408871
+9539739e-a98a-991d-3677-a1fe0a3c5d3d,2459387915,8998077305419451739
+18c32958-ded4-7421-64fa-0e4cff6d76aa,72267714,10799185174996153484
+9c9fda8c-72c7-335d-4fad-e50f409314cc,3417600202,14788214521937006394
+204895ec-6564-e0b2-ef89-2658e01b0644,3070358268,3081922109739665258
+f8ffd7c1-3f57-63d8-7c53-bf9e4e85b950,2462903784,5329695255902099672
+7107cb81-3111-265f-300d-ae3edab9dee7,2252960946,11273836257346649561
+db1bdaf1-8bb7-359a-5cde-45744dc700af,3662152414,11919478002709168276
+80bb0ace-0a8c-8478-c6d6-fe4f05952845,257490795,5349137846916108443
+0ce7af4d-aa82-2c7b-0457-79bde715428c,1800764348,6683430561505563630
+28946b5f-d911-6283-2451-1abad64bcc0e,2530717578,1328236367008229028
+d20b9b33-01e2-9041-8e74-b69bf9b12d79,237003244,17140635815892614528
+ce770771-2c8d-0e84-fe0d-7e26d4033370,1665354841,9474620861409183312
+8f1e1132-c3c1-56bb-fc3c-26d2d177fade,4240372267,6604678731553216252
+0feee348-f8d5-73f1-6a96-30eaeacbd4ed,2007886268,238691747425316307
+20476aa2-521f-22ec-e670-5ad8c05c3693,4280140456,1944274463925686713
+f41cc4b9-c800-4adc-d304-f02e6708da70,2717857159,1484345625139975467
+e7231b4a-71cf-984b-280b-5d5534f723d1,599040158,3371357110044994736
+9fe2068e-8374-1a24-c496-414e3de7ffd9,2311284516,8488297100417797915
+97e6d66f-06be-010e-9d15-75c7f6d64a16,1076534079,5358032347180438960
+2064838c-22de-dcea-e1f4-936b821e65b9,996703172,7422774536432353614
+a47eba57-9cbe-960c-cfac-040f05cc2bb9,1977721633,7139519592023863405
+995b4281-151e-ac48-90c3-56a020251d71,3850765538,13684453155826497097
+35f7a869-7bf9-20c2-4358-db3af5098bf8,2361373439,13114089275233945952
+0b4256fd-a9f6-4abc-bef4-41903561f4f7,4187942869,1458371031108928369
+61707b3e-2dda-bf31-613e-c066cbb65b9c,429954232,9266205250631730981
+9e25ce74-54cc-42ce-2a32-90e8e778ee41,774375391,4449230217062620760
+e33f328c-418d-0050-0b6c-2b1038a0456d,1420519332,3116226642197858655
+a42453af-e818-efd7-01a8-e44d6234d535,2930233068,1285003640135816662
+7d529890-382c-5dcc-3297-8944e9276e21,2468177346,17739631899288860999
+f923195c-1806-8037-1163-224cbda4fc33,1144856294,15183225519781276303
+a31a0ecf-b015-3ad8-476a-8d265693b188,3053438025,16317665433184754784
+0eb7a1f2-b101-2a10-fbcd-b863ce3ad711,1730380159,13385962832247105916
+58914d71-f543-7aa1-6e30-b22e6f9e620a,3463183807,11310301597471108398
+fe093048-e391-43ab-064c-1a52ac5189fb,3136441113,18377056392843475621
+6440755a-bacf-79e2-aafb-65c60ee8e87d,321745456,1430027013581979516
+86ddbecc-b76f-4f25-96d6-322541542d22,1969983361,6833094883699069392
+61b6348a-5ebf-e694-609a-03727092dfb9,1419784019,16613634252622909912
+52e37e2d-0803-e605-6b36-87393007be6c,500487784,8062912716166669694
+aa00fa04-c184-131c-dc40-a0f29cbf6a6b,2411564245,1560131864117344150
+58a27ca0-3f69-8cad-d54e-792e477fe757,3304346484,8467965283820589565
+6c61abd6-9262-86e2-0e20-f3c99022ea58,2612038987,538907298713630635
+9da67fba-29a6-631d-87c4-b0d3e2834cc1,1692104477,12057691448495199612
+4e57d2c3-f3ea-0b7d-6e6b-070ac50c43a8,384151052,11527560658320059733
+39bd414c-6969-2cfa-9406-a3d377824456,3482818959,16452296157594250608
+24b35b4d-90c1-d58d-d225-916d19d501ea,3377846521,4023246150085249166
+10754df8-4a19-b526-03ea-2d69242a3081,760963341,16887485158800445491
+b4642db8-b150-96bc-1526-f9c22b3b684e,3826202209,3916721516670643169
+a65ad802-4e11-daec-6508-0e1dee764fc7,1953105969,6700793776367344397
+f4459e44-3429-fa89-38e9-980d7bdda52a,949632229,9027118450048958318
+0776cc0e-ed18-283e-80e2-d6324fb2772a,47589829,8673052442752922775
+e6ec3d18-6651-dffe-9c9f-86613a3dd250,2764709261,12197860407238593705
+fcea606b-5e60-4da0-17e0-1c3d2d7c21c2,2701614664,3029924636612949094
+4de65f91-20d2-37fb-8e4e-9526eb0115a3,460261791,7559713415638951233
+f798a462-e3b8-3f98-0567-f8710efb4cc0,3013530262,694522122577737136
+14fbed00-13f4-4dcc-e9f8-39f82780ce1a,3749893456,14384638059023170447
+ea31f996-3962-d1e0-4e3a-deb841a09eb8,1451592861,14767303808546887051
+534a9cdb-f6ba-6796-02e3-3163a2b98bad,1135772304,18019731239527271659
+7f06531f-3201-8bec-aa77-48cd96f42194,3992621940,14825177916062916830
+2b123248-b72c-1911-b7e2-288f9d710206,3957394478,1178859481485404764
+29e4dc58-9952-b3e4-fdc3-e27c857b6b25,1352052232,10925308673162684567
+3e4dc3b1-912e-a93d-cc97-716c7dee6f9f,2516786602,4887199071825935369
+8e0d7598-ecb2-feae-7d67-1b8f491875b5,2597950989,2834296286198184187
+a9d02b73-1f1c-a8f6-bc06-7d33cdcde1c3,846631869,3181898984496444020
+179d8ca0-b97e-e687-4b9d-218e18210818,500901833,322697218604144997
+5d682f0f-ba3e-1c5d-a2b2-544e6fdfd441,1526040444,622579260968340731
+2bb33570-3066-fec9-9cda-32ba3bda2230,929585726,1862485119353029899
+9e412d85-2b88-07aa-b911-b520229d4ec5,3556275529,12840797172268239329
+9ddeea66-c6cd-7dfa-9da2-4a4dacfb07b3,3121222724,11845154836505982623
+18d72c40-e9fe-9be9-3afe-78c60341c4e4,3354784415,717049551247090185
+1530a186-3122-91b7-c7ef-a3921677ce60,2961297456,7590660532607867880
+5573f8ce-9ec4-b6e2-0b34-cfc3a2fd18ae,1318513356,5384906584953018789
+205fc9ba-bc19-1ade-3a33-b885117b1637,1583863423,10287518483526258263
+8440387e-fb04-4051-e895-89853d39c933,2452535434,866216442474516523
+87c87484-8ace-a323-765d-80624419e460,531606115,12120886352854441148
+502a2da9-1d36-8ff0-34fc-f474d904fbc0,473659340,3674713271128765934
+1e667258-a971-6109-469b-c3521197e1b8,2109068947,13032482509233567127
+6b8bb7af-4619-0eec-eedf-9deab6412ce9,3926156292,16128880349049613771
+d9d7e6e8-eb3f-aeac-a1aa-d15fb4604ccf,3497913536,4791599910494866535
+bc5dac92-b719-67fe-a6eb-aa89136c7324,4164867283,458217671725670576
+82af46c9-6bb4-182f-9e64-d958dadf3166,1653162121,10757089565506457504
+a3bbf440-7f0a-6b03-53f4-01881cad8e23,3544918547,17291545083131304536
+2bfc13f4-ef99-2b2a-dc47-c0270a9ba4ef,1232499767,8797964025490442015
+3ed8196f-e271-438e-00c3-bd2d0b4f0b4c,2558646317,17955130699299135321
+59092303-c38b-3f1d-c5bb-d95f4db76030,1785965180,5382133165909750873
+c765357c-7dfa-5eca-167f-f06e96455ff9,3204840010,7756286280019980923
+ca88736e-86c8-33ba-320d-a3ca8e4b6d2f,833148326,5884768855476453794
+b62664ea-ecaa-4cda-5ca2-4c8a99a359bd,474530015,12169716495542889062
+5fac07d6-1af4-17c5-67d8-6d0d4296e816,3908635700,11218295045023848940
+cc3bdeae-0973-66bc-2960-1d17b5edc423,3653587966,12588538145147101361
+6cfdb21a-e385-8e34-fd4e-8a7b70ac327c,2410885249,7479580152847247469
+073a8ca4-a4a1-03fa-5e59-6ae6c7b03021,1879634302,4113682751318502665
+4ebfb799-ec82-3597-8207-2775aa6b3963,803169212,11000642648874061270
+3129cdd9-c9c1-607c-a2e5-1647101c369a,2584439871,4262044708829147350
+634fc805-fcd8-7f1e-7867-2a70f8b2ffaf,3751958768,16866144536556651890
+9d60923f-60ef-f35f-1496-9aa38602cd11,4075022707,4080839199074234097
+e7f7f910-9ad1-65ed-8a29-2cd587d6ef18,1224750465,5435842783860057463
+0b9597ab-ce9e-806f-4c2c-2b8b707b65c2,3005393101,8256633514727634429
+14bcb43e-8537-8416-65aa-240310cc4acc,1492304157,9198676984095942617
+763928e1-2ace-8794-5774-c10951a7a957,2358540835,16590817347930831211
+b8e87038-e8c5-4863-9abd-80e58a9cef56,2920562897,12043568209999021259
+04d913cf-b65f-406e-b7a2-ceff51c23f2f,2889127414,14021866824684435493
+115b152e-7d41-15aa-d9d8-8b3a6747fee6,3818929484,11380951032882832870
+32d0cfdd-7d6c-fc41-1838-cd599488ba1e,4076457177,3904695199573923953
+1f18c8f8-303e-2e37-503d-cb93ea2fcb12,3998545946,5471927744336402061
+dab95c1c-f6fb-8873-5b5b-3f3314a5cb83,973613556,4878415568486020420
+584848ee-5f1c-3550-02b0-414b8e294233,683437567,1395480987285853367
+03b908e7-8597-d443-b929-1ea185db7a1b,829345451,17753595749499166628
+4ae0f13a-1bcc-91d1-70e8-276e5fe09b0b,1433301524,8573927289730861508
+3229f6bf-1895-67fd-1593-a8cbb3e04d6f,1264577288,1348218169508023903
+66550cdc-5211-842a-c07d-a35d5f4e7b2e,2969166004,13819495652354682934
+2fa48417-c9be-be7e-ce35-354236d5a9da,1832054254,5126322564171631307
+b7c7cb99-fbeb-de3e-92ac-cf2e3e9aa3ee,3859583188,2553894796366071736
+55da3da3-91ed-4b39-018b-d103fc4bced6,4253067488,17858300634822748384
+9ff89dd5-dd85-70dd-6457-fbc9255b8e49,4074701377,15727641735996106774
+14f29077-0702-d14d-becd-7ab3c10bea11,623164,16924015048901132126
+f12428be-9ccc-7050-6706-5b2f3889eb00,2369307164,4875707734070683071
+29bb70e6-e280-3592-596a-9450aedb0f53,3294802818,7039552457573785965
+ac4e80a0-f587-c8ea-6cb7-126d2bd077ec,3906424820,16875002099253245263
+17c29794-4317-5c57-c3fd-b72300147fc4,973422115,1778076357580093212
+b587ba0e-0b24-3b6e-8f66-328a1bfc47b7,590268355,13798582260728501206
+6548af67-a148-6f8a-11c8-7416bdf17d84,4000738677,12619070476246132536
+416e4fbb-451d-cc9f-151f-f4664490abbc,1504765661,2066828399077884194
+1ae33598-3e07-a824-4cfa-3db924629d4a,1158439691,1440673278363064285
+61796a8a-349a-748e-0b5a-324de8d5bcdb,1086811276,4361988699411270010
+a2f97682-d85e-8f3e-dd13-f773b180e1ef,1856816463,10351631522699052233
+75ed6c73-c5f2-92c4-f865-6b7bd96d55a3,4102064737,5562634916989026037
+16f7dffc-0c25-8002-3a36-c2157aa4b0f0,2396613240,14187442403404326349
+af021bed-3ff6-a8c2-1b99-56ca02626b1f,479351470,14170976716402916947
+a93a67d3-b763-57ba-5386-b9e1ad86beea,3156805262,6957884183758174695
+d6697405-2cb8-d9dd-2405-927a84422013,3515017503,10084520879116869006
+0960272f-3f9f-a004-2aac-f653c89a9139,1044712613,1635779316312947987
+529cddf7-25aa-5d8b-c4a4-d513118a53d3,3352430967,216120501765105198
+f9160571-9c3a-ed2a-58a1-6e5883be22cf,3337226322,9969048197636488026
+346cadf1-cffc-b407-1bbf-07a00b32f3bb,58416213,17990825726099483329
+7d6d3d25-3514-7f56-90cc-c3a84f8efeae,2731062665,7956519406028549686
+0cc7d5d0-9e90-4e93-649f-22ca25fc8b9c,3836568329,14113852668343271028
+4a26243e-c822-ca12-27ce-dda6bb305d83,3746478167,13551854361699690208
+4eb98bb7-1be3-d3f0-5811-077ff11d6903,1229400502,800194232478267978
+8eaae03c-f17d-b8bd-bd1e-3f3380ab4cfc,1459708948,3843845845572307184
+5a43a366-6d3b-de09-0fdf-0953379b0ba4,187154215,3058761617440156091
+ab2b3049-168b-7d9a-db82-5a244226eab9,782174272,15041420481398183093
+c0497ccd-5f65-5b7f-e9e3-6c2c4ae4a605,1833241707,7184709229539899789
+05037f60-42fe-bc14-610e-aa567d3c2417,2039354562,13497028090977492138
+9759c762-1dd3-1858-7bfa-fb4dcb152d31,78743111,10620375027230458157
+27ccceb1-6afa-a5ce-7a6d-21007c21638a,2100887968,13876189454014351503
+f6ae10f0-0b5e-0a7c-6ed9-f254beb0ed6e,4289111855,17250132942208068675
+69d316dc-a370-efff-a1cb-54a2b2446bb3,2049816994,8314496940498007088
+01c666b0-3969-c14a-4875-331c48319383,3745098963,11928002841231486000
+701d1b3a-baa6-43c4-210e-ad8b8d67f76f,1674738168,16091814056216076506
+19f5526c-8018-9aeb-ccc2-8ee07437f7d5,314246157,231320914857017250
+f6a8c432-1c86-e053-2fce-0a59e055634d,508266067,13649986774878764743
+766b8603-b6fb-decd-5d68-6d3786589c4a,4126311725,17263367965482181839
+5487349f-b3f9-9ac2-5b7a-8db923e6b3e9,581523183,2403971498286843119
+d7c025f1-e8ad-cd39-8ed7-7798b67b76fc,2689020676,236757990807154151
+e50f88f8-8388-60b4-4b58-2a0e9659dcf4,734401292,962454157489245785
+f6532b8e-441c-758d-d63c-f3e3ee2e962b,367561372,11364069994916051273
+b6c936e3-cad3-61d6-2003-c773a55ac032,2638177061,13016438854454453486
+fb6b904a-1b3e-b5bf-af95-bf3b0de2c90f,260577785,18067830494097764061
+40042bb4-15e6-dca2-7aba-f2ed83a38758,46548784,4304682229270504843
+85a3fcd3-0ed5-3e37-4a4c-db183e427a22,545918964,14971340975259772312
+f4bc53ce-5363-e398-078e-f6dfd08fc843,3581260016,9839700292992558143
+d9fcf80e-d525-5124-15fa-13f51c0cb708,1664758617,15482301226590092679
+34d7104e-f115-d710-4748-cb3d118bdef6,1006621396,377447245989159500
+6f9432b1-0785-dd56-accf-52bf3003bd70,178136964,8583282780292862241
+9a4d694f-e0b7-994e-4e80-ccf2631a8c77,3243418117,107168329379356984
+12623804-5678-3299-6666-ad7bb5443ee0,2667001390,16887185958602972528
+79418114-502a-ec8d-1ec7-73e57b262303,3996045118,14971596355636441626
+eb78843f-f09f-84bf-8d7c-aac357606dff,2689860954,1947433179307819088
+cbf80c54-162a-1237-7bce-f81b58bc74c5,4056311885,4850083829716463332
+97ae6d9a-29dc-7b86-d006-6bf8a14a3b56,3694758059,12782385067597664031
+974103ee-de98-6fad-8901-8de3c9d31d7e,98967538,14600006652649789785
+4e54c9f5-a06a-d2e5-315f-aaa810652268,1138869039,13370911739624311799
+6c2ecbb5-a4ef-0b05-3dcc-bed87fc95cb4,1299143326,11072666868348153709
+bc1912ba-2f4e-1843-035e-5f97c1003fe4,3334829586,12281317462363805952
+7adf822f-8739-24f5-b2c2-2e806e67ccc2,3005658194,9524162264715164016
+6e9b5a40-f369-f920-8233-cabe2849b36d,4002742204,16872949143655597919
+197008ee-8e94-162a-d23e-601c517d0534,3479740389,4114881222859295034
+195621aa-8964-0fcb-cbff-50769a7880e7,2438322713,4137277900318137731
+f63c1f0f-7d29-d454-e7db-88e80a314729,1733033517,3615892076236815453
+0dbd9d0c-eb54-16da-8eda-0ff77db58a6a,335105531,13875731529247471484
+b0cbecd1-61ef-473e-d655-b7078765b6d1,1913884125,2681975650422350667
+4422eeef-103c-01ea-3072-f7ca9713c4f0,1793800847,17080815325333265760
+e9fd4cf7-b3df-22da-ad75-85555ac06964,1711831262,5343267300980029471
+73c8e7ff-f9d2-1797-9a2a-d3799515a431,1137089321,4121849664295511513
+d08ae858-f5a0-49f9-cf56-5d7f83b19b17,751390089,10774911864911013304
+a9d60266-85df-e7b6-964d-d43d863756f1,231448036,11267198357911029956
+aa7c0223-fb95-660a-d50f-b19b999ec290,3138280741,9157659033239195945
+389858bb-edf4-bf12-59d8-570620e52be0,346202186,15455593259016875461
+45e98ae0-ceb8-d00c-53cc-e0d0dcae6fd0,667957307,18318793007388702741
+8805c831-dd18-1da5-e7ab-829662e0fb50,3368342553,9393873671183972137
+957c495b-7a34-0629-3432-80274395599c,3169290103,4637633505391702386
+94772900-08ee-98a8-87ff-3ab3af87a48c,4125659092,10428755098362487306
+6dc1f442-78b7-ca82-1888-33c50380f3fb,2648506144,2334658329253329773
+2c1f81c4-3d83-93f9-a3f6-004412d21a71,531475976,14005535492897251566
+b8ea1958-38a1-080b-19b6-3fabfed31791,2783732508,2861811652312466807
+500109a2-9a31-4328-128b-0204e2d4a879,2518175136,13469405929090899530
+f28845c1-ff59-6b42-f243-370dfa23b860,673407374,15704595306656976163
+e5706f26-83e6-09a9-749f-ebc9681da6d2,2428282528,2004140013112630636
+8cf787a3-d38b-caaa-09fd-cc3133367e0d,3686277398,14596408419583130019
+af8ef864-317d-1161-7b43-1d5dc46add44,4073980786,6021838685188623852
+d5e4afc5-0f9d-b341-4fcb-84a2b87ba9d5,3924584050,761510573021439445
+b17e2d8b-04b1-ccd5-6efb-d69d21aa4da3,2616551787,539954544668420152
+d6f2bbc9-6ded-623e-7d59-3ec26953f92e,3881603868,11448578634531065669
+c2608281-037f-5a1f-23fa-1d7d57d6b2f5,2155095871,12965249137343832399
+71abbec1-515c-af2d-9ced-da05c3f6beda,1341893986,16738712644854228613
+081076b8-b6ce-158a-d75a-3ab7921a0bab,2685130368,17375489366320091545
+0c6cbf05-d90b-f3c4-2338-96b2c2cfd706,220336317,11898026091098186521
+13b5728e-779e-c185-1458-931a977f9a56,2227282746,11678712685224644244
+7070fc0a-84f8-aaf8-2555-5c40a88b5e54,1149811203,15454155768357363059
+d3442405-c26a-e3ce-ea8b-e046c1f6d16c,1959687033,13256786557151926793
+e8888da4-5579-9a3a-0de1-ea4510d91d23,1656632250,14705518178336242710
+e19dd46d-6577-7de0-25c1-69df0e08783a,2933190525,543932989188200440
+0b701ca5-47c4-f937-8e70-045348d98341,3565121532,10307849522613863456
+94b310d1-3482-e4b9-2d27-72b73a2afeca,1491580319,9493105032472700727
+8469c481-7d47-d2f4-ce75-f19ab5762409,3183162787,17792923626169175201
+67a9325c-9cf3-c6b8-86ac-cfc58b2fc087,1744164873,2979151980308856550
+454a1c21-88cb-6001-538d-7ef8db3297fb,3167389747,12877647587278010932
+76b861ca-b961-1653-3bf9-5bd207aa2eef,4031401751,17467922277988009089
+ea636d11-57e2-3406-0511-be2a6303e77a,529733056,9895498948190867109
+73fed7c9-cfcf-9d51-3236-d66482e0bfb9,110961102,9991667622655039201
+66e2ef11-1404-5ee9-9949-c0f1ddfdd40e,156008557,6725254210283562024
+e81dea8d-fc15-c40a-fb09-7b2bd747d013,1305815735,17067811224249353273
+d6c5e9cd-caf1-56cf-104c-ebe30567a289,4141408068,10868169871841448626
+9ea0ddda-0948-2571-aba0-b3dc2bf79454,2696698986,16287246763490962958
+d461e783-745a-dfc1-458e-b448e9215bc1,712714617,10461959740777220378
+01c01bb1-6ebb-1f0f-5863-f16a75865dd7,1556715376,18197059161910265889
+6de11a94-aaf4-eb19-457c-cd98f4297bd7,1206385942,18163775309127324478
+ea758934-9f35-2880-8a61-6a4995de28c1,2887275291,2679049054870645018
+3f65e898-4ab7-9b1a-5d91-a7f57d67d8d9,1356989481,9260591248968189640
+cc19f544-8f92-ea64-99a0-989ab0d5ea14,2630699662,17455873370252212331
+b73e7092-fe8c-c143-d958-4beb58054ee4,3942104156,1121415711062484287
+af2785e6-a690-93ff-45de-91b726159f76,2610730966,13681747623566210492
+9928ac8c-4adb-05b4-1e68-4f55ac4d9f85,1700848764,14864393321514498270
+ee2c9269-5f34-d1dd-9ca9-014d7f701ad3,3920611049,7755836080735636574
+c2a9e07f-cf13-7435-b68c-f77ba551c674,260602821,8433511009774090051
+f05c5b3d-0e49-607e-e8d4-644e97fec262,3647088853,9869981620387983062
+a4b37a08-d49f-37b7-8037-9bf2fd0458eb,924302730,9854530347542161362
+0888241f-359b-f522-618d-ae7dbfd7e378,278919086,18032703596995160970
+60dd746e-92bb-0170-7018-227e4950b3dc,914374495,16947908332645553334
+417a1a64-8b5f-91f8-7d4d-caaa3e22d0a9,3790048196,10622325673892326140
+f81c64a3-d78a-313f-e544-ccd5bd880378,1476252032,11979159134600029134
+ee149a94-542d-8721-659f-601939e76465,1044130709,5060173415088275040
+03f2e406-9082-ec25-4d47-e622c254ea0a,4167775990,15209881639663218390
+0ca5678f-3f34-d07c-ff6a-84b43fa92708,2162064827,9208310417686492604
+ea9c6e8d-db80-56bb-41ca-b67a37eb0e25,1603373709,7359054890396975144
+1eb6ff43-16f7-28b4-cbba-04582b082ccc,2609454655,3644908239487035974
+75ad9fd3-cd5b-b150-0c58-547ba960829e,1073958918,6627367134293641111
+c9dece08-90b4-ef44-64d7-1b7443291274,3285343626,9480456009104381456
+d2fcd6cf-84b6-cc81-6fb7-b66d2c81f184,1715783801,5995530851338217042
+ce295c1f-33dc-df0f-5e9f-739c07996d55,1821040337,9078937106335888702
+679adb31-ce13-afc2-6953-be2073b7396f,1735118488,15707031274836625291
+6976ae44-cfbe-d64e-abf1-d5c8d11ede88,268879579,9466674431219044934
+8c89cbac-71c5-35b1-3bdb-3656abdcb8e7,4116796378,8382272143102085359
+ff3135c5-786f-fa5f-8a45-8de9ea7640f8,2354464499,10629074697707295661
+d809b3e9-1207-7b26-e406-ced443a98c4b,3958947307,9774228979460947241
+398d0081-7112-72df-f40b-98ce828bc665,2010968918,13141325487230187227
+b276deb9-1357-512b-ffb0-a6af21290ccf,2182037754,15423199824865739727
+e977d6e4-cfeb-cf12-cbd0-96f92c50cc60,3853677691,9007579296438926026
+a7173716-49fd-8bd9-782a-6a17410542ec,670396529,5908439324199987133
+50ff440d-fa08-f28d-3f18-08b456851988,2073799680,6094775257361385982
+151f231d-d95f-eeff-2d28-2efae38da4c5,2726253300,1316505340462200179
+851205e1-5750-232d-7d86-752b39ee0f5e,856615410,18057550687231381004
+1ed51881-8cf4-07eb-734d-667dcb82d4a8,3200585287,13158821803980011898
+3ad89397-1792-000b-0e54-489d69612ffe,771166192,7685807940063576114
+ec04652a-02ce-a18a-fab0-ce62ddfa3da3,625776195,15834096502196678167
+74277fb8-f1bb-a597-e82c-9cd8393d6b01,2150407671,9775583203500816670
+7237a96a-2c9c-f133-feae-887f21612ad2,3095292885,6405238071268657469
+81bc1b36-da6f-44a4-25ce-be029aeea07f,611687114,6856923732614685155
+6c0cd809-db82-80a6-b9e8-cb442760f831,2221416363,9788237616412728873
+b4acc3ed-0884-bf5c-3f49-e868bad396d3,1331118343,15764432605063143323
+35b0eca1-12f6-8bb2-84ae-45c811a8269d,212777247,12592382666744232186
+aa7019e2-40b5-2d61-cfc6-e8e41591a301,3131089100,13628377224669709909
+39a9af22-4bb7-731e-95e6-6cb632bd49e3,3165873989,6776287143492337899
+0ea93a69-962f-edd9-3797-f090ff2bd24f,3328186710,7626829968445586040
+b6a6eb00-1a3e-92e8-0849-0ff5cf31724f,1838421201,5621360807029691365
+2f7fd85b-1ca6-ac40-cde8-72f9298fb1f6,1234965726,3717287764834859775
+6d0b43b2-4f20-4757-6842-19dd6ac3b136,2626424906,5403544176317185397
+46d4a634-5a6f-5340-9a0d-9c9c47913e9d,333011156,16074185109880963953
+d15a2a52-2b22-df9d-9b3c-deb370fc6a64,1495337404,17835781663857583425
+671bb278-9d27-1edb-67d3-5c49defa18b4,3798602675,8413554383955846591
+21c547d4-850d-1228-1c9b-8299968f8288,1635347162,13342518005164210126
+bee55824-6b56-68bb-4a27-9f255688faa0,4141013834,14029220820573735363
+ee7fb327-793a-71bb-8848-70bd83450ceb,1127909736,1637134164715793224
+5ce845f3-027b-63dd-60c9-7a78593e2e30,2147402056,10633716245038845988
+4eac8ec7-595b-ea79-51c8-abb7ada4ad20,4006143013,9106386661408216973
+e474471b-b72b-36ba-132b-675668fac261,326208775,15954078566457729646
+a4c647aa-44fe-c5ad-7f28-5f9abf1e9198,556612378,16962734114882228727
+13934a35-4969-a651-75b7-4d8bff11696b,1329315044,12653938510724976184
+7f1b00f1-3b62-d001-bbda-0841a5a72a4f,1924270413,5453094609984087604
+29a9cc8c-0449-5a32-a311-18b9172c22e2,345749965,11937706051568035406
+ff071ef1-c4e5-e1da-d2ae-aae7c47a8d2d,3532004208,13650815325376278371
+0dfa51df-cf27-095c-47eb-d2cfaf2074d6,331732030,1416857847702168197
+38f05ee9-0dfa-d1ee-33c4-1389c272e8b0,2964287630,10385281628648723727
+f663c2c8-14f0-efc9-8518-4b5e2c71f56d,3797761870,10221486935649629854
+fe86ca24-cefc-5215-484f-7f3f3e8a2bd8,2717357224,12403616614230589872
+90838f06-ba1e-608b-2539-7abf097428f5,2643151386,4111240521208998303
+4eecbd15-95fa-165d-2345-dd85ea0b1de4,3488040706,10431128742719303959
+ced38c97-1d87-0f2b-1b68-952e460a144c,190149343,2513652101619191996
+a4b9013c-cc43-049f-42dc-ba8beed0dd56,3156575138,951775935707221335
+49c4010b-942c-dc88-a4a4-b14f11ea92a3,2554846969,10736506306777254833
+5c4a607f-bb6a-4219-518d-1c76e15c8118,2930584340,9532701282784398735
+a6e6dc7e-472c-947c-3579-71a89b75a230,1224259495,14818632420994016218
+ef9e8ccf-a7d8-1147-cc03-ab327ad6b59c,1666463240,11016691063508388307
+8a448fd7-47f0-3774-ba0e-a8d73bc4524d,691443806,16235441993462346210
+d9db6e8f-a92a-28e4-b05a-cd3c8f42f1e6,380307840,14231247499398855235
+9cd2c2c9-1703-2453-9910-657874e34d82,474504306,12418148754098981136
+aced6ebd-fc3e-c2da-3fed-99321d99d070,2196513466,10824280517053930511
+128d6982-2727-d187-f667-dc950eac8fb2,1748484354,11124105289952516698
+151c74c8-9656-69e7-ea06-996800a2fa55,3089765724,11268683977654400336
+b500457b-2944-7b3c-0547-346c9e185dc9,605802153,10003192956141825346
+e3a07b87-29d7-12d3-ec9a-70bd842cbb25,3811708028,502079208659047700
+5fa5fd9c-e6a9-84a4-6eae-b56833a67058,2091882228,3738358406735708676
+f9feab8e-f42a-d423-a53d-a3a378ec0811,307282593,1260010120940014862
+6e912ea1-ea5a-698e-01fb-da9d9120fb35,706987855,16456714857442762989
+a00fb19b-bce9-7a5c-f30f-f26de5776d20,1971045425,9504870354230645697
+02221203-9b4d-2113-80ad-fe66ac92cb60,2619664348,4239086068792227228
+dbc9b8a8-edc5-8dfe-875b-7e0bd023cfa4,3437266353,15310527060294265763
+d57bf28d-55ea-2034-688b-104eafa63015,3196953509,6656735863741999579
+3126b807-2852-3b53-b3e9-21c3537d67c4,3467401367,3621149521986540037
+5794bf71-6cff-01ed-2e62-2775a5ba0dc7,4227811714,14818125571906825061
+be173dfa-61d9-de1a-774c-7eb6ed473e5a,3299413141,9410812664214367229
+ab81057f-5d09-fda6-0519-73737d94cd0d,334441019,18074030757690784807
+b936103a-0cdf-1408-1d22-4bd5b4612db6,3060463479,4641458400136684770
+0abfd301-3cc0-5d74-a9f6-3d86f554ffe6,4261666443,7701847197850979913
+85cf4574-035e-cc70-09b9-013197dc8f7d,1717875016,10364558405598772905
+e1a3ba30-23ab-9e75-5c52-feb735c8ea5a,1236518570,15228614007910316494
+2b4c5c18-a93e-6afc-a421-e2cbca0dbe56,105319709,17565421974071201830
+22f2183e-4c4a-0322-efe5-b34e26266a3d,1897176925,11502137481698339153
+63ab680a-88b1-8bd0-5a2d-b0bc126e915b,858138979,10807436963900196971
+3f2c9e59-b1d8-cb6d-24cc-daeb2e96a0a2,469265692,14728722972892989231
+2b369c50-1d46-3219-8d2a-b9263146e5ed,1576089854,6827858585487762744
+83cb6474-25af-49c1-34c6-0038ebbb1b92,100003490,12330021365828747920
+46a33a78-6159-6338-7a2e-32e5337f568c,498939767,3861648350261896455
+af415a4f-b504-0957-7497-f5b1b8011ca9,1215051963,9698063136218295877
+a229d557-201d-1894-4523-af248ea866ee,394989281,4072877043151382738
+a46bfaa5-4a3f-c44b-7511-5d385e285e4a,1108959093,8225309969230812041
+b1e8572b-9a12-a113-56d7-cf7c13608d60,1992178735,12153410731480728725
+abec54dc-34dc-3a4a-9f24-3ac99acae2f4,3703958849,7288550781627945090
+d1334fc6-5b7f-e435-6298-c621f9532e90,1596317364,18258737475527207681
+841d8878-548b-7f6a-ee3a-2233eefcab00,1602947977,8530007428341776687
+f26f161e-161a-a375-55e8-c84a98176828,1231028516,6852932053802189647
+28c04173-55af-6b27-d60e-e4b38a31ca37,2703208653,2845812263421350502
+5ebd48a2-bf1a-abac-11db-f7b877736eb6,1737877611,380584483289940527
+fc85b57f-af94-4698-48f1-b617590da043,1549219224,3293684709267149840
+a663e49c-db55-077e-997f-9aabe0ee8740,550995309,13326411412348372783
+5233f5de-a846-f19f-3098-51e8ec63af05,3346554856,1515355998526799623
+470559b5-7adb-8fc9-4a49-cd4c6791e9dc,3441261563,11419492934237081428
+41264f52-96a6-162e-dbca-c043bcb07ea7,2450231933,7323284335879099453
+45642bcf-c6db-165a-3f46-df4cad0d7e93,751626900,8353613361424863279
+a241d449-3bfd-dc9c-11f4-ada0138463e6,2496147431,4973426470400450421
+26b27443-d2e4-2bff-5946-d765af5eef83,2024779538,13418579147205226175
+578dc5a5-4894-b0b0-0de0-5db061cd786d,881595356,15503335503888870625
+d89cfbe5-f1d1-820d-50c7-3c5992ba51fb,2839400357,13661563380155259066
+7b60645a-ae3d-88cc-a436-0528a49fdc7a,2340967933,4768235881191679605
+812cd416-4dcc-4bb7-0e68-b5e5df8a66dd,381925471,8507872337538654708
+9772f09d-dfcd-d638-3d45-8a90fbfe3f70,4034391902,15491034268549945001
+c2788776-691a-af86-90a8-aed2a5fda189,3625702382,1480826712572373819
+e00293d2-e60a-069a-492d-e9b3b0501e30,1303018056,7875822860484262452
+24209c63-95bb-53fe-3253-70ea0518e8bb,2444248073,190259512828686388
+8dd5523d-4209-1b41-d8da-2a8c4163a860,1415785571,583533380858455912
+44589618-179d-28af-3a81-5cbd2c18fb47,4233391972,5699068547645776815
+80fb7008-a1eb-d94c-322f-6eefe15361e9,744546436,13286379466701423760
+3bea8f63-e6c1-e9e0-8df2-a8b309de4c9d,3430217505,16474246121022790929
+0015f8ba-4e25-9be6-83bb-784fd9ce3c41,4214036011,14126893269543262731
+9ace7584-2556-1e98-c7d0-1604924b9fc7,1933466119,2146742038641888860
+62c788dc-93f2-9b71-ae8b-78a9f9d4f8af,1730784497,9166085247763925171
+7b277ba0-6404-e90f-1601-14c5d186c333,3244174720,17598846922445371760
+40cc20b4-3869-1595-de98-3ede7f5d6e27,2203343070,4735222981466986237
+72b23e8c-a02f-afb5-a93b-499f9405edf3,1527610835,1110810994459155850
+e5fa7eb7-8f64-c9a6-62fe-5f57d83f94ff,1805609969,13864471251926492325
+1e8ddffa-9277-25c4-c02f-4d3694c4240f,25810694,17351030986990790079
+e67016bf-9c0f-a6ab-f33f-f072f6ba98db,2808982189,1120823116023696358
+1134daee-a5e9-d371-b2af-51f9e75601fb,1726403606,8906648240021342334
+27d12984-71c7-f4fa-906b-aa5c55f1d20d,3673361131,14774330728817656639
+9a49dc4e-e46b-0839-b310-447d300697f9,1338071817,3803029209334551786
+9b913194-4dd8-b1d6-14a3-a64f1591a4ed,2328829957,2396488555828415256
+328605b7-15f3-5892-cc71-b7caf26ad3f5,3127175043,11284065299074710524
+24cb7d12-318d-cb55-6ff1-82d816d5c972,3313280027,17206717807551114001
+dd59ed86-6058-27ca-44b8-76ef9c7a5345,1744253393,16525982324218879715
+ffc1e0d9-6621-c1ca-6dd4-f79ecbdf737e,1931797325,6480312940267900561
+2b65c02f-db83-9ef3-a3e6-b5a8e4ba6827,3410160888,1752101300612577720
+7567a4e8-812a-a72b-c38a-4963734da33a,668648718,15854429998059278255
+bc346a8a-9a1c-ceef-4336-9c5a9759cc41,3298502966,12391089712059784703
+9b3593fc-09dc-718a-3575-c809a00444f4,2425328165,11743734497875986262
+e2881066-17f0-c41b-1190-d038868e09d1,458710251,5270575670179410273
+7a50ccd7-2798-289d-487a-50d639bdab39,798911409,17337408815663713856
+d312da0c-e671-551b-e751-bdafcfe7c8de,3353511371,5286080353122846954
+116add5d-7149-d737-6394-a9118073a13c,3361500546,16794425048545190205
+7a4387f9-64f6-385f-a803-417be6c81d39,1177338578,4923283803412171335
+6421ee2e-f7d1-4200-7647-dadc63c3be7b,2414148552,10508841175128418658
+95fa09c1-0ee7-eb51-5e55-fefe141569a9,4050477325,12727107466555653440
+9fa2b34e-a200-18b7-d75a-fcdcf5fd69ae,2137459677,51900302274576666
+8c127a5c-5027-fcf9-248f-37a9c1a7dff5,1153449402,2434183669193677046
+e9b567ff-a7ba-a9d6-4dff-88c148e40087,2912603697,5065878607847761456
+5ac5059d-607d-7836-8c63-8f2a5761db4e,2560542956,12711275448745865956
+9369d0f1-1856-50eb-d990-3aea54dec3b7,2242795553,12513980592459219105
+2254779b-36f0-84e6-8329-fd4849e0151c,2755684505,9071701598391274410
+705aa4d1-02b1-09c4-3a03-a48be9745d9b,2287623101,8158788004199521832
+e9c525b5-5092-b59d-34b6-e5b52c6fb536,3708482764,5311238311531867024
+491c8064-a992-a1c6-3d78-80f03ac9888a,477484348,5729231396483551618
+0ceadd1f-6115-79cb-4921-71abd69a9b4e,3845569673,7828244690804711750
+651ced75-c840-d910-2d55-117998468e16,3441408052,436264061151047370
+30e1064f-6326-07c7-8ab1-303e51b1b17d,4065770457,12271510460430347061
+c75b25f3-19f9-4a7f-f03a-ac894a309dcb,44099058,4097148075369824774
+8ace6e21-5a8e-be4b-c385-7d00c9f8076a,3477188875,11780225170264328578
+6ea35531-1ee9-605e-86d4-059cba874fcb,839493808,17069068902847623644
+46d4c6aa-e1fb-b097-f8b0-583633650f5c,3336722685,4955956631715988815
+c64b0d16-bef9-b355-5f35-781ae9865a9f,4263677320,14920286434047340499
+a82949ba-4150-95fc-2870-ec6ff2cf7f94,3378016590,5889255183806804326
+e3af818c-661a-4069-a1fc-f3f87d4aaaa5,2755758316,1753294447984091173
+1af9d85a-3317-3e10-f312-50b702572f37,3581695457,4192946970776513990
+6a2b1679-5ef0-9060-6ea9-9b873a2d6761,1438144443,16150448970980855996
+1bd82702-1ced-3c6e-7835-88c00e22feab,4074471340,5243169453254690115
+5858085b-0a21-4d05-90d7-e9dfc1e636c3,1176850925,174086979378873632
+49e54b44-f5f7-a928-773b-393806780c7a,35398680,10896096930174190752
+d1510ffa-6991-90a3-fd0e-faa08a3029ee,2028001845,7140281905340755639
+a2979c38-a7f0-b7f2-3fde-1d674f33c838,2042391115,11355589715577508611
+daae32f4-58cf-6386-a364-f979dd45be25,3847004080,8284597561058109260
+99893275-eff3-78f6-c44d-52ae72dff09d,1380551782,9789633363040632689
+67f8e080-d4e6-b425-7eaf-bb965ce7036f,1304153856,1884596356593078561
+ba802ee0-c328-44ad-b76b-6b749c88aeb7,2914475057,9818940144959506282
+9a77dd0f-fa95-e2b6-3a12-c04a58380a4c,2656727978,11393015203216624327
+48b68043-8a14-b4e6-6b2a-70f01ab912fd,3148309676,5453273903311710734
+96b75ab1-1762-8c8f-09f7-2ea806563dd9,2861440564,944296213592447017
+5ebc106f-18ff-bb67-b71c-075a2b473e58,3725646311,13201015751251932107
+f7ab2370-d9ad-bdad-6d4b-67e97d11430c,2171908133,7563137933961403073
+4ac7b4c6-ad58-b737-0361-d6370e2ac938,2047126878,4360874807582340640
+865efbe2-2d59-236d-9e04-938018c4f8c2,1885721124,13371014267640775700
+29a0b02b-90c4-80ae-d8d8-1f4b76349e30,2023342632,17251880340861901590
+01f80d82-9401-0064-c6e6-76d576465d34,232963156,8832998176571531879
+ea988eab-2f84-f12b-7977-8ba1382e6cd6,3249534237,17315315284578316173
+d6398364-5b22-854d-3cf3-777f9b9c82e4,2820455667,7125826880009158998
+c503f60e-9ff4-c364-2f6b-91a0b2777f91,2104537096,5292344703334610102
+ff0a4365-2c47-9e9a-51fe-ac072caab8a6,1974516234,5253871454832178258
+773c9578-057f-d047-3c37-b6967a196c3e,2243154422,11157876345438774015
+2533c4f0-8306-56cc-0f70-904296bc9000,1999436694,18164155792564213389
+1c603bc9-51c8-035b-848c-81ba1e5c0ae6,710835273,7917559885541304954
+f926110c-1d16-bbf5-fe92-31b834817f77,2451945712,5350045387405409816
+8a5b78e1-da38-0ebc-701b-f00a7c223155,3753891766,15985270855645031145
+323f4753-f35c-0dcc-f084-75ce79c45af6,2210807311,4379018729045382200
+b1f50e78-7925-1b68-ae6c-c09ec8bf4a11,3953392099,685718280711095450
+26a62405-f1d8-124c-9dc5-0f73e9242a96,1075500950,17258259641571370357
+2890bdbe-763a-3d05-a354-37008f047029,3195946854,15646077727333062572
+f4500085-ed01-26ef-9ebd-f5e1065f282a,3189960392,12813823975342578754
+a7773fb9-df8f-9078-670e-17db8c397e66,1787654006,13041659976715073594
+836be434-c11a-e6db-74bc-5199db70ac63,2541617481,2125210067116409777
+356cd648-7f6f-b839-dd32-54e0f31f8bb5,873137422,4949917804515250008
+225123fb-4604-24e8-bed8-333066ed5809,1697760753,17743728648868946952
+6f05c3c9-ac65-bf4b-aabe-32eb96626496,4145820868,2507293553350728236
+01995d45-337c-5af2-4a51-7c1118ab516e,2784208372,5570171501197192847
+257a1891-878d-113d-9cd5-f8a5e542aacf,1658347422,7145611421238583671
+20b49174-c880-b9c5-c702-f306c932b39c,3914713485,1185540659567187222
+4953af15-820c-b507-8bb6-790d81dc450c,1235324765,11377073019739308919
+e58e1599-d07d-62ea-e04a-1f62ecfa8051,3972057071,5624110917914280516
+f202ebfa-4a83-4c7f-bfe3-9033cce1dcc1,4072143098,16311370194563680380
+605f0ace-6f5b-9783-8c12-3a99ff0bbd09,1874764848,2613676557652921440
+dd71d026-98b5-8676-cabe-3d1a20eb3fb2,2006686337,6763015507515331394
+00162646-36fa-ec5e-60db-43ce1bfa0c13,4170916471,3681200866522453150
+20d127a9-4b81-ba29-1e7d-d2a266fbbe15,93723821,11805569126741126508
+4d422769-294d-891c-ed24-4fc0393c8e0e,1432583662,15070043753315782627
+f7b90689-e0ed-bb3b-2fe5-d1292c11b4b4,2959950673,17787259803371658445
+1263c15b-7e38-99db-8c8f-779773144670,615179645,14421255884269744541
+f46da89b-d21e-0c9a-0760-750ae356aba6,3694006964,3564201921721405595
+1288185b-38b7-19fd-c895-ed40cccd548d,416290675,14630552609435501219
+79061e04-18b7-4378-9fc0-40da881fe9e2,4114152205,765475687309348981
+c61dd0d2-0942-7146-cec8-8c751e3d4a5f,2049647843,3834237635649797257
+d2a77284-05be-776f-d012-955a0c31f375,3219046454,16788630508199443984
+01469e51-1c35-12a1-7b71-b29b205f53ec,1084237293,1677937701352007807
+8083261b-7bd4-46c0-e0f6-7037ed11d991,3572895325,5316891217433834154
+f0b5fecb-fbf4-62f1-d6ab-e5f18c2f3838,2865182118,14068884857580549477
+fbb2870e-e1a5-273c-f1b4-49c45b5343be,4273515756,5238264511148461641
+72ccef56-e6d4-ae91-45d7-9059ee46c0cb,3304537555,10374707896192971687
+7f87a5f1-5d4c-b555-aaa9-1d4f03d5121a,261395149,11496664100767327492
+0708f338-7d63-f4dc-daec-c665acaacafd,2052182079,3817831112986554433
+c34f6439-9466-d354-3c28-31b4471b8654,3806093440,16675877580407256034
+c206d33f-f80b-4a01-7cc2-9bffb0d6fa02,363952997,8446914602125067994
+5e18f297-3dd4-a09e-8200-5a1df2fa81ff,2235500622,17623102016215961132
+1c6cee27-1fac-44eb-456e-80095f904bb4,1975779857,5842815060835880623
+569c3d4b-725a-9fb9-5828-a4e1be0b1b0b,1013550104,11901136181288548979
+07385d10-d846-fd8a-535c-ad91735c3dd9,1408617015,4464370760127064754
+899f24dc-da22-7dea-e7e3-c285433aaf1a,1657162500,4355303298533737873
+e7bc591b-1dc5-25f1-de6e-6c8886c81f73,2992536202,14959292439515239750
+eb950c1e-924a-9733-bf64-417db4b5adb2,3920399409,7123736765747545545
+e8271114-923e-c127-1c97-c24aca74cd96,134832484,16606620652240950929
+61988325-594b-4034-f116-463048816c4e,2635782207,15097439721445148967
+17982a29-711d-8630-7054-89070c6f72a1,1505381867,16199288049903940342
+9848ae30-7c04-8852-907e-15de78f79a77,3077723948,379254726830879699
+1a5758a6-db7b-d234-6246-92b63289a160,111961137,1770161174070296926
+a2d856ac-1cd5-ef59-95dc-27180bbf0311,3331779971,5460823366775996767
+d97e0d13-4e62-14e2-801e-817c0509d8ad,1222689229,8583260954214519271
+f2c288c6-840d-6e07-b500-388f9efbf35d,1056053491,6101064165257915076
+0b48ae95-645a-76d9-982d-89b206063cc6,136358622,5017518994441549453
+a266c5cf-858f-dcea-b5c5-11fafec00a0f,4206804048,4081450395594341156
+a45df071-20de-fbf5-8d66-66c15d5f11ef,114743441,2463360262586827200
+cd7fe954-b74d-e926-c7c7-ab8d458614b5,1911147950,1806971437190714843
+b12e52ef-3514-d692-bdaf-decdd78b2f29,2233195018,13257371922415248057
+40eb185e-ee93-2527-b26c-d4d2b2fa7bc8,308039899,14818366534297874428
+6a863a96-dd32-9f04-fbcc-0a330681bec7,735799263,13878225715646691971
+6f868abd-6d48-2936-0ce1-f02f8cc89178,652140919,15088977400435813867
+7ca65dda-74cc-8cd1-cc42-e77f73441b25,1972914843,6751296759148642538
+6d9a6cf8-673a-ff72-f9f5-8886307c5414,1028920068,7037120170853239091
+045443da-c22c-f743-3978-c8cb66c8d0cd,3046880723,14467960955927397065
+2dc85dd4-f041-9000-85ea-026cecfac40e,23436801,2938666063811617479
+6c117aa3-2d16-2bb5-aec0-f860f478d1c2,3487408305,312692998422521982
+5dd9c0b5-168a-2d98-a724-eab705498f4f,3567708950,15759237567796917429
+2e4739d5-d5ea-4123-bb1e-750d59326ffd,1589338169,13847559002628079504
+a5c3cad0-d8ce-b4ec-9791-4021e8c94503,3106365182,11968270323092494246
+78a740a4-1d9f-d45f-8bb0-a38f854c55e0,2244408962,15985870717213955957
+b7631ca8-ca16-b813-e9b3-79a3e300e960,466653906,17450151166608033555
+588e0b01-9500-fa4c-e645-e9eaca96c5e4,28065909,6517679305228016702
+4c7bb5e1-1fa8-9888-bbb9-492302a69a7e,3623058623,15680803911416034887
+c3215385-252e-0861-1043-cbb9f1d5faca,3558289933,4245791819407274726
+4d34c28f-2c64-7c07-9b83-e3d74737dfa2,3619232189,14932561942261001459
+c74825f8-58fd-f878-ca2e-a342bb3985e2,2223320913,15028308553004606143
+78159f00-cd53-1754-c493-cefa89ce7849,2686309376,16445801111969211390
+274d7afb-c49c-9e9b-6381-d065ff10710a,1736772031,18231042850646453352
+0da66baf-a4f7-48ae-8c68-eb94751a4476,1726187115,6524379773282172238
+96753f7b-02b3-4837-772d-0391c82283b3,2978887302,6247488944466297255
+518eec65-54a2-45cf-8ea2-787cbad5f4c7,1683757369,11196326014186142610
+f81b5438-9093-21ad-15cf-4c88707a4061,2267491290,14163898204058683972
+4992df15-1538-147b-3cf0-c3aefda15699,3784552972,12661216506256419786
+64858949-f7eb-3ad6-f4eb-6ff4439b9b58,1401473349,13816442144934356358
+75014e35-0290-8430-3eb2-82a6adb31d58,4169928120,4140149611115837220
+19e10942-e329-6e80-f547-235fc0019ad9,527684793,5387423956426254994
+0619c771-2474-d03c-fbb3-048006727f7a,419230270,12107832885058778318
+72004e66-5b0a-decc-775b-a53e2cae9f08,846913753,4483221287337223532
+87a46e30-dcfa-d21e-ef71-d589e5840fd4,3032300567,16785370842240529105
+47dcc5ff-9bfa-b857-a0fb-6213ca311d80,3700744906,8384469040855276935
+55dc4b4d-c336-4398-f8f7-19e94797a16c,4036064940,3521095411846421384
+1bdeb945-e2ed-822e-32cf-e60913c2b3f5,3712498740,18178630962423264757
+146fd590-283f-3d93-5741-dd8546f8f410,4130737079,10750321110431940957
+df2b5fb7-47b7-44c6-2942-2aaa93585b34,1571653104,1507499062555592230
+6a35c4f0-8363-1402-6f54-a281a89cc328,3173284315,9840065566037248868
+33983d92-2c1d-2c15-27e0-57c0a3cafe52,1871733327,9952087773534634450
+108720be-50e9-c623-be6e-579941c14f31,1151871015,2121013044919716444
+0ec3635e-ae0c-d147-4122-a6f1e090aff8,3876749599,5310481934072430546
+749bad27-308a-95eb-fe77-414cd2b03362,1080550226,11020663615509002548
+5125f360-13d6-04a6-76bc-ce143c3c7bf4,531846682,18025185737945061887
+fc4732db-6deb-9080-3683-10500c87850c,1687858021,9313936212305979694
+9d29043c-be47-e3de-8f33-bc08eb8ab4ea,4048767810,10656955952810665744
+a0759884-ca2a-2836-2b20-26583ccd73d6,1193473415,11805028147511479655
+73543d8c-667a-5f76-beb6-2d9f7e750377,2555623744,11170089832224276295
+e6f4b86f-fa20-3ca2-c767-b997a5aab2be,3508678128,16081329438756739114
+0e6bf57c-56e8-b03e-d8f5-6943c3b17efd,1822293604,10781187420277197120
+03340e23-e4a2-b412-fb22-c191814b28bb,2202675367,10314448994214458033
+1ddadd89-d670-82e6-53cd-27aa2a04d98a,2688614938,17208917756950741405
+315509bf-a4fd-d7f9-ee6a-6cbfc54a390f,3261721844,141386142812714939
+f7ef12a8-6a59-3958-ea09-86750500b17d,519595648,3355881139151443912
+5b6159d0-d3fd-0041-003b-f8674195a25c,1579948433,11171980275441452546
+f35da740-8fc4-5172-10ec-e7262af48fab,580489118,6435292420618047944
+5b2e0728-ccb2-966d-2599-21777742fd1f,3577822174,13168775963157717371
+6424f237-4842-e354-b4ab-44247017f1ce,1279131697,7480778962990985076
+7233a434-d441-92b4-ed36-1fcbf082d65f,302959834,7260567046774355134
+c85abfef-4494-8b53-b6e9-1f1dba42151f,3801026155,18257909686595704082
+b35a1715-80f0-7b8f-13e2-f729a97a21ff,1729328659,9187715816551091586
+b329d1b0-25e9-8921-7872-806da06709c8,4057778371,773908339811297992
+da8005d4-29e1-3c46-8394-8667dcaa68b8,3751783548,1034770656155486621
+bf0a56a5-f1a7-5a77-3842-a2306c32ef46,2460226033,3281546917308168308
+4e467fda-6c9c-c848-f690-2ab0efd59831,857635896,9987882282408958960
+e00063c0-0b3e-3259-f646-ec62990af10a,1673312727,6975397876724994874
+c7f741f6-d41a-38e9-f30c-74e972612927,402026459,17041963625338338372
+833fd102-7290-0e45-dd17-f7f830fc6007,2491842973,7330544983827132702
+10dbf38b-da54-c343-33e4-4217d6227c4b,3450431770,16163889425191583233
+807278e7-aeb0-1bac-f531-6c6569ab4fee,672991568,436539061509756799
+83db1413-5058-e9ff-dd3a-975f9abde48d,2952243803,14288410637783172705
+165a93d9-49ae-da76-13f2-72972b95ebb4,2942539398,15933958944828411881
+2579cec4-2667-c3bb-5de1-f8540cffe576,3691497834,11425523771850593151
+f3a1a68f-dcfe-cdf8-aa7e-64831a34c592,3433130519,2150889672843737223
+74a01ea7-9376-7a26-abb8-d7bc0cd19073,37893940,701420841163373099
+be9f87ac-1f5f-33f8-8c21-b7fbed077302,542505888,1725937041906816333
+9dd21244-0a60-2430-9de2-7c13cd41b8f7,623128761,9455848562204510899
+208da729-c08f-c19a-2484-412513d2fbdc,1079981768,14066190128920169974
+5549a118-709b-55b7-2a06-3d344a7d109c,181387953,15529229538741234049
+dafda775-4554-783a-be90-4b1b467f2483,331655795,2663385129821210104
+c4a818f5-f8ad-803b-fcf7-a90d3c517041,2689149427,18142769265364856766
+33766ebc-9c2a-7a0a-f21f-5d562c3c7d8e,534705783,12846565637747040039
+71a8a6ac-38cb-88a8-706a-5ab9e5fcbab9,3464534589,17775924843705065977
+2974abe6-bea8-0449-53c2-5a3ee086a5f2,3843900828,14666297844430447201
+8f34db23-4b99-2c19-ce59-bff577a4826b,631291337,4678932527562483917
+63d283df-0511-cace-ed06-93c561938413,3898726796,15200706525419219543
+79d48108-2eb4-7578-7547-b0ff5603446e,995032946,17553806788619648024
+86321831-14ba-6bcc-115f-c342197a79af,1013130695,6996348971824213958
+2fc92de4-4599-34b0-4129-b86f35fd6530,2502522623,3081453753316647489
+d0c264f1-3b6a-f7c3-4b3a-633615876e07,512753163,6326326397237434783
+01c62655-d382-3c6d-d9ff-9bc43d2765ba,384856609,13086837588630587740
+3c8bb8c4-1643-b7ae-3f0b-2a5d3f114a2e,3208673227,10198140501416158682
+adfa2726-191c-1d13-c464-b2b8818a4107,2583638076,12003980927824366411
+ec26152a-9675-56cf-b0a7-e4008c936122,4113891154,15909201350907200668
+dc9a5444-a44f-d96a-7801-56ac7c2be717,2997528355,9445667366735558431
+6470e855-6d4b-90e0-8dd6-64803ac4e003,4265728452,15503326926908510775
+2bb0bb3d-e63f-6e14-3144-2fcdb8e2a2bc,1825601486,2260754878872197859
+ace937cc-4661-6a0e-ad0b-ef8a9cb29cbe,232331202,1146758961930145383
+e7516223-284a-2a37-77cb-b654ba1d8d7f,1953318002,6570683201027046168
+00ecaa83-9f24-a656-4cb2-a7a37581173d,566516075,14515976502871618794
+0f895c24-7eee-a5c5-181b-dacd90129a26,549943392,8895753931528725608
+a8548c17-4f6d-6d34-5184-e15fe75807ce,1995298157,6209036733299973321
+78d936e5-d832-2729-b7b4-128e9bdfba24,1166043519,12989736501602576484
+e1c68352-4074-0815-3e8c-b750a71bad57,4261518179,3228788890654184843
+2cc295b6-d043-7dbb-0db7-445089305ea4,1882378163,14733818827390140858
+7e9166d9-fb63-3aec-44a8-f6acbca3118e,1259681832,10401552370829788170
+51cc0e80-7903-781d-4065-d624da5c3de8,815359504,11961936633602866343
+25c59ca2-4b1d-3c56-3999-f8324d0a09ea,1577391431,16373344303936239174
+0742f60e-9e36-8581-f4de-d1c73a16a22f,920588794,14282041265636570132
+6353de24-d0f4-01a9-5a7a-69f6bb44ebc9,2191547710,16897151529406176393
+25f61a71-e8e3-fa61-a3da-40c6350e9d2a,2353109184,471629664254925729
+8c93b656-b5be-bf50-1b67-280d9280b49b,3882313380,12905816563895184809
+0cf4b90c-c2e0-c66f-0bc1-9813f6584358,50099177,6743524377516023055
+5161b3da-ed8d-9e76-605b-4cb4a097de28,2795050184,16323861237466735367
+3c0ca5d3-870e-67f0-5500-5366d6746be1,1096682604,11390965098695608858
+60bbb26a-40f9-7608-2564-4c7ffd8ca951,1314743946,17091166468886426183
+8e408f29-03ed-2d72-5159-b89196fc02a8,1383060474,13779708003996401614
+f9763695-045a-6c8a-418b-d6dca23d5cc0,4192999864,9914579302671348704
+16c645ae-2ca8-547f-76f9-706388b8807b,3361398785,13504065018663613612
+1d3b1256-1e5f-837c-0ed5-744c5cbcabda,3348911192,8035729923502878484
+6482946d-178f-4877-a87b-7f241cf13db7,3057259624,1187202015810656337
+cafe2e9d-03c8-0000-e035-5f63c0690005,747373409,13990108617530714272
+7f530325-b423-2a94-8bb5-4a2c3bd49aa5,1083715979,8055048603167899044
+9ca5bca2-02fb-1986-9a17-82635eda4fe4,4078590829,169913065545151096
+e6ca0f3a-4b98-190a-17b0-6014c0f0aaa3,2419842419,4581510270834942251
+fb9ba46e-bf03-747a-7cf6-dd644043225d,1271418640,11281289906967501557
+83d2b58f-f157-09fa-fda9-7093e261b207,3001904927,11586901855615045562
+4277d349-b443-a45b-6514-0f3dcf5cf8a2,1156173703,1586019092836725477
+6ae081ab-8f72-26b8-7601-56e84127709c,3151372749,14550298036775822574
+4fa206ca-46af-d339-723d-a46690380620,1584902627,6560427852193661808
+4012e924-fff8-c74a-91df-eca704ed05ed,1043437243,2810918068564403715
+c9dd9a86-c37a-aeb4-5e4e-dc51252eca37,431646048,13867902038737376356
+7991d3f4-6212-6c20-de2a-4d6c5ac1af3d,4021575867,5693224586956472306
+8d87bb83-55aa-b343-37f0-e53b08d6294d,3507231843,14567904875682553395
+7d24a89b-f96a-015a-9b04-dd23312c3e44,3333344632,7993951619130354390
+d28c22da-bfe6-e7ce-86cd-524735d4a606,2188610852,17157945729702249556
+d6a7f9d8-05cf-df96-8d6d-40a18edf96bc,3942020263,915125156798380664
+f736b3ad-0d71-368c-d42b-246ef1042dbf,2068653147,3343865575369465013
+0886846c-98b5-e0dd-44d8-68492d0f1a07,3483820147,4442794621742156524
+9004c2df-9ed3-d4b9-8d0d-eaec76353da0,3474959864,11183322024896782796
+35ea3505-499a-127a-b56d-5c17d6e0db3b,2342900447,14063901311642326895
+782572be-1d2f-ef87-0469-c220360a75c8,1656739689,11668457316972937469
+8953d08e-1c63-eef8-0e20-a5a8f03be71c,693329093,12142416176139320599
+0c237aed-eab9-d74f-5555-358a9ab25269,3888446428,13927811643983324799
+ff849247-4a7c-9d05-dc6a-fb70b7845a7e,1120144550,18260965915509612312
+00303529-c54d-8917-3226-cb9011b34ef3,4112606498,8758713570920088902
+855f2392-4d4c-3643-eab2-9dc8cef5e973,236508379,2749776165246922133
+0a5503a6-0b93-c4aa-0c62-ebf10fbcad54,2151956712,16986760774481663725
+1474a728-bc7e-9a69-3607-4372f4cdd918,884440786,12761744523882980408
+c2586f2e-c30e-8f6d-67f0-80fd1b765d22,2384552289,11929611279891275760
+bea72311-c92a-ba50-c0d0-44da406e867e,632846457,1661643016979620557
+eb77288e-886a-1895-e0b0-cfc877db007d,3452082178,5384829143811269271
+9b1846a8-a370-d194-167e-55726702f6a8,4278765487,3705744153516661489
+c40e1cf6-d2ad-1ea6-ee91-416a8d80e62e,1942271674,3153015015746169268
+50534275-6552-089f-aca0-b8ef3cd13493,4220647205,7048652660554901539
+a118b131-fb31-096e-289c-e1946bdb699b,688310697,10840644505335401263
+1ce1cb53-7e30-e234-af1d-8a427826c284,442188608,575983917801334759
+5d33f475-be19-e19f-1768-9f3457e8fef8,1694642366,1375893554689150089
+ba94990a-b984-f781-658c-140e368f1296,2121927027,5523498565283782463
+51890930-a59c-e99e-cebd-ea9cb306de9e,2929247860,16041774834183109433
+7d8801cb-d1e5-8d51-f8ca-fb6b9648cb73,733586192,17262492540309359964
+8760db62-b310-e8fd-f665-deb823876e00,4181760884,8507900770552105136
+ee1209ac-04e8-dd39-db15-483d2331de81,2764843005,10131124093918051877
+6295bcff-c8f4-f7f2-cde6-9cab560182d6,776572450,8451877657962698918
+901b13d4-a8d9-3f41-b5fd-a6f557d4783c,3997694377,17230768273741367002
+b7a54770-a343-1749-477d-39320da19245,1118453927,2095242378210081990
+277748a8-dc31-f079-fe7d-bd47886d335e,2207980488,6993469664639758047
+26e3dab5-6f7c-df04-dff3-c05592694b6a,2207939090,11716956200563165644
+691fa389-27e5-005a-04a0-ad03ad1aa522,518715620,11984418540934802596
+9e33e9cb-a525-9d5a-c716-2167506dc643,3154917820,8091616713959720697
+555d6aa1-7755-db02-fa5e-f6c05442a4ee,2062301037,9806208218751532267
+7a08603b-1cff-889b-7d17-bd96b5644a11,2067596800,6488967238062768895
+bea25f67-7c5d-804b-4a9b-b073755aa35d,2869328684,8841906832918044452
+8f56b7f0-09b9-aed6-70ca-9ef586e20a9e,766036245,10403387700207346755
+0694d513-e86f-34e9-4eca-fd3e820c84d7,3377934301,12084967949063801023
+721a12ec-aeb2-fe51-c940-09750929db9a,225462788,4339325065470550266
+e5bf827d-a42e-d35f-2039-fc4aceb7cc18,792138199,13116016235295953539
+89702343-8f08-4907-d8f5-477280412bc0,3042844466,9666004085435868501
+490c5bb0-4975-b6e2-9d9d-bb91575d945f,2797137234,2016810450023593605
+d424302b-e89a-d819-6ea5-4a3840421df7,792907649,10334978678189648415
+78d33667-4dd8-47e2-251c-cffab889ba3f,130966468,7333468195037979511
+5d0bfd72-b07d-b769-ce18-5058749d1ccc,1780282740,668966468632012368
+e730191c-8584-ed3e-5ef8-3ca70ab42967,1827379585,5456563801588499802
+5fa853b8-c373-a2eb-250f-f931344709d1,1134855118,14821146533140820036
+7b8658ef-3b44-8797-5a09-554925f9dbe9,702333670,5300933351477814929
+b15aa5a3-5232-3886-92d9-364e098da096,4145933436,2712056254185862749
+59790db7-2500-311c-f794-5ebd1fdc1faa,1177824061,10225726955867676154
+d96bd80a-feec-4ddc-b7e4-2ff2f6deb955,4193171685,8731232614684698828
+03079288-c1f5-90c9-7692-d748b66819bd,812050725,3177722630614613979
+7c0691ce-b6d0-c08e-eec6-4e8df5ed41dc,1624229387,8306915365023265335
+88bdc82d-0d9b-32c8-da2a-97f3ea41adfc,943163692,14843075572975778117
+f606b0fc-9541-b82e-31fe-6814c339e5aa,2045105017,9757428399483220323
+1e281c3e-56d1-35f5-d4da-fdd8c8a91978,1490987430,2739679657995667299
+b3b5b505-06f1-41bc-aed9-0fe250f03e2c,3496749636,8832764821290820656
+0f0f6196-cfa1-1a80-518d-92e629800469,4001000692,6457976319078243891
+4dc356ea-cf33-70fc-3958-de8495381b18,902533235,11242772456241354554
+60b070ed-7b7f-e8fc-bc58-27cd9f924f47,2162109677,3965077763757376746
+8108a475-aa1a-93d1-b2f4-379e27608056,3694954556,4264371632749362159
+ab3573ba-39ee-98d6-bbdd-180959882c33,3448079511,2371137367287073932
+37ce402b-bde4-97c5-94fc-d54fa1637303,2521323842,6692284114829336811
+db53cbeb-9e3e-d439-bce5-52b657b976b2,1884302971,3012148696449654213
+cc3b34e9-873a-4429-1b74-d5e5ba52b03e,3638606792,9782264323658680053
+3b718565-1f1d-b765-d987-07edb69d4877,1898410042,14698149470864736897
+a9a6e62e-a80b-22af-4204-00f12fd79cbf,3491211418,17536180478573525405
+edde3343-68ae-78f6-0422-3d7c157b5020,303745482,15586158642520407868
+69445cd1-b2b2-7c3a-ff48-600a60f74a93,2894354012,3221324742730366814
+68204760-3c19-7515-f90b-f91a78247a90,3036407772,253876833589861457
+5134638b-aae7-499b-f54c-627f3485a1d9,3074216109,9473060717266326080
+fc23940a-46a5-e609-f53e-09fcee8f29e4,1093822281,14284523382132065040
+8b282aed-2a16-47db-466c-aaa5d39be6e1,2621753065,10155716676051766871
+4457420d-10d5-3486-b388-9e286784a0e1,3354247864,8588222541532401875
+64ceba02-bec5-407b-3f4a-f21d793d8df5,3248243562,14635640099845864568
+1b945363-8e64-484d-e1e5-e6c5457a77c9,981163581,14185812926081951211
+fc91f78a-0c00-14c9-e5df-64ee6e04c503,805171192,13535937883886104676
+7a3d304e-85a2-e544-8105-d2187ddb6d49,2404042617,11832080683011824017
+12bee922-34f2-483d-3774-0b894698e27a,513139293,11811786645725055185
+083e8091-4262-e284-4c1c-f0aa9a43894c,1981067391,11189382429711198204
+56fb2c22-ba24-1145-738e-4a9eb6cc8e32,1066984685,12070071612837099921
+36714035-1cef-fbd7-547f-3a777b6bc2e4,3967360804,10582306594506273383
+408e102b-5be9-3d2e-c93a-88f206b34916,188885679,16511255920528132887
+21ccbc1f-3680-3c19-2c17-2440c6d5519b,4184600042,9919277374233370355
+b50fdcae-b9c4-8f14-1516-f0b590db5446,1882929349,13198181188535931643
+741bff64-1325-99ba-caf8-29799e11d7e4,1594332713,17329323556043728556
+68f73db7-b885-bd93-2ec5-f8d00c4dad72,2132744320,12664171106291171369
+f15fedc1-fdce-67f8-a415-f48409c60502,4254114812,5138450957528426102
+3c94dee2-f776-a874-4303-8fc265396ce2,1049197184,10703644266627742083
+ae6029d6-c7ba-21f1-d307-a0fdc102bc2c,2373286122,6601317687970841215
+bb48d761-0809-f90d-9eae-cf29e93b2990,2989240065,4537972321729049747
+825adb79-69b1-58dd-cd5e-8a2f05a2061b,1622184703,11035065330797949566
+9d77c400-9829-34a2-8473-c0451dfaf931,329269296,15129241397175895461
+2cd05dbb-e5e4-0aaf-acdf-ffb8471c98b2,272795880,13630390434956661524
+fe4f4119-873d-695c-f88f-b306c8002412,3855787227,4215147621390639595
+4b7d279c-7f72-ff95-7e91-9c7f3bec6734,1933902045,13272785810235924386
+e31dd9a1-0a99-9066-1912-db3ac988e1b5,159472394,14190643467629162943
+232fbf6e-68aa-2bcc-b2ec-cbdaf75103d2,874391230,6991229745017966069
+0583243d-176f-b228-cea8-287029b07c41,1302249989,11449160251293531520
+e6c2e07b-f049-8e45-117c-0114688fc260,3868130968,11127537980969514018
+332417e8-9026-fbf8-ec3d-3a929a237825,3842947790,1531502812955858413
+fc1df6e8-0170-b149-92ab-6e39f88270f7,1157473943,9564988551102224861
+64fcb3e8-0f4d-6bb6-fb24-d7d515579744,607773892,7786028408095085193
+f408e0ac-e4cc-df05-c1dc-a802f0400a5c,3398062262,8573187025421986668
+8d07c41a-beee-64fa-2da4-73ebb8832976,2064348914,18299996350788732097
+384a6a38-5ba7-2747-5197-1a539653ffde,1571605931,12814616793175867747
+8bcbd453-e475-18d0-adde-c9c4feef3df9,3349411585,14758239494352877724
+fcc54387-b8ef-64f9-db6d-812fe1dfacea,2395445669,12944395481507544460
+ee20b3b0-c7cc-fb9e-3afd-575bac24d533,2364248209,6497785887439099280
+210945fe-2b2a-d54b-0248-e5e25fc14720,406007123,4308235669183604964
+93860f26-04bf-4341-b80c-5f00df90461a,2484347492,2390323669683145120
+1bec4773-d63a-1209-96f6-cd1c18c5d158,3077527601,14207617891154233057
+e0fd07b9-63e5-8122-c846-42d8b5106b43,1728023948,1903889686590120401
+56ca253f-c0ee-181f-ea9a-8d2f4fb5c964,510025955,6152001337566474027
+f6ce1e43-441b-3d67-4620-75f3ba509023,3274477369,8274891313910703784
+cf047101-823c-6aa1-b163-90b4c4fce050,2540196062,17598434747987632142
+9429e0ad-3938-9dc7-a75e-66f6b4fab0de,1275293113,16502234029087699317
+194c78b7-f826-96ba-5e96-e19491a7a5d5,459102814,2650812571217071230
+4a2aa989-b6f6-e926-ea7f-9bfdc7adac88,2357545806,16141878163340171168
+9a6fa53c-ef9e-5899-fd06-00609278bf67,667368603,17877894181995256371
+fc84a454-281e-0d05-ac64-9a718482eb1c,1357783523,8892435777336989662
+aa11fc97-854e-6cec-b5ac-60366ca0b71e,1539935038,1584588412325934549
+d25a6ef5-80ba-a1df-2969-d785232c0ea0,3972766834,18100929461426071564
+2748226c-a290-b9a9-1a38-2a6ecaa0b47f,2114397253,6622517985594552823
+3dfd8129-d969-52be-bf55-f841552a9fcd,1711865855,10828568277968934354
+01e3e0cc-c90a-fb26-93fd-30a2a3648746,3168040619,7748467745840369168
+b492602a-9726-9cce-8142-23bd33002450,1065057072,15806424972144291704
+cfc4c4ae-70e1-0ecf-f424-071df4a259d6,2692594938,3973646734933884760
+3918fe61-44d2-c3da-63dc-88eb5c1d2d7f,2276014347,13136527435306663964
+970f12cb-ba04-8009-eabe-9d3775968e19,1764290072,17767117191101530313
+43d715b7-67ee-8491-b7b3-2df2c65a5544,3767472459,2311567388811004866
+f4e03d2e-18a6-226f-4cd6-00fbf1594bca,4274120251,8441003231963750347
+cc4812c9-790c-5de7-3bf9-d936b10515d3,2068984593,16464058813802123189
+53164cc5-6da7-0c89-5634-87e99d0e9688,3720098365,4012179460182526173
+e832da22-3a4a-5fdd-c6b0-788bf4b1d344,1940697271,11765058351449748414
+122cefc1-e100-db2f-0fa6-3cd4f7564666,1437308908,17550920168603294173
+053cf71f-be95-7c44-61b7-d5fd6862b47a,4199751023,8560743455927275263
+6389aae1-557f-ac27-dbc4-11cdb4eac633,142025772,10914082374339915629
+cb046308-f685-dc06-65e1-7d10c646a0ec,79749725,8194384928295666076
+8b09b7ee-1a02-17e0-3abf-29f18bb9d5f5,1542269040,17792374785284721008
+57df17a4-d438-c370-6c36-fb287a1ea479,3022353719,13718486188967888981
+b0b2545b-dc4c-5adf-9b37-1e5ab8208958,273131416,7156249443678951162
+06c29138-21e2-393b-8e9e-5b9c17250bdf,847567433,12390663404286238196
+686f63e4-d108-8f5c-f279-b7ea5a075685,1537994642,11159803177936889333
+ae6b6395-52b5-a071-005b-85727ca3ef13,1156012415,5607790572336163847
+64c2c796-53ab-2b48-d5fc-ef1792baf752,1008012954,14046969988846652455
+d77dbe07-9788-ad3d-1ac7-216ede2e3a03,1094524012,13443858691075593470
+d754acff-3abf-cac6-6371-8543b4fe4e75,3624720518,3607019831736716055
+022b1ef2-6d24-fe1f-2a1a-1938573db8b7,2764781536,2104712375700104854
+f2a4fe68-e8c8-ac12-cd3f-1c557f0808d6,2006367746,17039974902455550565
+5e256476-a355-ed05-51c4-1f5f5a139a15,836198090,12222545520076915090
+39d79a92-cdb3-e083-cdfa-e6c90c8ade13,3045336030,9439001627562231816
+8ee34c3b-308e-877c-c0a2-fb93e281502c,3621185755,17849928681267127672
+6ca43037-0e45-3296-01ea-c623fd5f0582,1785243453,2571203323317758052
+ea98999e-af79-d98d-6ea3-ebc75008a15d,3024696656,7273314534163292430
+80915e1d-3051-0cca-9d32-dd7dd95529f9,3474195939,15115888289728731676
+f34bf81b-c034-b972-d962-2f66f0a3131a,2844877220,3391399112716417533
+0ea5c998-90e0-17e2-a8c6-630e9e8de4f3,1947842753,2833606442966532936
+04b38966-888c-a17a-67c9-fb72542ec434,3649826300,15190240764974632638
+dfd511a9-72f3-444e-1953-c791fc269747,287777513,8373585172370928149
+3a527b77-4684-b35a-5a88-c0283e71f077,1390022980,11440208289017935399
+3b37cd78-028b-7297-4ae1-14280145a552,1875436216,12400891398963801115
+446f8d6f-d4ef-434b-c73d-3f4404089e5e,729621454,8208709090995668780
+ce52532f-b56f-1cdd-69d1-1cb67c40f3e6,3927304423,8187668188109311929
+323f7c9e-d43f-1c48-5a59-31e369447c5d,2985253470,2826201566956511583
+6b03ba69-cb94-9109-4ac6-198ac239c2bf,2183783619,13984547417790877712
+b9646ee2-ef74-787a-67d1-ac7593770095,1542406016,17408680180542574170
+863c28a3-7f04-a545-b9bb-76598beb7b22,2264137047,10160847528495575053
+4f1766c6-a371-5389-c284-2dccf0bb9abf,2038554662,1048439779320471915
+8f08100f-1e97-876d-34a4-f030a0ba850d,3353420317,1685935517677805061
+93c294dd-ef32-7652-2760-dd823990f2e0,2182428200,10844608364257695216
+69d51d5a-f8fc-e9b6-1736-60a0a639f8ea,612512388,15732267238117114808
+d1ac5cf4-0065-bcb8-a91e-5c51e79dd239,1268743374,14931787395288034143
+22089040-b3ce-7aa0-c48a-e242f8da87bd,2640357095,2090535095849739391
+8c969e6c-0757-f5a0-95d9-ce05644249a8,4118068513,8860119441801719475
+51e46a0a-e23f-295d-244f-153d4e66c6ca,189541946,1096379822372450697
+998cf99e-6b80-b689-879b-e77ad365d14b,1942289595,11804499835929860252
+4d7eec6c-2bcb-94bc-b51f-0cd08ab05b52,1054821217,8655559863955891446
+fcde5181-c962-d28a-f11a-7c3963d42103,2058281464,5127812911550000111
+364fc023-52ba-3a21-6f0d-4c58e89714e3,4172515746,12665850818567275304
+570cb529-5c97-cd59-fd4b-c4eaaf685b1a,3055026781,9590241850993456228
+da16b3d1-bdc8-74d4-05a6-685a34b7f9f2,1219212207,4214930008714496142
+8a546eda-df62-79e5-9e7a-1e3a344675c3,846086460,10236494157813859419
+c3290ad4-db84-f1f6-3699-2b75cb5e4bb7,261383031,2868168175202066083
+e990b63b-865f-f062-4e6b-abbfbdb06be3,3566130596,8663475503149486234
+e3e413c3-3d51-935a-99f8-f4c306241e86,1743339762,4173074240398151060
+e80bf92c-246a-5810-4ab3-13647f51ffb2,2492687112,8754715780756270400
+1bc245de-c3bc-39c5-970a-869c8c98e81c,2116372656,14310914285603438462
+80e5f8e5-8029-ebaa-f735-21c4d26b53be,342370595,12909973858162652532
+d46b0210-144b-0601-9c8b-3ab274df2187,1586478982,3796103534948358630
+def55dd3-57d0-7e06-fc1a-07daa45eb63b,3607376499,13794105438055544641
+ddf1bd06-5f67-518f-94b6-6b5d11a915cd,2561452550,17946999118715310251
+43a2c5a0-5845-f5e3-bb0b-914745b4cdb0,2563303895,18383853127961561134
+74a26cb5-6100-86a8-a9b6-2d6f6746fe03,77663827,463151158504961075
+3d934193-fc60-b9e9-bcab-a9ab2d7c58de,3524319413,17457655445730914199
+448d4616-daac-40e7-b53e-791eb1f7c679,1503237285,13670904720248063491
+142765d1-fdfa-58e1-f7f2-101c6b5bfe60,895943706,17705844425776180864
+58d7a4d5-3794-4180-6483-721bf9b14021,1281793387,1322297279026395929
+b2e06467-e7be-0a48-ac40-0e0daa3dd212,1043646615,11290226593501454252
+407707e1-b73e-32f0-6e50-720b7b8be881,1101576465,6471334737988764406
+dab2424d-4289-ef2e-1770-63e4548b45fd,3240619426,11298081341434822942
+1f02529d-0745-1c9f-ffd1-04d3f5667888,1540018281,3212051103240034881
+9eb03fbc-60a2-6a4d-8657-79901ddc9884,249444375,18270917110261381483
+16ded03c-0233-f1f0-6260-b1fcdd0fe9e5,4200078668,1531065543416372181
+1669646d-f522-710e-2ca7-d2f520504c8c,1221887534,1176333970763163994
+25e2213f-a8f4-0bbf-be35-cac1f1f47b7c,1537138080,14646220853572119266
+dbaf50f1-39ae-389f-a725-766fa7dd68c3,3803453873,15398265451274975353
+991ec90b-218f-7c3e-7a48-8a6b3a5887c7,2752076441,4121339125609395522
+8e80161c-b1da-7b6c-0efa-e10c38ea4d3f,2942157571,11992515972200338856
+fbccdfd5-0047-55a6-7c66-0214836ed10a,3975587224,17966192605213327383
+85f3a8cb-c770-79c0-91a2-8cb134a131af,3789058580,4560023508635111420
+4b70c0ad-113a-1f29-0611-e3753f061b96,3257270315,2457770178315634317
+3acd092f-b0a4-db64-4fe9-ea653abac77d,1135282735,16522559286478487341
+e4555bcf-441c-d406-d963-97a1671825ec,3975766033,13468322591551862573
+2f6a6f71-b526-011f-59e0-5b84d6b7bf42,2710959835,13133510817786863800
+26f086b5-163e-7dbb-32eb-c218daf36dd7,3400327234,9370837142011377293
+c7f250ea-f9b2-c001-ba3e-48b108e7695c,4275574226,10856979609631932691
+5a9ea53c-2629-b536-e54f-5559128b2ab5,1592573719,4819428374112722966
+03059000-cfc4-e384-0806-f959622ac286,3008009198,12426258969372385857
+979795cb-b918-1f23-73e4-be41d7f1686c,3316221453,12399582684942793505
+540b6ec3-52df-ee3b-fb63-9f54dfbdc6ba,3061222084,14326877988522001364
+fa632223-f6ef-9ea1-8633-6486155a201a,2503049534,3315453513092814580
+2db4ccd9-ac3f-2d53-3cb9-e1e1dd9ebe3d,808963915,14756053833104973909
+16a7e278-e298-9643-f2f5-584796bf81d5,1424096542,13996049945383692309
+2bca12bf-0e86-0262-3ca4-b8cdd8b6fef0,2991737950,18372477181970990162
+253053f4-4ac7-8362-0720-e6cc93ed7725,3615799932,12913111985628982735
+2fb8100c-5c28-10df-7365-85889204ee5e,505646562,561254488439597822
+8d0cf781-38cc-eaa1-0cea-d96aa103aa3d,3639147036,361894708254700396
+0f72398b-3bd7-39b6-9f0f-34af52090da5,3827422288,8035938256424548550
+aec11b8c-377b-a1e3-756e-85722cdc50c3,1109539133,15732744886080721780
+0bf3bb23-988a-4d1b-aca1-77434cad9be5,2776812211,571860648228279446
+ff351e25-0e48-fa78-5c0d-48c324cade97,1969383244,5496988732938646890
+4f60d712-489b-92c3-a799-a144cd83a3e1,135001615,8346856746408153404
+79cb2387-8b71-fefa-64d7-05658565cac2,2478416981,8076062781296680003
+56ab5108-c8f7-5e89-6b6f-61150d8bb8b5,1427488621,11923552695386269221
+f82384ad-0cc1-e39f-3687-023a406b9e04,3362740204,17972581982566236687
+34832414-b373-87e6-7863-9d77657aea73,2666876440,3344717452564283084
+6ac05f34-e691-cad3-dc65-d87905e2df0d,348608012,9128703848038758625
+830ce2a3-2da6-9b55-6a0f-8e42103b8e24,2399490013,8536395649002067212
+7ee9681d-fc1a-18a3-d0c4-93ea0b81082e,2121235796,4556669058675753122
+9bc2bc8c-23da-a543-c0c1-133fbeed3c4a,4020944799,10849930484343381831
+265a42d0-2e78-45a0-ae3b-baa80c4c4c30,3472057401,2309501717933365515
+1820113d-7b5f-29a7-8a1a-e0075bdadaa0,4274418146,16292608119298362734
+881fe7ca-06e6-d8cb-2f1d-23543ba1f756,3344396149,5496403831620683387
+94172f55-c1dd-94c7-6db9-40fc75f1ff74,1936529603,11669357431859175465
+1bcbb5bd-a26a-a68b-2fcd-f84936648959,2713063316,14711802485601742778
+f4f1f607-216f-f18c-1cbd-77f8261e64f5,1734497337,5892668186366687599
+39fb7b30-02d9-269f-676d-0052bf7e4ec8,2188493275,2321526533123941758
+66f1d83b-8946-ddfb-f272-7d7f524526f0,231905620,11743269643837852691
+9d217a1b-70a8-1a3b-dbdf-6218cd9fe398,236062858,10575867156853463045
+d3eaf1d3-da0c-a9cd-5279-9a9ff6d948d9,669819651,12017979286185455742
+a69555f8-1bf2-7215-eba7-2c6a6fb5059b,834267834,12543027806990924647
+a2ac8ea0-30ae-45b6-9ff9-88ef760df6e9,1849959115,6444824376882772221
+f9f7cf56-abc7-6362-b5c2-e38cce1b979b,1124239020,18006046385762473142
+0ad6a895-96c1-993b-f572-9a5caa90ecf1,3091391158,4543975634322362876
+6afcb539-aa02-6833-fb17-e71e9f22648d,2417723120,9108639954512728814
+e31be6dd-4e16-0a18-ceeb-95ddc6cefdd9,711184883,415721723022436427
+3d151acf-c52e-44f5-cf85-c9a2ae8143bb,2004510600,6432773804378296703
+0473bcae-01f0-5bb7-97f1-9e1a4e6809fd,6524106,666076664855292761
+d5e993ff-4457-4cbe-d710-6f5526127757,96678913,14136999946524266338
+f9ea9646-09a2-a017-96c4-96fb925c0f56,739385588,3549495543155492956
+eb9bf5dd-a091-57e7-32a3-75d4aee3a3aa,3669726847,9292392986747831810
+fad100dc-dd7d-2ffa-680d-4c2d9c48ec68,1913584657,16728180683629800823
+45ba6a53-eff5-2bd5-9bde-cfef9eceda98,1575397700,1796245772161602283
+ccf6dfad-418f-60f3-2118-4b3f22e093ec,514521993,1998301717814208427
+f05a7b5d-e050-2c3f-f0f9-2c850e4aaec4,2825663728,9580931306427619246
+ba445322-cdb8-34f1-544a-2a552bfd6379,698354142,11665364261894157456
+795f6fb0-e100-70a4-7472-087fee1e43ca,4035857439,15577201959612509759
+41659347-c0f3-0385-c5d2-d3b2a0046e39,2860019817,13135379393992141123
+19371e62-4657-1c7c-4a80-dcbce21a9f04,1554287786,11461139297314715995
+cf2129db-7cdd-f152-494c-9b4b615b6239,2560934270,13356960310876809867
+7e02f403-12ec-cfc7-2de5-675acc93dde6,3933539561,11248667494610044392
+187f9cb0-d8be-bce4-0d42-5ceb5896c14f,4246917806,2419833756760449163
+80bd1096-1de5-f4c1-6bf8-da9925bcb99b,1017376517,17931338594622239007
+6a8dc9d1-465d-bc60-c8cf-a103a38ccefb,3061649789,8990425360636626989
+fc1440c1-ecf9-e71d-2360-72a6e4e8628f,4212892903,4124935894361897482
+bf3d3772-91ff-64bf-dc53-4e13eb879017,856322121,13385751932765386632
+e53b27f9-57ff-1b40-7cb6-2de219c429ff,447162387,17898378526287155947
+668bfeb8-af1c-b5fb-115a-91cbe146ec5b,196175284,14821614437637120145
+29ba57c3-c7de-4388-c9a0-0f674d41975b,3718214115,7780123146133219965
+575f8044-8955-44d3-34e2-988a46109241,1632665114,4427196692910801744
+a1c70d16-d485-13d2-03da-109bdcd1849d,440531116,3453143158185265908
+eb3f8865-14ff-564c-838f-22ee239e6973,4163421458,7752368066541768083
+69814d4b-aefc-7d9d-b05f-5024fe4f5f68,3281151133,4314261543973250703
+16fbd7d1-f4a3-f20b-9bd8-2641daf53a54,818976941,16017505211321742326
+715dfa64-799d-cd2d-f983-fce7e883af11,3770403272,13071070649646572337
+19ea7510-41a3-ff44-c521-f5b37301b6ec,4177309676,16114678129162306997
+a02ebba4-ce9b-c8ac-aae5-8932df2e1edf,1110418258,16325477679882983357
+aa98e2ff-7ff6-3f93-c427-f021a66c5247,3067724199,9390987712403478608
+090022eb-2057-c310-ff2f-90b68f538b98,1085007200,8733364426616762050
+7cb65f1f-8204-6ffd-d05f-aaf1f08945aa,3511242949,9941268938612522688
+e2b0c950-b828-92bc-709f-c8e5ae2caae5,1346298443,15211197298012618992
+99ef0aaf-9c58-5a5c-09db-7adbd4bdec55,2758388460,16215321509789011009
+5516fdfc-c9cf-5160-2a71-9173359622e9,335384752,14461669682714638089
+a8052134-7f22-635e-4360-f231484efa41,1437598859,3787694703862855335
+0ffd7bef-bbfa-bd63-b023-048cd39038a7,1258976433,6537496546638075263
+863d7161-6fdd-c849-3ea3-085d03e44a2b,2971510634,14691631520301916997
+9043b910-1aeb-558b-caea-7de1f792a57d,435993101,3656366290253204652
+278b80f1-2df3-f91a-ae9f-45d0fd9ae719,4139057317,10358018951583490997
+f732bb67-8ae9-989c-d29b-32a7427c9266,3648521417,11645374120594603260
+cf315fa1-b6c6-4d2f-2e56-4881099f9290,1632034868,15783114562076065442
+b35a7ab0-0802-7a2f-6b1c-c9daf783394f,3789804146,4258077578706949453
+48191352-7ddb-927c-34ee-905f63fe2801,1787723348,6123059861392961420
+0589ebea-3563-3213-5427-828251f63c3c,1889462199,14541787869014378015
+43172560-0ebb-7402-ced6-493ed10d7795,600812889,17481380477620292821
+b42feded-3d5e-24be-f4a6-454a2cf6e133,2070446400,11205358030882776529
+c3cf15bd-f606-8f6e-c920-a595c02b1d41,1434177980,9638051638380976065
+098eff57-b81e-1b4a-31d5-e08a63052ad5,2871080853,12724583869550887576
+ce7d134c-5e82-ee18-4c98-6c1b0744cf1f,2654264002,3933732003480024425
+c7276e5e-3955-2d5b-d889-00c40afa7325,539000930,9841872041927961620
+fffa5397-b924-4f07-375d-27822eb8e99a,2743728205,15636088689016324109
+2b20ae59-31c3-6b98-d120-ee2e7527aca3,2699058120,6487048136550048716
+76d6f4f6-bbde-65fc-596c-8fb1926c6fd4,3421939549,17661730188323087350
+3d2c58e1-7161-17c2-ab4a-d5d1aef53b4d,3064947404,12553552952106853635
+599fe730-4fb1-1e50-4162-69260b9b0171,485309220,13510795766943132109
+d0f3692d-94f1-2fd2-1658-80e95193974c,2715802272,10077238373149559244
+13c44eee-0588-bc45-3a3b-b9e0b85cd46b,3595885915,11891986859975459569
+cfa0f031-c28d-c5dc-cc9d-7d32debe30f3,1337813035,9186037692198581357
+4caaf66c-4322-381d-b33d-0ed81265958e,2722315302,7183511303724576765
+c8cd99fd-c454-1263-48a4-4a24338f1018,1164532208,12118923299111036276
+005909dc-cd22-69b1-4a7c-4a69222dbc11,1650425359,5846396598220812724
+5f42e872-0e27-dc42-c498-6e66d3733f88,802135977,12207105925078443587
+8977b7f8-841b-0fdf-affb-2a43cb74aa5c,4233966246,2430738495423519578
+bf40c92e-0e9a-fc0f-d43a-8f7d8183310f,4239937477,1442642406069358057
+4a80f53c-84fc-1b76-2335-4df087b82cf3,2614773894,2800337454985506839
+e6ee9ef3-862d-a6b0-2ddd-bbf7ad4ea62b,3623410694,7257690159160654483
+b49d2680-01f2-0d46-7618-48f50c7ad206,3297222294,270326237034375266
+8420d891-99f5-d008-34fc-9ffd51154078,153221091,4908345213279978503
+7f2b2f5a-e1a6-6560-79a6-b1215186c637,2038398447,12584554271176324694
+681769cb-2350-5df2-3964-8d7fee176ec2,2902510840,10145320077150222583
+1bfa8221-b31a-c7fc-2637-2b66bc3ba9ef,234863270,9303654383522588093
+dfd62421-bae3-f338-03fa-122c269fe3b2,3308772173,6012636950213785036
+3db6f57c-0712-e839-f65d-22524c200d43,2899818214,15903159665075358634
+7c863d02-32bc-0214-6fd9-ce7bd5c0d556,3527684238,16949878526757423205
+3cb4359a-8698-3563-0c28-71d853dcad24,3996742753,5677546344487344110
+32b34d16-b633-1def-0646-459e9900c661,1274637560,18276963617796417281
+b6624db5-3bf1-d822-b82b-bf803bee5b29,3461337002,17204459783725414486
+8465d256-7450-afce-24bf-2002342d8d77,429111224,8648816343616109868
+7887deb7-d5cf-8e5a-a028-6d8cba391815,1148624481,9180929025329954380
+c9d60685-5a6e-84e7-97cc-12ec1e28a8f2,1491233849,3853264915284191469
+eda5288e-fdc0-eb31-a716-52d3a192db6e,10715331,2229010795821317894
+0e260dd9-5cf0-8720-80e9-ddefe7dc9a72,3125417139,5228281987340262427
+5af122f0-0371-4dc7-4f13-6f50eddc6f8a,3403413365,3041010114087782156
+413e5518-5d43-9c7d-4647-ef308810cb63,2704128193,17806463259512654869
+801365d3-9034-35ab-9108-607958836feb,2960313073,10714540856551240392
+157d970d-e3e8-12c2-c1ac-f79cb99b7c34,3990957187,16145753110604372639
+92f3e56e-6d47-23eb-078c-e2ed3d9cc568,2611413635,6939207431783033365
+a6ea788c-b8b9-f042-e008-ddb17317ffef,1874084818,319439308041785975
+0f7eed0c-7840-772b-f8e5-bddbeff52f18,1833959810,10764597211727174014
+b60e1ce2-caa7-04c0-75d0-0e3f6f187694,3950429153,8141127252962001566
+b4ec00bf-7b63-d35e-14c5-c59518467cf1,1415254674,2937140674768940742
+4b94d8ae-12d1-1c52-87d6-1154876f1b8b,3253345393,7882646090014791094
+03b35bba-813f-c87c-5555-e349e94c3cb6,460271176,9878305940222705742
+9132c16b-0942-f47e-3320-e8ac10fc1bb5,1535194101,6196556282911318846
+e6848cdf-231c-49c5-94c6-7966e557a989,902692813,7754429916150627050
+8a62b1a9-f5fc-f1d4-2db8-eb7019a12a01,3395356715,13226815155412069980
+62d81996-5223-9bf9-4414-18c1dbfa659b,407396626,8289332567311037318
+f2d064ba-4c51-df6d-8fbc-a53e23d29ccd,4117380813,11075447842570163971
+3b869507-2142-6de9-39e3-309ef94f13f8,633477938,12152907386566902425
+f812236f-dd3b-a051-1e0c-3e2dec86974b,3152540702,5208924829392279795
+d951de6a-bcf8-cb6d-4244-036ac0ed4557,2862014207,10394880618839985244
+a07200d1-bec8-d206-7374-20126c91f483,601053317,82648061843437791
+b526fcaf-72fe-a076-e60a-00f0005e310d,3692709242,14223823631191161518
+e8de6ea8-6b5d-1034-7608-9ef41e2a2358,2943217157,13891490059902608318
+2f9df3be-08bf-9c8d-c7b7-caa804fa9036,1717345477,3419147799036834749
+caf187d9-018d-4e01-4a18-c9dac1a43912,395917366,5744280250306569191
+f0c98e0d-3960-23e2-e9d5-50c57dd2456a,775148089,14896760116824915505
+59a8a27b-11c6-4fd0-f51c-bc934508f64a,2126872253,9648643526857440261
+5d48ceca-6889-706f-6caf-8377e7a9af6e,3403869679,4840238359073824340
+57381f6c-9fa3-82ee-adbd-d635246ad5cd,1673534707,17556663200978981269
+a07b0a5f-847f-9e9d-4021-19dbc38e5510,2141494155,6119054769347209813
+923b1aac-0574-9207-b4ce-428e37db87e6,1287488594,6033074169076843562
+3223abad-4d29-d7b9-6dd9-59a021215d01,4280947122,12650287418641864340
+834d7f7e-13e1-866a-4419-5312670ee643,2769194794,8652964988369576604
+7503904a-03ea-5577-0f7b-3364ce733264,1971159824,16864342091390030686
+7809a981-b435-a302-563a-410d2d7fcde0,1075402956,17157226055745170287
+691c0620-7797-ff50-818e-f3d6807c0e1b,1959446432,1844468647657537940
+e7cd7887-f9ff-b651-76f3-9530b299e4b1,4035275305,3266620679170188434
+aa44acf0-4729-6b27-506b-6a8849419689,3238324519,13597120466275831071
+82295a0e-262a-f06d-cd5e-24ad915e2e8a,3806975108,7002187639463086606
+523f2113-0f9e-af12-110c-9621e6e1bb7e,3385642838,5439632926024960064
+7d9268d6-23f3-8fb7-9f64-62493ccea322,549032501,1951799696798750858
+6cccc3f9-182b-5f75-740c-eb2b8326d9f9,878537434,15537231447896289903
+b0a26dc7-e91a-4f06-4e4a-80888b8b7855,923008924,7873130668426390628
+4fc908fa-cace-3d64-a12e-36c6c204dfc5,202175764,8402984323234704943
+79a34c6f-3da0-810b-52c8-856b4e8d0795,1629666617,6486366880985205489
+12cfb94c-691e-0912-ce34-07eb600821b8,1619002902,7884232662254214951
+780e36eb-5e22-ee04-4413-72564dbf6bcf,2125810580,9400497815092458048
+5737bb7d-3ff6-77d2-2390-b93ddb49a627,2636982041,8250092782799186560
+3d333542-f9bc-fd62-faf6-dde905de5e1e,2820981319,10914518279498595984
+11f1d68d-e248-55b8-fe7f-ac2d099365ab,2979140759,897891959785894678
+64243812-27fc-e639-0611-032446320b68,3466119370,9981261776562347250
+0b37c7c6-5154-e7b2-a4e1-733e92ace346,4098993739,13355686708096660190
+0d9fdb81-f1a6-c741-e43f-5d37c1cce0c7,359490568,13513146769626969131
+ff169866-1287-5fe2-ae54-d7c05ebd8acc,1526932849,13252689297257868213
+e73dbe5b-e1a8-9fda-f575-786880776337,3075041168,16996919795894181142
+84406d6d-b07d-912c-a5e6-45468b727908,3779599626,12606413314279986048
+f1e8b65b-2299-4303-e5f0-0b734bc165d9,2351986699,1679554339327820463
+9d82adac-e7f6-c831-d387-7ff3401453d3,2997176707,16148048183539943225
+046f3063-7291-0ac9-c618-ce76cf626895,200591175,14539883366914123498
+5c38f2cd-9453-771d-53fa-be8e85b1ddab,4238018513,312060120693875752
+ade8aea8-2954-4202-d86b-90f321cde169,6250321,9990857641139534649
+5701eb6f-0a9b-fe64-012f-f979025a1790,3314288928,6122449983660870541
+6f334d6a-3adb-36b2-6bdd-947d3fbb701d,3402642924,15296273781046690032
+eb31f0c2-b8fd-b596-53d2-98df3cd54f39,3202483371,9945536045202647224
+2d406369-dad5-9d5c-0680-fc3a7ee85dee,4036083634,7592194244249072439
+b5ff6f51-d74f-5e9b-071a-cb43bf040e4e,1164881406,450656537050330225
+8ac5f712-4390-427f-e4f1-c214745ec3f2,557433491,17874076977299301737
+27aad432-a2fe-0a2a-16da-84bcd5e3210d,1890598488,10152223974164256485
+cb3882ed-4417-3269-c9c5-9e2c6215c4aa,343441149,6912484416898506213
+b5e9ca17-95d5-6404-bddf-f8df925d9c01,2459947753,14160879533986482675
+4a4900b6-a801-a60a-ab0e-da4cde2b122c,3571452590,6806780488031860064
+b5477221-f880-a58b-fe68-435afe5670df,1146925508,1339145539140968503
+f45cd957-21fa-9337-d5c1-d09070b5f8fd,3698530950,12090385001781264113
+c64569e0-a8e8-b001-60e2-e87223c2f28c,2878023264,4316703001962704973
+f1d3b251-0875-19fb-4af8-647b1e622854,1152754758,12109032272316756367
+82fc7a8e-2de3-6845-8701-20a11ebd8700,3064347007,470719914273468008
+e6ea237b-2400-42a8-ecaf-be188796c507,2246473066,1867811727532009674
+c75d3416-b93b-d752-d3cc-15454433c64a,191927539,11521953508991815086
+e8b3f42b-b447-205e-444a-12f1ae9997f4,2545096612,15387786195507666442
+317af9e5-ad06-12d6-0d97-8c8b31938149,3046665629,16058983129374675015
+f313cad9-d9d0-b8b4-bc11-49f637344c22,3686590072,12911560940516888910
+fca776a8-12f2-a2e3-c40b-3420e20bd8a8,3356315605,18055686661040961758
+67182463-4a54-4f38-a0fc-565f95d217c6,3864306285,13954358840934792609
+b17adb48-f3a3-9e8e-5490-5a44deccaf25,898607153,3880703435536431319
+dd03375c-4109-108a-474a-9081e55ec9f8,3474143590,9264566291167215100
+f147ce67-7644-6cde-05c2-c1ad6795414c,3527353693,13151252344664443336
+fea44639-c33e-b021-8eaa-fa3c922d2dd4,2259710352,11490509724164929381
+499b17ef-ef63-721d-23e0-3950308cadd6,3363261882,4116309568760872225
+21494b36-659e-fae4-5bc4-cdcade57d734,4203981521,8418737680401509353
+03aa77fb-b298-9109-0a2b-413d0b47b542,2926505477,17654383218970893093
+86d9a9bd-0ab7-3e3c-28f3-559fa7b1e26a,1055261723,17476605738632604447
+28e7571e-0e1f-ff0e-3a8c-583349886b9f,2999520928,4455571915515915539
+586dfdbc-30ad-552f-3940-233e4d661b46,2076298190,4341850792219867969
+b685de94-a437-7842-9d52-50e98eb93a96,121798999,6353101125784910131
+eb72c914-c4bf-8743-f75d-edc3ecc84686,3371268110,7535849544883555420
+74ba8241-258c-ab17-fa11-80dd6f2058ea,993705768,6000734004513515441
+e9f4c113-575f-3cc6-375c-5aec3faa0cce,3845009804,2366614219840225027
+09ff78f0-10ea-ae3d-1219-82f2a09bbf28,1285234598,14960186985232616671
+8e365db2-1afa-9a7a-f4d3-8c76dfd13ff2,1304421510,2307429270078569057
+3ca54549-f63e-1d74-a7cb-dfb1b3ae7cb4,3109693830,14109400242450022148
+951cebd0-1d7f-3be0-d1cd-a0f5309c4a7b,205681821,7520791987857449873
+8356512f-56f6-8dae-746c-757a55a61bf8,2850198450,13065392910870979598
+ff05c277-6611-284b-7822-cbd67da8b80d,1376017770,4046938086845317196
+bbc04aaa-a697-ba41-c419-1a05d67d3849,992054163,4603929125569852351
+a255e7cb-fdaf-7f37-880c-9bc31488bed3,2849744458,285782566794165562
+3babe4ba-2dc7-03ae-dccc-f7586f819fb1,2238530945,1675920297166159343
+bcc5bbfa-a0c9-1959-eadb-d980e9805fbe,3838343262,12527857947998900636
+c998ca33-d933-08d7-4b6f-01e8b33b4845,566165532,15868083357792953604
+feb5d180-715c-9ed8-09f4-1a9bbfe5136b,3156783628,6619270159692342179
+8a58e495-eedc-2188-15b6-47153fc37ddb,184289561,10268833452672094313
+7542d099-3ae3-28d5-89dd-99538cefca11,3996421952,17467363622113840688
+e2057568-ca71-1b29-589d-a6ac064cc943,1173048459,3396041339972017933
+9f3b1c05-19d1-cfed-5679-4cdaa66a6a34,799482271,14153841609317365496
+89e4fde2-a033-6dda-67f2-4b1e3059e4ad,1074858242,14986704573329711809
+d23fbdfe-09f7-7429-1ab0-1e64b7c421a3,1996172780,8967092591758539700
+a51cba33-88c6-ca53-5ec5-74e9301cc65f,2724731668,13523848899287340618
+6e144475-b175-9642-95a0-c0ed8bac423d,850291070,207423980779318110
+9c6a07e2-4cc4-df16-3c9e-3181d13b777e,3435668584,5746489247551498131
+cf237842-c27c-a213-5072-9eaecd6873e9,4017851196,13490842394659187297
+b327245a-45ae-4af9-4ed4-d58ecf2c1c88,3097132166,15195740369898962303
+c62aeab1-f818-132e-bffd-19d1611c1d10,2118179879,17323594803389145382
+08c830f5-0eaa-d206-ba59-3642dcf49c9e,4269048601,8892115095802110708
+96b58d09-88ec-db43-ea3b-094aafcfe41e,3799537107,16851463543075990567
+688e4b6d-fda2-e01e-4120-bfce5a6305e3,3076456329,2120698116588771525
+7ef80787-5cc8-6571-0790-219f877d3c95,225419716,12089011753662478561
+ee12fbd0-a710-328a-89c0-9e3a1418bcfb,1577966916,3021430785545432051
+20d0d1ef-a54f-ac6e-530f-24bac2e6dc3d,1885731184,4009680225288797398
+3d92eff3-a357-9c32-69b8-8902d3d25e91,3701585469,11742056906136807917
+14a23609-812a-675c-df28-35c2781b7d28,3361004258,6278426252537447179
+ee1ef9d7-bde7-e9f1-6d42-aff27cdd378d,1238196740,10014381214273987584
+df1dd69c-4b79-25f3-9b95-5684296610a4,3388183517,14604157351546943243
+60b20738-8ec2-24d7-6cfe-887558a16f81,2091646941,15173017052920250041
+8db92ac8-8687-3c57-c6f6-a36abb2ab310,2519727458,14212965720933333169
+5e437f9d-a3bb-9f77-1639-f3b200d4bf0f,3315455906,1975202572316058704
+744626b9-ea63-beff-ea34-ac2df69ab571,2251312258,14703305500677545733
+fa383d1f-6db5-1c49-3149-cc8313010048,3695359344,909497453921713586
+59416ea9-2b55-0b39-2307-36fc7adbd974,3932199771,8611080880842601452
+bab513a8-9e5c-8712-aad5-d321bdb07b19,2040660776,3898729938536083677
+c38b24a5-0449-dd4b-5499-d36ddf96a180,2818051584,5336461637288944539
+b44c03f8-b1b9-b43d-598a-579f72eea1a9,4152024913,14324072126308585012
+40859f3a-82b9-c3ea-da14-46e39bdf4a4f,3729746840,16477245658265241530
+85004e47-2b11-3302-046f-6a6da91e7dd2,2187002981,7631670352610243470
+875ebff8-5ab9-e9ba-c625-8ff78f9d7901,2365226653,1452331318221038193
+479ca03e-657d-d51b-09ac-5ef577a047be,2797010057,15113424971325372939
+18e021f8-3ea1-a205-9d70-631ad6102a94,718626111,16324298432005746300
+0d649d81-9aa1-ecb8-e732-d648f3f22704,1592726984,458197291983568261
+4ca1336c-07c1-9b31-7122-30f259aec5e8,3838759706,521983740060056642
+23b50e74-3341-8ac6-d5ac-b4c6a5b7c324,549682912,3275620846724571069
+47418f3c-b997-39b9-de8e-53a1adfa4e33,3888289115,200423630445216456
+52efa6b2-9e18-3330-4f37-ea585aafd72b,400341105,6828545998881141141
+9e2604ba-6703-61c7-cffa-0335be5300ed,1315446981,11069084821636756178
+eedbdd65-5aa2-0fc1-6443-26257c5365f3,454942481,4573987902944953366
+4b77a595-84be-420b-7272-2b15ffc7f809,1640619999,17368134868706743392
+bfd0f66e-734e-7ac1-56fb-8b9349e5160a,1145222873,11306417363816599373
+aab6aba6-cfdc-7f10-1e6e-6e6bbe6ee4bf,252720842,7336573323748068450
+a986da21-3157-4993-2b88-2451588d8de9,1217537568,17451189929433538082
+a3a01a36-bf5f-e6ae-442a-06113233be0b,639319366,15638314075817975841
+7ef6dc40-f550-dcd6-c95a-2c971c608b55,3103020544,840511195033232329
+e0c3b412-464f-f655-f489-504d66b91457,557628930,18422037631936034698
+a9f618f8-7deb-eeab-0cbb-0696716fd828,3646727715,536067083875456736
+8b27a5cf-2db9-9ea2-ef38-7e9da435e100,1929070719,12924552970892951
+eb8295fc-302c-2a65-dcf1-4fd93a038eb0,568842724,9749405097551065339
+a831f62b-a466-422d-dbc0-69f08d138724,186549371,12364349422531126569
+d08621af-3565-06d8-cde3-ac6502641c4a,834628937,4599684632903636579
+a02f98b4-851e-d89f-e145-8be3bace1433,1139740614,1010756724934627264
+4b54dc20-de70-d991-cdc1-e0d9db2d96ab,1498895231,3952580393512507642
+ebcebc9d-d5a6-bfe5-2ab5-6e3428a7a3ab,265097069,12125233398628047414
+4029ff38-57e8-030b-0fdd-6b2e08d42fb2,20964485,16465817714290514641
+9a0ce286-adc0-541e-7c00-826d78e74789,572271536,11524839053220082560
+f753e10a-be80-fca1-1290-44977520ca1c,2381340872,1758681655813630521
+7fe5796b-0a8c-de2f-b1d1-95db3c780009,482096302,12011042667435976879
+af2195df-4694-7e7b-8d49-c0429b131b3b,159343796,14286208637579953353
+78cda05a-fcc7-dcaf-872f-142f9729fb5c,3219529440,1240674632312301286
+19d02159-7ddc-e309-0b8d-ad4b3e1ca85c,1498676238,4702344104167430589
+ab36ca26-4b25-3a7c-cc77-e89e6a135a65,729852369,2206196298520887200
+05fee093-fe10-3cab-6ee6-f8e8b67435ed,1468434143,18421189400743058865
+2263ba1f-9e8c-67b3-1260-32ff4b9157f3,89447397,16875508130196879009
+643d0556-fdca-4c2a-f36e-4e485c7ffe46,4225527378,9534357546021223937
+c349c66b-0e3d-1cb8-ab00-1686b8ca0d5c,3148663643,3352996007945680473
+9633df0f-815a-9d72-2977-5b5893a4fbcf,2026751869,5237983628998646702
+ae1fe556-1c0f-4261-0284-a46fbcf75a37,2189391743,1610363239670506843
+b8876891-30bf-9718-fb46-c8eac53e7855,2302953875,9098975316230153257
+23615cfa-477f-7659-7147-0616ba54d7b9,882988094,13869690617977644061
+98da3f3a-cb4d-1cff-7fe4-5353f23ed813,2172088204,17130536869046171752
+16ff12cf-7d4d-4d6b-9a97-a59485e27b7e,3053853012,8000365860956599144
+4b294b4b-bf21-171d-35a6-fc6e2bceed79,1011186044,10961858201054310486
+de84de11-8253-6d94-bb21-826bd1d612eb,4052614971,7595368009092774861
+5ad8b112-253c-d9cc-57d5-8d67cf6fe3c8,3996603300,15115112378558659880
+65c408e6-4ef7-5be5-bd88-49a36604efd7,3525091686,6609257214523181808
+90f54a9c-21f1-7f14-cddc-ff2e1fbc162a,3053738181,7589815853919465947
+8ef32bcb-3c3a-0d03-9ef0-3b8bb314436d,2550345587,7617548730606134865
+5e52039c-da12-2c83-ab89-471441ff3889,3654364874,15729450846923495478
+87d654d7-80b5-9511-5c14-5451c3e265d1,1859345348,18227631897824006877
+211e1894-a461-8e73-cd54-5b335170247e,3938935836,16237569241876507746
+cac32f65-9ee3-3b04-f521-36bbc4dc008d,3047366837,1138265419303770300
+746ecd9a-da1f-4ff3-b40c-0f13cfd7b630,3605411843,15035614253628315740
+36220038-99fa-2038-ff8d-5b9729c9cde7,2713279555,1511646422243248913
+bf05f878-d2aa-97ea-c6f7-bbf475fc3f3c,741206414,2595473617018766547
+ef14a787-a4ab-b34a-fe78-974f7594a1be,1343245272,3241406981886480199
+5938b1dd-c4e5-19b3-7aef-25e3d5921d6b,4141096502,5120111093675188051
+576ef9e5-4db1-882a-8971-3785f1ad3121,462193657,17491835298226627076
+3259d425-b093-6616-410e-a747456f39e2,2275342127,15339070150406581430
+b25aa534-f076-75c0-7ae3-12c9734ba6fd,2571117636,13436970783280793346
+5f03a49e-f778-deb3-cd04-c38f409b0ef6,2109630527,6068054469841698674
+b44defd4-8e2a-b5fb-815a-718b536100cc,389807609,18365687392616756432
+b4539de8-d4df-f860-51bd-4fa5816f8853,3132489617,3674913192002733001
+9048963a-9419-db70-edbb-a4c5d2bc4433,649750853,5279918506584331329
+3ecf6485-d552-0c69-3307-2786f8728a04,957894444,5114120740428862346
+13a29b6d-4c50-d104-33e1-a6aee4b4b924,1350330067,13938541423585898465
+3c601439-578d-fb25-763f-96dc29f5ae8f,3845110697,7229850751614945432
+5191b8bf-fc06-556e-bda4-1891eb5b9ea6,2273955749,8969800528743612287
+c8a51ec7-13a2-81ea-cb30-8180bd242450,1779641647,2642966740114486774
+9b32fbb2-4210-0eba-46aa-c1989f8a3bdb,2693323280,11503992589448026579
+35afae33-8110-b707-1c21-6ae1702e8fe0,3531844466,15848590834381554007
+c25c939f-1f5b-5488-8b1d-998664b6cfdf,2793097346,13553970373419282939
+9f935209-e4e0-1bda-e1f6-bb860a55c81b,2020736108,5041616876961647674
+b44f333b-1616-b642-cd8f-51ed185da54d,1512134297,7548896856502659784
+8f983f2d-baf2-4bc6-6f2f-bbc019c6059c,4105555363,5694624401289604200
+baa079a2-a9ef-15b2-2ed5-9a10ed0c2135,2126386462,14575455194696647022
+564d5ee2-f741-8c17-dcdd-7c748f785df8,2301501229,14262157601564384363
+f4e69fef-37d0-b9cc-40fe-719886c4b19f,3536762947,60590096119438967
+f8ec1d40-5f3d-f27a-7738-b1d86d2ed7bd,467998321,1709399111919875198
+6ac848ec-7b2a-08ed-9a24-acd4e2f96f87,2798680835,2898261432647402220
+21271384-a2e0-d812-a325-8ce0d75ac9da,1888473207,9553387341995037964
+ae19b5ea-f424-83c8-9e4e-f30cb9de472b,633928483,14965256437950186875
+6ccb3129-2915-cc7e-aad6-917939f42371,1151204159,6241122324061008894
+e718de51-4d40-b9ee-dba3-f5379108d86d,3573646633,15996546386071469958
+af330342-ccf9-1553-a28c-e38caf8f06e9,733529548,6515509110756104323
+f65e58d7-d094-f271-799d-d59b241edf35,155054642,7076892087685586862
+012d2924-1480-27ff-e93c-7c692f7c9f4c,913642014,3988588173568093622
+4d6b41ab-a74c-6f98-659c-7a981bae8add,211793278,14756359246736913941
+ecc168cc-3a4e-fb9a-b809-09a07c72405d,3259484042,10075673679844853094
+62b36c31-1757-09b1-86af-430962f61564,2983390550,14241778293685173356
+a340ccb8-f9f1-d504-ff58-fe95212d3545,3037975757,17487866968184019953
+d6dc9bd4-5048-8d97-ca99-2fc77be8bdb7,1628789039,17623564911264267111
+1bfc1f8a-e141-503d-0f55-70a5c4fd3e75,2505551833,178089741900827778
+7ffb4106-2bc7-5f2c-d16d-01a6be553a49,2856451906,1469187455048282207
+d1aeaca0-4f8b-e956-80cb-4bf59930432e,1687258675,2399346848991971666
+3a26168e-d3eb-9223-890e-5c44b250031d,3199871047,18142176758930868653
+cb327618-e733-4ac1-c241-e0d3365fe22c,3410236514,11279515151312194186
+a17b5a30-e3fb-7479-2f2e-0852819e9770,686949043,8489653687263288186
+5004a7cf-9dd0-da64-21b8-d8e15802f2c2,2114634344,16546994405155836895
+97a4904e-a8fd-442e-13a2-7679b66a1817,2822468078,8020495800527512874
+f3bfdfd5-da15-4bf3-e0d5-9068ab5c896e,3524515045,3981500741905479757
+7cc31f65-7860-80d6-524d-02d15f32fd45,3249400606,8075595929725010819
+5e388ee6-98e2-f281-804c-50d5769f3ed9,759400411,10746858432717256065
+011733cc-4101-9e3c-72f9-c00192506e12,771717292,6739999896393060066
+c1fa0e95-625f-4056-bcae-5aa28737d2b7,1043801778,12782297542991187695
+f87a6782-f60c-b5dd-92a0-39dac2f2dc0f,1856070255,10614553130500046395
+2bd13aab-d7c8-d17c-79b4-b5b0512727ef,3915649557,119287974329333083
+f908d6b1-985d-e552-485f-df5e653b9c45,198186729,15189137029022309150
+4a806c06-8097-312f-8ac2-a7b28c7179d1,1938673184,16168139116509474113
+f6984cee-d2ce-7f77-8e30-2a81a9767d79,664118177,12229544586678178331
+b4a5db80-eef7-0127-aa34-fd38cfd5de77,295364894,16113572084734520321
+9570359c-7b90-1a69-a34b-4196f5166a1f,34812072,6566530662606414496
+69783e4e-1c6e-fbda-4a3c-73e3214bd7a7,4020948544,16566360072910296306
+c94ace26-3b07-dfe7-3315-0177cd06309d,3460824115,9357635888438385099
+37397ea3-a74c-d9de-0bf9-aceb7a2d01b5,2044022216,101070479015947363
+c7a7676e-0d9e-9add-d336-1ec294c06dfa,2838477861,4978357184794853166
+7cb4beb8-4993-3855-54c2-8b889c4f0dfd,2424902744,4546548722078699188
+4a4e0de0-33d8-6209-c89b-38959374ad9d,2898125345,10727317176898792352
+212d8070-e01c-3139-b93c-18208b9c52d8,783154022,11015826906290580155
+8519d3eb-9d36-5805-946a-1fd5424962c7,1868931759,9959935444738506638
+6f9b418b-e358-4dfa-1d72-a648f3cc77f3,3294689376,1304567623302992366
+f8d83ed2-348d-4ae2-8326-6340a9355780,2169957169,12838844020853352880
+01ada6b7-84ae-9155-5949-0526b26121fa,58620073,4846621775762703292
+4e665b2d-f12e-a273-df5d-21ed713a44c6,1305577590,12370368246114339469
+fd000e62-af7c-d9ca-a1ef-8e390d4467d4,1382666201,13194101215402318029
+d288e9bb-d332-9493-8e48-aff2e2e5c7c1,3297394097,1061044258898031626
+cfe4a75a-1d1d-ae69-327f-eb07e05bca48,2121922783,5950541215436484117
+50168c0c-b299-494f-5ad9-9ec1e2636628,1665653897,13097417740432347862
+5f14f639-a2cd-5f38-07ad-3281c4167ff7,3633572531,6489173091213187495
+4c5499bd-cdf1-4f6e-1ac8-d4de2faa7fab,2726517737,16652366613920196454
+37719983-bcc4-6242-f860-239427bb250a,2146135473,10562832619037665599
+f6fe0683-e652-f62d-8491-9ea281797d33,1761537253,4452267362279240084
+37cbbf01-0c85-414d-f4ae-c6b695114ab0,854060790,15232361706574302414
+a8b76d3c-8e10-a325-2629-202ced048eff,263297983,18375629588413803013
+0efdaadb-ab02-19ee-16c4-a721ca1035e7,1063403037,11948543237785925630
+2992e5b9-b30f-f4e7-dff4-24f29ce1ca54,483572527,12049634967608249607
+2a9fc1d8-7481-c9e3-71b0-5ecbca0bba47,3535598038,2606756963228090299
+9e188609-1554-4712-4632-802555bc4816,3415226332,16086749259998276634
+1bb7a657-c36a-dbf7-d71d-f04676169d52,2407845552,3818538318593150253
+a5489631-7fd5-4730-1d33-888d451f9beb,2050453636,3693957690754265792
+8874d753-b767-9b1e-ed11-df08903e9229,431925239,11460028999414138978
+fe7a62e9-9633-3bed-4661-9d13607ac668,1878142746,2904426096240418047
+7d49d0b6-95d8-b6bc-7db9-f9c027d4e997,3525203667,9056269986822811012
+d71ec078-75cf-98ca-6deb-164d60e2ea30,1162029696,18308023653238353791
+e30dc923-f998-0d26-f612-ff6a480338a0,2903777371,8085169386884825470
+bda5cbcc-869d-f0cb-b41c-8704e6965311,1619437281,10302350236269483288
+82818605-4fbe-e017-f34d-9b15d0721b3b,3009394977,18228312556606071316
+fe8fa9c4-3978-3ef9-40b8-ab4d24db5ed0,2223397006,9396509080347486628
+02928c46-94ae-c7ea-b432-0b39d7550d1d,90514415,5160632028677500489
+757f52cc-5804-c296-dd83-4338cf0d93d6,499653212,16425911502945204317
+d8dd307e-3da9-a125-da0f-b3f06d9b118a,1241198044,5891917808099888093
+277066c3-a27b-b679-2bbb-6c059ba0a367,687809566,17351549031276540773
+102c3781-3bad-c260-d9ec-53c66e6e3df9,712059445,3151420003711942508
+bae97efb-ec56-f2c8-529c-c7e6a5e39d70,3047953393,16727957027679821926
+4a2e6865-1143-9563-749a-caa593b6868d,2943484076,15314745965991284306
+4119b979-c87b-a530-0171-9302d9c63dd2,3829339470,14051765417276512476
+af414143-e740-01c0-9028-daad561a1458,3598470113,17768854908855575899
+5a134940-4ba2-d96e-4dfa-6cc1baa7d361,3828630374,16087751386937847778
+6b0d2ef3-24f7-5212-b6f3-bf50bd86edea,1077967465,5397991488917591264
+512c58a2-e8d4-c7c9-59ae-8a5d59b85dd7,1475446421,7442949436596345277
+77e4fbcc-c396-6cfa-006f-11c8437006f6,297530668,7488217427869173196
+5311751b-9bd3-b275-fbd5-bcc323d90b6a,480949906,13821498049559605932
+da43e005-3b64-bcf2-cb3d-5cca77fef71e,3697271654,18307722990791357979
+6e8723a3-21a3-8a2d-4487-eb4d74d032eb,2297416007,2874101071099174631
+208895c2-f45f-b8e7-7bfd-beb247180106,105762191,328868908337264350
+68659af0-5795-9bf3-1d8b-65b64b62e216,427832245,5665836818099834395
+59c31728-3659-27a7-331f-2a7b84a72449,3196466646,6403727017239706375
+fafe5592-9ec9-1635-2a14-1fb663fb6c33,1582872715,9430634051685499234
+aa4837e0-66ad-7aaf-5118-37335f3bc636,3109201267,14916257934158437578
+59b97297-38d5-8ac3-05bf-d99dca21a08b,2919799384,18030139341865342914
+e1454732-54c0-f543-b87f-6c93778c055d,682542979,2802838234541299255
+db651185-aad9-e234-7675-4b70dad21d71,2689571184,4614955525523618584
+3580890d-b902-899d-307f-4dbf3b9e27e0,650193219,9555080898711178434
+ec334a71-5da7-e0d8-d08a-c1c7259f14b6,3846062073,17796607846441071951
+8028b265-5d5a-d32b-4ffe-278afd20ab3f,2253512366,4491760330648580595
+9237430a-b1ff-f2f0-d8fd-945c1cc46db9,2542770663,17047020006538416407
+9ffcb1d4-2f16-c562-5aa9-d1e60891b0c4,728434426,3136844456712881426
+9f85d2e9-6a83-f732-7fdb-c503f94da1e2,217622045,15747351627376586474
+f82c54b8-dac0-ab8a-1973-c54bd6dc4dc1,3129309456,13876281810211228881
+0f36e441-95d9-0430-ac70-de0244a5b34e,1973403407,1880920036395890426
+310e2f7d-09df-78ae-4d62-51730c819319,692035146,14246577057253957237
+2fee0853-d5a7-ebbe-3ea1-ac57d7ab4713,2485447547,3077821928090973263
+60795c8d-670a-a750-c8be-2f0ae105b20c,848874107,4520570670774916669
+1246e8ae-461e-f07f-ddb7-9a597c7e2ae5,1662896786,8910174748197407783
+3821cb25-5fd1-1a19-3de8-c0b5d2b1e16c,3330154119,12082660819588477482
+045a90fd-aabe-c76f-5fc7-d5de2594efc2,1167683247,13362944112810243951
+20a66af1-7499-9961-cd0e-b8f07b1bb55d,2632660013,15822636251307567872
+bb1c0d42-8312-924b-48ab-8f9ebad73b85,2657231675,3454627915880695055
+8c63638b-d5a9-378f-7961-43c31296cdc0,3246342011,17539535619385445969
+cd3ac762-7f7e-1d6b-c590-13a79258865e,15082130,16592476556750228120
+3753b13e-d051-116a-1e68-e89045dc6cbe,3814461021,17860834089736817276
+0508ad8b-e9b6-795b-f8d5-a44f8685314f,3266391244,3972110445593720897
+7c28aec3-4015-3b81-ffcd-5e1a252c2d0e,2690442828,14482619593472412180
+ede00891-c78d-23db-e051-59ff74bf773a,3691087803,13410891007656083713
+2464a7e6-9e46-6507-2ad1-a867feabe236,2860062891,3379557529433684431
+625e9abf-d062-fb5b-bb4a-903ffafd6b3a,3536500048,13214881450323910946
+06139066-730f-612e-54a9-1a7ccf150995,4029682846,17073664456045563916
+e248bec8-971b-6ff6-18c6-d496777aa252,1098043612,17832512239264371682
+18fb2e0e-b3d1-b903-df64-4083dd431bf9,1947030124,2267323315712395846
+69fb0d7a-7cf9-b10d-a673-28e462f0989d,741268380,17074573706479780108
+ff2dc47d-1687-da26-26a2-bbd2f3b57208,3921331739,12017797937219734883
+7d9d70be-7f55-1703-216a-69e341891141,2620439745,17781154684742613068
+c40d0ff7-98be-b697-1b0d-087f307eeb8f,3206083283,10058122726731389
+a3f40db5-c95c-8009-0e1d-f4d6f270ed6f,202989475,17079759750360351890
+c6693a6b-eeab-c698-caee-086b9696b108,2727989508,1317567476914915009
+1e3768da-399f-a0b5-5f11-3e2aa2ccfd8f,315889806,5769229272099784069
+844c02a8-2ea6-8163-c565-ad2271fa575d,3076308397,1748058510999537129
+50969a83-b7bc-5f83-eabb-4399c6f462aa,3661256628,13031675136481378795
+d0886e2b-92e7-da61-84a4-08859d09ed16,2706456985,16696400316461938858
+19975a21-e8cf-f25f-5084-391ddd4812a1,3975790993,3335128725738844776
+75521b56-3a05-d936-f4d9-7e15fecebd5f,3913715557,2896959813338551581
+beefc11d-c9e9-0512-d4a3-6ea2707a51fb,3705570351,16165577514234772511
+c17d4f98-879c-d5a1-05a2-eb566de604cc,1973179613,2287128574674717362
+30692272-1312-a6e2-bf6c-7323ef01d148,4234929605,4215594050031066483
+4a7c214d-df0c-5eb0-7415-53b3081e8d8c,1181288142,2395661251162597964
+07cbe4c4-86dd-59eb-6c98-311cdafc95b5,2600711326,4313618726001427117
+a5bbba4d-75c8-99ed-3b18-c18f3a96f186,4217739882,10942381912717403621
+88a1c495-4522-8dcd-4946-1f878c111211,3269924147,293458913956302472
+aa404351-c596-3e70-cfe4-20360adb42be,3932798244,3078025892916644454
+f152d3b8-2a5c-0bf2-006d-7d343f259282,4086247075,14043921312202492431
+6462c056-9291-5203-d7d9-fbc588d6bb6d,4150216450,10336538726873180443
+04dd5ef2-e04e-6d6b-c0ec-fc395f1bc0e3,825990172,14563284253675846592
+a0291b7e-6d0c-282e-4174-1e6bf4ebda0a,2539455138,10812840862966784284
+834fb48c-bb45-4111-e727-011100b3a841,2988187478,4982595261506239050
+7b47af98-a438-6b20-4c02-bd9ac9a8de73,3505039309,18228971290995761380
+cc284d2a-0302-c3a6-2170-a44c6c355772,2874326708,13345664577963776523
+8a26869f-8ed5-87c8-4e70-bd352c0dc54d,1695603799,16039083009186216043
+d0b544fb-2d06-3ca1-e7ca-12779a2c29c9,4191022952,1960986076113355053
+fc769dfa-b56d-8cc7-e432-0c9fd1410004,1705895545,3403397179639908356
+465a42c9-ee32-dde3-1657-e07db1bd542c,2627262514,14810512942107165524
+16758cbc-c687-e617-da70-1ead4c1c4a3c,580627090,14383836923612658926
+69f2182d-38c8-b68d-21b4-1b7eda47a8da,478326964,8693025167087081957
+7491fdad-cf22-977a-c182-8ba17e8e3e2a,3754214889,5312414172508556736
+b9803a50-e334-9fae-7198-b6ecaf2ef026,3481661844,7649952124533099254
+a921f46b-027a-3faf-fd9a-de2fe3b6e77b,3347947434,8752536442016911791
+334bbad3-39ef-6a3d-689a-f1e9fb651e79,3648473140,15470414767143160571
+bd30c8c9-01d1-9c6e-05f0-2ab77dd35951,414730993,12927316497784753959
+368a3f24-322f-d922-6faf-855f79f774ef,2095973245,14980195218492566146
+4fdefffc-d033-59de-3ae2-ed14613457cb,844176919,15652926201560109578
+9bff78b7-f0df-a474-33f7-f190b97c5819,2532139640,6805469142575890782
+5cf4f82d-4acd-80c0-097f-aa9da3411dd9,544491557,15232015220049240069
+2990e0f4-e315-d9f2-2356-d1bfeaebc2cb,3178123056,3973714134602622744
+63fd9b65-a3c4-19f4-d15b-0c02201749d5,1494355291,5102098868268526065
+6ca72846-1e2e-5d23-3489-8bf00127ae91,1458498988,5079605284851868847
+5696133c-fdcd-fa25-133b-99c354791f3f,1937905552,16870715273061873023
+03c415ea-f723-7d51-4ae3-e96ec41a9f3e,1728108620,4990468154854125528
+1c99a9fd-4107-ba4e-d963-ce017f33796e,1640757603,18288678600610335147
+cb152893-dc96-9014-cd5f-f467ffb1ac6b,2344700905,14057540071418825011
+f328c5fe-f6c0-5850-7912-72f7636a8e0b,901565230,9251569244506996895
+a0e35447-c23c-3599-5d17-23a9babd9147,2871049603,16367932795543583163
+a2e8b2e4-1b3f-c8fd-4a15-c854be60daf2,1979263107,12148521234222103340
+d8d680ca-e077-2e20-1853-d2e72de97e14,503296637,14452199485740184405
+f6928278-376d-fdb0-18f4-e972721337e0,4225311845,5840470296419874947
+ec06ba4e-430a-ec2c-4e10-7f4376f58af6,3242966321,15169379493695807464
+7cfd757d-a50e-1dc7-7335-15cd2ee6de6c,211398438,5377161967979312714
+5872d7a1-d609-6506-526a-fba050625f8f,2623779186,3213336251869120033
+9c9b2060-eaf4-df0c-39ba-7f6f898cd09d,27810168,18056966720203079263
+1ea83c4b-40ee-c9ed-bb1a-c869ec09ee6c,1844701564,11839932988115765500
+4edf0046-0c21-bd3e-a429-0af62435325d,4048562726,16903114094534712439
+58674669-482c-acae-5546-91240a42c852,3910669935,3492492529439358927
+4f7f3664-299a-e749-a370-91cebe47b05a,3565304400,2879325737201104101
+4e9b7126-7545-072e-0703-6b663371c9db,4180998131,3697902594237610441
+d87f6230-4305-1eb3-9a61-8fafcbc71cc5,2014675400,5067036304359159444
+4057ec26-3b03-6041-15c8-4061c3cfd333,299133810,12437733598230421790
+78cc862e-c009-7557-4aaf-d523e966434f,3978592449,17241054201312337935
+94d4c7c8-3f0d-bb38-63c0-1f0e6c2bc575,113662908,14257638532255292964
+8e57347a-3a72-aebd-c64b-6b92858266f0,2016355420,18027390237773003552
+f32bc971-343a-1918-0cd7-26b290e617b1,2186980472,15230466694554240783
+3ccfa8e7-9717-9434-964e-6535acce2f6f,1431003277,13505912481025838024
+965f5622-569e-7d5e-1381-6770c67de70b,1159379039,9343175488681996600
+920e769c-3c15-a2d8-a782-0d1635b58f6c,3489257648,8860059326098117770
+454b78f3-abda-8c55-c198-e75e20cc8b98,3024061069,13579997542126465664
+72a836a1-909d-f53b-b8ee-ef32b56661ee,3792346147,1484254016023797028
+40f9f608-10d6-19d0-4c73-8367a5a99b34,2057785085,10423589421889856502
+fd69016a-16e1-7050-993a-3fb9be7c514d,2403722590,12917956423039726283
+ec5d91bb-55ff-a73b-d7f4-7b5c0cb5a42f,1547566508,1481759536352785607
+13cad5fc-d03f-5998-d06d-f34804c037db,3086287391,1195224250554548278
+f2932f39-98e3-3678-b8c4-cc75589ceff6,551697291,1444371533350106139
+3fdc7fa3-7736-c961-2800-b6304a41ce6e,3273611816,6810758665254546341
+108e3def-c598-15d5-a705-6d4e0d946eef,2516830627,6061832115449970025
+d0370742-1399-3c29-5647-73e7d6bb54e0,3515487930,3539106144547848431
+f06543b7-2b28-638f-3b39-a309f87b634b,3719041736,3147264158309831419
+8e743392-595e-574e-a96f-3626c29f92ee,2802595026,4682138286621751224
+dffe02d8-c197-baf4-dab6-04c6da8e9dfc,2523221413,4667094710629209804
+9e58f6c0-adad-fa32-8345-823dbe669fa5,3506029419,13355901154130412953
+91ab5adf-7d0b-e204-e5e9-70dd776f1e85,3033608855,5191491674538600781
+4eed4f68-9ec5-126f-8c0f-4e9850547f1f,3565550982,3647237122923409182
+e38a4a99-1e62-3075-4c2e-c354bf5ef710,3892182885,17031362482789325285
+b51c6478-eeb9-844e-bc11-30588372ac47,3581860537,7449144455294701192
+ea396b33-af79-20f5-2728-435c146a4ec2,599710669,7243707443991344514
+0133ef49-ce69-d3e2-dd55-da1571065dcb,3812900083,14255407245195880534
+5f30001e-b423-55b8-747e-4355919081b1,3975149166,13880479333300933632
+6c8e3a52-e6ca-e9cc-eed4-fcb74bcaea50,498318392,6316886787863889251
+40bf42c7-4538-f9c6-76d5-ad4e80011285,116302962,10504804156373093322
+62f080df-fcae-de82-8cd7-318ad4069c71,1897719478,14931827559155828066
+a2b737c2-5107-6028-62c4-0084c2bd4db4,861410678,8810135627590338974
+f1701a18-6232-ca23-4bbd-c5754b79d71d,817248728,8072967328815234464
+1bd83104-76ef-057b-9ba4-3a5e09a45ff8,3112388909,7659037173605236662
+b8009006-374e-4bc6-ead1-209c83837577,434459772,1485161169157572846
+45a7f2dd-84b4-f2ef-3d9f-70c986086591,882205770,17081618073445876696
+c85c04a4-d8de-02b0-66f6-f7e92c17c9bb,4186658131,7890460457609541192
+f2ebf7df-6a3c-68d4-9d43-f533fc3baacf,3168527432,5911186540581253142
+91fdbcef-91ee-86b9-7c0d-9e70658034c7,2665256167,1226060407821664903
+75b08e6d-8726-fe63-eecd-757a2c2268dd,3018190123,1249833477326079763
+b0c1c2f5-daeb-49fc-7ff3-f33efad0e6be,4149452234,6701439423648853210
+75ad46be-8f7f-9ecb-d08e-176878487a63,4264167123,4788644961698657430
+aef510af-80f9-bd7d-adc4-9d432dea99e9,184101695,15515035039280543079
+a37d64d9-8f26-7602-3bb8-535f108c1ada,1928771167,12083203471140538245
+87c3de0c-8951-3ab0-c10d-17807e6406c2,1334310801,6232736207878471384
+8554209a-96c0-a4d4-c1a8-fd9c031f05bf,2309613008,11931508890438937676
+d79e4f28-a5a9-78b0-3402-456cacda9e2b,1150310293,1851544119490955257
+105560f0-5070-e47d-dc1d-51b2b596342f,4204522075,14052405651539809978
+25122ce8-80bf-0750-f728-ee51b0594916,466673620,6484335135733536228
+7d00e817-1250-b783-195a-fd3dd3d4f074,3809609292,1602167420947855057
+2f83c51c-6662-68e8-711b-d3260ed64af2,343771847,1509606959505937229
+7b0ded95-3a35-0673-4517-18b79f906f37,4265999246,11243456309229727457
+a27ceec0-8cbe-f02f-ddb0-bd5d1df1857d,525808629,11663739636630977813
+40f69a72-4f97-5051-ceaf-66d3a15692c9,2238276879,2253047327101941515
+62b8064b-6266-fbd0-faaf-fdfefba4e56d,3207323338,16549882702053332227
+fff933ac-158a-a189-52dd-fe5af800caa3,912069633,17550950466267042267
+706c50d6-60b5-6cb8-26dc-77fe301176d5,3589832509,16028337819377488707
+cf87bac5-524d-992f-d767-9a6c07df1353,1211275450,10355274352360919354
+0a088736-a13b-06fc-db52-a84e4318a352,1739800015,3255366060383199749
+5e6cd963-8a0d-9f17-3a37-b913e5687650,1269674807,8560219649445199153
+d0aeb3a5-5ff8-1367-f72d-febe712d3076,1116097349,5765421929487282587
+7d5eb389-eae7-8150-d03d-8f5de033d69d,3750720653,9995053699586157820
+82470bf6-d2b3-8c86-9b0d-9c8ba7a66f4a,563434784,8131985512613661064
+66d1715d-3875-5d3b-461e-601ebb3da705,3008285612,14005966968039380740
+3403da2b-c8bb-94a6-932b-88dcbc29d4e7,145273851,3136277269036362546
+f5767ccd-7d11-0d43-3f2b-496c51eb83a0,3610992903,416813993749149032
+3520d15b-547c-299e-c467-63165ac4fa46,3914747707,15171466703393389851
+dc6662ae-ad02-39c5-8aed-c87fc1273146,4255082774,16097977936182566144
+55b5acb6-89e1-e50b-8675-24c11f4a58a6,773859552,12446664161710343673
+9d1c57c4-aadc-e3ec-99ea-44cadba082b4,1130825824,15407588990803577947
+8fcd79ca-687e-1b9d-9c9e-6b22588d2445,55075089,5726098709939537243
+edef3ea1-2053-a594-3286-5dde241efb31,1612721403,6928197943451651502
+7cbe0ba4-5a36-da03-fd5f-5d4cb84b1dbb,2323497466,16898457290302725064
+2d7645a6-5033-51e2-a554-c8736edf023d,3709742430,3846077312425940979
+65a0ffb9-849b-ad34-3330-c59aed875fd8,2063628834,18391123824667228126
+90e99822-e4ce-c7bc-7a2c-66f8feaf27e7,786983474,12994809512578506650
+21b4f5af-b792-b784-6f57-1e0af08c8f45,1174858304,2255868609618104822
+f1a3dfdd-6183-d273-1cd6-127ce9d9c99f,1060870666,14280066535341847364
+4cc4d361-2602-ba46-2a96-4540e9ee9456,2428323515,1814270775560628033
+b1657eb7-c1bf-eb90-1ef1-91f1945d0a1c,2894226375,8823789986677172296
+8e4945dd-13e0-c84b-fe71-a0b50a33c4b9,2750356007,465951440588060935
+1074a47f-2094-6019-0715-4f51a50f2eb3,2761759936,8483609146943407802
+666a3cb7-dbd6-2e4f-aa6a-effecfd0df22,650491922,8958567165638498367
+aadfc3d2-a73a-2b19-1efc-1f372d77cae7,4122510761,8683140111227974486
+7ce2d1f7-5d32-b2da-c5a8-0dd63f9e7428,4094507899,16591240431425850063
+9fc9f6c8-1bad-4f08-c4a9-5d0bcbf8c102,569907316,8674389823779781535
+a1d8b004-81f3-bba0-d7e8-3c4b4a5b1537,4150898523,1930784296858447633
+580baef8-acef-b837-ca9d-dd0d67f85387,4017719413,16861387558588418884
+91d7b9cb-901b-9cf3-4494-9ea2aeca9881,81223945,11862552376083051292
+f26e26bb-180b-5cc1-b5f9-1ce574318723,1806998123,10822051038400391859
+d853bd23-832b-15e2-987a-57ce7104fd83,383841010,13786352486594365003
+881d0377-cabe-6d82-9c0e-a19f1ca8cf76,687742036,5480497312265638097
+2239bc89-e0de-adf0-eee7-fc3dac47c854,2878305741,14997219049231191941
+a87f1b06-5269-6eba-fe66-b695eea0c097,1514367179,2101707171033241704
+3b8ca666-708f-c59a-a887-29ad80b56e17,993035157,11691872095349509042
+3c3a4daf-f4ca-84dd-b788-c8a197721b33,158859025,3098164839460722649
+4ad0119c-c9e1-fa5f-e1ea-687879e247d3,2327910704,4561106280756456752
+2f23e9b9-023c-9dd5-ca64-b1f52fe0a0f2,3711939616,2251563611024617007
+201738c6-0da2-e33b-c982-28ca75097424,190224681,9664855244601389571
+49574b8e-2aed-b3e5-ee83-2d234d6f1bd0,3394939739,3224812527207177924
+fd04a92d-0aa5-cb0d-6830-10fcf43d3b94,810111202,6555355041262670706
+76e49019-c0d2-9d95-e552-54fa98130855,1883433695,16770713769030886920
+6e02158e-c226-75f6-c424-1a6174339af3,479014219,5192397357901629701
+5e1f3572-f6d2-1dad-a2d3-a041b895e152,3512472775,2788688897459531780
+bfb30733-f167-5d18-867a-0eaf41f04872,2573303961,8628874822966380501
+212e0f2b-9b63-99e3-7d50-166f6164aaa5,1207885577,13671102941131080585
+59bc2144-de7c-1365-1d56-c5c8d469ddbe,3034876361,16485774392212323819
+e464c19d-20ca-bfd3-faeb-7026cd7dd3b2,4155592064,2931940731582565741
+c0986279-4b7e-d0c3-e506-85facf8129fa,1499370889,12947528899201817037
+c973aedb-081a-c99d-db82-abb659d808a1,915108286,11350845571249997787
+4c6738fd-f42c-128b-7960-8997eef49e2e,3989328831,13581199276315414677
+667feef9-0760-1e4f-6d36-eb848f477340,310274609,2884618925788332273
+ce48d041-53d2-1afb-a8ba-590f54e61939,1405979773,7800186088002777993
+c86aba91-45f1-1334-7b30-98d28ab7c4bd,2180918693,1295878064235917001
+126674a3-17b3-a5c6-1b8e-8c2feede4f8a,1109030114,6716153695379541259
+b39e3f4f-ad3d-582b-5e4c-9c92a4a537f9,3831288604,11015327060263840010
+8de54842-be4a-c859-8a4a-b4d379c6eba8,2974262759,4836880111440219605
+6493e1a4-f5ed-ed76-7d7a-530bf6b50d06,3607101586,2676645212677024600
+e361e94d-551a-ef1e-de42-d9c0fad4c09f,554270608,16173565668715455573
+b4e614ac-b3d5-b8c6-6269-b5a124929ca7,13766935,12124209785810834149
+b466f1f9-1da3-5687-e947-556c472d2157,1314634627,10212097845510241894
+0c9c1303-d625-f3e2-3a0e-548222ebbf07,3298869530,6754127972329436230
+3dc78b35-d9d0-758b-a02c-44d337da293f,1224775126,14677076295706694196
+9c83e477-e72a-4b42-bec4-4d1be98a56d1,3837305329,4862151779504103798
+c96847cc-06ab-597d-4ebe-10d48d149277,68948394,10099251245974141926
+17eefbce-68db-8de5-bdce-0bebb06a33de,657798673,18081662929109538008
+f472496f-9de1-1bd8-81e6-73f479183da1,1437430508,8365796853173304713
+9f35fa2a-5411-1801-d58d-253a9cb42f41,335207573,7102598122119460816
+c360fb42-7142-05e1-bb12-51625216ce8f,2499363517,11806544324455252571
+b93f0c85-75ef-7da0-4fc8-9cc081135ebc,39307717,12113303747793227311
+eab43aac-5507-5197-0318-049e9fc8d87f,340141172,4862585194413670191
+f7416681-8e6f-cc94-7064-60d288d0ec45,600749212,14683928591385651075
+dc4c93f2-f6c3-7574-f708-9caf02e129d4,2067143532,1589311987635443812
+08f0cce4-d724-25a3-212d-ea783ef2b0b9,4139343872,1412516431967909330
+db0cb0ca-83a8-7a91-bbbc-d8c24b19f47f,2341294837,16038251101254474817
+6a596775-428f-185c-9b2e-44a5fc2f5e1f,3795037763,13921743460636938710
+7c44af44-5ea3-eadc-6b44-512feb7af411,1489195774,9439644946877183120
+f1d91830-328b-9509-eb86-777297449380,264798026,2701577148375798314
+70aa0b01-55de-9fe9-26e0-3962f2563db9,2403864860,5825097266376301499
+bc23c28d-600f-eb3d-7fbd-d45b2177ce0b,2795031861,9096765981772283530
+3d068327-9c14-34a3-fb57-5ab87a4f284b,3900566467,16365170156951897945
+de50af8e-499e-9f30-ee82-ff2402845a4a,2495311303,12983536234693798743
+af614f06-3739-541d-764f-d601616d4d1d,3744989816,10863342834887408445
+3dfb67fd-f36b-de42-e5e2-8e30dd473a82,2555032430,16266634658835417628
+73b98ac0-a102-2adc-71dd-ec480175f773,169963871,8940115599723985705
+f7238756-09a5-dd26-242a-cc9d9f12628a,1403859204,2562362713226517126
+259af287-77e1-ae11-a8ac-5f4f2f36b025,3257715608,11744528498771420802
+a9da2c7e-8f76-9b17-2575-4e875b05fdb5,3105470237,7118614871727104686
+d02b5daf-6487-a038-0330-bf590bf68635,2840708049,1842708992599391894
+1cf1a923-22ce-e8a9-85dd-343d8e28445b,3361335945,16673360311747069225
+94f1d7e4-8c5a-474f-edcd-fa3706452483,4161654640,3721722910533279952
+bcc7fabd-8257-eb78-b250-64f414673c4a,1189594110,8189205158009133707
+5fb8e5fe-2f10-655a-70a2-f388ad16eba5,718476652,4188545225018362153
+01520b4b-009a-3fa8-6bc2-dae4eb0b516d,912550227,15318794102138917981
+c1688a40-7411-18f4-8ca9-45cc06d0e2d6,1074543128,4182488941722621033
+086d4aec-bb10-d0e0-36fc-38ff4d9a4dec,2974188054,634862725060637467
+71fe224a-c56e-12da-68e2-ef5c6b4db2cc,851332901,4481627039845995126
+543752f5-62eb-b0e8-d778-65dbede5228d,1791434930,7051391337865078295
+7aabe4df-9769-ae1d-cd7e-cbc351a93acc,3871017468,3729131406286248365
+99cf6d22-547d-e903-4958-62f522dbc305,348901088,14755659227847300738
+bcc384e2-1eba-3efe-3268-a4ab2eb8237b,1242832790,8459186742201252312
+00c4956f-418b-439f-773e-cd4aa1445125,2146839081,6963167641767193565
+9716bc55-6f22-93df-6b98-a357c8ba6005,2800881228,4401433089814006726
+5a400063-ed05-b4d3-163c-ff9893395bfc,1678639838,6966687792426756121
+f3ddf8e3-e36c-9378-eff1-35b11527897f,696830190,3555784614878594498
+211f917d-0211-1bd1-2a5b-9119a1769c9a,974816087,10538425216766367403
+d59a00e4-4e73-64de-7869-83f7a0633dc4,471150840,671182962183998977
+4749e324-469c-5765-e8dd-86d5ef6aaef6,2992682738,3080590840117714464
+bea87a4e-e23f-b9a9-eebb-ec01d7fd8863,4137802039,10762730486373611595
+d02dfd95-9926-ce21-7953-ea4d163a1ef0,1252747002,8847446412543826146
+0e6bd9dd-1850-2288-6130-f9a401b893a4,1092752011,17236147831160885006
+653d1622-428c-887f-0159-fd3481beba13,2230469102,12266371375116969095
+1d7a35f6-cdd6-390e-6a46-a80468826d81,1138799387,13161627113131679430
+88313704-1395-ac35-f0bc-529cf2411ab7,123587386,18378712522128565226
+53a15728-1582-a2d3-f278-91264e2cbd7c,2713971921,17526434233013472366
+c4bab9f3-07ba-f7bc-1437-4508369437b9,2318443951,13143674679176546704
+d44535fc-c994-8699-0498-9772d60f9dfe,179730450,6984162821480062632
+174c1d99-c131-a08a-4cdf-521947a56004,1330053843,12267860842971744249
+eb23968c-f62b-1f83-6612-dfcaa410142f,2301273331,5171268970779477034
+e9b203a4-099f-2c32-6a99-28da80f8768c,2025438483,6227284716941228956
+74df7dac-4f21-3db8-f592-4ef293083c58,1745663424,2421665576284262703
+b1fcedd5-b6ae-c24f-b4f7-ed3ef4748da3,2124186624,12909178584192700539
+3507c08e-a8bb-eeec-55d1-138fbbe172ce,933323043,3278055680394693595
+1c7419f1-5134-18b9-add8-ec96c83090b6,2596637314,3198761450401340747
+6dd94380-47ef-ce7b-8ca2-4dd0b8cb50f3,1023663319,14168538264911295784
+f3befb9a-d4b3-a9d3-1b9e-2c247f026129,2015036693,11160299803697639105
+53faf2d0-5974-6274-f196-898355a30279,2413574516,17610786888097314613
+f896fd4a-4777-94f0-bff1-b4726627efef,2360561528,8323142774938902136
+910cb519-482f-e47c-52fa-e4f3cd918c67,1902925502,2600157821292985853
+6b70ed11-7b20-746e-deed-5038441ac279,1370504283,141247612695609877
+2eee013a-4db1-6cdc-0670-a8f90a6ce7a2,2339434222,8461183179890045790
+4ecee4a3-f547-8403-2f6b-9f55f51243fe,667899080,727663721609567250
+ad07e822-605d-a509-ba2d-ac6a9fb6ed44,1492501945,12397871168493256271
+a643c5da-d41b-3fdb-031e-913c94aa6df5,3841423463,15672819866461974966
+d8e2d55d-5403-b47e-46f6-29848d21d516,1568043157,13567519816550813600
+48c21ea0-e2d1-d3e1-54d5-2739b0ca4d06,18717060,12091649121810984110
+96201bc4-7c8c-cd2e-da19-7014bf69efd8,3019421036,12891379642061731782
+7170ff05-a6ce-c753-727e-674e3eb74b22,4058431595,13187455877791642151
+2671f34a-9417-1e2f-de80-9eb39fce2abc,1321058273,2424854127445090444
+e6ff060d-3539-3c5e-7df3-2ac3f6087e7d,3015448957,4268859322489182755
+9bfc898f-152a-25f6-0fa8-b9727f67be47,482276555,9439987064372239610
+72174ff5-00cc-17cf-8485-3034200f6eca,770671492,11147614986905125702
+3b688be9-e2db-dadc-03ba-5011f18c6fdb,3134644600,3439792449456507648
+8b010e0c-a969-c784-80e6-8a51e77303fc,3457695186,7704427502455801954
+0b5d0835-7e38-952b-bedd-6549b5fa429f,4027412563,16135136645111259155
+31cf59ed-3ccd-eca7-d62e-7e7ead2c3a30,2560434123,5684789685202631036
+e71288ea-797a-d031-b36b-47b28cfa85c6,3795177027,5948170454982166884
+0f0aa7b9-9ebb-073b-39ef-499119fba589,2704991785,12709889853916233330
+0c7411ef-7b4e-fe79-b71c-302ac561e13f,2324917269,9042012785385805659
+f6949188-8efb-a54e-591f-181fa08e2053,2656706431,10113068193674333268
+e95647ef-c555-58e6-6f36-ed294fe590a8,4242067405,3467513870456009553
+2acc6dc8-4aca-6c58-74c7-87707aa3f862,3993408454,5372457706124878232
+70a38e9f-c31e-694c-a2ff-cc0db626160e,2441474721,9861121455569710286
+9a15c7aa-bd6b-edd1-3c0c-abbd240c31b3,693866398,8094142201078420042
+2d1b2566-0b43-bc96-0c8f-a8d9b49b56eb,2334236384,15218385393436764051
+033b4d59-7417-88f7-75df-0dd1cf7d826f,3454647084,7327789669274366143
+99b9a629-03c4-dae9-97ba-db92e69756c9,397937998,1217848537875906966
+f40f7184-7dd2-141e-8b38-d089afce9080,4017047233,17687120678115322904
+16cf08be-3085-a5f5-9052-6248c6c8913f,1066711432,11350615364166754040
+c5652ba7-5f20-2bf2-b55a-307688d98db7,2226975888,1621979126445287756
+4176f613-cf7d-0684-34f5-5dd24601fdc1,1531696174,3658251092105588109
+c5144d54-2945-2860-e79e-872ad6f7abac,2144307062,11798160071619230913
+540ee15d-89ae-5073-a023-1ad1bceaafbe,1578503941,5755850920070999920
+f18bdbac-b7fa-51d8-b3f7-7b81665ce9e1,618525800,7324609950314846785
+e858598b-e44b-2bf0-eb91-95a384dd8800,3599691815,9682484152439045468
+ac51466d-3465-4a57-daca-853be7847804,3654089274,9781339438022373197
+3bdcf619-052c-77f4-5cc8-eb0a480cca43,1715850049,5067275911796604492
+e9864928-8a51-9440-c405-1447472e512e,3956473078,13134331424198038388
+4f0b2f23-d237-05c5-3ea1-d8c0a87214fd,339234464,12563587235144981678
+62f17531-cb02-07a6-3ce9-143425eb8ef1,748094825,6994780278256150659
+d382d3c2-6909-b262-be02-1bcd8439596f,1236840039,9177360742506359366
+9c64e14f-db58-4f68-26a2-1904644e9341,2834198905,17687993262972865372
+424086c6-88da-41ba-7160-0283e04936c4,1851995404,609744647882699319
+477437e3-dfe8-7f77-eeec-f11780567939,2010982849,2441532660002452960
+0582e794-f458-4346-000d-db33a66c91ed,3620201778,8744378837175265232
+1a929a41-1bd2-ec44-91c7-b3f315659631,4113108165,14105088030500476013
+95017edf-7339-e9ad-0bec-cefa7a0fc35c,625494205,17986225087531293167
+606c28b7-6232-96c1-5bf9-8c92bbd314fa,1449279276,11003194391966788658
+dae6c97f-c14b-efcc-9276-a5c9a0856b86,2725196160,10354820560784940243
+71495b03-e75a-60d2-2d7e-3836b36ea298,3201647821,421608760880525958
+2eedc41e-cfc0-fa81-cbad-c6770495851e,2267165548,16111561211256046417
+3aa61493-80ab-fff9-2ba4-a5cf1268e50d,2923182642,6250124561537887279
+34f1970a-3772-8a8c-9bcb-a39cc1336035,536054981,2342534259243878154
+3a907e5e-98dd-eabe-0051-e465c768096e,2259782480,13482858715049654389
+37995a66-b891-8443-01fa-f25ca22777c7,909796419,9830550932868931931
+98bd6ea4-7d80-8f5b-d018-bede087a3174,2941890047,16671600059547136888
+ae8e95b2-61a6-af5e-eca6-9c2a69ca6759,1189583235,14044755245969340509
+e414bba4-3ac2-fbd6-9b9c-78be93644dc5,1810334898,5314666091861625907
+92d63554-26aa-50b1-cdd5-7b4073fe8f06,3092504130,13699198885882301545
+62503104-2c58-1203-e947-08d59027852b,939461593,14315322525014888398
+b7a2423a-77bc-db4f-e1bb-9bba869eaf15,3451779255,8736895209186326443
+a2e0b6a0-fe02-6b02-e58a-01be249044f3,3877976527,11703917482014785040
+78facd33-55b0-b655-dd2f-2bf7041f2f82,822469978,8658265674856688923
+1c2ee75f-3de7-d324-13ca-269bed6f262a,3020850301,3746385851812624281
+d38cf424-003c-5eba-08e5-1f38b4dea58d,1660512553,263306268097566482
+9797ae49-2c3c-08e4-04f6-f594ebd3e9b2,3557167087,17356044774347313687
+ee45dbee-c6cd-631d-76a5-73e09fc3c22f,2379434302,8902701025393213595
+b19d540b-f8d6-d492-8063-824c4f55c8b4,1203852651,5129238875957485991
+64dbcbfc-a963-6c0b-5cad-86c89a77c154,1816509729,1416160748383583576
+8390d1ad-ac40-6b0f-9570-2077f6e3c66e,1558212212,2236786138709371195
+4ebc9abe-8862-e872-50a6-d3469d2bf030,3340657303,15919627959553726422
+f68a7b17-0b4f-2e26-8ce1-c42b983cabaf,1861351859,16249242169933422115
+0c58c8a0-8bf8-4cf3-0734-70376e430213,2382004483,5825529917756885606
+457df14d-7df2-ff32-4308-33978190f9c0,3189837608,6510794297924036773
+7253906a-9f94-3653-4186-f07849248d65,1349031146,3770411444367133654
+a2f6e5b6-2b1c-7fb8-4ed9-3bbc08f590b0,248476076,5151208934452683425
+f5f4b8d5-834d-81e7-0a93-fba93c7cf0e1,1340479622,14196254909554266081
+66bbf447-acdc-970c-765a-be34043d5549,1097402188,1419048150901228893
+a9adcdc7-3cd1-aefe-b554-a7a13ae51e41,2562398911,15929727139195405474
+dd4974cd-c726-98af-72bf-3c17828398ea,1919605132,10469393055249824523
+cef8ac31-970a-cb9b-0ed5-9edc3981f02b,2074053609,16509067702553350747
+8028432d-422c-0101-7fb2-7cec2906c646,4268174297,8245292018568769023
+2593b429-c81f-8e23-e800-b79dd6095fbd,3139454889,7702882842192034289
+03358fc9-367f-2305-129c-0bcecee23c6c,3052484096,461385299757185260
+7508b267-87c7-3424-611e-2d8a89917465,2865788756,16645262727444154644
+d648a301-fe6a-bf58-8d10-32cd25d2435b,1561323803,16392237487059770537
+7d7a8dc8-ecf7-586e-033e-3e15ce2aaef7,2653785574,14218792151439105557
+03d723ec-a481-c3e8-98ef-202c6e6be725,813225962,11207631070815483119
+af0e8841-b6d7-48a9-d1e4-f648486672eb,1524988926,17482527148994474335
+fd3ed79e-8c9b-dbfc-2dce-a47202515815,1717717045,15100800595661083136
+10b94730-6328-a037-683c-7a26a4091eed,1627734985,16080342929431856392
+97075ca2-b229-384a-d8ae-2eaf4e75adeb,1006434534,12533314948155225664
+d19ca788-6752-9e05-af20-d93fd4fcf546,341837782,10130745532836186140
+fe7ca88d-a360-bbe4-c25c-809446f1648d,1738033406,10052232954756391642
+03c9341a-ef0a-f8bf-b537-efe9c2eafffa,1358102183,4111676064772155066
+b66c17e1-a939-a017-3eef-40af0aaf6d0c,203042750,6822423647804642187
+a2a7bf51-b96f-e7ae-d2a2-8d430f8dc736,2869342767,17380237161004301591
+3dadd78e-08ee-922a-61c8-263d0f1f33a8,4129376896,3503018030374576439
+0e20a196-e88a-93fc-7616-d200d20f31d9,444656769,2683629561790495826
+d7d88961-e5db-5f38-40bd-4799c384a279,3146245931,14354173100485816346
+6ae7ebfc-b8b2-42b8-adfa-cf8f1d12eae6,2351578164,11006471774107899316
+7dfbc4ad-b1f7-1342-67fe-ab2d3ec839ee,3396647666,4602110094080189464
+3f446bef-6a1e-8833-559c-278b22fdf483,2529806993,15615202742389144757
+d306896b-e634-1740-0c8d-60ae7ea915d7,2246419209,4442024682580335072
+8877f94a-c928-d527-bdf7-7801c7efc328,2271186640,3437663600171386876
+d691b0a9-b127-b56b-a6f5-caca1b93caed,960977767,14282875038831625085
+2097637d-2d1a-7b43-418a-ea258f8333d5,3122180415,10213741370750322421
+bdc1bca8-64f2-014c-f6d8-cb54557c709a,3243338070,7849810141168632910
+3802e17f-1c03-5d32-94fe-67e399cbaf3b,4168890993,7766207289617836642
+cc44cbdf-6418-3a09-31d3-64558236da5b,2994984819,6543420718184163089
+891a2275-2ad3-a666-94de-f756fa291174,64572641,2233638330579288032
+060dd51b-5e3d-96e4-c8f2-e474be465fe4,3702679478,14919611488007791443
+ea4d355d-f4d7-c19f-6447-02e80745d4b5,237775787,13528800188256903521
+cac514e6-9d30-9f20-1fa0-a37e758bbe03,2674639509,17686867523899486631
+eafb04ca-4ae0-3afa-6fe0-0a96f4814eb5,2483268615,7218241913292251637
+c6af2af6-d1e0-0b6c-fba5-0f8ec36e01bc,4120216767,1903157730350094314
+07061e0f-ab95-3501-5a1b-3b9c217f70ec,1405717297,6394786379855819089
+1b9342dc-29e8-7dd8-cfec-a6db3c01b467,1456333483,18191328695146066910
+627a90b4-6e87-6a37-0a2c-227a8e161909,1498192638,8605893817116422134
+b3bb18ef-246c-0399-ce10-06a97801cbf9,311358862,16896123787327821722
+ae792430-86d8-c0eb-7b24-2c09e252ec60,185215453,12808987653473450447
+370d4e58-2ed6-3969-e477-627d5b45b41e,1964400654,2953221928886921384
+3a4ca14e-635a-805c-dbf7-c2b1bc53ed3b,3605345443,1581018951783095650
+182d61c9-60d9-6cf8-73b3-3ca83251b821,3893940089,11354915098011601936
+6f874112-0169-0e26-a972-cb15e8bf1b07,2332582476,3915820139782012239
+3c5dddf1-f31a-c811-b592-428ef3d5e61f,1558248357,13232100506781315358
+75b89d0f-ddc6-05bf-1a39-900fad99189c,126700232,12639578212510121002
+631990ec-dc4f-2f6a-3f5a-8d6b80919a92,931870941,14978069526701345037
+464b999f-1fb5-2c55-a7c1-89df1e5ae49c,4167155976,77625542669430615
+0f7e05ca-defe-6c0f-9a6b-185777e4e803,2461613861,7949447861159999628
+84e0fb8d-292b-7379-452e-8605d31975cf,3894568117,6342550988323495538
+3ba72a05-f898-8aa4-e504-9a2f2f57581f,1130280303,11636031189843288803
+a7ce2e6c-ffaf-ea18-3b2e-ae280d807acb,2394915051,14427613763555359719
+f9cec87c-6cdb-414a-3002-b042a9a85757,3569696800,9067605686383381015
+5da26d05-75b0-c4a3-60c2-26e4e6a87b1b,2610548556,5193348482576484811
+44267816-922f-2509-a853-cab7cb492e3b,1706446657,8095981421356468521
+51d65c0b-54b3-c916-9bad-92f732681342,1349004786,13397436298980690818
+38743916-ac59-4170-bde3-dc8082c98c57,294112507,1594672608924521618
+5b7f7637-6c1d-37d7-aa2d-95f5adc6ca89,2457087008,16261220133092190577
+90b95720-4154-55c9-34af-35b899532546,3454729689,16873998086324007854
+dae27678-937f-56b6-756c-9c91fea8584f,2250410670,2515938661029202061
+fdb2943d-dbbb-97dc-2429-2812680b0e87,507574459,10561444244214054282
+480cd980-9ee4-f4b9-5eed-3848ddf68bab,330928399,1510355784701300027
+40698e1e-038b-c1c7-1fa7-a521d6842ae7,3199418096,4195830022948624252
+9e4174b2-3ec2-0956-eae1-f0c98a09e0b8,4169625694,10498463318239930315
+c73c0d3d-f7f1-2dab-ffdc-2a646354675e,2486783576,14967159101302101202
+dcde3a3f-887f-c1f3-f541-3ba26343cd78,3195577492,4759004748824183578
+6e14d218-7e95-3b21-4cbe-720a8ceb701f,3250488655,2583062626933410109
+d80c7c1d-c75b-62bc-9874-48bee734d1e9,1000442421,2584447000863789463
+532f222b-882a-b289-b9f6-854d64e94e98,484153702,17124374043832110923
+3be29b25-df25-c639-49f3-da087fc10813,418329391,17344805879292822274
+7499aa9c-196a-80d4-bb2b-6198ca5b376f,1048505654,3979139433886395294
+23d30ebd-4661-2c88-f05d-32a92f73b9cd,3441295768,14476663043606608723
+64bc0cb7-bd9b-16c8-2518-909900a40310,2293202626,1813525856352043353
+597ffb36-9e8b-8180-19a7-0aac7a39b40c,2136798311,17006831422889863287
+be767a21-8d2b-e4ca-1637-ac67fa9acb3e,1660818339,8703261868835881072
+b2a60e70-8893-c0d8-15a2-e5db83e1a008,4118824970,16060276180266369122
+a11abddc-e352-33d2-ab38-acbd88ba4886,3963194084,3796977790500192627
+ab76d135-7a2d-f4ea-3078-28cb098ecabf,3168204562,6098254529118728503
+d67c12a4-3b7a-1d22-3417-f58cc1cf9b06,2206694499,4556869955507727083
+7c763d0d-01cf-00e2-df46-b5f021179421,3063440980,2934564410761796238
+c18f6f18-65f9-d2e8-846f-e09aa367094f,3037607240,14215152595903178083
+992ab10e-180f-6c4b-b426-7a42f7ffa29b,1214945328,9125577379210111673
+5527ec99-7a3a-5a24-3eb6-3f304b8765a4,2796699006,11268203634797987132
+de9ca310-65bf-e031-e38e-86c5fba03fa0,1873096528,11563483339374195850
+124fa1dc-da80-dfcf-2a12-6345f5d3020f,4141566599,6371084837408704526
+d4f0cd83-0af9-9294-f42e-46c8a32fcdb6,1337457280,1680271663001406626
+bca465f8-3539-4bdc-e652-3806f909f2bd,1254422225,6362860486677131995
+3d1fd029-06a4-0580-c651-3bf5f04b0357,3423545111,10125074649031417824
+a5a06beb-dcda-351f-5e4b-8ab16d8980f7,1426217654,12990985998203958787
+b894bf68-1343-6426-c21b-2eda094bfd87,2346742964,4176710010782555095
+76303ef2-36a9-2d0d-cbb9-d9631ea15be7,2459251382,2222237813939809885
+8f94fcdc-a3c8-444a-efaa-42637daa4d7b,259090767,995596199885798702
+f85f39a4-6d62-5bd6-6322-0d70ebbbe10c,3214830496,1342292092169500661
+76c89f27-ab35-a4d8-57a8-abe992973d48,1553683224,2676876468330106772
+4e6cfedf-516d-2fea-4f20-9b12ad746e35,1955678028,15408592541933850592
+e8ec5d36-0070-f875-8ae9-f3412bedc80d,2636541752,9581696607576573100
+2200b319-eace-56f9-3d08-9902065abf55,3169335489,4451918602432313002
+2f1a7034-6b92-982e-a4d7-d6d4d848d336,1240905183,8866171665559374992
+82babd5b-4354-bc8f-a9f3-0c4013f9eb55,278295417,3538552679957322340
+beb9c9fc-8e6a-2010-c936-24176a4e09d7,2411583818,2107223522782946061
+344f5f03-a984-da01-660f-1f7b1467acc7,2599691418,1591393870676808936
+39e35d8c-162d-35a1-8448-94ff604f28f9,3313523668,9147221216377978933
+0c806794-355c-f9e4-7520-e0eb1ef3b415,3518127737,14130688237824743041
+9d76a537-0bcc-1418-0c85-765c96693271,3782982068,16159347485375993586
+38d8e76c-ebd5-7fee-2e5c-5597cecf74cd,2574242898,286967643384108556
+196e3ece-27e9-1783-0719-05740a7b123c,3545925977,1139626965621153128
+511fdc20-39d6-936f-f2d8-2c562a2f008d,2266672795,4665367059591286790
+893cfa43-b065-ca9a-4b2b-7eadef3ba9ad,4274112547,9823827908511439053
+94d4eca4-8eee-e501-6d49-bb8490a14e46,3976796830,17163311096147556345
+9ff6ece2-9fb2-3707-f69e-5766a35f98b2,2495176560,8045716147312991256
+6287f108-e43f-5ed2-f3f6-a2d53848e8a2,1888329634,8587814673234850660
+b6eebdf1-c007-59ce-f07e-b4d4b144e35b,3471576459,903975904614828291
+b5a87195-9b29-4e1b-74a4-04b3a4060a62,230213630,11165550950375308806
+3f2917f0-41d8-335c-4f12-fca1f5fc7648,1029124357,15124447881991108015
+55aac438-aab3-2375-3bfa-928462a1c585,2333648740,4071573193468193111
+c9f36509-3060-8da9-8745-8b3200ffb9a3,1491639143,1252092059259385388
+3dce1f7c-acaa-6a93-e127-b2900d51b619,3482489035,134170067946952999
+3e1d3555-6876-4251-b5dd-ca99d95d9f4d,732162288,5810816386500289457
+780b1f76-3450-7090-f585-bd170b8062c8,401128870,6452794653617538201
+81558905-7277-59a5-2bf1-785c78a6511e,4092055455,10729571166166406967
+e9731bdd-c160-d975-74c7-4fbde9a040ca,2168310662,1448138502823163448
+2b9f6a51-c70b-7ab9-1e0f-4f5a504ab681,2458800730,2389386067722985573
+541e7d3a-7ebe-e2d8-ff09-0419ce3d9b98,1258277322,12606372131664321745
+cb32cfbd-d151-492d-c3c3-1266d98c8112,1685449558,17486449396046760505
+1a1b66cf-10e2-197b-f236-d2f851dfc4f7,2113208048,328819313265524620
+06934ac6-f5e3-175b-fbda-8f3e8dde681c,3238440052,10338385464204465105
+a13691ac-ca29-22d7-2c46-ba4f390b52be,3242039375,16955833305516075443
+f00aee18-0d39-ba8d-6869-6ac3967ea0cd,2832414188,2958716626738783251
+f5645807-bccf-790b-839b-0aabc0eab7b3,2491282674,16985061523711082718
+14b50938-4703-0a59-38ee-b60065049dfb,61799446,4881345125981705780
+fa68c609-476b-d91e-b6e5-e5e634b422cc,4121470743,14956698860148780885
+9ab16714-20b4-373c-e4e8-777e1f40034b,3124434775,1758252128183708422
+4a6a00c2-6fce-c332-d441-2a8c1c3e7ac7,3301467805,5143476279644077479
+d895c36c-f019-203e-b599-b024dbfe7ec2,2143474304,8722265792022731558
+5a609db7-964c-2f02-aa33-2b64559dc573,1965471322,1394257186385953412
+968c7303-ea42-8426-d756-db4d22f05bc1,235981890,2051070686143426206
+e63e6848-ce9d-60c4-ef08-1559379b123c,181252904,6006295773920664565
+935ac336-47e6-a156-2d98-9d6f7b6ffcc7,3024678641,4527504863664730346
+da01f316-ee2f-d095-0e7b-22c8ac088b9c,3673246759,9742392793379224163
+856fce07-4792-3347-6264-4dfb5f796f4b,676623175,10063472625563180478
+0abca37c-76f5-bd79-ce74-e198e5a301ff,3527173333,10852118613602012309
+360ae824-3b69-9a82-bb41-8695aa8982b6,1211581130,8134163821497512368
+601055c4-4ee5-5a20-83dc-a04918bf15f4,15321167,7813815415637548970
+e13f51e0-11b8-5d37-0efb-0a650ff2a336,561042127,15174388485053229431
+85992912-5a12-58d7-1c26-e22e57096f8f,1174697567,2233972393151204596
+c94cfa69-e5f2-114f-9653-d6c3a12646f1,952743364,13684010975407433188
+51c813b1-5b8d-4ca6-5f06-face15f32016,2611262682,10519606858660587877
+86113c9e-bde6-c6a1-4aa9-21b1869a4148,1231919656,17496905621655120348
+b97e68d1-3eee-ac37-c46c-6d4b7ae4876a,1408149971,7237066986640745688
+72d78f00-32df-3147-6ca1-700ad0029ba2,2243402654,6660397942812414773
+ca915c58-a0b2-ffb8-e28a-9677e34c34f5,24767172,11446584790224713300
+8f10b459-2771-1e19-d6d1-5c8e61893733,3640907208,1276301170520041306
+4aeb76d1-023b-5ce8-5e6a-1f0ecd4db1dc,243014983,4238594956972541907
+dc4e00cf-2b79-a6b0-d843-47ae7ff1acc4,3706850006,5187395067070391678
+b9a7e9f7-ac30-7a8f-1449-cb9cf8c8bdc4,3189252988,16170739942953413403
+272d6b75-7548-1c40-b77b-8f1c1ebea219,3912479441,63425571782815735
+607c5eff-eadb-9d28-375f-4ce4711bed36,2602072975,14606314286005910052
+64004e12-d318-2178-bdd4-926b50258760,2507797037,2250492117957982949
+bb808c55-0db2-c30c-75ef-f78d679fcf6c,3678123895,6389067707627669724
+f543831a-f5f1-d20f-9827-93cf987c806b,3689252859,5624694584247403964
+52a0e0b1-504a-6006-6e12-0fcaa481d307,3328192296,5223559088646819440
+63126993-e277-06f3-dedb-f8d87a52e8a9,2956125537,8035416038216250880
+d1c81990-e416-d469-b128-253d00e51e61,3060686256,10436631849856419398
+10f45668-c9a1-1224-8200-36a323d376ae,1017068176,12540380174273342739
+1a133884-34d1-e9fb-ebec-50e0d55d672d,4200925129,4020696556899236030
+d9221a03-07d3-77d2-a15b-b07e89d49c58,4152177283,8469983064179514062
+34c2ef4d-5f30-f03d-9249-59460edeed27,870269871,70405546293060536
+7ab4cde3-6240-7318-1d97-e81ea7e99f84,867598003,2774296303937908646
+79bb5be5-518e-0041-77dd-f70e48b31242,2680152255,14623919937695013706
+5ff9cbf6-43de-2f84-3926-c905305bffdd,434650476,7470356468646575980
+3c83edb1-d23e-2c72-a6e0-859eafd3af1a,3990563161,12100880218031105338
+0651c3f8-e3fd-3801-43d5-26c89fe692d6,363985493,12304768982447253001
+648fb014-c126-3398-955a-3658984ba90f,2256831942,17509329117414815029
+8c2ed6c3-194d-619a-9cf6-eecf42b5ca85,74155491,5749833067942805739
+1c794cb2-1260-6bc1-a36f-63924b496899,856758807,2384628508578222704
+4ed9a55a-ff7b-269d-2d80-3a7ec461abe7,3890431085,4560702202960630805
+a9e566c7-905b-bde9-c5f2-97f3831b3143,967533450,16803965464450744748
+e8a9137a-bc85-93a1-8662-5fc66936128d,732294013,7206867735316988177
+253333e2-2534-21bd-0983-dd05c5a9e544,1981237458,6823248214152793063
+894f8e22-dfa7-98de-a7ec-679fc77f108e,953590996,2909428258642731109
+6cc78ebf-92ef-ae7b-00ae-38007291bfff,3183786030,9502536908082665833
+e84eae9d-62c9-c864-a23b-8f0f50b7d07a,803720694,17568090475502743091
+ca3c130e-a183-b877-6593-0a627897e599,2843278038,6089552564695737476
+6ded1bd5-0d45-a211-8a98-94a34c19f3af,3104972379,669965664753984629
+9a51e174-0abd-52f8-d6a1-bb7bf58cdd02,2539632473,6088541177559746680
+d89fb5ad-ac17-c202-fc14-275247e00bc3,1729959293,13484688742923523660
+8490c18f-2c08-24d0-91fd-c020b893adea,2762656742,11037586243086760132
+0248bf8c-e84a-0947-ac11-dd1fa9dbec6f,2545891473,273041661929734974
+0199d387-b2cb-a62e-6180-aaf264823b74,3807742681,18369432337377707923
+25deaf8d-bd61-3a61-0487-696760dce2d4,1139635266,12562086567872788647
+f96e7ae8-3307-c2c4-5c53-ec672772a435,2436968254,4770047373395050894
+953ae12a-9bb3-8dda-fb59-2fe4aee3a3d0,3780315880,15138688801227490921
+4d48e7fb-be58-fb51-df7a-586980f31cdb,336395617,17561142673202473801
+872c27e0-b561-d1e2-ce74-66f9c02f6287,3998312107,586488721316406304
+7b0f272d-17a9-d319-3138-bb0b63fd8bc4,3534045940,14097202292119199972
+704af62c-c066-d4ee-1bdd-0de1c3f34172,2820202507,1084053127089982107
+a0c356b5-f889-15ce-7b0a-56fcd1d51043,4095482515,7514936336443076106
+096d52d4-b958-56de-d0e4-e44643878dbe,2387253180,9539366044440702536
+3d69938b-4133-493c-7675-ea6f5eb0055d,3983486897,7539075639415248610
+fe36de09-3376-52bc-3381-5fc1c7bebd85,989503457,18075467483917243565
+75fe2925-96f0-3e5e-7c5a-388d612ca4c1,1712190498,10929458612221291730
+cc4f7194-2285-77f4-6698-7e95dd95f349,339051782,1002593526379568683
+eff52a27-8fad-51a4-1a32-8fb5b5c3d7c4,1357240917,2482832528596836035
+3bda10c3-d58b-b6fb-2ef8-224fc621b7bc,3779082661,10160988465116070093
+fb6d59f2-734f-ea37-e198-a2415073d094,360143434,9508404425583851197
+64d4599a-defe-11dc-21d0-6b6abd82e169,2563806992,795968072805813930
+958e9670-620e-b6ce-dd35-fa08f8e56ae3,4247127938,16206225241623485475
+1f42123f-2fab-ce76-ea4e-e00db6b6a4ca,2231152202,6620688289076566089
+dd3e5067-ce72-9a2e-71cb-7cd492c5663e,826298547,13547819307636959108
+8a15c0f5-12fe-dc21-2abb-f849eaa3a4b7,2895223418,9722335787232063070
+03e35603-1f4e-36b9-5e1f-7e48dd79ea4d,2451823895,9004925812021708095
+a5015e3d-1902-49c4-fb03-db4d5571a776,1467938286,17980922746553075775
+1dddc632-d2d0-4b13-157e-d469b211a6aa,894307432,15655801736165745201
+fd02a06b-e2a7-9870-662c-cf221caa5714,182818288,8554556324208402029
+88447acf-2a73-133a-035d-08949a7f7542,860286719,16715377173445217874
+e23ac0c1-645f-d524-fad0-bfafd0149511,4114422599,5867913838885077084
+badf6b9f-b7c8-25b2-b4c6-7985e7fc021f,220815606,10258638269221795229
+f85b27a8-32b3-d6a1-09bb-337d46253a3c,2052952441,3717596230605485907
+ea594189-7ea2-fca0-fc49-15439c7b1090,3603159699,1141317272087599146
+a017efe7-a8d8-107e-ccb8-0ef666e81fa4,3908983596,14484342130671247692
+f1095839-b635-c29c-1e8e-0010fceb16fc,1591800569,11149770802595247927
+55f8ec59-f140-5788-5fac-3561d5ffbc9a,1501776791,4147260632992768705
+d38e173a-433b-b5ce-f315-359a9b5c2a3e,1779589351,18385648315932551198
+1fc97a00-8a9d-88ad-c492-7c41b6c1e27b,3226621271,11665052133405373695
+a3d5449c-1363-f2b9-776c-1faa69b35b8e,3029646306,6100202431489666111
+3ebf5872-a386-1d6c-c5bd-d42047176f33,3602551239,9670532593462122749
+538e1289-45ea-28b1-1ff0-05deb41a85aa,794880272,11796439274567602930
+499012f1-710b-9863-c6d3-63dbd8fdcca3,592221967,10438977899414793554
+a6520fa3-04a6-23cf-6a86-8308fc01389e,1378367759,1912808963566295345
+bdd1b6fc-bb60-87ab-ca6f-10f417e378ae,3700115127,5139304160607861180
+f4b32329-22ea-f5bf-bc5a-49443e8d99d8,1531181566,10245183140408987410
+79c0dd45-848b-471c-da50-88b718c712d8,2355757395,16699709953387728176
+6300ee3b-8969-a1a5-d303-dfc86090165a,3332041705,6845726715597786145
+78bc6c9f-bce7-e84d-a310-a31fe184dfc6,1121306084,6007998621673812552
+8e93c9ff-43e8-2c67-087a-3377cb2ceae4,2780795671,5661221744964647484
+bc6b4c94-b277-5225-2ffa-fe897ec31938,4138651484,7082845533686300697
+68ec2d9c-8544-7407-831b-bad2a72434a9,2777943648,11875966805674104275
+bfb72474-a13f-4535-b9dc-1e30663e1877,3980769803,3706512614586121918
+c19436a3-7b2d-e007-4413-4008ffab61ac,2633472867,2291173491142027978
+40284527-3c52-8723-7156-5ec410dddeed,874319692,10820095933530128739
+b21bae20-f25e-78ac-bd25-9652d0a8e4c1,1256991484,3693549936035248944
+09956483-3cf5-47f4-356d-4a9982ea488f,3171992821,15151448584281008228
+1b914c19-7992-a011-439f-1eda3029530d,3926192004,14469468360070233308
+55487a6c-1897-95ba-02a0-755fa632363b,1923045864,9523542007395752257
+f9f18088-e764-1c57-0ce2-a7e8a888a701,865681885,4051198344165947341
+3391f4fa-35af-b926-5df7-8d3542ebb395,98602144,8526982795719395706
+cb818659-0130-ad15-1176-b3fec19a2041,3010442432,12414708171521311429
+4bfd5f95-b05e-fc86-ddd2-908ba48afbcf,1660206181,18199194166808380063
+318e948b-c525-bc9e-2365-e745b6bd167d,964866364,16653564337959971072
+238507b3-003a-bba1-2c2d-8f0ea65457ed,252432083,13991283774729692860
+21d756c7-e6e3-13a4-062f-8d2ccd5b7ef9,1606279122,7651261283337350796
+c5824424-7bbc-4590-0cb9-6951a7121834,2815082775,16102667265858833490
+ab66d74e-829b-90fa-5afd-6f5bed2bbb62,2367881209,4541290551331033736
+854a83a3-005f-834c-23e3-2730611be9c1,3650055912,17697699839583731654
+daea59d8-5686-4f6b-254d-016644d9c2d4,493438747,9026994570230612950
+206efad5-d47f-a80b-8345-d274055c6bc9,3896235803,13671539007654918276
+755b1300-5f2d-994f-356f-63ce205a16cf,2932650797,14562169151114821917
+a888488c-be6a-86f0-0bcb-7a3d40c1a8d0,297642001,4718115520482860536
+08e9a147-df6b-4079-24b4-c2f2b71f9041,3702508014,12542379884563821519
+39afc4f2-836e-8fcd-4bb4-93aaec97fce4,3487694307,13325059299583286596
+55b22b50-6f68-f5a8-6869-046740f294e1,955682346,1168617892805553237
+80286db2-406a-5659-03c7-95cd90e4d5b8,4281871075,7416523174622233020
+c3ece927-7dae-f6c5-ff8e-80d6f788169f,633381446,1012788130931268771
+382de4aa-dab8-987d-e010-a5952dbf2e07,1189233418,11559557535322281159
+6470cafd-6f7d-354a-d704-5afe2541871b,3965612821,15424969803600749375
+24e26a7f-d5a1-6338-c5a1-cc24a2e1d93e,1546803811,5771361428642593050
+354e239f-a81a-e9a0-9b59-123e89476a2a,2925616098,8008771379185715303
+484a4245-80df-4c14-c59b-aaf1cf8834b4,3229916097,13867405127575580087
+21df9784-a544-dace-34cc-334682f01ee4,19259163,5846811913055808883
+72f945ec-e29a-dda8-6474-d4bde3226578,1419901226,9126906266694859107
+578ac436-e667-a32e-5e02-df1496c87bab,504922304,6048487222785429498
+88de791b-c26f-5b04-c2f9-887146a22932,1153906078,2383589328337517620
+d165eee8-2d19-40d6-2be5-90aaebb374a3,2583779013,12027203111614298052
+71d4791b-50df-cbde-3781-43602413f64e,3855604328,10628259250335850312
+43641954-18ce-3613-d735-4134bd337d51,3033190469,6642656626432279936
+5488556d-5415-1619-47d0-b97720196ce0,658469782,1312431765760672553
+735fbc29-9439-bc27-1f34-65b78a585990,1807595864,12110839766189073047
+2055d76c-cc12-b327-e91f-2d6ffeb7fe6f,4204311495,4215641910834424571
+f0d990fc-582b-0bc7-b316-ff7e452caa23,195073740,4689067806436926400
+0676356f-8ab4-16fb-0eff-6a3e2072fd18,3970298596,14553674057626652343
+7f7a9128-b7bc-6e95-2bd0-8228bfcf164c,3419313157,13167228083203369072
+b603eb6d-d364-6c0f-f838-a8dd679ad68b,3089719437,17866429123321626282
+5d7fec1d-d734-48ec-a269-f23ffb03a3f5,3922943004,1349392732349265931
+283d2363-14b7-2938-8b0c-fd96c4e2654d,4011014770,17818909738658678879
+e3742e34-d060-3dc7-aff0-97509a934298,1875690467,16488553237910774721
+345b7637-7c89-26dd-7864-d97decf344d0,3514393205,8197189236417017977
+bb807815-1bfa-48c0-dacd-65bffc3b0389,280081848,8404888508855772730
+6a1d309c-7969-25f9-1d1d-56051c93b486,2769151934,10469257163520294692
+87f0974d-8f76-e3d2-5aa6-d998a2768364,2808554296,7147892970495218199
+572007bd-cbec-ac6e-e701-5cae51224f0c,3776939447,12535686432181422155
+401ca5fe-ad2c-6844-212c-820b02e19666,3949986670,2957633212778092633
+7405d26c-8dc6-a48d-0e3e-9693d6f2f50a,2329693798,8774648359809314011
+f70eae5a-5447-a39a-c49b-529e2d708c2a,2656790737,11590660674872423330
+ea9cb4cd-17de-7ba8-3fe7-d72ff6bff9aa,1224739459,1983729479567884564
+7308dba4-1bae-b24d-2a48-51085f6a4dd5,745265248,9935926379579171067
+939d7431-8548-f101-3b69-e2a6d69d57ee,549217908,3952401579688947655
+a70795ec-3bd6-3fed-6472-0ee7b0a5a777,3999069944,13505591893617955497
+bdbd2114-2026-69c4-e747-b447012424ff,1378614394,4922691137514819352
+be603654-83e1-36e3-6d40-4618a5ffe028,1134165259,15372755038329155800
+844c38e9-42d7-6c83-2c52-87f087fd6c47,1802155241,14962308745778435222
+ed4fd8f1-c772-7a19-9adf-b3791ea571df,908730287,7470437240242175956
+0930261f-3e9c-7933-bf9c-958e91714c0c,1380654134,16581288615466864915
+e35ad0ad-edd3-a93a-bc08-26843973c263,958406510,3507804331731884849
+0518e1ab-8623-d45d-5d59-f4a694934275,3545431306,2407099224264723205
+4a193535-e0ff-5134-22cf-8dc53cae0291,2516838434,1607230269539793101
+3a759c4e-cb2d-c1c1-f912-a1437341c80a,3317642745,6096478143393652832
+5d08b921-1cdd-6aa0-b2c4-93f180e3d1df,2341639596,9816372655459132531
+0baf2fbd-1074-670b-3d5b-100e34aebcc8,2662050337,13713012646068409261
+5d02ac54-4539-ab2a-3a5f-d3acaa3cac7c,1211668567,7182572808991687910
+fe0f27e2-98b6-5be3-f385-6eb30774a17d,195443710,3050613678106173118
+0859d5df-5927-2522-eaa0-d379e8866019,1096532245,11305930346137951045
+49e3c4f4-d19a-d341-3051-1787e27149a8,3250548334,9456632195164808746
+a5f520a2-91a5-c78b-f1ee-89c9f744e83a,1464319305,3020290488139479914
+4c9df91d-de64-8e63-8f2b-d40e87c1d589,228428932,1979790031760576060
+15207176-53d9-adec-a3b5-01ede1dc8e83,3874106658,8940537158983033079
+879c9e94-3049-c0c1-0656-008b18f6d51b,4175697423,9962727327028116793
+dbb38257-910a-ea6e-e1c8-bda9312f0ad1,672072758,5306249930168763543
+686e8f3b-5b56-69d7-3acf-a3614e7b8975,2689094439,7518639388098519608
+ef1c87ad-515f-3038-bc64-468ca90a973b,3455735811,11704508626264309619
+f49bb04b-d6ae-448e-272e-2a67970f456e,3028022533,17179954306352268820
+76f67bb1-26cd-acde-323f-71ac339af478,649482142,16148122161280622082
+25f132a2-03d4-06f7-e511-5bb6645e5b0e,1322323370,11413984243135846603
+67b5f972-fce0-27b4-45dd-b791fe5c71ca,4025364635,13350123225089335472
+c2330d48-fc04-4d05-e6d6-0d9c67505a28,1753030015,1848359517103726198
+3c93a90c-6cad-cebf-1e5a-f8240ea5834b,3742376541,7464428502880422988
+cf7d5639-adb6-8056-da63-51c512d0de33,2660364902,2794933790174057220
+39d535dc-0b60-136b-3b1e-056264c197ed,4038281631,9205716768269131873
+464382ae-b9ac-82dd-81c7-84aa3c55876f,1739029856,17247373355434863814
+74bf9867-28be-9c66-c472-9d1d53d4216a,3575330721,420511958992827618
+19a77174-cdb7-e872-bbf6-70b9facd9b64,33033204,735706900640856914
+73a1643f-0f65-c7c2-68bd-87b837f2aa27,2074345501,9158197899024803878
+5aaccd27-a934-454a-865c-406821c72d7a,4274267206,584400764004729441
+9bad8eb8-3dfe-c55c-5850-f99ba2038310,3267769472,5610658789516548335
+8ab01243-95d7-eb5f-97ee-393b98ab3855,1143467186,12930187164858601403
+3b73f77f-7972-4f37-4e29-464242286f31,3444881623,6158130178207031599
+8560e416-bbfa-8b52-4f53-677944e2f425,218072454,9964206884579142838
+fcfba98c-e280-4e27-885e-9f4d283bac60,3882310646,12791146660690129691
+ff52204f-747f-d6ff-8ff3-945e5fb13e57,3947141676,1078558396676857976
+b1f67a63-1710-068a-a588-f85366793a5e,2884867189,17881474239053352598
+46dec29e-008e-164b-25bd-88448a3a2b5e,3083670356,3666302568880078555
+7fc29635-56b8-3636-62b8-8749d1914dd4,1976489959,18079219129391134683
+c3e4d282-318b-1a48-4c33-2cd4cccb81dc,3944225252,14939497993087019610
+57373be4-61da-de3c-c7ef-871f10b074db,1731044577,960705531383325336
+b196c6ba-ca19-6b39-f199-8bd0594e3f54,1436484630,5116251631754940956
+1bc9c910-a29a-787a-fa2d-856e280510a3,2432228115,13637425710098377553
+28ad49c7-9e8e-1af3-5166-bf9347ef5ae6,983478960,11675436169652390769
+11ec6970-755d-9b58-4556-84107a54ad96,2121952095,11162420583270998370
+a0f7f5e0-c2ef-c32b-be70-cf4b63d2d139,3632007934,3582805733655460479
+59935033-f6ad-8c99-57f3-9a6bcdade2c4,993863730,7759365768925404232
+0f644bab-bd87-39c5-f384-ccb4449a0150,4154635797,1386533240013845825
+ee12d2ba-3f44-4350-d1af-0e3e9051eb20,2761436734,13709596554326864650
+84f2cf3c-a591-c159-2b67-b81485e8677f,1924822140,16526936924212294634
+1f0510dc-b4d0-9599-7e8d-46cc975729ad,1924373204,13793244616265383056
+624c1ee9-9f47-4c33-b942-939ca42ce123,1072814375,74891893579668
+110c03fe-3c8d-39cf-b8a8-e108dc4a24bd,3819602786,13633962663957401581
+a372bce8-43bb-06fb-8d0e-024ba984ba3c,889423118,4358085504554962249
+355fab0e-f384-6c19-ed41-47f4577ce214,740596817,2717818275627177402
+017a2e62-5470-fed5-2e45-7645e2fc6dcf,2843405456,14151618507135378579
+18ae0469-0fd3-de25-0d90-aef9943ae902,916848110,14037204705628288450
+cdc2351f-fcd7-2fee-46b7-c0b7fc33a104,2933671537,8785351570027140778
+09f49f21-3716-7c8f-e2f6-56addca77ff4,2077989383,6482131765774322999
+9a7686d1-aef0-f6bc-f1a6-b5d83f864a0b,690568541,14439842288564201765
+10e572aa-72f1-63c4-1eb2-8b178fe9c876,2430070137,12515730761122868162
+6231288d-3280-69cd-d780-ee00b1c8cf71,2418542290,10465434500176396068
+2dd88a39-79ec-1ded-7ee6-f08634945b4b,188970586,9964402766566154984
+4610c4e7-c6db-696a-e5ae-20d67c1a31af,3149892515,13324803753004537393
+3d91eb3b-5da0-f936-becd-9891066c6184,3874094986,2774198272398586151
+4bb22535-033f-61bd-bfd6-809ba3dc72a5,3817473530,4781714690686053848
+385f9dce-2324-f7b6-6d73-618fdfd4a79a,4036018769,10368161236474141714
+e7bdd8e7-8017-94c4-e955-2f22d41770f8,3161200476,9637118913186892163
+c86a47f8-589d-3c82-d199-b6f02bd078b2,149879564,17744802929933162645
+ff77b9e1-f227-89ac-f622-3f98aa259a8d,2182076842,5062818697501392806
+b7ea79b7-7177-535d-b426-a5f8606cb505,289366347,15025209975670945167
+10a32aa9-d816-2611-0e06-1f9cc81fd3d6,122487996,17544245908391978537
+9e12fc0e-6744-0b8e-dda8-5ab50b5fb7fa,1825475057,4527878302573994629
+46f1fcdc-96ec-8878-4703-00ded4a8277b,1321655746,1885313898174201786
+46f603b2-7dca-e1b3-7f86-5519bf0e4c8a,2278772584,5161004449002940281
+abaf4acf-f95c-4ed2-ad87-2d7ba7c6de75,117574013,1230972763090776841
+2e856a47-0508-af14-cf6b-cd90b95f6829,138407584,13250351890500084156
+c32b2dd2-d37f-f41d-e743-99a9ee6c5e6f,1299408545,10547276419171671087
+90185905-0ca0-d753-5b30-01950904b845,1270079908,1305376720561115504
+a9b03984-82f3-ba91-9334-3d65c4171de1,1191585615,11887466426320796438
+1481f5ed-e78d-c49b-33d9-6743c05382a1,3146258856,10636792829683793937
+cc12c14b-b478-122f-3cb5-1193e0cff203,1962738777,8062942720931673850
+3fd7a333-6118-686d-b38d-e97e23384b2c,559598455,16100610961396124811
+f2f3c262-bfbd-42c7-7a08-950c2b0f6387,2352661057,17615071030154061263
+4b0bbdf8-875c-c469-5afa-2d506c081034,3209970638,1040608249451329497
+b87af3aa-1912-8685-a4c2-f78facf07fcd,3152688322,9673094991907319966
+8d26e779-f5ab-6433-2950-5c9e46fabe17,1502506855,7235607060825035451
+890a2efb-d10d-61f6-fe37-2cf18d0c9006,1173885970,16720641730053313597
+75cb47f0-df25-7209-ecad-1cd047df65d9,1351445943,6987881629745375302
+763d5ef5-de45-65ec-3b35-1b445c42663d,557165512,3400002487365855129
+f36c63f7-fea5-7c0f-ae62-0b4aba01b405,728868608,727479847977377455
+c77886e3-47f8-b763-6272-f119777c2da5,621416194,9288059735620057862
+53cea797-5302-c829-dd0f-ef2b963a45a0,785271573,3069433475182126236
+080073fd-8f2b-aa8a-953a-32851c776f7a,2396374878,5800581314738942307
+f9a0db6f-1579-af6e-5c67-e4f9486ab2eb,143903800,16127537320387928481
+38809e7d-9607-e657-5e52-de44744cf7b5,799889445,13694506371729719129
+ba8f90a6-9684-8ff3-d3df-05459a6d9bc1,1797772163,14601631220448141864
+8a773cae-963e-1746-4a73-237a8717e7f7,1923401344,10180873453695129850
+b4e660b2-a3dc-901b-ac46-52850ee27286,3793625680,16134291623184211814
+fb9a2413-514e-2088-2f50-0f7d36d41cea,4210918274,18094515601887716907
+2795f977-ebdd-4fe7-b8d9-23f8cdb007fb,352262707,9693659221304453326
+7f51d0c7-157e-fbf3-4e00-bbbaaf4c941f,2940539204,9095932513062837896
+557c04ec-0608-7ed1-e982-9e39d10a3a81,2908548046,1600524180075018214
+5c7dd813-60ab-f2fe-3060-92f70d3cb18a,3680491047,9915561186861284278
+1ce2d86a-8104-9603-3f63-6be28f4d2c6e,19347299,10840262966768369078
+e942bd79-f4d4-241c-55d0-80c36da0bd02,3554082735,17944063877551165837
+1df4153f-7aa9-7a3b-df7f-9c6e288b56d6,1172178967,10673540939209090655
+dd5fe53d-986e-21fe-523c-e57ea95338c2,1830325639,12490165470401896719
+02e50c1a-37c2-fa46-f7ac-a26b4713009f,1164295880,10416952766023234434
+5e4c8813-7421-2f05-30f0-43b278677b75,1984485788,9089891273737964738
+e21de821-1326-252f-7f8b-58965d98486d,1713021598,7048232174280073528
+c3f3285a-3edf-4d50-bb53-f7b9e8093199,3325547387,15027228026311924464
+d85424eb-9f14-4fbb-7d74-51648ea9a809,1804253044,238214359291520213
+d8418920-5564-dde5-4a14-11637487a33c,3602287137,17483566070361212338
+81ca1c7b-faf2-421c-a2f6-458b63093287,2631915040,6572294915299480643
+9a06a94b-4093-4f1d-2518-34985908beac,468395388,18356543707714278239
+c6e96bdd-93cf-617b-54f7-f9e89ae3448b,1423511190,764124110852472008
+2e628822-79ff-d591-3a46-b22c3aa51cc1,3220204046,17841097406534707362
+2ed05104-3c1f-bfe3-1a17-984e19e4b8c6,3704046159,15595814125111171122
+edb54aa7-0640-85fe-0922-46997522ddc7,1828759725,10554098662972552641
+60441409-021b-01d6-f050-fe3b2b9686d2,2757461231,11109421411229034281
+0fbb0d45-4ae4-aab6-c9eb-5043e6e7e4ae,1399961942,2129116880698371934
+f12a131e-0d6e-e879-0c49-1a146dfee2c9,241571582,4327763445655667061
+4a9dab5f-97cd-19bf-ca4c-36df09187fe3,1477638741,8545971717447996977
+767a1b95-f928-4d26-7f1b-12cc14e640e6,1749256806,17391218936486294303
+b9cd3d84-c60a-d08e-54b8-20ce934b4787,1450333438,2145016510302613512
+868e4910-8b50-be7d-39e2-0f6b2488c91f,605828689,4849544434741765519
+e3ef1acf-f982-bdc2-bb5e-d00ab2d1ac6c,448641780,14731927309801743660
+791b177b-0548-39d5-e428-4306a1448893,2241246583,15143022221345290316
+59eeb911-0f85-bb9d-d82d-348df18363d0,1368318085,15876594262129965829
+dcd49b99-5133-0f9e-6159-c1ab9b1a5ac7,478723330,8605130011677409047
+c30724f5-ce92-934f-de32-eddeb65a93bc,3437403317,10026996763517538749
+dd1911c1-df79-e227-27e1-3a8a5848ac7a,1740099456,5638048746223393678
+76b63f86-de27-5d97-34e3-921f37a0aaba,3175958162,9823573833305729060
+424dc71d-3401-6fb3-3527-b99ac0cc6ab4,3113765576,12171873498644670242
+d554de81-d806-68df-40f5-ecbebc14c17f,779747862,16161525246352781326
+a8867c74-ab95-34ab-76d2-b1f8f18991e7,2018927682,17149705360298029799
+b51ece5b-f2c9-289a-ccb4-ec4468dcc98a,2648926502,4212996748037275972
+fd1ec377-e39e-c07a-0f75-c0da63c51460,2979923976,17135478781560297066
+0d181473-1ab0-44a3-6510-2099e93d45dd,3770627537,1013713052645715943
+d056bd16-ab67-ff0b-ce78-bf554ceb117b,826190509,9385384080364134359
+6be41989-39ba-7b19-81a2-6388ef641c01,2976442708,18286044328124242660
+115aab38-f7e6-4a4f-43f3-b5e6c6bf5ee9,1082294157,8134637856048293674
+6077f3be-a653-b0b6-80a4-42b0848362ba,2285129574,14354762465556872726
+1bd2d102-d48f-2dd7-9a8d-a816c39d3d9f,1306088225,13969083709799464481
+b296cf1d-0244-023a-695e-4622dd2ddb9c,2830547368,11792568225240613482
+4cf728cf-7f47-db61-cab7-13e3af146ca4,1678699936,296231172825341501
+0458ecc5-8fd1-78db-56b3-fed8b941dd20,2480128306,6711375020803254391
+a8edde08-76db-ed64-3252-8c6160d38150,3282114223,12250672782974448184
+23fc01f8-f35d-9c48-c532-86ed7a5e880f,1433704659,7303081589959373396
+b1dbeb5f-5f9b-ea27-e7af-7f3cd834ce29,710912596,8502690472821606425
+86b3cdaf-9079-9f4d-f051-b182e9de5479,2247252608,6844136911022435923
+d9c95abb-63c2-a1f3-afcf-73b13748fca7,1168972705,6665728857552266653
+375f070c-b8d4-7b19-5fa1-cdc266f40e79,4262533170,11836680614873916393
+fafc5f53-4dba-730f-8307-e4a8d44cb20c,958667999,5462952032324322454
+a1565cef-570e-0d10-d034-a761b4981ccf,3626977067,849602560518901818
+c543d4a4-807a-666d-6a8e-990336a256af,958786749,15901456461174832093
+92f8f329-5744-9fde-3a51-13daf909a131,1170154553,14823214572458359295
+be73efeb-7f71-0e09-d622-73feeb8270f0,3128320072,5626710824768389118
+4565cc8b-e62c-596c-d089-64b394bad832,508498475,37357485417253476
+16d3a3cb-3652-5fd4-f252-b7c25172a2d6,3814732323,13245648147600381551
+53b6fde6-888d-491a-9409-e9d553b4bfcd,1284138249,189865947312577624
+eb69e2d4-31ef-d44d-66dd-0bb20b41854f,1899515618,2908278521109166760
+f63bd9b2-85e3-82fc-7504-2a21ae99e59d,1343926560,1685110279704528435
+f88d3d78-920b-17ba-b9b7-c7a540acdcfc,4052895020,4424556907551937266
+960da604-28ff-6139-fcec-3591b535e5ad,1938443400,7229718102199196376
+c0ec939e-24b9-7f51-05bd-a5a1134222f8,4056277970,10646980913228022484
+21fe970f-19d4-4a3d-59de-24b377eecf64,3035566999,14891362838222501810
+1d62ec12-a459-04a6-f18a-37562e7a8a77,2370718880,5849085986549142725
+5aee2b44-a2d3-4eb7-4071-b113af04471f,59572947,7824145684130737226
+9a48dc1c-7728-2709-8c0f-81e9aa1357e7,3858447948,5422950696023903621
+c8de4df6-bd90-3a4f-71b2-91536a8f2bdc,461677895,10369039590490253361
+ff7f95e1-7ebb-b610-9314-f07f399e2ee5,20589187,9350658370899721655
+74c87400-9ada-b5a7-080e-9be8d983c4c9,157077705,9682837444654728771
+eabdb7cc-ca10-e72d-5cb8-5ce5091c4dd3,1752388207,10709558614590761790
+83380421-399a-08a4-67c7-eecc8928137e,2249411593,991245312304714725
+3bc6f024-6ef4-f58b-fe94-c7c1e152c4a3,1472209105,563405927756020482
+89ea15ed-51c4-9db6-52a3-1a49007b7f3e,4269023644,11053864589186334840
+0f4c86b4-8f0b-6109-33e4-8b623babd9d6,2047244164,513347403092683077
+330341a0-0ea1-78a9-6e1d-24874e7ab970,2045718697,4974198579332905125
+dae660b3-e9d9-14ac-cb4d-c75438d43b32,3732764911,6122419444059397133
+39708045-3bee-c66b-9810-bc38910aa0a0,2844000745,16800776127698501197
+2f395e4c-08e1-1b33-b978-8df13e121420,2301008340,3467013894226814803
+cce4d334-8d7f-1805-db22-9e62bd77f847,638877440,17196302661792585101
+2782f797-6f86-372c-f7af-5ee4e073e1f3,603406592,17921745306632849569
+f816acec-56b7-7b80-23ac-1d7d15f7911d,4159084693,834913559089356676
+679534de-e54f-bc28-29e7-536c24250401,527970155,8068573946006480535
+f34a0849-1028-00be-cead-3cf03f472e81,2579004298,4311340045178414026
+8baa6838-3438-2321-c0e1-e7be84ab1e8e,2049866410,1331806617922513796
+683c169d-73fb-caf6-8e1e-225d4e02f818,1366143785,18003596925277132412
+f073cb15-78d7-3b4c-0b5e-243b6c4bbbac,2956376981,4127931925538802071
+f48c327c-8c05-9444-4f5d-8905a95859f3,2835481857,4809429002553714933
+67c6d9b8-7bf6-bc0d-4a10-45e67b3c29bb,3758507632,5824826944616344747
+1bf84715-5a83-8e2f-0274-23e3d3771e85,2139674281,9053677426163812395
+91a77dce-d3c3-4752-7072-a9c702a5ead1,3365610704,15571243151402946676
+e8537f0b-6fa3-db3e-5649-4b44691c46be,2540033119,7315251372679810069
+27d5f491-0c84-9804-a84c-dec63590d6f8,1357578438,10032781606944784963
+69c83300-2613-97ab-e54f-04d42e9058e3,1872591747,370356982222811370
+b07e1446-b06c-5713-6aad-c1f7dbd26af3,1572976608,13066864141690778544
+407d60e8-2803-509b-215e-c4a452432ec9,626726008,13411833718378063726
+a17e7a92-3383-778e-0036-0ebd6f051cf7,3790359871,9086210147862962220
+cfba7aa2-5635-c742-6af7-7de75a357a86,2272862506,7822402463255634449
+7e4d72fc-d5f7-88dc-a563-43ae7a6b348d,2022039287,1642926036496828250
+81a32836-6734-2a65-8cee-fab290669065,3974148434,12293806164660116842
+27c7a82f-6b90-7edf-9ade-50d8a703f9f1,4222293420,1150200807188969003
+3237a41b-3341-50cf-b003-f4e44078c62c,1891496759,10798743956361901424
+8060f36b-1876-5d6b-c485-7ec5b14c79ad,3176330379,17071935609056512548
+de70f8b7-ab8d-bfcb-77b0-05ff63666b5f,2667867194,2522315737258661107
+f7b6a0ca-fda5-6049-b2fa-a0fc0e1fb7a1,2155321051,8300206364741341894
+db14b796-102a-7209-097b-5317176460a8,2388090821,7609186771880198199
+772605bc-3bc3-6d6a-a918-25f40545435b,1960218984,6122204907802028842
+d1770299-22fe-0226-dc6e-f22741687af5,1261984465,3371428470091171619
+43c575a0-a2bf-6fae-a3fb-1ca80156b156,3183767938,12068997093371808950
+40ef3ae9-0034-78b9-69f4-f6dc21b30771,4067296564,8399734755700936165
+c92aba06-0cb9-b73d-3d85-2de112b27476,2692257177,3576828442915309459
+75111588-127f-8d63-b5ad-5a1c24d6778f,4178055882,15180460129882308428
+53996864-bb55-fd9f-0f11-268711512251,422967729,17424607043142240795
+60f700de-0669-fe5d-4d2c-09377f16d475,1339599197,1460174545575232976
+217bdd8d-e5c8-25c3-1c50-a5c66f31f437,733775172,17940045360459144008
+f873fcb6-fd33-98a5-8342-efcc193f7188,644823384,14029582914517859691
+70d40006-967c-208d-c8b4-c5e22c1acf5b,1408499927,11845045567654395791
+3b95e8d2-fe22-9b19-0fbe-39750ad7deeb,2888883898,12849727786586258978
+8d1ada6b-aaa8-8cba-1627-0040172c9257,1259787,13651152459224028045
+cd8ef7c7-963d-35d5-05a4-57796d6dbc66,1219125614,10549540502046538863
+42ffa37f-7398-7249-38bf-14c4bb385a05,4042672920,12941509844519282367
+51c6df0f-2ce8-0362-7480-77b1d2576919,767941904,12823652118978100598
+7d4828a7-09a3-be22-b8ce-c2987a85605a,4033299407,17676546636278076704
+e8a547b4-6904-5910-9159-781710ade1f1,1745162163,10668421501187294024
+7706a5f8-7f1a-e130-88e9-08ff3fbdd310,737723990,13114425776429650057
+36093195-78ba-4164-960f-1fcffce8e524,2795364733,13530201327771783587
+5dcb13ec-63c3-c776-df7a-024dffb85e02,3280334829,12946610828385959736
+9f3bc725-ee67-9e0d-774b-b8ae113d6871,2501690649,9821509760821452974
+a6966f3c-6728-4669-bb1e-0e75c3810306,1908616215,11170930312046444192
+777b28e9-4bb1-2758-b434-fa5e42791225,2970026191,6915193675440960256
+c1704806-eafc-1bb6-4669-909a6b5a82ed,2584765493,5859654282732607759
+3d2986cb-a2f6-c020-2d97-2d6b07a8ff6b,1330530112,494830518396739198
+3e74c9e2-87b7-1df2-4402-7ba51c2733b5,153561659,12609953380974635509
+c8a319e8-c267-e57b-c098-9268264b18ce,908392489,12002140268403338286
+ee6b3832-afc7-78cb-1cb2-6d7129b73c2f,862019854,11230132886488864336
+62adfe84-0714-6546-3f24-c306b6410117,3388811337,9217588972676644436
+455df0f0-56ad-f5ec-23a7-3e62da97d3fe,1681751510,11545140335577975846
+2d1de442-def9-e37a-d646-92e6bf674b57,2169272329,8842998115602308819
+e53ec1d1-2c5f-800c-5aa9-941b1de61d2a,589156456,14985970626696072025
+49cf83bb-ef6f-801d-cc1c-baf731cc7867,2706698893,8937591389888610527
+93e652e4-c600-80ca-e83e-2805cbc9b85c,1737165324,9705745595972229965
+7358e175-932f-0480-1532-c8c75fa7c50f,2099239609,9875266026497715848
+8ddebd28-55bb-e34b-698f-8aeadc0e1c6a,880398041,6824084312124368712
+64a9449a-0e8d-e8a9-6921-83b8802f166e,3243087881,9686202419842818194
+5025f5e8-7be0-cd83-e77c-fd5a12746aee,2463431569,4371696575943632025
+f4592528-3e0e-4087-ba58-02bf9e7bc80a,4268340122,8230273347141690290
+36fcd23e-def4-9d1b-935e-2eead909ecc9,1849150685,3671207655346986027
+98392d73-3c45-a766-a8b3-77ba892b3a01,826140606,5383462471865545888
+3e5156e1-2900-a37c-9707-1c1b921f0896,1576247839,4451015828685486305
+a5af6c7a-4d23-ddd2-4301-dae9c487e299,22336902,3549536199920390960
+817f23ab-288f-6113-4f2b-aebc32058b74,1525308714,17190199225781297984
+817bd45c-24c8-638f-0c55-dff7bfbe1d70,3419176075,5360735549253450105
+71645d88-f12b-2b10-a2a6-253054a30f9f,2287314457,14551167218706866410
+94ad72a9-1824-4fa4-d3d2-740c4e8dd63e,3454329011,1436166396245944542
+9820731d-5857-0c23-b8bf-2871a9d29626,2631176690,5340818255985496498
+afc72c14-3e3c-32d4-bd2a-3498908592d7,2952676131,17390845513157844233
+98027162-4c66-cd2b-c6f8-924f54bd5f6c,2975166234,8623576047428883343
+10fcbd31-d61d-e455-7b7a-a171513c45d9,2596038043,13753787920102375864
+352d5541-2b83-1684-ecb0-bb25ced20927,1644958781,4047298645908579133
+dd7138a3-8e01-26f2-00c3-0ac9a793d3c7,2561630022,11292420217418247725
+9e082959-1695-96ec-900d-832f41d2256a,449173977,4354122780822585787
+88d6f6c4-7156-7ac5-50c6-9d62715b6988,2685118995,12556786041583132811
+03956092-88f6-dba1-1dfd-a1faf943c274,2353113164,11860995636322032171
+4c109832-baa8-33bf-5d86-761f5d90c331,1063067266,17036533993828707755
+360a6fb1-a0e5-3d70-f623-278dc842c207,1907063782,12158710555921039455
+7fcdad90-f89b-a491-df77-4adb2495ebea,4219850063,6674711955633660431
+43644804-199e-bc3b-9277-27e451ee0b90,683032225,18418616917140499046
+34297b76-87a7-e735-df34-d38536dd824b,721038747,12812344189914177975
+8045ad5a-8b19-8762-84c2-a5e66e05ba01,1616683369,6424084440352793618
+b281e03c-969d-c76c-dfaf-c0ec7e82e470,3615453614,10099940638764519616
+0646be93-3136-a905-c554-9f14f19409d8,2614183605,15769302893654929611
+68195028-b227-9a61-61f1-06c333e4c4e4,2805608899,16573940605823869708
+da095c17-247b-d43d-12de-607f93604a30,2655060001,2621600487499584763
+7a6bbf3b-8273-d00b-9312-0d00e5524a01,2744130394,15499365375785449442
+a9adef9c-6cb0-4f83-d5fb-a64d0c62d2ad,2115461836,7799109540645249975
+bccad4aa-6d8b-c072-69e0-451a0f54689f,566765825,3262130988657800045
+75943f4a-be48-e14e-3a3c-50dc66054001,1738668763,14891582440309745081
+f62de0da-8ee9-3437-ed64-ba8696764411,2037690230,15053692822256062519
+b48af173-76db-0b20-8cb1-d5acf07f25a3,2148708341,6142768130379126062
+d5d486a4-3be7-5e83-752d-5d4888983aa1,2338792663,4202723653135400852
+a97229e5-adc4-911d-29d6-c28a157e0c89,3108019399,2383680414912308371
+8402b805-b64e-9c65-a4cd-106dcdf63891,1845211263,4398384887840835315
+efd0a97d-2568-f5b6-67cd-656f54597cfd,781926384,4284995920973346010
+9f432547-ed8a-bef4-7ac4-3cbe11bded68,2780777785,6848412819210953537
+0fd10750-5e30-335c-4dac-83320042d949,1227675739,516741001223690765
+88c6c1cf-2b37-672b-871d-8dbe97c970f1,2483795801,677562885347501278
+23281954-16ae-2872-392b-7954a4c7eb7d,182676402,7780324914166340091
+f6ece443-abdd-1698-ec44-4fa78289af90,3501605176,12386264511235051537
+29880abe-c904-9d59-6d10-46d8971bb21b,3663993085,3701606148204998425
+2a8d31a6-3a3e-1a36-8aad-514413ca88c5,624800251,16127447679992920536
+5587331c-1537-8527-818b-3e6266b3c31d,3631262933,6766664771316767127
+dcee25ff-8208-c19f-e6df-23c47ca5e81b,988067353,12715438269863858119
+6fb3c950-ae51-3d0b-d351-8e93348f52e1,2839870996,3874575646362477732
+688dfba9-b196-6aa6-5884-f7a96a576e1a,2422873603,16281092437641851399
+36221c6b-08e3-d1d8-d4ad-e5540c45d08c,2237449414,15930081867090427492
+421b4aee-3abb-314b-3518-1fbdde755e1f,625513849,1795654970990478026
+0b7ac5f7-1da0-57fe-b9b1-b74db337ceb8,984099838,1837539106772988512
+37dfbc2d-27cb-9a0d-b67c-4fb6a387266e,1698796246,3819633263038282778
+fa981262-dfc3-2027-c88b-a918d6c7c2ac,3877147380,2089095672569801148
+8a9a29e1-fe2b-29cb-9cd1-c3c545ae8971,1212918374,8963502164986290658
+bffcfb28-653b-d951-1042-fa92defae684,2143176008,11708045270219376879
+41173e91-a55c-f4d9-4382-db1bb369d2cd,422337261,3352775417236146346
+31a09ed5-eb6c-6b40-6ce3-aeb03ddc2be2,338092230,6761428368416862775
+f5b77237-d456-fb59-04c4-4fe933d622fb,2751500730,15279783939544160555
+ee2b7c32-efe0-5df6-c739-dfb98bc99988,2362027086,3936910889831627116
+a364f102-5bde-e1da-1c10-236d8c42b7fb,1725771856,10957055215635386583
+3cdb5280-32dc-0e48-f4ca-6a9070a37ad1,2560461075,13324002500589883027
+d3079c99-6b7d-a64b-1eea-50dfe6114e69,2255201224,12276286499506290777
+1dc89820-c7b1-fbfe-32df-5a54c98671fc,2220188850,4037169080790769494
+362fa166-fe6c-ac98-9a63-faa77f8cc9b9,714983902,1003119642881124988
+f680d676-118e-4a00-57d5-ff5c11edeaec,2236694742,12658188398676829655
+c819b918-42d0-e4c3-f2d6-fa013fabe21d,3944034684,5166783669858821917
+19f36f58-dd52-0478-8f02-2f4c4b45ac0f,3861359532,13082592439700754695
+85914cd5-b72e-bb26-1a11-5a33d34eb980,2869493361,7393459726423036226
+939bebce-4829-4f87-aa36-0d50f51e6fcd,2811992803,4846622927971095312
+727541c2-1c9d-267a-49af-26b7b8bcedeb,336948678,17434927005796197792
+1f1fe979-57ba-65a9-8315-06826feed152,618922073,4335853640601063762
+7d9a0ef3-0721-51e9-c54d-7bd38a99b433,2790339754,9643255919085822086
+4a5fa5bf-8f99-ec90-e372-075b82a36f2a,2799541158,17717180361178956111
+1d61a3de-96ca-7bc8-b58c-1f6fceba8fd6,2660610990,8975425590429488857
+fd85d37d-691c-0b0b-8657-4964aa14d2ea,848994232,16826850930289802090
+77a486a4-958f-38ff-aad2-6c42dc1c6b29,569822519,12295102687814514601
+e4d56006-aed6-a1f3-7596-f32e6acae51a,9279701,11309498145659921289
+afa46a62-efae-1d15-189c-c86f34b17ca4,2062532963,12182839578240796816
+2ae6f480-b32a-b53b-c385-c5d477bc84db,493060995,4442909925970953218
+583bb85a-cb8d-9a06-28e9-c70466e7a544,1590014189,11952171719822341149
+42408789-b2a1-5ba0-0eb2-3d4cddd2f7b2,2912076908,9562297293772708870
+751f086c-ab99-4f00-9f6c-49ee151316d1,2232543018,17233616992553132093
+bd19763b-bd9d-6303-5b94-8c96cc1bfcdf,2896133067,12897354444465921233
+7547a6ce-0424-9f9f-fae9-772093f06487,1972638218,11074449471693221171
+4307ed87-8209-d6b1-9aa7-cebb36c5a824,2042162006,973208473219370136
+af3558f1-7d67-555c-7326-77375f8c52c7,2179666876,542534358491269883
+ad4abddc-39ca-1420-af39-adc16e852839,4182725293,12678811649973801018
+80825329-b686-866e-7a1e-4e34c5ddf424,560213012,3841221823333701132
+17ebc80e-46ce-5f7c-6382-4922ca209c18,4087279439,1209401598658151740
+9c0d4f2e-58a2-decb-3df3-c16b4be85823,1115892606,3995990011561983777
+189ba87b-0f3a-a5a1-b730-86cdcadcc080,435803255,6069154845248451962
+29c623e5-5021-b2fe-83e4-48a11dd9ad0a,744463372,2416967156555108612
+2a58d4b7-bb3a-918f-940c-19a947d1b411,2879693857,10541725459692357162
+f4043280-149f-dbf1-3f2d-78abcc8ba1ce,3662347606,13056574898041940938
+c900f19a-aa4b-f272-46ab-6ac70051d2bb,1296162805,11880999259429802057
+38900fce-6a44-d2ae-29d6-3869d166287e,3903873244,2162980018944878835
+e0b6b4bf-0f2f-44f8-dba1-933c583e2135,3001170060,5907961682524603160
+bee5b30c-d552-0a8b-1716-f9e4a96390cc,224657561,15757851618314781643
+70c02c0c-344e-d429-d979-fa8dd23df3d0,1169445988,7877175905571674435
+1c69e97d-809d-b58e-bfad-58288ca35ac9,3984432258,15742867201884743611
+ed8569d0-f7fa-2751-e870-fde1ae7cf2b0,2085340929,13540417751460800486
+c0db7f5a-ef7a-8fb0-2699-d52ddc7e61ad,2315201617,15732402211086403203
+3a7d1ff2-4704-61ef-dbd1-7709cb70dd8b,3024642853,11664101106896666374
+ac4eaaa8-3720-abc3-3a52-72b673078a67,3836109700,16965453136055115463
+4418427f-22ef-e122-a27d-ffc0737697cc,1461087748,1485740393871261995
+50246355-cb38-c9c7-54b0-b4f8a98f742a,4245081863,10349925149375417864
+5df5d059-931f-eb75-da9c-a065685ac99b,2983692327,14469511246793243669
+9eb3744e-2165-c313-2387-8026566aa98b,2746305751,4905723967220968883
+419dcffd-4049-799f-7202-72c057a73d28,3516837677,7604450585035615769
+3a496337-e6fa-1f27-36f9-983c6f5f67fc,588475467,6528313241380201045
+fc158410-f3ae-091a-eabf-5cc7c623ff3a,1964719673,17963294652787741396
+428bc640-5af9-4a1a-333d-0af76e0900c1,293195656,4275927947411300617
+30a03379-d6b4-8ba4-6db9-95181c1f09b3,665946035,12793361007133060504
+38fdcddc-1f36-c10f-d3ab-ff79a2f39345,656970570,14184091996030964783
+f00d2d88-45cf-ef4a-36e7-7f4f8b150c92,3904429653,17832278984065957874
+f6491e1b-4e57-961a-0611-c8e33cfb6cc9,3532475084,13732057404537588687
+1a5dceb1-5f38-b708-916f-6db8602594ea,3907153534,12883167280082284609
+65a0c10d-e40d-7ae0-d661-133dd73076a5,1500597613,5741449759032210556
+082dea40-ba60-a95d-48f7-15226b7068e7,2027585032,12513699407832307001
+f7a77fb6-9797-9112-908b-50816ecf6fe8,3790063899,17068972788350934560
+2f9c6fdf-3187-bc24-8561-b98e53a926e5,2628401577,13359866870110160582
+ce390d78-0438-96de-0d40-c53ec42aa681,3485999721,15068506435591179822
+3ba003b6-689b-9dcb-2ac1-73b02c41ea95,990888624,805438315623432115
+54dd0287-daf4-45e4-1ce5-fa891478cabe,1601489370,15494547592882412872
+e0435dd9-9a36-3950-e2af-542bf0da01e5,1277225187,6405213667884323652
+aceb45d3-9bba-c35d-5cc7-7fcade99c739,2283929560,14470825793659256793
+ed71b0b8-76d9-acad-65cc-3f24f29cd8c9,2840701471,1617918977182172873
+07fd8262-096d-a260-b7b4-419f3e99b5e7,27687237,1925519469832065712
+8c8135ba-4557-e7d0-a13c-a09d22282733,512519063,4015180278450093589
+6b7fc68f-9cdd-9373-e11f-577131577822,2562281426,11551095501420406615
+fb4c74f7-1649-d81a-ec9b-0991e8d33f4a,1748732581,9231092409196071764
+22111776-4752-37e3-d33e-bcf6acaa7b17,3521229774,3282330331645369578
+3d6243ca-71e6-1756-44da-6c606a6291d9,1011790681,6611402585570777625
+9e61139d-f971-c314-bf4e-1f0e7c3a2541,3965350861,10851631336105113167
+34f991e4-6ce6-7acd-c3db-dace506a3342,149382663,2009312547504503576
+f6bccc75-f19b-842c-10db-b784ea9a2163,946290630,14399086768129908757
+dab5eb1e-5f0e-5b41-e39f-40791bb7b706,1717248978,15287332431383350549
+6079a364-aac9-5b48-d4ff-9f6d3bc9a72a,677183963,1443283358364912080
+a9b1fa9a-d78a-e92c-96c6-872a97981e46,2483368782,6764996661447089542
+95057b37-fdac-10fb-d52c-0217b3e99153,2001002572,1975524325213065712
+8f865f05-e861-01f1-da06-f26674a6c6a3,1927234972,10257687760234096081
+fc326f3b-2b02-6171-ab50-8152d21e4d91,3131164833,912505678170946837
+1470e984-781c-d352-a27e-f293a474d846,38926196,723070216481455973
+5ee1e8eb-9eb7-01a6-37f4-ac6f0a50b9a7,2811140221,4412601234392230657
+605a677e-06ac-a30b-857e-bba57f6c45db,894893881,8526753727163573006
+0f60ea79-8ab2-b374-3fb9-1d38ecbaf6c6,235721099,3462906436821413663
+2a5be9b8-2491-26ea-b583-7ee682ec4336,162882968,9375903596762229327
+d0f43619-2d64-365d-3310-d667c0a3c630,830226560,6097355247819186458
+7f1c5f48-7c6e-9c3b-6f37-4c7275f236e8,762858357,1297113836759774415
+5383be5c-d644-8a18-4ebe-2c760fd44698,3365509209,13782564537796845589
+e1be6165-e119-c6ce-5b81-95014b17f9a9,2347388725,12560473767770537693
+897f14a8-fa6f-de6f-d239-9ae93906f4ac,698093019,5337516902623557411
+d29de7ff-ae90-d98d-7e72-e89a7dab286d,1999420310,3307370805879864982
+26090475-8a65-695e-7a3c-2c9b440e0355,1296799315,31873233570272382
+6eb65880-dcc1-fd6a-fc87-31e8e0e8406d,3827239501,3551742300823989171
+cfeafbc4-25ae-f839-e1dd-6dfe4f57eddf,2448086182,9157643841916869765
+4d0a38e5-5086-3381-6cd5-e4ec8940403c,2948232272,16671052248626955651
+50092b3f-fef7-494d-fdb4-4c2f541a8f1a,168171954,11296028287993063845
+c2d116aa-8c80-a731-28f1-3319b0df85e5,2078676608,13929566538723676753
+d7f3663b-9a24-b540-a6c5-26b9f0d744bd,1575123157,9640113742523635573
+54c0fe27-7971-fd4f-0f17-2c83e9257025,1857424054,9633654669934141033
+1ae1521d-8dbe-915f-d473-51f553777f11,2703965239,6508717883142579189
+2431ad4a-c84f-2df8-d11d-816a292812fb,2413835416,11014990923854158808
+5249d22a-ee94-0b0f-d7be-6e5a8485c3ff,2224305720,3913847798526114510
+911308f5-85dc-2308-6c92-9c267c7e9db6,1944435667,15169800520476641666
+1ab17403-416b-af44-41f2-c5b001011153,3328911542,4467863161418827324
+6e002aec-a60a-0a5a-06ba-009f31278514,3928864393,13087319850348408848
+5aedb4c0-6afe-7276-669f-b4a0f101e2f1,137754148,281746530195708510
+fa16f878-c76b-dc66-d239-ba076893610c,2912762408,5803002402120447015
+9a890f1c-e07c-19c0-1407-58ee2899c6a3,3054856945,16798368887040786702
+41e48b89-7992-566b-01f0-720c5ef76fbd,747393415,1865301102934981625
+f2dd97fd-f21a-3800-b1a9-b657ac43b1ce,1348580566,11942683425094215670
+617e843d-3b7c-2a0a-d3a8-03e1501b39d5,4037359132,8491835156627234860
+f23b2072-dbc8-264a-7fd6-5a64dcbbfefc,2703728818,5330242923133058591
+7478c2d3-8004-2074-fc53-fca671ed4965,1598738748,2321233772256171778
+39ceca87-379f-efed-d3a9-aa42be2fbc07,3629798810,13304982445710839651
+f4309ee0-3667-3329-19c3-a5dd0c69dc92,3048035880,3908326237675126390
+2c382031-8561-a659-c4a6-2b0073aac684,3975339777,4056331601154872708
+bfa7f0b5-a457-e099-1f39-3afcb0872e7a,3274568440,1074268528846214893
+efa23ba7-f54f-aaeb-307b-08b7a96fe45c,109734686,15887981859696872488
+d78cbbef-4d5e-19c8-e623-4e18f02f0f1b,3091736232,8123764569804729861
+35d2e322-a710-83b6-619d-9fab78b8e7ef,3292526443,10675143205404295454
+f057f0fa-6506-8bf2-758a-574e72e5fb9c,2149005078,12305891665564462782
+6db16731-5675-70e0-bde3-8fa5ed2b5a10,4250429407,8000890947949312205
+3eb6d53e-98a8-ba55-518e-e5d98587a60e,15444063,2660190095053648729
+a93afca6-a31a-7be8-9c74-b447e286aa71,3059338144,4492951901508076689
+d8565496-5093-f28a-08e4-e85f1bd5aa60,3981165445,15330808757479521865
+3cae024b-f458-1a82-444c-0d48195947c8,3429296357,9719407448248064107
+7405e23f-e6d9-e99c-de00-35272dd06146,58072278,17275843448990441385
+906c1816-35cf-cd78-b984-fbccca9ffa92,2584836264,4593966934053594668
+2c6374be-5b3b-6e94-04e4-756ee01a2e1b,816868826,5476550614493205868
+6a6b60bf-2757-091f-2297-52d49e434dfe,126482164,13057815682083609071
+d8b017b7-8f70-ab99-afa1-123675984136,491490800,12222519135133111341
+b203601e-064d-95f5-0220-e8f02c0390c9,793332297,14139138058739424347
+c38e487e-7721-b8d1-794a-cf72c22c0301,162920758,13393287217917594939
+cd8ad6e0-0fe7-7dd5-2b7c-9600cd232adc,2127477132,5962649396424948950
+eb2ade73-956d-fd5b-074d-6d744afc3251,3437852017,18102377550058605717
+75e54355-a08f-e6c8-53fe-fc7baad63f94,4162025962,3144270292772480694
+1e3c083d-6322-f452-8a8a-8f008c810458,4163692855,11012177215396949334
+0f754ab0-a315-3dd7-86c8-77ed676b5b8a,1591222680,15250741081574341778
+d0cbb7db-8fd2-52c6-e41b-59f2b07e0d4c,3797262189,14029943666893308566
+84633dc6-99ec-2aa7-2519-ac84f3b86b78,1551426407,15908173461252625363
+bf16c12b-c500-76d1-b3a2-652d361af7ff,1030965781,10878943947639975704
+8e834d25-5bbe-6e38-6fba-f32b8e78ca14,559898810,14162882230773346497
+9aef5e7e-4a8b-db9b-34df-80f2dd9e9fb8,2181222810,314561451407238924
+5a6d5538-1e6d-76c6-2f3b-1f3f718b2f33,1975179978,11094667671584510005
+03668bcd-9c9e-b582-efeb-2cc58b6c5f53,1394553216,10642492747504687747
+2f1f147a-64e3-9134-ba44-95406d54c47e,1400614662,12623116573265782238
+f66ebee2-9535-fb81-99dd-9389d653964c,2076781341,12093185168289767883
+2e47ea79-c02c-ee52-dacc-7380aed4f70c,4137831939,2124786729208667961
+08937ca8-361a-c643-63c6-f258d9acf19f,127999579,574927509304214503
+3b2ec906-b079-1cbf-36f2-ec5292faadef,3917013803,11396395009933800932
+bbe710fc-46a6-e043-7370-ac1bec23ffa6,1352825980,13014700753219280199
+a7b4c000-efe6-0fb3-322a-7cb9e7372142,3302498981,13578087737030279460
+7a7747fb-160e-c66e-d228-6a4a5089d5da,2873417421,1308864519626706971
+a5c886c9-e7af-0ac5-ec45-9c60783b7ba1,1218276675,12229434937824833949
+40464b3d-305a-32f6-ed40-da9e28f10cc7,4089336674,5057422897095901155
+4db40a02-74a2-ef1c-5a1a-b4cfb3a2d51a,756747428,16380919282126805544
+d6eec28b-20ec-be4e-69ad-a5c07f1592ee,1247502764,7191722280514527477
+c3a00b84-664c-8a38-d755-10bb578ad787,3670540812,15931833305286191508
+30ef16e4-b403-4689-64dd-20d58c9bff9f,1096640042,17786593879698171239
+e4fb3c96-fb9c-fe5c-cee2-a037b317729b,3245008297,6394591451843028121
+a38ff4d6-5fa2-22b3-1ff5-5d98071a0a80,251689101,16445678286915942703
+24c718f6-2877-3202-3a45-ff6511da03d3,1661345340,6927361768760977522
+d14c92e1-6218-f170-9024-3c545241d80f,1517564788,7582153019948904252
+ec59d4b1-d7cd-9d03-1098-e1c124956cdf,1029567639,4991490286682230573
+7afcb636-0fac-c8c6-06b7-ce658a434b5c,458869711,16310385899191835013
+a33eab08-9c73-9220-5bf8-fbf6794900d4,2212470788,10993622593294841056
+0160fcbc-9d82-190e-7a14-646c55954303,28741119,6223635207542116003
+70ad2b73-d822-4467-0c8a-cee5d7bc51d8,4236018276,1927943717230645015
+b4dfe7c7-2641-aa3d-8f71-24f2149ec4cb,2508759724,980776854284041415
+8d9b4b44-7a37-52b1-5f9a-285025103953,568948789,5867505105742488926
+a454e9ee-0743-1ac3-a18a-124a3a1929eb,681103854,4151550638750581586
+b52698f5-6a13-93db-b033-c239254f85be,27145861,6087357288721078007
+102c1458-d1a2-e59e-28fc-d862dadaf91a,2199258582,15038735631888372145
+80627340-f617-28f8-4a79-cc0890b5e569,568037977,4447341702706629672
+aa17570f-2b57-59c1-6dee-a6165e244a1d,3397020973,14226074701322140980
+cf811950-9688-25d6-7663-35ce88391d2e,224645896,1253023719316868044
+d536ccc6-226a-9a4b-d216-f34b901dcda3,3003097766,4268671898975132653
+4f2e35e9-7554-1681-1692-3f14d983a58b,2510833988,9230165918626815356
+5c15c1e4-5cf5-5fbd-064e-c0e84172ae43,786320952,3209432291308947301
+1f6fd7c3-fe90-b81e-9407-add5a6430b27,2902951792,9666006926218850845
+5f4a1e5a-5a9e-b42a-ba1d-f1cccb3dc8c5,3566656985,3480436477760173592
+6fa9a717-490b-a834-31ae-3bca70c411ef,2304024136,5847775706942111980
+0434e1c1-bc9a-62bb-c749-d824df49f5ff,1396000837,15578826441293520343
+ccc0970e-63e5-e7cf-4ee1-0b203e156e21,2723725052,869098483357933444
+e22c57d4-468b-71f5-3355-da7f002599bd,986164917,12391863360812233373
+2670ce17-3b34-a12b-aa52-662f65000329,2221150158,17965403886247161139
+ebfdc46a-b9f8-e651-c629-e013b3281e11,2898586378,7290398589654737945
+120a0a79-7c32-9883-affe-01f6432d5aad,3417242286,18269233048911133294
+fb5b53bf-ad00-3749-6329-040bccd909d1,2961994385,13800257325500955398
+5f5367ef-b0b2-6d0f-1a8e-6784c7a50ac0,1046068837,12036337420921045034
+0aa75271-a01a-cf15-9fc0-fda5b1c4c7d3,3943050750,7585598936328160978
+a4564e2a-c9c7-cbf3-e7e1-e18146dd5cb8,61086515,2335049117216876246
+ae0c52b7-574d-3303-8606-e837e775085a,3762169580,7722026514590452677
+30972c38-9867-c095-3917-9e5f341d3e93,3892161184,16613793221661773264
+c358a09d-cce5-5ba2-5199-fdf52aa4b5eb,1861210839,17850885409649390503
+47ff96fd-30b2-01aa-2c00-1340d05217bb,1871104302,9678008429513511458
+cdada59f-84d3-8e3c-11b4-b4a8437ffec5,695703597,10979317075783877082
+afa5bb37-3867-120f-6dd3-d6eda3b1290d,1733399842,11346031590880061959
+f9e198da-cc88-d9e2-4ef1-1730ca586a51,983556026,2670298566222863278
+03a76c8b-496e-b739-9429-3f7799473078,1470828277,15936004824923654908
+d2256085-5731-07a7-1681-ff19b05e793e,3214115629,11115754266656885148
+4b967712-f792-a1a1-1681-359addc9df79,3382792633,5631176323755108720
+e147b652-6609-9c86-c1b2-d074f91f4377,1568541843,11840270725013771372
+f336b351-77d4-2a94-b9d6-3bd16fd41d32,1615393508,2489821984107549579
+7866d246-8450-324e-e5dc-bfdf0769cd65,1084395373,7142760573393133268
+e62e1943-8b96-5857-fb53-e58b221b468c,4125591458,524465928238512482
+56f59818-3905-fb3e-0a1b-e0f46e32a5ea,3792122222,17718561330743608046
+58d9b568-407d-e723-a183-b39b86ddcb65,4193214587,5167189513850210080
+1220e871-bb8f-2b68-1573-aa5ed6224b29,3773337979,16325035447747531632
+64c6cc8f-4ad0-93e6-19a3-3086bf68743e,2608572610,1315594414120604248
+9c519033-845a-6a23-de23-f56217a022bd,1183470867,7889868581435145727
+4450e203-c1f6-f529-3740-b350eea7ffaf,4025875360,15143646350285878583
+c719b002-af17-bf3f-5041-7705f305f782,3207815894,4793884149498467996
+3f4e57ce-8e65-79f3-825a-8f211d3794c2,435617520,6777475795180871292
+03d5ef19-e39e-7fb8-337b-327433de88bf,1599666530,8446702736362851415
+88c80bda-980a-75bd-1fd8-62097ce88169,1194621877,11391799315478021353
+cd216be8-6d7f-d1c8-9498-78a6f559a9b0,3583223450,14452437302696092090
+b8a68a27-004a-75e2-9109-e825daf199cb,1347609301,11714741679584047714
+c8bc3ec4-da98-7a4c-02e9-07ecd77dfee4,4265794936,15659546207353919804
+1268216c-c6d2-2f83-b41e-0154fec3e8ac,3770993698,11945517011772985931
+39766275-1b57-a906-2071-8474fa833d09,1866659385,11847765192411106533
+bd2cdaf3-5daf-6a9a-edf8-5386959ebd9b,2557074026,3267913534086754685
+9b1196ae-8991-70f3-1cb2-c69115cd8990,3930794815,13341015994100293270
+d7e6b387-0058-07c5-4c05-2cdfb7b92004,1867555747,4473507754416849225
+ff3aac17-9adb-91df-3eb1-aa20d9c55144,1453404853,14228397793633993261
+17abec83-d5f7-26e2-2058-19d47387bd5a,121579935,14437353846618435389
+1acbea04-d375-21ff-fbf7-7c087fac9205,713688520,5793226344432574245
+bf8b6d52-900d-c074-1c2b-4c2ef25d4402,3251500053,12790571572933371193
+17b8b822-ee6b-cfbc-8a55-7c5a712204d2,3688364580,7252359370012522725
+2f350713-c060-5f96-5f91-43d56eb59591,448088833,1481447132925264118
+93fbf225-4150-bb54-b7e0-b4608c06a421,1750141632,9495873445170172468
+a378a89c-7e48-ba6f-2ee5-de4adb257d9e,2471961362,16556876884750301538
+c12a99a3-fe1d-5f4e-2b1f-df1b299233a3,1417923238,14562656034397286024
+8e67744b-0cbd-08e6-7ec7-44c9348f4e8a,1382561735,5091498525604604059
+ef3eec43-2eb1-3ca3-d432-18f1967067c3,3893641515,13056328911969865126
+c027b5d5-b769-5a7c-7719-6480fdc129a8,1177327825,14310066995543609019
+c490435b-d555-b24f-bff7-bcb6ea861f95,2691747280,7103883547342743445
+6473cd5b-1783-c101-e530-be3ae898cc44,1328785903,1859882000424870390
+59d26f0f-c259-27e5-831a-330ff615a2a6,2872507722,4397118475840199246
+e4e6721b-443f-4faf-d297-7c6546b3cdb3,3763075752,14760607047710153382
+f8ce100d-4e4e-6578-3d1a-4f1b0a60fed4,3015438887,13911982146774405196
+48fd2325-bf9b-d115-c803-5cd9a7260e40,962454044,10858785072961845999
+e942c62d-00e7-b3d7-7d83-4b7581321568,2392281489,6571144658995195353
+dbecd1ad-5389-fdd6-7168-943a98991a22,574053233,15604403331209118085
+73d73902-229f-6118-b366-1e982034de09,3964495221,6730197434521143290
+ce952b6c-c25b-ba33-8433-b93579800566,2659953059,14790839102800156528
+60684da1-0125-7d55-91ed-aa960a16043a,3190562237,3947724208565780141
+da6f6bff-d000-48b2-ab29-628cc46d2bd6,1755042988,108192235396496427
+f6144749-7aad-a19b-673c-315991186a1c,422289108,6510541297770410086
+e17b5c0f-9b06-d851-0f92-c718d3ece3cf,3372912413,17262208914025003263
+5590869a-a489-1a72-a55c-03655837c8de,1821759381,258927398357577394
+28794e0e-d7c8-9d13-e8dd-cc63596663d6,2286854015,6012783525937642356
+51033485-152d-aff7-03d2-cb6eb28f743f,517113125,9927834491413963425
+c1c1fb6d-3493-dce8-e63f-f0a6a2c72a9a,4048628997,18054348038725596007
+69fa844c-4a7d-0cda-d17d-970bbdc716c5,4281687704,7354688610912195816
+00d6ce5f-29dd-aded-2a0f-84da0fb3e026,999583030,11980665565846959174
+22fcbe7a-13d6-d85a-e15d-3299485242d2,2636671862,17531807702946636597
+32ca65de-ca89-cc09-08a9-ab9073274c40,2529790740,9842633611150823710
+0728f926-90c8-20ab-ed75-1de25f468494,1887411535,12131746919040127680
+de1b03f9-73d9-21a3-34dc-4279204aefa3,454602847,9915221504725331383
+5287e001-9689-5550-df14-2ea794f2f7b0,2130630640,144803369714500171
+ea1be64e-601c-f8fd-3f4a-dbd49bda58d8,337865499,2025099263074838100
+6ecc87c4-24a1-3193-80a3-5ecc891893e4,3172565396,8121312384013749781
+f674fead-5884-461d-90c6-94ab2f3aa377,1348252644,13584567717481062623
+fc50a1e8-6f83-7c1b-a254-2191dfeb915c,3911414992,14649300001448805037
+f37c3aac-5a45-2fcb-d7a2-69aee7f0096c,3107038949,2917356040465133366
+a589eb35-2905-7f56-32b5-b4b0d0bdb385,3880561889,16107454729584424230
+337824b9-305a-3281-a6ee-b504dda5f3be,3417838174,5006040679396522413
+9c9dd81c-8371-c923-169f-d36593f28101,3197461548,9608188656666356385
+4efdfaaf-a01a-e340-363b-86da63c2d335,1894984605,12267279079982616265
+9655abe2-fcea-0c16-c7a7-a0f0b87f1dda,3744247410,7017217139772528562
+3937ed1a-972d-6b12-6a02-05c723bfd6d1,3831345271,6679241576783497338
+e6167df9-8762-82fb-ed32-da1af5c02893,2806596414,3170284484186161439
+d683f39c-8ff0-d392-9155-1c221dcd288c,1232933604,5531406581768375258
+ca439bd8-2cab-ae4c-ac75-e40e77b6a2c0,1898949164,15943534590400910890
+c3f955bc-e0a1-f8c7-0081-fcd64761c8dd,697866988,2309732339283802506
+99d0c8f3-78f3-0d59-afab-066d69abdf6a,1418568422,12223406945024882985
+14d785af-f631-9f9d-4387-815425102d4a,1531155220,12333008600310717432
+81fc5c8d-c8eb-ef4d-3019-e2e0791cb81f,4084342140,967777757680936356
+097c9812-abec-5cb6-b1ad-a52c63c52ba5,4033819825,3563461833291777336
+a842d88e-50e1-4221-9379-402d0df9ad86,195407880,3901271192015978936
+c2b1bff4-2978-b0e4-45ab-6fe4ae9a1819,1272933567,16743734697555678894
+4f731d6e-b454-acad-a364-d40e5a191296,3333142290,8203589055432324112
+014f5428-bf77-1112-a9de-c48914d3525a,3079817750,14231789770081949626
+ef3885a2-1d3a-dbed-e100-e8f7216ca699,789535812,17039421317680896181
+149bfb60-7b1a-5b18-a891-dd693c43b2e0,4092448881,12211605838007476173
+6bc1c386-fc9e-02dd-5c9a-56fd7e68fa19,835490365,11493376672296464664
+cc9c31be-49a9-e4b4-e35c-874c748bcf1c,1982746470,7511260903615277267
+e9fe53f8-d21f-2de8-0821-b8ce702e7c10,2237630830,15482469137876677996
+265e95e1-3e21-1c3d-7e8a-d58971e54654,860239042,13910563958071871988
+15f1f32e-b446-1a08-6598-74e8610b523a,1294160764,13498925149735101553
+b439c6cd-df00-7102-b502-cdbe5d78f2e2,3799234434,1272918681693919449
+a26e8d98-3f0a-a49d-3976-76cf7a884f30,4085887241,10134854646613005422
+52bd16f6-1f94-7ab4-cf58-b550dada9f51,4202950626,109795187975397340
+05b36173-962e-92fe-9f46-ca4fbec681ea,2374937908,17917895659558296512
+7a477591-1130-7bf1-f034-19698eb6da89,2172073160,13424690568785656041
+b5a90069-b783-76a4-b24a-7b04e511c05a,3593471473,13308198269385904797
+b4f176bd-856c-592b-b6c5-1cc6aa0ace1c,2173240681,4550124945584887189
+6ef914f4-a226-ea65-6d8d-d6a488c6826d,582240596,16703190186453113806
+45341eb1-025e-039c-d579-693e220cd8e6,965173591,11759910687354033131
+518a1d3a-2dd9-6383-d51d-47b3ba2f93a9,292299649,18173603091707818787
+171be786-a1e6-93ce-6d07-6a30da066c42,1805469233,12863954650360996163
+01eb4871-155a-fed3-475d-e5ad5c4041ac,3921209007,16864523192735348467
+48d41909-90a4-6cef-d138-45f4a12cf5b3,74962802,5708898799881088770
+2b4e966c-aaae-65ed-b13e-7bf9e463dbac,2566631589,16021534768753017683
+826a348e-a06a-96d8-982e-bc9522bb05de,1455403514,16599515703994535397
+c429f8d3-1526-2c7d-c704-d82d7fb58096,2053856128,9850174128801428274
+8bc23002-d1d9-46a1-e5bf-ee723dd65d54,3493939664,16183731869073679759
+8275d01c-736f-8c09-921d-930aacb29283,2353216016,17334135137790282432
+7d593ff7-c905-b8cd-bb19-ce8560ca631b,1356138005,16349046713907219781
+590ec15b-a9d8-0904-a20f-f582f26188d7,3621049818,1076622406437774641
+a616393c-d7e9-5b1c-1152-e335e209ffca,3972567306,13805245448947418678
+4eda0c28-ee10-6b32-bbd8-fb4bb00a540d,94485560,7994808250924096307
+6033b180-11b1-aa15-a91b-653665fb706a,1712589773,1452702471533814229
+1e861787-b606-b9c3-ec96-520f294b14fd,1674428861,9875262968800820174
+7c8b91d4-48da-39f4-bcf3-fd4ceaec3a83,2237410983,6174073646510061888
+6cdd86a3-bbf0-a0ef-d901-41cdecb7914e,376822479,18320870372046452355
+87c9d4ae-0f9a-a6bd-f0e4-4b9223ccf270,1011871324,10381042534656058847
+55fa2164-04ab-2a6a-fdf9-f8ef669ca59c,3830887051,3869245906755392968
+5c45e138-180b-44ad-5c90-ba04d0ff5d62,1430764084,4911973575589990409
+3f30e049-68c2-c53f-1260-d63c86ecee3d,5949898,900496021009307226
+12d1be15-85d4-7191-8136-90f999b22ba6,433674920,2229434098158329585
+6dabd7ed-d900-8e83-c199-030a9aad41e2,4142403797,655713379156064034
+c3989db3-7952-9991-a68d-6d5b73e80453,608808096,13610295742259738541
+2ce39a2e-0cdc-5b4c-e64a-66cf843e05fe,3088787513,4581564985122320094
+c36d3e8d-6b99-867d-19e9-fb4f673003f9,3667917564,14923655937478588069
+498a5c53-b449-1014-bb29-4dcd5cc0a27b,2371781496,3171371599858000741
+48e338bd-79a1-e0e9-4d6f-c301fed805aa,1107723522,15400535867913024921
+d1d937b9-80ca-b07a-123c-2a116c4be67d,1272741575,6653694576981053703
+bd84d7c3-e4c1-1fbf-5ffe-efb8696f28d2,1207279353,18268102628824308837
+546ccb93-9cd9-632e-98ef-e30f9b7cef16,1370593436,700693575620394247
+0c940f6c-d80c-1dd4-131b-5c6379b12801,3049395403,16815987496892416245
+1ede532a-735f-9748-48bc-217c4d6388ec,987512480,12869391317804195952
+5ae77e9b-9bb1-2028-01df-a71c4ab88e85,1199583245,15389815052183029612
+46e12a75-75ee-da28-e850-afa944240802,3079611103,5295881790563813051
+8f9c0d25-2600-8771-340c-d8eac0b0de27,928541347,8923492892180255064
+ff84d233-5aa9-81f9-e672-9f260147d557,3735207570,2502892745470120230
+a1127f07-97ae-85f2-4d3f-2eac587008b2,450725568,1017661293933841888
+f3a74355-0d64-cba9-3e53-749958673189,541739510,282614222006660395
+3e6a8b88-0ed4-3d04-321f-1266389386a5,2077737678,6927934457110921593
+ef062f65-59ba-9397-e309-17cd7ae6cd23,1883137531,18037839261533920837
+68f62722-94b2-abbc-353e-48eca91ed81f,3121860631,13705960134875920679
+f4dbc8ee-d689-77e3-065f-39fbef3e4aab,2309865455,8796842420872512912
+c080c5ee-338c-ef93-2587-9ad318337da2,3819642778,5868430396542837031
+ea74370f-8a8c-2cce-506d-ccf1fd177e0c,280214619,16470203472801679866
+97f11936-b997-913a-89b5-a78bad7a6943,3669277789,7618023367341480372
+32a5f69b-a3cf-a2c0-9a0d-4fd951a6fc2d,1881550352,16905359086582500821
+89b20893-397b-2075-310a-87a9fb98d437,999292247,117425198525784985
+a3b20d2a-b120-9723-ee11-6fbb76633243,4006180954,1105565916115560799
+24132694-409a-cc07-318d-a8bc178d4933,2197169824,3525497359994995170
+fb285062-5fa9-4005-dad0-12b63d6e450f,2841655245,13959193548236089527
+39256523-339b-74f0-2f8f-3efae6d3e5e9,3408985228,2548832606459289913
+396f44d7-a614-cd92-6d0e-ca72abeb1c14,1978575502,165109882733437618
+2e71ee8e-bff1-349f-c9af-b203881d22be,3201979158,4161236231663037169
+1d856249-5f78-9f14-bd56-26d461b25da7,2994172455,8840287303857300379
+e00c70f2-1cb4-30b9-43c4-aa451e2243b4,2829145762,11492183947686534591
+c8f4f47b-845a-c4d1-9dc1-60111babf618,402138611,1467529637479487887
+809ae259-8dee-1b55-1f81-58887999c85f,608548140,14241295504140872885
+f87bdf51-e03d-2496-fba9-12d4b60bcb2c,2242365213,11331004623598086020
+08a30417-1210-0f1f-01ea-68695ce0ab03,1469915359,17851815993742012388
+a2f5a16c-5fbb-aea5-33f3-cc9ecdb64cea,433881394,12746337173133553785
+b1250e0d-4815-e85c-514e-a4f5568c4c1f,117725103,5468595206564060672
+5575030b-03be-a84f-8138-e39af3e6e1c9,1901439396,784862249265167933
+07a21058-00e1-9b38-4ada-7d865a483fb7,888688753,15123041492806384693
+d7931ccd-bd8f-e292-6041-ed8f22335c75,4212672701,8290366248006017037
+6ce00f34-44c7-47ad-339a-4a5cc5ebe9c6,1013555280,16750515975748714754
+c9d912d6-d0a5-ca7f-bbfa-afc4e030b7b2,690069375,2323802492162869773
+8fde775b-24f2-c51e-7427-6c9f816b7bf9,1654634575,1373458785540888757
+a0e246c7-222e-d11b-7d88-e685d326abbf,2459519624,8027234107754038119
+8df4844e-8cea-bd76-fb65-42df2939b255,2385452361,11154282986300285963
+6ddc282e-0d92-f14b-a8a5-6ff07c107fcf,1547023360,11593024515071524044
+fb45867d-196e-48a8-4f39-e749d2ca5029,774276938,17955760545457120916
+e1303e25-b44b-4bae-ee7e-2f0f745dde54,1663548190,609793239937269375
+2ae61197-1d12-947a-9cd5-1724fd4b90e5,4099959229,11164611640813366628
+07be27f9-de6f-1c44-507a-643fce464954,16403220,6161716640809682815
+cd59f1d3-71c4-f18b-e935-7c6cb7c85c55,770837151,7851269339167753386
+f0b9f70e-9551-f00e-0902-37e551c8e786,1632969681,5359606701880237059
+d616138c-01ff-26ea-982c-0eeb813e1875,1474417692,4683105271332626738
+52719815-bea9-23bb-c2d7-b76b0a0463cf,174494756,8187367890048530384
+c91f4520-de7a-2c98-94cb-3be6918cb8af,303161639,1194722621015468969
+b97963e8-cff5-7797-acbc-4ad1c677eade,864415004,4171228315375917437
+6ad9b55f-3071-9929-b832-1c536dc3bccf,4144413925,8867057334774945313
+388efa7a-16c3-3a93-ae85-f1105e44b8f3,1338357079,11054937374847106469
+781002b4-6606-f979-1830-bc138664290d,1473094275,10889226919732966773
+0823a1e5-e305-5c56-e601-41619296c6f2,492976283,3557609977286091914
+e33db921-3b31-8a6f-61c8-0d059e5d85bf,643931424,4263564698398138503
+5b2e7f46-8efd-6a3e-a0b8-79d316afaed8,3406636689,2307986602502675071
+bbd67af4-8ed7-b859-5c6d-42d8ba310cba,4015690590,12110112731238000558
+347ea056-7820-2581-98ac-fff69950d83a,2933325029,14629115735313823434
+ef95f043-f514-345c-3ecf-0a56c0cc7ed9,2244554626,6018633373094826700
+8e424292-2f64-b2ca-e07f-ae02e374a4af,635049011,5064649572203381373
+56e032a9-f3d0-2492-452e-7f533f005c84,1298827671,13569482165375160807
+818c1806-16e6-998b-6779-021bcccde7e2,306157604,14003510256140708602
+92473741-b300-51f0-3585-9a66cda0dde5,3468326787,12242083882348496184
+49c450bf-f648-a06f-bc02-30a2c0835cc9,1598539862,7569113310920708501
+35bfaffc-2515-0d52-9ea6-13145eeff671,3310117434,6765098941983237292
+b850905b-86dd-f6b6-df35-4b53af78c535,3928941052,14575759423561631041
+c0a70644-0302-9b25-8041-62234b4dc41a,2315790015,11674924544353308668
+dfcb0ea5-1a5c-bbb9-9c8c-1daff4ba2f3c,1850212360,9025799044889429872
+af4892a3-a99d-bd63-c439-5f2c6d20d898,1947094206,15209198191446183043
+87b008b5-9671-1925-cfd9-e0fe305a96fc,1212578994,15520809426188638255
+c77c5603-81a9-2fb4-0eb7-93458a5295d4,211132111,15886850368172185449
+2f573f52-6693-43b0-bb0a-20a8515ce5a6,2979424819,15149794184998858753
+0284f8cc-7975-193b-4b4b-acd647aa916a,3349327594,661092476021819786
+6a0c252f-c608-b4b1-b1a0-eebfe558ac7b,2638079281,6286741207790708974
+0eb5b462-0b4e-e144-9cb4-942f851b34d0,1812392126,13243313894414802888
+0ef07e3d-8258-3660-cc3a-5ea9319c98a5,951405070,10362100300537075152
+b2d0c159-eda7-8af6-c77f-ffdef1711e14,1412083906,13538691100717066488
+3c16f040-80a6-a839-7bd0-dbe78e9af8c6,4184918890,8201519072246832594
+3bd68b05-0bca-6163-57fb-77fa0775225c,1175373789,6315158152722499752
+b84c7834-0fa6-7054-56e1-d7faf0cd1ca5,409818194,9073456793753993609
+ec38b983-4357-9bc7-aaff-9f75726cd06d,4042421029,16321322702245888910
+cade4e37-c5a8-1ef9-6159-486078a338c9,1782608414,9749080481007247309
+10f52c9a-0a32-fa67-eeeb-679e4c7a1524,1773283290,6353646370445044392
+abab691d-566a-93a7-f18c-90653122dcbf,3855953228,10702368616457245312
+11d54bae-255d-9962-2406-e9b01620d27f,1088702015,5536555732719814753
+fd40103d-3a06-268f-db13-bfccf0ccb424,674691473,17749612908313135526
+9e62b3a5-15bb-c150-6df5-1b64bd905dc3,3073522380,3930801373622906641
+219c2276-3c8e-aff9-6f72-c74acc39533e,412829530,2484875537043898847
+f18189c4-e3aa-593d-0f5f-8243e49cb41e,2804757645,2525665521129308074
+8d9ec84f-ad5f-8fa3-d466-f62282109f9f,3281956365,3014037041298036155
+2b7602a8-3343-aaf7-130a-5e791ddd2583,2914417353,9141202645372417270
+df0e8d7c-0138-403d-a4e6-5c9fe883c847,4042855462,12679528219827483905
+7eaf3fd7-bc21-cc21-d71d-efc7ab704307,1756592583,6780822623699113731
+68741d5d-2195-d72a-10b7-c08cf8e6400e,1883046168,14289546551931180570
+a113716d-ba89-5241-4163-df2362161bfa,2340473315,6773081244655460545
+94874b81-0adf-49de-69eb-c201312640d3,1677514217,4681723565721381957
+d539d633-099f-eb8d-ee10-e2f153989ef8,4183590165,9370190787837281411
+6cf9a839-298c-fef9-b7f9-ee0d6714a2bd,3766316649,7864593688193046510
+39a8285f-4d75-68ba-ef4d-75af2448f1f6,4091123938,17353074274992410303
+591f92b6-51c1-a23e-9ea3-e66da9c3a541,3157757868,10503095225047265830
+95cb5ec5-3c9c-16d4-d6de-7389f1861d1d,2982373623,5059334369043645516
+ab86ffc6-e33d-103c-222c-493c73193d4d,3034592774,8089219541880363715
+a0d67998-3eb1-7278-c573-81767f4d8b87,693020950,9234072245774481613
+804f4071-1f15-9769-a091-cf3bb8c30667,2167108568,2768588612668864866
+f0b33ea6-eb5b-250c-b8c2-019b9d33eb24,2205410283,1382233761552752977
+757f34e7-2cf8-05cd-2857-f5d9724e6cc8,84621333,15269597871866176156
+534c2e3f-6bbc-c53e-aa8e-8942a54e6652,3069368055,15509383524378860225
+1b73c903-2af7-175a-9e6b-fad615ebf5f2,2195476682,16331380093358312021
+8afc7753-f21c-ef6d-7332-1cdfb00d6455,1723893654,11841772930580458006
+983ed118-bf74-c72b-0abc-873a64f46d79,3197399324,12342941865865709045
+de67521b-1287-4a97-01c9-08bc6d75aae6,1495251326,14388258114449921201
+644fc0dc-7a7c-2515-eb84-d6b1c6fa4a13,1416691179,14825562596147561249
+d555581f-4b57-f6ec-1908-3f8510d8e852,579973435,8619386658597944487
+42525762-878b-414c-44f9-44baa916c0a4,505006716,9506942061796352832
+02bd321f-5bbc-0e75-cd80-f72c585c3b13,818900067,5407486857340499275
+d2e5b1d1-0616-ddee-638f-5cfb74024efb,1818401962,5747188197265821546
+dee232b5-d408-2ba6-afa2-1a71360318fb,3576915048,16990957658320692234
+a6a680ed-01ab-aae5-6403-4dc7a514844f,3794546464,9303422755066225813
+02efdab3-85dd-c255-5387-4eafb796d962,2508697206,12936551755633531756
+44deba67-bf8a-e781-521e-c870ba9c2e21,3760616254,1862953968119884701
+fc74980c-645b-99f8-1bc1-ae3c225bec87,3800049868,12016973788267254485
+8ac3d5d6-f3f8-3357-97be-7f80dc9a6bcf,4069531538,10287211546627925838
+e8e57dbc-c4a0-12eb-f83a-7aab61c43b5a,1817953647,16234974257824418877
+d0056edd-d8a3-ccda-289f-18a0596c4f6c,2773651137,7916733161912248810
+c55d1910-42c4-bc01-e96e-c9544fe0fbe2,3778388820,15123587715723054189
+45a4466f-2671-28c3-c3d5-a3fb3b40bc1c,1911990830,8200389245611939867
+58dea433-a4a0-1f6e-a0f7-02247134aee8,3110067652,12114962376750891545
+a7484604-4b6d-63ce-3fd6-4156bc6ffb59,3800390114,2686214236045433528
+684cb77b-93dc-2283-9b09-67ebe4dfda9d,2779023112,12338180595111467331
+62ccbec9-d27c-117d-df9d-f5b659abf93d,1020459654,3550772771143517364
+344975cf-bbe0-f78e-4d12-7bf7ee1e16b0,3786478681,16522082219938184081
+b8d9de65-fb20-6a84-0d00-755692014743,915487155,1354502045713963029
+acadd852-9ecc-e726-47f4-0368b34b13c3,2485979237,13275883437802557716
+c814f749-d7c0-c6fa-1704-4c7509aae0b7,1236251617,6584502248183582120
+5e8d3e55-2671-f66f-83c0-5591fc110898,83506051,8315110500559338034
+10c35d4a-798a-9cc2-5e43-a016d18687ce,3339876686,6861694341585463317
+460df46f-d0d2-3855-b37a-25900a7de6bd,1261615811,6793495063814978500
+63fc2aa7-0122-41f3-a408-c14c9369f8af,2707557514,3977400417528382115
+fd99ff62-0e79-c762-2c3e-d02d4d7bf5e9,3795694364,3675707066746994144
+1c078934-2938-bb2e-2e43-647ba6ff3886,3872380051,15364747122214277723
+244bff28-47a4-92df-fb1e-13db4d67b3fe,420973521,10236101557790415027
+4bb40a89-51bf-9105-365e-a3f6e6521561,142964593,3846117029265012147
+61dfb4aa-0701-ff7f-2fca-4039dfc21330,3124181986,1451270077575756040
+81b15912-4301-6931-6cad-b176f3556bcb,3170879861,8405037894132316450
+530f565c-f4a1-5db6-d6e4-ac1ed5dd0d7b,1897089748,13507862551320849342
+55c0d1d8-e03c-f2ab-ad18-b5a0cc4b78ea,3891783116,6225695715527667684
+9b8ed1eb-cd20-2057-3d1f-1ad33a84eb53,1961934385,1254284953902760738
+b7d9e985-044e-03ba-b2f2-6d89f8a8b784,1555911067,17692052663397404746
+346e83e3-7617-2ee4-04a6-7bd5e8a03b08,3735988787,6219724601672018252
+82e3536d-ac28-6814-16bd-75c91356940e,1684356682,4070780926802855088
+9154462f-d2e1-5e05-9217-3b39b8587bbe,248446737,9783793903499206189
+04cfbea0-f425-6f5b-1687-597ae7578dbe,1888398275,10676667542926790469
+2f4a6844-3d93-599a-7e20-5ca2143048a8,3675079831,2195860218658511406
+bc5d9994-b64a-16aa-578f-745f9dd87f96,980982892,6782819127242933657
+87f74883-a8ac-4c75-4c52-9edc666169dc,3486331264,7387569831085091514
+7231a7e4-3893-a7f0-0d18-7de64a1cc0bc,32381428,2528388559706412953
+f58487dc-63f6-ca18-92fd-a3c11541238a,2410087045,2321599907225293076
+38523792-b690-fe68-54fa-452be6a5069d,876327809,1965304988612100716
+be452009-5cd8-fec6-2a92-491fa2a54807,3466697815,13697818761596434747
+7ddc7e43-92f3-304d-efc0-7a4c0b9aae5e,415676935,10356616220457204815
+491b3d95-5671-8b49-3e0f-88b63eaa35f8,4055995115,7106497516508732095
+25cff748-0bbf-7d15-06be-0f6dabf6b90d,843380590,2753591785710791703
+6653d46d-9dad-205f-6822-d22974c7ed32,425772867,15786144622672589472
+f6e30995-20f7-32b9-5082-3013d96d84f8,2111391075,6680185480119835784
+7aa9791f-0c1e-6ee3-3399-ab1c849001df,3629045263,16336278390591619702
+1f32107e-106b-0b19-9ea7-17d358ed3a35,3266854867,12909343367143248087
+d7bc435f-8a76-cced-aa56-9e005210debb,1193777334,2132167100597009410
+33bca41d-75fd-a57f-aa43-7af7e4e25ff6,3713267782,13941561775701641461
+395f6549-4d16-d9b9-c6b1-5ae9e9c2ec89,1354714567,8152332823822902821
+780c729d-8ad4-ec2b-0039-2b94d6667116,4058963917,9021803439583680568
+64174fa6-084b-73e8-00f2-c17226eca5f8,3530159600,14186414460880310683
+e5a08f8b-5282-99d5-dc27-0c8214da3c5c,869484628,12747737521375013072
+9457cf15-27b5-f1e3-5483-bfd1dd280a6a,1742728546,3364167567632803704
+898adc55-9ddc-5a5a-d2d8-350bf9983ed5,777266030,13361076278648142120
+5be7ceb9-2332-5c6d-78ea-7566630a46a8,279073299,1640682587289454773
+d3bc5247-44da-52d1-16ab-8c64609d7d60,1368745864,3845905976917143903
+0b17b500-a73c-28bf-fe0a-e07a3cf912bc,1085377132,1611272486923841348
+37ac8434-297b-e081-211f-7356b61e63d3,3311725367,17715435201066343477
+adf671ad-282f-2d29-e3fb-ce42150bc19e,2918543309,252642919915570445
+f4baa6a7-251c-55f2-92a5-be00007a6d20,1666639747,2510424133789396707
+319d67e6-a169-0b93-c083-5724e776e452,2269402092,9037612533831406190
+9c090667-c55f-41c1-45be-c56514819215,3012122819,15374036269045653805
+b8453a03-41b2-d39f-43a7-8c4614466e0d,3258835138,4155844632094671285
+b090f41e-c2ba-e2d8-0399-79cfa6678203,534812467,6851170322537398456
+bf2c83f2-f6ec-f648-e4f1-0e4f40e0bc09,26917144,10443740063298023657
+7308d161-0f1d-7a39-a4be-b19eea1a94d7,2846566777,16038823777904353128
+e0ce3150-2914-f53b-74fb-424fd349f9b8,1757401246,12703273501464025753
+56732a4e-edcf-2873-27f2-2caec28052a9,1001167901,993108653032942765
+5923ea9d-9d0c-bf01-7ec9-ffd606ad4e50,1799041258,9724476201122971914
+824dc95b-6c43-ae17-9fad-38795373a350,2644832716,7070142016691570313
+29bda65e-e149-caac-0c48-47cdec7a1f5b,4046367189,6110845672474580242
+dfd2e5df-c068-57ce-47b4-3d347826056b,4283989494,1343620142040855730
+f87d7b84-5ce0-a0c9-0b73-e7beae7b7114,2956238869,8024442485667211686
+94a742a0-e47b-dde5-a4fb-f3282d95841a,3551756267,12534798777623278786
+0adf1d82-c4d7-cddd-5001-3a7134717414,3897298638,17797848464673128514
+031caa59-22d7-f2e2-f53c-caa1ffda8f9f,1669891386,13023738987403583668
+b0ba6caa-a131-bf07-11a4-dd7d2429987d,524541822,425670901566053364
+2195d805-a969-b9e1-9f22-5fc42b27a008,3324891056,14196648723523222620
+0fb3a42c-ce44-8deb-7bf1-f6b9ef74a52f,2506618829,17755912667476460313
+38f10e1e-fe8a-d01a-7196-d9c3cb8706a3,853290216,16806424258964734732
+b9e86406-1ce4-d38c-3fb8-0db9723f6ca2,4152023356,11616625786346969464
+5720bc5a-44e5-f4a3-034f-3657c7c1b995,1537135137,12215777044382317613
+395e077c-bfb6-8e59-67f8-557187ddd5eb,3994315855,13840169299329599096
+d633cf73-531e-8fbd-d73f-2bc8f82c5917,2353687703,12824227160167089804
+a70eb34a-53ab-d0c6-86a1-121260ff5a24,1125653980,15264237719418518707
+4d6f1bfa-3115-cd90-b7bd-b82a6b09b926,998181581,5797838514631222608
+96cebffa-5c34-5276-481b-4a9a000cd7f2,3787908003,16369791751469480326
+a3208f78-e156-4588-71e6-47e8747e59da,1971846481,841852211976682905
+c4626592-5d0e-f424-8973-9c2cd89e3af6,3792689824,571359790526381106
+c7375f09-d7f8-c8df-c112-e50828b5ec56,1104070967,6909225171293867878
+f87057db-ae67-264a-7c12-1c36af5263db,3248368197,8146392552264102343
+357f5a0a-fdfc-3d70-6a59-18d3e8181a5d,875829403,1197163840421121216
+68df14b7-1317-4ba2-4a79-25ab9ef28ac2,106364808,14136515895581160733
+9407c9b5-fc18-9ce4-bbe3-fe52e60d1d4f,4178431701,6793772000357385587
+9c836a88-e0e0-1bb2-c251-aebcfb8eb405,2928387703,15542124144850505103
+01f8bd6c-a72e-539e-0bb0-bd8a090811a9,2682848228,7702182451273320861
+88116510-4b35-4f45-a2a4-59861f5b65ff,2843843444,4605454964099403105
+adfb788b-8728-0308-e8e5-898f3eca2958,955149280,4741923628942534274
+7e86a560-1343-f8cc-a60b-8f447fcc85a4,2348867135,14142388353789091253
+575f0609-1a08-be32-6882-f2f080134d42,215840858,17360222081884086478
+085fd655-c421-b42c-9c25-9b6676129026,2822531722,11174337914712961627
+3ec89282-4dce-0643-760b-1c1f64114866,3327712831,11978409681007342027
+1a076712-e2f8-648c-fe25-a33926b036b8,3180982588,14096636689080019380
+5bfdfe27-414d-ecd6-cd67-0eac5f45762c,3499337587,1239257585505227796
+f93c6bd5-0ba8-70cd-f906-ac7ef5f59a94,147430797,10199208439129253084
+2bb453ab-4a6e-3ef4-a8e2-bbd5aca71b9e,584818826,17068459882245685186
+b227a460-d8ec-d098-180b-bfc67939de42,1498810445,16274936316433208300
+0220f7fe-56ea-40db-559b-b226d4c6ccce,2932148070,18139994857199974024
+782264f2-7f0d-3d76-87c4-64261dde8e12,579735243,18294315485562971650
+82ef66c5-cc7e-b751-7b74-597871b123aa,2449459022,15652771315269523571
+58241bdd-c6f3-aee8-6acb-428f03f3de0b,4192544650,17057153062297319302
+37ea89c0-aca3-9aa3-588e-4d644ea0cf2c,1374532141,11825412233383718152
+aa7eb71e-6d67-5725-374b-9f034a68dfc6,1177604817,456648072598048396
+6ba7ca66-525d-7724-0307-576e5791b694,645955233,1268573237342762758
+785e137d-d82d-6f22-907f-e5ea718a9693,1207470791,9296207258238119296
+e54e7ede-ca5f-ff9d-5870-77d26c41811e,1254457251,12734676640757037173
+39210d21-28c9-c68f-8199-d2dbf8f2d4da,180651909,17868289743575219036
+985f4d51-3dff-df89-c68a-a8f7a8a7eaf7,2770752181,11120890092635298241
+7c8f0928-98c2-276d-e549-38c56bb8c288,2573326800,17983623476555811458
+5f626fb2-8bce-93aa-e672-7b556510ae3e,1872859531,11234107395828703765
+33c066ac-b1b3-0ebb-8364-c711cd9ca5fd,974424498,5702253282150496850
+79f17676-827a-ce0a-ca00-d5c0352d83f2,4192298883,7464959070800151952
+ca12f73e-8941-2242-6544-a0c66eb69d49,3650071931,12979319877040396926
+ddb0951a-86a4-3e87-02b9-eee08c740a04,2446872405,3771247785821638986
+582f5d17-e73b-d627-b339-bd4ade2a9064,608847643,5093199499835143486
+4eabb627-4db5-f216-23da-6927354274e4,1472962558,3037740342649298003
+79c680e7-81da-0105-3d70-19661a9b33c3,926902190,17329590865299001995
+773bc7f6-841c-9935-05a3-3b26819d7861,1102138820,1244448795540675142
+19b62e1e-24ed-af87-aff2-d6b3513ad589,2523746029,5206076729035964863
+6b4c1aef-61a6-c442-90ae-1eef41c753d0,3714230402,16582795958191169893
+1f8f192d-a69f-9a61-6ba3-539e950743bd,1786825604,3574881497492128149
+fb2293f4-6c2a-b423-17a4-93a0c61f619e,2684270906,9268559056500386156
+179ae120-ac0e-5c45-735b-cdd4b62c0258,1543240181,10684761739757946127
+aabd6f37-eaaf-ba5d-5a93-015da3bde01e,1785925519,11995574002762074215
+48c10fd4-b725-5f1d-ef75-f3843151221a,4064720037,18047944584798257531
+0453b5db-bc18-a5cf-8561-71b5a2a385e1,2062126621,4152211694040763747
+ce1fbe1a-5e9e-6747-c48e-d2bbc96f1a22,1333294028,14481101239592793392
+45fdbdd5-e370-28a3-7df1-4af72bd027bf,2956170704,16866555517960332847
+edab64cf-6ce2-5af9-e265-154bc8093f50,1531434632,7871680796120890215
+4dfb8cab-8a75-8ca3-b1af-157ce6abf68c,101003667,17181667783657008976
+4b61d0f4-f4a5-001d-8870-eb83781937bb,3132069892,11847947744720755721
+d7536a7d-2dad-e77d-6b24-220c9157dae3,1468084742,3807768505906152267
+13ca5eb2-92d5-e08b-bf4f-943c63d2be21,2216322934,10315307331866280960
+338b8cef-db9e-d7f0-a4e3-0efe9f9bfacd,492728773,1381060470957890951
+f191da60-819c-82f7-cf29-66469b307037,4196887239,13317932816791278939
+75742c28-ee98-a94c-5b3d-7cf7c8d3db32,932974383,1811280035019930063
+44179f66-1cba-1a47-e51e-1baf6d3bbe4f,3089501752,7269389863552436099
+38188978-49ad-11d5-4ad9-e4f111797de0,912525671,11966472348263654966
+6c39c4e6-66b7-c34c-1dd9-eb5ff065e073,2940288665,10173967697778890545
+11f4543d-528a-b299-131c-3ed1f4748635,339498055,1165750938130806669
+fa4429eb-a2b9-e916-6aff-6710cf2eaa42,3022729242,6134664250342410316
+decb03af-300f-a973-9d5f-dc2efcb09ac5,2574452285,7724724408186036551
+dc755c43-ecc6-53f9-a375-fcd3191df0a0,2069564728,16078737021604159208
+b43da171-3bc2-811c-1a9d-64746d0e1c8a,2983600248,8540865214146208150
+2a23fc63-1154-fbce-b137-2b33346e53cd,2361151351,2887049345943792110
+e5eb291a-368d-9dfc-ae50-8cb1a1eb6b7b,2519434767,5460647648147331802
+5ffba198-7ed8-609c-2a5d-b727507aac3a,1016975159,9874257026441646780
+5155ac4f-a40b-7b69-2ee1-ce0a2e245943,970309126,15323006140966421793
+258b1226-6a95-e236-6d19-03f5f4db7da4,279922751,17676012663054932674
+2714c776-cf36-3583-86a9-d8d1471f89d4,1703141542,13455253727648725575
+3eade065-3f72-6679-c55a-9f448f1bb452,2052518192,973714499701024062
+bfbcda51-55f6-d046-24f2-3b6e99f798b7,3244863709,789970268972965788
+aef74b01-264a-0492-e82d-349bc7e76b57,3257834744,2414274721260116626
+b1ff26cf-ac85-64f6-9595-56bac6792333,2345425522,16633476254016083418
+bdd8a152-f186-c649-90ba-fbea512815c5,2322890772,9199186977548342740
+b6f103a1-51d7-96e9-8d4c-3255a5e1a32e,160630087,15108958295497860873
+532f731f-4068-1c11-d8a9-3629ef838bdf,3639839515,4821525902701775885
+ba31ec91-a745-7fcd-b79e-913081158bea,513879097,11598536655150289019
+9dea01d7-46b6-550d-aa77-d610d0bbae05,3881392031,12861781750601190748
+49342e3b-995a-989e-69b9-c50364f5a49f,2767917139,8039022264838164893
+ddab8521-8002-1465-8035-e04c4c5aae36,2580152826,8495903313417063369
+e24a7758-ba3b-76e8-3fd3-a756822a4662,254527946,13165091807430279224
+e26f891d-667e-5d89-2941-ebf98f803c2a,4047148931,9729384414374170123
+b207fe7f-d85c-13f5-f54b-f9b0c68cb994,3323358266,15319572012953646775
+899d42fe-09ec-663a-e82d-0382d44bc134,2657139756,3758967334771334547
+27dec63f-a960-02cd-c81b-e2ead8b997bd,575488028,1559939970084752084
+dbaccbdd-6b17-a499-832b-721f36b4d8ef,3635587280,4815432975889566368
+62e0f05c-fdc5-75f8-16e7-3181d6f5e066,2716854378,9096570230683866922
+26409684-be0f-f158-f108-7b83b82793d5,1754162036,12196317694945339467
+7f09ab92-de33-5248-a471-59f71fabdd3b,2947580196,5079009287023745292
+ef917e7a-85b7-c33f-5748-d897b2fb8a41,3732097944,7202510981072594124
+82252439-0c11-7b10-00be-b46edf6bd580,2853472435,16046090078788534879
+34251d4d-335f-0bb5-6f5d-15b55c0b9647,3650201835,3093022370160720770
+dc2a8ab0-0268-d14e-e92c-dc9d2f8943c9,2878276540,18078860846271690841
+303579c6-2589-e4fe-ec36-68a3bd2f1d77,1858282324,17429214265809000079
+d6d37e94-b2e6-c8dc-4c5c-9b0b4acd92a8,2247004413,7182250780243498360
+a84be25f-6f41-c7d5-9b75-2ed65babfaa6,4236848985,9608259606640598466
+b44493da-2092-9a64-820d-ed0f1f8c9b5f,1025994351,15988532046200126567
+24898081-36cd-72e1-b16b-b6b2b6210134,3972577479,4690872437429463026
+7dbff836-cf80-a8bc-4595-49b87b73807b,1399012829,17914509427160740348
+2759b68f-2b23-2e75-4def-5c829c9a968e,286446700,538966428342428569
+28c538f2-e53d-da3c-9028-670c85669227,692614651,15082653978486732164
+ede325fd-9d20-f6de-d629-09ba6b9b145b,3696265076,7993273283370046883
+a1d618a3-9964-0d6f-bb44-7f17ea2540c0,3769947162,11777227524803132037
+396d38da-49ff-60f9-99af-ecc53430f217,1560262942,8083106258885838151
+abb4d235-91ed-f567-2702-8190b6f7a5aa,2628183333,14462052201784595737
+c39fcaca-4a9d-5ca6-4c8b-d134176131fc,3971649757,14514036406073837788
+00280663-2327-32c0-74aa-81961ec27730,2708040634,3325580584018389490
+ff3ab415-c67d-3c13-d55b-7cf5436cdf92,1846449048,17450699702746498437
+882000d6-f858-faab-bf95-ec85279de729,3914345301,8623094456914952278
+144cdb84-2c84-d7d6-0673-54bc45f18fe0,1038029601,18400666192084704674
+0badaca3-4bc0-c171-52cb-6a277da9576a,2855504835,514373782935746163
+36bd386b-5e36-f4b3-5780-310e7e25cdd0,655533354,13954806452839966154
+501b132a-e1dd-0382-80d2-0684f96a542f,4156977370,10016466447157745859
+08e3c5a9-de0c-4df1-9cb0-80b873ba2a85,3921077131,8013529513100996299
+30362355-7b70-cd58-134f-3c250a82f7e6,666890825,4651412970341366101
+1aa42a0c-d0ae-51bc-a5bc-050e8c7e6fe0,3718110204,4014227405470401588
+2860a96a-e296-5868-31a1-46b7e7b6df01,649070546,15481618636840356435
+6c23a6a0-6b87-3008-f500-d2c2d01179df,2809635495,13386023179358795208
+8d770b01-5d65-138c-6a5a-fb12d124250c,3345227644,7145950135817937149
+2efb3324-28eb-8834-bb22-8906d5e996d0,3062192017,4444969043330250943
+017e4549-81fe-b073-e29a-afd696847dc1,614439987,11820064808956446196
+e5ff65aa-c900-8bff-d16c-5fa41bc1d333,1879234814,12389581653637189577
+4b8cb821-b0f5-db2a-2eb1-5ea81fa81741,1137459001,3336637041072523915
+895ff18a-ff8a-8a02-f175-f652e8e9c157,3708875613,12983167487483289796
+1ef6acea-840b-b166-229d-bf89cb9746b0,302643681,889944456920138278
+485d217e-3a6b-3045-fc97-9743d04f9fa2,1735477866,15722666768771930416
+a24ffca2-688e-17b9-bba2-348092c10f0e,3706936523,255980504447483381
+d6c86c2c-c13e-405f-43ce-0ee9adbadd0f,517972848,11406053173598093301
+98ceb5d8-9e69-dab6-86e3-944f781ad6ba,491482902,8355291100283040307
+2f10eda0-c2de-e119-27f5-c6575e538b3d,3043031013,2881178299607342709
+789af3bd-99d5-102a-540d-c5f42a11e286,440723309,7602546764854137788
+2554dcfa-497d-b35c-396b-55c20c890db9,175783700,14981787619602189799
+e38e1eb6-5001-08eb-c16e-65b7c123f827,143167798,5882781890857626852
+e5263204-ae6a-63b8-d378-5bfcf14df09d,3733141953,1274935444325662655
+dcc1e911-2a1f-f154-d6fe-50727213537f,2381848502,5419557684814172351
+ac7aeaae-d294-5987-333d-a95ef64608f3,3358274250,5122253781636694780
+a2a33c15-a958-19e5-3579-9c193f36d583,1680408976,2856681336374508920
+34ac5977-f22b-fd30-0d25-6a126952902b,1458313724,17899653916985605253
+2b69416e-5936-356d-74e9-ac84f30257ae,3829171199,12253392155256297677
+27f02af4-b55a-2d99-4b84-05705b9f4d98,2062413340,9118016441582125468
+a791a95d-a6d3-6f58-f4c0-e05b21953190,1627411029,7177637521333217253
+f87aacac-211c-3f0d-8693-bfa5d938a574,1846930255,15052801277158933086
+044f87b0-8d73-5d2d-7569-cac419db18b1,3257501470,1980831081373918468
+330592fe-967f-4f23-1801-d2b4dd74a3b2,84108724,9657689385617876397
+7d9b8af4-1b29-a58e-173b-dfc145332251,78010357,17624820411822976392
+707d25fd-e133-3f35-e934-c497c85e787f,421876562,3508871176934634296
+0cb932a9-9643-3b67-9de9-0890ba67a1e0,2824735688,12978709390512063358
+be7f0813-4b37-7352-7256-b305eda687b5,2852912005,11500705961398992314
+ce337513-5c59-d166-c0b7-893645aca672,417173507,6135352190674426554
+dddd3a7f-ab80-9c1b-0b1c-807d42a49604,3975300147,1442716652874576041
+c98f8abd-4bc6-b04d-dc91-9a7cd485c9d9,925898929,8808671024638009977
+cb071393-0c63-fa51-0e14-63bbff327502,1822703692,17028693126702005407
+09bb8a8d-b0ba-c4cc-94c0-14114ff365ef,875012248,18131445173471657741
+416e941b-29a4-0ec2-b937-d930c9471e31,3682884647,18215497172390383965
+aab671b4-876e-2fcf-7962-3ad7f96a2ce5,3008717818,9964851496709437352
+a92f3204-0fa9-e0b9-360e-dccbabd868fe,3225546922,3328229885430319347
+3de2e10f-6078-2d00-2e5d-0daab260591e,726814378,16074154527433444136
+ad830bbd-3246-bc05-8874-8f865d099c1a,3322480337,10702079347468512354
+bd5f477b-58e3-1ab3-6ab3-5f4548bba9e6,1682371457,326339599100658171
+f18279f9-6835-60e1-8ae4-0b9c8fda1672,718056393,2861882786105751673
+4a4317d6-b768-46f8-b26a-a5556fc4e1e2,1687236262,7204604714860266334
+9d4cc74e-b0c7-656f-ad7f-ff760a37e175,1504091080,11032219787320049459
+85396bcc-7d4b-3300-2f25-2df895107f6c,1553055184,8623649928603267436
+07314ce4-34f5-e3de-7f9d-550ddabd55a0,4039161703,11137918479907059259
+09858180-235c-9e87-c25f-37cb4e93578f,42502950,5015906896639586366
+8ba0cd33-5e44-7400-cbde-6ec6fc3f2960,4167999024,5471800250015362850
+e6dfc4d7-1709-8965-18d7-a1af4d1cf5c9,2984334627,11228798353752094164
+59d7be91-e4f0-8013-5344-517aaa532be1,2040026742,5648497570246601976
+e7109310-2f65-34d7-78aa-d3daefa4feaf,2976574207,6083454271488698097
+38566985-38c7-fe9d-7bdb-6d21e2761d6b,344461581,16835619443023070249
+4e92c784-2d24-e584-4de1-f83139b637f2,2703281485,1637223368663312436
+1ab66552-ba00-5b20-0f4a-922ca90a7dac,647885266,3063968815247499582
+c3f643f8-55ca-cf8e-38a6-15e6bee2952b,699154917,12650996860297175955
+0decb7c6-d7c5-af25-21c8-79e14042276d,4126535682,5231811591389564501
+981d77b7-f34f-7f37-0622-6a64cc600557,3677413551,4306695019806643432
+17b71c09-c707-a72a-e27d-0ed47a841e8c,74525772,9574701648847888169
+5c7b50cf-a8f4-c879-0d31-fc75b50dc3cf,4225555127,7823465734913520155
+452075d8-d23a-15bc-6e00-059af8d10418,2711895729,9858145157361977464
+618220c4-dced-6d4e-ce86-a1840359398f,2776279134,182447978909154171
+ade1476a-c1a8-ee9a-e237-ab54ed5d455f,1217203812,265485484217891279
+42399de3-83e6-211e-a0b4-27eb164c8cba,2738299140,15820737029856466582
+8ca127d1-5d41-2098-82fb-ce1db50b01ce,3076080139,17678415416509102339
+322da44b-47cf-ca1f-52fb-187165abe527,2102077411,4545958834708589733
+fda6df2d-558b-eaa2-c719-3eb572512023,3329665106,11863996935392827910
+ecd614e8-1bab-f196-b1a7-16420c4a7bc4,412172958,7829902783214345546
+fd06ac8f-55c5-f3ab-21f9-c532f1e92f50,3284109170,4887149136258608805
+96c09742-ebe0-9c4f-2cec-3b230d1568a1,3136418928,17869034636943938945
+33912a10-42b9-a776-358e-55cf59323769,508524250,16660531189485797363
+458494d9-018d-25af-9433-d84f41aa7b79,399702581,9340540571488345385
+ccea9571-be7b-356c-7194-c75b51e61d8c,2747932329,5403342794315101911
+10212c02-61b7-1a5b-b1ef-496ebf1a03a2,525224180,13126958494184152947
+1906100c-d02e-327e-c544-d7c3d8bb6e52,3355748549,1424854497487243102
+76236125-5e1c-c49e-ad2b-de5ef7554fec,2985629711,12491585970656297361
+a4c9c241-4ca0-984d-4410-204025ef1f58,282221295,10314557754168403637
+1e9a614a-cfbb-8341-288c-53f7ed4bf6f5,1322701148,17204551387672295330
+9a78f189-e575-c85d-fa80-d4161ae5e624,3179742784,2810807877412678535
+464ffb28-6a34-c915-5cd9-f8047ed82400,3645507199,13709052228725592706
+13aa1c17-6fb4-5a6a-198a-d61898f6fcc9,2545269247,7673353337995220478
+a68cc9d1-a2e3-388d-e57e-91720a4b3328,298635730,6446655454014940236
+457110e8-9a84-3b6c-e34a-abf5246bbab1,1910371472,7882191188818228741
+5a5af995-971a-383f-0174-d7578fa05667,3934309996,15580089684662777276
+0bf7828d-d849-d6be-94ec-ae2256aa6f7d,1266015815,15143840842855701285
+bb8369e0-c930-307c-9e80-8dd3337399df,2666499261,8196894914712022145
+f5857801-0173-c8e7-0353-cf5376ed7df2,675246398,10077802066631122794
+b2ad36b9-5286-8b50-31de-5815c22f51f5,3533253465,5380345366550514421
+e82168e0-2818-50ab-7f5b-a3e947084bab,1105499604,5680911146142352309
+24c1308f-e75b-cb55-d901-546199c9df52,520873541,14538620828809504447
+c98e713c-ccc4-186e-ee6e-381bcebd21f0,1299677298,15631391075380482242
+9fb2207b-b226-44c9-0898-b1cd973961fd,3598225340,10989064361524830063
+7ef4540a-69cc-fec4-33fc-8dbf0b0096f9,4042701520,17207665390900127615
+7ce4eb91-9e5e-90c1-dad0-d43f5544aefa,2217429990,8195507935916522298
+f8bc0603-5597-1056-51b6-1e3ed79f18ff,947462536,6328494528453431277
+356c6105-bc39-7aad-4eb4-512d56eac197,141854462,10092518765286654802
+8d5ba2ad-db9a-81e9-704a-f43ac5ca3dbd,3619378321,16729196917998880911
+b8749dda-3293-7fd9-46c1-4c5ffbe0449a,2076946654,10806930757123267628
+5434baff-5461-8aa4-fc6f-3f0fc5e57963,2256597757,14192761351270346376
+94200944-5445-5141-1a64-d123cab3ad47,2586151255,13811446778384348469
+fe22cb90-6985-e78e-e24d-07cb3ff872d2,3378720373,15145881506586733383
+9d51159f-faf0-5394-04da-f0b63f344a0d,3503016151,11581333230061889002
+a0568e73-6a60-1d7a-d8f1-2801feac4832,89706955,9921484943789126303
+a4b1daa1-0b1e-3cde-e6d3-bbc23a4ed919,3130620399,13103577977054172839
+59f30825-cb54-9f83-d809-627847038730,4272452705,1880462954958697075
+0ea7ef37-0b77-e8b3-5b50-a9209bef354f,3773481159,9932094435976780498
+807d6a8a-c83e-0dc8-977c-dd207c0aed80,1470037722,4316585078754963948
+f3f0dc62-3a42-4062-7a69-1c38509e1a8c,4061480691,1427678550876235553
+8330789a-37df-bfd1-9164-660dc3e41360,640150587,6630883633153252820
+9b0f2490-cc61-0843-10b2-01191b64c5e3,514390219,563618067345383128
+ed4a4ad9-f69a-6768-eb47-ff8852039de4,3188138730,656407107921158336
+73cf4ebc-85fc-fab8-98e4-7e03773378a2,2668563314,8938925658005610854
+4b758d94-9a31-c4aa-aa54-32377893c84a,2340787013,3818321200076142396
+e8047c70-1ba1-dc6f-2f5b-355deb68d57f,40796467,8579539401101250444
+90534174-f9c2-6858-2385-e38851ec0531,2081470309,148383261844379734
+c16e7963-1e9a-930c-367d-18c777efc012,1857705484,6930599479231997412
+552adfdf-42c3-d007-720a-b1b556ebec03,1742968951,874083375899210221
+ff7b8f95-9b4f-394e-d3ee-3f103dff1555,3588848782,11932355807933142054
+3a5d0eb6-1ea2-bbb7-d37d-9a9580b8ee2a,3238705622,2930663933398716768
+8b39c3bf-81c5-8656-a64c-4b14eafd70f4,2877519416,16630399241888560873
+fc90df2b-908b-b385-368a-58c5f754e551,895373767,18196940516744262905
+d3cc1318-c14d-5928-d417-184fe670954c,2981939437,10330946379324064314
+ff892323-cc1a-face-7aed-220594375c80,3832267746,18072319957957194752
+36e605bb-3abf-00cb-646b-014ea05f71a1,3931652419,7038828215058818343
+7f66ddc5-3d08-0453-f704-334288e08095,1637420676,3876872984627062217
+cfd0174f-b7f9-bc44-accf-dc7ed59f0af1,898936336,16997582474443942216
+cae698fb-16e0-e60c-bca9-96d708aa87c5,289885165,6850578719449637004
+2500b799-949f-9a61-8600-72ba6ec67fa7,1029276632,7858339175718766778
+04951eb0-cf93-ddc8-4640-5cf9b2bd2a5e,3408130609,14415962882709747232
+c9afa68c-cf36-1823-cffe-39f2e1381a1a,3562704201,18009559674669098773
+805edafc-36fd-038b-04b3-542854f8f781,482008274,5611452658199863618
+be6e62ea-eaee-10d1-0735-f15c4c75c53e,2934947670,9396164773227206309
+d5917d0c-6ee2-b86d-e0b6-455d177ed8da,3129190459,16521974849047066546
+bed3aa4e-7c83-f21b-e6bd-582d2bac1796,4279049431,3887027805857961476
+8daeed8f-0af7-0346-4652-ed9114f848b4,3408417023,15706176933889532302
+4a08848a-0a67-7f3b-0d51-62b22e306335,222761981,13289639372546080191
+a0c19a56-b438-87f9-0348-72669e1db5ce,2051116804,4326503692497494801
+fededfab-72b2-f91f-ccf5-3d8c3c8dc691,279334541,4418482470048341403
+59b36ed4-7842-6921-f449-4fa805d41b43,1331773328,1061618680745660715
+3454883b-5095-3cdf-2278-4439774ef55e,599030889,2791145229920861737
+eaf5ba76-2303-c53a-11d1-71017a7ff2d6,2904129672,12154007995881186262
+643a4aa8-937b-c00c-8f5f-0f4de71531c4,478954658,16488686109321850991
+64419d6e-4db7-a4fa-6384-b4d49bb51524,631883350,14733316840687388430
+d6110153-4c1f-e769-1dfc-dbb8139b4513,2358922934,13206598820106614313
+da1c2be2-4860-0376-cb35-14eb01a86aff,3634436425,2642750721021932608
+42c86da3-e181-6aaf-820e-e153d07611ac,4264960487,2402027431038096335
+a81de983-60c4-2d27-4911-896fca13f3f3,2533814867,9272856832292656054
+ae35fb70-7ce0-9358-8ce2-6426dbe5731a,902835991,12407291912769059202
+dc6f1ecd-3081-2049-2423-f6d3b857762d,1559111791,17763652593309280272
+9f9ba299-56c1-2608-03d3-844d28a1ccd7,1325335093,8963148712948465419
+bf107d4c-62e8-dae1-7a4c-bcde1a9e30b9,1603167763,1380412040028249028
+a33f5e4e-c9dc-e39b-e649-756cee1b7de4,1795666523,13825481527006539119
+d1f7f005-68cd-72cc-3d7f-066150f9d974,2942204150,2184659438038072952
+25623875-0415-76e3-3b7b-45544bcd3ee5,3762585951,8656557029178565724
+aff555ca-4125-a02b-e58e-61a5d2877422,588973268,7579056356601429650
+72a55b53-0be4-1afc-fd00-fc5f8ca58c03,3322766724,4670668052719831129
+d3bc24e4-3af8-00b6-10ed-983a1e35bb6a,1737798749,12747838237559690367
+c0477c06-6073-1dda-ffb8-b1d1737d98c9,376935598,17211283722650982539
+00b2c54c-15d9-a776-d612-dc5f3c6dba23,750170740,12953309474350040958
+1923dd66-aa63-5852-a979-78bdbf494846,960522429,16029604943826328691
+19750ef9-b812-ba7b-790d-a1ce4ccd2c7f,3319018591,13397656928522164995
+52ad2b9a-f589-98e3-2b68-b18e9da8e91b,14091758,12338172512825682589
+5ec3237e-c8f5-0c06-3ad7-42bf212c4a29,3617602459,12626612656240291852
+c31dff20-351d-dd4a-3708-c1c3565ed1af,3315584781,4761232766079967334
+21cd2f82-cec9-e3df-a7f3-0944e9fe11c3,3366822881,2367935311389531331
+f73c677d-d076-dcb0-0e41-a0b1e2fa0c42,4203423061,14746160349303487525
+9747247d-747f-7057-9b30-55c8a5f90b1b,4270641440,17808280598610221564
+8081c3f3-8088-824c-7c3e-18bfdb26b957,460640333,11954798062690356746
+5f76756e-47e7-239d-0943-e4eee575acb5,975729080,9037452115738163425
+4167b27d-79f5-a035-157d-d59019f47552,2864942932,10794480804160011969
+83da9269-a1e3-75d5-cf5e-4ab5ef175e4a,3196396866,239509767869181276
+817702a8-81c6-88f5-c9d7-70285bc5a74e,391107509,3872101142042463772
+e36b6343-e2ea-85cb-3d7b-6e7177510c2a,3632829861,8825671500275901415
+034fee66-cb41-fa5c-8eb9-454fe2e45f8d,637271153,13459859139605469045
+e06bf2fa-8da1-e8b7-b153-ea97a2d0100c,2321319355,11499281108023600953
+30debcdc-d22d-4af6-1b6c-bf89a1e91df6,1323317753,9990937599096762724
+7d64b3e2-480b-e234-4b37-63336c4fee0e,3412388483,9656848899082252345
+257aee5f-a785-c430-5ffd-152b3bbe50e2,650795368,15093390082577238199
+b80fe58c-f9ef-90c1-fd81-025d6261b005,1114116968,10346852760147853899
+c39d91b6-4d20-8677-1152-f9ca18c76b0e,3701304348,9358400230211801376
+d171501f-de13-a226-5314-5e4caca51649,2690359628,14313905214707023059
+c7a2033c-360a-70c5-fe13-1e9bf69a1b31,2676219329,15771522616635494840
+9bfc5a12-2a2b-a97f-83b5-96545d52f714,129756724,10895140341696621845
+6ba133d5-d53b-8e3b-e0ec-2ef50cb5b7af,4180501515,3625979230891774546
+c6f18ea0-e795-6200-e223-b9e6486f5f1b,3960434242,1842214757777537518
+21a4753e-305e-4612-d477-a8d3e470074b,4287080774,6140337298311373965
+2887d8f5-f181-572a-3fd6-8f93ba5cbf61,634435866,5240059308230182924
+ba4358db-fd4b-150f-bda4-b753bc84902b,1657840612,3424145181755451178
+7899b192-3cd2-29a2-5dbf-00490ee3da0d,3478702426,13771945689033168878
+5f7efaf0-deaf-e3a1-68b3-3a41d1fb3542,357087865,8578490548618525261
+6db88f61-774a-957a-519f-19df9a25335e,3309617816,12463065839861000686
+561b57d7-3262-80da-a16b-e8f0846a2c36,1084945287,13339502384715163510
+95c39aa1-0375-9e92-0c07-f5548acd69ab,2136123585,14150399003249988170
+206a37b5-d27f-1c56-47e9-e5524c4039d3,1294667340,17532287671278996775
+a6058543-7cc8-e574-cffa-34c3b6dc0b43,196292088,14752861645405026840
+0a970374-baea-4714-d228-b3939d7545c1,3910834998,17624971653479209628
+eb314620-e1ec-1e19-1590-0b14df4b4ccd,727128711,15843857147365482364
+9fdf10be-5fa5-8145-786c-103bf6d9162c,3553011297,13544318160446439138
+cd68ea88-cc0f-b1a1-074b-3126c81c8895,1046165162,11045386520972329992
+762c1487-1d05-cc31-27a3-1e424c67eb18,3997832942,5371899093351217174
+30b24c9a-a9d7-896c-0a48-2fb029de6227,336241140,13686393618307446364
+8f3a7ffd-cc94-3a8b-8c02-b7efc4dc1d7f,809618900,11656886703024229493
+925c74b9-3860-d76d-14b5-63db6c7a9e5e,1561293477,7913261672849705376
+79be6dc3-c96c-d5f8-3c7d-5b3f473b8f76,2428468919,14425317397550927837
+385560a6-f273-303a-e5a8-187a48680a1a,879328477,17396147758749885695
+9093acd4-1fb0-0182-6fa5-0bafc88b33e0,4109315401,12438901318372828383
+e8cacb90-6793-6bc5-d85a-b4da641855c8,910255771,6963033599993306272
+33b2ac1b-f8c2-5518-2cf8-773c1990714a,6418545,1362955491611300574
+8b5892e0-8800-9efc-9d80-e1c8a48f8651,2895102748,5688844992158412947
+06833970-6e58-b7f8-e61c-71e7d74a3f09,3973527261,15789216158768423865
+343e4521-7f56-d99c-8aa7-8f74d03e0194,2419908747,1114623548971676646
+76ada44d-4ae3-2a83-5d7c-3e62da430fac,1589122552,10194271174734795993
+7fd9b78d-8135-f572-6bdd-7ee7d5cd1d9b,2076066114,2431045236703381986
+0254add0-1b45-3c89-97cc-489de554816d,2985956921,17184530251369405169
+27cbe8a3-b54d-7616-6a5c-759655a7348a,2688292723,8874626387913429156
+4cc46590-e8c5-36ce-71f8-a4f56a1a2b39,289122300,4879833399810131741
+6bdccc29-026f-3db2-11e7-50e3e882affd,1511628051,8275463482995173447
+53e6c14f-b66b-054a-8c78-5f08fce7f20b,3758364350,2366117642403319732
+7c063307-1551-9614-f387-cbe8c329cbe2,2193110572,11870122253316665189
+e41ac7e9-fd27-add3-4461-d1a2fcb61f63,1345027341,9383695253839193300
+eb860521-aec9-babd-e28d-811dda0c32ee,1559523852,4294823514888250418
+6de84528-0f89-542a-8451-9692692c5c7d,2597027196,131833430972735430
+5f258f8e-e5fb-7bca-9d24-9542dac0e08e,987701105,14456183384266094859
+6c82d99e-0204-67f6-2927-2cae2ee1f532,1753612741,4935460150444495608
+3582da9a-d79c-0aa4-7eff-9015c73b50a0,814846803,7405997099983646323
+3109036e-3e55-512c-b6c1-e8365f55d122,1133805568,18406320099424435485
+291df770-a435-b40c-a76c-8c4adbb4dbb9,1038789589,6186956015256159575
+72fc4782-478e-13e0-cabb-60b5e9b4928b,2267585811,16583050338348945310
+dde8bbec-957b-d171-2749-26d987e52480,3098522682,1616068766018932838
+c8c407a5-62f7-9600-6b5f-a81bc1aa8dbc,1164082797,18120809927589895875
+6c7fc0a5-613d-cf67-b818-391b9902a580,1401767551,8020294763420742132
+769cfa64-548b-fd42-1bd2-501b06be2941,2560563648,14820329187713035534
+d996da3a-b4d9-78f0-c8bb-20f23dd26407,632984159,7603511953254552604
+c49be92d-cc37-3053-683c-38e7b433332f,1147389470,9621309561861253266
+224a6e1e-05d2-c308-e214-64ee5fc163dd,3304790925,18016528815926896123
+c1817661-54c5-96ef-9255-20b13362e8ed,3502609552,17240880840021232425
+d4892265-032f-d8ce-0561-c5526a0f7857,99281639,8671350906522807019
+10e83c96-da1d-05cc-0184-6af84746bd53,3679571035,3605834467206614500
+bd4677b1-e78b-e2ed-4595-88ff96066c7b,1580134911,16243891496464709775
+bc50b2d1-ba7c-0c44-566c-8ab4d11eae11,3667728846,1469190031769731019
+f390d7e6-d656-f65d-daaa-585b59386e9c,370845602,16409536092695928233
+ee252276-4c5d-d3c6-31a9-7137206ebd46,2603725403,6365590153451266746
+11fc45fb-da1c-2b47-961e-06624c42e53a,765394209,6824938795881537138
+9d4b73a7-3127-a42c-98db-b37b76c21a3a,1230859148,18128329867229722342
+89ac73db-d3b8-d9af-3dd0-8631bdfab685,1041914421,6589345795128990519
+24637f78-190f-bb91-a9ae-33a37e76b04c,253791858,17982552175985862144
+c5beed45-2545-30c5-d2d7-2e93ed73aa74,376544986,12481670057072301331
+a35c71f2-2820-be3e-b0c9-50702c372a12,376965055,5440468664097531499
+555580b4-9073-28c1-8385-7110925001dd,2247754593,11402273646741463850
+0af72470-9c19-be43-2fdf-5195fd34b248,3906100152,9619158557380499430
+35b4a3b0-5b9f-a656-c7c6-643e873b86d1,14325928,12052548607259007154
+0d5a1168-3535-f86c-a4e0-adb189927654,4152288960,17926977672924286939
+f360193b-f31a-9554-f70f-d8267d99dac9,1630704842,3064884686922611869
+d1854f4a-a90f-e7c0-c36a-cba4905c7571,2272650017,15397534610667480862
+4b25f01e-780f-6cd4-04ac-32cfe9fa96a5,3128642131,17560644660009947008
+4e02eaf5-932b-cfd2-ff55-c5e137745f41,1077821904,3412373107801621706
+771b4c15-c76b-80e9-513c-a6f830d43fe7,4254462207,10042980875788474652
+d1b7924e-7342-3b2e-b84a-4536f77d80e2,2468647478,6717291254832615327
+55b9ea7e-ad8c-3c9e-d352-5e930af4351e,3274644914,31657568006630086
+cd8906cf-5810-c6b0-e765-888ba27b339e,3910454476,7914685494222116454
+47f9da26-6f87-12a1-ad0f-39d9167fd6b9,880476059,6280300972318788342
+cf2eb8ab-1121-557d-6a1a-8567344cfe5e,4066241569,9526241199775459051
+b0447de5-2f77-174e-e89f-8c05bdcf9677,3026829339,5495322431352668815
+1f866ac2-37e4-e107-b4bf-32141eb98e0a,2640172581,12941230052737314265
+6a8dc517-1f0e-d9d8-4b25-9dbc5f86ae7c,2836517485,10959264894983859119
+e897f81c-9729-6a14-57b4-2862e20e7baa,2660024258,2674478966571032580
+ad829d13-ff87-8726-903a-0582e79a784d,885005154,80660394315809823
+bd105994-c4eb-5402-6728-84fb3e05ec91,1623989190,12942918139981310354
+61456fc1-42ae-8a32-5410-dad80e2d7cb6,713666772,18112472178202205303
+86aa5576-fe82-ff93-5e70-035a96114aeb,1252423356,9130047462086197039
+157c6846-978e-55fa-a054-2b31376100b9,229498856,8270035792210522366
+fe10fca5-8f1f-8704-a93a-26fadf40e6cd,2744380979,15719706282359018934
+6324c48b-cab5-86af-fc6c-a2b11a363968,2434151062,18285377124795101114
+9f442d35-6b2e-fb6a-d28a-1db4610cb83c,985617596,11985208033938398569
+4efa39cf-0d6f-8f41-72f1-79ddf4661cdd,1040754315,1926468466896464800
+85dfa6d2-9e9b-15d5-48e4-b6d98036a0f4,30351065,5912488203801654310
+ad72c7a9-487b-07d9-61bb-5b5c835668a0,3503419047,15242731479748005585
+e9af152d-2317-3604-7ccf-c769b94e4e57,1151505723,2544099051417756659
+b3b970b0-e51a-aa76-b74b-6ccf850935df,183612237,14307773535748518375
+4d7a2f98-15b7-6af0-e488-2c2aae42331f,1618471574,13834449049136502244
+61aad4a0-99c8-c6a6-01f3-aa5448a6d642,1193449128,2194719344167411178
+5449f829-190d-3bd1-8260-091ac9a921cb,3724581663,18127051672577901275
+35963f8a-98ec-7477-4245-1f4948afa0c3,188418714,17554210125881810467
+c81e9a52-41d1-ab07-840c-53b53f6db67e,2099680236,17349828267721459339
+dd9480a3-1631-06ba-6b91-869024f64f66,3584359964,9887776568385787326
+bebe2e46-cd7b-36c2-4fc2-5d1e16903bb8,3648554353,1872881734127735849
+6e9490b3-dd1b-f32d-0ab9-cee5e4d4283f,2603794522,467763139183399108
+7ce4a3ad-0a28-ff1f-c3a0-cf59dd4d7f3d,2715330391,10262491875322848450
+81df5184-de61-b9aa-3ac4-6df9ae3cccc3,3400843974,9690829801025585453
+8a39ae6c-18ca-8fec-f051-012bd6d06e57,1324208724,1614863210182262718
+01247627-2bb1-da06-93e8-0778e4a30200,1288286550,4740210310440674107
+c77c7a45-d0ff-4b62-0224-bce72720e3cd,1186522674,7754823100764401176
+46f2522a-5e58-3b97-5353-a6d67f4be0da,4216827053,3716140740605600809
+2e136213-13fb-b045-1200-bc6533051973,1766546339,5254863783624873161
+56b8cede-7be9-11fa-78c1-2d7ed737bee2,4092806678,3386687716524187612
+def9c1a2-6e42-39bc-5584-b05892e00303,4182083852,13874621252333584380
+96b4fe37-9da9-8ded-537c-884d5ff6abfe,1123067592,15305885186701464517
+069577c4-2ef2-f317-f61d-203d4166dea8,4124841595,5303296149335605522
+623350f9-417d-a1ca-620d-9eea23ab3854,2791094603,555114899146294737
+700cf12d-1fb8-dd48-5ff1-5ddb81dc1f0c,398558394,1001214269859042974
+bc7ee39c-af7e-04d9-ef94-179625a91684,532010659,17225073856526168288
+f4077547-df65-60d9-1fb5-e5dbd3446d42,785906516,4719192427014865434
+cd579d60-6603-e68e-b6c8-d87c53e04cf6,596124404,3335232724399495904
+1caec73b-6f41-e5a0-3fc4-3b6e8761f78d,2979526011,8897450258651913106
+152bdd88-e925-4a89-34da-9ff81d7dde83,3195274522,8497191226891361126
+b0565684-cdef-bffb-c893-62911f90bcdc,311580422,7562386495886999255
+ebe392fc-51f3-1bb1-9f76-76b61b343804,1533375093,7542736727418885804
+5d259849-b785-c6df-5ff7-5dc2231767ea,1933016203,8940437974780062660
+5e50aef7-bce4-2969-2878-f5e8e0ff6545,2083514982,17422975085108586791
+b8e8b0eb-4775-bde9-6ea6-b5bdc1c39683,3898949155,10064859292971394411
+aa6eef73-9243-c15d-6946-ba73bb03f0b1,701951647,2990452651268097103
+93489b8f-1869-f4eb-6ae4-69fe0e289ed1,1759912325,17479191741817864309
+c202aa42-0343-286e-c1fd-1a4bc8ad409e,2017670950,9742870172439040895
+24264b2c-5510-6022-0fb7-fb5a1740a7c1,680165795,11638041988079237328
+29ee2e12-1868-7e60-863c-08e4801a0bd1,553064042,1351982869113284969
+5c567433-1feb-5a74-387f-2c20bcab7e59,582870133,5812577128080506654
+1cc4396f-4ccf-b21e-06a0-875107f8e0c9,3082758768,11806406296540250169
+71c00de8-bbfd-65e3-46b0-de1c33e2d10b,4118753219,13777864487616828310
+6f927804-3c4a-0280-43d9-004fba0ee4f4,2210693830,9082641299190666139
+78331513-4298-4090-d5ff-288dbcafb022,291891799,6824508069946294377
+bf75cda7-4074-0b74-705b-edab906f3e37,1242831533,8572500509020027921
+9223da87-9799-a577-9f29-07058c76d0d2,2030043265,6524389876930219924
+045923f4-ed5c-f2e4-be64-0e0169cf9db6,2811465188,7750998562939365631
+1e5368db-1d94-4bfa-dd34-13e35e0e7f3d,2158667454,7737624989226472431
+85152273-0877-23f1-a779-b5ea3e4d48ed,4033895870,13558214427526208425
+050b32e2-ba92-30e3-4822-f2b065ee63c3,3631430003,5479976608631502128
+28554e3b-8892-f7aa-5f89-99917abc48aa,2202024929,8673808787260598392
+50504d7d-eb9b-fc7d-511e-2253313caccd,1243040269,4723393275530011548
+ee2d6487-ef4e-38bc-a3c2-0ceb70e4d379,2449686892,301237182734490959
+7bd75af6-29f2-260b-1dfa-3751b7cb9abf,2249896911,11382879596373205004
+09ef126a-a1f5-2e10-9f3b-7abf2c05d9ff,1412630265,7562292022844777251
+adf592c0-2441-acad-9d98-8fdcf059e176,2486047751,17266055650885606057
+b7c2c69d-3807-4427-4c7e-4ff5e6dcc0c6,4238772898,15884446115448671752
+760c7db0-43dc-753c-c638-b41140d1ff98,1125632798,12484212666409963462
+62be68a8-eec9-6760-0343-ccb70e3364c6,2854194867,1376985807669215535
+55dbe839-1f97-707c-b3d8-72947992dd30,2334496267,735093716034409996
+b047898c-59d1-9424-b4ac-5ffef06b1ac2,867836150,6377707311605172967
+1e11c3f0-4b1a-a73e-5c58-2376dc885a88,2143921671,16404224050414013865
+c18c4bde-b6df-ca86-c8e5-2aa342972f66,2728291853,3846934330263814982
+11f0d9a8-47d6-d3ef-3a83-b1226ba98975,376168905,4504242003561181382
+2d7c736a-8ecb-be85-719a-cb8bc6acae9d,2218053894,17554958603589998063
+59d2a3f9-ab7c-50b1-0003-ad43100990e8,2080246172,9667538525181895732
+29211ff1-5e49-361b-9108-41fe1d92d3d7,4269119539,7362919316995760199
+dff83c3e-2722-bf49-eee9-4cb8fc523167,1552383196,9916342696572167793
+e8b7ad79-b05b-6ce8-a10b-f1f94b246d22,218248022,14341834685221363999
+f7ce6e51-b728-8785-7d7d-5bce223d69e5,3972981220,6264605263168197558
+82237a2f-fb26-5519-d18f-042666ed5800,1483268219,11280672800566292190
+dc0e6768-1deb-3cd0-ef67-5b08daa940d7,3181582363,12931232650718394418
+18f7cf13-a022-bd14-316c-5eacc2c797ac,2132246384,2140574354685043528
+99a65ae7-0e2e-2519-b0db-6518536e6ecc,1720081780,9749295869591877138
+b6297dc6-abae-1650-fffe-631610c0f5d1,3368022442,16092586672549821030
+00151e58-7b6a-4fbb-cc89-71952b2057ae,3593736361,1481290529952986029
+94e4fe10-a70b-65da-ae9f-780407b52851,3096411269,6320283399190548558
+9c1336fc-a877-e5c3-69ff-9d3ca66593ae,2686725641,1916505834947397163
+e0cfcae4-dd6c-e124-33a6-4cf92400633a,1098415652,3488858865525261948
+74ce6951-fc1e-9056-dca2-eb35ff8c6de4,691796263,17924513126521966449
+2fafc834-535c-b131-d93c-b42fc84e4bf1,3515381357,11349673404205902602
+b956cf1e-2162-d21c-31e2-80a6e4b287ba,2622314790,12619518351387956804
+b37a515e-8ee4-d846-6bd3-c12807406441,2795358386,9680563101042637879
+4cfd5796-2ae7-6659-3ab7-798ceb890ad9,388309284,5781720904208342455
+71731d04-77be-9cc7-f9a0-8574489533a9,3644741595,3524326822370926242
+07a9986d-0b25-9db2-8428-8d68cdbe96cc,4283399652,4789930187225516113
+c675acdc-8d9d-788b-c7d8-01d5f542afbb,2168142316,3951809399590806169
+cb86c232-d56b-3e0a-7e6d-5d24744f5c23,1669552404,6661929055479621893
+72b6388e-5332-4853-2470-28f76edf34fd,526523196,5368720712689181128
+a1687e34-e3ae-69b0-0584-ca71b62b7602,1693858719,16398615616220949571
+d586bcff-9a00-2005-bcfd-bd0c9b8e2563,2225177103,6382744956865667970
+1afe8f61-c44c-458e-21f8-a7b87172ecf9,1770202741,1680498715589177084
+45762d86-3172-65ef-c9a8-69323d3432e9,1865951966,11434377677606420627
+b9de0e09-e6db-9d38-47a4-a39bc012fc10,2761982495,16966036371855999482
+758f60d2-b708-e36d-09dc-b340a3fd2088,49071213,9302515193921328185
+c1c1e626-75e1-a7c6-1f55-7bf89d2f8d8d,2600163542,12834631177442105590
+784f756f-37f2-1a82-5003-4cbe80e2b28c,1593079738,10478603110283014886
+83fd8890-103a-a8f6-4492-29e6aa578a98,3051275837,5787684752989306244
+421fa7aa-44c6-8d2c-0628-0183ab9e29b3,3077316278,127579049444870250
+eab655c9-8c24-5ba6-c80e-177b36d64c64,398189493,9610795790009093798
+7f959745-fe63-463f-26a0-c3c76f5c1095,2155774669,3207908696211342910
+2ecddede-00a9-447e-0e5c-12e93e0519ca,927486376,5008971607259539943
+241d1712-9bbc-58ff-1f74-005dc4e8e210,2353735637,16362111916351631522
+c598a8c8-57d7-4ca5-5a24-e553f4a72c1e,1280721212,13169238829945967769
+46baed40-82f3-8029-7035-57faaf75e73c,589662742,18147216091876140303
+e3d72784-c1c1-6036-2eee-29b1a1ddef50,3122683146,2352068030500947378
+4566f947-b718-3c87-5dd7-200aada1a7ea,1001852738,2079411837928921768
+dd984f4b-e38b-cfdd-01a0-10f0d9d13985,2934338912,15994349509266862108
+3739926d-c6c4-6201-c5ac-a0c02e28b3ca,2467985020,3566011620923783459
+498e0101-6a0b-a550-e03c-5848c8ce2bbe,685624347,5011874072686435933
+e92978da-1c18-1dd3-1dee-ff607ebc3b84,2858378223,18338098820842254264
+7b422952-6830-1d1a-12c5-fa24aae9895d,3521767540,14880624646570486522
+b4090701-f6bf-f1ac-46cb-aa0cb34aa2b4,3445556221,11591392231976095887
+a869de2c-ca0d-d62c-d988-1cb971f4737e,3681077389,17333850956695883854
+23b1d884-7a23-ee60-93e7-5b930af3fe7d,2950194537,8407622218057325566
+cf30ecc2-248e-6f13-f069-b7e28d3431b6,3043938809,7806463588510203632
+1e355f61-5f72-843b-7a94-0b4af99791ae,3325340927,14995076515497889536
+c9b82d39-003b-2b58-225b-bf15a37e0717,1919449469,7547330301736033390
+b31cf0ca-8379-4931-511f-f1d0debe9971,2044201756,4921413325838261018
+ed8f4a79-033a-de30-93f3-efa5a595cb41,4019270913,17740467277999039937
+46e18f04-5a6d-798c-8ebd-0971e336e597,329331708,2531817570045390246
+8ead4942-dd04-d32f-29aa-6a4993c67ff1,4208705971,10024523212214451164
+ae5f2da5-6518-a9f5-a026-81f68fe35ff8,2150540262,13559913900140233088
+d3399ae4-3a28-755a-4305-2960984257ee,1931676716,1154883215812860949
+5a8c3af5-79ce-f584-5724-bee92c27edea,2380410190,11406365421541651990
+22815475-3a5c-bcea-656a-5cc389b67e94,997781556,16355787903390704672
+13a70c55-a6a2-cd48-873f-ea797a3def56,756806390,10639385793316581864
+383bd625-c6dc-cdad-d953-f14319cc7192,3871674948,10448217058201255230
+27e30ffd-fb8a-a70f-5b1d-c2879ab0e724,3096709636,1813483348942486008
+d245e027-3159-0b1a-eab6-56cfe84a4ed5,597170836,2191755426477771482
+205e27a1-ef86-d050-2d35-bab12fb3a043,927111743,8254070136377374724
+b7a6dc00-168d-0a6d-1d84-7d940765e445,3898859154,772069925824422535
+0098a84d-3c39-838d-8d48-a64b0c0e711c,3791590225,13644839847028523738
+2c324a66-6e7c-5a13-2918-815310b8d819,1051084600,7433913143961844496
+8d716310-fa4d-9015-ee35-60773a6b6320,746482178,1230678159773704874
+4728599d-2538-2045-e13b-7b558780e42a,3407254046,2015678783102724021
+c583ea2d-dcbf-4629-52b0-ec50e6978399,3559259112,14523593388689964619
+fa0fdadd-4210-f345-00a2-be3a8fb7f2c3,3650287204,2077625217003601584
+6ef02a55-2768-75fe-f1b1-96d947e14bbc,1907171352,1249603000916650761
+45c4290d-7a0a-a72c-9ebe-1bf2019bc2ea,645789886,3664485185487084756
+74e7e558-7115-d104-9ac3-b99012725885,864783240,12601345919356788002
+b84f0241-b61f-7e9b-504a-eb9dbbcc3f71,3635957621,3375183882399514036
+8f6003c3-6f2e-ff5c-7c02-e2373afca0c8,1666684591,14658675574001032797
+d2f40c46-f713-d37f-5402-4cf15cece727,439114324,10726611150958890026
+373eda3e-7211-1a8f-a6a6-da7cb95d2a67,3689822976,12180796384472147949
+7458ef0f-efbf-335b-7eac-4004fc5d24d5,2489784339,14842066024174843882
+5a7d1d03-b4d8-b83c-3b40-5a35781a76ef,3989184927,5237464815164083467
+2a4b605d-d7d8-bba9-603b-0a8b5cde0899,1398928803,1569149877322213034
+61670282-0a82-e44d-f449-8120ad85c229,2704954977,4966661791045104947
+e7a633ee-ec72-a481-51aa-7f8f775fe0e7,54436839,8433965556522088243
+cb72f610-8b34-4cff-52cc-5c397d05dc87,3303396290,9385442930545360451
+75495386-f19c-adff-177c-4b24551ba945,520265234,15019796953234642019
+73c8bcbd-2f62-416f-9560-47987f46e04a,1463023462,16344459151063238028
+51bea7c0-9e4d-b9a8-e0c6-3034801ed962,420457710,7470634382168732859
+588071d4-2fb7-ccb4-4834-0cf5c70af456,3633597067,10882901647626006953
+ccde74dc-0138-55ac-c0a7-cd10a493fc96,2985113897,14096551021845837388
+5aedc796-f0d6-84de-f00d-8db2c88eb23d,186535529,4228244308346166411
+76d514ba-fbb1-01d5-96a0-fe61a4fb92a8,3545383992,6125232288063805545
+de7ac70b-fc12-8dce-e2ba-8f39201c5073,2764665348,6865925176881733384
+5062ba81-a68d-fce7-e2fd-ff1939fea81c,1129725310,18154806351983932833
+6effec8e-23f7-976f-058c-ef7ea58c74e4,2083506108,9339504213476658793
+42e0ebf3-d755-664f-e32b-c9ed65d35ac7,635638260,16287442494612996027
+6fcebe0a-0aa7-2a74-fa11-b225da710a6c,3381309511,5745758288265893335
+67c6cf90-9fc7-5b64-5f31-1c8216760933,2607909115,4824625323003039095
+742ce4e8-9707-723b-4ab1-4d1d6e6118f7,941122937,8547451382241561940
+06fa37d5-d2f9-fbc9-e591-59d0be45bc32,1078913424,13608275580973008542
+f8ed56df-9e18-9be3-f1e4-c1d57d446822,1223037058,997907856252914577
+dabcd6db-f405-90fb-1672-d33d9d73c7ce,3573640288,5291259477565754299
+c7484215-8d7f-d16f-9be3-8543844ff3f0,1510838736,5647174159243550893
+aa6ba03c-0f78-66f0-a656-274cf4badd34,1156004437,18080777617215767609
+76e70697-f1fb-4610-dd92-e330f6017917,3676907455,16748222304399922326
+88534b43-a0c5-915a-6317-a50bc9344dba,2048578437,16004061300430440953
+a77f8fbf-a15a-b7bb-3061-98ac1c7997a3,2517840685,10844480226207594069
+54c6a4b5-94c4-ec76-d192-4c0a0cacf106,1637065113,13750329856054565948
+361875ec-befb-6fea-50b2-24124dd89e58,3130500000,6016018898705295293
+c30f038b-c1bf-ac12-e943-a0810fd9cc06,974703305,14682416124912750185
+ea9909bd-7524-3ac8-da16-821b926632ef,2748578604,1673441048589562558
+d5139270-1525-bd77-0518-9f9c966c8d61,1310808263,16395425237928336222
+5b8cfff9-91c6-6e3c-6afd-7939aa7b2618,2849877305,10289778353911399233
+42c911ff-3711-3ac9-6cd2-f28d6d6a829b,2627894213,10395142329251997541
+6bd54e1b-6981-f662-8f27-93362bd83ac2,3798946692,5516618390337600310
+597ddcf3-eda3-2a15-2ced-8b7e0ee61519,2350050265,3090256835577866040
+d48ac70b-76db-b566-5851-fd0fde444121,3226043249,16610966203979720464
+febfeaee-a82b-5711-6bc2-7e3cf2ad1994,3619882923,3291943921916553679
+92d74a23-1a61-61c0-3560-0efefffa9b99,3516609112,8268530209298630813
+5f0dd29f-f513-5431-cf50-d8bd2712ffa3,2366865488,4248503303632527087
+4eb863a1-9f32-2fb3-a9ac-7e3e87f9f6ed,3076863945,13151397497048218622
+67accfb1-40f8-1a81-d572-dea89582d333,3966856731,14418407995767946890
+52959e6a-aed2-b274-3017-8c8d07d331ee,4050069832,8542666792852314017
+1b76534a-5689-0558-5012-621efe3570d8,3995820884,4762960722577091789
+3eea3483-2d79-13bb-0939-5bcc9ab21e9b,2599191641,2497209383380888091
+e1a72260-9d43-b034-3ed8-c635c6d54735,835783359,11235193208484948255
+439fa80b-3ab9-ea73-f75e-9151ca121aac,2758856100,7661649325200425246
+9c6281e7-96fe-23c4-a0ff-2520d07e7621,165835745,2349415652329728603
+89478675-4408-bc54-59e0-fcbabd11bfbc,1752645290,3359552982526800248
+fc27ed15-1713-e08c-8870-12c41abdd691,2074129181,4195937148059403798
+7176dd24-90ae-af3f-32fc-deb2d7d6546f,3329921691,12306724397386762199
+6671f693-dddd-1a16-4935-417271183483,1719679774,3834241473875157693
+4c130dbd-00c6-f125-3085-693b5729f66f,1684521065,2967660391199270952
+d9776886-c2f0-4947-566a-b0c1360b92a6,1349906560,11077642158223767588
+58b5ad91-d8d1-7496-59bb-841281eb6b09,2687922450,6888504998243784338
+8bba3fe6-01f7-8ee9-f5cc-5901c69bc271,306094895,5176705610853023295
+a9c7c458-7382-2225-5766-c9461930d1e0,3689633436,2207589984944944761
+aec29c9a-6f8f-9e34-d3ce-8c44343e4131,4075066079,4615974170897012641
+5bac55cd-a1fe-caea-74bc-d3031b46f557,3339279045,12533024128729098609
+f9b819e2-cc58-67ab-5a84-fb3ab097cc27,3433509019,12091981305965235957
+71816b02-c2f8-82ad-b020-25f30031d97f,356528015,879539799651905195
+8d35c243-4558-aa77-e18f-364c99653849,3542799050,9109231055701479390
+b73199e0-1dd2-3195-389b-89d8af64e8e4,34394062,5042010870678643229
+cdde0416-7a4c-78f3-2d2a-471e6d0043c1,271342583,10993732904005207880
+21176c9a-ce54-5008-2acd-15d1ee19609b,1220128994,8061340007081717244
+4891a2cf-01b2-2a0f-1a02-56acf20c4603,3912848906,8828369628440347064
+6c43113b-3888-6fc7-63b0-2d7b06cd8d3f,2902521772,479747131707545328
+4720e0fe-2be4-a8d5-853c-2e83c892ff80,2773443927,128895089475651644
+895b6a9b-66cc-aaa3-a716-72e107be9a2a,1004456537,5182948208248834876
+2c37715f-88d6-7d8b-9954-e5b7d318d3c7,3897368886,11722469664594874579
+5f62d8b3-c12d-ab2b-e533-23bcd07698d3,3224406537,6349533889193041161
+20b6e5fb-89e6-1704-7c66-dd836eed95fb,4004286573,14553955555320274364
+fa55f502-f848-b123-d52f-5e145c8a3195,3245587165,3714501320948773460
+4f2362ac-f3d8-b10e-7956-f35dae0449f5,3552602319,10491856662860515247
+411c025c-75db-fe50-5db3-e43b320ba1f4,844546225,2431883995957411524
+b7d67034-28b4-2d5e-2207-215361dcd4c9,3309673669,8013622649402019671
+0dc02e89-bcd5-517c-f4b6-9db9e1fe1a7f,550001794,14165726738731734766
+b9b88e28-a393-0b43-02df-93fbd20b9cd6,3744221387,17510485475921440803
+59df2d1d-22f1-13fe-dcbd-d6ea65f415ec,4082010773,13861190300823072040
+bc8e9850-c8ba-1167-2cb9-923a23a71118,4222855168,12522932844441269412
+31dc9d3f-5d55-b256-e830-00f7e17f6aa7,2155767232,84134393019093834
+83b6adf9-9cb8-4e12-bf07-ab5cd039c6db,4262854016,12940015434347513518
+787e0593-efaf-b0e7-eddf-e06a60e470b2,2016625461,1738161002651568992
+eda6ea99-bacc-0d67-f4a7-16ec67089695,88150311,12418759192597069367
+91ad9ddc-b8c9-25aa-2e71-c0e489654089,4210286471,11288266585341434769
+64bc47b9-8f19-0c57-27d1-31644e721d80,3210694733,8196698158836620777
+63e5aa00-1ec7-ca44-fdb1-6387acc5d7ec,939430761,1871218748647284081
+3fba4876-82ec-efea-284e-2777b796ec98,1985440017,3255900296531333019
+91c19000-8749-f095-ca47-a1ac2f1816bc,4251082602,5699479007379330424
+02a54065-c80d-d33c-89b7-d4c29edcf411,283723272,9115161858247473906
+e6962c53-9e7c-c3c0-5dfe-283265cb5b62,4149385571,1942142389523485247
+661548c2-071a-431e-8efb-c77672c99d4e,1207936495,14839827486587380029
+ab0d5ea4-1dea-3b94-5b13-976a50de7ba4,4277752414,4004540923987562966
+779001e5-a2cc-de86-31de-5f365318f377,244302067,6711248337133018951
+32f6b904-1bee-2048-850e-f6f135948f44,4004098554,18173251184643383213
+421098ba-1ab5-ee39-96d3-1c1ba33f27c8,3467755060,11169395911967144628
+100d6d13-0e9b-d438-252d-cce47c7b7d70,2383160413,12928510843564969558
+74a4adea-9102-e56c-204a-f6c66ef6ded2,2470530209,17556808176089320641
+f25a379d-9aab-7a7f-7644-eab7d44f5748,2134882003,12332979047186208958
+c7b12ffa-b39a-46d3-f271-ef8cf429fb0a,2287174117,10439419670678005675
+69bf44cf-5d3d-d7a1-d904-cfcff464706d,368085711,1006565758845474335
+b8d5b937-9660-675b-bdf2-f5fdf1f615c3,2891580155,17145828764644802776
+e4ab960a-158e-dcfd-74a8-28ba37c02f02,2709969593,12317078294854362843
+b88c4f10-c374-79ab-b3f5-5a1134de7379,527519302,1842573952162929335
+0fafc731-c12f-247e-469c-472be7be0dbd,3185179387,11422703548774662287
+7070027c-5b72-665a-189c-28db3d01c1cc,391327781,16917803838769566109
+cf2d964d-74fa-743b-89c8-60c803df7192,4055346763,11841396214793895422
+fdb2d12b-ab70-c09a-4233-893e0dbc14b8,2803916036,8190175155916029130
+9a1411bf-3d3d-5588-c057-8c6951ea4f41,1191465508,14239944075249758379
+50a47f50-ba07-086b-611a-cfcdf2d87679,3203182738,12544440052772926591
+73694a13-e72c-2da5-9c48-4dd56fa16b06,864410586,4950976086045091519
+3657f1f3-9d9c-0373-28ae-8e1119a922c7,1253321554,15751848218834895403
+e54d5592-bb0d-a08b-38d9-90361f2b1f5e,1460490228,6086532955637218671
+b3dcb678-72b2-8832-ceb7-bfc1f97230e3,3955020370,10561802719653735600
+1da27e76-8ace-a72d-e5bf-6e5445debd0d,4106162788,13242947220258483777
+7a46b3ec-458a-0c4a-63cb-7a8708c19ba7,2962528446,8417253862643377965
+df2645e8-af56-9f1c-9f89-38d6c31ad9e4,2198463045,6554598136954883431
+88ebda5b-0cd2-720e-44be-a0c6665f4434,2087972116,12745911859484720222
+c1f5ec3b-419a-17c9-9ad6-14bb7f2ad7d0,1624059442,3949335925103909678
+e3f118a1-efc1-1a69-ab85-4e95d7432095,4293645135,4006581399849014547
+fac162cc-0c79-9d3d-2022-18beb8a27495,2132026180,12059360217337478493
+f3220adc-ba78-d1a5-6774-95eaa7117ac3,4196668604,14570035260144275532
+ddbb021c-b22f-73e4-5a10-9eb66829a1a3,2154863488,7020479118694609481
+52c45990-8590-3865-bd24-be58a9a70e9d,4199623788,994725597719799974
+87f92af3-6b81-f420-0c1b-e5e8b9483a26,1422902526,13115377085918080092
+e44d234c-dca3-53c7-b465-780a78d9df3b,1295353224,7630737181565467458
+7196409a-a893-fe5a-2146-a070cde9b530,4169791841,17893475164365723617
+bdc58563-6a6f-f5db-673f-aa004439a68e,1357280337,6335793649716597918
+058938ca-5fc1-0109-444f-509e8d8b5677,1737226861,13435584466675620585
+0f1fd1e4-27b8-5c4c-80c5-699cc90e85c9,3688726640,6814714370321494050
+77448761-86ec-b19c-04f6-5249aaab088f,2093605456,4573424015339901976
+665ef25d-4f1d-768c-8763-e81285665073,901628205,6545720145388647780
+48c1e36c-edf5-d7eb-704c-34408c368102,1428253400,12975300591698781848
+a23aee36-515a-3c57-639d-b4946a985dd6,1179269395,11564776938562509064
+35c5ec19-8fa1-bd1e-8000-cee4ec27db6f,1304444258,18258268268644066295
+800b6c01-77d3-e377-9c55-49b125299ce4,2266132245,10083790361402322232
+4cd31109-27a2-79e1-dd07-9610b5fe8b63,472642381,3321061176290927345
+a40bd830-d516-6348-a370-890c2261f6ee,3844333874,3720508477559556897
+af9be77a-f328-00da-46de-d1fe29e2ff8a,942993359,12101098347589156979
+a59262f7-76c5-3cf9-b81d-b3a4bdf1e68b,688236824,12941177865837671303
+494e2f75-9465-4fdc-7944-8192861ba05c,802422803,10620296824344768533
+3e45bb60-c02d-e6b7-6f72-541572e1937d,1418503903,9438505522398883142
+a92c05c7-e640-b4f2-1191-92ca964fc5c2,712941773,14961424791183054690
+b28585ff-eb6c-6551-2d39-ff0a2e66a690,2806141003,505421400401957044
+601b9451-0e8c-6b34-27c3-e88884ed4f3c,3661493133,2108727520714435965
+7ff8633a-c563-08c9-7212-ffaa544a9b8c,880249213,2774999353497589374
+b3bafafe-9756-2883-bdae-a274ea3aac63,2291905833,14565114689129749926
+bf1d6e28-974c-e0e7-e18a-a88dc5c43575,3937399596,11605808281097442015
+7948c42e-e9be-24a1-a688-e17abbedbd24,2314123671,14745317499937174550
+1d2fd3fc-2320-cdbb-830d-97ff2197b835,1262282792,5097604120705429508
+c0ab7069-6915-0425-bdc4-93e67857db14,491830336,18396198651059282988
+f6bc63bd-cef6-6f7f-98aa-978e1152af95,2126687851,6096662445889403534
+50d2edf2-1e44-6111-53b4-56ea9b6eef19,1012497014,5806145955165883417
+47765734-1670-6301-7c09-4676ef489247,2141748572,9357189840501023517
+bb0adf42-cafd-35fb-d4d1-718210055f5f,3974767160,10639119683482036217
+efebec6a-b7bf-f128-35f9-5caad3005285,1464993349,10319920172804382695
+cd0d2551-7912-1d4b-fcad-3c89a1d124bb,3006163350,4495064433144768679
+424f1c1a-c777-c30c-5f2a-4e0759ea99eb,2575868010,14488694683338509946
+0f59f37c-6b4c-d28e-3652-d19742654a05,2629444676,13752122020881714053
+5ccdf5ae-57e8-8f93-b6ed-6eb4c18dfde6,863481714,17569187401909249077
+750ea8ef-3dca-b6eb-79db-b79f4d2da7bf,3104260939,500258949951715660
+b0f50b31-ab36-1104-c2d7-3fd49c3d7513,37631818,10630215821742370832
+a56322da-61db-7970-07bc-1065008ff3d6,116096904,14615354394997958494
+9ae100d9-40d8-3ead-263d-067d9cb3ed9a,646049230,3805386117378533295
+83cb4714-ad1c-ebdb-3878-6b0f5fe30ed2,1561354601,5720420990411432443
+d0737712-a206-f351-d362-bd9ef68720e6,1933657242,13193126105823338116
+bc7131d7-5824-1c92-b7d9-a92248aec129,809907783,3211764029870751647
+873f518d-e637-ecc9-3f9d-6d5c0197af80,3594445834,8309071610448080431
+486ef3b9-5a7f-d804-33ea-6d9922e540bb,53710440,14331718935250765823
+2a8e7255-0790-b474-a190-77c26f793877,3999500356,16316869093493367475
+2205c8fc-bf90-3f2f-76dd-cef15add4374,3931563994,15092014895543031103
+fc853cb1-2e68-6b88-3ee8-27319147ada3,4264435172,4399167873681729075
+e474f4ae-370b-5d1e-19b8-bdbcce391e36,3202368832,6489532222295338
+63dd07d7-063c-1881-e221-c4cb20c39f06,814359739,15950378495254035578
+c504ca84-7a35-d0a4-af7e-5ea82fa2d653,606820279,2444772988078347066
+1c70957b-22a4-b1db-bf41-09bc06e7c18d,2182671500,13786471468765172887
+b6b9001a-101d-0294-b9f1-976661b4996d,3884592936,9664124661105287705
+bc3b204b-a468-40bc-1aa1-3562537f8289,3218484786,10319130308293597087
+b5dec0f9-625d-fed3-4d60-f5e126271809,444409344,15379976196512784389
+437d6a50-da47-2c35-cadf-232b2789f838,777634801,9844373484755724113
+16f26382-34ab-cba5-c4f8-5a618f9667c6,2379698621,6015905978204785958
+51b366af-e296-a026-f468-1cff95396bb8,204987548,6441393351499850273
+bd0d0267-2e0d-e856-0da1-7a798a7e55f7,3179290739,5954368104467209608
+5f3009a5-e1da-8dae-924f-6948c6e223cc,1623140097,842262084357472281
+dba4e38b-f555-348a-6d45-047a1eaab4bf,402974367,11062790310043100497
+89276cc3-12a2-3f34-cea4-0d747d14229f,1447683132,6546776212028566902
+f27c2b9e-5744-08b7-7fe1-56acb9350227,2334702320,3678064036257906467
+9a66880a-1ca0-f40b-62e6-62119811d7fe,302925778,10782346472718449534
+4b3fe6e4-3ba5-c564-60b1-0f1fcf6cbae8,2326765586,16552007492072186783
+a705b9ee-354a-1b5b-4c82-5fcf94588d51,3638708448,915963271514282390
+70cb7a66-7cf0-c72a-c072-2dd384ccbd7c,269763099,14436479573759255856
+f8c41438-5e96-1656-37fe-b05de3108bf0,2597447119,10720563955916018128
+67bcdffa-39f1-26e3-3a95-37415b684038,3897850368,793535707741445414
+0c9d953a-322b-6e87-4003-b499c520a67d,3820308057,2515183935276173654
+8a2501fc-05d1-8855-aa26-6c48ffae4c0d,1544870424,17432325438259856800
+c17b81c9-b6b4-4ca7-8005-b67182f76302,2331914968,14623998988513043141
+10d7d349-7d96-18d8-81db-45039456db9c,991182167,1967694259418935975
+4381237e-529a-f642-1f00-89954bfce1e7,798235374,1567819185552959633
+19a91a8a-7974-b225-26aa-6403c0571297,4239031236,15052167377784396062
+312535cd-ab5d-1424-1e99-95410841460b,1612821470,418611202690782156
+9f2504d2-6135-8322-0385-ca8a979ec82d,866180991,6114006086020823141
+17ceae80-bc1a-cfe7-121b-ba4e53ec4d1c,2836126961,893772004476893410
+2d48a711-e0d7-0378-c80a-806d826562a7,3325027408,15317781768771611642
+ca14d0b1-462f-bb29-e71a-fef7c1b27257,957183876,8143088251068380245
+b5d7feb7-5e37-41dd-0e97-77b6816e00fa,1771433398,16630187035928472330
+2aa3ea50-4c72-fb8d-b8b8-dc3812f9985b,1846522457,13055241530921072113
+b91bdf8b-895a-6080-2a27-cdb29891a115,1094157233,208184735032696656
+8ea2d458-b70d-c7b3-bf9b-a1e8c92b71ac,848948955,14182674392521978491
+487a2f2a-a67e-f005-8c73-eb539c3c6325,1419901159,3951598190988108209
+46b9715e-821a-d5ca-5293-fbd828748bd6,2567736480,1665533114030359507
+c7855f47-c02d-831d-f447-9ccf3e86a542,2259972704,7391665631932783168
+4a92866e-1cde-c7ba-6bfb-3e16885054d8,932770057,271629263353031515
+4ec63561-81e9-2878-6c59-30566183c89a,1185480956,8279715126973143389
+7d5d2efb-4c78-0cae-eece-d697300d62a9,809926809,5026401450004288793
+38bd7acd-72ae-d010-54d6-dc55d02d1dec,2999393008,4509950587504032086
+fe522632-517a-7299-aeec-1a60d314d102,1305184827,769785751494798242
+9db84464-6725-5c37-1136-ae6b2fafd768,1409252115,11954913998924397505
+17096033-fd10-3e02-e9ca-4830285b6093,2731664257,6277203867691405014
+cf53b237-0f9f-6d42-ef3a-fe1a6f491d7e,721605194,11753672627119253463
+20cd0745-b24c-59b4-d23b-d1bbbfc84e75,3857010041,8206717281673132469
+bbde521e-66e1-6331-6e33-34d198c44415,3601229974,14441250342226193576
+8bec2adf-2397-0078-39d9-8d4b5dc6f1de,690567476,963750662060968139
+3d494ea1-1ca1-38c2-8585-5981940c9631,2459536438,3573396501951847096
+3219a01f-90b8-fd29-70f4-44d2ab0cfd5b,2297819815,11789826301692730378
+f03078ec-592d-8b4f-2503-57c4396882fc,3923589607,2605705206256962941
+109920e0-cc23-28c1-1d94-f7f39e6bbf0b,2178488400,10482355657123830402
+ce6fe551-0d3f-06bd-86fe-5ce1511f1e4e,2518376417,17642342275599004666
+d3027861-85bc-f0a6-d365-b4c46423d11b,3187776263,7293962302863516464
+5b32454c-25ff-c656-7ed0-16348dfb85ee,2656634939,3546243866455116156
+cdfc184c-3930-88c6-f184-63bb9561ac7e,2240155786,9941718651006631851
+cdfc2315-a1f9-2c52-d002-6e3828a8b538,2401961699,4028308628135857425
+c4534cac-6a38-a115-743b-ecc56ffeaaf9,4277904651,8722972560373967517
+2657bb8b-c1b2-ff6b-6a65-590799566c43,1872428387,14531262085559968860
+8caf9e1f-2451-061e-d2dd-bf40d76cf375,3618837114,11600346822540054630
+3e275fc3-2d42-3608-3c6c-ed151b348c50,1894063290,7218954139554527868
+51d3f9ff-d4d1-bbb9-7ad3-c1b34c016900,4000255317,12325197747279046857
+815ff589-af09-eaad-9411-190ec976f351,1314830125,5640559215814169173
+18f213df-61e7-edbd-86db-155250984003,4123331163,15905051285944774618
+d0656940-82b1-05a6-5584-43337181fbba,2894522493,6472495208713838569
+1ab98cea-9bb9-fa2d-719c-a78ed8b29fc5,1831840670,12225051195733696293
+1eba784e-b85b-e00e-06cd-2beaca2f1c65,3020404661,9992405192915514297
+af84cea5-5b2e-3dc5-c0db-3aa7e0566136,4106941568,3674693064516070460
+51eabc67-8e36-0a16-1b4e-576935277a26,1034775735,6821347003458405679
+05728a75-77de-ec71-bbab-553c8f183f9a,2498186560,6870562676564814379
+211426d6-e45e-1195-b2a9-85e368ca1f06,3096712286,13667408711972348819
+4b2fea43-99b8-014d-5f3d-2393607dd07c,2864334848,15669675004770049922
+a2184c57-0e5c-bc03-4a25-534b0a76f26b,2751969248,18052585274482849709
+4968157c-e996-897b-62f4-6b44778a29bd,1442903100,13313077231953508532
+ec550757-9425-d306-4ffa-9fd9008edcf5,1060241767,3603847443160800268
+2a15d4dd-cb76-3b9c-92a6-e8642ef7e412,2975569372,11957030836798872559
+5c79f63d-439d-75e2-4a5d-0e9830e74b41,4174012222,3157155481061858842
+2fd6c9f9-299d-bb19-2290-640c8789b6db,2504368311,3635514860190679899
+5344b8bb-70bb-94f1-2c96-566387f0cece,778269550,3507868527244522945
+90de5ee6-ed0c-9449-9f3d-7189d064b85a,576997473,8176243046648060407
+f700b759-105f-0e88-9151-c8cca9b4af77,1006482245,2180395115532344375
+6cf0d786-8143-12eb-218a-e09cd5124245,1850833890,4022995924105866329
+f78049d9-4f30-82e7-d778-4fd62822d8ab,3466278925,13605965722093390727
+5af0144f-84ee-ca95-08b1-f1646719fc3c,137225943,1331450237145509425
+c4269636-160c-c880-f210-6699ce78b2bb,1223968804,15407773898696268816
+7e650b03-651e-daae-b591-9209cabc1460,2247462014,6296294278958609415
+d1a6a154-2b93-79c2-702b-d596e151c42e,3101870359,11891262438728425805
+6b0c34c5-a43c-5e21-7972-a1f570409046,951181941,13244237410876937204
+59e861a2-cb4f-c31a-1bf8-ca47a6dad9fe,3709615192,4585555410020056915
+084c4b30-60d5-515b-1c3d-a3930f675e78,2166247270,1661416032134492937
+b035e491-222f-2ed0-79bd-70d638351b80,2203202467,17666861354757908994
+95d1f84c-8e9b-564a-e64c-bbcb94a9ab23,521278099,2323352616820893731
+b03804c7-f391-c9f9-d966-7c6f47bbd100,3759503248,13825632689537029224
+83f80032-bc0b-ce6d-796d-b5fd2d1c0be1,2618171029,13514765031218296621
+5f9dc348-bca2-9a7f-0424-7c47c28a3efb,1239199763,15000214403297798334
+89c9411f-6728-acd1-9982-14173338f72e,3047229683,15049005730997368363
+7cf3422b-e635-6522-fcb1-8c8cf3a4bd17,2408643243,4964319824948828102
+4d06a0c2-b58f-ec7b-cb92-918433d03345,387564169,4189290621999603007
+1dfc7598-320a-c1b2-0c53-300778d8ae23,287386296,17194517402889790151
+8ba1f94b-d9db-e303-8b65-1adf7707b487,890534547,14702630179342653853
+dcfb061e-6a60-a5b5-9215-98d0b6a5d9bd,4022710760,3530358189822602406
+ad4b47de-d2ad-acef-71f0-afd5e13c3a2d,2213484999,4605862004278295570
+8b522b3a-dca0-601b-8bb3-55eaec897913,677419310,10793080979327299795
+52083314-f493-0c01-4a46-c3e32ac16182,2587283007,8086848381314502676
+5ee979d6-3745-83de-a6d4-2b40321668e3,659905845,2461050904129364536
+a84a433e-0610-6846-8be6-2351c9e99883,540533635,5299510234691360764
+3d672e8b-4174-feea-9c22-3d5b86b32d41,2354086207,404695681500411402
+9349f609-4c78-8102-66a7-c405f7ae3e54,2589073191,3517363797343340729
+377fbd67-66a2-9003-fb28-220b483b623c,1969585822,356708865239935720
+615e6ade-2fc9-cc27-ef5e-013e93e68196,1023482509,9654672839340330906
+438ac6a8-a331-5b9c-f9ee-28b0d7f3ddb6,3916018615,12931490829768353982
+696587d7-4158-6217-3bdb-81dd9cd1c65a,1363268871,5241459638188932032
+10565e77-9bca-5637-3a87-d01c4bb267f4,3549511558,8550365868977766431
+ee18f944-4770-e7ce-89e8-1d35cfa42575,905442609,416642385253768105
+d6bd4903-eea1-0d17-1fd5-da80f18b79b1,323181104,14961600181327227567
+99618cbf-ce62-9962-78d6-3cbd08c5115e,1869288391,12996642011275558369
+1bf0134e-224e-b1c4-0ef8-95dc7582d430,611606731,12862321383149279197
+2b46e5ee-10b7-ae8f-f021-3260c2cc4ee8,711991345,16182011023278962444
+2306af82-a62e-0c8e-c27c-b89bf8c1b64b,2399841153,15125459811667605069
+6ff8ee7e-53c0-e931-27e1-1e3927613720,1257830749,737298349469876482
+63c740a1-cac5-1b33-2f47-20a38bf53686,3256828871,15540531523551064299
+3ef6c591-b792-6dcd-0868-476ed2472915,2176666384,15080967836152133572
+3d706045-c249-8a40-be82-c04e4d14bf1b,49683542,10203591889376762533
+73df26f5-c7b6-d2bd-4c40-d7a2c1dc9ebb,3360297614,11138329933171910775
+daba9bb9-82ed-d945-558e-129d8b7d0bc2,2827186182,13628823942636807956
+e29dfccf-6c15-8104-94df-5e9bf80802be,554911573,18400277633872537627
+de20e367-2bdb-d112-7dcd-b01db3537c4f,2772730294,7243936700981402598
+966cfc2b-2d23-0701-aa9e-7d87231285f1,886035326,6423304635058140975
+979ac350-18b8-8ae2-b0ea-ed992fedcb97,554826463,13954437773335583042
+0e0c85f3-ac1b-c84f-1791-b275400fde1a,2545880418,14324909279947112638
+0f59cf6e-d401-e163-3243-6c525fd26f56,2199259066,16867543810765565648
+41bed4dd-94ae-93bb-1025-72497ee9901f,2033542816,9279709935515555528
+d5a4d965-75d2-5b07-6486-49b263321f47,1511822671,2788507456878730766
+03c5e1af-9b7e-27f2-ca65-957d9309a1f2,2236279043,16105303524612425284
+ab663e57-464d-6146-6f61-c2f643776643,1677845357,3779602625671915537
+29fe46fa-f79c-c957-731b-b0b10c93dc7b,2247311923,16933870936252627740
+997cf89a-c943-2d91-49bf-6cc285ef0289,4204966442,5764392444049018161
+4c283f91-5ee5-c4a3-60ca-c4d288a54ba5,1732604294,2711780604841339464
+838c91a7-a064-5258-aad8-1bbbaa9e8c38,3342271446,6759498077410644164
+7213b58e-0ba1-82a7-91b9-e88952028598,3754715948,1175610661484216167
+937bbbaa-73c3-5ed6-6581-391f667f89b5,302361936,2587059739632235179
+5969c1a7-2090-f8c0-f8cf-c77e59b4c106,3088668687,13189389996964838221
+e7f71df4-c044-bf83-3384-02c0d210b9cf,3207485080,12677405363226518265
+c96473be-0dc3-5846-0e39-013469e7319b,3745740135,11443438052524249502
+b49de7cd-0c33-fb24-cb0f-149772ebd71a,1061023679,11530670752036339917
+e98707cd-7478-5ed1-fbbe-3003494df02e,3777948964,1595410035083935713
+3ff68515-f5c4-d519-3b88-2e88c728580b,1042610975,16813959710894759016
+2237fbc9-7322-ba29-66c8-cb4757db8952,2648942059,7006765654281969662
+b35674f7-2f78-c019-6f65-f8dc76dda093,56678719,612020497983961053
+c032906d-ce8d-a798-d76d-ad7211d8e269,1255192111,18005387533720010774
+fb3de87d-5b22-7afc-dd25-3405ac6a79b0,3826418965,9761644339353226261
+7624cbd1-9411-00dd-1987-bceb2aef2088,2784147748,17373999758827865370
+1261b32e-aac0-4016-c87b-418273cd0385,3745885444,12098169793978650833
+ff001401-455e-79c5-e88e-7b274eb311c6,256031939,6022517219439417572
+bdf9240f-b2da-ac12-3ea2-5e41f6ec08b7,2574975578,16817213404301648703
+f2eb2a35-3b12-aca9-e62a-40539780c5ef,2172735642,3279489437310997211
+6f04fc9a-fb26-47b5-e621-fd8a5d881648,3994172694,10959567686197199017
+a1ed76ea-3a0a-4c03-ab95-3ed5cad2512d,2792563323,2434155831116393558
+9b05d859-9950-62ee-3080-9233e65dfc54,1100527421,1315717372221914909
+b18598f8-78de-ea00-028f-ce310b833f03,1915703730,7096036406068805287
+c6811e70-4632-a957-6cf8-a863cfc6ab7d,3121616473,3953251414182247238
+1ee3d742-fb8e-a83a-3d75-f4c3d59a5e4f,4106464466,14891751849691865866
+df82fbf2-7a64-c13a-1a5d-c2be697daff9,3170193684,16363754326889559830
+27033ddc-f561-0cd9-0a03-f27c44ed6b31,4184556865,1668798615046573497
+cb8fcf71-8c1c-d394-c22f-e3c6c84bf471,2909929141,14286707021880258127
+6e5d3556-449a-0530-ef8c-7a9609e7d2d8,4256805680,13769806676166966553
+110bebf2-3ea5-e04d-2897-e4e7c2998595,2631828956,37923889382678936
+c363ceef-8237-b413-ffee-e70eb98728f2,2895370849,1268764640993766108
+7342c929-8253-df14-feab-eea001158bc3,960439511,4416524048807339763
+a59d3a15-3fbd-b4f1-f362-e8f5f7e13879,2204099533,2488734723004850914
+ad1708a3-c041-b424-0e9f-3c3061bf6334,2025794283,5024954435042512124
+278ae37f-116f-1441-75c1-bf6e94fc4218,336628489,12918059429025255532
+ea010258-a2c1-e05f-a4d0-50f2de572269,1760945696,13016110957023911429
+67f53cc9-78ce-43b5-9909-f30b3ba5fe08,774886103,14424522677443716893
+5238498e-ec89-7ee7-7a29-d3946d049f54,3732096130,15918333697822824555
+b47f0110-4a8f-172c-aae0-e8a07d18d19f,1980089686,3716962693877361750
+2e23166d-2efd-e0a9-f212-9e398cf6a6ae,1414238845,13107313757667522281
+b43cf5e2-98aa-bef8-bb23-d46627d14bf6,4110649644,10302393862996001551
+fbd78aa3-0f17-fc59-76e5-e465886a37dc,3318354853,6297544133921789825
+b2152346-a612-1ed9-c490-9a05414fbbce,1778014833,703912240048552161
+855f5f44-38df-95ed-5833-a2addef0a574,389080623,15368586620306390614
+bfe3404c-36c3-6d18-a73e-1b9946106124,1229772152,18158602358668710315
+c207034e-7ec5-118f-f6e5-4b9dec69b81f,182718412,15663791087671275059
+3ae90cbf-7e1a-0bc1-1780-aa48c019f2d0,2106310521,8396668284263326995
+80e1f6bf-00d6-a68f-3879-6bc4b586336e,1134413615,6587500713033089423
+2459d95b-496e-46c0-cd80-5e8bc613588f,3617606023,6821468443549721947
+97302e27-7b0d-ec62-5c88-20fc089b5b73,2784354642,1006141096694638254
+65bbf164-b4a3-3246-f0cc-06d5a943b097,1539775184,1453528914907620652
+fb8c9009-75da-169e-1a56-d4e696e2f1c4,3311349634,17855957240965734779
+9bde80b8-e47a-ada0-a200-9099d8abbaee,147779945,3009905534090419819
+377ea39c-f46a-54cf-78ca-f2f2d44330f0,615275275,18255202938775099537
+fb253752-5bbc-e4cf-843f-3c3eb2cb8406,4219628833,15709112153114975556
+fe1e6bf2-ccbd-19e8-f4f8-d86da747fe68,691045164,14020882706212375570
+4446650f-0ebe-6215-f092-270b8abba01b,102493361,13239447933797547098
+42d2b06d-0c40-f3f8-5a0e-0e2a0ee62632,4271976788,3871618947548367083
+7f676794-40b7-91cd-2ebd-9b96e3ce20c1,1726393456,12914160346833668699
+24cb7191-6c0b-f712-0391-8eaa5bdc7459,3846525582,304405327825258123
+378f2214-cfec-e2dd-3b81-85755f1bebf9,3505267436,12554180501007734475
+dbc29b48-6805-7873-fa57-8ea828c89fba,4088782511,3317903855338686489
+1eda559d-ee00-a96d-b5c7-3f6faaeedadd,2877180578,3748808455597771213
+6e9b9fc6-f7ca-c132-12df-014f11c77002,2297685260,2593402417259692666
+2214658d-d950-4891-2b51-3b94cfedb67e,589325763,9185769846034297504
+23d9e4e3-e2a5-e277-4d47-e68e4b4dd46b,1667872793,4996321061285944152
+5aa3d5af-3255-14b6-d94f-8e30e4c47036,2416616463,9236873336131034124
+ec8aa639-13a3-6bc8-7f0e-3a916379f23c,324531454,15987495309858865304
+a5fb137b-a3e1-5c99-faed-89cd5d902a29,768077134,16415503618159181509
+22fa954e-f4b6-acff-ef1d-cb7f63ae03d1,2730586503,6946270260385282262
+aa8f93b4-174b-f771-e80c-a3160c9b461e,3811499212,8911682584703074666
+3ded9ad2-4f17-b479-5c58-e3e43c23666b,4199406120,10924889127376772572
+a422a386-3168-5086-e38d-f96b18cca1d6,119302978,3240180465752036776
+c1ce803e-57c1-0004-e237-1fdef0ba1f6d,2479041873,1981623000648228311
+d86be8b7-cb28-3560-57dc-0d3eafd6c16d,3661230639,4741621001540101317
+732f9f91-49f1-e8ef-678b-a0e61929fbf1,4053983136,2387833024331933679
+ba6c7527-2c50-dacd-8e8a-aae39dae2fe3,3717496551,4925318189112119159
+20efe5ad-b4f4-e30c-8833-6df1fd3a8eab,2036828502,8832456119617746732
+1121c5e9-c9ce-b98a-a542-f22838e02487,1923448612,7531304762742527602
+c7629305-90c9-bd62-6280-09f254b53e8e,2118390141,4930919788816161545
+01246621-6987-b546-1172-7800355b8fca,1369572719,6081353666365579594
+18187c61-8aab-821d-63ab-8b0d5570f8ed,3798701246,6528920517008012769
+ab52e7a6-574c-7045-a417-1945443d5d71,1087300729,14790124896833116984
+49737c87-dfec-49f5-9a9e-bf55398c69f8,2634299787,16655411873266811935
+6737ba52-9d7e-112e-0f6c-fe78838b64bf,924855741,252109578643906586
+649a8bd6-6969-5555-3ddc-88d18ded3c31,2534337641,5291966646353738437
+0a5e1e7f-35cd-f1a5-7b04-f01b03a2a99d,2023984907,9060969848281652287
+77f3a5ee-f0a2-3de9-aa3d-0d2202171894,2271521089,18125413211590663818
+da30733e-23c1-c836-a4cf-680d123f0daa,1412642326,14702895490932263748
+b94f4735-250a-5f6e-748d-95da0008b7c0,3294866828,13149432545383583920
+4d61e38e-57f9-51a8-3d38-e03e51816924,552031773,5013260457542168849
+17d03e66-da7b-dc78-d775-81d98338e4f2,2180089335,16746944857759682829
+06e96ab6-343d-7ac2-ff26-e089dab49b4c,2186497915,3560322773660643194
+e1fdaf03-faaf-07b0-bd85-5f02f69ea0d9,2888055676,12990647116135323162
+8c51c901-12ed-999a-0e71-e483e83bf1dc,3775441358,10758392190112483379
+bbf78236-2355-50cd-c5ef-d8ff7e7ed51c,1239236832,9141453954223851490
+1bbba0c0-38d8-f030-46ef-776a5b9d91bb,1933426034,14669742411391923468
+fa5f5f0c-2ece-b172-2ca9-d22dc64a1336,3176493224,7357025350400282099
+5f95997b-b1cb-b55b-75f4-3033fee093f3,4237692348,468192780357172144
+e35abac4-85d0-bede-55b1-46f195d2690d,2043198333,8109757148094546211
+2dd37ac8-ee6b-82bd-39eb-c64cee329d96,2349583323,9139831040206744072
+349f0e16-e594-ba3e-b6e7-164fe7920c8b,1807848627,4708309302656610793
+17934393-0f9a-fc32-bd7b-20d2ceae9023,1431181404,1286396036333753574
+38835377-806e-e0d4-9a04-1e7986847aa3,614501017,6189612906579199114
+af54555d-6340-c9e8-953a-e802c4aac060,946558541,9404630364709731448
+1ddb5365-6edf-012c-ba40-cf5cdb159fbe,763496017,15335288017434674844
+c3af185c-7613-ecbd-c20c-b47ef2e74872,159493534,196456786643601745
+cd61eac2-8579-5249-a1dc-0a860d4b315d,487524048,11414045956267035037
+a2ee28dd-87d3-dcf5-ec7e-782610e4e0e6,1783640665,5485341697178703928
+8ff8bcf9-50d7-1c67-09c0-d2a771e3659a,866248995,15458250309588536480
+33c50e96-581e-7122-4150-a5875be6c530,3036396694,12854727429634900319
+b7f618f4-d2e3-a6d6-744f-58285663cb67,3356901159,5884752622183497323
+7fad6241-6eb6-4c61-41b6-b94977c44524,581627340,11110142633548263596
+739e1a2d-b13f-0640-7f5b-05ce83e514d0,1694138149,11545888543621838143
+dfe36c01-66ca-3e29-0465-a1080fd61a61,2234277027,1322589340436128122
+006d6e1b-d751-368c-3d1b-2541b8d4115c,21051275,4553842278345101797
+b241f3e9-ec9d-c53f-6e49-cad02472a284,2275197688,9038138604786058298
+a8b12d9f-dab4-6757-8d87-2f2af99d1bc9,446148115,15656688156594380239
+ccf389f0-e2d7-f3b3-720f-0f73f6607cd3,316339702,8878590677397737611
+4e380c64-4256-709a-df32-ba9ca64d898c,301864464,4126900679709819041
+fd1a04a3-4156-5a43-c46a-80f4de3cc406,3698499246,16219844797821326797
+73324a17-6f0d-513a-dbb5-57c3426357a3,3603135484,11140156440301788344
+f60a80de-bff2-dd54-f057-157f83e16d8e,3125820974,9583547984137531474
+80b0c4c8-c631-0a42-5b1e-0d0e83f116c5,279073727,6696806976289633960
+1416e6a8-b36c-291b-35d6-b352b015ec5a,4081579688,10999173486043173446
+b177a1d6-0ec8-32f1-3b0f-c04b171eeeee,2002346986,16189711959401778671
+b7e1e8fd-e4cf-24b2-9f5d-f3e7acf61093,283614194,14428220248924644756
+09bda655-2d7b-4cf2-a922-32827fcdac41,3325208335,17918459428451495826
+7cfb3190-4946-94ee-d560-8fc710c397dc,2173292539,11737748743454802549
+be61f134-93e4-bd47-418a-b893f45e1092,3676164221,12758197408018391937
+dc6f8ae2-c07c-24e2-0221-de09d5850f64,384078506,11704786594395486751
+7e67b337-fd65-d3ee-0137-9e7cc09e2ffc,317253353,11583683024228538024
+11202aa0-3b21-a295-906c-c9c8996e9180,3988487544,2118995350835614443
+23ec4ce9-91ce-56e8-fbcb-ba6780b5b3ca,1620304123,16251829785181416533
+12ee00f0-bc95-04f8-7dd0-64977c41d388,3531520412,2744615482855859105
+1c3ab712-6ff3-f62b-91a2-c371df1c2402,35996996,7043631801911931297
+a5014435-fc72-fd3b-1dcf-ebe95bb31c7e,3140231479,2125789592094153279
+57787bc1-8f0b-31af-7cf6-93f57420119e,3317693454,3181421226153250441
+f3ecbbe5-5f87-8fb9-3092-4b5d28e159f1,3645398706,14241855978715684983
+d140f8f5-6e15-d79f-ae83-b7a2c17a4f50,3618851408,12836775406298400279
+3636594f-7ae2-0b04-d2e9-07aeda2e102a,3290130543,13965693754737609760
+a9ba4ae0-ae6c-0340-778c-0334a0c645cb,2464878708,15254227420819177178
+15b0b551-83e0-82c6-1a7c-3433145e4aa2,2854490865,1618133751021401762
+7dca8e02-dd78-db72-c027-4e52e6306044,3606007445,10241171745634438350
+80cb7ae2-5135-efec-e6f8-9bff98daecce,2836150174,3271420280337899733
+48487345-9cf8-860f-5e49-b4fb9e2b9a13,2903136369,1014222219595968250
+97227e58-bdec-6552-4675-474281b75998,3774832348,16782481182900016427
+8241b530-1c0f-5a0f-1880-da8fb00b9d72,2634384163,7424979069151630891
+1edb48c4-63b6-07c4-25ac-6efeeabb516a,1703488992,5671954426160177987
+91d7e768-8055-15c8-698b-5332a8d0b4fa,2765485454,17720662995578136381
+483670bd-35c3-84db-45f8-a73addbda293,1396407087,5724047778889141270
+d6b9719a-beec-bfee-391d-5745513c7ccc,852738925,15275503269145340674
+1ab0ce23-70de-b63d-35ad-7e6b94525720,3238675989,2829808803546736659
+acef3e6c-1458-2735-18d0-e2ed9f552180,708690075,2350374196431588041
+fe709277-a5e9-36b1-7902-aa635bcdddad,3291070640,8276439391222167264
+24ac6de4-8c2f-f456-fae6-56d41ffd4d90,1886909056,8571315387911057131
+de45d11e-27cd-d42b-bbae-0d04a46c3c39,2792610819,969476920713209337
+62c77b73-4314-21b0-352b-20062b590548,818993011,2576365050561544033
+fa975101-4178-e51d-a8e6-ff0c7e33ec09,2739536547,15472952979977087381
+c5a8a38d-4664-09c6-af69-bc2f8fc82f4b,1312801265,13715258547721348192
+1d6c8bc9-6c45-6f42-b36c-cad9f24efed0,306588414,10690685147656201036
+6265368e-2de7-d7be-532e-10013d5f5ba1,635285356,11982544118621079076
+4e67c019-6f7e-74bd-9f4a-d503f8cee37a,3707025228,5948412977904616033
+4cf49e54-d440-abf4-65ec-0cd5d666b8d1,2141188642,8782326765774639879
+4c35444c-9d67-ccae-256e-16d0645d66be,2017524141,9467521376591435889
+0ac8feef-8370-3d10-1204-b52c9d65f5b3,2408875619,14975313463289020082
+8b239be6-377d-2ff1-8645-d8fbe398ad99,550891435,15216373492376669113
+2ad06218-8c8f-9d98-0310-a17c8775c079,1941746617,10759813190942013461
+5a87e46c-9437-8b5b-b512-62a83b54e0f0,3712257091,7550890072833158962
+789065ef-5957-fb12-8ead-55a99d6bbde8,4101495172,18082649622683033042
+2099161f-89bd-52d4-2fe6-3d17536838e7,651581403,11190225115721181007
+a15a04f0-abbe-a9dd-10fb-936bf00cac6c,3247608916,17794779985729490668
+c570ffae-a276-edd4-7acb-f18de7a2d866,1661727421,12966395878517471885
+4c9c18ec-a02d-c284-aed2-0c438adee768,46232460,12082652646863610061
+87ee92f4-d575-89d9-13cb-c487df78cde0,1890848892,8429130843615401922
+f03eeb68-e205-c75c-33cc-8e833ad3b2cc,650554599,2325591123008983857
+2b1d3fd1-d4f2-11c6-2d5b-14068c9db0b5,1016879688,8046852829813825140
+3ec4d411-ce92-3fd5-572b-97ce21221ee6,3819070958,9832080485713711113
+144c1608-6908-127d-f787-f3409eea115b,4175205956,230203361151784482
+27052ab3-04fd-8a26-f439-78bdddd98e00,4152654673,14418447677758572600
+286bdde3-099b-bce3-0a9d-964e64275819,2691304834,1800310666590674195
+a8a76314-b68c-9c07-4707-b045132379b5,1834676878,12935252872099325772
+69fc8fab-d2ea-aafc-f79e-83959dc8c913,1175625229,16062485870798435242
+f737e743-9f14-1afe-86b8-c8261728763b,2833940950,5804284992872972148
+5b1ca4b9-05a1-072a-b1bc-9b00c61a7c95,437063317,6153481695162044008
+e1837945-7238-0328-f9db-78a16d262982,3955319138,8019117961634148529
+e442915f-8227-c6c3-5d17-e2c54812a710,3574144384,16308672269428116253
+d848b707-2650-3e3f-5daf-64ba202ea08f,530557491,9746453897489491384
+611b17cc-5e63-c50d-5877-34950a655404,2291567330,3152619305984882349
+f481de79-7cb9-c252-4c24-af2fb3e96379,3647174229,15422110308257993727
+2027ce26-23e8-9d86-1002-57dadf5b768a,287364414,8897633085535573777
+06e64061-43f8-e53c-3e6d-a3061d2001ef,3462419866,8751038039953536973
+a50aa20f-93ce-b5c4-f938-e443d43af614,2780952477,18248091378751844624
+b8e04296-a91b-b2b0-4456-9a20f8e2bfc0,1718838034,6481145543983446208
+b8a17a46-4b75-6ef8-593e-fdb1a0015ec5,3236203155,6329302428084218924
+2dbd0093-8dd9-88de-5e7b-8ea39bf68327,1879956901,15295322526717857321
+b9f89089-1942-bd41-fff0-678b93a5a79f,1683776944,2710486910934075127
+72bef9b6-b989-30a0-04bf-5c51d9a0fc15,202512948,7223795462554226223
+2eec35f2-57a2-7b8c-a37a-6ff0ac5d7e65,3468698657,14803435872309839824
+9593f295-955d-20ad-b226-c32f26901a5b,2237983175,7457654594831939550
+cd64667d-404e-3775-3d0c-4c452043a9df,4290864340,4600285202881470694
+3297ed14-6676-6a0a-afba-c7b3e193b8a6,1039527974,4877049622488158950
+641161c0-b7b3-fae3-94d0-607a40e3616d,1867190566,17366622981213530491
+17b264bf-ba94-1104-4823-a99bd3c0526b,836602122,13492530993388007567
+5c085c64-5831-9d6a-ffe3-81a9f89d06b3,4260368058,9229528950494366861
+3ed08822-947f-c7de-a0fa-564a31e9f6c1,1292968072,2108181753280880872
+68c8fdc3-a10b-ef2a-fa14-cee59e949b75,217244396,10960724898831650536
+e4b9afc1-bd16-27fa-d6be-6ef0dc599be4,2748670850,14975968727864189883
+7a41abf1-feb3-1139-b8f5-9fc175b5c681,369921600,17305838050324949712
+4fc83dcc-4f5b-69d7-e6dc-387121326c34,2685694763,59852352113534633
+ccc57fd6-ebea-7dab-f687-3c395783d335,891525106,504273198240613942
+c87fdb4b-b193-739a-01c3-4e2e5a722c05,3478503367,4591723111634116899
+c00d4079-4855-b41f-458c-939807c471b0,1004877362,6225442323709400501
+eba492eb-216e-8be5-fa7c-77368e00d4c6,2234809503,2950573730375346785
+8bf8d7b8-3e75-ac6d-7902-d5eb2468c5da,70434623,7072782121531730736
+335afd46-95bf-3203-5e3d-4ef57c9d403f,3677981067,9120651894581045606
+ec9654ea-633c-6a36-21a6-5fac9b15e780,362270440,10156959013713353235
+bbf4e0e9-8838-98bf-7988-efeaba035839,3151789345,2534526888576682502
+8f613071-d33a-d66b-8241-9ab38d60972d,2935200889,12283681404882928134
+b3b50e95-de96-df94-4b29-410585dfc7a0,1021247555,2537644361932867740
+a715e060-275d-7ae3-b3b1-d0a2e287b701,4021455437,6807751425972587000
+41bce177-e999-7c22-cbec-0b0449eafa8f,2081642696,15692763321793154101
+fc3a0e94-c03c-46a9-0d21-12f7007f3eb1,173143269,7703994472918860242
+590ff26b-a8fc-a309-bf79-136e742cb8ed,3666217228,5830512441554047107
+f639be4a-4509-821b-3b6c-f4573a1171d8,1246373438,11751785121088773980
+14c006e5-09ed-929c-9d7e-ab4dc9a4e42e,1411483475,14839596208248384160
+38d72edf-64e3-5a62-7c31-080ccfb1fabd,3226302127,7091439945245811059
+df0b9da9-0f5e-3d82-3922-eb3a04c810fe,325716827,4870814100648965468
+1c683574-7391-fc5e-ece2-f7cc8f097691,2347476732,17197328567593854104
+491463e9-4fb7-66bd-de63-b2c2236eb682,1592581970,2329937904363984588
+0f21a11d-8809-3cae-b7a6-aa47d5fb6adf,850114299,2733316008593022676
+799cc4c3-46ef-1576-1966-9045a4f7d1d6,1249679330,7184501175048761349
+078d95ad-13d1-9946-6e71-c8b1a8b17935,4007384575,13417255608593777466
+0e63552d-edbd-9bbf-ea02-88a93ea2fe8b,961102043,4963544348154172527
+3ceae6f6-384b-df4b-32cf-894189082429,3562330918,8801802981535453818
+b396567d-e1b2-751a-027b-a50719da0157,2267434387,17734389198726069732
+89e98c03-a523-19b6-3e1f-e99fcc8b92ba,541581909,3512652317012716503
+0d0694a7-22bf-2634-6554-b9b55e5195a4,3904817570,10315349695162538991
+cca21a06-2854-174c-8bbd-3db5856a0056,3932537187,18102718528970822012
+3a05167e-dc1f-e192-bb7c-405db5ff9b1d,2714559990,2365439046126388658
+35082eb2-8acc-ba67-e180-1c226a74b875,408890896,4307585338264038739
+a29bb38c-6611-0ac5-7390-252541eaf10c,2493307543,13184429195176314286
+fec56659-1ea6-f822-8338-8ba1f9c81644,307848049,15344605588761365954
+8475b04c-435d-3e4f-d48e-3f3577e346ca,2538333635,8732949007530601286
+75678a04-0cda-50d0-fec8-3fc6c43aae33,4286265323,18367652472170477449
+b1918a02-baa8-36da-3d7d-3c1c1bc7dc23,3177052897,4287316855201269274
+6003a6ea-1b18-899d-365d-6bf13b071325,1749695236,8641881174933432251
+7c7db021-4dd9-df28-57ba-8316b717a0d2,348200550,4012081479072580925
+31c2cf45-1516-88ff-98ba-3928801e8ba6,1868906014,7712637746504237379
+5df0d502-455f-b0cf-5011-898846cd3ada,1929957815,6905370109519055295
+fc77501d-05a0-0806-6577-d3eea30ff71f,3160540370,14657839771757148496
+2767ccd6-e10c-e602-4978-36b147cc260b,3387113825,13761393736873755252
+00d7671b-9f0d-91f5-bb2d-5fe1024b2abb,3069442173,4463554055496545093
+d414d0c1-8c4e-ed1d-2c0d-f65765830a3d,2631376875,15313396596184393353
+decb62fe-f240-71f3-8284-1238cafb62d1,1487127391,370882349021222850
+ac48ccb3-a4de-c91b-97b4-3b492953aacc,1704986716,17649359212952418223
+18ece178-2742-69e2-b037-4fba4c762e01,1721577178,3610522075605823509
+5e10f76b-e00b-7bac-5402-cf0ffd96ecbf,1167946415,5990454960006786835
+c68d3e8e-4ac1-1763-0e37-f1387671c9ae,2777050167,14345351674554231657
+acce0e3a-c2f1-95c3-d655-9eac9f86d7dc,2065678041,7460699767469725563
+f3037357-b3c6-0ee6-b7c8-97f17bcd1998,1848774091,17219728768694220531
+90f4a24b-7703-10eb-c40c-60b5af087b77,2083134868,10903125292586778478
+7dd0f22e-edfb-7f48-dc7a-891971446576,3571518215,14592290572800358314
+f057d35c-377a-4070-6a3e-c1bdb1c163eb,2189121593,17715811649592117325
+2825b16d-854f-f6b8-0ccd-92c8a407cd0f,2177477070,6832446715132178030
+7094dad0-c301-380d-baac-356f649a8adc,2197422019,5562744205159717796
+e1bc611f-90cb-0d63-aad6-a7c3a3aeb206,1850422700,4299538891627851137
+f14a2b67-8dc6-b88c-8e5d-80c7b15d0ec0,2772520810,1366013630029375793
+61bf0750-33a4-d02d-1f37-d16ea3e669b8,1109369022,5581929433869660200
+dbcc6348-fda2-ccc9-3e49-7948fcdfeb9a,2884802598,8277533869795022755
+93f4c8b3-4fa4-8360-59c3-688c2bfca4b1,1706316593,15501453984604672325
+5778b773-b33e-3170-0c1d-5c1744bf8030,679743564,13427814049785808708
+208ca2cd-93bc-2f0a-21e4-8557cf9dd9fc,1482790220,12205643697280937595
+f3218cd3-5b88-2062-b20b-2296139a6ea5,3010458505,16005289194990401748
+6d18c6bd-666b-e432-64d5-88d870a453ca,1160239371,4839592101365167297
+365fafc9-2037-24d3-da5e-9afbc0e5877e,3247042093,2084982481172092095
+b984c2c6-2817-b2e0-b4f4-0a0680b8559e,1167258368,14265235524110383304
+436f02a4-6b9e-2420-a1d5-eb02bf68d51f,1213867904,8525015046736482953
+0b2d930e-5104-dff9-9ffa-47c0ca17b2b9,91611173,237586354804346757
+c4fc6699-f4dd-a489-e0ca-5dfa9c261e14,1522483234,1680241416987353780
+9bba5f10-fae9-4a1f-ca04-57e393d02df4,2155273082,13778352146471023802
+4b7f383d-eaf7-826f-9311-aac6132b3896,1501315032,3520026133108556615
+65ec549e-c42b-8f8f-7273-515a1177fc74,2817081930,8147054371536159966
+adb47b3a-0d20-596e-3a9a-1457a8b6c5d2,1299865148,14674392628795919634
+1876e9a5-c606-9f04-f4d1-169ca226609d,937366167,5732803630182303652
+51de0eba-ec9e-a339-4edc-1dc65b852e77,2095119258,12969297828089518339
+b1f3fb44-b4fd-557c-dc45-eb70dde9e8e8,3595863001,5164546914789949004
+68584353-98c7-579e-a1b2-a284d8484aa8,3997057031,7078984599471445891
+f4ebdb12-fd67-b4bf-ffcd-4acc3164c0be,580898115,9651032745284887159
+1018036b-ec02-3ead-dc04-84c58b849213,218765513,11501501375603638411
+44da32c1-aaa1-86e4-b698-aeea790dcc11,3620591476,4760236811557556599
+04b6369d-52d6-e55d-7170-d283b8fe4249,2176029168,16975305195665041174
+3017c60c-9228-4385-5c6c-9f3dd1b53e6c,1191451639,10353307901617168995
+aeeffc6d-2b3e-b70e-6631-df9ac912c4d8,1895204705,14882012136110422064
+d48b0501-771b-8963-aa74-081eeb0dbaf0,1484919339,6635268253497034740
+8cec3d14-9b30-9712-8628-dbcd5acef470,616693567,2172150767156801284
+920d22bf-1438-c44f-a89c-f389090a6ec4,1524568518,13115477359375455895
+29bd3d2a-ffb6-81fb-b969-e2e1f6705d2c,739212794,2702356748620533319
+002d8f18-4b24-9300-b3d2-205b70ddf5bc,2435535739,11873714078442304489
+30de4047-4b61-4ca9-e68d-f6f07497ef92,670350799,14764358314799427874
+acb6d6c8-b457-a673-e22d-9dac0a407880,1230256361,2408541884570804971
+a07ee720-ad25-91c5-aa5b-bdb2bf08b970,3035634695,7061130628755788998
+ff235bca-11b6-9e84-cbea-70fcafd757d6,3864090530,7065443446598993996
+e07f67d1-3899-7034-7346-066394a0dc54,4100185820,3143639173392128355
+b43fcd3c-ddd5-02e0-43f5-050963f27a5e,395140104,17637922420475647505
+34d3ebd6-5231-5d67-8abf-71fe397e108a,4188727551,16130927685056320878
+05a01bf5-ddbb-dba7-a5c4-165b32604ace,4283525165,5077580006399264407
+58d29dbf-13fc-ce9c-8fcc-a3ca360460e7,3070068318,18302174384399116462
+ddebb20a-c672-d395-f3bf-7d9282e67d9b,3408404044,2727744363141076285
+4167e378-0b0d-3afb-dd4a-46a12d2d03bd,2403060603,6045289909588988899
+020ff83e-75e1-5760-1f4f-c6739e0ff763,2379743318,12741950745656079091
+d8e2eff8-763d-ab79-6e1a-0faf653bc9ca,1530013369,4152662284666309559
+55669102-82d2-bfe1-9029-fb1ed0eb6528,2756187355,11070835278483130254
+c32ae5dd-73b2-4f90-bf3c-937114d90fe9,2924239370,10088960200625533336
+d235b369-913b-554c-2844-6ea3a646bb41,2680092638,9982925345168133191
+9359572e-bc68-0cd4-f713-a1434fd485c4,29200090,14354831373091208370
+bea4ae26-444a-5aeb-1083-f5769753b3bf,2262043845,7820936255707629190
+edf82bae-6829-5207-345d-72d8b8b5619b,4029236362,11644556830279049215
+cd19ae45-5553-e0cb-bc59-784ff4119e20,2839734044,4549525320237563129
+03a42a9d-bd12-1cc3-f77b-965049d0e40a,1442267985,2681215932486997209
+1f38b669-203b-9be7-ee80-c31a64f7cf9f,2861092842,17875391466746066333
+9d422ef6-748c-fc95-56fa-34be4822ad19,510398428,6920617755679897732
+9fe715e5-8753-4ed4-9d5a-bb34ad546648,2958475985,5169196934218796681
+173784d5-3afa-d4c0-0907-a289460f1ebd,4235548234,1558006398132660315
+5df2e081-e08a-60ea-8b34-7260d3e9228e,968607202,6111741241654760685
+482c43ea-2bdf-9a80-ecfd-93be6ee09a6d,3140352231,1009411409151126669
+a3e498ce-498a-c651-68cd-32fd338ee9a6,3364976037,2623313106304298597
+89e1cc62-3008-4823-0433-316786f32a16,484170089,14986478995412559241
+c4903a7c-4ab7-d6ed-3073-ce66dbdfa696,254376378,17575357397701428953
+90dda978-e159-675d-47c8-2138d8374107,2921787340,6215695745154365068
+8ac48d46-227e-2d09-d511-7b498a70ff4d,1794902087,5843378492546790566
+573db6ca-57dd-ecdd-f419-93ba4eb17d23,1349096265,8295778473511441942
+be1d2aab-28bd-127c-7525-868a48c21dfc,1086120134,11969591740511500018
+4e0521a1-cc24-2ff2-e561-e39996edd361,2699282974,14284012141349589847
+1199bde7-7449-606c-aff7-9d8e7073b6e7,760137738,18179091161364560918
+8f43d5b7-ffd5-0e77-5835-fa9dd49e9f34,2917123801,14062045933657787587
+6bdf2820-ea3c-051b-a1dd-c4f103423b51,447484098,4269390989140904362
+25f7ac25-00be-4aa9-903e-60e695c573c6,451396742,3181360918402150356
+289247c9-539a-776e-b755-35b4395a94e9,3926760551,17242976725529138198
+4091ffcb-fe82-cd75-eb4a-ef703c4bf313,1720282900,4689977462337041979
+2c780e98-1b90-0b99-6281-460b4613815a,3091530952,11342557602427061458
+b7435fd9-91e8-fd39-93e0-fddd5f20ed2e,756265273,13005527886539187609
+f8307b9c-9d09-cea0-4fa6-42c81b0e324e,378947028,16364347361719991104
+843c42ad-2c7e-25c4-6fbe-17f368fc3c48,3933211264,12118588923974691007
+ff82bf56-3964-48f9-c80e-db6647df9b64,1994442931,3224940154894487876
+0bbbdbbf-1bc5-2a1a-a91d-12045888b470,3771714006,3173782706865619762
+7731874a-3d51-32d6-30dd-a68fe4655514,2517294539,9415884531050167977
+47b67113-bc1f-a93e-2446-34422fa6ca94,2601397832,1860768491991814979
+bc7ab2eb-7b10-7262-9e9d-4622b585b6ba,980820594,7889683676986784502
+a2481e1f-815b-feb9-55bf-00a640ff8c5d,3846080574,10772127063324730386
+02c4f000-1f68-c904-ea34-95fca5d89269,1247999297,3799310649912082901
+64252ef2-6018-08c4-e828-a5f4b23f40d3,2864274971,15219659089286860375
+9556ee0c-c457-30ff-8241-9cffc8d0950f,286831553,989315641351008497
+2bc4753b-5175-13f1-3970-09b5c6d072cd,3047177145,5935549420981710737
+b0cc4d96-17b4-122b-7364-fe7dc88aa61c,3391379375,6672043240655803498
+be5f5dce-80f7-eb0e-f071-93c3a12cb7cf,2596864890,9859197248879401448
+28000f16-cca5-3689-17f6-30e3656b6160,1678784115,4032708567592603583
+e5af2552-236d-7d31-fe5c-59ea1546a8d5,1342281843,17558965881846063756
+76ebef27-f745-562b-60ed-cc5e3eca68c6,2081041487,15896784038043572774
+84dfd241-bbe5-33c6-8117-ec8fdaa5c90c,1040716715,14251942240565095279
+62b9098e-09ec-76b5-4c9b-4c0e9e89a9bb,3062886755,5535044603803242433
+660c70c0-3310-472c-4414-4043bca38cbd,202234507,8512735914903637231
+acc331f6-3e2c-bae5-55f5-1eefc39872b6,2326950609,11795125571750421591
+7346b04e-2934-c017-2fc5-670fceaf2fdc,3008735461,8227659275679126171
+baf2b208-3ff4-d1b4-380e-f0e1ddcb2470,3697022766,10489018044093330879
+9835c796-c0c4-acb9-89c2-c86e5ded2c34,1880194540,6438249745007656064
+c6f55fcb-2d08-e595-1b1d-6a3147d4b449,2114495517,14639024466318306745
+fbc69b27-6aa9-0290-7e1a-94e28e9e0d2a,105119645,10329538224321371540
+d0a5e886-14d3-82dc-ab1c-645a66435eb3,1650291688,1602243810419303477
+298d5523-08c2-d121-b9e9-69bea4188dd6,2304177688,10125193441899072936
+6ff2e344-ae1e-138b-7024-8d60929956f5,2747281165,12861101889019023459
+b24a8602-95a7-7ec2-d5cc-908f1d4ce7f4,2684572519,15087900275912063013
+3e8e780c-7c82-3acc-f5f9-e87b9b37957b,4021577382,7865509412031793141
+1cc838b2-e118-f246-7645-82359ce5ecb2,2123812732,451792136930438194
+f7ad847f-92e5-7dde-6609-6e53cd7cc9af,1076948552,5685248520152474529
+78ed1787-0dde-c6d7-7297-5612eed546ee,4019379328,2978801474784093039
+201d5c57-ab42-9944-30ff-da599017e813,135741661,7218912762856758822
+f3b1b6df-d6be-b380-bddf-f7c1c8162144,3885103950,1566992738004291453
+97f48132-6685-8f84-453d-e616021d619d,2205205215,5921011251118902627
+3cfe9873-b89f-8476-440c-e5198b6f7bf0,486603710,7200283441018560795
+5d2867c8-02c9-aa55-87d6-f56f9ecfb7ef,94388040,349074837744183032
+e4fa709e-4eaf-ebe2-1ce3-255a1830dcd4,2552822131,14509383261408401277
+0b63b0ff-3c26-bd04-6c07-7135eebe551c,3465464623,9480382073875101430
+a982eb80-f6f9-eb92-984f-47689cfbdc31,3629192970,662734454470637543
+479a1dfc-f354-c26d-ad57-c18c1b8ac3d4,3283156484,8519315759788672704
+d559cfd6-e8ac-ab25-2943-5b2ef2d0eb49,3617317636,17752007076903130113
+b146aee4-c28e-e6d8-af42-c34fcbdf4202,2127153566,3720997188813422029
+639686c4-b536-0c14-80e3-7fda613f14b5,616505075,4159757303764794076
+9218e3b4-065c-1ece-c894-9677a5427e02,1031669932,11509809863106971151
+6e02cf60-2673-4732-ec0e-68b65020cd6d,795617083,1370938678966200457
+fd09d849-1914-1ba9-2e4a-e3efdfa3bf1b,3611950763,7151323263889708319
+52d954c5-ac6e-9489-7a42-cfd6421e7854,939389740,6591021994277260735
+294bc928-f02c-52d1-e92d-b14b1873d573,2108269913,8664493088118350763
+accdef51-22ca-d856-bee4-7b0c6521abbb,3945384499,8845608099198907765
+2142419e-d50c-f62b-f27e-9b0d15e7dfa2,1946745446,4045384715046925673
+ffbabe3d-5141-a069-f30d-e54a50787d52,3035617725,12432228954789917341
+0868058f-39b7-0ab2-5ff2-c1e64a8e0f10,2613555875,17818694804412512160
+a8e95424-9d13-9e1d-f313-f6ba1533c69b,3639927922,8799579648197316899
+046a8ea3-0174-633c-235a-b80e040708c2,3069715951,6910618578871325329
+e5dbcb52-66fd-8ddd-e580-13d630031a6f,2277698537,11517625570700248507
+4b527aba-c7a0-e46c-19f3-4fbe58893067,3306410852,1693965190315201402
+e3745fd2-19e8-c1b0-b994-b721c06b1ba6,1084052557,11896173421393133464
+f61416f6-5f55-d6a7-4b09-a065bd8a7774,2208175195,894350395602912584
+43a0cbb0-e90f-68c1-41d9-c6607b6b36be,1771510226,10901860503566956688
+a9bad252-3946-837f-8012-cab0f57ccfde,2674242261,11057974913992683026
+a8cf236d-f01b-7070-a29d-d7c6d30503e1,1488841434,15848127832415405042
+ad582ab5-80d9-648c-48fd-2680cd3f3832,3718399971,15093267222567294845
+4325da99-4f72-8c33-f259-d397979556e7,4042674610,6916945448101426886
+8d9392dc-437f-d886-a91e-cae54e400f7f,575321630,5925432504700135458
+5cb95ce9-92c4-92be-c254-aa09408491b1,314358720,3279950644262299110
+78dd170d-bf86-08e5-f298-09f42e931cc1,2574804705,8394858849637054444
+8b9b3d8f-b423-423c-4562-704aafe96fc1,1044990496,8075436103554481329
+f78e6c67-00f8-efac-96f5-60dc14fd4f8f,1896173322,2457909099065536587
+8939c20f-b5d4-02bb-754f-5f97d16eeb5c,3426714974,14738679558913601458
+c8bd2214-aa2d-17ab-2011-5edddf21c603,1841348022,11363780881461109892
+7826c064-e8a0-e4e2-907c-dfa7d2db89b7,2802540536,10857228503744549964
+1b5c7b14-3396-4a73-b9c8-bed408281736,3243129080,18413161856529419063
+c708b43e-e8ff-125e-6f6c-1d6b5e1ef847,4240931539,4701337434622582581
+e0542003-49f8-2e0f-db67-1fe4ae441952,2295263068,2429687511930379261
+6777f57d-b0c6-4fff-ff53-c382338a6063,820559344,16236301452579426093
+fe516e89-bfba-f04a-5c8e-0d43eeb6e3b2,671234487,3184787879118818465
+6a7a0112-90a1-d1f1-3107-501b127fa521,2556783870,9284397315302153053
+2db6b004-9ce3-66c2-00d5-3738ba0ca936,3033739364,710123062880099002
+d5ac0041-6c10-09e5-a60c-a7abc6d74b33,2182438369,4278729840149864184
+4a76c29b-555e-75b6-28f3-61001ffc730f,3592692492,14486369146132041354
+3ad7074b-3f27-c4a2-c7b9-e12472241cdf,2880102094,8125463026681516566
+c5e9994b-4907-290d-66a2-f6c91e895d3b,3471397335,10953609794301747443
+13651bbd-91be-9b57-69d4-9d1799b0283b,3757076529,5035708043134467349
+c0af63c6-9685-7bf0-1216-22c2e0b40171,776111632,11884245518436336463
+30c709fd-c821-7a5f-f857-0bf1110671b8,2009873808,16582315174600144219
+36112b0e-5b16-2b95-ce45-c0fc6627a220,4118184840,5613302736141241444
+0de7c9db-619a-d115-4452-907f3b525fdf,3282900008,1336515983157221534
+7e53f820-ab26-c416-e3cc-bbdbf5a42134,3665991694,12851470393257169557
+e04bbb75-bcd0-2636-7ef4-a2a2ff6d824d,3149627689,4695431660346240060
+dd4abb23-d9b1-f5df-2627-d606ae59a6b5,2164388769,18398631191554332947
+0e1a61eb-c6d9-9f13-b541-dc7deec1481b,705315394,8397852935538868446
+bde7c4db-9c6a-6144-6880-757930bf3afc,1851723086,1502169629888018482
+2dc21410-6883-fbce-fce3-1d3457e420db,868682335,15533145038176995006
+14d278bb-7fa9-770b-ab91-adee114a49cd,2409292945,14932470736321484136
+9fd7b50b-29cc-67e0-8063-4b819b21e1b5,3517034855,9968890843985657641
+85887285-9a59-02e8-52ed-7673ae188ef1,698869510,10047172345423652457
+db9e3651-c92a-3376-7a9d-6fae3b860e32,3158154690,16244558535950078471
+811e11a1-0d1c-9b85-94e7-11cc6f7081f0,2247536448,11353136958430639851
+4233bce7-8b6f-8b5f-e00c-0259534a2398,2026424179,12022565048880021807
+484e8352-4aca-fbc8-362b-a7b2ac0e4525,1234540940,3606540595612548344
+81959595-575b-a1d8-7896-aefa688c8cfe,1056731521,16654451344101047315
+cf07e641-aae2-d997-c457-5e7c2856d503,1802095540,8983405279539767795
+249b7473-9828-d090-1cf5-8610dd3067ab,2982328976,7253342119477918436
+a1f44ff2-1cd3-6f63-8468-bec9f02ee779,3211234005,5493172905818639790
+9a95ce8e-1462-43ff-a23c-f04229ad5593,997608731,4202885779370116526
+f8bf65dc-e301-8c1b-685a-138b26e0de69,3197566128,13998166355273031257
+7fa03297-a109-415d-fa4b-27d0d5e9df74,4234976096,5048312392583129099
+0d97e68d-f9da-ba1d-df13-d2088c22bed8,2798439273,13797295841379043439
+26979fa4-64f4-e1fe-25a1-38fbdd0b23c4,2929610384,7014899715886486380
+c6f05d1d-7471-c502-f21a-503ef640ba6f,3331740609,8641956509125294915
+2fe70bd6-c7c4-33d6-06a9-6737235a71dc,3742649482,4702298159302240242
+9f0435ed-a98a-44a7-8ea9-6f76c6d4a4a7,2001604122,2271243342346915447
+3e143f13-1f9a-d8b1-5cd7-8aac3692d5b2,622619599,13993478706746053733
+b9dba7dc-8044-dee4-03e0-c0affcef1b53,3761633521,10468018055024636713
+ef6c85c2-2215-ecc8-ba54-1de62d47007b,2091628410,3033358086227574033
+ac8fae31-1750-9cef-dcec-c2232021164b,2752153761,728282461966637951
+4661f8a7-4c53-d60b-1aff-af9364272a1d,680630965,425127926725509371
+a013cb48-e33c-9fd7-e4fd-f378f1ff5a04,4045313150,4479308087839681069
+2cfc1a79-b9b4-f769-8b06-820c7db9223c,2883162422,1678335191906756368
+2c9d9192-c2fe-5166-4be0-e77efa21a4c3,1219028570,6332842452594740759
+21804176-50b1-22db-f206-c56b1c5e95ec,3034814622,14231286140297802455
+e7a3a88a-1e89-85c1-78dc-d550d50841b0,1826873311,10876193332930549367
+16612bcd-eaca-98bc-81ed-30db95eefa08,1762403251,2128121134769998824
+6c191f1b-e68c-85b8-9119-fb42b61d00a2,3715219768,8029331487989006435
+dfe67ac0-3d56-d1d4-f8bc-6fa4d9e8163b,4068269509,15052150465253420456
+080bb137-7d10-d9f6-fd17-e80315e49606,2223749043,18090549007404992178
+c954ab27-a9c6-0c4a-13f0-1973ef18d523,462980059,15378919272262396227
+8fb4328c-642f-3251-5120-73dc1b519bd8,467364355,4764219325039817517
+c15c2ff0-dc48-7648-470c-a0c1d810b9a1,2368499975,955124968250500243
+45ec067c-b6d4-1fbc-efbb-9164072b6c96,879303005,5594115951540927335
+8cf822a9-143e-adf5-3750-d03b228b34f3,2309488658,13905951401029181315
+415badd7-671a-5315-a3dc-783d32fc69ce,1448809613,7948562794058859440
+a224e1ec-70ca-610d-e885-ce2f031d487a,4063009254,9503036472201064861
+8decbd0d-ad51-ff92-88ed-19a498bc1638,3636023652,10717535957884420547
+5b29c0a2-17f5-5a57-929e-dc50cc691be9,3379323333,4062083661929972321
+c51de0b6-64ee-ad8b-6617-3dbed27dc8a8,625027244,14122294451368799052
+8b6e4996-e3af-af3c-d44f-b2e8a823f2fe,106985446,7824171821988071315
+a9349752-99c3-9533-fc3e-33b41c0a1e4a,3034885391,1991330044123712891
+5304e75a-f226-97e8-3947-ef4e6630f3aa,3881711533,3039784939420451407
+718fdbd1-5406-a688-37b6-03e8c3c9d426,748764299,9918194244234914588
+76600ac1-578e-d1cd-cd73-0460572e3cab,2738974793,3073077506196190100
+624ae8f4-f9c3-cb57-bce2-a0e381bb17ab,67972370,12851957824335146521
+239e8885-64fd-283f-41b5-3532f31a2f0b,3658251478,11474355072649229500
+732f04bf-73ea-63e1-4304-952862b05943,3999917791,11191467099451865473
+40f62a41-0707-af81-df08-fef5a903730f,1242355732,5676015221980093639
+928800a1-5de4-459d-e010-a6392f9a13ec,864913820,15717565415247076208
+33bb3c9d-873f-6d24-d811-25b3a01e7abe,2727990589,628273029836147779
+c3284b0f-f954-adfc-f866-bc33599ac061,2836835837,12285176404589272335
+89b01107-c9f2-111b-9761-d49b16bda235,2916469230,6419619696465250288
+33d3151f-31fd-c688-1aa2-9e615275ccaa,2245078594,6569470364349136533
+dec09266-73ab-e18f-6031-12d33e85e767,3351511376,13839551314246859566
+218b7616-4620-d7ac-e654-a90431685c6e,2978389358,17918539671235425701
+bbfe3ba4-62aa-27df-c3cd-826f4f148444,2491187947,13215444720794929161
+0ce29b9a-f016-f601-b133-399312286120,1604795269,18019264898747839700
+29c194a8-33af-26e5-272a-98fd85c24e63,4052553049,7265415980669422097
+06b4a196-76a8-7b01-df6b-81da0e496dd5,3633703610,11979813778762684601
+cd277ac7-545f-b972-bcb2-08bc108f2b38,2660926618,2964384446933054139
+62e8d93b-b5f8-b7d6-1ecc-96655c2d7df4,1420077864,645911876965379564
+bd28d196-28b1-cb8d-a7f0-16e1a2131c23,550919371,5116148081080949800
+dc458d9f-a875-4026-069b-ea1ca1790eb7,1828224191,8432791858206655130
+6ce5e7bd-9088-7fe6-9468-a86a0d9799b9,1413986279,12556264178662483446
+dfe63ed3-65fc-d2c9-174e-c5c0bc411993,3602812904,10249905887919163658
+7831e646-a5de-d699-e51a-7a5f59d31e03,439314355,11721486998270984748
+b644d38f-e38b-11ca-74fc-aae40b859cd7,2230645680,7214074968961026429
+fedb39aa-693b-f66b-c021-2eb2325d7b10,693790286,8248815255434726514
+30b6b384-9a12-f966-3e98-943a11c1c0ca,3138688755,3479908498873673151
+e593399d-19b8-4d6d-8413-1dcb7ca983c6,2602545004,5723788645757954781
+233d8cb8-39ab-4a75-715a-a506b988b32a,3756609290,5888747305065827783
+b28ba83c-923c-220b-4da2-53e1fd19864d,1080896396,12105046725213537841
+b8568e24-5d61-f5f9-e112-73bda655d68d,3270214427,15843890838960249058
+3333df4c-316b-9f58-5796-b51fb34d7d79,591984118,7110969320180968461
+ded2982b-5207-3d1c-6112-f27cc35bc43f,3467320605,13040731571373019847
+2bb68ce2-364d-1e76-bfd1-d428a7b5da75,1600541372,2108886756787010954
+2f9ad7d9-e615-ce84-9cc2-a042044a3ec3,2564361008,11258235884881394378
+0cff5f95-7e3c-70aa-f480-67202539c850,1325693124,9386810757979114723
+32d0f4a9-a5dc-48b9-93f8-5ef17c348678,113654406,2496839656718469149
+7f76ca11-37be-2f6c-4e48-784cb671308d,3290638325,11855750583436015104
+0f0cf1f7-17c1-290f-8099-f5c2ab7cad13,2852119930,8771486679287130731
+3ab042f5-8787-1511-453c-193edfa00726,4281149977,742723791511492094
+c92b4526-6907-c1e2-01a9-c328f2c4adb8,3552053889,14181110054708583272
+be8748a6-db00-4b58-a609-1b6a87678f8f,343806156,13861775259820547776
+7c86800c-55df-95d8-2679-8c26f8c08a4c,944682371,5996028971225348584
+35ffb83b-7027-693d-0094-8d8332906458,1883187067,9512168083103537983
+fd691562-7591-3a5d-8989-0379f1e77d60,971279467,9515561278399193445
+dfd67bc0-e9cd-c9dc-b4dd-1224d9c941a8,120159008,6211480001852274306
+e6a5790f-3f64-d2e8-bb03-4eb6faed15f4,2881194198,10254919980368011389
+619aabc5-9885-4954-6241-9638ac98361e,3690089850,3568698952069651387
+cb27f78f-14f8-cbb2-7738-1dab33c618cc,4189711151,4693090618602609587
+aae8a026-b228-188a-2a51-3e46a5fe0681,355337840,15138273179847547254
+fea1f817-6a42-9ba5-bdb7-40b95ec6c2ba,4046361615,5385168894451223714
+eb6ee0e4-6a3f-85a9-ded7-658c10d50cde,682892917,8193588289836686126
+387320af-0b10-04f4-3935-7d0529c2ebdb,2482344639,1050541627593463347
+e0e085ff-d609-c982-d299-2e301488e417,1399238391,17107522687350168081
+632d1c8b-0fd0-6005-45bf-f980efa0aa9d,3037236454,1101146720825472845
+8912523c-8323-ef01-531c-c932f38c7569,2091660135,14973777498660811095
+f745b5a2-ebae-d6d5-3566-76419cb23b24,664385892,9734937022402593090
+c4a54eea-8619-18d4-8304-83e2e536607c,617387958,10164770156109853288
+43667cd5-0d0f-883d-3eea-4984bf52a4a2,3926227626,16717578554769415270
+a3333ca0-b583-3a6e-7796-01d160b893f2,1150319027,11205218682864460961
+a68ca694-da6d-08d8-54c2-461b2e1c4935,3283222696,15993260336839787240
+7aa9212b-f15b-9eed-ce10-5d065efae4ce,3529401102,4419484898624870800
+e297de1b-04b7-a341-597b-327857507c34,3492960342,18345403740539605734
+d05cce2f-8e1a-ee18-0a8f-578132534420,2282651989,5110522586779589708
+4449bb3a-1137-9ab4-0b38-29fcd74ec509,2877820330,4852136951530846770
+5be3d852-d4cb-0d0c-0010-91f56856af52,2551143753,14176259537917317585
+6dc3db38-d65d-9036-b976-51e2fb5da018,2486483090,15451291226998885468
+05bfa56f-37b1-5882-a473-fdb8d0c19e0c,842190365,16973057318718562985
+c2ffd509-2659-28f5-36df-ab944361f2b5,992769585,7767937839095355419
+04fa1944-1f3c-7720-5d55-ef3df1727be3,1954009640,12490466905742234728
+f47000b8-f93a-019e-b715-132d2e98c732,1260292065,3235963189324715970
+e276f6e3-d9ab-39bb-d2c0-de880c7e1a3d,3305556923,14558582156768967408
+cbd9b7a5-0e11-dc0b-c802-7a00af26893f,2923696524,14437710686428392849
+c11676ae-b05c-308c-82c2-864d7bdf97b6,1732928932,15585528809793148116
+a582e910-13cc-40dd-ebb8-dbdcd4940214,1707126333,7421074722713719559
+1b609a0d-5b49-ef80-c06a-3ea1e29bb8d2,819439344,15327117522949089722
+02fbced9-d232-ac16-b937-a611a7683177,3905141784,7956336380377722089
+293fbb7d-5b54-fbae-7cc1-c09d891983c1,386151482,1896679554649272223
+ff1731aa-2a37-239a-ea0e-2246aaf43e93,3873363957,13686346766648286723
+ce4870cb-e7da-f0a0-cd0f-1f82a02a8aad,1719218418,2681261263686155475
+6049ed55-886a-12a1-dec4-df12c33c028f,3179213832,6654669895564988193
+4b05565b-9982-47fc-a121-b238e9f0f3fe,872215253,13607620242777881604
+1c1b1df5-62c3-67ac-bf16-80a4b4b333e1,1820418589,9958109166438885908
+4b17328c-7938-e9c9-586b-20c900d4f2bc,1688938757,16048875006426724101
+7be79f7d-9d6e-31db-e14a-e811ef9a40b8,2447904618,18221888793377911318
+7974ece9-c0a4-1971-7df3-6f31b43d37b5,319549200,15456526050002710678
+75354177-690c-8274-0f87-6b718c9e90b6,2421301935,10589074174230389642
+024cbbfc-aa18-3b17-fcb1-2ff4fbcf95f5,2613780019,33534687338183895
+9a740bc8-8595-e269-5eed-9ee0fc7542da,2240104161,16965438380391846268
+7919ca76-1c1f-1851-1b7f-0819c5675476,837616892,18421986053170928814
+5f308130-cc57-659d-3860-9b9b3f069fc9,1822318233,7748963275721620322
+663dd9c8-1279-612c-8558-b90a9289548e,258390965,10020592332505551265
+0291a77c-2372-6ed1-7786-bd7730c05029,2893044166,14911504647606007348
+7c8d86e1-2669-9fcc-aab8-8d976fa2fed5,2835604335,12915463000864912947
+035f92de-7aa9-d813-6ba4-ca5f3118b065,2223232503,8755123145696527997
+82597100-4913-ce3c-8c19-5f2fc0dbb0aa,2933250641,5253380316534525560
+59c8617e-a077-4fa8-d47c-0a73e0608bcf,1732903932,8666912074669537357
+8f7a0ebe-b901-6310-5f2a-18f8fbe3f728,2860987975,6058578223965002701
+675c8169-db93-110a-512b-16800b19c24e,4226669026,10744326511652291960
+a60d7b6d-de99-e3fc-81f9-0ec9e75558af,1862495115,15867807587266657768
+cd1b084e-213d-2d80-c90a-75226de0995e,1751204183,6733244729173404801
+1b9e8c6d-cfd4-6d8e-33d0-389be054a194,598779688,5390995559723272046
+f42cb4ce-812d-f9c0-cc13-e8cd2ad1bd82,1665150158,2552641370196539558
+beff9b20-ec31-5a71-60f0-55471335afbe,770444990,8427413007763939323
+9eb04c25-3754-ea1c-bd53-7a87cd3bc979,3503306168,13394956349408311890
+2589eb85-2629-0bfd-c585-67a0630e0db7,1581944304,17568873784413677504
+df3036fd-c67e-1d71-200f-276837558913,3245863540,7764780857138764238
+a406816d-6c21-3591-32bf-ed78684735b6,2948684560,6722436542393108145
+2ae27a1d-2135-bea9-38d3-b1ad6732eef9,241665657,2763044393548657795
+2bb0e04a-8697-6ae6-52bd-ef7467265116,2110369395,3648830568437494375
+f6c7c081-a3da-fc84-1896-04a43064cddc,419273582,13939546654526831999
+0107f8cf-e328-1759-afef-56ee00830c7c,13472858,6236479728931828265
+730c5a7f-b29d-d9b1-8bcd-8fa2af6dd957,3537178117,6902658919851239670
+cf6ecce1-7e18-6a91-1d75-b3637c4d8192,1763115439,15316707149782112802
+a21702f0-55da-2e68-39bf-27999f6d8e84,3445307890,335865845783862774
+6b8be2ce-fe04-79b6-82ca-a67b9c7a59d8,2997443764,13685422933770236044
+2b7dd46f-fc62-ef91-8e0c-1d5115c9ec3c,1310432921,14827236239773016587
+0806d1b0-1a2b-0f2b-4825-feed3dfa49ea,2350700167,14563456151307619185
+e186a2d0-c680-4fe6-dce8-2f7cdcea34c1,3798862631,17216171252970955749
+695a92c4-692d-5820-396b-54c36c062d99,1636102566,15797447018845074914
+a696cf6f-71c1-112c-d296-d11a3e14dddb,2374795633,9980080765275791727
+d32fc4a7-58f7-011c-d367-b73aa928add0,2231602000,5358246403451326588
+95740331-ff2c-7be5-21a8-0632afc3d782,3733527214,6149752031118066251
+e3c06b6d-8295-0858-7296-a4b00aafb2c0,151061241,16497345237782984154
+22cd030c-a224-3607-68a0-89db0f497f0e,2914540671,7792187198923764660
+53df6754-4bf6-1f85-d662-0d38914550aa,3683873682,14665629503654338266
+15731891-9922-6f17-3b9d-5bf3b32d4e74,3980461110,18417266485817721378
+100921bb-f7b8-6bca-7df7-50f9caf79d04,2410977476,3863715207860254223
+ba56f8f9-0dce-c773-fbcf-e5998cef58ac,3133872385,9332914460022934621
+9321fe1a-68f8-de8b-e2ae-b4e1aecea369,2522126038,16780933782191699877
+ee21c8f5-20c3-29d2-9028-77a9f41084bd,3957753515,18152343567497505458
+6ba836a3-5e37-3c32-ae2c-d67f22f9c507,916087757,10004289815655232137
+fe182e2c-84d9-a233-b936-973b900695d3,2888391972,2938087662428919646
+25c5587c-d0ec-8106-73bf-1cad7a7cf0b2,3178808074,16901132854800808366
+be34d0c7-1678-52ce-42cc-f3e10e75b11c,1894258573,127326689859702553
+de5acf3c-ad2d-3c37-333d-afe5f1be0da2,1233766233,17858442278312348831
+38dd01d3-0b88-89c1-e7b3-438c74efb8b0,3142245307,4602650566663619320
+2291637f-feef-f701-2619-814a3e9b5898,654992054,8654696842574040605
+392b09a0-fbd5-178e-fdc7-d4c94a956e25,305538624,16668344339838413539
+f92b995e-f6a6-007b-07b5-2d4e56245c9b,2526384600,9559453165451519252
+8b8e3f06-ddcc-0617-4813-02cf65535cf0,3749254727,4821420471836981015
+c13d45a9-60c3-ed3f-7388-7e174ad24e85,190603735,8223714663308060178
+7a3cb898-c997-969b-126e-4b822d81ea4a,616957299,7716528574839533525
+1b946f2e-4f88-17fd-c78a-a33179e599ec,3474848256,17851650857857328241
+82f27fbd-36db-e3c4-4eb1-a1a310d785b6,3827293630,140029725919100521
+fa3b7ac8-cae8-5dfb-c06e-e4779a6bb418,3117165938,14020272913030781646
+53254c0c-d6cf-fe99-a540-da61d3ec42cd,133239356,964140017107095805
+bfe2cb26-56d6-6f37-d091-2c51a5082ede,3257005736,13639870009190782913
+b90a0a2c-4b94-bb82-10d1-3161bf9d08f5,2579064311,12931301701464474226
+6aa9acba-f0f8-d0e0-1d31-1b3da6addc07,3965093965,7818343238551408397
+36f3aa9d-db21-8f2c-ce24-2d4f935c47a6,3111821809,13686221470534286808
+5c878426-3d06-e361-d231-3e44a95086e3,2162390369,6153949923461923520
+c829a5e2-ac9a-3d86-ee0a-31aed9ce8f47,2589301117,7280727615059608010
+5bdd157f-ec6b-4548-88a8-60dc39ec1604,2275859743,11144169315593025390
+40c10ba7-dcc4-69ea-d12f-1a903cd0131b,3722246543,11310284186996988773
+fea5f667-532b-6a46-d59a-c67d9e90072a,1728316564,17257757958252003769
+625c0f71-33a6-153a-9b9a-7c7fb069d0d7,2286780986,7940629351313901121
+97ed2583-929e-5605-d8a8-59f9bc5dbf42,964109431,2193489812113113366
+7f7d2b9c-2abe-e0db-883a-27282d8bc7a0,3678910168,450253120395130081
+6afd8e36-2789-e87d-d1df-8ecaf9f695ba,481263696,8133624549925855535
+968728dc-4dcf-9c31-fa42-657c6e48e70b,299212020,899278148738193188
+c6ca6df1-5e1c-76ac-c6ad-52b247f44ff6,66607466,12774020596020282346
+bc6b345a-627a-6e44-ee6b-92dbcc9be9e5,3873727856,17424502579378346060
+4f9c3e88-653e-f828-3021-c37eb7c52b56,2765159823,16332580776725155914
+88489c5f-1e17-654d-fa22-e50bfc5d8d83,2689779304,9705725823924371849
+07cc00ca-637e-d235-74d3-15e1836da204,2365858905,6236870779802173931
+58fcde0f-937b-0623-236a-dc5b499ba2f8,33304368,11295322154608073472
+d39a8562-0c3f-db63-81dc-5dd9c36427a3,2703921054,15004126768109793288
+7c45f821-a93a-4a77-b1ee-510daa73b7f9,3957753945,3390251807336476465
+675cb73e-9ee3-e9c8-2616-491fb082a8d7,2027827908,14394716170435838944
+1642f7c6-ec8b-9ff0-9f6d-c56b646ee236,3509196591,17159424936428606336
+90c7d697-ec46-b221-76a5-972145bec66e,3581149220,10100271839612194049
+0e81c0dc-c29b-d15e-1a23-c8d275757e1d,2057132346,9315322049820044008
+b4c85c81-d442-e6b5-35a2-a1e6bb4a8213,2426202266,1741959426900330097
+d6799e2e-ffe8-d6bf-8ec1-2718e97418a6,1630286185,6675443600754907905
+5f505b08-f1d9-6853-5360-5764f91186de,2049489656,2098473975402824285
+af052de8-24aa-6f67-2015-73ce53ead5ce,428345437,17624784510177299665
+3d49768c-eebe-10f9-1926-48ccc40ed92b,2743743368,309233478026784204
+652fdb9e-4aec-db7e-7d5c-fcfc001fff43,756161414,16596032797092169286
+eb040935-0f9a-d8ae-8a2b-ebbf9e5f2bbb,993125587,3591582538852853059
+334c1808-9e98-9682-b02a-39b1f18e8210,2533531181,1422845594610739808
+32409abf-40e8-0481-2afe-3441be70ff12,3666919608,9946348705326505175
+7a2e7705-8521-94c2-8f5d-850d61fb410d,2858688870,9031921834768734820
+6f34ddac-b8cf-eae9-fdc7-b1bc15f4605a,2244342369,12782101100799203620
+6380aa7b-9e5e-dfde-5baf-540583355409,856025747,13301536422357870238
+dc04c0f0-0f1e-9b2f-0ba3-0f87ab746181,1665946525,11079936790462270422
+03e2c94a-8541-97bf-b039-18d736017c55,2946811207,6813450264253156618
+305867ba-d222-d780-d73d-c7f926525d19,3140789896,359480276903011957
+12eaf630-5f0f-9a8f-7f23-a196511a1b0f,874196354,16014507898697281589
+5aeab19f-66bb-ffa7-82dc-b505cd9c93c5,3605061066,17467175646522788189
+dc3fd1b7-70a3-1d56-a587-832d85ba4df0,616616888,11185954377718085202
+6c247e24-72c1-35fc-157a-b9258be83a7c,4017780003,16105488560112268475
+256f36e7-4a3a-9f17-0e25-42da3395b3d7,2925387601,1431533532381100966
+0c1326dd-b2c3-c6c8-e093-54d6c783df8f,3019380686,8439473506803972644
+8586f6ee-f826-9692-d489-fba1656ffb2f,3163683501,15757661799102331117
+bf868d42-4265-1007-04b7-c1fff734b278,3224961685,17299685387664622977
+d828f3e8-4191-891d-0810-29069ebf2c38,1593622093,6434217002237150158
+2f33f661-a5a7-11d9-9f1c-b2815e44953a,3400104487,4285029060345798450
+178bd056-47f9-33e6-72da-9ca31eef30b5,104182924,3394577992725383683
+d3a98be6-4904-8a1d-1e4c-11066c7f9f58,2926467918,9186638874359758060
+1af38564-5775-785d-3878-748aefc9dd29,2578743573,13146520397130838625
+f4495698-905c-50c7-5015-9036fc6f5675,948765243,17597033896804486743
+0db7e2c4-8456-9956-59f7-416868a74085,3741085086,6990982077923180567
+4753e423-bdbc-f485-f7da-c4b9a126b393,624907535,10542540083994370860
+5c4c608d-756d-7bbd-88e1-18a52b59dc67,3774022660,422749530823905707
+33c7b516-e444-8dbc-6c3e-1e427c9bf010,1123931468,8538396370775974560
+90d768de-ad5d-b90c-5b8a-ff1ce8c446af,2804350602,8888547787643129317
+1e083697-af53-3490-5bd9-83d2552261d8,2135119041,4413026235305074898
+6befe4ac-3310-b17d-5fd6-db38fe7017a3,2643862730,4445218222327542042
+f522db25-ddab-16fb-cbbf-873385f4cb52,179546897,3413959768084013203
+5c3a07bc-95bb-dcef-c5bc-fe76588b16ca,3779150623,8627309428215860882
+67006232-fad6-6b4b-bfc7-e0595821e6fd,2997935525,12070912185659233991
+a05f015f-4966-d2ef-f4a5-d4730ff9a1e1,4047379153,4059944573592480086
+ed13704a-7e7c-9660-b805-d9890f3c8a01,627920162,3474910869963113058
+db10ba2b-93d9-2c7b-e840-3dedeac32492,432028009,5320891802707569657
+53a4480a-62ba-30b7-7219-e658e6177afa,1246307922,4461553058151406988
+e84eda33-a844-5395-3e46-ac69a0892443,3014754936,5016972552777868259
+daf22003-07ed-0b31-fa0f-0532dd69b8b7,4012395660,1675577206930319484
+42c3bcb7-4f72-ba2f-fed9-eee9d4371174,471874332,12298532388387944330
+e3c650d0-20b6-9e7a-d72c-c15d14fe0a2d,3268107950,2603397398463810079
+e4cf2833-4842-54e9-4612-d4bd18812e39,3780932215,17137212314788825847
+0def260a-9992-df8a-212e-66437d18af08,758199587,1859475260656965535
+a14146d7-a85b-0aec-fe88-265fb072fac1,1837409722,13649710705586257896
+29c2292f-8b5c-40d8-961d-81c8cdc09d02,2747927119,15857011379838916297
+e6a73e26-562b-add9-7ccc-8c547ed61e0d,2941671389,7988982611819772728
+960151a4-9394-2494-f9c0-606d464ff966,159894493,14049031714984663750
+2416d329-ee32-d838-01f2-f0d9e1351f6a,1123421660,17693108130085372544
+ef085545-6dcf-1b30-1418-fd1ee7888760,1775506718,2686393266055513704
+aa042249-76a2-9948-25b0-5af706836fc3,4138464904,7341138323108835440
+0bac58d0-f11b-12ae-2cc4-019d0616b477,407276263,12438159663654738630
+9b840814-b7b4-b8b0-07ec-a7cb39abbfbc,1319113843,2539301433781827597
+57e0e82c-9854-9474-ff66-fb246f244f48,4144826694,6514387249751781307
+31a76a17-07f7-5452-8659-2bd7d8b8d562,4294468680,4650255372394096121
+34adc81a-1bf2-390c-e590-ef2851d81bbe,1884602893,4898067374519759660
+02c38e4e-cc6f-f306-5e76-99a1870599e4,2070557588,5630144217976552063
+0d529cef-0256-b3f8-ac2e-4f1e89f132ff,3414921145,1960067805257396053
+5e347847-61a9-c9bc-d0d1-093c83d370a6,3145362446,1473227462732596295
+c76742d9-bf29-366a-1267-ff3c74912cef,640514241,16891869298579709056
+11a1cb24-85e7-9487-0119-78e9e3be4ab7,3143366300,2299545974315889592
+af02e4e6-245e-3ff1-b8c5-2ec151fb580b,3950541034,2071082637977766952
+e2d4dd11-5f9a-9884-0134-d3fc44668b46,1779178026,4948298067193532755
+3f9825b7-74fa-6771-ddde-076da0656ec0,3047200775,12260038428866229107
+cfd58966-471b-ed76-bb92-2ebad1efbdce,4059819407,16895274686820980309
+d46fa1b0-83a1-81d6-3fd3-58e524936e3c,135914763,5124182179822018226
+623a0cb6-7ac4-7f11-1465-e83447cbc19d,1081155683,14956215073865650045
+177ebfff-3bbf-48ed-cd91-042cb08b8125,2144347057,17575629410288052071
+8cc831e9-fcc6-27f8-e642-0d5f496fd6a8,4116736907,11327557291329637107
+2942fc05-458e-639f-5ede-fc790be3c8de,1397785197,15762021402975615042
+b26bd031-8bac-d649-6061-d0e8ef3dfa24,3155438366,15376115630789784048
+152f0fac-03a7-9e31-a906-2f63708ef95c,2664660159,541093816057248921
+6e5a095f-779d-75b3-9895-bf94215e0374,1321277079,10110253355225673608
+63706982-8a65-dc7a-a669-76bccf0e2669,3256031191,17506664164686256774
+b4414817-56b3-87e4-2218-08cf053d8169,4281624331,4962713560591147375
+792043d7-aebc-2380-3701-f8cff0611232,1351639118,14912576668234876425
+661e4e5e-2310-4835-d68d-64af7102ca8a,1988865040,17969781676487267709
+ba5bc89b-fd5e-a64f-fdd2-15d91d522f8d,744800337,6280579730157799080
+eea2efec-d5d2-be1b-1bc4-af825452b6ef,3829560026,5627240299572553658
+b9d7af04-b647-77b2-dbf8-a40e45d75523,1883948287,5779212369333441792
+21e2a6fc-489d-df94-166d-17e5299d9bd4,3997028394,16093832631702000068
+6f7bd24f-590b-20b6-639c-4c98eb4a4acf,4059052922,548610770686538174
+319df1f4-65ed-6c4f-f43b-d0b7cde9dd82,1275964359,3584288755089147542
+e3fe91cf-ddbf-503b-2e23-1c54be96ed15,2222205328,17709968429621899020
+6d6bb49d-6138-eb21-b215-0270679705f6,2629802283,14335430711474241067
+159281e5-9f28-549f-e012-15712ac6e090,2205881251,4894831309624363426
+d70da959-4f96-0efe-9696-195b8736d349,3311033568,6858193851483616907
+efd652a0-9988-cf2a-1bf9-923196efe20a,2208968740,6770615373560565176
+c330138b-be34-719d-dd3e-5e10b8253105,3478131738,4251960767203923660
+ad613afb-3752-f0de-a99b-05e6173e1221,3054831703,1511830107668899604
+07b147da-e555-5541-95d7-369de6b016e9,1055917102,7240385715703015767
+c3075c84-33be-424b-9033-c00226cf6030,3816429259,960230935395631366
+74a862f8-943f-a2ff-4eb7-fd2b9df8342b,3521345512,14838990004279362260
+ffd3d707-f6fc-989c-b453-04e93f39fffa,1961331538,2039532432523477628
+639d2f46-1fba-f2b7-4fe5-2c16738d5399,183430766,14306904730520040056
+ad120bd3-7b41-7846-7ef3-e2e86fd2bab5,2007594469,5178218824351933999
+1bb75c2a-d6a2-c817-7138-093f10bc1759,3281240971,1316546250504999015
+a01c15c2-df4f-fae3-f222-9ff8c7ba73c1,309792754,11852474915298455934
+3b9dc3e0-827b-e99c-67b0-00ff630023d4,1676496323,17880286785188491443
+3956790a-3df6-9565-85c7-92a755655615,4226708803,9292421161280001629
+156450bf-2367-2317-99cc-1fd423ae1901,4290848573,82679764796787857
+499fac69-1cd3-3caf-eb98-705028399e64,1134741944,2111624551025844453
+cf95e9d3-a22d-8d35-34c9-810fe2e57fba,1266169108,4610013358868917871
+831212cb-24a6-fb49-d468-3a94bbad8633,3267739939,18255307791697691949
+2b0ac083-82f0-3b53-4fa5-19a2196b4fa3,3560547870,1456089467717599064
+eaddddf4-b846-5af1-437c-f65d6ae06504,659947252,1279146372948703561
+317bdc56-4e7c-11a8-7316-d0b1ec3c1747,1457581312,8102296150301015510
+10ee69f1-5c5e-b0e0-1386-530efba3c7e4,702848821,9760987755237571779
+0fd7ea79-26dc-bc9f-9544-5cc378fd09b4,77961324,7752022137695967730
+d5150140-4077-5c45-6a2a-38029f59228f,412596920,2673097496096650967
+158fd865-2f33-227b-ea79-63a6ef0bdb3f,1366895382,5459506490576500162
+f4cb5911-3402-155c-7872-bf5146c83be9,247012082,14641163124124590143
+13474981-e806-93bd-0a7a-97a24bc835ce,2653407219,8634759120892841250
+10c22f13-c1a7-d421-6f17-a1fc2dd503b3,349763883,8339739958752518870
+8f6f6788-915a-d99b-cb6b-157b245e7e3d,702628034,2806171596594053573
+0e344cea-98fc-283a-f806-4a129b50f4ae,2567510759,12402903687898337391
+35384f77-13eb-3028-7102-a302e930bf62,1611828564,18206238217161893844
+c4812a04-967c-c90c-4cf5-ca0e8ecfc1df,2579038204,6322797273252072073
+53c6924c-d05c-6abf-404c-1b0035d56345,4278060359,14787564416978970834
+d137b49e-b5b8-5e8d-2aa8-65e1f05e5547,3072284416,3460568235044931274
+81a9ab50-7f89-3c08-9130-2ca9325d49ff,3025794122,10265274775265439818
+843843bc-e2e3-e244-0ac6-2c794da24a50,2394435467,2902442739434638817
+6d3bb2cc-6798-422e-0f4c-94e7d6cc7e94,3156012939,2074322051432914478
+5150de0f-4227-8e25-8093-8680e3202fd4,2975785081,6671905739517463336
+24f0c1cc-8049-0128-d94a-71bbfa4ec2f8,1153289064,16301113974064677851
+c420eadd-2858-ac4d-0ca5-225314288c17,2878086047,16250506379985456701
+2b4e0c29-72e8-ccd7-0da0-8571b6c0cadd,3397444960,3182639835778443014
+2bee6824-c955-7e27-4669-53209f9603bd,2477945945,10014287659466237209
+c407627e-2ea2-dc06-d60b-8c0894d6a31a,2583491155,10614136675178631451
+effd1a52-d6ba-6a22-58d2-8b27452a034b,1518655961,5116320896504512538
+ad7be221-29bd-6c4d-1f37-155c833afa0b,423777725,18439349820657107385
+b81b1604-be31-5c26-e8a6-bc3a0dbeec9e,891577624,11457533059414078588
+07d95f8c-5241-7aa7-24e0-08bf7612d810,1300281602,5531222183055392574
+2f4ebebb-74ac-0e51-9269-c3ec1d7d69d1,1032144066,5281198479079533027
+d155c9ab-5782-f458-dd4e-fd646137ceac,1689997729,1054572565212721003
+3690bca2-cc16-d23c-302a-ff54b1e50f76,1855118317,7623611006720411804
+358ef1f2-5a1a-fccd-c9fa-48909faa649b,1207839099,12925149118498721355
+87563456-25db-3a19-0df3-203b85c2d01d,3112270807,9378209393372296663
+bd1b8d99-c69c-7ca6-9b9a-5109bd64a7af,4162336253,14447746325044269390
+2b7cfd63-4c29-2714-7e2e-c0b36fe38c53,2625146575,3883134661975959614
+9077295c-9982-7fcf-a624-f9e1b4d83834,1440061838,14523920883876043565
+417bab0a-ec62-74ad-75b8-8ba275f8a85b,2928675557,16138208381252857047
+e2ac55ae-fc21-5f1d-5193-213a65b7dc29,2327051602,5997355096186741836
+0bef119e-18b5-195c-fd06-240baf7c793d,1276499256,9168914670092974250
+1d8b57a9-5e24-17c1-b5a7-c127748ab411,3662695370,12666072724899622217
+6c2d3ac9-5580-1556-b767-e5a402ed1822,825675195,1187082108762742428
+7488e71c-b97c-e53d-cad3-07b15d82c32e,1058709943,15992882224420884262
+d996f3a4-6369-85e9-3e07-c97f0b7e557e,2457543313,11846014160055948605
+7919cf81-4191-f384-a9da-7b84458588d9,3935583490,13868245949578493695
+65ba3a74-7e96-9b2b-98e3-bdeee1b2e424,605643866,2408302788741245148
+723bc17a-2422-6ac5-1823-4c3dd1265a63,1306769471,14140622485661722149
+a41d97ba-d122-8290-3a94-889ac38ddd3a,1782066800,5294437060374522879
+d6768074-37cc-4691-8a68-eae1f59ea840,3368099121,2585644142843738900
+f56df6b1-32ae-7ec6-3e4a-64da8f0e524b,650923964,3657847548559979856
+3b781275-45e1-20ee-2ac3-4c5c3e5e30de,587317453,1901552278528347369
+dd5488e9-3ec5-ca07-dda6-861c46acd76d,1768932160,15459966961241293201
+fa2abc83-f396-3167-8965-2ad5b9aae27b,83339520,9777703299330717286
+fb5656e6-ca49-e5a1-c845-bc8754994abc,3216781111,9658509175154129556
+a28bb2e8-53fc-5d3f-e649-79009c456374,2017846833,14211603175688784334
+cf3182bb-df08-9bd3-b6a0-1099ab315482,2013762809,11249970274422227385
+2fbb35a6-6a52-9af2-1e20-6fd70a086a72,2446467778,3298420178488204536
+7106d000-7514-8f39-7a38-aea3cef057c3,3959107000,9145464789722505714
+7a8c46c9-20eb-2437-779f-4637c4729d46,3223406488,16205301414210957233
+cb674eeb-ba33-ad9e-c8eb-e8647ec126a6,3947378643,6628845901474229758
+264cdcb2-9249-213c-9e1e-1b7b50d97223,3069095841,2840598124749860143
+6259d043-44f8-6fee-f8e9-463acbbc527b,362392999,1684518449497331379
+65a45aa5-1969-da5a-7698-abdfb7015017,1312222899,7643653377909128069
+35660283-68df-ef13-1869-31fbd66bb474,1404911920,13744243947186997840
+95978d28-23a3-0df6-0d49-03202d14e4ba,3805173144,3218279165140063224
+bf3396cf-d889-57ab-e9eb-fd2e67a65267,1732646935,9583796821549589495
+6c6dcbbf-bed8-d144-d098-ea99cc8ba4fe,1884236543,12333360489509326551
+56fd1932-ba43-5e29-b0f1-9ad406323bc8,3792752006,14316944038621808558
+7d333877-cd58-3c16-2fae-12c76f7ab260,3519969557,16714279588188711290
+3bd4347c-6063-5b20-902d-c181e9b1da9d,1231014096,17602001554811728433
+988adaa8-6ea3-296e-1159-1d579bd5503f,3696869015,15636912469751056055
+f727c976-45f3-91de-be43-351d757a962f,2500428490,209706828903145002
+7c4e44ad-2daa-deca-d40a-0a064abaff73,3199119413,5067774231044030001
+22fe3109-c2f7-f4a0-8b53-2ade2180b632,827730800,4482748294012305359
+fe9ed155-ea52-7024-9cc7-26400e70fb50,264859886,17602691828395371339
+78cdcd21-42fa-a8f7-741a-547467d29d9b,1114910291,16540482501863842265
+b98224d0-faa1-24c9-4b99-c510efd02fec,2289693959,12820782902382467342
+d9559be9-edae-2068-9aa2-828f9aafec05,3123820816,13426477447456596801
+3e2d53bb-c758-84ca-9a95-69a8d751bd5f,3644978677,3983969477627369189
+91b913aa-07f9-cd1b-9e88-136fade307df,3069336396,10169899431396781401
+497a04cf-22b4-fb17-0a92-1b00e2b4dc87,779502016,17650574405409699452
+9ce0c971-b636-12d4-42bb-371666fb4990,844510552,5510472259655247321
+6aa5c53f-42ed-226b-deae-7bcca3e86b23,1330670673,17291308248583985002
+15404935-dad7-4c4c-54cd-0f7b96ea73a5,1857146896,13496085156285131656
+b8f08059-8d2e-87f2-4074-ec0352045c4c,2258959100,455351560570854254
+10c23c3a-5726-bfb1-ea33-d98ff3274594,1001206570,313684130740997002
+d855c724-57b3-d366-9753-34d0a3391530,805716300,10262969057895993274
+a1116f80-5ed8-6b96-db0c-5cd3cb89c8a2,4155086935,7936610818033705006
+dd5b6346-566b-754d-63f2-9ef87ce46609,3789701760,14352341392333891690
+096d8251-31ab-5c2a-3bfd-323df6c1a272,4001036847,6019801876503061424
+405d6f59-7170-c56f-7979-8b40eddcda1e,2671778147,10189395601793526669
+22f4bfe5-3560-0b29-e411-504846cc1e71,2913807592,373171007692573014
+1f53fca1-f0a6-d16f-a485-d52a2ea34660,2280759425,8921282065943729776
+a3146532-496e-25b9-f874-0bc23c1a05cd,3484654894,8367635331675476063
+c84b220b-62aa-6e3b-c9c3-0d169458c500,556394772,9763771982801185947
+39cf46ea-ec31-f49c-f1e5-ae0878ea88f6,896294261,15534084497764643531
+4bbfca31-41d1-d407-e3fb-e6ee1d85c40e,609201223,15336299438550270287
+3ae46bf1-731a-c7ba-da45-fe390dbe1e4e,776756097,3047465980028987778
+ae35bc31-d70c-32f2-9852-6f13467b71bc,410558477,9655396800502181584
+08d5f674-b62d-56b9-18f8-cfcf2309c74f,3904685318,2849075319370531597
+f46673ad-c610-8bf4-4854-47af819f8cb3,686676547,12914662103683501701
+f5ca4164-9c83-5d34-dbc4-456aff432ef1,3360754990,12458533565445172143
+457220a0-5ab1-46f8-7a99-e8c6d08ec719,1223751830,6700028301032430033
+6fcf5ca4-4c0b-fc40-b5c7-69b471da0ab4,2232684077,16702616934938414374
+6598e79e-2ece-8e2e-e012-8cd4039b29ee,3794511843,14744729213035494329
+72ca19e8-e423-1e4c-dd0d-48d2edfe9598,4228260759,8648141318937029957
+408a01a3-f087-f938-7202-c574ca4de7bf,1287173444,6839783414677955942
+e5dc5b9c-b036-5b40-3607-211057016436,3236641356,11297793069726466350
+455f3cfd-e8f3-da65-6c3a-e9c9bdf22a37,2048434402,558277213644295958
+1f43a921-1b3d-a9b6-7f04-3875d7c6ced6,2139172821,8464544664204044893
+e3a17133-3cde-bbc6-853d-be835f033d67,3491813247,16290535748500564769
+9522286c-0b87-4c32-b7fe-965758a2ee9e,891420112,973784193985588527
+0ccda11a-0e9c-e2be-9ec6-75c69ae464d3,1142714014,1846847498814427648
+3034f497-0bd3-787c-e30c-f2d37e52106e,823114656,1809637576108305446
+f751d598-6a54-025c-ea94-1ded15ffcdbe,1965019423,10556679044758490106
+b66dc57d-088e-6ce1-19dd-7774f27b6d89,2251465789,4965705493626279896
+968e98a9-9dec-61b4-63d0-0b34cfbeedf0,1276410982,2092630985196083756
+e9914c9f-b934-a96a-8d97-a15c77db6d43,3582419360,7660950390177957365
+9b562d58-3b09-c880-b028-573913cdbf89,4043476899,7199833950119476999
+e741e994-53c7-551c-aee0-922cc862c245,4064625302,11288300774712711547
+8cdb210f-4735-442a-9853-2f57facc499c,1745978733,5785336434891578466
+aab97290-41d5-cdbd-ea57-664e3aa18f8d,4266733003,2753757883670288584
+84365750-df57-0675-83f5-6680b8f572f6,1585779729,79158952580715249
+7fe81a5a-5369-b409-3042-e1b063da98c1,471224208,8972952781075744266
+a9c60826-5bd1-c6fe-9ada-03bab78e4038,3278708898,5683587336768779606
+6696832b-b1c3-0488-683a-96a2db5d94a4,3757835830,3777462224422039933
+39b1e301-e869-901a-dcc4-013255b9140d,3620304134,1134227417881846148
+15b73d09-bd2e-398b-d6ed-d7dc7964a904,690271128,16222137837024766920
+2bb9af73-d44e-f64d-26ee-fe86f39ca2ba,174415007,17747738609139119646
+533305a5-1448-aaed-79ff-6f41e1e1ba6f,3444186962,12599523076598648143
+ad3f44a1-9528-be02-b417-d20795d07357,695775712,11259572807914119700
+9aeac931-8113-1f9e-df38-a98143ade248,3103904543,15526492456064745417
+80db254a-b7a1-e00f-70d4-18d77f736457,144071773,1928091020600946174
+b8e8d438-4c5f-25b5-18ed-6ba65fc9a23d,3944387458,886663990729103350
+a170a814-33d6-99cc-f976-7dad30db71e5,2774582171,7286800781085238826
+5896e15c-118e-c06c-0447-df1ea411ed40,796536638,13172210191923502781
+0c4dbf2e-11e4-ab26-91d0-8102feffebcc,3987288047,15863470514630479554
+a90ad534-df58-6935-b658-2eac89dd18c7,1768958572,8629194748592513600
+fc4a279c-7f6f-b7e0-634a-ce5f43618827,549500494,16297480545074285764
+37a0d3de-8e0e-9b6c-62e5-6b4dd66a5579,1054937742,13580025751039407492
+c1f21ebc-78f3-a0f4-7339-10f2a7b90d84,742063161,543815252026684217
+84ec4d1b-72f4-a1c4-bf1c-9f81acae244d,3913991888,15433989971624671155
+f4b5bee4-8ae3-0247-25a7-dbf2b80156f1,1028466789,12861618704435025909
+2942aa34-01d0-10f7-5f1c-45b30fb5bda0,2658219491,4639054445296832130
+8b7ca998-b4d7-bbc4-ef24-18d0cf4d1272,851545147,13942493182290271612
+21758b28-62d2-1e7f-c8b1-4d26989c4efa,2726882290,2501877391956957196
+d66c1fa2-a9cf-6d24-cf66-6d385dd7d14b,3165368399,274952210270681698
+1e548e1a-d49f-fa1b-4867-ecd41e1e2932,2133151151,8620062485541587027
+f5c5f8ea-2b77-c640-89a6-4b401d09b656,2777106884,17073248018877814124
+36110371-ee4b-bbca-2c88-05ecb30ae9cb,1809138269,4403033158408655572
+266a0a4f-016f-03a6-c56b-13f77c5d7f62,3721420455,11725730084396070741
+f049a924-63b4-62aa-5e71-a1eb1d28cec1,3123976398,15456721612476428331
+55cea590-b4b7-6916-d375-93f90a9e5caa,2572033784,3575346225475213786
+5772637f-c5ce-cfcf-4d9f-5150efde643d,3510512786,18121768171359250895
+69a2e87a-f68b-3ff7-d381-57f24ec3e129,1596296789,8927454036100657034
+17361263-b5f8-2bcd-1f3e-3abd6debb55c,1316491306,14552710348274436724
+2ccb3f83-8e01-1d3b-587c-c77a04a26a98,1118600816,8621340372585208376
+ba42b715-2a62-de12-440b-d7c5e8b696c0,1285961310,18261994340734454151
+7a0b0314-7725-22f0-3fb6-7907e01eae72,3810509134,13552631598052182656
+4c101b41-9556-a225-ba2d-47bf9a7710de,2312328840,13848238123603465700
+2dcb88d1-cbf9-adad-2cf5-fec40e0d4e11,3851463755,6289933941385019327
+8a8f3261-fb42-98e0-43cc-c8c9e35fa295,2487739855,2154508635336426490
+65af90fb-b2ec-223d-2e6b-0f175770c1ea,1328916506,17350252776463804121
+463254db-df1c-f3fd-d5e9-aa591d911558,2810053346,8969881855787716292
+41509a44-16e4-6aeb-f842-8a469220884a,2359681667,16575964621974619412
+8d9f9825-a739-b207-2d14-822f77a07636,4155837628,5572589105528428536
+596759e0-ff67-78bf-00eb-38545869bdec,3404993099,8266291729028445165
+1cd51ee9-57d4-7906-6080-f42755c05179,2067811423,12929711201699067076
+5d1adbdc-bf63-35a0-f775-369e31527dfb,2356243201,1553468268665548988
+35102f25-ff57-9dec-f4b3-064c21ab616f,1334598175,1268710679026565945
+60ccaef0-7982-a57d-a262-10a9a6e2da9f,4233193872,6002110629050174035
+b3a7cd75-42bd-778d-5cf7-3827be2958e3,711414346,2675817607372878936
+6c49ffa6-d746-92b9-47b0-f9c021d90a54,2547563948,1358882875731270558
+42affa18-6106-2198-07ed-fc41dbfd4b31,3554792953,458143527207184041
+881e23c9-ded5-cd57-f4b3-750ee6405c8e,1527600831,15172228641572961941
+42fece25-e4e1-b12f-2f50-770c77788a6c,2332660141,1062011290581371805
+b3555cd0-89b6-0801-65aa-88c4ad769c9b,4265071450,17811037390253911731
+6958f292-219f-1f41-27f3-49a4d2ffd44c,2790562406,15336655115395570724
+4eb37ed7-a72f-196e-01a7-35bc443f7d48,1235568135,12621846062589928389
+552b4bf9-d936-2d2d-8154-c35cfc689d9d,882700331,15747963820076740624
+0a7f4a61-b782-8fd7-0c70-6213f34cf3d4,1560063048,13682836213657067291
+c8cac0fd-9993-e7a8-3536-9e3333e8f3c0,2476516735,9098180038712773063
+a8299f8f-ca13-e5f6-364a-a24e189c5135,3274343124,5495710736852502075
+0f3329f2-313e-63af-5892-869b88ae709f,1534943273,3670046439940554159
+31e1dfb9-b8f5-5e42-f2f4-31c6335b38d2,3832097349,10047368660242085270
+f8e26b8d-9da7-6969-8191-61166911f6d7,1955974917,2956713140383303662
+fcc93efd-f12a-8078-555b-494004c7492f,249505088,3250915741593798012
+9356701d-b726-c95a-69cd-b134c3c97359,332965731,5209717883203232739
+ba42c2df-4118-cc07-39b2-e4b4534396cf,2683847459,14304896338190783001
+6b4c3d50-5e92-a2bd-0f79-ce12e4d743ab,3139340549,14196374278498947030
+602aa173-351c-f216-3e0e-1e49cfd83d78,188248558,500381768397740183
+bbfc9af0-84ba-b3af-4ec2-b621ae558e04,3622764691,9579076816446060698
+78f571d7-0bfb-19f9-bbf8-2b5b404d130d,3317660464,2452065802535765478
+50c2503a-1043-1368-a089-55fadcf88a22,1027021348,2929116317871713356
+f9bcb25b-a088-af4d-a994-013329f355e0,381143577,17454612862826584377
+455f44eb-191d-3360-78fe-6bf410685e29,897328038,12308239826625622492
+e4fa2a5a-eaec-cb08-96a8-377f236d9732,1510525087,13092698576745351223
+06eed870-6c45-f415-d430-0f0d8a5e90a4,1731812463,16747621846121050342
+5219773c-6f45-dc90-bd20-e78b02444284,2742946138,2269488612387457088
+277b5f01-c494-5b8a-53e4-6a1e63ad5528,1081874490,14232080843924412366
+7a46e212-b180-26b0-1a94-bbebcf9e207e,12814602,3055459274040951596
+1cb99157-e839-9bb0-499d-f6bd24168234,2106879027,10837682304486828185
+56c1a3e7-0859-5c40-75df-9af466e39fd8,1594537500,17862040653289216461
+a01dee5a-944d-5942-e6a5-6400703daac3,3540501445,240020552669898687
+34dcad74-54f9-1b3a-6a2b-dc6d721f14a0,3669814346,2948083126441837451
+83ef0db8-2438-7d7c-9edd-bde20911da60,2062036207,9912499067595297790
+056b8aba-8220-40c9-860f-2db5bb53407d,3774051402,6160878294748555750
+e8c63130-0323-5d44-9eee-4f2a0e36a5d4,3944941777,7538396953403128490
+bbe7ecc0-a8b1-c81d-7156-0362dfd197c0,244668656,137141249612764192
+70e0d14a-f627-d01e-7987-1407bbc1d99d,2379447959,12179065168069472750
+ba48c40f-0a49-2ae8-0dbc-eaca99170b44,2015573229,13387127855468889392
+c3d0a596-b985-d643-c95b-36b91f02329c,2578450332,7397105660897630942
+42bd1d42-d311-3005-12ce-270d3afb7008,1676444646,16480632940223141726
+c5ee38af-f631-7432-3e58-ea7d2e147797,3542582821,15947151342409569108
+8122aaff-c492-84f9-da0c-e11cf2ad9088,692287667,17291779521898738089
+a62e1b7a-63e7-e22f-b9a8-94606f9c683d,3516207359,9240272244424865946
+942c0ac8-0071-0940-96ee-b7576781e6ee,2653251063,2226794906932671292
+ff810f4c-02e0-9968-3792-a96a80b74b1d,3483684368,7087262416840739725
+8773a011-3762-f31e-0a95-97eadd48b3de,620287525,475501852699912030
+29339bc8-394e-8b37-6ec8-1ffae824a0bb,1969137926,11851229645902144255
+f355cae2-8b56-fd83-2b9a-8587c35a98a8,3093461880,8962120820155752159
+1a6ceb87-9c09-bfbb-daa4-d851966f4f90,853590607,15087708452572495903
+8bdfb3ad-3d07-d819-0eac-8fe9e1341ca1,3669431101,11561579035102420075
+c8feb26e-bb4b-16aa-3a3f-23761913acfb,3164897891,9029614926743276679
+a05a31a4-e8e0-2cfe-e65f-ac1cf00e2838,1620786995,17355987121180487910
+d3de7bb8-f594-7c4b-77f3-3ae09cc55d9b,605717214,361691576457103710
+85b5ae8d-b33a-05d0-8da5-f1406fe576b5,281007086,13565956028298705722
+f6b14168-076e-9bbb-4d3d-519fae511176,1886117818,6633132156741624209
+23691b10-4773-768b-861e-47dee53d8b43,617122653,17276994723448060447
+24d596f8-fc58-a2d5-004c-00e58e01f7c3,2131961073,18122872975330957818
+3f7491ab-478e-949b-a4f1-36501e58cd15,3705125219,5092595651034047221
+3dfa2fc5-8c77-fbf8-67fc-f83751db1eba,1622376601,3874194044137136084
+c03e8745-52a0-4069-19a1-dec7a6756c59,2327646743,4064556846332010787
+5b6167a6-8b29-f728-3392-58fd7895569d,2586244234,7275638739656744308
+45e5da03-2f80-c5f6-58b5-30df39df6eae,595847651,6950974100716375395
+dc73d788-6711-e256-f89d-76cf080b303d,4147926978,2079279764199711923
+10d50540-06d8-5694-19be-e6e89bf1004f,3693496340,4819054297976415219
+b68e6156-eeaf-a5e3-1df4-c0d61521496c,3614604575,6050856573340066706
+109603eb-ffe8-e0f6-e111-74bb253b7ff7,1703564636,12822091891881101977
+cb48833c-96c2-36d6-8e28-bc57a4bb1edc,1685694741,16879881363716431595
+a9d06d0f-8e90-e02e-1531-73c453788a80,2103687458,6106821819963063004
+3ad82403-470b-3566-9381-08d29a50e52b,3019502416,16744272153393578639
+05b26376-7972-40e5-e08d-295d47957af9,3944074417,12426309113211084953
+d2d18dcb-0c72-9491-5e1a-1716878349c4,3305716519,13794853950172428607
+315a7637-b5ae-b327-6051-45736cc27a96,1447314944,1032199109632767129
+6677bde7-ae3b-292b-90a7-32ed914eff5d,877230351,4029628909109951417
+94fb284d-05d3-4408-e16a-8f7479a182c0,635952183,7321042187385726316
+4b216a18-c2e9-3213-edf4-04ba46e224e9,1727751903,16998522799644782386
+9298daaf-4b37-fb2d-67dd-b24d9118d832,2015975629,6785556950064951317
+9fe89967-2ee9-b21d-7e0c-86264f2db2cd,408462550,11636914398419397869
+b72dc451-b149-f287-9a7e-eda9ba8466a4,2730392869,782141917386574382
+333aedf3-305d-cac5-4239-ea4b8032aa21,2064805664,15666728529412758914
+0f2250c1-ae37-4994-f283-62f3043ae2d0,1462838654,14553973085986560746
+2f2d178b-9476-c5b1-3b9e-63c6728b0cf6,3299774761,7424919635210501056
+e95890f8-7125-585c-dbc6-1e9e6cf1c1e5,3308921481,11944672514776125631
+c5029dd5-8ad5-9037-5f29-21e294544798,4091730899,11754406924077132253
+83df23dc-499f-6e7e-9445-25b5268d7173,1530757948,15914044985493303349
+06e1ae86-795d-e330-ba32-165c889929f6,2547175588,1118705818735524275
+de246644-1da7-c415-1d30-7bbd8dfc6c67,2151077517,17467926566959422923
+15c245da-c305-5d13-ce34-fdfa7699a625,3810858395,14975542205528411459
+5371951f-832c-53de-704c-d277f0d3fbdf,3076640094,1527933293688395625
+f29d5817-a47b-3851-e81f-d3991da1c174,2168034244,264759057148883928
+da817678-ac07-258b-d72f-1495148c41de,2109914890,8021453135433818221
+4cff0ab4-64b5-d756-201a-fddc2848f238,3898204268,16765132354912729410
+35811c0a-7b3d-ac0c-c956-df696d172ae2,3606866291,3301318888326031418
+8e6fee45-4fd9-a108-2cb9-f392b9ec4660,2930926725,16659949220808196047
+d9756d0f-6141-60ea-1ec1-265c73f58f67,4076380413,15863576166484795542
+26291725-b00f-3a5d-f47b-4e00abbb6e84,4247844192,13234222734754360190
+887da4a6-7061-9587-a962-2cafad49bb1e,3026808034,3917126883606067390
+9e4cd2e6-bef2-dd27-d5ef-ded84c6ec690,3616145492,3534351324611507039
+00013060-ca2a-9b00-bab8-b1eaa2aaaa23,783616188,657493599156536273
+eda012e0-280a-d69f-7328-8938637bd684,25308293,2843146706133845981
+db957b0e-ac36-3e60-00c9-609ca90bb0f6,2365914394,10612956989655372447
+fa77b2e9-196a-3db4-43e3-aacd844d34dd,3377779299,7871523320584784012
+e77bd6b3-21bc-779b-b9b5-f1f100fe328e,3979925824,16312192535710662111
+b5a8b66c-7357-a37a-8ceb-e0ac80eaf286,3942425499,13222284263253661198
+0c65648d-4c6b-048b-65e8-db7621ca5be7,1734663322,14514147985767841144
+d127eb5b-1dea-44fa-3750-8acd3411671c,2971747396,5675895602597724868
+e91ccc89-b79a-7de6-37d7-d9612ae65702,847094974,9989097276179614585
+d99dd1b9-a058-a796-768d-72cc9e257b80,521232441,14557258357472650095
+1629e828-dd26-ac54-6b0b-940888dd9b93,3232205827,1098144842476662872
+e0d192ce-29af-2f81-e31b-a330e53d0d4e,1805292746,10484220124690384301
+847cc93d-2984-cd03-876d-2e13d2910d25,1350824744,5297576223058753245
+28d34349-05c1-878f-7437-44b01bd35890,1616541009,5787898816116340418
+15f1b9a2-d3ae-ddf4-323a-cfa6286a4ec4,1098782906,13980663953626665445
+d0aac6e7-f2c0-0815-6657-333739f62b13,37328791,15297571341180828937
+7e4bd102-a216-7762-07e8-465d8d27bae3,319107595,5213969760085869521
+ac04b9f4-810e-03d5-b9dc-24ad0c16912d,1544088415,176569233582554798
+94ac1f71-10e7-43b7-8468-67e77dc036bc,3935102370,10506711806606406608
+dfdf83fb-6ca3-e107-cd28-bf421701dd1d,4034132850,2133683284178774754
+4146edab-fc5a-d74d-3d09-f8d86a777c5a,628482000,15887320123181196446
+9704b0c0-2cb1-5851-5092-bb84f911e1b4,3630059112,4919339708817226892
+06b05d81-eb7c-a83e-1de0-e1fff7c55aa1,1724310113,9156837397893459021
+1a5bbc74-2c7f-ffa7-dcfb-4245776d79e2,3763004810,12519203831770584321
+f938d8cb-f2a1-88d3-bf1e-b496af2e895b,1953716589,6729002798973750628
+07fcb3e9-aca7-43c6-82ef-999d403870ed,2282155180,9658053036801827741
+bb5ff23f-f070-aa9f-ff2a-798814d88c9a,78573654,2373049907740652973
+3ab67c3c-b82c-3520-0f63-20d257b2f407,1374028564,4895760257361626504
+75340e8f-6c45-b149-6edf-dd69eb9cb001,2716083570,14215788844131731902
+16c94663-5178-8a1a-7907-265ae7bb43e1,1329018350,12973865315833458792
+c09452ca-74e5-cbae-ff7b-94e44dfc94cc,1706423524,7596556078121343611
+93b77243-c5e3-0fb5-ad18-7a2538f2755f,3852160673,17013494572723052649
+b3cd8082-058b-a362-22e7-10589575a958,3931218747,6102421442103040643
+91ce22e1-2016-fd74-2260-04257efc392b,287762313,11594676727801902075
+500c0348-3e93-c706-a593-db682f84c612,133484341,11482713451717556468
+eee9dd34-8338-3586-84a6-4df6c48a5a54,423754971,14291246697538944999
+fd2bbf49-2ee4-b72f-a998-caf4dfee8ecf,80822736,12885783529803005377
+eaaad439-d634-f4f6-50c0-3dbdddf8f39c,729890013,2462993159265857771
+210b626d-3698-e6fe-ae94-e7281066a3cd,1079931755,5221526925296939287
+3ba2bc48-e5c5-14dd-de08-4b5aab80b74f,1633574081,40815132815940329
+97a594db-19c2-782b-1d7f-a44705732b47,2230190382,14301761337848980779
+ae49d101-7324-2f4d-c3de-c10feb538873,579623384,13544739862280858803
+62f0a415-f639-3aeb-507f-afa0eb9f107f,1611166370,10612411521845428117
+90788638-e930-a1f3-5679-572109df50aa,4134979973,6026177095725770713
+fd843ffd-e4ea-4368-dccf-48bcaa0f1dbb,1070083863,12140498359178913315
+df977339-c443-acbc-ce2a-9bc4a770775a,3575838688,1774509941307994177
+62265d06-e64b-bf24-2db3-fce1307ad9f6,2507051894,6778581109718294912
+a327233d-c707-47a1-7a74-d05c1dd2daa3,4073917198,17149657415246203535
+d5cfd3d3-ae6f-d368-6520-86fce2f55f77,4114420732,8823657704011878992
+971bfdd1-a3db-eb09-1c4f-1d55926f821b,3678275856,9814114949122243854
+0f8012db-fee7-7d00-5418-de329bdf9843,3205810063,14793178762799389345
+f02b1195-a698-076c-35be-bf0d2ca3854d,2987676076,796526512498980800
+be041a2f-40d4-8711-851e-dce1c42caa7d,2442063530,7884897617139945714
+9d5d10f9-bc06-c630-957d-be0752630429,1735959755,3652468467309695487
+2e175376-aa63-b60d-f635-ac391e1e5f4d,1523790570,11502652613026933940
+a158c450-edee-dcdb-3ffc-a79b3d66cf50,3363900371,11418495811122808105
+8e7dd1cf-dd1b-34bc-1fc2-67eadafd548d,875331689,456739525866186684
+cc523754-3f85-53d1-5dd2-ec6854eb1f69,3874731173,4469841842009658067
+ef8e95a1-2b05-3354-6321-67a139867011,1403040041,10335399937632686422
+afa120e3-96bc-2ea7-ee5a-8bd16c258295,1300354040,12180273873533689719
+1a9884dc-bc2e-5047-9efd-0e13e891ac75,1004006980,3703166182981319142
+a5af2c32-d184-68a9-04c5-e931116615bf,4188333507,923868093204396745
+9a2909e0-cd3e-d90b-d520-91201c9d2930,2907783826,9645406288362083719
+15f5713e-11c0-e3cd-5c5b-d229313a6209,2767957425,15793104954571184763
+79d5813b-5aab-811d-1258-4b89201697dc,2570355249,16954959429556222323
+fc2cc3f2-e2b6-13dc-d7fe-078412e1c9d9,2761789077,9670366946522445988
+a17e9b9d-c855-d939-2034-b06e1fd82b89,3164580397,9232061761804969243
+5b5c8c9f-b763-e492-4dc1-dda48fadfcad,2723352194,17732711950873789096
+c4b8e7a4-fce7-ea4c-bf5c-33185736ce33,3570009605,17604873828996114817
+1fd73bf6-6cb8-f6be-df49-5b03fa0e5a91,1902000045,17585104932601498955
+5f0fdfa5-4807-2bef-ffcf-ea62375656f5,1489379137,16131268460882536240
+35a50964-578d-d108-4f0c-8898684ac027,105014234,7211352194515430952
+e2591d56-aaad-6e19-b778-e6b6e3b83080,2196338468,17129137011931283099
+b8fbe3e6-6224-30da-1d36-38b1379570fb,2854636016,12584973230168374696
+19e359cb-b9a1-df26-ddb5-f6b2fdc4cea6,1420475022,14830376950686231913
+353b96a9-26d6-2ea4-adb7-9156226478f3,379102055,13257061845083551675
+d6ec8cc9-d731-fd07-1f21-98d70fe9c87a,2224118277,5437725603863498781
+81b311a1-1658-d876-f7f7-aefca49a7203,724856286,5662154624800505355
+62d7d92c-9d76-d154-075d-2f096536b3b5,1160681357,7333197535080425775
+fd56a2a1-a7b9-dccd-998a-20274911d4f8,893111588,7750457190585959417
+1566172c-6dae-6006-0fe3-4ddbf30b1bc4,2758938693,16745654961356766472
+12891d41-72ac-8b38-8aa7-7681c99031cd,2231582584,9432813010980651891
+ea11f21d-b61d-6899-84c4-4f8f58471453,322325498,12088035229082843298
+332f8e6a-cc38-6acd-2f6b-e344cfa544d3,4173103048,71945954950428183
+8bf2864c-b11a-b74a-daf3-d493e990dfbc,2027584445,6258541284869095651
+1ddae73b-a7a6-734a-e692-8be109ab12a2,814380020,18191868523716405538
+13d1e9a9-f72c-4388-edcd-1bf76b0783c4,4273272402,11675864622860856852
+61c3a338-3b44-f7d4-7197-a33b7b6505d3,1728425512,6486913942305810943
+4ea11c29-8036-6bea-801b-938b3b9cdcd8,384320593,17556282870363694090
+7bbbfa2a-9673-7bdd-13a5-4e74a2a4993b,1681375983,14169839553529676686
+5c56cead-b312-39f0-6b0b-7d1f580af0c6,1426634564,10564968861757282408
+944b3398-9b16-f695-72e7-020154456f9d,1038356041,12522218006138503018
+99ac1939-af61-1c9e-d190-c5ade6161215,2513689669,7843851682942334180
+8d2ee873-f87b-d44a-15f6-5850a9223471,3673380193,2319318357828624038
+7ac35bf5-f0d2-3833-543e-e4059984b427,730877856,11653036682536531405
+7aaf46d7-e86f-6f14-a5ba-6e22062c1af7,2161182423,10513368381358988878
+8379b97e-f214-5413-3ee4-531dd1d3ffe1,948373019,13115779606104489503
+02452405-c3ac-c3f5-1948-3d184fa4a2e6,3575313834,14955358693406085544
+5f710167-43ed-fe2e-fe41-db8d08357e34,4122943102,9562378368788196578
+cd4daffc-e30e-053c-c3c1-de875742cf47,1487182113,3033200404608636308
+e7723bff-fda8-d423-e3d2-3a9d0837277a,2157518363,9138227779698005099
+3119dd98-85e4-fe0a-da39-bdc9b399ef1f,2261262096,4305340677445511069
+e1294e27-6f56-2010-e06f-bad00199d20e,2936182120,14638138839059555063
+55a9bd78-80f8-ecda-dd19-bb69f8245d01,1463499813,15299993044196399345
+7f081776-3b40-a2fc-0437-2a6b098792d9,2719922002,11135968377505236055
+82850fb8-33ba-40c3-54cd-4407d863c4fb,1004139318,11616558090087813256
+d8c00b6c-3969-2271-7c49-a59a08665320,1091916762,6154323253452604373
+c94e6d94-70c9-0523-b428-6cc5a9141496,3540729679,3991902670108024527
+afaef7a1-607b-ec49-a2cc-60714ab85c37,2971571151,3920408780143022235
+ea99c9a8-74da-6dcc-fd57-5207cd490a7a,4100720051,7942788994322194714
+1986539b-ff1c-196f-6eb3-464143afeeb3,1088704689,13141427117718911217
+dbc92f83-5013-fdb3-aab7-4dcbf71d599c,1724350446,15605451980160720495
+782d07b9-fe0a-33a7-547a-7630dc6c7f88,4040948172,13830384578351952011
+58363414-901a-b12d-6f79-69dc2ce8c5a1,2321316675,18080264351755821868
+8dd82bb4-438d-bca5-1eee-3146a4d12bae,980528811,326948528632059020
+b1f66810-ffdc-d861-df88-aee1c887d179,391693909,18407027243527102833
+33e011ed-e586-b643-9bcf-28391961ae38,1649164887,10749227991399299834
+7fd42481-3f79-60c3-e782-8b40563751c4,2402884639,7330210056303026197
+a78ee30d-1f59-55a1-4784-89348a32a8d0,235057344,10259607268958394731
+5f828088-e0e1-c131-8a2b-da5828916493,1058180805,11943906603530023700
+8b9eb022-7f96-0d58-5216-b10e21fb911b,3491274068,12276603576767035497
+420bd0d8-3e51-72b2-c453-56331cb7b530,862810313,9750285803650580915
+faec2252-af32-0b4f-f56b-36022d3c3202,864505286,6094177651964035861
+40cb8087-909b-1f14-08d0-562029f81284,1724110462,10512308404702593157
+1ce55a7d-71ff-3dd0-ff6a-ee2697158b6b,830378553,4307416229429003811
+59de8644-43a1-8fb3-e8b2-f17ad7212626,1119123070,12202551809040540800
+788cf0fc-d76a-e69b-48ff-d2e56fd141a1,1042517179,15676285462883662474
+c3e042e9-dcff-8e0f-b9ab-5000cc727302,4076159327,15109977402791423500
+880aabb9-e5d4-cb7c-4371-472351732107,2721385370,1005344072546017459
+aa7b144f-34ef-8113-d3cb-5c3a368f649f,2916444812,3913600395625938405
+f1c4b29a-1046-b198-87c4-08e07e3ca35d,2325188729,2412214915517637809
+3076d944-e024-d0c1-cd24-e4a634c0efb3,214450477,10686213418779022391
+c48dcfcc-070c-3dc5-6808-deb61ddc8d2c,1863186813,6868177398712347673
+2ba80cfa-23e9-4fb9-9813-092f0d091540,2234283809,2660597091048758964
+ed5de844-d0c1-c4ce-8527-8c784237d498,2559785447,9858083487739665198
+f6ac1974-49af-fc95-1aca-699c897175ac,471624675,1026531011018122613
+ac72dd59-4760-29a0-d748-23128c03407f,1258197196,15352255810928852526
+5bab1b5a-addb-1dbf-8f71-bd88e0561a9b,1913502072,2583698147517473805
+b43fd34f-0b67-c46d-6227-aed39524d723,1367849452,4091860386501177152
+d78be622-2938-1e55-d9e8-f2aec7610a47,1640623690,11229238283186079445
+646af6d0-9686-f921-628a-f20164292de6,3883107744,9976459549912507307
+831ace81-8cb3-b743-e302-1bcafb2aa03f,514195587,1710310334066636255
+61799088-4791-be48-3bf0-e2543e952bcc,573817884,17031886151698688859
+51579af1-8b07-1943-6707-1c7d93fe85ee,1929013588,6743354471350541440
+63dc26a1-4369-1344-2b7d-e77a80d28a1f,936458056,1104087285251983332
+1fcefb87-2a33-a529-8fbf-6d9f79442bf2,2624819810,17614765913008374689
+57b63d97-1e9a-6a5f-6fe3-ac912c393c57,2590144648,10997207347772367395
+a7093f4d-d3b6-ef1d-a13f-357ab03a4194,1720534975,15350798289746543506
+0c351cf9-fe9b-900d-9a3f-802531d842d6,975779824,17354239015431236522
+56aef238-b21f-d0ae-e999-8b3c1b949ea3,1661339065,7612939508375029480
+d68c1a1b-75c6-4b25-e8ff-a797a9341ea1,4191021962,8473898396729839127
+ae9aad63-5f15-64db-ae67-f2777ea19ac1,2594050099,16486160595464642014
+0d0c7363-654b-520c-ec05-0355cf0e68b8,3394161151,11873897469579931580
+64f64550-0914-0e60-fc4e-539d185ad35d,2509182033,17831969379150055024
+39b29b92-97ad-dede-26c4-9590c2354241,2632613463,12438497541103720061
+ccb62037-4fbf-53a0-00c8-bfd83e8bbc8b,2654916094,889409800689836049
+37632dad-c022-260b-1bc4-0eb2646b4399,2274205608,11448025027872931113
+a3f5afd1-72d6-07b2-0c11-4ab02e812200,1338516896,115355708934277925
+6e4e3fca-5cf6-be90-4486-86bf671d7bf3,3206812091,3544606573339483965
+eb7d7e60-bcd8-12bf-ad91-47bebfc44a3f,2997750835,7208537688644653406
+53b6049f-97b5-4c10-1419-1b61b5a602d4,2329684804,4286219820262137039
+0d7590ba-0379-40b8-4b9e-bde892f4adce,2236473682,17108849944349870045
+073e8da3-cb81-8379-a43d-1a6d300fe435,1103555412,13579982197844974973
+5db6fa39-bf0e-0a65-fb33-7e031cecf428,3237528874,5335256249140489136
+5007c889-845a-f98e-5324-8501aa3661ea,476699571,17639465458918652392
+ca53c9ae-8f84-7cdd-5f12-2dbccd7a88d7,4057109412,8290880941659182643
+884fb745-93e1-c830-f35a-260597ec7d6d,3327260257,7457146031718477017
+3c286d88-2109-9e91-3325-87949f333192,3501874980,4412233860306542056
+9b18a3e1-974d-b19f-3434-89b0767d1397,1315355630,15886066971027040194
+71a2d3a9-d016-7695-dbb6-82b3696ca574,2903405953,11880388890947521605
+03fbd3c2-1e6d-bebd-7d1a-6fcb911e0eeb,100438777,3118640908668703873
+ac851fb2-546b-f770-4d38-841f780c2696,3677910020,15361260539219418078
+012d2125-3e57-2b27-ed3c-976b56a9d1df,208549971,3372915360147286334
+8dae1ac1-6c9d-0b78-871e-9548128e4dd7,130310891,3517413602316627054
+e7e4b745-eb4e-18bc-08f1-de22a8960293,3805456949,6760485429149436728
+ef0b4188-c80c-b910-8e6d-04b7737c405f,3708126177,2921036405407401621
+22838d1b-003b-63e2-a7d2-f18fac1fc013,4274840857,2964044422100620964
+4a4e12bc-13e0-ce9f-000c-86d6d2d59cd0,3847311979,14433853143107343291
+b9f37311-0dab-b772-4c8a-9210172fe087,3254656715,18424743161704995713
+39ea109b-b310-daee-80a2-f909d4b78eb6,4111165300,13035302091844995636
+27f2e374-460d-9fc8-d6e8-3b5f9b138ea4,3310543610,4229378225802273158
+4151d76d-ce14-6203-7f73-fbc91c6e91bb,2619290161,16556812560136423368
+a94c2a2a-48a2-7958-146a-31f1c5fd5c4c,1876471703,1205598290866597583
+3ad11b85-96e9-a08b-2bf9-a513b2476155,3398788570,3277044197570343570
+6309313a-bd63-c2ca-94c7-132d4dc10cb5,1361767109,14271998004801679108
+97c71e74-52ad-c876-224d-996226df0edf,2395986045,4319998172725465334
+ee74559e-b199-6cdc-bf79-bd2bdeade526,153372707,8557531986269304658
+65a501cb-78a5-cf04-7677-1dc6371deebc,3677389652,10797666214013795837
+80ba87cc-8217-0801-fc43-5de0132a9397,260426579,17571569958081641151
+62b64d3f-1524-2a50-fce2-864c8cfade63,2861977346,2940205680051516689
+1bd0adc2-d57e-b230-0f8d-ae48290fcaca,4021296073,15481800873098192824
+d056ece4-1189-c66e-3290-06bb2ea3c68a,854303393,3510444242488603185
+ba82d44b-994c-a3b5-cbaa-adfa6e8012ee,3921358221,17481641599876879664
+003daefa-e344-3b78-9170-649e76d750e3,1688194835,7583279688288276827
+dfeb0ed1-fbfc-3c8d-2146-72a673c6e1a3,2353321860,17329933686288471581
+f13503a3-787b-c21e-24f4-edd77d651c9b,3641766928,10557011577035679890
+cbde116c-dc0c-6b51-2531-509b66138683,4087911417,15253878432103227668
+aa6b851e-e6da-7105-bb38-5731f060ff83,3872971766,14985508294718453868
+cf3c3551-169f-29b5-99b2-59a19dd90383,3430468102,4581678279000149643
+244529ae-e204-3892-7b6c-3eaf03bf0c84,1568601245,8994494908813130777
+cdc51bf8-b563-75ab-404a-22b0c4bc89ae,2751994368,13110096726510832266
+037d38a1-5791-3eac-cadb-868baadf36fb,3825449221,1321389915550357289
+be1dd046-c98e-69ee-05ba-1e2110250bce,2307891947,12553313744057687386
+50b7ff16-5c2e-945d-acc2-68b478b9338a,3059316253,9212107535782065215
+10cb0cc9-fe69-b029-35e2-c98a7fb86b59,306355741,10068931321671248114
+d27daf97-c6ce-e2c8-d41f-2195c388f19f,2049234530,12017421936192192349
+3020f057-66ce-71c4-5a19-be486b5bef00,961410568,15519335737724804000
+0051e643-0239-1fa7-bfb6-585770cba66f,3866402704,12732238989758878842
+1d2b58a9-3032-eab3-f8ae-6ec770db8154,1717184382,17289583278813496770
+0bf9b135-cf1a-689d-7fd8-f637befd5cae,2984775213,16529794765807669699
+b0cb3d76-6082-539a-e9ae-fb685d2deff6,1557871180,13599728386583723327
+0d546862-5e5f-e7ab-2b83-6d45a45736a1,183409398,11732565218223945965
+663b29bd-0a11-740e-ccc4-76b4da834f85,2897308098,4877695417291817089
+56af65c6-3e1e-0778-27d2-a0919bfe3bb9,2391159990,4062126322080421502
+a8786867-6a9d-2fbf-7602-a5c50bbb5910,4186001466,6909977634480693626
+eee682a8-8188-c770-d150-78e51be6fe3a,2850512052,7957227346129299518
+4a0a9210-bb9d-6e10-f7aa-907adb016671,3741258755,10249892692272984558
+d15e31ab-f342-3db0-c797-21b34b89227d,1185584005,16232902222018923204
+0aa8ebdf-5ffc-7023-f59f-ee9be4008ab8,257578361,13010466424234834548
+ca429c3d-1ea7-1aa0-998f-59a3cc2c26c4,2994157940,14499875788597595686
+c0de080b-46c1-1480-0d4f-1ffd044962a2,653765230,17031379423701635734
+e30ea6d3-7d42-3aec-5d7d-d058b7317b63,576240397,123847677925719006
+d55324ef-da27-a4b7-545f-3ada94d76ec0,690084893,2570112660503124463
+1dc64a0d-03e7-b854-bf42-b3835370df4c,3063700488,10702853022547313694
+957aac1a-aa19-debd-5d93-51205658c1cc,1245624176,3609429753784878035
+78cff614-97d0-28e5-2d5a-a370f235a00e,3790474296,6318354668612318068
+c6d54209-a2f2-d6c0-2773-ff1d4ccb0467,3737053779,17913806609039150321
+f1bbf516-8e39-fe03-45f0-acd5be6e1654,3493852502,12981828052898381697
+fdff992c-f867-288b-aa04-010ea622ea4b,2196922512,5536694554972958921
+23387172-d0b6-501f-8e4e-180554aba112,816876928,2828766473991139905
+f7a7eda7-f4da-cb89-a16c-45529443364b,3080484032,7976107398572306680
+b5f95ed7-9260-c255-3875-26465f157b07,2275654315,6020831178279128119
+90e97f0f-23eb-df63-cdd1-bac0210d8bc4,2996822820,1892742854108944149
+ea4f661e-9eee-8a63-0ae2-6ef92ee95481,3099305666,6280056414010019596
+ffdb163e-ff94-a609-8420-1ef36c1ac2f5,575279037,9828810035864245932
+0af1f5f0-9052-6274-f731-29f9c049ee01,2593327832,12752715862841870397
+c65703f0-e397-5f5d-ec62-b1bf619c0b0d,2025795463,9258706436923574675
+9a1f1afa-bb2a-34e0-8365-80771e98c565,2408009809,32966370483328384
+0cd44969-a0e1-0c41-4d8a-3aef4ee87418,3963208260,12190598867595171693
+b627b554-e14d-bd04-e33c-2078053fcf37,1324140484,14078872893218169821
+cf60264b-7cda-e0a8-71d0-aa66b0fe9add,1620327231,14151620753976911558
+41da3b9f-5ae4-6987-d1a9-c1e49320416b,3084850342,18237520284551762159
+c5c2a8dc-b7d1-14e6-3978-4c16d9602bf7,710094036,13565722649289114566
+9eb7350f-e383-00d5-060c-afb1f826e452,2217920092,9139443524170046379
+94730682-a1ec-1593-6241-0f69bd5695bf,1523622631,18250780504920655001
+63b3d751-30f4-d4d1-80cf-6c01dc77c1dd,2089790099,10548617770243843205
+d4b78d4c-3c0b-cc46-2e01-407dc4fb81ab,562009964,12811440657257558486
+beb0ff2a-bfde-a4f8-f347-3a05b970fb6d,4051040260,13210787790011299112
+50d50ebf-cdee-7fe0-ec98-7324f86deea4,2119746742,10932832589686127418
+e2b19b90-f488-bd4b-f6a1-1d015b8840ca,3256606817,3799596609523799603
+b905e695-5dc5-4be5-a7b9-7c0256ef7660,1978996295,14166686977599629163
+2d83363c-8b85-5a23-5537-e00c5d87d696,2343716867,12279455017572127822
+fd40782e-47d7-fabc-f624-b7273f624983,2506582175,17578314818609539702
+047ed77e-dd44-a144-d8ed-84f256d94257,3125338486,4405201008449675122
+544929cd-421d-9a31-3c9d-3396521a5f38,3745160332,14338602057393416157
+b83496c3-371a-62ac-75bb-d5959ff77ee8,1614895638,13304245958530677050
+7839c1a8-fce5-a1c9-cfe8-27971119cd0d,2417951380,14092981761671115354
+423c7814-17ad-a3f2-fb70-01a69075524d,1900039332,14531742045394298400
+7995112d-d44a-41ed-0c15-5d2d5bcd8fe3,4020123202,11026755166995851321
+5b56e4d6-1d95-ea13-f82e-11e401e23eb3,855605133,10735681957092711893
+92d75b35-e51d-1830-1ab3-a2d4ec74ea6c,2990528680,1873222403626092954
+55550ce6-730e-0e5c-9f43-d7126a12a04b,3972345217,15913115451696359605
+ce36c177-ec46-bf14-30a8-9ffcb238571a,580694526,5629139391015810415
+5ac64ebd-783f-c028-d1c5-54bb35dca1be,3794782068,1200626530479771720
+3e257dbf-1602-b4de-a61a-9043e0b842fb,1606272797,16062883270576258938
+e243b117-b86c-8cb4-5c9c-071992f85314,3073591116,1065486531148153473
+660703e1-6ce9-ff7b-75b4-6800a3d96a1b,186425008,9115372295410543061
+927260ea-dac5-6bb5-eacd-ac287592fa15,681376898,6993042671319294165
+7cb22da1-de03-189e-c2ec-017fb9f55ea9,1901274283,16671561030366571904
+3e1db0b1-1820-fe70-69cd-006af000e98e,3432154790,17791894416113140478
+7a7c4875-3b5a-db93-5b7e-28b3743779c0,1194547716,8420399308794282510
+5babf101-baca-41d5-18bf-853a8c734261,417068580,1063662677129236846
+7bcd3b0a-8520-5218-ef0d-93059cdcbca1,2287246958,13833557378408137830
+76a1fc64-4fc5-789c-dced-59e720c52573,667413976,9167969226796894789
+92521ea5-8539-503f-dcdb-2f56d03217d4,4226133015,2591916799571064551
+6e0214d7-6549-d8ef-5496-18ec2a098e0c,3140613454,5874767064359572137
+b46a85fe-4f20-0a63-6344-db7515b3d6ea,1542475714,2239156726434911696
+5db60894-3619-635f-7734-3454646a3524,3062271824,17729163548764046383
+f8de8514-364e-e1c6-8b79-11945217b05a,495228356,12374233168053197582
+f6dbe481-0c99-a485-4d23-2b8d8f57ca46,531646693,7454378290108663780
+8b35867e-9b22-a994-74b0-2dbdf02a76b0,3583204354,8774101507545888296
+50e57ebc-859d-e674-d145-377e3d3750ab,2277897990,8015600799288411786
+7a4eb246-e012-7d85-0784-c335ea24f9d0,4061644634,1587290501350961911
+62aadc6b-7cbd-e51b-c62f-02b85615333a,2279223841,3128422042471515214
+eed9ae5d-447a-d731-b8f3-1004c56ae925,587902492,6540932999897344210
+3a2f16ab-d4b5-327a-3d9f-621cd6d7186e,681061613,6116606096612492860
+20afee59-f083-4132-87f6-fdab68282e89,4050466375,2020803285430533605
+cc79b6db-5ded-c15d-cfd5-e56f1209c7f1,14109959,381220269629771162
+7d711596-0d31-a7d0-726c-7b066e46df8e,3496262942,3622451239614730355
+163e6c8e-cdf9-d654-9e97-268e6e6e2686,3761498337,291518532008167245
+001d8e79-c77c-f993-d606-9bd026390e1d,4167130529,16868938080042706570
+b187c4ba-02cd-51d4-4137-05ab29758516,3854019323,6044594549482814597
+07232a77-9145-3a77-37e9-e8b9fad9930f,862158943,4546168270392487775
+3fd2bc9a-ed90-2c1f-a978-4b02671faace,1013699090,17173011121254558091
+8d5b68ee-1f95-c722-f775-f69f58102d5e,909296585,4118675262967207460
+efd6479a-1868-e654-b91d-2456af15a99a,3718124959,2296318755031459116
+4b072b1c-acf9-6cae-7538-f5f58923aad8,2907260902,13732049289707647725
+2f3406bd-45a2-b335-5b6f-951afa0e1f7f,3361493349,4963906515218661288
+0c6b6837-b31b-ed22-c6ff-559b0c7a990a,1793172235,10759412975735750204
+fbed91ad-a175-b1c9-19cb-08a4fdbf6702,523618301,678319515944161453
+578ec343-d316-c932-2ece-8f6bc08684a7,3512716569,9463003927230081754
+0b5c4178-87b1-fa48-264d-a0c7cc17de83,4111722830,15066985694239175882
+cf286057-f48a-57ca-cd08-281175e18270,2699457565,1962552268767538773
+f7f66c70-8248-9185-c119-a261c1723fef,1459296784,2426420025813554781
+380ca438-3ce8-d88f-cb1a-3e52248a90c0,449543071,5487450898944750061
+6250c661-d6a2-9025-080b-0283312abc3a,1516736833,13368651357704714101
+5fa43af9-ab0a-23c8-e6d8-ae7c7b7a98c8,514471776,17728319510684380049
+58e3cac8-f5fa-afcf-ff9e-54c8761c4216,363840721,14685993378894905342
+024a4efe-da22-4900-86bd-693f179788d3,987164052,15748577544685859916
+f961ac13-4163-7ab6-af1b-299a3ae9c71f,326555712,1071983604405942609
+c69de389-01e9-74b6-a261-f24b350c48fb,1849660528,6743563552516162694
+e950ce8d-555a-a5ef-a4f7-a96683cf0ba0,3575155332,6636490681677873516
+0c9d56be-7644-4539-2666-0d662759401b,602172279,9935755442257205000
+3eed3a70-6236-5849-d276-bb777297ea1b,2051386147,1310226052063601665
+ee8094c4-c542-46ce-714e-4391e1c8da92,3393815645,17217035702276954493
+919da1ec-8167-84e0-2a9e-c2d1c7640cfe,3927671962,10476757012115309060
+287978ba-c3ee-e45e-1d6a-1cdc40dfb7a9,3896056535,11532784425916266948
+373ae470-afaf-f81d-3281-63f91c426ede,1566749778,15375399978325075588
+5c12663f-a341-be33-775d-1b28e8bb507a,2492831977,12482176811204565692
+83b4843e-06dd-c4ed-1ba7-6b5bfaf77631,2799295433,9630449688700753351
+52e290fe-6d11-d35c-a597-b9d2c7928a65,1528589931,1188417542065122973
+1bf81b3e-e9fd-e8c0-f812-a4a740045e14,3951101996,5686388783280412489
+87ce8dcd-3601-227f-c9c6-a2f8a0072ba3,1011030375,1189883106730827600
+aa8e6dd0-e695-a23b-ce8b-f39ae9b764ac,3480551049,12029443726081384505
+34513789-d2c6-6f79-65a7-dc31884d7c7a,3421085610,9743408712223079778
+d5b3a6f6-0ad4-69ac-dff7-a7ef704f9be0,1601483854,16706846140064009414
+f0ce6360-6204-d14b-f1e4-c241b59eefb3,361212168,17871585479465117783
+74c5b1e8-bd00-e7d2-9a2c-12a17f7c9856,1950558617,3409357544335266137
+b3a6c076-27b5-fd76-7c1c-ae830d28b88b,2809808810,16432014293801521690
+3904f06a-2194-6182-83c5-b3a70cf82db7,2061972375,7513308875303025223
+8fb07ff0-6c48-e08e-07e8-165c26eef216,403997089,15301383346893939108
+95bb4bc2-5b7c-32b9-b88a-558c43dbb540,2571336305,15220348475446309910
+9069f477-a24e-26ef-51c5-14a88ab9a22f,1885296488,5532951296438915948
+5cbf5721-4275-de8b-e52c-8446a79c8268,1630128075,12856658654854995609
+a507745b-1c41-3250-1512-0cbb0ebb3838,3033812711,15228029171254417191
+c1821b51-ac17-fc1e-6593-a5f10e9f8419,1390394735,11867314143145203764
+0c266c24-ec2e-ffb6-2f06-8245fc5284ee,841397658,1243120021173302358
+24756822-c572-4cd2-9722-ef7223223238,627289339,4270684220993332785
+18e84a3f-5ba6-0298-782e-d7f9257ce955,1276276578,2411579221947909208
+c4d83cda-f683-5231-f8f4-79ac50025db1,2062372012,16953024678711401731
+38dc897d-a724-8b09-3186-cff714cfdeaa,213575939,7544869225223161028
+742f1811-23d8-8399-2336-e46aa077314e,882547115,4971523667129624789
+41d3e194-5fdd-d499-97a4-17cff8c0408f,1126100678,14712519770282256392
+d768dba4-edff-e56b-e9cc-ab87f95a4d70,473665018,6035677853750106435
+c00ee863-32b8-1345-c1bf-fd781b1437da,3771208786,5659038155269755563
+976955a6-3b21-86c4-722c-3e0913faa225,91602010,13557010196463385275
+6178206b-377f-11f2-f3f2-08f986346108,2381662416,8440768365685347311
+5407dff6-d9bc-9e39-54ef-f9c12ccb1d81,913625696,5604657504330025285
+b756d1c3-ce38-be3e-dd54-9f8f09c0056b,877311486,18234366235583507278
+1f96d615-27cd-cd61-b709-7fd6ecd1c7c3,2514940441,4097528406333407503
+15ba1c2f-c61a-2cdb-bc65-b0b863a3e34b,4049929024,2435433182166392937
+1e435073-f042-fe68-b06e-2bb347c794ac,585703655,13263663280786860038
+091f01e9-fbf2-f21b-b494-2226ad3a7d93,3211244714,1967167882052637508
+f47591e8-ec95-753f-638f-e273dd7f8934,992681524,17010859647315279198
+5d11b3ef-806c-9051-3e96-3ec6aafacd78,2565675189,8011290755498356168
+6845c0cb-b9c7-b71a-e947-c3d26e8cc404,4233342485,10862442905709962305
+b279f659-c115-3b3a-db60-4b5c5e0e8b23,2279483784,4162566194361463527
+60f8fb67-975a-780a-0e25-3e7509c296a7,2011110635,11770115624576416970
+7d001ec2-d8fe-9b22-b5f4-7ca0d85a2b77,3923239639,14156888289379994347
+c9dda582-09fb-4889-2be7-edf2fb103aa0,2006532836,17878022243546957788
+fada4fbc-70f6-0c9c-89bd-ea46f7ec38c8,2301065724,14305503844709903624
+967ea4d6-6161-a5f9-8b2f-aade7792c193,3889259703,15581670325860484486
+4d646e0a-c607-3d22-580c-ae897fdfd7d2,1696331907,13595733710577135570
+42d07b1b-0f84-1410-2227-485f74603eeb,415430882,266568313054196404
+1caaf586-aac7-20b5-aedf-cebe9d2b6f73,939212595,259117136780221894
+edd19e04-f0a1-6ad0-7fa0-69c6291e33f3,1379121731,12678966745398822636
+94013e95-3975-c09f-c06d-8a9ce6ba1bb7,134072213,2213720532013912884
+de3e06a6-b332-50df-06e6-12da0f0992a2,3346430260,12880042635130101683
+259c57b3-b58b-b799-a1b0-8f3d16a8bb35,1419528057,13202888641444431430
+8d7f0904-865e-f166-8ff8-bf50220a8d38,3036504833,10210803446719357969
+caa1a469-971c-69f0-59aa-910eed7e8295,1774058764,11613951496599758996
+13940688-a501-4967-2431-585bf36252be,3307203471,14131288679935281518
+d398622d-42ac-5881-191b-5f39f387aedb,3261129607,18107255000343915584
+e9fe7e15-7557-e85c-a5b8-06cfa46cd035,3093946405,3161741495579417428
+0406976f-1246-6f2d-add4-72c8f8ef27f3,3430346090,7380255498600478844
+88acc8ca-42c9-8008-23a2-e552065360a0,3271612343,12202689378351388494
+d5885f1b-55c5-4656-3272-863869b39566,3870628388,6468228614204549932
+8cb0fed4-cc7e-e694-4611-a210e5be90cb,614470073,6075225603292860042
+7f7c1556-8c2f-63d2-e0a4-7d6127ee78fd,2216462730,14040815993537999400
+a21b65ef-cde3-198d-9273-fda1c13d86ed,1946095361,15819593388504494749
+4f0a59b5-81f2-e1d0-dd77-76369a340b60,3006226516,888282527193930105
+116509b0-6e2f-7a99-ca87-90adb043f75f,910741183,8683585983877707033
+f390b3c1-228a-18a2-6032-3b8fda419505,3455249846,7411718921478463777
+d8ed7e65-97d1-612c-19be-07bcb20991f9,2310444029,9689082187224050992
+613e7d81-3081-ff1e-97b8-2bad356943da,107637958,583723059989301117
+bdf7adc9-2fae-d009-087c-b2784a38247b,3748266020,6240870481690682829
+ab4008a7-175a-d20b-72dc-3266e4e057bb,1879947983,1704358161211569218
+23d1e545-2a08-d054-c428-1fc2aefcfa19,3719039476,9930952953651347064
+05e7ba6a-ab0c-d2f4-c81f-64d29ef0ac34,3757970387,14555511263238419257
+16b047a5-7219-4172-b692-44f7a2154f43,185617386,3777233275123671302
+51671be9-4c86-55cf-2062-1f7ccda2a4a6,4220973919,4899033834033939737
+58fce49a-96a0-c6c7-c677-7cdc459ac11f,2667531197,11303862204564802895
+98ed9238-66c6-bfe7-2af4-25474c583074,2916212110,7111305334462845533
+ae277bb5-d85b-e8f2-2608-67004b38fd3f,852942561,16573570919561625308
+6030baf2-da32-37ca-7865-ee22ae3788b9,3065606971,14910778409257124070
+0c892626-1842-f895-82f1-7c8c5050945c,2103722348,4892379868007973614
+5d0f1a40-38e1-7df9-1c74-4671dcdc1e6f,1388325022,14748459663291302737
+631a2807-d2af-d5e5-75a7-50ae7b464a9a,398919108,11602142349761641632
+2ca304cd-4d42-a875-9334-22372a0e000d,632254564,331196955389610109
+aa6d0edc-1b5c-2329-3f4c-c4eaa1b55ae4,3389528452,8089427955435660614
+5d27bd6e-f545-5950-eccc-6da652eb45c8,1203982389,12270648399297839578
+ad0085a5-04b6-90e6-ba0e-43635380e47d,1529146012,17613221745827671513
+9a33e1a0-7cde-57f4-9dc3-b938393eb5a8,881742945,17674330926511548506
+5d06ed9d-5160-262c-74ae-46f78dd88544,2662059978,10492551970192623051
+8bd2089f-f782-7edb-11de-ce56ed2ab11f,2666579905,12737563464511533302
+020bddd4-99ee-4f04-c5d6-1951a50e961e,3030846858,11885598374119194667
+b858c7b2-22f4-b78d-2c8e-9fa6d972b9d5,634198232,7243853235251002353
+b9d1b5b8-10a0-de6f-6328-ada864e50882,408604803,1144661492517756089
+6afb7da3-ec6c-7be1-d941-e2029eff10dc,3728927448,6226607066553163335
+a0f904e0-0e12-00ef-dba3-8826dbd8d311,2597813762,6649048972125040551
+9699c3ab-1ee8-bb99-15e9-27609c4724c6,4020947254,6751475548189364492
+945eb7f9-531a-a4e6-a86a-e0ac6d1758d6,1832898753,5286092430840827211
+639c6817-1dbd-26a0-459d-f1833fa2be71,2378109312,7551258342625236641
+d252b8f3-a6bb-53b0-5f6c-0f1cf4b5683c,945743416,10237518571745642885
+3a99b08a-0a5e-8fd8-d7ce-c71185fda1d9,618468481,13100595182990864140
+cd4bd7a3-4444-cb71-5013-19d373cb717a,3732272043,7413852491024279514
+6fd9f831-49c8-1429-0c3d-dd9a659b5936,3005722709,6433906483713252152
+eb6286c3-c2d5-ae7e-bd18-7d80113c40c5,3155269715,17953503832649660858
+5663995e-d7b7-321c-420a-136b666ed19e,829794794,14117619093441880679
+1127530d-5d6a-deff-5381-6653d84d8b4d,885057610,335728410446551657
+6d2eeba6-933f-e1a0-453e-db7bc38cf741,441599516,9333531881145515239
+f8916284-0985-844c-63bb-671fed67954f,1014899066,1456255012656074950
+50f4cde9-1102-66a4-056c-0e64f0ece96e,1772674522,17938804938143415250
+a983e3fa-eb3f-508d-6988-7c5846b9ca1f,1776580350,4625692535101928826
+908349f3-c1c5-1837-05c0-d36eae2feb0c,4203468553,15276582925259509688
+9b163a55-cdb9-20e3-5a2e-ae5340032dbc,2989674870,12698699945464324002
+7ab251e1-5453-dd8a-3d57-be5e57e22368,3436384103,4285381179162089220
+2f5fbb84-0f17-b7cb-ff15-421f715ac035,3021399884,9570943908133233517
+0f329a44-13b5-79b7-75fb-0de185e86f01,2791848214,11088526844372664223
+00096236-8ece-037e-e66b-1ab9dcb6e995,3984162386,4897708229898160130
+04b131ac-cbca-150c-0aee-4adda84fcfaa,3913260971,4847526609036931894
+5d530863-d4c2-5d3c-b044-8979b33335b3,4079061388,9589658238444656514
+9984294b-e82b-6ec4-0957-85ad9770e4ec,3849710175,16915324301769606396
+3318bbd8-9bd4-8f1a-6463-7d1139194a99,2924893879,11968620617634833375
+8350cc02-7288-9dc8-225f-155c825986b5,2308737204,881210224806215440
+38a31079-8e4c-db81-58a1-b8220c9b9111,664141038,9391251677960201291
+4e8928f7-c69a-90f0-33b1-a6133ca58bb8,3701918450,13881120206034568959
+f132474d-e1d2-20b1-0dc5-e55d47fa3ca0,2103056854,10398382175014887012
+ef79e6c3-8e2b-4fd6-c56f-398c1c458597,3101727798,8952545948596135959
+aee4235b-d212-3571-5f04-464ed12098c1,3094158218,15315639052184349960
+81a37671-d3e3-ee03-4b82-bc9654ff2d04,2270477654,2969202641711836687
+bc52e5d3-14a4-ddc9-2d7c-6b8f58be6529,557900747,2561606948611219439
+3b528c7e-f846-315b-0cf5-4f7450e9dc7a,346434061,13725163217801898426
+c6000032-22d6-bf29-7eb4-07871788ccc6,1491353660,14264799327253502921
+5f18f78d-4787-6303-5760-877b4879c397,3194439561,5643080876856634199
+e0780b30-c8e0-6016-88b4-9a816af3cc5d,2828418017,15781713216725215864
+f513f169-9ac7-9fd2-b450-60cd18624ec2,2873786851,7666796766436346237
+faaf71a4-e2c3-22d8-002a-ad9683d33ffc,1354453068,4157582761152759950
+69cfaeae-393e-5ea6-399c-4da9eb34831f,3454026098,3219209454361042469
+80e2676c-637d-dbc6-94d4-cad59d2f0929,1611487088,9200194068869282227
+6949471e-579e-d7c5-294c-834ae4970a21,872592843,15991384293134220052
+a5849433-364d-3422-00c9-bb5eb429492b,3672088346,16802199578002532894
+58c3fa54-cf1f-c25a-6fcc-20a3e24fcef6,2284241709,3971447344617156258
+efb118e3-19ed-ec0f-f5da-bd789a074d97,3981340058,2240395308384117411
+0fdfed5b-9f0f-0f22-7def-4f0e1413d945,1648431964,5681110856819240997
+41e80a69-0c4a-4b2b-0777-a6de042229c0,3896777966,16066950600347124266
+e7457f7a-d0fb-3e9a-d3f0-3bdcc7f6509a,3681286142,11840001848999852629
+906daec2-edfb-fe5b-9a85-5d59731b4302,243305092,11910838733645463503
+ba3ffbe2-6fd8-d69b-de0f-16338019a81d,4171632793,1221084901907395358
+00a8579f-b767-e359-6b62-483e0197411d,3395196679,18198276414627996006
+0e6d00e2-bc51-93d8-ced1-8d287e3fa191,3544530161,4979919550241327268
+3330531f-b827-d6e6-2a0d-252b7ce06a42,2253187056,3626778335162765132
+4460e258-dd6a-d95f-d60d-0c616929214d,2440464889,5840653054298067092
+4b8326c9-fafb-d593-cd90-4cfd2b8cfb77,2033878549,10985790736280099521
+7ff4fe0b-7743-f000-829b-496a6c4d68b3,2658466818,10066091409484394311
+462712ca-c829-6ab3-4ee2-59d695f1b319,2211191999,9002969231213835055
+10b5fed1-54e2-e643-998c-0e69167e50a3,195541687,11960837258204489122
+abaff329-934f-bf1a-03ba-8eaf179108b7,2562703936,4459649171182673615
+0c53b5d0-5c88-669b-ad7a-fa821a6fb788,1430159372,5687565256009734963
+b1ab6c57-989f-ecb7-b206-db01c4600435,3619635648,9991663701972594179
+43e88753-618e-a77b-9a1a-7bca66b7a2f9,3385237860,11462827583794367527
+7a26fac5-b99f-e794-42f0-b7e234ba844b,3893779719,16919616925322978448
+162e8730-c80c-ebc1-12af-8e61225426b6,3724252523,4536407220698733300
+b8a9d9c7-75c3-7ed0-c068-37e5fa36b07c,2067756150,4397382792738784617
+ad8cecd0-85c5-2174-90cb-386b1ed4074f,3357228716,5237966056324229211
+864ae415-d666-9782-1c4f-72312b181a2e,2848200691,14737520663525442151
+2fa97d5b-70ad-e0bb-9db0-4acaa4a86cd2,1721234086,1089265039895330004
+7fec250b-a19b-2629-b1d5-b3e8120072d5,2031879706,11377831423808365051
+692c55ff-1306-d49a-6868-ef0027511342,2764112260,14454727190239928518
+b94563ed-f0e7-5db5-8b67-0c3b1dbf3f51,2125400835,9938576526270878676
+ebe2e2bb-4982-8b5f-7ca0-0c65362563a8,3413344384,12371889231196299861
+beec0a0d-9b22-ce96-1be0-2b91e06ca70f,3066868496,13419224265801189887
+5a578196-b5f0-c885-3351-1b24681e6e2d,803469991,12605496990552667959
+ea88c462-92df-aad2-49e4-a156b5c02b52,2547458222,15278446240982296978
+a1457955-dd8c-dfb4-e150-ef404bab7149,1283194795,11920491229830327088
+7b99ee49-71fe-fe03-e3db-adb13def8095,3938820457,13287786745153800642
+4af2abfd-57fe-5c2a-5a96-bf18924d7af2,365177809,14909527506470207487
+de4169f3-00d5-eb47-ad61-6a3c46456b52,1857929335,7716057111587846317
+23d91a60-7f6c-b803-8000-a4c0847fe314,4052407115,2396680975380134421
+723f9ce6-be1a-1e4b-c2fa-b8d8dfc4a04a,314785981,12670716608895516206
+de953748-c216-65a5-8ca8-cc5f4088b59d,3637266500,9807809473459551683
+90485cf8-f441-f841-662e-1cdb69541ada,1232366308,16896831404641597053
+3945b279-1ba8-afe0-0dfc-bf6c8d373a18,1247233495,11544026088588904624
+51272901-45df-d7d0-cf61-e92eeebdb968,964224233,8104883789352657806
+ec995d47-167b-f9de-c692-9e6bdaa0ebf0,3983904471,14308248446067776668
+bb409841-eb9e-3c45-ba04-70776c46233f,2923032523,10107381879715858629
+9d11eb62-9e7d-9ec6-3b29-669a57f9790f,3686049627,14004366429683993309
+e3908e38-be59-e7af-53e4-474afe6f7d09,1979265176,7041404196397513890
+90ecad42-70da-2b3b-cd62-0f28273457ad,1476675362,7783587263603318427
+2c2fdd05-9347-5ec5-fe86-009944db2ff6,4252943209,18052511073762354942
+1c0d7c95-f762-b717-9763-94e23a3f1e8b,655399339,10416520760902648060
+93dfd6eb-5bb1-73dc-14c4-ab771739fc05,3471444770,1976421566812380749
+08d3bb1b-12d2-d4f6-0fd5-8316ba95bc3c,2802256195,15257860991897282411
+0ecdacd1-d31a-3f61-8bdf-cf18100d901a,2416097003,2600991521232241546
+d2bb162c-6b0d-abc2-2ed8-fb70c097765a,402912991,13828401066232434499
+c11550b5-61fe-b55e-2f3a-59e834c38aa7,2412929,5346130246586472541
+a7ed94eb-2d71-0b82-e7f0-25290d083ec3,3856201759,15352980908241025582
+57153035-158f-b954-7dd2-69ac3cb14c17,216949137,10388415033726019962
+594c1d02-d279-ff38-3b68-d5c3b275e957,1175864821,14510227353697899121
+bcb49f39-864b-e96d-a6e0-32a13d22cff3,697250535,14799886769323216906
+2891c1aa-3633-4124-39f5-89fb6d114cf6,1286715388,16168425566132444572
+6518937b-47c2-8c98-fc10-27424492e234,2414182706,3737916233589610304
+532f7474-7c7a-e612-5ca0-1775649624bc,1995362410,747816220535878835
+69a83b97-2639-1aff-ed7d-b015ba892432,2013988851,966925322298667025
+eb3027d0-bd08-1d93-27d6-8fa1fc7e2cb1,1046885816,17597310701070120242
+7d9dbd79-186c-20c8-bcb3-4d0391f23d02,2171486052,1933695277418731759
+420b69bc-e5a0-30a9-dc41-53ebd9b2be7d,2281511528,17394737965570351339
+504ff573-56e2-4be3-e50e-443d8d9f1137,3285805407,3997304628239782343
+1849cddb-55b6-8e63-1748-29a7b017b43e,250508150,13794318673210612004
+7dce0adf-7fbd-9d1b-0c4c-d5542b08ff9e,4092179797,4533145041633990841
+08b99a25-a2c5-c0ed-b41b-1381571d131a,3443553777,4410451436357155841
+0bd388bd-b50e-b636-565a-254a5a3f99d0,3766747986,8216434617524876704
+eeaa4352-f1b5-9509-9045-05b2fee31974,1716697974,7288913787308858157
+7b208036-c987-1194-5a6d-f8ca412308b9,1649021236,15665034040405148252
+5b161bb2-9d64-6128-690d-b857e2de3ad1,1182748481,9060023121887869278
+14eb0b51-50b2-0566-17f7-8f517d3f31bb,1186532066,877524570133079974
+67416c3f-5673-a058-ec21-2fb1efd57be0,1296696838,11843969653882549470
+175e242f-bad4-304c-f50a-46bbb97bed6e,36228074,15606223976888934809
+6b04bf86-5f76-5090-fd13-44418ab4d695,3450902166,984649179046121686
+b7e2be4a-62e9-d8a8-0f19-d9df89241160,2704681823,9912104347330306152
+1b7747be-f32c-ec55-f18b-825903001cdd,4254011662,7750787344601480219
+2debf238-8633-6703-7d4b-9dfb361d315c,4265404512,17374249455223124933
+80b23f74-dcaf-169d-10d9-186ea4e6ebec,1332324230,3347890267413996388
+984d39bb-de3b-6981-f6c6-ddb3c1f4015b,491145527,7894918148494187564
+2d40db7a-696d-0f00-d55e-77635d4230e8,934662762,14232530651495861642
+9a7408ed-f1f6-7855-f22e-0e633bec986a,29277501,14173694317654955557
+8a659aba-1423-6985-17c5-459555c4c169,493616737,1898443403593579955
+8147d1c7-d2bb-4350-6856-715b19f857ce,1371502857,1888727001282700676
+e097943b-43ae-237d-8dcf-a1f140278571,3488937899,1321129711312282231
+444b49d7-7d70-875e-f1a6-12b5dcb6ce83,37818667,6124557823930835091
+f1bd01be-9216-8a44-188a-f1944f6dbc53,2180171844,17203522639676220966
+47b1aac3-dd35-c42e-1486-dc49991b5920,1833900869,7891816942181242933
+a3edee3d-eef7-c225-f453-61b9cd9a79c3,2921670298,10415400129943418818
+ed450557-2338-afcd-4b23-932210fe4b2e,3738427582,8725575630620410173
+9780d40d-29b4-ea0d-14a2-bd28de616cc4,4273609885,3053470155771978307
+d42ba36f-60ac-7808-c374-0e98e5db73dc,3551108959,13975403810772968068
+f655bca0-cd1c-13d8-dde6-b0108ebaefa6,2729189749,14130283741779431811
+c3c244f9-cd06-dc2b-4231-76f32301429d,2111281056,10973795719401436746
+7ec424de-36a1-5301-2b52-eb427e199ea1,2839602895,8254095355709561681
+0718713a-211c-4b80-fa82-25bcf245b836,1087319996,10973240378937634555
+8fa94bd2-ad2c-52e3-c807-ab8940f284e9,2517408678,6802521750737517548
+ca8bf403-ed36-bc08-3b6b-81c5e78db3ed,71127203,16870938274953917018
+9aadc87e-fc66-de31-9cd0-bd07774028c0,1055903727,2174723026138779767
+8168dced-17e9-b76f-0ebe-69168127aff1,1051073562,7945535898205902625
+4a928047-3379-745f-c46e-dd88bdb09a36,167013355,8570563440643131824
+db7cb08c-a75d-4b53-0f6b-d952528aa77d,1360112391,12938392193064045366
+806c29f1-227b-880c-4742-70b03de5212e,2659102555,1540596802817806089
+4cea317b-00b3-2234-baa4-c50dd969273f,1812796636,4359742169268272359
+a811241d-9da9-6663-49ee-09d4b7a330c4,112677172,14755926748062526921
+631c18c4-6f19-e7b9-990d-a69dec0e2c7e,3385735455,2459875826719749672
+7fc7a1b1-ebe1-be05-1691-95bdfce65f82,3819389439,1123004112188318064
+f59c7bb3-2f46-0856-4b2a-35f6e92f36b5,3611655428,8140314104069929384
+bda5a028-a242-40d9-b21f-a3cd3b0580f7,2638280734,754366312483228480
+8e6db184-8b5b-9c8d-1e4f-891dbedbc33b,788913675,9608956703013872169
+aa0cab24-ceb7-195a-313d-e8d6ea72c7aa,2439859034,17263069102258701984
+4073cd1e-47db-a160-1a04-f3e40fbd14a0,4195741257,12625906035970996465
+c2d66f6a-37d4-a2c3-12ff-11ea6d31c75e,4170996022,7813837951230440145
+e055379f-af88-72a4-410a-739844bcd9be,190411880,14279494435231747428
+f55faec7-2647-5d39-1e6d-1d5905ff29c4,2743127304,10970393805459476560
+623cfde9-3cce-5115-59df-1d5b1fe21d2a,2977567386,5551882472489694715
+1c6e7cda-2d07-ba12-48a0-55b2c19bec4b,482521046,10803162848388712678
+52c763ee-c75e-60d1-4d4f-c75a3f7fc17d,1830751495,13573162508826520062
+39ce4f76-4375-66c3-1653-b44c931ed550,4033874758,16652709205160274062
+d5d18213-302d-efe1-0e34-648b9f936bd0,1802600370,1621773950167783614
+bd47f231-8403-9f87-58fd-9f1b6a3a7a26,2041405171,15240857224886432972
+da18c80e-11e3-92ae-9129-143a670efcd6,2363069274,12474911170620612787
+fd7d32be-602a-d88f-b42c-dd10433a1cae,4247508834,8328704991860894038
+046368e3-16a5-11b9-6fce-afd4431e1a63,139744803,15611146574730877375
+74669a8c-dfeb-66b3-ab22-6739bd1d8528,2300390190,9311230914455148167
+192d63c3-8c78-17ac-799c-4818ed9b0e73,2953014824,14834655047808735938
+85ed1304-4d65-a4fa-39f4-13650d77f9a2,2238729143,2309822353816526098
+e76c6688-23ad-08b4-f846-37b956d70ddf,777831768,18337639475836709052
+45886148-b3dd-e841-3b9c-8c8e4aff1022,1132562044,364798691164002478
+1551b2f4-d67b-d1d0-4a8b-a88255493879,225809072,1712885068656126863
+6660f8d0-0871-b7a7-c7eb-b218ab5aba27,733273195,14566352106151781924
+67407bf1-20b3-b5a2-e5bb-ee49c30faf48,1260145271,13727031851635032520
+57310d1e-5807-c5d5-5e4e-3545dd245bb7,2360047054,12185141337014731604
+c635bb69-4f5f-a963-3b6b-85169560d319,4229804887,12788280777642388765
+cb992c72-4249-29dc-2ad0-6d4bba515208,3155785259,6194211860095725434
+64936cd4-59d9-44e2-9c97-7744b781f537,1869175082,13373293440815073678
+ec588b7e-f4cb-aa33-d3fb-cc86fc84113e,3424612279,16174507274985457009
+ff219e32-9b4f-5aa1-c667-be294b3d7b65,2778396589,214215354118715876
+b4875367-da5a-60ce-a0a1-9cd640f0639f,1965515351,4818741473375932965
+794ed49c-bd52-f025-a598-b04976b7237d,1193813773,16617304041671189077
+fb21faad-8003-d11b-5223-a7af4d12c971,1845711497,13554040094238065756
+d5d2a2d2-5603-d525-15fa-4a9db1fb88c3,3636446534,8291190219840034251
+22e10155-ad6e-0eaa-57d3-7121fdea2232,1735643402,2093565759396754359
+cdc23696-a020-31a5-b25f-89c82b53440e,3799223228,5818927262410542931
+7991af2f-98f8-6ec4-1b5f-3c186b51dc85,2599033455,6219766550880772164
+7fc4c77a-014a-2e6b-8d16-5d979e3a20dd,1963137752,6592232844523238037
+c6dccef5-57b4-3ee4-9fe8-4c20d37d5484,251506872,4075717527267674225
+f5538fd5-aa5b-52e2-b3ec-ab16c068ceb9,2007538573,5449150519952237544
+bb448ecf-d0d9-8ffc-4c53-9df419822c5b,3375335917,1630024101163990009
+b52214a1-0ed0-d2d1-852c-7a37aacb14d1,3379472987,8508165999397269409
+ea708f68-9d3c-782b-70ae-726f3706c45f,3050397388,42318068024750555
+f7a61304-c561-591a-f854-d8e36572e570,3622307415,16874376529216955900
+d14a0fb7-278d-fa2b-fa33-d1075d386eeb,2977106490,8468527657446078731
+3463b689-b014-c9d2-c610-d9ee34f6d703,2081809616,3598117161641823557
+e98069ce-2d96-cff6-08e7-3c8d5ff81b57,3868159774,14193212431689375496
+f3592eed-72a5-06cc-7f0f-568927c9de2d,3978585600,14175394651295313412
+6c10c8ec-01f0-be93-69d2-f719ccce7083,2791916295,11971594927277348995
+907bf732-3e31-3a41-03c4-f082fea6c7a1,1156307221,9461755771791297883
+cfa94480-a182-5c55-d58d-452913f4bcf0,4128632773,5641250032121455556
+f5d7a2b3-73fa-a89b-f1c1-0bdda0beca82,545157886,15469760094742132704
+077cc307-249c-21aa-d099-767e69287e08,281276520,16754304126490285446
+96cfe4a2-b483-77c9-7a36-97d5880e6d12,155866339,436804355068809414
+a97daad2-1526-ea38-8b22-6a1b5775a308,128280811,8584187683654681031
+57b7c438-f87d-6166-2192-5a6e49779355,869627275,6123012994677267050
+1ed2a9c9-8b47-a8d4-03ba-1c8a781ba173,1954135161,4544973205708155312
+a04f6460-606c-a4b8-79db-e2e89c237323,4208057816,13159292443026276788
+94c9c85e-a4fe-4f9b-5a5f-a9b4acd9a088,483512238,12562440705277178598
+0bfac2ab-24de-7b36-3376-ce8c5d388029,1053185182,6782047359327686816
+8513660e-7512-c4ce-bc7e-9aadf9096574,2986758084,2328197290605280387
+3c037ed7-b9b5-a298-2576-b280b6c442df,4024134113,11594281944820064206
+32aa5e02-1129-9a43-98df-3914697d6b0e,1432305547,6780016533496359083
+462b1a69-2038-3137-a7ca-739088058cd8,2764854160,6160598497015051343
+2a7a55c8-ed19-c6fc-ab1f-95d92f7a9da1,3514887002,14725969556914066972
+a3ce7721-9547-4f25-cdfe-3ccc5714cde6,1829380797,7143011951440333243
+a14d9916-596f-6b4a-ad66-762db30bceb0,2834451870,11938693824860975035
+6478df01-3482-4616-53e3-58203a888d26,1565537475,1604621442979803659
+8aeccbb5-58d0-9ca0-00f5-7ff81ec9f91b,2296349326,9388018865470061286
+95920eea-84a3-6ec3-3936-d925df725fae,3896882792,13194459042897049899
+79b135b5-bce1-7a90-a4d5-746945761bb1,3606675965,8400813376622243546
+9607deef-d132-ad87-26f0-7ddbab5afad6,928154762,17942422499375050453
+e4eab874-21ad-3807-abd7-3801e409f581,4253871235,2888426666283940224
+928a6ae7-2ab6-24c7-60da-6184ef6413ea,312314678,16018326313314070678
+d8759255-6b79-ec2f-27b8-9a1fbf3d31ef,4021554397,8705165751907378440
+514ccb48-ddc6-2ea6-f2f2-cdefeb01e503,848242624,10058586981936596752
+beb2000d-0038-389f-45a4-cd486f164cc8,4042145697,2962636929065822970
+90a98a30-d1ea-e595-4b83-745cf7c9501d,2949876444,16508578884921846318
+8edfc095-c559-1827-e8d5-0c207cbc9150,585988969,9978525576864292531
+0bc5d498-47c8-31e3-83e7-e7e05d02f873,3515440109,13574016223188956765
+7a28725d-cd8a-2361-b219-f43dadf45796,3599732683,1329021139296372716
+3a3325d4-bc05-c7b0-d444-242d846cb4c3,2580389220,6883398896399026156
+28b62283-8063-961f-3524-d250b62760c8,2329735024,14682361145501388431
+1cebc70d-079b-c4ed-3849-b8f8aa2fd34d,3869780886,8000644430102605961
+b438fc60-2a54-d732-61fd-294596065fbf,414545935,15264780254592482990
+b2562dd2-9eff-43dc-0099-9d473eacc4f3,1953592810,8878162557489575175
+e281a6c8-f8cd-84a6-8a12-2c04d67592f2,2909292107,15061375024948322822
+ab41fa9d-32b3-d176-65b4-6e3e647f327e,2999335750,13212543830546439975
+875e2696-242b-05a2-0a45-ccb583891cde,2868154784,16887880773853081556
+c65143f1-c425-b8ef-21fc-3780bbf22bf1,3113053231,10251586484742347563
+cca98027-96b5-7e16-f0aa-ae211519a132,118162701,2662155039841250475
+082c2c3f-5926-3de2-24a1-46a0243a2bb1,4142994939,5524620861668764251
+5902acc7-ae93-894e-b6c7-2dd5ee13cdf6,1806220156,11887932536907822661
+837793c9-d06c-5b54-202d-dd692ab54977,3438889517,14308209227030880198
+3bfaec84-32ce-9942-9123-8564850e0f88,3496761593,12290097362233555215
+486ed1a5-c276-13e9-9d1f-40b8d264d0ff,1970903997,17104951259465846829
+1e628998-3d00-2816-96a8-1ca44f9d70a1,537684381,945998390880036133
+b13019a4-f131-4037-62db-d0fe4642252c,3150837586,271671025406587613
+dcba0516-9a09-3d11-cfbb-1ba9b95bd942,3568120981,6317158635274707195
+10fddde8-4b5b-4c10-086a-3bd87717d01b,1745047446,3772562320579621612
+196481d2-7be3-210c-9e74-9bd944f1c53a,2399895091,14323204156151120567
+82a8bbab-582d-87cf-7c4c-beb86dc77247,2448637209,13667530138937944763
+05cf0c80-c702-ced2-9775-a2c1398b54c2,1101501312,16235232086869691044
+1c926891-3e3e-d2ee-dc51-cd8be8530778,1854432709,12715214072434764154
+41b129c3-c383-daa0-b859-1c1165140498,3074310780,1828735369305308703
+673f1d59-c5b0-9fdf-d026-d7b1551adead,3973558183,11645204018331737438
+b2580a4f-0f0c-5ccc-3183-b70419582ac5,3492324707,16552420984181085910
+62fb5dd0-80f6-60b0-f31c-427d0ccc09f3,2813905465,16741098652210135601
+d8bb9b8b-ecf6-666f-8c34-817c2be3876a,2863521991,11841679025653709803
+756658e3-5eb6-4b97-657f-566052a0ce20,1740035286,6048030686133866358
+e8282d0e-f62f-394f-2303-944f0a122958,1880425537,12132884991930730479
+11764276-bdef-aecb-4705-68e6b82e9bd8,3964701158,544097335883131272
+08ec7636-90a5-a800-3d5b-79c2b53ec0a6,3223121361,12271290068855428863
+1c03f1e2-7f43-df73-ed1c-40186345be27,1111614104,1682698885627036706
+77be2fd6-1451-f7ae-38aa-254893d0b9f8,253786842,11600129668088012363
+c876c454-dd36-b933-43e2-e10b0984c0bf,2678989465,13765943327603879048
+e9a8f035-eed3-66bd-5d3d-6584f8b29f09,2993324594,12566528811104780650
+e96445c7-501c-7697-8e4b-03a64aa988f5,2002997278,16924262104762838048
+2e43511f-344a-93c5-0981-3cfebd04803b,1501356489,1912294303797805585
+cb8a1140-7cc7-4ad6-fd0a-f872d11b9597,2387416046,5023855740817502530
+245f31b5-103a-2983-ebc8-8610c6f2edb1,423895936,17883127307892185469
+faabbbf5-ae6a-c668-74cd-90de260781af,2410213924,5100888896231640237
+13257cd8-c6ae-93b5-8c68-a92fc22b9b89,189556563,14781784856228342105
+f89e1d80-c2d7-d05a-43d6-2e1b0694f081,1108823461,3151674790707010391
+4ef887f7-9771-d8f6-8ceb-e90b50a7acc6,342385140,17651552347706270479
+1badc607-2b0f-0b91-3661-ae0450df8c3a,751907112,2047040982312614894
+39922b86-1a91-8700-01fe-dd87e4e57475,3433424707,9230754341147148738
+22e0d5de-e990-0e24-cabe-46136ca83970,4126443045,5249349818058001091
+468874e5-4c47-c176-f30f-7c688dab4f52,2368960281,13820043412487083530
+f194f2e4-1075-6ed9-588b-cb7bcd84f437,3869548951,8418552970498197830
+06d35ef2-fcd2-9df5-84f3-f5a9e6b716fe,1515361553,4986935859659173321
+bce4df8b-73c3-df03-9c3c-786751ded427,2667280048,9594346538057171619
+ceb87c36-661e-5443-fac6-08c123ef6764,2456912845,8927013085798973786
+00ab97fa-c9bc-b6cd-b4c9-fc1cc9b1558c,4100921857,15436890416559309898
+1cb09681-a612-61f3-6c4a-4588b60e8695,612071427,13692859840510533293
+fa788705-6884-5700-05fb-a17c62d7a200,2569541823,1762387983307334368
+7b5cb3c9-c793-ed27-5654-4f5b290be2d0,2273831747,2092482459268096658
+e68c11f6-1033-7b89-c5f6-b3a6afc963cb,1319600642,5001065933193826436
+bb4d85df-47db-dfa9-5b80-a8cf10ae049b,563718216,11683733918573680286
+dc50d63f-3394-160d-d0fc-b9a4eda68344,3463302079,18147808733545955404
+49472706-f9e3-420e-1e42-20d697e9ffd9,2045437023,2798615077770792888
+2040dc80-0aeb-be4d-45b4-71164d720d32,3447797838,14367605243485824227
+420bd034-2eb2-1e8d-7b1e-052968ab7691,234175212,4198608650641062580
+413c2a67-e21a-a9c3-e0c3-6dc0f7673d9a,3305108357,11601642023815267159
+71404802-42c9-c0c8-be32-ee8ee0e35756,862208366,16069575824263205533
+ec2d8e03-99ae-b581-baa8-7c73e6b47a83,624002918,2213308555516865576
+f345ad8e-cb54-cf3e-cae3-ef415fcf631d,230561376,16270142317318750306
+b9ed8204-6174-19fa-7771-f95ceb8ac5b2,3785684585,5661075677060284165
+c21d4ab7-8f45-085f-77f8-cace59ff0b3e,3080893653,1906960554957366572
+7c77ccac-d922-9411-1f4e-b360e307af7a,2480174998,16078590203734148524
+8266c05f-bb4f-a230-8136-fc67568d5a84,2182207629,15118399798782350435
+9e431c93-cb98-7968-1a8c-d44818a753f8,1932037926,12033990385258782890
+7f6701eb-2eb9-1c57-9416-451ab80b9d00,3975217097,13486773697793061574
+69c79eb1-59c4-935d-d51c-fb3123f62090,2042426266,1032959144161579163
+1701f803-cf15-4c48-441a-112fbf323f4e,2385154838,11942716257133020845
+2202800a-d7ac-b1f2-26ba-4234e2cd48c8,4294878351,12484015706356033852
+59fb245b-8bcc-d724-8c6f-bf71d76273da,89440111,6202246544074353560
+001a6e73-9920-06d9-6557-207467b512d7,588211331,14772784040369668742
+d59dd93f-c687-ac4f-b049-458bef757795,3524751222,17512148524213155130
+a612db18-2590-875a-5725-6b633cf82420,2639980333,7121104706172640854
+61722d46-11d0-e1c9-317f-ad2a7daa1fa7,663492468,9334340922534192014
+2730c789-f25d-1865-04e4-d3f2c6249ab3,2414394387,12546825344290945520
+bc81092d-2867-94a1-5150-80bacec4c39e,631045019,3326884075211415693
+cb6b58f7-2f89-bc27-2404-746d51af52bf,1166524561,17360970997931786669
+a5212538-6988-6d03-0c97-0929794c6fe4,3828462559,16447025323850277263
+c091f840-7016-76c5-7b96-c897a646e843,1546109686,5105853572523345382
+0374fa75-031b-888e-8375-11df874a96f0,628121650,2486583193489153750
+ce05ce87-e56a-c92b-7331-b504e7b91439,737066116,18304655415991473174
+4ce4aa50-a0a9-bd40-a3b6-1a49367e8bd8,2417696194,11925066898621960504
+f66fa126-cfbe-2917-c399-339b1c1a7cc6,3037377759,14819005060946975874
+5c733adb-f74c-14a3-6dd1-b3902c8b8fba,549906021,18031467728911200322
+908b52c3-5a0c-c890-5936-020a2fbf220d,540368490,10193456304573106389
+a22aa376-06b8-cc21-d318-c608707a0b5e,4019583694,438127780723852851
+5cb72b59-c298-3b29-884e-76295d6c29ed,3611647819,13536552866458026922
+ccfc4a17-7185-f1c8-db9d-461879e8a73f,1726821235,9448671454400724618
+2787d0f5-43c6-a97d-334e-4e14a929c1a7,4251299167,13980800722579629422
+92715a75-9021-d409-1cea-04decb5f63a5,3795373760,4748495144365206790
+88850c72-341b-dab7-b34f-bf896270db19,170058087,8093522037117745852
+f3c8ba23-d25e-2834-61fd-e0fb57d573e8,544494844,8413080628131108014
+47c01b08-8a5b-576f-38d4-24746bfe3f40,3857259199,6177798450523872967
+b064efed-2f5d-525b-41ee-b9e011a20015,3834493385,1651189003367930158
+17d0a62a-4b25-4d4a-318d-1baf60e91e97,1973588494,17687977336389662078
+059b10f6-cd79-d1ed-63ae-eb2daceda97c,3350795679,11435448788572470125
+fa9b5d18-0015-1200-2386-af8ae8e009f3,2381078502,3480941368060803508
+2a6d84b5-bc5e-5541-608a-ac725c7fb0c9,3415072175,13469215025786676128
+fbd405be-755b-1338-cb7f-f1e2cef01d2e,592694535,4088908053347214415
+fc061b0d-36e9-63d2-21e5-6948148f268d,2210282015,12007435760388605565
+c34f289c-d871-bab8-f006-92909a9b63cd,912157398,10049420512083773162
+7c784152-8a66-ef38-c7ec-1b197d93e38a,3575300968,3710336605850004522
+5bf10465-d5ea-849e-fdc3-128b4eaf23e4,870489128,16006232259674601158
+001dbc47-112d-f52a-b3c1-3d4e7229da73,883183123,6101132163867255680
+9bf9d611-9838-4a69-e2da-b1113901e121,1979000528,8162842962266556922
+fe813783-f5a3-728c-1ecb-601807f7706d,3184603773,9883493879765985108
+b89d0839-4216-d17b-6149-3acd7ac36dcc,2982469774,1107680037200041846
+fbd9584f-8155-42a3-58d9-a6b5f027f61b,3089007496,10385376848083930526
+46c92164-1bfc-1e23-a27a-cc114d1b4ead,1695741589,5576980880844522794
+7010dad1-80c3-d7ee-a17f-aa1b6ae7dc56,4250012091,9979357198072335751
+b5fc8722-e25c-830b-3296-2327f67b356c,631085174,16154598093352092499
+8508551c-7ff5-fc57-4a7a-f791b574b0f4,1291587564,13061637594663150216
+5166b109-2c9d-ac04-480e-6397f8c5101c,3842845206,5950769891894676536
+5b9025c2-66bc-fa21-446e-316b1d71fad6,938057024,12615575699662484606
+8ad9b268-f86d-b7fe-62bd-60d47fc8e9cf,2767443857,10720672207906612907
+015192fb-f28f-4362-0b09-6d89c8469e54,3353318602,2850657881857540345
+8b9922e3-1c9a-e0ac-9120-5937386fcd10,1477687832,2460323220253302481
+31a4ad68-606b-a50b-bf01-736a8266eda9,760590524,5423937495126834706
+ca59821f-db54-74f8-3a2f-53f61741c43f,879934785,1522555242724214955
+d1bbadb1-a394-bd86-ba8f-3d5aa5ffd487,1046082226,1999275267457674217
+aac40f30-6c3e-756a-2f5a-476a680a87ff,3451520127,16797747658543544554
+20f15037-ff8d-8eff-8575-2bf7ce6b2c9c,4128122925,14348492965480076182
+05750eb1-0e6b-cf2e-5f9f-e2deb6724f52,3116615869,17878239857950031378
+f279c000-86fc-edcf-3df4-731a801b8a45,906113720,10299450393890793501
+9ce599d5-c9e0-14ec-aea2-e6f9410a8e52,3354411085,823907017014581557
+700ac88a-a213-02f8-3d99-b1d60fb6331b,3882938491,5091776438519275950
+66db09bc-d98f-9f60-f2cb-da798401aba6,2320990242,17860044957051645222
+5eed444a-1508-c507-d65c-d69e2ad7c50d,3622170969,12464154791227546562
+b4f4aa85-7b33-74b7-9f64-dd858bb24670,2181961890,14109731072203887608
+095b9e1f-3c71-2103-ed65-00dd18067935,1620418899,8358683601557424292
+4c7e5824-af12-e075-17ab-d8a3176e760d,2314361397,1167151672452552227
+e9aaf085-8c4c-82f3-2cee-3e35d399d5b9,124033669,14993134108198699708
+5645ca50-f82f-1998-19ff-2496aba8ec79,2193002263,12726730665121026090
+d8d57c34-2547-f7ac-628e-0f3ee294c60d,1109711770,1261952601297102286
+2c23e3d6-9e80-b0cd-6922-1d5a138d3fb7,3904173448,14450120235033457618
+ba1dde29-435a-1503-1832-d494485b996d,1723947539,8290887011012268645
+6d742556-1f3c-63d8-9d1d-db639e10f673,1138120595,4690702641443883993
+478fd078-8f6a-2134-33d8-a9d47f638d24,2543996869,11299226144148375121
+f5efc8c1-96c3-131a-1a91-717bcb4f2e6b,3298962128,5704171506400715899
+362a5644-36b5-7d52-bb6c-2f55c30d329f,4007851275,9355189991809618721
+d15f6748-821f-6249-4bac-f346d5ffca7d,2398495265,12455277513097017506
+b8505cb7-cc36-9652-8767-cea75d32c0d7,1006107189,2527384611978904048
+19819a58-10e0-245e-8ec2-ae70379b24e5,225565283,15951927163497640782
+fbb21e9d-5159-14d9-b29e-aedf30296dff,2980794312,14422064700193981878
+b567847e-c369-3c45-e95c-9decf1abe6be,446126748,7271012985604256642
+7e59619e-548b-99ba-9843-9a75bab1c49d,910347957,17520844085366001551
+72e628b7-f513-7f25-9d9b-b32c26895131,3525062687,17102151150656243871
+ce7f9864-3a33-cc6c-ea2d-c35fd2894642,2274747641,10474865355414725689
+e4f31143-93d8-047c-7bdc-3ad29b76b5df,1179566954,18145467784548440377
+d3cb8cd5-3074-c985-d9e6-9fca260a56c0,157926818,15665552017575953384
+acc9cb00-c9f7-f799-433f-25367b7d37b1,4091225421,387090145070641082
+8e4cfbc3-1772-d65b-99ca-48ec8dc00f6f,2552391340,6010038209584183888
+58de49bd-3330-46fb-ad48-b5eb43f93963,1862263345,6899602065681523024
+8ede1276-e8ef-d738-5155-9fee7b131ee4,1053061438,3503342367942654189
+ff852e8c-cdb1-b202-396a-8442c82409f2,4251714676,16766177657894136074
+01f06d2b-34d3-bec7-8246-ca1607a69c16,2259128154,4110517795790558842
+66937f35-f9f9-d631-e7c7-5bdfdd4f2d48,620678180,6660824637021395811
+d6169297-d906-5c7e-be98-b8c9898189f2,819288716,17912301251979046120
+0df9f7e8-7cef-6751-d34d-6c87688acf2f,2472312922,15475532367094545874
+b9f2a7d3-9c31-1db1-92f3-eb6d38d7ef6f,502664005,292829186646557966
+16768005-f767-c6ef-2cb3-9ef515494e8e,3506447514,3828365124085159368
+df748e08-9436-7759-fe5e-3fa823a520fa,3569605959,16407879707732233417
+03dd47b8-6c1c-77d7-61b0-e77e5a5c8d02,37740598,5170329588107284041
+19d8aba9-d66d-3d2b-335c-7543ef419068,302081894,13634518285482201637
+ffce7588-19c4-4646-e599-2f6a8a58ca22,3828703902,13177928135635272149
+93b5835f-d1de-ca89-8b7d-19cb6b306bdf,3508439150,1173661280803927653
+60c32ae0-4f77-92dd-9134-d238810e6d18,1361599197,596333961844035186
+6c524419-a14f-667f-55a3-d3b8691d623a,1050116314,7984566210451455337
+c17894c0-3d24-68f8-257e-41339d8c5ed5,1340459479,5032792814235961552
+20002d01-d827-9206-dcad-f1313a549b3a,3011628399,8208849488175083901
+e53b06b3-91f5-ba8d-952f-8a8cf2314ac5,857154899,4140840489455739625
+3ddc9ec9-d599-1f5b-ddeb-90371d46893c,4187720886,6642484705604104019
+f95743e2-1d12-7b53-3a9e-4f72836bdc1f,1885797624,7550147257611616147
+8127b981-af92-a7d7-f725-3be04fedfc30,2786324661,14390513920324097783
+e282e676-5c35-f812-4dfe-b6bc6b8fa697,1505727212,6549479282011324451
+60e270ed-3ef9-d424-f6e0-56484eabe35b,648998858,4197897851022506180
+c8c540a7-9b23-8fa2-9f59-f5bfd1a28108,1101219866,5440892776776912692
+499103bc-7786-4449-a458-5434f49300b3,970699896,11056421663765615391
+736eb502-3f4f-17b4-b56a-a393b39d777c,4266294823,6463215300802705338
+a0a574ef-4be0-a1e5-ae22-e1c3dafa659a,877393778,2006389139556953944
+6aeccc55-d8de-0e76-07cc-6ac07a3432a5,746819424,2324512356146507209
+faca49ec-e017-2dfb-0aab-354de46723c3,2055974072,1214917733138315712
+e5986174-0dc4-b992-8bfe-048a6e26d321,2892661461,13466700036147711723
+4fe80b91-dfc1-e39c-98ee-687da7354c2e,1577493081,16836286778093330133
+2be344a2-aca9-61f5-09e0-834d3639151e,707300721,6003514883719533561
+9cdaeb2c-b266-6548-fe24-bc2c9902ae30,881075748,12128124860819026020
+10e6b04c-7bcd-b117-7ac9-bdda54ab0000,1632905767,6072615948916841087
+5a860eef-89e5-bb82-0f8e-a99d95f17431,1368234053,7966775534426539520
+d22b2484-0967-7357-66d6-119c6dbc9b93,539263169,4430841576030087354
+cb93c22f-9172-4025-7b00-ed2e86a51c2d,4131168296,16579335947565988404
+100cf6f5-f5bd-707b-2556-dfb63d2fbeb2,1648729441,4450520691310427026
+63941399-acce-6b1e-cf7d-584ed4d15a9c,4292429445,4504940303567975742
+efe34d83-b8dd-7075-7123-e67a1c557e09,3065270726,15634795780678037063
+c5690c84-383b-1e35-b62c-c6cf79223418,1631297844,7122092842866119298
+e624aeb6-0d04-36ee-d429-e0b7c08066ce,3292484018,7673551180698563065
+6209e493-2f08-9997-dd11-c9b78dc57542,2187365907,3741879746669570034
+26059f36-f676-4570-6746-7d5e4de1ed98,2027693460,3038919545938793140
+c6e9aa23-6f9f-002d-6261-3192872b35ae,3700911363,13000790672156169482
+0a95a2b3-280a-66b5-d39c-cbfc08ab2ffd,3134803079,2432875297031611549
+c285c5d9-b6bb-ea93-d50c-febc22dfe69b,3735093363,14053869683466428984
+1a4a2a0e-7394-b1ec-5de9-5b5399713d3f,2066926732,473651858572582631
+edf9b682-0dc8-6e1a-0ad8-5b0b553589fe,607046621,1568053667380490512
+d7aa88de-22c1-7082-50da-3eb9c5b74ef1,3523343515,4063071091795936216
+f0802f82-4308-110e-dd5b-678a1975dad4,2317229697,9038112738394978075
+a46cc96d-678b-1d2b-ee93-fc9df0ac7ee0,2688258175,8799603266450392317
+7f362c50-fc7d-2552-df68-7b7438c79609,752334559,13519078634952088442
+163343f4-d4a5-7323-6710-8f3aac987d92,1080737277,832170624696611753
+51aed1c2-0047-e171-3de4-0c764150a23f,3927762391,1811425737650000737
+b6cb34b9-bc03-aab2-33e7-9a712730767f,1001668799,11547410668766934971
+afb01807-1fbc-4f3b-3ef0-cfa92fb2e0b4,3167429825,7387707795718901835
+c7e50efc-b168-5bdf-aaa4-b1671132c119,613024654,393834419920924701
+e6ea3648-8c77-2160-724d-4a653e7de00b,1619447285,7569874592146300577
+a5b7a5f4-8dc0-665b-1bd9-ff7618b723bb,2860533878,97127435393765420
+57d2877c-4e6e-6db2-76d3-c5c934fd9183,3629588451,5357837099398724140
+82c097f4-3da7-c75b-adb9-141420b9ed0b,2642878545,12520419179289299842
+735bd7bb-625a-461e-7887-67686c0bfa44,1415127075,10841480714458815801
+451e4364-76cc-141e-f5f5-d03ede9a8550,971733273,14882115888283996768
+8d3020ac-5a75-4c79-9d3a-12f17b07c8e3,2824005028,4215014673213341133
+85655a4e-7f26-6de2-62c4-b6ad34ad715b,1303790528,15761875801190683579
+98907b8f-8479-04cb-9589-80f962e2ecc9,4174535441,8752577074470358043
+ca877c65-0193-c377-afad-222860590a67,3348583214,6973666879170548748
+f023897e-4a60-0526-c951-0a54e1b19932,2388267442,7009835874871178935
+32c034eb-bd0a-191d-bf5a-e79f0811dd6c,600001930,6975534625684279658
+2caef057-3c7d-13e4-1435-d57e1465995a,4188805739,13442741360779272971
+ec4a7d53-6bf3-545c-67c7-e998ac3f19fb,3657565229,13545065523334080012
+0d2c5c81-d81f-eb2a-cb17-01712a2eec16,3746136947,15882583727145400410
+bb871aa3-865e-ff3a-b996-33bb3a069fd7,58863934,5175041972199937035
+f0a9acbb-2cb9-2fc4-eea8-0fab57498f6e,188801487,2767871952852892410
+77684a2f-8c5b-1fb2-59e6-e2c1cff7b9e1,1197764106,1756086441901783125
+5e98797f-224b-e904-3776-9df4e9ba36f3,3930913163,5610237703394745317
+ad199e22-6ddc-67cc-f083-6cea8bc0cab0,72067935,12504442021535528064
+8e60bbb4-58ad-ce66-1986-5bb798e81d22,562815880,5904722180518186831
+c1696d2b-35cb-564e-f092-9116d890383d,3506779459,17537225131087045592
+e77aa368-f028-4646-b934-d797d59c5c6b,4040285324,3915489137240980842
+18ec0f43-f767-68bd-126c-11c2b973bc26,3706769064,16695642055760437778
+108f96a9-5ccd-5873-763c-dabe90a64298,2565318922,4576767154705230477
+4046798c-aabd-bf5a-f80f-89a60903434f,4124997606,4709895902734549659
+a883237a-571b-0638-1b84-b2e40236352e,3613925282,6220077751594697550
+825ad570-beff-1b07-9284-c2f233830a5b,2236438129,7926867042015896731
+777d3653-c132-52db-9a3c-d687ca0aad53,3181754164,13853636127059887603
+323b0f4d-1d14-90c8-b390-c206cb71bfdb,2150610896,13354428631138313880
+a12453c1-5532-3b7e-59dc-3f50ea6f4569,737811540,10368831935624428675
+2f55b34b-902a-4794-0493-80e9fd41fb95,3628685040,1222528387053587151
+eab413e4-769a-2ff5-0d18-c3a269c3ac4a,946028212,1810004891782896291
+f4b0501f-7177-261b-0dd4-6d5e358859a1,1859128821,1591084225341648572
+adfc4680-1d9e-30ab-c908-65964431d7c9,2915753512,6595222200021466738
+8d9103ca-f1b6-6fb7-6e86-9159cb328970,528970969,7441787992201099485
+eb582433-7eef-4eef-56b7-cef2b27ba611,2833924231,3539066758357846207
+40246bf4-c7b0-8bb3-fa73-9f73df9f2605,2665310240,7474046622324791637
+b3784729-ed5e-d329-451a-4ee570efdf72,158589203,3544846017485111286
+69c199b1-0fdf-579a-4ffa-03ebed262bf5,936890959,10183953193871516642
+be21fd40-913d-6ff5-fd08-b796301a4f1d,4120105537,3606536431778516957
+b6ca731d-81fe-68a9-d253-448a968dfd4f,3857282220,16629175967668584155
+1f58b149-d217-a6de-80e7-b2001e5b2b23,23235687,7619644176005696124
+561506fa-3c04-9cda-5193-3165ac1e3b25,2536652781,16853662204822601236
+2eb20401-bfde-9187-d954-8ec92fb1ed4b,2240092896,7737966365428421810
+fa800e5c-eed4-4bce-9010-292c9daf32fe,1269430883,6524094567624710509
+2c41196a-c3cd-b445-fb92-6a55515adc89,130455165,8223119272363340837
+3438eeb2-5533-c918-6d0c-09a1313c6173,538048181,14595960963572242882
+a87edbfe-455e-fef2-2aec-0578464a7fdf,2005803294,1765793283251253013
+794dfa12-606d-9ab0-02f1-9d55ad91117a,3145469300,2421841618560723923
+1ea9d7f0-ad35-d700-9bfb-d8cc3679d6c8,1590852811,2903655704125489741
+dc14bee5-3445-bd38-15c1-f34ed3c344cb,2124122239,2916096909331562656
+fa56cede-f8d2-fcc4-b45a-da5217dbde61,3211507621,13382884671782358987
+1172522b-2e7a-2cab-1584-c254d3edadc6,972167203,1952742637459175621
+53146079-c8aa-c5bf-56dd-8aa6bf71ee0f,3006352337,17929331449464290103
+6922996c-1b3c-ce6f-b8f5-5554f8572ccd,1589121903,12063973758163521339
+a6a4d910-897a-83bd-723a-b9d82827b242,2698618023,16822751834468646829
+a2b22d3d-c1d8-34a4-9812-6c73362da5ba,4124347838,13367441447898164073
+a6a36879-5a71-aa56-f193-0950601f5e29,3842994170,10029237202953357487
+973780cc-c87e-60bd-417c-e2a81d32dee1,436950913,15736324223661454799
+edeafcf1-bb02-5d41-82b8-77881edc2611,3284527957,5840181004787365240
+6c639bcf-2b78-81e5-6189-0441c00c1fcc,3853390234,16515096789330801658
+e46d46f0-457e-594c-20b8-a1f4d097f1c4,3803227606,2487614968502573888
+ed7696f2-83c1-c7e9-2c37-bcc276f914ec,2411930564,3572850134114419428
+c0e19596-5f39-9b42-3200-bee4eb96506e,2020349214,2481875747622106676
+0ec0d36b-73aa-81d4-c7f5-6c9a31d5005d,2801044339,6944102923949787735
+f8cd6a06-61bf-29f9-5860-394524910766,3026130700,6922960017922410266
+e804c0f3-edf9-8708-395b-040de398d1a6,135441173,13291727497943297929
+c9f1fd5c-7e67-aceb-249a-5ee01ac2404a,631498833,6967954305106173416
+79927c6f-438c-acc8-379f-de25ecb9e960,3371303696,6086558034648897843
+11b1590d-1ecd-21f0-4b54-8932492686d8,1703939150,18304150625002953590
+81742aed-5610-e78f-374a-494f1900febe,2506043376,9419296383208692164
+5f17c7c2-f97d-f716-c223-3ab8bd5a5456,547380862,5522756555333193277
+cb82cba3-cb90-ffcb-b212-1c0874a7ba30,27352360,16715557838048159484
+0500b308-34c1-381d-02ec-fcbc0bc48165,1894302942,6853762383694954550
+2382b62f-8dff-cf3c-9110-562bb82e3ef5,214701949,3871547551879876968
+e49d63fd-7974-a150-8fcc-68360f4d3326,356804033,1159851928296969800
+a13ba51e-e6a2-6f9d-d55f-cf24c882c011,238920580,17354719200038378216
+f64b02b4-9c88-ad66-c80b-9e1e16d0c3e9,1593418156,14875852647297733758
+35f7be3b-1d22-3fe4-32ba-d99719adafb0,2872834453,10050831355455437721
+c90d7424-4c86-61fd-42a1-edca50510d4e,3502813993,15056243504237115528
+1f92bbc5-eb68-652a-bb8c-142be8892998,2921343253,4290792904978417325
+874a922d-5932-f2bd-65be-ed7f03da2978,3294200119,6115098424431960273
+73d11064-a452-93f9-fc81-b2a1b79e495c,617851276,8475448919014882377
+ef81129d-7e08-31d5-cf4c-a1203938b8a6,3452142015,4596654803237674957
+46a0fac6-d5ad-1a12-88f2-8ac715be1900,3721146047,10826358474639719181
+a4cf436e-3159-824a-8446-02303a2204a0,3952637378,14353480366679205764
+d8eab8fd-bd25-96d0-de1e-ecaf6f136e29,2459862332,12386696022806128798
+966ebfca-d379-55f4-9d0c-240a52791d60,4152627883,4404123372842013456
+c08a476c-90da-3173-efff-798ab86f0f20,2591742625,15677601788186240602
+f93cc9ae-7f1c-89e9-2f4e-2b65eda5ed8d,3473928319,7615035739863081822
+ac241d50-0c65-3941-1182-a44e3beb57b1,2461351474,5208174027542860593
+84856ff3-115b-9e66-27ee-abe058e61625,164767517,13805925256920763787
+e5a35208-8e9b-5411-fd1b-369e521935a5,1998289256,5758499801925394174
+2e15c9e6-7155-8b6f-9806-ac5b072ce626,3600635116,7242480541432552156
+fe12c856-6743-0bfa-f371-562801622b58,3191396988,735546110992919957
+c08d29fb-16ae-e021-78c1-ae905d961f63,1719627251,3354203755760609271
+3efe530d-589a-3797-d19d-c31f2769c4b9,2157252276,13551160868541193707
+be87e4db-f960-1f6f-11e8-4da3e284f230,2533410543,6049087360944580777
+950a2109-b45c-9300-0376-0739ebd56e28,912913089,8315198998618454410
+abcaf840-d01f-d9a8-e08c-b1dd1c069178,2831233498,6504709188121310758
+25f72790-6879-ce88-58cf-7f6545e9b85e,3123586174,14670767398967009714
+41b1927f-91b7-5c84-5b7e-da979af0d579,1870905300,1103665425913219040
+ed662d3f-7a85-233f-d2ff-e9838c182469,3535215920,11400914038925389091
+13a8a2a3-a16a-f6bc-482a-81bc5637b089,1723078964,9201525704253575443
+e7649e03-bc7f-a0a5-dd7c-d1c42a034eeb,4231069952,5941538424541816738
+a092f144-2998-720c-9649-901e5dbae50e,1328239325,15319310361382901249
+6e8fbb61-019a-399d-a69e-eaa0745d12cd,1504727669,5241736532894999072
+a742e3e0-21a0-fc5c-a5bc-6be1ac649e83,82151165,15095102660607626554
+5857edb1-c049-ff00-1bee-23e9c8ec4666,215696365,1145395537905459254
+02188e01-0fd6-fed8-f4b5-a1ad005bc89f,1310332273,17798207252629787557
+11b561b8-ac82-ccc4-dc4c-a59a1958c32f,402211558,15162455621574475765
+93adc780-4e90-e015-b4bb-2167222722f2,1519454989,15369082871798705184
+a8265c5d-71fd-28fc-5bc0-a8a203dc5a4c,3521274360,5116044472269085085
+02dd05e4-50b5-c344-913a-73bfcc334e8c,267647197,10457087770883836916
+44c29ba1-629b-1ead-1990-60488ca5c35e,3065451514,37395995944342219
+0291375c-b336-ab65-9398-0d1a910b0139,2562100130,16899643446382960304
+b7b17781-d20e-7ad2-532d-3d7885b52a23,540416767,17743868013262683204
+e02cafff-6cd3-b1d0-59db-5bcfbf2e12a0,2947325143,2089945496253544941
+59af42bd-5ed4-25b0-caf2-324228912eaa,2782698065,17594684007453737422
+8c73a2f4-0a51-c00f-8f59-123e97cf05b8,1684279732,5334101168644124864
+a4ca366c-4a50-4c96-d91e-046aa0f9c8df,1287462133,11975049457774947086
+8691226e-1bb8-2dfd-136a-833537025449,4226692578,3626120513595399934
+c76452d8-ff60-e7b5-bd7c-ac172863157c,1227566903,13748645854968453800
+a73c60a2-4ed0-bfa2-2f3d-25b27de510d0,3322676594,11393283526660577214
+c44d061c-c8c9-826d-b5a9-71f0bb276bc8,1847704603,12764234400662686943
+ec187cea-6c9b-2a27-c267-3b250e386b7d,1266302273,6389938158514746389
+81a4cb55-8ac2-4b4f-79b4-03e9e5d4e532,2027158899,9541641143118562343
+1eef1c39-5e85-6c3a-3494-140045bc024c,2421263485,16953265072294337662
+94fb81f7-fc35-b83d-a4f6-aa5f49561b91,81451856,16667463737078409014
+c26acfdd-892e-f402-8990-6be41172fc90,4008295354,16564753995049047031
+03eaae99-437f-d557-28a4-94e4b83103b6,3157828071,2470852437822754601
+b732e8b1-20c6-91f9-c0a8-765039c6d276,3722043097,16872993700663703819
+59c4e84e-83b1-79db-928a-63590147b3a1,2398508324,3322604709159690139
+8117e76d-d056-0ba3-ca48-d12a312fbcfa,1195490137,5744131268546054319
+e72d818c-8a59-3003-b0d2-f77e9caa265b,2738871835,12541971787894300723
+86a87d9b-3eaa-3a3d-603b-ee7beccec1d3,927442933,3509610774944385041
+14f5e3e3-1bf4-1385-97f7-752586fd8532,3067713115,10238313416237786994
+2a9b5746-7b6c-b8f5-f249-07dbe77491b5,2547258734,17493394453541725455
+f366c162-9fe8-4f16-4e0e-a7bfc1a2b767,2141526056,11006080811232466701
+f9119d68-d859-864b-c7a0-45a2cacd30f2,2346194224,2245589567911185099
+ffdb6c3c-0be4-8b22-2400-177fafba10c7,3279138514,10399323016202324423
+71f71895-60e5-9d4a-c093-48a5a24a5990,3643502854,2932972323344441067
+c18005bf-08ab-0f75-42be-c67451817f47,2516049554,1659609532000329484
+53bf2ae8-a47d-f4d2-af14-04e7cbaf53df,2443132769,16375441678760623705
+c494e924-4ab3-0c12-b67b-d5b06a567fa8,2605259723,7243472893176758299
+3c2e5304-bddf-ee8b-7d9a-975420ecb88c,1919040519,13529769509286396938
+e3089141-82bd-e27a-2615-cda9028beb25,2702274066,5553081533299191587
+0ad97a42-3a9f-f25d-c33e-7938127e4e08,3741939162,949471370839981408
+5eeb1b0a-91ee-9eac-0c23-f5543955f70c,1936267624,9723374364273951317
+f55b668f-4634-1b38-4923-d98f3d7fd0e0,514683324,14255370692336105689
+34a23e03-f40c-6a27-b36d-d1dc4bcd9ee6,859287148,2732510645071112978
+f1ef53f9-7d8b-0f9a-5f23-b76fa05ba967,3128755044,1019981780131371869
+8350b468-76b6-0952-0d02-adbd0adc9ce6,3565528206,7246575123837009136
+9ba27399-0f3c-8a3a-1db5-f269969725a5,3125533855,7418971937130146692
+857807ae-11e6-446a-f4fe-32f15322a090,1812177325,17364341299990538774
+30ba3f5a-22a6-f775-8df6-d354858c7735,2087499997,7149883901519946335
+a008d008-c3a3-ad92-23c6-e35e0c7fc836,1181080405,10085987793107011087
+0186036e-7b12-20b7-dba2-87a7722f0232,877976001,16498788086787388301
+7c1f4c81-ef56-7ab0-14eb-5758cc12262d,2086586854,17457104112209130211
+91c15ddb-0947-d7c0-caea-7a02736bfac4,3877506566,651354257198437455
+668bdeb4-b92a-51f0-6fa4-26612a9a847d,1937727128,6504512948196847375
+e0f3741a-646e-edd1-ce3a-f5ef26f7011d,2515311745,8555126367824626538
+85d569b1-1b7e-762c-3e80-8ed9b50211f8,1040235899,7343009564741206917
+14df30cb-9a7d-7a4a-2c5d-b11324feb304,3654820255,15884738518042741097
+9516d5eb-1780-3f21-a441-37dffba151b7,3045470241,665196946658972688
+4a963420-65e2-8423-fc5b-a69fed1ca441,632133812,6075155052149797203
+9f448c4e-2879-f003-dd49-e98f8f5be0ca,2244399510,4961249909799623041
+f1dca25c-3380-3c7c-6985-6875761e1521,26799566,3790318604507353602
+68ba9d7d-5569-44ff-85fc-32dad7422edc,2724870943,4814496778563744491
+6f166f74-8602-eabf-7305-dd42eeb2d7a1,625889325,2900470848882278039
+a773313e-d00c-f8c9-d043-2fb3bc8667f8,3889883636,5838762190418490379
+1432771b-86ca-41f5-5a27-a2de85e66555,681749459,8512247641866728155
+7e45b79c-19c6-1616-cd9b-e13e0cf93b92,4132110465,14549317830472450008
+d71f737c-09d2-2cc3-e6b7-96b7fef9e1f2,415386389,13766702838069443925
+7f0bed98-a268-8b60-2894-9fa5a28646d1,1605115992,17798617875895172987
+224dcfbe-2a7a-7bf2-7f9a-f34339f89bc9,3281232877,8885382186793546271
+3fee17f3-c2b9-b1d0-8698-5ec15ad6ca43,3539985504,6739781829806252132
+31a0788c-5c48-f9fe-b44c-beace78ac2ba,1697657680,13440756788871036967
+8a71cf31-aa7b-adfa-d90c-46ddd0f6a094,2748608301,15965535648680655578
+7e239787-8061-6e21-a530-168bbaf0f4b2,3858918563,1072839503071545993
+057716b8-9520-e171-195f-67b693d7c199,835815955,8349723923258493576
+93ca3bd0-0e54-0d62-5aef-c1136edb6d6a,250207276,8471119919606845992
+4603484d-2922-8906-5f4f-5f67e93b4ac7,1526152027,2568633178247601564
+892fc52e-e2fa-8bea-2d9e-fb2a53d9c69d,2397569101,10422382875539490722
+ba0852fa-9fb9-2f01-f8c9-3c734d43bcfa,69493484,11223139973436675146
+218afdc6-0f83-407c-2ceb-8226d206ca9a,2640771331,17808107823726997857
+5e4ddee2-1a93-f055-fdd9-e70a07a562ab,75806911,2617986677349226479
+38c88d3d-9885-5f87-9421-e9c4ec91a49c,3569122917,15585400722326965637
+8a3c833d-2fda-46ae-3b6a-1ec8005af80c,3818103203,3283219010203305286
+2c907389-0554-8f9e-175f-f969e098154f,1448937456,1134467888902703839
+0492facd-41fd-417d-80f6-871281b05594,1301772699,12882264529468000746
+c3a27b19-d519-d6b3-b5ab-024d3ec070b7,1266056436,1983498535845090849
+0ce3cb6e-4128-e631-fe9d-22d6ada35ba8,1120358566,11288969016976658887
+a241b4c0-69cc-d095-c833-845b8399a68a,1031763087,12786514230487552034
+7f97bb04-cdab-dcd6-c853-eceb82f51832,390146783,12761515080005866736
+5ab47140-8a80-7d8b-ba20-410840798753,916388815,16864256936605960671
+0e97867c-9d96-f315-f417-0a0660da570c,1674091118,12814909108839807187
+ab1e27fe-4be0-ba9e-de1c-a44f1b4a67e1,743036218,12350323070739659735
+1c66f282-0117-c669-f7ad-a226f49db68f,2196663291,7271425165880521905
+1cf6fbbf-c64e-0548-fc18-5a5b0d403297,241347433,14780999614049118350
+034d5eb0-e24d-55a6-6655-75b4ba456074,695506388,5555495066514923025
+a7a23da7-54bb-faea-bbb4-b925e8ab23e5,2134093640,3246768135390870790
+8c35be24-38c4-707e-5a46-31cad53be831,333189904,15153934586033074653
+27948f78-294c-aa74-768f-50c4b2124399,4017974951,1157547403205700238
+5e83743a-ddbd-7d31-72eb-a43da98d6d81,3151566393,12611803764829637945
+a48ad852-8ef6-8c20-0d5b-2bb7789d3ab7,361777065,5148975821099362277
+c75462f0-925b-88ee-1a29-feace5a71ba3,4076191739,13109123514659478184
+793a2a45-911e-d5cd-1568-a056f483b431,2367923385,1668609623750726222
+198ddd13-88b4-72f6-3db5-c1f3cb78663d,1475369350,3739719092996853612
+0f474ecc-5b84-b524-62fe-22d26dff4853,2177880414,18130218113913787295
+a98bf53d-bb0f-aeae-9b17-bf5a1b2d37c1,1701088836,3583565546036695453
+f98edc56-a797-369a-e3ac-2724a3acbce1,4207182867,8666633406011232314
+26d9db1a-1eec-e0d3-14c4-ce73e8bb918c,2504172041,2845427851847203537
+45010544-dd48-bd90-8b18-304cfe6eeb5c,774796652,4027314239124917772
+4740b7e3-90dc-b296-2591-d89ffc4903e7,1764306384,4753436382879227135
+302c926f-c4a1-407c-1031-0f37ccb94e14,3889696185,4418692159033962149
+30b0d800-a536-ca56-cca3-ac8f63d2f490,3975727265,7558139512193587681
+6aaf52db-d74a-8bc5-f847-f714576fd22b,3080154940,18388943457999043238
+bf3d216f-5a80-4927-0d12-6fbb8d3e6003,211080924,10967754489567491683
+24d1c438-5398-4c89-6137-375f5a2115e5,3054384480,7399319079886458505
+222c03df-052c-0bf3-b155-ddb5a3362409,1932856818,6861759202934384103
+348ff111-4ab6-1f1f-8bcf-6f144195c53d,3310857266,10508541478719768329
+8babdf47-83d0-1b64-1d58-e62729ba37c4,436823371,16275440908358502397
+eac57462-74f7-6a92-0035-9ca7c65377c4,42818283,10912763011809711239
+7479179a-c828-924b-885b-cb446edd4ffa,4080160171,8144292695018265002
+f5fb02ed-7698-2c81-e01c-0e54fb6f52e2,1373658040,5490990566294819076
+d5c5eee3-8f7e-d754-535a-6d94054cd155,3615052793,7611118547368917583
+9f1010e9-a1d1-e1d7-cc3e-4d886409678b,2159636277,14249683841616548302
+3e4904ee-962f-c606-8c14-0d1c7093707a,1483757516,14369666068465882990
+88274679-7337-80a4-34b3-1e04a1984658,4152153308,9196189629922003681
+6d89cbff-f493-526b-9705-3bce0045ab77,3694030401,11285468398074061615
+4dd6309d-3d3e-da79-8087-7d29817805ec,3741784109,4924805306580812916
+84c46d8b-df89-089c-53f4-305e8168e85c,2106035146,13796936093934614827
+f0c129dc-17c2-0a8c-93e0-ec7ffba50620,2617213997,13990623661860885554
+501f2b60-a9ae-d341-c4ef-22873d83f9d3,1055641321,2765769557434615853
+5335b58a-a907-43c8-1515-34f45c207fc4,2862396341,10420836765536509130
+1e176910-1606-8505-15a3-96dcfa3ff65f,1362027335,4387549008838929711
+c3e3d5ab-30d9-afb5-ae59-dd5ea734a120,25177358,12736305391848676247
+8d92fc87-51d7-68f7-0717-2f5a14dcb129,4259621657,5177473563725927226
+7259e314-d815-0101-7713-aa529153835f,2230026491,1757193822011405094
+73124d7e-2239-30ce-f2a5-1836eb4562bd,554539182,14982692281005390263
+8359bd43-3806-1f45-66ac-4e7b31310744,66846570,13468727846175064195
+e515012b-f109-b8db-6810-670e1fc6a27c,3700770450,16921196299851864623
+65abed4e-4092-651f-8bbd-f154c009ee21,3051599223,1324144400848242353
+9e68b390-cb88-6363-187f-21f03ee5413b,2162165186,15834570175311967210
+c51a71ba-5477-d6b5-5b74-b810640956e8,3161582061,8176940331350699015
+17e29af0-ea4f-66dc-075d-71d256d4273d,626203541,13254469298231959531
+86eb5d9e-3b9c-75ba-60c9-f95c87a3171e,1312186790,13785178751920455894
+29ebd281-d19a-078c-c49b-ab6423550a2d,1650137430,1234789490420195772
+16d1f2be-e994-0a3c-38d8-25274fc0af27,2127090797,13530425232258367814
+844999b0-cd99-ca0f-58fa-6d3108ddf849,2454091061,8010774111875499212
+86daf533-d732-d0a6-d52c-6a12c6605138,2733071381,3932227524707342113
+2198a2db-35a3-42e7-fbc1-ce2b5546c050,3967106479,15359107553941651199
+872deb42-66da-670e-0270-33548e83aa43,1633264372,10277976016667535301
+41648fcd-44fd-49d8-8ca0-0effbecfb614,4099628007,17053005571670435555
+55e294ea-19ff-0118-9526-83995172b20c,1110714615,4268015788753356717
+b0c2d9b4-483c-4930-ab20-4f73a30e45e3,1969697359,217859053514513441
+a2cba019-1f2c-b9a1-f07b-cfe15292f9e8,4137881089,15998650306027180113
+04aaf94c-18df-faa8-2905-6f33ce666f0a,3942776968,1478737139398274521
+28fdf081-790f-5482-d9d3-19773c59aebf,374990939,9675792812324379688
+c876890d-4d67-ca6c-908b-9b07f694ef92,2536047879,3919405881317543673
+b88b19ab-f478-eb41-204a-17f378743d54,1176964633,6755971860602715685
+b9eb22a3-e3fe-31f7-fae6-22a37533c03e,2227578178,13233759487395404288
+7f8b63b6-8805-cb15-a2e7-a25ac8d53381,1947665150,15666782990325101505
+b318061e-e2ab-7f64-e1fb-9faf2b22ee46,2689865324,10553402314880635314
+fb170fcd-3414-68e8-7145-59f15a6344f8,2378579542,2030022794636155619
+379f4810-c259-f1b6-49c3-0a3ac3456c2d,919209127,12494617954296327163
+55239ab0-6346-85d6-4982-5a91b2b007ac,3043537215,8475017949876841931
+02854b0d-5fc0-df99-930a-607916e982af,4019602389,1373006038602359368
+7a80e2dc-6060-d125-0189-8b14a1550e28,855548505,9682650463815696574
+3985b06f-5198-8b75-f509-b4663921c8ed,4261631691,2037277294834311069
+2acc67fd-aa61-4532-7ea1-41155d6c6263,4036682228,15177553499485133659
+46068ec2-ee89-756e-7d7f-0b41db0e63d2,2466202905,16128549446803945007
+7760d600-663c-9f22-e269-72bcf3ed59b0,2855974474,9269389302704876403
+a5a6fe33-fd48-2e90-a4dc-3f71d5f3b4c3,2241212871,471297160044391786
+d340af99-a5ea-6ef2-fd57-834223e01c0e,1474850063,3443306328574723180
+f66597cf-544a-2dca-6214-5900a4df3094,2488245235,14456099735542420898
+4071ceb1-528c-3dcd-d68c-e9f550091416,538266778,689449921869525815
+52d80097-7519-88c2-af5a-c48f9c54f46b,1452810125,9075667481140490162
+9e39fc38-0f50-0773-0794-5f5e772704a8,1742735354,10212617035007235843
+9b0cd0f4-56f4-2bb4-56a5-fd5480429521,1602339897,1352971466790662549
+bc685437-524d-3cee-870a-377668a13244,3546281912,7060090665995664320
+e874260b-c975-1523-8a7e-ebb4a1c055e2,4140876631,11337106157915781252
+79e8499e-f27b-6c60-3749-14121d8ce846,2452580245,6263764665013442546
+69baa001-6c18-9c4e-81af-3c67f625b085,2203886768,9513419564076616711
+0bc1e2a2-119a-5fee-3238-f186163e7f45,91496146,12424964438908987266
+64ab46ee-e31e-d8f2-17ce-c85a4e965191,2849805056,11853374054427835471
+250eaf43-cda5-bf96-d6df-c7df01398c16,1577016692,5854095513371068446
+65ea4d99-bde4-0684-7f58-b0deba5dcef1,2412406585,97091829326708987
+4037b8d7-05fd-71ee-186c-44a692792e99,3106241870,11182832917377373753
+efeb6e91-a078-b78d-065c-47f87261ed71,3021710397,303496507904734539
+96d65082-017e-bd3c-c3e4-02b07ebb40a5,655041133,4810272143133290824
+25cb1b9f-21fd-da1a-4b51-edbe73f91f50,3923713991,2096068726452191228
+0256c06b-ec31-9d0a-51f2-85b39d76155b,2804299859,5326939595876276158
+ce0f2f47-e47e-b44d-7c0d-126c9cfcc80e,3869797858,12866244444847223626
+04e40801-a0ee-ba8c-c65d-4d4dcaedae80,1800234852,16513853230605731981
+a4ccaebe-94bd-3e9d-bc21-f8268de7e2fd,1739496450,3717007068103600097
+dfc94b6b-f2f4-5ce6-a034-1745a98ef2f3,2869513335,11591227878573532993
+fbd02228-07f5-6ffa-1a0c-2de4c2b10f2a,3424340864,18422927068626033022
+8a2151d5-d337-c7d2-b803-40363869c966,2495050484,8491655637871517773
+3dc7e0e8-bb46-0511-7822-c3e7f29d5ebb,855385169,13506218416665128967
+0323a178-a2d1-2bb3-ab2b-a9ecca31f3b4,2596762182,9582839330129523917
+637c1820-e472-9055-8fcb-75f305749bbf,866855531,16487314391434851368
+f9fcafb6-ba2d-b6e8-c069-cdb7dca44735,1188321584,466834145274454072
+ce0d7b8c-8d7d-8672-8123-5391ced760ef,2782579917,16377165047085559546
+ba68ca3e-1c9c-8ddc-1541-b7ea19c31480,2739518378,13247062809438254773
+e3f62e47-27bb-9a6a-31b1-c99dca4e0645,306279994,17565042605887236667
+db26312c-442b-4572-d3f1-0d65c256d00d,1108073143,953078860938891059
+58f27b9c-cde9-053b-0f78-77522dbefaf8,220891625,17491382333541769037
+a49ac40d-8c85-f608-21e0-115977f989b8,2114607251,13201821591464567596
+80649685-721a-6dda-c9cf-11e03c6b2c1a,913754648,4266598543828835562
+b31dc640-81a7-84b2-0c59-0ef7e91f1c8b,1476137433,10383308043746022942
+4c1b69b5-a983-a427-6f9f-846e5c9320bf,2065775008,12760740314054911483
+a724f9ee-dc26-278c-c51d-1970d9e7d299,2511399091,5795940400097145616
+3e2cef7a-2a0a-e37a-a377-a5f437aaa61c,493911656,9514421129129095386
+e1d75408-7d62-1a9e-7982-3f842b088139,2347921487,3618309983780415926
+41750e30-db50-29ce-0b97-a85c7ca17c48,50265478,4047814051084930244
+0c236d10-ff72-8681-802a-4ecc067023bd,3012966379,11262129339696135770
+4714b2ba-07f1-e999-b15c-3c83a512ee94,981939851,16441756204850176836
+367fab5b-6cc6-c05a-4a1e-28fa8d5f8db0,2928080893,7903865370250970673
+4bfc4ebe-5d26-2e83-7710-ec37b81b3c4b,2815050917,9278247562142921648
+14cd5cba-27ec-c402-f685-eb4e3d367ff7,3465720780,5675863884589321138
+2c66365c-f3cd-6a6c-7cd5-2fd25eea95b8,2236685811,5660124174600202989
+6226be18-cfac-2d9d-2faf-e0e770adb9e7,708907273,5473201507741718122
+5998c462-6118-0826-467c-f79ad552b2d8,62912456,14260150724336898569
+2713b861-a5ff-63be-1803-53c3d74ae8ae,2544506107,8971120810629053969
+71f1a768-dd53-b4a6-0d73-8b51802adb8c,972408477,12955927494434498814
+48536029-6b03-092a-474b-1dd0fe8bfd84,131331875,12621467820319820114
+fadffb9e-626e-4e4b-fe6a-8552ac49835d,1266594378,2450479006093284333
+a2f2523f-add9-f2ca-cc24-09a2d296572b,48016655,12105852458081214039
+6b57b4c6-b546-6f88-1cb2-6d6fd5f2b1f5,2057899089,5899768053321727836
+c22ec48c-00f2-207d-3ca5-9ee6f5278b57,1517118439,16347091319451045496
+cd918620-d046-6874-873d-90e007fa9387,3099918226,3790314541032055814
+150f4482-55cc-9f34-a0f3-ca8423d6ed50,2161381456,8077211173438478525
+54ed45a3-8bda-e6b1-5899-fca54f8755cd,1936320608,954340577751935706
+82be6d45-16b7-710a-3629-141f3465c13b,848611558,13882617738490309855
+c8157f1a-afe5-c0df-fa09-f67ae5be6468,1933581733,102337788470893300
+b7726b02-74c4-72e2-66bd-883ae9418b9e,367882562,9684144112849063767
+f5672512-e73c-603a-62b5-bcef5ccb87af,3021642193,18363459964004274679
+d0f9e47d-1aca-b1ab-dab3-6954412cff0b,2705209249,11381186471326876376
+6ff6adf2-725a-9ad6-4732-ec1f46c9cee7,3377718670,12290736763861662089
+bd84231b-b9fa-f2e4-1413-70c768e614ff,2723485076,5566841236528715156
+72bcbc28-1f6c-c267-1ca2-18bf720f9cab,1707373385,15396022795987994509
+0ad0d293-4ecb-f2fa-304d-b78e86047880,2891975544,12224488150796635114
+c89fadab-79e4-580f-a2c8-0b89caa76cc6,1172942049,11887329889310617060
+7cc0d8c6-4a19-254d-b3f7-62b9ed431fdc,1137697856,16868189122554596728
+d2ef20b3-3587-df63-a064-4ba7c0ebb68a,211085037,986967388772249641
+98053c95-3b18-f138-b817-ac5a2c1668c1,2341870494,2021662145195237500
+76256aae-7489-57a6-2d8a-761074d8a1f3,170969872,4218841359784370010
+29bb9364-bd7d-4137-1bbe-2e42c20aa6c3,712375032,4940586843092496531
+610023c5-5145-fea7-ca28-9babcdb7041a,2282699639,12587400212696130344
+9cb737db-c76a-4e5c-89ef-bf95dcb62de7,496101777,2260211492693186920
+876786c4-a7a2-6b09-c127-8624d76cce63,1165546970,9108714387240349315
+f0bfe480-e432-3f04-f23e-4ea87db7cccf,3036386021,1542114243313421489
+8311ecf0-8841-7ff6-21d8-502e4037be8d,2905967781,4068969346913037886
+745c66c8-7db3-7367-db5e-4b6e6d8471bf,1989028837,16951873656276961836
+a3662300-b716-a335-6e14-172727548c77,1891915799,11925405563609957525
+940ac4e8-b012-aba8-cb61-db915ea4e44a,3710803249,11145800817703227897
+796c9390-35fc-b15d-6537-9701d98afd73,3091397459,16225851464015075426
+ada9e3af-0c65-6d16-570f-ba8c388be578,4045924427,15896723784251969166
+c0cca100-924b-65c9-b605-b76b098a5711,1126029831,1022528719073011616
+cffb1753-55e0-e11a-1d0e-abb0b7fb45dd,2713332667,17408511153505237461
+7d7f9053-2265-d238-7dad-4f93e8825e90,1101402912,8548997076780663097
+c8047916-4553-df29-c337-fd6904fe4d45,2938771712,8322018838325164593
+babfcf18-0276-e30b-bc46-32e4e3718a90,247270138,10121984123471212352
+c6cd51d3-f652-40e3-3bb5-377d8866b845,3040255977,3558078509610667939
+fe4e6d0b-2b53-0b9b-89c5-6a6ae65b30f4,408531039,233141597532760958
+754ab714-8ba6-ed49-f186-ac4276b4cfd8,2036320791,10685395904349263041
+123f32b5-ebec-4cad-2669-fe5bf874da8c,1805997493,15301697029810544342
+d73b09fa-410c-5216-c436-c4960beb6019,1003206606,4837297113837929977
+bfacb42e-6410-6517-6419-873e1ea213b9,1850727586,11007471454803557934
+a5fba126-5e0f-d355-40c1-fad0a3767a1c,1336613982,6682092526650381097
+df69c85d-ea6d-c030-da81-f9a1a991aa04,2755009446,8207568719135350309
+a1179c4c-6b26-e980-f089-914138e35fff,3274180172,1502218256480957241
+2aee2314-1bfe-9491-f043-eec35ec951ee,1043409570,12122926804776306662
+73c4e827-d4b3-e339-9229-b8d1cc456ddb,4233722231,14129765113357138781
+521d4bfb-dc43-3a46-3053-56c60626dda5,3180701219,9863535271336952084
+1601a01d-f47a-80f9-b99a-9df44e7a1caa,878999025,9753802312094185496
+7c638587-2e0c-2265-43d3-7d3827a55096,1460774629,2052234784190009920
+dfb5d376-a5fa-21b0-a32c-efb6f4ab59a0,1080346895,572156689827615568
+dcf6ec36-1ab8-3442-66a6-bd88c69ea332,3226178844,12028021636507701530
+f4c41bb1-079f-b355-6ac1-d0956415a98a,1950419523,7619154910510584892
+9834c0a9-769b-3fb4-d447-a114a8545b89,2870081473,832985172645805246
+c4154b70-a802-ffb2-1d28-d9d436b6b23a,1166934305,13322266112947817810
+a033efa2-ab4f-bd5a-829d-ceda4b69f5c2,2536363231,10025784799329726491
+50c57729-5c4f-590a-de2a-f2def1264d03,2503663133,8764349431258637088
+6a24360e-e8c0-b329-5b34-14b3376b43a9,733240086,5875351888273520941
+858f3539-0c31-2a6c-4a64-a2a4864cf358,2873295343,9070103755347162162
+ca3ca40f-329a-8d18-5765-52d407bfd1d6,1589104590,760418557709922735
+06681a94-b834-9f4f-ef3d-a697c995b14c,3273282946,6399093609697648739
+602034cf-b2db-e2c4-2df0-4adb1b803cb1,861353888,16496300002073947550
+bd9ccae4-f213-bcb9-f286-baaac846605e,2983476311,12404682896820114135
+ecf184a0-0b45-c7f8-3a0f-d465be42b510,3230895983,15408780525228784347
+9c059440-a871-8c04-8f82-cca8a28d78e3,2066586362,1361944997048569260
+e7dca3ca-dd3e-718e-ae05-77326a68691e,2281163132,5470800758237960245
+261a9dfe-5961-e4de-ab28-3612f314b200,3155608869,14711012162248578605
+665fb53e-c45b-18b6-069a-9b5c0324e677,938140196,16898596446236819223
+02f18d69-583c-86bb-e547-a88b81b401e5,2072954588,13989706857485820184
+517248a8-80fc-8c76-883e-f3d32707fa37,2987759446,7171222936169585910
+ed6f06f2-cab3-3be3-0a0c-57b7efdf729b,3722157872,11933232099664036322
+f8c20c28-3b02-abad-1a3c-45a64946ee3e,3514194867,7040514038550390483
+25f18cfd-5120-1192-8f81-ca73a9824ddc,4088856774,7839510470717117521
+e124d737-ed4b-f883-9f67-37a40ae75a46,2686084799,14307663054930035399
+d75bf451-1293-8ce9-aef3-a8abc3a962b7,1490774296,16570027589826691727
+f3baf5b2-9aff-7f55-a516-3a902a779e53,2407707338,1376542842123387478
+69740276-aeb7-815c-5df0-fd5944ff05ff,3738289552,16551696075259119561
+b6249529-487d-9120-518e-9f7c0443cf76,195686954,1043017569593566776
+67f32890-5de0-22da-8c8f-573ba430cce9,3511404145,13873573102882420677
+69a57f01-140c-6961-c0ee-3c684d8d1e15,2961509862,156918024523157105
+11c8b356-185d-67f7-ac96-29c1952d47c0,377097179,779660058608382349
+ef8bfdff-5650-5707-c60a-d2ad7ab0ddcb,486944515,12532145103104963275
+b483e2cd-061c-52d7-5b95-04bebe8b1997,1062059484,15605633718373808532
+95ba1482-76fa-842b-abfd-520d3367eff6,3336772941,18100711159096999826
+98e11d84-fa29-64c9-eb1c-f6efb6500c71,3679009675,13110101688328604291
+d9ec525e-ab27-9f1b-5793-7e6550501dde,3147675947,1016514755523037844
+aa96bace-459f-73b5-db0e-f17ad162bdbc,3762797544,11638478665092704908
+74c69d8b-8218-0fc0-2e15-1e58a132e827,58536259,6047907846992878874
+aba4f0db-d5bc-249e-46b9-e014c120759b,2516562190,13280146245540792449
+79d060c9-357f-b135-b88d-8c00c7e9cce9,3403158066,2487666394498168290
+e407cc18-9d6f-ecf8-67de-715fc53a0138,278344088,16866413652967522020
+8cb64c2f-efea-cea0-1013-8a96a967ef22,2380024570,12207829930327697119
+c1e02755-635e-35bf-c7d4-0b1650c85ce2,197420849,7389305928550037667
+b2a72d18-3552-d245-a093-be1a353d255f,2377247936,5652491296095162834
+9445a700-2bd7-9cf0-0123-385c937fee96,3402025100,2721676099846216988
+5943596e-038f-4d42-547b-d84554644829,2541248135,12854154294874339288
+293051e7-5b49-b312-926c-b8c79d5db2f8,1978300565,16008816770366837235
+da7077d2-7b59-15a4-56b0-0f927cf2a84e,398477108,3921592920086910831
+c48e48b1-d642-f68a-165e-8c11ec8b1136,829962437,7847025874137938741
+18c3196a-d712-917c-d6b7-d43ffbac4150,4162738381,13201482280129459870
+645d1b2a-e3ec-943e-8e3d-df0bf668f7ac,795349271,9743842903528863787
+9742550a-dfb0-ab8f-4f7b-5612acc8e8ab,2115097341,3612028852581623931
+66a9cb66-8fa6-af87-48cc-f19d62368ac9,513469368,7756050085087090659
+e1de09d5-a1be-a1ef-8ca5-36d4d3e0bef5,1626673185,1196426869028516394
+c336596b-6937-0896-9461-286ed23695f0,2767828970,17748738691720231465
+3f60dd3f-8a9f-b5c6-20a7-f4632278cba5,3160440775,13878674536614942821
+7cb23edb-1474-2acb-30d4-be276fa917b4,941909636,13584920479701947462
+bcd628f5-f1d3-f4d0-e5bd-3297c4abd970,3431865591,4350229722758065781
+d474c665-61a7-8c1e-c3f4-614986b2a8c5,3581270514,6846485775604823369
+c0a3f8ae-02f6-c378-884c-76aaacc1d010,1595107575,17874342237117925289
+46a310cd-fe44-dd2c-9185-694ae2e52418,291344059,17872172530273626456
+a4142b0d-e61f-ef40-f342-aa7c2522a019,985658732,12179132563646328509
+343b052f-42f6-cd4a-5008-731ef6dd5933,3783225366,8355886015339605695
+d3d2be51-edb7-51d6-95d9-f160aee45c14,2378445575,3791020619694487702
+fca2c78d-61e5-de87-bb4a-b2df7ce39625,1423655340,2409861407588710127
+3aad43b8-708a-1cff-ad76-eef4b4d3a4d2,1225636980,7585749477660144389
+13d07f2d-573a-5f5e-3fc8-1706220e5723,2192921817,391726164156426183
+2cecca70-7fe3-77a9-1d44-bfbd0084c42a,2662445417,12994968979161280692
+67c91766-700e-1782-352d-2ae5e67cc4e6,1791421394,9401257664037528411
+695bf230-d804-a8ca-323d-52e583e65977,2842767740,5756534056955731161
+571d5b92-e501-df44-1332-9c2c99240cf7,4060420641,12404754741828991072
+a5319ac6-db29-2fa1-7f09-943d928d1e57,1490871508,16787476824649837096
+6cbc8ea0-32ab-d6d2-4399-dee7fc7b7427,570464708,15420210255838860125
+e3fc5696-4460-73db-4646-37a255205e8f,128102958,15930080647130882967
+0f897ccb-0699-45a3-d01b-ea5a498db121,2100787981,10647513743107767626
+cd92f62e-7eda-41e2-3344-7804a0890516,1726399211,267277243843913422
+01ba708f-92df-ceb2-84b0-9b8a0dda8ba9,1752825960,1531812518978735397
+a74b2553-6d7c-a4d7-ca3e-332e2995e6ee,3357015079,12756031150651178545
+d3a0020f-354e-056c-1ec2-aa61f1bfec16,3941805628,1443061030887772219
+2bdda97a-c875-2b65-f683-09887e3c1719,3949904147,12278999593954373765
+abf4972b-880f-3656-2886-eee59dfe0a3a,687934654,3076322166141529709
+ad004bd2-9cbc-cf86-00f8-093339d5acba,1849649824,4984187336721283972
+3ca531f8-0451-0cd5-d7ca-7999fd0c7bf2,2530392585,12948584812742598676
+2eb859a7-3eb9-91ec-545b-ffd67bfb730b,914946968,997726885300114466
+5078a4d0-4796-1e4f-e953-5b3cae470583,3231793049,17247833908219745457
+449773f9-9f0f-8304-8613-7e2a1482787d,410905654,622057069758628858
+85d44190-a08d-2f38-98cc-379519665103,291442106,8629874136987908492
+ae5c9881-a93c-042e-5631-29a74255f582,2280733846,11991269219711431328
+8e088922-76bf-09cc-58e0-b1030eeae17d,3859115665,14528901827993960793
+fac74db3-07b3-fde6-6d16-3c8155c0940c,1100742529,383203881878418554
+0e8672a8-8cf9-087e-8858-b3186a13a499,158901563,172985860182440872
+fa6cf3d5-5b3e-edee-bd29-8708aa5f3653,1091404234,1593024871226266140
+21597f87-d7d2-5415-785a-51608810b033,2742100892,16878073125047206207
+3f8c7adf-4e47-375b-0df2-0c1f69b084a6,895106533,10402254328169782171
+5b5c888f-e976-2a70-42bf-70babfc8e367,752984057,13015451151782185509
+4e976a49-c06f-08fa-9f9e-51fe0c7f4e77,1461363927,11361469203924023162
+36bce789-fcee-b49c-b97d-3285bdec0320,1394103763,5082549868161607442
+df82cde1-8484-29fe-65ed-c18d40e8b68d,3982067912,2835610315138578181
+a6596a4d-405a-09a3-3f38-64536996fa26,902365491,12663906194663001603
+f3d2e4a4-b7ae-c2b1-7af3-033f9efe2c9c,2895861380,5650632232509335896
+d77c0f6c-d5d1-8f35-3284-7b4876d1910b,3848473293,12914170049425679536
+7d94fd12-b8b2-73cd-a0b0-addb7990eedb,2327213346,10569694180125095562
+7c4f6818-6a61-eaa1-2e8d-a7cc8bc54576,2575546653,14132128715032570000
+da5d4597-425f-4056-7519-7f6f54c7a87f,513562240,903672256198669911
+3ca92f1f-bf47-b3c6-1b41-bb4cb6e9708b,232263051,4082576599617022058
+460e43f6-84b9-dc85-8a12-0a38fac866f3,171785571,16365294848448910759
+fe57484e-08e4-c5e2-1af1-e709d205d494,2564591348,9573078283365458416
+c985e740-c50c-1aac-3f56-c3647d682698,4291080103,12057359579577222714
+07977d2b-28c8-cf1a-64e0-76ed24668c79,2208684254,10017932654340648521
+bde8e4fd-aef1-75b5-c09e-c6ad585ccc0d,1537076506,4024922150280969839
+abeeb789-c607-6107-7b9e-24dc87287587,2462179468,4028948915734770039
+820c1e33-a089-8d8b-7aa3-6739e997777c,2297200094,3999522417867542527
+a6193df7-2e50-d42d-20ad-598988736f97,2870211298,10673919762961406975
+33c208bd-efcf-0e95-9061-b79b48e54ab0,3015829240,16824698293135439569
+caafa40b-26fd-3a7f-01f6-4be2ac0ad996,2643685389,2031281336151306497
+86c81057-9d79-1a77-4149-acde3a46adee,2507391426,10419710070718802155
+76966850-9fe4-32a5-9204-49c6fc4ab25f,1607663868,13916251724972141694
+3c6f1716-7602-0575-afb5-91018f46d9f2,3559521344,1469778506476187029
+a859b04f-c404-be0d-bcd0-92cab8d361c2,3110323670,987037584926257106
+fc8215dc-dc59-98de-a3de-83f2a4c4304c,1573850156,12447169627527334890
+5eaa6059-34a8-0a81-4ca7-6832ad5f7313,3414708171,916615393081159324
+04114366-7508-c237-3074-d90e1534e5a1,1910012732,12968371447330293365
+e70ab3bd-b5fc-2c81-4e8e-36663409e026,3650089416,6484130192035974564
+68b4d81f-5938-b343-c175-b5dc2b60040d,1565404021,2574283944059351728
+f1eae3ea-5936-6999-69cd-478a5ad2fb86,2845767288,17833233816882271328
+cf4dc49b-d24f-1082-9a05-aba97526cdb9,439883535,8570468761903964469
+72e2c44e-d0f0-87a7-f513-ee3b54e3a1e4,3746735784,1599189553309964845
+49ca5ca3-2919-6f41-7d3f-3acde663f53b,2175163522,15068783959891721079
+3fbed8c4-b64a-f901-cea5-daf28303a5d9,3915228609,8979773676703985107
+95d199f8-efbb-cbc4-5d8e-bbfb5bf7dadc,2725841489,6108631005802398384
+32fc8c62-1f7c-ecbd-19ee-fe29463740bf,556277417,8507262542702277424
+cde1a619-5835-b515-a3a2-856d31149e40,3853163868,5738137254902798802
+dd809fe3-54bc-04c6-42c4-cd524d41f264,139056562,3653010257905825325
+753f3914-da4d-02e7-37ef-2cf73aa72a1f,3832868148,8425724816065548438
+7ea22605-62e7-6805-96a0-b6beb9c920df,3611928422,14941777900893357957
+b9bdac7a-1513-0707-18ce-099c4d7f339e,557603345,2396776307263001897
+37a82022-1145-9e01-a25d-04cc22b012a8,340868241,12497351185417534999
+1f4ed2ba-a65d-f5d4-708e-114ee1b8cbae,1196072737,1129969771771224571
+3385972c-2be2-72cd-63b5-af70c6661998,182541095,16616909189723278008
+c981378f-14a6-bc67-251a-38baa3a87e25,1937757795,2646704547374856093
+920c0b2b-3f4b-6293-becd-caf1cf59078e,121273901,12303337503096801806
+fc10b42f-ad28-4117-ca14-bdaf54b46bfe,3265589119,7293969468455416791
+04a6b5ea-3441-d038-d28e-a54345e8ba3f,24837227,2313643591300859874
+46d56d2e-c5c3-6ce7-5e84-403d307b4578,3327273696,10297339073253723591
+a0d36564-077b-f3d0-d595-6e832ed6e564,682293134,2181582331438302631
+0f36ce9c-869b-04d3-c270-c5e4bb396e6d,4017278990,16943826464229525255
+dddf7798-137c-a1d4-a8ab-0af2d1bf09ee,2979701906,11077309313075467474
+1bb8172d-fcf4-6be9-a6eb-30566b046f2d,1801337157,3927409581964066327
+071b107e-df47-be31-d206-6744d7241c02,3577893447,15592134585521689249
+d980d978-d830-a6eb-8bdb-9d4b800b790f,3035327428,14884401240584106975
+e4fe17a3-4933-c61a-e8d5-4108eaf67a97,779116647,14275369443627485062
+65e03313-bf91-2645-a276-f71eb5d57dd3,849023356,15740932926454672583
+5829bdee-639c-cda2-7c79-16e9741bc6f8,4100508460,16841331281948258123
+d13ae709-dfce-4dbc-7087-cdb614db6d31,681628018,2592089611077305280
+79b9277c-0488-ea3d-a3f8-838cc470a310,3405246930,7834905889636066291
+7216c114-a560-6f97-8c80-1fdaf8617469,4076896695,8984105417268195620
+223bf73a-1587-db35-7b41-7095bc275dd7,3274223317,2681939484482286843
+6a376f7e-3ba4-6f97-25e6-bc95a52db4d0,1937785162,10745892737409039053
+5dfd5732-38bc-59bb-3184-c0bd7d792d5b,3581413059,16689284775836310147
+47ba4a1e-d2df-9016-2532-78816dc0a8ed,694485228,11732363917867491669
+56cc65a9-40bc-7b8c-f54b-3dfc7009c4d0,3138349439,7185320611793100639
+3c1d54ef-4c50-ba42-84c5-e4335a7e05b1,3811752433,17244995080299419370
+40e191d8-1c6d-9223-1e69-3b5673e76f0f,3036225952,7051151595755370126
+df203b2d-ab81-1aec-9cf5-50799f630c42,3919240376,9518584653603175672
+5b503270-7f2b-c378-1e05-353aadbd282f,2196194751,1116689526118089891
+1da13adc-f485-f93c-5527-5c2aaeedde59,1725279170,12003280061512393299
+189d6d73-2e46-c7bd-6447-0ea150f339a8,2760837623,5793103080875243080
+12233fef-38df-4096-a11a-659e790ad4c8,263095889,7109977598358436239
+ba20bca3-79da-1ad2-0ddd-3e2c35f0a85e,663018197,14405104502243656448
+e02704a0-8947-4ad2-9205-caf7d555ceb0,2049498107,8640960766395305941
+24e1bd5d-d95f-102d-acd3-fe0403f2b6e4,1634511295,17780101916290802757
+43aad949-49d0-0d64-3b4b-173b6424877b,2837106422,13517086302894518965
+5736623d-fa9d-a8d5-4600-1cf646c78e88,2792276290,459833849106071185
+c4c3930e-fe04-a3e2-e05a-9367bd9b4072,308545156,6381300244199653161
+80c20f69-7d0a-9f20-c5a6-2198dea95b52,3990920289,2195096045754417213
+886c2532-5ed8-af5f-0cdd-3014c1290edd,1383144119,15956261698466983833
+0dc1ea59-229c-502a-4ef9-e2bee6616ec2,2793045363,13978078456503987952
+c0aab9c1-59f6-cbbe-039c-9a5704dd9ffd,1030251409,9998473686418803197
+17d3ed8b-e6dd-da2f-ca9d-d1709c469aff,1386222233,17433768019725522771
+2f32d077-4445-1e83-a70e-0cd339ed8334,4225690198,8633632445053304359
+c306923b-1e36-3df6-6796-61e5f281f68f,2516696287,10084774310616833296
+732710a9-1018-4c68-218f-1fb5c05725af,2606158595,18028508856763147975
+9664aceb-7b30-3ef6-758f-38b9a2d34d81,4059949151,13431172920020035834
+c29f16d1-f608-f7f0-b244-55d556206a4d,1674231951,5221217596556934287
+67fa60fb-5dde-6bd0-ba14-945ef8e7f5e8,554782832,8360267783799110960
+ce8125c0-5eff-1a2f-7da7-eab1bcc83b21,2615933208,13695013819093683379
+a364510c-781e-7b7f-e767-e41a97bb7cce,634463284,16784244793632297908
+575486ea-ab25-ad67-2665-3af26f27a601,3003544707,14711555895773773465
+6cf18f23-00ef-c59a-f73e-fa0ea076976f,79925935,9904611891364823536
+183e75d2-e617-7ac3-021f-9353c93b4dc5,2772800048,15782492683993001870
+bd6be61c-6bce-261e-b514-c5e77014b0c1,3975549925,11220010685465526314
+8e2534c0-81dd-3994-1bca-e9d74b664f5c,3995778836,15664409615474641324
+c8a6317b-a16f-1942-9b6c-e78cda76f7d2,3214158241,4139579103984184153
+bb0765ee-3e17-a94f-6f97-a2dd141f9181,1985094070,14607330396497138262
+be311d98-71a1-b389-0235-ede4b216009e,604053671,7955585254602567469
+3fb787a1-1b47-31d0-46aa-84da05e0646f,1790247349,5143190564642084044
+d1d05db7-ba1f-c29b-4df5-3b180a5368fb,4231097669,4992581344538118397
+ae5d87bc-26eb-fcea-57fe-c0d95f0f0119,242905328,2771551898071806472
+f33b146f-aed3-195b-e28b-73f68ffc5485,3489372798,14134341933571163795
+bd84d778-f748-5558-3f17-1017e18638af,464624089,3201686545640617023
+bb4e21e9-accf-af18-80e2-199b116361ee,239669274,1344172598519884547
+20fcb71b-423a-30c3-006e-bc4284bf8d01,3401434170,4285266662352384131
+bb4a3c04-492f-9ef1-7543-2ee1fe0658b8,3452336160,13214585845714702910
+66129605-eb7a-615a-d93b-a16a8aed616d,1729266624,1742247967782960519
+d0ce11aa-c6c8-b05a-31ce-7ea8838c0979,1969645269,4040468469723056330
+1c976351-942c-6fe3-35f1-9d97f4db6315,131805984,1376799227899307930
+0bd51d46-bf52-e29b-e0fc-9859c8d32784,1150026217,4241378913739207276
+4554d775-ed28-fa09-117b-c771007e2c69,2603132053,17992893296482198545
+5301069c-df7c-610c-1666-da79b71a0f86,1549177572,8830111455425504568
+ca149b58-62c9-e5e6-0462-e6ea2bc91ab2,1429322437,12951847502939071727
+2b4e8764-5765-fc89-9d34-55e835383529,2298201218,7655706350522747174
+e3dba52a-330c-3fb6-e88e-87ef10ea79ab,941151413,1745223617547372189
+60df6ab7-8165-67d5-c0fb-c4cfcc779192,327965761,6965958823071607627
+446332df-503c-2f47-3988-cf4ef92fe304,2186558886,4352640949562710503
+cc3c6616-009f-719a-43fe-1eaf3b9e2561,1181773823,6949490700771158000
+e065407e-5e74-1952-d3bb-9ce6776ea234,2516057708,469624276107564913
+b83d7084-9ec8-fdf8-bebb-57e879067dd0,78177994,8595981661987383555
+72ba6144-2260-71c7-d77a-ab85d0e25c7e,3748483463,8474283731916790797
+e9b94709-0db6-5e53-628d-cbfdcc89404d,1008432005,10973246114486683258
+1aa986a0-df05-cb29-ede0-484f0b962ffc,2934286240,16366718894589677652
+407bf006-b753-b6a8-64c3-ec93bcb8cbaa,3370012644,2414012094898742295
+6ea5626e-4a89-0237-2621-f4bc86cb2b8f,4280107689,15980339455086374154
+75453767-b854-95ec-a003-c36308c5aedf,752407566,3696660903633926632
+d05f4e0b-30d0-ce30-97f6-f6d9afea42ef,1732344604,17077995876884179735
+d097636c-e9ea-311e-8591-73bdeb868e8f,1977277880,13407793787890180622
+fa48d073-6d8d-9215-fcaf-8d8d602a15fa,553681501,11264861440878435811
+8d808c77-9fde-97b1-c6ee-52b0d739b726,4056651534,1088682316376850858
+3e028d8e-0187-9a6e-1be7-d81244f2b994,1705147745,7710984515085356740
+0abffe25-8f23-be3b-53c0-aebadf305e79,1411847799,14320197098292589366
+f37cf114-2901-e89a-aaab-63ee1b5fe8dc,3296036110,8593536365764012372
+8e93b899-f4f1-7b22-1155-c218f990fb10,3192718416,14888327528116326181
+29c18ea4-4913-8e10-8202-4c4f6020239c,2692081962,14471350336182111348
+b026a23f-a3b7-82fa-945e-253477c77596,2452541799,16888729417785948302
+4fe5eb78-943d-d7c0-52ed-be2e3499ffcd,3743943531,8255667218265437426
+05bb9020-f571-a3dc-a361-dd7213e50bda,3545815495,3590398467583706096
+9c3855d4-88b0-a753-4c44-1200fb5beed6,2084109526,16674919533942860338
+d64d8bb8-8df6-3e27-3f4f-9cf679206335,3241492198,12674953840031331459
+1c0dd659-1755-f8c7-544f-c64e96c925aa,3877468607,4173406174837864104
+408f2a69-f631-870f-8ad6-080cbea6b0be,251303069,3785277029254412829
+94966134-16d5-790a-aea5-0c41eb9a8517,3399270051,5956584116240122510
+b2bfd853-b544-5cc5-2174-df05c4415916,846702540,14441991894815914953
+84454560-3a2a-f417-9184-8086e1a8f41e,2081640852,12039120469304704004
+dc4c3dc4-be91-a199-17b9-5edbe13206fa,2434102066,1072850060308306429
+9cb80f97-f051-eede-4d8c-6e2c79ddad63,3063312960,16994346367938444035
+7778a08e-4f5b-fa21-d79c-c5050dede88a,3023062164,18186268592281225054
+a158aac2-a1fc-0ea6-b1a6-de283c5019f5,2030108794,7837260594178926791
+8eb630ea-ee07-8523-a6fa-639e1c45d229,3714364426,7688724456096137397
+baaf5b91-5786-d965-ac20-5ef3374965d8,2167239429,11271749410241928286
+ea088393-7f05-62fe-a87b-5580a32cc8cc,3958371085,6115444013287879596
+3e0e8034-a717-5112-6340-843b06330927,1143946143,10781460053651983753
+62e51f21-2a1e-945c-9fd0-90d10c53c2f5,2698268362,6157040790221759873
+a5d62d80-f9d7-136d-2fa3-bb1fd032994f,812354042,3404665867007142408
+9171f2cb-ba27-a924-7b65-36cfcc2c9a14,2524018233,15247625512858029121
+1249d37f-6a8c-8a68-edc8-776b7355c1c5,4074293855,7300175560541858254
+4926b9d5-21fc-4c09-e2cc-7763de3e1103,1407241113,15983821099651386120
+a071b5da-9683-327e-39d5-246aec258b67,974788480,7760833461316838466
+e1770643-6f52-fb85-eeeb-0905feff5e21,282173053,3340706832369248792
+9c337cc0-c959-a676-bff6-f349c4acac14,628139923,12378251538915508363
+15c77a79-de63-cadf-2db4-15a41adad1a5,2066419772,2546167542782882335
+9c20a068-7bc7-4066-cc2d-2fd02a5ec98a,485255272,16832625784899386849
+c528d888-8cce-35b7-3f28-2b671510c31e,4292391515,17539577632107358259
+8374bdaa-0e6f-dca7-c7a6-7913e177d4a0,1274516128,17053724048054258273
+49a590c3-2524-b5bc-b9e2-96fd7894089e,154197818,6840672361808547888
+5c59ad0d-6a08-f8ba-a1fb-4b7cb93dc626,1089738725,9581045051461698908
+399a430a-a763-cbe8-7467-f94d73d61c62,2310299271,3470925388507650603
+950dd206-355b-d1e3-8627-e092fb7a4932,3926981706,789366694510023108
+62423089-86d9-b11d-b21e-d7bf9b9fc7dc,3499454645,970684485564840321
+ac080013-76b6-50ce-6fb4-1393524c2b72,2189065559,15040645850537915522
+c390fa1c-c079-9ff1-301c-f68aa39707cc,11979438,18264559219294709294
+8351faf2-a71e-9c8d-f0b3-5fa975c0c8bb,4029287859,9627666961406401626
+82d142c5-c314-7c2c-b518-4daa4e52ee9a,3642171116,5552559580138627504
+c08b7eae-ef37-62d3-12f0-4ec4fbefb521,1445419711,9277399457349010155
+c916245d-2d48-3f0d-c7ec-2004b4b7d93a,2764670507,7539042399662294526
+88d2abdb-1ada-550e-6db5-f32eed1cd8c6,4001689176,10772681115493397488
+83890c45-db56-ace1-2c3e-4169ea7c93a4,334887112,11101159977148815835
+d9fda28f-d5b2-f03c-f973-82a2847c02c8,420038264,10725318182075776548
+5b02df6f-8c64-3149-d0d8-7521bee0ae99,3139763938,10504032099149802495
+ecd14dde-cfa1-b884-b3f4-e588064dfeb4,3981005025,7879729189810774313
+872713f1-8e4a-744d-111d-a3f2b5e543b0,95743336,2100768713546808221
+ee7a7f7d-575a-f6c6-257e-2a5c1cdc6338,122086876,10394715445635265383
+a8283cd7-c0f5-af6b-7677-c8e7820571a6,1718346964,11226204689602682728
+dc0368ab-458c-954e-dafa-1ab7ae7362d5,2138263376,12806824980672970864
+4ae93445-0886-536a-36f3-ac4ba30e74a7,246973803,8565832878014219133
+2f43f5fa-ef50-bd8c-1cb4-059895b6b331,2886770795,9388977037633941346
+0f49f366-bc5a-474a-1c30-f8b04a8684fc,2048292699,1040989068503040915
+864ece9a-314f-9ec6-cc03-65701e885524,2750233509,81711542618656187
+0fd1430e-3874-e5ce-0dfd-967bc798beec,723394743,7990732709326508771
+d0ab9446-a368-43f8-daa6-6cba2d5891cc,3099509138,18378297568580104840
+c3c9c6e1-8f7f-c034-11ac-53d928bc2ae0,2982110807,9618136235598696374
+aad33ec3-da27-7644-6d3d-906a0f22b094,2535672816,9918415062668278880
+20f049b6-7a2c-f481-dfb2-ac437917db05,2963772077,6702060174274999016
+15101bce-8dff-993d-c099-e220f7e9d959,1777698831,15183240884412574824
+a8064626-5745-da1c-c781-827577a4cda6,3864604951,10863686088003074558
+42a3a4cd-23ca-7892-88a0-15a1934d4236,1219578658,8593132394735395398
+68219175-147b-1209-1279-481e39349580,4193878042,15065717537863694207
+e7dba544-bf79-1b59-371a-05cec8ef0d59,1227279541,7022943819866877149
+b40af689-293e-46cf-5526-f9a79913dffd,479196029,13088659056741187700
+c0309a66-233a-f156-f856-3e1641fa130f,2330416449,3213844212937982402
+f88abff5-d7db-65bf-cd9a-fe87cbaf927d,3068790364,1518940609104713319
+27695f59-1922-2a09-54f6-587b894611c2,2450200685,14673850531802961701
+4a054bbc-7387-71ff-5ecf-d107120d29e0,4261045195,4742978844701692530
+57d92392-addb-b029-6ab5-49da7485d659,3633925266,9806940987550485611
+c0ba7253-b4ed-2170-6077-d19e017ce77e,2836813088,2701947829374677862
+e56d5d7e-e0a4-8863-4087-47f0a88c9234,1139826047,5585977201447983786
+fe3f8a60-8c4d-169a-8b46-e64114f0ee3b,849220097,4447325772696436059
+386993b8-a9fb-bb82-bbdb-80b148caa60d,2475591895,5823626911007769304
+8b5c198d-5eb4-19ad-f025-453895d5fb55,1836169825,12803943787322751307
+9280cbe8-4db8-5fe6-fa41-4af0c4efbf8d,1368433646,4287877686657907226
+0129bd2b-0f81-f6f1-2f15-9b2d3a41102b,369931545,9553329309536339803
+46c401ab-f764-c808-cb86-714f5b30200c,4152703012,10810330253242570611
+083e85f6-1b2d-f341-9f34-3fa84115d146,1048489554,3049765668112782168
+8c4e8bbe-9296-053c-2fd0-79e88d4a0171,1072828061,9117738351223696513
+a5a874a3-6b3f-3006-a16c-cfc08ac7e1f3,2970785145,3554347345487879092
+766f9bd8-3631-4dc5-7d9b-1dbe90694f3e,3720539703,18147924431200499124
+6071f098-885f-fa1e-4586-bd41d8857fd6,144420115,8208811598038916972
+5035bffe-9110-9bb1-13ed-6b8c3fa68950,371295918,7683831068634548428
+3866963a-a86a-b044-5475-84424925fb0b,2159374736,1656599830110312301
+17ad1fd3-33bb-c798-740f-169aa500c925,2125089449,1965245335523551203
+7d7b59c9-a08a-593b-aec9-29f8a561dd8a,2785454514,14117653961116175106
+e7d38e6e-7611-da29-13f8-46d6191d3531,917037327,3420499544167931464
+52504321-d44c-ff9e-7606-66f928a25d8c,3860547742,4171628446076473327
+74af8412-3b1d-ac8b-cf39-fc5624ee1977,3117497943,4407849660159320858
+cc3cf6db-d171-90de-36be-8c853281dd80,1048645880,10871975709352024685
+4e7a0b7c-1efa-f7c9-390c-697afbf6e7b8,1941297308,9266728830088498869
+fa39272b-84e2-5b25-23ce-a3bf2dd45d07,1575445235,8793730469109841658
+9f73a170-ecaf-4c62-0490-2f8c9b26de96,1605807932,3312653929193277440
+381da569-82c2-6ab8-a95c-bd964f60235d,2785409413,6011018233353332927
+34be6192-5911-e31f-cc6c-1ea0f451bcf4,2144683708,16172766765734227782
+9f242cf7-1c33-23a9-4cb6-541e643dfc0a,4198826146,12730114397658614803
+c7c292e6-e4ea-15c8-f8a0-e99e673ffab7,3844422319,346152812173090169
+1434a852-778f-c31a-50a7-92d1a4d74fc6,261852367,8228776840744108595
+2ce30a99-8bc6-a3eb-7c84-2bf135d12504,1653472854,12162516754944158272
+41cef785-35cc-5724-8c1a-960a11691dd8,259103939,17644504039039655614
+aef7a444-fe3a-7b65-821e-b8cd432c14f1,2543330343,13413433438342222291
+86de88e5-edb2-8e33-947b-325764dd1ba0,383914120,13593706793691888514
+da243f3f-b376-dfbe-722d-8e2816d87902,398161081,8935364376179762555
+f56b02c7-cf99-3a03-1d59-17b9269950d6,2661278548,8599582807164181883
+5984ba5b-0de0-1075-fde3-ac3d55427f6a,2713846654,8407692526708275882
+c196354d-a33b-dcf1-69d2-62b294139622,3510319829,8492782353605616804
+8950f84b-71f5-f9ad-0e87-497a8985b4e6,1822635708,6195389397719243539
+7ac73edd-aa24-d71f-34c4-40af990289bd,1828894908,6008866080699678132
+9e0d8618-2f0f-5ae8-b41f-dd343aabb2d3,2260774032,7705653465344452927
+41ac59be-09fc-5e75-3791-746f4c7428fe,2340434495,10949884685790662739
+6f51118c-ae6f-e174-d186-e87da54775dc,3688976280,2310013579086184379
+191b25ef-51db-6af4-f597-9e8a5d94d712,1213777173,3140719894420769684
+a39dacad-5039-eb63-cc9e-21e8279c9fe3,473814495,14769944629185472933
+1cf7f90a-b4ff-1bfc-23bf-715d389cc012,3022485206,302929501305756192
+92462204-9661-68e7-16d7-d066b006490f,2907630321,1146803095897920664
+c8a8f550-4a01-8c94-4d13-184cf0337c00,3936402628,8540129332417850688
+fb8d4758-4fdf-419b-198a-2c6989f26229,4126189470,10016566603133838097
+757170c5-a9b1-096c-783b-700afc4d6e22,1110476628,9071106830668007675
+2cf7d31d-a631-570e-29d8-9352a35d7fec,2606939455,14987759774006792640
+d3d30c23-6ae7-e850-3a4f-f6bbc5e44268,1784679815,6444403787323519249
+f6f87113-0266-50eb-f75a-6362bbd4f9d7,492237878,7110116078199617296
+145beae7-851a-46dc-cda7-ea96d5d40a73,204292553,16120933634849236411
+29126d18-9a1e-34ef-f937-29101bba9e2d,817916635,3913568427888512544
+6ec16fcc-30d6-bb16-370a-8b9e27a03d1b,3393894220,1190087221377902652
+9f38f588-f42f-da0d-46ef-5240cfe5b6a2,1088007471,17212154533926414035
+a0daa24c-9dd0-962d-e2e0-1dc03e7eecf7,583447536,3353506717614430589
+1237099a-fcef-513f-fc58-97fc1fe5025b,2561429140,11918799483173161791
+9759d458-868b-f2ec-fe51-e14e7fdb626f,3362566431,18001033875431661250
+914cde17-d862-5eee-fa3d-e054f92bf4e4,454113785,14826559086050669168
+523ad94a-01e7-8eef-8a1a-6e0ef98c19da,574357828,13613004662758843675
+7a05ff21-9e0f-dfef-4f39-0add75f2e834,2311966785,6720673239824188815
+af64d3bd-2200-47d5-a447-86912fc4fa10,4264881215,15570766033678127764
+bc7638d5-4f87-bff4-c60c-9b71dde0ae5c,2147294267,3968768533781863964
+3098f930-f698-b772-2ba0-7c2bae59e5a9,2257631356,2838421053067980985
+eb29cc6d-6d54-37bf-0719-45b546c05d0d,3051756507,13517456156671186823
+79ead5ef-f415-c7e9-350f-91476fccc292,397357315,3191435557133357166
+c6c72f0f-7675-9df8-6912-70d1330754de,785771550,7290798031793380300
+ef7a65d1-7767-6847-7de3-d2b13173ca47,1802273890,15645130911665136772
+0af15afa-7b60-0bb6-678b-d98d841e9c5c,3410535111,912870732874145770
+8b0456fe-34a8-c7cc-158d-932498fca7fe,2598592165,17433712345822875449
+580e34d8-e443-13a3-dc8e-bf8cad03cb7d,3039844934,5706688377835509652
+2fd5f4ef-2f9f-9a77-d6ac-ea50ad396d98,1969286021,14330646322280997842
+b3829072-16e7-fa43-f9b0-e5a73f5423ac,2740455755,12508712394724977404
+aa417d60-3cc8-b73e-638c-3f511e458361,2470308834,8498442151319400080
+f83b6b54-29a3-f4ff-9f71-4ebbb7a58995,1855155665,1362486118627598674
+1be79dbb-43c1-0e79-b68d-f507ff03c710,1859726451,43901691565350193
+60535c7b-b453-2146-91ad-a056a282ef83,1891301,11372852398241222354
+b1520c61-b394-5e43-5a6c-a6329220f52e,3677937780,5022616730559820751
+a4dc1b9a-fcee-b91f-33eb-5933f6913184,1746163060,8486071795933024825
+6214a1ac-0694-2821-95c8-bc632e7e8fa1,3200561769,13875608601807342519
+961cd1d9-a7f2-6211-c4fd-1f5aa8880b6c,2723665958,10875554458614943092
+0a20950f-b5c7-4908-26c0-cfecd1bf29c0,285234722,16189025087273855913
+69bbb6c8-b262-5bff-3e3c-39aeb61c8259,1730255872,5213697219047169783
+5b0bab97-abed-ace0-a170-51707ad14b3e,4052075529,14151230257514278897
+b7048934-f565-bcd3-62cf-05835c6555a6,2094411725,11931272747102268638
+10a5a938-4831-35f1-42c3-3f1dd88d1f38,1996589202,11555039888691698388
+3793e031-e3c2-a3d7-8b8e-057f8cf3b3cd,2359413805,6873030202822959364
+da0d6741-6231-5cf3-f4cb-20f15cca891b,1952086221,8120305546983229059
+fd56fada-7caf-30a6-3138-b74f6c17f172,3941258622,16322720910926696645
+db780ba4-7df7-74d2-a172-a60814375875,4134107434,2725723351748250100
+9d0d6a06-92b8-e94a-6f36-b2a385f80481,4060492819,6982197342308204643
+59825590-7fcb-6052-3009-d3a5890bd033,298943997,13927668813121980608
+bd6329cc-b133-a0d4-ba3e-1ee51bddb07a,1441175447,15454623222478119185
+353dc35b-73b3-dd0d-b9cb-a1280b8c890c,1320758688,5821917975200670164
+a553b9be-baf0-3100-c3c2-8542a01b0cfe,1535877853,1890717274348594010
+f69f222b-433a-5a9f-90b4-36663756c7f2,790335934,16686606776585117603
+fb97e4ea-724a-3056-6bdd-161c35d7d872,2127146785,5702864813957918878
+edd13763-beed-7673-6f95-cef9698c86e7,3268544031,14269281291813401989
+b53248e3-7ee1-4f96-5c59-951b5dc60988,3381450981,14299146757115506373
+3e77f959-7f54-a867-5e4d-da6e2bb0faaa,3617267177,2954068961494917336
+d52eb4e1-3a94-9ad8-4a2b-23e444ec7489,3566616589,15719664384355595349
+84b65723-be27-10d0-5574-e4d329ce5299,1707879953,4566146013643855697
+d5db0643-30cd-aefa-8f97-2c55d8aca13a,327490772,2837143275890334343
+9e47837a-0681-ea61-8d2b-83199c88a31c,404237287,12523636476426820357
+a8b0a423-49f6-0859-7ae7-246b247efbff,672320601,12608525812208824459
+bda57f90-7b2e-1102-db28-10851f56b0ad,2327934424,4547876145123322866
+1b15b7fa-fc22-aba3-175f-af55a09dc3d2,688646120,3938888711568595710
+d661db36-e453-ad86-e995-b48728b2e451,3922429719,9697446093647844462
+8231ffd8-2ac3-0f14-bb54-5234966afc5a,3207421855,8627366653156443520
+0a32315d-8711-6357-12ba-ac6666080294,3380233382,9460996161426339921
+7ea8e6a3-c66f-ed55-8032-fa011f0377c6,1094285255,11611486378341841086
+7c98fe02-1a6d-cbee-1029-19b04992491f,2679364965,15183849252384795540
+b90c62e1-abfc-b19c-429f-525f65e4622e,193876217,8972226249842615522
+feacdf8c-b8be-72b9-7e83-aa1bdec7585d,710299937,15409619892516488262
+cdee83be-fa16-1eb4-02dc-15d5bfb1f645,2771586209,14162703482447789190
+965f8f7b-bca6-bdcc-e81f-c81978352be5,250310691,12171354354672782200
+9a5a97a3-30b5-aa6d-e113-a18e20cbfb44,3575122295,1624679857884152039
+9e507580-c33e-2559-5976-2459f7da7acb,1531062552,15555511282999813818
+15e558c4-0bea-9ae5-74dc-6aa80dd4570c,344430270,16812972856264508542
+e6bdac1e-3fbc-5baa-0801-34a8c828b820,693308692,12089243863923488564
+793591dd-bdb9-2e9d-3f6f-233802cb536f,4103604751,14595115008815152636
+7461cdf0-ec17-3c36-03e2-9b6d0903c494,4163625332,18363480071688605991
+d502b7f8-e424-448e-4c78-3373551e472a,4032571016,14217725962498266595
+d3bb03e6-6fc9-d5f9-e55a-ef82e67feebd,1673973834,2911246400727612067
+bd7bd431-6e42-2cba-9447-b0bde15fe927,4237897436,11179206829650951685
+cc112d39-f10d-ff7e-a6a9-96dbbbd18926,3351829700,743719483053520105
+8a89668d-740d-9a79-582b-39b48285f87d,439881417,8876585914659063390
+e96608f8-1f0c-cc38-e4e7-5f969f1357e9,1949921524,18169556532831781134
+5e02d7d6-ef09-7c4c-4d92-988ad48ee4e0,354813635,14655278447547606291
+f992d324-055f-01b4-6ef6-2bec95c17f34,3978852421,10248947281371297955
+0d852f29-a77d-f6ef-cbdf-6f4ca5e527ce,1452524056,17982253682888669048
+8b104983-73d4-7baa-7b6a-445a5830551f,1836941519,6733914105101825727
+0d493e8f-c0b5-d4bc-234e-e2d933c91266,2480249596,6808565140689772470
+c44e6703-8a64-3bac-7160-4bac1b2d32ce,1478890315,12316121003875536831
+532ddbb1-a37d-94a7-353d-e8e45b1c4ed8,3194844611,7776826786270961687
+0437df9e-af3e-efa6-2955-c17a79fcf7bd,4172508437,6113275176422747777
+d1cb8b56-8bad-92ed-80b2-3bab40ecb4dc,4162999480,8316688319149478891
+b914fa83-da96-f8ea-7a90-1d15853c4445,2178703112,16847271296788041855
+a484f303-e683-daa6-f907-cd5a6680b4aa,456206779,11254114221948330200
+e8a206dc-cc09-9b0f-9020-ae395ce51c35,3917744505,15078440422673647061
+b6ae6d18-b7da-d99b-6eee-c3a6812f0c8f,608343756,18173292104717489691
+b6fbf714-739f-6cac-85d2-526205b5e1be,246781765,13683443210502754595
+955d5446-e909-dcd8-408a-46db7bd25252,2566537610,3177959961515699703
+ed038614-4059-68a4-7498-3ef7338756c2,3463164988,9033963159109813487
+67ffb9b9-614d-4c20-28b6-899882617b21,3029386523,18315841787567833612
+df756950-a6dc-8c14-84fc-42d99902995a,2734672879,2458869176738661310
+25a7f18b-4dd1-1528-4001-6464f51b8b6e,1070615444,13753693392059849345
+02e43861-05e5-d561-f1f9-cd0955c4f917,1355353581,5849878650599724011
+5f13f388-ded8-a90e-bcd8-174a89d49b83,1016734095,10070122162061124419
+b79d9b29-1040-1b90-d08f-e4141894bde1,3686655233,11103629425662628542
+d353b012-561e-86c9-7492-766fa4ac0509,3730417328,4267645619451321170
+b4d69b3d-65b4-7d42-907a-69f337e174ac,2937081751,6130637928214954528
+a548882b-a9ee-13a3-67d4-ac84748caa31,1650336251,4280187420250540097
+42381bcf-adef-3863-f6aa-df6bbfc52bdb,2890207904,12731045923045505917
+21d67ea7-7f9d-11cf-6e4d-fd27301d85ba,43091431,11048600655232218530
+1d606126-4a38-acc8-6c36-d67ac66f81fc,3221878333,14896984334520857665
+606ec1f6-1f44-e0e8-3c07-0c5220ec8120,121082155,12767944430200983826
+70c88736-8519-9714-a19b-00c965ac8e81,3673715045,10680357610884113714
+5c34b31e-cb9a-5b35-f243-9de4270e896c,3843990112,5566610995249828258
+4a6bff9d-c5b1-8540-1ea4-36373307401b,2398557902,8894780879183261812
+f52b9d04-4028-19bf-0b1d-bb7303b88bc7,1387829540,15954135462718338232
+3d534066-d9ac-32a1-d87d-59734ef795c2,1097966400,5371634726828452988
+5d81843f-3c7a-eb78-49b2-e82923e57351,2168990819,14309107658453715960
+7e5efcf7-c337-898e-ad3a-71fe9a8ef669,1851880290,3873264063683017373
+e4c2c6f2-1241-0c80-b23c-434ed06d3cf0,1180125489,1010210594057174001
+47dbc045-75f4-0d26-65b2-c92626152b33,1104893292,12994201241214235015
+caee39aa-f161-dcc3-bc98-8d0c68a81672,4263048793,2464924467411596072
+1c72d93d-94ef-1e49-82fe-f7f784c7520c,4007476181,16147396938064753580
+3ae2e3df-05d2-1ec3-5046-1bbb413fef26,913837825,9125255788712249429
+0d4f67e5-6f94-35e1-dc2c-e8ac996df9b2,1325106297,687660414445878307
+bf984096-7b1e-7e05-dec9-f975ff684ed7,361315209,2784330314309943769
+b4d32ed5-4a5d-87f7-4ffb-83f2d564edae,92965231,11978485242879232002
+5d56894d-ae91-1ddd-be49-c29b5d097262,3966087098,11009015493666425340
+aab8ee07-3678-350e-8d0e-43c3b3ca88b7,1340051096,136222101094655465
+9dd81779-4b1a-8a75-b9d2-97b90101c6dc,3724447302,13028246696607908771
+3b75a431-3e3c-18b4-4c0a-2eea7c88e442,2434028098,16303513094660606173
+28169b17-7ac5-1b7a-cc2f-51a02c55a040,2440613017,11381409941325846447
+3103cab0-2fac-d507-c952-1c2cb4727b2c,199409393,4303513206705609004
+746d5d34-7aa4-0c48-6508-c0d0e5b1d1e1,2389637029,1200703368970177012
+af21b1fc-f6b4-8137-e0b8-36a5dd47e707,2906949564,1173733385591876074
+13a52991-de21-8f0d-385d-cf14b75ada57,289216942,2366687058346066832
+9287ee40-1610-b205-8894-ae441791c23a,2212973153,2353407542413129731
+c0d17b33-3a2c-bb4d-2a0f-5e6caa2c6649,1012834382,16358020776006543918
+31037bd3-fc09-57cf-4242-551a0c7074b8,2623595529,1658128795919380273
+4b5359ea-6d2f-905f-a6b7-aee9f172e748,3745528153,5341849660124614656
+9ad74cc6-3f6a-33eb-fcf8-d67020640d91,4082156805,8303756975467969148
+59ea2dac-334a-2d75-8213-6d87f3a4aca7,543301156,4319205569850203784
+bf51ab42-d141-9283-f342-30e808929869,2353714382,13215363663423416382
+ddd8153b-15b4-1a6a-187e-8d30be11112e,1982251704,17859976098335345567
+0cbda082-9ad0-3d45-f46e-92ebbfd5caa1,3449825023,2016411647784712693
+1b628e41-8048-08ab-3e48-08b23f0f2088,1318086002,5012332095796770179
+5f08cdf8-3c91-9816-b3b5-c1e812b08f86,1870043747,4400597128512073089
+e46fb0f4-4f75-c85d-caec-abdf34e797ee,3802761846,9257487759903439073
+07bbbc89-542d-f1e7-4b86-92d8b27a4382,3472093530,247904284138078845
+13c23c01-b567-8c9d-17d1-387b4e063645,1648722874,13188937887414841446
+4b996baf-d86e-a563-5b2e-615b8f09206a,120920112,4084128034172088330
+bf056e5d-040d-30da-069d-3931c23c7054,2334596195,2398404509464649715
+f905ca36-4f79-13ae-df8f-fe5777181940,2893530234,16810702393823722925
+0d929c11-3a14-2bb0-f5bf-1c5a1dd0da3c,3218936308,8444902956298735649
+6220e51b-8309-3802-5540-54447f3e506d,3121380377,8924237708287946619
+e79c02cf-e802-08c8-9a95-508404c0f9d4,2458666812,11849920172249097192
+a8d46649-929d-681e-ec19-c9599941c7d8,1237970246,4813849368248239795
+707f2e28-1ea6-7570-8af8-36f9a344d0a7,1188665798,3653901016856288089
+b1085175-4753-0a41-0cd2-4a9a84b47d1b,2863092647,6470324870178875932
+6661c3c0-7c35-d88d-7f70-7c2cae03f50c,1507512416,17562479763160331066
+d245ed54-6abb-5365-b284-2d7e38229779,3843073652,14238140017716580706
+94e05a0e-66ec-32a1-fbfb-074cdb4dd0c6,774880932,17119052497971222576
+08d3c21e-d08c-034a-8611-65ec2d6595b0,1015951891,12671850070214565122
+f27d4cf1-26d4-ae89-e9b1-322961ab063b,1725408354,8741447878438511484
+b9f55b74-6e5a-3cba-ebbc-a6e953a1829e,790805796,13629333936273122078
+402796c4-3c32-497a-4030-e09fce08389e,3422787761,1916416049962644657
+da0f15e2-21ec-bed3-6296-7597114703b8,2146712303,14119280566464597848
+ec33ac2f-eb5b-1d05-d4fb-860af0439817,1726287208,17446937130754625180
+6aaecc2d-8bb4-9419-ab43-ce089891901e,207399364,13815958599299034733
+d60d2dd1-7abd-6ced-e42e-eff73772e87c,527503349,17303441603812274996
+774db6da-173f-837a-6f96-ff178476f4c5,1101714008,2154491947879192442
+025d4d0b-486d-9e0a-5967-4bda0af5d226,1674846299,14365429984899294712
+bc894026-fe1d-908a-4a47-89b53a393263,3070363298,8408362726795136059
+b18c9648-9571-3cf6-c435-92df29c96021,686113342,10075904465341569510
+1fa187bc-0807-7512-65d2-6952e8f59e9b,2300608923,7969793506846022827
+101ab264-fa6f-e02c-2b87-9c6f3bae8e4a,1097470296,14398439856225249299
+3e14ab8e-6724-61d0-cbd8-9fe2739bfc41,1165705136,1991222479918530279
+81da4356-c763-8d67-6153-19e201c93dba,3704596100,6334602891842335498
+59060dba-3ab9-3055-db70-507b8990ab1d,2541424983,18206373743756235539
+8789c860-01ae-8b7a-9fec-8665a06af8b8,1512097633,12691903628148781401
+8052c9b5-fd2d-5806-d61d-12f0142ac386,848611083,13568643856972681158
+8fd99a1d-bfa7-7461-68ce-69cf3ac6fa15,1911160607,932289022813668337
+e47ed593-0b23-5e86-4265-f21955cbaf66,2671124178,9246962594787005181
+27941098-a46e-3901-ffb4-6fee08c38e43,2229827450,6312484590864087336
+6f4d550d-775f-e312-37fb-cf781bb113e2,4117822836,14334897215379767515
+5bef07a1-6442-010f-3ef5-12749c38d08d,2117134518,3853228086111853578
+c188ae26-02cd-a9e2-d44f-f6d257510945,2116006441,13887084025068953080
+8d715636-780a-30a0-d399-2e12370a8bda,2557734177,13950247607953922911
+b9a21a67-cfa9-4eba-9c1b-00e8cd83fd58,643882438,9323713837055404569
+ba043000-8278-ed7d-0f94-ed2331f6328b,460848386,1174478187726783554
+aeadeaa9-953a-f2c2-a9c1-7c49372074aa,1554802902,7786395361906013948
+44f6cec1-24d2-9186-d8d8-fdb3f6c298be,705373854,1412209447398805889
+ca7fb663-30ae-eb37-7938-0d385c2476d0,3133568589,4458252397624263004
+a2a201c4-956b-de20-ba89-93b4ffb87e20,1438590653,949270961282426142
+d2cef477-b42e-21c5-b5ee-d1bd882f35e2,2335204711,6130880863353388282
+c87ce462-4980-06ac-51eb-82035dc0e6c9,864108095,13576662669604847712
+b6ca1a27-e172-3ff1-e7b4-0855b4eff7a1,893654736,13270285732635460594
+e627b6e7-ebb1-6a0d-1525-ed3727e298fa,205629294,15951426766229371770
+05ed7560-feda-3571-62f6-13e7d4cd86b4,3102674528,2762630471950985690
+383b60e7-4b5b-74b0-f0ab-5293e3b48e2b,1178574336,5257771207255967473
+bc1bd954-520e-1d71-183c-7b844dcca96d,2249841390,521001063914879316
+0b84edc6-f135-d6aa-3b69-db48e4989943,4111927719,12436811790188432429
+f6fa084d-5377-311e-2c10-609a946988f8,3232947065,4144925544853516772
+63260373-c092-0759-15f1-097ebec38af0,937446753,8825417306763225752
+90e7870a-f83e-bdc2-4753-f04abc87851f,3085017596,2879325875948225490
+8996aa72-efde-a2c6-5765-22918f88278e,3595877857,1829532586254560970
+e4561766-d4a7-5cbf-4704-f6854d615824,2106437134,4799677781104295521
+b9816c39-055b-0f6f-6de9-068d4271e2c9,1814605399,16908844801640131448
+bf183324-81f1-a3dd-06ed-b203c125338b,3044476240,15895080588855709491
+d1717b69-0bcb-0c37-aa8e-99c0ee613a3f,1720321576,14956196298954500367
+009d4630-14a9-a5c1-267a-941cf3523029,3971873998,3110682517424114538
+aa6f0194-0a63-c960-9e19-75bf867fda60,2831851002,3055480756724284259
+b776e7d0-f4fb-c088-e2f3-592e93ffcc4c,1895163085,11425452451186129126
+79c5142b-c4c6-82ef-26bc-a1e4d5831bef,2158715056,17321723320859559873
+24fbbd56-a010-3803-0a34-997cf18b1efb,625464886,4406424000491062180
+ba22d9e4-2e23-c55e-f9a9-64b7e97102e7,1837330855,9048447806012347823
+4fdd1440-23ce-9783-685f-7642ca348639,4156381141,1748911536815670101
+7cd724a2-b7b0-1daf-4583-1e0a9a0393e6,3625507642,5591697991437292887
+022a1e49-d8b2-1618-c595-8d7c37526854,3299629861,2455039952598989644
+ddc58afb-5717-3af4-3127-9fe9911ca798,3603445759,3565395973639178883
+10f3b9a2-f041-f49f-a77b-20dfdf3514db,488741229,5535128087706214792
+406e719a-0a38-9a8d-41f7-718c80153a57,4288957907,11691450692183411693
+02b08b83-5891-0cdd-b9bc-abb73a744e91,2629275603,12207880601127158391
+9273d73b-49af-0fab-f2a5-ad70cf961dd6,1903489380,15601961946813658979
+7d1574a9-dc53-cc41-aade-305aed293312,2829642082,5936664470843155120
+60c7ee9a-358c-80d6-cfeb-16bf169b0777,694885791,18247681890461458632
+b2eb9dae-9752-34c2-00e5-0a46d2075517,1546483523,17851642057620915966
+560d1b45-2454-8fb9-0d49-d42b8566fc87,3610557157,10545359093294876874
+04a5baf3-e0f2-c1b4-6bd4-2bfcc1ba9450,3224990637,10130827575682881233
+a99edc7a-2537-2bca-4ec2-d7058c782579,2187387772,14792296642660015857
+ea1ec817-e0c3-90db-c114-f907eac5f8a2,55906377,4975624333657818674
+d2ffe8e4-2cbd-abc9-0f18-88c32111bf92,764901593,13721396164574389477
+7a9534d7-7b81-8e28-962a-5d4bf27309df,2557048079,3824699995647531836
+7f9ed051-78aa-ef26-a6dc-3f820fd2e526,3443687269,2739542664396953317
+c02acfad-a136-65d1-1ad9-7d867b214781,3343693085,6304847101139995385
+6591a996-526d-3a73-f8ef-b6512b96eca2,3030849530,14121782700854694414
+8edebf13-59e8-b272-8be7-0b5e247e02dc,4004668504,9197117176786259704
+bb87fe37-76e0-c60c-3613-b13202bf3ecb,188470820,15321619712176396024
+4213e0a5-9623-cada-e627-814b416301bf,3083111382,4291573081266953209
+4f1cecc5-ccbc-44b1-d00f-bfef4f57593b,194384801,12911858847631621794
+e97c386f-72c8-4bbe-bcd5-45917ca29886,2091945008,10839266443729478769
+4a55a701-19b1-c790-90fc-2252458b3206,1989163411,13571624850770958471
+c9f3ef76-d859-92fc-df14-27435c18dd9d,55045091,10491886611097206404
+1bb029cc-0ac1-c109-8034-122290d575cd,2115069335,8800096724690223197
+0a4edc8b-77aa-7e9d-2d50-4b7d8030f6ad,772273750,5007821872949334964
+083dbbbb-8d13-f78a-6b41-0add479d31ef,2739732739,4296246945551450647
+77019afe-0834-253f-af6f-614f22485441,1481011781,4583637884768631268
+30fdad3d-b11a-0917-b5b8-a1a428b38be1,2246414607,15470539100441923237
+73926c30-e32f-abff-7174-2f214921d830,1065877872,16127230920256926362
+ffe82d45-7234-0c69-e94a-67357a58a4a9,1723714798,13700033568813307260
+50bc0675-c12d-57be-56e5-87b6b017c1fe,1314741498,15548518854416210672
+afe7a339-6e1c-56c9-704c-19e87e232e8b,4084247696,2073217172003749873
+e9725e25-0a8c-ac03-83eb-f2c2941ec027,2280826596,16784281754832215763
+d21f29ef-c6cb-97ae-3658-f6077ce5d9b5,4146619810,4390089294343388768
+a0d3c030-7926-f87a-12fa-9e0a0eee7c84,1196922162,16731559812407470217
+da26e0fc-ee2b-b842-a721-7a5663f75e3c,4010869342,16954480096767098162
+4cc41de3-7a6f-c627-43ac-a569ad5b279d,2683699780,1026927993777214927
+1a5f4def-3b7a-b6c8-2819-2e9e5d30db49,945816620,2326527727896337320
+333e30b6-37a5-a6cc-ccc8-2c096d5f0d69,2780344383,13237464164442301296
+c4b0664b-d641-c2eb-3e5a-1c5766a4790c,4151351290,17746309070720900161
+9f1569e7-ca45-f1b5-5f86-70541cfd0fb6,3534230144,17297185969233742346
+d144f81a-6f67-d5fb-a668-85e3dc2ce2d0,834943049,7205931670115287521
+1d6bf5a7-1fe5-e917-bdef-744113fe6be7,1371756125,8834844243360506886
+702fa219-b703-b4e9-97d4-0dd3f80068db,3941317053,6912697534577806023
+bb378b88-f5d1-7b58-1231-9718236bef4d,425490144,9133941796209255915
+6e711176-5a3c-250e-82bb-27011509429d,1592114884,11657776972126110096
+37017922-5d25-ede1-de1b-2dc873b98863,459702237,10128180975035701675
+223aa9ef-3117-ebe7-fd7b-236509305ed8,1294949595,8135633744869919413
+f3728072-1889-42a9-8b9e-875902a2a143,2737874602,7131734609645923587
+be8171ab-c9ac-b858-f038-6580c738c3ed,3996518194,15022749190714346793
+526b1a9a-ae5b-a0c0-ec6f-c4ad48183767,486388220,15662389372829091756
+4d04ac58-d782-d9b0-0af3-742ea69b7a78,1995237695,9803925936265732680
+a0411fb9-f613-5c90-57b1-945614c3f24f,1522414345,513195355617127152
+a84d8ea5-c91b-8606-1645-ea7d408caf6b,104263707,16863844121336235287
+6f13207e-2d94-83be-e862-a1d29a40bcf6,210802715,5730050538359406625
+bb5377b1-6d6d-92df-d3e1-4bbb039cf2d5,353947025,3421775051494565949
+2381e16c-d737-425d-2d35-c6eb7e545d19,3384088662,3240437472916200063
+05ed4607-8517-b884-5033-079a34bde05e,3015144430,17649768573650649163
+a3d76902-67ce-eb35-b625-4fdeb214a334,1449491197,281897338161318975
+554d21f2-26cb-1e08-f63b-3948eaf9b563,117290898,3429057099305527056
+1ade361f-ea62-235a-a46d-9fb78e552859,3817065522,2620053698867867809
+71f554bf-f1fa-7c3b-1226-17d07f847b39,602072332,11448623642689669057
+5db34f5f-5c7e-1722-f739-644a70a93c13,2953667335,10641126357559506645
+29f254a3-50d0-fc09-b26c-16abbef95d84,2153583657,2177215691279727585
+3681ab9e-5e50-fa27-0a72-99b6da39fe7d,1687273959,2109461566721595365
+357de03f-9220-0eac-4fd2-bbed504c5124,2551266364,5427333748412656175
+5b6716c5-0e79-8827-8207-93c8194d4649,4016719935,2588504315130352375
+b67bc52a-43b0-644e-dc0e-89e6c02d1e1b,2043921200,11790159766538360080
+f035d299-1574-6255-9604-6f7e43022695,65484489,12753380148892748750
+7e796d75-9ee1-7fc7-0822-26e7a7515320,2664498962,1906030616656893800
+93c21a45-eae0-36e3-60db-5aaf598667fc,1697422361,5673162198693687269
+02869036-db5f-4d1d-c3a8-1af4622d1b44,998337729,813734748991356667
+dc543134-0a19-fcfb-8d66-ef74f8a3ef1d,1935241002,2511304265755984055
+d3c425cd-b88c-6905-7344-6669edc9f0f7,1888464664,16699258134455968859
+44e4823c-e35f-5401-41fa-62023d241d2e,1937698768,2777627426979703197
+50de7c57-ea14-32a5-c587-5470a18c7ae3,1380473197,12397859537163677513
+ddae7466-d2b8-326d-489a-8746e08f7940,3135279980,13738594152020263222
+828020b7-58b5-a480-46b9-1f1e486a13fe,75034246,10469239848961426008
+691f76ef-57d8-873b-f5cd-cb209c864c3d,1773762348,10378579722570950162
+33f4b07e-121a-5f25-0ce6-79181e15e3ee,539899663,2941922724780737995
+dca1b09e-134a-40e2-17e4-09b202d11e16,2811810132,12200012255006655532
+b898a59b-50dc-a87b-afec-9e6110229f02,1656103600,12017754908309605253
+e832367a-9a88-54fb-c387-5dc599b26604,2663982475,8830198091072174323
+b3a5945f-240e-3717-4cba-1829fa867f48,1557629712,10670880097673180537
+164b17cc-2cb3-eca2-9ff9-de665d567257,2394289772,2926897622340247240
+c24c31c2-082b-c2ff-55e2-954ac3573089,2099887166,4654661220931181315
+ce825baa-63f1-40bc-5bcb-dd310c6b9028,3388684972,11160261517418253257
+56add94f-a2cf-4eab-6d8e-865feb1cf0cd,2132046219,2849454714571706281
+0b75a8c7-c84d-1608-b2ac-8563def35a9a,307689621,11404761283517980083
+9360272b-768d-0b89-ab38-c0064fa8e3fb,2527600482,5795613998115345210
+0154fefd-5166-6924-d945-7dbe2881efab,1567596047,6392707803989325278
+e28d222b-f4b9-5854-b531-ff4f31d22c0b,454779954,1178887368964195567
+f09fadea-2d3c-8bc8-4e72-590ddd6a34f4,788965914,12682124495643244684
+3ad6e2cb-3463-1f40-122c-29c81b5de783,3039297786,15483656076123156269
+2474f2ec-b76c-c026-0984-69ae4b6e2f76,1215145491,9232052906882442976
+dd78d519-c3de-5b6b-8a9f-9f55a470a4df,2384102785,13938304198969113226
+fc12b55a-664e-dcc3-ab92-538f47f7c093,3882088973,1539265431234044274
+2c56ee70-94c4-7d6f-7bac-0a4e19e913de,3964544342,600004563170493494
+9ddcfd35-7edf-42d6-34a6-c2a62a8a9ded,3133669319,8594709612830734518
+bb5626b1-4f26-d792-0c51-da21d3c135f0,1369009136,7658957829917623650
+6a515074-6e06-a545-54f4-d6fd22e579c2,1130114751,17962550461235872798
+e1f1c195-2806-f7ca-cd13-5a777a8d399c,2742581158,6436286114930531466
+e1fdfc41-f788-0664-7feb-89adc70990c0,3627748783,5478570986329756993
+76e4c4fb-dded-bbc0-370b-331f7f67da9c,160094947,13684951181801855104
+14138301-e978-c974-0414-79b0120f2d22,464088583,7563125619811530734
+f6040519-e7a9-c5fa-513e-43d710452de0,1863473043,16948786414572738203
+1634de1b-a1d2-2b40-6b57-12b8e9eed694,3311095816,16032550011108790945
+c00b6f9e-49b5-6a5e-cc7e-180ff03fb83c,2695517757,6294888436806851216
+ebe76df7-ec3e-575c-6a48-45acd1079452,1025481414,9526056768111669934
+5e3b0773-bc77-8ba4-7a81-264e9b821446,2985449909,5050006231813255612
+69e5792c-f6e4-e7fe-11cf-99ccd419d46f,4224351267,16537015023739521947
+a9e801b5-69ee-b32a-f916-d27cd6039ddb,2297675986,10630237896417909765
+b6b69c37-d3a1-1d59-6714-0f98436e3a78,2994254452,18060282001204978613
+9ccb35aa-2a27-fdca-0503-b667b041563f,3894032968,10840511805840157769
+3fb77a07-fa00-8944-7dfb-f3796ec4f476,1487428308,2058205231232218955
+50f83c00-6051-afe1-2c1d-d5245823bef1,3770602572,10735436922829806964
+2687d1a4-f6ca-7080-18da-ba6b813d462f,434687537,18905477820371394
+e86fe53d-81b2-312d-886b-1a348de11038,2653114190,15843178803601585085
+e94bff32-96ff-1101-3e6a-5c7748e33dc1,3954796995,10414789025361161297
+24cae1fd-1bed-d2e5-0acf-4af8fba4bdf6,2750014908,12702776031847417107
+ad7fa08c-7bdf-162b-8774-aa101fb5efac,1878048019,9074970090570944584
+929826b2-bb87-c478-baee-90e9c9635c8c,1273740948,16854572319043488788
+3022c4b1-9f35-ee6f-e0eb-c5d4479f7a60,1007144041,8470921869900276683
+b5e690f4-7c95-8bb6-e4a5-a25b88a30069,2229172203,15231547508519708199
+1cf84945-1d4b-3398-63d6-402870004a1e,103469360,15697740137646249016
+f16603a5-b5f3-700a-70cc-ccd6e44fecf2,1844269877,8975012254320471181
+9fb7cf94-83d0-9b29-eb20-1b4cc74f3b0f,179128404,1947931872735318964
+3ea78fd7-e266-9530-68de-6a2377840324,2155211973,16781647042079250559
+cc88c045-afb6-9c11-128a-6e389698ce8b,2948242629,2000681453908595226
+2205ef43-d2b7-95a6-6953-eb940a1c9897,2446533120,6032949786183598534
+23cbac34-cf66-dbc4-181c-ebf4afb00b10,1853369858,11441524720308579775
+90b36b1a-742b-f4ca-50b9-2059f7900571,3858767972,11973357140992124140
+12ea253f-f2ab-1c61-2f44-5aa41e073763,944329343,12538256565281140814
+3b2160cd-347e-0bef-c581-08f812085ca2,4106907112,5688224077023566549
+fe5c4f2e-8489-949e-0b73-af3bb704b466,3099318986,4462841296493156830
+5abaf957-e41e-4f29-1f4e-c423cb4eb220,755914130,4174515450936605560
+44a190e2-6139-135e-e036-e8995e89f27a,2420257733,1756371549873247701
+29e82a8a-de27-17c5-1c42-254d39d2d410,1906216998,419096590031650720
+376e9474-32ea-2ce6-e6d8-5d1ec0bf4495,816478733,5274687109484090123
+6018cd88-a38e-c55d-9d59-a8799b6f8f60,1849451873,7378702360512000039
+b669cb67-6f1c-edb6-2c49-4d805945a3d2,3387079721,11104572651806147449
+435f9afe-2740-e144-2ec1-2831aed20eb4,1617677278,11313835743021459785
+fe97f4e2-4fa4-e28e-f159-36478e9bcdde,3252817356,6100931256047397086
+815c2f9e-d29c-4191-96d7-6768bffc0b7e,1912227941,3068966781934605234
+5d19f5a8-0a8e-dc1a-b3d1-b3262c86a6d7,1058474814,7166972043441589967
+b019c7c3-d5cd-3d78-c2e9-e19f73526dde,30768937,2774486659439722962
+3ee1991c-d5c7-3955-e2ff-9e3c831ec22e,3667389336,838276889885521103
+7731c141-e396-3073-0056-30514d269ba3,930624888,7610120161129215136
+78851a59-9599-697a-f42c-f208851a32ae,2605476767,9118477513683894555
+b9fa95a6-78e6-7d44-9031-c6086a8a214d,1521173104,2576079277616000878
+06abf65f-5091-8913-d295-ed792ed99070,276790715,15678430086643246214
+fc773d3d-63bb-dd93-ee3c-67aabef7f034,2378940540,4254898442830520649
+58e057cf-088f-6651-b3cf-74b007f8640b,1406998840,16416804665229808922
+5851b426-f2e0-47cf-4f31-881bf20810e1,60514684,10830677945460339271
+bbd0999e-9157-caeb-1c72-3937693b0ea6,1479870494,368090244655685220
+68ef6a55-1e45-30f2-44e4-7115fc7ca824,476998217,14754380293370997768
+637765fd-aaa5-1044-6712-4ee2eee3f8b5,2848181393,2453596328725997767
+ec54936c-f2c1-f80f-33a9-6a8e5f5832d7,56217437,4224934786548894327
+d9521b1d-7422-75db-2223-ee062e1b41f9,3509454787,6550040632444939131
+8b875bea-8906-b16d-1d28-b200bb82d097,4240323040,7691316065482335934
+482711a9-1ce4-fcd1-81fb-befe2c9a1547,3695040182,11945755093893937298
+eead9b0d-1988-726d-9f29-161b7e8abc00,11794725,5164795442341957724
+8e53ed20-2cfe-2b34-1752-2ed3872c8f2d,4131119367,2384388853058202982
+e65611b6-0bfe-47c0-e20a-d2846e5857e8,1099357635,14142192976620386318
+c441e7ad-f041-2f5e-ae81-a58fd95de5f6,906830416,12408645523674725494
+53e002eb-550f-e540-aa0b-c6542d0e6e67,1270426559,17381356105766559373
+146e4383-508c-b225-a00a-f37efed2c7a5,3185598282,10030163834477839377
+01351ca6-426e-1709-ebea-d68b558cf982,3319865316,1026560602584261236
+723a2492-707e-fcd4-4eb4-03a31dd1a448,3450457427,4203481576511501360
+c5a7cb0f-2278-fac3-2807-1e0d062ae074,2465399303,6003226445364837697
+3c356e87-284d-0835-0bd4-ee6968cad9dc,1918259783,13318783765332316527
+0f4e685e-abc8-e08f-3b6c-cd78e3b54fde,4150677924,146741460582056853
+b8107d65-76d1-03de-4937-09cf0bda6acf,73753621,17761139925234126088
+f448d46a-314b-505a-fe8a-6918c25023f2,1977051435,17651642240542085027
+e9b3e03a-5ae5-c904-9312-1ddb81695c01,2073672613,7879452615643869513
+a3f4ecba-b63c-b719-b315-727c2848378e,1209651289,17558178152647403468
+e9ddcb09-fc53-cfde-dae2-cd756d18f888,1186625672,17003487866557127003
+f9fa5720-15ec-0994-2e31-12182e234fc9,1543834590,8580703195846445589
+df050d90-58bf-4242-6d63-3f3246e32ae7,2791988526,13027979737348996296
+b1858e27-5364-856c-b193-539ffba8b2cb,696914744,2117550701535539850
+c3795cb6-85a7-b331-829f-4b9f58ff125d,1706865778,5648750951270251981
+27eb9e91-58b8-3015-bb64-e9c40b2ceb73,1382957317,17619688059905081959
+09fb0bc0-8fac-491a-5875-7c980fd4851e,2290203982,17719809833797261007
+c02b8666-85bb-e10c-db92-78cd234c727b,3406094146,18071567911257861951
+a1e57818-26f9-db06-c243-0e31287c4d6d,946825851,9762252977252760077
+3fb4efc0-26fe-998c-3821-32a719340bd4,1196613346,2015379365925575759
+910ae40c-27c8-d788-dc3a-7c0e7c6eb1a2,564136920,11757005481101797906
+8abddec6-5dc7-2f1b-8771-44c26c582987,1990054287,4216886880098919489
+787603fa-dde7-3862-acc7-a71502861f3d,146379176,1239895649286235119
+94d35de3-9572-f845-032f-a49fa462a62b,3220516587,7286944685068266143
+e271e260-6711-8ee7-2844-aaa4cb09fa35,2752638190,5066272595715866940
+d62750ba-6793-715d-90c0-fe83a0f8b417,3153981980,11393214650300069358
+bcc22cea-6dd2-2798-48f3-42f40b82c5fe,3954865649,6391401073016490910
+57c684ff-3fd1-2ff8-a3fa-b3f301d0aea6,3208087947,2592004623235323094
+ebd6de0f-a4cb-0b4b-7546-8cd2974f6c69,3803766739,5337411333578683649
+ddb7f746-4536-c18c-21df-9ba253544bd2,1953127012,17622264558697249137
+30321b3d-774b-0634-34bf-c91c3c0f373e,2428113355,7596091272868356504
+55423b4f-fb01-d261-e844-674cf81704d5,3295303040,7323555754432728994
+16ede3dd-157e-ee36-3ea3-729c155cdd0b,3837069522,8115799962678128143
+58e867a8-6949-21bf-7cfa-9fb672e8748b,4085472500,16779727976685661747
+37732bae-965f-b7f3-e849-d0f1b4852b45,3946315888,245997243407858793
+42fc1eee-a514-708f-6f4c-d7e0058426ed,172652925,8005028408190106510
+bff68aa7-b1d4-c4ad-ae0d-41e5b263d462,4260524392,8122045829464764798
+6f804c45-eb73-41c5-58b4-d7c1876fc01b,977983554,12952578141312938036
+e6d81a06-152c-3d5c-922e-a9f0c3a2ca9a,221258380,9302417376428577460
+17433ab4-bf4e-08cd-d18d-b4505072da73,956857999,15004263325766325443
+c327bdfe-6b4c-0c3c-9f8d-e5f7267e1d83,2613993085,8155453124168974969
+eda1458d-aeff-740a-4f89-dd37a5d9c955,428009335,15368157597376076631
+752165fb-2b38-781e-3b26-e6249345725c,565195401,3268451128254454571
+777d9a40-5e36-88d5-c7a0-a48113a03fdf,248333500,8843718647725889831
+3cb0e09b-8940-e535-3312-29e1354784be,433831647,12684983987053369163
+1388901a-e6c3-0f8a-c7ea-5a88f5b375a8,3747171307,15523326282282528752
+72fc2e02-7bba-425c-d937-b1ee79862d35,3391697550,15949087672431858176
+e2f6e00d-95f5-2a83-1349-870d4fb236b6,2171990341,6448643485816601644
+40845e7a-f0ba-cba2-1a07-7f52b5a7cb47,2925584931,16374976747323734359
+5fd330ab-38f4-2d2d-3c2d-a5277a8642ae,2055530207,4230538486387659247
+14d5f732-0fc8-5dfa-4c14-92146c965c0b,2548276109,2176476520483170237
+0ff1c228-0852-8ac7-3984-bafa4f1dfb15,1520956832,11298688402438364729
+1ca60a31-fe12-8491-35db-1a5999f46895,2255435953,4713347545974371559
+4d57142a-23a5-37fd-2693-3b72d89bb36a,504096047,8206770335390310817
+afc45b48-dbb1-7b9b-9d7a-c7110f957533,286316517,16164795970505962730
+21e73b2d-2e98-baa5-3a45-51beb25f09c1,3147862441,15515877254794619342
+5eb6e33c-f7ba-ce0d-dca8-f944197ffecb,3452057565,12964033822465108330
+2c095d2b-f591-01b1-89a1-26e31da1b473,1254989529,10541454651852008624
+b199b1a0-a7a3-8340-049f-061bb87996e5,1972235175,12979906544543513900
+8b50957b-a790-fc5b-95db-d41108a99b8b,977580894,15701513140199841989
+a932d115-cd0f-907c-e85d-2e862fee1bd3,4035243497,3558115822188331108
+af1a9145-f398-5597-aa9d-813421f155c8,3466029436,12371717411711857129
+cb2fcb4a-f265-134b-44e1-d74930595a43,459383386,13591010055784127280
+3cbf1c5a-567b-def4-0c53-213c56dd29a6,3452355126,6184669852952010414
+08e21a71-1c31-ff31-ccf8-6c1340e93854,2292274782,16005482918824668711
+8ce70e6a-e743-b3cb-989b-e79f4e580eb1,1290526957,814582230700284585
+463c5435-b00f-15ba-59bf-60f03deedcbe,3141611615,3474835066846028000
+35afacbd-648a-9019-f4ff-61181155d3fb,1767970732,1131172635126065313
+2806ee2a-7c2b-6366-02e9-c136af8e2545,799355077,14109654414968604002
+09185e7e-4130-970f-4aa0-5e6c3510d7c3,2925431430,557986170285703565
+84840237-52cc-bd68-ac98-131b22f00343,1054428307,13552938313088425938
+195a69f9-b879-2b59-a2bb-a12d3e3c6d56,3554678550,3857571956578290132
+5aaf721f-c4a0-d4ce-de26-438c05bac9f0,2331572894,6032912427645476848
+09891eb4-ab1e-80d4-6ac0-4d43e45ab1d9,1352035362,6477300746962252843
+540bdcb1-22ba-e7e9-ede4-7ab9c710602e,254969752,104595457965966998
+bc55af3e-98f3-2688-9406-18a06e42d71d,1580813280,720875664029194199
+d83a93a0-e537-07e8-b639-3303940e0b8f,3833717546,10732472288680811556
+076de527-8cfc-2296-2a2b-f732ca30e881,362494637,11741035747753111526
+8723a5a4-5224-e727-941b-e85b80999068,3984716606,2726043017867165638
+36262585-1ce2-b6b8-239a-57054fc342c7,2568689095,1977422021147739250
+0e6e1a1e-cec5-4651-896a-e93c6564d772,1023210125,12396730926057487004
+4aeb876c-3e60-fcb6-52cc-5527e6631ec0,3966699589,13248679511091159773
+21da46db-ee15-73bb-3b0f-4ca811f11a19,3488402462,13821514948029777209
+ab571a25-fb1b-a1dc-b42b-0f266b352c6d,1490233466,6855223184309136085
+32cd3f55-46fe-e4d5-f2cb-1a0a873f056d,3554207097,15784352628012152853
+aaa337b8-b5e3-b147-484f-23ac5fd7b927,3128171083,3682962671386664544
+7ffd75a2-e7e1-62c6-4cf8-35477c2d2ffc,3518082437,8786240619573125263
+3572e4fb-53c5-fce7-daa6-e21b632e1f6e,1536701571,11152698467948324312
+e09a4d19-6ea4-2f9e-21e5-7c5be5feb2f6,3995991672,12435777668473943792
+fb66c17e-aa1b-b868-7546-b6c2b6155638,1543394077,1446301851634351997
+594db7e2-75d8-e82c-d056-100d7c3cde8e,2655002140,3189808148560702122
+c6c0e314-bc3b-a97f-5028-c26a676b8d0a,3289696652,5564960726802995468
+394544fc-561a-182c-4515-5a867e14a400,1772005178,5132290632940413836
+786f04f5-3180-85c4-698a-72e0a5ca2f42,586338073,6766555926443349723
+62df2135-85be-c2c4-baaa-bc1ecef5b707,638047622,6543417144058674015
+00bff1b5-7ce5-cb02-e080-5584701ed825,1622945431,10145339778612449335
+4fc58332-c39a-05e5-495a-8e93ab67f163,1458758806,9948109307261008451
+ba594b42-c1e0-3836-c715-828ffc360caa,1507836481,14793020569017727154
+d2750c96-080c-5a93-4b6a-9ef806d87074,2348061972,8679059176302738807
+0e148186-5db8-1de7-c10b-34d38fa11837,1848674534,16954426665187442648
+097fb7c5-9282-7280-424a-afcb139f6874,2636501801,18268340789992313733
+b30643b3-25b0-021f-c7c7-6d5857b5f213,2833584197,4378748992713943151
+eeee740f-489a-29f5-8736-163758398bd1,4218120501,8946225414932692492
+cb5b7ecc-37ea-1434-b49f-2e5c3ea72890,1369071069,2874736830465460417
+96bf060b-1ca2-581f-799d-f7286d44b05b,1703731995,7474221368154126662
+8880ba46-87db-5a01-58a8-18411885adb6,2780812569,3544575928611883008
+96036b7a-4fcf-6032-cc8f-a5fab8aefad6,2787915830,9681514072843398754
+236d9c7b-732a-d16d-f6c2-8295c89302ec,3679575196,18026098399871075259
+bf67866c-1dbd-1dc5-44eb-c89ee9193799,3215955909,7326893942490454852
+dc839e39-242e-5d82-d77b-eee1fc0bb611,3603369419,5578423548114982090
+488853a0-886b-fca2-3d49-0efafbe8107e,3498604998,1662478445540134489
+de452a58-3779-cdce-f2a9-a27774fbbd00,1702206604,1687282033000728587
+9213e794-5d54-a468-c492-f1ae373affd3,3879386346,488560421358855617
+42e4b7b9-4a55-c36f-145d-c00e9844de37,365335258,11590045375013159575
+10eb9b37-c973-bace-691a-bdf855e14f09,1583646829,3965519615402981563
+a6580ccb-7b71-43c7-aaec-0b548b4fe964,2296170084,2107217065609180296
+eb389e7f-8e69-e2a1-19a1-3d3536808a3e,4026194992,16552392419318448246
+b6550187-bdf5-e04c-4ff3-49a981730692,225926552,2694296969290410373
+69544e05-f345-b0ea-3534-f76a930b547d,1512715470,15873083809719360880
+1278fb6c-6326-0170-d3b5-58a66b102faf,2128446866,16737063153324718362
+1cf12664-827e-1c10-129d-eb27f582bc0b,627000145,6600848121157415191
+9c557b8c-7ae8-d753-d68b-9aec7aa37f90,1682313320,11842955562167959360
+f3e48ee1-1524-8ac1-7557-428b5194b077,4135493202,14371484628677114974
+1a0ec6f2-5890-81bd-38ca-e6edc87dca71,3249400942,3710091512546813245
+ee5cc4e4-eda4-24c6-6fdf-dc9d02345cbf,3957545279,2307963940204905383
+7bf768c5-d952-ff3a-fa2a-7be3d123c5e7,198549460,7934766203831093522
+5d07e710-f449-1b67-b4d0-4619df9506fa,3609300831,5953384521361886978
+fa12b28e-9c3e-c0b0-48d6-692001e77891,1494305618,14761323163093641627
+a2a07287-3c99-d52e-ebaa-c5c34bcdc8cb,3833232767,9473692950738179147
+43d98e7b-82be-d938-b0a3-cf5fed3198c9,1164849706,13804950994282063233
+25ba77db-a9ee-df1a-dd10-a8ffa272570b,1379821877,1831233765321166169
+1e6a950d-f5f0-f9c4-046e-6e38c8f4234f,1647486263,14649803771033358183
+0c069ff5-3b66-1464-cf66-c3b37c5e5d40,2262495522,14531943576602812308
+25fe12c0-5438-c744-da6a-106bd3460910,3462438305,4450373259882961142
+bd50b648-7102-c160-1d46-ca3c31da9e6f,3001733210,18119058707026048958
+9c19d7f9-297f-44e4-fcbc-2c2d2b4978b3,1151645008,2298196667387852889
+cdf26d84-1647-5bad-245a-536eaae0ab5a,1460706596,14460467079345112532
+cfe219cf-6a58-14da-3e7e-bc58f7e00678,3233677799,2553108253722319728
+78620406-9cd0-ec89-3ef9-d94fc8fec016,1668028716,12065995220439915128
+47bd9c6b-0b03-e1e5-ede4-41883f35c3ff,2422375663,8017328425256942631
+3418041a-d5b9-d2fb-0b18-75c25e1aee5e,1969336992,6572031466596051108
+22a53d0b-2fb1-0d72-448a-56078631dd88,3455153885,10294308676725860909
+ced14f7d-ed25-462f-4692-2e8d6c4cd2ca,1951926179,14506563361355018468
+32139153-2eae-98c9-8ecc-f2b07798b8ff,327328963,4845931417636894565
+e32ad944-84fc-72d7-6698-5a88b5f7f77a,115437745,3939297410462077271
+bcb5f855-caee-3dd4-3eb4-b02b8a9acc04,1929504717,9514858576082190380
+ca6c2527-1aba-5e46-43cb-484f82f3df72,3837114415,11228340572979661546
+f11eb64d-7e74-ebd5-40c2-6c23ab54f7b5,2439382187,11214830028008272073
+eef9f8af-4306-f4ce-4ad4-a521affbf12a,2258138138,18226331287284333175
+3704331b-3669-a276-5e23-0b93942d024f,1403942184,13826650060487176803
+94b713fd-383d-b7de-0d97-da8171da7041,3713035370,7922630621845978989
+a2d8e985-f740-52e2-bab9-246b258f3703,2777930856,14528703810312120772
+10ee3078-ff2b-7190-c064-e20a4c0dcaaa,2651644935,8195558345251691364
+e8c18d2d-4415-ba7f-d03d-56b94550e45d,32881525,5357411792752373003
+0a05f408-4b41-d4b4-8bea-affdc1b30d23,1521146974,16232315497313479640
+33994caa-03ac-d09b-4c9e-a32e9570c0a9,3577294587,15894120850434243193
+b9d81304-976e-5dd4-7a03-b8951a7c91ec,2056910110,13084857327497032772
+fc446636-0e9b-078d-134e-e7bd1487b109,865141538,13010448577153842792
+23b2ef94-c31b-c7a1-96a3-a95d004b0a87,1975317890,3453081177525515637
+51d9a535-dfe9-c7a6-b18c-4f4dd106cb4f,765700273,9700895531015906452
+ac55c930-db15-44c0-f3c4-f0e58cfa94db,984308148,12360782980225500089
+a2426477-37af-f9e2-c7df-04da9ca74268,4120767832,16894728290972751254
+1447c5e0-8f7a-43ad-492d-04bcd89dafd6,278967302,6250954938837873022
+64136fb8-e630-5a50-0c92-1566de264211,1476189312,711943179925946896
+2cad7f7e-f8e2-245b-1ccf-3b8f2f8ce6a1,4146600064,13180183156411318791
+dad37a05-333d-71b5-1a0d-3a8b19c8de6e,975649035,12016636556452852313
+cde09966-bcb9-26e3-4b28-66b67f3fbb2d,228364780,10742779987126778665
+32b91fe6-c3cc-011e-2372-6ec954e6e7c6,1734387668,9254470305080451387
+f30617eb-72e1-cc59-0942-f4a5ef880e59,4125510889,2705527805749213114
+ea52cc0b-6b86-641c-31f7-0e7eac7461c5,85676487,10521742140415921024
+ee06675e-8f27-0d44-864b-253e3246878e,2880685265,12240572507208234486
+d72402ea-095c-a7ef-d1bb-85e25f17d3d4,3960496356,5262537039398718274
+fd20fe45-0748-6b1d-d642-b62ad96e93cc,2844877922,3064490558573937573
+e3b6699f-7bd3-38d6-9167-766b5fff2325,3916515057,6272885974796195477
+ae2ed2b1-0658-a21e-7a6e-e50d6db9eb85,2314141733,16585277300152609485
+286d58ea-022b-da33-8a3c-a75c02c55d58,3172652362,17990380713209515135
+fb829e3e-37b1-47f0-91f5-a57dfdeba91b,2549952393,14409807712022772449
+06d60732-5a9e-6404-e1ea-79dfdc7a858c,1210886191,11989721661003859533
+bb19ef33-ad6c-0996-58c0-ade9eb98f4eb,3102076501,15378759534773944399
+058f7bcd-11d7-ae8c-bbae-ea4645faf031,3080978392,2076108821717375819
+256c3b61-ea60-87a0-d00f-c5e7030384c4,2321062507,7830541535017334974
+a6f09cf7-4b32-2822-d385-2c4cbf62edd5,815499425,14686171605818261930
+c64504ab-4517-5a46-7853-e676a461f07c,2039234519,1199188567678047468
+43a9a77f-0617-1614-8215-731a70029a08,70824613,8340747540926620855
+2812c49a-eea3-3f98-b005-124a66a2a0e9,196899327,12652229583564461127
+c149c783-f762-573f-3be4-0618a9f1196b,493319686,4045312559413241693
+34c8f1f7-6f95-6641-2235-fd4f851ea42d,773460566,17300042626357932888
+9900eba5-3c41-eea8-8dde-ee6cb4706aad,2884405116,9099374080624521017
+dd2a1873-f43f-a4ac-1888-7a0d4cb3c686,3870934099,1807621312588892431
+258d46b5-7ee8-cea0-2c54-e533cfb14df5,847867904,7631395193364194215
+cbd0b32f-6729-b665-34d7-133991f8db3d,3944346495,4962780187064775811
+4489f462-7eb5-5a35-05a1-145deb76479a,2752419240,3562065209027012382
+ee1d4550-84d0-53d5-cefe-048c50020492,2214464601,2804470842547648054
+b0d955e4-42b7-e7ec-2e0c-dd0be25d9c1b,915865707,13376126050589981162
+172caa23-fe82-2f5e-befa-fd736985bab6,623874405,6839645520072878377
+fcebc84e-25ff-6c3d-0d36-685c110663e5,3883562881,15565804773892428268
+56583b2f-cf76-2205-20ff-086822cb32ff,2015223733,15538056809679568858
+32124b2d-a80b-32cb-46ce-91c6c1265b65,2343721076,7032215757804585434
+c60da5fe-8c6b-8316-e4ca-e8b31334be84,990098738,14019811233306312875
+6e34bc8b-0628-bf0f-8876-1d44b8a5de52,1196015420,18349236902423100869
+acf1bcbd-c1e1-c19e-8b67-d58b41d59bbb,324925307,15332862006896358128
+837b923f-e0d1-f83b-0035-4cf87f12d479,3405956292,10963437393068262686
+b9f1f54e-0ae2-1d1b-c517-4ff4b1833d11,2243745583,13480204266709707403
+5e9b8b51-a1b8-e14e-dcb2-2f8da1a2dc96,4282305316,15724076721994624856
+d46a2cc1-24b5-3957-11e6-e452d9916775,3574433783,4176616369132111279
+309aff3d-c209-b4b4-2358-98ac34b763f3,288425983,15093764553618382503
+735f23f9-afdb-f508-e22c-3379316f2c9c,2011515427,10928077183933524891
+5bdb6c6e-c22b-4093-06b6-9c36bb7f9fee,2340046927,11318313502724381464
+ce596b6e-1e11-8047-4eed-5be7bda0cf48,351460148,3706175721856243152
+8af6d1bb-d50e-fe70-a0ee-a77a863d9384,2754441218,13078092630660819231
+43fc3ea5-5f8b-2a53-0515-57284e24c8a2,322572024,4850792594041711320
+41bb8126-09ec-ba8a-f515-42a86ba3b4fe,10226900,13655141650801110848
+771895b3-43b7-ae5e-2498-50cd15404c73,781932330,10502241872610969093
+6f124a79-43b4-5121-892c-9aeb3a2e7ab3,1081036861,3643207112543325220
+013413de-e866-782f-9eaa-0bdcc07e0f05,1304396124,9568583761542062056
+827e6ff0-a2db-326e-9e72-4f67cef51eb5,3854322705,17317062127932040747
+1c97b02c-2d64-f143-996a-158d12cd3100,3948311234,12151664719971878249
+8d3536fe-5f50-e408-97e1-77a560b64eca,1333354383,17255772572150830791
+13a2285b-29e2-baff-7602-443b81e4072d,2868912837,9507264089874355524
+cc8ecb3c-110f-6134-e7e5-aa9ea99b78b8,3992256868,1271742006429897694
+0040e619-ab0a-f9d4-5cf1-190c6fe7324d,3340012337,6868859239878224471
+c38919e9-3edd-8880-c5b6-9c9e9c455621,2108680053,862563964633294304
+6f7fc6fd-1323-35b7-8b1c-3473c3b650e0,3742449845,6712896997466037833
+4d3bb646-7c82-d98c-92fc-24d4ddc02e23,2830422883,1968983910870947615
+db65d00f-4241-d39b-c001-360f2f969ea4,3194091528,5755658891964204914
+49873225-fe47-7406-7682-194dbd6bf6b1,649090748,8832567804104701763
+1ad8101a-5ec8-0810-7c88-9ee5a5d0c390,3240354001,9743725415836411488
+bc13bc0e-bccd-2975-074d-3a392aa65e88,735764876,9802327805386323815
+e9122bde-ac91-4fbc-bcec-9a3c472c61d8,2955847825,16444693882531107736
+d2cb8829-0859-27a1-66b8-99940c156322,302964607,15579432779984946704
+50552355-27da-4a74-9586-394af1ebe58f,2545267038,10313172788304045923
+e72c9f48-4881-10b6-d7b1-4667e90c7699,3662614487,13221716559480959502
+519b992d-35ff-8458-71bf-8c15802b8b5b,2748324455,10617666902830485744
+bef63566-8867-6e94-4be0-f8b3920fc417,3663035994,16978031917968939576
+fdae08ff-78f2-0fbe-d127-6dd96ee33af9,4116715631,9054826036122130411
+c537b574-70dc-90f3-88be-1484dc39d74c,3472817363,2464707205895726853
+7a780521-3956-eb68-b7ab-963fe0d35d8b,1278728879,5337625762477012416
+4551d5fc-8f6e-99c1-600a-d6252cad8c33,2562121325,12968384725183215864
+369f7ee1-616a-34aa-943c-0c90dbfbe847,3629542656,2865627431663851517
+71c3bd54-a5ed-d9d1-a983-a9d11e8ea180,2703552270,99522603782253433
+ed8d99e0-237e-5a41-f28a-ab8c9bc738b3,3091399222,8748703007115811695
+92796efa-59e9-b374-624f-cc3cddeeadbc,149189062,8847646268785432871
+dad093dc-f8b7-7006-6461-47be2a320e2f,4067534056,16394097954653382786
+9678e2f9-eb62-7f74-db71-daceb8adab10,197105706,14208031413705902451
+f86652ce-86e7-2588-77af-620d17358cac,1314765541,7644189395537340989
+73407361-3adc-29d5-5856-57753a0cd9e7,1068679266,5196865048550380986
+b1e2f855-3e0a-2568-0925-8145b4647f30,3878096333,17058128248763510787
+e48b1c9d-3436-80b1-2c1e-6e2fb6807d8b,2171827959,1479811257188501692
+42fd21c3-5491-3a64-4a5c-08bc1b61abfc,3804705315,2067477363927581589
+c503289d-ae15-a830-0312-c932e92d697b,1193839507,7740839856532486309
+a6f43643-4e2d-3f5d-fdae-643da50513cf,2984467580,1520179944808183565
+7e139d26-9fcc-b231-7615-d2a0885c33a1,1547775968,17833839204759471904
+d93f1350-3eb1-8a04-8d92-b243dad510f4,991671634,12911260896466606850
+b0c4fc27-bc0f-7d90-c570-1b1fcfb9d379,4166493878,17618888304423516391
+2092112d-f3c3-6a7e-2ba7-69cc8c6c223a,2189122700,1185191462685686009
+a658e763-0b80-65e5-602a-e5a1ffa96105,2732417857,14736288963173874705
+b0e12e69-63be-bd3e-ae8c-a600b33553af,2482315093,1972414481500609707
+9b408055-0dab-4c99-9c4d-1a0bac301bf5,3804963170,6344665900498843335
+e27649a8-4b6b-4488-464c-f5eecdc91ffb,107578315,12082536922076756586
+6fe697f4-8b0d-6ebc-415e-362789419e82,2386658709,15303084765427551318
+070d7595-c836-d15d-2ce4-c54cc1e16bb9,2078713168,9721671610641305937
+c3e414d5-24bb-574b-a4c2-6f69488b18dc,3738396190,15139380919661930739
+60360f6a-a5a7-ccf8-6034-30995978a2dd,2532025108,9184380973898601753
+a4304c76-10be-8111-7a5b-d4f6b8ebc954,26589939,2765381483115785117
+3b9010f6-14e5-79c5-d746-1cdf88ca18f5,3586435093,9958399575087293623
+a4bda861-087e-e81a-eadf-61a0bea3f630,1285970428,9623812096287912120
+c4b294cb-f745-6e88-0ee4-df64e21ac96f,2957377831,7009948464696268290
+20d7990d-41ac-f08c-efb4-1a19be2d21a4,2273341112,2540112228600621213
+8c395227-2f36-1837-3337-e476457e8450,786615106,5420929217008924431
+7b2a1868-844f-0720-4f18-849e4ede2933,4039329349,8371974368315079200
+f2fa245e-af3d-9b61-c576-185540dc2c63,3228641713,8900664665833945819
+3f624cdb-a21b-1296-c3ed-d9067c73bcb9,3785403709,14763627726916101091
+c57e02ab-4d7e-f459-0d70-e30140165509,2541929031,2985147144062615671
+d4242b8f-5a59-c762-79d0-a85a4c664e18,828620074,18163802989595282078
+52738653-d646-1b20-7643-2fda319cf06f,3390377105,12170551491943172011
+b251f07a-3bd4-b5d3-e27e-e2e075568aca,2856517061,1392426559599093807
+a7485f12-6f18-bb2d-3bc0-1355c8d15c31,1665058908,7129407532869844944
+f0c6eb65-92ea-3364-8aa8-cb13be5eba5c,1445750977,8953746584814637900
+82ee8e38-0cb5-9f21-99ef-1b771cad9cd2,3862082247,11544413687507265216
+3add2f8b-d1f9-2a9a-2df9-1d5cd997ddf7,694059769,18360677434476044902
+60a1302b-3f53-887c-b15d-f1d26570f917,2991402053,6657673170753605457
+35bffc02-3a91-67f9-2e17-2a83d57ef204,2685901227,1530831833077408372
+26ad0c8c-76ad-7526-f1b0-3d727f2bb0c1,1883610282,8744311165289175956
+fb1af8d9-17e3-6a31-5586-0ea7ed97ebb7,3340604569,8867219377294409654
+421c2e9d-15c9-54ce-3fd4-4db77ca2ede3,1917246010,9164358210905680946
+22f83fa6-b70f-9eef-ecce-72330fa37ce4,3398513486,7005635092685481996
+0b666a2e-f454-43f4-68e3-5ee40555e05a,464835261,17356544328445566876
+7a9d1fe5-9241-7fbc-3c6a-14a6135f7c68,3962955939,6004763046475827243
+e4b3b43b-95d0-bced-57e4-7edc446a42e0,2023584453,9152949001598838401
+2102a9a0-d369-3862-9b7a-1b14075485d4,1397190201,13822502458658700695
+021d32f4-d949-cc98-ef4d-76f2f5134a1c,134302103,7363625410701511399
+1a1abc60-8ecd-6252-54c7-4c6cc5e5f843,4000357391,2144851898644459053
+3b50e0de-8e85-94fe-a089-14a8c58fe017,1087010347,6513037098682157614
+28baa51e-867a-e38d-ee9a-5dfeda1085d7,276940510,2885145152002973305
+566a9c02-5dbc-6f6b-f2ac-f27f7bec84d2,2617062177,9428403323150108007
+3a0c452d-c6a1-9dcd-93f5-24009389e666,4117280458,16605224037237666664
+3fab60de-8931-f7e8-367c-5aa01b521f7a,1437141648,5415275400741954655
+7f3258e2-4c84-0602-ca70-b40a589d84b2,3036599215,7791722779098818773
+28f41705-24e8-6ea2-9d6a-22f5053f9bf2,2784408776,4109388407250002813
+60397b69-50c8-ca97-58e4-1aec10d342d2,870338596,14462983223601457506
+260caf72-afcf-f8e1-b6c8-f891b00234b3,2564616548,15150537049059795152
+e2b8fc76-1583-6df2-c187-076ce2f99e4e,1728216889,16240882261124587278
+762a7f7a-ad35-c02c-efc8-95479817daab,3853903140,8893887146026635219
+ae9f774c-caa1-eb4f-0b89-6b96e11b529a,896789279,13873757583167513058
+308009cc-72c8-3929-2173-487ca8c7a9e5,609149767,13728138826297522899
+2cffd6cd-6001-94fc-e9cf-ce96aa48baeb,3487793989,14009169978904706947
+ade14287-158d-f0e7-9f67-9a9f13649832,3545276629,5562629707301081866
+d9a211ce-bac7-1ed7-9b38-a8b88d7aceca,2174728041,15667598091840799322
+a9a7c9c9-7d21-ebd5-4949-015e7629373c,2240815044,15166459930138364631
+bfb62236-67fc-b5a2-197b-7d472684ee9d,1655449636,10096408200824023867
+c62a19d8-e579-7c96-f127-cecdf599509f,3369239921,6379404343714113063
+048c1d7f-2e39-a593-7590-4fa268f41306,3514858487,17246813499645997193
+b53d9e42-cf31-0128-28f5-33048e8153ac,13447848,11059347102807595334
+68da77a8-5127-93c6-24cd-1f55d48187c9,4066151372,514094745719274171
+c3ab6739-c717-c3cb-1f66-55ee5473716e,400549375,5910224258795495560
+43c23069-f5b6-039e-6cc8-1c68f25b33e3,2159706498,17501409066804508948
+08ac26cf-fefa-bb66-aa49-ffa0dfc1c0a5,3306618270,18217297438392250464
+a208f070-7dd4-d676-86f5-ddb85d276a61,908379278,7535287289265534226
+8241db33-cbd8-1993-9972-8e7946ff2ad9,4179553867,10926901623147806572
+dc8e2db6-6226-45d7-e357-2aca8d403874,4011805684,8508659965193287664
+3b108381-8fc9-f35b-fc69-a75f24c4ddcc,47545930,16671417840026269545
+d80ce3a6-d36b-a404-eca7-6969cf7b52b7,2750886079,18209944428891990996
+6ad87804-eb64-6fec-b87f-5a10f5d250d2,1350901189,9035653568577256164
+3217f16e-2b13-b079-53b2-52cf1fe22f6b,2362058179,5319174935860492738
+7a441fa8-05b4-1f50-25a5-2138c9ea3e31,1704550971,547447611725398062
+2c92e75d-e000-7d34-2192-4241a7faf28d,2569812306,2972237954353239184
+47709bd7-e7f8-1ca5-13ce-093fbbc18c80,3848811819,18421281354823052937
+767d871d-41a9-3a52-cecc-cac0c3ea4067,3539401416,4187595704422031548
+7f39285a-2f61-30da-f1d0-9273cff55092,584019866,5532973345664635900
+4cbca136-49a6-ffb8-a9ba-ffcaf6e41217,3313763449,541105961504456059
+a6ab88ed-8093-79b5-635e-2c36ba32bc07,2088473200,16562993032766549642
+c73b40c5-03cb-f059-42f7-7bf996398b50,4229352916,361221184979724129
+5a083fb2-cb3f-1b59-03b1-85cb7c2abcee,2622600783,12661671591233384299
+33ba4b2c-8d34-9dfc-b22e-8c5359026fb2,1919313740,12527592564772785273
+ba43ba9c-9973-6b47-7282-b99e4d851500,1255750338,14234558423045355765
+25d84c30-05ae-8e74-d95a-3c873c22cce0,3524408636,8640070019042866360
+3563ac6b-7253-409a-17a3-13a7bf194828,2186825168,6977997962415181341
+b90e2213-0d41-d932-e46a-f417f870ba64,2433696641,11411674348544415558
+37dade9f-c5e4-493b-2a06-236589591f31,2001011497,2777936082837187717
+d7439e86-94da-ea1a-3974-2e3c51097a76,1034468567,6312322750023279513
+1985c2c4-edf3-f768-ba70-e58b885a1417,2145395846,4508614342868503166
+dc6d72fd-fcaa-6069-7e8c-334cba16ed89,3332462940,2511901350663813653
+7908d9c7-296a-1830-c06c-0a07a5818044,965454737,14044753628324750844
+21f77ec6-8563-fae8-537b-61f58b5cec1f,3257240992,17002846852619479400
+2cf83cd3-2798-7045-22a7-5283a30afff7,3039089368,6505181955962152078
+73b2e238-522a-d6e8-8393-d337ee815392,2061610124,16982270982786740339
+382e9fde-6f75-aec2-4e40-7b3a59d84208,276608988,18275141760719206867
+c0b7d9e9-13c4-c19a-5f53-27ddd8769157,2863880532,8409570802612819498
+4096bb71-37bc-8d3d-5897-87708e3e3102,238894841,5074275712083920085
+1314b24c-83cc-d186-befe-cace0e2937bd,1348123062,14717933755055723378
+68821810-b2dc-6fbc-0af0-fe19b090f08f,798557669,2553337187545074586
+15d17982-6777-44e6-9725-ea78741a2f48,2621537932,3321918412250188245
+3c2c7815-8f85-2075-b5bc-ba351b265b40,2714994459,13166702628379368738
+d87620be-9d58-d779-a10f-118f62dec401,724987416,11029290509812439940
+8ac27560-a2d5-7767-07b8-4f41b4e399b7,3797725194,17622558171419171932
+32e0a0f8-371e-c2b2-e147-bfbe48b351df,2911939879,4141459913931215952
+110af56a-c5e8-a1cb-775a-97e0ed1e0bc8,3974274163,13696106234241842696
+392c5f51-ea2f-ad9a-2fa0-b0599c260510,801856185,5310437721558302354
+2177add5-cebe-8e18-d34b-7b6c7c4f6006,3127065331,210838336137790849
+510a3aeb-ee53-caa3-f8f5-79a06a1599fb,2907722560,18416056538927143988
+61fb233c-819b-f41c-c5d3-d71c5c5cf8ba,357207696,12784210983190407808
+60e21509-52cb-6b49-ce16-bd921a771259,1318224928,8142280917202635586
+3ecf96a5-c992-1ced-6a61-9a19a058bca7,1462069786,3540767458836808423
+48d87b65-639b-e97e-9659-95f3b30363be,2729647337,4266545194168839342
+dd05eb39-8646-7821-ecee-9daa0f2fa39c,502127485,4816604820785491854
+4ffae315-4e06-bf6e-a064-2c63e4a718f3,2026847895,16934347072404429620
+c2747941-a712-89b4-fcc4-7424355af8c9,3816472871,2252059534999706678
+ffe7eb14-fa74-a7fa-3c73-b67a363b31c4,1600711364,17292156871123045595
+e5816871-cda6-e030-b8c8-80b4a9741dc3,1744302732,1886212989823625311
+657a2ce3-2ee8-f3f0-114c-f7648112e9d1,2056059441,10749643808556623747
+5d524020-47bf-d836-f9e5-9626e3a888f8,935880233,560612083208779196
+26af9a0c-7d0b-6dec-af59-1d8971b22802,38126690,9008342881793027203
+7afb92e4-933a-acc4-75a1-66cc892361b7,2385943866,17915643595834112113
+179e4ec0-ecdf-5997-0bc7-426a3d041293,2553465760,379180748741648341
+3fe6723e-0405-f316-d63f-07e6e8bf596c,2404758769,5963847103221164473
+89b9dea0-9c49-7bf9-48f1-ae645d399a6a,940609797,17718129833516883125
+1b36cbb3-9086-e7f2-f0ba-23e3f109f934,1861879486,10242472853513350775
+0a7ad14d-4078-35ca-b195-9c53349c4c51,60524324,12286312036203422528
+70dd15b1-596b-773c-d5e3-0563bb7d5c10,4099541709,15482583733120629961
+7e309611-0b46-c478-53d6-7d37d4b18c5b,831802071,17301896266329533176
+b1ec910c-162a-ec3c-4ff4-90d65ee1a400,938544921,5046433714287924867
+938f2830-80b8-59c1-8c7d-b88a334cd95c,1124668589,1119760920069813996
+d279fb9f-47d7-8566-d4a2-05716c8191b3,2675642875,4081544607782044188
+3a8a2c5e-e9a0-302a-e9f4-428c5bf7ee6a,2593478890,9036544484492281918
+91699a0a-d695-ac1b-fcd8-4719e7aa37ba,1188214989,1111789581960096353
+e4fb20f3-8921-e130-32cf-63452df1b295,2088008786,3067417458122560164
+349cde46-7764-2e75-5320-77776ee1a5af,3230608511,12894753111371112655
+ea784870-c91c-3d81-1f93-49b91da181b1,4027048204,16295585563910241223
+0132dc1d-0661-09df-fb61-e6721c41a5b0,1827456378,6027773009276813315
+79557b08-1965-0da2-fc56-c82e1f502813,3527748890,8440937527943332438
+d27aa732-744f-15cf-b49d-38e7a134211e,1274833863,11950933565829046371
+a828d189-0c93-1adc-c26e-7f924830fd3b,3930333155,5417075616236402780
+e35b5213-cfb7-4899-25de-e60f870e2ac2,2549045833,16124414694134978014
+e61135f3-9d91-832a-ce80-6b61d97018b4,3423590990,3792187727126951296
+bfe453d7-cb32-8f8e-6262-0ed410100aea,2813530563,10923229547913855255
+906d4ea2-013c-295e-7da6-4ed201ae5df7,2875262971,16257350357841001451
+4c2b64e3-0978-b260-1dda-43d526430103,1932594236,10802389922285384003
+3edb88fa-9ddb-95e4-5808-a15c51f46ab5,3561683309,9114174887215769904
+07e233ac-f928-61a9-a920-59ea4d83f56c,3321848695,7009605429993108021
+5ba5812b-44fe-6cab-3435-4a88915c1103,331682991,16581900154881321665
+7ac40946-158d-8910-8894-d3f0186f2f9b,3648137379,1103130861677476038
+e2f5af98-729e-0105-7f8d-d2dac4e68b07,3695842371,7927867257160249187
+38bc0768-a17a-19fa-eaaa-98fe0b86ea13,1320704868,14234647098532826067
+c9d18a63-ed50-1101-cdd2-be962b5592fd,3242776328,3446661104787871528
+5a52fdf0-cfca-920b-e2d2-24c5f8266575,1707941792,5830329347532341793
+3241ef38-3a7f-8814-d3c0-75fb70aa7f8f,2622917412,5260273875965373670
+e0d170ad-a7af-023c-4813-d5f04c461633,1028429254,15468879517553721228
+5269fa48-2b9e-4fcc-3b8e-918a5d2ea0d2,3138203742,13153651346090428911
+313c85ab-9aaa-025e-9fd6-209c9c896468,2619958175,18045673621646668618
+610e6176-abe4-5e8d-7f66-6dbdee540e74,150878955,9559493041164927827
+4489062b-9971-04fe-5b68-5512a0594e08,488727887,7985592356072948050
+86e5d301-b2d7-86ff-9c03-cf73859b3d15,733444814,8677135790700237370
+2991ae06-b449-c92b-836a-1cab74e6bc6e,2366766097,5618473648277684629
+853167b9-e550-fd0f-7418-360e7b703a92,1740992422,1011331367942254874
+97f86441-3cf2-cbba-9686-a2ef82639ae5,3974110665,8563086216468829455
+76f27fef-b377-0063-cc85-3bcb2df20325,3972168132,879673114217153363
+7ba6b7de-c717-d8ae-48c2-258246498d5e,412964272,619302470202298949
+0ef83085-a939-9df7-c54b-a44075f7cd72,3658228376,6011911866268250469
+4e16e3b0-8a9a-f6ac-4da6-c8fd962b4f27,3598429560,17874767620324519099
+fce96f55-d339-d5fd-6106-3ff27bcd9838,3654853282,13134202121321899309
+c3c7dc62-0f32-5b7c-268b-25c8092106bc,634583774,9533778942552937135
+9d97e9eb-91d1-f067-ca30-05360d131b57,1153167083,3235483409851451706
+3e071bd5-506a-e633-ea27-57a1a3b917d2,570393452,3069082495266832564
+9c677185-da9b-1303-455d-d7f46cb759b1,3502491256,5825591858596418500
+b72954e1-8f69-cbd1-dea5-7e3eb47eb14b,535684459,7714483098750648814
+3a0219cd-0328-1c21-36f4-1b08feb7a13a,3906947417,6477087257756386478
+f346b2e8-beb7-76e6-9132-5150fa3d80a0,578833005,11409557288204739806
+2e501768-b1c6-c3e7-e132-16998ee2c1c8,3153238699,9977053731090945208
+52dfeec8-dd4f-cb81-9ebb-cc1d0d18fc76,1918946469,3886960597759628252
+7036d209-5c3c-c415-76b9-237a9fd65bd7,3790253857,14909089516711468954
+b6c3fe2a-b39e-de77-3565-57e58cfd3db0,1116217984,17305116218310504347
+094577b0-4ad2-d128-dc47-e0e17fee8903,1574395666,14535590354171196856
+25153ab5-36ae-d591-686c-79da302f9443,1988732647,12954240802768850339
+8310640a-63b5-0249-a58b-8b722a40e5cd,763988149,5082714256972426767
+f738f31f-9f0e-5baa-395f-df54c7f701f1,1819638840,16235884680159429808
+c7a06c45-fc22-5538-c692-5958389a02b9,338117131,1934526713902319508
+3a21ad17-5321-78c3-1869-94eeba304076,563162302,10556880466685035986
+a67f1638-fc36-d15d-efd3-24815d73655d,689825195,12793562091411095609
+92ce5a48-d329-148d-2c2e-8d3b80a96c78,1131580780,4387600823422476033
+90bd2a33-0649-3fe2-fee8-6eb8cfd98a05,669731973,12364712158792668432
+92719726-aa59-189a-d3ce-ee77109da762,2145749834,1909787158795661286
+76fcd96e-1ee5-07d2-89eb-7b5a13c0d2b8,3063823578,4943346981937965438
+030189cb-944f-93df-d384-2eb618a155e2,2798237044,7827607172515985865
+6df7d87e-5a27-1862-23ae-5dbf52a58af1,2272938902,7695717381261316412
+c2e58422-fb47-fc02-b3b1-6eab9438f25e,2339795906,6945959356968692648
+8f6ac1d1-86ab-889d-a6ad-7bcc741b6249,1387533562,17982190786929358841
+03eee72a-a57f-a62a-cff9-9ba0cd9ed7d4,2080918014,2896271182388649633
+8035972e-8a16-b728-2f84-eff5b1fd3b97,1048818154,3244382664131076885
+330d7230-d9d0-6353-cc03-941de9427447,1201621092,18428386189083038199
+6f06c69e-1222-ae13-83ff-4bc138a34c2e,3014548117,11933191675915039189
+1f1d888e-ac97-daba-46d4-e293b16d3677,1457693843,12442473361549369614
+8fe060a0-eb4f-9a2b-4f7c-8e2c724bde9c,309949169,2217032936761090304
+a3e1e421-7487-7809-25b6-f8c8a2c81519,1880000850,12401869658326328028
+4d3a9cbc-96d0-df0e-a970-d90e35e00b43,3608090322,4499401889822875256
+3993de9f-0056-ad7f-c104-119423cb949b,4046332702,9537241209967743558
+b11fb1de-4a05-6c75-9270-61f3e21da6b5,2050476874,7456599064933020126
+8c993bc2-22c0-6066-1e3b-04558a67047f,2085596610,17865678658764200038
+982de5a9-2934-180b-7419-f2958a41e409,3683785592,3029831396012608888
+e19bf6b8-83a0-54cf-4b47-88bf6726011d,3165154379,7486608362500331222
+34ae85b2-7b6c-eb74-c69a-fb7a9e1e8a8d,2614593886,12095163166738098547
+c6311869-778e-dbab-d286-f8e681b6692d,1621531160,10786929088605925322
+de8355bb-77ab-d71b-41ec-072df70ce4f1,2111734308,9853642822311966051
+6e446a9d-540a-9681-c91e-3b74f3d079eb,900028811,5630546087028744659
+17ed210f-d8ca-3d8a-2f11-a15dc8072ded,1479377350,13217897386367806196
+16026e9c-4495-db3e-0ce7-92ba2d6acf69,4199511941,14281321390897184233
+76e0ac18-dfba-a215-da12-aab453203633,1450124438,13869429564986928235
+a35cce1f-228d-4880-4e29-a6e59cd5fd18,3837833445,4813721457360003049
+9010e09e-313d-6715-fed2-d702259a8a88,63129163,10561947800905949869
+379b785b-e982-7864-26a3-ee08f7449922,2786493536,13398348947005744575
+9931b903-3ff4-b6a2-6c0c-cd839b82e0ad,3948669396,9970362553701355682
+cacef61d-6818-74a3-c769-88597659ea13,2432549017,69672850163583307
+f29db5ef-6dfa-8ee0-ab2c-b292dcdbfc88,2995349194,942602269308912722
+55121907-dc65-0e7d-1d67-6cc7792066c1,850523977,12962223239515300799
+1c592945-d29a-c000-e4db-7b8bd132f54b,3694950533,872536424828429040
+acbdbafa-e378-5024-9269-07a8b591a7f9,3400957987,13747585366639759725
+a69b2120-319f-58f2-3332-a0b6bc5de5b2,1809731268,5649928971381834554
+24622a26-a6e7-a313-f674-e18728b47756,1416421867,12449466340589498470
+cd2797d1-2b0c-2a0b-1ddf-31235be006ee,746730605,4545808371969460729
+e07a5379-aafb-19f3-5cf1-1e75bcd6784a,221991497,1341494765909318076
+0b5bb51f-12ab-b8b1-8538-4a88bcbe41eb,741922402,10715878184068415709
+445dd5fe-c391-e462-82ae-3ae6b6da69e0,1556012674,7592228405232615845
+85132ff3-72ca-f60f-2fcd-0131f99f2763,1846863329,9535640869240234123
+b0c5bb09-6adb-963e-d919-bd8b63515cd6,3954346285,10903475404159446
+99765f0b-e089-878a-d2c2-e47b860be18a,1197037262,8061946935105142823
+d7a131ad-6136-3a7e-d422-64060e1d2662,3658325385,6086167885399228332
+eed5d20e-848b-1ca8-886c-64086726ab4b,1646560794,4859161626502583733
+060090d8-8695-6df1-0bc3-c5ae7bb56d2a,687965972,210826101406193760
+f5b17094-c473-ec47-9979-b49e26dde537,3278422406,16171439081902140137
+6569b079-6ce8-89b4-fae0-a6392cf8b439,276950496,503826668869655035
+a7bb4efe-d82b-bda0-35f8-bdc1d5e91527,3893975670,15711888654996001261
+e60e59a3-eecc-6c51-e2e8-0be04a3e3e68,147397545,17108743478421188181
+f63d0ffa-a750-47aa-cf57-3a39701f7bb5,369418199,3264462913582205884
+391c24dd-9121-a014-3121-4ed24e802cb7,4161099116,6337232525204372150
+d7afb7b8-2ed3-b16f-f293-a07da30cda6b,3514602335,3829047775401041079
+af411fe6-63b1-b06e-de99-583538c57059,1030929785,16327692374493890744
+8b690f4c-e6a9-5a48-d914-dbb92d69457d,2700535028,8177078675482991235
+ee4cec34-5c72-0f2a-dd20-89828fd76fe4,2716364574,13725282359641379344
+4156a008-1ebb-66fe-13c4-2bdbf77c365c,3935047297,4855961789837012146
+3bf12c7b-0818-158c-cc0e-fdaace824ae6,2335027906,1444239953486704849
+9018cd4b-25ea-afc4-6bbd-d21e9e8f736a,2876055452,15888490617757781426
+f6a8f3a1-e971-0828-90f7-7bd0b444f3b6,370995624,10122795523477604045
+a029c4e5-c43f-57ca-2d40-22ca27b9d8da,4025738575,9581361248599488634
+cdf90581-ee2a-6e18-ff87-30790ee182fb,2819466606,13086962772496242012
+ba911314-3fc4-2b6b-4c70-99443d3aed26,4221956151,6128938743687117529
+83ecb8ad-76ec-e8fe-7369-dd03c4251b6e,2943902403,13058460549639036210
+910b5574-1d6b-3e71-9c08-f4ff69fdf09c,1802867571,16828478644391641740
+8f110ab4-eae3-c51a-8749-b11299fdcc1d,2911353791,16203722427526878419
+eb684642-e1b7-0182-c789-6e1242fea998,501091816,1496671790138468129
+a919580e-ef3e-759c-a033-64f7cafd16c8,3270991153,2953917701380822353
+ac4bf620-00f6-cc98-4d33-0006dd703ed1,4272100194,8178339119789057685
+640219ff-c948-4733-bab6-0fdcaec5fce6,1472552962,612370921189472516
+26487673-6d41-2c33-f78b-56a7d57b598d,1690547953,4482493503468791953
+ab06bb35-04ef-cb42-dcfa-4287002ba57f,2193391230,5747589501008803204
+026e0140-1c85-c88a-35a8-bc52d3f2d564,2309391401,12723269636672081436
+23c595fe-3acd-d6c5-daef-1114713e4d73,602838096,9698667826640201843
+ac536e5d-8fee-0e56-989f-79af37f36120,1972135524,4706005904553879631
+09ab1bfc-a7a5-ad12-c7d0-7a8638672af1,1989736686,6789617629187463492
+ddba7ee8-75e3-5aee-f83f-6831bf48142a,3827422342,17901221950755745449
+b3ff76e3-685a-44ea-27ad-b2121085b06a,1067303467,8442398599587010040
+84cd7b65-46ff-e86a-3db4-71fca94dcfed,1888177887,15054651943458519550
+8348f5b9-6d78-8cd1-d967-437a7036be68,1152205932,13267568766510754447
+8bfe4f2e-758f-743a-601f-f8de426cb9b4,3204992473,7863803706606413966
+a83afe9b-80f2-7ea0-5bc4-b38a1777e4d1,786321177,11625530956254329766
+fa96de13-69fe-a950-aaba-7a3001fb0f2c,3948598209,5183901904367782779
+ed34a85a-e8c3-054b-5e1f-bcaeabfc5e39,2683749862,13382781539163416144
+888ff460-2b79-23fd-415a-8d5b9c98df0a,2628630307,5533220558298170862
+7978e2b3-6065-a6db-727b-eb8f3ee20c86,3912779659,7205175414216178855
+8936c61d-84e5-06a5-396f-bec515490c5f,1689305050,3725268665050576371
+dd882421-8d24-68a7-05e4-3307e153433d,2598190880,13603968059982219529
+6b59579e-5d9b-3ac3-49b6-5a66030abcb9,3550541041,17055075839032302042
+a5e2325d-fb6b-feea-a7cb-27bf6fc1bf36,3020264172,6322848464803511955
+d2657dc6-5b1c-9b3f-14ef-e42143aa839e,1871299025,16466605634492998232
+5fc6b32f-4062-358e-88b1-be4853e5f891,2356901191,916953290262210270
+0c25cbc5-49bd-2f4e-c2d4-3a399ad9399e,3087682689,17779427790189280
+823eab7b-8b89-74cd-26f3-e7d2e3cb8542,1980335130,10143804196276541229
+742bbf83-2cf5-0bd5-9dfa-f8a8a24d9b40,2185734112,17635292488031165299
+6940bc14-fec2-3352-dbbe-5d48ce56295d,881428757,10445666303215357542
+a8e7f5c1-a397-d554-51e6-57e1a9d7b680,1505042340,14031558090919027953
+1ac2a4bb-77e8-1f6c-5700-4bbf25ec141e,3490327812,6488212707497440390
+525e2f7f-0dbc-6817-f93c-a282dc0ef657,4247240513,13847484624084369935
+caac5adb-34ca-bbc9-5342-490c3274055a,2632337685,3270582877440109522
+977aaf99-fe80-0035-5636-8aadbb7cc459,2444753058,13063933878505212994
+bd6bf4c2-5da8-1d34-ac58-6f465722503c,1593743175,1588710908038758694
+5999903e-7c96-4684-daa4-173072dffc20,1949323602,10908712350567589170
+94bb3352-d4c6-7935-85f7-3faf3990fb4e,1156301504,2751642460233590650
+8d1bc76a-55ac-6c9a-fdf5-b27ce3161083,3856630598,10338711884481583110
+80d246a6-dc30-fcac-f86b-2b1ff46e712e,3311702572,17131658411547654703
+b613601c-be98-a296-bbc1-a2027563e301,1519626284,4207091584629091470
+88e46ee8-1e83-ab8a-8ffa-0527081ddc32,3529325478,8183386286347219043
+6feab600-8c39-471f-7005-f7c2b524f1df,807191704,4550903344313899042
+70d94c81-d7ff-8af1-6001-96b9e18a1c45,197276081,17270947731602154349
+375cd424-7f22-663e-0427-351409042099,2404560883,9008361405091024563
+ca10785d-93be-cccf-655e-cdaa7f59a556,3512664941,8088114703284044594
+0275831b-270d-5cb6-80a5-d938291f4112,180046838,9985396214885496449
+8a5f8a9b-a12e-9218-2a57-b74e5b263cd5,3653106434,5539176319883730285
+bf02a25a-dc47-e2af-ae59-67d25946d144,3288173834,11647500015175868407
+4ed357a9-448a-0ec5-dcce-aea6ab9ccfd4,1437912956,15788439607130737602
+9e883d45-ef7a-7c82-ba89-a53f5a16da53,2485339027,8934977100092374858
+8ab5f46a-7e63-efd8-ec8a-64b9a1cf9ee1,2613972245,17882160070134304662
+d158c313-559c-4e55-f98f-f62ce5c53ac6,662523509,8162002614139089081
+758d8f5b-ad0b-b7c4-3fe8-9daf08c6f4e1,3831665058,12629457080543347228
+c78f3ab0-f790-02eb-6f63-852c60a448df,1999953326,5420280497805071643
+037dfee8-f347-d8f6-4d79-922dd497a961,3071410971,16872751992348735890
+bece6115-b931-e721-8f81-0346baedf035,3850962408,14006864912106299606
+85f3f60a-59be-ec27-1fe4-fbf8f2003c65,2192320809,15006098945023582169
+64523d6e-a345-2b7e-90ce-e26df947c980,524986743,9097208521790727917
+aa1ac55b-7fd1-9416-aad7-cf6b2519526d,1830012989,7864200836916951809
+ec0f839a-3c1d-edcf-e206-ae5471c3acd8,2019674407,16038504565798717518
+1804e658-df7e-766d-fcc8-713212ffb622,1840151997,10616971008448742833
+18317fe9-44aa-6867-bc7f-83194c66504a,3757101365,4671354025135604104
+b72efd37-6e81-be8f-3231-03fbb4aa1b22,1885305025,14235067111372397783
+f8fe83ae-dc3c-727b-b45c-864ebb1a2cc3,3586343059,17884331630952637981
+15888d97-dd5d-1915-c4ff-acdf5c267ac6,60224037,8616167693303092586
+11a831f4-3f1e-55ee-e4ab-956df7db66a6,1555134106,9773867478180173021
+c4f5239b-3666-63cc-077a-5cfa201c381c,1894524739,1067467990970782069
+a104d80d-5b69-4f32-1aac-8fc0034c802a,4260731720,534167952304152125
+9cae7225-6e10-b37f-3547-6e7bd4b110de,189972220,11392786662653784910
+11cd4b7f-23c1-44ac-a617-6e0612ffba08,3362591414,4249277700428320075
+c67aa94d-4f8a-7cdc-03cc-19bed4f93583,1115032978,4015667700363617547
+eaffa7b4-3de5-7332-e897-038efe05f9aa,2967486170,16450493686938173285
+8bb0627c-58a8-fff2-84dd-81b7bffcb4d2,2630323998,2457318421817119144
+77d0b540-fc9b-5272-5653-d05dddefbaf5,225139877,6241851743101493512
+1c39ece6-3d57-15ea-dcf5-22507bdd2644,1971821959,5856205948321930870
+e74bf9cd-f418-9b5d-ef61-35122bdc4ebf,1028892596,15148812815547965723
+a1204b60-592b-709a-1cc9-d23601fcd125,417045815,13395513821759422974
+a9834188-92d6-c0a1-9e3c-58b85607b205,2253667614,5493304093649217545
+41e01ecf-2d40-90a7-79a0-962acf45095b,3544038605,11975650612131320693
+41afb3a1-e5c9-03aa-c888-471f6fc978bd,1649759576,8244222646675514962
+ae79d976-74be-6a51-c5fb-a87a86625d2c,2463957140,8143421478818006028
+fad023c6-48a5-70ba-719a-2ecb5c57c880,3820699692,5262874613446012743
+af582b18-db56-50e1-cd50-0d144baeffdf,1339986151,5498057915038312543
+f46d30d8-d6f9-c624-42e3-e6afaca8bda8,2365307235,17046444471877942140
+a6c6c2a2-040e-1ad8-7da2-7733ec0c4b0e,1367708750,2887065368281513830
+588bffff-a6c8-5699-140c-02e3ddd8d674,1639968084,1325932474291657990
+a1b7be3c-99dc-0597-7fad-feb704d0391c,3190187306,6179910380925806534
+df1493d2-5b81-10fa-aea5-dcbb17b92ca3,1877927846,3927914960899344820
+7e426dea-ea4f-5ad6-824a-767ff31b35ea,3218188040,4811600636119804742
+61d04b69-8337-511a-8c6b-aa9b166c60c7,2406830998,1057316351243841017
+44d14d47-709a-d9fc-2204-262296fa0fba,2107157395,16120140061367566897
+2c133503-3915-2dee-094e-1107523735d2,2838998792,9471197866302727008
+a8e64a7d-5e02-8adf-15e6-bfd414779080,601143049,10008374592793670758
+18686971-40a1-214f-760a-f6f01c163881,1401122029,8575130356564793749
+28209941-1917-8718-4f45-4229ef576662,3070841252,1818225848787859672
+c06b63db-ca8f-4f22-a2a0-397d8da81605,3018858703,13104318637553880329
+a7430e5d-0b5f-be35-f95d-93dc469c1761,3367932450,1662376195172537805
+d486f880-a465-baa1-d23f-56d9baf612ae,1747521669,9013123978011769108
+ab0abc69-e9d1-789f-365e-b5c442838493,917334605,17859402101558114776
+d23a7d1b-4b7e-44ef-ef03-b7742fb25c25,3995943146,7645837940118705515
+9225f2ae-11a4-d014-7716-28ef9e83191c,3439133720,4863232477423773154
+67323f4a-6a64-9624-e19d-ecca8cb80192,997666682,15715295127799907710
+b2c4a097-7eed-933f-ab88-69d6693aff6e,2173384452,7296277015624922070
+a418151a-e90e-fbe2-c201-e5286d657527,798056239,3595089086532144146
+bc46e632-fecd-6862-63cb-c0c68db588f2,1333295316,4310140720818779393
+dfa051fd-b921-2c33-b7c0-ee822d4e84ec,668088898,643132558208710511
+60c684b5-ea95-7939-03de-b42a55dfeac3,2204545599,2350843104095862657
+475e91e4-abda-3273-6cf1-90013edb72c3,994815940,12940859634078669665
+6633e2c1-f5db-f3fd-d43f-82f365f032cb,47217784,13829227031857294850
+a657fb74-d7f2-7b73-6116-c59ef1cfedc3,1218496632,15540844803715914229
+a00eac5c-0ef7-3b93-b5bb-f7263aa0b548,1867528630,15062003092424907764
+28476012-5d62-e9bd-2713-5571ab3998e4,1122523893,7387338170806206727
+567209d0-54e7-9f54-2cf4-c644e4f360d0,2179253290,16530695348938219163
+736f76dd-9ab3-aa05-0c80-a02458a35e32,2899074324,8485513863357902470
+32ad1d53-0569-53dc-4d44-9dff8a73850b,3027297551,10331732733290215560
+b9f86bcd-bfa3-fdb2-cd35-03dfbff8b637,330240437,15671174098298324233
+b58285f8-dca1-d740-a646-b1db3129e28f,4287583449,18134142307789796136
+c0d347ba-c503-aa8b-dfc0-c36830f14c85,3484779658,2180343565078514294
+07d542d3-761c-feea-5b5f-16ad56612ba0,1853281202,4000286835380821627
+d0f934b7-2840-490b-03ab-16ee89be2662,807022698,11685008664016824872
+18b7c9fd-260f-715a-5f50-f312d052fed6,1076643571,10343203354192636938
+6bd40b9f-4465-63da-85f4-f5866b9ad843,3986148014,4255807607426754276
+7673a56c-e0d2-daa8-e883-ca84d0f8c1f1,2255846486,11885484384204718544
+2c3d2b8c-afb3-6f29-9292-d7e613c4793c,762118665,5248890987876429687
+f89a0c86-a719-1b66-8904-eb2dbe7861e8,1252092060,15481375814905689149
+95166311-39d0-d333-d719-8f16fac2bcba,1374148776,2915804547380286049
+909b2908-9357-b6c5-b29d-3d876c03dc36,2634275292,15966526410604159068
+4407304b-ee6a-5581-b93b-8c43a7acb6d3,3440715103,17472818148209311508
+ee8c5419-0006-4558-5d4c-7d4e17f81987,1139514613,8446088939279941658
+6794f25c-4b87-805f-d1f2-a99b933b379d,3030636232,14958749858166729079
+61b65a35-9e0c-217b-a9d2-35a6662ed04e,117726305,7649189688677195607
+393776f6-bee7-9516-1139-d064846520df,3649482957,15761958684591330040
+7025425f-c2d5-9176-2614-6906e81f025f,414153070,16157736932138750757
+0efa4e63-6a7a-c8d4-dd0b-20cb7524e213,2255451502,8068788625524557000
+e5635dc7-e6c6-a5b4-4b00-1fc14ad1600c,1081575577,13858759214055030006
+901019bb-37ae-a0b4-d81b-05d3f7be2d56,4100692198,580613416326588920
+2baa5f63-0cce-e75a-9793-f804076df2e9,2572596294,11035444507850061318
+588d0585-90b8-5a54-2fcd-4a6df178ed56,1516925836,17464145305528622990
+b6a6ed71-767f-38ef-002b-c02c787e4661,1986880604,15575899392229729969
+92f63ecc-5a83-0e8f-d3b0-e8e6c18c24a0,1080646456,11035090449599035952
+60b94a8f-3c34-489a-e051-07a30a01d943,3247995487,1302360319020782511
+3c373eb2-33f8-b47b-b2b5-c8fa51afeda6,2963315366,12262267075580856873
+0900374d-6114-39e1-95dd-6090a41b30b7,4009555375,15778600241002067821
+59c9c4b6-ad76-3013-ca9c-fb1eb73919e8,920744438,2979742258279709333
+cf7e3cd8-4d78-ff03-5a96-79e86641f3cd,446112656,5545669432936095516
+c71d9342-ccfe-c0dc-66f4-0ff1c0383781,2204212647,7955520426553086143
+8fc1d939-2330-20e0-56d0-688f44e56f61,656024040,11461943590151102998
+336bacc5-281e-e248-f9ad-0213170b7e4a,2466678228,6201624099887322315
+3d4b5c1f-2179-3c3d-7957-dc7c6f43026e,3351416459,924162141461124392
+a49446fd-3e5f-57eb-e1b6-956f8dc0769f,29995731,3669809824814792556
+21f9e4de-bd0f-5f73-e265-dba0d0bca173,1037836999,6904058084493089035
+d0586d2a-4309-a9a5-4b35-823eba695a02,1479594213,7733297448032993592
+615897cd-12da-40db-41ed-51c23552178c,4172632035,2957368736312096059
+820f294c-dc02-340e-cdc9-9205696bc228,1026160824,13357935295116770399
+7428ec8e-403e-7342-a7da-026ab6c9263c,3836973277,11109596024485484263
+4d83d126-fd48-b65a-2f48-17f0a6c55423,890780886,15589110508118450280
+85ea9b82-e4fa-f7a2-e51d-ff8638abe615,2903706635,11938901339699970239
+7913e3dc-2b5a-ba79-d848-7b3dff13720f,371225067,3101151350041115775
+0aff1cdb-cb82-e800-a980-8949b714f7f4,424453993,1103222888010078608
+db284d40-5af9-ac18-79bf-d168812cf488,2395149915,8963852031752219883
+84e63c74-1ec0-ae11-2bf1-08e957c416ae,3384149858,14240112944716400047
+972bfb67-ea9b-6a4e-b1c1-ab50400b5369,730687848,10869881062323283031
+8b3f37f6-d604-35de-1f76-9a64be9e93d8,3728875953,15143411913157195861
+f0ba28ab-29f8-7444-a694-b43b8955afd3,1439994135,8410058495601423815
+147de9dc-7b05-dd19-e18a-7791285696e0,3296078164,2534398523186435608
+38b586a1-98d6-6d18-e212-aff681901a69,3746991608,6861756948143340098
+43a1fffd-994e-cd93-b969-0f3a7ead2da3,3486853131,659188460707357971
+e96dc4b3-a37f-bf57-4b3d-5c22c63a688e,2591466094,5595685663479453313
+f9676e88-bd4e-340b-d3c0-ed816455ff7a,916351144,1040314321310502363
+63180d43-49d9-50bd-330b-1a763b29358f,3590473050,7808473168742165324
+f75f6cd1-5d3a-e395-ae8a-ea05f22734c5,3487952363,8894163829438883602
+9f3f1448-d837-d578-a501-7f07f0a8370b,1113734365,678827130216578409
+7a00c19c-860e-3d81-c89a-0609d146b275,4142290314,15298723567032291480
+c4a58f42-0560-0747-dd9a-b3a974db84c8,1633949687,14354759938829394688
+a9ff3fbc-68e3-42db-ee48-236318ed673d,3970430893,11251483415964200
+8293f11d-d847-7c64-c62d-0efc2d6b54b4,1512353112,4924103693164373594
+df8f0aa2-5623-4885-4ca1-5709fd4c3b37,3833865207,2172126802038860478
+8c898833-c770-0953-e5b5-0975702d80e8,1111198798,6510723336827870801
+360d740f-af7b-16f8-369a-129f33a36359,1389354201,11476420315935443339
+16f0519c-281e-ad0c-947a-a5198e641d40,3998867107,12251680207029549684
+9c5b8d75-caa5-b6d2-77ad-5883f308de9c,412545788,11909953544843455832
+60da4e51-bc8e-248b-d56c-bbab558f37b3,2820477981,302149656730108632
+64b06f5a-1d91-a2f3-6983-1acb1af87e0d,2906914528,16756158230319645396
+69853011-2e5a-04dd-7f8c-fe612f9f704e,2296060742,4778623150353067605
+6b5cc432-f8f0-8d02-fc77-3a080b5220b9,4018244330,10966219249400533234
+900abc4d-c256-f90f-f575-ce9edc4fdfbc,80144544,2750399341083635182
+f8c8cbe8-2131-7962-a220-0cbadceab3be,410012935,9876138331707007050
+c3cce635-cee3-77a6-d188-9bb3140e47a7,428654130,18445337282701053204
+1d7fcee0-97c0-a5c9-741e-51b1dc35748a,2679779981,16292699708710916169
+80d7c7a2-9b17-1235-c866-32fd9405a65e,1050238123,4305220937879619647
+91962cb2-d82a-f1f2-7e45-c76b80422f36,2039631866,909864378242644545
+d5e50d90-eea8-9863-a36e-965564752e1c,2322567207,11937302405693795080
+2e684cda-f26d-32f2-d3ef-dc365312b743,1822086388,11443409597584471257
+a73cec4d-e97c-8ba2-3436-bb1394ee3023,4216565195,4219460151727067480
+98929232-9345-0a15-0b19-8f99e1111bd8,1649441489,6565167062392989575
+b732455c-e2af-0d5f-161d-33d18c25b4fa,1037821448,18008281440269804347
+d3b230b7-8525-f50d-b330-2838c3f08d7d,518477064,11407157915444229464
+b7546b9f-fbb1-3279-cec5-9302aa30af74,3535823039,139702045449935489
+9a9e98a8-2633-1218-03f2-07519577f2a1,2682756846,6399690684273463400
+c3986541-e519-d7c9-c856-1e0830aede66,221868478,7306102120381972179
+94c95211-5839-216d-e759-3f95ba6c8ab1,2566331012,13986050676530997089
+cd5dad91-17ce-bd41-feda-4f3486a70ba3,182535100,112854694451373824
+b04f741b-3196-e32f-be71-753c7ead8488,2988123797,4560182500632087437
+dd0b410a-7a10-eef8-2d9a-10c366f67b79,3135801295,164096504760190056
+667be7bf-6365-929f-91c9-aa0b14528d71,4278598800,230117059145373677
+9bac821b-fb30-8d5e-a8ed-934aab23032f,3087651927,9443451687911131566
+a95c8fa6-9470-ad81-098d-1949a003868d,1961525552,9946039077456767828
+cfe7dbcf-2e3c-7ab5-f725-59bda5bfa139,2202482474,10822152538675196793
+a703d99c-e01a-fd09-4a43-061cec9a7ca1,2846210857,12184396787909416133
+88f469bc-a30a-373b-f11f-3969cf9ffa2b,2303459969,2753263601320802975
+97cac1c4-aa40-a4cb-105d-4d0957afb330,3681459401,8147301248992202319
+b0d42d08-4458-a280-61e4-8d1f3c1fbe7d,985257321,7270483101623928026
+92659e94-ec51-766a-3b78-b762466ef9fc,3262761949,16887708961538956431
+afc687e0-127d-3fba-cb6c-b32e54ac8d63,3342215568,9972175039201964453
+eb8ce45a-aab7-a40c-9d94-c3dd3b673f16,2030756382,11942639303949280757
+9226615b-3919-b5f0-482c-3a94fa3befef,2442027644,914756516589758945
+bc5e3de5-94d0-d5e6-a089-5beb40f7ee62,146904258,1835906850794781010
+829980ca-b844-e59c-a18a-b9ed44a2dd71,4265643723,4809926115938864196
+ff78b7dd-b34b-d956-62f5-badfad9615f5,2853914803,6026124467691239518
+0e9eeade-d3b0-6501-28f0-621c80fd6931,86514266,3662217511778143522
+829c6776-fecd-6abd-f6b8-bfc1382d4edf,66288095,7591300072160954872
+9e8123f9-6b72-16c8-58cb-d9a6b7f838c3,706382437,3106290529395698286
+572d5b76-61e8-4815-d153-439502e9ab3d,3551417164,1109878167462017724
+e229a9f9-24b3-f7cb-2f3f-64134e4a38b1,360451543,6753038926198170010
+bf303830-a0b7-c389-453b-558b27f492bd,1336618480,13641432687073184302
+024071d2-f691-c667-82ae-6ba3607c35b2,4096768818,7590958703526063098
+77df5ce1-73ef-e322-d690-f8a19b4c85b9,2728691962,7856537520629982070
+ee6c08ab-62f5-e4a7-527c-ee9f5fef13a8,3228176964,10819339831215307298
+a9e0e6ac-461c-7149-3d19-f3e5d91b820f,3322281429,17377428879832662964
+120672f8-6bd7-bdde-415f-390e968639aa,2088141882,13293814179055463250
+b2392a29-2b82-f8f1-a647-f24ffe489cce,3344209619,3536014665866439032
+70d72f15-2957-5d66-f5ea-f4a750afaa1f,1610978688,7968912159911948259
+ebcad322-22c7-6785-00cb-e8227bd8d759,1630020604,1583258544567164031
+eef46c7a-4b0a-a26b-fd59-8c99ba32447d,1054319974,4833723499101064906
+e758cb8c-858d-abe2-d677-5549f17374bd,4230057108,15030484926474072060
+5cfad76c-97bc-0544-9aa4-7b01623337b1,2379460934,4030586229135822753
+10997947-6226-c177-3d08-237b4f2f0a72,820561807,12056258147660149545
+1d4d586a-eb31-9025-022c-2319427a78cf,3617453087,8020969660780025787
+38b2e2c3-9b63-2f6d-ce99-aa590a4b29ea,838256140,1527108025381670434
+27eb2532-41cb-6e5a-016b-cd12e2b6df62,2056654301,12364877258883144798
+477a4c79-7619-d114-9a9a-657aa4a047b4,3368645466,2343127381656341531
+27961fc4-6cf6-70c2-455d-bb6d01aae8a7,32846085,6710818491946383365
+fcd5055c-625b-fbc1-c510-912d5800f4bc,1941587277,235157125131910023
+e8229741-dcc0-8b2d-76c2-ec38b4eea784,2981947843,2460588731491609779
+83a229b9-7c99-9bba-38f0-c71d11945a9c,4172520895,5613530397555364767
+5b4e024f-9ed0-da0f-25d0-9f81ee3a07d4,3886713598,2778013121238793982
+d0f594b3-1bf8-ae3d-9fd4-3b1ab875214d,188213846,8125982390300120272
+f0aa9718-6254-4751-20bb-9c98e537375f,2250933469,1259162115784148411
+7123ada7-931e-5239-3433-3b76bf78a387,3531511300,11269989491032577585
+29e03743-f325-4aff-32d6-056db8570866,2337624337,9011008910805965149
+0215876e-db18-63d7-59d7-a2bf640bd1ed,683114186,9415484909742860332
+7108b96e-2333-d608-2130-469b644acd9f,1663640420,7862708533478939446
+dc621408-3a02-5372-647a-5c9c7fffe76b,1663560748,5547447690955208774
+9808fe79-bb2d-317f-bee5-448f2dae750b,2380349472,13863620438916119557
+7be2ce30-e71d-f867-111b-ba036545b0d9,2905768999,7025902817337442655
+e6a50e08-8461-fdcf-9588-11e105d96e20,636358679,2631319639431993617
+22a7abfb-7f66-8434-1089-4cab65cc1795,3987628109,6120217375124984127
+ad51d2f0-ef0b-83b4-f493-353bc88dbd4d,3242406196,16029096735950888257
+4b76a312-df08-ba87-95a7-8e86481c978a,2291593467,17365061086081607263
+6273d35c-45b7-3613-b403-1dad005b9cfe,444213787,12721358802548509473
+90fdd57c-0af5-870d-9548-8037a559dd22,798009452,14839346368450249971
+556cf1a2-0328-a063-fb12-81fef6fa13fb,2219530227,14664112867839379991
+862d89b7-07bd-38b4-6102-c07ee9ffaad8,2343296356,17942979753951140475
+14643bab-778d-11d1-2f7a-084fba101a5a,492657965,1666705275520786030
+d00b0d0f-b415-1381-877c-20d64f2822cc,2415068115,14166526084104305493
+b592293a-419d-3826-0ba3-980198b098f3,2144609900,6618517725502581233
+780b2283-5f5e-b0fb-4e7f-1db70f224764,1502895553,1541303694004385143
+96cb05bf-367b-b120-4cfa-ac5a428a1666,1564092442,7888918675681954405
+6b4c88b4-93e9-e23e-e004-0f9d9c25314a,1690125275,1423702622266578955
+ff80c5db-e10f-5cb4-78eb-d765c27bd313,2037086938,1263531941601866553
+805a4639-6b6b-e9ae-64a5-8e45dd6e35e5,3529547242,9785211026567587132
+708e9dcc-71ed-dd15-1630-df9d2a9a3bbf,3857237499,11800370443189942483
+71a8e626-cb67-18b5-bcca-b3eb95a65b2f,1665562150,15369425826556323770
+d845ab44-e405-2ecf-0ef8-8ec31fd8cd0c,3978651460,5085924512504611765
+985848a4-1b51-673b-29df-a64cc4e43342,1965015390,11478486891282867848
+e96f3fb0-0a9e-d42f-078a-afedc6dd79e0,529057724,5894633084240747995
+e507010e-5b2d-6c4e-4a2a-0d267bd5e4b0,272281285,11000960524657254147
+855c9fe6-797d-6d46-e576-41342dd08a50,3768966144,6593495296688542055
+01163f12-b543-3793-4e08-6eef887be6e9,580692106,2030180732307028827
+ef999a77-9e98-1daf-8e8d-d05bdb168a05,2490427648,10075300064332768208
+fb5b34ee-dc2b-9bb5-1a44-dea83c82fe7b,2908400482,1036442583086417691
+0ea9ba01-edc3-1abd-2ed0-2b7fb7b3e2d7,2217091645,10156699562529337325
+730f610e-0402-6f37-ceb0-7de0f388fc27,1465622456,15442225354781540780
+9f93980b-a3fd-1e8c-8871-a2271bdeab87,3911566001,17384739952430987048
+4b06cc48-39ad-7ffc-02f2-702bdb46ddff,1193041331,17633742332699505980
+90074cad-a904-864c-f127-771941f60546,1179750894,3033156307849042618
+eea9bed0-bd45-fd0f-f7b6-8e9bef0904db,612037630,17828412903736480834
+8304cc10-f8c6-0ae0-cd16-37c96cd5688d,2740486233,6749765136721447725
+4d21e783-22e3-ec92-cfb5-3cae121187a8,1662050281,13827547553653659473
+39235bd6-7fec-9a95-165f-f23a09a54aef,3299549404,1335190105558102156
+3d5c43b5-bf8c-9abb-5e0a-fcb122afa7ee,1921080171,18349401710561150322
+d8e529bf-2e3a-183c-c0c8-6bc18ab0f852,3145861704,15937047778412001080
+2f70dbdf-8a8d-346e-2090-ae4071e8e32a,292792335,10010697145097179230
+be804c0d-ff88-c306-a0e2-281bfad6851d,2621364595,4358021279631307422
+9086a44d-00dc-7d5a-dbd1-1a7955d68d83,2307591209,12923780419009268318
+0682e52d-c84e-e568-17c8-3a48009d7a7d,369521948,14666072507443013568
+d936b9f3-4468-fe61-91e7-7dccf341a9eb,1692971203,8935520256403530583
+394228df-b5ae-a55f-d414-748d1232c588,2709641134,8668679773868210199
+7fa77a3a-8170-85e7-f1eb-6e7f62a27186,3716046794,12098252140008436995
+c6a6035a-948e-46ca-c4a1-4cc3e607ba2b,3477559478,1302187963866069314
+c6fed5d9-6a85-1712-8911-bb6a084cc242,1042507375,4728174692217478699
+f57c3efa-489a-c750-d44e-73ef7fc0d7d5,2986041806,5040549059476959694
+41051473-3079-affc-225b-4e19b139518c,3065134675,14574681595375906587
+c2413fba-9151-9fda-eb3e-03c343bf1ffe,4187512609,15144115846065999607
+c8970e18-11ba-de2d-b46f-01009a10c34a,4078622467,17301372639154604234
+0e61b1ef-1614-02fe-09fb-a78440e6bd48,2251756503,6030614790703133368
+b3bb1877-c6d5-91b2-780f-c9e3a965a2b1,4242836837,15663708231309949527
+382affe7-e872-643b-340d-e89db60fd8a4,3238501385,9833154505937928583
+f1a58bad-ef6c-440e-be22-88c26422166d,2688531201,15299338949485380384
+2833da8d-cc8a-7526-e3c4-f0ad5ddfad10,2582647494,1599400004386978558
+79319e87-621c-9295-acfe-1946c5037f2a,3663837669,17794736213309430228
+b416d081-8a03-0df9-5bef-70088da45274,3496264770,10402094228828019990
+ddd4232c-0fa7-8249-2551-f60ab263dd0f,2909553464,8727058200386139246
+49e9ee2b-b5ce-64a3-8c64-3d3ba78c72c1,1826213841,1716432617135455961
+564cd507-38ef-7a7e-59bb-3c6d6bac8c02,83010792,5831234631829302256
+09a87833-fca8-4d00-5c91-21496a5a1776,1764383110,12686267589161226751
+d6154c14-fbae-6af1-1800-e13338731831,3011879100,15087824216250863290
+0a19d1b4-5ead-dbdf-050d-428d272cd8b5,2781135519,8949837865208667292
+112b1453-f3a9-1cc1-c395-561762057c14,2905632228,14734794122686588121
+beafe38c-b39e-2144-e318-bc0e120cdcd2,322101510,11383835032973864968
+79c7d7cb-f99c-de06-8454-8aa3051738d9,3524368426,8798969642146203884
+a8605b50-57f7-5c68-1220-16fc8694a29e,2488453904,15491193456112618721
+be46b0ad-b0e4-2081-1754-38d71bd38a6e,42864682,18440048648155804709
+18072f17-ff19-e922-dc8e-d47b42da7727,2869795776,12273952717277167651
+071b9828-4d1f-5248-e66e-fdc8cfa656f7,3666045215,9215069891300288140
+3dc5ac95-2010-eb04-ac93-fde3e104351b,500688567,5959433494861249290
+d034e1f7-8219-6c62-e798-d00ba6d04742,1186461864,16070711570707542367
+689b2faa-2185-1cc1-c2d2-67e8dadb2564,2421397600,5940615410619388183
+dbf164a6-566b-ff65-82f8-783eae3cede7,2271838665,17324271100937479179
+ce30e655-0916-3e13-09d8-defe066c98db,3152089948,2427732794609911758
+1c764dfc-304a-643d-a415-44d698238d85,1517705098,17429718775896305129
+b5d99324-9bc3-660c-79c4-e4ff18edf4be,4109436213,1067936571100841096
+7c37d1f2-459e-1286-ad12-2e047aed5b8b,3796456226,2381655963433460163
+fb657ed0-db88-6057-7661-4427a1689c9f,1099544130,15767339836343462155
+eaec69c6-f495-113a-7ab7-7f9a96db5bfc,3721175581,3156284686012148077
+3b8b0733-8ba3-0826-0614-21dbd65688f9,4131356947,3296847141033773404
+8ea3b743-b0b6-8eb1-4256-d5d7c6bdd6e3,3871161924,250028185058530836
+d4ac4786-a36a-441e-8bb5-8bfa1455e2bf,1989298219,2536580088461272968
+d45f2f58-6d1f-0660-07e8-0c83cac289b8,516506165,3919901081640727163
+ff6cf18a-1818-3bd1-b0ca-30e1d2701fb2,2513287783,47910099234703160
+57db127c-93c6-4de1-dc17-f339ecef49c9,1276798698,6927682287751176378
+8274456b-4f0e-2389-0e73-cb96fcb504d0,1425580334,4731086066064648282
+7b7681b5-436e-4729-0226-9fb0829f310a,1248431692,16486672149837815838
+d846024c-d054-b08e-c402-089f37faa61a,2263039941,6104537171112996348
+8aefd7fa-39cd-e414-44f4-312319772569,2881511334,5504325945130706357
+ffb01768-9299-ef17-318c-b785c631bf82,3090212862,17911334731717036292
+3b878045-cdf4-a2df-a2ff-a814eeaceb03,2549487880,10123417712587920944
+8f6bf21d-b036-1f78-3e55-19a44b291193,2725527966,10280774571185173379
+2bdf5871-5cd8-6cb1-2ed2-954c5e140e1d,2278832068,13128395380308913019
+841f657b-efec-aa82-e044-0b6c3367a944,1355106506,1762319324465502949
+5bd1768c-c17b-6801-685a-c75d9afb5f92,1222463210,659448354179185857
+d0cbf68b-3db4-f276-a4aa-bd3932f92743,3970437716,5201657886089179807
+ca3591d0-76ed-ebab-1add-1392131b780c,2618284598,9224589570297973181
+d4bb733d-0c9d-5a7b-5d84-d0b45c8e2be1,2287473720,4038365894555592088
+3bd43598-0814-b6f7-1083-773f0d10031c,880492906,115032812295867787
+24df04f9-9992-daee-1707-d9787483c1a9,2632393900,7576946442227803525
+39495e72-d24e-b3ef-9a21-ce1edcc93007,1471549045,10934095705902802027
+9948cb15-a92a-04af-172e-93de9b05066b,1911342081,1566326235338223657
+2624a2ef-a20f-3946-7c3f-198c21c4cdf9,2669121729,8975975876499673947
+40dbb049-73da-ce37-b185-9c4ab81654cd,4013736559,6571514774948673250
+3d8f9dd3-9203-9eb1-d8cf-862968348801,1515287492,2934658970101934313
+8e712405-0229-6d6a-6b6f-0d7b2c745db6,294587259,6920205671821695058
+d4b8fa03-e80b-48cd-a92d-54468f035f13,1550758387,5549458454962096444
+b59b10d3-e789-9bbe-c949-9c86eae1f77a,3924189919,7404961123698385927
+514dacab-e1d6-a150-d8d2-265e184af8ff,2311348162,2110671115520433722
+c18ff150-6120-04cd-ffde-817b7a24cc0a,3418982494,385542906815377461
+1c19b89a-a479-c8c6-a529-928f1681c9b3,3087382847,14234193713752496454
+7a958a6e-9d25-8bbc-692c-5216807a15c0,2850239464,16716663973070357199
+bad39c39-c65e-a1c4-226a-978b38203074,733247241,1769529218833750593
+08f15c5a-1bd4-6472-2ee1-1859acaabab9,4006599018,16822957242430456138
+2ec095c3-570b-7a1d-244a-a4abad63a18a,70055584,10897699104517375694
+c9ff9e48-25dc-1c2b-76d7-01398c8b0ad0,1492982905,16053257129342639139
+9fb8f912-6954-36bd-85ca-bb3d1e1be760,926602340,1238086191795287003
+2f377206-8e34-e78f-d7ba-802ba142d0f0,3002873390,7493540651194114274
+0b239c86-2f73-b02c-2389-f0e91fcb9e1d,133252198,17780250373898042853
+aaeb7a9f-1d90-ef44-3033-ccd2d32dcb89,3916160263,16248921361123789475
+0854cede-a431-37ba-6d40-ec3342f95503,2962112697,2717409578365626705
+6fcb904f-f06b-8e22-bdd4-a64c9c35a0ad,97053131,863268130928623936
+6e2b76a2-4a6d-6a0d-d1a3-0622a151c397,719277218,8524890434318327385
+1f01e61f-82b0-4936-c6e3-57214787d625,3461857923,1896917092528400588
+80a0b507-70ae-866a-4065-38410248e06d,3136022446,8930065227855239310
+ddff67d8-c270-b315-65a6-e54adfbeb358,3472958908,12692934556586539482
+436a1717-7a5f-db8e-0669-ae94a118e2b0,1703253201,12852261194971207441
+48175005-b0fe-1df3-ac15-f35963df5874,958551096,13552202566460415482
+3ba5943f-5893-e3f8-86ed-074197a8cd45,1215260813,6855717583971473170
+4ecd47df-c025-af5a-3ee5-3fed4e5b6cc9,2199454875,10018021272424902318
+eec9c2d4-5a22-8ae0-f9b1-e56b906d484e,965384370,7775958237530474649
+3c31fd2a-18ce-44b9-e711-a1a4181e031e,4188068939,13635937913874740749
+5393277e-8d0a-8e5e-e4b0-19282d950e5e,4230519850,16971446159793324482
+0b52c29f-e199-413c-063e-02d681de7227,349369104,8849966716744428236
+95c9f456-f4d4-30a6-745e-7fa39c0b45e7,1651150973,6381206188459074927
+d26d3f18-67ac-fb89-3f1b-cac5acd6d649,1140834081,14707520934694193603
+0852a9da-7843-5097-25bd-1a7ee1b37e5c,1976816580,12755696901971693581
+e8f891ae-68e9-7837-166c-9f8ed3b3a2ec,3312554388,16514526225299267955
+20a9dbfd-7845-9fa4-1c10-cc742ff63927,1602826236,12684944917318950935
+e187f77d-d9cd-ad8e-2117-8a55c9efdc5f,1887192306,8480788710873429378
+92627635-47e5-813a-7148-200909de2bf1,1443007861,11824240471649842636
+e9cc32d7-6e18-af79-f27d-a8ba3eabfcc9,1513215483,14054461229264645820
+97a52162-d62a-4e39-ca73-077a38eb183a,701179300,12882956338583860331
+3a317e0d-a1e9-9123-28a6-4d5353e9e602,220484192,15634592204064720031
+836e7748-89e7-607a-64ad-fc7c5c04bed0,2819122613,16612952927568648194
+dc6367a6-4bea-898c-c7ec-a5ebaad23ed2,84042636,17992965199389063756
+5e992664-883a-a80b-a33b-9bea96af72a4,2433083781,8721082035408496167
+8efd884e-651f-6aa0-f0e0-9317424a4893,88647567,13520872865086668930
+68f12b13-2251-faaf-bb5d-31e128a1df8f,1713329207,10823555187828771204
+d7da6232-6e2e-66e8-6ef3-161e052a683d,2933598710,6847807593886007436
+35ecc858-a5eb-bd21-7106-319b8fda1c6a,3236163245,16522097548889188815
+52d354ba-5ab6-abd6-9056-2dd6c1c2a228,3870936279,15913871305971836002
+505f39c5-ac43-fc06-f10b-447480bf4133,2311812070,1400411459247770361
+5e7abced-ef62-a23d-90dd-c8154255b582,4011020904,10469745361424467246
+18b58352-1825-0269-97f5-e85d07ff400b,861251325,18029495289000033683
+5113dbcf-4485-2c1c-d108-37735174aa54,3835902088,12819857165095261682
+8c8beb1e-f855-b668-3a60-ff0a48d1a34a,1717472868,8530271066334773437
+084e3cbd-132a-b22c-3fe9-efd7c95bc51f,2131375803,16540909864009258473
+b1011163-a89f-aafd-e315-e89ae08209d9,494052188,8239509652123205188
+afd72e1e-5b00-4986-c149-36d0ac8111e8,3608308596,3870477675600162256
+a166602e-2f94-9c66-198d-8caaac9b24d4,796115846,7939027756816928525
+9833588b-c815-f224-7709-51b63fe1cf37,865846231,13714086337422103494
+f60eef2e-d13e-4afc-2435-845dcf9e65b2,3500275809,15138965080115002550
+fa07c712-2b88-2029-fe21-c3222b49f137,2548271779,9406352481311302242
+98a2eb36-8f0a-cd98-ef65-171439b89172,3608545048,8724254162311583669
+28f502d8-0c09-10a1-74f2-cf95830fc835,2305163907,17925769874414828128
+55113ff1-5d61-6d3b-b5d4-8635aa8ae86b,1162034269,13168206883603326391
+c91ea7c5-4ec8-e23b-cb9d-3ed955ee678e,882393639,16248408715683628571
+ef260c18-59ef-ebc9-f02d-641b6f3b0990,378860491,15937773579337997282
+21607d2d-9c9b-1817-227b-6b4752b424ca,13178736,10919426181359396196
+452d587f-15b5-290e-9378-31eb44dbf22b,3148367646,11389967129523650839
+ec2777b3-f323-5651-e6af-ad9c02c6270e,3044218427,6927875546002883526
+1c51608b-4df6-6ee2-fc95-7b2a6947dac8,1835074916,7136705430217216273
+409b6616-b4da-a358-9022-53c77444b58b,158102252,7141385853711225693
+5ff66887-8e53-ea0a-44f5-e954943016b6,2275060058,12253189003067387222
+1997ea03-7a38-45ca-1dae-1be9fff761f6,3434077669,8596680848039968120
+32359ab3-6609-3a8b-0851-623792c58f27,1509610954,3515969681516624126
+61b4572b-f5ea-bcaf-ebfd-af5b96dc4666,1227727103,8343118974858681075
+0163a38b-6538-2570-5a75-b8bd0b56a181,1982347233,18320059593722672681
+163df7ab-2584-39c5-8573-905310db8959,254026896,3108268670651391841
+4899056f-a6cf-4c9e-b34b-f8ccfb69c83d,3786520328,421844146856258241
+ef99934c-624c-9208-e42e-6c8092722225,2858115905,10112643592033537988
+35679e0e-4cd3-2184-1f06-76545bef7525,8802525,12169266603854569303
+009cadff-aaab-59c4-6619-9f3a7e53fe07,2789320050,16322916273642470404
+8ab63929-1322-55fb-c70c-115b6c40323e,3832459615,9206636995759153156
+733fe9d0-a2f5-e303-650a-8456eab858c6,776168614,3348381401353511182
+acdb326e-8f78-77f9-5947-add2de3e1914,3002776924,5821254410483746363
+ee71a47b-5a0a-2786-d4b6-de1d72df15ae,2491710430,10036183340733458358
+ff7728bf-3900-a73f-a03d-7a13fc7155b3,937561128,1983791818232220558
+7de726a8-28f6-efba-238e-23cf0c8e93d4,30236906,8001753277316449246
+4acf5ec0-0674-a21b-199f-edcebe8c7c92,4202826377,2291862244006268899
+95592ac1-fadb-0d37-7daa-e3c13083cae7,2673087419,10533363578390361085
+5ecb221c-60a6-f56d-bd61-1793b0d3351c,3942548370,10991740221404519895
+52eccd29-96e8-8a60-3c29-a8b8a5436e35,1503640647,10173269509079805616
+2e6e5302-ca78-7371-1f36-4bd0d4c9e1b6,66227144,7927004768734593151
+f185b409-452a-78c3-c1ef-f75a6d46c195,3547657417,14179239641487528875
+99863bbe-5b45-9f4a-40ab-cdef884bcebc,672128736,7431569912118005459
+3ff3ac2d-be43-d773-465c-94a8b2c8fadc,3732180106,84192478633932394
+a8d7a345-cc89-24c2-e981-5b419d05a41f,3386486215,12816497176344895728
+b25242e4-8220-39c7-f15e-1b42d1732789,2857912743,8669340071113287166
+4a53f2bf-78a5-1dfa-5eef-863c01f58eda,3868317686,293268946804426190
+cb9e7945-ce39-862e-b623-76efbe091997,3590709553,16907209113291402634
+90e4a46e-ce20-b3c8-8b75-eb634b0aafba,2550056233,12016799630235197147
+7a6777db-b634-d304-05ee-591e01257554,2968749517,1142663891742669815
+0ef7059a-cd12-db7d-7e5c-dc8314a9c686,1149530876,17679151416843081718
+11b7963a-0fb8-f597-9069-63f49a50de63,4278329970,4975985182752093643
+2ae74285-5ca8-6c68-1055-a7273ca79ad1,1788313952,8078786263192628958
+15304d88-45e7-23dc-ee60-4fea9cbef0d7,2801874109,4521956537694268461
+3ac515ff-be6a-2c6f-d2bb-cd74f1455564,3470809621,10733055828039520350
+3bb85123-d696-9aea-8d7f-8227462c5ee6,1116060855,14689531364890540096
+943f7fc9-cc87-cc63-6643-2db807a4e644,1848861680,841069936212623237
+0a824834-0b6b-8c00-1153-e6b6bd17537e,1606239797,16175054435134916999
+f689c2c0-a7b3-f56a-c346-51c652105d17,292197785,8245158028608917994
+ba4596b7-60e1-734e-4bfb-4c48350ada91,4037165818,3872314070949576542
+c417c558-237f-a500-1f88-87e75d85aae2,4166046780,2105451408878260871
+5032828f-321a-3310-55ac-6e3f3aa539e4,3763745019,8232266308391572896
+835c09ff-875b-c31a-0250-d1851e1a1216,3789188793,14966071378646728292
+ac2a0b4c-193a-7b67-5d64-706ff244273f,2360051340,18194033445798853325
+fc8a9b83-eebe-02a2-2e5d-4516300f7589,2988872642,8284162988194652942
+76bf6fd8-b6b4-ed68-ca6a-20ef5bbe3e66,1815863325,9792749842091863182
+719a7eec-2d70-819c-462c-0e39f319d5fe,3476705570,1923035893714065192
+d03c30bb-3284-a50a-f1b0-513cda80b1ea,856971380,5727890425733778387
+817e90aa-c468-997f-7e55-b9720e15cbcb,2926486304,18023518743097480106
+0b898c01-ec14-ecd9-b1ec-b8773e51a6bf,1990530086,8260503966011082081
+ea9411f7-fa60-467b-fb62-ba2e4762a4e1,1647541016,15557014737393751323
+06f5bd87-2c9c-2503-c9fd-9ce35b71c542,3242801711,1807180591228708780
+f0116917-0427-dd82-29d6-abdffa726cdb,2667443135,15988808649746899323
+5dd7f298-d5b1-564e-e101-6b392e2a4dff,225225207,13806249892981991579
+8086afa8-ed12-b453-f16f-59e035e28150,3667144082,15871423181953908190
+53f8087f-48a4-7128-6acf-0b78920f326b,2244451089,7533558887065813250
+537786cd-18b0-dcfe-d38f-d6db48a59cd9,2186196015,17173780525524777294
+f22248ea-693c-3b51-b1c8-d5b76554873b,2817449641,13839765779790069659
+0d6b9cdf-69a0-79a0-0254-eb2a5c2f9dcb,192462517,11928623752785180653
+e1147d54-607f-3f82-a389-c1e5e3cdf4e2,1745342273,5017882041898210427
+b7697cd5-60e8-ba51-7822-af6f8113aca0,4091849272,6275447878650757102
+5dc56636-f229-6d4d-b375-1c7d3869c516,2682334893,15229100378205727221
+4164a129-ace1-1908-3247-a1844eabd5de,746962249,14802783861834923096
+ee56e572-d6be-ea56-6284-d4246afb0531,3544333223,5392750830987847472
+a852dedc-bc63-58d0-14d4-20fdd022ccb7,1516672557,11620318131857854520
+8fc6ce41-d120-a0ac-b585-9e97dba30bb2,3675817825,10693232704247572623
+b76d8ebf-b4e6-dfd2-1f66-c2662c746348,1827292020,5338843313212445220
+c39b3469-0f34-fad9-158d-991cd80bbba5,179634185,2885774571951723483
+f0ad8f51-abb1-72bf-3a48-95473059a056,1253785913,3728777674796905756
+3e2c02b1-6166-1a01-9df8-6292116024f1,3682056980,743996243520622614
+914e84dd-ab84-e843-e94c-0479ec01bb20,1186266987,1952974496174059896
+ffe4db26-b04c-fd4c-b662-d9039cb903d5,2890276272,11031753965175523948
+c36798a8-c177-89b3-72cc-17b11a600d60,1125605065,8773115906175214372
+ce553b31-9ce5-b45d-4dbc-5bca56808964,3578688478,16255810071102302755
+daa02d30-cc28-4740-f05f-28c8e63d94e1,1861186192,3299652875927917603
+8a71722f-31d6-3dbb-7a31-f2bd60d39082,421741527,2034100920732191911
+0766006a-7fa3-dca4-a25f-8083de3439c2,861492939,2964344172605904366
+399d8eb5-685c-e0d9-dd3c-a72f2ca0137e,1714496121,7158717091674240331
+a24bc83b-d1ed-e0b7-7839-dc2bedc0e74b,3673716419,3509610067601886249
+1e58a0aa-feb2-2b27-6cfd-6270a34e90a8,2094438065,14668556540032261935
+09fb2b9f-d44b-20f3-2701-b90c3c8b1192,2455128552,8722426165028700837
+9b07c82b-1dbb-da17-d99d-99f5eec8c0b0,724916229,5970062719803433009
+4991425f-d9c3-5131-aae7-9b2dc240f69f,1430663909,14727908759522652968
+c1ef549f-4857-0943-454c-52cdc9cb8235,3845675507,7089371135646806382
+bac5dde3-77c9-f6a6-a694-d5c5a72bbab2,656163128,7621600798698447937
+e999c926-7d6a-6788-1281-ae958b3bdc80,767933171,15495856681367349854
+b2c30e7f-aecf-cb89-2e41-7fe1550f5b94,1860214601,13276327634806720522
+bfe4cc11-3a3a-f1af-6ede-cad9ddaeb5d4,1733149328,383341010368263298
+544e92c2-4198-02b5-dd9a-6f8cf333d248,4024056020,6216311679862684845
+60ce343c-653b-f4d0-4622-94b5a0b72773,3333522085,16180265369559767056
+a76bc0b2-6d60-23c9-cf57-4828d55bfa2b,932642496,10936522224507865084
+951ac303-873d-7775-789b-a15ce2d06e07,3942394012,17456615738975657711
+d61d0847-3c2d-bf3a-c35f-857a08b8e1d0,48909718,14977453907752113008
+760b8e69-7a3b-f4f8-f2db-f73c018ad534,1930724198,546532629522922631
+636b5af6-00da-1943-1c48-abd972054552,422853539,13755019168528220021
+34dcaf17-3eda-fc77-e434-2210627ee29f,3109378920,7328322987678814897
+65bf1ce5-777f-4aac-2187-995a754fe362,3442550667,2291382017729736571
+81a3d844-4445-c097-77fa-12810d680962,262492105,13218861842896590023
+c15f0ec5-75bf-52a8-cd9f-84522103cd2e,3369294784,1222463530779019325
+50a7f938-5069-11c4-6f53-a9fb84a0dc5d,1107947413,2309425730136509516
+761a37d6-e903-dbf7-7322-5d31e5512dec,676809061,13457010280798273184
+8ccd07c4-f69f-77e1-5938-da9cd4fec84d,767642771,1424265183017649268
+4263c227-1fff-3f1a-45ec-ed226018ca1b,1419446992,15599603248180096570
+9ba3cfa8-04f0-f247-6158-9e50310067e0,677979954,14545048339560910817
+139d1473-84a4-466e-c61d-eadc1b7369b5,2691862846,2103256330399176575
+13884048-f2f5-3513-78d3-4fd81dcbb84e,4225868944,5245873224302286526
+083c3fa5-5ba1-51ab-45ca-0708f324b216,2829480293,5163113971209380097
+45296b9e-c22e-b790-c1d2-d4e2adb4107f,2952153330,2837720498225189169
+a3406567-d4a9-6ed5-9e6d-0dcdec29153c,763651104,1225420989222033672
+e229213a-6914-9e69-dfad-f0f337c76597,1200466443,2427884996900391851
+4067c68b-1320-d475-25f5-784828a5a497,2921759722,9354541998043867001
+28c67e19-06c0-a315-5343-24eeb5b41d2e,615527275,1543631332667483694
+2d87c827-d506-1662-abe4-8cab557ef66c,2729993024,10092513949823479565
+93907c8a-5e24-5a7f-3833-dcf672a5a2b8,2898744298,13665903693349724355
+825561a3-cd78-17e5-894d-297c06697252,3811551118,4912052501473748850
+634b2714-80fc-b2e5-4161-150374e5f670,1568091760,1031782382393928826
+d8f415c5-9c6c-6c4f-5c95-714c39197827,3056977630,15211340873380435553
+7f61ab12-d1c7-5772-1ada-77b12218de0e,3779281888,14271943640587060264
+82e6dbce-93fc-cf0b-f584-c138e8758e54,3189494109,11536105997086944037
+b6da6f3d-b5ba-09e8-c054-e50002339597,765119002,567272870696288942
+1bd3b03c-669c-8228-5f1a-8a583a87371d,2692192669,13779442932230970720
+973c327b-d6eb-e596-1af6-d5355d95b1f6,2845439072,16512966401843987583
+ed73913e-4f65-0f12-9aeb-c492bb3c9a61,2512845979,7231441662545702337
+df5a630c-a2eb-0ed1-bdb0-6c452e41bdb9,1658834434,3995638681105113058
+f39726e9-e4fc-b1f3-fc94-af3bef240a5e,3654015922,9135703241323710775
+aa6cb6c5-fa4f-d83f-a69f-b72c2c3d7218,896957333,7515018419481164113
+80b1bbb6-7a81-f9f6-fe8c-8bdbfa7a3e56,3881833230,9263545112029726876
+aed20483-9faa-661c-9cd9-92c0f56bd03d,2147173084,12593907100483697959
+6d33bfb8-f6f9-3701-110b-768c477b1a54,1742856162,17614393164942103324
+a07698b1-4026-375b-22ba-ecba523128a1,1346415162,6986634740433425011
+0ea2412a-d4f3-cb92-6e68-7fe0efa13e3d,30206198,8392673425961898871
+84da4b5b-2213-b25d-4a3a-bb184a9e8527,3954809265,16452033307820242738
+d82ffc81-2685-270d-501b-ed069fb5ff3c,2922395981,16475977217124449380
+c2900c53-2296-24f1-7530-0268f49f53ac,3698660405,11129440853245258226
+4ae023f1-f859-46a7-90a7-3cfe2391ec30,1935803349,9113918029744524771
+8511ba8d-cabc-0873-2862-94fe9f074fad,3824239720,752896632300586770
+f05f6b93-9921-816b-f5b9-42c6320bd795,3262075298,16307333244182181814
+30c8e3b4-0fce-2920-58df-4c1a93423444,2874659792,8271532831018338317
+8ac8951f-38fb-d2b5-4f92-bb83bea016d5,2339737814,1927688998565629622
+5458e706-ca98-5ada-52bc-25f143595225,2802393248,1785597834382607538
+2ae70752-0ee6-176c-dd31-b7d411c677f5,3479922778,6030461821296903944
+6076da00-d784-235d-e6aa-efb113a46c22,4289998789,8830382870271181296
+4cb4f5b9-70aa-e0a9-dbe8-27fe73022f18,523793124,8092490128775362569
+f539cb53-4a18-25a6-8f0c-7ae19dde7338,4248158937,1119736290737082025
+7257b00a-cbea-67d8-1b1f-3f039338218a,2762441775,5766313191696682154
+cc25c64a-1434-08e0-7940-ec41925e05d0,2206590539,14818059624845595990
+1c10863b-1d0f-b556-2188-206afe8182cc,2431655260,13186271510967821645
+1f1490e4-eab5-ca09-4f0c-91c300e6ac72,524801857,6188176697531196983
+328c7716-1d30-aa9b-77e9-541fc42b2e03,2764734922,4036660597912290822
+1cc93d21-868c-d155-727f-97cce3c5bcc6,3095585508,4688249879874088498
+baafd431-b510-f98f-698b-add4c047090e,311753183,787723535821117043
+e44a2a40-2785-b3dc-92e5-f7589fac1117,290809223,7200016966180658895
+6e158726-f579-9b68-1a57-14af7d99f1b1,2371856056,968141205122289414
+6ef6d425-5d62-b0df-a2bf-bf550e6bc117,2228164827,225452972422215156
+724d2494-de69-69f7-5214-0b9adb6d068a,1863699952,5650862586726557268
+7686eeab-d3a7-4b55-a56b-6bd97579a6e0,2234904743,9826094174290689523
+03660208-d7b6-6019-b877-9ee0cb60afc8,1526042683,1952924296489486836
+fac16122-c2cf-13c3-bf87-c5ba8a9b8e23,4080367872,7111385485566470401
+543b95ea-833b-7d98-d272-0640d27ab318,4090360723,14615316478373113315
+ae435b8d-dd9e-054b-df30-5b8b68e61870,1514964647,958218500644955126
+ebc47cf9-0d15-de3c-46ce-6e89ad7a9bf2,907236648,11238044369787456675
+319d62b2-21e7-8638-da81-dbd9178a60c6,702043150,7854915562038445911
+3619ff3b-8dad-03ce-0b53-a9a2001b8d95,1060596459,6517864338399874775
+8d14aa25-047b-f103-7ba9-73aab4e28d94,3228526425,16358119215979089534
+a0ec91b1-25e8-d9f5-2daf-18f366f7b2e6,1165461219,3109446846641623940
+95b2997d-00a1-3105-4199-7916ee99f435,1574650618,2845559875506177283
+e1160c46-efc5-8c53-30a2-355b8f93423b,2768315436,18104606229682678109
+911570a8-c310-f93c-cba2-7411bf0a6122,2859366046,18015987615039116692
+9cf2d062-b196-6fd7-ed2d-48755d1bcac6,3604233793,7221638332135515254
+59dbb54f-38dc-a510-61b1-88ea7d1c75ed,2654503324,3175967241316764227
+09d4c7b0-13fe-db47-66ec-83fd2c3e36b6,671421388,5973294257992735247
+36f8278e-ef78-f0af-c0db-00d9d24c3f94,3471484849,18400981145654375477
+d4b55db0-765f-57eb-fca1-095adef65b58,283060321,14773435626035487517
+0395e90c-1d3d-a53b-3bc5-50fa32aa3412,3174974571,5214900029465045406
+a3ec8f97-27d2-064b-eda2-cf9e3a8e3a18,2111500543,14433283626375131356
+c45fc6bd-0232-57a7-4edf-8282bba6a2a2,3300960602,11592059716772831187
+9a3012ce-d127-efb0-91e8-fdac61270fea,3530920502,17498485571107737075
+30d51622-9704-5918-8993-48aee415b059,1492002764,9717291799393714957
+03959b87-b501-ed26-0a87-60dd1ad571cc,3570317,5691150248484456949
+eb94f1df-27c5-f55b-c16b-10046a87d083,3593089786,8190153359303258061
+c4c39e45-9742-e643-6958-ce83c7bbb27c,3590761369,2415746613924733185
+4c0d8923-fdf0-6e93-0a49-72d5d9cdcb0d,160204907,8854564923773460700
+b1230400-60f1-2ef1-f387-32bb607bc632,444885631,7712411015471783025
+b0178d48-e341-4829-2985-9556cf8b0ce1,1018010840,74432596502124036
+72ba9593-1aaf-8efe-2c1b-a7dc3b78972c,2522401344,8930808030572734459
+33d8d6dd-dfb5-4630-325a-300808f2514a,1568346956,5557400595546413236
+eb30fe35-de09-88ec-0136-5adc7e029321,2290083399,1248923735485275743
+b9d30b51-dee6-5418-aacd-dd82a95a8dd9,3904066036,18435175176351043954
+374b5df8-e1fd-06bd-dc94-3591e800cbde,1202665172,1028964446885276906
+ad4b6f22-f8dc-79bc-2182-0e11fd89d1e2,2079890740,17686017592194310921
+887f6f7f-51a0-bbc4-a063-e25514a2e084,123273136,9380485280200400372
+99c993ae-014d-955a-8cae-be21c39232c6,3110084416,8350192587663488629
+ed7a2775-7a7e-0734-eeb9-cbbbbddd1db3,376053501,16032462199144943932
+60933299-94cf-7404-a9fd-8b147ac9e69e,3785122047,8219575616798977245
+31b54993-08cd-34bb-a2a7-e66082de18d2,1930166258,16152716261439701346
+1ad9f03f-8a2e-9157-3873-32c933703357,4243788497,8167713151206731611
+5714c932-804a-75ba-8e97-3a7e797174f2,218627636,3833535133171780781
+11cfd89e-68fe-dd0f-f9d2-86bc2a5eece3,3421824838,9296036623001197861
+6462f212-a411-c39e-2f12-f8795735c024,2554458161,2936590844249721280
+8f84e2fc-2b96-cb97-43f1-9bc73260466d,4181485715,6396704474407860794
+20399f09-2cab-9d64-26d5-b77f3d36c5d8,1245867869,2093839469084368402
+b623e0ff-aa39-4990-da29-c2c4d3724126,2332372442,17647128233457936646
+b19490c0-a24d-005c-2b8c-2ea6a18fc687,1529771460,11684042952058862307
+e5075583-d655-e0d4-914d-51b623bfbceb,3107336156,2241146451729881983
+54193040-8a25-fcc5-c5b4-c58ab839df64,3790756056,9469200626597738275
+61eb55a0-b228-6f1e-48f1-8d66b2d23a93,1449933067,107871085982052651
+3212e353-9529-b22a-66f7-dd3bc11e22b9,3530083857,16362007591785590046
+6759c422-4595-5f6a-9f14-d33367a0ee63,1690456372,17745485575256855607
+c1c657ec-4e4c-e2ce-b007-dbe57aff4374,640119768,8503356398128923055
+34f75c56-8b87-2916-3395-941b26cd26d8,45105753,6070076061045481839
+e5d3b2c9-9c06-55d7-48fe-a9b55c6d3b14,2952127738,7755724012108783085
+964d4e2b-4d6c-1466-985c-4cd07ea8cbbe,257346907,12504895747264500791
+cc62da5b-7a40-75b7-4dc0-c3b1367af09e,3719905044,12659790407042093287
+e39a8225-6fd1-94cf-4315-7d1d6094561d,1439709884,6817133188601410254
+8043de86-429d-425f-9799-c533f58545f7,4247320930,14263479560816309620
+ac7689c5-842c-52dd-e8d9-e0b4ac69b17f,3891252370,9764091240441082881
+6bfab1d8-a614-8aa8-55f4-c0cad84419db,571586259,16421056614817854088
+32025451-0a9b-7c17-f5d4-2494b722ac69,2171573678,5134595595177006816
+74e711cf-ed54-0434-d2a0-63ac2ddd5fc6,3325399681,2756959106591971893
+3964c0ee-b03a-d3e5-e34e-57e7e2f440ec,1501107314,10635421265698647067
+48f61a42-8de9-19c8-c9c4-66a389486a7b,3115126364,6022348649208563091
+c0d90861-70fa-b796-e65c-1a56b12ccd56,1677620644,14518394368611848055
+3ac6df3c-c94f-e748-c055-dfaa51147c5d,1722401603,12473752581996348344
+66a4f9a5-99ae-7e11-0a9a-3d2acb057a8e,2752542873,15776549610515315545
+5eab8b7c-9d5b-3536-fec9-d64b30a6a2d2,1262371158,12650215095110409167
+1898085a-3889-7072-2ad8-bf413940f454,999985446,15995232813453081418
+f3061b20-900e-160f-bc6f-07112e3fed49,1128055166,16266945264511932122
+fb2cd7f5-02fb-df05-2fe7-7ca01a7239f0,3421281487,10622857626299481263
+3599f9d1-1560-effc-0051-0b6b24ac7531,1839021119,3022144559808321562
+665f0cd3-a04e-82b6-bb0b-b21393a7ab61,2698028430,850462519497629290
+055b2cb1-903f-fe96-07d3-23886d338d69,1251399645,13718769777987845366
+acb7cb0e-baed-5fb6-97de-2a8847941b49,3669528735,7132956552513876304
+a3c62636-1cb0-0fa2-6110-400fc345a3d2,2482613262,18402742135944800968
+b987037d-99f6-c05b-b0aa-9147dcda34dd,142223899,638448318334990196
+63158d3c-c6ed-a402-e4eb-2638c908c63e,288058625,11862391277261403619
+c06bfa8b-5c38-e2d7-ca95-a848509cb2eb,868798250,7200857230681374026
+eff31440-5817-33a1-b805-ce24651c477c,454939383,15791392928235943328
+f8355114-c3b0-7d4d-c302-f8a16e5b775f,1693164248,3761926978646066899
+d69b206b-2f3e-020f-c423-2325c21daa7d,2530748100,12380078994974679083
+cd80c3cc-ab37-2da4-830e-1cd2188a9e4f,279426862,17881745072066822905
+34bf37f8-d81a-8f72-9af4-93505fd84268,3394817586,13483039060978138550
+754228d4-7f42-2a33-7107-215093e08b53,2058300369,13371016334464978277
+2048fde2-dc57-7a30-f545-a9a1e24a947f,3902261514,12396757785578625803
+62a521f2-ffc1-f935-ec23-c2c68a641b5f,3758324015,805691625570094520
+77019710-c714-b200-325f-a31dea61f6b0,4154747120,13912020366533518621
+2063fb43-84a3-5602-d0c3-862afcc8e993,927801710,2795859308841200257
+4a800169-c828-713d-54ac-6c40de7d2768,752197944,15859234019680955910
+19ca6b83-2024-d3fb-2cab-90659c44cae5,35470172,4572081313817337931
+0859a34e-13a4-cafc-eed0-3a8314b4f0e1,3806147269,14406458815748306322
+28f3a24f-bf19-33d8-8cad-df4a478590ef,2249242719,9299522122840893076
+4e2c2cd3-8acb-a4db-3dd1-192c57b01138,1475463269,13729010605911582350
+e438763b-d97c-acdc-392a-6e2384b3e56b,3816713680,15986988964205266319
+3fd05a2e-7c7d-7f9f-ea36-6d511e23b749,3249964900,7474956981102531770
+d531a315-d345-862b-ddcc-5d6ba32fa969,2178521690,6064960749971988152
+09fcc78b-5b2f-426f-0330-21caea4faefa,1426895344,4024244188185063747
+80ed3490-cf06-65ea-96a5-a31c314b1987,372105692,7363505870562575001
+7ae93dc9-11e5-ac6b-ee6b-9cb4571bb42d,2548412080,289922173702516986
+5f952ffc-be67-d071-e638-f0a44cad8267,1026017058,12741759154694142206
+51df6545-56cd-fd33-3bf7-a3632f145222,3498496756,12184111876061852587
+5cb8acc7-93ca-2f6c-316d-85331ffe3123,3827406058,9509119777889277195
+3daafead-f7fc-e24f-af0b-9fde93f217d5,3696702225,11247071749546634381
+3077c292-ed24-a9dd-a4bf-4cb171fb3955,3165169284,1178897452418767648
+87cdedbf-d9d3-f308-71c5-6d68e35a5a9a,1167529537,9484316241007496004
+fff04ec8-6e42-4e81-b8de-d9624e617d5c,2735377921,13901002674016701546
+13d19ac0-d54d-e515-ef71-2343b011e3ac,2116146344,13839132423649249788
+45074778-07c1-a90d-eb8f-2a04177583e1,399906307,6988016335589221001
+b3a10328-bf7a-f2a5-473a-a45d91c61388,2304758335,6296886839196952767
+30e8df3f-294f-e130-f794-dc29638526d6,297137472,3777235017760468044
+3b114423-6759-e57a-b90c-ad25075844cf,2281681500,11805232259303635379
+a63d22c1-6124-3e4b-b818-236d874e417b,2345333855,6268807845566407156
+93a9851a-4b56-723d-53b0-129bcd8cb603,3609624314,10071085268306650415
+68fb99c6-54ac-adee-522a-01a16360a9d1,2880990823,3086754620725150882
+a567d50b-44d0-0220-8706-f6467ecb61c6,2472527488,16355903008777515742
+36487a15-bb5b-42bf-f440-d027f86c43da,2933115475,3518084607896464387
+4b2a6c1b-a4b5-1367-2706-504341c0b903,909518863,5754484916702785169
+ef3ae434-f5ac-a8ac-b12a-c3aa9455498c,1260029598,17260890912280057802
+97420dc9-656d-2dfe-32bd-0e18a2fd6e53,4002478700,6064570684652332430
+6cdb5b32-4bbc-fbdd-e0e2-6ce4b32f5d9f,2130575066,16922925495236981864
+0e9911cb-a33c-fbe6-474c-28052a5c4b40,3996356710,10193697384225723466
+4367c511-4e36-7aa0-d127-2cadbba261c7,2856276667,4851471410089530920
+091ed4d8-e41a-b7dc-b79d-3bcc3982791a,1937543670,14562167700805283413
+4cc72f3f-9b15-f10e-f0f2-cc6554f2dc2e,649902148,8943721277464011870
+06202b0b-9529-cf2e-14b6-d0ce7d07ee2f,649088,6894159535237634431
+ca5f2641-1ba7-2a70-cb07-87be60bd8fb8,3554881028,15307525020894752541
+0178e3c7-050b-3536-c88c-d4f3089b6971,1621984477,1437429090103211331
+66c72b59-1add-ea95-d866-546685f5b1e5,3168114541,4966414463417923545
+efc27c2a-4202-152e-dc74-ce024202dae5,191769224,2805916492622099058
+51147ab0-32f1-9997-385f-b34673794886,5855836,15448172843310515197
+42bf7a9e-4c6f-fba8-a95c-0093d4e83c55,744120381,14378437525493874156
+fa95364d-fa9c-e668-e8b8-6dabddc5e1e7,3311653235,17403106086384480093
+581cbaa6-8f64-62c7-a8b1-b4221fd19eaf,3404399592,12006771512644607591
+ee3979d3-4f05-7da9-3a16-51cbb1e66db4,2038141705,6398970703674147160
+b30c7313-3eee-dad0-235e-22b2ce29cc3f,1054310235,4412133500858714850
+82a07bdc-ac0b-a653-82e3-0a6daa36fce3,2485743663,5449237907390634088
+198e1e8d-491d-4481-05d9-c2a38e10802a,3755861002,6983101475639535135
+648e1d5a-f30e-bd50-723d-13cb785d7afe,3562477156,10695832761338586791
+17a6b444-7cf9-b703-66f4-c04d7d1d6450,1651003540,4207122972771733989
+b943f8b0-4421-8171-3a17-8fb56001fe47,971675953,15477522175965415964
+5a7075b9-0bbf-d22a-9781-a33401aad3c5,99368722,9634044085274367083
+da19b9f7-7ba6-d3ca-ae4d-5af325f62200,3132999066,12092227172861055808
+8d180636-4c0a-df42-15bc-6e4f6eaef21c,4112001577,9002557287981247213
+833b33a8-e5a5-71e7-822c-b14744166fb1,1507310750,1953704686130907153
+a8ed45c8-9ea9-bf3d-e970-e7a864a17b24,896579081,4493075507980779301
+50015768-6b34-b083-ae0e-016003e5dad6,1882782418,2055841160850674913
+e2526dad-50c7-bddb-0aa8-be6af884eef5,759813504,4718709335238040630
+fbd437fb-3b8a-4dcf-5915-4dadb802d00c,3985158058,18193377572485737590
+3486675d-68df-6e15-3f2f-a83c547920cc,3007339108,14294070376609644485
+3929ac77-2eb0-d04f-8404-67f415b6bbe6,381455057,5704274316969263865
+c289148f-96a0-044a-c97f-d31f03c7d006,3884429010,4515179483121104245
+5c325410-a28b-2fbd-a40d-82626fea2938,1724063588,10641114477265486038
+b5ce4727-d3e5-6c49-201d-932c3f917551,2398102457,6595189526753277101
+d0040e7c-bab1-bed8-9237-7cc926db5a67,516499678,13748408619775135922
+a9b6581b-e9ee-e490-c1e5-eaf1dccb169d,3543294558,14593388023799177229
+b60a9c5e-dfa3-92df-09ac-0cfb2ec48305,123282056,14580161757471379252
+2c39ac35-942b-ed84-c5ed-52c4efe3492c,2122978757,16721296949070773893
+76ba3841-7d3b-4db7-6adc-66d25258ccd5,1446954231,5631756914715767081
+32f54e69-fa65-3ad5-92fd-3694904d016c,3462101895,9883823765454175800
+34a515eb-f516-c8f7-b390-2ca670dfa3be,207728375,17188012232551526057
+7993dfdf-9bf9-b932-e13f-8f237007abb5,2058212524,13177152553851995086
+af65a3e9-161f-24d1-2277-b368bf712aaa,650468657,622854161142926464
+bab78753-4d73-25e1-d1cb-35ca22967f5d,1635164270,6274130458871039385
+937496a5-ca2c-d9ce-c948-dc4f36002e80,2668067715,18018078151786377614
+33018e3c-0373-08e8-cbcf-44299ce43e17,3003945143,1099353385372249073
+b5dd7a0b-6724-e994-3931-e689585f8eeb,2503515068,14311540089581094818
+e85bc140-8060-ebbb-533d-9eb563528a84,1734190010,14630403350401288032
+8dd9b1ec-9ccd-b1e7-a7ab-fa79266e586f,153039723,4160925071866715845
+ba0fee63-15ae-1630-37da-918f6eafe1c9,1669423234,12756835636941425545
+23a1886f-50fe-7c39-fa10-3ac4c7f648be,2799445954,9352611568144853371
+31d32bd4-0d22-35a0-7593-77e5c33ace4c,3082683424,4212579944277548062
+33955f39-b921-07d7-06f1-d02a5605d7b7,1687866462,6547095984894935512
+9a38c266-9b4f-5b1d-0fe1-913aec8018b7,3496135933,159833199320720069
+68541476-572a-6c1e-45d8-442b340e2911,1830163920,5209591744747595332
+b6d8297f-8a55-d2e6-2c82-541591f20d73,201010154,7684404297582511042
+c9466f4e-0a90-ffbf-11ee-4c0aaf986c09,1589229713,13410101695846997373
+64191e92-de29-f8b6-36c1-3cb4737a63cf,3390375214,596345709720106806
+ac72b88d-a9ec-32e0-b4b7-65c75bc2c1db,2463041045,15918938639184066966
+8cbcf013-6d07-9c28-fe77-13bdfe7e7a7c,3243421831,7370452825537289951
+d24482f6-d0dc-ebdc-9d97-292a504f316a,2855986849,2338375774871836915
+26b753c9-6ee8-44c6-17c0-de78901a0084,336299388,7025514066451647746
+105248ee-a6cc-ad3c-850f-b6b6f9eae5c7,3311381351,9360602322804698706
+6d5b5cba-a167-4ae0-9b47-524cb1cb8bf3,2721832493,18073015623460072927
+c1a9b573-b742-7203-0ae7-56d203e70368,1387934379,1749410261415680789
+f9e46167-2b19-9037-0563-9100d398ef86,443321028,658815246569635678
+f71ac44c-7fe1-a77e-23f6-d820365c8704,566330121,13377995784467845837
+fc2e066e-4e9f-cc2f-8138-54282ebd62a2,3345570986,13060593988817032128
+2a6f6d43-d047-2b2b-8e53-31cde36e50b9,40620869,5695511989280277344
+3a1e10bc-3e92-0780-3394-68af2a8fdaaa,3707926530,7309115518153632682
+39685ac3-022f-ccea-b916-2e4da5a896f1,4043112402,4066583519578608392
+fb45da81-865d-fe1a-8a7f-62b7d9039797,2754615654,7843956962449197053
+40450d0e-a4c7-7b59-c3fa-ad34eaddebd8,3452368275,18357457043569146312
+e414996e-0baa-efcb-d262-e4ce79c142dc,2077053748,9422734053302991196
+e39fdee9-6181-3b56-90ef-5eaf2899ef66,4179371418,1044209260156414894
+eb19b15f-7e2a-0d96-584b-20fc1dee2221,3886265217,2262337506950162258
+71023b22-5592-a8e0-8cda-67adeb52d07b,2274897125,1460792323226032480
+7e1d0354-4b1d-9db0-d712-526d7fef6a13,1078035571,16173101976885082573
+75e8e9c7-196a-4bc0-b50f-0ff3e306a566,892825714,37353737889338874
+d5fe267c-aeb3-0779-5f25-9fdf5d20bb29,694176765,5079372726815167576
+347b51cd-a5f8-737c-432e-6916bdd817f2,3250856737,9224248130021074456
+3aaac6f3-0c8a-63ad-6e0b-cd10d2e20927,2040827009,7654139803695036401
+9512cf36-0a80-7654-c42c-dc62f5ec1c0b,841904508,5452425754480201335
+8c54f6d2-657c-72ef-bb14-26b2ef5fa1ac,2486187950,14646417574608983377
+199bad13-a2a7-d80a-0115-c03b658621b3,2578417531,3049500654880971075
+771f8121-60df-c7e8-e481-33f72d587e23,1238322861,4258474307735129726
+2d91c226-6822-6a54-51c4-410d74aff857,1067703342,11307645473299423918
+85593908-a71a-990a-6d90-80f1f0f982ac,1996023851,10546521581200807405
+f943c276-b96e-5b50-d959-5345a0f7884b,62623428,3252542651086003760
+5a5b315d-51e9-4880-bd02-c0a9b98afc62,3039588143,1305673166535282151
+e347e086-9134-1933-e389-44a2b462d42e,873795543,9704253489205483990
+c6d4082d-871a-1531-9be8-63f5bf360eb7,1686927679,8434378480249879776
+efda06ab-bae7-a4f4-7094-436420c1ba6a,382625778,17386074495535971937
+11428ec8-3f1b-d5ad-1931-b7de557f60cb,3369335481,11083026994936246996
+c00aed95-c743-9eeb-017e-9da57f295cbc,421480061,12499966649743247768
+9703f204-2e66-fc19-e32e-5439d69c293c,2983315214,3158250601257454162
+81d69cfe-13e5-da7f-1672-2ddb9736808d,26061263,5343200505323707801
+14b51c7c-8a84-49cf-5a54-386044f6d03e,2165301804,6989869551733470201
+d3b6f7c6-70f7-c4e0-9f3e-8dca2a3a3cd1,2109925882,1439886344215000607
+47fd68b7-aafb-a2f2-3ea2-081d8a68d792,1111957958,7633171060327001977
+e9ea3a4e-a9df-1f38-306c-212ce5f2324d,2754225533,3855790362626373343
+91dba9f2-50a7-282f-88aa-8a8729fa06d6,1524962671,13540806399539665592
+a163ec5e-bc54-071b-77a2-7aae1904b071,1721084608,13475392924178101949
+d2bee96e-1972-ee73-0f2f-9d651f5cb616,3633472746,14983339059776404809
+1b980322-ba66-90a5-27c7-2c65a89ed65e,2946216682,7407271119129273891
+4a442f25-c0f0-d050-db3b-f5ac57d21bc1,3729847773,2873872410861473556
+4ac6a5a8-7e73-52ba-09c9-880aab2d849a,1168889745,6052689717013756833
+0519220d-8f2b-d0fc-1bdd-dd563a18962d,248745907,8559928436500899103
+015458f1-50a7-de56-2d0e-459e9d6ce310,1330167462,14269928801442058241
+b54b48e0-8230-cc2b-0660-767281b2aeef,1188963996,7284716776816733138
+15162a90-8337-6eba-23b2-b0391eb40586,2949421085,11484284623973856426
+45c00bb5-415a-fe04-12c8-857bb20c1a42,3361476371,6001304208387202275
+746e8f81-c950-93c0-8aa5-f3b62d1f760a,3469436360,17990536387854881343
+10c5bc02-16a0-8111-1bb5-810eee208f0b,2672740383,4827763626767372348
+0a6cb6b9-9833-c75d-c20d-1db725849e22,2099845150,88375473154472363
+f02e3742-c81e-affb-9def-250c7bb053ac,3881115220,15228218505121503359
+871f0ad6-4636-3990-ba12-91d5e2c1c84e,2639796804,16906527003739925311
+7e50cbd3-d6b1-ed09-1481-f05c925d088a,4292457289,16989487102912985818
+51c64a6f-e80a-3391-5d52-93727e4f599f,1613187644,14446898856023383091
+38a3f9dd-3a8f-449f-d79c-3bca7522322c,3282555471,11972222232235420472
+9f03dd73-a939-0615-8940-00fe007e584e,230088936,17523745847067741586
+64de36b3-fc58-8f0c-dbf1-02e72e61eb6f,2941795753,7810281368713459374
+6e34f524-d502-5055-7257-83178b877724,2250361119,8733345938456624428
+b315b065-60f5-0404-8178-d9564eda5c30,1619123941,13324361034400246172
+bf9e9b85-517d-be05-22e0-38892053d2b0,407576546,9149732958483330006
+eb29377e-0c6f-3c68-c323-fd088bca3c9d,3330281503,5706691333175515372
+fc5ead53-508c-d28e-bc65-b5b4fa084888,1710354722,2019450868897979871
+11126d9a-69de-9580-10f4-4e3a8a7407f5,970718478,10293878846919980488
+e3b8822d-b6fb-0661-1fd7-82afbf8e3d9a,4207538904,14074659624289917738
+7e69feb9-80bc-3e6f-d92d-d2bb76f078e3,1425416048,5065292116879667980
+2895398b-e38f-cc9e-7831-af3d52ceef22,2685255410,17031027107740446922
+22dab22f-d3ba-a607-338a-488543fed89a,1051521719,1849717312590138696
+7a6d6a7a-c784-c539-1e65-9d8cb422e7c6,2112004806,8022530923079300750
+ca43d5c6-b540-17ce-7bcb-3946dad6c6ca,2070772608,13664872038568445181
+1cd00785-a771-ac57-92b1-f74b0a2e2cf7,1296820008,17656319173371029631
+fd1cc20a-8741-e0ff-2be4-c1878210b58f,3128607451,5350466213402292908
+aaf806a8-6ac9-d87d-27fc-73c7ba8e5d00,488988721,11001930441081376428
+440f54e2-4dc8-2dfc-f50d-9d8585e114b3,1325749058,5899408300683103899
+2e58aedc-0b51-f5f5-ad26-c3fde425e06b,1628435737,4547999208506875251
+b96c6553-942d-7f64-92aa-b30ccdee6146,782006844,7698253532431624646
+40d5720e-f525-5ee1-fba5-294710cd3928,1676636356,3698013321746540262
+da8fc78c-d179-a85c-a27a-ff49f0cbe8a4,945156111,17399630008955613061
+75075436-b01c-f612-6146-172ee8fedf3b,3232730255,4412466949228640984
+42d14f78-c885-166b-03f3-30ec4b8038ad,3097665602,10107351522982130581
+a28c4dc4-c4de-fe0e-ce62-ae1e4fa34e6c,3966701458,4880453565879908817
+8ef6cddf-c204-9522-b3b1-892220b85a34,3149808787,668178167182534659
+2c44f721-3011-a906-d758-312b7b40a0c7,4293549475,309190108189196227
+2e3ceaab-3a45-7838-9a65-63a904ce40e0,2748902853,8890227091729438087
+961cbf38-c686-b836-a5d6-8cebf32cdd36,1496869173,5461723356501601034
+c448f262-3188-9d08-4170-472d6bce5658,2112703949,18378520927239346638
+a5868d2b-5efc-c51b-b81e-93a8b3f68d55,2656193635,12416407081531857180
+c9fa7e5c-5186-1fed-953f-8f5968bb8789,1039134138,15218951632012932750
+d869e633-8caa-5cb3-c8db-90b020b72f43,3958126898,3983925249979888575
+8a69828c-1829-72b0-edac-933604c5415e,1089715119,18058357726984860772
+aafd49ef-56ee-15a5-cc90-69fd3993ce51,4192562606,5409327937879400000
+5eb95d17-0af9-abf1-2517-f9e2e6f6a507,4186261448,6025189571111840704
+d4101103-a107-f96d-1731-f66497860608,3342344395,6737618574349751530
+3c808100-9aee-a644-acbd-83103f38e038,3586976134,1620244846676589252
+6b4c4434-fc0a-65b0-a7d5-c1b861aa9a91,1331857668,2371667152891761446
+83e75077-39dd-ddda-11c2-e2ad77b0fb67,1351364372,2745179599833242473
+d821035d-b54c-0de4-f793-529a46097bde,902884530,7708739588567274431
+a6644515-fc97-6c59-d53b-eba5cebef7ca,3290574300,2431938914590494731
+5c035218-0d00-93d4-204d-1d1055c0dc82,1491824485,3025686422431153282
+11840c2d-102c-c5fb-410a-54ff79e244a8,227781167,13482025251090331966
+eb723a8d-fb4b-715c-e7ca-5f203c854bc9,1066862641,292870689729842290
+38ca29bd-6240-b639-1e58-d6fca5b34445,2986230335,16880385833632378617
+affe22dd-49ae-8bcc-3b01-4b4f19f7fc57,2640644530,16229109114543226881
+2fae1640-75fe-daa1-df94-17dde0ca9382,4290699883,9679222436922998306
+3f73797e-fde8-ab69-1c11-ddcfe0c71daa,3720253542,17028261065990428064
+cc27916b-43b2-5008-9b1d-c3761ba9b461,2972060549,9752693902193271303
+c67f419d-b3ab-4fb2-e8fe-17f4bb038c3a,2394338011,1976637251610181573
+f0d3eb23-20a8-9e08-7960-2e404307ef49,4147121651,7647654606578972000
+a1b71713-fe96-8eeb-447d-5777a0ee924f,3083006180,4313614121658791720
+5b5acca5-d52b-fecb-1d1c-396e2899650d,3667188407,1243048224954720513
+e3b5a1f5-0d14-a57c-b550-2879cab4d8b2,1633374023,17673416139082234946
+2060bcd3-f067-b0ea-f482-4df1cde3978a,3968551122,6001628884273670858
+30137392-3d3b-3480-894b-2b9035f41ff0,545258081,12358466875700164497
+8d045eba-927f-9eca-46ca-62bbeebf00f7,280745266,10497349325928187171
+6ed0f3a8-6a00-9e66-f9ec-92a06e69caa9,3880971968,7051662443663810561
+286c488b-d172-f057-387e-344c532cd4dd,1838655082,4895748328015306539
+b0afd90b-b2e9-9b55-9439-2e831a81649b,1622690324,6129465974774719387
+c2fa736b-09ef-6c13-42d0-69024b528729,3699484143,9212911062371696100
+62c40f36-9cbe-d9ba-7fa2-aaa238b0b3c9,2717105472,2349012494621588204
+23e217f3-e381-b758-6b82-ade13e54a7a3,2764320140,13872448893279361633
+9165f456-ad71-d4f4-52f5-2274ff0e9a19,53222905,12876272794435845540
+b872f01f-94ac-a172-8f75-3f14b9d23abf,1824136754,11011238430841535836
+d7d0807b-d85a-1fe4-cbdb-00d72b5ad0b4,1574946577,18222529999405722801
+1358c405-76ca-9821-46a2-c4888cdc79cd,91748271,11742440093502565565
+cd170b3b-af67-2529-c6dc-81b4f43fde86,88140906,11118973417984213803
+2531ec6c-5306-ac7b-3956-85a6d3a34f7d,3708314219,7679858476879204178
+1a3a0dab-31f7-403a-71fb-3bc509fec141,917934472,4870178552511756896
+2cf1e485-12f8-d917-0a67-8805195b6362,2996849038,3566197020395581852
+1d14e43f-954e-7b0b-e55c-8258ec378c24,3057656749,4763874431756854943
+ad83d967-1f75-91ea-73a7-f487c6f83352,759975460,5286534840021727
+6b9b6fd1-005e-4cc0-57b0-f240df813080,265054667,9076720254083278190
+4aa18970-4192-ffbe-897f-e9264f2a9ddb,3664539806,15209948972699863127
+71cfbf22-8f76-ca8e-3619-8ac29fe1f40b,3897499814,4365473616347675642
+e1e18965-5cc6-a17c-167a-a72fe7bf9109,2017001958,13554495844794646997
+0af0472c-4604-ceab-8bcc-31b0784d7363,2990085717,18416437025514699832
+cac2fa27-f3e9-024d-8ecc-eef3e11e0aa4,4083889513,8369873564624160846
+1676f3cb-2077-ed03-eb6b-dc1cae8e1a79,1392904497,9738327823459980259
+b3fd727b-b5cb-4198-001a-83059bddca0c,3814621641,1999350544767988808
+a7c5943e-08a8-3751-0bd8-a22f3144fcbb,2104923050,8824106739542580929
+8846bcc5-5f48-43be-8081-22ac8e0a7f9a,2691725938,9502126147497329811
+6f1584ba-5b38-469d-026a-c766a31aedf7,113148863,779056619355214557
+01804189-3ac5-9099-52e5-c6485da1d786,3409447389,17698012635134296143
+af98aeff-7fe1-8e46-c1b6-766fe386f1fb,74113495,12771746446681502141
+23808514-c8f2-2c38-224e-5e717aacbc01,1521781257,16995918097472358711
+12f2f2b6-6a6c-e0c8-a77d-d7fbae4f03ad,1122762031,14415023683727081178
+953c3eb4-c473-4fc4-8b94-d292f3de29c0,1436296207,5238384875001954970
+d1795d6e-6ce0-879d-f974-be769e1d1e54,3220139599,6774507297748908143
+fd59c536-4279-aee9-8810-7a829826281c,3838840926,5620714782427619824
+1cdd9904-d4cf-b985-9c6d-76676139e366,3218384731,7358299966801425922
+e7e97edf-a3d4-6fee-13d3-53138af357fa,570790076,8418264511894698489
+873b4ca2-c31d-5e7d-bbbd-e9afda5269e8,3393256268,14475367772926584344
+1b834a7f-3ab8-8aa6-b261-ca05bbf659ff,4124464555,8282726002999490324
+de79aa87-55b5-bd2f-00a1-165203f8210d,2277873725,2099730745133170147
+fbed3f8d-e13c-946a-329b-ace281660ccb,1608231977,6973320015567200360
+4a8dc5ec-0642-6a11-c605-69f5a60e1343,1312155060,17566215262061036872
+3df14d58-ba24-9bed-4880-20225f03e1c2,465927923,12300364381160423559
+6f8fd953-28b5-723a-7423-048859dd3a1b,241426479,12359851755258613264
+d88f5556-8baa-a206-db60-492fcc59aa64,769225164,6451378230552157465
+4ae57491-6930-1cb2-5f8e-c6c2a4bfa155,1009591146,9883889682814022797
+dffa142d-395e-8041-2844-889fbfa4bc69,2621489563,7420560362186431339
+f1d441cc-a03c-1520-3393-00e1052423c4,1245410873,6337996662681010177
+938250fc-b8e4-1bd4-2dd7-05694fb454c5,389165573,18133163645665113368
+92649626-a20c-1872-3d94-e5c752a91304,881582246,12017474081916264934
+ba042e5f-2a26-5d22-8e97-40053fecd709,139926050,15051179437580336025
+bc147643-981e-6060-ea33-9b11199cbb19,1488658491,11331951011287529146
+15debaa8-b607-ae78-41fa-9cb2140d63b0,4003389279,3990026099842479732
+0d442a2b-de51-18d9-fe98-b1248bbf4c4e,3316457190,13294299101696021529
+3960de15-6912-fd1b-e871-46e7788ae15e,3734530610,17315026387279503308
+2edb8183-4059-ef00-c21c-409d423e4190,3778122469,7226362757617875532
+59603a78-3043-9492-5575-f7776ea0ffee,4036822461,3434297360362037137
+f061f1af-2cbc-f85c-bcfc-3ada9b4a07de,978140541,4868641534978898791
+b0514618-43be-870b-9c2a-8cfbf0e1d066,1100082900,15417287741622730502
+ed4f8420-556c-3e87-735f-7cde3c36aa57,1396038357,18183561124196606530
+7ab1c782-f2a2-28f7-7ade-a138b28891d9,21262756,5816012142489623775
+9956ebab-845d-d092-f413-7f386e2ff7bf,2377801187,13353048209242050553
+1a2a2484-51df-303a-4c46-c0f10ab8b7a4,270034139,11831538706835462290
+58a3c832-2a69-a6fd-08a1-0b60898febe5,776126530,16865663416088181708
+0f58febd-bb42-d561-151f-9f551879c713,2487387008,15162963025077382623
+16a51135-3473-f039-ab05-4d4c810c3117,3083765014,2324018692911338913
+443a53d5-f1c8-6d7c-19a5-b78bc73b4293,722529793,9086575380149351208
+2d5c3171-3cf6-af22-64ac-8a314d7bc868,210490869,8056364912759838696
+1071d7be-e0d1-945b-59bd-adacab800dc1,1458919657,6995640268900870974
+985b3a4a-8126-c867-b4a2-08b28a113d4f,1454281791,4606459396974785063
+2d35ae37-a4d5-740b-047f-f3a071de6e47,2455532971,2829728835652692167
+183951c2-2f94-6186-9efe-abad6da727c6,2263767689,1503484929206566961
+af8bcc2f-87d4-71e6-3459-867487fd1ac7,4001561882,13178065862554460769
+aba9e66d-e34b-fffd-29c8-74f1bfc310b8,3118935013,2711250584879925825
+c4b46846-ccf8-8135-6bc3-7f5416b89b21,1989766445,11164542527243032851
+e6e7a589-a3c6-12eb-d9e9-391b1b66859f,3887392668,18163584987739768902
+0850a287-f2e7-3ded-8802-9c7644d4dfcd,3835910415,5653790839256438045
+b6096d35-e581-8d31-87f1-8d5959f5020e,4114782710,15632537698632136639
+181b6d47-2c0c-f03d-20ca-2af3c0740587,486702743,4255696214730784196
+0c689685-8ddd-3e4e-5319-734506769021,1445544970,7299781979703290346
+9b4d25fc-6d74-92e0-8df1-8b649e74631f,69670069,13702510551629771909
+15a4bfcb-4015-e443-1dea-b137787edefd,193911094,7572924143842723961
+e883d137-3c18-8cf4-f4f8-692057d60f48,3162014284,3216752370601189904
+cb851af7-c102-6004-145a-06d12807a28e,2618257207,14662618735208008721
+37968ae2-0e75-cfe2-dc05-c45b6d9afd0f,3708469172,10315340982863418553
+26fa4553-a1ae-1369-acfc-7878a95d3bbc,3551709054,6413730209237525188
+fbeeb6f6-8933-f356-5f79-b61545df55d7,2918538650,9729215648442831084
+5f409625-e97b-58a5-0ef9-bffe82ce4218,2958361638,3127197809613090758
+30e36d12-c126-3935-edc5-b10b0efa24b9,2295580266,6827356572722940677
+09d64624-a93d-8904-1762-2010a7992acd,968493078,18422130252843877249
+dbe6a360-f26f-a720-3d5a-d8a2d9536110,3438557227,12071368008297479921
+d9926b4b-9a63-f914-dde1-e38fb310611d,833285861,4441408514470875860
+e42c9f46-ee08-a590-435d-05c391b83ad1,1659481067,2280565544844889743
+9e06546b-05e5-d939-867d-3c3732e20c85,21716516,10061857199693082824
+897a80c7-4245-82c8-0fcc-1565fbc438b5,1787992805,4212376400026836757
+6b9c2bf9-c4c0-8bb3-2ce6-e2bdece73eee,68237924,7044346691483717667
+ce2d4452-635a-4d9a-0815-0072aa34b061,91520168,15026527900213109981
+e96595c3-317d-65d3-6ef1-3e55b9f613a9,32985375,7368971285164364604
+fdb33410-4799-e737-30c8-bda8cae84841,2628524150,3040346970389701630
+262b9565-7760-4d96-f950-3c4d15d70c2a,2231212975,1388108656547579879
+c98f042c-935f-148a-9e46-f666a9da6bab,3503236654,4768084280654561910
+ebe483a6-85a5-2052-1de0-4a54a8598019,3152383403,5065634486787233472
+adfe82f9-5c60-7ab0-6e68-b630c98042de,2207224610,6879285350954400557
+26f68868-b587-e27e-47cf-8654551b5d95,2446885584,15856961034557051416
+087bdaa6-7f28-10f8-23e1-f6b8fcd3f5d2,2281900933,12099237860708457439
+116fa786-ff0a-fe8d-9af2-012baee8bdc1,1397524914,14074173610806643829
+76a08f79-cf54-6f09-3006-e23212625074,761469405,18092993298837032105
+7b2101ec-28e2-d8dd-c3ff-e69346ada98e,381766885,16618046746962017423
+be23a450-0192-e810-af64-ab7e95a33747,915389311,12576372615437420114
+6d75a28c-b93c-7831-31ac-99621aff4093,2184406679,845209814854369339
+335e9b50-1aba-86a3-55a1-087b4b0b44b4,851464896,14602113198487265685
+70eadc36-5ca8-303f-4809-645b1c3afdce,1241316333,2082711557093848920
+391e11c7-769a-f324-5585-7ff6fc625d9d,945935100,2368639901471945514
+83235a44-fd5e-90d5-9305-5c736145f257,2167657733,11620496026898175308
+721bd9c8-c55e-6b3c-5be6-77ae9772bc1b,1119167416,6332926885218566900
+930a3483-abb5-da63-321d-bc472a7a66ea,933380080,5091477723624371810
+3a69db0c-d671-b84e-5112-596578980827,1717605482,6398549595226155404
+2dd895ed-1533-f3bc-49df-c2d26d6fc4d3,2315426863,3381991276183546099
+685f9dab-2a6e-2917-01b3-2f643f7d1f01,1173308285,5196883019826242413
+c5cb7a57-6717-81e1-dd8a-7b5ff7d3edf7,1792867234,11105377802578542498
+c231d097-fe3f-c335-c428-f54951da73b4,3709793163,3826311719297443230
+16f1ce95-4f19-9e8b-7a72-ab78e99ab5df,485720518,6646493363884011456
+f3575c1c-729a-be6f-af4f-6014623ceaec,4103918433,2284676610346353020
+0de0a7c6-46dd-af8a-a9ad-059b7e62e0df,1483031462,14212561766949563618
+81d4d34d-9390-ca02-f160-69b1915d46b3,2849231963,3397260216662120685
+a27f0d8e-2de7-7915-b4da-1319d8ec5260,2656224096,4228817858065306451
+99298bd2-9434-c007-563f-2154cf15f2c2,3037927174,5199066646047128340
+c2c168eb-e8be-5993-93d5-10da05dbd36f,1294960657,1921387927116666146
+a4ccce45-f551-7c31-8f7b-2d7a7ef129d7,1297142461,18381748899676971588
+410116b6-22fd-6214-c00f-17c5c12b4aa8,3037836812,10515931237484957283
+077c0fb9-5769-e2e6-28f7-996ddd13dfc4,2077181731,1083609145077817304
+39b7a7b2-0df3-61c2-bff9-f2053ce8bee0,894171135,13886192986325925271
+c84f8d57-4c4c-6c6c-7d94-897e869168b4,2985508508,13373158970190773408
+84c56615-248d-52d5-9685-9536600d1f1c,65791792,15034757578205536918
+7dbb3a83-95b4-96d6-decc-270c26d28b85,3795987957,14098711048124383002
+2abf3381-8fe3-23a3-c166-bc85cfb93891,3876017984,6377171344424066043
+58f61052-8ef8-72f4-ab89-175d95265bf8,448346314,17982270955552804934
+a74b980c-293a-a683-3037-0fce2d385eae,3605572587,16625672741890732266
+68326914-0a9e-f31f-afa7-b98688d05d12,1041043470,1166858311951371740
+b1540528-2a53-e935-e836-302374b057a9,3550244711,13673357000611120319
+69d85b89-49e9-834f-c0fd-618674256c4d,2736677278,15107682679599615414
+3cb224ec-1920-1310-3753-3d9edab370f3,459393459,11920652788497249311
+b66a621c-0898-df3d-2d75-c0925b6708fc,1895812755,12562393533185636253
+ae71299d-2865-1767-cd8b-d6e246281369,3489192012,7063714136039227662
+784d4de5-6803-d034-6dc0-73a45d398bfd,1197318025,3352091833505019830
+ee6e3cb3-034a-e43e-67c4-33cb79143f23,3880062185,4836067310126123680
+8dae493e-e76e-b1b6-9f36-46fad2a487c1,3439960531,12531918979957915012
+6f860565-6bae-f5b7-d874-74f220ec8cf5,927220817,16920806217106038999
+8cbf709b-afbf-7cc4-2371-0320ae4e31d2,3796438099,5167781505603039201
+7f4200d4-f3fd-31fb-f3fa-b29abf3d5894,3629027435,2373316437085097094
+2e58c3b5-6ea7-0df0-ab78-c0a5be4058ba,2194248138,3749729600650402630
+61468711-8dd4-2263-d9f5-417f881a96e4,1994870078,2248794101092749188
+5bdcc5a4-d33e-948f-4a4f-a40ade1416a8,2875038480,9878647545180291954
+e5ae3034-c008-237b-73e7-5744bf63fe36,221775651,11079193969015104376
+03fc0d92-1f08-40cc-67d9-491a6cd2127f,1767690239,5762695913421617701
+67f52231-48e6-0479-eca5-92ce20108bbe,663004838,923586511593815922
+f871e3c8-88e2-fc0d-73d9-3e89ab70d6cb,1520209226,11631976661125097549
+041cdcd9-7afb-8807-6809-feb3d9d39c14,1404705985,18045459318097478361
+d36405a5-2aaf-e30a-a578-b003d5287022,129516443,4424912100505688530
+1190b0df-6cd6-4f0b-40f1-b3339301e700,108695947,1551909379972734573
+ea88d795-c822-cf58-00de-ae9ca591e1b2,2012502395,17384690494374279137
+2ce8a2d9-74da-c8fa-85cb-2f14e9074678,3229006896,8385816647421913842
+f9d7b1d0-b55a-40f2-643a-b7bbd7f6f5ad,344541438,12422763396905627233
+5d330bf2-e7ad-e1e0-7cbc-7b6db0395d8b,1693100512,5394767690897092360
+738decd7-88fc-8ede-0396-9ea80bfa8f0c,277410392,2473638463093719509
+ab31c8c6-e1d7-0bae-b563-2fec55ba1c0f,2901652373,6941735408502054038
+b173c96d-598c-5ad6-96aa-e96a2137581e,4167954211,18013351555346292403
+5ea9b5a7-8fe4-4c38-fab1-803736aa41ea,1459529497,3877143667519496948
+3e720dad-7f5a-b70e-b722-3283c12621de,2344486796,11382832208285218293
+3f508a8e-db93-2ad9-3df1-d8ae71b9cb95,183895821,11280297825023044800
+0f52d1b0-a733-3a9a-6947-1ad0f74dd5cf,2776316385,16033886514423277207
+ecdcb50f-0647-7557-064c-c1005dbced6a,279009234,1495996430314051928
+0326fc0b-512d-b38d-3ca0-89a229afeab7,21007137,13819277226896573673
+e276389e-5ce2-a4e1-c39b-12ca5197c701,450889600,16165780123199442408
+2e891efa-440b-cef5-68e2-8510f7c14ea7,831500453,13311144166628990698
+50bdc3e4-e138-ad5a-1cef-9a97b9ff7c14,3490457112,16999393166832813257
+fac0dbfc-2312-e080-f71a-26b8bd2bb2ff,3767908257,16975739541788478736
+91127586-f796-7459-6404-53b4aafd3122,1029895825,10674741934580190533
+2d49c1ed-72f3-3b20-3a0d-f6cfbe4d8664,980142051,18395551888194878807
+ff632ad9-8257-5d37-e164-b3a96a6462e6,2293726225,15194383887913110064
+66688ee2-764f-3c26-cbf6-e3b17672a72c,121570542,6854283969650279128
+2a5e6c96-8e19-d8f8-3587-514360e9320a,1335571113,10835286105583323748
+7edf65b2-bbc4-41ad-90d4-6faeb948d306,829548223,15745606517310017073
+34b00a8e-be2f-32d0-024d-798f85e0033b,4288377864,4823451780159684335
+2ea8a696-2e77-ca5e-34b5-14ba6f70bfe2,1031828251,1145779772646908775
+4d47e1f7-8925-37af-a7b2-70c371391987,150013474,3070711666926861887
+c051bb2e-40d7-5f8e-8378-6b484006b562,774541046,8192611987324293375
+ef5ded62-53f8-8b72-3e3e-e1f04cbc03a1,3610135794,5407539351803352877
+5e1ad090-1d32-b0d5-ea82-db6e5be22c6f,1949075644,6325818192328146277
+ab5e91fe-b884-b6b7-e7ba-5a7340fd8bc5,242344924,410083713738588684
+3c79245b-67de-3764-1f87-7fc8e1f8450e,1528598673,7984162389918956758
+a91b4a9d-1bf8-ff29-4159-11205914a79f,2596124282,15152513622190603212
+bcf31e47-0ab9-b242-63b7-af72fa53f4c2,25643520,9066253836389424165
+522ad032-5d77-6f17-b56d-4f49d4fe2390,1199902422,6268386267186549170
+b0bdd199-9bff-b0a7-3071-0a4100a9729a,890510711,15220563370937373922
+37dac175-c294-9a54-8b9f-5441591e894a,1550255522,14901251537395884020
+1d01646a-661c-6197-c085-0abe94592cd5,3204588357,4077667390978764651
+e4cc57fb-ef3d-1d05-b567-b72b7c785b0d,3489876678,5852989569005062058
+59196dde-a66a-2d93-d61e-19a80945b5e2,1850814503,2286917603711067432
+63e99700-4e18-e790-1c54-5e45054af912,2430709863,7213387814261307719
+cb2128cb-fda3-caaa-1313-a27bdaa1a088,3791905765,2428344651705274849
+5c48a45f-233d-2d8d-a068-65ac00c5c0de,223326026,9713099597417978123
+8d85f78a-6729-3a15-d633-0a02bde1cd45,2496324680,7506301854456912169
+ce7111fc-1ee8-1896-abe3-f588a0eb9247,4090831136,12671734128524086256
+e6f691fd-2b10-7da2-b849-f79a5cbea8d1,1394566040,6826028202498723364
+6290cc79-9770-1a5d-b211-0e03ae0b5887,1882573575,7381383192527151958
+7c94da62-3ab3-df6f-e00d-0b74a253f79b,3251054678,10913579856357488591
+1b6c3c95-fa72-c809-212e-e36867d3a147,2425807465,3314578766672981376
+12d8659c-0d70-c0c3-dfbd-ba2dd7674b57,1965819399,18354492341304422846
+ea5a6483-7545-24d5-017e-dee7dab2bcb8,2884654294,4424449068166383092
+4585667b-b901-d982-ad05-bbcb4678c693,1736247790,13611518113435381222
+59904f5f-8517-9e58-215a-731f174aaa37,1903934195,8354322985537624541
+cac37128-a463-db74-33ad-cd1bf7c7963a,1448381788,9825372471786370769
+6cac088e-0a5e-d4c3-fbde-9e9c3876cd67,1991162271,7940909372331110024
+59b2de36-c739-b915-0390-2a1ebb91da98,406132275,6771748281189577007
+8bc558d1-1848-541c-99c8-889039bc103b,28755490,4219615222512216591
+64f5533c-dbec-1bab-7495-e4cc3019f1f8,824252293,444486188814992237
+83254a1b-4fea-bde9-9d38-b13b35216047,4275133682,604447688303513690
+6f176221-8bd7-c9d7-480c-0a180575fee3,1413593286,5832438237120016639
+4f10424c-00c1-ad52-cd76-5593352a6e5e,563827396,3278163865944023559
+d0e16c2b-854b-c8f3-24dd-5b7744c7b691,1989841711,7789844303938533255
+184be634-c5c5-a44f-ad83-44e2d89a6433,3808994200,12962939598038782099
+5bb13d25-9b42-3523-14ff-2a962b59b17e,2493810739,13989956073241031859
+f069df11-6022-b613-c91f-4c8d4d114250,2881436026,4481723255679858487
+4e9dc901-d43b-d0d8-4132-903d8fd5f089,1058833447,4670557797069595109
+b091f7b8-6261-2665-dfc3-ef168d1d510f,1688880782,10116308253685049182
+fd7ecc57-6725-c702-3272-7086c03beef9,960968325,16396083828739805649
+62d31969-cce2-da1b-1252-76cf238128b7,1813210582,7936632422683850228
+3e4797f4-30c2-a240-b5c8-5e67afed7428,4181290691,8640757336849717417
+da7c45f3-fa21-0606-f217-b6d10cfd11f1,2175491816,2101763382665100394
+97742fb0-f4ff-15c5-a42b-e7d0f5bfde99,1064451371,9556385938459826181
+e68b0f06-c3fa-35e3-0a55-be8485cf9660,512753886,7113652810116778171
+cf204a4d-7713-12df-f485-61a345f58aa6,948290356,1467587998490659809
+dc28fb98-9aac-fa7b-8efd-1841f220da1c,3164111960,10589000225234634254
+0d78f73d-6859-42da-b434-f33188d8136a,3412043601,7559951472096704351
+f6fb7767-e249-92db-ca05-dc7244c972d4,4118378353,16187878379018859676
+e524b69d-e399-b0cb-56ee-6d6e02a89b7d,3673205064,16300089045712712018
+5840e49d-d453-ce9d-4bd8-2b7c63603d66,3260874066,149669728852756365
+9ed83e6d-1378-0b02-f40d-c98d373b4758,765419940,7937289228596526521
+6efd3fd0-61b0-3f38-7a77-5cd86254fae9,2165499162,14966081918906879808
+f295de20-d4d1-4684-0a77-6603c6af1c3e,483483212,6792875335690763545
+8ddad9bf-40d6-7299-0c1d-4634445af3e5,2057230350,9934205748315628260
+15733aec-81c0-565b-627d-80d0b2875f6a,745637734,6753997605265923864
+78c0946c-a18d-6e2d-c126-67fc4d09f724,2640595831,14293684187773463928
+1ea5be76-ed7d-f935-f3f8-610775a6dc1c,618365455,11029021623361240915
+9f90d91c-1d88-2f20-c589-f704b4945931,193568419,17876795770239130180
+2929460f-92c4-385d-13bd-1014c41ea833,2571060551,14955979006813915058
+4144e2da-52de-bc4f-e36e-dcdde594308c,3719232997,9330516428093701676
+17dc4645-2c32-7eae-6e5e-f6d917e62939,2930801995,5574333307821263219
+c8a48694-ed86-eb60-c380-9f4bff0544b9,2756567950,9749946441915801359
+41820cf1-17b1-3c50-7eae-20c6786d9320,2805188283,14942786260167379740
+5cd4f564-882e-2e3b-5fdd-c2d6453fc1b5,1459250880,1581647719455541118
+ed30a991-9ba3-7021-7fe0-ac6cd1eeac05,676428105,5335651722380828933
+10defaee-3839-a235-acde-8b9c3d50b723,1343897511,18324502972925585750
+f7d8e7ec-8c7b-7ab6-6a4c-ac448c5c33c2,1930459715,15918325896886159375
+5d3e55aa-d95f-ca2b-834b-680ac75e6b03,2570845035,6711801459996154595
+9885ec03-fa64-3eb7-f5d6-6d0820351e2f,1084980030,2950114398790281816
+deb4e8cc-ec90-ef4e-a463-3afbb7ca933c,3092765954,8566282547090159718
+bf43b098-c6c9-3e61-a9d2-b67ec28f013d,761591490,3107895697854685760
+116256c8-38b4-1ed2-8c50-97e21d5cad55,2524712001,4545251033483843997
+17876c9c-b534-655a-5124-f0f2c15a6bce,1321733388,17623286347732771484
+7679ca28-08ea-805e-e3cf-ee62387291bc,1864404986,1250978195333663997
+e540a628-641b-e76e-12b5-2028d6f06f81,2525227330,14456129180473071456
+cfd00cf5-d188-1618-fa70-c4712be18d8e,4004802720,6281093474312414206
+e6a7285e-f026-0f4d-1dbe-0a0eb7c8d451,1959926937,4368452158103678207
+1426baf2-f3ae-6304-d7f0-43488652784e,1368746268,11631601103850030768
+ae416950-47d8-55c4-800d-5faf87d01865,419973817,14977782499256799995
+3c5e5d93-bf5f-9cfd-6597-2530f06554ff,829305152,5653681993576204637
+09c7ace4-e18b-b1a2-6dee-6dd5191ba88e,3347031699,10480378334133953575
+df16963d-a1a1-214f-83e3-a5cc5ba86995,1002016315,15140203318153374645
+ec3873aa-619b-4a59-db8d-ed771bb6be2a,475244010,16216683350846435730
+d8216479-6b67-10b4-fd12-f839f8e0cab5,3893259675,8308094255930420904
+5591ca81-0cdb-d8d9-1a4a-f367ea00b1b3,3851558739,940789115507317834
+94da5300-01ef-3a60-48f0-2f617d0c6c3c,1745385480,13634118011794549235
+8d844467-6dfb-812b-bc22-805b1157f09f,976049454,3761398322057259993
+bf4d5edd-2053-2368-4a38-e203d5d171e8,1993900884,5845715940209450834
+1af8c7d0-5fa5-10a2-9c82-4af05a3a1195,1459856528,1716830735596779770
+a4803f11-98a4-d655-88e4-cba3ece8cf35,4170551170,13265063813357116474
+c577fb73-57ac-dc67-225f-8c8993a8aa62,2085221366,13558456678304167974
+df309958-1df7-e201-0659-29149f856620,316394730,5382034245323771124
+04578f7f-4269-4a03-d5f8-8baeba00c487,1074970599,659869209233643890
+339eccea-852d-c480-0a26-2798dc16dd98,3596235389,10486853065918670957
+1c57de4b-2087-f57b-3efa-3f18d9e44c3e,666017075,12658261828903322399
+d2e6644e-8ff7-3f63-9461-a83aae21a12d,2004616941,13417484640547326113
+56469248-a0d6-ece9-a708-a8fd4168fe69,2164759867,2843329292374584356
+2a3332cc-2d5b-f53f-29d7-85c271d8bcce,829968518,7768311444088740190
+bd3f99c2-8dc9-422c-e8c5-8d0b662c36da,3454048527,13484634338959272540
+d34680d3-0246-7eac-7a24-c0fc65e48639,2693896822,6583706858091270831
+a06547a4-6510-0bcb-dfc1-8df1f2003b11,3112485432,8049042067913685352
+4a427ba6-1e49-705f-3073-8aaf29e836ad,1250832119,12172940577845720475
+0fab7875-df07-d901-df61-38aa2e1d554d,4275388060,7583267822601913724
+19309ebb-47b7-d050-7057-cd8964bb95aa,562790212,8476667434165023185
+f211b731-8104-0e10-648c-55a7f43045b5,11672543,7164002982688946459
+63af4a43-b06d-52b3-4556-e676cad680bb,2457007614,3697872230019739955
+3dceadda-9d89-a028-3c8d-e090bf466f98,3526065184,13228310750211951740
+d06e1adf-211e-7e08-7fc3-42d4225c9e59,2392785534,4701676407089691334
+d77364a9-a6b9-a7f9-b49e-4b7a088a491b,1148694075,13929918931491454831
+f6a5f557-0730-0ba4-2b87-577b32bb919d,4089645875,3633890843305501977
+747acd69-1484-61b9-d5e0-3a49e0f2ec40,2967890762,17090473139557794265
+a9ee391f-cc1c-3324-0675-e1fe542805a4,3811357814,15137152102253169884
+2cda17be-5888-ad04-5b64-b16bd27f4c93,2893711466,2064125742613409133
+9f077303-0a00-e895-aff1-f3cf49b1ab06,3739590216,18090882265713556741
+86847d79-20d4-0bb7-f6a8-7b96ca61b461,3191426157,48659588249259552
+9f21df3d-300c-6c40-611f-73e1224f37e8,1675892856,8507471561945821861
+12473cf9-dfd0-a9f6-c236-101b5e6e7e05,1185976546,11975721672562630554
+ebabe7c7-6aa0-913b-495d-1f7e2855c68d,3234364216,17416516771275839826
+fe081fc9-4352-9cd6-1d7c-221c87a263d2,2455075107,8126607673582103801
+a4275e43-78eb-7856-f34b-35201809f9ea,1362696641,5860661586495014811
+d677b2db-3ed1-81c8-c3f0-a50b572de7b2,3963255037,15315262735697517703
+6e386ffa-db7c-2018-5522-9f28638b7a88,3167093251,6010786550491710023
+8b0dbd3d-4c91-f8e9-d8ce-3f0e1a98c4cd,1829223159,5499908564741733968
+e42d6403-e61c-6f78-ebf4-e645ed46afc3,1206622907,11015690041557481829
+9830fd30-5834-3a5a-3855-35d8aee758c1,3672549809,14119606501843591378
+ed70e8b8-747e-2d37-eac0-719171299eac,3014625200,10098893310468281221
+84ce31d2-36ed-fa27-0d85-a233cbc05c8c,3033783646,14683245079062413017
+8615a8aa-914e-2462-9b22-2eef2a56ac7a,3460611580,9355289847015810181
+607ca70e-fdc7-198d-e19a-76ce0911ce3c,3836589996,6375908071387403168
+9089cf96-9db6-4eb4-7483-9bc95dfe1484,1154391273,2059245099969738723
+25d9927b-e230-3543-0398-b9f88d86d571,351053133,5415826535200209707
+d2d83ab0-2787-7626-b951-8cc940e31289,833200379,1104593432081429561
+3ad80f9c-8eb3-812d-2181-0af9685a74f0,2093176316,1569657528849373525
+4009bab7-937f-29ea-2db7-712c2d4f623c,926509599,1632909564529671999
+a0287fc0-260b-cb80-3862-153129936fa1,2087520082,1650535488351199441
+3fe3c796-fc3b-8ed7-2f1c-588c90585aa9,2412862661,11579828195869791149
+7f76c183-6894-0c3a-3fd3-4daf9fce351e,768416574,70004781350816365
+34304c62-2dba-b452-b2a4-4af032e99487,3155067513,11089447748704338772
+5d1c201d-b56a-aad2-b7de-3e6f1edfff75,455234366,3368504745301013179
+c76d63a2-5519-3ec6-ec0e-77e9f282d63c,2304935290,14051747945286744180
+c3c9ddca-0a50-3222-30fb-eb8d4432d505,3550741158,7524493531560623000
+4b03738f-08cc-a2c1-0dbc-2b3131f822a6,1255833012,11756274076391923224
+831168fb-453b-0ab6-0aa9-e735b79c8cd6,1670075508,16143819499412779762
+1f3ca246-1e11-68a1-c8f7-d24fec4dc99c,2822398336,87974158298364238
+638997e1-4e9c-1f98-1bbd-e4dd9a73ef94,1397996256,5671369041636295
+9d384819-d14a-2545-96c1-b4323dff374c,251130340,3081870749655220902
+ee17a975-edcf-09d3-d112-3678021b4414,3285424554,12838264731707564881
+81581980-dd29-2540-5fb3-b7a6600fe138,2856400778,13858260922149209508
+9c1528f2-d066-ad2e-74bd-a7ffad0cb598,2366077113,213853978691860730
+403f8b24-bc91-0906-3203-a078103d5f2a,3708766381,240746983587121490
+02f98104-3db4-14a6-2486-301af3370c11,2553857140,1342368517837745090
+fd8cde33-ad66-79a1-1bb6-88e417cb85df,33554293,8867331782389529177
+ef9a69cf-5da1-e5d1-349c-4a31da7b4245,1136497054,15383766034533499732
+436cf1cb-78af-00ed-b959-b0afd3c8968d,2100966956,10091481476311741621
+67193f9d-6c33-13d8-a847-c18d8ad8540b,163485287,4578177513341013842
+b0fa7703-3613-0406-e2b9-a2acfe88014b,296080395,8664022759048545434
+d05a780c-0515-490b-53da-b1fbb52a6312,3905871893,12708770875686776173
+1852bcec-c442-402a-e965-83f84b08e9d1,896658042,17335309626456907321
+f23a01dc-dd7f-b0f5-d1ac-e047f90bce7a,2879254721,16751057840012466095
+241cd168-6eaf-c480-b586-5e1ee13f7e34,3973783747,8597277345965143676
+6f7caac0-0799-7640-b2d2-4084fd3925f4,4044144830,10570685431135968691
+ed0bb795-b2d4-54b1-7bde-226f4109466f,1233471441,1038315921059647471
+f9ef2639-11dd-86b5-c723-2013264b3fd7,2019281209,7969820665290973860
+ee12f7e3-567a-652c-a065-2690c67ec54a,2794871617,10691754535124486583
+03a3e7bc-4181-09ce-fd8e-f184b7101789,3743873755,7036945487829894190
+599ccac9-da6a-8143-247c-1b7c549fd168,1786669204,1591405680414869870
+a6e711a2-b77e-0b1a-f141-322dac107736,3532689907,15697559287556100649
+f773ce7a-1d9f-b9bc-de6e-b93170d2bbe8,1012751997,7530036431799043301
+9419448d-dbb8-68ed-b023-fe56a296d28c,1317383271,15883047572269445124
+31e2ef91-0d50-da6d-20dd-0edf7b7debad,2440865767,3909762478895877758
+d9244e1c-e8a5-b687-6fb9-4492b66e5e0a,3828857106,7016295706596454592
+6a64fc46-db7d-8c3c-774b-34cb68577c31,820084948,13515783449007816032
+d55863ac-5c1d-53b0-61ce-970e2909c230,2745698360,8711904531109108926
+dcda240f-e13d-a2a6-043f-9d0a1d2b86a0,760263337,1724266969021251096
+9b37e88f-64d3-670e-0939-c48d8ac0648a,1747869816,18094541641476620895
+ec63fa68-d68f-6dbb-d5dd-cabdbdb6199a,1330529304,11474208310998322539
+d541e32c-2dda-366a-6e41-b0dd9b55a655,2337473405,10189131747848351456
+2fb9a7e4-541d-d9e1-a71c-0d06a10e258a,1531556492,6740926739216365341
+313662fd-117d-2864-d6e5-8352de2bc451,3164982768,5029707464594934112
+ad239a94-5df3-8bd9-a417-efc9f8eee82d,598031153,12963558946154790206
+f21d1428-6c61-dcda-49bc-516a234067e5,1469913213,10163257060057045127
+da31d20d-72e6-2c61-6e70-4ec23c88ef57,1853033059,17857876498402402895
+d13b22fb-564d-3720-008c-c9b4ac92e603,2365327427,6338925064652184448
+8fec197a-a28f-eb4e-2b2c-2e3a4e09173d,1171256589,16757180962539712428
+3207022c-f041-0c95-4f6c-3c7245f26242,1101474980,1070584119217380018
+77656ada-4166-c2a8-b01d-71ee837ead59,3458803194,14045570522033176891
+430345ce-6495-9fea-182b-5231d4717431,1159002179,9480751593663963622
+cb6482d4-2e03-3ed2-0a20-a4c44cd9aaa8,871960656,15433790726243458915
+b9fd61cc-a311-74e5-e05a-0bbb69d7729a,3363220150,13709709079621620875
+e9428d77-c1c6-b06a-6a7d-c1946f5fb6c3,1300362187,7687498300400476920
+82ee3c73-1984-41fa-492a-a4334858f9d1,3694700809,3780173331648372623
+56e0b34c-1181-156c-ee9a-ad5d31bbb4e6,3908089709,7224415779921550754
+90c2ee50-7194-d0e0-e1ff-dbb9b5cef804,2244231598,8562326199389930800
+abf9c02f-f8e5-3cf0-6f6a-31b3b92dc57f,253380478,11348120252964408385
+0bbde6a3-5cb4-848b-f798-7bb9bd06cf4e,1225756810,2142701803993150401
+82523b3b-ae27-ff1b-6d29-570c2c6bc8cf,839812144,12877114794367326248
+3de9008f-ffe0-1d14-840e-59be8e358fb4,2186692318,3902751431006802016
+2734dfa2-dada-3048-5620-ef458f134a2e,898441575,10232821194352548017
+03cd00df-7b43-b6ed-c7aa-eb29e2a24188,2800059318,4962146535260041587
+8eaf177f-e526-337f-eccb-d499a8acf461,328322092,4256738729229078944
+0bb3337d-b7d0-a951-a6a4-2fa2f2db8c0e,1964064456,3405471657329445415
+044e2038-83a5-57c7-b2f6-a848892da534,2442114401,285652665210480142
+53f3fc5c-b9af-64da-108d-c884a4875107,540232363,8973889176664506159
+bcfe1aaa-e7cd-bc53-8fa4-ef15efb28681,113063576,13079298955165905257
+dd19f38b-1a23-f67b-be05-e36708f89a44,3406095083,14125420388486432979
+137de79f-0023-5047-fea5-4e53191c7337,1373377299,3425335494024962202
+d0bc0511-7b9d-4ccf-e9cb-4afa120d6f05,1812631662,2610580231499282264
+98921c0c-fbe7-56c9-e113-4b619e743868,1532868751,15910442199271813552
+18620a87-37f1-31c5-dab8-5fa2877a0cf0,2433502681,2964883192447570424
+ef4bec44-826c-d93e-ed38-f4a0a3f13ab9,3861313074,13105197605281971492
+82e03260-438b-c133-0982-52247eb8d1d0,3628032694,16340828512486161700
+a1314dd8-f2b4-10a3-dfc0-2883e3fefa8d,3086453291,8882221952542000817
+f17d60ef-4163-0187-b136-43104f0db2d6,2929473439,14254358913686060163
+68e927cc-9ecf-3a4a-f370-9e588df498f2,4270279166,4774244406780643054
+84697563-5209-8aef-b1df-5ce527f8a8e9,2084344020,4441657635603899713
+26e7cedf-c73d-9d39-55b3-f95d478b4d05,2419799048,6042315198410920531
+35660f77-7e6b-4417-bd07-86335038d2dc,2772056246,3128834213348456985
+1233168e-04e1-b780-88e6-3c54cc04d6b8,3040402167,4514186424096167614
+850f3242-b349-3d53-efd8-4975d7bef7ce,700392233,8933691941454175498
+93c3874d-701b-b9bd-f56c-f825ddc8b042,375702764,4069044651852000735
+ee0c0362-829d-bf04-37be-9193b7d1684f,818731440,16613487433492667732
+ac81afcc-50a0-c9f1-87aa-3170a70eff1f,2036034318,8640422854060880342
+0c3516f9-0101-ab4f-795e-1270e96ff780,944402990,10440627483730153056
+0560f59d-348b-2383-8a41-c56365efdbcf,3528484987,8017960664484868091
+1396bcb7-271e-87cb-590f-608acf5d0ce4,1779065232,5035540710297090306
+fd96977b-3c8f-3d78-9cd5-b8af3f1b8402,1074435381,6930744482741040463
+c6c3e15a-04d2-a1d9-ed57-656bb0df0b29,1175328414,3955140402385287411
+9bc000f7-f701-7671-4dc1-74a5f7ca786f,2184290675,12837237137206954957
+51ad3a9b-5989-6b2b-72b6-3bd26fffe96d,1172108955,2681112735141852873
+a51c5781-df4e-12c5-a8f2-00338366af3c,1039498618,7954863447313503261
+cc8a64ad-1ed0-abd0-003d-838ead5fb7cb,2971347498,1898882344012612252
+34b3c0a7-9e85-6eaf-ea21-db2307c3202c,1900147804,1577557734387922054
+c9628215-b904-98dc-301a-03b24b9072a8,1277266014,2435902495110162938
+fdb6a826-39ca-c90a-b86e-c03b5d459998,838241220,16145428651884051658
+3022d6e6-c43f-22be-0117-0764a6405c2e,4212470659,2538235238493952951
+0ae7a73c-2c5c-1956-6e83-bf9b1f3933eb,1869848225,5290049565957980286
+657a1f01-611e-cb36-321c-c067b809661c,3164596398,14480794314829428755
+d077633a-a611-bce2-2c9e-434b3ca42a79,1566889828,13295154527064089270
+87ac7150-eb5a-f673-a105-53c0acae12c8,2096933737,11694404226395748385
+bd682df8-56f0-e709-8f19-020ffd30c627,3985412489,13358005642969071797
+4f3bd287-e063-e332-39a4-28c2a681a33e,2519384765,13385336606315499220
+a4b9802e-21ff-917c-ff0d-1270b9ac104f,3390003243,11642451068124198652
+0b4186f2-7da2-f4d3-4d03-8c66df8126ee,1810417208,6374617321134371956
+9a9cbe48-fcd1-9a79-cb1b-46dca1e8f349,861652083,9090386022711818507
+0c056e36-04d6-90ab-4f99-1fe49b5df795,2408508712,6229235879594460655
+bc2c47c2-4294-1467-d734-0a894964da93,1060650776,1887532804192156262
+07c5295a-fc99-b936-4674-7bb5580c17b2,1055113234,12777869739880116274
+78b61ce5-dd8c-8037-074d-8e5792f02e57,2033711625,9060094574585659856
+d556b145-c2f7-ab0a-3d56-055003526d9a,1784367004,200282196828360505
+e567bcd0-400b-6a80-2e12-43911575d914,2533406396,1720171544533878064
+ef8a0876-c3f0-03bf-6517-f024678231ce,2342969347,6315028124896306342
+c43c0586-74c9-ba1b-d320-6b75d5360b56,1919614721,13683844878133863439
+0bc19aa7-c86f-6a0e-2838-772b043d7eac,242625878,17624749976333521697
+40c69cc0-3adb-4244-17c1-b2aa0d92f7ac,3516635117,8207863383941412852
+dfda55e0-a545-7a08-9440-c1fe0050468d,595454150,5263902118794153528
+525f9304-7b81-903b-e423-a62567bdd076,792290994,12243368045709946801
+ef630a8a-0099-3280-8a70-b5b5c9867c20,2605270368,5459192325601593347
+f4105496-4756-98e0-e601-8c2c03ac24c7,1833923738,3239793717136479897
+2163bbcc-e9f8-f1fa-e2b0-d756bbfe1820,2162842278,2562935420788758533
+869f8117-a504-be87-c856-a7ebb634f839,2171835852,11465912654875745769
+d8d2ded3-82b0-744c-dd7a-22f987600669,1085021490,13975685366748465980
+372463b3-726a-4083-4682-ed2cf1b84e06,4219976641,10836078523559671660
+c42757a4-0f59-bc3e-d862-0bf8c7bcf200,54394899,16409538860058338604
+261ecd00-d858-cc27-88ac-dd614edaed21,1367636053,5410425607351626902
+f70b90e8-4589-c8ef-acc4-76b135f57f2a,495229856,7125298138035309658
+c7458aac-f70c-119c-f8fe-ee42696815ad,2598468689,4044228897031845575
+f3b13301-4ba0-5053-0f72-8750227b46c0,1146474103,8682648984882173213
+8573ddab-6930-eaff-782a-e8e57620ad25,2970939982,8853719572306650762
+0921a315-1a32-0a11-a5bd-95e791424b3b,3500964834,13545273797321994271
+aff73198-e509-ad6a-1598-9b3ce890e16a,1549290301,8934577738488620127
+87b9c090-6a0e-2e4e-5b4e-03b48ecaee8c,2727851563,5460300819655889687
+a4f90ef3-1cde-f55e-3384-f3f585e819b7,831311752,1674616113976737024
+5016fcf8-d30f-b015-f86a-86f363e8760d,489920743,9960944961476570138
+3cee219d-96e1-2d69-8463-c5f254e3f7ee,559130792,866982345991581646
+13b925ae-7ec8-378f-4065-41bbedbcc0cd,4156118466,17364670309286644482
+34c338fe-e3fe-ce2a-c3d3-0dae7a089305,2774343136,16348651229120187813
+b7bf81e5-bc72-f6fb-fb35-b3a873bac76f,655840190,12951608838890746179
+beab7cbf-2b43-684f-7687-110dea07f630,1306549948,5392768146956609081
+a0677190-9e67-43e1-8bd2-9bd9b8af9ac2,1355112707,5684116727258234131
+0ce68bb7-ac25-c3df-8d25-66fe8baa9fa7,3045741696,7335811133361471548
+10d1c346-28f8-7bff-096d-30a000160fa8,2072235091,6519336177461961177
+ec446ff9-bad6-fe6e-743b-25aa1907a4c1,697048880,4339077350605770368
+0e557724-56f0-9797-9a41-8243f2dd3ada,2401921720,598353452600848842
+2fa4842d-8484-1341-343d-05c0d7270749,2845379128,3931537722236608822
+fe3518d7-0ad1-8706-b31e-dc979d808d03,3977549158,928062400113187051
+2512a26b-3222-32fa-78ae-bab907904eca,4152576809,13629970786163686981
+adf16f36-699c-48f4-7ef7-5ec9d04bff4f,1809374745,5945297338015026364
+0ba84f73-b6e9-2930-2636-88cd36aa27ff,2777778157,7123776796811841035
+df1aca73-a37c-63c4-17cb-bc36bb9a270d,669418869,3248255032221528967
+0efc32c6-e448-d775-032c-be6dfcf39880,2010722231,5232951504532725363
+6d2de4cd-0173-809b-072d-1b460fd88c13,1649181667,16035388157141304197
+802da60e-95d0-58e4-4f56-2f03d9e6bbc9,1132771882,7422274481519761896
+799bb340-639b-32c9-39a6-225fb5088138,2468170559,12450320821252259100
+4266601d-da36-dcfa-ae3d-9be6ecbb009c,3340270043,1660963029663920921
+a53d01ff-ffd9-73a9-183d-a7111d6685c6,3030247961,5710408371347606638
+71742933-c443-6298-9479-6330e97e97f1,4175304613,490772234102908255
+115f1742-b33d-13b6-2b68-ac8a4ec3fe21,1273534504,15971885795043314846
+50910370-a331-2399-478d-d5c8c0919847,3408474189,3727827628402870819
+5b4a2687-42b1-52d5-c600-9feb17910e26,740122551,15517144840469455261
+7731826a-592c-ced1-dc0a-0509696c1724,2058882415,7294675104984925500
+086cbf95-52ae-1c35-296c-e2479278ae8d,1998463764,3093313110863793544
+9742511f-f5cf-fd9c-d1f1-52fbb895e223,3961460545,5345274596546130455
+e23a6f5c-f60c-74d3-9314-bf25a0f1821c,941112096,18436462336376682977
+6641ad65-a72e-1533-6b10-edf80de15d43,1178102745,1083627980907705395
+f5430a8d-8816-1f57-9aeb-19fcd37676ce,3796296380,3370109797725840239
+51f1f2ce-3e53-a46a-cd71-76549ade11ed,866594233,1287452274544489303
+1f7d3b13-86d6-7696-1062-fc93914f74e1,2443389972,1365534485586226691
+e9c68c7c-1171-e6b5-05b5-1a3a9336417c,444991262,16873144389259016504
+45a7b149-f738-0ca9-9775-976b1523e85c,3444076399,5625216828593527660
+6c879b13-6976-54ab-9839-8126a03da808,2556476169,542389456997291875
+ab8f061b-d57d-1da0-cb14-89ea56862541,3848240218,4181615964277471636
+716506c9-555a-e4d2-add5-fcfb4572ad97,2751785211,14829003830257930111
+80334a95-21d9-9486-150e-7496e8b55c96,3811339537,14549345515381612249
+91465830-acb7-31d9-afe1-8ef9444079f4,1138263357,1266283502724897175
+60067671-e4c4-f821-0933-6eb7d373fd7e,2900977740,13874463340457752505
+eaa6f194-a279-906b-d9df-058f12890e3e,1562806117,16441352365292453386
+688e0b27-532d-e323-c47b-7d4dc4ea7d94,1566280399,9841180976425798088
+44e3d95a-e32c-c06b-a76a-9d0f96e740a3,1242434773,9012633898187382941
+0989e0c9-7d1b-d40f-7ec4-12fb4fdc6d26,2346424664,6513914414853080200
+96ac067c-9623-e6e6-92ce-f1f5d63ce8d0,469618965,14690502558251271307
+0ea48652-4ef6-5016-4145-3a1fc1543327,432754917,13191907947545067271
+79279143-60be-2de4-c800-32df8f91c7ec,2145587006,9516667912616314401
+ca555150-9e7b-b1ba-e34a-0b1b4ab8aaed,3251306471,13582744837208946733
+4426dab7-c4fa-510d-5397-a840c4a47e9b,3341121043,15168723457659227609
+f622383d-6471-9ac0-9d87-3b5749e0a834,1504401850,15901978789209177963
+2589db15-18a2-fde2-baba-aaec1d26f368,2702043232,14375387643756630043
+6ee2b617-b2e0-9f6f-309c-0eee72e63993,629749150,12696235507072087961
+d6bd8947-86f9-b97e-3b76-1fdf865bf3f0,2956343701,10374494895445495387
+ce5fc7d2-cc19-b625-1c26-76ba2c3c9da6,963724534,9804654304860938313
+acd72f83-d4cf-0278-75d4-1a72a516852f,3596528623,15915025622194482032
+ce42fe1a-5bae-cb05-5ffe-96bf59d61ccd,819996385,14222599675213570109
+0d94a5d8-1f49-ea90-cc1d-49833a715bdc,2566526623,10400058211790613439
+5fffb5a9-7d2b-96e8-45e4-5e71cd87277e,1731355803,3571058906443153037
+b93485e0-712f-0091-2070-9132ffc23978,2096407874,3850402276066686798
+d3d9dd43-6e53-609d-5ffb-df0d8c69ddbc,497863135,5112400892716681277
+4e41409f-b39a-f675-d932-c041f9e92b28,733425343,9212566347751425755
+8835c3e7-de68-bc5d-83e9-ece45f7e8bcd,3221689275,8787734106779843846
+610ce4d7-a71d-6d87-6ccc-324cb61a58ec,1418394746,15570437886967703300
+33aa11cc-b041-baa1-763b-5d879f667f3e,1447076754,16220001576341007732
+eac5692c-deb7-57c1-3cb9-cf405e72aba3,1295528457,2174040547410130371
+0572499a-919a-5110-566c-df5ff82e38fe,3914918964,3230700856512430588
+0f8ef074-e042-8d21-e81a-b6430b0abdc3,976314409,16425802447056672530
+313a45a9-9fe9-01cc-6b6b-7ccfb955116d,4142471601,1275403632758268658
+389b3f18-dc22-f665-e9fd-0fa20d56ff97,2949839832,4856955946650774959
+ead66b01-7459-111c-0336-6c32fcdec2a5,3867996192,15290604254990393973
+fbeeb80f-c8a9-c903-1856-f52b71420a8a,1189198006,993820204891628450
+80e6cea7-57b8-b5dd-aa89-6f0b1c07022d,1813734974,17842995089864941920
+7a32ccf1-1f01-df3b-21d8-e41c996f945c,1728818495,544409985807261323
+9a0c131a-d534-98c4-bdd1-ca4864607b99,423117439,13313585334169794050
+94e8e0eb-eec9-a8bc-85e0-9b561426a4bd,2555132065,14295989704057137670
+81bc23a2-5a1d-443e-16d4-01c2ebba3019,1147354770,17437702594242955754
+7025e8e3-50f4-ab62-80b7-9448b080c280,731314657,18069041451246041307
+dada7f07-b3b0-d13e-5933-ad133bc647f0,2414829780,10490772953009670058
+78e92f59-13e5-79a5-3eba-b59a058321a2,2891976839,8775493073351447416
+9a7bbb5b-166b-40f1-85d7-a20804c338b9,149139561,14462650505380898389
+9f0e6618-828f-ded1-7643-1a8acc8116b7,3600174761,11837561451655403747
+45cdb8f1-9157-6809-bbba-2606cb1efb53,877029756,3638520182751771938
+51fe494f-02d8-e22e-7a08-694e5248fc49,2939557314,4697797197219998556
+605e0f0c-53dd-8cf5-305f-2c88a9a7d296,557678243,8958461782481325503
+b7d8418c-3756-871b-dbe1-ddd98fa0c522,4120896845,3901236999244942403
+a85a4c9e-0485-5c50-a3bd-8d83a78f370d,2627382139,1418076407267470049
+b7b8851c-e8ab-16d3-b737-785fc90c5e15,2814113659,8044239895917289162
+d85bb3b3-de01-abca-72de-ce6c7815736b,3708618130,5050179200548423825
+4eeaa82d-b046-d0bd-1897-180f32b344e5,3939912591,9485312902408496774
+444001ab-b014-f9ba-b777-67c465e4101d,4190597402,12661396611189365687
+bc9aa9ea-2eec-5761-d4d5-13ff999e530e,931081254,2699434319471612683
+2ef048dc-372b-18f1-2b23-9e627b8a3d34,2561606282,3091649075059221452
+b046276d-17e0-f212-cf30-8244df89b723,984217578,5604306337749484945
+4b7863b3-d17d-6c80-ed09-e8318c638da8,2876859454,2950894508337955578
+2634cde0-9385-48fa-9e8c-40eb76699b39,770625792,18055597150830775407
+500f368f-9420-f2c1-6818-6640cf5d3c8b,1433221848,7186583286184980695
+778fac6a-4ac8-7885-eab9-61f12fe82775,3098043220,5245904965559622192
+7b68ceda-560d-7786-d500-9ead2b7cef5a,3041744882,7985877727062583526
+8a65ab8e-0ae9-7562-33ba-1853984f15bc,3204746855,13535608797668047779
+612906e3-894f-2e26-b10a-cb0ad877652f,1330735943,9848446638047532422
+3fbaa1d3-4eda-1236-fe90-4801cf5a0d7e,3423829992,6814686018470062539
+165ae742-544b-666e-c775-40d945b05739,2447024704,14349620721900827812
+16c79561-f25f-c920-515f-96777b93d111,1354488780,10581777163590538695
+c23a0aad-82a9-610c-0069-7bddb8410efc,1418167182,3691250386171303562
+d972a3d5-6001-552c-2505-85e1f86b2e8e,4030019473,3723114406071570232
+1d823bbe-58ca-9dc3-9233-d3b1c73b37c0,2015401460,6037706662406702224
+0594bca9-472c-c44c-cf7f-839d097850cf,3067445195,9310886605771356804
+f0bb974a-d375-dbb2-7b14-80b266c16021,667123446,833408769615165943
+674a9e55-5035-9cd6-32b0-c5a016da3ed3,3917937486,15597430267212627169
+46ae2b3b-e2b0-8c12-df86-79a480628485,567403423,15577383446581497931
+66395c32-2cae-fc89-b23c-27bc4d771871,3157863760,14077965317299418030
+9fb56a4d-3eb3-68b8-395a-3e13189b43ad,1522532732,14470761683439941075
+090db41b-59af-3519-af74-0abc7672df9d,1350817200,9182195353606230612
+f77b726d-9fbe-c423-943f-bf1448dbeea7,3988101504,5838880208077588248
+5b40c49e-f168-7018-fab1-15fe43552b1b,3202228739,3865107457286436325
+93cc1123-e216-4f7a-b362-18287135ded8,2400234034,17749852435950744755
+87f5769a-fe56-f9e3-7c5f-da63cecc8de0,1345379654,162221967224973609
+5d79969d-8e99-1506-3b5d-94b1d7109b0a,1843870100,2706822976852480698
+e4333fd6-299f-3ae8-7c3f-05aad73c000a,3864295022,7784032269614175497
+ffb9dc18-93ff-ca53-0a13-f8054d60c48a,2404246608,5772606334662609974
+e57d224e-d2c6-4662-d91d-93099faa72d0,3808649002,17167611067648953093
+54611703-e4e6-7fc6-137e-b62933015c7c,1395305424,14522820399065345298
+48abae05-bd1c-6515-4f60-d2a55c175153,479338491,6211054796015849888
+7306eb07-7ab8-6c14-a45b-2884dc29300f,2276884311,11652161384542115911
+6c1c82c7-a80e-3942-5f90-9795053e9235,1031430485,7709279701019275031
+f0c6ed81-b6f7-be31-56c0-79b690872860,560675656,12369579777717993668
+d7aacf35-9bcb-ef94-0be0-b6df49493fe3,2358138817,10524439661437044435
+1c7458eb-34f0-912b-b878-2cd460dbbe78,3778058557,3794733168364908723
+3b912f34-924b-b639-03ba-3c00e28ab293,2056159317,11095498901446285077
+da7ae656-6dad-0bbe-4359-f2e5ef6e002d,2408922525,13221260526074051754
+0865d93a-d156-f617-ec8f-d9f3220e5dac,2851938602,14168895085188616898
+e1a9f2a3-b410-615c-7314-deba9cce0c0b,907283064,11426223673104267295
+529e1592-c995-0182-1653-290edd7f8631,3310342739,13615846724584567020
+6d79357d-7d59-7e93-1f40-a30d060e333a,1544933042,11652133461582305449
+86c45367-3933-c04c-dc70-a1ba46b43ea6,1258866083,13675252156923989594
+4c83fed3-357a-4f0c-f229-4a3327fe61b2,263036553,9752727321930765712
+959a26c3-f3b3-8801-0227-1ca92d3637c8,453238197,3509776008009238056
+d7bf88af-d365-224c-13d3-72549b6723e7,2102073759,1442328049474414131
+b7bdb303-9a02-5dda-3c9a-9c9ae39f8ceb,2659539655,12821980734089863565
+acfbdbb0-37be-9349-ada8-0afb6bed2029,1842320367,17554364427298823803
+6506f5e4-09d0-410f-2909-454e766ef01d,2357777298,12635354632481125150
+aa5fd941-f25c-3dc3-9a91-8518182e9df0,1718283324,17065044828024571035
+79fb84ee-2a4c-98a1-3da3-ba289888bacb,3374174294,9650061343073629814
+b9b6c760-b265-496e-2951-714fc12e3a75,3718177366,12341745049499701613
+917ff0e8-1335-eceb-85f8-cb7e3a706385,3322834753,7907458979881945461
+7b31dece-743d-5325-a4fb-b1fe7f911941,1883944453,3020937552002697237
+3fb54875-f5b9-7130-5a6d-24b689c12d76,2368631803,11760480315313671589
+3a3bfc82-fcef-18ee-79a5-e44d01e5f6b3,1065148821,5485649897904302093
+8f09d2ad-dca0-2e2a-edbd-d1972a46de8f,1934770215,14310378853867455754
+a2620a2a-d6af-a950-f06a-bd9f6cf2842f,3419535163,1183783599139070032
+0863538e-0d77-cb3d-9a3e-b82cf807382c,80044193,14362457860635878648
+ad4d14e5-0b3a-24d2-8a66-b4402726877a,960163822,417504696276396471
+14653554-518d-d502-0972-f9c15edb744e,3444072334,13212617377700820808
+c4e4ad9c-a3d5-cfdb-a337-33a2354be374,4039407499,5850214941462007232
+c80ec40a-aff7-65d6-9329-4e87bc245913,3350781540,1053916326682495631
+2d8691d4-0bf6-48d2-cec9-463f4e94621b,3767531875,2829866737059779736
+58e7b925-44b8-dafb-8869-fbb2d142275a,654500382,16265784070602757163
+4de0e4ff-4bae-4e02-c19c-bb0149ec8651,1101773990,4071784210830605616
+b4448b63-7649-d216-96dd-077f2c912680,1566391414,14287065631599231510
+fdc0a6fc-e089-145e-9220-7d5a7012aeed,3709914972,204005582665645724
+3db85e84-a32d-f3cb-ac15-6022e1cc5db9,400686990,7112992008678636839
+5ae492ae-b536-2c92-cb7a-4bc3756a812d,2124106747,14649681599032532540
+e6b1063d-67b5-80c1-5199-a9dceb35f338,28308138,6343055560951548235
+723ede90-f50f-7104-013a-a9e579be4c1e,1889101504,15121226177046439406
+e36d2765-402f-d2e4-0a09-4add799e5160,1694526517,3496631818768343051
+915a9cf0-37c6-4596-5881-25cd93dec235,107302035,2689987698967452577
+3f26a42c-1afd-48be-be62-5663d6578147,1982787127,9304125205887392252
+b90a9e5d-7679-5690-4fbb-4bce8f3926d5,3429551763,7393325359109085758
+2a6c8f54-3969-b918-3bd4-b890fb83c695,435557245,12433763414227805588
+006bd8d1-bc71-f817-e0b9-40272841307f,4265573385,8894508851126484835
+db476dad-5bf5-ec73-a052-99094a7a9d48,2413304841,7069149940174496448
+3e630c9a-6bfc-a80b-25e4-1864cb9752cd,3619315961,2643329885501256432
+c77794a9-cbd8-438f-5b59-8d29bc613b48,4084704230,7506347314149159703
+71374f3c-130e-70c5-9169-04f21f097fe9,4021115192,14305249853819433825
+64733a07-518f-5fc9-7721-b959d392cf94,492073853,4555971436507745615
+7be52774-abf4-8e73-2348-d9593fee1695,3394812819,959834926529572195
+066cb94e-b8cd-4689-5527-d7ec5a49c26c,2213272480,12065127180525663035
+24a014bf-54b9-fb96-9856-278f840e8b32,1000923715,12541136617710060894
+edaeaf77-f1d4-df2f-27e5-cbd981624d02,2551574034,7103444905941060027
+ef3f1def-3bbb-c125-2790-676c36f2c7d0,2772045423,9502383511029715070
+6b011768-30a9-10a8-846b-a8fdba45a122,3246359464,1674840481602565159
+3ef395ca-ec32-5401-5ed1-507ecf4dcda5,2609236711,4640565376308479994
+0006b4ae-779e-d7aa-7ddf-4172882fbabd,4103260387,15415769977332918357
+5df765eb-bb5c-6f42-eecd-2ec0461774f5,2947137339,7548725308344943100
+17d890fc-b579-404c-e6c0-7e9739feed34,2638014699,2261306678402314431
+102ea5f8-e753-a012-2fa2-88bc32626c33,3479329040,6954233351285805732
+e7193054-74d0-b3b1-3d86-f8f550250ba6,1981399966,1588608975580852221
+b4efe634-de07-e310-f70c-72cffc50a43c,4080312114,17832077469842698793
+6d810ca3-007f-950d-36bd-ee7c14cc59d3,1694035608,8881766637885180970
+a9e31bda-8739-7671-6f42-5adc6784eccd,1893534,9853275233622711704
+591669f5-8dfd-7aa5-b2c5-4a556ea6af35,547884601,10047130466018190440
+fee5bc54-8c3a-3a8c-b32a-d5d8c7b6bd06,4109095881,1935635639482627134
+f2fe79dc-1a9d-9c1a-01ab-32fca3983cbe,1733445016,8066122718998385677
+aa30e41b-32f9-7935-8ddf-bccc6f72855d,824349242,4525149557586008468
+6e563d85-3330-c800-a1ae-ed680e4abb03,1718502994,15701884527382139437
+59f0cf37-ac8b-7b33-5f5e-4194d6097951,826074055,384245726008790945
+22c2c2d6-d1c3-3561-5db6-6ddbe4637c6b,2304027852,3791887462640314680
+ebe58644-7d1c-0bbc-7600-b92133e992dd,836898613,8535172417702475504
+3f8f1058-e3c5-cb8c-5215-313b1c3f65a4,2498368067,8483561104777751765
+be216ba7-9f4a-17de-3d4b-637a537f30ce,3906198252,11160599446269366773
+d533a00e-0094-a9d3-441d-01258749928c,2854362090,11048222056885451998
+8f5d38d6-3803-1d5a-bae4-37cbfdb37703,3396258241,13289994346799245901
+3dc4c0f6-795c-9801-8ac4-d8c80620b528,3720909550,139790327453269792
+38945ca5-2233-66df-6956-897d886eb3e0,1989265922,11852896842937384888
+9efaa7fc-73e3-b2a7-5d6d-4f2e4a199e8c,4125637505,15979100985317599912
+ded68602-19c3-7d1f-608e-738e2f90d7a0,2260783066,2820416796639372458
+5c14f0c9-518d-9d4b-41cc-e213344f4af3,2832831116,7241258754587097863
+347f87ea-8660-73bb-7380-05b5dad2633d,2363064951,11156552522246013542
+71fdbf01-e790-bd90-dab3-6b4f181f9395,1167999015,12751049120356966357
+1b2217b7-2967-d28a-cc94-b8b412489343,1506906405,14797601356898818790
+dcb38e97-8d95-dbf8-a784-405154dd1cd3,1189600942,10460913267143141987
+580d4b3b-6920-16c3-c303-a9dc4632bfa2,2972805592,4012170889726158471
+50df0a3f-5f61-2872-e5df-8b63d5782df7,3088722866,18043219737097617295
+ef5a152c-e88f-c029-4005-53e0e2afb5bf,1089100817,2793014973842872666
+857dc07e-1225-4ae9-745e-47331136644d,1670060683,9029987114390451129
+c9d9136d-c535-df4c-066c-ea354ed52f88,684651838,9415959891582847046
+64daefad-65f1-19f0-789f-14ecec6b9956,2653244820,463381701374660361
+32dc10f8-0710-07c6-44fa-61b30bb2a251,353775585,11374171189236063066
+4e924109-278b-2548-bc0e-f428fed0fa89,2342718931,910140579106913785
+0ec4ee0e-d5a7-249c-f077-d284923d72c5,1938158245,2885219989836169688
+9bae9353-a455-0b36-582f-5e2daf0bcec0,4278687280,3818906132597124927
+c34bcae8-37dc-91f7-7c7b-aafd5af4988d,53672082,11961631797585839894
+3221e012-515e-8372-1fb9-9bc2355831af,440243018,8778982401473970564
+06e26204-ed56-6cf3-c0b5-9c657c321660,3390303710,8846073153046856783
+e4f507ba-f241-2b13-b117-6563d4402c7f,2554261133,8790843716451228876
+c6e472db-4e4d-10b7-c469-a97278ade596,2137438879,5112666267067981335
+925a3cbc-353a-918f-318f-ae88751f2117,156237282,3503269870957217802
+ac161548-5136-28bf-6aed-dc1d159d7729,202015430,15116033016839046230
+c01c3db8-b8b4-cb42-caa9-943d682ff9ec,1127624557,8699072260962555405
+29fbc3c1-8c74-a493-9edb-e63ce814831f,3994906894,3266935401005942847
+c5046c83-ea78-dd34-cd3e-a8d7dc037512,3626954231,9988444921349139081
+66d4674a-6022-6b48-451f-07512223530e,2037951136,8882205859414582271
+96bbf1e9-47be-a7ad-43e5-3cb684c3bd8f,1138336215,15568033980647595903
+912a8fc7-9e81-33a0-299b-8df07db6d19e,4138240951,15044059573439101448
+85f000c8-4d6c-48be-b0b8-221f42ebd8a3,1966264069,3135248195823797231
+6812a4df-cedc-a345-48da-4de147ad4c5b,3371074696,7926215393067022774
+64f19afa-15f4-9be6-710b-46621f910bd1,2956344023,4566366437688008312
+3f7e0d92-1da5-46b6-e11a-4c2e78ab9afa,943013727,907064377828945980
+7b46c435-1062-576f-9f21-8d63e3c42acf,4249527683,1444620266348347556
+c288cb12-f91d-af44-c64a-f14599962768,853257503,6105636971978323607
+00be7789-9769-1c39-d2d7-84795397f406,3845172552,15373413214550942287
+1373320f-cfde-d347-b229-3649f93805fc,545026052,10342204670421383127
+2c640b90-4ba0-380f-90f8-7df46bab61bc,3304693164,12157026348324369520
+7e488ac7-8c70-80a8-ead7-2a1c603a3e43,3823239055,3097596056032667715
+993de3f6-f194-0314-eb94-8072a4656c29,3044781411,754177941961660500
+5196e9e6-5a38-e8c3-2355-81d2d5c350ec,1892779258,2837973084379635192
+e817c38a-97ee-f8d4-93de-10df88126d70,3688168342,12764534115348857152
+eb765aa6-274e-b0fd-b9de-c645f7a82a37,1501744283,6158349319844055316
+1cf3f8b3-59dc-bd1a-40f6-b39725993774,2119721178,10709346570185427534
+903857f7-b80a-0ad6-6501-c3be4df66fc3,3949601414,16592908518773160140
+e1ee4c3c-d5a4-f60d-9f66-c10e6f8aa8d6,2253886545,16681572629187850738
+126b83d8-2aa5-2111-76de-09b763c1471a,1327187559,1836899752600396545
+d0e7c402-db44-2070-86b3-682cb9f301a8,2203059619,14797112735678172911
+0ab8154f-1016-e7c7-b3e5-f0554ba9222a,2443446550,14025822884013165280
+43ea8df1-009e-0f91-bbc1-3e3d680a2ba7,374398413,8235602878783828816
+4b6e1261-69fb-3ae0-1589-d2926b1e2548,3519305849,10576319115199982465
+d593b22c-36d9-2c93-0a70-56cf8643a4f3,952878466,13741715369437076974
+4e1a616d-911b-6011-1de6-a94105f23b60,3429375450,5605628623330280367
+8312b10c-0431-0b24-a927-7371a5724ff4,3223722959,296839021673439409
+6aed49b4-348a-3fe9-08aa-6934e0e5d153,530945616,10756029134117207255
+7a159563-86cb-5edb-e4c9-b2fe2b28b306,214790228,15122758540772668141
+2e20b95f-ed79-3776-6c5c-2741252f069e,2218099996,13968640436921193314
+c1a88fea-f782-bd71-669e-2623062e52cd,1827032502,6418839323770373565
+c101b9a8-fe8e-ab62-7d0f-84cfaed4c0db,1137575776,17995385947184078696
+c6cd30a8-43a2-f50d-ffab-0ebd1ac8f887,2456186725,10683162460551194235
+f4b13881-3bfe-b1f4-bf52-dbbc70f806e7,2241340617,18069545412589319542
+295f1e0b-d965-4d63-4e03-d48494566047,1692579990,7615687552959204358
+a44bd787-75d7-63cd-ee9a-bb119d76d9a8,2068756445,2695720919848013879
+54b47140-d7e7-af61-d581-f4cb1cdbc690,2078047427,5640337690057607073
+73552d97-990e-0379-db9c-2f54a768a96c,4102520545,17742589962884559516
+23735ccc-d9e1-54e7-0e4d-cda9435ff770,3819193045,13147519367519544818
+301ec91b-a7af-24f7-0963-2d127465396f,2732816834,11493692680053566059
+67151330-8c77-a5e4-2e4c-5a4e392c5517,3030771268,12683906427124723627
+7c9e3f2b-a6a0-3718-dd91-c76d54a55aad,48304117,8974598085936608890
+2dbdeeb0-ece2-98e3-47ce-1de3643b782a,2384248374,4214784235187684236
+409c7abb-2a44-0b34-3743-a5486c2dd28d,3460102874,4039982011678363884
+56e16ade-c29f-10a7-c3d3-0987f630ee97,3664999623,5585369446641787214
+bf26ce67-8fd0-17f0-a3e0-12dbc213eb9f,3837247200,12146808839457759478
+3f221235-e7e4-7631-7bf7-b8338e97931e,2744562605,16035658094144076441
+91c1d1a1-bde4-0d44-a1df-14c8b053e966,3856595033,4830780488762999564
+d3a6c1cc-c1bd-7291-34fd-0f89050ea1a4,2507215022,15793518140780958690
+41913c00-5f12-442c-38c7-278ecec7d6f2,3039173786,3742452381481549550
+8b86ede3-4788-fb98-4fee-baf0dfdcf933,1969491643,7512440308706709804
+3cdb142d-f9d9-8fb7-854d-1615faaf2b02,1022489587,18095898586739752660
+e7ffa27c-a56a-a7a3-6bff-630eb2bdeeb6,3280431489,18184835396305827863
+25aade2e-30a9-00bc-fba1-fcde2d500cd5,2877415060,5255003013280569958
+e1748397-f73e-aa76-78a6-6cff8db0d528,396284580,4286813191006158808
+f04c1426-b58c-2468-8490-2cd3b9ad4f25,1978635925,8220006631284833886
+7d3c9c06-5481-b68b-723a-29cc48d8e739,2395633173,10871437209520200597
+bd9dbf85-3aa6-2885-d59c-eafaaf8eae66,4007420372,3060743398510545631
+01f0a460-1ed1-f667-26ed-afc3be3fbf0a,2316455814,15702347549153950728
+6873839f-e102-a223-af9a-319cd2359502,1678586667,1946356432119458319
+f94ead4f-e750-001a-d8c9-b8282ae9610d,518925664,6375550233195559785
+3c57e208-4512-2d0a-8a9d-4bc182af2796,1637572977,16268755787177872245
+8474ec3a-c1ee-bf02-a78d-4b3043583e37,3828763739,17364080468883087494
+e322f2df-aa67-01e3-53b5-afc1bd6d7ab3,361610474,6675206332990004745
+b604e96a-62bc-1827-3034-faa26336669f,4063699068,1240374314969316310
+cdb1e272-192e-ebe8-47ea-a1403aaf4acd,642934848,3080097162232161535
+de0bec50-c346-53ce-db3a-857c9fb7548b,2698162678,6701666677080748073
+4d296ce3-933a-6f0c-20e0-08d79ff38efe,2072168589,10000321138071789563
+2cd342a4-bf2e-5a49-dc89-395b1edb7c49,2105580565,9783414333050075317
+6fe00dbc-4719-3e8f-c0c5-3f2e337eaf34,2707269031,17447474418658869958
+88fdbf76-b7ba-098d-f97e-5f7e0ebb5930,2672315853,6487585721516243501
+30d5ea6d-abd4-1cd0-cfd8-98f389676ab3,1204192536,14154725024495511686
+0c75223d-11e8-2d28-0db1-8c57d9b654bb,1847199356,9597051380564416257
+b0694fc1-de26-8d7c-933b-42477259270c,1157244013,8909672148104624235
+9815cd2a-e388-bfa7-496b-992401e2f21c,1481644739,15546218422948579970
+db50fc40-4e33-580a-c587-b7c8deddf3b8,3544117453,8830902107574833806
+01e971ab-c6ff-027a-9538-f6e22094118b,1293087467,3612929713092415751
+c55b4a44-7704-25fb-97af-305955616b85,2488942296,3374158638653296493
+a771ce92-38c0-c3d0-054b-f72c31331ae2,1771412790,12775714617434943685
+d611b484-4b9a-b033-fdb1-356cdeef738e,2796387862,5242922767799960393
+ca722062-a4d5-c011-8699-7dd483fd68a5,1511737224,1142195894763658765
+7d815285-8cf8-26a1-c7d5-318dc7c99828,3408607640,4004880835804060470
+7b578285-4b55-5c41-8992-c752295e4187,955539647,4186547817194098455
+773228b6-49ff-47f1-4615-a241814f2e8f,120781349,15567660647308248249
+f90b8499-8820-5653-72e5-abdd0e9f3276,1861015806,1565860010073282678
+8681e8c7-9e32-6654-967f-eaca61795739,1021929257,5663578214667464187
+240f32c4-3051-7edd-fa7e-20013b2d6b28,3270058715,14550044641322359330
+652f9d57-5462-549e-151a-690d8f42184a,2488989621,14419872747541944634
+23394c59-bdfb-b11e-32f1-7e7e0db20f1d,4289397818,5094152254901672428
+1cb437ac-3c0f-8d9f-e070-fb200afb4e33,1524790894,13078330671221602438
+cda6fcd3-ddaa-f522-05d3-e2b0b7487815,2747783727,2357149787303025218
+c7241034-bbd8-c040-a390-c3d7901adb05,1743266910,9887196776973452463
+26d3515f-aec3-5be3-86d9-d9894d5dae0a,2936109464,12412311151818659800
+9d1b9457-8177-bfbf-d1f9-03436684163c,3026554580,5881880535190551094
+41707d98-7c69-07e9-ff73-62f4c399dfc9,2092696761,6932574327728348098
+ea318766-7b4e-3ad0-42c5-2354ed1cb6f1,2371046233,6439582004269461070
+6f5dc45e-6c19-be0f-0ca1-fba74d4f0432,797581991,16943661047197476631
+f6ba49a3-7e7d-7ac9-6431-8ae78b155f7d,579458011,13302542608841748533
+1f125d13-b90a-b536-d005-9503143fa96c,279347554,18020945969411408020
+9fcfb859-68eb-285a-5cfe-0d5461078c31,1111073852,7709896852443636759
+847ae8d4-c92c-4e09-90cb-90d1ac315a6f,1312587649,11899666174307062032
+758621b6-62af-c7a3-4093-5aa15ede0c57,3719798791,11277002140770313298
+bb57df62-7504-4d52-4ed9-613290931343,2412581079,5795173744996494807
+5f86d9b6-2c10-ca9b-36a0-e7f4f2f30d98,1652789980,5967888169143040512
+73e0ccda-7275-83c8-913d-3d98cf1105af,2159676150,6177754105535970904
+27483bb7-44be-ef24-313a-08d5395fb07d,149745660,8822718536180182042
+9d8dfa95-6b7a-c259-27e5-cef4b7a1cc44,461605322,8416992016262665857
+06e780dc-0e84-2405-9773-8597b4693cef,3342428531,3512094081268628863
+dd3fd017-da4c-fb8b-1fdd-c43569aabc1d,2505307142,18438857667136626928
+c1430940-f952-2c6f-a6f7-bc7870a93217,2526001957,5087618599054075646
+066781e5-4289-8991-d885-228d5415183c,349729784,16561675013576520322
+32ec4f2b-a993-91ae-03b3-4bb98aa2d778,4197987186,15030801529962347560
+444af7e2-f6b5-5ee9-b322-0595b2958e12,1795260394,9409864209136654555
+f68fe2c1-9aa3-a3e1-d7a0-7af425fcb6d4,3354907259,11779049615273756085
+63eaf723-4ce8-9cac-6940-0e0388e331c6,3040625274,3932399574098001541
+6affa927-4b1f-64ba-dc8f-c785036e1600,829426006,11519472507645793498
+ca0dda06-46eb-fb63-6219-7e4d48bc3c23,1012337694,5389614527938909451
+98f2a77e-d99f-bdcc-3bd9-a11ddd379db5,1371240916,5665940143390652909
+2ecba11f-e829-13da-bbdd-625ca30e79ae,2966641742,8973069809435269224
+71fa3f92-30a3-0e1a-64a0-f5e882890ec7,804804940,12514846048700480137
+a2ff2814-1b38-2149-3c7c-c18826b12ae5,1325382506,12392587385886436296
+e06e7bf8-6f3c-04a6-e2b3-edb4aca3df22,3792946466,17766023001056520426
+9fecd6f2-ad96-b1c4-c59b-354d3fd4f678,951000523,15513364456729165395
+f22a63f2-9a5a-0637-ce61-0f616b2e808c,2691003855,3517894606726237797
+b763df22-da4f-cc27-5a6b-3376be81e113,1296672980,9452154136184520713
+fa538de0-72d9-c865-1dfe-9c1a7fbad59f,672105248,1263137637496417352
+80cccb2a-fc62-2225-9113-61ddd6456155,3978868666,818858506805844662
+323df2e1-1d3c-ec64-e6ce-aa337424ab17,1771749876,18174770182091315097
+46406a95-8abd-1491-f4f6-eca825844619,2856113130,13354013642450921236
+325045bd-84d1-fe10-ae4d-0024d255f46b,516831376,4632077797618588639
+79eccde3-7518-bcff-4f7c-8d50f3c3b24f,3929784525,4037007213284785513
+0b829845-5237-e391-9efa-336d804c5710,1957263772,18042072832652890062
+8d1f9bba-ce45-1752-fa96-921bc5b7f7f8,3600092784,8092607896266276581
+d10e1ab5-71e2-9f9d-3cd8-34f1096542e3,956856080,7163389167284702104
+b1ca839b-eafd-ab88-8f56-efa5b1643f85,1015299817,15150977245013822387
+b825cff0-403e-515a-6eee-b4fa6c5a3d3b,11303606,12547805229988363711
+0327b244-180d-b40e-0c45-4e3572c532f5,3968455098,6505731331785411251
+8fb0d53d-338f-4607-0704-3d0e26343a68,3440436958,12848858955915946094
+d8645431-e0b7-021c-8640-7f059c9333a8,1995337072,4751162726474784509
+1d965ced-52a3-824b-480e-584bfa136f9e,3990639924,8997672312759451140
+26d553d5-de57-16b8-90e1-5682e41538d5,832493751,16162219039280586460
+b42c0c47-adf2-7bf2-5a07-68e9bef5c9c3,3686689175,14284986407091479774
+a867a86b-9598-77c6-6c36-dd87db60663e,3610918477,5506226790969597851
+5c8ac476-ceac-5c07-930c-d007fd7fac79,1900663485,9235430741019632539
+9fae40c4-da60-fd29-c905-c7e0d67922c8,450166878,14168417612580065144
+71763dc5-ec27-3882-5489-0020ecbba4c5,845148924,5163624647579168216
+d4c0921c-f6cb-3cae-c755-d4a2e597da29,4246528001,12618614689303368186
+74b19e55-69dd-b3d9-1187-dac0bac1aa61,3417060278,16844222485013107185
+b4d3eab0-2010-d72e-1242-5d4edff57bdd,2858765015,15250633019633061154
+cf5f2d32-4f9f-37dd-33bf-deb259d81ed3,1327899345,2006512958177393153
+2430a4a6-c7be-7e7e-362a-f4e8d6ab6039,396248672,11698993063717411062
+cdabfc00-be9e-e755-ef01-6015bc801036,3905479487,5344667283973257675
+47b26844-eec4-6e68-c8c2-3a034d9edd3a,2804210349,1148297204944513939
+1368b1b6-8c33-3c73-e590-500cb706735c,3646791905,4744198801845712978
+b113938e-3e1c-a3c2-3b72-3a6b1c97c517,3562723556,5193248367142184846
+74e9b21b-aa10-0d1d-4076-b2e15742be1a,2194275505,16417587543301359297
+8eaca108-20df-605d-3715-bc9a76b512bd,1335681380,11965061034935718862
+c3ac293c-f0a2-da44-fe72-5e91b2408894,238650419,1628589668785289433
+b4241ddb-2c3c-d173-49f0-7b57784d9800,4019123420,17594070405886114936
+825cd626-2f3f-2d1d-c324-0dd22b02b99f,1520819589,7381026724990335485
+17cb2e5f-506d-0099-3f31-463b63703bc7,1380438231,15408383947028333894
+c9e586c3-256d-2eb7-02e7-40fcc26c48d7,1566230092,5500280122951441645
+6de86c57-9122-da43-f4a7-192394c6b667,1659641491,7090343199447630688
+6f3c2241-46e7-dd17-c15d-5b6e45f8d449,221937558,16093916455246128395
+316ec1ae-9994-795f-50c4-5ad961029c26,2022735836,5138696429951466080
+431641de-a396-ea44-50f6-875afd6fcbf9,2538939607,13298424236838829255
+6160403a-1405-8505-120a-ebb700205817,3218924662,17856075340437631053
+dd940f30-e4f5-ffad-a9e8-72db003f4e5f,680826558,11971514627886883370
+755d4b0e-2204-2b2a-9af6-e6afcafe7355,1197685232,2843201513767372839
+3efb2daf-3b7b-75c4-9116-e36a7572da3b,2241198252,13360617957521972192
+414df4b9-cfdf-f811-ab2d-65611df0d9a4,4002110436,8651810161266202997
+a57b0ddd-6096-d3f0-ef7d-203417a44b79,3365507726,3433397137653022156
+c1ba8f8d-c04c-474c-722a-c0ff504729c7,2254712495,1402207154073808582
+72023261-58e9-15a3-eef9-b764eecabbc2,955290894,13954842156559887720
+ef17f6bf-7290-a314-acf6-15ac935008c1,3538415987,15835377634148661092
+0c87405e-6f91-c2e9-7465-2cdf82b149c8,3238807254,9739125339311137663
+aa9da354-f7ed-7739-e035-cc9f753d6f89,363200071,9528103496661807652
+4e98ddd7-2f43-2d98-ded9-5f3994aa3fd0,3003705006,3157512157043767166
+30e50105-ad67-51fd-aebd-896759aaefba,297903272,575575237497469093
+5b0fa812-1d3b-0a3e-7f89-59bcb7c26181,1776627490,357729262902292375
+d5eb0fb2-18f7-ff07-432f-668582dbb4e8,2050269803,10567735877655609107
+5520522c-b60a-49b0-f9ea-78dfed9d4d9e,4115307050,62550958095688364
+2b9d24ad-06fb-96c4-ed6e-f73b559c4ac7,1392991909,13675030311699372710
+b8fe82bb-3793-7b6f-479d-1f4a648dee63,915032356,1871736206162493823
+3e2a6a3a-545b-04fc-9c7f-e17b29a195a4,2917782170,7968988166959801796
+17893777-54b1-d994-6822-8d7d85ee50b5,3591627391,15500053803564548231
+8831d6aa-cf97-3379-4b85-a887ee162a9f,1411890085,12567057276313947438
+51febae5-2ad8-0fa3-e700-ae28324033fb,1631927580,5319862293994082723
+88ccdf14-6805-e833-e0ba-bcf7a7494795,1047477608,758670989044931411
+40e144ed-8b28-8810-c863-67bef1d8175b,292361848,6964769161553202597
+d366c30b-2221-db2a-ae10-c698ad2c943e,2135726158,2976001883866015533
+73ba08ee-0e09-1276-3daf-44d57950ed9c,346206088,10293221732823442781
+c1485da8-8d04-a020-796e-37b53f9f1fe5,3700246793,18014116154860415892
+dd6d1728-c51e-53d1-72d3-a76eb881e6ee,3556082763,15832744560992002001
+447a0a21-10ff-33cc-c0ef-29c5bfe4a2a4,2735437421,12836555713056525517
+d7ccc6bb-151e-6393-19bf-4ba8056fb196,3537987419,12380050981273242851
+c20b35e7-b2fc-759b-6755-99febd8fd306,1098917004,17515909193325290565
+d9ed4a5a-1898-6ae7-c0c0-2790b905d352,1264119781,6744171275109010341
+cf98c97e-9df7-6911-e755-5cb5a9d5e62f,4246711676,8257844903514965087
+2cd3508b-7b9e-a605-6089-3f7fb37dae86,3963706092,12835940192806804526
+384224be-5b9c-f947-19a7-684d1769bbbb,548392510,14887846903701924950
+2bf576b3-8447-9bf2-bef6-a75b1db35056,2932091144,8348884317241281978
+267171a4-3b13-df87-e35d-211cff94d9aa,2127896844,3399054844859364316
+88dede3f-3edb-00fc-1e56-7da6d6f4f97a,1298514072,9795527668642980896
+5c965031-3f5b-d80f-c916-eec9c4f2fc95,3693887781,10228411997053084509
+eddd597a-6c4f-c316-c0ad-fd36c7078b0f,3428295584,7628403538104062375
+ca550166-4819-0555-a5b6-75ae0c2467dc,2345859397,5283460368160603270
+bf4415dd-efd3-c6c6-d2ba-6ceaabf6f861,2867047243,14218033948634810901
+2a515c1c-ed2c-ebd7-f31e-35c1fa9529c0,1777623918,7449768967629708483
+73c04451-e8dd-83a2-bf47-92d964094c06,36900315,1211788385515637073
+b7ee299f-7ade-8482-d82c-c914311aacdf,3746511374,14664245304398719731
+4d2497e2-5dd4-f875-c963-1136164197b8,668858063,13821854043930722511
+62fd0672-53ee-c134-fceb-8243b69b063b,722117455,3528127531787107462
+bfad8a43-53e6-8b3d-5524-93bb144b1309,1329509335,1731951937497929305
+9fc0737a-b990-836c-666f-df812d7642bc,3714299507,16609794355914811228
+214c990f-8057-d1f4-4b7e-ce51f118aeb7,3971993234,15661021303162123839
+c69ab422-1aaf-0439-8b12-550d7cf1c979,706380464,16104129214658583119
+24a03395-f3fa-bded-166e-108f3f1e187d,1612810492,16109441706207224612
+8a80c443-fbd9-dc34-57e5-39327fe02b92,1598575836,8857352474927070215
+958e2376-5c56-e3d2-ef6a-f6ce137957a0,548983487,5764921200555749275
+6004487a-9c50-9b5c-04c4-6ef0823c4a90,676993629,17719778527389731092
+30452ebe-1240-a367-7d9e-7c576499eda0,730241163,4827360530670673948
+5bab1f57-eeea-e88b-2e40-1976e13367d3,3318560275,2632679720264152193
+7419f9a4-e9ec-00ad-1533-e11f30f240c8,3606609853,7399953689046558128
+1c556a5f-5dd6-1580-fb77-16f7710c14e4,31134520,4916868348847786585
+c8fa26dc-deab-b186-c14a-b12e4074befc,1367905650,15304722355624580860
+c168b47c-31b1-4a24-aa85-acea61e557da,3266836555,2399570762262140526
+5e1ef501-7706-d288-8e6b-2973fb4c5a0a,3850384595,13604843200217588327
+0ccbbbc5-1fb0-5e5e-a58c-124e1dae1f2e,3980776292,9253133784364442043
+f760339a-fce7-a7a4-3294-dcb96720d20a,1525235956,1264471549554378858
+b313766c-b9c9-fdad-d1fa-45a3ba0570a4,2634362612,10996509203305261279
+43501dde-280a-77df-f2e3-cfe115d11fe0,2807766530,7166177141575920866
+a82d92c8-8073-3371-2452-70ef59af2459,144386539,3430208258141457625
+e6f05cf2-573f-ec3c-7b1e-00c31efbc332,523426448,15056688951787588933
+66be680e-5987-8108-b084-4ffe6a4dddcb,3057316078,7879080952465026808
+cd2e8c18-5a95-95ec-018a-8ccab050b0c0,3191518122,4040530871743365896
+cd422b49-2780-2eb5-b127-2a499d711117,2614758023,17356227023888740571
+1715cfdb-b383-155f-4b84-d25921560576,1680557497,7330733973307508745
+d1095f03-182d-2415-5ea5-309b1aec6b0d,2066789504,17274703926808139670
+6e6fa08a-89d1-73f9-e3c6-70bd4e4d3088,3555525268,1491089835521571753
+90470f6a-f354-2082-1c8b-51c6af4ed246,3565278699,16123934987661958825
+80ba8204-b34f-c238-c91b-f8f5120eb00c,1933706684,5951273669883706220
+b785500c-7cb0-1c62-9315-2fb719f183d3,2830602019,8310717485317948669
+0d8064e7-0cf9-d36b-5598-519312bb7ce2,1290565500,14003224981847340340
+f544b160-ce50-ef8d-cf0c-cfe8872f97d1,3292902478,10060654354471547810
+c7f1a634-a02c-9b4e-06c9-767e418b5992,682813443,18058179001405506478
+a4c537c5-d7d4-5c52-113a-02b495d88d9d,3662084690,13922586521529723593
+8389e475-5863-bc69-de57-c5b05417c16c,3432373744,12777734244547794436
+849d4358-f4f4-3e38-a963-b4807487c9a3,755257480,12411419752196664739
+9687f99a-990a-ee76-36a8-1b2889a4c7c0,1655841933,619438753126208138
+88efc941-34ff-f99e-2ee1-c29f7ced2e67,323956026,1538301368888360457
+5db72a82-1627-28af-e536-2c2adaf1da1b,1354279643,17939762417867107361
+274ad06f-c29c-5cc5-16a2-e9e407158cfe,16074967,15981208696597809698
+32f5dae9-2c9c-c086-1746-5588633e7a55,1783624264,3180625678700804493
+21fbdde6-b310-a267-c3c9-47bf52f71ec8,4037038651,16557562911569475251
+8a4c782e-7ec0-b48e-e32f-f3b3d7f30367,2182578373,565059859689636028
+8f96a446-f4a6-6ac2-435a-c537f1420490,1449133199,13636061242444319371
+69914e20-0107-bdb6-6876-dae46585ef56,2366074822,15473009985425690349
+d87d08a8-34b4-d941-f3fb-ebb5a553724e,451893666,5312927073646918958
+11a3a8af-dcad-132f-b503-d1242f486bb7,152903603,2809388910307743923
+57d8c9cd-db57-f24c-9e88-0ae0b36d4c32,2575596487,14220328340608005051
+d8402657-c3b5-5f0e-f984-c9acd3240297,2151107207,3102861976838501591
+a01b507c-2b9a-c79c-840f-3410641db428,1052516077,2007059090386952141
+11fda603-6f5e-4708-5e20-aac19f5c7598,1666434336,16636742254869082411
+f2ff8d5f-8bde-d596-b2a5-ca4d90a2349c,3214631989,7885284386591375002
+cb251312-1cb5-5ef3-0a37-4616297fd724,3945696145,15266680887250950597
+890d0828-118c-07db-ff58-8f8193972dd9,2793679112,9473821911614161695
+8ed4b165-f701-eff3-9176-b7642f3e3420,1998997237,13932039817789550425
+547f9008-28db-aeb2-3a00-54561e977947,1875909808,1099124381881463085
+cdfd08b3-783d-b888-715d-86d70ed4a26f,401074708,11279501427699139299
+d1f45938-2f2a-94e7-70ef-09a72a6e0b1f,1800225791,15635713889031011069
+2ac64366-417a-9a5e-2923-7068b2df8624,3261550248,4149281321359325575
+f7e4e33a-9d93-e766-ac7e-b644d4e02fbd,1446843174,17304346681546406306
+033a6425-cf7e-c623-5264-775ba9314a2c,646355765,3543528104642994173
+b6d53cee-d4e0-ea9b-8f80-50a44216f600,2143477776,9717645151621638232
+1858c825-38be-f851-e7c5-ae2d82bb0264,1919206920,11912982366215708064
+196c205a-6572-fd23-dbd8-9de6da085773,469696310,1121542238816939839
+ab0676bf-004b-0794-167a-d747f8f21ddb,452759655,8197761877043599805
+2248bd93-498d-6535-cc0c-9b64164ced8d,3941939241,2176845870533957507
+cabdd0a4-e14c-5cf7-ba6d-b1dbae7ef62a,423777411,10062401169845383565
+a35afd71-5731-28c5-6c75-f95cd864e064,1641458749,1575674594862317756
+99f4e141-1141-93a4-23bd-02dbaff36c17,1738794249,10103337480891408588
+95027bd8-15b8-48dc-ee7e-e64a0a905721,806247993,11365760936795359502
+5f838f52-e74d-2e1c-001a-e4769c14fd69,344099847,16361215788619160903
+d4439420-b742-5dcf-3d69-bf9b2c75498d,57350684,1719998769864420486
+b8c1e8b9-ee3e-b396-fb15-5ef26bc5752e,334055309,9300599671845044706
+62480e56-a6e6-7c0d-05e6-7018ac952f40,1458581363,12087674617628521602
+77314b06-e9f6-d44d-b729-25888149b94c,3722898701,14293769113009271708
+f28f9e2e-5f46-f6b8-faf0-f0028d4c7b78,1447138364,536756454698805370
+f7080fbb-d68b-85d1-fdc0-b3dc72ea2f39,224393379,1657274453926166762
+bd8a6431-7ff1-74f6-bab1-b4d23c9ac0be,2059715900,11723066190009736335
+0a5d24a7-ec89-8aa9-607d-c39c4fe674de,4251861177,12984031316662884851
+38f4d246-0d9d-c678-b1db-efdc7f6fc94e,3077671081,16904901354860411030
+e048e20a-9a63-7673-4f60-9e9da407571d,1874407228,8404588227395446670
+bf914c29-10d0-4281-1c58-c8629078c414,2256152117,13503248089068269754
+6a6dc784-bc0e-4a9a-59bc-f4179c141f6c,3900395701,11156520588483842292
+0fecff8e-38ea-bed7-2846-e9d7eafb7a90,3718548834,10567931431139105576
+57f76073-2c17-04c9-dfd5-90501c285933,2459615315,8729553989268000476
+0605d0be-041f-98e8-2318-7dd4d04799d4,3596202232,11215368778927305134
+1e6cab95-34c5-94be-aeea-9a97c40d1d31,3708864270,17432718408047891267
+747f423e-c05e-677e-7d5e-b6052b470d68,3163016380,16026495339135930868
+c0046ddd-e9c8-2637-213b-2870ca10cb41,3947355775,13819650200859127164
+79b453a5-7c6c-ac27-f8e5-7c70838a8799,3123020012,1050684880290833933
+964fda02-78e9-beff-3087-279e2191e7e8,770720442,11282175938417946105
+4cebd48f-acfc-f814-882d-aa0fa365481a,2635314349,10967473653274455260
+8dcb9c43-d764-5664-d803-f23a0011bd1c,2393369073,13611127716634071718
+dd00eb8b-1b5d-d37e-b6ba-fdaac64c5ea7,1863968027,10132006729979064431
+338e99ad-6ffe-2ac7-1b89-bbf204f74fd5,3174016181,15805734280504509192
+51d3311f-75f5-1283-1484-b5c97a9f36ef,2914597581,6069699498080889799
+6a1744b4-4623-0b97-9fd7-a07d75ad44b8,4003796823,8802116643722832586
+6b42fb81-8811-a2d2-8cb5-c730aced25f7,1414328702,9209323904774639354
+71de58aa-30f9-604c-f938-ef49b51a65cb,654120315,12633923605772113737
+05a8201b-5056-85df-5fbb-bead0bf8e02e,1504622124,4158734361398168781
+cbd4a26a-90d4-2f2f-f1ac-20ad42dd77bb,2072373759,13042625747190745279
+cc6729ad-a0f0-2cb5-a7f6-251d028d11b5,3609874597,8812682620651598561
+2bf89094-9673-492a-6800-39d33f25033f,1200634642,946747623550052949
+4480b939-4eb9-be0d-1a75-48fb4e3a9e82,4259614811,9364659700480337659
+588d4845-658e-98b4-f554-44c0c017638f,1085219840,17249125079282425749
+f7d92dbd-4e47-d20a-0aa4-a4b61817093b,3066881492,13061924872333335939
+68538ec4-2bf8-1a83-cb91-8d4520a250a0,1124575655,4338221889929850140
+7138569d-c78d-c975-4f69-8222a3e20ff3,1061985382,16957850714001433043
+b327e3d7-fada-ed6b-0626-9d6eea61f034,983398815,3337938409177230979
+68501212-11e4-dfc8-e1a6-4e25765a9103,3041061515,7838029614801424068
+5a13e623-ec68-4a52-cf26-d85d5704f092,1120945394,12044351310904125718
+4abfc511-850a-f84f-f7bf-e82e9b2db496,3226317181,6149600420222776436
+fa8f6edb-1b2d-7fe5-d503-73307ef30120,846189585,6493111089060085353
+27273910-2f8d-813e-f431-2b857b728add,148468782,2001562594556587816
+ff1dd5dd-5f98-9c09-095d-1b9ee45ea91f,2424931306,3972420990295623552
+7fdec34d-1391-b4ce-3e43-dbdb9644b241,3167208123,40753511112110624
+44b3c09c-002a-95dc-6e92-a6c93344cd18,1690488371,8958662758918865921
+74ac5776-e905-7e89-f8f1-3e961b55fd08,43625522,7727351122248369402
+c6b7b5df-2073-9da3-7610-a870f779bbe4,3779065845,2155189874095255171
+eb92d1fd-5e56-8394-f4c4-9e52b03f360d,717160571,11086221040940686234
+0c84e59c-026e-470f-b328-1ce042c7041e,2587130253,8774351227070862230
+a4affa41-5b1e-44d1-13d7-8e4e276cc239,1310681127,2701674127561186140
+e925c6b0-af56-7437-7573-3882f6d8e3da,539987138,18212613531352394272
+d7e54013-e580-2149-5cc1-87888681b859,2963197095,8633558201032223259
+a5453310-6246-5fbd-fef5-890b3c28e0f1,3887073995,12605638603740126863
+eed2950e-d7ae-161c-58b5-e9b85981020e,3686774085,13293740438003490275
+a4eb966d-7c5e-b4f1-c2fc-1ef13bf659fe,1512407082,10889873649321113314
+b27d41da-69b8-7b41-93cf-0e20003e775c,1011649902,16457844141457210181
+b8f15713-e21d-3bbb-6306-c28e78a09330,3946788441,3188445562184882362
+64ac219e-23e4-6ec9-f718-516baac53448,3422553599,18291645441152467718
+314288fa-1891-dfca-a5b6-bebdaec7d496,1397600224,5327707385477280920
+3dd2d031-611a-10fe-87e8-bd724e38f99c,88152460,1827328674849835222
+727d669c-144e-1e05-bb1b-00ef37f3b1af,2152136636,14781459240381095354
+20fbc928-8c18-bc3c-fd48-e635007b7429,3493307873,11647131078250264227
+87cea3d8-8c95-c9a1-cdb7-8f758f29f614,3167494545,3235100126051647753
+e2a37d37-4e2b-4f97-89ad-e79b73038689,1961447854,7618550328295583380
+1e34a252-ff8b-e36c-1704-d28f27af382f,774285655,8983870491444152552
+0b0b04e3-5fe7-93aa-a777-02e5efd89dfd,1763730803,3707017582081257664
+b8459fc1-3f4d-1e10-a882-5fa84037c8c1,2820125219,5374177366626873382
+caed9ea2-b066-41d6-0416-5febb09a2873,21246393,11370114322428578967
+9dfcaec2-0ba2-e688-8ec6-438b6e538b07,427448473,4891427705810136278
+47d09e5f-3c70-acfb-32bf-bc4b16370059,3643634262,5501007640741419412
+7ddbd286-c242-cc5e-50a1-7679273f1c7a,28423525,13364149667161761140
+6ada90e6-b3ae-0039-46b2-20bc4c73aa9c,3249746389,10347871521201080817
+64d4f048-8e99-5af9-758e-0bfd941397c8,3681778108,17732879407679261775
+f04d62d5-8880-ef58-52e1-1fe063424a2b,2167155480,7018185005085106958
+6804f3ba-4e54-c163-bae0-14f086361e03,228358753,18147933130257570610
+6507d488-c5ba-21ec-43ae-2d86c7f28c8c,1495482806,17033365809783949404
+8bca2dc1-fa22-2317-1622-5c4c38052834,3439975818,851812770611350155
+7f57329b-b32a-7ed2-d2ca-01a5c9656504,3759437720,17437873257834177452
+ae3adb65-5fbc-d037-ee0a-86d7f72500c8,3968506748,6093101005524511946
+fd013f71-87df-6681-7fff-42760e11468c,422869266,13759756837446006095
+946c4df7-d5d1-8d36-2f25-7f72d30024e1,1551547155,9783804644585505859
+c71b8003-68cc-55a8-cfa3-120ede2fb0d6,1744270449,14545595465682657714
+e0406755-4b25-86c2-7630-6964fd354ba5,2733759298,17893377236584984176
+a7d0ff45-f76a-27a5-e049-bbd4a17a8171,928821072,11549940755674473743
+c6af1cea-6e75-0b3a-a639-eaab20350086,3665900820,13240566236697851577
+b18f371a-64a4-6b7b-e1f9-d1649b70b25c,2110954188,12184379987560417983
+68157d98-bb6f-d37d-1c51-019d5bba048a,2766297641,2312432590319799629
+ef1a2219-4f82-499b-a560-f7b4901517ca,1491415788,16885940837643924739
+ac70cdb0-7477-b813-46b2-c509dc6a55e4,2973218059,12015613330449499365
+e453b58c-7067-dcaa-1fb6-9d8955640d05,1800774182,18132967447788483754
+793e886f-697b-c2bb-904e-081ef61f3383,851122769,328735524021233791
+1a8ccd0e-5190-2ef6-af36-aa74ee61c544,552818970,18027246483592106733
+df82bfac-32c1-0cd7-691a-bfe3609756f9,696485520,14582680085540637114
+b3f67c19-7513-2f8f-6357-390e7f9639d5,3873669442,5335440984471974560
+0782e4d4-83c0-9987-12f8-6bd95dba0ef3,1891017892,9392749280020650493
+d5eacb15-5c7a-d306-925d-f0584e63c27d,925542206,651281655732293517
+e378615d-6bcd-0558-75e7-942a886fb8f3,3116836950,818186143544447285
+e9c08392-d2db-d164-3242-7af827854442,347598419,2981862788403784298
+64ef5624-9eff-a33c-4077-fc9eb2fb23c7,3109469491,16266519660193922234
+259f0fb8-fa49-b8c9-5222-54aac20dbb4e,3305366219,8513535377410095102
+1b21dd87-dcb3-06ed-a78e-109973e2ca5d,938420968,17208089205668490330
+6dbb2e5d-55f6-3523-c833-c6c2545941d5,2200985484,18427979303581675963
+ad171161-27ed-618e-5183-a92b61feaa6f,2390838697,798421704017941825
+adf5738a-0ebc-a76e-872c-72c331e4d6d5,41753998,1306534262785645499
+7dbd3996-5dd4-953a-d700-6036f96c0e6f,4225799005,6964026015515964648
+c0e7e90f-3bd6-70b4-113c-5c2766d742a4,3334986738,11221351017500913521
+05822663-1456-21b4-1bae-113f127b8650,732038311,11116024950668809311
+1cdbcc29-2b56-26a4-499b-8687c3b1b806,1422256470,6802241080191452292
+39fbb2db-8af5-4a3b-84a3-8fe71252cbfc,1213734638,15524005028882481972
+f76ed31f-d5c1-91d1-af46-fedc06cb8aad,1854862355,14027773576893822161
+78fcd863-6c7d-3cb3-4583-138dbc7a957a,1264633961,13218210056243157585
+063944df-baca-db54-ee5b-9797da900167,2067536288,5062279470710809797
+9e0b9744-a056-a752-3647-72a72cb28bbe,3711856332,7012354843138387265
+8b74aa86-1912-fa8c-166a-3ecf05b3bd92,3772250109,11953583680277981950
+999069f2-0c52-2859-0592-5dd15b4ae77b,1205232723,4180857792308000074
+fdce8b04-3f02-c963-6eed-89ad828b1e4b,4255590166,9993325962907958865
+d98a19df-002c-9bb8-680e-ef7a507ab4a1,1825294066,14497214613694136490
+07eca95b-9294-eba3-d773-b584c8444df6,4254361224,9584625071996083496
+e75fe79e-286e-9f35-53f9-ff9ea94c19c5,1484911784,5285909909440943278
+e71febdd-c80f-9d15-2349-441e9d61da65,3356368628,14167783588107843538
+f8700e34-e2c9-5e49-c843-17bee2831821,2512692594,6262613864806135909
+593983bc-5ecd-eee9-c0c2-f1f682735e86,392517048,8934855036035354415
+d96d6133-87ef-b929-f0bd-696b2a498e2f,4065141218,16020279923085454145
+1157f3ef-7a57-3061-aa6b-9f673328c1bf,1358352186,13395663446648108239
+d8cc99c6-87e5-ed86-ed5c-aa7d62507c2a,2954177356,6224503526660000186
+73f21d90-b126-50d8-87d4-2a659181fe32,3888664530,13041133148393851988
+db523dea-1508-0bf7-9611-02691816b6ca,2961144886,6108726684429200703
+05c27eec-f81e-acdd-bd86-cfe149ad6942,3920204029,7740431996525515607
+1d98a360-bc19-cc1c-971f-fe8e8a51086a,1315479530,14775606550062963735
+c91f58d4-4ce6-d3ec-7c92-89c6ecd5177f,1075996202,83775067486285627
+478d5a99-e771-99e1-2496-7d54bb102342,2659633743,8147119691229205600
+1e0c8c50-1a69-df79-7367-55a2602ba4f4,2343600953,6740459293330195618
+f5150e16-b10f-4dc9-8a3d-ab534f6c0926,662509228,2817797795914919293
+c2753339-4413-1327-3e17-50e314ce7776,2521120600,2649511024065748624
+481ffaf1-f246-d10f-57a4-ea632fda1022,356563472,18092552252551844032
+4c28d1b7-42bc-402e-f089-16e5fe1cdc77,1877421357,16739455565770137657
+06ba5bd4-93d3-c5f3-3bc0-0f567e72e0dc,1812792200,10877094137292681360
+57c8369a-76e1-acb5-9602-2dd529405bae,296135951,2694899848936405737
+fbcb0409-8432-4d70-9e72-aeb28e08615c,2192448548,7018356317456682138
+e29674a7-cd3f-89b3-543a-4e95a00f931c,3122042449,4313491962396191880
+55503083-d720-1695-4efc-702096f16091,2543786615,3605437112023489384
+6a82801e-8ce7-0f08-da83-0116c77e86eb,241212369,1336160716999852550
+a4ae73b5-0077-0350-4dd0-b395e2ea6c01,2142675491,8390865931617725082
+20eac552-4f8e-96fd-bcba-13fbf7fd45a6,247957587,3221407024277712174
+b395842a-b241-08c5-6cdb-fbf16d46c59f,2605567779,10053232734094564489
+4db9c501-afed-7844-94c6-de6d707fd5de,2265969268,4356925260726181484
+6fc6e502-d021-3eaa-dfce-ff33f9312ada,4117760030,6026207054193707094
+c3c31e3c-cf70-d31d-76b6-88fafc399f89,2540966291,3777361554600200313
+8e7d4887-b9f1-3591-6a6c-efcde4962ee5,1929571265,18196946729339164290
+04377bfc-2bc8-85aa-b2d0-811c0c176d63,452199476,16603914263964352930
+66323f2f-08d0-2a6a-ea82-7b9bb8d4c850,2487104133,7316552679593191947
+72b75fbb-27e5-99c0-5e8f-e649466dcb0a,3179883600,11535026180489175703
+e80e387d-aa01-b3ab-baf2-70a8112e22c5,412528162,15759628351270063601
+aac7a5e0-b10e-c1db-abff-41f8c723cf2f,3319013672,319389527566664792
+56ddf17f-b346-b78f-531f-f72e21fba16d,1651480367,16533801645918823539
+ede40d6d-ea8b-6106-0638-5b2ae3451993,1092577647,736090557530723851
+6757559c-a685-6a62-74e8-3bc08e487024,2818976841,10925705098575143457
+7eb80095-bc45-a594-3cb1-5a61933d1991,1821106752,8616558779059308657
+032f00b0-2207-ce37-72ab-06c4d402d18b,418526906,10000431610919536152
+ae1e97cb-19bf-e42d-6708-753629b24187,2131239392,14802659582676439933
+00b09766-fa71-fb70-9d71-fbb5be2d0692,4130828312,9166375031522267786
+a3f478b0-7a3a-81be-b334-2225451985af,474734991,11202951872546123293
+c34d3362-e394-235b-f881-0c84da83ccfb,751974418,9450311321937601710
+742cdec0-c4fb-402e-6b5a-c861ceb97a29,2160599157,2905831470131757090
+c31617cd-1dee-1e69-cad8-49ab02ecdc48,2310501946,14454630220701291788
+db989076-2cbb-76b7-e81f-a1ee3ceebe85,2909531483,9219130461973980537
+8d744e8e-c82a-25db-0b8c-56eb6ca67905,627654096,10851086555595432003
+92952888-fe77-9efd-b038-c181c886ef3b,4242007644,16664536818070013899
+3b6f90c3-98cb-decf-ad9f-06e90af410d6,1424724985,17500983782109076170
+73dcb2cc-5361-cb24-f953-6a8dcd110f20,179305937,10769550461715250016
+204bae89-8ace-faa1-1eb3-be9836d8ec59,262554802,12252077682974950097
+e7ba5a03-c506-7a55-9a9a-674b50a15e19,3935179178,6806719391729858934
+f262cdd9-b2a7-d61f-d3eb-db5c7352a207,3040462448,1411152113053849275
+9fa172d5-b93e-04a8-c161-17eb450be9ba,2380170992,2882937954463921109
+8ba924fb-cb3c-0ce0-29d0-a42b4de33a3c,1998130830,16081896260409415231
+83790ffc-c961-420c-9562-c68a55f4dcf1,4237895121,2533633383938481382
+11a303f0-4705-5a47-d92e-562303233d5c,2706169223,10485357995037418383
+a5b22e92-03a2-e9f7-4bea-cdf0bd441033,1533808904,13518668484991591009
+43b25699-ffdd-0351-3876-211cdd806ac5,489543018,11124370361692561481
+95ac8b25-85ca-cb09-47d1-be8d30cbdf37,3207620744,4429990760877332571
+d1d3e116-1c36-992a-d73d-e10f796be45b,223490595,10353723317483044580
+6dfd17ac-928a-de50-074b-f8f3e2a1bb88,2525463250,8503511878777744859
+88bf1021-e6a2-cf2a-2e2b-16107d6dfd5c,550716326,3637277184625049312
+3d12b9d5-1210-3834-2e59-a0b7ae767595,4002850177,4542100864472088433
+cde8f4d8-f15b-481a-7c64-d98d0a0cd376,2143791212,4196331219880184902
+ddf4c71d-8e43-7f12-debc-f75bf2a8e495,2887976272,3581195550335608771
+bdfd34a6-9774-6f6c-aeac-2927b736276a,2973470014,4795242299757619920
+b43e0dd3-1078-1db0-ecc4-76337b481bc4,4293089647,6015160405929551696
+b33a537a-d646-b1bd-2a71-128cda71b09f,1474557397,2399861347947879788
+ceae9b46-e2da-2f23-33c0-df9e575b0f1c,1778024538,6651308595358444517
+69eb1864-64ad-3e59-2070-5bc7e9c20b55,3272480592,15978057909901190627
+a8ce6308-b4c8-3334-506e-090a05c775c6,856208619,17353500235107748176
+fbd6c4ae-fab0-1230-acf6-e47a49a36082,1963848400,174780922931927589
+faee696a-4b3f-ae7d-5434-2491cb449692,3667222493,10607113058717696091
+ebbadf16-4d62-0845-f097-5c6e3f4e049c,2384112170,6502793881654844621
+6f3a7adb-0ee9-e12f-cdce-9e84c77f72a2,1058477811,16795235401127707684
+82e5eee1-8b2c-a938-204b-1bc415f69fb1,3259397704,10108984868850631966
+abf3cbb5-f7f9-699e-7fa9-dfe162c63294,1327319998,7784910256225846643
+05c7770f-5c6c-96c2-6152-839d058c9a6a,1188978867,4027958957708286482
+1240a5fb-d540-a060-49a2-e29edb11457d,3925204422,3121594238666763664
+b6a9ffe9-f7f7-c0aa-8391-6c05d9a97e29,717632015,6204181752797012799
+938c0715-83ff-552b-8632-5bf00dc9e619,43625570,6827978648551313603
+f229e2f3-0c14-9eca-df7d-a448f8af50ed,979093728,3815081916180297860
+bcb1b0af-67eb-cbe5-cfd7-74134c091237,3521400679,9131143954449508266
+ac3ed376-a31d-f55c-f1ad-0597a41ab530,2702257040,2164433151429561231
+0f313676-cbb8-5442-6ede-a244dc045aa4,2220041033,14735042471384093519
+40c2586f-a275-5f61-0598-eaa138d72e23,4043624997,11177150084362774909
+5a8c751c-0fb6-e056-8a88-1e8b4c04d22a,508678377,8289031892573698522
+e97c4657-9aab-56f1-2386-96c93b3f592b,122051722,6329050242280634377
+44d647fc-15f0-6cbb-4912-bffe1a1d184c,3238157768,15895060167165149716
+742d2598-c49f-a022-f216-c21babf5c521,1237826977,6236247069755975168
+6362abb7-5c72-f367-a9c3-621c1dc71a7b,2073779670,2403725191631874372
+a07a0426-d723-f84d-bc13-f3ab274acaa9,1863567450,11649795056309918862
+a7ed96a9-75bb-ebbe-136a-6804e1334553,3359904205,12642630842070627007
+2ab0b064-d7e5-e27e-ddc0-4f6c0bd6db30,2950105734,14105548418128179052
+aff44abb-2dbe-bf9e-d5df-2f72dde4fe79,1118248182,14339433818174284116
+da67f505-a1ff-e731-3278-8a272bdd4a67,3453018613,16627555410802599846
+44435d5e-511a-1f80-6243-f60d08830388,1056141344,7754243017311029610
+f1e13065-866a-180d-280c-45f4351fcfa4,1509019132,12676790696885799178
+d90b5255-0bda-e873-f315-19c8d90de10e,4005811022,15268964246424179249
+2c10ff41-db97-a2a2-edd0-669557e7adab,1086670141,10187238504526194006
+85519e04-17ec-73a3-e6c8-0b2a7ee17c38,3037656401,11869344589569071417
+7d1e12fa-17b0-e926-9916-5a31a900064a,3263402971,13327218998536175324
+1e49ee73-50da-0223-bf06-a65d4bd1c0ff,2448517390,17557120474340080482
+5c10e638-1fe6-7836-6884-d32bf86e16db,3696699668,11249452836451701551
+e3fa9302-1179-d85f-5584-2fbb222fe4d4,2704195299,7444632290658218288
+14015737-4f3f-2b8a-87c2-7cb6687036ac,3474136474,17434225839214379009
+69010ba2-adea-7eef-5b2f-51c757cf52b0,3329771283,11488518538155743059
+56b2a7c4-b9a2-8ae5-9486-4adae0c8df16,3229527995,11222571639468235052
+bc751a2e-32e0-4ed1-cd81-6dfae3d42c31,867053192,5268974075694251778
+edc6e1b1-2fdf-e1fe-1ff5-9c425df50e03,2122187951,13041559490350474192
+a89f0c92-a240-e6f7-a74a-36269b54646c,1939788984,2267430732056021751
+14f578d0-01fc-9991-c340-325e9c55ac1f,1695566925,11487692613322153341
+49bb5e0e-c192-ab00-bcb3-61743a3aceb7,1105881225,13156941107702567870
+5ff0b789-d01b-9ed5-4610-ad11917efc9f,4091624772,11413701827252213750
+714c756e-939a-867d-5dbe-eb9967d2925b,193899189,2630820321343523426
+6d641cf0-af06-8423-370d-66053fb9fba6,2489000610,18055117112735577160
+4b949be0-22ac-a281-19e9-2f6c8c57d459,395525418,9221254592801296851
+885175a1-9c57-8f23-2688-751d37f82c25,3957705699,11126478305932908047
+fceff2b4-00c0-306b-3bff-7d638ff199c5,1989122602,11871818911264322130
+4eb268fe-a5e7-e7cc-9187-380c927a02b5,2791675122,13042902524752063127
+44bde7fb-2b9b-2ba1-731c-75f10e22a1e4,1540403525,17839567093630902604
+f8c151c3-4582-b60e-5403-18d4708656fd,3728975779,9284265807741592316
+b26e228e-00b0-a643-bb83-60bd027e2add,1582443076,12480953429665717267
+ff9676c1-4bff-d129-64fe-41e2b96a3b4a,1068113616,12643245988804149763
+fb17a95d-fe7d-cb02-86ea-72b2dee335ce,451264947,11620792418992584556
+0510aac2-6de0-baed-eff1-f43a9ec6121e,3082553262,4391886484526369156
+bedb883b-3e90-2248-a05e-937e957a5ffd,1316437635,14032782938163956181
+47963774-e22c-5f2e-ed95-04cf852d93d9,1521771322,5823572724909966533
+802236c6-0827-d396-c423-940bf1cf7ce0,2085057748,14387892054745508571
+e4b3cc6e-7c34-9136-d4df-0c90fc5410c7,2551705890,8739190112015493002
+813d5a49-9943-b7d0-2574-7745883ca938,2727675129,807798631009411335
+ea0b07c8-fc97-0c40-7269-91cc3439a86e,4164589148,14497955883593414543
+8edb82c1-a59a-7433-c4c7-a35ecfdf3c30,2981981182,6930824078468767224
+fecddae7-1cd4-e957-ab91-a4089a21e5ca,2666466369,7605567584945769790
+c138dcee-0866-46cd-a210-23eb4a6a410e,687598918,11713698583479243753
+dbff1975-aa79-abfb-fc64-2a3e63c6f8ea,1940730759,15910458765668762940
+5a341d09-a283-de12-3e0d-872a451b0af6,647647976,4420550114782094943
+bc46a116-b805-61a2-bcdc-1e6c2260cf26,1892681210,16738347969616482479
+82905932-a012-7134-bfa9-15115334725f,1486189387,13498761598628817288
+fa12b1e4-ef06-69d1-7001-8e44acef394b,117588835,17624365504273268465
+12cf4704-f2df-b633-50f5-79b828f0ff12,925514809,5204782976056040703
+34b7a0ec-b5e3-17e5-0ff0-94daac937a65,2041108,18412233646526179361
+19bc9e4d-711b-e2d1-b8f1-7753bd1fe964,3534168001,1410180777421526444
+de21e461-f3a1-23ce-ce8c-e5912a0513e5,4051882714,14547880847787247598
+e3fcdad8-0599-aee5-753e-9b7a6cc7998b,198400075,9728877554685063548
+5c4bec83-0a7d-4eb3-e847-c7ad2c0797f1,485295104,13508171820345486413
+abada6c5-5445-c870-32b3-8aae32e0119a,3986162923,13839035592078747164
+75f2dd31-123f-08e0-9d78-486acb94df84,3395278111,17481860876047505523
+f6740f38-0211-4bae-963a-ab6aad96188f,1615848857,15044229202928631976
+33db9a98-cfbc-ff5a-d13b-4ee7e3e52c21,4127619994,7502624469126387519
+e19aa3fe-17c8-47a6-45d9-9f2bf6501b50,899373117,415747240906492442
+12f84d17-928b-46b4-4052-3e9b15fc9c86,3603780669,502324222146080974
+5608e5e5-a2ec-c4dc-bb84-a20475581bcd,667050162,16266032288856032261
+5167dc2e-432b-4938-9b51-e924d00dbb19,331037846,5266377050950720449
+235477df-f40b-db77-6832-67852d0e2565,1510680280,8168417120056049408
+b59b4ea1-921a-5ff1-f69c-6c29d55e739d,1350979193,1933790295737151270
+5d72575a-9711-d51a-f59e-0128d01c792a,2040021047,1073388626991789551
+c3a267fb-5203-f3e0-c811-b08d447be59a,541081544,13511176231757357988
+08a73755-0c28-d211-6ec8-d38e890528f4,1246959878,18395849500260083356
+5e4332aa-f1ad-c822-c9cd-ed05c07c5d73,4077736171,9391414737598802865
+89636e81-704b-bf75-f1a2-1294729c77a7,3252302292,17568877629186010087
+0f314f00-4e16-06a2-cd0b-9348e0794e8a,2496769390,16070054343824670952
+71ab23c3-3dc4-0b8b-828a-531190255422,3247127361,15421593515438297778
+a4ad6418-7adb-5df3-b50e-3cfcd437d165,259498916,1391956013423066376
+4dfd5031-0440-5d44-ff03-2fd6ede0faf5,1110200966,701336594550685851
+28b0f436-2128-7127-bc08-5f89e7e45e17,1161730949,14829386806871148414
+455b4c5b-31f4-17ac-0676-5376ea8767a3,1878727778,14633155495375020249
+b0907c18-3340-c143-c3de-01e9dfec6099,1313200286,13069033627965359473
+455a0769-8958-0ba4-0412-7c281372ce3a,3395114941,14995440710563161489
+38ae1f55-8e40-aa20-b457-96e62d620da3,3544216974,13046905333527561724
+c6d2cc0c-a3cf-ec36-6cf0-313fe6bc214d,2136668901,17613366405763917596
+32eaaaec-22e9-0151-6836-2f08d409977d,2126764633,3894203367835003143
+2e110f56-dc06-35f9-dd08-a5e9bcfd3172,3653898728,13196763235784487294
+05bc734b-5bc9-7988-4f82-39ed4facd93f,166299850,13411122129851515183
+06abfde4-62d1-40d1-bb02-24b4501598c6,1394163004,12374912826520167820
+616b2a36-e7b7-2d8d-93b3-5202cb0c777f,2385753603,16696778617041215505
+b68ea690-1b64-f191-6acb-c02039fc72b1,3502653255,15684561956159740527
+06468c07-15a9-ffcd-b97f-923d88b95060,1214574653,11564401433005003461
+ab8bb248-f930-f965-e16e-28216ff86db0,1580205278,13642006280948262768
+76df4619-2239-1170-a3ea-39913280c22a,159326036,805442442688141653
+ab90fc00-b9b4-0547-bada-74f1fe414be4,3736563090,3086561280966745196
+d634b40a-2ee3-6cc8-b068-7e181a948517,4096288637,3706391272498532167
+4b4f3295-0ba2-84d4-508b-cd0d160bc56b,2719990048,2339573087580140530
+c11d4d4b-0d33-3b46-966f-7d36c2878709,3953288463,13848876865442962077
+7a0d584c-6804-bbed-a04f-39e1c5e89140,2632935776,10063244244064464466
+b464559e-96b3-a24d-af4d-0618755300e9,397668975,12517918573920794771
+5ef2f1ee-8f7a-0774-c9c0-a3375a52de86,1307395046,627808352611791611
+cc2b308b-7f6f-eeba-7e38-549d153a65d3,547795552,12244123261085347694
+db3b75b5-d9b0-2eb8-5415-a6fe207f310a,429411403,3716977168515677351
+8fc94688-f494-26af-e8d6-bdfd6b9f9cbb,4142891490,16751048782916155238
+6fd25159-43e2-1461-7a40-8a5fe85dbbff,1536755425,13546158454228850575
+9eb76bb3-a501-b371-29d1-1d68dd63bf88,2750176244,16312459037338916796
+9d087a39-d314-527e-c8f8-c94b30bf111e,130887271,2236685797832984825
+014eac24-1d68-264f-5934-477691f35f5b,1880835283,11250364215734210330
+17c4dfed-a6b2-b186-e93f-190cfabb39ee,3776258354,11902978540766871692
+7283d0e0-2725-61c7-bd8f-473a19f6b6b5,2515882593,13159228495143529964
+8df9ffda-4bb7-f507-88df-1f1c63f3e3d0,875347614,3665217251268296640
+3d1c3d40-fe9f-82ae-fbce-e4d31715fd92,986287053,15428971598973835143
+74a76aba-617f-807e-a792-8107b283676d,119648443,2518843320840819548
+74350d08-65c7-7972-ead9-2aa5cd9adb8a,250697277,2581342817554321043
+c9d71dff-a631-c87d-9d4c-1e0a5e98eedc,2743956983,12252252034295316180
+f0a8e926-4676-41cc-8381-75afcd4e8065,3941580622,10493560683175737676
+7f375695-eba6-0340-8cfb-e24cae2c657a,3539055381,13249533993377112032
+c81b141a-9764-32b1-3df7-59f6aa48136e,781352713,5631215820788636480
+5ac4395d-094e-be92-de53-6b7ec750edad,4203127020,4665709515039850474
+43450d91-f9d7-374a-e073-06092266bbee,1910095972,13975667852453687585
+6462e2f1-f26c-4609-f972-dec04a6a31dc,2640586576,1488087117751702662
+e1bc850e-4d04-f6c6-b3a3-2f828dd8046e,3349768906,7165985474766560366
+2e494776-80b2-ac2a-0791-3bd0dba2cd71,1978764811,4683211066931662431
+dbfeff79-bb2e-739d-d63b-5687ea7cd1eb,4260331083,6684107758096610772
+65c8c152-e86c-c81e-de93-de1c526b1a99,1273147119,15114709657292131849
+e06d45b8-ebc1-8200-cf7e-9f93183bcfb9,1039396624,8749013346098676022
+39c2f322-cdb6-b7d7-5e63-18b4db92e2bb,1737454282,29567492545474352
+b387b9d7-127c-cd61-6a2e-156a66aec467,598635221,11416560822008339813
+6c7a220b-8f4d-7286-1292-2d3aee6c1496,1736956214,3861350835433128206
+6655c14f-0e24-629a-e975-ea19db3d7e9b,944016643,6525978199082418384
+43bca263-4864-2134-a0bc-250f605b236a,3401499482,9950816456406382380
+18460cfb-d20a-8bc1-ef01-76030ca73d7b,1989054268,5013695422299136151
+6b1d933f-8a2b-3b5c-105e-eced2697c1da,2533581233,16501691764205326121
+beb1a1b7-ba0e-cb46-7d9e-43095a788bb8,4221541236,1583602220808015458
+a85cb103-0ecf-0773-3601-12af0bd1dbbf,3246791555,2667473220217851910
+dc1d60a1-2607-72b2-c501-b75ba59829cb,2919836646,5213279221168120218
+f87aa1b3-c3db-2182-af69-8d1aad5cb18e,4048830943,12514344714296165875
+fddd900a-6b24-5d21-39a5-08e9666204a4,4017269119,17371095615984587048
+7d674bb6-e323-6986-6390-d0559ae23278,2715342038,5337745396376862891
+3be086dd-1f1e-0fbf-e820-b6ff98e6d88c,1151750906,12423595351700981776
+c9244692-a214-defd-57c7-380e88a1b2d0,2746109217,1565333234378027718
+d53df044-3fe5-5f2d-c047-ba9e6083b8e3,339074992,9860292449664813661
+82afac15-5f16-224b-4453-796283f7a195,3326253634,7258280151347834032
+7c311635-4a9d-86f4-4642-580b7f309621,2725000597,7548525687331363630
+6e95647f-6821-d463-4026-b0604f2f7d87,4166906248,14655610462278740870
+fb402ce2-2d22-66e5-4e58-737ebdff3765,3023696051,7864170603939078389
+feac3512-9bc7-aa99-e9aa-e889ce4696e6,3612192683,17567464277303663120
+745afdbf-c234-3278-092b-f7f61fb6dc22,3282601278,10991443000042179267
+51712a96-18fc-b198-806d-7c0598b749fd,4028908227,4353600427967838952
+1e08fa7a-a27d-c5a2-00f9-47c07a8ea9e6,1067767196,13157189114733077457
+839851fa-3d54-f0b2-e6a2-78cb24c9838c,2367235702,10936671361993927629
+3bb66fc8-532f-ec32-19a0-596d9290dd95,3884145292,1401720622425726405
+7dfe9b8f-4365-4f02-6818-f0557217a354,4125978446,6711408525737319359
+d1c5b0f2-addc-63c7-d216-49b436ee6374,4234881002,9353093100813198233
+bb113ce9-e0f8-a0a0-b196-b0d6cd31f74f,3973911737,2280449957333408638
+612f9565-6df0-e65d-300f-2fe3b8b6a4c1,2500219152,14300284764912030232
+c3da31b5-5547-2afe-4e49-961d97e1d7bb,99436613,348591435541528022
+24ea1c99-7c5e-2c6f-94aa-39dcab0e3496,1492233045,4881377210033153293
+c98ae919-283e-6f12-d61e-87e9e422c790,3835384262,15260225969097408574
+6120ab43-1cb6-a32d-72dd-39cc343ca32f,2516308092,11132267750708672337
+9aba3ce5-90ff-5680-dd7c-891664c59a01,2052073366,5970997967307689275
+7459a9a1-88f6-2f89-8f9a-53281a3a3b48,1934962747,16668268772097524133
+46cd4129-6bb6-d758-7bf0-1e9a4de5a2cb,3664186395,17050573777693524514
+5967ddec-b197-87e4-a14a-853117386e82,691256517,15348031066459964343
+63d3294e-2cc3-70e2-5635-5ff2b06459fe,4152898834,5510259584523338768
+a5fa5411-67cb-e8fe-e88c-49268c4c8a02,3993491897,7429314764722834891
+774a73f5-5a2a-1325-6acc-05b7e9a0852d,1695428729,2320360595282967926
+e0986a42-8172-0ec1-b11a-61f60c55f7ad,4157351226,1504704437779433587
+3d002d83-1828-1606-3e0d-d48922a4c5c5,3490091417,4618048601928612205
+4b9275ad-e83d-246b-04b2-8ec5685f3c74,3015385364,9244752775608672946
+5861824d-350d-5fa9-ee24-7199ebc85137,2982212041,17494129543439836819
+9bbd6f19-27d6-e28d-7c0e-eba73fd14069,1026785301,13406161933683119116
+d930503c-6e02-988b-79df-db819075fe44,3069732259,7872086208221769019
+466ec7cc-4112-bca7-42c7-e8c936c977aa,1718665149,562933027647644698
+16aeb72b-431a-87bc-6a50-27c22e88fc54,370299178,4621577971438298383
+646d0891-59cd-3941-54fa-cacae71ccf46,1974545373,4221035296235832306
+5d99838b-9bf6-4347-1fee-d1266a1ecab9,1578380873,8383161198260176360
+14f955dc-59c9-996d-9c1e-aa4db9b50de4,712969662,1420393924533833896
+61545acf-8d54-e124-522a-1ff68740b721,3051042311,7126702888384764393
+6951b7e2-0724-ea03-cf9e-82d19e3a8996,378346752,3086269594127652120
+33624ae8-193b-77a7-85d2-c01c4db02ed3,91248123,17131773398531897224
+c5ec2be5-e1c2-1dc4-e210-e942bb6056c7,792058616,1092376790142143410
+e56665a1-0337-41b5-9ff9-0f20c717f50d,3978839247,7234883697373641494
+8816aad2-38f6-92a4-4fe0-898239c5f69b,3534286063,8873249648164134350
+81a8befd-0799-2271-5ca7-d33d9c93fca5,2955301082,16452535860391162225
+0a23dd53-b560-dfba-1570-bc75964d66d4,2385940903,13501452489182158102
+16e9a0a2-8d0e-d86f-c2a5-80ef7cb55a97,3098750985,7164120534968578786
+aaa4c122-d7fa-31ca-d9bb-4e6d7664c914,714592581,5735262706843172822
+e55e411b-3d9b-390e-6ce0-1b13520bd8c4,989186906,1813122465240410499
+b5d5976e-db77-f768-3ebb-991f2d45e80c,3450484980,3409223620818167096
+644b81d0-afc4-ec04-20d7-ce5dfebf8b4c,2131821153,10482508860971251892
+5fc54661-28b4-10bf-c8c7-c5f0a2784f03,2687774104,16021409694667199701
+253e7462-1977-a053-56cf-bbbd286b7198,3956629495,2230390426589230950
+741e7530-0981-0bef-5c44-494083fd8cb5,4035435721,4659691862641763166
+692f1f95-195b-522f-8f56-6e078d44030f,567156096,18137827913359967429
+d2982cec-dfdf-061f-a90a-4b3ada5d03c9,3196437557,9361491000639249049
+4eda6f7e-2b95-0790-51b7-0ede2c7cd5ab,4037713210,14655953897577871872
+08406c24-6b2b-b90d-4ff9-3bfd249c9f2a,2013180780,6343278261747730
+676ad9aa-9ac5-8686-b2f3-db299c15e04c,1674137843,4796072752448700611
+b744aafc-b870-55bf-7d13-ed1c5a32834c,1661232926,9499103514647995060
+a3b9acd2-9a57-ee91-d31b-b3150ce92a53,3694676366,4853667163186572186
+f5b5cf25-b0e9-f8a7-64df-d32c63637e22,4109168633,18291479116639608423
+67c1b378-2db9-269b-2592-f5d185cc8ad4,1772259497,9623371011925773863
+44562a37-566d-18b3-160b-ebe6d3174362,1872145630,9848633363855552636
+0cc45dff-d26a-2ea5-9426-09e2a5ab76bf,2188941128,7506701185782440449
+693e3c76-63d5-cedb-08c8-47c023f6323e,561081703,18090452396203553013
+ddab5202-8a8d-687d-2312-f4b0204cec08,790945406,6182705896053632259
+2a4c530a-e224-9aa7-bcd7-499283d2b2dd,3775520024,1138583752587437585
+8cacf1ef-3cb5-b6dd-3151-f864ff2fc42d,1341122615,14923892039056467899
+a6458870-e71b-9627-768a-1867c6a4d217,2861587035,1373103494084595347
+57caad97-a64e-d184-a0c1-10c2fe1e9470,3330902335,13885633380694705286
+ffb283f9-5413-0109-f97d-e96fde2db677,2597541337,14126465544931953471
+92d114b5-998c-64a3-0cdf-d7072cf6fd62,1598231560,14153537126670553579
+0051bd47-c657-3aa7-3c40-c775927e92cc,1975419238,5894797139380774743
+73712853-e498-bf42-c345-6acc36943590,2173076570,349711698136463955
+6812d3ed-05dd-2856-32b1-30246a1135be,1452966694,6775718983177881980
+a9bbe205-1d5d-105e-f866-318aafbacb2e,149028272,14138090031499234737
+f967c2e7-818d-0c3a-e70b-ac1c26e08767,885784409,12029719546081089735
+8615731d-a1f8-be59-db90-46f1ebad59c7,2268956772,11863671694586775854
+7ff5a68b-731e-4779-dae3-2ba6793f78a7,3075343073,9268568802235601189
+a875984d-2c88-2d28-a932-a3273250aa12,3799454696,15631294141042619596
+4c3a4157-9b4f-5f32-fb31-87d2066dc2b9,3844512950,558249234478953027
+5ad3d3a8-40e1-4f3e-6102-35a74dcb883f,3716785414,2264674568796918522
+e898b0bb-8c37-791a-11b3-d013f8e43cdb,2157754798,7231625349777494865
+cffc60e3-0baf-9258-2713-dd108c45b458,2963672664,9260551819620822846
+80a579c4-2503-474c-647d-d7dfe30ae284,1353123647,3481506106893658414
+2c4b04f3-2dc9-9bdc-3ce3-8c41b5092bc0,1918489081,3893138964324239380
+fd1d4525-6b24-649d-06dd-77638e82f4f2,1271354686,15301318363443984763
+3ff17a3d-fa0c-5754-cf22-8c9db1a445de,2841078824,12165269490622750356
+ce8b385c-f5ce-6f7d-702d-00271b48654f,1246886657,15407626672795637298
+03e6b376-8343-d12e-b5cb-490414bf20f4,550586554,6453453311557495516
+d9a698ef-3701-db9b-a0d4-185746093efc,1736454887,1314466172207145618
+50f68122-655e-44f2-25fe-dfef4fec2e1d,3724645854,4336399874524840705
+64faa2de-6ee5-6871-ffe0-5760ae8b78d6,359335664,15035857731401996993
+9f2607f9-d85a-3bb3-ea4e-d24de18356e2,87919701,631268443463483517
+e9147018-4b0b-df81-2c52-94e09deae92a,1770058345,16124702494687347060
+256e8156-69e7-7d6c-c47a-9622d7765991,3975802841,11407747878963558640
+d532482f-78e0-2408-cf7c-562da88c6162,3399027785,15037287938479266301
+e24df2b0-e6a6-149f-d09d-6994332e41cc,4145422985,17380396450363199034
+751447e6-1325-0fa8-88f3-00ce96cc1993,2808446427,8773440606309839131
+9e548fe3-5251-6e37-005f-69e66bf48640,1098919785,4290625069457465290
+6df09f8a-c7ab-0f03-6651-738eccaeeb65,660900028,15281311016321243173
+8e70cc8a-b102-7531-ae18-97aa98ad0c9f,3701725704,5964699109377120916
+5b6289c6-f7ee-23c7-6400-60d777cfe1c6,2021393936,7179655054747457983
+f3bdb417-b807-9dc1-e84e-0df2898b593a,378298515,14635919142888038231
+cfa5be32-fbc7-912b-780c-243e2f623d38,1128068313,16138233179231608970
+ca5778b3-b4dd-32bd-5071-94eabaa349ed,887774983,4162655462768512237
+a7d50124-a608-fd89-bfb0-a0f6098cc860,3358437267,13943249789828679600
+5c477b0b-d75b-923b-8dff-031f7627bf9f,2647120698,17453473441362723611
+35554bff-dab3-bd23-1c35-1df4ed23f299,3806637575,4707137179740603387
+8dd5bc36-f02a-ba51-df28-ec56244a511f,731158605,9013697140510328233
+7b7d3cc7-4fcf-d028-d25f-7c401f71747e,2143694697,6518140547856751848
+78e5ff31-601a-013b-fd7a-88f9356cd120,1818733910,14273341309924723712
+454df1dd-3646-9af6-25e5-5326488bac4e,990954995,161056470153703738
+5bfdc6e1-080e-87ad-7741-fd03eac6f762,4250149843,758440047409503849
+35f343b2-5375-c8e9-8ee5-b1da1eafefb2,4183615011,16547573252108336996
+e4ecea0e-b2d9-ef6a-4b41-2351b6e376c5,3031401735,16409299102339678239
+4a006d19-82eb-0986-3c12-e0cecc4770ec,4283041956,13076758379973253290
+94c48075-2a8f-6f43-c7a2-7085b27bcac5,2879350342,8895926117342823216
+32f48eb8-1047-ea6c-12c1-b7f469574120,2166839798,17885712390507866305
+1563b76c-6978-6b89-6ef6-a1a714761534,4137015145,18270072461991236229
+e2e0d84d-0953-bf30-da72-cfb4b4265876,2345985189,12736908737852355456
+3d1ebc3f-a895-3645-f1bb-d061c72f1678,2494309306,16714876332591060268
+ba165622-72a0-b668-34d7-9525bd4598b6,3627674546,11294235699386533124
+a33c0fa2-0c55-3037-f0d7-e241f3ae5846,1357269234,14238572461524179144
+19a9db12-a355-f26e-696d-2276ec386a29,3766233265,12397786322408705585
+3f915a38-0d9e-d6c0-5bb4-7ca0be25a330,3403202745,2987352016260884855
+9b0e499a-26f8-8877-6398-1f24a5c50f03,1031947165,8758897529340610630
+79dde890-5a1b-5dac-d3fc-d86901a61ec1,2584791025,9660685141910810745
+85e97595-c0f0-0226-affd-8044db794565,2257301309,89906711362254423
+da37877f-3d58-0047-69ea-701454619b0d,723292780,7137916397402803784
+8d653184-2889-ae00-d62d-64c93e2251cc,1947725401,6300681788519405375
+c2c3e827-1dad-7d51-7455-27812aa4116b,4220575688,5502812111023190285
+31a107b9-7003-712f-e3ad-62980c0a0e46,973291110,486247648734016335
+4b85d0fc-5e12-02f0-29d2-5a5d27b11c42,946320228,1783085857965386388
+ed78428d-641a-ff29-e4f3-903d87da6727,1680764779,2058503287700907198
+98b4ba70-7bff-6cb6-ea9f-d1521dfc016c,2874027605,14693346538775757090
+bc85d559-0fef-b2ea-3926-09efe3d7d3cd,3320799038,11813535015189787764
+42f74cde-23f4-3e3a-c0cf-cf8ff05538c8,1432778916,5488418207766217708
+a067f5fd-ee77-3c2b-3ffd-a16978fbe6ef,1833577220,8524188171223949010
+66aa9075-5be4-3a3c-26b1-8981760b54c4,1379071153,10643298205098554063
+770bc35d-c18c-9cbc-bb81-1e27823c2aa7,8330391,2895880503259177873
+91a4e8e9-6da7-0b60-5deb-6a243aad1d56,754609979,11684844698053722260
+393fe1af-39ad-2d64-c0ad-343a52762b43,433761120,1920572168579982801
+9abd14db-9661-af9e-d5fa-579d3ee38ec1,3573711794,7775625553028019344
+e943693b-e6ea-af6e-a617-b11d95d52bf8,2198340717,5118985722923707616
+fa01e02d-a57e-66bb-9334-d14c0c8bbd88,437281244,9894239178532748761
+20c531c7-ec91-a548-e5a4-99bb3b1ae1b5,1559000905,14281387505200512559
+3a38df91-67a1-cd09-8944-b1c4e1e96791,301699920,4965446415201748417
+cdd5fa0f-5cdc-eb59-2f00-6900687a1e3a,2857200647,15361816200755888036
+e33cd110-9f48-5f0e-3f18-56d8ae1f1ff7,1552776851,11856317919656709502
+ebcb40ad-6ec0-65e0-670a-6f9b58b98281,142334011,12620461814715939701
+471e8b95-c820-4d3a-3dab-c36e45a9cf6f,3821536150,1753544321685781593
+9ffc7fe7-6b6d-4bb1-8960-a0cfd0f9deb7,2678889556,2441328311759518478
+d8d3a286-26d7-a5e9-bf1a-764d9568a6db,3199193793,16995671390218563511
+579203d8-74b5-0c75-cd39-e77645bc440c,3044480810,7205746229194111678
+ddbe595c-4572-ff6c-0552-cd3769a06327,2353178917,15229911037407821919
+8b5fcf46-43fc-b060-20a5-1018af99c732,1977383589,7220720326295019865
+9777f4e1-7972-4988-a0df-daa39d346b98,420483207,14636843907644790961
+cb30185d-9597-85ad-a28c-37c8a8c6bd97,3401213871,15801923092908143548
+514ed029-4b01-2d90-1d70-63f3bcdfdf1d,3835057257,12287190690150477358
+4e201f9b-2600-a065-9888-fedbdd49ec76,1715335864,3703203317853385725
+7c45f6c0-8c8f-25c4-6486-d48a58ef35c9,3115875956,15929235488039883444
+b530b427-0b9e-2582-83fc-7d73169c5af7,4050742258,16421814305359530667
+9c2e1c97-63fe-0fce-511f-f04b0527b693,4155006139,5807221990249365113
+d55c1151-78a0-8350-f916-e4d8b260edff,3230242625,5094960180176927766
+1d6a0749-d7c9-dac9-c734-fb290cca2cbe,3960921007,12760469093069599065
+c03360ca-a9ce-1af2-ebd1-d6da400b7f1d,3033864626,15033501559433762267
+46afbb99-d83d-533e-2cf1-cc7931252802,1163071027,13138430161918150691
+4c674da1-85a8-981a-61d4-f11eef7d4aaf,441432071,354009700271667138
+6a867a33-8a95-e87d-cf53-14cd3523b84d,1308802765,16098279597866543605
+8ddf3712-2eae-c677-6094-f61deac72a22,768059989,7314376221280753732
+7eb86fe9-a0be-f922-b48d-fe5c28dd4ced,2821642931,12024624922541535163
+166c9213-51ab-b495-7a6d-b1747271f690,2538398340,374026372543948905
+9a99c3e3-0700-51d5-e114-3f685a2dc469,1761709221,17035677266834605293
+fca00cb6-672f-6987-8304-2599080928c6,828192010,9208705069897854512
+f0539ff3-be31-69ef-b5a1-6414015fe1ef,2795656597,4645753058260629633
+8c160b75-ab88-2254-9faf-7d8823594852,2417700196,5732488617652418839
+75828d70-2fb0-68ef-2ecd-812586cdc8ab,3921120145,17602070899248587739
+8c80d992-321d-33c9-d538-abfe71bfd970,1844399206,9881577020580777698
+dd2b7784-e65a-c707-4539-808eed7d17dc,2615538320,5636276028327949174
+32f32655-ce4b-aef9-414d-ae40e2dfae58,1674326895,3663029652693149600
+663355a1-6504-41a6-df5b-f6ef44c0b470,4030132637,7440730808810717022
+e2179c01-83cd-ae3c-deff-f20eb05e7e81,113179362,11589465476576209905
+e9eae80b-c425-6e4a-df8a-c385f1f86a49,1707918999,11202737600232192840
+df21b197-dee9-978c-e480-32f7a94ea67d,4193941700,8144113580011821718
+fa89c779-d987-f291-e92e-894c98f2b5ae,3066837096,2780828111197406432
+23c9d018-7f1d-9748-3b87-9473be333c6c,4248822502,2393892360828580765
+d1a444da-8ab3-1ecb-7245-96d3a0f37532,135662781,8861331172449577402
+62d2ad3d-1167-435b-d374-a9ecd1057e3f,1753495660,16396521636605401085
+b22d93bd-2831-84a7-6239-aa348aedc6cc,4109114776,11549924874896198270
+e5a4869d-c8ba-d2e8-82f7-93cd3f27343e,391118152,2656184526055407646
+76955fd6-56df-964b-f472-a377c2d5f094,3781088725,8053914408789349392
+1fbd45c2-eb0c-75c8-7e4e-f5c0896fa1c9,1285376676,15394666540337712409
+49633834-61c7-0370-1a58-52af5f588ff8,3204588150,6119554355110449588
+fc5a023f-6fca-ce89-d6d8-833b5c434eff,2616933434,12858200126293481497
+b7c71f9a-f6f4-fd62-a789-7b91bc57220f,2689023764,8853549926396807035
+edf73d3c-14af-a2aa-28dd-9d44c006bec2,2330328049,3374428623060479915
+e3b7d5e3-03de-28d4-1be4-a738620fa746,2629814194,3407357171188902922
+25a5bb30-45f7-3072-5e37-3d3a5ec77e92,2441768724,17388824223184715222
+9c6fb377-e1e3-f63f-bc2f-14d2b43d0c3e,588422044,4675995874268039204
+98b09974-9adb-2c73-f934-c1badf06b137,2784421253,6839872659216193438
+d02d7a53-4efe-deae-b6dd-3817a20112c5,3270931515,17652579445321051089
+2c23a5e4-a451-e5b2-cef6-5aa4e48f3669,1254502934,11818446127792471827
+118a2800-5129-8457-a2e5-02924a1a87cd,3154264221,1048290928463544041
+5c7381c1-c345-51ac-cdb1-dcb24cbe155b,2305291386,8314460297653246886
+ee63728b-0348-e486-318a-b3a4b351da22,2366038090,4672428818513729233
+9e9b85d8-babf-6c20-62a4-29f84eadd353,2903676754,17795851284015326741
+3067f2c4-4343-8252-9611-afa3154f925a,522382098,16975767821399742004
+2cdd35f6-f570-d34a-fd90-0ff8297c3686,1551799405,10870315010025728100
+95d1c998-47cd-2d25-841a-f35cd0a1724f,273922025,9640544641448837321
+bc732646-0890-4d00-6828-e092a943b7eb,3139317116,13734474682474752142
+7374d445-aaf4-0739-8419-e479450781b4,3064094249,5456283130922351634
+bd89fcd7-a214-de23-9ec0-3b5f55e0cb57,387248242,1321146131082530896
+a2e18820-dd59-f96c-477f-69d07311d786,1343199724,2269383114025118342
+0c994490-083e-564b-61a9-467f1ed3e6cc,1960386273,13316137762508829528
+dac1ff91-ed76-6de4-028b-2bde9b33bf2a,1666727917,8328660990841172009
+eeac803f-d2d6-7443-9e0d-58261e49581b,1589834801,15651071473725860259
+58316310-eda0-8b07-3d97-98c7d0eef5b7,3243546188,13944448171869380507
+47d7fc7c-4213-5f06-6b5f-4d19ed5eedfc,285399653,6753921708767627766
+83054992-9103-80cb-2fd6-fd0acb39f529,2642544011,14295118242656845229
+bc4a1820-33b4-88a8-34bc-2ba0f9f8bdca,3033837579,10096246253198918437
+94353631-1b7a-f42d-824a-d5a38e7fe073,2500489542,15164326296650749046
+79d706b1-78ec-b254-e911-1b264ab82cf1,1597416599,4812497858431455423
+63b2e69b-daa5-9cca-29ff-e33ee4a76763,1576751356,14968800477017237611
+5b6b0417-c098-67f4-041f-9f83fbe7f46c,4052099657,16445342979067534173
+686c5870-9711-15b3-e825-e35dc3f1918b,2686756427,2733414417042543943
+298ba4ce-d05c-e72f-2fc9-631363e51c49,2061087632,17997861691329348484
+2cdafbde-9111-6234-1e28-6603195aad1b,4216098783,17969482546113237226
+5604dd1c-07b9-9754-5b4a-62e7fd05faeb,1014241713,7040725777863344870
+65009b7b-e013-df83-4e25-e3a668f9221a,2569229803,12725118386149007953
+7af9ec68-c18a-db4c-0a4d-eecbc7ca60f7,2418505886,4723901059151503601
+972f35a2-1044-4f6a-2d33-df8c0eda7fd5,618149870,5902177064192818707
+3c9021e7-29e0-4669-cdb9-88294d0e38e4,3134791605,9449683172472276563
+90b39522-d668-52aa-80cb-8230dc57577e,2525069499,8385919716467666233
+ed1b3b4c-a367-d5b0-9d75-a67f8fe9cb4f,3870003606,16754166381232895721
+d8aa3bfc-9591-ac85-ad27-f2e98bbd1db9,622622372,10427634035880701299
+1be90ff7-dc18-614e-5b3c-435b9656289e,276453936,12698037067869332809
+0e7961a4-06b5-0195-0a25-30131fe0668d,1501158308,7529443573172448048
+d1f8adaf-90f4-0a6b-27a5-a345e35b3ddd,3840377594,18040407189634256203
+03b2996c-7a4f-d878-5bca-51830a7eb10c,2279278799,14016492812600631279
+6a0ecd55-dce3-975d-2490-ff57e4ebef21,3551843005,4737700609703608017
+6e032c80-dbf8-9695-ede4-7e73af3b4355,2740023463,18248055636893368455
+d680a0d5-a602-fbd9-d65e-dd9b9d5b2768,610111630,7420432604126643549
+ce5a52ce-8723-1b89-2c3f-3a90064da211,4239790945,14933155368783874003
+5aa3127f-e761-a479-4330-57e986827d74,3994243560,15330890411410323003
+20bba18c-866a-2d12-7970-3d381bc8ac0c,1955834130,11562766430126115934
+a4fc33b0-f54f-3c95-f88b-2cdfa1a74bba,3830460611,14544519193505993566
+9d492999-dcef-bb92-a974-ccb18b86b532,164436327,2888288235429723879
+584c2eeb-623c-0378-886a-ce50b4bbc976,1028526043,18211975158915944604
+0f6bc9f3-5f2c-8397-0f72-fe1fd269266a,2903611383,400725779903336614
+b5330fd3-c0ca-5c48-3c24-32692b0477cd,1893661585,11769737948074381267
+a92644b0-f6d7-ae28-cdd4-53557b98670a,3394229657,539760997481987903
+ed83945b-2057-d4f8-7289-143d8cdee19e,842800412,1981237052106055239
+eb843538-bca0-a4a5-1695-e322389ad233,1655341850,5958466608684489471
+b47efe7e-6cd2-d160-65a2-ad68fdc35f51,393655638,8462911671455226490
+4d5b9b60-5ba0-1d3d-ccf7-d16a751a770b,4104204795,9828856177683781844
+b41ccad9-97e1-2661-3c2d-85ca52e3a089,733839827,15927534102367005993
+ad204aa6-8339-e27c-4e00-c4288e3fcc28,3947852037,2218253835799869984
+83201e60-1e75-bac3-37f9-d996c9ed72fb,2419065137,5411096931621043783
+4aaea496-d340-c29a-2ca4-db33e73adedf,1794035526,16532512574075610301
+dfc77187-0a7f-8bc1-d563-ed9e20da42a7,1510377032,11260145086106700794
+1356570b-36af-afcc-00c3-1161096205d0,1190945889,17022091982785869721
+145a431f-5d81-3bdb-e926-3e1973e97154,1726896417,6310422970795751560
+3c0f6c39-4776-635b-4c0f-881ca8cafe7f,1779019522,7658662047969367537
+150258d7-ceee-c659-b533-2a724b045f56,2208690731,13404734053564025986
+1df974cc-a018-08b3-a37a-45814d729195,1749431725,7738613005928939023
+aaf9f2cb-353e-77a7-7257-aaa66ab44acc,2722447796,18120481679630534968
+843584e9-e1a3-5ea4-111e-281746c5b40a,3789462227,17502472054035040415
+7731048e-904e-e9c0-3ee1-655ce0ee560c,1850713253,16981930691423826782
+91e9d4d8-7cb1-beb7-917c-03fe484ab7d0,1433141624,17224582988429297282
+0e5078c3-f6cc-b385-27b8-7801cc9de963,2384268139,11754067905599028754
+8b910727-0d0f-a225-ed2b-14e054c5cdb5,1834106559,14315659897144598987
+b46d68f9-8a3f-155e-717d-6c75f91d7286,106792816,1237399316996409978
+56b31c0e-482f-28ab-7f37-6e8f2e6910b7,3788084800,10913608332338807730
+dc55a609-6ad0-668a-0677-4cacb0f5be2e,156322814,9951900676124017685
+0290519f-d3b5-f9fa-6102-1fb80464920a,3889720866,1612711018025913761
+70489ad3-f9bf-9b1c-5193-3387968cd06c,3379484478,3728677731692745097
+4fdcd9fb-1efa-e764-63b5-4d34c7f78464,2586512825,17421178466671114142
+a012b9b1-82a2-1918-81ce-f0a6b1c45ac0,753725839,10134549410813951088
+51e4bd90-fe34-0b82-fd13-8c411e5d4dc0,4073969036,1238264220655878267
+94c56f0e-961f-984a-94d7-deed1305b82d,1073062686,1122414475627581702
+1820eaf7-4719-2cbb-b566-044274aa7526,2337716102,4992190255556740402
+c63972e8-084d-1f38-f992-de6b873fbc69,4204701242,13555765670028920449
+5f8c57c2-a4e0-df3f-c40b-9524571f5868,2166444986,6779039200731056911
+8851b872-672b-b93f-bead-8a287eb2cd48,3674334934,5894922747251713074
+a6bc4954-da1b-71a0-4918-f8558e6592e6,122414411,9858925981706956813
+a1452ba2-469b-92ba-a7a8-8f7839bc1ac6,648314672,776838336653174322
+8db0d201-c171-01c7-a503-e7a4d5b15e67,3017894433,15071616796984815060
+9f3d076a-11e7-85be-d614-f2334b66c5a8,2120118569,13478860272149378776
+e9bf4205-6a7c-b0cd-2c4a-b9e547973a2c,4177029344,8795828797470747490
+9a9a8727-b49e-42aa-21b7-8029b3f51d4c,1012030823,13144773953515053642
+ec69f94f-59bd-c21b-5b89-1bc23544006f,895431356,12874219735191173240
+874125af-218e-d2fb-291a-1bd5dbfb03ce,2349527602,13416297185930684437
+c42c4ab1-d162-4183-165e-8a08c1c69d82,776804529,17940837542265838226
+7eaa2d2d-dffd-d501-1cd5-fbbc590698aa,2242786519,10071870484381745862
+d7c2361f-5a99-1c57-238c-229004a0ee5c,98709861,17077263437373354841
+dc093993-a4b5-64da-5491-a7daeb459cd1,2212100885,1999330135395513156
+1292ec6c-3288-1525-30ea-347b48cef383,4065722912,8903712602182408849
+dbdc6563-251b-e87b-48ad-b8aae61955e7,3498948823,1814885847352871605
+3985a8c2-1ca4-eb34-29ef-d103cbd4d9f2,3180275390,10223797895898908553
+b83738d8-8c65-a449-3c52-aca2cd2bf6fe,3095373729,8889336925685751035
+ab9caee1-dc14-8887-15d1-373d762679dc,1708118807,13532750706089043554
+27eb101e-4611-8320-32eb-8d830cd0d165,2912539620,14640217329750209885
+3d43bfb1-c8d1-5d9e-ba42-899178043479,2982311196,13448749391502558574
+86cba120-ef36-8055-0ac1-e7c59714e47e,2256719206,6322760745498449874
+cd5a7528-2c38-22ff-2cbc-11c7fdd32976,3652744870,931765129527702458
+c5435803-e517-828c-5a9d-df7aabcbf08b,1026964162,14088400814101307894
+e4971707-a73c-ae00-2507-416f1e54297b,1313074457,10982686912723457438
+29899e0d-6feb-94d3-ef5f-a743ef48eb22,37860592,17890250848710532550
+fc62ec7c-4554-1b29-0b35-10c6b8e063f2,2192291848,11036861094632791007
+fdcfa7e3-ded6-7d55-1e1a-1e62534185a9,2146908323,5681318756822965420
+0033ce14-9347-a5d9-4fb3-03414f502bd2,680856948,3284039396938403533
+9d17df89-c2ab-327f-1110-f55c2821228e,1230929592,3415239786219581715
+718d3419-57bf-f3ea-f2b4-456b4395aba1,3794692810,2723253285589717704
+acee0696-3244-484e-776a-b1365634c3b2,2930867510,12554981633991559873
+64886fc7-2b79-b900-a8cf-47c04c21e099,1970172783,4311936137305631117
+8436ffef-c771-8abb-ee69-5bbfdc3c1aa6,2590733758,12385929283063266284
+11e89429-d6b7-f085-016c-665a3a6ffc99,2856906663,14622052157068306377
+b4032176-2f62-93c8-08df-c6e324d1e1fd,1078313308,15478309672989784187
+b8783b44-6e24-3156-e250-f3211fbb320f,2588560052,2838580497957124787
+b35aa903-5a58-f504-3323-88a3a528db0c,1762678956,17321042061918985152
+4676431c-04f7-b1a3-47d5-d3d32b50431b,3696267940,1981829540681299385
+4e41dd4c-e84b-3c9c-ec5f-e67bd8c75aac,3492206068,5100603777864941732
+51e7bbee-a07f-aeb4-7eda-63197663d2db,4012088425,10607386475315512996
+0d18fad5-7bee-11e2-cb59-4be49b452fa6,665035539,15538601852462115473
+0d447664-20df-d476-c4ca-2150c09973ac,3740264590,10040647131854883491
+a67055d5-0c8e-aeab-6209-79906645cf18,3533128497,15213060309152899528
+b90ef3ff-58ab-3d7a-fce3-145381180ca6,2694460703,8306677152468225839
+0bc016e3-1d4c-7c2e-8cc1-f786243062fa,1679536736,12341344600459134236
+114824df-ab99-be3c-fcd5-c2db6f48a115,291546190,8462409038694929234
+8142c943-fb36-95d1-f382-2e705eb985c6,525600188,10554038602962925859
+ab23ca89-540f-4a6b-53ad-7618a9c73b15,1389279204,6395165988636358064
+3917dd61-dfe1-a062-7571-eaeb5b6a5c2f,3248375742,2709124818640596772
+7b879dc2-3976-d14c-e574-23aec427d367,1912862527,8224234084876637813
+1691bb14-b3ac-f535-3347-ab5104b9ff4e,2010870458,4411131836726619819
+170f81ae-6042-d8a3-fd9a-e3f79aeb78b4,2735540915,1816277819740815337
+1b0cc495-f3da-bec4-e102-9d2bfd516933,3219104615,3732714159949130694
+e6210e2a-6838-7395-ec0b-571928008e75,2341323748,8457431782740427944
+edba9e35-cc96-5067-46ed-b718159c8b85,2284082507,3597434640945149692
+6dc934ec-56c7-ea1d-0d6e-0ce90b74e7b5,2129307751,7042695103125488890
+15c04468-b1ee-842e-f4d3-4daaa3baaa11,3128018270,5206845722635260607
+06598f1d-c4b4-e0f2-b907-8c1133a27c75,2565994364,13508164317824482766
+21efa46f-6ffb-bfb8-e7c1-8014d3ac76ee,2573565881,6601983663639340832
+7267653b-55cd-ec3d-1424-ea59e52a3468,2817174807,11991854249813302165
+e8fa0c53-04c2-2441-af9f-8aeaf4f767b0,3949223933,14419854682683680859
+f0ba7ec0-9bdc-9d6f-fc52-61b223e24f25,2913608972,6944621253834999812
+222727c7-daa9-57dd-ef83-3dc19334f400,99563833,5790839998069662716
+bf88e7c2-08fa-4ce6-5627-19de32b885ea,4093158110,15709493641384889959
+55a8cd75-4b4e-d0cf-0a11-8751d7cecffe,150189125,12497623253536184886
+c7cb32f3-f220-97ee-e110-79afd0703c63,617392096,14234723757539277929
+15856d4b-27f1-3c14-3e28-69e1ea0d80e5,1464773314,1198813030049534331
+f388085a-c82f-1b58-604c-3b7c9f90fd18,2610750550,6079272702121893251
+e4391e8f-73fc-3604-5c30-c6377497ab4f,2867725075,538444357450414925
+e00582bb-3c80-8c0b-381d-4e9d0bea0e47,3163655471,12735360500961688277
+b66ac364-02b7-fa5d-ca1d-4910cf946ad4,595594088,4504897016049985585
+c1645f28-eb40-c8ee-935d-8c14dcf5da9c,4238834708,63932239989208053
+7bff6d34-d6a0-e3c8-58f5-de5fdd3040a5,3425288228,15624456635327353190
+6b7b038e-fdaf-e858-1754-3ddd8ca73517,4141977965,12932037783628103560
+f0c41f82-c205-2904-e270-fb0ec939ae30,1575941325,4757110298034695286
+3805d18e-a712-5988-8e33-57009bc52691,2083512353,16750239424296020738
+5ea42251-64d9-3606-68d3-db76aefb355d,1233689517,15388610146437356151
+6ad76194-3c3b-71d2-5014-737034a92035,3820560385,11511314091143747313
+9fb220da-3143-2de2-d2c9-05b52bfc102a,172905173,10891054300211607164
+3e73170c-7f17-1fb4-b0f8-4b2f297b2d4b,2797528122,14599472566465713450
+234ffe32-9e07-43d5-c54b-258b73977371,678984383,16678640197403419336
+df171363-a1f6-cba4-dc3c-86419e821f03,2094861572,12754003023404656753
+666fdc65-d44e-4f87-188c-3fb07dae6238,2036998233,2208059664008843979
+65b41d75-0ea0-8652-6142-dbd1374c0781,2039863269,114361797948409883
+b46441d9-2922-6c93-022a-380f87e5078e,4228049480,12468768410370541237
+0ad681ab-36ef-33e0-7853-37c5975d5b0e,4168085854,17898381183383783589
+d24ad490-e6e0-86db-3318-10ec96334247,1234439058,3286746978980446871
+f57ef1b5-cc2d-a7b4-17c4-0fde9d744753,317447979,11457561464231270508
+87815abe-d81c-9cfa-d0f1-27e31f4c1565,1164632209,4445140813221455631
+fa98e4e7-5767-7de4-974b-bb4ba414dd4a,3097155177,13827929928406658640
+0700fa25-434d-9b0a-a593-f0ce7e100eb1,2669665921,9657275645498718150
+5ab4f272-c025-51d5-937d-ff2674ee4932,1369104263,9688411251544976931
+73649819-a6a3-4883-3d39-bb821a82b98e,545552887,16797900010934700023
+ca06aa52-c827-c5c5-a71a-610828f75604,571082519,16223013315855066079
+b76a5d18-27f0-9c7e-3fe8-daf7d6fbbc26,2413329006,12253692194538022186
+2b1213d9-4939-3c51-4a8b-590068e893f8,659122439,7276481711655638370
+ba2b2511-0c2b-273a-43aa-fe7ff1c2f91c,930042458,5056212863478530034
+5247f779-c5ef-4568-7859-60e86b45370b,1794136239,8830595292166260748
+79b7a151-a49f-c95a-16b1-f708e4da150f,862965446,17312347436254750332
+69f58e68-577c-4447-265e-19dd067c8a94,3513462594,4465476552208244643
+e5dfffbe-a291-59c5-0995-7108a5cd2edf,4213678587,5039029128509163983
+525b78c8-93bc-e4e2-2981-dc341cdea05a,2753017971,17879926560387455570
+4bdd8f0b-0104-91a1-3590-dcdc6cac7c2c,3637998347,16485616759872082988
+abacd12c-572a-2bdf-bab8-63a27c7e03f1,1077779150,14598077148138848962
+fe002997-5d76-9871-3429-c63e916269c9,2131023812,9211598016633310018
+069fdd04-d6f2-7653-6bb1-97b0599785a3,306796984,1030579805451557500
+d901b27a-d548-21cb-ae6f-51b1190f0fef,1239250082,3095442917247666017
+cbd9862d-dac3-cc9e-5693-41f55ba79d7b,1877959429,12582367143174624635
+a573609b-0135-6bec-407b-3c8e87b8f6db,4044967455,2340175015923530706
+b15633ee-440e-8969-994b-5cbee90b96a5,4212743128,8264400221923025398
+042c3f0f-7e31-6925-e062-cd1d34095528,2819794532,9947102038086599648
+eb7da6b4-26ab-182f-0ffa-ce4955c9a257,1334511828,17374566415268583027
+9eecdcb3-f938-c7a0-4346-835ba3f94169,1614230623,12426773716260108472
+3a622882-22ef-1cdc-c1d9-cff1bc02262c,1522281805,12416419822670776492
+ce25d55f-fcf7-7a29-47cc-c8b0139273c4,2491110633,5654994584467821761
+5291f4cb-7673-65f9-e09b-63dbf033e485,2022194724,15374059405275574554
+5518b54c-b6cd-3bf9-c499-a858e8ade607,2673146388,13058612748861134787
+53c3115f-b4c0-a7b2-777f-4bb1f48ce70e,1266927806,3449672758014718892
+eabd2f7e-52d3-3813-17fd-ededc057405c,4067059709,894692641140161625
+e9de2e9c-c43a-0a52-dcf9-f59438ad563e,528828958,12815328713573586992
+ae56d28a-1cc3-a0bc-bd92-af994382fd85,100026431,13627465480334467820
+736a0cb5-ee86-0dd5-13ab-f40eb0505525,2916372527,1342849634523523809
+6c5bb498-a087-e2bd-1b00-7dee6fc5f497,3731529601,17127150151966624177
+897036fa-cb60-3674-9727-c1052553ceaf,4105737368,165918866661443825
+1317bb41-fe07-127c-be8d-7fd927624c0f,1961291647,308519794562021533
+b239f849-ffc8-7837-834e-3d807ad2fc3c,1765115902,2077446057433424423
+767e952b-6391-1d72-0d7a-6f12aeffb00e,723733780,11842756580015299994
+078ace60-afff-7ded-fe88-34349c62f399,2539749800,4198825910797481711
+67670f60-8c3d-98fb-88a0-1c8a620268e2,3957345859,17680698392919711784
+f4b3b000-c768-b375-11f5-df8c4f40742b,1470881126,9801332950394511584
+562a8541-c9d3-d9a3-c67b-4d467cc3d767,3495630217,3502095019566485640
+ec6c1224-fe2b-a136-ed29-cda186bbfa7f,3742158614,13154470241302292254
+e0e42d72-059b-796f-1754-79de7989660a,3067918703,13965147876729383085
+3da6cf9f-c46a-8526-587c-a82036113433,1253538684,6948851245006667356
+869a9940-e95b-2db5-f47f-212dffc68d25,560778912,10932956667427320382
+976d9ba4-f297-1b96-0379-b0f34a16d611,3373948258,15840687612836249801
+b359c920-55c5-f844-8a93-780ba149aa65,1805865793,6143029032481854982
+6c09e116-9492-663b-66ac-38e483d0be2c,309334149,13727713108746631240
+0bd2a93e-33a6-d9fe-7486-5143305989ea,1245309536,13931231034279721702
+62238bf2-cbb7-fee1-b3ab-289a0e094d81,1517584798,14848490484740290593
+d5f34de5-1a22-bd21-abcc-187471cece12,2977021231,8085873709207265611
+263a76df-8d62-731e-bb65-e65556051d51,3693103419,4703717289045144587
+1f59899f-5b4d-3be9-b8e0-f769320abaf6,803970645,2181448224780347668
+f9f362a4-034a-b8cd-7278-28528a91caad,3842583865,2544260526028131847
+81db688c-1ba5-3dda-2aba-66d0066c533a,890400612,9386497390699176166
+2b0d1467-20d6-b267-a604-ca4cb7d7dd33,3894451386,13220362224108038586
+d064caa7-4e2a-4ace-a3f5-7ca3dfbdd81e,3524755354,316461000390302299
+80a799a1-17c1-8628-a464-c6e48822d418,1499217589,15843170183842222309
+b4973998-70aa-0f41-6e45-0ef44175a330,3524840929,9719494309316475524
+7e96d6b1-d537-63ea-12ab-d43f9e6a4522,2132427194,11171845235153949486
+b4a04240-bed5-4cf4-0cbb-f29c1563b0bd,2782149493,6463540191560847437
+c2a1f652-c5d5-ba72-5aee-31f64f36434e,2951563732,8894278581928403069
+78c5010b-592b-abef-1fe1-0512e4a2735f,3508025980,3639831984121517322
+587cdd19-853b-6210-3dd6-e3e940cd3a25,2936050047,15032587217268692128
+3b9e7210-732e-716d-3ef3-97bc679ee336,3805361059,16304152310744088152
+d5a452e0-29b1-0a9f-7664-ab811189343e,1485224996,17358856782526125988
+a9dfc721-d76c-ad1d-c58d-a0411f80d368,1173676955,11273162503349628419
+466fa3e3-86f1-03a9-eb40-4ebe914c50d1,2740901817,16176064640765756826
+6a52c53c-441e-4d63-6928-241cf6c27a66,2743352186,15965971196607708392
+193592b3-accd-6140-87b9-e0bd84da62ac,1382217169,3568904090177955127
+a9870fbc-9854-29d6-3563-e22d69601c24,1482678796,6077625448494756902
+99c652fe-e506-8169-5b78-0e0bce53504c,1718099376,6418068947621448523
+2cb5e574-c5ba-20d3-0e8d-125c3fcf32c7,4204002165,15715362126378151264
+910e13ea-ece4-dd8c-5de1-79d63ce3faa2,1264086533,11892155640851022060
+7b794b61-2c08-c652-9576-0423b709db13,2649771315,4153281437185468828
+f5b0a099-01d6-e59f-1a9f-ffaaa5db6331,452853772,12232005283671031003
+7b94924c-f288-e669-f73d-b5c2896db54f,1522750235,1334736898695402026
+bead3495-6a68-58c0-f717-ac2e53ef4d33,2800462362,10343096493469404208
+e5ae9c12-336c-3de6-de70-8ff15ca66d91,1867591663,5153117775830557921
+6951df64-12b8-abc7-3820-c85cb7fd18f4,3907678959,7832973575864732582
+e47a62d1-b7b0-72ca-7a75-3f0f5071fd7e,3279129021,12729773441325671529
+bb157055-3bc6-f5c6-4ffc-71513e2a2ce4,1897283469,5355593529044275857
+5f97f537-b9e9-bcd3-ead5-03bc5909c1bf,3121736435,3379751956143733756
+26071fff-63e0-1eab-18ca-b50b36f21915,725868208,14978745033470431292
+e392a8a3-1033-e364-a84a-fa1142906f6e,1612618423,1642027654643686578
+382e0a63-15c9-6f5b-c00d-6734d37a0a0c,3699258590,15297411635271651635
+430e7521-4957-4edf-6727-353fe460f287,3017220352,9175596605099810444
+501af2a3-11c8-1184-5bf5-1786612495db,2707215569,12168095642487575820
+0ffe8e70-ae8e-489f-2f70-322b9e9ef0fd,1560940298,16441130771288042214
+8138eb7c-18b1-3d77-74da-de98c2a9c1c4,166410323,6017086929410852568
+00fa9dca-84ad-2516-1d02-34e157be6c08,251858355,11455543074356502791
+64b95b22-8e28-544c-d8e7-042e2ac88f27,3773562759,2917398737864049845
+eb6b58ea-7146-c93b-5344-9ab4a26234d1,97312064,14061873718904841637
+0ab5db52-d3b5-21e7-f652-c64f47705119,1001289530,14003237167201981826
+0c6206e0-7aa4-dcd5-52f1-ee4db45c002b,3608750900,10037137464058925401
+ed9ee713-442f-5973-0b26-4a83507a7cb2,2154484824,14273667046171658927
+d43e0325-1311-2581-3e44-367f0200a274,2258191437,1123934720276800950
+8c009e9c-65fd-1380-9ec4-e995ca47334f,2304162866,13699050807525977902
+e4879d2f-5f5e-f733-d73e-ad0bbe45df63,2209725290,9563044285778747679
+6e7bdb6f-cc61-0c80-620f-9e2fe863cfae,2457147834,13224661289502803950
+27d1e7bd-daae-af50-cd4a-a391ffa0c440,3393414878,17334680754088130094
+3dbeda3c-9294-f020-1785-59f362aca92e,1852547460,5795249217846922796
+fef2628b-9b4f-fc56-d086-2d94dd1423a4,941754013,2861622138100233268
+6b5296f7-e614-79f6-ba5e-79c87e7bd349,4097753687,7982204451778988758
+73e9ef60-2aa8-66fd-db86-85661fdf9c5f,305761615,15027456977493186902
+39be1dce-c258-d4bc-4318-428b06c213a9,2222404980,17911519368796675
+4080f829-9df0-8c2a-152b-2d25292feeb5,3988728415,14500874751039615189
+39330c78-ccaf-2a89-1f32-43949f54784a,3484472211,4811355403630670884
+e49f88b7-26aa-a3bb-31ad-9fc9f1787607,2778275215,5216642000647936998
+bc1d975b-7630-6589-5a1c-bad96b9b12c2,66910604,7065862776787552646
+1ca840b0-3bf5-b920-08c5-13ec4aebd928,3799455,7154130338772972979
+b388dc6c-142a-5048-019f-7eaf6a2b8891,1254691637,16280304330587606975
+2d07a9a4-f91a-fa1a-8c7c-12a66217856e,1365285381,17098532586278576631
+5779ee83-7fcf-0fd9-8627-1f0431c0ade4,3207155367,11224002360403663293
+b177d327-6e4a-84ee-d6df-ef44f372dc4a,2068759781,15831985098686748521
+71749384-1d2a-072a-1ec6-76d7b9667768,2720940280,11022688935608684787
+489e5fbb-c745-fcd2-d451-946a0aac5b4a,3346826449,17079296376925524336
+a39c0a18-be58-299e-8d57-47cf69fd686d,983140011,11006144836546724939
+7d24ee86-d535-71f3-ea86-3d1ee38906ca,2603890321,7651504949180087537
+435d4e8c-e1a3-885f-ddae-ed6372ed2051,2616019962,5368430677161807707
+5e52fe4e-79c4-fa32-03f1-a86db8dac539,881485008,17144977954297588481
+2c08ded2-d7cd-4091-bec7-71fb7fa3c50e,647996171,3484652123417171667
+424ba49e-c550-a28f-53fc-8acaa83d0c3c,2028694048,607367883300766878
+ffe64e26-b2c5-26a2-cf87-acec9eb1a127,2909801197,9482221129098569267
+71f9232c-f723-d783-8b60-4c0b7a4d51b8,1741661107,17587602670213710492
+422e1963-4ac7-7af9-ff7f-8a287114da35,2396534608,16471306972478651765
+196fda93-d6c6-9e84-c9cf-5c7a95bc4a28,2977785106,14933974888266779707
+92b0dd9b-e425-02a4-ed16-db3471add923,1226390603,3269337959912366326
+775bfe73-3f4b-688f-aac5-82c822b48bbc,3975354835,7460499010128703915
+092d7f68-cffc-b824-7f2d-5ae805b56f47,92199661,17386804574439360587
+9ced56af-4f2f-bcfb-2109-1d0914c11fe6,2326587601,8833110414435648517
+61a90457-fdee-f4ec-08a7-be415d5e0a91,2901208766,6141464281916115007
+0e2d5eb7-9b55-e11b-1c50-cc63e6e9d168,3777958340,7637282670088858066
+df44ce9b-da8f-b428-011e-2eacfd40ff69,2969415681,15553466120904718928
+2b7b9ba8-e409-94c4-91f3-3897501f46d9,3660104053,4295993931039862471
+74efa9a0-9fa7-94a1-6834-7b8981c9dffe,107797818,5295397843583052332
+b2c75c27-01d1-0ba0-6d8e-9a81e973681d,1165329063,912350230094576621
+dc321675-f073-e8be-e23c-1d48050fa0a1,2646564004,5709990989153909090
+5bb7f8b0-d872-c445-75b1-3372e244dc86,2131741515,204239540047460642
+70f7fdde-2572-046b-cf5b-b641bf1b7258,3297477387,5015369996718771781
+2eddc0f3-b06b-5e40-9cc2-0eca2279279d,22136372,8318363290589868157
+d983c164-9e71-ab0c-01cd-253c542dced4,3985415946,13692377683744864619
+a93b8599-e01f-f087-5e03-ab038297b77e,2189118735,18083066892957344388
+f5748d5b-8331-dbef-4edb-d221992e66f5,3747257863,10676437111422560554
+896cb062-3293-f1e8-98c6-356d4e7600b6,1950598516,18293765222165286351
+80f62975-62b5-4dd2-72e2-af5a4cd8c928,478683964,3199186871343313056
+9b637241-236b-4fac-5aa4-0da67fd0a0e1,3925043143,4402141767435676451
+67d32b7b-2302-0e2b-f1e1-fcd57df3986c,1459694,11288973568980529689
+5974e1c9-0566-b08f-ddc8-27204ab03b63,2599256178,10012558431888547134
+3ddb1a76-feb1-62f8-d80c-65a4cd25483a,101637455,16998367840022729164
+33164ec5-d5c2-3ebd-4067-ac674e1400f1,4134310457,16913309736598886005
+e54120b8-6ca5-20e3-11c1-3c0ddcc12886,512128876,16173022705039378336
+6b429305-fa36-be4a-ce06-a6d7ca9e7b21,3345461078,5462225014929401731
+665f5e1b-4e40-34fb-6a24-76f07e7eae34,2119906553,4307052852078840676
+df89bba0-f9e3-7831-1416-028078317152,1352049231,5700645813831637220
+f08b061f-f94c-8644-d199-8d8856ef44dc,17616057,13460136267826801422
+ba19bc47-62cd-c87b-80b1-7e8d6684d235,3462185787,60424852483157905
+a56ed907-73ad-c2a9-3f05-460f836b0201,392146251,9887250580014239047
+a1942d36-719b-ef1a-b02c-ee6fc033b808,3432483619,8974262753130064049
+94b52325-100f-b465-7d47-1a1029ddc0e6,4213962532,11977049610820269844
+479622ca-9814-14f9-fe16-a58e9a84cc50,1707504934,4908037648127985677
+50d46587-519d-61f1-a73c-0e7bb7ff7c50,2262073517,6693701385574810877
+fc58e7bd-5c39-db48-14cb-f71d66bcb88d,924459553,14618280902839882553
+d7ff275d-c284-b630-525f-3315c7cbd082,1153580908,9161247217152988458
+bc3792be-2bc7-cc88-97e7-91040bc4659b,206697718,5762274329457356954
+156bd047-dc0c-210e-dd1b-805e6e9cdd72,4103040035,9507692435759846765
+f1886031-52b1-289a-6cfc-9d5714f2f890,1222494479,3790818059404259108
+cd434a90-a115-3292-6cb4-81a1e84a3c0a,1204804596,9820951468574935947
+65207a40-d953-02e5-e43f-542b744084af,214857936,15889932694608871303
+5f81b6f9-1bc4-a9c4-1937-c815881a52a3,3498088598,4191742447200793224
+4400a4e7-3141-994f-0100-b929ce866a50,4022159428,10960170017648717791
+3a5ae9b3-4e2b-a14d-e721-051e3a66d6cc,1528844657,16861974298646714848
+5970d8a3-9cfb-85bb-baaa-ec2c08307e04,124325901,9877842116999495628
+0647d65e-dd1a-fc3f-cc18-09a1d243237f,1704301756,6861164805480862560
+76775267-95fc-5793-6aa8-e38caeb9924a,2897590522,8885967994937351615
+4f0d808e-42e8-4701-d3de-0dd22154f2fb,257544184,14728742003991493432
+f193d155-a756-7fa6-f9f7-73293bfea4ec,2261357147,14571593696268831930
+25305c1f-16c4-2952-22b7-5e4ea5d93b9d,955716504,4765413572318129203
+a9f8d6bf-dfca-5b98-3f4d-b984cdfc1932,3041811298,6012895910892224631
+9a6e6ea3-044b-b78e-5935-f37722cb1cd2,265147373,7988479138787730016
+eb6be984-13d9-4e37-85fa-a72c726ef2de,2402732442,8304148444449491500
+de34140a-388f-55f9-7302-05f95ce4ec2d,803305991,2795178145570149077
+f014907f-2895-f3e0-61fd-d76f4afaf467,1615078270,14696538408941505913
+e940d254-8e77-bc15-23e1-a6f287390209,2606412696,518268473107104125
+1f171bf2-2e43-f3df-e520-ddbcc2c6f012,1036128585,9460789081038602226
+1cd5104d-adc3-8d2d-3354-f39b9c578cc5,1247336440,5167858869642075268
+ad851d5e-5e7a-e8d5-4590-f1923ee71aed,2099185306,12126676555367972029
+56c1b746-c460-951f-0b2a-3429624aceb2,416099096,4755556249556500300
+e1a9578b-07c3-31d2-a5a4-c9c6794abf60,2247570989,7767344204417297725
+da5f9016-1f3a-ac0f-19b4-c39772400b1e,1007287485,5432514825808252303
+04958728-19ad-8cd4-d3d6-67df2342f4b3,2980852692,2352287310835200128
+cdc02849-84e0-05fd-283a-95a1b38eaa27,512546441,7829492934963910365
+7d7e8fe1-1dbb-38bf-e7a8-d43f1f6dbcdd,2973477978,15299382378251132731
+9e5d67f3-6d5e-1057-e721-621e681a63f4,466145528,15848669079750039095
+1a14137e-9e1b-782a-4609-b40e0ebaaa85,3614072395,3650892023424783703
+6469fb4a-42c9-53a1-adf1-ce4c963dc4b5,799876228,7156582450315966038
+c7f3be90-f138-48a9-0605-17501205931b,1209001108,1337371009687704824
+9761d0fc-375e-4074-5e9f-36b09507481d,2462490678,15788933231826613821
+60da125c-1b63-3a4b-9e88-bac03672c09e,3424748183,8711336687659582171
+5146f67a-1f1f-c6ad-6959-f4d99e7fc64b,390605948,8259057734597097456
+09bc666b-d259-92e0-852a-378731a5891f,597434253,13875987452017756722
+ae9ebcaf-fd80-6052-8327-5bd2d5b1e64c,3577533690,5003000128240629817
+f1a17932-d3ca-f248-65c5-c9cf5c33c75c,2988567489,117186049396170529
+450b32e2-8972-0935-1e4d-15068eae9609,1978550954,865209411230254988
+d50a3f76-01a5-9c4e-8b22-b88d6232a16d,3526395346,1863765325256252099
+4e1b3b7b-8b7e-6a41-4c5d-2f6cd12ffde3,2903272399,6487992115691572051
+496f9be4-a401-4753-bf9f-e0f2e02c8880,2456745635,15862427035322329013
+fb1bc135-8e05-0867-8238-39e0780166c5,1438056555,17606257392848101495
+8d348736-71b3-402f-8bbb-15a7133e3391,1137051774,41378176243322390
+dee67870-1205-9650-0bb3-ad716d2dcd33,1861129225,11795093393621880778
+dea93bf4-9f12-d878-3b0d-69fbd3672bd6,2547187466,14244149542746923046
+3c8c902d-2c71-12b7-6160-a417d4354f18,3754071757,10518580530130903354
+766ebfd5-a8ae-6ecb-6a51-0f49f14f337d,1243987742,9406478922148462490
+12830d15-ecbb-13d9-0db4-3ac78b549d61,2737568933,1987438635910880452
+afece33e-9a0b-2144-9b8b-4306ecaed0cb,1781571633,1918069070155537749
+5b6c4272-77ac-f24c-e13c-7c31b07319b5,69687982,17711190391487839625
+88e45a91-7578-7c5b-5d4a-df12864dcf97,2723310542,10250878450919133690
+d07b6cee-123e-670d-0252-e89b4cb505fa,2298690470,15119198680423903194
+949326d1-d3fa-da62-2c5d-bdbc9a863b73,3462428366,166500516225921836
+06e3d3c1-f23a-d672-7426-83c44dfd8e77,1450246074,7124612504863951531
+a9406328-9080-df91-95d2-7f1c6e4ad9ae,3816907139,15333617757248301435
+640367ff-2e5f-7435-ea6c-6407b2677a9c,1392164533,5222588361261185573
+8466c61f-9728-06ca-8177-cdf51b9e8ca3,443509258,7365238446680826402
+a1b381e8-c612-8338-66d2-6a90053bcfbd,3765604276,1293692001558429665
+51d0691d-94a1-12db-e04f-2972a93856c9,1914326618,11214838496479444124
+b440082e-7300-7fc6-b627-4257aa28e486,3150149144,8362212883773374010
+bd4a4281-28b6-9b07-145e-7de69cb3ded2,3277502541,16449317519152008466
+f4b0804a-1f0c-981e-fbee-5710ca1f6634,2642615866,10947566572809573973
+bfb5682a-6188-1b28-a858-e7626ca6aa05,3548903737,16126419016180081637
+398e7f6a-413a-8f37-11c0-35a7bddf2d22,4080857495,923995634487414442
+1998e7b1-7e4d-df4e-f3b5-dc8f3398f7f7,3916752760,7898814715498356656
+a5661f84-4b84-9e1b-3612-fbad6faea543,965900127,12050936427501242940
+fe9c4d19-844e-c4cf-6679-4394dd4ae734,1119420722,11439875828309537874
+17827d96-013b-5818-c5c8-fa798dfca971,588507977,6356356310061922511
+96127969-52dd-f3b5-76b5-e8338dc0d9e6,1103744950,8233778871714029562
+274e147d-9102-4cca-df7c-4e22d31d7278,1150320625,2091799424624966819
+18b8b661-d2e2-2a68-16cc-84c556a88b3b,4109001902,14118020498292122384
+bf79a235-82e3-fb64-3eea-bc2a8ebf441b,1173142796,6916059730458388123
+a5b5a841-822c-e7f8-019f-7fcfc851c8f9,3815103425,16380697441637538534
+e5e69688-e2da-991a-0cca-af91bcea3858,114714072,6635556630172775957
+8bda6f17-6e25-5ff9-096a-eeec05d415a1,350988400,15866862685414063611
+0c43d998-237c-a7b6-2dcf-6a87175febea,3337001973,2207012378930553507
+09bce843-02ce-cd81-cdb2-dd71ab4af989,1905862075,1729417058102582765
+4f89647c-89ad-c594-3afd-e80d2ef36fbd,246860658,6760274973039992694
+2019819d-0905-9adf-325a-ed1d1ff442fa,705903385,2154981583952530462
+6893cb21-b6f3-b6aa-c6d0-e4fc4cbe66ef,70776928,1043885341962396440
+50e63ac0-e3d8-1607-cc8a-7e7463da879d,3122759207,17524791858033744365
+17ec21c0-d8ad-1c4c-1b64-65d2585cff53,378937166,2527805401862789945
+6abef328-c40f-578a-4d3e-074239d8f6c1,151541349,2047039758897147591
+8381a468-4f70-5cbc-4e78-c4be75801bb5,1980172366,17207871166599400160
+e330752d-e07c-7fc7-7580-f59ce5cbeef8,3407824203,1290074611834277390
+29ddcc5c-27c5-3acb-6cbb-af0327413fac,665969428,6755978801953017409
+796d908a-06de-6194-b33f-70af98b307f5,742028262,2829511228819115468
+aae18139-5c21-f734-d3b5-2af34101256d,2275226838,17830183283355837585
+82f2f13d-85da-5866-c358-32449c637895,3065696867,14336475686842959189
+60845d7d-6210-8c75-9ed3-0a0bb2265e02,312025689,17887332482832803756
+90d03f23-b507-5dc6-53f3-5ace16bf95ee,4248518979,3843747574684942117
+363da715-1610-404c-b899-a1eae05f8cf9,4159508986,6178723480616877753
+a9f6f482-46dc-2a96-d3cd-1f656b9aab74,932210500,3758465645627817307
+1047e3d1-2593-93b4-ce18-16fccd126260,416975406,3787911938715927983
+68ed5144-632e-0240-fcf1-6600bb044e3e,2509329902,6048385204160534192
+e89a00f2-7ff0-c3a3-752a-61f002ff9394,142870501,1419416765493785179
+f2efe921-b297-810b-2457-18d3b9169e48,3365097033,11621428017205042848
+3d68c380-dd41-930c-7938-166bb7106972,2677991583,11952779759787214845
+a4bef01e-b08d-8411-49a1-98af049a0d47,2166430403,18291980583314061902
+c93728b9-eb9f-2bd5-7735-25cd837cbfa6,123270834,13945613345304808488
+f7edb290-5a9c-7b77-0a87-6046da72ff25,232601212,11380722961077876858
+91a59853-0433-d666-93a6-d4135303054a,2828971373,57449329085055164
+a6274796-e38b-4195-6b42-8e8d9a5fa75c,4182678665,1806327286837835835
+9783bf59-8f68-f25d-be52-524a8b24818d,825472784,4069373676430018461
+9ba0325d-d06c-2aa9-a821-e658614343e1,92510758,2068680798986316121
+ffeeb247-07c6-5bc8-153a-9d65015ca89f,2118381523,8747589275543343096
+76280dc1-698d-0aaa-d7f9-ac920bfa2619,2351148984,17046697116499338417
+8546e92c-155d-3a39-ac23-c40ca86156d2,3712215559,10733548174442027918
+a870d7cf-b025-fee2-0358-766e62edac11,4279547810,8658664912236385599
+19c3d7e2-176a-805f-6609-92c5977ea0bc,468128961,14200205841803901781
+dc69115e-4f28-5d95-9697-417163cc5f14,444766311,557279202572195272
+26e3b79f-b026-92ff-bfb3-9397915fc4b4,3757701271,7049152572633819300
+9713e4c6-ea58-ab18-0dd0-e6cf1db4ffd7,2204190261,17539066576052436119
+dbaeb912-d778-cfb1-007b-d7391ee29021,2755640904,3319295287053763101
+d7841f5a-9a04-d120-014f-edad97bf5d9a,3781205855,11575643009323687024
+06988a96-d546-2354-2936-c0cb54976a41,2241851472,8432665417139700806
+7837bd35-c18d-7ccb-53e8-11fc9974fa4f,2723278878,10700686737868609267
+8dd8ca0b-3338-61c2-2d9f-cc3c61de07c9,3322672034,17567910547361995008
+cf9fa974-f6fc-e215-0c2d-9db12c52e3d0,2620726474,11953898483333557941
+cfdd8746-4fb2-970a-d3a8-a7766811d04a,3651972106,16228378929344795122
+8ec87d24-976e-6342-1d56-f7bec5e96ead,3024700567,8668306395226701422
+d4c42e74-ec32-fe59-b72c-337fcd05c92f,47378985,11624900968863313707
+a7182589-b619-ca09-87f2-07384377fd63,421057475,2407289433801727246
+6835094a-3399-301e-e241-e24c95feb17c,619681521,9310398981522874555
+9de7fc50-ab9c-ab14-1a81-44cbacb41cfb,899404506,5261799151209438589
+2b374917-d11e-5c17-6539-5a4a01363bc4,3649658699,10080612527234245114
+ceb94341-687c-e260-824b-bee8f299e642,3517429235,15083218847537902246
+7fd6df60-d447-b46f-f3fe-5953eb8ba95d,2295596335,4232305462621124387
+981e66fe-57d4-04e5-28d3-950d88b465f4,1927479578,12520486421697345246
+2c8d591a-075d-0794-fe0e-de2e86a5c33c,3870938903,7167079546591297975
+fea2c495-bbe1-e594-938e-d54a8590ed2f,2560103440,13053870273195218993
+df47e9e7-ba13-5865-cc25-70ef60b1220a,3353890784,3940112883922508058
+343d36ff-a0fe-d891-f438-115a2035fbae,439117784,9387144068215010572
+bde50a84-1417-496a-2640-0601d05b0b3e,1059045132,2404328022926500653
+afb23491-3257-7838-4b49-5fad24aa0de0,3388393316,2606078752867108662
+aa109e03-a202-0fda-4323-d215933e9e49,509470896,8630864761065981276
+b42824a8-1609-ce25-da30-d3f0ca94a408,814519007,2923919678508868101
+4f86aa76-5517-4f03-b6a1-10afa5673283,3990870375,5560479614225327267
+91ef3191-5d28-578a-fbe5-29854095909b,2306206709,15301452474743420454
+fe8bad40-e1d7-32e7-93b9-d1984b19d0d5,1898572334,18130799597247623926
+dcf3b794-ea11-a6b0-cb66-96ada80f309c,2711917610,306767813492150479
+11ca866e-b3a9-dff1-acba-cf29a1df1eb8,10298602,1072552740073066628
+6203f537-e885-20a7-b6a7-16950eb90334,996202857,1205872974334888453
+9ebfb65b-e0b5-b5d8-b6ff-eb54a324342c,2644297395,8785000713615505797
+8ab8d070-eb2d-cf59-c511-25f5f6dd04a7,4093929226,10545077615971651346
+be56caa2-6d0f-ad02-359a-471eeef95c6c,2932228230,11123663975521111385
+ad83f06f-7868-9efb-e2cf-26b33aed6267,857240477,7913787729754041704
+9b11c258-5eeb-4335-90b5-851e82ec7971,3348956850,3957444190061229365
+da3f2d66-8169-34ed-6d4f-fdcb7c9e8783,2307485696,17872085407841870661
+eee57f96-b13e-0ddb-b401-e02aae5909d2,1722827898,5069462684259265818
+68ab308a-976e-49d5-c475-f90d2ddc4b6f,3963661171,14084999607314714933
+baeb8036-9ed9-db33-7da8-4f969c2a9d3b,1044877198,6263375977559937848
+a78d6323-00c1-0ec1-6a9a-bfdc86b02431,1162081406,2938711093292981765
+0c21cda4-88ca-8306-01a8-d07a4fc84751,2867040446,11629445993402715282
+f1592916-a550-b870-0b46-056c3823c67b,3842428149,11439031170007475042
+a5ce6d54-b06f-5372-3d04-9f355c328f93,3273384890,13362540035006751155
+5510e475-8807-8fa2-516a-a4aa21b7a4cd,240164386,3581027725399018953
+361345e9-437c-896e-1531-573ae265783c,2750309678,13878408623799034656
+96b55a4e-0b26-dae2-b7ce-e230644f7831,4042415137,4368345364723129808
+9be1947e-f64e-84f3-e2fa-39e092b45c0d,2176518674,4551694560227935796
+f76fa043-87ff-7656-d6e9-58941d9035e2,3978194875,2122166604084339368
+ca3255e5-f8c8-7d45-ae3f-c88588a08288,3551468946,8948121289959711659
+ad3e98e1-ac16-db16-1954-c1af3750ecb8,3438182220,6911089179839438973
+ece7b0fa-1902-54f6-bac0-0abb6c1f7f67,1653555371,7340716791877285877
+80ff995b-bbb7-58e5-a763-937051df217f,113930264,12739859281521726364
+f8f35755-3bcc-cbbf-2206-d24b2aedc5f9,2742295421,289601607087959402
+df783982-577c-5e6c-0f50-5f141a2d0a67,1006970276,4420913950712461826
+d323b35a-8a38-0c56-b77a-a6e947b0f7d8,3750156965,16924823798604274284
+558d2977-8339-8a87-dc7a-c7fa2d1e46d8,785165581,15893456296582845064
+cc1a7501-a878-b26b-25d2-cae6f06e97dd,758929106,18400919084141368095
+75ba2fdf-93dc-562a-550e-673bfae93d74,3405303406,12986072955073357947
+bbf74a8c-a992-67bd-b234-94540b2f70fd,167197027,10831719781178967548
+9ab84e2d-3f4e-636b-a688-0926ffae8887,3312744133,13190106292519657700
+7f832adb-9657-c9e9-85d8-ea59029333d1,3767097297,3533243811742381296
+f0d4899c-91d8-34ad-3cd2-454840ea5fc9,1435318962,16606636431356318093
+acbe3a54-1769-5824-bf5d-d6afe6055c54,110446732,9594994958822566447
+dcb24d70-1ccc-772b-af9f-02c952688600,2433414894,12026123932246087625
+b78991e5-68fc-640e-28c4-0f398764ff37,134715765,15103625648984217589
+59728afc-c589-bb4a-ffe0-be31ffb07ced,2835405845,3422868109757204373
+a3b3ddd6-ad02-6466-51c1-263b512bd73f,2872564931,9696043288391514521
+852deff4-628c-7681-09da-6f5ed42dd8da,1399733890,3189595526273678519
+d30134f8-9971-21d0-247f-9e395092baa9,1714387473,6555641268108225515
+01a9d6d8-dd02-9c3f-d97d-4358d6be1ba7,1263341612,8891486378615597352
+8352f07f-536c-04e9-a188-dad2923dac2c,1648194455,2063201113302419199
+3f2409ca-08e3-febe-78ba-ec62c82f755d,785017343,9200053696777942807
+199b600d-4abd-8850-7634-d6912dc71cfd,1548048991,16877703651741958972
+7113b0bf-ce07-5a5b-fec4-deb2e45d18b5,404676278,17380287212755131486
+6ac48040-a81e-0833-5503-325a2645350e,2373195256,602629167994603851
+0f879ab9-ad12-4583-5683-d80c349e9f43,1765615093,177270927141022663
+81a6ef52-b420-f629-c859-206ca7e94a72,1116998676,9616493035851180557
+73d61702-cac6-5596-b60d-d03ac85358c3,333773461,10800431463189928542
+55c179bb-76ae-596b-a273-a073d2344190,2620001499,12172465360045860701
+4794c620-8af8-6fb3-897e-923eb2cb69ea,2640660260,13591167148945783591
+188b4dab-8c88-f2b3-1c7c-8b062507a73e,3266701887,7087097350386977866
+f019df1c-79c0-dd8a-68f6-ecdf56c4e066,469487531,13719757263198249350
+65ce9e34-2b53-d8fa-3868-a63b66e2e7c9,1527406267,5674892484077189590
+d025d082-144f-44da-8e5d-79fca351bf61,2609333991,16615404636287109040
+40421e67-eb4e-7016-a399-c6e38292ad4b,1384253811,8321481278793559961
+1df198fc-d814-27c1-4c6a-ca3e6dc16b1d,4125960505,17374718037684121454
+0d8ab555-03f1-be85-317a-ba4d4190ec70,2301405731,13776098401874534039
+8b27b83f-3422-2507-4b92-7c38bf1d0bc7,1806877641,8046136752330525545
+9eef6709-a0f0-a310-6f8a-0117845aac04,2266652456,14130239917036782312
+96b57eae-01bb-51a7-eb2d-99ad2f889761,2485215575,7026929033717869934
+ea04f890-873d-4c34-4399-21fd810baf1d,3164262402,13456070084725077370
+000e55eb-175a-fd72-20fe-9d38e51f887f,7223692,14534536311734668423
+555393a0-375c-34b7-22a4-5b80abc1b1a3,95191954,6406373630094819765
+cbccb4b1-cf9e-638d-727c-51d7da84b579,2015280684,7778908370840019934
+c519fcab-9015-460a-51aa-a79b5c5ce4b9,2649578607,3138791813584755074
+027fe662-0170-b6ba-3de7-3fb87308532b,419727872,12372880862854435816
+fb37a99f-575a-78c3-cee9-aa070b7b1e17,4119208295,4713030463489101016
+c51a90d2-2808-f8b9-8007-5f544110a527,4164397547,2015701329858437646
+7f153507-5428-00c5-ae41-23d72018f6a6,494272861,6203115233081376795
+67ec9128-c0d8-f86c-927c-2de031afe16a,4035412823,15565222217750387102
+9e85c521-081b-41be-8fb7-2c2bdb61c676,1730699972,3335660340958303206
+55f72ce9-9dc6-5105-e756-84ae51501c29,2446448173,11367369685015875934
+1f1d97ad-585b-229b-0474-17b18f7c7d90,3150692374,8343791468279763557
+116fc241-4f3e-86b3-0a56-cee8ee5492a8,2225449878,12480027602073288863
+d843a082-8de3-612d-94a4-88aca7f4b556,2118971547,16943374869269700957
+4150326f-fc0e-f420-c554-3abffd3d8422,745274428,2885782881559446045
+11f1b33a-1332-307d-e949-216a1aae996c,258117471,17502572610220599855
+864170ac-9c15-a0d4-d15b-94da9cf4a984,3615763977,6535150165946801714
+397b9b99-00a6-ce66-41a9-7a056228b5c9,809252375,51090342978976225
+e18831de-e40b-6bff-e2c4-bf2c060552bd,1333629910,12387552736020628453
+8c6067f3-60de-51bd-2579-13cb2972bfb7,446687913,14513297896681800295
+0403bd47-11c4-5758-d4e6-b1ca192134f8,3199761406,9694790736989406332
+01091930-a171-02de-2a4e-62e060bca652,210932760,14638796261376233918
+6cca3a85-97d0-b597-ecbf-8e15fe0fdcc8,583715495,2474687043146644836
+6b8a0ee6-b400-a5d9-8a6b-e84bb7de7c51,1414041590,9972731693258563874
+e799c155-cecd-1e0b-584f-989e7090acbb,2126529333,7944770751843887508
+e7196e58-071f-d4d8-58d9-0ac82b0a9809,2443472606,10308770986062264237
+f0aba6cf-c3b1-0c24-29e7-da32a981bb8a,3722771065,10367032819138117430
+7e6050b5-be83-ecc0-e7ed-14117f992468,4294220086,13049783617596456554
+3fd6e85e-a6b3-166a-43ec-6c7d4b5a08b9,825814235,162195332837922902
+8ee0501d-d911-150c-f060-df20d208836a,2641976869,13924105195423742540
+b348912f-6a95-2f9d-6c3e-08ac8e35167c,2777000089,11554502331771227334
+bad6354a-befc-5e5d-7874-0fd2452a34cb,1056596663,8059370424601076919
+54cf30c6-358a-7e12-25ac-365ec2eafef1,3270670882,2006325611565413037
+7fffc1da-7102-ecf4-3d90-93cee8ab7d1c,867045107,1365761417086853276
+900c7598-7dc4-348b-49dd-81c74e2c9484,2679465441,13292426287318282988
+c41cc687-0a34-9f0c-6105-bcd4a06632c5,951750724,464009178213684671
+5ce3c9ca-38e2-f115-ea84-7cbd4fde157e,2460937046,13978224193255010429
+42ef164d-f5b8-4e8d-8df5-d1aee16fed7f,2357688127,11298600909413933442
+75b0a8ba-7678-b048-a2e4-45e95edf30b2,2209178454,12411901234624067201
+7de62079-7bdf-846d-9171-e9e0d4c6a7b4,528037029,11340730331387176544
+73f6e544-6f50-0507-ad93-321f1e396608,1662138826,2990185066497483505
+22318632-a876-8f66-4a88-604d169191b8,2285051815,14630320966383220661
+7afa540d-ad2b-150b-9f46-795c8a6677b0,3454045440,4302948909149051448
+a10a73a6-81d4-c981-91c7-f1923b990360,3743025833,18311498954148800187
+ff5dc140-dd74-11b8-d0d4-40cc518016d9,2280219588,14207797582406752304
+c6f83214-ea89-41d5-6af1-6f53261c4039,3078017220,5034214694699472961
+38298978-470d-edff-72c3-e1d6b2860bbd,4227082661,9279208247821064740
+cda20811-146b-8256-4bf9-a98752912015,4123673769,12015818193345323434
+5e8524c2-139f-3e67-2816-850c0d7ca7ec,2468143030,14963184863403276843
+ab4b7436-d24c-5d30-d055-241aef7a730a,2736810305,14733867085400145386
+dddc8327-174e-1d1f-dbb6-5d43202ac9c8,2369149236,17360197255309067729
+ab9134ca-2932-6207-77f7-ebb1dad62bef,273555915,6716961207308383912
+7702aa6b-a1b3-f8e0-252c-a3ffa95aea6a,2638819482,12172101687755911665
+658cb60d-e598-0fcf-f84e-c773accb14d9,1329202925,16547054714925163367
+e3398cb2-94d6-3878-0679-cc8c7258f121,755721458,15937171632022753591
+9fb7ca56-b0b8-cce7-b46f-6587df4966b5,1032437735,2552852079418868910
+fffbcc68-4769-976f-7336-9b0df4dcbaa7,635276406,7424844121318753817
+375e5967-7a1c-c9b5-b733-2d319883002f,2787220856,9162963139591532424
+b9f422cb-7c9f-224f-0251-bef38539ed25,2907408794,3411325670009645104
+eb411a27-e7ac-7843-dbbe-a9b4bfb5d52f,709291319,709935805985505871
+c30f1a00-1505-a331-69f6-23fa3578a1e5,3038003129,1268969059791265651
+a10abe8a-a754-80e2-4e46-3e7b113a9472,2665226658,17244494879929030095
+01462580-6e01-a1ff-dd0a-bec1f82d7836,608875970,14024516561747425457
+0c2c4ff2-7e52-f665-ff70-d355d4b8f338,113374646,9302544514917631339
+feb9170d-ea50-8f25-12ca-472c16badb1c,2171150127,14442543210440347256
+aacc7786-01ae-cf36-3457-3f2a30017d13,4131696927,369546704675038151
+df777c4b-4ef6-d9e5-0906-e5f88587e746,560358463,4764014307088473797
+70e8d67e-4489-cdae-57f2-40856ee3b0bd,122492349,11144907278448096356
+4543b4e7-0625-fd26-d771-9863c033cfbb,2125554546,7586543905128870200
+03b1cfcf-74c4-ffa1-d203-d6791871bff5,2881238079,16911185253005834826
+cd8c6f0e-18cf-c7ca-98a6-84579960e6ec,1032241091,17340588908668539679
+de221009-0d2d-2d8b-8180-50adb121c308,845015066,6461583813526189473
+67f6eccc-e63f-4095-4260-f4e34c083a81,1929919720,7384389230469602007
+724c7ba5-f416-a695-3014-2401535cd1e5,1495398790,11169831274842170099
+d10b8dbf-a09f-87de-ad4b-e2e2e9efc326,1275556190,3154866270245774239
+802bef25-2f07-a7ca-c59e-05419def71fc,1869498391,959403616815008352
+8837f319-1bfe-c9fc-3cbe-3501f9a48e5a,2581523612,14744530707439398496
+1eca1ed4-cd2c-072e-9743-d116d6348067,676959694,3888996521809211942
+9b43112e-a80f-8acc-919b-1e876a331c6d,2158194450,7760212571962575240
+c24914d1-93c9-9e1c-56f7-4bea12605267,3023787522,12657179215932799300
+e45e989e-a6d0-1c41-bca9-13c23462023f,3566550203,11493606452943536188
+4dc6a2db-bfe5-3d88-b1c2-8610ee9e4228,1756327084,12353728025542423274
+35e68d8c-5ba7-7403-a6fb-3ba47074e6f0,1169608271,1713351407771793449
+4c0d0fd0-b7c5-3545-ccb9-2efb737201a5,3813803159,7958444102898956112
+72f72a79-160e-e05c-5a08-069cf887b1b9,3863132956,4631098489971271756
+a0569f29-6ba0-df81-c0f4-ce30ead198d6,924537598,9471080212305346547
+6bde217a-caf0-bc0d-0d73-9f3104a72df6,3250031637,14495682000080193425
+7d5a228f-1612-f1e9-224e-fdbc53e1b009,1316475241,18250144096171290873
+e1efb909-a344-436d-9f9c-872c33a7c2ee,182996790,18399485632347647037
+1d1994e3-abdb-4d80-b4a2-be55705063a6,892213015,6240334635216839733
+774db97a-b047-36ec-f8ce-bdb2d9bd2d79,2949797862,16551808948319131913
+9bdf3aa9-b835-f46a-c70f-1445d9fd88c2,4057577622,3425951045782297096
+7b53a4da-cbfc-3616-caf6-1a6787f7ddc9,3774509102,16800833940857248681
+31831f3f-2d1b-538c-948e-dfed496377e0,3017112755,4602132793913137100
+5ec4cdb1-d501-2bd9-529a-a39f504aad32,4158727764,5179735048798785073
+f1e096ff-18f8-9265-5d08-d190ef01ec67,640095936,5203679089335015485
+8aa52551-e745-1071-8ace-89334ebab26f,1149825961,2310804732967408658
+6065e5f0-d9a6-c2e5-aee5-1d5c9ddd6cfd,1743971552,1417825608607760689
+6fe65622-774e-538b-c035-f43f73ecf6f5,2459429987,8133562520190739909
+cf9cf6e1-9635-1f46-056f-4e219acaccb4,3916601027,2776889109132220240
+422a9316-935f-d572-8aae-8f45cca9b992,3537055092,52733784700247205
+d439cb14-a2a9-02ed-90ea-11fa1ec23219,3469991816,18039220929713567051
+5444b440-d021-3dee-2493-a4211570153e,19583662,1125263376963890086
+9f9ff449-2b3e-092b-cac0-05c29aa6337f,3208871945,13494901697384056771
+aa09688c-19a1-5ca0-25a3-102389486c32,1316053872,7981438126209540404
+f6a7780a-221c-86b5-88df-4446fc03e5f2,872998805,1232187105167121683
+27558340-ea1c-582a-dedd-b13f0a8c62f2,4268036464,16754487822770196645
+22ef740b-0458-ce1c-13be-33a6b72bb162,170183963,7260997982717900578
+8c0123db-e84d-7fcf-f755-d4521b22c1c2,1372659351,4555654500975169773
+eab3a1aa-2a90-72a1-7597-4bc6a783a52f,2303622405,2328942713907946422
+e5de9224-9e5a-96cc-b7f4-a0e32e67631e,3912968432,10538442135863710380
+9b090428-514d-6aac-ac82-917d55542f2f,2856571682,5293405962234575646
+1bb2a21d-d1ba-5689-3cfb-b52f21da4b53,3648958474,2010514839031336544
+bbb8ddfc-bd54-5977-edc1-71ecae2fa95d,2073457288,6095498865080073739
+7ac91cda-e095-7e38-1bd4-7dedbd90d08f,2459199581,13628282281818462221
+bc6186d9-fced-4692-bfd7-c8e6e89156c2,1670718242,779366889034356430
+adeddcc8-cfd5-cebe-2b09-ca5f913dabee,747911633,7648459598350619925
+3d5cf950-b34b-e7a5-95fd-0d0793d2345e,2264332589,11674138925736173292
+b933a05f-9b30-c97b-d008-2a8c5b82207b,1707487922,8583251785191710540
+8ddebdd6-2ef1-b11f-da22-0ebdd7572dec,935115893,3198370600533610525
+217c0d02-88be-9755-1896-3f3b65561d7a,504809895,10415320380643218354
+7d571a18-81af-67d3-f9ba-6db0f75349ee,1185133788,3901637764854329822
+03f44f6c-ec86-7e45-9d30-f2e449387ea9,1969703715,16503116259360297647
+5c4f26a9-c836-729d-64da-590e7cda1242,4280504671,11434979652304828787
+7da2f0a6-7559-9451-5f84-ba503b60c6af,1055245971,3261741639570113731
+6b444647-1c56-e9d0-e427-5d9396c70e8e,1894714348,11173218808515894572
+668eb397-7c67-66f4-e3b2-123b94d8b012,1772240089,7891107211134173550
+a4ca3910-c5cf-b163-9dba-ed1405c844a2,1327361628,5057545090142156655
+74b3db26-a901-5929-7690-23a598b6be4b,4287760016,2404950716401090528
+70a1eb8c-e739-f650-f407-b083a73d8ba2,278914714,15482700138936064547
+2d6e7de3-4977-5f06-deaa-bad767273de5,1929309913,1704290243994601970
+e8220875-a8b6-2819-9fac-9b1c505d9282,3207355682,7390034691500575318
+c3729237-3c2d-f193-f177-a6f221818b95,3856008172,3797784530404575129
+f2a337a4-ed00-167a-7ac5-5b256174c528,3042132765,8058155250378871655
+530dad1d-8117-67f5-2da4-794887999e04,2175127792,1174267944980379544
+e9377285-6419-14db-92e4-98b818d1b8ce,490893824,2395548554681646834
+cfb5f129-62da-1d73-d445-b49f4b331b74,168340700,4028237795233001550
+f400cb56-a46d-be86-e46c-47f05f23a38d,3377418551,16462682404830126464
+81d4ea51-71e8-0da8-d920-6c1e7a603fa4,1693057453,404606270461614833
+2077e84f-d8e8-1e8e-f95e-d82653a2d3bb,1774906417,2457461764248712722
+bade838f-624e-1429-77b7-3ec86a0fa37f,2447563826,16759263148760822096
+e217f5c7-fcb3-0ee7-8f4b-28f46d0582a5,124610617,9947883579352930543
+bb22b006-7a80-d9cc-78a4-dc623106cbd9,4185782023,2453947016340347898
+cba718bc-faef-b46d-d036-775661fb9d20,1065345431,7576048423335258586
+89364490-8239-a8ba-19fe-d23777e06b80,610229867,2529099154914571564
+cea9ea97-8c00-6162-ee80-a6b69ec2ae27,1382332789,4591578409499601509
+4ad192fa-41d0-4995-f22e-2600801e6e4e,892049639,10872458771823909529
+7f957996-87c0-1bbd-17de-3c0da2995bf0,2544757957,804893676215516465
+21de3896-23b7-7d99-3969-eaf2ceb21b02,699515870,6707613987856367626
+28e35ec8-9545-a673-c392-15e0df68b164,639202867,929502857343972501
+4e5610f3-68dc-0f1a-133e-0a0dd57fa8a9,587462216,8100355704211778619
+22e4027b-f99b-9f5e-967c-629349c046f1,4037338464,9802455332581428920
+49c98caf-5508-87cc-fe04-cf37eda954ed,1734977725,111442165086802307
+5930567d-3e1b-c239-3fa3-46e8dbddab64,307669901,17281952346499193232
+fea71099-672d-4b38-cd31-b620e9d9cd23,382192763,9286176656870382427
+df4b2db0-ba4c-f380-b7f9-40806e935003,1590907169,7157147357314250086
+78b9d0d3-451a-f8c7-2cda-6669a757090c,3006876962,17281949776105368070
+8aac396a-40f3-b422-be28-9a9553fc736c,1051442673,1705253771797268148
+06a25e1f-000a-4958-2ff0-78962b262f77,743672745,5993093416255528449
+a755268b-6e10-d27e-b9f1-d661d017a62a,1080438019,8622804254580513197
+59d8ee8c-8159-ed62-de97-45eea44f70a6,310712940,2433033204165778321
+a4e28295-a10a-097c-f0ac-9907354e5f79,1633697142,1634832938970596194
+624ce11a-89a4-0ea9-1ee6-01b49ad368de,1978269224,15123142823398328687
+1e2337a7-b46a-86cc-1bdb-09d2fa6fc226,989690349,11333766051811178997
+563039c3-9ee6-db5e-f066-bff485501147,2021301948,14165956471721850891
+342d78fd-cb67-ba39-3c72-4f0fd6ed8520,2021914847,2284309226825682366
+7511e57b-31d0-cb0b-f79a-f0d236db3da5,3453955472,3861746279005238088
+ea385721-d86f-a7be-2e20-9bf54fbd0a4f,2943335113,3838618129257165004
+4d445b16-ec4d-f182-6fc8-e274e53ac308,2416592298,3929516787365247027
+c4e42e2b-0d49-1cf1-85e7-581fec59c730,291274395,8457672282907429630
+fa0f3b61-ef40-5675-e2a4-08f2f2cd5524,2742791223,6128845673709807147
+0da04a8c-df9b-5244-00c9-faafdba6e440,1147607069,7706934056559670674
+d409a16b-ff58-aa0b-79dc-c8a6b0520ade,1603896865,10363928172003043151
+b4af688b-005c-140e-6fbf-3f15b01f3401,2308770101,10097489306198336604
+87edf518-4657-9d41-c7db-1df25b02ad93,2507189182,15608213264103551985
+d745bcbd-f508-2a9f-c908-ba8fab9add26,367770045,6980717008328343571
+69594bf1-5f1a-3e04-24eb-417b947b202e,2010167032,15107444033637794452
+bba115f7-663f-5b8b-00af-9d02ea3cef7d,4274286203,16284758573124460423
+fe920bdf-3711-7220-609c-0d6bd527db68,3214500083,5790463411246681229
+b43b9aed-f41f-23ca-9988-dd72bf3d38ce,360281294,11529045848459864010
+2271a000-0539-be9c-6371-c53ff9fc2617,1587157913,13514807369786088072
+3d80fd8c-1f23-6086-fdd5-c38c427db67d,3225885831,4650611828998939523
+70da4401-a0d6-c07a-ac5e-5dc4e0c9228c,3483447242,786000495184341053
+59134d2e-83b0-f710-f8ab-d83b816e0c6b,1798568405,10145840430274403900
+b06eb034-b5e3-8735-a152-cf8465643afd,769076916,4828038396955905803
+16a17210-9307-faeb-8010-3c81eb723c72,1565814161,9132877925036132319
+e69d07fb-99a1-2268-e6c6-221e267afd33,326923644,5792715211037622109
+2d4727ec-e672-2e98-147a-73213f38a246,631897039,8768719741078808697
+c1330e3d-c64d-852a-0a48-5b78e9f6c5c1,3255682122,14395293436080802322
+9f8b0f1b-b4e7-dbc3-9c58-de553e90dedd,406155494,5553367998013815960
+df89dec8-4748-8a55-1e98-e94b6bfdbcce,1978162056,12785227673571494427
+8e99409b-412e-209e-b7df-05b9cde66958,3915477296,3042175049078578714
+a6c34b70-17d1-964c-1140-14174ecd661f,2775016779,3571382672703690682
+1dd41da6-36eb-25f9-619c-55647d91bc71,1023411742,16160189653460466794
+7e2de905-e5dd-6c4b-536a-944d7a62308f,2790880458,8362449217396255886
+8ec5222e-8615-83d4-1ee2-1858d55ecf24,701000422,18082941344761188578
+756fbe90-a663-c187-7430-2ea414673b27,148577167,1505828329005996594
+80dee625-013c-4a7f-b046-57523f302bd6,442569877,6940375233315322669
+e097cc23-4ca2-b373-7dc2-161111d6c2da,531086899,11978836885762649309
+9b1016f8-a260-2536-f352-efe198672eaa,542208905,7524944280601291798
+9ae28351-e360-7c01-d5f8-f8a5aca7cff9,3056470143,1934565692953776431
+4bf70e88-7e13-be0e-aa42-1864626b156f,587586757,4967105529642853744
+3812fac0-bfd7-eb6c-e830-49d61d489e1d,1286168121,14126160986333805815
+dfb965b4-35f5-ba50-506d-ef2111a516fe,1840452463,10830695637089621086
+83a98de1-c0fe-2967-71b1-8db31f2f9464,735981129,5385792710819210782
+50418ea7-7f05-cc1b-e543-09cfc997da21,616899760,3358175478639894980
+8280ae37-8a45-1445-3f1a-3cecf4f48e3f,1605999006,11686774211617968756
+ce05616d-6049-798c-da94-d5821a64e72f,802122133,6095875553311993046
+fe248aa9-0580-4ab3-9436-241746d88133,2965752370,10544991055251444801
+c4f9dd1b-7473-9fa1-6045-5e1cd8e5648e,508297433,9965969552127571616
+d1193c90-bec5-8548-f7bf-7ffd2a5e387b,2645480537,13359501936218309272
+e55e8f8c-839b-2e0e-907b-bf574b3f9a59,1660992696,13916830976189279603
+45994c71-6fd8-efee-97e3-a7b9956c0027,2590252599,11102420440479010178
+6eb6bf19-38c1-bf45-2d7b-05077cd4ef54,1414660131,6712609420174272254
+89c1d0d1-9d1b-120b-3e84-f9e7a779fd69,1003579482,1103850267874876029
+3039b4df-0b63-8a29-7d32-002b78bdee14,645083670,14964229593811358261
+9db09c5b-7d77-ff9b-bcf1-528c47b279e9,373328007,15949786308958015760
+1df66f8f-0804-3029-c862-33d1996d53a0,3158093254,12675641171629844386
+dfaa4ddb-3ee1-ba2b-5542-4bc221aa1be5,147015323,13972415283827277759
+71ec889b-6f8e-43da-8318-5d6a3bd9bd34,3065661813,13348932960939232392
+2032e3df-be7c-73c5-a1c3-3d526bf1f96e,2239040891,2406329088858435107
+536c96db-0023-2cfd-ffe9-05d5c702711f,357731770,4865319115868764496
+8b7a75dd-3770-3c56-8b5e-684cbbff5a0c,1449553880,14601296818219614123
+0b3b8171-fe0c-b887-b11f-cf677818ca42,1424903779,12080803105816989224
+4021f06e-a95e-dc8c-bd53-de8390214bbf,3213238612,14793121423022752449
+4071e487-c17e-f59b-45ed-45c29f2d3f45,1356569036,15185033134020904982
+f5fa0f5b-9581-de22-6372-3b475d99705b,4161297229,17011065687758755769
+7ffa9769-ab2c-365e-64c1-4e76a3faa2af,3200793483,17184937967828014577
+02bb8a16-af7d-d70a-b53c-fe53292ea22e,626368968,6757308415783573611
+3d7c2ea5-ecce-d078-4a31-8e9c9e9b9ecf,916192514,9258228192480866916
+c51ca10f-c276-9572-7841-8b701cc849c0,4038320922,11572133046241255353
+875cd116-c9d8-cdd8-301f-f4a9a662d3c7,2884010567,12058782068448415562
+1dbe2580-30be-0c65-6b9d-adadbc98a653,2067670687,5872851697737122753
+4a3450cb-4685-2d8e-6c3a-5b044f78aba6,2686065720,3909706984992068463
+91e649bd-6846-ad76-cde9-cf10eab70a64,4241336379,2485386397475063510
+237ea295-6020-97f5-6c93-f741ba0babdd,42352468,7592464880055915727
+5ca5a23f-70b2-0cee-07e1-77082bb018dd,2047162891,3463192082106495124
+21646728-0df5-eba1-e643-56e7768f7023,3452423553,1309535163670028217
+43fe7b18-5ead-d6be-51f8-d22e5fbe0ad1,38800617,8881404586906346368
+0df5f7ba-a918-e281-d260-35ababdd27ee,4001975551,17502192470444579162
+84b48f7b-c958-9d27-78d6-4267d503d318,3574849936,12068771206552198808
+ec24d984-8c8d-5e2d-9793-6589aa4e9e96,2878758569,3471971943521911913
+de7d660c-9d43-9eeb-bc7f-9264230b21b1,145480249,10349241695409544600
+048c8912-32ef-d3f9-df48-f3579eae6b5e,466994286,15697183633964806995
+8ae4a586-d65e-864f-e5c0-e838791ce6d5,4024732190,8426847822449247068
+375d0987-fde2-a236-e79a-8b6d50c833db,599687732,2565615676571064009
+3d22d35e-458a-f1a7-f775-b07fb654df6d,529311832,13971429348241444447
+e43301d0-0259-66f5-1cec-11ae405b5c9d,3907022270,16449935883696480944
+a2ea5425-357c-f87d-8b2e-903fac55469e,3467232760,17856086243162103276
+640c0889-ec1a-55db-b420-b72268d17128,895387973,5240536877603182727
+a94dab38-d7b2-72f1-766d-736ee1946263,139493871,8103079674450454333
+f39489d1-0c4a-d40c-a560-5ce83f54c273,1253543747,3517593287469731926
+cc4eeaf3-ab81-cff0-8ab1-c11fd861bce2,2059945116,5324030033234169064
+612f7b34-1437-b832-a56b-c024004030e8,3868084054,6355368784121869296
+dee551d8-1d1d-aacb-a957-796598ce3d81,1941861914,17497360871547812004
+fed96d6b-c28e-6144-6155-4ab9eb75d309,4071273308,1483496124978697808
+06a5d40c-3cb4-85c7-4390-c2d5cb428d43,1959647434,12002202834631923863
+ad95ec38-0ffb-2e6e-6fb5-c87b78fb2b61,3386261028,8069803177377309222
+38cd51f9-6ce9-ae04-7723-9b0093641928,449393741,17255211231381652620
+c96bdfce-fda7-f0ab-ed0c-5464deaa9490,3817528645,4609084832284091764
+b84b2495-ea82-24bf-63fe-c62114d54605,4264266787,9155110526794436827
+7262f870-e931-3468-7846-92a73366d814,2582839908,14608333011819655989
+7ec0f3f3-a4bc-652b-c8fe-e85095ae24c7,3366032923,3043491621382517854
+834d9ac7-a3e2-9367-be3c-d2671319b4ad,2176151067,4183688616996499810
+541aa2e1-334b-2013-91e7-122660943434,478389619,8351870300565784158
+dfe42aa6-981c-7d9d-0cfe-53dbf91eeade,2027421958,11728395459259067627
+84e31e3e-872c-5a71-5c3b-d5230e8c0546,946803430,2863579251748022074
+3ff0a704-52a1-b169-9c8d-cf457d4101fe,3508005727,1805026983453094904
+61aa58af-4524-add6-dff8-a8520f1818bf,3507852649,5562034588238890014
+5dccbe7f-5adc-f3be-2dba-087e7e19354e,270758984,12806729965718574239
+be9c97c0-35ed-0933-a678-3bc3158de516,988210621,13329385262545601827
+85e37f74-d4c1-18c6-2d24-59754d84992b,2800908755,11804571984361536824
+4d7491c9-053e-f9f6-7fed-832fc22bc060,2105214865,1244817147039574706
+244d8feb-4e94-1ce5-6a68-7cb6e982a5ea,2081763773,10464334616094938161
+5811a5a2-290c-e8ac-baae-b367301a63e5,2890000399,7268311667631235096
+228e3d1e-b19d-533e-cb01-fe11553f5c03,1443635076,18267415071671788420
+01a7e165-d35b-4e82-15ba-4177cfbf3b82,3491767457,18328337461281176812
+8fcc2b06-533a-245b-5b33-d35984c4ca1a,139127849,6425696337013106127
+7418f1d0-4004-05bd-d5cf-2f4978a65c0f,3344021104,11879220388271572744
+ef0edbcc-68bf-8ca6-ff5f-4aaed6ab2526,3732319133,3071751253936620347
+1da0dd04-d27e-5a0b-7268-a12ffe87256e,653229792,11702743106267935230
+d898ab10-10df-082c-2246-aa26aa393215,1855139150,17865454737919650744
+92bd9665-5b10-3040-4783-5915ef5a09b9,3393648232,16984881553058956990
+910eef00-387b-ce1e-e359-19ab38b097ed,2048092143,14952926805165676464
+5b36b948-910a-f7ce-abf5-dec55878956d,2391922802,1738368849094366282
+df6254bf-9ade-90e8-aab1-7d3637bca11b,4070496627,18019775631673230241
+17cad1f7-4b43-da2a-a9e5-1808824a16db,3217509916,14431527440004562950
+d517aff3-13e9-97c1-7299-883f117dcc6a,3362233210,5317413207170552708
+0171296f-384a-2a46-5a71-28694af4e002,1983530441,17432309521724724149
+5eae4691-7ebc-77c7-4283-8613fb97a051,885335947,7532769092380099951
+0f037d72-9b94-702c-73c1-c8417c64684e,2963733030,524354380802682875
+9ff98a22-5529-2d91-322d-61097bae01e4,3938050326,14574379531623053119
+9ca81e62-94e8-50ca-a566-b40d3a340f9c,2416503183,7653816924373958382
+59c09e95-7a13-b000-bffb-31316804094b,623478118,6963414895603863923
+90874d53-54fe-c34c-9144-182bb0a0ee8d,2496320454,16572232812598302791
+308aa176-5fb3-365d-7e98-0a8296983011,151024604,4612837210635948586
+f8777a7e-a0b6-68af-f457-d73c55dda2b2,3758808902,8259359157756874887
+8b685219-b34b-6fd0-0cfc-872132a98c9b,3043532780,14707275524408886537
+86f3bc0f-4118-25fb-2b2a-d26020d80945,3030562816,1584440736110852012
+e89f7939-7e40-c41a-b14a-13cfce52c799,653519860,3775001712014897060
+6d115ae4-9b1d-a857-1420-8db0f1003f40,1116868631,1179914464433902524
+aca5485d-e3e6-6037-3819-5a1bb60eb65a,4012428566,9165243013097943599
+1344bfa7-66e1-e26e-7f55-f884d4c79113,1288524698,5512839789407562405
+bdbbc60c-59b0-f294-3646-ba910b64e2a0,1291508912,4857043675665708100
+69eb867a-d823-f406-4a5c-e4760d5e8852,2029488942,7627760955681093648
+0d9762e5-b261-237a-0002-77d6e2e1e1fe,1501996553,17708529832637479132
+07c2d722-1a23-1875-04a9-37604976bc07,443871221,15323109934850439586
+7807555a-98bf-0125-965e-9bcb23851bbc,2136489359,1498345567976177323
+2f683b26-b684-94d4-4273-daec10c82842,1216437964,6141801564584071223
+95f11fb8-2eeb-614a-81ac-2806bb03d731,402229279,12142219421565101548
+083719af-d53b-5196-0ba9-be0afdfd85fc,1159863579,4491841987609011195
+d2b38493-607a-1e59-fea2-0b3d04dd34da,1593373190,17921829862220603585
+95370c10-82bf-2efa-c9c9-ef062faee1c0,1947299621,5156123094338000880
+ea24847b-28ac-47a2-a731-dc908e5856e4,2077510514,2112965538804064706
+8544f5a5-56a2-36eb-2b7f-5929957660b6,3715188195,13379199718557995314
+793f5339-6f2d-1e97-568b-b641da2b3094,4196578375,10441581914840516197
+6031d66b-07e0-e53b-2aa2-c79405aec874,4245622633,1864477442863372648
+785fc71a-8681-8c6e-8853-195a934e1713,814938555,17068279787000384215
+54be8f1b-e822-2e6d-7af1-10467b73c29f,3262330291,15039171106986034720
+38ad6291-2065-84ff-2bca-54e34ccb5a91,1111173033,9369469721055602781
+dda9cd66-7751-1161-38f0-ab804ac96832,3281181980,3180347414837691897
+74793271-457b-fbab-4edd-29f04212ea60,2845974677,15349419797004947141
+c37366a7-6606-3e9c-1c66-aa6f474b311b,1416111987,13941108578329480263
+e2bf52f7-f373-a0b5-300e-5b08de1d108e,216337021,6723804514041313668
+2371424a-2cb1-e5a2-f78c-f92658745cb9,2307171925,18309036225700376876
+1cfa28b8-fae9-3ea7-57ff-36b64a847bba,3033996795,12299451836720868786
+34a2f94a-5ba8-be3a-2188-8d6f47f6b471,3944426242,14121421650829953382
+bc42c6b5-30b9-9ffd-6599-3c2e1b452143,2225913374,9873591219967941267
+c348c177-88dc-7cd5-39b5-b2d36af08fec,384732418,6210997097885027871
+a51bdf02-98f7-ed6d-c6dd-817061ddb19e,4152043599,13192774280939899613
+a6f97bf8-3a16-3f12-4b1c-27ea9c8cffb9,2395793135,16589824169785987525
+162c5f35-42ea-57da-e069-c2415478bb4f,2490417480,7927997480729904280
+ade23658-baba-0e19-8885-89d48b8d2838,2585780586,17893094561699678839
+13d6f81e-d400-cf18-a4c4-1a1b15742379,4280990117,2566835599389790063
+ca5c8011-7c35-ccd4-19f9-2c589d28303f,3290105355,17560989636119385358
+161abe62-295e-d606-6933-86f9561341d6,1874802093,12730203956133140109
+24e1a5cc-538e-125c-b302-c9c8bce4750e,1615907437,8589534770530178423
+94f8ecba-7782-653e-8a74-ebad652207fd,2431289796,2887555707971487799
+78ed8d8f-eb4a-0141-f777-2ebcab5d69be,1361446591,12706016446600163578
+0c987016-ec39-1185-b72e-b29f75957f14,459665359,1246873524126106968
+16692f64-853c-42c6-54d6-be47bff48d51,2671481729,13402323191580408407
+8dd5964c-fa2a-f1be-b565-6961220d6f35,1420562088,6177392406267489137
+72635e46-bd2f-f09e-4034-6b6e87553551,675572965,15527417875260852418
+109e551e-5c86-1f46-9cdf-f4313229edc8,2566000383,4413897561897525034
+72772280-3535-45b1-75f6-a2b3a1e65d65,3351322822,16291471469207912707
+150ebca8-e27a-6a69-081e-34be9626c101,674230196,4411759016660936924
+fab82037-8281-06dd-edc4-3c4f4641f923,789701692,4269834148213100813
+bb0a43cb-dbaa-f65c-7ecc-3093a1ad3ffb,3673607357,1816236693472314418
+9b70db63-1561-9cf3-1b8d-d29412fd8c07,4200884142,4364754857080484455
+246471e2-86f2-4c29-25ce-e818d1a53d60,418005305,12533496451007638906
+5c45c1a4-d1a3-5b25-d5a6-c09cf5828d8b,1154103359,6211414680492609527
+8f3a0670-167c-4525-bddb-b4ab63be75e4,4011064595,12413088791280762162
+0911b384-64ac-6b89-1f6a-f20963d74cec,644281450,4007102750919925081
+1122511b-7736-c929-8aca-207b7bd01280,1271840542,16624212005362985236
+88e49bb8-3d81-4725-09f4-f0e8fca17f05,2585609652,14712371435308540208
+447a5d55-a3b9-047b-dc82-4f26a3aa377c,1000564757,14563119098928433701
+daa43ba2-0f6f-38de-0f43-dc8370a324a3,3759938942,11429383585806614571
+7c08af49-ecc7-e01f-9ae9-1b525ad1161f,2455308168,14085438192733532698
+4e3b421a-8edd-8fd6-9ed3-688734f59775,3610695932,1851468337425073639
+61ec10fb-48cb-9657-b713-1b855672abb5,3516583430,5667336664566573461
+a65b2713-804c-e7ec-ba1e-9ba23573ef31,572637485,9703783043751078924
+8eb2385c-0d27-56c4-03cc-2b0d0969de93,1999104722,10288103961804332932
+2fef04ae-3a09-3b9c-80c3-75ee8e7c07e4,297000591,2638422585102181639
+6fcf1991-fb9a-ccd5-c4a4-471b583204ac,3643287900,16647883520708560919
+f34d5cca-acb6-d6c3-d836-760da4b1558a,1489068179,3448567663192900384
+f9e8241c-464c-5343-6de9-a553cfab31ce,4094924923,2998613898330097764
+ee02823d-6bf7-4a5e-dd02-da6ee78f6cfc,3952471909,9519742649057610502
+9925cb6f-8f49-692d-936b-e88d89d676bc,2739606123,17684540347082652912
+72867692-9456-d118-458c-2a715b66c65e,2526523413,9345120574773025589
+ead1fca0-1f10-baaa-6766-e3e261a6a39c,3518122487,3711280043350474668
+4ea96370-34e9-afd3-da2a-d504325a09dc,2343390022,3886931478651019155
+2a3d7892-7b42-e8ef-1cca-ac4c19483a98,2034243505,4999323408944669904
+5ef9014b-78f9-6457-9b96-1f8bc5d86cc5,3147313700,15171615826974831325
+4f1076fb-4ddc-67f8-3131-d064511504ba,1090151115,6855086002244428665
+00f663df-8c7a-da75-8c77-99246f45edae,1297801286,134033153488056969
+0c4d65f0-ee03-6383-1976-17bac1da140c,4233994391,8324653800315584969
+8cd156c5-6235-3299-845b-2d6a917ce786,1287311675,6640468532815557103
+f5edebc9-e625-1cbf-3167-694edb6b1f59,68222540,13870999944793755842
+a9f3d99a-8b3c-a7c2-cd3e-f6b29a320885,3635233655,11863759904838590252
+19bcd187-56a1-f583-0803-793bf0cba60e,4281533085,1928669986976102674
+bd1d46e4-c87b-214a-6419-c3764c0e5e77,709820667,11427431331135138597
+0e69f39d-a153-6d96-0fa8-b58317b19cf2,857728638,15384322329857234125
+e20262f5-264c-3211-ced2-f4449c4741ed,3296721726,809444483138803829
+a7bd1f17-6c48-18b3-40c8-fbb62fc02683,1104103254,16357381114905789691
+7200ee7b-3c97-c174-f3fb-0b2dc44128be,1734196705,9119878169822359708
+d4bf8bbc-167e-2a12-6fd6-5716d685b746,1470496645,3569231853342967135
+6efab138-9fa3-e3ea-55f8-92fa430b3eb2,2474983119,9121532245669154287
+fcbd8ef7-95fe-c52a-de50-ecc728b48a09,1481127814,3083661120564067513
+f5e26c1a-34e5-c460-22c3-4844290a64bd,454579820,863411129308988682
+83655310-342d-8168-6114-caad355afc87,3230504556,4946806255212499808
+11e3bf68-ace1-d9b7-562e-c34ee7c345c2,1182749040,1725431360050020620
+a67b9ed1-f1fa-a19e-0e05-d4b59cecd325,2086539106,6427574398245127005
+91fb8765-f809-3af4-8340-44a76fb413e2,702090419,4488531918514299495
+1cb869b2-4f73-b4eb-5691-28976913f3fe,2096806117,12892818448823302460
+97e3180a-48c0-6b38-2185-6833cf0450c8,987905452,17351877488045103187
+5981d667-a9a3-a3f8-b279-b71bed624b39,3280217950,11199593484363206148
+afb42c2a-f553-ed87-1258-cc7baf4ea4b8,588927100,7489085261360868079
+d9851670-b9e6-506f-d017-f3cfba83e938,1816758783,18357536431706600620
+c4f11771-fdb1-7212-7d7e-5dbed4779fdb,1453103832,7510702237604889183
+f8f7378a-c78b-b918-3501-d91fc83fcb7f,4145280150,7594254581099898034
+c7b2cbe3-e5a6-0e18-99c7-4b0418d71e76,276638392,17423011065880266281
+b70ff421-6954-860f-0531-b8a1524e7f2e,778249503,9626350857745785820
+43807390-7a4d-c8b6-52eb-40ee794c7767,2284685113,5559374707541646322
+9a036115-147f-f483-6c26-fd3ae0ac91a8,3673576625,7651491105546317662
+84ce39d6-feb4-7f2c-dd4b-b8432f0ddb8f,2107730664,13375988615882793429
+ea75dc25-b7b8-f97b-e608-7f4d4c1d14c1,3004630547,9508227975718935560
+749e04e1-c12f-dc21-7e92-268d1c58a234,1272189814,5333166325430370053
+297a2db5-5611-498a-47c6-520072c3ad40,3692666199,6816885923542875542
+11abb4d7-c41d-fcb2-9051-3265721a9514,3956436462,4445491737275112511
+aabf6a23-0355-6d6f-bfa5-466ee27b145a,3449320540,4661216243406260837
+d09f9a87-561c-a1e0-f556-1747c9e273bc,3387161147,8124250330775089830
+d587f126-f690-a32a-5108-0a0c670b7ca9,1335498790,1980171682818188024
+a83b1213-ea07-2eb3-c205-59840156cd01,1554058190,7812555259634121545
+67a2db10-2d13-c366-e37a-c3637d89f009,3685275908,13085355297820130126
+c2aac081-3dd6-db09-23dc-b763ae463146,1298957237,2009136101252076780
+2a085b3c-7c85-8153-e396-877e6dffb6f9,39977589,15218188341202583559
+a14d84e7-f8f8-2ff5-cb31-a0efa4ddf06c,594323791,17017291963765617503
+dec79da4-7eab-24a4-81d3-f69e4bc8a4cf,1484076616,17331615072687486419
+30bfb76f-2b21-dbd7-4c63-6f410ed7cd47,1608253604,13574741176777533244
+ef3c6fd7-2012-e478-8436-bb11cb95817d,268483359,2952912841365435557
+c9d7cd6f-023a-6f87-056a-a811eea418ec,631451193,1050261475733419424
+570feb0c-22b2-a175-68a2-756324db0678,55056219,1510249219500725471
+082ac6ea-2fef-c622-d24e-ecfdf7bc7bac,263162151,381314439144099717
+80cbd8a5-91a8-796e-549a-31ea4b57ffe6,2343273006,14094845027463540512
+4895128e-ae39-c444-7857-551c08b6e1de,2506708760,14163282553536334868
+6b8f8d64-013f-91ee-7d30-20394132b880,212832397,6680236026944399029
+6185fad1-2690-703d-0594-24b2caf59003,146278180,8226879859732561907
+7d16f216-9c41-959d-ab9d-eddf7ffb7e5b,3281523197,1560823523893676659
+fd858858-1c90-a276-7955-b5494e612135,1435714908,13494699942318524407
+9af70375-83e0-f6d0-d854-3b36d5c3ce6e,3712648988,2905399932408408979
+ed67a2df-3bb8-3312-dd72-ca4f2e6019df,2709647325,17708122237319857648
+5aac0bfa-4754-03c7-c888-1c46370b147b,2013613694,13300672851254174939
+eb91339d-946d-9f04-1ef0-8e5b80a4f8dd,3222168655,2936749510873711897
+218eaa65-e1df-4fec-2206-3186ab4188df,1361017661,3124945028317399821
+308e8a39-2c32-dda4-d01c-1138e2bb39e2,1179871137,6729922008193998210
+eed26cdf-de3e-fec3-4842-7413bc60e79c,304239049,11239458756658876259
+634a83de-f237-67d9-84ff-61208fc3f699,734556,3815879118274859757
+57403490-14fc-62f7-9d08-753cb5578a58,3714821637,15907787429603288619
+08db778f-4a03-df59-d780-4953ad94c8e3,4032652628,5991877074078975020
+583ff8b7-b71c-f21c-9798-f43f9397a0d8,3536566601,18214682864374878522
+c0c8dca0-1e8f-0692-078f-44cd5cf4633b,2728673874,6808163707623473992
+6d6c984e-81be-32c3-3669-855cead96551,1209247041,3399316278058929603
+f9509866-39f4-7a90-5e79-3ebaec434ab6,4008543250,17951588521009400169
+0d16811d-7650-d312-8725-60bfbae9acff,726631036,2672891522276584624
+b1eeb984-abaf-c09c-716c-f9c32b08b44f,3950001074,7177654096534257338
+a1ffd029-531f-df4f-fa41-66571ba245e2,382606927,16419478113355124757
+aece3b51-40f0-2a91-d92b-9b65c7cee116,755430399,11839694626890382622
+d0f4ba5d-421e-e569-58d5-cada240ab33c,3733918667,10292420577090301170
+9cf1e6b6-2f7f-3ab5-28ee-1222636cb1a3,2328205476,251123256988366748
+0380836a-d33b-4182-3e95-52afe1ddbd01,3049587312,15255448635293318041
+1f7e8050-a94b-a3cc-cb5d-21f3346feb53,172381737,1192068313863615810
+b3881776-6b48-6a2f-9a34-7d9bbf0b1bb7,3582625787,7065625690892321530
+d20d8c0b-741f-601d-007d-77cd35bd8ee4,1983094843,10602844230397313650
+69596a03-1545-4fe3-b0f6-4c20d8a1c68b,1650639800,12880564767272804430
+e0ce82d4-bafe-5d7f-704e-48ea11413d07,2070408515,3628718432974540200
+1f4acd5f-6476-66cd-45df-960b8ba098d9,2148148086,935758297737480481
+9d065b10-d04d-c7fe-c798-06a123573c35,3407501198,17577704895754359749
+844ed7d3-f58f-80c6-1674-a490f111f9bb,3982146139,4323931671891121014
+af587ac6-c07c-33d2-1caa-14dacde4ccf5,2704117499,1437307259504677535
+76fe03d0-9578-ec6e-bd59-f3c5644a10c5,1751125566,7208093663154686663
+d055a98e-ea83-acd6-49dd-fcdd6f36a704,297968211,3581175342844777933
+400c0eb3-5beb-33e0-04e8-55281a06a004,181294531,811656850122596433
+70fae1dc-8190-8fcf-62f3-aaf59e53ac5e,2515832616,14315072663867773061
+d94a9d24-1f6a-1f3f-d934-83ff8aed9714,4084586487,7148265559226942798
+9574a00c-6c27-cf7c-6243-de155f95daa3,3407256428,11479391839778565444
+36690b88-9af8-c970-c0fa-450f2492535f,4069310,10941456042807048644
+8f30a523-258f-f9a0-7d33-685485719a47,243195075,6464699125788545222
+ae17a5f9-9813-73ad-0148-7b9bf6620ac8,2138887763,15320212810888537300
+bf99d251-92e8-eb14-1cc4-ddeac872398c,3740690172,14716652790572865377
+a50955d5-593a-d52d-1b4d-c650c87e7622,3013888282,12738053773781755391
+bf91a19d-3bc5-0dc0-7b9e-9dff30a7b432,2881277872,5452759835681322693
+58c95502-16d1-dda8-053b-bdfeb1eec422,3830831643,16910227656605184347
+f91eda08-48d6-e8f5-7d21-4c5e98f7e2b3,2035038748,10628833630746172389
+f22ec0f9-068d-06bf-ce99-f7046e9535f2,1011001677,13086252863692337731
+4a55cf15-783f-c42f-a302-a9609c589fbd,2388466479,17280450163358040336
+158ba094-3495-9b08-ddca-e363e9d1f688,3275167790,16497611192221387256
+77305dcd-c2cf-a524-12d8-f62537a99061,322952637,9684054378657247261
+7044277d-236e-73e9-882e-a8321ae567a9,2327532483,2088677795130533725
+63b39937-5a3e-3414-35be-ff520cd3afe6,2248047856,10516560758057184391
+18bc7fbd-aa37-1b32-c8de-4807fd78b315,4167321007,775993006668285381
+1695484c-7238-9f4f-75a2-f38907105d4d,631197210,9359628730954889522
+c9c2560d-84cf-8366-98d8-979b0c368bd7,1809436206,18372092710783600710
+f38bfe7b-090a-f86c-de81-6bd54f68bed1,954281615,18193561273209533322
+7eb37d76-c8f5-4fd6-9838-ee6f42535058,1744212690,14717431079220557772
+1078eede-0938-bb63-27a8-1d5363d47806,3604049982,7779303038924211869
+770b7d05-767c-0d49-4ff0-b0093923e355,53281663,9230078016539000072
+ef5b4799-f926-de03-e175-5a34f467a112,2664452082,13907087349527868725
+2f7f3333-4933-5155-57c3-5cf31a406627,936423073,16059272349313003160
+3b804b72-c9ce-bba5-a889-01a13352e51d,3933180575,1257447143149048122
+7b7716ab-7e6f-e875-76b1-09c54cc20a42,1128734031,2249239552239719044
+89cc63e4-8445-381d-3061-84956418fd35,2423560907,6342214754635652874
+1ca85baa-30a7-2781-226a-332081414780,2256819065,4918112399817331093
+abee4b72-0054-1dea-342d-7bb5ade46942,2754405988,2367559066915230765
+9d1b3c26-9d81-9da6-2378-4df1be134f0f,938151293,7678256097478448792
+6c758e63-5f42-c6b5-9683-89fad3340334,2111639764,11598158295623883879
+ffd6ad25-530c-97c0-975b-cd21d5190e31,2951776136,16824895169822262366
+10ee407c-b263-085b-fecc-383d39c9247e,1550967255,9397055922448949740
+bf15f239-855d-77cb-cc45-9f7615f7f6e7,3182592947,13102298893596459773
+99f3e2c3-8f6b-edd2-6035-128646b8b5cf,2219664462,11360357932036660290
+e00963cd-0ab8-1595-e355-96d36cf06bde,1411622394,5922082754178675782
+565e880c-8bb1-bb29-42d1-1e7d7be0bcfd,2576610684,14563768816305318457
+a4e8c1b6-415a-2f29-38b0-a64c21794578,1311026877,406084432764349428
+d5322137-9fc8-a65c-a2c9-f481ade513f6,2896939845,16509650546974421217
+6e531982-27e0-3fbc-8ebc-f75506e40cb8,705979133,9408090842643412134
+2b811322-2131-bf86-0162-50e603e8f885,4010901781,11303164785934466727
+41fb7ff5-1f68-e9c8-73ce-53e2d3c11ded,4227208257,7134515375873108323
+0c6dbe67-dc01-dc4b-e42f-5e75e35452c2,1878963156,7678696645560394067
+5952f4d7-12f9-17a2-eaff-9d6b64bc9a35,721488979,1685308259609009753
+cfc6178b-2f27-8e1b-f606-4293fcb393e3,1260229528,14478939221277057597
+a5f9cda6-967f-9342-4350-27a7c18f9e27,2016794270,16027883093815074537
+a9b16ac3-a4ab-4d72-3a1d-67e6ec2d6078,2241992652,12954367783969520560
+9f024aae-a0fa-f3aa-a65b-35eb3da6dab4,801515943,15835061549912748508
+e5293530-50d5-d04d-e208-c041a9a192b9,1117457942,13785643272902047200
+d6b7f796-d5a0-46f7-369a-6194db196f32,437941615,3160991282976891218
+55ef0770-94bd-a3d6-a3df-f7ea2008e1d4,3241978330,13051020638271480319
+636f9b9d-7053-30a7-cd46-3e1de7f3bbed,837289961,3912743708305770241
+e005b3c5-8198-eca1-5749-4b05520d84ed,2507860129,412006110190246462
+a1734ad5-3a9f-86ac-d350-8612b0f7ad5b,3863846993,538326618298383155
+bc1696d7-2868-0b21-be76-cdcbf9011312,2573067575,11009870855366337677
+bdbaa1d3-ad45-4a10-c2e0-05a14ead701a,665014145,1467283680603960933
+228582e4-24ae-15ae-60fd-d9647a464287,2239816123,8661559971639675560
+5f7346fa-d0b8-cf8b-ad20-76cdcf85c7b0,469017513,12667136205945312120
+38a359be-3f93-4d7f-afaf-1458db18ce23,4276954966,2602008842312919725
+a50a538f-6ecb-3905-4541-d7f476fb6273,4074181569,14785477959266714028
+9b50ea18-6d7e-cdc8-4531-6eb6312c25b6,2735641140,11161618444053421482
+7671e7ad-aa7b-c6a9-056f-365f4f5ef0b2,2691355704,16122062612896637044
+0b5418e4-64a6-7577-d91f-8ee484b139a0,3820160656,14863267849110368201
+6871f27f-eafc-58cc-b325-3754bc5b600e,404226056,14850987461125336431
+314bc2ed-1b0c-bba4-6753-9251e909fb59,3366216159,1911866207316410232
+3b9b94e0-93d1-0f6b-8601-d05602960a60,3447325977,1014209185901652712
+1469f847-0f65-adaf-7a9d-c8b2ed98d399,1369968840,13300196127114638404
+6b5125ad-b6a6-178a-c13c-b8141c3a060e,3246028079,14000249786169512959
+b25e1bfe-98ca-2a26-e2e8-e0ea785f1a94,230615915,10671585459256911151
+782d8d76-4e51-a2ee-11c7-fd04079d084f,1920408627,6452289149618719728
+b9c918d9-feb5-f28f-8ec0-820e2de350c4,3666120327,7955806307004307860
+74b58c65-9c7b-3e2e-4313-0c430e468de1,1386602190,6504205600088193631
+763eb431-876f-24f4-b5cc-a75b9cf599ba,2884775883,4195031572513854426
+c50fadee-9f6c-06fc-c62b-f8edd6811a8f,605550487,14987056664419442509
+b7ba4c47-3051-9769-cede-915268901901,505269757,4258216842505767165
+2d2f8580-fa1f-34cb-ca9e-6941288010dc,3743129768,14480460066407034585
+44e00de0-9d55-3ad3-50cc-fad9689521ab,1969564952,11897354527676603486
+7283065a-0d2e-a5dc-6d91-f362b5d24a37,4033421526,18255978304067851544
+e752e2d2-e9c0-d715-2fd0-042ea865f27f,3776114132,16504490800162699534
+3e171054-5ad4-35c7-49eb-d99bd286ee2f,2544984744,4490165752983326647
+9fa41f18-8b0b-674b-0555-592c381b7e5e,2563360102,5301959250627947085
+2a43f047-9c3e-78e3-77a4-39f881b481e5,4212814110,14138502369283785758
+96599738-e365-c089-24de-328ef345c92e,606523818,9563161212601632944
+6c047ebb-0e93-e531-2eb3-1bd567992884,1062541487,15364950462761586445
+fff4ea90-7e48-9c77-567a-507bd2e6c434,189946115,7479970891063404181
+203fbc80-1ee1-1f38-c4bb-3af363dc2890,2498567609,7906781609418437212
+179ab27f-8fad-6274-1400-7c8bc7cee9d4,3997701383,14698947671869554874
+1b687dc7-b44e-421d-2dc0-cab8cfa53759,32044719,10107430911964248772
+41d07aca-99a7-ca59-8c16-78097032be00,3207593589,3801440142798840621
+abffece0-10e3-da5a-47ec-0e110fe2de7e,1189751114,15353696208473041706
+e6ce81f0-695c-6c60-82bc-ad5428c203e2,2036597541,4802828418743797103
+3a08dfc4-c23a-a41f-377f-216882ff33a2,2349385995,14602747030573375718
+0d977a79-2db0-0603-ecc8-cdb89a4412c6,2095540993,17293122999657988012
+1ce92c8f-f7b3-6242-794a-40a60b5ca49e,1937182659,17184996065912924998
+ca0b9ece-5b5c-37a6-b439-73add2db134f,4016479070,4112857934634524321
+32d58c8b-6c45-06d1-b1d5-c742cb18d7f8,2105787297,13045632938908758280
+05b7cbfc-8d97-1d59-0855-0669e8eb12dd,4272881116,5223720683719425783
+b9f1b4d5-520d-3bc6-edf2-bd30215104bf,2848760928,10281339050366682330
+aa38bb3d-585a-244e-6286-4d5861a2bb0b,258666454,9214158991479102632
+2d143c9e-1bb9-d65c-d9cc-eeaf81031c29,1350668342,6127435299512132644
+18ac4834-f2dc-db16-d30a-7a374a1a5f13,2368955754,4787918008701597183
+09c63d32-ab4a-2f4b-1996-7cf93d4535a9,3541161526,9028576507957761113
+0e04cef3-a4c8-53be-8593-ff7431b7b81e,21969482,5371412278708248236
+f0e3f762-f164-62e7-9bac-c14affcd253b,3047828823,6473591564093816472
+6b3e10a0-11da-fb72-2246-4911f413e411,2723742555,16306011110221001953
+1fddd741-9b5d-2153-6e7d-dae09b65eb2e,1473771341,5839193195858978598
+a3874b63-94c7-7c49-12d3-c7d25767a52c,3680286622,11569871789833952799
+5a4b6f69-c55f-fdec-683e-e3ea07e8f9ad,881894000,571759043150619176
+fa1bf7fb-5443-4b9d-bd2c-f966e56307c1,268022073,3897258749949922536
+6b0bc503-aa19-2959-7538-b479599996ee,1161153,2860792549034683583
+2a639120-6b86-9a98-d84d-c499743ba58b,4127212502,18355294410460740858
+3173c1c3-5465-c4be-c61c-5f8f80540237,2216194773,5858975729635815710
+8675119e-9878-d512-b5dd-874210ed1d35,425302826,3945889429603175752
+3e9294cd-3572-1459-9797-df01c998d27b,2160232818,13401974675119311295
+240316d3-7dcb-d43c-8539-20fe8c0a8d92,3259754173,9033115822751984579
+e74e9f8f-bda0-5136-0130-a6bd1cef286e,426095847,2268661891607093019
+f17a907e-39a0-725b-b9b1-465a086f2bf5,423861489,434558251045372729
+e36ea588-dd2f-82da-defe-2eb6f8a93a45,3321110693,3628016827047697533
+de8c9363-fc1a-9c53-5c2e-08f81a6e51fe,1670440127,8657608931961977589
+718d01fc-b2ea-aaec-d5b3-5cd7a1a69237,2731202500,1574177220509902717
+8300476a-71fc-5c4e-a67c-48f2f66a6a0b,56892234,12952928918431970547
+c0c4a0e3-a579-f392-b913-1f95839236ca,2292784912,11703711775169312915
+a00452f3-5dec-a252-a41b-ccb6a2eb7309,544381625,2581510846516340212
+c524f4b3-274a-2568-a85e-2fdcccac44fb,1755631968,716026752527576502
+abdc1291-1b79-a803-4e19-0e5626de0d6a,351704147,4138643810903252166
+0ce27065-5e31-db5a-c2c0-e4e2b759c4ba,1234618118,1301455724688059369
+2864ca7e-f03d-2d9e-411a-fa2f339c9be1,1270440752,10627821877868320847
+4e93a112-bdcd-a6bf-98d9-4c16ae5aa3b7,2756827849,14656988557878674187
+fac541d4-b052-f4b9-895c-f1201eb504bb,962765887,3137629319247189762
+ad268d1e-6488-a4a3-6c47-e1ba5e9f9ad5,137737113,14255105250511010410
+2e6e0ba2-41ea-2582-8d73-949774fe53da,641618470,16939899075159690426
+8b251a56-df4b-8e50-b543-90129004d8af,730738088,14922616357972389604
+0ef24816-8bfe-c1f3-3279-facc20c25390,860688564,4918502944862929535
+f402971b-424a-0275-268a-22112b194bbe,888175233,10483721607118872280
+fe379c5f-922f-11e8-84b7-0cbf00c3f9ec,2508671973,16680283800201461597
+9f109c68-8c62-1fd2-74c4-6d6bb2d97529,621958848,2870103633960961609
+e3d2c5b9-9f45-518b-d1e1-e945d9214a96,729741434,8776198449258582689
+fd25dba8-051f-0751-0846-4fbd47940b4a,173729085,4327900739708277660
+164a3a9c-a7e5-8a07-9a3c-cb8e38d97ca3,994791800,13170294653265428131
+db8b0b12-7974-8fc8-337f-d2bf5daea968,2243390867,155160409634802530
+b54280a2-c358-b659-ad7f-0d8b747b6dbd,1558030865,13625423384878937737
+b17f88ab-0468-e21d-4e62-22a4e49a79be,3068444173,18444450409030766092
+7fb96f2f-b622-0c02-f3c2-76191b30a41d,4294581740,12150980408342517024
+8f4ededb-4ee1-57b2-f1da-78326c8f5bfb,2933623011,17493542965020681419
+9910f868-30b8-7161-c7b4-5d107405a2d3,198691906,10800075644732940104
+96fee02a-1c17-6f46-813d-11f1c10f7f90,2697298545,1499032932106640815
+87182065-07d5-cab5-cd0f-984e8da6e98c,2788047159,7758990521368204370
+a1fb12ca-aef9-6062-8212-c62d5787c367,3898540689,14889985564931291630
+291cccd5-8702-6782-83fe-1b633fa08151,1445405652,11840957296028644679
+9734ff71-4af9-72b2-eefc-c02e4015fa77,3121805347,9077207611482347565
+6e04f056-de2e-7cfb-77cc-5c4cc2c7d292,2073383595,9780622624087396597
+ae3168e5-aaf4-bbaa-0a2c-1b6665dc208a,2742559889,12552275864066176228
+ac8d2872-41d7-5c5b-b1b1-3b8816ef00c2,2482446742,7620901473798635484
+c515d387-28b8-574b-d303-280cbc54fe94,1476992922,17367297378459174989
+2542d430-dce8-ee6d-ece6-187329fb98d0,797947446,15383112216351511933
+5f293ce6-234e-766c-6002-519559b03b95,4179408418,14385110206220193948
+1f1ef6f3-d0c2-f931-5568-a8acd9897031,3245147114,2619016994807675934
+623811a8-53d4-d32e-813c-b25d570d17bf,4231625244,9332944048095663412
+99e5feca-c5a5-bd55-901b-7e8f3a5a3c31,2693285676,1107243326761534081
+8afc6719-e142-3c9f-0ffd-b7199d014347,1066407889,7849879482763966582
+b7f06cbb-bc1b-b601-5631-ba0ddf0e9066,2995848283,15805866801102781753
+3218f986-70bb-ca22-1000-9c4e25c2f07e,1493939760,7229464095699829769
+9c4bc548-e70c-5945-cc72-1fac4afeebed,1106963234,10900663316878951661
+1dd36603-9894-8c65-bf4e-5d337024e77a,320375621,10214451832200444428
+d2178cf6-cda0-f27e-eaae-e678204dce66,3725200034,17749381988582325477
+556f51f3-aa97-61ec-0c1e-44145f464069,160881099,8528831409512944367
+5cb371eb-90de-c6da-9093-d74f91ddb3a1,2656809209,8320683001000236445
+256a2aa1-f8b7-7cee-0ff1-3510818dad13,4042403082,6178502959380853275
+f4dd9882-f550-f698-46d9-12b4c1f27c21,3929303167,353818126282840272
+509e7f30-b820-fba2-1d48-f138dfadf767,3526529207,16672197999502954627
+a0e13807-5bf7-adda-3cbb-9d0316b576c0,623336436,13778151577552162393
+df67777a-4503-c0e6-6134-68c511d6f7e1,3860443716,11958481107150553148
+61b01848-463f-1b33-0118-fae36733947d,2690126597,16694997661589185661
+3aa0ed69-62bb-22db-2395-286dd15edcc8,3321667169,11765027051228281313
+8965a721-8680-3de6-14f2-4aba1b3d78a1,3470723080,5165437115822940959
+4aaf22d4-715c-f1f4-3c77-2ac4d31df5a5,1346777007,5119981915819925416
+be6d84bf-5abf-8c1c-ecdb-bd918cb0e3d2,1311783208,15001360823788236384
+78587c7b-38db-83fe-8f60-108317b08c81,847736356,6771836849575081028
+1004e785-eb62-91f8-b405-d6a3a7609e34,813014702,15665478379338873367
+e9c5a031-38fd-c91e-7544-51bd748ddb82,2515487048,13095586114230142337
+04404979-ad5c-0ca8-da3f-ba8817ba2acf,141773113,17047352427218777034
+9c840b78-8ade-9dc2-fc26-743b059344ae,21727112,3051093923785672430
+6c1e04d4-3c0d-8cda-e332-9f5bc38b1503,465117900,2569881450964932282
+cf50466b-e135-a27e-9084-0555f1875e24,1278046032,10559875861872896919
+e76eb26e-2c42-f102-8b21-0348f0181bf4,3067602490,12562803410608327958
+ead9a6b9-6949-35d6-ca9b-f551f960cf09,2940110588,6601348969960457669
+6aea75ca-a243-0ff5-ec71-879e7a222137,2294166833,10323020101361099008
+f78a7880-424f-0ea4-898f-ac4219091fee,2419833332,3622666278731229759
+07fab0e7-b922-6ba1-389b-3111886000e2,2593807078,3557211038791513140
+a9410d0a-6739-f0d8-fe04-21fa47c29f9a,721075269,13164529307558694404
+3779521d-88aa-1a38-c57a-e4a3d15d6566,4076403382,17873341611126928471
+77b0d4ee-048d-808a-e466-62aeb45b1d15,279470070,13089506912374428164
+e7510db1-85b6-52aa-cb53-8bd28c347458,2815247735,5496437958690825993
+3f671e7e-4af7-1ce2-52f6-e0f8fd8fe0e2,1383307440,7337657084300349717
+3a3d1778-39c8-7a9a-94fe-07f48e902885,2282674479,15821455759588381448
+de2f479e-f627-9158-bd5d-dd42cdbce9b4,1518322832,2506549339776291948
+9313c78b-58f6-358d-fe36-97cd286abc9d,3943816193,7244997701046778461
+f3de2eb8-b2f4-ce0f-ab65-858fbca5c69d,727576626,2413856609484730452
+47840cfe-0f8d-3fed-2c3b-c2abd8cbf1d0,3987113802,8450819849696501000
+230cb8d9-3234-4e00-9d1c-a78684e474ea,3139375533,13896796534982005036
+ce3ad7d1-4ec0-f678-b7d3-bb8ed2b414f6,3792819548,13516902756206999483
+63d01695-e696-3ecd-62c1-f357b86294d7,3743625743,13446833260702079865
+a2e98f2b-1d7c-ab52-6aaf-1584b90dbdd5,778255985,10421855734383281731
+4c97be4d-1707-5675-3bb9-a6296fd782ca,2962536339,11562109038105572059
+b6381a15-1682-c57c-096a-aaa7abb336d8,1099773018,1785622029758455107
+d422920d-f5a3-fcdc-c6e2-e0880e3c36f2,1266656403,16495179207980183176
+549d1ffc-b0e8-0722-413e-f8d3281d0a22,2871049759,290176946540484634
+fa90f014-31d1-1306-50c1-f33cd32078a7,501073931,4723710537306966301
+26ae5c05-9294-62f2-e04e-5bc9eef1012b,2550509824,13802763542229179681
+5330ea10-59ad-c1c5-516a-4a64798e8c32,2271487473,3597761153010683832
+62f3e7e1-a206-d61f-7106-d39149ce1c5d,1969196723,2480555944540797359
+1c34800a-9a7a-222f-6665-a1b8d2b67ece,2608231582,4700167162065967157
+e35867c5-0227-4cb3-9844-1ea423233b9d,315422516,6138414616446479796
+8d0bd080-93c6-900a-2463-87b4954eaefc,198481276,2981807654768699061
+cee1e800-b7de-bef0-3207-83e0db98b239,4138120021,11799061435515517306
+01502436-f890-c5c4-a158-7acb428f6a3c,1732373489,13872009514488802141
+8fb2c827-d153-3c78-2a98-b529946fef48,2273310623,13080489534247919711
+75f89183-e901-d5d5-f1d1-f687402ba403,3743631652,15920662287548156550
+5ea840cc-b717-15c9-5b97-5d6258a24d5a,3620113360,15221869071418207875
+db449931-69d7-5710-6e93-083878a8ba6f,3091222002,7737206542571857228
+901f1a4c-cca0-ceea-e3a8-5a28b96c3630,727914905,340699252694857487
+a08f06d4-8b82-82e8-46e8-0fdf6d55b490,1655806784,8433331738555207422
+22a09e1a-b723-d31c-38c3-0d544f6cf1d4,2377290336,11171617789479622975
+33cdf629-8486-af70-5e2f-14d986fe96b8,312749847,2833713966044499168
+7298b30c-3e33-4bfa-dcd5-b7807a7090ee,3705639322,5249466493959207085
+631582fb-1a3d-c08c-e746-539d7f59ca1f,3217686015,15288003000284680952
+220d78d9-5506-f557-5686-5dd5f1a181cc,1758295933,1450210923882278404
+f7e8dc4e-53f5-4cee-57c3-49f5afb297b5,3837995908,15013780689084377440
+be4c6d4c-05b4-05de-2724-c3bc56de60aa,2871709902,16433988654299744370
+e6a9b094-e6a6-576c-2500-8cf7cb2af828,2220822665,12242895695354158137
+77940eff-0b19-c1d5-7851-acc21097a55f,3784000591,16748616525237337445
+16694e28-b7de-1998-487f-ce38fc1ea926,2546544426,8302068798870515184
+26c96966-c900-e564-444b-f45cf4efd49a,3444789447,6058133255938988082
+602d3549-3956-c27c-b249-e40feaa005cb,127886046,4849142733570552957
+28f95d93-f713-8ac8-f507-61594c2d4cc2,1301909189,8698076445964472692
+93eb5592-1dae-128b-5371-d6110fdb3ef2,2811733288,10293016306120609881
+33306d73-34cf-7287-e4be-3120121e3de6,1071103381,4048648636076295113
+56b6f65c-2eef-d538-519f-ab3afa0a7aa4,3147637782,17364319980088612016
+fa0c6807-74de-1138-00bb-11397755b599,2004324048,18116044391420622252
+d765695d-fe37-4920-7d86-b68ca42dface,3535465747,18078683137898445584
+6b0bc2fd-c2d1-2f37-ea74-1ad1913c4161,474973981,3330966012274272034
+691a5786-7606-8b39-421b-e15a2ca2f9e8,3447369351,7926328068290188858
+df5cbbf5-1dab-722b-4f9e-02410fafeb57,2374079654,7181916854631963044
+d5bc20a2-1498-df8b-6c16-6cdcb1fb6659,3045533772,5376786039178584122
+967d5940-bb0c-518a-f403-752ede801fe1,411244654,8257065179423738722
+f3cc26c4-0c54-89d0-1995-d82b6333824f,2985968217,1601427038969845237
+b4ae1831-6d5d-6aec-1775-23805d9dc9fb,3084725976,16197501423954987166
+e110e859-b14d-10d8-86bc-09cce175a3b8,1004252503,15275332468814970526
+78ff7a2e-1b9e-34e8-6471-d130146cc6cb,333569339,11400385185923966623
+afd31372-4329-773a-06f4-6b5fe05f3853,3950509467,640643925180937462
+0aa33c3f-2316-0fc6-1b5c-82a258aaa22c,3233851393,13350982636840575172
+5a949b8c-83f7-419f-2fc0-6044b247eb5b,2894393082,17579024500025129071
+c5fc1223-8f14-7d5f-67b4-fc9539c3b629,242364114,13681327114658165075
+ae1c4549-7944-b0ba-e815-a2f96d514c0e,840599646,14537124227428761473
+9c6937e6-507a-a79e-76a6-7590f1cefd2f,659673466,7253681194161972985
+2d0a30c1-aea4-2f83-c51a-d9921d0b7b1f,2999183999,10567417348398348310
+a893c5a3-c676-0d22-a716-72eff05b78ac,2400328896,8127862311536681395
+2b6995c2-36aa-370a-fb1a-50043b7b7534,134358057,11058624314916781764
+05165050-e49a-06b2-d216-b4b78c8bad77,3836764286,1052279810520823990
+31406f00-11bd-3ecd-72b5-462b359a86d8,4152488952,1161603154344029372
+21b2db7a-d6e3-ef24-8a0c-865172ecc2c0,1870102190,3144438758392873485
+8cb89713-08b2-3aab-c31f-5e4dd3bd32d8,2669429582,6710151740424936860
+e10d03a5-c123-dd93-b310-4e81190132db,3931515660,16401680324155289873
+0d1de509-fb82-e1f4-552a-6576e5d6b11a,966545251,11691702138292857123
+379e6be5-6187-d64d-1f40-85613fa8936e,790594416,8952586203302529059
+072abfe9-906a-bfac-45ee-f8c78f616561,3639455815,13608345048840198047
+6102a75c-f8a0-addd-951d-7d6bf627f4d6,397206601,2511839828186236696
+95764b00-d6ff-5a33-5644-cd5b55ce7074,2682146085,687771886696115022
+3558bc31-d6d9-0381-04dd-1513dbf93edc,3697101168,3262995150513988373
+ed58159b-4001-bd70-df29-118f6470ffba,478624438,11357245914722772070
+d0878f8e-e4bf-04b6-ca5c-6c836846b939,1767121288,13393483587437399529
+785e60b8-6348-d86b-9919-714617bc9286,1908452417,6973812024906583856
+b5e904ac-0cfe-26f4-3def-2a637e5f1102,1440563604,4846085102797980941
+e671c58b-189e-501f-038f-5b01008b843b,3487936513,10473741204692907994
+0dda554b-8f0e-302a-805c-951cf7270902,3266236775,11547162554911975944
+b38356ab-80d7-2af9-1ca2-048d5b6ec1a3,926837697,10887315388825482273
+53230a6a-d803-42a4-ffa1-a7ca9f59a86f,4217296234,1273882865234180341
+065201e9-d916-9346-8dfd-f8ada97dcc11,4167910496,7118763574211254801
+9edba8ca-b54d-72ac-3ded-d4151237c717,3759288357,5524317119428618564
+3a0f5507-d874-06e1-bd74-ab4889cb2a61,98994827,6625619350499421830
+e41301db-8ced-9dac-87e9-a4337cdd825b,3112366333,15906331868962934500
+70978735-cb54-6a31-2728-50638b296ce2,526757395,13867947361215924966
+31a8a25f-aa30-cd43-cfab-ee4bd2b54023,39413577,9611075180787437996
+57f7d55d-3f8d-7de6-7583-ec73f938f461,1643838266,11468506678304590126
+b89c5925-fcbf-f0bb-fed5-ba71f8784fd5,836780238,8950328460101615678
+89e507af-c58a-2287-5921-c46af8a5d03c,2844816168,6707392475350812500
+e7c6043b-6f2d-abd5-2c5f-be66e4a5c28f,349847555,10616851718089558997
+2840a0d3-6a5f-bebf-d0ae-3655525db6bf,3561773926,17413579328752603810
+62c7180a-b2bd-0fac-ff0a-47eb9d92d14a,1674285990,5416278960664414804
+82979df9-5bd7-c40e-7e19-2282f24e4106,476207793,15775853859321597531
+fbaf4b37-c79e-77b1-c9f9-37ed467176b1,1801505172,17566236431004588596
+34b2ddf6-ab7e-c89f-f718-f63018b04c39,2932305242,3270746168104728318
+93faaf6a-f4b4-1c48-149b-33e5a131ff17,780624831,1257380316403152279
+00593ca1-859c-0aa6-57f2-5ce2965be3d9,2621744294,7500026205995087809
+9edd915b-7dcf-a656-d128-00527508027f,1542521568,16223933863679556646
+c385ea5f-8584-ac4e-80ff-22cf40fd4cd5,1983331747,12991767528309622670
+1da29123-bf48-4a60-2d78-45fefa94cad8,2477619083,3233974503762398194
+091c5457-3c01-2176-26c2-bcf10948297a,532307271,9549190749461413244
+b1849b85-a2b5-b008-e507-1d9baeb66156,2902047202,8090118883414144451
+42611d43-94c7-53ca-63f9-097dc5f281c8,1307615485,13306473992746838465
+3856299e-0492-ec16-8195-6c28f14a5510,1714588385,2275562254945830204
+1ebe230e-65d1-5388-f86d-04944f1f5a24,1825078249,13869945108943286819
+3918987e-4292-1ca4-dc70-cebd56b0e2a2,2659065673,14777271691737801339
+cabb3537-311b-2135-4b7f-523080bf9c74,2161844097,11214803505527034605
+c918aa29-c5b6-3224-f960-c861b73491f4,891501180,9006025662152917134
+6735853a-56a8-4dbe-f8ca-e8ab533e0eba,842736249,4544399618016829991
+bcb55d07-f9d8-315e-699b-ef2d716d179f,1780987376,3521527794067081030
+f728c029-a497-f259-7a6d-7380f8febb0b,1298516272,15299552371131144093
+31b272b2-4338-e141-5946-a7c7ede2d5f0,2617976457,16529453852056563016
+3a85ca27-5aa9-6956-3543-b784cf213f1d,1163963538,9105672058873402001
+dc11bfec-cc4b-daa4-6f26-667a1500ca37,862902746,16789197991848463780
+af7f864f-6e45-78b6-bd11-abf4f37f8214,4117807625,66663996314347206
+5b4eb4a4-de58-c3bf-55ec-9bac407e7da0,367496372,4608608695805851717
+59155dff-b941-7649-b79d-3c812302d090,2544664692,17286162355094048189
+b81933b2-fbe2-0959-f208-94e1716231a4,289697392,7458544773512519657
+6ad7c53d-bfd9-16fb-2b32-7a0d4ff98f51,754512485,12406576930782029720
+75433989-9445-3b27-c014-2b86f87311c4,2872566005,2524238635681999622
+cf0e8a7c-1966-2ad2-d1c3-e3bced79e7ea,4151773566,18033454491528554944
+136c77a9-949e-a731-554a-b9c3511eb8f5,17879231,1914872716024514352
+7679e046-eb7d-7df4-64fd-ac91ad896108,974781268,2672993450439364331
+30e5b2c5-d757-5f5d-2593-bb8149971823,2207046156,16472472646514298683
+e92cbd57-77d0-1d49-7a11-65794fb37016,1427383016,3033974203590216721
+7c083409-7df4-933f-ae89-b66a1bf4e9ee,440184510,2703341594908425636
+092e75c7-be03-1dc5-6a9e-e4b9f858ad11,1314888530,2914671728683202691
+bbf9fcc0-2617-5cdd-a59e-9798ee877acb,941600921,15823995743058374830
+930febbc-f742-d53c-45d9-0866e28b88e6,3016835833,4676381102007681660
+72be2eea-f407-9bd9-ae15-291cdee88c1e,1613352774,12713763802255492587
+5cac78f1-2fe8-614b-9c82-968cbcb52153,3432276078,2505832933529106318
+4111be02-09a8-6d98-9ca7-e4e0f54ab55a,3880058765,2286026308777955060
+8e493bf0-4151-6994-a150-a9a30b07904a,162736732,12267695140471206027
+99293078-71f6-4adf-e969-16981b4132d4,3577788757,7356151929335726096
+161e8f60-98cc-69f2-8fa7-486961ca3ed9,1968272082,7892075054260288519
+65764be7-979a-707a-6b17-f4a7f6c22e1a,4050076906,4621519629719794015
+43858e95-0419-1e67-93bf-c72042400098,3623740371,5561479945006700754
+4cec8f29-dbc1-64b0-34f8-fb3adeb8997e,3918757320,4998058180547981251
+09f6872f-2f3f-38ff-4408-13892acb6f7a,4109423746,10137287279844292225
+9660323e-22c6-1e31-aa2a-f40680b1796b,3336411280,14836904205054290047
+35a8a3b8-de60-f3f6-7edc-0978d098d65d,3162136356,10189303183950347716
+09fa0616-1331-5fe6-74db-f7cd7f9e7da8,1360714336,17935801480154207781
+78b839d9-67d1-d73d-dce5-9e3159cd616a,2931687014,4985963024124599660
+107337ac-d407-0cd7-6a45-729f3168d9d3,728586813,7047396073194230532
+754409cb-05d3-030c-8e01-3fbb4690a288,2771068267,3843157256764276663
+95893b8d-ea18-7ad2-3ef7-a24ed0909142,3670666294,1616423550169613505
+ebf5e3af-8cd9-698b-ac14-585ad1a39811,662457663,6114623097874170830
+907d077c-768e-4919-be7e-e8d7b3414cdb,132333622,13361238324040595766
+d75b0d01-51fc-0a51-8589-af99795af742,2875037037,13384278940094041353
+f0fffa2d-940d-7885-bc6f-1687d081f516,2095720703,7725587251453978474
+e45dd2b9-ad5e-d4cb-1b78-f72368afa861,2756111141,14489066887571873687
+6a1f9603-8711-0bc7-e488-4ed07bcb8238,1774037881,14645161141688757633
+1e5daf0c-01ee-ca08-5300-4416a7e7c610,955537354,3704793363426565569
+eced56a4-a38e-fb7e-b14d-4d1093af2a40,1078427583,8191248363702747650
+d832f36f-da3c-0518-5dcb-7d54b21ac8b0,2936374158,2988606001380988213
+d68e8983-e4be-8a7c-69e0-6a470c354e5a,2755625726,13628609658309291683
+a5970f21-b37e-4d51-37c5-c36a7bfaf086,1296290351,2825708620476314333
+7b3b84b5-566a-ed74-b12c-36fa5be2b733,329536095,8042297475663984172
+23d5e14e-ee16-d73c-aa01-f3f8765c19ab,1474655155,17019963867162203364
+4a8946b7-a7ee-ecc0-ba06-a04733101115,450407600,6166330894899401289
+c4ccfdd2-00e3-56d0-a08d-69143a5adf81,4084358367,3593420448816210729
+2822bb45-e056-7ec8-84e7-c416353fb441,3638961378,6801710938769518765
+51c066f1-7048-ba11-842c-2b1c52a9aacd,702882565,9725498093046471383
+7ef5c5a1-052a-aa50-86dc-de6dff8ee00a,672615645,3965349615727614999
+ce3fcf02-6cc3-d997-31fd-2ebbe0508f4f,194140099,213943261546091688
+cd22bf34-2e9c-cf67-0428-90673fdb42e9,2740682270,2359158477765799106
+dee73734-4939-c047-df68-580901ae1d6f,633460351,5865312270629586666
+851f9138-0e40-d326-9e08-5409e9ba25dc,4135305313,10581200454092545584
+d00723cd-89a2-9201-3869-2f25ca59bf8e,4151722232,11589204272544478608
+dac43a59-3639-ae99-eb7b-de02ffa24578,2594479512,3684427723956737640
+c3978083-aaed-fb12-685d-28ba3a548d52,1857571884,7060741230638801072
+b331caa8-0207-fb6a-32d9-50b9a5a4ba47,3683670038,17933795891907648810
+dd56f1d9-b71d-908f-5c70-83991b2672c7,3736792774,13252142395950165387
+87d27775-3281-cd54-34fc-2bb2adae6379,401435171,15968811420443399449
+81f8e397-f24d-85a4-55ce-067fe03d10f5,2428597828,16215675349090868408
+d475539d-e738-125f-0d1d-8fa092a369f5,42619439,17362111169828588780
+d8d81268-5761-8ef6-b9a9-5665bab40725,744968834,12977223890621319225
+5182e9b7-a280-ac3b-bcd8-488aa36df80f,1361931160,17892224154462173582
+1e941674-c8bb-f1ef-38c4-66a856a26f00,387123556,17548303278434763756
+13f3531b-456a-2b7b-8b91-3fbb4adc927c,1074789095,17883551880826573888
+eeabf353-0ecc-25c8-6e9f-af5cd54d78e3,4103890922,12690501126873048645
+697fa926-a622-2ee1-bd96-f273c47b76e3,1269123820,10099584924203277023
+6c324202-e793-a33f-3c70-8f6c52a66d6e,4276961821,3565938733986868293
+5f0f84a8-2cb4-61d1-cb4a-c63a90b7dd89,2693137161,14436141654729093324
+cf5ea93f-0ac0-f0cb-6b3d-ad348c45d691,258339169,2362551251313227697
+d59a5b11-92b6-33a9-ad50-0f3e2358f397,3694764097,10879760121478387565
+20a399f8-ec07-3eed-8a51-6826b9ae0691,995633341,7048301598418688335
+de6c6872-1f71-64ad-1ffe-e88ff8f18e26,134964633,5352375268431336357
+f94d3395-e2aa-5c1d-5e1f-3c8237abfd37,2172322384,2917512654047113241
+4cf6cbbb-1642-f90e-3ad0-97af3ca3ddc3,4096325842,15727043562458394017
+8d776485-7f0d-3801-3a92-3fdf1a2b93b7,3011145572,12650469175258931475
+8a5bb973-ddb6-21ea-8c99-4d26d4fb076b,221053714,16388424689264588698
+5e3a3983-5b72-9be0-93a1-1a8522de728c,1069992177,14392208638478583449
+8d4ca80e-2d59-23af-07db-26dfe6084d20,3912346774,3550340217211122122
+98254ef9-4571-2b7a-f5e0-629ecbad2a48,358457110,12919638193295665930
+ce857973-fe11-6c69-daf2-f34ed5c1e0d1,3731304729,4602564465456317072
+ccee57ef-dc9a-ec87-4b02-597d8a04dfbf,2850039497,16976479998262748875
+36ecadcb-580c-b8ec-5660-f9fc77388211,3309175880,15755748371951432479
+e35c9a4e-e1c4-d254-6e5b-79e9a5433638,12070045,11697503873132811567
+502bf52d-8e62-1516-9119-38dd34d94385,324278336,8717321518496595926
+cb7b389e-726e-7c9e-ef2b-0898156a0f2f,4145230148,5802007053377497463
+6dfa51fc-7b6d-a69a-645e-28333a7cc4f1,3778692524,11041293134622472991
+67823a2c-044e-86b2-576e-abc06d2238f9,3366335181,15287230625843722709
+de4bd6e6-e258-623f-c9f0-38734b20ab61,2159465719,2013583608808233739
+35c929b7-8315-e7e4-6699-465b95daa697,4217508036,12843510633888803078
+31ae2480-1af6-cd1b-36e7-38e6ce47556f,1978772831,11962143428799558048
+36adba0e-3de1-e588-1ea9-ee0b907c3069,2000332063,14980621035242945987
+7e332826-0196-806e-5a52-14998ea602d4,3523993245,13406341878135775135
+8ac85bef-e69c-1602-026d-0bf9210d846b,1109725550,13646809963679809130
+385f50a1-8b80-6d9a-709a-6a08429d4d2a,3985888733,16974593661638482326
+94ae8b6c-858f-075e-cc7f-ba6602507849,2020160446,6981072128285937229
+5fae028e-0297-a818-0c65-7fb65b64ea11,761709657,5364527631419682488
+6f6a7f45-7a99-e174-1672-4c3e849ef651,2041678662,13620269207968699016
+46db3240-350d-3b03-db02-eda6f29e62ff,221283546,14436642822634685098
+7a77d223-4b84-942e-e04d-8999feaaf544,97327910,7657508696000794242
+029876b4-fb39-30d8-cbdc-d6a91d2c1949,4066454621,14628177532651515406
+32116076-44df-3708-90f9-13174d5735fc,4164271394,15118473463571431575
+445975b9-606b-73bd-02ea-4fb0c51553a7,3593035332,3228218041179753203
+5f47f54a-4307-7f29-5192-5baaa05e2766,2856870002,16996893466166765707
+cd286a71-c565-c6b3-76f2-71eec2e2a130,1536239846,17840116442251665937
+7ecd8508-cc23-893e-c5e9-a10a1c29438d,2957428519,10855752097333167264
+bf67006f-4d33-728f-2dc5-00d3b4e42229,1022685953,9160697165734592447
+eed84b62-91a3-680d-0d37-31cf8042b1af,1641347853,15505771742364847262
+71a23e3c-fd82-0398-7c43-bbc2278e13af,2125790563,5222428094486360519
+04dcb2cb-80d5-9f4e-9c55-68ca1ba2744e,1852928319,17049656056450136417
+dbbc4d82-cc87-a665-a3e8-261185bf2efa,191886217,8147391922114375970
+0f72adcf-6244-3c66-a4a6-38376b811284,1902360364,15061486248417745633
+894aa061-6071-ad18-ad76-a512c621a10f,4034094024,2587911117357621998
+eecfebdd-9329-f01e-da32-ecbbf292618f,3131685141,6901347828354398739
+eabe3761-1e92-50ae-4a7e-2f8b30342ee5,2407193361,15329255839786772215
+ac44d1c3-ddd9-0652-9799-f8e955bc1294,4276577632,11792113094844177595
+0c4fb861-cbc1-f8a9-0eca-3df5e483631a,2321233719,13655618432900552009
+74fbd46f-35a0-aaac-e2fb-c9bd0186f646,2683197153,1776707504221168957
+81457a96-0b2d-6371-ae7d-19ccd5454aa4,3625068074,452551622532480158
+fcbcbd74-fe31-af0c-835e-56771f5e2ba4,1898337233,11209319343167434721
+c05bb91a-0c73-e5bf-2634-59b267594ee3,4070987289,2968093720441179040
+dddc75ff-e9db-94cc-6c04-dda0158c96e0,628780604,12805899552239913193
+df77c003-8d8f-0047-12de-8be9abc2de3f,2338356540,12244516073751341378
+d26d50f5-73d3-9423-98b0-c115394089f8,3109394034,12136908452122749010
+56d173ac-d615-557d-c23e-fcebd969fb2b,3471888612,4071053509781353155
+99d0d62a-9045-6e81-f9bf-fc3ebdaa74c5,1506275287,17990706113715048992
+028ee166-cbf6-53d9-0af6-5a52f8044bba,1185419494,743745367835857228
+b2bb3182-03f1-d9bd-1fb0-fa09472c454a,1955334121,5699151576874701162
+91e6154d-3d0f-a805-8dfa-c86bd2a8f9b8,3843111462,13311547058088044433
+e65d5b43-3234-09ca-bf15-8ebae3469950,454072314,7401199942972641436
+cbdc64d4-1eb5-a04a-2869-cbdd604dfda5,671492960,18215560050744836335
+cc252ec8-ce07-d643-d9d2-129e21907ed6,2191990744,17304072813324779616
+1f4aa8dd-e982-3ea4-483c-fccf2f2dec94,903851073,5845931053610012972
+e7877d89-0db1-a8ac-0873-dd58b68aa4c3,2197910749,287411386601913790
+bb89e6ab-3cb6-8e2f-a5a0-e7158d806dbf,2283417988,3076763427983228248
+1b6f2318-6bb0-0c29-2b14-90c81163b4ee,2546393410,7947813346376111366
+044940e4-8c56-f799-afcb-f4e97606171a,108084801,17057824975742561274
+00b596e6-688a-b4bf-6746-057006e676d4,3187404371,11659764311335143550
+e988ea60-87f2-ee38-1f20-b9061250bb91,1388843237,13678242047287473416
+042a2b78-88e1-0e89-6200-86490bc164e1,1942535614,9441538878232384255
+59f008b3-5591-82fa-5eb2-49e80e41b9e2,149086232,6819783561027052034
+40913221-069c-ef74-b0bb-3f20ed6fe6d2,2855671036,8983619327685825468
+63686911-4b22-0c58-cc64-85da9c3fbff0,121108589,2144556827927255430
+4035f01e-ecfc-4bf4-92e5-db394b09249d,3089254926,7089489389753656224
+cabbca5e-9769-1e88-69b3-d137d24e6e6a,575058487,6511589976567125268
+7bcff836-a6b6-733b-0ace-8118dec6652a,3405990045,18065685344796615650
+836dcfd1-24de-6ce4-fc2a-9254f8f74088,4214496257,4244089233539220641
+654aaf30-97e5-8741-74ae-496df04db1a3,2512508102,12483846336700735103
+5abc7685-72d8-2014-7319-bcc483a2a021,3203370017,13104870851812780449
+66202009-2a03-8221-c59b-016e96b57741,2533938005,8195302230633144154
+66fdde2a-5560-a0f8-73bc-549c64be7f29,455751858,10480773802474079877
+81d8aab0-5e58-f84e-bd4f-e4cdc5292c46,2830195101,9698932079642153266
+d2a5cffe-cc84-680b-e65c-784d5667e2c9,3265092048,12424687603055363324
+2be01770-65b5-826e-7a71-2d0691e41082,3243003156,2234063552594771395
+7e02c2da-df7c-8e3c-4e0a-923ef2e9ca22,4104935016,8993421752303230395
+d72b30e1-6f5e-ef5f-f401-1bb6d612a42f,154299469,16764846736508927457
+865a7347-ddb5-16bd-bf02-a311bbab6f9f,4106766985,200359419808827801
+b4b329f9-866a-0005-33f4-811cbf655a84,3016527593,8395021175847720246
+82c35295-2153-c1a0-93b1-ac66500445fb,3494980872,17402838002776147597
+09c49a49-2a69-650b-0816-2d4b5da9cc2c,2264474384,3169123870562319326
+4cff6c2b-1ca3-93c9-4480-f68bd717da56,2769597225,7413417802465594400
+f2242097-8c96-4575-37de-18d9d7fdc087,409804937,12003502131521427762
+c3136504-d8ac-49f2-6133-c3ca0697e64e,1762337472,18078669788379084167
+e20b9ec5-9311-079f-a6f5-f1bd889daec6,3842508680,13971505860160705362
+17ce8a2a-c926-a9f0-4bf7-51d6321d47d6,1806124131,1873384966404026581
+166072b2-fc41-a179-dc94-0650cbd88ab3,2457539752,10216440507645798418
+92a512aa-b130-058d-6bf7-b7c74da922c9,119180042,5609165055944916449
+4b13b337-4e42-baee-2c95-09930535c4e6,864962430,14775440414399421920
+0ffd32f3-76bb-a498-b13f-df2aa4094c1d,1290772848,13369688232477493390
+d6549726-b3c2-dc9e-7258-b740843d42d2,2844522831,9694402231401753829
+47736c8a-9c87-1b49-c0d8-ad02aaa2be23,697396880,3637095095557777733
+aebd5b9f-e20f-2599-0c82-939bad41885b,1941589747,15447750925496201174
+413b7549-b821-dd23-ea4a-36ab8a6fe2e6,2109335449,11024574681364849700
+1307b9f2-102d-8a0a-d377-1dd0af80ccbd,1024783759,10550677526091692569
+51d40b36-a66d-259a-4071-9dd5ee3fa816,1615285466,18266701008539396471
+1f39f454-563c-805b-19e0-51b43acd578a,3039491820,10954304376443556948
+507c4ac3-5165-536a-2e1b-171ab610e4f9,651264017,7460457704391807406
+8902108a-621d-e434-81b5-cd2ccbee5a7c,3420316673,16040608878050510423
+10722f4e-5a15-08c2-55c9-af486b1a719b,1287605706,17697722095446542015
+54c28a79-602a-8021-f411-71e7796abf27,1546382842,3929245322217922936
+96174790-433b-bb90-f3aa-138a95054d1d,598070673,8496625824608606392
+a783ba47-b646-09cf-b37d-ce343fa84b96,3336206662,5171301515287080466
+90a449c6-5312-70e7-5624-86a04f166fe1,3542383679,9391906598924580949
+8c7766a0-b9ab-4c11-fbd8-6f94f7a385d4,4025900864,3280023967569332796
+abda3741-b452-2a24-fa78-47686c9188c6,1392379816,12421049383754723406
+c10ac952-8c7f-f225-fbf8-45cf9cf79308,4213535252,12688166411215942078
+7ef416db-ac19-555b-b508-5253b8b14a38,585573978,136989124577913878
+43fc8171-2063-daea-f414-1ee9d9ed7146,4261758576,12459500870994570989
+c649ab3f-0b1c-38bc-fb16-e3925898540f,622210061,5984814901059295736
+52306729-daa0-ba1d-9b55-6861ea212547,1248066359,5878150263584089004
+45050678-4f7b-494b-4021-d5c670de4a8c,1143851869,10281952045659762125
+a6692f64-b74c-87dc-1ccc-9d5d26eff7b9,461648994,16728767208972296653
+73d8db73-9e9a-47c3-0c22-2aed73c313d3,633154437,9884935206068411851
+bf32e13a-0992-61cb-fef9-db48a7f67baa,2029414789,3508299704851217081
+26e8a274-0455-4acb-9243-b5110ee2608e,3628865588,5417870757988866169
+0dc0a626-a6bc-0683-6c4e-5b59c1065f21,1955138100,6923426473074492251
+92392195-977f-ee0e-da82-3dddd4a36efa,2027445625,15148663679073080819
+680e9328-d6bd-439c-2b3b-ed465b3bab02,1179136958,15508983258238165384
+862b4157-7312-23f2-70f8-1dcb29e1e370,996815742,16272872861315206238
+d46980d5-0b0c-7de6-1e2a-18955c09e7fa,229600877,6802361669588294217
+a04db558-45e0-c4c4-74f1-697156001592,1854196938,2171230215782998843
+811b2dd9-37d3-c8c2-6e5c-0827557822f9,3824557325,5248742669875623088
+7850df38-0794-3827-aeac-656c5c5a77d7,970432009,17002115778529562277
+7998e0ff-f64c-375a-8c85-017289c4a9e4,3721493038,4543317455145477917
+6122cba3-f0bd-87ba-181d-e82e8e607b3f,4049061998,13974073182196753442
+71eed5d8-5205-94d6-32f8-231039429631,624090915,6215315616956670456
+fec088d9-3eed-5262-53d9-f144c0b14e84,121086939,15542556553517529509
+62201bda-535c-90cb-bdc6-08b255b2c557,4081272056,3859880452443904576
+1dc55820-cbd9-f9a8-d1e2-ee7bf83b0556,3230881661,6786213927588402172
+8a22104a-30a8-ac17-f8c3-d8d7865c6d32,4090438845,7129079111134771858
+9746e400-911e-68db-edfb-b0e535dc7b10,132154197,3234865037213462757
+8c2908d9-25a5-b441-2374-e6c6a9d3ccd2,868374058,11598155862531351824
+e292a910-d010-83e5-2dec-d33043548f15,3849049173,5627654409104846247
+4a63aaaa-38d7-2630-91c1-db95929d964d,1923312407,12174790575120923243
+964b4345-b3bb-1304-efdc-ec337fba3502,1123244795,10498844994541307682
+69666592-0305-bb06-473b-c62d0b2c3c42,2397380503,11222409465932790531
+8480fcbc-9ea6-4719-219c-fa109dabca74,2869027582,11128347145164594671
+a386c67f-4075-84de-5b4f-afb9f4228620,2758697405,1340238112137462089
+e372178c-9ca4-8f6d-42a3-b28b8f9a4834,2476944221,6970899316868085621
+e7d9642a-5e16-d3c2-ff09-4e4963c8615f,3577429514,15000673672602932887
+dbc7780a-f834-c548-4686-787535a8cf72,4245661233,13427748929108422030
+e0f1a1a6-f007-6c3a-652f-b614cda58735,2811310893,8687598156842277320
+27289af1-7ca6-158a-a25a-c3e2ee3458c7,475935881,13711975445170477782
+a131adde-bb12-abf3-896d-32f4760a2e98,3328769082,6751461527156967314
+88e2f2e5-0d6d-ca74-1cee-ef641c0ba396,1509149460,16629553444475686275
+899892d1-37ed-383d-79bc-35eade2bb995,3084090595,14790924452940289254
+850a7e1c-a958-2e86-12ba-17cc282d0714,2306337821,5037664271092975260
+536a2630-4618-46e5-5914-509f09490b17,929723288,9091152767599047781
+088b71cb-a315-36d7-5d0b-b3c06f2316f8,1992926884,14084001666165561529
+b16f05ea-ce11-07ee-08e6-6e7778b8d278,1894295977,17525139601729536758
+845afc1c-056a-357d-4dd9-38e9c6efa870,4152044174,16896244005234971812
+496408cf-2cf3-a739-e567-c7ba1768aa5c,2120305012,9415884180155397018
+1f4841f0-541b-a92b-2d99-fbf815bf7b7f,3748029664,8932718400036564288
+cbdfdca8-c6f1-05b7-b264-7c4e5e2ec42d,3611888012,3734207857484508130
+881feac7-dcda-3b6c-1520-0dbf8e953c5f,1236717014,15160573968805795708
+241e5b67-b6f3-4505-90c0-2657ef42a976,1770287559,5733753936278894653
+08d2fc04-278a-6614-9d62-cde66e411652,3160231897,12111635466955710229
+46437bca-4b66-9053-6849-e6b4dce874af,1328767354,4872635957609749053
+5a866457-ae87-277b-971e-706a0440de0f,2289363305,13927513800529904406
+88ef7aa9-5744-da99-07fc-eb013826f500,159615026,6945707782141139789
+d6cdf9ee-4e9d-644b-9636-d1e8972ae169,3962571008,14044493966036614393
+7b6d8ff4-4ebc-47b4-4dba-0c10f54df328,196294942,5571513877379725547
+c9b12289-bb57-8de4-0c3d-8928bef949c0,1001857403,8154604545192461993
+57a0e890-b5cd-11a0-84e2-d74eddbaf2d0,217296717,12963264045776247643
+0acad2ef-42f9-7072-75bc-fc8af96dae19,1592990057,7507188322819225993
+0d777e6c-d85b-3bd1-1581-67162892973f,3652636212,9577665288450505054
+6e0d7aa1-5d55-bfc4-54de-441be8d8a9c9,3632566374,159286657188332959
+26d31cbe-2146-c405-25eb-3f4c67eab803,1217338583,6644547171996584527
+7c037f00-85c3-10f1-3793-c128734c7518,3371795636,15099188368260501555
+8e4f7ab5-143e-3665-4127-73fe55693bd2,1632521994,13430507149950761670
+2db1be3c-a528-c46d-e6f9-565ecee9fa95,3213375248,7266687127531816185
+3bd9e6a9-1d45-1ab9-91f3-caed5fd3a3bc,3136006664,1545078852886311398
+e2e04ada-73e5-adac-9ae1-c667dfcc3ec5,2836234612,14665990419360026344
+92284ffb-3848-df30-167d-effdc2384ca3,1471163266,12738756712420146661
+f486d542-9ca8-be14-3c55-da93626dee39,3926862757,6398231361014172597
+9693a7e1-acbe-e449-fed3-d5fe70a823f4,1142399804,2220777279856833945
+37bf8709-5fad-8ee7-cf6b-74f3417a0b42,1360064442,15081077567968969313
+02797b3e-d32c-eab8-f586-59d63490b818,1480799240,13359153749250923930
+95a2d98c-ee4a-e33c-73d1-e73b79f86660,899238580,14380924731057552386
+a5ebf547-2b29-c960-2128-a4fc38d26297,348669931,6901881070596848880
+ba21db20-31e4-19f4-d004-a0d36c420d23,1775727083,2709165185121155507
+608fb462-98b8-5570-2561-c622579b78b8,1922318367,8050009937455040928
+b1cdecde-3383-a3af-53b7-9f862b8e9db7,1304216163,11689238142786830485
+0f0a143f-251d-9a17-f5f9-e9be2dd77777,189721810,17917486240834550265
+bebf194f-5dff-c64e-1fce-01dce7139475,1375974670,1956049840512853637
+c544928c-31f8-c590-93ed-edabc6e972e2,3897593953,8667340458356994886
+cf1bc5d4-e1e0-37f6-3527-07bfd2d8d032,1590242000,4063805477893234231
+8f6ba8ed-d9b6-de5f-817b-23e46b88557e,2601920147,12773703673278031463
+a051fdfd-cb84-031e-b105-8bcd77209a82,3331376932,10952233217473562405
+0d6a0146-a74a-3205-f975-0b60ee2b6109,4220488439,12673917345189787210
+59bc6427-5139-4b68-83e0-9b5a6e0b37c3,4038267668,3641156801496371666
+53ea5b66-116b-beab-8629-47f91349be02,322602133,10287775216436165231
+b7710ab0-8ece-212b-5064-d01b2d65e633,3997025731,11128510747254944446
+a8a40a1d-a80d-9815-37fa-8b8866f80e10,686570129,18344196411222385859
+dafe4ee6-5c7d-f78f-9214-a18bca6ce54a,2828063194,16112749180932276445
+415c8477-d788-9844-ea79-8b083d768e7a,2629128218,15052320682162708489
+3e73ceb7-94ee-d390-72a8-fa0e3630c336,2534465881,16499333339533481168
+7c3b25af-612d-0bfd-42ce-f40673d7b159,164496355,15649961486146241527
+4cd542d5-5af1-badd-a8f4-a338150a3352,3937480220,8484688223376601713
+6e08bfb0-3214-1b16-9723-3ef4d3d9100b,3046800824,12598796563375475010
+15b448d0-36fe-b1f9-35dc-51337d0250eb,1059110501,2137776581070720570
+2903cf4b-a95d-777e-b329-6038a9f15bd6,3463417648,14644345280283395510
+010c234f-ee2e-3439-c1c6-da98e0727fab,518832460,14950833738908301966
+b4a7831b-e56b-dfac-8a2f-0c1ab50b4015,3498345422,11134017064047039854
+cf77b090-3287-5e94-720d-ffaada570397,3577179646,6364838590917497032
+071eac80-3380-6994-e415-e172f2106301,3917180031,6133036865743841183
+b9c5c17d-1b88-95cf-2aa0-ade9ece20e15,2518053971,778768088726215369
+5103d6ef-2e18-7eb9-d74e-332aa13c9be2,2787261679,1701045429297928827
+2263033b-df6e-a676-f3a5-fc31bcb00f08,1570350158,13515929466498048086
+62630d46-517c-b846-5441-e1089cea9a5b,1122567675,3145026223413549627
+f6260b29-0645-e8d0-70f3-1534a17653ca,2452698734,1622968888708550739
+abf2a3ef-546d-e279-1673-f5ce1988fef9,553038615,2239590266404132496
+e0aca0a4-b1c5-fc50-8b4d-3c70555991e5,947020552,7695558803565609376
+09c65b8b-82f3-0350-800e-8b72db41f2f2,2004151293,12257233242129233394
+ef6c745f-b501-d40d-d85c-c2cc4edffa0f,4076468144,6925324907378836014
+8cf18f91-d050-24fb-a3cd-b8ea9c9070ad,1658046859,16299098517072177099
+ae2d4dd6-eb22-890a-3b22-3198bad8769f,2662795663,14080322306529889071
+04ce5323-a165-0bb8-9ee0-caddd41f327c,1939189421,14735327508268816241
+825a3cc2-ed6c-67f3-ee5e-dd76d730c2a2,2027421275,17632338541204727040
+941e2fb9-6065-b04d-56b2-cb9be808adbe,3345623824,4879929496020028522
+389ee947-c8fb-a4ce-33e2-8c2be1f955f0,993238457,16698988718950551171
+79bf8217-355f-e4b5-8ff6-e5599a7ad107,1240903207,2338463823177384482
+44547b24-f6a1-3e80-3677-2865a37be8b6,978476925,9824816224946820456
+918156e4-7e22-eb39-e1cf-d743f658374f,67934721,7729452888209940718
+47d98969-7a7e-2d3d-45d0-44374c9b202e,3353647296,1892925464904897591
+08d86998-750f-020e-4700-0f87d8f27d9e,2813244239,12672355359475473686
+01b86de1-2423-103f-da25-a7496766d59e,3468311005,7339415815398657020
+f87d45dc-1015-e59b-3d0a-f739bbdb689c,1409633732,5542709803620392112
+a0dc06f1-26f8-d627-6d03-469992afc037,3333900693,11485755125753807784
+4b525fe0-de45-88d3-a28b-c7db2f94acc8,1185053612,5267123126918938435
+261bb67c-e601-6f54-1b22-362bbd8c0531,1005696175,12742447187492636341
+5fdf3a32-30fc-0785-2515-786edf023287,4118037059,10093907108018966845
+de0e9b1f-f62e-7d62-df26-2568cdaf3df2,92670011,15376192420486148161
+5d7aa48f-af9c-fe42-6d48-18e199ceb122,224059121,15773228565877825283
+c8dce318-b8d3-bb68-afe4-3331baf8ac06,2683326801,3394312222299631567
+ecbe66c9-f0a2-e2a6-5a1d-8ad43de5e5ce,2576584921,10288016114652201288
+2278b974-4f04-322c-f796-b22b873b2886,433807758,10260638159395428386
+72dff455-b017-776a-5fc1-217f626d293a,3205587009,884982951987829849
+675b06a7-d5a5-809b-e5e9-0953ac37943b,1217194705,5862552839264303912
+044cbacd-1966-b05a-fb24-6df80c8b4007,2957305369,16181591780687205518
+15dc4969-5f27-fdf8-528b-331943a097c0,320811918,17944241235050566291
+728ff20a-3961-e459-5422-471d75b4faf0,1386182346,3839970381123410907
+6fbe1698-77a8-584a-ff23-94ab8f02fdce,2670999382,13847725225530746351
+48b9a988-c654-92d6-9d60-fc9289c5d695,3386000809,16947032883991267932
+cedace0c-e05d-1247-8750-5f5b9e9801ab,3967589367,1517494505923122330
+deda0387-2131-6c30-fd34-230102288c83,680536016,2795630558114359775
+bc3bd761-d8c4-3552-2521-ff8db9d49d7f,112344304,11853638010970635557
+947ecc0a-6f40-27a4-7800-6c302e46da8a,1897119968,796170797554434551
+0f2eb18e-b60e-0ca6-d2a9-e1279b4b6330,832684976,5826910094325486484
+ec894c91-5ed9-c5d0-8c3e-48afa9990a71,3971224943,709322097263890385
+d4457cff-f81b-f092-2e86-809c9f09fe62,1644060527,16696381849217011055
+a8de8a29-15f0-c6fc-98ce-0c33e3be7afb,3498522555,1559002830400789197
+ba6ecff8-7935-99aa-55e1-213d2351cb22,2397114931,8025692595757100324
+db30da04-ad98-b209-acbf-390f729ea0c5,1702887499,2999654066870639453
+dcec7581-f9cc-b83e-30a1-26e9a0a7d36c,1581665720,9136747225315283247
+65ad09d9-6c28-b0a0-bda6-18f59404e84c,3341223944,18114952899605185945
+819d6a5b-02c0-2cde-f3db-e55e747ffe49,4127024072,16252321619122053105
+9e02106d-c160-3a68-0b3c-3bef82c56d21,1960142934,1888568844819491845
+3c69ddca-5a81-4e01-a838-88105a61b4f3,1828683922,5731772793333076534
+b64f8861-1bf1-9722-eb9d-28406ef4ec96,3342258198,17359707478859500741
+412aef5e-5c51-e7f5-d468-149dcce10141,2539414543,820887747521497583
+6ef7c292-f515-a1be-dcf7-398a5b418b32,1204250430,13530212484468056738
+d52db469-e591-e085-9644-f7da4484d3e5,1392988493,1986170194218099103
+dab77bfd-d6bd-8c11-2989-53bb61dd57fe,4145042523,10240790007198432619
+1c905186-fb79-c383-3698-c387494a1796,636732478,13917254047096118566
+0a16845d-c06c-1a67-c432-f617be84557d,4019186024,17682358043479002404
+0c6a55ad-3f60-4354-cec3-21273a8d66ab,3525970218,11614972231739372311
+fd206c4d-8c86-e506-e248-b14efb266078,4260313904,16935766133838124167
+88668881-b8a1-0428-4306-ba0f583a5d91,3359465796,9629352035727014815
+1fd5527c-4504-189b-0c5a-f583d7b83cf4,3369497629,11870619144304821675
+d38217a4-8c33-0467-3b55-b2e62a1e5b87,938362962,7122538973039178992
+f9903f99-4f35-f7e0-b0d3-8b9b597b3597,3998486058,7318318491959312168
+b186f793-1f1c-73cf-c8ea-2329eb72bc5a,3407071067,13313259531625039621
+79fa967b-fdfa-a499-d47e-ea75140fae07,3276041788,11741194915437345023
+1d4ff320-5237-e201-1012-61ae5a7c2dce,3484570230,10791081477997880275
+290141e9-161d-07da-bf44-a7176702d40c,776250927,5615906635228828873
+b3f1040b-0ae3-21f3-6ef4-b507ed7f49f2,2739608240,3885950611082752670
+a17b12b9-3074-3e22-a194-fd7ef5709d77,3730469892,12887286276119319653
+b7f3268e-1dfe-f964-a963-a122ee374cfb,3849891121,11644709007057181145
+7e4f3735-acc5-8c63-02ab-80d7078870da,2740995126,12223086221074117312
+df4e9edf-e637-e5ee-b9ec-75fe87523269,3389957642,547626663843603632
+aba7e615-199e-b561-1903-697aa8224889,362717239,15441992427173379538
+2de5d741-75ab-c1b1-cd99-3c0016f43ab8,3482415158,15887650271935407003
+07faccf8-0da5-828d-959b-0130b67d13ca,373523022,8282486129925634402
+07e170f6-a9d7-c34f-fd32-c8f692316e94,3495598349,16399622142235005869
+27271d72-b257-d8b3-35e9-55fcfe21a051,961273419,17240482718542218774
+310dd038-d303-cbd7-43d5-7fd51ded8116,1910440444,7469670410699671124
+638bb45f-69a8-a4bd-7f1e-d9f2554c6645,2659031628,12683292919415801656
+4eaafd26-ac13-7eb5-93a9-0e42766c1074,1737666158,16136007133625969200
+7f07cb62-41ee-444e-be5f-eb0187b4dbc3,453278893,2267763140343085957
+4edf07e7-a113-d3e0-d9c3-9773af66c321,116760463,7793052936748766856
+2e947773-8735-1516-6462-822329507960,1644744456,10713480238233841147
+2cb2d60b-7041-b337-94d5-035ac410b219,404047900,2024947405159090787
+1b2fb9b5-c18b-830e-53c8-14db31f42795,2359396705,8080712191382300618
+5af88978-6cec-9b05-8897-abc8585321da,827674750,14743368891322708396
+cde0ff7c-82c1-5cdf-d4f8-39bae3728f89,2059317947,9859436859656881018
+9f903af0-e822-13b0-69bb-04686e21694a,3558302143,6028842411540808244
+d22447a4-4c35-0160-f95d-08c65161b9de,1414633720,12029116266305789695
+78465aed-ebbb-bcea-beba-b139daf45ed0,3101547420,2538181110570368736
+a0d03311-d571-b67c-a4cf-093f6f82bb62,2152638104,8509290992364917640
+9afcea72-92fd-d2cf-c7f2-124a73cf339d,15715595,16170289420531737229
+ceb6f82b-4191-2bf3-a295-a9d467880fb6,462556075,9470517710401378342
+7a0fb314-e919-2176-f1ef-8a91efdeb8b2,3559975444,1537049492925581428
+dbe0d6d0-61a5-7a4b-4856-1a4c4d538690,1913356350,291075766968847649
+9227b039-196b-800b-c1a1-b7f1714e4dd2,1328555707,4687380382788269885
+a08066b4-20a8-6af2-7782-f871f427a9cb,259309042,6688277832630181318
+1a8ab567-f82a-0a78-95a3-50aa2e0fd353,1399556430,11021533280075302123
+85e34baa-40a3-747d-8267-34db79c76842,1661484420,18352442062278729102
+0862b804-6728-986a-e008-799c81d37d46,493776763,768209272899386423
+25078ae9-b04f-1e77-00d2-3de1f1c58086,4066980117,1896363333913847559
+77dba562-20d1-4b0d-c03b-ece40436655a,3982015156,8680626335912569989
+cc6ca32c-a652-5609-86d1-94f933e86401,206156109,4037802906496461529
+b81e6f0b-dc23-5c4a-0725-de0c30d0e5a8,2977953768,9924775942858461760
+c7f2887a-b4d9-03c3-cf07-61fa215adc44,4026497538,13288066615412686312
+3dd65c78-bd4a-0182-0828-61521c0acb15,100022198,13544431199014696338
+d6c01b2f-b267-d5a6-2773-aa3d65c43290,1352843434,16089696275571936852
+c2702195-2d68-e73b-5840-749051e83f47,3057088160,5549092546902445626
+68b7bb47-c4b6-d757-cb85-c8d279c60cbe,3974891180,15812323462481307336
+9a892c2b-fc03-a726-2a34-64f42891f433,1840194005,13056242707264238007
+b59c9241-60bf-d63f-5003-ec2b5141063e,2438396116,10363812516826134811
+2d99fced-9902-afe9-6d17-e4f3baec1266,158365564,14361286890743742856
+cf2ca0db-dc27-1218-cba8-fd2305d5d832,1761141137,14529133580497956424
+76c19b52-db76-0d83-3d20-0174093e0ddc,2077373965,7928552585426067155
+50210f52-8759-856b-8dfb-be9213266c2b,967977701,17789470836306802099
+6854d57a-156c-51ab-afd4-b72afd487549,3366095077,200521623082799105
+b6555079-ba90-9998-ea3d-3dad730994c7,3518974337,14631955159734147870
+d4bf0041-27b0-10c8-8527-63afce6c489d,1483905417,16121494677302452617
+ec8b37be-39ad-771c-5049-395f95a95ced,1503435740,1512202405521952893
+3fea2099-0581-2ccc-9378-0d54fdc81b9f,1177410817,16609925334630379909
+1989da12-6ccf-d150-2a64-b81982003e07,1217847187,10848940751288998548
+13a408eb-5a20-e70e-f990-b302ee67e061,406737363,9965684135049425127
+7eaf56e5-72b7-b2d7-c46a-80e2216e64b2,67151759,14776803278891121883
+1ba3abc8-a51d-9179-672e-c0a7fa0d1f61,195182664,2461154250331531701
+f133aa01-de17-4804-68d2-cb1f630f6a61,3810296890,15451546705495104720
+c5891db2-4145-f5b4-c648-6a1b31f45753,1096861065,2447653515210442061
+33576ccd-7262-814b-472d-f4109d6d11f4,752681974,8935694391974303849
+46bb2b48-b29e-8070-d4ea-13c00018c6da,3641299794,12815513350011139751
+97b2d616-00bb-5545-667d-4017a6d949cc,3822069379,14509126664557585326
+8c178b86-0fc1-8118-121a-78ec895c1122,244878708,11260768895418342
+32d51642-3e31-3d99-af7a-c1f8edf3e2bd,1520411316,15928248674190929591
+500b1719-15e0-2c44-b5fa-10316e606338,940357295,10757572444506242933
+13346e95-800d-7ede-5146-9922c8966006,1989557731,8904178946090924237
+09eb65bd-8107-5386-8e23-30575d1de46f,873322918,9660057739057431465
+0ef3472a-1b69-8e22-10c7-5a23331be826,1399308416,13420536294857843885
+91454a90-3c67-7ed4-0006-3c3e5ea69345,88259398,7936350756658244097
+3f66ed91-a869-c069-abe5-f40a5d503a43,638094965,13812874491490505634
+a7d7106b-27b3-8349-3b9b-aa6f938d5769,2369485547,2752282461149305075
+61f23d5c-a06b-3b67-d3aa-f8e58404fa41,167560912,647207587952505504
+77389acd-22af-e95a-7739-2e7f5c2ebb73,2766873334,13073505552479616564
+aac46f2a-76b1-05e6-9f31-2b31fa4485f5,2912869950,5007675095484809389
+667f7a7f-a55f-f08d-0683-a7b2ee9e7404,2438256370,3727262913052045095
+974313aa-b3f7-07b9-751a-7c368b1b6af8,1858451741,14707114210038152651
+8cc16777-c532-9898-4d7f-8e8316cf59b6,1308294400,13227632949113247078
+d2c2e23f-db9b-7c48-e139-2f79680248e5,3968112233,10271246198588444567
+8820d479-a050-0439-d590-9e66ad0e3e04,2264828130,15548870113671492990
+8ff76761-c0bb-71c5-d30f-4a216eba25b9,3432702913,17860852061144776407
+3c6f1ca3-72d5-34b1-fd5b-a5b2cf9a68b0,3635182891,10286476942115564616
+5455bdcd-d893-25de-a25a-8288fdb2dbcf,2412020461,2512079359675741790
+1c5c72b3-d767-ee83-c85c-2aa7cf4940b0,3090964041,12802672194442273593
+0191d5a5-e6c0-476f-d4a5-309e230f158c,2494928458,9940589054576691448
+e1663759-0d60-403d-35ab-dac0f29aab22,356988064,8650193310487215741
+fe6f2a45-e594-7291-2b87-fa862f945c50,3377784563,9717957808468523535
+991793bb-f9af-f1b0-a397-0aa2aff988c2,4114788140,10122637587873026518
+9543fe0a-15d8-5eb3-774a-976765c11431,2002664169,11489847990522260883
+1a196b05-71bb-ea84-65c9-c3d713c36390,271705242,1118996928463513783
+fbd46722-d42d-4bf2-cb1d-e4a94a38ea3b,3194370706,3467175457849701275
+db53d877-443f-654c-19ad-7a440d81a8a4,999667448,1231257910566917889
+3cb09fb6-436c-6b96-9ebd-fcee0437bd75,2384154585,9742891397236495991
+b2a9bbe0-883e-8f12-1ddf-0bcfbad19f0c,3438142869,4744109153692542019
+f4d768a7-c7ac-1972-d850-07748a6cd512,3027969022,10090342683183412040
+0e146154-4e85-ae8d-e5b6-c37ec53a35ff,481789490,13184477890578475299
+f3beb613-5fd2-34b5-67ae-788a60b95b06,321551533,6483341028070101397
+76169dbe-a84c-80a3-6886-2be44e132de0,3545747064,11960290272130284316
+253c1e8f-4943-5bef-b533-9fb55a938d69,2686075500,4548913181488030337
+05c03db4-3f2b-6285-b680-dee8ad43d366,2242044413,8551084737377193429
+42f8e16a-dbfa-927f-dd17-d5350d24a5db,1897469749,229246167206246724
+e3ce4a29-d8c4-4b9c-d233-a2865d3dd7c4,36483342,5817898244442212707
+924d3d60-e47b-32b1-1d52-9a031e13072e,2472819152,1420201733752158558
+f1ba5867-5bdc-90fa-1685-223873c98506,1841046592,3601796642477859298
+a60d18dc-a260-6194-54f2-ec77b80dfe58,1838723809,15591440934596640542
+2ee865a6-ca50-cdf2-2749-4bd6c35e5ae7,3439084175,12855240670214514266
+cb8646f3-eeef-edcc-808e-c180d5d4c8f5,2643022819,1873900493187028739
+efc6b721-b310-0410-bb40-1f3447c1c4a4,3671712233,12780663620413112883
+d88e34cc-ae38-0817-79cc-b55126c5c246,2931328451,11273335393274593842
+1f6f8ff1-d032-ebcf-038d-f4aa21a4f032,2873955390,5512586468018833723
+1d5705f6-9079-a2e7-7f6b-a29a21703ff9,1798081321,12402795742081460278
+ac683cdb-75eb-88aa-977f-3abe1aebc029,798139542,14513676198025974040
+75764313-9c5d-cc86-d92a-da0f73bc733c,717169577,12848509476766699268
+77159005-2750-3b71-d925-30b5857fe3ae,3932176580,16307284957231377398
+f2fb4368-974d-f629-373a-0176dd651b04,952548884,5451042387631127524
+a2bd42f9-0723-4a91-16df-126322077885,4192499120,12516716654696797837
+2fae9aa3-bce7-74e2-4649-fc9a067062da,1624535803,6298212687075865332
+49e63f0e-929a-6a2f-1eaa-bbd123db7a1d,2624791419,12759661745326256260
+fd982725-285d-4c45-1579-92b84a63f048,917295355,11826024511361207520
+8fbcc280-f835-8923-b1d9-20d8eae66ada,3665408954,4130349067502812585
+5ce01446-6693-9efb-6596-089720803afe,1297208369,11534053861977502317
+f2328cf2-40ab-03e7-fbb4-69438c624090,1329595370,12480505620910470464
+9540ddca-866e-491b-9dd6-affee8924cc0,3268383173,1362197521142658631
+377fe14e-fa59-61b5-c58e-21c0e03a7fe7,997260269,2809239157894453095
+22a793eb-78f8-a632-90f7-5fcac1b8545f,2799443827,11779145946677328809
+7b239d4f-374a-e553-54ff-8027f7336a17,2237246709,13146515076128529565
+449a1538-6159-0e60-043b-687b6d8e58fd,4031289114,12662235092500796718
+e0a766cb-ebc6-684e-047e-2e12173ac304,3313784089,14133382747131608792
+ddf2e983-0703-6ddf-2ceb-e8487976f0a1,1172258247,7858153548177871070
+fa332a86-25cc-8ff2-6a5c-9c567e50b65a,1075161735,17170812692680782155
+6d15244c-c3c1-ecf4-f6c7-110196f43a15,3360670999,17481249302372828421
+56485815-fcb7-f160-2a6b-8c710c9db5ea,2861412525,11460978877029655724
+0b459f27-19d5-5cd1-6648-ae8846a12fac,4072112964,4914385185321531368
+aafce74c-f7de-d62d-4f9c-1535a977e490,4054389980,12128373322728678743
+92f33264-6c98-c32f-2788-d13a423bd14a,2997159797,16570683721059487871
+c21c0cfe-7c46-e40c-3920-65d190b0e27f,685707240,8652302814348499580
+88bb48e6-32a6-f213-3a0e-f137f573cdd2,3888769767,8816416876692538063
+e24956b1-8cbd-436c-5ae5-06059fa69bee,1597130005,9094528511588499002
+d9769754-d1e6-487c-7330-ebc6383d6523,271204254,17721900715777177661
+83877b4d-e007-993f-9488-737aab3462ef,2155141552,13287194751407361309
+ca58650e-265c-1fe0-6ef1-0e2b4eaf4cc1,800110860,11507833884840842843
+44947bac-d7d5-0fb6-2fd6-83e0cf0222f2,3790466144,8642442028790276379
+e55b3181-659c-e6ec-c62b-5bb2fdee7623,4075248759,8915425439214942902
+b9eb53b2-91d6-409d-6276-3928b14807fd,2012680344,16641429039758622919
+718988ef-1e47-db22-c9a3-067b3ba0d8bc,2926458726,15351914486741730691
+dce20d3b-0265-f993-38e3-e9a96fc79551,642566081,10505034491194305510
+bfaee391-a374-a1b6-98bc-769d77f7b142,1078308426,12302513535888821536
+3c7323e3-3f7c-5798-ec0b-90a7f1acc8e4,2894115230,14898887766455593960
+e6922963-fcca-0da3-1f88-5a53397153c8,2970421856,783404574456794293
+b850438e-1af6-a993-3aaa-ea6b4acde0b0,2086493208,16272527864584405518
+8f5698d2-d4e2-4c40-6fbc-5dec104ca5b6,3708914815,2963652245815533106
+898102b6-5867-e9d4-8eed-de2ea7cc8f0e,3319375508,16951460137823899206
+a0319063-9880-6900-c7a5-72e873cc2c95,3978513372,1655311050754202775
+a245ab8e-734a-e8b2-057f-e64b20f9f3db,2685665637,8437104535365624012
+b1067af4-2a8b-7b45-fe6e-01e16388fab3,3309852912,15407957248438111041
+749558c1-aa33-11a6-bea1-ac8a49ff8873,2319039956,3549805051184256771
+f6adc13f-d356-5bd2-d300-7bd0c2b0d43e,767995737,16067678704319238102
+f8cebba4-fb5d-52ba-ccd1-f80e4199ffb8,1770763374,10906796385164781089
+e4d6c071-5249-be4f-f72f-b62ca6e6af7d,1745371232,7142451916283472170
+ee54159e-ae07-09ea-9be2-5b296bba0530,1201682540,194437968966957922
+f7310e25-beb3-21ab-863c-15e4ade5c553,977742156,2515128285697358347
+1483bc41-3962-bcb5-502f-a50e2f681f0a,2336574127,2611671646577753646
+9d2b5586-ee88-c1be-7a35-b7aab61f2376,199927169,4850987537942169589
+143dcc58-9aca-eefa-82d6-9c39f59530f4,3830747838,3507660799097048623
+c96ecafb-bc15-b0a4-c28a-a013c6b335d4,3824464026,154670655002434326
+2b9a3665-bf64-ab94-cafd-66dd2cd76028,468313550,12245533651480189877
+16c57c91-d2d0-4c2a-7c83-577e12dd66ef,3126405144,11152971094052698902
+a4979f57-19d7-5839-73dd-5aebb2f74266,752595298,1527010413031285108
+318f1bb2-e3ab-c5a0-9e7a-af7269191fb7,2772264493,16213987583332363691
+4d38711b-1a6d-b4a4-11dd-68dcb42519d0,1449339698,11363231531100052137
+06abb12d-a847-c291-fb57-8186ffe90998,2410032905,7668756129646360874
+02d1a271-f3ab-c090-5d76-c135a1903685,1706653642,11245112637749730601
+a29bd0f8-780e-1096-6a84-66bcac8f0a07,3689126513,13174318767321729865
+2b6c499a-2766-5b70-e8ed-dc5aea7a4ebd,544778870,348526403917326693
+42154693-b679-ac64-c826-3229aad9f37c,2614542558,7006732973635182963
+211229f6-5cd9-a5c5-0bf4-bffd1255599a,2285549682,14829706308578825538
+bf579878-9779-0bb0-f21e-960fb6771b09,486053309,18267817249502644856
+00e1da13-4c5f-fcbc-2134-ca3d2ef91ae4,686862949,10541564552916420441
+54d4aafe-0459-145e-9e37-2eee38360af0,1295114989,5480851657401304486
+f35b38f0-7aea-e4d4-3e9e-730e0e162443,3449987700,5445810088994350172
+3f494ecb-b09a-954f-314a-ca0a8d614467,3080924398,14841231503459687112
+0f85edfd-9136-37f2-782a-63d2acfd1fbf,1544130029,7237258678242903805
+c6bd2338-8ac2-1b48-e091-86391690ff25,863487317,7553058693090399352
+d4e044ad-dd41-6383-feb4-4b56ce16068b,3199560753,6078837265910086378
+6ca17802-a17f-6f3e-7873-c5fd0f9d3fe7,709785987,12593425704220842650
+d2ec4a55-f4b2-9be8-862c-ac628d8df26b,3416019067,16763350137403617997
+dcb23fcb-d48f-4e43-95c6-579e2ef6cdfe,4083471166,5216692111921760053
+fa2c187e-b3c5-8f77-5612-15b41356275c,1313881101,15201837019325921325
+1258ee1e-4e72-cdd6-fca5-08ca3da76aa7,1983969001,16093262113985353535
+57e3e412-a526-eb40-a88c-5980c96bf6f5,3672535785,16008780089154523980
+052c71e8-d7b8-7e2e-8126-7ac395ffe3a0,2795233466,335186355465745544
+e4e24540-7af4-2441-1f3c-ada054879941,480764455,15586977702304915326
+23c9f91e-d6d5-8bd2-2273-2db420126627,650567926,5552871375526672431
+f3cbb4b8-3860-c73f-ba92-22c2ebcd9289,2171239745,4088005692896971128
+e92d8c92-3380-bf33-7697-763198e734c9,2941695400,6449997241669359632
+24dc86d5-1db3-283d-52a4-dc420cb2b0e7,2409822648,16087303619504797523
+39d98d53-31ad-275e-2ece-dbd50196a7ab,431789021,11649191145593711348
+adbe3d46-3c63-8f13-392b-7415656c82b6,2473182351,13873990658260364577
+e3786733-855c-e051-1a0e-2ec082f36fd4,2235236428,15529479775293141037
+45b02ce6-5ad0-28de-3ca5-d68196543df3,731309313,6375722143473298724
+69767f1a-cac8-be01-a18f-5b3c43239b0d,1240953032,5828524397888024641
+9e61ef64-a064-8aab-969e-440f0eeec489,2709506798,12049124166764864708
+7dbfbe97-b666-26d2-1f70-52560a9759cb,2248152377,5565501194599969521
+2d3fd5e0-0e48-36d7-6a81-ffb15a317832,868980692,17999959754561277465
+ea3b867b-f773-d99f-dda6-ebdbf8a15b8a,3842778128,12939631549910964377
+0570bbbb-21a4-469c-5e10-f81e5ea450fc,1198110677,2325045477403664718
+21b57625-f87e-c4f8-82c9-55131190c2ae,3990464260,9277015473851503760
+4c339532-f58a-e78d-0db6-d426d4979596,2497801585,2736468180359078841
+7a7152fd-45a5-87a6-ff6a-244ee64d136e,2839517949,5310871670587291944
+8b9f0eb9-c018-78c0-44bf-2bc56c4c596d,4256977344,1275050263614537682
+22b2da1b-93ea-5d2e-7936-51942f59b185,1868710482,16454303327771104865
+308407dd-f01d-05d5-a343-2c18e49bd289,1702472150,15990931702475318131
+4d761c2c-391d-dcc0-dc1c-af884999a223,2766967124,13647234753491306358
+2feaa4c8-0753-1652-3a23-7e13de8a397e,632945997,4581673819189959848
+5296cd56-85f6-c98f-74f2-7287ff14e1b6,3955001921,8678222396919640578
+b9b332bf-9aff-d0dc-7968-72bf54b7a0ca,2204662903,8368748285768522499
+0e1a0c4e-100e-4415-ae23-23a7957dc764,2191127305,12336980384051460132
+ea842af1-596f-28d6-a780-64e6ea12664b,4231118848,724213243802300167
+9f3c2b04-ea87-b4a4-df79-0cf86c674d1f,47365350,14669963888625611046
+b321b5d5-9012-6962-463e-3fd7e67e19fb,2840076102,6431932085758282417
+7e2420c9-66c2-bda0-6cbf-a4c3a45312af,4123918997,16787962640387565406
+ec276dee-03ca-da50-801b-7e48b0746332,209517326,6315367303727121677
+70e592e2-48f1-95b8-e55d-4ee7696476ea,1815330657,16769506026857337437
+c1a0ae9a-ed64-05a1-018c-1a4a5275498a,1347510081,11695195364758558338
+079958ec-b3d8-b7c7-77d8-92a6f0924ac5,1844792845,1604207920346996607
+f5d35ee3-6c8a-8ac2-a5d5-73a74188d7a3,3519452032,2945592608689680452
+4e63dfab-ee03-ed4d-6595-720f5d6723be,36817244,17570175387178368993
+26467f36-e852-4313-2c84-fb67af1824ea,4269983090,4279898385214374637
+720e9f79-e4b7-d571-29f9-93f6d223cd5c,3602806383,9070174424762119589
+30e8782a-4881-8b7b-a597-22a22592cb95,376821894,13332210643681968193
+849d1c02-9c26-6d0a-876b-8d441fd9edad,2524808882,9676102463947719913
+e58cc256-d327-099b-ed1b-b8815d015c4b,2401570952,977650400484084079
+8e1d52f9-916e-7927-a5d4-5b3ee1480d41,3187241872,6222553305554014653
+05003f30-5c50-ee25-94b8-7a2c90c266cd,3856308206,7977740316270404680
+2e421d2c-0043-87c7-5b68-2bed17465ddc,4186573799,13686338064156040756
+61c85b70-0185-d3fd-863e-0a176913db2b,3385816494,9237580341228657548
+23e3569b-6c73-3278-53d8-934b352d4aeb,3058465589,7507984014460172029
+76e53976-3275-7edd-8db6-762731fe86ee,743794831,1249977900844695767
+cdde9784-02e1-0a39-0468-de990ec06cfa,3667843537,14461499964559270054
+ac2d4ea6-eae1-3c8a-3dd1-ccafbb0182a9,4000553737,15106736557248486469
+88991f1e-52d5-f7b3-6538-c5f34a8ac67b,2583017180,6784691363066460527
+6620d6db-6883-9c4b-5792-138498ed7ad6,3444273154,17966288162186828995
+960774a8-6ed9-5075-4e08-8ed2fe041900,1574100380,15304233337506267196
+74246f0b-b5f5-72b0-f521-b41869a7afe3,4170555485,7621688383118171642
+3980394e-e9d7-7f17-234d-339b8eea21df,1489482110,11683273858518555934
+0cecb2b6-2b5d-e869-d233-fdd622a6e941,3915080679,2179125928792134013
+0005c8e0-d9e5-efc0-6642-d745e5b63591,3854252706,16312434295855024375
+aa035db8-115a-5c7b-7b47-4b576040f7c3,491537678,7905415475127097847
+a772857f-004a-e857-cbe2-e6871c054fe2,27829504,14264061106239265493
+6fd1ebf4-31f5-d8bc-f310-272db2b3948a,2543836848,10597890490356981248
+101602b3-ae55-643e-684d-e74701493277,3626065866,2662081125747996256
+ace081b3-60d3-8c24-fbba-7bff67d30fdc,1284314400,8327030525925396138
+812c521c-eafb-814a-ffad-894f7b06b2fa,885405231,8513868854792041175
+522a617d-c7cf-2a06-efa8-291b14e8bf82,4033896803,15560278786820798840
+e21a35ff-4802-a3a8-3086-74d5459087c9,470459954,18112763274431156339
+7d5b3e64-a070-be13-7547-21283d3a0b9b,861213973,11123780889121777785
+24462efd-e232-d082-8683-80f1b9feea7d,3735247737,17625074398212388343
+025c1ef5-fdf9-76ac-9c6c-bdde65233d44,2020937220,17763572755275631948
+d7034fa9-e13a-ab0b-c462-a7f6b575b481,2092164317,6001813632081950815
+889634b5-0866-51f1-8f41-2e1b8e4dfc52,2489545251,5188368624591557982
+6d787cf5-63e7-6e4c-2e7b-0282ff50ba0f,1319388260,13092755713545605084
+8d44ffcd-48f7-43b6-c360-cf6a3c520087,3374456545,294276535626188166
+d74831e5-4dcc-6808-f3ea-bd950e78e9b8,123869107,3106548687932444148
+6d7d0289-b505-7571-35d1-00ae3307a25c,1278224245,5669756390174694032
+09b327ac-5dc6-a08a-60b9-2c995bada4f7,3086753343,5282486063859144835
+80b9fef1-ba52-cb66-fb96-2caa5c35cf43,387738808,15042761247718659102
+f2e736ce-b5c6-0287-5261-e727836e745c,2246507123,9005575717894414892
+d947eec8-7dd2-7ca6-9e71-fb40e65fc0e6,4153410412,7908807873398713359
+9d6f97a5-6d43-3351-3d92-f534f47c0a4f,2445120395,13805146912997752869
+fbecd663-4a6a-bf09-7a98-3d4a6b26eae5,932017232,9536494170340562087
+f1ef8c6c-4d3f-7c7f-8bca-1c563b18f31e,1642761734,4309476674632220601
+eced140c-5717-7931-c18c-16dd4364964c,245471972,17010396240143438104
+fa91c077-9931-948b-6384-ee9c71cf612f,2673090351,560190854524843142
+a7a7abc5-5196-ba3b-da85-ab49edee111d,3650634380,3966835874508124859
+448a58bf-15e2-11dd-1f8f-e88315a1699a,1642438329,8345076142311609253
+90c1191e-562c-9991-5820-33d4426e6334,3340962102,17495303526420823626
+3dc92c74-e9f4-548f-5e30-635dc259542f,1908756922,16592856567831429793
+34491fde-a08b-c58e-7472-b5c9add610ec,3429584444,6345426101677295278
+9dd92dbb-6d5c-7aae-d2d7-1b04a61e6d90,1974735269,6762945448009751187
+e4c920b8-3d8b-c129-bae1-f1746e1233c2,3350972211,251306698530606683
+cb7c29a8-8900-75ab-be2e-5cb51ba6ad71,2429098264,12581233818543664119
+7c2982c4-9e30-0a52-3aba-652be22f64cf,278242346,709058761959838573
+36e6bd84-ec22-5034-f9b0-df0c8aa977c8,2938421969,8310002225024356682
+d4eb2855-65bd-1649-0af7-f03422a2bc12,2426475795,8455955961836896515
+c0efc45c-c31c-2f29-217e-9a85a6de153a,1606096428,8464519533357735993
+3093e471-f262-3439-8d2a-a2d26d2f2516,2662236588,5794095084828898604
+9db1ac21-8594-4014-9126-a935662c9515,1296611544,14676031860086358590
+d3ded71b-3442-c80c-1597-bbfd28f2769a,2546821511,6078989952581399717
+25d1ed32-bcb5-b920-7305-0d39d60f1006,461247972,13225010567195258728
+240846da-b63e-f656-92a4-d25c57c57de9,4159363127,3645188411240851530
+a9af9ea1-ab92-74da-f3d8-55e7ba9b76b0,446077835,11149678362646013117
+cc6d9068-c929-1243-79b5-a2b0eddf8028,1662534937,10210606089007278191
+0a0457b8-08c2-b353-6829-73123e10e177,2411348453,495226435207222588
+e0ba5c74-c4bd-c8a3-fbd0-af50236004df,1211708725,5633830683660566615
+ef041ed3-7ded-c044-c918-827b44973421,3522221172,13565526457289489546
+734b8f6e-9051-dd33-ace1-cc66c8c65199,1990793140,6006370514329253031
+b4b7d165-44e3-8092-aceb-1a0e3985de52,2103816946,10234662186961478358
+8e0ca19b-a208-d35f-f401-aa26b84770ac,155970624,3686196919075975538
+6e0baa11-862c-0146-2cd3-51794d3b5c50,1541073820,6662891910687156403
+dd3c4d37-aba8-277b-7a89-4e28c1689025,1083941275,5646460352044114458
+697c15ca-c5c9-423a-fb41-0cfaa82b0577,3667276531,11106906678052588475
+0154ee6d-e3ff-2e96-5a98-7fa5a80ff19f,2463579808,2038405962844072062
+23968c74-31c4-74d1-f678-c7bf807862f4,2351727601,10857830531268241722
+ded914a6-884c-906a-1297-6640cc6849f9,622814417,16285095422054644783
+a78c8791-3d3d-955f-b32d-7b38cf486553,2626211891,14226366075596583560
+e61d69e0-76b1-1758-5de2-595063ebafe3,1964058051,13793696212505635655
+86ca7665-5893-bd42-8ab9-44a03b7af092,609316321,1495667505818406524
+b6baad54-1283-0a9b-fcbb-12ba9f60416e,3607263027,16895244098245186694
+3d616488-a5ae-54ff-ef87-b42b8791368d,2114016971,8659771393547686167
+d2bb4945-2442-2b59-77b3-f8d0226904f2,1769680887,10395596184310098769
+b4f2d666-6e40-fe59-4bd2-ad823900e164,415013507,3490106238705671251
+f49eff54-82f6-2111-15df-1dd76dc3dcb0,3616169009,2827462084464012654
+755bc331-b98c-44f3-9487-78662a4c01c8,806701313,16450339323734904885
+947939f7-56e8-547e-f74f-6adf4b2db1ee,474531983,17370054857922855212
+40c5e9d7-9bb2-52de-4bcd-d8c9586c4c89,2009314775,8015238010086952411
+1fa47529-4485-5537-0913-d8efe8da25b1,1059687806,2798405947445627065
+20319ed2-1468-c2f4-f11c-a2581fe08940,2937846129,6315919615193751314
+32bb23ea-ff51-7d70-d699-892418651cda,2052605487,6047345971847722786
+ac3b914b-8652-4507-f619-6de8a7f0fa32,367150918,16898242421574570622
+b0c10d11-87b8-c601-cf2c-60211b90909c,1698203463,14266539018452120962
+72674a59-340f-f3b2-c2f1-5b74038b61a2,3797079804,606844882097350055
+8081a3b4-b67d-1693-62d7-54f8bb05481d,3237548223,2034596359450362702
+8841d077-8067-e61f-1656-f01aabc5d02c,1053369575,13615430929607792382
+e74fe8fb-ff8f-d7f3-1e3f-fcccc63dff9e,123751815,1280425752205376395
+a854ee24-a667-72c8-26a8-78af839ba691,1664440733,2808356107489985022
+0c274265-0439-03c4-acf5-2b3e8f7a565d,354789967,10765461917674601809
+20312d2c-80f7-7b65-a900-a7781d033b50,70445944,17379692671384817096
+076d7690-edaa-bf23-7831-9c03e5a69b6c,3499760151,5289172988601069911
+7034d40b-21da-e101-24c0-0797099c0c0b,3203534096,18127903055783146436
+5c320ac3-e1f0-2aa3-034e-0e29b4112d4c,1367513126,8330654002729708088
+c951ca27-6c54-b56d-7069-5d3aa361c5ba,2376675725,17310587672165467871
+726bc0fb-e7f0-f9e2-3351-6871d3169932,1030325787,9400672365761207157
+6c4ba1e8-b823-a4b8-29b0-c86075a4f662,3423515938,9084142222871974026
+30b95d16-c004-57ba-e17b-76b8021e1a54,3806708546,3957018643461338957
+047437f2-e055-071b-154c-6cc5b3213091,1554550402,1089315596759861965
+e361a436-1558-d0b2-b368-a1c8885bdb28,4007701101,9345756204210377200
+8e784f88-e23c-8b54-b733-55af78a7c78b,2182064954,7782868666209950013
+306d60f8-2369-6f1d-9026-c70e77557301,631469089,13641175338086534182
+dee1d77e-0bc8-92df-5e74-572110e843af,3566925447,6511329408761031639
+fef39918-a1b6-c920-13c1-c907fd880211,766723841,5567710008684949619
+206b7ad2-2549-20c0-9447-ad1304fc93b0,2975637652,14417087091321695070
+eb2a7ea7-1dfb-8bb0-7745-9dcf417ba498,2882283740,9234571878678012623
+237cbea9-cfb8-cdd7-863d-0aa6916d10fc,3281324258,14654757412122886587
+bcecd00e-01a6-36f9-71f2-f9da8dc51dd8,485225290,8708101883017132209
+119f5f9c-44ab-c281-816a-31d87613250d,4128166748,8210027368103238881
+7c31c68e-e9eb-9eee-4c40-91fa2e4e85c5,3061490735,10487967529779045481
+a8e5197a-e489-32e0-43aa-6e190448ddb5,2734356422,13158777991302442853
+12e26242-7fc1-cfdf-af4f-609364bf299b,1209368768,1016413304888475532
+a3e7e7d9-8bfd-f3c3-f71e-d8b3bd829340,2708303227,10837906917653441048
+3e35a955-06f9-747c-4263-50e02fdecae0,3238853834,505632226217587041
+587b281d-a991-290d-ece2-d40944be712f,1848086845,12676136007234701667
+e98541d5-0034-9085-f5e6-7d603d4ef929,2284535524,11918599017461859787
+4c705133-bf3d-66c8-4b02-8bbb49d5b66c,3374736348,18250824397339212052
+89fe2f72-ac52-8cb0-d917-9df6e1ab1712,2816660563,18081944804283573204
+f7643dff-2702-dda7-b9ae-c921bf2892a7,3068260992,10815661931230494613
+0d387ecf-b5fc-e2ed-b75f-8cc42d71b9f6,1215825155,17361360840005532779
+edf50854-fa5f-18a4-cf97-a06bce6b83ac,3215378636,10318485190918207090
+c576e7ce-ca1a-fa48-8681-c532708ba8f3,4262243595,9529188332536725775
+7e44dcec-0b26-ab21-0b46-af19e98f6300,133225802,7353415545682809869
+b4847c46-bec9-a222-c506-cba302aa6944,3344887242,9168314401734230426
+622fb3d7-d0f1-b390-3c94-3208c8fb93bd,2936043799,15965539969818526651
+05ad7171-76e8-e3f0-98fc-3606e2927cd6,3330841616,184502513547807478
+56725897-8830-118a-8aa5-a8c40ba57f85,3647274437,17865074946294464282
+11e6cd92-cba7-c960-406d-40e8baeab3ac,2506861981,9395632614145240330
+a8efb13f-c520-d909-3c0f-9ad8f893f1c0,3917234493,7369104707365684497
+4bbe87de-9204-61ba-82c2-370334576c1f,2585702943,29884300971890397
+39623270-3cdc-f0a5-75a3-6a97c00e8e3f,1080007841,1877532982802600925
+081a59d8-6a28-f912-2a79-b153b30623ab,2387445631,12250187389373945724
+3ea676e2-b585-f90e-8fa2-d812e9fbd8a2,1035633907,14348330441907514753
+c28f7b3a-4782-d660-9a90-58d6b9f0edaf,3917686026,11411593557853979993
+ab4cb670-e656-3ed9-a3e4-8af8a6e03738,987605639,4329631049295724623
+b46b52d0-b4bb-63f8-3a56-9db32293cf7d,4273905473,2164359975268630892
+ca388f40-9a8b-b05f-ff6d-0f0049c50b67,455095610,4555592301350963593
+983fb425-3c5a-e7a4-f960-d5f72e5deb24,4225219107,7020661839691743091
+8b841f2e-c41e-a4bf-54c1-4814cff09853,366218048,15514904814811996898
+0260e61b-9ab5-cdfe-6ce6-284b5bc5157e,892376113,227271448575342352
+914958e9-fafe-16bc-60dd-f6fb5fcb78a4,3883178787,12920079189456286461
+63267156-74b6-8c41-df78-5f1252b4d287,4011556971,8755060588834234716
+01616e45-e76c-9c3f-203e-99672e8212ec,460602144,13551444641146480489
+276d12a0-e401-e68f-f7a2-e2d85f07ec8b,2979019184,10363786862459071690
+0195a059-27bf-cc55-3ae2-a5b6ca4feae3,2401534235,13854499486450381754
+dd19de59-0609-a1bc-af0b-195da53bfd99,3043126628,11290560984781173021
+86d9ea7c-2ad8-7311-cc65-42eee765ffc2,4248678286,15515564269236947539
+ab38ea27-c580-9414-a2ab-21dcfced9421,731542134,8239799597023353111
+8c4af78d-77b3-6a83-a4d2-c8e7e6b0f19f,4055299271,3196027850180759289
+eac2b488-d0c4-3db9-de03-71e90ba8b606,357540710,11286794248526206357
+a040722c-636c-8d3c-fc2d-b887534e9807,2905037105,5428936392253799653
+1698cd83-04c9-199a-8b53-9531538fd1f0,1821817203,17902769030723194014
+996a81a3-8f61-6941-5f19-3ad8eeeaf8c3,3561535639,14132212122527076868
+699c4bce-375e-66cb-0020-75f39c5c8146,1277608666,5694519533257521483
+c6bc4872-7e7a-e5d5-d010-57a99ca4c7ee,4230750618,1557831745549876844
+f63f2899-fd82-2531-fc4d-328dd313b84c,4000614743,14533179224314876968
+776e35c5-2b9d-42bb-053c-f6d82a9e02d8,170129985,608252059564920043
+f41c5fa1-017a-8764-9df8-c7959b548e0e,4199681908,6503237221120703576
+3c70c724-9dfe-e912-f0d6-5ed1d9734ddb,1696574085,17513437293101887066
+d5ff42bf-ea42-8479-496e-d1bbcea31d03,4132364394,6682228927676331933
+aa986fa8-a005-869e-3e34-4b1ca6d315fb,1963071746,8844300778049896012
+ee292862-c2be-18a7-ed74-d5b9aa521374,469438025,9876550316828011358
+08760ba3-1cec-d653-8881-8a7b7a06ed53,3339151451,11926917169291593668
+cbb3cac4-2c6e-ca1d-4e92-76b5dacd5dc6,739192322,13448430303580943388
+a82ee1d1-32b3-a575-e2b0-da0203d3d21d,1851008679,8469068179079476811
+4748a40d-694d-5ec3-059d-038967d70ed4,3592699923,14111050438845986445
+f59b34ab-31a8-43c6-355a-938c331ba47e,1021219812,17777002580596722259
+991b33bd-f711-97ae-b7ae-90724a121077,3488094606,18414143843126558246
+37a591d7-c72d-4d54-0298-d832e88c71f7,2785788542,8337066191034653109
+5ad3ddea-3b90-5d97-47ab-a6458e4165c6,3895121221,14242096542411071640
+807e935c-a6cc-fb13-3c24-8f5607f00df2,3801085516,10119776738401539115
+978d8dee-7a46-5c7c-b02f-4946aba7c11a,2722118890,2282085642818303951
+5f0adc33-8318-9a7c-6c48-2edbfc11b433,1149544091,2990970640209424884
+44bca3a2-64b4-bbb7-d6ba-af26020cc0a4,1706677807,9670352845361388276
+72031c0f-3ff5-3a3b-6aae-eac832f8116e,2722785966,4666778102222721440
+23b2c4be-a615-3760-68f1-43bce2e663dd,4135751213,13785108373863570678
+1263ca46-dea1-3d77-445d-1e358e851243,296221855,465633794744308567
+18c67a74-054b-851e-7016-5f038c6865f8,3895399236,18389252918979134832
+bfff9cda-33f8-c4d3-90e6-33cdbc9e81b6,1625989288,5680806068462091715
+bb68d548-e362-3fa9-1b05-a71f10c78e49,24981755,9050326337033460721
+6bfae667-f786-fb8a-6184-c217c82c24ce,3489926327,14146907198134689290
+93b157f3-f99c-8e85-7456-9cf605c4a63c,2246883464,544505157116075879
+9184fcb4-987f-176d-c657-b67229506d2a,31603158,1199604191778353638
+1519658b-d610-e50d-adb6-59dc0500fa11,503046928,130186398025228480
+4d065c2d-991c-7d50-fdb5-9db2ef468e89,1619325271,9689156372220752427
+b2147adf-7fea-8b69-f838-79d40f16942c,3103135707,15345561411510802536
+925b6c79-ce0c-b153-3fea-2bf43f48d43b,666850411,1848970124239037830
+928b5517-d9e3-db51-0601-a7e4353ebeb1,25034310,5181576983180782912
+e4e3fb38-c234-3588-5342-f6f7b7940304,1003899610,13584117213471039875
+7c804f36-6c42-eeb5-199a-223a036f8838,2063827201,12218700391693518387
+cf0cbdd8-8aef-ae9d-8cb2-2a5d80faab4a,3402556417,17363128280796388774
+d4a39c1f-5577-0881-ca0b-fb5908a31aa4,3494913539,7496351205479561865
+99bdcc09-9a0b-e435-4a9e-c1a16a5b4db1,2463474364,2028408892759350901
+4a868294-1e1b-962b-7bda-3bb5ae5c70e6,883343183,16954771173001750593
+6c9dce5b-f066-4a02-0d32-ac50783d261f,680005597,17573097949016716050
+d8d19b54-e9f4-c14a-bf6c-8fe97d89415e,3105920751,4315638455103929594
+3c1dc314-9ec9-f019-8fa1-5d9bf4105558,2439487189,12387804434645065356
+03f2102a-17ab-726d-95a3-bdc08713c010,837490213,1239967587863665633
+66a0f6f2-f389-151d-c989-9f1488550f30,18522190,9262195334386273153
+ba6d6b40-076e-8064-4255-6175a902842e,3567765855,12076776350535341999
+fb8fa14c-faee-c4dc-1177-47b67a10ae18,1813689183,16244300590868362160
+965ed6db-2e86-0ed8-15b2-ab60b7e765ed,472319437,1990708476672169029
+d61ef1a9-2e34-9239-2957-563e9b4b52b1,3887268941,17660556510080598606
+0a328ced-e4d3-8779-04b1-d3025d63f17c,3150992681,11698319521899997411
+cf559253-6ae0-51c6-474f-13f41f258841,1697939646,6046411556040552978
+ffa04976-a25f-4aaf-fa6e-698b34181dd9,234935383,12766786527797810060
+e2f98696-9080-0e5a-b03c-1a325dedbf2e,2004057283,6680338756060920267
+8bb653c9-9f30-ab38-4864-40fb51ca223e,1150999414,10061320210121399183
+7e983feb-8a3d-a946-a4cb-66cbfd5435cf,4024047476,16663253228887983314
+84a8922d-6317-ad3c-4a00-2324b138e2f8,1433082407,1486912171160342947
+6f2e020d-6712-524c-e2cf-005512e0ff8d,3796557898,12556612403177756652
+8fdd4bb3-f672-c20e-dc21-f5fecae2c443,2292422853,7885232294762858256
+2ab6792b-b75f-36d2-279d-3abe9072a67b,3723583990,2345809684951877940
+0d5fec6c-32bf-59cb-61a1-c1d07e234da2,829402745,17910249034345642223
+3fada949-d60a-1804-c8b5-81f25161f30e,1872343833,6864086010080794760
+353cc53c-6278-f0dc-cee8-f730fe594952,1440009792,2869789952961905924
+050bbf6d-bf2c-36c1-6b9e-6717f9d5e703,3824477608,11994484066243664397
+f3dcaec4-1988-0f63-cc25-9b8e94a85ea2,3349579327,12604158697984435477
+17d32aa4-9a03-1a1f-5795-927dbc3cb789,3690447613,5408658418169476502
+44b4a7f8-48ec-7275-38c0-ade165476baf,289028682,7839193836948945083
+40f2572a-a2c3-38b5-4236-3ddb7bccd7ce,2509158691,2513345391109488311
+5bb64d3b-3a91-ace8-73c3-5402446e92ad,663231631,13575250854795402332
+d4d1e832-b66d-b341-3c84-d766ad14b1ce,89332813,2643692042952617810
+14ec0461-0e88-c896-9bd4-f2ca2a3688b6,3889792690,9304727539795012482
+155dde83-5e29-a34f-e47d-a3089b763e6c,87530031,3035369082320698583
+9e7ae60e-b173-b413-a1a6-6eb017e1f352,1673253055,643672970754784651
+fd33ed6c-6b29-ada4-d7b0-1fc4f1920b4b,1512822663,17578833339903578639
+6690964a-faa6-1def-7cde-44ffcfcfb9c0,2502154390,9533589570940307922
+704c3b42-293a-cd22-3ef1-43c8f8cd5ec6,3844660686,12922199002695811562
+f61342aa-e926-cce4-fd77-0c7112cb7141,1427551618,15157405740471668974
+6ea40828-2f2e-a6bd-9cd7-033b3febee7f,1934391076,10202029121710919956
+468f0c37-7f53-7c7b-5ef7-f717ed04cb6a,1390857970,8852710118551780623
+e0a2c987-6c81-1a97-d14e-b2cf53267548,2802778046,12656235623012135539
+14d7b392-5350-337d-21e8-3a73bb8a4021,654088795,101515201335821997
+928dd8c3-7e54-8b1c-8e02-4c5a52143443,730364706,17172633890966451530
+52410b35-81a6-0d66-9a0b-e224129cffb5,1924913099,2617721715289816439
+87180de9-bc10-f9c5-1f6c-6b99cef84185,3903107090,9143633348732997150
+b1b6a8fb-7e1b-8d13-b946-9b87c4a5a3b1,1799117512,18200829665082233365
+ef8f198a-1168-fdf2-7ef7-9eabba44b241,2029797882,12404818522182876664
+b4ee24c3-7749-c44c-fa3d-36fa1f6f9a1d,3168694541,11691551093869313639
+b1b9004b-5372-ac14-4579-9915058865e5,893880577,9753809072911672335
+25efe52c-dd4c-1faf-bfee-9139dd62f914,2832323374,11947311029497610318
+65a03411-bdc3-d4e2-8bf7-0e8bdefba965,2226036989,10464001609442597901
+42f686c6-579d-1d35-e476-f0534056354f,2184509580,4527539683045314368
+42688e05-cd6f-6dfe-8306-8fd65ecacd39,365612205,12569827274792063127
+981b713d-c8a3-3415-d694-0dd9109cd091,3362268120,12147383850824062257
+fa25aa04-1cd9-1228-2735-e8956dbb73d8,2437787740,9878989576362199401
+7446adbc-e918-8e24-de9a-a2671e9e8355,898836038,6766260427871792747
+ea486370-1d1c-a734-ef41-ef5d98a3f08f,343374254,2130385064665292319
+48c41638-a023-57e3-f6e7-ff4aaaa82a1d,4196620197,3449786693183849476
+f65502d5-8385-3d20-2d86-d5e5d2783653,4048023637,9198729525327492036
+411c37cb-e5ef-8c62-2404-4d0ed07e7ff5,2091661447,8002804047858131805
+171cd639-e9dd-9364-6591-0898e1b2194e,109688162,14214041951797149803
+f9ff4e63-a3b4-7a73-8e8e-6a33606a9e16,1702552025,16999889810114170231
+4c89b758-b062-4eb3-92fb-82a1d3e7b751,923415534,5041588040416691908
+7d33f1f8-ded1-5fa4-b41e-04b0fd86a9bb,115712100,3443565092789404548
+d0eb0340-2d48-abac-8a89-7c1ea748d8b6,610468649,16554163359708676288
+012b93eb-176f-0fad-79ec-7f76029f68c4,739267590,17206224474327129828
+73b8652c-e58c-d7c5-e956-f4434bb96c72,2507457282,9037538940861447736
+f7b17e6e-d87c-52fe-b2e3-e01d33d87c7f,4218625918,14855577915211794995
+d38c5816-41e5-d5b8-3369-a3f4cc8a1d25,1724198206,16786271433576285074
+0856d315-15ce-bb6a-ec1a-e1fd6bdbbaa7,4266659783,11990175016950331380
+d9779658-e0e0-1a83-96ac-662470cdae90,2439285463,2330526372959537116
+acd69894-fa79-438c-7189-54a3d8bfa21b,3292676338,13112394732000317622
+415d2dc6-74bb-b1ff-7cb7-de4d8f994559,3290016655,10774629897530527433
+a4c37c9c-3b93-845c-03ac-ac048d1f0e3a,1870217512,3621637541041265909
+b24d97b6-d509-e0ef-b516-8a3967b237e8,747693831,12839496003555081788
+178a71ac-54db-8360-9419-9540318e6917,3105858023,9439718388679012251
+ce855df2-c3f4-8068-9a1b-081d6206708a,781351343,4728028101593407677
+0dd45876-ab47-cae5-57cc-4f3154b63d24,3015835558,10725742293304658550
+cd1d3fa3-75ea-ae34-c5b9-56157ac411e8,1294638719,11108845261045982948
+2c43bc0a-7474-29ae-3c7d-eb67d13d40c3,4290559674,3043670747029008709
+503cbb11-3d85-249d-82e5-86e8852902a0,3456347525,5720737559014985595
+5a59b868-8d7d-c670-218d-adc936f4c497,293738833,3423380601504122883
+d0860375-23fe-9ca9-a3cd-6a277bdcaba5,1590457222,10428406054064179236
+5bc92fd5-42cd-a75d-b3ce-6d76948a0982,1876895600,6068182823639361375
+d7b61972-8aeb-4c2a-609e-f16c8962fd62,3415821203,9860048101242784961
+5698325c-5883-e17c-ae31-5483323d7acb,3719475009,5457969561370109113
+0df7267a-fa7e-70dc-f6b0-16e4717d9d60,1955420848,2248700563367594338
+414a75bf-6a63-768c-6774-015f06bfc4af,1439924522,8111661707344166779
+11804e0e-cacc-1a64-2c4f-b21a971b5d00,3238928175,7305435550650115932
+0304f10f-4779-0433-5d8e-ea71811b5934,727883454,4410816058233184311
+4b68e042-246b-5c5f-1fc3-cf18620a118f,383995705,9487121396335911396
+8d636163-4e33-ba6a-01e8-09371f19a0a9,1993138139,8981122906669530822
+f343d97b-17e0-b172-58ce-87b0035622a6,1330952067,1197541957942201490
+80390478-54fa-4e82-f931-019fb09293a1,1749856563,6808054650556894920
+dc494900-8225-5e58-6de9-6507c54adca0,4245738023,15360059741310242673
+d5614a43-5c0f-a9a8-45a5-7eb9a3bf4951,1395342644,12106452108254122161
+b3cf16c3-420a-0295-2d68-42448dc9c971,1576164895,4741650753938062290
+c40fe978-a038-5f04-8eff-f5962a57b33e,1893214378,4411776414886954291
+68124722-dd8c-6281-c380-2b69406b5934,1942803464,9617476065650428254
+ce373b60-4d5c-7487-ce38-c08e3cbcf1d0,4264800203,13485215588865021420
+a648f27a-0539-5970-5e34-f955af94e514,3121282359,1383018022697544171
+dd12db73-9397-1554-0952-394669537065,3256816901,16774316191719574677
+2187de11-7788-db42-2e13-f7db33826679,964584050,13918460692159518907
+78ea817c-4420-0566-e6ce-5cf4aae85d51,3205139913,1060616783875056879
+a187a607-d30e-959a-cd64-954d7a55662c,3234543378,12292392400868647999
+5dbf7ad7-e4de-45f7-3c5a-a2c8d0daf98c,573896176,12991927331442154854
+42664a38-99b7-147e-0511-e824f2559590,2084013873,17159921969749822357
+d5f89d82-ea29-3ac2-4dad-3ae23f9ac58e,2262665113,17657677434381102429
+c884fc1f-e79e-c683-62be-0e478d3bedf6,3901536720,3416543868131247151
+8e2e80ef-eae5-df4f-4e7f-99dd77cf0f80,2081249514,17081795425163470605
+b35b6a4c-4334-c049-a28d-40ecf5d362b9,2974747784,2076065188408543743
+129a6e23-238c-d8dc-5a2d-21ee2b8d423c,1206954437,7956812387236618471
+4d1a38f1-8c16-beb2-deae-3f45786e1d9c,3712166662,10367482758548455853
+7d95081e-d1d1-b6b7-c40b-7b05557b8184,808853588,626360839808710370
+0696a68c-5c72-9774-cd49-f5990ee3e816,965723951,6208984553741111091
+dc92bfbb-7993-4ffb-2840-1dffcee91506,973295870,2856290452497994403
+514bb180-9ab4-dc76-c811-cbbb67fe05b5,1424645516,8809160559927506669
+6a8164be-e515-dc5f-0e66-31a6c42f91b5,3143208208,7097717109579679925
+9e78a2d2-334d-abdd-39c7-b9046c53223a,3248165517,17550397182103147141
+10a4ba2a-f125-5e36-9271-33a4f28e86b7,1410851382,13826901424228320370
+2d18d93e-a7e8-a4d0-3697-49fc04074b36,884011781,13952968766670714880
+c90c490e-ceeb-3659-1fea-39cf4f0caf0b,3109135784,18207949804908255536
+7120001d-2d61-6a79-c4f2-3cfe6840ad14,2171372088,16447577440245626764
+99b77670-1c73-e094-9f9d-0f9d5f59bf31,1843207445,11106913315618455925
+07362038-7757-1df3-5b44-6dd1f4ca34b5,3281116136,3261180029407212098
+d0621b0b-bd98-98b2-bfc1-ebc787b1064f,1672952024,9789883712236290220
+c3652f2e-d291-4112-6829-b3b94013ee1b,1048719894,3864582028764973345
+615ab29f-514a-ffa4-2657-26306602cd7f,2355972315,10264942110719478172
+b2910d1e-cd91-7859-328b-b13f074b3e9f,2879174464,8208220572985223726
+10ac4c5d-4a47-2ba0-2dba-54ceaca0b22d,2235089141,5711893437840759878
+cf851098-4415-951d-c0e2-4083179467d0,3458084935,3503506248889829160
+433f000e-92de-a32f-4afb-3fb17aac86fd,1372738861,14202343851020198231
+ed1fb6c2-9803-a73e-aaf2-2bad0f9454bb,2920373645,6362273333990403288
+d8260fb5-1857-1d86-176c-f60c282c1e61,773768505,18404690760922987029
+fb8d6707-7ef7-74a7-fb37-b13a8963d75e,234956960,16744667279917857444
+653ed0fe-cf5d-186d-13af-d30d7bf11a56,1039220080,6622538982084222046
+f7221983-ca43-3022-1a5d-53bc3bce9601,3270755775,2246390610025299343
+8725afa1-7dd5-7881-aefc-c286e0efbc48,3369704739,13284256122259698060
+cd9d13e6-d6b9-8dd6-6687-95a2425f3c5a,3219461997,2378717570504589473
+1826e419-3c52-5c9b-d4a2-3b23ef207003,354064538,13429801302631101307
+c3a6ad40-f893-aa5e-e099-8c6358b962d2,260534219,13937634919844520948
+e3474030-1a02-bfcc-721b-501d5ff30856,4167455283,12488776043429932100
+f1194475-0ee3-05d2-a45c-78eaaacd4832,3308066993,4281525484758296532
+25b56c10-8434-1990-9227-5ef7fd369cc4,501845063,2701497458439329949
+c1c428e4-c3a2-764b-09d9-c478209f4912,4141658713,1984022823382011161
+03860286-b1e7-679a-7be1-a1d8c691b6dc,559367903,7374553887726618990
+c87243ee-ccdd-dbd6-a1fa-11144e5d1159,3062701900,10805392524615978387
+b970be7a-1aad-443c-d8c4-d4be70257773,1114156396,4129180250114994346
+a4afea33-17b7-8f27-be1f-870c340ec891,1168025298,1737508605410012672
+d7313364-7763-677e-ba4a-e451cc7022ec,2201009771,5243478825416307384
+36efffa5-65f1-acc4-b855-a58f5d2403ab,2833489106,3084583844169036049
+42af10ac-de6e-e1e7-2531-f50e5d96334c,960405314,13860351647195538506
+82bb0bb5-4116-77d4-68dd-d7664d6c0408,133418558,17407068499888343993
+de0a39a8-8fd2-8160-138e-f26d2e8f0e53,2382551593,860706375467305026
+0d624824-f775-9a26-923a-1eed00848362,3763771669,7415937056111919724
+53cf1812-7476-aa97-42b7-f9e210617012,4238762517,591027373380429698
+c79cbb6e-1041-ab88-c0af-a01e0e71905e,596248768,16779944573700110988
+32986f19-67b0-5781-edb1-97a5b613521c,695198793,17771667392499378695
+bf574cff-da5a-e1cb-154e-118157df8ae5,1097385034,8025269583932628706
+5abbbc3c-f0bb-1eec-ee75-7aef134d1b74,2025551652,203050924354787745
+90152b45-0f9d-ba8a-c48b-e0fc18a26146,3672816941,2078410378522096690
+8494b819-9d68-d5e6-1587-73aed8a32d3c,3359455882,7154220102210199743
+2152de80-4b18-1818-2fbb-a2d7bd197392,3564812871,14030982352990974191
+af82b50e-0486-2eb6-5403-d4fb777e4bdd,2521448248,3418252116631429462
+f380e604-cd3e-3629-bcd7-07c545810ba2,1089483065,11488783381160565132
+6b71bdb3-4e94-1794-7355-68c4fcd967f7,485151537,14655968964925381025
+a336e43b-32ee-8eab-8144-2d23d348bd9e,48172406,13707894728518688031
+c08d78c3-c4f8-c9bd-ec53-573a5aa47703,181489184,15238644325028307553
+074ba582-e46c-c21b-0cf2-51b34e041c9b,3315173891,7940015379714552984
+da726600-2c39-63f0-7e72-cb346ec18398,630887989,9340460121247344800
+5dcc4a52-e362-53e2-2288-ded97b72928c,2867591440,12507600591386874773
+b33513b8-c130-3e41-ff1e-47ac144fac64,446376985,12000447689060561451
+4aab528a-e830-1c14-dddc-61d91b2dd238,1310860739,2090643477895765717
+40ef7007-5920-673f-cce8-9f8f250aa14c,356680365,3862736600963839568
+65be1270-28dd-3b39-4fd0-807433551e3a,1430604343,13274287687938578655
+117ebbfa-2394-98fc-b85d-aa0d3f751a3a,3607334011,6948824424584526635
+c91b8e6e-fc04-ac0f-942f-6a29202eee0c,972427946,7784806317517637450
+dbd125a8-09a9-8469-2e6d-9b2830116266,468687723,1079199514729504303
+37a93fee-d746-c1b9-a6d8-4d76d2a43a1f,191139656,9670829095776924564
+5787fdba-05fa-a794-5704-ca52f16967a1,405526645,11881383848729123955
+90f232b0-1883-aa67-ec86-0c780095e1a6,1899135738,18144627739660641805
+8841f2ec-6c21-7a44-25dd-16c0c9d35bd0,3180527990,4529783547656173828
+66b1ff08-0327-014d-362b-aa398a8f5a44,788560898,12019160572443267678
+a0fe5f61-a21f-7712-e9d5-8e9e14b2268a,1548332926,15068256754462022208
+dfd8742a-65b5-d475-888b-3699fd2bbefe,1069696971,1628900758180112873
+d1104958-307d-8cc6-dbd7-befef80c99c8,1238622092,3197943238893696369
+1f79763e-c776-5dc9-5cbc-b6d79fd707fd,2174938737,9002693328736783710
+64e9bd20-ba9a-5675-8611-f932f9c055d1,1853944966,5917881877596639842
+d8315d19-e25b-e9d6-0568-f1fff0d733cb,3356035972,10737306797528329299
+fc721f57-83e5-d76e-f6af-58ba11cda591,1921219999,4259401448607214266
+d09887e4-1c0b-abd2-ddee-457ed48c55c2,3949156843,7213304781132006442
+514bcfce-aa43-f0b8-eca4-474628a92a81,4206476591,3039758449677286354
+34e47842-be0c-f35e-ed99-a3c1abd975b8,1859082116,7781034086766967722
+eba705eb-90bf-e7ca-1b52-d7ada9ace863,3444378170,10625752299581530690
+12752355-b447-4300-4ca9-092f613a6bc3,3324064420,9328146702433098372
+225c670a-7fd6-9cd8-5cad-7d0731faac9a,3810921593,4336529352118178920
+2354d3a0-65bb-7c62-360f-93b1d143126f,2478041126,5562894913732563202
+af43779c-57c4-3323-f7b1-722e91eeeabb,2927721918,2605996110006486468
+cbb477ad-820f-92f2-9173-75803af2c113,1679105506,4489052987656850966
+34a72651-c90c-3ff1-4391-9fbd3e54ea9b,1860040897,12839456968211718813
+a3548fd8-5aeb-0b10-2a34-f9406eb5c9ea,625367214,4290009512511724553
+0e9a4da3-4870-db3e-0028-7c3a299a1eb8,937456371,17194541281862516144
+2efde1bc-7c19-c33c-ce89-e1f2235de58c,1813836313,7692873946372049147
+5609ba38-d7a5-c8f6-7393-526bd699c9f0,2384556980,8729965558644087189
+ca83bdf3-5793-99b8-d28c-2eb612fe5d68,3632669112,4196264890439619381
+3948cb65-4cc8-b298-1ab4-d77870b61565,1204010660,12916215644229592969
+3571ac77-173e-d225-3841-b8ff692024ee,4010356948,8243209419658379087
+433521c8-5952-1d1b-fc33-6b5be94e2ea4,4147256063,15224869763681878734
+eb5059a5-2e0c-bb8a-582b-bfed9875132b,1429425884,11075801733633582743
+dd3089a7-ea1b-2ccb-e960-c6bff941df4e,4181275581,13755987692900327065
+7802a39a-b195-1ab8-9986-72e665a23288,989482163,3145671608643841999
+8807e652-c76e-9539-ed4b-7317aaef77fa,1562946417,4810356680173306284
+7b93d7bd-8699-c662-6249-be02c3f53bfe,1089268657,2101757104499113309
+a4f42aac-f51c-29d7-635f-6e31af716a6d,572637454,14339463868827951112
+d81bfffc-7c26-18c6-0cfa-8da1d7420db5,4250228360,3027752645653270006
+25bbb8ae-983c-5ff1-afd5-ffac20c7f1fd,1520366146,14579022965310928732
+a3ad0655-8850-d6b6-aabf-dc2791867beb,2541284660,3802462386151540053
+48d75dc2-35f1-df05-56bc-40f4c74d8053,704731351,4961389085410831811
+307f97fd-60d0-4c9c-dcf3-6825e53c0519,304113694,13870862761510524585
+fffa1606-2595-ea98-5f95-d3441d465004,105909377,10595200814416807024
+ba447b98-dc07-9eb3-1802-3d8a491299db,1106646784,6115287552957005819
+9683a2b2-af24-e904-213a-e23abdec724f,2359141311,18224828063326144249
+5568da8e-dea5-aed8-8acf-99b12131f561,2369636217,10581828565187078128
+b537c873-92ef-d773-7a81-905a5de61a8d,2371614054,4703587051832074847
+426d6027-7aa8-63bc-bd28-9adf05dacede,2230822559,18162152584632055082
+f43f16dd-c815-9bf6-4da8-3e70b21ab934,2705661945,2548274938609080044
+a24e3713-00d2-6261-05f6-34bab1a75c82,364186326,3640126234020897122
+accd2400-72fe-57c2-fc08-8314a98d7d5f,3691485292,8177430722674174346
+dc39db03-c395-2125-8a34-74d9df856d1d,1911392883,9590274651914402501
+81d81cad-66d8-d947-4e34-8654ff4903a0,1134722760,16962061999841205342
+af8f6926-efdc-c1b6-1d90-c61500e637a0,1227591068,7788289773594164581
+a07a42c9-a4a8-e595-8b26-17a2741693bb,2910769003,8215566842032754041
+158cd053-45c5-f48e-929a-933f4653c552,2181902122,8188616201243124487
+f5a8ef2d-e24c-32cb-e9d3-b0a7b924df70,288272246,13427992910664538011
+1e02df91-7b98-588d-c7fb-321a77cb9c04,3917629547,2614374867128428402
+d7df6ccb-ddcb-cd85-caf3-223f43cd75ff,4220377043,14257269449684083040
+b3ecda45-f374-99f1-2338-5afafa35eaf8,1237689314,12223672201930623476
+7b9aaed8-6536-4c18-95e8-ed82505987bb,2436523694,15017791254086465292
+fe7b7896-27e0-0eeb-c157-e4d2a00f20fb,2082494222,14615724995528342236
+09ce40ed-e61b-3cd8-8031-4e66e1e8f0df,3233327401,1484037291486252802
+43e3907d-13c0-ae9d-1bc6-ce91b93f289e,4240745816,5185406802237923082
+fad67d75-b811-2f0c-5287-f366962ca784,1258019770,7590011886687328935
+d960f86b-b0ed-30fd-8054-eaa9f8283ab8,229274542,17407680706523226855
+ec14e245-f035-6fbc-35b9-d8de1fd1b432,326032723,5403256198289845872
+cf02941e-a70d-bcd2-aee6-9fdaa44eed78,2988725616,5170473822046225038
+8bac0ae8-e1f0-eba7-ca3a-50b42dfb0012,3159524567,2688957608923089212
+bcdb8196-7bfd-928c-261a-b58a9dc93b17,3851958689,16813105269337053179
+1dfa5eb3-23c3-06f9-947d-287a1b277da0,1161465286,12506348707733424942
+926bc298-135c-177b-41c8-ac459aca6197,2881352416,15124050408919493194
+936326eb-baeb-3240-b7a2-38f903955dd3,912862760,3016136696845570680
+abdd9d6a-9035-b43b-2bab-21b2136775e3,1568178469,6254687204066355039
+fa3c4488-d792-8226-cf0c-9a66a9d918de,3018985048,10414400173432112864
+e7052652-87d8-95d2-dc80-e7f67026100b,3906854989,6419936091603348957
+0e81bde8-93f6-4d46-801e-8c76c28e8eac,2849715296,6243107458666325833
+0a004ade-47f4-c671-431e-4ab1341be8dd,2996922703,9904165457461046430
+4e8c7068-c78f-4e22-8096-467d5ef7e10e,3257335460,11463308345134422119
+2f13b369-b96e-8357-d91f-281f00d5b9a5,1806762298,2538583099198157252
+326875dc-328e-c162-04c2-f4a851bcafe6,726631750,2608942815940464527
+9703252c-5488-451f-44bf-1c9d5bdb0194,2353767680,15353974341457503263
+828375bd-7fbb-0aec-4f9d-7747b536394c,2896101475,3183808566188046229
+d38bd4ff-ec9c-1a19-fb01-2ba243a31e6e,52567770,15430427431236596119
+e8183dcc-73ba-8ed9-5ca5-4ee47f78c684,4282528229,9770352870896253192
+0442093d-4550-0d65-9b3d-28a13ad41ce3,1538761572,8090204795891619972
+bdf50d4a-4cb7-168a-6373-a9a0fc023d7f,2021474816,5977753699706726645
+c3d73abc-8aa2-86a7-fce7-703273d2d970,3212758947,16988725253590307314
+945f41c0-2885-85bd-46ff-f36a0549a4b2,2510924913,2789610516688232019
+55919d8a-a78b-4b8b-2c48-78e1a80b4858,3231420118,1486490148737685704
+85455aee-4919-21ee-8f4d-212711a2060c,3324293874,181600031410660668
+51737e1d-d931-2e1c-4a13-2c1a2f65ce90,2894225881,7995084074575379038
+dd360bea-fbc4-431f-e32e-2baa10c1bd5a,2893110390,5623446771461541085
+22d4a5a1-0b2a-c580-ff58-842d72322cf4,156810262,13375617841330669179
+4372f852-9b99-62ff-de03-d03d0166ac08,986938706,11710614897735302379
+373d3560-2ee9-c452-3722-137f65010669,1770846658,13536837976636117125
+7963c799-b7b9-75ec-bf37-8181a873fef2,311617828,11008128818900013485
+c202897c-1533-9a53-d52f-a4025db5a003,2236922607,11290067685156579599
+db7d700a-8a89-b7a0-0186-cc57792b9c88,1300224840,4604472200289696564
+c730f517-5fe3-ae6c-07f1-7fb3bc804191,1678611519,9465084827754250876
+63dba19e-02c5-4827-dbae-f52e280a3f43,3170015151,15070864605686063024
+9953e2ab-3296-c776-b596-ba29946bdc92,2838618589,9195215867851219991
+2ad81629-7b84-336c-018d-2f6fd2a82215,3380415935,17964043281453651540
+10631b74-500a-c8eb-1f8c-3a3a9010d785,237532427,2640415485095941386
+2d10923a-ab38-4e5c-dcd2-094d856ad22b,1535179801,10107147439925059386
+942ace31-0c4c-3087-4a65-308868557945,115162668,13376272004722006312
+e8d97725-cf44-0971-3e12-710df5cff44f,489750215,1335879352781710743
+8dbde61d-a779-4ebc-e418-fac09cc6a9f2,2255882653,7313710015079820171
+fdf36289-848e-c3e3-c732-3677b4a537cf,3210240774,634063957780845028
+849caa7d-8a17-158f-a316-ade1f18f74f7,2926788052,6855818199816756300
+4172360f-30f4-2a7c-c8d7-3d4e720c4a25,3287421322,16366698104099476429
+db4d4787-8a81-c4b1-1ffc-4fd8b789af7d,3326194173,7614139682122576482
+c3726b21-7da0-6efd-451e-42fe869af5af,203996291,10892140473919860164
+d735284c-888f-934d-c9ce-e1856600420f,1981572921,4407867364953636560
+cd436a83-6e08-86e8-09ea-d5d83c708238,2325775492,4500678998229283940
+67a1e2d7-ddad-6737-3949-ef5d8fb5649d,3965822707,7297724367948832559
+fa9aaf04-9936-e906-a7dc-20c5ac3aa661,404175366,14479632166327095942
+57abe809-f852-3eda-7fac-ad1a3fcdb97c,752872636,4370828377071357378
+8ccef016-1e08-8ea2-f0af-ed22073b55fa,379526273,2760304581564859312
+df270ac1-379a-8322-456d-6d09a3c45b00,3702779113,15800740252393327757
+e0c2b3c6-4de3-1c39-8f9c-e7ede088ec74,2476641271,6192891301370778577
+ea81a5bc-bced-c20b-7d32-8e66971cb18b,2528723605,6340090309261311646
+562e93e7-8dd0-4eed-ed43-a1ee3a66afee,878600878,1225411651989710758
+458ca8b8-a08f-23a0-a784-bdb3568b3855,2098496312,7426468128348107771
+605669d5-c1ec-21d5-fcea-e4391c8f1c70,2955390514,16129535886456592163
+94f09173-d3b7-ed8a-da3f-a48389efa28b,582734769,835521818426248907
+62e8e140-a3aa-d575-cd04-3628109e5d0a,3679583549,15638096350602345855
+84718d7f-0689-989f-546e-51bffe2e11b7,2497376392,17071579793295015778
+86d1c363-a809-c18e-ddbf-ebe7f4461a2c,2298437717,14638761743195604017
+ba2e5fbb-be4c-d41d-515e-aabb1204601b,1355377120,16487393111793674534
+512cf636-a9e3-e2f1-e52b-6f7d8ebeaa55,1563685936,15614862827129929351
+0054ebe3-f3e4-7e3f-b8a5-08ee54c8f12f,3378544668,7149773634572496984
+8d65c8e3-7d8c-9094-b3c0-f824d81042d1,1587508411,13625018273535417821
+f85ce2b5-a8b2-fdae-0f1c-dc878e5d75d2,875323033,10669814214395612860
+a79aded2-cb01-d9d8-f366-72511d711223,4291844588,17255925563850167591
+efe41f01-0393-dfd5-0f7e-c016147a0af5,1025369788,14725063596295460040
+1a0aa8db-97b7-0ec0-825a-3396898d491c,2036167060,7365510163307653979
+deb73c54-1be1-6f28-0f34-70e4759bc852,2595341451,4357146775122593582
+83910a07-aafd-aebb-39b4-5adb13342efb,811593711,2390567556017980257
+682b1bd3-411c-6fc9-b2b8-dfa9c80b5313,1860345093,14777010081847530686
+2533f21a-c6c2-1143-0ea3-eebbb755cf84,246586025,1302541690290538046
+410de05f-6b84-6a57-388e-98390043422e,2982281250,15148313127938381591
+d3eddb89-361c-a59c-eaeb-1eb863cef3c2,2207109740,13032602871243394952
+31283a98-a99a-535a-d253-7a74ca5ae6c3,887843186,14635879388181923730
+15f8c225-eec5-02c0-aeda-a07c110dab7d,1091422164,6813264026979643839
+01122846-f05d-d5d5-951b-b001a7fa5d5b,3825990452,1513666375970615323
+45c43495-855a-824b-ae14-7e0fc2072420,1870361690,4744349946612417002
+3180bc06-9261-d5c2-53eb-b71c996dbd98,4115911501,4268058655512035914
+96811328-2eb3-c11f-620f-db1a76a97940,3155672548,13430845367577527152
+08d71c04-3141-6d43-0869-796f4fd9b064,1267422593,303920276566814234
+e9511cba-4f97-f8ad-f210-d35b8c15aca8,3721532895,8765306267216611931
+0109f2d1-93a6-7296-19ce-4c3fe714e876,2560269332,14813410667348266806
+d1e3b34d-9cc7-df34-b9bb-e149fbcbf47a,2430095324,9556820331821329899
+9d534da3-9c0c-9cb7-c176-3902c8be76e5,3025497213,15480097362420976368
+6ac22192-3c83-cdd7-0cc5-87323cf7a160,2243646506,7725174367286739289
+685c5eed-8e1c-2ac4-2a2c-035e61002a79,3580898563,16155976407222503896
+e02ccc70-e511-5084-25a3-047f3e54209d,1130834084,14292135050169252711
+a31b14da-bef7-0e22-3d38-5de2154d966f,3045487137,17720987699616625665
+bae62a40-5a69-fbdc-0cb2-f88f309c9315,2565226301,16734507025384721946
+e75d57a4-cdd5-aad0-043d-513d32a76247,476242073,1157920115597374819
+1e3ec008-50e6-e0f1-0702-14aef29bde2d,3576376830,3726505274989241077
+8c5f2e2f-ecf8-8022-1a83-180a14178710,4290575128,15267340337903144445
+d574fd46-6608-a97f-1f72-b10c252721a6,115422304,17172507289211806403
+ca77d816-e016-4692-e10b-ebb0fa6697d6,3049881955,10128566725853241796
+8eef2a64-19a0-b0c2-c3d4-895b5e226486,4075584423,500701570436627208
+d1464cac-acde-0436-1493-11b76f1a6aec,3749795415,4979177628178332552
+4b73579e-e077-3c2e-62d4-f5c3c4a4acdd,906379729,9561984076671383412
+fb2782fb-e9ce-c8c6-2020-c14a3d45eb28,3269381549,529423897260020228
+8c3856c4-bd4b-f774-4fab-98046e644606,790556188,13305745889708643870
+2c541162-9811-5ebb-cb48-c2b1be279a5d,73405391,13868563032092031460
+71eeadc3-554e-335d-561f-0f0495e4c0e7,2059450657,7132780309877857801
+90d272f0-0e58-fe8a-1d99-9a5a4779f0fe,4192010847,5022885506701514063
+8bc4ab8f-34cb-5683-39fc-0fa7bb283e1f,1447660883,8531751506818947439
+6b0d4feb-45e7-fab8-4490-5f63d7262300,1993357330,3188984519593720655
+72fa5444-2de2-b6e3-366f-1706d70b77db,1718412941,2050933643167715143
+c6395bd0-4d2c-1d89-b861-9566c88c5649,1131163938,9066523163510343724
+70f808f9-c5ae-7b7d-dda5-e009cc377755,46768278,11796688233215393201
+0aac140a-6f31-1559-0fa5-1c716f72d197,1578158133,17267326128205542586
+b25b0c95-a5e2-bee4-df19-ae88a4f8b6fc,3696091612,10227431519768162986
+30a37b5c-d0f7-bbca-9840-65d8fb831441,2860755783,7333645357734096810
+cb87d8ff-fccd-196a-d1cd-7613abfbbaba,1548065601,9118118390232697557
+de33f9d5-0633-6bb0-d0ef-68825e89235c,2015972654,2562025033545947054
+6a888666-1bdb-87a2-8dab-b7f90b6c0fc1,2850007895,10954802122666024285
+dccac953-4464-df76-1813-d949b37ac0be,52608400,16775348199394325586
+e5acdc37-4f20-ff92-6ea2-29aee7733405,3982538431,17310997365539924628
+a4f9273b-6715-d2c2-7c84-7f1d415ff500,2460108233,9785940725534034361
+1cbef1fd-43fb-7b96-b658-b73c4faecabd,2065383600,15169059400740751344
+1ff0e0ea-fae3-ef10-9039-03121ae6a35c,508197952,2640581215043455769
+a2aee327-21af-50a1-1456-e6832e2dccf3,1409190969,8753689648717826365
+260275a8-8e36-6156-746a-f5d86291af64,3826286365,15481766393075549435
+eba19856-8f5e-33ad-7e26-728bf8dbd7cb,3091949974,1219225855750844193
+a705a871-b364-ff9a-cb92-d31ca5ff47d9,2652356241,5182685716794634681
+4b4753b4-693d-f538-1245-787ebb44e9c4,3175650491,16895899392593901175
+236c70d8-cd5a-94b5-56ca-6ba16d45b74e,1133302162,7631605885090984921
+05f5f23f-1a4d-622f-2472-614e29764d46,2445348863,9205994246629467948
+a517115a-9361-c834-cea6-21370ea560b5,265419817,12605121331700321211
+151c0b07-ecee-7350-beb8-a2e0ff75e81d,550907195,4305386153692554989
+779e963e-a4ef-9f2c-7390-983a687b01ba,958112828,15670003190487759798
+c5b3da5e-55f8-6a39-cb6d-7492d96f2895,3879212192,10009769360347708189
+1f7da1ad-cfcf-3511-e577-3f42436901e1,1709143578,12585746925170291404
+716dff97-6f22-6eef-ae98-682436e9147c,1691524472,1427776566602036160
+0a2d6a4d-7207-a4ba-6a63-f2a2daf40851,880236489,17381233335618775707
+8fb6b303-e3b4-12fe-fb3e-e349ae016ead,193661410,14158226656227256895
+eaa1b8b7-bff8-17b9-cb17-1010d76461f9,2059942177,5867862404898702200
+bbc0bc56-201d-7d00-5592-c5521e4d6ca3,637215880,11248590786120828029
+9fff706f-9d21-8775-5ef3-2d3b2eb01139,1965209176,12057020020655122711
+ff418781-bc38-f14d-002d-76492e22d6cb,1430207751,17853471603325395203
+204fc245-12c7-8e91-005b-fd155710e968,3942871991,3058097230764375773
+9b793efc-4e73-d9bc-04aa-941f9733a810,3146117072,15200261274159666638
+a1549b0c-d320-3726-cdbb-6545a70b10eb,1806915770,8076294083257838778
+d8b64731-bd27-c1e4-988f-2c85c634ceb9,3687138568,11588038083119536184
+e4f9121d-7eb2-602a-ecd1-b05c61945d4f,2079600305,2774120958210522361
+08cc3dc0-4e7c-e52a-1e8b-af155654653c,2201117696,7648665717809723057
+caeaf730-c104-4d0f-22ba-7e64dc5d0011,900163647,2896342219210610889
+e40f65bc-ff3a-3df9-2be1-428c638344d7,1803559713,2531668769575938473
+2619be65-06e2-bed0-2ad4-890758653558,283284689,1053553898573693090
+4b570f2f-5a97-95c7-6863-068fb4d51931,381330514,3414432224089764714
+fdbb992b-b2f4-14be-66d4-c0b354be4652,753496738,1553531258283651979
+029fda34-f520-5ee6-33fc-100836d724f8,124187987,7871949645146541030
+812c5ddc-6d1d-05aa-93a9-27dbc6d6810d,847732171,1377483338365967765
+6890070c-c77f-8209-8b5d-06d9fbcac52e,2332435111,15639466135185314091
+162007cd-ab87-1a27-a5b5-3461a182e1ec,161735541,503654183069261063
+b4512943-1dbc-1473-af3c-82aef5c463ee,1398638595,9310779146338183815
+cbcf53a1-baaa-bab2-effc-8d80c7307e09,2682291429,2329186778750107663
+ebc7772d-9323-08bc-7ca9-98931573b046,1317288326,18388211141841505500
+ec4f58fc-5b83-6c3d-6093-7dcc01c6e2d9,1797526351,17326781688215764896
+fa52cc1e-8dd5-c94d-4786-844c5b251c7a,3295030234,13695270705965347673
+90260492-4731-e702-14d9-5e4d8f00a7f2,1420858674,8715705359479304438
+d3d45a17-072c-829b-faf8-2407e5bfd1f7,2527286125,6194891369414538127
+9adb1abc-858d-b0ed-ef76-6a13771248e4,548255287,6578511707839899503
+e78be238-7366-a872-ed5f-c092f67817bc,310943743,10513819948293005932
+da9767d0-637d-8849-e03f-125123a003c3,1948522118,17585986243473232347
+f0f86ffe-f466-c62e-fb10-56ea6a0c79f0,3087956794,2758242892758398290
+29476dac-8367-f224-6946-4800af4be460,835762004,12358014979838032688
+7f24a03e-6cd5-fc6e-0f71-b9b8c60968c0,743093372,10251625347555302401
+db2c8461-30f5-4c72-a89f-8ad51f6cdfb4,2867727275,2520285770591078260
+42e06a20-4277-485d-baa6-3a23c35b3146,950020020,8896102895906240354
+cb9637a8-801d-0a85-c9fa-2219d17a4586,2574651256,1887026987881528604
+9ab85dc0-846e-c6d3-83dd-dc5861625ed1,2392379719,16219906877891419213
+17a273e4-81b8-d2e0-ae00-31d7e3519d8b,1334157187,542098280511768618
+cd2002eb-2518-c516-0417-f8b93059bc7a,1270339870,7290497435197652539
+013d343d-741e-7377-48af-d315b0b246a2,3912525814,6600549134770294744
+a4bd59ff-d98a-84b6-e4fc-3cae85316fd3,2089662922,8587781562112347606
+6f7cdc42-b1b7-0af2-da24-cec97efb32eb,2480235508,2533108639643245025
+49e795fc-8efb-f1e3-4255-444252dc1a25,2560771796,15365864468545212965
+a1c1070e-0045-d60d-4795-1a6f49d2210b,2135548805,13737150395324180674
+0e39bec3-12f5-4f2e-6b41-571b1bc03808,429065670,10074097972534033073
+2cada4a8-8fbc-2158-8551-8c0d2505479c,981797920,4909856446746425446
+8f23485f-1f95-553b-8392-061fac14a007,1289535012,12890048446893501623
+9801702e-e47e-d1d0-5bc5-f42077f28cd4,1269260585,7200574563598911464
+63e5d0ef-5585-b80f-9344-cb4e3dd51cc5,3907692400,17355655802371446458
+770b3345-c9c7-e35d-fd1d-2d1c821762c9,3950808717,4836036426811402906
+31d44891-c049-a187-584a-244bfeed5150,2134100557,9639876638646450493
+d9e15eac-14a6-e1b1-a719-5ae6e34d0bfb,1237393481,1286261555919306400
+a693f992-9163-03a0-9517-405dbd64a183,1254845093,9816860909078925051
+615029a1-8c2e-2f78-31b3-49a768461172,2452536406,3773832951142750784
+830b67fd-6102-d834-dfe0-38e3b8def33d,810149634,6396262746754985119
+3d04ae30-47a4-2494-c4ff-35a1a46057a0,1202343951,15965269719286933352
+af77f130-ede2-5a9a-0454-6e18e28fa1a8,809031337,10432359261464722681
+bf3781ab-4869-cd17-ea90-2c65a520922d,507338443,4214990427663465009
+10e272ee-b3e7-8f66-608a-07d44b213d97,1882449129,17688294140328126336
+c4576f6e-6bf2-6851-f6e2-c9900f72292c,4240608385,11628858516307018286
+8e1506e2-835d-8b29-8bd6-a3e6a77fe793,1201196375,732738246604549783
+33abc8ea-7d43-bdab-fcdb-339b7905d8a2,4172188273,8200894248093267397
+1bf6d775-1a6f-bf6f-060f-f821284b8875,439788720,17109775169252897214
+aa1c073c-b799-2458-7fdd-929110738b68,3640115212,17504234201206300804
+28a666a3-55d2-1d22-b276-ae0a8bac3e19,349282022,15595095086436564601
+a3ceebe5-4367-f532-7b77-694cdbe78c48,2531209830,13521158888673228172
+8fccf75c-c787-146c-3f9a-92b3ec5f368e,3031462933,4881536201944136355
+2c1dda67-ab50-b87e-7a08-968581a65697,2288185593,14728565677851856308
+23a82a8b-b84c-0fa7-6bd1-e225a8200044,4178679747,3918324825647829526
+c007b299-fbb5-aa48-2345-06eb0ac2200d,8502074,10131152639835095178
+892037d8-edc0-23a4-8971-5f0af8d8ff86,410650498,861635981555943584
+d49b9ea0-7511-74a8-85d0-5455827c9ec9,2653568533,11052722291630822184
+9756a15d-16ed-c86b-abc8-db1dbacd2c93,3505275885,15472150732164994180
+88a79a6f-714b-fa6d-84a9-dcd05462946c,1901430820,13193400815036888982
+10283d4b-3258-87b7-6b8d-01ffc3fa2506,3021270289,7645569123062182958
+c47ea6fb-439a-35ea-4bca-142a54e6d9b3,1312789206,2411427480881595930
+1a73c9c9-9c38-29ff-b39e-643b145d548a,4278547669,18181851544213881534
+11a2a9b1-5751-09cf-faf1-4291ce03e732,3110020774,12043161185440750281
+5dd11aac-30ae-f1b5-5576-e67ba2b28d27,310248452,10994244504514455418
+0b50080c-90de-d8cf-0c40-3f80a89adb11,2741191771,2255251882086513833
+0fa771bc-0cf6-063d-52d9-4f2576867952,425497520,13144170402678322727
+3b5e8a0b-fa47-a3e5-5e4b-eb632937ad2e,982107412,5807494343244116809
+6606f176-a18d-fd9a-4c2d-2db34fed9a04,1254161799,16341040051356355864
+5833d2e6-0edd-85c9-38ab-ab342f59f286,4208763284,4446757588929026852
+e0878f9f-5c60-f9d2-a43c-7bc5e1b104c3,1808010616,3258214605576486307
+dea0c1be-fac6-d3b1-5555-bb264b78de56,241515327,8929659438397738201
+ca14024e-7b69-643c-695e-b17e858afed1,3520494772,16361116287171619587
+cd55b0e6-5579-85ab-4f10-3b856feff0c1,4206137418,8845895614578939523
+1b04779f-284a-cce3-d7b8-0f7f6b8ac2b4,2940826959,1523873443756290381
+8343db71-c507-5cb8-1a2b-401b0254b0c2,4090317565,9425608462813004769
+86a6b92f-8ddf-2277-6633-83d886d090e0,1815720691,10001685524204217395
+4736d888-a571-11f3-fe24-f0c78caf5c42,4018276805,3520029439826722950
+9c4736d6-50d5-7386-1e3c-bdb989bc052b,1840760672,6716762888334512128
+4178c9a7-038b-f7eb-4dcc-a18597961be3,981366091,2817572956394168121
+91f31537-fd3b-12a6-bced-ef112bfc21e9,386704608,13424974392878796419
+0a55cfaa-21ee-d2b6-3c5d-af875d3fe17a,2659571926,10826011336742180205
+cee09ee5-3156-9b05-6fb8-dedb0469515a,1725352789,2156301377413599955
+9be67ed5-94d0-7afd-8e43-1302ba6462c3,1598492143,16226877972964501093
+7f67cbca-b3bc-425a-70f5-e700570a4257,1255713563,8873902711452086477
+4d893b9d-3092-6a70-5581-d683e55360b1,143742248,9381201064135031802
+474858dc-7887-daa5-97b4-bfae4d3122f5,395612746,17731464841481319302
+9eff4850-c292-61df-5dbf-068bc11c4ca0,2977865744,2896906222014791645
+ab9f7f22-b3e5-6fad-d7af-d4d82d99cf9a,3608425902,864260100413864502
+cb1eaac4-669c-c9c2-5846-41e7e073dc07,2588733088,16671955640885127143
+d4c1d040-d5c6-e775-9bc7-ba86e1f9064d,1136519228,12270159933162966687
+076dd518-4059-cf65-34dd-df1aca21db6f,2529939167,16519795892891072585
+f8ecd391-fc64-a1be-4b85-7aab794935bb,73425938,15631520500628210893
+7097406c-961b-e965-1aad-e52255db07eb,3362258722,11898872388320619573
+fb70205e-54e1-deaf-9865-bdbd26786e20,2166633122,12117262050555253633
+03d7d937-eba6-9823-deb6-396a20d7ad72,1877788848,11834988773286489178
+14467929-f41a-ff9d-a39a-64ca339787cb,565392529,3367514907383065271
+ca88bd3f-5f83-4fa1-5751-5c28d2916341,1308902824,7845045936769608271
+331eeb90-5c15-ea43-7e0b-9aabdedddfa2,3218613223,14465810309966718046
+fbcc7283-31c5-6606-b5c2-491a06110dc4,2752465802,15364986320281919538
+7830b2ea-b037-f30f-c095-72b106920e5d,2833702145,6276879074721194725
+299fb822-65f6-1840-0162-eaf7b7df80e2,3653168807,3135288707611113984
+a3514938-f9f4-f9e6-4ae7-dcab6fbd6ad5,2871065724,7943640274647113016
+74cede2c-863c-9696-c920-9210697fec38,380238704,12813690072759015721
+ba68a2dd-b8e2-3bbe-9de5-f652e634ad2f,527239305,13921174304592627411
+55d3dd92-0450-45e5-0b45-d43ec27b22ec,2456539398,14331516248791634338
+351b9826-51b3-0159-0a6f-e70099ff0009,1909933572,639232133515282354
+a22c4e63-527f-53ef-5506-3f632fe6ca61,1705431119,4096706114717731136
+090ba559-dfb8-92df-4ec2-b6b0ec6c2748,3634181965,16793728526905958339
+1717d25c-b783-f130-4623-690cec86b488,3793305088,12565132404095416111
+ef157e4c-94e4-b2e7-f5b8-feb86327b24d,315495491,3478337773924127909
+8dc8695a-fad3-2af2-597e-fb2a2ddf8caf,3878128988,4118369208391514384
+0a7a751e-f725-5664-6481-39f4649829a3,1536400498,4754773706892066453
+d3fc0575-a279-f77f-e5e4-0dba375eff09,1459556614,7633276898361201294
+c410f55c-6240-3490-a39a-c12680d4d227,1997523114,2188149909369760386
+92dc7501-ff6c-1fee-11cf-ac5f8ab92a30,240349331,11781179069259266612
+b8a62062-96f7-d454-956b-00aff28e8744,2483710281,17269122614924685349
+2e27e59a-365a-5928-e2d0-8a31fa2a968e,2605070404,13034679758749746841
+5d1c2256-6e2b-f582-fe82-5a677f02504c,3288965635,10710008015259892584
+e7bc2c50-c1f6-1940-706d-076ecc2d3777,1878717980,10820437202491099971
+7eb51bda-4a30-7cc5-3ba2-fcf389c85504,839922524,16013857176547528344
+e330ce85-b843-f418-34eb-f47b1de59e28,4159038069,17986306594936004877
+a9fdb02f-1413-865e-4723-a3787529ae4c,2544297772,8438265154373328270
+9a5cc6af-7623-af07-c85c-06885245ee70,3538651523,12576006374482581218
+e34b998e-3708-0177-c9db-79d80f4e6e44,202724851,9182550878085957453
+9f1f5def-0aee-2356-bb71-f7fd7d24cb63,2607449364,16273404459762919910
+bf8f4235-7eea-5ec3-b1c8-cfb898569be5,4103039100,18381733784083103691
+0f8b6df3-4329-3300-066d-5014d876a4b4,2897553747,930663887522786789
+60175c87-2fe5-61f4-6268-c6b173307100,246128339,17025503277086878563
+c6fc0ea8-c29c-ef1c-e7c7-c340bacd0c90,2146749844,12316379248593813141
+b436847c-940a-9285-64d3-9ac6557ee551,47725423,11768882162500503974
+fd94f95b-4cf4-e997-bd20-acae343cf180,2046966717,1041161096321708718
+9ad6cf87-aff7-5487-f884-04ac33e72f5e,4074842286,15908202084007767307
+e601872f-b192-55b8-9057-b1d49ae6fabf,2336093777,6883005546412086196
+3f7f19f9-41ff-fc67-2733-9b74aa4680ae,856816144,14843172015839030524
+62ffdb86-0961-ae3a-4215-b974ed5155af,4077941798,2059782181940342511
+360a99f0-2da5-200a-fbca-e5a6992bf94a,379104661,362878544542684005
+7637c23e-7e69-3790-8794-da34fb9bccc3,844836708,7010384650540051881
+96b70a7f-b166-de7c-bd4f-702f832bd7a5,1590812479,8372135572226957075
+f474e514-9eac-6282-fd3d-f49c9951d7ea,282237429,10695093141883037886
+54d76c1c-0a40-622f-a449-7f0d46505c98,3291736380,17374275465847199425
+b716ac1c-d23d-3356-7531-751bf1df0f79,723593900,13030818954884824595
+9b762ea8-b051-141c-12a6-8b5a28964239,1865984628,5174715124000966962
+3cddda97-1f6c-b142-7aeb-28723e0dbb73,1915992425,15488630450996370015
+128a3c27-6743-4a43-b1c5-6122b77da452,3194034847,6417864690068761094
+17825978-0802-4765-01e9-8baf4f6ae19e,2035311798,11896418575151179859
+f2d16a40-572f-782b-b263-c95ee35bf065,3751454769,5388149427391166827
+727a2931-d53b-9d12-f9da-6c472bc38ee3,3008299707,10818341137581849566
+ae7b652d-5b5b-a8de-07e3-bc96b59dcda9,2085368299,17867562777305570554
+06854275-b962-0371-626d-a0b92f36ac3b,1813635571,10250289023460427488
+ad460f69-5b0e-c34c-e85e-121b7c71c5ce,2229438325,12071341905825071246
+517e63a6-7815-5498-3a31-5b4ba85651be,1467672197,18009286088695959512
+2bba4498-a381-7621-faa3-d88c976d1d78,2512299890,6224733682931337745
+520fe89a-ac26-6b50-3023-709debbe4d40,3182484510,17859902894757421562
+bea0b5d9-ccd0-f7fb-09c7-1d9c32f70d85,3251518880,14591774568334388995
+20e63218-9893-3095-d072-de4f595be4e7,119359688,8617837526946502647
+d45eb775-872c-2e1f-8137-460c56e0e5fd,1883846113,13339120322534683433
+858ee59e-6085-2ab2-ea2e-c4c62a5dc6f8,2527909966,14774911709795644816
+e8bbdafa-0e58-42ea-bc79-1ec74395f7ea,1330477050,10469650396004386078
+2cb44143-4d61-2671-82ec-a3812b06f419,3134630244,1049103933159965694
+e74a182e-b28b-698c-15a1-343c1dcbacce,257925568,4128249880562528068
+70a9dd9b-93f9-9244-9808-88f69f8f375b,1533607954,12963727115175221323
+f9b07a0e-e3a5-fca7-f93b-0b10551fc0f7,2816071234,8035141685691563047
+89e3d733-58cc-a4d8-4a25-ac2a88afa3f7,3947248684,13784040901453419072
+780ea451-f39c-966d-bcda-f741bbaf1dd3,1000738179,8351586842352760042
+04fc9ab8-eead-ce6a-bdf2-153f5a8ddb84,154724245,8051611124839860619
+5abea419-9d4c-e8ca-0257-6e277255b03c,4174886644,18324286244584637711
+0b2e8b35-2481-59f3-209d-09945df34650,885512134,5552614193184732230
+b189abb8-abe3-971f-2930-4d929dbd231e,3073256467,3711944067588468376
+038f668a-7d85-1eb1-4c15-bfa0f9ab4742,607129417,13883926029731438414
+d849fa6d-b39a-1ac3-ab5e-e4e4e4095c85,880020696,9318285593937546884
+79569c09-35c5-a098-ce5f-62235873bfb0,1132077088,4319837803131241530
+bca64cd8-9ecf-16c3-1ca4-cc3cc58d7812,3589720432,4794599217165940237
+3131bf10-8d34-36e5-70cc-ce94a704d336,437176940,1049169907953181388
+7ae94b04-6f19-eef6-cfcc-f57ab33e054b,4212833068,2475109471403774497
+b6cf6537-8863-7c00-b063-c3fb1560ad93,1157863985,695101743596057241
+2d681132-c07d-bb06-c95b-71430ee56ad7,571055167,9718352261152948606
+9a3fee13-50bb-df37-8622-151812d375bb,1408447875,18372630018543243716
+a76f99d8-4c4f-4332-8421-cd756c14d626,2103655511,13006618494842394504
+713682d5-3a6e-76bd-55ff-a1b8af28dbb8,265771655,458252309748592507
+d1e10fff-f7fb-616e-7908-635f4e0999a6,1064696917,13026535629931217763
+5a0db902-03bb-ab23-1fd8-142e928906c0,3992803209,17101009102933808528
+8c6bfc03-f92e-64f5-cc2d-f2898dd42502,3073666633,14002438343976319784
+75f460c2-947f-4817-3147-41e3f58aead6,2547024347,14345536339476596704
+80c2c632-884c-0b16-ab44-73c091adec43,2187249113,8371074318263193392
+378a4021-8eb9-1a5e-d556-de27a95cd30c,3411528494,14825983034229064202
+0a560673-5457-c179-5758-08271d5b3504,825142283,11987150184793890650
+f591eaa4-b4b0-48a2-f934-e114ff15da88,2552392826,13337533564243436542
+dfe651ac-1610-11e9-831b-a2bfd7bf743b,2956823574,11834772838194591510
+a18fb5fa-50a0-d887-8198-08e576e61b61,240957071,17133962671736033156
+0ccc8d23-76df-4b74-41be-3012d24a650d,3985010026,1284384928878237835
+dbb41fef-7592-9060-213f-49b818055c24,1585750133,13660959433135010929
+82dedb99-2461-4146-7fbb-f065d7802b91,3698096577,6711517440996535771
+0e416bec-36e7-1e31-2426-3bb4637077a9,2016799557,12855170554821493124
+c402b4a6-28d7-eacc-5ae6-488e4a9dfd6d,3416399853,763311819089973548
+3bc6674d-516b-6e33-079c-66bc5972877c,3933398368,17503498651444447514
+1aaae084-84d7-50d6-a456-32691a5a95bd,17452443,2086434782042691064
+32ac6bc2-55d0-6413-4224-0333ddf6594b,643255214,5749905686788460235
+4f94bd31-ba50-e2ae-a131-a945de8e30d0,3265646567,459446276607203714
+99bfc08d-8197-6347-d36a-b4fc8b679017,1923052596,4260102723707900121
+0612afdd-08e5-ce87-7254-8d1bc6a6455c,2610561645,16126163813821438032
+9016ae8f-7647-7ae5-cfd2-71c3a3e3d4f5,3482195667,198782912287683890
+638a4de5-0369-c821-b77c-d9acd6e1195b,3821638463,9538728177328337758
+042be97f-d61b-b291-c4dc-aec475f27844,3413618841,12224666910129154422
+5d7eebf5-2f4b-503a-57d3-c0995183c54b,2840047009,1732686745805322294
+e69e0f69-f211-1e86-2939-28efaa47a760,422365164,13756674558295313581
+25189eb5-0e3f-c55c-a6ce-61e856b926aa,2577688063,4364097073496146762
+fa175f2a-0ba4-827e-71dd-93dc41e17628,2572591086,8915858953528172037
+a25d4f06-b1fd-65d3-6171-361a913a33ee,3810874282,4628043479386346938
+6e8d5902-d8e1-ef30-ca6c-e478120a69ef,1064469828,7286615547337801400
+a8025011-9ad9-8618-4766-34cc7d08a9af,1484849797,2527626717909289298
+4df369ed-9987-f164-ec50-8a211e104520,4048365831,4686049310216143685
+bd1a9781-d7dd-f76d-5719-c934c9532439,3576928746,5714075808327452525
+e81d907e-8a49-18bd-cfc9-a782b061f103,3123332506,6137529982251594944
+15fee330-59e2-5b2c-c3ba-0fcbde333174,3160462849,12511859993249102581
+89243de7-1eea-5c28-1841-717811444917,2309653065,6913549980346885984
+ea51193a-8aa2-c56a-57fa-4a62a473018e,2080262525,15935924634826646756
+47bd9533-5f74-429c-8d3a-9a6853d5494e,737804310,9751942012953394729
+d6cdd60d-e6bd-4acd-8ae0-96b336b2cc14,877104204,12950930449417057987
+12b30616-9d0b-5157-0a5b-e73cfeed6492,3235019373,4127268093227547122
+e68ac901-950b-b17f-7a8b-8639fd080421,3329751754,5807054362567892549
+79689602-2361-69ea-6fbc-586a7501cca6,1754360111,13256000092152892052
+af2deadc-dd5e-7e3c-346c-4cb845581e8e,2231536960,17527938410726742143
+48011d8c-61a1-f7f0-23a4-1baf8f42adb7,3779985315,967444126723258223
+e4022c7d-1aa5-7efc-abf9-61bd57de69cb,2138881411,13597829338114175210
+dd13bc6d-8ce7-10c2-e70b-52d09b564056,1558982060,11027149280305595687
+d56278cf-34c6-bc51-4e93-84f55763990b,3524810048,5095138064920599597
+5fab9055-a58d-f467-b63f-64070fb6f3c3,341691941,11528255693641023741
+dc8e6e04-b8a3-7a09-1621-3b5458714199,3684384226,12481720641111951101
+d4fe0122-1cc8-efe7-c21e-c39443228fa6,1279259240,4003082846756769802
+3bc57244-0202-fb3d-afc5-801a53fcd116,1941266963,17565980564138675470
+0f218ecd-3367-184d-24ff-09e87f940a73,4054293214,3133153176831564538
+94ed82ac-52f9-d2cb-84df-6548e133894a,372803181,3969013233293245171
+da9a5e46-18d2-05c3-3d97-f61d60357bcb,3903862964,11197872168303543616
+44d8a78f-d200-00d6-97f2-23d0f8951702,3938249062,15655633107739015518
+a32cd7a6-c65f-e5e8-3aa4-e1e5c6d56f1a,1367080983,10876737656828030082
+51b43c7e-a744-4d10-422a-b65f8411397e,4271230321,18345841089586630952
+c8a3286c-c6f6-1889-67ec-bf322ca78eb1,4290005144,13527079534027679275
+e656d4e6-fe01-8903-09b8-3908da205b81,119445684,11809227473680565008
+c54172b5-a933-caaa-80f0-4888edd6dacb,3530929617,8472240368441459232
+bb762298-acdd-973a-163d-aac6a51ff0c0,1806396597,9739172940271799557
+577bbaa4-22f7-5957-48b8-24c19b102a19,29569760,8352964930581050805
+32c40e7c-2401-aa37-470a-8550e3807020,93301121,12889292237180766182
+7ab514a1-b5ce-5d62-5374-dca13e617c38,1277893923,15429437670528094523
+cf55449d-5f7e-c32c-0ea8-c131f0d87c0d,848454890,5519529245806469960
+d9a2326b-34b8-fef4-20a2-55a1b3c90d08,1337647737,6591222576567034604
+e943fe79-15cd-ce9f-1659-7a28a8a5e148,730414289,2337639939895018970
+1cbcde36-af98-653c-cb51-382c3ca1842d,420690466,7536720129504368288
+5306f0ed-ce9b-5487-5e07-8bb57e1d0191,597279989,4624696671855185386
+bd962c61-f3eb-3f5d-2f19-3e4265b21b8e,1854077917,4482008642415329298
+815207ed-8151-de8a-221d-9420537ef930,2884239239,4107320758390466604
+b10f7134-82ee-38e9-ec0d-3d8b8082ea7f,2002240203,12430464710463786829
+7daac782-89b9-e03c-0c9f-625cd8fb032c,2095070581,3036112330401943500
+b0b0367c-fde7-b86d-b728-9957cbf56020,1222561399,15110538976585135003
+1c3324c6-5ef8-1db0-284e-5241553d7817,723914491,9775865322242287762
+894f5985-3433-a96f-e6fe-422e239700d2,1789027570,7625992641314728120
+0dcff7b4-74ad-da70-1429-4677eef8e802,3863320121,13405344093590228947
+6efb22da-5f1c-da63-46e1-044260a52cc7,2730706030,3482996312300217459
+b1c19d3b-4df6-4f04-6668-45b6a3727a64,3766326187,4540116143047811472
+ab90e4ae-942f-7760-b5dc-f1660b1823b8,2285696880,3738534177075852262
+b7a021f9-eabf-da7f-885b-23811a1d881c,1080750485,6332927748212571087
+23ec32ca-cc33-8859-d247-df56f69dd858,4034103574,9611217574294338900
+e256193b-2388-a12d-81b9-5a7c4e327ed5,825808604,14484239244483361471
+7d602ab8-83b3-9225-64d6-8fa3cfab4294,2126830333,10611500894996822843
+0e90785d-0425-d05c-8964-e5df90ce78c7,3817937759,9959502523664597697
+81eeb5ff-d1d8-1407-739f-828dd59aaeca,2865885452,3987365362503659254
+1f31e5e9-ec0f-5ad0-7d14-2b2bdabfdb1d,3798501695,13382484625192440355
+f45ee78f-e213-d6ba-fa22-47192e7f4154,2669739201,13967130762838477714
+ff1eeb96-be19-89b8-949c-7bd20029d1f8,2187657911,7366331302266984399
+8089c6f9-0b08-f0a9-056e-35b576616b80,3724151719,3207913800788589375
+245412bf-4130-3fb3-b9d7-ba2e044376e6,1937232247,2159874284017147286
+7c0663bb-d78f-3db2-05d1-2bb884911064,3782791780,5396257222291745941
+553c17bb-f863-6b8d-e593-1eca040eb2f0,1707549518,12602945999426012543
+d017140c-d27b-9be2-8c87-6aa9859a3d20,266246434,9193969377608101808
+316c0b68-0013-1c04-f068-dacf77d63938,3787165653,825400878349349679
+6ae9728e-d17b-cfea-e966-6ce6abd23b28,3945624186,8259319700203862073
+393ecd96-5ded-f53d-203c-34beb44456b6,2936326725,10292304538482069587
+a1baf27e-2cba-5c87-254a-ca9a50d29099,2639142805,1325021429547452397
+0380b8d6-e28f-f65b-c5a9-d0bc4fc9b49b,4060237139,3993331038258774686
+d88ede73-a764-3952-0435-16cd9166e19b,3401964589,8781081211382655439
+0c54f2a2-da2b-cfc6-eaa7-c8d7f798f453,1368792367,9583232736863200600
+87997ed2-8f5c-d73a-464a-53d7c0d18422,749994295,7543279356969303372
+a7f87f3f-771e-d243-af1d-da5bd0f34f86,2471292283,9259675771608232679
+dfd57217-e014-9b56-4899-732f7c5634a9,2480266683,16669860151620244900
+966a1c2a-d65c-bc2b-522e-aa278d46e31f,481298712,11763219178858679617
+7335c428-1ad8-7cda-7a91-0846b68f0389,968717809,8139634489357609418
+d53ea818-ec66-b02b-e007-32e2a3ce78fc,2637155497,1204962829565598762
+cc93e538-0de6-efe0-9008-5b8c6bd881bf,3520964863,2928479634203208560
+5921fa1c-8932-0e8a-bb1f-c08a7491f2b2,3605749310,6952852018590260011
+0f8a3806-ff08-0bed-1917-498f7f4fc7ec,3644090653,13964148383658936408
+a4fe6af9-c1bc-8168-bc25-031c64b94273,3698245534,10300837190342053543
+98fd0dc6-0784-0498-d862-84eb85164a7b,1435105856,16175878327990131120
+b4c9f094-335a-87f9-a2a5-d1f5c3f01e30,2129028434,4880656262254441081
+07b4688b-c354-3721-03da-ae98c6332f0b,2233454855,2298416861449278225
+06cc4a16-8758-40f4-6062-cecf66f41b66,3987821772,3889435774679845656
+573141e9-149f-385c-72c5-ae2027f60059,4095183959,7334644290175472709
+be3bbfcb-433f-fcce-96ff-28e15d06541a,780120929,11009948203690056310
+a5899ea0-17e8-f19b-de26-89e2d520a2dd,312917096,18099875283349684454
+106a6bbc-d1b8-ae92-aeef-50f109679379,2823531330,4809020807804162631
+3048765a-04af-4b2f-5dea-0f55bc74b743,463845670,3388872799179131817
+549cdd8d-852d-6224-6b6b-83dcb4b814d3,1385333834,2959435564038867704
+0c9741dd-3e3c-88b1-48dd-b020aa1bf580,1004087667,1386389584195302375
+1a631f00-b541-f8e3-afe2-ca95ef614e2c,561931384,12475575562776508482
+47d83958-be31-944b-47eb-90d890210db8,3651827724,13046791434637419449
+301c23fe-bef2-9daa-94eb-cbfb2cdb9195,1838751202,17383047008305464301
+a0882eda-2631-3ce5-54ca-e117b9fb68a3,1938654645,5725320848945380482
+db9224b2-4175-dca8-f1e9-47d245d83131,1084573970,17281027691741457983
+fbd135de-99c3-1577-437a-8c23bc8d124d,1713306974,2571633548895818619
+90de2632-e20d-65f8-f56b-ea6eaf824926,4042897683,11807085553246250115
+837f01f2-2705-1ec3-7cfc-4736d6345ad9,2175785618,13669625561501180817
+b54e046e-75e1-5e65-831d-2ec58f08ceb5,3970487362,4831395636266144115
+e2bd421e-1304-62b1-46f6-bead64817d72,786936860,10114942685564249511
+50361e52-7698-e5bf-8b60-d82aebc48c93,286817048,15898508936224813578
+0fcaead0-cadf-0bc1-023a-1091aba7cb50,1362986099,8567527636839652739
+59a1d7a3-ba1e-02a3-cd3a-6eb09cc8ce8b,1232534827,3061439962278063171
+287f0e0a-b6f4-05d1-1374-610e126aabed,1757060755,13513147686846981886
+2f13e142-059d-d7f6-0383-2c5ae6aaacee,2491220291,6065668619693425520
+e61df8db-433e-197c-df0d-95f969aa64a6,1391786264,221978629178194839
+8755c4a4-e1cd-053c-aa76-4537c2ba1e6a,3014784491,1147951557933837523
+19902a56-0564-e4de-8a5f-b81ead69743c,3885480527,12708159193459238149
+5011a6ed-7540-ce47-0609-2fea2f2fc14c,385171941,10217164219820108289
+f843f35d-3a75-5d27-8459-85531e769323,3770458701,12402737658989351816
+13bcbf7d-652a-0216-9010-2d844b74f03f,489302307,12474619634312357873
+378e1398-b76b-d5d2-f790-bfcc882323ea,3219103790,9411685306758582901
+1f60638b-2e1b-3dba-5e3f-3a183db55b81,3879629076,14151329603905361727
+67014058-f848-6e56-531a-085acbf71aa5,3885500591,12719057545448572747
+cfb602b0-1b4a-8986-90a3-eeff1aaf7b96,3286583469,12333043646476660797
+62559076-7caf-b203-bb47-11a8c0200c2e,440628105,6153089963055461966
+915bb4b9-6e0a-3422-916a-a30e9523d77a,3296014075,18308369509140378015
+094f9067-c3ad-f6b7-a710-b9c90e98054a,4127137478,3140967577104416776
+a2aa6723-a793-e4e4-23d0-2b4527872ca3,1344197816,354997340708704033
+13b24058-992b-efdd-c79b-3cd1e92d3fa3,2292341907,2830674467877086436
+99c2740f-0702-70bc-407d-532d1559feb9,3329527802,6577462232853238159
+bbe083a4-947f-857d-670b-7f0746b87826,4163498007,5426495876019971838
+ca02275d-afc8-d444-7fcc-90d5c73a32bd,3656588634,3259867448031567179
+04bea949-e7ab-8c7b-cf2d-5cc01bf17f92,1695804257,1700934451253567009
+55a1d4da-dcc8-b95d-8e9b-7b84dce4cb20,898254385,4238442437402632120
+570f2d16-defd-214f-2cb1-571c272956fe,2591634242,2566529571805422875
+4f4d7478-8b53-db97-3c54-45f02df5ca89,801630900,14469673786266165506
+0115588e-3f7e-2e56-d608-b8886aeb1de5,1541444983,14783438986928685581
+2c35f6dd-2fdf-5596-b5e6-ecbe3c0b7f61,120229136,9148229204799317048
+c5564462-2b22-9ac4-7c65-82c1632bf383,4071591257,5573612513723460311
+389f5c8a-018c-9196-c214-e1e2154e7571,365534166,15998761500817968041
+a433c434-ed9a-bfe7-2b0c-5b48a7e485aa,4254854283,3135666451497670645
+2f0bd524-7967-21ca-aaf4-a9772793d893,686567576,3042049196334346752
+f45a4d44-4cb5-119c-495d-7b2b3ff57ed4,1183387617,5853904088311536687
+3434f3bc-f8b0-086f-15a9-e0591d3700fc,2057356247,6096256732537832079
+ab623dee-f182-4711-d93c-44c5045dd2ef,690095762,6967042235530219603
+a6e672f5-3935-075e-62f5-145dccdff19e,3728296807,7528774325019518432
+2571f601-ff9f-f584-ca76-0f452423d011,2882216328,10596758303026749973
+8aa2e9e3-ec01-f56b-12fd-cd292f9d14aa,4126206869,3100689478141621373
+8f26f06f-6491-5a81-7b8f-625a780d5fb0,1339232279,5135234846235046946
+e53f8211-c079-45e1-6332-2fc6a4fa1983,3684913127,9160539701703515709
+875988a8-d6a2-0bfe-8719-127c5bd5aa12,2251756805,13658019125093064707
+23cf7e8b-fe14-1db1-2c55-bc4ea8194f66,2786593339,389651968801119158
+8bac49a3-a221-9fdd-0192-f5c5f4c3c719,1544337408,2995551167602220738
+5fc21d9d-9981-0044-f52c-59f5eff46bb1,368462645,2046844210432601028
+44c0f808-8d43-2aef-6846-b59ff41573f4,3593092680,10607039557923032296
+adf9240f-b349-aa3b-6bef-06505bd30593,3453235390,7656460345421419099
+45617b32-fa4b-b6a0-84b0-c0280d35a67f,3947381686,4716812194136332641
+2d3b9fd2-7215-3a86-74b6-085f26d5278b,3234229435,18030236741764553494
+7f068a16-547d-33e1-df8b-45c8fe35aa4c,457866477,1782778028325522641
+fd8537f2-7b2a-317b-4ad2-04e6b9323cf3,1042202478,1084311232148548247
+71f16c4b-5c6e-bced-1c2d-28f471511803,2929704782,1756119175375542348
+3700f581-21c3-2b1e-2883-c0c564d0c94d,2985347508,11398419258360032842
+10fd12d7-49bb-0882-d838-d5864c66eb18,1395361288,8076487010868663224
+279c3343-824a-6209-66f5-e2c9cf8627e8,496992966,5371353429571160621
+7bc82fd4-895e-7e3c-6702-fbb2fec8aa1e,889266533,6773066327838496663
+47f24092-0f2d-f0f1-a830-a4ba391084d2,1933043281,14777706444466611807
+97137826-9848-27b3-de1e-47fb2589eafd,3995395220,8810367341447067042
+b911f70f-97d7-ee90-56a0-b76f693414eb,1819531841,11918029830379296823
+9d5ab7ab-bd06-a615-440e-c7b861a97fa7,670678706,8768959591409896989
+23431221-9918-182c-ff25-e9f1b8f8a005,2735209045,16796731009339705865
+a1b21fd7-70e8-a367-509f-354e65472f49,3964068716,6681840702364136584
+bd46bc91-a223-02b4-30f1-398f0a56bbf8,2796632279,12771701252953441286
+aaecae89-2eed-be86-5899-6b688ee0dd6a,4003430949,6344146493072253388
+5d584323-f110-3e6e-5ae5-f7803a8fed2e,1557564674,2227895050917556811
+959ed005-349f-ab7e-f710-914719e7a06b,1494054602,16714181035204565581
+8898f9b8-e791-4827-d483-9c16ae8af78f,3860428734,7711687606986912798
+e44d9cc4-1cae-0a0a-5523-603f44fdc5d7,1298079042,8410894467367289275
+363c17ea-b5cc-716c-6e1a-791536a27f46,3546530782,11249271781166650927
+64fcc444-79e9-f987-63ec-4a393d052c72,1838546086,1049208500433184174
+b92b1483-2705-d897-1605-9a900bb70933,1636668839,15683026063688711956
+b194851e-5e4c-ccde-057b-5d12862caa86,2141512662,8115668707585515194
+b6ad43df-ee16-bbd9-2b9f-9e860af24f6f,4052883119,3482307521235999933
+30cedab2-47a4-8030-626d-315cedb7f3a7,269981598,7058503544208555877
+20df6f75-b78e-538b-f443-77152d0565d3,686508374,16144560504707398047
+f136d332-e3b4-ade3-190e-f954d4977249,3589695030,12753578794043680401
+9a1f9596-eb6f-e48e-843f-ccd3aa6c7351,2225688213,2912254507473739759
+b5997903-d228-31a6-0376-cafe5d53ebb4,357228939,6221781609357059063
+e3e7644f-6e01-019e-61ad-7364be3e9990,2308456492,16931236533211588293
+58b2eb09-13e8-8e83-c72c-d3f09e33a7f2,3242427603,2031968879670260556
+81c2991f-3706-086f-c686-3265f9fedc52,4156960800,11793975428930052661
+8b6c82f9-0182-db10-7a6c-d8999ad04fd0,3578222735,4384023264738426017
+c96b5258-391d-f7f1-1df8-b067e302036e,1551182742,10170993674971209980
+899883bd-62ed-2766-ef05-270d9c305a4d,1246546353,4937816211107109290
+6bc03021-0dd7-726f-3200-72fda86700dd,2388122385,16552127984356771220
+cd9496dc-eb17-6e47-6fe6-39cfffcd849c,3318262058,5285231952457838590
+57f05533-9291-772e-84c5-c46299b1ba8c,1552888503,5264170434047919423
+fdead6cb-4eaf-40c7-4110-85bd825fdc5a,2987973864,8610792129010203255
+3be61ff6-9869-940f-aaa0-d36092898751,279524731,17358862635818203841
+a543e038-16b9-259c-cbc6-d8c354353554,64840005,43616868105196296
+ffdfef29-d300-a1d8-a889-3ac852951b24,183985753,17267676567405508125
+190c3efb-92e0-82ad-f9ce-ed0a404b25c4,2047498306,7903982840287549894
+08985f04-8051-4443-7bdf-1a85512f6a00,3149678103,3242534678833288125
+e662298b-a348-1dc8-54be-8993c8884962,1172271847,16008010756216996575
+6af69e71-a641-bc82-e8c4-8b1666bf14f6,1062326787,7207839318215907247
+19db843c-d07c-23a7-586d-4195124a235d,1051198853,5589723132264532337
+1433dede-92b4-f30c-8385-65c5aeadbd49,3623123889,15456625382136274543
+02f1d137-37a8-b12c-72d7-34850c8c9196,2775871815,5045867617849529692
+169f62aa-0930-90d1-ec01-82dd5dde5336,1684689860,9433062639832772205
+b9af69dd-f21d-9e31-e21c-9a9f211be2e1,1064042789,11362008980091384713
+53a719b9-fe99-0fb1-94b0-9060f62d74dd,3319225388,12317512974611430809
+6ab0e372-a6bf-55d2-ff72-840553a12386,3038642486,12182358389263271281
+5d26a003-02f6-b529-3fa2-2875a3871421,4057275355,11818251165223207149
+c094271f-78e3-93d1-40cc-0939acfd5ae8,881140670,1252961798835419589
+c19544fb-3e10-52fb-c68a-1eaa2cc8b861,174341107,2575857859485404899
+01362623-49dd-63a9-697e-b79aaf7fec15,992970275,11330360419082315424
+80ea81a0-5c94-1a34-5a6e-f6eeddadf32a,1756781410,8930696994532501903
+1f59b15c-6b03-a5c5-f4dc-044e4d4fa692,2374075137,15442919720799655713
+2d821b05-4f1c-2c0e-5961-892efb22f4ca,1086106173,14047575225853290216
+14a9d9d6-38cf-159f-525d-2ee20a00fcf5,2714830928,10676218472869608554
+36ec939b-e172-edcd-5781-482ce39997dd,1580347607,14313986606564332660
+51de4034-128f-11ef-c3e0-c94995a83f32,1451490898,16441552779866136362
+cc30bf58-ded4-c875-46e8-0b00e6d6ba77,2162584359,4318715925022645502
+d80d10de-3396-7d31-3c67-768636ee671e,3862557743,13025390711045994545
+ad682fa3-cd29-e1ce-bc4a-5992d3ac5913,3595556327,6745469746551038635
+b44e39fc-b07c-0a71-ff79-daee18ca1209,4064197792,13890914079770627078
+97a4eb85-c3d0-ce4d-d058-5357150f640f,3963685452,14461683418858041603
+b15ed0d0-0829-16a9-cc95-0ce6718102c4,3097517343,9036793599697119704
+4eeee6ff-3891-20ee-9da8-0c6f76ad30b2,1552883303,17769959655970982465
+1cfb8781-21ee-eff9-5616-d1607c56cef4,1967607879,2940261875588933520
+a2004384-34cc-ee73-cf00-9642a23e1bf3,2856448545,6966141821565819812
+22bf0f00-9b0a-d963-a225-59b8635166f3,365638185,9582511589576153302
+77006ae2-90b1-54e5-d62a-3e37b87f8608,4267859109,17701337287071003163
+3a9c4cc8-26cb-d405-7f4f-0c3f8bb25613,4284685,11406969126448598139
+b17549fd-61d6-4481-96a2-89b4c1d485be,1424616670,14075165412988925954
+79251c87-5dbc-8930-1ba5-60796095aa07,629330497,11856125371442237910
+7d0b9c1f-b83a-9592-c51d-9ae865cf78f0,4188293348,6067203830509847607
+b522ee68-0d61-d928-fb13-3e14a5ba83a3,100395283,16728028578067543058
+45a25b6f-82bb-8e00-70f0-aae0c320f2f5,2727435054,9883932749925309531
+83af7525-af47-562d-69e2-f7957ff55d7d,3135380235,3195622605055995169
+c29b7a1d-fc41-a46a-0e7d-18f2f4cb57ec,664993762,9460485803524260909
+190f403b-6be7-5b23-1b68-92261404a3b6,3390039210,5349511289516381908
+b067b172-3c9d-e00c-f048-30e8f403e7e5,4274635974,7550828914088440061
+3082f2db-504f-99df-cd62-5eafa7a541ec,3544972991,18430142612299625863
+c41f325b-2dad-5ecb-e00f-c76332911260,1392543236,10353720641077700379
+559db664-92c5-5b43-056b-fb75aaf87caa,3701155288,7912172838840119176
+50c07ea1-7531-0396-e4a5-fe23ef499f76,1558619531,13776613930927396476
+4c9dcbb5-3ab1-1457-8036-575a206bfd2a,1380160279,16356023346811949148
+65d07120-44a0-eb3d-11d9-93427c93c4b8,1706253249,10342073041414095339
+3dba211e-8ad1-df48-7822-e6ee1f2d3b2e,2516434185,92150039702099919
+34a25a10-a63f-3fb4-6a3e-f4977c85e5ea,3381106499,18347381603168628661
+235e40a0-49f8-7e40-a257-fde43ce77fe8,1652560009,4218429454304961981
+b2b87a81-091d-14b3-6d9f-5c1abdbbd368,1239425242,15489729614481435705
+ca05445d-8a26-d931-2918-b6db33928f77,870829695,13830470257587575142
+cb9d0691-e1b7-a08f-791e-926be395fff8,271510463,11134963055553465363
+6d344255-8f58-6fb8-c3f9-25bb3df2d26a,1961944938,342668653938388191
+45ac6d3e-423d-6eb3-0df4-0ed64c244313,16844596,15749117609188883164
+0fd93f34-f190-904e-884c-fad33b6205f9,2156410140,16179519569464353958
+f1457037-d0c8-c95b-e25a-7b8782e2bf73,3973683583,14247904119727841769
+daa4391b-36a1-0715-0061-27219f185a20,1037445686,17644443129989293435
+2cbba7b7-dca4-6704-9bc0-016856a3cac6,1649324355,10937728115780664827
+7bac3fe1-ff7d-74c4-ad04-8401bfb0333e,797607386,9966233050167202120
+aa2bb2d0-2b76-fe0d-96dc-3a8dc2133ce8,1095406866,17576804017200484055
+71c62dca-f0e6-16e6-a3fc-ff643f02c816,1781527202,5167925452257387755
+cf6fe29e-f112-e5bb-bf44-52531a7d150d,550547200,5804150987935588845
+25578fe9-e06a-df3f-641d-f17594d1fa78,3887036989,4826619716648585063
+4506d3f5-5209-6809-bd12-4cc607c41427,329769838,4924815912536570665
+1d6b304a-a2d9-8701-062a-db52ead1dd26,3173822310,18423037014975782757
+26241bea-d57f-514a-0a6f-80efa6057ff0,3647390445,9402847579255673235
+9ba9a531-2c2e-9e3c-4d0d-b4bf009897c5,1636475834,995948184613488994
+2e014429-1c82-9e98-c300-4378419e2283,3445581876,9521586616573580072
+5a27bfae-4bb3-2c2f-3c40-77e82c251a00,1910396946,10818027642057157818
+43565b94-4ed6-313b-e16b-cb08d7440c7e,3700337294,4766706163591439156
+c6151b37-999a-95cb-373b-cb29f73d2f99,716608560,3664783558867656304
+0f5f3220-0a9d-12af-dfa4-8b1af9adcb97,2074713934,8162432966951299288
+6445d75b-6959-5225-5164-d64c70586440,67281508,10748762140706828697
+91f4989c-a269-7c3c-443b-52d3f2ae7042,51227931,14941188865238859821
+4e298ec3-ef0b-c6a9-6232-349b091a55bb,3702458687,15353352109761305371
+7e1ae3a6-d60f-6b4d-899b-4c585eccd92d,2687061877,4854427254030405388
+301750e4-b6e5-770a-efa5-43e1f9486813,2289134900,17157099581697166975
+9dc94d69-0927-47bf-dc95-c32ef431a342,2359419552,14248105996618843306
+90df287f-7433-c00f-5e25-8548d3b43399,169504526,316643729406474214
+3fa2aab4-4424-4594-28d1-53647b10fe13,262980217,10632254846903344848
+680ae724-30c1-1ae1-7d9a-0945102be9cc,2641712437,1869757849780680895
+87e3ceb3-2c40-9d2e-6d67-8ef7104a4319,3816183339,17229771172300292878
+6f3977f3-3da8-e936-c8fb-6b0133f0480e,4031452197,5456763741678568203
+70832235-00f3-e0ff-214c-ca2824977dc3,1835368461,4925543834320373809
+74b49091-d6a9-df4a-40d1-550b94065309,2789036804,7702227325800694238
+129f1fb4-be6b-8ec9-b12a-d90ac3ea4654,2531834395,9778834051737294867
+2c8dfe23-792e-c0ba-884e-80b457cbd47c,1683834661,6567616294410320599
+e9562413-9203-8923-4c6f-7cc8a77ccd23,1164741840,14497858125214327311
+f2d8db0d-037a-287a-6cf9-607ad5970e5a,2541768308,9579932647338014322
+c87303a7-b334-35e1-7350-4ce64fb30f39,3418234628,12365426295461584199
+83983a77-bc1d-51e3-b57f-248f3c680325,1796707542,16051464795866264054
+81d3c0f3-d632-782c-c94c-a5c6e5f8cbe3,1870784348,14840082955550240843
+03e240ff-5a51-fcf8-5b08-d150f02c19d9,665127786,6212021690228691343
+7eca8bc4-459d-e4a1-83e1-f1b81d5a7ded,1213130036,15374418018155062439
+0dc9ba43-e046-4fde-8af9-99bce1c87e5a,321673104,3052994172401042462
+1fa9e324-bb96-ef97-c682-d7e2b1958dfa,1920433063,9061522356766767201
+fa6ee79d-b483-783f-5b15-00791e6f8a7b,3545639223,8990693359810160612
+afca04c2-faae-2a1d-da0f-6635d5dbb1a4,4209694447,9250760692862470365
+2a588f0e-42fb-312b-ddaa-7846aa48d31c,730236123,17661810845829599284
+c7be880b-39fd-91b7-97ac-30ddecd582e6,937127938,3826501437657617860
+7bb39c2a-3811-57a4-898a-3b55050a4816,3760291009,17796352235181800064
+6d7702fc-f61c-f408-d8cd-f3f92390bc09,6447025,10147558434004521649
+72ebe78f-9468-ec19-2f01-c73c034ba4c8,1438592474,6164202145542666780
+2730ecea-4a46-0d6b-46e8-bad892a35661,948503683,13337854674124193302
+42949264-a68d-620f-2912-38c7913b0d18,2531286430,4791876647255809502
+400130eb-135d-edf6-db13-27cc1ac4c576,2894770109,6622996676369960708
+f7f0d05d-c16d-832b-0fb2-8da5daee87db,2945233272,14353019877437692982
+9b2bad96-1a98-8ae9-8335-b91085b20b93,1239403501,4878372367439070689
+7fb3895c-e706-16cd-2e8a-109ea670593c,18912513,14074898431780083433
+a5940ddb-f018-ac66-9795-a665c809c1cf,491246980,1263454995284127678
+d2bd0532-84e3-192c-33c7-d2414032e1ea,3711927328,16399699652405849461
+2311eee5-fc34-e6b2-1690-0baa062d1aae,2389643367,2905970042398354322
+d38062a6-8e38-b4ac-73ab-7726cfb8f6e3,1647736901,8773992333513885752
+a8eb7fab-ad20-adbd-26ee-3eb62d50d4b8,1968060330,16076184643987706522
+621981bc-4960-c5d4-2c36-3499cd5d5f2f,1923467562,15278635133885956698
+7c50ea4a-0fe4-f042-4fa6-b493d6ab8ca6,874177518,11819145395512982713
+2ee34020-7fac-0752-54fc-23f58e294102,3175861523,9186411248831137319
+778db318-a1f7-ee61-2e03-127aff178a93,4142606749,10481442570195589228
+0d8d798c-93b2-613e-50cb-53f2a5301805,1378702434,8933526459744246539
+87df62fa-e788-d328-2a3e-8f8b0459ba25,4133600834,931481183782430777
+51d8f877-c2f8-8d27-fa0b-b1fba75fc5c7,3418153633,9701484625599430505
+54042982-2c8d-3c8c-c011-90cbfbdc0ef7,264341552,16472065140128990003
+44c115fc-34a3-3132-5b4a-bb74e831960d,2810338630,1135886021945416613
+f2003276-90d4-9e69-a4d7-6eb7e538a546,1234969932,478971265737130301
+98e38994-55eb-7269-81c4-3848c1dc2e91,3054657298,15815529144956956801
+2fd7a709-6168-de9b-ac0c-56d622b23c94,841367308,9576400596183237304
+1195f347-47b0-8ea2-c69e-e9767915bc2c,2908512017,12189518984900139160
+2e462b04-96d3-bc12-bfe8-4f64735a3f53,320739104,6050335666689202449
+789991a3-22d2-3885-4cfa-0f6bb47eb3e0,3351857708,17019350012032777213
+8c357a5e-d37c-1329-7529-b571b21249d7,3516817807,10595947404778754190
+1b176135-fa64-2bf5-896c-adeb439d0bd2,4085207311,17020937608418364810
+832a122f-0603-d003-7c72-3ed198884b78,1215759464,2626266221374739374
+cd8054fe-e229-2a46-7e6b-37280a7f26dc,4222323902,1429348878337104355
+7e7ccd63-799e-c96f-a5b8-f9b37838012f,429065036,859796126376416322
+c9677cc9-8914-2a0f-2591-5eda294752d0,902825466,14261658380664146594
+aa80191f-2af2-ad22-bdca-6dbd6ab8d4f8,3886310458,11658983266500358976
+474fb8d7-523b-1e04-b79e-eec5f7e753e4,1142975728,8689441660376504804
+5eae4835-af39-d7ea-60fe-a3588bb70a2a,3941666277,18211933960166979025
+38934ab7-69ad-d555-7515-f6dafb67e0cc,3045587038,2309046600527176884
+3a8bb2af-3423-f98d-413f-038b0cf522f7,1685072172,11540492308808053251
+17526a4d-b929-4540-9426-0a055982ca2a,601644204,8299902440412455756
+2fe2ee2b-dfea-d897-8a8a-de27c574f19f,3578372893,2903514637872571311
+cd381dbe-492a-8b26-7af9-cfcf90f24af5,710073806,14679007526715313903
+bbe4bd3c-ebdd-96f1-473d-d4116ea9ed34,1703574285,2881368114357635468
+32b7f49b-e3f9-461a-4d94-6bd8b06196f3,349418954,16246032593876028586
+e983048b-0fe9-4b5a-cfa9-682f4e75c199,1554789766,9228631705092357231
+089f744a-45ad-b013-2c45-13fc574c6485,4237211285,16158360577996975976
+077fe7ee-5f75-a214-5ced-a46add1bfb9e,547464179,9138330872048924444
+974e34ba-53a4-27b9-1441-1b1825e6c0eb,3595534422,17650989750371103446
+23500f82-0f6f-0e00-5a5f-fa2e964de5f0,1212595070,3914373906070385097
+476eee1b-1e9b-2094-6865-ab72789ce187,1271729713,3242498595737227228
+700948fd-0be0-7d0e-799f-c12c7fb9eb6c,2230509126,3303824927159208533
+bfd064ff-54e6-2bd0-1ace-283523d626f7,3642407398,2267654489123013463
+c2adbda4-20bd-46c2-019c-f5a9d1ab89e7,3247671120,10077966494550876181
+84209302-9cb2-3344-7f0b-55760ac2daa8,3863592423,6293241898233951633
+c8d159ba-06fd-b568-7978-f00f3cd974c3,951076308,18144291440712517363
+c4f8849e-5dae-dc62-8ff5-a79e4dfcb27d,3109819356,10683977912711589857
+d53fe74c-e84d-d1de-1a46-00c9825c9524,1920946514,990059837349491252
+e58c6266-4cc9-cbac-1e40-19b8ef69f990,2676646398,17629202840467492605
+53fe0c15-db55-cd56-bb90-2380ceac11b4,803513251,6169731466529831254
+2176103d-7ee6-9f6e-57c3-5f0d21db0d33,1104919841,11447668717675285077
+5260555c-2511-edbc-0d0d-feb0783f122b,1881607437,8524773873809790419
+eabcd873-90ff-6ee9-2ba7-ab367046cf2e,570170494,3357737200644606085
+24a6f132-8061-87f9-9638-66cf0da2e24f,1952788289,12404197271287068688
+d57c6d8b-f3b9-0adf-2eac-5568405fbd55,1592773827,7767390029285472476
+ec52b987-8c03-4a12-791e-438203ed1e8c,2364548264,49585849147396067
+23704dfc-4dd0-cb8c-8666-b01d9970789e,1632750098,18415591053274799802
+287e90c4-829c-271c-d242-07fff75445bf,1585125719,8811989502392564819
+38e4ecd5-a724-4af5-3e9d-5c88f10a22e1,440295729,15226504679728319262
+42eec67e-4bf2-b084-d0b5-aa9143c2408e,297386404,5814288564652804157
+7e445b4a-d64a-0590-e961-947ea8fff24e,1647329279,5045709571991741618
+4941b6a3-8e19-cb60-acb2-eb18dca86b2d,1743357331,16992374941458641183
+8c5deb4c-4a17-e857-9917-26fd4c93bf02,2739228974,15607861345854452735
+4e9ef2a2-ecbf-f6ba-24af-5b2d2cafe2d7,2323981336,14781602480298250084
+33a91f2b-e59b-200a-0a50-2fe6c4ab694a,2410838369,9891931070391335918
+b28c6d0e-0f65-0192-33ec-75ebb7c1720b,1004300792,15849193111620484840
+16e1d5c3-9d59-dc42-ed86-56b8789814c5,3162433648,12965700623617751434
+cdd05a35-778c-3b8e-f1fb-191a8f0d5949,1083406609,16843463198529069471
+c23d00fe-c1a5-f92e-1501-851f42249986,3523000868,18320424074728810349
+54638a0b-45f7-a47b-8868-8e14408cfcfa,877247605,2764785916186290181
+2db72f2d-9e81-91ba-05ad-841a53ccce9d,1405225953,12803595991688000435
+cfeb2171-ccfc-c494-2c7c-9d678470af1a,1504692724,9617062057978979849
+e3630f93-036d-a2a9-344b-5307ff7673aa,461441391,3116403639257522338
+3da05179-aa1b-f53d-9448-a9283a1cc7d9,3009167134,1596674089911193344
+1567c26d-108d-0922-b660-01c258c9a506,1847454408,790605346660207583
+716c6f7c-315a-d997-46f0-3eb65103f26e,2236431634,1409183213372053265
+9eca5c1a-7e5b-6703-1333-7842ca6a65c9,615831565,5767129317935249051
+dea246cf-2455-43e1-8f46-4c770451e60d,4077885958,16115274718924793823
+13e7ddbc-af35-d968-3e19-c292ed18a184,1695795258,9022858853170088315
+0d55c2e3-6466-1be3-d742-516cefb9bff0,1453337105,14732425105490967617
+5ecd76a3-77a4-eaab-9a09-b64b5b5a7920,2471764129,3844141498726848390
+f382ed51-1f25-3fbb-1c9d-80065e7a0694,1119122658,211954859053290377
+cd74b0a2-ead9-4d46-91bc-63dfbfe370e3,1469289186,10837706826766369238
+515a3fa4-50d2-36ca-d407-85b82db2f6f3,3059601268,1455803528871233568
+81f97e70-b7a0-70fc-7831-43674be18458,3758312700,12585060160553507337
+b5f8ec97-b689-28c1-0473-d148a5568bda,970874227,15495091823207804875
+61d2530a-6f85-85a9-55ec-fa26e74ba645,1900055435,3665196137236037711
+c0782926-c8e8-4a8d-891e-143055210711,2469532670,7090553993937415032
+23a0e59e-14f2-c3ac-2310-53f2c85d69ed,3652720454,8525050691685092364
+cffcd604-099a-f934-a8b1-2e330240b972,2294084322,7452550431431329990
+f0843ceb-f662-5cf7-6bd8-df5724f759ef,1809332492,16905288500829163118
+2b3cf3f9-3a17-c962-2fdc-377e1005d8cc,3560175826,749725081924294889
+4f8665f8-d056-a108-7f8d-fa4cb267a8b4,4261497523,13829781901107530098
+c748c458-5489-d075-3468-188f6058bfcd,2767726089,14664937971677760870
+92145be1-e424-3d6d-17ae-a7c6c1f5d2f5,3309057364,16722667384031669899
+17703fc5-69d9-04b3-5353-c2a9b97fc13d,4085638255,12810262505372025854
+2c871e45-0b9c-bd48-e226-a55ac3c21fd8,1916216278,2297405891552608942
+0053d7b5-3f6a-4d4e-c95b-cee172edc64d,4140225485,13203484017754150849
+f5b31aaa-7b86-bac3-14b1-5dac7cdefcbc,4053044009,646390147701710372
+e2319ce4-693a-4609-0186-58560bd9e4a3,2529415801,4414073407198000062
+a7524f73-eae4-58a5-6a62-b5e145976e23,131132270,4686384573830012750
+033f6feb-a6d7-e31b-3c7c-1a115ba5f261,791498749,7064938911858433945
+67344dad-063e-458d-9313-583e99d1d21e,2939728127,14442093042386668888
+aa3742fb-1776-2c7f-5497-95c9bfaad024,2734798689,13671307253701415206
+1fe8e50a-6969-5663-f52c-611a6986c4be,3351437361,583819014235182725
+8e93362c-68f5-3c5e-4ac7-c3cfae561923,326974259,13225336919096404263
+e731347c-3998-bcfa-9229-d912b6407508,3366861839,4510329727186140494
+fdd0babc-8993-6be9-55f2-f1ce45d7ff64,2304870045,4342060455398952488
+f92dcc63-7f28-ad0b-b1bd-dd8d8416ace8,984464482,9845152857950098311
+c264a09b-ec50-1cd7-cb82-08c85f1a459d,2856383768,12710376493315533513
+23b9ad0d-7b77-6245-5a70-cebc47d492b3,4139741905,15789113526503659823
+c68a7957-a4c6-c390-bf39-165255cd5ce7,3988481373,11878100024300299742
+e25820a2-2bbd-ce7a-8a57-084a74f1e7ab,497058410,18416826282438230962
+2c22f6fd-8f77-a075-9b38-91458a15eeff,798792057,1867047213685161227
+389ae024-3959-9bf4-6f0a-ab7e4a2f8429,253007388,3093242267941875150
+a6ccc5d5-8276-70d2-dcd9-24f72a00e66d,1362520681,4033533921210127442
+e180fd0a-6772-4ccc-4802-f4ce03273ceb,2989298165,13853880908012005373
+412b0fee-6873-8621-505f-9cdfafbeda1c,1509372494,14551745328314710978
+57e4e334-c5a5-8985-1071-ec7b617d9ede,2485360753,11362435207125450241
+23a01840-b896-b6ed-740c-fb2b82d22f01,1249204645,2812465904133461547
+cb4343be-28e6-d0b9-2568-3e64a620260f,2089816369,3498164880075057593
+be636969-928e-47d7-b2d5-a189f3d8e4b8,2133157987,15919380187215407587
+117c7918-bbc8-3b79-4a3e-9ffc05b753a4,2571048353,3996508759105216256
+9f41a901-ca14-3ade-7423-99ab24335e07,4269978324,5180288539948770638
+66d0f990-919f-9f1f-b1dd-4fdd31755973,709994064,8721430718127109946
+0fffdf99-19da-f54c-ff94-9dcfbf61a9e7,1318385671,9096848089595821322
+2017e142-b267-26ae-6df6-2e17f593739a,178196523,7135406173028843537
+1595c419-2e51-a887-2bcb-18294113204e,2079091941,10179854730616428903
+673ca491-a08f-42ae-00e8-37730ae71cd3,3484547710,644663170325650119
+23b764f4-6620-e10a-41be-ba9e9b350286,931665176,9188606093896670462
+d8525d38-6367-2a18-66f1-2faea01ab90b,458747516,123662422518074431
+6572d40b-49dd-9583-1e0b-bf7b740dd6d8,1715564300,4339303066241381952
+933cfe58-26b7-18bc-fba1-6b189892292c,1726685496,13881844975958178816
+7b07694d-e3f7-f4eb-9a1c-032ef49043dc,1871294159,3067139506637877207
+b4f267bd-3dd0-524b-9640-71cbbef4b55f,2350448278,8613682543212905786
+8938ee69-2a47-537d-39e0-25d532b1994e,2223188621,17047945406609299728
+3c2b38f1-0f26-8979-3357-c336f3818e77,3383941111,10036792404850295000
+7279270e-e178-a7bb-7599-64c90bfa9285,773333741,7119601539341308891
+81fca671-2d68-46f5-9e55-8ba0e2debfbd,4203873348,17207026277283703493
+8bb58492-0841-8ce6-7a53-cc251f0054a2,3715338722,3095994037783605742
+14363aa5-e8e6-bbb3-ed7a-f97f3750856d,1594602094,2074947772678976108
+a1fb0d29-a0be-286f-c255-23676d756887,3505943536,7397657095104162780
+3724e94c-16ca-2555-8b56-a8fb0e570438,836437602,2047554081592906775
+d09486f5-5f6f-cc6d-d2c3-6dabed4d5d26,2442902,4726931634983420494
+3225a6e5-7f82-91df-4684-c2d8cf73ec1b,2120443558,8664974866187291490
+38a142bb-a39c-2b3d-ac6d-dd0950fc3491,1249464726,48836370868330893
+7d0ae4f8-37ea-18a7-cedd-b7bdf4a49be8,2649536726,12418274751974965038
+2c400d7f-0f17-3966-883d-dfbf61b52c2f,2499062660,4072495300449305149
+da0034bf-9fdf-042e-dd35-bf3018331efe,2620351788,9358649980416949124
+e9add7d1-a5b7-91e0-d2c3-cbfa3c07ab4a,4140760029,8749801806780687820
+8906253f-1c00-6681-53d5-82eab227b76b,2529137951,1849083473115650736
+4091520e-b1f7-780e-23d3-97d0b28188a2,2365879836,4089341704655265292
+b896e7e9-6a53-c99a-5333-1a1fd27e1a47,715433000,8250250607110353232
+7306f1cb-0f1a-086a-bcfc-8f238542ebb8,2073932106,822282423663032220
+5e818b66-26a7-53fb-3b40-e99a20644f0d,2729330420,16369533169609028110
+22edd1af-61d0-06fc-ec82-765e72330871,1612784342,129312304158046724
+24f7387b-3a81-f966-552a-77851488fd30,1362407587,18013945067444428583
+7cde06cf-7143-197b-c0b3-48cfed2a1f12,237063301,2613779246436245968
+76af2a2f-9516-a261-9dd6-bead44ad8c46,1060986862,836340095398297900
+2d32470d-6709-651c-eb85-a6a78ce35bc3,1758143085,16607245126409065642
+89b550d7-3119-a96f-5980-4df5b6a388be,580297133,14240409216164047473
+dcb7a686-c84e-e4fb-fa36-a5717ea44591,4034968220,7241091806038885596
+afa32323-3f9a-a33a-5c48-65035d912239,2848495454,5081450188506466785
+f24b63e3-9c56-8767-ae8f-537738b75dd8,280461080,5231491233689791149
+a4142724-0830-137c-2d10-616086196ae0,134089199,16369812711398737102
+519f618f-dcd1-2ed2-cd79-e41b959c7844,1177160804,9651361354399513791
+b42ce9c6-2c18-6ec8-7fc7-bd6ecf33c808,1023974118,9024437620207579388
+d4b2e18f-7152-4d4c-4b62-3a32b39d5a0e,3399045697,9549979414547475353
+cb6e4070-5fc8-41a6-584f-866696702c0f,2123120206,11209497666219106785
+1e8e5377-dcf2-10b4-bc0e-d88340f3a8d9,3360316305,18193488727492077122
+0a26aaf9-a38b-3fc2-c77f-0fccc58bb323,3700847055,15522809339409141591
+56632d82-51a6-1b73-812d-d0af5af17e3d,987436510,2435320155557813001
+2abfa83c-1f4a-f0cf-42af-c05d6194d26c,3980234797,4936626233243060139
+55dd253c-be50-db1c-fc15-06f14b5bf265,1439996300,15024457735050498531
+1a0bb04f-26fd-b27d-9cd3-cd683597779b,3471742717,17395805609324496677
+9bdd1f7c-b1e7-dfaa-fe75-36bf09aa7dce,84027199,18031735088050376030
+068514d2-9bb0-ad7d-ccf7-6d8d68b93e2f,3541723583,10842713636417385963
+a8c4f997-9268-2820-8853-9994d23b6a88,3222272891,1665277813793406594
+6f4b693e-639e-a98e-0269-f2b504be334d,248716521,11595299473816682234
+e7b39385-573f-6194-0ef4-21d89fb8fd89,136181114,1894174288729287831
+dc21daf0-19e2-4531-1e20-3b5dafd2b988,3343464786,9213095692578267740
+b9a55e8e-ef6f-201e-e001-8650702da00b,2275877495,12157036417936996665
+5222a9d7-d0b2-9d90-549d-1ba6494b02f8,2748862890,8289900015775344485
+62848d5d-0626-821d-58cd-9bacaeaf9105,4186526865,14865517991084054603
+ac5069c7-e466-4061-b3be-2d1244fb50d7,1793947926,1503105538336685196
+9de2376f-efbb-cbb8-5e88-ec9d956a2c84,1572405404,8232230088625446132
+8591f189-e147-8bbf-770c-fc29e1bc696f,2310972083,1257471127873978510
+03806ec0-2be6-ee22-d07e-13e96052d6ee,1822312227,5777773405758732312
+dfc8334b-8b45-ed15-915a-a04c8ef63a3b,739856374,1497973422347718489
+da94bfaa-3cb2-7da4-0ee0-e6fb29809b5e,471747351,2043320685313508931
+7105b7b2-5d70-1484-3659-2063f194c347,1281769954,528672658989619070
+4c580dd7-6288-05a3-1fa3-953b2cbc49da,2859382074,7579995327146446308
+a060878c-4191-c893-889a-cd295e71b33c,3355238790,10740054337571384706
+4ef77000-077e-7c44-9ac4-b32d30ce98a7,2294277289,2290695460694447582
+b41e6c62-5a39-5c65-e53b-462dd4817eb2,2437972436,14213915017359352906
+f48c60a2-1e3e-5436-a5b9-07ac810ea116,2782922863,2552841737591513928
+34b4bdf6-2641-2b33-2880-9e38b496b7e0,3235725787,14023297202722113373
+d8ee2d93-329b-2b67-545c-8257d7ddf334,3375008657,5832580451225001991
+64473864-d537-2fee-11da-330e75ec2728,977955453,9811693249953965689
+c94121aa-6482-a61b-4f53-42accc96f9e0,3483365465,5648070426323868118
+29863aa0-d6d3-224d-2ee8-ae0dd66937eb,1666985692,15255277882577236102
+16e95735-42f1-7137-4448-1b6f77834ae9,259988914,7115891169653238990
+94fd94f8-1418-7e28-485c-95c3115567cc,4089294557,6976924394535197267
+84b6b48e-26e5-1a27-8640-d6461ca122f7,1134819921,6980074166309385795
+b91ae6f2-e1ff-84d4-b971-732084e4e4fd,3348445682,12058584857830528970
+6cac7385-a97d-fb34-7033-e791b0e9d62d,439164941,11222015469218269501
+7eaedecd-1c42-f465-0a66-da444da10875,4054079537,3827820083023186563
+8a22252e-e28f-0aa8-0688-3ab83b760a1d,3076023210,6558124091246934802
+dbbdfa18-e13e-4a14-bd23-e824e1300054,117609616,11959621223529771231
+7f5afd44-6315-4ed1-6210-7e198b09ffc6,2501436568,39768146782499802
+e8c56b4b-22ba-7dec-d2db-3b3ddfeccce9,3394446126,15009578498691321431
+5058ecf1-ca55-7690-e57b-c1e6531c8256,2459539000,4956745962075262618
+f05c5581-b6bf-c59f-dafe-2761454b71fe,957333957,5355770007728004282
+c9ce953d-12d3-130f-1099-dd2d4090fc03,1568262275,9354486037104238434
+77e49c35-93c3-2575-b4e9-a7d47ac8a37f,3755518969,14600421725540894344
+d37a3098-2e67-fbcd-4ed2-806dd7745015,2193868196,17085736426181145591
+0f48be67-a989-d5a0-02a7-a2b9b474da7f,825938406,14998895235216821210
+cb8df850-4322-e073-f202-20bb26d92b3b,3424291802,11627193405637965736
+19d96d41-6ef6-23f7-fc56-8033a7a19380,3991658213,14501824143442028342
+4c07775b-c2a6-4e68-ad11-b140a998d392,1587530173,4400238437387815198
+bdc7dc4b-823f-f0b6-3e46-fa90f1512637,281540939,9561996369928264980
+573534ff-9c57-12c4-6137-4874d8b8c061,73958321,3239283942520334009
+34cdb1a7-2037-c4e6-2b23-b654f6045bfc,3484817302,17026891668805785745
+ab1757dc-6d1a-02fe-8d66-8ac16e218cb6,1612424091,8274396793133555931
+8624888b-9f7a-7923-e4ba-8b20a7bdef6e,125946179,8419983121976634529
+8df6af98-5595-72de-791d-07fa0f51880c,2766968458,10073818743719305170
+3ef0312a-d203-2dae-53ed-7902a04dd1e2,623792489,16574825081101902519
+496eb2a3-007c-b6e2-d7be-77594407ad50,4203275014,67107239363092813
+5786657a-9ec0-518a-c0fe-bd7d92dd0a88,3439748889,14073734640484153595
+85036203-c29d-a293-4236-a016be6be649,1264363276,17652741457747646525
+1c971fbf-c18d-4cf2-022f-c0d381dee0c9,3960470503,3656831860063801980
+9766530b-4473-c199-e130-9f98d04434e4,216300504,8501248912057081622
+4831069e-89d0-48fa-8489-8d1023bcc98c,3138278366,6701922283598846054
+8bf036fd-a9c4-4beb-ffee-23211fe37cfe,476370026,14552765399816802667
+1ddcc7c0-b3b6-fa17-2242-3aefa60f56b0,59725547,9076607009023016822
+7d314084-f8f1-06f1-15ea-8a4c7da5a24f,3065027466,327828272671980691
+30ad118d-2fd0-6fac-6450-e60bdb214d2c,3146148629,12247771301787358233
+adcc928d-b015-3c5d-d957-44798bccce3f,1247278959,5821002241024665223
+122e6947-973d-e502-587b-096e70105b45,3438588803,6062310682791220062
+3bac09b5-2e4b-13ed-4fe3-d897d7fb4c83,1841550082,12163020921320574605
+691ae9e2-cdce-2ee3-65bd-38286312e50e,3691526547,5974480119587058291
+94a0705f-10ec-2dc9-cb1b-287bd9e6b7f6,156794590,1280268501691537493
+6f210cf1-a52f-c25d-fd58-ece7e0cda92f,3002886549,14117654766749381
+5c60b242-03c7-1f66-9279-4d09efd5cbe6,52355467,5420256332783567744
+08a37514-bf4b-0e25-8f67-1ed176ca90ba,3672832989,12075056045284768291
+6539d3df-1ec0-2e8c-b089-fa9fff07dfa8,2120831143,2866321419132493683
+c00b0efa-6027-caf8-6095-217e28a11b1f,2519925113,18394926948225081182
+b9f21352-3f0d-5767-001d-96a6055dadcc,4241110738,875216382211978121
+28ecf6c9-a0d7-af6a-8c10-54164e8c50db,1848118456,13092175796124097520
+db0f273c-4ae9-e86e-0504-31e56fa9ac41,1305958850,5148417072620421206
+c0c39fdb-37be-b345-c370-fda01140933e,3183610565,7817088459705007534
+0b39c996-c035-539e-95e4-36cd840b1b8b,3362531898,194013094223909752
+0e92ef58-71f1-66ca-40e7-a4090a1f922c,3633776578,4562996452371958124
+31a13beb-9439-60c8-403f-94f3b48a8d6f,3416440600,2132688997500771597
+789acc99-9e39-cc22-7411-897eb70cf405,99377632,4821280844195538386
+b5ee9b41-e2b9-f41d-6030-c26906e07020,3049100027,867648224741912345
+101d9ee7-eed1-b83d-47d1-b09a627261f4,3876583302,729155846994087947
+2b6216cd-70f9-c14b-6229-6e22383e3125,1701955109,9858411889154244405
+1aac14c8-6dce-ff9a-001b-8ed71f1f4b2c,2857485365,12821961465591169508
+ef0786ae-9f44-25be-e4c9-f0f5cb59c46a,4138008034,16697331553348177728
+d72c5bda-4642-4af7-f67b-fd3422df18f7,861718104,3718241737358719885
+87f11815-a49f-2141-836c-120d23902c97,1243401284,2308219982185897458
+aa9ef7f1-e6d1-630b-582d-679eb5ea0364,2681580381,16267413303971651057
+adc152a0-04f3-8ac2-11b4-c3d4e890ca8c,3555225914,6186790779136956313
+19200390-2923-dc5d-9766-db9e3f679018,2843205247,15587259020310941620
+53f09820-a119-1b64-0ada-81164c3e2323,3392766719,13510948987808403625
+da663aac-c411-4c6e-07a0-e501ad22be94,116473850,17296852241408558996
+5cecbd11-9c02-6cb4-73b2-cadabc9d7ba5,3844383088,8437518729126085768
+2a3882a7-f841-2e68-5375-7bf3a6cca61d,2329841407,12865009416773393329
+301aa781-c9dd-ac79-e7b0-c6be70a3af73,4094456458,6802558596921811255
+3082ebb0-d829-4a31-7b14-43f3a042d9ae,3556051657,14960536035939030946
+ca452ae2-f9be-97de-a3fc-017c55f664c1,1751708313,11022576283272446005
+5e857624-d325-a519-8409-ed9f7a03423e,3358090551,18182246623980672631
+d90fffd4-418d-32a1-a690-cb6d1cc294a5,2096112023,1646625890317367850
+8ad367ff-8b15-033e-6249-86c7e963aaec,3884094190,11716949666162448157
+99e63447-0772-40fc-280a-98a95ace6d8d,4042776300,5125362593869514677
+a628a4b4-3982-0999-04eb-4d9b5365f1d8,3389981334,18332574568607778221
+518c9017-5023-f14a-72f2-f349c5f47e40,1405664239,17728729233713528642
+7ed26ca0-2c16-6eee-94c6-cf73c11ece7b,2039637169,9948281350723115719
+f366dec1-67f5-aa5a-82c5-a2b43222d715,1465891082,12851629958778261132
+e25934d8-c5e1-b78e-2647-cf02638adcca,2892976191,10085755762559150053
+3b7ce273-5557-d36d-07b6-235c5650ad14,442995269,15643611951428665784
+778c88d9-43a0-e25f-0ad9-5ee53079bf87,3100896224,2898213220295012104
+2b81f2d6-d46c-477e-d57d-94721b4cba28,820767542,2496548159605432500
+fc0d2779-608d-22fd-2356-c6a97f073ffa,1949399580,2458369321698938244
+a4f48267-8495-5762-fed2-4affc764ed84,766992101,1716141590293955598
+a4753ff5-5cb6-8f2e-568c-88d912a1f11c,1037298383,8288083331773433455
+75a8a299-5722-056f-0589-1c2a7a30a5d9,543296052,4715548926610428318
+66e4e57c-122a-b80b-7de5-8c42ea0f0912,1758683379,8016119628342081033
+4524ff1b-6e32-7427-33ab-88a5246f5faf,680259500,17507695730528255383
+4d46c640-fed0-0173-192d-b690d172ce7e,3711018778,17099058058350438094
+dbe99250-ed06-f41e-510d-04e8bbaf8c7b,3640109769,4483158743512349418
+1f364244-1fae-9544-a9e2-0591eea866c7,1807846902,3168640480237531917
+c47aff34-e511-3c02-7f15-9eaad3a8cc67,1694150257,11882794979934769028
+c7ce5334-f5f4-259d-7caf-667f77609850,3994646165,15416591480952485491
+281ab640-66c5-8b5d-def3-a012250a3c78,3127412475,5936126737400934753
+897c03d0-43a6-3b11-4a63-705de5f6a186,3768100962,15814454097660989200
+94f2ba95-af31-cb4d-9418-107fc64119eb,737303991,6167419706968595040
+f9347929-58b2-d69d-0f21-901d3828f625,3977550948,7681573035381137012
+90bc799f-1016-bfca-0a9c-17710efbd19f,1140242225,5883277922690601456
+1591f2e5-d28c-5712-5a2f-1ab763d64959,718802363,10331652743241331132
+39270cdc-b164-ddae-64b7-71e777e26cd1,2016037520,17405519767542247184
+de71a6d9-cd8d-977d-6030-6dc0a6f12b85,2160299025,16934178704242007746
+a01b803a-143b-c04d-80e1-5853916db9c0,823107597,11879235282387119734
+0c4a1747-f154-c64b-291e-368e3c901456,1723785571,14061207023391847065
+8d3dc499-3a24-db79-4639-2a7b4c8dab49,3743550581,14327896673211122234
+d23d2ca6-e379-743e-34ff-d67e486d543f,1014073562,15615980516744033954
+75b2d1cd-83a2-5ba8-7f98-11613ab0cf6c,809508110,7493437590938623080
+4e8d5904-b70d-075b-59c9-b9d80dc48267,4043308893,14035770857495103859
+dee2d70a-45ab-fd99-7c77-4d9268de535f,3435713284,13358162409052037851
+7462f954-7d49-7519-4146-8447941b082f,3367483760,15883016247495225813
+f3e75f55-0b22-3ef3-436a-36d95456ed64,1551830483,4704051128643747896
+36077d9f-3e5e-da7c-b529-f67ebc5e39bd,3314904229,9674012726524030529
+667633c3-3898-e965-7027-a3deb88b3f1c,1020849950,9614049412493559414
+c82f13ff-1b60-334c-6f46-875fbc6d1f81,2328263816,5917578550050010188
+cf24a1e3-0604-b237-1417-edd9323245be,2990310346,11605893630342671838
+6f9e062f-e384-f521-aef8-73398283f3a0,1965763580,1380975215612513968
+fa11d6e4-e1c1-42d3-d018-39e62a520515,3811432607,1024233791662216735
+06407dea-9333-57bf-9542-a9db1977d9e3,1178165695,16851448876278469149
+be99a46d-4f1c-fb74-b4cf-5945512acc01,2534766539,5944196535750246332
+3dd7d230-2c73-7966-2ae8-34f37a361b3a,698047683,12779420740440759909
+47266e66-3020-aada-7d6a-a2f821a9216f,508525620,10446967772822390559
+8807e617-d835-508a-4cad-cdf3729880a6,103844221,16917488146301632119
+0d8503b2-a2ec-9703-3131-98515e08dee7,4045947707,16779167714143938561
+15cc65f2-cd39-02cc-6029-d574484d26b1,3193710587,5658317223803255602
+eaa27163-9e83-8d9b-e738-2ea320284da6,3640868086,12729330685876399874
+3eb83a6b-4bd1-8621-1c1a-62d58b6e38ec,1142247602,1713714941113756429
+60128487-84f1-9e6c-5fc6-235cee52fe45,2072662112,2811293255948017269
+acf81edd-d019-e9e3-2858-11266ae87815,2335788412,14318596822619858638
+bb615393-3225-337f-e806-ff21b0448c93,1907098879,5702933417016941398
+4af31419-3c6a-345a-5f18-70da0adc21f2,2122648814,7357835507975715129
+38a91f37-55e2-0dc8-e367-3daba678130a,4229923489,16819830568096171169
+e8e46d2c-7402-95c3-e788-0dabbec4be37,2625686483,13765681797837521559
+5d3c45b3-9fbd-0887-4267-7ae7bfc49b46,1627593935,17408128659406565954
+e0c948ac-3454-ccc6-ed68-a743b3289831,1731980784,13407843163740823372
+57f0c3e7-fd45-7b55-8e33-59663ed731ea,2875826594,1518523534380555854
+e238b542-a95a-3a51-23df-565ce1c6da50,155942533,16238139334019736593
+510b0827-a633-90f9-bd8f-4ed0a1ffc83d,1893772016,4319317898775072657
+82e36177-48d9-a333-6dbf-2a34d31621bb,2544822259,5124965200417347239
+1c78d195-aab4-293e-a52a-5b7152eac1e6,3495748335,10292802098178871961
+fe3a0370-168b-6fc9-1a5e-376bc3b8b8e8,33448494,11370928451552372792
+f71809a4-e66d-0836-b663-8a4c74cb1708,2773043,6683999720931203320
+3f29069d-79a3-d178-2b03-c4dc283fea88,16325344,10361333700201291996
+b7ccb9fb-48d8-0452-c355-d6b628d78cf4,1938206315,8348651263015185100
+fcb0e5e4-b150-7d79-f0c5-9933de664f56,2206888693,5926693952560589565
+0766f49e-a62f-8078-0d0e-c6d15d4a7cb4,4090709558,9244756941507175027
+3802e724-0265-a8a1-f5d5-e5e560f752d2,1182738362,9488482247683564934
+f1888346-823f-2523-b631-9c541183b939,2177981737,16101021375509293991
+4912eb02-1164-1688-f7df-d5b9e2f036af,3756046582,17116352510355466937
+54a0a3b4-e82c-e08d-af39-b1274ccadedf,1587314105,5282190955158813769
+ee4d9453-6f62-3d12-1758-d2ef4cbff519,2925782312,1926056178539935921
+fb6b33ba-6721-ea03-e7c0-b34b79835bc0,3293509212,16991000654479282033
+8135a90e-6499-70cf-4e9e-3832d00d9e73,1602592336,3489677526014641382
+8cfbecf5-5b45-1e81-b2c1-4bc797f9fdf6,2627890388,12707193886831329014
+dca5137a-5696-ab40-351d-37562f903f98,2042929064,14655641158783163888
+4255532c-f6ea-3130-6216-617be22bb735,1521203026,9933155006010574017
+6d286c69-6b44-6fc4-0a8f-17364afd532e,1184321165,14214046810836792496
+2b18ab99-f604-7d9e-4fe6-e6ea0784ca86,2429502358,6269600850795100568
+b5d182be-d9fb-0ef4-7bae-a06975ba89a1,440098951,14008288508349756181
+9116ae9b-4f44-3daf-ac7e-e17bddca4696,1469807533,1815108310618062787
+36a30f39-f087-c00e-a4c8-9a2af09528af,4275497426,7653856269483845008
+f405d4d4-d25b-4127-9f79-b081254bbaad,4062369976,13317920704952751268
+2aaeeb51-c1c1-e328-c242-aa9777ecf943,2254998838,9062541719975395811
+fe49f72a-f490-bbf0-4187-339883d48b32,3969503780,11250965762243652469
+ec854ff0-5a2a-15a4-6e1b-474ddb62b8f3,3570768551,15008535678332653846
+684e0cfd-0a90-8f0d-fa08-43671366c34d,1747739518,17527432025161001460
+5fcf8c0d-a98e-a559-6a75-bda27bbe44a1,699915880,9832393490255357066
+70e959b8-8dd1-b602-cb21-aca4ed933f26,3453631890,14977179145088847115
+9b4b03d3-0f94-87ab-af5e-e20507fcf97e,229265913,15736830627469248896
+365dc376-012a-d305-417d-79e8d81dd8ca,3037139263,16549284939310483467
+9bb4ef56-fe8e-f1d0-179b-fab72cf92e2a,932798884,10023951394476099457
+9a41a9e3-b8e4-54d5-39e3-65f770d22ae8,4093494872,2528871271128635243
+7f5eca17-b5eb-a0b2-5dbe-3c83c590f1a5,2592202933,8805211798979174795
+4bc256b8-494c-6fe1-89b9-3b80500910ed,3113568914,8386331274912792845
+ad97aa40-d7d6-f781-0c3b-bae2ce770fc4,2317471962,4784797493087214789
+d20af0b4-e454-f432-68d6-d02629377db4,1058843602,2359012448717661372
+8936469b-a919-acbb-60fd-153542c06e45,1265874319,9482142284507227820
+17013704-847d-3e4d-7849-8b58b8a8b224,642440647,11986856849345343336
+ca7cb49d-6fd8-debf-7fb2-ffd6303cca97,3075288074,6373540848768913257
+7f3c54d1-cfc0-32c8-8bae-e7e326c3400b,317450695,5745356862925716772
+72126260-8c6b-472d-f8f9-88651f7a1338,3218492642,7392104838809518169
+1fb57865-3281-6d79-b9b3-23d728ca9be1,2974875762,6162267617703725770
+3813b98b-a5c4-0ec9-e475-d28a998c08d7,114989204,7651493226463796055
+8c4f261c-a384-7d5f-7d30-fdb91b665c41,2772522046,2338515701177306477
+d831f030-0d9a-037a-f61b-5eab0262be47,2459992571,16525867921585008668
+bbadc8da-a1d3-f09f-9479-b3b6ccae87eb,3885936485,7503385434278837874
+07a6a731-ddd3-e9b9-4db8-222dfdc4c6b5,241305812,16593258548789623159
+da7ad6f8-03fa-229e-a023-174df7fd1607,2060630873,1497873875368179098
+33e17b3a-54b1-b069-9c3f-39d8210a0328,2260269531,948259763468197352
+9e7e6300-e259-2286-21d9-7810de4eedcf,2424355431,1717644659282306643
+a3c04d3e-f5bf-5b65-f1ad-05c920bb6a40,1038139116,9866053211509055258
+94a19975-5481-449a-2b9e-ea3b06444576,590150660,14621403239919026424
+575f59ca-6e40-2672-31eb-1b6bc94817ce,3462898570,16184185079944311203
+ec29b01c-f209-7470-99cc-014ab8fd44bc,992361584,17221974568542123760
+006d8773-520c-3147-5dd5-a9a326bf3ffc,3574079745,8977289101202056128
+d47646a2-adeb-d728-0ba0-ac3df70a1ba0,3890328942,13601456774625884784
+71e24c44-3644-ea2d-6a00-7a25fde1d9bf,237955774,5076304009979024185
+1d237244-cd23-3d7d-18ae-508cc124e838,835771015,18069202833595469424
+4a04a834-a834-19f5-b9aa-03dce4d32114,665974995,6427432035919817426
+83174874-3e5c-9f70-f28d-3fa6796ba7ba,3700595792,14819783500674639832
+1187271d-3a96-bbef-2b4f-2a0c2939bf60,1486527159,5921592522010907256
+57273a02-8dde-a20b-da2c-f360cec137f6,2176537093,3671976150391876205
+a51da821-0551-accb-ef61-7ec3866054e3,1740390582,8054309228436222148
+e69d86bd-63ee-c0cb-55d3-5749c2e20f5d,242454263,5343985331115982653
+606bb452-5f59-a9e0-ac81-1ad1f2a1f81b,3234877694,6981356647419008080
+a5ade7a9-0f64-c438-0b1b-282040999b26,942919646,13009767085019350100
+efa9ebd6-db41-d8f3-286d-96fedb102049,2614882556,16904246750706376016
+210dd18d-bc0e-210e-710a-804381e03648,2006115818,16914311679188449147
+14a7a395-32e3-34bb-3697-2fd12088a08d,899528795,17789783184542848121
+cca8cfc7-2337-28e1-0f7b-6b295bc17967,40817778,5358784901388998558
+17b90660-446c-e53b-c3ea-2f4256ba3771,1697419826,17896666194202617793
+6fcdb499-e1f6-5e50-0104-71e507174599,2256127100,11437225714172390078
+dbd05d7d-b9f4-581f-a457-bcccfe68d4bf,2973176620,15424077261441550650
+ffab1273-117c-039c-1b62-5b955db1431a,1255874386,5674005904513255007
+fda4f42c-11fa-1fd3-1f81-7a3e6831679d,2685309879,2392409722018354783
+f8d13fd9-496f-cd1b-89a5-3f4ea4cff40f,1207474980,5192087723491910467
+236a9baa-b116-63d4-ee30-23c4dd57a659,2445298239,17926732499509493056
+01e4c01f-a1ef-ef5b-f897-a88bb9ebe0f1,697376164,16858901070959847630
+328a3d60-debb-39c0-6ebf-f2e20a6530ed,229033968,4960589250819227572
+b6b6760d-0f96-1134-b71e-882baf848bfd,732631078,3593001478496857288
+7db10ec9-aee7-2453-15b7-f17be42ac622,16629918,18310504053700188970
+465c7d65-6e88-d3e1-3eff-fcbe6667d262,4044643896,17823964399767836635
+4b55e419-0c48-bead-855b-1c0204e8de14,306189766,2849864741309970444
+3bf54be2-8868-6c31-c701-58b20bc28320,3319679290,7049490396071118866
+8bcad03d-1443-c7b1-1d07-cb35384c6f2b,357571546,12330852061984434611
+10d8e6d2-dc88-31bd-bf98-33fe82bced0f,1092276733,15443163680020769828
+fbf87947-e33e-4bfe-4441-65d258c01082,284760208,15391838874886485523
+c0b6feda-ee7f-c0f6-143c-4f377043a5db,819403095,2388724774966079913
+6236ecbb-52c1-cb37-0d4a-7090fd959467,3390577133,10735309219045370003
+6f6801e6-9d43-58fb-6b91-3764264e21de,3254011280,14761326089063003143
+535b7c3f-d350-d297-8af6-86af4a1e4d11,1088028027,9936634139582473284
+f574bf25-d80a-5e78-52bc-e9c5eb22af85,2740040094,2866523583036641504
+f2bd6179-c76c-31e2-5b0d-9a232e0066e5,2369607528,4499641303724433906
+22392d8c-38f9-7d9d-d354-e82e010fcaad,3192937754,2994323463915933297
+fd8fa670-5134-b77c-1d96-f3ccb149cb05,933360531,17274104421330531345
+ab7e3ed4-805b-31e2-d2c8-b96ef31ec5e9,2491843393,15530007296508054265
+676fd335-d824-99fb-a6e4-2b3ad72c267d,1795527261,692536204195280153
+a1d63c5d-c691-1380-d985-292d8b2e4903,3912908534,17573753194388995614
+b6bb7dd6-5061-3858-8651-25b1cff43946,2897929037,2978778844786691630
+9d11fe5e-4ca1-78a9-dad2-7d1b7b01f626,1946222325,8693864897635150430
+902a4a8c-f747-65f2-ebe4-4b249fbb98fa,1104059836,897393930778421384
+51d1d165-027d-3265-f537-f2886152f70c,2503703903,5671461326848704668
+00b173db-2fe6-ef27-7490-396f485501c7,3230611212,13405929889451527276
+caf190a3-df57-909c-b51b-c368155f0f10,2082746555,10090924605584589394
+909345f6-bdf0-1f43-184e-f2f121f3d648,1272959996,1136421093984815616
+61dac480-6c5a-c0cd-02d6-7b60b0a97e86,1783673759,2043529078659367587
+c34df07b-0031-d807-407b-77d7f52c2793,696943963,12415384204530316592
+a55804c8-c5f1-f5ad-8b6e-f2d63c0eca9a,2959562420,6999866383563417595
+53df28da-a47c-c871-10f5-d8524b2953b9,215124536,15484393512216004009
+4f472a92-7197-3069-a626-846879075591,629303102,18156704643187096930
+2c12e6d1-243d-b1fc-ef9d-697fa5e5c87d,1699442817,9667027881935505943
+d41bfe6e-a633-e026-57d0-50bdab694d5d,2704016253,344778781330621356
+bd4afd59-5b5c-9c26-ef3b-11d52fa1a4f4,982711582,304754963663256879
+67a5b328-9ddd-436c-74d7-a756829bbaa2,2316812413,8130112185547380488
+fa31f398-70e4-6d4f-c9e2-e8700b46c7ff,1949379905,5154739370056820789
+e5c898aa-74d7-9157-3627-3276c6e21e0e,1377213485,2462210142574324573
+6cefe17d-8618-566f-c449-8981bb8e4f64,697999402,11424012777673435882
+48ae806b-527c-631e-d04f-a8f5d837f742,1665008486,7485793735624754511
+4c47d022-d1a4-5d02-4b36-fe334c8b2c05,3893581547,11020620593025079258
+2b90a3b6-daff-75c4-fb22-582ff33202c4,2270555140,7702891009562115750
+76b56f62-a881-0214-ec69-c644fdeb1d84,4108547095,6006280116606433498
+041e5e3b-228c-0592-6029-305580cfde4c,3487075126,16913667874607779656
+5ad89b28-b2fa-f013-f34e-1439aa1ddda0,2849667567,542942937426142334
+aa24fb01-90ef-3ee8-43ad-cf8125f8cd35,3014573549,4305816387273396685
+27de4f43-a6e4-2480-d45d-e9ff986c9e14,4037840506,13421651437880967972
+4218c190-2b62-5828-c01b-121a58659f55,361035706,4350595269686893539
+af59a337-5307-5387-f701-d0473abc0323,575180630,16324750087769049518
+fa5316f3-9b8e-9cdd-143d-7d9955ac3c11,2366423033,17517988452526090529
+91bc3d50-f4b7-1d22-30ef-4880d2d50f45,2284645348,15821895588790272537
+32c65d84-a349-9f61-3625-b93e60e524f7,805401645,5722934336912642735
+060b807e-c6db-af7e-cb2d-ff147b14e7e9,1125704705,4128395786046877375
+0cce723e-4a5e-f7c2-4f07-2575670b84d8,2554220643,5510955447560887970
+b1913c53-42c4-3d2d-2edc-1ee9687eb793,4072087291,8642617496208166873
+544edf1c-197b-b50c-3185-80dd72e1cd40,3930181206,6366888764385321420
+082bebce-f9cc-cd15-4cce-72ddd60bba4c,2684087797,15640126413962245329
+8f93abbb-29c3-309e-a40b-e1412d625a50,4232228543,10023728868681584123
+7bb9993b-8941-7f0d-5e84-4fe43c54a599,2623644814,17967043667536895431
+16c35de0-6e27-e392-3f47-79b7dd9e43b6,622506843,10900353893471434737
+3dd4f8a4-1fc2-c229-c883-e4eb711c4453,1843219720,10184834488201806391
+b49bfd40-2051-3d5f-0fd5-d220ab36ea45,2611806909,1825057195035014208
+41a1f53c-f028-fb68-46f8-e5e97e095385,3216029562,18077966928888663214
+9b1184f9-c786-8c01-4448-c9c7660d3cc7,2545547057,16286800991471027509
+01718bfb-cb05-af0c-950d-cf2b761d14ea,2079315298,15567772536451331465
+6d6b852d-abbf-3c3e-a8e2-a8aa011d067a,3638762248,14328426441457670110
+711ae901-eaa5-bdd8-0d66-b3aa33d03e36,2979325469,13095186035632577932
+9e8b2b1b-06a7-7328-4bec-687a07ac5786,101815238,5559896345416083005
+c036f45f-d1f8-153a-c321-850bd8d5454e,3416123276,14189317818396850120
+45886eee-ee1a-538c-d97e-ecd293bb2d36,2480546453,741235010214416317
+2a1014ce-8e9d-2c48-298e-cf7d1b1550b8,375949549,17406510056745385037
+fcfc4044-c4e4-7ff5-9df3-c0b35ad967ae,654782750,4374170981545313203
+4a2312ee-1d5c-9f66-abfd-ffaea720d670,351643517,824450379929213188
+6f0882bb-5102-c684-4853-18306f601678,3075040151,6730028338944471955
+59a6e5b0-8f62-f87a-881d-95cbdaf0f29f,3537673855,14324136460554052779
+1b8c5ae6-0c7c-3bbb-9c87-d1b7d852038e,1874390791,952819394244911363
+edfdf7b7-fc68-8bee-70f5-029de70c4f51,767331107,12747980650071348252
+ff773816-eca8-d7d1-125c-069ab301db49,3768938381,12426754259468168909
+f89bc07b-5f79-5e41-28cb-a5da7575ca6f,2068684501,8255374630734181714
+f6d5ee33-708a-570f-cbfe-5af51a20a58a,1648963501,9076246519759809783
+7f56b774-26f0-dc1f-0669-6152822fa9b3,442479693,15771235787354692967
+72c568ec-0183-b991-d40d-aca6da367798,1650178898,5159033360986801244
+62554bf1-36d5-3f0e-36b6-f84154c1a33f,1781348263,4036876298358359395
+d5a5f87e-925c-4396-8377-f68366f07bb1,2913118324,9481413406896823952
+c5cca99c-6894-30fd-fc2a-13ee24f28e51,2815743865,4587453660984314514
+50837428-bc8f-74b9-4671-a43aab9da0ac,601566677,3068425441890503414
+f2d79f97-fc37-e3c2-44aa-5b92b8ff60c6,3670004958,5306891395267853269
+4eefd35b-a6f8-b4da-950b-9a2606f6db4e,1030169598,4953193098039539242
+3be5d1ed-1827-a6f5-bfa7-ed3b4b14e831,4139022269,15270790449392731317
+b4f23dbe-dff8-8741-1895-05a766802682,867736283,3660844242663792920
+c7e4f9cc-8a7f-6894-9d37-c61f7fadec67,201603516,3718239283475297251
+c342bfe6-9a1b-bd4b-88f7-6147643c3a69,143408875,5569570501755070384
+11329a89-1550-4a9a-2719-5f421b982f07,1125679719,6060756743838889740
+ae6486b4-8ca2-b625-3885-fb4e5b549ad6,833887137,3718142880173160286
+20b98f29-739e-6406-a242-51d19f4dbfe7,2616991705,16296440788359613033
+f1cb3aac-7b7a-787f-51c6-726d142f6d8f,3008308154,10410177056286308698
+de1f77e8-fecb-add8-a4ee-027b31529677,3106537447,15950230684095687383
+45c632be-3317-e881-f41a-8d92d47b243b,1735359482,13191682706089296240
+52d35eee-590d-dbe4-988d-8d46328caf28,1944720811,3466233268762586616
+308d6416-07ef-89d6-b7fe-01aa37b86874,3234790643,1623963095174091328
+331affa6-3532-5de2-4289-cfcf8742eafd,3349637543,11389022952795330701
+1481be0c-ae4f-aedd-7c3b-367d2b324fa8,4214892159,14280532024322925923
+fffb1090-a3f4-7073-8e19-67c033129a9d,790038639,14858170845050819371
+5dfdbfd1-f9aa-fe0a-8175-485c4de850dc,1604408457,1211732616819239918
+b2549c5a-0914-76c8-eb37-4d92808561ca,1928047663,6611081711349275105
+2295d1d5-3c20-407b-17f5-3d410b5f112a,2277931253,2191992401526763464
+9980c028-5442-7717-931e-75de8c404b8a,3623883165,140823671805573441
+84e236b6-d336-b233-d7c9-38528ba70ddd,2281190050,10217326384287479492
+3d3ca373-f1f3-4d84-fd6c-f26a4a3d121c,1027662736,8621756281410681268
+c672d028-edd7-a084-2578-b82e3b084263,3397673829,17814072656788031725
+cd07b1f9-b3c9-f33a-bde2-ef4eeeae23b6,485809358,8241438436093857654
+b3feb1a6-6634-8824-66af-fea07382c31b,2651982661,10923765163222015260
+995ee332-dfb9-3d91-e4cb-4b69e09270ac,1582242294,6233341382558142632
+d6aec071-9f6e-719f-20c5-7c09802a1185,2011584779,3222053009875746476
+472f5309-ea21-a70c-2ccd-eaf802b774cf,748007031,11459886995345631407
+58fb032c-6dfe-1992-c6aa-9fc89fc471ae,707368518,4983619021224205758
+16b8d019-6245-c20e-df50-0d7fe4b88a92,2068412543,1363249471139121453
+f3c47905-4d99-4c43-2e91-4adc231926be,533507810,16392959825076475684
+bbe2d9d1-4d42-76e6-b9bd-f0c337d00296,2653129582,2085839066780294452
+045af09f-b916-d390-0042-5c6085a3d2eb,4077956759,10941768433106821308
+873fc58a-967f-f438-d644-01924d813419,1442189946,2300000660862231729
+ad421839-0e65-c3e0-a2c8-a6fc5968001c,4040353466,11719409174942479380
+d4b99a75-8aac-ff25-6cd8-0d89b2abc8a7,2171713796,7082593843868780936
+658c1622-6c51-e54c-bfe1-8ead0a4a721e,1781656778,18130947739001209541
+ed4ab52c-406d-2a84-1a23-5fb1087fec9d,4109541960,9779760318610463464
+80f51fe5-d107-65fb-ccba-e8fc586c9fac,863400922,7457603551325366668
+47dd0ae9-e408-97f5-626e-d138559db7b9,2819070374,17556128448220726234
+01e7ac1f-4c53-2d8c-26f5-76641db3ece0,1062485682,10438975959373726179
+8ba7498c-0d19-3bbf-c1da-98c9f49de9a9,1900746291,10596444940726228697
+8e7f3fa3-70b8-5302-b7d3-fc56bc4b4e64,893290266,11120076169024907326
+206859da-0541-0c81-322e-02b6195ec0c4,2914776700,916628354447899198
+8c295139-44c5-9d73-0b5c-f7a199cebbc1,1361174773,343325841065045176
+ac0d2d4e-77a5-22ca-83ad-23d0f314670a,26551439,13816310895111411076
+da2ac5c0-7cfb-b4ea-0f48-692facf069c8,4266235190,9160654331184757991
+c84e170d-6732-6e95-a57e-edbcabf257cc,2551807246,1753890771734587375
+7eecc24e-6997-5a0c-dac0-a3eb1006e56e,3798164787,4507275608733663686
+6e47501c-7ac2-946d-117f-aea768c8a9a4,1509513070,16150741440811313714
+af16deb2-fb5b-e863-b265-456fcd06d90a,1456820627,6057172903810504885
+4d84193a-eb5c-46b7-32bf-c3db7bf5d0e4,540487235,15215996995076323432
+c8ce728a-b1b3-8ce6-e513-2fcd342a4b47,2874261444,1294881138318551495
+e71d07b2-73c2-2f2c-e03c-b77547e07e15,798810218,442352328475317653
+d201c47d-1537-33db-6fc2-137dc91d716d,2798420491,7798521600853906738
+def90ffb-5e8c-718b-823f-58747ee5ae01,133512271,16206757541169464407
+30f29625-fb51-dc41-01dd-ceda28283a97,2956465838,7939255974597922604
+2b8a7959-3c73-e0a7-ee98-ad69979c26e6,771649749,12314819437492287701
+5fb1466e-9a8b-df57-08e3-1f59bd412ea0,2560619924,3738223736865640823
+a500e2e7-6fbd-dff0-7bd5-a434dcab97ed,55552179,15225765418048890253
+481a275b-53a8-8f76-6bee-c801c0e4b900,1884101123,16322183579324190600
+801b6419-ad82-0df1-6697-85d1d8d79195,4100808856,1541759099680897982
+a1147e01-256b-3743-89aa-ff3c4bd20052,2242819432,9679407978965257345
+75a5ec34-93be-a594-5c7a-ed3043301358,253167976,7914607059846639928
+8bc7d64b-868a-3c9e-5815-63ca80bf2495,1494570773,12528007804939058930
+a8e512cd-6204-b537-40ee-05421c4e5f25,3085742994,7831840871074807889
+fd496ce2-9d71-ccec-dfba-2b005208caba,2168391846,4942590714794076649
+3f33920d-f674-cd2e-e580-ac1678426cc7,4286111290,613139374064075921
+0f3c4dc2-d9c1-4cf1-2b06-269e943d43d6,241751177,215158017762710710
+cb997816-93f6-f885-ae14-b43fa67dbd41,311399484,9500434915432696190
+ce9b7ba7-6733-e9c2-f48c-91618f91912b,4198495006,9737895986008141373
+d1aa2385-d0cc-3393-c3c2-3da7e3a923d9,639262511,17179799263371236198
+77610f49-4b5e-4839-3b62-97b40205fbcc,208521926,1996461008901810597
+b2571301-3e45-bcc9-4d92-095b35e7a06b,3690986967,16707425127550184442
+335b9ee8-ca35-7efa-3ecf-4568b3a3e089,2975180031,17070768509963788699
+0704890d-8b4d-0414-f54b-3afb307708b7,2295192619,10959609219060373810
+f5ce8bce-c26f-f999-383e-b456a46624dc,238350584,15838787325803224671
+9e0564e3-329b-d90e-7d67-b1cf59e81991,2660293869,2538960678535337311
+bccf1726-ca67-3947-7d86-dd49290ac3db,4274129825,17729718227893508311
+7e3bf15a-664d-93b1-48c8-de15b77caef6,1123245992,2225089602842841889
+31c30cc7-cc34-4fae-6b88-4f7c1e485d51,3810299975,3877028872565553134
+20b837a9-13b0-9eff-e00b-23a87984988a,2090163133,2505385703502883391
+e756608a-eeef-116d-32c3-f05d97729c1d,2499421922,12753598204776476378
+642d267d-0164-e8ee-ed72-9c8be4095191,1644243458,15832397790176956201
+67862636-281f-90e8-f121-2428301469f7,2623153208,2183340012615622378
+f3f55d9c-ca78-8eb4-9995-e860c8e56931,1625961465,5029530077740433234
+48aba875-6e61-4398-2fd5-8df4fb637bf7,2801640153,4311338558993520027
+7608fe2d-1827-606f-c662-0194dbc7a20c,3011112557,190529259693312797
+1548766f-dc19-b977-8556-c8c3fbd303f7,64770373,12282823762578338866
+e05737d3-d780-fe23-356e-cf91dd0b67e3,314535665,15414780350058299074
+d80aed0b-0648-8378-425a-ffc7bcaa9a0e,3623086743,7112780036547233215
+2bd30c7c-e021-a5fd-4dcb-6d83bee6c7ee,2345655689,16224350609004486527
+3265394c-360c-f308-b5c9-45e326a1ec23,3673418338,15515111416401689085
+7a785156-3933-819b-4247-29973474cc51,1045491471,11043926891564259611
+6b096b0f-d31c-526c-c780-9105af565289,3541889328,9082667599321675372
+e3614e8b-c69e-1fdf-d0e1-82309857c10d,3262457824,17165035973224175495
+a45cfad7-414f-2e76-e323-b7acc918f90b,2530484138,9767465644599960022
+0ee86d8d-b89d-c7e7-a064-436c8b9e25c9,1704047753,4823430630371055920
+8f2c65c6-ad2b-863d-cc4a-79c72beba04c,172433756,11964594874116568840
+28795ca2-8d05-d15b-7d63-37a1470558d0,1341285724,18334715112905996661
+595b5982-181d-df14-f45c-2679e06145b3,1717770701,8713430256776663912
+b875bbe1-8166-4543-7b26-be3d592cc72d,1185698938,18179104706872596761
+96d5438c-0418-fb45-eb6a-0150d97615d2,399986833,10409744195506531932
+5f58d2e1-500b-8910-4a61-21a7919082ab,3116595904,14729195037977194166
+0cf22b0e-e8b5-8e11-41b6-42b4dca1ff3c,3721766756,2156106527769074891
+f6b3310b-7789-7c04-7613-af3abed5857e,3830186466,11222776872117050210
+db55976b-a2fe-abd0-59ea-022769da3c01,3144804041,16452596448200653076
+23446e80-14f4-3c96-0e8a-f92b3c696526,2136460115,3713322425587771985
+a0969a7e-97e1-f692-1c37-36d9e3a89c65,1119974961,16835467606489735763
+d67717c6-66c5-a232-3fca-165ae3d6c8c2,2489743841,4759602819726902814
+4268f580-c55a-0a63-5760-c2b70335bc28,2399177322,16477336959641875503
+47b37343-de20-8eb0-f413-33971417a502,1988249325,4684425467462794260
+a364fcd9-f60f-b8bd-08dc-18aad53aea42,1862879764,14978805988103029330
+712a1729-78b7-1b3d-66cd-deaace296466,2823885243,5503769246546094233
+df8977d7-2b36-c3ac-5cd0-8c7c471161b8,1310577876,13345774899395710058
+cf742c9f-5951-938a-3fdc-d9ce7a05d16f,1327923880,14863966472943863763
+df27094b-de5e-1e80-96e4-5be6bdbf940d,3226015301,14408557901607407379
+e436de7d-cd34-63cc-8f2c-1efcb89a0775,3174495972,1032382424328644990
+4b9642b4-4cb7-8ddb-76bf-16341e369522,2378501796,11189104247976175748
+62281e12-cf88-6c44-b134-0c68fc777d94,2633552080,9299948028473634252
+c80dabf1-c3b6-4efe-e458-d63ad3f8974d,3717163729,5496772221669817274
+af8750e5-b199-1efc-5ac1-4571fd6a6817,62346085,13506798157504011494
+a5df957e-93b0-40a9-d373-b7b3b0983119,1393322892,14837661476425403560
+d5853021-fb35-f631-6a46-a638ed7da59a,2109589541,10301096594211128748
+feceda20-a508-0e22-c335-229ddd05eb88,1010053396,17801720967082851455
+e7a4ff2e-e295-7fb4-11d9-f6a0b969716f,4144260133,6171527552426618130
+ee24d39a-1bda-e878-b65a-9f7f640cb2c5,3914023407,8651437713609818341
+8a8a7301-5ea0-48d1-3128-d4e6c55e95f9,3247744253,10251329231271989332
+4b68883b-1ba3-7e23-a5ec-7470d31b272c,1277692626,9608821595610011185
+f34d0903-48fa-1341-0f4e-95654459fe48,50006593,11391469152216691214
+eefd1529-89a8-07ba-63b1-c5a7ed4d3784,3631945771,6745707183745130411
+d29ae582-ab41-c7a7-43c1-3e70cf299221,3231943685,8118466900827890701
+895878f9-938b-9d24-f561-16b389da050b,1215653189,11349621385899222113
+ed527da6-03f5-9529-ca7f-2c517e272bc4,3932821305,9722482710631823206
+b163db0d-e5a5-e029-8731-ddd57c8197e9,3692588693,4235884077091569045
+d546fc82-ee44-e67c-4032-ab5ae32253f3,117222528,10014294197225282717
+161b1fd7-9a94-4335-b2e1-65721b85b302,613303184,4646842218255882961
+0b9650a9-8e68-7dae-cb11-bcd786ce29b2,2275110150,13438729204419973637
+9b1a643e-bab9-39e0-4b7a-495fd493fee7,3923551640,11322565321344982290
+84b018a0-5070-58af-9c1b-8c424c9a6383,3070549878,5133197490145764476
+3ffcf11f-6d91-e623-7259-2df797ffdc77,780172325,1557702045839113364
+e0d7f4d7-169a-8f32-81db-2ef6f1f71211,1743005567,7507354618996877319
+e8a65412-1f67-b0bd-32b5-7dbe343ce82f,1970147565,1018543073887893807
+c8305300-777a-f74b-023b-81d8f1a2f7ae,3667706181,11268232769920672208
+39360606-c23c-9c28-c521-fef22b20e342,2219167614,14772075218896487443
+663861b3-1a69-6a34-9ea1-3977ea4f2377,1580329672,5111151404589553592
+a461b7f1-9866-d750-a1ef-fc7dbbed109c,2662399318,4464106994672007018
+95e04b54-48a7-43c4-af1a-16e07d293c29,4291755027,16233889163591673699
+1d104a5e-e348-0340-e436-428bf9ff4fbf,3453220944,11802393484859018564
+ebc3032d-40f0-8b54-adbf-2221de703a35,184553551,14681001315448136975
+2ceebd9b-a511-91ee-ae0f-f456ef47b579,3044927405,9559325730720794976
+623850da-404d-c665-e569-694dd3ef5be2,3268628036,5691537889935074099
+a9f98fa6-8c12-0f51-3a72-a409e406eab9,1610084750,330616846234601973
+407b58d3-9f9b-dd69-300f-305c96fbf4bf,3389398559,14750454827747118867
+192c2333-5c43-b56a-c6ac-362829670530,3795755448,9429862322643721829
+4a2a09f3-ad3c-556c-d7d8-43465c309779,1622583200,3251813015589041363
+6c331bb8-d472-15dc-4bc3-3afd1c7a6ca3,1389521898,10338067332300305434
+5d7302ff-4f4b-3a28-4d8d-46a03d4b3ff1,3192421879,10759887710062609731
+c3990db6-6443-72d1-b152-e2860cf8a51e,3911555620,11821450691948141720
+70c95e7d-8eff-d9bc-2dda-642f8e4626d4,1659316542,1801583299460480320
+9df04733-d6ba-25bd-26da-71bf069b206a,2788243765,7021712615723262536
+d5398a1f-87cd-3dbe-2c68-4d40878bf8bc,801544867,4218529088530584255
+0cf93e3d-f957-8f21-41da-ea9fb191cf3a,848123110,4768529503230410506
+d02a4f6d-480a-d901-b0e5-d423449739e1,1558815123,12375385801930071280
+b763fd83-2b6a-d7cb-6549-4403dcc43ef0,403595900,5365746727940484329
+6f1d6bf5-ad7f-542c-817c-2261dd48cb31,3058097127,3010499185338566775
+c9fa0b5e-5cdd-1f76-a751-a6e177825e42,48903553,5924954931448428569
+b6b51181-89c4-440b-bf22-01c8f7021f28,1859924737,7103247472518163305
+a7b0f649-9f96-7c4e-025c-a22e68fee793,3772830398,3483674210380998132
+0085c03d-8209-7d0e-5105-c63e68b0f301,259268220,13742839468356685062
+d796c68f-f0f9-6a07-9efc-4dae993d48a3,970382599,13326391733288683962
+0049ae7a-024a-6834-d294-ff00bbf5042a,2300011920,17458256113800850601
+3cfa574e-379d-9eef-f90e-722e0b3c55c4,1574879529,17041240383944731593
+524ac714-b218-1166-17b7-992647ee2c47,1399771349,16488914979598544038
+20f15a60-7b73-f924-8de7-f4638bf9d6b6,3893309643,13131186410699357166
+3fea9af1-a1ce-1330-a4b6-2947c2f3c85b,1583906835,2826370429581255928
+0cf4cbc3-9bfb-7b72-7eab-c2d602e05256,2139893122,12055762994728153428
+2f5ab3de-e897-ed6b-eb51-fd0f7fae5878,2409706981,11045440039597622388
+340496ae-4e97-cfcc-b174-5451692e909c,1440458625,16299933979583881811
+edcae274-2069-95d3-fc69-86a338788b79,749128267,2947644009728322250
+649d49e3-4497-2de8-74a9-563797141c68,817888959,14063949547991069361
+92e55070-db78-4724-b8b9-5ed90c528f8c,2025822906,13753874361885360694
+a792f26f-ec33-e553-d63b-d1cbbe4b4c18,613360468,9780011569134293407
+36a92872-65eb-13e8-7e8b-bcb1e8fc1717,3456220729,16480180466446419808
+c16817a7-549a-07cd-73e0-666e6b535768,1193483658,10434115832281398698
+4e256ce1-6dbf-28ea-d26a-76916e384509,297927733,6716866667305499251
+ede96305-aa0e-1605-9c89-0e14272f8a9c,3594191596,5778344638467891996
+e306512b-71d2-2544-986a-d44e3a7cc0cb,2756856265,11338187496822789574
+91596812-6577-271b-8295-d71dc9cce797,2001062818,5452189438697031188
+263a5bf6-f4c9-468a-f7e4-932135f162a9,1778603439,5736526225666524619
+415f0586-d06b-f759-6dc2-58f07f21e95a,3404831349,15130549451003287114
+c0895fa1-8b82-d881-b5c9-6cf68ab7d7e1,2519257369,9237673774919067753
+d320aaf9-79e0-578a-ed27-2eab5375d110,2852495354,14412905519751161360
+e354398e-b192-a615-8a3e-db2e14487a38,510850341,11454906542816101540
+d948e213-901f-19b0-0bf1-7ffbcc7ae674,858974311,5811085207868450657
+aa5c8e5a-5296-10f2-9a49-102058f0bfeb,4197219096,4526432935683999229
+e4dd485d-b783-f0aa-64a9-c890adff7fde,3741391567,8883052007396641449
+295cadf2-12e3-36b3-dddb-f0cb113c879b,2054769193,3183820817472942221
+5492efcb-2913-200f-e63f-47eb9688037e,2942635973,17593437834775225109
+e31d70f0-f003-82aa-13da-c21055a389b2,1382853938,3938849532421052774
+f976e203-0643-cd2e-c1b9-1f03f585ba3c,3766861811,8242589911550173851
+4feedc31-bfdd-3f45-aab6-ed80d04da62a,2300422303,15435191351157902507
+cf1aabf9-7e65-49f9-e302-7bede54bb850,2208081033,3276220292490240347
+3dbea4d3-8a81-7b08-aa2e-5f60a5536d7c,3823117110,8077625340889276765
+ab2c96da-50d2-f22e-ff7f-4e482e9d70e8,3842892370,4943368623037068328
+37d8f65f-0eef-6f4d-bc74-56a215c8188e,877667001,3393520583370580678
+f06360ef-c228-f479-a5c9-eece3df6555f,1472159166,8968545645787475127
+e170d0e5-99af-9da2-236d-e43ba690965d,3638010420,11355004844727373287
+24bbf9f3-958a-12dc-8ed0-1be5307782cf,946389986,712261416286881873
+47dbb7f0-53af-ee2f-34d5-c3177f161369,3119103838,4508768740431883028
+a917333b-e600-df66-669e-0b3ea460d17a,2714143338,9306117605043482840
+287c0add-e74f-c083-fd1d-392f13b6e42b,605632690,6161045217261205725
+f50c1c43-5866-c9ba-0f89-b14e821621fc,3605199947,11832026205798656831
+2d5cad4d-90b0-e7a0-2202-d5e39573bdef,2567382244,14172869975354816962
+e65e8c33-5ab2-f274-b739-c3b0e65976cd,4225054179,2226312960022570366
+865ce1bf-4c29-1e76-9c11-e7f3fbf7117a,181116578,14929979691907988501
+01cc4657-8d4d-7ca7-bae7-2a414f10997e,3756229798,12890350804448557943
+980cf92b-72ea-8e90-b912-496adb43736c,1785242919,9269039611166850522
+9934bd46-e99d-dea2-70ae-8a6d3b2b9053,399802544,15889623360290194825
+a5d12223-8f68-6f25-cbe2-2a234023be93,660841820,4793606238051605623
+f7b99a44-6c2a-7583-6d82-2847d66ac954,99528693,15183930558500150025
+5e318240-9161-c6d1-1ffb-fa13c2cad6ea,2445800818,12947658119018218181
+a87b25d3-d17d-401c-4aa6-5c2063e79513,2732284086,7969227235472520338
+c5f4421d-02d2-11a4-add1-9e5cf96f4b08,2140811294,10628533142020311834
+7b0d5396-70b9-d44c-eba2-c7e235821133,3583855122,6681704858690612831
+55d32df8-0300-49fe-c7e2-58c15e19e0b9,1458085156,5224604140324309633
+a5af4fec-5907-e309-809f-8f5f76b58680,2342205003,5393379037874979236
+be032a64-1d2b-a4c5-1309-f9ee261db626,3720201292,18251984343951561144
+3d615d01-5d21-13a7-7cf1-d0fffa74b5ba,1654314472,14349731126155765201
+4d7f0505-f245-e3a6-b993-2e351faeede5,1255393592,1174541149226875191
+dd39b26c-5690-31fa-a32c-48d7b04e6be8,202056451,7611662927895839128
+f7c97f1d-779a-bf76-6abd-d5fd988c233c,739289059,273391979672372483
+0fed81f6-12c9-59f2-29e0-b5f1d9f5e16a,2217410324,8762298955494298794
+a2ddb11b-3585-7284-2980-45da71adbde7,2025122506,7264512467970180474
+52e9f03c-0de6-3a1d-6aa2-acd56dcf46d4,3246200042,8441417640051559285
+ae64979f-4bf3-f7d6-a53f-cc4cacbec183,3142336593,8642251592447327158
+7654b84d-39d6-303f-1544-a5a5ed7b8e43,3026904939,16480606002654662769
+c96f91dc-8e57-7d64-61e8-f128205c5a20,2748087741,10261207282528728727
+6bbb04f4-4255-1031-6d68-5a8c478b7069,1278321892,15022632305969796916
+c8c36b55-ec69-e5ec-1780-fe88c41949b3,1890642580,10767723568953950924
+28b9174a-b2d0-60a8-c379-7f20765db7d0,1313878560,1706447005248702193
+db880d17-c229-66a6-7f38-dc9ada33b424,156074250,2784029546379002134
+8d199355-7eb0-c3de-27c0-64cddd073431,2720018523,6316086786233097707
+35ab478c-8def-c0e4-1b18-9d008f2638ce,870706958,15476210531759419409
+626c18e7-715c-bae4-5863-6c9ca5a767a5,91160573,12518594560600286488
+06df32b2-94b1-dd2a-4a30-bfda54f59e71,3768945170,13737475422865750416
+280e72f9-9b89-2b80-2960-de1f210c683c,2855489477,13968210338660266535
+ef826149-4e33-3955-d6a1-66eaf9eb658c,3608719761,11629929490369689725
+6ca0a0ca-ca71-01c2-3de2-8df60aa4a579,366443856,14145199572563120850
+570762d3-3cca-ac62-1ca0-a6e3433f2a95,2391662415,16940056545813394094
+5a47d28e-a5c1-42f6-0e5d-fdee65f13d70,1123973651,16754436613269302842
+40c73719-0029-e247-d6cf-e9ad7d98684c,3373285880,2804968884465561964
+4c1d99cd-2b59-daee-b8b3-60880f313cab,1192390042,6411000444664389974
+6d7a809e-3d94-9c53-0e02-fb6043f67aad,3673599946,7863372219558506166
+4bbd4380-1643-9019-ed5d-e7e18d6dd253,620805157,1583950936457785913
+14cd141d-b9c1-02aa-a4cb-f2e21a4a212a,3866937235,10041743541704646848
+fa754df6-30a3-fe92-9cd0-8075ccb4b486,3500438487,4926123568961971343
+51cf0fbd-58e3-c29b-3bb3-4f9f4e7199f0,3288404298,10807933903442251884
+5961126d-0d28-52be-0997-5db55738f5b1,3442373686,10486760706668367347
+ec82cccc-10e0-6d1b-e412-2116cd3473b2,195708786,11368090867157607867
+13a523ba-d32e-af29-f4de-933e1a5b27f9,1164513492,985605002202759020
+59d6e014-a3ff-0268-beb3-a11f7fbcd13c,3339316145,16697638104059273495
+6315e82c-c0fe-a38c-f4e3-95f07da0fd4e,2855567943,9250228969326281196
+0caf2fff-4504-2491-e608-28ea20eb7e96,936703696,12817836063872630872
+5cf17464-8856-c291-965a-0eae22932807,670827396,5142961034560307534
+3beeeee9-3f1f-9625-bb20-214a66c38dde,1626429837,15537890483295738715
+44a3ef4b-fcf6-ea79-e81f-97fb79719cbb,2841442822,10157022043754864304
+fe878fa3-8d52-957a-8b90-46a0e9c62ee8,4026432039,9447365171322595737
+74f1bdd0-3da2-80c5-f493-10d8f4a0451c,2078324582,10640714878454716664
+9a5d33ba-1e1e-3ac0-6a80-458ec995afc9,804519292,17973903188562032982
+f4cb9c29-1932-88f6-08c7-d49a244db50c,2069353567,5010362979553889113
+2d875aaf-1b69-c318-9430-88e0d1e80fcc,1602975696,10071448927809086179
+38b2f945-6b27-ecc6-4643-bf4acb4dbf9f,3916650066,12531828614488859587
+cf6139ee-180a-904f-fc65-73b4e7fd650a,59584418,16664512270542343634
+48ebd0f8-f693-27d9-b29a-d47401ec0142,3764812420,11992858470366675349
+b7e52264-3f2d-9797-6f88-9079718da120,1443877301,14534090868628314681
+7e4a7f71-4ac3-ac57-d990-194874479b7e,1677936046,14269005800397143289
+86d16c29-cb1e-5a4d-8b9f-29e2cad1baf6,2404065326,9450522738778207394
+84891a4e-3897-1d15-e7fd-e8983d30eb87,1587098166,10275744089881196561
+68eb1616-646a-da25-7bb4-24973f444181,3654549789,8029247589415044984
+b6b5532c-9869-9525-18a5-bcad61e0173c,790611408,9704255401412539197
+7da7daf1-8a9a-ed3d-2161-67b425791907,1257170510,14175075229899913606
+f5553d59-49f8-1b8b-94c4-241b1ff3b1de,3129829691,6443869834175415799
+3a757509-3013-d244-e59a-09811cac5626,421381475,7403067984365892214
+3eef3806-0d56-bcfd-1b7b-a8bd2b2c9370,1405294929,1671359643942463458
+56b2ebb9-a9d9-c917-b524-4e17bd5dc316,464335030,7065248048894571237
+55cb03c1-4a69-27c5-a3e1-bf1f0f92705c,2568996623,8375450943493330128
+033dd6e0-ba36-60fb-5955-32541405a948,2500866189,3921632690993689772
+d3c05d8f-662e-c221-40eb-3b3079cb2388,1942699439,5655682021269012107
+6635462f-a851-6c12-c5d6-32b894d7a52c,3741795139,6320223989296380106
+e3799895-aacf-a59b-33c0-2b97af59c9cd,1381082664,2023913712202944040
+76d9976b-caad-e7be-f6b4-dedeaf1bcfea,2871938206,9613840856161842803
+7104d3c0-0d3b-08d6-3e85-f0a591b41888,2323537569,2601188579209177042
+2a3af307-0de0-fb0e-6fd9-7ebe497de43a,226100527,17484708211771216646
+a29bd9dd-6d6e-1bed-ebab-a5cc95d88679,1061520621,10902691507495873479
+0634f592-2033-c2cc-f330-5831ae4a0114,3384464777,11460186776227327620
+244072f7-4c19-6a1b-2d86-9376e2c4bc82,559972241,4069523010488533130
+17f1b663-76af-7743-ec1a-e9e40c850313,618116208,16456396815888302696
+237c0546-5c1e-4747-06dd-37482cefcc13,2714939175,7415000391044376108
+238fd7a3-010c-b2fc-ea80-c744c1cc2847,2811877861,14890913062928190412
+1a194d42-78c4-3dcf-f043-98de75481d6a,1789526086,510674361647012562
+264d2821-5260-d518-a030-05b3369f7e65,837601649,10623307655934334991
+add8bad8-0902-e492-194a-abc411626a37,3483573879,14712823453614416605
+6b664fae-d2a3-236a-3694-6dd3b81b1c03,115627979,2800218118586607578
+edd3b3cd-26a5-6b0b-c334-796b78ae04d0,1967451319,6344925514276656304
+2bb6eeb7-5bc7-2857-f479-c821977ee640,3387267850,6435708468004845181
+84928adc-472e-f52a-6b1b-faada6dab0af,3279327093,3295854176081517781
+3cf9dd71-74fd-c909-14c7-792cd0884393,1177490255,4240853651657261873
+1b8bc488-8aab-2020-2380-e104bacc4e0d,4254176458,16723044996247359192
+bcc11599-273f-2505-f0bf-53df9ef962db,1594953331,7629249294435177058
+7e2ecc43-93d8-e4a4-15ee-69811fdc9d02,3508366627,4277781273530990427
+38890a22-33c3-3b41-e34d-bf049fd62009,956076361,4039868638675589900
+e14f23dc-3be6-9a4d-3275-3b311726ad91,2139410054,17318488086739514359
+cd8b141b-b0aa-f284-3f60-696405ffa290,2731436384,14852373004286341165
+d6078fb0-095f-5ad4-cfb3-6910c1b0d08d,2035902554,1107740344569127895
+44accc29-d76f-82c9-6151-08c8c95a22b8,1247088001,11182537846383869900
+d2f7ac29-67cf-f1be-96d6-b774dd18987f,3879412984,15767253340410771303
+52643ebb-710a-7004-934b-24c95be1f3a8,3938588124,1252655129854620752
+9bd22262-7f13-2d77-296c-56c243fefe6e,3303275063,7097494970065671278
+c5504a10-a1fb-12d1-e964-d1690c7897df,3262356903,14858581536154264987
+e7dce12d-aa19-8ce2-ac37-377ae5e480c4,501650627,13304227025063345812
+70ba97bc-6817-2c1a-3ab1-2b4158826d7d,2454147792,6469509677929556300
+ffba56a2-7003-e415-78e0-bfee56e7dd6d,1173798686,7602456261845908648
+35217a81-5980-d5f9-f044-2b2275f911df,2659740981,7806068623568717375
+28d29877-6210-d20f-ad3d-53c6f2ba8137,3568239414,13756110697089430555
+706e89ad-aeac-4819-b632-eed74995549f,86262150,16137402811792991762
+b922aebf-d81a-e49a-b5b1-77c2d52b0790,305698554,2161258785492246612
+d3d037b4-9548-e5c8-b0d5-a5dfe85e21cb,759970538,3080136527370774867
+51fef384-505e-33bc-4c19-3078f416c67c,2676405673,15833854602981244379
+1b15ab56-288f-5ac0-3b46-97896f1f7bb7,1997813290,14123422855388607348
+62f2aad2-33b7-b71c-59c5-a92ff9fb844f,4086503070,8981082703036380175
+ca76c16b-f49d-caca-7987-e583b7be38ee,1098025315,363215808911545477
+b8272a9a-442c-4f8f-29f7-8f49fc3f7110,524335307,7751925957945713128
+48922fa3-612b-3236-e0d7-b076b2a2fce1,9816501,9358885756210893929
+29bb1d0a-d6b1-7cad-1189-18bf905a9228,2928521653,13256258413322899801
+46e8b230-bc93-c93e-1247-a2151d0f83c5,4285313364,135727539764447711
+0061bb2a-8a12-5fa1-ae2f-e3100abe6a8d,3889641180,17854293199585620119
+6481d86f-d143-76a8-6148-b951a92a11a1,2006407598,749050651384697407
+89b9e78f-ea46-2b5c-4f6e-3aeacae13161,2579651734,1779868381478012609
+6536e6db-7ea5-76ff-16c6-ed8dcef0fd38,3133322273,10018495575616560007
+a526cb0e-9dab-a320-260b-d434eab2d16a,469416481,4340673718840910343
+af88d19a-a3eb-30db-8fcb-5734b903acb9,2150026903,11003697101146379909
+1b492ffc-bad4-9571-c265-a3ec887edb20,3510702693,15965714939891909561
+2c927528-6986-0209-55e1-2c28976dc7f4,2488683925,14841660958584083617
+2cfad9ce-6353-e72d-37ea-e24b27b3156f,2110121991,2619210335648035081
+a8743b9a-0898-8a96-0781-7546c9ad034e,794796530,16613777912123311908
+dc7b40b4-ee78-25ff-cea7-c39ee2eb1ac5,705513805,4299072244906920824
+7edb3df9-7cf6-a27e-94c2-56efcc9cd89f,1055054659,4371349583222014363
+46e2bd4b-5e02-b18d-7407-4912238a4312,375115367,11105407736460263397
+15527f84-02b9-3bff-0eae-ed001fab71a1,3498988354,12586576534074341500
+ba87699a-5b65-4d93-9a9c-55a29a685656,4206398407,9357359355019998267
+2e820b9b-d06e-545b-0d8d-d7ad4850155d,1888346263,1394271224292758889
+7ea9b527-f601-7dbf-137f-16f56140b96c,4203193156,9100431387268044805
+c9f504c8-4b0e-b63a-4d30-eeb200fc2bc2,1974362080,15258028004143266793
+f9dc3727-8c79-2737-ed08-9d43c53d9a7b,384659509,10836838316254366563
+802a9ca6-4e7b-50b5-56b2-b83e63193149,2796474212,10245732773586360322
+389e9587-4588-3271-603d-3cb36a55914c,3346153682,3993651743195672681
+9aced0ce-cb4c-ef48-fd53-93352f8caab1,3339568943,11422929619251033258
+1a2e70bb-2ea9-cac0-d664-a3cb4268697d,851083923,3680956245231201233
+af74d97a-e5c1-bd30-10e5-0334275d7435,2362039428,11609217262429294478
+462ba9cb-4ef8-f1d4-5c75-972a59a483b6,1313351466,4011708785571184253
+e70feeb3-232a-9a02-c85a-371fbf47022e,844768699,9433463158651226095
+566a8fc2-2198-b27f-41e2-58d33631ac06,3509462788,10850776557321296965
+fa5686a4-aa00-a7c3-6e57-0bd898d321fe,3216287953,18194395444882260129
+4f1f89a5-65f5-1267-a3cc-4aa9b4af644a,54471570,18349904298650002657
+ddbdae3a-2a58-e451-eb5c-80f7cd423d26,1221821601,17081398087656363778
+03b9de1e-a177-9746-2a1b-b286e8f4e3c4,1898506354,6090668688431068186
+b6656129-1fa5-66b9-7784-033285e8e0a1,927535754,13308857924100841985
+cb0bde43-61ca-5ec4-e3ab-a3e0719c4d7e,1959411128,18444749545246482705
+26112d7a-ed07-419a-0381-8d0156947b6c,2368378473,12686854894716664478
+56df68b1-d601-f82c-37d5-21a87a17b15f,2080609961,2824043498400301012
+db42f932-8298-c2c9-b4a7-e9367d9bc800,2535028031,166738212619089922
+d11d00aa-e062-79a8-e8c6-db42a4b1f431,2662372144,6752074316617515238
+f3614bb5-89b1-b4dc-0fd9-1be0909a0bca,122695103,4814082980598324902
+13b096b3-171a-fa34-9d0a-94d331aae0d5,1260872580,9209566414213916806
+6a691144-3217-e358-c977-f952ade5b91a,590445229,7948898633812232821
+5ee00d3f-bac3-ca81-ec02-cae659ea02ce,3803337823,10060183138308542851
+016bc158-8b79-9fcc-5bd0-e667da68fd49,2218087379,8850794889598141296
+9669a17b-d0f7-f84f-8e9d-1e6c1e4d2a6f,797995955,14817189805496821754
+027db4c9-182c-9fef-2a0c-59b8d93aa46c,3190694745,3115589105974515881
+0eadd00d-c59b-719e-2be7-536bdbf7a3f4,1039671553,16131768079317445551
+35c74d28-a4ee-a802-6377-1ca4b2c3ec34,127746536,4365014240237315792
+7fc4dc94-c4dd-4e20-74b0-b8277216e6a9,4275322470,5663920013158384092
+197f7239-b4fb-6034-f356-f57705871c9a,4183369520,11182530030338106782
+d1aed643-c769-6ee8-ef60-aea6d22bc8f6,2671118715,6980538858427602573
+9e910af8-def1-7ec8-2807-fbaa97fb5783,2820291366,16889462436772439910
+77d65a6d-a4a2-652d-fa0a-2c66fa57d6a5,4125605825,12158641061001078339
+73793950-6a18-77a6-334e-1ea0b85a1866,4062482727,4734649370984283071
+4b66e373-472c-2aed-fddf-1c08c813e174,2650573680,9982961268755613237
+f9f13adc-686a-2ce0-e87f-ae9abd7fc8cd,3434762197,6968683347266144319
+2c9b1db9-7aa3-3c0c-b3d0-baa79c88208c,2414584926,9206154010519957042
+a7f928c1-6acc-b708-3dcd-d9f1cac7ad46,4073752380,17898502436646037632
+e02d4656-e5f5-21f2-fb0c-416c8f4c3de7,1844787200,616839197031909022
+f8b8c548-35aa-1bda-bd4a-958e5d46d15b,3200400404,15810431304232750042
+3a54fcd4-3c56-34c4-4ae9-d62d03e6d8b6,2658728674,290254377483337456
+80277682-eed8-233b-1831-9b1bfd25cd82,3417973692,11088215471068686881
+0aea408d-5006-ad31-3823-405703c3b96b,1291085011,18411680749249839290
+b3272781-ec33-9646-9ebd-dda092d84315,3846092731,12919479403465654743
+59f716a1-f252-74c4-e165-52f0761ffd4d,3989318766,1181019064212274479
+49414749-ac81-53ae-d93a-58da30aeb974,548496231,3095530635314762726
+46a3c0eb-14dc-3887-bd36-5a114ea0c351,854023632,8971256163834964336
+dccbcb1e-05ae-12c6-c111-4a477de04607,491486929,4143227183774937315
+aa4ddd3d-edc7-e950-68d4-9766b9ea68fd,2101530934,6716941358587677633
+47073ab2-4c8f-ba2b-04be-742804023212,3483772615,12047403502202988102
+59b7b1f0-d501-74b3-5736-b460215da780,1371243805,15189362688126316814
+d191fe8e-904c-c165-421c-6091ccc29461,423779166,18231888537835927311
+7561a460-cc44-13ad-f8d2-b9538a58214f,2719189076,15082591619436215158
+e10927a8-54a2-7d2e-69bb-de1345b3ac13,3697138807,12815976585756828746
+237a7b85-d0ee-191a-c212-269fec6781fd,4144464072,16172257919956431201
+79e9ba4d-11ae-ee15-05de-3d80e3e7d66c,2713752898,16790936482251864810
+914a853c-2c8c-9a2a-4332-7e07b6f83bae,1770966584,17051215843642260680
+f912c7e4-3636-01be-6e9e-54b747c4a4ad,1095592447,18003339741854116945
+57f9cefd-18f3-cc17-923c-4d2aef99a6fe,2856045034,1459473024043172511
+3d72c87b-abac-8ce6-74c0-761672588f7b,574385344,9035036181242244169
+825c3e12-c045-722a-4ee8-a62cd73eabfd,1180215103,17306341494235485865
+0af642fe-0340-17fa-930d-3b018fdf9494,2842919393,3431051239970819523
+a494b6ea-0510-bd92-9f3b-e3de797c81de,2208303454,8570186636328156541
+ed9a1738-99e3-e5ce-fc73-3884a85307c0,3499333675,755120426249002333
+31768650-0fe0-7cae-c373-3f753abcc5b3,3674847590,13369862215634329844
+fc3e32cd-80d8-5b33-0010-c0d4ec0c0426,2128080444,109919926915461429
+ca2372e9-c970-0245-5ef2-41f9fcc161a7,1483452144,12254994941119669563
+d57c417a-b8ac-574f-0d00-b378b5c782e7,3413119356,16422922345767439055
+38a033fb-fafa-d5d4-65eb-b7323c912d93,4059858554,8705059701870476185
+ac162dd7-c4a0-0bd5-7535-0f09fdce3755,2992711388,400964026501133947
+fd4e5f9f-cb95-441c-5607-1f8546b022d1,714359784,14242260072515986708
+f952d682-ca54-7722-f239-05df61f5588b,1257287651,173678515922359124
+3a42456d-0722-be59-a8c7-a7ba5695ba0c,2311138501,4980260152055311068
+46d38845-d1d6-8301-938d-94b9363f8699,1797237117,17400585799194168774
+b13f567b-17ec-3ab0-7808-ce903a154798,4061516603,7056709166727627035
+47d1359b-5b34-2948-7dd6-e123db4430ee,2130561504,13706943710157674847
+acb0286c-ccbe-f78e-5c85-75dc04db716f,2658521385,13876653724269013108
+37e39962-0258-0cbd-65f7-15632fc51534,2300477785,8472700908758259712
+1734f572-242e-cd78-217b-2ccf994ff19e,491493339,2376654081915090982
+a68bcf32-6a4d-f7cd-b3f0-24fead6d6b5d,1914217702,3463814291267834406
+2ee53b77-b39c-1a2b-874e-0a495fe0c023,2154627070,8478366244671126914
+b5264ba1-e6fe-ea48-62b0-14a08b6ab95f,3044765495,3345802990193199254
+153c45a2-13ce-cbdd-92f5-b6aa410a902b,2546800868,11873668165897273600
+cb5b40df-1af6-8dd6-dc7c-d82d9e63c3da,3229344575,18384283545128855291
+a7cdf585-a502-475c-00d4-d4cec184fd08,599602296,2620600896786101476
+61e6718c-fad5-9734-2504-693ee53e9c8a,3237564200,607506005221281619
+1b87fbcf-74a1-2ccb-d09e-016fb9a04eb3,3947185896,5067290398409165783
+c5d6624d-28bc-7e85-2937-8f15b6c41a09,111271432,13625510658510589499
+d56b094f-218a-a72d-778d-cc21298c9688,4098612466,8633221911448704740
+dcbf3f16-1c40-6404-a64a-3acf238a2d79,33806719,2320494339458068838
+62a90a70-71e1-998a-9e39-e2b72f02f117,2828967616,13855770096042294371
+b857f030-a1a7-3b1d-9d6b-c40e516511ec,3752497718,4767911574283927910
+ae116c0e-9901-d916-e456-efc7b66cd91f,3340972369,6561344217257381115
+0bc45767-227e-188c-139e-01981cab6f7c,3696444518,157348133688853280
+10cb9e76-7b0b-9201-44bf-4229e36b18bb,2835796987,13655198509019633155
+a198a0c9-f32c-e79b-5ef1-2d2d1b2655d5,2932402642,2704612442778683785
+c8b1c620-2408-92eb-a62f-51acdc3fa763,1732642923,15457998921371341806
+665540c1-fd32-54b3-790b-fd36338a14d2,1065719659,713812946274591527
+795ffba8-b83a-4572-b2c8-36b10cea3190,352298282,11181748347401553011
+86c60f64-4764-d108-1322-c60c7fa4a530,3249124838,15922542783328208483
+703adfd5-555b-20be-016f-0cfa3603ffd7,4024237660,7184578628969112553
+8cf5b440-5f32-a07b-c0aa-65648daa2d88,3445918699,10010742113096419434
+4a6ee0e9-d7e4-3f7d-1de2-eb9cdb2b70fa,4228275759,13144607937861092414
+61394773-d188-9556-1ae8-a9cd8ac209d7,1527313908,14158134366172436824
+391e50dc-87f4-eddb-6537-10e5ef558853,1923712895,9960719397666164041
+f133061e-ccc8-da86-7f0b-b6b96bdf1f76,2776508545,9676923578457056917
+6509a045-fea4-4698-ed2f-f4afe8ae0825,388532921,1320512914799590122
+90be9fd1-84e0-b164-4298-c79fb2617551,3135528322,13113018616822228184
+e2f766fe-988d-b2a0-2f14-c263850cf714,3839439270,10025138520640759851
+c0a42045-acfa-e0a3-4d07-64e90e0cf5bf,433277721,2627760235024389816
+566a513f-220e-2459-0cdd-e2686f964e6c,2102631967,12240088860965903954
+d85adc00-03e2-ead2-846f-d6de27dbedfb,581683501,10275952887265932050
+af577da5-a43e-7644-95cc-cb2bc98198f8,2858215805,6596338317035230604
+771562d6-c09d-6e98-5a38-6372a555589e,2085950534,13140879430387259619
+5f96b5bc-1ebe-c6e8-7647-f6e18038bb0e,3061668346,16936681583269163200
+41b37228-93b0-cbdf-e36d-cd097d01c856,2121633665,13778177308027924604
+30e2bab2-68a7-d11f-6289-469bb271ab5d,2777321895,1347323204974921894
+9bc37e39-eef5-072c-f2ca-556ad09a5d31,3421086736,16671976148037074605
+fe739adf-3594-b438-35aa-26e735cd69b5,176628685,16707676672565432612
+c34d1f45-13a2-1e7d-652d-a0698e7798f8,2829469602,2660075973735721709
+48e1111e-02df-18e2-1c56-adea34298511,3647298523,11988770234076771872
+28098d31-b8c0-3d32-7b45-0cda19b4917c,2852385494,5743259882273757718
+2e2eae3d-c522-b2bc-ab6e-453b9ac1431e,287673151,5750605062849264249
+c967e855-f812-4dfc-3930-19c428ff7b11,2973824870,9990070766483221397
+3c620d58-a164-e3a3-eb23-3b6bfca7db44,4285111413,7831236826310395749
+19f74164-2d96-67e9-72e7-dc9eb967ee6e,4152583029,6750748795929136323
+f511db1d-bafb-2169-c9b6-d1ff7510214d,3897343676,4413350447594215360
+cf3bd468-aad3-0a8a-23d3-5858f720bd8f,2774734130,4645667354447511716
+db850d87-7507-3687-c7cc-a9e4f2da6a61,3401483424,5583228778860494416
+606ad624-a39b-39fb-4d97-13813ad1eeab,4245169990,12727519460979107507
+a11a2f53-edd6-14ab-dfe6-578ef86141db,3946630640,2419487557133344947
+a4583180-40a5-74f0-bf36-cabfbc8b92f1,4131361493,11398512380678858343
+6aa2c56d-ca75-a59a-ebb4-951fca60d906,2371820297,17109299678946375082
+317e9b19-fd8c-a2e8-b68b-f92b541b1458,3021269945,16450398516542946133
+acd3a420-4dab-ab37-1f67-5e28de3373d1,2599055844,15471660939983537438
+27af65f8-97fb-3efb-25fe-0466d646df11,577746406,13615234315828227647
+cabe4e96-2f27-3bb6-7eaf-3bef2b7a8090,1699441444,13085587013749271974
+2cb9d20a-cb51-081f-4382-2c06bde34efb,4265049521,14311221802780342038
+b11dc78f-656a-eb78-6294-70fdc8fe49c7,1584164402,5501558804685819651
+62048071-3fba-91c3-1e79-2b425c900c76,1982651263,564679798476427311
+8ad0d1f3-47dc-9a5e-7e41-e17b25b73586,1165109721,6944199694080434702
+cd719c0c-a0c0-00dc-2cdc-6ab9b89bcfdf,3818036946,16814146022383848225
+d6b491f3-8dfc-5736-5a0b-404963bda3d1,2499713835,7373017069623591418
+639f513c-2a5b-ff50-3cdf-be44abd50773,617693108,7935440816051798274
+0d4b3da1-519a-96f0-4826-a917a4b486fa,2443531522,6317236659186126494
+80aa1ebb-9200-f8d9-8cb7-a438254a21cd,4073391636,8429302573286269764
+533483ca-11d3-ed76-7b64-e9bd3ea46d99,2972493837,2586889749192586037
+96d3bff8-0754-340c-b621-61890c349f41,643830512,6249527013966725350
+100b8662-6546-816f-255e-47162da3f781,96541749,434939576520119751
+4d38cc84-c36e-c958-e2d0-37b65ee34c6b,3777286087,13340595275293859957
+6a62a4c0-8f96-d1a9-6b42-c4f3bf719f59,3230361626,16898874210552501866
+f070d564-1d93-55e4-329d-8c2d3cb675b9,215661773,6991000755344085735
+e50b70f2-9398-2869-6a76-90b95bf57d1e,1928069159,6016465399139320296
+4bc068da-04c7-195b-9c40-391696566601,2253737900,3633922117731353657
+99a16dab-48f9-4f0b-fe8e-bb20512a2c07,2511774485,1517219126708392578
+20af7747-ee2e-6089-be49-cb3ca352c89b,2702941584,4830640405345473716
+0d3fea74-852e-fb3e-8547-9f616c4b8dac,546553192,6080237675803969146
+bf9cda3d-aef8-ab91-d9a4-bed0c3c1d1c8,2479279531,11361628929653732346
+bf7d4086-9fab-9200-4087-2973027dd9ce,2869409871,8465456705387559801
+e033a9cd-516e-ee64-985b-4e9496ab1a55,1112254381,5387629368608436111
+938ec0e6-f538-9eb1-fc4d-e19aec50c3e6,2341391477,6917567320540702203
+c84f4d64-201a-0006-b834-df0f31e69666,2017216724,15965135593874769050
+917754b1-a738-eb32-e658-214202ba6902,3014830662,15138308174016122797
+b0793d7b-5f70-e64d-033d-3909535e76a5,989577099,16119347439110656865
+cf262ace-009d-5ebe-ce90-ea8e1ef31186,3104251108,13244916770425681215
+1e3e3c2d-d22f-c3fa-11df-45c745b0348c,2852975550,8887113438538784116
+d9069524-94da-9012-82c2-b91436e87d7b,1154322200,15621622024932674106
+2dc04884-24d6-47b8-cc9a-1e0824da5b4c,1617889096,13047077172776792550
+c803ed00-196d-4862-9943-e6063f1fba4b,2628325377,11768944800563786000
+5c3ad2a8-79df-2de6-9f67-518f6a640754,3996575826,16628701763739047058
+130ffcc7-0c42-b7ee-540d-4a2a0f0fead5,2397492097,4301429571657378718
+f6f0eab4-b286-92d8-eb0f-6e3fff714884,2785428604,16927953662771248578
+3f4abd6c-bde4-f54e-dfe1-1ce8e89d5613,2611032797,7058546070327011371
+8327f9aa-dc43-2322-11d1-849d95d595b4,1296015667,16473940247007342743
+75f5c09c-a91d-10a1-57c5-b83182609b9c,2399780333,4380996093326387141
+23cd595c-05c1-51eb-41da-00fbcf7dff8e,4030288666,12999835032578752808
+a10ae6e8-9560-2789-091a-6ca88f27a0af,2552510859,7265593590078512030
+28b59199-26da-90a8-1dde-4a2be16deebe,3837178798,4827738448782295019
+90508fd5-be92-f924-e617-6dc5b3e55db8,936508042,6835254311906020010
+b2b4260d-74f5-2980-62ad-e522722f6900,3663415100,14860133809612288851
+0e17d91e-2ea5-47b2-8dd0-2e310b9f6ca1,2424401342,17843530162036217194
+8d998abd-cb77-36da-74f9-259199014791,1380203989,16365635199909446581
+4a515bbc-165a-2fba-960a-e06efd74073e,2637386226,3961027186560899442
+f4762545-f063-cf77-062a-d91fa3fa1b22,2543082496,3699926758555496981
+de199d58-1177-3206-0a39-2c30d9a2890f,2723082769,6852263159968782301
+8ec3eff2-04cb-c5e2-f47a-de3c469a6021,3140950924,16258178244343775398
+1879748a-60fe-6200-8882-de76de133315,1646075695,8628607595173398286
+44aa1dc1-3f6a-286e-2de5-a8c20d6f6619,3515250505,10891972785282334154
+486a1813-a5e2-36e3-2a29-4277df259352,1614789495,8491138070693540313
+d86c5198-70bd-917d-3794-ed3899961e1d,835325784,1767448617023812416
+bf98f363-f28c-d713-77ba-61ec5417d90a,673306535,10551190060293101404
+0c227de2-4dc1-f750-2dd4-50a524126bec,1219483357,725366898861170320
+b1f9d3fe-6d9f-04c0-f59c-237fd2b7c747,1303987665,14029802754759339458
+aefe56cb-28e3-972b-bfc3-dd34079551f5,1992587914,1914503418421643390
+93a0ab5d-1d0e-72c2-1faa-b67cbb61f7b9,2062317980,18445836156176776129
+a0c06c59-651c-57c1-6243-b209b7ebe140,3404199964,8298467579828739893
+1882f4fa-15b4-a4a5-8aaf-c419d6833f7a,1089457904,9989259689349200773
+2e73f9a4-dbcb-3f14-665d-8cd096a111a6,1470908140,16472307397063792020
+a70cd21e-c492-c583-0134-6445aecbbd85,1295830124,5590741421305966560
+3920cfd5-cce0-07e4-caa4-1187ee9c7f65,2865592290,11887802298893119180
+d121cd0c-58f8-aaff-f177-378c4cd32bb2,319322188,596303395349176367
+174fa3d3-692e-e107-4db3-13b0bf432014,753031422,1732789918355477597
+52f2d729-fec6-3c5c-3256-51f5158ec553,3847468333,7617741408598612265
+a7cf76a9-5755-10bf-0c44-1e7e09ef4520,2713233117,8997193681300170743
+f91daf06-ad70-c250-0fce-946ca3f9296c,1177570484,1682541185910221690
+8f5dedb3-1c50-bf2d-1773-445a220194d9,694187213,16309384005887780338
+9b202a5b-8faf-c171-9b53-3468cdf307fa,36658421,9604769974018323158
+7708bf10-ef20-7de7-fcb0-6316ece1cd96,1852283977,1852111718671892025
+00095027-875e-5a8e-b2a4-5a0627ddcf86,1704472206,15892344446285249936
+1cfa4dc7-cce8-078d-34a2-b46efea9620a,1254648590,14416527260279251142
+21594845-09fd-73c3-ab85-36ae2ec5eb6a,4134859892,5243875135145248280
+3316dcfd-bba7-1eb3-39e3-ab2b9e663c7c,2994552543,11894280345852571027
+f545c0bc-36f9-3fc9-d1cf-b1dd2efdb1ca,3271887639,5168489378559539132
+cfa4c5a4-9912-774f-9a74-157c9881b1a7,531540191,1514991117580940962
+adf55d78-f521-9be6-6937-8938c97c3fe9,1106906295,639244879651833564
+892bad5f-0fc2-e0a6-af20-7bab1d840b51,1902343324,18333946158412719553
+cb76cc57-f025-5f30-e4cd-b0cf368a667d,3675042708,17686506387969003017
+291529fd-f830-f530-d795-1c97727381e8,1578535548,13320831111130319282
+1ebf1cee-4e7b-1c7d-7166-b73113ab1b8e,800054577,153367298887099906
+595516c7-f6c2-9098-8390-c4a1fc719999,1847405950,7159373576591794788
+b2f4516f-0c15-eaab-2329-cc8092f6acc6,40991222,13666150342501622964
+732b28ab-ac05-7b4c-5f11-9ea9648d028f,195689036,16855969880778075399
+cdb5fc40-97ba-e170-3bcf-3dd3e513df5f,3314164391,13261146302643859985
+ba3f4b0c-59d5-bb48-2d84-a222d42d5bd9,2641917147,11221683378617263703
+61953989-ba59-00ec-8219-6241b81e7e28,179078330,3684136634308328315
+83e9b76a-c718-7418-ed81-c56db73c21b1,4123519167,2171759141371146960
+e0e19af0-5c17-e230-f961-ca4f8f8dd9f8,1954093683,2631444765147533660
+9b4e6c39-1b68-cd7f-a8b7-29671a59337a,1145124571,3749150476443574184
+9f0ace09-4b10-3306-99c0-248093bacc8c,4250763842,10843771692116385753
+626c17fe-d0b2-a28e-2c13-3be3808eb179,3660839443,17296713900345179314
+e813df1b-927f-5fdf-437c-848be974ae3c,953117846,7773410982831538113
+9eac1036-0469-9a8a-ae42-2de366b1e4a1,4235058055,7256920039659569834
+0a73d0d6-4293-18c5-5677-e7f9d6c87339,2891460892,2829140514311991346
+5979b811-117c-e5b1-2db7-4e1e47a020a2,3285859523,11854205650759759897
+5c7c8cb0-7326-c18b-a30e-d3949f8912de,1694108480,15467956418394696498
+78692fdb-82ff-2ab8-c5be-8d04cc36b187,1918025064,17661115958049081355
+4268daa8-8b5e-f6f3-6de8-8b3a6f9728cc,2054763185,8990412930661401497
+e3fac8de-6def-f9e5-a29a-ffd5ce483bf3,1038392423,16346055957098151078
+4da35b69-0cb1-3266-58e1-ffb7f50d1fb2,1925307407,5540255465660585922
+5623b644-51e5-d4e8-d85a-c909df12110c,1554001610,4241147768493772411
+8c77f396-5bd7-b6fe-f67b-7e26f84b5948,1643681009,2652319769960579299
+44109970-d4f7-4afa-4c37-2cb460fe9cfb,899725245,2364131821526992616
+a5a8d02f-0464-f979-47b2-0625b3e15569,3509867570,9829487769819583000
+9f13819b-2ff1-aa23-dd57-9f88a8c8f4a9,884380647,12597923740706448821
+7ddfe731-2a70-f774-3caa-7f51e275a00a,2280452655,14218109208139622477
+b9d1e35e-287b-9bac-e739-5a5ee5de04d7,3921340827,198037271315419004
+9069d073-43de-56d7-69f0-878c3fa8124a,1081417951,10505332325728546873
+16aa8edd-64d9-f5cb-050c-9161eab81cb0,362205205,18013745139705486318
+08250ffa-f997-4e41-5ca6-f77337b8db88,1139812968,7767091429099156686
+45f53afc-f995-9d0a-60c7-38e3ac1bbc7e,4292050954,13999939185389373659
+7437793c-876d-30e8-e37d-442fddd35274,511435246,506931257535324744
+b6c8fcce-dea4-ee03-f41b-797a68dc1cb2,1007014818,8839621489951202017
+143cc996-34fb-a9c6-8364-30cc7e701301,4123873666,14758989032296808648
+f9ba3691-6917-2809-e940-8b1235170666,3628226463,11280392316906279438
+e9bab97e-7049-437b-f6cd-cdd3d690658a,426143929,13868891326297534984
+5ad2d265-7c89-e5cb-4a55-a1f4002b8bc8,1344872951,13232633007951994491
+2e57c005-de45-aaeb-76ad-941ae2bbe0b7,1097322303,13396784943598323570
+dba44fde-df66-1d79-2218-badd550f0b53,105633952,3027737753695261134
+f241fbee-2bd7-8e81-969e-b016273094a8,3567912420,1165058624832665819
+40077608-6428-c554-894f-9c27562c8f0b,385677361,9180484895573185039
+7c4b1b57-84ec-5691-19a3-cff35b01ef8c,240746763,6703830679597305538
+95a3cbfc-4adc-952a-b362-9d08fb7bd731,901114319,17737959747211689879
+a2dd08a0-febd-c96b-fbea-c84f9da42f34,1787629426,6919372725506987095
+72e98f96-7481-d3bd-b2e2-068f0837bead,1468169644,8600502864223878061
+0e5f3852-e382-6819-844f-0b3d09aa8513,841605098,13234172920299883164
+3bc25bd2-3b38-e4f6-4a1e-864711c0519d,2234641803,15372691602903409359
+f94ce7c7-3c28-6c07-fbdc-16ef04be60c2,3642127643,1544810485375055926
+cabc78ea-d03f-21d5-dbea-0f859e15e9e3,3253547714,7348845581007296714
+391e78db-2d34-4524-93d4-650209023b7f,2323007099,1060099361574766290
+74d61b53-6fdb-1006-db12-8f42a2f066ac,2085659892,15127692963489114479
+998d128e-1991-ef84-14d5-657881545d02,3245330192,10025933055779987940
+7128c450-506d-34fb-ac26-be2a085d4950,41268456,10498381109699084573
+c414b927-3ff5-5dc9-2e58-1d8462fc4138,2074518703,2790284374125337541
+b7438179-73d2-acb1-9cbf-521f565dd550,747230463,5530771776233109036
+fd95c1a4-18c8-038f-04b7-b7eccc1d0ad7,2802306333,7672249149406516161
+9f0daa50-e060-f392-c0c5-3b4bfc29a815,1354167130,3395587398163963157
+20f1e995-78ee-3b44-ff2f-914a055f99fa,2182251513,13876222303262090024
+e57d2201-fcc9-0b91-3e6b-97b1ee2005ac,3254992633,9168341669147558341
+457c46ea-ec05-67b7-0059-3cf112f5cec2,244484421,15064260024019480026
+d8f99bbb-7329-4f7a-958e-17a21f737188,2065809119,1701013789747345153
+cd3e44af-6535-6852-5813-163d458d6638,4168004838,6964859497475285949
+478de01c-221f-5a72-f2c7-d7272665fff8,2151099499,10522751280887436453
+9e7f0311-b0fb-e970-3e38-30e0156f63a9,2671902594,9640258069629572802
+39341b46-cb61-2d4a-98e6-8014f28a06d4,3085843476,10000096594594604889
+f704f14f-e9e4-91f2-f8a6-7be88e8c60b8,4172340871,1555794451297085479
+5a749a74-3861-bf7f-7393-49fe453bd84b,3716220927,12718086793380567682
+fc416eec-cc65-6b43-d916-58e031f6b1ba,1026405618,16961736152681108757
+64f02193-7a5f-d5ee-bdca-0bd8411e1404,2772795267,18182297704700621552
+f642c721-d86e-5fec-e994-ee8928edb1b7,760356190,10697232210565820428
+65e46eac-c5b5-b2a5-96e7-5f373567e9bf,3486708084,8063813486374281881
+6eb75dee-083c-eb48-c8a1-c3eb75cbd68c,2407749625,12572516302226743465
+c6e4ad1b-0352-4548-d021-c35109d64044,3835070560,7774334181165368525
+0052d14a-ae09-30b7-11f1-9a30ddaab637,528043693,12132903641701596413
+85818f89-f36b-6906-9117-67399d583f05,2037787140,7874492489126537090
+e0553f2f-79d9-8585-af05-b71dbac6b35c,4170647404,4208330928322719614
+564aa465-492e-8434-df87-7e232bcf13a2,1007106505,9673198253265169882
+00025270-e10d-01fc-b32e-fe4424b5f946,1992312156,960702377461680735
+725a18ff-8614-6603-2705-ddd1656f5ca6,1575598903,16930790090767859823
+7f52c824-b009-4a39-3503-b34490d7c21e,2080198331,14448410647964157500
+2b9946ab-60f2-ab38-23f7-7b74c2f3fe07,1295293498,7451509454668593461
+94b28e5b-8893-1210-3c6b-8c347b8ad79c,3792268618,7776184451204377876
+00f39ac8-1343-e5cc-e86c-4d5d79b629c7,1937799809,5887082514213030541
+2c04111c-d9a6-46c9-eb57-05f4b70c58bc,343327031,9365281464249329747
+5c4335b7-a5a2-d06a-9fbc-b6d07e0dba09,3895479693,16494100716483971676
+10e6938a-df83-5b84-a04b-a57d7f5e117c,360012924,6527009025984807450
+a874d80b-9013-ecca-dc9a-4658f65ed3fa,3341412844,5446079053423279471
+8d8d7ce2-bcc8-4ab5-749a-2f3c540f296e,4136598572,6510731274676353004
+a366ad04-71fc-3fd7-b331-a3c9927a97b6,1238714642,11372367525038924582
+859b8c84-18f4-e609-e08b-faa143f1baf9,647026306,13724314532179670224
+9a981cbd-8674-fcb5-2999-4999a286636e,3126770341,2843591050437719357
+eace2b2a-be31-17b3-767b-cc149276d1a7,1773296256,634593340031894599
+a59ee69c-fd1f-5919-7bcb-481c16375208,1073760785,14735790871029695744
+7cae33bc-f6be-f788-b6a8-79ed137db445,3840826466,18103342515205398140
+5b38be95-66c8-a8e5-7be6-0c917276ee3a,2601521404,17287445325065391656
+9322782c-b1df-824d-c579-ce06cca5410d,1589371945,18366902937437441890
+0ee62cb3-b140-6999-e462-1252b6538305,3807380560,2357487224130467192
+5d0bcae6-007a-79a8-788f-d9840988c143,4098035343,9719353652002599932
+1a881a2c-f07f-2725-d8e4-f30bdd2a5226,3951133925,10509556055398731270
+38bff57c-0005-20ce-a300-af27efe31c7e,3508480449,17710330828174525875
+ba59c1ba-cdcf-50ff-7217-c0d8fdd41360,2338874096,4364611560412290635
+76dc1ded-e161-ccbc-c744-2e727abf0475,1710957015,925774666985392615
+e527a329-3141-7d22-fa8e-0b1279a52e99,431527617,14462543749061833288
+cb5ef11e-0865-ea2b-5180-bb57a54280d1,2540694690,9922710125199126600
+32343dd2-4f34-087e-fa44-1aaaa835df3b,567900692,888189672669369693
+9a33fb5e-9dbe-571c-1bd2-a4d96430380d,4031481569,12741031522972180227
+1cffbffe-adb4-377f-eb9e-ae24d13a99b4,3249058554,3659524345009418125
+d262d31b-85c2-7e14-6e8e-f761534d58a3,2139448591,9763913960064512192
+dc580190-69a9-a1b4-7322-e517956b6f71,1940334858,16998591456229034627
+a20b7ff6-c1c4-89d4-2fe8-1714f8614c61,3155437819,6013539365122717767
+f7774d40-e587-dd8e-841d-96dac6b66139,640085424,7442869911568933747
+50f0a69c-f06f-736b-38a2-9422a001d35e,4072163435,712640361953034690
+a08e7d6d-90e6-0a6c-b46c-b077ac2919ff,3000352775,3280318842756856544
+3e4bc339-c8ee-95c7-3339-0ac466de5fc3,775641001,11924661444602474845
+7136fff1-0ef1-a46f-8e8b-c7711c32f4cb,1642830428,7590227732839773393
+6129620a-a26a-754f-d13a-39fb98182393,3337549021,2619773668138988732
+127a7340-58f1-5e13-946f-0df09b0e9447,1038719599,18001152840105011157
+161bc231-0471-a86a-1fb7-825f6529c50b,1373819920,6886654644680991424
+6868523f-a79b-750f-1335-cd3bdf3e5613,230203247,15533464614172023997
+b96a4f8e-cb56-b199-b30d-aa274ebe5048,596082738,6519684366069489899
+29bfb796-4994-696b-235d-2e4a932e863c,290818442,3820800460752058116
+397ed8e8-eaab-ff22-f0c9-5d38123acc14,389542213,6426270909958247808
+aa78ab22-1928-1e59-e65b-64b746a1b53e,567887168,747094792707130127
+dbb5591d-fc0a-5212-ff25-3c819f4ffcb8,3188374740,2933666969600560898
+45fcc2b8-75cb-97e7-c994-be5ecd3b1fcd,1235146961,7183334093628883833
+a1e8098c-b5f9-4464-82a9-f002b9ad9fe7,2944790823,8992960391875576782
+af74eb60-1734-f327-cba8-f982c705db1a,1984436243,13106356151834704108
+dd049957-116e-9fb6-ec97-c413e76f52f5,1768553762,9319727865437243411
+99cf39c0-7452-69ba-d09c-415a93b2b11c,1091400792,16067482334142168634
+b6c859c8-34f1-95e5-2598-12178d5ed9e0,2834154621,2307972194610508563
+35f74d54-1461-6393-5d90-0e6f5491d579,3445440228,1664872969523702471
+6c3fc215-a586-f1cc-48cc-c43106b7d907,2145990329,7543149024016212470
+c4c39ff7-a2fa-a086-0041-df7e384f15cb,2575643265,4207253460200478811
+d96af97d-90c2-ff0a-4135-5313cebd953b,894595810,8497442502332796949
+fa2ea37e-3121-594d-26e1-1c447d09e5c1,3416583571,3796589778136394018
+abca5b39-62a3-cb63-46e3-afbdcd1a0449,1731030423,14945919767076790853
+af20e68a-434e-a035-e258-3832093d5ccf,2949115611,10181331250578994575
+9f210538-4b2a-75c7-b0d9-c156f279d923,2609830705,16792775665005994095
+0bed4134-bcef-7707-2f4f-80ccf162fed1,1254570333,14478449363858308732
+eb7aba21-5c0a-9878-99f9-7d50205e5734,256687460,3218579565438738039
+15429c29-4969-e7e5-809b-c6fe4b1accc8,3029665455,9187431803396196869
+0702dc63-d092-12b6-655c-741dab656574,232840525,3907547886115701395
+765a6953-9b10-60d1-f593-3cf87f78444a,3073774210,7357587356193135120
+a4fd2416-0337-8a0d-c31c-9e414ab52d38,2669895775,7480908920655069847
+94242a37-3d26-2960-d84c-8d7c36412542,1700123659,11056686182345524926
+2f553fc3-e489-c9f9-691d-952856d9089d,2589133087,11705452834343104033
+024a93a9-4e2e-6e83-1054-3b6b9eae47f1,155058731,3584395559833175317
+f6f92f2d-2647-8ad2-ceff-2705ea18c33c,1132842028,3219535654992229949
+f99cb23e-d1ad-40f1-4d49-14910db9f910,1452362843,8221676520488638488
+2abb99e9-a841-7a4f-42e7-89d5904f9151,2030326861,11546353339548004131
+9024067d-5ba0-d97e-faac-7f0aae56b9c2,3086300616,2479197775698507721
+092378d3-4765-c035-1447-21ccd5c4b4a7,3133581137,9879324138109618255
+33de3fff-9470-444f-ed06-6a6df05eb207,2365529008,15487203413975452089
+89b01804-f2ce-647f-09c1-cfc5be8a341b,2704915113,7450423085069985815
+e1f0c7c6-527c-4fe3-e73b-66d494db2221,2809284589,1552181344664450758
+426689f4-808b-ade9-7778-d24880d86134,2334363388,9942542405378501660
+99372224-f26d-fecc-f8f4-773fa0ff410c,2879316028,4939430420215292183
+a63222de-a377-983c-503f-65fac2726554,655114679,9837456595621916710
+1da95c38-7f4d-7148-bacc-8349d7f70bea,1379238074,14329255765518240082
+bac3733f-9497-5596-b081-5d64ece69456,1670004450,2157623733341514287
+9e6cb9e0-37fb-2bd6-c7f7-c3f9a9d1a107,988751969,5661652521270123301
+9e1fb88d-ef82-01b0-8ee7-8378fbfd867f,1587852434,17279394155454372424
+2ee815e4-b132-9912-4df6-13be6c5fc663,52522192,16413198214084764442
+6571c60a-569d-2c13-4aa5-06a14a776d77,1180900053,8903312123667709653
+17e124e6-b17e-62f9-4f85-f10bcd0b2be8,77423403,18036232158894208885
+90251842-df8f-e57a-38a4-6f3baea9f99a,1043252827,12436535223596039498
+e76f2a87-d978-88f9-4f8e-113439eee71d,3062165865,2444762944871910384
+a36daa8e-45f1-187d-92f7-1bb8efd2d725,2847724925,10402072445286770344
+6d3e5498-2655-6e76-d0f2-1e43f553c247,919599935,1016996903999739388
+48aa6427-6ae3-5105-d267-3707e05df5f5,2943955629,11836292246965753188
+26646943-3aa1-36c4-413b-5685f62555b2,4028656015,4856958756460809501
+c66fa62f-608a-1ebc-396b-bb312c71bb35,1975840774,13857497937307420240
+ea3da06b-de9a-233b-7ca1-ff14beafff7d,3094672852,3967978371810958371
+144151af-d6d0-8ead-bc1b-dd693edf2be1,2814690735,9134904038219324327
+15df350a-b3f8-b2b2-042a-a9716ca74ecb,3061646024,815806437503087751
+9e0797e4-c88b-b187-f82c-ac0c0347ada2,3139366678,1215543661661333222
+e92119b9-a65c-01f2-0bf6-e430c2fcf101,2646235913,15011958934384193138
+61b60232-a69f-2de8-4759-f6d644a01baa,3339608177,8266116937955261501
+708e3125-7c17-28ea-da9a-521d946c5d64,2711431860,17610157791068408020
+c4f877b2-41f2-4443-ca98-ced25825bdb3,2893392571,6802832413267219690
+a02705e1-f460-43d3-8bcc-b8e4d40555e6,61257973,11154056355799697637
+5bf7dd6b-71c3-8ddd-250f-6937fcf69397,3596340460,6046473243665059183
+fb577a7c-ca6e-239f-f311-1836cc7247af,1084441981,5445130517694137360
+87dcb4a4-3a56-4ce7-64ff-1d3bf72b887b,3856384683,8626324864096983307
+eb4641c7-cbe0-cb6d-5e8d-4e938bfcfcd7,1640060263,7146337974054663083
+9f31bddb-d9fb-8c13-857b-4e4e0b21207c,1504037321,14372964600511662537
+80091b11-6202-7997-d8dc-527893e841be,2615508262,11015805754718262174
+53cc3c0a-7a4e-5f9a-c56b-1c5ae018a7f9,184830156,13997567474486311536
+8bb581b1-4c1c-e07f-fd2b-2ca0cacf3b5e,1269945316,16029079841650964416
+1beb80a3-289d-3277-7bf2-35c2389e4926,765575860,361567447711108142
+c05997b4-375b-5750-51fe-9a3254a2de9b,416322026,3602362671045486439
+889894e0-350b-882d-61d6-df75adbe9b04,2967267194,10050267245491731727
+d9ed2ba1-4357-509f-d46f-0dd227ee394f,617506316,12531102206538352268
+463a685d-0ddf-fba1-538a-f1a42e3d95ce,791448786,6184416371130185289
+53b1b072-d0a2-d93a-62c5-8ef6d1af2b94,3913710300,11414716521822066131
+92690e83-8665-0c8a-e827-28dae5bc06cc,3119268436,2653076920664388161
+994072b0-9e4d-0382-a21d-b868503397e5,2823991847,11261235233827707909
+4a24ae76-ffd6-cc80-c498-f656c4edbe96,3899389991,71867514133325573
+a11a3934-07f2-fe5e-ef4d-10a40a921a10,1328042054,9418188132668862400
+b83565ad-fdbe-5e60-49c0-9c98732d1ee9,1360924787,11902927235128034857
+d6d0e454-a0f6-f63c-9e4b-67aca70fb967,718868365,7376974867901100112
+d70a618b-2d10-7ef4-7329-828b53dff689,3611002541,15837177624150869868
+64a9b745-8f90-2b36-c13f-2b8bae4d41d6,3200410816,8795373097063170778
+6d8f2066-c525-3609-d695-ae0f1e7b9b16,248499317,18309272963563358006
+1dbb24a7-be25-7185-b93e-617c5fef321c,3639220466,8863652263602970203
+98e4c80d-7413-c8cf-dee4-5e40f66eac0a,479931698,11366179939857371614
+7f2e26bb-3356-2c10-18f0-9d54f56c5339,213954831,13149277968722755244
+1fb7ff45-4f47-ca57-5ada-527f86f63ca5,3728745441,10296566084694689743
+bd4bd9e3-6e7e-250a-8ec5-cc62ca7d4f74,3237997581,10809593920756842339
+82014e66-6679-4504-a4be-8bede50c0f6d,1062091233,18165798512622479526
+b340383a-43ae-b832-5bb7-2e3acc7de573,58335819,16157660416558553944
+1f94e3eb-1bba-3e11-adde-7d2ae394961d,2293908899,13190644079998031917
+34706450-1ec3-2bb8-656b-2a485f318d0e,2501352131,17620979207232191302
+6bbfecb8-7779-c562-66f6-77a54eac148f,2107546303,3014477628889779727
+4c93e681-cddf-9cb1-74e4-f3eae46c58a6,2036080058,4293711175163711251
+a455ef75-d43a-a776-d032-d9e5c8fcdf56,1657468725,8477310210529408560
+0107b386-33a0-214d-49cb-b7d008f09513,2972845695,1774367290274763707
+3c09bd0f-abc6-d91e-2e0b-8856330cc65f,1675083810,15021772480654704829
+dc49eaeb-b303-7c19-986d-1de9e6ec916e,3649019870,11524972896987993648
+ec53606f-1337-dbce-71cf-7c37bd6820cb,2921629802,16748827658726853780
+ede735f3-ba7b-fe79-74a2-1b7fc41a97bc,3223195336,1925554725264583154
+56741ae4-7c82-876a-def8-d49c15d5dc44,2745775625,14764469283057976517
+b9f09429-3760-b9da-3f69-49cfade112d3,664041736,9923037044930204728
+fe7dfca1-b6c1-005c-9a11-ca4f69904820,627563411,6273942916679454933
+4939938e-10f7-fb1b-5eac-0ba078294823,3988626870,18445450975414988286
+fce0aad2-1a34-edd6-af56-49990c7948ae,197038169,18236019642138821311
+66ab2cda-3a9d-90f3-02fa-99f2a6c7fb8d,2137580380,2346715873521893342
+bb97279a-3d85-d107-4c5e-42bd732613b1,3178920768,16149687059452243321
+cc533a09-6087-0fad-c6e9-7d4acd28449e,2793213493,16345115317538552222
+04972b0f-2504-e931-875f-07e70434a200,2630911099,11599274532126667017
+b8c5e102-6788-2ad6-1694-9a3371a8e4c0,107252111,16984269747259536414
+608810aa-174f-62f7-f915-08e41f431242,1579876192,3682706522005826077
+83fe7b91-2617-22e9-fbf1-c043d2d5d491,2905607636,7333255729272655540
+7f6200ea-b883-82b8-8c7a-50a81e2f7b44,1088768963,6762351615032108396
+e364d724-ebe7-b2d9-2435-f941dba0eb2b,1786153631,17532859771025598187
+08e2ec53-1521-c088-1e83-4fb0406ff9b8,656002178,6178925022532691219
+e6374f3a-796d-3c7a-1bd5-7145bfd5f2e4,3802675902,5341731230490466744
+2cc489ee-6e84-2fd9-a8d0-8e6a1f04202f,2231295364,10990787897277740545
+c117bbc8-ffc2-15e4-fdb2-e47a5d5a7407,1165954079,12915149649469536560
+8a1cce7b-cd01-e554-8208-521a394a6f92,3715012037,8183167837495965723
+a4d65dfd-b587-8189-771e-faf5ae4e3cf4,4157883410,10659494676016408671
+63351250-9a48-ce2b-4980-72034e977d22,2303947708,9522404274286861832
+1428d15e-992a-7736-36a8-ed7b002bb170,3687377856,9941108909977729118
+41b38c79-b94f-2b09-e194-262f085b6e5a,362468602,11243304188723416897
+646b25eb-b546-444b-c973-d820db4e12fc,2325166929,17795961294517027310
+dc3459c5-7076-09ca-a7e2-6c1bbff8ffe8,1003093153,17267284696649019165
+77c29a1d-df7d-9509-503b-8515d196e735,2823993555,5745696083950252002
+feafedea-3120-72ea-1df9-fc134b2d63b7,4085407054,16207085179176352858
+7e1138ca-bf40-31ce-1d2a-1319ae51df1b,4031300867,14810202445934432988
+52c19cd3-f4e6-149e-60e1-c00d47fec0e3,2484598319,324723016223815155
+3e5faafc-8a81-63a1-af54-76075b04a898,1745752529,3622045575118053108
+619353f1-62d2-f575-22ae-f6484778ac49,2278534902,2410060227222009607
+02a196ef-2a77-0a1c-03e4-3765f9965ea0,3299629729,2507107012240157853
+9e0ae9fe-2c48-83cf-c52b-159b860887c2,259585632,15559139367441726083
+119826f0-2cf8-9a69-3c9d-a9f6cb83157e,4081780838,1884634782208900562
+54d9adb7-9880-8239-c273-3ec06b6ad43e,4062962140,186727447648990541
+880a08e3-4bdf-94ef-2d88-23f3e72f8c71,325604814,17008514775544102768
+d6f89467-c4c9-2af7-f802-a24c0003cffc,2776756805,3113741607594828334
+dac93358-5cdd-4e66-2a58-fe1d4a783784,2583428718,13306366253614152321
+bbe1bc28-0b1c-cab6-3451-94c3ce38428c,591792033,14006859556209201887
+b1836195-b4d1-9083-7390-6acda82247c4,1749223803,13793226846069375330
+3549654e-dabb-e5d5-fa6e-580f4a4bbb87,1796850883,6355465960711607071
+a1bea50f-8c7e-e119-2b1e-2d4bf6a6ec83,951262398,10882643937863845918
+e2fa0302-442d-348d-f932-9e6fe1509682,1801419475,11508305197794994502
+289f7209-f2e0-4051-65a5-e7f81fd8e0f1,1814587229,9800445828201971511
+57d7db5b-068c-e843-4f34-3f3554e098f0,3662475181,6955519422159937570
+ed00fbd9-6965-2561-d314-bc2e68c223d4,1646993135,14200806470499294337
+86990b07-a7e5-e7e1-e9f5-74fdab69dec1,4121005609,8289298768402349022
+d82032bb-e969-e786-d1eb-ccf7a8908a8a,3321372847,13973220933381115901
+69346ccc-8a93-40a6-1e62-6fc632f7b90e,2095320702,2387865532681704881
+47f6c9d7-7291-65c6-6e15-e9d3d619a9e2,57789035,721794977966897391
+985f19b1-eece-79a5-5422-1050e05579a7,1100335437,355958918362713220
+a361a9fe-2ddc-ec52-e2e0-45da91afe790,1623929829,5315330451720293598
+046c345b-548b-c5fc-d21c-49b8c9013c98,3830634635,10188785524392663314
+39393fc5-a507-fff7-9184-8cf5824f673e,3563784698,4150485660701822549
+f485dd4b-48da-0708-1f91-6d4670da122d,3589765074,3392543655821242436
+7475847d-8332-3d47-1977-1af789dd636a,2354916212,14474345337704546985
+d795d7e7-8afe-4ffc-ec3f-19f9b94517a6,4138520740,732073135601741635
+4b72d03a-61be-e2be-04f6-a6fc80daed78,1516717982,14798138549773514143
+0ecc9dc3-fa4a-2c8f-831a-fb55a312cbc0,1864492106,17078009058113508669
+0ff974eb-039c-8039-f166-9a0380db2f03,934235378,9455740804131633744
+c27dca48-17e5-b6b0-b558-ffb94f5261b9,1190741835,8245869341394791340
+95d1a90c-3415-a99f-6eee-4c33f9be1ade,3200688364,11990947276059130313
+995053d6-9248-875c-c9ab-395d1d309ef9,3650193210,16204479341170896635
+7ad6de8a-f97a-0121-2b50-d6ad8c6af27e,122633296,15401919314080257295
+99978948-b79e-d073-fedc-b6111c923f8e,561441206,7143675279312739321
+0b6a9d0f-8405-172e-803c-9aace392c113,2616343369,16798468711951381208
+745767e2-1c5c-a3e6-a75e-6b1433a920f7,2612989299,14447484771418402619
+b36a3fda-b5c7-971c-fbfa-5e6c0fc22481,4071315068,11089101743850333187
+f649e4f0-3059-a79d-a1a1-aedec0b3c019,837466320,17779192768585233567
+7aa62b54-f963-a445-1b01-7950dad8ead7,227177768,3244164658132047252
+97f60119-a6a4-3efa-5ccb-96fc040b978f,4196661590,1476196478250858588
+a5ccd6eb-7956-3d37-5736-98fbb9388898,3936238863,12609948617701970653
+d114619c-1470-e492-2210-67901c7b65be,2575593491,1113688508722507299
+0ec8668d-a327-16e7-9158-a84e99408b5f,3019691623,4802097227969195383
+f4239e29-eab2-9ea5-32c3-8278a2c3c99e,720568652,5336855840116626117
+5c56020e-1a27-ec44-ddd3-d739de84814e,2351592128,18158843033959645998
+3892326c-ad1d-aa9c-0fba-7408a13f7e44,4035000367,8704738858159899223
+1039f959-cb30-1bed-f2b3-b858d1a036d8,623891917,8645786453074336504
+e37c8bf3-bcaf-1b36-b3c5-7b4e27fe9cde,1666283512,18001149802867893849
+811dfade-b505-7edc-d992-94ff7ecd784f,3344692969,9267252423581179516
+171bbe1d-5ea7-73ef-1c6c-8703e4a00acb,644311433,12751096761081063012
+1375630d-8bce-29c9-9119-3acc8a8289e4,1514639564,1528876887952809087
+2bede0dc-4573-9342-a70e-942b058b0e49,3966719292,12473750319315902194
+9811dea0-ee61-cfe3-fb5b-897c7488e5a7,1113668733,14919813543817420797
+9b1a8d7d-4674-0757-78ad-97b53e5e0cdb,1187568694,12103454918738230120
+9ce58a6d-d578-c8ab-b4c9-6ee27ed5c20d,363683445,4430818734283468826
+355b0d69-906a-ccc8-a67a-e56a51dfef27,3272370220,1574340802653648591
+ce9d0765-fbc9-9e8f-7d95-c49a2819537a,2297513880,13098705008160896303
+56dc6178-7a9f-f109-079c-0138d517ccd3,2097585202,16716021535317040398
+c40b05ee-b8d0-0225-41c0-0009279fa537,4013718250,2904554997914615591
+baa66dff-49f7-0154-7bd4-86142791afcf,1208308767,2539281860090103111
+d6b5f1d8-20a4-2a50-2528-242fd7488221,1213872562,11485961027678100883
+594e34a2-2641-f36b-c21c-60bcc2c19835,1023204633,6424976486399068621
+2e123d24-0f8e-7a1e-9632-580ecc3f9d06,1729485752,6637318555548595979
+c2653a61-b5ed-273e-db09-bf707035c087,2320090585,8374268994948185741
+9c4a7672-bdc4-04ac-5820-c9685ed5dd48,2396275920,7219896894031101237
+8adc51ea-8188-7d6a-db9b-105a40ddeb04,2472031171,17496164077963562147
+cd1434f4-14c1-4827-efb4-1b5301985c0f,2535081596,8910850668046362333
+2a4be634-d087-0811-99e8-939c7847d579,4138985772,15446144711519810037
+0862a2a1-f943-b351-8079-8c464ea941fa,375128908,125841506777133449
+6179c2b5-c5cc-fd93-cb62-c72920813dce,1577009590,14017005627665788568
+439e6d05-ecbb-8c24-4a16-974a4e94b568,1091539403,14979989709306640670
+769d0dcf-2e4f-e13e-1f9f-579cdf2d6e40,2879916274,12678526108462877172
+049a3680-7e3b-09bc-2c53-14105adb6a70,1120556490,15340694689615171441
+7af9098e-2e98-440e-e171-e8fb5e4ddc91,217357603,2943848795365561609
+6d5dbff6-b3b1-069d-db4e-10d73306a79d,2099289359,11400774433065417182
+dbba889a-407e-0db7-ee9a-e6dc87448015,4151962734,3819656024080067998
+9338e834-481b-9ea8-62d0-194ae78eed0f,1725837393,1224029240541978572
+ada41de2-93dd-36fb-6555-e7a284cd275d,2768878001,1674196408301307531
+2d94f5ba-5d59-d7aa-fb8d-0f48259eaec6,2043126874,18268611260974128831
+29d8d3ba-33fc-23f8-ba86-857470091012,1247316136,218791131645444761
+e63499d2-2a02-669c-7343-7e9427c0d9e4,3974826264,13219672400545098489
+f4aeffc2-ca22-db44-132e-554657c161e0,2203428219,7400720187772251423
+b445b857-3fc9-638c-0b7a-8ef3e56ca562,2911528726,6628896910308659515
+b89caaad-9152-fe8b-e33c-d1df73d3961c,1006489115,9735112173292830516
+418fdb6a-7e0a-42c8-c2c5-21e678b87530,1382121978,3884165042770833482
+ea1cbec1-55cc-829b-0719-a138cac41439,1696086108,13260179390419547496
+aeb00165-fa5a-6ae0-8650-992cc6d92304,1478112842,2069914641263570136
+64855823-aa04-635d-8506-665695aa9905,3394148675,13194776998023271537
+fffe5080-8629-906a-4ec6-1b08488805a7,1971608095,10839806880742770247
+78e60af9-a794-d81f-2aae-8a3288dab6df,27615686,6906414608829536448
+a1089877-7088-81be-8841-5b10d51a3a69,3844948821,14564680157937586006
+6c9db1f2-82a1-6632-c4b3-307a1ebc4996,2104947601,15610158948440253361
+a6ed1c28-3451-cac3-5cd6-5ba265d94cc6,1308495686,3150763624859675666
+4934bae7-1477-5f2e-c9ac-e612ab62d0de,3153903482,5629727100817015627
+378047a5-dc81-81e5-b60c-13a552c97767,2988623052,5973756994790182401
+71c434cd-4eb4-af93-0e92-11bc0b6075d1,3182367211,14570401728489172782
+310fc21b-0e50-b612-124a-dcb57ba5fb57,2249035430,2162245033487032308
+a603696b-2854-042d-c054-e02b9bf78a28,2849466555,4687468585347931623
+6a5e9366-31be-516c-3d45-c3898559e889,3310741874,4090441815511196207
+7e1bb150-3c6c-7f12-570c-07c0805c4311,2942265968,18006076687947019337
+045644e1-99d2-bb37-a9f1-32f41b003e08,1943834445,1479863253478351066
+3f8914f6-6289-e6d6-e6cb-05197187e45b,2392481926,17225264774412632255
+ecc0125f-709d-e31e-ca90-bfb2ec486ed4,2372959346,1466840104635241285
+4cd7868f-6b14-8325-96b8-07cfdc16fe11,56739935,18300496746648091749
+14fd8a5f-05bf-a635-282a-e4b4b09c68d6,2126383467,9432352748844232970
+814be3d8-f441-c6c4-fb36-bc4f61a154c7,123180922,15771264406036363025
+3dee2cb5-8fa6-03ed-89d7-7c00cba9a91d,190732962,8167384316888606065
+027ade4f-9552-8f99-94da-49ed91f45915,509664706,1397984212135486785
+a76c45a9-bfea-4f4f-f80d-6c9368f79f37,1531112269,12544771849165572602
+8442295b-8cda-29ff-9a8f-785ab68538ae,837381632,16766039568309476476
+175efddf-99fc-1d01-abb5-06c50547be43,2922434140,17200413894115242595
+15a21dd1-f271-c52c-cc04-24d3df213f41,3258850361,1819111073487572040
+9cd64fbf-2f15-d730-d093-7be3fffeb537,636798338,9276159004863203747
+4230d9a5-5a8d-ee6e-a1ce-461b13226785,905258267,5155734121463468726
+f94de95f-3daa-4d03-0644-2ba846819a70,2318620700,11109781414197249274
+bfaa9d50-fe54-6e30-d065-48119e76005d,4175711127,11466835796836642234
+95269d30-a71f-c000-2236-3fa4ff077cd4,658197271,9906517701732365760
+dfc7e0c4-4369-b10f-312f-82c393841661,3652017230,942828085893277535
+6b048d3b-829f-a4dc-d42b-24a6713a307f,4289394445,9073111349296460159
+8cf9528b-4fde-5470-a476-2fb0f82f1147,179435129,1886237398732458637
+624a4378-496b-88f2-c5e9-ecec6cfcc947,1269979132,9922065668384897739
+a634bada-1480-64b8-8bf7-997ab2cb3b0c,1405914914,10736366384696146165
+dfb53c6d-d54d-007f-4d0f-3e7904a9e4f9,868876846,14109172509685984392
+e866d799-5023-6866-e6e5-92b0e2220026,3203488669,12217747117872706355
+3d2b3445-72c9-a7ed-fe40-0d95f969d159,1461809403,14916102366463771903
+e964c12f-8b69-c36c-d6a3-5700ac6e3dca,2413881606,18223240436093835682
+1f94603e-110e-2b13-ab6b-a608f8af7e81,2761279629,14440593146899694487
+9fd09a61-ba73-1e25-827f-bda8f10bfd8d,2517734210,11573949134612652133
+16c2d86d-8551-c537-150c-a6680dbd9d30,1745426709,7591497613876112743
+869f8bfb-7091-79d4-251d-b05b55fdff3b,2362425135,282458182020555616
+f0ac220b-f8b4-dffb-fc90-a8b18f9ac1f2,2740802733,15275584541421440359
+9994df72-bd6a-7f6e-1de4-df000cbbd19c,3439471969,15601280454530338262
+f1d6b07c-d653-5739-5f7a-6993d31bb82d,3631377105,17225991813640321129
+45b4d8d7-304f-f2e3-1e0b-5b37e6168697,1962957614,12854580109905258779
+90ffef95-f53b-cbc1-6ed7-0cd755ee3aec,1305660206,3702938577045232706
+0928eeb8-16c4-7d9c-08c6-9566355c103c,858873208,985187576381592136
+9c0910ae-26f7-7e37-71b1-f7a058c3a7bb,284015277,9533896997695642729
+cde420b5-4213-e2d8-6c79-d5ab9c733e8e,3336152692,13913366174538002718
+bc6db545-0843-8ae3-998c-7a319e8f8ac4,1042354358,13295692062150318111
+e8a09de5-4519-2de9-4ef5-61832aec890c,4231386743,7652165716622328629
+93c9f977-7344-35d2-385c-d444991fe5d3,301527006,4471553385111892771
+f8d920bd-5b5d-cb96-ab16-9dce45578729,371109644,7876113407217866519
+08b39455-6762-cff2-747f-73fba49b4b1e,3790099355,2869582641056635235
+e96d3a61-eba3-4362-9066-c05d1d84f418,1445527135,9886031982959356588
+c667ad70-e0a8-ef0d-f2ed-64067e2b8879,1247816914,10572949870552722227
+00a36cd0-1c9f-2a85-b0f8-234001e3c976,2295342580,13821247617675637765
+ab37ee48-fec2-a7b1-39a6-1efdc2a5ea8d,3414037346,14243968892732192884
+78106375-b570-d701-caa4-42578262d2c5,1008889663,7085843200811741242
+6d339329-b79d-0ef4-018b-fe79a38a2d9e,196294996,12373471904834014613
+9887476e-435a-d26d-76e1-1cc23aad8a04,2990990368,15198266446891966257
+c894cb09-9ffc-8798-d7da-5c4451d894b8,3188601365,5811426510256754256
+b06f9c2c-bbaa-b038-3242-6ab4544d6b00,550974727,15212133101860540168
+dc8acf32-8d20-9fa3-ff33-eddf0ce4531f,3313523919,16770823724685011916
+9c8ced42-26c9-6c55-090a-f11803d18d39,1534073524,10426727673766198250
+d7540a9d-a5c2-c237-a639-9dbf40b24d6b,2494743088,9568379846805232227
+aaca80c1-046c-d709-d482-98ac51a490c0,3418132337,2989092370970548106
+2fc13731-3170-fe66-754c-13a31b4de86f,1197259805,8237341660377643745
+219e84b3-a0df-5e5a-0d8f-0663d9a833a6,3565043537,21878260945060378
+c061688d-891e-d339-e635-7c234adaf632,2553404985,4158909722583345882
+66551f57-b60f-dc59-23ef-83c9c82de629,661399020,823297724929667626
+6fb0f385-fd3e-ca9b-5e78-e0173e14e765,3206238079,230350970367749730
+1b680670-33c9-c847-f569-506cca7b3f8f,2516586013,8013158609208846568
+6dbcc046-baa9-95da-e7fd-486a4d457f79,1886949584,9533260780468422604
+536c2ff7-92d1-2028-9d3f-285d97a16d72,1457581656,12797890358478406628
+88291950-d3eb-1aa2-9b15-6f8ffae07a80,213343956,6643554295089615628
+b4b20640-0a25-d0ef-5ca7-0923ba44fa69,3837763155,1028332910773706643
+2abb297e-f78b-a0bf-bc94-d40aac8ccb93,71768675,17465788347123078698
+b8e2e26a-91a0-e20d-e4a5-ec5556b3ab95,953256256,2256119093041750519
+1b5fc8a8-6318-2af4-d901-28cfe4098d48,3051623300,10554875197889781821
+a3411afa-3dfa-6789-5e20-64aeb5265cf7,322358177,13816344932013923798
+1e910761-7945-08e1-f569-43cc13a58678,2286510479,4821453054529311851
+c276d6a1-2bc6-0b2a-944e-ea43a20b31f5,394297178,4959268054968731825
+afcc65f7-3788-7739-6739-adf9ea19907d,3481776447,17694499218365335148
+baecdce3-54b8-e408-7b47-d91a8b256242,777750577,3563461278530413369
+7b2974bb-6791-f323-e62d-36d65dd4d20e,1003020962,11674914436095299378
+4dd46292-b85e-179f-f6ad-957745822e27,731569286,8593834905130692029
+9611e9d0-8637-040a-cf6e-f912c88bb423,1197196305,13179933272885219468
+b4e7eb07-c5ad-74da-d0da-1f3c91bd88f8,427537950,2389090133047712245
+6589d940-b811-6ad4-67bd-71a317e4776e,1582648827,16262676069427809870
+31315d2f-4b41-5b2f-2d21-f6d084f9d63a,2629563364,5692221098408932318
+04aae9cc-18c7-bc24-2ee2-7caf791d8e7a,3490380235,5753154221879507000
+b43db793-06a5-8c4c-c5bb-cce274812f97,1683831396,9235616062088477645
+2ef2f1ef-3d03-2da0-e759-ea3a36da66bc,1253901167,4799611550676783180
+72474b44-8f20-a5ed-7fd0-69d7233f8a1c,4288887564,11191780347234850422
+89c1d402-5c55-4fde-b4be-c9829655cdf9,1694988906,12109965088132139358
+71041cfb-bf1b-ad6c-83b4-24d05909b783,120658446,4415323736063170840
+684fea0b-ede0-2ce0-0fd1-88ccc5061b36,1975040372,3575829572745898852
+473e2749-6106-16d2-b6f9-6e3224560fa3,594555268,5336197493525276585
+9d3ebbf4-438f-0c35-0adc-1d51665b4bbd,348717072,2013305057974202177
+34962e07-d116-32e4-cf81-0625b21294b5,1298509083,1742238515513360637
+41df8ffa-6b78-0cbc-24b6-45ccdea1840b,401171358,12937130874171239166
+df3c0bb6-0995-33ed-b367-ae5bc01cef6d,3917174072,518203623039841020
+ec1f74e8-49cd-d564-ba33-ab64dd508c0a,916847417,12302565189757073377
+fe87a8a2-5e38-9b4d-e9b0-72f868f98859,2945669809,2878313017433615013
+3540fa88-28ec-3dbb-606c-69ab090fbd71,1269193968,10856580549264055328
+913c2c56-a757-1900-d32c-60dcd8122ec4,472972035,7619464546609443625
+74bc3fd5-c411-1649-9856-83c59bb027e8,2105552514,11323620724227559977
+b054b8e4-b7d4-99dd-427c-80965fb47b89,3240889328,7743902135468434942
+c7f7ab41-89fe-0bf4-4b17-f0e44fd244a2,3581504047,12140357600983851379
+011a5b07-da57-e57b-61ec-cb9a885f663a,621576566,16995761629660909668
+878329fb-6f47-9f5b-58ab-189fa3d66131,2873914911,691775408409859945
+ae3c35df-872b-6b74-4a72-b69df9ad7b65,365289049,9023210436730633630
+65a24444-d22a-d31a-15c9-359336a97273,150155990,14340325559682557418
+58465f28-7e4f-9128-4529-e17a155eb7fd,1507847887,14037226101619321134
+8585537a-ab32-5ca7-503f-2bcb5a179ca2,3006048807,4473418457780983072
+4c429c32-cb25-f340-f351-7c345c6ccb08,1178073174,18242235227968032958
+98207174-bc0f-68a9-72fb-52631ce17e01,90058751,12765479601205792779
+1b15bdf8-e848-b471-a3ce-ea7520669e65,1455573266,11032311168008706020
+64bf0382-08c7-2226-f6e0-68a7b03be6ed,3467490220,1645276915741267255
+4bab4dde-fd5a-399b-8886-9bdd2d293686,3414685466,3752960434574666927
+9386935c-fc4d-b6e6-f73f-046d0ac37051,1341580269,18159634152187221700
+0963a884-d283-9eec-5207-bef9660e4283,2124919032,17710353414627561521
+e723c426-dff5-bd44-ef9b-0767b5d11d3b,989126058,1406673118729024145
+2ec812e9-ec4a-ef81-9052-eb2c8be46358,1335916194,14593362719919351424
+de8f46ed-f6cb-5468-900c-6d400b8699d2,1203539537,807357989478441094
+1ec4c752-a17f-15b4-eab7-7618980bf825,625864635,1124630928851335437
+c8026535-efd2-279d-60cc-e458d1e370c8,3900409944,16150554696689761270
+c20eb9d9-2ead-d6a0-cd99-8a48733b588b,3841213751,4990476748607893249
+6b8d918e-0cf9-470f-a57c-456a6001c942,2067082015,2730623916935959213
+613305e3-081c-38bf-a51b-61ba0c501cdd,4292743675,2471718341505129760
+ac1a0c49-8f0d-23b8-7502-b427cf7a05b3,4170858707,5387478339659786289
+b766e9c9-ad1f-834c-3804-2dcdfac469dc,3819733044,5378827402923961000
+0cac5cad-3d7f-2801-f113-6c57bf5b3b30,162126418,9201988880409931507
+432fcc74-6b5f-fb01-8a45-af1000101108,3996426539,2613600145272892666
+194747cb-c7e0-7b13-a4f1-0962254d721f,514303864,10455810627750554708
+6824ad84-dbe7-6cb5-b569-04dc04f92ac1,1194865851,6137630197020856880
+7c3cc093-2088-131e-c860-702ac12b45cb,1571072696,1310088784080639739
+69d42d36-5af2-10e9-3051-2cbbd8f97fbc,270011673,12506198442788616490
+c9b8254f-a36f-a44e-af07-a226e13ae81e,3673866105,5284553715218384705
+87843daf-4d21-550b-1a39-c6e28aba7632,3949737692,2134448743660162142
+f724df9e-115d-edae-f5fc-2f53984b816c,787696901,17150734404967337584
+9ae612e2-41ba-4284-c717-f4ad68bf62cb,1842923698,4684645152863265507
+0c11b509-c7be-24f5-75a0-004edc6eeca9,7766008,3212053304538670574
+0752668b-4fee-e52b-7ce4-50ba82f379b3,1953586347,3941188227648050195
+3e2fb1a2-d2df-33b1-b8bc-44643bfe6fa2,3767971199,1433341423342929323
+2e5c9c71-abf0-d7e5-4ad8-1f9475581cd1,3612851977,9964642243480352400
+eacd9065-b636-4674-6e7b-7e1e734015ce,711491136,5632143686169172832
+f4785a75-2d0f-0fd2-6d33-57b3ab6a933e,3768556349,1217587148469233697
+1486dcba-03c7-7c98-6a05-666977e1f41a,227850231,7589957472752795681
+c8ca160d-7bca-f2cf-dbde-e836d7410296,1097768486,12884632141120957614
+4c065ac4-348f-ee76-7028-27272e16eb43,3820463488,13800009520315994654
+7c31eb8a-a8df-6f60-c003-2d418c4f5b45,3452182890,14464145484122980243
+4c5539e0-5e6f-e3c6-4d3b-17a5828c80b3,1968790116,12763728570570368966
+5cab4690-652c-4fd5-fd1e-db8ac710fb70,1492633609,17244779985461187287
+98926b28-6a03-3e8a-c40a-c661220dba7a,17498157,7332670012698570907
+372c7bbe-9981-9753-8d58-85f72e456f9e,2483599221,3889160073411882
+8df0cd8e-4944-ff7e-1922-ed2d8237f400,2860429116,8155415261907782188
+7a61695b-08d5-f86f-b303-dfb49870c393,1228466938,9889561101693748020
+c164e6c0-28cf-1472-99c9-f3925cfaea1c,626143281,15607660024209777393
+07b50525-e918-cc1f-0527-a925454f7401,1488813600,3471941083497497410
+6773486a-2180-d735-2708-ad4e3a562480,113939340,756194685401204030
+3989c888-62d6-8668-34da-7f5e339ede4d,1041209316,12441133134176614046
+715328ec-6772-70e3-246f-04a539543074,473687770,16042886182322810381
+b42186b9-0212-82f3-9199-3acbaf14868f,536304409,4505241802856212072
+b8f4b687-73cb-f01a-6e01-712be77b5483,1121351822,12626284925115831906
+9137808a-6b7a-5ef5-6243-22168028ab6a,1183055634,16489185087189796176
+200541a4-8b50-a412-a998-758ea2e97646,4196710729,16160465960438737585
+774a0d38-bebb-319c-5000-615dbb35cb3c,964494688,7856413355370219473
+9d4f3b96-31d1-544b-ec06-2e1c272f45e2,1447779840,10316200370895472154
+cc76e8d8-e905-bca7-4a0f-a9b413e14990,1513064914,3889852888018440945
+47c241c8-5334-3506-e910-1ab6c85ab67c,3282279895,7563835680860033311
+f01cd9fb-7750-cacd-039f-91ae917c73d6,998588743,15206852426597558251
+613fd11e-89f5-fc9f-83c3-58fde5259ad4,2910815777,13318034437476183530
+ac133815-e27a-ff00-3590-89104d5251c1,3980759130,1309829235313292998
+b16c9326-6b74-0f9e-7704-8ab4083293fc,3974738911,15604349040995635265
+fb954def-dbc5-f16a-e785-20b8a0a42f86,2841294054,2590930901114192086
+ed7e8a1c-b09f-3cca-a387-11c36129ec46,2720611356,3165687979175783862
+8b8589b7-d1aa-7f74-4bb2-d3ee12c376fb,1190589913,2007396197517979460
+c27734a3-c710-147a-5a1a-b92e21ac571c,2209944091,10609770578640737187
+b683843c-9a54-b78f-1b6a-026bdbf2084c,2615158866,9951683909963689118
+9e395e51-3229-5f00-b348-316c6bfa4f04,724260863,4656386115843090473
+da12f446-0987-9edc-d5c8-6daa06ebffdb,3966245815,6250979371790744300
+933a05e1-9f2d-0baa-e542-98cd6d00e23b,3069419298,9412244066637595190
+156f9da4-a283-9171-12ba-2073d9286533,2135671757,4251804372713752657
+2178b428-d278-14c3-8578-8b6f25233f7f,2633795943,4850521259158940910
+42bcc6b2-aaeb-6b70-8ebd-91fe6e0b5f39,904163887,14438708901216434115
+54992fc5-d208-3cb6-c5b3-1004573295e1,1620975706,6320912296610687199
+cd102ee6-9797-1043-9708-29f9f0fca4fb,2998543950,9419274089972957725
+320e8787-eb62-b5f9-d092-a608d2fc3508,3084123388,4351288343761078684
+b2b0a8d0-c853-9e35-f647-4cae363367c1,2739653353,10993308981718589990
+6da0a938-72fd-25a0-77a6-0453b3826a0b,1686594934,11463062515110412984
+e845ba1e-ad3f-1765-68e1-c3edf7dfce00,3023379106,15120866675685959316
+413e21f8-869f-d110-8cf2-374f84f32a07,1450741651,7557994042500180460
+321efb10-82c2-d450-6fe5-19fe30145444,587707402,4394286191442211695
+c4c16a08-063c-d613-77ff-610b32c94d6f,1183529434,13518303521373567736
+6ce45978-4f19-ffbd-7ffd-a48bef3e149d,2602004045,13471657385829317810
+964f76f6-c08e-4e83-353f-995b937c7ef4,2437397720,11710051359985957651
+22371d9d-f2cf-5f86-3144-d534e310068c,2686553649,15485312173433151975
+d7eaecb0-28f1-dde6-2c78-fc9d4ebfb4e0,111185398,2144672279248127356
+5dcd31d1-04fe-baf7-9886-a5793129d9cb,1530206702,18045503246252505733
+2cb21c8b-ce14-97d4-14f4-e75a617950e6,2812904478,24350551619525255
+b591b223-2386-2c07-8560-0f67b236c291,3661430252,8784094778579881809
+bce8092f-b778-790e-f420-8b1d27b8c8f8,3041156636,13808755192462409739
+8f01a485-0fd4-914f-fb76-a24fd2590cff,1143271555,4686339620887181916
+d0e9430a-f4e4-f253-7e89-346e542b1d4e,3062775324,12867476129185847836
+8923d4d4-65b2-7720-8e47-7f1a657ce52c,3761950596,14929511627140379781
+e279d9f7-ccb0-e49a-e2d9-97ac73ec7da2,4116420410,12583768831829164864
+13e078ab-6ea0-67bd-2482-d960c87d2817,3262836304,10905040598454972319
+0f490c1b-6262-c52f-e396-75a2f4191a3d,2996648072,8341139190281703802
+04413f27-0657-6d92-2abc-ab37b5686b86,3696958999,4223650869757710049
+a6e980ae-30c8-b41b-9f10-8a33c433a23b,782119347,5083774042636672667
+85fd0400-30c8-d35c-c52d-331e71cf76d9,174956817,12131386116385380661
+98ac0b72-41d7-0cb3-448d-262debacffc1,3521409900,4392440464869010316
+53deb590-fbb7-70f3-1107-30e2232f8267,164030959,7216359592527288794
+89c9e6f9-b26a-f6e2-565b-dac84af5c729,3720203094,13765042285714190629
+7ae6433d-e7cc-0f2e-f594-1fbb8a726210,2726914609,12727304435142547513
+1f650888-2e48-d71b-70cc-3d11a2ecc39b,1201630202,15959199780026067657
+b040ebf3-edb4-e7de-5bd3-904fc8aff02e,4176754319,14818314381092749149
+c2e2f7fc-fa35-ab2d-80dd-6aade6302088,3416404243,17393122647776092255
+37e01d07-c720-f94d-c5f8-fa8d06fe43b3,4035391773,629024848894428150
+27e9503c-9184-2e69-8954-c7d91ccf3caa,441244416,14732032248580820804
+dd010fed-5efa-05ee-b8fb-d2b4a777a8b7,5637849,10812394723966645929
+2e04a196-3705-ab18-0272-1961e4d2e5fd,1980477333,13282374315458776657
+82710f79-1a30-76d8-4a57-c89a5ac9de7a,1477487495,15591645382200918501
+28b3d5bc-6da1-4d33-0f8b-1d9e83a11254,2800113924,15507720640490625775
+a369804a-e244-b704-63d9-f94545ec6145,4174152579,16139652078900983863
+001e215e-0f4f-6bd2-7e63-d052e9299486,2795706142,2590920400877761467
+a3a1630c-b79d-b92e-03de-12d3e18ced37,3975703257,1330935283739149221
+ddbed14d-16fb-ff9a-1fb8-3a63f507acc0,2706936430,9868580329185998832
+8dd6e966-6ed0-4b0c-7a8f-d701c9d412bc,1811531326,17458417527424504144
+fc9000f8-a30a-0f05-cb22-164730d392e9,2567655066,14924684637423216564
+1b312294-f07f-9869-73bd-ddd5257217b7,3554907425,7629995364325008443
+8bda19cf-d19d-ce1f-4b5b-9c79dd8696b7,180896011,8171057653836058098
+745cd378-57cf-2e6a-6208-1f1d311beee3,2912276896,16874089730032402864
+f45519f0-e2bf-2436-218b-f83d5c19ccbd,2790753875,6910007471450862032
+457dd328-c2d8-8e5f-be22-7f3e324c0b4b,644146414,4759732522722501031
+c9ef5c8f-7c27-c437-d7f3-6c77b6d18514,3704238422,560391561695389523
+63f2b272-e648-b71b-4f4b-d4ce36aea9e4,3444915247,2128062788544770597
+0a5eadcc-a499-15b4-b190-09ca98a92699,4287127018,9983559274032516874
+07496f32-f405-93a7-ef82-b0c2c790e02b,4128195943,620787330788536975
+f516eb49-9942-9176-6446-85ee04b608ad,2972717603,11376239312047104221
+5cb6efa4-6216-dab5-ad0c-fcaa6c63af9d,4191324158,5581095105302381991
+387ac6d9-103b-5aaf-cd75-4008a3373f1a,477144036,2459862624942287877
+513e3599-076c-ab0a-3ac3-5f69fb9472ed,2540534982,16935087074185864037
+7daf60b8-d451-d896-fa5a-ecf514df7fb3,3789505595,10935363454271116399
+14568e0f-e6d0-0800-b058-14a63a67802d,1585332677,4408523354836475569
+cc3221db-1a15-d8d7-f0e2-2d751daabdc0,1459437297,15973749808687383244
+a8aee252-20c5-b278-2cd5-fb409ea0f5e7,2521662004,12315974345605771981
+5441a2cf-2f1e-418c-4c38-9fd6f5d4d74a,2569442946,15227260511725226935
+ee7b4e93-0fc9-644e-a7f2-46bade892a58,3887610739,2509647709495670589
+ded0c687-b2cb-7a46-f334-02e346bcb3c2,2208091604,14329498220316267327
+d4ad2ed0-4c9c-a787-88cf-fb5068c7d5e1,4010882387,12422508928373103078
+448e043a-2c89-a173-5231-b026b42ddd5b,1758889335,4483533008968331367
+585cadf0-648b-0df3-0c36-ed94732d2353,639508935,6780795458887849909
+c740f1d8-98d0-d9d8-c804-23d467f969fd,1183385047,16410824647982743425
+e8af9eb9-e6e6-470a-738a-e7356bc55a71,2805818700,11455497173369227608
+2f7635ab-ab9a-f9dc-d40d-04d4f0167ed6,2011948373,11982278905722556078
+6aa74faf-c718-d53d-b12a-218ce5d27e17,1026793900,15424701155346799856
+a907d60f-4d35-2b06-cbe8-2410bad58e4e,3974015096,10445080940887514541
+dd896728-725d-4862-005a-96d874da02d9,1488038232,6252723590724417210
+c6bab1a3-42ba-7ca1-f491-6e65dfeb0fca,244645957,3257250852684775523
+7c1cd045-b6b0-9ea7-a990-4ddf46002ab5,2954066190,2684644733671278870
+5e1a167f-3a19-549c-19fc-10acb30f007c,153456187,10050799004686650365
+2ae9b72c-8125-8460-2f18-5157ce12e78f,2820762942,18314757361707172098
+ba946894-9b88-62dc-d710-531bef3f769c,2015235011,12324166279187690944
+a242b31a-f3ea-f759-270f-a954441908e1,1489605969,15798875822228764135
+845b8890-94c8-5100-6adb-da69c3c8c556,3005872904,1561330969672166951
+2182e5f8-c0fa-2878-c84e-a2f660286f1d,2213744137,723411960160819092
+0c52e1d4-c307-ec22-93f5-9f0deabcefe2,328516342,18432529687101572793
+9138c0e0-2751-52d3-fb35-dc2f0ea687f0,1948884247,691757361095130865
+997314ba-59b6-061c-e72b-c9227db70bbf,275912963,154777002342665615
+cc393c06-a7c6-60b7-e726-7e1882f60c26,3960832714,8036933220471831066
+e32a3ecb-c5e6-d0f4-8a9c-faed9f75c0ca,2812371319,8331487700179650630
+2dc3c885-b242-4a85-0b8c-f410483a8fbc,640491911,16390475688497318546
+b4fad8bf-afa5-c757-c041-71da1452fa79,856774004,80054590778765944
+5fab84de-c173-c777-7282-9def9124a5cc,549285111,7278019417873719157
+32ae5453-3e8b-f2ba-c032-07e9cae45bf6,1068673567,15786707647838565531
+f7c65dee-ad15-4b3e-8031-ab1285713995,3122259581,12359282565566236666
+f9251ef9-94c3-7954-3423-372a73893d55,863977103,18164232048067893434
+022f4beb-5988-7212-5232-1321239a7e3b,1690336663,17508958291231066603
+0fa525bf-d065-260e-c59b-e425bb284136,3035791119,1227643594987199968
+a477412b-3eaa-f896-9c8d-69879a2bc9ba,305919808,12816454593765797841
+82f3392b-0fe5-1d92-bd1a-6e7711bddd69,2705782721,4021451524187859130
+7bdcd4b8-374c-22db-97c4-aaa864dbc8dc,746077533,7269130287281675472
+94feac5a-8679-c086-a8f5-c949127b9414,2559594771,2469574212093181145
+c31b5eb2-7206-3b02-3d97-d0bbdd7271ce,3519815468,10537097482735526823
+90906bc6-e5ed-483f-9fc7-214c016d8cd9,3844586516,4860135613535140681
+f3066f8f-00a4-173a-2051-4001198316a5,2529587396,674809565359483181
+7ba99eaf-d1ef-eaf8-6e11-4b2eaf678f74,2604361520,16241176137322809880
+628a5f42-0b15-5cb3-4d9f-ac532c5d92cd,3928188118,2072637511294845191
+ff54d322-5277-3dca-11a6-3c2b8f56603b,2292389712,2908455947369705221
+a205984f-71cf-7e60-069d-c313d258b167,551342720,5449751739908536420
+776f8538-007c-7532-82ef-54a1c47438aa,2827503959,9034756386650569633
+3f08d9c0-fdd1-13ea-29ef-73114be67b4d,1916061744,13607224860130701839
+e916d704-a6ff-39f9-9c9b-81404757ac55,2641209711,13594938672228552177
+4fc8a9c2-fee3-88a0-e8ad-9c63a678e755,1715399365,1709060211115474250
+024e6391-38ba-322f-fce3-6d9a583f1b74,3793704107,2638349297748943347
+08ab5424-2b8c-2989-8f69-8a07817eae95,3833848088,1001778148251418988
+d7b6df32-dd02-c5d7-7fdf-a6b3af2a998f,971741314,2206974531635667769
+77806829-18a1-074d-23a5-460c38ed1f91,1443392762,13725688574150390309
+eef05225-f568-e4d2-43c8-d5ae35f9c2ab,1408945228,10761633892300123481
+ca179f62-beb1-4d1f-4490-2ee248eb2f72,1780117444,11283911901561967904
+5d9605f7-08c8-4c6a-f778-51f2d398f826,962394100,5315785731075155317
+d4dcbf86-21b3-8c42-d196-fa041d85fdfc,2185571481,8297493962304921937
+97619224-c51a-9070-11f0-c37cac6b76df,2135330688,9933013882049811887
+6bded775-5f23-b31e-fe97-e436eb7ab2d4,3543136775,16128968072740648698
+2267237a-4f32-12ea-d38c-b833a7199d28,406201991,3789060487279827286
+338a503b-2090-0ae0-315b-f099e7b11c2d,1710164264,7512881349365381578
+61cdbce6-764b-cd5d-3d16-eba4b9f44331,2473278326,3298747028618222890
+5c0fd44e-5880-9bc1-c81b-1fb5e440d1da,1293818431,15403696051614002471
+447f7bbc-fa50-6d01-5406-b05db2d2c9f9,1791529314,4336822883891238150
+da899075-da6e-db3d-39f2-ce181cae42d8,136067540,12578492480729764419
+85496768-ed36-b2a4-55a0-6ee1466cab9e,1932101729,13690604340832133035
+c6fce133-4795-e4cd-d6eb-b0c0742ebbb5,2746818026,9823611983484871424
+7fc4537e-84f8-1182-f41d-c94242104098,1630079922,11346464329932714058
+1699ff8d-3fe7-135f-c429-7faf6c7f9c6a,1208947234,12915836718791115656
+7f231a94-403a-7b3d-8572-7fad33210bd5,895138490,774858504299789976
+ea02fefb-0529-fc69-d2c6-2dd7679d6625,2295113319,9483549321627063265
+f8b53b4c-b2de-4465-5dea-735008822f97,3750207132,14912312927327149066
+96949db9-f13a-374a-9b39-3fbcdf9f8eba,2386927150,377547644282842459
+b15dc3e9-ebed-600d-971f-2b6dbddfc59b,853305282,6556960539513282743
+29fcb261-6dd3-3d2a-4471-cdaef96cee4d,962741654,15496522487867704587
+b6ba818d-8954-1f42-e46c-c5297803e7a5,1128214982,348547150380521327
+86450145-3a9e-918f-925b-0fc00992777e,2174454787,2857610058982462698
+94284538-e3f2-1a17-367c-bc51adda483b,1514658577,5787633804337723948
+0c9cb104-200e-a809-93c7-41efc17cd4a1,1122831843,5720776320384295243
+89a15dc8-4d4e-b552-c1fb-50df47a4d9f1,1590042853,9010110201405085359
+67437894-58fd-b613-1a4f-bc046ee492b6,1856530885,12914680875925006439
+dc9d6d73-10eb-e348-dc04-748952174ccd,555148180,4843152818358178785
+67417db1-e832-46be-3b29-cd3e5732eaa0,3706358115,8569702775171503266
+0311d7c2-0558-62c3-43c6-70499d9ec9fe,4080852905,12352198695082702728
+58003274-687b-4ece-6f2b-b85ac9d61727,949654935,16330747000232202413
+9c746e70-e5ba-ac79-36d5-dd0015c16cdb,2538639363,9793720728449595893
+aa9d5afc-5a18-f3f4-bb6f-40e68bdedadd,4285003617,12244092697786048722
+dd5668f6-2b5c-c437-e45d-a235e8d5e1c1,146371733,3267470264435455837
+c62d8dac-3a03-101e-2037-79904355d58b,716129702,4990527915864750406
+e6deea67-abd7-d9dc-a552-087a7c117aae,1884589034,10042377976688623062
+9a78af90-145e-0f58-38cd-eae29442abe1,22085287,16466530863098151069
+f399ce14-ff6c-044f-4560-318969c6357f,767660115,1588434620012077951
+e17f3def-f97b-06a5-bfc3-e9b74065d1da,3518112636,4924989492243731784
+574091e8-0132-eaf7-deeb-b6b165a3ecbc,2781237653,6067534541839921863
+84034136-8375-0814-c038-dfb69f2ec779,3070726897,4424056478816043384
+0eb0d410-cf16-e86c-b20f-636cab6291e2,511428056,16816075542615881250
+b89067ef-be33-152c-cd6c-c7cbc81ee3f3,3081453137,15197680757331445710
+2161da59-e45e-d27d-8f20-5dd13e9b505e,3485629920,3810258720065512830
+44fbfe24-795b-82c2-393b-1fde80dee603,1755767854,6588742668649634186
+b178d680-5836-3690-6b9a-63877d772fb4,2988730360,5030460553019899180
+272796b7-78ed-d09f-d6ac-0a015734402e,4259806211,13217395878198948500
+4d798253-ce0a-1207-78b1-770d342c3c45,1511929946,13623069619638566485
+f7222abd-58a1-4a48-3d34-1db717be2911,1492550980,13828988456581660212
+6fc9dafd-ca29-821a-199b-d4d736ce7122,307792983,501343318658096347
+7ff9d1b6-5747-6092-0691-699133cfe0bc,1465799280,12005073545801496385
+c169d546-5d4d-3a8e-75ef-4b1a48583d17,3506655968,5319783262626590790
+db4fda36-5fa2-2cbe-1694-b4e50e34d8bc,4283939943,15036362779183483437
+51fc09fe-f905-6637-ff98-30b28b5d2cad,4020166995,9838763156732554061
+0c2532d0-cd6b-83fd-e6c3-df38797b26c5,3450645706,17961270198267713480
+ca70b7f1-dbae-72e4-cd9c-ec0005a427f4,4017329519,16394046993262519541
+563e040a-acf9-2cd0-fa03-a774c51fe90b,1264576317,15198142797197681079
+2d12e52b-4148-6b51-086b-fb594b5dd5fd,345581803,17479607702389856598
+ba3c5aa2-7d4a-83a2-6b38-0eab5e31cb63,933900217,10315931820995252864
+4cd00986-0cbd-0512-9616-e58f6e8e8d33,1022640142,10312720480984627023
+1a4da846-7fd9-5ad2-7fb4-9235960ed4b2,3544300614,9320025405327809730
+e4988b00-806c-20ea-c312-38714426b604,4143159221,11779452116851328865
+2226a5f4-d59f-28bd-266e-dc8130698a64,3270415262,4955146396856025569
+c5d502d3-871e-7d7b-7527-e022bda30746,2749223992,929076720802912033
+2b77800d-94b4-810c-7166-22e405e5661d,3019600956,6733258749552614211
+58204742-5089-d867-02cc-d636468c3c66,1285226394,6807254550915891801
+1c3c66f3-5ce2-b32e-2737-bf46cf826cc2,3008202112,4887809316921484906
+6fb1aef8-2bde-600d-c7d0-8313fcea968e,2173052249,13719280399961286631
+8abeb6e1-fcdf-26ad-7da0-eaad29c5c0c3,2242908744,2589608179746965681
+24def45d-dbbb-91e5-de89-faeecc1e61df,834312469,12518490064344860016
+34984544-ec26-7566-5fdd-c5444e98e04a,2143460822,17289888215035836843
+c50ea2ac-6f0c-6765-e0d9-16d32194adf7,796026991,178185693171348634
+acb01105-5204-704d-f12e-174a172b0714,3038364905,14298406521516292234
+ff349196-d11b-409b-a30b-951e9d0f9921,3120173580,4853561182836161569
+05aabb7c-1a21-1c2b-6ab7-81fb494ede31,423698950,15274897240864907986
+ee82ae28-4235-59a2-c97d-d8d5e6454d4b,2059363180,9498631688678340748
+74001bde-0a04-0c19-f381-812f6503457b,1373181421,15151380937953914411
+ce993c25-b34a-77c2-d3a3-fc817fa41b34,4063476553,12063071508307776439
+9246e835-d0d4-5307-69bf-a637caab5911,3265346299,11054666958070173793
+0dc345f5-f20d-fd1d-9d1d-58969c30314c,3377352671,5241261714194972740
+9d0b4910-3181-382e-f49d-eeafd3eb6af6,2249381046,13825789128446272667
+8327477d-9570-470e-a1d7-3dc3c14f7ad2,2975871281,17916846231457148006
+8a31c31a-043c-20ea-595e-ca8cec12423a,1184430415,157913969976174606
+063e265f-841e-f6d4-1c60-94c82a645628,146005359,17920875478542221879
+77440274-950a-4d8e-c96f-8692467958cb,1546426968,5966358949883702040
+b733502e-c098-45b2-3697-63aaff8b8f44,2015598603,15812903454840669412
+bffb3f1c-1b52-7ad3-c17f-45bb16160d3b,1572703878,14998506125649249803
+ece54e80-8922-3c9c-9263-e6abed70245c,2907095863,8275249182215718832
+0f1d1db5-f699-3dfd-1bbc-a775bbaead91,841259726,8464345061300777311
+a48100b8-b3ba-6b5c-4167-829547cb2168,226098740,10646390918371347783
+96785527-d713-0e01-0347-9e80f46b96e3,1274776911,3482201964966703248
+bae90bfa-f7f5-6e2d-d5a2-b2787410472b,1230088342,10148699361298070252
+c4b2017d-e313-4e94-4c82-dc5c69bfc7fd,4155053012,9914677580385007593
+8a4586bb-6151-ecfb-b606-ba3385fb861b,1147857674,14920706071817135746
+cc7432e4-3ab2-8a72-39aa-5192f8e035c8,1582647703,17940901875170755250
+f0d1a2bf-5183-58ae-6d31-429df47ff278,1108128763,1564097070052646887
+179cf634-437a-3eac-b441-67640a0e25bc,2290904081,5569119106606806620
+6931f845-4bc2-d5e0-f5d0-153455475fd9,3541010062,7899745212932877544
+f2a1822e-4b7c-0fe2-ea25-f06ab26ddbc6,1846713679,2940979036531152857
+249f925f-df21-6e1c-6ddd-d6182c7a061a,2336378646,14631876044963183935
+401a9a11-7831-4375-d902-f54671468c20,1239685723,17955071421062042753
+605dd089-4bce-4d6d-23da-8733bd258296,1552081958,11984825810972191709
+acd79769-889c-3f32-990a-af9b205b4d8e,1120877537,11921633522459096864
+7bf38966-11de-2f82-7714-9f6150b02a12,445194015,9538824496021408036
+bb984515-a123-ba36-74e6-81bec0d0ba42,1542672504,8340799349759201386
+68f36d87-3435-bf4f-cb75-2080628803ee,3819327595,8298889643535314808
+19f7cf9b-8cbe-aec6-3197-fdb3d8be10a5,614980730,15600094839306669774
+3eb17d98-311b-c080-d12e-1b46ae05ec8a,2379190064,12412494824211181549
+d9501165-956f-403f-952c-f402e37209ae,3309217751,9452216052820006330
+40a9b31c-da30-8a6b-8670-c8261c405d67,3131132496,450759724577649414
+11abc3f8-d578-35c4-69f1-e3702638c333,1520086689,8895613765989155832
+52aacb73-101e-4c12-26b7-4c93e3d5d995,4182386015,17077284535850869954
+f5bceec7-d82c-287c-8f5b-8d9783a43c9f,2854269851,3893308247885570285
+5d37f0f0-2704-ecf8-3daa-487a8b725f7f,3200743437,13882653641586575056
+1d35b5a5-02cf-168b-39bb-88569e976208,2786294114,2449960256489944339
+091475d5-1edd-1530-a20e-b4bef01e45c8,776209958,11944217533574195790
+31c90387-8445-01d6-e3f3-be954fa75aa1,3703712372,15152871929480549274
+dfa50ea8-eef7-5bc2-9543-04d146194bb8,2308610504,2918378042864622104
+654facda-cca0-4270-f243-d08cfc652a20,30397084,15966190109417567798
+eda50b37-4a46-4af9-2e60-7d693d9b6acb,3537369317,8279495569938479311
+8cfa3733-fbe6-d97d-a680-88c3e53402f5,197537348,13793995238740133599
+f8e8dcf2-72dc-4b04-64dd-da9290f13e41,2953172853,8382494675413533938
+26d759b3-a246-1352-624b-bf6ba7dce8be,4143778480,3713024451107687818
+0433f030-0d12-af7b-f68c-0c0844850d65,3939384900,3983197786339913726
+50f01b9d-93b7-9d20-eddf-b52178b2554a,2743589328,4590227689722728430
+88e5d44b-e354-6470-5459-05fe1f5e671c,3295336411,4123425423238948037
+15401864-b6be-8981-eb40-a8d2b91adc4c,1042716196,5606576915195158469
+6cf53c4f-9eb3-2590-ae84-b50f3e31445b,2371932176,3606001971972707882
+8e19b350-528f-0aa5-38ed-a63973bbaba7,409162675,7386372518421888054
+27445bbc-a3bb-c888-fc8c-69dbd299e16a,384170424,18092737823146707997
+da04dac8-8388-9c63-5d59-c92775413360,3633671922,9414750914882623365
+6ae2fda5-b5c2-aad1-190f-647c652903cd,146256095,16350549782574762641
+f7543d61-75ad-02b5-b120-0d9735846379,2240180807,8944403132575436292
+c9bd6035-9e6c-91c1-2981-598339113487,2892541573,11302105533934302422
+37cbcf53-e605-c1f0-9455-9875ec96a31e,2472553888,8039720746804964244
+e87774b7-ce6c-e0b7-8378-f87813e99d8d,1752162756,1390031017687125576
+ec3bd04a-ce96-a325-96cb-0afe89bf8418,2763536233,6476109743055267133
+730289cf-0246-dd50-bdd6-0eafe39b6c47,2105232291,11799687665152518604
+72a752a5-bb68-b51a-82e4-0274bd0a2872,2487913321,11839165044633052634
+fa567171-eb55-cacc-4327-a4e1925cc2b5,3838492285,16727297664444357861
+0147d2a2-3a16-1279-fd58-87420e64eb68,3641447333,6145335369408933983
+1022b369-81fa-d701-d283-11903061ed96,652346677,16060973636597312283
+12fe67ae-30be-ede2-2ed4-06acfe0d148e,2659021434,12355034257525628916
+b8dd1c97-04ea-49f4-a322-aec46c5345fb,3551213393,14048691396409700719
+ce141119-2403-d243-13de-3012f0e848c1,3748692737,14022780223859734475
+3fd5543a-1b33-51b2-e98a-0eedbee056a9,1611039119,6399317892058378906
+814d86d6-273b-4ba1-ccab-4d6792697bf3,1880180904,10595231683730062567
+b0439008-d034-4df5-c48c-fe0afce7cfac,3353150640,15369661685139015251
+6fe4e0e7-ff05-b20b-0ca7-bea75356f318,3558968894,667359873337547587
+b4f83f66-ea7f-c081-d3bb-e6d3be5423e0,808137140,8342377082111659970
+942b8f72-72d8-f3d3-5f36-34a0bfb05b24,494234656,10875781254737752984
+493c8c37-8423-fd7b-b251-e1926f896e57,1780796159,3067668100512321135
+aad4c9d0-2c66-682d-4a20-438a18c50a98,1310374054,4073297720816278549
+c3e6e873-4343-3701-c94b-307179d89cb8,819093062,2902738752980414407
+fa7094f5-aac2-be92-defc-b7e2e7c655f6,3643195062,3547273899440461962
+773d1fee-0032-0631-e04a-a0144930e958,2804629237,9086819426904443702
+c7e69082-f4d6-a316-a136-2a651bc841b2,1589801440,18332228674195478852
+27a15959-1ab4-b66c-3e37-199cff557660,1862005686,13153899947538818178
+b64fe01c-6431-402b-083f-65a07d70fd4c,3824274512,10825471691201020452
+674b8522-55b7-1d7a-f92a-002af2b34871,115550109,1856650561394173574
+269ca111-e659-3c6e-1899-e3295f9847cc,936438066,10262258170410323631
+c474fcbf-353f-9f93-0559-fbc8bd59b537,2802732393,6802191554468991890
+e83a2e6e-4de1-a18a-573b-fb0eb39769bd,1373134527,2253642890014833341
+6e00436e-a9a8-95ea-b949-83ba5a7ad356,290111167,9687544061075450598
+be5fa9a2-69ee-4bf0-2248-6ee1b27f5695,4172570689,11513834147319120156
+7e01c211-4be6-35bb-714b-be4f0a282b92,832136745,15358633436124323882
+e8514cf1-ad01-adf4-54db-2998d2553c9c,3729673268,5983826000509468234
+013989a3-4b3d-c59b-6e14-03a03fb5a957,3596487631,1532347952703446821
+de945eec-7b2a-ddf7-b62c-340ea059eb53,1629674064,15302413571309691235
+d3a97260-8f47-2ef0-50a6-e826cdfc2a60,2149176330,15943237696236936609
+05b1ebe4-ebc6-295b-064a-92c4448edd06,479625600,14428642804152439579
+7007a895-3e57-1727-a889-9d43b8f84faa,4269550597,12946230353473481710
+0b1fdfdc-a087-5b8d-a3c6-14441df0128a,607314594,16937857838524081788
+f926cd9f-c834-5263-2ed8-9fd8512b2a7d,1903181561,14461314484970826354
+d94cf06e-1c3a-4eb5-ea32-574e6ca5c90f,2514889073,4167505607852748391
+9d3fe6d9-0493-d1d9-21b8-7683c147ba42,2156744873,11914148710936677310
+abccca86-995e-6347-f72a-de817ee6d3c9,1363693056,7924420311217016074
+746aaf11-539a-7d8d-de2a-eb1b731f8b02,1853764139,2500350642896948750
+96c143a7-211e-1f97-6384-db769d55fbe5,106353394,8295441757699578272
+e36380f0-60e5-be88-3911-9054e243b91c,2167587420,11397690861655424169
+904e9c59-8dc8-0251-922d-99613dc8b94d,424778325,2714419220774547321
+86243e78-9363-047f-bdff-8a5dfb680eec,254398980,10773298489523683431
+fd8c2707-dc7d-262d-20b2-2c9686354e1d,1582320006,16145155991909569291
+8269789c-bfbc-cfaf-33dc-38f3bf1886d1,2030712318,6100874584690161305
+127ebc21-333f-223f-fd6f-31114fd5d17c,1931099744,3099641175454629127
+5f7f0e3e-9749-6fb3-f712-781fa0754f46,654664073,8897357291832444352
+e6fe71af-8e0f-4631-dfd1-880ff7d8a745,2316765214,18304866906379960684
+0079b004-c859-3e51-7520-e4bc3ac9206d,2625185646,8029112178610142060
+ae8a1ed6-0426-ed27-f91a-59d5a691d0fa,1700786950,14380821486288343365
+4c32ece3-17f2-4dbf-8d13-9c56b9bc612b,3318129430,1637220431708758067
+cdedf252-ad5e-e445-378f-c686370e399d,4262229320,5478547140470954295
+4f5a521e-2c57-8834-d207-1b068cf637d2,1801195036,16849378866646333086
+90fcfe29-7fed-314b-ce13-bc4aa10a3562,2852481892,7122940899993233185
+fccd448a-216b-5814-4f44-fad200f466b3,1307196800,1797980589766046276
+3cad0005-19f0-5e3f-3778-27ab2ef3c532,1654852796,16123179213343455197
+bd10a3d9-705c-aaef-65d6-6e0cf1421673,49245367,11694414741171363166
+8d87293a-e9ff-61ac-510a-7eec10f103e7,2612403020,13894361331349225755
+9bb112fc-0b2a-1255-7c51-cb1e097297b8,1457377600,11264493576195002705
+f1a3fecd-49a0-4d06-8a6c-580aaeced082,2377230125,7887929951630645452
+8afe9dbe-fe92-99ab-d7b4-09685ae0e3be,3957421854,15816667530573571820
+c44eee2a-adf6-c651-5bac-cf008001ec3f,130609840,17556220003832957487
+b4d91a8c-7086-04cf-6f8a-2eea5937aafe,1827611063,8793648476770201740
+8b2ad656-bfab-0247-445c-ce34b6a274a0,3438687792,937561862376915119
+92256725-e17f-c1cf-7507-3d035319e4e1,874668330,17212162922709680161
+81bb87f0-213d-046b-8e61-f2138945c390,3869542141,9431621406997566550
+bd8d4e42-cc8f-b845-0e6c-5bfd173753a5,570108207,1105367417700005944
+a5fff056-d806-b444-8d2d-c44015a7477f,4163120497,13768700380605372957
+fba02a56-2c52-c6b7-6303-07d34a274ea2,2623716005,7942592572186872341
+e325ecf6-dd2b-3856-4931-9c1f93630dfb,607156867,851856337919949917
+3355b31a-42c8-44fb-16e6-d19454a46b65,3742532442,943375449165337516
+d0253adc-e70b-3304-cd72-51b24e5f0b50,3581907682,10955788300355552990
+01bba2c0-7f78-6083-1da8-aa654edd1443,2342617107,16099403211475522177
+2b1577cb-403b-e6fe-b9fd-88fcf37fcc08,2584457756,13129142911322460100
+96c04c68-081c-b266-54b8-505851c2e635,2323936174,17317960645409890030
+60f960e8-351d-3d8f-4909-f7411a25acdc,1098635554,12894039013658163220
+e85b2e95-d000-15fe-dbeb-62bb351e1a4c,3230891168,17038136802483892247
+d2210c15-0ba7-4145-f9f4-2e82526b1308,2850195499,17966999643875947311
+52c577a9-dc23-58f7-ff3d-0605cad34801,2556655419,10974333729342265137
+f226645a-c943-5ea8-bdfe-c5c1e35ea539,3279217515,9214261258839898164
+7261ea8b-8722-4a31-9ff9-bfe942c86327,1331364420,13735332476773910766
+6f1e643c-f003-a7ef-0a4f-365405c45881,3363288992,8366794840646652693
+c8766a81-3ddd-86eb-6918-e7704e94c196,2219918902,5161197244471854420
+b8169c25-45f0-53fd-1195-6e39f91bdef3,1593586380,15163366636096268800
+2cf0e5ee-11c3-1569-f8e3-7dcd0de70c82,724366071,12938321721164883267
+9abe0def-bee3-a34a-7f70-b03d43289826,1393627494,9560069759682592444
+8e3d5f7b-2a52-c838-ca19-cbccf71e2877,2834815392,5888247867934959019
+9984e363-5a19-9b28-11dc-b0236f7b77e4,3075239149,9657201361651135302
+97caeb1d-6bea-25d3-97e1-5b44897bf758,922342667,6136348676211849226
+03e0e867-6460-f063-d162-a953914b24fc,321482439,11523221199698962846
+cb51352b-7322-909d-dd9d-925419ff2092,1269742815,7096598286168129679
+b37e33ff-f125-6273-6b55-5d966376ffb4,2608496591,10611080458253479370
+d25b10a2-26fc-1fe1-a843-dd8a100c3fc4,335474434,9621202343161775878
+a96fb6bb-c135-0386-3f32-b35dc4169fe6,3604777753,3768034078863816132
+b1531379-c320-e540-926a-5048f9841aa0,2477978371,5308063499707177437
+5367fc93-cc52-cfee-a7ef-5fd0c8f5381c,2668200364,11192972586096976
+1c654cfa-628c-3a00-7ffb-46146a8bfed4,2223789077,10898302982209951979
+c3fe5d23-2c64-d758-f424-d1671b952def,1951031904,2135334064896065249
+d6564937-b6fd-39e8-e2e9-ccc66d179298,1968783473,9609672250637044495
+1c1f59b9-eb54-7575-0214-ddad14c7d148,2674078233,1268425268419934522
+e1944bbd-c0c7-4465-9261-173e349b6e21,2978523659,16954272171258119502
+aba90c14-7f28-5a54-052c-c706ae0d0c5d,2596208807,13431987246126446676
+b33bd8ae-171b-768d-aa1b-1fc20115db93,3498729359,11840278743812316893
+0d895d4a-34f1-1f67-efca-68ace827d31b,630349986,11870415960839868382
+805a5192-91bc-7c34-4a2e-eac0412e1a4e,1905879529,17729443941452901902
+5e17572c-103b-8e8e-699e-557c6260abcf,1610119067,17274564652943102319
+b3700592-2a58-fe15-7ca4-81c0811540af,325925396,1813297578121697966
+d590a261-d628-4a54-01d8-cac687bbb3cb,2086401628,986791214149044025
+55700233-4064-fb4a-b854-c444354d691e,3083135051,2615997048895834929
+e0429611-3f4e-e092-51b6-131d068d7378,2259865295,6940991285516543063
+a57e2fed-93df-b64a-6e84-d5f72ce8a88d,1904142131,3256164155718698487
+9e47bb3e-adae-4a86-bff4-766388e8d855,1439319045,3184498328744157300
+24a59f67-95b9-1aff-7e0a-9b123ec7d2bd,875028744,14550956769697334021
+17ef4d48-b4ef-116a-4cdf-0860286c3118,447587314,10375386614924359248
+bcf130fe-cf5c-18b5-1f91-3eb6111e0965,2203772317,2918650390423865796
+3e424ba6-a44b-1426-9a08-db2dfa596bcf,45216010,12427082629726208519
+04a29a73-37f6-4aac-3ca2-ea8d2b84a2e6,2680189414,13569892380608536736
+3941f719-d053-64c9-f621-548745567ae1,2620485789,14537486952762357101
+bac4a8f9-0100-fdb5-696a-97f80474dc2e,2659020680,1210423424147180778
+89027eda-f9f0-84b5-fc49-d0d05fffdd88,3454268836,6611944222924830580
+d117bcd9-4be8-685b-9bef-012068eb1908,3970619947,15689258035295315287
+79127330-304b-0e48-8966-26f5745baaa6,4182108102,7993160901086965395
+2ab6b8c8-bafc-2c1e-e856-be704fd73fa3,1601768506,5483545849378095951
+0e6d942f-64fb-2bc9-959b-6098c335c464,1236035853,8207626860462266480
+9309cfaa-3fdc-334b-5af7-30b1246d2f69,892115016,4954353540023039293
+a8c0e32a-fb9a-4363-a466-be09aaeba628,2059956516,12266626409174477373
+b4568254-39cb-a5a0-b4bd-f6529ca3656d,2128284150,777861110509816878
+0fb682a3-3f7f-11f1-14bb-399f8049da03,549513843,12773429978194093552
+5b34f524-ce21-d9d4-487d-f6b08b2fb3f3,3475994172,2898176028335242160
+bfeaf1e7-66cc-61ae-6361-f5af0d5bf978,1167693449,16341658716123497280
+516e844f-5350-cebe-6987-35817d9ece62,1710961635,8955706892315732082
+0fa3d815-4513-c82e-2e21-1c4fdb2540f3,2619348653,16473499736915044688
+8596a288-1335-25a6-409a-09e7a93bc590,4170296070,16262975015689764140
+a2f34740-bc49-5081-aca4-71c97967295a,3650064131,10753172670663985125
+63a55e12-e3cc-dbb7-77bf-4a368544a777,466917530,9992631534397592119
+813a5d31-31e0-6001-be03-375a5cb5603d,2071660017,13956349346832789190
+4ead2a97-fb63-6eb9-ec60-8d9b5f26a7b4,72235359,1484881550804921282
+477b277f-9761-86be-0f5e-3644dd82aa94,1930089825,7363002237748046374
+668111b0-df70-c4ca-595e-b59d9739c555,2122629455,12981028069785034694
+97aaa67f-eb8e-6f3d-9c83-5d1e99655610,207375745,13388446832907665786
+366a6c39-e3e9-cf5f-e8ad-7a4d4e7953ed,2042621557,11957362211571107941
+bbb6c299-cceb-622e-1105-54d2b3fb793e,587739722,3577007138007859324
+dbeae74a-0724-edb5-eba6-941d17e6f701,3281752714,11893424846652532906
+16b3399c-c4c9-a6e2-3a60-0543f7e3b2ed,3730088392,10377764719495654959
+4d67eeae-a699-e31d-b5a8-dcb4aa9146a8,3339504599,9728874860939074638
+b76012ea-5b0b-a805-1221-5416ac0fa1da,3582618963,16762735213484093974
+39e66aa7-458b-e4c9-f684-ee72a49103ab,2371659672,16303206760984582072
+30f10390-0d4c-eaee-f900-64e084c26bf1,4205424133,8602184426532308828
+4d5d4510-d556-10e3-83ba-9bdf37e3ef09,3787606617,6342875631214666534
+b7bf65c6-2c12-6800-74d0-650f49372038,3298980862,6669448332962606169
+b0a49bdf-222c-c319-d723-0d8d753669c3,1866248751,14285351011325559978
+7824a0d5-4d5e-867f-c984-1850d6e7cd3d,1459952997,5843808523302752565
+82033665-33d4-5e9d-8c4c-93b911b145d8,1289773562,1262428957099800983
+df073f96-66af-be4c-0fb6-2a12ad797a2c,1485937437,6502731437565999998
+a623e8e7-f96f-1e4a-b937-2bbe08b173a9,799957068,1304137467594138464
+6c3ba1e2-4e75-f9c6-23e6-d8e49e4f44bd,915709466,6380014161281081502
+d3c606e9-07a1-a483-8007-9f55e8e86198,850753088,11161140849829083651
+52c51fee-e45c-988b-2ac6-cbf10fc5aa58,1327175302,14502034334958849330
+d29de098-16fb-424f-ab32-845a4dcf2eff,1952680412,6378429133370926966
+aac30d4a-d209-f07c-7acc-1f94aad9d156,2397582831,13481804590396722945
+4750c775-0f94-f5b6-ae5a-614cd1f24954,1795408913,14840475445023717436
+e9a6435a-a550-7bae-592a-991734463ec5,552554272,8356290093816222705
+4597b747-9ca9-918d-9ff4-d938f6d5340b,1722401582,10297350782392365689
+795c1247-470a-a401-0214-3eb74f3bad2d,1464078634,10769692912759924342
+f5748b34-a21b-39ef-f0b9-2593b828eaed,3474864391,12816073599448034872
+f7484eb2-7e5c-80f3-7381-d19db0abcf43,3582161840,2525170080459169538
+0306c88d-ca3f-c87c-de53-7d7bea97f6a5,1048266482,3772028519550674186
+9838eab9-b0ba-5fe9-6c78-b53a83c9d99f,4045025240,5230089604328277512
+aad870df-109e-3c4e-b3e3-49b24b91a864,3399495160,8226345700977515356
+92941013-dc34-2cf0-acd5-07782a30d7da,3318910334,13789497743990973840
+aa97c00b-a5ae-3b65-19c2-f909c37a4471,509061259,4803428491666100601
+1ef608e3-06da-82a7-f713-a72e67d12916,371909654,2282759326373520177
+9b911d9c-3243-6f1f-6654-33b9aebd3e4d,2696016854,13643616021652520041
+521268d7-d969-113f-579a-98fd36b96db3,220848678,15609279812889307031
+bfb3839e-8dc1-ed57-f664-25d7bbf26e92,2229071123,8297015265140401887
+dc398d44-e2df-a88d-3009-d177bfe7aba4,664530862,3444148405330131091
+9aa8c997-bcb4-ae58-a5b8-aa979c99d9a7,977616459,3257262817929100127
+0d0eb80d-b051-da9f-6628-36953d8232a7,769920875,60479811383395877
+85a94211-a81f-3155-c946-c35cc108411a,1417708193,17441906112695679069
+89b8c9a3-a637-113f-0128-7e09a6fb7115,3051059006,10500028708743878120
+bcf9f550-c757-7730-727a-7028ade15212,3018421447,15287317592989428189
+a10aa4e7-8093-35d0-4f42-0c44673e60a7,3838837905,2626875297176034294
+eebcfa52-e49a-1e38-aa5f-cab0157ee854,2285134162,10505863539096279988
+8215c4d5-6c16-c46d-8836-b934527066bb,2455278085,14853955995836710033
+3a20b18f-4fe7-3133-2450-961476e76d55,2122568121,3547977911333736244
+da146a23-6225-cc38-22d6-a8b1bd7ccc22,3686715764,15940934931349151122
+01160865-5623-5fd3-6345-4d58f7883a82,1135376255,6009998550839030922
+7b261724-ce40-bb28-2104-8e8bff6b6bf1,3131493664,13458014207244756563
+764e9894-67b5-bafb-b6fe-436f74bc4cbb,571544277,15349166435549557108
+c00a6483-0285-4f16-d657-5457628ac23e,30439124,2702374487669670666
+b4b66b65-5165-e9d3-5418-9608fbce3e38,2854069854,15299062180734789870
+24862ac8-f1fd-4b60-7dfb-11cf1abe3f9e,626600433,8740926620890701186
+dff10be0-f0bc-2508-a10f-135feaab9985,31630968,14703284808861465495
+b1e99920-2f63-4c00-d777-4be4a52085c1,3952070934,18239619559148589661
+37e3b85f-0766-2f09-d197-3c3655fbb513,2033412229,10869301615232871649
+485a43c4-5f2f-84bb-3c77-ea91ed93f646,3135838690,4447817519301019784
+b937db42-5054-c709-6529-6e346b81ca96,2596229784,11619267149823608784
+ea673a84-01f4-df3e-54bf-157fee22e4d0,3570760052,3842365018304133860
+ce27dada-1df1-3aad-5b49-14e3f07788ce,2932549981,13745956526862377409
+bdadf0d5-f6f4-0c3f-f9db-850e399a6e95,1538825650,15436751659608516357
+59d08893-cc56-8373-f338-99c5bb7b4bc3,186965399,313786038887945678
+27916198-a0a9-a9f5-0479-ce88fa881cff,2806583546,17573938220747696629
+19571fb8-7990-7945-6afa-09653f15dc9a,4149296515,14552521305628417372
+660fa0c3-b020-6d40-731f-3d8c8db3d24a,2110826689,5539554891260002968
+322ba686-095b-f8ea-ae70-8b3139459109,508729350,11343747964536955
+a0b6bdc6-3e1e-2222-bafe-5d947d685849,2010238493,8894067468886665537
+8c97ec5c-c0f5-730a-8da1-d86e0b76482e,51263002,10600875480814164704
+500f393d-8134-16c5-c3a4-d861413da89d,1029984571,4390938371711910786
+3115719b-e5f1-4cf0-65b4-6c466018a806,84809902,3673581226266247954
+9825b1a4-b2c6-dc87-7e3e-c65b5fa91a31,3339520650,16310299004303921426
+765ed195-b5b4-734e-1cf9-5caf67edd64b,455258197,4357996275744121759
+abbe4250-6ce6-0924-b483-0cbfd751e18f,265242058,676840169315661983
+f9000392-2d71-9179-e25d-e6e79508fad1,1106760715,10931244828362860070
+1e1ae5ef-644b-7b7a-244f-82dcd297690c,2444824446,10356849519916889759
+ac8a13de-af50-127e-63ef-2f5baf035402,4292626550,10778777647408430287
+72dca959-e3a2-d66c-8e15-5a1a2582fdc3,3191099258,12361252862716750596
+c4f51698-a622-5986-0782-226d919ac6ee,1744717891,16550590836440157769
+9e4435a9-6ea8-a3fb-da46-3792545dd434,295227535,5280526941045864848
+0f640a7d-20b9-9110-ba6e-9f240bfc6173,3449626077,10486959812833954006
+47c4b990-d0f9-2e87-bed9-1c345a8c3fb6,3367735633,18334096482778657138
+8d677dc2-7ced-4f00-1853-7123656631dc,558877634,15420360457441765325
+fb203b21-510b-703f-26ad-394ae9570e4d,3756140401,13855007661183205927
+5319213d-21fb-bd8c-d993-7ce56fcd50c5,3106710639,7755117937696680121
+99e3661f-0ed2-a89d-42c6-e4da4b4a9d26,2589874663,13951642675742534962
+2bdf2be9-e27a-024a-513e-4845552fb518,564076754,11706494017778921739
+beb27dc4-c2d9-a62c-d105-1d00d602b640,3173587348,3095267236496608406
+ac268e78-b023-9592-ec1c-4b93bbf98cec,3912332449,4511329679174224213
+08ce8fd2-9e5a-d639-662d-96a33c94317f,4111268296,2463131980706129433
+dac46862-3121-ad8a-af1d-1c73dcf22285,3653421548,20573352554174373
+3c10a3dd-1ac6-4c05-3b85-d4b7b9e4698f,4105348304,5945573948615829245
+52642e79-dfc7-fc9f-9fba-39d11d953475,3799156311,17983672738212295467
+bb24096d-e330-0cc9-f88b-df203fd34c79,2761167458,45710378127225149
+748b0fb2-4043-77d7-87be-fe78d10b6633,2545616247,1369366801144072559
+6bcefbab-8191-aa7e-fa88-6a46406ea1c2,2344869753,1839049891034188705
+02c06ac2-6d3d-5943-a419-ad99f610a01b,3120500430,12882069778989138141
+5eaafcc3-552c-24c6-8b8e-ce8288c66ef4,1790029377,8301040059702464839
+db6a097b-e59f-0994-ff2e-70a18c951ee4,3150204818,2865637818689516264
+0405beab-85d8-340c-da49-8d2a305b4479,2872392132,15748487140187814394
+ac38fd97-1118-909c-0fb1-f8750cc6bd1b,2496236831,10448786183964039156
+01c3de4c-b251-1dad-73f8-4acb723bf3d3,1869211269,100292637259046732
+e3189f78-09b1-883c-8f64-37ff6d3f59b0,6686208,11805354298336216547
+2ba60373-a929-38ea-47b3-25cb662cf891,1408419023,1098354988803205048
+a7fece66-ebd1-1233-6a81-87e3dedf5438,3569436982,12869268651746114760
+f4aca876-5e16-9e49-c81f-b69a1cf5cadc,2296614160,3333096074472901365
+0b5196ae-9e8c-7da6-c18c-00ed82bddb3c,2540644664,196014033373033538
+4df3797f-6b71-c12f-05dd-bae21662f56f,588091067,1095175677097942413
+d8a75edd-3d2b-0ace-eae1-9ab1eabb742a,3300417617,7321060920533986511
+152a31a0-f69f-f91b-f73c-18e4893e9057,3467877368,16145180890144103817
+b5cdc244-6150-be3d-0564-e0fd2f8707a5,32694059,11165201083300089294
+224a23af-6e95-eeb2-f73f-4d678ad2d967,3557377153,8086712113287883279
+cb6599cc-c96d-c154-1742-9e6446ce55ce,3567410865,10440051206973655732
+d18d7aa9-2ad0-4890-a06b-04fe9bb2a2f5,292151287,13167952928353221198
+f63730cf-19d1-7151-93b1-f9c02b5a3f88,3565966270,14964301756102265636
+b8d85bc6-deb9-be1b-f089-2896f5791095,2980087374,3624656823226669906
+ca666ca5-3a9b-d86a-6cd1-f5c0cc9e8776,2482633560,12899565829327841096
+619fb3c7-e415-c9d1-92ed-74ec6760251a,2174642831,9968828511801359577
+5f7271c5-394b-5078-ba88-36010fe7ba29,3673285938,595612621476602311
+74181248-34e5-2539-aa83-073f71a9eb20,423982083,18007497107036591936
+835c8e96-fcf5-c972-44b9-b256206501c3,3177228895,1179393385090474743
+3e0d043c-0bf3-60fa-414b-e37b3f749b2d,1744582177,10608278338430069416
+e1cb1657-238b-35c3-4c23-278d4488217f,2868950399,14805689762053150790
+e63f145c-e109-4638-a07e-f23c765559f8,3596651937,3549550670787231829
+457d8346-18b1-ef72-bcb4-04c737e0f1bf,2985670590,10276653183235877677
+8db515bf-c06c-a26f-6868-1aa795b66cc5,2673752825,8895335273807495510
+b68f2608-cdc9-b32d-f3af-cae28e1a77e7,155996389,1466300292374291396
+1dea66e2-10f8-9dac-fbc4-75cbe87d867b,1654941836,12548348920431408769
+eacb8698-9b4c-eee0-e647-a5d74d8da86b,236017673,16795749241121709787
+8b11380f-7417-36a9-722d-42906029d9f0,1295619483,575245361392944885
+1a00e4b2-0712-6c81-4128-9a2f94faf7a1,3217103846,14917266284533101942
+439a8280-9066-14ec-6f64-c893f90c51fc,1146738104,12112606545952623773
+21500bb8-f0c9-5da9-d05d-b273ff186789,1629635389,14087009672237859303
+1adc60f7-8257-434e-0496-dde07d6c5a08,4094614360,10154452284211996560
+1949fa09-0e63-f0a9-8f43-950121f1f9b5,4286931156,15852808233345312706
+3429b8d0-559e-15b1-6c5b-d2220411b884,1633964427,11870736612744686963
+789986d1-3ade-3bc8-6693-583d03f66a72,570411315,7280939650892529707
+78142d9f-4ea3-f884-0ae6-923800a8d788,3869415593,10089485465801551284
+f62a7670-1e24-33dc-78ce-3ca10b092329,597689905,6298732314741150509
+4f3705c3-98ee-04da-ac3d-458d425fea80,1747608656,937876166503008648
+cf86a245-5096-6d52-0ed7-bb81696bba6c,757716870,16240328010071180276
+0acc7915-b7b3-e4ca-7abf-7bd7d8e6628e,3330600100,7490436958424388481
+fc011d94-158f-b971-5e17-5b541f15a391,3685433189,7478167036097153356
+445d0a3f-c323-db3b-53b8-0d522982c3ec,763724237,13263086042548873003
+bb0afbc4-b201-4ec1-3a28-d0227c8c7721,2093960732,14323298013877746373
+589accf7-0ebd-f900-6bfe-229431248342,2210557925,17519953931821613999
+9016cbc5-f878-4329-0a58-defef3b383d3,3718287410,2130214179995070476
+56865c91-d74f-7bf9-014a-1fe919d5085f,2014751524,13400335347117691441
+b8886c19-5d20-52bb-fbe0-d51654088bac,3045668874,14637402653143566996
+f7823c2a-323d-bad1-3543-c6b22dd293cf,3973312465,6472602870478244401
+fa49539d-3a78-19a6-90ae-e3bf038b3db9,1092287267,6746463823180130000
+992c3a8a-d880-68d3-af2a-e46ed0ff11ea,1934132535,4189830491165691471
+32220b29-2803-0829-cf12-d6037eaac525,3601200833,17533634279560177763
+24ea89ee-b927-055b-b3bf-ef25c51db17f,2609399412,13697779767983285135
+3b5ecfff-47e9-54f6-376d-77d28ad86c67,1118751338,9672372035264790689
+8a0d4266-b604-8383-59ac-143f136419c6,1639653952,13754987604550347809
+0a94c959-c4f0-f274-88ba-3eebecf45a0a,3322596834,8472165526941168071
+ffde077e-2773-9525-befa-41d54bbbe672,3136390359,15553014511764330474
+2d9aea75-42e7-7aad-2028-07dc1c894a65,2989899374,17256939134021411302
+2bb0a203-0e53-aaa1-bbbf-59e2cc1127cc,864853942,18020100179062566472
+8f2ee78f-a650-bc7e-ff4d-e40628f1e589,1512320200,4909601930963432174
+6d05edc5-565d-0450-5245-42bbfc79c7db,4263473721,16491533619674629512
+9ad85289-ebc0-0fd6-0872-f092187d2d18,3405292934,12412206917844527959
+39b2586b-c2bc-6b06-ee2a-5cab7dcde53b,2633114349,2846872746929154571
+e227a108-02c9-16e1-24fe-61c501ff8e46,1358872142,8025553323041612474
+dcc29f8d-10e9-cda4-c3b5-404ba353ee31,1125528956,1095835173500760757
+002cf5a7-cf67-d583-6b53-e0a343366fc1,617870378,3680303341077955940
+0a9d855e-16ef-37fe-c4a5-a60ae651dfc5,1984704579,17428217670539090584
+42d114a5-b7e1-f966-db7c-74dd62589311,891028324,2450466862873994674
+ee604e23-69a4-8eff-7450-9b7a058af541,455928430,590802139964729838
+1730991c-905c-5c93-03f8-184ab64d6e9a,4264672543,18307594829638619064
+9f0362a3-869b-6092-bfcd-038ef8660707,2979176416,97546166797126060
+87c026c5-4e9f-58ae-4f01-129e9f4a3996,65790314,8726939548450187813
+1ca4d270-8723-1e5a-7f6a-4eb093827952,1745429196,13241581935339110401
+ee8cae26-9b9d-735c-674f-17c75c05f6dc,3057468129,4276576013216159176
+1ecc6fdc-d236-21d8-ae6c-5c7e9464759d,2869868601,16645863569908739744
+5984372a-29c1-2f4c-7138-1fbe0181707c,1750039578,1112323862195402509
+2727e594-8a79-c5db-62d6-77c3a241037c,3610599136,9768226936831220858
+2c56cda1-74f1-ab05-f761-33dafce38123,3225499056,7772986313486810509
+99584330-0089-392d-b3c8-f1c1124086b4,2936182597,7143386004330504928
+ab9d688e-e0cf-6028-2e50-4705b79cba39,1789665816,8791912354741292934
+f3723b61-25a1-12a5-bc6c-847dfe997932,3455775262,10132374767643169083
+6193db9d-8fb2-453f-fb86-2894ffd8a15e,1681084385,17838756396385296641
+d6433ad1-67d0-3c75-cf97-e940fd5acb2b,842902487,17481598714975681291
+a7730a6d-a03c-5eb2-a1f9-9dd15c63729d,3764712008,429645393281374156
+8eb938fa-0f34-3be2-bf79-5b39f905a0cc,91318155,12838485260365342194
+34a74dc1-a4a5-178e-e19d-4b4bb33a5e7c,1303996005,10214974617966795942
+afba23c6-2e9e-2c00-da3d-e600966bcc6c,2599713534,1120201624752867053
+8a9bbca9-22b5-18ee-880f-584d2ffa1b3e,2685144060,10195135942750537106
+789e2144-ad17-ec24-8cbe-b3045c4dfc20,1972830184,2799775070462696728
+8ac9ca16-9aa6-5c00-4ffa-f7b1461dd2cf,2984048275,1299641494186175608
+77c1ee6f-f926-e556-4060-defcb018eed4,2752052186,18425683295806866800
+e08f2db2-c11d-eaf5-f8fb-b308e8fe3795,3567294028,941034889039459470
+4f50b8bd-a10d-be89-19ce-eeb1e482d63b,3959228243,17036985455112578334
+81d3e825-bb15-beb9-3060-84252addb602,482360802,14849486637288388119
+e2b869fb-868c-3238-1e9b-c947d1461a33,3837097620,1897275379922994283
+42f0a4a0-d943-5e24-5a2b-c8f01d298de6,1830677048,5623106617710597012
+9d831cf8-1deb-1ef6-bdec-fc25f2565231,3572269015,18165569874894757878
+34d01f40-8e0f-f597-7b55-ce2f713f6974,423979438,2052098925754338504
+17bffb33-947b-f968-c7f6-a29cf1547bd3,759171333,10922874300197755634
+06ccec83-6be3-1b1b-ccb8-c77bf907ccf4,2010835183,10507387444088360323
+f0fe29b7-359e-e116-d7b1-fc74b137c864,399165687,3860375333485727188
+c88cef9b-4812-ed01-1ddf-a840e64143a9,412518161,3829384207637091982
+6ad78321-6280-e155-d1e8-942dadc9b4ad,1062668666,13539928328894203005
+a57982c6-a676-5a3a-d0a8-22ec86e1141e,1122669633,6287216341475828700
+feeeceb0-33bc-d752-7a3c-843cad3002bf,3562293811,2558331551069588064
+1cdf8d95-3651-d5a3-500b-62fe52064247,1177573333,10852666517072301387
+c6e2f755-819e-d823-9778-dcfc139c8538,3143882330,228525021107335007
+6b89a5b1-a491-67c9-89f5-386f590f784a,3169856622,16318842646572528000
+80f0a72c-de40-5422-c4d8-92d5d9db6a3d,3222267616,6029797662423829029
+18607a29-bbe5-d43d-ffc5-151750a4a85e,2727187588,15327622689731073721
+99bcd4e0-15b7-1a49-fef9-efd2bd25f8bf,3962232067,11782004904456850023
+9cc231ed-b2c2-439e-a36f-19f4bbc586dd,589135786,3190459780621419175
+5e6f6469-37a5-0749-e10d-6c3a0a37584e,1435794283,1781792352715906777
+515b8d0c-27ff-ee36-a06e-8a703aad352f,1898851968,14276000481957488324
+545ce16b-bf76-b314-ec4d-eea1cc5c7fcf,417049062,4344669523773273899
+034aec16-7873-9231-d2fb-21d5b194d899,2374392015,1481838008130926633
+fcc6573f-9adc-ece1-13cf-430b0af7c116,2616603344,4404487137590049065
+65d57783-45b2-1f2f-b92d-3c0e17814ee7,3865772077,392548857427343944
+819009aa-f1ac-0010-ecad-00473a16632a,2232259607,5782390032458786216
+f893e30c-bc13-131a-f804-0b92160a69de,1184852944,4950595955510965642
+ec03cfec-e840-7a02-15fe-c4e60c5d3ec6,3498298793,440863152799360283
+33c9c4e4-9b2d-c173-3e0b-9d82fd86d2e5,755657475,10926221164243391494
+593d6f25-93f3-44e1-fed8-d7b11be02241,3367516618,11973902167650803521
+e7124a41-0020-edd8-8bc7-7426d8eede40,1464348693,10856901602989458716
+d1d68390-8385-a6f5-c1cb-99a51164aab7,177699690,5950650869809738395
+c1785062-6eb4-8f9b-ae4d-375f44c54f85,3016699614,1060996216046569792
+56db39df-89cd-4558-9e61-4da9933bab92,874004009,9489432847692052351
+2eef9111-5453-2070-e274-f920cb67d8af,3176517409,900987335232160267
+6d08e810-3c7e-fbdd-a89e-2716a9eff177,3542921682,9905447581964146970
+8bd42b26-4d2a-eae4-cb32-b7f0bae6f45a,476211589,2319174630700398222
+d08051cf-1550-1c9d-610a-0f100a69efb6,2763796426,16841525430974398800
+58588c76-8dd1-b6ae-6e86-143fd1565749,2873689697,1212120811451806191
+f1dfe0cc-5acd-c103-a61e-c85884b1630f,1960448457,8175542853075232622
+8e9774d0-92ab-2582-bbb9-9216dfb43b58,989512358,3891579120320852023
+a6ec79b5-1d81-2fab-5e0d-cd5fac25c7cc,3287369073,14860885144439706097
+5a763465-3dab-4350-85e2-278a0deace89,1993426589,9420422794729564567
+fb323673-d39a-fafb-a565-eaef9b748e9a,3029175505,15113256363540238051
+19fec122-e6e3-0385-5ac3-c3b99ede8b17,2944703348,8755054791443455554
+9cd62152-45ee-bc86-6568-fe77c0d7808b,3986601396,12351470801413804926
+0c341607-d3ff-3a59-8eaa-da67cdd97636,3477442133,6407671807811826373
+23fcc7e7-5b83-73b8-5fe5-e66f9297b500,761801042,4496237188679993711
+b5823f06-1275-9374-6dbd-fad9a71589a4,97451158,16052951607246328125
+c993e0ce-20ee-29d5-30ea-0ea85dd23a3d,1947929093,5257208953222913398
+8b8e78be-c999-d603-f364-4914284b4855,1641629852,9266229161383235540
+c9b48520-4bb7-a954-ab19-0006138fdcf7,762590797,14466907328322510810
+05e73de4-7251-f628-b408-450fc23fafbb,3545969667,4648526639988551701
+4b821b3b-6cd8-8e12-6a0b-919024906e08,2407338653,2659989876122817268
+fd60eb48-260c-83da-f717-8bc4fce280a3,1384126822,7529438091461934580
+850764e9-a83e-9940-1f9a-21df1800b752,895090275,12222525492487188705
+c461cabb-7adf-0c2b-a45c-1824b94f8616,842400363,8284789583277037090
+d37ed97f-f728-14b8-3902-ce418f9c5592,1892971424,13513143413484739258
+1eb72884-9b7d-2fd2-4bef-686b09d428e1,2301106193,6748628747544290149
+9dcf486e-3f2f-a8fd-53c0-0bac9a45f813,3617997413,11118905977710767962
+3073aec8-3551-c145-e595-6a0e49115547,2404343854,12155519287939358818
+2149c8b4-9ef5-d0ff-37b5-4680a3fd60a6,394658226,304197089999268732
+85fa4868-183b-2412-6ec8-2908b30501eb,3262682109,17028530700676878340
+45fccfb5-cdae-7b97-d401-13a90a632bd9,710748339,5146206957866557448
+54e1e797-aa53-72d8-9717-0e111e6553d4,1734941254,7696462745006176383
+bcaca000-6539-890c-1551-0086e7921c3d,2286934437,13602434052928521717
+8c09d38d-fbff-64c1-9dc4-926a3b1c01ab,2780362668,15226723930367598129
+e9761b94-19d7-6201-464b-5691e4701060,594614432,8664812220103020889
+0decc289-0b19-1c5a-8e11-9accf946af49,713762232,16275561409248922132
+e31a668b-f5e9-b8e2-947d-e76ed18abde5,684853242,3856698227259508716
+ae4da7ce-2fdd-9238-2c92-cf3a44e34237,316619659,8526199399468961228
+c43ae5cd-1644-06e8-4b9a-3a03027a05fa,2657232711,1759775678788004026
+d241cdc1-a3db-f89e-a147-53eaff0a7762,2705863657,12082715353493126514
+29066dfb-a06f-2593-f36f-165f4ed332d0,2470145474,7777386310211502403
+0757a172-ba6c-cff7-7036-4aabac99acbd,66424891,16271463211435310612
+dc368b34-96f7-f62f-1508-d5b054721a51,2086019313,7972359734743245167
+7252ea1b-a1c3-987f-d02c-2d5f8bbb5533,1938981894,10975341740954644735
+1ee95110-1951-6cca-86d2-4396bfed4290,4063665827,9573112816207287762
+5369472f-6402-3f1d-cc60-e54e24311f05,2925567061,13996643933614385620
+5331406c-e928-439b-4010-9da41f26f198,3319191204,13813114158112994261
+86ba4483-de82-5193-a621-925ab792290c,352663188,2318546604720102503
+8344756e-6f54-1e75-b37a-5a33269292f4,852439269,16889050743854454002
+2b16673c-1c5d-ad70-fde4-88680c7c6b75,2815103952,3734253735742171780
+32986d81-8463-2a5a-5eea-18e00452af93,1723952380,8729110852463321389
+44a41e92-b581-28fa-5644-97029fedc1e0,2499383450,2222892237574249539
+1b19a610-205d-10ef-eed9-fbc91421134f,3927627611,9652296553596439139
+039e9c01-7b5e-249b-34d8-b90b11ceb74c,732655831,1906814389466643300
+626765a7-3337-8b2c-dbe1-752dcd6951a8,2804730220,14644834618506239265
+71764b4b-786f-cf87-281b-6a161af7ab33,1857314504,1816537511540783159
+84db33d7-d496-a575-4318-44bc876d64bd,2253744888,10181321137242971311
+4f50ff04-e0fa-f04b-be18-1b91bf07a299,1793862111,17627780154341744223
+60b9c0e1-ff35-e297-3cfc-6a84a59577f0,3995816720,7399438222224306350
+1dabe605-94c1-fd09-4da4-1527cf75208c,3827376080,3176693725578657304
+85f64506-4f40-c191-c494-11e92ec5e061,3593279381,14335418158839188716
+203ed1bc-5ca0-cd35-dff6-0a1196fa484f,2522290330,15078290997902128893
+4663d67e-0460-9df0-b481-ff090e3dd297,1286918792,616782056058530944
+58cef270-9ebf-64a4-631d-a3a4549b1074,2670691354,14103693466438150653
+27262cfa-fe68-8992-7ac8-f94d5670927f,2325983,10357084956679805756
+81331e4c-151e-6261-1002-97f86a7bb994,2447017120,14149872210586452692
+cdd7fdc1-c126-c6da-c48d-d9d8784534c8,1577223885,142184636160728795
+00427877-a94a-1b72-7d5b-bc76da9a6235,1441179622,16284327124757390700
+e619d959-0e6c-e463-8423-639f40c42f93,1054049969,7370734358851221004
+0302a07a-707d-f6eb-533e-94e20e17e842,4171354341,16769687713973774446
+a867b556-fb92-e209-2853-ad5f4554373a,3748591350,6659947117723299820
+f8453bda-4691-5539-958c-a6c1d0b69abe,2832398922,5576102791730486120
+730ae443-0d32-a3f0-efbe-0daf0b5d8e8a,1940415963,2519008157333534944
+a4bd3b5e-7d0a-56ab-104d-79fc2c64dbcd,1043241499,599720045668593592
+c5950a8b-3f78-b95b-eb9c-83e9a32feab7,3924963927,13710692430386322392
+d2d90366-ce51-924e-bcbd-02e0a6bc3690,2616318869,7337267293691252958
+8ec4adb8-b964-001e-4e89-258534234f29,3752531576,14367268203333634603
+93249761-dcf1-0693-79b7-c39bf3bf74d9,1530097171,1830190647794439002
+ef207238-dd42-2fd1-5686-24291a031e06,142660110,9936021144858525382
+c0bae52d-04cd-19f1-b0bd-42f6c2892ec3,4261045693,7892576381127560228
+210fcdb8-5a98-1e71-1156-4df32696c1c6,3421068547,8263705775693295149
+df5c30bc-2f85-0950-b486-319232137eba,4185303982,11838616886092769988
+6a25f450-119e-b76c-4137-5217899fbf08,4140852145,6023022856121751489
+69016418-e6d6-e946-a7e5-1006e4c46c37,3592854555,7718687500827255413
+b6480bd1-7aad-e916-5e40-5c6c3ecd470d,532942326,16483014199345313114
+37a0c8aa-0e47-5b9f-9faa-48fdb4dba59a,977689593,11642844517277668750
+4617c0c9-0624-8c6e-b208-4dd046a134fb,2903989149,530446170175753113
+7f4c8835-7afc-2d7f-d901-8e6a6147baa6,2660879380,14444760960633662865
+20d81a4c-693e-794f-3b17-fa0c42974e2a,798031410,16472303807631847206
+4c91926b-0aff-1c0f-ec19-80ce65b62193,1307057562,8172908780879726165
+7f17bcfd-8668-6731-f53a-33ddf367d6c0,4025839154,13902065415774628455
+09bbdfd0-7f8a-01ee-3126-d039236f86b0,2065126787,3063992980734542667
+2de6be32-5fa1-cd13-bca8-1ea61120f5d9,2849432893,4223545761763124690
+79a729e0-c3cd-496c-d7a3-f02daa0ccb0b,66920227,526788335800398503
+953515d1-8f58-b3f9-d5bd-3d0dff128105,1693164831,2766688380793587399
+073a4004-ee9a-562d-2189-4ccb3489f83f,3231400910,17254704782593727526
+90d74dc2-704b-c39b-a3de-ab3073002459,2769977394,11834524547822674623
+dc4377ca-b0ee-fb54-c60c-ae662a4abce1,1815678561,6028098171205663145
+24e3cccd-132f-48fa-cf7b-e10a6fa332a7,3728066137,17362416137470439702
+0f906e2c-80ca-84ab-f8e2-d3ce03f9304e,3969653055,263232398778126830
+9cdbe327-c672-f674-055b-7600cf0199fb,2977185162,17314761512285589536
+772a1c6c-ed2a-2777-5a2f-75029f56bb45,3198153321,7641952220637715179
+779cb531-0b70-6c75-53fb-b356f0c56dcb,2930625321,7441158072583113887
+31811d35-1790-cca7-74c9-9cdd51f51712,2985156899,15185041028641535887
+d2bf5cfc-6a58-34d6-3658-55b1ae9a503c,1408147148,11237716045928434862
+f66b54f6-c849-13a6-6fe0-6d1d2fc72726,2970188753,17809275642769121707
+4a1de4a4-b2be-a50e-6b2a-685c308a4e2a,3965678878,14905873910191109066
+5bdabb35-09b7-69b6-a1d6-d4958504cf9e,4284534087,13981191915317765486
+3789c241-2700-d2bd-e3b7-cd649a256b9c,2236893401,9119293635524001661
+f09b612b-45fd-847c-bd2a-8da9cfdf2067,3408574303,10956213730545799479
+bfb3ab05-29d6-24e9-5ea2-f917c66c8302,755762362,5127328921936509318
+f7f25397-d97b-1f65-2653-e0c7a69bc880,3237944031,11665421552303763192
+a1557c5f-6048-d1af-bbe8-826800801a59,2938147629,7689505488575865158
+efd1f0a1-310b-f601-8bde-4d9b843410ed,3186539585,7039376328995345458
+495202ee-3359-0c18-ea24-3f24c6e56483,1754105190,12459780259033413062
+c1b17c63-2381-ff63-9ab4-cd7213877f0a,1092631743,12645583087065028054
+2e8381a7-02f8-b6d4-4a26-3b09a48175d5,462782617,5944215935288177983
+36205cfa-656c-526c-2d67-5b405066b5dc,3472897200,14901525787448443026
+ea79158d-552a-a262-4c65-cb21495710ba,245719050,15254051724002906887
+133a9564-eee5-1713-f198-dc4b7a40da59,1829267880,3194934537177542254
+a33b713f-a91b-7a26-3216-c8252e6b592d,2784872506,16891425578016024236
+89bb5986-eaa5-afaf-1bc9-1eb2fd15c7b6,178450307,5251684592378518877
+1c837550-95ab-5779-ec67-6dfc443235bb,3199710211,10752211046923360851
+98576f39-7115-6908-4f3a-42b161b7e231,3182970393,15522024488963361820
+978b5199-8ec9-c14b-1052-cfdcf8267ebe,1674427645,10101527439669084733
+aadc182a-592c-8256-9457-d8f7df44b7e7,1131967047,17988439464658019656
+6f333943-ecfa-049a-4b26-5b1bedff2284,3192133042,11127801836665603360
+c40ed0c6-f916-c1c8-815d-6f72320d0f5f,1604399880,11980462691987519303
+8bad7991-381a-49ba-a293-c2b2fae2d1f3,1088590078,9228025310978465617
+13ae33e5-ff4e-416a-f230-746bc8009d98,1227268054,10894691327054835807
+9bed8c28-0d5b-62cb-bddb-38baff9e40a1,3108447825,8146408796069157688
+2b6c9e94-6081-8ff2-6179-0083037671ef,2618555995,3247377475946350977
+63f7e3a0-ed8a-6744-2142-1758877e00e6,4054061667,10765521686439949759
+9f11aa1f-11af-7cd9-8100-df49fb1bf4e1,2323030217,4801209767955548133
+d0d9df3f-dd47-c26b-f74d-cd82c07a017f,544122439,11461352856400845958
+7819ddf4-686d-9e76-238c-6fd48b2898a8,2805761073,16000037168326693718
+bba8c420-42af-5f5b-626e-209c13c8dfe6,2602582156,7073737062115646056
+7ea8eba5-3555-d725-a8af-99df8f9184b3,2493853993,11776204870002297416
+ebbc7960-3d13-5074-f203-385bd01eb1d1,4069450966,16391902887768725570
+fc034d89-e8d6-3e9c-4bcc-d5a696274fba,3291748960,16448209496711797284
+cae03fd6-da7d-4ee8-fd53-3b8676182a44,3229372318,12457864654051110353
+a4c4f7fe-21df-bd9b-4340-63d10e230d36,652832790,10663518688687762931
+3373c9e4-3f7f-b7be-691a-77ce0d81e606,1209414060,10033014492189703909
+dc990181-19a0-2e9c-7359-260fbc4e669e,3283661122,17408376153653529133
+b281e532-a4aa-a66f-318a-a69cfcd5b9db,1056362024,4162900134600307872
+55ef582b-755a-8bdb-474a-160ded1751c0,2387813759,13089423275338709507
+2caa1a46-9455-2639-e280-08de4d036b76,2350936757,9319222591546227629
+999330ca-08dc-f017-6cd5-311aef19720f,2871437931,13696915878312629543
+9c6319ac-4dbc-48b1-b6c5-eaf47ab604c2,77051777,9703836585348371476
+f8e87154-d73d-163a-9e55-31f58b0a4457,179762251,3337374577714689603
+2db60541-af0b-f7d9-e733-fd1c2bbc402e,1062517630,11616840182736533831
+f2c724cc-95bf-601d-ce77-1f2bd84a75c1,1579582456,3787982147882057716
+84ee96ce-e31a-235d-8bbe-05cb0c61e372,2743389174,13762239049549047524
+eddc1134-4cf0-e71e-18a4-991f9eeaf211,395501662,15049646201376342600
+63be2e03-b739-4208-f860-b4910b3e61a4,1980355694,378864053139523069
+cecf71ad-c76b-1ced-bf45-607e257f3439,3280248897,1694151012982041915
+cab8a946-c888-547e-cde8-9f80995adbb4,2956367100,13089053138743641945
+069d8b40-c4e0-8e30-f7c2-7e943f91cb68,3232294811,12078496716822826543
+19e45516-891d-4335-1206-bc8b7af7caad,143608756,1486585078589685417
+40c010fd-0342-907a-f8bb-d7a27e017e52,2687971469,15224685303474792446
+21531bc7-cd5a-8ec2-522f-0962dea71c60,3007750319,14249917102202909150
+f2eaca64-6234-9402-e641-2ff85f3d02c9,3399860521,1696163402680241154
+a4210a6a-39ef-8900-37ec-29c56f9aa7f5,298142738,12658522395219159551
+77a2d988-791a-bea8-3ab5-cacbe99c3385,3352515643,8471871169564823710
+1aa4b3b6-daa1-95f1-1bf6-dcc6c6e42d75,1414262586,14551053139692958271
+1ac6a7b7-1820-91a8-4e78-16e6607a1283,3104315631,8805370477149083062
+f22b5bb6-1137-86ba-3484-bc93ea832141,3697279507,334850946867434689
+e81b9fd0-dbb7-fbf0-c5f3-aa3b769d519c,1528057289,11101551642874140853
+70e03c24-bc1b-b9c1-224f-363328292c8b,264339361,10924711211715956988
+b5033cd2-6281-bc8d-1782-49868085187f,552708507,11143422260444342373
+6245280c-a40a-bc4e-1fb0-489f51a649df,1803794311,2827472560522796435
+c646e92c-4308-11b8-91ad-2acb91bf6724,250942073,3006078367041429633
+3b9d337f-9d58-3515-24fb-3a647901f474,4082314973,18402573517028927582
+91788fd4-34e8-ccf7-8013-5d66048e4fa2,1106163074,10243512064872099799
+11599af8-e23c-c511-00f7-11b5efd934b4,2150741544,7061202520469565883
+b963f858-bf62-ec2a-6360-0aae8d2225a6,3569474580,10501896729720715142
+0150b9a3-ed22-a07a-b0a9-6295a5c53a7d,2738630710,689709091059560075
+cd40e4d8-95ac-7812-28b2-af7e8fd2e4f0,1170783097,7269934486507960144
+f06f9900-f9db-45ff-b6b7-65e302921baa,3014010946,10369327759845378889
+3acf2895-5c48-e161-7f36-c22cd1aa16e7,1694045967,4514748712914199570
+d7c3dbab-86e3-6dde-39a7-bd8a719dae26,150310041,11351135798546484979
+47ef83c1-049e-d3bc-1d80-db2ebe9cfc81,3471713518,392518830542506057
+13be95d9-88ee-30d4-6b42-bdb2688f9be5,357330839,3707131980663095984
+0a7d5711-b415-ccf9-a9fa-01b2ac24551e,4131873233,15732116011811679245
+ceb0c1d0-52a6-6b25-4a54-38e6aab56567,3089674133,3030233286182667654
+2dcdd411-5410-e2e9-9230-d7f75ffbd717,4284147340,13896977368206357111
+0a00aee7-713a-cd5e-1b69-5c5afcde16d2,3580535678,7273826593582750509
+20a73d14-062b-38a6-ec0a-8ea24be645a5,1064355119,4953627142391331944
+3230527a-9d01-96d9-6c3b-20bdc28dde19,1559829844,6889463890028105110
+5324b2ff-f612-bdeb-6f1e-98cc8932aba2,1999626707,15798571456681172188
+c84314f9-4beb-781d-1fde-6fe4ec5c39d3,3672668737,11097963690903827883
+9f2967ab-d4ee-76cd-0cdb-d1842991ddce,972842826,12091659125372233694
+bc5ee383-6577-26c2-78dc-ca88cc0b258c,3039696495,6908673791703477969
+70cb5306-2ccd-1194-9764-4caf5c8a22b4,3566197976,12919227759027599522
+de459a2b-729a-4f52-57a9-aadd32359497,2831814391,5783926720652785986
+917b2741-602d-3079-7e15-cbc67ddf89ba,3057574771,18130947336537268300
+b7eff94c-a055-85d7-4028-5e3f1e54df24,4161858066,14679163460470241696
+d5281ccf-c70d-2952-9895-202b3d94aa2e,2071017878,7587476292850852800
+7565ebf7-6488-d046-32df-0307ec26490c,781961370,9934615545675963413
+c6b0c263-d160-a3db-cf31-5bc2c068b958,1634358144,1474471555404047933
+39195f39-2bf9-86c0-29a3-ccc0e0b6a2c4,1944021510,5742577156376601259
+9043ae0a-802e-e966-d1d6-7dedb9fb822f,4279217639,13192745936302378259
+29796641-af78-6b42-867d-575e058cde40,905493867,16554484675145570691
+18ec0b40-387e-b6f7-071c-c281f7979811,2434969091,18211252852070511327
+5d978cdb-267f-40b1-57cb-b7612fdef4fb,2328403468,16425911555429603719
+893dd87a-3266-9ded-c314-783814d017df,3398116562,6727837358292188897
+d4353c9c-32b0-335f-0655-8fccde4521c3,3174771501,5622981267651567702
+68a42ac1-08e1-6be2-97fe-a241a793e389,2921644140,15479367102482698042
+0b49b41f-dcfc-008e-83ff-abe54216f9bf,3578203022,4530412542480810218
+04cd58de-c440-acb0-39e5-687e46234a71,1190493310,15645693859580131600
+6d375964-16af-e4c8-41fa-45c02aceb6ed,2516921122,1578360904810887088
+6fc10a06-042b-a968-2f4b-30f76d617653,1350985977,3390929736988946843
+99760ec7-2861-dadd-8842-ea86961a5dcb,1139840321,7615364056920936467
+d709f969-d194-983c-113e-3883a6492bd2,3663264475,8636210454324691895
+f424b2a7-d37a-d3c0-0af1-aa4afc7e459f,2802147780,16711991707041513331
+d464ed2f-10c2-e89b-ac5e-0e6a8252896e,1114981738,16798506713633142699
+b1b6f6e8-f1b5-a627-bc5f-5f6330f8b85d,2634757846,4571759605555986194
+fe18619b-0419-db31-5842-d120b9db04f0,4051833145,7256500636593664386
+4fd83bfc-a187-35d8-c9e9-19bc5fa5ca87,1295033729,7953147315253003764
+24add58b-acf9-37f4-99db-9074fc94306a,3857924708,11165074780677366017
+1afd9e67-1732-c976-ec73-3304e4c92503,4124503845,10080543729613743259
+1f2a8ce0-3d54-fd86-bb96-704dfb3ceaa2,109037572,4292999197046375711
+e0998045-94ec-228f-fb1d-a30151345fce,1408790597,11819185192264733834
+799ce9bb-7b76-8514-a5a7-5d3b827f95d0,175810664,7283974592994240095
+3574133c-0a05-0bec-8521-2a83c4841c86,1038608913,9010546546191669240
+77d926a6-9916-0110-7a96-c6165dd3d60d,3353367527,7891814199241281387
+c806e393-4ec9-2936-55a8-5d4c29068716,623999431,6815388586025170124
+ac2beff7-33fb-cb44-d3b0-934d97cb9d4d,1754348784,13210433926723255292
+acfcd3b5-53e5-f9fa-1c8a-d912ee8379b5,3551541213,7592063005564832383
+630c43ed-094b-9e4d-9d4b-f850d6b80340,3615394278,6601091536528509675
+73623c3c-ff86-b681-9e6b-28ce804bd9d8,4041820452,704813221835036684
+3b6a5922-763a-7fd5-b0f2-f32e95c5c0dc,2109557971,5585427478996063675
+c654ef28-f86d-216a-e474-9c8263b3ce1a,1917186090,5116332504054652994
+03ed1f88-7fb1-29f8-d570-f034129b5cba,2547147693,15859212084535477742
+031ba01b-205d-ef6b-5c1a-fff22b8541b1,2531737353,1654005316613004585
+64211649-0e0f-379f-a410-ca22085e5b06,527399912,6133451542544539980
+c59f6149-af99-3400-a3ef-09b5fdf6f9ca,992777831,2041265209190609298
+44dfc040-5514-557e-9436-5ec161ea4e4d,988972754,15685240920001623596
+a544c0a1-88cd-2130-d2f4-21cf1f2d4e73,3580214207,15910164972896267260
+39fe3bb4-6e0c-a25c-7694-86396cee90c4,2521561390,745859954820738561
+6e598b55-cc2d-37d2-3a7a-be55c3b68635,4079730135,16632913125488550955
+c4b24737-a806-8088-e3bc-9648d6688443,3155371157,9744010112607376488
+47aabfa1-fbf5-2f94-78dc-789a9af356f9,1040460750,6374597438489852095
+205132ae-4591-0369-1987-598e5c16fdcf,686718147,2017320591908324956
+18171f93-c96d-2e38-55fc-c7c971ba203a,4290375185,10212963191005210426
+f5deaf64-574d-7203-ccb4-2d1e47540d03,3947367524,17352483278144818201
+d880fa4a-6924-41f2-ee19-c46148965c42,2113152619,17055469043411939353
+b4c418b7-31a5-ee05-a5ac-4df8ad31044b,1424024792,8819028666849302484
+d7a3a848-fec3-798a-0d15-2c1ec47550e8,299149447,10012761335780437170
+4ccccd7b-df87-b166-ecbc-49a8228f5cff,3625621777,7663013895181098922
+34916c6f-83e7-74b8-167d-7c664d3af326,833251905,7562932312321473458
+76f7147c-9a4a-f04e-c20a-d365532f130a,3195715288,9616184964643851240
+646cce79-7d80-2205-34f9-63d248893bbe,1072255702,504497780830477052
+fc03b566-3ffa-86d6-c288-4ecd161dedf5,3403822420,11241490329864459540
+62571c6b-027b-c138-f481-a64c59131ca7,3576476569,4819622802372620826
+3ea09007-79e9-41cb-d2a0-29241c710567,2631414676,10740801431670813097
+46fb7501-c76e-4190-e558-beba6677023e,203454269,12408301691687435911
+4d3e09fc-8933-ef5e-c1e0-124a4ddd49db,2956637735,6759599549234611282
+2d2e0c31-e37f-0e48-fd8a-ff28ad0a2c34,826614073,13091577112821210517
+54880b02-d2d5-bd50-a60a-4bcd2669edab,1383368646,13759111107050790286
+13188600-7f0d-900f-9d14-dbf82c15b233,901937082,4395941603171441743
+272a4550-518a-827e-93c1-8cd47ea069d0,1658948017,4807995621224825539
+1a99f189-4402-d6f0-dd1c-190bc61aed33,3675724043,7579701146623675142
+d98401e5-4af8-1c1d-f840-d26db88b268b,1248100054,14160515365744526586
+2cf8fc8b-d58c-88e9-e13c-e40dc52288b2,1302324423,4980713623450621949
+40f0ba31-899e-1bc7-f0ab-0af05623d044,2629233525,15668755806104442483
+4def570f-f2f3-e4e5-c0c7-1233684a8726,3554769787,10523451509936951566
+50be9d76-039c-38e7-1aa8-3926f5162ef1,3053818681,11979698845472157942
+e2159e63-ac27-77fe-2946-2ccf01304cf0,1642946570,698082046338885466
+75ec74ae-f978-26e8-d444-ef8e5c5571d1,3964653512,10389350881452504206
+8e9253b8-ede5-c3be-a0b8-6724a1bcceb5,3297601189,2208145733788105650
+7384a87c-c230-1ffe-ae97-c7c52e08a73b,2468603515,7540867564628146949
+8c23aca4-9451-c152-e867-3d088a27150a,817848463,4903401683325014692
+fff304fc-5a75-c8ad-56a2-5718bd0fcbd1,3695740856,10473426303031754717
+d8d973ae-cb5f-052d-42cc-d65e6e15f253,1020510252,3203772090280169218
+2cccbadc-bde5-6f79-cf62-8ee1a35dbc03,1042315457,6450034026434444057
+acef4fb1-cb2a-85a2-64fb-ee49ab8b5f30,3133727626,6898136370280077660
+e9877afc-b6d3-cd17-cd1c-15ea0088933f,119730717,6665684054653297666
+17b5b0b7-758d-f6e9-75e7-4946d0415838,1190217884,2647437113203010235
+65aa1a21-a978-8e3b-6ca1-02edab8e4e2b,152721168,10398364155238332936
+b8092913-4cf4-c3ca-b2fd-ba2e425ec40f,176371496,3307229152221448831
+41150fcb-4906-70d0-4a0c-00b137815b13,1214641877,10341406530896549213
+febdfb0b-fb1e-ed48-dab0-65074cbd4fe0,1087257724,5813041548624442575
+0dc2fa6c-1f97-60c1-821f-c54e8ff778eb,3980388251,8607427639935684697
+5717a721-d356-81bc-8fac-9f81581f4639,958141905,2300379975367907553
+8d2f17e9-92c9-a03d-bc80-287116bcf180,87727252,6201953793866829745
+4a479644-3d71-ba98-cea6-bd4565179ceb,3351793275,4540942337401761581
+90e8516a-7c99-7611-da5a-9db2691d04e2,3535887201,8557604386199449993
+c5c2c4a8-189f-0d96-bd9a-5c3c316a8980,2206952070,10252065923523405264
+e2b8a36e-4653-91d1-7f94-c964288ca89f,3147313645,12551205080870255713
+add621f0-d583-5454-68da-6733dcf314ec,3909603488,11860698617644345973
+6a661caa-741c-ec3c-3626-792f8d78c10a,187592385,2659527878560785953
+5ee2bef3-fdef-9052-6c55-9e883c78c3bf,6621698,1642181589959424497
+bfe93fb3-015b-1bb4-e85e-f0542b8827bd,1937169603,1068812226970897687
+80980e4f-fe65-e959-c1d4-669c761df374,3364131389,15113597661213827946
+6dd876bf-bbe6-2317-bb2c-3df6cb35c872,666558430,6821106464504985258
+56ebe43c-5d47-6bda-d93b-8de5189f4a5a,1101507192,703987521718423601
+f92ec941-a823-95ea-05f2-be50cdf98804,481317305,9371570588094486553
+9bc8a7b0-7526-106c-e0c0-8e5a4606eb3c,3304113875,2075526722762397920
+0c2f74a0-b3b4-16e5-0389-299a4cf649c7,322191323,2212999253473619283
+6f7afa88-ff5c-b5c6-9689-5962d2dd9734,1226070327,17356680851280811073
+a2301518-8c33-d0e1-5466-7c7593a9bf1c,3831628782,17419893108241584641
+14667144-8a9e-05eb-3a7c-bd821de20dd2,1068235153,11632371325692328194
+e16a113b-372f-a443-0dc2-dda3fd01dab4,319693777,17647065130109745253
+224fa427-1ad4-3ec6-d0fa-4d087aa845a0,2399032460,8428043236498485583
+8c08e01e-ff78-8ff8-fb76-ed642b8528fd,2441684619,7173118302428169994
+40577c9f-070c-beda-6cb7-f51970ac4d8f,1916074803,1710590111670525449
+97a30b23-8e1b-0dde-0c15-3ac3d0baefae,2777657753,4631091870452328794
+36b41af6-b7e8-2c0e-270a-1ba208fdc2f0,2361455725,16899588773020914947
+21d85e79-6fe5-c96b-d8a7-8afdcf1eb51e,79024428,7953648625585694742
+f915f2fa-8563-0b4b-9cec-129e5d529f3c,946249987,3693912934762906359
+08d2b0f3-0312-5330-4abc-36e8c6b84dcb,2403581986,5299317485728001679
+c826d77b-ad53-209d-79cf-c792b811b936,2443105219,11653152235584232727
+1d9497fc-ccd2-1084-c462-c3eb02044318,1036588345,13438178316096185046
+9a5b8573-53de-20f6-98f0-b2c4154cbd94,3202028533,15404516397498925602
+c621f9b6-6685-5f92-4f50-703c4d52e3e3,2567320704,3280241278825532191
+396e83c1-e06c-517c-15a1-a4cc6eefd2b8,1443414535,7613574090722093903
+ebfb4569-58bb-36ff-02a0-b5f2247b0c1d,2935636060,16193059922758187694
+6714a522-95f9-d5d3-d2aa-3250def927b3,2145898190,14513787905474467140
+095649b9-71f2-7d29-3e1a-6b8623151ef1,290426836,7344641130660179123
+cb201160-2f69-828f-edb9-e400e6bfde97,3784592715,14879739505695214388
+3d5711c0-641f-b313-5946-bbc9c326ab09,904268653,9088588552549829064
+67039670-021d-5850-c5ac-22b894749e31,2666009775,8314971662193703456
+46221d34-e8c1-2837-2d80-fe398a78056d,1739825813,4586788365019681848
+5b5b23bb-587e-655c-fbdf-79aaf69f1503,1277432224,5119894852269401604
+c7bbb4df-fe97-1476-7af3-2211df1ba9c1,551388,13387625587373189822
+3d3efa0c-3180-7a92-aaa3-cdd788d3da20,969426924,16719090526510174614
+b4ee4d3c-ca48-573d-dfdd-90bca2d6479b,1440360327,13793858593248880751
+0b4c4ac6-c5fc-6500-6c48-552ff75add1c,3496905956,11308355044619672822
+758ef50d-394c-50d1-a93c-aacdc5575dda,4098925220,4762348948120286169
+b015af26-1fee-e96c-be60-1468327052f5,3822670599,17561287384129488100
+40279ca5-dde4-b68e-2616-69df0ad3fce6,3488584988,10052187137558552849
+20efeec6-f132-f16e-439b-dc3ef065afc7,128004948,15582804075075672716
+c328b600-6459-8e32-08a6-d1f9e867e522,103724231,4722443350447921317
+9a78ab02-024a-e1a7-164d-0c2ee4fffda4,845626056,16182402505453128042
+f2b6172e-4727-8f9a-08ef-7b33511c3459,1980060226,7438746710290002545
+8321238f-dcd3-ca68-c2a4-3d189a83ee83,2518583116,13582601024309700432
+a441b356-4f95-4ebe-c66a-20f75770b088,2884095811,5240025322871061143
+0960731f-1b60-ecd9-4649-a635813b622d,742907102,14651537898255492888
+59ad09a0-7f46-e978-afc6-24fff5f3754e,279129933,1260143423326964196
+ecc022de-fd61-2c11-053f-638d2f18c1ac,2550364858,13756797216800866680
+a92f8921-f1bf-d365-258f-5ec4bc4fab7f,3140603961,9177800783198067078
+55e56072-5015-3c44-4193-06b924ac74d7,3696998341,4192752719387148579
+384cfcb7-c8f6-7a2f-599a-fa589e7d68c7,3781072357,1482824238825225155
+9e764266-8d9e-b291-a3b6-53018dad4ae5,1526002991,5475627239238994181
+424d83e3-2417-4e7a-8d07-5f6953a3ff86,470819305,5527943753699135982
+d056d6f4-e55a-9c5a-8062-8174b12c9621,609733385,16871630161503199443
+ecd63652-ddca-3146-b82f-ae005c0e9c15,1171755582,154683187622625132
+9e1039d6-e593-4d08-0369-175f36840b53,2068214299,5592924872850014454
+46fdbfef-7f9e-17e7-8114-5a0d1fafba60,4220719536,14434580939398402171
+fd53c48f-a436-5d59-afc0-d1ca24e17149,451138178,11042770829155389824
+b515641a-6010-11b4-bdcb-c9f1ad5e6832,2248365754,8478057707999208675
+aae753a4-949f-4170-502a-02cb599d0e35,1784895132,16165878588664794397
+8263250c-7933-a46c-39a9-e0867271a249,2646875677,2863808326570092879
+6a13ca1f-ff00-0e7a-ff18-ebf85075fe61,1519806153,344819491249627078
+41bdde6c-6fc0-427d-8a87-10de12ced5b9,1026170814,6406341806352985975
+3e24081d-288d-0b8a-7909-acea83150a67,3912387118,10396825315169045907
+6823408a-9d3a-acca-48fd-7c8b6a00509b,830016477,1692081506476069840
+d84f8ffe-18cb-c17f-7e57-3b7d91a68ec9,1902286138,11124949846722931308
+e22c84f8-0b2c-4908-552e-8076c30b8edb,1775819811,4348824035282392447
+c4e3e1e9-746a-72d4-37e8-71524710afce,3637326242,17293009056520900575
+9fe3e2e0-8a75-384b-8f41-7ac29ce66462,3923302024,9639419665055873519
+2ebcf23c-b56d-430c-c2f8-34c593297bf1,2798730051,10367419267901508166
+fd79809a-6b35-19f1-4827-b5a4b7588f6a,2907299956,3616618420682145679
+88705f3d-c22b-e697-83c5-566b8ae21c6a,1444602394,4539560647058511710
+6bfe75b0-e63b-1c76-86ed-c77a3d3ffaec,3484439958,15231414050163738189
+f5a7866e-d250-0052-6140-4c07e4270da0,2328997656,13477522965361482769
+01672acf-3eed-767c-160d-4c9267e39eb4,3115507716,4053438050952823190
+e3f0f6fa-da06-65fe-8db9-28053cffd1b3,2503900794,2122794933521853971
+da4d881b-4ac8-38ed-d85f-c4ae85593c11,1078206217,15283772889538803163
+0345196f-be2f-5df2-bf01-25099e05e45e,436046454,17074342839430592482
+76fc233f-c9dd-e582-8084-5a7253872028,331967486,15721176605708869371
+3c27e124-5def-9650-f425-7c68d19da336,1358568396,9740113319576649986
+645c1d56-bb87-b1a4-1a21-ba057d918cfc,3405536927,15517812438630130863
+9198cc23-c6cd-6317-6732-e1749605a033,1059863093,6499576502777338479
+b5fbe928-6f17-884f-84c1-2e81db8eb5af,3085115187,10007922799897434123
+55956a1e-89c5-c236-7849-8d35c0c23a51,1435504766,16947268983568165540
+f14b6380-47f3-d729-bbcd-0b2d8aa212e5,1512196466,177563019250777106
+85e2ed55-c88d-9cc4-c319-5c1b5035495c,4258674399,621380773342173811
+80066e7a-b64e-1526-6807-026b6d0283ce,606861553,17487729345914876157
+94cb3855-7ab0-3833-9111-a6a2b60443ff,3674126539,14432238912370511046
+c514d5a5-c996-bb7b-c271-1368d2bd3fd6,2411517914,2335370583394862229
+d165203b-7ed6-906c-99cb-835e38aa7a38,3265331308,291259692981986177
+7ac06249-dcfd-5556-9a38-fc03867eecb6,3435173876,1053153020322795239
+cbf1590e-4e18-3400-7938-dcf1cf96c01c,904999957,16173834820546964523
+8acc7da6-e8ca-e923-fdbb-149efce1b5d2,1049017413,8263822368213567918
+12747b69-4c6d-9668-960c-9b7f1c3838b1,4241724958,11231486120105395836
+637ca5c4-1322-7e1f-93fa-9a773c4551df,645467620,1491336699584438959
+3744209e-eaaa-e23a-7f22-d6c7c343f40a,1947533056,11992347668699457845
+9c44e3d8-8483-0cbd-06e0-b276dfa07686,1394382381,2772671091062530512
+02d9606f-5e2c-febd-8bd9-f4330093f3e2,2378841410,12596959413787435269
+3b5afe54-3116-fc58-973b-7efcdd63201f,1453652837,16161202264757417810
+59fbba4e-2fb4-744a-43a4-a92025deebe2,3451714580,11195474290023006791
+b8d0d65b-73a4-b442-5898-be28be3778e0,1709513353,6542072573030126935
+646d09e0-8c50-701f-e314-8ea4c993b0b5,2070111316,17182417853533390349
+af513aaa-f13a-2c12-4c84-84ceb0e7e494,2891608982,6762118146175416962
+aa490df1-81d2-ba34-9b64-0b0e402ed5aa,2978331562,13735310821304028405
+fd41a7b9-93b9-5658-0bb9-bd131782f3f3,874446923,1897260502333908910
+ee447d28-9145-adfa-1bea-6032b0088eb0,4203386101,8124276346853367918
+066c9c06-6430-04e3-0feb-6d7ed68cac53,1586727448,13518351198316602834
+45297f44-da1a-9412-3715-901023ec31d0,1711365555,14594424026877146423
+3a3b467d-c508-c7a4-8c3d-ad5379710db7,3782084606,12258717537759215741
+445bc0ca-fd6a-1b4a-4ff5-9b10a6cfa732,2314223039,5396047364671269028
+0587d123-21eb-c7ac-7b7c-033272738827,4207811043,12791168048691308786
+2750c1eb-0534-970b-a7e9-fb07d95d3e61,858644101,12816626239953521588
+fd1fa7e4-423c-8c6c-b9c0-51c059020c26,2130147116,7222950864527844146
+3d961212-6c88-9f7e-ce2a-9749c1fe7eb0,4066583419,6188502438738093915
+0d20e750-82a7-e0a9-b3c4-13dbd2d15424,2756692478,164582959177402963
+2c6336c8-e1d0-6730-fbae-f969d8570476,1759188815,15974557986395502134
+197dde0a-4592-6a05-2a5a-9f63ba42f977,1697062320,2917653409201646434
+c77f27be-44ef-aaa9-1de4-1c7940e133f0,3295155074,18296449708928686013
+ace6e16f-c2ec-eae7-a2b2-999fd46c40f0,190790194,3833627726673432960
+4611355a-6b34-b773-e35c-86a445da5e61,984318044,4475162868479791824
+9dbd8899-ef18-7516-29ad-8ba073bc7982,180587208,4508945462418255512
+767dfa8e-ce6e-0d9f-ca7e-7820803a1e8a,1006166458,11882037899993817334
+310759a6-60ce-ceec-fa9a-81dadf92a5e3,4290250396,9939150579951336126
+06dc007b-e246-cc64-284b-8b856d989824,2785145169,5089455796365540157
+2d377e5e-a12c-bdac-8b3d-5839894f5024,1355006578,10442641324648660434
+9a125b10-049e-b976-7701-2a0e793c9831,2125502683,3484742526636481194
+fa82864c-9655-571a-172d-860f661cafe9,413305619,13066807950414414085
+e1f6a2b9-2469-5c05-1889-9518dab6fcf9,4044842398,12541308369810440638
+84fb57da-2ceb-9687-a875-9998a04ad82f,1191982861,5735889063871829946
+0cc07180-d845-5259-0c2c-53e5b1cb28f8,3990161005,12417174439397437170
+2854795a-0945-7f50-9c53-7e74fbeff122,693151208,4498102372619425571
+e7cdfb6e-4bbf-6bb9-4525-beba77cfb7d7,3014993065,3936876327871906473
+a7b5b22e-b85e-9d30-7a51-8f342b10ca4c,3246936682,12633385905152164613
+173d98fc-e95c-4e31-98c4-d66bf92b6d65,3339883603,11304677947650962028
+bb278d7e-9693-0272-1c3a-5a2460982f76,559067684,4401873744445548559
+9a0e7856-0086-16a3-5b20-9a3b5784c117,1024993671,11693369828662339749
+4c231e93-00a4-7627-f0d4-c912c4c23a19,1735706270,134720326627953938
+cca42b48-9107-ba65-9535-b044e820bed2,3509092229,14822930821286325295
+48ff13d7-bba3-25ba-5bc9-7d4e9c5a0f02,2108318235,2454596297699133843
+76c3c624-c47f-98ce-8b8f-1232fa735d7d,3268633734,10651805803623395683
+3bc675f2-a054-77ee-b17e-c7efebb42315,1083786523,17381857517287988214
+533a6c9e-6d14-d8f8-33ad-3691237955ac,2164004593,10800038057315612861
+2ea6c499-2daa-d5b3-4b82-8f401410652d,3073544189,6741715046906962073
+2c11b672-15c3-1487-5097-87fa0e39769c,4120141769,12155473958830779872
+ad8605d3-49c2-6f9a-16fa-0f71a225b699,1861133766,2236619779569913137
+9e63d55c-40ce-d761-3de3-df4bd93fd038,1582037324,1838294960590268983
+c862cbe6-1d7f-117a-6c1c-ed034c3e8abd,4246535506,9235995303363189710
+298b16fc-0dba-e840-7003-8c1f0adbd5a1,1624014281,9826339156492154543
+0903338c-d32b-baf9-1216-ffa177b6494c,3021758373,2171304244911762275
+758f536b-2822-a42e-032f-eee9c272026e,2928653582,6428482518778395736
+6171d1a1-1e42-62f7-a54d-8d646c98186f,1769662765,8734003140185250009
+cbfccb59-ddf6-bcf1-d087-066df5647e3d,2606985220,12348325771961806951
+08743c0e-a38d-0a95-3025-b3904401422f,52943683,12412635458185853036
+92aa322a-0f1c-ae84-d3f4-1ab3b1debeb6,1995811501,5429941787012581342
+583f0d35-8a0f-0e7b-7136-ea636fed2cbd,1697291040,7193985763727818828
+aa1c22e2-6c62-f1d2-1ab8-15436ce8ce78,3185961322,4444809502286065287
+db3afde2-9d98-3675-1122-35ffdea5c4eb,1991232765,10596220125705361781
+1941f0d9-dd6f-7bd3-07b7-1b64e5b03084,2693535207,3254445616146535168
+29ffee97-42de-64c0-f990-553fe4eacddb,2570341635,3161183226409262938
+661c8f2e-577f-878e-beb0-a12885d91b10,1481897520,2748208191107023989
+b847fddb-eb87-68e0-8eb2-eda33d63b682,1412439242,11207166640332762933
+26f4c918-2436-cf8e-09b5-5b94db30d491,900718605,8561937002760561265
+d0c36da6-e39e-7741-d7c8-8d82f7c6826b,2144185252,9111737400626967962
+50faf158-761f-5eb8-703e-bc6b2f6bf26c,1354176294,14397931869054879859
+b6a5d14b-7624-4430-a64e-648a1a49effa,3959826058,10359935403049946412
+0d80b20b-b5cb-a80f-6c1a-c3b4b4b0d5fc,1607939186,637607012492684055
+a4dac56e-467c-c5b2-d3d3-a5d38a1cdfc8,2106158635,12930794557546252995
+be4b4351-3d7d-4a53-c7f4-017ab95bc75d,417109393,18101107136005645707
+5797ad8c-2093-a34c-2f99-eb837e4a4721,4118155429,14445845259584923354
+a4e9674c-7381-9ab1-8999-273949ecb9d5,880949470,2738477824194690331
+f43f85a1-cc74-c48e-ecc0-21d49cfbd434,2638228815,14550763786563737126
+abf444f8-0c65-3062-a385-7bbff09a9191,3026547471,8785914978752705
+1cb10d12-2f0f-88b0-dde3-690ca5a4101e,2415237907,1814805060486786023
+127d3481-7aeb-c708-119f-d2b852e23872,1529877603,9969210502174855178
+b7d7df84-384d-259b-e9e8-493ea7b4f998,4280556776,18391524036900603460
+dca85a70-4eb9-4535-7a69-1db60e1e4b5b,377429447,14196368859194082002
+04de5196-23fd-4b27-b5bc-456b84a310cc,1454597453,10161932896774339305
+498f481c-9177-d1e5-acec-c84bfc7f6d71,3474930138,5110937477462117232
+0fd5d971-22c9-3cd5-fce3-1264eac759a3,3763256330,15444401964654351048
+e78630bb-efc3-8b68-9a67-750a574fa794,1649640462,13412428380158613506
+aaefa130-3b99-b2df-28e1-5bea8d755039,1930041074,5079319460581585923
+e43c4a83-aea8-6e8e-5027-e1017c8555f0,2410706040,11933195136259819773
+ca7c4aac-84cd-a27d-a3d3-4671b3d2c295,2419014616,13785382868933663723
+f0c314ea-1c23-dff7-09d8-f907c2fec155,1033364805,6376787206931044014
+fa615e29-1605-31d5-c9e1-6cf684f27913,1809657618,10601259192024850604
+0b1a7e82-57fc-f7f8-eef5-d6e300ff1ba8,1709251743,5028200916925161013
+b608529e-2694-d8da-f2a5-fd8733250d26,2506442479,14142074900999226835
+edc290ec-f373-721f-6f69-98e80db61b3c,1848922481,7064888898825674435
+24bbacc0-bf42-af5c-0567-7052879e619f,1135941934,11676161513366650079
+c44afeb8-d466-e24f-0cc0-213c64636ce8,3862164019,11607942907035370855
+ddddb2e3-b3d3-d0b4-7a3e-3e424a78526f,2366711319,10075097236411185955
+2a38a9bf-977b-1ff3-cf91-c54ddf361233,402919319,12539739072911714116
+40372271-1023-4c45-3958-fabb310a4a28,2673043520,18079121090859500632
+1e0ac515-1fc1-a834-7cf5-1337dd601290,2383729076,13296799944911091545
+39356d51-4382-33ac-efb9-d5b6ce441e6c,1145151109,16655718032291937820
+81b95d60-cec5-f404-bc46-c1d81072627e,2610207259,2136944261571758910
+96ff1062-3fce-0367-e60f-5b8925b59638,1056856600,16484881819991261353
+2a0e0cb5-1cf9-adc8-bb81-5120fe74d108,1824086508,2649435120180337650
+99b8991e-b8a8-8946-7e5d-64abed0aba85,3637630636,449424045969956706
+5e979acd-56a5-46c6-cdcf-97e4fe8e449a,3012966120,10422054388761039299
+e6ee0f69-efbc-8730-b2e6-823616f7dcee,2337243678,3579222633158228452
+332a45f2-a8d6-c650-1ffa-7a8c4f28cece,1809637222,8383596588684765503
+fd92d52c-4a9d-6cdb-3219-5f13c3f1bde2,214848558,4401028299578976124
+a6db8b6c-6267-91d5-df1f-90ee784d510b,2585107130,12866456569644077313
+76108b6b-0bb3-3dd6-1439-d29302f078fa,557071306,17180027359357995446
+1c4e8aea-d0ab-3fa4-a4e7-768d18c70081,219550932,4645424144864740558
+3e1000e2-79fe-f16b-2942-b00540019722,2079897103,12219055263576046655
+1b74a361-c044-aefb-8f39-40d9061df512,692991947,13435943387280586772
+0b64fb79-f4bf-abc3-c9d9-13a2a5f44e18,610678129,6598946828928686616
+3b6a8f0d-8fef-4c64-cb1d-ce1111e0c586,487725112,1820670188116706128
+7a1f2637-033f-11e8-033e-24762125c318,3453397764,15941009038480058008
+79718a43-c250-1378-53c4-914b03e2d33b,359935899,16288735095445946419
+67690f0d-7219-7d0d-9316-a55ec8fa9307,1164952455,12079160466943615954
+003ac5e8-0237-3796-df25-64f6eac0ce3a,253215649,9421773005796068710
+6908a03b-206f-67c0-c0f9-e4fbffae3e27,3824134791,14799782699296783316
+1bac5054-0a5d-43a2-a0d3-7c53b695fc97,2440489584,2379759016297281732
+f8fe6ef8-341f-91d8-03f6-2f77f5daa058,3026918023,2857027929703036393
+7ec1b83f-e816-0ec7-d540-03db6ffb1c7f,3609998009,17616945245162010195
+23d611e0-cdbd-fc8e-75c9-638b9d29b63c,144000154,901957912403410573
+20b6b474-23b9-d51a-41c3-6569aba8461d,3221165314,8174637885418868617
+200dd87d-0122-6792-6601-3a9930e5b89c,4157600193,12172246083081213283
+5f378b1a-ee59-40cd-74b5-35a90c543f06,2741209745,11758559472570113086
+044400ae-14ff-5215-3341-ddd929aa2ce3,2178690383,5628599992061822100
+1e5456fd-33e9-38de-fff8-bafeaefc89d5,1974152056,9774232423150800453
+1ac6cd5a-8cf5-bf59-99ef-35377cd68769,2075233763,7050762583353754772
+5fba5d00-1b17-ae40-87d1-51bcea7fc7fb,1082014172,16028702549180859593
+ef0c1744-393b-e684-4f4d-ecbf54536f11,1605188028,592864466512805617
+135615da-a80c-8438-7ee9-7fba7e6c9c9a,1637873027,2809293937774422466
+d562a8f4-0bb2-5ded-5000-d84e278c273e,4144909110,1455160866379002967
+e0b7e165-7673-e982-e7cf-8dd197e9e4ed,4185346815,14019993477040823020
+d70e8a04-2c9e-5a3b-bf04-c93dedda58b1,947637992,10035439087690749304
+9d72f710-0636-b32e-c7b4-8605611c15e1,3707116635,1717062009881944845
+f50c6089-1e00-1237-fefb-abb71c922e5a,2388698243,5144906778220563196
+5b11c4d2-c6a0-6111-096e-f6871c04aa96,3495337322,8264369884595425056
+73ed5cee-c5bf-dc59-681e-368f5397d2ac,5348646,6485407378173761036
+37e62933-11fc-c0d6-1bcc-a4f948a42fb2,1976263537,7259098858381850536
+5ff3c64a-5547-cd59-f193-1d9079492dcd,2497185892,11281596558455786020
+8d4361bc-661f-20b8-1c55-e2e9279ca723,2755897914,18300097395747727432
+e31aa11c-b7f6-39aa-a34e-2f14ab2032cb,572266131,9864154355741487958
+cd4f495c-5bd7-6a6e-5ede-64899682e81b,495353858,16156309101295243055
+58a1966c-6b13-3586-630b-0f8027f3e351,4020040619,5851294592621340535
+2edab6cb-ce92-af18-a42d-d1a39d2c276b,866303509,8921914639129739454
+c7eef5c6-21a0-8a80-e70d-b4197f96ed7b,3886946812,11081822252947823239
+5213fb5b-3e43-c51f-8cf2-b335717f5ef1,1621089120,5914091727410015240
+6c4786da-878b-02f7-4881-4602e85ae7b5,1242918256,8702107230851273912
+e06ad2b7-5a46-c27b-f94b-0b905889a53e,2079958253,5765371948023970683
+3d885114-90fb-77a9-3322-ae1ecd541a75,4162273921,10251459895798129391
+37dd7141-1b66-cf8f-8ad5-bdc52c85f11b,446709540,16283002880437241867
+e20b475d-1042-271c-3d96-3b999ce4cabb,1345767805,9265762553786199376
+a2ec067f-7b28-4578-5326-d2c9faa9bb91,1598318949,3529381698146792640
+f9016827-a614-d025-4d6f-3210519ff0e6,3157558574,11877911698432489540
+f15aa15f-88b0-657e-e1ba-f6ad6366c2fe,2939404010,4116799323699651187
+844561c0-3045-6076-f1eb-de1d5e5fb0fe,1405999979,2852772236686681382
+b00dd207-a63d-eeaa-83a0-d24b2d7699eb,158293311,15429495624544556609
+ecc5a6d2-1079-e622-5d95-b755fd7a0c1a,287641899,9727161184208380517
+a26389d7-2de6-7687-e439-5cede93fe502,4171365087,15476659784528630826
+6c5e3247-d01b-160c-89c5-bf40a409c283,4203141434,13450086243073446683
+acd8d8ec-8f1d-7922-5de0-d5cb3f28ad2a,3328009627,1162557268184206885
+a05aee55-1cb3-ea77-f2e4-222657a4baac,3298483530,18359134979653517365
+d8621317-661b-b897-2c1a-72841a8de8c2,4021988688,5670262106326796960
+b8e108fb-7b62-dbbc-ef09-85e64f154faa,1709333662,5956947174606931858
+c9db645b-ab18-9c4a-bfc1-3633dbd4c363,912024818,5085292409580401763
+a76ac0de-c06c-a8b0-515a-d2f97819bfcd,2130910733,10977831610368623196
+38d3ee9a-7ee7-0a41-b614-de66f9813d57,1593810763,2668193721557413316
+59503ae6-ed7a-b218-7550-9ce987a8ecdc,3709765549,11370824246399062861
+2088fbc6-a5f2-483a-d21f-589602672c9c,2460541951,1881038676137709403
+dde56c78-a550-9de2-2bf2-4c3609dcc285,630553800,7782412011589308872
+8c2c88b7-1c80-c2bd-3bfc-a550eea81a30,1916912568,10873669761373278030
+03a6dd1a-c07e-7a04-c805-96bcf8f65011,1197555047,1058065448654286690
+d2d65a2d-e10f-5f63-5179-3cfa14e46d17,38730772,5421505916121910372
+ee17489f-1c14-ad7b-7257-1b3c0a446681,3095728983,18166498350438146187
+6f4397e5-b095-764f-50f2-c7455c85557e,452677824,3960165124049485728
+b03b961c-769b-faed-132c-d701316d4617,2922622057,4400157193358392216
+15a03c51-26f9-1cb6-52d0-39e8a4d2da6b,1940321045,13477957264786486587
+b936d2fe-4080-a483-ad80-dc613e242621,2156115041,12259986489776198697
+309cf5e6-ace3-263f-216a-d42c375bdbf2,2120920707,4962206753454509849
+25b1da7a-efb2-7950-4a21-d164760f3ec7,99994795,9293905719239998213
+6f1beef1-6609-544b-6b03-18c222df02f2,3409602844,539930958007128770
+1fa2ddd9-86dc-a278-e0bd-9a3791691683,3537988895,15812542201101962110
+f5f5b292-6314-a000-9967-bae31e94e0ae,2879611821,5793580497127928398
+47903634-19ac-0f8d-3e77-00507e5a235a,1624222472,12996036554325824531
+0f1826db-fd80-d6ae-4f42-9310ce0ad05a,3617299336,6051451307880884691
+71080512-bf2c-22df-53de-86932569df8d,1271622543,7911488317454145966
+8a977176-c88e-853b-94d8-eed38ccf7d29,3129647483,1701775967225343072
+74d94ce1-b112-ce8c-889e-502e7fc56ff7,2377686562,15062761313782295223
+08dd026b-2392-f06b-1ca6-d325adff5fca,1152823459,5101323331347450097
+fd1a8723-ad72-dbab-f189-cb97191df07d,3567824077,6053848301041146253
+34efae17-18dc-39fa-0084-1307b29b0635,3607641733,8292110735681788652
+7d69a5e2-5a51-b9b8-aff3-c577b5dd67b4,2548143284,15409759570067195704
+89793aaa-5fdf-9b37-7217-9d9b84ee9bbb,2482040920,16313229231805542264
+9e0c83ea-0b34-de03-6a12-1d10725d2832,1411302141,8912258642856831697
+6679ee62-0945-5a42-5f01-0075cf524046,2863591351,17229020545311961740
+c8d354a7-2276-cac2-9abf-81366c8381d2,1070133629,1954002892337638557
+961707a1-1c6f-5596-5315-1c66b12ad480,3216086832,961152618133238668
+c3b2b76f-367d-3ef2-a908-05a15fc1981e,4005724974,12356661905525063125
+dd122191-29bf-7776-add8-6fd09fe8c24c,3512107517,6209907744603528318
+eb6cce50-a403-0377-d493-3a11f908fc48,3488456147,18048321331370859671
+64429a35-ada7-f103-180d-60fba221c8b2,1112956669,15742912202449516711
+eaed6035-2cc2-e7b7-540c-c6e4abd63f30,706607646,14817080337455845813
+45c8ebbf-8371-3c7c-5810-994d7e266e72,1464517969,6646762128695437440
+b29bc959-0b17-0fec-940c-c7f9762a0578,1975625006,52074376224683003
+e40727c4-b64b-cca9-7ac8-a49791134e72,1964557290,15548076784639854586
+271a06c2-7a62-4723-5775-97cc7ee3fb3c,3239118786,16168188156034006463
+73dd4933-99ad-0bf4-9491-b880d8a06649,1297336982,5503510781564467097
+04ce3144-722d-1f69-9e71-c511bca54505,3675672179,16327142100406634569
+4ffb53cc-7c74-7ffe-1f8b-facb5d606a40,224626520,14263209670926059874
+d5c05c94-8912-7e55-1020-344eaab2789c,2639763791,4553352561402784139
+5dea0ff6-cf98-bbf6-eebf-a6d712672d14,4224447539,6023370112297156523
+53e3e574-bd03-1075-d316-eeaa6e0563da,1183876426,13436011718535956156
+8e2ca6c5-9079-7f5e-b905-b6716f3b1fe1,2345502413,11938457799066522568
+0e43e49b-698e-52fb-3ee4-d432f228217d,242078628,517273035507072760
+ab982a22-f6a9-464c-e343-5e1995ceb796,2583599528,4364439015427529490
+9a5686e1-7801-ad98-dc8b-b808c60e5dc4,2629126382,22813429096556613
+16c03371-1ae5-bd32-0a55-76c5b70b31af,263669608,10017129683899158814
+1b01efb8-01a4-8896-aaa8-731ae5bfb65a,1960945815,5500409691660459293
+db71c4ff-a733-5efb-d4e5-1342feadbd8d,2942517701,6627055751716872135
+02be3265-4309-9e0d-b593-ebf4f8447cdc,2562559969,3530302109966069597
+d7498fc9-3dd7-682f-bb54-d65ec94be7c4,1371450915,154685297801573565
+376d77cd-f123-8c79-18a5-1bcfd0bfaa3d,3972721964,17240487522589412215
+0d3c8f52-e08c-0deb-1c44-2e7df7e42b38,1741549351,12751406163877560317
+d5999784-7ce6-93ba-356d-cc29f48df4b2,627192008,5231051953563536454
+2b62d4e2-9989-81fa-f5df-c9760e194bf6,2703257666,9783836728859793293
+ce3f818b-11be-42e1-6dca-ab8f4aa2038b,846813265,15329888413376748994
+7f1fa4c6-8ebb-4990-33d1-397e716a34ff,2795033611,14589933571368531341
+0d3dcef4-1777-2843-d09d-d7115005b0b7,998360152,10636182602998186556
+bf44d58c-1283-123e-2394-8bb1105a04a6,1804007421,9379042843275324552
+4c0c633d-e641-537f-f93e-235fe0088ed2,858285525,18059400209219396871
+76f2936f-fe52-7eaa-4f9b-68c37e967b68,1525138964,8356683173949720345
+defd73ce-eb1a-8ddd-22be-c1465e593918,1293236682,13671849391508480531
+46320c61-5275-764f-140f-47981b6c8083,306375730,9918863063634024958
+306eee6d-fd41-2861-dc84-200757bfc43d,1851832486,14078962861956259394
+15affcac-912f-1c2b-9649-96251830d17d,3065815605,9629303456663344437
+78a09925-6417-4906-4353-6926c5787447,3620469904,9724928483647376625
+8ceea5ed-134c-bb77-85b5-b1948a8e0612,2367519506,4015973004712387329
+8539fef8-268c-96d3-e92b-3db35304bd68,3945393046,1651142209838020987
+9ba4cf7f-5e6e-c2b2-2274-000922f5c9dc,1123028572,1743084239080270945
+41b9beeb-6742-b4cd-632b-60fd471652a7,2163018128,18308291939567080735
+58387479-a0c4-ef19-1625-6937ace93b98,3258464564,2769627682941172126
+b6b76f51-8e81-221d-1140-7cdd493975ed,1542275040,4921254647135090424
+f893bf78-d9dd-f162-e739-fabd10f278a5,3602985154,2118374760997020750
+3ac79c3e-5cca-5cbf-506b-379be0d799ed,2059591828,10446008641154287861
+ae1220ae-e010-b6fe-6f28-ea1b8beeec40,2599913520,7700704754003074321
+d154e08e-f600-dfad-07ea-69a7ec0e160b,3712291553,12741123953245409341
+d6e8154e-60d7-ad2c-78cb-6b6bcfe1f468,4283888860,16860093810970102495
+2398a6ea-8d46-6027-d19c-25a0e91c987d,2560488879,11835470232227685550
+b54b43af-67f1-f71d-d49f-62698a54ba3b,423968175,16020590933452593011
+977b749a-74f1-d8f7-d188-e7ce656c27f4,927784817,13450463689240942382
+d907eb11-ddb4-ed7c-c40f-ddb27bc259ba,625645105,14491720833317901983
+d42834c8-9d72-0bf1-aab3-b24497ed5fe3,312458395,10179853471145599457
+7eb27837-3eb8-9e9a-e1b0-2efdbeb27742,263404319,16068536245128744761
+54013c40-b4b8-8743-055a-f2b027a6379a,620842491,10416801325460642717
+0348b167-ffa0-299c-a7f8-9bdbf645b0fc,322943579,8492910725256966340
+68306a07-14a6-01f6-4580-d3e7dad77c79,2458682871,12702662603050899283
+bb20210b-e0eb-b1d9-f36b-f1b4b9545a01,2501575440,3219133202945275406
+3df9bdbe-ad61-b49f-4394-bb335c5bfbe5,613915142,7675010447815008927
+409bb3d0-8077-4857-034a-fb8fbfe09d3b,3823879409,16988713517982948022
+b0b23b4a-e804-258e-5099-abbc7f728d8e,3029018256,6552748760569464213
+9a94fa6f-c3e4-3afe-e6a4-8f00b9c001de,4166359226,9083450452792063515
+70e8c2ce-4ad6-a2de-7ba4-411128a75c51,440295318,1642485724800425719
+cf1b3e63-d2a2-5387-cc37-9372c5dd103f,1399420838,16760316924010465877
+5c1e80ed-aaa0-104c-9748-8152b6708516,2236670639,7204213361327407932
+a13de487-a3a7-b612-cb1b-6716e37c91fd,86020651,16913786128070609156
+43cfd62f-edf3-a33f-ada9-13c1343b92d3,2392094113,10417193244929400442
+a7529952-7b34-19c7-6e16-34f39b0fbe54,1208765478,5583850853361508603
+15721eab-21c2-056e-2a64-57d9418fc461,3352693995,9812251937174536016
+7d796b14-cf18-079e-b858-8a2befa9e392,2918808128,18041067990448060840
+ae76bd70-2398-dc5a-7267-a80e7501e22f,2617750201,2525505642656591996
+36e3c5bb-635c-040f-2286-af67b5307c59,63314032,6821120954240018540
+c0f6befd-95ee-3e23-781e-8d998f3937a9,4261888554,3428823575475984974
+868bf2f0-4b67-4c86-9787-7949cab63488,2402314932,17929496347490117214
+507897c6-bd01-48db-8b28-159e526fcfa5,1844206050,2011536735337152341
+af94ce0b-fbc4-3d00-6329-18b68d5ab5e1,3976785136,6643410937139091365
+8ed3322b-d00c-1fcf-a912-4e7126a1976e,2770333453,13706165394573023666
+d55165c4-e582-69e7-6948-46728a968fa2,2091443237,3532312067352532906
+bfed0779-8e61-d3b2-20c2-b010de4acecb,3692062960,11363377491119064352
+3b387403-dff1-1169-a7f4-c9045f19f372,688091425,1500602386634071094
+0aed0f58-daae-3684-78f6-430b6f4574f3,1697524571,6349641244893846414
+a13cc870-4a23-5005-b15c-8bd66bc984b7,4259135454,3999841461183933008
+98d1544e-fe8d-ae86-8938-f14831b9af01,3579757378,10222741190351882873
+7492bb68-f83c-c380-8199-47aaec1133b5,952531278,9985048664733547579
+8641ad9c-e4fa-b6a7-bd4a-fec659fc2a88,1508065100,11639521171983103987
+ca1b7e6a-f390-c0e5-61d2-59672f704c86,1111396262,195013010514534662
+f7d2f932-ea9b-2a70-3a99-ee15b0c12643,3485771501,11384051783807948956
+e26df30d-5738-c3a3-50fc-9837a953d96d,1926853080,16008158588677589285
+1736e781-7618-0b9b-3785-6dd270fc5d7c,742943538,6169110087433359611
+6f3e6b7e-46e4-3b9e-20aa-be6759847d1e,810957782,13471810894860328944
+79e503e6-27e3-7a87-5519-47cac6c2ec1b,635842360,6340172312029244634
+4d9517ff-354e-7b7e-4a99-9b9bedd59679,2951103475,7504965811523550090
+92db6919-8b2a-22f9-35c2-8ad92e167db9,1089059126,4150104161139392881
+53c59c5e-81e6-1b9c-c0e5-b03a4053f56d,2161527284,1241849306431079076
+92a80098-aa5d-e36f-3a1b-7fe5dc46de13,954493082,4713645027581636581
+9cb11b28-cc72-0807-6afc-6753e11185a2,4227788698,1048940510535996896
+17d9996a-3ece-fb76-e2bc-5e46f9fee159,2689836807,8047367802526910455
+5c7dd447-176f-fd15-1ae8-926b441fb94e,1873635794,7037051130548621706
+4e142a55-6928-347e-7859-88b2d24d39ea,642070469,9254379354594090748
+82f0a4b5-222d-6ae7-1df7-90ac6051a1d5,534688562,17209794181595707564
+e544b416-6023-4216-5e2d-c7502daaf8f3,2476514085,9494800440603945214
+fff1e212-2034-0ccd-311b-d2642bc70541,2080029347,4871583760194278167
+800936ec-0c56-37fd-a0da-43d88feccc8c,3974551259,13050822096141484148
+96805bad-32de-1b5f-40d4-030965930ead,2764588911,15489489840026928871
+2cdfecb7-5b93-731c-c086-9e1506bffae6,2391862725,10820859371465103643
+089c0288-99dd-ec76-9ea0-88bd94686274,190166161,16567446069713586789
+992bb4b0-a886-8a84-1b18-503e71e9a251,3023364865,5544639613452979694
+31e8e3f2-e522-f629-3f5e-63f4805e6b61,560990799,12086396139581476055
+0da2a8da-1c71-11ec-e448-4e94f23fce93,1848012347,12144181693959277202
+434003dd-021d-847c-f8a8-49dc2a6a3119,1103671484,2935321837684815773
+18505dc0-6ac5-4a89-52d7-695b8527061b,823295104,5067209875654707519
+11f3f8e4-cea1-e7ee-c964-05797f2c485e,1625908266,13571967838454201683
+1a5edb64-eeeb-8c7a-8f54-90fa491056e2,2121382362,10773441453251817778
+ce6bab91-7243-4df0-e9a5-f42d1bf7e160,1772090632,1057681771983278839
+2b8ecf71-62ba-c34d-6aba-adbf048aa755,2537143130,11724396895187146705
+79015dfd-5d15-6f34-3aa1-d1cc1b68b32d,2285837411,4939388693472664488
+1a5fa07a-12c5-ee36-799a-3bfb54de8d9e,4267390829,15548498426895778275
+2b22046b-4f9c-07c9-f380-3546835c32d4,4261825660,13375530952257018930
+0bd0a428-ed4d-8654-d26f-0ba0fecbd7fa,1975753008,1818924469157805056
+ec3e1ba4-846d-5aef-5221-ed27b080c7a5,2115288488,5408627363890279736
+bd06b7ff-af9d-0688-1d8b-bc49e3894cb2,2196483376,4826236534691678816
+dd543d69-3e08-631c-25e1-f74b9e7fb518,160184326,12002327407053754644
+dbcf0a1a-1cf3-bfc9-62ca-160656169c70,29512703,11587643093460405563
+ad031a56-8649-7bab-0904-f62b1bfd594a,3004250887,5800230950141795775
+ff173879-5953-cb4d-32b0-47adf1702834,3377455331,3586822578757833235
+1252aba3-cd2c-1dec-30b8-aa76d9e90ec7,2096953276,3855879687982011273
+11b293e2-7fe6-b555-7ce4-9b5587ca8d55,3525914490,13357459604475660521
+572c7b8e-9050-af24-9940-bf71fd92a9bc,2702207591,15312939364509398651
+5310023f-abb7-dad3-1b34-2d93abfde4d5,1830800636,10383200144416469272
+78539397-0bfd-9c1a-afb9-00f7ce359dfd,1223786940,15156937542051817751
+72cfb894-a7a1-3b8f-20a3-e43f3e655c09,3356914109,12796779502998408820
+7e29def7-bc18-7ace-e5e3-c03ece57a0d9,3636055053,2467490410963868075
+193383c5-50bd-107a-b38d-db90ee6321b1,2143989307,15543726782632018256
+3b432d97-3eb3-c01b-7461-b7ed7b1b2115,1920877224,12945154670474549454
+c986de7f-9e34-5179-92d6-83072b4caa6a,3462374177,2241386318170355698
+72c19fb7-9feb-98d6-e273-594c7adc3eff,3765594192,10599358762318282214
+da38e8d7-7f92-77fe-675d-c9448d8ffc3d,2569268757,17674553038280063171
+6553385a-fd79-62a9-6eda-8a3aeae511f2,4077807754,16234887722484185951
+f34b1530-30bf-d50c-d7e5-39bf62789eb7,237825260,5419207917859937273
+6eae6f16-4e52-4d58-410c-ff9ba2a4b630,1983928668,11254449877918231480
+cbfc29b0-661a-df56-1dd8-f5b31850d0d0,4274473323,4678810333458002934
+10fbf3a3-0b3d-95ee-9e80-9f620a71c442,2076484830,10054273595460451886
+b58974dd-0382-a9c0-d9b1-7bf7fe20904a,1192709104,9277825421101803781
+a7474e56-bfd9-21dc-f4a0-f926f75551df,2642255901,4738872024801711148
+8f378470-8d58-38bb-fc9d-c76cf56e01bc,2770536216,17249247811719964411
+c4005c47-02a4-8261-0ed2-03ed3589c9ca,3078446736,12648716562223965470
+fa993377-5c25-f3ec-d496-a30a99561b93,1123287695,12398730287287348156
+9a15c380-1d78-a6e1-d136-442d2908295a,3507538418,6570124170204263851
+64d00abd-ea2c-938b-fcbd-c8da85576d3f,2777245450,7292581375045161979
+5e809f93-c61d-899a-08b4-d17f3897b18b,1172199744,12437127251003784789
+0700f9fd-f7b2-6b21-81c5-7fe852511775,3749629364,7837862499060286214
+ae43152c-2ff0-1bbe-a331-eeec822996bd,74041659,7896506864057602196
+d8470eca-c4fd-ca45-16e4-3a2882ab9130,137005674,10367194261331299735
+aed3dd52-3208-bde4-ad12-2f62ff82a624,3935601328,16362788392926604536
+6d7bd2a2-7812-6d0f-cbf6-ff95f99f0502,1512509813,17577352249101022289
+cb96474b-ba34-49f0-3f59-749f2677968f,2602993054,5260103023406074999
+f004444e-9536-d35a-7f84-57a18e06b164,1577633051,17020110316333670206
+4c10b93a-2746-9aa9-73af-2758a5ec8d7a,172324032,756787947619695221
+566cfe70-5952-eb19-e91b-8821c1b9d001,2965276591,187022610273048512
+08f0440d-c5b9-9fd7-aeb6-0b6ad1774b5e,3612561566,4490481765247316042
+9580d13a-21b8-3de2-1a70-023fddc5d268,1922028223,14697726161135101845
+7f50eb8d-28d1-b562-d56c-8ffa807eef48,3985744027,16764534481849006694
+9630e0bc-bab7-08af-8be5-876bd4896af4,3586155433,4679197297154420323
+92027fdd-43a6-415b-2d14-2665b9468e7b,349997790,2947977387784009879
+ece74d3c-9f1f-ee8d-d93b-55591b6fa311,2938788638,16270913385238802609
+2385fbbb-d700-a4a7-6199-81290b617e4d,3099800971,10782878764235752305
+dc11191c-3d93-034d-3aeb-04351aad6ef5,164287538,187962831792152451
+365f907d-bf1d-9fe4-21b4-3bbd4e9d02c7,3500685506,17082507831495347667
+a9ebfffd-a584-2cde-190f-13c67268420b,2082316788,8246594099870449416
+f3f7c968-1121-30c0-3c26-97fa5a247ad7,2653988641,13506874455191007642
+8429193a-9b5d-8a8c-38bf-c1c977265c7a,1366044198,10857480817454897493
+9d366402-bddf-9c46-a867-d2a37d10ffe9,189141498,9828464397634116557
+17d665bc-e8a8-ed9f-3cfe-8ae34d28cb03,180279738,15660252271166329990
+34e3c767-85a0-01bc-4e95-c03855879bbf,3546383855,9237379196352428466
+235960d4-897e-79e1-e688-632d0728cca3,349655512,14969386827670520548
+2ceffe19-5b09-2e23-8884-d0a441c4c181,3848164998,14195092546311539908
+16ed24a5-dd28-808d-ab81-457b45f80991,970689826,14689670046230238967
+4c0a983e-7d1f-e562-499c-e52cd95f73c9,726978826,13099506369870689515
+f6c868da-e9fc-5eee-85d9-8a5f7243fca6,1198930195,17556099878605585357
+7e1345c7-687a-9102-8d3b-509bc1ae4a32,3045114896,16453336897041365138
+3578e1d8-fb6e-7a1b-a74a-372f6581ff17,411210724,14294484479500203545
+b21a3088-9403-d4cf-eab1-6adc4e74d227,2224394709,14280598516913187382
+0b4366b5-157f-076c-abc1-25d397c090f4,1297905190,9508959361280429060
+f5e38284-a0af-843c-e1d1-7fa6ae088346,533205045,10135006877031139684
+708f35e8-0fd5-b0cc-de57-543b58f4497f,130544650,656310779510858994
+43244a67-edc8-0d44-58d0-bcb7b4b1a3f9,2832764449,8749326749423433740
+66dfd457-78fe-ff7d-008f-f1fb2868d7ff,3815054673,13223736161547985301
+1b5adc7b-fefc-cfd0-da0a-05af19903b46,3219823391,330858433770396737
+17e12ac9-6b6b-cd2b-d1ae-1396ab1a7135,856842379,5855371989972846195
+13321c1e-af22-9768-4ec1-874ae1fbe509,1794619951,4921411910356027087
+a82bcfce-365d-ea18-6ae2-042d5040c444,2852503698,2376288904963328886
+c117321a-c3a5-25f8-cd59-f2267700cf1e,349998858,10160732108534491268
+72b643a7-52df-cacd-7fa9-c96592269864,515919015,12620765754548765045
+5939cce2-0b4d-be10-a265-c475f318d068,2175024945,15017636058337085676
+637eccff-1da7-82b0-7d67-79ffa203324e,3127957376,15847348166961160543
+b1ded97d-cbba-14b2-8afb-e15a14dfd4be,1765623430,15892420317262706876
+49e7f899-1b74-6a60-f18f-92c60a42fdbb,1439655458,16931889880014807021
+d00a5e78-78f0-3247-0b30-696f3f18b502,1380445687,4904863120788803207
+28fee24a-2932-5524-f228-0a0d17b835df,4281791094,16862141853253618779
+01e83588-0c0b-4790-9f21-8a27eb22fa65,4268218150,12188648118738370314
+64ce7907-e81a-babf-f5f8-ad82fd08052b,1182313391,7000094779029670756
+76ae9a97-9149-144c-3eaf-06e2b31d0d38,1308034589,16598662646868579250
+d52d94df-776c-d121-56fa-1b456b3b805d,2686723475,14769233422665818695
+5a492e08-b8a5-39cc-f9f8-909855dbcd5d,1002723813,7311761122257102163
+426b46d7-c31b-58b1-022a-04ccc748adee,2705793456,17542889068812243591
+6f466648-eaf6-01b7-f02c-8a3efc950602,3358918949,16870758218098823536
+10abe10d-811b-5523-51f1-b624b1d973ee,2107533462,10549413371228451175
+ed7a9393-428a-99a6-434b-b4c4105caed0,1797508631,6950466297780882665
+d72e1831-a478-3877-7e29-54b99795d643,1727568123,11900569556057438164
+f5d3e442-1479-6389-e5a5-453a34c5338b,202527734,3644389574582962999
+db9638e0-fe4f-bc05-8d90-d65db4821a41,3965789976,3827623565659123260
+3bfae04c-4b64-602a-d5b0-3b22e320cb81,193399081,3281924346371967510
+f08d1c7f-9136-1826-d138-c5d41a6c241c,2736518156,16807991177220601576
+6c5987fc-4834-1233-46c8-66c4664892e1,953601617,15656268167104918871
+502cfde3-8220-fae4-8429-11b84c32485e,152889914,6073484093637459340
+e4b4febf-19fb-fae0-00bf-e3edd33e9fee,3757842616,9015131411968697004
+7539c303-e2a7-555e-c42f-3955f2b439a3,2241212864,10595996786960138378
+158c99e8-6586-10d3-db44-cec94fd08430,4035574802,13871231770355536485
+069bb8fe-6ccd-1311-fbd9-ba5d8f7ef592,3739746017,8765926667473544687
+a257f906-8a49-5fbc-3bd9-f3ad231dac50,1330633517,12476281759777355877
+fbed75b8-a12d-8336-8364-c1eb7c02383e,978312867,12896792471486010651
+bb9022f4-38e1-ecee-7271-a9c74325ec52,1156315983,2850704304749829762
+a2ca8679-9c13-4d5b-9424-2a323d583bb7,674062364,2548009764528803077
+451c04ee-5672-a4a6-0c27-b2a7c8b4092d,2948764062,3724621948403151581
+59762fac-5fff-74ff-27c4-91125eeee42a,838313793,2690360511632123566
+5d508fe1-6108-aba4-f2b9-7fd541c67dd2,3377813560,12270007349873188786
+c78e0403-2b2a-8edf-a0b3-11922b053e3b,4087740431,1345903817477962168
+99cd4382-1e9b-1404-3cb7-f5757a090965,2792016435,11567713412736992788
+ce9469d9-5f98-6a38-0200-b7fca9963923,709703328,8522804029806626672
+ccabcf21-c2bc-581e-89ad-9d62b56e0e3c,2888118492,9276338614790536051
+cc1912dc-abcc-7373-8cea-16cfe26a6220,699947356,8742480167733421573
+10ca6397-4ccc-fc00-806a-755392605245,3135219709,7668136775151941546
+e9d847ce-1c2a-703c-c87d-dd19a0240b2c,1594928901,8495827043854016869
+4d38ef7b-15b7-e028-2e8c-465be1d9909d,3396172775,625151550196616214
+0281cc37-0604-1e5e-0871-8c7c607e93d1,4251857641,11000810460321537869
+f281e5ee-cb07-3008-9501-78b6062aab48,3077313265,16110400574529212366
+48a83000-38a3-7c27-0929-11b2130588d6,1585106002,4799992441935625843
+6e1e3229-00e1-283a-f4d8-f12688361082,1930835960,5729427355679862358
+aa38b0d9-418f-7a11-3d73-5ee7bf3f6c9d,2050286762,7442220270264936175
+51324918-7207-ba92-eaf5-df16c9915298,3036866626,8777271818672889419
+acc5904b-459b-ea86-5025-c291706d76ae,2500686786,369848614312081130
+c5730a0b-a496-35fa-a98b-8325cb4b49b8,2309227,4342459692600484090
+58afeced-56bc-495f-1b53-5bd19c266fa6,3503579566,2377733749829472330
+6ceea662-d3df-4f0a-1084-3eeebb5a9d9a,3878644294,8402950293909264925
+3cea67db-31b5-1d2f-07f7-b3554202aaac,2029535223,4849487769495802483
+859f0ba9-f12a-00f3-27e9-3df048c91694,2892085576,10524538118099669824
+d68985a6-1593-119b-2ffa-350903b01cc9,368043125,737688080515924224
+3bf9f5b8-f603-d2f7-482c-9f9d29749682,2461943119,16103260087970786420
+53c28abf-5717-4713-ea51-78fbba950876,3450583607,4667778373196902792
+96b0d792-8958-b537-c3b8-2d66d7d757cb,4056974536,18416589246459530368
+d27640ff-afe1-1ff1-ab49-13a3ea212180,437823975,3383174517164475135
+681f8c69-3730-5936-1f04-0c92d0149bb5,3902623905,13030581081683307288
+edc09533-1f4f-aba7-456b-56c7a277ecea,3939551042,16695592314402542892
+54fc42ef-bdcc-884a-093e-935857e00706,339984349,14764300553564509652
+de245654-a199-2c72-d947-833384715c0f,2326218636,1865545559012800222
+23232eba-c8bb-5731-0540-a1f9442a0639,265529341,13752266683033618188
+fd9dcc61-79be-a6f3-2ec9-fe6e457f13af,2740620906,6737922704784627135
+a3933a48-a1db-58e3-2d9c-c45e02a1a1d2,264932504,4753849939748052330
+68cc2e40-01b9-ea04-9c9e-ed594d8ae631,141569720,83490044695350952
+f95381fe-d205-f525-c54a-51b01828f0e9,75772468,2108404567027090390
+811b09f4-7e12-bd48-6d6f-3ede7786e3fd,2398005772,13414142736037950134
+cf460a8a-71a9-4b94-067f-082fb13e8307,966365389,17583596202662683694
+98ae8a99-1cc8-cd29-1216-005cb9fd2637,3004444087,1359868123035493844
+932d017a-fc24-304b-77fd-2ce908a95ce3,96831763,11002738197481295431
+ec1a6b15-f0ea-5949-108d-78ef57b1bc39,614185843,11212237415831232934
+470fa367-332c-1eec-6952-32dc17972319,1990976419,2759345973797252015
+35f1a4b7-eea2-af5a-7f31-2445cca353a0,1298426943,15683638227583225349
+fb6568e0-088b-8007-0456-1fbec0398a29,3503203782,6852739873214124174
+c0cfa767-c6de-8fd9-2161-64becf9b0f1a,1634403491,3709825430735752939
+821a414f-afe6-a3ae-b3f5-f219f17ea567,3725337234,3647308355284606292
+1e4fbaf2-15fd-d1f8-c7bf-a892154396b0,3687082560,15342073796587092856
+a1fec642-cc40-9dc9-e429-d8562753d97c,658804337,11891805693015935825
+dae4040a-7b75-215e-00e1-4cae3b46f343,357921802,4879216843302595323
+f3768ccf-aabe-8180-5a8d-86d6057c51bb,3911244932,13123810688405938191
+7cdd5ee7-32ff-46ae-a005-c2d0732463fa,626276064,8824824165893623942
+1f28b5e1-6be5-6238-1e54-ce8e8f6b35bb,1099439849,3162676820925282076
+8bd4ce0b-5454-6879-9781-0ac4293f4978,658691507,4904697581294001233
+7df79ff2-625b-4f8e-1112-10618cc5ef84,2165532462,1093869540730853914
+51804102-0f28-523a-0125-affb3f7f2a2c,3268293139,2977619728386819121
+e9a8fbc0-7e97-7dd6-6db8-08e3f3d4fba5,2759015712,9800389407562383580
+e4246729-0aad-ae0a-5551-a14fb122c2fb,187147768,8313081340563053413
+6019fc31-847f-1137-9ac2-79a410c9a00a,2722483981,518143646036899707
+b9031a9c-a936-978a-c36f-0c2f0c22a6fa,3477638383,8547005207088267192
+99190279-0ca4-816e-4aec-7c127440b503,1385102483,5094068569211705644
+cdc9283c-3606-b54f-be0b-26fa151e5a3d,3082604964,7806216898572301385
+8ae42544-ef37-856f-4949-205b0a938f33,238805419,12204806601731646330
+e7f9002c-0d2e-a878-1cef-ee3b446ce653,1071249489,1667213415077652585
+2f0fa115-78a0-a502-2b39-552effda26b5,2188978756,17727939365702964863
+279c0ba9-5fe7-2283-c73c-51ce1075f38c,1572138405,8323470450639765119
+375a260c-0872-ac66-d136-4159cf4a0094,2659812100,17141448898466292108
+7aa9f6ea-75dd-c49f-8e1a-956c35f7fc6e,1760752636,2750182992970852096
+58ac86b6-46c9-113e-dc45-21cf8387261f,892669141,6271104717235311868
+c0e5a7ed-6656-2830-b51f-d62bd9eb5143,2187123975,11546710765141964077
+7784f026-b64c-c741-ea8c-1809adcb83a1,1817433575,16192029019331749754
+d45d9677-603c-87f2-381a-546fb4ce4a43,3716595674,11104758676047837546
+215da5d7-ee73-7ccd-e821-56e93aeea646,3279082516,10886207768928522116
+8af8562f-d353-bfe4-721a-0bd8900a7848,29798185,7145204640495290894
+7b1f3e23-b59f-581f-1a84-bdf0a1b793f1,1507269874,1055587985550159392
+174d5103-9542-c1fb-f092-c139bbd38409,4011690961,8394703590632176578
+4c792f3f-2e3b-54b6-eda2-024a6a028a32,3914984024,8139944235328424773
+74241443-3338-e2e2-84fb-df0eb50d0a42,449008056,3195598476408670884
+3714ccf8-f509-25aa-ceb0-3bfe6041ed60,3441094309,2661203752548997762
+4bae5f17-88ca-0067-248d-859839f9e112,3095303396,9613343650902812770
+759552c0-f7ee-85f0-4d2c-4ae1770f3bb5,1265904096,763771067696737415
+2ca3493b-64cc-e354-01c2-f75e86bf39ca,2533593429,10747633798997210093
+43ad4fd3-a0f3-a531-982a-f50795203904,2284549440,12710223157490402445
+ffcfc8d8-9516-5559-9e2c-5c2011bb9615,2393868946,11197904092973759795
+dc71bdcc-d020-1f57-6053-3a63a2b1a93d,278956389,1110557413090467793
+53fb53d2-00c6-2195-1b6e-86c20dc3d930,431541318,2434740270309834589
+40fb5e6a-55be-88ae-3a51-bb31764349cb,2981024558,16791784682233987813
+1db1a8f1-70d0-f5bc-b2c9-8eae6c1cbd11,4227395462,9933557357528820031
+6377e74b-b7f9-d87e-413b-ee485bcbbe2c,4012047940,15375650493426281933
+a5b91643-d1bd-0fec-4698-75bd813b6e8a,2258505835,17433030844040512895
+62608146-99fe-9307-d3fd-915743250b5d,2203185038,17061396677312302733
+81d17ae8-863c-add9-9196-fe3185fcdc15,618641016,1369156496517444813
+e9771e7a-098f-5daa-f609-9acd3da590a2,520017802,12343380927903929553
+a6df98bb-5ef9-0514-1b3c-160d5593d8a6,2415633257,15720845946026178066
+5bff1497-856a-6d81-a85a-7c333ef479fe,687918343,16244988126997354246
+2cbbf8b4-62c4-12b0-8e11-20279214882f,2765964594,17697876727450160001
+76d89a4f-23a2-3544-1c0c-4a48b1f0dbba,2958274635,1458710999127601954
+289b0b0f-1762-842c-5d5b-9b2ef0c74e24,2270560371,2503288063529959041
+217916eb-e504-00d4-2402-65b3305fbe38,3076461532,5000379590770690996
+c77c1589-8e34-e390-ac8d-abe01ad63cf2,873032846,4995254019386411351
+31349392-e044-8f05-62ed-26ec19802bb7,3765577948,10622876339616481656
+46682c37-2668-5f89-109f-d48085e71533,1439446377,7802550097814191401
+dfe90d87-9c47-647d-ecf0-118d44114879,1579630937,7263952425533681212
+20410823-509a-3c33-cdbf-f5254a8b5d09,2804098777,4088396268443624197
+8da6e03d-124c-d3e4-0600-aeead3430cc9,576937491,1867358636685216682
+4a3a5c55-e28b-1b26-f22d-a5ea84c010c8,1246945224,15797514538981901751
+3fb874da-d130-8b03-f9c9-8f907a0ce7bb,520814188,18234975815965865354
+639b9575-4e85-c131-3571-28126e5205da,188685166,13362592032645235985
+9e88964b-ec18-c744-4267-55361488e1f8,4246278991,13107820722816838531
+e45748b8-6362-3557-16be-82b2e84a3634,1683214695,2596006035309512986
+50e46cd7-dcb5-7702-d85c-1a5c95465e1f,884966509,17628144290200340143
+d8353f64-be94-7577-a3c7-3d740246d8d0,1099821054,16891643077583547463
+4e0567c8-0d3f-eaf0-f8e4-3856fc0337da,1055400335,5641930204126909880
+04f3f2b9-9f9c-3b88-3f87-15820e2890a7,2267330927,957034501657995589
+9b0e9ac9-323c-cbcf-61f9-b49306749436,3730739074,18010878513669087250
+c09ccff8-2f4a-2633-faf1-a9b4ab089f7f,386037674,9519925568423741826
+bad0d1b9-be16-dbc9-2f5f-0dfdf4f9245c,1037379751,6621675062942225352
+9abd1158-7deb-6655-db0f-02dbb49996ca,1791479163,635032903841266729
+1acd9a6e-0d96-07a3-961e-7ce9ee10f491,1322464633,622601287863254282
+0535f14f-555d-e6d3-3518-7ba6da83d5c4,4207225986,5892571746991747095
+204e950d-aaaa-dbf4-7e5c-f97f14fd6d42,731706043,14412104856329797438
+d14bd438-c836-6f4d-6df0-7a1b4bee995d,4234082012,17232521571016044985
+1c60c03b-ded3-901b-a14e-d16fc3861e27,3528563761,5455933673435885866
+fe7a41dc-4ccb-0717-f995-e2de5a15eeb2,2059012387,3925197243925759017
+7563cfa0-d9e9-489d-6db6-8ef91c022868,4046625206,12188990065149344016
+a85a53cf-6e6c-70f9-5622-610f53b3f425,4227544094,3984011337485666808
+eb0dd5ca-dbd7-325c-4941-974fdde91a0d,1797196643,10536688042183608891
+d50d5c97-9192-756a-a751-06876f45ae23,2152705969,1016241556921576498
+6cdc78e4-363e-802c-5919-fbfd3fcface3,244267989,16294292761323102017
+280de8aa-b220-fdb7-a7f5-605a46251d2a,986425127,730697973816920439
+e8ba12e8-b01b-4b65-3d1d-8242b2097796,338873148,9162505535248027861
+66078634-46e2-1f9e-2511-edf2e7e2abf5,1853120572,4335324641137565298
+bd2e75b6-ac13-ff10-1886-d95b33e3f8a6,3823991057,18131051493022004215
+c2c158b1-8e93-b494-3e60-fb36b88f1960,1418737424,7988754146745038321
+e5f2955e-7680-0f13-f712-00490f3d2aa8,3765829350,12646492373105102754
+65459ff9-3c0a-d50f-4eeb-e4f21ce8988b,731215800,4380611437486310074
+3a17e629-ede8-a86c-1a85-7c5cdf21adf9,1802697159,14759641401809387549
+07a1c032-5b6f-4e3a-c12c-ac759ddf4677,1864773992,2111809636389368148
+ef8be6a9-a3c2-43ee-1fc6-3f8bb3978fc5,2397046607,10491777419370822465
+8fdb0238-d025-c2c9-0d05-01366bffd220,2047843461,1951718479681156790
+96e36ff3-9408-915e-4749-d85162f5a01d,2594030006,12243696418766497034
+72b2cadd-c6bb-f72b-6c7f-bfec8542ec3b,1697070048,9930244653453770801
+c6575781-c6cb-c405-5ee1-2c39f12e3d41,3818125610,18056559602365444157
+c8157272-eb0e-c719-b07a-6124160b5b66,2134531499,8220998420800089176
+a292cb59-ceb1-2aaa-c969-12018e0d731b,2848150627,15423807878390352418
+76657c80-afdb-f563-00b9-c258c2f6efaf,2755335885,2443494812475816755
+551a16ee-ff17-7af0-d87c-a238938e72f6,2760451115,8203929734895977258
+47cea4de-cfb0-a2a8-1bc5-b3812d7e3c1b,1642967625,10097016381982211305
+3e61d151-99b6-5b41-2785-1f1127c02237,2296590826,15071922793371366406
+505f8fa7-e3e2-9c43-cc00-f733c1eb566e,3123809554,12307865583838211095
+c5656465-05ce-3b35-090d-6f836374b60b,4275807429,9903144555303626164
+f0bff4cb-4b8d-cbb2-f947-a54bb0fb32d9,118869660,8520856659493293646
+5d0845a9-dc99-9f2c-d083-6dd2280e4140,1959955997,11782256712472817983
+54c84eb2-f328-4893-05c9-7ff31a81184a,3849159923,8446987004005450310
+b806fa50-b343-730b-79f3-e1c260d16343,824723733,17263248273513463335
+e4d2b425-d87e-2bd7-7d92-c06d80950b24,2633877731,1837650602286026887
+2980d429-2ba9-0701-1984-8fe74f7628a8,2014067849,9953042187363420353
+4c68cbd5-5628-d4e2-51b7-320207aa5cf6,2538653284,6685477748443028403
+4b818706-d497-2c40-24ed-e340f3236ee4,2788636466,1317714136179235857
+5fbcd49f-96f8-377f-9019-673369931a57,4213453227,7901288650430115097
+6d4c91a2-5040-3f5b-f2ee-93f26f69bc51,496984388,14976547283103234276
+7cc99021-cd56-d5d2-383b-c90202cbc9a3,2279341019,15183173132505926623
+5e6f4c00-fee0-3e73-8139-ab6c4479afa9,364257945,8594342764019197667
+6e9b0f7b-f428-ed4d-5dd9-d8d785665e14,505887840,14106077399063011494
+930bcbaf-e358-46a9-80dd-cc6b673f4ad0,3919090077,9952710684526583365
+a20caf70-b680-044f-6846-7adaabfb32b1,1322286455,17743805026381831594
+7e6311c5-7607-10c1-a178-b141032f685b,1326022370,8902644657371773790
+edb9f39d-70be-d5a8-217d-fe52c424cbad,511984071,12293606133493702625
+a38f5d24-3c12-2464-5d0a-5a0d54d8bbf6,1843969496,264164144427433494
+588dc6a7-81a2-22ae-0d9f-2488c409adbb,2692311981,2357819361961775506
+6f8e83ad-1495-ca60-5144-9ef5a68a7d24,1590041864,10110302413705119945
+99f37e0a-47d5-10b3-6907-255b1e45d257,3654986879,1959593529001912207
+c6873b30-1f44-c751-8544-dd49473160f4,1397107669,11958144969815313796
+5e5b87b1-abbc-652a-7f61-b8798a947d2f,2696398701,16412948550710175237
+16912c42-3fe9-cd6a-e4cd-7f97fa47b01b,366244546,13338000306297140583
+d315c7c7-6e9f-6132-641f-0a44a517efee,3820811017,2810005685096786603
+e1d6735e-121a-c93f-a6b2-050602c6ea24,3909168471,14683040750425183507
+7260b3ab-245d-553a-ac31-7d167a6848c3,1298009131,5430544964661379396
+2bc0918a-26b4-cc3d-7365-36703dd46576,2719961964,9484921181470995418
+2d47d527-85d3-8365-258a-fd15c88e9bb0,4257261955,2776628963274802036
+d1cb8287-5f2f-5ccd-78fe-d1c20e426391,2474305991,14960335955252819434
+5f69e906-1c0d-7878-3cab-d11e068ddf6b,1202000913,3355867569235147565
+995b2ff7-9ee2-e3ef-3e64-a24a4282f5fb,2501477593,5633895826366052192
+b90ff15a-5a59-5bee-0b5d-e4da7ce26f65,545467357,10645508799908553292
+f29b9bcf-f296-58ff-0288-f56628fbe036,664882698,3435545622441169408
+abb96d37-36be-a191-4a33-c1d9a9465649,2999245359,6236392357075994782
+b9ecbe12-c6e4-8fa6-4d7e-e0d99cfa655b,1339562602,4233793037489905796
+97a0b62d-4f8a-7592-722f-f2e3f9a7d621,2425668962,3610329794437459228
+94e40371-98f8-5b16-aa89-7593ed1960c5,2592865686,15709692557527456707
+8ccf3dac-f75f-c1cd-ea01-8c46268742f7,710439387,17121573368185779171
+d9d87fa0-172b-0580-dd89-c8008204003b,4200826971,6948945777445372350
+dd9fbcca-340e-3dc4-a623-2c1ccb8b0de3,2525594619,3546849863429437428
+e0a231ea-86ff-1ecf-562f-1fb20f86b0ac,2120256927,15953389074643478973
+a2f2ba1e-2e83-3867-5167-2ca4fbcaac51,283945110,13997261616685765579
+e64a66ac-a3d1-b4f8-1bac-4247efca603d,4065960200,6044370233989813843
+ccb35fd3-593b-d4d6-ae28-021a7c3c6b47,2984366646,639428630704278113
+5500187c-d6e5-ade6-38ef-fd874072d1d5,3876684720,459537853601650975
+d822a612-8420-e196-6283-4e8e2c60d025,177954327,9620390152276015736
+a8b6b210-e4aa-aa8e-764b-efd9f9fd5c71,505346682,11083064400742389002
+dadddc07-5543-a260-b3dd-da32d0ffb1bd,1796911103,5222743069420384639
+a5a853c4-393a-c42b-2443-c507cb5df45d,3814529166,15585502460226149671
+4decdc99-6546-a187-54d0-42162cf4772b,4284657326,5265866671786638690
+9884295b-c486-1acd-a076-ea0df4f31d18,1366735568,8470241170951081260
+43573e82-7708-b7e8-cfcb-855838811cbb,2769065455,11137717551455871187
+6481f50c-f988-b691-5a83-1af800633269,2786333938,12776148817274295213
+cb4abcb5-cf30-4a86-4c31-4de2443ccc76,3777975832,5066674668199343585
+65220c3c-dc10-ed87-8aca-230d3a0d8eb7,3317174525,1164482493079593079
+c4b95e7b-091c-7fc3-a661-f00669ad6f6e,732469721,17959568427466392542
+af6413a5-2906-7703-56db-8268f603d3b7,468901163,16882582156914641014
+f36d15b1-93c5-4774-1bef-0124893c1343,2671563596,14249293804930602532
+bfa3f45f-0811-8867-cca6-851ff5021421,866636866,4559459942925271689
+93a4d912-8e91-200e-3be5-937fd50932c3,3860292577,13919080809317034777
+ce5b4170-fa13-d3c8-691e-fe71b82016f2,3133910877,3922506300346950798
+331b6c5e-4468-3979-8d39-92940c0c0854,1747686303,15198846191763084750
+a1ca9d8b-4468-7a13-d951-2d906ee4e418,1970155048,7691741721378762037
+5fe1b594-54a2-ea9c-fbe5-addf04d04238,427278624,7155401285954750076
+9f0be34a-7868-a4b1-20ca-370ae7ce6183,4184188728,1070587765427435552
+15ca9b5e-aeb7-5b45-4d46-af1cbe514132,230136748,11228097050070337310
+ab4a909f-0a8e-6f8c-53f4-29e167c3fac7,1932103778,13835606004805912645
+b3d0cc4f-3acb-fabb-4c3d-78da7abad168,1379131519,9400437258417805283
+8bacff46-bbf2-e283-b006-cb24cad4d6f3,4133759854,8250730014760518495
+2ed58a80-5407-b68a-8c44-b975700a26de,3096929027,8518026011861886736
+4570c139-b52a-bd98-58dd-42fcc3d0312d,3196456202,2609003865895121753
+10ed5d75-3f73-7ca1-10a2-2ff8cdd64aa8,4137516163,17364189053002817549
+a9fa744b-5417-4dd7-3a52-b0a85817375b,3783529846,16577633322204394664
+a9f068d8-d0cf-81ce-0148-b372e157727c,2483042194,10492202068426007270
+508c805b-10d0-4454-3bf4-e96187302a76,1913278728,4384468632057838521
+5e9c3653-2f96-1d98-3e21-a056038fc178,3509704141,3030710907987490582
+a24a5547-0d77-5c31-e16b-db7d01b71795,2390690286,4556970402958934801
+bf527ca7-f5d5-66a6-a1d6-6a9db9123467,1709744398,6963174763459561487
+52fa64d7-4bb1-d51f-f575-c66ec7409eaa,3434222078,4015965534127068543
+431b346d-f386-90c7-3757-d941d4004502,2715981977,14671706468994277162
+e44680a0-eefa-c1fe-b91b-ccbb86102557,2791966275,606328973623838351
+3ae9be25-3cf0-52ef-50ae-ac8165fcb77c,3885199317,17952563940217259971
+74579919-43c9-1151-b901-6364aa206bb6,2846111493,16232847535288383925
+e22c7895-1635-72ad-a5e9-0a8958b62872,1541815355,4354396660743864999
+77ff7b19-a532-351d-f1e8-7b66696b4ad6,1769841717,9022813248381181476
+675088ff-b937-be7a-bde7-838a9f7291da,772002444,16046451189192128360
+968ac076-e2a4-f0b3-92ac-e3fae6503c1c,1788002559,12758356482640044780
+8a17e3f4-358f-f2b7-1863-104029a516e4,3447502495,6421917209898079749
+84aa3509-8778-57ce-4ad6-36519c03ca74,2241587751,10712141953432686943
+07cd4193-386a-3db9-ae1f-03723a0fafbb,4067383364,5696344520254477453
+84b7ee4b-3e46-da4c-ba68-976fb8e7e611,3717861337,14353472118938562240
+7e9eccd3-e86b-e6a5-561a-e75cf0a4bc21,3130432559,15130704092808051670
+bf03b0cb-3302-b78b-f1a8-120a26864ea5,2942788626,3171977944911065950
+52d1c158-9cd1-94db-369d-4d83a3a0392c,631329947,18425318992029870228
+14fa0a91-9661-10bf-39ab-009d6446f3a0,260967400,5730974018687153598
+f7c06062-26d3-1dc5-1184-314d01389763,2854473084,16857535036439001116
+980ba421-27b9-2c46-ec12-8b7b87378ba5,2106587463,12530031873122422138
+3dbbba1a-cb17-d8d8-f5eb-142193b35430,764127610,7742377318397926966
+c52ee80b-4530-15c6-a99b-974c591eda5a,1795313277,9189283209279098347
+451e8384-ebff-a292-cb1c-437c2132a7db,1317686702,7261569794884583312
+ba309044-087f-98cf-7fec-1dd1d99bec5c,2799166708,14307051277088574864
+1476dcf3-4e4d-aab3-2b02-39c553c46bb5,121295181,4743782127718103008
+7362124b-0bcd-d212-2302-0a6e63a711c7,3176953022,7796517844912635838
+b8080f75-3dec-bb41-f813-a10139c15de8,2658906729,11855781329372215448
+cc465973-0ff9-bdbc-ce38-f32e3883e32d,1809800954,9962813945617308816
+e7d37d42-47fd-c527-2718-abbb189cbed3,1901595187,17170664598610454611
+aab457c7-c44f-edd2-8822-dba12ad05e5e,3483759451,828903867232144061
+76f74c59-0fb8-c6cc-b8cf-34c2abe7ffe5,2022132113,1876906939313412644
+695e7fd1-1926-02a0-d0d4-8f4227c0e06d,1940732739,6570867327845178779
+ffe8b33f-c315-b4d5-7d69-fed237f9590b,1360451329,17114158977481864193
+ce121d5b-8e2c-9600-9dbc-67abe430455a,191877689,2408907049580777832
+87ee9838-843d-ccbe-cde8-7690af8efba8,3008117563,3755514431189053692
+9fbc2850-ca20-bcfd-2f23-09fb158ff91d,3644259949,15034919033698464821
+b2d51c32-cd7e-ba55-be93-d98348d2bcc4,3114250903,6920335380743425360
+392eeb69-82cb-81c7-aa3b-777781f607ed,1231468247,9083050851032595909
+b2ba0498-5a6b-c865-9678-29aa0af3ca4d,3504812099,5649159421164528965
+022a1572-d72d-f714-77f8-c0ee69647987,2321305870,14699777484927920536
+632709f9-2a2a-6ce9-0cc0-9a3171abaec2,318386451,8294659536036054017
+f2c04845-cb2c-90c7-3660-10468aa26fe7,1178809817,3946143044354379928
+279584b9-18fb-42a8-d8cb-dad804b43ef0,4171664710,5761734989265302031
+cb56a9a1-46a7-b8ec-c850-b5e137d85988,2806634895,7280157407468996923
+019db4d6-3724-44b2-e655-afbb9c5a4186,2763304846,1758893479300160685
+f4d0c09d-6817-a5d3-1675-1486ba3cae7a,3667791812,14851647460838651987
+5b744e7c-86e5-c58e-b853-ed163c151b7a,2625048798,5405363299742554448
+93f6f46f-f00d-2f0d-a177-6bdd8fbee2e6,1634642318,15038286037756337412
+322c4372-c9d8-d5e0-efae-2e09c6539a3d,4194934500,17698000464665264017
+fc5bc8b6-4b94-2134-cefd-07ed6649bd35,2161374761,551995687965896662
+6c27f576-14f2-097b-9f73-43444285c581,2387622556,5764888939567935627
+9f309455-be59-3344-0285-d6b57cd0211f,2080899665,4059207090921824640
+cface0e8-494e-08ce-4448-e21210a9a6d7,3154761543,8603639005883213509
+3758619e-0112-1d28-c472-73b6cab5f1ba,3917108375,13700384561228456032
+be80b185-ef40-ee1f-e1c8-1467ed8dad1b,3820197037,15843751026259329940
+4e56afad-ec80-6ff9-d9f1-c08d1c078030,1037760390,2916694329514384712
+1fa795c3-71f8-e88c-1e73-7625d41f63ad,3551128244,15828898501725781671
+10711b8c-7106-ca64-7c9f-7f445d440d16,755652936,10238164799203511291
+67c2f4ab-bc0a-9916-bfd0-98277d6c5aea,1959222682,15470585069631620379
+996227fa-ac37-dae3-4e1d-07ade8e18339,1826700432,4647264948416674789
+d536a2c8-0884-c6f6-fb6c-90d34803f40d,3581206720,14495401399019525095
+01c4b16d-b2b7-5f28-78a1-af3a3933ec22,1542825360,5451940409956611411
+1ac2a70b-5f45-ba4a-e07f-c2b53323a0bb,1584317365,2718763715494155635
+0d50c8e7-704e-e026-d226-b4aa58e1315e,4231646870,1531544407457576215
+7bed4763-1194-1e25-3e6f-75d53165e3de,2597483736,9044552378956508494
+3967faae-4ceb-d5f7-f1b7-62c8877e308a,1340018309,3120083782866554466
+260acc20-166f-b7f7-b7ff-72f581d68684,2172109442,7931925068589151568
+53d077dc-e211-2e34-6547-f6a6018080cf,1253185519,8299210321475035638
+42860539-fe16-8d0d-ae4e-14b2e759fb7b,2338248052,13693898232629328567
+b4dcc45c-cc48-0d41-65a9-3d37ed6a9b4e,886520243,9675734110334586042
+6f073d81-6605-64d3-4047-8ed22ebfb0c7,282577389,863954371265972098
+15701333-eeb8-4427-9a95-aa0344e41f9c,1474603651,3954650838690523006
+4a35aad2-e832-148c-dc75-e0d3732f23bb,2912988616,17997540729697978384
+a9f7c0ef-dcda-79b7-6a5c-8df255a0a42a,3553169635,18197295770415147896
+eb18dfda-d03e-b3b7-229e-60fc790c321a,2816631668,14909744758795452883
+06e40b7a-2f5e-c0ae-d36a-7800fe84f39d,3263349757,6889657286612285135
+97e35fe3-1585-80d6-eed1-1db30341125e,4275493477,4118904875176436688
+7c7ebd98-ec3d-ebf1-9190-31f48574248b,461640687,11669221008664363359
+2228b0b2-16d1-c495-d394-d4870b105496,547560232,3843309201860185509
+558a6b18-dd13-48b2-cce2-75ee9a5c38e0,2325886982,17433381534856326248
+c749aab2-dff8-0313-fd12-c8be4d9b7e88,1097121252,9801129680970547573
+a4f87f23-68c3-0f7f-29fe-66da9c41e360,804448550,677495560359465820
+0dbd156c-3c0f-9939-c36a-b85cec31bb64,2970875770,16779942267786526379
+ebd34edb-829f-2a87-44db-c84c72c133ea,1403536462,8759758310122038182
+b7df205e-9773-d7a1-3b3f-9ba01506c0de,1972028122,6405875903861636841
+b87ac4b3-1806-0910-ad3b-50cdf38027b6,1448739434,3126751223009867938
+647e727f-a3cd-58a5-476b-f4fe9c0fbc93,3789491302,5233400145468674606
+4f5c2232-4494-1b7b-0caa-5a0b028b6352,2728253420,12198170738662765269
+b8a489b0-0439-2270-1b74-9e1aa2403bf3,825864032,3885437748002429187
+aaae173f-44f8-413a-a2ad-74ccfb081e24,900955993,10717044294488193965
+6c920774-a203-b6e3-d948-0d2b3f67499c,77034958,5625033745905911443
+3638be2c-fb71-1465-f3f9-7128c51241a7,1138900684,7146549493202025918
+675ba6a1-b299-e7c7-ce41-10a26c8acad0,3117489590,3440608821314812873
+02b92df5-5ba1-bc55-38d0-0acddbd4af51,2097047113,5229679127082352327
+69b7f048-59ec-21e8-954a-1c02f0827998,4046297046,16536148641617016281
+1a813980-ea41-7f7e-e26b-35f259ac392b,536825319,965204616120479292
+50052e87-06fd-db02-3919-2321cba3c8bf,3041331722,4445252598636916803
+c588a325-9310-875d-c1d1-7c6e0c12a8a7,1993955145,10874929776177501529
+c8705b23-7458-e0a7-893c-452e71471ae4,4126255106,7883743141951169759
+39538dd7-52b8-e6b6-bcbb-083cf6a6595e,835878116,2566077764263113450
+84c7b33d-9824-97f8-213f-24786a61bc12,1226420482,18335652432109010654
+237df048-e4ef-58fc-867c-8632f8b6877b,2163381801,670738532236697964
+0ffb234f-c5c3-6c5a-3016-f54da10a67a0,2834849516,11481670782884710600
+87b3836b-bb90-25ca-ac4d-85175f086fb1,2944804851,8675475494439052632
+d4e72661-c45c-4ae9-47ba-5617fd3e375a,2761264641,6572443162589902090
+5f17a01d-2d56-cf9b-b9d9-a78c21364c7b,4034910238,646479853029375675
+2b282a39-c7e5-6b78-e808-685769d68dc4,3181032070,11148006359951464978
+968fc287-fc09-a208-8e31-fe3c5b98a38c,3843833079,11410362349387243842
+74b79f10-9d96-ba37-3833-a5d9b21c85b0,3626342320,2899819723013496705
+30c60e70-89ca-ec44-33e8-f2c035475397,2982769678,12672588181076750793
+4079c1eb-deda-1940-1eca-8964cd3c6e9c,963432368,17821686547941493229
+0fda0a3f-8947-675f-5ef2-18186bab6625,2572830994,8959563957486028917
+e6d3b78d-73a0-7301-8209-58206c1ef78f,1148702196,2433584068629264163
+db8a2312-04aa-01b7-50d4-faa3f58a223a,3117822345,6506295069617385676
+ecb14d66-50cd-ba30-a182-ad037e0e160e,2771490538,13682560490159156219
+3842041b-595c-9074-eb3a-c585943303ee,4073377367,4677150580453831583
+52666d95-aa1e-91f7-6477-dc43a4be5ddc,917200844,14534504543300153011
+754ea5c3-e964-a55f-b5d5-692a6ed26494,2516105326,6868199653628493279
+985f747c-1984-aa80-2942-f5f57214b5cb,604788570,10862925584936627210
+782303f5-252d-9f10-4be2-efae33c0d57d,380748864,3272369176562440124
+8601c1a7-dba5-6e63-8d79-ee8fa85b03ab,3118823175,15798204903219489312
+51bf3097-db13-2173-f4e8-bacecf917589,3537947488,13173149022436910338
+5d0f07a4-db02-f84e-aceb-f2ddb0fa1b2c,3349648584,11299522743263641996
+e6f14c46-41c5-b67e-d3f7-e2f96d7e425e,2422544022,1462925013586043595
+becc9e81-9e8d-340f-fa65-15e53533b8d8,3832671242,7075062556713498386
+25213210-0d99-0467-5606-41cba4e3f7c1,1528948626,17742922922562725104
+d93a84ab-3628-04c9-8edb-6e093bf08148,3747917092,20957441633219896
+ba99abd3-5fec-8808-ebb7-f9f9a027e7bb,913692048,249998853503500703
+6b7fd453-3f2d-eb64-683a-b1197ec00133,3276500694,2223069602846767724
+e7f3a292-bd36-7677-f406-e95c6c93a3b3,2271627145,5636390591591816762
+07b827a6-17a7-a22d-0f84-21195a70b7b6,1739423193,9765987286423014869
+a0205cf0-266f-b5be-058e-be16bdfb63b1,3610284637,975361947509381659
+32480777-a901-5eec-7937-9ff74067558d,3958498223,15411814382313418055
+add6c12e-1c34-f392-078f-378dfc095aa9,3562941256,3141037399064855736
+9fa82b09-d3cc-0f51-5949-7b5757273c8f,2222501915,8902549016026503370
+a7e28f98-5a8f-87a8-10d1-395c0a9663bf,2074917281,12142016496876784385
+62e1a1ac-113f-dc7a-6aa2-891644d954a1,2219259159,15641493384236873644
+489cb8bc-2bb3-f317-2ed5-4479a4c37198,1036214101,17505127681255198956
+c5548c05-65ce-0d55-4b44-361e4ea83980,4155406002,14359306976872742338
+cc1fd4b4-3d6e-69dc-c482-9e5ca84d9bc6,3357231245,13848622686486898106
+3661687e-2de0-0a9e-f45d-6cbc44045952,1024775128,5030983487769395539
+70bb22f3-1a1f-3de4-8a78-784ef372ffeb,1926881820,2579112283694106821
+5489657f-0b31-bd8f-ba29-3f84b28bc0b0,1211842187,17129739431856989587
+c7a1900c-00e9-8dc8-4463-7ba15df9141c,142842911,5060734205707172164
+486e39f5-0d3e-578a-d552-49ba4cc63312,2212476782,15905880916263845914
+c433abc0-7604-24c7-34da-5407c1c51ed6,3082950422,11385241525354898384
+2b1e1a21-fbcf-2831-01ac-a51046dd1561,1116448025,1649185023978730903
+8a58cdf4-4976-bbe8-48d0-cefbf5ce5c71,145361035,3632275718826845313
+54b4b0f7-97d6-ce7a-7c4e-e8f255b13257,3409011136,7532435327085471107
+f4d4c5c3-d06d-de0e-6aa1-c6f5317a05d1,2728588763,2203650299659174099
+8df25cf5-b3da-e49d-fc1e-4a194ba02e7a,570913885,6117685807585865981
+c96be2d8-be16-326f-9d1b-7889b5a3e8cc,2436231526,2823239289517942457
+be11b1c3-efb7-7403-90c2-b0fbf5b392cd,3389996856,5368123919514880750
+47bba249-ee64-be51-e6b5-ee903c67804a,1163932241,203761015257939467
+7454f2fc-e926-d082-0699-dc6937c51c1a,2693968189,2558297577051340789
+77e54a2c-87ef-ea30-bb4e-c9492bba544b,4271814560,13492848609868358905
+d313b4f6-8e32-7bbe-4b7b-e9cb21b53f1b,265885020,9415006446610426369
+050adc7e-0c84-c9b0-0501-022c750c5150,905783691,16892255456890448296
+5c81e420-9783-ab8f-acfc-f93e099222fc,2638362906,11954331023219578436
+2ee6d341-8032-3a12-71e7-f141e95ad2e5,2302432279,10950038730997277604
+c597f761-b25b-138f-94d0-6ed56c991ab0,95265396,9534117837395503446
+7366ffa6-d163-0143-e0c3-23f231a5ce38,946186465,9213090704322351304
+8b0dbd58-cf16-335c-0c23-d8b9f0ac03da,1238624961,17757712969699523720
+4a0c995d-c4f1-d570-d16f-c58d0bef41f6,546896914,7262652004841579387
+a400ae8b-57d1-728b-1d4c-832f176126a0,708011283,15152581966394066361
+ffebc147-0d77-e7b3-88d4-f80d489953b0,718568407,4198319391195483920
+cf44aecd-14dd-7851-6b30-fa768b5a43e4,934510129,11690339374764949371
+3627c3a4-b856-bfd8-4c85-d32d0ca22695,855930158,10181210469380183261
+c4f88dbd-03e6-7b9e-8a50-7815dd5f516f,463467,10225933152267683547
+db56e9b0-fb39-21ae-078b-afe8494d693d,3545167292,7303333873572197198
+3dbaf5a4-8b15-1cb1-e863-ed7865d75607,2186606502,13178519970975920371
+8f456862-8763-d83b-19ff-5678a1b8a5e9,1008941657,16275051434965194604
+f80a4301-3a98-dff3-157d-a7c245fe99e5,718871286,9403363777571484221
+2cfebb62-98e7-3d8a-1025-f267a49e20b0,921525938,13840245848850019848
+44f80b15-6919-fefb-a748-5ac4a14e0919,3302299195,924511138591532758
+0c2fc6fd-ee28-3218-2125-14dc2f839e1d,2959159619,18025438053259791130
+bca16226-6a91-9f8e-5c4f-fc765a0845cd,3776569836,15509421206579848123
+f9d38626-d842-f95e-fedc-4be5cc75b800,64326551,16169371658024246312
+128f3822-33d4-690f-1b25-6b50f8c85ed6,829496095,12022489061657651993
+aac0b04f-acb3-3571-5ef6-e0b5ef44fb38,966260855,5137079491207029191
+3e04ca22-5d38-51da-0c6f-7d64f7897f23,2758007000,9369520543545893403
+a38d92a1-40c2-0174-0947-d8ca3ca0e0dd,1304611491,11469737461659781677
+8263fc8c-a07d-f6ac-261a-2292bd2a789e,3426576255,14891311686645341977
+3f9a11fa-a721-1596-fa6b-f3a2dcdd609e,672706831,15729103875041446887
+3682c520-936d-a9fe-3913-c5cb8a0942a8,3963483877,15421028886068525766
+5122efce-8a26-9709-a748-ae07f158a2d5,3231663596,215269424618370282
+76b52268-8874-7a4e-e1ae-f951507e0d59,682243759,12512047757558479369
+8ca414f6-5b24-085f-6be3-45a713c1d26a,4240908292,9475500039670909036
+1bb302c6-3b3e-ae0d-a6bd-7931c79f762d,2895324072,7798082768772827276
+2559a1c3-b602-5544-253f-30ae975679ee,3774217226,2477700875071727556
+6909acc6-b156-d36e-c501-2524b51ca047,759105565,5227163032153277097
+61d9b104-1b09-948d-cdb8-0c1440550abd,1537583889,15262437690866656450
+0e00b02f-d15c-d31f-8a8f-488c46245fd1,3837800243,15569518566537137978
+fc68d519-2f4a-c1f9-97de-509acc25eb41,1180273631,1910091867795022119
+af9800d7-aeb0-75d7-c42a-d28b2691e028,3738270602,11799593049588698058
+4e18c8f6-d413-074b-3239-cdd1c922c8bf,1314877242,634876433405328173
+3f3f4d34-e2b9-ea7a-24fb-e9fe966390d5,1443892281,4209182307947055914
+49d7c354-caf9-2090-e393-172270116834,359325650,8209424056375224910
+6f44359a-88f5-686a-e829-961d5f8f715e,2377218412,6654350759351062978
+5bb0091d-2a9c-bda2-5ee4-4b5070e3fe75,159900258,3659644018290054653
+7dfd81dd-c0e5-70a8-db4e-1dbee1be9bd2,2097678892,11507012061034450640
+c9367ce0-3ddd-7163-8f46-fb79fa512f27,3520990546,3570837798066708213
+3279bef3-3e18-b6d1-92e8-58a8b73916ff,1257358667,4796359709817425535
+41d6ca80-9b5a-069a-ac96-6e9daf0b9942,2394968411,15622889547196519907
+0800c91b-2fe0-77af-c431-da00be7eaa75,3803137087,16612380046238561605
+1ff03260-df21-1be8-3fc4-554e5dadd8e5,1414083914,6171222675207923788
+eeee6e6b-074e-f74e-bf71-e49dc9289199,1587719364,9983306895145239080
+c63b6e0e-43a0-9f8a-2775-52694b93445b,3368001844,10249088343008456309
+863a2f1c-07a7-bcee-d0c3-63adb751cce0,1041766163,2862221643188210969
+2838381e-33f7-f62c-645c-4be6ea4243b5,3388664955,3657605469650356231
+5a7c2d1e-a576-e819-e31f-2e48f6ec4529,182138035,1263938178239197987
+e8cdbc24-d5e6-bc85-0882-d7b403592b3a,2368175445,5512444473475477725
+e70fe2cf-4a2d-b7bb-8360-a162ebcf5aac,86919885,10131682833102288501
+f915279d-f84c-7d57-59f3-156cf3224b8d,4137909023,17372292817293214652
+1e8c2bf9-34ce-b28c-45a0-0e523e3a5029,1833968832,11707960622653541587
+85a4bbe3-c27c-e0f3-6f97-59a562e4a4a1,4137969277,18359962130901096696
+87998ac9-75c2-77c0-32f3-2d902a20c602,2568166432,1052483438470958622
+fcaeea6d-2f98-8cd7-b6f9-5980040bfe21,1059416450,17041096656957935612
+2b827fe7-e1ee-b580-2ea0-cbd5d7f80540,2513899864,3193985320741258822
+c5c0b9ab-27e0-86b0-bd13-9932f05a99ca,1684224827,6473350019398315817
+4ebe1043-866d-f340-c679-9fc811fec948,608653167,12098312819103303012
+61c67da5-fd91-02e6-383f-e7dbd42fc12c,87425430,14031045225766752784
+3f4353fc-e64a-f7b3-fbb8-d1012e420bbc,821300951,15526613530469720010
+2e3f6de7-d31e-4ac7-285d-5c0b7da340ff,2626102621,453131262768699823
+b466f4da-0870-2652-194e-a52ffbde8345,208821753,3994557952319949946
+619582f7-d771-2f60-5bc0-618579e6cf98,2158261886,10081170947312159201
+4f969518-d8df-7fd1-0b3e-246d5b270aea,3848147186,7462234153276304571
+a929fc41-cefa-5cbf-5ee7-743a94d31da9,2616476423,11185907273949892212
+6863cd50-1a92-b128-ae06-779458bcf2b3,4228866333,14030162656239547909
+addba384-6045-278d-6ba6-3003dc38a5ad,3407842073,12665660407429435203
+c0bc6e5d-c796-6e50-2e33-5fff2d96e8b7,3068323568,1817862958187844266
+41fa2a55-b297-9215-ad8d-c76f37e35ccb,4029517144,11184945891555506052
+be6d1721-0812-cd93-eeb5-bf03d46fc0c7,489940535,8216615268822714370
+7228ca78-bc83-fe5a-4fab-6653a0d335fa,4016340482,6776366501354150738
+b7212ede-83d5-d514-faf7-70fc0d9a09f7,1149546949,6732501777228692270
+3e641ab8-3e13-ec46-3452-40b194013976,2263461828,16632937404641954897
+c7835e88-ad56-8b23-89aa-71ca70f84e86,1605374827,15558290988257025097
+1375a3de-300c-0271-2b2f-a753dd8a82d9,3117296071,15622738855847864036
+a5638483-a53f-24b4-4166-8718ac6418fe,3747616258,3551563264432089714
+3841aaf9-cdbd-e9c4-f086-441923a99807,1460670963,14602879125069755913
+ffeebecf-c8bd-bd5c-a1e8-def4b85f0818,298014653,7686618814832207104
+22b189c4-c274-be6d-ea9b-5e4261f02f64,482139611,8760998436688523333
+f29f27a2-770e-4672-c1cd-9f72faf3ba5a,307954447,8775651478785742825
+5deb17dc-6613-2c23-6eba-ae400c6d953e,976812824,12659769346060138241
+5b2dba99-aeba-80dc-ddba-5947bc6f54a2,4147591574,9949082506149729757
+8be15532-4b42-9fc1-648a-eaae76911ae5,750527399,1435678043452363178
+28b849b4-9563-8608-e252-3700a483b8c1,2168053483,16461020718040984763
+7f21e170-a633-bfc0-8264-9bc5c453a9ca,3691382538,2742572497401726031
+6158b312-dc42-3539-ce07-669d30572c98,367918484,17505863805299526427
+ffb98f4f-1dec-0645-7b31-28be75c4b58b,4132243392,15814411837842938087
+f3ae1dac-97bb-f1bb-b301-47d67a735e87,2985030847,741685587830724147
+4996e0e2-9aa6-5907-1959-154337eb8b81,1489164794,7602559111212064345
+69f479a9-1661-5082-9973-a60ae2fa7453,1657580031,9889125971681596673
+f0cb1d8d-cea1-76cb-ed91-3239c4a31a0d,3061509962,10906384709249514350
+d30c8469-89eb-f967-3687-7f16fa7539fb,3370767267,2865509691028931306
+26e86c20-1b69-36fe-41e6-43afd93b9fa3,2539269566,12430465514919496253
+bb6d6d30-48ae-1cc2-4340-ea09ee67ea66,418805525,15386747348652962588
+eb831a57-d088-66c9-92cf-9295f8661b1f,3875103844,8405048924762577731
+b94b7da1-7b43-c394-67a9-511d4b0c82df,4150736883,17703626047099563682
+502f36fb-18dd-1dfc-540b-251d8ec83e65,3034688613,904062126004706647
+8d77a5d4-bda0-6564-d727-31b27fcf4031,2108704807,6518797844615987936
+85f4524a-9ea0-8e56-6073-f793403c13d4,439874444,3080355040034132467
+a09a288c-c732-bc67-a64d-7df7c256d984,382902726,10560307453500621764
+fd389da8-1d49-907a-3d2a-414a1074731e,3710073196,11428964264722956910
+7b0a2433-4a96-2116-69b2-da7efa33bb0b,2799623051,14427404807909694146
+c12719a4-3f03-4f79-1d37-ca305bbac98a,3430120610,2031253929508297357
+edd8e040-75db-2d12-9db0-76fe031c82fe,1230368004,14457531985967044841
+9fb57b05-9aff-4927-1bbe-cf3066e6b8fe,2584784145,4713224141794273960
+644c8abe-722c-e1db-f3c4-6b4053f55737,3003546558,8640572461458372813
+764ad6f4-b08e-5403-33e3-b1946ab9dfa0,2285341470,17432407068386232863
+eac0fda5-3877-0eac-cdf8-5b285c46f571,4103439694,10797718517977828560
+afd8c849-9613-ba56-2c0b-dd9186c40d11,706340370,3837244565990543282
+d016daa7-1c8b-8634-c938-b7605bf447d3,3611669801,10198849791472584248
+7d2d4b16-86cf-c52c-1383-417b2f56cf79,3371540063,7179580580723988966
+84b1abff-5bde-1795-eedc-82f39974e591,2591867821,7327764056022411062
+1963ab78-c0fe-30be-95a4-31edeca0eadb,863948927,17895820155981282682
+dedd104b-2f02-df31-27dc-6983bfe09448,3038764600,1346143475159348194
+c9f17be7-39c3-b4f7-00db-7512233f7e63,3724132958,16366216776749650718
+26f4fd2f-3d3f-8308-34ee-51edd709f145,3747648124,2727628964614796210
+7e310f25-5acf-759d-4a3f-7b6fc9ca44ad,1946272885,7114963518970159359
+16998023-abcd-c8b8-7bcf-f5bef21fdb94,3099003971,7744250942198332943
+5c814aa7-f891-76bd-82d3-0c554cdebbcf,562837925,588797633620575408
+5dae4123-757f-4f40-beb1-ab45de3070f8,3690951110,13268216172066815744
+7c719f63-fec9-e370-5d75-4d67df87eb9b,1866846650,265183002985251324
+172e4b32-e91a-2685-bcc8-551b8411a488,1181669483,12184861016418214479
+58ce2aac-a351-7651-1736-b3572abeb38a,1941836981,1814000184228245869
+45fd6758-d7c0-e191-0e16-170b2c422bb0,2878325554,15015614845968335496
+0e2b570f-db66-59be-fec7-78aa75293501,106460382,11282353108688154297
+5962f48f-60d1-d9f6-fd8d-e06ee1d57c7c,2945672443,7515451160855012358
+cf892c82-977c-b92f-1efe-6ac006d2d188,713936096,13827002139323444864
+ee6dffd0-809b-937f-8d81-527231b520e3,2228653478,3377557861097579170
+897c187d-7dc9-829d-19d2-30099884886f,759377520,17679002927904839035
+5417b966-f2d0-2934-4ead-1ed30d580269,2853228625,72340526835508221
+1398e353-c447-1f80-669a-ea375abb71de,2187348858,17541365309016839043
+5e276bd1-d316-d1a1-bed8-e969e577dc30,524526133,5603810803879772046
+8651ac06-9bb3-1c51-5f35-d53ead0c2b4e,488474579,17556303270482037932
+5dfe12bf-a429-b4fc-be14-fd4e1fd4dc1c,4005807853,3642877170929925475
+08551ab7-3b6c-fa43-1e11-5fb62bf1e4ab,1783987324,357012568805484318
+b9d6034f-fc57-1caa-3da1-1e8cbcbc396c,3219053016,15953498368919546363
+717b6454-baab-3f5a-c843-e47f6036261f,984226350,7048929740569863941
+8aee3447-208f-1b1e-bd4d-e9ace93880fe,1650835876,14446688333139343893
+44942cdf-22df-60df-9eeb-821732fc5e65,2324485587,18183404038905044486
+4b4a2c06-faec-6ffb-980a-3b4251dd82aa,2404511341,10132670987482065179
+a15a09f1-ecd9-34e8-aa1c-5cdb1bc75460,942828486,18229102448929365026
+a0a7bfab-cd8c-87e7-3ba9-ce475c71b641,3247087601,9881339874849360096
+5fad9363-d391-96b2-c480-815f5afeaee6,1193012123,2582278900686116743
+79e0a929-f189-19ed-e262-6b5c43afbfe2,3085075085,2852840992552274860
+efb6b944-fb8c-19af-9109-d9ddd245a5b1,481892720,3529513417665288736
+e5893243-63bb-cc14-e926-42a0d7a85296,1358659968,5277104266030307010
+81aa9cf5-a465-17fa-50ff-eb5f9f5dd77a,2169216479,13648127797559793
+8005180c-dd88-c5ea-979a-ce0359682db6,1446530576,1095148835704555466
+6492a597-c3ed-01be-7191-5749d84924dd,1023081381,17705521045309500447
+d23c5e8c-bdc9-d9ef-bf35-11e251b20181,1227909827,5732714937616455233
+a26f94ac-2147-b7c0-bd48-708c400cbf73,3178339431,14892366742091669074
+02c4853e-b189-4b9c-7cd3-365391e1075a,4228608731,14337580797619194671
+881a5f12-2bd8-c7e6-b702-48724e463553,3997898946,13715883782849583279
+b74a2c10-96c0-f3da-2ad4-9605eed4353e,2860448452,1360277844511465004
+833f6a38-5221-d936-bf94-069743d34d22,2063280706,425156355179757145
+0de6c0c9-da49-a20b-5ddf-9ee9784c25cf,2294300918,16130838478685872559
+8334a87d-edde-d76b-a651-8f49c8e16d49,1938261108,5913578602796889200
+4dc082ef-5c03-a443-8cf3-d09703d839c1,3168437665,4460769504171234706
+97bc4b19-a619-f6da-ec89-484e482f88d0,3463637344,17042302548589398050
+7534c669-4c9e-598e-39e6-c9d17e6d5fec,3646244736,4881190911126407940
+9d300131-89bd-079a-e49a-a4d306ff3a6c,1385892855,14874274768917324498
+ed30b60b-2e04-d108-32dc-6a24914a4799,496445362,11547385577575596732
+cbc9f230-e9af-f9bb-cd8f-539fbea81290,3826944785,4660810123366153388
+471db9e4-311c-1c43-fe0d-284225821610,1381168134,1903012236571290880
+ea4dc5de-d85c-b0bd-cdf9-368140654c9d,2121975345,6682079657878471760
+796f8b03-3cba-9a57-ab51-995e7e3dd687,2820512778,10810873749932114239
+b942897a-6c4f-6bbd-e3b9-d6d4fc4139fc,373814544,2376092210712127970
+51111f65-a114-208b-4e0a-94c79a9bc006,3021289706,11901191220408783835
+932f0cbe-e9aa-b9b4-d65b-5ec2cae93437,3264858197,17618397155252016613
+bed1d011-d034-a094-4de8-5ef3cd55de4f,3889476236,7062874468131552191
+b8766bcc-a816-ef77-9c71-a173ee968bf6,2048119822,2244099682224603278
+ec1c0b53-64fb-fe1e-bb84-9a56625fda09,2306774607,9517601091433720384
+b19f18c6-71f3-6a5a-2c75-f975de7130f5,2046361771,5569572373127233732
+a476b7ec-6404-62f9-c269-2d245024c814,945374708,9135865762474056077
+281bddc0-6e55-d38f-ada5-06fea6e0bb04,2321038678,11338839552513682162
+03a414b8-1498-2d90-4f14-ce827e1405c4,3399951320,11719888830620288420
+8081a481-605b-814d-e46c-3dd4c0c3d2c4,2874446052,8769882080708294952
+5829f192-ebd7-ff60-752c-03b88497121e,2026575347,1057576339975403502
+fff9214e-6648-88a6-46bc-1dadcef5c87e,3860740737,4400672271047643401
+5de0a924-0a5f-e14e-3a63-23b55dbd518c,3614583529,18380080141369329782
+93e00492-c959-ea53-89a5-d54818f76d7b,3149695841,12342110407324266749
+49ed34eb-d698-a615-6654-73a7cc3ed4d3,2608342599,9313255770630092338
+504663ae-08e2-bff4-183a-8441d76e854c,761436082,4821617828991737362
+cedcfc45-f5d3-8a06-38a8-c1da792ba867,1787785516,12299737475690409682
+1cf38ebc-7e50-73a4-18a5-0aa3e1e6482a,1799966598,1985083927336201359
+ef3c85a1-272a-a87c-ab95-2df4af50120e,2254996157,18433532139617260817
+f04ab58d-a504-1d3c-460a-9b09aa366ae3,1478904006,1117226730024488965
+19d381f7-dd83-b183-1d97-b0d9262e0dab,1693506479,17970023771914450342
+eaf3e349-a3d1-89d4-dd2d-554cf5572bda,3170042506,6312754858722346326
+ad520890-edc4-7872-010e-959655017620,1870454540,10253106259034781457
+5da5128d-bfe4-97db-ca10-86c0a001e766,3829225040,8406821213379559323
+b8c11b3d-88f6-c07e-0fd0-0323399080bf,626148261,7883521772814429107
+e532f85f-b540-cd06-56dc-92bf042a3aa4,3943238058,15468415156070108855
+25078d93-ebec-68d5-148e-ac4213a7f73d,165810092,18079283426189956854
+0d0ae84d-8fb3-b599-b373-4dca339aa8b7,2726485805,16532842186324041939
+d8dfda22-2664-8617-f26e-128a96989ff5,1155853786,13641239259102533047
+014497b7-ab8c-8e5b-a699-0040ea15d56a,3306800452,5483404846226353036
+19abbade-cf60-9d0b-1c41-f78c90e80c66,3660408049,10495452572280535444
+b42acfdf-d608-b62f-a56f-363878b5aa40,3000236296,17825907659103714543
+e45f442f-64ed-481e-35d8-990ee81c047d,2981995596,16602371372020804134
+bec32f86-edeb-ec4c-5c3b-62181ea4a386,39691720,6218261508178513606
+3a7acb3a-6826-f46d-482f-f24651e6c57d,3102900174,484799642628790196
+b638988d-b9b4-2e11-4a4e-5653823cc178,3218332081,2723449910541880580
+bc30734d-935d-5d9e-bc05-94cf9910e44b,1353929564,7319664801883365006
+5847e29d-209f-c01d-0ada-945c457d3184,970370389,15968825338280240243
+12282da6-17ec-2bfe-009d-b84a98dc9729,3594738785,17154724984556997221
+48bfe445-ac6d-efa7-2ddb-d0911b150410,4230855853,9137492931007564245
+e7168457-41ae-806a-ae0d-62ceb85ae3db,1873838557,3038293964576287656
+e196005d-0416-2502-fd8f-726ed2a81b10,3149738631,16797186876530043938
+cd52ee46-7ca8-4e6e-21b1-5da87c4384c4,4142701119,5591016704071311487
+1abfad47-d8d4-32f2-5cd6-de183f203561,2831604640,14473076059002686571
+7946f717-e45e-0774-bea8-de885ce022f4,3461006474,8381316929647101229
+ae87e1b3-ffa1-f9e8-1bdb-3889256b6faa,1109302980,16663708086375192769
+4d70744c-2b53-e995-5d86-20f1b7b2f306,2761858848,13929350682765023717
+4e54f3f6-4e9d-322b-049b-c5bd0d026755,3190600269,7534802827452173179
+3cc69569-d587-fe90-93f9-df9c60169d3e,1610465861,14747381243528622820
+0e224862-93a1-a9e4-38da-2b03b3f40ee1,1006618769,16208776157451775025
+ecc70ad9-8fdb-25bc-0b3d-ab7e041c574b,2523151024,1531755076562679332
+a85b99ee-5730-a3fd-3a40-f1a9efba0b25,2268050106,11563855857763960759
+6f3501cd-e1c7-71f9-91dc-2f1762cdf360,3972806244,14046945001047116521
+c1a65996-9bfe-d527-3579-496a8f69c4d7,924222779,4862982258720826536
+c4e79d66-3683-8e35-f5b3-968ae5c2dcb1,52871842,11661093293585470882
+c1c9b9c3-ac33-bc19-0d0b-505e6c68cc00,743418130,18405066337637328385
+32b7c344-156f-360d-e8e8-49875365ffa8,2899560676,4569209103109713000
+96c6ae58-5ffd-d548-ae4f-4cce6559f8b5,2119747840,2307916188228323695
+7fc02e3d-4d86-268d-275b-b1074be94f87,905450935,5096988644481752158
+568576e1-9a1f-c02d-a170-9b910d1c7825,49233743,3565081237572324154
+09e77d8a-8f83-0995-e4fc-0b5abf2560ff,2134235385,17022762583152637537
+b101436b-076f-bcfa-c6f6-5ced9062b647,912688786,5532771649598575400
+6a32b9d0-0c9f-fb93-f559-4e127e3ebada,1068400493,432251615965981320
+f81f306a-b149-90f6-09e6-345c7aa82dbc,926516477,2930551528735850515
+8bade4fe-cc27-1cfd-1fce-dfee5887c2f2,2231655557,13693898172873616797
+4734793a-e254-ccc4-61e6-85d2112155be,2473192561,4771997372037244034
+e29ce2c2-e5a1-dead-da17-7d666dd9feb3,349165381,7722507958374894104
+92cb3549-5f73-0f1d-f263-62472169a817,462306066,15168630498773065761
+64061173-be65-1d94-df3c-6fc6ab658c22,640098465,13342885841034506247
+6564d8bb-1a21-4574-b208-43815144db47,916520782,14023513755849931788
+8d420a6f-3319-955b-5ab4-6bf92ed8348d,3444373487,7817528708375007973
+d4b93b44-8274-e18d-2328-b57b1679e298,1693726134,11027673429247481823
+ebb8c11f-8bc6-ee2d-43ff-ca7f6f6d90b8,780435233,1286021722537394774
+f685f879-2916-9a49-1185-68eabaae2f8c,1358758627,1914578968657155913
+7f15705c-0ed7-c404-add7-2b462ee77ebf,2766224545,8485696500993468621
+e6096022-64f0-49ed-f769-889721c72532,25518269,12943412244253566885
+b8045f6e-58c4-7e80-cd45-a4fd36c0fb39,4073580117,14411635173141469640
+c177b03d-1810-3e29-52a2-3e73dc0ecbd2,27774686,711516294553531821
+c7bee43d-2c3c-beff-6b25-dc26d3b20882,1054545346,3405897742072028211
+b1c92b97-be79-5377-e21c-eb5a67140b85,2831102340,16278819559303527812
+eac8f0fb-e949-4c52-dbd5-e7177dc3a42d,2347564641,16347116520624218909
+3f45822e-0017-23d1-7b63-328088f73e14,1687382015,10157251041005224637
+f49077ba-22bb-af2b-659b-c434a73fe8f9,2359263234,8596097032811797041
+a057ecb7-81d2-3515-f7c9-6ea50db9ded9,861361270,9305133326789540928
+1f25cb56-4773-6fe3-f883-60c18ec809bd,649887648,10446694821691279612
+c98fcae5-ec99-39e5-2b79-22a4426c346e,3699288248,14467530039544020083
+1309917f-0eec-1654-b380-6066930a8d01,2790492683,18282780956861374044
+d1e9b8f7-c0d2-5c79-4299-9e95333bf39f,866774628,10641097122859100111
+15e95e98-4b5e-e4f2-2ef1-48ee8af46d44,1305836722,15609856560332566553
+f271639e-d865-057c-fee7-c3a5dd7d6599,782217364,9275145425260638066
+68a29cad-0816-3297-84b0-0756ac86734d,906807742,8617409496831297836
+0768951b-f523-9e29-07d0-a7277f1a4f53,1537010162,9216889471219897399
+27520c82-65f6-507e-968a-dbee833145c5,109007620,16835030269763730843
+204351fb-5018-5dcf-a10f-c212a6d6cd4e,3782350168,18090754465195640306
+2ed7361e-9f06-4cbc-1e74-8d52c592f8b5,1372079213,13169996051996595083
+5f24f4c9-5900-87ce-e655-02e29e514799,2468387950,3038710182125336654
+ed60a186-f4c2-f826-942d-e8f89b2f053d,3244215704,13282586094648583627
+cb65c5ed-c948-f294-4f43-0d6126a8ec1e,3200490811,11557340965174217962
+7e26ecfa-3665-558c-f663-318cfefe46f1,2997051171,1892211130963748862
+cf814672-4b07-152e-b75f-0b0b4eb3bec8,474113198,9697618541704203151
+5255be93-fa30-e973-0d09-333689f340bf,2917402391,8181433285755515591
+3d12f195-9828-a1fb-3767-76d14294cdac,3548940805,2850259201831665321
+2d45587a-c9df-6d8b-939b-2305e360b3b2,1722526073,8689448344075543588
+60b07959-cf74-aaa8-7607-a11d65c94f9d,4056899140,12266685041913671872
+c7a3dd25-094e-63ed-9f66-fc7f740c7eaf,2426576371,17540940859263193742
+e4ecbb16-45e8-ffe4-22ca-9e42bc8392af,3579421011,11651153402622630407
+1dd0c9c7-3632-9b16-0e29-9cecc0640fb5,179732662,17601579845695478356
+cdaf85bb-4cdc-414a-bc8f-f165f3f30cd6,3298415499,14167091012571381507
+bc04e6c1-8dc2-6875-4367-e83eeb8d079f,2802020412,4601807785441194870
+67238023-1cb3-9e3d-4c4d-4367641831f2,1828896659,11492667206576950127
+ad06bbc9-a8f9-b742-fdf2-50906098675c,304669748,14704228590632691355
+62843746-d059-1c07-ab21-13fff75705dc,3076909919,10467084772635369692
+6d77cd43-032e-cf43-8fd8-ab460831db25,2247794216,2383414956229713768
+5e6d93ba-7c4f-3a2a-2352-c43a14a81ce0,2802360538,2673840242133339014
+0e72b7f5-31ad-b208-aad4-6de1f738a022,3544964580,13847039022311801867
+b7950fae-504b-a66c-e100-5eed229c6df4,1849121779,11013953259613077576
+e2cc9054-a265-75f0-ed7d-eb18edde0f69,2770439706,14726104389462999599
+e4f4104c-55c0-6389-6991-9208c4a6b2a0,2354901932,14632266857903609893
+599bb4d4-844e-0df4-15ed-9402040634f4,2189022903,13302244358391487248
+a3fc25fe-1b03-9f9a-7b37-f68df9aa31eb,3436587179,5278123842703494653
+66afe085-4a98-aeba-d068-910bb86f6158,3391724906,8197717424499808860
+b7695a8b-1415-c4b7-ed3d-d5c26a90b42b,681010463,15369635238262407404
+a7f7bd35-0be9-a210-65de-6ab78eb823d9,1843026053,17268270604009478353
+e3939950-98fa-4247-df97-33880a09e7e8,1214595119,17399412920120702237
+5b9e19a8-2dfc-c99c-e7ca-341e13bdbaaa,3814496087,8881302792133339376
+1979fdd3-0a37-184c-8a30-54ee8dcff230,3517595961,10565581717046513616
+62c1d6b5-4044-b959-1079-50a7db4cab74,1687683648,17326177293826460622
+1489bd83-1a7e-99cf-2c78-fca61009f317,2077066079,4017222532434516878
+8c7d2937-914c-63a1-35f3-dc5565d751e0,729757757,14844325223620263161
+d41a2788-9d8c-3cb1-33da-d6e0ae332e94,1261046400,18241130641041188704
+db66d8fa-dfc1-8c42-8b2e-af4f5ccd06fc,3911015567,12312954661614071427
+a31dce2c-c42f-c943-a8bb-93c2d112af19,15730691,7364809714574313047
+92d8a607-f807-d15e-d502-61540bbb360f,2418757323,11496231560862412929
+b336a745-c666-498d-ae3d-d3e28dc8f92b,1544103546,14692810064233701793
+8dd96eaa-57c8-deb6-ba7c-4444d822155c,2790039245,14900316018472939073
+10d6b1b2-5d20-5749-f474-b27e0c609e41,4080013110,6261033397377469403
+7a40e038-6b3f-a51a-f68c-171680fbf9fa,535851030,18429721651452791295
+709d7a8c-e616-8fcc-695a-66294cbfcbd5,1390994947,3446397202117862474
+7edf4a06-a15b-c42e-0398-7f90d40e70bd,3574219004,11655400921977875973
+f6febbc4-4c2a-7d53-5fa7-c4b4c98782e8,1015772784,14362107330452600192
+fb916bc6-1f76-6cfe-3f1d-7d80fd6fc9ca,2964823,15156028143697995961
+7488dfe0-1258-017e-8f8b-2ca5afa3c2c1,2078078591,1131596594209988586
+1fd56b29-022c-f6f6-228a-3ddef566ad10,365982616,10139904348432411539
+3bd9cd91-d4d9-4884-6251-9ca5318b7fb4,3490122304,6611207414665480
+c9eeabf3-f6f5-fb3a-cbd8-664f139f25e4,1629489207,13130960255802751270
+ad0f39df-1229-6700-6dd9-56e5c395074d,132023907,4150546551221792668
+63535e57-2423-f371-3d65-5e8ee7ca7979,891849822,17341262136889320059
+6f83d5b1-c9da-2990-8f9a-184e5ba1500e,732649193,12803048952034230332
+32175f74-bca8-b5dc-baa8-aeeb56d61560,2298218402,12065974491320652032
+f271b91e-8406-b0f7-6405-6b941f3ab3d2,1539639546,4181132644380799941
+b23c4877-56bc-0a49-3186-cc2d63808c59,2949361288,17608816866289762491
+4e4ebb0d-e5f0-4b77-8623-316921952e0d,28874997,9920091735465941115
+3ffdd739-47f7-52c7-e7fb-7279a850d757,493665967,14479220390256406135
+d451c668-d26e-d239-4261-527a6112f45c,2686976704,3456777401751855405
+c330039f-fcdf-4e68-b965-42cd146f1e02,509144055,6569926870655092868
+9685d66f-e385-e844-d8ba-0185fea418c4,3367558466,12010924889918660613
+29d2b64d-3ce3-b270-0a15-865ecdc3257b,2954134688,11531499430785015093
+89f59a41-f14e-79f6-5b2b-743e633538dd,345198393,10594476557862468311
+9a8f53ad-5aef-a5c1-174a-209e95d7498f,2436455686,15467557916791368084
+a4e2c7b3-d340-51b7-cef8-898b77019376,283497190,8723455731901505385
+969418c3-5df3-7cb6-ae5b-33ba3ebb3cd8,2111447914,11671882112420455711
+ecd03982-a013-fd33-85b0-fa0f64c838b2,199689172,4430320953532712923
+366e1641-19ac-a41d-bf7a-46bb6df74716,3906970596,5132841312688426344
+d9660605-7295-4b50-8b60-617fec742899,1429714126,15503888178849762612
+fa5a313f-6d84-3d52-a945-7030de25d533,994222284,4716124877276172870
+fd155222-e4bb-1d48-72cb-f43f76012e06,2834028124,11411392428160177541
+e63e08fa-4a29-bab8-8227-7eb63e0a2c49,2156206471,5669210781229642346
+ad261ab9-94a8-1d58-a23d-cb681080e081,1550893383,164816741857240001
+ab10853a-363e-6cb2-2e57-f25180333ae6,229760110,1892296968047618577
+f5b1eeed-5f8f-399a-3539-cd1efa4874e4,3723465295,2312329866846767633
+a0c054a4-429a-cc26-1ad9-2278c185b809,3974969607,13167545087884226607
+b0aa4454-d717-9a06-ed05-173a96040aab,403347660,2055768276062524673
+eba1ead1-30ea-fead-d3b1-66a4007b2de8,1710962758,7081304098202105944
+f58bc636-065f-0aeb-7358-787052828c1e,243864116,11247180314436667575
+97a9b68a-5030-e760-2b05-21a7e3fb6cba,1397021464,7187472738794969721
+e9c03539-32b4-7412-6c8e-00a3f8580af3,1947522221,13504637350764611807
+06cb8951-c5e5-c598-2826-4f8341f42986,1843588721,7642299594063387122
+88ff98ce-6433-1601-13e9-e3142fb4cc2c,1876299534,8278082186188787992
+2322ef5b-2f00-6e19-b5ff-bce7b9e84241,557855707,5304416666456815209
+07e143b5-f53b-bba5-3893-1b4eb0040340,2464928666,8551868332868445020
+8f998218-b4b9-7216-0705-654d86e7ab0d,703437554,16355475514296925778
+3ae75968-1818-d064-733c-63622c92996a,577468878,16990352131756122149
+7d5cc451-823f-b4aa-be64-1f2aebe2ac33,1529201822,8968148508896140342
+7eb5da16-7616-9a51-ad25-8fb0b239e819,3616015224,12330141509244586992
+cf0d6cf7-87fa-bf4c-645f-27bc7afec388,1217993987,10655738361113033419
+6c94516a-6079-15fc-e944-874102d64474,3912112231,16451850709414502971
+03ae6288-4ca2-db8a-9981-29580e7e29ae,745916111,471175580681040201
+e0a5084a-2d18-81a8-5038-7766f1395885,3262373025,15828437637610168647
+4c1787d8-774c-818c-2b84-7a9e8115c361,1088964766,1419768076765731735
+23cb2f49-cfa9-238b-fbec-b17392d628fd,3043328477,16772196889571123666
+e4ae5a92-af78-6f3a-587b-3768a1168c9e,975477716,4201935464453148523
+437a5703-241f-5603-c7f1-c16850faf177,1832481276,11275748988272738645
+546dffc3-2ed2-dd7a-d546-82929cc1c98e,4176477938,10059662976719963071
+0b750b21-9f8f-846e-b638-5530d60f74d3,1986567952,6294785157246849040
+13f9b0a2-a952-e1cf-cd8c-ed1a074976a3,4107816498,14692980541618748153
+a1ad7a50-481c-f6c7-3c68-bec364dbc2bc,1519394690,10921364813881262656
+00f16231-c331-b9ad-1caa-32bbde5addc6,1232079182,18287680143775508502
+8ec74575-1b86-6ccb-3949-3913201c38d4,1065415401,7114845763651370153
+2724a2ac-70c2-3c7d-82f2-e56480d83eb9,346291688,11716095480172278253
+f78692a8-96c1-15cc-c6aa-0e99f8e8506d,106737220,2403878535924729367
+b1abbbfd-3a31-9553-676c-84e61d19e5f7,164435674,12844958524422550910
+002f8932-909b-1e4a-c6f1-8dad43ba8236,1732115796,5780495236845405704
+cee9134f-7067-a658-298d-8f1cd58ef597,589601852,6958051525791263432
+21fbd7ea-3e96-8d42-f6d6-171e35ab92ec,1336128389,14486680061516479416
+cf47b459-e61c-a429-d604-c25def00a759,946658686,10978720517239720696
+aeb3166a-c37e-4615-2de4-dee1ee660ef1,3700255295,6471489777172987182
+c28ef7d5-aeea-a91e-d86e-57aa910c150f,3325067405,18437034659094202988
+96c6aa37-e52d-f1a2-0464-8a7cc8183ed8,2464807505,4246462538527678710
+1370492a-bf65-7e7e-061e-69ce9bbb2379,2905158648,8431358821606029592
+570f6c90-075d-dd51-81df-947e437050c2,170868389,17498456884211805266
+8c2ef98e-51f1-fc3c-16bb-30431c5802d5,1236260267,10338808563809136204
+68b4be99-c650-d0dd-8dee-daa62b73f1bb,3094198824,8488921923849100807
+60f37544-c8f4-a109-d1a9-3863e81b17b5,4053394187,3219304622180677053
+0e072001-89d9-7f17-b0f4-14a40face00e,1620013836,7809785002174117312
+82df0f61-fc30-78c2-23ac-e7b81b43ce54,3636238510,6157016876974544065
+b161218e-1684-3b0c-6d00-15dc37c5ca5c,2636340631,17152954156297513577
+89102399-a7e2-5188-c4e6-5932bb0bb70d,3808857391,16795756953770963456
+e8d1966c-801f-9b83-5a13-59d8156bd424,858917336,12603470568508182429
+57777ce7-6ecc-1c5d-869e-d414fc5d9627,3455040280,15418913030213695723
+04844458-9853-f997-fd89-24dbee2b2d19,4084926666,14557457451587665796
+07f8d1bb-da8c-3e69-3ccb-572406543c44,2231310167,16067811099939652786
+f248eb92-7847-925b-dde1-9cd950501495,3525330069,10576338451136297763
+f4aa451b-0f58-ee6c-6bd4-d86964845637,3001846661,15840119110231645548
+3ff6605e-7773-1f9e-4c68-9a28105a80e3,1540142020,1326659850435152241
+a469a475-1e37-73c1-37a9-8742d657e57e,1080056433,4105646895680000470
+58edf12e-9a25-684c-fe5e-9b0a54cee0b6,1813384715,16540260829511874217
+be64f5f9-712a-0a61-952c-45ae476443fa,2194307755,5257552684777234812
+6eddb5c1-4d81-b69f-9ebe-2f8778f64c77,3471690026,12213712963040465030
+8022872d-faee-a9b9-d1b1-838b0833b5e4,4112584026,5879229615289690425
+238c5609-ed3a-13e6-92bc-5720642ac4fd,873820994,6983158131580655726
+ed1ff208-6454-8344-c544-af7814bef882,165719086,17612764594403209851
+3808ddbf-6287-9cfc-31de-5926556be20c,383901977,14204819752204627119
+fe90c7ec-b64a-5f93-cec4-45e4305fd9a7,3324634712,5855132626296226651
+386e374a-eab1-816c-8a01-a46b16f723f2,1448657816,17586446219380218699
+8c3f6899-3f95-8860-d7c5-e7db1872233e,2602699376,10351877150641284480
+e0fd471a-4510-6b83-6316-6f9f8fda7578,3995184252,8294403034063814274
+3305de50-36e8-a4cf-5b4c-07e304bddcfa,3344028334,4021629357496602360
+876e6dd5-31e3-60cb-a435-00cfa8d7270e,3510493152,16588439999802075891
+32639af0-71c3-89bb-bce6-a359637f3f9a,436587333,26080123903495138
+bdeef98d-4972-2fd9-2dde-8528c8a0f4c9,2623210009,1800474555776813412
+2f72e5b9-7cb2-53cf-5c2e-19441b48f732,2664873956,7257188340047833434
+4c9e0c14-cdbf-a976-af40-1bfa24c85ac9,1352195430,8882559984074469676
+1e4f0c85-c655-b4f2-ac97-06ab010a1a9d,1503023507,14121154216723126585
+5f0e9bd3-dd13-a09c-e976-1d2d163ca0ba,2314570701,14227759985137090816
+53e63ea9-7cce-afb0-fe49-300373645e1a,1270835315,5232767810474259029
+1c1cebaa-2184-0bee-57f8-cef31e40d914,1923491885,16137830448077333150
+7466f6e6-8ea8-0681-7649-5a424692b764,3044247142,16016307657727240714
+43e1f679-a815-d3a2-7c49-0459405780f7,3264822436,11279543848728408847
+625f324e-c13c-8730-7ee5-08abed22551e,1091539523,1507807236234786279
+0534cc93-0af3-ae26-1c98-b50a02b9ddbf,3144993782,9133943112017021408
+1d7b6911-d6cd-bb88-e830-a996e0d49e5c,4267102988,18387351353642712387
+7698d2ba-b9fc-aa00-96e4-490a201e2a2b,2360931284,17093847418530233322
+e831047e-f89a-bf62-de8f-a69772203d39,241040898,18169738872854577631
+c4e76c13-5c58-e766-1dd4-41a01f5737ab,2472490127,14134494978830338615
+41d9f66a-fb91-5063-3c99-b6e4345f1c1a,26609831,237311543670456278
+78387502-fc58-8c71-559d-49d35092570d,2028229472,18222493669350536403
+6d73dbd8-c883-8a22-25ae-93a40fedccde,4138387356,1740299781340383734
+9ca0f795-ee37-cfe2-de29-bb0b8acccf36,3385286145,7513815817816292863
+1ca21b54-e9e0-6323-a4d6-ef411573ef55,1305985462,6613897790550365751
+3ee85d6d-46ac-7c55-e71c-7b016e2d1a3a,2300565831,8755942226685768551
+dc1368f4-8e8c-6ace-669a-835cfa11cd3d,1833206823,15811927119881277883
+a6ad18d5-6353-44ae-10a7-3431f970bf5d,1941061140,2288933228539465064
+a388c375-6a16-3a25-a2a6-39e50fbdfee5,1932857317,10940544079879549107
+e65defc3-ce13-2d4a-f546-24ec23acef2d,1474575683,5241426749533769574
+d997793b-f8a2-e10c-e2e1-101f48bb7e5e,3563065123,16626967559972083500
+2f7a1f68-b97b-994d-176d-0dcb35bee2b3,1397045785,12854414047456538975
+a82903dc-5d99-c221-fb45-a61ec014bcc1,3523741470,13945093292798855582
+80c56e3e-d98d-7b60-bfa8-a24d4fcae789,3045560546,8816908665839854350
+de086c92-9e20-769d-2267-cd62cf1f5278,3977354886,14806177617966220940
+b55846eb-84cb-c95e-14ed-b5169fb86583,1636072129,10966370033662902975
+5739a488-d52d-f77a-9b75-93312a4c46a2,3980610731,1946555886738570730
+6d1fb74c-a602-0f3e-68ac-d9786dae79ac,3271341567,16496416943030240458
+fb23fd43-0d02-d221-e2be-4dc91c8b3dc6,1051854451,8921777287831519949
+0e959045-9b75-32a7-8ce4-78ae22203dbf,3637932671,5554879911201622729
+accc6e3e-ef1a-7501-44ec-a4ba3ad9d6f9,1785531056,79649135372301092
+eb6e8087-5e68-4c3d-6287-6b81658499b9,1110245193,8211815965830678571
+5138bc04-e113-29af-ac49-6b65f4604873,1710074211,408732534639281860
+f06dc753-8317-bd34-4712-809e6cefa93f,342526791,16138062067529160792
+789dd35d-0c73-aaab-02c1-9d0689dfca55,4082161150,15798112461493612932
+8fe1ae29-265c-4b01-1772-1fb68921b429,1624711721,14916123985941117128
+d08a2000-c742-5574-392c-34b556514894,3325290670,1569140660650964472
+eb6c0364-eb8c-9a9a-0167-411e86c206aa,3765157135,7519398573439377603
+b19bcaed-26ef-d042-58c1-f1b75f24bdb3,1854659672,15458185287722711864
+3ad0b3c1-cc40-10f3-2452-6009eb2193ec,2842511465,18204267007361517303
+918774cf-8657-2a52-3929-cac3eef59a49,3882655281,9847074245663388372
+fba22fbc-b667-25e2-1410-769ef95c0588,290202024,11140286765130193367
+f9ef3e73-a0b4-6cf8-0896-0aa499a56db1,1971414338,11004704611335473304
+a8e8c31c-a0c6-48ba-b230-81c462c959fe,3310611019,11773309006665583122
+f785b918-5d4d-1a4c-6834-f9395301bda2,92035111,10251458974592634061
+8d0f5c16-91a8-6d61-f95b-4a529c12e92c,808411852,16661426786359561084
+a7fd2c20-df6c-941f-2bba-873378490626,1801049632,315579659569306742
+021cd34a-47ad-fe54-6659-eabe0d21fae7,275974581,9918690179364126878
+647efc47-6480-9268-b8cc-5f8004e8f1c1,4102808132,5539040110050956176
+0e04235f-1d4a-dc8c-b1ae-285f8b87e5aa,223982359,15975609671106125725
+22e05445-38c9-188b-9534-6f88a29cff05,2951667756,9160995140715912039
+0cbe13e7-a42d-2a61-3f90-b2334acb3f5c,3011291278,1693656150688912085
+944ef82b-cd9c-65ba-d37c-dc3a6879c478,2928694089,4832592572816449223
+e4b3d26f-57ea-514c-ba5b-bbbea53f3806,3121307581,14619334129810838488
+fc21419b-f8a2-37a5-4889-148f210f0d4c,2452120382,2754519999710274930
+e5ece45f-39c7-54ee-0401-89eb8a7316bc,1806748450,17117906523556967471
+7a35797b-5ea0-0373-0e03-c8c65c2bfee8,512532277,10392015000062626022
+230e39be-a3e3-efcf-13fe-60951a20dd9e,2200757939,688603865095748996
+f4c92f29-7343-fe11-3100-38373f4d1a9f,3142121355,13012246220200954602
+0c0eb82e-c005-0934-533c-29ef57b87c70,3638855956,13223171103367972288
+c2d0b667-6a5e-7d0a-4c68-1de79d41e98d,3278650190,8711574209194642823
+6f32762e-1679-bdc3-f1ce-1faf87b359f3,3106922478,15506292330117034459
+11c49db5-3ad4-e70b-25c2-7daa19b30602,3945064175,1791366489200562588
+d462cae7-fe6a-50d8-4829-95f000283eed,4117262194,17831699012977697764
+56c8f1a5-14d8-427e-1b25-abb22a107c29,792558071,18049580440385909895
+239ef188-a95c-31f9-7216-d3f6a46447ac,376968246,16024533411887370316
+05b2de29-4cfd-78f2-59b3-1925405d4441,2362949745,15219656689875352380
+c1ddcad1-1066-b481-f721-e95a0784c8e2,3147957090,10574316570977377398
+fe1c73c9-dd60-617a-df31-0d5b5da7b80f,2544010163,6449094216869955901
+b3c32d0b-6161-6575-2926-6d4bc70bc387,2347193335,1131613675338108709
+6a291093-1b6b-21b3-ce0a-4b175f9c83e0,3483355274,15052111855457710045
+e3d057c7-0f8b-2504-d78e-70ef156e199e,3574935054,14780233389904728323
+8a246d79-690d-5cef-488f-64733a5d79e8,1869663785,10351197658436727953
+f8cbfb3d-880a-bcd7-cf32-2b8c43c49ab1,3699846293,2348727045627998949
+39f20a0e-c6bf-8bce-3dd3-c2f67a0ad451,2051262003,7722350652953025596
+d280f2f1-13f7-bbcf-0a96-d6b50f8ec080,3881922305,8837054631805260196
+1033745a-6857-4a74-cd0e-1597e2cb1885,2520037387,12158113622659100141
+bd01cb35-28db-b280-a4cb-94dc2914ae99,381609173,7987688272034763746
+f9dbad42-dd1b-fd2e-1082-6755bdeb41aa,992639555,15804161718496153695
+f2eb0906-54d4-5271-4140-69c8e12072b5,439273127,14455382322002402830
+5e729f01-26cc-0e60-529f-44da983549ae,2414678916,14813885822819032362
+2c23e5ea-27bf-6071-8e3d-4243fe3b4a92,3823097551,6691952584174630860
+d9945993-86c5-517f-04c7-e0eed47b0a39,2121792532,5922159942073245321
+f65c5027-cc83-6d2e-b86e-3d6752a77dbb,3987946783,7488679038526451501
+ef7fe7f7-05b7-eb46-ec5d-5733c4b8033f,876166072,8065350123180504965
+f90bea87-1d8d-759e-abc7-e2145949b0cb,1261581029,7652115711266286162
+737f745b-a227-476b-8304-80e57197863e,1527932409,1341710476923932223
+ac68a87f-fbea-b0f5-8c24-67777b9acca5,117321445,9616184814929143537
+8eecf76d-7224-c107-ab4c-44978980e632,3670863849,18346968736600467084
+b130d58a-f9d5-c934-020e-a4402efb9369,535495820,14584991955600973082
+8bda2a91-ff28-bc8a-cae1-5cbe3a3ee256,2274386250,1416720804365964701
+2f092e4e-08c6-351f-8b91-44b8836c75b2,1340730433,5370457995417735853
+5edd9403-d616-12ea-19a0-df422fd60054,1370033755,1130723455831548373
+70055923-24b8-91b8-3c49-1f1027da4800,2591544431,5879709326656038121
+f03bbbf7-6866-cb8f-e79f-d0dc1f954844,660652053,4546826637798334928
+011ccb8f-74c0-08d0-50ec-ca7efe6783d8,3754002218,8663348822947970131
+8b03816f-f404-dcc5-81d1-f27de15fb174,1708958540,10255515025617425395
+a35622c6-3d98-bc70-0639-a6c913447cd5,2329553966,6246510582421309119
+b1a9a398-e6b6-9066-dd57-a2d8b610e822,3661105963,7741988321425856813
+944cce78-c0ac-1eed-b6b0-4b406bece2ec,1441280037,16424872486816594244
+926ffbb7-e264-c560-9038-1107d65e7eb1,2002665668,14763950853420840778
+978ebf8e-9e7e-55eb-4427-54f7824c56a9,3297549763,640573093641451258
+8bb916c2-ecbb-416c-fad2-4d17e679ee4c,4034039776,13128536224592386297
+4cc9a903-725d-9ddf-c259-de3335961f9b,1668442303,17705491056500100841
+43309917-f0aa-f0aa-311c-dd586f744132,4226070575,17292965217235475086
+ad00b36b-a14f-c9fc-16ac-66cf8353a219,2170919244,10744763616490933691
+3eedc6b7-ddde-2379-91ff-350f7ef66f23,3322115187,12733090798384588943
+6c78fefe-b55a-ba7e-e4a5-4ca7307df60f,2255063762,7172435850505698647
+4f4bc8cd-e6f6-0517-f4e4-77b8429ca2f8,4049389297,9306696824454594269
+8f01f393-6118-84da-0632-e89642011bc1,174505040,16136442509408045228
+a4d3da47-09c9-f29b-2b0b-04336242ac12,2640213581,4960228620715770104
+98565b76-1301-36f6-cb53-92a3f3935d50,2398130133,2914504671080037877
+0773128d-5f46-6592-dbe9-ef814a118e82,3556895714,4895294992777472819
+cb95012e-cb7d-e01f-147f-429b5e8bf5e7,893643252,15137630739165795195
+52f44884-10d1-11de-2d85-4ded6f3a2028,1759190318,339908653283320444
+db888b09-f477-dbde-2d1e-8eabdb2d69e0,2255201399,8789335752913673118
+08f54d7a-5a43-4722-08c9-9d098f6f48f7,2289881871,17164518843098617919
+55e3363d-8a9b-b4d9-0a97-c6bfb8b4e865,649240707,574704175843071603
+a9da8a95-a6b7-4153-8b2e-2d304f6d22ff,255767312,6809282607701951847
+bc2eb29e-d9c2-31a5-1402-145b5d43f152,3721484227,8166274319742809424
+e86406c7-b7d8-ac96-78f1-451bffa811a7,3081284192,4136922204355010390
+412bde79-0391-a180-3f0b-6c3610419718,4220363154,7013409467928074891
+541b182d-b46e-8f57-2d13-5d05c1548879,3547156258,4600164188171391025
+54fbe568-abb3-7285-4f4a-28346898f502,2163379246,13808402149473949472
+fadf9264-e59a-593a-aea6-a38164f34b50,653287462,8294651920516565877
+da3b6449-17a7-918d-db5e-701d8f754c3c,1379043544,11883024746683560630
+a78193f0-7e5c-718b-1002-18fa33da096e,1951896473,17876041980763012353
+cc519b68-df64-553f-987b-c605503e6d86,3226740900,7700757900727296878
+140775e3-e899-6c4f-5018-fcaf7bf2a413,1412434832,14066909360059246765
+62f93b2e-5a31-b543-b6f7-3644ede2fe02,4094058993,4954136929066096545
+48bd5567-184e-1fa2-9266-eb77f90f4cd6,544061801,12277771403886296150
+403f7b32-3e6c-0d77-3b91-cbbfa0295a08,2927070701,5388544320442223069
+aa99c4e7-a911-57d0-d735-05a84a2101f7,3021554187,2491791912285198209
+fdcc10e5-87c1-858e-fd61-9673913812fc,1012762919,9856203533151454348
+5177926f-54ea-16ee-3e5a-cec304663779,556973588,5629199583859372260
+debc634f-13a9-eaeb-4fec-6c900c794e27,2400418374,15001268312262388018
+0b2aa3e6-13da-2b78-609e-98a78d3fe4dd,2368713522,3896967720627819215
+586758b0-950d-b51e-71ff-d9f118552b74,2815623274,8687490947537231779
+bc965f00-2cf7-0610-66bd-f08c01a9f6e7,608454467,5827230996814881308
+bd7d601f-9188-bb6b-ff2b-40d4fc911d37,3305875226,7450239622933373174
+7a7cf8e6-d93e-08db-711b-8a033dd23bad,1869216899,15561525645238005532
+789bb87f-0373-83b8-7c88-e9ad69a6a172,454702928,6462690988202389628
+9e3a87f8-42cc-6c67-ace5-db7cedd5a3f1,3282404229,17219002233596087361
+62ab0030-7dc9-efba-a824-257b23486050,3617478066,11426094880187321513
+016e3c25-3a4b-fec5-f644-4c6fe19836bf,2278715578,14847977892155526680
+471d417d-0d74-0e4f-234a-a0a7621254b5,2827150360,12783000475463573696
+f1e8823c-b232-6565-eb69-0f16d3293769,4023589855,13499786537651248499
+f7528817-01d0-bde1-138d-95199b724458,33380371,4806455789845090
+8f0d76b2-7339-b2b9-d2a1-934b29471566,1782458442,460279124805603995
+f91677a4-c775-a9b5-37cc-ae5103bc4846,1758551829,10647699586109973065
+eb116756-125c-aacf-2994-4ef587de12d0,653714826,1719443693048470286
+640da311-cd10-f0ef-6541-e89f7f54f3d4,2942108892,15560295456718280568
+0233a5c2-a26a-5942-0a1a-2513bf4ecb89,3469124628,15740384013424789440
+078874ff-7ce8-34d9-cf02-f27c09fcc3a8,4115564302,18007655949457574763
+a8e15257-0349-002a-63cf-4d1495f38a66,3888509083,5620049676641534869
+93723832-2bca-05d0-4e9d-78fc8a1f247d,4126737772,5695646511468478651
+94312590-ce04-6377-a614-e7a041c7133b,3624268148,590150263854864636
+5a60e90a-784a-1ab6-cf5d-50040c51c4ea,2396538531,5802497345676949621
+67925567-ad50-595d-8a1a-aa1d3e5fa251,1371875669,17059940681574685220
+7b1a8e1b-b8dc-7329-86dd-3901fab3eb55,1401528196,13178470300458477214
+754e1931-9627-7cca-df49-380df2945171,1269267805,5158668704564851439
+1a4eedf2-9173-b682-744a-035ab60c18dd,1010265761,8535705876364394411
+726a5cd4-4bcc-d68d-9cbe-21db03808da7,1960854686,7006776174315635955
+2757341f-14a0-c9f9-1b96-11dbd6b21de7,2486242084,15841619885392797673
+0e4d7edd-d538-617f-a304-58d6323fed5d,2452486899,2628500642850089027
+d78e9ed6-5eb7-b65f-a017-be5d35b9ce7d,3583803251,1530323158079356600
+77fed94d-42f6-9820-e6e8-5d8fb4c1bbda,361297437,14537013876378138656
+89354d7d-cf2b-d5f0-e8f5-517276b3024b,2478407428,182100434102244614
+ec49fe7d-05d3-281c-a200-2f652f21b5be,3916362317,14466097057903567365
+6799579f-7489-e12c-5be5-228e2125ed4f,4200922902,9936276437802290687
+17ba6747-dea3-8bc4-2787-9f8d876d265a,3647395781,14721529191121859611
+bbd10397-0683-1bd2-0c9c-9d76e59c7ab8,1345548910,239102363923623548
+91183602-2357-ac5f-a31f-5827e96f56f0,3060872422,15640121580644878805
+e40fffd1-ee66-e92c-620f-cb53d297cd23,4249494313,1669119489936888091
+5255fd5a-847a-aef2-78ab-8521a2d717fb,3754895575,2877939411305929711
+f87c66d3-7a9a-a2b0-5bf7-5c983a9b2e9b,2545909427,17579714283475875254
+1a9bb0ed-6422-27f9-439e-b38619586d52,4203784105,4528040831728766379
+581f8ffb-8363-3b62-20e8-b758709bd2e4,3392507706,13517941981095393545
+ce74b122-0275-26ca-e22b-fc6fe02ca112,1811551528,15648839895162569529
+acffddca-a158-b481-2f12-20f14e9115ff,671915140,17224678459509784666
+3513088d-39d0-b228-836b-6ec0d17bf4c7,1213841539,12234187523445880811
+f63d85e7-2b46-0899-9e93-e1cd4841e9d9,3791203718,11738813016341498720
+90c8a514-8313-1db7-1c08-8ae2bc21da8d,2451144012,8034374384737698003
+cfcaa2ed-337c-5256-303e-fb1e3cc43624,3476311793,3796122335750800174
+174b1f2c-79b3-7ef2-ca0b-4ba364f886c9,997286659,6529822456288945073
+c66d69a2-4c96-7b0b-6ddc-f0bae6463155,1004901823,13071548930655730160
+a461921d-8847-6c80-0110-3c62e491e1c5,3567677009,3954222756981673876
+1745b93b-9375-10cf-b401-f5a41f068d33,1280108656,16035458927022207709
+98e2e1f6-2bdb-7f95-d1d9-fd00a474506b,3326253976,5957974715754598422
+c4feaaa6-29e7-e4a8-e25a-8baf679ffd56,2359781558,8557246396829986672
+f7c6a55d-a4df-d19f-da03-755223220893,4235003894,8360524732907704496
+ca440aee-6529-5c83-54bb-482050a61db8,1077118941,10596122943608224905
+d3024f55-f90d-94fe-460b-41d5fc060d2d,2708884092,4256625337232763894
+b7f9e49d-bc9a-d485-ef76-ba0f88c7a323,146531067,14214277603347355204
+e2f34449-9e06-b382-7b11-6826d8c02c60,4277607992,9754079296992875169
+75f2f45b-03db-1e15-d20a-f12d68740aea,3259493753,10531378092118621357
+26ecd317-eac6-f1b2-8f31-c79b94426c0d,793705100,855114972056457330
+a4967cac-9d3f-582a-7d93-95da0bbb3d3f,1798352362,178522850377901163
+866cbe62-ea2b-52a5-b094-01c1f09fdcfa,884635158,2676831536220710900
+3255e972-8f1f-438e-4317-5a45157a64d4,3939361023,17305860954955849884
+eca5a72c-b433-c9aa-0d1d-ff4a634976bf,1296862469,11968924163772407543
+d041e798-9930-f017-238e-0fcbe78a6c3d,1553071698,14880260779913135248
+823f684e-62c8-5e33-4e57-9d1ecdc18cce,3554125353,14485491010962884959
+55397acc-b69d-0971-3d95-d59e50ec0dd1,4019878487,12432516704760377216
+eb71ab73-52ca-65a2-0071-ee4d68e2dd50,1477263710,14757153045910497076
+83e374d7-7db2-3f70-5dcb-273e5a5d5989,839745572,1271618928935369131
+a4ad423a-9be2-1b1b-4955-81041ee61b32,3892735583,254438369267252889
+93e919cc-984f-e86a-e513-b37d2c2134a5,1538332745,16631566890244771256
+ea83ddff-5f8d-4a98-409f-2cdcbdb086ff,548186695,5557047804670652826
+31d2b666-c192-3ea4-b471-fd67a0baaa05,1636717178,17824986573422807094
+604bf165-277f-8c8b-9007-b76e41eba894,930183180,8779758932779344393
+9c8d7cbd-65f9-6372-1bff-b469eac50af0,3957390897,16320178517822841904
+e4977146-8fa4-ca97-e833-b7c701bae5db,670505048,1703025864587552293
+1cc2f222-64dd-a177-311a-1c6ce1807ca4,2600647882,4235411876519626969
+a7606d59-2b90-3dfd-df5c-27ff90369891,112434731,14777545182479969847
+48a00213-c5c7-75a3-40ef-902cb987878f,1270433114,10263126698866388821
+3fafa9dd-ad77-dba2-5788-22363df05206,1978962427,3614068486615626231
+0387343e-e667-5893-51a5-e3cb1b09c866,1327224993,2220279469140405269
+e5851581-1db3-314f-e0a4-cc72d0d5089f,3778743692,15837151925210517874
+fdc3c8c5-daba-de14-f571-075535651998,581532901,16477810562316935498
+34dcf073-0e4b-246b-0908-ba2d6a1b2e27,3401986746,7052848238315385161
+c0bfcf38-7834-9819-c97d-2bd704698eda,1152176442,13599266646876540569
+36894c93-22bc-e22f-a4b6-0401304ec517,1809387087,4574414936570522326
+10ce4485-d727-8165-0da7-71c57162b22f,3120550619,13078785745943656381
+4585f3bc-49a2-eeaa-7433-16562748d91c,2918229397,15313198455801205254
+913d3868-55df-a3e0-0179-b04e5f1e4ca1,3911923776,6788801711391437984
+0f25ea85-08db-189e-bfa7-b295d6455761,1954025829,8524521793939736117
+2e578fc4-13ae-d4e3-c4aa-d855f2b03218,2578799426,9447072402828791464
+44c37a70-27cf-58e2-9192-ac499b586e87,2113405860,10867030117325257234
+cd0cd0ca-a537-f738-18c6-512fa1180fed,1491708360,17807834837564144898
+ed07e75d-227b-5e69-5ee2-9dc096969883,923489435,16506390490174482056
+77dfbf63-8bf0-7fed-efb8-92d8c1fefd36,3124982614,11320321422939329777
+33d18fb4-cbb8-7145-fa8c-5dea60431b6c,3979171377,6480403054504646481
+6601b003-f118-739f-995a-48fd053ec6fa,569996447,11258494167592402877
+a2482d8f-4885-78e9-9aec-d59eff0486b4,1080211138,13050780860647551645
+69164f72-c7a7-fd99-6061-ac58acee3798,498223066,9252301304353834690
+19d8fa89-40e0-8682-b254-9fe406462564,162260338,12398041281243781096
+bb20f989-ed2e-3175-e061-abefda0bf4bf,4166748295,10968923027605696307
+92fa6429-a080-380a-f27f-854b7e38a556,3933063228,12996997216912805852
+cb5179fd-9e0f-6e05-9bf7-37ec5c25a47f,345463285,6791119497942672914
+6a9c6371-edd2-eba3-3fe9-c25f036b7f71,3185745882,13876848170066462413
+0725c7c8-7c8a-ff50-5ecb-34086ebc2431,3529110909,2785933344571894332
+6906363b-66c3-bada-20d8-f5c404709ddc,4111193757,15900353594471704418
+6a8efa77-6c16-4f08-9860-f102f7c8a949,3298033273,1138867099484830892
+d0bc1569-c5d0-6aca-7ea3-8053f5987bf9,3909914194,7734332243870257602
+f61bdd79-d3b2-4641-1b81-b5ffb32c7a59,3931171183,16980276718001264199
+2ee7b050-73b4-cc72-a012-859d2a074e95,3142017644,4272788517002616987
+09826e13-a47d-9b26-847e-9169df02b845,1459678694,5507034542067918604
+d161f470-cc18-93bb-4b33-b5667df80daf,3400170717,17267779736343081372
+2d7fc33a-99ca-88a8-4c4c-295ffdcc1ccc,1547998688,1967362933905626465
+e2e253c1-1904-2dd4-cee9-881a247e4cad,636547104,7320203708799195178
+9af51d24-d194-4661-4bd9-e9525df713f2,1666405322,15584476605313935120
+0f71bb49-08e9-2f2e-a41c-608b022bc058,1527387419,10650766023764730536
+c847b676-1e93-a084-6f05-2ac558c6ab56,142490220,15031571680241437600
+5ed9de39-44a3-c0c0-b021-bbc01a41ccb2,899800642,430145713419864492
+085a1420-fbaa-7cbe-e73a-291390b89336,2516760313,7072935360184770426
+c716e8c3-9ba3-f26c-c3ad-453553eac813,2616745057,11566219830671101754
+a2fa1dd4-f450-cfd6-d3df-0d7c53ed4ce6,3952061643,6842950890584048470
+ef5bebc6-b2b5-f828-a8d0-012af4fab124,3340482094,13419163940098749411
+d8e27717-77b4-f6ba-be96-ae6fd16b0fa6,1539830971,13367522168193349973
+cd9eef26-e427-5b91-72a1-8b05d335a741,2440248085,7442155629408106166
+e0412332-550a-29b7-b622-f81406f55e29,4178056575,15785016270513589680
+3ae64007-2c2b-7aad-d4f3-7870cc1aebfe,1452729250,1125296281417554501
+3053f3eb-99fc-0b4f-3100-e48e4a4cbc78,2987441173,4235632024112017230
+63419f05-9078-455b-99fc-e03d8e5854bf,3677781573,3453311507730304075
+626d4e11-a41d-765d-c56a-ebef54675a4c,3667418283,6049435716956456747
+fcd29913-3d95-912d-a9e5-72c0bceb8aa0,2584096245,8262396657088239257
+9e36b573-1e06-ed6b-4f91-ea6558928ca0,1346235927,7740559376753354292
+c9d1d7fa-90fa-1fce-b7c0-796e498f0ba8,2107027979,3333935389418098057
+6fbd34e7-ee7b-fc56-1e22-020e52e0f182,4189009350,18041366598158879562
+251338d2-6e0d-7c4b-214b-3da730615e05,1613536620,11131291957766094696
+57c443aa-5151-c4ad-3167-05cff9f63176,1385510131,4333084209150806222
+b9bec999-76f5-61af-6a75-4a0774be6c3c,2652688801,10951543330279180245
+57c0e050-6e3b-ede1-8382-7f045b9985a5,2544286204,17036897991063518340
+bf5d05c4-d50b-98d1-f22b-62c09870a821,4205401508,5436482716289623233
+511f723e-7494-d10f-e0bb-c327f2734331,2497213776,6748711047888271077
+e903774a-a1b6-3997-ae7d-55eafbc498b1,2004628328,17568195391794109783
+55367921-3fc1-2e81-7780-1e6c7aa93570,2312046499,5348005526531715189
+46f2ed47-2503-a012-be55-0e137fcbc45d,1870601350,9362648541037960405
+de98aa83-7eff-521f-6d65-c3b9d8ce16e5,2865921042,16782534496568295197
+7b8e4f64-9c8f-036a-c4fa-76dd4e324f8d,1822341345,18157498995014898826
+2fefd12e-0b96-df70-8a01-d6da83951f48,1249690318,2179945069458405266
+cfcf1564-a0d6-90bf-3e17-c4d32721b9b7,753079822,1117922245398322547
+fb8ec058-5d53-378a-5428-9e10214a29cd,2039085627,11286388012225880055
+0818c630-ed41-e053-80f1-a37e4d3343ea,1510037978,6163043053569544583
+e36a8391-c81e-4a60-4f02-c27373c71b32,3868166438,6660110669073496028
+9dc9985a-66e9-698b-57a0-39d2a426a6c4,418453933,6047245176018006479
+51475f0c-1051-ce50-6694-d029cf8c0ac6,2307279735,13520177853433658393
+4688b3b1-c52f-13d0-c05a-0b41a6e496ed,4008401396,3940099376780206850
+a6c7169a-a165-e168-198a-9487067b817a,129257814,8608711313722346612
+9b0c2f6e-e79d-3a18-fdf0-c425fa2b3b09,2107476163,6291776873029934450
+d871fe71-0ad4-883c-94df-4dfb4b0b4eb9,2666515331,9570057526614035426
+cc101bc4-7881-a7ee-67dc-754bb07b5eaa,985380064,12047969117585481498
+27a94e7e-4c05-0b72-cf58-8bc79f9d5ccc,1577077644,17788973003607908639
+c995a8dd-cdff-dd93-40c0-4ee904215555,1002164498,9799881297499528170
+4d8f5107-77cf-663f-e377-7dbeab36b3b3,302533515,458829507666370091
+e1a9f125-1724-ee93-0ea6-98190baa8a8a,3659527880,14826325236098709938
+70b03204-27da-945e-0c23-27e0c487568d,3526155925,18274433213350910042
+acca0173-d33a-d371-9c7e-fd5cc34c0fe2,383748465,15767595925957848282
+d09ccd28-d3e4-28c2-fc21-73081c1bac03,3419476753,496244016418510303
+89d831ee-d067-9d32-fe33-1340bf970d83,3968413913,14558743986225363295
+a0f7d54a-319a-b2c3-a64d-d52c89e74390,3825897706,3219168741324478714
+1335ac7c-88f7-93db-f05c-41d01be71d3b,3439033132,3603135100735231280
+b755556d-195e-108c-fc24-87491318c58e,3542599402,13295317886515842148
+5c2c9edf-15ae-ba8b-2db4-ceb75d7d423b,1977942476,18058655852959550387
+6b12e227-af12-c08d-cdd0-21d21988ce7d,3780992762,8206601634659942866
+1455bb0d-0048-977d-17d1-f82eb4dd3d86,948000242,14212107513514336620
+86c2ac50-6a15-412a-015b-3ca96e38ba90,1657621426,15973296233309258014
+b2ec5d5d-9a49-5c24-8aff-07c8eb2dc319,4163117748,8146572328838506290
+6c2170d9-c827-1410-86ce-ec10d022520b,1413366893,16239608523623406559
+f4fe3558-a1c6-9cec-a107-7595e21167ad,641163647,7446572094182450491
+50117dbe-38f8-1ef7-021d-7e33a1548936,160580821,4329755354290478349
+1487b0f4-293c-8840-121c-43357fac4b5a,1126593249,13217608451240097073
+4920f61a-c091-a7f5-5cf1-b024547b8d1e,697885548,10687413165993609260
+de0c4832-b747-98bc-8d63-6e0657327fa9,2034350448,15505950573368355075
+dd651212-8535-e555-9092-a61074d9460c,834774000,2960998740025211117
+e20ee6a9-d611-3a5c-0617-da47194b6942,3561034393,18282317027953614103
+c3d6cb0c-bff5-93d8-9395-ce6280abdd6f,1964971663,6340733897862325225
+3168e4af-be65-ba7c-580d-4c4475a2b77c,3640069285,7962370724633009429
+6790e689-01c6-a8fb-2fe6-d3154f7ea50a,4235253312,14889715477789270125
+e6b9b4e6-fbb0-cdef-ac01-4ab4c2dbf59c,3993027113,9359999113699179362
+aa5bf90e-cfc8-da72-17d6-f501b153322d,3783849222,13553500478973043167
+f05955c9-0b12-49b7-9c5d-cc2c02573aac,61316446,9604656582603334577
+303129bc-01f3-59df-ea5f-ce21b5744c7c,1380205474,8889665509422356997
+80121a9d-d9b9-49cc-f915-93a4d81608a6,617144605,9232261937871357597
+abe85c49-62d9-76db-87b0-f28dc6e277c9,2885611526,4574383304375535336
+1b903e76-712d-011c-378c-73d740b9b5a3,4281746386,1313710906964644474
+28833a71-7186-2d9a-409a-bd04e2f461e5,2260218023,18101910926992905491
+c4d43b6b-51c9-1490-f518-eba1748c4b0a,2788036936,4138904601749893144
+2c33a466-e163-8b47-8941-d809b525a103,592860347,8034944182622116443
+a1892e63-75a1-4fcd-0fea-f7a77a4a59cd,236662097,1455433869714972259
+98fa991d-c18c-9b35-f968-0a3e23969d55,3393361650,9850946175165485135
+c4b0230b-eedc-9e4a-bef7-dec75a380d1c,1270674983,15605903124142546966
+32d7dcaa-8a16-b11b-4d00-7a2d68c1c430,1277963344,4876617900350341107
+62f0ea7d-9a09-1ef6-3273-0f39fc2875a3,1162465406,13155126120149678110
+99b30e19-5fc4-5457-6ea0-7241d2190848,1568777756,15742823577258443386
+3cbc5ba1-efd4-fc96-b3f4-3009db850035,3450882601,14128904583717015320
+dc3fc3b5-5888-d6c7-35d1-213ccd1e0932,4197426435,16805534575708945128
+316426ee-82dc-a8d7-cba2-77f2fed4f4ad,1830887804,1884892940686995204
+b63e6a40-6f0b-fbc0-4026-e033003c99ea,424800553,8052520639479181314
+86f7d064-f54e-3350-a141-c7093c143e02,3275446448,13419076785632509590
+86dc16d2-eed2-f788-b5cf-dd4a97d5c6df,1551341049,6266440202748491810
+713d185b-fee8-af83-7cbf-89ff9755e3db,3287591397,18051413952933338725
+9d07c834-de83-5b73-9574-e2f658973770,1534686918,7732414982755356622
+787128d5-1d34-50e0-8fca-9031aa7d5e4a,3263561163,5371789880573929873
+3dc18385-9ca9-bc58-c258-6e833b266688,3570101870,6477690337658954398
+83bfe220-93a0-98f7-9f90-1c5fddde28bf,681687253,8577887259803952737
+c02e9db6-812d-ad31-e72b-e2540d7e22cf,1849264404,3433916655450778831
+8ef2a0da-258e-ab6a-950e-87f3f94e27bb,3585437614,14287046341866512808
+5d3de761-6a24-451e-65dc-d365cf228f88,632075190,9920529710546084422
+d3763b9d-1898-6451-c5e3-ad2ccd639e10,3464886800,15612639808035899121
+d26f01ee-7d80-d8d3-e6aa-83e2c3fa42a1,3064944549,5955710141119337654
+f1bf533d-4567-78e5-bf28-fd352bfb1489,832543271,16537339936806433125
+d83a74c4-1933-aea9-9b83-1a33184782b3,116271753,5852004869439276207
+20dd6956-05a7-d548-e2d2-c4dce47c3ee5,2198500095,17417438844388529189
+c8376bfb-b179-0805-b0ac-b6b20fe580a0,797002878,7529561113596254352
+ba1b5d22-8aeb-661f-0639-e7161a831927,2062965660,10745427417407971122
+22d76213-e636-eacc-de20-8c772c7734a8,3443212788,10443854305846765276
+7bb1c33e-aace-2e5e-9a6f-2c09172585ae,2827758754,679980935677727007
+790a112b-7734-a4ad-e0fe-20d2ad466b0f,8387837,5860174473712889036
+e6524d58-5f69-5885-4845-b59a97611795,3814037461,14083663661404351672
+5f7787ee-d24f-a061-f57e-a93b661d678c,3664404,3265229191133790757
+5a5a1442-81ca-c071-1ead-498f60216357,4032243589,3692803306236547592
+d121542f-9a0a-3d4f-27db-0069e5a9bd9b,796106779,5669118283649240448
+d5be6ab7-6925-f49f-6f57-bd615cbe622b,3800533515,1093408330328565113
+eb4498ae-4f4e-ec49-0268-db4ba2dcbcb7,2412608436,16664957839782738614
+0fd84f80-edbe-c673-34f1-05220b5accd1,3070356576,14991139011301619496
+4bbe55b5-6459-d62c-5b59-95a4bce104fc,399142957,14678960420301560822
+e9b0c43c-2c06-429c-f4ed-f5bb948422ae,1473843981,9700909207309725104
+3c306988-ec1b-64a9-ac21-42bc0f4662f6,2222544839,4115558994140283842
+f5026a09-ef92-839e-7d3c-463afc99170a,1965062041,15134768735824808699
+361ed818-388f-7cdd-3baf-f32a5bda0335,2053605738,13348031683279074559
+c389e683-a27f-807a-ab0c-f085fb541a7a,1265415058,3937321644648850102
+e839a7d5-6254-78dc-459a-a3f3b3de0644,3777512034,10488043898190528548
+e523b3c6-54ad-8a8f-64a8-081eae467f3d,4124010724,4580715729242862415
+09ba173a-79dd-3c76-1aab-406e350b1147,2962204702,16536231311475570981
+c76f2d22-e229-35d7-02cb-9f52395387e4,905261839,8260117271766063952
+5653ddb9-ba4e-c566-d191-353cca8d2f5d,3062935019,1977298611381113926
+c1251cdb-f0a2-1bf9-14f8-8df9cbea8a6a,2266917508,8773867194535770083
+cda048ea-6592-1290-3711-c61798de2db0,3435917172,17301960809517326119
+8e1dcc89-88ff-4140-499d-dd04cf6111eb,2057329138,1955515010669875446
+7267c434-9731-4c7b-f295-542c7d677068,87564413,9899108270217147974
+e4200e42-89ca-12d4-ea64-0efdf88b3ddf,2442221483,11151291824081059606
+71c228d6-cc15-ff1a-ab72-61b408470034,3588648397,10696324056484371291
+22b3bc0a-f604-1c21-a804-1c00e062f3a6,3626432588,13450954405063669883
+c54b0d89-2a67-e6db-2ec3-baf2092aa667,1297866715,13127465783255188473
+33d0e230-54f8-e283-d363-a049a5763f2c,1619991042,17631144884701077699
+fe285441-f26f-de99-026b-41e897ca36aa,2318033673,959153125266141813
+5f4c9165-c9a1-9873-3695-70468d03f225,1929336606,15346250794437574596
+b5409d6c-cc23-526c-768d-328b1c8d62a5,261276436,2431949343734030018
+85e85b50-a4ec-2c7d-2702-a4d0e3365c9f,3841816643,4010391373084847232
+51163d18-fafa-a6f9-37ad-5c8825d8b994,1521083380,9843346350355012297
+f63a53df-f385-e4b6-9f0b-4ba69cdd2d9e,2209493281,15916675680140970007
+26f52bac-781c-5957-0ea9-80f610363c1b,2791885743,8576117521772565105
+8a84173f-5bbd-30d9-2f2f-54ff1f17791a,1561645259,28827698908705224
+99c78038-eed9-64f1-bc73-447e1d13a85c,3830383937,7240873999081443959
+74f270e0-331a-3c82-d6df-8c3d87461419,438161084,2222375506712554870
+f5eb835c-4f48-78f4-523f-d8dd3f3833fc,2219408750,16542388840985866492
+31d61f8d-589c-5564-bac4-3d8a44732069,3501888256,1829634637063103837
+ff86d8b8-1976-c20c-e035-32766af6d2f9,3948067383,12771030130623032301
+8faeeaef-1b98-7c82-73a4-92247a5d8747,3155824419,1845251164384402313
+aef1c4a8-bcbe-d088-8123-a2c492d901de,2849450901,3739793432735064684
+c198b83d-7b1d-de01-c3dd-1f6b0afc0230,2935723597,13099148563899510663
+089049db-614f-ef06-f4fd-5e94ef47259f,1525835559,9738834844345196755
+70e56995-2e78-cfc4-8d9c-8245dbfc52dd,1521981359,11120770679718958853
+9cfa4302-ace2-1f83-69d7-885c3795bac8,3707939472,16203699561592950827
+44ffbe2e-dc89-e402-93bd-b2e22c44fcb3,4182282205,10088650735071459304
+bd115271-de75-df7b-45b1-4348cc432a4f,3045440244,693424550050089352
+452b4073-ab4f-4277-2745-05299af52281,2004524610,5622061855957339003
+fd90e7fe-b669-5719-cf14-5ad8c3c77cf3,1501252752,10601948047380439029
+40a47cc4-8a99-51c4-26f5-bd7df81620df,3579439840,8261697048686531911
+856ec292-3953-c653-e476-17557f3f74c5,1780515616,6767004532683420492
+a153fb05-203f-6ddc-e10e-3c9fe8beca70,4209178930,6322857092075039342
+c1821f34-ed75-05b8-dbed-5e9e917a44bc,1891543291,17170639572717309419
+b869632e-746e-cae2-cda8-b572a3e07d19,790656939,703503288257325467
+31d344ad-80da-73a2-6d5f-1fa5f8ad752f,3799469848,5609856882732219415
+f903e898-6aae-f57d-b928-564356f30235,3902094982,14926799254786768084
+356d019c-77a5-2772-f902-bdc0e8ba8649,1553202753,10784786322371624663
+7d767e07-aee4-12e6-16fa-8967757e7534,301969955,4166342235592794935
+cdda0bcf-966f-4213-e7c2-da01a8449e93,935556156,4318885867457176903
+ba88e82e-d01f-eaa7-dc3b-edca2334d717,1491561376,18123478731520250218
+9e17b488-92ba-de48-ae8a-8545dbb7c9f1,2242007917,7558493694418451827
+cebd83cb-fcae-657d-fedf-6db51151a2ae,1982898342,13916986570811204782
+131a19e1-691e-a3b7-0857-cf06b0dcbaa8,1788941056,3905435755923989760
+e274caa7-fc6b-fc96-0ac0-19d4a99bed00,3153609735,3424619703545059734
+d641b77e-baf4-44a7-9ab1-11f0cb3c1333,983140908,16544008253436371912
+8d70bc1a-8828-8698-cfa0-2dadf6bf7c8e,1206381781,5019257865326547572
+57fd147d-b015-45b6-bc88-b781bb1a6457,809537822,102658809820739444
+f4d32b4b-e885-bb39-d1d9-b6d45c5114c1,2074919264,5302945830547259397
+4831dbba-5915-1124-3c31-28c2409db408,1823035621,17998572321484104788
+036d6f46-5f85-fb12-5738-5a6dc7ca4c75,3453549788,7070221253867755521
+c097f14c-fff4-f4bc-8f87-dddd61f9e258,4096233476,17496911178098606435
+96de48b1-a10d-0b12-f7f0-2d87d15883c4,258355634,6955647963493277197
+3e75e236-4615-ee51-ef65-3cbd7e0f0ff0,3918219649,6751572687801603309
+7ea3e064-f318-ceba-07f0-579f7ef406dc,3648794816,15248935428402357743
+22fa9a5d-10c2-4761-e16a-3704c1beb073,2250174389,8754782436063183123
+c19098a2-c5fb-49fe-51c9-50bcfa99dd19,2423886116,9720814987295082548
+50208fa7-292f-e977-d11e-e441ae7c8ca2,2552172286,14097835397013444417
+07aa0493-5fc9-861f-40e6-6d0a1cd5cd36,3746382872,5781603723089338646
+c0bf3b7f-db16-8cfd-9a22-b01c2eb6fcca,1967593730,8210596074001068790
+e866bb01-4fb1-636c-d620-20ddf8d5b97d,682576306,12135816130730152340
+01493d06-4308-8c3d-6a54-397394de7e3b,411372274,5750253440775900343
+3e25e896-a96f-f5af-03d5-990562f1b491,3174314501,7043805093458629690
+88ba1e2d-a295-fa77-0ac5-dd1ec931aab2,3558051924,3936842163167439879
+2e95bdd6-aef9-a382-028d-41c39cf92941,8232542,505288757914441546
+ab789c30-1b9a-ecea-886b-4cce187ee40d,2242559783,5705058212953504303
+432094e7-95a7-d3fb-0740-350818a17594,3295651833,2292509112959089728
+8f08ebbe-c6f5-9c9e-1ac8-0ca5996b89e0,1833702622,2625808333260970431
+0387d315-3b9f-49bd-8b18-24a0fa982a60,3668575461,5693608346114506935
+755bfbe5-1fb4-38d9-f953-da6dcee77d11,2388764966,14339912111476944098
+02ec307a-1e99-7066-2c8e-b50ea70b8057,1693533583,3765926424684246943
+2e1721ce-e03d-b80d-cbc9-c51941811313,1814042572,15465058049832213540
+9e8fc37e-baf2-5523-44de-1f87f019b2a7,802523889,11265416827160291031
+1c45b705-780d-fbc0-8467-b9383b39e123,624778802,7196083691300971470
+b24bab8a-03e8-eb87-827f-ca0a25955a88,3264335550,175152061822678078
+cf7ab22d-8289-bf18-f9bd-8145de442387,2737058157,18405698206849980487
+67d75398-9880-510a-f669-228b58cec885,1494563680,14917374972909691252
+3c0ab79d-68aa-47f6-0969-78170e243150,2932422331,3401280145789535907
+3a6818f4-96d4-b0f6-6c35-e06ce4658daf,1427113804,10316427357186070903
+5d4a673c-158a-4fdb-f5db-55acccd777c8,1515823555,6047464607675227954
+fa3f730e-80e8-b584-ed95-35bcbb6ee78d,2160015640,556685948132408680
+759dcddd-7963-7976-3f78-5df842d50885,3720164278,16725645818784960689
+2910f2db-5135-66e9-faff-a50a144ce3e6,2337203815,8459400482624783796
+b6e8ed48-a8eb-c63e-82ea-df0828edd0f3,2366313744,13427674960593406178
+060c2d20-acb5-5181-ac8b-c7bab2726e2a,4241148699,7952434480205067889
+10b5c5dd-c0cf-96d4-4de7-8d80e6076b7a,907687573,911454966012986845
+2b02029c-96ce-c1d4-cde4-368d4ee24bbc,4122679573,17889255357293048994
+f2e93e26-8aa6-b187-8a2b-bdca0d91295b,2105348106,11051874615933089126
+7efbbb13-bffa-6021-4e62-f36349f7e5ae,3470600125,7705333710218878581
+27db3fd0-8398-d1fa-8451-d8511c98d083,2818402641,951680438968925769
+3ee35e37-593d-21bf-3fb5-044706a18e9f,868924974,9652484215220405554
+973d2776-f77c-b89b-2f3e-103c0a8252d2,3407749871,15141789267329957175
+4c46cd54-5f83-062e-669e-ceac7a0e1505,369026126,16332942269021504157
+c27ce187-29f3-b9ff-2eca-2e26d30fb62a,4196161291,11267587131054710853
+411c4a1c-7c62-20c2-fd77-2408207b0a4d,2956695518,15263650883090934141
+709f6319-a081-fabd-d4d3-1af68d0c9047,4291511171,10719737220717314994
+8f586c54-2864-ca4b-65ad-b1329ac66498,915928142,12164925181547983695
+63474f15-cd97-13d6-866a-f0e06bbface4,1921466550,4269699170703856521
+57c35c54-2403-435f-3ed5-e2f92d9e36e2,4068565830,5031460133903789931
+c01ba835-97fe-368e-720b-64c650ff7cd8,3418522626,3143811523171836600
+feca8e9b-fd87-9274-d990-d765eef7b588,2665005933,9311345562805601121
+5987c380-0a2d-fec7-ed0c-f1991602e085,4184175791,5736522702533135589
+55b9d575-75c1-170f-cf34-2a11fb7e854c,1461013652,6104733592073107023
+c31b78c8-c51b-a7c3-3480-1630be31be94,2636707198,4005410931822114364
+740ae39b-88cb-b0e6-1176-9dd402379eb0,3027496052,6244933400946798599
+1330f35d-6684-d3a5-863a-aad7a0a571b5,3121783330,9580069184048245487
+4aa71f27-6bba-d31d-fb35-b4539238c336,1964526536,17419632966780302380
+1ab96449-e63e-8559-ac2a-3c59cb4dde9a,1675596654,990461042217318467
+27527dbe-8c90-4b68-095a-f4610e3dfcfa,1645188490,13077258363767698563
+ad1248b0-7474-0440-8618-6d337aa745e1,2494871318,2633940508161548952
+eb28908d-756b-bbde-3a9b-23db1cb89954,23079815,15991338619412118146
+a9f5b635-7be6-80ca-0765-18d2514a82be,2129687596,5418322190864952677
+a95cbe7a-fa98-1b2e-3716-fb0cd841d880,3152714755,15209707234283427829
+5af3e442-2332-1661-720a-b5f9aa372d0c,1571872987,10161347271983232410
+6febac3c-29fd-ab9e-9664-6875614528bf,1001482655,1430686154614265648
+9e98ef54-e3ee-a927-c507-4164c7807063,736445903,8774914233355506756
+1bb16b3e-3188-19b4-2bc4-c920a10bc782,150756598,14080598648224146563
+fab183cb-9618-ff55-a8ab-e82dcdbde746,4291670760,4558932912989631794
+8530b562-6419-6ae0-27ba-1212dd6da28a,2994571687,4025210342743508200
+7534b551-736c-b5b1-528b-0270c1bcc036,1725330948,5814641588409864758
+b9d1f09f-e0e0-4023-f2a0-a1f1b60298a0,375756308,13229193839785147635
+80166df9-09f3-086b-8ef6-e2eb3b1c4c5d,1141851356,16997693131572317258
+f45216d0-67d7-346b-15a9-e00a12ebf4dc,4292181448,7465142632145109274
+ce22b12c-a42d-2517-a4f8-e4f77f41c4d9,443485983,11175694620884129699
+d2fb0599-ff3e-ad92-61fc-f83e6277f274,3876464739,10774607691831587732
+bc7197da-7c9f-0a5d-61e6-d02730e27700,3743788299,9048396621986041480
+e5e30631-a76b-95e7-59fc-6297ba6c22aa,4028672189,7269320732448395558
+d51e740d-ad42-6b46-1f8e-200fc69bfffc,232920765,5553473883137485594
+13d5d113-5f20-92da-473f-4e673b124e9f,2804684662,17964028428100417120
+9e16fc0b-8e4a-620b-440b-d61e786824cb,3050753637,4274205912691246034
+5e09747b-4b95-27cb-d53f-17a714b7c4a7,1551942752,4873807483568495621
+51124233-7de4-8a5f-3d32-64f29541f72e,1533721543,15382227421165664775
+01bf210c-3f2b-62cb-6771-38fa62a831f4,2515651700,5833962756501277912
+b63f5b60-959b-0c70-0915-d7093bbef186,1182807504,3085762471412512835
+6dc6c922-b886-cae4-fddf-9d08f6ebd3eb,1820554599,841991678085360167
+1a52a886-1044-fbf1-5a08-90ce76503c54,867834124,14424752200953097973
+fda4fd50-8182-9ce9-99ea-18c4126405ab,1817124915,13206504720017694503
+54390922-3615-ec50-6adb-1d61b3da6722,283726896,4311880166983382272
+40ea0bca-50f9-5056-44bb-482deda0a14b,913735532,15238333252826785587
+437dd63d-ea91-02e2-f910-913df4c50249,512299316,10968914022781562343
+4bb88578-0863-80fd-532f-e98686871967,3725798971,11876055417066396638
+33c31731-1847-5237-1bb3-74aa090c05f1,3443616495,13816101455087418697
+65facf63-8c19-3b99-6d10-deddaf5112cf,1240509807,336637554138662282
+041122dd-9ff5-5a2b-dfd3-2820b18e2689,1538111679,12522913184678702231
+4e529990-0f77-c5fb-415c-251966731597,373045848,17826934849107236322
+e8fbe2ae-b118-9636-4c32-0abb89d412ee,1033464490,978060648658238859
+2218ee27-059a-cc1d-4d39-02c5b047e9a0,3434448761,432800796289986081
+caf770bc-982b-d829-e25d-541f5fbe5735,2282165683,8402084957853550879
+874b1652-9a65-683d-bc8c-e5d682eeef61,340339259,1633625715947769770
+29730268-6624-a3f8-a887-c4519b9318f8,3121948900,7245536244375702553
+6d120a15-bd4d-d747-beef-49018f72ffa6,1868124420,8986179559477088587
+e50ac1c6-f740-81c6-b506-bb23744dce3c,1593899913,4389425813075800850
+8b6a7107-7fe7-9c17-26d6-ded4a1e73528,3528052458,15957292587354735567
+ad8c1960-fcd8-9702-6523-5aad79edae9d,773671349,156751451971856444
+1096a263-8fc0-2947-d1ee-fccf38c87a13,569282850,15741515002890982889
+12f8a983-6dd0-80fa-dbad-6f219fd300df,3770629688,17169693338903179357
+e56423f5-ade9-e90c-4fc7-ddc7526541f4,1684389596,3529247387095463735
+8efc902a-b447-5ca5-894a-c63dcbe63a14,2450440867,3135789730234121688
+8b12ffbc-421f-3baa-0e49-d5cf8f710cc3,242896805,7934133843544668255
+9cd319b2-2bae-075d-2b62-c272497300ed,4209264401,6934084090296688299
+b9962ff7-522a-5c1f-c370-901b1fe6fe4d,1561573730,18126635084905843045
+b7c541e5-bbee-8782-ea8c-c800f8944afd,2355706574,8858613363489828006
+b489e55e-d756-ca96-1773-318a0a5f0189,3306370330,7321529047936653970
+9e83f56a-e7ea-7cbb-ba13-c1af81c25e0e,1215025674,1726478304213685751
+35978e00-5307-56f3-bd55-3375dd920dff,3809102200,14473010433584329980
+5f286227-87cd-f361-6570-753043cd0101,1960788927,16867891415445017389
+46af6e16-b105-cddd-ccc4-f5190f48937f,3533769613,10810856858954278569
+d8a30c9d-5a27-a5cd-d287-0b677e517571,1695464688,12146284799509489258
+6d87e0db-15ea-2117-d42b-7eecf18a69fb,1514595905,15178796496712563883
+559ddc8c-1e9f-e507-5d1c-7a6ac1aad408,1389224050,1130159307580577452
+55dc0835-6e95-cc40-531f-3e9402a26d4b,2809375034,14712036259910072341
+2ccf2630-b916-b4f1-f8fa-cdf149d304f8,2113483812,6845295735843992839
+1ae5db9e-07b2-b901-0a82-affb6c210761,2024719520,12520170257062789425
+5b018fc6-40ca-8f61-4402-383207e4f4ce,3289999175,10912825196423225384
+74f2e4ff-a07c-8d37-86e4-c0ea277f5142,2078348791,13671896937284929191
+46b8b85d-f917-c169-6226-05f761c2118f,3929395940,16745322213419145640
+fba55e81-d1cc-132e-641b-75886b45df5d,10247088,13298138726403828020
+9d8638de-1b92-efdf-d4e4-f58c45105737,1545395485,12843170850240929264
+13b1a4d7-f651-1f67-aace-711d235ea0a9,2259836169,13999401480504537524
+08b6005a-9f49-1e03-3f49-318a10dd5494,4205466552,2246277605885219491
+8d921f20-e753-cf4d-19bb-491ac66d1c57,1488709232,4633444937435371430
+f539132f-aefd-5dc5-96cf-8495a4389090,1773799492,7110616338238405099
+f3ab3db2-5259-bb39-ddc4-5bb3542c018b,1804311476,3333879436301099079
+3a59ddd8-0d07-8b2c-f617-769cdb5db627,907231333,11841723921251780066
+672c7c7c-75be-f29a-e60a-fda4c097668f,3609041276,14587047542267045227
+664aeb96-8575-d232-e1c9-7dd1d1ab9251,2753981418,12513948477930854228
+1e617ab3-f868-28c3-8f39-9b1bd7b13df3,1225672543,6896251046675384533
+b592425e-a95d-46e3-3e7d-12ac81101161,3072410177,4433087768329747859
+e4c3eb25-bd86-64e3-53f9-b5ac4dbd7ce0,1823480919,1299992870829359293
+e1465663-bb49-500c-77ea-d9b1412bd1b7,3295689206,6869772528798754211
+da348357-2714-674e-7b95-695737166ad5,61656722,9284733248250621990
+6a93d874-ddf0-5234-30b4-9580b4544ae8,3984357080,3414090239746240905
+7aafc7fc-e8cd-b0cc-6832-00344bc25097,3803950626,6125236398738391769
+7203016d-719a-3b16-ffec-e526c175e4bc,2492393737,1287863728242800947
+c121347f-a994-ffad-2b38-cbaeca8f95ed,2171269814,7585040711719008748
+9262c223-6851-e5a9-bc3e-5a1b0da4c26d,2739918371,1466736862691465400
+8ebb18ca-9783-d93c-b32d-5389c346b5fd,3559286370,14073210551664244925
+85c7965c-dc1f-cbf7-4e67-145cf7384b18,1056142389,6213409806462675664
+71511212-69d2-659e-fed8-5db0d680db0b,1914344568,13996799279215315143
+78d3e2de-519d-4f1c-2d68-e5e8f8be5a25,3652967150,2920689259987869478
+ca95965e-9c64-44f6-d129-3f89c9b1ba2b,4083572435,18333292592200788034
+20815e96-23b4-7042-164f-c1d2b1225d99,2619153139,6065690247629968642
+aded2848-1d82-e42f-6cd2-7cdb548d352d,611951235,16918251980252569304
+022c5d79-e263-4282-4378-5b377ea033f1,503840844,4895681803328845648
+38254579-b5b1-f153-1380-ef081936e277,3697079649,7717141348256005130
+e8e8e1ad-bde6-73b4-f22f-9b19673226e0,402264897,15645934820801882375
+f861b6fd-e93b-8ff9-2027-cc5d83f8e61a,286440500,3371720431935965177
+000d236b-7d7d-01fe-02d6-15b08fdf3d72,4231283889,4277909876444343486
+794be4b3-2d90-9d15-6d8f-2d2558a88487,1385610728,8164101991968993268
+25a47981-0063-32ed-2126-8d95486a3765,2039872678,15796724237815319178
+b0c7845f-8f84-d107-044d-9b5c266ceccc,1054845560,690749879170961731
+1585248f-aab3-f3ee-0f7d-2f4f284a8dbb,3817172800,12800720672509380177
+a50a5bc1-5974-023e-b4b8-b479ad897af6,1226523186,13949890541545463999
+d8ec6f76-8d5b-e9f0-40ea-cbec1f02d5d6,2799630974,9161955321014128119
+9a4ed613-c672-694c-90df-a19422e9d1d4,3510204384,12827178567433306245
+cd545fc9-5a4b-b52c-33c9-af68bd895abc,843778405,5520754649418153683
+2166c32e-63ac-21ef-e859-9a939b972d6e,687479872,13033762117648490837
+2104f395-665b-f634-631f-33b3665b31de,356075968,17241018409234059875
+6c81fcee-6a64-6cc3-ba1a-2074802058fa,2503952393,5396729105096849965
+b392cc6d-b67a-13c6-d703-2286341e1b6a,2142985737,15403093476688626875
+60767e39-c6f8-af20-1055-ac3855a487e6,2157412134,14049632653174381636
+00497c32-a1f5-e011-7aae-148cc81c0650,3028232170,1535679575626853221
+f86e6980-ac96-da5d-86a7-8573bcbd3412,2427498084,2039865388255738321
+60fbeee6-8a21-3ac5-a7cc-69adaea21b0e,903501508,9016690927923178213
+f6616e66-4a6d-7e6b-a8fc-3abb73685681,759044865,8239677269754903850
+15708c23-dba5-61c8-db63-93f5a68f4294,1087068301,9648794326165521937
+6e9a3bd7-d525-a4c1-c6a3-276ef0e7a933,2702231408,3134296304880245067
+78d7727c-957a-0ee4-9bce-a1406c05ebd2,2385076433,14021537423915006182
+21c44629-f7b8-61a4-4ce8-476a79eefc8e,1879251893,1214122039913191223
+ca1482ff-711f-df5d-4c49-c652e6c8462b,3511615758,12239320194955692317
+e6223eb9-01e4-a57b-3553-4c616dff881b,3409841656,12075787233017047293
+4e3ba9bc-209d-8058-2d49-b99ce3a9f1d7,2125485271,8910808261795384754
+ec7c8cac-13e1-6b49-f190-f1b100e886d6,3665148445,8482526939558982218
+25bb2840-db1e-f80d-1bd5-c30dee6a6bac,339763436,9767372069494452466
+4e2fd4dd-0aca-33eb-6e7c-040371d446c6,3865380322,5216650096801096168
+aa5fc986-b50a-1ea9-981a-0854cbaf87cf,2037740948,11243974822347522800
+64f0aa8e-a7e3-c200-72d8-de0bea886b54,2358275220,13789850115580277228
+28303681-d955-6ee2-9056-854ce9dc4d39,2254120757,13868808636453903507
+40009f03-9eef-d3e0-f3c4-6a6fa60bd2d6,3873469013,754239697777278614
+258814ad-9c1f-13af-8349-c35c99c5cdf5,37252671,15009608345077968591
+6df1685c-25dc-73fb-b048-c92daaf12d10,3259867007,9807748776817584333
+2545a0a3-0199-4dde-4c3f-673ae4796d85,1517239520,8279397195618795486
+08a637cc-b5f9-6c87-cf59-e99ec89f38b3,1275230312,984725738848356047
+c358db0f-1ef8-1947-ea0c-3250b75d462c,140443461,6257496288052164211
+15be7a82-a214-2fcc-3452-d5af7fd8c5f3,2405980849,3687150682427508138
+d9d6a4a9-d3de-5039-2d03-ba18b72bc348,2125834848,3606465012647049244
+a1c64b3b-3c5a-468c-b2a6-5c25db8d807f,2761641847,5053608623158109910
+694dda8b-7806-7954-7b65-6f22aee8ce82,864166783,3441631563741042184
+2ee967a1-38c4-9200-854a-aaa54c920c1f,340916972,4201335425720021288
+75f145e2-088a-6769-15e1-8c9b10f7152c,347934686,15093612968527860982
+30350db5-f785-9a75-b301-ab5e0801fab3,3548648819,15775494750169276088
+b16d249f-1838-5ada-d38d-86e890915576,3059008399,194277290151216151
+005a8d23-ef63-ee93-e2b4-9cd57ee8dbc3,2619021281,15684558119044077128
+25a3e1a7-8395-9b97-6e3e-bc67e460fee7,2291026217,9678221563374184130
+78e6b241-2395-d40c-228f-1df4e1019555,76986424,4837988238515519590
+9c2aa8e0-1453-5668-4583-2e0c0cc7dc90,938346315,128168532755385383
+a0a9c629-d4d0-627b-c0e2-78c68de5270d,1162247029,8950206420455253062
+30f17dd0-27b5-744f-c37f-70ac38127305,1494979901,6534912314138898384
+a11957a9-cdfa-962e-8fa2-7c11909d11a7,3007376215,11058671775456700970
+d3f271e4-9879-ffa0-2e2d-36e1ad2a4ab9,598765366,6521796415172411457
+64c28e83-5009-2ed5-ecee-782f10010c81,1291348439,16395306732913213787
+870975e5-be5a-fc90-d511-00e3f7e36d06,21947220,13304119288731364962
+254f0896-724d-cca1-263a-afe0ca2f4bf1,2372993131,7586179765007062827
+490c89cb-2e7b-dc22-0535-d404de1a1289,1944831301,1165704736683790124
+2a58f81e-00dc-fb39-17a2-3a0c403cd57b,2372671566,4270622975224133034
+08cda841-dc21-1e9f-b09a-4f258bed1995,1013495020,11797482052295529442
+bc8c1c11-7dee-7c3a-fabb-79f5b191c738,1543770841,13441976425150594391
+998be0c5-5115-5ecb-7964-792bb1d2cf19,1206839127,8494836869034646979
+8d38b390-b44f-3cb3-94f0-f50ef0b4c32d,340390090,18254576510025656360
+dfd90b7f-11e7-b474-fc47-88975407392b,778681153,10085092378027236608
+b90b209c-2501-45f5-2ce3-4331f04fdfa7,2259451001,8384865517418704347
+7164fbe4-b276-5b14-da51-7fa1af094f22,291145132,17270098365839404835
+e05fadf8-b605-aec5-295a-7f6b8dfa2660,1645964689,5161671490897900875
+10047f03-daa7-4f91-0e5d-9c79966a8c0b,761504441,11683946423274270933
+cede3fca-076f-e24e-fe3d-418804723275,3717765897,16873416600308217871
+48cd9a02-39c4-95f0-e221-c18951d76a92,4280526873,4374465841356742976
+f13c7aec-30cb-4e27-ac94-e699c0eae031,1034543359,17850574510196225137
+d6a9c48c-0193-b88e-a01b-364814fda0a9,3658169300,2789146366047885396
+cbc56a40-1be1-4a7f-b25f-e43a7bd92e96,3644380422,7631018140671294625
+da684606-45f1-580c-a225-2809d5bc641a,3987705544,15308592522457924077
+4565f433-c7c0-78ef-2531-d4f7987597c4,1379677279,11077580743170986606
+8db3f5ed-dcbd-4e0c-f6bf-8eb12137b3dd,1969606443,4198201007414560027
+e2345ed4-2a14-65d2-5c8e-074cd9afe1b6,1185343499,15418273485575000068
+8bcf2104-d689-0d49-16da-ff7e3c87182f,2928309557,8738918105287056270
+2a975f58-58a5-dd99-6c72-52da25b2bb93,1980023070,10367854829892983440
+b878d63d-ab8c-ef88-d705-4f61148195b9,2836568314,12175848524192997362
+3be512e3-856e-3f23-9bb4-9ee73e7a36d6,664497129,14195097787938103644
+2a1e976d-8e6c-c2d3-177c-925226c69b39,147760246,14439407451393087858
+168a989e-35ae-a33d-9efb-e919748f42a4,113728288,15139636054791514843
+df0e9d1c-6370-ad28-192c-4a977262e8d3,2650699247,14945292949309598018
+5204dad9-3e11-220a-69a1-a22a786f6e14,2777405777,15545655317263607401
+dfaa2c97-b86e-88b6-469c-58f2b293b9c4,1041490081,9021792061636223704
+9b8a2e10-a208-b33b-c962-f28fe22c6e44,2563964514,486892976018561279
+c738c1dc-c4ab-f256-a160-7a8bd4e615c4,2839689431,5417954922239922409
+e1e3158e-0811-abb7-0637-8b6dc9d0b091,1320504398,5384539181190052729
+ca6770d5-66ee-6c64-da37-d3f1b7bd4247,3659188522,2851018673410619663
+b9562713-5ad5-5559-5aaa-8cee287fa747,444594083,17779621220826807606
+5338a8b7-35e7-a0ab-59cd-e9bb81d8e514,2737661332,13276315296953221458
+88899226-bf4e-ffe4-2317-b021292c5818,2195500823,14587709272066113791
+f01e8daa-2056-5403-fec4-890342d5e26f,3259942145,2239595467757634573
+13031697-e810-520f-c289-9530d2f7185d,1969363092,8352533642687381555
+ecd3f02e-b312-1d20-d373-c5b5cd34b7ee,166204681,4547177556078537599
+27e7d4c9-7656-a17d-d8ae-0240b27237b8,385273720,1492184305663259899
+52accd35-9dd8-9fc7-1ef4-b1b4b4d056b5,2220173882,11707442300794455004
+a1a48e0d-4382-2a30-d0f6-d918444a0574,43746964,450256758916722746
+b1162f70-944f-cbc0-8f88-3695d3f2da1c,3003670653,14936763100042008418
+dd8f656d-c5c5-bca5-37a4-24c253c26c57,2728449778,1064796774396520917
+2fd16a41-49f9-8a17-b40b-aa9ca326b2f1,379717911,18424146333657690002
+dd7a7881-1480-bc55-bc14-8099c1987737,237751142,2660089135758791365
+3527fe0c-3018-1c8c-39e7-250601465c18,3960672852,7064510150344417
+b0713654-8780-43ba-b558-f4359f3f0b1b,932438129,17250959078336450621
+81a57e62-ab43-48c0-fa80-bb9ad2278890,3551382371,13238117796692813524
+dfb75c40-b377-dc1e-a829-1b6ba2190ffd,4204715031,18238840285537030702
+63b939dc-3061-b8ec-8ab7-c323171d72fe,2418949128,14577112006049614966
+e31361f1-d0b0-8ffb-d706-f2ace2d02962,27935666,9738944602543646413
+225274b7-2c66-d57e-3fb0-b5d1d3426172,2803097463,15206983080477747526
+8dd8bef9-fe36-1ccf-725a-a054f7dfddc1,1176553085,3714252617494615188
+bfbc4e07-3291-252c-e8a0-e2893eb421e9,2058037216,1290915441303835313
+f3b54a06-f1ab-7967-6755-e08566712ab8,2392737108,7164437169874854227
+f6afe4be-a553-939d-cdd5-c09f396131bd,1566578620,17098221241785392596
+9d3d4604-6e27-94ea-3c89-b23335de9d31,2910069072,11466988764447353524
+ba3d2f10-d248-43f7-d34c-e576129cac96,271478782,6042792040629532370
+795ae47e-398d-7e66-08a0-6cdd7a532fc0,594171812,7531607363507679078
+bf640b97-b3e1-f510-2ee2-bc90196dc37a,954848594,17008306075361399950
+df3dbb18-bddc-866a-787c-994f23ccde45,1832559859,17252980790160828328
+e8198bca-ea8b-0abf-4da0-882b2120c712,2990951740,12045301201616116248
+335894d9-8847-6e04-c8fd-fa0f08e52a0b,3589378920,859135817405569177
+5ab8bae1-6e21-3114-94d2-c1fd57bc1da4,3214832793,4482621450757938174
+8d8d4dc7-02e2-26f2-4d4f-43d5da3c9a11,3296427774,4835989998478070841
+16491c35-0c91-a642-6c07-4587fe7d7222,2382720918,3327572690316944418
+13fafedb-778b-095b-f5d3-597b9d853e1e,1303389062,13713152254423048469
+389c5da8-510b-fb00-c843-09f22e28504a,1759813339,2740941605837481395
+ba376fcf-ce80-78c8-e96c-0bc5ffc5c422,2758982571,18002965348473849180
+09ad9e4b-b1ca-0859-a385-f27a77c6683b,1568895841,6306370320867363158
+541b236d-199c-5372-827e-322551e77dcf,791247758,10084153827933820625
+5323aee4-681f-d98c-ac68-59cf88715468,3647234473,16541737984852370018
+cf516f29-2b04-6142-24d1-a6eb2e9da041,4189905354,16694506980073380145
+80aeb877-9dee-0a20-4e66-80310dbb1e9b,742074911,13558127940888903710
+177ea608-b249-c00f-60a4-522755b9b32b,867377581,13750844910726962811
+a09a520f-b123-786b-7439-1b87be6cb2aa,372399056,6745555972684528328
+58cea0fb-0259-efa2-6bf6-2ecccc40d1ed,899511480,11299189455592123727
+eea53878-b55e-fc9d-2a5b-2d0e8169928a,3686800092,4354262871413138199
+e6bb5529-a001-f7c7-c212-de05d78be6c3,2474041323,3221647961753703458
+6f8aa857-1415-a1db-6c3f-0143fd63e919,3087683794,5760721228570603083
+f54ee838-241a-5cd2-3771-aaf261ac39fb,2222294110,10101515459525667826
+e2cb26ed-a494-2e8a-5fd9-e4405a5cc920,347610640,7356341177975744063
+98d4ce26-c7e0-78d9-ad67-180e242a7a47,1732855133,16059752832612357749
+05809b35-4c59-9aa8-dc6e-34a988433b46,80165629,7092807172366422971
+2db401e5-bdf9-6e3c-d2cb-2cf555d761a0,3271869218,15735238218281995814
+5b9ec187-bf86-5533-0b1d-78e19779ad97,2851552510,13142428911351862710
+f38690da-2fb7-a6c5-b698-a659a3b4b86a,3330526108,8760634831784551177
+4341dbd4-5516-eb4e-1360-f046f3d46cb3,3980734442,6516586972687137401
+b0d313a3-52a1-14d7-7356-2d89c0e0e5f3,1887121027,13253838017010346537
+9ef07b10-8d30-4840-0ccd-4264e2c8cdfa,959736798,15000153173523422434
+ea66a37b-cf2e-7c43-2d4b-cd5c48440d94,388095387,10037902341556470601
+6c84b08d-47f5-3f2b-3c98-55c76fb9d0f5,4233858863,158512141832668252
+124fb5ec-ebe3-a4c3-0545-92f658aba452,3561134776,16923749808189433022
+a70169ea-bcac-5ba3-0f69-8d977487c4a0,2781112500,11921546338560050192
+5f14596f-f7cc-41f2-a10e-f004abaebfe9,2550986942,12039830209725839819
+00010b64-54ce-6fb7-ff64-863e1e81e2e9,207298238,17087443961309369494
+6aa58bf3-a461-0322-5314-b04ed7130709,1706025596,7719471647417678224
+180eec38-457e-df83-4695-6530b12412aa,2814732613,9296509703304157438
+6c187c42-bf5f-c755-6e14-8fffd180ffcf,3692948807,15330819807125738356
+4c7dc312-667f-3dac-7bff-5c4ef8939f71,3055247246,7584900873356068593
+a09756d4-c1f3-8159-2a00-5a980b121de4,3297743209,1209285527943300829
+e2639c7d-4319-d5f2-9889-335b8b84c922,617500749,7755744899439425678
+ebb3dbea-5d1d-172b-5387-652a9e8d049a,2310063904,11656737447951141868
+2997c825-1afe-5f10-57ea-f323fad7b71f,1362582818,6814717724874285512
+fe5a30a4-d726-606f-ea91-a407e51dedd1,1735419953,4608520855938899673
+92bf928a-aaf2-f37b-fd81-2c492f608c61,303421260,5290576498253426245
+6976adf5-deea-65b7-3b52-53b3b045c042,143958355,1545500408911110870
+305097af-38e2-3aac-4500-1e97b70af3b8,601618261,9645185523117252118
+e4c00e45-5a6e-cefd-e3ce-ededacb8f966,304614980,6225605219869187797
+471688d5-1a34-9d15-bc43-9a3e5c384a0b,2259520080,12514672381553112787
+8a281106-842b-f7c0-a4e4-f1b101a4a2db,1717846527,9272252874901055872
+aaddf7a1-de01-2044-dc3c-ad71d8a67106,4248659156,7160298210164119230
+a4bbae4d-4c53-376c-0948-b8c7fa894876,236008588,12527418072081610885
+0899f93e-801a-4cb8-fbdc-e2c548925580,2755843664,7205968413809017124
+31db88bc-4efe-0340-0d2a-51141fe787ef,607430662,15900553403399876189
+6acb0a01-5771-ba99-f41d-fd0195843d47,3703473947,290110260594383930
+cce5dff1-2794-0a76-5a37-38720333b739,419719206,2369601435911073400
+f7b18827-f004-305f-db11-03f5e07cce23,3418827375,10736930431272236410
+148105ec-91d5-4cb5-c9b1-036273187221,1981269262,1832902450911952519
+bfd05d0b-2a59-9608-5450-c737ded5050a,4102065141,9542747978882575117
+0e26b4bb-d7f5-2bd9-b36c-0820a7ce178a,61164098,10914670318878476165
+c37e5697-4e2b-a3f8-bcd9-308b008e89e5,723005636,9454105868926207843
+8220d0d7-5e9c-5861-e357-be050dd08ed9,257952342,1806409673803187874
+1b07950a-6d10-6327-7de0-3e70d8acc4de,3631099885,16733847797668410617
+ebaa0f88-8cbd-a6c8-89e3-dfa3f804dc77,1114483929,12988218612737135406
+e9932620-a9b8-aaf7-5073-aee8ea36ee0a,3252804671,13424376444762315619
+c48dfd30-88cf-a086-949d-2e67d566baca,291223370,17022780533356310564
+6af757c4-c5c8-8832-306b-d02e9101c80f,1251183819,9186530668979538485
+16607934-645a-00d5-5acf-74cbae011371,2067321990,11768016339852210442
+b780c43f-49a7-d75f-5fd9-7ba6a58af84d,1004384817,7298854875069248210
+9e6ec4b8-bc67-5c67-5db2-417f6bef6d05,4072462944,13202150387163186916
+4836dac3-4d04-27cf-7553-1061fea2fb94,1763452478,4223205864215753433
+03f465fd-8be0-68ee-75cf-be0a48449059,3509080596,2281841733190719388
+9c8ee1f0-8e08-f90c-0d66-49152ebcb6f8,3163778994,5570658587415663731
+53cf3655-dbcf-7770-64cc-0abcd867fd9d,4196329996,16193044639497353743
+87fbc69e-2e3b-38ce-5115-602685c35290,4029715818,5278946012889028433
+b5d3afd1-4d90-815f-8fd8-43c41e867c3d,4180943159,11666827060524085424
+5e77ee34-7f96-b3af-4594-cdc58807fb93,3301938498,12712397911051073326
+eb674020-850e-9f0c-8940-98a09c4f537e,2363246090,6123169549650346966
+9c6d9be4-d9a0-9cc5-8a83-021c8ec977cc,3479820202,9165676839177525760
+629d765c-31e0-deb9-e59d-556e9792e93e,1884953702,1551405254726558102
+68bb3c48-12f7-d9f6-bdf8-4079dff95c3d,3286083352,8804682385315339312
+23e12ab9-c53b-8fe7-7ae6-31a5ab2cfe8b,1585141002,5083059825714916274
+b5a3efec-2b2c-9c42-151f-8469640a123c,51964565,16214032726652893057
+be8d0b6f-5d55-9b40-4eed-4cd7f5c79333,2493012318,4328767365360304141
+ffce2424-1ccd-14ff-4dca-d66a2e79a2e5,1975411698,4974818216364575956
+9000b186-7888-c574-6650-0bcef8821b87,3354256158,4230102947201829501
+1da29a2a-c5d5-8ead-140c-70bf35ac59d3,3802618119,6636322691881327183
+516cb20b-f2bf-1018-dcc2-d030f7538020,2526879570,15679427093695382748
+05417843-a98b-4303-3ccd-bb665382c869,1504143980,10954998018892208147
+1242b07d-9185-bd04-f40e-b5764913f1c3,303633469,15472709766348815785
+6385ba4e-c0a0-9c5a-9914-7461fe6213a7,1945248589,5710831092240728418
+36225234-4f32-3ef5-4ef4-23f60e15cfa4,1676900230,17526613212490623840
+f7ebf7b5-26ae-f26a-1efa-f577393ccc89,363173877,2726642474577089286
+414876ec-01dd-4c92-3a11-b679ec37646f,2119345906,321993747478622740
+f5b1cc18-5e4b-1d86-e310-c23d1ccf660a,1123779469,4226956730452959030
+fc52feee-1d91-7084-9b30-46df7eb90864,1457842686,6376738367383930245
+8ba90a63-9b9d-2800-8f1d-d367c379bf8d,366972107,4510374783426939645
+4916d40a-224f-a8f0-2257-614ec6769d20,3897420988,1606295793796695407
+16c767b8-06bf-884a-8a1c-0baf0cafa0c9,623545362,8172145876458429466
+dbced2af-871f-fc0a-30bd-8f774f3a5970,1472431653,488128446115293406
+ba9b8020-8e3c-2e37-e879-ace9294ceca0,2843471924,16710556025252550504
+fe82d7a3-f185-8aa3-919a-b0a3da76c766,1674690942,11588666497680966831
+7928f614-9570-e21a-0eb2-5914b0bda8b2,3915198993,8873098276505050810
+1f1b6721-38b2-ed63-38cc-2d11f8623712,3665308574,17410656662997777266
+d85aff4a-64e0-ecfb-5621-fdb45ed79622,2218910888,3246588896175921651
+6ea94395-899d-74c1-e4a8-fb66537f7b3f,3479231184,17096625493875695860
+c82e2260-df43-a92e-d89b-ae92b9a49183,259903728,11599763528267395690
+e9b121e2-66a8-9b9a-9d28-2c7fd2320086,2977738290,18089706502637805900
+4a9fb024-4c37-f2e0-876c-495037cd915e,357938380,3143323795873490030
+6eebc4f6-08ed-6d85-647e-ca845f1fe79a,2486187556,16565208120283338879
+ed9c0257-8f41-2062-858b-67b78e03a47f,3522715420,12176739436817935292
+a9438cdf-2105-5fe7-4302-30a896de976e,2081632019,13954949417411633052
+015e6516-3d4a-5edb-741c-a233fc5b113b,1701510826,3465703376036553234
+c0ac1127-d9e0-bcf0-6372-3c650033b37a,44262705,4079618008654286752
+b493ebc0-0ff3-c2b6-d9da-9d0bfceb9e70,2782263335,16426876036725969320
+3398a0e3-d79d-6fc6-f0e7-5e7da48504fc,3501545984,11185906447315688855
+9474581b-e420-5333-5c76-49a1c25a015f,1119988570,5372648693212738251
+7912ab95-86f0-5ce6-5f53-91dab756e258,2990204674,3945266725059057673
+01214657-9bed-d7d3-676e-b26575b8e46f,3898613634,12153259125199067303
+6dd035cb-e632-4dbe-a8b1-9166ee7ecafb,2977257871,5905229324760350524
+1532d2f9-94c4-5f68-0dbc-aa51a57e2d09,1167011432,1929667412106431968
+1c1a338f-d0df-4a11-e786-9e0b943adcec,1340431283,15394978657291292113
+43847701-6adc-0198-ba63-c73d6345df83,2049648133,6690889232977470291
+e907194e-9136-9ed1-1555-2ff610ccd3ac,2929322050,13053566773475536145
+e59ca6ec-40a4-bfa0-8185-138cbc4b482b,450852856,4279146004558220521
+993822e9-5012-d1a7-05e8-44534aba29eb,3754974247,339426166606818789
+455c2da9-e8a1-a469-f0dc-b7faad2ca8a1,3355319557,7290792575706399576
+98e3e4d2-8879-94c3-5931-52c2db741c17,2802731398,15409280672856557313
+0db9d3e7-bd4a-a233-3855-4329b7b01d1e,1283820604,9100216264612895480
+ce8578a4-c4b3-8d83-7cf1-5e6f1b32dd95,3382674670,15638080084512988026
+240015c1-e7a2-9c6f-cd78-90e6adbc2d57,1710988446,2903299210616389784
+2d8e5340-0008-0cd9-0151-855e73a0cf7c,2925744416,11987826332344505477
+d588f08d-c12b-cfd2-c2d4-40eacde90ed3,2998647036,1160613294339332009
+7464296a-bc36-caf0-b374-64d2ec807758,676133896,10485498724477146459
+83deb2f4-27f7-dab5-10d3-698e16ce6b25,1916151468,3931878102883800358
+1bf023ad-1b9e-b992-bd7c-2625eae8938c,4139754364,9219729035592503546
+4b2dd6d6-b71f-1ee9-1c85-9b076494ddb5,3504223861,15446459001252108080
+9c1e6f2a-fabe-4e7d-9fb0-568a22282665,1607669781,11415639723752651161
+bf702517-d49c-c026-d7d5-a2562fc5e552,2906063274,15260013221527863918
+516e2267-02cf-49e0-41fc-8a28eee9e819,3809326557,5135979802809384
+27dfb394-3965-f67c-98e2-98d44d2e5b29,1488467370,4296706532355430632
+91ef3d35-e471-732a-44fb-90f6a2ce8124,2891007229,10745578795368732177
+9702ae19-eb84-e658-e107-3f17282b3d8f,2865257775,16249210612761236892
+a14fd374-a46b-373f-2744-f592f467bfa4,1728516097,5648365279835034113
+e111f390-cc26-a30d-d700-427430e6b2b8,109271220,11197017198544496492
+bdb75ad1-9280-ba52-6373-4edc1461b429,841410307,3736622074947630183
+e443fdb6-9881-8f27-71c1-d738ade904ec,3075330250,7550386459447477858
+8f83900a-016c-786f-6c60-26504b17bac6,1928322966,16503833438799374761
+0250cdd0-7905-60f9-3996-53b012b7ab34,1759638010,10545954347854055334
+50835309-4f8b-d62e-5f91-5d0f0f2e48b8,877625360,12308394112739762172
+18296f2d-7a86-0e0b-aec0-792323a16063,292218846,11938964921537226520
+ce072bd7-c415-dee2-71ff-281ac19e1f64,4272972364,12162785348396396959
+51bfb3af-f77e-188a-2037-aa5e37a4cad5,3561470256,15597686855215149600
+4b164bc5-1ad2-bc10-4514-23e64c0080b2,1479136176,3987966782306041699
+c5c6a81d-3a35-eba8-fa79-d75772bf51d2,3384253687,6865431886756832819
+9861ebbd-9e01-ea62-1f0e-3e34c514e913,1703326887,88169948720295694
+e3ad394c-e3db-83ec-7abf-c3001eca017d,1546767628,2959690738093035071
+4eec4b01-41aa-d20a-4e4f-e288aaa7fcac,1113817007,12397648209052806624
+52de0c5d-718a-8cb0-98cf-0239d2fe5a8f,3531744810,6299289748201751229
+1a883793-dd89-d2f7-6d89-f2d053747d99,470239967,14926894682292580718
+41a9e2e7-0283-8c87-36d5-fa7565570421,3684443686,17902241553130167690
+16935d4c-38f6-1754-c116-5d59ec7f3af4,812888009,1563374306472498565
+39b3ef57-02af-0498-c43b-7f5c5615bfa3,2075287775,11846377555580655564
+48a4d3b7-21fe-c71d-8c76-aa6e9858ffe6,775581611,10311927944185306646
+0b5adc1b-85ee-503e-d70c-00db79b7eb8e,1775970388,3555155002370739714
+456e4da7-43f4-1947-348e-32cdebfba6bd,2169637327,4479921282631510860
+7b8c198c-6b48-bee7-6d89-cba1235dee7e,1702669803,15593495616982860932
+baf208ba-c4df-8cc9-cf57-748458705cc2,2763161540,6767972423274035631
+7ec61dab-d4f4-863d-5a25-be37b4281dea,2394778294,9193714607333745209
+4aa03ef8-9d84-13ac-60e0-b7c233650850,3335846043,14911151345053154470
+efce01ce-737c-2772-8378-9fdd459b7da1,1629060253,11177782393716946267
+0df845d2-ed2b-627d-d076-f4eae368e75b,2766254717,9642368486986839553
+7df3a769-cf42-8b70-5581-dae328a88d72,4146556377,15641775985292063449
+20c1d527-c0ce-3dbc-0144-60b3027d582e,244460816,561559520133086805
+41e1fdcf-da19-96e6-9471-b10881a712e6,1748246044,14665413317391137179
+e7d3da8f-b9a8-dcb8-2730-6bd1695622fe,3261313651,8652091184486957739
+507c7ab4-2dfd-6e15-f08a-bba9aba8177a,3796459538,9528705176787603176
+4bc17551-8688-deac-5433-5810d6c7a3b9,2555184470,12484079429785461482
+f6dab601-8f0a-a1e2-c911-55ae19119105,3033271237,15128061326851929498
+56ead35a-97ff-b97c-59b6-61d664a9201a,2439896582,5969507748427466736
+624ec9a4-fbe1-e2fc-8d73-ca0012e5bcd5,3389758565,1791345976720230163
+d414533c-e68e-e9cc-4a4f-3839c0f40234,4134884195,10364451927165613302
+2c2b68e0-6618-65fe-21fd-93677566abbf,3758032774,7531328918444681193
+c15510e7-edc5-75f6-aef7-e7c85c316f2a,1226004934,7176727837445111838
+66d5330c-8ba3-1c6f-623f-90cbdd2289ac,3785038133,1403659006165113937
+b4d75375-c49c-c06e-adfc-e8aa66a35350,3956314481,16755427527242535236
+f755004a-07af-3ce4-9fea-7b4dc4690909,976341104,9769609903510369614
+9f2aa938-b517-2ef5-a38b-ae456263dd84,3045339227,6921190292228032567
+889278d9-fbb0-6473-af83-dd1eb8750601,2764703866,11228663353504713762
+9ce89b5b-71ff-1805-7873-049ae4d6772e,3088553652,8460375437203652228
+91220d46-cb57-59d7-827a-71b38ff589a9,180796859,13487969032411914684
+e3b05e5d-2009-b0e1-1fd8-8cc92a41e45b,3539587038,2539035096184636393
+88f4865b-59a7-9dc3-d558-0d0e4a66623f,2887244833,8320584885610700772
+75b2d4cd-0b16-e331-d765-7e2bcce05a3e,2880658836,4822458685677380522
+10fcb037-80e5-b87e-e97f-d1253280c01a,1964135886,13787711680367387632
+9214ec65-2d2c-acc3-7856-c2c95d9971b1,720225457,12198503895805839717
+0f7eab0e-f591-43f5-4f6c-0a515a4f99ee,2540303007,15621852749846319540
+513ea044-59fe-b9e9-4625-2c794edc63b0,3252252300,11843294236973767390
+41fcc9c2-7213-06c6-6fd2-f362a7daa701,1166180798,4498997452381144373
+ff420ab1-bf59-683e-19f7-982984fddc1b,4038125438,3594690653897394965
+527a2e00-6536-a5be-cfb2-fc5054f806f3,443698048,10780767068701631678
+daaa1d98-a910-df20-1aa9-110bcaf28a53,15095839,17583330730090605113
+5d564cfc-4b62-b021-f2af-7e4c56348fb9,1308041551,13689753504425704339
+bf697a96-418c-0adc-752a-ceb2b558e211,946134908,14017488570071998041
+5b74c1bf-a618-602e-30f5-7d7164026b5f,3791110842,3322831154526292105
+2bdd5c4d-59f5-b39d-9317-4a6e42ea9d6f,4186110984,14364602722723429317
+de72ef13-4173-75b2-6462-085fdb5bea03,1448205287,11807779918438234492
+ab5a9187-6b8a-a031-4e85-53f0aab73442,2767443543,5265643137849852646
+54fb79ae-682f-eece-29f7-68bd85ee84d6,1541826280,10902580414352878420
+639d5fc8-0988-558d-6fc3-72fd2a66809a,1617308217,17550374833741252703
+ddf3f975-b5e6-71c4-41b4-2a8de00cde00,948063862,9862688940102663727
+242d582b-e4c5-53c4-4069-d476ed0261b6,2912059617,18356125119052428170
+054e0e3e-bcc9-85b1-8724-ce6a8f6e57cc,1861532369,1348400798176800894
+8cd412d6-5e4b-5d70-f1d8-0932e28284ca,779531211,16038020124353929043
+62e9b269-c670-b43b-4f03-ffcd62213cdc,908270008,4276527834781155815
+98c1b1ea-bb37-228d-dac6-530a7bfdd0dd,1385215028,8388127172939346283
+bfd35119-c806-6dac-d2a5-98a06a368ae2,4214806528,1282030737740469732
+47ee024f-ec73-6916-14f9-5f578a35240e,3923243080,3280615677599880431
+2bde52c1-55d2-eaa3-6747-9d3adb31d253,4100926805,1462779903939201158
+42d0d98b-bf59-a8b5-f723-f219f37a4423,2468400835,5595694595270559796
+071462b7-ffa7-c692-7fb4-deb734230433,2076131744,2405086688895554702
+6e394485-cb33-dff3-d29c-0b54389507f2,2966664342,14200457548979375445
+88defbf4-e19f-44e4-6a2a-13aaafae2a46,1721008182,6618610189595547483
+2d23d8f9-8fed-26f0-0a0c-d1c3a6279987,2358419857,2808145331855085160
+2dd2ceeb-ad1a-7913-96c6-d3fe82962cba,1998861681,17485876450326839555
+a1a3d81b-c91b-a020-9ffc-39d305203392,2822380690,11294619993661849238
+8acd59b4-c4f5-24b8-3085-5d844081c651,531465971,6728486917536117127
+007b06dd-cbe2-d714-b5a1-c7389e66710c,316226305,15959674016871782120
+22cf753d-9976-bc7f-1f24-d725fad64d98,2492955075,2666752126407553048
+c6e85811-eeee-33b1-3241-5449343b8627,3765995657,17240891496462198864
+1ce39029-ea64-9e5b-d988-cbc1587ad94b,1896817218,18386223390072563022
+577b8df7-db2c-4b22-b273-b376d295dbed,976109312,14601592086986698199
+a466e229-5d25-284c-f197-f36acb01c3a5,21702143,964712734681352953
+94cf22fe-f0d6-aaee-8e6b-66fc58cecf51,2049858090,1844661271290641909
+62e50024-8afa-df62-6913-72286bef2c90,2985400948,11205575767778138968
+0ecdde0c-f938-02a3-91fe-6837bf3bd9f3,3063397864,5604560333043763434
+b9e732bc-ea7b-5e0b-7f33-46112bde88f2,2170349734,325241799010476919
+da15c07a-8df6-c37b-ee72-281278f34df6,396268977,7695435858075231214
+d975a344-7c34-26b9-39b7-5e917483b5dd,4262481261,9783978434809894472
+9554674f-53f1-8dee-e785-7244482cfea1,3788324267,16247355423603652422
+15bacd1f-8cba-2e38-4b00-013eac039b90,1036819595,4919603220134342131
+34949491-acc9-66bb-5384-b125b6880004,3303954145,18046154818336094789
+9ae56646-55a2-9718-1f38-4554d97c1fed,2408076975,11238223556222461315
+53255b11-bd20-74ac-efee-0ea6bbb51de9,111844290,14220427065966372936
+a5c3a570-81ed-2ef6-ae86-f97b008dba47,261823187,11830366996587861094
+2bbc7b17-bc61-9e72-1dde-4899a051dfec,2878927724,13801187407864931469
+3b52891d-4d87-feba-d86a-bcea6da72c91,244411787,5054200383425488715
+a467591a-5351-6209-caf3-203d470a01c6,419618556,15042229885765778530
+307ad023-1e37-6ed2-5454-ee68b17a8ab0,1734175185,835482691252523662
+5b738d66-e48e-ed59-c03c-5788e868831b,146349273,9344305247222724988
+d52a0dbe-23c3-90d8-d2ee-5c9a5cacabdc,3289439382,4162099267577220899
+2332d571-5c2b-6582-5eca-c0df052e8d53,366562667,1945106912612143616
+c5ae51e3-6eee-700d-27da-0192b797550d,1672968598,14596857537959940661
+2d09b76f-e41f-44d8-d1ff-8f2ecd6157f2,1909705624,2107948535516034746
+eed70bd6-048e-3cb4-a2d2-a4cf2ca48b60,468121564,5342162537605792104
+20d84814-04bc-3098-b94f-e84b863853b4,1049293854,7212946088891359868
+d608f004-d4bf-1c42-9d7f-f6ad07128d9d,1075511147,16008676121763485132
+e083adbd-3221-f4d6-07b0-bc84f625e0ff,550466892,12728093121717487922
+a0b072bd-0971-9984-d204-7b4697261c25,937364213,13870199161671098912
+995f0d52-781a-27c2-6bf8-d82566286fa6,3639938605,10759102747534585995
+3d318195-9475-5023-abe0-fbfbb0e61e70,1842205643,6891242976245818402
+502ad4d0-6bd4-f161-236e-573ed29c59ef,1615408622,13715282160220673546
+5d246f29-ec7e-e267-8c3a-53bd73529309,1652700656,13982252972736580370
+a6858bbd-2082-fd64-b3a8-92f16dbc7a66,1738897413,17933325255107980210
+8cf7b27c-2976-e933-03b9-ba4586baa50f,3241308754,3622741271935671272
+fcbb79e2-d974-e730-661f-2879208801b4,3834299634,9415265498033096893
+0100ecef-6d37-40ab-ae51-83398c8d004c,4060368899,6362418689724535441
+1192ec38-f964-9eac-af04-5d0dc42c9de6,643785965,8309101453760998601
+34b4cbda-5a7d-01d6-818a-ea5797677334,1972189643,1360881062914918277
+ad35e26f-d3d7-146a-ad52-79ebcebfade4,4201451758,15679302859787580926
+f38d9aa8-bea3-6fd1-d191-e6813e06d0ed,2435435518,2777386743956490100
+81816e73-3740-17a3-e651-bad7d7d562aa,3083125468,15216351333020602894
+63fab73f-5603-d855-9574-5ea42a00ec2c,3559947902,12906130226093021608
+bced9b6d-273d-3a88-8b3d-989cfb2b7b35,183754656,14292952113006504432
+de47eb32-8a1d-7bbd-da16-d94fab841dbc,4270540759,17638248318043925501
+91cd90f4-420e-e381-923f-290feac9660c,3688567712,2569215595746942164
+b1c2fe1b-8f64-5c3a-7717-71b8f4e476d0,1816539096,3748666977040944834
+d6f0d353-0735-a028-7fb3-93b58c158d2e,1549078777,17391636986497453782
+26de246c-c16a-a794-8546-0d45fede97f2,391639457,4048591932612128939
+b04d0bd3-5ce6-8442-d2fb-198087d449af,1496385109,6218374845434417765
+09912a00-ac55-0680-8c60-89d3decca2b0,2990425974,5978249373037670630
+12c34444-9d80-cef5-2e78-7c07366a29bf,1634800036,17496909002180824049
+7c89ad98-f941-8abd-d188-40f1e33d4a7b,2770558622,311453904501177991
+61e47647-7f78-389a-ea87-0a859b72638e,2421446885,4931339126746635447
+6e725bd1-06bb-1c20-e178-cc1cb63814cc,3888416744,5555284618704002570
+742abcac-020b-af22-6540-facd52d8a9f9,273758713,4742766040436540847
+783c63a7-0310-e611-d31f-e9d51d8d420d,2404287501,15386190696190856042
+78d997e8-5e69-b1cb-7bd6-b361bd5a100c,2355429652,4031781637641782938
+67f6366a-1b9f-dcf7-41c6-875ae59dadf7,1151604223,3265940062020700652
+42f8baaf-35dc-029b-ceb9-3bfbc3a32193,3052567895,8827174844895950878
+3fe16e86-6b25-b90b-7faa-ac9efadaf2f5,3270669505,2404145140797317981
+edcc9f64-65f0-4000-3b31-0f7584f7cc5a,1052963437,3759548774840266490
+133e54d2-c9b4-45b9-acb1-67f5c641433a,462197134,10306064945287357538
+5e74793a-1574-4411-c9f0-298beb865d62,3022752187,5515609983384046181
+e53493e6-ba5a-fe46-bf50-44767efbbe70,2209245264,6210093572045028110
+d1886b3f-dec8-17f0-80a2-dc60929779e8,4086620663,3713485062411755703
+28f8b6d6-9d39-67cc-19d7-7b1af2915108,2335626272,2851541049816746752
+8ab529e8-8ac8-668f-7c47-c36c5fca0bd6,268734931,11490761836878121239
+6476a051-e6b8-add7-a34d-ecd96021ef85,3632962202,10825140199117764283
+7900d5d9-a68c-855d-be83-1be2977761cb,2053432678,10787075570533808971
+78bc0a6e-4e2b-5266-88ea-9a1dbe9b808c,1775997119,6766756557679070352
+556efd53-43ec-1346-741f-ea76ff1aa248,1160517018,6812086814466212494
+d37f0cff-bea9-4795-9fd7-232366cb20b8,3099570392,17208654896516473814
+1ac4c02d-1d5c-ac1d-c614-996d97bb5f5c,3787794393,16846468324313164170
+c147ec9d-3449-92ab-3450-1a5f8bdb710c,1254060691,1783933595959629020
+a374f988-9a6d-4376-dbe2-f2c0853c9e6f,594738818,17599323804603597489
+07c2ea94-102a-a3b4-3401-e18409808db7,3284889963,11099892791196548118
+8fde3b65-691a-fb72-cedb-94c95a193bbd,1370624922,7484494608281503967
+7fb81d81-fb84-6214-1ff3-405eb7ef3993,790039801,3888806930476810100
+20b42918-7897-1695-19c4-0bae507094d9,904730181,15834195034875904902
+6c7fc0b0-55d5-ee3c-d46b-a67db46487e5,1552099024,4872338253045004078
+88f39ef1-70e0-ecc4-c20c-9d357d2368d1,2096743212,2330404346241974975
+01497d83-400e-e31a-21b9-a1be91e8c42e,1870865328,10076731846260280209
+4ef6bf58-4133-a3e2-1a2d-773c3eb200a5,510067278,12612237299909603138
+1f976f50-4f1b-2ae4-217f-d781100d07b0,3346237433,5062126440811596294
+e4e27c7f-d59d-81a0-8915-b1270d70f425,286759850,3052515713653201943
+cf450dc2-cb4d-7e3f-2cc9-8755b1c57688,1983069363,10365164457564186471
+21346790-1259-0e30-7b24-fd71839c8cdb,2943117849,613277297139399670
+490a4b9a-d0e6-daaa-e280-639b0881ac16,1738933187,11403078555861928663
+69868d88-2de1-6206-5276-63c5ef79f222,345579669,11379931318821687279
+ae0f6aa6-3a86-4450-02b7-d815674d83fa,3032754187,16695326935891341365
+0330c1d7-5e4d-aff7-e8de-3b487db581aa,3633915292,3105620477548047558
+5cf7ccd1-0ddf-9768-20f7-160118bf662d,2384052057,17750878293055840815
+efa0ee4e-1be5-f61d-5aec-63c32ef7f292,2106490595,1733352443145713215
+52617907-43f9-1732-1831-0bbaf0769041,2876611259,3320913303547281655
+fb0f3d40-664b-b60e-98c0-8d143da27afb,1437218734,8380000993907616503
+b547bb9d-0501-8659-ee45-0cbe8f1f9658,1588176564,7409044725504173330
+5a15fb97-5d56-25dc-4112-22e9b0c66b55,1594491092,4811822436326768009
+e76c10bd-f8a4-8926-afd1-286eac96f255,890590906,5469788158562931520
+6fcf0b6c-94a4-97e9-7f66-fdb1244c0ac0,572823996,1357035066668389045
+f1660282-d17a-2136-b8b2-ec27a9a4a620,4129667104,12121995545885572028
+4ee3a8d0-93d8-6bb4-e158-d432727be31f,895283098,10719584727681849297
+5d7f0e26-84ed-e474-3aca-ceb6d784c3b7,1349212954,5591448401077552583
+350dccba-ff00-cbce-bfe0-bf880c574775,2480307855,9731101274860707835
+943ef9e1-afc5-70dc-3daf-12b1777dd051,2027038613,13100735603841224299
+bd312ac2-57b7-1082-8ee6-5dbc969ea009,2256767653,175720657769554052
+7984a706-3503-42ef-1d00-c968ab77adb2,2340822001,4565758735204428495
+2ab9bbac-0284-38de-66b9-e3d555d4fe6c,2105599780,12738230956330858818
+3ab0e987-4f7f-a296-b78e-eedc478fbcbf,4217875966,15551612091677035884
+6ed77ac9-a435-e13e-e414-24dcfcb72550,3266705673,8879612541213862569
+985af112-017c-2add-d94a-bff7f252095e,4066334814,13062357444268229827
+3c2e8cf0-48a1-21d3-f362-6a2772cb672f,1602023674,14328979760960435447
+71fff9de-aee8-1406-4f45-c31779e92e4f,2875120949,3659829906786553773
+33b9ba7b-9463-7059-4bd3-fc02e8c0818f,2126801079,10860457998672592821
+faa9551f-d95f-339f-90f5-70a8c5b23b47,4230382731,18038917185032376321
+ed52428f-040b-ee72-fe57-82fa16faf3d6,1342580698,3208221733988854541
+e75f5697-9284-888b-1399-7063779a2264,3862899071,16485552144617771350
+ff614e6c-ad30-d929-8e8a-98d1158b2592,3528739725,7201653160465879946
+14df913e-27d6-8a44-aaf3-782666807f4b,1061715313,3781258171851453242
+6c37eccd-0188-7972-bba5-cd92967b700a,3508094109,15768441201172853635
+7a7b547b-328a-807e-f8ff-f93a75002e01,1196900579,2092923457345180076
+cfe1fd12-3016-28d2-6e8b-e93d31112bd5,174054742,6096323777052862454
+86f67c86-fea9-3bc5-682b-2c02b139a57a,4234401375,7704221573979853906
+3f7f6ac1-2578-17bf-554f-01974d4cf5ef,3821424848,8714916819615146714
+1503b16a-50e7-517d-23d8-5d76f80a36d8,3269969615,6027943667374848068
+7ea2fba7-fea5-76d6-5084-6f79161c47a1,1901898791,9759324986989004420
+cdbb5a97-6f2d-7bea-14c0-e5f15042fdf2,3840611420,3427778664308604536
+695c4d86-db1a-4a12-4235-e19f64b20f4c,2252514575,825276367298772858
+39f8b1c0-7b86-cea9-ddba-9ccc080f2367,801118834,7335384055782864054
+ca2fdba1-d5a2-aecd-3c60-e933606427cd,1130916,16069654332980505825
+23b064f4-c84e-f064-af49-e26247db7f1f,2301573575,4206446704810789268
+df174e43-1a90-533b-236a-335ea20958ae,3223503943,4728464705246509299
+8d9ff0e9-1711-9aab-8c94-2d76af4e66cd,342613058,14913256928696870615
+da57c55a-87bb-6c9b-dc2b-97f7c207f875,663933300,11333946841897819293
+cd67bd31-b1b9-ca75-bd44-5042dc1ab071,3414722885,5150228723658615260
+b5b3f9ee-6540-ac8c-ab4e-52307bd6cd91,2564711387,464110756728664218
+bdf8a78f-b72b-8400-6053-35ec681253a6,2480380333,12372714106133942363
+a9d7466e-bdd0-e4e1-bcda-ebbeb1f3f159,3835090927,17715524371900221439
+7094247b-ebf1-a0e5-703f-03231ee76653,3319015856,7232561327500798451
+ad18ee12-bd77-bb16-fd95-1b3856a5acd6,1820649380,5362592199961774151
+9fb96402-4e03-6da4-e0ac-a5646b67bb1d,4138533530,1735228753155130451
+f3bb7805-1d66-f36c-f1dd-a6cecc7dc2d8,545843913,5770625302659470937
+cd61d3a3-10c9-9a72-e694-284db67ef143,1938017917,12100923988576490604
+e7a6fe32-bee9-4743-155b-d876d3059142,2189691926,14951210099248847635
+2f2c3896-0692-15f3-56b7-4e8dffb6b7b3,2589809193,14942711326247679811
+83735416-d85f-9567-51fc-18f4ca4dec14,4051136658,13059823016748587545
+5651a5db-ce32-dd0c-b16a-e27de00ec65e,1337819076,2839557130132880719
+3170750a-1554-0297-1875-4e4ffffef6fb,3070470887,16001570322445592988
+144515e8-ae20-4719-6589-c2cbfd85d867,3649894551,17481499586480948271
+b5435181-1a67-b59c-2f18-92c6dbae0498,912969528,7380614243145775849
+6e064205-7da1-f83a-954f-fab1de823bde,1055840044,5468498637843205956
+fa3b5723-eb8f-05a3-edd2-5b5bb6977bdd,3035155817,11815556370131457122
+cef3cbc5-b74d-bbd9-1341-6fd53121bf79,1770280242,15491886876935548572
+92061404-59ed-52e9-0e0c-981b06fc8705,370045997,10378464807690869216
+ffde8a61-9acb-0577-250f-850c8bca270f,949460621,8506927547585284002
+00b61542-094d-5deb-9ae9-97f111e285a9,2428479838,17308743502191470381
+d15a8774-fc11-35f6-5b02-c2048c3cfd20,1546220630,17440284045214827989
+b7fa11cf-04e3-99ca-28e4-a4adeaaec1a3,3868580710,7236803602085979926
+ae1dc69a-5177-847e-fe87-d14109423c0d,1432074459,10139608836445194721
+36045c5b-2014-7361-a29f-080d1e43a74b,3397952545,10541094610851339197
+7d383baf-6de7-496e-7843-ee1e0818d6e4,36662549,8695745761745260794
+024e3bb6-38d5-d3f3-1fc5-91020e3040d3,773152175,1012814080629322782
+b33ec052-d96b-aeef-6e2c-31fdc12b2b20,1426498957,10499903671773025411
+02b6e3d5-aa95-e87e-e9a3-769617ba7ab9,3812793361,9488499919126853146
+14ce24f6-1d9a-a554-b10c-ba2baef01d2b,2978086832,4861993249346889271
+33f4d4cb-3dc6-7b66-837c-02843a65bae6,1958168917,10341530938256904439
+6ff4ac1e-3972-d8e0-bb18-d9f50a492732,2209337515,10760594529441497836
+aeb52da1-a018-105d-621d-2e3a2d3cf5e0,4165143155,17361073288083554546
+b6f2ece9-60a4-1b3e-7d6c-8b10b26e3361,1125277477,15523766012280123514
+aae9f679-308b-4f61-8e54-89b4e9eae34f,3241592917,12312200624029523312
+154d28ae-4964-7ff2-3a92-adb5745bcf10,2504861093,16565739228808398797
+3af8d477-d019-11f4-1922-94dec03a8bc0,1184772421,3027155315357694493
+4a12cc1d-fa31-0c77-ea41-21b8aa907c22,1694464406,3084008692037355787
+80f64df7-cac6-fe66-4df4-eee644dc7f84,8053580,1014133959561001969
+21687afa-168a-7409-c81c-c54622a83412,1719682913,7836326974644155837
+d4239b1c-323b-43ef-d680-c8952ab592a8,1040740879,17011714627835282072
+4c7ba4ee-44a6-87af-84ad-3000721c2ad6,2839286829,11472121649579762961
+855e9c8d-8681-e50f-aa02-872ec43fa4cc,3104628233,15462315129043886820
+00ac8d32-1e43-39c4-ae91-df07788c7977,484556866,2650737794122494829
+e016f9a1-9e54-c19f-6d0a-3e66e14076f1,2525149836,2142623212457350122
+16bba80e-8de5-ebc2-ebce-60ddb47bfbb2,348298263,7165107944562597205
+b1c4b4ef-38f7-ffb8-3d39-023ec078f869,1164774714,4835961429449755781
+f07db6c1-5fe1-fd4a-d060-f5feef2ebb70,352269496,4147514639118106975
+ae7486a8-0f1a-6a43-dcb6-889e289ea7e3,1829110358,4332423336948979208
+81b07c2f-cd6a-df47-cee9-8cf32e7b6427,2465653250,17334070468980089273
+85563d4a-53b7-0a6e-b8c1-af793e0498c0,3215252945,4826564255510829646
+565e45f9-0e8a-79da-b78d-b1174353194d,2169356477,8769774261847240861
+b3d076ec-1671-62f2-6d2f-e3e15ae775d4,2921110491,1189194586445275276
+f08aeb6e-4aac-2023-757b-1fb7072217f8,15762900,1111827029446055225
+d4596a17-2db9-e8b9-a7cc-1e8f57407ce4,1886046033,3240146253223410484
+baf0ab60-6c19-d2eb-f7d5-a4fd72c16114,3761904863,397481986607323505
+7d953aba-cf39-32b5-cfd4-115edd02947f,392382257,5284342686415178067
+07a8db45-6290-bb20-9599-2424304e4df5,919802518,11224049088583222802
+aa136e32-c26e-ca08-85df-94575e7ef363,3667545209,17623806139889121632
+2faac33f-dfd0-ccb4-5b93-f0f8f161c0af,2025048883,6224829813559571370
+bff7e7a5-416d-3aca-988d-68e6f59ce1bb,4061693268,1618873276524814721
+30059fa7-2522-5cb0-171a-f2447fad9f0c,3528021064,6463017552923732878
+9c3f71db-0f2a-961e-e2dd-f3ca7860d93d,2662977717,9948715432908076387
+b0780c56-db40-ac08-3d71-2107004134b7,3807227263,15871439623161485181
+7aff32a3-72c0-e59f-9d29-2e07f6fafc1b,3062272262,12932038412285209261
+5bd52464-8bf5-85b3-187e-17dc410cc44e,1198760491,9432089591589565055
+f4926a87-d149-57ed-7af9-03f4b135b3b8,651737403,3905437245776683304
+32a0975e-4476-a79d-bdf6-474d3e67ab0e,1290865830,7215185263638638760
+43e2ac54-c5fe-f3b8-c5a4-10c312650461,2272003371,14194421017514689755
+8d807c4d-0ff8-5177-8ef6-ed1be57e27d8,3346047919,15417925809996570976
+4bb308bb-8465-0613-09ef-1d468a003ac0,2302545120,12001431967550339457
+961ce15d-5d0c-96fb-190c-450e3bc60c41,1337049134,5339968220017796880
+5fc4ea1e-cb48-ca8d-25d3-ceeb29047e57,2138389215,2822615520931912541
+c44f116d-1def-7d55-627a-c12972987de2,3016721487,4930320101637024124
+ea14fb88-6f7e-ed94-ec65-1effdcae276b,3541542298,9711556734268401092
+7ed136d0-fccd-44c3-5ce8-d639046c13c6,2804618243,5035832238394028556
+66894d7e-b161-f01c-4879-4647d07d4034,1672516042,11371424299594628157
+b2b6911c-71f9-01b9-64f5-977b076cdeff,3224606832,8773716606602175642
+afc13737-cfc3-0bc2-c789-f9859b6202c7,3654406086,2367127186843087622
+48024e29-84f5-2ec2-b15c-2574fbf00819,2397177371,8005036506472507391
+d3316d4a-4ee8-10a7-508e-e94d9f9b0c68,2756343787,12695921721028417832
+d4c00605-b2a6-742b-4f55-39ce4c657218,811450071,13470540212161353428
+370623a5-18de-8475-f99a-d21f37f7866d,274076790,12598155258767425560
+85939b4b-1f1b-ad00-0e78-bcd2c1af511f,3612170072,4437140979980933309
+97e0a6cc-67bb-ade0-06e7-7bed54248fe9,4078893784,10119374713642609798
+e965bae2-5f35-6318-ba4c-4b7a4494771f,1907977814,2460877723453362896
+65045366-5c7b-7c8a-1f6d-d144c331befc,3518195992,12455748392345739853
+69514a03-876c-23c4-c2a0-2f2467e9314b,1045800834,16664770456473463086
+97f11a87-cfa4-9e6b-6409-973a036ef174,1136723403,1820817364955508926
+c837781c-22ef-4226-478b-499128232028,2891278626,6469602878861107609
+e274c6df-33c6-e302-b10b-6c20198c199d,3631854986,11268301385907531347
+c85e6537-58b3-17e7-0560-b594543cb218,2905788008,1571752456049010041
+546fe346-dcd1-f067-93c3-3e796850abc5,1490161369,14523119274352333527
+fda8400d-d5a3-a6ac-6621-c0dd9c904bed,1840427205,7583558118122159266
+89047272-7701-a9f9-b1d6-d5de7750723d,3777126086,1977281435503510941
+335450df-4a8e-530c-c3d8-22a6d525a4b3,73157499,377193740176521793
+036ef8eb-9bb6-a125-fa20-50842a8af87f,673321020,6638722358834217045
+5e800b9d-2963-6e01-59f7-320154c261f6,2648254996,8868057248039575426
+ad70551c-d3cc-757d-0ad2-824cdb5d30cb,3081788688,4214615860004849878
+cf78e6cf-28c5-cb95-4829-5ebe510e36e2,3998218190,10292786151319425224
+6551087f-6a62-77c2-d574-56136f13a306,2218599694,5781461267064279729
+71305ed9-0719-9c3e-20ee-5944710191ba,3933930281,2860074354627128249
+814ca2df-3f20-7eec-a32f-a7c7fb355c22,1110513783,1214162012949925142
+bcb7ffe6-09ce-420c-c8f4-bd15fbb0565a,3134915563,12692540609818644921
+80b54572-eb89-9f62-ebbc-947c2b56af20,488928435,5646205755279073318
+3feecfc0-d6a9-e404-bdaa-1685620655af,3580598525,14567049886360454536
+9d5ea7ad-a4a4-c30c-7fdc-5fa4846ccb70,179646371,12585107290881307209
+5b2f26c5-4af3-dba3-d659-5ac904f1e853,3972749673,11432171509458826307
+e0c8a39c-2c42-b56d-cd5e-780797fcbda8,3848857311,2756125037834705119
+9a64cfdd-9982-c39b-01fb-8f1e56c25b99,4243480987,15174559058542266815
+392c0275-38ff-53e0-aef1-fb9fb0f33b51,1091322282,11479875818986625759
+572c8bed-36e3-800c-155d-f0e39f7b5b39,3326415109,6934830181829497348
+04f3127b-6b5c-3843-5ad6-57b087ac3a1a,2754536237,8016017194802793385
+e81ad065-e085-7582-1999-77a584426abc,552504353,15563919630088819791
+8630bb13-4729-3dd7-2791-2d1f76952fb4,2087380680,5498372955800176212
+7d004ad1-5811-e957-575c-bc59210ac1d9,4221792159,12739351758434133314
+344edb54-d139-7edd-e90d-1408ed0b1546,2575796080,12229646747557186929
+c0d841b3-aa8c-20c6-5a5e-39bf3d1359e9,2848833172,1235610732061308486
+ddfe1e7b-efb5-1a1d-ba0b-109fdd077840,2100066436,10560025123013859862
+e0b65b40-f1f0-e2d6-5805-09a8a8090956,2879764023,693027731808363026
+95fc235c-988c-4c0a-3168-3b741a81e941,4279641072,3588911239670210613
+e4f4b6cb-fdff-d81b-e9cc-30a0c33e4cf6,1079396302,4018794110568868807
+ff04fb19-aca1-6ab0-6e19-feed5d101661,4037154281,6363826372436218511
+3b00d606-df84-75b1-2976-2ad09f45cba9,682609545,10732507027126686595
+329601e3-ef98-969d-88e7-85dbd2e1a9ba,3725036427,11707599424755058813
+0c3fd18a-19e2-ec11-5e99-ed33289d96d6,994387866,7961094748286595891
+ec8d7dd2-e790-144c-39f0-91c120432fd7,3546157430,14139334245776766644
+14b95cb4-b858-b136-f807-78f11a87b1b5,1645100661,16468932089176578944
+de38bf51-8ead-7996-1234-99ac10ed7c54,2944477005,3998657870896504534
+aaff58e9-b647-6a72-e867-fcf6c3792dcf,2061031769,11835459905818515331
+741acaa6-1a95-6e27-3a1e-1440c2d44fdf,2840208309,7419928554910306296
+d08e9ec2-1f02-4f08-f19e-38f46454fcfb,2428933586,12501126054371080475
+51de625c-25dd-ee50-895f-cd19ec39df55,3727890411,3582180336536049849
+f0773720-34b1-689b-3a5a-b3ac7521db25,3594116478,6058478427109278709
+77de86ce-609d-63fe-0008-4250c1db71cd,1092137439,17572220364428422184
+b8c36d8e-65ea-ce79-0266-509fa1b16ce0,3609715947,781070155201788079
+a6f140c6-e343-641c-4d82-2451727ff041,2917686657,5906108562668949718
+e79f5641-6481-f750-1617-4760054b95ad,4257157785,10267219104680728745
+8d83cb08-f482-6d9d-26ca-a5801e59e3ea,2246263117,2208020123526217807
+cf4a0865-dddb-aed9-e59b-37f04151454e,1043738155,5900313700668229954
+31557034-8c25-813f-e2dc-886871b4a8c2,931248399,16168938290502430050
+7018cbf7-2fe3-fabd-1993-eef6e4daf15c,91021856,5740235333078094716
+5f1e76fe-f839-677d-ec0b-e856cc93391b,1880881757,17034840769241043461
+25e286ab-0ae2-96d9-48f3-c0a6d9fc069f,1524207220,12362109052689345083
+9c293b30-14ab-4845-b942-6a5b1b71ef8a,2090930894,1018313364154339727
+0af64550-d18a-b9da-547b-63590ab00812,2734160299,6173576758370109867
+8dd26830-d625-42cf-4723-149e04bb22eb,2532133453,8348618847951121036
+f2389d99-b5fa-54c4-c868-c437111aff57,3554600202,5212178096770966638
+2c8c7949-eabc-7f37-fe7a-bc3157836098,1866675043,6326770112523097388
+e122114a-e725-6d66-f951-2ee873dcd885,1840398345,1934932063567153113
+56f35ab1-4a35-c6ee-1be3-ab05abf51e86,109788948,15357221747982001490
+f1011d87-dfcf-f0dd-015e-a5970d423b84,1796659114,9115914422361535519
+5c189165-b415-00b2-66f2-5e92eb445bce,2280522486,3995990722821352305
+9f3416b3-0a78-104c-4a07-5e32145836d2,3707804506,949258399484058095
+b311e12e-98a8-a2f2-67da-eef10f203421,2555195915,2749408424277317957
+a0cc1818-a47e-d8fc-0cdc-1627a125070a,4282440434,7361160259708466654
+e934f328-c09b-02d0-fdd1-c8463c6b80b0,1961589645,1653289655188684319
+c11a7fd9-dc88-3a76-3451-ec368e9f31ae,1401749361,16056210326631999165
+0a6dd3bb-192f-ef2f-e226-6319278ad292,2969980358,6688634462346274016
+478a4168-3c87-d436-0649-8aacb13019dd,2063694655,12796453516487379652
+fef8d5e7-007d-8adc-9e9c-6f2a9d603bfb,230929355,8963968864094987787
+e79af41d-5099-4a59-0191-3c46f4740d2d,3187955427,958919135260327172
+58a0bbc5-f4b5-eb4b-c69b-af65bc470273,2720079047,17758015012276694706
+60394140-2574-87e6-8c87-b882c4be410d,1957497648,7436210729563657449
+4c30c489-a20c-2489-19cd-5c085c0d73ca,4201730748,15985190572154344071
+0daefcbc-48b9-2dc9-b6a8-ae29152e5a47,3382857249,16735196893495897549
+29a96a18-d28c-28fb-e56a-a614915c3e54,3215773603,17916627375201153013
+98511049-4a1b-8b48-489f-b05a0cbe3926,1166261510,3540103901605636362
+c5fa5a83-01cd-6c50-1c89-a90c45c17e0b,3836533368,8605525573560522464
+adc82565-44db-8ed0-d1a5-1d3475f1073e,185255081,17950121415918834055
+54db3d2d-47f6-d981-0cee-12a3c053d445,4169405679,6109543165512542033
+03603888-3768-f1e2-e20d-acbff5243164,325649229,3161566568816807463
+2685002c-139a-653c-2b00-60de1695bc0b,1238150983,345528133401892141
+375b0def-f5a1-9635-49c5-fee765d3b1f6,3586255795,14670572097409874638
+78f82553-1375-cd38-7c17-16bad39ed1d2,2564304461,168864398835038544
+9167aa1c-57c1-6f73-3c96-fd342ac6facc,695312793,9714891664592290913
+78608f27-5af6-1ef2-9834-e7eddd9920d6,1305094027,2436686337875181114
+ba5cf99b-49bb-2777-72ef-9633aad5017f,2632165693,120177790944916638
+041fd634-e853-3ea6-a6d0-a47c08ddffcc,1613036262,15141892402287333291
+80b43b33-bb4f-399d-5e78-f0eeee55d232,1990145413,3525067801116087134
+28f9bd20-f114-cb56-7640-4ad7066da92c,3678959867,15552689023782329367
+ae4f5e7d-4f04-fab6-748b-1d61b47d46d1,436873654,18338617419226268069
+bc0a5f24-ab2e-e9ff-ebe1-72c0d645ad7f,1557511263,3297014756263695679
+80ead096-51bc-e6b5-922f-869e280e1855,2876286929,9189989740866527268
+73c10d6f-aa53-3d8c-bed3-9de79467dfb8,1370399935,15245503155074780662
+11256af9-ec38-861d-82d3-c1a7087993f4,2401415918,10140073534710961240
+7df214dd-da3e-e6e9-07aa-8a2d280a253b,3612288082,46501425277347734
+6f0696c3-356d-27b3-078e-879882322d80,3849397570,2648070479741973819
+42541c78-611a-678b-2b4c-b48973bc44c1,2705269213,841391748445829745
+a874e8ea-b5e3-48db-eb17-16764a5369da,3522068560,2735249380729765844
+d280c9bc-46a1-f07a-30b4-9f74e1a80e98,2357503218,5447992821714026419
+32eda314-4093-a78a-afc8-9db84946766d,2483565186,18203863343256847463
+02da28b4-a284-45bf-210f-a54404c6307e,738047511,6452490915787293055
+b1784a41-ef05-9a46-8d98-81cfd72bd877,1417629133,11969987764076197203
+811baa01-04c4-210f-75a4-ac91bec9c8ac,2643265494,12489553901108926746
+97c31e18-d384-1bee-4d61-b22db787fdd5,3035028374,188643388095648830
+55dd2971-1129-0516-b238-2c9f295ec934,1937342639,14779556323486439027
+6fd264ee-2fb0-541c-f51d-73477c4c7c37,2216597620,11826797396751624315
+39a3622e-927c-f4d7-683a-24b6308beeae,3720263446,17446413160652938046
+a452d107-b777-c7b4-a055-52e1f99869fd,2864480911,13354426258661746731
+ff43af89-b34b-6131-6a88-325d84a29a6f,813886265,4871659559413547453
+b1004f6e-b500-76f3-7bbd-fe92b2793ce3,2982832,4273821138991219576
+986affaa-552e-84ae-5eb0-0fce7297ca02,3683149431,9365939319486406998
+c044c05c-c57f-c60f-489b-bcfc899fbcdf,4204852497,6140655920741213315
+4720fb7e-28bc-b288-7b52-522f511e9c3d,1968322852,17221516594238798295
+7ccf565d-20b5-834f-2ea7-bab5609a9f8e,2455136412,17387154401142515050
+9b8a89c4-f7c8-79af-8851-0d07deadd800,1265589306,10362871909789400509
+349d02cf-af1c-2a48-9f7f-0ef553c68bfd,2801035033,16924424123098806210
+37e13da6-ad96-029a-c172-685ba1206a3f,3601701792,6908739978621411746
+f5588228-2a68-2e16-1fcf-78ac02eadc45,3720377258,9374097359754403505
+01fdb6cc-8843-0998-af81-a34c4e632939,1916041884,13166492259384146019
+13929ebd-c7ce-7e80-3507-5042a70658e8,3474935038,3847676039824093011
+abd6b48d-6d9f-0683-688b-41da8779d5da,3189540996,12242700949840736737
+932ed3ff-a9dd-4cd1-ef26-e989267fa8c9,1996846740,9255075626228177648
+42d29ba9-40e5-4098-d297-df7337a3af53,2484239679,9350513289865822995
+1c785575-8bea-c351-e9dd-d860828a4abe,2874636188,10489888083893478352
+9b0d33a9-7995-e32c-ecce-a43da237f8eb,3187630690,14707660389555846731
+9903bf63-cced-cc11-6642-0ad8620d401c,990228207,16600804958463820957
+3b077a0a-6c0c-60d9-91f6-48497e7bd0db,84978234,16850760093235166239
+ee765979-95b5-c6ca-8ce5-7f0abdfddeba,1733099963,14720766820910689576
+3a79fa4b-241d-c664-c532-6eadd1e6db27,2554765134,16332248779509494440
+eae80866-e0e4-d0c8-c505-9419a83cbb72,1539262529,16105932848438464472
+8d3ad67f-cf67-cc0e-8936-5f8da51af11a,2912601857,8531521961626561166
+fc8bd06c-4b14-655d-0314-4afbbc0bddec,4233416590,11774822111286923786
+72967e5e-49f5-8f9f-1682-e220f753f032,3094022666,13073076938036263015
+1a955f36-4186-3dbb-0155-0cc57e9594de,1845266251,5367224128667450798
+29de2138-5056-2172-ce39-d1854ad6329d,1252130327,11907462924674637363
+e13ba866-dd7f-4b31-572f-87c603b926d3,1800120763,3430488252266030707
+2a02ebea-c42d-cbf6-5c8e-a0ed0524d20d,832964465,10564146714408235031
+73931d60-311c-9c1c-845c-11b51ab72d2e,2912777738,7346681258064658647
+3734285d-228f-c942-a1ed-27ac714f2b07,3522687495,4692866648215066114
+e8e27df9-ba46-1233-f35f-b91116d5a448,3514514973,1741308775941614273
+fe2741ec-8e72-ec7a-e7f4-7dde3d3723c4,195357435,12203224463167370380
+b44d46b6-3cdc-629b-5a6c-54679406b689,946108874,15445294263220331546
+8b914bbc-3770-7ae6-b962-1c60f4d79578,383774319,11755838114531368126
+72847215-7cd7-d6e8-13d1-15de657fd362,468533579,18016741243156401043
+84f43518-353e-1e66-5045-59414e567497,2948092863,2683998400022332809
+a0967153-b665-89c8-4860-b0aceb71d2bc,683482175,12078408351238661007
+3eefe39c-1a7d-4f6a-cbfb-2eb9ed91225e,675864100,1529213730869981140
+3f42f357-d350-bd20-137e-632fc9d8d3dc,3091175807,3560225453042677499
+7d2da5f6-8b77-3c51-53dd-4bb8fc0e08ec,2622670949,7039714056422886716
+156bed84-f837-b272-0e81-d108f4535f30,1223972192,3737127968548563149
+49f8c555-4572-2818-da52-051e783251b1,2482896998,17202404503639130680
+caeb41cf-4b56-0b49-6166-e3c3ca2f7064,2876250257,7833117489417618630
+cc911785-d9ff-aa28-73f1-627f9bf33a89,712388791,12184682433647713119
+33792c71-1d55-535d-0bd6-2c1be19d4def,3569356806,2248048929896548087
+c243296c-a858-b684-fde3-3873b944c91c,3397638582,11006279524003661919
+a049211f-39bc-f1c9-ff7b-d3d744ca0075,1946868017,17874890599316407935
+29625bd4-e6ae-e7ae-986b-9e65810e7be0,1225487811,3615618306340897256
+e7f8899e-79f6-27aa-12da-eed08fb54cd1,1207749616,7873685866758785643
+d4de5601-3ce5-a9d5-be9f-39ec77d37e76,1464947462,7897852696220209741
+f892148e-a4d4-2457-3935-b1ab7ba8b841,3588476865,8023721914510496706
+e18d84e6-db68-678f-9b29-29e35352046f,2670501485,5086940756989069330
+ef9cf84f-fcac-1917-3a15-2347a36ae916,3394781807,628715066118370282
+c49c9fe0-0f31-d8f4-1424-429bd493f0d2,3483153400,4393152033224880934
+da6e977a-d735-7a1b-d111-5a3c31aedf8e,3961519511,17690212442558666896
+a254a491-a41f-5a40-2b04-ee3ded22e495,2820836358,14177906581904894021
+99daca17-14e7-4452-68f6-fac370ab5a54,3052196203,15709688420111263543
+c5ed8464-573d-3a27-224e-ce4e022474af,3523474996,13214898641028759272
+02edb29d-735c-6721-1815-52368ac08c25,2303234733,1391147910551017360
+9d3767f7-4d12-46e4-6fde-d202a826ee8f,982635672,2225262808463738408
+0d87d329-acd7-f5d8-b397-64376115e5bf,333196421,17781524464697819175
+664900b5-5179-f45e-0b6e-f58c90e99488,2784276869,13270720417645270822
+e640dc82-0bf6-a47b-1f41-c9fcfd36fad8,3639239101,13913758164708665855
+141d7172-3cf2-46c6-a7b7-0cba3f207fdd,57056785,3855305092081333368
+24e91efd-cbde-89bf-1c03-2e683b3ecfb4,2130866315,1714373764411527201
+4726f423-6dca-7c78-d7ba-6c0eb8b62b58,2359834425,13278657747424901531
+98e59c9c-f2cd-451c-9d12-d500f88a7244,1508445361,4966359840163583334
+f8f1b379-86ba-4b09-3402-9393e02e9c79,2234082669,13467926197531495696
+9962789a-cb61-4062-9f15-fa724ec8fccb,675635943,186218986341025647
+237c4b03-49fc-b247-e809-0e01a129878b,2613041773,15597777856275627680
+62eb8547-be32-4c03-1f65-82d9ac1a33d3,293940119,602829319212393013
+f5f62db8-ca52-0058-8621-4f4b8a72dd37,2066650743,275703484538273063
+db63a425-63f4-ef40-020c-287c53f16097,564360874,18229253503132571378
+f12a2826-aa2e-c2f7-bbd9-376d53b757ca,2135624538,5223582637007707068
+06b93145-a4df-4b62-6aca-921607616c46,782832868,3345347224674171214
+52352a4d-fc42-b105-bfd8-2b3934c3f5f3,4063099518,2989586831390743728
+f41a9de4-49a3-5f04-d216-9482f9e4860d,226060534,4440136052593122623
+e6f5eefe-6b71-7cf9-e9f8-bf1a0144cc5f,1258829633,12158079929795873156
+5a91d86f-3ab7-431c-6ac8-fc86bc31a89e,3605521344,6999169872016173123
+363d32c1-f0dc-3738-b557-380ba82cbd8e,2223250637,7046218169681448028
+12b3c734-2814-b0bb-690b-f02a81233beb,3621157090,13477504351120095631
+21bea467-2a4a-9f63-29a4-99f2ed98898d,2868002389,4189860418555267100
+35fc617f-9432-e5f2-d3c6-3967ef24e44c,268707964,3364028243580015665
+6c9aeb74-6ac0-6719-2c9f-0695d2683642,3630912694,6227459777578213525
+af0a16d0-d074-3454-0466-92bab8bb4ada,2639690342,6330785028401461287
+77a45d4e-a501-a19a-156b-6682cb380b91,2698002461,902906544628180288
+c8bc77c1-b79d-ca8a-26bd-78b3aa7e7194,632561085,1845613266636572466
+1537a646-a5fc-b525-0f9d-e506b68c46cb,3378877444,9684747222207804
+54205d87-6aef-e4b0-c857-d12e5f0f3316,4056272386,4421430877497301253
+6853ee5c-3c5f-b8a5-0291-56a5a55080c7,1653558527,14536851104668517571
+dcb42ea1-eacc-23b6-79a5-3d5dabfd853c,4246079685,4175385445687272424
+69e6cbee-0263-c428-deed-48b6ecc5bb27,2990971679,13452143494016280579
+1ee373d6-159a-92a1-1845-67d3a621e15c,540713375,10385333844511178228
+54ad070e-1913-4af2-25a9-b2820e2f3cd8,2979370288,13962160834490166443
+ff01e869-1e71-239c-1748-150c8150ee93,954020333,11777590509243938790
+fa5f5d77-3157-e947-c7d3-5a93a899ff88,4279616134,2579147097438553094
+1207eec9-8bee-489f-8d52-1462e788757c,342149669,16414549184180942381
+df6d9ef5-8ae8-399c-f2a8-2a3174bee932,329294357,171121063718532517
+af540c2e-85ea-bf67-6c2f-c9959b8873fa,4209173485,17644665660526504402
+7ef0405e-51f3-1b67-6f96-fe086dac3212,1680372935,13235518613890922473
+fd797a75-a4d4-f4dd-a692-9d43fe16e2a7,3100536280,3100466613529591146
+4762aa52-4b5c-828c-a9fa-22948aa44efd,420776502,7497495104517419065
+a103778d-20ae-1bca-622e-e3d4abbb5d7c,3148052361,13424793261134521549
+3ce0fb37-7c61-f6eb-ed33-6fecf5f6b639,3402891708,11759317077865823600
+0a9d8027-ec00-017f-84dc-c42195827d08,3213783754,13494191523771017292
+d4e92360-fedb-24c7-1bb3-413ddc012c93,34234835,12102856416910053990
+77086038-2d27-02f6-b329-c6a9b784ae1c,2124864390,12073038915853071589
+3894c715-9491-b772-0605-3425bb0f24c5,2581577250,9317583229989586681
+01ead76c-5384-e10e-40a6-a099e1fecd4b,2497000318,1314912519997446627
+167392c1-60c2-ea5b-8ea1-2ae12321bcf8,1038596229,11065162790999042374
+34073769-3ef6-5b56-b2f7-01c0d3357450,143427920,9014247430719554184
+407deb4e-b970-a758-274f-d69b0b3c899d,3336711929,607097830727727927
+40668013-bbc1-5fb4-e81e-39ef45b640ec,2632785661,10665128371803960903
+ab76e560-5dba-53d3-5da3-a1bcb0b41595,3887939967,976600801218058403
+cdc638e0-163e-cfd0-1a41-ea843c859e30,3862863357,3079089591323308900
+e3ac4b14-8ce6-b0f7-53f1-5c49869337d7,1579808773,4857596905778796207
+6e9accfd-12f8-6000-7b4e-16e3f6ebcfa9,1311029614,3646907282015428052
+d59f4286-b937-3437-5571-32803ce838ce,2686124145,3481964252856818566
+311abddd-c53d-83bf-6038-8f366a5f8b9f,1397369817,14268437410345916258
+cabbfb9b-b3a8-cc92-8d36-6bc8d8393d2f,1312211779,149690768169296610
+51ac3c81-86dd-b487-edcc-73ae5e5092a7,3877663666,3099231402835127379
+7633ca17-5042-42dc-0aab-6243eaa6bf29,1775782139,13273944748122136408
+5964b2cf-ec98-a8f2-7114-23c2cf38f18f,2649509073,6275984551375056474
+f9096b92-72f5-810b-eba4-2dcc12a998b6,3832357513,8960878558470518644
+c97ed340-be0c-0b81-d741-dbbdbea97a2c,1871825693,7941880276611131152
+3ef0b05d-f2c7-5983-ecb6-3c281953c1ca,59765447,8593544080089995745
+d21702e3-ca44-2dfd-e771-bccc52371bae,2701862716,18318023074042520026
+afa7df4a-5611-d119-4cd7-25ad86adbd0c,3309151848,7154592984342043801
+915874a8-d1b7-d7d2-17c9-b9ab08bcc905,1399885023,15984848952303683246
+31edd645-9b20-dd24-9297-ec2c2e63624b,1682648013,1225690923400547473
+37567936-70bc-1f0d-e75a-2241be16d1fa,379401750,8699041437032113084
+2cd8d62f-e64d-dbe0-ff5b-3f810c1c17ba,2696627287,10476439550771775055
+aef01f45-0e12-5ca9-614c-961161fa1a10,2696126851,15968796685311259074
+452cbb93-076c-5367-ee17-0df3ec18b80a,429475911,3911618030629290497
+70c670c5-9e85-866b-0108-1b5d39752b26,922120347,11928474054736346288
+ee3ee7ec-3b36-863b-3798-4179afab41b7,1201569843,4061120604240636857
+1a2c177b-d31b-5349-e945-a0c9e19e02cf,2911518869,17586131115710344774
+8ba43448-6adf-4844-2eaa-2b8c9822282e,366044289,4740921996899968949
+539fc248-e291-213e-d219-430771c5a009,3448792595,7982994435959883581
+ddb22f27-93dc-90e0-dbbf-325fbf5837da,3193962056,18066840652283584621
+0472c473-b70a-7478-9d6f-c749eea084f0,3568932,4281008108121290669
+3804b2b0-847e-44a6-b4f3-53a530f9780f,4198606510,13923560002490215426
+93f4768d-5391-83f4-2595-71fa782669ed,1056418593,17781547351317807631
+669d7f7c-fc55-ce6b-bbc8-7c99e4d5edf2,3422849464,8875241487650002597
+e1fbca7a-802e-537a-53ef-84c69116c49b,1597299593,7240425803324360709
+b69a151e-75f9-c7c5-ee9c-c92165762729,29643225,17931816554469606105
+8975b011-e64c-40f3-a1c3-d5c391dfca10,2912608738,13093004244799098987
+27af6edb-5862-5d4a-7efa-b0c136629462,2974033766,16057070398403005097
+3b8fc538-3675-0179-2ab0-a55457b0f659,1561972173,13295117398671614277
+52db01cf-fb3a-f49c-ff04-e2b9b7cb1325,2954852783,14126119356870204289
+35389f5d-1177-da96-bc20-02b3d87307ff,3877344316,6959342128813659948
+a786b5ba-b06c-6a72-dafc-9d172b8542d1,4264148743,13530525756962310220
+43e4c3bc-e7c7-73df-a26d-c310d2fea13e,1272341351,8905882604748910781
+408d268d-13cd-3de7-0bf4-d23cd60db4fd,1409398356,12517869069707118334
+90b47323-fc1d-03b9-a5a2-b28ba36f659d,75352722,6301977265934476416
+cdde7d62-6aa2-40ef-c0b1-9a0cb48268be,73255507,13000410069054483715
+507a5139-2fc5-a462-69fd-99691695ef0e,1396495464,3255376019987343152
+11ebf6c7-37eb-399d-f03b-6f88e0818a9f,868536772,6766366693102838849
+48e10eda-a774-e8e2-7464-48e1490cae2c,2688936872,2700509383601190732
+7b648327-9f57-b7c4-85ff-a86d028cb56a,3110851195,3348840310624269158
+a8f045d4-d32b-f11b-cbf5-06869beaa3a1,1880216832,14891643508125505566
+7300508f-9343-94dd-29b9-b543cb455df0,1727263741,10273541169542151424
+1d53093f-48e4-5f86-0370-247a9c8a2038,4210518489,6100713867282673692
+f85a3e23-0de4-a5a9-c841-ad3c886ae328,594273042,5943003359299368886
+aa369fb0-2310-8a89-3d52-751cff78296f,3850919668,6808092069920989244
+320119d1-27a5-b321-79d3-14a4c060bff4,2813963197,11281611470636818848
+c6e66ab3-4e39-0230-ed37-c1e316761134,3075058593,5997691260107090040
+a5f9535b-ed30-73b9-2b06-ab7a8e94e824,3031337680,15825169879971601253
+61667999-6e4a-e531-e809-9b1d31a1ca76,4162543759,11362980072687478922
+f13071b3-8c0b-2f9a-a9d9-1299e2c92571,592258420,11758483351528858204
+0df175fb-0108-ecdf-55ec-651efbab3f45,3816281885,7217360897920425495
+2385e94a-9588-26c8-6a83-7e83ec1ac041,774196061,8607266810881077040
+9bb1f781-9b6b-e5fe-5ff5-9cb3915dc79b,29579702,8241605401779041912
+1e9d9115-a604-fe64-c483-f4247181e896,1501137632,12848255809161609185
+129c00e9-7ab9-b210-2438-991b83297c92,3743395873,17446798431420984622
+e9551add-4a30-1f92-4f54-4fdb42d4f3ab,2943989888,13860532837231689889
+4c8cac7e-f640-dffb-8d0c-f76dae601e3e,43901777,17321687164456913166
+4408a462-56bd-4e59-d85d-277288702ca5,1280897847,5151796961878154894
+243eb040-ce97-ea09-c21f-8bc1b0ff405e,3818929069,8465762035640575675
+4d2e2ab8-c40b-e009-85a8-778f37c86c0d,440162512,12330880145408567022
+5ff4d140-7968-743c-ae14-a4aba25184f1,2628608341,6049577915220157906
+6375dd0a-23c4-84a7-e3ad-96dd97fe5ead,1594355860,374707253568452239
+7eed18b4-9da4-1945-3524-6f55cf757387,4168433296,2461621358988417053
+509d1c70-1a14-012a-5332-1addcf22c668,3166099713,17603074131459573650
+3838565e-20ba-741c-3820-ec67ebebaabf,2715772923,12874735132924508969
+105bcaee-3210-9ccf-e14a-0935133900a2,884125763,575110363114342621
+e750600e-68b7-e16c-cac0-b5aabb73b430,1826482800,18167133852279351649
+f874edca-632b-79ea-791e-b021374e0aa9,4027237830,8049335410794113388
+dba119de-9ad4-46da-7510-7fce705b6803,3157305756,4376848390333652579
+98d62f2e-a4b0-7329-7bd0-13d1ed6129df,3785268610,2921166563056601923
+8a38e8b5-3b97-9de6-3488-8f3459b4835e,2094569084,8643053281199549996
+a2b69193-689e-272f-3bec-568ff5b24d88,1410233722,749679957925467879
+dd204e40-8c45-0572-66fc-ff1b0ae4855b,884894546,16082688938106957303
+8b0bc7a2-3cd3-d739-77b0-27f39462a46a,1648968880,13047192525299512044
+cc725b32-297c-8a2f-906d-a9e0a2de3507,90830243,9231042712164204486
+9c4a1297-8fb9-26bd-6796-fce7f9c9b8ea,3261367692,558287888100729012
+3eb65eab-2980-b3dd-d662-f17eee5d17c2,2692985132,5550241852057889480
+efe66f34-154c-5994-ba16-de9d4e1220ba,180717822,13527418653265938493
+14599a1c-9cad-7383-1b3a-78f672ad3c41,239163928,11734851741111105461
+8bb12753-7cba-d2c2-82af-84afb466f2d4,548804901,7392904979832181354
+c26b0a0e-b970-d59f-da46-af9a532cd75a,451946329,5329331604630926647
+daa4c6e0-6a1a-14e5-551a-5c71bd16f653,1996050496,18287729079700945956
+61e7b9d1-24d1-242a-8fe5-dc9622e0270b,1220152706,8709800003684987379
+bf128d25-d86e-1bd8-d90d-72f76c1b5eb2,3785468041,739141395048659147
+58fbab4e-7951-0def-e719-9c85d8e13d96,1384433530,9085812752230888939
+182503ee-5765-3432-05b0-efb10013a072,576011225,18306747057454945461
+1356c460-76e6-3148-6738-9cf00c586885,907029888,1511687776672905887
+45cfde18-4251-5fc7-19ed-3c0545d8c694,3958218679,17640089850712526376
+a90e69a5-aeeb-2a86-8f60-dd21ef3c3279,3801868932,10291026382272636236
+09f86676-5ac7-9688-3cba-37306f396e4e,3696240416,11315127691153598469
+4a9735a0-cf03-1b2e-8b96-02ce58c193e3,2179782378,17045801227332756173
+78009cba-c22d-4e5f-c7fc-1c826fc7e26f,449785940,8441561439059970793
+a474bb5f-176a-09ba-888f-0028a4d35108,1467597765,16524740908229307291
+da39c9fc-4f57-11fe-c5f8-cc46968e8ab9,828878106,3799798940563852442
+ad40ead4-07e0-9a2b-ca71-ceb8b702c44b,1364736774,8262959676154823498
+3903bd8d-18b7-a72d-2c99-1c9f2f5461de,1439010868,11964954423965699237
+e20d024f-03df-04d2-e3f5-e2cd34dffe1c,3695284872,3843195191277354842
+d78b00f2-8c96-11d8-ace9-efc8f8042868,388053032,8592322182620681059
+d8b14de0-b8d0-31e7-1e98-4b7e959c4d84,1512119545,14647078235014939377
+32d50d9c-33a5-1a52-b9bc-920f3b68ff35,3614414884,3645100790962350168
+ca44d869-aada-0a45-82fd-33dc8b81f627,3707568436,7387026955393925338
+85eb983b-68e3-4516-1936-554bb75f9a8d,155492084,606696394619215866
+46bf06c1-5bf2-81e3-722a-a2fae6712168,1188861625,5050274563594061075
+046146f3-57e4-8a11-8252-a57f5f2f2c02,3390306917,2071368997723147013
+a14609d0-ab29-6c21-ed98-5ee550b98d84,970016118,8015196780362063896
+8b2c2713-db7e-7a79-c9e4-0d859df7bd88,4222014625,3296890876105200122
+383e56d0-ec60-a4aa-1e8d-7bf555a6ba2d,1159903401,14702201293521753598
+afb18a01-fd35-e459-0fd2-9fdbada38a99,2482838916,7603692317934344827
+4eb0e394-52c9-b372-fcc7-c33dcce5b7cc,3904191248,17648724971789048837
+9c3b1fcf-0868-1611-2914-92fa7fcd5322,1128230587,628948763871676387
+3bf7aa75-dad6-a638-d521-cbc8f410b4bd,3337469684,13204132492702087752
+b8adbd97-3050-3a2d-59f0-dd523ab5d1b2,938021280,13251192586013985415
+53f2cad7-88dc-e052-83e1-0402e74900c2,2041993227,7927223950693516811
+c8de7090-8b83-748e-3147-d49ed4069a38,3383269387,373146110776369274
+128f6626-0e9c-dd7f-48b0-619311c620d9,793247677,2008740136409275569
+f31ffa99-fef7-3ae1-2f44-ecfe3a41303f,1652197517,7488798482294770229
+325c6b1b-f18f-2509-0b3d-fc00955511f1,78326512,481154380772572346
+49ae8706-f8b3-8260-5e23-b4f495ffdebc,2795573221,11642415103423224627
+a40c9603-9090-76bd-f064-9d800c641b0f,1199179378,13677813117051115351
+15740456-5b87-7935-041b-890f60a079a9,2046068884,13798738477985053953
+de2d5ec9-7f38-6a80-a740-644f74ec1eec,436487097,2393344245748603063
+3a13b93c-d9fd-fcd6-ffdd-654061f37b17,1748764073,13208653378771764437
+8bffd93c-2451-3f15-727c-141a1d05734b,166429885,17320842805160547353
+05da734c-4efa-f768-be9f-1591dcfdd480,1995627449,4840902860504758787
+597b6f1e-d2b4-b323-bb26-8b3b769b7ecd,171974963,10383823331376916361
+9c2d9c31-bf87-fc87-c469-9934d0b7898d,58561637,6285317512509394044
+d31b05b0-2599-006e-7114-cd7225a5df7f,2159911622,16644812293643510061
+86585f0e-9503-c00c-2715-fe5736cfa783,2984975439,465649570352256687
+e9b71bcb-a3f2-7ff7-4cc5-891b1473d47b,3092524759,7924229006356078802
+dfcf9956-3c4b-7fa3-f678-af5953e3792e,3155032130,6619975209102665095
+2553e8ed-6aa6-30cf-522c-21b796c3a51f,1680186931,4106975067460469754
+2c9c6466-2e95-cfa2-024b-c72d15970a68,3883077438,3185084390848356660
+dc433d9b-245e-02a4-7b15-49334494e464,3864630508,931191894737335024
+da74463f-e260-4382-e4b8-4c6bbee38f59,540315481,14303669426593129337
+98b879ed-69cc-d671-956b-5cee05c74cb5,428579924,7871486122389261189
+aeb3540f-33db-a99d-e985-b123ba582c24,3079431828,11755922939222847837
+3bb524a3-666f-bec4-7053-31c56dfb89a7,1915975238,5035365039789524453
+2d191087-e842-2dd5-8734-0ecba38145e0,2350892058,10267120111650706001
+001b66f4-f8d1-2ce1-f0c3-b8fd9b6fab3a,3069342648,8928283156953505697
+b94e7329-44d5-59aa-4a94-37acdc767a0f,3394247554,14108417777284653027
+90dd3f45-46f2-5d68-0623-c996ffc0199a,1243969287,8539221083339554379
+c81c48a7-a3b0-929c-4914-e9a4570c4b25,1297672823,869320451928805779
+63c2f52d-4ac0-474f-cc1d-d81053cb23bb,1623909017,15281696228073354586
+eb73c6f2-5d3b-6950-9a28-3f6d74dcbe59,2703121333,7066540709595861497
+0f5c02ce-4e29-c9e8-55ac-c0185e5fffe4,3441842460,4463404325727463726
+648bb257-7e1c-1f60-ce56-082f13a19327,1516563334,17011279534658113130
+3523474f-ad84-c4b7-c105-6a4f694720c3,3890195573,15257566143910814568
+1d10c4eb-726e-b684-6a18-fa13cbd12302,4018098830,2827018668270841102
+c5c7a37f-d8a4-285a-9bd7-5d4553782a76,1191138470,14575247082777322355
+73c85f9b-0c0b-618d-9f59-0130bb25bd76,1758224145,8242444772786756893
+48eb9104-e723-b483-1564-4afbacfa41c8,3507672925,2755384940816959404
+9c58f74e-8eab-3af8-28f6-2735a4ac3d66,963371259,5078442000631757799
+55948e62-2015-659a-9b15-b1f6c2ad1f2c,2987776504,4057674292582294135
+73cf9f7b-8b28-deab-50ae-72791c51a84b,4075016567,1143651823326571777
+a19b855e-b3de-4e06-4810-689f181f54fa,968378174,1887863611401058973
+9baa6cb8-d4d1-0e38-1178-d88a8a9fd9d1,1516162242,11973474384481840765
+c1c12263-34e1-6793-6dcf-3e8a7aa7965b,2452654589,15105272778280809305
+babbd806-cf1f-a2a0-6f92-a67188595341,3928199042,16013973779449257434
+32ebe0f2-11df-a820-a8f9-d96ea234b18d,2150848576,8658333856190152305
+41848547-4840-cf8e-981a-df943514dd13,2794617536,11548831540747664356
+307709c4-3097-b124-a3f6-5d5f7edaaf65,2452071899,5827237936961877423
+fdfd0b52-d7fa-95d4-7a14-71def1de6a4d,3017704820,12479316251313965028
+3f9123c1-e91b-f618-5279-43b4b6b8d106,3715974320,4168002059592341446
+b7e1dbe9-985a-3dd7-fa86-fcffaea9073e,2694618733,13125939945789290963
+aa6804f6-4902-a369-d0e9-bd2627436477,2207370228,5431982464723523778
+63adb13d-6e0c-6e5b-d1b2-4097e7cece82,2520690035,18028566918033245547
+f2359492-98cb-1a1f-8755-d06649df8d2b,3504722457,9751383691933184901
+fc763445-9ae4-d07c-87f9-11e47c2fb282,2036050631,17081830314456238618
+7f196622-400c-4209-a00d-efa4e0624a9c,2329335775,16647699033625364930
+336e6a42-5113-9949-cfac-5fccd2579e98,3220564399,4163908597128248754
+6cbbd519-502d-d60e-7f7c-57bf9d7d4984,3774700979,9719609725599400810
+e79f3cec-a561-b648-b253-531c10d2d7ee,2847577366,10291255070772728219
+8c97e7fd-5323-63e5-ce87-1792c923edbc,3826231375,7631987335271301325
+fd2d90d9-abd0-fb99-cd24-f1bbc39ed4c7,3424375908,11045999642207589792
+d2c4fdde-c7fb-b25a-a25e-aedba3b93dff,193433235,9917212566393021803
+7c33f660-762b-b05a-d841-9d22c4e1e5ff,2434149806,12044066092411986528
+cd94c226-32c0-8726-b8a1-f3a1cd6d414a,4115901913,12921863211201836514
+84de36f7-07be-4ddf-4ed0-585650ccbed9,1290599875,11479686493060772186
+e09aeab1-bc3c-0cd0-6029-1f4c2bff01ad,2620700986,14726665428588433317
+6cfa7592-aa00-7a10-c302-4001ac21b4bc,245273915,13823675040225344777
+c588ceab-7a12-9356-b6c0-87778110c429,2577476649,17308151466023333925
+1370af64-e0ac-3420-c84d-440a79d4958c,3843222325,18121981611938262330
+e31ae0d9-e664-ea67-20fe-f52897062129,3095706900,3746999005462357761
+34a52127-83a1-7fd6-117f-bf06bdfa2515,747791996,8405649295121639410
+940a7611-ecea-7fb4-7d33-a3a9b3b0d89d,514754792,12865259223111494114
+7206a055-c40e-e9f6-9373-232e8c584bb0,2812878862,14833493251475030290
+d4be3a31-9d06-52e5-2f7b-8e0c57b45ed6,2875003334,14375633375318547062
+7ac0f0b2-a558-eaff-bd36-8068938c4894,4136571090,17606042037307738775
+7d5c69f2-ce4a-50d7-b521-f1dd13cf3422,4291213775,6941638670833073058
+5284642d-e6c0-5804-ccd4-f12d3d3a55cc,2413217237,12081342543372568529
+44d03a40-b4d0-ae49-0fb0-ae5da3a70d4b,614620897,14113815617265294101
+26f48eb2-b54a-0e07-bd95-baf5709f58db,30934551,17161596519404377370
+10ec096d-8035-26d0-e658-3754e3370091,403532943,1060936728919179797
+bac542de-fffc-cd2d-36dc-c91e5cdaafd2,4197297170,3380391602093037791
+66c54548-145f-ca0e-ff56-7742e74a17cc,1946531534,14943490673610556380
+bb930601-7dd4-ca36-efb3-7ad6a2c6d642,3744114590,7637662712784563362
+2cde8300-8592-6dee-fb7f-5c3a098c9ad0,3592914561,12121958054802218835
+141f08de-2857-06af-e985-cbc440b915d8,3554940478,7422500403611431997
+7498b84e-3c84-4bf6-2bcf-72f7ed4038a3,2821566757,2403655064017938122
+084c4116-bbf3-8035-d436-6ad92d69f903,2880392738,1544949040520190701
+6658303e-9478-0fef-9968-63a7eb7cd627,3687983216,17951091728481884455
+98d295a6-6ca3-422e-c6d1-9c7c48d85f80,1587062215,15130477458028812478
+9c0b1c63-45f0-5e0a-c717-28d106629bfd,151295170,10680760523495541276
+5d64d6e6-c206-3a6b-a119-b4cd368ab963,2167584100,10839217807781280214
+c21908f3-468e-22bf-6893-6e89d28c7577,1765766927,17387116749210688637
+1a1092e0-2e59-183a-68a5-c5d84f5df6e8,3723252449,17139547351336291767
+d6c33f54-70a9-19b8-058b-c980e4e2c270,3642917817,13404999609253075620
+0e8f54e2-d6ba-29c6-8d6a-3b37197b09df,331209359,9182331015126233976
+5eb36a0b-90d4-edf3-4dc6-37f96cf1d412,2555293095,13964310377344469070
+bf0a2ca9-a10c-857d-a397-095437f2c291,3513529516,18187634473389339362
+1e8d2437-58dd-378e-f355-472a12e49409,1594306073,187023160004004737
+7dda89a5-fe4b-6a23-1869-60f080632077,520863937,16391684602914297317
+33548004-7d29-b241-b512-6d656fc79d05,3673317128,14140865465376651974
+dee0b116-aec7-f5bf-f058-8a6f8ffb2720,1689016374,18378504069227067422
+252c228b-b37a-f81e-6af8-962a5059b9e0,931102389,1821719801873256666
+6432aec6-6d51-0378-9b60-0cc32cd1d9da,3766092339,1862572342052638263
+38ed3570-5849-b986-f919-34e4100c5994,2748801418,17960165454077238556
+92e1c350-1b66-ec29-6f49-b02acd4fdb38,1517615278,14904998273644620455
+7bdb31e2-5b00-37c9-0748-57d015d9e635,3656369653,6154364736394894579
+75b3a99e-287f-52ee-5381-d366f0a52f9a,1822971958,18036189965866025124
+c2123bc0-62ab-e1b5-3725-223952d25ad8,1100789576,2037388562329553592
+4057a1ce-3203-36fa-d009-e8a8a0d16977,1343307727,9210581632452922878
+9b67fe10-4fca-97b3-2421-a61287a39931,2895352319,4521788866369153819
+26e7bf0e-e755-9629-1ae8-3ef57e697bb1,3962056569,14441759607947281639
+13bd22e9-ba1e-d8db-1806-08a88d9d7ca9,2165774100,11072222204309257920
+88e904d9-d6c7-1553-d464-77b7923cac2c,3054835272,5638020590533695409
+0dec9d8e-5fa4-39f4-9e05-f4605f00311e,1764152941,16668968042622234116
+8da1cd90-28d7-dc4b-2dc9-045e208f0417,2220368909,16196781519289945746
+ba3549dc-7b1a-9ced-32fa-7757cf16cc5e,746443837,3762747131584750755
+c8725763-4906-69aa-403e-1fc84beceff2,4217101385,2365564282820478308
+4de79f08-fa13-1029-63e3-23f4427dfe23,3497011365,10186466757015268653
+1e6028ef-f5b2-96bf-defd-a6c482f7526c,4054297575,3308892065552125694
+06f24cf7-7a44-2f57-5fbb-26790ed0cefa,815707393,18177548214157298825
+efe410a2-91a4-f912-48eb-11ddcde8face,2002489627,1013234707878075048
+dd7d0d01-0b76-eff5-8cf6-6de995d5c0a5,2155626767,12061717513252717042
+4ee7cc85-ac2e-834d-628a-ce02768d7535,1054910314,5779555235773605926
+31caa897-7420-10d8-96b7-68ba6c2695a2,4202958093,14860041814439148947
+f4b06551-f0cc-a6bb-c4f9-72a40d65de11,1890001377,7651704972515818108
+607cad2e-3aa3-c8af-abee-5b5ff5c6942a,1577225913,3524556103289954969
+28e17605-da70-2aeb-defa-9b2e681b712e,3230231837,5301179621357770112
+f0e3edad-0c63-f9f6-a680-64c981f7a302,1039661939,11517111736927457568
+69f2bc05-700e-4b6a-2b2b-19c339fcd28e,2128783173,5346666571615455631
+f9a652d8-08f8-d02c-26c8-ed073b0cd350,618139226,11328416843299578389
+de5377a5-cf26-cc0f-0cc3-b3f93719ebad,1568434627,2989492053572149921
+e88db23d-33d7-9375-cc27-bd86b0a11f06,3180342524,5239807938310131299
+658d8da0-5a4b-02cd-d475-4bd32f34d244,3181307970,10933019995003950613
+18df30f5-f757-f835-1df2-47226b25ec1f,2562760861,8360470602518200347
+9eeae42e-e9c5-9633-dc44-bdbc53ba13c6,1770684218,3380562679167451166
+c38901f2-8f23-2dba-3eaf-89dfdd3584c7,3105633743,746214949890434788
+0ad185c0-c75f-a887-71cc-0edeb91d171a,1926715964,3875820729812135133
+6f29f307-39df-d253-feb7-4c3cef19ad31,1088330236,3903227757380717125
+ab966a27-3941-1c88-e4ce-25787d988e69,341905245,3628836796234824719
+da56fb08-378d-ce02-00ee-e7175dc5f4a6,3180956794,4870196339099746171
+af60c555-8349-5216-34e8-01ca0cfc1238,3800233848,9718747322454580584
+4408447d-8047-3a2f-bd00-1c0032996436,2317132160,8512201458610570565
+25293bee-b30b-1494-3bae-d700e595be4c,3882161537,11526177115416148931
+f851c20a-0929-a521-3a03-5e9a2d84027c,1321069708,4514083996642569804
+f5dc84b1-c192-83c1-1848-01266150fc93,476077992,15599750746647973545
+e70d9acb-7ead-3047-a75c-17be4d532260,479840651,13518748891511095267
+cc42a864-e259-f273-1990-323b44e73b98,1770773129,1266254012572414241
+b88ec017-f87e-03ab-4fb2-8fdd23c6bdd6,938822282,13220971355990208673
+5f7ff265-b091-cc14-3a95-d6f68f2d12be,2524176243,5774935552389854517
+3cb7dcc6-ac88-0630-f073-a6b7845557d6,465121744,14737819449693876945
+9e7fc835-d2d8-ce49-bdd4-7297a13236f4,3843383866,16736169257604752649
+65d6f054-c568-66a9-7604-253aba05d423,1800077080,6733621581870745088
+b56db535-6e59-16b0-3377-fa014bc7ba91,2694565163,15723360618738652291
+76d05fa8-d1fe-9aa3-7fa5-56fe412c3ef5,1681572885,16147328672498298866
+cb0cca54-9f0e-63f3-b5ab-6e2ea6703703,3895796166,1589759534669736984
+626d8efc-003d-2f0a-cddc-87bbeb14d784,3487212706,16252112724672457540
+698418f0-cce8-4b94-c703-f832d461cdbd,214055042,17757811233862538604
+0ab09504-c8fc-fe5c-9bb4-3cf8b313e7fa,3792394817,10586636221400332370
+cc4f5084-3123-12c7-0d69-7ff42801c451,3075598999,9290759653802501843
+5ddad94e-e463-0e8c-6de7-d497db816d39,4114199069,950502561271790423
+50005b82-bd30-76e1-d1b6-c4db719457e1,1385146125,16052794612229063087
+59f43fa4-fe3a-b53b-b59e-216750827ca3,2378700020,2373519828228483118
+69fc0943-30f6-c2c5-abf3-d00a1ab7c870,1202343741,6360453767137592760
+03f85bd6-9630-7bb9-34c0-f5c1a5e21a2a,4011090291,2994683931433435151
+2761a0ed-8b30-8bdd-9aed-8f1c2129ce22,1394076204,3020693909748469404
+6acd992c-960b-b19b-390f-7f7528af5522,3773749722,4129680466449501941
+b474ddba-0566-e9c5-8e98-18be3c55b8cf,352704188,520171991223914783
+4b0b7a25-a18a-cd6c-3a9f-755e44d101f2,1135890339,7055018319186407354
+63b76f4a-63e8-0d71-b616-411be61ad27e,3934046624,828925525598179095
+7b9927bf-6aef-46c7-7fc8-d62318ae113e,3477879952,558199785079292636
+66e1833d-5488-9e19-ca34-dc7d7362da18,2608517098,729502752696066545
+466a04cf-2bd9-01f3-d661-0cea2438f961,2578816737,14652046155854453379
+7bd698a0-57fb-57cd-56fa-3e9f0bce9b20,1422569634,5868156681573235874
+c958563d-0744-62bf-a429-9516105090de,2744444724,10245430513275762923
+a14e953b-1bbd-7642-5f34-18610b7c75f6,2123190954,14985577488150595761
+a3c1768b-c1bc-bbe5-9eae-76bfa1192371,4081070086,6160212551059269088
+1874c8a1-5f55-0396-1c92-cde61540e60a,879797390,13579373671604021159
+a7ed0f1f-9af7-8692-6ad2-4804f1f498ce,77068387,13251839845692273611
+2ad2652d-bd57-ed96-5875-21cfe6c90bbc,2999230988,17255827839514583918
+944567ae-71d3-3545-031d-667a25ffc3fb,2154632755,13653770704580909211
+e7cecc26-6e8a-09ad-41fc-cce96a6c093a,803565889,8163728411054613438
+c27e8191-f1e8-68c6-1447-598cdd0a719b,3409524281,12012866502938378856
+5af01033-c458-aa86-db3b-e73ce2cd6971,161344284,66074651268906097
+1f6d623c-9c3c-817a-8b98-99b8fafc270b,2674373291,655509917710938342
+e3977bb9-d690-fb2f-f0cb-45a4872864f6,2146310360,5144324716834547955
+8c0f3c67-bc33-3de1-ef53-45d21a4a581d,2955085352,9810943350282805281
+8aec81b6-b9c7-623d-4ade-e489d5afa24c,3113380374,515090380675282061
+c3029fa2-1f4d-6450-58b7-9896f58a8bc4,4130593304,15638206224744174078
+87e34cad-a725-8320-b869-c6875b44b76e,458655539,2608226902855921171
+e95914da-c2d0-b3e4-c966-0414dbd66cec,579443292,8086723277325577862
+6e5493aa-ccfb-d0a1-9049-00b27096de96,1073220022,2925373263257865724
+12d94a86-baa2-645c-d220-56ef0180eaa4,1424670322,9701265407181722635
+0c6ab2d6-e972-c9b2-4d8f-4b7b67f4913e,4237803354,9991589888121792756
+45899442-4123-b19a-0d89-92aed0271aa9,688996823,14054828131077767048
+755c9a43-b113-efaf-0ded-f13c3b29a22b,1893685376,11178543645813837878
+4a0d08e4-b8e2-c046-5ecd-1b04ab74f915,3976128063,563971929439202443
+485ea194-6a93-139f-c7fb-112b981bf146,2011777738,5879208673497668919
+f8e20d77-f1b2-e67a-1b50-ba03da473635,2282169403,4388304137920321577
+8e6314e7-298e-ee6a-69c9-3b4b2665771c,1431648740,9254666979409008818
+94c5ed3e-b423-a1c4-c667-d0e88dfff02f,3470732318,12612775128118676470
+7d6c5475-eb27-002c-189a-9835023e27bc,2567009725,7576201181466986680
+08bb162c-7ea6-fc7c-b1e2-9101f4425ba9,4077779321,2460879627476527186
+1e927534-a2fc-355a-b168-bfca4954d2db,1631552344,4066446350711695618
+dd8cc519-34aa-1a0d-1944-32ef93d60b7c,12055779,10389309024474247677
+9141956d-6ea5-5a72-6f78-45b3310039aa,3744610180,11595004953926850635
+7023335d-f46c-1847-1cdf-e2320b31a5e8,2682521446,3962633719090975391
+2d96fc71-df3e-4f67-553a-02919d1efa3a,3382013386,2191838966438311125
+b666fe5b-5384-f568-3113-d950a86e0c6e,3315007968,6911891287063161828
+7d2441a0-8773-e406-11fd-5906284fc597,2697380616,5412624440870836392
+8cffb3eb-2f54-b269-a4b9-e7c2802af200,3500198787,1672034203796534935
+a770fdd5-ba94-b95f-54ad-3a5cdc490841,4086951826,10790502859615001955
+fc965144-e677-11b3-8670-8b2fb401aa22,1114975516,16069327171384809694
+500bee60-457a-9b75-eca2-58fbd68acb7b,76850777,15768638541766687690
+2a6dac07-7482-3bbe-a953-98ce75cfbc73,2755795416,3099080688443341886
+21bee92a-2fd8-57d1-e62a-1bba31a01463,1192537812,11913418505085068242
+1960729c-7c4b-adb7-af11-ac8f2f284bab,2106640583,11615935791692877960
+96d2afb9-4b18-6adf-0a01-415bf7fbfe6a,944186803,10472927559823220534
+0852e31a-df32-b5c2-5a2b-27186dd9b14f,548555055,16023151598542219140
+66191115-ec5c-7491-1ab3-f02b5b839dbe,4271711383,14467192496814070304
+17c63e7f-f43d-bc92-b42d-78875e1f8864,241836117,6261302586186713697
+ebc03ecc-f750-40ec-90e8-30afd7d79bf1,1928590591,18323795133673137783
+8f0977ee-1139-5ad7-32ce-647fa6fd5306,1638188072,18270388307357166519
+60c3af7a-1649-ce55-af66-c7206a0c8b00,569965180,1835632074542833770
+dac4cbaa-6765-9bae-f269-1fc4e7fa19c2,2467868270,13119972389439078904
+c8c88d3f-a049-926e-bcbd-94aca0a0968e,1138677860,4718989480431760788
+4cf266b4-797f-da93-f6f6-274c21772e1b,1128156806,13023653191943513850
+0935fbc4-4a72-bd99-ac6f-6c1341dafaf7,1715866422,17845797540812820626
+5c7895a7-f446-804f-5a93-9bd439b0c228,2020938654,11676135091902547101
+ae46c985-441c-5b1c-6341-6d4753e21d27,1573506963,16699907346844127235
+976a4511-8f5c-4714-8dbf-b9652c04a7c2,1856412654,13967528171648138153
+e7e9942a-6226-7207-a274-d3f03379a93b,2091715767,11259680197145657910
+a5404fba-0e48-1ff3-22fd-1b23e56c158f,1617000872,12468534435591039453
+9a944339-cea9-c64e-cab8-eb7a46864e56,1263664963,7849088432558719254
+9582e449-7781-4ff1-d498-a448d7c81c15,2315855835,3497398370502803442
+1fb96d39-0e09-261f-74ba-e73ce9cdb379,4152950863,4333736790055022247
+35e2b22f-8013-3528-cfe3-1428d4468c85,3785244389,2380103849258903759
+78839463-953e-29ac-471b-546c7efc5ea1,3834327162,190759549845317812
+27ec9cf3-a5ae-26ea-48ac-9250f1a035cc,3898364172,14949678917060438910
+5a4517aa-f9ee-ffdb-5c04-012130116443,1828882187,6936893869794843140
+a3b9bf37-b63d-9171-3944-56a33f3ca387,3685041674,16622630624865154938
+60e6962f-8b62-bd9e-0a66-3d5be7287dfe,3054573307,14905266396728601922
+22336e6f-637b-a22a-a0ba-679e77fb146f,293248532,17649395361489550923
+e0d44922-5bb9-6e29-2245-0692202e6a9b,3879482253,13447203961113337565
+f8a51401-dfbc-5909-ce72-203811f5f2c6,2285533477,4525429188239224139
+296800be-4467-6032-22b9-c642c340d704,3244656428,9361383441551544149
+ccaae0c4-a833-e2c5-f5b0-5d0afcda4a3c,1660733441,6919096737392957459
+27852163-0ab1-c8ed-1196-979275ccf69e,1876591036,8524027857046883248
+b0eb7882-4c11-b316-4758-04468c6c6936,1287674839,7633185079047701396
+175edf84-2b2d-7dfd-adf3-f78c90ee1094,2367452559,4314875264996955058
+a9b178fb-af8d-4ee8-2c6a-8a305e0b5df2,101542362,7227000516644744984
+bd35c8eb-ddde-be6b-236a-a0cdbe7f88bd,286260956,10852985142002983955
+7e581047-d5c5-6395-24b7-18d11c7e870d,2965628755,14503746400178868870
+9feddb12-268c-52a8-9f37-d2ff469e7896,2650853606,7727187091217962407
+4073638d-1210-1c3b-f371-cd9d903cd44e,1996088062,1570208615380342456
+6b306a1e-2c3e-931d-01d6-84edd8e57c07,2757615203,16741404683137600533
+b7481213-7478-7430-3b36-af109589f7ab,1788849832,1101723390328818651
+075775cc-2be2-311d-d6fe-897fa0073953,2104455349,10162248589154819582
+008a9fe6-5ff4-cc39-aa99-6acec7335460,986883231,9537042776516089244
+965b2249-bfaa-ac12-84d4-041ca8a0883e,3448412173,14841578655679505459
+9c2c4ac3-fb4f-4dff-7d4b-3009babec8ef,4160521336,4603737984926743725
+b8aa68b9-e3af-ad9c-b3d3-5c4fd65fed9a,2982607582,17220165825463856888
+3793189c-f4c5-8d0c-6762-1c8d7e2fbd05,1785202215,1881073469210277927
+33d96f2d-c869-4021-420f-584f3ae48248,13628485,11585911071211049333
+a629c276-7afd-128e-ce2a-3c594b70c568,2277099568,3487280186939166710
+3dd9a235-05f7-0e7f-60fb-0054ad9bc024,2471066994,8672053069544973977
+fe110148-3526-07a9-e5da-8dea3b26b550,4101660339,12423973397937044333
+35935b58-838b-9389-c1a0-46933a99fb20,3699123001,3144299329194106225
+349f067e-5bba-15cf-2cf7-2ebe6f0af082,173286073,14544177660307156251
+c07d967a-7bb3-605c-1f72-d3655615922f,3940582639,11546290876744150265
+d1e4c075-9a67-ae7d-368c-64cd57f5231d,628606809,1009537721899644588
+adfc4642-5d3c-4f4a-8784-41723a29f0b3,2341233693,2013685781649740031
+b92966e4-5746-8fdb-fcfc-a48a4316ded6,720282469,11811692724980731870
+397d611a-afc7-69cf-2ddd-d231af8c29fa,1270104801,13469848366602334926
+447b41cf-0515-c9c7-b6d0-a78d6c809211,3170015633,637828510076469613
+34f3c216-9722-d774-8046-e1120554f7ef,126827381,8113440843943041158
+053c9644-6ceb-48e7-0380-8113f8851833,658476006,3923479813648476420
+33b2a8dd-5c7d-c3b8-113e-ac6d7dda65cc,3020429448,2314205195726086707
+580f3761-84bc-8498-ec54-06c9ca6f57bf,3534777175,8208952918754366657
+62a9b89f-e34d-e978-fa14-f984c77cb48e,1490588602,2170364023549876295
+e2672c4d-89a6-b79a-39a8-0ee451a84010,1663375365,12916785897542468327
+f7b9a404-c334-0481-07c5-759c7f33b5a9,3525408645,17963472130285351711
+88c12e9b-2f8d-d6b7-7d8b-febcad1b41bd,1682634640,7312662388906146033
+3915fee9-e316-ec5f-ca37-7b93a65df126,3594158271,14573478751752355651
+0a25837c-1034-9e21-6b49-b4c7f7695d56,3284620804,15816567075398212131
+15b8937a-36cc-e392-cf2b-587be44ae92a,338339911,4843056663429346422
+600a6973-f468-ed83-a5d9-ea149a22a7cf,2283984878,4050889235550103316
+6f875631-151a-5674-655f-1f35b95e795c,1603519074,3585910410752201649
+7e75cf56-6088-2e7d-b73e-425bc4ec1951,1282462231,5253015093007548173
+972f1502-fe9a-5134-6af6-0870ca57216e,2458402449,10793108278808323040
+f3488505-594d-978d-2633-90ee0e964ed6,2671742281,14319946754239701518
+d83ffe88-f1f2-1735-2f6e-8a368137d238,1563126189,4916112586889939583
+4b843e2f-7e4b-9005-c444-dc207f1f18bf,2741991527,248138910261014382
+f656a629-9ba9-e1d4-309d-85ddf600ac6c,2102028639,13978744696637932423
+045a025b-f5fc-50a9-b992-cc27843a78d0,2246691515,4585824184606269712
+86cd86a1-9993-8666-ae26-e0ee3316415a,224155707,15409764709243795790
+2fb182dd-e20a-017c-bb05-d6a583a453a3,1027139161,8241912960392696307
+4c07a25d-40b3-68a8-8869-a5ff42fb17e5,2170024659,2802189725499606562
+21a498ae-d765-8295-62b5-5a4a52c863c1,1877188791,1766776786667184800
+9aa99507-6246-0150-4db7-8ed5605a528f,634318154,3110937765472088189
+6a4b57b8-ff53-ff64-fbe5-128e2bed3cc1,3917290770,10078394244070742586
+a5ac2e75-3e1b-4bd8-a5af-1eb9b718d286,2788335973,1814242456515183647
+8bf196f4-30b6-3740-be63-0c693d01529f,4294020765,5933541754154977655
+1b29eeb2-7d1f-0cee-b980-9f9b6eeaa52a,2094862606,18416120900004398086
+48df03c6-94a8-6e8f-3ec1-d5648b05cf1d,1018981170,6620005739020338440
+870180b8-95e0-dfcd-a7a9-5615ceb5c981,4121228044,1020800536021034383
+221eeb7e-e02c-e063-b799-e3cd7f1174c8,961035795,15738718806638295572
+af179b95-b763-7a63-512e-3108906c3729,275219499,16511492042415124170
+f5c20b15-b32a-9586-e4af-adf067408c35,3189522491,2108066990223748375
+89edba22-cf45-c342-3fd4-27205e7aff45,4100566255,12962062083775370977
+e29c821e-8766-c396-0b23-133d130eaee5,677153219,6372904962311283404
+56312042-ebf9-ce6e-3c1a-34bc8feda47f,3966539060,1199401216427066051
+ced9145d-82d5-7fe2-bebf-041ba648361e,2587058926,12084032707694842791
+d36fbeb7-921a-8aa1-9c55-7c554e79a9af,1837172901,1324443005180110319
+c8e161af-a797-d9c4-6d3e-98e1e97e0748,1968759703,14044898240519869468
+acd34c36-f147-c22f-bf58-2a7076fcccf2,1145201040,12400596372518440635
+206d5953-86d6-e74a-468d-5de18778433f,3416893385,11103034778263213308
+07dbeff9-11ed-110a-ac40-a76bd30fad25,3269564646,7065190617830948628
+e3049c58-1359-18be-6622-d1a8d810a7b5,1635473243,9751966075683158186
+7fda9389-5972-88be-946d-7a7f0ef31c4b,1168297171,7648646574822273469
+65f66e9e-7d26-0809-12a6-6334c8a4b72e,2818067259,4932739291219665805
+d6e369f4-4dbe-466e-3a1e-cb4a191376b4,1945805280,3633712824737375606
+40ea3275-f102-cfeb-f75b-9ca15fcde6fe,3267942799,11014046874044349448
+50ab5a6e-f10a-cc1a-6100-81b2aee9d89a,322806851,2100770367363972336
+9fcbcff2-beb1-afa6-9d22-b3e052c1a298,283966758,13288173508674871228
+655baced-9b29-034c-2b8a-988c8a566d9d,1088129418,12645963660196915321
+adae32ca-afd0-1b9b-86ad-fbbd2a76169d,2162709459,17956578583853270877
+b8a4d948-5499-bee3-38c1-bb8a0beef17b,2758903963,206178581315153834
+b4276ea8-c51a-14e9-7dfe-6bce44d5a946,3417028338,10945299987443456066
+d25d7866-dae1-51c2-cc8d-f3229115b639,154842951,8850493595332756954
+2b0435c2-03ff-de9f-e893-04b3eb119799,2831612856,6985808793714993106
+8ca3d23a-f834-15b8-e981-c58cdafd789a,814541444,1036456889573296059
+06a54773-1315-1f4f-f89b-39d21c540c91,949633016,17095556165468639611
+51581f8d-eb71-8966-6bab-3dd0bf31e339,3370952431,3569293478971089595
+0994a57e-4af7-e6f3-a610-1ee66c939a86,4178971305,5092397935486681347
+3054e4a4-946b-170d-7efe-b22bbcc3657c,4093642681,17320805659749149649
+a6d4ca28-0ff2-77ef-d00b-447834f1f835,899457571,2636293153678909390
+485c5524-a8ef-1c7f-b999-06dc3d9e9956,1214977982,914142095072812309
+fa00a7c4-b7d9-3f75-afa6-5499d1e64161,2257455756,11362237804886247958
+b0d16a42-c633-3889-282a-f5fcab7653bc,3343953669,3435906744349436816
+9e34b689-e3bd-5f52-cb3e-c6c866e24b86,3892730355,1756668360492213241
+674905bf-a3a1-da91-041e-e2391417b208,701608203,14548253415394018497
+4bf058f9-2d23-1f3e-953d-cdf524cc0756,2002948076,500301770009328613
+8d93f70b-f57d-561c-ce71-949e46865463,2897789366,18380019002069785058
+f68c9ef0-4e4e-7395-0d84-71ed262b0907,200222055,17147032614419285317
+31c0641f-755b-649b-8d6a-85f240235be0,1758754540,13909286727630354374
+356b58f8-9b4a-a682-0b04-654396d86404,1306994562,11783502374423825459
+5ecfc9bf-a27a-8b12-3672-ae68d4ab3abb,1708910394,8356452281026429593
+e58352e8-9709-d4da-ff51-a2bf9f44850a,2543943195,11675256643202185646
+f17c252c-af87-eea9-6084-be35575fa414,1912356175,9990654864533783924
+77310b84-6b9c-455e-c25e-d33826072a25,3790100498,8305100541083007809
+92b1d0cd-b9a5-f331-4d3a-5618dc8380c5,2229711200,11164179989236717193
+11af3740-23b3-dcc8-9e73-d05e0406c4f8,1651995940,13248197734106609200
+35173df2-c7d1-e4be-959f-a512897d6f9e,3767745409,1821259639828883597
+2e643495-1f50-223c-533a-b542c8ab333f,2946400649,2380947315142137596
+6c9e9589-c6d5-99f7-97de-6e5d924ec7a4,2314264178,13184560415085314190
+2e8930a8-2249-0ccf-b3a7-ad9e6375eea5,388294348,11704681601156201154
+de7a4c5a-4cb9-c93d-b5f3-6d673d250746,2945599547,13583776592171159673
+06660127-4fae-5d1a-9801-456a169239cd,1741063975,19146648212986285
+c8aa60e0-0a3c-dff5-0ffb-eef4d6cfaa9e,3996440988,10094337331370619899
+4c262d1a-a460-7c6b-9c16-8eb0666a5c6e,478468096,17541585041024661817
+147f7d7d-fcd9-2e47-0b77-0f0142c9a8c3,1635453480,10794944288501227212
+0b1553cc-0951-6e26-2264-09094183ac78,2272988489,15545875743003206483
+3fc2af5d-9d89-2eb9-6eaa-2ebeb7e42169,2092336525,17084461860713593026
+01edc287-9d13-fdd8-c051-b25a949c2cc3,3480872124,8217411712860307398
+8c2c5459-f8d9-5ff6-055e-6be830f339bd,492317260,15023636860613795884
+6188190a-83d3-96b6-9f2a-1a58e0a6f3d2,2778095931,4766411213641653790
+ce968353-8f93-42c1-6f85-9e11ad9bc5b2,3683528286,4209877753163964164
+7448024f-c932-69ec-607d-5a69478f015e,2069861525,4105913918231608574
+473ea2d5-aecf-8212-6b3e-0b2bb71da334,2689083444,8193249283306750854
+46c2d418-fc8f-1179-fd0e-2c43f65b2606,60453138,16904569741721044033
+ed231cbc-caa4-6060-af15-e20655ac17cc,2844257449,1160198346236413231
+07dce1c1-e065-587f-7386-2257ae236f00,3809599794,6087814889347605253
+a2ae854c-dc62-5a53-d6da-5f67787d99b4,358984910,7938532598195415746
+f99a6bdc-ac19-fc67-ac1a-ed721e41bec9,3336230481,6540147781908089594
+44e063e3-93a6-014e-8d8f-a43d320654c0,3700101865,16306904844805795827
+eb6226c1-19b7-b804-1722-9c24192c4ded,1083199783,2871673015042520467
+6b50ade6-c8b2-cced-1e14-7aaf6a55a689,2151864986,3998800591086271412
+456a37a8-e08f-8a44-2267-ae9f2fe722b4,4110003904,12765831802827948869
+0f2a78b6-a73c-874c-149b-0a8734eb8334,3553792001,18244299310659734842
+2c62cea6-19c0-48e9-68b4-bffe35e775f6,4082765122,15608949307219764621
+b59cf176-8352-8dc6-d6e6-6224acf7cee7,1403013181,1866008967446591767
+356c1a82-df6f-b877-9e70-5521a8ce90e7,921194618,4103371172889962145
+b4fe9230-c77d-2207-f4dd-23796c9b9ee7,1636631340,779921664566759393
+e621279d-e28c-3e92-145d-41fad5cff2fb,2934381213,14887824108588557424
+1c1fe877-fd59-318e-ee26-0576c36c4045,1280727035,12214341218273664408
+6bef816e-29e6-a831-b39e-e2d0f2fbb362,569333954,10649593356570242857
+75b9eecd-2259-a93f-87ee-baea9cbc0c4a,2244913545,8493558576758605451
+9a92c5ff-f7fe-c700-f6e7-5a6e70c99f85,3368454266,7123488065125610214
+952bc692-fff8-449e-e62b-4a1b0b6346e4,4188813348,332977736548609197
+aef1a29b-6472-3272-944f-a58f8b4448ef,1385280075,3915426457529869542
+53aa2b64-1520-c09c-5ed2-8cd60c1b7daa,3089272921,1773631730297585875
+70e180b5-1d1b-7355-a74b-cc2dee1ef4ff,3813530107,3876216490222166671
+3f7bbbb5-e5e8-44f2-60cc-67391f812a76,541745719,11824936761403487997
+f4c3010e-3fc2-8665-bb55-d9a5468955ad,1775568561,17778241016063634758
+15ee6e05-8df5-01a7-cdda-a4e41aa974c7,3441689282,6221250087223130312
+8d26f99d-0019-6237-9de4-8198a7bc774a,3906584219,7957936916372872089
+9642ae48-5dd1-bb83-fe34-c8e3b07fc924,2068984103,11436086568651696316
+ee7cbe39-667e-274d-1709-31ca51b26ef3,3748747890,14145867952939181041
+10fbf4de-5a06-7400-6ec1-460468615238,3446229909,16872141079665091975
+7120b4b8-64c2-c9d1-fd05-5f5c03ce8cba,3479880449,7843654291250993239
+b098c944-3959-c9ed-7c64-7ac2257aa9bc,2965912838,6286733641530377959
+861ca2d3-a667-3439-a6c3-7ebf417f0c53,1972496961,16702351550360753632
+98cc212e-6475-ac98-c949-ed99cf7f98f7,106651446,11418393437182948768
+399e9e33-2bcd-d17e-608c-e70a5d6f09bf,4218474913,6432001024703127251
+ba361711-46e2-db0b-d9f7-4128586d0166,4191365531,9671111197227922546
+7ed43b18-4182-1f2b-204e-be93877ea66f,4118977162,13546585271210788555
+41a6264e-536d-c17c-695e-6106a1c6e8aa,738247710,17558475216248102329
+93b646bb-a5d8-de26-7873-d9ef95fbef7d,2211341904,4283364135060129409
+f3fd1a86-0921-a438-67a0-8ec38f8b6f8b,2026508285,16303649307456623040
+614a0d0d-62da-3974-4d54-2e481fcb5cb2,3007261127,4367888777309317082
+6f2e7413-4eac-1961-49bc-c0de3c86e06d,3131196713,2728144619359779481
+beafdd63-9112-fb5c-91a3-68e092cacecf,1937972077,780804672926909530
+3c4d47a2-b2b8-066b-a8f5-97ad504a0892,3460608352,2609190140929490157
+9698d3a4-0ede-363a-166e-c378f9fe7888,1823044975,16806732381942745853
+cf6c4f6f-b019-ed87-1468-7b597f2b1445,747219770,9173791601511132981
+fb8cd4f1-01f4-86b8-9091-5581bc8d73f5,3524400246,11077960128807316334
+0a19ed19-fd50-1eaa-9711-39d10ce7866e,179147968,12790154403461197571
+54a0bac2-f514-d482-d412-1182e848f078,1731508129,378175983664436046
+e7d5770d-1eb3-ff47-d7a5-e6ac0cfe699a,2563289912,4366435966234765156
+1e7f979c-0bdf-d9e0-0545-155574a4e254,3389067262,11863326787810921886
+5fdb4598-42bd-70c3-8064-cfa757489740,308781299,15780234062778707837
+a98d38ed-c314-a0b7-d182-317469c95299,1702830400,3651175764685346853
+dd3fbdb0-c988-bf6d-04ac-ed6153a133dc,1123286611,17127918124013138833
+b039db07-b76c-8083-9454-d6f05dcdbe29,3770756914,7105129431664172164
+f031ffce-9bfe-544a-c4ae-71571f9ce959,1928160623,4539611448545637131
+d33d9f2e-20ad-a17f-a1f4-54b1ef8b47c8,2367479790,17634454092789366559
+4da5538f-c66f-d067-d456-0df8adfd6e9c,1849863748,8829816306269290630
+6fe8e529-315c-470f-fcbb-8a95d4b5b4e7,472361361,1941905566090747847
+8cee8c73-df27-1432-4862-98d117e71364,358331788,13431218534685719649
+2c9e8208-e47a-cd64-31fa-3bae8e6f7d7a,2387395223,14163474398438839639
+88a16898-01e5-0bc9-4614-4441015bc4c0,3370234576,16825191607604649977
+c3aed254-f7e6-4fe0-49a4-e0dd21b60be3,3118614679,9612170460793546599
+3f38f63e-60ff-6f41-57ef-2a22af66b4f0,837167263,4751996691718455105
+3bc2baee-bbe8-d19a-ee93-6bb17c1e295d,2439666046,4177224700666778767
+a4475857-2198-9b22-d776-3a909510b7be,907947047,7645217174150264411
+4293a63a-4988-2219-9cf2-67916b10e1b2,468980202,6856056981009435763
+1f1a3882-52cf-3847-e031-c5bca2d21bd5,3133992987,14875534042084270728
+2a04d8b2-f362-e387-d6e5-70b473e385a8,162224759,236956359283453541
+2f0682eb-b7bd-5c0c-9a30-05f055305f9f,300294851,4443035113528358285
+38271569-59dc-881b-6864-c5c0c4f822ba,2775155309,12810129329415597369
+eafecb70-821f-cc52-c07a-c4c66ce7726f,2704856160,10330704139306786508
+9251711a-a3d9-d46f-7ef7-22f8047880f3,534613180,16677888946063948925
+8e02b026-d4dd-9df6-8b60-ac8508dcf747,973856686,14939207829469019171
+a5b9fa0b-d181-1898-706b-bcfbbfeab298,1504581195,15191237152490543916
+49d05d98-c86e-2dac-63ba-58cae45da7d5,3291562016,12018597308220475086
+29953317-715d-5b23-d54c-257dafdb4cc2,2241913552,11679714180277954720
+e21df71a-ed36-3f5c-ecce-bb2ed80822b3,1508510379,9785298328637147555
+b55f67af-8d66-784d-c354-eff60afd3cd1,149991236,650280090472828594
+3b9f3cf5-4c16-bc33-13f0-7699146774ac,568752732,16735180797641987038
+f8c682eb-91e1-7bc4-e601-6d835d67085e,1960343679,8052225218038991704
+fa2266fa-7742-4338-7081-342bba230b7c,3349910847,10538407444527322338
+7c29bac4-9efc-8764-fd8d-bb6fb905198a,3936039542,2181424484329823574
+7de1d071-77ac-f7f2-aedf-e38c8d469fc8,1328181717,12259564908232612058
+92569fce-974e-7a06-d9d7-aa5a784083a7,210832311,3091560954610519664
+0c2b19a2-e420-7596-5f9c-47d7a6984e72,349935713,4466650064621734259
+ac16e404-1370-d03f-6a72-d61984e2f922,1001818918,10554758452274385539
+3533cfdc-23f8-bbf0-de24-bbd3852c5b30,1043372237,8509653103537536843
+6fd59f1e-8b56-853b-77b0-82655e593c63,1987367267,10774239333952701223
+1a1d60e9-c36c-f008-2f30-9136528f3faf,630653365,18369801686997964162
+14f37c12-f268-a31f-9363-4b6586967fde,800961974,2867127780446560270
+861dd4b3-c15e-4d9f-9cea-bad7f82d9567,2628236943,12619755407814231376
+9fa8730e-07f9-3028-b280-e8ab87cdaed7,3468162190,16889902059584895819
+ca4ed342-310e-9cbc-7f99-8ea6c34c369b,242548854,2198996672504007602
+09191135-89d9-c864-aa20-15800180bbaa,2691044093,10102351126223217181
+8d4f69c2-2532-cc58-7612-63e92f936bf9,2365701566,1456157657379926463
+7cd73520-3a26-2e36-224f-6de1f963ba11,192690835,4961330368740780240
+af89b1b2-409e-112a-bd80-caba8c1fd45e,4028089879,13203491904043195794
+1afb36c8-450e-ce01-c0e1-f676682c1661,2788506761,16643452684675276440
+394542cc-c1e3-440c-0180-5992b4c51a22,2442500807,11099023072837839453
+96535260-fd72-eac1-b589-0c298561ad94,3623185580,11750483370934231561
+d1afd952-53c6-1f48-03c7-fe5e2b3cba84,2224255304,10402537523648907174
+7f6aaf39-8684-3122-ff74-70dd82d49056,1227923820,4877576431635434645
+af83ceed-982b-e13b-f7ca-0c16373ed60d,72337803,12303894403240401536
+5f1d05b5-9b28-6ff3-0d51-2c414c3b64b4,497331435,18152452014205872627
+336eb2c6-aac5-3498-c9c7-d8133681a9d0,1271263301,5684192658807785072
+6f13ef12-1234-1248-cacf-7910b1373dd5,2950418914,15035956990502963370
+62a0313f-7a8f-c0dc-889b-d983f04d2de6,2412669717,13441325532954472972
+8ebec3a1-f835-628a-4905-fde48d32f64c,2842335787,18020179601362788773
+1899ef1a-cd51-e791-e052-fdf1a70d8ddc,2296865456,13692334807361362425
+7d96bee6-7e89-1519-1721-2e1c06cb625a,37919336,9540826745498523284
+2d6e838a-b1c9-82ea-52db-f3683e978b71,4087767155,6988276968277140506
+126e4f8b-e299-aa13-001b-e8328b21aa16,4008578875,14133942259804075931
+e366bce9-8f7a-9550-522d-d468119ce097,1662933887,10648163252881522240
+20770421-bda7-7555-356a-cf099546d127,2062750279,12759123438681894904
+a6bab639-8178-f86b-f3ec-85c159f900f4,3215258679,16014496882711440624
+4826d66b-c19e-d735-9ba7-0147afe1a25b,1901332557,11018233016303529174
+8d06d2fb-b831-731a-5e3d-20411fc7ea16,1307782698,2202934067282750496
+6fb799c6-804b-0e74-21d9-83bdc43b681a,58726854,15289284951997195925
+d100c9ef-d14c-106c-769b-7fe3b3b325ba,2462575173,6081920513346172420
+d2c42851-f298-d92b-b199-90b2dbe3d8cf,4236364374,2708275783551848430
+1d925750-e5d7-e573-4f08-2339e560bd13,1242442365,4956574306409438353
+677b118f-c574-63c1-c4e5-50b9862afd3e,3010041002,14166006674597175338
+8904bd19-0554-c295-6682-f317ab0ec969,1952811860,7999268014064688599
+241e419f-eb41-a417-2192-e10d17e0935d,1439400499,15059797605284425438
+95444fcc-dd72-d519-5e20-307993e2a934,1600956124,10405507011368667168
+a7c8860c-5a21-2b21-6bb9-6ae05cce987d,2422496078,10765739376959452712
+a016368a-7f37-0121-995a-be40271cc047,2276384401,7557596327382264809
+32ae3e35-7a63-014b-b8a3-c4d638d37f67,3837392820,9130504376272200935
+f9d8aa2b-78e7-adcb-df7c-da16c4ad5122,1368526473,5316221933550087413
+9f9e56c9-422e-bdf9-d1c9-e9eff5436674,2881973148,14989309500404958312
+22d71d65-b7b3-2794-0397-d3a3c5502168,2292650478,7747419694248505512
+2737c184-4df9-f69f-0ce5-3ad2dc5b6e91,3953449418,15589761368281307049
+1f77facf-b8bc-0823-5984-c019a5804bbc,117737581,17633071258729242659
+cc5468f4-0fb6-1874-638f-7398d75e98c1,4109795593,383791498270897290
+b5fe1352-64ad-29b1-022e-f69401e5fb98,2936135171,8169911179349063025
+efb4d4de-4a07-5180-a710-78e8b96ed495,4059549161,14247717742931965079
+8a962cda-cf76-46d8-4d5a-adcfb0b6374d,339824187,6832684493401430235
+cd19fb72-cad3-4615-7888-54257860174c,2128474066,10871018546520334227
+69bed96d-a9d8-cc4b-eaf2-1621ab55c015,3160693537,5060138261160627881
+d154356f-8779-4dfc-9680-3d0638e9ce10,2244760398,5985419105312714411
+84dd89c7-da31-a669-079c-678efc435bc6,2625843605,17698288191588035133
+73c96c06-5c2a-892c-cec7-a756c76977a8,2825000693,18014051809415021139
+b6f3554b-d09a-4259-8abf-593c7587c748,2968865931,10472705622210792895
+572d3c0b-4b16-ebf2-ea0b-7aa0e66d982c,2808003106,8534338737593732694
+48558702-4980-7374-41ac-c7ea3e53a2b5,3942801709,7311123572914792302
+f0a0d3e4-45ee-8afa-b486-597309b3a9dd,2191701953,16494109390958046505
+8e7ab9db-02d6-fff3-5e72-800323945119,982369839,3265340733372830348
+a11c8f7b-adce-13b1-1999-af6d7cd17c32,54450632,9164914783115270663
+4f7382d6-7836-5d3c-6971-c62e47eeb111,1877582749,10004963948483170942
+b1bf6af3-3c8c-5333-1fe4-be5e12626fee,3093718156,13114902748225896893
+00242d58-e4e7-acac-d1ca-fd96b6be3cf5,1992138912,6262023976311911537
+ed67ab0a-02bf-03f4-95ce-2e0f00cad2fe,3705252689,15172007463003695414
+e88ba3c7-af29-3bc8-7870-63a11d6fc3ce,3116438658,9464700215377534446
+62ac7425-a652-d424-42c5-3e321809a776,3476676323,3884216679889691900
+a211b7d0-6b00-5d8d-5fbe-fe39f7f7fd5a,3124601795,8851716068967646947
+021cb18d-781e-a3c0-b87a-d0541e6be504,3382329867,11441957835821943264
+5feb9464-17e1-46c5-ec5d-d7db51f3da02,2732896297,16363717332589390190
+8c35b3f0-5500-439b-10fe-d6578451948e,2538457574,17908657121778760021
+2a54ae1d-eeb4-bfb7-2b3a-623783ea53a5,3288012150,15379823806220049400
+59059deb-060b-13e6-1041-309207f63938,1804476836,1054784792217954587
+ff679a6b-261a-2ae1-1d8e-4f7dfbab34d7,2054539156,17061765069752853524
+f3e3f2e5-5e1b-be2a-59d8-010e83c9d261,1389022807,18425764040835797080
+0826422d-3eda-d9a8-6953-a57fe51d52c9,2272219485,16591027303403607893
+127eb227-9296-a7a7-68cf-ff4aad44f55e,1290439305,11997523304623863024
+590fbafe-7949-480c-eb8f-14750c9c6c13,3996727011,10786712642209386651
+bd9ebefb-6bb2-cb44-719e-59912df83d74,725678084,11676256913308449184
+b013779c-d0eb-c9ed-95a3-d88386828045,3631155704,12871750023722903698
+0f98094d-1a74-bbdc-fe6b-7157bb518c81,3668114585,16465954009168576138
+129f7c06-1f92-a352-8a7b-b1b7d42aefdf,1406516269,11825838713672158364
+91aed684-d051-8f7f-296a-79222b1314ca,3434435095,10949531081483092491
+aa599ec9-29c2-4db5-1493-f882c3ef1484,3157407088,14213136297132809519
+5caa283e-72ed-3603-2f04-0dc4bc6f3789,166396871,11451875220516770860
+6268f05a-4a82-c040-016e-7d50c735d521,1355085508,16785673146947241525
+a25b6fd9-4e2d-71db-d49a-77e27c62ff23,3311280105,8501611142818745492
+7f1421e4-70b7-2fef-c92f-d49a47b30de6,2258160976,11465317654308612280
+4d895aba-4082-4a63-012d-598045482202,2689189551,8982495434874932794
+8a3b2d41-0857-d797-530e-ce0641a53150,3634995631,5568805641854450425
+7584c652-9865-b107-b141-5c2b62107cb6,3503630353,1855631047435029992
+4de9f4d4-8f21-eb50-8657-e7c262f03026,3608263967,902342022858625183
+0727327b-d943-d594-15cc-4f90dcc9aec2,3344989615,419197988137168520
+8d46a4cc-cbec-67e6-1bdb-eadaa4714879,4056971506,1299394215675861609
+0669a6c5-5048-6613-3a07-531613c44104,1319637156,1465327774497574065
+5479d137-dde7-cfc0-8c11-fa5a55c98515,4002911823,11041475648278041084
+3f36d722-81c9-f3b9-8425-34dfcaaeaf3a,1917213039,87841695466627044
+ea59d676-806e-a6db-8240-dccaa2ee0171,1219807826,17007609846714823725
+e75e3df2-ca85-1b4c-e64e-60b91bb49349,647055087,1709013955388594206
+22f21941-808b-ed89-f9eb-3f5d9671af30,2784254289,3894938068488334827
+ef312752-7347-2bc2-fcdd-35d7fa75f1cd,1014703665,15539008685876594349
+59ddbf99-ff46-6fe0-13ca-6316af3284fd,662234538,14910200462936549104
+a07c38b1-a743-698f-dd62-cd522c6080b9,1854328804,15242541050750989103
+a4339830-fb19-71dc-644e-8022089f9c99,1472338207,7731124036441921752
+9a7c965e-568e-0842-258a-9ea08690b02a,1563586362,17083142576598798368
+dbc84e2f-8aae-f5f5-ecbd-28572f8d87b8,131670708,830471778279412894
+6aa4183e-22b5-783e-eb13-74302f66a748,1902128775,13911235008710511969
+bae27346-e304-dcf3-15a6-4997fceb1da5,4221288830,2622168483883637611
+2b097304-ec71-e287-7401-225f9bc8d3d2,3165970592,17188611845114879007
+15b526e2-5835-5d85-b44e-a8bd4205e2d3,2374180480,360044049770135989
+cdda5932-9cba-43b3-944e-d4b0d177d28c,974231542,5275273123814530987
+4d386353-bdd5-efaf-f5e3-60bf7f080187,2416134183,12638974928477420642
+3525e639-adf5-5f02-0255-9629027b756c,3354196705,17310308704129445914
+17e3e019-6b4d-1543-b34b-44ffbaf950eb,3109661776,6977994345075760786
+b48c3705-2374-45aa-475e-1b671067fb50,428805434,17720965483962803941
+a62e0ec2-7671-3628-efac-56843c11c6e1,1418762362,14124125835646056252
+f606af37-447d-1058-9fe6-45a6c1bc2819,1032012837,164620925802307039
+d4f55f69-7402-bc1f-2a71-668d5d483973,2197385474,6402885024196464320
+70b1c46a-500b-9f1f-5643-b63df8c25cab,86241786,14286958333373701537
+8b8455dc-2759-7db4-43db-cddde34b394d,1136505343,10550572545191941571
+837b1a50-0c22-4df2-a8fe-db6b29628275,2162169618,12049544511833483156
+11e6d7b4-da38-97a7-452c-e29804adc719,2482414631,3477760609014588994
+9b19f32e-cba0-ec5a-4cd0-4518ae51f089,3073277739,12072729771130092785
+c4a28e0d-e8d6-c33e-7df4-eeed55323d10,4155785837,14087348097707053579
+55c5a20a-3ff0-e0dc-fe63-e4d2a2c56ee6,3410326447,15373167565384568017
+9433445d-123b-9ba7-41a2-e7dcbfb0ca19,4293526208,18180754239056688002
+fb76a769-05e6-cfa8-f3c6-fc9487b0369e,1948137457,91677536669530096
+f0d94372-bb36-0cf0-441f-886a1baaa352,1781950756,5432137257907696179
+ce493adc-c959-da82-50af-4bbea6fe9e7a,3313877530,1681775414186354263
+c891fea1-6afc-7784-ce8f-c5b9dd32761c,3148258257,5310121380923875921
+8c8d57ab-047f-2f89-9bd6-579ed42ac3d3,8943667,17928691746021367260
+b88c2f4c-323f-c8e4-e17d-f275b2a10ef4,2677165383,17170627510538805228
+76923cd4-743c-e7ad-4126-cd055413cf61,681276876,14739999407089393970
+88c23452-b568-4cdc-2c07-2eeb84c3b358,3325006925,18389278906079738092
+c0606b28-a73e-8034-1bfe-2decba68c62b,2348328894,3688172433969927885
+47ab8fb0-6a66-c4d6-45ea-988a3a5aa1bd,1721728536,9854735338174612080
+038a0dd3-dbaa-a880-d194-6b55dc8296cf,1128012883,2973952205644047112
+e7bd4790-6640-5d25-ce91-157c5ddf314a,37464848,1964169238062540843
+2f11b241-6d60-c346-d3da-dafcd7741352,3625661229,16780164111853386026
+d62af625-393d-37e6-0eeb-9a8f597b98a4,3216866240,601143202379045274
+4cd1cbea-fd90-dad6-a93a-408d8ec2b7a1,2602879708,5097960227484194215
+6ebf7741-6b0c-4e53-a7b4-a051bbbed19f,2303190004,17850740146842367962
+afc780e3-7c5a-962a-da6d-819e8c5f66af,254381093,11148161397304256569
+bd55b429-1ba6-5581-b66a-19211b97d397,2793580185,5461496818053091330
+26b9b218-b4e4-9f46-e96c-3b99675f3780,2990038354,13083928101800848730
+9e42d73a-b065-9dce-3459-e8831e04a1b9,890281777,7018728377761685808
+e587b6c1-2a35-abcd-4964-f18e82b8c567,3196403086,15321188911126955170
+5a6208dc-b3a4-faff-e381-26aa9b326124,1283413585,13107721866140021768
+14ae3b0d-fd56-e944-42dc-92cb1bf578e6,2843207444,14099843863700206896
+2bdb4d2e-e367-9621-e816-710db56ff4af,4020651502,2490668757222266547
+f1b31382-5b67-fce7-ff89-b814ef42a498,2129898112,17028628180307674649
+a6dfe5ef-b5d3-b28d-c6e4-31150b01c149,1009343291,16615963992498200285
+a67b5f61-94e8-81c1-7081-910c0f94dbf2,4168233430,3094185432225202319
+a6a9b8e4-0626-0864-afe8-8cc8a0427634,2292220482,420437409963067659
+f6c57a6e-f017-489b-ac31-4967697a2730,1925227764,16342000685927834174
+1abc589b-8444-c768-73da-e7d73afb2f37,3172999328,4932576776466096089
+3ae64652-1078-0e95-e900-b4cc8a0c18e2,3740819351,1475483444074422091
+5473c324-1a96-80e2-0aef-74a96cede457,3009773701,14322892078997074974
+72a712d8-6abd-94e6-25a8-62521ad177de,511089646,17502053863264839946
+25d07aca-2e5e-bdb5-8259-02c1e8e93ff6,1116321326,3924974317731985111
+da2989f9-9042-f380-b98c-40192882002f,4091088263,5655553139300815530
+3951e677-f4ed-2a18-eb4a-2726a404a3ae,1737952949,18317745938294533503
+b2a2f137-33a6-3fe6-a492-1e3423721beb,3159165770,12679461800401028871
+a22513ed-3d8d-2ccc-ea62-328ba4e2bfd1,3123759941,4091818285722111820
+01db4af7-128e-2705-1c9a-4b3585c0e820,2990982816,6306837537768650267
+35cfda5d-f708-6582-3325-d1e70c3432b3,3742863872,17109235568098097663
+9e486486-93a6-98e9-bcd2-91a9e781ed3f,762844024,18099148584612096221
+3ab2d966-5371-0f7d-c553-522ac0459176,341222735,12650553284817101196
+ca41e300-177e-7cea-b306-c3cbb6010e23,4072062507,5555904493967539933
+e257c6c4-8f9d-8612-ad93-41deadead6be,1486531844,5211503029066653704
+b9f19012-e8cd-2f12-1cc0-1a96f6687dc1,1930271012,10216228380380350847
+289cfd15-6e8c-d2e8-b83b-309b1e43973e,1307057238,16865504466369706770
+6c3e2456-f218-ccc9-5661-26c1a9a5ba9b,3034988983,11355645720965553665
+d2d69f16-401a-456f-ff13-fd93e5bf8e34,4054962311,18392063378544735738
+badaa5e8-8418-0b97-fcfd-b16164031c98,2421372396,5271786813790852358
+f2a9e6f6-94a6-b20e-74c3-13f44a4be175,2192723110,9133400544028649818
+29470b29-a060-ed69-bef0-28bdca6bdf91,938232811,14544412947790303185
+4b9bda23-df03-0fb5-88d4-a15bc32f21a3,1081071235,17563695427216156908
+5a00247c-267d-5311-78e4-cf2467cd9d1a,2198311011,15181571438256487517
+2a2ef346-deaa-e61c-09b4-2e8da07011d5,2176437260,17364123994938906360
+a73426f4-e347-c3e0-6abd-1a418395e936,139538541,15719138131768206536
+92613de1-d7f5-af36-7636-251ac8a6ce24,991896723,5676168572208759381
+2a8844ed-fdff-65f1-3d72-356c36582b16,2480630028,4588416824708388798
+aaef1709-c0cd-f67c-7a99-001f8606ccd4,2608862991,1087351353763504705
+4fecec6e-b0de-018e-91b6-9d06d8863142,3825954351,652700264085212019
+8d9e1318-eb92-915f-b50f-86a50937d3b7,1008079559,14831700652658466058
+72dd6d6f-7f9e-d3dd-4083-2a57eb5ae3dc,1423845580,6634869383478973305
+81285aa5-9290-0185-b0ec-3442141c23c1,2937202945,11469232389835476351
+48d89237-3af0-2685-d87f-711aef0d7faf,4150702323,11605323952852170349
+496569a1-d1e2-de6b-4fc4-f5d32659eb7a,2455446638,17735457731842367985
+d0b9785d-b39b-8808-bdeb-85801dea43fa,1968112583,8773751467714911773
+236b039d-9711-e120-b201-291ad6092407,1404172696,1665090067986516435
+7a7f96ad-eb61-3a31-77ed-dbd9f3a5e9e3,890758761,11274626183323061525
+123a8d4c-1e03-3ede-f572-e136a33b7649,995256414,8053417990398025589
+c9159b73-a1ed-f124-43c4-8f42a7e08856,2305417353,12236336798065944007
+8443834a-6814-e6ab-5bff-7d6a9351d7ba,1766799926,117043490846942745
+245eb88d-229c-1abc-a1eb-673e8021e9e9,2135410418,5377474286111833084
+7b9f850f-fc2a-b616-e3d9-f5df4c5cec0a,625088269,8588696913192118931
+d41481b8-0e63-7da7-0fe7-0629f93eed48,3563561663,18368735513329653922
+1b3b41c6-c142-50e1-a64a-ef28508baad1,2288066727,320786775761102185
+69c21207-8bc4-42a1-35a0-72f9437ba786,1433040237,17049129848851380839
+f6af884a-0f57-3346-e139-099838cdaa91,1720784307,3450857280281586921
+62e9d98a-d379-0974-8b6f-47887f789e23,2902903377,4160347453932256220
+3c335d6d-930a-9369-52ca-839d4ec29380,2314967250,11509550859665288739
+0669cf1a-6c75-b222-e77f-bdb35bff0e0a,3751016040,12205783131505465901
+13992989-fc23-c8dd-e861-3d9556dd2999,3357466164,4116969101566008817
+73e54466-e2cb-f3d5-38ca-b1584dfdfc66,3313828919,15573746158287771031
+f47f85e6-c683-49f3-ff83-e4dbb0eae852,4206793146,13448939293407227360
+e9410679-7717-64e6-e052-ac999ce990c3,2117226422,17551532494728805490
+82487a6f-d836-56dc-b1ae-93064fd71d16,968623688,16747572095939943710
+a96c8a76-b9ed-e28e-f7a2-2c188f07ffda,966262306,2326432530778829897
+d4c94f6a-0f0d-3aef-a482-de68e1afe668,3858709118,8098660349830200308
+efae16b0-8100-46e2-ff86-b80ddee0113f,349719882,1559969718220427659
+66a74150-bfd6-abe9-ccae-e6e7d805ae0b,341247758,1149747623488043849
+711a0f71-141d-f27e-80f6-fac1a563587f,515429139,2215281846455445138
+7a6d7847-f82d-f434-52a7-deccd2f89aab,1101766067,3454148142241676442
+947ade75-f8e3-e896-882b-2c36ac8955cb,1490030076,3551835095118396476
+8b022d1e-df49-37fb-d6ae-69254d3d9221,1923447723,15807093927838709312
+681a5b86-7ebd-7efe-f130-7c018b508161,2335095992,320987377087949619
+9493f38f-674e-a36e-4d4f-731289c1d8bf,1375094370,10576201515658784999
+4b25af45-d1e3-90aa-107c-566d37090cbb,1568718184,311902412980698208
+afbe1dc3-5c73-dbee-8fc8-d0e6825a6ec3,3846319849,3636402370210244827
+ae96be6c-f62d-73ad-65a0-db9c09100c49,3325239654,12255378729732384171
+0051455b-65db-a349-5ecc-b448a28d6872,3087914648,18069392871086796515
+7478af1c-4dd3-21cb-8cb5-6d7516acabf2,2886143319,17660991406127699214
+d7becf4b-f095-eba9-156e-4cf382fa083b,979957757,10859773463672602189
+8f2f31ee-a5ed-a40e-8d57-90d5069a2984,11816392,10380725389116741417
+a5011d24-2b3b-76d9-bbfb-39ee681a6e46,4248215951,7352967398708894331
+b949527e-c992-521e-7d94-23be38b5bf78,409870671,11686613294443598824
+d6d32284-ba56-b14f-4280-c7d9a394147f,3464106631,17921778292933094053
+a02c9b4f-8aee-d66b-dc76-3e6f66093f7f,2702980769,12367244926524351188
+ff87bc4a-5766-7f2b-b71d-c52a793d55a6,790490643,2576628294977002637
+d6d7bde4-ba72-ad0b-ad8d-f55badeefbbe,2864892703,484201292523301862
+61bc7eba-4983-b43a-678e-6083882946b4,2881898447,4624797387686064542
+e17bdcc1-ef40-9212-4133-129c6db6931b,1123701433,6377732845351456240
+85c3a8fe-5b20-5e92-cb66-3b0c5a703f09,3603167553,15628144308900644298
+cce9e2e4-75a1-467c-797a-fc7de89a6977,2726828565,18005310003000982137
+a01ff4ab-c11b-939a-4b61-9008e12a0008,693412489,11728679334126771008
+ffcb9e80-69d8-6770-8c53-b4afdf9211a4,4241680315,11303921569308920772
+6d5f9f48-b094-d96e-6d1e-1e51a191f939,4180112125,10628879549407108844
+46031656-e2b4-2908-20ca-c488afd5cc4b,1288700854,5589964568432144946
+f053a423-aff2-a59f-3b35-7d7ab8baa415,832761235,4090640024319684830
+25c8ee29-475c-1925-d589-5db30f6b4a17,1046103019,7787342150033163793
+d90ba4ea-4be1-b83e-beee-75fe8209f59d,2084002522,3557334956050919043
+3f2bc1ff-5d56-0fd7-127f-366cf0581968,116408894,9967755953391275182
+14ebaa05-0033-da19-4cb4-4d4f5b02f7e2,3309043657,9686138612385764196
+50d55933-218c-6e1e-2da9-9d59fc95e77a,1911605403,9310567340354358410
+2d8b5781-1dec-978f-8c04-c4d21c40eef2,1353470904,18055831995306824129
+42995ea6-c37f-998c-11a1-c35d6ddf7c0a,2481535522,4055261929395548986
+bb474395-2a25-c29f-83fa-bb63c7545584,2121875527,1951975960696940447
+76fda711-dffd-d0a3-2f5b-9e165325eb0c,2871993891,15499354280513782801
+e0450878-6681-ed2e-d957-0ff3ef15bdcb,2514247407,3312510877844206372
+8e7bd4bb-d64f-0f10-6889-f1a56fbf904d,174988994,3573016800524076327
+b0821ebc-d6a7-a9b7-e011-29064d2b7219,3386279009,5116811898419732566
+3c173241-10de-c751-6825-18648b0cdb14,155626305,1772246541403340295
+3a60bdc0-d14d-4429-bbe4-ff6457091f05,1855656474,14781346044888805828
+4c38421c-7aa6-26af-c7cb-c006a78ea034,408014670,3144189972213245290
+c9f0f13b-75d8-4a99-6ca8-e368dbdcafb8,3606017914,4415605924268950287
+a4ced699-9f20-4ea4-2dc8-327e8858ab8b,2315631223,168370735746506705
+637abad1-8a5f-9582-3db3-3e893029590a,1225628030,2423050016898929186
+15f3fbc7-6f03-8764-4509-13dc1c3adf64,2864046048,2913337201870203961
+ac2288ea-1841-2296-b83a-f9160e96bad1,2504164763,9397162175359898380
+a2f60400-404e-aea3-c9c2-472e31268ac6,2776111809,1890642572674335866
+72e7cd6d-2f8a-e96f-2875-425302a4b371,3392103089,15209337697459535349
+66ad2d70-41fe-c64f-6936-e1510a426d28,2496212960,114009451220731311
+731477f9-a038-2378-a408-5e8aafb22db6,2941201711,2424479517256525548
+bd15bd7f-dedf-c90d-e9bc-43a74eb1f4e5,3398235446,3231263873574635610
+c4da9c38-260e-6cd6-a8ff-346779d3059b,3205348598,14067965754428661377
+a4083c5d-cb0d-9c6d-c998-b26239bf5f54,425743707,11516949666376713202
+23f445a4-0da0-959b-ce1c-9e7f4c77c586,3498047412,14518034014697423112
+57244f96-af1f-3ca2-7e15-6f0c57e319e2,3095060278,7945421764277479500
+9a813db0-ec73-b39f-3cb8-92a41004a8df,1168964642,17975804740283240179
+6d145a06-573c-fa2c-0842-a05195c9a05b,2607084809,1677655482201436317
+89c82006-93c6-0552-6100-b1a31f45f61c,2502574419,9314011824531561435
+06a94dc2-563f-6121-7539-03b40ce162ab,3446483885,1460195893584966190
+08275228-7c2b-f844-fa2b-a569d32d3026,683060918,18160229827667249950
+7f55c44c-44c6-8e3f-f4d5-f6b05b2a98e2,1676008951,14390335537868420775
+8ca88451-386b-fcfa-c9a9-d274ceb281e4,1276347738,9597982899942621644
+8286eeb9-8adf-91f4-3eb7-4bce707d0f4a,3452260670,8204975276600170580
+ea6ed210-beb9-456d-2b40-a4824f7cfb51,2228680998,11052376694253955292
+860cba59-56a1-4643-dbd9-8533043c2b24,2574144104,11610247906731114902
+a78fea53-8490-5ba2-a89e-d3f777dbaf83,288678544,9189291130457159855
+c7c987d4-b974-ff88-b959-396577c7991a,1231407398,17187551265830702956
+aa088d68-9348-7199-8e3d-0d4f46a6663a,3256663191,10898162986441246200
+7af6e8fd-ab2d-9802-2e9b-b41c5b972459,667076462,5917727979705691014
+b106ee33-8aa1-358a-8eac-1f41e2890bcb,1518614052,8570524062717869337
+1bab0560-0a86-4381-220d-6030ddd9e5ba,2204965909,14075296948019572961
+c699bd80-8fab-09f5-4db8-5fb860af76b1,1721194563,16368484761019949746
+efe8655b-1625-2cb8-0562-5c066abe0fa8,3293437732,12793573721528497627
+3ee8b62d-3d3b-ebee-544e-e86fcba1d7d6,3415953049,16603731533058179012
+7168a7cf-46b3-95c4-ba8c-ab2da96ae201,1102743144,1120547530295085059
+167d9d99-8c34-1d9f-ec75-678307af9ecb,3659113332,18068954512452724
+6eaeef78-21d2-2817-e331-85e7afb32309,1414725062,10299327615519905774
+d4c18ca4-8c09-4e6b-ad3f-3e32bd712745,2910747148,917788373627252449
+39103b6c-7694-208b-6331-3430a00db060,1917692596,5860910280181552279
+0f291bc6-a6bc-a3a5-7cb8-bf3de4f6d6ed,2025575410,13077024051622098878
+0dd37fea-c8ba-24b2-0d7d-f3afa719fff2,326849597,6345038670339775904
+992d2f82-e2b8-ec71-75f7-cc009a6d74c6,2660992524,2980849936789895941
+519465aa-5d15-f9fc-5a88-01dabb6e01d2,3206955874,10729533717709973356
+2abe9585-733f-6829-9374-29d5a5503efe,2629781950,6989646844476698043
+cfeb5e96-9de5-a6e4-16af-0b6262f03844,155944553,1393552279397165992
+38f59328-0feb-753a-5f56-38f89bb52b61,478388599,13135252513186406066
+1623d5cb-30b6-7c24-220f-672b05f7e48e,1110725844,10769073749083261051
+f56ab17e-a202-1d75-6188-b64f25ef72da,1966701429,9795690500243578132
+1b026e51-2bb8-ed92-eda8-684d9aec6e01,3841323524,4127624504411100479
+10a2b015-196d-af58-e0ef-765e5f69866b,2759861109,9703261890258272141
+5ebbc55f-ac02-bef4-b271-7f8d79b3b70e,3330596312,15699977010167102281
+94912076-6da3-ba6d-70db-57a0bc68c829,488560827,1186225220797092183
+9503f860-ce5d-835a-7860-a270e1938af8,1755834916,4068082171722451873
+6bad04a1-5cbd-f7eb-f17e-ab2e24678466,2819107639,5362180970781670268
+0630464a-9a63-f0b0-f3dd-51de237c68f4,3262996062,10913178936013769125
+2bcfd7f8-7064-eb37-37ea-62fc9eb488d0,618110851,1134420662819536653
+c175ed9f-11cc-c285-aff8-b84da8322877,1199870355,10898560437903802567
+140d9f12-d7bf-c37d-2743-efda4929ec24,1443413669,15177302544174717769
+2eec80c8-c4cf-c925-2fa8-4187b3ea11f7,3576483687,16029386468658720865
+5317f5d0-78b4-038b-ef1c-7687a759a868,508862629,12602371907265469227
+90fd2d38-2d0c-e260-64ca-db23146eb6fd,3388269518,6387219713611444569
+8fca6ce9-eb7e-6d49-594e-913f1909d26c,3550647584,7545097000083955945
+d2a184fd-9814-96fd-f79f-b7b21a3ed906,2037625010,1005670981581250392
+e5fcb1c9-0039-43d8-1af5-d2976a8ea97d,3201220825,512305985838894951
+0c449cce-ec92-c2ef-8443-824524bdf7a5,2550327571,459677682357044299
+86bfc693-9881-2d5d-9ffd-34d3f65e2995,3358162374,12688459375807488012
+e90083e9-6898-2fea-867a-7ced925b0c5e,97890663,4794692501942389525
+c029faef-555c-547d-187c-be4360ec9b86,1061294028,9670372528784383425
+cf565807-167c-f21f-21e2-4bbd5667fab2,3009999332,12584021943974112716
+77fafe26-53bc-beb4-df0c-9ed069e672b4,1052928460,3868916352121948161
+960c2266-c67c-1153-3357-c78e274f7c15,1558875041,15989204893275078327
+c23dd749-197a-3a2a-7aa0-1267bfea57be,1114244558,7439978332588656484
+f3455171-ba07-c317-e6f9-669019f142f3,1210433578,6964205281111455554
+83e253c8-b951-0baf-82f7-9909fa0c6b53,2380735165,445495505395070929
+a6cc8c7f-6f77-7239-27f8-ac3c4c0e81f3,64214152,16130097348757162964
+69130321-25b2-c170-d532-91fa59b86a9a,4070010814,6619379395842748673
+9c4c8864-c907-4665-0647-fa63a3cc2278,2487143009,3947355435172676881
+80bb5392-093a-f61f-49f3-8e3e0dc524ed,3558536676,16799758940987429126
+87941b0c-5a38-72f5-cde8-0895f9dd9455,1143914662,13008562691532354664
+b8e7ba10-88c7-78bd-d3d8-519538764cd9,3872961337,4222919374460443875
+68fed89b-4bee-4418-6212-4f88be7250e8,168303504,13561122558546928730
+3212bb0d-df7e-25f0-0110-34b039edbde1,129212837,6688780862344666280
+60441236-e2be-d0a9-95b5-c1137f1be713,3613872900,11132895866319993010
+7eaded70-0343-73dc-51ed-32fbb214189e,1498535613,11712958073990782462
+d2d070f4-99cb-07b9-d21a-8e9e5d9cf808,1584024600,17388105763107172546
+7c0f942a-d3d1-4903-fe2c-5a559dca03e0,3317439401,17346820413229055227
+d45fae5f-0d3c-e99c-0d84-990063ee0010,2763069930,6204303526599287888
+425cbdbb-db8d-7759-c1fa-c327eb8af4d3,2365901606,13639042156827228037
+7d30d628-8b49-df74-3f40-0cb5d9e483c2,2238806702,1702951123687833881
+abb3d60f-6b99-bbb3-5439-d7fb068c54b8,1483269801,4556897727981292054
+59be095e-d684-d0cd-b1b5-96840b3857d6,3838731474,10423661846551925137
+bb81f8a0-2e49-e33a-1de0-f1642eaa9917,1284110550,2612267273660847299
+9b6cee08-bfed-c20b-130b-0a4dc26fb971,4239379586,5872842452015756349
+26c32f23-b988-c997-c777-41ad48bdfc0a,556271815,17966587808300297363
+171071c0-98a0-b81b-27b6-3039834a66fb,1208923846,12165531852202212866
+a1717eb5-3a05-bdae-3849-0c6f9f3ec8db,656900419,15105109237554490960
+7a0e6566-1ca8-7394-0634-7f57ed32715d,1931863829,2585500658018190550
+858df7ae-186d-92bd-e5c2-10f1fc3078ee,933665709,4413827164669449597
+6dc3f024-6f78-5ebd-4922-9421aa678807,2298547128,4740589207244105149
+b9fc8ac9-7edc-c254-5899-c071d8e97788,2431895261,12165218948423805077
+fc4b1a73-853a-0680-bf2d-a2ae89e17e6f,3536397967,7719139129556923572
+7a6ebe01-1117-674f-a737-8ef2b3477763,2179904982,3817404979027565955
+618a2a4a-0d87-74d4-4149-a9440c5058ea,2506912326,17180632210172539662
+0412db93-ab2a-31d4-eeb3-0a6d2efbdea6,1585032925,14157704876313477775
+8a049238-06a6-a1b9-7b47-a099dadf7450,2185492738,11534501374121845410
+51897553-0780-5145-a14e-d94f4525dd2c,1724102320,504990924809301306
+39a5163a-58e9-2946-1725-76910ac5652d,910362399,12890939814162897109
+b4cd70ee-745a-5dd6-8c28-8a866cdbd905,2463505134,5556965989788409693
+64705d3d-eafd-65b7-cfb1-d2d269059e2d,2637709266,15113490866751571269
+a1199a5d-3cc9-ffd6-2619-264d920f37e7,152474772,6818598208648867080
+404840bf-33a1-7b29-4595-979e810f754f,3926669189,3570052824214580294
+df4e1889-1a06-31a9-e88f-a8ae48125cc8,3784893498,6289723660717084006
+a9daf7b2-f4b7-2c65-e92f-077bf1b6bca3,1565618915,2150663300901395549
+28ecc690-166f-6a87-8364-ab44328dc856,631642753,5658476577508302840
+32702e5b-ab0e-6ba7-051f-ca70128fbefa,1875581598,3116543785774123438
+9b61af11-2d0b-3251-0699-806282cb9caf,735538207,942577065668979212
+794f28fd-d492-2ff0-704a-29b5dfd4a1ed,1492459647,8111116572716120411
+d641639b-5cd8-17f2-9c97-5fff45474621,1451080075,2274504708154966493
+321cbf72-56c5-a8e6-a02c-57b50ff9c3f6,3248333068,4848288787131983289
+680d6f0e-81e9-a544-806b-2ee5ed3e38e6,3449693476,11273079576811366818
+e1ea4334-a833-9570-6889-3ee2359144d0,2132435348,16696629068973445349
+8bd27493-c38f-e4d3-6002-c0200bf3c95b,515420759,13215175694612006538
+d6c16311-e44c-80fa-7f4f-d4e844881330,716539297,429002059745213971
+4aaa1df0-4de6-65d8-b869-3ae8b3843797,1649534840,3333217668795045720
+d2404657-c821-775a-8fa9-364afef19358,1557785499,7574497915248791019
+c991f13a-cb48-e43d-03c6-2295036997f9,514302666,10280526436574999108
+01b6feaa-d271-1af7-1273-e068d2ef88bc,2633412280,15735622183133361663
+7b81f51e-bf0d-3aa2-59d6-ad5819822813,3573042016,8741338405698458088
+87e11e71-6217-305f-9f10-1b957792e54a,779217599,8146062402455084435
+0b2f7cfb-7de2-b2b2-4ebe-9d8f38b4fe81,3732423203,4311292202830799249
+0c27d5e7-c521-f234-92f5-4ed7bc07644f,4279740355,13837389220760425295
+454c5526-c66a-651d-3a99-8bd8e6409eec,1666729666,9227673031365224159
+f9fc4849-38b3-c868-90b9-b00f981689d9,3161120999,3490289645134098205
+e2b14b5d-1836-2dde-eb1a-597266cdb8b4,3091253835,11099870922172270290
+72f6892a-0b13-8105-1f4f-054277005ecc,202414032,16128483506025492036
+1766f10f-d321-0ae9-32fc-85f3cce2cdda,3239929318,3839100473855433234
+28932d8c-4451-aeed-7c2b-f0518aeafe88,1235159446,13136055350927079053
+3470a25b-a27e-6d66-5ea9-6a6d09325494,1347830601,6402784865416156157
+d66a2798-20d3-b360-fa82-0dc1e8038ace,3853370985,18093312193386866214
+b2a3c1a3-1491-e5ca-752f-34ed1f204023,415090073,1329923164526955327
+1670098e-f04f-5724-5e61-66b13fb43310,1529497212,9623649808285683516
+b4d8f157-1d86-83c0-10dd-8e62981e4fc7,2261083005,12029546928518166825
+7cb5b348-dde8-8851-46f4-5c00761769b0,1098392188,2222407102507063509
+44f2e433-a2c1-8d27-8511-255ae8b0f482,214959945,14913560358357209399
+838ee6dd-348d-6976-dd59-ae937735eb01,3174488077,9227004964763365515
+a52b7d36-369b-03ad-1ad9-07616c4254e1,1015227549,11432540102971094268
+df303844-1f29-37cf-5738-f48fac2cca73,3951561468,17736382766281835434
+793127f3-2c65-0c49-1459-1cf553f5b7ca,2610633200,2373593268981016151
+6fa4442e-2837-4fe7-5699-92179cb1d52e,61966216,16416963282482387786
+dd50ec2f-8af1-f407-8aaa-6d6296abbbf8,3315850963,16271962168270964624
+29eb80a9-0181-1d1e-d88b-41066096f302,3290472795,84695099648828559
+aa862040-5379-b7ec-aece-a6da57099196,794993598,1688221217223509568
+aef0f49f-8b7e-650e-209b-5ccf3a943155,1556064123,7412736071562834437
+7acde513-c1bd-557e-0213-9a30e874f71e,1974429213,12245318585007051172
+63743c72-affc-ef92-ec50-fee15aaaf683,2976105191,4245556751077487491
+862f00ee-1269-f8c9-b1fb-cc9a764b4b41,1592156776,11362103482922058179
+15d7708c-d8ae-0924-65cb-28602aeacc06,4232923938,261387064024162417
+f63f054f-b476-6276-7fd3-9ffec54adbc1,2124321920,18073447468852501516
+97d5eb23-91a3-7d40-77ab-9381af98daba,1746287399,8827196618194929532
+f37bc050-f494-c6a6-f0b6-a41f47c90546,4151141011,14387449055135188896
+f1c6c277-f4d0-6b5d-7f6f-ef6a65deb55b,828203068,11727370679888653649
+195d85d9-eee3-5bbb-cca0-cc7e57df7dbc,3114932844,8829388942574486273
+6c1f7a35-ac6e-3d62-0543-192bf2e49385,3241648482,13698751198355276048
+13332e70-4f90-362e-941e-fb803030ab46,4160334971,6605258816387022660
+d29085e6-2964-824a-2e70-724e9aa791fb,2245531599,14557248731352944456
+ee9cef63-a55a-070e-2302-a34d892f8792,3532271455,13437402276072606239
+15d5c61e-6439-6838-3336-c3afbb9d62cb,2651114408,292383397098714798
+0ca1d187-4fb0-b1a7-89a5-71994cf30752,2699467583,16951906166023970837
+e981cacf-ab04-e411-dd26-4e11e2cdc5dd,36188535,3990921416575426788
+5ff2a233-f6ff-5c40-883f-dd21521cecb7,4178544919,16045011235329697338
+60da35da-c139-1582-5780-bf9d513fe06e,3844208127,17929269794521248948
+5e49ba09-8a94-d5f9-8dfe-ddc0d062b897,179677001,3479555589839935244
+71403316-adf4-e417-4700-32cfa4028328,2474177211,16707199180977208996
+73987741-5f62-4b34-2e07-3a6e3f2deed9,3168788564,12954750363222527742
+fcbdf3e0-5ee7-ca30-5df7-dc31fa418730,3657455882,11834138638691287681
+3ccef809-5b7a-c13f-84c8-02207e465bbb,4170040287,17052400409347057710
+383af8a0-9dcb-71b5-89ef-3823b44d9dd3,922514042,6200280113880655150
+7f84c0b4-9540-8628-f875-31c49f44c5a6,2586485828,16978158828679927819
+9ae52ef7-9eca-916b-c973-79c29b1361ad,2839002121,2867196778202400548
+d20b3a6b-1d84-a0ef-4fc1-60082ddcb0bb,1623011530,13285790007234440972
+72fb2915-9932-3c64-eee5-197d9ed80e3d,2755423867,10798765766016836329
+e90001ef-0c18-f0e4-6673-ce15e87fb0a7,3693108339,6806661602101648536
+c256999b-1c5a-2fb7-cff8-ef1dd63dcf83,1505144291,13336721581604899238
+62fdd291-486a-502d-8562-ae05afca85c5,1374686037,14233706722334034560
+edd4e583-a82e-823b-d266-a3b0c90ec38e,231979081,12571650301834182406
+36c4582b-0d47-c1b4-bc9b-3d7d5cb0701b,3314963188,10015050522157943528
+35ebfc05-4f96-b153-1872-d6f4442f3e39,3169242678,17050595495353050018
+1126e115-d4f4-cae8-151d-31395011b3ab,533611732,3364590326856252407
+84012fb0-214f-ac04-2ffc-9467ef1b32ba,377029873,2721177674424894913
+744ccc0a-6c60-a0e1-73ea-fbe40cc978b1,115071654,4593080839971191676
+08320f45-101f-64c1-6f2c-15e5cf259124,94054614,13192407719811517398
+31d75aff-5777-02b3-8dff-0076c26aecb8,334720972,10357384709402051595
+5f96b5e2-317c-38c5-7938-e835dffe8776,3709169601,10277420354126957163
+3686100b-3f13-5302-8b03-20281968ba27,3739812986,12183631062587909073
+a0076a7a-71f9-05ff-5f35-184cb1b88270,4090121252,3124507419907313655
+dec18726-107d-97f5-054c-5fdd974b09dc,1466666137,12563586283791777478
+7f317651-21c4-a925-3945-6641d445cc0f,575338258,13234960707505612179
+7db7ddf0-7196-a748-6f31-79bd01dea401,997819538,6701622360100562888
+1f19a9ea-c60d-e4e8-bf77-f372c82ad1d7,1332532109,5990107387927746324
+cd560af6-83a1-5028-c530-fbee0ede96a9,2359088878,1620028757200956597
+6847de19-011c-d5c0-ccc0-1820db0e0723,977494712,12411809288989558744
+666a6cc0-ccb6-73c1-a6f1-790614021629,739670459,15705579685220655851
+8cd8a79d-895f-090d-acbb-f712bed59d29,1917354119,17344663163374745517
+91590eac-f161-dd62-89ca-63f7d6dc5918,945547040,9363234581448907985
+ce9747e1-77dd-4f6f-0432-8a3026a15430,570009538,13296685481835507306
+25d21498-29ac-aadd-f36f-74e0802fc4d6,36280420,13051007272667055431
+820833b5-d2c6-4c6c-abb4-e902caf3647a,3935434484,15540756620406074438
+0da48b74-e050-710e-cd42-d448e7514ca2,397618850,10979924089894230730
+1a659a23-07c4-0072-d1ee-7d247ad254c1,2281502647,79785188834356385
+45f25a7e-af53-3a1a-af9c-647905eb327b,3703807301,12325497707693457123
+c8c87df0-e0af-3c2b-63c9-c75ec35937da,3474478226,1299737061258992668
+5411d77b-cdea-9502-7b8f-af7a70f18906,4091402329,1093595082457395363
+4875b553-36c3-ce3e-9b2d-72b514035f6d,2660727476,15993758973619403314
+9c70138b-0195-ec69-1df9-c9b3d6a1d16a,3494020079,7333750898876307344
+e089f01b-f19e-798d-c6bc-b5e267bdeb1a,2495679711,8877511141338492602
+b23c0694-e62f-3b12-430b-37b70032020d,2346656610,10254536529918569449
+d699ffa2-81c6-d013-f8f3-df281bba6dc5,470071329,790532408108933178
+9c0d9cae-748c-7f5d-6b3e-8f59f6e773d2,1472072591,5629079016019920673
+3a199ef3-04ff-f940-3db2-23e55d7e84b8,1409304274,2450296365460190691
+b8c31e7a-4b6e-e973-b9c9-d24deb4dcafd,2599093312,7027496613212841349
+e7a168cf-81be-7aa3-3200-7bf205bd522b,447049540,6200549306710165104
+81247218-84c8-26dd-4c19-357bf465f3af,2145381065,2375937712581238590
+37427913-37d9-0b87-35a6-edc4530df357,3302123659,14551362212200993282
+b89ae89f-e82f-7ac8-2127-fccc6c59ba6e,589699494,8154100090533416193
+a6be32f3-e849-7229-699c-e9068d16bcab,1572726398,6842967302914282432
+41ba172f-7b95-a061-06ff-af3a6613b168,3003054229,13704270078647582444
+956c74df-4c1e-0a82-df1f-27ae5d76f4ff,2606182683,2466720042464251376
+c1be47d5-2205-58ea-1699-c5218bd6ff3b,167791440,8386309397784492940
+a59df0bd-64d5-b3e8-695a-6c02066e83a8,4165481143,11936788205322002616
+a554d522-23bc-d566-7913-c26dccc772f3,4193794049,6801686147644356797
+9d643602-b88c-790a-383b-4bad29858a56,1800846826,14965516496065257257
+cfc72def-880d-8dea-2c88-117fb99f7702,3831970309,9941913877745577225
+616a1c4c-1bd6-afc1-76a5-58c321d7d764,1232003163,11705662305614888776
+7d8d1d9b-2d84-8913-2f6d-ff6f8113cbba,489451372,12206629301245688033
+84465124-8c5e-0f08-c7ca-6d13f3316772,924435168,8924173714395150311
+3f6be7ab-0498-a950-c343-40714f7d17dc,1358202000,7731624903628855460
+553f5663-f29a-85a6-ee1b-1ca97e95a033,4291389251,2973075746114473642
+eef7ece3-3c2a-c3d6-2b64-4b9de6c46885,4265887893,17540022160625568067
+02d96715-6dfb-6714-c29b-fb1258688142,365234614,13381296434780412973
+f56846ff-cd87-5d1f-96d5-bc6c10139680,1963312386,11283080487718553330
+dfabde40-6249-efe6-12b9-7fc7701dbf8d,4075135983,7849108104230271196
+fed3c290-6dde-d5d1-4b48-7cf47d0f83cd,1550152073,15241295675073103883
+0c59bf29-95e9-2d47-7372-420bd5379aaf,254168019,3205222601427045978
+b3561b13-79e3-101b-e67b-86b08f4d9ba2,3909743227,14680816109564104477
+edfd30e6-81eb-1c9d-5e7c-93c70bc4ddd5,2146838785,10493643617686920959
+8573ff13-cadf-5f8a-7506-7a3c21c7512f,3543136413,6305114261984240638
+8e46f08e-3c14-bf30-3841-07ac4192121c,270942301,1573613429328846454
+f3fd6799-d440-e438-a397-16b974d3c2c0,2464590970,4766275775993985122
+2528be01-8622-6e21-c1a9-606f0767e996,4109440695,13505313299491898719
+f51f6f23-a86f-be5d-17bb-e896414cb283,323109446,9467458564741081663
+de2f3f97-8891-cfb2-a54c-046e39214a8e,4041056404,12025161859346326295
+6a35cc73-be63-fdf2-ccdc-50de0cafcee2,45815950,15648466753800400454
+8d180efb-e4c0-5c43-3373-c051655393db,2169479917,2124335167135383939
+37a3ca5c-fe75-c67a-795a-1326d1fcf49e,2506966497,15765665133427780438
+ad98fbcc-97f3-f57d-5483-ba4c3681c851,1864846918,16399658976086319656
+780333c3-8bb3-1bd6-3385-3acb5a0e9bae,1002903075,14107730314360037352
+248d37c7-d768-0683-1290-84777ad06239,2186684399,11661001876828945313
+5d523471-84a4-4a0c-0388-e3c8acfe54c6,3320767872,103629619273349049
+179ba2d8-510c-2314-9d2b-efddb1ee5d78,3002200703,16578159243190285085
+ce4d0363-c04a-fc1d-92ef-11c41fcc3b41,3514562401,6311896554634032638
+0bef83ba-0fa6-5679-2321-d7c2e178c953,462791738,17120390128672971286
+9dee9daf-7185-186f-c8e0-d630bfe26eb6,3027567742,3369640739358196670
+7cfe82b1-950e-a095-2be2-d7e249ed7822,3649702135,11617010543485412700
+c6a053e8-7f53-f62e-5bb3-50dc18140bef,3525946641,2390776295211400749
+73a5c751-8a83-4e4a-1194-93da9cb9d135,2273035245,8315159652967209322
+96777d50-521a-b338-1bad-e91996da4d03,3774047526,18071301272552768542
+0d9547c3-cb84-f53d-fd3b-fb45b55bcbb4,2342306149,9453310257282621248
+0b3a3a51-7e87-63c0-3fc2-faa1d82695e3,2237829147,2573366030712584656
+52f9c94a-532a-cd63-0b82-5ad6bdc762a6,2843697081,4384158479044298183
+49f0c8d3-9d4c-3a88-f5b6-4695c93bf4cf,1321259972,2562801142498630908
+e09c6452-c11e-a13b-8415-8f4f7a398357,3004696115,3257613732678713759
+1f1a5c3f-237c-3b93-26a4-b3e9bb12ec54,3912991897,6412861600271764946
+19ac3a4d-c1c7-9240-2023-f6be9719fa06,3242435446,13798935562537172423
+692ef8ec-2cf1-e8b6-4b71-b732d2a3adbf,680790801,2567623373765536884
+a7184550-8183-1850-f637-1918a268bcb2,2749129457,17417336736893281419
+5375d768-9bd4-314d-e15b-4096287f13d1,839801394,13869124272256639937
+711d23b0-adc3-4d56-47f3-75e87b1ede5f,1717687134,11016321780188966505
+17d0d8be-d09c-8454-33f1-e09d8047a061,2994530502,2080696538785565224
+67c9fa56-970b-05e9-a67a-020642c00dec,2064814169,7997298550141867733
+aa82f3f6-f11d-01c4-df52-908eac2687c2,2670860209,275240208800552827
+e9e09d94-52c8-10f5-11bb-58d3f47c6572,4145038282,10220955794308605608
+c04176dc-6d1e-8e88-b464-6a0502f8fda9,383921183,1060823024785482717
+e33095a7-ca7b-379a-0821-1070324b7306,540732561,8979356503379980426
+95737009-c474-7caf-8c4a-e26f4e7613a6,568393965,5791233905708882605
+a7544636-52de-db17-889b-f05e4e26011a,2980493162,7903649557238136210
+9d5ce575-0cc0-d8c2-d07c-278d316f71b4,4241179630,4266008391730315779
+b6c7daae-1a1d-cf3f-6c10-aee831752e8e,2081513589,1551484623134622320
+6e637d10-c01f-1bee-0e8d-287db1ebec32,2487458794,16748148112858300719
+c63c6888-db3a-9603-0550-ba43ac1ac664,1595633807,3971924075909456926
+48ceb23c-0817-83ad-d79b-f8725ffed13d,1002082121,15960208388870757350
+4fa1d159-5364-8bfe-a9d9-009fa8e0c406,40977247,2050652079175224197
+e32c2960-c045-5c90-a9a5-8cbb34c07109,3420355601,10939577644914883705
+472d66f5-79bb-2ea9-bdd5-c2030f22516e,3630350181,2126312806319056660
+fbf6c29a-e1ed-7095-1f55-bf699d03b5d9,2746357312,15912558709944074640
+82dc295b-69e4-dbe0-88c7-6aa7724ce352,2908371612,17008129473730296071
+bcbedc0c-0225-b36c-d5c1-f1f7816ce168,1166865333,10283499187398569396
+d0877183-d916-c48c-168d-f2a0ff853726,687524093,18270511421547789059
+ec0a396b-ae55-0114-4a44-a0e6a32aeed2,31779633,17950630652288230492
+9e4ec7b4-722a-c17e-4ec6-d78fbb3922e3,4085788883,7631338749785711955
+10f95ced-fcdc-0efa-52fb-374ee9d7889f,2621931521,10878012129836427514
+8b0e4591-9299-c7ba-71cb-bd17ca9978c3,3935807600,5923216754054151329
+cd741e2d-aeb3-17b0-79d7-92746efa133f,1894115839,14616009041734642331
+0ee02c9a-11ee-2345-a73e-c0b9fa1b8572,4107131274,14421316531236071100
+0b17aa0b-9b24-2af1-4b64-7ffa24716dbf,4192564915,5032932138621842860
+b4339272-4bd9-1df7-2a85-977f648d1dac,3328766640,17392381556706841260
+c333f81e-904b-7e0d-7863-e684216ba26b,1386951840,14936445464521439961
+8ed8d8b6-5573-7374-5603-a489e2b3fe29,2673439416,3775973652460381833
+43198905-3005-2cb8-df65-3a49290a9532,3100243614,4530402856959765125
+87171ad6-8f68-a26c-dc0b-b0329c37ba22,50688044,16394723051400862603
+5d166c7b-671a-50e7-654a-465ed72a7fd1,3936600690,14682663793139383045
+e8654a89-8a9e-d84c-615d-617c0461df81,214802442,10089673126675062863
+01a7fc81-9d81-e575-1559-b9a93f86335b,979602025,7949205336142589848
+8015e2e4-86a9-90d1-9ae9-0155e1b1e0b9,1916124971,16753395953059410242
+330a4770-407a-7ff7-80cd-6d39816f8322,3826605764,3785641961268085967
+8f44c80c-c821-4291-61bd-1f4d6eecb71e,2178454382,1788658643894844748
+d978c325-2715-993c-235d-cf41e0ceac4f,3979787788,11452410549881015391
+78a109a5-9684-34dc-8079-f602a87a6cc0,2835223078,13365920144554204464
+bca3a0fc-d751-9fe6-a2b4-ab8af7fe6cf2,1481443735,9900888642176517260
+6338afdd-1611-b0f9-4dfc-08250defe9a2,3554767231,4597669509132049335
+2f588e87-31e7-eaf3-682b-73c7aa950bb6,2443313185,5636074062782079005
+2073e771-f9ee-431a-fc1a-66446fb693a3,118179108,18386597922529757454
+a9eabd0c-e666-d1b9-86b6-934c42e2097d,578151576,2133893948182657039
+f9eb773f-8cdc-7e7f-825d-5687f23c3b4b,3780679965,7483703666439095725
+a87d9ab7-8ac2-a638-02c0-d8174ac1c794,3059264422,12669167002668490496
+269289ec-8e45-fc1a-11df-95f3944a714e,732462439,3644212646501461726
+d4dcbce1-437b-75a6-fe10-d681115c9955,1646527668,14842181716478720819
+2816a1e2-2783-71eb-7eb7-a39874362452,3802792612,14823380552080856569
+1bf906b9-8325-ea03-cb22-1f6691ddc50e,3595431067,8350860196533184818
+392a327a-9454-90d2-a4d5-e981cc4220fe,159002751,11146987963911160230
+d2a6f597-1914-0413-d06a-36a705b65eb6,2989011856,10006181309254683923
+89fbd547-27d3-0b80-8e99-5441622ddbd8,4270067673,16629813516728305069
+797a1540-53e7-aae5-3c42-1006f0e68da6,501292412,13110362917629263684
+3b1be1b2-bec1-d962-d994-8fd1b9bc8010,2349560449,3734976363658305603
+f0e62eb7-60b8-f514-1ace-6df5bb8a6795,3966357936,14015567821914330690
+edb67eb4-ee99-2164-a8b5-db36d799d5b0,4188418363,14931884004084941689
+2a002f3a-5788-707f-6fdd-8a52c4bc5482,3825282304,15654003229156207573
+52713195-407b-2893-46eb-23fba367b4ed,3845363768,3915646243487669725
+c9d155b7-e732-fb25-7ef7-4079baf666af,4249876042,3308446442935248709
+9a04ebb0-952c-90dd-5a0a-a256425740ba,1831507606,18387188001684705770
+3178a35b-b98b-068e-4e77-cae9eb4d5f0b,3912282459,3162648620748804807
+2b1bf087-15e0-63bd-18ea-9181ab6ead52,869817159,10603060973188654294
+b4fff759-f7d5-4660-57a5-a8198f7395f2,1660632476,1738048770341805154
+ec418633-e832-b3bc-f283-c5ce51e665d7,377245381,6443928357167088515
+c97aa706-7a0a-8df4-9b26-294627b77c91,1224969172,5087958420502218481
+21fab08c-53b9-da57-2e3d-fe6974ec761b,2233176813,11831290433622988898
+ae8c95bb-aac1-94bf-db37-2529a680ad5d,3242911442,7384676788834071703
+316ab9e7-68ec-aba9-5e51-ef856bdd8054,3953758608,1540362725355348715
+e0eaeb9a-92e9-91a9-bd9e-6c23ddd1e73f,3433311673,14035504873144863399
+6ff883cc-ec8b-5a16-435b-d42a4a713aaf,566876220,7370695623570268420
+f30f13c2-1fce-2911-0161-c50f81f9818c,2821750363,6290270916787910169
+6fdf5d49-80e2-37c6-3bb6-b6d483728133,499366979,2452577015764167723
+1337ed1b-cee7-2fbb-1de0-fbb606341b6d,3534650894,13173272843250499209
+cc25d758-e018-1691-093a-65a1bf7e6375,2416626020,17076226910228721831
+6b189809-b8e8-1f45-7fcd-1e5ee0052d55,3212589936,7440200499353739644
+ccf6a235-0345-2d45-ad04-0ec7ee9fbd72,2215834694,5956947556878581358
+9991ec82-0d79-cd0d-fe14-1a0bd92eba8c,1169018111,13297983813567389628
+a2cf14cd-0e8c-e6ba-862d-8c612276b041,557361396,3975562092661168391
+c50af747-2e6f-41d7-ed83-34120c0bd90e,874684159,9493234161333218534
+232d5efd-733a-019f-176f-b21b8ae0e5a5,4072846336,4062549591869332150
+d1de51b3-04ac-a7ee-2cf7-cf67d3896a30,2335137956,4162583932625438601
+a3fc79de-a070-6aa7-1db4-3e94fd01296b,3901438781,14833418991863550703
+cb1d1154-20b3-601d-5e52-6564f5771891,1223136159,4011818934829262321
+51af5e33-fadf-71da-ad3e-712954532164,4155695832,872591354428899339
+f50f98f7-cc00-3602-fe28-7e6d43e20f4f,2127892210,16125787967255566877
+7bbe2134-2048-8cb9-2302-9a8976574415,3728118314,13200513091363930197
+0d6a0f00-77e2-6fe1-abb2-05f191f6d7e5,2783762554,3711465781741618486
+5163c005-104f-94b9-cde5-4b9c9443598a,56799224,829957876763736544
+d70c17d3-5169-4cd8-07c1-2931319c3259,2441319344,4886469930557421930
+6667d5c4-4953-726a-a36e-8816f83df8fa,684061161,5457372333174513463
+2c94f36b-c04d-71a1-0534-ec1db35d81df,2414286669,15274962559273399167
+b2513c64-a106-8b81-541b-0a36ebf67b9a,1756938584,4372889928306253318
+09d4f44b-edbe-7ac0-6756-13d8e6378e10,252994235,6438308993745499768
+6f32604d-e246-cbbf-7436-a4c4b7d36ad0,2683482917,9938309035713273087
+7ad2fffc-a782-3322-d75b-9cf3371d7d73,2239727124,16317895837785363421
+c2930a3c-1c4b-dbab-ab4a-58701f14c90e,3718225416,7654748944031424013
+88d613d2-5d88-8bb7-146b-98f930d1a16b,608283150,13476676840009075243
+af150577-29bf-db50-289d-9c3ddb751448,2694787408,14350246087505021140
+3ed6a447-2551-1915-f633-9268e7f938ee,3039331635,2043772448798080993
+aebcd343-fb8a-6445-5d65-eb0a4c2376f2,462544775,3481732801722266494
+aa00cd3e-530f-64d1-3d21-2cdec0732637,2517648335,18067113386160492427
+1757ff5c-0014-78d1-b078-782013aaf11e,3441609101,16775002892931269689
+e1a4808a-3b78-e91e-6b52-1b1727bd79e8,1119171460,13516193763781623146
+389bfbef-9227-7dc9-bb7c-47dd41c21ba0,1474076847,17286182703220689221
+9a7cbd20-e192-26af-95f9-bf1022ed5dac,1344247262,13989774537564770868
+ccb78ce4-52ff-ce12-4173-eadaf9a04196,1914581370,16352990753668022805
+1d1928e5-5a04-3214-ac56-207a322a32b8,4232107555,6204383589049009381
+7633540f-787a-70c0-8c26-5f0cef14c34b,3055752651,5863406402237212838
+ff1dc8cc-71c9-8091-3390-b7bd0a24415c,176534097,1267531358736129146
+ef4b57c4-01c2-5541-393f-a1fd5325d691,4136394898,2318719687574356203
+5e438a6c-4bd7-4c5d-b0b3-e018b2902492,1887510735,9838726307334616662
+18bed5e7-5211-d40a-b151-4bc2e8e66bf2,2928380806,5898418769657416415
+caf578d0-dd2a-1056-bdc9-60754ed55493,624282853,4942997816477422429
+56e03ffa-70bf-78ac-d5d5-cad0288b756e,2946136789,15843599841497330632
+20816c0e-14b8-eb11-af99-46cebb3011b6,542328326,14553261686124004666
+c72e8d59-ca84-efe5-335f-1ad376211a26,3361104046,863322016536893943
+5cb83676-d289-485e-7d64-de297ef7de21,1410798191,7821685182689532497
+ef3ffeb6-d397-6e1a-0ac5-0567b1d0bc0a,797367980,2851407102615086658
+f1ca4bc8-5fc5-cd27-00b5-a628d0cad1e9,1466456346,9616558197533756685
+9dbbbac7-a7e3-86b2-b143-02949802e6a3,3094050627,4750386398290786213
+2f3a716d-3f58-eed7-8f5d-d8fe3fec92a9,1487543346,7872860033021914373
+0ebe8ae9-7901-fb3a-cc5e-73ef76f3e7f0,380012078,12892674143369052777
+3cd50d8a-0ed2-9ca8-0db4-edcdc775e2a4,2167128750,15708327710335437015
+5970839e-dff8-959f-09eb-10de958113e2,1357674585,6187815904149492125
+4999a3fa-9c8c-514a-28bf-29904cb767c3,1179578847,8641467283676562231
+6d1c8778-4772-5d94-1e41-7a743ecde950,2167135210,16933853913397934913
+5387bc28-2f2a-8c22-c550-a32c2a7b262a,3076208219,4097759451863915047
+2dab9596-bafd-c46c-fa83-a86e79a518bc,995631813,249373923763132583
+14191294-c205-26e9-1ea2-fa71726e46b6,1545037015,11077493664634547104
+e36c73ff-e939-16fa-17fd-0318d2fefe02,528848928,4873885313611783172
+106153fb-8d3c-2a0f-5380-858366780ad9,1262813417,18090544320653323986
+4e256258-096c-da2b-dea2-527b104e3dfb,3851169098,7913943591305228922
+b388ab20-e9e9-b97c-f914-9926e72bf9c3,967941762,5709714282696442490
+e5c412ae-266b-274d-aa96-d92335e0f4da,3284184675,5830163444682899136
+871a0cc9-a631-63bd-a9c7-2f8b04161b56,2980437266,11587296158160798649
+b76258b7-d190-4443-30b7-da906ec1087a,993761209,12833860458368642186
+bf8112cb-2cac-aee8-aaaa-7c9ed2ae2399,2373313651,3196769855532692684
+ca328e84-39da-4f1a-d7a2-cd837f4a02c2,3964853959,15314426937998635987
+d14f3469-984e-eb43-9566-206c24fe4cdd,3309785138,14623685070672168331
+0c1ee119-b23a-7a07-9106-2944243f4252,241210708,340027255968702325
+9ac43f80-924c-93f9-dcce-c36a459948f0,1720418134,15428963685563594583
+b7d35773-c050-08ed-5f9f-8dffb4e8b0be,676382893,17585734322925010397
+5002f3f4-5b2b-c291-8668-dfc4a4213109,3302196335,1148707755857964936
+2bba94a2-1215-9c52-3153-70be035be773,3287533925,7133456071831094753
+d899e743-88e0-af31-9c60-e23947a50727,8812899,13900288115988813571
+55cdad4a-c130-65b1-55dd-2bab29b07833,723398865,13396780731394729365
+c3f047d5-98bf-b789-61ab-171442a8d961,3526510625,15645797916510908588
+187ee42d-b255-9d4d-cf1b-4da0d00a8f32,2405341109,3690641331685807541
+2205f0ce-278a-37e8-d3e6-1492f0803b43,3402507464,10168262592131115069
+006020f2-b0f0-af7d-ce26-c99c087245b6,3268491328,926871087934321735
+d2e10fc4-30fb-2f95-5199-1729e6bd8c22,974520741,14957434687995288345
+326d7316-9ec7-a406-7d51-2d8943b8a930,2097093444,13402231430517318068
+e07c21fe-3c2b-a9ad-6421-5130677e18d5,2472029792,2115619530578693753
+2d39fa95-43be-29e9-e314-91f0535bfccc,4183373489,15665961884538755370
+15f1048d-ab15-b25f-80fd-b1de28846ee3,3266828862,4186748269316906379
+be016280-fd03-4ce6-8832-2a3e20c13bfd,3542825793,13402903084207664872
+e2dcd676-b241-e4c3-12e5-2ab6ffe58892,3942200124,3280133954764682298
+04e5c90a-7f3b-eb49-4a50-452f4b2ccf7e,3171255925,13502410448106527999
+7fa5de57-25ea-614f-65bb-e4bf2e5f81f9,210272424,10565648834657320055
+c99699b1-599c-d686-ca95-8063a56eed68,2580051528,3250856400448800461
+81ad9279-cfd7-4d63-a841-a2408f18ec62,120151414,10197163009726880126
+fa861148-375e-699d-f310-fda4da4562f7,3658923386,3574485478742993227
+aaf753aa-c227-1d60-2aa3-1353c23646a8,3699400022,3495771756088331014
+ff8a3272-dc6d-3db4-52eb-c5f02c037da2,1319468053,13156039171238026806
+6c20314a-b9a1-d4bf-740d-02e576480a29,2259757416,13226688598768423250
+72517414-8a6d-dd22-c9e4-948c8d74a23a,3537951715,7104601015369315174
+71d5d533-a3c2-f7eb-f282-fda5f2de669a,116178207,12937451648910435660
+a03abb78-c905-f96d-2177-5a1f260f50fb,2126047505,155891235703581154
+b6905de7-be9f-f17c-23a6-c812c59cb727,3949337215,10519946207525556710
+2c084c95-8b6d-71c7-f2e0-5087e3078df2,1865252949,10777486486718755400
+ff4c9fa1-af3e-2c00-30ce-1ba53de129c3,2784485011,260702158173499664
+f0987dc1-6f9b-4a70-4346-448d506bb9d5,2096865463,6536938135519723694
+5a89677e-b54e-ffa1-7cdb-e961005d3213,2546117300,14935438307514065378
+704c160c-c382-4267-6663-036a6319b045,413370352,13687533590188139107
+3c1c03c2-14f6-58ff-e6a8-9bef4adf726e,4280090957,5772804443942500923
+12cde347-48b9-bca7-45ed-dbab47f81b42,4126509787,9246459577589288492
+ee613c4b-25ac-b586-3356-ecfc567da8b8,3850305819,11387608002400348226
+136d009e-eceb-0c36-5203-0ebeb9c9db15,3457918237,776165728033077020
+15abe157-67fe-7eba-a9ba-b6070f9480e0,1266021795,11827031018560109176
+ca438505-d57a-f4e3-e958-b45c30256e75,376939844,4955746750557240124
+3670bf37-820e-87f0-b025-f8c15e3d2794,2745239049,13021970558526077117
+a6dec806-b0a2-65c8-0814-a1de3980d5e3,3225310176,5796873682693516938
+df2a61be-85a6-8580-83f2-6f9dc456abf6,3800604190,230272796613935617
+0d87f5bd-df19-e4c3-ae04-23b033a035ca,3116044126,4546123013888503523
+e8de62e8-b9c3-8fc6-7364-0fdff96cbf8e,2874257252,9469066461698906162
+e02e80a8-8c0a-83a0-cc30-d02a7b3a6770,4215028173,4448655996485076420
+00ed11a7-b972-599e-0031-fae04af0b7d8,1456967911,1574442309032771612
+ebfdf0d0-d4d6-f315-f920-0f7fd73a8cfe,3850761457,1686562089922229550
+28ad0447-7f64-6796-16f4-4188fb0ef812,5502961,6838436084109015632
+98a7bfd5-14e6-f7ba-16c6-a9faf1035344,2525848003,1789272137038336897
+e0c8f710-eaa0-a60f-3066-8e927b9a7bcf,4264515740,11297864999214759038
+7ebc3cb1-1f18-3f0d-3a95-0a9cec6e449b,4114594376,7744233979219826604
+0b91568d-b2bb-486b-085e-89441474c321,1315772588,210665362666170973
+4f972481-a541-4328-3dcd-38861f2dd7d8,1070312232,4973416955567054367
+c0e9fded-670f-70af-f76a-7905c1ddad8b,1403580722,595704531308695174
+edb54e97-edc7-2108-75df-3a83ea5aece3,908063063,13475017971834898197
+cb90ece5-0377-1681-439a-053c5441eb6b,887934168,9092402792176951734
+167a2c43-71c1-8ee2-8726-62e3eed3c3bb,3840716071,17790863712734544197
+1d3ca7da-f24e-9795-bbf8-c90c60a87f26,976364419,5942696065940655848
+acd84d4a-cf13-2b24-ebfb-c5ef3cb1ccce,2747874991,11249448475493825984
+e0169ce7-f87a-2c25-5677-9a99c3c662d5,4256515709,15502961080354780780
+dcba75bb-b391-e01f-25ae-32a8cefa450d,2136462105,5682224885946826168
+627c6ad5-d63f-e333-7ad1-63b094a0935e,3950333243,9146498946822325477
+534c5436-edb9-c561-7550-e26be1e1f2f0,4237483709,11075339236381987656
+b8dfa0d2-969e-8a92-80fe-a1b43eba3ef7,1212426426,9133960919443335711
+fce4cb60-31b2-1bc5-e794-7c0b86997dce,3557563497,8381833525830244461
+22127fa9-ce21-eae8-a3c3-fe8571434515,1309173806,9216559269090275977
+732c48a8-754e-d397-85d2-9807769ad635,3962328360,18149162329513404843
+f230b046-ffea-f7a6-ffaf-254ac11bc9ff,495065508,9616293604284504324
+8301f4a3-1670-81b7-cb68-69133120a9b7,4022873689,10853650609131539152
+ec6ee742-2e7a-87c0-e4be-9962c8f9beab,3712222359,17583283618206011787
+b8d0cf6b-45f4-6f8f-7dc0-4a8ef2e571ca,1246262955,1805192991618764722
+325d44db-0c6b-030f-1030-bc7ae67f8961,2992817912,12488707047269996840
+b7e7100b-4652-329d-42ba-17793d74a558,1673368506,3755480753698659609
+69146cdc-6b9d-5989-6974-4761ec66200c,4288818238,8316637462896219231
+3920767a-3183-8807-389e-96c73b7c0592,3751500676,15995397266863526341
+45f49c32-a716-72ca-b073-fd82e4c5dd9a,1146803521,276377819865904332
+9104997a-328e-e148-aaf0-8c5c253b0899,2232441071,6665392465672426104
+5346dec3-32bc-ba89-9af0-f191772399e9,791841993,10051313538444680129
+655dca95-e6c3-393c-9111-c08611c3d257,3899953901,11197636085842554613
+532467d8-7eec-e826-29c0-604bc0d58c15,2728323715,820054162609584683
+a062e4b1-a397-6bfd-e642-11de2c53b719,1466682087,7631908035280285368
+adf4d83a-65a8-9f80-1f0c-3adaaa15f0ab,4042344942,417897442551972232
+1588312a-33a4-b777-eed0-637013d96c23,2056741498,9506692918239181600
+470ef20d-38d9-cd09-7f51-e4b23ffc5079,3029459676,4876505262700645927
+5f4a4212-961a-1d0f-f8f4-90d10bde4251,760470936,5218206985704090869
+ba85ef01-d241-bb33-15ea-50fdf280b2dd,1047709150,8478935871325974615
+0c7d09c6-fca8-d236-6109-414a19cbf1eb,1584005509,14554055917833554767
+e458598b-ba02-b7cd-1a95-c409a1d7f6d3,2942434809,1678250436731551263
+77fb8f62-2058-9f90-6e75-9d945252bb20,881543337,18018200329521544765
+39301b87-1adc-382f-18d3-6e394fabe7f8,789564159,17143163136069838211
+06e359a3-2656-8d28-6a99-8b88b620e882,3769158096,3491793661706667973
+d9062134-d302-097a-5e7f-a5939209862f,466430758,3148693429219460454
+e1323ffb-72a4-78b0-a3d7-40f78a6c2e4f,356506075,2561010613858422376
+1dba6958-7537-b5ee-ffd5-aa8e8d07f3c7,4207378039,8518111420217730686
+5949ad5f-785c-8534-49d6-e5c8d07a28ae,211735029,10198671046579474598
+498b95c1-2bfb-a993-0085-2a8f5e26cd68,416853354,2406548011357940706
+27eca11b-3bf4-3cf3-eac7-02c0ba7cbf0e,2197532923,16151772533899403403
+845cb9ef-3ad9-0e08-3355-e7fcc873dd99,3741325452,18377401381695935505
+785be421-f4aa-8247-1e1e-b67438fe9676,4175236877,18374734142090988313
+e9a565d9-c26b-6405-669c-d9f074d7d623,2376994583,14125166867230120675
+ce1aff42-acc4-c098-874b-1ede48f3bc7b,1039626659,863919553355518638
+1923c17e-bc7e-ff8c-ac8e-378dfd5cb091,1247913552,4761768479884919875
+1d077275-cf1a-38c8-dc0d-359f5d707189,414928068,1238015568247726371
+fefcc4a5-9411-e568-da7d-aef368117ce4,2338912608,7936644442785158268
+612a549d-aa55-41d7-815e-47cd8692db49,1131288958,11068866734117345769
+2063a791-11b9-cd7d-82ec-b2c6ad858fc9,2675663229,780699090972592449
+26cba9bf-c9f5-b96c-13a0-faeec8ea114c,3747856178,13521934208477793000
+8df05cbe-6703-9929-cf2b-27661e09900c,1014946593,7659613802782752267
+ef1ecd77-4b3c-8a80-447f-693821ad08fa,2461411100,1538283713663923517
+310236cc-20a0-0837-d9d6-94f78ce81c1a,2115724926,11807798786162462741
+8fed57a9-3132-9de9-3400-74a67d58a9ad,3375629340,940446572264130055
+6c050e96-9a3a-43b0-b5cb-cecac8ee2a0e,1859557509,12370316846284510046
+c5bbfca3-2bbd-9fb6-c06a-d8beb18fe7e2,3594862346,10604570705917501180
+46e03ada-04e0-1a89-9d4d-b964a78f79f1,381962615,6723529298637271454
+1ea7e8ea-5e8f-201a-e06d-8e386b9fd766,1886959066,15154151610143492767
+c4baa2eb-9e5e-9b8e-7361-33fc4603f4e0,1214817134,11788196446334805727
+0bed1c16-b417-bc27-ca83-941a797964af,2298552923,10882298295757615977
+80198235-09cc-88d2-c099-f83d0d757ff9,1511385889,2440804735993819542
+66d9ff5c-466d-987c-7d58-8878a62b322d,1439166391,403655541696568475
+9805a1b3-e5cf-7919-7d73-c45a1e87ee84,870992297,6958368983647695359
+52572f29-3f0d-4dee-0b27-3546fe739f9a,3728440301,13110632501495293853
+1ad5b2b6-f6c3-e474-9426-d3bfe334255d,1000407047,13972983918249795932
+863f6748-5388-4846-e16d-e1918ced3daa,3037374091,8318752859061023062
+2816bc75-3075-05e5-489d-e242412be81e,1229717286,7432691694744416560
+6a9c1a3e-a231-a25d-9a20-950de912f11a,2073608911,16538967351828079562
+48741c42-b4d1-cf7c-89ae-3d2e3d8e65f5,2637683108,10274995512546475053
+d4ac2021-2770-a9fa-5cf7-2ae9b9b3820b,4246426399,9933066670487277299
+f721bef9-15a4-c188-2856-3c8c85ab8f27,659033500,14146409415668799754
+f6d4e638-ecb6-4a3c-43d4-8a04f1f93766,1935075538,10046240195025909041
+feda27e5-e961-4e50-e127-006c3275ee52,4204250985,9187527721832253074
+2cfd16b4-86aa-db53-9b21-f9a8f02616a2,2939054261,13871262607691063086
+04394995-94d5-1a56-3e3c-d20d027932b4,2227223644,15698362030062272633
+51363b7d-137f-8a69-1d3c-07b41a1ab79b,2864505295,13958324385758200168
+cf0546c1-6769-32c8-6465-12d3b156a1f0,4083758028,16289132892957296103
+49d6416d-3aaa-91df-2269-88c38f0dc41a,754488908,4572515251479900751
+9bc91c22-8eba-28ca-ef4d-34bb124f6f7c,2770515216,15052556778484378806
+e63093ea-897a-940b-2ec3-400c56ccb9ba,1680182218,6160689349714365316
+9f02724e-fdec-f61f-d7f7-01f326ca2704,2082325475,10598289834880813770
+b855836e-5abc-ee6f-1bec-9eb85726b107,2585107637,9372439261398264217
+019229da-4fe4-920a-09b6-bae71dc798ad,3329481421,706615115019281849
+d9513d38-0d81-ca24-f749-01e1c5849e3e,2671872935,7679771426173225871
+518e0c23-b153-be7d-1436-82ee993a7df5,4131644274,4139302408795230763
+41e4a650-f74a-75e3-3e40-78f53782c565,2465996970,12724419541029617478
+903d6744-1a46-6650-0f12-96fbb9fa7744,3068376032,13647750718445592606
+a27bdcf3-7ec5-8c3b-e72c-05054063b4e2,856965087,12062522126830505639
+3dce5c11-fad0-1415-ada8-7f5d914ebd72,2297644989,3958338019126563584
+ef4bc2fe-536e-62ed-e033-7da580ffd0e8,2330195682,4050674168435572351
+b7ce2cb7-a244-22b4-ab25-ce25b2fa4e98,2296833214,12776511935749534040
+ed11f4e0-69e7-d484-f9b4-89b16eed4876,2381570999,9001189654176892694
+9ba0bd86-d7aa-cd3b-0076-dfa96b1d578e,3174332448,855018659318154334
+de50464c-5718-ff54-c429-a73e8c494eac,3971461317,3791533976909278520
+21fa2b57-83eb-ae3c-9176-1bf2843c8644,2781634965,6856916808042077232
+db918246-0903-e9ac-9382-ea5a3dc2a684,3567367364,9949163209254227600
+efa72506-8d23-7181-5814-d193267affbb,1233371331,3237283321312092063
+2040d353-b933-2cba-b29a-ab985c9a1364,3813944387,14309035237150503586
+5381d39c-5448-1ddf-9085-0ddc25d623ed,715578367,10386909976079864351
+f5eca07f-08b5-ea49-3f8b-143c78993b06,2682423470,3123387958167870687
+bb094a64-3544-6c8a-12ae-d114f216ad73,1487248480,18025870661085370929
+8479328d-1fa8-9dab-df1c-7f5cd2706327,2932455817,13144182354250923230
+688b76b8-e7d2-b67b-af89-d17aca6b4693,3094446262,10696631053726575428
+b223d97b-f07e-f54b-639d-4e8f104046cc,3901913997,18238773682480846659
+9681bb10-376c-ec57-f8fc-ee8e7e8615ca,1054665762,12190001062229692654
+cc0021fe-9382-2485-97ba-9a12a874423c,2771632214,9406416880652133047
+7d035cae-7321-36c7-b727-9bb971cf00b8,1729700571,3112187053594512742
+e43e1adb-02d4-2854-528e-571a803bc9e5,628327181,7290264780139545582
+0f031414-abbc-50f6-32f0-53a9f59f9552,650299597,6777720790673442150
+a34ef9d0-21bc-9c73-bf7d-1b881c931150,4165778644,4621340262392130694
+74c98a54-3d5b-08ab-b1e8-e2720692e3e7,2480958110,11780894812646377845
+357c9578-7858-055b-bc66-3abeb805c361,2306543656,16427761049468544544
+f8338743-bb6d-4780-06ee-85f507062150,1677774358,10241877693568163477
+9d665c27-f3d9-9c06-b720-ee8382e75d2b,839302783,7671035728290046693
+1d18ef6b-32c2-2089-8b9f-145938f57187,787393356,13835184643052070864
+abf8e5b1-47e0-949f-b370-c172e9d28b5b,3146544139,785560631632894748
+395f14e0-7dd5-e090-4cc5-04e4df15849f,670775928,1698530017439141501
+ed4b6f21-f126-3209-9b7a-bf0d1765e5b8,22223859,1524377161693228617
+d6698b64-a025-eadc-c9c1-011847344deb,3525443207,7742701365623474727
+ddf5a5d5-2875-b0da-dbe3-9028019b8c8a,1549616679,10799851154907923811
+13a7d90c-9311-32cf-09f1-6165637f40d9,109256356,6202959150257067027
+84295c09-5dfb-d8b5-026e-2600c620d3b4,1032245931,2070099384094586084
+4a4efc77-47d4-f86f-6933-a67334f119fd,3166964338,12557662505777463983
+4fb8bf46-8d63-9c2c-64c1-73c331d02cd8,4271202257,7551222293933765985
+3aa5ba22-a3ae-a41a-a70e-60f9dd96b098,1333922496,5894558438283478865
+31f2d008-a59d-c42d-9d26-0170b276df51,2837696930,3487865752641749696
+55261db8-32a8-b2da-faeb-b553c4822b4b,2116681032,1866574054921953208
+19b6c8d5-2476-abdd-5a2c-0315103dbe19,2717066279,12035859289210974715
+910ce67b-1a56-89a1-4317-0dd97bc4fdf2,3739240193,68328343784028044
+0a81e592-d057-99b9-0f21-c982a7899215,1241063856,18256280094180651585
+0a01f3b0-75f3-55c0-c0c2-a61b4f3480d5,1760453497,10957352832539594347
+1fd5b82b-031e-86d2-c5c5-3ecda0b56d30,1507742103,1503164358232517758
+5cb8cc84-c6d2-8fd0-b383-b5dfb95b625d,3394971674,5351932122633344805
+fdd39880-d73d-7695-d0f7-7b43dcb63177,545781546,8588882919550689477
+38f6f0bd-5789-3a64-cd4c-4fcc94b087b4,199217940,14313565028868911395
+a70ca14d-1446-63d7-f29f-0c37dd003b4e,1131807343,5119264482302025833
+a6a490a6-4910-f5bb-470d-f266430637ed,1968014839,117505697870427414
+8d0d8e19-d383-6812-cdf6-2841d8b50309,2255232639,8478527956244600352
+b8a524ec-8cb6-f75e-46ca-b5eff972f2a1,2613817367,7599308078117340626
+05251508-798c-4772-b482-e0e789674137,328623777,6028906106773452636
+bf5acffc-c70e-8ddd-d6d6-bf62bdb6d6b9,802408764,8366363413172927270
+3fb709d4-13f0-07df-4b8f-663657babcf0,2719061068,10841681960636236284
+967139df-daf8-f7b9-ec01-ee8e48682fc2,154829454,9122777103316350423
+08c236c1-a665-3e6f-ce24-bfd36ad5be17,1493144452,13615901737467988781
+a7e14718-1edf-3ee4-6cd2-fa53c663ca2f,1414979704,4575451301670356388
+46f28578-4add-f912-522d-ccc0d3dcf798,3799568783,3327518535100746714
+338203ea-cffc-a9d6-2bed-aa03e4599518,3705728682,8043263572752818681
+f88dd058-3940-99d0-3a50-950b6802f5df,1923588077,105147176228981969
+200b958b-c5da-a475-eb51-95e7ea108038,4083868784,8719810754670368818
+2e33070a-455b-a526-da25-988726ca6f1e,394988998,6144546150616782108
+6ef7359b-ce64-bb26-b2de-07216fbf773a,2487996276,4646123986980661898
+4b38c641-dfb1-8c87-e5ef-e4be8c50720c,771779956,2846186146472844813
+5690b1ba-476e-0544-c639-d4cdf4180b6e,2268937669,9598470729529751454
+2d213120-caf4-99bd-d433-e615b3f2a2ee,655541308,8520529536629926473
+9bc5f981-dc86-afd0-27e8-64ca5cb1510f,4195566360,10036599770660968430
+bd3f6d37-41ab-1167-cdce-71554e35310d,1410913661,8123008916301851658
+826410de-32fa-cc67-e65f-4ca1a73792a4,1590908676,17822489862089985229
+9a905e0f-f320-f2ba-3496-2bd719203f16,2223321434,15770555301535871265
+c1855d9a-3542-47f2-c245-c14ef48c0552,4072062796,10090540089610012631
+3ffa38a3-7226-0126-c027-ef4283c3b20c,238212330,3742843762826155635
+fa19a3fc-0b0d-64c3-8a6e-ad14133eeb13,2109579761,2353227373219157351
+331e545a-34fc-7860-6488-80622e315b12,1695065470,15637921205094682310
+1716a70b-ce6e-550f-c042-5f4b955a2085,2737733856,6530423012054969812
+d580393a-2be8-5124-08f1-8884aa992bde,3697503408,3266622607299917098
+7e394ae1-ea52-503e-8ad0-2d726ede8659,2125244036,9336837080637157938
+1e5f1ca7-7545-8427-3fca-184965d96bc5,317074448,9647272596875767747
+21748bf1-c3a8-4214-2dd0-c0c8dd914a5d,2323690245,830766507304508454
+2e3fdb90-bee8-97f3-d35c-98284d2f76bf,1516375691,6278264025907846319
+299e8189-0240-0cec-9556-1c3ee76c3e56,1316821276,5440608572985886108
+472791c8-abed-27b3-d9a7-87bfb5646d61,2537801458,6967768894281603543
+edc22ad6-ed88-c64e-5177-969714d9f1f2,209434027,18173884287441587402
+e3773170-5285-bfba-0f28-e8e015b48c2a,2800502532,18374128864705287109
+a4e60506-1b85-3adf-191c-a0621f31d84d,311716729,13547416213462288464
+ab64c8eb-34b4-2c49-131a-326eb8fb0b37,194279114,1157531575406753942
+f9a44207-ab57-6d85-f457-8ea03f4d2cb8,3885146635,6720942129663848857
+5dc0cb09-0024-9824-4225-702121f957d3,517072020,2236770690384971720
+62080058-fc36-ac58-5177-25796b0a4d18,478761259,3141373780908122073
+f3fd8174-7306-1cfe-6b5d-8952492cda11,2698029420,3855827229706055034
+6ea23d48-e930-af09-e3fa-178fbc7df7e1,3055047093,16174504611064849439
+046690e9-d18f-4f0b-cf2b-fd3e34bd4901,2326509124,9506425714265553871
+73df774c-7740-bae4-5c1a-111a1c4a0e98,2675337790,10389345246333876255
+df753e1a-9048-147d-f4c3-d08fdf4f5a52,1880056028,1519479569501894952
+dc41e624-df8c-5fc9-0c4d-4bca4cb7827d,831258359,16990175299544165733
+d575a4a9-e1e1-84bd-32fb-43e774497775,141525890,5729830263455866593
+65e3b866-953a-05b8-deb4-9295cfe1cc7b,918764717,13221031294967112402
+f140322b-3729-1627-0a3e-d5d6fab07810,3332371200,4326551741987787767
+b73861cb-8afb-084e-e11e-bc42fdd38b12,338665280,7831405990703975837
+bf174840-9a63-5286-8e8d-ce873487ae76,294831410,17432625122615227105
+b2f0a023-9365-305e-c3b3-6c00f8dc5dd7,2075010309,12089488926212036555
+3e9070ec-9fe4-fb91-4c13-375d0458f575,3746128779,5112165241294827812
+f72347e3-7d7a-6a4f-cfd9-4473106eda8e,917553069,6932859689567493964
+9ad5083f-5700-3bb9-9aa0-bcdcfcc78593,3862617923,11998424271188743109
+3e1a533f-8fc5-37b4-7263-e91a7b0bb300,797271660,5075722190668320707
+b6960312-fc29-1deb-99f9-5807ba09b044,454519549,5093246046696204414
+dc0eea6e-107c-c900-2ac6-c453331d8d84,1657099907,17945330178618984837
+1db4288d-5443-39b7-947a-3c9121bec711,1048374746,1999332265172518375
+04591f13-8b6b-556c-4aab-3ec57c4aa14e,2483581760,8088564971549051496
+d3b8f8f3-6e0a-d799-c668-fbdc24a668b8,2560711672,12402890426755757947
+6f45e5f9-0898-4210-2955-918c1f33b4d2,495114,14092622990168207935
+c3465971-6cd7-e575-4ae9-08a0e8f4d291,2413760269,13097376491280077890
+40249456-9bc0-af25-6e07-83438d3e0d5d,3612811439,12911819419610189737
+1687d271-3050-42a6-ed43-cada588ef015,651866244,4614510401137230740
+b5fc8e87-32c7-1c29-351d-5fb103df6828,2309213696,18308261930099624315
+5f08f24c-f21b-941a-fa2c-a1ae8761394e,1105625063,10222246310115028999
+79c9df8d-29d3-e563-3116-f1e43829ef0c,246699191,3959402098630497962
+990fb8e3-1aaf-c697-dd56-d0d5116a63a3,3190237935,2329171388561536831
+00518373-d941-db81-bfd0-bc90837fb6e9,3598829632,11078856605371522125
+db586365-279b-b60c-6499-a31ac0531c89,3386463682,11445560684963097224
+8f6513df-f859-03f0-31a9-ef9944310266,143773749,2629730371712711342
+f5e3e6fc-fa1f-e269-742a-8f3523176b15,1056358577,3303620139007395523
+7a3920ab-246f-a665-64d4-bed32a6c0cf8,2734685753,15801590415401157930
+990aa57e-bb25-13da-aeb2-f6f48f443808,198715662,17227276646310234679
+05c9010e-70e9-48eb-822e-1b6183a7a0e2,762027481,5466417928145182001
+79118f54-eafa-5ca6-6d8b-76225acd669c,2779182777,11185243560210516674
+397bb4c9-c484-50da-0fab-f2a7f9e57fa8,1301079999,16834388439275399807
+c32ae262-3785-382e-1e27-de88640e1e47,3446541046,2382010584363020990
+86257577-d485-4ef8-9841-d5f7051045f9,1708210499,2347342576865754770
+4654bf97-f5dc-6026-33b6-9d3b8c690838,2234553449,10763326781331734463
+8d08216e-9192-168d-f22a-559f835fbe8f,2082290088,16667208747706150668
+0e24e83b-641f-19df-fb1c-4e6c7d061aad,4029203554,6990927326385364845
+27229262-d4a5-8a22-ca32-e1380f060ccc,3765321022,3028256556228652832
+80c46c8d-1921-e9a2-ee4e-b1fc8f97f5ae,2954951163,1823110683592371526
+20c2e7c6-eaa2-2124-1d10-1f5f05470e39,2846585531,17306173224690529491
+5a31cf53-c0f0-bc08-7d56-198635fcf366,336131032,10707148548680370383
+045eb8bb-efb9-bff7-4f6d-6e0e1ec1c054,2533568768,2911861052660945828
+66c68d1f-7170-8e98-0c84-a09656e88196,1680712062,14590219326220692179
+18a9afc5-7e75-8f18-e0df-44c9bf8aa462,1612840401,12560114861693566347
+d83cb326-9ba7-a620-739a-35a9d9451821,1914744728,15178974323790346151
+059317d8-c002-bc14-c425-5c2d6126ded2,26298158,14316392883543407286
+42ca7e8c-932b-30bc-41fa-6a75356177b3,3119460139,6156427971149672076
+cef06d30-9305-21a1-6ac7-8a90d49bc55e,983750,7470179156705045902
+6bb748d2-3af0-5e5d-d123-e1d404692763,3786476819,9733098365465562380
+3e0e3fec-00f3-76d6-d001-a036c9001aa3,3350346893,14321354993536505856
+15ec2a62-6ccf-72d8-2fb7-78e567a03759,3729108456,17574573676927359985
+a6d5b1c7-c337-724f-e71c-8e56c74d97fd,3649006868,3675105684014429729
+370722a8-4d2b-f38b-f4b9-c602f614a6db,2885751741,12736110923888098466
+8577a751-33ec-7315-224c-7119d250f972,3692652752,3323641735673019334
+c178917b-7067-71d8-be38-1eb597f1a9b4,2887225120,15082298744979312997
+814a7ad6-43f0-3821-cae9-aa9698b82584,3573556550,15603190926901624957
+da3b6ee1-fe27-9e3e-ce56-a8a9922d6d04,3758658592,7983889904254279199
+da4dd556-d6ea-2ca1-d33c-3aab8bd300ec,2463169385,13720597773726882420
+b0b73320-9cfa-881e-e881-38213641aa55,1335483316,4714709513884286695
+6e66676c-e57a-be6b-cd8b-2fa0867fc7b1,1597957755,3128487698328126690
+f02b41dd-9920-3feb-a34d-22b2e9c92ba3,3663602396,13711538997675232637
+38316fa9-ac35-89da-6ef3-d9343cdc07ab,53647174,7073874156757242526
+e91bd9bb-d100-ffd5-1cbe-556e85159d12,716728146,17287843127909425327
+93282420-580f-b45b-937d-9dbea5fa533f,3396369328,1083525566745123847
+b7ff063a-ee76-0117-ec5d-24fdda098f46,2281294558,12170895851531941306
+2a86c1f8-5a9a-6079-4847-dfb588bbca04,2430569602,18120992851410691721
+69f8b413-3216-4dd8-cdd7-3697ee972015,389634031,1926275605997679154
+916ec49e-4d08-dd39-33e4-cdac92c8e3c4,800813293,1248991503118349178
+0d3cd925-1926-b7b7-0953-9296d0d16259,936672166,10165798868717887714
+87f3b678-d475-8569-e6b2-ab73fd5e52b0,2436871627,14822201835247743967
+b507dc51-0d32-4737-ff46-f0b7ff926e79,2082964665,14733123122543582712
+0e05d20e-51bf-7e98-71fd-0fa0c33e5314,2221810984,2330548173998481772
+f9f3df25-4f65-d50e-f433-ffa5964c3e0d,1631990383,6826414828960855411
+ea29d660-8888-1da4-2cb5-4a10e72af33b,2871679056,4302382026922080397
+0b58cd95-e820-3dac-33b4-cc0b704cefec,4104297968,12727541810141115099
+b690fc07-5f8a-b920-bfeb-a3e5059b0839,786113651,9105660839456798830
+21332bab-338f-0274-cbfb-987d18818fcd,2053875799,1479812733079544371
+f02d494e-9321-f177-c498-ddeb35b60093,3555906933,12132012040134475873
+a0dfa724-6e5b-70c6-98b5-afb7c8ffacd9,2484205874,12764275157092938518
+02b8ebfb-a08a-ce22-2200-6b3a10e05fca,108176986,4433860368713465927
+0bc6d23c-057f-bb46-5ac1-6ca68149b9d5,242027416,11621248641854074494
+07526789-9b79-d407-44d3-cfd40e700cfc,2220554268,14220245528969904367
+2317ed5f-ec9d-d5e1-af06-57548456d29a,395346472,1594706324066626687
+d928de7d-0268-053e-0b31-cc76ff8a65be,2633153934,13299144147243274905
+654d2f82-4f1c-398d-95fd-9eb01c7a7800,1043747647,90885543328042017
+4241b322-f464-6aa2-3670-1c1067c89908,615849239,579913272644978101
+ba3a8dea-2f6d-8b8d-8126-a64c7c25e9c8,3731954966,17102027497982561243
+dd41fe32-1d0c-e2c8-40fe-d7f0559e8970,3155706935,16077342035032023809
+a5dca4e0-0450-56b7-cf99-05132629179e,661961487,13654458377618917600
+b78fa8a1-1446-35ed-d32c-92d2a5841af4,1543958874,1743943981125547278
+41980fd3-90ae-db1a-5991-44ea5b2df7d8,245384555,6253633150638101381
+7bd822d8-7872-d562-343b-68b3b942925e,3833221208,16385618801198722943
+8449b497-e5d7-4f67-fa92-aeebd012a38f,1340130674,14296628898394770686
+81fb5f14-3742-e65f-85b2-b2b093687f63,741896905,11443217371157217930
+d2fbd5ef-0d1b-f9f5-2e01-36d904fb4f80,2048348507,8359549884339272065
+c2a3312c-f113-f151-e2e3-87fd55b786d9,1907119031,9447463185904260240
+da2ca112-20b9-3a81-96f2-40b1eb38aba6,677969910,12849614968627582371
+23327019-f355-d6b3-cdb9-2568035d3f60,3697789489,13620661644031091100
+50808094-8bed-e8e1-205c-ff2d89e81e61,2346139089,2351220354970089130
+a1262436-0084-ef31-f7e4-6e9a63696c55,1546046230,6843945961397727761
+ba1d12b7-d7c8-b5ca-2e79-c0d93a8ebf2d,3758070694,2696466982124507506
+293a341b-fb46-a58b-ea7b-d7811d70757e,580562794,2187675548885895991
+7d47ab60-11f8-8930-fbce-1b6b4b639c0f,1924005625,13911558473401934811
+7354d4fd-9f09-d297-0753-2518658c22ab,1076117499,16090378112405916834
+f7b6a6f4-4ddc-7156-8375-391e939fb6f1,1513476088,13309408930531762528
+1b01fe16-7dd0-aa5b-5741-fff30c9a8d0e,3805168998,1064735679018850739
+903ad15a-f0a5-d58d-9e4d-ef116e6ee77e,330795634,10136670173754091063
+bb0756f3-695e-e3c9-fdf6-e13df92c495b,1200317780,12890190427530505883
+d8219724-ffef-0eb6-fc19-74e5e0fe0662,2216537406,6553937582638170000
+b86e212e-9f2b-4abf-da8b-cca1e21c261d,500499354,14378950382375596804
+94871614-d2b1-4abf-d761-cf00e010390d,1363339343,6839175105838817060
+45618881-1613-44e9-5983-259512e2323e,439880001,6055101963441105618
+317e2252-4d07-55dc-9b7b-c8825a1304c0,2175454285,17880013444474297833
+59400d3f-ee8b-0fd2-cff0-c0cfde9160d6,2319514824,16884089186564393736
+90944051-9abf-e04d-b52e-204f3b414cff,1318887947,5085852343645964284
+0a557649-1256-ee84-6ce9-ef7582bc7418,1895607158,9839668329193794209
+33c48a95-e69b-af29-444c-13aa2cdfe475,424980725,14206028668199793542
+e29f48d6-933c-16f0-d6b2-cdf112017907,1216163788,14328592651919629529
+ebd4acfa-4d07-2fcc-ce4f-5a8783a438c4,1699694186,14302613265091786657
+6324fc71-c43e-ffe5-4b69-db1d55f8f5a0,3516863034,7185620057331900814
+fdd66543-bc74-ee47-02d7-42b56bdc59e7,1504380016,13751038336991507048
+ebda4a70-9967-e4db-522a-8d5b2ad0a670,2467445106,10233098936903659215
+387e2363-b539-fb0b-4760-23ca925d69bd,567246747,18045872562804335474
+f3cfca91-fb24-6825-cb18-a8974a5420f9,2705541066,954574056775891013
+78536afb-cea6-7650-055a-9e2b947f296d,3899330212,6975778228813732253
+aecdec51-df12-7540-e7e6-0da46108e45b,4204394095,10373830017860130577
+78f537a6-9d9c-9930-5f5b-8f50a7487b22,1811016509,16623429336207432318
+da3860db-5ee6-7fe9-e7cb-8e3717170205,2017157105,8054168280053916169
+de1890a2-a2bd-65cf-cd54-a67f61609804,2680329300,8747389603955125529
+1b1d36c2-6702-af47-e2c5-6111a0cb9fa1,3453302949,2156748596199719695
+159853ed-8964-388e-4144-63c5207ee827,3693562289,6663500060498509541
+8097c8db-84f2-542e-bdad-8c71fa52ae66,3133777028,16782965534870947241
+17644ee6-de2a-89f4-6b76-aa85843c6688,2370230072,3085454841374316835
+43be453d-bfe3-35ea-74a4-153788f20117,2945535087,7357463551568833270
+f4153886-27ec-e873-1c3c-fef2f6fe6d92,2835263816,635125932144160386
+fe3be04e-a871-9bb6-0c5e-40303f63a6aa,3327210874,16968237685793050099
+517c3507-3a6e-a8f1-47f9-0e6bcd678ad3,2638537455,9825896866523102970
+549d548d-fc99-05de-9228-1e3afce795b8,720822425,7536828427663340930
+ed0addaa-9aa7-bd7d-cc65-aa33b0fa0d60,3226260852,14988374014728807650
+0585a865-fc4a-f5b4-1ebe-339a9dd81b01,74296099,10860309976237085535
+3ef6a1db-71e9-d59f-b58c-8272953dbb3a,1749068364,1191952235610507239
+8e607d13-25f4-d132-a878-64fac21bdb28,1224268058,7278147956866454930
+11f02af8-d012-feb3-6816-bcc869f3aa52,3194524534,13736844544889142249
+59ea3445-f62d-8b2b-5fd2-3420e3692c13,3455879952,1327111479771626433
+98c08cbf-cd3d-cd0e-5f94-28d931546b0e,2277653001,8824389568072617467
+5d57ee2a-a8d8-0f51-5f03-172ef0282667,3545267348,4742961379982492824
+76d242df-731a-fe04-8f87-b9c4161a6a1b,2605669425,312363421130181505
+c58ec5ff-d622-02dc-5bba-d068ba4a0116,4140681098,673600834195306466
+aec796e3-ff4b-5498-7f48-6fb39069b471,1606940541,3138538112380333621
+4393baa7-0fce-2d40-da17-fc544e035e24,447538134,3093567795182032613
+a00d11ca-c2d3-b32f-ddf3-76ad108a9fa2,1042426736,10961312829861029547
+f986720b-79d5-bb8b-3968-dea159b1f327,2730137009,9650538904831622056
+9dc6d27c-76b9-fc8c-5035-1d7f9bd7f906,3325538781,2731276888027391619
+d2333fc3-e3f5-1bc4-1c55-c965a7c944f9,113863444,16745251929160521735
+eaf320bc-23cb-e2e9-fdb3-dec46e3d909e,345233619,17194662402854978176
+c4c736c0-8c01-47dd-78f2-7a4f2bedbab5,3625118843,758272501471414943
+347b79d6-43ab-f425-0fd6-87491b5e60c6,479502721,7623162790067859406
+e11d2d5d-6b3e-e0e1-4ea0-04ac8d480a70,3451705879,6005899111516176030
+7476f39f-22f4-213d-29d1-07d93f449935,3507303336,10716545839127175792
+a3d21b37-73d1-c54d-acf0-81fd5feacb32,2483051294,1053772604670628926
+d7ca8282-c60c-dd0b-1e41-e2a72b547483,3931389825,12898630123257103823
+bb04742d-6fcd-a6ba-4b9c-2f2dcc170b7e,726292373,10002806488316223238
+e8e2484f-7be2-a071-6db1-91c763463124,2712862006,14103767327458963622
+76a0494c-2e85-b4de-f48e-dfe9ddf5e610,3279593383,6264299483581284275
+dc32cdd6-2454-87cc-039a-283e7ef7b55c,642487694,4446944224565738785
+8f6584d4-6945-7969-84a0-15714e5c4c39,2227130658,14537868032015224637
+0c94d6df-2d96-307e-867f-572d4d6acb1b,3014072367,12291175569487921971
+4ec9916f-7e0e-d9ce-1a74-58b5a863d358,2017531795,3301469780167036339
+def05fe0-e3d7-f798-657c-335e367a9f4f,2198725886,4343168949164856512
+b8f40be3-7a62-3cb2-9ded-5a91c24ede55,1009869085,4573268591375453234
+0cc0c932-3334-c89c-892b-2573ff7602e3,1772015402,16920626418472673276
+deabb7f2-833c-620f-ad91-b66f49abb376,2135335310,15067647888105197547
+eb25884a-56f8-37ea-638a-d4b9f29fc56e,3001924756,13854573498939583284
+23347ce3-6f38-8494-9603-e6b9c4c6fac4,1591762250,5637222358519450872
+2e166d02-4721-4e0a-23d4-8ff5b6877c33,2178538631,474045482475710693
+6acf69bb-c5c6-756b-3ea5-925a21f96324,2685852451,12580360094391942158
+efef5504-77fe-8333-fba1-f6b9d7587532,2872337664,13482223868236338153
+06ed082d-4b26-f7d4-76c4-b32ea4c56a9a,3047756975,13441986212522854012
+afa35319-d4f9-4b98-304d-23b30915a732,1759110555,8094138744236139420
+1a9441e1-7c1b-d9bd-459a-d9ad0cd2980e,2823762713,17153194832062866215
+9a6f52c0-cd16-ff78-493d-d6f27f8eead1,2681888391,17568780950033388462
+5fac5e2d-2e90-7eca-917b-2604612a1e22,177275971,8693362079833507241
+591886b1-e515-3e4a-7c97-6d800ae01955,3743139200,5287369948859754806
+58ee66ca-2acd-4bb7-4457-069bb1a4edb6,1837380035,2547480466718108034
+5e9944c9-6b25-4691-04ee-8ebc78e50afb,946070952,15384082802781459636
+2cc84a3f-91a6-3202-f2c3-1037a28ecc4e,1411058064,7036569761728168684
+d6c9e4d3-c990-a1e8-f2fc-2f928eaf8139,1141153160,10659519392890185187
+d4f0dda5-4fd4-7c94-54d9-5b2db78edba2,339800944,3651458956307864665
+896c4d2b-12fe-54ed-4337-77e536bceaa5,1791692285,15571039798060626170
+4f55a027-144e-0982-02bf-2e1169fb3c7f,4258959962,12893208948111871464
+3d476e6f-aa9f-23c5-e203-c88dc652761c,2994424991,946716063105281583
+6ac3726c-fb29-0328-e6ad-b921be0acd9f,3753464579,18169320998017558674
+6d91727f-8597-3ab4-4652-055c49980496,4288613895,13439931933211001371
+bee5d838-049b-b4e8-472c-014381f4c983,605333280,3951521868142338973
+e146a039-d9b2-d5e9-5f4e-a08c291ddc15,1390369117,8070920460452152695
+3b2c14cd-820f-6fdc-cbc9-184a36a4ff6d,3981213042,14872649655152407834
+e38e7626-7716-7a5c-94dc-854317eb9462,3115331917,18052294798573351686
+3378d90e-3d72-c916-5a2f-0ee77c4e494f,1544394044,7765856796104964017
+19172925-7165-7b25-81c7-7e1cc250f8cc,143123086,15171179482979843995
+3db9e3cc-2856-d0e0-b648-4b9501c1b209,3249445539,13728658587553170091
+5deb75fb-d999-8b59-7816-e346d0ce917d,4148074242,8531787231209664818
+fcfdb9e9-fbae-5f59-fc11-a401282d37c6,301653444,10810181375776820521
+529f4750-4a3f-d124-b4ed-2000aeb5d81e,2995541937,2512569865774598828
+c2a42b90-0807-0c10-9bfe-b3d9908c6d09,2201557053,12875252255672091973
+ede12efe-3b5c-40b9-18d5-fedb4d05bddd,1737094572,16058447131434150769
+12c18c8c-95b0-ba9e-d34c-a578392c4940,4067389764,2114920906934670353
+5753a167-c1d5-bb1e-152b-55bdfef6b06b,1046700463,17183274960168006659
+e4ed716a-d226-72fe-355e-0270c3f7a45e,2391364625,2574496825037983825
+4da2daec-d913-4676-1ab2-d3dc077631a8,3656901186,14274292008415031725
+b4778066-64c4-62f9-f2b3-dfa12ecdc9b2,2421737708,10969972654491068429
+9d3439d4-297a-fdc4-0594-6af3266324df,1313901046,4133878701094717309
+191cdc9e-92d3-6997-1ee4-bc0677e9d1d6,1664070174,2018286228680793487
+ef7c599d-84f3-14ba-d9d9-a0e7f6ed8858,1515361752,5924395641779021529
+b01f2404-0cea-9381-c4ff-d2710e1978c7,3269444266,6552533773074974892
+de4cf834-dc05-0ba3-98b8-613819c9ae52,121104724,14279181002970125126
+0999cd94-4229-30dd-65aa-5d3578a10014,817310247,6306982343832472791
+64e8c9f6-41f1-75cd-dca3-34f2389d1376,2730930228,7960644088207685733
+f87c09e2-68c2-5337-b58b-b76d7c2553fa,321267490,16142594522746958313
+307b0c7e-4744-6ce6-435f-153e7e2cb15b,2330425039,2107234258045634657
+a85b0647-bac3-9274-6c9a-624f78d475a3,452916042,1001456057151174651
+7ce024a6-3d01-f8e5-edf9-40e54a0676cd,3847681515,18405980116196761313
+79d03529-0e5e-162a-0cab-6fd5b1157b7f,2929070472,6869165748848245241
+6f2dad83-66bb-8ed4-7d4d-338ccc86e0d6,3355191204,15201164273027740741
+7f986471-a178-ebb9-8272-02e55601003a,1210879396,10323793208950093805
+e4cfc865-a022-a8a9-fda4-e91e1c81f38f,1985273273,15443972508282917267
+b2c7b54e-2b08-49cd-c9c2-2d5212e45b8c,1364214287,12284626245787408095
+ed46d8fc-71b8-efb2-a143-3e7242faff0f,1524259093,11821347519967549180
+80ae7b7d-579f-f44c-990b-ba1988e734d5,1709733864,16468037265157128804
+d8bd1c6d-390a-3fac-e0b2-fc3ca8a311b0,2021900763,5898806237076685353
+d827864f-d36f-fa2f-67ed-f14d9b8f7d2b,1884938687,2790578490742489092
+a6d5ca2d-ae8c-a262-0e95-2f4917904466,4092888997,15283723261974630369
+1a8e5616-c909-088a-cbea-31ee78cb3d2f,3144262603,1506459220860175774
+4f742329-e745-d93c-7ff6-15cbc94a195c,1123996176,16075124900812086067
+97d132a7-3991-2796-8308-3a56a0084306,3489114184,10042233665313252746
+8c8e367c-42c7-11eb-61c5-13331aadb89a,3424115071,9658251871948503711
+19983860-50c8-fb21-5266-4c8ef8493e73,1639212852,9681853567259970639
+425f1bb6-c081-57f4-8598-9c2542676652,3714426905,3800325188951307458
+3a73dc26-8551-ca63-a4ee-b15f6aec9ee0,4056842700,11287517765343287904
+168accd4-b448-7ef1-da8d-61d3ebfc5eaf,3212231972,16217126258589932798
+1cdfc68c-ac75-1566-430b-c439cce4aafa,735072727,16963510464933342540
+31e4f758-f1c8-0314-1da1-2a5a098f8106,1613019027,12699590011697691274
+cf9b70b6-f120-6ef6-dd6d-a5ec5d5f8bb0,1612268754,14768638063945258873
+0a5068ea-3839-2108-f7d7-a8249f2d82ae,2249732739,4206925931933501677
+073b5d27-d826-4e73-c43c-28519f525220,1566066858,18280712016301073296
+8ab9148f-900a-fc49-428c-63435906a219,3545586556,3328759491502181411
+65b1b565-b30e-d8cd-3194-7374440a0ecd,1849599130,17559174690722325857
+7bada73d-770d-9e76-8c3f-193093a86414,1150864184,4904482030997168310
+93f46dba-e176-a52a-f32d-2771543f5b37,472733524,3048374616689950164
+588de552-0e34-2ec7-0b30-4ab6f98cb67f,1325494778,1571920452676402307
+25d40a34-004c-49fe-b68d-ce23c41b8033,2757790013,14001877979693710020
+09695bfb-041b-6177-2d2f-efffa2fce28c,36121633,12023853396802590790
+3a90ef10-d2db-7147-4ae3-d543fa2ae437,1517335489,6728383900063582848
+9a8445cd-d319-669b-404c-ca1ee6c0f27e,714148264,9897403514331056380
+222bc625-eb98-ef36-4282-639b42134589,3936553409,10711690281011281258
+9163a3cd-9e1e-caac-18f9-2906bb5bd3ed,2066038175,3874667587743272178
+89722193-4713-ffb4-c074-ac3a913ec19e,2213743514,12058013551463117793
+36da5f84-56ab-96e8-815b-c68188de8dcf,3217288905,4249678307781961466
+c08dd833-b2ff-33e5-fc65-8a744e094393,2383936933,11426884312134523222
+6eb319cd-cdf3-e65c-8cc4-06552d7a6f48,280245734,10105571932634367901
+cf7ddc81-5c2a-9847-a09e-4d2c56d84bd7,1194316043,2346292085193862140
+05d4b751-02b1-9189-1e15-65c9d1683b79,1621806707,9619227983975917217
+6cf914f5-801d-cc71-3c51-d497156c632f,326132253,8884960171852469744
+d57a3ff6-f8dd-1bf4-e67c-0b0d9f23ace0,2479798307,957618109201283392
+0c676dea-04d7-3bab-f63e-56cecf1b90c0,3485277318,14652435493462632270
+8d6b5df4-73e3-a152-9d8a-f5668cf4789c,3932291794,3610683055876932867
+47950dd5-7a12-16cc-5593-aad6d4c79a44,1285389400,15509909623725943929
+81dcc8ba-a313-c6f1-cb36-507e6ad6e262,767063619,13032967974668618486
+c6dbe5eb-4334-8a2d-8ca2-a5596294bf7b,626177506,4124076486754650932
+349e9dc9-c1e2-5c37-f88d-577a086ed355,3452938942,5181850105830724915
+07376715-2d00-5704-4477-d8aa4401f9a4,528059724,127925106026963372
+c1d89de8-9f23-234f-de03-8f9e59f39abe,2547631540,6327493166669226583
+953eeed7-f5a9-9014-8781-e53a0dfa42a1,1375460941,9291113613300445210
+2c0e176c-7f97-aec9-506e-bed117110721,1020846348,9249338343876457620
+b4c75e1a-c694-1585-3369-0278117ffada,390140459,4252535449976669160
+eac9a4c8-0476-1f38-d22c-e5286b4afbbd,3556278775,12061306905492892211
+fd445bda-247b-795a-3b2b-b6b6e46d31e5,3318535333,15093262952855528737
+208b12ff-3919-47de-c3f5-efbc210ac38c,784631476,10196341907246902994
+a5c20fa3-9724-800a-fe75-ea0c4ea7fe41,3731311832,2839824070264134320
+72aabb05-f631-38e1-d345-5718a203400f,432413997,5218029145200937371
+866110db-4256-669e-b603-30ecfd0409c0,1916870309,14252274389081107446
+83857a03-2188-d5ae-f621-64c9bf5554cf,3241650113,15166783527739075598
+5fe57a1d-02a0-b711-f611-db4f966ff1be,3140427764,10719546207567455399
+55ea311e-4f5b-7c3c-a580-7f605db10661,1359626058,2926056045226306140
+11df74c1-6565-7fed-5dbd-2ba234ebd16a,1782737517,9814723309287434977
+ba7ca5a9-1ca4-c04d-da34-7377793e58ad,2315068736,1468847607196960999
+bd844d08-eb47-6c44-17a8-c1003046e27e,1368939799,10542364040188104476
+67675d83-d63d-bcf8-fe7f-a9339635d24b,3263493051,3466632342297615281
+041f964a-1d45-45bc-ac3c-331b8af9c092,2330457454,8354248064953264710
+54b7fffe-25f0-fa52-7d3f-398ec25fb420,1774972025,12294734342271339026
+1c0b348e-9399-db76-8535-64250cd50983,3824640619,10269156889594194941
+93439d1b-3a8e-3007-f3a1-9764d73be51e,3582932078,3571938418631110832
+4f4eb0d3-fb16-0736-e786-2e25ba329de0,765481455,566708200252558678
+1a544b9d-aca8-7301-7b53-c9de971c7320,230282022,13706859060813679605
+0a0b8b01-c11a-3737-7f42-80742121c549,4182081285,13641913435867480818
+edde4b81-baa4-dab4-19bf-7133c6ddf3f2,3118211847,744310520310867986
+c6b2871b-523e-8665-2ae2-b3f953c311de,508232241,9648154860781211959
+0818af9e-2271-f281-3f1a-45aaf217b011,3338945990,16347478303210161667
+b56f756f-a6da-6213-847f-aa5314799025,941176116,11005791356312502048
+6f57500c-5fb6-1a4a-f012-c6b8e189ae19,2536375677,15402009559548337841
+4307d6ce-3240-06d9-d87e-c0be4260c8ce,2917245659,10435591276891279359
+ca6586b5-de40-7d69-aae4-603257bf47d6,2566582572,15220617854398054272
+f6883fe2-1007-daca-6161-c9cb3b42e651,1439398663,10000544464032564950
+2e837b8e-2bc0-2123-159b-b8e9dd7042c4,2863818079,6877338692951340392
+f98af1ae-0e1b-ea1c-3ef3-26a6e3c51275,322790035,1160827978619763148
+f93e9a83-dd19-8455-1f2c-e0aa436cc25c,2714625600,7537658650239956535
+01348a91-85ca-b9e7-a41a-d5eecf08ddfa,2343712329,6056061805781371475
+9804e1eb-910e-a1a3-ddaa-f7180c1b7c2f,4233584462,4518000924905774234
+47ad8845-fee4-6012-851f-5e9563d8835b,1047092984,12657036028818133659
+c7a66d2a-5553-c751-5b6b-127e0dfb7822,3653794346,3753876359773526753
+81d6b81d-3044-9505-15d0-31ad5b8a0b0e,4064538845,9800715476675785386
+67f3f6d8-154e-6e8c-69ed-274c943d6928,2745036714,3293270466016221002
+647da324-0abc-c555-52fe-2aadb2ddd0d3,2177835300,6121415977637587034
+55ff6f87-eb56-4ad0-2110-7294435009c7,3669792849,15379090562806046943
+ba70147d-1254-7b1d-5462-4e573cfaec16,3233840870,2395858510459434388
+089ab823-a2c4-74af-26da-f3238e6d6603,262769481,17357997733216962504
+82aa6fea-49a5-61df-e246-c6591c967c73,2324561276,4375400204850085854
+fdca9b68-99c1-b81a-b998-52c82c638b4f,1841189611,14583146421470689774
+c0053255-4be6-01e1-b211-cf69c0005ac1,628427375,120041886005306139
+0097868b-73a9-b60b-f329-1ed55728b430,3339608970,15086398215849570042
+a4eb524f-1472-b311-bb71-47016ea1456f,3708641094,10854932004285960999
+500d0db6-e8ed-50d4-cd8f-ca29aa958906,2661520148,9449193232434296659
+af781819-ca8c-b132-434f-51e95dec7594,460484919,10889431948847459772
+99294e4e-fc84-ab0f-1d0b-6131a74102fa,1228189179,14389500688031604408
+10e68a57-98a0-b3be-582c-228fee6dcdaa,2036963511,17685758899717628900
+9d19eb5c-e76c-6169-b3ca-e80b07671da9,2541457911,1077244442136754825
+ca0fcacb-e1f3-8f49-0e5d-a1b3a2f0e5ae,166136263,9461235552155732408
+0ad47ed4-4e2e-ed2e-f52b-aa01b7e90bc4,1153315088,2454687691147029278
+510d0bfe-3b2d-fd38-f3b6-8298e809625c,4069054127,1278479531907537048
+b08ece2f-734c-e417-f2f9-34a523d7f2f4,2560507070,7042849426643526487
+967e874c-3a93-05fd-7b17-ec56c8828e60,2417985999,5462104314996597555
+4423b96e-defc-8aff-320a-78c099a52c27,1596515002,2377425550877637334
+c8d8ff7b-022b-0059-8c67-50d8393eaacf,1579657128,12346177426989178836
+479f04da-d145-b136-ca42-6533f8ab13d0,1363696740,15179274413897418374
+4c6e1812-86ba-4113-40e8-afb90a26802d,3800013079,914275349709621189
+aa045756-2497-de7c-6a79-c4ce4f308d38,2686846286,11143453639563248337
+a42b79d5-aa46-75d9-ab67-98b886903d1f,4180509880,3766961246163837978
+efa81906-1a7a-eff8-5eb0-1c2a1ea35f92,2154523571,13144861885988269373
+b1745d40-c3c9-7fe0-5ddd-0959765f15fd,3281223075,3062457383183522352
+0dd73f36-79cb-5869-86c4-c51379719059,1199074416,12765946241975099818
+30342a3c-a08f-72ba-6e26-9dd8f2855be5,2889408068,10672319589549590434
+f2530964-4c3e-6e54-b963-d33588d8c857,2407056838,3477479646508745625
+367d401d-9e20-23a7-a26e-213114214e7e,2566038100,10069163538297725891
+f5d3d90e-2b0d-ad3f-b872-ab0583e9d9ef,11668710,16360951068785956486
+8bde2b10-a99d-c38d-71cf-74957abc60e1,144536109,95846854116989637
+167a9f1a-2048-7dd4-8cca-64d2c0803c88,1313723914,6581880668388991957
+c01629c3-2e91-9ccf-1db2-f71169463c10,714663668,760434425826780770
+b848a72a-9f95-3795-0e0f-567a3ff0975f,2074583939,249935333025349559
+6a1613da-5977-4e37-4224-d629b520cfa8,3942781184,7723968768985223313
+872c6dae-84b3-b839-0bdb-637f7179507e,3967572078,10259487499820377077
+8d3572c7-3eef-27f0-642b-de11c2416e32,3323977432,13654222987602605158
+227c234e-c1f2-de85-b370-29c1e80f9a80,3773761698,8051046534990319630
+262f879c-308d-da96-1a4b-e9ccca2bf895,1651722735,14350059122557101065
+016cb9b2-e3f0-3d88-59b3-c7ba3ec4bc81,3418791744,8871719614976722401
+463c1046-a0e3-5cf2-d4ae-e370fbd10202,366580900,17759824406966604185
+7c56c451-6b5b-708f-45eb-f62928f41436,2430636841,18071926790826990276
+a5489dfd-530d-1f07-88c3-a85e24f8971f,3856823928,7146143284584733687
+85778030-4da9-8c94-1b06-b89ab07bb07b,3094628029,11496698120863023951
+6757e5b7-94d7-9860-539e-5fb3719eee7d,2837471416,10283030338638077150
+c94d922a-9be0-f49c-60fa-1adef8e23af5,3198455011,6407994468365433620
+0d4b8f04-19b7-7f3f-2932-3875629825d9,2533448243,18408211647282358407
+5e4e240c-a120-eb2f-f3dd-68853f69ab7b,401037013,12552086068772918432
+51c6d7c4-0993-a3d8-199c-d4f5fcd4428e,1482776074,10000495140616910690
+001ca9d7-28cb-932e-8791-bf70bf3a86ff,276285506,2981274161672341048
+36cc7246-a58c-b009-d27c-3610f5a31029,3188254016,17327903094261703351
+6f881125-888a-101e-a73d-d21ba55718e7,1507877755,11717971333607190798
+97a6344a-4386-e5c9-bf71-0dadbb6242e8,3209700161,3845456498964280270
+ea790416-f60e-7706-e973-a18bb855d94c,568123701,10174205298330867680
+dfa6e2f2-afb4-94f7-15c0-d39eeec83959,3889851495,413450148867865445
+76eeced8-432d-b3ec-ec38-ff45292ed4cf,2438012123,320275564212108180
+98e95bfd-154d-2046-01c7-f67b96824a0d,614412910,11332364544565093304
+c8b8482e-6782-b28a-6c50-20ff6aee659e,3374481249,15730646798341782620
+ad90f01c-a74f-d35c-fa2d-796a5799a911,1621571305,18313286785942299422
+d7e9b73b-7203-ba04-a00b-ffd9a2a44cfe,1229142804,11198930285042889086
+0fab841c-8d40-7f22-8caa-1c51e91be6f2,3215510223,4612887821802205309
+848ec64e-8193-88e0-e3b4-793df73ed1b6,3156326126,10513503393104129296
+9c034b8d-8f2e-a5e4-fdfb-e327f9021124,1645246979,1260174810826177186
+1717a31d-bc01-dba6-488f-050e18e0b87a,1176692750,9319089726567922091
+f6ebf00b-e043-6b65-82ba-ea9640d1a551,2665004262,6695518147844469385
+ba1af030-c4e3-0afc-0dcd-095cae993f9d,3972108326,3975746631568084124
+f35f77c5-020a-bbc2-d05c-390c7b684207,2724761972,8348138435340693397
+c4e2e47e-7e82-61b3-893d-816b9fdbd86e,3523629532,6139472904784434709
+f77c9643-1bde-6a4c-4b5f-9d29933eab0b,1529331364,18081183591611092602
+deb3db61-4eba-9edd-a68a-50d911793723,1514985768,4863204340369427714
+417bce75-06a5-e4d2-660c-179c047c1442,3207635394,6908146930817763719
+cfe56b12-c21e-a0eb-c902-c70ed46cf5a3,3294072474,17042510751761882464
+3228b1bd-9c19-a751-9008-23b2a27a2702,3882137091,13012695572625440489
+9517fa42-535b-cd69-7a2e-e133470f6b60,3936723637,14357794558145931513
+dd79c7dd-d963-61c5-a525-0f59853a968d,550460313,11481865734181906744
+41cc832a-a939-888d-7253-3d7fbbde5a93,1772186380,2217187636685830809
+a1fe61d2-abe0-5605-bd38-ad42948e8886,1818220826,627023268870873181
+1aefd3e0-97ec-d95c-f998-3600de5b8566,3519551359,10285415726895520007
+1e61d401-b80c-ceb6-ddd7-9258a6e90935,2274477470,9325087530360468938
+55baeb9a-8ecd-dd4c-436d-722791ce06b9,741787082,5960736769830688579
+d5c9f877-4ac1-ed38-f262-d63d3b764b82,3688205505,1982189657778657253
+879f76a6-7bd7-8561-1fd0-9b61806b407f,2878796988,11077527225461209446
+be3b1931-e8c5-f8cf-cb42-052813969479,1659128883,1318489774419362989
+e54ba971-edb4-05f0-fa41-a37d70c92333,3664961838,9772139060170513693
+a3ed48ad-9f84-5c10-7b82-a7628ef67150,2818347540,11403593229759355442
+e5eab1b8-50dc-ee51-5e50-1421dc80cd34,484922057,12430187337616387031
+94aae69d-f6ac-081c-c39b-c3836dc09e62,402392888,338131576392534838
+a872e9b7-7188-b517-572f-a07f1b19d510,2286748053,2197334113543361863
+2cc8a89f-8e1f-6b5b-fe4d-c8831955fe43,2482821810,708187072922162914
+6c71978c-280a-0e30-3a8d-4af8b4ca66e4,3893452968,1933041879573795432
+7fed830d-3eb0-2f8d-5c4f-88e5e3131f99,2081628714,14694614332018046790
+3bbc8720-29db-aef5-9176-ee595b00c529,383870062,8550184040190240726
+32d11553-d971-3867-7692-6181524865c9,3839134401,17913975857018918014
+d97c887e-865b-a539-dd32-ff5d0611cba4,5570713,16528707835986437163
+026bc923-e15a-589d-826c-04f25e657861,1960071051,4228619888985919309
+8f7b1ecc-7f14-1f8a-aa36-8dc1d169542f,3644022500,12371300807377748802
+2ca93256-0ae9-a8f0-a1a7-dc2aa408107b,63694674,1613812904275854403
+0f769c63-4cbe-ea64-c174-900b5bf5ad8c,614197445,16042875251414123073
+0900ef7d-69db-4e36-0e12-4a2206a219fd,2382743548,8770368580816041378
+374b23cd-e57f-1617-86f2-867d4a1eade5,2112043477,940459395923795401
+97b93e6a-2809-afbf-74a5-d6ba07f8cdea,1771794735,8087161545625358538
+0de81ad1-1ce9-1f78-2281-41837c8b8968,2145692926,13652366987198011090
+89864572-8237-e6b3-4424-c835e47200f1,1575670977,16130367710786705060
+83be8dfd-7367-217f-7153-ff3be5c0a3af,4034564684,12351427584776416884
+41d50db1-28fc-541b-ae92-7c12a768a4cd,3068015055,16130620191728543756
+a02849d0-571b-3fd9-2a59-828bf7b764b5,4245177082,15945207529932370785
+d3b09450-a95e-4ecb-9429-8fc8e6b734c0,455250268,12983986258975438801
+ba317348-6e0d-bf88-d423-99d438360e17,574076533,10945256675353298950
+8a5b9c81-cf8f-e86e-0497-c05871a90cc7,1125569557,15573608138998993820
+41b1d904-4248-ddb3-8547-fd1fbe16a4e1,840606995,1514110545979043847
+317127fc-f7c4-920c-eb49-7f44e895097b,1667475354,17455918110045031883
+3f920da3-35d0-cd9c-da92-719a249f80db,12791427,4573740357367308711
+db059915-1a8e-b202-a62f-9a9f36bba28e,381903649,4307855301601128756
+3df49c69-7374-36dd-0c9c-856152060294,555204400,16800451953168371010
+7c87fb47-f9c8-3ba1-594c-c7d328d6d95f,1459114722,7647996812297948105
+e77bfea8-b36f-56e4-07a1-f888ad10c904,3641563203,1467943850205655836
+3fc63d22-c410-63a5-6ed0-5c9704e9560a,770622696,2784128633405365570
+9131fe69-0e6d-509a-9eed-c41370ac12db,576160303,13739474570737809608
+be893ecc-01bf-ca82-d538-49f5bde7f841,2225552091,10087505125878393811
+d17cc6e8-5baa-8624-3c8a-379f6e9f4bda,143245196,5749593068866943702
+f11a62ac-6bdd-d10f-0597-4a5d9c44169f,1982381390,2625320229922684216
+564a8341-698f-1c9e-6e36-09052283918b,2133888533,11923093148199139152
+b8482bd8-fbf4-d397-af92-ffdc2b30c1eb,2449595277,712189662901235871
+9152b55b-80e8-1964-1fe9-88a7547ae9d4,4156294887,15014510775009766411
+67b27e66-50d1-07e9-2b7a-25681f8b976f,895921827,11735420080734397171
+40f987cc-ed2c-b749-e002-4e3a04d1ce33,2938362274,4575787907629178123
+dfce7ec6-adf0-fa04-f861-3392e5fc3537,868640084,14163974010738324037
+0059f94f-cbda-52a7-c6ef-3ac94bf69586,2615868834,11138764371181293431
+080cc371-d5b0-53f6-6fda-901a888232a8,1556427613,14330244236859726355
+eebc54f8-acc5-7024-61a9-2358370686a4,1633049927,12104874205318545942
+d412e900-92a2-19cd-af18-287e6673f90c,2927417224,6676082995564681137
+497b63ef-b26b-ea56-227e-786c7b4822cd,2274892827,4688521598085367953
+b3c6c0da-d6fd-d911-ee30-b22ac2849271,1703748246,12624275408647707988
+4bc5dee6-cbbb-667a-ab14-11097ed1ca7e,2000082462,273523809115287841
+c15a6338-12e5-e565-e86c-9a9114253839,1152166977,15888854862103262381
+b067bf4a-f860-4d3b-a905-2ea7338aecd3,4048613672,640483059447719343
+705a8961-9b13-c49c-ac7f-a6a45b85982a,2840712432,15542975953608676298
+7cb78c37-ed16-b2ef-ea1f-e8d1e397ad66,2716399527,425969729091134070
+de32ed16-c7d5-5876-56c7-252d95929cfc,2498117612,348430835966319752
+0d7f086a-73b1-853c-14fc-df10668ebb1b,3092936314,2986563199241316277
+4d7b41d1-bfef-f390-9670-3917a8547a89,406701071,18363945277179222907
+be86363f-b75f-3dad-dd18-6ea9f47eff61,1702272712,8048096844897743667
+f5a79e99-6c7e-f4f3-d1fa-732f39b35adb,1925195381,9145026393700718663
+74b273c5-5220-8572-586d-a2f797176d09,1532918369,1213098396564657060
+5017895b-9207-8774-92c9-934e35e68fe1,3882110067,6003621215267282388
+c83ae4b4-8d5d-a042-71e8-eeb2b13d8e63,2522148933,12917248267946896764
+0f41f00f-a401-8f92-54d5-f1197eb24491,506511425,16475018439490299313
+ee5abb6d-e056-6356-f0e0-52acbf93de36,634517850,14475272595130827213
+fae9903d-5136-05f0-87bd-bdf0be4a0a3f,3409295877,15447141191020319091
+8204f31a-ae71-5e3f-0a1a-6db3955567de,4195556402,15266293456162193050
+63d98097-a1a6-11ae-ea7b-50168dc9b3c1,1035000976,4068395690844325508
+095be539-a92e-7d2a-cd30-477052b2f7c2,2846117747,4808606819771210932
+1435cac2-6ec8-2455-17ad-8069e0ba103c,3135514656,5179203699702306132
+63859cd7-70fe-2222-7b7c-dcac07787d58,2563315330,4139523332865427331
+72d12df5-fab2-b07a-8c5f-e91464691e40,3195350204,8289131312941947559
+6794cb79-40d7-889e-e65e-0bb1ea1e31e1,540247913,5130865099454470504
+742e3bfe-0ffc-5e06-aa51-2308bcb46385,3952652795,9965448265836735090
+87f1f55f-5e27-d5d2-bb6f-6d3f9f88d7fd,1086816390,1157200717974701898
+438301f8-65d5-f954-ae80-4d6053c9a4b8,3303940944,14660324892735784319
+a404244d-0f9b-877b-1500-7b0dda16b67a,2595272636,16927147082933823907
+649eba83-0318-4d31-6b98-3d012c5c97b6,623274473,12612974310978798240
+d1ecdc89-1359-af17-a71a-07404477cc37,1089960428,9374516394470849718
+aec85765-6222-cbc7-d820-fb30dcdec37a,2970101078,2225089056681136761
+419f738a-4521-8e68-41f7-7616e9aaade8,2773948086,13015114475412649337
+f5876ba4-8cf9-dc72-f92c-82eb5dc0781f,761825415,4639356653491459302
+b1d81537-12d3-424c-30ba-eba2c12444f1,2217852784,12700334459073255348
+837e40fb-a3d1-8890-61bb-951fe69f18a2,4093411934,5741390312128817482
+f5a9ec01-fedd-78ce-19cf-824f8e13f189,3369511204,16232034023831056973
+58a615c4-733a-d79c-7907-b4ccdc5947a6,3330589552,1887074499878792970
+ffa6ac8a-305b-02fd-4ec1-f09933e71026,1739642077,15217067231818448838
+8020d10a-c9f9-176c-2bbe-638286e5a453,848194311,4307676747861711006
+333da984-8c3c-8e71-0854-2bc3e9d803d0,2833948487,2859872852729734357
+1151a361-11a1-b990-9f92-c87b4bb5e518,1616061617,6195618387099976727
+1f3968de-8967-940a-9f89-b895e3bc4e11,1290519559,13685207976181410651
+0f0cb12b-32e6-4131-16ed-a9acb3ace846,1674779016,4806636868097231248
+7b1600ef-db76-3666-8a51-b72f45172a60,1317084946,15065728360913521593
+8363fa41-0188-665c-2c16-e0408c71196d,4138822597,3169649616178715081
+926ead1d-daf2-9bb3-cb0a-b2229e82b5f3,888656464,1994716623386639288
+f89342c3-94cf-61f4-d979-4c76c5a42faf,2472993146,9367225667376307554
+6b4ac862-d831-fdbf-f4e7-f0d31cb61586,1436751469,14752998482557686689
+2a4b1d18-16a3-acd0-2be5-8e364fa4e04e,4113554012,2526316638763733997
+cfa20556-71c5-be8c-13f4-4bacbe32e597,3232384242,3396273802322156912
+22b8caeb-65cd-22f1-bdd1-379e11813980,2275725978,7234882092614046643
+3375e955-a209-de02-f668-dd0b19f8b0aa,2385063494,8363718537242369414
+16658e55-ef3d-c45a-e27c-32e2584edd91,962061508,7860026440659457147
+8c047c3f-e4fd-c798-f281-bf3b801b782e,332365032,8752982343536269833
+227be7a7-c015-117c-e933-6206ca1be1b8,4233735948,15000980837154981204
+2bf9a3cd-9c15-05b1-4bb5-61d466f13b00,2837506136,7237887736545936733
+ce2e9fca-a5b5-cece-26eb-34cc20c375f2,3630046954,17156572193808645359
+6ffe3da9-7d8a-0cab-6b63-7c4285ecf19e,584500203,12760086102316838814
+f895756c-0907-1b55-ae5e-822b6e24aaf9,1569483292,6329978482626365433
+5f955d29-2f50-e0a9-f97a-ce5223266df7,3676333507,10013891998557785715
+cc92f252-7761-f4d0-e9f1-330f4e9e0edd,2681346126,2616343067327248377
+946e176c-d211-3783-6150-1bd7570278ec,617549761,12374423656740092838
+a09e6922-0b87-4b6b-aab2-69879601c2cf,508541039,1570496355296083818
+f173766d-0435-0e57-b699-0ee5f0ce6ab7,2600867760,2084143178817570305
+f1858d75-687e-4b69-1efd-9ddad8bb7b82,1506181355,17248831643369088575
+b0b5f4a8-0df3-6428-e0f8-fe97ed2f952e,2903020698,6444292720358533868
+6711084e-0bc6-8426-124c-306e7128fbab,4043828321,444828419546367663
+ab8859e8-939f-d065-33b6-da32404e79a7,3108292728,15117973965545944806
+96832d0e-472f-18ae-c379-3a14d987f724,3896435824,17299883006226927812
+f594ebbc-0798-6121-c920-cde532917988,311679568,646418532742718488
+a1b24d23-5c93-43b0-1d06-5432b769f4a7,3331200754,12726713192260918862
+6dca036a-92ff-774e-3c28-234be749cd01,897205566,14470644890015869263
+bce3b2fe-bfe8-4953-cbb7-d63c32333dd6,458325817,8092394854808919996
+53a2e6f6-1947-060f-1ce2-820defb4002d,755880945,14251289528011573113
+9a140a5d-563d-3d2e-4354-88fd7bf0b93e,836303284,14205921190708120565
+fbaea795-d4e5-0728-520d-c01d0454ca4f,596447725,12495981104027192966
+0f614a0a-4b7f-c263-f5be-e113e82f885f,1552918263,7052998138481849230
+c45eba7b-a9e1-e10f-975a-251abf03ddeb,3405645112,308979988149354837
+ce8e6c1c-7eb8-6d61-bb28-fab592f1388f,3824292689,4602579829486539502
+e16344e9-0caf-6eca-5e5b-3e97bf44de16,3997023187,13770861445292785890
+2c47a258-d1e2-742d-482f-325ad986c0df,1189125005,1428882876037773517
+4d8d3bce-4fd0-ba67-8382-efbbd3ab83f9,3854856389,16985034999623396476
+cb249f76-e614-fddf-e9cc-473d7fcfc4d7,1797033670,9002794362307777372
+4c33333b-baf5-210d-ef84-4ef55be8719e,4251253827,1723200616251997141
+7a48a083-ca11-c5b8-9eae-6489f1970305,1314467779,17637827152496141819
+18d1c209-2e45-6787-076c-95b06983d2fa,498501860,10763105488038358366
+aa5cc24a-8d67-1772-6170-b0a4f14d5273,2136927325,287934520908839627
+0e9f252e-f99b-24bc-f9bc-8fe0ae75cbea,48616511,5495747408129967520
+b825200a-2db8-ca52-eabe-6b2d717ec13f,42745698,5526332360412696014
+bf37bc1c-1d42-5d0d-52a5-24826cec4e9b,2486824719,87818800726238125
+2407f44e-80bc-64f6-4957-2e628be2872a,2087668675,5781615870026134600
+cff35f7d-ce6e-f105-8ee2-f20b43a33383,2099002093,18128114471226622687
+9a2bed96-1af3-f77a-eb9a-53e9bd06d2c6,3462692611,16737554617811973244
+d6db6e31-90c1-259e-c45b-ca6e401070fa,3050742010,8768741506248440612
+d6705a28-78e1-89da-c6a8-586fe03a553a,2362599535,13367380514681233376
+e65b978d-6c4c-b2db-e928-dd87b224239c,1063179547,12243752279256031703
+c7405b9e-87be-32f2-d7a4-9793641e7cd6,3567756007,11231847641737705408
+d579fa44-3762-64b7-38ef-f67053af1c0d,104271334,17684343418897860107
+599d47af-c195-7667-fe61-0ec30806d4de,1306516880,3006244268040562263
+e52e714a-9bed-54d5-7a1d-635975774281,2619777128,9433549887183852204
+c775b087-fa30-ff64-062e-0451c064da6a,901342829,18422167735579638344
+826a3cc5-0614-c2d1-bfb5-5d2c6769c58b,2915625730,2109746724093141075
+b84c3467-0b48-25ea-ad10-19742962b4dd,1566196695,4421113316480546739
+b3ae05bb-526c-4d90-e56e-82245ef5d217,945284476,18418012636293446935
+a29953e7-76cc-6f3a-0ba8-409203f5a070,2992769645,14061098162183119460
+dcf572de-b3e2-ddde-4455-3ca7f2c7cc2d,2665986613,10756465264716935542
+f4af38a3-dac6-000b-c408-64d42ffe5d57,3423320501,2264467304504928204
+bb8017d2-65fb-d8bd-5dfa-2445d286aa26,3459093277,12265686939589485076
+3fe24580-0b85-32b9-ebe2-08e5a4cdf8b4,4081580740,13319808543543828934
+8baee2e8-f6eb-15f2-b56b-3016be3af502,556940422,10368297947415710159
+cb41513e-13a7-55ea-15c8-963605da89b1,3648093259,8349464726686152598
+527ea41c-9247-e6c3-2415-731abb799a64,1283014723,6598921169703002236
+67b3c1bf-8da0-b95d-25fe-cfe71444aefb,1321317404,9593459571817776777
+db032669-9664-be08-492a-9f733b52d9fd,2223805513,18162869368351131236
+0f3c7170-d010-2532-c563-8b89bd99c235,241421747,6068495343333226123
+ebeec1ec-4059-6e04-db1a-cab60677f490,3743080358,11340706645595671073
+4901011c-dc9a-2730-d851-a3e91868356d,159752463,8051441143917620458
+8c706ce2-7c19-67aa-2c46-b0532a9c5f9a,1810561659,13549872039597053981
+e987e30a-eb6b-670c-63c8-56aad3ba7887,2019755140,7721434728087199635
+0403f350-3620-11ec-75e9-68577e898ce7,3952202013,14872569233675331330
+ff6b6154-e12f-a513-8c0a-7bbba5689329,2222285599,3834606536446389362
+52e85430-be57-b9b2-11cb-6f6059ac8d0f,128665542,3346222328695292773
+29567cab-3325-6fbe-cc99-f6ba1b26e085,76149802,4383441441439491167
+3dde809d-a1f7-763f-e25e-6c0d248dc659,2561878251,259451844723823799
+06454f75-1fc7-bdae-01f8-ffa6d16a9980,711558622,3415614953962381409
+85950f12-9c85-cab1-c5e7-c44bfc70395f,431822230,10201634705456863343
+cf9039f5-71fd-b82a-41f9-8f5579b689c7,254548266,16815668715605028296
+7190ad26-183c-cf4c-50e4-b7a53854623e,3523474507,14759640874652658869
+02e96040-7866-710b-7938-1fe1107378ef,2521804660,18399430509582378903
+3d0a1bd7-6fa3-f6fc-e1e1-a14dfc160417,840117930,6345332731177625067
+97905d0b-90af-af5c-0f58-54ca50c8975f,366347287,16445106684840487568
+df18dba8-00c7-4729-367d-027a654b69b6,960443733,8723251592233115906
+748a4399-42fd-4c3c-963c-a7d980028fc4,430021241,9354614612562338774
+e833f6d1-b31e-0d98-e77b-f205173970aa,2684826206,1496400304801524584
+25eae02c-71ea-e502-e077-0fee20278a87,2206185180,12695928709878562803
+8cbebee1-589e-15cd-350c-fd3c52959411,1814478914,6793674789114780208
+7b90bf0b-dc01-0776-cce4-ff5ce413f0a3,1741526137,2394043711175273408
+a5c0f670-d7de-49c7-e427-4e6784ef4ec3,1240984348,5912088283092615878
+20e21ab4-47c9-3e57-e8a7-12b88e052a03,4273213889,895967460565096071
+1d779e5c-8ef2-9ded-9157-ef7358dec514,3383193483,2412469713327373865
+7510bddd-6398-7255-0846-412a5b479f53,3079934838,5634384995714262939
+adecf0f4-ebf6-f359-358a-a922459c7f65,2814836071,13640250915398824361
+b2fb7f24-94b3-dd61-4178-ce0f4f2a3215,213411674,8283891943440462907
+e6f40fb4-a8c9-5378-37c1-1da9fc36c29e,529760601,17525141818102326285
+a595cfcb-4d5d-4bbd-2ffa-c1567502c72d,3298395217,8277227063462978375
+1d38d022-caed-8bd8-e24d-46501cba2354,2462354468,11019685158871252685
+e1d00ad6-21c1-ffeb-c8ae-c76c11248e55,3249351707,10688947163808165413
+274388bc-9895-1bba-9106-c41083c4e725,1809078966,12757427505376969778
+920a7358-d42a-ed82-91cf-be4d9f120a13,558773805,7227449601379071025
+f69c33fa-2061-890e-c83f-c0793aedfcdd,3159820187,3428875632153398495
+7b619867-7269-844a-618c-0a1940cee830,36897556,3430945242517458890
+32702e3e-1faa-8caf-a7ce-3a828f8c24cf,1278230739,12010689739099273605
+c8d31b37-fd24-503f-03f2-7d226dfbe33a,2170167950,7174415055344805895
+559da0d6-52fd-25da-a9a8-36d2f196bc1d,234381929,1204230236440989851
+56e8e23c-a19c-b371-6d1c-d8815124fbf7,166203424,8501260701924643614
+61aa7898-6ace-2802-1917-7d481a21b1e4,3049431681,9461253604192052859
+622873aa-5c5f-4811-ff42-43a7bd2117d9,1127183519,6892577524531552711
+9366dbbd-e341-a302-6020-caca76e3872b,2227336463,4750094359060338501
+1b37cedb-cb5a-bf54-bad9-2c8b3f1dc361,1407326218,2978872324552996495
+cd5e8d6f-29c3-12ae-6199-8befc7062d1d,3930851196,17787409840394798974
+b7a9f2c0-63eb-aaa6-1787-6adae2959989,3549610937,8260879017764983333
+4ed2ee4e-bef6-67fa-baff-06d30ae6a78d,1090505581,9890300746622603285
+78e34dec-58d3-54f8-fb64-cb315c7ac17e,3597014224,8098516508335568461
+a37fef95-6f61-bcbb-0226-46c285a94305,4286002454,452797947348130782
+5c71beac-2450-08ce-c969-8c978c42cc28,2855792687,5092837053259335028
+96e5e49f-bb05-50c5-8294-cba405878395,2785205234,5336891893392104015
+e0557e71-3480-26d2-4317-ef4cf1ef7387,4145509297,10725095121999467179
+8aec4011-0e7f-daba-5f02-a11cbffecc3c,3864644235,13354854074623641366
+222f3ba3-c85c-22fa-c279-0087dee726ac,144386134,3408757573290037631
+26fbce40-edbf-3412-6f6c-d0bd8cfcb4ce,2388515032,9538313109164463343
+a36940ff-8a70-e489-d975-170aaa7c2b2d,546062401,14614926087105876818
+c96bc12d-b728-08c0-1d52-dad921425136,2445319987,8551496684909520669
+933b9544-49ff-5184-cd85-2cc646b85309,2750338183,14520072043864831886
+52c36dcf-6d1b-3668-6861-34f282a1c9c7,404105924,488313566108378472
+bd10a0ab-b6bb-b7cd-3726-c011c54fa76c,3363821152,6322458754632922336
+8a88f255-2d0d-f99e-9573-bb24b4a5ed8c,3301600436,6369583294249982927
+f786ad6d-4cc2-95a3-82c4-145514c9cefd,801136431,7607374243193294229
+ced3fc07-f004-72ed-58e6-2357c44e7db8,3855852743,16628271120366929143
+b8d8029a-9a23-afc2-b731-f65294105952,2484357336,12523185343710466392
+1503f5e4-d8bc-0746-82c4-8bf72865e12d,1382857448,9606930890028785924
+970ec1e9-3412-9b43-b78c-384577e1ffdc,1797897169,5123970572414252327
+3d905440-4d9b-2e31-ed2e-2c04056bc77b,2947757926,4912295586582921881
+a8cfae09-d158-4bbb-c98e-8c93e1cd5cfd,2085465032,10819858828663527220
+12e932a7-d69a-031f-b815-3dfe959685b7,3979326099,5364255589710519139
+83bf44b8-8150-d8d6-e1d2-c64236281246,3544870876,11007079115335622207
+67577816-a19b-8b63-f389-6e86c795b839,660550103,1282072696563115302
+0001ce37-5fe9-87de-aa75-6cff27fa4274,368521935,8574800664088821383
+8021099e-ac32-d7d0-7eda-b8e130da5ab7,839557756,12357958919350674906
+8fa53553-7366-c7de-d5e7-344cd33ee71b,1909595939,7371092783345961654
+455fa4de-0001-7d73-6df0-67d829f72e1b,2592134985,1332038928589698834
+caf0ccda-f2b4-d251-6d2c-e35c805580f6,2295151112,9317004881020199127
+91a2d0ab-9ec2-abe4-710e-ac63afb20b5f,4202883136,17164750784734192708
+58a4b0e8-37f8-307f-3472-fd22cb403c5f,4223603896,1404100486280718430
+e455f1cd-6909-5eb8-eb32-b5a8b4df477b,537856546,2633129230194949949
+37bb9101-ce05-0c0a-9fc7-4600d4f92315,2442764429,15539769638767263099
+31ff0422-4c9f-ce5f-c0b4-4ec673eb70e0,1945431414,6588151159868972597
+3dfb2dc8-70e3-84be-01ca-7bcc0d26bd4b,894282735,9103985099301025971
+8eb5ab3d-3944-dee3-13e8-2b751f395505,1544567979,1688654597447146013
+c86c5135-8d03-f2dc-a112-266260415837,1090743536,2444204379895028606
+7d036b87-23bc-c472-cd91-9b8dec411054,4065958045,7658241032411376508
+fa14164f-38ce-090a-ccab-8ad7f3dadf62,2288086339,17850182147425591969
+c5ec366e-c7af-68a4-e77c-ca6088f16b52,2265403249,8516411194128271412
+409f02bd-aaae-342f-3f65-5b599ef7a0a1,3667696434,1870770737258050365
+4334357b-5f2f-8cf7-c92f-2c6393b85a08,627836460,3197045208574276462
+2f836b3e-d64d-f285-998c-0c040845069f,65213019,1083561598861284448
+01f16586-2607-1b83-0708-7d2f21ea8868,447260879,17904279280131806670
+b4ca8844-a6cb-87c3-72c5-f9ce784c4ce0,1191695616,7603469515214919401
+e6366fbb-6b70-d14f-e81f-cab9a7ed75aa,57442550,18432453815247386845
+009dc555-8067-adde-cdb1-e28f33353353,113598300,9903555048036024299
+47ab7688-7c87-a6ed-63cc-98b4373ff58f,4066234490,9374108637265544916
+001d0401-f163-09d2-0c7d-3a650c330445,2282783867,10335191756331003598
+285ba331-0ed9-3a54-e8fb-452edd412905,2345888105,6655011408597119923
+33f75fdf-9138-7cfb-e39d-72c324d0607f,2451614593,2579803286035847835
+e3056457-86ea-7b8f-9f74-1012cfc043e2,441171529,2769704734336229675
+65ea21c3-160b-18e5-c6d8-97bb390d55e4,1029653180,13607356064879938521
+d0a50a48-cbb3-8181-3a7c-d7169a86ebd2,1293955852,15045857765584689003
+68094db0-ae6c-cb47-6a1d-95eb47fcb5da,2261550433,10288932059374181408
+daccd0df-689d-bfe4-933e-6e2b73d98cf4,1344080905,12543578893792443467
+89bde5fd-3d69-4bbb-30a7-7300f21dbadb,3601542148,4788038428349975685
+ce51372c-7044-b8ca-5bf9-5ab764ccd588,2250119307,6626274430024740837
+5b7b7034-aa2a-7e2a-c659-2e1bd0f0a020,1470462700,6635688551126140716
+b0511289-2a54-e301-59ec-a97986c88d33,3329977929,606229911896178105
+16f3ef69-71b8-06a2-cda7-01f8dd081baf,2375718618,15795426520370153489
+e836b540-1e7e-99c2-23e7-c17bb1c78ff0,2071434216,5474764359329060841
+d6a53f55-c9f0-46e0-f7c7-6e2c28770b28,2351353298,15083600570059063456
+f8e59f2f-20da-ea7c-d9f9-ea5225380b87,3538240471,8272024878843180330
+e12b87e5-6ff9-3973-2f31-c875d356e4fb,3359189477,14961512064651662893
+cdc8495d-c615-9839-5b06-569a7ddcc30c,3096286547,12612901671936579915
+0f3e00b1-dba4-a081-217d-aac8704f0bd2,3070896758,8807459977354751138
+f887b958-4517-9a67-c78e-36d371b3656e,107628898,13060169073401964311
+ad799867-d833-01f8-7113-68a35fba1b63,268057414,10489393904961492319
+565ecdfc-cd93-cea7-61a6-fd07432dc646,980143595,9128747521262258004
+0469fc63-827e-4d7d-eea9-ade179aa23d8,1423568597,3760809108651115311
+3268ca67-2de9-5acc-6a59-c976878f5a46,394670213,7475156837015451267
+db9f9307-fc51-3e6a-c7ce-8c2a494d743d,530188265,17401639679747950265
+ad95964d-b8dc-37c9-33e5-5b7025911471,4227800070,14073966295269647027
+f05849d2-f9a4-3c16-2716-ad248a158722,2940926325,12683442537745258324
+1eb581fd-fee5-39b7-2286-69bdb6138b4c,2430512438,659456995797832953
+e18c31a2-7e8a-6f2d-3e70-15e922fd22e1,2324451825,17330219091701636982
+1db8fb22-3919-1050-c71f-2f5fba0317b8,2994319695,1134926871902246619
+77aeacd7-1d27-bd34-a6cc-b83476becb11,3159699937,6955591637781955220
+55d19b97-777e-f96e-2902-e3d9e2b2dd07,3197223646,4907255251535049575
+6a593bef-d4dd-4935-3d75-daacf9811759,1268626109,8345064284265706536
+2cd0a661-eda9-3527-5635-001331077fee,3192899282,5322999710710290677
+6d5f8692-33a4-709f-e7df-a8c98b157a87,2845131491,15762288997342988869
+f166d0e1-5ab6-7b35-0268-b72da4ca5bf4,3100009415,8651294636294175856
+dae11542-daea-693e-96f0-ea4a2a9a1cb9,606945142,1259400201600882529
+8f8b522c-59ab-46e5-3269-0ef6a897bd38,2001333540,14730121993304052888
+7dc30514-07d5-b4dd-231a-eeab480babfe,103216037,5245924316657953141
+8c77ffb9-33f3-abf3-edf0-5d4eaae4f179,867539826,9763616896395767505
+356bbd67-ae97-dd7f-e760-12ec0786ee3a,1395110919,1413727133313584346
+1aa3193e-9002-1c0f-ff4a-8183ab96f6a7,3983282449,9013506688165433499
+fe97fdc3-b620-7136-9b7f-e4e34ebf5985,3823232917,14403056428490581092
+d75f4f63-a489-e8b6-fb86-ee16df1a8158,4152870931,849215030921631052
+57d8ef20-c4a5-33d3-fd1a-ce27e69f293e,2889137356,11985205762096904012
+ca94003d-90c1-1548-74e3-34a252e855ba,151128538,5820086266193282969
+35aba646-0713-a9e7-53ee-2e5171339155,1618461952,6557579636232375866
+47a67731-31d1-ce07-ff7c-f95b8444af50,456472491,1516490707602761654
+e9ec4ae6-12e0-5e51-9cd9-f0b490177a37,2068657960,127176843762005645
+29ded2b7-fe53-f2f9-9e90-9bbbd8b7408c,2072278088,2264897960529202304
+36863747-c86b-e2f8-6092-ce33f5a8fa4b,3637925914,10697335586229818776
+1de81695-dfdc-9777-695e-e454ee78b4f7,238661879,15586699613832347507
+27260ae2-1565-ca37-2fcd-23b4add05a3c,2389378822,15558553025452414179
+78f5b324-482c-ff4e-f135-5fb5bacf9ce0,3537421323,428615740507754400
+88d6e463-816f-1e4d-3b15-4afaa511f33b,2618177335,18165314330215834096
+1af3224c-7a58-02d3-eb31-bcd67c908be9,378130378,9458629986865262525
+66f56377-a0a2-faa2-0a1e-d8c1519b989f,1726156527,3589712064064112206
+bc62c45f-7d34-cab1-5859-20e52c064699,95533570,1182754856917836315
+669a64c3-e34f-cf13-6958-6cf86e89ffc5,3938779933,10241267305302440756
+0ce5546b-a22b-4f37-667c-a5f83a80d276,3937503635,9921755745847025897
+2f81a1a0-98d4-48b1-aee5-b389f4f43768,85128238,17017460102560221416
+95a663b1-3d83-3bc4-3b13-65573c77bb4d,2597988013,17831399141591660083
+e1e0b98f-884d-394c-ef23-39c41ac4c9c3,883370096,15815641502406558883
+40192e58-4d8f-3ac1-da22-4f3043f7b924,2902223874,11548779830750073117
+027e11f0-8ca6-b038-2ab4-b7ddf2082940,2197135988,7882635459460119619
+a9230790-282f-ae17-257c-838306878077,760196881,11459454734496550044
+5b3b067b-0a47-9260-7ca9-d8d30ec5460e,187688586,5534943321541425019
+19c777cb-68cb-d25b-bc7a-941de89a32f0,1741116698,5249753782282582037
+43ca36f8-348d-e55f-054a-328623239d34,2260722962,14808211611156236221
+2d76f3b3-6a7a-fb39-4198-55f9d8ac3a5f,1407377007,8844913185873059506
+56c8a807-f337-fa24-7ee9-a8a8aa1d86ea,382529015,2077708209478331362
+c7743635-a658-d313-b6b7-923494b685bf,3967988724,17457266706435189063
+9dd8918b-34e3-0329-c328-96afba44d9c1,4139436174,7919951462565434122
+7661e0e1-f7e3-2ff3-3fa6-0b17e6640801,526978066,18058821980666158150
+4718e4f3-b76a-55a3-b770-473ebc26d2ad,4146387289,14507143031899569171
+fcee81dd-a92b-d5ca-43b3-412942262790,679423000,5448628192145431533
+a3c6bf0c-535f-a77d-bb58-e11f8a1f8fec,1245677406,2289280926841619616
+d6d87b33-08c2-1474-f423-d4acad2c9dac,1588418734,18124794149261414181
+fd883464-b4c6-04b0-3014-883c59dccc64,1678536287,13884974644211568847
+4745d985-8f8a-50ce-cf42-8740963477c4,1368456322,4665082128093707274
+962997d5-5749-359a-a63d-0b21f8893750,1030903053,8577540076785714423
+09a7484f-aee0-32d9-c2fa-ee5a63c7af42,2670612894,13266597577469590402
+d2c52e8e-e034-71f0-cf44-d51de40c8888,1665651424,13942878578868757727
+a509cb70-1602-754a-9f03-53a7701a85d1,407009513,11982772275315607942
+af6b83b1-ec60-c281-46e2-b9ed529628bc,1438007961,17343671363839798060
+10b10a3a-f989-98c3-32d1-90f0e3c5ecf8,4230751009,15661002700016213793
+09ecf21d-14d3-1547-388b-a3b6d7de3760,3113736413,14968056376645017650
+0628f701-225d-7a30-3549-85ee737d16c8,1612491442,110215713875653827
+6820b736-77b7-2f35-e198-55ff1926e308,3190931987,9628616057371673089
+435e0a9a-5725-36e8-ed65-ba6ea45d732d,2584438061,8633027149833212888
+c446eb9d-1bdd-3d75-d81c-8c1721086da4,1845141380,2907169691150650290
+adaa0824-a090-a579-14f2-48c95bbc285b,1707954205,4182391295956369299
+b45aab8d-bd3f-a8e1-ad53-139315c186c9,1894855141,2837247659175629999
+ca406a66-4f05-0b1d-1ce1-5729a639ebb4,3650390017,9899763336759200125
+69726b3f-22bd-8a24-f94f-14d453bd8fc1,2046034503,464147717481366473
+060da9c4-0f56-ef2d-c30e-24e9022ed875,2733030618,3677102254694654481
+271c68df-4909-8535-b71a-acdd00d78930,3049223836,12823372212283335885
+ee325a9a-c6fc-e48b-4275-d8b020b7c2c8,2407030379,15113471362855561874
+3eb69007-5766-8411-4206-e4868f16c724,1702537765,15153794058278717655
+02ce6f72-10a1-a707-e67f-b1c596d2e76e,1538404516,226817400616718825
+b0152dba-cbea-8494-c897-66450aee1a14,659584853,5300905937295351424
+bcfe3900-b4e7-cc1d-b195-29a15f352fd4,1697978134,5653545777538508011
+123eaa4b-ca29-cfa3-7ea8-8e4bc4e237bf,1762504454,14114424962333183203
+1c4decbc-94c4-a251-b1c1-ab2bda695577,902955467,7913749021217026350
+951b172c-b7de-c6b4-e202-db61e8e87ba9,2232613945,12325566777535278615
+92778a44-6bed-2a70-3f9a-3a53a2e64a78,1096939383,15928470835788458284
+3c7b6f8e-8ec0-2d18-b3a5-8b68c987e3ee,1966125724,3582743180924750697
+3815e7b3-4a17-0da8-78c2-12b8de1e7c7f,2595273273,13374064163947132566
+9dc880ed-d7a1-c531-5102-bb706b80ef3f,3071132601,11641424415466867271
+b9b045a8-8fd0-5f27-472a-0bb6dda03ee8,1654910113,1619225723678568290
+246506ab-a8ad-24e8-a90f-183c62d61704,4200220917,18047223566369915114
+048ff20c-4c0e-cfce-0925-d2945c7303c5,878887262,14378236410159078869
+5dfbde17-ac04-ec6c-10f2-084e40fa1052,2915622771,3802128983190608311
+c830f73c-c375-9ce9-dcf3-4b8370b0c81d,3301468531,11278749550911341871
+2efeeb41-fb41-c41c-d4e4-9952488d8d4d,2311030629,4233986133264766619
+f7c4777e-ecf5-e9ae-84fb-f37ecf6067e9,2787493204,15617497881062245787
+8d553883-f80f-eb8b-bd15-d460887c9792,4219222475,7587965157470379389
+1e4cac29-83ed-4db9-854b-28462f4a8e73,2162663343,17668314554267023949
+fba456ea-2cf6-5fd1-3dab-382f473fee8f,3633932735,3707127281963264914
+3d6c6b9c-3f68-109a-f7d0-89d7f62e5ac0,2734492109,2263667474958139458
+e6568319-0660-e2f7-ab65-eb2b3ef1d687,1634958896,17645237766822896784
+49ab99a8-75f7-899a-ed1a-89ba666c6b2c,2164507778,872084236901106485
+6db1ff8e-58a3-e175-f1a8-fd52205581fc,1222996024,8302946610618644037
+eb6fb2e4-88c4-6cb2-298a-530249e4c9b2,2883544651,692183641328580205
+da86f967-383e-0e69-a4d8-a8b82627efcd,3466876522,4627117576821003227
+90312aba-d308-1f7d-4105-3d1e4c734a0f,446988834,12659212039332934798
+9260704c-ef52-d44a-c90d-13ca23b9cade,215546319,190837620252120412
+ccfd67b7-1c2f-93ee-4fb7-2c652d50f25b,3612524017,11828814193375166291
+15d4117d-4acf-5b53-59fa-591dc438600a,2376669067,6709646466781030175
+90fa9e91-1856-9d80-b034-875c0aa50b53,1617372803,3617579313615557416
+d9330e91-62ac-2598-d6ef-6440734aae2e,745267243,17144676345359354881
+5b8f603c-9c71-58ab-d844-30763810b6bb,1240864941,3272904671931974403
+1f94e5bc-faa9-122a-d1e8-36c5e3487f98,1473526525,8527972374992222976
+e748a354-a081-7852-ecc9-5f858b9d5e5c,4175237727,5093360727392699034
+5e5e419e-7db6-aa9d-eb03-95d6c061042e,3261485623,2006460245481040199
+2203d849-ea2f-cfd3-9070-936fb2773543,1916253359,18086691282101887260
+b3d1003c-bac2-8df5-3274-d3a2ba02fb1b,748309763,7267293589043079498
+29a14042-e762-ed84-3959-1c85d20b57c6,3450025534,15147179099727713191
+025e31ee-0dbf-a783-9a01-d3937a626096,736131326,7686027215784282237
+daa968b2-e532-814f-82e1-80423102f443,3209235374,2267322469621175429
+bfa04bbf-7a7a-8958-f13c-3bebcae102df,627875476,13479454909930246242
+e586b590-6b86-bbfb-f7c0-7fea8f72bc96,4008233747,4471414223842150119
+9aeda4c4-2f88-7504-34a2-dea016b8d1a5,3401202964,8875821412552675184
+b99bcd0a-79b2-b0b9-f84a-4c55251e8561,3264238559,16275752950658163930
+17da8d1e-35d8-0726-abbf-3fa2e4e2f33d,1660632419,2844508393745880302
+d00119e0-24a6-9e16-db04-8f2f51dde3f4,2421044729,17627713862710543746
+5b00cb5d-ac63-802e-3c4d-c3fcb21d6330,4215015843,6145493406842314753
+674a3ea3-794e-b747-30f8-5c92d64293b5,2936611781,15145620550513765744
+366d33a5-1118-c6e4-abc1-0c96461916bd,3355659391,15091850436051127999
+edb7b0e2-072c-12df-dacf-e4597f6049e5,940359918,11415199725026209487
+4c75ed6e-7887-e5d1-e706-f75af576ac0a,2692538679,14244557881766751950
+1a2ce5cd-dbad-47ac-36de-6d992e2cf76f,2110965229,1017117666420072805
+305aeafb-e779-c5ba-2e1b-990392e74576,2098571984,14711240492676910394
+f9772bab-2249-29fb-9152-c2d067070e46,635145504,3909636889373617487
+6e89a1fa-bd02-a131-c67b-8fb12d8b6eb5,2808868154,2799007859324645431
+35452e0b-968a-5df4-0638-22fcd96f039e,2771656726,1649819312604541213
+57ea82b2-d5cf-c2ce-db04-b118114703ba,774145991,1464164895805644063
+c8dc32d3-23f0-59fc-0a89-81adf17e0666,2589535212,13321875877284334314
+a0ff054f-a003-7b92-72ba-87bf92d6517d,3609183413,16157323137198238786
+cd2e2265-de07-e7d0-e838-9b49ae7b6b41,1679149669,12143215410553834278
+2af6dbb3-6498-b9c1-fb66-6ea1b9e432cb,4059907261,9394633621924829892
+1477702b-2d70-7ea4-99a8-f136b26bdcd5,1714673200,8968080738120317418
+b5f5f088-b1c3-fc83-4c95-190b65b943ea,2183764666,17069837566207096851
+792ddf7b-585e-71a9-696e-2a1406533096,1820259097,8911685364662146074
+476d6b40-4d18-bbce-569a-afb2eb96c33d,265076332,13894895615304878232
+c2c1d294-4ea1-ac3a-3801-138be5b56c8d,2811684631,433731180479421350
+eca93400-d3b8-725c-a891-64121d6a1fe0,650622740,16827780996560053707
+b38aebde-0960-38aa-01db-227ef7d41b3d,3709329767,1074542270638306926
+d31c3c8d-92eb-3347-b8a6-f0a61d07f686,897640985,15106221560182341745
+428c734e-11b7-b562-0995-72f96e5cf020,658458466,938927796156749730
+63c7cb60-7bd3-f864-3856-5a733e03ae02,1464836307,15759484511661286311
+74e947dd-45fb-3df0-3b95-ceb63365545d,796123979,1414175725666211285
+6d7bcac8-94f7-6625-8d8b-500fd0d12b61,3492287823,14267553672166743732
+4a3e6c1d-c1f1-c554-afb4-6b367eef94bf,1448047265,5602850490385913695
+a943b5d3-8e19-9d7c-13a9-d1affe76b299,1671191150,6669558292028151636
+c3e9e1aa-a2db-6a2f-6a7c-436a1eaae016,1881463140,4652144706716254084
+0a293db7-2835-e168-de6d-1787b77c5cf8,3359823819,12912680283064114224
+f27fc4e2-9c76-c13f-accc-d1436917604f,584557736,1455267449509029966
+45c9fba1-f93f-fe24-99ad-b3a290fc7057,1073537643,10190224040642805333
+3ce65dd8-7a8d-2484-7fcc-24629bb679d6,1646745229,1453178382314004159
+f4aa9dde-6010-d5c8-7ee9-cf9de176a886,2433322919,18120079005791891380
+887283fb-fa97-0eda-a09d-62829f0268da,3266099510,4187303765436953589
+da337412-eb8f-9d5d-2f2d-baac712b4283,625648643,6733697656655262908
+3e862a7a-22c9-ca9f-b8e8-f56d3685eefa,743153804,16859748293747135863
+803d95ce-39b2-8c8c-85a5-c58edfa32b3f,3245852996,7694654273515508832
+b01a0bfa-8708-b53f-6f66-3c29d2491bb5,1671540049,1706669592659759521
+1c93ee61-d4c6-1e28-f593-da5762cd0157,2971223215,5804476854565944081
+29c5f62d-02a7-170f-473d-0118148ae612,3917583299,14944969917285784427
+ffa5d1d1-29c9-15d4-7c62-267eb5c07be8,1474945221,6686107872303754716
+ff98d7d0-af80-e8fe-7112-c2849963c045,1005360984,234293263819343895
+34dc1c15-34c7-50e8-6050-29499478c5b3,3807489577,8704276894757046114
+d15fb864-5bad-1ece-3c84-87b7aa74b0bb,2388139776,6826596588620677041
+dbfd6676-17bf-f780-7b07-093462208bf0,2357234982,13983670273605465375
+8dc26cda-73c0-a7ad-186d-3aaf3b1b42c1,178964952,11857181703369358635
+e1de0c58-8013-0df0-08f8-b07da4805b8a,2248427780,5729608531051573734
+428c9ee9-d57c-1af9-cf12-dd622e219555,606771764,15661851248814562543
+4ab27610-8b70-7cc6-74ac-b316c86bdfd8,345911970,4610261489977600822
+6af5393e-5ffb-5e74-e9cf-55ea9c513504,4041884062,12031437632091865044
+4382f9ba-2d01-673b-0a39-9513817ae740,886482236,7172718781799558655
+490d17d5-e25f-5bf5-063c-19a8b63ab6b1,327038097,8783334899262171814
+9c547537-f66f-b0f8-b628-ceb28c4ee595,2963321211,920805798213748744
+07c1a2f0-4c5d-1a76-ff69-fabdbaba4953,16924779,13775360326060897404
+92e3f5a3-078b-a0f3-843c-676d396abb20,2395074344,1011920985522238129
+7dc16675-8d4c-5cb7-ee5f-79d44dd37648,1553109576,682863027996919710
+e9be8d87-bc23-ca8f-a027-e12bf7c274dd,1591163713,14653582756748112542
+93c9670c-1e6e-968f-ef73-e30bd742923e,3987060676,4114651484418193405
+78338e96-3b30-10e1-a337-d23d5a9fcf0b,2327687870,856752455244731528
+c8fdd3bb-033c-8714-cdee-3564143b0ccd,2615714777,8871180211530143577
+ef4cdd2c-63d5-1326-3618-79c816435906,217498866,11588138457520561361
+c612990f-db8b-8b0c-14a0-28df41791790,1550697369,10187823926831943982
+e0b9081e-1b02-92c4-4b7f-373158129af6,3688222698,18370600367636403930
+08e80cf4-a4ef-6dff-f3be-0be5b87c42a3,2911430782,14122926543681699943
+96412972-6775-2b97-e4fb-b386d297b795,1388423685,3712036365758618000
+52798aab-3f59-23d9-1270-50c8170ce9ea,1060621924,621776948601661704
+3a0e7f3d-b960-7820-5aee-c62150e48195,2754008659,9775886739994110087
+25ddc957-3e32-02bf-7faa-feb1727f9b34,993184851,5747353290561469544
+018703b1-948d-b9b2-ae79-48f5f40e2061,158309058,2321418461894782795
+1af45f17-f559-d454-3a58-1e2a32eb606c,2274331189,7332754419638315882
+f635ac41-8b0e-2b71-0f0d-b4f7edc4a004,1776125934,2629571456161446659
+6f5ecaa3-c431-9383-bc6c-3faa57e7554d,3377853231,700291924794911727
+bedc0b01-f8c3-7845-7011-cb548767f05c,3392918488,5932284906219928695
+de3ae517-aa73-0f5d-1943-541ec615a0ab,3633116487,17958746197059628914
+a19afbf6-84b4-329d-ef53-c3a9097efa0b,295003890,10896754730308241027
+a5f0c580-bc6e-b3a9-ac1c-3879af691977,3713748315,13145070265886775939
+5b731caf-542e-7782-7a0a-a70a32a3b464,3161495698,5332289855300068265
+ecd3f082-a092-1ec3-065f-d5cc94cd0306,3998467396,10283491471437567679
+38deb412-9f87-cf02-630c-6b58b746d878,2773356630,13092987449129295745
+c19c60aa-1a70-7664-451c-e177061c9347,4245149612,12379562953718723060
+ce900d76-d4a8-2d31-7b45-b1235b6a9090,195839814,5135684415337015056
+9ce754bd-45b4-7354-fa12-fc407d210c83,467009947,17682434971537746309
+c5dc4ea8-a8b4-6e1e-3844-32d4ac6991fb,3578161785,12860098348766093205
+0dc9f281-f0db-7061-b04a-b00a9f7c32a8,2403003472,16456389057273877321
+2da9bdb1-7350-d006-04f2-02bfa1a52072,2826934764,16303627416522583068
+b9dcf049-e353-fdab-b47c-1eaa83e8c4fe,3465594467,18181575294988146227
+3473f4c8-5f67-2b0a-903d-92d831de0505,4210581070,9604522835438348038
+a2802e8b-e4d0-9ea9-86f0-11e6d1dc472e,2701329209,1917550144768240855
+009c8fbf-1f55-53af-c141-4efc21004561,178869188,14795967445567186878
+b1fa027f-d30d-d561-a65f-b116f468de91,751506403,12635534589860107991
+745170c3-15e5-0e2d-2b02-35346b2e69ce,4174454320,17067747131770582228
+8d6e4765-4e10-c110-4b24-af7ee327db43,1686058332,9932173478788221745
+ead63830-bc65-3517-2c8e-c0b6eae7c13c,2812597526,10113657502722430572
+7d93ce51-4437-a0d2-95e9-5c87b7ff83cb,471692360,6649124115725600920
+07bfd387-720f-3377-39eb-e30ba587a620,961077565,6047272025255770634
+bf6e874c-b38d-8f7a-179e-17b55f9bba4f,4203401733,7715602719972721899
+5abd9ced-9a73-be76-b08d-6a96ccf3cc34,3037935199,13894731826580131134
+5184b7c2-66d3-c807-8559-8a96e9593b8c,4000574712,11018123407484988021
+40dfcd6a-bcfd-8832-6da3-8e360f652e74,2594230541,6795719536826465583
+cd71e0c8-7d8f-788f-c797-14dbad6bb99b,4163568826,11880508460350515534
+def3252a-eb63-ccfa-aa5f-fde8783698e4,2716609175,14136216087478892752
+8f0f54bb-0c03-479b-7517-0b2def0c50fa,24169642,8884152838436780208
+b7b9e1f0-e739-b418-29cf-bd7e5209eef0,3980706964,16108569214519496378
+43ef802b-c90d-5362-96b8-290dda2f4a2e,854565890,14040206831881920507
+da6397cd-81f0-5324-e746-38171738f8a5,262335408,16274935950443213898
+69ccf5cc-3015-a37d-1376-4dd40afc3b80,1572823133,2542648341662462577
+08f8da88-4f38-a13b-c945-6646733f3f21,3161228938,8301034042402609229
+4b882f79-a73b-9439-4bdd-3821d3ed3fda,3118560387,13651221643857992595
+a979c1b1-9136-b342-cfe6-6821fb2c2c04,598434408,533648846979786984
+39b9c568-be06-ca55-c56c-322d14ec0e55,813909133,16663031811688662754
+3b1dea0d-841e-9b68-2fef-bb2693186f5c,1814220836,6814265117575678983
+8576937a-cecd-5212-ffeb-20e4eb48268e,858188937,7381949374468872596
+cbaeb23a-608f-ab54-1cda-c680e2c65aec,2878560340,1507040650905971731
+ff1d67b6-6e48-d4a9-1ad7-741f9bae256a,557791333,2237238495804784838
+1bd29b62-7134-04d0-9cb0-f61c062f9a90,2926037027,1939986351799762847
+533a4b41-b15a-afcf-7f3f-738f95180e95,2809043867,2572891892076959635
+9c97b6a0-b2ca-4116-cc47-969eb8d63bdc,1599192711,3463232380651673161
+ee2db38e-fbdb-1f51-7b3b-5e35a0814852,2786767954,1687602333250152637
+a6f2b1b3-9e4a-bddd-39fa-b438395093d2,2061305750,6275396149308377398
+d2605904-bd58-793e-43f2-e75c05c13e26,1803991451,677801141358865768
+31ef4743-3824-a5da-b8bb-1030347ad56e,3879957272,3427093786367652253
+c5312383-34a5-63c6-f58a-e112abe3d241,1304588440,2317170544333524955
+0cf54b2e-7d98-ef9c-3876-82be4242b3dd,3577037272,15574365487656550091
+a0d2c0b3-f546-e521-42c4-0deea30cc5c4,3858823521,6397736733934048198
+38a28527-9d49-b4d2-3733-2a012b2a9eae,4043978217,1003874977705410222
+afffc2e9-d422-0dc4-f766-9c6d48e00e8b,1909555540,11884438365960634670
+bc8dc5c9-242d-eb7b-c81e-334190fa58ed,1648046458,13174533620360121668
+07ca5316-939c-2cec-0399-c4c93163434d,4027196085,11947634953680837227
+b00ceaab-f788-ade8-819e-b08890d9c6a5,2494676222,7815738962648824348
+897d4f10-a65f-a71d-4fd9-2f8f91cc886d,3741026542,1747043414149759168
+8098f52b-51f0-9747-4678-e4e05ca39e43,948870186,8455808184391444634
+95cff17a-7052-bdb9-1739-907ac16640e2,1146362550,4686847855228236731
+d41d20b3-eef5-2ec2-284c-3313d97b49b9,2957743838,17971889976794127085
+aaab8df2-0f2a-4247-d67e-1f1610b8a1b5,3482338578,10027095506685374673
+cda1c876-c5dc-5a32-07ca-37a824d8c277,4278082363,6718801535094024945
+4d71d904-a442-871d-1fa1-2c318eafe9cb,4201728954,4253664987621617647
+ce29808e-7ee1-2b52-801d-6f7c513b0469,3865113494,13181383181145744137
+af4c70c5-5408-bb92-bde6-d316248cb03c,3299191394,15322934758097424467
+816d9649-e5d3-bc43-f9e0-289f902429b4,3653390517,14997455723633383498
+508fd08c-306a-a3a2-5376-7b369e866e8b,3683897023,16738263240632712692
+76b7516d-86f2-db68-96cd-5cf710a64d23,2402445082,15776444915818193205
+f8889fef-b978-9b24-3bf6-72358998a7e1,714047332,16750484825171664757
+a4e432a7-d727-8a72-daa8-ab77d218c657,2405503385,11814164597773783953
+0f57f4bf-dfd8-c152-1d8d-16b140bd4eb9,3671333395,9706317128983793234
+b56c05b1-608d-75f0-7056-31ba9d8b2c9f,1260707295,16983130884807825066
+938938bb-ba8e-6e34-00ea-9cee8bec77af,4244267862,7734807110159764255
+896dbc35-c2f2-6773-55e8-9066a3e621d5,3644938468,9890481355894826379
+8ead796d-181c-cebf-f3d7-e6d6d2e82203,1598262716,1170479591325510146
+6aecffcb-ea13-0684-585a-f9f2a1cfa3c9,3782383459,12023407269032521162
+ffb0e3ba-6ed2-4e85-d6f3-b59bab3cc9cc,3414345808,4548546112623143064
+009827dd-cf58-ef83-b323-8b343abe23f7,310765039,288198624260963137
+c48fb782-3512-b7bf-2dea-8cf3f588a705,497488077,11241581965213443621
+da2bc7ed-e50b-99e2-ba9d-b3e840fb8559,4251330861,2241729658335773579
+24a8a50e-ea63-0bbd-48e7-bfef73ee15f4,2951538372,3872123853590059304
+5c377586-1fac-5fb7-ad3a-e80f8a51b887,3155276981,17801111687452330627
+6b8d30ed-3d1b-d0fc-bd9d-56dad9746e81,955665599,266640250804650598
+d33a4181-b536-0201-9e48-f7f8ededdf25,3805312499,16842011975021861973
+75f29565-4ba3-bc1d-73c7-8fc1e3137d97,3497296657,16532052487185368321
+77755555-850b-bec1-4d28-0bea55e6bd07,1666856803,1889034300779353188
+8877b838-915e-3cda-2b38-639509327f72,2602652966,3811517171956893573
+b3c138ac-805e-cd5f-3855-af022712afae,2530742291,6211102254777049409
+493f41e7-66a9-d705-f37f-c926c20bf1f5,602252263,12454955704379911239
+4f730dfd-010a-0e2b-2e68-6f159ba06aa0,2856868253,6223336113428641713
+3229fd7d-9ff1-ecc1-30b6-22b47ae3f259,1116292675,8194173091784602560
+ab7fcbc7-6bac-e01c-cf86-756a7180cb5f,3807790940,16211147955990064780
+87ecc1fe-60ed-ae13-a7c5-60d1a9986f30,230149776,2754122756232743600
+d108d1e4-a74b-4b99-5101-5bb970d60179,2916552104,16957156246752219878
+dd550d17-0deb-8463-af3d-b0403ab710b2,1832961116,5261469586515307465
+b8c4dc79-2f07-b077-4a9b-6e1cd288c1ec,1875504679,3235725154598445494
+c5404b59-de42-a61c-1e92-80c20f10444e,2461774810,7127650131839268702
+ec0227b8-6c4f-14aa-fd90-8f3c73f6528a,1125392000,8766388611681790616
+0fa2dee6-aaed-3e37-3494-9b8e12b77f0e,905752995,18296682159223250890
+1816ad13-ad0d-7ccb-42ba-33e954c45a96,1554982270,17524053817647746748
+c200cc77-f45f-c85d-f562-de1da2cdfc89,1269376035,13418686004696494257
+167528aa-5e10-1b32-9a3b-e34e9e8f96a5,3458788370,11469027305916991494
+b56a27ac-6d7a-3dbb-08b7-6d42f68a06dd,3266638814,13873113341827439095
+d9d12f73-2b84-c4da-84b6-64d5b84264f2,1449228143,17077472174345482880
+9bb76618-1913-38f6-32e3-bc42aac385b1,4128850122,10995002562503569829
+92d49db9-b2da-70a5-77cc-01e911956c6d,2244090256,13679939353008464504
+7c476588-dcbf-2982-9570-b1dfd3b41687,2466925603,2992000604952140951
+c70c58d3-3b4c-8cf8-80c2-35e79418bd9c,3121981365,18433427003350990853
+74368391-e48e-67cf-6580-46951e51c604,168477829,13820152657632604686
+cefd04f3-148d-c014-132e-5bf7b44236c8,919310134,11474002329833652863
+1aada259-f4d9-eaf2-b974-9e7c35b1f391,2188803780,2942752057019840800
+4948d12e-206c-65eb-1da4-5f6e914fb253,2316023715,16056167105561781597
+d9b00a7e-ae70-a941-3bbc-216c595535ba,1426404909,16743128782789849751
+1aedab29-8024-2b02-4934-6cd924f31704,742171656,7073773588272607428
+597df3e8-38f9-1864-0856-683fd4e3dbd0,1754353973,3127275961813240602
+59692c12-a378-2df1-d265-1e3265093af8,2681644960,12530836115554237153
+abd57758-8510-e591-ebe7-7c0f852d01dd,544758765,11970261325660969627
+35b0bd6a-cd13-b3cc-bb88-c7617ecfcc55,3920975866,14923421630686030422
+8f3fc953-cb67-68cd-90ce-65e53bef71a4,606588144,7552189029954533277
+af4bbe3c-4a7b-cfe0-4ccf-857165b26746,222885405,3211024309150840786
+a297f1dd-1443-694d-abc6-8926b33c0111,385478004,868301417753113323
+cf826863-d2d9-2753-a28d-aa60c92af416,1119256125,1070414312726666034
+080d7e33-fcd7-aaca-5040-2165b6786c66,459944471,4660552320101759819
+0cc67275-9dcc-a818-5d70-e12737fb272b,716924597,11787349536124831635
+0b762274-139e-b751-3ccf-0f6fb8e12bae,2667652581,1083685979044180524
+1f604cb3-677e-dbe6-79a5-b616b6123568,1379201709,11087880041800431411
+29182d95-795e-c45a-a6ad-08c2b8352b69,1308958267,7590661378724624799
+8b787f89-8ea4-4a4b-46f0-103a91ee0d0b,2810291612,8042026009566471541
+629b7da9-adca-d9f8-bca8-4fc0621f247b,1560549300,8861321785647378053
+8f5435f8-314a-ab2a-c43f-ad8190358b09,3753974067,3995864478288585317
+a950af88-94a1-971f-1220-9f332af36dc8,3207692576,307331505193121593
+807b02d3-59b3-274a-41cd-131d19733042,1663647225,6656636678218662408
+36cde785-a863-7a3f-1a74-ba3dd95879b5,2659876721,5229588983669869067
+f681853c-d844-089c-8f0a-310fd7bd0b16,142186991,10642665641421904814
+ae93c566-653c-7129-10dc-6359036c3139,2204032155,13165059047675735111
+01f244cf-e9d6-8327-a60e-3f8bc5ae151c,4196840456,696612194251453209
+dc4058fa-d8e0-71b2-ca9a-802f9bf9d0fd,2908834203,5993370521484668584
+00a82ee7-ea42-2082-2537-9dfa34ddd4df,2696680293,11174249594932249230
+c9fbfd79-7b30-fa57-ddd4-876828cefeab,2986895556,17645196141793265681
+5ce6ac01-30cb-a925-3a0e-28867cb87c57,3660650032,7979986110551741653
+750e411f-853b-b307-dfe7-fda8717784dc,3547113590,8102149696011163388
+3bb45505-4051-0428-252c-fb9f8b8a4eb5,1536365888,10661976948997394057
+de8e2026-4fd2-72ac-7cc6-19867c3b1c29,3186478838,7810892075715458571
+e4c1ca15-11a6-e0d5-d35e-6cc5ec2e39d5,2823229624,8952660888518841954
+f0a9d218-8ee4-4948-dc63-c0ab016af783,1774928384,9927682727148521442
+a5d6dc5e-24ab-4226-9fe4-b4445c8c64d0,1614141721,10724451376780267107
+57296ad1-0220-a360-6e74-3ef2fe22b88a,681413577,12332117850275946952
+a09f68c1-b6cd-7e80-4c14-2f2906a97f69,2952691987,3160965723439581529
+a00d4106-f77f-a153-5293-c3a46318361a,163146578,9655719943101517512
+b9da5590-9c98-f5fc-959b-0ab4cd6d2b16,1062833341,8497252311142094296
+d8fff019-cf91-bfb2-8548-a62218ccd189,3807411688,8795655715243571937
+d2b23f89-b7a8-f4a3-f4f0-9369e0009b4b,592698765,1285787500501734936
+81511167-a6bf-be5e-17ab-436cb0aef97e,4031305929,16693557985694003544
+52e47141-4cf8-49a1-cd0d-e8b2782ea889,55835856,889011470313737439
+8aa265e9-3dbe-3ba6-2866-e05515d2b2dc,2781542111,14831061856538546131
+fd29548e-3f3e-bfbe-6c5a-b13d5858dd2d,574746481,16760709125152889960
+1fe72573-ebb9-b47a-aaa0-9945d9d3357d,2670744604,16135389603898961781
+943e81f2-b58b-8334-ae42-90e69079c5a1,216071670,555666414840540216
+469edeaf-b31a-3124-1317-5fbe3f8e4543,1335039088,9639695273681735900
+aa05a887-c8b8-e0d4-dfcc-63d0c0df2ab5,963441688,18227409209311112019
+24d4005a-3118-0135-b9cc-dd1244290b66,586114455,18094436332538361923
+bf3f135b-e4c7-734f-6eb4-63fa7a18e306,2751560856,10961583903055859892
+207c1b82-07db-45b0-3086-d67fd04d7250,2876649143,12404860148042990771
+465115b1-d95e-4995-fc18-6f0bb53b9799,512746022,9004935270776373538
+8d814357-2078-a0e4-a790-8cbbc2c35d81,1946437767,16937050533953936752
+aa2b6d3e-7ef9-4ccc-ba6a-7fac16c0e193,2506191551,2937710467404016801
+e50d9634-13e9-678f-d0fa-560ae2d3b723,347257719,17361545553618690849
+a28519a4-1d3b-2403-bffb-054a3e985dd4,3052544563,5351202017101159236
+d596ab9e-5645-0b09-eb9d-706a606482fc,1461891893,15319862215953558258
+a3a76e6b-8ebe-1d20-a314-4bc00b0ea493,2388113094,9609629796032889036
+9d4555a0-dfd5-57b1-42fb-a3f3acc79b06,981664505,13924791768898374771
+a2d5802b-1c2e-7e41-6bbd-fed747ef853b,2759392685,8344272491816924625
+d3274db3-17b7-7988-34a5-c179bb5e98ad,1779204912,3354757799548176837
+f0a41a79-08b0-6064-c4fd-d80ac3e5e60d,3686831879,13671596486579235677
+17ad6597-fde2-bce6-a519-d6780d4d3397,125941900,5055708400079138248
+c8f61c6a-2664-5788-f40f-16b69aa4c4ff,1064738681,3001322375903718272
+f90d9e2c-56f6-5c9d-2b44-38c3b02431e5,1220747321,13377734401605054141
+e952fde6-7552-6810-cc49-9d699f8408f3,3180820170,7993455022778483679
+2f68b349-0cf8-9e08-ddd6-7374db8b5514,464820970,4056001449806197559
+f0b45b7b-9ecd-6f6a-2679-ee0d4accf514,1497566666,5307054117221962032
+912d77fe-8e00-9a56-b360-9be9f2e4eb69,1607199014,15620650377945518985
+2ae6527c-f21e-6a1c-d8a0-3d723323bd26,1774118860,2772229272815855341
+ff052df1-74d0-3857-f825-4af1e175cac3,2761956223,16210730476456910438
+d3e5f3be-ae25-380a-464d-6b58d03aea34,1930613750,15665644856999542680
+5dc5fe9b-368d-ba6d-460c-f8b5ffea5329,1240195035,8011123075213504418
+1ff68476-3d14-2ac6-4862-a491d115c8a9,2093201097,7907755617391053958
+1e48364b-a2ee-1cb0-d544-0a9caa19b882,1731579792,3891331060917350333
+953a296f-45d3-2cfa-e2e8-591147b5df20,2625268873,15178762911081745937
+dbf82516-4918-1adb-8fc4-fa98c4d00e83,765540950,15503321827151175767
+e5525d2f-4733-2123-859c-125880946fa8,5320768,15201568435275415086
+5bbadaa4-8186-d29e-3292-658e0cf09bc1,2342442505,2453101238960126843
+95a3cf53-f702-5037-94c7-8a42b4b8c173,387658126,3144189105971354967
+fed10b8a-6d24-55b4-a8f5-b9cd11d25fce,1996752014,8132306324776548843
+c5dfba18-e1d5-2a73-187a-70891b5d02c6,3039058817,7269703652486240396
+efa545a7-b241-73c6-0110-ace7ee4a353d,4212003516,14862629449212671240
+9311310c-0b69-e962-8504-28b68419e369,3462856669,566013356178606242
+ea164024-e805-35c2-0dbf-27fd54d37ba9,4257629586,13033587607746379603
+34bbaaad-5c85-ffff-b540-4f91266e0fc1,1697976166,14545143282267387006
+d06afc4b-c2e2-515c-9010-94581312a561,1786297902,12087240876969880052
+4ec904e4-dea6-b2d8-dc99-ba669b5e0bdf,89866876,6010854659506715975
+78a16b29-c114-466b-2fa0-23cae688d763,3269841515,6045958339314239436
+2d735da1-e3ac-c213-3de5-51d776be867a,3140491247,17931366569360341026
+ce7ae454-3272-d988-b1f7-3cbe53c45008,902298527,14536256976877891617
+112945af-5876-cfcf-221c-6355a108b735,1571702642,13579977936848879646
+7a1a08b1-2a78-aeea-1758-26b786e21fd9,3326271095,9315813793965087205
+520c334e-d0d0-3060-513b-f7ab4a8a14c2,3724403706,10703980900144362599
+0197709a-8e55-c0f5-41c6-df5ea70c7e75,2904133297,10732592110676683749
+71e5ea81-4247-9764-c9f2-1377f5b43510,266504292,12085828526992217452
+a025c88b-cc26-1905-0609-ae4c4b0221eb,3393225162,15925669422000640872
+2599f2a5-4792-d366-3787-c88adf057293,1265019432,8037622841942995494
+f58b539c-9b89-15d1-0531-9df723497f00,903673295,16460577630623582222
+ba6c32b4-5922-922c-2c9e-ab7fb3454cd3,3634803677,6555785910962062838
+aa95b02f-c17c-d75b-7048-69ddf4fce7ba,2732959573,6281139585724214342
+cc7f4c3b-dd6d-248c-f3aa-392b69cca52c,993942809,3343943930702374135
+ebd158ab-ac33-cc98-8a33-02eed042636e,987063926,8669037595358968951
+5bc8b6bc-9c3b-fe0f-c545-b76d5bfbd0f8,143867116,13635263728587765064
+40d99af7-bd1c-460b-3c93-406a920438d0,574835211,13281341328421729585
+57479306-6c5f-c832-6c65-c658a323f7f7,2184964569,1850476238661254729
+6da2662a-fd74-f39d-8217-c00823b2b58b,472533097,12359597711008374843
+ebfa590a-c93a-adaf-bbfe-220db9513cac,1075139551,4095310749024856167
+ea742e4a-a578-2244-eba0-c8941360a8e9,2806794873,10857825354017734386
+cc698544-31b8-5bcb-42c6-470ff9da9164,617535310,14492383004362408663
+f40ffed3-e8f0-fd60-5082-610d5b80a54c,570035269,16846384289823285446
+b0b3e0d0-9529-aed0-c537-a65003736903,3555510090,15771055713109810542
+8922b0ad-06df-443d-5ca4-f3f2c2bce10f,1790716169,5693467577420725817
+a1f58020-5c60-3269-1b7e-ceb728550475,2759041985,16479009552353088285
+eb88f5cb-4873-e664-0aec-dd18c23840aa,1224647009,12293710577440742093
+dbb49c4c-6587-ccf3-69fa-9b09d4e89a67,33480472,6148685817764186762
+6234e1bc-8c6f-fe79-6643-fede319dbebb,4175610685,2905704993125084777
+af931f03-e37d-d914-98b5-622da638dc22,742953952,18133469796091516811
+df88f431-d25b-a189-a5ce-a817ee25d3a5,804480997,8927600125708526083
+af3f9f3f-c04c-f517-cff7-f6eb3268b069,3613420019,11963458423422615676
+ed32be7a-a9da-8361-ecee-b0e67044aa04,183302170,10390843455048567944
+58bcebed-250a-0b73-98e8-b0a58cc968d4,4189151207,5636505284854110654
+8b912b73-bdf6-a195-66d9-7df4b4f32ea7,4231574362,4470276735593715937
+1c240e52-1e3c-c59c-a080-d3bf2b49b63c,453782836,15803067548404803801
+37055992-7628-7e2e-50ed-000b62617a4e,2312853246,12514348036250957198
+be21dde8-d9c0-d0fd-0c57-800eaeb61362,2475450117,14578787071113095082
+7b28a533-64cb-9089-5417-26d4eb64996a,1791115070,6456166908607417186
+a060d441-d850-9bfd-b889-d166181de8ba,3091380324,8371939167175107212
+f84f39f2-dceb-5e06-3968-8c56bd865fd1,239284847,12279334855797707705
+127c3267-8565-e969-3f0a-69ac79f1f94f,3731927726,3137435827666338368
+1d032d44-acfa-6990-a680-a8102bc9a743,3708464204,17016502246970383452
+7f543e0e-3699-3667-2d2c-09b71a2fa481,4043518303,16574508992665388605
+da3285ac-a55b-af0f-d83c-0e320e5e64ed,2485644953,12520629793262706897
+0d0c75b0-076a-118e-3c8f-0e444e8c9a08,1788578673,2498596489108988738
+c0031ed6-4093-fc3d-5e35-b73ac3c4ecaa,2492007219,11144440766476500034
+3feb0dfa-9aa7-a42b-1db9-7ab48be455b6,4011495253,3622010847424723653
+19b27e4d-2098-292b-ed2b-1dec117050e0,4129264558,2504927846103508378
+0f3ad000-1b2d-e8ec-f43b-fa2523d63e0b,3247600171,12544546178332065923
+809c19c9-50ae-cc8d-9757-4c7323af8488,40973258,644348496079543788
+d4eaea98-8ce8-b237-6e52-c732233404a2,3753925008,11892245203842589970
+3d91649b-4946-651f-a88a-aa7bd2f3e070,125440387,11787474339240907179
+fff18b0d-3718-e853-a897-239417ff93bb,910112916,14369914279870652358
+eeff94d6-d332-312a-0c48-a404c774860c,3723008054,13314292381388841710
+2fd3069d-357c-3741-06b2-f0b7b54996cf,3823999483,4541830387945576698
+6883ac27-5fd9-5c35-aa0c-4c5e11261de9,1632708418,3863696618479962129
+76a87423-c746-c7db-e739-080ee0329d92,3780270638,5786962370722833407
+f7371ca4-caa9-dc08-094b-94f1477b7aaf,3093860512,12706565049209631374
+e425f92a-ada6-b455-7713-27a8f826179c,1330678467,12089546793007522045
+41a84bf0-9561-b949-e129-033ec5ee632e,2049245495,8583906120040671909
+1c240829-b95c-c0f6-f433-ae7e9c104c14,3219323607,11552545149417999285
+94f50d84-1ebd-58db-9d79-4b81d9c43012,1786429052,18324030483517469405
+e08f97d0-ef0d-647f-6adb-f1166791f16d,4083357417,16367510683727274075
+c21e3ef6-3046-819d-c7eb-0d4c9cf25c9f,1783641780,2873005772314018595
+d640f0aa-72c4-dc12-2c22-d27b2cd62dfe,1980810688,12323334997949954334
+da215184-190a-3b0f-b580-8c94aee28c45,302850940,6657897697078457138
+a2ef991c-1e12-c91d-2b32-914a66c5cc8e,2104842617,18399488794247666160
+1b1282f5-e33e-eabd-9758-08d8bf3fc13d,2576637789,10406686672463869826
+2ad82ab8-697c-f231-f0ca-746cb72f4f95,3766694061,16072651674760315984
+2c214d2e-c8ea-0a5a-fa3b-8f8df37f768a,1358943930,13363483926587145622
+6f977b47-4286-5719-7b5a-89a6f0112eb9,340812767,17991032814961993046
+5b8b53d7-92a4-a5a4-461b-ee2d54b03f67,1747765282,17372539553075147323
+cc4d64b4-897a-b5cb-9e59-7dd1c3c3da9b,2040049374,17478652416119663279
+2731e44a-95ad-4ba5-3dbf-727b66da089b,515587274,10912367857453266784
+9afaa2db-1976-4bee-c98f-8ca15895da37,2074300467,17262373993435851918
+253d1464-ab38-ba17-8168-c3cc34e310e9,115001867,1754253705414288927
+8a178788-32be-17f8-493f-e5b318721b54,368807028,12923191479142890832
+12df2035-00a6-6cd2-dc25-0eb78285fe06,4116542625,6530933711930297778
+eeb2ff6b-cee4-b547-716b-c63bc23a41d9,36710485,5619116000582107250
+123fd363-3d9b-0df1-3f20-b8cc9979dceb,2353218905,16883632521194517906
+1d5c3d40-7290-7505-58d2-44a4db552c22,442129936,5395025321540478470
+d6a046da-bc42-9331-04d8-f9e137a7c975,559507765,2264855826745502232
+c37a6770-181c-eb66-51c7-1a1569233f35,216872398,1327769181092315978
+33c62714-f023-a964-5946-b3c83cdd4a40,2952540856,3450148734840066835
+60e2f13d-dfb0-e11f-c852-8179c0ba44f7,821210545,12206123076859702168
+93787ffe-06f6-0241-f1b5-51bcc4c31951,2194155063,12166277774753354531
+f67d0a83-f09a-018d-b4c2-c7a85a4fc835,2275811803,3834792246585111044
+daf2b16d-ab85-a76c-5ae9-28f7410f244e,1372764575,18136265939827248331
+bd456d6f-7844-b993-14dc-b95d7e942ef2,2147535717,14077105970884749270
+b00e72d0-1654-5796-1bf9-0ae166bc3b79,2565404732,5430133106387183841
+926d90cd-dfbb-ae37-18cf-7fb0d0e8d7ea,2864559370,17710014929238934611
+710aa833-d9e2-0ff5-ea05-cfe57f2a500c,3414783124,10673339833269394077
+6cc694f2-b8d2-c503-0601-a0739284e9f8,498723311,15880986927762442713
+0f3b37b1-1e51-8c3a-9cca-4a4c55c138f2,1760777862,13260460627165541196
+57377b3e-fc6c-dcaf-cc38-d3829c32fd87,1481496574,9592745185022511225
+499cbda0-189d-604c-8bfc-9cf178a27c30,1869578800,16448821843127487441
+cea59489-a04a-0a1d-146c-1dafad9fbbfb,225125753,4557081607023325361
+2283f604-f1be-2ca6-8de6-b05f22d77dd2,3497903744,9362271605867168747
+5f5f482f-cc4d-6abf-cc3f-ce00131782d0,3056333797,16128788551369428073
+aebeb3f0-fb29-b039-c558-1b67e4db1b2f,1679125691,3728043881453371587
+ed40640e-230d-1ce6-0004-fe1d591ee69c,1687138474,16100496200907642425
+689663d6-b93c-bc0f-463f-d08fc5a2e368,1639976908,9101635177440048906
+9dcc1e5d-df55-bef9-f1ae-867e93256ce8,2410879469,15797527819245304345
+ec0cc47b-2810-a94a-ab2f-0fd39262fb83,2333370304,16863922383413530501
+f86e8532-e001-92e7-9914-4b2c3004d55b,2976378721,13150648607213985126
+88580695-a059-e865-307d-1f18b4b99d2e,2396934983,17977775753157721014
+6cfe43ec-6d73-750f-0c5a-5e9263c94e24,3170052582,721027617123459859
+418f8df5-00ee-005e-3fb0-a2b5b7ef2a29,3746109565,5521986170441311003
+33ec2ba4-27ae-852c-948f-d07e0214c4bb,1657645810,13259783828505606381
+4e7632e6-699d-e859-bedb-904795c0449c,2413457729,7668881508539476098
+f4e00b97-4367-85af-d69a-8d4c4446de8b,1314558543,5298861943287346376
+a3f04095-2267-e4c0-19cc-07cb3cb0cabb,2234126155,12183928101564567843
+3e7a385a-59fd-cb0a-9986-f18370581e18,1373825746,13125935528537494455
+88a61f75-2679-3174-26fe-3b67897013b0,1357547213,929575055131710311
+4f14ce0f-33a5-e8e3-e524-ab579bb4580b,3099527089,9049088700404394738
+161cd6bb-0bf8-4b15-b4f2-430cc42688d5,2854313863,3211357783513435083
+ab3c1dbb-da74-260b-3f4c-835ef9a186e6,1151037242,9313065809873856337
+f48fd966-de0a-4d1c-4967-c941ea09559a,1231889881,8106561666136482313
+70200e5d-a441-1b24-31ff-11b921c7389f,3876762081,13599203423603559267
+a22516a5-8d99-cc1d-8d6c-a492641099c7,2918092187,16337158371199031054
+18608853-692e-5be4-c5a9-ce735be44f09,2123696421,7102557398654770639
+5051d324-334f-c426-4c03-c9dc88f013c3,257617024,7896118585922176570
+2e99d5b0-644f-5441-fe35-d18c11c6b8cf,2667811079,10920233243649436295
+0ff8198d-002a-a7d2-4e1a-44c272a793ec,210246665,864196890516772111
+e9ba00d6-669b-f1bc-3b3b-8ab345433fb5,1545712274,4026119687281574597
+56d0d8a0-08ab-d8cd-41e0-14a3194ad2ba,1804420909,6584079370995793909
+f88fd5a3-3496-6045-6318-a1eb3785f6da,571865304,17129842411360418203
+b93b80d2-2bf9-aeb3-ab82-6f20f7862f4d,252181171,6339662850278633559
+a1f36db5-724f-7b1c-38f5-68ec42011767,3361500916,7567370045772428436
+bf21405e-cb8b-c13c-5a5a-7ee56f0ffd74,1199101322,8630974564801443849
+0d6a63e2-ef28-6ed8-7a3c-2c6929f48ddb,4059691221,11343021343647694079
+f55f7f5e-3513-3c4b-cab1-a18ebd0158cc,3109690295,7555464946997968978
+63964f25-dc04-7c65-b950-69b4b8856209,4225125123,3426764380620605885
+d737ec7e-ba20-e56f-95eb-1d0d2380de2f,3514600785,2400709145433613961
+213ea487-658a-0882-8337-f0d91817e03d,3639266796,3190324521268193572
+73532306-40fb-8771-fd12-69ceed332e7c,400788516,12875818969510732643
+fa67e2c2-f10a-5da1-c1ba-6d22b3b6a88e,2472342307,14636150603316886987
+02f7868b-96bf-f675-595a-a9ed0fdebc3b,2287085905,9956016776878387064
+2161af84-2388-d79b-713e-27aaf686e073,815737814,14931522177893342959
+fb9afd1a-7997-ced3-689d-11f605913122,2193098103,11053867627634731701
+034d3b7d-60b1-9bc2-7c8f-db49a877c420,470148513,12400638164339565012
+7c8412dc-7d23-f59b-34d2-136052adf3de,3093652121,13837113336003745988
+ffc8d489-93cc-af79-37c4-a10cc7fd6b96,964673253,11932156648878084888
+20735c2e-20bb-7d27-979a-8da921b21768,635109347,7497223618725955712
+99ab0d1a-d564-2c3e-2e0e-bcb43298f358,1743115447,15815251881224880688
+54bd16ae-eeef-45f2-dd8a-b1f427f0ff43,1196608837,3349752799306280188
+2afe15af-0a6b-74d9-85e1-819a4c3cff35,800792136,10948584312176397161
+00ea91d8-cba2-a03a-a92f-94964ea5750a,125481178,13528772356360206038
+54a47ac5-931c-16b7-57a2-168cc26cfd92,1342088575,4092882376400724683
+e3404ae6-1caa-d892-db27-6f64635b766a,3199475349,3598478685617281498
+fdec66b9-d2e5-9904-6882-9ee6350ec739,146126922,9509161888293988150
+fd799d82-1361-262d-e5ac-1e775864f49f,3026434998,2218018309910434203
+3eb7bca5-aafb-f493-ad2b-aed803685e0d,3219034330,2803717398556794049
+6e8dd1a5-34f2-72e5-511f-02dd91e319da,1373809821,14929289690082760663
+da98d191-be96-c44d-69b8-4cc463513e03,2629068935,5420479730284267013
+df4b6162-cad4-7a51-ed14-a38953bad05e,2931415890,6776417916720368259
+27b05bbc-d6c0-4b2d-1742-eac339057def,3859751581,6549187719248117253
+a3784bf7-b964-9863-4fa0-5dce08c3a269,72679391,10701135826433595845
+3211b407-be6d-09d7-b7f2-fbce1a6c6c3c,1127731215,2032716062149144642
+91f19577-72ac-a2e5-2298-cfb5f6456eb3,4025577747,8111051932593385495
+4118f904-3f77-b17c-5941-4316581570fa,3847410672,11592539880411704163
+1365baa0-f194-fc9b-60ef-89d6ee700b16,2062110742,14702116575716239973
+a4d6834e-e7ae-16b0-76ec-812bc435857f,3492781290,12677600378134029061
+60297545-6b4a-6b05-9e75-5718ac8984ca,3063595367,17178163249182933749
+076838cc-8129-577c-5382-1cfeafbaa64b,871762250,15493600625578014020
+8bd014a4-c3cf-6b74-6b3a-d0b3b7f391e6,3160482356,4497622678519557766
+b04bbfd9-4c97-b3fd-64e7-75c0c168ae63,2125501486,5792386592809042130
+3317bb6c-c214-e0ab-df68-92ddef7cbcdf,3362967389,6230728658331576215
+ca933695-9cb1-c3ce-428f-656d1da1f07b,3185108654,2784863176667188599
+191fd04b-7d02-8ed7-85f3-ae48c5bd36e8,1080893803,17634400399092089550
+7f139f8f-bba8-6a81-4680-df93c103a355,1215205128,12767094872639291182
+0838a436-143b-f0ef-7d55-b8b7f7287f33,949593460,8368404406137394605
+327f76a5-45a2-e783-021f-4fbf9a3884bb,2078306725,2744470657899466811
+a21c72d2-501a-49ba-64a4-5711d06d57d3,3182245066,3388110635189741480
+419fa6da-3f74-7fb1-9a6f-ef3c81519bbf,123479992,4451382589080209117
+c8dd06fd-39b3-0ff6-feef-9dc45866fe94,510432636,15396808990142949499
+9692edb9-1a2a-1639-c200-ced250fe8675,3615947973,9286297679055342950
+4b087f01-d86d-4ddf-699f-c2f658321375,2311844261,10898053091955834556
+42eb1642-ff21-735a-7629-6f9537be3832,4254037487,369672454928272190
+55e18b31-2d22-c4ab-0595-43ddd3f53c90,2501895252,8749343673989722930
+58b538da-641b-c08c-dbfe-605e42d25664,4047472547,14996737598443563499
+dfc18b6b-c16a-2cf2-f390-c6d2008913c8,2836352840,3080897080259952758
+d39f2231-b619-b26f-6212-22d1c47274cb,1948718189,17680900593033726415
+446e23a6-0c57-62e5-fad3-d4da3a2e7ba0,864695913,183752351745124233
+34747402-8e4e-e6ac-4219-1f0d2f21daf6,4271671225,16109830916379039995
+003e3230-cd47-cb21-6f89-0fbf818cc126,239335791,14642376965567444660
+d80ba71c-fa5c-e797-a553-bb7dc566e6c0,15145917,5920453316799950220
+fa9e39c3-2ba6-0a0a-efe6-e3855278b192,2767275467,10610993302661061566
+4786c691-e57f-60fc-69a8-cce037950e43,1514023198,9589895894873783552
+12e1ca8e-b19a-425a-78ff-617d3951a717,570450054,13520046291447368082
+935a2914-90fd-8b07-fefe-c2ffa6ae4d6e,2399543455,6039629623060069061
+b3563189-c7b9-4c66-acbc-3d838a144098,2461893914,7215429897207212121
+a7b13767-3fcc-22d8-9bea-ba201ea1ca53,1555610886,17574527028817947124
+7c446944-2205-9e0f-a515-37081e6a7bd3,43961423,11181093380703649898
+80254c44-821c-0005-43a9-ad10918a9c52,2513495635,3725576060499389519
+eb272424-7b6c-583d-7d16-043592d3e74f,4198506431,1770185615377452273
+0896095b-bc12-a0ef-690b-eecaf9eef51c,2708520924,13032056754744178746
+cbf338c9-4406-8421-b258-227bde1d007b,304840096,12702429227653598673
+686b61a4-c5ba-cef7-dbbf-48e0f77f7ed1,2189578025,4761763379515128103
+1ac4a063-40fc-6c8a-a877-302674931d8c,3434653503,906641330516539729
+944f03dd-7256-2ca4-22fb-9b584d777ea3,2192143408,9328161350122448050
+52c5bae2-d50a-7e8d-0b50-d1368656b8e6,727825400,2691687240961210589
+a98f418a-436c-d044-c12e-beed0d4ed637,1929227220,7731507314563207323
+06a2f07f-850c-902d-1737-1552b7705f96,1900924502,11357337527995358457
+771de7a8-68e3-eb3b-c6a9-458c6efb229c,3030171016,13301716033184493119
+4aa690e8-3762-47f8-d681-4df5731a5a94,237675277,2681190037333015428
+55f5d87d-682d-1ad3-290a-dd422d985169,955118682,5839924343734238047
+68795256-7461-f57f-150a-ccd0a3a4882b,2239490670,5552764954740669985
+3fb7d08c-b52b-1d5a-7e7f-79226cd23831,949082448,7526407320972169945
+fdb95436-a978-fc4c-8fd8-393ff29d8eeb,1784957291,12286703198997214150
+12600eef-d756-e6de-f291-d760c048a558,1590748729,15152970048117465438
+5f270729-3fc4-1397-73df-89e64c80f1e8,126830322,3070503100220693298
+e9179cb3-1d93-8514-ea38-93e872afa99f,824169329,17103857759816834397
+41508654-18ee-3dd1-7e58-e987b02a9779,1354945561,16630724623913569181
+f89c2934-f5ca-2d96-029b-7eb87ef7712e,363351660,17362374515920843533
+050f1069-d0bb-7de6-8c56-8e874177a26a,2292337482,7766986433720124982
+c143784c-bf85-50eb-fc69-69b2f0873868,3685985904,12371423670069220685
+f73528b0-571b-cc09-82df-4a430cf1d3f3,3985913595,516695587277399794
+ea4e9e70-e15f-bfcb-2a77-4fd9ab61c096,2372647653,14919685220267329873
+7854a258-cea9-957d-00f3-2bc0f91de3f9,3159548651,1974417086456506615
+0083a104-9337-85ce-ce42-9b10194534eb,552627646,15703897982006008522
+bb48c81a-0f66-3d79-e0e6-4703d1d9af39,726162295,11244814958694311741
+255e3c15-d274-3b26-5723-f114213cb764,3010306159,16351406009646161041
+ee757a5b-55b3-2875-c6f9-71f51fce4455,1708599537,8158906370494999751
+cb4d5ef4-65ba-fb17-4fae-75a9f9fed769,1530114713,15422246403118442779
+1a2e06aa-4a48-0495-8cd6-6f992aafe5c8,3741048104,17938706214067289562
+4ca98902-2e84-971d-978c-992e9e7734da,1197460692,12126546351703590716
+4888b97e-c5e0-d5d2-8658-c92963819f19,2689090832,7897839497795768933
+523e4cba-9049-46e2-3412-1d520f8cb18e,2538324711,5110159912209530127
+849c8c08-79a6-37ca-505e-b7307abdbc49,4086441919,6060725000016725338
+fa80cd0c-fc70-661a-b06f-b5fe29527dce,324658393,8669834513622005137
+71f22753-d35d-e92c-bd73-9e7cf07b295f,3172619513,14386681302700181607
+8083a279-fbd4-20fe-ad5e-3313b827e63d,4065873035,4308274704471332215
+1f7b8689-052d-1ee7-7f91-d9e404aa8b4b,2318255900,3577689907081104965
+370e2650-2816-e597-d396-d18a7882f87b,3811244991,1981680821237528881
+0e4c2e8a-f648-8ebb-dea7-f56cc13c8692,1526532431,7672375933485311147
+dab20149-61ad-b252-68b2-dbe4bde9f5f4,1750327678,8895118899898216315
+16a17592-430e-a6d4-e04e-e64fe124ac83,4282364595,12201599779832875348
+4701a8a2-69e6-67b6-ca55-c6c3639cb7ff,2040153405,1493316678524098794
+9bb375cc-e0f8-e1a4-1888-09ed8928e853,3806075162,3369374302018165127
+08943324-b0b2-d37d-da0d-9c12c1f17501,1056969361,11956038184198581438
+4308630b-d1b2-9af4-5828-d16d2d793de3,3719178200,11966862236042239443
+d6b093c6-639e-45e0-5d5e-ad5f01d4be3b,2513514172,17253619564008784110
+744fff99-c9fd-045c-f3cc-09316b8a3c26,197361441,8614637095047362680
+c8511e6e-5336-555f-5363-ddbd9ce8a608,4161510882,16650380133814767725
+9846fb53-effb-475b-05ab-b20c0503392c,3452109814,17176213016195493945
+7f5accab-f13b-597a-6fdf-5f3cd3ee4b77,416763906,12991899932639094364
+3b28371b-98dc-e190-4f33-39209b379bfd,2387428311,9353970313266866131
+b5693ef5-8a61-039b-9fa6-5a53163f007a,1830356330,405663194566617638
+8411b633-f7cc-37e7-510f-2477247d8f8f,3416994461,10705614634690416469
+c911bced-97cd-3e0f-782c-3efc0f04c775,3769621250,11830936778209688809
+849aafe7-ee94-2a6e-f753-f70176a94eff,1278700984,5640860193506538572
+212b1c9d-c1f4-56b2-389a-d53b3a5adcd0,867028894,2572973801966570813
+9009ceda-8d6f-1643-3d8c-e0f20105a1ae,4139768530,13817971712427408512
+0ebb4584-d94f-6f86-f480-78ac23f03a02,4017671308,16507153801091913120
+290d44bc-63f0-8517-1233-ddba6fe29dad,268981269,3765032572919746453
+8749aa4f-8c7e-db77-6861-5b282f5138e4,3393709328,12370944249743697929
+92287057-0dce-8736-d37a-cb30b9ebde3b,2378079394,9657975077553455167
+99385fa3-cca7-98a8-eb57-2aebeee8352b,2179472059,10462350010431937219
+c5fbcb52-4c6f-19af-0fb9-835da1123c30,234582811,12815615907890615450
+28d4a155-a03d-6392-ae39-dfa4b7bf50ed,2628161778,11598627782147654672
+c800f79f-d162-1f40-d8dd-9628352f24bf,312984137,10902535870411783751
+d7b3dbb7-dbdf-3bb3-aced-e72a4e6a8945,1428970811,4887254193403836577
+28dd3699-c050-e7fd-b466-177bb2ec9b7e,432057921,9230757854111377620
+e2d5bc8f-54a5-294c-cc39-82f6be7c7b04,1661267464,14894131613703061129
+d50293c1-fbe3-46b0-37d9-20135f8b943c,1277995725,14193479503129663606
+c4380d80-a793-1a77-0196-eadd5a50810b,2770039415,8729444358753237959
+4a72b509-4acc-d1a4-480d-a5ea6a089a89,3845464221,14853231999789025503
+f16b7ef4-9ac9-2282-81dc-de17ee7eec91,2861897201,12129125081823869399
+8a654467-1c5b-2303-5dfa-c739447bcfff,2055933033,4037671401664650136
+1fbab402-8c77-bb83-3536-97b8dc70c0b5,4123925513,5378208517362481220
+8272a80e-6892-c558-7d14-361d11730531,867543855,14862151426661791302
+aab7142d-c53f-6f68-00b3-6caccb2415c2,1778837092,8189666249406926154
+a4287399-88ab-2424-5244-75e2c3022356,3850949357,4885458493961482224
+34595b64-7474-f499-1da4-6eefe1458c48,2491222371,10100016056217397919
+e0a91806-188e-aff9-4d50-be1157023039,215949334,17656232263883469442
+a45dc7ef-5ddf-fc4f-0bdd-fd35e1e940ac,141173523,5736949016886984874
+e4d383e8-c608-520b-a5d3-82a05863e320,3082750791,17508322851172620104
+cf3cc3ce-f0de-94f6-db0e-4e0e6004289e,225824005,3941620964031363754
+22b2342e-3b1b-77c3-87a0-8197da7de3b2,3467042581,8946651266747294136
+8641399c-b7e9-da62-760c-bb30e2b254c0,2171919848,13636064741817312130
+f5e9a7ca-427d-dc49-0f4b-fff1d11758b4,3373907473,12270802319536648152
+eb0559b1-11e6-192a-1b71-5cc4ed9f5690,1996225182,17132323604568326223
+8bd7b1e1-90a2-5ab3-4c51-146d78fe1f9d,2437226785,1229899353020320442
+edf6b1ac-a576-32f1-f382-05cf1056519a,2043938337,103484207954748720
+16f94b35-b6f8-3361-645c-f3772af8f436,1348995514,11867771661665680319
+c7e3b020-219e-83e5-40be-49714f124f1a,2242709291,7358374849447600478
+ca9bfbdd-6275-42ae-ceb9-0899fa98da0f,3595134070,10533547802155470229
+d40f317e-f383-d4de-800e-ca63f7a5d767,3670866296,8930397153670248798
+35cf0a40-5830-70a8-2342-0f0c50605f82,2000885706,76523790659363460
+acd957f9-d24a-af34-d415-17b98a02e8cd,4198528925,2780162215823360995
+d37bcf20-5a98-c3dd-667f-69dfced8bb6a,2311184354,12900569269726753416
+89b7b040-fd7e-78c8-2563-1e78307e641d,3746842868,16307182661041245801
+42d191a6-5e7e-e79c-f9d0-336939e99246,276739898,15890147918998770718
+b83f3907-3238-aef3-e7de-2b65b22095fe,715441603,8754588891246834487
+47c6116e-a087-97cd-aa9b-e93a9fa657ec,837775262,17327146783959519743
+2050e6f9-c7b5-4798-a854-a5275b9fb003,3915772726,12141038206376475892
+7c1d7d97-3675-5f85-61f6-035c03950f26,3904158467,6054035559638250683
+76ff271b-2814-09c1-a82e-4a1222179354,1095013863,11617131753361168754
+7fce44cd-b152-e915-05eb-6d9e5437509c,4147236114,14922742169457685604
+2136763f-dbdc-3bd1-307f-f4459e3ffbf7,2800429095,2325151440798771438
+1e7e7a07-bd84-a49c-cb61-69804cbee137,1449076107,6152368723287569550
+06384131-ff0d-2894-f405-6435195e1b92,1912278631,4283794076203954419
+e6be01d5-721f-2dd2-677e-4a3cb899711a,1972607788,1996106903980425634
+0d4afc26-7c63-a0f0-ab9f-c27ad82dc382,449911246,621174128854785851
+15f66fa1-f5b2-0ee8-a103-ab8f0726053b,2054225262,9384942068313670417
+5da3e125-29c7-3eb2-bf7f-fd82607e36fb,4003292239,15582300705086008800
+8d49e404-d531-b182-422d-ffdd0a0fd766,2187462335,17685331137979305210
+941a7490-b3fd-7c6d-136d-c5b49518d3d9,1081575911,3127862837190313474
+2fe9a223-d96b-e746-2786-6ec3da997bbc,3266246523,7887198625653469993
+ff9d284b-7fc4-584b-6307-695ea26b2ac6,202331961,12729801889921056390
+621b44bd-afdf-37c0-60cb-4aa19de8aa4a,1027859751,16495663380872997450
+19440876-cd85-98bb-5439-e2bb996bd7bc,425085294,7018379659214598200
+118dd82c-977f-6fed-f680-e86ca131ed60,1355471775,10924827238000917388
+8e51ec20-8105-2b32-da67-83a07bb52dfb,582613466,7963191198822695019
+78eb4c24-29dc-bd51-d552-4b994dd68928,473207776,17625781700287958346
+a2dcce20-9810-938b-4bde-fcadff820913,1087771013,18211810004678287492
+2b5b9f93-63ee-b55c-17f1-5e72c389f275,3991547759,7607231928459683208
+384f8d50-ac63-ad7e-248e-07ed56351859,3634747255,658573901702526053
+efe2b05f-20f1-c950-4a1d-0a47c37da0a6,2093724362,10326644935042840172
+cb3994f7-88a0-b4a7-4a75-64136d437683,1112969464,17380478418838074532
+6bfcca53-c879-f201-e91c-8eb87106c10d,3494798099,2433559165805083122
+2239fe04-24fe-3e6f-1edc-16c7faf9c8c8,4127646056,15604109288836857026
+d4cc5723-c8eb-29fc-e5e2-15d77b721ebd,3490853725,7170674811348286155
+981da60e-d615-9b6f-a788-892369fc9af9,1477397370,16298889880032659390
+9730505c-29f0-f962-426a-7c052206a16e,2870030925,6221319752974575978
+75327edc-e41b-6293-754c-bdf51d5f3eff,2983698936,10659490575030018551
+ac86a620-66ed-c23c-cf55-b30da7a72b29,603492870,3626238385384241804
+d45a0994-c44b-b2f5-4f92-89e38e2912d5,4062075307,10297833503952378964
+1a0e6865-900c-37f0-b54c-b9f4d2101cf3,798398009,17293301971603383764
+15ffe250-b0dd-f013-a788-7bc0ed0eb24c,3619540009,5862211900760229328
+8d7c6e61-2c39-efea-259f-08f275840ef4,913562674,9187966212550856442
+3ea23b13-c96a-0576-bfc2-62c7c5c5465f,1388382418,802934248358877405
+3892a4f9-5123-0987-ffae-32717ac68479,3194179260,8376133206420355687
+3b6ec759-8867-63a9-1f09-55efa92d4e48,2730091244,6037163086921056202
+ccd3960a-f33e-574d-0f3a-7458b6fc646b,3633325131,15130763468433865328
+18f8d169-6fea-ad39-8419-328f2ce89ef2,2303529080,10476168406807156075
+f9316425-a879-4ce1-e10f-32206be7f435,765788117,2781062311672956396
+0c73a5ec-bbbe-5183-1b88-fadd4e75e618,3499579097,4097298758493065473
+7c162756-d2d7-8304-d81f-56eeb1c600ef,3084882011,3983576828380435985
+03a845aa-570d-5cca-ebf1-519eb9e4f997,3327693927,16465107816216778069
+e06045a4-325e-d867-fcdc-981380200051,3270098965,6856908397485770622
+4ef8dd7b-5fa2-717e-8fd4-d6cb6cc1e6c5,3906836135,13074912198534348262
+49165a10-efb4-fe74-6f81-96b4348c452a,476962687,97007250899396743
+c3c94907-7c5b-9fa4-7c2e-9f49c6155883,2968607642,7657922268135307861
+35e7fb49-4039-1508-d89a-07f6f969503f,3042569922,5358031596909377376
+85c645fc-2d01-4386-e06a-c7deecc03a41,297268658,208819712679913083
+1100b5b6-13a5-3126-7f9a-83b4f3e761e5,3499114451,5631983987990126545
+901a5a50-2e16-9861-2313-66cb7524c276,1098587638,15441457743596060919
+6fda67d8-b4ad-6899-15c7-0ffeb7921eb1,2424134341,11245414473582588383
+3dd82992-ec5d-1e25-ee7f-7d8f4472476b,3533674415,12541940152670800401
+c61aaeeb-644e-ac34-7c5b-65a80b443d62,328610749,5460114720926353948
+f7d51758-eb79-9e12-8c36-8139c72d6c63,660452092,18407967848300523319
+94910874-b503-0332-0598-60015fc34a1d,3570613856,9076209755835450944
+7a195bfe-5e8e-60d0-2eb0-ad2c4ef9cd83,1851853339,18345257375720754470
+28513145-ff1d-869e-a840-c2b4f944eb81,2497053412,10269987358632262187
+6b64a73e-a834-52a1-7325-a95e66db2e60,894570435,11181959086328383056
+5d0318c9-e782-cea3-108c-34b369976394,388792548,12644516652418990610
+3e8433db-79bf-e413-2473-580b8b2c8d45,3742179469,12600635589083294829
+c6d06994-5cf2-78e8-cee9-9058df4d2f93,249641857,17799486460983483141
+805c6a13-7df1-fa09-4eb4-ffa7f4d30dfe,3199359012,16309297717491917355
+2503fd42-d0da-bdfc-0861-e9f438ac1324,1635767026,1796804859298008498
+17e07da5-e7a0-063f-1251-438e553c78eb,1806982123,17597727995554188654
+13b0290b-8658-5a72-0e31-975670bb4f25,4008923056,1099160702046293952
+b0000119-33ca-59c3-599e-fb717a104a21,328083482,3275953031705114662
+e2dc5fb7-6740-1723-cfc8-08ae6f1b313a,2486693514,8412585608282641361
+76bfd00e-0bd3-6cd3-8e97-f82ff13bfd4b,55158822,2112647162307372561
+2613abc0-835e-f083-b242-09c4cf03da64,3338529427,12391666043870228840
+2e365d6b-d689-e580-aca0-718e600f7fe7,1567738777,1956868027157500933
+d2993e7a-c7fc-345c-a01b-7439e6ea41f3,2786973482,16751365793048777594
+af29e15d-fb1b-ab12-c069-ef3dc1b2d934,149887784,1848167070335826932
+f32b5140-49a5-8050-b223-f222b09a42f8,3734660740,1889862029732791686
+76ae3adc-e406-ed4e-5046-dd6de99cbbd0,2799263258,402160283571903276
+25207733-fdb7-15a8-9519-a42912a8d160,3209391718,11413274213324808904
+08751d4e-6573-bef9-e127-37dddc1a6f45,3180675093,744190192854030233
+582d5bb7-3b40-3fe5-d13c-9483efafdb62,2389680554,10669379542434054888
+10b06f0e-45de-e543-4956-41ae0e178cff,723893713,16422948625810264551
+b1917def-358e-d502-a077-9de83807ee3b,362113790,7948631431527751015
+19ba99e4-1557-82c8-8a0c-05afcf65f40a,112407629,1532432528553707398
+7c8becfe-8403-dbd2-a1fb-7103390feca9,59754412,1670536006971975738
+1d924099-f009-f933-528b-cf16d84bbfa6,2530237056,18393575756025498497
+d3a1700a-ef54-395f-a422-282579ce65df,1337694430,15910364501189466733
+85188d8a-812c-1dfd-4a0c-829c5dcfa8db,3592714967,7913766774397973326
+66d33c99-7752-6043-4ac1-5290086b92c1,573697528,5017791681397579902
+847a29b7-a260-060f-1855-0df912ba17c4,3351521946,18410365541273122203
+3c3840c6-db2a-f864-16ae-1958e2757ae3,2612544431,6804605980235381600
+cde5a3fe-6665-c9bf-9739-1bfc35ab90f6,2388280439,7538521324593337009
+b2634eb5-978f-3e8b-6dc1-754ca380a87a,1906472597,8049676344648960847
+8a1ed19a-4a43-3ecb-d1fd-d392caa910dd,3471203626,5575413688662157303
+864fb744-09fd-66d2-7568-b1c20338a651,2743958243,1085259700650788544
+07b0b5b6-9435-d59e-1ba4-7860fb4cc811,3691695250,13894316746401874721
+4e746205-617f-b4fd-9d93-9ffc6538dfd3,3260385671,14151506914567434391
+c6929afd-3eb7-b066-66d4-ce0800857dea,2746391494,6260590471509621388
+e613afe3-ac9c-7b75-c9d6-df45aee1654c,1159332836,8372714513699791572
+5827b9e9-1152-1bd7-2e4c-937da76cfcbc,1019121649,12179064083437299559
+c41d5db9-80f8-85a4-bcf5-761623e29b41,4273845463,17948660902101723385
+84286cf0-49b0-c923-7b86-500dac48dcdc,4114156776,12217387997855593450
+80c856b2-fb2e-3dc2-abf8-7d62cc25c5f2,3753227734,15270351561595717258
+78eb5471-a9af-cb50-21f7-1b5c202272b9,266608485,15413143012837759333
+2f0a096d-5fa0-e175-3961-7c4005593a8d,893950269,10845443392164847217
+e664e4cb-b654-840f-4a83-0c19ab84e197,1499675221,8778953256694391550
+9f304f72-2f9e-f75f-e49c-e7ec1971163a,2012896098,9933604260841994635
+bd818fcd-50af-227f-2539-8f53b5e3645b,1442723883,17911500583160676095
+4b5094c1-5acc-d856-7fc6-ab856755dd67,655490899,8030781652452260218
+ec8a12e8-00aa-b03f-2db3-6b73abe3d860,244963085,15111835653733781922
+3c4d93c7-9c7b-3cad-8875-9155216fc785,249528844,14369796607971798127
+28d47092-2790-1415-4320-d17214b44ee5,3149912819,18283543698334463556
+a338902a-4429-81c7-66ad-d8a40c1cdec9,1748767402,4268844805301061062
+c9349395-17f1-5c52-d842-1fc7bd985ed3,3865287136,2779793983468131321
+c19ac8fe-2f37-5b8e-5c4c-12470c271439,878891150,9648958452408852569
+3aa8d345-9a95-b660-789f-90428c19b0cc,247186684,501975865982994189
+5a8f0ae6-0410-2892-c1c1-4ba8b69f4895,1684677415,5174732846252510978
+55a28628-d3c2-ee43-6cc2-8e16c944e9d9,527844388,7741958112155793140
+3dde1cc9-87f2-09ec-a066-f0e11fcf0dd8,753679523,11256872964544865590
+c3475c1f-9016-bbb9-3a50-8d6f220b44d8,958619913,1596441711753661707
+e509e17e-c6da-1514-1a9b-6094750a4d3a,1925977492,17391281704518883140
+5d2018cb-71d0-7775-d3bf-9846d8bc6ce3,1817049521,8785061400415347039
+ecbfba00-b61c-1aa4-8057-d2955065d939,724220367,1874977375566225041
+b43afffb-5866-d0ee-471e-94fc64f553b7,1531492753,3593803319474686727
+b3e00514-14d4-8cf4-8fd9-16704b71689d,1633345766,8317970841829642309
+33fda96f-03ce-b7c2-c0bc-a3cdddf896ee,3120785001,12516323419187289900
+018133d8-f792-4715-d713-3d467a1ef5a0,2859441372,9445300243939142263
+7cadd61c-172c-0181-3c6a-83bc1b7b816c,3550976889,5782394545548688932
+a7965dab-7c48-67c2-9303-4fdfd7d41b2e,2808262229,4928608946785998489
+1aa0c48b-c82b-731d-6476-fa8bfde24547,1938142634,316763555429429757
+f8d1a968-e389-f719-c32a-11f8683a5f24,3094170208,14121372099365097015
+a627c58f-81e0-eafb-c7b7-c0d5a5a15b1b,3757307673,7106708832911344099
+1d0be0a1-424c-ffb1-4dac-790f2c52ef74,1394876779,5107795062769479760
+75d47dc0-6fed-3e4f-3639-01f92fb46d3d,2124288818,99772928907891540
+1d703f65-2ee7-7a9f-aa5a-9c378b54afbc,190351898,14396129012781477237
+0902c399-1244-a62c-a3a8-d5c641c5f62c,813319267,16784541274930285171
+b99cbc1f-a4b7-e6a2-97a2-b306d0f9b799,2108223259,18339011856560787399
+8d62bfe2-1a67-0ad6-94ea-a1f6aaf4e9c0,192447927,1858679713341274673
+33452f54-df66-5148-14b1-37abceecfc32,3069448029,16859874968228415066
+f2d13a66-a80d-60ef-b3a6-0d6560ba9654,2564058753,10338610488782604968
+8699ce7e-6adc-35bd-2caa-a1a4d4aca260,4082112452,17046182267281230839
+997f2f27-d931-e0fc-a927-443f5d7ad8ce,2212246205,10747148156564684357
+72c1c7d6-f178-c971-0018-99595af7bbff,475147920,2094087912274415251
+fca4d950-141a-2a89-8c49-ab21571071c5,1920737461,13431417911294872930
+7302b09c-6fe5-b174-d90b-2b981106174e,3283654800,3857497682084809484
+5db24b17-d86d-57d5-5e01-a40c8081f874,769707223,11846897686853685421
+e7f2bd43-40e5-a752-856d-8f76392aa882,1773306538,16056692878769612041
+cb1ab345-34a7-6ee6-03a6-3660f051065c,3641321371,3605529541392700231
+d4eaccf6-8d37-0807-b1c2-e701ee044917,2656873115,14128137409987928398
+d93caeaf-1e06-37fb-29b7-0f1d5dab1461,3055646216,15385515884934286067
+3469384e-6dea-25fb-7d7b-5ae6bc7b3156,560414802,12938904655484267478
+7053c5a1-10d1-7d19-1d6e-b24db37e5b0f,1808020473,4973891015489239250
+744ea475-c9d8-9056-eb0a-d133c925b761,2096721139,10291954568828689820
+5921747a-1884-7cbf-6184-bdc52de4d231,2532326066,12151672882693854920
+60b2b1a7-99de-0641-7fd3-1ad3c7225233,3352426806,4696850933466455572
+744a89eb-f77e-703a-21cf-643ca8781d14,2190991195,7436624636022914031
+261d7b19-7cf6-d6cc-93b7-bbba9d15f97d,3993994122,10179770211900162551
+dd03118f-2665-c84a-7ff0-bacfa43e27a1,3832055826,1339051413452232800
+819fb815-98e5-9f64-95f1-09e4eec1e364,2666656961,16997103021628804652
+3a8e3527-eddb-6c26-8faf-ad2b60762bf5,1141244969,8841277709262654902
+9f12e884-83d9-206a-d030-fc761599081e,3032488685,8187272653416401067
+4fa5a4e9-aa22-18c7-4113-3f2d51bfef7f,2051721931,7399736990250072317
+4cd06d0e-d512-b4a6-5b1a-2b8e4ff717c8,1463239702,18369157615493395576
+9d0e9fa0-c732-a7a9-e136-262b00527f2f,4132044209,12550198458705032005
+aad5117b-0e29-8dd3-5e63-14fef2b53ff9,2762528058,6864489259571071882
+9162eadb-5a71-1510-3c29-79f200b30c1c,2577644920,14652207954086820716
+71ed03c3-428b-bf6b-5baf-88bb7680d452,2203913905,6707031100950272908
+3198ced4-460b-7c72-a49e-ae244d1586ed,2093477874,9786783447714628112
+f5907b9c-2c4f-ca54-0748-8b525d7a7f75,2970462840,12408693891709040143
+0608e82c-d7ae-0f14-1097-e4e734c717e6,89168082,2297904788274333812
+12a66646-e3ea-504e-03d5-c9f6f314f34b,2462556257,1555502394593363828
+288546bb-92a9-b50c-7d75-11b8468832ae,1035308855,13758279341442929470
+48cbe1c0-c070-369c-3ea8-7b512d8c365b,1482349125,6740491502413125290
+955309b2-040b-7d62-4b79-0737f48a4290,2385349517,10632293399617978372
+d5f2acac-bbe6-aff0-dec0-436c5cf6eb76,2041026169,9480355772733127865
+747cba29-fc9a-3ec1-4f53-7ebff8633e41,1888407879,8138708123380278123
+36ddf676-b8b8-b9cc-e63b-7dfb5e69d874,131781920,14563457376259629086
+7a44b2b2-0d59-5e1d-ce7d-1b805fb5af6f,1074568617,12869884246664470222
+904cffb0-f258-ea6d-8979-b918cef2179a,868937051,3585227710813024336
+c88831e8-63fd-df2e-84e6-22db90b36dce,3732662498,5866313319376691866
+17186113-f01e-c767-520f-d245533d10c3,2694415396,12776451485092862343
+9f2f3abe-42b1-3096-8728-5632263bd4f2,3708246583,14102711496315143993
+0307acea-5e1e-bb12-c54d-4ee81306785f,3556688096,9092993600757389613
+c542bcf7-caad-6a46-d4b5-f4f498e0ce5f,1803862485,4891418389674657151
+cdc5fb77-e688-1b62-0465-9234308c2db8,1841649288,12866478801582772967
+08c3479b-1ab2-b2fc-9901-9ef0d7831dd5,476567075,17567151245861945256
+024e369a-2f14-53e3-ea38-019152601074,1144277126,13184318329890217105
+6e4bc86a-1db1-04bd-e29f-2def95c893c1,1399128926,7078085338122620574
+071e8803-57e4-09af-c3a0-b5a685de4dee,1041885255,15752126814187155731
+a2393927-e055-059f-ffdb-64842f87751b,220227244,6864981555920008743
+dfae2a23-d64c-dc0c-708d-96666d075b79,2657819715,13371588741821272409
+c5a19560-df49-ea78-fc1f-2c2fe55fdb4f,2424651454,13876231631045740386
+73c1bb6e-40cf-9d9d-79f7-fe3592863cb0,3159016181,12374819952277428218
+aaba2c37-c147-5df1-cab7-3bd8d18df671,3222470901,796552635023536262
+899db04b-3799-34b4-d4bb-cb533ee4d30f,3335440030,6662749326319763334
+ece334d1-d1b5-3418-2872-c73ea5c14b09,469782607,2278797995745952856
+91347cf4-118c-642c-d6e1-4e5b247ce5bc,2389188582,15701107532631942981
+2b983528-6676-a15b-4781-1df59f9c6ba4,4041207403,11482403096560650415
+bdf9719d-b5ee-3f79-3062-cb893bdb0f38,4156672242,5886659501135033026
+ee753c7d-13da-eb40-e0dd-1569f93b1763,2291075734,18136045182398817360
+bcd9f0bf-31d1-6458-5a99-471ea1135883,3898677006,11540027458782605048
+14005a13-963c-c808-d410-b4bd9f3d5959,2826449004,10121707781646739249
+6f23c7bb-db89-412c-689e-83a79f916e81,684174048,4270186338814707377
+7ae8c51d-778f-936e-767e-1594df5afbe2,1907338620,4336197003320038829
+396fdfc6-b4b5-eb85-1aa2-fbe37db598cb,2566047891,12643214102423549566
+edfa3ef6-e347-476f-b1e7-0b6613f81953,1218731182,17062908889784419462
+784ecd2c-3be3-d5ef-d49d-f6f828aff8f1,517896380,996110464212171647
+4abe5004-ec3f-15e5-bd26-d74f27a0beb1,2904862520,13009911738368684976
+11ed8cf7-0341-e487-cbd5-2eb273f3ca8e,1176771606,15895496532439838675
+d2ab1196-d799-0320-1fa8-e83ab9268177,2342358949,14682939895902021645
+cd21e3a9-0c2a-4c8f-b0eb-a633a3806c69,3258080537,9657838209063175763
+df1dce3c-4925-dea2-1e32-e41cd77bf2b4,2986795059,15805406083878710453
+b2e80b22-4d6f-f541-487d-54b88cdef27e,1107662427,5998584930308907703
+90d99a54-0255-503f-6fc1-5d870db891c7,1209327812,7071750681854864976
+09140a7a-e314-6857-f3f7-cbebf59c1d03,2800710994,17780211526815650935
+db71caac-e9c5-eb9c-11f8-4f0261e54651,1003620618,2818194643263322148
+9923e396-7aad-f8fc-e79c-e8e47a403528,3188056721,3218363627159779798
+09c5f826-b354-a90f-722b-73a8a798021f,1041589102,519544494364814091
+14a42b65-358f-cf61-86d8-a445123afd26,3055072000,13402159745366291149
+7c07eabe-89d2-bf34-f8f7-c872f557f15e,3865428343,4041180899819435866
+ae96a020-c604-f8e9-c4ee-cc8e963f39af,633001131,411818577223874385
+e89a9209-737d-b6fd-eb58-7e2354a9d691,593565073,16190702898694482257
+4340d871-150e-b4ed-505a-c827fc1e7a20,1837543871,9477914448833477111
+7e1bc0bd-898b-99eb-c02a-eda3f6c9c528,2875731123,7976906219461617370
+1de45aee-c874-65e5-1fe6-89eb831eb618,165784669,11570001659139504265
+b1b753c9-dbb2-6ca0-8330-e6b5d97424d5,785600526,1984763648509936622
+4d5c4fdb-340a-300c-98dd-9bd81674a569,2831874047,12477104103937685386
+57cb86ea-5410-5dea-2144-fe4014bb5b0c,1403937305,6310773217333954575
+bb5b7268-6e15-a48b-7cb9-54b94a6e54e7,261573168,17396216512996487449
+ee79b193-808a-da3f-02f1-e1cf5f8b0a5d,3343514897,14112670683220994701
+e13e31af-bb27-c084-4e55-2039cb8c9c57,1475261128,4289594863252255574
+f2cbfd71-db7d-5dec-46cd-ace9fb1a9bf2,1354314198,6340979603564570476
+9e37ce08-240f-bdbd-5dcd-5780d4cc8aac,1064693356,10928404366892559514
+b776187b-45af-0320-8d46-2c07137685a8,4093210475,1029180528844345494
+d5c25d05-3d9a-8959-352c-750317b53d70,813833971,275991745601071615
+9e12f7c6-a971-012f-08db-cdf72556b697,2469025698,18372815484900180071
+c4345002-db50-612b-7104-881d17786ea2,2889457809,3566633075737989223
+c81a120a-0cae-36d4-e71a-cb16a92ae394,465941128,5373883964175067028
+df1f7589-5e11-1d75-e6d9-1d75dba63a95,2011104240,1568023226859558151
+1e894e2c-9f40-84f4-ece2-d05fa0e2140b,983571282,10296298637052591023
+4f0b760c-01ea-3443-a358-cb716b24bbfb,1455689347,7473544263277616923
+96132c0d-773c-44ca-ec59-4aa8795c9f87,3661785823,13219266807330536363
+ffb66794-7876-ff66-06e6-dea8d051f6ae,2437430778,14018360192080908757
+61fc1317-9192-e316-ba21-cf5cf549fd17,1393455403,3459959535934405290
+d2270e5e-da22-af0a-c854-3d24dd72aa12,2536416945,8490029936414878549
+416f6681-6230-7b6e-7fe5-daf75fc0bb14,3551943273,9305096571626914837
+8fa222c5-9e8c-b2db-a93b-b26556a2bfa6,3672853809,8216287175772985702
+26debf7f-31a4-0f26-904e-b6def1748a81,2279630314,10947946341200658015
+9af0b75a-5d4e-88b7-8783-acb148ba135d,656403878,6905231463125675646
+ff616fea-17d8-7641-7f67-d19da7023b81,2154540175,11568712486764596167
+4c335bb1-cf91-af27-b4b1-7d4f7d0f3291,1747566490,16850341858388298126
+4a5f3b11-d151-f576-80b0-943811efe83b,372482649,17215431175005887771
+d20c3ed0-7c28-4251-19b3-ea3b6e88db09,397354907,14402862425616568049
+34eac4f6-a162-275f-d7f9-ab48cb091536,3725343371,6912083705736506862
+ca41efc8-1533-a094-7af5-de1a8683f99e,30605755,3689711211548099947
+61a402ff-76fe-cd51-d839-1b19b1a019aa,3591869065,13629896338021312426
+0cb921ec-0950-1fb9-f237-166af2b16769,1401837607,6775184806684398234
+53577f85-e874-da2f-d65e-376a41e688ca,60818714,11369908717271207279
+cfae6adb-823d-86ca-ee37-86f098641926,3667099499,16353889251205352130
+3521c93f-9db3-77b4-b931-4b03fa6e9244,2901695805,2131274793360837398
+a6800f96-5df3-e22b-7a15-6f8f8379a3e1,1063251970,18243142970121883827
+47228081-ef28-3850-f8bb-5f0db9554e9f,83077749,15061828879917591174
+31ea3f8e-67a7-2d32-f1ca-07068adda45e,60938332,2575390023001119317
+8f6cdef9-3484-635b-ab9c-44327ebe4d8a,324988764,11186007854979882725
+88a58680-d56e-209c-b966-004475e042dd,3376829637,580141327412445214
+44e12b59-7472-acc1-3c05-46edad9af198,1296338882,1129058718179855531
+62cf8a32-6db9-d4ae-d296-ecdc07941757,1215861348,15480975375030901197
+1b36dd24-efa2-44da-009c-b68be2085d1b,3961949753,14276226744502787014
+70e22125-fb42-d425-2dee-4bbe21791fd6,934528499,8549664724291172545
+d4b5d96f-4f29-02ef-c54b-71b4649faff2,1750095392,14572559554718995197
+f1a7242e-9461-48f7-a5f2-dca6bdc4372d,3536463947,16105641577283512504
+92a73168-d04e-4937-2217-13ef88b7b0ed,263110832,5151536335007728019
+88caa51a-fbe6-03cc-c8b6-2473fdd0915a,1243502299,10011810152065285099
+a93c51f4-8285-0b87-b9fb-18a828bbd3ac,1647781104,12922349179450094328
+7507a5b9-b75b-d6f8-b7d9-87681d5a51ce,2392590176,14994333009990565294
+5bb96b35-d087-ef23-aedc-bb3905eeab7b,2382604300,13290213895580955711
+e4598b7d-67ac-8709-f895-188472a6ce6b,2249890269,6736816834968180042
+d4041b22-122d-3842-0d85-d66097e8e12e,1854452977,18161038329801067437
+e02ae35f-fe7d-3da4-50d6-89793e076c1c,3765377968,1584776095794684291
+af26d9d8-c7d7-8f22-0798-66b96391dfb2,605477712,13022970116012017516
+66c38132-1446-6f1d-cc5e-1896a297a2e7,1198905425,4267762997207240406
+5521152d-ae8a-d900-0071-f3fff620d4b5,110345719,9406798462973594345
+8eac93ff-9697-b482-60cc-e5389d076d0b,641791205,8839211824697584686
+71da3551-a7c6-7589-70f9-68633d4c669f,1183481213,7088612758923013019
+49aa901d-d89b-be85-5a94-ad31316219fd,1070685694,3035441556759391093
+3ca1730a-34d0-0034-f46e-981a81047ad8,4199288776,16340225393130875497
+75aeecd9-ed6b-ab61-bd4c-08497e675988,2463232376,2526209504688407829
+375c52fc-0a78-cb05-32df-777be7511646,2775921591,3379017050072418261
+7a5624a9-0559-ec80-e4ff-5348f6a506af,1860947138,12698873199266311093
+6b6f20c3-075b-6dd3-4669-c30939a294da,1165520702,15570650434931160915
+2963ff73-c659-266b-0e88-a82711f80d45,2640902944,7933405860175862334
+5ebcd465-a5ef-2712-9518-324c4faf64ac,1974001698,7678452449686417902
+97884573-2283-0919-d55b-6ade617073dd,3108721308,2490420531451901252
+faf5532b-7c48-1479-c3e6-4c4aea990194,2225503206,14083252788274869074
+3d168974-f2f3-703d-a384-78ea349756a1,3068966198,8415818543561222104
+63e125ca-48f2-82dc-58fd-f0cbc1c61745,111648517,8241694811311219073
+910159b7-94e4-009e-4406-0adb50edbfc6,3852902470,7537838967679428174
+dca37b6d-22c4-4f25-bddc-b0ee052ae5c0,3530426197,1354957853980618008
+ff580ad6-909c-f58c-c052-5908b6efff52,2479601911,15336284185523196775
+6bfc99b3-a2a5-5a86-238b-03a758b3adb5,1636403775,18317688960497995591
+6efd3dff-8291-21d0-79d1-3607f0b60800,1267186269,14767137427227179354
+db9a44ef-0fdc-a6c7-5f24-5f82c01131c2,1179514375,4514047910129082110
+4ab68aa0-1c77-7a2b-510d-ef345b41a40a,717226361,14833387614271487876
+892807ec-f788-b455-ef7d-deb7869b3b99,3118186275,10698189768006434075
+aeb6a349-06f2-b5a2-4141-9128ab12600e,3018431053,5350666441640862791
+ac4fff7a-ead6-b3ba-15c6-e7359dcf9c8f,1712295649,11153133156272262581
+43ce3f96-f14a-d545-b299-5a0ea881636f,1321742389,1299060663919465840
+7a0a1861-132c-201d-7b3b-a72801f1f7de,1913427613,13085396049206564129
+4baa0c98-c1e1-c166-4fa3-657bd054cf59,2353747853,3226893551105952781
+fddd72cf-1f0f-3091-c226-d60bf02c64ec,3419080446,307911981069049915
+31e931af-2128-ddc3-5b0d-dfa622030d04,2462967759,7588457883358596585
+287616c7-a29d-7612-5f5a-0ff71ad37f24,3631188830,9716864495950461470
+768b81e0-bcf4-8365-1f3a-7461b7262361,3705117457,2003540540771050629
+7b454f7c-f2b5-3a3f-41fb-a4ee482ae31c,447796115,3427412383323253365
+ea4b4950-fb39-9d38-85ac-84158a65bce0,3636259624,15654946400077802067
+e5178eab-1a91-5823-56ce-94b3db14065b,2252106370,564375099830375899
+ecb65fa3-f70d-98cb-6488-8eb3dd79ae61,1827133423,5250375194294535921
+25e00026-d1b9-c6fd-edfb-8cb694174038,2971310785,2929694097992370914
+95ec6ca4-075b-ec83-8116-bff30d340582,4022652589,3295422995479039603
+f0dbcc10-1943-b2f1-0beb-2e8583018f9e,3729441288,17597372972484411636
+17d8ebd6-d675-f38c-1319-848681fb3b6f,318965924,9606595219638005947
+26f05fb0-f7d5-0086-9925-93a64fddc877,721712112,16975000598212858020
+645d371c-2c6e-2ef5-2f8b-3db555dccc6a,3065420953,15306344938095593353
+2002ca42-975c-652d-eda6-8a82b3a764b4,865131183,14565176428276882580
+9a89d39f-b4c0-ca41-4827-b359a69a97b8,1223388180,17838985761363688720
+08c17192-dd88-cace-a0e6-794130c41047,797811620,6430516151341214657
+d047d90a-da23-cd55-1392-ed4f11721e59,2636212977,3780708061583732804
+fcf5d3c5-5833-0eff-bea0-726af2183063,3138637505,12632488621995263450
+b7c8527c-59fe-ee3b-0fab-09c3e7391f3d,278534397,6918089371173061932
+7ebd69eb-371a-4744-4bb6-dccef246f8e9,3062316133,1047177206483094729
+16ca0e76-d60a-15a1-a0dd-2a806edc02a4,3230988037,13820770401764023454
+7fa3a52e-3ab4-370c-c804-2535069f465e,38858378,24862054535374116
+a5955bee-6e40-cd65-3cf8-08d76647aed6,724422833,14587143018824618579
+240ca6b2-a2b9-e838-4936-3c35a218d9dd,3498726676,8543046512144848933
+b3e6252d-c962-3a75-2eb9-deb630400e74,1741852668,17563645932271698242
+ea65f8ba-de21-66d4-814b-a933695c7fa9,1216220496,16042771873144755461
+dea2cd20-7a87-70d6-6625-5592e4b97df8,3285255833,16024658252636383208
+07ffb0bd-4a59-7f24-0fee-99538a862410,4285325308,16531278857870799559
+ac1c34db-05de-7f0a-f3ef-5cb4fb96da15,1840810867,5390252447852553970
+cf742e78-19ca-5d4b-6ef3-b03fc050f88f,3428880932,6324087983129841729
+3242ee05-194c-779a-7d89-a82d1194f573,3673245196,17203339607606817424
+ebb6d5cc-1549-6d0a-3024-6feb65a89477,861443817,1762400038728282294
+ecf4dc0b-91dd-3f7c-8dfe-61530aa81d29,1490997,2928736090215332755
+dc1600ce-80d7-1952-c034-16eae83e58cf,259360311,15041815498778052211
+77a42340-4289-da05-8f4a-e117994d03ba,879437891,14536700052160162695
+d7787327-7582-521d-122b-e8d40c8e8b50,2947140957,7106602475864918656
+59ba1657-5c8b-226e-7e9d-3c74e26b22e6,1596369112,13265468639493052833
+706fe555-1664-2cd8-daac-7379290c5c51,3596357080,3493681891077424135
+8ad4a611-5aab-4e36-27de-040c2c2899ad,3605929185,3680306604998356614
+a63eb94d-edc1-5437-7e7e-1105525c9be6,2505243627,1708911837213474417
+70172df1-a767-595e-20bb-f42a6c15da3c,1352375223,13325633293263872447
+fb9a9249-df2f-df99-2050-bfbaeb1b8e01,2195432293,12641198898545417178
+b5d6dcac-f9b6-2271-80ca-cc523f792046,2691061795,12424290227269167260
+bac9972f-da98-48bb-ed7c-d93e0cc4063e,3711031903,16107421686263600150
+f8a73c48-fbb9-a07d-ab88-3fcab1d181ea,3572745375,10095976479102899249
+d4e01321-79d4-f535-7618-cc35cc75ba77,3343439301,18198452927817721637
+af227646-6cfc-0271-22dc-c1a58ceed6a5,4211403171,7169155054464363137
+0519a6f9-0f5d-7eac-ce4e-f66a666adb58,2493410199,14830177884565322945
+4307e71a-df01-4e54-1b1a-e9ded3112542,3971542459,18173327714105738628
+f6847482-815e-5df6-d560-508f70e8c0d6,1752486271,605512044442770258
+88ab2611-5d83-cdb9-96c8-4ea7776fad09,2339997370,2872250457223053867
+2da7eec6-22d8-64d7-9f32-8c3de89f8750,3449528199,8798387784750516895
+519876b9-b01f-d996-78d3-c5fbc3528589,1271551771,14248992894655588994
+ab992f30-956e-9adb-0bca-84a5915f5476,3008633489,12689562505133354519
+f30c7702-0401-f4e0-4d9c-f8cff31eec17,3665954172,7527830919942305111
+0ccf6c9b-722d-65a2-8e56-16abea6b8a67,2654773185,12661550828310061556
+52813679-a95c-c4c1-0644-d94259e6bed7,4081521839,17852937879057954920
+b2f4ebb8-1f9e-2a24-6b52-304cf13db34a,3455191507,3578684325667717031
+669216cc-ddd5-dc7e-f270-7083880d5792,3028874447,14753694238111468581
+5f0858a3-ef0f-d540-7b54-76618c6cdf9b,944532363,14625601781996739164
+ddc9d075-cad2-7687-1a6a-c0e3b342c960,1734156717,10413468514370226000
+bff9f1c0-3e09-af44-78f2-533493b04851,1484378907,1871738410497069562
+5d68e869-a3e4-7e16-2bab-9a035b2074b8,3476109629,9521498229497012621
+2d283b14-7f13-4f16-5ae2-cb12ddf38e0c,1558328587,4476245044305788831
+489b2899-7efd-ef66-1a38-a539a62a87b7,4133068077,1352589859143324841
+3c3852c1-646c-5e4d-8110-8f289acc049d,3980158961,12948923180072582134
+f1281337-eb02-c797-0679-38576351b8b4,180754318,3315483589103360770
+6fa991e3-aea0-7585-c37e-fd843da6792d,1236075263,9284018450367231025
+dc17c274-3315-eccd-d770-b7ebee99886a,1709730249,12533697716265071561
+236ba13e-99b8-4554-72a9-348569846ed6,2180328713,7736067575024451370
+570caa91-ca45-a2ec-72b3-1e5cf0704548,1991416606,12048098229206349536
+078065e8-171d-4e8e-3d2e-f54f62e808cc,306365962,1948707129378853022
+69eba346-3e1f-d593-e55a-fa4c2b015df6,1459419379,17738352040177958000
+c790fe67-5492-bfdd-1b6b-285ac40b1e34,1531195394,16759051934621228519
+17437853-3eaf-4f3b-fd04-fdba2af09224,3259843265,8204541219659989633
+f310dc1e-3268-bfc7-6f78-2bcfd1d6f86f,244358543,3086374133627810656
+c7a1d4f7-a9a2-138f-ca00-11323953a439,3395663259,13742908776856538433
+69ccb811-b99b-b3c9-9ede-b64f996a39e9,3898139977,5071982337258168003
+14b573b9-76c4-a790-e949-5ad86782607d,3223754735,15411207848849465704
+49e839f2-5622-3b3d-aed5-667837ee438c,4083261372,16570200635950383385
+38acdaa2-809c-5ca2-26c0-9448be917922,3568024480,8325710446454845705
+f4cd5467-cd71-b1bf-c5d0-7b9ba6d78ab1,2999666706,15519254977998479414
+6be0d2a1-245f-3866-59a1-eaca57c3d21f,1327448340,3529805247128175900
+11a13d8c-b5d0-164d-5035-d7594f590dd1,2845712093,11773926160515256472
+ed5e923c-aee0-94e5-d466-bc5ce57ba5a9,2630754948,7052383052572523844
+7d596400-e0ca-1c5a-f002-db329a83d924,243704072,18303682331036674227
+cfbd0a1a-032d-fe02-3019-cc78a28c2c35,399694098,15533585485698818624
+fe3e23ff-6e3a-aeb7-7f63-bac1abe35ec7,1998861771,6357117298600814947
+05d42e03-e181-e592-3f38-d174bcc8710d,1066329357,9817273001023213691
+4ed818d0-bcf6-7cc5-7e1d-919c1eef274a,4212564204,16562525161434905545
+7d6ac1d9-1c7f-e750-feee-ae93efc7bea2,2150519072,5241316713395101287
+9c178f84-efc6-e5d1-ec2d-cfda18451abe,1392167432,954141912965152029
+88109404-5b91-db46-fb70-ac3d2aade251,1851205629,8507809536210927734
+7ad72040-53fa-0aaa-b027-a9b3f944b638,2853002586,93148745773840676
+d609289b-a07f-31dd-1e6d-dce801e62ef1,1123608565,11873497681569721821
+f7185be8-64df-05e5-5759-82162a8c6e96,2344621296,7275179028381425608
+fc33d862-0bb8-4270-8a50-8ec9bed1fe54,3770053092,4704843662015322334
+89ac42b7-ce98-24b8-d733-a272f55df242,4038028939,14182228088271975438
+d736d994-39be-da41-2f32-48f7a87d0678,2382679783,6987830491245143727
+af4b0707-c1ef-3a84-465e-2198052f95b1,4077393833,7889174196734444014
+ee3adef3-2551-da29-3a17-d741dc9ebb92,1978681116,4410535698908508866
+d17940c1-5e45-8000-0a00-5d5550640d97,1363939710,10140865744071366506
+48eeba53-02c3-b26e-662b-f76392aef61b,2004160442,6582047358178770370
+5dd112b9-510c-fe3d-a778-416ca4b43b02,1458279106,8292137530104675252
+4060aedd-84f2-6a8e-8384-05826d4fd9ee,1463041427,14584295042330023220
+56403d48-7577-697f-b3c3-d51c995a256a,4205913910,14603510126766869828
+f962c1c3-9b8d-8550-5bd7-960d8c4b089a,441015702,10422440270973786736
+58aeb846-9929-ec41-2a7f-6e60755daacf,1840683074,9020612568059705395
+f09cbd54-8ec3-293d-70c8-4cbe9d666b67,3614056986,9192037167434684670
+944eac02-9a64-6278-de04-1bc092e44e26,3173301187,2036065809065109082
+d98aec7d-ea48-84e1-65a7-85810ee29eb5,1594031937,12005395410569501285
+f8a52ec3-5018-97e2-29e3-20110e3bd738,2256629033,17610889385010114678
+2c686841-3a4d-1244-6e9d-3e6bde364b01,4018742997,4513147833857932096
+9e3faa81-92d3-fb05-f7e1-549da1ea6c98,2986469749,6289321361495910962
+934761a1-5701-b0e9-7797-625c9bea673f,2546331346,7780633166622073892
+e2b7ae19-9c88-8afc-8a41-4f3eb2b3a1bd,2631753259,9840589252902462387
+35bbb5fc-45f3-f327-194f-f9db0ff20237,1122156616,1754561043029632100
+17e93bb8-b055-fb9c-aab6-31bff226286e,2539967496,4855861816274302343
+176b4246-cf9e-23f2-08c2-02a15ea7b9cc,597702179,6734192451989446293
+e06f1e30-ff26-13bd-bac9-292ffb53da8e,2120716574,10723647972221630007
+42d1a001-392d-674f-2537-66d0e459e86b,670475390,13136644395573190272
+1fff2bc7-f1d4-e1dc-514b-312f0b29b8eb,4225925231,12057930303032111209
+ceffdf98-c556-9fa3-5a1c-0bdc4607d0e5,3823552841,4108792177540155810
+64d48d74-b6c4-f039-d9f8-50037e5fee64,1747161828,16967831586061400731
+9da9a3c5-c214-d197-d454-29b20ef4ef71,4172730900,5073729664444597029
+fbdbbf81-8c0a-752b-06d5-57e274d0e86c,1731081242,1516477483243876256
+d0690e2d-a0f2-9438-5cde-68e4fcf3d9a5,1003622173,15434080138072262906
+5401b84f-1fd5-c925-0ded-0418c9b8d602,224856033,2139719861407827810
+9ca1fac4-fdda-b1dc-499d-e93f2e8f43a0,2237363836,13537425088644338848
+a95e24d6-1c69-df63-17f8-1da2d3641b85,1792167369,1715351172800058695
+88e5b75a-1216-0895-b6c7-6739e0072832,305093073,15858142521332273248
+2dfc0101-afc4-ad8c-2979-5cbabf45b799,2073599528,2712305851199249561
+6e7a22e1-db39-39a5-3dac-292b597f5213,1380539144,13747562218482875023
+101a53c0-9d7a-c50d-a0c3-3ec92c5f014e,2084999632,11283838401522028994
+bf76dd38-61cc-998e-7243-ae9eacb71c20,1791083313,5905315084942966412
+542741d4-32d6-7816-59e8-3b3ef8449655,1016354885,16762826482341467561
+af95dbf9-3419-831c-ccaf-a49d730c402a,1084755816,12862961682241627803
+8547ad98-8935-adfb-f86c-5264a33443c7,3266393765,8712656990346960776
+1ac7bac6-a708-1469-ddc3-d590fd54531a,1983827900,12243769354652458436
+4b1af936-e7a5-e2b7-8768-ffb6c9ec55e9,3920731764,10531167811865694032
+d6502e5c-4b76-62ae-467e-2d5b44c74b75,1259710754,11999852132417909373
+82839925-82ba-0bd4-9dc1-6c48d335491f,2381423991,10057255842199996020
+227e7a19-71dc-feab-cb44-07de51b5149c,6466620,8504934408148217415
+ad5352dc-0e37-aa98-4c80-8f3a2e12b292,4107332353,5132232166126082639
+f84b9442-22e9-7114-0e52-1e2e73d9ff2f,1051817280,5058333759183865500
+8da5107a-03e1-0da9-deee-aae606044f44,2768962680,2218924393718024343
+5548cb8d-5903-6d0d-04ed-9ddd1edc9f93,1822695623,4429813191023102596
+bfd67686-5c02-6c8d-2d1e-f54076f36222,1410050289,18023188704414801476
+a4911512-1f93-a8ea-6f53-26de553b0509,1164629442,1061329379933163758
+d177cd13-1414-9d82-7c7a-ed85cde8d1a4,1440778006,11418908208934452266
+99e0397c-fc43-c794-9397-93342201f2a8,7238437,208798089230600135
+1cbd6ffa-b6e5-2c13-8494-0951d34b171a,258632466,7924719863412058815
+a371b6ff-62ac-97c0-9dad-1256b8f20dd4,3411773568,5613102895282847719
+738f5309-dc3b-6253-84e9-fb7229df9142,782947001,11254633491857747348
+447e5f69-b74c-e35b-3ec4-f428b8037521,675914294,10280447035124592724
+6f7201b8-969b-3367-4e05-2d7bb854aa32,3398300986,14846709357440650982
+4d9523f8-384b-4e77-382f-cbe1cfe5ce26,2475692786,15122622424883963801
+ca0b765d-cb95-6278-454f-9b205298e38e,2160124893,4566972335186792325
+ecfbf3b6-d5b7-9981-2536-09b3cc133ea9,2380108526,5358330119388073680
+ef8f44d6-c7d2-052b-78b5-ec25aa7bdc43,435139890,5323958104052987899
+cabc2360-83a4-252b-68b1-eef28a4eee80,1669331157,13819708304762710876
+b36e8573-a953-9c7a-a8d2-a8cc8d8728de,4022748538,9663749584048834009
+b9352406-26ce-9b6a-2d78-f58b6aa335b8,839658610,13561267610982098677
+4e34a5c6-8ed6-05f0-2928-cc1d345aad87,358790775,4500108379690851743
+76d83243-b5f9-70fb-26e3-533e2f25c0ab,3130816233,4300405126181345136
+fe19ffdc-f3eb-9516-3260-ee93bd9e3102,3733904283,2802473280710485939
+0dfefc61-1b3e-9a4c-f097-1608d3b45486,2929773152,4340044502382980735
+6426743f-7b8e-4fab-39b6-4c611f90594d,2896859915,8913638241723246323
+0912c42f-9d91-539a-5d82-cb17e87679a6,1759493133,13103598426848769201
+8e3ea1ba-30d1-fdf2-4859-dca77304b386,4287458595,1199569813008097788
+b7b5c333-a69c-adaf-2704-21174bc48a13,952469621,11692861549965980250
+1a615977-a3bf-0293-2b67-8b92f0b7209f,4200494647,6578879382108911606
+ad4950f3-28ce-26ad-8de1-53abbbcfebcd,872534424,988318754442670206
+0cbcfcb6-1c26-ada8-ef99-55a68ab913c9,4182582987,1104219494993989930
+b8fc3d13-a695-5a11-fb78-5513778914de,4076296874,5168404437638949212
+44498557-6f99-27d6-e81d-d76458205226,1763856585,10473454600479700470
+ccbf8a55-063f-7b4c-475b-69242e385b55,1489659276,10684070655918487841
+1a59e55d-c273-822e-aa32-aca8f9d2d611,2754834837,8031117830480939583
+6c511bee-6068-bce7-a248-91d76eb7225d,3193285612,8884454120696955261
+fa4162be-dd60-9ff5-77a6-7275c92a2f99,3906491910,13622657999889715954
+33a8f30a-bef1-1c45-332b-cfbe3de5afac,3326678091,15767166047548597724
+41e04a23-9e3d-841e-78a6-7fbb4e50ad2b,3643531679,15749845345816988409
+b84dd295-5764-e374-6d15-5cdce79acee4,35348279,1946955204219245272
+2daf11e6-f06f-2efe-1f5a-bafb096e2d5d,790803043,952141984704141617
+29fb18d8-2af5-b86d-4883-cb9e43e09542,345590295,6893829931955831679
+4d974004-4c9c-36ad-6e1a-7052f69d0c56,2159150479,827869825332390930
+044dbf66-9ac9-b31e-ccf4-eaebcf7ffdfb,1343880091,8719682034786714305
+81bcd99d-fe13-fb91-4675-5f21e70aad35,2960791210,15969379824426399977
+764b56fa-555f-6b84-fc56-3e709b188856,3198856866,5888858031801706144
+e23be77b-7b1a-2382-7f72-3186858597d1,2957909986,15913864270191438330
+66a9f131-024b-181f-cb4e-6fc4502bc4b6,3521757621,11666171558652308441
+cb23ce33-5659-5b3e-c3e8-cd6b1384a8db,3374606734,12782988236080123761
+3e7dcc80-4776-f0a8-2b70-241b7acbbb92,2849819421,4895635801186360863
+f14e068f-4ace-df8b-bfc8-e2bdf226dc9f,3120909405,9695184225083194097
+846fcdcd-80b5-80f0-e346-aaa8ba35cb32,3676587082,5069411887186233580
+9ebff0b7-5510-f5b8-bcf8-13839b1ad5d5,2435341180,14399093820541112261
+b919556e-9a48-7970-8d4a-39815383bbbd,3664427383,12751568307809272933
+f5f962a3-8037-129e-efca-94b71c25e0aa,1919022019,11078149757114087090
+b733ac42-a7c3-f53a-26d5-aa6349c288f4,1694073001,1217798351157102113
+9855f07d-56e7-3281-f6b6-e9ff9a92f859,2597521992,4707339293159168013
+45655d50-8828-0c05-7d52-36b3e1c357f1,1936060335,16319302928079283656
+f83dfe29-de21-0227-8d2b-ada6fe230c53,3888488468,5051624447022845537
+6ec62563-c983-f9e4-94c1-f7f57fdb34db,3640591964,11503207229811442800
+3b6db464-dc58-e4dd-0e90-ea9f79e8f804,3604236641,3997445201742301791
+718e08cf-f894-966b-6637-37c83353c17c,2933979147,9014749404593188046
+2a539dc0-6d49-71b2-b885-39ea3baef864,3234572111,13030800195797895826
+f942e550-f840-8cbd-20d5-03bea36acd22,1360446535,4298333220677756960
+dad1145d-efc0-6701-6019-9f93a5636262,3257730710,1001334763092291381
+4ed889c6-ea3b-eafb-b719-2b6016332fe9,2833186496,14280531502914640743
+2f1e2358-c09f-1fdd-fd3f-32858e49cf5d,29132672,83358615543833286
+5ec127ee-25eb-49f8-3da2-233a161062dc,3111683936,5613044864796049816
+412cedb0-2972-e5f4-3dd9-318316a15bc4,4005905579,11768476944265836580
+b7c8c460-3bd6-0f23-8575-354da17e4282,3451016678,1643164632433092827
+35840b69-4ab9-2267-f0db-253ad85eefec,2472583840,8015190517612845860
+d68a0dd7-0fe9-255e-bdad-eeaff6433dbc,3311481323,15018869746230494051
+a2048ed0-be20-a5a6-9b11-42f70512b73b,430834231,4534768076997945708
+361d528c-419d-156d-6964-f43509114f8f,1885548501,10401636567227740016
+ec822ff8-8189-1cff-4498-873c3e7d50ba,1108867470,8491816746614526683
+7174c64b-758e-bae0-f9d5-b6b405b6e87a,4260215493,7704258405636334541
+91be2078-ce5f-e74d-714f-d53ef19506bf,2118966533,6426101329848141725
+d36286d0-dd69-4428-cece-b5ef3670abdd,1833329640,14942195345745848481
+e0974f74-b5b9-cc1b-0552-d15903013614,1261378558,17309014126953806104
+17ea695d-a1e2-aac4-9ba4-032bbf2f2040,1174261413,6790021291235876611
+23408cf9-8dab-b7bf-114a-2b4ae57bb3b1,3631750869,15170248495669262348
+a5aa5762-078a-f80b-fd7d-6394d5b465f6,1843272214,5037969109845763860
+708fbdef-a0b3-13c5-4cb4-ff0e4def8450,4069309685,12379868458431253671
+e1f1152c-6723-7e2c-c56f-ea5a45ab7010,1779313049,11035458599403502740
+a16501d5-7255-1ecf-f4c3-4defa6e71a36,981726464,6371156990934057653
+4d076168-fd8d-0918-4fe3-ba4f3e38e750,1074184576,11757695812497085698
+7f635d17-8d4e-bc67-58c5-32bd4832e574,3749869642,3588135245872974208
+f9a67b69-d65a-3b74-5ea3-b8c7bfe27077,1835410437,6683438034434910688
+dde0292b-6070-9fd2-4c23-9cb05215114e,1311574094,8606974548357411284
+3fd0ec9a-5cc1-8f12-a869-b7421a3e242c,70131738,15736304385794356758
+8b84ad47-85dd-3e52-43d1-0ce900069b75,3389987760,17979634557457263900
+d2c6365a-25a9-f68d-9257-8af6aced8c3a,2234591040,13529574855829275671
+224eea4b-790b-cc6a-b495-669ccdb6c168,3298516634,9511232588601808498
+eb2c0d3a-1e33-a1a6-1464-e02ebcc3756e,804976568,2946599117124883225
+cd7277dd-0ce2-786d-a97f-13f8853c24f0,437567985,8085233242596301396
+97556a14-4a04-0ea7-e61d-cf41e631fd5c,3155165773,4748273700272960499
+ca90a85f-8043-7a13-b4b6-0f1e5abf33cf,13487561,7196744660047131405
+8b87421e-f79b-bb71-edcf-148267e5842e,3106577586,18272559954410925355
+f2775530-852a-de98-c3c3-0af9c231df45,297032748,14208830828533113931
+ed477079-3008-d02a-4795-b19e0896aeea,3563126052,862912106615255365
+aa1fd96b-a106-06b8-9fc0-8a88bc6b71fe,1708644347,1831286029306109950
+e57e6c8a-e69e-5173-a8cc-f70376070bdd,855063840,5310372875016462185
+3b78926d-131e-4aeb-d0ed-43a5d0e528b9,2984935797,2518577551508686130
+61e32e7f-83a2-5602-9f90-aa6cd7edbe4c,825115793,13873165118811941288
+3cd2d8ba-d518-b641-a9d4-1791f91d6e79,2770817296,260058959027371624
+826af5b5-f848-b862-e6dd-cbe2cfaa1977,885019870,11736342132584521818
+9295cfdb-5ba5-123b-e66b-e34039ab545e,3181498630,6405934125908987078
+ae343429-fc8c-d798-07e5-26827afe87aa,1985556762,1967106199059235399
+5b756da7-1858-1368-7ad4-eb13794a6130,3240829470,7083774910698978290
+7fff19c1-48bc-a9ba-88ff-43208cb085e5,1614947543,16208786723920052757
+ccadb5c9-00cf-9855-436e-41fd94873aa9,3527202872,8602539334593772925
+e148749e-391c-859b-2e5e-55a422314c6e,3078963520,14588334695624559494
+62b43157-9fa9-6ec0-381f-2a8fefbde237,725958346,13686400553276543641
+2edd22ac-e667-2ed8-5713-e3d205003ade,4218411687,15310976115529276296
+5c2e9f2b-e113-5966-47cc-bd473d97a1b6,1896722280,3736569075825841902
+50448077-34c9-0924-4cc0-db58d9307184,2981432055,1697718447635660625
+1b07d822-504b-ead7-4dea-d33aab3f524a,3921717200,15419587704021200444
+48c36848-7da0-1bb5-e6d2-c433f4d3ee1e,865972761,16131065339717180238
+ab63f667-0786-4a99-3cd3-24c5c76ff1fb,93138145,16977359737357422066
+98990c2e-dc20-dc40-358d-6c91e806982d,90442352,4756188732995401458
+0359ce0d-3043-b3b6-05ba-89ce88410792,2529040241,16542962881717729369
+5d5ef31a-8701-c7b6-c62a-df30b7210314,2610342286,16166139409167245003
+ef0dc23e-6a86-e6b1-afc0-943eab4f6016,4040323610,2874011283904731463
+96333a73-1c1d-5b91-7575-9516b4dd9e27,2297087715,1158123601454402042
+4fcdcf16-5e70-9f9f-0cad-5ed77d6f0cac,3074923873,6664064808975370121
+12c82cf0-7813-0a7c-2b01-084ca108221b,2486710362,8933090927216233476
+4f8dde8f-5706-01a0-ae7c-f9dffc40fc75,2285676008,7409505617420973146
+1dec9007-2a3f-3ad8-79d2-5b4c6d2ff7d8,1025471108,8358324504900126803
+39fe4938-5f31-8d4d-c760-fde9be8ffc8f,1323586820,8440573611654240960
+7d036977-e15e-e89b-e24f-680dcc91f5ea,2110601195,10211953117650149579
+73c234c6-e990-6953-21a5-48c3d21811a1,3480775749,2709890521552204100
+e37e6211-caf3-bef5-c090-6f52b5f6160b,1274851809,12009131506628616360
+dea9f7af-bcc2-c200-eea4-51734ad4892a,1082981729,3654762791431499984
+540f1655-fdc7-f5da-c3fa-8e8b47d3c628,3053189562,18348412681140756739
+746ccf9e-3159-a62a-5ddb-3d426c94e353,3120352776,3005778971776216914
+a6ef91c1-2fb2-96e3-426f-8e776bb24fcb,1134846194,169021487174633883
+0c38e2bb-3400-a5a3-596b-3532338d01bc,3917748706,16038251819690600757
+9988f40e-0f6f-f6f5-c7c3-3e4f7a8ab451,124205174,17796492629636104763
+57cfb738-5845-b7a7-fa20-5a862c911370,832449553,4743590136126581547
+2a648663-f26e-d402-600c-b96eb7c88d27,609247048,16332790401468898244
+1e8fc276-96a0-1aa1-6501-955906301531,1569530427,2087019416314292234
+27f4f8b6-0383-f024-187e-a61e82fa106c,355719840,13457837653293060535
+a8d18e3c-d45a-49d4-19d1-d1ed6107a13f,2976421216,2413520304641722489
+f80a79f4-e5c5-ed99-dde4-db22e33f72bd,1984591487,17234267755649524978
+8abb016e-b17d-ba3d-e9fa-9570dadba6c1,612334101,11008888222301947914
+3ddca9f8-2926-6bf1-725a-d6c48bc75c3c,1489068147,17097592969675235768
+fb26b879-9961-4428-6b9b-9b930caaa72f,3024796150,17835204614204991547
+521c5421-eba7-96d5-728c-56748450a5d2,1444639676,18252573868484510339
+e7b37bf6-e58f-6761-f0f6-3d143b23447a,4153913946,9448247878518796721
+d55fef32-e0da-1c93-97d8-6effce18feb2,1594310269,13239321802314578215
+6e1b9fc2-afa2-5b89-6c4e-fcd3a4368ae5,4174187935,7695749217294737208
+28995fc8-2762-601d-c0b5-ed17aa237cfe,411732838,14936820754511795483
+a261eee7-13a2-611f-2849-971dadaae2cc,3058457774,5514595711560777720
+17fea286-328d-38b6-353d-3fffbbfc9ba6,661674613,14586601599307909735
+72537d8c-728a-3b7c-e6cf-a605056e8648,2300715440,4794529585439205397
+c1f70ed4-d2be-0938-ba89-192d88fc3a2d,2372023152,2794159706506607953
+dc4d96b5-ca49-57f5-9d06-2def3871c56b,1592171054,8828189999002330897
+8834f306-823e-73d9-59ff-0f46a6cc602f,4281381713,18110058275807623685
+0a0e9ca7-75cc-d361-9ebf-013115349567,562334043,5640139003247638144
+2f40be22-4da9-b589-c0db-ef3fb8652a33,3687594998,2783811259079635093
+714bd61c-cd07-e894-703d-a74cf76371bc,3207220789,16656408508538630292
+0ac1a302-ebc2-b625-9e54-fb5cc896b867,734622214,6767766312424062329
+69cf2011-76e4-e492-a953-529af0101a29,1920520291,2348430533595671372
+720be08c-7078-1fa6-61f0-d9413768e53c,1767770630,14332581112088816936
+8b58f4aa-05f4-b5fe-090e-71b34a898da3,1673610983,16934843470425761713
+dd8fd17c-c4b2-971e-a8c1-6deef562477e,1982233594,6240576821691594867
+177f9860-2888-daea-2b74-e5619b62f430,1214507923,9527569552961345089
+f0f5957d-c88c-a170-efe9-f47ad1df7eae,3559015702,16850491400321468154
+d3559391-18d5-2820-8b2c-5e5f17c1792e,3679105228,10251282379056335967
+61f64c94-e772-2eef-15eb-e625f5722e67,2782029416,16464704417961544918
+f0dd2f6d-ccaf-607b-2127-d6e23ea2168b,2544626903,13179688488226740322
+c63c3e40-7fe6-91b7-252d-46c231f63f1e,1996148586,9229273941018120838
+2a213741-eb7e-e9a6-a575-f4f7786e282c,1368774409,15318463594148446214
+49464751-8687-6c2f-3ab6-04e661f7add3,3728370130,12922721872301542023
+e760f194-4602-6bd8-e828-87f6fb0d2e1f,1724035963,16618312059253631188
+df40c537-9c38-4c95-f2a7-3618f7078b69,346066307,4755414308106896752
+e76d9c05-9c96-c2e0-1d7c-a3f98ff2d5fe,2579847594,15424667847466539663
+52f127fc-98e1-5988-35b3-e9a29fc73b88,1042954437,12288649586839865464
+5ed46716-426c-32bc-175f-907278399252,1411981903,2309359164777441934
+54fe7c87-5ad2-e862-a10e-205eafb0ebae,3755647955,4700874322965693287
+1c5eca77-f12f-0d91-29a2-470b38d061eb,2442041295,5179736930088524782
+4c99a98e-5664-7fa9-7852-dbc47b18fb8c,703976969,2125166041881086291
+0f812210-4a86-49ef-5244-2c1f41255c95,1728358798,13473838360728017828
+5c3a1872-8be8-044d-db9f-5fde289163ba,3725003911,3034107226806989325
+43e11560-1f2a-8150-c788-11def07c519c,407548599,14318946968604012052
+15eede9e-a587-94e3-9914-28e7d07c0122,2144380291,4983313096028052144
+9f0ed827-d60a-6ce2-399e-896d9d6fdad6,1384071751,6678142620003224814
+eb1d2292-a7fa-fc6f-dc27-c571bb3fc503,387022816,2732535531790712694
+f26c861a-726a-e001-af18-845c84f78c18,3379060587,12217123200283231494
+72cce25f-700e-cd45-044f-1bca278ccf79,3560682285,918574688078959244
+4afa22ef-f128-2dd0-bfa3-158f54f331b2,3056895485,13908763705977777354
+8f473d1e-a724-2539-b9ea-a2a98778f271,2125464190,12368265749939915416
+02236e0f-da60-a015-9751-47efc4253d7f,206756939,1973737111884152054
+4d8f371d-f5e1-4d8f-af91-154ee90b869d,1421630685,3539396021224748913
+ac1a3450-820a-aa4d-09b6-98f552d9d2b1,2436912180,2628310047246955315
+75388919-d1b0-3efc-42f8-0139ba7731ae,1779872830,4066421539466956959
+4fe3e883-5c7f-e55f-4fa7-e28a19465277,112300366,172013116947431113
+d770b519-dece-18ad-a51f-a3690ac60ee0,348119195,15860515720457373932
+be26dea2-e6d3-d314-0202-d071987e9e32,2650046762,7654374786969541186
+63c0b0f7-bce2-ca95-05db-b5cb2e5a4c61,2144421503,8654667046356676398
+b637e1bd-8b3e-f169-2014-ff4163cd4514,2183102472,14252153078820184970
+02501f8d-eb9b-7b54-6292-2861f1593c18,2470367049,4630419491087243974
+6923ed69-1ef3-ce94-72b1-cabf7fdd1db2,3668438853,7774319909850951711
+429833cb-6ef7-8869-915c-23832e7790d8,1556369813,11115630877792409080
+99d23e61-c55b-3c63-9582-524927e897a0,203793089,8611701304477464992
+d25d4b51-bf2a-629a-675e-d66793cb2d7f,3939715691,12401605440653618783
+1f012b2e-8741-c858-ade6-60ec62455363,3106143968,14109735846754132687
+c3274d7a-1359-2ef3-9be4-447cf09307c8,1083116433,10722483790822454899
+6d50f986-0581-6a44-6ca1-39e0c006fc5f,219114463,14737290728192912840
+89a1ae54-d930-857f-5957-27e60125e76e,2997081369,10993831404632831439
+4a3e0bcb-1b96-5d91-f008-c6511c0f71b6,2830521267,3428619888571296190
+a4f8b63c-e9f0-3405-6766-f78d1b4f10f0,3666143113,13878401820968830815
+46ba9a23-34e6-cd11-8b58-633d10feee6c,1398036960,9132997751042453038
+a400c9b4-521e-007b-436c-464846372247,1447632664,1616942756318367719
+acc08179-46bd-7dd3-b8a4-5f89688a3591,2779972283,14878882294471599434
+592fc40b-fbdc-ab24-cb80-a619fda108f3,2687160408,12546788788186913536
+3916e2dd-3741-8856-6df7-cfea53b1917a,3039308557,17556370507205587140
+ae660aec-c20b-1b49-ca96-a43df873bc53,1783215656,2051966697468033226
+7491620b-5de4-a999-70dd-6dd0da338c36,691023763,6852077056722965510
+e99ba834-c01c-1895-9a20-4d3ded4f466f,1452920014,10598017487350130942
+84a680a6-be4b-11da-c095-e57c32e8cff9,1563463135,5079358582811061858
+f1439330-64bc-2703-505b-ceacc9adb0ae,2327225133,3328721821840385905
+8a780cc5-57d4-a58c-3aee-59c2738d8922,1198658032,15110383036180514589
+3a1a2cf5-c6ab-f1f7-430e-b2a6b5fe7295,29226759,9999767834808737922
+7a7f17c0-f3f8-0b28-94aa-c2901495c820,3942577809,3950950099876134496
+d4b48ee3-e38e-ecfe-8544-5ed190b1f44d,594283892,2586752887980928964
+e55ccb67-5d78-9c22-3819-6c0b1489bdb0,1717766245,5737679509362787958
+f493f911-f464-da0e-6b49-dcc7808e9f74,3887098978,16863291938688280595
+3a174e85-13d8-6cfd-b4ec-877a99e2af50,2357073720,8862587331296008660
+e5440340-a825-1584-1544-4594be6a2f01,2241947965,7493917286153708671
+87a6e324-8b9b-af6d-52db-f1c0916cf438,2104408805,10705753819429604583
+1c4cd9dc-9e0f-1f72-2ee0-15b015b5cfc2,543858437,7177414906101077835
+4b47fdf1-6c1c-0961-5862-db17f030af2f,1485235750,13742376064338005896
+c30b47ed-55e7-2d3e-5483-34be42bbdc51,1445601754,4742980417187411383
+06b50dd2-dee4-9f5c-a92a-0d773bd3fc5c,2245166662,14164290940084609696
+bc348ede-dbc0-7f95-6a17-af352d94497c,1368474904,7804706398962232111
+e5065179-f978-51d2-536d-08338e3821f7,3703155548,6148857559528964257
+cfb8b7e3-8a04-cbf2-df52-19a2fcfb5b19,603701765,13442120246998986504
+fab7f054-f796-acf1-7618-a75118ee2525,3650342471,5390549570815065061
+90c38940-78ef-c84d-44d7-5bc483a8689e,385078731,3307990366694540668
+f8561d1b-ccd6-f30d-37ee-75d50a7e4edb,1569370720,15524452381545058401
+b3187405-f8dc-999b-e704-5f013c6023d2,48843992,293601169041386126
+cc940df8-abd4-b44f-bc49-5f713f295bc2,4139109932,6180071286664317764
+a3eae0b0-dab0-ad70-2725-a2c9576c8747,4293065832,9119623600592036613
+c132dd2a-4439-3d28-cf99-be410cc89ffb,4240475384,18003126676521960067
+342fe76f-c26d-efc9-eaf3-2cd089720e04,993271015,8960590839285983798
+b8f88cb3-1f1a-819f-0988-eef1d7e9ec3a,2153261684,5628589493975722294
+7cc2741a-ec9d-c677-29ac-edf4af84858d,2087448716,10896459528582715185
+bd5cea30-4a03-2e80-bc4c-41c751b95e09,1923945686,1793672680353822572
+8644d6df-d1db-23d8-86b4-ef18375f9ea2,2382775852,16610775962465999271
+3ac4665b-e6c6-7dea-c0a6-5979fdce70a1,2452072911,4244590418106635441
+b2aeed8a-49ff-83e2-ca1a-1ee20fd6f149,4221466995,10154245300283876906
+ecb3a016-5e30-f176-a5c6-a30b3a3eb57f,1930847466,15171630327124677883
+f475bb1e-fd33-c4d5-044a-2591d99422e8,1025448992,7080617200675530141
+90828760-6fd8-7d4f-2358-5d5cc39479d3,4041087920,7398005186735946031
+6cb20f14-818e-c091-6095-203dca1cde0f,2836398320,7892432490280820338
+b0b1f810-08aa-a1a9-3b3b-a55268b8907c,1043357519,8677770291837243418
+fedeb6ad-df94-95f7-6a0e-9f5ea46c4a92,898475901,2212429044399988066
+a83c8641-8a0f-d8da-c7be-82e88f9dfc02,1942437067,13697514592367032315
+59f1adb0-b243-567e-1e7f-59b522f10d45,2533985800,3219311472894460031
+4ef7be55-e293-bcf0-12c2-e10f5876aa9e,3331047712,17349137520427078410
+81e5d7b4-9e07-4414-2e01-2736f2bd0d00,3418112915,13948820109913565625
+f15af11e-83ad-c21d-3bd6-8f96f212798e,676213520,3901493136692217242
+9a1c0e5d-e355-6edb-d9dd-b18332f1bb2f,2602495168,14475958793601322659
+d755dd58-6112-d9f9-de47-9f56dbbfc1dd,1578680798,11302533201052760109
+d599ac34-4145-5c4a-7998-88c75da3324a,215238940,7769783871330018309
+aa6bc7e1-fe88-0fe5-33f1-e2e8954b15c0,3891902390,8438544151858045000
+dbc2c58c-10e8-9a58-145c-023da2b1e0de,1677026217,11619272114208080218
+92ed322c-be7b-194a-46ec-384797e8989d,2111789992,12010609760142797185
+00aaa8fa-7e15-9df5-41ee-7e5c76cb3b71,3517725251,10692877771475276630
+d532a7d9-ba83-266b-54fc-417ca6beefe2,467620598,796410881332324889
+51ea99b2-664f-5664-dd82-9a0a774d994c,1889710875,17524250521163485526
+7b878f1f-023b-5c6f-feb7-5a5138f56868,3567411911,14425655127052873726
+8d8a2abd-ca4b-8d41-7d39-eb88ce758c53,1999763954,5087131960716919115
+6391d045-4d0a-520e-ebe7-c063ed05ce1d,2948639347,10111939804979507568
+8bc7fe87-1a17-0ce6-c6d4-f65e2d4d3f2d,1096545602,2776484970355222420
+3a39175c-e176-d31f-bb11-8283aef68f41,2740375543,5463258104142297763
+03c71e2a-e15c-4eca-145e-8d709779ca18,2689545759,8475855339428013407
+92a661a2-3718-64c3-2192-e8631293b3e6,2089131228,9312146415003325876
+fec10095-088f-fea6-7a9c-11bcec2bb7b5,3111879680,12866326210572116
+7c7ae095-e537-d9db-37c8-7f7847a5cdc2,3453643837,815578610503137492
+f144a4fd-187d-395a-fc40-c95de63a16dc,4144374935,483838510191737606
+94bcb6f4-3326-56ae-c453-9b7a62d18064,3644348483,15484841919047135526
+738af357-d453-37bf-329d-9d1c66545a65,2491748250,3137083171877125067
+19694f43-2bd6-d082-5331-430899ffd70a,1618960873,15413795900559866155
+31ac0e05-41ed-6d8a-88ea-33c1daf2fa44,3302803250,15585887738858427165
+44777aef-13f0-566b-5aa1-e431b7451874,3917163654,10486449810580235296
+afba2825-2980-d02f-dace-c9566b228e2a,2715825722,16054283164515973192
+b8dca598-43d3-6b83-b68e-48ea0c5da501,4252653130,41064640993063733
+ed5af5a6-ee79-ee12-e3d7-d5c71ba3a843,3354578688,6113404338910430087
+96e91cbf-e6e9-a726-8bc7-74b9321c848c,2460395177,4923266577069070989
+e944741a-04b0-aefd-5c08-381d7dd743da,3380395831,7822350055491682571
+97bc2c93-4130-73d0-8047-4f20302c6b16,848198044,17434383454468324695
+7395146f-44c4-ecb4-6d38-ba8f7d163da9,1826481515,17332206378191397627
+ee1a3578-ec1b-3eec-11d2-ff34889381fe,656318770,3194302472912111021
+7e5c573d-7dfd-08f5-a26e-537a2cc71959,1288444743,9325103985476784489
+f308b268-8128-98a4-2eae-c95d5d0ffe69,2850899194,8576804770673902209
+846197ba-9571-ef8d-fd2a-6268c5886de2,3595414471,7233365275797582076
+750cbb4a-26f5-74e6-6c42-f96233e6e6d4,4228689838,12944866772652786396
+3a42814c-efdf-d4ac-8a2a-b884cacce8f2,2441839716,2064302277254548553
+2b0d8646-dfc6-a011-b311-9a9d7a58dd3a,931339529,9333044500526700605
+ad0c821b-dd4e-5923-9383-91a65c3b17ab,2455735126,17869681501907030922
+93c0d179-c402-66db-2c78-90a635e9f871,1992999194,4812663690683116805
+ebd17d64-098e-84d2-f509-46a7498dbafd,1826277763,13285900628936961815
+aa468031-6735-fdfc-ad10-b75224684054,2742200378,1836945078045753435
+a8043120-76e4-4a45-d7c5-580d1606270d,2992536468,5970615234640258403
+8b770be4-7a60-9b0b-222a-8ce1a8dd912a,1750132281,3897844659096373194
+c3226f5a-9e82-9951-439d-4e3186e0b622,2010108205,11457011022009618377
+b8f401e6-1f39-c96c-92df-ccb36273b8f9,437213809,9222603606651952821
+d1b7ea2e-224e-4a1d-29fd-ac4eb74d668a,259646595,1302165010348320421
+bf3d89c0-d2d5-39b8-01b1-894397db0f3b,1663023255,15882269093820687629
+56bf2b73-ebe7-0cae-4885-c3990b00932e,2601936992,8683554346606167719
+17a36a6d-d523-ae24-22f2-12f807d6cb12,1592586632,4600719860076183320
+d382caaf-2dc5-1cde-3cf5-15cf9146f957,2497244387,1620831336923047197
+3ee875d0-015a-929c-609e-0ea93c81fdf1,757291667,6161646632304374196
+386366fe-bed0-3d51-0356-410e5f8a2309,279044528,471519767021441160
+f3189a7d-3389-cf03-b548-181f65a797a4,878914992,10928706881201234179
+0245b200-bae0-642b-7e05-b6a45bed00a7,2358933903,15106763260202739250
+25867900-a48e-cda1-a3b5-5282fff9a717,333944479,10371351455222165693
+4a3a2188-91e8-2397-d415-e55278f1670b,2636307380,1474910613967665725
+e9dfb469-65de-ae18-2c64-9009895aaf1e,1771727675,1122042465486941627
+3fe03e59-ebc0-3995-4257-e41ca4040da5,3964544221,12988622706919443396
+53ef4c67-451a-3402-a3f2-8767c2908003,3213553678,17972628475154895830
+c6e2cde6-c762-9f71-5fe8-4ae5e280ba77,2414545197,9277244125265121816
+3ed9523f-38e0-4cd3-c223-07e47fb05af2,1949138573,6647317486850746077
+673287ae-cb8f-c646-7d84-e92d2b565aa7,167759208,4432007003833432011
+b5b88953-be71-ebd9-a034-8ffadbbcd1b0,1510258462,8283654261470635107
+bf1c1b0c-ec36-55f8-7e46-238e87aea235,1588793232,4945438597347013561
+d8481ddb-7272-b858-1a1e-8bbf54a859f7,4130824828,16523566891593931440
+dd1cb08a-c18f-fb07-d39a-976145cec152,712816464,2426712374215389825
+185e94d5-6cfe-de96-717a-942d2209d31d,2062144348,4708845670184721550
+cdecc736-ec65-4667-ec75-373adcef03b6,3472604566,2479002134496478303
+8bbcbe76-c1aa-3559-6f84-cfb9b270e44b,1116073468,1330293687917527268
+4018e9af-9a5a-c7e8-4e30-68c341f3acd2,2311958577,14789072691868402971
+50ec5155-0a15-913d-6610-888e692c79b2,1071216954,9744303460916827738
+dae1c43f-7ded-fc89-705b-f53b889da985,902311940,9915967265749953625
+72d91a79-a8e6-469d-c2cc-678000857238,3960461864,7792131496992960600
+3c0f4d6c-ea31-2e47-01c5-8074c6257c28,3098989714,12339484845824027063
+360176d8-7760-5f7f-26de-542ddc08f075,2761489339,16815932049080043648
+3b96703e-0bd2-ad05-9598-fd894ca9e9bb,1786939365,10464708482747536894
+2668a27f-48a9-a53d-7a1e-2e7823f2f850,1314261725,10786971778466115279
+67486ce7-6bde-0d4f-9cc9-ab11b4eadd00,1990271370,916311102173450096
+cd702088-8e06-7661-c6cf-c88966ccb969,3715688685,14333351917858832216
+30356d74-00dd-65f2-d08f-7a581bcba8e0,811276774,8345936454774857845
+c4d93370-f49c-979a-667d-0d0028e51f90,528950779,5415176189054581560
+0e2076ec-d267-01b3-f0b2-204728db7360,3500421955,1197940357194924739
+81730817-8848-9755-cdde-eab6339b0bfe,1125909237,7927270221277378618
+a958153a-fb31-8105-de4c-b5fff62b2dbe,1003220855,2470427781659796315
+6988245b-98e3-040a-2bcf-3cac7cf6230f,2231699269,3570267497035297784
+f4665752-ef5f-9ccd-5e06-357b591ddc32,171588356,7093958431631534490
+74488890-30f6-0de4-851a-28c255fa7e04,2524834255,4961115111946997731
+4c92081a-0b8e-1126-6631-691d5e7ec6dd,3729917032,6559479036860226933
+823b8a04-0fd4-f62a-ad87-01775adad17e,2968647741,7628515283579370365
+81b97ef3-8db9-4d70-8dbf-b32ae7ba06e7,1115152140,15709844648065763490
+36e13d3a-7fc2-8370-2970-c7981aab6a12,1998820743,4544649624237837073
+6630d35b-8d7b-8007-dbe5-59e627d17a98,3212339771,3244669738885192023
+dc65e025-1c54-32aa-c2d5-8ba531674eda,3640390859,6295023252415402136
+12e4535f-90eb-2abe-0bf1-4e53d2eb5324,2228046615,13671283150867357268
+19c00ad9-8786-7648-a3f4-f6cb03f8671b,3065168449,2931049205176313095
+8922904c-d04d-5a01-04ea-38ec660635dc,2966339594,8844802024488144812
+de196be0-c094-18c3-2f13-69b59cfe72a2,2082431074,11146205082503554713
+4b7d97e4-d90b-60c3-477a-83fd237d63ed,2827629888,6981704828053899444
+592bb6d1-6d24-67b5-96c8-4982098c7c30,2093614771,7797939734910339592
+99f42e4d-e842-92ca-a7c7-e21432d75322,835459306,10437569625757583213
+89c7df18-eceb-75bd-db95-fcfd5e4661c5,3871945819,6216751518041971244
+116b6994-bcad-4190-64b5-7a2fb424a4c5,2579274599,5473934262433298666
+0ef44abe-0d9b-ede2-388b-82f491bfb93e,2378463152,7961024677565687797
+7c4f86ca-f3af-86f8-4666-32ddae270c47,2824661166,18064666766367565709
+3dbdfe5f-8643-25ee-e4ff-d3524226eed0,386415115,3807263859764230261
+95fab917-da92-f877-23cf-8e9e66219237,2684652423,3053457666739121677
+c33e6690-a0cd-2bca-db1b-9d00843d1cf0,1167745412,1177538520684615637
+77f26fc7-b8ba-68ac-7a01-bbadcbced399,3887723861,17094431957103737193
+c33aaade-c040-4551-4bbe-e4881f4c4a15,2599964940,4851148602136665470
+eac7bdd3-ecd1-963d-3b8c-32b1f832d81c,971649959,3332944461568143886
+ba0e5059-0183-836b-fd36-db274b9e1647,3272646406,9728892956468637289
+c2b3aa3b-687c-e2ec-0018-58f316f85422,4281201358,2664109725112084130
+8f8ba6c4-ea59-4e92-4b26-2120a9808cf1,2821646899,15903746485745521335
+6bd4c0ab-c49d-2ba5-423b-e1b4797eeff9,2098544268,16466073034500186857
+5fed5c22-36da-46c3-aad6-cd52411973d4,530413002,13741276971986531570
+805ff280-22c2-9cc5-70c1-bf60f96bf7f4,4067647613,17815560610126024310
+e3a8cf0b-43c4-561e-fb0f-174e5a44bf0d,2507432810,10199353302661395093
+eea483a4-6f7a-21dc-8e0e-cb11f05b7833,492210419,3390746435098278121
+3ef3acbe-4137-dd20-35a7-4ba3c886ed2d,4202773112,11728479398926059572
+c5a81386-5ade-a47b-4131-b3fbcebf49af,3434873982,12286147153831056486
+748b4d84-9e2c-1e80-69b1-565561f49a70,3897615477,1493650395494044072
+66f814c3-f8dc-bef4-e9dd-7878f2de23f0,4093515869,16677839236212504624
+df85e974-9f9e-aad9-8a4f-e6be54e71c0a,3612852155,8973709391761939523
+d1438f1c-9b12-c495-06bc-2cb567d1b6f9,913468788,4341337102256194342
+f9ca7173-e379-786d-23a6-8435fd1882b2,313683237,9893133774148922167
+9e6061b7-26dc-3cac-7a74-4b784ff5e6d0,2462672002,9988858622156153717
+aad6706c-ad5a-6dbc-b5ee-980f659ad782,4001325530,7229673607638800559
+90903d8a-d1ab-23a4-170b-f2a674d286dd,3055236497,12763161090120652044
+75cc4ffb-4610-8dda-adeb-a411cc84713c,1231563331,7891735740319920052
+a18ec0d0-c310-6d91-2867-19e8df72e305,2724410848,10804050769995459075
+0ca8f3ff-4db0-4bb1-9883-afcb68f8b962,165296315,4230849557727104640
+b5d3377d-a2c5-3a5b-d705-c4bcd6b3379a,3303764085,6899073909621730369
+1e1871eb-8b91-138a-3093-1e4980cfecce,3324598029,12890332038038539984
+522cb9b3-5315-02c0-502a-108ac7811e31,2231329412,6570756009222040362
+43cf4921-7d9a-0821-5c69-a8b433843674,3961194064,7897274286776642713
+3cd4430f-d0e2-f281-e889-4a9ba3617caa,1246136808,459455200137348202
+45d12cc7-c3fb-fb31-f7d8-47b672c01414,2807761604,7399655254665514079
+21c20df6-c9db-8fd0-ca90-0095ae4a40a4,3688405183,5470726718248360408
+69c4f72f-08c4-9a32-917c-e2049dd0303f,1602575815,14256037816461562791
+cce3c5fc-234b-812f-1a01-927bc44d165b,1472968688,13728787996034633709
+b06b36f2-c33a-8798-c2f3-c82a2b316d6b,3597531220,3977642410690977224
+771d5246-a784-301c-fa3d-2d1108a77201,311745872,17842358966525250621
+da4ebaca-4acd-0d2c-b98c-6269dad38509,204860021,7028195416005209435
+79f35d67-48ad-ff58-3579-bb47f0b96945,2772024439,14910796283755600449
+ddc3e4e9-e552-48c0-02f5-9be8f4f4751b,417640460,4835732154842696846
+911c13f5-cb29-4857-9392-96a93493684c,2190106566,787687606742491448
+695e2552-73fe-dede-6fff-f39ccbf6d69c,1954445062,4232526757845843528
+13380857-4f9b-627b-1123-950ffa31c810,2568954726,12446892932541830242
+07948b38-47e1-7563-2634-b22ce4f13eac,4011903482,13968903953083036359
+532ea6e1-c6cc-f97a-0a4a-c82953452011,2647517147,4057686752225371700
+d52238dd-d249-85ed-0278-556d62cfdc5f,324105791,2591524135770277302
+cda539df-148b-7740-bbc7-f44852e6632a,3975041525,18444528137843819504
+eadf1140-dc72-b4de-57e1-010030b273c9,271422299,13613049039969091891
+7f814710-0d09-bf82-9f28-c9a704c11e9b,1664627847,31105691077986909
+f8e27a3a-f44b-71bc-878c-fb3af522300f,1505485913,717908291374813589
+d4f2a359-04be-b0ff-6b9c-5a63f25d578d,3277090893,15416851676707960238
+b8d23cc3-f5a6-ff6b-e6e3-0c56a69f6f2f,2070091293,9362899763030253840
+81edd566-13b9-f65e-8213-bd3fce906d99,3407045193,1427934922543532268
+4bfcbd2f-f17b-81e5-0cc0-02ca37bf933e,3798675352,8908000870076850457
+be2fabc0-9ed7-453c-bcdc-dca3a449563f,3795790080,21202655692311987
+897d8b88-f74c-287a-5835-b5d40e5f406c,3621084559,4974757374497636030
+b8199bbb-e953-427d-a9e5-375f1ebb04ba,1477886827,10667542269865444841
+a571ad20-a9f0-9185-aff1-5b87dd7e5b7e,3040624523,16053481164116658767
+dca8c7ff-e63f-bf36-b445-6c15016f4f2d,3151846671,2755432431128324363
+a9f0bcc8-4d71-5fdb-ab89-5b4bf5c0292a,3664196131,909460475114436579
+2e4333de-24ee-859d-609a-5e3b9b6d4bbf,3840873878,9195225824477662421
+ddba5d1a-bd9b-0418-c243-7c307305b0dd,17200063,15810461395788663692
+dee46d4c-4d85-e03d-9140-7f933a97f946,3250337072,8588150340707278065
+fdd0b6de-d6d2-a921-93af-447626bc6185,603022790,1585632061632763701
+28fa5894-286c-e6d3-f5bf-bf7ee71e6d6c,2706595209,1665009766128810802
+e5802c10-b947-4862-35fe-b492e84e38fa,2107864119,8446357079480335669
+b039e197-9f99-f5e0-b19c-c114caaf5c19,3693713676,12117612211313248103
+705b4e06-c3f8-b480-7ce9-6622111d1858,776430114,8540869918043899156
+bcb11975-fbec-d9e4-ab5b-cb23f20e4f20,2140578047,4004425360113552237
+fec5950c-a513-94b9-eb12-b031e1e1f784,4154581063,1831429672784392727
+f69d9850-24b1-f514-97c7-1d42b9282a45,2733095857,447213376642382411
+e5a33f35-fbc5-b18d-5fd7-0ec2e8fb39a0,1977863240,348100413389268082
+ca2e5188-eceb-02e2-8976-95a39e985227,511068732,14537225290423039910
+b27c505b-6fa9-9dc0-de46-1fbd2a5e4bf4,1760633610,13786419945204609008
+ddaaaaf0-59d3-bdf0-5002-d01de95706db,676474767,4852810764884969097
+c85886e6-07b0-6f82-05a8-80bf02a36e00,4178306332,11071050814147039509
+2274f262-4474-6268-97f9-9a841bdd0166,816941526,12466399570045551567
+10dc5d87-85e1-973d-4037-10b1b559f967,3417034573,1767203158133101143
+b123c792-1d59-ba7a-d304-44651d114323,716529060,895544507967692405
+fff2012f-49eb-bd32-6517-9fda7d48dacc,88352465,2441130950759231390
+18202a93-5ce3-8645-7368-a6be654d2c70,60326440,12963380361419968828
+128584ee-74cd-037e-1101-eb8537ccc193,3123348278,18398146402658671713
+989ec3a3-47d5-c28b-f565-50074d8ea546,4210148403,4595804227251728093
+ce708ec3-e886-9e43-f767-a10a8a91199e,4099429330,14741378680301486582
+faa50084-54cf-287d-05d5-44529f4751fc,3134214268,3704083438828297753
+ee8cda09-c772-1f15-8655-15a4ddef4dd0,785646932,1696510017766834775
+dc17f39b-ac8b-ef90-a30e-effcf082f54c,977737833,4632508926694808770
+e97fa0ca-e35e-8a90-2792-889169bb09d0,2872994611,2711510519694953744
+253fd132-8fe3-1528-136e-10e4ab1ef9e6,1267003051,16877145819940740977
+0bb7a253-8abb-b415-cf2f-ad406827fa4b,2808773793,1254522244653970234
+77026295-80ab-4f2a-d89a-9c35702e7207,431353775,13166520897909851637
+68af39a6-001d-87e6-3fb1-4d736b19c349,3683907489,18135478296686740299
+cf355290-08f6-cfa0-36fc-caf5e0e202a3,3247109799,14469898987643382227
+86d94109-334b-19c1-13b4-7de95287bc13,2623282678,475440426781618562
+da5471cd-0304-8fc2-3213-e19ebfa6e5bb,1322140222,11225845666539433905
+1387d895-99fc-6f19-2de5-9ba6f9e590f8,2638624835,2940191690544908911
+8d42df1c-51ce-d100-7d9a-a1b25e27d838,1350547295,8006005775280492262
+52aace8d-8cd4-7a11-e78c-d99c564415c6,3148999647,9196999360415982620
+676f30cb-eb6e-8797-a150-c37670c97fd1,3058841626,1900581658620853655
+a2e1a709-6c17-8158-1a6b-16607c1db967,499550702,2840846063018948573
+44aff6e5-2017-006f-7ef2-105427ea8d44,2909829004,11966705868392838567
+7a1c272c-81e1-27b3-333f-49883e573e3d,2652588894,1461866640219075210
+d989f4f3-4ba3-564c-2626-0cd9c1fbe511,2724956110,1420975164032056711
+e615aa60-d897-3eb1-5569-4fea18c45074,1628491537,3954318862146972441
+d677e1df-8dd5-5a1e-4a84-900f91e4df20,1128837492,9567519638891369640
+b74db917-5c80-6639-3291-51df3e1f1571,2733402287,7883781327265712185
+d3435137-2558-98a9-1ed2-59d13d8e08fd,696001706,9368128323947306692
+67ca8ff6-67b3-90d0-2a08-6f86f8f3bcf5,124609957,12745800739989480500
+8b62f0a9-32f7-13e6-112a-ce0ce8a5f951,861663190,193588050138972196
+a4a9a98a-a497-1563-eb8c-4bba0997b83a,3440285587,8707931243966749341
+ea862c9f-efb0-d165-342b-61a3ee6c5ea4,291289442,4856300129708728958
+fb87063f-e616-194b-a958-e6e908bd3b09,2271582295,11774049176938739571
+25b04a02-b30d-8a74-7add-688e5afee330,23073250,5473389915771595797
+57e0ac5f-e975-96f1-bc3a-b9be63c77eee,544379841,8923083936199604551
+a17c61fc-03ad-5b65-dfff-e7cbccd571ab,1722796216,7022904041622808069
+ffb32609-d05d-3862-f510-3ac37c3ef3ba,1447367970,3313617968673085409
+f3a46325-6f2d-4a1b-e73d-6e0f962093ac,72270188,9011845293714790840
+fcb82a53-70ae-491e-c418-5ae56c771abd,3182601327,15600069424367318858
+4655689a-7740-20f1-6ea1-e64aa8a73215,708079393,14043494193766375858
+8c4f4617-9e97-0662-ea3b-63e1d7e63e36,1913701698,9797476645589548179
+40cdc3f1-b3cc-989c-7f55-6f2640d2521d,3058079214,3033259972862105329
+f9f0ec8f-5b6b-f83e-ac73-530775f76ee2,39583809,8677559426533423867
+2c86999e-01d9-9302-03cf-d984fb41f618,1855603396,17361958614950223442
+bcfbee20-4105-cc9d-fa8a-310f3dbc275c,600597820,6878670733102124603
+5c782cca-f4a7-1f3f-5b51-3db865f71dd7,730704991,12514334262931359729
+79b107d0-bdff-6297-42df-94b07cd1f2ab,533410332,17540435543640408738
+c8a05869-6a98-04b3-ec1c-88ce73499e01,4099142817,73587696417041889
+b3d7e559-5ba5-e11a-3215-51f507687e7f,803345112,14732612860287522985
+4add3ac5-7301-faa5-11b5-e8188b4d1d20,145842406,16577251818264242006
+5d20baa9-24c8-fe79-8f2c-88f58edb6f0e,2728727000,5570528147765994995
+47cf5bda-7731-9519-0501-058cd4f8fff9,2159248040,13542835047998838400
+fb025a67-ec0f-596d-a200-6b7067e21dcd,431539373,14286892721502075424
+dec659d1-0835-6e93-4fdb-6d6ef668db7c,743395133,18040138980881965274
+0fc59318-20fc-1496-42f1-db7d7abb83ab,476265188,2264733398185891005
+0e207cb1-e54e-cdcc-d522-24896916e59c,3582911662,5633851982377436576
+c3736e89-89a1-3306-993f-7b7a74509b4c,1515027407,9520728146881366650
+cd331dba-de0a-bae7-69e3-ccea151e3bd8,318568708,17101884095685159750
+dd598f9d-cee9-cb7b-3a93-be8e20aac6f0,858640614,3471127514164019229
+c632a9ed-eb98-87f0-cdb4-9e067dc5cd30,1306803463,6976159527749157297
+5ac70f34-4234-944b-0491-ecef62cfb890,1422662696,1047815936089141128
+d9b89775-7147-6579-ef81-89f8e435bf5c,2056340520,10973334418913759407
+78acaf46-ae5b-d86a-77a0-ce0865e04ff4,2264860866,13613598322713864137
+4bf75ed0-0149-0f78-097f-8ca58f00f10d,392884888,18208606496561459746
+99bd14f7-64e5-2265-ada0-4f6fd8230253,3202356245,11413637688572730117
+28d3ee3b-9c38-29a3-d618-664aaa644ff8,3245789156,4089475978218193357
+ff9de14b-2dd8-5c98-ac32-a9dcf0ba0b15,3158761145,461257059388413627
+b4e177eb-6748-6ad5-edd7-6cb55d5d4a8c,2819596182,3666137951805456530
+2270c78b-3336-4066-c5bd-6ebd49bbf147,1676026877,18134750935892883273
+e0132855-557e-8a0d-7ad8-46552537ba7b,153486281,4510459087899607641
+c23bd158-f46d-7ac5-b0f3-46f92f2041aa,732164491,17368423136751080284
+d61c86c7-7605-162b-07d5-189308bf55b9,2378381111,17295455038644024053
+14f6b9c8-4ed4-6b2e-d189-5c1f87b90503,1390419982,15883189105766813450
+3e54df7a-5c91-4c67-c4e9-4494b05ca663,1627767876,493150196277511886
+0e96e7ef-ef49-ef8a-a92d-eb76e9e25a2c,683926889,8273841899948612581
+21f12c03-436e-7721-78c7-e260283bfab0,1634042053,9190921030964683407
+cb4d1e37-f1d3-82c8-5816-0597d042eaf6,3084130576,5470352244656268285
+3b0afed8-2271-acb5-019e-bbeef9030cfd,1897995435,7232070308366736999
+6cccbc8e-9238-d2f2-37ad-d1377e397267,3486149412,14974284608257064940
+e97eb724-af08-2283-b87b-0658032c34bd,3905561014,8157501763979069883
+d67165f9-8891-9288-faf0-612623cc8707,111988968,11688257683278026759
+a6ec7eeb-b655-a12d-a0c3-8f022e2317ce,3327165201,17952722996041997307
+7e485bb9-00e0-9678-7f29-ce131339b724,2610669478,7127771059808153352
+9dc4c879-b3c4-d9f9-27fc-4d7007ad2bb0,297059798,12503044337260465405
+f54ea652-a053-8abc-e355-348b72cce45c,3739389052,17493593871200814840
+c4ed6608-9751-8a29-aed8-5165b6f5a2c7,1014978823,5675742812009985098
+5632cc64-98df-22f6-f21e-41481614eda5,428597798,6953181495443141406
+10aa80d5-6211-047d-839f-ab21173f4905,2722742137,1320212829409889809
+042f147b-2e7f-df65-64ec-d3dfee077575,1583424678,8149864851071489470
+7809f572-05d5-db37-3d76-b924f9329a0c,2868361469,9755690070213145236
+599da897-e06f-92a7-3964-1658c4f59344,1760377962,17218384102670348231
+9aedb457-4f91-442e-ae19-aa8de9fc63d3,4054554646,8365547141493370209
+4daab1d7-a18e-8208-0459-18176d7ff296,4273244646,8623750271964738885
+fe7e582c-6494-4301-d76e-db90f60071b5,2695921758,2310645530346781350
+4e88a47d-ca47-8da1-717b-db8950ff0547,3250605704,13547622454567737828
+d712a15a-8540-234b-1cdd-928f1c5fafb4,2523408673,12489111424094538965
+3aecc2e5-17a5-7c33-d4e7-af0b677b2365,1952672724,17111035420654247660
+98df4a6a-b116-2a21-9348-0eccbf44f46e,3394484098,3263357334855580607
+017a63c7-3332-4ded-f7f5-2dfb016ddb72,3481253564,10123322337035028282
+ff5b4419-b2ae-fb7e-aff2-04fb3c664526,4239370044,16360922048400194182
+6b408462-b396-6b18-3a5e-0e2ebfab8439,1567703206,2518370232900412296
+fb91df7e-3096-df44-359a-87e88c231db3,1105893432,9232955767758624362
+a62d07b7-589d-a39e-a313-d34fe6faf8d2,718754258,14920141165818914906
+78d5a40b-5511-a731-50bf-260943c9246a,1516633174,14146099405084178660
+1231bb83-24fe-aa76-6425-a0a44a15ad24,3273502895,11343389877773078518
+fbd22157-27f8-d2c8-2e83-576d6884320b,780079441,12695826339992034948
+a4aa5226-d1ec-f0f8-92e2-85ddc527cb4b,1452719645,5042228944001323548
+fa099171-07a0-a7b7-0903-a067f0cfa719,594468475,6380461695052937165
+4d68c765-0415-ddd8-89e0-66e16fa604a7,1139880107,6290612913420876161
+36c47c42-f0f4-e50c-755f-fb44a3cc2f93,189471066,9347976769018218544
+b56baf82-b378-4126-97d2-5d8d005f4b4f,1229581692,16961308161564969429
+7116395a-549c-c81b-55a2-d5b4458dc0e4,262453520,16474948982255199356
+6a50ec08-50e8-90ca-3c43-ef474965b74f,964164069,4348557505866707929
+ecfb6ed6-7c15-1df2-44e5-dc72c74ac6a4,770550010,9183580637557119281
+79bd8c24-6bdb-9eb7-a54f-13049ddd04f5,2192241789,10917316365206882334
+e6bc35e1-586e-63ec-8736-d6f6ef0b9872,2081996497,6703424487562490616
+fd548d95-4d72-4765-43a0-371522aee02f,25851503,9129395805496154876
+8704643a-21f2-03b6-9d44-04b7b5dde86f,2949714839,16732925001188558869
+88612ee4-3359-e066-7df4-c813eb5a3c29,4116331613,12959088109536817235
+c169283c-3384-e8f7-0a85-0dffedeed832,636156000,6274515400469692395
+3b83a374-3ca7-96d0-c645-7d3a50b1e54f,2177967531,15299955609231375623
+ad7fce06-aed1-d4ca-183b-b6553aa5a909,941769607,15067746994171003744
+87eeb337-af16-868c-cb48-6fa047ccc37f,4063519803,12662769279439157728
+2f119b20-98e5-1ce1-4196-168cc4540e5d,854319436,4812082490322553423
+6280bca8-3fda-adc4-b1c3-d7bc1a84fc6b,1376362565,10888262268468899509
+dd35a36e-e551-ef22-d88f-eb1494c7644c,2225421019,362105007069670637
+50fdd7b9-e722-8d5b-9732-e04ec987dec7,287764624,16030130289259408072
+e408d274-6e46-4cb0-9717-a32ce8059a45,2544249137,1454578922972791593
+a0408375-a631-3b4a-c78b-eee11951a0ea,3369734739,6891098813136380839
+6b0eca14-26eb-5e12-e216-8edbd3e19246,326944924,15420458043103448994
+35e7e68b-892e-2d27-c807-fd75a0109fb1,2690627689,6501403472660404745
+8d719e69-5950-c8b1-38d3-8b3ed751668c,543911741,8980395411545983348
+13d83df1-d672-2bc9-041f-a6fc49aba0dd,1858787531,5658871424057519043
+dfd5e1d8-cdf9-2035-f036-20e8caebb3fe,627505678,15223822107936929209
+46e2c13d-8bbb-ecd7-1b85-028ce027a4e6,1324124259,15648500766738534614
+932d741b-bddd-d121-c469-7c605a28afb9,349452254,12929529341790581121
+7c7c19da-70fd-7e1f-cb9d-e9549d1efb83,815094784,5499103874535991790
+41c5194c-c23b-dc45-bf39-86ca52a734aa,2921433365,16870205055778285629
+29aac3cb-eb4f-6f70-bf3f-86d2a235c6d5,2365765213,13620758000420118869
+7b7ffb87-22a7-2f8a-af92-c0f95abfbc3b,2505364482,15667626153486716976
+b820403b-1864-4960-cb08-394fa4fcf7a9,1855475106,8238674008751408688
+1500eb58-e2e3-05a0-4d3d-66d652c55590,3359414114,15058499038623249345
+86087c66-a95d-68a6-b031-79b1f1325cbc,2161517052,11184479989208298973
+5d940aec-dd8d-215b-d5aa-08556f5a21ce,1775557379,9606745695974602839
+9111e86f-fa44-a894-e111-9e92f2467334,2658290025,6943396725326016824
+38fc9839-a438-c012-e7d0-54724c1c2bc7,2534912729,3144751295670489315
+b0a1b761-33c7-4a40-fb8f-7687841c557d,4074737524,908900474796771431
+bcd0fd4b-744b-5fea-6994-487ae138f757,3755555104,14066861938670347945
+1eaac26a-341d-75d7-97ec-3368d8328fad,1477310664,15411457268471427140
+6692d99f-7976-90b3-f05f-76d6105ed09f,2780819798,1301809376181312106
+1495dc76-13f8-2785-e4ae-79e20ab3f053,1750510376,11067751299680231773
+7637f111-a44d-a932-869f-45dad8f97620,1154343994,2293135198248290297
+f28033e2-6684-3ddb-d32f-1ac78dec7881,455894927,97950126979116767
+a002323b-e968-05c6-838a-5c4fb1a7efe1,4055116788,13764680182044707158
+b5798e68-649a-b01d-206b-07898900b6eb,3105493083,2397624650263685007
+131bbbb2-3feb-641a-c945-b5d5e0b26750,3532871015,16048587119825596737
+c9aef18b-ef93-eac8-3aae-02a93b27faa0,4169930052,9827566338035727824
+17542fc7-f8d4-b9fe-f0e5-8a22132a5b56,2935916225,18174292483439163683
+bddfad7f-67d1-c030-873e-b8ec9e740089,2039124332,6769714927135470543
+c78b3f3e-dfc4-1c8a-88af-74a8760b8be7,1017845485,17925258295814442451
+2909beee-22b6-23d7-4c76-fbcb0332734b,1555717703,15103036786469049583
+550726fb-08e6-e501-c80d-e42a628212fe,2010173727,15488808883992084635
+0d1a5b01-2180-abe4-e2c3-2d8c74e974f3,3405732881,9113355915708842088
+2dc781fb-0e02-e29e-9898-362da44ed11e,684273754,7252557431102458003
+db7ce10b-1516-02b6-1459-7cf4506c6bbb,3014361051,12338010535833428507
+639f1f15-03d3-3649-f1ce-3e91f825ac30,596842061,13067333942231168758
+95955202-95a9-32b6-2caf-5ce5af5fc3c2,2771239346,4686535715811308115
+3105f4e0-f3bf-9d24-2ff8-72d5f43abd67,103778225,2359721404135710986
+752824eb-54b2-e692-cd98-fa104026daf7,464860669,4568924011746922732
+1506ae28-43ce-1308-aff1-996f4df6864e,2940173944,2978572448877772293
+ff33bcf0-0c9b-939f-c1a4-b8832a3ef722,481743950,14919097529399646936
+e1f58989-ea33-4ae1-d3f9-91bf67ab87e2,10967078,778833975572182517
+49973c98-4916-606a-4d1e-64d87dc5cfa0,3780279201,15971521360022224060
+c4feb20a-c1ff-1207-bd83-c60ff495ab91,1359591111,3270191509965218540
+f3feaa01-9267-d654-9293-94193315eda6,2874835602,8472949087263639608
+452965c9-d80e-299d-20e3-10f77802bf1d,3307437902,4548793552061388234
+f8fcbb7e-0c64-0366-40f7-57e4d8853d6c,3747728335,17896251795315818590
+69342b9a-169d-2221-8671-0b56f3aac49f,3196306163,13421507405126118319
+e4988088-2a0c-0640-0239-c84826fd6978,2662938453,7421052964413074653
+52dd8f73-d9e8-56fd-73b6-54aed9f723e0,1455890628,4337036627840009469
+6868d8cf-c229-bb00-2f71-698f3134c61a,2376147605,16403750099687310966
+3ad798d5-e0d8-2d2e-38a7-b673a76ac0e9,3507907940,2642252883710017900
+40e0b77c-0470-5a96-8229-c057c09317dd,949279541,14577949909365080520
+72387644-4681-de70-155f-b54ed4d8d8cc,1063525793,828271523119984541
+66fa14d6-e1b7-6db1-32e9-f5d05b7e1c2e,2424700818,1002560051469786490
+5212b18b-b298-fe70-b929-a6170fb35bfb,1801047125,18394870413698362017
+cda14fa3-8add-ddd3-e6f4-4254365f7694,1886792058,5899455995092160477
+a7f05701-876d-7ce7-faa4-f4e953808668,3932338950,5619260113031748639
+ce38b8c6-94a9-d514-6d37-24e8f5ba522c,2451346668,8858050888671002434
+955ecb55-3bba-f187-41fa-e0f0e81d492b,2705998160,3999929049932846151
+15093953-5729-ca80-f9d1-acd7a0052c60,2645697135,17186301882046293154
+07ed36b9-a5db-7760-b0a8-f500f8961600,2113857269,4606669631969255297
+a1108cb1-4265-238d-1834-4c5af1184897,3496170070,6431877821864984307
+fce0c131-a4c5-e060-530e-48955149b530,1170195759,10641940286123577788
+3c77905f-0b58-c9f1-087f-4d71de86b583,3381136826,17336256273604019609
+53b24d81-8b4f-95b9-8b4e-950febffca8f,776238915,382193601966231710
+70368e8d-ca82-3b07-f201-6909aeb40d8f,3587860930,809037175505710937
+b5cf2f29-352c-8f60-daa9-ab59f124e01f,737074707,15472515617281080466
+c00ee54f-3029-3de4-3e3c-c746490a22cf,304683326,8733753025027925491
+6df45a1a-04e2-dc32-0953-e857b57f5f0e,4133034304,8808789824148058787
+0aebfd6f-9c47-70b7-36f1-a5bfc58fde07,2275396704,3984479213167368359
+4d3c2a29-91c0-b35b-4ff4-b5876f95de5c,115085833,7601246612115893134
+54518f79-db9c-6ffa-503a-5914820ce97b,2123036731,15793112662814367925
+3f173105-2b96-454b-dd08-3e6800222af1,3594405091,6654572289234685776
+146045cd-d825-e6a8-fbea-650502fd360e,1054324229,294227439868371167
+740f2afa-ca18-f12b-fc30-190c1eed5929,3781380549,18429513987000790595
+06b70c80-88aa-08a6-8078-304b4ac26015,3783948163,10508748029936043692
+bac446c7-2720-8aa5-8ae5-fc996cae4e80,443510673,16786074819404980161
+67cadfde-165c-58e9-cb0d-5e81f82e5955,3036807457,7079043480171992067
+db73991f-1542-d2d9-50c5-d7d4cbf74c0f,3048917757,13581677939317067428
+8547d03e-dc13-73ad-53e5-26b546547582,3866145830,1800759310117295753
+df2b14a4-f476-cbbd-c67b-2650df25635d,3363340001,7615130209802681021
+ab0939a9-531f-f99b-2f10-f74da63ec370,2453002823,16605725523466731324
+87204b87-78d0-c608-478a-247c6d2439bc,743990695,11821945818731285783
+6cd9213a-fd37-0831-8089-a98aae865d1d,2164399280,3416771749793809583
+f6c58267-6cf0-40e9-4de1-18cfb32775fb,871554669,8348860578349916127
+198b74d1-79a1-9c3e-1e7b-31162bdb47c6,2381204131,5350368237893808191
+f4330e84-7246-d1fd-ea9c-6eae302d6a5e,1261321945,6675399190084312012
+f4faa21c-42fe-5f71-2677-341fb623e2ff,2961583434,14360504444382417319
+22070340-a84b-842a-64e6-087b9811d80e,3900288379,3225009650830942546
+820132eb-54a7-26ee-7a1f-105c8e04ecc3,3291751880,17891113521820279207
+338abbda-da9f-744d-0b40-2156a12182fd,435022747,14400159433975155943
+96ece0cb-d48e-3f86-1b5f-d683c382a5b7,2761182961,12073595274852677578
+52837f2b-37e0-7bce-e564-ff187558ac1a,1305189226,13424019935228663055
+fe4394f1-0c99-9313-aa10-b0f92acaa063,2611740882,2994263600238614109
+34900aa8-2200-a88c-8985-79cbc94c9536,2733770985,4772543598391352529
+a6aa59ea-f8b3-f322-2553-8f220d7a7ec9,3499670064,4057804773240599225
+125fd85d-b162-a1a8-4092-bb5d973ac2f6,4257925871,12621017289183754477
+6fd0709f-7be8-617c-0669-7b1ef1f8202b,2610134110,13584079672672203901
+4dec381a-2c0b-8c68-62ac-a818d0ee99cc,3058444527,4384094063563414388
+7de562c8-deda-72c0-14bb-335e0ada78b5,1479047941,2191797719284590353
+c7c168d5-59f5-f2c4-d3cb-db7e93b83222,1004448886,10092056741474743392
+423f621f-56d3-8a6a-446a-a64366f0515b,1309134153,4715470745487836890
+8d7cee0b-00ad-912f-62f5-7fecdf0d7c13,1385795749,10593554626292280694
+4adecfc4-55df-7f95-c8ff-a46623630776,3046279259,15110411056954649355
+64d97d47-5170-60f2-d8aa-ec0f66658e34,3709472240,8053092598060068759
+6e6eea9a-143a-a548-3717-735368f4e938,3343281755,17292141639025544709
+2b02cc81-d5dc-32ae-a70d-17a9937f81b1,3929956207,1110180784682121888
+cb93ff29-663c-be90-ae1b-04661968775b,3861321922,4639659900586182866
+f678b6e7-13e0-2adb-9c8d-4864af0f5433,3983770634,17628992313291664391
+55c834f1-09c8-b1ca-fc66-9c9d09764d3a,2060144545,15304249407754339059
+ed64954f-97b5-a92d-b78b-0a1213b165fd,2947770426,15998261778961964591
+77eb85f7-8903-f615-edb5-afe5b2dae52c,4014756566,1401019516595252875
+12ba7679-6a6f-4cd2-30cd-7238ad2bb299,3883048348,17368173112499623683
+c820ab5c-6961-b7b5-aecb-ec917c4bc27a,70839336,8465838141746021737
+125f855a-d202-69ca-bd33-6e0004a5fb25,2198347980,903230640677228343
+b7cc8913-2858-0d61-b798-7eb3c66664a5,3687771293,12354173686518980155
+2b368a0c-0229-5895-0b74-ae33b6da7089,3729542634,9448337999295124927
+f3038cc3-8b92-d371-3a6b-c57906ba01e6,2080222967,12971245876743494581
+e2e73663-fb8a-c64f-f6f2-5c3dd0d46c9c,3871598244,16317399254022293918
+0a0e037d-bed5-94e3-c60c-ea9759f7b99c,2286393081,10116124749290410731
+0499f11d-c26a-85bd-f4e7-dbdcc422cd96,3438547509,10223268174483533424
+0f31eaaf-3df1-0315-24f1-32158897cf07,4014101907,4305277525135173463
+b187c0ad-1e43-55f1-f0ed-d8b3726a3656,4246880768,14636925811542514833
+ff6ab26d-cc7a-168e-6e61-9a9d4f2ff7a9,3495576223,3852999832418662992
+69da8849-7868-e4f4-67b6-cb682378e098,722720454,6870878696114598852
+b663e6f9-0174-2852-8867-7a6dd2ed76d9,1686959679,205525568613563120
+d538cb89-6b52-365d-1e27-4dc6df772642,1197502272,8469127025286167420
+c4abce93-4056-9f19-1a65-e67a2c8db105,1468614358,18032735143931133605
+ccf98a00-4112-e501-99ba-1adb1f5a0b78,2957176751,13363583695715889067
+2f6de567-e05a-2406-5f98-3cf6f030a8bf,1710630645,11413929095132654757
+d6add40c-d787-1c5d-8f61-028d50368d27,2385541601,16862523376686657615
+ef2bc43b-ae80-c170-4652-ed0325c0cf9e,2109771088,17195108799969238781
+7a107779-810a-4c9a-659d-bfcb13a89593,2378467073,11673667070398580421
+c3539bff-c365-c633-4f92-fb03530a640f,2664609812,12308648065472096325
+179cf00c-c431-a3b2-9674-dadddfd069f7,2906182021,12307840718489856532
+8962e50d-4c5f-222b-427e-0bb0933f5f9a,1723394465,16168639056885349219
+69ee1dc1-48c2-7770-5f5a-62570067a0f4,2259284097,14524837201599508269
+1efc15e9-3c69-d209-a6a0-d19f74e6c087,2969845520,15608785238209962367
+cf186f2c-4aff-f9a1-c5bf-b2703cda838a,1361100531,16124741875620444574
+c2ebb213-aa64-9c36-848a-f142d27250dc,742081458,10605513014226288368
+abfce646-b6e3-e6f6-1a0b-6b0f2bcc1ea1,1386610523,2744423914528782689
+2bc3e0cd-e0d1-5f89-ef75-f924aa32d39e,1877994652,13621703775084794019
+89294950-9f12-8742-aed8-1e66a6dfcc2e,2699818871,8131745663169207266
+6a1cf1a2-595e-e4d7-0a07-8080362527a3,4068188498,15113612067174899863
+2b54a491-3263-7f5f-9d79-670d7b00ea1f,2723980638,727833252521859379
+f83de06e-9273-f9f4-a133-4e243f66630d,4110844622,7902532695172961787
+86578713-592e-a38d-fdf2-1383e9c1c32f,3158910153,10787656482148342856
+764bf9e4-4e2d-9731-19d4-7816fbd07e25,2887649428,15324523938075619135
+86da8e6a-4ebd-04cd-33c0-e0eb2e7c4c10,191913523,9330056452207717303
+7c2bc345-a924-4017-663d-dd7929b4549b,4015519703,302868881502778536
+df2931c5-9532-6a13-e783-40db4562c36a,3279908491,14274976755623776853
+c506eefd-25d7-2ea6-bec6-5dbaef70b069,3143526539,15018311644988708349
+09351a36-1c50-5f7f-e207-f455ea73ee77,948039266,14701545435883993896
+ea6ec793-d646-8464-5761-ac965b74155c,3231150374,12898908832592694522
+b7a89a0b-7e26-5587-87cc-728c326a03b7,2890913829,10085338970190763581
+7cf999ba-46a3-9e65-bbc1-7b3cb0685d9e,3469185115,10750704124286612930
+78d731b5-e140-5a98-b262-7d0632b66d3e,3886032544,6464686774375722490
+dbf2a53f-f421-becc-afff-5bc31a76d687,698055478,15486181103796276663
+521a57d1-fd6d-b368-37c4-2c9389f7b114,3664192530,7257170028925221134
+924c8a79-185e-65e9-f9ce-8ff16da6cbb9,1353296125,18092888391591243612
+e0bc68a6-f835-392f-e657-d1f913f5203f,924965446,7262301528048376787
+b8d7c23b-9650-854b-f2cb-9aedaecdadf4,2482991481,14810707730979493098
+766e76f5-9ae5-16cd-3156-ca7eafdaa159,2580186345,5019624285676947317
+9617f229-1d6d-7d7b-a498-d22c013bdaa1,3075914107,5716983640398734391
+e479769c-84e4-9240-00ae-70b018a5ff53,1320888985,9424170916840901815
+e364ed46-c3ad-7efb-91db-35fadf47d0fb,678398173,18023683483392375464
+eaac5d93-7a32-07c6-a7e0-9eceb83ded52,1189728929,3212569292992728036
+e6958810-0d49-f20f-0b3d-9992a2df335d,2632953261,6072132082879445648
+12763615-0aec-1dbf-1e5a-7af6fd4bc602,3697457475,15493914550993461412
+b994e6cd-cd76-5294-653b-5e8138b3bdec,3399741406,14164943135699528182
+20b8e681-1488-bccc-7dfa-86cc3d0d7f26,363222551,13540958522251271972
+96f69a45-4969-6c53-f833-13d5f2516120,1884759667,15915803327467322252
+8cac2f94-c261-f6d3-31c8-b7ad41420c77,4172292320,2191204040093898637
+8fae31f8-916b-94f0-95a6-68109cea2bb7,3013292590,527084017322775067
+7a3d42ea-0057-cff8-45fe-506e89e46f88,2365724234,18415336048012588070
+bca11ce9-91b7-1e5b-127d-a3805f04d7ae,968721550,6777716437695186843
+4292fb39-f69f-f095-d574-c623307e2a36,1930252621,8710095318404263892
+33ac097f-e4e3-f619-b079-76474866a7c8,1806348170,2366259413160830942
+98ce6c4b-7890-e976-c851-bf48bea02f26,2504312217,9427055107630875705
+5ad4afb0-c632-b527-ae0d-4c0e49c2d64b,4136171813,8391414489058027021
+2d5fdde4-8375-30cc-ad0b-9c5c2c65a5ee,1869572089,6604884327910127518
+e02dc026-1c0d-ec70-996e-3a41f37e3b20,3550827934,14577839986165931300
+153de9ad-4ece-158c-5f3a-f09470805357,2766932086,17779770081619418881
+15a47420-1830-55b4-7069-8ab7ead3606a,406861485,13728759052328641937
+06783914-4e45-513a-db9b-d3552c892262,2552670219,1103277124034126637
+e45070ca-d224-8f67-ed1e-83fb82580150,910122163,11839531095829118002
+afeefdda-81d7-86bd-ecb7-d6ce5928ad83,3397369516,9334318264283184564
+b0614af5-6a9e-aa13-7367-bcd1ec5dbf97,624591454,450928875207908751
+660570a6-9f04-2374-3193-2d2bf9890a29,175650697,18152416900111859287
+05dbbbb8-f878-5e9a-a3bd-f059e3928176,3161050623,15745608972931928426
+1cab0054-6839-c564-ccba-a093e17a43af,2119339631,4219119894951365795
+4df0bc58-d8d5-e311-2571-d853ccdd55eb,435126495,10095193985811503720
+7aeca9fe-4648-a90b-0366-5e2c3330a106,3816719137,348793594704030737
+6a8a7cd7-9b52-051a-352e-b8f65736b8dc,401420868,14379178096262453932
+61e89207-e916-14c4-4d1d-306266095a63,3968425723,11436813067950865064
+ef0e3b66-c8b4-094b-3b45-b4b1c80052d2,1553676552,13881579084642755306
+782068ea-3d7d-8401-cc21-c646c9b027b5,836534493,11440731982620668965
+464bcede-105b-b98f-8c17-3760106438ea,1130428106,3318906306113913988
+1df121f8-431c-b55e-5ea5-b263125a97a1,861106084,10340821371705794887
+411e4173-9462-82c1-b99e-e08d9e5db578,2366006003,12572626084367313328
+6b6840c4-8cf4-993e-4efe-c355224c675a,3543766,2052837126030358405
+492edd89-2b2d-a9bd-2965-98c1891f4b57,417664349,1212248546609231000
+73719aeb-3327-518e-a36e-0199174f9a4d,1536349663,14689484601972607503
+c0cf8cbe-0269-2b03-2a96-bfddb24deffd,3138170124,3299049293341846466
+b663ad51-106a-517a-4d0c-bec6b3d34768,922066907,3884382872917465544
+bd2ee3ed-00cb-c6f2-e04e-4d9e85e1366f,880241235,14246352879485147979
+62b46c45-1d2c-db82-d9fa-aa02ce289b85,3666413091,7035946794098390932
+9b0a7629-d7f5-7585-1b15-0e2cec8e7ad9,1307684415,17702378314834631519
+0c2b3eef-123b-3dfa-5b24-03acb58a88f5,3349778966,6555030973881279534
+435a3287-55e6-c55c-04bc-f7ff1c97548d,2858231599,16975317958995514900
+9a984a34-9916-dabf-0d85-f1232f337047,225405339,5763682904605697222
+68793e93-861a-d361-7443-4d9dc87d2178,4255504325,1063113395103137650
+22e3d625-fc4d-d4ca-6962-76773aec40f6,1869470241,4935586182197347768
+0b672be8-a408-027f-9c08-8ad8d5e91c04,1090949892,15399608470693791911
+03ede6b6-7584-181f-362e-205a29aa7e28,1603304422,2276848704849968525
+5d5349c5-6a04-fd41-da5f-99316ce52659,2652299011,15127041669330076175
+e0f4fb05-b692-a2c4-55c8-54e0d53d9bf5,2633306500,4535592598941272900
+9ce75ad8-6cd1-acc4-f2ca-22b51e8325c2,3914254630,508420640298824093
+3cf59e65-c862-d7a9-9b67-bec539439e99,639000662,14360852010467538537
+8996ed08-d1ff-ef0b-246a-734a715333fe,4133235844,15545879021758166105
+727d0265-150d-1267-76d2-a77565ad81fc,3041762498,5618666544095826174
+562fd558-7eeb-7b36-2738-79302264ec4b,3337001127,14202874892326752925
+904438f8-cf68-d1d0-75e2-273791f776ab,1733755304,16649024934915549852
+a506a010-5bb6-fb75-1ba0-1727db2df4fa,878548649,8665473641240162632
+452937fb-fe22-6871-e02b-1c5b9eca54b3,712491928,15069117187408643936
+4fa2a544-5bbb-3413-391e-fba760fed8d9,1741156755,10431842041695422655
+61a35a8d-2680-d58e-a595-6596705db1a2,4007689160,4902386661776624725
+6dda5381-13dc-186b-5d0b-571cbe9a07bd,2427315684,17938024229662130876
+1da32590-0845-2da6-f2ff-36f72bd33d99,3915437470,6183694472342911427
+1d7e1f9c-a661-155c-ff75-7c5a9e2f3f6f,398140390,614826183117796519
+9241c6cb-39cd-ce22-fada-be8033239044,464132475,6066809064773143511
+70a43ff6-c034-3521-7077-366dcc609972,1460550242,11629219009704932692
+f08e9730-b882-37f7-5739-618adecd1639,3054757672,13775629586637334799
+82f6645f-ac74-00e3-c802-5e2135b2158d,1358000306,14726679388346792341
+4342a105-b24c-3c28-abd5-dfb3d357529d,1006171240,9229275709655401711
+b6018f80-12a6-dbec-6928-a4c68e449e6a,1109177140,3278844069427569753
+6f05def0-6e3f-21a4-91da-96f31c27e4cb,1027773758,9309378279279834323
+f8a69220-3b11-47b6-88e5-a5c04be532e4,2808937903,4239413724084223585
+437ec982-878e-db9c-b91b-ed12913e54cb,3851711449,1493083825933975909
+4bd53762-5674-3144-e39f-3eb4865c4936,1354898900,10226429365727595381
+35adefa0-623a-6a00-ca4a-030d7e42833d,1073311452,15207746071610110850
+03436371-ab78-7ba4-df58-022f8bdb7504,1862900738,10723791395460924011
+dd7e99be-2770-720f-c11e-3cc1048fbe62,112479865,10665912166951136113
+1eae5c3e-d32f-fc9d-2a87-5b9c12424377,1134814352,3895247917092047308
+052506ae-5518-3368-acc4-9006e432aeda,3394755992,15564619664723951296
+452d9229-d2b5-c98d-0d41-3d23d91168f7,3150299759,10649861250859086854
+733e766a-5eca-7c02-6fc7-896c666409a1,1534147175,11611300782617916582
+75f3cf75-4f9c-6518-0046-f932f5a8ffd1,1094072933,18113420796171460127
+224fb0a9-5a99-a1e8-8cc6-47b510f21a9b,1451869863,1728937397641333064
+7d97f880-9235-1c10-e9b3-960fbb2c13f3,3738839619,3871344257283004082
+0d20e990-1aac-e611-f12e-4adddf9a579f,29992730,16000781006333049191
+1a4333b5-c4ac-62a5-e5bb-0de08241e26e,2640188337,403685336589041677
+1c626c81-79f9-049d-5c60-b90f3b2ee5ac,3832391974,13246609109367376346
+69f5ba58-bf2d-5cd8-6fd6-bf2728f8c56d,908720256,14345850559504804206
+86e0a7cd-0c5c-ab51-d89e-c2b7ed57e924,2121661604,11055297215228254098
+7d17df66-670a-3db3-c4cc-1837f1752fda,2149102140,9331344912679878546
+98e08b76-cccc-610b-74ec-a00c358274fd,2099686397,14260394018073362484
+203a2178-ae7b-a49f-4493-67cb78eaf796,533318347,6402575007039577080
+d13a5765-a765-0785-0a62-5a68e7149457,1715596660,15041465953424075406
+0bffefa3-22c7-e2c6-393a-1e2c21ff062e,2905166762,498003795908942175
+642f0d5a-247b-39db-868f-998d5ee59d2b,2824055907,13323025252648923545
+19bfc1d8-be2b-32be-1cac-733b90c91b61,3173593369,13514394972611081614
+a7a6f91c-8d5b-7baf-9fde-2c24e827bca5,3305326535,6992734978731734713
+fd718747-b1b2-2f8c-da05-1b7d055450c0,2961086631,12644712574010010126
+53a9a980-a941-51ef-8332-65078ba93237,438329831,11507940670024489202
+ffab99c7-05b4-e10c-1d0a-eca13079c576,1731939300,1907558054057142877
+295fc1df-b450-7706-81c4-79a2d09d6a93,3003851099,837923913117653852
+8358b267-f157-9166-ddf1-3fbdde176b42,104645295,16752591839615140337
+de1ba6ef-7fb8-d817-f760-b38181de152e,3869071560,14031512845169407166
+02eb90c9-e5af-784d-f3a5-70469dc2e35c,3706545856,5351390304171735059
+ef30daff-763b-9086-2bad-0d15513f3126,3957372010,362020401758803782
+9a8aac47-3918-3970-9cf6-6f04b8acbd52,3541593056,632637421221177047
+d6cd0930-aec9-9d6d-e814-8dfa5d5887d6,18576614,4373670620861325273
+f0ae937e-2cf5-bb38-4e22-6b636e2702d5,902837804,15697117045394342273
+a8911717-8489-d014-fea8-fa0a036482b2,1879813326,6809086893688511891
+998df4a7-7c26-7334-02b2-530429ebdec2,2755683775,9831170203223264926
+39868614-870f-6afa-ffdf-bc144b8927df,2154113485,17402499902829968693
+8f456289-0e07-835b-1cb1-4d2907ad0aba,4161956247,714892331783371312
+ee8bef8c-f14b-6344-6082-3d8d1888ddbe,2608976412,10828114696554986877
+1160bdae-7bf6-7826-abce-f4d9ee3cae74,688774423,575600703496843897
+7ac71727-3b37-89a1-e095-8248b87b572d,3308985656,6632343547368961005
+e3ad3f50-e77f-0165-48ce-9602d19d3ff2,2903631270,15002599450952503551
+f5471f35-3576-98b6-3991-6362226d9a3a,2372579760,3868906855675953371
+1e78993d-0581-de8a-41a6-369b6488249b,225026948,11941681281089114684
+aade26e1-2a60-f064-e4f0-e3e2f9e23c0a,4015646928,17135499112705837084
+5c14b269-aea8-e498-916f-b320520b4b66,1403346697,4557147352677695571
+8684da81-b62c-a743-e3a6-6d4a0d27eb2b,3976680563,16554071310766781885
+6b0ed80d-8286-81b0-781c-82253f900d09,4090144821,13705468731939775178
+a1b18c9e-892c-55ad-6149-e86a56df5fc7,615883169,12507576897795113588
+ec336c23-40de-8a28-770a-9ece8273c56f,3912513866,1431736090965952501
+a927cbed-a453-29b1-5986-c9c2cca9cec2,2069803495,10842518768379355915
+23853ba0-7e56-845d-96c3-9bc2b0a25c17,738101165,17566693235291632968
+4dca77ef-c25d-7b25-ce5b-22f6455fe215,1276033030,2734383291227499328
+b8bf1953-7ba4-9ab5-4b35-e58c58c8efbd,385529441,10188006794328660747
+22ea6b28-7fc9-3461-0904-692218f06910,3209012845,10434121520299491952
+fe6a9d46-1b40-3400-2c24-9c708a5063a5,1092137574,7340708796499862744
+4964590a-a4ff-a391-584c-8f632825e380,2675528919,768072356167775091
+2608062b-c070-d57c-4145-8e4d3bcd4a35,549254235,13723985229010881777
+23792696-cba2-394d-d736-7e57180eb36b,4000301405,13633587874152679568
+68e421be-1ba0-8490-1bc4-39685ffd7119,3077831187,6705101669706435935
+49604bdb-834e-7551-e1c3-0badf0090746,2033581234,15147957028611637204
+5ac01709-0cd0-a094-6fd7-ca91b34e181b,2374681074,3889621542516103168
+b4bb7eb0-a967-c9ac-2228-2632f7d818de,887940180,18198751928996977572
+dc7412be-78ae-b537-ac28-25fe7ab3fa8c,92127369,15176439124279809938
+92f9dff5-9b2f-06bd-af1e-98d5b62674e9,3527558733,7174744809389507539
+bae89bb0-bc5e-e961-3022-7e42e67cfd86,1110098777,13222742210025579716
+07cc53df-aee9-8fe4-75ae-0b46517f7ea6,1140771436,10264297061255608830
+e375d4e7-d0e8-abd9-2b1e-621192ca6654,3419145477,2915108522917185134
+03bb396b-aed3-8120-8970-02cc1e0df4b7,1935666896,1891094259190545196
+de676404-de3a-e6b8-b152-efe878a1c9de,226285832,8023350215851229089
+30bd3969-bef2-fcd3-4fd3-b17f2e256eff,551198547,14424548263420773623
+0758f3ea-1efc-b85d-bbea-006a444e2b38,83357429,2466449467542042578
+d50149ff-00c3-573b-d083-984ed7884b43,3609694924,8829747293859340557
+e7a5dc8d-62b7-d005-a721-279fb01c1031,2666119945,15207059113037786572
+20608e57-b3ea-bb05-a23c-d9959982c77e,1781519282,7318012737796991280
+9e575509-094c-f135-8711-f0d345489a6b,1338111357,5261289100416889437
+3eb98791-3754-63a5-df28-6cc82faf667d,2568140048,193948494090736105
+3dc4feae-0a8c-7660-e60f-d717c04833ec,138620147,16972390904376858322
+6301576a-4192-640a-b427-181d8a9a66af,1772243477,14915119997277563276
+98ecbbdd-5f1e-e287-7e51-fca8eef202e9,3140924672,11770852505801391814
+12d5b298-6db6-fb84-aacf-8c719655ff86,1111753155,10776128048255643501
+58e10bee-4684-5a56-d8f0-90fd67e1ee0a,4117869545,17192900617528957794
+c8cdb006-1a18-1091-73b7-35f6a7f5a691,21163533,11950492185329793429
+fa40f004-8b81-e0f5-0d09-05d5149b5ecb,2063005445,13569132997001735290
+c758c922-fd8b-3870-cbd5-688e13e28bab,4262251296,10659546322776910624
+92065fe4-3364-db5f-6ddc-3cc310a643e3,2760930103,9495912246522458082
+5980ef09-bb6c-8c6d-cc14-80a26557dc70,3390615952,16282697283553697080
+34493f60-a29f-a58a-e842-4f1737f63523,3579605446,1556155339046172605
+35e4c2af-6a67-864f-e902-9fbd303186d6,819618880,8440969968476273295
+0343764b-89d9-a907-e1b8-7d3f0699aeac,3937993359,8116947176204279608
+ee0ba53f-7e71-82b3-3c86-99847d1034d9,671427265,6578910328290167532
+3051d070-e738-d1f0-d76d-cffb74fa491a,1604588744,13510768489959130412
+01fd8964-0f84-7cb7-2561-42f681af85b9,1836777327,18393364379977960655
+c5938524-eda2-a67a-f012-027475012a52,248527110,2523114556421526407
+ef9ef548-6098-878b-430a-8a887c910860,220693032,16679946949834232296
+d2c0a1d9-3a52-317e-78a0-b55f1b8b10ed,2198171976,13510529347905457170
+0794ac1e-95d3-9759-23fb-ae6179afe32e,3808086412,8607771703872904876
+cefef3ec-ca6e-c2af-7264-d078affc6484,2192265028,5160956368099829080
+0672cb10-6759-44ec-94b1-09883439613b,182301092,919752990024551187
+ac86b5ba-7622-d433-f601-81af0cf4198a,2023710899,11565962136482622712
+4fde4d4d-18ec-0793-2678-a174f6f616ec,1783108336,9390739371634952840
+845df062-8717-ec90-4e97-4759382a91eb,3296213929,14220659079068691887
+2ab5292e-0fa2-4001-a28f-da8b80277d94,1047925307,4732675000654467664
+74141377-da3d-c6ae-9426-5f668681a800,1004554508,4435914345511832295
+34fc5f25-126e-6ec4-2349-f1161c95ebd7,3815814596,5937907939694331677
+a8e6ef21-f4ef-fa11-14b6-ebfa946d7c66,3864803276,1567119021271500023
+02b49337-515d-1610-b18f-c0e71f33337c,660503923,204778495983150040
+d79f86df-85a2-0ac2-2f71-d3a6491151e7,2004345149,9038392427368391344
+c44b5a9a-09ef-61d4-dcec-6c196cd4a17b,2055949032,6100021732798866079
+f9542163-410e-6e50-6cc4-8774191190f3,611429861,13569965165591446260
+d3fb47cc-b838-5afa-d4fc-033305d6034d,2618787180,215765162029932239
+0141692f-e53c-6e12-4497-6fd963ac8ee4,3114707865,17688077403678951795
+ec0fe697-b197-3b52-1931-ea17a586e9ad,1435070842,2615643990473738150
+c08e4e73-a3b6-2741-9470-7f66eb2e56c5,2120950126,8673072509763551119
+58d60381-6773-4860-ec37-08f0c48e7e13,1098696773,13728131300918879970
+0c726d2b-0cab-2da8-4022-f37487b7de74,1215059468,15787356095931120163
+214277f2-1984-8935-cb27-8eeb1b78df41,1867289930,6817086271987226614
+68a88c9d-0a68-7084-e97c-470e1c793cfa,24316088,756615349938166560
+031e2534-2ffc-ff02-4c8e-dafa150bb390,2171391138,4941091266401989520
+a8479b94-9cbc-4d65-b38f-dc5a621c0442,1443198704,6846002205938301575
+cc19cdca-9265-db24-5c5f-515335fa1aa8,3557721876,10849530090682855783
+c6a49296-5a78-28e0-bda1-23e7fd42889f,760247172,9294062210414487312
+dd594a5f-3d5c-3626-1a4a-d9498c1b103e,320022515,7809222102821072672
+7eca329d-7d74-50ee-c951-b1eb6cb21fd7,379374020,6364302582750471262
+37a72bcf-c790-085a-d798-ecba159a5612,3679996607,9515676702450725627
+bddd507c-b03e-28fc-d5bf-e818d53a35de,1181593825,4222364834644493391
+903919b4-4b2e-5e5d-0851-8f9a508f0cdb,2549803001,5184082623428175018
+603a75d0-db97-273b-2ea5-3ea08e366d99,3366623676,14804150760007509324
+0980ecd8-c521-3f44-7760-e64d86a4b69a,819757668,6836453383762109446
+1ed66a8e-c917-9c33-a8db-fcaf919e5638,2183147162,4213961552689627290
+7d3eb330-8a14-b113-da9b-72bfd076353e,2210052386,12811209937648241347
+46eb11b6-8e8e-d23d-8a49-12a5c45653e7,998769533,12401495969564602474
+86c13397-6444-a782-fe0f-139483a776bd,2201006033,15455708074653538731
+11d6c069-7e77-50f1-0559-c52d50eb492a,1940953932,8408783168704291864
+da076817-6297-cfcf-f60b-e62835b4bbc2,2239927848,1459727361784240773
+bbb0ee82-d4f2-c3d0-7d45-3bb41179063f,3771248387,12993007918492548905
+3ba78344-776a-9da6-b2ae-1583857d6876,3218631517,3082689174175311641
+65c79031-9330-854c-d462-dcde5e134fee,214824995,4106968178629108594
+8ef47abb-b84c-84e3-0ff3-6bf91dc4a3c1,276776776,3140049260171005338
+1380c6d2-0e92-60c8-f25c-4020fc3cadc3,469224487,18164069398773178338
+489d17d5-d040-2401-05df-42918de0ba3b,2383896323,14419568227415164089
+df5c6135-d95e-799c-7c01-b612dccbadd2,2358892880,4728024430338805995
+59b6f1e4-b1f3-0313-ff48-db751670b5a8,1022387229,15386908960676604366
+c1a5122b-8793-3a31-431b-e9106172c1fb,3452061562,16842891767322753044
+69963234-4527-8322-ef0f-07d19b8662b5,2310706284,2663478013596053578
+6b8ed0ed-dd68-21cb-2ce6-1122c938e615,481526469,18392432300120471517
+39e9bbf1-d61f-d044-03cc-69f6e73be3c5,2063667223,12010836241439055413
+b643b596-5406-3830-d42f-61c560ac29a4,1691115382,2126965401339313778
+c64bca5d-072f-4795-f809-833865212c0d,2094569586,665097447482587569
+50d79671-0bee-2fc3-d015-6f08762a8b03,3077821347,8840117301344843817
+cfe97872-7232-0121-f2ea-4a866dd2129b,3190125360,13930620876749518006
+251a97da-198f-dd4d-e106-95245b0c9c08,2154035114,12267384172362450655
+533b83c4-539f-6edc-a314-9be1ad2db82e,3804074306,12483452903589131714
+42af8fb3-251c-942d-baf5-62758531bdf4,1315646406,9059064976718986340
+fbb103db-aa18-681a-227d-af565454a2ba,31686536,1530118726337037288
+6998f4fc-810a-4329-953e-f840d2e8edd5,1192605184,8110691309363876005
+cd969467-514d-fe70-81ca-d373df02de79,2066003780,2054717289789196718
+379561ac-8596-c5a7-5999-bd0743e956f0,1034954455,2525115763809393189
+9d392120-55e4-b6c6-6337-3ecebb9d61d6,3711700324,11183450077606885354
+0d187c6e-f2fa-012f-7a36-6a1dee6c950e,312821335,4659214080146202150
+4f11fa6b-a67d-3baa-24d4-ec4c743dfea2,1092165573,9062915736612417815
+5c8d0036-3d63-bcd3-e138-4c82bd0ea7ef,1226302862,8145537305109384996
+a8cdd91b-a0ef-6fad-c4f1-6361d1275e6d,2101495018,15614908557924510701
+1f9ee5f5-eace-2eb5-5e14-b2ab64a88be9,3225422139,9357093860336848622
+803124b4-b253-ebc6-8e15-2d57f2a85540,2046747561,9009678600004626095
+ea0fbe20-1347-80f6-f70e-cbb84d56a26d,73255845,8022535716593659667
+5fb45a50-f030-30ab-32ae-4e0cab3bcb16,787305088,5314619436420982271
+d92e716c-8f72-ce35-aeaa-5386d093a964,1804091677,5744041008273992128
+826607af-d635-883a-b1d4-439d2b098905,1545197306,10915379059634447833
+34767f04-002c-7689-d943-c175f4f41fad,874479431,2913238897345976972
+535f591a-5879-1146-6f4e-6afc4b3ed0e6,1906962607,550410934549841556
+b5f30b06-be97-a516-b2e3-f83e54204c3c,13293542,5973047743260164705
+a9ea1871-822b-310b-4760-9cc2aac77587,3436259128,15601848073777825693
+b053e1a6-2167-db75-3734-0a7ecd0513fb,4236436636,601378933256404029
+6e3e509b-8ea8-c375-bea9-73dbae80f63d,942334603,7256498061101142636
+17e834a0-5320-6a95-e838-73da9ca6679d,1434886581,11600483366707059751
+1e3e2d4b-84b6-79e0-a8f7-ef068543b8e8,2342784948,4490544655154113311
+e45abeca-45b6-7e59-8242-be5cfe4fb543,1225200884,453179695570315562
+ded5b372-a442-1fe4-568d-1dc7491f8153,1398184698,13723376822207953473
+8403a30e-9e22-3dfa-69b1-00a086dbc9b0,3346596503,7740455172181233144
+b5a5b4f4-fa75-f26d-cd3e-eca42cd9df6c,2455305559,7422809863479014563
+40fc1875-e8bf-0ec3-26f2-79f7ff759234,3498340946,8959058665950743899
+3b913358-6a24-5b32-ce89-c55aca110e27,3283097868,401793696313392289
+2552ad8e-3d49-d38c-c243-a6a9d40cfcdd,3639860109,9612529663821624128
+2ccf026d-aad5-b05c-96e1-c8c18b3ab88c,2368404386,14256614772135587349
+ee858aef-c766-3f86-6762-6dde7def71d3,3214052649,913383825469163359
+a7dc805b-55c2-81d9-f67b-b503f98caa68,4082201402,7730327318544249672
+d68ad95c-1de4-4325-e22e-18832e317f2e,1224358546,5145829125838614600
+3c3b7409-47d3-77bc-b920-cd26badb58f3,2811945251,17164908826617719114
+2a86e52d-8c5e-40e3-38b4-4235b41334a9,463378250,10063270607214420589
+b9acdeef-bdc6-ee7b-4041-2bdcf1bcfb54,46166382,11077244951428853212
+8dc08f89-f0d0-592a-c27a-4ae13ac20be2,445194384,4971232363153062347
+571b4ace-5f62-892f-dd7b-8ccbd6084dbd,1815685394,7753830599562250206
+52a31057-6ad2-8b28-c6ae-a153e1797970,1322660145,17430585919923178375
+a9606836-0888-bdc3-930f-81f577181338,1288345897,3170746438722835958
+54f8df39-dee3-4a41-95f8-d1239635c5bc,63600675,18191223054162868027
+59a64620-c086-c2c9-120b-b4bb96399780,4064867323,2746086385936525070
+49a6ae97-7bb3-46ee-04c7-436f94023ae9,1009655349,3890282349209582481
+a623caeb-1a3a-6960-9f3b-b1cf418ed718,542831051,5523769264655923364
+b66cd661-1d74-9d4a-f1a4-97523d33f00f,1770052944,10562156183858808527
+58650487-56db-da87-f6e7-4569cfa754c5,1195665637,18281588946287638871
+e3f31cf5-f386-2d75-4948-25127f331ece,3959366469,13548530145330416437
+e0db5564-4787-7b7a-43c5-edb7427f26ce,205187468,7587544590541066949
+5c4607df-38b3-8baf-87d9-a971e56b885c,3670187490,16224718804011765491
+6ca4cc5f-4e21-5109-7e29-0c6a349e16d9,1770790934,13215987406396745104
+38662376-2658-924c-d3eb-e9c1751a047a,834679880,1556463968915667709
+7651c179-6c3a-5f88-00eb-47319393b6b1,4140779276,17812118579070077887
+a6eb6acc-c8d9-bd87-c0d0-331946d0e77e,48978600,6650234571560122752
+f24b557e-8390-5b15-ccc9-f94021320950,2770384945,11530661327387421905
+8e840091-d6a5-5dd9-33f2-f9b7a7a12ea8,737729405,5539361335990520422
+e81b4877-d1bf-f7fd-a20e-5b73c956b5bc,3490431578,16592745297687061596
+36fa5b25-d425-2f97-a6a0-4a7ee6bbe14a,4026146873,4269356387203902617
+17334de5-b7c9-d00a-b105-96e4dcdcc129,1884901539,7359522009119014315
+b4aedaf2-e478-c509-65d3-e299b30d9b50,4062424620,1074987934938521755
+ce52e984-a7fb-e981-9c29-b15601c36857,3207132573,15493906617406684887
+11cd7d60-1517-b5db-a9ca-0ad0988aa29a,3391189504,4121695787284915828
+1b8fe1fe-36ca-0d1a-8686-235811b24fe4,1817092534,1191309353247082700
+2b618963-4c9a-cfdf-abcf-cebf655980cc,2476976235,6063487721408333610
+ea069ce8-7a81-3138-ce6d-472ecadec415,3073893070,10016505475709776757
+6001a213-f3be-4d66-a159-d0ff19c342df,2681284325,7704790094431340492
+a3572a58-2ca1-5b1d-49a7-ac06f7fbdebe,4184095007,2716640391939870360
+1ebbe320-2bae-7a30-5712-1ba217dfbfa6,1491281533,9921650422496238790
+faf60b2d-b6dc-97ae-4be9-a80edea3888f,4250890954,10002100524033473573
+f43d72d6-310d-aafd-710e-d9f8d81aa015,1921271098,14587933472732962460
+fa6f0043-9972-4dd9-87c1-77e1c7f2e167,7991905,15873747858469265395
+b2581d13-23fe-255a-0606-8c4fbb707000,3300227596,11063027336685563771
+71527c7e-798b-c19c-1186-8e7521264151,1413951385,4169191967889747103
+486f26f7-bc8a-0bc4-cc7c-af433ae3482c,995864854,6735368901231628380
+d8418304-b894-f64b-0cc9-c11f864abe55,4039001748,16961306019056264501
+674eb7ec-102e-5632-d0e6-72bf1506af98,735089802,9340834660231148050
+fb13456c-3fe5-4eac-9699-b06c63f7cd82,824498108,14120734068045585464
+5d9857ca-22b6-8606-d926-96baf9aaf60e,3504392443,1425136104565362319
+d2a58d65-d029-f453-2d4c-017b41ac28d9,1763652008,8134028824094667884
+a89140e4-9a37-6824-2382-606fab17e89b,2716741633,7024290478323441434
+dd1c3a6c-daa2-53c5-ab3c-a1c2b78c22b2,2864394763,6176017689245564924
+fd187052-ca1c-24cb-aac2-26f98501d3b8,3012444327,3517779324894483030
+16a7986e-da6c-4260-f6d6-8c0b74a11b54,1465963917,17240657990221295441
+1b927abc-7630-6b68-e829-6963972034f3,391774386,14458959783317377125
+17947aa3-570f-cb13-b16e-34a7d4eccd9a,3491659011,18087319884277584102
+dcebe92b-f3b8-26a8-2cbe-babc5b709b49,985145365,3216117475291834202
+28d159e4-5b4e-a329-ec4b-fe7524e29052,674830397,15938350386143220968
+200e455f-2844-4093-3045-7465840b1e57,1949782727,15292348294758274147
+8c9993a1-5af0-9830-047b-3962f21fbeee,1459541837,9199344100077656572
+e662f110-915d-ae2e-1798-92dd5fc96933,311273077,3391050458695829783
+843f3c3e-2278-0c55-a69b-aa31326349ac,1605122014,11647088439353388544
+1c5b6e46-8142-69ed-f868-2f387626f7f9,2907853430,1541276877739778773
+d11ba31a-4960-cb4a-f0d5-6df10b644bf4,664197162,4002507099431400669
+2626c957-9704-b99d-f95b-27fe04f44dd7,841452775,16256796655819862606
+dd94668d-89c6-9641-a38c-4d34b71ab416,3955830372,16654658948922533898
+1e66ad84-28a3-5b14-f1b4-e9a760848c71,2257882506,783341884917832528
+69c18b12-5dee-e5aa-eabe-c1bd5a60c9db,3725996043,10514191331990146918
+af428ac5-82a3-0858-3830-785f6d1dc329,2794302434,3861018310160716967
+9ae07bdc-d47e-2a7e-7140-ab24490e7f66,2051026901,17920296263840657120
+be5edf9d-d736-a877-62e9-82a4bc9d9d96,1091458761,2284689001237763829
+a4b070e6-080a-a16f-9376-69526ae8e36d,4034787795,8901957374763511109
+fff307aa-67c7-5f91-5602-cb0e2c0a9cc9,2155713069,17354267818859977582
+156edb5d-ccd6-4842-0c65-f43dea1bf318,373580480,17245314719188752544
+e77988db-3943-9a4c-85d6-42dac36027ac,2997557889,3880392681601575872
+b628dffa-9d51-97db-2c78-80de03dcd192,54994220,10685824951294763345
+0d29f7f3-4366-0ddc-b5ad-fb840eb42456,3177935361,15266219734854408912
+e73c4642-658e-97c3-a6e4-64ee35f40307,912045426,640198531008892193
+fe20ed2c-5632-4b1c-136d-be3370084d5c,1611095432,9379075086971633556
+83f8cfc7-215b-b3ac-8182-5dc7ae7be691,2493867580,3931025410970861058
+5e11276d-b789-0efc-db53-e0b842e86e39,3718598152,3711241765303153853
+1784935d-6ca6-0455-ac93-be44d418e247,2619984621,14861866766423609274
+ab7dd679-6445-c779-e5f8-9f1a2d6cf26c,494017748,15601547443466112872
+07026175-8f5a-77a1-9ff6-17ba495ca01f,3017395252,17147454161460500296
+57fcd94a-1605-7b7a-507d-d44aa91fff75,2824138293,18363331128049220435
+4e72d1b5-cc2c-5620-d010-b6f2e9973120,3426907899,5055703118032330474
+9745c4e4-b9b1-0011-d0ad-325bbff19526,3809366896,6744575578186602187
+5d541f14-bbff-f029-6aa0-9af82aa0b61e,2223160807,11283046028639806614
+e0b9dfbd-be78-5eea-0728-cf9d09f51e85,1567413056,12440707303525350488
+3611f61c-1005-af57-8b97-8dd4e9504533,688119165,4647242052862853166
+487c2fb8-e343-3068-9d0e-0b0155d2d6ba,4085457726,2601401826679365863
+c2e78f61-ffc2-e918-e530-bf5302e56fc6,4021778333,8273159544681926114
+9e7e729f-dded-1c32-b816-2235d75f8df6,4152590059,15778559306949426679
+4c5763a5-b1fe-7c17-b19a-e9c4a8408009,3030372745,2147064012195235232
+b78909b9-1fc3-2314-ae16-c96a47e04834,2313213084,2576379935944008416
+375baa43-c6d9-ddc4-f732-32d25c22d8f6,1566809210,16364898949421836802
+c4baf249-0b2a-f8c7-e6b7-15072b514b07,777156231,13247878976315839205
+02e9e07d-366b-7978-6774-8b6aead04118,3172921062,12544969387082279052
+cf23cc52-2ecb-a0a7-4093-bbb4419ae57c,1654949827,8974880220763397513
+ca1b3598-dc22-1569-91f9-7a06faf7fa2c,392344911,6076913396030408392
+df84bc5f-f808-2c12-890b-cbfa6a5e5122,3397247565,10520382241923299270
+2d0cf07f-69af-21f2-7f14-ed4a26de661e,3929074305,15035260171237329249
+05d1c56d-c6aa-8ab6-c21d-bc6a08b6051a,862699983,8236837302016648917
+8457208e-b80e-ebb4-269c-84cb7cb4de9e,1300267762,17561546187479247508
+e820e763-bf11-a5ba-bded-80b924fab2eb,3834326743,9446088398207742949
+dd4560f1-4088-d967-2af7-59d93cee8361,2362212152,1880356669427676274
+370417a4-2d02-7ce1-efdd-23ca48b0239f,1488772029,7105304806301726514
+6ce630b0-05a7-335d-bcae-fb7f783c4eb6,217299851,16950419394720626571
+290a2dcf-29c8-308c-0786-a34363df8c88,3154587753,6068259383804130752
+bbf350d1-53e8-9b47-8fb3-0c056e81dc32,2682818873,5186184998260659351
+f22924db-5078-c266-f0ec-0c2d965d78aa,1557020872,15300269068722605644
+e6ca6206-73bf-2888-8f1d-f2ea136dc7fa,1497707029,3933783044436971174
+f6b2978e-e7e8-c7a4-306a-fa928dbac059,570699805,13076788771172625552
+6b467cbf-05e3-bc44-6909-e4de3b3312a7,1870699255,6526323791718295371
+abb83941-21ca-d13e-3953-d8203efce5be,1633758180,11773538120208183355
+6e836f1d-3a68-fc26-95e0-884f83e75e67,2254685132,7367842241365327223
+3eac6958-af72-001f-e03c-cd4c627bc683,3057895127,3008340725922222552
+8dff9baf-ba90-40ac-3108-0bbafddff1cb,386831182,17788647826922944781
+ab6b2724-b3f0-261d-5853-02af6de1d598,4144912382,12057315989053234446
+ec96bda1-580e-d8d6-ae33-68a2be8d89c0,3804641376,8138351280625317269
+32e92e3f-08cb-a42d-54f5-f81140303026,1162673504,5723206075181356555
+46883161-a152-e4c8-1887-95c183374161,3056711105,2986234357491599773
+ae384490-8e40-894e-37df-28d4bcbfef97,1773940921,15397267505523284554
+4f19d4f2-b336-bd9f-2b8a-a3b743047733,2955203062,6925638442858248965
+293ae902-e299-7ac3-4ec6-1ded6ce6c4c1,674605380,12531087977528653435
+70306c5d-5222-06dc-2fd9-17bc5e371f3e,1599260213,9214014784395461490
+2d19ddc5-32f8-8037-146a-f0511bf54ca2,682324500,3920062234943904769
+86c17cea-77bd-1800-5f25-1c6d60368d85,166082955,13075351778223399306
+7c06ad9e-8eb0-b7bd-4c38-2ed0dd7c1086,97207803,4984529725023515866
+d31690f1-ff17-25c7-b883-e6181e2aeb39,3264852196,6103709107797324208
+5885d95d-ed1a-fbf5-ffe9-599d0fa900c1,2733185249,17895436785159203033
+6ef907a4-5340-a77b-a4ce-018e1c405f2d,2883253473,5518287978516608814
+4e7b6d07-024a-275a-93b7-6e08177bf5af,2806526975,2500946302002892635
+585a87ec-9d42-1d35-f38e-635b34fbbc4d,2694820767,4117858211890490636
+fd1d0531-8af0-74e7-2d29-31a36abfe23f,3526062531,10263732084728581956
+6ef30faf-4cf1-735c-ca18-7e7b482f476e,2558448774,8171414378296845692
+fbf7c03a-aebb-8497-4b1e-3284fd1b1ac3,3330965034,15105575767842143024
+ffbb26fb-884f-ad2a-3204-73fa2eb2f385,500032702,6706464056732399468
+48e8606e-da19-312c-cf8f-304c82a36eb1,950839378,13348933369984210955
+eb8bc992-9723-69a2-3d02-047eb021a5d4,3981181696,12324239973678847405
+2be14390-f959-b7fa-2f69-1d2b8d89307c,1704390168,9371927773151182859
+00ff5426-62c2-9856-51a5-d53cae0429ff,3299246193,10815786830719846975
+84e392af-de4e-7867-65f8-55ad83194141,12305030,544352262439929122
+022ba9b6-ba82-c411-3fb6-f08976b8815d,831540250,2645755489851532972
+3fd6c583-d668-abc7-9797-3644c69acd5d,2690895438,14117304403244755673
+21ef213a-362e-ea30-f977-fad3cd311f5f,431267954,663974259394281710
+2bd958b9-cfed-3739-cf87-986ea4d044ac,1597238957,18179404676646806725
+752386ca-4ab6-a7e3-4837-28b7be4973eb,924154373,11666695692655531812
+78b35aa8-6f78-0c82-9e21-880f36ba9377,2336822843,14145777955343797545
+20ff8fbf-22e0-b861-62ba-e7479717100f,1715643982,9847783514110431502
+abf019ac-3994-7ce6-ba85-1c74420fdf8b,4200284193,6524995884772789019
+ff8b9b59-c854-3619-881d-40ee7dd89964,2236001078,8968361442990525774
+0d8ab6d4-621a-d81c-57b6-6d9e229d86a2,910678136,14533955984308847331
+31099e36-145a-bcf7-3100-e583898c2d81,3511754712,16375860857513444063
+6fb9c0b2-5b2d-6a3d-1f0f-f30ad421db88,2858206830,878123961095984996
+32501bd0-db7f-fb78-99c1-c79cb74f688a,2161311046,15786350949981123751
+fbf41e9d-a5a1-faeb-3517-90b26b46bf0d,2460003518,11443096007169634569
+f2009846-e540-1715-3fb6-f38fb4edbb73,235930193,10408881251666666827
+4c93f3fd-fbf2-4ba5-e82e-2f8a5cb4fb43,3114098833,18244559192627451618
+a84f8238-0504-5548-fc53-9eb145663c74,3791817456,16924693417920262079
+c3714e0c-22b5-724f-bb62-cecf7bad9ed1,260916369,10397222941445972366
+fdad1edb-e605-e8c7-60de-4c4f596b3cd4,514967935,11963762008168556978
+96898a5c-258b-4d77-95cc-024f6196ec7b,2830650628,18229815430318217935
+7ae3707f-1de7-c02b-8357-1cf80060a4fa,2464475148,18246633269136577498
+578c17f8-1c9c-7c26-add4-c7e9df0e9197,2100047353,12987088630719175077
+c427ed1e-8f1e-8405-26a6-718652b2de2a,3118874728,12957903925190734099
+0aac8c64-bf68-2045-dadc-bae87bbc6854,1259562980,3036765595076320213
+de3eb562-d5ad-141a-84e0-beb58f028dc5,2419836464,3360772244237938771
+980712c3-88b6-da9b-005c-926f1754319c,3998593474,13671253420345548546
+bdd8dd11-38ef-51fd-b953-6eb919cfb933,2208465460,13923745565835315730
+28abb5af-a3df-4281-cb5e-7ca728d975b4,1236722710,7253751100920997113
+d32d766e-a35c-c702-238c-b8841e07d8b8,732729534,10389841465489887777
+b946b890-6a5c-39df-ef7a-5b7ee0a1419f,80044575,11316800196715373356
+fbf33144-aaf2-4e86-6a06-100fad124734,3849839665,1453856057287512456
+46097368-1062-c5f5-f5fd-6b4051fbcbaf,37526186,8835692104591436368
+2d296bae-1772-023a-7e3e-afdc7ff681b6,2414055270,8630153283563530181
+5b82b5fc-26cf-6886-8667-e45f0fa679ec,27017009,16985391709817103902
+4303b0f8-dfb5-f99b-7c6d-f82deb3a7ca2,1653497840,16076601080427486809
+c203b803-826f-647c-1511-1bd957e6f0ee,3322219849,1626120884962541859
+69bd5ae1-01d1-c166-458c-2f6c27d82709,3935354229,310957631880070909
+8ad7cba6-1be4-c6b0-d0bf-d8ec93c2720c,89244918,16657166096388240391
+d7e7540a-4eae-5f55-7153-d54e9895c9dc,2894663977,16769744536316452590
+2e4aa5ec-7d49-fd67-5532-f931605d544c,128674569,18256615301439654375
+1a3f4962-b539-8608-e024-b66cad6ae190,820267929,12964025772157380578
+b67759a7-ef19-ec26-d005-f6b93c21b517,2389431336,10105426898541780752
+2e907629-9754-769a-0471-af599820f792,2321243681,2551149073702224173
+ad5ffa64-505a-fde5-75b7-34d7e86f2857,3393862806,4808874501515330452
+e14a0a15-8342-ca40-9ec1-ba70387e4921,4188059810,1170133231983850388
+a6f89716-9575-7c4a-68ee-89b020ca8be5,529621880,13197666499561561632
+0e52601a-e02e-0391-8ed7-ea3482ea5f76,4163243492,13188200206518509538
+d35962f4-12ed-aa60-587d-7fb14fb3b60c,2758394850,13160697670583680085
+a334f271-e88f-7b7f-7886-4a4eca99f54a,307861914,17565024464791587839
+9c55cbac-9e4b-9e85-d7b1-b4faa34c53df,555136803,15152337577697765091
+5f0f8fad-4489-ce5c-16cf-968b2a25d681,2716899968,7850754733345449602
+b8ab38a2-f7d5-619a-a0f7-647c98928e3b,2440996361,4899180698196880835
+a668cc9b-1146-cee6-a04e-315ece02fbb3,2146186862,2510730333630128479
+e0c91b17-0da5-59ae-8c7b-fe55c6a237d4,869731519,13465541662800043653
+830854b5-0750-e47a-d974-075469fa8889,4290631311,15378381136846179173
+31c4ace6-f03f-e9f6-3841-fb27d0481a93,2188983867,5435829819275090357
+e82b7a4b-5ee5-2a56-1f21-0b322f07af4f,3176396515,9816960646979020345
+283bf044-3245-d100-3009-8904ea950c50,723028819,5125270079394067358
+d5ae3fe2-b2fc-b999-ac7d-025a47bcd095,775910324,8789422616711932608
+7f3df528-5227-4852-9261-28bee5d2a137,4262353468,13797801881445044969
+2f6d7503-14c5-d6e4-7b96-fbc03b31a150,576686066,6417901948483071879
+b56742b9-ebbe-3330-b0de-077e69f30c46,1336539942,7420212142141677972
+1ac3b9a4-8856-b099-2a2a-9138c6b30f44,2497466881,10672747959644014246
+c1537975-0b3e-6a59-fb3d-881b601fad29,2073669101,12736898106649769085
+83efb168-44e6-c0b3-1d13-72fa6c188996,1526691010,9706785712410397267
+11031f01-e0c8-560a-f87a-81e1ca81e76c,840742544,13880541013872628720
+89721ad0-d059-b694-95c9-aff415fe0113,118192716,10293615363020388600
+46678b6c-d4b5-1088-0ae8-ad0d98bd7728,3630154178,13082013455273810584
+64fc6395-b21d-5501-db6b-e69ae33c3d76,830975821,4905690565384434482
+409d1f6f-7bbb-61a4-e089-56fd1a116505,3291603919,73539527881562826
+babb8b6c-28c6-564e-3861-ea3a604ccce8,4015231335,567686588810369065
+cf3d63ac-d82c-8319-b99f-b7d96323eab4,701189053,16406671738050744903
+81e0c703-5cb1-ecde-4176-3a72daa63590,4006553829,10379129096768928291
+f9ae9d69-4ac7-b74c-db81-fdc3de19b351,3574025903,15275838844946536865
+a533fd26-dff3-ab48-cb79-12021d7b7a2b,2892791423,2146597178199411956
+048e3aa1-3b15-13c4-e96b-fe8316d7bff9,394043812,14886125542319701936
+deabff7e-a844-922c-2c4c-48ebd56c5146,1478865466,4963140167222233750
+9ed79628-61af-2311-de80-eb5eef17c75e,3687223619,6922810776374674299
+dd3d925b-a52c-511a-96cf-23515b86ed64,2273697079,7914180514428079820
+0276a880-2601-ac91-fa46-6ca6fd12eb23,630924861,13283920788100839615
+a8eeeb96-4da1-4142-a0d2-731146afe0aa,2634953972,6055571401667155420
+92248de7-4221-eaf2-99a2-5c897df36e8b,3431663203,4647337414732933194
+cd83efea-0ffd-efb6-20ef-dfc0309a01cb,1046847049,1483590630857561155
+8b145ab5-269a-e8af-e74d-2afa05bca1f5,1770879707,7845276831959041967
+6280c356-0242-af20-2829-2761fe7b414d,1838968762,4267623319721689745
+db575822-a531-c2c1-5303-72e76ce59df5,4012852469,9885881255132523602
+8e8a8a1e-5c68-f004-d20f-76ea18dc737b,3577970459,7090296198068219886
+8384ec04-2906-9172-7b36-240bcdb28fc9,1728648746,2486205281676113359
+5b611625-53a4-c6d2-5b53-3a297e0e2d5e,2718293686,17475144617209384947
+859fc9c1-ef18-53a9-d143-11f7ad16b2e3,1388416562,6695491443350308081
+0d83873c-4d40-7af4-188d-9e62ebc75e74,3423709472,10325846353506599237
+99277e4c-585a-2382-7e17-32806c3f5f39,3126418124,12642217878073551171
+e0f12735-1166-3cf7-1be5-0b359706898c,412099819,16149085504437625158
+fbfe5fb0-c25e-5615-04b7-6c55e18dc8b0,635228670,898863364117488087
+87ac4c6d-4709-14df-8ba7-8bfba1aa5a3c,3006699304,2236423150659243011
+0f40071e-0848-5455-9245-0e1d4ad4a5d0,1203177818,6594192987507822509
+0a14996d-d70e-a4cf-5e45-074c307947c3,4282577313,17235030948522644867
+586eeedb-9838-020a-6b5c-f34f725e82bc,3908213054,8607740738766814274
+f7ae1409-26f1-7a19-bfb6-42686968569c,729072213,9122985844304038018
+3a121df7-f3e9-e7ff-699b-136cf0c2886e,3280796661,1302369146706630292
+a330d96b-ec04-ca59-bba4-e1f0e0e17d06,3105805270,9772883213319755678
+21bcd622-a987-9432-d677-eb7a2d8a95a3,934010892,17374673040930017624
+8ebc8695-8acd-de4d-b6d7-eee0fd3320c0,4153315667,17930137809420766012
+6d039091-fb38-1151-4583-c13b57641182,554707304,7142634448330465025
+94b47ca1-a88d-9fde-ab42-9efcb050fdb0,900819255,18212650419471285785
+1616562b-b67d-e8c1-1dcf-dd06b43e6585,4093528334,3034984096788065818
+1e1dec1c-dda5-710c-d7a9-cdfa6332e58d,401060533,17271471441917236419
+1c18b0e7-087f-d012-e92e-c17a0f1aa902,2787294638,10811454935129003705
+af185335-37b4-fa40-8a2f-d388e239fcc7,3720757902,9830964243498721327
+eab27046-6224-6813-54c4-b63bf89751bc,1395036761,7447936917419430890
+a8fa402c-bcf5-a549-acb2-0445a02a574d,2989002511,16415647709733713206
+19e9cc1d-1416-b249-a130-369d3800aefe,2482667787,13220947468487264461
+16b002df-e6e6-5bf9-a65e-3295f100557a,2168963180,17187637000922995964
+49bc89ba-9191-5688-adab-c3f1f8d4d9a6,835815745,7119934375560765626
+08cd891b-119c-8aa0-30c1-aa403f2067ce,1341675033,1566101164464046915
+c1d3f157-efba-ea25-c66d-835c066a91aa,2676332114,3509329149616911510
+59e2f62b-b562-10e7-12b5-5f4af7420305,4139910117,3866437877240326608
+123b7cc4-5953-1c54-b6ae-de93aa039641,2055407517,12073515878624787789
+05f3472a-3740-bf06-3717-6a2a7edf0f17,2118680622,3133568722743558502
+c64e68f5-1511-0911-350d-68018c3ac043,1113710603,5159064352511524531
+8846d861-9707-1fd2-974d-c2383b8758a5,1439640860,6167622189547164276
+bb70077a-414a-536e-58c2-0eff797178f0,3869545161,13074874828899163482
+06ebcb3d-67de-3713-042e-8c2c6dd24ae5,2736314510,17150694774205532472
+45e7c91d-9c7d-9214-ab7e-c58c472037e1,533084225,15999473856160696211
+72feab54-623b-f843-9144-bc55e8aab578,2714734045,1004096954873003362
+5732020f-6d9b-ae66-cf2c-c7cf5960201f,3116367094,6093986201889039620
+c6b46a3c-b812-91bf-0919-dd0d51ab4b44,2849053872,8472279284698049609
+781a8778-69ed-adad-ea8d-cd96cacb8989,1231168375,16165482474863824342
+2e625c0c-9267-e463-0ea1-8331bd03cb99,3833790548,9303048659971925586
+ae4129ec-f8a6-c0e6-010d-543988f8b306,225755697,4179857112081196174
+61a137b5-4b68-fdf8-c0fe-4604924c926b,3247401708,8054825468002462327
+1a226648-4c8b-42f6-211d-6362663b05b9,781594458,18093224402108604486
+07a5cd87-da97-43b3-7a22-a9775a95bcee,467194380,2513815632010904789
+22a731f6-3045-65db-dd40-b8810b56c45f,4106181621,15015132560744602073
+83275681-6b34-18a3-dd62-c34989d5fdaa,747408906,13220247526319115685
+d311c464-5ba8-f895-9547-205b3da9f020,2868630878,10308949658914105346
+46c7c467-55a6-0bdb-b30e-6b74d222abef,1738962381,3542885191775893712
+0aa9e36e-b18d-e6cd-abc4-381e876e0012,533765337,5332774585928507239
+0e14747a-d58d-605c-9d62-ef4d7f5249f4,1872455565,16162053785513648873
+1a6bc009-17a4-7480-f5ef-5f3733088525,2933993206,11356079980675867265
+ed746ae0-2c46-a3cc-e75a-3239238a7817,3234757736,16608924633266764482
+9d3f0d05-1e69-9629-1dcf-926778f83e26,2183905399,7274428366298224390
+efc93fc2-3d74-4a4d-ecaa-2c9a34b0f568,2458617455,16352543492113617319
+f39418c4-d3ae-da8e-1460-bc79d5c650f8,3037154758,4520694501686058566
+022a634e-1d16-731d-e153-a971e64f76ed,4061408725,8311996741451285183
+b1692e99-e86c-e4e8-233b-0419c317969b,3361017264,4118627478786902096
+a9d9c12c-3d95-e4ef-5d6f-a7d7d61d9bb5,379338779,8531827541304789086
+e7814e6b-915c-002a-79ec-96717025dcba,4012668991,15810354557486782239
+244f52c4-4b6d-1571-137e-db51a514ff44,2077527878,1435193996242879661
+9282ac37-f86f-1fa8-055a-f128dbc3913d,2910130963,9124622631535729949
+a61ecf34-53f6-8371-a350-7c2d005e20c0,1754063462,18192732316511522486
+6724524b-029d-1cc4-8247-e4856d182406,3102822701,15123704183789217666
+b6b72dd7-5f9b-3bee-6946-fa504862d10d,738949725,3210064911356704869
+8ece07c0-ec4d-a17a-f794-ce769e06e9b6,1980785821,13058099461605173205
+caccfac8-64cc-9b4f-a52a-62743f05c4ee,3984583082,14408593408621410516
+4f80369b-9f71-041c-cdf3-2d4c1739acc0,1364007251,11418668518746838400
+b9747f9d-dbb9-77ea-c3f1-88594278ddb5,3220229295,16973025219126760697
+f2a95984-db14-435d-4f5b-d230b8670b46,242514197,174355463194871319
+473a1944-5011-134d-3f71-3de9ae54acf5,2760389136,7554777063987563682
+4a42b6aa-a768-00c8-a8e0-531364a26d14,3819153670,2851639017213715486
+88520068-9c00-4d38-c769-e5f257861b59,3888483274,16890853163602333398
+62873b4c-5ea4-db51-c332-6cf82583d751,3976757019,6797666778440873868
+184430d0-c7e3-ce38-9b2f-64c35577c15e,245249912,1447022047238450359
+af504b07-c6a0-ea18-27f2-ee66006a48a4,928121783,14604270192477015900
+b9397602-c7c9-cf62-86d0-6763470f5a5c,1966115514,17481695420887632227
+b0481a9f-74ed-470e-1e65-2d61b2dd890e,768576232,13295538703892017796
+370ab4c9-4796-00be-7e93-0ef3ad67e0bb,1559248460,2592087090755074756
+8f27f5df-6af3-f71e-afb5-e651a3184140,2964204504,17142771318403272769
+ea8d0070-2798-33fd-b1db-fa9436bc0c30,3193862462,10283662743315154965
+44810d04-4405-468c-98df-bea5e3c93abe,1012500509,14601243146528126952
+d88729ef-69de-30d8-a8b8-d01fbb85c16b,1050068240,7014812655541350153
+21dd4e78-52cd-bb26-5d51-f04c5947bf08,795814502,7909130029796067227
+c75789d4-0a6a-ea57-1eb6-312a742b76e8,1782830209,6244414062981925050
+6acf6391-78c3-be78-6c52-f08c4a3209f2,3275654219,1706556497976126095
+0b8e62ea-3339-e38c-7496-da3591a63787,3545603183,13101155087842581049
+bf4cea8e-864b-790d-497e-7cf35edc238e,211312588,13445044451516482702
+f7dc8a74-cbc0-fa67-f578-91cf0a273557,879348327,6191984024132209508
+51dd0634-5163-c444-1e38-af6e4a9e7631,1142548726,17877196886996571646
+89eab622-59c3-b99c-1d7e-5e023b47d090,3599923587,6806315771641941133
+ab4ca354-378c-84e5-bc2a-f3d4786f9e6d,3299253977,12157375619550855452
+5762f0f6-bea4-00db-5f05-e85a7ffdb12c,614361311,12379195877851993856
+d9462a10-c6fc-2964-de7c-6abb934cad16,4272474193,16949867208130168595
+bef8eaa6-64d1-8994-7641-7ec41712f598,3661972598,2075579513197071614
+084f7c54-c00b-4723-5276-b6418a5d3d93,2951425278,15589511381750791650
+a2dce764-b86d-ef27-df30-a08e7a74dbd0,908033804,4704458325096051939
+5558c961-7b33-c2b2-c0df-807576b4687a,2737326123,1476709167031522257
+bdad30e5-9e40-4fd9-306f-26a81f82e62f,1386654653,7103501355529187108
+cb106911-6c70-d2c4-0f2a-58d76e810eec,1046661347,11467941203712609553
+0d8cbba6-4844-8f43-e3ef-bd8067bf3f32,382657429,3495806542568078828
+ff24973d-5dca-471f-d727-2a5f93ab72f6,3154583690,10137505873568086887
+0e60e91e-a57a-32e1-3673-97d5d9bda73e,4073770366,15393702952434488713
+4362842d-7200-94ee-a02a-135fb686bd6d,4249027377,1078580833366958301
+62f9d97d-67f3-f50e-51b8-2d30448a61df,1255799267,2325343962155088676
+eac976a7-1074-7814-635f-800f2e3b3a40,3461693154,6496353699603386395
+cca8ba60-9355-d765-163e-5d0a16b3f441,3239215906,10142600281979121061
+a409f7ae-11b3-dbea-125f-ee3ac16ed791,2859417626,1496518344752019966
+24beeadd-677b-0c36-f62b-4193437b0ee4,3747782204,14616818886585666970
+1340806d-f5b4-b1cf-cd66-efd24b0cd049,2440426731,15682189097692623750
+060e1d4f-58c1-7fd3-abdb-cb5f706483bd,1953374479,15994165968944822267
+33ad79c3-3f68-ed9f-5024-9482d12dba61,3195850675,17621848167462437631
+71ea5883-2bd6-6ffa-aa1a-35d1bbb7d5e3,3380887951,12263762629640703847
+a69b4bf1-481f-1c21-d1ee-2979d5689ac8,2123259604,10277525958677917711
+5c6f3953-69c7-6728-c8cd-65496fbab792,2572095474,4771443465290385232
+ac3f2ee7-7489-0be2-bfc7-4fff961265f0,3991437186,7314084341295719313
+640ae799-1a55-0846-b98f-f67dbe93030c,268602482,8592224164333000053
+97c08bc3-66b8-2846-24f5-442db4824a19,918576958,1138228130201264291
+34edd842-9d32-11d7-faa0-1181b9539965,1466442903,8772849541397854781
+5e1528c8-0e92-f9d7-7914-4d7f563a5bbd,2188720172,17806771173393190498
+fab59077-cb70-e677-177c-fa46101871ac,833164798,772258917454087113
+a1f35249-bc27-1531-661d-4e0e5787f317,31215219,11878167502268961086
+0a19912f-1384-22b5-eaf3-bde3772c2e7e,3234490228,15472193844436918022
+67ffa3a1-20f4-c30e-9177-e1051f3143d3,302294747,8713134104950808201
+cafddf11-c88b-d517-52c8-30e59a654c80,1837342218,17119164047967775912
+b9c394d4-ec9f-ccc3-216b-73f74ca7e56f,912988300,1280455863600806536
+8c5d9c92-9ffd-cbe9-efd3-489d4e1bfa2e,2244656548,10156923941942474066
+71948886-fdfa-2fde-33f5-fc4107698672,1480516228,17081343053758387901
+a3e5326d-dc16-a257-e8e3-61e8cd7f7a2c,1100857296,2303381862336993341
+23364f50-02f1-75ad-49eb-09a25f6b0602,248746842,4269804517470896040
+ac1958ce-0171-fc62-88ad-0f2b78c2240b,1584477832,17525083248883088124
+1825fe30-90b3-2d54-454d-c15ead7db74f,3989718787,4192332279484240296
+84d93e87-e1c3-a204-bf99-8322bfd39b5b,3661148324,17799074432187358844
+5e7849c6-8142-94fb-2ba4-0bcc234877a7,2372754043,9932901581329823278
+497b837a-274f-71ce-4295-c2361716c1fb,4230569776,10916807139615990540
+f759da53-af4e-134d-fd15-2348332deeef,303469922,2293149654276945627
+d67a712a-9737-5296-1676-134ffe31d0d2,1870337049,11225277868201278931
+40aa6611-8003-a6ca-b23d-981371fd5de2,3102316575,11047675919857466940
+56a79569-6692-9f02-6b1c-17d32e04ebdd,1390413182,3689102877122028604
+ece68a54-311b-cc6d-4b64-d4a59f02683d,1531573557,8330324575393923596
+4adac79e-c797-c511-02f0-2fe5671b64fe,582554396,14340530395600102577
+d3b4df68-293e-df3f-7575-876b1c3121b6,1338162183,16112646640940118638
+5d0e4b04-f154-07f3-27a0-67ed933c42a8,4049687942,8928583618390718299
+7586be05-90d4-3224-4c72-2819cf5965ba,3442056703,272478729996624054
+e6ce9d4d-7f17-5eea-f2bc-68f9b3da6bec,1868169712,2600383150851219451
+7eee6600-fe38-29fb-774c-f86389627901,3713040637,6467355100441217812
+6578e681-56c2-0997-e43c-914a46e23ee1,855575368,11220861015558580030
+9b84c219-9f1c-96ea-d8e3-840708cfb673,4235013647,4512970913703218736
+50e51691-bbf8-01b6-38f1-390dc79fe060,2879200318,4400294153302817479
+8c3e7c13-26c5-d820-8c21-cf811ea3fb69,1912825232,2167468322823675827
+7de0260d-2e66-7ebc-90a5-c00c8492947c,2225403873,8264503403758899884
+2ab24aa6-b9d7-44f9-6709-73bb2e8ea3dc,3281955493,9869468220938304365
+70b6a646-d9ee-5fef-bb32-e9e264ed649f,1370569079,4714511916015973463
+525a4bb2-bc7a-05c6-6b15-1e5105065d60,4070498514,8657260615367731577
+50a2a1b8-f3bc-d3cf-f526-a320282de165,635458976,5370646410168722646
+4cb643be-63c6-da40-c234-fecf0dd9af55,3388262616,8492229817033638786
+2ae4a4bd-fe2a-22dd-12c3-69438f741530,2392469746,13519026999498255299
+92813df8-2af2-7b9c-9636-793facd30170,3486603151,18050404779499983788
+ece316d9-a0a0-2a6b-6224-162471005107,1072400187,3602577201929352161
+1f6e0393-7422-d345-d285-b545f2216029,2130468835,7867372998200447649
+63f1d82b-1f20-f30a-51e2-9f7df7f30fd6,4172853372,7586857518974135724
+dc0cc027-68c2-26ab-72f6-032547596715,4013802872,9564227829225671010
+84cd9aca-6d92-58b9-2017-5f3fc2e5a05c,875198357,5137630537887534621
+0c6ab778-c86a-508a-52e0-9e23eb34a72f,314925892,5413684912353727311
+d836a65e-6417-34e9-6240-96563cc6d5ca,1400750365,9371793124081755959
+ba594309-0e4c-7274-c5ae-489c0901a4ad,3922295641,13006129905890241815
+3964826b-548b-6676-9a19-50f95aee9b25,3572155635,5429380048202026080
+ec050919-ec7d-566d-561f-2084b619ae1d,2135832630,13660549940069754915
+3f0ada6e-d6ed-9d1a-f3f2-ad2ee73d932d,2515912442,5919950839727465874
+55158d01-4c45-9cce-a4db-fe876190925a,4122260319,17029251268311300021
+be13f3a1-4012-fcf0-561a-aa89895a2d88,1368159983,9802475943576762096
+54a2e80f-debd-425d-f2cd-6f5ff30d3516,2547638294,4155959496699867943
+c8949872-54fa-41fa-5b26-d45beeadba43,2599749402,11633209078923094463
+f18e82f9-d610-da26-05b4-2bea697169a8,2737059583,16596420613584104757
+5d94656e-8c75-2792-bac5-a9e3ec26c861,3110271606,18325392064970027233
+d29c8e1e-4a60-235a-00b4-ebbfb82605b9,3815910970,11238074303139379145
+17ebe756-b36b-94e3-91f4-074657139575,1539143057,18434853932658036440
+a3928093-9ae6-5d27-0722-5e5732e62b43,1719926110,1759532325301582966
+ad049a56-9fcf-9c50-ed33-ab4d20d4ea9f,2110001648,8339984158940074736
+fcf167c4-03ed-d5e8-a983-bf1b72db1b69,2292035486,9343043358016126548
+fab59a7f-519a-4d36-7da4-c15b4151a011,870227507,99273247559410241
+4f993363-52b5-f4b0-23d4-ea9c82bbdfb7,2506360670,15059899437695879015
+77d96a1f-65ad-c171-60cc-79e5bd76be82,1616191863,1124000534156560469
+af25abb0-ae6b-73f1-2455-987a1defd29f,1496137696,5384186970801824977
+a366992e-fb4e-651f-8ebf-78f2801b2952,1490712057,1237903915304705586
+ed081495-a460-3006-810b-16d056083375,3473155857,861061383259008894
+a9a04c75-7d25-aacd-9805-27b4bc841cb9,2677185032,18220731975534839994
+3d98a4e7-802f-1271-5b86-e546b7b34da7,1997659073,18226848116177710754
+c96a847c-32eb-242b-f0ef-ec5a82fc63b2,2496271141,13622253304959049121
+7c12fa44-fcdc-6445-a880-0473fbbc662c,2230085959,10872099282630185823
+4b30c88c-3d51-5da6-78e4-f95f2ad3bfd7,4211767869,6014052567272435397
+c1405595-2ce0-6cc2-fb36-ffcb6f9c2e39,3137075373,9218868090482966388
+8e3bc561-b252-dc41-71bc-891ee10312c1,4011320342,770680687510161551
+08cbe919-04ce-daa5-74c1-297e221e3497,3183051443,7624064797740246266
+9df4fb86-3f63-a36f-14b7-5c9ea7a00543,2279742441,1705629872404096654
+9eca3519-6e6b-717d-0762-8c108985af51,2010581239,6494088044669846620
+a429ac95-4d1f-6bfe-3837-cd1eb67d5492,1179129909,567990015503290567
+25632bfc-c17b-5529-6dd3-fd716822dc0b,4011939330,11724965138201957144
+0a7447c1-0028-c8f1-6b83-47936205feb1,472634693,6474671244184073431
+9f69c90e-9c67-8c94-8f18-dec2e63fb04c,417889050,16774251926443823732
+01495fc7-2a98-9647-f9de-2c439cb9a1e8,1056085489,15915219297590096359
+82ac9000-e1b4-0966-8ad1-5678885e0e82,79647647,9331788362495373353
+7d10e687-7a5e-3a4a-a11b-b6a0b0c93e24,2695871008,1962393217760857861
+ac4638cd-b3ee-71d4-ba6f-a9f500b79d69,178838574,6136964963090108163
+b8cde023-38a2-2894-0ad6-e4de088eb752,3373507224,11246122711441956155
+889db4e9-4bf4-1eca-e502-caa3f2ce729a,1552771791,15265050156605928478
+9977393d-36dc-8329-66da-ca7a1a3dc810,1743937693,11429800361767409566
+f6012b86-90b8-fe61-6bcf-e5b0a5ee4bf2,3042816437,6609026352899873947
+1582822c-126c-b67f-1eab-ccb99f0ebabc,1743205637,3462782336543940760
+ff33533b-543a-b011-0e8c-d1ceb82f36e7,4040185148,10538736836371626076
+6ec93d59-5bfc-740c-ea65-7ceb7b191cca,489964567,10527000715572364567
+a7cd0bed-77a6-1898-ae32-c77a1b858371,454681128,5688886020213049602
+1b756892-6e66-edf2-607d-1d6e51ff9546,2253851417,3792559249568301549
+e0c3b015-2e43-971e-5512-d8cad461215f,2844427174,11211460470229327720
+8e33b371-6f5c-4e3f-ae72-10527bf504b0,3465433843,6809587550761855246
+fe70e83f-fdb9-494f-f730-706bbe737e68,611429309,5738623103950079258
+dceb2f3f-e0fb-7fbe-ed51-5de9494d7c7a,1754553599,4239399159323383937
+95f4d28e-ba02-23f3-88bf-53f30a031d92,1476737259,9241714202490640552
+ea5d8c3f-9ac2-771b-d6ee-55c929ac12f9,3540753344,8614260861260848991
+05559b7a-7720-6c7c-34ff-71f750af1c23,1233686147,552887246045496258
+a02a80d3-2ad8-08ad-ead7-afd509c9e49c,3585913908,17901956891089605998
+94311ab2-ae59-2ea6-78e9-a4d3443715f8,3275086599,12569802259880856685
+75fc206a-d0be-4e6f-0955-eec0bfc2a244,3505147389,10375065370203320385
+20939987-7eef-cf58-b068-8a710730a505,605951913,7492474468240109165
+b4970d9c-805c-4e82-d1bc-1b55b72b685f,445919870,18124055602448987082
+28cd551c-68c4-c385-454a-989335772393,2011619004,16690043686394405711
+cdb2b4a2-98d0-08d1-5d41-5132f6b23005,2419929216,14802439948527989392
+e4d8f9e1-9e77-8419-b77e-3050795a58df,95770695,8250388219096175382
+b8bb25ae-f05e-95ad-c2b7-ab58915df627,2886614381,4203956406895163764
+4c48fd8e-bf84-78db-46d2-618806cb343d,2267087890,1501192169440310133
+c4920364-989f-b2e4-0239-aa643ba43741,3871517507,1667040651927958406
+828794ee-a175-15c8-08f1-50520ffb23c3,1402061577,2376198959298339751
+619ef130-9d23-e1c9-8618-a7a2b9c8bae7,3590833497,8096891806397713242
+aa8e1e90-147f-117f-586d-73b3f29bedbd,3661447048,16785018287057273821
+09ec8554-e163-8a1b-2a5c-0954a12976e1,3727214109,12378113470888135177
+4036b960-35d5-219b-5b85-f11606a67334,856567760,12489369270969295390
+13103618-e888-61b9-befc-64046e26986e,1467461784,5853966089704845291
+d1da5c45-f3ff-4d8f-340d-4e64434a5389,1183491988,10667248197190682814
+b03929de-6765-fc20-0af2-2cdb2af7687d,769460429,15906307632025421121
+39e871cc-113b-5a6e-ded9-c2bfb7cf2ed1,3967688957,1875711286896602112
+4d750c92-df28-3547-eefb-303fdf56968e,1112255786,7152416634071219111
+6e79cace-d55e-84cd-f6d3-36b4849450a0,2831284937,13792047863718815864
+dd9a1aa5-fd30-305c-f91f-3eb695298ea2,2960748417,13952277108870672742
+4027fac7-7f70-34c6-3675-165b7e06eb49,2644170869,16216903644884378535
+eb131dac-a8cb-26b4-9e65-bff2f9822d5a,440065988,12374222676369381935
+5ad9db5d-513a-6d0e-bee5-f8f6402e724c,3098829292,15912623966245436408
+5dec930a-995c-ff7e-64cb-7b1246926694,2671193841,3906782640405136053
+9da83cc1-ab5a-657a-df9d-736ce1c6e789,949042856,8072167274378236139
+238c9b60-7986-f232-e86b-62be2abd3883,1925031405,17967166081817968416
+b7b42a3d-afc0-9779-473a-60596baaf0be,1952026957,14727807697971159121
+f10cf06c-0b70-8be7-0fb8-8f6825295e4c,2696217840,12576217304329045316
+186112e8-8fb7-ad68-cb40-879831787f32,4144582446,14620266817206663635
+86b81f0a-8b67-414c-8c55-7cb1a4f9cf95,1065888892,9901387362798669114
+a6c5bcfd-bb2e-2229-10ea-c1fc21d9ad23,3488387733,14535352117643665659
+3b533d7c-5fec-eaf6-0ce8-b56436229aed,1913947450,390088622330307548
+28580715-dfb6-65b4-20ad-c5fed3cbdb98,2136677393,2326198535869834022
+f1f0c923-3f17-6cbf-13ba-64952eacceb6,2695803690,8695644800203625849
+36ad7d0c-9cb9-5c02-ea44-7cb1fea09e19,3284457551,17320386726493438570
+e2203764-4230-cd86-5a4e-a138d0520ada,1511026841,13819585985766719736
+ab33c78a-c60f-1532-e83c-828fa03b0fd5,421834222,10942947631985373516
+59780fcb-ba43-d43b-62c9-8916364ea7a3,3423022768,10617110550170408657
+307c688d-9095-c412-394f-20209cf3b3c6,375008380,15899103936466616928
+e8c514c7-7043-e8e3-418d-4f90aa6c08af,137563422,8650892562244287812
+e87181d7-80e9-eeae-c4c9-3063899fab26,741116930,14877980676891523363
+a2243893-b960-c751-9efa-21e2f39b9d1d,2081907920,1900674114590818281
+b1e35f24-e406-fc3a-df4e-703c093fe606,2828337675,795964363577188823
+08b1fa6f-851a-23f8-5508-7b7693d98ad4,1323019711,6689076653358307480
+bb4e3271-0f0e-bcb1-14cf-679a423905d3,2563509530,6873567133916622169
+d95fecb7-2f38-a2de-3727-8446ca799979,2235237012,17250336191302685285
+24dcad68-c8db-7ffb-691e-90354b9c1dca,2630199502,1469511303321621854
+e4ddd76d-6fba-5ecf-ffb2-5d9bf21f33cb,2700741979,14200541567494048957
+a137f881-e927-9964-cd4d-c132db35d8eb,2843825392,8974077333576022254
+55970b15-2cdf-6d07-b8b1-7c7fe301513f,4064334616,11310774703900324878
+d9f8c1d9-9939-a968-b900-add406efd78e,1671798869,13810591637671735869
+4156b5ab-3c8b-20f9-e62d-c381a1d26db2,3783020505,4070946809150327239
+736c0ac7-f48d-faec-af7f-cfb3bd8ad1a2,802264797,6318556947003142132
+b504a8d1-b049-bc8d-00b9-d3aebfaf4404,1977206076,17064256659122133465
+1e6036d5-33c8-bb64-86d8-6a8d0997a6b1,2106075779,16442457903018588651
+05235020-882c-3900-ca8a-bd381d9d9493,3801978371,8698130125859305614
+c8aa2b6a-cc81-b8d7-f1fd-90b890287d36,1310493516,12822530441213167856
+fea7e4f5-9f4f-fc58-886e-809fbc00bb18,4105424700,16068605972889642283
+533af003-2862-2b8f-f544-a824ee989996,851980044,12488838745858521807
+ba4a0cb5-1cdb-77a4-b5e5-b36b0c8bc703,1721953186,15162057204219390100
+bc885c1e-f734-f798-522d-7dfc91ff7c59,2440890875,13083215182487400533
+25e0d134-1431-7513-8e2c-4ccf7b92a26e,2851418105,11650632178383566920
+ab9deb45-a43f-bfbf-f176-918b771ccf92,2503145280,16525867191593765362
+50e52da2-b096-60a4-c008-6a6a04ee9899,3877073840,3746210733953523719
+05156fda-516c-6db7-6b31-da2430757da2,1229538966,18111245302003786465
+98b5da33-063f-09d5-169d-def9454c854b,778302605,8767969220360919946
+7358c749-87f8-b8b7-1b4e-611c8237bcc0,1505246745,12376397516813303613
+87f46334-fbf3-5898-df64-693c2ce7abe9,2687558370,4374775830795466795
+f5732e4f-40e9-5597-10f1-d8fafb2e9b6e,2976111666,17739505223085898397
+7a3b4a30-8f35-5d2a-3848-db0c322adb43,827992577,2126060595424251729
+ceeddc57-55d6-4d2f-da81-73ede7d16583,2834781031,9452025273479408579
+743c0fe8-4ba4-02fc-0416-a6b925ac8f18,323223416,11186455885670837448
+90e7affc-ed9f-15b5-3422-20da6a30d969,3827923197,13291632946719505129
+241dcdc0-53c7-70e1-8f57-f13f6fad0079,198286093,1525607156269491268
+ce027973-505d-9d5d-1917-f94c0dce77c1,2374186940,12049469170414143562
+5e0ca942-3a70-8852-3bed-a854d493a08f,1608135937,14150452231516863072
+e4b543fe-63d1-7ea9-4880-8f33c547064c,2630688270,5455780941790792679
+66f9b96d-4ff6-1ee6-401d-b4f06cefc2a6,3413533892,8981511700047522090
+dc4c232a-a144-f7b8-4707-ebe628a072bb,632180111,9483645372541188330
+bb5235c8-b1e9-8ce1-476e-a3ffc2252468,937709624,10734553405188471633
+5dff177f-ab22-0840-4b19-118ae246d476,3803272385,1072120425601014543
+106766ac-885b-0443-0d67-c469574a27aa,2183297912,7848770302116747547
+496271f9-bebc-37b8-3c4c-e73237c0ac30,461943354,15307380371349338083
+54daa9ff-9221-568a-2a98-f7350ef1f7c1,1160178771,8786337525432973868
+2ea40fe7-c578-d709-7e03-58c22d5974d3,2733763244,9987082190052042147
+582fb2cc-1474-559f-bb71-bb5b9736408e,3989184154,3804292582492165090
+45b2b7ba-3a2e-eb79-b6b1-75aaffc5907f,2157538244,15333668215421906601
+cf4a141f-9490-176d-b572-64429955a93d,1907746628,12716219823146848274
+3663c2d7-c32c-248b-4689-42c2bc59dc94,1968577723,717800229521253234
+c636a0d9-e34a-1dd7-2ba4-d6134ecfe852,2897176926,14389021742392052730
+83f22a77-0cb0-186f-5692-a21ea3c23b9d,1222222165,12211399059052289690
+7e780165-ccd8-5bc8-a1ab-6bdbe433f67e,1771589133,7827957690990063940
+bc222b19-47c6-0922-503b-89fc2787f6a8,4179891299,4165172996349823152
+4cbacaeb-d035-b36f-6437-b45756d7958e,2378815799,3782767702441164295
+032ddd18-6dd9-fe90-0fce-306475c3176b,2088443651,5491910774969109666
+1beec4b2-da90-aa38-9c68-89aac095773e,3054730334,17670501280825581994
+4a04e060-605b-7d07-1b0b-44cf4e7fdf49,985535507,341012181983257850
+27249709-3e98-d3cb-1b8f-d5ea4cd96c48,1961370552,541479400719978860
+a270ca1b-f4b5-8cc4-cbc2-21bb6643d177,3134388213,13622293724710597317
+9006941c-708b-57ab-ec8b-254c02e61c77,4085104937,11915439459599827397
+e8411abb-de2f-b175-98b9-3461907d0dd1,3945596277,6459211996839080442
+9579c7b0-eb5f-c4cb-d940-48dbc2f1759d,715366277,5944422340324863159
+b6a21918-6695-e4ce-33e5-2874f6ef4c22,3843670965,9055475356993402279
+fad2cb76-6f63-f4cf-6f25-9d54db6347c9,1639421005,5274819426523383195
+38c4f7e6-c686-8627-7b57-9a32d12b3734,3761852891,5510870556064615501
+bc82916d-ffb6-7eac-178f-e6130cf6daed,244163551,11523683790616935972
+cdac6f91-80ff-f208-21f4-fd73bee4399b,2095145157,6034212440929762869
+6af89a5d-9a9b-e9a4-f206-f9c89bbc669d,3209457988,9144838054961372500
+ace65e60-f9df-e598-3034-31cc90625473,4117774576,17573488042730278307
+486530ce-30fa-3d4b-8ea6-776591e33658,4152806731,4860737598905592829
+7eb11cdf-e895-93fe-73e4-4cb97b3a712b,305144287,18200808613977647256
+14c127f0-528a-6660-c6cf-b460f4736313,304715542,14754985506418423161
+a7dc2cc8-3ce4-7804-e2a8-88f276062bcd,2259696932,8467106279092273426
+d58e76e0-f49e-a6bd-c3dc-542a076c398e,845726208,5845539920372969520
+016f0c78-ca32-22bc-e722-ccce63fdc1f5,2497842935,4673225887235553766
+10a3c2ad-e10c-22fa-ac5f-05d8809e6167,1894620090,5099897616190040149
+a29500d1-39a1-d2bf-4844-018d3b35758d,1396716015,11060407843070955818
+48051723-4796-dc71-2236-fccf33d91aad,2636174477,2284423818165017800
+3303b52a-3f0b-01ac-3935-3e0f361ed2f5,1269620473,17949325150504867920
+7f914e06-f4bb-3b52-4756-1a70107c348b,2351900268,6268058835637490336
+38d2d70c-dead-8941-1ad6-9f88d4ce2c20,2393275505,17683271195379807234
+853e06f1-6923-ff5d-41bf-af22789e4798,3502169718,15218592017734796130
+73422cef-8a07-56e9-5155-dfb2f2f4a828,2059228808,4551567755780330875
+01441777-a8fc-4d95-f01c-6ed4316d35ee,1761625214,2344137793988869738
+a40a53fb-0b35-b218-5224-09c2820bbb7b,2803392184,4598303608796388130
+f81b5539-8417-79b5-f5bf-351663344bbf,3941819598,6470514085496716457
+4f184065-98c3-e374-714b-6272aee51399,247869820,4676827408617376675
+8c9f1f15-33f2-12b0-f2bc-1883d50af2ea,3504781455,3037675843549427512
+5705064a-933a-7a1a-bab3-a593f18df173,3132409785,6940587741964130611
+ed6c3cb7-908f-ac43-255e-001a8ec1e519,2658369814,1579866767103797504
+ce7ca12c-1d78-e3a7-11ac-5a734ae6c992,1898500725,15459370015093865528
+4663382d-5529-9f69-8347-65bab0ae6de6,825147199,10891489246261573137
+782323fe-eea4-3884-cf8c-23882e7e1722,1731292601,1334961722918447201
+5153176c-4c41-6523-07ba-0f1d0521f1b7,3806243576,13865966573931157744
+011aff53-fd1e-3c56-0db0-12c2dc60ccd3,4232619108,1889270707570933011
+3d1bf5ff-597e-1c3f-d46e-a6870e33b75c,332693781,17611273176862795148
+0c125965-0c3a-dcd0-15a2-607a31aa41bd,2799715472,16609810954393156772
+5b48f286-f5e8-97c1-1c79-d0f32be7af74,2933887686,5292501377718326070
+d18cc80e-0f10-efde-2b37-d839289d111a,142680495,1266038226160406409
+59745f21-7dc5-8363-8786-e59ccd6a840a,1680112842,1311877980970600716
+3657e9e5-1718-5140-aa5f-ab482c1ba126,3382058007,15244479008552445537
+3f0a7710-53c7-2f09-624e-6beb4ece2330,2014178231,15678290418014073429
+d25eddcc-12bc-d1d9-bfc1-68877fc335c6,762942557,4757496483002257544
+f3c1c398-7d9e-65b9-9147-d1cba296996f,1319703438,10590692108706544474
+5e00adcd-33d7-873a-6e20-8d0f049648b8,204262038,7803703071437798205
+a351e951-c8ed-826c-f639-e35d9c137958,476496098,13767210609143453108
+18e02f6f-c1ac-c616-0edb-6e657708601e,627866688,17028871188679304149
+1652af8b-7fd3-9ab9-e84f-49f1d69fa555,1389480003,11336409337945192880
+3757246c-822c-e854-9529-f85eb45182dc,3263272481,13476422848246018457
+3f76675a-539e-dda3-da10-a7de4931e59e,3696441529,5327814397236046309
+8acc8e43-e59c-72b7-c702-c500de9ea17b,1876263581,4615838190843793053
+357e87ab-deff-121d-8a7d-2c11fe117c43,212736738,15739657713644954743
+19b71416-1841-4464-eeaa-007c011a0e1c,2495961402,14167027403339590381
+8a7d6e81-6f6a-886b-8b9f-c825368cb425,226918202,4039340216033784017
+33638b15-457d-6331-9186-6352b2ccd070,348141818,1024203544269735928
+7c1370e0-1a35-8647-64a1-d362a5aad010,1949741166,2470382767654450663
+eb541363-028f-8280-e214-703c000597a4,2418009456,7417518233241093803
+38aacb48-7ca1-9bae-3560-b42eabdd0055,1227264472,14448122790898104577
+e0ba58b7-a09f-cac3-70fa-077bacdb984c,394002854,4203263144532018612
+eb197f07-026c-693a-571e-c9f61922ec11,2182600813,14676059661320048866
+08e298c5-6d48-17fc-058c-0b446036c5a3,2119195033,9224705813746256240
+c5abe447-7b11-74e6-4b37-09a8161b6359,345320365,15513800537425210904
+1876236c-d0dc-0776-71e3-2de541789cf5,18827058,1553621082701911020
+742f0796-2bb6-7331-a558-6dd8302b0026,3897596256,14863169089083926666
+0f5fa839-a86c-3194-e237-d69172f20c50,994957467,4892969575482658288
+bef2cc82-ca07-579e-408a-412ab3ae5fcb,1720510370,17137098199800857932
+d3d18fd5-3390-a876-ee03-34e1edf799fb,965850129,7090785591632021209
+c73f5d29-46ed-173b-2df2-b6f4fcc6bf7e,341718169,10803089009866997480
+9d00b62b-1da2-86c1-1763-9e7c6eafbd0e,545226420,16333975917946199542
+c8f2429a-8563-754d-535d-e3ad771e44ce,939813493,15924983621670987229
+8390316b-b9a5-2c05-e667-3ee770d65e02,4064766640,9384331410892520776
+5bc2058d-5f4a-d251-1c30-6088be0e8e9e,1170172633,1178184074021435567
+55fbaf38-4e0a-4eec-29f1-23be4fccc1cd,3734345024,8406854746180506665
+b498774a-9a88-05b5-801a-05d3b169e05f,3652449816,7015388189335219370
+a7bbdbb0-6144-c94e-00f2-a4c0a84d0ebf,3649004142,7799139294137604840
+959a0e0f-b223-77b8-df95-c756ed8dbe48,3458988905,14707907262763975960
+a9307c4b-8757-8e58-505c-18c32a84850f,2873515462,909903093739290177
+643ca342-f40f-8d13-98b8-481af93b68c2,976497447,4010313423664742593
+3a6e9fd6-8315-2e1a-8f53-bffa0569fa5b,885233217,8445766945498746037
+ec085dd4-7c8a-272f-4779-64b16994c18b,4286514260,12217546940378477658
+e8b92552-c638-9919-a8d7-cd14b5080652,906224469,13116988286917869699
+632cf882-eb31-73fa-33d0-d8ed1dfea591,3565504492,16800058435803464300
+2ca9e42f-7e90-3c83-a384-89b821fbc2d7,4249333987,16088340704857307429
+f627c885-be52-e893-51e8-8cc6e3809e6c,34840628,10555290273648186638
+f288e632-5180-4fa8-5c85-0223514be5a0,1106585926,17820965283897094748
+7c6747d4-e571-b0f7-89cb-beff60b040cf,3312522657,10836305611672778838
+2d3ecf21-37f7-5205-744d-c1e9b2ea66e0,3172914513,13218980413631044843
+99e45efa-d52d-1128-89d5-2e040126fea5,1848850002,1384736372301783441
+ecd432b8-2d6b-8ce5-1bab-15f38d271c39,27193911,1948529181293518363
+88856db4-c8f3-34e5-98df-f0c614aeb63c,1646156651,6930794598575668535
+59ce585b-5ed5-923f-8a4d-5bf9de4318f2,3629554472,812063636059494548
+19caf7dc-4184-2f1c-8773-f522439763ac,1178511222,1832536067690325888
+13c0b554-a828-2adb-d94f-8d7f001407e7,644837385,5067300093030544033
+5f3ee165-dd5e-e15d-f1ed-e7299cd97e0c,785988679,7175175062851947824
+ef8ee7c7-fdaf-a3a4-94db-20ad7df6c821,3603613467,6088406659993723622
+27f26432-acbd-c6b6-1e3b-4fcd8db277dc,2268471794,16086387397063947845
+b58e174b-2fab-80d2-82fb-4a48556aae9e,2783728609,17282963599579184396
+66acbc2e-258a-50c6-8f4a-cb242a009e2e,3971008520,17479402389901065239
+65eec8fb-6f9f-e91e-f396-5550091c6da4,2966409472,13760010339131088665
+6a2d0734-9344-435d-d205-42099b7a87ad,2957316567,286474211599349291
+10e98ce2-9272-5fe7-a0b4-b5dec678f000,1103115474,11934448362802973640
+0f52b367-0f20-5210-8c5b-c4cd119a3f76,2556467355,13872467225915386417
+3ec1e834-4e66-58bb-5e79-3665414131e9,1129840394,4346465354929165911
+0723d5d6-c3d6-daa4-efa4-37aa1b66b7b1,2516493428,3558772008740161473
+1ac147b5-0bc1-9456-957e-d380bb10f482,1254441225,4380376162077806576
+b8053f90-dec8-e397-203c-d6a8129a99ed,572787215,18193050992880337081
+eb57f9de-7059-6b66-7002-0c01583931c1,2942608218,3178210404075214556
+f9c35965-80f3-e3f7-e72f-058841574159,1542513825,17470652785110957987
+2ca62569-5974-b8e8-a6ac-c1c4ea458df0,4108747274,16790486559519122772
+c9fd27a6-fe7e-c6aa-61bd-9a81ffe4d5f9,4054109701,17151577207954137056
+75543a6c-3fb3-2cef-f07e-a1ddc449e704,3342879447,16853543818699412341
+8f4dcdef-9db5-bb57-d25f-b02e7412884f,1130070337,11263457300830315880
+d6b5dcad-afa6-2479-0b53-accc0895bbb6,2250195254,11095626358486282639
+9458ba6a-81aa-cdcc-2947-66ea183ddabb,620969725,9211629515635427525
+61c05a29-f7cd-6321-18c0-66994cbb1f4c,4037954545,7163606927292562827
+5f66681d-3862-e2bd-4e5a-e6f30d98f49b,1828354603,1106860867603592707
+359bfa9a-4ce0-2f58-5d82-26809831db1c,2542870179,7922099206248417260
+9d15f393-b5df-114d-d944-3336ae582424,704834209,14786370219930752711
+e15a4f18-f0b7-5b4b-60b0-cf881cbf8704,1463197755,13351894948053045330
+17f55a91-1eb9-a480-4057-af0997273277,2865965019,5396337987121761978
+53f8cb55-7f3d-bc06-287f-395a92af039b,1006535704,4010292059188655391
+f5f90c03-fbf8-c92a-3e70-c253ea761457,1486488450,8684015660901152922
+13f821c1-e33b-4792-9d58-e376627addc5,1822556426,18441432191302797491
+41c7a3a1-b783-9ff6-5a15-8dddd9d6e756,146787545,2676688287076915802
+b2c3d13e-3d70-7020-1f4d-596b30756c9b,4132311994,1580871101059379192
+bfd6ed0d-cfba-07eb-4494-458416df60cd,3158951633,8169308889584171739
+f3df181d-8f94-3300-19dd-fe80b77c28d9,3770771362,2145581313431167918
+bccfb286-302b-ca81-73d9-21b690cecf33,1407014823,4867662402669613545
+ec7cefe2-5352-764f-caf2-a4443ba8ec44,2757458086,9578281607720755955
+a942958c-1bf7-0849-3ff9-22811a78f3ef,4236425170,2296108556047159738
+79aeea95-9d62-c172-094b-7427ba7b6ae5,765522408,3553967382991404343
+4b7f5be9-e9dc-8aec-22f0-a91c67cfee09,1826209018,6506301994190134999
+de1e55c7-3a2b-793e-81b8-eab65ec66909,2062059675,7069862605283698646
+247cee3d-006c-266d-612d-9cc841c9fa50,2192226345,8330738614003151493
+7b73ec7c-297b-f449-7142-fe74a503163b,3135148238,16183260499033530646
+56ba3ec5-ae30-87d0-a6f7-3a1b9cee358a,3061738915,3085516388220507502
+94acd9d5-4423-3934-5dd8-20857b444f58,1805990277,10828989204380250431
+967c6a81-89a5-06c6-27de-ffaf785bcb44,1029865426,3608898556765854112
+4f0f900e-4573-b3af-60d7-5e805686dffd,3250181158,14798107046897611198
+eb9774bb-c026-eb1a-5b94-389532f058be,963822409,9653725191824062238
+48dfebdb-dbb5-4f32-6423-ef566ef48566,1023309387,6520325853764286915
+fb20ee77-0f4b-1746-086a-497ac2f25c69,3280848235,13346412330952256075
+15dac72e-c95b-d2d9-921f-6597150feb19,2721383846,10653527938611502032
+835c3a3f-b0a8-ff4c-410e-458b9bef218d,1341361126,14479108561536761996
+0ef6fdb8-8576-b7df-0e07-580e42a4c178,2464859553,15007435319233531402
+30eefee5-5843-67a6-60bf-e66628e900e9,2476493111,1071148477988786313
+c1ea5684-2e07-0063-a31a-34d6c62036b7,1235432270,482799221631574089
+e769794a-64dc-bc47-4f00-cc7566041cb8,3355423744,6005999505162243531
+1f76686b-b46c-8a8e-237d-0201c43b5586,4284436600,10605605317368163455
+c6023d6c-26b9-9f63-f994-639b891f054d,916513325,18438438921005519753
+53e2fd86-fabf-9a9f-dad4-fd67861cd233,3753290440,12869191908845240472
+404de4da-a437-5dd5-be7b-18c06d1e0816,593612570,20316938619172797
+1a2082fa-b3a3-dab5-cbdc-cf5e4514f11d,790339734,16804588346092280390
+fb7e5030-6e0b-c88d-c954-f79685838996,1790518861,1020594506707306874
+f51d1d97-f27c-6245-8853-a232103ba1af,2686482211,17361176282453089685
+8d8fa81b-f897-1ffa-7307-7f36fd088e19,1622014173,8623129730428905584
+ace69d48-17f7-11c0-106e-19ac7a0be3d8,2530845164,17114719569833574732
+faea6620-0068-9e58-6165-4a9c03c45fbe,1478240284,1622191016946325353
+da4aa714-0d8e-1a20-967b-1153f86c9339,4218552337,3080055643483839073
+98667174-d65f-5924-bdb8-f29683e9470f,1627772875,14654463506626494373
+3644d669-0600-3e9f-875b-b72ec11d6f55,3974002034,17626441359905596353
+32683a69-9789-2c4c-bf23-8c9b5ed44230,2814358033,1234476402016125555
+876ffb13-6581-86d7-02cd-0d98847679f4,931506385,14268728833556028032
+0f9504c1-639b-a583-e773-5cc5cb745b21,1628852850,12095383498762926162
+7e95a6c1-b846-0030-064d-8bb478bfc4dc,2579067409,8974135464176482664
+e52f90c2-a601-9814-1129-975b1d4442b0,3701296376,8560355141004175594
+03ad3134-0f8a-3211-1828-46866cfe6a2e,1449046446,614028578983911139
+1e3f4c49-939d-581e-2513-76b13fd42e54,2938026008,1751819562193212235
+539f7d62-3656-6647-4c9b-6e24ccf0f1d4,3240602862,124219419600312121
+2aede527-fb79-816a-8fbc-e5b56ca59370,4000823573,7884741124301148352
+c809a9ac-216e-c208-f39a-f6c073daf5e6,1199986682,8610227798325978107
+7959fddf-7e6f-a2e4-c0eb-0086c6f1f0cf,377272731,8136969635103014657
+fc65f4e9-3a44-bd65-b85c-2147dfd3af06,2421708632,4522554539996980029
+66ddfa74-4472-b0b1-925c-067dd73bf508,3615596234,4976465216464756889
+bb39b077-5fd1-42ca-065f-a1e8d5f4bb81,1287400677,9585204339801602420
+119cb8c7-883c-b140-4903-02690596f43e,2030709595,1881138391585421136
+0c176ab8-1127-c08f-8dae-80a2daa3eb88,1315364721,14768538215859363217
+eb04b3b9-78b8-bce9-7a42-a78358008cf9,1759915178,6959880475480919367
+62867eec-ed20-83aa-6c3f-3083b17ec8a2,926667967,9442561555812612341
+d48d4bd9-2012-d1e1-512b-71739aa4d29c,3375982512,3170443983782368058
+db1dc32e-5612-3b82-06c4-1ca1a3f05fb8,3086886424,18310796484607613407
+3c2498e8-0ec7-7c96-1dab-bef45c9f64b1,4121588935,12411724722510434729
+8e183add-b7e3-fd93-7832-f92e221b3597,2537269979,4601433891987335273
+a89bf200-85b3-a529-59d8-693c7ab76e6e,1672208072,14540462704892318708
+c005f73f-35ff-ecfc-9304-4860b0057946,2243033211,10919549769345974370
+c472331c-b9bb-99a4-a1df-b1aacd5c5803,4215625759,12006665368002611727
+67a6c874-25d0-b814-7983-f621fdbcf43d,32133393,8618989883951011630
+e0a3954d-570c-5a6e-cd8d-248ed4ef3107,4061955298,18167991453820716557
+c3f43cf1-f034-42b4-1aa3-4667ecf49dfb,2316450708,16840946543875473826
+5396cd7e-3df8-53cc-59cd-653bbd7393b6,2090199203,16751915553301307777
+2d25a28a-ac5d-8d97-6d69-26f0aaa0de7f,2845114245,12657232725585355990
+7c3daf68-d614-c196-b3ef-0a966a02db22,3616181698,11470809406789697973
+e2874105-8f05-83af-af7f-4602cebfed18,2542492762,9050869885913926343
+f690dca8-3b04-14bc-7d34-82ba6912d7be,3658818182,17862154218123618260
+5298469e-71dd-5222-3ff8-6053a7b86059,3691716167,15553703457468188214
+ad405f39-45ce-ce1b-6624-881906062977,2932175046,16771677264724030278
+81259c8c-ba0b-ad89-a9a8-a86c4d2a3ba4,4109501783,9079391821213488111
+1f6c0ed5-9dc8-0143-68e6-1cc3dcdc33d2,2592967048,7671853230519574733
+eac32e68-f237-f0f6-2ca7-50cebfd3d7a6,819868875,2718819127948080088
+a6ba3d58-0f28-6d64-2324-86371867ee2c,101917691,366877133476922286
+d7ba19f0-542e-21bf-f9ab-570c9f3c7ab3,3398972868,11323074863609319069
+a3ef2b71-90c6-d17e-8a85-1658fdb952db,3319032043,14883399915230182595
+308342a3-2db6-f945-60a9-c502a94cc577,2160048705,7008513700200725749
+36f73611-79d9-55ed-e3aa-4702b4b8315e,3569422400,3291342622170190279
+df0285a4-ace2-7337-be4d-8a9f1e10f14e,1729280995,11606155160574432532
+9452c342-eeaa-1be9-1f06-c8a77b0c1dcb,2259754552,507925616530327839
+3c39561d-f47f-8729-c648-ff1c20224223,793607887,2993050486484024084
+c317e065-a28d-61af-2965-87f7f2783707,2963089402,2287080461772051590
+4d59752b-f2d6-18db-f856-6c5c81d56fa0,1851077770,1960073756865316982
+106b5060-97fc-72cd-bbd1-6a46cb8ad87a,2592390623,4649485675598028554
+ab849263-8b1a-f53b-ba24-88906b385c70,446001754,17933179892034236430
+c8889608-9a4d-e03d-a1b7-22c6b6ab718f,2103063592,2435452709916694415
+4192d71b-0f14-e8f8-601b-a5fbfac0340a,994804853,508020651352695595
+349e5010-d286-b2c5-06fb-eecb7a03a4f8,3396920948,12657544380260667869
+cbaffb40-acca-d950-9e29-596702aa6635,784063541,5593188552423600272
+6d02327f-a38d-f392-65e5-2451989e9844,1513651455,8711783080033061299
+58a7288a-41d0-7ea1-e670-2fc531f271d2,2002149175,260191089344169295
+c5c40aac-4585-9f3c-6bae-3b36ada8c254,464858348,1147655692374112517
+92406629-f306-855c-1ab6-cb6b84fbe0fd,691499473,8725827879411910426
+cda6349b-337e-0003-e710-9b3697207c82,3932424484,10632512917250965457
+f2505f84-f400-fd54-1d9e-2ce26a9b6768,4035180627,8397660894903483336
+a00a8519-4b20-dbb6-c1a7-d56aef7c3c85,1004606087,10219719914402579651
+86eaa8da-cf0a-f515-00ff-19c3639b2985,42347098,792897492224042581
+25f0a2b1-48a3-7213-b9ab-bc548ac04633,3893987786,15093318443804482690
+ecbccbfb-9ddc-8b25-b0f8-e11d8b86f7d6,3180885581,18298939128074171323
+c2a9582f-4cba-48b9-c8db-64b10335dbe7,3533364601,17450245279406233957
+75e6ce31-c869-f97d-852a-a8c08dabe9e8,3620923197,16063431222400077069
+45ee5e4f-1c89-5078-46e0-c7d48266f610,2278467523,8647817959207653596
+90a352bb-ce53-6d56-c0dc-d2078882d945,1603002659,16558777843180147222
+457be3dc-c7c8-babe-73da-6a8c08b7ad1a,3624970013,8400187886993724605
+930319b1-e9af-93ec-609d-f8ee6698fa39,696418963,4149771359182224853
+a63971e0-9865-9cdc-784d-ff6372737a3a,22149518,7040953491181413262
+e184404e-bdec-2a6b-0dc5-0240dfae34a9,2702897053,2978675633229890694
+8c4ade1c-9aab-5d68-ada9-f40fb6720b89,150047945,8479271679584751930
+b7d816d6-52a1-5bd4-33cf-d63f7477f529,17129067,907033514936422052
+4912fb25-2835-1e56-1c12-c0966e4327e6,729537327,2814948063838230255
+5603c7ce-e8f4-8c44-2276-54ef2e88f273,1123266673,4942922154471493234
+9fb65e9e-85c1-86db-a959-5c30eb1e2a20,795475585,874101468983436983
+a0370866-2401-946e-07f9-ee62528a9945,521724869,8404447643919705255
+4f5d040d-1bdb-34d5-23de-9965c81c10b1,4286686843,3125735071853346784
+f74096b3-a533-9a99-a39b-d86f7e7b377e,3478989974,12654820900877593740
+b53f3bf5-dd20-4d3d-916f-d414e4f334db,315311219,11460571514222928246
+1c358c70-6e25-0932-ca37-aeefb05e0941,4150999616,6344659359096968019
+615f38fd-5bb3-b6f0-5916-664fa8ac789f,3151822025,3967360379057417166
+6a93bd0a-9cca-5323-34ec-a41f3bff476a,4167674165,12482013869924099989
+b4c68058-a46b-66bf-3c5d-15935d3319f7,746146442,13865911437457879136
+c1bbc8b0-dd0c-48ee-09cb-aac0dbd6fc54,4113734010,16236438899064411331
+4ed0abe7-3f11-ac84-7ba6-75e09a0734dc,3979620284,7084046059845526935
+2c133ef2-6889-54c0-9b3b-14e90395ec30,3286000152,8621580281011372925
+defa4df6-93e7-0dc3-f12a-8ddd20136b71,416452354,7319265766787224642
+6295cab3-8d9d-a36f-d3da-dc0a147b33c8,1429852908,15818174921807885043
+d771d19b-8e29-96fc-d59a-d77c7d3ac5e6,4231547800,9082543720199400041
+2a9953f2-13b3-b50a-7b57-cf2ad01cf9ad,3724141336,5602651647085636757
+27b4f87f-8efd-7618-34e5-eed582e05325,4065851353,15890898367196219587
+c98b37e7-9377-d75d-9f93-f092d0b90a4a,3440526619,14564943980807481492
+f9f7f7f8-0156-a15e-f668-7d30cfffc99b,3811952863,17023880494505109527
+7c17f665-1e28-7c1c-3ddf-2f8f20e1b40f,2081042082,17158513707181427616
+066d1321-d0a4-e0ab-de00-c6453bbe80d3,2569494828,184707531162041022
+dea58cc7-9937-fc25-87ba-0c684ac287b4,3113531172,9663759963625917073
+0ace48c0-28c3-a162-2022-d45f2971bea4,1769651297,16214019153554365260
+47af1b59-3f39-c4e4-f2d5-93885a062ae2,3516845809,6430192320496743403
+9bad9b08-7adf-51bc-9263-a21cb6de62e8,1077046329,1366118724949745859
+97c96a67-a0c1-cb13-6e5a-a324c277a401,2633063936,1909830466382807980
+f6ac5e10-b64f-d7b2-cea0-cb66e0b84a9d,4074962334,3257989249434021559
+75160399-ec32-6803-bdaf-39b26baf060f,4063748799,13165064863459081200
+fd786316-a97d-1a05-790d-7583964201b0,1474034639,4521069555538753315
+90086903-135f-d309-39cd-846ee2d143bc,3896146039,18251386952268823470
+b7765478-caed-aee2-143b-cafa7145f5af,2042149295,13328965396777815273
+7054efec-2a49-ab25-6213-e4a35b2b3390,95208634,7834242540486000837
+a154fddb-de3e-4b80-f70b-27d367f08e10,885010796,2473021225119741521
+3984b097-be73-1a19-ccd2-98e1a6465e2b,2395261521,8711536753030255876
+0d3af2bd-6725-f941-6928-881633723769,4175322946,2081456487381384445
+c0ff3cf3-179b-0ec6-e9ca-f2e18ff1d2f4,697904629,10091723575902814683
+41bf8dd3-4d91-3655-f428-d60b260b7689,1861504098,14097255447435645330
+e840f47e-8d81-8c6c-9cd3-5f0ad861f555,241968164,1366130089062265971
+3950b994-f319-8d53-bc2c-f68f7af0961f,3879018027,15710217963773090812
+ea059bf9-8376-a23d-bcf9-e963cc9f4b52,1333406476,7163201658230349302
+48043870-100d-ddd0-ff52-ff914275faa9,2641439909,7809647463807090835
+d08f0a26-c13a-7754-9b69-68a38a18f52d,512570685,3573780976092700824
+ec7c6391-3f87-361e-f8f4-66080b00e20c,2191718477,14935312592745379377
+9f45e2a2-7d56-9d45-9235-7de73362d2dc,2195514215,3720776594864244559
+ea6c7e9c-64c2-60ad-1261-1e0fc8341970,171586863,8403539998900273733
+510a33fd-fdf0-6d21-ae2d-2e32413d62e4,394119845,1731961545385748413
+7672c5ed-fe25-1809-d105-28cc40d401a6,206451563,16293027288375593274
+ee45150d-2c14-86c8-38ad-5015e8bc5fce,2442388795,8068974228722253236
+40cc06b4-63c2-d22a-c4c8-8c8db5279adb,1274612703,3735393183737329716
+17d9556b-d165-d3e0-5f9b-35085124890d,1289318232,3070849906512718635
+06c032b9-939a-7bca-d3cd-5c34ab35d477,1786075111,6355840768191616301
+ffdb8ba6-0438-21cd-c0c5-f7d777bc8949,3207200639,6429161713947375467
+288c9cf8-a61b-5ef0-7607-4e40898712f1,827992055,18136457408376017894
+fabfa917-349a-b645-bb80-28da173eb327,3848650109,11187284242898134486
+14c3cf48-cf93-2ca3-ea4a-2b23e2278bc3,45833800,5250945872868531992
+56983a07-f618-7f64-8aad-2b06bb58d06a,1392041533,12739516909653150391
+ba3520e8-efca-182e-8e59-5ffb39b4f19a,3830584800,18293590589673927965
+d15a5bcd-d377-9876-9f6b-1d68d1e52623,228340998,264278632381260791
+4fe2acce-a2a8-efa4-2a1e-c662647d8643,3527854163,18292516526242562524
+28c1c5a5-8dc5-42b1-37b5-6aeda241c8f4,699623307,6819053203484821650
+795a711b-3e8d-5ba7-2c33-763122e60e45,2155003800,8601953966151119199
+5a35aa5b-5230-af7c-377b-ad7fc7ce6c17,1888057835,14524342638463946281
+d4c713a3-574d-09d6-6d76-505c32c5f5bc,692262682,17729062573419242182
+7be3b96a-faf0-63ac-3a73-168cba13f530,3747394970,12390665211775797166
+bef75fb3-088a-8254-442e-28d58c999dfc,1975572237,18289877059024579241
+63e53c1b-218b-855c-8175-5ca8626cb780,3528900746,18127939725799886970
+eec4c625-e472-1b0a-548c-da35ee8b11bc,1427734104,8043207812326226157
+4c598b05-26ff-65da-257b-9a36e841df72,2200103626,13368682020393947098
+43dd4403-ab17-7204-5e2e-2137c9181ada,824134958,12872205034257353439
+25a5a9f2-2005-d4ac-5dd8-9971e8edc2c9,3147183212,10453255846772121118
+8b47de13-b019-29d9-cab7-b37e919c0fb6,332283644,10924931141532967049
+7133bb9e-9485-d152-aca2-407233c8e7f2,2198951154,18237170472136592126
+79470995-72fa-1504-449a-834d65730913,1496717889,10091170889985020181
+630848f6-c556-1a09-fb6b-3541eed86a80,4095586731,14730387703503159285
+9a3194c9-c570-3a2e-0d17-db97d99c2151,3593087138,10598844062973568586
+3fcf7dfd-d72b-5d3b-bada-bc503f7edd6e,770744588,8195573395215677011
+fe67485d-8aee-bb66-461c-9904b63f7647,3304169583,17864584344229169361
+89af64e5-ba4d-9405-3a49-7810d942bc6a,3224695500,11732862943094164604
+8b8042dc-c9d6-9be6-bddd-2b3211a175fa,687119465,1307085782026944440
+b08cf07d-0cae-863d-e377-a3e346285c13,2670939356,15932519174018189395
+2f9143e4-28e3-d72d-86fd-37f1282a28f1,3868370979,6735932177571616205
+85ad82cd-3cc9-12fb-98a0-c0a2fa1ef780,3696299587,8141470047384814184
+200aa3c1-ccdb-fa0f-a6cf-0ae4620edf98,3601645452,7327675285477755704
+05d6c614-a0cf-1f6b-abc5-271dac60eeef,1961043544,17471612073121981913
+e175a82d-4610-2e4a-b725-f0e577a40535,3781403179,15798667078709510238
+73a17747-62b0-f02e-7083-4f351573cefc,1982855097,15773505305178629082
+a9ec4c81-ede7-0701-c6b4-e80761a3bb8d,2535415555,15292629786853429961
+ee9ea254-fa18-259f-cf81-bacd70df8aa0,1630473616,11314720910560920776
+fb417ca7-4843-f690-0621-94e749f61191,1542547650,174076827765949546
+ecdf590b-acbb-2ee2-0bba-6775e78287ae,3791115915,10228824041308215994
+c6aa18b2-b869-dca8-2845-6ff3fe6643b2,1746490621,12062602202889038189
+a9e41867-33b0-fa5f-755d-d1f84b75791d,4238304505,3921009682681271793
+6989a6e6-ba92-addc-6682-a6007ab8a032,2811809031,8898879203624816600
+052f5d0d-3158-5a75-7b59-91a74c84c13b,1315095322,14446716128019600605
+c16d222d-39ea-f3fd-e831-0d7938e2f9eb,2465616597,8640038103861953495
+eeeda885-3db5-e4e3-c925-a6c1f57d817c,2301724448,15762257198334198625
+219d0200-0a91-a78c-e481-7136f78cb3f8,647723701,14750903208486994882
+f80dbc92-6bce-1d5c-cc2a-51afd04ceac2,1476120722,638230525273650919
+98075dca-341f-2a98-b459-14b71452cd9e,2045062849,10184527322927778844
+ff1393c7-38cf-b33c-ccc5-05147c2a66d4,3217411750,9452461354288046342
+5176d533-1b7c-0579-6ed7-ce4f9eab0a5b,657458248,13027549938747413340
+76864025-d5b2-9adf-fcdd-cb856947f6c4,1804215034,3994147025189605609
+869b2c5c-527e-ac8e-a0aa-5fbd3c8bcd87,2893598605,4411659217430550844
+27b6933b-990c-4739-50dc-1a189b2e1a0a,3114607126,17074654797059161244
+1bcfeaa7-dd6f-dce3-c8e0-5119b589faa0,3283763528,3900601423388289346
+ee9ad575-d5ad-5a39-0590-aaae40598420,4214439205,8152688198915127843
+a0d6d789-2a31-2fff-8edf-3261fbdb5335,3540687348,5190698815866169242
+7617ec0a-4e8d-74bf-f9fb-e327719fe4ae,3146161061,6473422971543552291
+6227bdb6-5771-7005-a4c1-aa597d49077e,1223995043,7069715709274198585
+96bdd5fb-3b83-9102-e74d-9f2bb250208a,4034856256,15008349633138853587
+0b911732-8795-0f5f-d203-d991551b1fdf,2599420435,11052933303278461296
+76eede66-23f6-86ec-b033-afa2a68bf3dc,4085691624,15674611354334680525
+6da1f115-8a49-82fa-f319-3adef9bba025,3846311234,1666772193957576091
+b1cb212f-231b-68c4-1953-7f4d6ba64170,3069083819,8829621664823494986
+c486d3a1-0c18-f95f-ab5f-cd16342cfce6,1206757174,5465251868478647466
+e7c9afcd-541b-0ae4-ccbf-1113ca1d4efd,4087394209,14361275125081898209
+bb13905e-fc8c-24d1-9e3e-826762ab9ca8,839437216,17791668542568128234
+3d314842-3b5f-a7b4-30f5-a097cae1ee19,1990263752,2941679427410264399
+fba248a7-020f-5390-d41e-15ccccd32d4a,4242776895,6186062888665980301
+1148b229-8e4c-a25b-d261-04a3857e878e,560758188,4967515024294286287
+294da1c5-87c8-14c9-381a-d17ca2eb9f81,1940856035,3497386582082597091
+4d4f5ca5-30a5-cbd6-078e-a5fb00859123,469791585,5303540882290655661
+2aa563bb-146f-4b48-9ef0-7be2c2fad40b,2538641888,9787054891937632116
+11b7e3b3-734e-68e6-a9f1-4f895d83012c,1963817152,14003464061733511939
+a65128a4-7207-82fd-a525-17b8399d2241,3535939883,13458829901344251996
+3a2bb0fe-f1e4-5b24-5d92-c6c8556c2dfd,26735968,3855250363797128587
+ae06e62f-708a-a0e3-b2b6-9d71848d6aa7,2156257766,4985527950589033419
+e7c31161-a926-0bf0-d895-b1c29522ba75,104629421,11226949892911828807
+55c1ed71-9761-4eac-6ecb-52ff67078fb5,2685649186,949614410340067328
+df9ea633-0364-1586-3431-505aaa2cd762,1072239177,2735421574145637062
+e6ddb18f-4edb-ff4d-f27b-a88643d38cd8,2700249987,15059764870354064084
+59703b12-951b-75fa-1c8a-7b5894d35bdc,3576954305,6260150271119418724
+17dc1a80-8fb2-8b89-0416-a34c4c20c5e5,2015030336,9816125236782037051
+597063fc-381e-2ae2-fe61-a69b43391824,347596347,8174874325267332110
+2a68e486-ca4c-4db4-e7d8-5135e109dc37,4044385652,14776967391449806208
+5fd78482-3393-a05f-5347-77e58bd9cac6,753923885,11813444284678628053
+4e84eabb-26b7-24a1-ec07-521c331117dc,2655785281,13763629729250807218
+a8ff49cd-e5cd-9500-bad8-a92573d3e6b3,1340211877,9125366591008167491
+5e8ce93b-7f72-54a3-8131-40368e404b0d,1767843520,3122928839236975925
+d90dab14-4808-775b-5e79-e4f8f3ca3882,1187517853,5129542221871878818
+c6125f3c-748c-93cd-7e2b-51b0f9a0773e,2915873866,10735972452036074518
+ed901cc1-b80a-8829-e589-2f63c1b4dceb,3495491992,5059444607135692892
+e510660e-0f1d-0c10-1fcb-74f4310f131b,2288235407,5423494483199568542
+e4b90de2-987c-f185-1be8-5ced51b3fb19,233763970,16781734628578189728
+74ddbdff-10ff-fbf0-110a-ab2d8b3c30ef,899772699,6016670806703293034
+08f02c09-553d-ad3b-ef00-9bc0e1de50dd,388579739,5746480318153969825
+7d46428b-5566-46e8-d7cc-dee428c21255,2547807291,3767922630553229510
+1dc3310e-8b50-114a-5431-50037c1cbb3b,262885124,6729348613656649470
+4be0dfc4-2ca6-b813-73be-cbbebae1599e,204505092,2513102718451134698
+312f7531-291c-3fb2-7ffa-e1dbb5f43d14,2962293507,6942165831495206134
+15420db1-c8fe-a3e1-fc5f-3b132742ac8a,4029118531,3171626795178739654
+e6c7d8d3-4cff-27bb-ca49-fc2d56e977a5,71285743,4709582942686896607
+05f6e792-14f1-8e0e-8b77-ad241493b80d,3127434844,190147988215388022
+b9f95ac5-22fe-1f49-741f-3b3430a74657,3309705542,15918436426250083548
+a56c055b-b760-e856-e09a-82a76e74f1a1,1440737479,3607091557843114401
+df6b6542-f9cc-2d16-fd67-b388f2c8b6b6,2382030249,14837570152975893100
+5849de3b-b492-ae3b-7aac-7bd0711d6a66,3635404363,10169184145825957569
+10a1b99a-9a05-7a72-299c-dfcf74848d3c,1997080635,5418568982808445651
+41009c20-7553-018d-5ccb-484049b15eb5,2061862552,11078245273014656113
+1d77efa1-c691-cc72-ea6e-cb3b25dca1ed,2121372897,17679291756168526420
+bc996ce7-bb36-3a97-8249-0fd2042d6066,826970746,13387586947060739325
+168e1f32-14b6-7e97-3fcd-3f090baefd56,1395529414,9678186174790334854
+12021019-40e1-6bee-8072-5eeb1a8015a8,1885536676,15737514041524538901
+16e2540b-8be4-4ede-7ae8-ad3a6da87b61,3198237576,11521959704231335944
+b49f5a79-379a-36a3-4359-1b7719a5be13,197348011,11802346066899827045
+a95864c1-24b0-c99e-89d2-786c04e1dc3c,1595159060,14464057363690309911
+e73fc591-8bdf-649c-58a0-9c9f9f11bf22,1999740585,9339842092551194537
+a230731d-925a-9f6d-2cbd-430afd260774,3026952960,2236319279400197845
+640a03f8-5b15-17b6-7edd-6891a3a614a9,3252660990,15500664498489888377
+c7ec0efa-3caf-02dd-07bd-f7ce5a4a384f,660254492,1417241835563271784
+ec91cd4f-608d-3163-d96d-14fb993fb64e,3622448000,4444098030835377602
+cf43fa0f-07c5-ea36-6fec-f982b41e7b9f,3055303520,11671208302643139831
+de6bd1f4-40c3-7c1f-67b5-6dfa2808cfad,1023249660,2601222156216244207
+79598232-3a98-e7f5-56a1-be24ceff7c5b,3174898757,6441046226912769779
+c8495bf1-a832-ff43-2b87-7599fae7da31,1077928989,2165445547708087667
+7a587f91-ef7d-b0f4-153e-c76ca1f1b3fa,958788879,2313896481405630365
+052e0806-d373-47b8-f98d-a3fa9754af5d,2880440379,17525018295162706143
+ef03ee9e-f0c7-b0ae-90bf-829c08b9e4a0,2564249747,8726226928044903513
+82302578-c734-298b-ee38-e0bf33bf3954,896356820,3454990253516840342
+9e41e7de-1c88-f4dd-b57e-a2cdc2af9d22,43669250,3624242474909211693
+4ecd3a63-0c21-5efc-00a5-8a743e9ae841,3891303688,6575059264624841414
+cf9e9237-448c-c4ca-7794-b92cf17ec6fd,2817241372,3926406937944450482
+951bd227-980d-93ad-e329-f8491453996a,3339667252,14611176228214036935
+5fba375c-fef7-ec4b-4144-47ed0d4338be,457153271,1180400450851695674
+15ea7a7a-f3a3-55f8-e64f-042fc0f22ab1,839940209,9729216263867689702
+58e8a056-e585-f6f5-ad35-9b012c8e2634,390369100,10333422277439476153
+e0b32247-112b-1096-cb89-454fbe609cd5,4011749945,8372701547867420751
+ccbabf76-463b-edcd-084b-be6b75245f3f,3917625174,1595984373627009408
+d3afce9a-21f3-70ae-d975-e8f0a1f36ac5,1999795145,11633412689323635754
+f22c1b4c-5ce2-21af-10ad-aba5986a5686,1096735865,18330044965947549193
+42b1d367-e17a-1157-945d-2db29593d045,2734687844,10591968994505894216
+2f0e95b4-6f58-57da-e373-5a70f0071952,2501851416,5345317589788381830
+fc9e9e06-4a5f-9d18-5656-7b922941e091,1641782337,783071407191467462
+32e0fbdc-3c97-2779-9496-f4f6c25da9e4,4276520534,11055582144462482461
+ddfac702-75c3-6d18-4128-dcf63ba13009,902270950,1102067020759854974
+b9be8cb5-e619-e5de-43c9-fc46ad92daae,3239581116,4721813367544137707
+061e70cb-f190-d168-0529-f9b3634c62b3,1921969206,5638541190818822464
+e48082ca-892f-56ff-6856-1f93fc670e0d,1118217287,2721933641506394216
+8741fb56-cba2-c3be-a97e-c385e1bbf0f6,2619862271,18122324458087198360
+5cf4c64a-42cc-97fd-5338-bbdddcb1e33c,3542661712,10898954515916486609
+4871cc72-ccae-4dbb-772c-d19ca2430220,2895603786,10747373503924917203
+2ce79052-a810-2f4d-07c6-c36126af3c38,3170010983,15780147528482290587
+1c25845c-2143-5142-e4b6-b2c4977327df,971873932,17471275571433960499
+618e531e-986c-a3d0-03e4-ac8ad3c63119,4034019085,552891591463482076
+083c6333-b8c9-6955-943c-7335cee82825,71487642,10687354879002577796
+e8b25570-e5b6-d1ec-bc92-db14db7da776,3227052850,16803516997173394681
+691a53ee-599a-f83d-60c8-2ff61cb36d32,3687751627,224604400950376485
+05a187a0-c362-56ef-5e19-df48bb4ceb08,169087556,2011220492126403952
+a8268b71-c119-dae2-587b-d4b051897721,2524453784,4677695679112329983
+9cab0c9d-a6ca-3d78-a13a-bbf7e72e2dd9,3569932544,6707943298625192562
+dff7ddaf-22a9-f835-bb68-0d01051543ed,3626762029,9860964113586652852
+a15ecbb1-2356-01f5-a6a5-d932a34d7a93,130275110,2681618689167652587
+1359d70c-f0f7-f590-e731-ec400c969a22,2057630517,5865390472282632151
+7381fc74-83e5-5909-d1c0-045de78e757d,2661780042,7445398736659988275
+f55f31f6-cb26-396f-9205-3aa120e2b663,726457958,8827710260373102383
+3c8cefb6-8e7f-2789-7ff7-70f5dcd06670,4075443542,13822956455752661845
+75ec5875-5f98-1889-f077-9ed26997b1ae,4239287170,13804786743817704437
+aff9ad1c-6b2e-95a4-ee18-c0fc138e1b31,1307904693,14988078398393878834
+deeb67a2-7918-52f1-224e-5851ce0d9ca3,2726078479,5071540854920122688
+6298b64d-7812-4e27-ea78-cf268a04e9e1,1535926128,12285910649574360725
+d9827d50-a8b5-18e5-7904-825061ec8abb,1970818911,5065830455639328422
+0b38a820-b179-fae8-fb54-761f280bdd29,3090001697,16866873619846708731
+272a36d6-bd54-3f13-5d64-a8371cc65afa,3151990420,11283216699238316652
+20125408-472d-4c17-cedc-5f58678ddd4d,2409687826,7631432031545803967
+75079cf5-129b-dee3-19d5-04bc09150eb5,438376586,9861794725716528674
+2f622500-04ef-6662-eeaf-93c4a987303a,3679546550,7886695887612176909
+6fb9e895-f924-4484-f045-854155b8a1a3,551948026,3563973539688300193
+f7ad4e54-54c0-29a7-29c6-c9b553901a89,3613152741,17319975877475668900
+764df929-57f4-24e1-667a-53004794cb3b,3088939030,16909840098012584243
+5cb420a1-4d9c-3be0-2a40-7585a0358e35,1532768739,9593006721939290128
+012c5f5a-163b-5c20-08a2-763a5760061b,814989753,8904015971533201119
+de2b3bec-87d6-b5df-2759-f43b1a3d1ccd,2785458915,11174361397021821959
+2b80b01f-ed9f-7a78-6773-1a6693a6f520,2865272088,4128843213069197984
+4719efcc-4a88-0c5b-1f90-d6bfcb460d22,1589718383,18402788666594798166
+88675063-4a0b-732e-c348-6db86b908e39,4225921693,12292216877716468424
+0e1ef121-945b-639d-e625-a6707a4557b1,2558577750,13303829368764594706
+fdba714f-2bff-c507-6a04-18cb1e5a9a4b,2350943912,17527798593832481954
+109d0e97-e2b5-f3c9-f292-c3fad24395f0,2036227067,18362885304348766459
+818faed8-9729-f104-5dc0-25128877ab97,4171763360,8823542760027599636
+a7d22119-6517-6e6e-20e1-aae2d5595044,2673890222,571745326338234216
+27749b81-d07f-eae2-3d23-f93241405f47,2353112626,13440896594889932844
+787c1e0c-6ab7-bb4a-717a-bb6226f1b63b,1539037373,16389507880379438127
+69c362d5-c3e5-435c-61a2-97631a89cc29,545631422,1668063209549363480
+68c173c3-be3a-fd4b-a8a3-cc458d721621,2024003620,16174164436111808268
+9707d1e0-9cd9-7046-2754-7680e4216d7d,3653999117,5862033743455625701
+921f2647-9077-82ce-3ec3-35ca81c89e7c,3582927252,14674973381559627612
+68d442b2-0f77-c755-2e9b-ba4ffec67338,1968516596,16120513110452064942
+ac2b6bff-54ef-09fb-8da6-53af2bc84725,4127574139,10002239654074878821
+3fca168c-5c9c-826d-0f1e-c3cfa62b305b,3842491458,2382310332337714822
+ded609f9-609d-e4dc-8048-9b99f27a9531,244601155,17493256979558481166
+28ea5acb-7d68-0c07-14c5-f7ed9427d9e6,2982768996,11734136667112788622
+dafe342b-82f9-5dea-9e3f-12dfe01abd8c,441430947,4462417908100829054
+0a9dbd85-1e46-ff3c-d812-664de1b58d8d,4167265727,4277948491051865454
+65ba68d7-ce93-4d8a-e72b-44659592689d,366956023,8168743206761180246
+617b14f9-41f1-2ebd-4f96-65d2af6f3fc6,29930329,10592764307464102304
+7547b9ab-41f0-b1a4-97a8-d20caa190f1e,1798976750,6417331802148806464
+e16158a3-4b72-e7c3-d029-459086646da6,4048641729,13258009069344830968
+ff964c0e-59b8-b841-a760-0a6a81da662a,2392106948,15617530807017472018
+3764d320-d1de-e5e8-ce5c-baff71b7d6a7,68929949,1749795516313619515
+ff626760-6a8b-f8ed-6a07-d01002402634,1494653920,6314782044627522490
+10c6ad63-7878-7068-73b8-d11647b80c9b,2157184351,8478259385212636923
+aef0566f-f36d-1a7d-860f-594776017840,3973566542,2758770648499336219
+5849c53d-cae4-f7a3-2ff0-12b9aaaa231f,1181986936,2514134553874668515
+3e26b8de-74a6-0d86-f983-e618838465a7,3147852859,5621782755954142080
+f1bfa29a-7787-2d6d-b1cb-bd32cd9450f3,3633067559,7974423698887459968
+2abe18c4-e229-8dd5-26f2-afb8a6301edc,1812478270,9564111943298543021
+9047c04e-1b49-24b5-c24b-25b0e4492277,2088849059,14875419485396741582
+e71d71d1-5e65-1d9c-8be7-95b45dd44072,255397603,13204595824628291651
+77b240f4-0b9e-8efa-0e6a-e53b2b12bbb7,289182131,2922506050116290212
+7b0befeb-bf34-06d6-f8ec-6a9adf3cf2cc,3602785574,12507185573971653031
+20248d1c-8aa8-c418-4900-4f0070efdcb4,4156497321,8415323004174931159
+b8e06e1d-c482-d931-5ab3-9194e844a16a,830868143,4569473301746522785
+3ce56001-8b5b-ddde-e27b-c3e6980410b7,1230083712,8106060148030019168
+0b682b4b-42cd-691c-990f-b534bd261f4b,2668529483,10505335879234577025
+f3cb06f3-2eaa-0b7c-bf4b-897eb71d8026,1534451781,6578680221488311114
+408abaab-9a1c-d1b5-68d9-f3b2f394293b,229519768,14786939217446839561
+8b187d2b-8e30-3878-420e-18e7b62c4b49,3876532560,12333254917861687486
+b27c2e38-aa5e-4b0d-b7f2-318bf43fc36a,593212044,2152941402145094652
+853ef848-a692-4b8a-a5df-fc7744e81849,3961985032,6623368982503706177
+90c4bf4d-f92d-1451-23c5-a6ecb096e7df,965911906,14584727886472168557
+f0743bf1-de2f-2bf0-2caf-608103a59b86,3187902744,17152346717911510035
+187069d5-5196-e60f-58ec-2283d512d195,3372691698,10752358706768626568
+08266a60-d318-538a-fcb0-4ba656e2a8db,1694467606,14611646976738993494
+534db8c4-4eda-31be-151f-f57cf6531fda,2195418675,10270687552584550160
+d21af4f0-2102-2520-8979-35858be624b2,1411488572,17148249758579553975
+5a4447ba-6f38-1b8c-1eb8-b25974b15bf1,22458837,7125169891071678452
+7860c2b6-bfc5-19e5-b645-f333fa865891,570519253,3698955300573116947
+700f5c8a-8da4-d865-b36a-b1e6e480a40d,3448808009,11359423419318552496
+531a0f2d-5fca-3f5e-5968-6371e6429d78,3863056810,15785740713494761833
+4183c371-b3fc-0a65-df63-d0d2cb260cf3,2727317578,10025179222578140902
+307ba49f-a627-90e2-e667-9f01914743e7,1452382324,17105679348865451109
+19c4f8f5-27a4-8508-9595-a0a31685bdd8,299671791,3107952002005222379
+20f22ae0-da95-86e2-a071-d5a0a16786a0,2557221945,16292083299282056835
+c7bc0920-9eee-6319-93c9-dd034e424393,4239043312,12064394388006965404
+66242206-5e0d-6879-bba5-62ad644bc072,1760137140,6825560785703524752
+2bf6b8ee-1efc-8652-8cc6-bdc70b635c48,3571091776,15659982614833476527
+a9428bc7-792c-eb2c-d24a-d3820cdd54c5,3700187827,5613522922392174160
+f92e11f9-450d-2085-c8dd-f59353d08b29,73686489,8312833228449725786
+e45ff676-e693-dc6d-38f9-c41b02928bf4,2284590819,4165877254288050789
+88129feb-2f57-96cd-9310-c45d5d78e3f2,2391951231,3540541819363580644
+ac7199b6-54fa-f06e-ee93-c1b1ef530461,3674903450,16752495633602032372
+bd368ba6-c79e-6945-a97b-eaa0021dd343,1460565789,8831249993123196649
+f8c73636-51ec-961d-dd2f-a677c5645ab6,3350265324,4192228690946557690
+118f8a5c-7159-c3f4-c4ed-e37685c4a5e5,2263279530,3461865873811598173
+37824812-c698-f893-776e-1f27a7847e45,3407506933,3615967181519530426
+c5943fa0-4506-5b60-2d7d-4f5a52a547d3,943790830,7311688971779172475
+e43a1028-fd8e-d92d-f5da-11fa56819537,730233242,15199008732392280754
+9e543fb6-727f-e5e8-8e0f-aaf2d25c6741,3093763330,5526179867467563614
+44e64502-562e-097b-2891-1640706540b7,3065218217,3807051604275917136
+67eea591-07df-c882-a0b9-feb0fdb81802,334556382,4921751952973145303
+f81e8832-f061-10ef-5d0e-d540cb97a10e,1033048258,18282873422064760821
+50b33cd9-2411-b28d-6072-d2ddff0fbf65,1453751240,7641682726142841167
+c3201e83-e708-9cc5-5855-136c15edfaeb,72153000,9985026580406431990
+8d514244-176c-ef7f-1bbb-91c7c5bd64db,838334325,4756191835426060669
+bd7c2437-e8d0-250e-3770-38b8d256bc0a,4277534265,4919722404352849059
+6a216660-2bae-06f9-55c1-7f346ddc7ea1,907768477,14436061692938194992
+5116ea05-765a-42d3-8b6e-5139006f6d58,2665341355,13529505705647222358
+5cb874d8-ebc0-bdaf-aaa2-6c4c56f239c1,2980910195,3742261771172353254
+dcdc67a3-2271-9e0b-b9bf-c41bcecaa3b9,169208485,833661218578400290
+5570d8ed-a043-d173-2173-e7dcf23bc6ec,1677938378,13638351242356367750
+7a8784e2-f896-d7aa-2138-7baffb0cc2ed,2478273807,4991566419300642798
+dfdcdc1f-1c24-64b9-ce67-682ce703d8b0,385235580,6763802956431353679
+5c50e710-4016-e581-9ad8-27f605431a94,3870266906,7902715621892033104
+45615234-f196-d637-184a-e14a76b6246a,3594100550,5406969394292677394
+8161f5b0-4386-5421-b038-2c62da64bcbd,438448940,14497209478404925969
+57ad90dd-82d7-96f4-b237-916d2f907953,4019015148,15124119597645388082
+95a02511-a27a-3b67-1788-4c1e9c6807a6,3841558630,5309933327643454724
+1fd2a67f-3eb1-e546-4818-904b69c95458,1768895621,17545395232244169376
+f7c15aac-06be-9da0-3d77-3a353712f269,1345623346,9738964153172068707
+403d675b-4e7a-d734-2e53-0f5cfd275e71,321112753,12190537100991909516
+8231420c-5799-dcb4-ab2e-c7bfbfe606e7,3213221022,2392170919261898567
+6b0c2875-7549-f470-2904-3cb03a9b34e7,2097836793,10812174251886980935
+559c0c87-5037-c796-f754-a071d82183fa,3412955277,13556481452775050817
+18e73f39-5553-45d7-5cc9-29beb56dac69,3879678534,652181633988153567
+39d06942-1127-bbce-bbef-50e22c62ae81,3367964953,8490194789220580812
+419cd7c1-f1f9-4ba9-2aaa-378829c34b98,2446107390,5782628650321006489
+5e41b84d-babd-314f-4d90-4d26512a743a,1119524377,7195305163716340171
+e61a6cfb-941a-6035-628b-02eade0be4fb,3222260164,6439853739364325860
+0ca63e4d-f707-bba7-7aae-370ceba7afd2,3381518581,2501673394760439885
+91a20375-456a-13a5-4941-56f32c8ecbb7,3086485873,17826320021177336388
+6b06f4b3-2f3a-460e-3be9-de5a2f902028,3775278157,11351031879572562172
+2ba797cd-c859-1e48-559f-e640fe06947a,1643170590,5543549258315579195
+e5c68240-5209-6e8a-47db-3eee52f19cd9,3808299053,4874183252587369936
+62563420-6e91-6453-5efa-e6d2a2aad224,3722707647,5590743346272402376
+9fac7d82-dc78-d21d-4230-e05fc205c638,231123233,8834622792080855711
+7d2985d6-9762-40e3-e20d-99ce6bf41075,1492552008,13171211517722522533
+e74f50d8-8527-3e75-863f-8500486b0322,3273274738,9159903554007157234
+9f5fa1e2-e16e-ca1e-218e-6d0ceccc7c7b,765208467,5125973487831957806
+a6b3233e-3f1d-4901-bff4-d8901cf9d9c4,3844573570,8908996387672585123
+b55f0f99-cc61-90d1-1202-db47c25f73f6,63549481,17377351916786207109
+5036d17e-4852-cb02-a203-d81abf9803ba,2650714820,3592034195686439048
+681d047b-60ec-4c6d-ff6a-c765430b2b8d,124766613,14396151177027264462
+c8a46a77-45ca-7fd6-c92a-cb1ad02bd63c,2822245011,14540334754534094751
+cc32a032-f08b-16d2-50bb-14248b8bf662,1876143573,11446785025881345017
+80cd833f-b1e1-1511-e868-4eff059f0562,1251890707,12814396096343049722
+9b5a3ceb-a84d-a78d-b82f-5833b687d380,2319377910,18281927560141554206
+dd85875b-295f-7bfd-1e1e-582f281a39e6,4212495921,11431991120223722891
+ec66186b-1ed3-aebd-d1f5-5b3a624d3502,1144648945,1290566492137636475
+31cfa114-eefc-1412-bf86-02848b94bd48,2895697403,452778486619627349
+e25f744c-dfda-d160-fe2c-f73e4aa77ac9,3970043943,9706166309346451279
+ddefa20c-13ff-a4d3-7c25-4cf9dbe1adc5,2863928322,3131448930350746289
+c2d18197-cb54-190a-a78b-527bc8e488ec,3702085389,3196287015209643256
+a2b5a31e-9352-d1f8-571c-6f8bbd297495,1769380835,6012561699958099912
+79d007f6-38ca-6b78-cfdf-03af54c788c3,2744198949,16071065156543377816
+1904602c-4837-d093-345c-cdcd05b443fa,827588593,13454261687377732817
+a0acafbc-8299-1070-065c-b0055d8f307b,379597632,10618423619260329939
+9e5dccdd-b1fc-a16b-e57b-b0859abd10d8,1581811814,4914419421201471067
+f17e0e9d-167a-0840-e32f-a073fad81c60,4110863232,5043855048970069479
+1368c829-80e5-ec98-c2a0-38f8926f60c3,4178660361,17766159835200793447
+d5bb9ec6-e1fe-adc5-ac16-fd2b82dcc56e,238217064,4467549417808302652
+1f91d727-7a86-da6d-cd6e-fc7b69b41bca,1379344095,12817485562602159395
+00aee3c0-8341-2070-745f-54c5959f1e94,4038414992,5966370582992868480
+ae0bacf7-98eb-a1e4-1536-93e8e3d646a8,1606537290,7043459626374245801
+b0a3b1e9-9ec8-47f7-5333-93ce0e7cab0d,3879234920,12961132418797830722
+95c5db5b-461a-cc8a-8ae7-8e49e378c5a3,1153839712,2632572133993395633
+9033517a-0b88-11f6-8294-f3396cbf49aa,3690429209,8762806537751336593
+a5b7702f-53d9-de0e-54df-8543e39a7481,568356936,18420973512943475777
+71ff5de1-9658-f6f8-9b8c-c454e36b9edd,3634051031,15267338739727349669
+f1b9e698-366a-2f57-2c2f-3b1cd7f15ad9,2274789978,4705339959736789865
+acda6983-39cc-c906-4480-3c4d21fcd145,2609684725,4542617736472143612
+18860cba-936f-b3a4-5f4a-609976ef26e3,4210816573,13051683866015905519
+ec8825c3-91c8-f2c6-7844-b41e23d46304,4185787250,14248078650125958033
+7f3ec33c-f093-9ec9-7294-365dfdb6dc4b,4059988232,16790766422553746259
+551fb522-1854-7b64-2aef-2f153c00a815,3164534962,13028144470711705754
+8bae89c3-c0f8-23a1-81ef-54c0c5d15f80,3586497168,10675035880315477600
+3c6821f4-4101-92db-22fc-a13d2cc9076a,3702018445,8096197805666165050
+efc77639-f9d2-6e17-74e1-69d3516a18e9,4148350670,8214858240289168406
+8b2bd5be-e66c-8544-8edf-db74176078bb,460819965,14786572103275664767
+71c05357-e90e-394d-464e-f5452a67a4ae,1640138160,8000470859751846893
+190b7fd6-b6c1-98bc-7ca3-2f7fb517a85a,2886247446,5881985614261807425
+11cf8697-46f8-bfb2-311e-2a7e8dc49d23,2465075166,5251351945354273284
+d1cb756d-524c-1113-7a8e-80a9496063d3,2803757063,4974751317042267530
+b54e530f-71fc-a06e-4bfd-43d597b3de18,1441798915,17292910701822155462
+f5d63a95-147e-62a3-3a78-831f2917ba1e,3866043781,3089626118852964872
+2670ec49-45ca-76b9-9d10-326601347d6d,3872585448,9966000823038156080
+ca1c999b-549f-4c16-ac55-49b242f533ea,1022856470,8343422943818065118
+b84635b2-e5fc-9e4a-c8f4-44a9144763ef,1581870512,15344447570974019076
+e6bc460c-b094-61e1-bcb5-251de7bae7ce,464654243,3250732303760888763
+41d51987-b0df-1904-a949-c84d42f86363,938612833,1212105336216095863
+2779c133-e2be-8b67-defb-58ebba38bd18,1116017147,220898346722343355
+9f5923bd-bb39-b4f5-9506-621f68deadbc,1158523842,1631307767398019859
+653d0fa9-2fed-3280-fddd-458539f8fda1,3073648423,5046153325932951317
+59de3d21-54f5-a2e8-4db1-cfbc680f8964,2465756280,8911097432815886821
+cb04b510-c9c0-698f-c9ea-e13ec55a8248,4047184789,1003045567770941603
+16e527c6-646b-6114-11f9-7da44ccc910b,1015316182,14389756453905355530
+77c0ba65-0981-202b-6b17-e31cdfd1500b,1395144741,1295586463892179524
+f960101f-f798-7f69-f1cd-8c0c6b6ddf2a,2427202337,4535132412205080912
+b63968fc-9674-2eb3-4b37-aa18452e0cd6,2680744510,6786388246226366927
+90a632cc-5f49-8bfd-6ba0-9b8b9223b062,1392915759,4516206986906806000
+6acefd3a-fc22-1c1b-2782-b328eb5cd131,283710565,2493250803510126394
+2ff056a9-8ee2-d841-71dc-deba61366faf,2832785190,4796782539923799590
+e1578ab8-8701-cf83-a649-fd6d04cdee7b,2330996813,12668002691385701261
+d520e111-00e5-d565-1f72-80e23d3c698e,3322573753,13345892944103117201
+5db2a9e6-92a4-16c0-24ee-b399551c8374,2609757582,3266295043403283780
+b955dc8a-e5ab-3407-eb9c-fcc9eef49f19,152353944,5215401177178749666
+c9eb467e-879f-40b3-9fde-db13871b3c42,3462206020,2721281521911746683
+068d1838-88bb-9845-8cd4-6ffe381c21ac,1023330852,1338921123170199132
+dfc6bb17-06d0-9ef8-a5df-29e6b4b037bb,2639547351,17787023803471537156
+c7d186f7-70ad-14e1-4dfb-3bd069503a48,2694520650,17335261766139930893
+5c86862d-241e-8970-aa6b-d3d4f31f60f7,71966630,10691901606845853233
+bd6ce908-2c1d-6542-64c3-d557789030c8,3095734462,3805282347686369771
+01508924-f185-1a0a-5546-b6ab3fcdcd63,1711154841,1326989038690952870
+907c5318-5948-4075-a992-27c12f47beac,561041120,6278522008727906405
+2fc3d65a-dcc0-96d4-023a-e273d89f0184,80172453,5686554024460922758
+4c94fb15-cbef-13c3-a7a1-0f0702eb1337,2067859809,9447919170583096836
+de099467-5ad8-c770-7d54-f8b831e56eb9,2470955746,3297199183877353876
+7dab7085-eb22-d215-c880-751a6f327deb,1199392234,15361899652739687704
+eb605e6f-fb7f-27c1-1d4c-92b2c08c97ec,1144969717,3660042965577171599
+25e2b616-ed8d-c11b-1eed-8338b960e806,1744510446,16681601872525106667
+ec60dcb4-323e-f529-0a2f-b89c176a0cba,3729854806,4984644677018555649
+a79c5993-e4b5-92f7-98de-dacd95b84b93,254976699,6992591737893563021
+cefdba57-436e-146b-7b7d-b211e1e40813,375636626,12776351353143041097
+e4251700-9e1c-e565-72bb-fc54a76e9fd2,3363491569,17637390494146061606
+b5540b55-0d15-f094-f37e-3d30619ab9e1,493456769,7604007869832110405
+389a50e0-dafb-d17f-3a92-3c04539c017b,912263243,2384163899897411647
+0ebc20d1-528d-8597-4bae-c853681879b2,687342575,12573363155854256375
+8f4a41fc-3df8-856e-8b6c-ba348c2695b0,3434195341,13507694036532415910
+9257919c-94f8-05d8-faee-50ec6e78c8c7,2069518250,7228627487919446463
+8df58bef-4420-516b-e19d-fb710f6b2f3d,878197006,5105901646371867872
+16e8906f-7914-ea6b-12c3-80f9debd75dc,3544129580,13313757669613468819
+55f13c57-2ed9-3391-3d9e-fc5ee879d1c9,3619721680,4625720945896504187
+f66259d7-ec92-8f63-9c9c-3982ada180ae,3890078915,9191890379347423429
+1762add2-3151-e7a7-45ba-93dc923d48c8,2567966458,10402371833871919376
+39f2dbc1-862d-75de-0279-bb20827dab7e,2758958556,18110085918061615205
+33754e04-7d78-f91c-c882-85c474abecb2,1447425716,13552134241995883788
+d0a46714-f0e3-fcfe-cb4c-7c8802f38aa5,3688201884,1720514732257559943
+6759b5b0-a161-b4f4-e97e-1301b44752b0,3362672796,12944017758965362152
+60e40faf-811f-9eb1-9a80-3dade6fea83d,582499459,12444099587257605383
+ea003be6-3f00-aadf-33d7-4819706f46a9,3311640100,3732394572125148524
+b71daea3-23fb-c187-4c85-f3e94c8b47ec,1595222389,7669529055031250656
+b95057d6-e484-1f58-aff2-b87622097e21,2324421615,7158012163449758644
+a69be7f4-51a3-1336-a1a7-1a348ab6ac3d,363388726,2334917680646292890
+d152675a-9075-5ce1-64a0-a9cd085ed2f7,528179533,12503869661356618260
+32a59a5f-1eee-76d3-7f30-22d3a78ce724,3932996810,1763826496286910070
+db9689cb-cb3c-1f0a-aa66-2bf2c046d8b8,1587022048,16560098966637595713
+f98dbc4c-a36c-1282-b7cc-8e7de08cc329,2354562278,7972955981459300972
+63a1e4d3-5309-7131-8308-7f158e695b70,1388254736,574603719730856602
+42e9d545-a9dc-83df-acf9-f80a3afa5019,2643869550,15552978506985283276
+d83693d6-4737-6fdc-c9aa-202e50e48f9f,2528838894,16601556451252178645
+ac953440-8002-0b41-24fc-91db97a51934,311226716,9554393265862070520
+43f5fd2f-8e41-c22e-7dc0-5ff0ea2d6aa5,3789881612,11987347066900542261
+52d69fac-6c5c-ddce-f6d4-63b66ff403ce,2196060714,12773510124677348458
+fa44371f-6f1d-fd14-34df-963f4e1800d0,2133840405,10490322706613861088
+1a3ec01e-ee93-eac3-c1fd-402f49550bcc,2770719755,1145212026135711867
+6a9b1d88-aeb1-5731-68e7-0d08d82cc8db,94727676,10566153963435764625
+abac5ef0-6890-675b-0f8f-348ed5982668,2727515001,6904444394466782701
+1f0802de-f2b3-3cfe-808b-6cac227b59a4,2656183683,4603332284888765006
+3b59cdd5-ca3a-4780-0ba4-6198f74e57f7,3067715507,1021743044169957769
+5bc0662a-ea2e-8771-92e8-06c78274d9fb,422918845,7834812073499279854
+61253d27-e062-2e0b-54a2-55991326ae2e,1505629282,17222722665525537631
+59fd6b69-4ba4-0276-a631-862a6a791867,2372822345,4809585175876300901
+47f4ea1b-7ba4-94fa-2268-5678e49bbb4a,763396192,1200485827084937863
+a91bee87-624d-4019-7317-78663c9bbc22,760474179,9521653498134922718
+9da3ff11-318e-fb02-7db1-0b549fccdf70,3188018683,12947369694683886455
+8c8a40c5-1dd6-484e-9787-d770f0f69fea,3883663782,13530592992803558830
+833d884e-cb95-65ff-bada-2b9eb935cefc,2499832521,3134291991801437646
+dc47914f-95c1-0f76-0313-ead5820f1e25,921608858,15658607404106252288
+4b0d9769-accf-3fef-5d10-672e13d6c7f1,3269315502,9992181808620450825
+a1210766-c8b7-1557-5402-7c4ab74499bf,1837528896,12104032775167008637
+93cf3297-932e-05d4-ae81-a2d488a7cc86,2364568062,7026728406233805908
+5bf94992-0e60-4ab8-fddd-a3e7aaea79ea,188475244,4321031758109365711
+8c8801be-1eef-f6bf-12e3-2296c1a5dd35,224109022,4663361803769206150
+3b939d86-b4b6-9cec-04ab-c8b90533c48e,3437070080,5369680558091599091
+b8a0746b-3bc4-7f4b-42f2-4ea4e2eb7e5a,1390317890,2179768578060666352
+817bba63-d6c4-20af-a35f-bc505229d616,1801895091,16047524658589814821
+2ada781b-bb02-4168-af4d-7294f38e4467,3325345102,5383658284814951074
+da66fe59-10af-7418-2728-96578f4a9ad5,377770473,4491454445149280901
+72faeee8-1815-2430-f8b4-f31c9afcf83b,2431072701,13841837349328198383
+d96769f1-e6e5-49bc-6b6e-daf8367d5027,1931631763,12829893985971407152
+2da47ab9-ca7c-96a3-fb2b-d2356c16fb60,1732500643,14033300805613837384
+ac8e6365-8f9a-2efa-170b-4beabb084e1d,570054934,11807148602926845048
+caf813e9-1264-228c-05bb-bf481bcdbacb,829555232,15789950277828108260
+bcaa20a4-392c-7255-e4b2-d1921d4943b2,3055576286,4896940766320457882
+c2f4a016-9046-2a82-63af-4559efa018c6,2632970095,7091597139332422445
+c7947bc8-f5f3-68bb-070c-43e590fb9703,3198737585,12872464339838606875
+c99569e9-9d60-4815-f2ba-0d29bdacc703,2299545606,11941446981138014510
+095b883a-f0d9-440e-5e78-5e35a92513a9,2059883332,7786974136186236189
+1ecc8c31-5224-ef37-330d-b07e707a452b,773528536,6801169986721321188
+8be86afb-ab95-8a36-0936-26583d4d5572,3949497035,594376804606222697
+a5396c49-f535-e5ab-6083-bb9b679745d0,4025293377,2244007887191444106
+79dc23e6-764b-3557-6fb9-33ce82ca6b67,1104524899,17846532997436365204
+cb83035f-a1f0-c709-7ca6-22473b06cc9e,55846723,11033529133574071461
+edf4bcc8-0949-ff30-6e3b-9589fabfa0a0,3996974515,15565909459083354378
+f38069e7-ac9e-776b-4967-5395e46fb5bf,3659430756,11594428667827252601
+32a1574d-ced0-9237-c3bc-a851a9c31ff8,3257894850,13786309594379470031
+6ffb63ac-c7a9-de8a-e6ec-19c97e33b1fa,1805078869,3487548281562952865
+1317cfae-7db2-1d4e-76dc-5444e51bfaf8,2322170784,5813541019003993810
+a0df364a-3a8c-0f72-69fc-b1d9a7585fa1,2686217073,13109713498149909644
+83448cf1-3e5b-4062-a434-d5bfea61942d,2812132902,13324701079032757919
+e4d550c9-347c-6440-2eef-42e4705f0f94,486034800,7465672763518204544
+6d5f7d03-f5c8-fe83-4ba3-ab364ec57a21,1840487981,12825998339803563449
+7eb6c7a7-37cc-4e1a-f235-352ce3cd40f7,2771042868,9239487145598519008
+219af8f2-1a5b-f928-b6e0-9f642ab8fb62,1827283008,17791161694062560833
+d024b1e2-9e4a-7532-a499-cc2413c6dfa1,1834820959,12472110290954740830
+ac6b230a-2493-1159-ee02-dcb23e7fa124,2483785427,7680003345507324687
+77329229-4713-5bf8-6e6f-93b44bf19d07,523296781,17915711533893988097
+d19d63b8-6dd4-d3fb-4025-aa5d3420f29b,1763955634,18370823518080169804
+6a30a73c-a816-6ea9-db6b-a40b2baf7c93,1665268821,11962901466736471299
+349972e2-c925-a90a-c3f6-57822609bddd,3311660152,3546496516382449244
+ac11a9df-3ddf-5b2b-a0ce-59c1f52e4413,2485505432,16653524951960887113
+01000838-5cd6-ef9e-9844-dc06bc743592,760460516,740862236796584362
+5a901641-b1dc-07e4-7ae3-db6d21027921,1934251245,3926828520553973328
+8ead30bd-809b-2422-49d0-56fc8098deac,1180575514,5400500040688663528
+88e49f0e-4707-f484-53a0-a908825b3707,4126405732,12936288750836968553
+99fef797-9e05-c9bc-b5da-c0735e764627,1172816213,17949206212562825070
+f90229e6-1009-bc6f-fa62-15d63679d2bb,3130186159,5184431418023202059
+1c5cb3d8-6666-e3ae-bf20-b2939e117687,2138784827,16313994822183069492
+e38e441a-17f4-3507-1b8f-d135b8107214,3923818539,110361432370332980
+0fb0a765-7bb4-3e69-cd26-df19fecd1149,601848735,7285748991666508886
+6ddf014b-2069-af10-e0c0-7d6796f8c21a,2431932387,17948342610046469164
+804960fb-fe06-66ea-d5ec-1581fefadb52,606584470,1089767286441075296
+1e5fbfcb-9a50-f06c-60d9-cd7fac7344dc,2229041809,10022262073120406950
+b17c2f13-94f4-18c5-a3e5-c77de34b0448,4099873790,11372868817871344738
+1dd1c806-7882-14b1-3816-930a567cda18,2968803769,15589954968786909077
+26be01c9-24c2-183b-5ee8-a80fc129bb66,1676042974,5992521557984502119
+5e17b345-0eac-dfad-561f-d22823ca5003,2825523006,18241914722621171774
+54f51845-7655-4e02-6932-384157003c22,526923544,10886691443682409787
+f67e942c-1c34-fbf9-5cd7-c1a4280144eb,2387497858,15669538254350310857
+765c99a2-1887-f36b-3a0f-812d76e14a0c,507431089,11496924369333612763
+464735de-5464-0fd1-ac9a-6f89338b7c40,2106601834,6367866049591254493
+b828a3ea-b9d4-52d8-d016-e0dca0102b3e,1019029136,4484570181559279613
+b7a24cb4-eceb-19e7-3966-512e02bc5f7d,355250701,14264391167243380022
+341a4b26-04ed-02e9-142e-3b30f5381031,3856336134,9044153243304695485
+3da88e78-daee-bd1c-e897-cf05c44c0a2e,206466880,10942775735436004934
+0bceeb70-98f4-5ba8-197b-010a19213526,2722456162,12451287018607433876
+3c42019e-3203-bac5-85bf-11ebb1412a74,576440175,18086416787073871112
+e2fec583-50df-5214-a284-f7fadaaf2eb0,887466222,605490723491346706
+eb09b298-a2dc-fc6f-3960-f3dd73235762,2588163190,16999491005524518757
+0b35b7f5-98fc-cf16-94e4-38fa72d07711,88246710,12064485808529109618
+cd9525e6-baf3-b583-ab99-c0fb5737e6c6,3480431430,10652324951862499996
+1a11bbc8-bd7a-da00-d47f-e409d899e12e,518188836,13666626315043115106
+ac41bfcd-5c91-b03c-7eaf-c2413dc5916d,3430224846,5047533980680566492
+20098f3f-357e-3631-7326-df77ea7f9335,4035812592,1382022783792263565
+c275b59c-0b13-87b5-5246-786e8591def1,3904332039,15669838013136470445
+e4bd3fd4-f139-c6c4-5ac9-82696fb97201,2857884705,16809168662992415786
+7a7f203f-33ea-fbe3-7e11-7cad7cc54aed,2170267439,3521546535644028516
+827e4879-812b-3263-0a3f-54e540de6317,3897654032,11203794154431375521
+895a1cf3-f654-b2b5-782c-8946a38bd9c8,3724968863,11006830838313870573
+0a5d3ddc-e4c9-1d2a-92f5-88ac30ea5188,2623224310,13823958236752932668
+6493379b-2f88-d485-843d-d85b5fd8dd83,1178925582,4890360740445433909
+0b016ed3-5feb-a130-2679-0c031f57902d,3091580161,15159531961712498028
+2794b3ad-3d16-b8b4-8cad-e951f7a33b34,437719453,4065765404731017586
+0c5439f0-2f0d-e514-b658-433d506a200e,540584630,16962339608304679597
+31e5d06f-cd81-1df0-b11e-76134f12e218,3260677823,5803816192950605620
+e7d26dd3-e3f6-8589-198c-80f10c78fa22,1556050304,1172329427386991675
+45eb8d65-9178-de9e-a8ee-005d6296eddd,1514345867,10032697477536102343
+b6c5f6b7-96c0-9c1b-fb2b-94f15e3ad3c5,407710505,2006125118921916745
+eaf39383-b052-465e-3d51-72172089230d,1068119412,3032247300311151963
+c70c4978-abd1-267c-3595-2d5afb5cd6c0,3301329560,16746208684402754642
+6cf5c271-f1a6-3416-2d6e-ead09daabb2d,1802195495,9442500979446564998
+dd7daf7c-d61d-901c-b1e3-af95ca4fd894,787052574,3462903047723327084
+bbeb22b3-199b-ecdf-6951-72df242cb8b1,1054019973,2326257910765693353
+7a39d052-d535-4511-dae6-fde700510e49,3169062365,5549586671048701937
+ceea192a-0bff-55e1-b3f3-810f9e2987cf,2425565497,6627584892318209728
+a46ad91e-c7cd-0131-c2cf-10d62820eb2d,174683145,5868850061619524904
+66630091-074a-1516-cc08-4c29381a8139,1450823782,3557208374365308357
+b016dd8c-5601-abac-dc97-ffecd5e3119b,3536425624,12908958917676507505
+a3dcb3e5-fd23-e3c1-c7df-4bfb476574b1,998044239,15045550881330085642
+21c3212e-c75f-66b1-2c2d-b62510537c5d,3349733092,468969598599806313
+77674211-8a71-4fd3-736d-b0dfeb6e0f9e,2581128581,2325562890919911501
+0a59f24c-e979-0b09-e282-0866faf16452,1166002183,5750868090075748996
+ea914bab-3b57-5344-8c6c-c0f2866a990f,4178302782,12026248056694312576
+6c260894-4a4c-92a2-5de3-00d8c2bfda63,2967636358,1896183178455418763
+722e3585-059d-25b5-96c4-5ca387954ab3,2442461048,1339364937331666647
+f4064c9f-0eb5-a1ec-ac90-99f1e3cdfe9c,4277658169,595959581525175325
+aca8da82-3647-d6fb-a70a-3d0133ed1ba2,2350278290,2544573905317856204
+1954d095-bbb6-b721-02e4-4ab97d9528f8,501953611,14425634367952827559
+77a99ada-8202-3f11-f6a4-f14b5ce07b8f,3509695956,3791031442874660258
+4588b2e0-8f61-ca91-ff8b-7424bb730e7d,3233703807,12563179244367564511
+ba3347d6-044e-aa0a-83b1-38de5c453e01,760619739,3872674136592442954
+7d01a542-5a17-6031-c4e7-0e9e99fd1e74,1272907530,9772455424386762324
+a41324d8-6ef3-d4f3-25ea-072933d4bbf2,2448485034,9356732120251134208
+1c1a6ace-db98-0185-7388-6300366b7db0,1631841130,1451842432784110636
+74c9696d-01ff-8988-6911-8254d368cbd0,1180429557,14521416225579161997
+4ae77ef8-3c60-c63c-f5a5-94d8dbc04e83,2065040011,17024719824317704567
+b12462b9-1848-f7f3-a6f1-6596bb035c33,1124779346,9496666078906048207
+abc80b96-5d13-c1e1-3069-1b27556517ac,2196752109,4836890932272580926
+b5b4755c-e932-1179-1d4c-9f7057cdaac5,3129355871,7307650784655178915
+57dabad0-a923-accc-0aa9-27ed7f951df1,1868678351,12821470699931530728
+4e60bc4c-ffa0-8752-4af5-a6eb598a470b,4132724726,5304553571462256258
+65703215-3843-4ad0-c9c3-7545e025b2e3,2400263639,13405143567847888859
+ef1218b6-24f6-4682-461d-4098e5f2fa00,1365937112,17853250089824908860
+ac738da5-ab25-10ba-baea-7c29c64a7d30,608720931,11093152233848192055
+0d859b25-99a7-2b3b-6a51-1f0e9404db96,4152805001,2389779372750566759
+fe45a34f-cffb-f7dc-d6d9-4150dc4bbe82,612605053,17692186860459583035
+93bd8141-1bf7-b37b-e442-58c4d7ead98d,3354730190,5624097202159818891
+534540fd-7e33-ca54-e97d-ebcf1ec870d1,4090918242,7764979016231737416
+0c258d4d-0719-cc19-b90a-aec2dadbffe5,4224106565,17323454127229567780
+f94651a6-42c9-8747-d746-cef1a03a75c6,3819096095,11413841295902510010
+11207a10-179d-857c-8fc7-7ed47940159d,2311593591,5624727135273643147
+95dbeb62-9653-b99f-9380-b097f5843376,3282333446,6703231641059550954
+11d11c35-bc68-43a1-cdfc-e370dcbb9c7a,1817407184,2876130028716773055
+b7b6b290-0163-21cc-941a-169203ec2abe,2106741910,11558403562061245432
+9494d6ad-03d4-8baa-69b8-e770b96f981e,1968735178,7759242024302650404
+7033ac5f-63fc-b202-2c63-1f905be13a71,2795570078,4721864815295229045
+2e7cc162-d9fe-6ce2-a0e2-cd92307ea6d1,3304489970,14316530085626938599
+6fd1dae4-a923-f514-e808-e81afa44b663,483185085,11623446786178508506
+378f5d2b-1919-c5a7-1349-0b7f58204e4b,1453005480,12178333880368007774
+e4ce1654-e997-cc55-624b-4c54cab2924c,4237382281,14594615555506757904
+bd566527-80c2-0e66-2c26-adde0f888b74,3372494750,3737186551671973049
+81d5ab40-fa88-8e8e-08e1-f345f065e5ac,2051565009,17521143304819200760
+1e34b7b3-8c9e-2bc9-0b3a-81f7dceec6dd,3387928956,14612285393444106206
+eb026aa1-83c9-ca8b-05d4-147f95f86a41,3045125699,9065709319922094259
+ca8ad934-2985-7df0-4eef-2ff7dd5227dc,1400712493,5713025515869242843
+c4ab9f76-1ce9-6152-1b12-ad1c64f74048,1638018697,15609434322404911594
+6d03230d-6906-7d5a-04f2-9318e4b350d1,570348557,6579632412066145647
+7b8370eb-d459-cbba-8d78-9debc7fd1abd,4080114238,2044974407020118259
+af8db4b4-0022-a59b-cb01-a3be1d179156,2840201754,1132856478711209502
+eeb0e0e6-e5d8-fcf1-9c5c-712583a3fb91,4236586645,15897943983587342481
+6b4dfafd-58c5-30f4-7d0c-cfd6f0d22e0c,2061556560,12168494648123670578
+d1d02bc9-13de-e86d-53e1-adee685cf6f2,1871709663,4855402242474674205
+d97f984b-c453-5584-f8d5-b2ae5444918c,1108781279,1732198971675654579
+e67b9da8-a8bf-f9a2-0202-ca228eff127c,3567545192,7085226419852339072
+afeb9645-b60d-0128-3670-f93e757dcde9,2634946123,15929545860280277812
+d3ca89d3-5d4d-e7d8-d019-869210c0d71f,228515905,7919006110481501019
+5db98e8d-58cc-0c17-9c8b-27901039be77,2371815131,10449245619989137571
+26824d0a-66d3-998c-0b00-0171c3f683ba,3431495025,9967035827876699817
+a5cf9df5-7aa7-68b2-bb38-c48a284eb88c,2179973841,8162838424420031689
+d444bd4e-fd99-6149-6a31-10a268c87d57,312852606,2282450163458669949
+89d291bd-f4c4-13af-6f70-011c96e2ea65,1558966190,9651069822854999300
+eff98aa2-1a64-06d6-0a49-a44a2a649343,1531361443,13279396341852663849
+781c809a-bac1-b815-fa47-085013da6f1f,639277167,2271973728958799056
+a453aae1-1fc4-b484-9bc0-b2446b04e670,1536906547,14848098795328150104
+07e424f2-0968-1289-98c7-bef81705d023,68509951,14466819724006532372
+19a046f4-6659-6dba-7709-567b583687df,37267776,10956174997099551638
+1163b3bd-2af6-6d85-8bd9-6d375bba824b,594145242,7616274889072824146
+00e49c97-5d0f-3839-75da-0a33baaefe47,1119767954,10869647953227308450
+81336051-9a04-7c85-4756-230f44aaad7f,3228143709,15114206149378945645
+b3b86f9c-dc74-6024-8a31-df442afe7585,1693321695,4161224677599935742
+f029bbba-f8b5-82f7-dc01-f490a1ff92d6,443818563,1335654060427353741
+e60d79e9-0f33-3761-bc64-45438107783f,272975739,13724435168010203584
+9a4f0f8e-8f96-036c-5f71-4c3f9272687e,1638106811,16883590252089857007
+dd8bf95d-99db-efa9-c558-5e54cb3cd20e,574262976,9349515661753338514
+409648c6-e847-486b-7a64-0089b040c13e,78223125,16393712615836288044
+1ec01851-ec89-4793-d9bf-58d14798c880,2745671261,8548133004536475463
+7e95a23d-fee8-fe31-279c-6baf9a46ae0e,1828172663,6478056967900536254
+86e77950-eaca-7447-9e18-b33b85d49dee,3174435012,3325172272949126887
+f81ab2cc-5ed9-d689-3df7-928698ff30ba,358023723,14398574923034272641
+c3800bc3-e9f2-f360-80d4-ed491e05105c,3348912050,15846443480126171613
+04e0bd07-9503-89a2-10cd-aeabb34aad25,1591519656,7053233249994486365
+b03263d1-8ae4-e301-4615-246585550ea3,1182222788,15972543874824570695
+7caac4e0-2baf-e07c-93d4-f18d23b4beee,4206537294,11675810386343498690
+63b2bd9b-31e5-bad3-30c6-d9004254d95c,2428515485,2715619111529650551
+d3bb896d-4c56-9e59-b544-b7992b19249b,2300892290,2401393453067787360
+483cd324-6dd7-4b72-3fd3-491bbc4a40bc,2850902312,6016273375478067777
+7822ff7f-dc75-e5b5-5dd0-b3cedc20a251,4077564644,5869222597042248215
+6d5ddc04-a11f-370e-2cbd-536b1ef7a623,3196613816,6164520395336824521
+eca15ccd-84a6-ce0b-9607-c551075a5e92,3907472533,17756709067473840779
+14b0041a-5017-72df-d0ac-c69cbd060cda,3556825938,6252012207496860563
+1a0d09c4-ccac-abe4-f16a-27a73092a8ec,2651997673,11849953954125226848
+28b6efad-9b79-5b70-6c02-eddad40e205c,4222386645,4623145742760168100
+fea30f39-6964-283e-526d-c5092a4e0673,1986432283,13143623548441341653
+f5d1ef4a-4fad-e4db-5ef0-ab228154da58,3822248254,5871652989331704400
+4e3050a4-0fe2-99bc-5ef8-aaf143f5defd,4012682864,15336555055192542647
+ca697c72-b5a2-1fab-154a-a22fa6c3400f,58547533,11038042492369890869
+ec0d884b-bdae-f420-8bcb-0100a9f2ac44,2194206398,1568700590915481921
+deebb33a-4511-fb02-2fad-5dbcd6753815,1690186699,11639544187395655526
+753efe7a-202f-a427-a79a-a340580a170b,3144588758,11871551355687140754
+ee026093-b1ce-8533-6be3-137b2707e7f3,1450042147,10385211319051867933
+8f2b7e47-e811-96ca-6f9c-1ecdfc0215dc,2104090476,14578455500036083693
+eea6c1ed-d89a-0f9d-5b20-08913353d5f4,2177308815,15280808706137361770
+90775e92-12bb-71a2-1c06-3a6c3a80711d,1108213213,8568231951445043158
+6b7a1999-7573-12e6-50a3-598af516b8f8,833689791,5051764344396467481
+3576ddc5-7fde-62d2-b21d-d7cd20102057,228378666,9241740368804714010
+62cb099f-c06b-b59c-ecf6-d72d804907fa,3629577753,7569953220654255246
+72969faf-59e3-7b8a-3e1f-8b52a4644a4f,1558213377,11934053123086954357
+2f612271-3d9f-b466-ed21-99ab1638c54b,826995991,7513983854485829088
+773f12b6-27fe-77b9-0ec4-73019e9c7fb3,2140314865,8202594733856397675
+920f6c4e-512f-981c-468f-daeeded97142,4181517108,18169776257827815430
+826b0a80-675b-bb86-1b0d-e3b3201320da,1875311308,11253391849125353043
+262622d6-aa15-d390-73df-8a5e5677129c,799096603,11497327719305706118
+0b73251d-4a6d-000c-9ec5-b6feb1468f7e,967999695,12300586049832545048
+4d88e2a0-bb87-83c8-d325-fa834afca060,3519467021,11013124377536509666
+f9aca27f-3323-518d-8d94-2dbc81a84f1f,3640965258,2561120196723595141
+81ce7206-7a3b-a08d-f3e4-6444fb6d00df,3441737793,13084110068993175605
+4352b26c-e846-7cc5-6e88-8a129acbd2f2,1898460008,16841503723201621724
+9b6182cd-3c90-9ed5-203d-404cf88a9db3,2294903602,12143319736694957496
+efa787ac-52db-a5fd-025c-026ee31698f6,2540455887,1040101384643223076
+73d98de0-2478-8d55-f8b0-b40dc5528d1e,3348635559,16051912341792733119
+f8db93a0-b6a4-197a-ac1a-7eb1aceab7a2,941559674,5752571243157425370
+46c4f5ba-f44e-a33f-c83c-875dbba0727f,3018344317,6238583272312303786
+c613f928-d720-e642-e989-420859795f17,3039997620,11002326295251452086
+b6520a56-596f-60cc-c9a6-e636c2a65a49,3592799797,12001754111062065542
+e212bf53-c880-b788-f35a-af394d6dcf19,3700661652,13832081467521863406
+9be0d667-0eaf-c4a3-0055-26a5c51febb2,1630486029,12646286150645111134
+4b9efe7a-7590-5b5a-a9b1-9957a8b08a3c,1645689577,5090385324626405040
+c5159ec6-8632-e3e7-8778-6b8070663bc0,4287112594,2559434482928995605
+e80b981c-507a-8b7b-c077-1e4cc331cbd5,916849512,8659306758151065912
+07de4cc5-3b09-1751-24a0-3cf62c26b270,2982449128,14184989669061468423
+bde33a25-4956-2425-1c7f-53de9e6d194d,1050713604,4108716542992364215
+adc9e647-c30f-8824-8bc2-17b8211ff86c,653399325,12405071481098533292
+5e8bd74d-f594-6f08-5d03-9c16f9d36a7c,208909327,16040575896399393310
+12c8954b-3e9e-a553-5969-0d4bef7a2205,1033003224,9390638297187438360
+58aae0dc-6185-853a-76a4-5517a6f9ee6c,1367165508,17422742984613139723
+00c477ff-29db-334d-0d71-22dea51a05a0,1712965379,14358568098131586556
+8a756041-6078-4a1a-02ae-3ce0855abc46,506551562,14180314809198704998
+e855c08a-9b8e-32e6-4c47-c24e1db780af,2872101115,9685531163058952611
+2b3b6607-4b7c-fa5a-901c-d4954df3818b,931746008,15960654453681279840
+18c6abb6-0969-18b5-747a-cb3e356fb9b7,1405675378,1055338836837003214
+fdbac2f9-ae56-2235-9bf8-5507fae2a89b,1845826844,17157748432609995826
+6ea58a4d-8989-3add-391a-4942e26b7df3,4005462576,84988872034847893
+2557c5e4-461d-f802-1d84-817b845a6123,3365828042,14335096873854680805
+9d81d1d6-0e53-90ab-e8da-9012d96a7203,2820613065,9044622582534367668
+37431822-d3a1-9e15-8e8e-69665a83d6e4,4197289462,13791286588932843111
+1d55fc79-7914-2fa5-daa8-90e22a2acd02,665775721,17902221105935035674
+05307fc4-8ab3-c011-1795-ce8a918e68a7,3996673131,8879100363130065680
+454311fd-5316-06b5-0a1c-a1d0f7f7e91a,3350561120,1472962737083332248
+235bbaf9-dd80-ff5a-0679-db1f00229748,65791016,16235015488315416214
+ebf0dfa8-a1dd-7645-d73a-e85ca4d12077,3079869971,8680535294892641227
+43eabeb1-41ab-a7f4-2bc9-9e3e05b6d1e5,1842621087,4316515103782752955
+4350f7e0-a755-0d86-ec86-fc1a585cedbe,1892751141,11005915250612418278
+181ac350-a5e7-3cc6-0207-381234f4c428,2654906104,6505537801791341024
+874887e2-1ff0-81c0-5f5c-dd9f8bb16872,4173087591,14194982866629590744
+702fa96c-5e79-c21d-3e4c-30793b4eb461,1328224548,2380791314727437973
+601ee80c-bf3d-fd96-4d60-5bd233227ada,2242039999,18367413310957239118
+d5f5033e-8d29-6957-cb67-3603a65c9111,1769011893,7475491418913211598
+a354815a-9efa-3e18-66e2-b8fff05381c9,3763778407,6801487101484846037
+162bc04e-8610-194f-50fb-91ffbea3eb91,2028511639,5780238442208560493
+7c184048-3d16-416f-a0a8-19c442f91fcd,397723743,10155027517927649132
+4aa101d1-c1a9-6f33-c3f0-50afb85306ab,2131786475,11849719641601330159
+8d1fbc83-bf1a-5fb7-7d0f-acd47baad52b,614113576,7004697116424490461
+79abee06-3bc5-6d92-ecd4-0d74384e57ab,2879691125,9244238956110732457
+595ebdf9-3809-5245-37a8-c97e4141f0bd,2721532797,16762138038052063368
+0917a33b-3319-d1e0-a5ee-71fb26cef86a,4080286734,16282855070357036252
+0118e79d-1f04-5c19-ce70-a650c0262e7b,3160482806,16436989037461684948
+9088c84c-5c37-e9c0-7f41-fee8b248d72b,808943052,7820009358934910732
+d8673c25-e02d-2cfb-455e-49b93babc004,1575340150,17117698955236181849
+0c62adaf-32ab-48c6-0dc0-f8909bdd64b2,2422923857,11398405330362690482
+d8a9ed95-ac28-2c04-71dd-55450c8e4510,286434850,5591099774216991592
+955bc71d-a73d-2595-39b5-684bba67687f,2191445709,8999111857080881710
+4f171585-7b68-9905-1b9a-bc9f09a7346e,3849069256,3597196934583027495
+fc2e1a3b-bc16-0922-250d-e6c0fc4fdb1b,2812373388,6002103983221182132
+f529c68b-f326-e7f7-ddb9-98b9e8bf0d2e,3890749442,12439594218527745747
+f1c3894e-8035-633f-53b9-33fa67eae8cc,3576299545,2422012454744883094
+72af9ccf-0b12-758d-3b4c-81f8601833ea,1992280110,9300408549579573909
+5a58c823-2f84-8707-60ca-a588d627a562,3531855564,7301538450620290022
+94806940-6e6c-8b53-2e19-2d1d0e7066af,2415248972,7701805322755783854
+15070d44-a119-59a4-5a84-654662f06c79,1315813952,11525564754023114290
+768ec04d-69aa-b00d-7b80-994e56027860,3282317964,6534721700471959648
+4879730a-094c-a36d-6437-15f1d6780cb7,3768962086,17196022059013600039
+3d90a5dd-3633-57e9-793f-648a1c06aa5f,4283746360,6528233699034329660
+4a359a28-16bb-f52b-cd79-095c3fd2739e,2369561890,17610577622197960748
+a2927dcc-a719-c145-f449-7abc832d31f2,1873223814,16695562741560783641
+b7bd23fe-1525-ea48-5937-4e1c670f5216,1372575702,11985409675686166354
+f9329816-97db-c5fa-dbaf-bd4ad6408058,2232077960,1589940079852580499
+e6772d82-4cb5-9608-7783-4af09c893ce0,1858539200,8955376404482545051
+962906f1-ceb1-db2d-e6e8-162ecc6f6c0e,4258507502,16888662610758704916
+93f6c634-392a-ed81-4b41-4ab0c7e4185e,2903518438,2527200158671328977
+68711136-80ce-2dc3-2aac-09117f9e407f,1646675093,6048555054522062607
+176e0e55-e101-7827-5652-7c43583db7db,1065409379,10262071907536427490
+66fd11f6-7bf5-c868-dec3-b14316fe684b,2429363890,1151105139891050105
+836f0b58-73c7-50f6-6b5b-15e6577c8f82,3084271754,13780244149470957134
+6b72cbbc-6d40-4d25-efe4-4622eeac7280,1711929281,13236947527844737605
+8ffe2323-d50c-3557-b1f9-19692bcdfefd,3648805332,9446226126235189099
+2be7221a-f371-0280-90c5-b2dd795cc6fd,3101510143,3910847152931524289
+9e4fb021-79cd-409d-e87c-2d64a72aad72,2173857306,15767708828681596310
+27c938b0-9ec8-2d77-30de-8b59c7740b62,105056661,543364814919491703
+1cabf9da-baa7-652d-c06a-dffca60ae60e,3652596634,3757327571925785584
+63947b48-b836-5735-e358-aaa01ccdd060,1616761867,14274976031724514505
+761ae0bf-aa61-fde9-28b8-1d5ad32c5ff1,1975484757,4993677092053385042
+9010d670-249c-5e66-e440-46115f987c5b,321975227,16005025885918118858
+de063fff-8b67-2e4a-6f42-9215f6ee876a,4065852768,2169495428316352865
+c5f68fe6-27d3-5426-0e67-63f360f9b904,3543524215,17962138456192277439
+4fd2c88b-5b52-dd09-d9f3-d36579f139cc,1407451119,9437856743439681396
+c33253d7-1015-3785-284d-17e4d27cf968,2542643582,6511836645738679837
+3b9dcae9-2859-a8ba-056f-909201d6906d,2239963344,1325279204397715697
+dede7161-4f22-f589-4966-deaa867d65b2,3350751032,2497312372019595177
+d35c7515-e93e-890b-1640-6da089e2aa5c,1281147539,10404039613866587324
+f3a78c60-4304-adb9-ec2d-623bf26a73af,1765997729,5498361395304066709
+8ca65872-443f-297e-b01e-89af1c5e86a4,1755451917,17032685172311076166
+bb8b1501-62b2-e7f3-4516-79df8157776d,2891805818,944121030568701911
+2bbd5b01-6fd1-1721-069a-f2eeb58943ad,3326004569,15298987494819272316
+d20e0dae-1e75-d6a1-1134-69729f1a62f3,1155467422,14627972218585593451
+6dfb117a-48a3-7d8a-3099-c194da88d8c5,3884341732,15050911009381070206
+b0692541-c8a3-5539-5b14-7b351e847740,526259736,12731844970485149402
+40fb1e3d-ed50-769c-057e-90e851711fcf,3609615702,15709925056209838064
+22af767c-45b8-c70d-6fe4-cb5d4ac9b56c,2640571703,13144290048160735171
+31b241cf-9989-438b-2aa1-c20c23f324f8,2980302096,7341254259540618522
+6d0d50dc-83a9-d25f-59dd-601d18a0678a,1553436228,342204668413912277
+f27925f2-78b2-81e1-5176-13e945aa4dd6,1337708376,12693045406971493716
+8b73f8d9-f486-8629-04b4-3faa4b14fb07,2501981403,15657402039250427598
+ea11c2d1-0852-0dc4-07c8-ae0ecb28cc77,3581374443,12156827859951656684
+8f4dcfd7-f3f2-b36a-7f6c-fa25c7d26281,2498884465,16665444928256349167
+7c2bc5f1-f991-786f-6ce1-edc7e5fb7e14,1780475404,18133263581714374947
+77cc832f-1c6a-216e-ae1c-a808599a918b,2378904655,16319225048790570456
+1739c0a7-bae6-effb-4c3a-43c61214da55,1821707186,14619254210781581663
+766d2b8c-ca80-76f3-2b5e-b8ad4de61ff3,1240482888,970269409209107432
+1ed994ae-2baa-ff7e-e5de-7fac7b120981,2519333594,1910788136489075559
+242b289f-b4bf-b96f-45a3-6b7a7507b961,350615714,11090413712436478241
+7029b67b-fad3-8824-8262-17ebfc4a2a05,270937210,10179270887082114034
+e93fa227-ed48-ed82-a4f5-55d605291172,2545978145,5188199813015532983
+283b7c40-91fc-66a1-24b9-05d8bed5a039,2697113661,4389898747305378254
+1fd2e4d0-ceb9-c33a-e3e3-11dec807e1ee,1133582244,12803688646561999135
+48803bb7-546a-300f-afa5-502813cd0a86,3829889369,17262099203831585085
+006b3b8f-491c-67f3-7ca4-d82e54492364,366693311,7613667886786117629
+cc7a45fb-ccdc-9044-962f-d8c739d4f382,2393195437,14814971185404265649
+479857e8-d56f-302a-d922-3d449b9bdc81,4081093606,2690798174014632687
+cd433d15-d79c-5385-30ed-04af2695f5c2,1827259594,12069481832454217298
+2e26128a-3534-d554-b403-96a895b00c2d,153897037,8905785593235168611
+d308c57c-4608-e245-11dc-88fbea0e0062,3182322019,10346863557111404068
+c1c456ae-b727-cbfa-1753-7aa73a66b09c,511034663,9168113386515705130
+4a2222fe-bb99-0afa-00a8-353ec70cdf73,3905312124,14581550837173738858
+f29542ba-325d-1df9-6209-3b2ac46a3aa1,1931510479,18023762179805802222
+d9d81813-904c-cf6f-f8e7-1ac976d748e1,3482580571,12508540827617728073
+0422d468-751b-cb63-003c-bb1976ec81ca,1144988214,17204900500913968226
+0747eb47-3612-0e7a-959a-5cd356090c3e,1114401913,7179924511748528785
+0d15528a-ce07-50d5-3a59-34d74c81d496,2690117167,6685353451239387203
+3dfc18db-18f4-608e-78af-c12f8e9c3d0a,2943931841,13074458654632475788
+7cfd45b8-ecdf-da8a-5d26-b2effe524623,3999154954,13791905746130055097
+dbcd950b-d843-5502-b88d-32f6f642e4da,977539418,8204563028390214139
+2642dd67-84fc-e60c-70c6-92ff7da356f8,237617867,8546202375808728922
+87764104-15aa-24f0-1912-a18eef9e66e5,3971481134,4167797987096819203
+332fde3c-9ba8-a8d4-92fc-95119a84d847,2399290448,8482852731218746613
+910bd940-1a40-eb98-4fcb-bb7bd69be7a2,1618795083,17636520008794419800
+eb856c61-42da-9a99-36e8-d10526b41860,3882026395,3683604578379315809
+d0e50466-597e-e77a-894a-f1ff639dca0a,1640218042,12660202932112067584
+2d4d60fe-be06-8a02-51c4-c8bef6720117,2729860317,15411863620341217383
+aefa6dfc-76f5-976e-1ecb-7c4d234c5bbd,3278465559,4799448412366292547
+c9662b1d-fe96-dd5f-4479-f61aaac67365,487324816,11626242232120260113
+dfc7a5af-943f-1074-fd56-1e8331ef03d1,1504126329,17666601305603017961
+38e347e9-7b52-f24b-52a7-62f7a21f988d,596898214,3482657331527977686
+8197d020-532f-3121-68bd-1c9be0082a4d,3778547058,7033315689543544581
+fd0eaff2-f502-1ca7-b36c-6bb28c592a4c,4068702534,3158065338059812680
+687a0c17-38ff-bb4f-980f-468557cdfca8,1015272808,643689539534788104
+11e11859-e0a4-9aa0-bb8f-8c5c4642f759,1454228984,6757962136161971721
+9a4156d4-c8bf-f3a8-62b9-3c6f900b4e55,3645688401,15710513728714531890
+fd939570-29d0-9cc2-590c-b0efc526e20c,168894021,10214502764579332387
+df3109f0-270b-f283-e4d4-0df16967cb5e,2941193138,18260954234180953593
+19f28a48-72d3-2dc8-3774-4f349cd9756e,2052534242,12278221363356672067
+857ab91b-a274-ce61-0a36-4668556476b6,1211703004,9601645303460418879
+fc04df51-de38-596a-d545-bcec5bed9c9a,1826546222,16173423457407082117
+3fab4143-d0cc-897d-cbf8-b3fdb2b472b6,3740513706,8144236856689363127
+627b4b5c-132f-0f49-d9a8-1847e6e17c8e,3284326384,17614470065180123404
+4750a5f1-734e-50ae-6d7f-91c75222201c,3791266798,2587909297121270379
+d56fe376-c905-42d0-611c-cce74d98944d,541267526,16225345093086106279
+4fffe76f-7419-2f19-234e-171060469af9,2314833345,1440957036584709849
+02605b4f-5a5d-0bb2-3f52-7fdd9e139799,806267207,7771570884623175647
+fa3011f6-03ab-6378-e2a0-7607c9e85101,2409593522,8474234729876494505
+3f56ee84-3351-368e-f3a4-c89cf0125303,4091629410,8626144800909979313
+73c60522-19e1-6f99-e5e5-30b76bd91de5,1427353648,4775917600598965435
+b9dea5c7-1398-0007-083f-7b905300433f,3369815282,15073026547782137435
+d00615e9-d4b1-4cd1-b619-566319ae3af2,2547899223,16666102744205892089
+559b9183-b545-0e87-664e-40cb0f9a5b62,2334236633,3369836319121544317
+a270ede6-1abf-61c5-fe94-db6cbdffc271,2448358962,13582865382504625054
+0ef49d28-645f-56d2-0754-3cf9d1a74aa9,2645147135,11489418651580853470
+7d1222fa-68f6-a7ef-a513-e1a9919f6335,873737374,4530936323849910334
+d3c75742-38b6-e01d-95af-df45b217f7b9,3238680046,13339661125482787142
+70858e93-6071-7650-5b09-0293acef6ad7,3829398349,7184670396587022421
+a9b1ce4e-a27e-800f-5787-56ba88196657,3827343224,16197315674827750331
+3af481c6-74ca-90a5-60e2-21647f00b468,1558668721,3827344144136809302
+6c21b84e-d083-3146-9424-d0ec2be82ac1,1051100885,865091567422970842
+74ab5ddb-8e3f-72e3-5734-683c1a725e2e,3286470190,13682041067623581607
+55ce1a34-c377-cf0d-ab7b-e8aaff9a8cf6,3070540429,11941111824567038762
+03f547d8-99df-1f4b-b423-143d5260cc1d,519777824,5142251962635451120
+9c8e7714-9981-9336-0845-fc7c865cc255,2167043230,15408603861874077818
+395a8550-6bed-661b-6c60-a31e17d93a22,2973641285,11669910541701546167
+7493923a-d9aa-47a2-072e-f8fa6d999872,379858822,14811524569738553573
+861dcf70-57d1-5a7a-17f6-888a3d5ad073,151451035,6078795198265851317
+27fff452-0b1c-a7f6-143e-d5937be9f281,2132646564,13728269755750583771
+3d461cd8-26a6-c966-7257-bfca4fc70696,1958448518,1766017488415709788
+baf409b3-6680-74d4-43b1-58d0bcfb5e75,1340840679,13863172249617884149
+d9cc52a1-f54a-8f82-7ba9-dd14d425f53d,1203770305,7022359144333107626
+b6221337-e1a6-aa4a-dcd5-4f6c1ec48c67,2733442401,4064879863305098886
+771acfef-f3a0-00c1-7fea-fc4a6c4348cd,2371449671,3788247607432387399
+3e236864-129a-e15c-8332-a4b47fa2fe77,1013727540,3176924414904895056
+9b4a146d-bed1-879b-7f89-c5876884742b,3171710904,4177148013658143529
+f3462fa0-d295-e2f9-bf36-9b8e6a2be77e,1090275762,5322700300416459987
+afd9b1bc-62b4-783f-9c03-3ead6e2028e1,4068594386,9255020915237135431
+8e2237b3-c75e-ef23-4995-7e5339bf399f,2063781198,2756985529379857194
+8b22755b-cffa-1eeb-718e-8d805433c19b,661713230,16045034782561300814
+2dae1299-074a-e243-9c8f-693d16e8b0fe,3738488678,126000882360665014
+b83d934d-65f2-2523-210e-455b07a98414,4015987465,3081683499012586841
+6ad13d1a-f9b0-21de-9416-a94bd2be97f7,3502425310,9370164593251229475
+44d526cb-526b-ada6-bc33-12541bf08d43,2399559385,10902794363344538146
+9d40d0e0-25d2-c471-0736-94d422102624,3694841498,9908263571949453318
+d9a6ee9e-08d6-969e-2c90-c44f1770b1a2,1011265604,160756836645260420
+98ea1ac5-4cd6-bddc-fbc4-8d75d296c7fe,2487811411,18329662272833939699
+f25a5531-640e-a04f-a8dc-8f8184a0675e,3233442910,5867235896983937183
+3fc84bbf-f77c-89f6-e029-d27d65ee06ce,423504749,11771195593875481021
+33617f29-947e-a7d3-3aed-b581f927e4a1,166896679,17904010003934666360
+f513fcda-55f9-8a07-10da-8b3645b7c886,2757811444,3511047700439910689
+11b3d299-afba-850a-a913-ec83eff9b489,2013037006,7715017380845869972
+d73f44ab-4f18-d70a-8f43-8e89fbb86ebd,1614087173,7628450539525037754
+65869fd3-ce59-2cc8-58ad-ccf06d215ca9,2192940000,16321461734114939823
+469c6184-ca6b-2c1c-e670-f32220d337bd,2853207143,10206230820541754759
+1b583487-b7d5-12a8-8685-21fef4338211,4074998163,3129996735658446181
+709ee158-5eae-68c5-9e89-4f55dc45d74c,2645295276,11151733667817905957
+a52367d4-4453-6c64-3d0e-adf7ade5f131,1546403503,18397238392533758020
+7c120fa8-cade-f056-eecf-65acb22c6024,336803199,1064335738339399928
+73a9ce55-23d7-4aea-22b4-d23fc7ba1760,1921370346,2432261399113539648
+f3a863d0-712c-d28c-8234-f85cb370975c,2798384478,13403209789800284897
+ec52f319-df70-2341-0d79-1682cf3aa1ef,2379561872,10305896676945466691
+33885d01-3dfb-fc28-593e-d33a2d1f65cc,2189129786,2519567249857992459
+a18f1558-96c7-0e14-9190-2558b2982f7a,4089765587,14057655156893240305
+e3c5a940-5bb7-72f7-69d6-e9a7bafbed1f,556714680,17683731448098790480
+5b4adb77-3e1a-62d5-8d72-4a349e8c0718,3627705134,15050198893071629966
+97083c4d-aa09-861a-81b9-24320580ea6b,490351646,7179590128932853654
+45a2bb30-662e-6e5f-a485-3ebd196a435c,3416274021,144108769282400741
+5ee9368c-8dea-f7fb-a649-aa2cd9b5e89b,1254072138,1474275297019018519
+ccb3a859-018c-5487-cc0a-8099095e22f5,3729367181,6205414499945085412
+b277c4f4-da2f-0884-a47d-46d9ecb272f3,3909390646,6012480128786490621
+92891b83-3115-72f7-4382-0d128e5b40fc,1089655946,12862330842006219835
+7f3974cf-f33a-aa13-3156-b0cd3a3709a6,4167510126,5804580614201654420
+8c918863-2150-4224-c372-6fe6f2681e45,1872277701,12401129253613397179
+5bbe1afd-70b9-fcf9-c8d1-a61f00262ea8,1479296737,12284506858874879765
+8c2357f1-d06a-6342-40b1-631c0fd74201,1784824036,17242818601210952800
+18736fb8-1130-319a-32fb-6752b26b67b4,2523542382,10276666113445726687
+393d5cb6-9dfd-ea5a-6337-5ddc50ed0cad,1519232964,968072222214328663
+6f839d91-02dd-8de7-cf55-29cf87429bf7,3757880651,6891851478121336799
+f9bb3078-0ce6-cacd-15ca-1d35c953f273,1435406834,4944754219852325616
+4004ec15-324f-fcfb-a229-e559d5a87d2d,1800913888,1253310506189155653
+1eb8f913-b318-5abe-da99-c421919888f3,193486522,3795502367041439931
+d1ed13f7-1e22-a1ca-a06d-01bd12a4ff53,2048542290,9338521701260332436
+15306c2f-ae23-a8f0-afb7-8ba27a605869,2282287320,1572499011905490010
+b3bec6f4-1f6a-72c3-4917-b448d55c5c35,3912981649,16078350978379183319
+dbf28f13-4e36-973c-b5c4-f0981d6392ce,473551858,1153745177333555697
+5196837a-92d8-53d3-8aca-a8652e93a857,121693340,8600507052234290326
+285e3ce3-0fdd-b5eb-5788-f072e3d2b511,1730507954,1651592300083616507
+8b8b8099-6f5c-4bc3-61a4-fba3cca234d2,2072223761,1595323450675994805
+d8ad202a-b0ad-2151-ec49-ff60bcd068af,2128975283,1625162290519548960
+6653805b-c237-1656-7a30-b1e1840ac6a8,2562735962,17825278827793509617
+8d5af0d2-c7e2-1671-eb98-df3a1fd61539,2672455369,2046883702400638492
+97442b11-22da-9c95-51e1-dc5a9693e3bc,1527199426,242548281297129191
+aa76a187-fc5b-15c3-bf30-2f53a80ea9a5,233393071,11261989682519261417
+9a91a1e5-b673-7840-d92a-bc0f939c74f2,772553898,4966099768654099256
+067b7481-a8e9-393f-12a7-9129cdca95d3,3484940933,14974167741875040665
+02f712db-1120-2d74-bb2e-f318a26a1112,3427670323,8483420021170203815
+d719b7d7-03a7-a132-239b-2149531c8c7c,560931436,14436181392435608006
+da5748c3-0fd5-bb6c-8b2f-c3eb44913c4b,2063503969,17302214524508197674
+f943ccfd-1b7c-8c7e-2e9d-363f60ed566c,3893142019,5952134782544968590
+df154e36-d327-84a5-7848-4b06df35b3ca,2382277690,7883276065004852964
+48a7bcbf-10c2-cbfe-e203-56ca8805a49b,3358376400,15649714103880675584
+26a970de-9ea1-2e10-1970-997c9c596b41,3017931011,14474117371210370723
+211c09fe-8d10-aadd-1795-0a60cca366f2,4213273452,4256606999860062831
+8a4e2778-8324-8f15-5689-370897e18a29,217138564,13298747441763426321
+97b8b35c-7d0f-d867-4123-6be895ebf403,3914512231,14558340467290806856
+ee210c28-9606-19ca-34d7-4cd3a74f995b,777001704,16692755195980399202
+0fcbe8c8-68af-1bcc-1beb-ed7e13e9f3be,2627834162,17912679014227819833
+f71320ff-2983-5cc5-0097-efca374c1613,1761513188,12063292139262387640
+0ca48493-a83b-a856-07c8-412de8f2ef9e,949381233,9687314770460649497
+7e53188a-53cd-dcf3-90a8-ddd1e34f5428,875312841,1301226531758117816
+edb42e5e-aad5-15e7-40d7-160955a4f86d,498495809,10938192384248662412
+bfe61712-94bb-0b23-9d20-788d1fa7d13d,2866151714,4089475615435600235
+12105884-4306-f92c-29c0-8bfe89c57e3d,365999224,16931740205527412046
+adcbfb42-29aa-355c-0967-a60359852c49,3665478667,11293737393205613901
+ea9c2d9d-efc4-fa14-1a73-8af3c843d881,3401522876,724976826140704676
+9e1fefd4-9fff-720c-9dbc-60f678cbc08d,759010811,16353051830216156596
+286b2fc7-4e90-3a65-8bd6-8b469d1d0842,1058166378,13334647928794566435
+f483a28e-f432-ab35-10a2-e2b006c346f5,2464473405,143688966464794427
+9fd6a8dd-01c3-4ded-1ef8-3f39b76cfba7,1397935152,585870435524591685
+9b5b4247-53c0-0da9-2802-b3b241ee7f9f,4096506894,3727379138253248785
+45af39ed-2d6a-b82a-f690-3d7512da1370,4014278364,12056147967113709421
+f134773b-2fb6-0083-959c-0036227f227b,451519624,12947583129225931826
+8cda0878-a58d-29c4-366e-0623053404e9,78226870,17505805255391031178
+9c8445b1-71e0-f22f-34b2-4dccada8abd3,3892097464,2619323408394930586
+b9dcc616-3b47-60a8-85b1-e36514376192,3695345411,3635137576670844252
+ba42369a-bc80-e28d-ebbc-2095510708d5,1644235982,13209705107025893048
+4fc55025-44be-ba64-46e6-ce7acfe11c1e,3360569077,16613018508044164929
+0e67eb7d-2102-17e2-da30-e95ea06c3221,4004331264,9817115035072320150
+b7bca667-1c11-c811-6f88-c6ae69ab0d16,321042934,9813989962762896509
+e49c280f-49a4-5cab-a847-7b6cc2d3054a,2244708224,5900136040687281419
+0632a597-04eb-8583-f149-80d614282ce7,4050368965,10279106016352984394
+3945269c-af16-5dcd-c8e3-264512beb344,2343755169,11783712819596118021
+c5e75d66-0c95-cc33-74b6-e191d6e50506,769760465,3091612404206169560
+0bcab05e-e254-112a-f71f-671ad3a6c91a,2233119930,9311700767342443278
+0419b7a9-284c-74d9-5be4-0157fb208126,489004297,16687989422413990940
+be2b2b04-dedc-5b73-3b7f-613665ea96aa,2160611920,3275209641435352893
+ec63e820-6609-ec79-0718-b67a848be90c,2365055781,208523826081313967
+8641afd9-9a5d-9da1-f720-c4bac18e3f4d,328695450,15353486051371068425
+f9cef4ac-a73f-8499-6345-d04767f1ce6c,4109243204,11357312939374169028
+20b5fe1e-02fc-e273-5e34-5ab76fac58f5,2951821659,1228645194984452819
+56e60ef6-a883-844a-047a-8e2bb62fb033,3357176191,716902461469809978
+182fb5ea-a97f-199d-7b05-9d9ce9f7b35f,1260888773,16473712598914826794
+6c70b5ce-7a4b-6327-8181-ee79bf8dcdf4,1341307472,1157391373902299455
+7a5724da-fc28-f431-a17f-feabce72910c,3320628740,7816716152925122398
+7352a9ce-d4f6-10ab-cd2f-87ddf881dfcd,1770943846,9641745126632759539
+c449ed17-45de-d56b-dc4d-cb550f64296f,3073182424,12136752008607809662
+2f8661cc-da16-6cfd-ab29-5eb320c237bb,1960752745,14100759813507936009
+23fb72f4-6212-06b9-28ee-9e38a63d1083,777089037,11733219395636806533
+830fa97d-1590-a3d0-66c6-5a9250fb2f67,1278534735,6458515038286068027
+115218ff-77bf-54bf-d3fb-ea66bfd8f1dc,3293950686,8517217388218755947
+a046306a-0ce1-3e36-181f-e528f8a0c184,4063674790,14465576540065141205
+b76df7d1-36da-7b90-cd85-a9fc1e682874,2343725213,11286914042876853389
+e3ca597c-3094-ab68-d418-c98328f7eb2a,3750947612,18002982328241571168
+387b724e-a00e-c9c1-12b0-7f97ade1b8e3,3766153658,4031472768769015783
+118291b4-72b1-d897-cf47-d91197a4fc25,426728115,65671571996792958
+cb192dca-3f70-c15f-ceb3-2f226014c310,59759870,2546709712618919625
+b1d73007-6187-a4e9-534c-4ccea2fe0718,2759348925,9440297598139564989
+e8958e17-f4c9-7c5e-6d56-6b0eae65d506,451402481,15736604968098013420
+31f27559-bfff-3391-b3f6-b9050004653d,4230974418,13818830391175297242
+d74756c6-3c3a-1cbe-e7dd-14d6d215ca19,4044112871,9423161204372238570
+d88c8646-6ef1-720b-b5bb-53704e3d06f6,450897807,4870669776680444775
+2c46c54c-448b-4e54-321e-9b983cdc1c95,467320181,12862570281168832058
+e631f562-b219-2234-0f60-e703147d58f2,1432652011,7390649192515687090
+681c0105-0a97-5277-c0b4-82ae52a0c5a6,2371189384,13348669734849129148
+f9af1731-f370-8c73-06f3-5334c2e36261,181489051,5457123625846074593
+c15eea3e-9922-5487-6235-c168c034d39c,3585882857,12215457481225311979
+d3d16200-d2b6-c730-77d4-c9ae8fe8ed4a,3576477899,6683657198176922854
+2d595be7-607a-d541-61a1-4d3389b16fce,378654205,12019463882615218744
+0a053cb2-3c0f-b3a1-821c-4afd6bcd407f,2512554412,14784611501560515937
+78ea911c-ce29-fb18-d6e0-d9bc2c94274d,2898521758,5590340621110687409
+03628584-13b4-0ec3-ef90-8ea4ed6c785d,3223905013,11562279958790781102
+03896a9e-2f5c-3ef0-0b9b-03c5fccf6e7c,3125939806,14212801848850760169
+cefc256c-e7dc-68de-2802-10257593a581,3749335592,17411546456042003411
+36446a54-7cb2-e35c-da12-18b8183743c0,2712404324,13957317556972044240
+89dcb9ba-61ed-05af-c779-30b72bab9c62,180299733,6971742813245511440
+191ad5ee-84a6-9d79-81ed-427db9e0e75e,360739625,7741963088209234922
+c4f682e8-0bf4-6483-b08a-04617d26ae8a,2454044133,8047111196033656406
+b9a4fe63-d060-0b18-150a-471701bef9a2,1887961654,4283233681522794864
+79c2af55-12b7-e6ba-5541-402aeed85e61,1380646685,9335586726918353516
+404d7de5-8b6b-d638-14e9-41f5c0308592,117459407,3136195813495088160
+27ded4a3-bcbe-9855-14c2-43b0d192e1b3,140989821,3027653818313410453
+a976f272-281a-2223-c09b-0487b9959145,2334652598,11652493291764952689
+0080521a-8f00-d1ff-314a-2f43e1992135,210649598,8807894522205399079
+c5b7b3b4-567b-4d15-0206-c3d9bb184baf,25594151,12055630083614103096
+4753db2e-ca4e-32a2-9aac-f84bacf5e583,2199437173,4920482085152271029
+bde35805-7bfc-6efd-11f8-3a2aa267c93f,1733171529,1138413557890330546
+d5beab7c-f19f-d7ce-15c7-556be6228412,3181924297,8152284566787732561
+31c7396c-2ca6-5fa2-3503-a36161332ced,1994992200,10989642620909861731
+9e1f086f-7487-2374-dd8a-6be1438dba6d,3749243715,871913294865921000
+e190c9c0-0d15-e815-fe60-da58d3563bf1,1959728551,1525650153431750426
+ad1815bd-8bf3-e755-98fb-9fa482f56bec,2230540151,6297122737642758382
+0db8281a-1ecc-4e99-c496-d21a4d5caec2,2291462241,15652312476744970879
+bb2d0056-2906-c5d7-e1ce-7294f4e1f6ac,2217114248,420751353840954579
+6c2d7346-4e13-5ec7-e49b-209e9d162583,3824922031,10565378552253039831
+b9354d13-f707-7ec9-dec1-6f7df12d0bf1,3215096904,993314534653656143
+abc061e4-8145-cb72-971c-3cf4206bae96,3288295835,4402809257939637214
+16b6cfc1-e04c-3309-f113-2bb1b25939c3,4293719388,13549275950052865720
+91e967fa-3d2a-26f1-b3d4-c360d646f0e3,785861309,2743958684661823271
+d0e25105-25f4-3791-1710-84fdc28140da,34428645,8011420142699401502
+bf29cc5b-3374-1cda-a310-bdbfa759ed98,3524495114,2660298237128483393
+f94c0ff0-2a94-8b18-92ea-ccb4e963db2a,3181564553,9797157785983819185
+e9cddc03-fd4a-d6ba-0bc7-1db9d685a25b,2924084732,3247265157464608844
+ad4a3630-0d5e-df0c-bd37-3d354b7fc080,2247257127,13513379895535954048
+edd6d940-b6f5-0364-1db9-ac7edde2bfb2,3208375763,8172052924731340376
+11bc58f6-dbd0-12d7-ce9c-28bf595e4aab,1174778810,2975775745967793884
+e5f09609-0f92-92e0-0fef-72318b63f365,3556854973,15878002068621601423
+c09d2b38-9407-1486-84b9-05cd99523858,957346624,5244402230717108248
+9d5c7272-657e-6905-807b-722befeadac4,4004229536,8661491610574495772
+a32340cd-012a-813e-cea3-04c1f784c0f3,3911086735,6528952909336222187
+dcdfdd71-74b6-6040-708b-c9007686cf7b,2405683472,12928287006087034757
+a52ba8d8-18b3-42ee-f1d8-236e650cd35c,3875119521,17825197335636569894
+3f3da5a3-1313-49ac-99d3-fb8f2210e809,766192813,7543569479920095078
+043b3b13-7f13-8f98-45cc-0f52373b5652,2599361717,4510377211907051870
+0fff85d5-9ab1-2828-5d05-4eef23932474,1223416457,11606395840082096398
+fbccc6a7-2ac1-5b0e-a89f-dc7be9e3b9cd,4055530684,9538304509722990340
+b718de9f-79dd-14fb-974f-4acb201c7bef,3963862726,6996744950287207330
+02740b84-3c87-fee5-9a0f-f82dfeee4e6c,1193869399,8228012583400585623
+12dc21fa-7b60-d07d-f08c-babfd43676fc,3814932186,11052786870730396894
+156fca08-47ce-c275-b8db-8647aaed09b0,3401698648,58243932595711335
+5046e2e4-d5b7-66b1-58fb-8cbc7070998d,2249774879,9464209190947224080
+c2a0992e-4f94-db6e-5e9d-036b5e747b3f,3628571481,13910509451324834396
+f2e74cec-f913-6fd0-1bdb-f7aef1f92ff1,3936431183,5743838910726584385
+216a4297-72bb-4824-a5e8-10a8d037aaf5,4229600247,3600956290860344712
+f78f50c4-5347-9bde-8a4a-762d8ca6b7c5,3286898136,13730557307414932261
+cfe85267-9da9-fdd9-aec7-e58d9abe7e45,1049479693,11127830167966587816
+c33e5068-ceae-25d0-2d68-143047e10456,3878748721,2621950225815285664
+c7688008-97ae-9eca-fece-58cdd60e9663,3536549956,8100977874592586634
+0b5bbd3e-66d7-6682-fb7c-d4bf1f544f2d,2516553526,14697262031474531401
+c349a836-f4ac-1e52-c715-daa57a137c42,1499445522,1128266291345124184
+5ac8f098-7174-9dc4-d3e4-90d9ffc9493d,3423170739,11928382895741095765
+78f53267-9822-24a3-aed9-5848bbf36836,1927262928,8085376549078621070
+846f647e-ab30-eb20-8fdf-3a2fce8c7fcb,3817689182,11722884182004775992
+d31ecb34-3d35-3e4a-950b-e0f7499c2f5d,2501410766,6359181852596228525
+7f3e2bfe-776e-dd05-7757-bcf0b8e7fc7b,4118550021,4986369594442108001
+75747284-ce6c-62bc-cd37-8df64c5b0472,2854453248,58109062262579940
+1ccee3b3-d8e8-a437-c755-938437a62141,4143420802,12804768605302265958
+9d3ca43d-aed6-c169-95f3-404ebdfc250a,3473058340,10169801174457304626
+3353a2ca-a35c-df08-9036-237a20b82d87,393402066,3376568105242593805
+c56187c6-b56f-2a9b-72f4-17d428974ccc,3901745208,2939759521557740066
+ef8a1781-d209-c77d-003b-bc58bc6284e6,2316668436,8833535123161269201
+fc025823-8172-3c8c-1732-978bb5f6ac3c,880518889,6207998875515877202
+0c7b95a8-33a4-d39b-907e-e336a3c26184,1778104453,2938585331474815028
+8d592f0c-b444-b214-e461-360b597f012d,1328192727,10929442608917320130
+e00683aa-e138-a78e-7a6d-2a274e01e81d,846061031,10416937103934804411
+9fb8bab7-bddf-9a10-c382-9762ef32f83b,1110941786,13187958216261105740
+e7b7c00e-2742-563c-26e0-ed3bfdf2d6c5,2556289403,8453074247616104540
+190c65da-c0c0-f52c-1735-4949815af7b7,49610069,17613613526739192651
+2a6dae32-7415-acd4-c73f-8f6f148d0c5d,2250678357,7064510678094763909
+5653d401-c153-4959-645d-7efbd25e149c,3452241672,16267109217095760649
+7b4b45f5-c67f-adb5-8bc3-dba338b6fb94,1498387007,12418883176628561701
+cc770bb9-71de-8806-9480-5d59de16baa0,621091051,12453684333975180574
+14cee3cf-d23e-6513-5166-0337066d5774,2693027099,9042916389356129951
+bc270e3a-0185-ca3b-eea2-29f212d98899,2228098346,5764485074314134141
+c38e15e5-1da8-ae99-d967-e9f21e381354,974169657,1351871158107033132
+13fd3f4b-1140-eab0-6211-4551b91878b2,1742315173,3348350207115238553
+52986e88-978a-5151-00e6-2d9e7722c5fd,1781866246,10224224480116861460
+8ac76c88-155a-7ea8-53c5-4f407cea6e01,3997420363,7259845937626415115
+3cbf2c5f-b8e4-6d7e-8417-910d87ce0a81,1567092187,2015682720387588919
+8b1a3183-610f-6ae8-7f19-17d3145dc24a,2357716269,2822241270678353110
+3f51d14f-ec50-5e60-9cac-060f54cddc2b,1202793101,2005087317830135399
+0157a886-5502-a831-659e-2e5536264e44,734006370,14383295914959626602
+0e2a82c7-766c-2f70-c5dc-bf94bdc93a58,2261641094,547482834317403032
+eac1004f-b414-70b3-f0aa-a8c0c3096ccb,1028628847,15028267834441994122
+e3018a78-c186-3881-33e8-e67fadea52da,1137160689,10912640753467231046
+1187e08f-7cdf-2177-3b27-c99da236457c,1738689416,7385951866957221524
+34efe89a-41c3-c0b7-2920-e55b2bd9baae,880964764,9906855480398893257
+724ad9ce-cae7-18af-1f6d-d49a2e91ed32,3354780949,17813261857267264323
+7ad183b4-8b3e-1167-73b7-5b9b21d83d11,481382099,1473303832403800628
+232f864e-cb8c-660f-4ff5-02196820ff7b,237251012,8176128801988936312
+2f585b9a-683c-dff7-0860-a710d8098b3e,6574403,13681271649937022625
+fd76ab6a-045c-d3eb-de7e-e5b60a455ba3,415046239,17592909772808796886
+60d87e6d-197e-2ef0-e544-25ef2c368974,1107124184,15786670284384489585
+6779e672-06bc-59cc-04bf-497b1a76f2e5,371384419,13208935137465171701
+c8834d4b-b4a1-8414-97b9-6f189d8b89c8,1334386335,2552481078794642399
+364be5df-19eb-8d35-16e9-4ecdb0cb8443,593537278,347714127731805663
+8e28dfb2-2b3b-21d9-1fc0-1d72634f8d26,1975707890,8872581487563330155
+9f36610f-3626-47a1-e02f-67f443110c1e,3397463500,1725062996874220803
+7a69936d-0b1b-36f6-65f3-057ba43455d8,3198245195,14367359440293310004
+2e2c9518-d08c-1636-9aaf-3668a2d18c5d,94980823,8277426872014485943
+bd349d7b-ce9e-e7ad-3a0a-f7b2f76cfd45,200631778,18235500805352888260
+f676907c-844a-fa29-2a2b-f4a169505053,51863673,6591602037603528215
+2875be60-2058-19e7-82f3-ac8b6f090efd,1354821079,11743240821365837342
+f4873c6f-d09d-91f5-c016-c21cf0abe483,2364433178,2940705469569344350
+b44bcc42-159e-c8c1-f1d3-29b6f056c3e0,965596621,7153441885194016679
+1867fb1c-836a-c60f-0f66-78095472c525,1098360600,17776768619900166967
+8168583c-cfe6-d660-52e7-370ef0a9d919,1173607033,4171290086437526331
+6c64d16e-5489-3a2d-2484-b8914c7ba2f3,1112910817,1244578079647014602
+39fa2148-0528-0da6-ba55-162b4a68f064,2287649649,15078970014492002939
+7a1c1eb4-7102-b258-32eb-0a162e3ed6ac,3212423446,12446958749799034905
+8ecc05c0-50d1-2ce2-244b-073e358ba3e5,970647436,15408087399440725494
+129fd958-8dab-8541-2810-d010602bf10b,2892158929,5196703332664972317
+33b6523a-1f8c-44f0-4abf-9f51d422f2c6,2398895089,4343561444677837165
+db87a811-9530-4c24-9be4-98033b9531dd,2649699219,10636010498232368109
+595a92e3-a5b5-daa2-e1bb-937659ee8e50,3190940430,5288601662310803866
+8e5df0b2-31bf-68d3-3ea0-086b7c948961,1280366539,11340744759654052654
+badc9408-618c-6d63-8a44-7ea8cb70e6b7,3972182025,12105873648667628422
+d887a60b-8aef-87da-1bb0-4dde73f87fbf,3435572319,3717398046734992785
+56df179d-2ce4-0a91-49a0-ab4ecd739631,3844491756,12483684681053797358
+9373baed-e35c-ccb5-648e-4192693715a2,2312069534,12109508180092506987
+e732f092-a608-31c2-bfaf-2839344c8c40,3549003672,5517209294632129215
+cf5d8d02-4dd4-f6c4-18f0-0563dc123f92,3464475577,10330281409900227755
+f37e3dcc-909e-aa6f-13ff-baaed54d6e7b,738042551,11548442273338828842
+a5df35d0-dd6d-5f97-c50e-ff0fbc46f13d,4240123749,12220308472283565143
+d3fc854a-3ab2-2cfd-421f-33c96d3efb7f,3064884410,3497843208977750235
+905882ba-e0c1-146f-cd60-a77557468011,2413683575,11108209080882001424
+bca60dcd-9392-cad6-210d-36f12ea25a06,916546174,9839385928541756968
+9c5118e0-c95f-eeeb-4804-92292cc58142,4142709196,14957032972186659401
+7ac20ea9-2ea3-ab82-fee0-43cc99a8ac17,1050989622,2328065250046648451
+11937783-4d1e-afdf-9795-a97481a4c12c,271075483,2445245726222150728
+dd6ac973-194d-4488-7c10-4957b434b8fb,3168222875,13893738740953122464
+0db703f8-b139-3a78-6fa8-0f6a563d2b08,4061980707,4382644073948542472
+2f6316d1-cfeb-da5c-e918-66b5680a080f,3552633040,8892311004473604353
+e8f55eda-b76a-3c0e-7b1d-7e8536f0b782,1107347861,17329835190214075276
+f877919c-a55c-aab9-1d86-79a38f1d0a05,2671376863,11736505257887967084
+2aa7fcaa-9a85-34a0-0e80-30dfac4d39c5,222144751,9332391107178132887
+141796e4-67f1-96d6-3905-9769b201e444,465835535,17523584024744914152
+9db5beb7-6a0b-a794-a8e1-c71080b3316f,2912137228,4427272487908725729
+ba0f93e4-ee37-11cb-cb26-2d33ea7ee70a,1888174644,124454527862808816
+10001a47-c1b3-279d-d50d-51f1989375b5,111382823,15470963211833652760
+68d27929-3547-6a1c-04b0-e4339b93df11,762946838,1593584075711422878
+8bb6aa97-126b-ede2-846a-82e3b930c6e1,3110046617,11318708950917291077
+746d625a-838b-3a4b-f092-c870e07393e9,4180599523,5671281193946164649
+89b758b7-20c4-e76b-10c7-70e4d656dc28,1722525318,17964965613670843312
+576c871f-0c7a-c475-712e-ba0f70615470,3341220125,13647374882275539236
+f07f8314-459c-03cf-763b-c0275f9b27e4,2223242588,2606305188774470078
+d09e447b-fd1d-d949-142c-fbe4bfa2e37a,456296949,5636937408210597297
+15a79a7d-bdba-e2b4-29ec-4b282b02423f,2912256583,8627836141280902362
+d2e8c17e-6425-4de4-2b32-96e015f857a3,1792474316,13166946454571216527
+4655b0d5-b5f8-d6c1-376b-c1fa2565253c,4258846911,7348180897587959120
+383661b9-cbba-230f-c6fe-2e5efef299ea,1354085074,13109487018971961319
+0bb67f78-d769-f313-3a50-773f8ae35f7a,2732530324,15362305641752632472
+60f1eb8e-fff7-2b5e-4484-2f4b4efed44e,736649270,10078259410482487011
+013dd04f-a188-b892-95df-8a75d6e33f62,169212950,15198076208402775566
+d33050a2-e64d-cbf4-1cb9-4e4e15444f99,268549004,13284914449059440220
+08fa8e2b-2788-382f-a2a6-1768af93639f,3307775728,3139389163724527386
+19b56e30-840a-e8ed-b8d5-43d1eabffcd2,1036914855,3298134473215130116
+16a58a12-54ed-6fe7-d0fe-3becb9813663,1701292939,5449896063192258933
+135ba9c2-1bff-9c0f-b385-6a00bea971af,3801743213,6467560911857845226
+2408d75f-9a70-c0f4-4b2f-27e790c55dc9,362886526,12736279164777522156
+ef6b5500-0e0c-550a-d970-965cc303c003,1885065057,4360885150917843267
+65cabddb-676e-3ce4-9799-7ad6ae20f9e3,804226995,6109557443935412241
+8e9ba564-966e-4d2a-9dc5-8ded917d5c52,2549944418,13777070743676749912
+ebd44f3b-5190-5a6b-ecd4-341f38e98576,2709277678,274987112403344774
+4dea0517-b523-1702-d0c0-4a2d7a966053,2462034887,819623945564215690
+83690420-7020-8bbb-f86b-bfbeb61684cc,1628369069,14551676623545975130
+15143b3f-4ce9-4c0f-768e-454c7fe3b505,476168930,15925354775126907850
+0f18e4fd-3cdb-924f-364a-6dad6949eb00,1319802795,11234413999922649073
+51bae556-d4ec-8b2a-be34-06fe115e69b6,1150462024,14671096812480691517
+1ade6ac2-6f6b-01b5-418b-e899e3908732,495613243,15329470535137372221
+aadfd09e-b299-fdd7-81c6-29b0e83f200c,881524203,8297228482885394120
+d38d0148-09c7-7d90-229e-65927f008c2c,852614629,2978670629277292553
+df8e590b-3d83-9351-0041-4f17cea4d654,865019019,690980486203609319
+539d670f-7e8b-6390-473c-d0f807ca0ece,3500083454,8431702328243366886
+0f601904-1c92-491c-aedc-ac6979fcaed8,3197931685,5999099492990668653
+67d9223e-675b-613b-645e-20b12454aff1,2210166929,6442006218460806411
+3ca7a4ac-cec3-372b-a930-ea46a568b297,4127214314,9765952458670290570
+094ac85d-4283-f7c4-eb1b-953951a1b798,1176124990,16763874140155083125
+d43a2a50-24ff-9f6c-2592-41e8a2ca91f2,1477992771,14582548015436817822
+7c133088-7d89-f892-3763-e2becc1205d3,3188552543,14213151812251633234
+851916cb-baf2-248a-b772-6242cf16f44e,439234783,13522540539894484624
+b8296c28-d2e8-cca8-a7d9-07fe869a11bb,2758394184,17753631312647523461
+a0179e31-f0dc-e50a-738e-5d0bbb0452a8,385278958,8934038117601170642
+78710681-f2fb-ad57-4846-1a05a632fedc,2265079095,5859727715240798953
+7649eb53-da18-da36-e338-137cec32a696,3487056487,10465982428104199155
+c6b5ff99-e9ee-84d1-1f9f-764048a91511,2178853839,3318667859584990952
+77252da4-c232-3722-f1e8-89bb943b820f,1020810623,4248124921674401801
+f2a77fb4-fa3c-1ddb-e8f6-48e5c661f450,3308017626,11106601648508994122
+6b9b298e-26eb-e382-79f3-85013fa7a7b5,2199846458,11324603816834342211
+79be5945-b95a-111e-e756-bc2ce660d8f6,281221478,15447762689505101559
+b5359359-9d81-775a-5299-cc63dab3c1b5,3497686781,17405344770676626338
+05815176-d9e2-a5ef-7b1d-ce586d25ea98,668445614,4977675373894188780
+dab6e005-bb18-579a-9d6b-7c044b455cb3,1152104556,10517887325631461951
+b3da8939-74c5-f588-8d2f-e92acac39b51,1666070090,5614957047119568988
+42b7b558-f31c-fe05-0b6e-836865c198fa,1678262454,123519395536034829
+167ba1fc-29f2-d4b8-aa4c-d95146169eed,302409156,6924249457167351589
+9cb8db42-c47d-c2c3-918e-1dc4ca146b41,3542413574,9331279787066381941
+b8c5436b-611d-90c4-5e64-f20df0a52486,1603678851,14650688922289714794
+1fdfc35f-ff17-c876-eb9b-b5e3d4aca41c,4007960498,12157244264400237258
+cbe81740-ac93-c31c-9c80-9b1c5ccc2a9f,2678423569,16097957887553799731
+cd9478bb-5bce-13ee-96b0-eca8db7e34e1,4198442936,3152960273999296996
+16bc8a9b-8497-0ed2-8bd7-4a6bf537a131,4099166563,941124717869090036
+c252d2cb-dcfa-1d87-62ef-76997ea8c5a7,1386235032,11403136607328323280
+abb3d8f1-6189-964f-a10e-19b89642417c,699619035,532661372724482379
+5c00ab0d-e8da-d5a5-4c45-e32afda1d17c,1913406189,11811314576782442534
+3758882a-3e54-0d4d-d913-a0f7b33f3697,2087658595,4823454661104602290
+57686b04-08a3-0853-f691-f9825192106c,4101380800,14954231556726633836
+f9d3ed46-2fff-4dbf-bdb0-9a5079fbef75,129324445,2757974568119607693
+6d6ec97d-4134-0f94-3c7a-97c4be4f340f,563713514,15065242537974541018
+2a719ef6-3722-aae1-a9fa-0a0413544a7c,3971771382,7759333037701800532
+b3a26bea-444b-d479-abcd-75c6d1ea1f78,3685936294,6162994844756193779
+44ab6ff8-54ca-069d-16a3-dece2638f2fe,791070305,16914394904070987200
+e403e4af-2516-99ed-e918-a3d83e90fdef,3603153115,7061872206711758814
+69085730-8549-cb2b-2223-82cf72040fed,1473191983,5528795240561237336
+df2976af-6892-24cd-d252-5ed981c61f18,3522363063,16511661365831944676
+ca4f45c3-7f1e-67fa-f651-9a6e2657d10f,32463281,1591695082756085565
+5c15d314-709a-3bd5-5e10-5a5730c5508f,154376124,3726998963328509473
+52a18cc7-b6ed-861c-926b-f675d79838bd,2340925337,7276124195368242969
+7551885c-2b0a-b903-7605-a07b6456214b,2783608258,1547450172306079800
+313d7209-92ec-d61d-7a4c-f8ec77092830,3382694687,17367831370644948240
+354619e6-a3e3-860e-21d4-f5e6ae83910b,3973563355,11972130046805608379
+266c3326-798b-823b-d33e-f500a442cc66,2548079781,5771662889935264023
+9a286fc9-8414-cbd2-8b29-a8f81adcf36b,1215551773,16859238098256025555
+faec0660-3021-2f12-01be-730840852723,1327741116,395738141092820433
+5dfd3076-efcc-a765-64f6-97d8ac33b642,1242964859,9449712163413298696
+61186ff2-96ee-4657-aba5-d1f0330d5ffe,80722696,12791407225545540846
+d6fa339c-276b-788e-9cae-0bd8112760ee,2965238437,11661486823816598964
+166c163d-491b-77c7-8f17-5c6f5b378f2e,3709597225,9506727201140706260
+e007235e-1e97-690b-ebf2-f74acaa73461,1420598032,7532802311512501548
+89ace6f2-4f67-3996-bd9a-ce3d2348ee06,1128370676,16176407109506914659
+61f69eb9-5cef-c206-5c00-cf1c9844cf6d,916404057,2215019705750895168
+fd91ad3a-6287-cd40-ddbc-1bbbf21fe1cd,1516373454,8697964717484616573
+c4893148-5d13-7a88-e94d-a8fed6fb008f,2054451008,1586590038281594500
+1f9a67d4-6efb-42b9-fa66-9d62b2eb8a91,4117582305,2065265684443553140
+541ee84d-0420-df2d-f4dc-562f6856709f,3845550900,17919569052659769557
+1b54a5d7-d4a1-930e-95c9-51ccdda470bb,2070297710,970118792394645718
+703e38a9-9a59-504b-15e3-49cd106df082,2451725449,11247944278338178623
+15b04de9-4685-e1ae-36bc-b1b62c9c3578,3066450516,14382105409976684284
+840fe828-92b4-a054-d252-a9f84e7eee87,1138669247,1104811544828447810
+b274850e-26d1-d687-6802-2e6f0ea43888,3075979849,12250619616743043811
+c7a135bb-9ddb-381c-ea28-cf54db3b249a,1153048501,3022207164994986526
+63c1d372-18f4-fd34-25a2-87091c96c2ed,1960745037,11906740428553162479
+24ee070d-741c-c953-c997-49a44b2078b1,2707252643,5076323332823620776
+39400633-78ce-a756-4328-d8d102065d32,109436552,9495324106529306932
+f5b092a6-81b4-d72d-5faf-d08cabb73545,1035352026,6443423720033476886
+994f9a49-660c-2f2e-6c85-59b3f839dce7,1619892257,12914459982089586978
+95d72951-77c8-fbf8-9135-e19b1500b2bf,801177609,16649561000388974415
+ea4abdeb-fe46-bdc0-2234-235483392f93,3965616645,9319179270181511640
+3aebb5ff-fbc3-cab5-fb3a-1420321f19ab,1842405432,5313496751392618759
+328975e2-43db-a7c3-7484-e7ffb9980f78,2259788035,11335560414114529018
+f27d705f-ade4-ad80-bffd-8785201b02b5,1418561684,18360791072802624136
+4ae44f55-0804-a339-44d8-17b56b5f9de1,268235731,12549656611186530573
+4a901ef4-b14a-82fe-1e0a-49dd70146ff1,3149017466,13473642506677630250
+4d0a3883-4e71-1344-2c80-b96e06d70f4c,2663185958,3516647791788203488
+2fbccf5a-468c-e8f0-e3b5-284b18f65b26,3556534640,467101525848110068
+c88e380f-1e12-e170-08ac-17197057c5c0,3918348425,5531152684824126668
+c687ded6-2d1f-0a16-e8e8-4c03bfc35091,3692078439,18391982329863441703
+1baa7016-a2bd-9b84-3eaa-12cb1fd1f501,3222917097,13900262938410606790
+13e4e340-fec1-4c63-e827-0dc602990ce7,2532406018,13863824435759219858
+68769b6e-e250-4476-cc54-7112ec827909,3803934003,8796239433838373699
+eaf36cc1-4a0a-08a5-9430-e6bf1ecb795f,3818455828,14603063699910716357
+e2993f8e-0dfd-0052-2214-b15ca8ea65fa,2143734859,11609274547121025553
+87d0f737-6f2e-998f-34ef-4c3d91687ee2,227073835,4129643397901480019
+9a4f493a-1afe-c225-d3ee-6cbeb607d231,2111408541,16773720442280503909
+d7ab681f-e669-7faf-4e16-6ccff4791631,566964573,10155860296424574804
+85756e65-df18-d3d8-d223-5a3f70e9f2fb,1504028443,13262176799263143924
+2d88a2d6-dc01-860c-7363-61aa2b378c75,3260837443,1689956848239389936
+c5da29d8-bd97-e2eb-58d6-c363b55369b9,4254130836,131889406301262749
+bfb4204c-6496-ca56-c7cf-2b618f0aac65,414648953,278428844213188320
+9248826a-7387-f1e7-e78b-18a4f19ace2b,1251434257,16318478865575623638
+7897ac57-1bc9-20d9-08b0-1d5baed16fc1,897715636,472938470551521465
+dec7e66b-ab43-4a6d-fd23-5b2ff778f760,4077959396,9176916563050127650
+a234557f-e3ec-c5b7-cc7b-18ff1a0e2e92,3175418309,14597117115157954507
+bdeca1bc-e27a-fce6-bf94-acfaed3c7501,1458074949,3936140781868342955
+077e485b-bebd-c3be-3b92-a2f28bffaa0d,2619822072,29435033638681223
+d3cf0b3d-35f5-13cf-e06c-4b5d32faaa3d,2050588672,4015909845749794673
+a1086be1-b5e9-a203-af18-a58689e0d75b,2548077938,7209185048010596181
+c437a7c1-e5ee-62e8-947a-c949aac5c1a9,3123302515,6771524772312505371
+9415c5f5-8319-f7af-947e-14c157640b58,2730558572,173892584633684645
+83fb1338-8110-bc62-65b9-6aba0c630ccf,3168415262,9963127359187437149
+cb1976f5-4ced-18c6-3dab-934dfe2d125e,3436531009,5655095160665196541
+726365a6-abba-9542-3fd0-582a44a45b21,743112297,6311519358146328860
+caaf5e47-3a08-9b7e-c046-264294232cc3,1464942226,2607246486470017792
+20091b77-28aa-06d4-8cf0-e4d634a84b9a,4174981299,7802356557275923009
+dc2fe4aa-a93e-036b-d547-421cff097fed,1775640574,2448608235862564569
+56fc6c4d-6891-2f7b-e1ea-14ca137e8e8a,1209355430,2721889246443361643
+c130b5fb-5e8e-3686-326f-9193cb825863,1759546964,7288511618741263739
+6527bc62-25b5-4874-c475-69aa6ffa0d9b,1661096596,3464599831094648412
+aab12928-e58c-7375-f878-8bc06fdeae3c,1368320405,14651498950684429139
+e4350ebc-eb54-706a-6132-d4e181edb18c,1152280436,2819667986275935941
+68c60c43-85ac-f1eb-98bd-46d23d98be4c,3744510895,5990977103743415484
+9fe5d39d-cae8-5024-736a-707cb36f3f0a,1694289489,316385255095192573
+b0e5e9d0-3fa7-2a02-d03e-724befbf50e0,20930522,17433419884001294030
+d79c1177-85e5-50d0-c08f-9f18221fb5de,1844477118,871849693310116619
+0288a42a-11a3-4753-fdb6-bf1f595a00fb,3656453047,9900743411147025635
+562b34d3-9a98-5fd0-72d7-38bc626caf23,777803551,7617781304037622569
+8db48d81-69c7-6156-1b65-3080f73d6120,694481512,14223974219027419833
+d0e4d280-4149-5ed3-ec5d-fa4e7e02806a,3218103884,2964514397499952953
+0be08d27-a677-2211-3b19-95c31f380084,469123971,9083923775682257867
+0ea6c2af-c92f-04f9-f4d7-3507564bd542,2963575960,7546609110306488524
+6572c8df-5098-914b-e6b1-9b6ce4311ae4,3729513753,9874212270869176025
+c61cbafd-25ef-b59a-5c8a-6c63ce88ed71,1882199517,6582771025903644346
+1d27be01-3314-61f6-343a-2126d311200b,2174055519,9776135272233927011
+8e509e60-785a-5349-a950-8f55d3e83ba4,807043781,12276452943486390050
+66bb9c69-103a-96ab-4ef9-be8451c7d224,2481260638,6726961977834851769
+3f921bbe-253a-e0b5-634e-ba359000feac,1163829509,16437348735160054593
+8446c2de-526a-7d7e-ba9b-75fb093ab637,1366843576,14351630555215197619
+59b45f79-070d-ed2f-c548-0e3821ac2624,3270114468,5230280159014861078
+0ce329b2-a12b-11e0-5a8c-693a18a18a65,583430853,7066049249210772899
+832af919-2e4c-1758-419d-cd068631a500,3375939634,2258023273435255478
+03109093-e8ff-2deb-9d4b-9a614b25dd23,1907395424,8086332482616361207
+6cb89985-63c8-8648-f878-72de4aea2bf3,4087874140,2892268291382790858
+cb8f8ef2-2d31-1998-bf71-d3d2d97c0d92,4250855509,16717796064599398227
+9f9da7f3-f862-8fdd-a9bc-8c1e6c30963d,2659388284,3668199626810385716
+c8a4911e-571b-8733-f0bb-9088e35cdb8c,3943763012,5808092655133463500
+ca035fb2-ad8e-e3b4-f83d-effef51d6763,4255572291,12006428570559503056
+f9d7d4df-c8f3-0154-ddb5-b1254532daa3,1327684444,8329361435959411166
+65fc7475-66b3-7f46-efe5-fb9463a289e9,756479831,6253172250018027531
+e8aae557-34cc-5a5f-7777-eece8b19d342,3158555007,1324618554060538220
+d8222dea-0d8b-0f6e-8fd0-b6d9773ed2be,2142311430,15978423411228530686
+bb6cd757-a777-7375-cdf3-83b6c4ad7918,124589492,11852213839369662830
+808e0e52-2592-ebc0-5466-3449400ec8dd,1695684397,15712126678877008131
+cd229ac5-0ea8-eb5d-ebed-d46aa226f694,2326924585,7061371181908846017
+cc1371c5-2738-6373-f89e-b03f982a98e0,139479741,6259765983261663901
+82204512-8541-54d9-f86d-74ad9df200ce,477131606,2913730260154943727
+3a7400d5-5ad4-783b-e4f1-281db5669531,2919057410,8833983489915090376
+8091f440-ee2d-68fd-4333-a4e832779e98,2104373926,13901537646670621513
+e318a885-9d49-240a-866c-d2f5cade3573,4198127710,13842404477326311622
+ab68052c-cfa5-4f4d-73f2-e9dff8e19930,93307819,13525512186826465900
+859fc3a8-ef7e-5ed4-7108-5e6b2b181c19,3575832722,16682625703683871712
+8088520e-0b1e-4b7e-577f-7ce9e613c2ff,2831108764,18258831585472431766
+6699f760-49cf-d422-cf54-be529f56e398,3952433380,7083788401997533425
+a28a0895-e1f7-2af0-f970-ddfa71bb1559,158987618,5228260031407815303
+0dc13834-e65e-aa2a-6f45-6bf9a3634940,2582257726,8255489410854381336
+441145ef-8125-9082-634c-50cfc5fade46,784131315,17338118392967523412
+1a9fcfc3-5ede-a057-b482-326e14af6544,1651663379,10368111434790545796
+d23a523d-0e9e-c8ed-cfc2-3c6f2f83a7e3,1863843500,5681596765522888778
+45adb4c6-5521-58f8-0e8f-980e263adc9c,1731840777,1197501500947050153
+347e0727-f92b-1ff1-0dfa-46c30944bab6,4127795320,6191355199294406238
+01dcb78d-1e73-a47e-b905-02d07e06c42c,3718233238,1599651679707002157
+77444134-1176-26bb-ce5e-1ffcbde3e7a1,1927271387,17648229655909459127
+f1bb882f-5b36-9fb7-3baf-60a66cad3635,2663734030,7877255686667999539
+a47f32d4-8233-8bd0-fe0d-0d35e5ea1846,1805282589,8254083428739957090
+6c784105-d57d-2005-47d3-5c5935e6d42a,1557586619,14594267988912828565
+9467637b-64a1-fb76-a30e-1a1e8680bad2,1578342063,16800879781485253366
+5bd917cf-ef3a-969a-aae9-00ee77ff0922,1339641276,8376857113487259054
+850fed15-7588-b337-fd53-b93cc2fec53b,4009682222,10222410114413027198
+b0e3ae97-b9d1-afd3-50f9-723614ce2e92,1222842035,4232137886186548339
+d941acc1-16fc-be70-bfc4-8344f0788d15,2687913090,8339113734562035283
+88d0f903-e356-f757-4256-e41b07c3c968,1656378294,10977533664590599407
+6bbde782-bd29-081f-11c5-d87ec14272c1,2986200291,14434542698745596582
+797b119c-846e-6af4-7163-85da6de8d27b,3603171951,13154516640010159842
+6da8a776-9504-7ca6-1afc-c51e9161f154,3420481209,616750837565730772
+7b860e58-6d9c-0be4-09a0-83cb6b004a55,1813011895,6497793771604074915
+5d05cf38-e5c0-bcfe-ac15-f06dbb2b4232,2581504368,15546682009315054744
+1aacb50e-7ca2-45b0-971d-dfa7a6b50f69,2481974751,2613833714920386919
+01fd8725-0f1c-b50c-0deb-9dea608a4e7c,2527617820,3894887939155318268
+11f28c9b-362f-3b11-aa3e-a900f794e89f,3643532078,18127931821727367918
+01e27e7c-e902-700e-04c5-d57a57e1973f,3565604174,17992337921315661250
+02f036d1-c6e1-bf0b-181e-50979a95aade,223504578,15940032760065011599
+4eb65a65-bbca-8a88-fdf3-b663a2bddf96,3216527004,1667814715335597
+6eaaaa48-a0ef-2a1f-57db-a6e45b7e3119,1096299768,6098725606983459945
+79b218dd-e30c-4c66-74bc-7c914f092e06,160312059,1070785439880537152
+08fa04a3-f139-7746-505d-0e83acd1bc94,3753378660,16198607057795774645
+eed268a5-da5f-e602-52d7-44396dfd66c4,714070612,698019501323550756
+d9be8e19-b2c4-c50a-eac8-b591cb4fcfb5,2039084636,33003709857620497
+e8e99879-3a2c-ab37-fee2-8b6f3b58fa43,3815751434,12855341904709752742
+5cda4cfe-c7aa-ef66-3788-0d15240c1953,1655108156,15469893463386275567
+a705078d-7a85-caea-0c4f-d20454ef8c19,3840008825,4287962441113593200
+d83899ac-d9e0-4b6c-2f68-a52e3518b061,2837467575,3435944507601880766
+6b0fcd7b-1874-cbf8-51de-615eaa5420d4,3983034458,15113806738098955508
+4c4cade6-6245-252b-1062-1390db04a14d,3516210144,2792765231210640922
+ae100eb7-feaf-716c-2b8d-2881bbf5af9f,1649806978,602485800602532607
+fb574237-8b78-c3b0-0eaf-8cf512a4efc2,77568001,8505028614378817101
+3e228db8-5c86-0312-e299-a6cb6c71d9ef,4270764647,15425073802495984677
+7e59ce64-ff16-1164-56b4-21bb5a380f59,3480854443,9485851017793637529
+f36f33f4-9160-7908-1f0f-3fcf2e18c984,1254281376,10244382793993879923
+90fc9533-dc5a-d8c2-d1f3-5c4d844275e7,3407654174,6661193760813423300
+712dcdbe-a20b-d0db-3866-6f79ebb763d2,1889719690,5371406507624576940
+236d96d1-cc83-ce70-1116-9fec0c16bb92,2687175490,2367932221718292358
+f01d240f-e70e-7fe9-d6d2-9fc4e4773797,1363626543,1218772046451978118
+28789008-13e0-df77-9cfb-99eee9b85fc3,445267733,4365309754028747238
+b7820748-33b2-9f98-cf52-41a6f2959640,1173039677,17452100654500515398
+f2d8ea5e-8154-726e-a249-f18bdde0f20d,956654774,12743549673377668940
+7e835a78-3d16-3422-0842-694f52c3348c,3997662383,8222958952140828921
+f489ebe1-8d4e-9482-7fdd-4fd706c6206a,830745421,9803186378873363324
+68b097ca-4513-bb32-eb5a-70238568550b,2190871044,16657912872812888407
+ac2bb69a-547d-ee1c-8c9a-ab9951277745,388607086,10235150470220059007
+ef33f5ab-33d7-9fd3-fac3-3c79d67ad869,1147542720,505737526362855456
+de47670e-57b0-8088-2a77-d598e878a14b,3911492533,8897664925137221619
+f0ab8bfd-42d7-1f86-8985-2823f9860830,3621794581,1654349232616103864
+192ba62b-5341-74dc-da01-f4a16f989728,306284258,6213111009576994911
+1862c30d-1a16-e8f0-55db-15930e6bb040,1794697344,1322089188251968790
+92b8077f-7a55-5ba1-6aaa-bbb3be2331d4,4096331282,1104365517531714769
+dd7cd85d-9c82-530a-bb83-eb142df08bed,71549287,7466758004658877209
+b92ab067-5c63-0b18-7d24-232f37003918,3989639379,11627757001359585085
+ce656e92-0dd2-19a4-20a2-95cccfe8750e,4067354549,16426231671774303958
+06c9b9a3-d1b1-4bbb-da67-476291372d21,4199981202,18186503028601681472
+49bf71ac-6055-bc8f-7556-56002633177e,943558888,7009063687127691456
+7ec5ba99-0fdf-2379-44fd-537657e82161,494030150,11238269726541940550
+a41824e6-8bd1-3ac3-a1b7-fb96175cdef8,1733656355,2269066551584295964
+a56f248f-31ed-2e81-2daf-13bbda15349f,1683156318,9463836143658345753
+097339ff-f7e4-e045-72cf-521da35dba62,857356072,13718322598581979358
+0a870090-2094-0c1f-778d-4a5443eeb13f,2640879132,15348679595722279900
+4e646843-7c59-ed0a-0ac7-1b44db42485a,3549434692,13863558157803080823
+3a6c2a96-adc0-6312-65ec-738458a7e5c7,1461505326,8457647018456571248
+a3f792d2-4f45-5849-e48d-fc6e0ca4722f,1512732509,8901363058718145779
+fac09929-d985-01bb-0fb5-92bd326387a8,287289239,10135501140648488209
+a504cb37-a7c2-a090-116b-cec9ad7b1b92,600885999,11830737788218889320
+0cae955a-878e-92d0-2577-38c2e8384b67,3948047104,15679937249587778984
+9dd61f70-0262-bab5-11f4-69ca43848792,3479723313,4996212107864558419
+ec4a42dc-f9ea-d49e-71c9-7740ce1c7f76,1610615828,17521218409739707714
+45269d60-bc16-4f47-cee2-8880f396625e,2750100873,5787500745423450304
+615a5e10-f4bd-d858-58c8-04b6af007bbc,3463252485,2313782830734879074
+1a9e9b48-91a2-3e7a-25e1-cce06619c353,2228795149,213146825336394924
+513b2a1a-57a7-38d1-b198-725873b4b0f1,347691906,1708154561280401683
+e8c1d746-89ba-0efa-ce1e-526f6c1690f6,467302860,16956884529761000679
+82f9c20b-51d1-fb22-8c4f-f2861bb9977f,858478747,3525999335861213183
+0d858b9c-4264-ae5b-bbf4-6ee68604203a,3025942893,13345411711651037797
+2ca19bfa-6551-2405-0d9b-91ac8f98316a,1727279865,4895200558248093017
+25cf4bcf-9736-029f-7647-0d541ec78bc9,4242486627,16452089213115432435
+932dc936-ee0a-07e7-3d1d-b9ed48b67fc1,1035447110,17987245669034800659
+b2e8bdf7-8101-fe44-a6a2-487f99aa4dbb,2510002949,13140659446090420918
+1c3899c7-90c4-8c1d-514e-da5f400de0d8,2339318997,5795719862595725598
+e4553610-afd2-a54e-4975-0a1a73ed6c9a,1049692649,10565540406795153203
+ff4e2b45-6cd4-3c6d-78ff-2ecbb259c7a0,1625000056,8066879007729466912
+5029d19e-08bc-7a86-8da2-3d99ad9e50eb,3483503263,429230271214237144
+ae9052fd-5c31-27e8-16d3-73d59604f2a4,322811729,3443128279266208505
+b860a326-9683-2858-9c4b-508dce79fc5b,3857722559,570700598395285996
+2a146ef5-d8fe-b803-0cf7-53fc3ca411e0,2133777492,16277329899246377361
+021f4db4-61c0-5c3d-7ebc-202fe1bfe0ff,1492453249,17202961286128249905
+9ac6b619-f274-6e71-77ee-99e2d6896805,2960063177,9869251325602567881
+c51058aa-88d7-d669-9d05-c204f4169720,228509358,7201060607407822940
+2d50f463-0956-4475-27e6-83095eda40eb,1640761951,8622406217754769838
+7ccec35d-a9be-e0f9-66ab-d53e4087a973,937362356,9983954364907268419
+c5e475a8-313b-2857-4ad4-dfd02932e68f,3010592164,14081226333700897078
+82d3cd38-a7db-5e0f-7f0a-e410e3f24b61,2164287530,11532864427446801852
+26366b45-fa84-228e-7d85-f4a78548ab6c,1870477143,7254039409180203134
+7ef0cdcc-2e25-de3c-640d-1ffefc125050,500423823,16815958198228628086
+dfea9950-5e7d-3a17-5222-143ccf15c36e,680302852,13322794151341234217
+5744a8d5-9707-befb-e340-f398baa5ebbb,1071334365,3809608449010257451
+b6aefe75-e506-ce44-2dfd-737a26f18f16,2863008960,2416199902515026493
+4ceb1dde-1493-e91d-1fab-36cbfcd3e4ce,700951561,9383582582550167705
+d0e3b4a7-ff30-4af0-b4e4-955ebcd64d27,1399234726,13338160675555006053
+ce27f158-4ee0-74c8-ace0-8d5996c6f714,1507292879,12714800957104784984
+8e5632b7-c29a-542c-bc30-028b577e74cc,977711851,14388213058080119815
+f134f1f0-39c0-f242-29a0-213a673b755e,1882939316,15407164815448734953
+cf17da95-e18d-9486-914d-f0c71c7f6467,979026968,14149208076821011045
+94ab6484-c2b5-8930-a83a-6e95d72cd026,425632125,14505915802699524515
+29199d66-8765-4367-0d6e-39c9f1206921,2240955068,4185972863683177454
+5510974f-c2b9-82a4-53de-6c864c0a12ea,2210180269,5138061585399774897
+acb9c9c4-b30b-3af4-bd0c-0458d88bc523,3289942108,13053708993000662974
+41aa0110-dc3d-a7db-4654-7c9fd4dda376,1029194142,3493886267019214072
+e11d6edc-3b2a-8ebf-b56a-f65943844a84,3596418478,12894818128849261180
+cf4e96c8-b498-50f8-93b8-edcd886d9a1d,3666153328,607434466941252259
+25644dee-fcae-33f1-4561-f26a2f920a6c,2213050450,5507216694342551652
+827e2a67-17aa-a369-0ed2-b3eff3997325,2966352796,17449789378679042995
+3905426d-2b6b-54e3-dbf2-afb0296ef07a,1581149792,4469170930100545235
+c844ec30-f676-3895-acda-a4f103d2ec79,3533382515,16009241749177403715
+e8829baf-ebd5-46a0-53a6-ca4fc34cc415,1009226070,15603742419075922474
+959a94f0-330b-cab7-c73b-3cb6d4c24907,423003827,11352144057747544501
+49695e8f-0f9e-0cdf-79d8-f88197ee3a8e,2140230932,8895174775569199850
+a3eaa36a-5d5a-a405-0142-13fd0378ce05,3291335595,4093650240035764726
+61eb04c0-7154-ada5-c431-fb16425429a8,3591031500,12846594666356271348
+592650d2-c212-a462-e0f6-8979cce2c4cd,3541831993,2401108060142920008
+338e8fb1-6c76-9c90-7b70-7d14113ce946,3203976560,14345743673901496315
+fd65a95d-daef-6bde-b6fd-9f96f1e649a9,3718260458,16444414051350433051
+0bd64f82-0b9f-aae6-2f90-e67244fdbe76,3342888716,11372631854573201112
+6e1d9ea2-5cc0-b428-2568-959560f9fb7d,1288795369,17254467102775688701
+88b214d6-658a-7349-2d38-ff187b47942b,3747637539,12106916535185885012
+7016d854-ef22-0b2c-5eca-05b1baa1741d,4167257074,12227691301176470383
+1daa4591-993e-50c7-5f99-915ebeaa0784,1347129462,10832661815922186853
+e07dc9e3-617c-3633-6349-7ece76810e28,2188155915,17854372182534793643
+c7392bd1-b79b-f3e7-aaf8-99f638db7506,1078634354,4583563755772989786
+0f6c4948-285a-3123-0de5-82558ae03e9a,2145238190,3132564733332913962
+6102b7cd-50f2-15ac-9e18-d9e5f08e3f42,2883487706,8972036732473097506
+a5967dd9-e2b7-5ab5-e8a8-82fb34db3051,1861249482,12037186561106684938
+8e4eb9e0-ae9d-610d-07b6-3a9a8e9d25e3,2244976548,4141019209224242820
+3983e5df-d1c7-2630-4b3b-60439ed121b7,2764611211,15537997408142713634
+f5aa0468-bddf-ad0a-68cc-38a4259bb7e5,3974487427,5612051121149819448
+5ba072f8-0fab-fb85-ccc2-d43d24733d0f,1868148184,9012273355755305160
+a41f8a6f-394a-8f29-2518-dab48d0ab9b1,1729731351,4904575512351682515
+eb03317d-86b3-fc4f-d872-1834be66e065,455985480,10391132857123543136
+99a5abd3-2d59-7169-315e-a64c4496748b,3666484512,6077946477929526070
+79d49085-1ee5-7419-77c8-ffcc74e4e6db,1612560695,926355772639595416
+8ad18e87-b3f8-c22b-fb1e-9253bb89cc38,874533220,16390444445713085410
+ab4f4f8d-9230-bb5a-47ca-904a27260064,3214834502,6578850068350935317
+1a4384b1-bf58-5d11-088e-a4fd1b67dcc9,414553508,15460073255368435629
+819b2076-079a-a503-c1b4-4bc15f8598fc,3880413783,2724388322894421511
+38888d57-0f02-4397-1590-1ab898719802,2786508724,10283763591936581513
+a744129a-aae0-424c-92f5-39468de2d398,1443441599,3980911524980533689
+66d9125b-5962-22cc-bd6a-26a8120193c6,2548013472,15574160460227104437
+79e3ba8f-6119-333a-99e0-446dddb59433,2131086636,175119342751819817
+90032dec-8ae6-e503-96c9-e8f4f45dc2b3,3081689898,10704292899357887370
+8ab01996-87f6-949d-1c9a-fd2ae6619fae,42154132,8190490272749681745
+ff0e7192-830d-374f-e233-1ce9020ab74f,615089508,864560837289295435
+4ef30f26-f8db-ac9a-cdda-b113ee2a5d3d,477907090,10488675869501481952
+4d9bbdf6-9c18-a240-bd76-9b60e8437caa,2697032625,1736940906875607703
+babf6dbe-d14e-764a-9689-1555c3f40f9e,3572381692,1030864246001990740
+e207fe7b-3d41-7f43-6020-562bf9f866c6,81249638,15139033373214502929
+75a7c87f-8f91-91bc-b07a-5b6f18e405d9,1953541990,3213903921739027181
+f3a75832-b01e-16f4-596c-e0d106798800,1406528402,10754941584746790471
+06f2b378-ac7f-5e39-0a99-204185bc8344,1440062786,3852471570141060545
+3f5718c8-c627-7ea9-47fc-36fbf40c29ff,1224754694,2795262316923035298
+30c1bf86-e1fb-144a-f07e-d4a2a42d99a3,869656280,6943439204545421674
+dd01a921-a9d1-e9c9-3f30-47b3b0b237f5,1663208149,12560239531962293661
+a4ac87f6-6ad3-411d-4bc7-c1eb295c411d,2199989204,3911132942974235516
+2894f36d-7059-05d5-35fc-59efac77de8e,764804322,17851944279125924742
+82233829-0063-6592-8dfb-98fcdb3d9257,467441302,10317883760553423205
+4a883881-8e4e-adce-98dd-a71bddd38b0e,3220598202,9964356736712414096
+6edb4c3e-d84f-8e88-cd94-ef8291135e15,3127327902,8030035315869095206
+bdcb5fd1-8e78-e5ba-a359-268da9a8a640,3698811302,7854516705445047432
+735035f1-a36a-2ad7-699f-9f8352f66f47,4132786096,14018652485097761071
+589160d3-aec2-1c2a-3914-5d507639333b,3928275979,11004249366969974317
+e34e83c5-ef22-e84a-299a-e70b7fd16c47,320326190,710876611747212971
+da433932-4f0c-c0c1-d3cf-1e90a8313f81,1959040749,14813557674965730854
+f3a3505b-d870-4f1d-5e03-144eff98c25f,3519724077,4636957853414545255
+ea0315ec-1939-e638-9329-98ab5ad04866,3005482112,11645186264581287894
+0167c6b3-4cfe-a51e-73ae-89a95078e004,2608827900,18348483727223801428
+96c283a4-7fda-f79d-d848-718cecd76ef2,3855186244,53363503145112187
+31eda943-db34-6c8d-f8db-871b0b3d4d00,1741795587,12082905607097213590
+11ee5db2-65b3-9440-a673-85edac03c0cf,3337721057,17767913856037096542
+0c23ec94-3554-d16a-c570-7eb39eba8e56,1560339755,6265280393263492977
+42569934-c303-8c24-5a9b-55f73fe75695,9254071,15847143291823441906
+5c6d76d3-147d-84dd-8058-8a8f4fddbef8,592131404,12447641187698527071
+4e8b3f0e-87e3-f006-ec3e-111a50459871,3081168364,4631196320235140986
+fdd748fd-ce84-f06e-eb06-27d69e541606,4158134373,92148507950869973
+838558df-11f5-c4ea-bba5-ea6f72a84087,566908506,10756854615604264239
+d09b5873-cbe6-ee8c-3773-b0cc8debe211,3882376965,5168275084192006193
+71fc5da1-ec6e-cfb1-c737-5ea425780133,3003860596,15635839778472294252
+d9048ccc-7419-0d58-5b00-d98595eb527e,1552142932,9961982701588239963
+63d55aea-7cb0-46e8-5601-91dcd3316594,1599269184,14943560103739940033
+744eb5e8-b416-dce8-6c1f-93a9ec3d1fa1,1277019919,11067730340175325841
+b6452043-193c-f311-dd28-a63044908fcf,1614631239,1604101046813413579
+fff2f3be-b844-187c-0804-7fc15d82782a,3938826288,14562623487885405327
+53a8c688-a1a7-ee18-77c8-21df47810f1e,399890048,5189676493085090048
+9384fe0a-3829-bb1f-cfd5-cc8208e72d76,1166487083,194995428662084677
+b96a9bf8-1673-506f-a2ef-b1877196abbd,4112145162,1373953865920860058
+319ef401-5c04-72f1-199d-cae1a8739bd9,2630353419,882963008424561240
+e127077d-19c0-4309-3856-bfd44c8bfbf5,221522901,6209944847631512944
+47786346-7ea7-bfcd-8f1c-7ab83729a724,1939481752,12255004227202414437
+8a4464b8-1625-7821-7084-feef8c0a174a,3920734388,4336972239877444903
+1c1c4bb6-7b0f-6d75-e20b-2aafa2b5819d,472987748,9612133373332771552
+39c2cfc0-9f4a-afbb-c1af-21e6f86be103,3321900572,12092657880688345585
+b9d446c3-143d-a197-7f6f-006dcd556ef5,2427250952,7956779062456438285
+01b68482-65e9-88c5-1aff-e718c0bce102,2637061776,9535094062481140217
+2be4fb3b-381c-5dd6-752f-1e8d7647e4ef,866201442,17896903596861353221
+71240c76-9e46-2525-31af-17338611bb69,6697334,3658407301930501357
+927b98ff-a559-8db6-1464-bbfaf39877f4,3871359069,16212373637018564883
+c91381c8-2027-3815-616b-2d2f86553821,1333432049,17889126704421056899
+6fba282e-0c10-7fb8-141f-4855f2ef1117,1883418337,1170603682702445850
+33ea497f-6c0a-6f0b-794d-75f6029a1f80,681797638,13301573037746227841
+7fc1acfc-a7b3-bad1-1093-cf3be3b2bb2e,962836387,11117927812558458240
+e91da0ea-5ba5-6d1b-97aa-63411ddf6171,2219594575,16466731235539761943
+d836e915-000c-880f-2280-11c6213cdbf1,3444049342,8164114679702372682
+d87707b9-101f-d991-a537-e3f7751b6327,3489683799,14325434322563085596
+0ecb1b88-e177-9dfb-7e21-33a942710312,357333935,5754429461733244942
+ba343308-bd38-f2ee-55aa-83a7b4241bc9,2824715760,7925967153421213176
+510ab2ec-2ad7-71f8-956c-be2d99711dd9,1956574527,14967228222756799116
+5ee0ed7b-8b6f-b6ee-ee49-865aae650027,269495806,12735139690114685808
+9f97d420-424e-0f92-7a31-445050b9cb48,3325431245,15610672420904725999
+5fd18849-d255-c5eb-2d59-afa9475520b5,3883507907,10737515956728403457
+cbf4101f-3b83-2c14-0a23-f5645a4661ca,929922933,2131074919293468686
+9f4f61b6-7120-6aff-c9ca-393f55b31b88,1156670591,11994602245498498944
+93603910-af63-c30c-33b7-8a6d9337b91b,441342812,7492022777341536300
+ce9729c2-b1ac-fded-4030-f8eccd53ca1a,2448995604,301785301776633439
+b03462bb-4576-9877-1a8a-3227a4433f84,4255843650,15277879578040600880
+e1725cc7-78c6-390d-637d-87a5df56f3dd,65627970,10142692923464947432
+01cf9134-ce87-4d08-ef4e-5d9f6098920c,3631013370,13853639954654222506
+00ead114-64d3-5364-04b7-2159f6c7ad92,2151367941,17852288019399112125
+08abae09-2a59-4e4d-ddee-597e91b08178,293893557,14322380027980893070
+066ea2c7-7db7-8076-53f6-c476fd77c87c,3158988900,14071303270584095139
+59c66cec-1bc5-f066-2be4-2d8933d1820d,2322483972,4957865142375100593
+bb998e3c-7b1a-2d1c-4a65-d3a0efd93c92,4191402935,17271891084862272253
+9b75ce4b-9eb8-61bb-9896-c4ea45cb89cb,3876241126,10508940402861527002
+f1ce7a9d-4f6d-0395-2736-c6e715ac8b4b,828189970,1751487505263324713
+f6e064e2-e9af-d4cb-d1a9-d5582e31329c,3283103800,15175418515946948284
+fe5a010b-a2fd-51f4-e3db-6ffdecf1b431,162041756,5447900380626477063
+f7d8caa0-e767-dc8a-20e0-0365acd162f3,475600417,1027695853357162212
+3a3a1a76-692e-626f-9058-4de454b7ec98,1477094839,14067447419522835851
+11db2ec9-2fa7-bf2e-cd16-e11959a77213,2522280323,818882602834995971
+cbd27f15-86f1-4b0e-e9c8-052087bb69c2,4196752488,5512873249084684140
+67fcb214-0c8a-7497-71e9-7a59097ed452,2231895205,11168993291094391791
+29e67adb-d00b-9ffb-0f40-10fc0a148882,925789789,181774232706359034
+d3e6e06b-1e80-ecca-3d42-43e762002096,3775424092,10338116204754888372
+f014b482-b98a-7c34-01ea-b8ae1fe2e034,2356052158,9295375516919710432
+81a1164c-8a38-c287-20b8-e89ee18dd11c,1865873086,9857643923349390003
+b078e26b-d070-24a2-cd3c-7ea91e818b0d,4205832260,13598534168584358518
+d57cfb63-a4ec-71e3-8b90-6dac89386b07,1925356393,18153334308187580377
+0bf43837-ab41-4ae6-d0d6-12a46e35a411,3372021875,12970171617172410124
+51eb27cd-439a-7728-c90f-e3bf74266f81,853115781,11279296411335044407
+b5e4a905-7cc3-a4e6-b5e7-ef5e0ef53c15,2672646027,16205643277647791023
+904684e2-a64f-d7f5-45a3-ed448535b203,3622820650,9663232390892628698
+230de3f1-7c47-a7bb-0ae8-9bdb88587ad3,3350861626,2878035308206863304
+56775b32-a719-1c1c-1184-b1b8f84e9d16,2186904185,17475244753088505996
+7590016b-2be4-d4f9-8ac9-1e752dce6758,402297819,10811940173646312682
+03791acb-34d1-6c0a-64a5-3b9f603eacab,959254347,9527395627499027046
+250ebf71-8b22-d3b5-65fd-d7083fde206f,669203424,12096698312188527502
+f5dab384-c382-34ab-b8a0-5f1914c6f216,4185513976,13768791556696827375
+8b0d1c33-e77f-71f3-ac8a-186fc964aac4,3576939909,18336112169735818651
+b03c402e-8ab0-7762-da70-1c60305f20de,1214690121,15774381757050031834
+02af8796-30e1-6f9b-82d2-173092c13c92,3997523622,4749549335041823933
+4e0aef8c-baae-eda5-5cfa-17bcfa9e2b63,3721268214,7400112062073127999
+57b3c808-e1eb-166a-640c-2d50146accf5,3140260730,11250558197362996397
+311a5112-121b-2fb8-75ae-185d1ebd3bea,1026911023,17046492299234427407
+c9786936-de6e-9974-a27b-e78f3c70e512,4003847597,11195046496304749069
+ce2cdcc3-0ab0-4667-8c69-4ae183591657,1927589918,16440963476186913585
+23c94dda-da5f-335c-1f08-467f9acc0fa8,2081714468,11291102495346005485
+be4d9448-c6bb-43d6-21dc-07916154188a,4225523558,4609745235773891796
+34733123-6a73-5bcc-3aad-c5d2bf445742,1958187487,15237579271407424417
+7b5052f4-26c5-0ef8-97af-d3f365f54877,1987654511,15588566795073502113
+920b34a2-87d4-9116-a437-5d1b6e00fde0,507836579,4235761264672741340
+28e00fe3-70d1-2426-fe1f-59b3b77635c6,111574972,5758451377784956257
+dab5707f-6942-488c-5660-dbd8f42ceda0,1359887404,18994682627292588
+7ccebf2c-ffab-7e06-ff1b-b8e5c5457857,1944796264,13079691289263878937
+1b73f2ca-b8e2-2314-203d-dab7fffd12e1,1993912834,2802228469052760091
+ac06e5d7-a2e6-31ea-1a76-67cec4960a8d,2270190764,10875688170621992307
+4b488e03-523b-e850-6bca-e7535df63a91,350179538,6781690384786371337
+668065b7-2911-8249-9d25-066bd0c857ad,107962112,13590684579273793991
+8be0c09a-ef9f-0383-321c-58244863f502,811497682,13309353630468951960
+25920f97-ad5c-cf57-543e-caa94730cbc3,1290759104,17535588502266020309
+e9714b02-1308-b4ce-16eb-54ade605bbfc,3174447038,13803313610372245880
+1b0b2770-bcea-4478-ab20-689d1f822dac,1862608361,1300123981465768387
+6fdb0ab1-98e8-cfab-6b72-bb0edfd2f90d,101016244,17212983258659331122
+2b5816fe-065f-45d8-dfe1-35d5526382c3,558712904,2411446573852304828
+53a0f478-f018-cc1a-c67b-d9f2ec18d832,554458095,10710258384984511916
+9284b717-a3dc-d9c8-ced3-bd51af7e08c5,734661985,8316661417918500147
+de273d8a-3493-ae76-f643-2578db2f0ede,2924893213,10825556562022261320
+bd519aae-267c-8c19-18b9-4a0e80a54c43,2703393032,13397147964089775647
+703162b9-e4a0-d370-772b-0a9756b97b5e,1598942550,10542400710565588028
+b9c74a2a-7d3d-1ac4-231f-45436d098c13,3908780368,17317694537023285941
+338fe885-767d-ae9e-e2d5-6dd170785aa3,2673543286,11945117343753475278
+a2f9cc46-b616-0548-73a5-ea571627f69a,1360443670,8476983223716142417
+3da3806c-77c5-caa7-71eb-4b2d8a81a3cb,3041717223,2601734379188570445
+20831c2d-90be-0c85-586c-6509db487326,1023178337,14594532455172816954
+a5d08535-3252-c8c2-d394-8097f06dbcdc,736276733,2755980658605669281
+2ad22d2f-787a-a048-0bee-674bc8d1f681,3144852130,10898196335387871026
+08673456-a5f9-f7fa-1d6a-e1de5018f9eb,2321323384,16159157527323753132
+9acbbfca-ec7a-b274-eb4d-a3b5dfe8f230,4264077365,12371899116455584457
+8b48e288-f001-7278-97a0-ee618d30b577,3539544061,16428367301733005028
+dd48161e-be8d-871a-6eb2-b037ac52de0c,2632506181,5598154765427625409
+a742f1f4-8d49-a84c-eb52-abbc0de892ee,326772164,2860639712215040566
+e4163b92-0ca3-3c18-73f3-6efd895faa3a,4217575573,3887041656403784254
+483d0827-5559-debc-be84-c4b690e87dc2,418354984,5655695493882056959
+5afea28e-3121-335c-082d-8dd0fb419eb9,3928089364,3621045185518987609
+2781b90f-ec46-4eb3-c1cd-65d6211a2048,1630848043,15881499652439182756
+c7c31dfd-cb59-5cbd-3b95-12770ded533b,580448566,13699873570439769820
+a7e00883-66cf-e48c-9ec6-79373b6a70b7,2255662956,10154891015750514325
+781be8d6-509f-588b-fe60-eb55b1b1b94e,2112305587,18184025171239683915
+2563ff49-0146-ae53-a77c-5158e67c9d60,3184190070,788727664900609177
+2d48b095-a0ad-c6af-a6ec-be46cbda358f,3343119125,12582240805238114849
+e25f4cd9-0595-7210-a27a-14d1109e20cd,2665127479,207173872928429938
+923a53a2-237c-c10a-8c1b-6e822c5eb0fb,2843557989,3390646346904041183
+f4414be5-7157-0b40-3128-f102f41e10f8,192185887,1426687800152213138
+d52c6b44-0446-72ec-3848-bf63b269227f,1470539385,3222981507804299636
+5d6324d4-da64-18a4-7d9b-9aba710cb2bf,361921903,14973181908698694363
+d41f73ae-b2c5-c8ba-ceb7-689ca69660f5,149454844,3686816092096531428
+7a2adf1f-205f-948a-180a-0d124e11ed59,1900360661,9194274565178326300
+1092ba85-86b5-29d9-782d-ded1906fd360,480394544,18017719029336809188
+a78410b0-247a-c31b-2d34-4b26da350dcf,974754818,2916208492490555021
+49d72c71-95bb-c5a0-40d0-9ae9501428a1,3393575109,2177756412148028736
+bd1aa54e-48b1-6e80-beee-ca3328247e34,3758977212,4311799807194802783
+9ede3710-bb64-b552-b5f3-551b5e204201,4231025819,12354102732703650948
+029370a3-4801-ed0b-d5b8-b587d29f56a0,641875826,6935156790597460700
+17f333ef-2800-e311-24ea-3774e7962305,4179187664,9575606268235707870
+cbf43547-30ab-781f-0694-0072f119ad2d,651949890,327730797681745953
+a0f35872-1540-7c06-c7ec-8a212992f1a4,403634246,7908691515618251478
+3e5e77b4-b03e-3c95-e553-43d58afb2bd3,1602214459,10522969182404117778
+261f94c5-03d9-15ed-e676-7f9f0154923e,3742953447,3228500562599304644
+8ddbb1c1-f851-5c10-3436-e8017422b287,1068082145,7470459572086193546
+99b61ffe-5bf5-b65c-0272-4a673b4fba8f,4010935749,3123579402404987672
+add3f961-2abc-c07c-9bd2-626244b97f02,2617108029,5553077293744714951
+fb8e4a19-7873-86d2-feb9-e9ce18c79b27,3322692620,11090706268700853846
+ede675e9-932d-122f-d0e6-5213f74d1bd1,4262009027,3413644433908733333
+6897ad00-bf9f-1cac-8346-3a9bc284e6e7,2232413171,9906846570704444391
+1cf340ab-ff2b-2469-7fa2-54f4dd05db7b,1120838190,9625398103520914360
+8b7b0bcb-46c1-6b24-c2f1-3c809effb077,2530167041,10670874554293475637
+6139a018-33d3-7faf-5246-3ff4f7310297,1745034629,17312514644641212557
+07a9777d-cc74-f13b-78d2-19d93d38aadb,2953350020,14699294736853988653
+33d3ed38-7397-469e-7acb-67a4afa83ae6,2993269642,6919777800576250582
+1f4a7ba9-fb24-a65b-79e2-f3ff9e49e660,4112204129,18095250333441021184
+3183a0b0-5893-8359-dda8-e6f50239fcf8,1808878449,12645067067515579373
+704499ac-76af-bb09-b32d-fa88555db3dd,772525310,12648042731215781928
+48e2b5ac-7955-dde7-2902-2391513501c2,2102192120,7825669830152146620
+e423f518-593a-434a-80ba-0917a46cb5f3,1832335598,16441298029952003484
+47e65414-adcb-1c34-0bc1-a408c822fa18,3317179080,2827967581473558248
+5fb01bf2-4899-1558-df48-e1e7de7fb6ed,741059698,5448166158641221496
+662242a6-9bcc-ecd1-910d-566d5353af6b,4064390151,4745520834337675511
+4dd04f7a-f472-227a-9f8a-1952b07fd9b0,934421214,446299235139273862
+5f5a3266-ed64-f53c-d07b-5aa6228a8a08,220451351,7844029529093975826
+2f4def44-bbff-c6c0-9f3a-b1c51d4e42f0,3924172119,8570571754628823762
+082f8f38-427d-0543-951c-8e54afa364ec,2597176049,2186628086155857076
+0264211c-04a0-6fc9-51ed-92a390c41ffc,2650595165,17107270328247240925
+42f024ee-9baf-4567-6ec2-5607e61f8ea0,3665289960,12044814299779586921
+2f3562fc-bf69-4ff1-f657-d0a20871ff8d,2856301305,17793394843664736535
+5a4deda3-85fc-7c10-be87-2494e9909d6b,1187764567,6968279384080366856
+d52cbc67-a415-7f83-dd40-a6da2004dfbb,340169233,2502761194262992693
+1af73022-6dce-a711-137f-29d7924ddb77,2593455681,11652526749567114160
+2e7704b6-d671-2f53-2272-094956a618a4,3275602636,11704941501398327515
+1d6d273b-fd6b-de70-9ccb-aa239116d8de,3102588740,8320880330049334671
+1cb878ae-0cc2-5d1e-bd2d-2bdd844c0f1a,812294733,1314342258978645556
+3157a99c-966b-aec9-44e1-c181018abf19,735078740,14890201740684535029
+7b7bfce4-51e6-3f85-17df-d66ccefdf775,1112185320,5758076801145873948
+a5b010b0-f8c1-a3d7-39e6-b9425f74e199,2843906266,7354444307935825485
+62298a9c-5349-2227-ba15-6aa5ad257161,3571426521,8187974019056019992
+e86c3472-6e80-8418-cd67-0728a365e40b,1994880456,11726359699559451807
+04311f2f-b3a2-4f20-1f66-b16d5ba1a130,3684020903,16257958750656425089
+6b4674a3-bcb8-6ad2-27cb-12b3ac52db35,977783457,16667042262965893039
+e4e43d7e-9d23-d965-5a7d-8257421283ba,3267835350,8218198164141402626
+d2e8b8c1-b9b1-85c0-4c0f-3ff15ed4facc,3420525106,18300343532218223964
+d9a568e1-e5e0-990e-5add-18bc17a52774,939286589,5893855389403202706
+db354bdc-ae5f-ee0d-17f2-4d45f5b3bfd8,1658643398,11705798423515441229
+e6d9d606-19d5-1b48-1ee7-a48228475dde,2165374373,12150788306738324467
+c0de5550-5780-44df-3184-41cc81cce3ae,1373422467,6120759417501421612
+4c09cb57-65f2-65fa-6eca-f256d562e5cb,252641834,933804113497712272
+be6b9dc7-be8d-d21b-4325-0120d6f2a42d,4213383850,3241068002860272035
+d951d676-c96f-7cf4-da8a-bacb79f10e95,3671719760,12290772201078175331
+dcf92f06-23e6-4221-6dd5-cb9e696a54f7,1732756566,2488486437457483462
+3a4c1824-a0dc-29df-0626-912d4ea3b4e6,3829099894,7634905472117078676
+37d6379b-3db2-9e0e-abe6-9cf6ebb4290d,215715472,10560729052075361910
+2722034e-b3a8-b39b-9350-ccf9bfd33f46,3283494907,17101061986353504711
+684dad9e-189c-3e17-01ac-0cdc49037822,160097567,13428950662363154210
+3e025bae-2d19-b945-9352-97886016093a,402477694,10576443023782360503
+be872634-27be-d285-a782-f9680a3b8ad3,1643411369,2519226244020237154
+66ba3eca-5031-1d6c-edd3-8f623074fd62,1290088655,11209758580487852974
+0874ff11-c4c1-cbc7-461a-4455b929fd35,4121428376,3024381911640260580
+c315ffcc-84ba-571f-0faf-c17582921d0e,1282383098,13127039390949851559
+68d3281a-2c4f-274f-8546-06039269622d,3013873111,1179748680392493731
+278cd535-56eb-fdab-527e-190f4830895b,2374428763,246944611620238434
+b6503fac-e833-bb44-e0f5-075dcf716d36,122369946,13265586663785870374
+8c467033-55f8-6e4d-0114-033d4589fe52,3520481376,17094440872265697716
+fce29bab-d8a8-812c-bedc-2c0452c25fac,1694415709,2685232016480996635
+dc249080-705b-ae17-fff8-2b3bd1728190,2288671422,3436457377136806418
+6924463b-67c7-7036-8faa-9d6da9427218,3707774093,13426204383607793261
+bd26409c-ed5f-8573-b112-514f7431c523,2041894089,3054985246164324438
+44971a50-dfd8-e476-f0b9-2b0b5b0df6a3,3216666581,12592506586752903495
+e81b3460-d01d-b2e1-b985-054bab8374f7,3714292207,6387876154094526661
+1b2e4f41-d0af-0869-fca8-e2d64630c27c,3691293,11903647907330120495
+e56baba3-353a-9411-ac5a-d70e0bafde78,1573974212,6032853045933429445
+5a26f261-04da-c63f-02b6-71e3f93100e4,4249569695,9200622872550069334
+f1418ced-5b4e-c8bd-470a-7e3b79d2788d,3517235551,7400224427917934720
+ef422d20-b4fe-88ec-7a97-8a02723649fa,246419858,4202579659080129761
+d6ac43d1-baa5-b044-2d4c-10c260054019,322752860,5569851428920408028
+b89cc2de-0153-0f97-39e4-e581361d5e9e,674770813,10474768914030063044
+81a29058-f955-014d-2101-4414077cef3b,679036529,5065708751175111203
+9ce657b5-1fe7-8587-ac96-89110d4794b6,1971689010,16094364708603912404
+64e99478-4a4c-fdb1-8099-f1d8b5a15c2c,3216728706,7874720306816359437
+b9fe1957-9ab9-d600-4452-928bcca51fc1,1718897425,17360621991302844769
+4c6caa5e-513f-b2d7-8a41-8f6671221519,639145916,8523485419579255168
+55034103-e602-fce9-e012-8165fe593dc1,1678362000,5803577380105635155
+039592f2-2127-6a2e-5c67-e46274215f55,4033632101,10991711744377157547
+12f03b96-d809-273d-6d14-86570eaaae73,3720314111,11200653060163183107
+ece76e29-bd7f-b4dd-4a78-64a6b758c33e,2172976055,17715175024588477794
+15a0f085-4164-5d78-eb32-de7d1ba56881,990179826,200559422174873147
+a86002af-483a-b3fd-b3c0-c0f5ebbc6738,2184181755,11668308953262028309
+1c1f643b-e7de-5409-7071-840cc4b6a92e,977679845,12682310390869009310
+3e494eb2-d770-3a87-fb92-357d97f31b07,4220513853,11360402270195943918
+0fff564b-1240-99ed-5e71-73d9e34e47af,2590157448,3430631633470935527
+5d4aca2f-ddd6-6e16-9dc7-86074c512f3b,1452182657,3232342259111582341
+d0ba5414-51be-511d-5704-3d6805365ba2,3550679368,2752339865265394596
+0fdd8a67-5a4b-14aa-56f8-95a146cb8eb1,4288246274,16606607498670389858
+6024f21a-253a-96fd-8863-353d56c6033f,869974435,3297932109878343906
+29b1b474-6282-d268-f1a9-21f7a44e21f9,1788807828,2962006282840620345
+5b526025-1c45-c4ea-7f11-de050e0a9e55,4031803023,11559787934178399798
+ebe5ee05-f661-ca0d-175b-8ff0c5bbe0e8,777739190,4235170612695696055
+569474b3-40e8-d417-7d8e-eb263b508c2c,3622092722,16276168194597041442
+ad16e749-64c8-1709-ec06-b69d914e876d,1398453668,15583883985748667570
+55c934d1-6770-09ab-c9d7-404613c9965b,3883035198,7214708667500054279
+e31aacf1-1ebb-42c8-4112-09702037a4f3,3954486563,7626959719276277878
+db47a370-d669-0f96-5a6e-7703ea2b3ebc,1545623646,5788662542783663493
+bb2958ca-a4e7-54bb-9a1e-cead76f7ba0e,1910693391,12905350916877341605
+8f9c3bca-5447-1743-8985-d2205b3dc4d3,1704856863,15072292507195634432
+ecd84673-7209-98a8-e550-cb9d44540d37,603345488,8553637461800591015
+80640d60-493f-a805-ae7f-0282258a6d9a,1627647741,16812646509870421821
+ecd76e84-6f8d-4b97-49bf-4f7b6e76f577,2502821498,10756409387151975424
+9ac36764-3ea4-3024-c35a-89ee3ecc015e,1138020292,17869874477274608020
+73baa70b-fc33-3f00-1742-63f17da635ee,2786741907,1682249281704567199
+fe365f13-61c9-9f23-ac48-d9a5b3aab174,1361354862,9126730184515297567
+52db0a8a-979a-1d12-929c-bf1663b8be50,934022171,12617316864346914862
+44275b0d-8c42-6c5e-1a7f-a257483ab1ac,1114072630,11340278329380427982
+53969abb-b805-2886-f76e-1fce33c69967,4027057709,16858307846828587717
+b1f9b18d-b7c3-e661-ccc6-908c4bcb9fae,3211204106,5780377341116208915
+28a5e2db-7dbb-2076-0c68-b8d865e30d10,2006707786,17799720236520339964
+e8636dd1-d497-d416-1382-3a85ff242a8c,3412417733,17180487968134046047
+9121de96-1a29-c83d-627e-16e308b456a6,3846634576,6410953284613237606
+b06ec25e-6547-861e-d90c-39781611e43a,3379450340,9366734576630193425
+cd930f57-6d5a-9c26-de9e-88870a4e1dbc,2593079248,12590866598954323180
+4b070847-cefb-e406-50f6-748256256120,3766334985,15158026808552693289
+cb1e2a91-144c-5965-4289-dd6f6d31c897,2523998982,18243638056716430012
+2dc7a8b6-2ed0-2c7b-4640-6f68e9584336,2037184221,12517859827352854362
+b7a7ede4-a603-8c05-84a1-f5af22a6bcec,2362234612,1240925889768652141
+44bf4588-2cf7-ac64-75b2-48e5a71c657b,955903353,3347751710931437594
+901bfc78-6f7b-296e-3d2c-83f598c2db13,2474686922,10482839160734391125
+2afaa01b-44a5-0917-dfd9-f4c2b5396f18,3577485467,17601181913072007101
+7fb80ee2-9335-7368-ac8c-7a9f095ec2b7,943900461,2688566074788709484
+16fe485b-9f1b-2a88-7e10-e8f9aa5a080b,2217524906,14969439629995633248
+7d46b0d6-e6e4-cb7f-8f25-5fb6fa388399,1922413184,9897670915917559775
+474dfffb-8d85-1654-65c8-daa9c70a8ab9,1002467510,5884659136196726558
+450d8404-0c92-071b-f485-6d5eaf3b2bea,4212825360,9869005743675470020
+b092a716-35e7-51c6-00fa-d7254f44871c,2707240093,5032179105591453765
+e9624196-5801-e81b-956a-c033eeca5e71,3645246556,2261433089943997744
+456e14a5-05d3-3cdb-4800-0b21fc0e4eef,443910514,11835223227761295697
+c43b4450-67dd-d600-b0a2-76c31046f61b,2679095749,6521709482118516064
+80c0f410-65c8-daa6-f3f6-178323042b1b,74069335,8183386458603261157
+84e59a57-7858-91de-f9c4-7dbdb6c3721d,1851893444,8086690007958913984
+cd8c25d0-c793-b52c-c833-80fd93eade88,1351067143,1497962379974019682
+709e92f8-a279-58ef-0e1e-f58afbdf0cf8,2877845321,17130730643600498848
+77f22d2c-c595-3d2f-f210-b89142cecff3,3368417852,13096191012312805460
+38dc0df9-144f-67ae-c720-7e071e2d2956,770937266,17863049577570470204
+f98ca1dd-61c1-1a94-c051-c2cd2953582c,2126384590,2349177308266702925
+d136f9d1-ec0f-ec9d-5dfa-b2decba33f36,1687691948,16269288724077985917
+0ff7ebf9-6972-d1d0-925a-544152827228,523486737,6249067893354226525
+d8d35888-1e44-e357-c07d-f84742805512,567835012,11619518094512445043
+37133ff4-eada-2df2-fbd9-c97940e780c4,1376156808,5075943921617703441
+ecb05466-c3ea-9ae3-8baf-402fd41075a8,334441362,10990039668160099870
+00927249-43db-9764-5c18-433b53d9e620,964024493,3011419561904145776
+1cfc07ce-be8a-2b63-3c44-10312eff1e7c,3492338162,10512278294204619879
+27fc8df3-5fd0-7b2d-c592-492db258dd15,3621391005,12712043569879372906
+cd541208-835d-149b-2d19-1fa12399d27f,3644072430,9002336120365411843
+edb2741b-e17f-1eb4-991d-24afca2925f2,2682577342,13149426817541655830
+282ad1fd-c711-490c-9d99-871aeac112af,1226640336,2240527908994588587
+68721798-8e47-f45d-d000-290865d7cca7,3497053992,17699053271672998992
+2832e67b-651d-ee91-8efd-d09331d402df,2623641171,11932306904729807177
+1b46b5b3-18d1-4e2e-fc3d-aad170b29ef9,3803328476,17410228368759030996
+780bf4e9-0a8e-fec9-d063-aaff74284874,2286959309,11070839626906522771
+9b9cdd5c-9bf9-f919-230c-c5295f35626b,3728653539,11868005366478925281
+779b59fe-d883-f724-9468-2dfa40cd64f8,1387430004,214887651934758141
+7c397061-e9dc-59ee-06dc-850767bd1c6b,1356947710,1608591803895058567
+02745ab1-22d2-37c0-6ba2-ec300fa07168,2655422856,17562516698760649691
+a19f802f-1040-0f8d-9ac5-315ad2cf9a20,3408782748,16326196324800518514
+321e701f-c2fa-3027-2c5f-f75369dc3a97,1189793963,9312059372383985095
+486b02ad-c7e5-7063-79d0-2ded8df142bd,3273283745,12226585623115262550
+805578e0-b18d-694d-2f01-bce3d00a7403,2587516440,17251428925507535115
+6116c923-1194-01e5-a307-417148035c0d,1028470342,1213149706748171076
+e90b0126-ec03-c168-eecf-4161b7dab33f,1197216954,12437527038434536652
+c677de95-a25c-afd5-f9ed-24f9b3200bf9,1297224847,6394292964507451859
+e11c6e45-920d-33bc-2abf-65d49d21828b,331640312,10330166312639663981
+b08dac98-b74f-faa8-c047-229762654f51,787352375,13651224908398591012
+c8e24da0-cce2-3f3d-146c-b9ee4e604a38,421671645,3556929674276773715
+b7c82feb-c45d-4e38-e248-419a44bb5991,3236161148,16854502487790666051
+28c8e78e-0a81-7af7-a9cb-32f70de5f8ba,4133807354,4930890062324350445
+624ca237-7c40-74ec-806a-6c894f81d2e0,1026306852,7126971283454300714
+fd3d8df1-38fb-9f4f-7c50-017a94e3287f,3160012236,2313734942145151905
+5ba9be81-0f7a-5e68-017a-3c395b577437,2718662084,12068355957488690082
+fe917b1b-d1e6-13ea-ad8b-d9ee6c1100c6,1445165136,15123761499196673051
+4d8adb37-9a41-0bee-ae38-f3689aa5eee2,4163604029,7583442092749117641
+46b57f05-6ec1-b916-65b8-f3c86e389d8a,2366270392,4336242848918720828
+2653beb5-102e-85de-770d-3501abe1da4d,3877108791,15565170395022016986
+d851754e-dc75-d003-a484-2216dda1f3ef,207313350,12520799099642511186
+87d24597-bc68-e97a-5fdb-737828eb04a7,3771672494,15770421942556687406
+d6b23b61-feaa-f121-9b59-44ee9aec6dab,888199416,196547800048807261
+5c4cecd1-5e50-3037-5957-20dd56c77371,2330425993,11218237689133444659
+aa1624a2-64a6-1f7c-447b-d02944b67a44,1978158938,7742760815884862840
+f6383031-a9e4-7107-c6b0-0ec593433f4f,1496761099,15343944774327982619
+23313821-7480-8292-8f9e-364c96d179ff,1616032793,10991632893617365342
+1d836da1-a3e8-1f3d-e21d-0e175a476921,855943034,6990641402472319095
+ff4f1a67-e2db-ea66-4ad9-7f3787a6986f,2773919572,17736595149433310702
+a1a57215-5dc4-7778-9d96-294a8bc1d2f7,2063500705,8783614632182033963
+32f821f8-7e94-de51-1772-c6beef537a51,3036325129,13287275663595398535
+f4549ef4-3862-4102-c214-7884005111c0,830440971,599118356530663207
+b5a476d7-e530-6285-9e44-6b9b1a52fd31,486016323,5767275291356100650
+05bab7d2-4778-34df-1e5d-fd63ad0c2339,3658493449,17274681380535223960
+dc2d9b53-0d2b-0e71-fd0b-a2baf6faedb4,2166385980,14717259409358518473
+0426044a-bcc9-3574-f3d5-45cccbe554fe,2893432144,15639737488270881307
+a519aacc-511d-b23b-1298-81363f63e908,130102392,16061807551281854997
+cdcfda39-beb7-3802-8d7a-fa8d5b5ae660,463773156,6241608742878788927
+f77d676a-f829-a6e7-f7e8-dfbab794dffe,1757922670,2630913101994430769
+c0244bcd-fba0-03b7-65ee-10f42947532c,287451196,2630488101194612242
+912f97b4-cd48-e22c-4cb1-d82fb8c17092,3625636045,6531055557248545555
+4ebaf9e1-eb63-e11e-5844-8b620da40ade,2851350465,14512369578348994470
+860f98ba-d025-b25a-b5c7-8a6d52cb12e8,2104943602,5528548487979968257
+e4355c5e-07de-2eee-196d-f7dc2fd5d629,1696825964,9008005355232654064
+12cb7730-d701-33a7-49fe-47e4dd7ff666,3065014621,16733516968071708488
+9dba8cec-4efe-88cd-f043-4dcb7372252b,480231445,16777962304727499717
+a4fddc51-8fab-6508-d93c-de8770f5c909,755124232,13401191702095337357
+49b8611d-080c-c418-1abc-0433ca64722d,697610398,1581031344158159678
+c58eb9ba-dda7-60fb-06c4-966506faa30a,776835734,985623435729535597
+f3eb7c57-3271-be03-b88f-17f1740c744e,4092663652,13142900014874164205
+cd4ca652-904a-f608-e8ea-5fe3cb0f2559,2383068500,13893794584932044412
+969f8cc4-01ac-1547-dec3-b8513dadb5be,1080822421,15276700174098619396
+d72fe3cc-ad24-0e27-430c-43a812fd7b97,4220770289,10576875177136560006
+576f8be5-81de-e412-7295-82342bfbf79c,478547738,6762453731002105995
+fd7f12e7-ea93-8f95-7831-67823863abf7,114544108,3932799454677959409
+67a562d2-8702-f144-7936-862abaf74ea7,3275668850,17795999852291674412
+b2b2fcf3-4e43-ed74-d53a-712faae3a378,2715862442,10261978909797261586
+0f9195e2-8717-b8fa-a4b4-9869a9466a61,2307396378,4009301037163031229
+0a36a183-5f03-c116-7e85-16a8c83e45f1,313910815,664360239898590437
+87a1fc26-35f3-897f-0c05-078f656c126a,3592601921,15798741513382774794
+c26261ba-a546-bbf4-d32c-8f0441eab6a2,4042149378,12441756315538341585
+6ae03e49-5777-ea2f-5a0f-9ac296843a24,585511629,5922427593949135814
+6824a344-c8aa-916d-a93b-994ef6e32660,895289432,9445272658015330917
+ff002969-4d19-ca16-27d1-2f10183db74f,1412184350,4905336231810602074
+f0df36b9-4461-99db-f7aa-1f5f0e4ef7d7,2308736526,4096539863378684796
+434cac53-2e9f-5cd4-9ded-6fd1ac7efaa8,2392368528,9202945905188924347
+d59cdc9a-4b7d-7cf1-00ef-ced845ff33de,3769363666,2103578349140606550
+0210b44f-548f-7e2a-f0b8-51cdb7919c85,3171184476,1047895984824644337
+7ce6bdd7-ff9d-3d62-aec7-d2a83fc6cac7,570485903,1148812097426233123
+e265f65e-0d4c-e5e6-3766-2bb0b0f17871,527640731,9692653885898588570
+2dc9c21f-1c03-65de-39f1-934c84904c10,4135836599,10330251572395058253
+315b83dd-b73f-a8dc-a83e-870b155bddfe,249833715,12894968230201918708
+4708ab99-4627-af71-3d8a-932eba4da56a,2824740264,10256954960880483398
+98d9dc2d-99ec-07c0-6bf9-87487ddcb99a,2564320512,16897055264018081967
+c72e836a-6a37-086e-a958-b5a3558e8ca1,862937436,13147907890844998379
+65f81b1d-2fca-13ef-58d0-b0362d3e7ad0,3124105195,278969776562444753
+8c483502-2105-0025-674b-f9061a705bd1,1855959615,14420862544533095
+16084dcf-854e-a3ef-2501-e6ecd2325f84,2486682813,13186200662357008148
+f040b9bd-3dda-d2f6-fc66-f28d6dcf7f82,2835070680,5122966390570076345
+7c014b2f-975f-aea3-3b00-20bd1173a321,716788418,9798413226077713831
+363b5079-addc-0e68-46b6-a7346ef35896,4253347597,15370125993549242612
+9b767fdf-0c68-6c85-c930-8ce59d7e405f,130942727,9082903086788033792
+0418e262-4929-2a74-1532-4dace8aa1f7d,60600169,7276545729836119343
+3e753a8d-6299-e874-3a50-854fcc918a11,3313334136,8718036447153688690
+ead01718-55db-c40b-45b3-e8413b1bee60,1209967041,2464381104072560496
+bacb1b38-f02c-3ae4-1dea-fe471dbeca5b,1581916985,6532361392502453870
+5e2d7c64-4b35-fd2f-81e3-1372fcea15c9,3022133165,8824732217661853518
+18938f9d-e9bd-10ca-8a85-45dce0f2ed44,2738610492,751584894340247449
+246d761f-c7fe-250f-b297-8a65d0e22108,991703559,4310819632748619642
+e3f95f95-d348-0123-b869-8f26a1e85495,1789807819,11932894362595799075
+747dd2af-78fc-5b30-db8b-75f80c541f85,3382404685,1255505505125223290
+037b8b02-23fb-3c0c-3b57-ada354132d71,3619572769,6283435757224942183
+84aa715e-65b1-6713-d09d-d8df6b1decea,403480894,14473328922552089362
+1a8db053-89d8-5e8d-07c5-44df326bdb54,3375095222,11335721411343251251
+768686ca-a44e-03b3-251f-88ac53679134,3700794762,13694668365809906620
+a8af8ce8-a4e4-2db5-eb0b-24e79d6bdd2d,4109368117,8497700477369790793
+08224315-15ec-7467-c59c-c00bf7caab1f,3349723244,4301926467249518928
+69702f4d-9017-6fc7-82e0-a80605a67aa4,1614026250,1676615169990875224
+d2ca050d-18fa-883e-c83b-0b86d3038d57,3167182659,5581100543482577985
+3e819544-42c9-4ebc-8ef2-22c6416d4992,3328005285,11218407228693309706
+cc01b69f-0b96-8b77-21c7-83369baf8c3b,1110687803,7436859103482780850
+41f152a6-6a80-4550-7bfe-deb0b8d98e53,2829290477,4425732308345977710
+95882f69-a879-bed7-1f67-19597da1bb14,3716469098,8211052344224206983
+9ced93da-71e4-8a88-e5d6-2a5c3df84bf0,1994242400,11612520336912478506
+f40b8998-eb2e-a4dc-a2cf-9488a67a2e17,2344412355,11045456679462034655
+6d672e55-a9dd-e432-ac90-f5e4678c1c31,2299729449,8492069830372028980
+a3e92412-1615-a927-3543-ac503c13a617,49815704,13935268445018759449
+bbb29756-81c4-5eb9-6681-84ca09ed413a,1257236188,9079836468852387031
+9a4cd863-c576-e552-9f1f-cc68cd0ae58d,108501024,13098975218710749982
+279c89e0-914f-bb01-eff4-8da3f56503b8,2519772153,5533376647252979569
+b18faa1b-63ba-8742-d4da-cc8ba3018dba,2281464270,8883528519292478207
+5dcf147e-8388-c261-25c5-296d2a41d484,413109536,10016517795196245296
+4ea6f85b-94a9-0dc6-20c0-3f2a12413183,1546437081,9462522416544950640
+9f803114-93e6-dfc1-d021-c106afb5f88c,1462815135,6227330262349298192
+c21de40f-636f-08d4-6123-a8592913619e,3035443219,16891966417699625663
+dc6b1278-d4b3-2317-78fc-3aaf682429c4,876536823,10743636329978147409
+38a94ecc-3e0c-c69c-b54f-a7d4290ba3d8,2936816542,7438362826793763401
+08b7f636-5d6b-ca83-a0fe-472854fe4de8,91555922,7262387943161712540
+d2f4bb34-3d21-3f29-1256-7e9df9ca997c,4225168627,2720130713214682814
+2437d511-06c4-b98e-ebe0-1023fa5b348a,3281092849,4799219448372157827
+f370713b-eaef-72dd-7071-89b216259b2f,362080462,1661607921882642261
+b4b21c7e-1f34-cab9-41c2-acf9a70a00df,1526651307,13383501793247268037
+62acf817-5ba5-0e19-6d92-3e5a0e9188ea,1952619180,3665991179202664437
+b6ec58d3-83dc-bfd9-4971-ad22c1a11d75,375794991,17473454151058694483
+0dc235d5-148d-3382-8ed3-ccbe0a8be3d6,1829996612,12188875864488554546
+5dad57a7-9a08-9db2-4df6-9b65481b1601,1719778180,5190033093882667012
+c84e5522-29ce-b300-e619-d2842ea77e5f,1627366983,5354505561608929944
+b00ca69a-5310-5a38-616a-3eb31875debf,4281358953,10811006180545341770
+84c43c6a-182f-5e19-ac83-0c95be79a959,765361533,621600839184928463
+850f6823-adbc-b4f1-df2e-1bc4187685f5,2324450274,13614934889434563613
+96bb2109-fb7d-fe5b-dfb3-f73aae6c1cff,317674952,1873971526504252427
+09ebed65-d0ec-7eaa-37ac-9540a9bd77fa,150112275,11224067727525265060
+542bbe48-342e-0341-3361-5beef46b2d14,1355986115,13487478510417113074
+6a9426ef-d7bf-c9ac-d195-afcf6452ce77,3527109397,10001709800998361382
+1f970aba-fc51-f66e-c0d5-220e5e6d11f6,1890233190,16546628108391282555
+05a7af24-93fb-674d-394e-d0b741741ebe,31812141,15835474608530943575
+1adbf2ef-3556-4587-098b-33d34ca23b75,62975556,6680268441817795230
+13e2a40d-9be7-8cf7-bf3f-8798805ef71d,3595087499,4237588993144693028
+4da03af6-6b3d-ae76-04a2-0d7489abac41,1258279897,18262488650177558910
+0badaa77-16c3-9112-54c9-17c49b16c247,1707239171,14478668601658341348
+9122e9b0-ef27-fa5b-4c82-7e02c798fb18,1146867763,10503619119116011379
+2050e68f-ccf1-1e88-a2b3-9524e1f97fa1,1477030230,13384009829481632625
+45ae8e5b-ae75-914b-e590-7f07f00b96ee,3844058960,14408220386868615020
+064e0ecb-09cb-727d-360c-5abb388fe3ca,3410729007,12283441847689413234
+9cccefc6-40a5-e7e4-26cb-586724841be3,3196985870,13131223642763354696
+ebb07d70-f812-ca09-a345-bc9cdfde3d48,1658353320,1910982936359329625
+a86bb4ed-41c4-9e94-f543-d3e612a89f99,1868828549,5736500427681014042
+ad678108-b79b-514d-590a-9e3c4af987b2,3225739766,9313172053704814166
+ad8d5f65-ae5f-f47a-01cc-8cdd7db372ed,521749753,12151131352643350834
+ca7da70f-8817-b266-f988-d9b188d85c82,1652584064,14906757586526837002
+4a2d2b08-fb1f-0d1c-70da-bd1759eb6236,1542761451,330423105181708126
+05ae1239-e83a-184d-16bd-1b97c7772c54,2383894469,1722299827712450267
+91fbb343-af6e-d0d4-4fe4-ff4dd7431f90,673741220,3237899119571490967
+abe9968c-cb35-2e03-04bf-967f48bee77f,2810728269,17037527320381855064
+1230a1db-cb44-7b64-2440-94145eff53cb,1734342182,4774489098752464690
+fbb95a5e-7658-273c-a5ec-921e0d4b45c9,720607697,11956678267977431170
+833a35c3-9209-4609-fb7a-504dd50943b6,1795287298,3290795805879312111
+7ad1fc1b-0e94-740a-87be-53bab5cf7966,4263031263,11971273420133363124
+ce7acefd-8488-bf28-b798-d0ee0f9794b6,2107288852,7449503769379831557
+fb3d4d49-b53b-9f03-12f6-8fffb68c5273,2852626137,11584425613568893521
+a185ac0e-cccf-50fb-84fa-af542cc2f562,281533190,12345889651888644407
+ac2e7857-e526-0c37-38dd-f0dd987ddbc9,609208295,11565441830563505882
+4fdf52fd-480d-8aac-b8e6-cb7da4007860,4265614795,13561144282969069178
+3c1876d0-3c0d-cd6a-b076-3807abbf33af,2154167934,2916795484026992455
+2e16460a-8548-4bf2-5ea8-8371d71bc07d,783692781,4331978321329801190
+9ecb2089-976b-a47d-cbb1-1a951ee5bf34,938133145,2623387037027054386
+af9c232f-3520-62c8-09c1-9627757a82fb,567501658,17145399841475048031
+130982e6-9a23-d090-b401-dea2d7d65b09,2471028681,4122601810702524417
+181a4acc-1d14-e1b7-e15f-255cba811083,2018209804,6352807280075659967
+36e5e3ed-cb51-cb4c-3075-ee6a8eef73ca,3687782048,2486907488158573543
+44288bb4-ff6e-e319-e69a-24c294adae61,3958628427,17283839146100865548
+4664cfd3-0293-891a-f674-53d9134594b5,1707334101,7464194100640023794
+02b87c3e-1587-322c-06ac-73789b0b1606,3323093267,2624990332195384598
+7e1e61fe-1fb2-efa2-ee90-60d06f13c90a,3458464964,14507955512714056576
+69fbb66c-8158-fd90-1256-88953c43de3e,1487755488,16229200589056925398
+55563c52-8dfc-b2e8-52a6-aa72db80162d,3266361202,7666106273499692461
+3ee3f204-0ae4-bded-6300-4fccc8462cd3,2144228329,785159396952538744
+13e8b5e6-acf3-4980-5444-1ae0da548b4c,4276550928,2206713030809689011
+bac527f2-371c-1858-a532-b4c101ff03b7,3002534308,14192255232734611249
+41c600b8-188f-b222-e1ab-d1880ef156c5,2475746205,1013990328340944047
+83d7ac35-b33e-f96e-20f7-41495ef986f9,2844569380,15286828182213537841
+da34690b-f2de-e657-9727-b8e63a7623f9,1930080746,8423790031060852370
+a5e4246c-3cdd-b81e-0283-04ddf2a79716,1078170824,5980657851394362689
+be911d30-7cb7-ad3e-5f1d-cc2f921c1196,3039124255,8300732725083178583
+5fec7086-7c13-fa23-6b0f-1bd549a8abd7,1636563794,10210864841752186153
+edf8a0d1-bbd1-835a-1ec8-37416d1cf80b,464642240,10401041598543010674
+04baa179-2da8-daef-73a6-ff4113f60af0,3761240781,15467006434346225229
+515bc200-7389-8d8c-ea4e-2ee5aadf73b1,90256872,14624693408612063245
+3248116f-143a-4bbf-22c2-b3e42d01dfb0,245592385,507669784113962604
+b7ecbbbf-bc57-451d-4b53-caa94ddba837,3445061719,17893151116261489348
+5b156930-c193-162d-9e52-23e1c0a0d9d2,1307684708,10588227931716551229
+da74081e-b828-8c43-4eef-a3f3bf2e68fd,2495066053,9445307042549371741
+fded65c4-6459-2d99-2be8-3ad58a650838,3196280926,6204949828628795544
+c2915bee-62db-2c57-829b-f6c88651d370,926706441,6154053624815778707
+bf07d036-07c2-8cfc-169e-3d0dc29b8665,3422890060,16570369133916215588
+5f3a4815-4418-3ff0-aab7-6a52fd910060,3283862583,14431270127704995864
+0105835f-5130-5da8-575a-1592e0007283,587998773,14212127836734905152
+8edb2074-9065-9c6a-a2a5-870edf9917c9,3592107174,4005662836120930208
+0f2012e5-5d0a-d9f7-f494-40b3ee1ce9f6,3764506652,12594313288327427836
+086fe885-30fb-b14a-49be-a97fb3c5c83e,4158461774,15145557104666069902
+2576b2e6-548b-46f4-4f13-b60028c6ab42,1074164620,9527901328775171646
+9b6e710b-9203-5754-3016-0d8e2c60df0f,629966752,14294401237027938401
+e752a362-32f0-af9a-2cd1-6bf49f03d813,507013851,1883700812841409531
+e9e2fbd4-277d-09c9-ce73-4652b14e178d,1620996133,10253335793488850970
+cd4f8cbf-94b2-46a8-c4fc-1a112cefaca6,2742630697,179097991166855111
+5ca4181f-8da8-14cb-8c7e-f525fe1c4ffa,1143909335,972316856807388880
+068dd2f9-24a5-a4fe-5d4c-013eb4e675a7,3580171775,3091748542502207131
+0878055a-e905-0e4b-779e-b37087a020e9,3557585102,3105251445919900655
+faea52d0-a731-0139-4faf-a93c019fd28c,3091605663,9357736359207370092
+bcbaf74d-52be-04d5-db68-45a1d65c2a34,3311319547,13603495074110077500
+56a9d04a-d928-3142-ca06-6b685de03575,3998497093,17072754964887302107
+f45cb623-03a1-7eea-50cf-c186ab5af782,460059962,7295213938583023311
+398b8763-fdd1-94fa-60ed-166686f35ad9,4077127818,14895353317170306263
+7fe1db1a-1987-5b6c-8153-cc142163f353,1922199841,15954563334690053169
+92c659eb-d48e-54df-b191-491b64640ea0,2059818565,8159715559190760139
+aae99b54-3a06-a531-d851-bc193378a34f,3061518997,2531893890836598658
+ca781c1b-4093-86fd-a7d6-d95e3a08867f,705310220,16630981670256213387
+5511cbf7-e240-f32d-33f4-96b755a475c9,3623388594,12179969561777889136
+e2c5fcf1-547c-717b-eca2-66b5448a4426,3674872066,18287836676011070377
+6ef66fa4-5642-84c1-e749-0a4975310f41,2650659211,14077117859043790095
+9837441d-a318-94d0-c93f-57133b6bf0f7,4247303585,13349280714271535307
+2f58b148-7926-3972-8b3a-3fa71abb96c2,126404527,1970802206386454485
+94131fac-2a2f-f179-3330-b81248ced170,1210084208,6897288172734542643
+eadc2bff-911a-6170-1ae1-d11300baff7d,3845942953,13997958071593247047
+360cdd82-1c25-43fe-da47-604450a9c249,2031454312,18265307626567729868
+3417e95b-ae53-71c7-91fc-47aaf3aa171a,2387391501,14714262244018839577
+3c8227fe-7714-5c05-eb12-e62b80ac2687,1557064225,14133063598838211322
+f77dfda2-f7b3-1b57-ce29-d9865c632a8d,1769867161,16274966404250378534
+2281767e-a577-85a4-25e6-0b107193ac79,3477280782,9448561860018506382
+055d6cba-f44d-6b9f-aaa9-f4ad93e7f1f0,1794151838,15140177903838016665
+d579a15e-af8d-7685-6d5a-04b0ce0547df,76504873,4773609566517327415
+82fd76de-cc61-1f78-0adc-8d409bfd7c59,2114470953,15747594630455259736
+80364684-c06c-81cf-7777-a8b22bc5fb01,1658685638,8179861669775537577
+840fdc40-8f18-0f3e-db42-ff8081b94277,442281845,18227543035737447955
+ce2b8b35-b7cf-9044-ea60-4e6c8188b332,498839549,307894019902438988
+68548a1d-ac82-c6e8-573f-9f4575b18c7f,2147793191,15094633606862315430
+b5377397-ff07-5a17-3d87-822ad37c1bb7,924888253,6426045489675485444
+fbc888d9-6212-cd4f-3f9b-41577f7d47ec,4025396647,12418077740864673342
+2006b0d0-02de-4aee-4fdd-786298ab134f,2844476741,1759007572753963495
+9a747129-b374-cc2e-7504-68070a5aa002,2960319522,14426091394930317567
+4ad09186-22f8-9c64-cfd1-593c398962d0,950411044,17850314839818376729
+06aa726f-c932-e104-7f21-e9ed3aa3e7ad,617054549,5200816103106403648
+163bf962-56e4-f750-6765-fb892fac763b,144146247,16753975937349449121
+47c1074d-58bb-46d0-e5c8-7f793834986e,514919830,1034407905451299276
+3ef4bbfb-d089-20e7-9a55-4b54b0364ada,371593499,8606296585852858710
+69c9555c-8ec0-6e20-e61a-86639269aabf,2722390317,14041490608275968312
+4c2b1812-091e-18fa-3d3b-ada59a4dc547,379424122,18413414600709157254
+058652f4-5743-4cab-38cc-b8120fb22002,4075692547,13724419416402949732
+cdcd94db-bf06-bb11-acd6-25a6843b2d2d,878640380,16383302720626732531
+a372b26e-f002-39ec-b471-33b006c0b08a,2239741117,14378737886832887185
+6bc361fc-b138-3512-c9c8-e8f0cc8700dd,793046067,8174337239365957381
+d1f5a1ee-80a3-5f75-a256-ff222b777780,1090156715,8189153997550305211
+23fac2d5-d7c0-f635-0c04-b52e0c45db56,2503276436,14076874635972023266
+58ed473e-1b4e-851e-9d4c-68e2bd45b462,4195928496,9660316743771222343
+fe9c5a30-a649-6024-d7b0-f826de4662ea,3290031960,16324887354578588203
+f366adc9-4e5f-5212-5b7e-733289141663,2001662537,9283458650567343952
+656cdde5-0a51-d7ef-5daf-f74675829741,2404332897,4528341593813108733
+889c28b5-b3c7-a471-129d-83b37350149f,880589929,3137271817018175223
+a5f0a0aa-d235-aa7d-f8d4-ab1469cc5185,749366800,1464139811111430913
+2854ea5e-8de5-48ff-b2c9-fbf0ac24ea51,188088094,10686497988333990551
+796b0608-3ce9-91b0-ae8e-6d2f093520c5,4246392638,3845838844366568777
+f5c60228-5e92-a04c-9b9b-0af263b434e2,1316046804,3143822557943965055
+b14be6af-ea78-39a3-b74a-21adfdabd4d9,2983244992,10737561001251392119
+39dcf18a-7f54-4c7d-1ea6-6c1de6a0f341,2461833751,4473784537856888151
+4aedb4ec-8b15-8857-0e42-ecef0aa481cd,1101609206,2873835959649703871
+ef3148ef-0aec-6870-dda2-3c04c0962789,1081201312,13454035023169388737
+3fea6b7b-6d01-76ec-bba3-0b9a3305e911,3949958715,8139290226207981573
+17555f9b-e674-3409-478d-cbdae8ec869a,2784104364,4120488133778430119
+866a9265-2a4c-e0c2-2bfb-b76f668a2ade,2674627182,4974871274053943982
+c2a27c49-33a0-2a7f-24b2-5c47d7e59740,1260425683,9378422919288948425
+31adb3fa-edd9-a321-0d30-cf61468fdf7d,3003568736,18033912051393448331
+679004e3-96ec-607a-bf9c-3e8442389a7b,864842865,13265788841391776155
+1fbfef8c-e715-e97f-f4f3-6ae60c465a43,1389765329,8630285594861926059
+ebdac9c1-da5c-71cb-d8b0-ff94d212a88a,4127915560,13157209119525928851
+71b77c57-b51d-ae91-8dc1-fd5b9e497d61,992552971,2943355439644278062
+bc69484a-d88c-b11b-0513-0978c40514ab,3703995,10754872328963623716
+ab74dd6d-1abb-3703-ec79-a353052c07de,305370219,1201534328436564823
+8c5566ab-d8e9-98f3-f143-1899fd8af5f0,3667045422,14930696343318508720
+fe768539-0a79-867f-4ce8-d3b89d40584a,601179345,4649163293397244719
+f1192a37-9c14-925b-198e-245fc7821c35,248995649,1658937947156421365
+c66bdc85-54a9-b7be-4cf1-04ec7727a41d,2612130056,1645577305558621535
+e57bb051-420f-d0f0-536e-e8e1df8e2ba7,3454890406,4004933456020933185
+067b6d93-fef5-ce8c-757b-9475f2fa5470,3186072510,16166612060477967606
+4969b489-3e1e-4108-836d-85ba659bd164,3954910038,5957382295196741775
+1905f2de-3daa-5238-efea-76f6d9b1d890,25413532,9813466428014253734
+9b4ac71b-9b6b-fb67-8c8e-ea43a0ae6b35,2744763096,2272956214049732501
+427ea303-2363-847d-9d64-89083bcea19d,1657342295,15894840668467734710
+1fb9d0ee-28a6-2096-7675-fead2531a10a,1435513011,10207308208932018515
+25bef5f4-b27b-d3e2-5a3e-65a64cc1cd8a,1163782090,18103356827629999067
+bfaac463-1635-8816-0df3-b0638a754d26,906901389,6692334665228628678
+df4b34ba-e512-a070-8541-4bfd40da701e,3041588198,9389574252687349196
+df20ae05-5b09-863a-9fec-687db1d98406,1554146327,17812519739747334186
+5316d721-2f80-60ba-3a53-b488f8ae2b82,2657571781,12337091784420327563
+34d0bcdd-79ae-65cd-44d7-74ffeb66abbb,1902475575,10791088249690775733
+e7db9754-291d-818e-263b-74fe08d1d3c5,14012276,14134680235016666901
+466e2f7e-d888-e78b-5094-976360f8d8b4,855150439,14062180581918966781
+71ecd238-27da-1c2d-4a46-c4be284ece04,329006775,17792815593210354018
+e1961e02-de2c-86dd-9ed4-b7768bc98ccc,333816848,154326417075249023
+1a44f0c2-9b79-8e1b-318e-fdfc1e1e01e4,647366259,568859864548251600
+e163ac96-3cc8-7baa-5382-1eb090b1dff9,2012883364,18393446353107460664
+718e77a6-736d-2bbf-bebb-5e90ea5d7b0c,2927404582,12728751312897232984
+07cfd272-e6a2-e7e4-4a8c-af59f7527495,3179018690,15032905906914226581
+0f1189fa-935f-896d-7324-a4737dc0154f,3677210165,2592981691768904025
+f240b942-d313-b93c-c8e8-19be7cd36221,2849077417,13983149312825642976
+e9c8db7c-e87b-14c1-3583-608eab7dda8c,3625616308,936269937132283030
+859a80f3-17af-01aa-2d94-b6a04e24e665,3229275543,4997976500248424992
+42400c3d-cc99-b30d-af55-51c451064e2b,675402648,12342425505378102650
+578640c3-81cd-0325-03c2-5b768538a43b,1300207569,1645718473950751357
+9da71fec-913c-9dd5-07e3-4726a7a7a70d,3862951852,1585259334584748711
+68970c15-809d-edef-6ff3-a8cb379a93ba,942506285,15210187376413953663
+09ba6b2b-8274-bf13-59b5-eca8cab5fc9f,2728175685,12116387787932709168
+5c785238-43af-c40b-1089-812dab7ef8a9,4222824060,5678264836578465692
+590ee395-26c5-d409-85b8-00c2dc706488,1406323062,5341135115321843041
+a30cce24-1fc4-98bb-28e8-748921c74c44,1733841825,1728322782431305332
+99bea90b-6f55-2ea7-2ce0-bf59e22fd2c6,3214064311,3153699716962507897
+6e0bae19-2e98-fa2e-0beb-f6fb2665a8d0,3882826241,8273303817163749274
+dccc8268-2d50-e773-4f63-5e96b066922f,3252412648,6815011246214066351
+bd70c24f-a9b0-ac1a-8362-6a19bfb53de7,1577796526,3396276231144550901
+416ec38e-f047-35e9-971b-8d423df23070,3530560340,17072312566620750156
+0ca350a7-99bb-35fe-ec85-2de1ff6963cf,1674681468,5823104370701757808
+612de958-1105-447c-da53-80615b6c3a2c,2726914538,14592381951176999656
+d35240ac-f284-2a13-aa35-e77f1d1709ad,1439248414,2419518390740431644
+ee94fc1d-a71d-1b38-3c3e-9f191f354b78,731845499,14506415226248109403
+f9238928-0934-4772-0807-a897e33ab640,3930910517,5702294021609595153
+38858f46-decf-0f66-72eb-1dc66a07f60e,2589590763,6607851165559723154
+c9ade816-9138-1426-51b6-c59b006f6cca,3097779873,12093496017099074544
+75b6d2f3-8854-cb3d-127d-f6c06ead06e3,3332925221,10710007472122017015
+03531403-fdea-a8ad-41f6-a2a415b64efe,3679349485,6397548917619328454
+91e458bd-bfab-cf3c-50ee-15c5873fcb85,2209534902,10098582166414096629
+d630b02a-2d58-bbcf-e38e-fa851ffd1a6c,1937467429,4185841324839367890
+535f51f2-6aa6-61ce-d453-7e39f8e58528,996896984,2661823388014987827
+988a8b46-be2e-79d9-2e86-485ed4a3e581,3139227393,12098831045343990576
+66cbe46f-0358-bf6f-8cf7-8f14af4bc59d,1483268176,3217685353203859456
+3c28f101-4459-3308-fa63-7d3d8549d438,942465936,5754272284407654462
+60b58671-4524-9788-320a-d0487c760055,2534726364,17573840891927381168
+ad60766c-c22c-e9dd-a8da-853e7c8a1f4c,286809973,7269499837532509073
+9511e4cf-ce22-0c52-1875-64fa447d4cb9,422498952,10818321420542856050
+c33f99ed-d366-a8f7-7717-6d280d00eac1,1118351635,2306239463676807878
+7db45e33-93c7-5d1f-e29e-5ab9cc9ebbc7,3925151072,6633463889331981299
+8ae091c5-ee46-56e2-cf5f-7234061a37c5,1603743506,12906862966258164138
+0e59ea1f-bfca-30b7-908a-adb4b5321132,3048849573,162756290684732429
+a7ccbaf9-05dc-5d45-b8a5-c5a5bdace3fd,2023510206,10659869018035166327
+adb2a453-05b7-4859-1b88-c740491cd5ab,768078499,18406235980840576530
+d75a6505-4391-ab76-65b8-48663a508d49,318546356,6516206981517737781
+c8799766-910f-8357-d754-c31b973b7986,4278563070,16361867703234662951
+8993bf8c-449f-5672-8770-309e79a4c109,749715269,13193893870211418813
+70b4cd5a-a12f-61b7-edd5-fe3c0e711d81,2623429405,15872110750951415812
+d2551acb-fe2f-386e-1d94-cc03683c3f37,1571076327,12352971536046197518
+fe063e72-089d-ccbb-54bb-084c40efd606,2950027577,4035279032194534050
+9bcfd2fc-f0ab-2a34-0632-da8b575595a1,1026136179,17203286017847839381
+2621bd72-1735-3f1f-fc0e-622bad378b9c,3397090459,16305687878113821402
+c53cdaa3-2f35-9161-0820-5c0faeb76a85,1810651410,737678358337505279
+9025e6ea-4f90-e06e-d1fe-49556a0e64dd,2314804367,2225237377421181166
+eddde9d7-0d77-a360-99e7-4f8f4a298f74,2519318043,17090868369740663864
+a916ce90-c304-cd19-ac70-2d23c839e8f4,1465730207,12321063626959758098
+379c17a8-436b-724a-642f-6857ff64b8bf,3018253106,7857786465589547218
+ca1e4cf1-7752-a82b-f113-2f70649db410,3904916757,12424897547212267020
+1b4f00d5-65cc-3e9e-2899-9faabc7dc02e,3969780351,17876380675685117338
+18b4aa75-caa7-002b-0337-075752b3e350,2280397485,12117033130867502947
+3b95c6ad-c430-a979-d637-a09ec3c0509a,629914850,10192863820734226837
+e6b749a4-a30e-ac20-a19d-dd1f8b8a7234,4255771141,11860484199859268122
+f51484e8-b775-8ce1-776d-d987471338df,1047745033,4014955444839382068
+eea5b3cf-e5c1-19d4-845d-f257c2954b17,836588741,16740326723874962391
+57eaae33-ecac-a07e-1204-e0acf14773d8,1760468792,9943641685466998242
+d3adebc4-ca45-b493-cd60-c007946074f8,502245046,17810611313893509250
+6d10a969-6230-f6ad-53aa-303743db77e8,2859463588,15176290739498174362
+4df4c0b0-a883-eca6-562e-cd8e8cbe595c,2684155272,12423015694879141576
+0860f5f7-689b-d8ff-dd72-2c3219bab425,1591514187,7685757696862101931
+bcab9039-1399-5a56-7c98-7aa90d653bc9,4099450181,8705339203821653289
+e161e68b-39d4-28a8-95ee-1b36ebeb6d86,3207919012,17361331142913847358
+8d2be69b-a988-ef42-e11e-cd923e0d3955,651865505,3145811913479918127
+49810355-39a6-0253-7f2e-aad16f3685dd,4247514317,4611480918273029547
+4c8e89fe-ebfe-67f6-c396-8b673dcd4b47,1884650763,15121517925990648636
+3b89b85a-7f80-6de0-c725-ed30783bfbfd,4276703406,6927859392225392376
+c3f4c043-9a01-0554-e0c2-7ef00c844f6d,1467731610,8865321112406149076
+c27a2350-d11e-23fd-10b3-941ccfbdd6d7,171273966,14911723735351365009
+87f5c1fd-3364-cff7-e984-941e032a8adb,3174537187,1961407572540391949
+5adffe2d-63f0-1121-d648-b05a3b9368b9,3373414904,1479344858073227123
+36cd7307-08cd-60e0-9edb-f6f95b3b43b7,674919326,17740849198669453686
+e94b090b-ae65-516f-84fe-11a4297bfba7,848832783,9283157746985228539
+02a430e5-b8a9-9737-a34e-106464d258b3,1220374263,16787546822379246228
+2279a803-353c-a7e0-5e01-7ddc21e6f880,2134933315,2858236658174191384
+305a53c9-f3ad-ce08-8541-a64478a0c298,2205514719,13533480874219127149
+c27dce8e-1f15-9000-e1c0-2e3ff4f54942,1614105219,12873190070233735657
+a278edd7-69b4-4436-d7e3-5faf6202f1b5,2498656400,13904036701750223284
+2d91c830-4fab-61b3-ff16-1d0c4ae838d5,75477443,15548491045760430624
+3fbaa724-4ece-7177-4f53-e0b8a48bf034,1821784935,14884753542084053802
+4c1e1751-5808-6154-1864-20c0e71d4b86,498770912,4510430876825783934
+fcc69f9e-51cd-8863-660c-cf00584c93b0,68944853,4815933777016237388
+2ecd898f-6d85-380e-c9ac-9ebc88812b03,1894692949,10644901922895455502
+54837bf1-755d-e337-5400-f0f41b7532f2,1707166375,17167565619187143453
+b77c3d0b-9ebb-4d5a-7c5b-abe68783c15e,2966276888,9551754040785386245
+c41d76b0-0fce-1795-942d-f4fcbddc172b,2229621872,147687806627569648
+14eefc00-db13-fdc6-dab4-f9b207ac4750,741614232,6032619671909340898
+a8b12ffc-a1de-87b1-d4d6-d854aa2f7442,3061079605,14872509321856835055
+93643f41-20f2-27d3-a68a-c1a4bf4100b1,4164416155,6590602444243615156
+18c9ec31-30c1-42c2-c114-02e8eda46687,399877472,2814033438770579486
+2d917873-c247-ac28-5ad4-0d4f335a14ef,4047739027,11947810719457803593
+510067e6-c60c-fe51-6f42-8785ff0f59e5,1997232520,13545649328216227380
+e5964d37-c992-2a32-82a1-c38a6d9727cc,2204373782,6478597342928099040
+88fc7398-5224-0f87-a869-e1c88afa8abc,55887866,15811002913150181123
+1a5a6cf6-d6c5-26fd-ab41-84d0bd36e400,1487457630,10594948588732485240
+10802706-08b8-22c5-62a2-bfb1e920e92f,3597038446,17694790869147577299
+c52dc397-2011-c43b-68ef-0676fefa4781,1069613242,11929271328069559428
+1b9407ec-f13a-b3fc-cd3c-f00a4b557e26,3979877603,5584820261592765003
+6cdcc9e7-224d-c2d7-33f7-2fecb278b420,2932319734,4513211819309352794
+caded0ce-8721-06a1-d16d-298711fbcbeb,154816156,3601572789232555774
+25bbc6ad-acaf-4ef6-dcd2-6d9a2cb13118,381875960,9558913517000574907
+58371206-895f-f78b-b9a6-4713d40008f3,2423618843,7983712041675123159
+7c94ebb7-2e55-6d1e-e64c-d46615b3e063,2664705883,11128482107241635400
+14658c25-93b8-e6d8-1976-a9682d6bcd89,194713610,3609009412805100537
+89da27bb-ff6a-d8b8-3e51-f909af689f2a,3184060429,16461061344032933961
+b1a44973-739d-81bf-4ec6-0125f19ef173,2887991755,17723388818578270213
+ef14e655-f8fd-c754-7a72-f4ba6329c3fc,3968061631,13626016227436890688
+2fd4bccd-640a-2455-ac2f-b20035ef6c70,3470731207,6791192758328923672
+5c9bbe94-4b4a-9dfc-412e-1e88e042672a,3214210282,3180972606535016631
+c786e3a5-0dfa-e0a2-73e8-607957ccce65,3644309775,16714230785810546250
+b1e65bd8-bfb7-d69b-bb55-867198eaad09,2040461322,10307586939363936709
+2761d07d-abba-c166-a179-49ff02562b5c,3357457936,12037613035541081424
+daa0ff23-552b-337e-6320-d864ef44e8b1,3290580925,5976907552292183063
+1bcf70d3-03bb-9c3c-1b7d-115178793273,748394102,1366874971892451794
+1f84c023-a9ae-806d-503c-09f245461051,1468412201,14246573358937058947
+3993cf0d-3279-6247-c547-93a9e2f87b65,2559468507,3533039799715746074
+1f01cd21-8a3b-2ea4-c26e-feb5b05c4348,3258279294,15558494946762436089
+1ec5152d-c069-cb5e-3db4-523118371913,791464399,1454787830163442724
+aeab56f0-3771-b615-094d-7fa80e9f7add,1348579882,11426215642471340845
+db28d8c7-06fa-372c-c353-b71851561db4,2950433949,16894976278319894404
+0c6f1c58-b444-b420-3764-1da75846d1bf,4294315512,12245212109617153712
+841a5246-f8a1-4848-5224-3020993e4ac0,2133329330,6933775377925184662
+ef5fb38d-a6b0-3077-4a79-ede4eb7e20a2,2540568226,5170984391004194668
+2c9ca756-cb73-25e1-b215-63aee71f19d5,2029356649,13490489961567071078
+0721ce1d-1e7f-f101-58eb-3c77c2308f72,1434843673,3494103947524839135
+f87f195b-0040-c2de-c849-c0d2f6b7c935,3719591061,8089605352883652395
+0a301dfe-5848-1b1b-e9ab-2107a05a1dfd,2704761505,10915858614481886733
+b31f6f53-2c63-74fd-910c-5450e64251c9,2065082861,1929574601041791427
+f04103ad-91f5-33a2-f28a-a3aac9ffb1eb,1765226246,18350494637723834229
+ed607d97-1d4d-c661-04fd-a26af7fb3745,3529246948,14924015903799902584
+086fd9a1-af57-cfc4-ec58-726c95ddc98b,3275283035,7721910473921403569
+09c1b2e5-b1eb-8e46-6082-bdca62b884b6,3314398889,15459384258706128030
+99e7d1c3-ce53-6101-635e-dc045bae9228,1381718789,3520818004980825929
+246b3f75-2838-7d46-7a44-647e308b53d1,1496496716,16164954368000576898
+47201e62-66ed-f4f1-5b7f-f1ada5997c55,551570093,15278313352907621829
+d8ab3bd3-39ae-05a4-1977-a44946644720,431521308,13376126869618585050
+99602853-fb79-ee0c-43d5-8d467bfdd59a,1052073445,14675753514654991746
+14f174bd-6f07-ac3c-72f4-232c4029bc06,3502010483,3641836219805518792
+1eca23b0-51a8-a441-5e76-b6c41d769434,2395307205,17754829793297863057
+b159c1ec-4637-5089-4206-d147e10cda0d,1900271053,5127163712921455846
+a70a6a87-d843-4ac4-5514-144ec4948aee,2789431028,16032479710767723470
+6634fd5a-428d-3f6b-1d3c-b2b5e49a9fc8,3130661972,17279244001696319142
+21eb5ce7-3c74-8388-ed3b-a06fe0693f4d,2878981819,13694067605890532405
+dce7ac3f-d8d6-e23b-ec1f-b5a85156a750,1717750946,6026092309561299480
+ee22f807-d23c-4829-0c8a-8f6fe2a4c496,3544142898,1809445892481273921
+8c4f24b4-b515-c0c1-ff76-f7a1e3ddd64b,729360111,15406508744629168323
+126aed84-e0e1-4981-32f5-8372551b180f,2058993597,5712282240997746094
+470ee64e-831c-e587-afce-124a22913c63,316395037,16305974220665526114
+f4484579-eb9c-380a-8e06-71c9eefbf0e8,287648804,16302872025986238373
+c355c941-7048-cfb3-e4d6-85306669f438,1627642144,8769348625223152898
+02723a46-6712-1ae0-9043-ebf3e5b5cdef,4064680161,7159291381621784938
+c8c52592-0e4c-0a78-5ce7-20353ee6da9a,3118147918,15581835187895992358
+4b23fad2-8a19-3dd4-d90c-c43c7167d93e,3961804842,2470865376898373206
+184f8797-a9e0-1312-8057-5256957883b4,654786877,755958705562434459
+52a2a161-f1bb-dc1d-b975-9ef5cbff8bb1,3266834846,9220759919228338837
+ff910e64-9f21-cab1-4bf9-9c5165692f38,1278214626,8103929016174449959
+0a7d8b75-7e81-159c-652a-8663a9d7c994,3393614586,5892881320632188700
+056101c3-89e3-55bb-d621-a964d17a4d74,1823540331,9287301295918802628
+63456940-2138-eba2-1c5f-99cccaecd789,306585258,9544957495797976349
+6656a9f0-dbdb-ad08-7bd1-0aa020d94acb,2471104216,7525484271764898089
+053ab244-1104-668f-2702-3101aa936426,4048624458,415278746809608218
+b0002232-a4a6-709a-eb41-4687c2cf803f,1333761029,2737100459886086855
+3d7c2974-9c17-be82-c94b-4b1ac8b30e7f,1503735055,10127702649335753313
+268d667c-40fd-fd8c-d499-c9a343c1c7fa,3226367931,4262583696402001251
+8a3fd47e-5b04-9491-fcbb-3803a39d7c81,1769745287,6069311930829186155
+c5d04935-4011-e581-b3c5-1b721e815edc,1349766979,9838406803948276456
+3e3f7d26-9337-3576-21aa-c17f93a4223f,3773193935,11858203787855209882
+0a27dc4d-b7fe-6d5c-644c-3be0b216efb1,1825465780,9391670128853054622
+5fe08bf2-177b-68cf-bed9-6e53ec35b1f2,4005967057,2585532765211935636
+60b7cf1b-9de2-4b54-2f20-98ec107d0d7e,2876067581,15220125078618914320
+864159f1-25e1-681b-8678-92f8d4393987,3433472006,4006114749710059168
+e98ad80f-978f-c975-6b63-390aacafea44,796991223,13224584188808952593
+4dd85312-4c82-2e5d-cd68-54218fcc4e9c,1379958938,16512589246136285070
+b9426012-5d6b-a888-a9da-e299f86a7fc7,205838667,9086734857863923563
+5ce3c03c-325e-e043-ae78-3b79bf437230,331238288,6079295445479212622
+667fcfde-1d83-c6a6-a023-27787b50e332,2799569608,17336141553392892455
+282965af-4ed5-c1b6-a477-7368e48ee64a,1561353677,6573763998545376009
+8309ac6b-df91-6dd0-e325-c5650b0daffb,1231653098,3900942186205341297
+c563e6c5-622c-6c09-2126-db7d5d969375,1448227963,3854120945862352254
+79b137c6-00a9-5034-0386-9eda113d28f8,654315515,14873946400901347090
+6c095fae-4a19-f411-03ca-8a8a4327ead7,2689517338,5815437062256728628
+718fae26-9b6d-fdb9-89f4-82b94cb33739,574281387,3406275258419105881
+08f82f51-3407-38c5-ea01-054df143f5b3,958005777,4775019235627132679
+49ef5643-ca8f-cf85-f7dc-3b2627183768,212186693,10051941890992042979
+7f792249-3bc9-399b-4c70-9d777199e28a,2315122453,6990852723228401303
+ab6a8a36-d3eb-9b25-d11a-4586360979a4,3423387177,13393567092142288840
+208371c2-15a3-9cd3-eb04-017d58c8da65,2549996867,4527732015167120072
+a9ce4b0a-a7eb-bdd8-c660-411918d000fc,2128026279,17300262877209470459
+06399ea1-bd66-cdda-5d66-bb4c4fd3d682,2722302095,3512836849465369040
+15546bd8-0a1e-ea4d-c01b-f9cf79752354,3459392085,6350304903712813394
+c1cbe61e-99b6-b1cd-7c63-31912a7673f8,410178353,959170829399346604
+09ef11f5-653f-be8d-e2a9-c8364095ce67,2031378631,5314859039947295354
+de1e20b1-8193-ec1a-57ef-9e62ea911ade,2318843198,6527540456554690899
+dd3b20f6-9325-ad8b-6748-4773b5ffa9d0,836906281,8108107788625636164
+e53331ec-9b52-0a4e-fc32-8ea743c74135,3318930660,14411178706282964456
+391e2276-a2ed-efd0-d500-cec621a299fb,4217830437,11886150953693310035
+1cd23f5e-c16d-1822-ba89-dc34464ebb0f,3293528472,11462156308302794430
+deee6ca7-17c4-64b6-3d6b-04c8e66c8403,2513854960,11749312615210349843
+e6697d15-de5c-8ec7-d2c7-85ff56a03cf0,1928016352,16887474873512938527
+c318356d-2550-29b6-5e5f-41dad7fe5e2b,3519856009,6374956135330616158
+a1018890-e17b-61b5-4a6c-75e1deef6f51,3418717376,16403882088480756141
+3385aa20-6eef-9f32-d225-4be656d1b779,3401446631,1197413793749171506
+7b56aede-0efb-f2ae-e132-f466037ad223,2564191172,15329121527677106738
+9463c425-3cc4-c31a-4b75-d2db96822333,760493513,12735807506801951796
+29cd5ef2-2d45-f0f4-c6eb-48aaa9b30f73,186978838,15818574992253273080
+f741b22e-aa49-f3ad-f42b-88372181ca7b,3136504629,12863090711122672213
+bac563cc-66c1-48e2-e1f1-7fcfc5117d6b,1568378019,959262968595212318
+dbf221dc-1885-73d9-5dd8-de51f33f2995,432529954,1313113309759090656
+d728ef3a-ca82-2b81-ff95-ba9326c46e5a,3786646081,17045961233085329644
+29886d98-a4f1-a429-7c5b-be5382734ef2,197068700,12783192616078350934
+eb0b2caa-6788-3953-9795-3979c5a108cb,906882958,691043692328835413
+de178489-af9c-45ba-2d82-fdfc0b5944d8,3473220936,13868886909758279177
+6fab0bad-fa74-b12e-10e8-9174fc6167ba,1759437328,11947905179992404294
+2e5fa0f8-ee9d-a584-92e9-7ad517eee429,704772154,17945572691410537276
+e9ed3d96-2e42-862d-880b-f80476ec1828,3676912005,8015639211844333850
+e9cc4c49-3912-ec99-7717-7fb31e80f721,3131760322,3843336607395342028
+a8e76011-864d-6904-d0ad-3aad9e0e480a,3332521583,901612021832796089
+281c33aa-3ef1-f33b-1702-89dc40b1f399,2232863302,5563547135172918803
+a756f7db-a664-b832-5bc5-31c77cb173cc,2124073397,1241185850782515330
+6e2e244b-a97a-dfd4-b584-18d8da3dff54,1087416286,1049872902321662919
+01fcc972-106d-8392-f958-4849ad177cf9,805508871,12676445282972220005
+3be9682a-ccef-9ef7-4ab0-131f30336bd3,205732156,13377313150096211310
+aa714f43-f99a-012a-30ea-353b96c8773d,1132461437,9104803598477569997
+7f7a4508-6d43-03c3-7a48-55ba3d32d8f3,1440545442,10266036329442357022
+52b76ac7-d004-a372-b6fc-f6a8d9252e65,605983478,4479901908603018522
+a6c1adb3-a8bf-63c4-b5ec-3806dd5b5ae8,1710418045,2292446153110268073
+80629377-d0b1-26ed-fdc2-59707ef5420f,1922082473,10407717779141877446
+b73e38d8-984c-bbf3-adc6-edca290a98f3,3155333520,6127809769237404397
+8810b915-4c34-3d53-25bf-0fb0e705979c,4082392878,6499331483007109910
+c0ff258a-e0f4-5afe-ab4a-39c46578e79e,747307528,7890994291766741948
+2d5017af-9488-88d2-40ea-499df6b7c318,71713137,15903364083249545619
+b9f8f65b-1b5b-9ba7-8b5c-cf2f5d04a4d5,870770219,12206764069206078668
+b6b4effe-1dfa-e41c-7426-947e3993f008,2203053589,7596811586439860155
+47680019-914f-328b-9d8a-fa5ec154f3a5,1251773700,16775559669805979330
+afb290d0-afba-a7ec-2f2b-ec4dc601d705,3295783848,15271050870968675134
+bbc5edf4-eb8c-d63e-97b7-2e8ea203fd6b,149229967,4810967227776124353
+9cbf4222-60c3-da7e-5aa8-320e95af1dfa,1323127233,17807416094914675333
+7f297a8c-af92-902a-4809-b416ed37e7d9,1758264054,13820554739145537048
+cf94f094-df5d-a0c2-6c4e-d974e4b92e16,1633227359,2384121600415250685
+cc8fd364-8827-a58b-82e0-26a819ed20e7,2822090402,16432134146721788613
+346552a5-9f7b-7255-b6bd-73997f668511,2474182161,9573309999362833805
+b04104a2-b212-e1b8-9b55-df63aeaa866b,920870625,1331298182681890042
+65337ab2-db82-4a79-44ff-a74552059381,263638566,3231133993428963022
+1d2e1b0d-b441-598f-bcb5-58e4011d50f3,2783960338,11461189877910366749
+7eac0e38-3b4a-65eb-c3f6-8e6021960bc1,4258917117,9266844491404033048
+9c35ca7e-6210-5bfa-283e-3fd3845c5ae0,2876298668,15590523773721257403
+a2e397ce-c9f6-0f94-d476-0e411923d44a,3855468394,2625605228861746727
+e6eb386c-c83c-1a11-8662-c5e0364557a3,1634700650,8258529357928290152
+173e67bb-aa28-53c9-24be-97a33b929055,2601621164,15686324727246437094
+6ae1d7cf-3d50-61d2-7805-aaa4c802433e,2665591876,6597816486798477298
+10521160-1269-b60e-6929-7c6064da8bdc,1497654847,515222465364079481
+6bb1cb81-e167-6831-c015-e1e9ac5a9ae6,3683939809,8316438329029570013
+e175f9fa-e462-7d63-4616-1300ef212335,2309853369,1352792561223480432
+9dbc48ed-93ef-41dd-123f-36d9d8d153d7,4050758114,12404653830959082721
+0a635e85-3cca-c738-b19f-49f7b5f4240b,3250270759,16947422257508840715
+b74c4d3a-8ba8-b01e-0d76-82c7b40975b4,4257177275,9129963010297197354
+c10ecfb3-6487-35e9-3cd3-556c76fe7f43,104754105,4636020713046364048
+d13e07bf-1784-bcd9-d264-67f872b8ad2f,2427382728,7416639278271423622
+b6f750c1-d60b-907e-cd8a-5c1005612f7d,1331993774,8241207941321168706
+27cc71a2-558e-8325-1afe-0265b5fa7044,3430577372,10755973388204574369
+85cc95ee-a16b-4972-55b5-906afdb93cbf,1573987117,13454360830393400561
+28d73f03-c766-8b3d-19fb-3276fcf3eb15,3372890834,2293952377689811860
+3832f0a6-1fc9-e306-58e0-3ed733f085de,1637445399,4285590617920933033
+5320fc43-e934-735c-6a04-1d33fe75db41,393611428,6481231791956352541
+d4558b2e-768c-619d-26cd-539a452d3843,406994302,2868172747690502606
+52ac2720-37dc-523a-775e-a63ae4e4c78f,335423336,6353875742052133376
+ee00d883-f97b-60e1-2725-54af28f56ff3,2247145410,2469812196647961134
+b7a62e73-0498-0097-c353-f65d36073974,2619624410,6538226384248534696
+459f4cc9-a71d-6ceb-1e57-4bc352335a11,2989306484,5113347536379677665
+07b67c3c-9e33-5f86-31e4-fcd8497e2d21,2069532834,13636566576793462371
+fe79cb5b-ffbe-4f0e-3c13-4fe0da9f0171,2748428212,15081561193638963471
+b69c4777-ce29-56c7-1276-ec428e689df4,1893855357,14047018387921133545
+09a730c4-00f6-db8e-a439-79bba365c9b6,3821726762,14133318205566650964
+fb7cb885-a607-f649-ee5e-ad0c7ab5b9cc,3048854195,10260647781373271432
+1cc012f0-1ce1-1f6a-3856-5cbb9ddb2cc7,1648982395,11656482062479302850
+0093d441-65c0-dfa0-b5d5-41a6732a13d9,1486936420,3677428681971760911
+2666155c-0431-b7bf-65e1-0b5bb81ae6bc,2141263324,231490385398141642
+d2a077cd-db82-678a-218f-5a8609af0bf1,120118207,3527886802760505680
+0cd383df-76ec-9141-e5e3-22f9b42a91f5,2936718662,15909435035858459770
+d8879769-08d4-460b-4fbe-853ece2ab583,2207382889,1308952309315580194
+0eff4a83-e1fa-08b1-598d-a6ffad117f83,802552164,10498845914019766652
+77c0c3bf-9183-1b26-498f-372084a3d66a,3322725513,15334513106249951692
+4a4cc67e-0759-52c0-9d6d-507cc9f8f948,1490176447,15017931488062692995
+624af2e6-58f5-3194-a024-195ec1e2329c,321250621,272524441680151725
+b0e829a4-3bf3-c200-76fa-12367252caaa,3075954599,2946976931633994407
+179a2f5d-da1e-b568-0595-eb5abd7500f0,1211868463,8510501637282236850
+febce874-ee82-8776-fea4-4a17836e72ba,1571430319,6590457791948499359
+101caae9-6b4e-469b-5f4c-7b6078f99b3f,1482863692,14350159563502677493
+9f6fcc13-139d-34dd-6635-80bd87e13644,2132471169,13508265320758195596
+cd6b8e3c-9b33-fe6b-8414-83cb68731229,2304281860,349336552771512975
+a2d7c4b0-7b0e-1601-f0b5-63193cd351a7,1763071048,6609396459413428114
+28b0e7b5-0e3b-43e7-fd90-5ab3287d398c,2235050786,2238380665540132173
+b0de65ba-f532-9339-2c8b-c785a003f195,3565198192,5435997019375859496
+f7d7bc1e-1b25-3154-43d1-04363c410cfa,1030808881,7763459999218869809
+343acfcc-eb81-0b17-c8a1-6992baddca0c,4035586208,11670142007399440559
+f2742829-987c-9978-83be-acad493c28d7,1387027691,9819277956412382638
+8d54c46b-179e-926c-b402-96590cf70db6,476784013,4816741555738026474
+bbd994f3-c88e-dd1c-8fc7-dd3075339d6f,180308670,1535192149762951292
+bcfa298e-7e8c-cf6a-aeac-26eb545ee65e,1351061416,15050593102059037571
+229a31b1-227c-7c17-406d-b4f0fa439ae3,1071597714,7754317666963399520
+194edb41-a8d5-c263-913c-1303b3f1bb01,3073829524,13551992552523504883
+ba2014b6-616c-6128-e6b0-6572e89b16a4,270184686,8223511442492416840
+f6b1a242-a93b-4110-59b6-a13f5da7a8f0,1429494594,6974826273144883109
+3dca5dde-e14e-6d3b-f56f-3a54fa6d9463,4042139185,10380832863818427227
+a6f0fb26-d80a-767c-8c64-68b7cd6d9fce,2598691070,16545079319397455656
+43b96ac9-8b3f-86b3-6352-56b9fd2597ce,302183557,8658753017694407160
+0bf1aede-16ab-97ae-7bc6-4ab5f92131e8,3302548669,9143006283266199960
+0516c30d-2b20-9832-782e-6c32746406d9,2702364983,8149909787333736539
+ab101c4f-4247-aa04-c3cb-d0a7f7f47819,4086594391,11546027291564701080
+e6c60af9-7cdc-674b-b4a4-073417fb6c72,2363196513,6457361160085885637
+9f6186ff-244c-2306-0595-d41b181dce06,3897443862,10239748925986965709
+c9f51139-a383-ddae-5708-8ffda9223e89,3952920945,12139527719350602522
+e3e9c998-eff7-6cda-4295-b9292564b8aa,580498377,8041996566602281368
+6055b00e-ab59-3b8d-c6f1-1b7907d3d8da,3291046202,1941445125159238626
+06dffdbb-22ef-cf03-5b2c-ec47a2a7a39c,2543697163,14594907874112823661
+81d6a383-b78a-4431-24e0-0f4216a8618f,3715729741,5333194917717664195
+e2e1b136-e11c-64a2-4cb5-6f8860ffdef1,1735839445,12083335644619336543
+a696ee3a-58df-fa95-c057-1c003969e770,1527304828,13080578560474850524
+3663b0cd-45d2-8943-24b4-7e43ab9a8394,419745706,14729856825082474977
+d8ec4fd8-f6fe-52d0-1f0d-42ac0424655a,1872323519,12006528010884234196
+b1b0edf9-3b2b-01cd-9a14-732bd58a7878,494800224,16613689804452946983
+b2073abd-2472-f285-51d9-344bcbbf848f,2121214969,10191540401771971507
+6e06ea42-4d2c-8487-8ee1-d64babe85221,343245287,6175942733895825374
+42ba235e-b7da-d4fc-691a-0d407cf10c99,871546409,9525472785909389245
+7be5164c-4bb1-5ae5-f87a-d46e6ef08c9d,101935731,3041952863458513740
+48a91d96-6211-cbbe-e20c-b34f17f1ca46,2379274480,14722002400513092375
+e2aaea25-98b3-afc2-a96d-e34d9fe5f503,1896904518,17158407310296948881
+994df051-9733-7b13-7e77-3e6806f0ed28,454524264,1697200909035965184
+de13eef0-f06e-603f-96b6-7c3d94d442b8,1453881810,5231905548762789297
+fff30f96-5790-ada9-8750-ca6d8f3a2993,969001433,931022896759888109
+cbfc410c-1ef4-3fdb-4596-8c665222ce11,2074174638,5430406456996312268
+ca4e6954-7824-3f22-1bbc-c433eded9594,2992928879,5681406901201715562
+94716af6-8c74-ddf6-2d10-253aad838c89,3707110066,2732013844103788705
+98e54358-315a-6a3b-9fe9-3306b7b2770d,1402082103,7477664539812091208
+1b58ae96-e648-3391-c182-12990693d72c,1414986227,16769251084894234858
+9c409476-7968-0a0c-dd03-ae6835e28336,253057853,3357821814741255270
+b35105a3-4619-d12c-0257-30dc5ee8af30,3325409857,18336356898896985691
+4e9f4434-3c92-79dc-d4f2-c6f30fd71b51,2653070170,7631006048396589380
+fa484aa1-a22d-e20a-dab4-0f770cab1dd2,1574867533,3750088395311096384
+71ccbc7b-f3de-e746-667d-4116d67db73b,2329516277,15824523090775303271
+b8833357-e459-dced-5c22-fa0eb41b7a42,1527022966,5956506298101030324
+a6243e61-f258-a608-3a0a-11b78a747dc1,40847520,10765512074466153263
+a09ec23e-6d1a-60e6-9684-f412c69a672e,722866338,12070492190677349763
+98b2b6f6-c035-82ac-7a57-332d7f989190,3681689368,14832302124606038528
+5c3f9d0f-e406-85bf-0748-ecb7ff51ea2f,830124178,13116721545583318568
+66c985b6-762a-5df9-4b4e-753086a067b4,1999518908,13579525265138921082
+4b78a347-c801-0801-c68a-5cf189761e08,2213724200,15870944220562226899
+36ef4f82-e069-9062-c42b-78b4375c62e0,1999730466,14943188856843037741
+1a287b27-6ff9-0d91-a281-497298fc61f3,1526529366,2373436170684639721
+03c50544-deaa-473f-beff-70def7c7db2d,2217139446,10519284913473564242
+d60ac425-4fa7-27f8-d3a0-2a33f1464d98,962706352,10967216853604092088
+121904a7-38dc-9f88-bcf2-cf2ffeb6d2a4,4045430772,16352398600144854802
+1d0bf6b6-07c8-7488-877f-fc64cdc1c891,1086881527,10039066883446236249
+d8dddabc-9c79-a63f-78ee-308fd61adc5d,818618715,11599924195015974218
+6ef121f7-e368-cae1-58db-a225be425fa9,1069984485,2887406992128235813
+2c833629-e85d-3c2e-e002-26e8a00d0b65,3875496192,12487957063739561432
+54a70cfc-281e-601d-3651-76108d0d0812,3658485357,14494631064735677419
+4ea5876d-45cd-436c-cc6c-30dff6063969,3307410129,6068390577024785996
+145bf377-3018-2477-8472-0b4cb25bee26,303587753,6642664337388966423
+814f16d2-3cfe-b9cd-f8cc-58f27639f5e7,2608813201,1597621512432484438
+295814de-3bc7-14b8-ffe1-775afa1360f6,3185488234,11600550584662609516
+d81106f9-53a9-108e-3c7b-3314f65002f9,616368311,4919429135297676684
+39cfdf36-cd71-5f38-fad6-b108177fcb93,2795496144,14199099048878507934
+e6792ca0-4eaa-8f31-d75e-18db8569c1e3,3313149904,8625851643184259950
+6feeeb82-6332-e7a7-beac-d9d8b16f6979,4281313711,15596640000131247721
+4679d2b8-d206-1a60-24b3-717d71d5e766,681268240,10393163534490069611
+dca8f343-6e0d-d2ee-6696-a193080eaa95,4129553555,1515353576156100204
+d360c3c7-b4ba-1941-c42c-d64d5300564c,1101003696,12589940217989668708
+41e55d2b-1a4b-aebc-dbf2-35ee8e2a74ac,1110173350,7060491504953862957
+cf76dcbd-0d19-32dd-399f-3b1516c4c757,1317523549,3456036296176176432
+2408edf3-8a5e-458c-089b-8568e01ef1db,2552194440,4362679625702184354
+9a0a4ed2-a4c2-6b75-354d-598afc2aa735,193789001,1668251432188658845
+f901836a-32f7-bc84-202c-5b1405a65d1d,3688882475,11009090582102228043
+f06a13b1-1916-ae9a-1449-609735ff43d5,3673318718,4092360472431459845
+81ec566a-08c4-1ecf-8a00-d79c3850d436,1964922755,14227296274762031117
+52757b88-708b-7919-2781-52368ffd6bfd,476403704,12397019918520865777
+adba98fb-7cb5-1f07-633e-9cf08147e458,1291937217,5153338815428376816
+06f93866-14e2-9236-1223-11819fa22417,2982403924,17840660521701199060
+25da2048-486f-8ef1-ad09-0b91cae79330,3412340919,10817626203674456102
+cf360037-2d2b-691b-5afd-bb1e18acde89,3392511982,4143779709089705769
+b0933c96-9f5c-db3e-294c-384c6ae66219,2870245382,18165637277499013709
+7fe2c61d-eb2e-0513-0c86-6f326ffd279b,4222021447,11346186514349406915
+3fb5f3ec-5cc3-11bb-ba2f-143dab74626e,1736855695,7666769720550399151
+a5d683ff-2af3-94c7-44d4-962b51feebbe,2810831210,17090091268422272998
+623e6775-801a-6445-c500-1dfb942358a1,2350372805,4736034106753653235
+88a1f8a8-e286-af7c-4016-95a3fe2d9edc,4142289968,18353237235728330066
+7bc8d6aa-a520-e9db-0a99-7a55f3c4d53f,453075249,5067895254572922351
+7a9f1e60-bee0-ecaa-0be4-60a3f575b33e,398411976,8657441426560549883
+8f33d049-2118-d25e-578e-4f52602d486e,1700449154,12695608246484613841
+f57b2e44-9479-a1a3-878f-f21aa53c784f,1565198356,9986528078032816837
+6aad3888-9f3f-69b3-7c14-22195a2eee99,766402981,13155611462014656508
+437853a1-f6f0-e2f5-8e12-adaef8fc3d0f,3650080930,17559997884006582615
+5f2fb79b-2dd8-0f28-9b8f-7135665b589b,1004236166,3297385892257189968
+8b978aa8-02ca-b906-e574-0ef83ab6ae8b,2461039008,12106719900557606899
+dd9eb9bc-2f69-7bb3-e8e6-7b2f9c476f46,882779969,9820553403817324036
+a8c4b6ff-b5f2-4c75-3dae-d20d8685e55b,1202044822,15347408906572947246
+8fd4de1c-8b06-9f85-5ae4-737c37b9c58a,3095475543,7963611487208884886
+9bd9e970-5fe2-9c22-0d89-b6aa44622609,2176321984,8234666370810250215
+2854a92e-f376-23d2-339f-2161c5d9bfbc,160521591,13405934046955355567
+ae47735b-a2e0-0232-b396-b3ad892e9a99,573952831,16891857753847568935
+10100cea-4519-b142-d651-cfda6ca5db18,76147138,2961004944923768115
+970e860f-b26c-dd49-ce2e-fc8f9c41e7ae,996479560,12240362360823517100
+505c1b4f-4fcd-320f-6763-033c03c21295,1239067300,10384112309725203496
+2386edf1-7b0d-89e2-0835-00169a31b49e,276730492,15757889582740942552
+4353fef5-14b4-7b48-43b5-22ee04e7628e,1863905510,8249788546786703050
+0dd3c1d5-ba8f-c1dc-cd6d-d56a7b6e233b,3528972672,15085127697313055241
+9d7da732-3ec9-4d6b-13af-20767f4e9525,1591356450,8645590091552452202
+10f3c41e-6a94-68ca-a0bc-ec95cb1829b5,1302783356,16198935657452298335
+333fa2d2-2eac-1e87-ffe9-c5f5513d22bd,3950481968,15974197495125579532
+466fbeda-8b63-303c-3109-9a441f50c8f3,1270667772,10026027674138265236
+f48a0ff2-f33c-8362-788b-944c42f7b93a,3633172047,7944695160646646695
+249ac74b-2b28-33c7-357b-56df2909c22e,734552077,5076986699652007206
+6a92e837-d013-e6a2-0034-04d3233ba0df,2621263315,13231306872733852868
+b4040ccb-6cfe-742f-081e-c3fef5a1ee57,2591137258,13535188096101935854
+a4cac596-4ad3-4326-b445-4665005a825f,117183584,15872889380574399925
+a9928610-5e01-f8a1-5c3f-23b7f2e8e695,973568974,8512810839445684069
+af909a5f-4d21-b8f6-80da-849da2262435,3784933433,1425251506271133796
+4c9937b4-f162-60b7-ad19-4d47b7a178c7,3974360264,2434496423638442155
+d38cdbfa-db0d-eac3-5dfd-08fc119c3b6e,2163788002,2013569082479979116
+6fc68e7b-4aa1-fc90-c723-3ef13ab4090f,301500068,4701784780442716681
+e99ce4a2-2cfb-c7ca-d164-7f5aa40f76d7,2427856482,1945475770144063854
+e152e175-0202-921e-d06d-2bda7a9dbbdc,1293355137,12398573936184691788
+76390242-5189-3d39-b1ca-99fc0d78c50a,1611515062,8294945179502051358
+6d0ce7b1-7531-e7d7-6b0f-ca4fd395acce,2639360434,2521169652848516090
+be1fcb16-e574-c17d-c073-315d473ad6b1,3868008149,4147527576104161777
+376a4eef-7b26-8cb7-81b3-bb1af91e29e3,2559304609,17737032266365327781
+7b599f6f-3ba6-c8eb-70b1-89e5b0d9d3d1,2220264686,12301550360132766048
+c912549b-8bf8-507d-40af-8aba3f25aaf0,2309821897,15427238836527089180
+2f8f9e5e-cd08-0d8f-24d1-e060cab5403d,1062186136,15622107124054858727
+59874498-1a7a-6a56-254d-a86c570a381f,916373666,17540753718045197132
+1ab1cb90-0147-9fd6-879c-8e0c7592b3b0,2467281515,10853854429564688040
+b9598416-c816-0b4c-1265-9f375847521b,2292838326,16864747682481923131
+005f2318-bae7-944f-9516-8ab3dbeef305,3924969502,11152193002369250947
+95187ea7-38d0-a812-4343-531d783e9aa3,4218703122,9225201577609916876
+d2a0fafa-7dcc-9eb4-c26f-d59489000c7b,2264607597,8821943748440951112
+cba527cc-6133-e38d-e381-fd4fdad5b9d6,1301889022,7286748199073771015
+bff5a230-fee8-78e7-44bb-15d588767d53,559291099,3764328827990349951
+ea6e2bf9-7202-3685-4021-cc7daa8770b0,827065723,16374620318520846233
+759d5b77-48f1-fe9b-2873-b3f3b1fd312c,1320310921,16428216375062620697
+d61d5061-3b76-fb1d-99d6-c4d73a8f7842,3849844638,7021891121322743976
+722f2944-6818-a613-ebed-f980d295c703,2444650568,9342611770359959392
+d4e1b72e-8966-6929-d9ed-d64a9b5efa08,446287034,8060518134149449212
+57c28131-af56-2f85-d109-8965837efaf6,2761205585,16876370361733016447
+26d9379e-9a27-d459-0eb2-9568e5cd0f88,3718469490,9624531949663161880
+77391d55-c8ea-58b5-7e15-c2821d13d09f,998679474,13674497361932304046
+f485b164-f448-ce81-c35c-ce5ba336dd67,903894788,3762841841118816092
+1f5bdc5f-0766-fe3d-71b1-e8ef11e88f17,3844174843,4882569754868429465
+9d54ddb0-f7e4-01f0-980d-7ae583ca8b21,1266070328,5448655893282624656
+b8d8bdbd-8062-f1b4-712a-c006ae913a86,3424549747,15254495623410075333
+36c7eb74-ac58-dff3-f0fb-137f5beb0ce3,2828965026,12102546145365436990
+6afadfce-d629-0c9d-9a7b-d3a63178af07,3371837598,5462620171331863740
+76a4ed80-7302-37d8-1f00-759e31bf70f9,3152403671,17805752797338792817
+3d8383a9-1a5d-b84e-b1f8-b56ced48f977,2811051357,6792851188362157284
+21aa98ed-3af8-c12f-ffd8-0e060e376a60,1937670077,6449974844117936932
+29c6946d-2d0c-5758-7056-8e52115086fa,3134533298,17253835704972271053
+1194bb8c-ef46-b49d-d214-9fdcd24f06e0,471030074,7136023374165613944
+1abd6187-5551-1af5-c9a3-05fd18e8f8ff,3498806735,11537118302045176287
+21ef6d47-dda1-5a02-3634-e0a7c92f8d22,637037565,7547999621942313084
+cfe14bdd-f665-4820-6219-2b698e44ccdc,2187874321,15188142026168250522
+5b4d8c5e-3990-998a-5beb-60263dccbbe7,4135685345,13621511811424941929
+09d57391-944c-2c4a-ccfe-1e6ab2d3187f,223260857,16147743099864631771
+0e5910c6-1418-91c3-8bed-9fda75eff16f,1964158020,12636096682193974486
+9a66d58a-f69d-55b5-5704-429a7fc06b6f,1914501712,15411986936575037225
+b2f7b2fa-d75f-8556-015a-383437acbe8e,2914614620,16427210352973687877
+c677a0b9-e359-4960-3401-448070d9af29,2193020986,11396250447606218013
+cba958c6-6c7d-fd69-6ad3-5a7bd9c2dbfb,3812880753,4207698535869147331
+22882c1f-543e-4956-2458-b3b6b74811d6,2295671029,5460369388362667036
+e7676194-eb41-f5e6-8300-66ebf678b16a,2284192987,13566574862361810724
+b8d7a566-f973-029c-6bc5-1d745fcb973c,4035053506,16069072284796934257
+0b02a749-c862-8fb3-826b-7329010fdbe5,3909347386,17444676310526311396
+2ad574d8-6004-4d67-71c2-f1cd82037a20,2461577477,17366117924436019728
+7cd275af-d7b7-2add-526a-d821a90578a5,3332875012,7047310654928057246
+e4845078-9b65-67ec-df02-cd6573a65724,679914897,6742464030346566835
+72003c95-9e67-cd63-c63a-a351d3f083bc,4218874589,15373070085477655004
+f5ccf01b-ce4e-2434-e2a2-769687d7ff6e,3460443933,12647151515027591249
+fdcb0a8d-1db5-ec4d-1107-d10d1c10b025,2234536788,14228104071455202355
+de548542-c8e1-58c1-7079-268044bd66bb,3178344427,8100805560738138401
+f5c6dbf9-892e-7052-1d18-c126b950f559,2684594677,12505870411263747074
+d74e0b42-bdba-966e-2cda-d8588b5c637a,981187794,17107668716218551698
+8595d12d-d2be-c05d-fe8d-9b49b075becf,2353641065,9593394633179331756
+b2ab4849-cccd-bc89-ed86-152c290e718e,2735509705,13032003321305739154
+981fe23c-8569-cc02-38b9-de7cfe850294,3133245419,8643119979323540115
+d9d2c29d-f0ff-fd3b-94bf-005786cbf7a2,999822854,12580257019305534986
+9fff13ef-27ae-3002-c527-03d96ab6f181,1689296793,6100361771453478191
+9d62a222-39d7-6f1f-950c-f138462c9384,2974876604,12031987506021222295
+69b27c65-18f6-f66c-7154-bbd552e8a820,2677218813,8111843722150311583
+48a8d4d4-ff2c-0d6e-e560-0ab31c9255ea,3278034840,7088516087535796560
+f47437a2-1ffc-bb77-0d86-633e301e6ea0,3303917340,6916736013921667799
+1addbc58-eccf-eccb-1b5b-a84e2c1fb572,4248732279,17106727443647530059
+645fa482-8ed9-0a8d-c0d5-dae0aa2e4d94,3781238508,12618448927036984363
+01704553-c1fe-e039-f7b9-e9f2043d9a0c,3451076593,17433021980168181609
+0743a5bd-96f5-ef41-b15b-ac8dee13d49b,4200164020,6093811695097662057
+43b840a8-afe8-bb3e-09b7-b38645bd3cce,2819214442,13982995235302354262
+756a7cfb-ec2f-f528-8f3c-542b003cc0f3,593148683,4846034558169272186
+ed32af3e-bdd5-bb9f-513b-f9e0e26816ac,913951945,16584936746303480744
+f62dc91f-6623-f9bc-f99e-302b1140f6c3,407119310,14455211565460232527
+25620882-117d-3afd-8c50-58d3563f5b58,3169035564,9784197667500850069
+1f892878-5fee-50ed-92b1-f8bdeb84e987,3554479656,258926305658543354
+b3aae401-6177-1d5a-b933-7306e36dd19f,567231295,963085435845969998
+2a857b15-06ee-b033-d3c1-66484ba1897a,3612771814,13345862516462603307
+01154fb8-b63d-7461-cd05-e8206c93f613,3391008829,4060612673386512471
+a67cfd5e-6919-bdbb-5633-f0b92e194785,3693232298,14578631896519401199
+fd76f633-c194-2f8b-909a-a37e169930b5,2812597148,10417934644593154005
+3db12d7e-512d-51d7-be35-7fed5d5b0633,669017199,17593452146173399499
+6d139f7a-ca45-4949-573a-767fddf7364d,4271886498,13214854056524168840
+0af0033d-b1d1-317f-db20-8dc2880f3af5,1996062149,10454143307449701858
+341ae2c5-089a-6306-515a-d336868609bb,2684685369,18189858789767223861
+974727d0-3910-00ba-cb80-fef60f6233a9,534402040,12329298523756390322
+d35d28e5-7a04-405c-6950-6fcfbfb71aa0,1705784857,9014003234812208977
+b96916d6-f633-6e9a-8553-a842fc903b81,3537474286,1949358440219358499
+c1900326-4d15-3d07-cc58-0edf9286f744,205782150,3218850672132077203
+0f617fba-d03d-1e9e-6793-731f12e5b753,3722273409,2376543067081637718
+c04f3fbb-973e-c0b7-40d9-99043843df60,1995081863,15542917945618398039
+d01781bb-b0dd-4e12-cb34-0b31e68d4984,1946154302,1741802684315693283
+27552d64-f969-aa9d-f2ff-b599a2338c65,1764095474,6739067529304828288
+ff6e6374-51f1-c507-01d5-d4cd154f455d,3337687533,1203172274739162015
+a24a5fed-c9f2-e1a3-db47-257cd6893435,547962224,15716449369235796447
+852062dd-cfb2-30ff-d098-fb636883dfa9,2229322135,11170827111318830450
+1a6f6d1a-3d79-3380-3e8d-84ac102fd7d3,2789086600,15882792879020666995
+d06422c9-8998-4851-f3ff-f5613a950d98,72625176,1596951801427614168
+1ba3cf4a-db0d-a187-ebf5-9d6f06aaf806,1289145993,11937254308688876109
+adc3b642-ff54-bc23-eae4-54d19b9a7339,169823998,1091914364851719240
+b9eae578-b019-ce40-cfb7-0e8505c07217,4086696557,15101120573728787585
+703b6792-b566-9c27-1337-da5abd7a9d11,629474820,4194520324542936126
+71eb4250-ad31-f354-0609-f2ab61294c71,4013253704,11873584399195385620
+e60343a5-8d3f-9923-8f32-217adc42508f,1454099405,16338702396246678850
+c89b9ac0-b87e-77a4-7c5f-9fe9df7bc5cc,3467391906,1606067762339162743
+e0ae9909-cb20-fcce-5a4f-a1936e62a659,2935133580,9420634932450761187
+a034bdd5-106a-d32c-62bf-10ddfcf2e59d,2054451134,2891735091804053341
+f9413547-2c9e-67ae-d8cb-9f804dab3d00,3698112740,12661339318086912285
+8e58722f-2ce5-c01d-3588-a23efca3d6f7,965993940,4678968822619710804
+dd582122-9670-2ec2-a6c5-1ee2bcb66013,1377804400,1444914897859439304
+6cdf04f5-9f94-82d7-87e6-f818a65d4b55,87545005,2844607264111466833
+9e27dea0-b128-c2a8-b2e0-d14e468d2fb8,3418050619,4510765168953234553
+72a35946-ed04-ca3d-7dbf-36e87a72d870,3540887831,13624267618003235758
+e33d5228-9fe6-3c7c-88b9-33706cbb5c52,1942576111,576436493712303019
+2ae3852b-d077-d919-3317-5c2a0b6d5d30,3613722215,18049448225473314422
+f81eeed4-cef4-1448-d087-b51316e04211,2468445503,1054559028814856176
+50404941-d382-55d6-2f64-aa3f065f658a,3599348302,12960292687060537951
+2789c3d2-0de6-fd78-bbb7-8b32a8a364fa,4100228089,16566541420787515527
+134a3118-9796-e443-8a2c-4e2492665179,4233418712,5748764134246380534
+db62b0f4-961b-a133-d96f-5cd47bd13a9d,2239314412,13664666363885557854
+4c0c2b85-a960-279e-3876-08da6f0bbb3f,1163528940,9282093882514740605
+dd11635e-163b-5674-757f-53c72d5317c3,3743030508,14299953203021990173
+5c91fccf-e05d-811e-ccd3-044bfbf81723,3587441044,1494323499893611281
+e39f52ba-e910-616d-88e6-db9426c05d92,4069197469,1136529591104882377
+e85f1472-bc8b-a0fd-bbf2-b910185e6092,2809059612,4589006598070195554
+7b124093-bcad-8a31-0ccc-1967766651c2,3691368565,13973354678546097398
+6a5313c2-c101-14ca-5780-496fc0efd10d,776316006,16352699997997852344
+1fdbd98d-dadc-7188-dafc-bb0f440274ea,1426357149,6298528909777934157
+8117d348-ea37-627d-51ff-a429d4d879f2,2478128996,13328403344930006650
+03c3f4e6-0a42-9eb4-b354-18fd7453ea1b,201210123,799422665383350560
+c1a77ff3-9411-606b-a754-5fe79389d1a3,1647453464,625888926775395315
+d766f826-ed13-7fe3-b92a-5dfd5aea2384,3171213917,10593205695422349518
+8be956df-45fd-e805-7643-84b37f9e14fc,2551512181,9085827246678966961
+69faba64-b306-e0d1-e86a-fefa13c4adde,2170272738,9132059205838059304
+8d21573d-1120-7928-b24f-0955e38e150e,181176341,731809984442400637
+8b675847-ae39-6d41-9e0d-1e1af706b09e,1795090205,1829786371937611257
+ce60c0fa-b3b0-1e2f-a35a-8b01aab0fc9a,3765083924,18208862429815721216
+d0d964e2-e7be-8b0e-69c0-419951772564,2630897674,11204580994284313156
+00e81116-ca72-a1d1-5822-3fff0955ab20,2279155569,12486360893341398441
+e63f69e9-307a-029e-3704-c7578ab20cfc,2321955482,5988633629846776843
+9ca4593e-6ab5-5e08-fdd4-63d91c8ca0a3,2482435240,14889949435655086466
+99bfc0c8-cbca-c4b6-a6db-e740562fbb8e,1101357744,4431618968779769019
+664aad8a-2012-e3f1-1a3b-d6dd39c446c8,3230070048,9407250061013295381
+f04c5f61-d4ed-3a10-cf3e-76a257e3266f,1731299948,1750900642047986986
+d018e9cf-bb88-d06c-749e-6da0df90f216,2170062574,18426921548787101380
+50ac1a1e-d50a-e665-1f49-9ad647351a4d,3107857929,7068841833019143974
+ddcf03d9-3a04-df16-1ef3-624c91a8db5b,4078453469,4118803774666775846
+233472e0-25cd-295f-b384-4b22edcde94e,2131937297,9986539561309091504
+a35a0e0d-0664-ca7f-2bd3-468c757b474a,105035701,10247199380872102746
+377146f2-3852-82cd-795e-51e634bd15f1,950131882,6426397864871731363
+cd4de27c-e318-0a97-fcbb-085f724e3c76,3471854670,11516220006514119078
+bc67b13d-6f56-1439-ba80-37ca250d58b6,3824124092,1271369897591203368
+b7de2435-a5db-e766-3324-b180ec45176d,489732580,13956389109171708799
+1da3883d-b39e-00d6-822a-d0801b14d20e,4184979089,18265264208685121096
+7f37ceeb-0000-0881-97eb-b5970eb23e6f,3154329889,16098306489004605090
+d7395049-567c-589c-3607-6e8394cf9575,2314151680,6327549534888175918
+faf7f0c6-e045-5b66-cb09-9d84347b4845,3770805708,3051751537747229886
+42bc1ce2-23f2-0b5e-b352-1bdb6eb20f66,667370306,17882761168285840799
+77c75d78-9823-98ab-4374-aa029441bfa9,1794588300,6434306941683803370
+3cf34c88-641e-9415-582a-dc674f47b9e7,404645779,13380375500539872898
+83bc7fd4-8d56-ae05-87fe-548332394e99,1517371351,12846499186350860113
+8e06f371-d7e6-0174-b7a7-500fe8827e03,1378978215,6816176289910484606
+bf2c98c5-0fc0-b838-5a1d-8a6e683dc987,290665469,13985081145223601885
+eea7e73b-c15c-84fc-d3f0-e1425183e329,420532046,3666842242266295826
+e2ef2bee-5125-25a6-1325-69aed786a09b,405720369,2203134772623414818
+a7e52f02-3f94-5923-e90d-6dbadd493ece,3591118045,12993133775117783100
+37f8baea-d1d2-e127-2aae-140e7bf7c6bd,1855699180,3384812143140817584
+9d8af3b0-65b5-dc24-4afc-779bc35a1135,3032198497,3811600656836624992
+f0cd427a-15a8-57fa-3c1a-2c2fba45e5d9,756304301,10064146177270300944
+2b48c8ec-abcc-b63d-30ce-2f2116d4fd0c,2846863749,8791688442388134375
+85ca19c2-4761-ef56-6143-b5432a142296,1000383787,1454037187918734929
+c2d8b443-7efc-18c4-7029-cd481bbd5531,3438509026,8577500858555672533
+6602c3b0-f306-a446-9f73-0d1f1a575cf4,2175139855,11650258395904780349
+ce8f650a-6633-3497-d53d-5a9150dfeb21,1107882655,16663422746760861761
+94f618e9-d77a-92c5-48e9-8ce5b8c76f6c,1323162724,4136362274624513482
+238be16a-0eb8-26b0-bce7-9f401c298337,2271739552,13094066988568242199
+753d81dd-dde2-16c8-b4a0-8d0acbfd93c6,4138202889,1544055436285465466
+0f2b3055-3155-c4a1-d9e3-941bbebf830d,1450329177,9220321799180379992
+40a30316-d420-7a8c-41b5-db2bad80c80e,1399125074,7294068897432149454
+9b582f35-d5b3-3373-e0a8-83f8dad2ef98,1129239013,1216789642936612809
+6876b937-87f8-2593-f0b0-f48ad0c00296,71640221,10463464058368792545
+7c2d6c0f-2a46-3250-dd0e-5c8206b1e10c,3207187825,80230937072037094
+695ae65a-3195-67f1-6340-8b5ffa395f52,2763038183,1808353627266563325
+426ba6d1-20aa-575e-1819-cef4bc610ba3,3868990733,12098559583446955090
+58df4e01-5795-b376-db86-026fc4ec8fa4,914022823,10309186809621428368
+923992e1-7eb0-ad61-ac3b-9a2a9d8ee95c,1174978626,11190260116875588981
+00760701-546e-7ded-aacc-e76830a75acb,766363330,14126488774547753102
+98bfe848-9851-12d2-8931-acbf70e7dcbf,1383631431,1946584403058977673
+d317817e-85ac-6419-61fd-170c474b7044,708661629,16475627068426685030
+d84d6495-ee2b-6e88-eb31-4f1c871fef3f,3167247191,14744177259154552748
+fa96ded8-0e3c-d9d1-55d7-c4b36dbb9e50,3683929273,9440085453607995797
+31d4aece-1aec-85ed-8467-d60919542a48,1264172902,9494498085095568044
+d774c60d-2bc2-cf53-16d9-62cbce8faef9,223568329,6508758996334413952
+229977f2-8898-86ee-dfe3-6818791b718c,4043267522,12284880133521488263
+ecb8e2ca-234e-f223-444b-3b70af820c12,1027546198,8538601689308055725
+923a014d-02d0-bd5e-faad-c32f23009a22,2989882607,4074410581921118037
+879f92ac-26d3-0f2b-1d47-59e0f1f094b4,3439125962,3957545656366864431
+5ed6c29a-0dd0-14ab-ef7c-98978d5ea3c7,727607770,10045745878811642168
+f2234ab9-c4a9-3ee4-17b0-182a396c7ee0,2780059001,11993052289088457893
+2b0945ce-5132-f165-9811-a9378223bd15,3087562758,5377794574797227247
+0d4d8971-ca89-2dba-cdbf-119148d3f4a9,637078506,691191820674511508
+07c24bba-8f2c-a8b2-b217-3b34f0607367,45141696,3738943659076244592
+4b901c1b-4295-0460-7705-0dde6c3f9fcd,2843233902,10132388639205613385
+3915d998-efc7-0d09-acfc-99c6bc8dc727,1131170289,11719810117595105640
+445f030f-2ce7-f054-f45d-e998d939719e,3470611233,7083911956350342540
+ca368b3f-96c8-3721-e13f-491545f50f0a,2139252264,8575743268502053634
+ad0d4e04-234a-1a87-f851-4fd8a1ee48e6,921639611,10713556197252610618
+782abc05-933c-2327-f4a6-256ea129d5c0,2196754727,5687206008956835072
+f57004b4-b9d3-97dd-3a86-7e84c1efb643,1116722000,9472865489174623444
+d735214c-627b-ab0a-84b6-b402b73cb2c5,1986023816,13432230445683633663
+c4b4fd41-dc61-deb4-2aac-ad465ebebd31,4167748433,2542095843625015315
+12a57237-ba93-6a4f-7d8e-dfc5c2126590,1169812995,11263455577508152327
+22f7f33c-e06c-3776-2278-3fe9be5f86a4,4269209393,6837565370508459636
+887fd2a7-907f-b2f8-a788-6bbe0eeb9684,155092856,9987019509591063278
+23f85db5-8230-daff-609d-872e7c5ccc90,237162368,13988500500995642219
+0cfdebc9-ad16-8951-32d4-f9cf979bcc0e,2947847139,9519488921222974795
+4cec2c49-69b3-17ff-91a8-d6d132f256fb,3162210587,10282080894828364312
+d293d4e2-1aea-9ae1-1307-626be3f84133,3486767797,18148606903735527516
+9ceb4966-5232-2116-af81-0a68c0bb6cfc,1620784940,2317330272213014982
+058fabba-5afc-ed33-3ceb-7ab7b2d89397,1713188389,16595124640328582765
+0e7ff2c3-024d-72eb-8934-4b29b64d8198,1284090306,2838800553125070527
+6f63cf4a-8eed-499b-717e-fa29f534c4a9,839451278,17638937209038451450
+5d14c331-99f0-d1f3-0ca1-518b4054f8c3,2693860135,15639366886579999623
+b9d56d72-e116-8528-447d-b09267ba2ff0,3979269778,14642234308183014485
+992a2fa9-877e-18b8-853f-23e3ad03b968,2260382562,15959642117870725798
+dc7ca2bd-905e-0f4e-2516-160ea104ddfc,1895230078,14787743741351283793
+46d072d6-154b-b6f4-ecc7-851eb79f7d9e,2280547051,13859958626862869377
+3ed65210-03a7-b6ce-3d45-bc45006ede46,3674632233,11148650709749404362
+9b080109-28de-a6bd-7cc2-3a12e273d5fe,2410754930,932540366801151829
+02b44731-0007-efca-95f5-463df42e7b1d,425489873,13090431612504948919
+1b048c9a-ff09-bb68-c377-64774e289655,2367204161,7171400133368944415
+2b0891e5-8c66-5e43-96d2-1154c0816a73,1728713003,11684767387241024520
+8c85a357-ece2-9967-bf97-de10b0471d8e,1013318251,1284109015718769311
+4c5042ce-5ee9-dd05-37e2-99d9b6cdbf98,1067372533,6866308231393172525
+ec9a684c-2c45-f398-126f-56ff9511c728,2735148991,3243573103701866357
+cd772705-93fd-e4bb-1afa-c365c66dfb8a,1682942434,10010400539208109502
+1a9e176f-beee-52ac-aec5-e576b5d9d07f,1348613190,541623794878730396
+df5681cb-1436-bfa4-315c-7125e879bcc7,2386814229,13727374884433367505
+7ebd1bab-b6cc-16c8-0bec-bf3fa1b7b47b,1761220980,16982989052687890979
+e8320cf3-6ac9-91a0-56eb-9817f209cbc9,256064661,5894073650341730801
+dd429346-bb9c-a181-fe31-122fc4e3c401,1753134701,9523540517515565830
+b16df3be-e337-8b6a-85f0-6d7bc50968b3,4008017453,284392032227171760
+f9c16af9-f9aa-c303-07b5-5ad24ee70b84,640241391,14445519977820466703
+d3a9b816-3de6-dac4-613b-ea86a793fa58,3973924392,8685391237174361329
+3070f474-8f25-f99c-eef5-86b7111a2d5e,33567370,2229300480279245970
+bca5ef23-6ee1-4a01-7253-2f2d8b3885e0,1582430496,7553695636635775720
+37d7f8f7-0d34-d151-2e24-5dfe97a859ce,2004288689,10771265677124622531
+82f10abf-55e1-fbdf-41e5-83a16cd57c83,943235640,14225667812343645672
+d0296504-b0d4-4869-eced-5a22fc9dd21a,1334779542,6674452298818128679
+530a2bb4-bc49-4fa6-6702-e425200b1720,3619347152,5852241434711821372
+95e40e08-2480-dd17-c967-d8d2383596e9,686565550,6435318682603496818
+95193d95-415f-fcb2-9bfc-44d6dd24e33e,691024764,6581958107190046002
+6dde038f-c8a2-9b45-e6e8-6cf569455c2f,1239006258,9661652874926225239
+c0550dec-825e-440a-3bda-4c733277f2d2,2414728574,13527794959915623644
+98cb8a01-fa4f-9d8d-f153-a2441f0d6f1f,574328142,11274857675609453711
+9d135c91-f9a4-97c4-8693-ebc43a52ae1d,992631418,1391499954095469490
+cb2e18c1-8f0c-330a-ce52-4388a2f12502,2682778232,3532252093554522192
+b0200b87-c9f9-2bf7-dcee-c28b7d86acf0,310663705,16359146745280647092
+1c1ab5e0-715d-406e-23d3-3dfba73ee457,1683158192,16826071526601953546
+6c748d16-145a-70e3-5ea6-1eb08c4ef979,3571719770,17277719329471526586
+be409fbf-e90d-7d8b-fd3f-7d79784535bb,1479761250,11275627645824827715
+023d341c-c37a-3b25-e5f1-2181d8837d61,549504835,10836829016151303309
+64034fdc-7539-942a-02d6-f88aa09b3dbc,3007531438,6921503361045750918
+2610a110-8717-e9a2-8148-861b3486f3df,2397481971,14490126542485548431
+cdecc8fa-b325-c1cb-9857-78b6c2f443e0,3355761697,6065112208635683269
+1e0a3cab-f9ea-b2a5-cb55-a4a2fff9a049,1056535663,1792216872535212461
+71fb8044-acb1-9903-b0f8-c6a6d7c313f9,2998843033,8929439898681377536
+93cd545b-ce95-387c-d97d-616684a0e9df,1355932287,2689339275926479941
+7d6e8724-6234-987a-5ee2-0dee1896aaa1,831097902,14823630910889398514
+4ea495ab-2e29-a4e2-d2e5-aa0c9c6dc4ca,3927691424,6807969241672980987
+46d2fa38-b573-3290-2707-d2667e4f07cb,1490253868,16431872185134208295
+d5855c1c-a1cd-2039-b8ca-3a285ec02c77,1588795305,5373096687604112371
+a45fe375-3324-af05-86f4-4a10089cad2c,270525850,5581581209548734086
+8298beb7-a5f9-e04b-513e-0ad0cde36cb7,1796776778,17407299856517989656
+ee9c9ee4-073a-3be5-8e5b-dfa9ccf459b9,4268952062,15125575738036848517
+1cb6832e-44c2-4ac5-41e4-a28d8c058879,4273351209,4567468843390133681
+a693b7dd-089a-bc3c-2c05-f15e43d57abd,2971223580,16820482449832413806
+5fa2ea74-408c-8297-7385-33e24010aa79,2333108996,11750034931342155702
+5f8681bc-37ea-e961-468f-85c08ffbcf86,1649574304,10697826844310358921
+56567721-109f-9843-6ee1-5b2f11831c79,1997668967,6780934744291831550
+da429842-1931-2bdc-1990-83bc0197e993,1714209286,18126911765382327907
+d714721a-dd1e-1e2a-d198-3ba77ce92e4c,2472427270,3338243914812861162
+9507b661-5dd6-8ff4-3ed3-bdf1d3f987f4,3623503367,11944059041434368867
+c1f8db17-4aae-6857-ffdd-f04aba18e543,2475785670,3900471126006854257
+f6df782e-a1df-a386-ca56-3ac8cfa8e46f,3653400308,4386232063612446386
+8f3476f4-02bb-718e-d505-e30b5aa9b77b,1629090441,10041435143541810055
+ed5fb33d-bae5-fa65-e19b-d69e35f10045,724867378,4295096342750367575
+487bcaee-41c6-45ce-a060-a48a768e96fe,4240533775,10913036397407764988
+70a2d15f-db43-4bf7-e4c0-dbc4fcda4855,3888397313,5788710583299407299
+c5a0d700-9a5a-963a-971d-d729104d69c4,2934071726,13624664260141274788
+7ac1cd95-6053-c83c-a5ce-224a72348228,3820271527,17748507621222434542
+f18023ad-696f-35ac-6ded-19f96431cac2,733342606,8415420203413908389
+b83fd6c2-e4e7-67e4-f7d1-815fbc148416,3107421972,9306942897621312417
+3e40f7ff-313d-064f-f0a1-6b52dd581cd9,2020501103,10268312820514924471
+c5bcca9c-785a-29e9-5f3c-e1f73592999a,3018492836,10722647445938201180
+e4b1ecf4-c264-19c7-4861-57858d6e6aa2,843537702,512791617455709365
+0f918a00-51ca-128a-6c3c-a7f87e526f9e,421834641,14788031195732319
+38909ec2-d5b0-2ca2-d98e-a61fbebbe193,3838505831,18181382369432464726
+3edb1cfe-161c-503e-ba9c-d60503b5b589,3087829038,680233302661015517
+efcabaf2-e3e6-d40c-7769-994f09b7fbb7,1436978076,11257343525931155949
+aec787c1-49e5-9354-d8f4-265f77f3528e,1958168170,15247881073139998310
+d32a9578-fec9-6533-c1bd-583b1d0a6ea2,2619972757,2251477793583435101
+fa0c1fad-69a6-6b5f-b130-11c35f5bdd15,42957897,14391567548353602180
+491d3f16-9c97-ff83-b9a6-582fdb26349f,3313827290,6225642435663630878
+2250c95b-e713-6d02-e35a-924d327cb2c2,1098588811,17214784399953878900
+1bcf0b79-ac66-8c09-53a8-f54d76704039,2326110232,673921487246140088
+2b933fb3-a815-d11a-b017-16afb64da7eb,3679894486,3675108513717697953
+6d2d8e4f-4658-1a54-e6ba-cf17dbb878ca,707163188,12176846765491171719
+c7ff69bb-91c8-1171-5dd9-b9f4a15a5f63,3756068079,18355117711356501285
+92811cfd-7765-f6fb-5f7b-08d7b09fe4ec,3670538839,13384960274908848855
+f280ba7e-a827-f1f4-8567-8f8bfd10b369,4049707775,7013932221904043057
+17c8efca-5457-bec4-d2ef-c1c4b897e424,2978577642,4564744561609368655
+20255757-886c-c328-0855-90d74558a5ac,4076321705,2105135131363950768
+3bcc87d2-1854-07f5-0dcb-cda57aab3739,1241597627,18219123390951431168
+9238a124-37c8-d2f5-6ef7-2598bb274d98,1623598011,3714335750229721969
+801a5b07-e968-d0e3-6178-cfd37af605d7,3199496230,4427860767291802964
+81ed82ba-157f-b985-6ad2-370f4d8d3a0d,516374783,695749713476476731
+dabee2e4-a691-46e0-b294-860cf77f8648,3081096015,9543722528396024514
+6aa574ca-5197-47f2-97fd-af1541b2be57,827625225,5077334066320819774
+d5ef149c-775c-3ecb-230c-50ca5d9bc9a2,3329518399,7904844527930141821
+77bab4b4-ffb8-5492-26c0-383faf44e21c,886024765,6682718081927820794
+c3355554-9ac6-ac02-88e3-efa4a09f5bcd,3339186773,4983025431386082
+04f4b9f6-49b3-eb2e-3d76-5d248ef80188,2139453071,4054665879512914096
+16697292-5242-18c1-d3c9-f3197347d632,1971262045,11478835627966337565
+abec2fa7-6183-93c7-1e74-bf7af0a30159,2438535917,13888562792613210191
+43bff569-a4b9-098f-415c-9c542f8327cc,2197031536,13496388696984445656
+5ff43d50-1e05-0359-3ebd-2c6080fd4235,37614973,836537936302951619
+2f2b3599-4b78-2136-7ad6-e4ca1d0910ae,2354254868,2604508165489409489
+e5323688-aa13-d663-34f4-433b64220878,1758424745,16253863634827588183
+211226eb-f385-af99-693e-2c3e502128fd,990414293,1560613590608768216
+a6c42631-6d5c-fdb4-8bdc-f1b1bf23c56f,3514838534,251133487703009277
+05b9699c-23ac-cddf-1aea-48787989e656,3736165005,14602153574190291618
+296bf865-5278-02da-89da-803c75ab250a,4257175116,5324863120145349219
+12c2dee3-467a-fb0e-5764-c2e805162fee,3047562986,7250464446607964415
+722b73c4-7659-0b39-2778-eecf85bd5f0b,1751717872,7125907742520997900
+76729668-73a9-d3bb-3809-421332efe891,1775863261,11410879403404436186
+1b587a89-8df9-198f-88ae-b58c988fe8a0,3157421240,17858514452637007474
+d5d64588-e935-1c7d-3457-ec8f076e5d28,474520754,2995965862348065277
+2d0a8362-8613-18c4-1490-b4a35afa4f98,861129487,356409458589099895
+7baa1c52-233d-446b-9773-5c60c812639c,377109013,17888085647287921731
+6a04ec46-a687-d284-2df1-cf581e25d864,1524044418,6645999372096157886
+8a3bb567-1371-ab48-c495-b3a1802cfb71,1453996430,1195975114015884270
+2400cc9b-8ba0-6dea-a200-769a899233ca,3051210062,6553218476584849999
+092b475d-45ba-7ac4-bc35-d2f7f3a47d8a,2633940936,9073681191588144612
+bb1d28ef-f04b-dcfd-946b-577393cc2d11,3055654042,13857262388175237571
+a31fc243-7963-764f-a9e1-da767a2cecf0,1782102357,17212699909284615867
+682870cb-9ab5-b44d-92d8-35b649d2158c,4113303369,3456725819641001003
+0b99ee6b-9cf6-0b7c-a2b1-3ad4f2abdb10,3101253036,5452651322425959745
+c88ad7d6-3708-4d0b-b849-9e91f20095bd,2390886623,13336701254787249972
+08abe812-7f46-c721-8278-c883b6f0302f,1718299156,17613517268323755813
+66edaf12-fafc-a6f5-cf2f-9914162ccf74,1439872977,8977521863338601799
+b527716e-5a46-48a6-4333-42fc8e10e19a,610555823,12637274452491233319
+fcf4c4ed-128f-e2fc-ed0c-78d1e229a015,3714253652,10002810432030564662
+a8e85bd0-f666-98d5-0090-9aeb33f135b2,1944476865,18230669967317434426
+dc8e2594-4f6d-1e04-70c8-8c7f3c262728,2011435373,401009155937127003
+565c4502-c899-4612-99c4-bf70cd7c4752,726301931,9013321162031641099
+e5865e41-1e02-821e-516d-6ea398f5795c,3094286952,17055095886959993660
+89027fd0-2c56-e71b-2310-d05df874fc41,411903564,11169429714847088062
+45efc854-68c8-a10d-976c-26b2b61cf8e1,2385432853,12812553053810862176
+42513e67-bdce-dbb1-d960-6821a1342a63,3640447062,6645513231280353401
+5cdfccc1-a22f-3c71-4fac-739f9fdb8ae0,4039513622,1469569549109658489
+763c57a8-5ded-61c0-d836-3130921ed5e4,479228988,8562272521278130624
+0a096ca7-9745-b73e-ae88-cbe9754ae547,3526334518,16927247222414191944
+d36ebf63-d0c6-6d27-412f-d8e806cf2005,1325091898,919549504790693463
+1a17a270-cf36-3e82-0d73-e7228c2351e3,3490407178,9070615817361763186
+63e676a3-e72d-38d9-4f71-508bba4dde0a,1157854806,14063975701811618851
+ea868d2e-4dd7-723c-8b76-4820d3909527,3677632969,3027741769391676172
+48018724-f25f-b71e-19cd-6780cee8e2e3,2012263469,6235452589409108312
+01513d3b-0923-986c-3886-0dd3ea9ead69,3243318703,10269962368597245286
+0f9f6cb9-88f2-5e9a-6133-2d4d66f4219e,2479610379,15724891630648908278
+1f1f2975-fc4b-8759-8000-004cb4efa336,1364924494,2099882639679028121
+d29c0864-3d57-d8cc-94e3-42bd95b6ca89,930541489,5162305285433936367
+55d06191-4bf3-c2a4-eea2-a2591b26f8cd,548936747,4547372299472749115
+b95979b6-0d60-69a3-1d9c-c956a1f6e820,379112043,8981710997505022055
+fbfc9605-7256-a78c-2c7c-cc756e30b783,3416238102,16660588458640090774
+8ccc3645-20ee-bc08-a338-606527922354,1430443777,7431321020984872348
+e5c0eb8b-2ebb-1111-732b-4bbe33475867,141714736,5092421449070303002
+96ac1c3c-614c-d2ba-c71e-3822e511b5e7,1177978779,9719155180151627565
+60629f7c-4f45-3c3e-e1ad-ffa5e9442103,1582020232,17635532765050625480
+c8597ef5-9e02-da31-05ac-acd170fc8f25,1450237023,10539328098186982266
+cfc7240b-e3b7-e299-421e-d55402302c7c,3065875555,12141470294439029501
+f514c886-7587-454c-a8f7-416b86522037,2949011109,12963279119730149912
+33660b20-4c54-a89d-944d-139a6595a6cb,2182986087,3682582484134954261
+82040974-4c98-08c8-6ab1-6398394c149c,2093910543,2522695682239053712
+afc81a61-1415-4f63-5054-8ccbc33f7117,1065790550,13482055272089266686
+34251611-38dd-3eac-45b8-cb13e7b30423,3963818821,1901984426290441858
+40ccbaf2-e812-9f30-963e-8f66439289cb,1103665251,5766724216219574446
+409df04b-4db9-da41-d7e0-b0504f9edc9b,3307724783,5060988298784182721
+74064f02-660f-724f-a9e5-67be54c2786a,2840498622,4135234816685005435
+3f0f7e74-c474-c8a3-5508-a49e03951621,2671492909,15389864073549479930
+3711c70a-229c-44e7-56ce-d5e2394b7e60,3295971693,11063941770620800780
+eba51a68-d387-59d2-526b-4efcaf6a9af0,1243266340,1437091596258939231
+98c1b97a-e3e3-48f0-c031-be27b2e48c10,1978649150,573855777627232153
+8428c0e9-9d60-f368-4102-9478566b5285,588428246,2333748061861555142
+bb06e0c4-56a0-0c24-2032-c79ec2ba4d3b,3063948423,10650210620486787119
+d4fd5f7e-3abd-1933-287b-42421d75c40c,400117287,11089176272961044129
+e52a6435-33f3-9783-7a81-b95a77459501,2718467019,2070624130698881304
+863a3588-f32f-ecff-ad35-efce97dcc2fc,2281080781,10111757446302737057
+7c2f536f-a75a-b80c-6a34-2edcc81ed450,3969564515,967530296608161655
+024d447e-4192-7aa2-3d1c-dd6bdc2b58f5,4235650888,11121507404854387561
+ed7c95c4-1b7f-26b8-432e-5006e5cf10e2,2618866417,7154297827831820582
+be96ef78-56e4-0fd2-bdb5-e38e892a05c5,3660827827,1232092938876038813
+975466bc-54ea-8729-0a13-429be2f576d7,3000263125,7436474686414341109
+07fd2add-668e-7170-7914-a4d7bc1d18d8,1932907697,16656174363426022040
+197df38a-c5c2-39bb-1caa-aab5bd9f4215,256681387,96108159975036225
+c6c7379d-3bd0-ebaf-5225-b0c631041972,765500311,3261642075079304983
+183baea6-9d0e-10a1-121c-187ec09bdd71,4268369574,1880437351536389329
+564380f7-cef3-c116-86ae-d25d6a3fe89b,238563351,1306426948640794719
+27776391-1e85-bf92-a201-5601e300b2d0,4066227173,9690761185154101615
+bec7c184-86aa-4768-b214-fbf160838bea,3580902875,18187898012289589299
+e89826a6-9c29-c03e-942e-108c0c727a6e,2025777067,14987607368329791489
+208ebcbd-21cb-f6e8-25f2-d61fb292ee1f,3545478991,10825212145628733142
+5b0fbf33-db3f-feba-95d0-d0fc50c19f68,1198322504,17006215872101053227
+f89cf483-4ee4-229a-b80e-f0d6b1e635fc,2865660804,14593755185713464061
+44f2d5bd-edd6-baf4-8134-06757e1e98d0,3361666543,14293366441286477716
+a5a64b72-7ae1-8230-76ea-bee8580de6d0,3547139721,13946057993081437553
+382557ec-2788-1a73-7930-6426741fac13,1903281975,3349454679368263164
+aa028daa-e2c4-c289-613b-9c68ba048abe,1266304489,4988853585219922698
+9f10f514-a959-c5be-4a8e-ac1949ccc1b7,4012408968,1364192991732018787
+195cb462-16b6-0c01-32ba-7ba4a48ff8f1,4015904936,11824472554495069578
+5bd80be1-07e8-73d7-589c-3945677d4f8a,2439366627,12888763447156368694
+5a9abe5e-d845-866b-558f-6f65eb8f1581,95829029,12568516368401063500
+1ed36b8d-657d-ea9e-513a-87bcf20b06af,3927483193,17754374394794278168
+79ec9595-4a3c-a8ea-f628-98b8149a5763,282928936,4904777083699395532
+82d50673-7811-25f2-48ed-f1f2c09c36d0,1384132598,16911631716361439640
+6e14bed2-73be-312d-a3db-1d8c80c4a7e2,147805569,11141106455729445774
+65cfead9-28bc-d16f-2fe8-df4a4e54ac69,3666996742,14689153445538491258
+59acec52-3538-7378-147d-bcf7f6a7acd1,3431690585,7068731286725062081
+0a18b7c0-179a-02dc-3f9b-b8cb6014029f,2239382253,4384916546945953750
+4df94e49-2a0d-d28a-57aa-5a8b1076ebd2,3258613438,2415563519147439477
+befa0ba5-0bb9-5ce6-47dd-aaad50120884,3096767657,13949326879259241934
+c00d5fc5-4eed-6875-97c5-d504a5249aef,323835954,58650581604759829
+c06a908b-b7f6-a153-d469-fe9017ce0997,428606772,6699986308109981591
+a1c69435-87f4-ca35-9e24-07bd5ea72c26,3145193612,12317363839498706259
+a1ab8b4a-8dce-8f5f-1960-681e6b2eca85,3078022335,8376659537435864285
+9232b688-2612-d28f-69b5-928e62b929a3,3572768885,14614772107436729198
+6da350d9-2b34-e0b8-2855-66c0cdbd9f1e,3331929354,5888755151701247491
+861a9db8-1f50-fee5-3f6d-775e7d92b8ac,790818131,13842744250315882710
+2a47541e-49ff-6e02-a5f9-d2564b68fa65,1945210592,6107969090999963611
+f3d6bb67-e52f-de8f-d192-a90d84e065a2,1521327770,17585451427228479231
+f1d3fcf0-08f0-759d-7e11-b2d9409f049b,833419380,4344609833249025630
+f7b54676-7035-38c0-e7b1-8e9e2738eb25,3987778146,9641929962902470177
+8bc09458-a03a-b3b9-f993-d60cb9a04d58,2495285602,8512667571002635011
+7a09f1da-37aa-5033-4cd8-ea57ea87c0a9,3965674026,4900789329199015439
+10aa56d0-f3cf-9a03-9ead-adfd55c3824a,470580920,15980967701076354543
+d8c5d9f3-bd79-d13d-deb2-0d3b953e1821,3354060595,16594337346243818605
+e0df86e4-f75f-5950-265a-941a195cb2f4,325916821,1261992016646359657
+e7b38c93-c799-a845-c09e-3a862d2d3439,4142711014,7661160559070150409
+f34ed0e1-4d4f-b4fd-7982-3c286c8a4c84,3524396368,4328279998667148710
+fa64c5f8-d1cb-c39c-3f07-0f1c11a3a698,4047084258,726514949393219207
+f781fc5b-c22f-b802-b315-894a39d8f21f,22111385,17252105451111895852
+cfe465fb-d88c-f254-1881-19278d749d42,98092531,6140530861096964611
+2cc84170-dad0-7739-e5d5-fc7d7986c92d,3527039841,13164248057910666745
+ed80df7d-8f1d-3685-f3cc-633f07ea652f,3308123593,3038889500254428738
+9ab7e920-3b62-2bd5-3d84-b4cc8e86058e,1225158378,8908167139260492150
+7c914c6e-fde0-6817-ca63-097a0af4590b,4123695484,6134967738482995648
+06da81ee-1876-af24-3f8d-23155ce4c256,2754319744,11422939124072122968
+bbd49848-067b-9192-6292-9297d0cbefa3,1977043240,6198045764720220690
+aef078d2-adbf-4b93-8f11-18eb80c515de,4275672309,30017554109692280
+1434a84e-f616-dac5-9565-82d2d0fbcb83,2468301852,17632574172723963276
+93d75020-2a02-ad12-90fa-f2d94c440b13,622640913,15602656855167888824
+54f0067b-39d4-9985-78bd-b64d28bb7f5b,2751385691,674490277459628188
+b9571024-d51f-67b0-18bc-91877c364ff0,1142207121,13256884726093821778
+6c64a085-68e4-762f-8ef0-3a16a6e3f888,2387196008,11440181044039142380
+7061005a-a901-8ee3-f700-51a864739ca9,175378199,17561204073904099710
+c9728ded-4fb3-9450-c058-48320834d29b,3294592421,6529456617271061844
+3fb54abf-f532-5fc2-7fe2-70ce9134a754,1051231596,3262447994062448776
+223ee97c-6841-b7d7-17c9-7e83957a8f0f,3006692686,4872971082796364028
+77182ae6-1c35-5f4e-108c-a4ef8f070531,1128035424,4602830915589605319
+741ea092-1337-a939-f1af-adeefe4edac3,1406435953,15687788429496130513
+e3ebd96d-1215-d0fc-8724-5a9d8b28ba8e,3344885625,7834552552951223362
+eb5ea21e-ed40-e0ed-dbd5-156cd006709a,887172603,2866727081405670857
+e3fca2b3-cbc1-e89d-3027-4063faf7f8d1,1121562342,2346779894887786293
+d159d6ab-7520-16af-cf35-b1cd7b51b330,2421748016,1513308862829571002
+10eba5bb-1927-1b9e-445f-d35bc4346e55,2488549879,17580558037063051837
+d615c56c-850b-e9cc-f3b2-3f754b8a423a,782836364,3049500923303513369
+5ad67c1e-d11c-539f-fc72-179a2e206f06,3892817191,14193528474720565444
+34b4b124-e90f-c993-0e84-905f6077318f,1657181799,4421456576107369287
+75d68c1c-749c-8257-4a54-4df15c5064ae,790830442,3234204339143683651
+c78b4eb8-92b0-582d-f275-12665d775f10,1331724077,7268107427786435724
+0d5abe89-57c9-8777-e583-bc4409923c5f,1607587951,7819680067052041696
+370d9b6d-ebd9-f53b-afdc-1bf7b477457a,1406896604,1977684477265781315
+29e707e4-c670-b731-74df-3f3c27583163,1222215338,12497427645684626772
+8d268ab6-23fc-4a7a-a76b-f70db775e3dd,466739649,13137287016915658650
+46d31efc-e710-8226-6e32-120d54b60f2d,1623768102,6129293271064883394
+24734f8b-826c-4a36-4665-3ae046a8affd,1428656967,5439154030826001174
+c7ddc703-4b0d-e9a9-a61e-7ee1c9074812,1649111737,1668011316617305410
+e2c56896-06bc-76ba-839f-2d1d8c0b31ec,1026149440,16973989759378155093
+9283ac15-ad48-5eee-655f-99c2d14b2156,912960788,2894728943748436272
+41945673-d764-c467-b955-b60a964b4ca8,52167025,3472425755621557162
+ad3e7cfb-634c-e63c-6ba4-5586c7698b40,2494907458,9359552260545254627
+4e5e2d24-2609-6fcf-b6f0-dbeb629de718,2842387849,11693849142903242691
+e9f6e910-0865-e0b9-6d4a-52d2a294d62d,293226419,13451090992527783745
+289053f1-ec98-3704-e8f8-b80e3eb6a859,2266829148,854057006031809935
+3e522d63-007a-31a8-29e9-a97d18d9af12,2019681685,3890308901730973877
+42ad14a2-ea12-f9d6-a6ba-f740d502dc29,1614055100,11826145103248980707
+8e74c13a-96f2-0874-0464-56b0b35bb9e3,4144060375,1319124665164107348
+18e9a74d-ffbc-8769-287b-e70755fa5d41,3640591850,11698906632823395799
+854f5c1b-d701-3cbf-5f4f-73f332e40dee,497850305,13782930455568308565
+a3672708-bdc2-60ad-745e-126dbdc41336,3165413664,3188746710760184578
+acc6aeb1-17da-7dba-f0dd-018ac01da0f3,2180837788,1038630324686767485
+a3d966cc-2c4b-f6c6-30b5-45c6e26651aa,3982184046,6772396241591176899
+caf41755-e318-6b26-2651-7471e5147903,1967597935,4064694523186249025
+f0cf6bfc-de4d-f457-2900-8b6879ef3596,3595401690,9280784084889591043
+e4db7c55-1e3b-032b-9a8c-cdaec42018ad,800175044,11249964763094432235
+053c48d2-698f-a769-43c2-3ad797c718a8,1725976371,10167673705594440462
+76aa1cd0-35d8-1912-8eb1-dd9fcea3cd11,2055204074,10610500148721740582
+6853ff24-a664-6dec-2877-bbca71bf077c,2438599625,2381623980152736112
+964ac4fc-4622-f1cd-7c31-22033ab57c3f,2586336185,7997128895541449718
+8613a9b6-4aaa-9b9e-be12-fff5e4d203c4,249284233,1759385709706289754
+0d0fe33b-8787-6781-3155-fcd953df3581,3512827614,6280297806587187223
+af66fd90-cc94-5dbc-8f18-f904c706fade,1008265061,9462750460299073555
+159c1d9f-fc44-b927-0b74-7164b01c4d00,2603113026,10758684234079640341
+d7af30b7-cd62-fb6c-fe4f-fa5c242d4886,3922909229,18035827247852419792
+09ea93ab-c8c1-3b63-c9d4-4ead7aeaa89e,1832542575,18162981024766633718
+1c974462-a2df-f900-0593-6139139d1e6d,2788641911,6696618935935236836
+2b5ceec7-b480-218e-3b0d-cbf05299933a,2928591743,16494339578937461047
+003d241c-8c78-8eef-6f66-43dab7c567ca,364296162,6963314233407486725
+70dee0a4-c4a8-dba6-ac37-7564748179cc,1499479732,13145004603539626276
+4276cac0-0f10-310a-0728-317992ea461d,223798113,4659823421965944048
+61b82cfb-f5e5-e816-8df3-6d62e8231f72,3400587251,15593475018108015656
+b1c2721d-16d8-7099-5677-a5107cda5a27,2728893029,7605855259930586999
+91ad1858-4d01-42f3-5da8-5651dbd045a0,4143377105,16687119097629498819
+d72a9887-ce5c-9a93-4a94-07fecec3b8d0,677371028,14072698855641783375
+b6b9c78b-7220-6563-101f-c151b207bf5d,1488842071,7271067071902424770
+0f6cc6b8-795e-18b1-c6b5-33f456288a4a,3549278784,13461067881588827431
+38d43dda-0eb4-41b8-a595-bd0ec4140e2c,1671007307,480677649955801172
+9d262496-dcb3-62fa-e277-b0e22940eef8,3867035935,12308520494916977271
+b76bdd5b-ac41-b429-b229-00e2d2048123,4165518112,17568361157015911228
+c712ac40-51b0-99b1-994e-14993dc38494,168603068,1543258585079688047
+d564da1a-286f-b542-6014-905af289ec37,3054449523,13318121486112832277
+f35b2741-b7c2-685f-e781-1319bf1fcd56,3792940013,4927326102624931914
+f0f4bc84-3ff9-04ef-d3c5-8888599fd072,2408417566,10811867327100615045
+e87eee9c-39b7-2cea-270b-1cc0ba21c991,243938846,17152366091568578074
+53fdff23-b126-4cdc-4b5b-e190132a1673,333212049,8917880163016380353
+3e0fa932-aec0-5e82-4d26-87ea5124c7e3,3214435217,15984330929190691999
+9ab69fee-2f0c-a6a7-7fbc-79b26963fff2,213650687,4600563133144059451
+044239f1-cdaf-2d70-5dab-8c1bf86b9585,1554116441,1113348905606857151
+9797dcea-09d9-f571-6772-f5061544c68b,3557075406,4410281758082516243
+a8aa4e1d-ebbf-a892-90ef-f77a5eb8257c,1279381694,11678668948503945865
+0696fc9e-4e33-96e9-0db9-39415d934943,2723430439,11133082286222897085
+c4e8f22b-e1d9-8fee-7bc3-2be02bf2b44a,4274269765,3646336511713839308
+6f1c8867-877a-f836-337d-42eb5e6031ea,3260584755,8003346001187749267
+f8355387-2d67-7b22-0a29-b36182da78f2,407018950,3189776506677426980
+24fa5c1e-dc39-d189-c7e5-17512f05b69d,4211741449,11568270330394217997
+02e77ebb-eb50-b25a-9a6e-bc12d6a0974f,694914125,1170638194126529689
+e283468b-a7ce-d363-43e6-90a2bd44bb6a,1235039944,12589175451883675340
+921136ae-f77d-dd8f-671a-695ef8908f31,2690688306,8322019395841496059
+fa47ab5b-02be-9052-9b2f-d4105f70401b,2023694517,9089965291348770416
+4390b952-8645-c4ac-aa9a-85dd9cfb7972,106445017,6352332322854272848
+091de3b6-d134-7647-1d27-16b44b060a66,2346737628,2040797422830674717
+9b35af0a-8877-456e-ea69-6e86dca79a54,633412632,16359323421615783276
+76c0394d-759d-6069-ed44-b448474d3c5c,3921936805,13985273910721186360
+882dc362-2b52-1684-61f4-8d8aa6804bab,1701555391,8808878423422564036
+26228bee-eedf-211d-c326-c45d1c5bb794,1202331325,13640377135469197538
+554df2a9-fbe8-1eac-874e-e57d4ee07462,1942219517,7856258473324241376
+18029440-bc09-43f4-5368-ab197c17c43a,3562301351,11413837091050672405
+73e52a3b-8ced-2f2f-6626-2990309e5e95,1346509229,5859357203297683949
+b1a9b67e-f38a-77d2-3870-f102193373ae,2194193353,1918940791400883738
+b7e930db-67e1-d8eb-6b7c-498682ec3349,3296266895,5876295485303634997
+61db9051-c0c5-0fea-82c7-07386c5921fa,2238351521,10871877680533894733
+b6764285-449d-dba3-0b25-0947b7168515,1009396282,4125018818895025660
+73636c08-cf1f-70ca-16d6-1ac42a167adf,2902949914,6960331036976808378
+4a7a651b-f0ed-86b0-984a-88ed91d55364,3288567309,857730556344384978
+e6a38c08-dc2c-0fca-ec71-5be1c2cb6013,1859071298,3354911289364480813
+a5202fbb-6dc9-eb60-7293-da4640265644,1901036065,7091865234166282073
+3eeb6595-e5cb-6aeb-8ca5-c35377a8cbe3,3131920080,1690341104447865470
+15ee3d20-fcdf-16e7-e58b-cd9e497a4117,1163259006,9323937635196967756
+78c9f37c-3cfd-4cad-82d1-1e8dc799eeb4,1270404664,10512271211957071493
+25b520ac-321c-5747-85a2-ba3099322c80,3188624346,6275394283367383976
+476932d2-454c-14bd-04f6-32d2c69ed002,3143519421,8015722271471601826
+cac8cf37-4f81-73e7-4bdc-21cd557711a0,2243000417,10602453499218519440
+0d6cc364-b70a-47e6-d2c7-43e04af60334,2380548426,10285994929645295244
+f0899ea4-fbea-9361-0523-f8274902b641,1698937573,9098874174989668058
+3f1375d0-64a5-9dfb-6208-f5aa0a8f8b26,381105565,3334229692150899338
+f702e61b-6cb5-f437-f571-8142958e0209,1122831620,963826525035039821
+a36b4ba1-00c1-641f-74af-7c66e9be52d7,3487263858,5720056461042540237
+97b8d7f2-a50d-40a9-2f90-f0679f74a7c1,247728119,11322885116330100424
+7885647e-b832-5638-4c2b-3e75ce07f8e3,252123889,8018642497764281473
+b8257fa9-5dc9-1f6f-331f-a5dbc29db09d,571142868,13872759856673156669
+04140675-8571-6336-f292-99a739a2b1de,2417837482,885841807107682133
+d1b9c617-a647-8a98-4995-79f9f4d1d306,2523906308,6599067999143358071
+17b5901d-ff3c-b342-9b8b-d0e274acc9b3,3119747104,2853407937309224850
+478ce28f-b08c-0ad1-a4d3-2458ffd36465,3409680914,5377124422181840009
+e8cf681a-ce85-6e1d-6c8c-914fc7fbee92,1610205300,1273528117338962959
+dc1844d8-ebd9-dbca-1fdb-2164b7a1673e,2308879755,13798848012579781078
+9c9c5251-ec8b-1161-8be3-49816f1df5c2,3906638553,17437448942854173833
+f1e6af01-f53d-7b99-b8d2-f371757790c5,3820078553,17533454247303376311
+90372116-49e8-5a4d-7b90-c270217ea99d,2185588542,3480751720775881314
+1fff1f59-f605-2861-0d01-d0661d9a4f17,3146350188,11315459250419722504
+dea00b43-8d57-50ba-e738-0f40b5012780,3063455380,7157855360030826845
+ea2c88b8-caee-ff2f-cd67-c8c704f1c2f0,1954917744,18318333154672753583
+e88ec08a-9198-a3a2-8162-9634861540f7,2762044077,5574663293709243427
+bc121e99-d01b-32b6-aa12-adee3c2b458f,1563510999,11965223811910376129
+f810c152-6b34-0508-a7fe-f18194a009af,3344392761,378083809226754632
+8e0e4df9-6499-fed2-9ab5-fbb0076339ae,2080927452,7112121698459158309
+4067415b-5f2d-908e-2572-f5226d929deb,1408175845,12642177507189141179
+82e6eba5-460d-f49e-698e-0d0d53c039cf,1811662877,12592388505379682883
+a951f398-bbf8-5e10-f4bb-4daddf979652,3137149267,5595725144639036576
+407e4a47-0e0f-1fd1-3a12-29c0fc834496,837473329,11571073081079375517
+96e4a5df-e05f-51f0-0919-ba90d780c61d,3723460777,14818454713036450578
+ea85455c-7964-9524-b5ac-4ec7be7f04fd,3796350034,13953508724662755006
+10676aa9-bd3e-ca27-f5cf-07a3d09a2f76,2308387601,12627254995794850448
+c27c4d32-1b2f-705a-1980-870931961e9c,539995220,13972528322616320077
+0567be31-29ee-4295-28bd-4e5448780e51,1232230021,3901295169582093847
+43f1f506-cb96-b603-06a9-514aecc4d03e,1480693263,18246002175288485901
+367b1fab-4f37-3c4e-3705-6e97684a60c2,3307100013,13436025149396746849
+fa00b390-f7bf-1dc9-0dd3-de6e2479a4a0,3252628773,17692372689786434780
+cae666d7-a388-315a-af51-db4a41452f89,1356675149,16848924151017519029
+a4bf564f-86ee-7165-4e23-3e0c84b10edb,1843112148,7054665975397655622
+e9df8237-7e99-3c4e-9c90-edc1a596da08,2090299916,8782508210277056127
+f532a906-2f03-a8da-3875-4535349f1f59,1297808192,17655463308307105513
+568880ee-c20c-de1e-5e8b-2ed82a437443,2991098544,6392006593864345727
+ffb93fe9-9d4d-8a86-b196-e829a2f9b1fe,1512022273,11208794381253389578
+b125883b-1312-7fac-a558-7513f63fe10a,3233313622,15309200318203283300
+1f6b71fa-80c1-0279-14c3-3f3fca67c0b7,3379707826,15135907006829293362
+eb7eaf6a-ee68-cf37-33b5-99f6180d25a4,2530886081,7134526655159295099
+a64ac157-c339-f762-5195-3ff32ac0b550,39863242,15391820737442068461
+810b6c16-8037-8713-3059-cc4aae3dcad8,893696837,10615671368363807063
+a3244d17-631e-d264-9c46-354ac5ac10bd,4230572001,8717463107793403489
+ce4af6c7-d9fb-a315-708f-e330ff4c87c6,1979311186,6280229437730893010
+ea717b2b-e6bc-3b48-1076-4acbcf25d94d,3862604647,9578318419692450180
+558a080a-8f50-de32-6049-e83877779523,1972817293,11265327459724827330
+51b16ae0-4805-f5cf-079c-303aba9e222f,1195333539,1281681148155901382
+e688d7fc-2a5f-bfba-0d5b-6aca01b62fed,3210559939,9420582280305401024
+3cb6c906-a535-1f46-6b99-0541628b7ebc,3472268785,8083996898904947656
+da4759fc-c54c-49ad-53ad-927d477300f0,2822994928,1779442029751602199
+03fcd3f2-bc1b-cdac-32e3-2cc0b6fb756c,2049814606,5482779084733010255
+5e1db0ce-b728-3d77-8405-1ef6526c90cd,3666245771,753419455016441654
+156d696c-837c-0212-31d1-dbdb67639739,1915153042,7967487707329438806
+726b7f5b-9fc7-349f-f390-a0c71733cd3e,1575096282,10086916025942776843
+66fa9190-422f-bf08-ba3f-7e336987df59,2324451679,6253604498466977026
+7e3b429f-4b83-808c-4b68-db7511f4b25f,3145840080,7072254896990976360
+4e4a2de3-9646-ea69-6470-eace6a5be85c,1498993841,16378975373533055196
+de0ccc0e-a48e-acef-60fe-8d17c8ba5b62,438492119,5994745846269477116
+5f3117c3-83d0-9326-8363-0f85d058a864,2916369620,9098747331853484185
+c1fa93df-aab9-0f00-3308-5ce3d488ccd9,2321414046,16468302000428425534
+28dfba3b-0259-ebf4-56bc-fd2f1ff7d81a,3539043488,10108348949620547453
+9fcc99c5-2559-4755-e144-9173f883df6a,193052955,11981862175955288004
+435bfaca-aa92-6423-8e5e-d7d379037b09,3271358164,7777685429311448013
+f7772d5e-edbc-42c5-967a-84c943cf0654,1287519084,4317918205372871360
+a62edfba-2c86-4ae1-2043-cc39f3d6d538,2944559767,16797581656777298464
+b3eedfd4-7972-b373-54ce-5f25e774347b,2117037727,13230579345020247356
+d9363955-6021-fee5-ea0c-0c424b158726,1477470118,13375563759856533182
+f05a3835-238a-c246-c832-36d909122f53,508040373,8641650281274986097
+d45af351-0790-7d54-0796-75657853bf9a,3619560585,3722934638414587763
+b269cc84-1903-8f8a-18b2-8c2b72b2f0cc,1437344445,6860828765570202680
+af59e6d7-0f3b-617f-31b5-5414d7473fdf,881478607,9180814467339963033
+ffacd3bf-2e07-53e2-ddb5-110a820fbcd0,243797827,12463494023588768349
+fd9e3a23-f382-7b8f-52a5-fcea908f2cc8,1933770252,9843363593801272075
+1da8edd9-a7d5-216f-3427-a8392256c136,757283873,3896169670305964312
+efbf5d4b-0d70-49aa-6303-06c699c78d4d,4118470342,14429220199367730210
+702d3a95-d8b4-789e-6851-162299dbb12b,1897077148,14678961406383757947
+76e9c62d-ae38-4193-bb04-94f0ab5dd141,673467346,12979830562386931839
+b69ba746-d637-75a2-2f7b-e8bf1dc1b209,4133717242,878597015530103601
+2f5de276-426f-7980-dd45-556aebb767c6,3757499788,5560241774310267776
+24fb2199-2558-ef19-ddaf-ef4404fa9ee6,1156980149,811115014981915664
+49e11e9a-748c-98c6-64ef-f172e2519b8d,4220391221,4603537863805000465
+1c9ced6c-44cf-6621-5e95-f6871bcd600b,1442301485,11595206445001724488
+798880c7-225f-9f0e-3538-c02062122277,2094516881,5429030750693259638
+f0c6d10e-e021-97a1-6fed-c61d517e45bc,3124472164,17708663593805035621
+ee8d035a-4939-4a3b-a308-908319602e7f,3873412022,12987824609820041162
+cf726b75-ff74-3c5b-9d82-1666863b9907,3766015062,11462188338682382474
+2e60eac1-a00b-0eb4-50de-845df7b7b620,836048820,5612474201120563502
+34606fd9-30fd-5b49-1db4-76d24780ddf5,983074718,12000177151511607332
+c511a0d0-de11-48a9-ef3f-87e7bc690d72,362952479,9863529374697003214
+8c053f92-cd7d-4246-ce5b-22a029b9ac6c,4211266227,13205621959142154241
+e2790a3d-ee88-1f21-ef35-292269f31696,2988285781,6456681377277705176
+55f57de2-30c6-94c3-f4d9-13e49d323c45,2070705027,5074074331690871267
+1c57a18b-fe2f-fabc-6555-52e54908c4d3,2576731433,10611504668752925666
+2a02c9b0-9117-ca41-de75-cfd42741473c,2685401791,7937528060863730199
+522d8754-1a0e-df1d-cb13-4bdef8cc350c,247140738,13724427869421680425
+c2ea2113-ac76-b0db-34bf-dc90f3de95ff,3483964401,11568318150124455426
+639f9f60-a342-fbaf-1004-7c0169c4681d,2917977083,14474688083672754233
+37607a01-7c9d-2714-1e91-ded90298860d,635733510,14994218273723363334
+8a08a2ed-855c-e373-9c9a-aa1a6d1bbeb3,2336686746,9089350843561838735
+9eef8bf4-a533-1945-9151-ad1a7f612b9f,2866814957,15195420297699799309
+58892793-682c-faa0-8967-2ebdd9db8e2a,1501663560,13526192396964841059
+6bfcef5b-1003-a5f5-bbfa-1e21df87a239,1566490489,17789372952762648581
+17f11b0d-ffbd-e1b9-8d65-746518deb252,2049664923,7083575298220499257
+a9ae7873-7547-f43d-4e94-fe057dc92287,440019421,4442427075827940792
+9fb78c25-a87c-b953-2641-872a01b91fd1,915874511,1405275822794855149
+3f59251c-019a-46bd-a151-bab57735a64c,1609014418,1021658928305334922
+2c64d503-7f78-bea4-d1f7-ad550ee85b3d,4193344608,11424457290711422029
+d761ee7b-6d17-b29a-74ab-8d2cd895e6e3,3764134224,8435765072709165467
+fa5d5d22-ed45-6348-3db4-d36a4727b71c,819329813,1738653068751581460
+853ca60d-7ea2-14ab-78c9-52bf4e8ca1d5,210005476,15480984913763175275
+27491bbd-f8ef-9a2b-518d-f567f7ed92d2,820490569,1841564438362806218
+6dd1925b-3f29-a81b-1240-ef0f2122967a,3848337015,14246235941546953188
+c1e507e2-1437-b2df-b48d-e373ad4709d1,2947309087,8982204516791305114
+c628d250-a6f3-bb0f-aca2-126c36e6390a,960449478,15719116911575736769
+980d270e-74d8-3bb1-fdbe-a32415603fc0,3419164220,8269960848549446260
+065352fc-9d64-9e42-662b-78496d2bafc5,1944591377,12897743798412405709
+b96d7777-badc-924d-4386-80a14f2c63f4,2793048655,1540560138645877469
+457649cc-16f8-0d56-d0cc-83d9963e053b,3347570411,10982505439541484870
+6f1e34f1-68c4-ae5b-5cdb-aa3ecd544d12,89266010,17710927453391799584
+28192030-2d3e-398b-006e-583675aa3e67,3778559566,10001961376467010619
+921d882e-f990-4b6e-c417-b411330c285a,2860753435,3999241428676004702
+03bc8658-d5fd-3f12-9871-5c0626580ede,1080861481,7169007198426017509
+60328fcf-2490-3321-3875-2d37f851aae2,886283961,2985205779215273017
+12174591-98de-787c-b763-dd7c1ed86cf5,2234847090,17942173091457435616
+829b4610-1eda-8d63-9a34-b463da862567,3637513567,11964644433648191003
+c237091e-1d27-ff94-a376-5419681f1d2d,3764835499,13377227404981782224
+2a911ca1-acc6-06c3-ffd1-5b9bb457c6d3,2933631190,14657496306875542309
+b8837fcd-4034-e1ed-010a-076c87883dde,899162432,8096993594261012832
+a8f80bec-d57c-9b48-ddf5-c63a02069f68,2558878527,17800300476095649005
+7f031393-fb4a-2675-7e0c-930b52936a2c,3251722997,16015681493644252059
+901c2a60-0b2c-fc82-e130-eb4f47bcfd95,3704832544,7279450113257439570
+a56b6adb-a899-63a1-248f-0225954f5fc2,3696058762,14841238580197146379
+76a7948b-b202-fc72-1d3e-7e86c0984392,2970411006,15364503039633478675
+9e528523-09f3-ebe3-535d-ad4f9281616c,4144077450,8735563925397928085
+98b2c3d5-a644-7e99-ddd1-4313edc2eb4f,3246288867,4855654293666294981
+110ba33f-47e2-fc88-61dc-87b717e57faf,2999720637,4668346036994087209
+6c1891fa-cce4-d2df-33e7-011b922703d9,3164612949,6141896812794233328
+abc90614-2e45-2cab-f92c-527bf87039c7,3402191928,12143379815051623539
+d89fbea9-4469-cd1e-b4f6-3cab0caafd6b,640887150,278592682094084902
+ce963aea-7c02-7a79-83fd-e12d6718c7ea,591933620,15666074766596951087
+f1443633-e1d2-bd2a-01f7-fdcf2d64986f,2607816387,18228411238297124317
+6981308c-e962-fbeb-5d55-3c14d1741f99,794092378,8933009148190015144
+65472859-d4b9-27c9-4745-66c9c9f0103d,3039468440,4294417497293931825
+45dcc0ec-bb95-48b7-1897-f17c023400b0,1436072104,4654666727621851413
+671a6711-a235-5ac4-9cdd-0b49f733287c,1311182671,7387837402043599248
+d18c9785-d205-43d6-1ae1-749cb60e11cc,3874311560,15710400189913613116
+2d489f64-f833-0f4d-6981-3769b89b8f73,4135278050,18116652932240965201
+8a475555-9dd5-2b6a-3a47-1d85a784be47,2166625618,2734972090158369261
+21e04dde-c595-401d-656a-6d011088caba,3965327741,18335977463756627224
+edbb0476-c14f-3225-9e7d-4f5947e83418,295136036,9605116989557895112
+302718ba-5d6d-0c77-4fc1-c960fac0e3ad,3776051911,17523793321431640961
+ea22ef08-70f8-feb7-5a54-77851eae780d,1198401072,10778091886973715515
+9128613e-4935-b96d-bcd1-57d281f3579e,4031740081,11285896246914428334
+f7212660-d8aa-b1b3-5153-5544a3284d0c,1702628175,13823314498161699575
+5f2c279d-e87c-35e5-76bc-0c2d3c470971,1440093770,7947217603781401447
+4d2bb633-e6d9-3e34-7014-c85fe46fe412,2480483097,12431814471245827838
+7a220a7d-8499-beb9-5e0e-fe87f6a5014d,109400222,15226304781359199760
+ca4e62c9-71cb-5ef0-7906-f754a4b707bf,603726089,7305919477328100594
+af15a6da-5853-9637-537a-b31e9aa58e13,3172053858,4398345908950876432
+0678b106-984e-dba0-8748-1b8c8cfb9362,2384773694,15741695117916672338
+d8cd521e-38b6-e0d8-8905-d35d52b944ae,458828853,15217393481082039127
+32fa0474-0fa1-ede9-b44a-7d227d6afa53,1953380045,13645665206429791250
+92a83beb-cf54-ec07-11e6-fb1fc6919ab0,1983296545,3728071879733891672
+5a352ca2-414e-58ad-3176-b5f5a1d65df3,3549484051,16904960792001268489
+cb699ffc-bff8-48af-5ce7-7332f645ed62,1023543726,13195823339366625326
+fedf088b-ebd2-6f88-c44b-96a8d94149f5,1090608431,12106677238262065224
+7b01047f-d272-dd16-32c1-62de1af6c387,442611061,16041270430844261216
+c2e35895-c08d-a042-8ef3-f1952adad53b,4281440705,11129707927194680556
+df0de3d5-871f-62e5-a964-16ccd103f155,2924976023,9379217715171643163
+9d9154bf-808d-52cf-a2ef-fe2980274390,3002502354,3697694024673604981
+93836437-335f-81c0-b2af-0c9e1e10f5b9,3073057947,10384776551691487695
+2c38afdf-1861-71ba-b965-e354b97acdf5,70192198,5960335038592627061
+1e5afd57-5441-6b1f-e8e6-de7d8725763c,3148940486,16859769716596670999
+828c45bf-0d9a-f04f-c2e8-4581ffd4765f,106402463,14474449097947452418
+49f58894-15ff-0f75-edac-d4b536127961,4245012334,18341447326479460788
+303ae8f8-3c4d-211c-0a5a-18adfec37ac1,828047646,2019915154952939754
+55712de6-6508-994a-b5e8-9b8859e95bda,2899568623,15942486849919516373
+964cff7c-1b43-51b5-4ca2-1c3903a3eec1,1784702456,13640399615850900009
+719276dc-075b-e921-53a7-0956c96fea5a,4091770985,15903622002321207397
+c4544341-0fe8-2597-8849-14b622c06756,2448541063,11071554990833707516
+6c668672-ee5c-557b-0a0f-75605b78a5ae,2290730758,4179369159454076121
+8514de62-cb53-bf4b-8552-a7fcb1f8833c,1770048048,375429320042022906
+d0d195de-4f6e-bc62-236d-e18fa2a92845,1985519557,7022482133277573456
+6b8a225d-4e9f-474c-a992-3c32890c854b,1431711404,207444102222873524
+2ebc3248-0e82-a883-b592-0ff474cbdb5c,2026373947,3418373536233424940
+679d1a7b-de2e-a09e-360a-c33f73c1daad,1859061266,13880315645303752283
+e58f689b-862c-c481-483b-2abcbbde5835,2951627782,2157704350684648819
+4adc3349-ea30-f62f-ef45-0d9e601177a9,2555899927,12148276060865087508
+60834cc6-d65c-bf15-12b1-d059e8267149,1277272274,11147416150047278831
+7b470ca2-01f5-993d-c64e-73d6d54df173,3949452530,12727303914469361129
+93896e57-1bfa-d8c7-8185-f7b6ff12bf6c,3119960669,12492876850538436265
+31033a6d-6b5a-3d70-6644-99c3403a633d,565306886,18282268817741182758
+374e8689-ccdc-31df-b09c-5320314f9877,483136929,5650007284711295687
+1db646f8-a42e-7cd4-6169-3108772331ca,1825667527,7937920755758578915
+fe6d0578-87af-7a5b-6255-e43cfcdbad4b,2069656657,10719310675226448991
+ef98fe28-791e-61bd-5d73-3c45e99b27b0,3948267446,13595125268544687310
+eb6fefbb-76a0-41b1-fda9-7e52adfaa74d,1295622174,12810079590466805037
+bc5eb517-34b4-d029-fb01-5ff935e6aef4,1863666720,16591266785082850525
+8de5cae9-6788-7e2c-df85-bbafa73acca2,1537396588,8691636883439142537
+45e53a56-2252-ac0b-4993-abcecf04e5e3,3736386175,16284080696424481985
+f5f6151a-cf69-091a-adcd-7dc808480178,1395856275,2517660994606025667
+419d1204-d747-fb5f-6d5a-92bf8d42c21d,929458864,14980934695045715890
+526df008-99a8-ab82-a617-616fe623b371,2155809629,7238867722973235567
+3e756167-4f2a-e8ad-7e6e-f68a71569ba2,2077419840,3198927220230423400
+7f54168e-bb11-e603-a60e-e3dfa7c637c9,2729275464,18104301227358449160
+b6f8ed19-d25e-285a-8894-ca65f75f2b51,2146967835,7690236950598294717
+a37758bd-1d56-4e3b-76d6-cf81f786498c,420531600,15456741479473042213
+3bed0031-3d0c-3b87-2e48-7feff0ab1336,3412047809,17409202684521401727
+4693ec64-3df5-34ef-4565-9a4eaa991ae6,3875957853,10072834338225341427
+65c79472-e774-b4b2-2b8c-433696cad109,3195994497,11967182141747850442
+466549aa-701d-a54f-ae41-9a5d9f7738eb,1016958322,11896925498134166869
+35c9c80c-0a68-daf6-48fe-6d189ea6709d,1253839662,15148350480879028637
+3de215ad-4ac8-9fda-9ca8-a0bbde7fb9b9,1647127923,3281111963008649245
+ec70b39d-26aa-a6f8-b2ec-0e56737ac4e4,3577620215,3683642187231921726
+5978e658-90b3-8bf6-5ab4-ace47a62c994,840592552,5027718699594069005
+944bab3d-cafa-ec4a-8e89-216d956d9cd3,3616060934,16261625655152311320
+e58b47c8-a8c9-0be8-e6ef-9f3163f9dc0d,1194295955,1598272043222744053
+0f70947a-ce68-d9a5-b62a-f1c1642767db,3097686584,16582388572299931525
+6d3fdaf5-591e-6d63-da4e-620460c669d9,1447477190,15663203443638522431
+e6d53f3a-19d4-cd1a-a369-25dd694a34a1,410747117,10982395097848669219
+69183576-5db0-a345-1dd4-c4feeb97da2b,1435708417,10136327199630904374
+aebe9c93-1424-6551-58e4-212a88456ca4,4206398865,11887294615423693055
+f3ae4a88-44a5-0f92-498a-57776d2a702e,3036954532,13710209447114530400
+45e3875c-7de8-c621-b1db-2c541ec172b1,1483511533,8211735426540822703
+63bc3d08-4759-0a8c-a5df-da1a22ecd211,2363118383,5122450183797849868
+5398bb96-321a-194a-cd1d-89e111ecd787,3273930134,3529899763567367545
+e2b55737-de46-991d-5dfb-f613c8028ad0,3735568448,4555358185403225019
+23a22e67-599c-faef-2340-6a8907088c19,2070961819,5298213005662595508
+c11aed0a-d5df-41c8-3f94-59d4353a2dc6,3026507253,16416935025605180806
+07511a45-cb0e-0ad0-cbdd-b7d509e0eaec,847133808,15148102841304176069
+0acc89b8-aef8-5847-7bea-728505032f1c,2827673628,4037953680602744198
+6caca678-b4a5-ece1-df43-0102b2395dc0,2338843779,10926574158992667582
+ab7d0691-596e-54c4-84a2-e6fc8394e8f8,3516150315,16569297784555193050
+60cfa0be-e7c0-074d-cbe6-fb0107ee032d,2869893468,9365836725234377375
+88658026-d71c-5b8a-b143-9c4d710722d2,3077781270,18185874702094796653
+d8cc3a32-25ef-71e1-396f-6a3b2401714f,188234583,10217455192768791687
+5bd3e898-d671-4a65-754a-3ea0ed51defe,1784757633,5432043406621357626
+0d245496-151c-1356-7e40-dd2f31e0e025,3661176171,1339548209324760488
+c9e5d142-8af8-6fa1-7deb-7c90b790a970,1690279708,12427533606846029177
+eb8348d4-2b31-b67e-6fb7-d7990380f40c,3507073332,2964345533024818450
+da81522f-c43d-9eb5-00f1-effb7b0a555d,2050347797,16362494174638467284
+d3755296-179d-eb04-4b41-bf7465b8e0ba,1596984104,13778789704501492418
+fb4283b5-fe62-6987-9bc4-b9eca4f94617,2956839989,13539894597255840957
+e2b4e4e6-416e-5b8e-01b4-b39dfb0d7aec,2927340264,5779850436779343329
+1d24b4f2-eede-4923-51fb-33a9bba7bbb2,3085132661,6938778135199749371
+a7cfd307-9444-ea6a-76a0-37d31ce7834f,1071270050,2399172173866945900
+9559421f-d33e-fd46-f108-f6a53163b8f3,3751143221,8375203812328349323
+40339dc3-a3d4-6e1a-a8d6-04e994b03e5d,1605083322,3282261402492967210
+f46a9424-25b4-702a-e6f4-d00afadf48e0,48959094,4721963543848237434
+a21c2377-d57a-b983-d119-b5a32c70afa2,126982002,5033778150711820469
+dd270399-e851-e794-d483-68067ca641a0,330717818,3131798978290233795
+29baa651-dff5-11ae-47fe-25d64f7c0ab3,2818153270,1448441392263226436
+d834aaf9-c7ea-0eb4-88fa-f67654b75cfc,2504672900,9372784095396009955
+78724861-ec55-8957-55e3-557375f5ec51,1195281138,9016227518490118356
+280f2a5e-9ea5-c289-8d75-a85f05d662e9,3468548059,3838016453763599186
+a5fb350c-473c-2616-1d8c-e5a049dc3b25,1043292666,822755922620689641
+a160388d-eece-6a4a-f64f-932ba3a83c44,3447030755,13764873134021463763
+43f2d5b4-f0c5-c029-eb46-6ab9f2dd5000,1836693659,12389761411441133666
+a7b98b79-2790-0ea9-89ee-e7324855515d,959925502,10127443293631485020
+e5d3fc72-107e-fb39-227b-b4a138d3ddf9,2010122786,15046097040839332114
+e177803a-05ef-8f8b-37b7-efa0a12aae7a,87113715,13117609725724967050
+b4d19b70-9410-a284-b0a4-ac4a631fe45f,2736741351,6250651752586085046
+f5503637-1134-3d5f-f363-c5defa9c912b,3710138321,9730029852113597225
+feb32263-a3a4-ea42-54d1-b28bc5ce7e9d,3615376684,6964546905532452147
+4829c13b-2e64-109c-621a-8ef9b5423dd1,2525990788,15350764474961231369
+c868fbb1-f8cb-0b6c-b933-b731df049695,1253885372,3767645718216666027
+b95e3829-0bb4-aef6-38e6-0f46c0106be1,2325520126,1602794471388196239
+ae90378c-222c-d2cd-210f-c28175498f5b,3996984772,10456639762036233797
+bbfdb4a3-0d0d-a537-bcea-a418341b52f7,3288932478,17386333640962247552
+cb6a343c-de4e-38a5-3d92-ac49c051dae8,3273374909,9989796601932955286
+dfaad47b-9501-2037-a9f4-483791b6319e,1089196503,13540520405628554634
+5b72612c-78c4-1256-144f-261944eedabc,3547536509,6727996633941196200
+a0c7004f-104a-4c62-0b20-6c5f729780ed,1788939460,16127423956693676214
+72f5ff27-7eaf-845b-3d63-4313ac14c998,873121918,14003639305336413735
+82c35a6c-9449-b380-0819-342ffa20a291,1475849844,9086753912562688102
+d89f3bd6-782e-8239-f536-cf08a393a3cf,315385815,14098816669238918524
+0ca4a833-a5d8-691f-1412-ddf012c1e0a5,442570422,10780892880321640091
+c6c97ed7-4450-a5de-6ae2-6ef9c2595e5f,3109853553,9352096100803025869
+36d59bad-1f33-9fd3-f29f-616daa4c1975,1245090991,2305251706848702906
+d65885ce-01e9-929b-c6a1-c10a107fa57e,3456658497,11052729619864382972
+f5ef771c-3dde-480c-97c7-3949b8cf9ddf,697782303,15928827416399593109
+8fb3aee5-fee8-d16a-ecac-046c2936d56a,4263362404,2582696745056426213
+25e569e1-b8cc-67ab-faa6-610823a808be,1652542579,15999955829274158054
+d72c82c8-7870-1610-631e-e0e0f06baeea,3205943420,8464956276310162675
+b56db614-27cb-15bd-045e-d8764e618693,2176363562,12273340256474886900
+e41a36ad-4c05-8de7-d509-6e1bfc43db1f,1423196362,9158634398060489934
+e699e27d-ca7b-9035-065a-ce6fb3ec734c,2995401991,10195102282311682354
+d65a0b2d-7dbd-ad0a-e016-5ea33d793c54,3570975549,2064439162264588239
+9a25f5d0-5fb9-011b-b5a4-a3ca2e295450,486274932,11873958519070999515
+a3d003b3-f987-4609-fbba-a87d4b400024,3917569530,3353412479598657483
+5b960491-393d-228d-e86e-be268d56a0d6,1055532727,17421412156285128583
+b8e28727-2d5d-f0ad-a540-51bd8749a0e6,1705529063,7078726173553805246
+e6284f8b-1e0a-9c9d-c106-b79c1f15a522,3988382153,8036322337986589536
+a26953ab-e239-940d-9877-ba27b0aff37a,1439410716,16645354418940842013
+4f5dadc5-33d4-41df-bd7d-360a48fde522,56857701,17932139549323970097
+167137ee-217f-4847-62af-7f3fb70219c2,3908538855,5822610139753906561
+79d1c790-abe5-873b-02a2-c6523b026dcc,419834411,7043094797458125622
+1a79da81-f27b-7594-c24f-12d484b58ddf,1500902131,8008779493936783143
+f695e0a9-895b-9a67-d803-acdc4ec15661,110111686,6673094010766499078
+26554d87-b221-99c6-29f9-bb7dc05ffeb5,1726368611,2690711226300008656
+3ca3fec9-ef29-6781-fa7d-dbca75a1e22a,976193651,762243765840368893
+9dbe87d7-560f-3b5e-38e3-015ff351ec0b,1377291401,11098963359563043027
+4f67e4d9-850f-dcf9-d3fb-ae6f385323e3,21769971,17278153235064445918
+85c52df3-4471-ccdb-98ed-eed0c5458e63,4023800768,7743253887760527848
+138e3a6a-9dcd-9f78-a3ca-61dfa5845dc5,688287740,16202972920485273994
+e7fc8c7d-dd24-5c27-8cfc-44e6ecb93594,1348736393,13616904916612338527
+c4a73a09-1cde-dfd4-cd7c-e52180e47527,830360450,16708738253231031853
+774fe73a-ee86-bfec-c845-0ea79ace95fd,3942118747,6872160141221462071
+70116edf-4d86-aca5-7c8d-c236b6033a52,1148191033,2085486983194903055
+4a507740-3568-39da-bb6c-a25195662280,1493608376,3893797119698216222
+8f5aeee0-7e05-f711-e9b6-e963e094f7f4,2828616100,9931278864790792087
+abc8df66-63a0-9c20-17ca-3bc964c4052d,1745670181,5481666760288540190
+c85bed3c-e853-b411-8867-45a921fad319,3284580905,6296109804267115371
+f9a291f1-3e72-b047-29d1-184014afd91f,1333907134,11968552145433383793
+a0efd79c-9ecd-f677-95b5-d2bca1933cee,1496173265,16748127902989293673
+148f2e8e-bfe6-3460-891f-ac65cabf0cdc,2046151057,1502051082808864552
+4eac7b39-f0c0-e23a-f01b-5846b6ea3c96,3785654158,5914351388796767199
+cc11050e-488f-aafd-00a6-023119769635,2950053428,18087416957635531519
+33f67bf1-eafb-2f4f-7d31-30162fecd893,505561369,12356694444976229487
+a413663c-d488-5ea3-272d-53d7fd049a4a,3504077827,10798733102937585987
+7c807e27-11b9-53fa-f1b4-90c420a4a9f1,741887487,16113603557208928319
+aa5426e1-5796-50eb-5d43-5e616eb7aed0,2635537962,16639853710747034663
+ee4ff474-5ddb-d354-241e-5b35cc18ca7a,2782255379,892352346971206413
+284671d6-02e2-429c-3daa-9129a1d7f938,2223409329,18139690141634804099
+87046c24-aaa8-7940-7399-1843b7b6d6d8,1898066523,9353760860459768245
+e7450494-ae44-c79b-446d-73a273a2bd21,3714468397,6957574168952366052
+43034073-ea09-31e5-ce92-ee380bec2ac4,322356579,8463533539376432203
+b8287618-bd18-f04d-2b6d-b8c7949c744d,1304356553,523565751059847828
+b5341264-dfee-6be7-edfb-f081542053da,1922736327,11957093871951936987
+6236eda0-2672-3d26-bcaf-ac0ba351b0d8,4144766054,8674535200910921886
+1e067fe3-32c6-1f27-6b53-6e1e34f21198,1124380693,16648077460461187356
+583d7d3d-84b6-7a17-9e3b-6685ff2166e8,3112474887,13521144637061534362
+425cc511-da35-9274-0d2c-d4c9f4691d37,815792443,15638283235528593626
+881be039-85c5-feb8-d952-2b71107b8bac,926394851,13483278163287233198
+16afbffb-4a85-ccdd-15fb-7ec0616716ec,767340725,126768686533757782
+60d1005c-2477-f991-c1b1-0fc0ad5fe438,2148675118,12002159986118489004
+f845f354-be44-2059-0dda-a662c1a1ab59,533080965,17010482099107385325
+bbb7a89b-85b7-3385-903a-0ef01cf96d2b,74266580,16581401192879714795
+1f8ae709-4fdb-8084-9366-86836fdb1c5d,2858326726,9953532557074492497
+776d57dc-add2-a290-426a-e929bbe69dba,166977958,9480505897464806295
+35616292-9932-0c6a-834b-640e575f2a03,286624548,6590237714576769963
+59d51287-d858-396f-9803-349989a2edf5,2197146921,10157353642000069290
+6ae7023e-6e1c-891f-51df-f06b69551253,1200816811,16918145735994987102
+f9f70ccd-2ec3-6939-16e1-b96f4f2ff3d5,1422704172,8342542131756953870
+fc0b11b9-c23c-c413-c869-ca3142fa5cd1,2613844683,5209699269274878051
+69242809-fd43-4387-b485-2d024f25b804,276173074,9963674255543092676
+353f58c1-3476-2166-3229-cdd66129cc82,3168771122,8564706319528677894
+584c20d5-b5f0-1c07-b7fd-87b1f72a9473,2280774623,13449207804957721555
+9adb6617-0aac-c719-8261-1ede50f5075d,3403171731,5635892396774665146
+964d2847-2b64-e038-3e66-bbc45ebea11c,2116837153,9016557497175864488
+7a0b5fcc-9bfd-1a18-3901-45ed738f7679,3749105694,10285689455938002495
+77a9e5b8-01af-c739-36b9-c6ff850e3c51,639096063,12843551501787209250
+4bc738c0-82e7-a047-bf6b-a1e4febf91bc,2817708994,4830739721477920957
+356d230a-d3cf-41ea-5d39-bd197284ffa4,711011466,16103789320288882515
+e598b1af-a498-2f13-8cc0-29bebb2b4859,2406533311,3768401907432278358
+7a64b4e1-1952-f53d-a83a-8d1454db2591,795818077,2516807043731322942
+955eafae-ec18-e287-fc2a-f851a998d6f1,2065172332,234557771618285675
+7b2a9294-baee-3597-d0b0-ebbc6c840e7e,664413976,1107956519740589954
+4583cdd4-521e-6dcc-5f7f-2072f44bf310,757673095,16967000453778739054
+05b4fb4b-7a30-dd02-d817-de3e9514ec03,2328051045,15549459791161022981
+2f87a7ec-cb19-39c4-63cf-dd97ee8d3ad8,2923991519,17426427546774475002
+c4c825d4-4d04-703e-30ed-0748e7e12bbc,737169525,8684829591681336598
+f3de8797-0d3d-07af-be2e-9b5787a28ed1,3207708170,2539700889346914040
+1c79e5cd-493e-9489-77d7-c658cfb18069,1654630168,8590080231925880621
+37025cc4-d50a-09a7-ace5-d97972f972d1,590605037,8029827451373462085
+6fab5458-63b1-7182-9e31-1d13f4b32fd1,4273590234,6816134904051789202
+5261b2fc-2965-0d6a-bbba-f264fbfee499,3444931500,12900158050745306158
+6966138a-0907-0c03-a513-bffbf7bb6f74,1354647881,9956902833714995745
+482dc718-e578-f854-7648-26dbd4233039,1429409599,11311309580250391697
+153223c3-5246-cecc-1b9c-f5b2913ffb89,719901069,8877683002791744724
+17e30f16-5042-5aa9-b94a-bad86ce84ad4,3276410192,9118713612709066021
+ab4f33c6-099d-5507-ca65-ff9da9d4311e,1015812643,15851777945872503451
+0adf9205-6a71-31c8-da85-099b788325b9,61788289,1972160324831536976
+811c77b2-63de-583e-3f69-d951f6565653,3662884262,10055838689957444455
+7e7a8e02-fb69-ddf9-ae80-1492e2dd966f,1923690461,8441090565382644213
+7a0af6ea-7eb3-67ca-c6b6-a268f85e77e4,1253684912,10458850242090670074
+183a6b52-4bf3-561f-83be-764b518ae381,2610204934,4417768690489728356
+c4b2d79b-fe15-8d76-b0d9-b5ff8667b034,3753295362,14505784976063643143
+b52575c7-a05d-e0f0-b93a-b12d6a60a6d9,1196729640,2533327071116188546
+f56bfca1-0287-0a6d-57ce-73ed6f3bc358,493839089,7800551834878562346
+66bfc946-34a3-e6f7-3a51-4f1a47f80b76,2759455639,1142495110443884148
+ac14b134-29b0-5332-3b8d-68685cbd090c,1997017576,2097997773676619204
+8ea27c31-c903-ec13-9625-42a60c2d10ec,1100411705,10409191287235278339
+9578699a-fbac-35aa-5606-e441e46c4207,3560356710,8902701459215674211
+64b50ea6-8b75-759d-e03b-0514033804f9,4241006172,13412011308714853934
+70b128eb-626c-264f-4907-1babdde31035,669991765,14729608795887380945
+38cf0fb7-6d00-d56a-62cb-4f7deaf9f795,2454558342,9813889004595843974
+76f681d3-24ed-e36e-9126-9f078c9bf972,1373806377,16265816937214104705
+bfe8dd4e-9e6f-43b1-c33a-63c0599bbc1a,672421879,8502287487713051541
+a037fb51-1fd0-4f54-3c1f-9ff2d28a3778,2808723878,11712582213277803665
+333eecec-ecab-e353-6cbd-cf0d682b95e3,1799476473,12486231955845164351
+cad2a3a5-49af-3f5a-ae24-cac762802159,107523680,7389253202243470666
+d4ae03ee-a970-b681-e57b-f8f1353771bf,2937370896,13626445645529448524
+b5ac869d-b408-8feb-0f44-eb6ed51712fe,2577236364,7113968343244377085
+cd474ee6-2c93-4954-3e5e-8be92e2ba465,4048188727,1661944404602329386
+83b23827-ec1d-34a8-aee0-269a65636bdc,2634000146,8842315342872543704
+7d4dc1f1-2c63-1049-19b8-51f821beb32e,1219019088,8883589099187319704
+d729a9f4-01cf-0796-da7c-c03f4b0a236a,1105029716,5450030844790970059
+98ce1874-0973-1f02-1ce2-e3b162902a6f,779309291,8404149520888709054
+92efdc8f-ab91-9d27-0e71-bab5c092d498,3362088572,7225106367591664096
+905000c2-3387-ab58-84d2-d492e930450a,1600326279,10021024902785657300
+323cb2df-67eb-1a25-ad7a-17d5400a6d6e,2149614468,17370239664159784541
+0ba9b6b9-c5fa-166c-e026-e2729c65db7d,2777310086,16932977296379871422
+f1fc08f7-17e5-8556-691b-ce044e04a2ec,4025505131,8369789420294811997
+698cf882-dfb1-0ce4-f07f-07950440a4c4,2800364849,14223908918501819334
+aab24e14-a69a-e439-f106-391f6e9878ab,2155210310,2338930786936056728
+670d5ad8-5f7b-7c9b-4bfc-d346921a996e,3780596824,2172123763182186106
+acceeeec-bf92-70fe-adff-04da82385dc5,1714984298,4893213688986867440
+273c2ff2-e94f-ebad-8f7e-43ba25070467,2431273387,3842781849528686837
+21be266b-7dc8-3c5a-098e-a433f407c905,3232310235,14790892423510903944
+aa14cedf-1619-13f0-d8f5-7b7c069624ff,1252196066,11660339766532148504
+857c2382-b482-f4f5-e2ca-96c1c57f88ad,2067000074,12880024170972943786
+79cb106f-7ba1-e29d-cf9e-26c31a3b2469,4105485615,16219552413228402005
+df92b65e-0bc4-493a-b210-04cbbc8dddca,2369352476,9606422844264822613
+5abca195-5d80-1ab6-a126-85776c02dd66,3001302422,16351462128881643479
+be9adfaf-2a25-ac1f-0523-1c1c9478e872,1241981701,15489387562471567339
+8199a457-9e7d-8077-29bd-06b5a3a0d21a,1164165311,11948437999238761477
+4a50a1df-2ce1-f9fb-93bd-cf42d77787e7,3636763514,15734218724882342298
+4f0b1312-90e5-d467-bbad-4e7a743c6dfd,2475848512,10478399973000278248
+3bc378b9-acb5-93f4-5c53-090efa7974fc,1541072348,9521450852736861603
+edc6209e-3ee1-ffa4-5618-a42bc9ed6ba9,3522825343,6831579754037449757
+cdda7186-5bf4-463b-69e1-756d2ec2ff49,2742031760,16445173422223798700
+e702d414-2f07-8d6e-83e0-945a55c6f764,205533619,2665298795668931385
+2e8d13e5-0071-0e6f-5305-b972d80b1990,2090245307,4026959199189428739
+07ba51f1-d571-f8d6-ea52-207e451e05f7,1285694237,1490515106009693164
+33a45960-0de9-0e37-5725-f98baa1f209e,194724033,9432608196349326549
+94640822-151a-04b5-cf6d-d9a9f3f9d1b8,1377305834,14430687874490050668
+68220afd-3afb-b5a3-6e11-fdbcd6ec72a2,3571622110,9744303056109942538
+293fa991-1e23-caa1-0353-385fefae633e,1181416717,11504429853319717678
+746d549e-6371-0010-493a-124cc5fd2f10,3704130796,14578332506419504430
+44f53805-b91f-4eb7-3c60-117913190006,3496338199,14112800649380954963
+ca720b3c-69b4-29b5-5591-e25ffb9f064b,917224899,11457679595016223302
+d16a6a7f-53d9-841b-a9e5-feb07b4f89bd,1200539090,14489103736462307130
+e900123e-7a64-1235-da89-492d0f45503e,2503888634,8892770081248808011
+ec6fc603-557b-f069-d043-6e67cf7cc415,570313078,6559409560636794178
+f5491948-9591-fd9d-4fbf-628cc33ea4de,2970682072,433564873046521835
+15bfd22e-288d-eca7-60b9-156596b2359b,3474944827,3177028916120984627
+863df45c-a8d4-f235-cefd-ae10e39b3a55,3133528171,8052902398975062264
+cafa1984-06f1-cef6-2a35-3e521c28d9d3,2890129083,8867926954191805574
+855d8436-eaa8-4bff-d076-c16922f97dba,19047417,5658384419888145475
+fdd7fd36-15f4-ac00-22d9-63f5dc8624f1,3155112512,17996072285394977403
+b38ab1c2-6979-97c2-0a5c-0cba172b9f86,4088412922,7882110325037624554
+f12e0fff-2afc-8699-b515-1000473fe970,2101543230,5943415336993376259
+511e3dcc-b3fe-5a6a-d0d7-1ccc9886ed63,1345226468,9447870156701627423
+84793eea-89c8-eba0-67a7-48d485697276,3701944003,14112232370203503458
+03ec6e50-57fc-881b-b6cb-5a8c21b6cd31,1488338607,7291244728343121484
+8eda482b-dbc4-fbd4-9d72-4d1b6b5a2cad,1734559125,17874631728251379566
+061be7c1-7a2c-fb65-e8f3-0e81ac631400,3755699736,2062753969651180236
+02f1286f-9a0a-55be-d247-6dc1c2b77e57,361900985,13810318509339459751
+c5372448-aab0-cb8f-d0a1-9b4113795e66,850917354,10441304997182422658
+b3991788-f82f-8411-191f-7ce036a27244,266359545,10514227518954766549
+591b466b-b78a-cc20-96c0-8c827502d449,4084265413,17106887346026342700
+285d5d73-22ad-b5fc-6db1-274ab7ab151f,2943341306,14140853501110643105
+ba58750a-01af-96f5-05f4-917ee3c0e1c9,3534571535,8009357792820630732
+dad5a5b8-b2f2-0c3c-3c4e-82f3a55cb6cb,2748520486,7392446342933839780
+f5d14d60-e2d0-a220-aac3-773f3cdd15ed,2170348283,7612879726694812203
+d01c0afb-924a-6344-dd8d-80593e62e9b5,2675155751,5554237213915572484
+f2717560-a722-ae26-6048-5c9c68cec412,3571256952,8558497970281088777
+90e2716c-930a-55f9-1c45-211ed9fcacbd,4212306926,4673548399711030612
+046b3896-14af-8ec1-332a-a71637cdeb83,1025707767,12906438700327205556
+073dbfe3-1c18-0a4c-7008-cf4c12b136cc,2803385151,16587826768260415410
+a6d1ccc7-156f-9216-5752-72a77f6c9428,361836930,16713650594538949011
+31cb05ff-de91-8eed-b2b2-16a72f61994b,4258515135,5623357131222192925
+d0e5b208-9546-79bd-61f0-b659f2aeabb5,1641427398,14627436073452164747
+494bf71c-2e5a-d520-071f-83f9340a30a9,2617434699,8575644439254717381
+531b5303-61f5-bbc4-f2e0-177213e8a3b6,2430050937,8562437475508735851
+dfb43ca5-ac3e-0350-87d1-446e0fcdf54e,2827192627,2797239304452715915
+1f37fcef-5b4f-5bf0-5279-078c96446ba6,958563793,3387623057488050945
+a23503d0-10c0-ab58-b049-b5fddfeeff2b,3330945485,12422264847429324603
+d530e035-809d-d499-4700-cfa0d8f23137,2865665336,5381105659807176439
+789ba031-dafd-970e-cef5-453ef7371c72,3896674061,1388789051775074870
+ab15ff2f-00e4-4d7b-c768-2fda8d3d2592,3255645651,12966662509857648459
+c2685dac-8600-e1c5-c0b5-ffc1bf1f6b8b,729668759,10372854478102266904
+7876cd7e-364c-b21f-448a-2965edc9dde9,3562422419,99468366883051933
+57ce9dda-a479-4009-1d2a-69b80ad5cd5e,1024511190,5475863836173724865
+f47bd2cf-6e44-10df-c178-e725a8e91012,3512677226,2863373723445031422
+e1614cb8-04b2-c2af-4868-ecf340a5e79f,3042293201,3267445262411050155
+b9b6207a-1101-d697-c64a-75696680e02f,1489786295,2703862683453752909
+f2438aad-a448-f310-d0e9-4a9e53c23d14,3419338767,737158255830990591
+b9c142c2-54ea-5fd6-7051-5d3e7bdfb315,1137104489,8969401839228071205
+e04172b2-f647-edcb-99da-be999ca50d4b,2298334322,11340388892493931681
+3882a43d-c8b1-b493-be0e-c70d1d523df7,3971247408,10156314146491717736
+ac13fa6c-fb62-315c-b234-df886deb0e52,840035745,10535221802965761463
+9e1c7c88-c792-ef67-2100-65a0702e094c,2581223039,6500213075996812251
+c6f019c9-dffb-0c5c-23b8-00d2f59cdaa4,3166922407,11125776827763170773
+9c7d7f46-a893-a3dd-8394-ffe2e27e5668,3068637026,17198990851250073087
+f6a1ee02-3ce6-6140-eae5-e6d91261ef3f,3630115417,3605909892917060559
+62a44bc6-86d0-1162-8156-0f369fe1c4af,4193574700,15891077110545741770
+fdf86a64-7514-17b3-65f9-2dace30dc4ac,2153772528,13039389666706915205
+00db7bb6-f224-c2c1-f7d5-450ef4bf671f,1292969440,13108422133286449809
+eb0e43bf-3bae-af13-0595-588023ed57d3,1395568361,10162448624290315459
+ea43236b-8058-c761-e716-4a9f5984ec11,3069088584,1279988497875209583
+5e303a48-478f-89fb-575e-075844b019cf,2809856061,12453636304599444628
+80ae1479-7c51-d785-c461-dcffc495f185,213028887,12680909131641980654
+799f096a-6d89-207b-98f8-d1e67ba8ea9e,2408912604,7193448395429293426
+d83c40d0-a676-1f2b-c893-e76bf29409b1,3646047117,3368164711133575688
+2f59c2fa-3ba4-1c09-1c1b-5b96d631100a,4274489062,7820293254556413169
+13ad4f20-f039-eb18-3c62-175ea0ce1b67,3539706396,5588955971257376981
+8ad60fe4-be83-04a3-fc88-874e2047dcf7,1934893593,5827377266973560219
+4e20b07b-79af-3542-99a1-cd01e0932546,1408164922,12275213249016082603
+a0aa85d0-1314-4a1a-5597-cbde3fb92ab5,2768323372,8032280431029056098
+8d0d8d0f-15ab-7e4c-863f-93cd2b6da159,651164149,17596747377779324541
+313038f7-e4fe-81be-76a8-4a4ba7e6250e,2788838147,4898654038947271759
+bd2abc67-ff99-66e5-b37d-c518b6f88363,3941720437,185331332512344969
+b93333b6-7b38-84c4-2104-16d5a82b024e,1854651109,7764334295819648094
+d21acaab-aece-4bc1-a5f4-14efd5ff7438,1568938759,8129770230132334073
+a419b3b1-39a0-28b1-fa07-1ca311a75a82,520955902,8610627261568548159
+a2600035-7e66-330f-ace0-18575a57c41b,4289049980,14147344634411940682
+032ef599-2189-72f2-53b9-41c25d6f72ff,4118052231,608937255087774043
+56a17622-3882-94ee-ffa2-beac4134321d,2581828747,10728391396063950541
+9c9d7eb8-ffa6-4b54-6bdd-5fc74bf12ed5,1112106770,15939612957072074005
+134a805e-9925-155b-5cf1-883abd6c394b,1713918782,4444474284289266579
+46405e9a-4cd8-606c-120a-c391203fd672,2952898869,1274729041187563804
+8c4d94aa-246a-dc44-2650-f867293e9f46,1256859622,12044630881278772155
+53442165-3508-3ef8-01b2-496ea57f9ac6,3804402793,15842699818940719955
+870ad735-34bd-f87d-8ba4-fe7e59f8701b,1099699025,10222937439378133375
+3dc3f990-b304-141c-4d09-354962663dc2,2834426871,8212187125291678522
+8977fe89-3c0a-5d21-578a-f84858aeccb4,3987558059,6168502785794961415
+5eda3426-3ea2-6791-0de0-26f2e22cb8d7,2914670273,5448219297449689547
+94ea2473-1ee0-6e88-3685-0aa3b3859b9c,773407144,2368771631060293263
+4e9edfc3-4cfb-535f-a091-c56a42f8c48a,2004755113,16275050692649706962
+789f4f3e-0942-cd2e-57b1-ce7b1a276a29,1839866064,11151939796261758868
+bf4fb69e-da25-e238-d855-55436af2f471,1535315027,11922335217032772064
+71a66ef0-49a6-a4ab-9f93-5589d07354a9,4281138410,426150837851358073
+7d6cf2ea-cf64-b200-ef79-c448f11d6dcf,4125440404,17303968731616181640
+ca583822-519e-26f0-104b-9314fefa79ed,2411082468,13934017782212428255
+c38da24c-7cd5-0d78-6a2c-4114c34eb344,3054309990,17155308623912000851
+087b116c-7b9e-90f2-ccb7-1b6f2552162b,2214665315,5013872534341645725
+0ed34686-85ed-4afa-6f11-9990c1618ffb,1071056749,17839188300299078057
+a83347cd-7496-9b1d-df83-ae3253cc0710,3699087202,5598740538371239945
+6247c8d7-844c-b4ae-1549-2e463f46c7f5,3836073779,13815819466684176190
+4937fb9e-22b9-a230-2653-0a96b3d5de8b,3998729920,1019802217533691706
+90b2eafe-ec42-49be-6746-4b3a7c5ca47c,2426266402,4696661831220969162
+95cbd0e7-e4a9-d83c-3920-362242113a45,1751945468,10917337770773527176
+efa1caa0-3877-4788-5622-ef0539d98880,1925944579,16499011009293571311
+7c3862b0-dafc-a941-8874-01ca901dc040,3687465225,4973091875640751176
+83875bb8-bacf-34dd-0f38-3cd4c56d1049,2641947122,11756608367685707348
+e94a0030-eba4-02da-d285-351402d33fbe,1074047191,6394403014999765237
+6adfdba4-46c4-5628-fac4-23fe95a3e28d,3982180421,17612181251484987173
+83897272-76be-97df-c73e-8478d74e5abc,2641614374,8145188865800608357
+c7680c3e-d7c2-a6fc-c311-507833fdb3dc,1723613822,12949793568261844462
+c1efce2e-4d4c-bfd1-a09e-567b47ccdc02,1451333102,18060909971694074413
+9e3d0028-a0dc-9d93-8073-302e86588524,2152582303,17583046930988775528
+da87b225-6ab7-9bd3-d3da-a463de6cc174,3203803268,12965079481402996216
+310ea344-6333-c819-13f2-53f2b57bd4f9,728726336,3656355433865073947
+3db105d3-f1c1-662a-d8ef-170efef30776,1205526842,2483815968789552117
+5618687b-1974-616f-c11d-fd83a9133fe1,1275756021,14313232558747164871
+bee77367-15ff-f8e2-0a90-6e1336b99120,1128559201,14990912661445734306
+4038cc71-6bbb-9321-836b-0b222f348436,2481455938,143224111759833069
+48a9b357-481e-1cde-043a-4be1f8c35bd7,2795417063,9075560519830782445
+9f3d8f29-b7fe-bd7b-9ab5-6612d2f430ba,3416906583,14711982282178749479
+11faeb97-456d-a574-642b-240880f47e57,3715833393,1944408075965639922
+38aa3459-2c60-f3e1-7ab8-e11972204c62,3632346601,8444347908574050991
+02445de8-b6a6-71a7-4491-10eda1657cfc,84830409,13066408849581165589
+33a27150-cac3-f76c-b427-cf7c8418409c,3021372345,668121601601500684
+c0570506-2dea-e3c8-69ce-ca46f2de5eb0,1320973544,4594630243318617507
+babd724f-e91d-d512-42e0-2d60cd6d999f,1875104774,1599705533449452390
+9584034d-18ed-1b42-2fad-495d4451ae76,2321096297,13431910121262406278
+96768cbf-0791-8937-9d3c-b3e02f721c6c,3516177288,18384039902549682402
+2c0b55ce-c77d-b711-e0b6-6d68ef2d5f79,3907117869,4798677436986855774
+50d5af09-d8ec-1b25-32c3-3154d8b3638f,1055141318,16911516147816942762
+1a82b1a4-74a8-4042-2d8c-22ca0e6ba313,3647597287,9827080883279617919
+31dc0be1-a142-5ffd-5c31-341ca0d7dc41,4190904496,15177079858483749081
+a1f3b053-603b-54da-93ac-c6d4a81d7487,660021850,17804790990299178165
+9ad82aef-49e6-7615-77e9-23d9625b6394,782857002,7392111205355641365
+1ee33d96-81f5-a665-15c4-ac6e834f1a59,796250777,3692854746805636798
+da663e39-a5c2-81ea-08fb-c1760983412a,4157628875,9311173852214230551
+bc6e5257-b913-b0f4-3f13-3b027d3e81d6,4189417520,3785748251978277013
+2d731eff-6da8-7530-2d49-6dabeaf6cd34,1827548064,2925587795012456709
+55749d60-74ca-378e-a3eb-acd7be020701,3404422806,11643950625153530436
+ef3a793e-92cc-9151-19df-831afd00a376,2141302428,11262543474745877546
+674fdc2d-237b-9d63-c8bd-54e9373f45d6,621117435,12324484867923084589
+2b84e76a-bf98-eae8-646b-ee4d07d075a1,1634344955,2350190448364873414
+97a501b5-65e3-5c00-d2fa-2070c85b08e5,586012162,8335156407639703571
+c129f61e-8921-730f-3e9b-d89d016d8806,2128578767,15711687502372210280
+7ec5cd71-64b9-0919-66a4-8b5346bec615,3781534245,10355757149255974097
+9642db42-2a05-e3ab-66d0-add4c7f4b3cd,1129253855,6922463186028814045
+c84dcf6e-0048-5842-4d9a-45e0342540fa,330169568,11457921611986407357
+35762275-307d-8b30-d262-849845878024,343554982,8934981928372225843
+5bca6264-b887-32ac-3698-3ba58a7bf593,498335664,4909583532185763795
+e5e1a31b-f29b-2700-907d-38430e7e65ed,197930206,3530521919664943405
+a0e6f4de-3aba-6601-d4c4-74505f74f7f6,2918254841,72291579997165401
+a160ba55-e26e-c6f8-225f-3dbb83fd0559,3825158793,8136846724852133887
+1e28c7d9-c576-a349-d87e-989ade7f2f8a,3289103576,16217682832006793858
+575be000-e872-b326-695a-6b06723c0106,3609147835,9384080287136476925
+4e790d37-810a-3b30-af55-067c8a85cd0b,1156005279,8161849633538935169
+9212f42a-8bcd-921e-701c-ccb8b17593aa,1081212722,3541157959907449806
+e04146ba-953f-db8e-d97c-2b3753409958,3835180074,10417060867715441320
+6569a19a-61fe-8639-1e0e-5ff8055e6ad4,3768222836,10472287051701211049
+d7fbf7d5-20ce-76e7-21ed-450c4a91c71b,94101810,9051364462115333453
+54055087-cc4e-330a-97eb-812101760a8b,3354678637,11088746283077809120
+9001f81f-6db2-124f-17d4-5b22f2c62d16,2941822141,8407236903117725904
+14806d5f-73f6-0a10-2505-25f4edfbb001,831030004,16400472911028179889
+2dc1e438-6ba2-683d-b420-e304cf68094c,3375171474,3315015066468091202
+fc3df8f3-a580-95b1-ca1d-534abb2c10e6,1270128081,8691900637119244040
+40a66e8c-3eea-446f-79df-0f7f0934bcfe,3971483963,7607064023911999975
+ea7fe31c-845b-7a66-531d-a78fa7208e60,676526545,18363320862414382723
+4b8f1e79-edff-2755-fbdb-590edfd3de5c,136034284,54706862922397312
+583c4642-ee78-e0c4-4c8d-0c6d416962c9,3112070136,10409270417202748883
+34b87882-de17-0254-c51d-fcc2a5441478,3531699993,11235397822882479381
+ad4f924c-a8fd-8fc5-4e94-bd696487ae67,720551628,14867524312251767022
+e7db869a-b332-d019-aa1b-82aca4abc594,3533988015,8141045360158932132
+05d8929d-a8c1-a45c-c129-5a9709fd0ff4,484909946,17189349382004003837
+fc63e7b4-4fa7-2649-875a-344e63853293,1802621958,7282771886384981302
+57f3da25-778b-1ecd-c0e9-cfb7fc27198a,2414758422,8445279186379186675
+65eeabc5-f1b7-0b9d-4e0a-76c454a5d841,298013580,15753513205428460765
+7af1db0a-b6f4-667d-d5d5-e05d788e0009,1942881851,16618453401143478559
+369ca3ff-efcc-4ee5-ce4d-dcf9c49c3251,117842691,10444950799157061789
+013aa104-c2f8-87b4-a9cb-801e61359954,2678199883,14592491958304891069
+5e587150-69c5-94d4-de4b-1cc069867ef0,2321990252,10140637451012838234
+dce34fc0-5ed5-9709-4115-d3422d2c8e81,2678734462,10403938878760754981
+f8e20851-f06c-7e61-5d87-5528f3889d16,1134383307,7394026777209222982
+b8918598-a9bc-925c-b3b4-9036a59ace50,3466784543,10342660392483963475
+6eabb8b8-ee98-0317-87e5-5911982e40e5,724442714,15540563462830882879
+b3752db1-c994-4f49-0e39-79df9cd95d4d,562540152,4288652081772821467
+77882433-f59a-4760-4bb7-f9d70116bf0c,105197310,6536744762453194464
+9c46d8e4-b0d9-e0bc-999f-947351f0061d,2430987584,18133787006961133916
+37ee1ad8-2181-b656-30f1-02c6572b2642,3591915316,9189574186821037414
+99a5747a-2e10-f87e-0a6c-21be3a1b847d,75070634,1365763699151392981
+00bf2024-d3bf-994a-35d4-040a4fe2e4c7,3962970623,5170521371436086193
+20b42577-f0fb-e0bb-7e97-64050991be9e,3193787405,8230824493642760212
+f51a54dd-094e-71e7-a4ab-c56125043d17,1705748254,11487747456936050646
+1fbe5262-bfc2-066e-0a25-f4c316830d1c,2648301662,15372535932059833470
+1d1cd49e-a160-8a71-85bd-b0df989074c0,3250342292,5262105811741058369
+8d474555-02a6-efac-57b9-405bf5529cc2,246479654,18383468945212642645
+c276d5af-bcb9-7371-0f87-d0f89d3f766e,2059371757,15157662191075475127
+091d74e4-b3d3-b5b5-b083-5ac2efdae507,2827805658,13678215837687166984
+f7f257ae-361e-fd30-7318-9f3b1eff23b4,3444035876,9236353241965082895
+101667ea-ef3c-c2d9-92f6-828389311468,3316159317,2608151493844256501
+13c2861e-fce7-104e-02a0-ac48473bec74,3505513818,8855198136794106243
+773dc395-a268-b699-dca6-07c9bb505885,2639349877,11782567126122123634
+4c990574-1d3d-a6f6-5642-13c943ad2660,1574662916,11800077018469815783
+25ff9d55-9fb0-65c3-3ce7-7291ae029899,2156104257,2793493362242990194
+f6163be4-0d93-d513-76d5-7c5807ec53d7,4282232521,15408657392269457222
+bd77f1b5-0888-471f-c249-ff827c241651,579700473,17711235379995109322
+5c4de309-1bac-22e8-1855-487e137d03b2,1625954443,11389347838153398697
+2bcc7316-a719-815f-6ac0-2bee3a4d50e9,3134933694,1194676906431781375
+3059839e-dc26-090d-8cb3-4aaba2fe7cd3,2848760880,8657127119281418414
+429b7aca-17fe-2b3d-ba3d-112a981a62f1,1945621424,8029129562197941942
+3626a1c3-02bf-9cb4-a3da-9bfabdd62815,1335115143,6643236286912722029
+3b2c5f99-31e3-b528-b12c-051ed8551f8e,2154960961,4493086509139402315
+cf47bb83-de27-d2a4-41fc-81b77a854141,2514533687,10856162119850914126
+0d54ef59-361f-17f2-d08f-8846389c2ce3,3780885273,8011062884993626256
+6dec7944-38fe-044a-0ea7-9238d22bf843,107626723,438376280051222372
+e87c0a3e-c1f9-5a5f-fbe4-eff5f6c52b90,2202532810,10216852685280842267
+669bdf67-23a1-cf62-674b-4d89ccca4006,188687340,915131182470556121
+f5f17c4a-7734-0ef3-b5ab-75413a72cc38,3476651541,12233664447683435811
+be0a045a-13f9-5a32-9fdb-cf82b31a8f6f,3135990987,12869098135647326008
+4ae9ba52-a8f5-3a96-f3c3-e3417e128cdb,1630218995,18253941612558857705
+554c3535-179a-fd5e-6d03-11132929d0f1,728742734,16597917955554775172
+0621e0c6-c747-b7a8-616d-773fd8398e83,1969099223,15998923969551087524
+296a5059-e107-fad6-0c41-f643efd86460,1887076337,896486483018964791
+cbc5ec1d-aef1-b5d3-67c3-747fbd332e32,3376322416,6387502450823120429
+c23217fa-a0ee-9aec-5a08-c03e6ef2cffa,4098243336,9616128716178264005
+9d1f146b-ab14-f6e0-52d1-de47ea689cd8,2361630493,6626371990327678286
+45b671cc-f8f3-761c-3eb4-48431df24160,1957933871,596792755485851861
+a433bc8c-fdfd-1fe7-1802-8b34986341c6,2519585760,14399741531193242206
+325499f6-b71e-7cb7-f2bc-221e7fab90a2,2310279325,966772090216293355
+430ae65c-f5ee-cdbf-32d8-b3d21a91e5c1,889874701,7207736464135806276
+b521a700-26a9-602f-9413-1500f9e29611,1784606274,4886465430733121852
+1ae2112c-d2a6-b767-2941-3168eccd1fc2,2446852399,16294546982597640091
+bacc45e5-be26-6f4c-e497-dad8ec28fa07,2393277086,17136148673060617744
+5adda137-4ae1-ebdb-8d70-ec05329bdb33,1433982999,17200238507084707365
+35823251-43dc-e133-63a1-b1141fcc2920,3531918466,14126409772087205919
+98c56969-db9d-7ba1-7a74-12022337354e,1389508182,7340429010744346604
+c97e6a32-e500-8079-81e6-c5b4dc0d69f6,2516303784,13282676759969848883
+c8eace5d-0e10-5596-2ed1-b8b096df4e89,212130706,12984508023763798119
+18500a07-57ad-9a0d-d69d-c1cb03ccd03d,2523598644,12255723364579321921
+321b10f4-6859-93b5-f240-a4f50a446e4a,3185362579,9503584832028741146
+c037f664-8dc8-6427-d659-ff11bc14eec2,2764364645,15270103503723530331
+e5513d81-55db-928f-f734-0bc49cdd8358,38235635,12671278611832398555
+dc847322-026f-9aa6-7bf6-da2403aad753,3547385968,9750058116940413536
+f850e788-9afe-177d-5989-59359173bcd4,212048239,1840013242192542769
+ad05cece-d86c-36fe-b36b-8c304792e633,1177257519,1466810255103180575
+21840e87-fb5b-9b35-73c6-01834560f5e6,2630728950,3167347972468333030
+aa3c1331-a7ca-2793-6ab4-a33b3afc578e,4002547482,11657770227971913605
+3ec9faa7-d3b1-98ea-73a3-cf538caea4ff,3064514488,11485953432335967204
+346370dd-3e78-e4d2-b485-236ee67b9977,3855806416,6925522996901843406
+7b72cb7b-7b7f-f737-f74e-026fa980a750,3857952208,1044398546548465350
+54095683-d862-5950-49c7-1246a725f434,125500423,8068297981505872644
+b7d397f6-55b9-b874-9a1c-1aa671971947,3905402478,12762484924865830671
+d7fe0913-eb6c-6850-563b-ee6a64fb9656,2455364183,519263258414665837
+de2bc233-fdf3-713b-ab56-97dfc670141e,1898144464,17373709958672400133
+19c2fbdb-9e8e-3eb1-33a6-acaf1e6df934,1247668200,3805352857918416676
+3e9f1ff1-048a-e4c0-0f95-bd410963feca,351890883,3608557837655551435
+42355958-e41a-db0d-d46f-bb7f8e8e07b1,3869875507,18127145726895635956
+21e9049a-48d0-a702-5272-0541dacbf060,1146515377,11462049241304187359
+14f8357b-5ab8-b7d2-75d8-3020b9d19ccc,952829139,22300963410963066
+d6600134-6742-e54d-bf4c-4b066cb06448,1963176560,9089346950385188767
+1902bee4-622a-98fa-154b-50314a49f7d3,1498555605,6512365290288491722
+a72becbe-f0f3-db80-bb10-e2c10ada0e9f,3077888385,11265396367331909784
+656c8d16-b42d-caeb-3c7e-52b030dd87b1,327767451,7646668284308670939
+1385e5b7-a34d-9094-8ae2-9e2f1ba6470e,252754462,9044807882022659002
+97eec058-12a5-35fd-65c9-ede1606fa42f,1809480199,812470096385373932
+152d1408-1860-bdb6-46e8-c4fc2a623b78,3619350171,10564096530346402102
+adab120a-dfea-a091-3557-ba1fbfbcf12b,3605628907,6900269308426739275
+46bc4981-f973-4c0d-99fb-e26ad535d25c,778175722,17161270676273793528
+9dc745f4-5458-4df0-b550-a7ce3c35d38e,3918754083,890451336234754028
+b240c4ef-c87f-88c9-b6a2-2d8413cad32b,2519163192,1860554299589661591
+2518709e-077e-b5a9-e318-07b1fccd827c,3416848846,14997926088139403492
+20a6db73-7ee8-41c8-af99-83ea22ec43a8,3954024432,423213133451672224
+7f5c1b3c-94d1-b29e-9e7c-81b21ed68c07,1740406886,9222226074490981591
+bde106f3-de98-d527-e518-863bcb1741c1,2916317487,903730693981014798
+2280e49a-3543-1c8a-84fc-cd63e66f6561,304921129,6292725575907385752
+aebadc6e-c6d4-d674-9538-8b95205d9670,3953494972,6259722437301609905
+ba5737c3-8429-7c97-92c7-ff6882d368a9,4033392394,9329354869291087833
+f6aac569-58d8-4ee2-4dd5-e0228194f693,3637343436,6190295485513138600
+e26e19ab-5900-e766-c73f-7eebf5fffe28,2952587503,8876695132104267573
+b7522d42-349f-b06b-4d2c-bb01b109a881,1732236373,1096489897117504174
+efcf7405-193f-2d3c-fdf4-3081c77de8bb,3235381272,735145962000334394
+9a034c05-8b07-18ee-68fa-db6d5fff9087,342504503,13418286973171517517
+73fd8868-a951-9c38-c07e-8c3d3bdb4eb2,1037300679,7710152412108836864
+48b7cb33-fc03-259e-b4c4-c065f0e3afaa,2847365899,8380471262739116163
+97a93d2d-3ead-bb23-7185-d8d1fb2d49a5,2624708770,7451655757762573918
+ead35f3d-7bee-e277-a59a-f586d0d07395,1277065546,13335507719124861741
+f15df3a1-ad82-4cbc-0372-17b1ba891a05,3992406822,9112574583634863609
+001e6627-1c6b-67f5-8ab6-f10ba248b40d,2757918400,10532677650482831597
+3d6193f9-79f6-f82a-ec32-917945b86efa,3172821659,2196080252403272691
+ab814543-93e0-9c71-4907-ba8eff110d4d,3196367371,1400058103773407310
+8eccc725-1951-718c-1ae2-f1cb37fe0a7e,3669229080,14264110722046994019
+a8cede33-49b0-ebf3-47a1-1aa89288d8f9,823247289,4115419395273090624
+3fbd7229-4d9e-fa8f-a06e-d51a5b75cb99,1223769991,11114250051398467226
+c38a5c94-0c90-e011-91fc-1f7c8a9a49c8,2549300737,12506629364814060941
+884c86ae-256f-0276-3caa-c34c5140decc,622864057,9607756888097529897
+2671727f-d4b1-264f-ac7d-3787d0c89ab7,3071744469,6216586886781504531
+eaa910b4-70aa-b9cf-9ae0-5f90e6d2e530,3017248073,14881037549759712994
+8a9b238e-dd46-dd35-96a7-036276b1c34d,3568307904,12867259804794042417
+62c711a7-909a-5224-2139-a609c3632f43,81828969,10714492771201777039
+0a23e5b2-57c3-9a69-e0a2-06814df67668,2417897754,11150558111581444210
+1c8067c6-d623-7594-825e-a4513e24c71d,4105931537,1871588916457468031
+97b175b2-971e-6c49-43be-c3a46ccfd39a,1239245124,16170365289605018072
+07f31461-aa91-9eb3-36c7-0b92c8b2642c,1100281096,9600091336901991703
+d7b692d0-c519-7fd7-d04e-ba0f64f0b4b6,2525766977,13831132769080125689
+c754df03-e57e-73d7-527c-6326ab035af7,4026381485,12243820947771427209
+bbced68b-845b-bdda-2fbe-dde3417db8bd,1313606899,8735426968237776914
+ffe70c69-ab2c-2c8c-8227-afaa0bc0337c,1038425145,4936964932701092027
+2610bdf0-92bc-62bf-2eba-af7cc501ba46,3981746946,9002076993282447272
+c7023ce0-8759-e983-333b-d471d4577f86,4194045452,6051383473031045569
+f4be4967-dffc-5d79-266c-7f8264597f34,2080652878,10461309932577026791
+51876525-fe3f-2959-baf5-3e0a0c146437,2313293606,15556509645397441507
+75d859c2-b1f5-b435-bedf-ab3adadf5e12,2988016722,9030919600020506787
+acd07df7-ecec-4c66-fd10-afe192d9a1c7,3462264240,8165843333983754105
+71e2bf0f-7d1f-eaf3-2f32-88dca49c2439,2909100848,13248088275335930020
+ac6d77e7-2e17-6210-d77f-4fe38cccb2a1,4244692001,12276225413079613123
+16f0170e-8de6-ad11-96c4-ac8f5939f275,1177652927,6363223273571010017
+d9077c90-67b8-fdcd-92f7-375ca11607b0,1031774150,6380530046291726770
+c2173cb5-b58b-21b0-0125-58df0a06351e,1130464440,7669307851993412929
+a4485559-a1f0-fb43-1097-edd2af9b6f01,4196278744,18335785029786929956
+fb7a0851-b364-9cea-14c7-4bec8a1693a1,3000936930,1380786868467142177
+04f2b879-8cb1-a67e-6ab8-5de44e11352b,956028326,4274993510129589908
+bf97f75b-a1f7-6d5c-3017-a19eeb2e3078,4133355122,9677870195021418491
+c67d9c3e-7c50-5c4d-3c19-19efc00adf78,2263339320,15212977938714428542
+74a24dba-b6e1-7bb1-3b63-3007e69c9972,164668336,6398338892199311273
+2ed37722-ec46-b3e7-3c4b-6d9696a21cfc,296500134,4854272796804891090
+07ce4649-3135-5b69-782b-4273ee81af8c,3938251258,2151659933006407191
+07240635-e137-2b6e-c083-b8b9fbc205dd,130204673,13459901648930841436
+5a30b5da-62e3-4713-bbbc-fbff081e7d1b,3257558808,2098360710066917246
+7fb25c5d-eea0-2a06-c10f-a92c9bbbfe26,1349342674,2413420641851769925
+25ea7b78-c7fa-b5a0-5947-f9bd7a8084d8,1929437599,5747144730750727948
+fbc4266a-68ae-b524-dfa1-13a73312e359,1974095010,15090787493428525815
+06171cea-732a-09de-3b99-2c60f13464c5,2897077010,208069435031300253
+a5ed50e2-3f71-076f-d10e-f11388282b67,2042118816,13586701484440531089
+5ef41ba0-3551-bfbb-b40c-0c9a07927c02,1150694362,5590231422436742728
+9a32fea8-ab93-2169-4a37-a140e0898926,1570268152,7620589750325585891
+448b684f-2a0e-f821-87d8-ef17ecbdcbfa,750307856,1831765692534573895
+6331bc9e-fb85-7c4e-c6db-9ec66837517e,3740779373,5695814462729219401
+fafb396d-12be-7e73-cbe1-72f6c88399b7,926161627,8399541150533447724
+20af8100-b8f0-16c7-f250-5b2db4e6c20c,3822732788,2934696012412959454
+21b9184a-8098-b26e-a701-c1524558e75c,603457715,9348439929944886500
+0761e7cf-ea3d-18b9-fc16-9ac454dc9608,3064317383,665225756270338654
+0b67a456-c019-4075-b3ed-9e000aa2e4d5,818490724,2375381943567343311
+af11b68c-fa14-a85a-1cea-ec2d7565c993,2960650966,7666660195184134805
+34b1ace7-916f-3855-734e-e6386c1b8079,1402690239,5624540164381978012
+74cc369e-021e-831b-60f6-7c3413b0ffec,3573146571,7212686546707330589
+348427a6-8ed5-745c-d833-75ca1b24df90,1608209379,10610741326867460678
+9b82f0fd-afda-cfe6-b483-af201703815f,2324940944,1287097663932918744
+f33883f8-154b-2c06-ac87-d0a62a04c7b2,1803048088,10674939504430188324
+8f2dcb90-0363-f460-7799-b5a0686e07d1,3671074352,14675643010955756396
+c602b91d-3bef-6697-9262-399abc993021,2605965444,4842933914541735790
+43cacc79-b75e-e324-c1c3-c02e8e11f672,55169524,9986321141990162266
+33b1bc9c-dc9e-42b0-88e8-95a7c09f3711,2129663439,8720776607347968535
+07da84fa-b0f6-2aca-228a-af2948577f1b,2819938887,8010887993803357495
+48d6f380-3195-ffff-b30c-dc77c66eb8ff,292888767,1114714031702483127
+c1db9067-c4bf-85f0-0f13-483869dad80a,3950962260,2220026535395610234
+a3554e37-9850-bf74-5bfd-cc3827195c91,2191594630,16505394757904934152
+b87b038d-8e83-c376-091e-9de4598983c6,3534642219,18042051815883772017
+1ba45d3c-16af-3c42-9c97-f6faeb29a7e4,1637159902,3640544006666814496
+66bd56e2-09ce-0c36-35ac-142da6202c90,15091483,5838480599271380551
+2cba397b-2b79-db4e-1a0a-cdb3bdea69c0,2557123025,9201574431011427926
+4e8d9378-96f6-564c-c2d8-afc130c420de,3306321267,8722637570148442133
+2ba2e6b6-8ce9-239a-565e-61f28445bd7a,3172289487,10586257707414303971
+f1199212-8b28-fbe4-f08b-9d05aef98207,1498582713,12525872364087659075
+b8180230-5b69-21a2-d626-ee61281753f5,2221025054,17463599753671621787
+29f16a5d-733f-299a-d9cf-60585c6bc08d,3220961155,4612801965463536190
+fa1b4708-b4e3-f0d7-f111-3ef5a25b2167,509051651,14758387426072882064
+92c5de4d-b225-fd4b-26d9-a551a6de9064,1433543655,17549320794484364948
+50302e5f-5f1f-4368-1a2c-4575d3127c7b,3986315646,13852696821029455985
+64190e98-4ad9-2d1f-e1b4-91b8e480cef9,1629977620,8653536562184053036
+3b46128b-2d0b-8883-aab1-fb74b5491a21,2454354743,14967096139259053754
+b59b9777-cff8-7a3a-c106-85c9b94c2936,1740503021,1275482729230260187
+af2d0f91-c6f3-7c72-32db-89831c8debc4,2340937200,6386159780129468934
+eec41a33-a39d-2e83-79f0-08e9e401020a,1230651050,10807382677199198827
+4da162ed-30a4-e235-c469-5900cd969364,935300039,5627087098129227432
+193648ac-00ce-b5f2-8eda-cb607517dca6,1114527375,13555652481478500131
+5d3c9be4-a2aa-c377-5df9-52e5f7eeb8ed,466992887,3820508902792573368
+e4e71f41-bdf5-b0f6-3b5a-2ef9cef2d3e1,883761042,7837939478832028574
+306747e2-f216-b69d-10e3-ba65e6a8824a,2076969327,485336562524903406
+b8f31430-002b-ecf2-6c1d-a6f149a684c3,2875750170,5185606307740189171
+eaa564fc-2e19-910f-55a8-689258fec4cd,1414378659,17503623558907955098
+a7941483-f133-5780-46a5-76e9c4454fdf,2217356090,14998200604901226967
+1786da19-c3ce-7fd8-8958-1cc17ef31a34,850585847,14014479196045192431
+91903608-2035-dce0-e428-00704c9369d3,3496810524,9521921423332794346
+52ad054f-bb71-cc89-4528-5d648d22474e,3989549683,3219514088995602386
+cfa5a05a-801c-fb51-602e-844c2664bb70,4130826604,16032874414466966788
+45aa362c-4735-5fc8-44bd-2007a810c76f,1675925080,3107198788521663670
+b6ed8c17-65fd-891a-5802-0a2406dfb567,874689611,8572664241013921139
+c49d52fd-8b72-a025-89a6-6be3ee70d0cd,273065112,4562537283059132329
+da8b1912-c09c-3fe3-2c25-412f0b8c0899,2980084593,17546886312801210724
+50b98bce-f910-9167-ba0b-0c3b8c76a43f,4280605904,11535198206016671415
+fc1f0905-48b8-9c99-4b7e-c6e527d10758,2567273749,2250854600389013405
+40ff29c2-6e9d-819a-6902-dee5dd3cad5b,3112427346,16047226837091438592
+c9726724-69cd-8c0c-9bf7-6bc698fe16a8,367137958,5330894489516079876
+9f3a4ff1-6160-aab5-0dcd-92ec9c25566d,476740570,10384357298075867681
+d7684fd3-3b09-3612-05bb-96f1b918b16c,388626416,6635867345840791588
+8cfd6a72-d7a2-beda-67d8-a4a67ae53e0e,3161667419,2503923637541653787
+584979c2-aa39-0326-717a-0a4f16088f78,1687900682,2354313542922951082
+c4b7c5ea-f0cf-55c5-25cf-40e27da0c4b9,1887345207,2005879644319476410
+31f57716-29f9-e5f4-8138-9a9c03404e69,548806882,3435454872089776163
+122fac32-a89e-3994-0d5b-d56b92c567b8,2529205772,7170386424507340929
+f9c9e0e8-de2c-2090-c9e5-0ffc1f6a60ab,2776468687,132833871959275552
+9bb5df93-caed-d3ff-e1c1-703f0eeb605d,2577603302,4558016514451637545
+917d91e8-b879-82c9-2dba-f08059dc0c9c,1944335098,11855977073849094527
+22ba19c1-a44b-cff8-ad6a-64de207103f6,554849901,3268370668903497753
+35fe5be2-d986-4527-24b0-c8e577139169,2584678206,4760624099111992474
+e4dea2e0-49ee-e228-bea8-319f08a39aad,3182894853,1886821798147178510
+6c8e76c5-2f3b-6df1-6e4e-3050b7d2c441,2779012162,3642673082965996834
+2a8dca04-87c2-2232-e083-c6806b7b8fe2,389483877,8253117356018877064
+78d84a18-5bfd-fbff-8eb6-9cda19e99548,377475212,12304518517072300555
+46ee50e5-b103-11a3-eb64-07d5af5d9720,3250984041,18252664145869218536
+d3e4d76a-5403-021a-1665-ea2faa2b9ab8,1332549842,8988266687174541340
+b6a6cf5a-e05f-0eed-dbcb-7258ca100c17,1980333944,10168620114136520876
+34fd4423-c33d-6d5f-e046-b1bd1a97ef30,3507225577,15556061535919365392
+32fc1059-5e27-7e79-0e91-f10655017c24,2654641356,4932846322618612738
+3fa76ac9-fdc9-3b24-da19-a6a6bcee2418,1617418206,16657624483548716901
+c85647c4-bffb-6d76-f998-f86fea4218f9,568367670,3264500350254923819
+3e5af548-8069-8a0a-8982-a38b2faf625e,2086663145,2746247219959562138
+3fb1df48-b52f-746c-7a1c-af95313f5ad4,1058167088,8898681047834652661
+a0e8cc77-ce07-d4b8-c0ec-ee30fc6171b2,3564519166,5812111627240975778
+37392b6d-ff2a-52d9-3334-c209bb26968a,2351028307,14875341709056475125
+f422df06-3778-ea62-e37e-b2683d0d3cb9,1753021357,13138568221119308049
+22213ee9-69b1-3e5f-07a6-bfe5ae81baad,3791612283,2940877452355095573
+de014995-98fe-c660-74a1-ed8a88ae030b,2254558777,12095605776898346320
+6fa0a124-ef3f-e1f4-b396-21bebbae3cc5,3352880048,8020315679384921042
+343cdcc0-1605-9b0f-d8a9-25397c780f70,1297269897,3881078006688115682
+19ac6b70-05cc-dcac-9a30-844b87173ce1,1812286143,2777239695267495956
+f4a92299-dd17-3384-8807-8456052efacd,403870805,14663310649847424719
+00da2841-8f8f-c944-3fdc-8117fe4b0aa1,2343343760,10952067939344841575
+adabb313-f7c3-da94-e284-d01fbfca2f5d,4072307933,1286898748316321986
+5084d362-c28e-a958-d5be-a24bfcda860d,3126521948,15811812078246332970
+5163bc3f-20d4-e9e2-238d-9b51e1a5b6fc,1359945518,9526502990420362751
+a6c5bfec-47ee-aec8-f458-fdd9db42dee2,3266371738,18240280441761165063
+c2bef949-b324-b417-3367-b5017008f614,1288169540,11384223992843952155
+35fe1ad8-9735-9f65-0236-6486e00ee8b6,3036823480,3922830132315318158
+9bee197f-098a-b8d1-36dd-0b3f2b6afd48,1875393397,11871441052679258714
+b06c1a50-73b3-8c5c-e7b1-1be2b20d62ae,1798608908,8401976799920780749
+debbd6d2-017f-fbec-5554-6c0368283993,3031598291,7390178397151937466
+021bfd99-2d86-317c-9857-e4ffc216baa6,4145895966,12155797674235343052
+3772600b-425d-cf3f-f32f-73ad3ec3aa70,1296698480,5589331809442694186
+9bd799c2-8d28-4c85-c00e-053d6cb139ac,1659428090,7095769704679260554
+4e9c16d6-92ac-9112-c663-d95e9a7ad774,4058236195,16947741237683969870
+6ce33bb3-7eb0-df1e-4419-ecf88a7e159b,3506197885,15928799973727965106
+20d924c7-29d9-0929-eea8-3c767c186744,697467569,3919420464915728681
+51691459-b16c-7eaa-e960-801abc62ccfd,2906328557,10048252455628781959
+1ba7e0ab-663d-3c51-9f7a-3b48947f6e6d,1044111431,10781834892913641258
+abf9f575-2795-258b-448c-145d1983b443,734985812,5769200616001034211
+9ee82eb1-3d7a-5637-2cba-bf408a6d39ff,2983784704,1277483551340497945
+cca279e3-3290-a668-8293-9db3c13d29a4,3659575232,9934366606047186945
+e0d6ef68-e972-4d5d-4fe4-51acf6a2f5a8,2404015410,9693571096714671634
+bca57ac0-dd9c-18e9-351f-ca94ce8c06f6,1694118071,50286819678556402
+98c4acfc-106a-f2b1-9c5e-93d66e3fd858,3988119808,16352492036069438337
+ffa78ff9-511f-8047-627f-417b884620d4,333130405,470710623637511491
+b984ed9c-ed86-b30a-6cc2-20181f9593f6,493575336,5912467791931152507
+447cf381-a173-ed63-4001-4ad89a0ee6c0,504403127,138482182143974730
+0efe81e1-117f-5482-48e8-156379dc637a,3335693615,180642342879635542
+a7f340c3-f514-d27c-e5f3-1738763e4923,1787828274,640102739640311302
+ad69e851-18fd-f308-1e1a-c606e07476cd,1619601736,18397513721003219792
+d5657f28-8132-27a2-1ad9-61825abf8b35,2355702607,17891311907639626480
+c6c6ccf1-1ea1-c693-f423-2001d233a1f9,2348764591,14102795630007733941
+574c2bee-f578-f68a-53bb-6d6e4478ce96,278506165,1297608247723025640
+4d711f6f-5525-3eef-0f14-a31776801f84,1320454825,4083335207840386208
+6306fc27-bb44-0e1a-84fb-17cd34cf8d4b,2129685164,4740209470636752710
+80e15c25-b904-6476-f481-be0cd5f8e570,2800307526,16894815800881730432
+7d860bbe-7b66-244f-5d62-40a9ccc63213,4136224991,8779504614656881542
+9c8a59e0-f8aa-c004-eb7b-a00994f8d24b,485052685,401011968071216129
+eb3686ac-5f8c-cc6b-a4a4-254526d329b3,1172554831,8841497116675853276
+13f924fe-2237-22d5-e4fa-fbdf12061f82,3099709630,6860560570196675282
+05ba8582-eec3-a844-1b46-85956b7c6486,4207064350,17383925552188763570
+138ee8eb-1a14-1de6-2e42-6f484827d90e,2329898289,2262385157280320178
+b24bc074-7e5f-b1d0-d911-3b5d7c28e061,3524680053,8462175220752751987
+8087457e-e245-d4ba-b07a-015abe8d65ee,4077928514,3091342855105749792
+46bf5302-ef6c-1ee9-69e9-67c74191e066,2806401406,14854280486626174239
+3e7da125-3431-32df-7a1d-7953444a50b2,487346611,4377334916481914607
+ba684f87-c75b-8b24-9db2-e7792eba4877,3066981494,7399914261852168469
+8b635cdd-7645-6a65-0b4d-602f144744b2,546870740,16485213673037661247
+843e0bbb-82d4-c232-fe34-3dac20e751ac,677584998,2609732050571964198
+b41d91b1-5023-b212-a22f-e8423802beec,4050657337,13697571505684887937
+70a30b6b-131b-52af-bddd-f981ca8d0fa7,3990904684,17478813053656598264
+b0a64cc5-e66a-ac78-47e5-8867587fb2e6,129854625,10400046258624554467
+d41084a2-12dd-22dd-15dc-6bfb6f8e1602,2856684616,11834839625236874620
+27b0de20-123f-2159-a36b-ceceba4eb63b,2735810080,303740597548807458
+671ccb2c-2cae-1c63-861e-827198a0e2f1,385085634,17689521628317824773
+5ee9ac40-612e-5f28-e6ce-44968f34ca3e,97043475,14360627213465031335
+e30361dc-e18e-6d63-206c-c90171c4c168,1111898920,2388296803294261770
+f9167329-9484-3aea-aeba-1a1a7acc03c0,3467689532,11074738537365169184
+0594af8d-e5de-2f47-37fe-5c506a3705fe,2793127779,14355642793609778165
+a29685dd-fb94-1537-f0ab-91a5bec9ffc3,1748819157,84246420500869389
+6c7bb5fc-599d-556a-e1b1-5e896641c591,2874201942,2685712197423507801
+fc836451-95c7-fb04-7e57-32ab128b35c7,1478530593,3809509154002380472
+98d3cd06-184a-340d-1328-01844f96aee1,3300951333,13679540888637916929
+e13358ea-5f3d-185a-dbda-f670589672fb,2514282600,8034379275642676076
+270c5fd1-c067-bf10-f142-c9d9a03d23f4,3330683662,17610121954813278316
+1542e299-2549-8f7f-05ef-950225908b40,108799916,17534805547739641525
+f658a4f0-2b84-6ddc-2a90-058f1eb7856d,516841465,4227232994208315000
+71a0b953-b51e-29a3-e620-98a0dca96c37,1955880828,14942156656121529302
+d36c9d57-dca3-a562-dd04-7478b5fe57b9,3154033090,3928315248045934874
+060cb0c2-66da-db07-79a7-64eea61f8b95,2282223799,6582869848586837452
+42cf3074-ffcf-3eb5-3841-be0eac7a068c,382638996,8069027384361010591
+cfc4e924-221d-4e60-cc07-7b0f1e0a5c3f,1265304687,15597881074199353258
+904832e5-432e-5f23-06bf-0954f3902566,3753154554,15671877641131847521
+dc21f5d3-5d1d-8cd2-92b1-344cbf6f9a34,3878648380,2927588145763591135
+1c8eaeed-97d6-8f2a-54b0-cc1f02bdd54f,2664547437,80113605937329475
+ce124db3-7b76-a39d-143d-b00ea623f3f3,4220198759,3950954443042290499
+0162e0c9-f12c-eb84-c01d-8aea838ae437,4087375462,15341693188453359416
+089d6e85-9b03-2512-0a3c-e08640188d35,2707312065,15033782632131778334
+3d5eba51-4b23-82e3-c9e4-4ad3621fafe7,4275921239,6531536425622094788
+b903e7f1-2a25-ce7b-4aa6-6ba3a696da7b,398361793,13503066003018882879
+7756f03b-349e-9dbe-4add-fb4188fbc3fb,1311623837,13717083799788286433
+d2ba6be0-af9d-c6b1-a54f-ad22a52c078d,314931320,6725429337284412801
+87846227-7ab1-d638-1085-fcdbaf2a6955,339628816,2382303047378162946
+03f1008e-9031-7213-4bf4-6844d86fb792,3924288207,12076239490629719122
+172632e1-46ac-7ab2-39f8-3a6e5d310d5d,2438465045,10129347032722788285
+03e4ecd7-26f1-8f67-5531-bddd83f2f4b9,4162667121,6756651540095687733
+211f736a-60d9-32ef-20c7-58489a5700d9,2394727010,15034049931550722635
+67a2cca8-6c4d-2b12-d7a9-5b9316a91b78,3411867520,11145802926685516413
+efc3f5ec-d158-f656-b56b-0b2491a203f5,1717150652,4540881523762044417
+55b485e4-b437-bfd0-0ba3-cb511c97818c,1274986798,12518458628193629111
+f072d4b0-7874-e5df-2846-0e1b9e95d959,1338889857,14085830722447029158
+d00f6baf-617d-0a36-46e3-3638beda961e,398347368,540145977662740776
+ebef8c6e-5ecc-bafe-cfa2-9b2ca07004af,2604685129,7337701703617911169
+0bf39716-9346-f69e-fb59-8eb82cf4d971,210494947,3714604352882305527
+f2c7cc74-9cfb-97ee-ab49-659d8fc0b7bd,41501110,2532270436627073458
+9f0729ac-a511-20a0-f7f4-aecea92d526f,110803599,11561533775497115243
+9d361423-e057-ffc2-ca4e-824b5c8050cb,3788913044,14022062946165359370
+8412d717-5201-1cf4-68f9-c8891aa1cc7e,1500065669,7902014878885791321
+066c6ffb-2b19-33ce-d71a-785121b90624,1466721868,16132131182322383904
+aa39167c-bcb3-3d06-4560-93094f124588,2416464007,17489969692611227116
+dec1ddd7-4f03-92ac-7016-8fde8d89181a,2833833895,7419778231759532914
+e139a877-c819-3d71-e4a3-2529ed073efa,3083178693,17688474537661532454
+203491cb-5da4-17fb-8961-85cd70027e35,3077027793,11234648483772443339
+d0f4e1de-7b65-a875-3e4b-e6915c7aa1d2,3452523320,16250546443346433324
+1ab96dfe-ce90-8f37-709f-f9aa1db06b1d,348945221,10768336320870196030
+f601ccb2-82e5-99a4-70a0-669ea37bf88a,815748047,16757284569157478358
+4a4bce57-f255-69f8-bb5f-a55924d3cbc3,3205475499,3021909677142524491
+6dd86c99-0feb-3fa8-e463-f26de3861d1b,2654412307,9435477242661152694
+532b34bc-b7a6-f655-7124-34391d70bcaf,1417250946,555481386606085906
+36070939-570a-423d-f4d0-8a9f9d200774,462909506,7300377263483298984
+27a62922-ecc4-5277-af61-2e32a828c5d2,3720109238,11396129984772302590
+8d29bd2a-5190-b8fc-20c3-7fb901f60e6a,2767245110,15922931579383220861
+5337ea0f-421f-9dca-811d-ab091e11aa39,1438964287,2019412114746205699
+811325de-a965-65df-fb65-91ca81bda102,469207688,16687232867421822417
+3017a17f-8307-c2cb-c357-f09072928d3d,3880315923,2427626864441649637
+881b5354-1c9f-3f93-653f-78b5a687eed5,3151914205,15969035742676584470
+7b99fa9f-6e23-dba1-6558-ba8a415296c9,3644869214,3146397160174473107
+ccbda33e-f055-7233-6e01-f1061d4a1d43,3211297300,714918765991869566
+d01de2f0-7d5d-86a5-96d9-1283d74fb2cc,1556789165,171086906697913459
+fbf9d5ea-4ca3-6ea5-84bb-be71e3d97aa9,3200431279,3442830336878782819
+6c8d224b-c8ca-6ea4-99e3-2075dc0735bd,2721770853,17873284919692762317
+9ab698e8-34a5-ad9b-0d19-8619ef611d02,1045245331,36474155229932640
+6ab66ec7-46ad-23f6-2f06-b790bb11b08a,2954151115,5640180304673073688
+5980d36e-d483-55de-4811-4a558108b74a,4115639880,4625550542512304187
+cae53917-1b52-c873-83b9-911b1886958f,877985369,14542686459133435341
+baec6795-d27c-0a29-aec8-37a8de9f0c4f,4278418685,16901776801070858393
+2b055644-89e3-c600-3e0b-718b5420bd05,3970631969,8408897918415924915
+62bdea5b-742e-bebc-f9dd-395337b6ffd8,1401684683,7388891967325177166
+fee7b6c6-9c81-f424-bd95-a3b128a2cc62,3256153050,8296641161249792685
+87518fc2-8114-e630-e297-c4bc5b853d5b,3079213075,6863138417967040220
+804a7915-c758-645c-95fe-4f2e0ee5151c,2110824224,7238770702968072589
+686781a4-400a-77e6-3285-1833e282a07f,995328648,8016908905875026987
+79a2dbb0-b341-a45b-4d40-72aa2ac6ac1e,151769894,1627531345736480730
+59959280-3398-f7f4-1c2f-bddf5126298a,3400692478,10856863941883592227
+8e9f8868-8130-070e-f4d2-93e125c13198,2163543911,9859549459833968256
+dd32c516-1050-1096-6ff8-949a83c03039,3793667378,17638427118367040003
+b38f2043-d4c4-4edf-1dbb-da5c80101adf,3778767977,15944314948070306465
+daf28efc-82a7-11d6-5ad3-7c1c0766b8dd,2703699922,2317016089351775138
+48881ec8-6548-9220-3cf8-2e6732a6e847,1391404312,15930906235134819862
+7985eaa8-3bfa-92cd-885e-26a3f6482ce6,808677695,12130939386116407497
+96efed2d-a082-14e1-5b03-d5da010998cc,675867259,6671396875104147001
+23b3e921-29aa-d23a-2b5f-df6be1562dc0,597828631,7007377469067507495
+4ed202f9-7aee-c416-94be-3ba9ba8cbe44,2810041465,13759284839769556606
+cb40d630-aeed-f13d-f414-898748407960,321525490,1305744688175837028
+ddd769e8-1a56-d661-42d3-3a03b62e3ede,1831505604,1383658048618011824
+edd9ea62-da45-8902-f113-df5f4f320210,3313576675,1569118031993713809
+298a25cb-e8ce-17d4-ea52-86871be889e6,723015644,9745039396285802830
+d45a4b54-53e3-d8f4-d869-e2f2255c3108,1071461753,4045587292028670815
+9e0b962e-8546-5c2d-c4a6-af7e55eb99e6,3655717470,2065723689506001265
+afeacd3f-abed-7d17-0b48-956bc839ed1d,2028933580,17868609706868278266
+9055621b-2f3e-e272-7442-e6470a4ffec2,138807449,9167126087964505985
+e4906150-33ef-e3d1-b9e0-7382877cb685,928910439,18312074655278334214
+a2610473-4448-c246-b2dc-33423b4591b3,556220683,13033277824570138868
+7d547237-1fce-9206-c961-708c65d0cbca,3449227058,7874848365133871469
+63ac7e68-ba42-08e3-d902-1f07f5659e84,2895593510,4938111528866783041
+72d7f329-5beb-f7d2-6905-fce3cd294962,2570918901,15616996422951587937
+7e19478d-c8f8-ba4b-209c-bf3368c6c9bc,1697375500,13320558998562382106
+d314c993-dba5-1a78-d66d-7306363a1960,653770805,7629709043115573122
+8483d9a7-e067-160b-417e-08e9f8c29039,1097096399,5955132802842860432
+e5c19719-0e8b-60e0-6180-59ddcd78c660,1063553937,7114187602504830495
+b6f5a588-2a06-4706-3766-0b6d61aae73b,157476804,349381063794974123
+10c76dc5-fa07-e702-1851-48ce5f1c692e,105297708,3999027823457922812
+22f7081a-bef8-4954-fc4d-6679321ad535,2789228132,12601180789048445089
+aa1c5346-c2a9-f69d-4e21-54cf3a6a6261,4006952647,8102134319744743217
+d03611fc-308e-d20b-3101-88a870450ce7,1455331796,7378958991251990591
+01134c99-e517-adfd-5d71-3f7cbd7fab92,580256854,972951734504856754
+1d772ccf-88a2-51b0-f8b8-4dfc53e3f73a,2346338133,5071351970306772581
+fdd152be-e735-1f60-6986-46792a9c1530,184076580,381431508530096790
+a402f2fa-b27a-7519-1aa7-ec9539b21635,4070820193,11238603242748944413
+6a24c8ff-b5e1-3ee3-dbd8-00f0ff2387a4,1751232427,13046353938940022393
+afdeb66c-80f4-98c1-558d-7afaac03914e,423350665,10993694616583013345
+ab06b507-9e4a-5b47-d73f-3761ae3c9e8d,3244110669,913123282359697778
+5e8d00e8-e76d-b36a-c3c5-b678b1fc6bc2,1401779892,15000287828340170987
+5183703d-80b0-a4e5-d51e-a9dbcb8c6447,522776571,4698520795950944765
+c3bfe1eb-a822-4990-c009-ccff88f439b7,3444420377,2602248635205398890
+f4538c41-d21c-7b8b-0e10-2ea5ea94547e,1838777818,8748124173019360266
+cf1bb5ed-005f-c551-14bc-9d849541d58c,3782142300,9293625270918874870
+e9103447-311b-af25-8693-63edbe2c9eac,1058753740,4680860894309469780
+6850e3b6-fe5a-3f81-abdb-206b44db33af,26483269,10382595920991646227
+3f0b3d9e-5626-e575-c5b6-ae33bf545872,2859990734,15212961135501563693
+dad75983-3c14-3506-6395-88a5c2dc2a38,3491182635,1809924243709144876
+e0d98730-ea7a-7e9a-dbd8-ee5db4414f61,3190904092,3473136836419395881
+5503ef5d-645e-6b09-e53c-834b2f666be1,2270689910,10059890441628882569
+69b26472-96df-fb8a-5b15-05985ce5b0fd,2544363113,6140993531631595064
+23c25daa-6ba9-32eb-5272-59c6be480522,1672246194,17892553078441700858
+1287a484-7686-a64d-2f01-5c1a243dd069,52437307,16658579096854424100
+8b4547b0-78d2-22c4-3ede-a0ca72a91557,108197152,9221416881435646822
+a60b8a63-91ac-fd74-9f99-08cdc7c8f284,2498465489,13707636129288439268
+606fdfcd-95d0-53b8-cb04-e370b3574c92,3949359361,7514391569312391923
+d508f1b8-0057-1702-8e15-6166cbc84def,562311313,10678875159044631540
+43b97533-069b-1d1f-9b1a-1294e86a2714,1099701512,16506306129096903306
+e9d19637-40df-b1e0-a279-89fe4dcd784b,2300722719,17012894435785458735
+2068f675-25ed-43bd-2ca5-8adf2f44d8b4,3491254489,12171091215443870237
+2ddcf8b8-96a4-4fb2-bff7-cb5a69c46d48,714700652,11497162925365200162
+830f799d-e9aa-45dd-03e9-e1433e78b2f9,3753569913,8718955785883705828
+f46b1c72-5484-0008-f97b-43317ceb7b08,3732901729,9449426478037438163
+f4bf8197-becf-809c-cad4-26b7cf3a3a46,2398918923,13672053272357690211
+302a21e0-7472-7d54-2c9d-8d6bcb69440a,3076187277,15502717620458970801
+7d7b09b0-dba5-d55b-24d9-1f2421ce3762,227581847,2834272604167447064
+f6059467-7e33-b538-586d-4c7642ba00a1,331231576,11407395128505291342
+b4a3252b-9f01-bd00-0791-2547b0bab248,1304545292,15898456112395528427
+93962cbb-fd2d-0dc9-2678-edd027ef654e,4208797609,14274245225562494523
+7e5841de-d47f-2a49-f5d0-8f669566bf6d,3689474228,12158854984196883024
+2634e428-5c25-184e-0242-9088c7c91e71,3165444933,11860809103880910163
+5f3ced03-9648-7c5d-a5e9-a48c3e0db37b,3732755257,5399314216215375657
+3718abf2-fa4a-fe4a-543a-cb7c667447b1,622041079,9067138139193766240
+da117fda-1964-5961-7ce8-4632bf362418,2348351471,7461919379970107705
+c3f18094-e997-3923-1e8f-06ff1d4ebdeb,319585655,5364516235141117140
+3b2a3741-2ef8-7379-1dec-14270181cb70,376957259,13847492337915526993
+61bb506c-0af8-755d-727c-ff5008c64e24,1666251567,16054556708071565128
+6036f513-b739-98c0-3ae5-33b5f81fd520,614350916,2395271597699750275
+9b3fd75a-61f9-22e4-0008-a076d9a0a2dd,3113388132,15406781874538221339
+5548b344-0f02-6e1e-f8ac-0f3f80cdb645,384275129,13151692573738036431
+746fcd8c-75db-5b33-6455-9fe2cc31879b,1686229671,10381531058835396157
+94f456fe-7449-883e-cb3a-d3c2f642cb91,4223388530,972640547355607537
+28e98fea-e391-57de-12a7-c707a62d5123,3837152545,5971665075612710047
+30a2e0c3-0926-33fe-e02b-1698b90fcacc,1717853840,7554397627120076035
+9556ab4b-0e7a-be04-8294-503ad75a0261,4288389378,6638658483216558365
+b94541f0-4f3e-7194-1875-cb8286923302,1499770031,16820732453492333565
+9e990ab6-0172-5877-873e-5b33298d0b7b,2253850469,1535388700340494689
+f93d3673-d479-b109-dbfc-c80c58b40e61,2223361897,10405188619999961633
+24bed474-ff71-e8f6-6daf-d7c4ac034d46,3522074568,2159867884473354651
+1645a0a1-2019-7b1c-b221-ca3cca80f9a3,3444047722,17198100767812891409
+fcc37ebe-5cce-6dd8-727e-c6ca313e450c,2186369179,15024334873054649360
+b60c8dfc-762b-14eb-b0ea-7c9b86dc638b,677005973,16696458770974039561
+fab1b11f-ff78-d055-848e-1bbf4c05dbca,2372643932,7503093820491440595
+dfa7f3c3-eab2-3965-708d-4bb78bd053cf,2171519146,16761224534849162506
+b5793fa8-aeb3-d837-3b30-3a50a5f81ecf,402172496,12244860867633870900
+d7641bc9-2378-c406-7023-12e59c874c21,3737821670,17704822024482432317
+d279ed3f-6052-09e2-58ee-5db4575fab6a,92897604,11831914150969100711
+52e45faa-a5bf-fe6c-90b2-c6d2d990158f,2512294858,11834727921000833407
+dddcfce2-ffea-ca5b-7871-25a8edd0f3fa,2963774448,17706580313084479868
+c37a662e-68a2-920a-b496-38f1e0aa5dc2,2656264446,1016607919445762333
+2de27a54-8ea3-467e-892b-e18fd3bdc62e,1472418776,2028217663638077259
+3c85dac0-2eae-a466-4680-486019856972,3699927148,7169675447819876064
+ad81ee2f-2693-e2f0-b3f3-a524170ae328,167035513,6348723732201871090
+94c4886f-f098-1846-27cc-edf4b30a352f,1525454940,16918567387439680399
+1c2c759c-49e7-4516-7e27-7e70dca54e37,2228455065,6853315957590570987
+c211907b-ec90-ea7c-2f1b-003c40dedbae,850408346,5193203771638857900
+cbb92b48-c678-89d6-ac5b-3d2858658672,3965967657,2378266966919869490
+7961a57f-e2dd-28c4-c4cc-701db71417cf,1655543899,1067508510389638112
+be1085ec-efc5-671e-185a-fa3104abebde,813113777,16159948507957060936
+76217fa5-0c11-497c-c46a-e81a507d8080,3678004534,5595829829766693508
+db66c58f-fd4b-faa0-027d-fd2198d565ed,35131106,13488486490153846869
+abc48c8c-6e7d-30d8-f0ac-cdbd516adf74,1370197023,7837123712971713208
+7991042d-36fd-41dd-48fd-9c51dcd34bca,2681759458,14410513681301153190
+fa598b32-7a73-f2bb-727b-d042c59ebc41,180627976,13078014461950154416
+876a242a-4b6d-9419-a75b-593b18b1f608,4038973976,13040491631144634972
+90e67cb8-7482-5f3b-c24f-748551feb1f7,1228877366,2754917291228010847
+94a3545c-c334-0ce2-f588-8091e9e73fe1,1641485699,7020563336166049632
+f8d904ac-283a-052b-b7f4-bae8d6b6be84,1368507713,12528209735494386915
+55047a10-8587-6fd6-6939-5a8f95638273,3580440348,17201381486574967189
+86e6134f-a575-0bac-7b30-bd76deac61f4,3094855341,3804792060988820736
+87ce8191-f673-ba27-6631-457a0b504209,2423537795,8893998319906333399
+8d32ec1d-1680-613e-d3d0-999891d4679c,1493986305,12516122282835918818
+4b534474-08cb-ac35-1b3e-c0383161a69c,1819283180,2019756271496142330
+5286dcc7-0b2a-1dc0-6e1b-c37a68be33a8,2683559950,11940252317518962576
+7344016e-039a-8fb4-22d6-805db58436db,219733076,15499744195541115100
+0a85acde-386e-08e5-7f65-dfd208893219,3801269353,7317356685981445190
+a3a35b2f-6dd7-cc97-38b4-cd0bf982b985,218877599,3941234226990990170
+2818f24a-f521-d4f3-2629-5ffaa129b784,2038739651,1658891019941282443
+574b11ee-b72c-7280-9dc5-43cf4474532e,2775194368,10829657320489973575
+7735d470-aea2-330a-3dd3-51739986143b,2933082308,5726734177317847745
+ae784abc-f0e3-727e-0ce8-0a947189ca63,1381538917,5119846709753434402
+6ef9e6c0-ee7c-f00b-32e6-84d711c9c199,4063629537,10827687458987650054
+d01f51c0-16dc-d568-a99d-9e0b643f6bdc,2373919978,12647479594341414124
+2d6fc857-2af4-48ca-d4b2-80aa598a484f,3609220397,189553029758226625
+2ddb2bf4-03db-27b4-0a7d-5af351f4d5c6,2779761147,2509158945847130421
+477073e6-d2be-2d0d-13c9-f27ea6d60a9f,3641248468,2308700139221227850
+28f8c5a8-6c32-f1c0-2c39-9c1caa4f2ac9,1042295421,13933789013133717445
+f10593b8-9c44-c29c-0e21-7572c90d97ec,3180147962,1820738343868097805
+92d9d3ad-49f0-abce-7e85-2cf9b69b007d,1054881655,7776995769633588828
+5a7f81f6-7338-e0f3-aa3a-de9f961d0347,4103131218,12587576730276391827
+b53cea0b-f632-7e8f-6f08-24dbeb4e57a6,56392361,15948530687929677260
+1a190ac5-b13e-ef13-41e0-99e0e9992b8e,2374970541,17300403810822936627
+87a5e674-4087-f347-10c4-bd6ef74b0e10,3461329169,8067446564885654072
+a5392811-c854-acdc-53e4-e5636f286ecf,1318809600,4919650553000295791
+4d3e99f5-f50a-2084-72ca-c183ba934fe7,1380055769,14873426587539711449
+3b37685d-3d41-a82f-4d00-38afb44d38ee,3959179995,5862513447581993583
+9c2100c6-e3a4-4628-9c9a-f13019e57f47,2291576983,14200417727478700621
+47e42d7b-1d3b-c262-8586-f4d5a73d4cdb,3926196558,1006607058165444314
+7c8860d6-16a1-b2ef-ea63-bd3ce8ca6f45,3089426961,9211074496020531169
+c39b6e90-32a3-e1b3-07cf-5670633b2439,2285125403,10534336124922124817
+718831aa-6c3e-ca09-4ac4-fbe3fbb7ce19,4289510338,2974087288267058477
+93ba8ff3-d2bc-b3a4-5805-ab6fc708b3a6,1925981600,14904860862694660173
+f4bf7895-c87a-ca1a-87bf-995d7c3d1d47,3468182879,3065864581260372147
+fc75f4c5-5e14-2a8f-1fa6-cf246d067d1d,1469669791,13653711334525011734
+f40badd4-6691-ebf4-9cf5-3541c87ab147,1783931766,6286282401185945481
+b2afe343-0840-a439-e22c-bc9ddfd461bb,3738072083,16697906854873582894
+0e3c83a9-9198-a3c4-1ca7-6bc3d0cc3479,3212431584,8827539674761962803
+e8877f45-2425-6972-afea-d3c677f839fe,1480739568,14200265629463669716
+66e7824e-f84a-88d6-10c6-b83a095d8c88,1053486246,4974390645449746339
+8da3dba1-998c-5bc6-46a6-5e349bdcc202,3554456455,11615576782920797383
+3ae762aa-e68c-eb10-7ea2-cd71e9697c3b,3193940147,14298217103502319151
+9af8bef3-99c0-ede1-fffc-6eb3b20f8d7b,3605312636,7527971012340960220
+c54fb452-8859-a386-6a72-d40e2f4e78ae,1037655377,11559224144576921432
+4f43d938-c306-4f83-cbbb-d6634247afd0,1681064378,17629290152972454470
+8dd0905c-6e03-5321-0628-77fcebac501b,2094933951,4986620406358909824
+104e3be8-bc0d-b398-0a5b-7c7a9ea36801,2544198336,18225048734364787626
+458f605f-e985-1aed-0877-dbcbd08e4983,3246273308,2961885897004585730
+d7ea9ef1-dab2-e794-e641-1c57134b411c,3164212058,15261706599771945119
+dffaa212-05a3-b092-6157-cc828390c694,1344424153,1893899146817311838
+046205c6-9363-3b7a-94c3-4c7e6dc623d7,2658931543,504819957057292986
+40a06f2b-ee24-eb0b-f347-1185e41d3c8f,3252076698,15102593630306001002
+f7b99b4e-292c-d257-008b-3d96220af209,2308236606,6491888573622210539
+7cf96e0a-e077-7f4d-e546-a1d48b46012b,3948605814,15876773078124555510
+abdcaab5-a797-c0a2-3a50-d429f23572f5,1219559280,16859918776384175
+57f506a7-bfc0-50af-d7f9-d2391e3abd52,1540171439,4915214094647576554
+73aea903-ebb1-b76f-5e89-fcc780c36a75,1241374020,3637823853724047063
+3a6e08e2-9375-9da9-ebd9-be5e70509bf4,1788359178,1631894415567740859
+dfa9bc38-5f3a-2235-835c-afaa7dd98749,2579587491,17434850102386994098
+5db3326c-28ca-008f-07cf-72c691088b8b,2869287376,5974363460535803415
+0b1a6fc1-70c3-f437-3d2b-1ed70f56b728,3335648472,12375006505832043182
+72235b18-ceb3-f563-d20d-fa839748077d,719182110,15815907732216245214
+b78cacfb-5f49-a520-184a-5319ffd1553e,851093710,12463216069708171516
+54ff0f52-0255-93e8-c850-0074638f4e6d,2922058878,12304540254225084853
+6473e3bf-f1b8-21f2-d29a-70c9ed4379ce,1539220926,17201219531181647339
+70c60e82-adb9-f18a-64f2-6efc9175d549,1374134598,3296689870971149324
+70411aa5-b68f-e9c6-9dec-72f65957afd3,3083880733,1919866808064377629
+1b256fc2-4c49-2313-cad0-cead347b4411,1066211229,11494912802121097885
+c02b4c42-0779-451e-d54b-e7d826863d68,3870212384,7486273571222181630
+e617ee86-74c1-c611-87f2-5c48f3819bfa,4164205,10568335601165779678
+b85715b7-e802-41ee-c0b3-2ad84257b1bf,2519862952,6231671267174889365
+3d9e0082-c4e1-f376-3c20-4d775a5f6170,4199016473,18434254344984680319
+ba4ab420-87e3-0b3e-8614-eefb206b164c,3242896173,4589085601311333461
+51ac8892-1e45-dce8-cfb0-9ce92ec34a37,495832677,5323119781705485007
+7cac46e5-8b44-9f98-8eac-8711fe8a5c6f,1734233048,14929930312766752428
+3c8c872e-6251-f3c9-6275-48e4615f537c,1529041795,8144647870660789467
+7e40162f-aa5f-2a5b-125c-729e4f526e1f,1373459915,6787894622379880407
+8421e885-4fd1-69b7-b3d2-384af2b4a8af,2417718164,10325939309247931957
+0d9c1b9c-68b5-8c21-cb5e-a3e2a48f6609,147062886,13018485209562234636
+dccd55b9-ebc2-f9fc-bab2-b64abbba14ca,1794256405,17630188239583993576
+7ddba372-1e74-144a-4883-2388fc1c0bd0,1374230453,10294675881111030747
+49eac8c5-37d7-9c1c-0808-7107113b5d3d,2486910374,17553885689765127737
+c4e643fe-8b07-1e2d-7043-f966fd8a326d,4002244673,5276038074815614720
+cc03a916-ea23-1d8c-f0df-f03675585c69,157042375,15158336908838641877
+b4e82208-ff93-4a54-5c86-7e27619b8d01,2332816242,15639362722274306850
+70c605ab-c707-41c1-c22f-05b34435a194,193052197,1673899357131812063
+d4adc86d-041e-be4e-af0d-e8488ebf40f7,1823456179,11891761395416297742
+313593ff-c82a-e403-a37a-70c39532f78f,1087140923,1615204472361410297
+1a48f2b4-f5c8-3d26-ee7d-9ae47ea169d0,3071085034,13784340111395511872
+4aafc05b-9502-1c23-2ae6-033f0aedbaf8,3756039394,946960472972542877
+906f81c5-57bc-5c01-4b97-c6583b579b70,2466112207,5325282185584889323
+3a0ead84-a035-66a9-aaff-3a486d245588,1278485709,2392214646016451654
+f0c32f98-d7c1-f0b3-67db-f77a2b925089,620048646,11260313018008879738
+87014698-271a-113d-7d1d-9d8d50a8d5cd,2407918233,13166228048596538353
+ed1e18a2-4dc4-1b6e-d95b-2791426b45a8,3935696529,7353500864071650509
+0908a8d7-3f43-139f-052a-ed98277f4991,2809099223,13122440636243537613
+bb204d87-34af-7d1f-29a8-0f3e06a1de0a,1624033261,14142427972594466430
+59ce6685-fead-2d96-46b9-60320ce8954f,2349970518,6124129234255084014
+e81f11f5-10c0-d0c4-e13a-4185bd45114a,3097135279,2730218143400691252
+651a08d4-cce0-e69e-537f-08c96924a929,1896012035,2039630252409446800
+e850b645-36cf-d090-761c-6e702b6747ae,1252790647,1737600324911364742
+6f9dcfce-07aa-30f5-32a5-589acd9b5d22,2374402812,4109861665142474233
+cb5bb6dd-dfd3-aaf6-df1b-3d593e16dd44,4118252421,17269140756991033335
+0d3ab496-91d3-01c3-dc46-b87af8b8bb14,204787245,10884603957416827783
+72919137-c859-44ab-b8bd-db20c1e6867a,2491235574,6035021772962073648
+089c3dc9-1180-2061-376a-73870391dbe7,399516156,4878305312961835853
+a5cc6444-9bee-9f21-3f71-5db759956b82,1628295403,12796593857450676639
+9cdfeaf8-388b-3187-9997-891387bb8fc2,2461212556,14928897856333023511
+2ba750c9-50d1-56f1-4200-92ab329a62e8,2805726172,7726333696353072706
+ff834a41-842c-c663-ee36-0f7c04ae3c99,930161194,5990216840255503905
+28b857a8-d827-46a6-824d-98d1ff1b9c1c,2640696434,5047197233397805064
+4441ca0c-0595-f2ea-5730-b7462d88e306,630482218,16094727656228356227
+52cc266c-2a5a-4236-3f32-fbc28a0a317d,3280854763,16157677991841003276
+8f795a4a-87e4-9ab8-2971-98e7203d278e,3948802733,14201384321805106820
+c998feaf-2dc1-59de-57a1-b67bfdfb1c0e,1509167570,5815023314504671213
+130cf737-bf28-a375-67d1-ac5d33ff585d,1885639083,10704519009438108011
+8d6fca68-e10b-b9f7-06e5-5356cec9aabb,3222620311,2665784327580349309
+1af24933-795b-14fe-ea6f-2df02c0a7534,2404189749,18285702494263125385
+733daf8a-dcdc-e684-343b-95dd2eecf539,188856806,8477422877586155486
+8de2d851-eb33-cef7-395d-39759ded3c58,3861020548,9741508063209702195
+d46967de-96a3-f8ea-ed7e-ba8004aa0b41,727985214,1900791370805356327
+ae560b93-b6c1-0132-d91d-f814988c75d1,4225474589,9677678537856487082
+3292821b-4869-e26f-3b53-9c6788a2fe3b,3545074530,10145096397154856533
+d952002f-0154-8f42-9aa4-ca9dfbee4d18,1326438552,11899252727113598019
+3936ff98-a01a-6323-8f17-d4e1ffd77992,1008549978,16744059788605010469
+541c6ac4-30f4-d1be-0fae-b850aab81ec3,510472570,1160428163482156590
+3e8fcf21-3176-768c-4da9-70be739eed09,1656439233,638031736316134871
+b2965c10-938d-7b0e-128b-851b2759fd7d,2041310365,6151396019426887860
+3b99ef56-98f7-5272-7cdf-f877877c97b9,2052455642,13238859521839784336
+c45804e2-84d4-6801-e532-18bd5c7316a8,396796694,8559062343157439744
+9097f931-94b3-1aa9-0ff7-f01bec53fdc3,1438710471,16760808957850523332
+df9eeaff-e279-220c-1ea5-73e7debbdf38,3945513140,15472730824107975598
+3c88fbc3-84ed-c377-e06d-c9ab930e16d6,3864353882,1305449734909024889
+66a3a14c-0935-5e34-4ab4-d3fd4f04cb1f,227605832,3884920538555729949
+17cf9684-3bd0-50ca-24a8-6169858a1e73,2957675824,385154961919749945
+056922ee-d710-3b3f-b9cf-4b447d328c19,1824661456,432178229585757147
+1e40f441-516d-72dd-0ed0-48c201d5063a,4176935494,15264377931578109964
+3ee7285a-7c74-3a49-9026-00c42bedf1f8,3919234475,11457375343298716087
+35f88541-1554-a3cd-0f75-56b88b46076c,1960528971,5005572761599263585
+d3773b94-f397-9124-12c4-0ed7a0ce1eb4,1750651699,11568379777353442617
+147f0525-b41d-de8a-64ab-aeae3a7c683e,2716684902,11002753657012367876
+fa925ad2-acec-c2bd-0d3a-79d9c5c70a54,843245467,273205953881113876
+eb2d3b5c-2a6c-2fe4-81ad-2900e4a777a1,965669665,14225497115509795042
+cd2411eb-8460-5b77-fd97-30e97d24aea0,3347749915,8053281483341819510
+e0083654-2c3a-d027-ae93-9070d7b52948,3981146751,13316181039291014875
+62ede967-56ec-14bb-0512-5a654106bebd,4116216276,14585220527542638937
+9ac978d9-b75a-ff7d-f6d4-e9314895a270,3303208413,13220718189977094691
+de2fdb05-c1ce-630b-4812-469593121fce,1849170503,1600304974514706662
+6bcd9435-9ecd-bb95-0794-0520ede01913,3110008246,12864068205628421850
+895f2daa-26ba-0cdc-6729-4a49b0a67a5b,174464196,12054893697284543843
+ecbc6ed8-1f19-1393-3c5c-ec3db2502dba,2630849344,8279649525850172729
+0479a278-0fa7-6ad1-309e-0a5ab9f82a01,2517265862,14640602872865504951
+53f63f74-549a-010c-82bc-c80e0b0000d5,2751827037,4202058052451930177
+1459e16b-69c7-8db9-2792-7f4c80cf3ced,1335290122,5589837719622795058
+8e50aae0-87bd-e921-a388-db08f2c13669,296897813,9846219947363309211
+06bf3978-87cf-fe01-a314-d865f302cea4,4166911665,16373933188536861496
+efba8828-b1b9-aa6f-b970-e420aeac9a5a,1087716318,11862458731062690302
+3bd47b22-6996-f4ea-8e1a-d83398644a6f,1831495107,18212140599928022048
+7071d057-632c-f989-46c4-66a373fcbd83,4290379974,1334670274466054968
+db7d2924-9902-57ee-57d2-a379e9b53a92,547276938,8139751056528568933
+e74b6ba5-c4e3-5300-301b-510ac3571106,3833249202,8672026842520482557
+413ea743-4a00-e068-7759-174e224a56d7,23560744,4574755038453083821
+bec59429-76ba-4cdc-80a4-f70de91f38dc,1565992129,14427694821900365369
+fb4fc899-5e7f-2375-1ea1-f3f358e03a58,207045110,11884595529520084026
+5f04bcfd-04f2-44b2-daa8-658ddefa3c76,853028528,2141218462820468627
+e40ac9c9-2d93-b060-641c-57fbf14b2bd4,929701509,13268373112733234614
+21a0d8b2-9a21-46d9-f6a8-b9ffeef718ce,3578063753,14897527921145917756
+66a8b475-750b-aa10-b566-f58d63dcf12d,2703458257,7949046304064207070
+176fbe1c-8483-4b45-4f72-089f9e5c1019,2393987415,14303998435309674641
+3b96dfb2-1529-af10-3445-a88b88b6ca97,2068940344,2142085485028707130
+7fbf036b-93d8-82ce-aed6-384ac8cede0d,1329354566,13082180074723445255
+3bc0997d-6e9a-43a1-3adb-8e3be8ef7760,188252975,2275224223483702926
+478da3e9-fd25-995a-1f0b-7a1fe2fa8229,1920220117,10591193817014193274
+bac67a31-9ab2-2242-7e54-e919965026d6,2334032685,3825147331337763907
+b2df4320-35ff-007f-a64b-c6b7cd22bf82,858376891,1344181193470470748
+67f4c5a1-22b8-5509-c865-4af624c62b6f,1819091191,11858132699049178152
+edab204a-7df4-49a8-f512-16202852b6ce,3199687820,12071685830085933716
+013a51c8-c086-baea-e188-405a33ce9d94,577560972,16883914059687536195
+fd0496bb-6cca-cc46-a2dd-807c1ec1ccc8,1711271376,4808916521855003091
+ad979c6a-a5e1-a393-d981-64c28712a995,3675448600,12445213385582191664
+232eb134-a972-6357-b064-3026b3d74c53,2238265439,10628984675225982389
+344e6730-b1fb-9996-e693-a82a503a4c7c,897324419,15623978417202220667
+58be5d07-2c97-55f4-92a7-af3fa295ee1f,699870183,10998887110112939311
+22fc8ab6-35d2-5d64-f1c3-cb8b64c4829b,2932027248,13444571703926155024
+47e4811a-92b3-9ca8-3ee2-10f67b85ba59,2106656704,16228868195504030148
+95d2d638-ee4c-ae04-935a-4c2fc493b14d,3431620749,10098780994184425731
+6ffc7a1a-9003-1b07-31b7-ecdb8822d0c4,2732176545,17581776792652270669
+d1689e8c-f441-a670-4f1a-a7c81fc25902,4239182654,13085900117234854993
+d7d27c70-d718-1053-e50f-4acd2e3f761d,4030896503,9480101900049111358
+625a07bf-6f8a-0e24-7614-be0e6850a8f1,1971102482,14568798369335849743
+0ae4d507-bd21-cd04-c6b0-f71c7c2e73d9,2813982831,9019557397928629722
+e1a6b943-ff60-6a1d-27a0-e4a596204087,1941981977,8923933887406408123
+37e2bb45-4bc1-8c2a-a686-b5ac0f27157a,241116385,16779568528966215046
+6ab37b1a-d724-7fb2-ae4d-147bcb3e9aaa,3933866558,9132162280043947719
+2f2ac908-5faf-b3d1-384f-40cacad77c32,3108123992,11658220750047632055
+5beea487-7295-e40f-e851-faf18691d9cd,3257407377,14403973999594837049
+12892021-0c10-6579-c9eb-9974d7063e8c,2917220252,4658741886545041152
+21edbb56-e5b0-9301-5428-df964a09dc59,3027536820,6452401353393499017
+a14c8011-2568-7d1e-243f-af9d491fa3df,99697434,13553323720305409219
+9cc41874-5bcb-a9a2-66c7-3eae201c48ba,1771131444,4099813493565043847
+76721fa4-d724-0d49-d6e7-68836ae0e8d8,3328042918,13427366169959601101
+cf4ac744-2ddd-3e26-4312-ebcff2eeb589,3158408687,204043731027020742
+8e2faf67-a43b-a9ad-bd11-99cfbe567c45,3868795622,5709649344286118820
+fa878e92-6850-f5c7-f716-1ab07d022314,1149644170,6209308835004690076
+d5a14f54-1011-da59-e8e7-fb5c4440e661,1388212226,12548770222564150382
+8d73ac6e-843c-e283-33b2-5ed29a2d9327,3624935098,13262618108743972086
+4ae5dfa5-d025-4ca6-5afe-9c7a9dc3ecd9,2016123758,6732846461659156785
+4f6593eb-2cc5-334f-c10c-78f2f8b715f2,2746532416,4075448990879508857
+25c15ee2-aab1-ad17-c3ec-53ebc88e6080,4206166103,1334725590430045027
+92fd1d24-d34d-59ca-5bd4-196a55c574ee,4080124001,10143454011642880672
+d40b7e0d-04c4-6f81-7bca-90d3e6bd48d7,2904823576,9652251402073585952
+60449bc9-b568-d2b6-3405-1012fb71fa58,3219996620,6708425659622402163
+53ee2695-52f0-d7e1-4a3a-a1921636bc15,652300837,9056277695164835310
+6d50034a-b1ef-006a-8695-88273abd2ddf,2679327540,8126376035551899781
+d4864856-51ef-e1ef-b6ef-a2176acd16b0,1173525394,14918088272101507054
+3aeaa593-2dbd-d33c-90dc-e9b0788574d5,268249883,10643125913674260638
+9a5d87db-b211-304c-c057-f251c3d97d47,1429257703,2731796028456748008
+e55b6b8c-f273-c20d-2668-a90c16d9f1ed,3424526282,9069339697151672181
+30e859db-a8b6-74bb-24e0-787a4e92dc62,2368591675,17489339236452434391
+d4234abc-dd50-c53e-52c0-7ba60730d5a3,1019597526,10855768162358097444
+eb0256af-fc79-e852-8b49-8aefd2e70ab3,852790117,791151823191049141
+33de3fa6-9aa3-528e-1a24-b5f2d35af4c7,2662832099,10610843552648422956
+728d42ef-e747-e9c2-7003-fafc73088726,2403137728,13548197039259346847
+9b1c1e41-236d-a949-3b22-12b51c3d865a,3283897181,862489608862008383
+8b5416c3-2320-9c55-466b-7a3d77528793,733824767,7827644080625085574
+3d9deac2-0e28-5932-30ea-e8c815656b67,1773021767,5496423044290658309
+3155ef9a-80fb-9d1f-3a92-c9f6d6f5e7fa,1671357556,14073379814804500890
+76e90a32-fa0f-779f-28d7-5522ca4812cc,999795014,11172315999554105011
+36045896-6038-dd22-8b69-3ea520db9041,529958465,16835195218083493045
+91060bdc-c7ef-2d91-52ae-5d163a9abbb7,2720902791,9869649533164520799
+ffc03cac-c0f8-8efa-083a-d0c32027ee12,3808899042,17134847895113670284
+9219beda-4132-32b0-88a3-8db933c80c8d,2226728201,6603980671617461906
+1405c10a-d5e0-d92e-6f03-60e6781b44f0,2434139850,3649536173298995140
+f0b14e85-aa24-eb34-f71a-191ea171953c,3662403685,16046956931861717924
+462a9937-8167-eb13-79d8-68f72f7397e4,2524617275,7960466354410323855
+f31d4658-390b-6bd6-2fd7-e56f52fae5ca,2323417664,8260131657441301880
+f770e063-0980-97e8-7049-622804f26c15,285281043,10108072462246062146
+956df74f-c0ff-07b8-9903-ad767e3202ae,3381729655,10963384939874513163
+99a558e3-315e-8c64-7fde-b057e93d4ade,2349404613,6150248106290081330
+c2e5a626-6f43-0457-d2f3-9393e64adbfe,2947745359,12292167548666865743
+3cd5ef2b-d2e7-05ac-38a5-30e92f3acc8d,1011896796,8943542004872404989
+7c5dd72f-6641-c3c8-3639-21f8268b3cbe,3771196275,2307373012467891125
+c4e71ac8-c851-4fb4-abfb-115257f379d8,118022848,68302730575063864
+8a8a9b99-ebf4-d3b7-1c1d-8824fedb7de5,309632541,1330439527416494278
+dd7f884c-d36c-dfb9-1c6c-855098784cef,569507815,343437457804799180
+187b1e6b-88f1-8025-07bc-864dc6eb47de,1344829741,2555558472407334112
+1d11e137-fe79-1c73-fdce-c2b918f1c541,339234953,6586900192064583535
+317fbe5b-4b7b-6bbc-1847-90d339964742,942475031,4356262023279364071
+6d0dd2b0-3af7-e298-d110-699907a1803f,507461289,9910331859673196551
+a52dc1f5-4a90-c672-e714-3b63a28ab442,2133706979,3367126820553510381
+cfb6ed5c-44d4-ef3e-a504-ab58086efc7e,3497707161,10821944667290992537
+ac50055f-5724-d467-c167-184a82b08478,517217532,15951305489199663109
+a253f2d0-bd4a-5159-95ab-b32aad5e8a91,3313840412,13234139082849506688
+a69c441d-28b8-7558-c5de-ac9c5628427b,287867487,4388737414400585082
+fc7f6c65-4f30-28a1-7720-14cc27ec4124,2252969427,1949580876143691661
+4b77e811-dc66-4ed9-b7a9-7d5173e473ce,1557218679,7337672819243625712
+14e0b83a-f28c-bebb-efb6-37824335d096,145858561,15389124389414801445
+937defe6-908a-9505-6677-6d472bcb37b3,721806070,2654360260786083810
+1e8bc676-6883-7707-f8aa-6b6b2498da4c,1144032983,9975135495304208028
+c18fd71d-b295-d5fd-a11e-1a2a3d914bbb,104036350,15387728468898731558
+2a07ce7f-0781-89d8-189e-2d98d5a881bd,2547651158,1355488626537926358
+549d2120-2123-7f90-c20f-8dc31c7ff9d4,636926521,330846244263357903
+66866b9f-9c41-c9a7-6910-47bc3909164e,1204081439,17227834149340536503
+6d660e47-fa20-8c03-244b-9baed8da9c20,2107562473,8570542816873366148
+b09febaa-0c12-8807-07cc-aaeaf9930a52,2460898033,8491813385430674118
+17d61697-4f24-1f60-5d04-f9ca8e7efb56,676401473,9428642444586372654
+8dbf4f4f-44fd-38e1-ec17-dc25d60c8d1b,2500188997,1748536539350622361
+b4b1d5c9-5a6d-cafa-1713-0b464830e269,3975498796,8174058983524782301
+f630ab10-2ad6-508f-1db7-7e5499494d08,911993979,12083277933141682381
+4f97dc1f-e8d1-848e-68f5-ad383110b469,2239996608,440291866893409516
+8afba0ca-ebd9-7191-bb88-bf9887fffa58,613808434,13659019207680717121
+f59c33ce-e948-e986-a718-3a571de56cbc,413188434,10019716169332035999
+53a9f10e-feb9-285f-4f0c-f14aa315d37d,3589873041,16958818391604621305
+84b41b6a-e7b2-aec0-5a5d-c60c79d70809,3304591283,14725055306530115415
+c50e9acf-824c-3f42-1288-e1873aea56b8,130785170,14824913768781832427
+196daed6-1310-30b0-7b92-2e368c7db0f6,1777331647,17231521332553231609
+67ee0341-db32-033b-faba-ba7d0d360685,2629568787,8636090392538591351
+c4916279-9643-8796-a8f6-fb9fc58c4e20,477898241,13429047877985446542
+684b9449-8409-c83b-14d4-9384d3078f5c,127507751,9520604491106223988
+a5922b72-a277-bd84-b73a-623eee826cea,3279540702,6460526143950418188
+2a781043-e9ea-04d0-d833-8cb1f555b69f,2623237379,12686247311622246158
+e4d9b92c-d828-f35e-28da-c10816bfd587,345021202,7729004915060111938
+027c3b74-85ed-5aba-0b7b-05935fd65e75,2657473898,751457566223579360
+354acda8-9cfc-82a8-dfa3-3489c0c1c8f1,2778812013,10004866774464748886
+c5de0689-e95d-e166-34f8-cc5022a081b5,1052361786,10190093434188701249
+26f5823a-2ce9-8d6e-46e0-02a3b3d976d9,1625812701,1305643606217326137
+70607d67-9042-2c71-284b-735a888e99a4,543316978,15640031485114422339
+cbe2dfe7-0ee5-3bc6-5232-1fab4acc6f4a,3956561558,15027508506994489828
+2a06bfc4-3ed4-bffb-51af-ad2f243fa7de,3535122218,3135865085040305844
+4331c8cc-c82c-a4f7-ec1a-55796e356024,1505601858,13617463106410653686
+727bde66-2d3a-7bdd-dfa8-4c84f5989e77,3973841241,4248166541613924313
+b2536439-0e85-b73f-c68d-002077e0a216,1428789514,3471727957576768292
+0b4d5b1e-d6e5-3834-819b-4fa07fe9c438,1222295864,3854738883642230549
+29098016-613b-1fce-6703-2aa36fc21f8d,1604945586,9671865428834640998
+b17923bf-9fbe-c979-4c56-243182f39c40,832245238,12570034539899542860
+6c42ebf2-7f07-44a4-30ba-f32c5c50c841,3551408504,3457227414509809158
+ebe578b7-d30c-eb16-529f-a921db68dd7a,765777906,12637678117871335183
+2c5fdff1-aef2-3ff7-98b6-bc695dac4d93,444995012,3544857994600856423
+5c17443c-2083-fcfb-b508-e61c06d37544,1781269486,6340886090459866932
+2cc6637c-9e56-da7b-baea-cd7e55f14d0f,1329542038,1050764753346055985
+d0c753bd-56cd-c582-fc34-3c59e0ede90f,3935444093,5572807950375003835
+4b688be5-2bd4-5bd2-d87c-4dc8bf018f8c,4151696313,11886634598096782842
+f696d6bb-d000-fc0e-8095-36a6b452215a,3080825825,15837743743547654332
+4d5f24df-5e08-ade9-2abf-5f24070feebb,3417319682,12696410707062662102
+12ab279e-c5f9-2dbe-8483-34acff558a81,4155772132,14299950135014760809
+401815dc-80bf-ee15-f873-6ca5ded4f62f,3362646232,16723999740665162110
+a78b834f-88b8-079c-c32a-779011c73f92,3563382808,7706897999429548974
+efa43d18-e3a8-1aab-49bd-fdb1b27265e8,173899180,17829544891698646429
+b074c085-588f-9c59-9236-f83cc2b54520,4012713845,5090997169180076915
+40d542a3-3bcd-199b-4dbb-491c7636dedc,2506586169,10545983568251952245
+914f86db-dd64-a076-2dbf-81be705e3485,2659116644,16114786396417974593
+3af1aec7-8cc5-7672-9bc7-5249efea8dd0,3064325343,8261268775608418178
+eb5e982c-66d6-dab1-7da3-bff7ee22ada6,2185531418,8520781332835159547
+6e59f95e-0d84-296b-756c-017319ec04bc,3387836729,4150355249403697914
+fe3fcc01-c81a-2d8a-5aee-a72f94c7bcae,1333905289,941106033783156027
+455d84d2-b2fd-485d-e2a4-efe704f0798a,19283019,9465583240920829230
+e14641ab-3c33-ffbe-dd14-61cd54201af7,1276588124,6579285106183890310
+a45ab669-d92c-8ee8-879a-ec4baf967af9,3806102281,5975318627001966074
+0f20983c-e8dd-7a56-0af8-d2c3e19cd26b,3343040307,10849831335732549897
+178af207-4a32-5ece-bbe0-40bbfd34d727,1998220094,6212037593992168180
+a0e5ec5e-8188-c3b1-7a33-8a252cf45e03,2028789035,13815489533449655563
+36c98bac-f705-4f47-6181-9eb77f609a47,424806577,10172779267342137860
+c0bd81fa-2814-8ab8-ca4b-1c8bd808485b,1963672944,8130273359208472006
+3a3af422-9569-63d5-eda3-098ae8366437,542303664,3437024113511360055
+08558a5d-24e2-2c2b-4ef2-22b475fd168b,590528475,835903910877109552
+443c6260-b880-7b8b-166e-fea24d73ba5c,3129667883,16782719112135411587
+99ef1fa0-2a84-4ef4-690e-374d79795cf3,644522255,14840745603451622031
+25452d8a-657a-b999-5a2b-76768e2be580,3718869687,10890077669609892946
+dbd18370-975b-ba40-39f8-ad43ca5290af,202626011,12508360693368907670
+2f2a2fb9-d56c-cdeb-cb13-e3c8346a9620,4000862880,6144474239380994839
+2e011112-aa1d-f5bf-7dd2-bf8f8510c9a0,2523352577,4613142159831460311
+e2a08f28-aec1-be19-eea1-137fae24aae8,1089170761,4190309553681676426
+8785455c-5f54-ed28-4f86-c4e19f183c39,3092365364,6233236387129871068
+2b53a231-b9f8-2197-7555-ecf734ddfe03,1717941771,12991256588590714929
+b9a5ecb1-ae88-30ec-7ca7-8bcfcdddcb19,990348483,14700659188344540805
+c0593a29-f23b-201f-3acb-12ebaa2dec3d,2667187678,8357175366714520069
+3dcf63e2-dfd9-dbbb-68fd-4f2ceb0ff066,1172641109,10717302374175802262
+296ef0e2-676b-4a7b-1f4a-f7f3d931a030,713960094,5439086051917813384
+9b850e61-7cec-eaa8-021a-376dc4aa3b33,3499459423,1928716524940498780
+0422dd7d-6992-c078-ded3-3a6508142429,1292601208,16884457882666085323
+c1f2f3c1-218e-dc35-b367-1ecc34e0907c,2995041528,9255836469684830930
+25e6bec7-915a-423a-3524-dca7584a03ba,275683314,7240324210451199853
+c20cd4a4-0db9-99b1-24d0-ca376cce8a9c,3997870738,5187688239281422714
+7151bf7c-a576-4c39-cfae-76358489b755,2561718195,12088777443364778660
+726659ee-a869-5dcf-726e-71a7d3031d00,1669915335,12653396887888343899
+a03c8909-8a3f-9d4c-ee65-dd123d89b800,1390760885,12064582517839292697
+35dfd6ef-63fa-c52c-3012-02b09a99e8de,3244725956,8698033892356546697
+feabeb4b-745a-9451-1260-2eaaac610e74,113325283,375362273765409702
+ee951307-382f-32e4-786c-70fa8ffe5e11,816842639,15518381053547277145
+6fa6234a-92be-ad8c-9e01-f6c69b497d6a,2085152210,6825677667935013783
+d14b640e-2263-8b43-c1ee-9dc571dda013,1268865533,5904866460004811528
+33d1e4bd-7d27-9a24-46c2-b01d875d1679,2488325996,983712730355279372
+47d0725e-3be1-fe9f-bde6-1512a3899462,2968448362,11847556663732222861
+bd1adb4c-2645-c5e3-2123-af0db0e11e2c,3431155656,11190447795511348134
+ee90c3dd-3159-4bcb-4022-adae268fc487,656240580,12661990412094802660
+467dbb0c-9c12-643d-cc2a-18302e7c911c,551662770,3827357475653297459
+479bb9be-2899-d6d7-f2da-4e32aaef422b,3915990113,8557536451463964756
+874d59ad-8556-06e2-fc9c-1a93b3249b96,485048963,4896886635305073385
+a8cbeab0-7b95-959d-5180-320a60e3b531,748516424,1224637115762512324
+a8ea29b5-5af1-1acd-1a3f-e00930efb2c3,4094082413,4332158422236039907
+bfcffd5c-96e6-4c1e-1faa-1628e53ddf17,2257138333,4873099594005358709
+29bdde4d-319c-4626-b7c2-45fc34fe93cf,2934325479,17639031197813715883
+194df4bc-781b-86be-a928-a8ccecf8a30c,1596301648,2803954143418337731
+9e4a0853-d2c4-ce06-34ef-f08bb03d85ff,4149810158,17236025010144858270
+33c04e17-a350-f040-2af5-f2c29f001f68,541192836,10836241552836546037
+da79a7fa-42cb-593c-d78a-0b845a3679f7,2607305021,14494664512443551345
+99da0fd0-a061-d4c5-de43-ef790ff69b89,2823255549,5015427238196924978
+7b8d2d50-bf69-6366-58b8-94d04e74c793,127741187,8888051319179931303
+b5b9253b-bba6-dccf-70c9-6e91c50a2e90,1347714203,2758750637552681313
+b94e9390-fe51-ef83-7e98-1ed9f43ff74f,3628609232,1020839576767178653
+cb3300da-8f41-1bf8-41bb-5ba2b14c97db,2848828307,465901747566727854
+30b88a8c-cfff-6ae3-df81-6494536ea9a8,3829108716,7240387788463408054
+d3bdf92c-4bf9-9782-8c76-39d9ce1ed519,1342793177,12177429226655477896
+a471f678-24f8-21e5-e760-f9709a813e3e,4202743291,13822888568313944641
+7b3b5857-9b62-c77a-0e53-b3b61dba0b1f,3673351751,2840172955681145089
+cef1c686-0e3f-9e63-8bf3-082e30236a42,3060483857,11621527045538794975
+eb88515d-f5e9-1a16-b35d-e986b85a0870,50280926,17975777324394291046
+91ec97a3-bb6d-0c5f-3037-273c61a7588c,1846919107,6181670205878554758
+f010af7a-ffd0-d750-94a6-5b23add70b13,683676461,5631786843147528546
+b7a8e46d-7649-d18f-7275-8f5a087cc10c,2680663912,13108559541796717222
+ed694791-bd29-be1d-5707-9b9b3406face,2765334664,15079926571779844831
+ae0082b9-6da5-86c6-71e5-0c7f16fde0c0,1686208756,13009196657150878799
+c64e78f9-9ca2-a479-a6fe-8262645b5c58,931944844,10669036636646769077
+1f5ef4b0-06e1-3931-8101-4079d6241d68,2712023763,12276249039229540122
+958cb851-5df0-fc2b-46af-c82347dcf4ee,4195200999,13154651941954026625
+c37286e7-255d-2bd7-9c05-22a46b1554eb,2874900948,15650672049975914469
+44cc4893-2a31-2926-87fd-c3ba693d76d3,1610105915,15951310784827753022
+747979bd-8449-2779-5c71-ba0f7fb93fbd,1407296579,14598205002917741302
+46f55de3-90b5-e032-6815-bf088c6dc4a6,2996511233,16328272812026731875
+8fd60902-ec83-b52f-b7f0-64f6b42618ec,1323948853,3469086493628624179
+fdcbd1a5-181d-b8ba-913d-602ad2bfd43d,3272642299,4905699492880211137
+c38d0033-5796-1b3d-bb31-849a06f26919,2544537384,17319182217481228137
+7d91501e-f3d8-32b4-fd0e-73caa5ec0959,1574560363,8916416963107894840
+85ef7167-30f2-5272-cbc8-1c325c5418cd,2912557770,2656718430230908867
+33b2aabd-0ac7-23b7-5a82-72a477127ade,344019694,7147671312931922903
+6cf1b83a-6488-c6da-f7ce-71e9d4436c3d,2672321584,17039986834026469315
+a2cba701-1ab5-fc2e-82b0-1c752ae9ebd2,1017700522,12345939420005471446
+dfbfd53e-88cc-b866-f12e-e0d16b9160bf,2472472622,5546704116264706037
+3dda16c7-c1fa-18d7-3f27-911bca2bdd54,4096329051,7901950257599060455
+719669ba-c22d-0db7-af33-f89c88698142,2147447853,6380202643890880933
+4c39bc10-fd20-3797-9219-99bbd43856e0,3935411928,13936108579131384134
+6fc287c5-9d8f-384e-dbf9-2b9accca4557,526521271,16137817792673793790
+cc1ec551-ad4f-419b-b6a4-7bad25fb66d9,1940843701,4855354132868519989
+eff6807d-9d12-4425-9ec2-81fe4a9515c0,2189618728,13057905395006377585
+38fe6ada-97df-0ff1-3a2b-c71acbfcee78,1016840383,16313479777467928267
+09146fe9-37a3-b414-72d0-a13349234459,2747189688,12131894105100434663
+b5b1e55f-4f44-5def-0382-93f4602215ac,302718402,8500143849021291971
+08dcda74-4475-fa1a-8c35-49ce8ea4cf15,2649576798,331955129137495520
+22b0b725-bbac-6018-ab76-a89d16bcb355,3917824546,13618720329904313046
+b68e426b-408a-bb4c-5ee0-1148ae467078,2261368853,8381284686084981313
+77a3b1e6-2d9e-5911-ac75-39094e88812a,2330778751,6335860952755016355
+a244e0be-e307-daa3-9296-84d7820d1209,4196872652,8520554145029579926
+dac51683-4327-b81d-f8b2-fbe5d644dca0,2934248934,18085202076186398441
+e688722b-49bd-ecad-8843-a51bbe37181f,1040347507,7709236360466647984
+4722ad45-b891-51df-481c-5f52e227e950,2092510629,4473167314321602039
+4e62b07c-c540-1089-4657-f41d03215e86,1541966771,8958571813712662600
+37d9dd8b-b23d-793c-2d3d-f520b67bb52d,437990254,10388392904764688518
+db6b9adc-f5ab-4f6c-ac6f-81dc00145249,2823574927,16244769421248784918
+e4c7d9ae-c5c9-b8f4-af9f-7e5b730bfab8,797482333,14442980357662142547
+033abf51-32fa-eb59-9137-f56ad8393df6,2755505070,17651365524514277208
+65682765-935e-df1d-d715-e02c0e7ee765,539799031,17742817008989707292
+903239de-6f05-4c8c-82fd-5315e1b12127,1424739825,16948685608458595068
+65e19667-3c46-d685-4f97-f93269467678,1372797605,3081349009114487002
+80c1ec17-fae0-99c1-11d7-de2312fc8f80,2068273459,14208044325449084725
+6a63c495-25fc-7919-6333-39ad0cd26022,3487545285,1725201614642524628
+e0634405-0e92-70db-86ec-1cc9370a297b,4056676166,2081883336381243269
+585451f0-08d3-0212-9ea1-6b1f7bcc3320,2035294507,14607300886226228835
+cca46ad6-005f-e7dd-56d2-9a5e1aa06e9c,2775840477,869744611834701049
+f8a515ab-fa36-ad9e-9aa6-0dd35f3213f4,164108273,7158704753513098915
+c0421134-4674-4b8c-bd81-1ec1f3bb6827,2247764552,11866512074719594397
+3dae4acf-1ddd-47b1-34fd-f7b6b38032ba,2828627373,929180374232184663
+e2f53be0-1ede-5e7c-1aed-a43608e0fd9a,3632110862,3603297724919808346
+c81fff09-4f7a-65a2-8a2c-5dfc0a2def1d,4210711901,7025851593446284930
+83459c25-b8ad-9408-2ab9-8312191d3b25,381148185,4886943184942005544
+929755f8-e936-7c71-bc50-aab4031260d5,2157313701,4247879615478527447
+acb34f36-2e15-447b-1745-7455fd4a4134,82652240,18288936111073638975
+95f61e33-a2e5-cf78-1367-73184caba3f4,433267007,8343943706209561511
+bb189050-e523-236e-c0ff-755700330a05,3052396066,1605454080279129855
+e5980a66-835c-4c71-574a-2530aa50bcce,4015004687,16408121789049365044
+de67a33a-355b-6a8f-431d-500b7fe3f0ab,1775358018,11228413939336579957
+b94ad6f1-7933-ba98-3333-02c0a22c7347,3930749981,1339185954405438809
+94c9789f-312c-d414-d3c0-a96fd76fe68d,2194880888,3773879065715310542
+c377e169-5e2d-e4e5-9e17-b77b8fd212ce,3124727588,14417577887225330457
+6c536b04-3d38-1664-3d8e-b1a32e6f8bea,2563879022,535532676643321602
+124abaf0-90c6-8a37-075d-fa7ee599cc53,4036835083,7597936820792926852
+a43b6ba0-b1f3-d4f6-6db0-e617d8b61785,153741446,3303523715300255180
+dce634c3-be51-1281-54f1-8f4813ee859c,3630023954,13981027521035717518
+f6cd4b41-67c1-3fe9-ff56-8075af563f12,728518599,4992844666015366927
+136b2601-473d-50c3-f9a8-b870c2b3f1f3,3228999118,15793849608517866410
+1649dafe-2921-65aa-03b6-75eaefbecf01,865903202,16730497633864719082
+4ff2f03c-3184-4a6d-8afe-794f2242a865,2742484883,5618993399022591250
+72363aec-a772-44a9-11b9-a98770b75466,1155264083,10918111555725606916
+1f68493c-c60a-a839-6e10-0db274c5ba0e,923224468,11184901839118841390
+2c722c32-08e6-e43d-be21-87429de02bf5,3240357187,7246148906393335450
+61967b74-0028-0a83-3d1a-4766cd955401,462672900,1460551043077801225
+9163a3ba-7723-76eb-b068-0fbe74c97313,1824433691,5989786871810821335
+8b5686cc-167c-6bb8-511f-182f7260a3d9,2318121046,4010938929530475338
+0658c4b6-ecbe-5beb-0581-3eaf50d530c6,3580653974,1260335822978242372
+9c9fd46d-8261-8670-ea44-cc7692a8f75b,1550125630,2816910771040383124
+cf04153d-c3b3-3f50-9a03-2c05b5f786fe,2568460838,3955180338465374370
+39db3529-e896-19bc-6ac7-d85695afdc71,3621440956,18369508778710361835
+48fc0717-07ff-7fa2-35ae-c8c824844579,2322479614,6971012877105399911
+4e1b27a5-345e-47fa-891a-8be680709e54,2319835097,5151129003886731779
+f5befee2-2ea5-4717-629c-bf3eccded426,1357593519,15308465109168710461
+1ef410fa-6b86-266c-75f0-cbec3390780d,3373606765,246600195756763585
+b7c60def-e53c-7047-39c7-23172616d153,1586412359,7565313990967426749
+538b20c8-2f1a-fccc-5b2c-b07c520ce202,1613024364,15324288968610433043
+8efdfa31-8353-68c1-bae9-8b9d9ecfa556,3566790096,9441919454325581384
+270459f2-cc4c-c21d-3d3c-4e506a533dba,4044183984,7807293808317183972
+15a62771-9210-3874-fb3b-07b65c922078,1501648898,5224883434482103834
+7b5ae838-1738-9ae0-a7d6-94c0e4a62a68,2470554907,7044222309590990397
+e4554d91-679e-07eb-1129-f3475fffa664,2570806086,9621184930046800105
+8b7e137d-1dfe-2115-9c54-66128619e844,1757483563,16659032819519533719
+e8330fa6-13f7-1fca-1e62-68c00a590f8c,2198429515,7194473895331259021
+cce4cca3-9b99-7567-c30c-eea0e351a6bb,1929318373,4407278867293815356
+f4ca2595-4f68-fc8b-cb81-7b438e7eca26,1745701089,17837311019629065644
+86d49c1e-a879-a108-bf99-44147f2bb0a5,2970318406,15194736174083407052
+af749897-8aeb-9644-75f6-78a0afd5c1a9,886926703,18292507809728462962
+3a69e89c-76d6-c4de-0c13-53731f4d9107,2589998832,14320519996463305612
+baa01ffb-026f-8251-11f7-573724d79049,1916869501,1690602814385972359
+8b26f538-b24a-4427-0e9d-d348f52ccb98,3648268417,2998450126239045136
+e79ae8d2-3c97-65d8-38b5-7b06dd5f7183,4000904001,10129913081602687916
+a81f8e4a-83fd-bce1-9c32-c10cc439fb49,900537662,1640489578942205749
+cbdd22e2-e6b6-532a-a106-dcdbcc7a069e,1907670769,17651022246320633589
+f1bf1754-cf63-bf12-913b-d6c4e18fa2f3,1312672664,9822708416351234769
+703f9c86-fcea-692c-b705-606a03512eb8,3430032313,9171686707617994745
+95888b61-fa68-df6e-277d-064a42fa823b,2325217801,8405093918759558775
+01b7de4d-bbb7-1787-51ad-4745bab268b1,1056181491,14418555437108199863
+aa6da2e3-ca70-f945-e56f-cb2749ba8ef7,2555320761,4869671461153703446
+f1265ba0-4a69-dc68-bb3a-f3e1670532f0,3062594205,5505189108472973446
+f3779a79-5e98-5c22-de86-e6ee98b441b4,751858274,6206794035265994608
+1bb57452-2348-ade8-394f-8fbe36da4a6e,2586798000,7695434331451967715
+2fd1a27c-aa8c-5b37-ac5a-9d0d1bb9e973,50357517,14601038048691466520
+fbccb5ce-bd35-d717-df4d-efdf14d34c78,206157083,9194817518881875793
+9d7db12b-8dce-45a7-e9bc-67e956335618,843192335,2695836376718299753
+6fefd422-f1b8-265c-93e7-0ced1ac22300,3048360886,2303300599884909115
+d8bd82b4-04b9-55c8-f0f0-ab05059b151e,2038884992,5642964495117426595
+c34d3709-a173-44d0-4977-3000f286a765,2248812887,1487516878734112352
+ee7c551f-db42-0f64-0365-79b19f5eadab,811727875,13354605310014907503
+59b10666-5f01-c234-1cf9-07e816f8e6de,2932079558,6904931536273388197
+a0be8089-fb03-677e-75a0-b7f1e354e9ff,2975870362,2237525227815563105
+2a452138-1ed3-f390-960c-6477ca97b916,2695780951,16761118447246119710
+b7d67923-b24e-8d6c-b05b-e22df4485980,1336087643,2940920295425860675
+2bba2241-625b-fc5f-6ebd-34d983a25daf,4187177723,5982837860337099495
+00466cb5-35ec-e06c-5c49-d8eb8d78f165,745982819,14353132777263457057
+43bbfaef-368e-b2e4-469e-b7c43d64d736,343366533,12810675662480016688
+8ff1e443-d3fe-749f-f6ac-852b9b9e3d2f,3020315699,11379947178071498702
+dc4b8198-1625-1b11-8b9b-485bcb484f6c,1855615462,14644141832816450481
+aa721231-c12c-73fc-d5cf-6ecdf8bd68e6,2999375479,1292035492745653680
+9b5cf0d6-351c-e8d5-d889-25b383e2d6f9,880060305,15741141497697309482
+fdf89f5d-8702-a605-58fb-a4752902e949,2970284569,3956444469942584825
+1920a614-7923-0a28-221a-13dd0f829eb1,3680466607,294475189354796967
+c20582d2-8ebb-39f0-b16c-b83598d26b6d,826583096,14400129026267130122
+b777846d-8a88-4fc5-91bf-9f30cff3154f,4134353807,14347629733928609323
+2dd15a43-3a18-00ce-9fe0-00f6ffbca58d,2802339422,4327121164888326911
+8408918c-3be6-60a1-63a2-cb5c910513de,4258923505,14326374228514039361
+eaecde86-bf68-e8c8-09e1-37f1409cdeeb,657243841,7457578562577888838
+e228af08-9e56-62f4-3762-c9ac3c631a8a,58140323,6192539939710385318
+0b369b40-dc3e-2c94-99c6-f53a8084df08,3209741603,7675255742705620409
+70dde6f7-d5e6-0b93-4cdf-596bfb65b7d9,4179822939,12879658116340149770
+a4371aac-7691-708f-c602-c1ef5d171516,4293818753,13006564880209819967
+3d548c9c-44e3-01ec-d039-668c3b71a1c5,1290899582,4842661217466597406
+39e4a669-fce6-84f4-d956-3248bcbafa38,3317981934,14790620321711147702
+2f7ba890-86c3-1c17-237b-ab06ab461897,2447446165,3159055026522599246
+d02dd240-97bf-d55c-52ff-856c30276b8f,89239963,17930569916944452102
+543af612-ab7e-6640-7332-158f54e1d3ac,1257050219,12838706364425174893
+8234969f-402d-a0d9-30c6-201f27d403ca,2574985552,9643889464202568427
+1e03054f-7464-439c-028a-c2f8662541c1,448302745,2462298858713389193
+10f293c9-4d01-578a-929f-0daad849cfb7,1160298047,11972802181676418812
+8d4535c7-f81d-8a22-3597-e3a120a4b418,1101599437,8450156641153241106
+e9156035-500e-d7a0-3ad5-942d0489b83f,1586939292,5175901838161981568
+27c2b6bd-18b0-9565-de32-d2b42bee9c5d,801802370,11750592180122137480
+4ed18f8e-12ba-5881-b56d-b0b364fb143e,3116988877,7473508388510280642
+a526108c-d7d0-8045-4fb9-b51d12ddaa94,1184118575,2126008069819515168
+9c41239c-8583-edca-6fb0-c650985291a8,374824716,12155639104190681935
+0ecc6343-a302-afce-596d-5db0c2517bbd,534376865,17567802840049339456
+a7b8205c-d228-58c0-273a-79d567be1a49,928532556,8294084272507273538
+c0509442-0fc6-6900-6240-c45ad12b8aca,2914512757,15193545209529511207
+ab0edf52-4a2e-5b96-679e-f272009a4f07,3746240251,3774409994633398881
+32485cca-593c-bf4c-5b5e-40393a4740af,2432861929,3812428032671479977
+59c6b3d7-21db-22cc-1c16-4eeb19f1413e,2236164151,9524949077445469929
+07a42b2c-436e-6869-d514-c7ed6b1e8113,1969105904,6359240178507583145
+d11e2c01-80c6-5953-a642-17d06a91f781,3184850712,15238957037294594058
+51f24a7c-318c-d203-a9a4-cef7f622f997,1831881822,5057316014975995385
+64c3a474-dbc7-b49d-44e1-9145a560f9e1,1844997800,5589237104278911539
+a927b6b2-4d1b-0eaa-3f0b-35915cc931b6,2348219656,8661747627791311993
+b94d8e16-df06-9674-8364-3e4ebbf4a858,3202935636,10134262645878701402
+b0f20923-e6c0-dbc4-02d1-de02c9517a47,2857136368,17483952777154686487
+545b7f09-0eff-dc27-a7de-fdcbad1ac022,2975492008,16689835313321091453
+f39e46d1-f8ea-7c48-e592-b1c6db21349b,792073626,13311952063559802685
+fb956382-39ba-618e-085b-b58dc350a3d5,30547769,15070715715943216939
+4f0de747-31a0-3fe4-3466-4444cdfadbf0,3725431138,9889084845055477983
+ddf43ad0-6389-ee0d-972f-b6aec214de9e,1217479864,1685830156569885891
+3211444d-0f39-d9bc-8a29-f982fb07d0ab,2839234648,16306567234802455252
+408051ee-dadb-7035-e11c-5fd137789720,1571203773,10129559451887643573
+17521be3-f0f8-002f-9d6a-02f13a20774c,2691012336,326500619897016058
+b91054e1-4fb5-d900-fee4-044c50b5f11d,4292039970,9524365174098183831
+bf7fc7c5-b625-f530-f179-5066528e03b9,904726030,16906607261929995315
+038b86d9-b541-13eb-6888-90ff7cb94c7e,1441022900,6632059448193260026
+57aa72c0-f716-19cf-9840-ee23994d9704,2655185936,16018807132245824395
+74d1a077-a5ad-b0b0-6316-974201ac4eaa,996445660,16419054212036811680
+55df41eb-09dc-86b7-d73a-6eb360a57ddf,2240031257,4864653617518475196
+fc436f74-27ea-4db3-f88d-00403de483e6,2400037025,14428787374420000900
+1a724a71-5029-523a-b115-f97314f6d298,3049398639,16094586188196250459
+7eef69cf-6d93-c638-ad70-d435f55ed4e0,1052840153,15573425439018963487
+0888f42a-3036-07b8-81a6-e802a033e899,2616407451,10995274951769306215
+283c7869-c674-ef8a-e183-1065dd924acc,41861483,1626015182404618968
+98cf1c6a-fdc8-01ae-bfce-f6b19e3bd77e,3318880068,2851466032550159943
+4281aeba-b3f6-da4e-d1c4-c74e56d83f9a,3671814377,5906027338928078558
+8226ba77-6031-be55-5da7-949d70a55975,2585132057,7606242411120996962
+1d208e5f-343f-9315-eae5-63119738cbf6,2451941760,5952714951363217170
+07ea9766-537d-9ede-4996-bd4a29dc23bc,2779633521,7578105126133602304
+ea9b5ca9-2367-00cd-adc7-f72f6068041f,2245151387,11540683215689635139
+dab5bd8a-f9dc-74ce-0168-4ab0e4230a6d,1409943008,12793559708791246577
+248ba738-4417-99b6-a979-ff2336fbc868,2603698748,11215406259563355055
+5e1d4e5b-ad3f-a514-c906-cc04314ad28f,2998906651,8681797765511720836
+0417cfb1-3fd8-3660-c049-e6e3e5507eee,1165001619,2731893754425033287
+1044c5f0-0d69-c628-f7cb-6426da21a097,1373471478,17903257977340691365
+f7620b1a-0b52-0357-e165-8af467f97820,1285065392,12147117414435487362
+fd8a5186-466b-c8b3-5f72-83a8ef5b94ea,1669278313,7694078761053933317
+40a3eb48-2e1a-6851-fcbb-c27d3ba239fa,2986177429,16819831158113696932
+5cbab1b8-cdd3-170a-5109-671968c3af7d,1681101105,17712844863620601605
+cd402247-c751-ad3a-f477-1a68cfc25b05,1131363153,15682372891326432613
+6cb3d7c2-454d-7a80-3412-3d0056847d3b,3186559100,14636947718333023223
+e582867f-db3a-2c08-a20d-e2f5c2e9d01e,1102794384,16229978638989947089
+a5172e8e-7353-a5a1-c106-8f450c814ea5,974547329,6686151486979073344
+b062e51f-4232-0916-69c9-516a24ed471e,698144317,5101188003686530572
+80329997-c41c-7a60-69ae-617150362f10,209205925,17691663686074347058
+ff8e664a-3aed-2c85-50fa-a9246351c212,718125471,14736782613363662615
+b98c0638-2460-0f34-1837-b99d1f7df99b,1591537960,2390608452938024649
+f5f5bae3-0ed9-240c-f9c1-3f7422ed76cc,771655096,15975613531988291517
+e501f51a-8b35-9770-01fb-dfb0764b1960,2348943069,3569626622201817154
+3878cf77-2e3c-f327-1c3c-68ccf38731ec,39062489,1802109221848873439
+b791c9f2-61dd-16af-1e34-16ec8a2caeb3,2548455162,14108282590883482881
+cbd48646-5f89-6e8a-af26-9e513d8e31d7,239439708,13805826741278208690
+6f8cbb6f-69eb-defa-6303-74e9fe9985ef,2707973954,17451772316648109326
+cb7400ae-17bc-ec1e-c1b6-871d8803d692,632712471,4644978050891768866
+f27c7afd-5d2d-19cf-c41e-c18d90925a02,27026030,11227837805815884913
+a86cf230-d76e-798d-53e0-e66a1f494b51,4140450175,13666706776686260381
+44cefde8-388b-5403-3db2-09b93fa95001,2642058059,4587859281457849418
+e033fe1a-9ea4-9d78-8ca0-0d66bac5fe63,852103066,2254142852268563701
+e378220b-ce37-388b-d4e6-5c7ee1cf4bab,77151381,2997268993675554819
+be7368ca-e1f0-2869-63ce-11be85f0a98b,4050010586,6169979609904756848
+9ff25dc8-b563-b715-2c6b-f3532e0761c1,278870332,17345910655186037731
+b2ccc4e6-2a1f-bd46-892c-da19d193abda,173057396,14773848738795459772
+bad68a1f-e5b9-eef4-6a1d-392be83f29af,3172189681,2304477834753156113
+744d4209-b607-d569-5524-4558844f2fe1,1913606531,18250752130885510617
+24956aab-2995-b2dd-8603-e7f6ed2a1a48,1842593125,1165533097248580028
+2dce52d6-0823-ee1a-bdfa-ceef36b28c81,681967056,4842833908333753371
+3f443644-b121-f639-f6c6-b59794de68f0,348267193,9187700011202466757
+6974a1d2-411a-c39b-8dd6-5833c826b2bc,2857324325,6353249060484496693
+7e6b72f2-ca42-adc9-3288-e6fac557a228,2767982887,9423872730792240373
+2faa4d24-8975-e06a-9c5b-066d3492c2c2,4045640384,1308245432200396169
+50a2d2a7-07fd-f3d1-2aaa-eb7d796fd33b,2013892003,8008737292605959939
+81e870d0-80f7-eeba-be50-3cd6bc6d1377,3172695223,1014795082888522204
+1b4d4c65-f5b0-12a8-02d0-0da27f54eb46,517174135,13186494014483386247
+b9377f7a-7e47-623c-61b1-98e583842e62,3024076119,14516720492426832001
+9c989791-8f08-998a-2ec8-bef176f864a1,618910560,14062671593873237560
+c229f899-8448-e81a-772e-0a88b1e01df9,62436964,16619899783931095923
+a3a55208-933d-f95c-13af-272680fe3135,501175640,9979918376187287713
+63baa65f-5e76-55de-02f8-7cb63c7bc593,951413714,4815688314219413180
+3327c183-b412-cb6a-3270-ec2979914cd6,1973447034,13331626980057473958
+a75473ff-177c-3946-7d84-884db00ce6fc,2634525327,111726949694618892
+0879d4ff-130e-f3c7-b45f-3a8dfc579443,946044026,4041550996950429307
+d78fda3a-b733-4dc1-08fc-51fd77631f92,2663578717,16585822600084884709
+119ce3db-4eba-f82f-d055-078d29c6fdd1,300099102,15329121501433611970
+3fbed4bf-638d-4929-21da-310f69e75265,3089938960,8326962272967283
+edd7fda8-1538-112f-5e77-a150fc08d485,800356135,10569166695926534029
+a89ac935-96f9-5c9f-0166-efb3fa3c2006,2318688668,14629673385506274581
+36143d3d-3a29-8cae-eb2f-bdfc2a624181,4054664349,9481772567326277710
+5b55db20-2f3a-5a2b-ef6e-2f2f626d8de3,622879970,5457012804120865735
+64d13c9c-1ea8-cdac-d45c-1f67676ab788,4092849615,1734394724946702607
+1de22706-aa8b-97a3-741b-e42bd3b7d2f0,2322368055,13709860696556305815
+da57ac9a-852c-5efd-1582-acebc82b6205,1581333131,9602302109121096800
+1bf1df4d-9e67-fc82-79f0-34828561e14f,1906028723,4438039639435787562
+2543ab83-5253-2f92-7a84-ff09dab2c539,2641598539,5811308801082115773
+22712a28-fb7b-dc1c-8c72-c6d740460f89,1340547693,15821531737167967893
+49459ede-8c53-ccdd-e176-25237d058b31,3292278881,1599875542446534786
+eaef557e-f731-0c8c-0dca-d60fdda617d1,1833562223,3014331026500026989
+adcd47e7-1381-a56e-d835-6d7003781a97,309817099,9649166898635469737
+238643c5-d58c-7ca8-9463-2bbf50e23df5,3093751827,7082590457302208822
+348c83dd-a465-7776-1878-39cab9c30257,416657424,3537121113808824820
+48e85fd4-b83f-e376-7c22-6204c198eb2b,3099854461,4907478814697647161
+9bb7a689-7e44-7d3f-60fd-172906247bd1,4290729623,5416816454216040949
+7bff8b62-dc41-4502-aab8-b5daf5182b6c,1646660223,4127034429820619738
+603c7560-c1e0-7410-eca7-09971d1969cb,4154649764,11985753483583893433
+b4799b0e-a3b5-3e89-05b0-94b678ee0de9,1992360685,5428753338695739404
+58694de2-43f0-f93c-393a-0c8096c525c6,1745617792,6979402628227330212
+748f14de-3b61-cdad-73a1-d3f416cd52ee,1544720002,2570055432425179771
+4be97e0b-b006-4739-9c21-5a6f063d47f0,858470580,11574548880140095689
+d006e353-e29e-3188-ab61-e1130d279597,1022606265,8900967027482390550
+79b56ec5-6e7b-b0ef-36c2-e82e35df0832,170806097,10719461911782947558
+ff7cb203-8944-d4dc-9405-b00f9272aa6a,3958248298,5202291128104754335
+289a5108-c243-51c0-0a31-d7d35f3c9f1f,2834758869,3729778756618579670
+58942aa1-34e1-98e1-88d3-cdbd14b54f13,2853693201,16722061521988059686
+731c1ffa-8a2f-ca49-ba78-ef4d26c9b8d9,522578787,11529516172781584755
+1b796df2-4815-afbb-5214-7546e4ce49d2,2966646973,3336971911516416266
+d41a2bb8-9a54-1ac6-311b-0fe8bb2b937b,3982050255,4789437809780807433
+ea8eb8b0-9175-e486-2104-f2bbdfb1102f,2515644288,2938593834130163542
+299cbcdc-681c-4483-1482-04d248e5346a,657153769,14007849634124255437
+6ebb5e5c-b588-c821-03dc-e635ad5b1b0f,3617393950,1616832692132368662
+469b89be-b229-3fb8-c6bc-39a3ba06fd42,2329473990,2494189812849656905
+3f883dcd-4e3a-2077-9f17-795aa1ff3818,392897996,4296571297527278569
+68970acb-b04f-18ef-63df-960243e43b33,955674498,13884430438282288502
+04b2c0c2-4823-2588-5e74-0e2ed71a3834,10506453,7888562917068953202
+af7cf7e3-5ab7-ef06-3b31-555600ead2cf,2325473781,9242678358744091249
+20458943-8f87-fa3f-e7d0-b5eba0cff952,2036583373,17398451671115441252
+3f45a094-99dc-3c5e-8caf-d8bbc839938a,461512395,1043141550022967826
+793e8cb7-f55f-e526-38b1-6607a77ad5d0,2844456626,1196867048725201936
+5185ce04-47dd-bd93-0665-10fbfc0dcf03,46174011,12063100857877116628
+2bcd5c6c-2f89-9aff-a203-1dea93bc1d79,3337062964,15751715280990832285
+1db5ca96-3eca-bade-7b95-bf50e8e9b262,3364669283,7195759061267865057
+5016ebe1-2b61-b4c6-9ab0-815dcd43f3a8,426428660,7048580997815990576
+49ad86e2-5690-8152-4a20-59b6780f4111,228420689,6216606515414331581
+bb6aa2b7-0e5e-2b84-9493-c1f0e8a4aa92,1146723081,4567067979747262963
+b7f8d0f3-83e8-2ca3-9e10-bb2391262833,749218577,4494095666829650336
+34910951-25ab-9a56-40c6-399476ee37bd,1568442922,3235824514115097688
+97e1218d-f553-286b-cd36-5dbe4357f48b,2418813658,15976153808726232786
+e7a8ca8c-beb8-85ae-5c92-c2d4f1889dfd,3273710542,9730330514163949530
+7cee1fab-1008-7439-2b0a-7d544e97e61b,4129066262,617866692693526616
+b0dbd36e-0bb2-57b1-c7e8-f553c46d3163,813569870,6959385494606796466
+f3248373-7b9d-be0c-42fb-e05c20a72278,1015608561,9918232314476592082
+2f58d601-dcc9-05dc-fac9-f60a4fc21c4a,2235155879,17390484937178200167
+ef5e4927-39dc-2cbd-0dab-3482554ed877,4228076186,17379535776367584849
+18044e25-c460-797a-a9ff-2b702a409b52,950125131,2780132005394419546
+7f69811d-132b-5903-ed48-79112f121ac5,886630832,15122004213995830876
+486c24c2-1dd1-7c08-44c2-f7e859337325,1344953257,10043893141369441456
+c7b5a28c-e3ef-9d29-d5c2-cf04984e6343,1218377833,11166221476851682016
+3787c71f-e588-3460-6f78-d209b1efef36,593613684,3936445543692048205
+2010c7e0-dca7-e3e4-641c-c7a9a9fbd6ff,4242444134,3475111585899361243
+62c309fe-4d89-acc8-708d-3fcffdfc5ecf,1195043377,6623319663168394690
+6063cdb9-21ca-2827-9da9-458a42c7f0b7,1290382420,15593176154415340735
+3ef0e791-72e3-f6f8-ebb7-b5142229197c,3746059893,11100962660932173120
+6cb46df9-55ed-9370-1fe7-9aba1bd7c2dd,3255591268,69940908077558465
+bc784e0e-fc37-cf3e-ad40-14acc5b6a75b,2162930184,12535929266950583312
+6f21701f-dc07-eaa1-c7e4-9e2c3d192ea1,3370126309,8461978365498016691
+1b412116-503f-5f9e-5977-df6690ffe77a,3523135331,16542102619585204823
+e5574dde-258b-5311-0d17-583d0ad94554,1196706550,12065114250459580890
+075ee9b0-5255-a7e8-2707-f211fc32cf1c,1931661553,13954535408497659697
+2cb78d1d-f5cd-ea7f-fa50-c778aa239ce2,3707337807,18328845544753478587
+6f867bda-24b9-4e8a-1126-fd02cbb97793,2968265531,7101489971942346594
+0cb2fd60-49aa-68d9-2f1f-49714cb2f3ad,2776447031,14009707329028121258
+9295f746-11ea-bb8e-7365-ce3e814c1a7a,3518491487,18273925378102757519
+675c91cb-6e64-9bc4-83a4-947352a0ed8f,2574515795,5143281481718510165
+74fa7bc4-79a3-70c2-d4fc-fa6061f8ea3c,2659898300,5300787525917983844
+5648536a-816c-9513-5467-10af72db5394,4254626760,8015218875786500523
+efdaf1e3-3189-fb7c-f8ba-2408fb55b5fe,819211527,6707599700046913403
+064b4d48-6936-3218-c6e0-a47f9776d7fc,2765396783,8048743941739448846
+7004965d-d99f-c1ae-7038-7f74d369b8b6,2688464711,6349185942255782011
+b2ef9a0a-d27e-5c3f-8430-8245a149e2db,3544853460,3275184603091086020
+8ffba239-d1a3-0d58-c8e8-fd84899d1d4a,473752620,468523869760185063
+67a2bf77-c677-af0d-5528-988414d14b11,2395285718,15717556478930148280
+e4713d66-3593-8197-35b2-05187783496b,1865229639,4138970896865026727
+05245584-56c8-e6cf-92db-8ba979b86a70,4176860888,139675142550741686
+7abe1fe1-4909-4060-9fe1-101351214718,161896615,4674979318243202604
+4113df31-174f-7f45-2816-40b6555a73bc,1603629192,3961665678297236712
+ffd32b38-7fdf-5b98-7fda-7e11780611d4,59365298,11417524974784461010
+89b26901-37a1-0ba4-923a-0a80f9d8d282,2284805747,14820886154755058487
+a68b3ea8-a659-ffe3-1ab6-13b3417ac091,2308077063,17402699911944015631
+afbbe1d0-605b-470e-8291-3c84b487ad0f,923127697,2949356481603906732
+8cbe5cdc-a599-6277-9e91-1fc4dbf1d6ab,3226064018,6376980287813809101
+99c61315-1e7c-d05b-c4a4-84cbfac2b74a,1244638378,7180724450532501332
+0599d7b8-c42e-af9a-1563-9b4e0f635002,3234393173,7803080773495069776
+2197d274-715b-2bde-20d4-fdcbe03a3631,3881884754,18030338344676099127
+7eda5097-19e1-297d-b933-44325be7d755,1010622867,4895185943021226747
+3fb4e71c-9f1a-0245-407e-a180cc34bc54,325940357,12489823823601892176
+346d5d29-2bc0-9320-7878-3fb23f593593,2590477737,6824113686347009953
+dce86045-15b1-ab8c-6e3e-85c426ec5543,2899014937,8913553337781221906
+c2519bce-89af-8527-ea99-062742472b8a,4242722328,12048525695452332447
+f8cb8ce6-76cf-cf28-74f6-f9400a2e56fc,58643938,17769137267599291075
+be74c65f-4984-3280-1b11-6074fbc43dca,4060474963,15775954131344077139
+27ff006c-eb1a-e544-bbe9-5015449ec63b,768546387,2964937330864751905
+a274edc1-1de5-2928-f984-ce19cd01fd54,3266824017,2127487885240963249
+a8a6b8bf-8cdb-a4e3-9229-61c5a1652f08,3630059322,9692228208082896393
+3f31f45f-5327-66aa-ead5-fc4ce4171725,658589899,630922423746556933
+c41afe1f-c0e6-236c-1a8c-6f75ff25e8bb,1448768727,16830700000593374034
+de230977-4871-5009-07a2-10f0438927c6,460989966,1557530774439988713
+bd07a794-5d68-34d9-b632-d02ae877cdaf,810217393,8814249771370565953
+706e38d9-f210-fa7c-9fe9-c5c977166408,734644847,14934626368230346163
+cbfdd593-2f72-aa64-48c3-45b14a93a968,548725125,6728737122751745410
+d67ca7b0-bda8-fda5-8f0f-caca2bd01b06,1130353677,16751237922328523533
+8e9b6361-b4f5-5497-fd36-161952de750e,2166365086,9966006761372143154
+8336cea7-5c77-5093-8422-e7988323e4ba,62579080,4400832891470584017
+45ecddc2-9521-a577-7f31-a66eaca86f51,1007909398,45777676263426587
+898b4b67-f412-a73c-0720-3c95ac8da990,644261853,7777971622035348432
+f90e218c-f882-91d6-f84a-efb16879287b,1162191832,13762060814657340353
+5b7b9283-eca4-79bf-5b46-099d8b125a17,2656587308,13565930243695617705
+0a38f73e-a612-81da-3170-778da4d436f6,1209926744,2383233311972176601
+5748c5aa-ded7-7a18-1779-acb26ac262fa,796452613,10638415032791752548
+1c53180c-7c95-bb80-726a-022f009aee1d,2022037228,8480132808910909440
+455fe1d7-7811-e406-93e5-2c6cd7d5d69d,696616416,5581989993311671598
+df28486a-fa31-8f67-7d91-862cb7f28898,1811165910,10252352110172403218
+6eba172c-b08a-ce5f-1654-5df7cdf39fcc,3932323837,5231450598343025167
+80ce74ff-dbc5-356d-2e20-5b5fa44a8f75,3731606855,324428552246886152
+5c4434c5-ae93-3693-d4bc-7c1dea871f70,860505526,2460899087978664296
+b4ee1d2a-0aa3-2a09-3bed-659a911df87f,2567731762,9766904940777788263
+1207fecd-c567-d699-bbfa-6ea7a576e070,4395944,10592880727866440043
+215b193c-9256-cd7d-4ca5-111a8b12ebcb,1767620940,15968582642772359121
+26bd22f1-98a4-c7a3-b7be-b4b264f740b7,3247007269,17018166711702188286
+b2fbbd43-ccba-263a-6543-e5d7a89ba8cd,2546305643,2834634345140342759
+70f89b20-00a1-958b-4cd9-6b529b2e5027,3381449608,13668653403665416002
+8365eae5-d7ae-4b3c-37fb-68110034ea4e,2354279778,10076044092561121203
+2153698b-48ce-eede-f96e-77845045ede5,1725465828,351131179597711606
+95b5ce3d-6a7e-a9c5-e2b8-2d367355e826,1190504843,5274296510406222383
+4dfbdaf6-3074-2aed-dac6-9f44b657cd98,2770025748,5950005797251536715
+54bc4d66-2a1e-f7a0-fbde-26bab27d459f,2027716102,9740706037266704010
+04f0ead7-2984-6bf8-ddac-1b05341ae79e,1269032600,972647755418486997
+70f6beeb-8295-022c-cb05-3d2fa7eafcfc,3921020910,3300954059136033332
+2f73cb34-b361-f293-3a8a-7bf9d45dcf91,215586084,13140303703482073110
+64a5bd7c-180e-cd82-caad-268e46e18147,1798129783,18392126187947030865
+9f4e06a3-0e0e-ee73-9ce4-399b9756ae44,1385401830,7084092542164782035
+b52cef7f-eef6-68e2-fb4d-5a05787986c5,4384844,6063898366782911026
+96ecc10a-d494-16af-9626-fa5454442ad4,985281892,2162573975877035660
+0597a71c-cc33-15dd-7b81-eace907f573a,2959405732,16389124797043695399
+c7d8edf0-5fd5-8d12-f296-2f7fd2414c8a,4265596710,2963344485592755256
+0e10107b-cc31-9ef2-f3ae-1010e80af04a,509491454,15497078877649045024
+d33ab890-6d94-cc47-7aab-21edfd98c16b,4094385827,11648885854065871412
+ae188bee-3613-2211-6e4b-20fab26b8554,1911987845,109580082465239648
+d3c10ea7-fe5e-3409-800a-60f573850113,1086726352,14156201407623650115
+d8bc0116-8b84-996a-6195-bb903e244964,3699042366,17407030451910672265
+fbc45dab-6f2e-4020-086e-26a61774c099,2447690093,17684891532386905936
+e2460766-ff5a-38ec-195b-06df4103d74d,2316432694,428189468416037132
+8965f046-369a-405f-c2b3-48dd144b0e41,2360212095,16322638258793747651
+a0db9e72-ed8d-ed03-e27c-454536ba83c5,1470437722,6200010052318947909
+78d116c8-b8b7-7f76-dae7-4e2bf4fc5922,1239320628,14283013366834255610
+def5af4b-4c7b-4bb1-3e2f-a088860839ce,2600969864,12518153219035137077
+d2aa0c48-83b3-8ad7-60b8-f86ef187d50b,1519821993,10903362487515295028
+28960507-f5f4-c890-ebc5-4e7cd7648a6a,1565343733,11283827380814550896
+d2db17e7-0f18-37d8-ba61-3db0a4ba8a0b,3981083766,12158137212724193109
+4c6a995a-68d2-a287-d57e-558c7a32adef,695256495,14890891977645361882
+7f920674-8994-8d29-b8be-dc4568361ec2,2541223528,8222943054898361688
+c797ffb9-f25f-1ced-af2e-1947585286bf,4060188751,507096075135530792
+44a4d516-c982-be27-93b2-a7587fd1d7cf,2769375761,17418448569798510640
+eff2b1bd-25a5-945b-8284-0a500eaf00ae,2895431914,11995380075069220121
+086d87b7-def9-ec75-26a5-7ef1fe130e7c,751152691,13106870417124642900
+e38c8300-b1b5-c3e6-9ef7-639ebd96bc5f,3968790141,13320264785194909228
+23e7edbb-3b96-6f28-9270-12982e23ae74,2813014111,18433526494700425127
+a976f386-f405-9549-2dcd-de1fa8564eb7,4146580036,11450367431071618933
+4c9eb66c-c369-bd34-1cae-6a2793afcb4a,697929726,2347888106531967385
+a133a61b-3887-0bb4-45dd-d77a5fb28315,21309288,15906106563290623656
+88540302-fce7-a4ce-e403-45c8ac45cb03,3804266636,445212804787219267
+7c12eb0a-203c-1052-7d31-791df833f5a5,665007883,11872498976024216132
+ba8b0d9a-7078-8126-148c-fd7ebd175d13,2659912726,17560367743242519890
+67bfc55e-e411-78b6-fcaa-d74defb67e30,885237908,1240064411806420792
+648c826e-507f-0049-898b-6a7781732ce7,3254127829,5760335192974341761
+2234d623-0023-88a0-0679-5a4fa288268e,2869007058,16619392702689699346
+726b9203-47c6-92a0-61a7-9b7ff9a30ad4,3992249870,7621074320722285195
+e761c892-6ab3-ed09-aa3f-5e2ea893d08c,725158910,2718785063044045932
+56f5ac22-d3f8-eaba-85fb-6cdcb2ca9ec9,204739133,3891320702972266266
+8f51923f-25c1-24cf-e88d-396ecd5157eb,1846175993,16700875457268430027
+86369c84-7a9a-3183-0b97-6f0ab236f6b9,983041016,15226277299687514896
+1ec222b4-f270-b824-21e5-6a15b2b2ee49,3041340829,6192778077696441728
+7cfb2a85-104f-164d-0c69-3b7b54e91256,2526220158,11288533392398877511
+a78e38e4-a17b-4a59-263f-f21339613d7a,4205714834,13449406175148720316
+4f853a4d-d53b-8642-13a0-626c1075f750,3762073223,3859413219627194656
+ba839789-1275-9b18-e148-cf1ac85e7a4d,2349505735,17859428055146027216
+326edeb6-a55d-4f3b-32eb-cc0797e8d84c,1981497977,6192088470072514444
+d56a6d82-5a16-0ada-74dc-4143c5f9ee2d,2436844138,2065054025367460580
+6aa15deb-2dcd-eeb3-23a0-e03979e9c294,1539795530,1876643317159154221
+c3a4a70f-5187-3348-4e6b-1037ab3931a5,1793819725,10715583747083514501
+02152f82-d089-e08a-3575-6323ead833a7,490235585,15051775344384609315
+f79e4f4f-6d88-a069-2e4f-109e979d3d82,1295692619,7726802095037617043
+c07ca19c-5b6a-5aae-452a-2ddfdca2b98a,3014606853,2500834336471303686
+7b0c3eb6-c8c1-c4c4-0180-5df308ec3e71,546559535,6053397229996722441
+f6e62343-d056-246c-b9c2-58a52c1847c9,1487820110,6651484912295715383
+a3e49082-334a-7bf1-9c7f-bd15e672833b,1050354756,16971905198473490335
+e9b16b70-a2ef-668e-8fc2-99a77e601160,3257463648,9524444678923970157
+05e94fb1-91a9-3559-c6ae-0ab88106cbdd,4102933429,15783409420354209695
+c9153ea3-7ecc-2ef9-1523-1af65157ac3f,2700445298,12160348557470817986
+8baeccff-894f-c9e2-96d7-a1ed68fe4ec6,3858369512,15260775695631485039
+ede7e80c-75a8-a393-7628-7ea3ceb2fb69,3968936407,3906839238295083742
+8a32c200-4424-765c-a49f-7eb13b58ee91,837393557,5332262457753338424
+1504c1ea-ad2e-c9ae-2105-5a8ba1c34631,3328264379,4313626117628538962
+d7c25048-01e0-9e50-3ecc-e7909817bc72,3437530883,14570970757617318300
+207dc840-2cd3-9b68-5567-d1411ba38f3e,2037014659,1197707219988285235
+5f163785-c252-9e0d-af43-de77ddd4de58,3237367443,5176261026288804968
+adcbd567-f1e7-5f09-e7f0-0318ee2dd6b7,3963928904,5132063783141521295
+911d2ff9-ea79-0f9d-5639-db6160b3dadd,3273091448,808451024074384294
+3bb465eb-a681-ac82-4aa9-f28636b727f2,3750713651,11531553556313474902
+bb78a588-5370-2e00-dcdd-59179ac85c27,2773352802,17021303669994441054
+74474e78-4354-1b47-ec67-4358d4e94b58,1781354732,17678979820034028143
+156b5d97-7d13-b3c3-392b-9e8c8de8bef9,1068620463,6445362019974310647
+ba7d4a8c-bd2d-7983-857f-9c09c645cabd,83898704,10269302641098100976
+c52936ca-7e53-94d4-31f5-e53a7cf319b7,2205154774,3742778279043484926
+8c5ad8ef-e5b9-a5ff-fc76-fb7630e26b44,1402519700,10840401131925302193
+0c18a497-e304-47a0-ccfe-1155a8cdfa11,2306331834,8973765491076673050
+c8bd7cd5-faf7-7e3f-6d12-3d1b2f2c56b5,639513681,13486459020297340001
+e1e33b5c-7dbc-4324-97fe-b2d7621277e7,1376224172,11944867359415609213
+c9df16f5-a82f-20af-8e08-463e9a63631e,762780921,3824173359399959494
+052bcb90-23b4-5c1c-66cd-07a7922004d8,3851226849,4091211342363974481
+4be5e96d-bb92-ca68-b7f3-333ea7b22fbe,4222318699,15635867428658241343
+ed9d7904-5ce1-6fa0-c652-3727b5d65ee1,1734866218,14401906755714878568
+86b507d5-2f09-825e-21d5-82c0a385055c,2943094354,13968043515942253255
+53049805-7e9d-68c9-fd23-640be102f8d2,918870729,14183732653585485231
+79bb2062-50c6-d7a7-f357-4f4464a03e75,2823014948,17268052461824271698
+3e61f65f-5836-1616-2299-057b02bfa797,3692680257,710428190239659365
+bbbea34d-c638-a8cb-9b7d-af83c2e7caa6,3943199622,14207229089396562957
+c1f438c1-7648-3d69-5b79-ff248027b3e1,678460134,12423785456969286232
+1659d158-0f7a-e50a-e3ed-8fc7923a0e38,1326135455,1886642515692585145
+f57a58cc-7b5b-c714-693d-69f9b9d56b0c,2938414969,1307939315054646006
+fd9e41dc-89c8-33bc-b8e1-f9110ed6ade6,3380237897,13670492443302371271
+236549ba-9ef9-2cea-9e51-ceeb1245df22,2549128929,4958145192142798486
+ed983d0e-c8d2-ce2b-d873-491ee020e06e,2209503082,5065498640841555191
+81d9cf1c-a893-2e49-5bd4-3119722a195e,1827047377,12474931856801078191
+c1f487b1-889c-1217-1621-bfd829f4154a,1322182270,16498527799921987441
+bac3558e-a0f4-9d29-904b-8691596184b8,3251506286,1626273086296266404
+fc8e4ee7-4e20-7044-f4a3-a2617579fbc7,89636451,10347470866073025274
+50c57d11-bd53-ef88-b1b8-2344bced99fc,2389879019,13632811893704979077
+60408c28-fcdb-8274-ea3a-c188dd983ce1,2486281137,16917184770997994996
+45d4e783-fe96-dea4-dab2-5b7289a11a98,1233520486,8687261106792010277
+d8d6f8f0-7a71-feea-8b79-f77bb51014f5,3983149038,952632537570913598
+4861442d-3592-3bb1-48a0-0b26457a32e7,2900166599,14601788334301833382
+55dfb9da-bb12-8265-e4ad-21ab4e1c98ce,3711636091,5340211496245057487
+f5fc4602-dbf6-332d-a1f7-7987b6760cd3,4026109465,13898605087277297923
+68d7aaed-6b9c-19d8-3235-d7d44292d544,1486127615,1433939898528261657
+b2f6e5ad-a478-f1c3-18f7-21ff6df4af11,485191297,17534014920828683927
+283cbaec-95c0-f78f-1bfa-5ea26a3cea6b,3102404137,7402420649577457204
+0a46bf86-ae5a-2d1c-a008-295d777e6aa1,1003111813,17035008527542329045
+e7108434-6ee6-6eb4-2a06-193fd630e54b,2105903912,18347289017542299982
+6d0dd19c-f77c-4f1c-c24d-e5635361cac2,2712171391,4772596965463693961
+30f752a1-2c98-da04-2ee0-39369e768a52,4202621882,12404361153043606701
+b1f35896-d4c2-efda-03d6-48b6ee62e703,1762917145,12405604042790598343
+d24bd825-826d-9717-d8a8-ecae50493446,363496277,4220461128898088225
+eb9876e9-ac97-e611-062a-6c888c9ee605,2353201066,12234204823624924477
+fbd8eca6-5dd6-1d3a-aa91-cb75b2b59e2e,750965353,15594896370777929228
+6866e5d1-e333-8b07-9613-388b39870a22,3021971462,11110306008393965221
+2ce6fa47-2f48-b273-42b1-7c89cb63b470,266447299,6988628880367821477
+27e72301-9737-eb35-143e-5cdd4d193cef,3801973745,8702433885662335268
+ec4df438-06a2-0870-0eef-1b5f457a015c,1317566692,6118249895968015126
+9e76b5d0-8a1d-6daa-bb3a-621848b73194,938262238,9128179516630806978
+940ce604-382e-1368-5e91-f1a8d3d5aa87,3555757732,17444248956831031336
+9924578f-95a6-1605-c768-9ef9dde3d663,1777720741,6359005194694045741
+43c847a2-5046-16e0-d255-9ecf441b4437,808309393,16522048275237707291
+c89c9793-8577-3cbd-538d-ee3bee515052,1810735489,7225524721191172751
+2e4b2372-d059-a613-a4a7-a3b9f718e150,1394719644,17033013753577955196
+3675d044-f9fb-504a-04c7-8c08893e94d5,3602140096,13674065239426185918
+4dbf7d55-6e57-a4fa-8086-3ffbd02f3fc8,3659470163,4012594213272097635
+6a70ca10-3f91-c01b-7679-2fced1c824d0,655464289,9972078664969680492
+8dd273ef-6d2f-1885-71d1-98d347a7b2fa,1770352814,12517510553161478635
+fc591ffa-3c07-3db2-1985-75fcae4b44e7,770245896,8188043051655014217
+9a1c2f86-f92e-eae8-f447-00657a518e56,3543654414,1625583288348490415
+195da02a-7fd0-72bf-54d4-b11ed2f65d8f,3851907418,13915264114189701624
+f59747ff-7e8f-1032-0f2b-b0e1b8e3a2c2,3714613596,12872916511063745362
+3e27d4e3-64f1-3160-2090-4af264ae0050,3966032706,14859193955289491462
+9d3f336f-da72-5a62-8c55-195efce1e2df,2483717509,9965999821586145074
+1b3499fb-a775-2261-63db-d65082cde580,2377867408,17908203315138012818
+19eabb1f-945a-8c80-bee2-2ecbc4ad758f,3797879565,9910955567597100324
+188f126a-7e47-22d3-e95a-8e3c13416f6c,2345337835,5679355264422276327
+94c575fb-896f-5674-c7ac-b73c01fdb1ee,1435487291,15009037512558718087
+3096710b-2cb5-9452-aef2-c3bdf73c7d8a,3625907808,13981933459060194133
+397be154-9af1-7441-4d96-4040ea953275,1315926574,10812519713597435933
+00459854-4ff7-5244-72ec-9f36fb04cfe8,3098973775,14173572460113834608
+1802a37f-f491-e8c7-18c2-72bedebb973c,1646245338,11841812356825638821
+62336c4a-3be9-d94f-850f-6255c08362fd,2830515317,1694708489539742677
+886b7513-e0e4-3839-c586-99bc4406b693,3561308519,2037793601314157044
+8d70d430-2a2b-62b1-3408-431f12dc3c26,2711659441,16272881688419975490
+580d1a5a-bb8a-593b-fcb1-6e35dc72e517,2791990824,15890815539805555088
+6af9e1f3-ae88-5258-6583-be32b5bab3b0,2797471370,11330032309921104525
+b53d4e60-e92a-157f-78ab-a705c28a88a4,2744001020,12548985659143208976
+8d689953-a79b-b08c-ca4c-b11bad09942f,966126609,15129528044946777621
+fbec3020-9908-5174-d7c9-24f94465b68c,331187813,5573491677059552518
+dafa323b-fb1a-bc08-18a2-2b809839d33f,353198123,6996347862041000207
+c1133125-3e3a-899f-a120-425b615395fa,610613824,2939236815948874303
+4b097a0e-e415-a2f7-a966-555edf3d81b5,324152087,12027168833058190837
+86db8dc2-3d10-76dc-c3e7-f651bf9c7f78,3141053715,16280927037003497308
+3c7380c5-b151-e0dd-85b1-7e3600b15f18,2147486384,10476571811454509723
+bb1fbd5f-3b5b-6cfe-28ff-f363671b1091,3422284615,8565852419943861845
+852a3035-0538-6d5a-2178-960986a5b3a4,2938845423,6877154181362404794
+65132e62-24ef-b47c-0ef5-91c8e791d32b,263011585,6752295877245044077
+d5744255-3a29-c412-a053-c574f5436a57,3169508030,3403746626937559822
+3f675532-fe9f-09e3-7419-1c4e2cc541da,1451258860,18088354883681522052
+66ed1e87-af4a-4a1d-ca69-4bf6763f1404,4054849216,10665562020115641586
+ceb312e0-842f-20e5-7704-1e1a7e2491aa,2080108949,2454634782578447334
+e2a12d84-15a6-6741-d536-c2e7c272fea3,2905985656,4248960782322088046
+14d0cfc1-4ecc-1555-29a3-23d69e4fa969,2293894645,17046280964685269936
+465b849d-a7ca-b757-d3b1-9531d91208aa,1937321793,3401687314981427658
+83e5e2b7-fb3c-49b9-72b4-7b214853f12c,3129981792,11448569351012810895
+e5e1b747-932d-81dd-dcb5-ce5f1b1a7d66,2481285439,14201312057327145512
+7024a205-ac68-a0f9-57a4-4405c79777e0,1869267154,13271304322696597319
+e558d4c8-ba56-68e4-d737-67492d27dfc5,4191196399,15786988457724120890
+d50d3a4c-df39-df3e-84b0-3c032e56bda0,2136009376,4718333894600090418
+d592d5a0-a830-8c72-518c-6ce43d502521,1855973734,6511453760514273863
+38ee57f5-66b9-e35b-0981-13da984f28aa,1776859070,12282245156867893095
+8648b6b1-315a-66c6-f7af-acf8dc0e861d,1165530398,12107192619643896775
+4c9ee508-d4f0-a947-f891-4a1b6747a2a4,2575415677,1934484954699069764
+3f7a3da5-fef6-bc3c-63af-bebb8bf96678,1503380742,13395810095666164458
+4f0ce0d9-e0f5-30af-3a91-34d6641825b2,2218045031,11902209814291049430
+d9ed4ae3-9043-8061-5c02-96040e98edf8,2753914503,16693602710155431028
+6912fb33-3a18-0cd1-2da7-e0bbb2db999f,2317747876,12084683987305812636
+fada39b5-0b32-6b69-be01-f6201ba5e213,1373716356,3864529246415993107
+1db1543f-ee32-ff55-ffd5-f433b2510929,2591085720,18309253187291186339
+e9c3d887-b6c2-c750-26c2-bd033d071bfa,1764099811,10277247423326982787
+1d6c700b-f4fe-6277-e474-e1cef2811c29,2005701704,16363871228956613120
+3611ac3a-5c6e-1011-2ebb-1e93f3c88209,952090672,2370338933175977673
+176b8f9f-8976-bc24-b8bc-2d469f59093e,9656023,4124343370621149277
+1d8d65d5-2a23-9b55-e6cb-b42518fb61c5,1864491744,5095708044593154946
+efafb9cc-5154-fc8e-5560-a30d7e75f479,3448566826,2314816279940224468
+8aa67357-be2d-9c78-5cf6-13f306e9d206,2970084306,5386129971888571502
+c54a8782-01b5-b0d3-e3d3-dd0ab7f471ce,1289378274,15384025365396821754
+f06fbb18-9689-d6b2-1c9b-3327c313bd90,3685025084,1731758000143768624
+2f3ae6be-b106-56a6-7a56-50ef61117c51,1256857502,6193381037569776774
+bf9d13d4-7d72-d83a-ab14-51b1e09d2225,1568586656,15871335334786404402
+df83d9b6-30b7-eba2-de50-a03d0e8abd26,3192823086,9775299989405447920
+b3343cfc-37fd-e6b4-115f-42e016d4b98d,3984616021,9966220212612177680
+ee35ded4-2f9c-1c9b-31f5-8055f8eed255,132649398,18189833199397110122
+c271b914-fe37-024a-0fad-19034f8a5815,2789053942,13201873269206247238
+9d482216-08e9-ec9b-d326-caf66517779d,1205131023,12071714563696276627
+e4f64f25-55f2-9e17-a816-c322fdd566b9,2016154744,3766920416551658692
+d6da08c7-57a0-5274-cc80-426735553628,2049829960,10599729932462353389
+06f8c673-ef77-83e2-7c48-ebe349212cb0,1703292938,17270876206507836840
+a84d7f19-a07a-5955-2820-fdddd98aaa5e,3121442763,13010949125757233143
+9b18ea89-3ba5-5b2c-1520-d4c90df7c05f,3472073424,12919362141964905267
+97795b02-9365-3c88-2280-dfb4d0dd7c70,1570947856,7735113134452407034
+d6939d78-1c51-909e-bdf6-b7485606bc17,321104422,13550161674417272121
+ddb9353e-6f0c-1745-f48a-b7003577a049,1838171303,3896259588767740820
+65166bc5-8bc1-8715-992d-e7c35687b7fd,2229668104,17855417714649595046
+319ed130-fbf2-138f-736a-bd760daea331,3340601329,9580960190067853763
+36bde903-d6c5-2c9b-87d4-d3cab41afd01,3429451402,12221916785506608013
+eca0babf-5453-862b-b919-d82c88e65ecb,3962446377,18223101483058518524
+eec049e9-d5ac-b428-76c3-f3421916dd01,1224599085,5458197816041283834
+8bb45a86-3cbf-332c-f41c-1efcd6145c97,1219714810,15713821408296722841
+48540e97-0dd5-b11f-88dc-6dfed35bff35,979518271,6584893912087887011
+9f8f1f78-99db-57d2-d880-a7a08dc9fa60,3606690852,17965553106011307226
+45bb55f6-d7bd-4bf4-485c-105283e061cc,1638968023,10520330469851480783
+57856e5a-f2b3-9950-0426-fba57d07ef6d,4034214563,12470785925619818074
+dd993c1b-a52b-51e8-7c17-4ce159e6fb9f,3265037935,3604872583919993734
+69e68db5-172a-8682-1b41-3c4778904b7e,4183737027,842913408379360237
+f517e502-cd5e-ee2e-f3fc-cd42e28da71f,1963593361,8312628612874062402
+adc79a20-3bfe-d523-f26f-3c05d3bec406,3585144174,15343219788667753643
+91b1b1a5-128e-09d5-e786-1b3fa30a758d,344226469,2407753543691448160
+a1699dc3-1d73-b8bb-8581-3724f4f19265,2122217540,18100653179409458328
+666f6bf8-773c-e8e3-e447-befccf2464bc,807204439,5046555663601879560
+99363038-1a30-4978-125f-c8dc2bb489d8,3516131163,3360317554336845155
+4e64b9bd-714a-66a2-2bc4-fb47bdbc2f11,3675741372,8272536825617548897
+14fedeb1-85ca-ced9-a885-465698cfe038,1002530169,335585850169151036
+3b99eaf1-f5ca-4bf9-c377-c997dc0ad8fd,4172324934,9652082013403077009
+90d7c74c-04d8-878f-412b-4ac868a6b180,1651639131,1333143732595962528
+fbec17e0-a67b-fcb1-ff64-c48e3101c8a6,3293786056,7523892175136781904
+b2ca1d42-6cae-6b70-2f61-2043036a0e56,83474110,6409273896299460396
+f388979f-7349-f413-951c-20be1c37fa9c,1116731923,5929171035403116803
+2b21d1c4-7b32-0acd-6f44-b086c217dc05,2630977297,1912631093856783158
+0b4b982f-9821-fe1f-93ae-9469f2c42535,615599410,1613914762928184968
+d731b911-88ed-30fe-1fd0-ea6e3568c5d4,288222398,17727772355300269281
+4d37719f-5c18-ee6e-d837-ecbb241a5515,231515386,7585584585186260236
+83e83d2b-d946-34cc-50da-d6c1c0287fff,2405930318,1846158492773730281
+579ffa6c-03b0-218d-23be-49e3a78c202b,2505163012,8046131949348086748
+a3b6c837-8d2c-7c23-31aa-300b75fd0c50,3111918467,11672591148223214970
+4bc030e4-2def-fc15-2ff3-033b62c7a595,1038912429,12605698067594178008
+844e62b9-325e-f5d3-d869-f38f690f8b76,1723445953,2190554355134822967
+3bcbbc9a-3e68-3139-1360-75ea2823fbf2,1230562173,2180400820197964547
+ec2ac604-6c82-6fef-fa35-1a72003b276b,3326690822,6207332396771606328
+46edbdc2-1ec7-39e7-6123-438fe5aa459a,4290534580,12893779707041057308
+9c6728f5-f27b-e2b0-90a1-2b5c81c1b6d9,1084766228,813966653472389802
+09577d47-fbd2-97e0-514c-fd7614561fe2,1030997618,11022886677203373980
+57bca222-6265-39f8-30b3-8234b091a5e6,2521183596,9662071518245401844
+1afeb6bf-c3e5-df18-f242-fa675a4a499e,3348231405,16104799134279589115
+ce206e18-d5f9-bfc9-36a2-d7d9d14b8c3d,2086346374,6219653580824921962
+8abf967e-1969-7740-201d-5dc279f8d294,8723993,16237614134994235679
+97ca2597-2d3d-7c2c-9806-9c00c1eacb20,458522664,8001999399669676455
+8ade0028-6a3d-dc1f-0c06-3a4894ff2c33,2095712960,3129876897759583569
+ec13699a-6af3-2f7b-6d1c-7ed7039accf8,3888111790,11045994356556398502
+28a2e271-15a7-492a-2585-dec6d8b5a9d1,1896268537,15409021012118682333
+98fc2424-6a6a-659f-f2b7-fd2d58d8cba1,3277293197,1605849116298881550
+9b13c8ea-bc58-e608-f39d-58d9094cc69d,264258344,12974248631322713383
+f422f914-465f-c84f-59e1-43cac8318e40,3274761580,3670419217595802897
+bd3c7d68-39fd-7586-60c5-75c41e0d6bde,1863102668,5250698550799602203
+33c104e9-716f-e411-38e1-c3f1df6b3402,1733818541,17457088346861328656
+b40c7220-0d4f-4dbc-3c4d-cae8ba090530,2607118686,17811924835937832962
+5efad394-bff7-efdc-5ac7-f2cb0e19d59e,1057818038,7403321776479493070
+ae10a3c6-2cda-9730-dc9e-0e5c5d6877ed,3561362617,12590359409324587775
+8d40df27-165f-307e-2c2f-95c9cb61fa8b,600297653,6047555813515353648
+e206d353-c00c-b9c7-c3be-b08d145eb037,1758342157,13732987852825042679
+d379132b-abad-4f84-ab98-e8ca31ddbbe3,2590033477,17064183160282115252
+d1ddf088-682f-a684-a97d-00fc0b1aec28,1338812670,4758716883452483507
+7694410a-5367-1399-6c5f-c5bf897bca9e,1239013842,12875061784770349191
+e5651d22-e7ef-0d70-7445-de20989182b3,252872436,13995437135988220571
+69871e8f-4bae-cb95-c00b-8ff5a67aa904,999657089,18009506120391362049
+3d681301-725f-c021-d334-4289361aefa7,2751757615,18263476371078801190
+ce6bb1ea-6d4a-37e5-a83f-e32226dd27c6,1039925162,6304994050165855940
+2bc81b46-b90b-2f49-c060-abc1b9738cf7,372192816,845595564368353202
+279311f0-074c-b2f5-119a-f3e831e6124d,3074038938,17096149807172635226
+8e1a5a4f-1ccc-d40b-51eb-48f3c001170f,2340322724,6170158383313927474
+b69309bb-2ddc-f39d-b6bf-c724b98b932c,1514640846,16412652116455006238
+f6de5a21-d6b7-378c-bc3c-3a501c0abbfe,3742439593,2700669785798436178
+1739d1f7-61e6-528e-654d-5ea8a2327e71,1176003409,13331073516359829163
+5ba2fb5b-0b22-4ee3-feb9-7d4f2ed4d9da,3032665858,2248331197772856883
+7fddec4c-0f96-3baf-fc1b-671454471d57,411745370,1929135877880515135
+ba397b31-4111-0606-791f-f717b8cb6b43,577756870,4182075769735253792
+03eea294-7eeb-00f5-233c-b840535c628f,2418561705,10615688195191766110
+66eb3eae-be21-5415-43de-814ff72da54f,3006617129,274894439933272521
+ecc5e5f3-bff1-babd-8a46-d0479c4d2b3f,703047433,15114833201953101893
+ec6c09a1-8f15-1214-932b-e8add833a0aa,1070251172,10515224304622573068
+5c702832-8b3e-28c6-7fe6-48d260bbf7e2,1037075011,17399481637344283849
+7b5a975d-bcd0-6ba3-3448-c1af9f2cd992,429299542,10071681444254521222
+a837d2a8-ad83-d69c-b8ba-14c13e225418,1696393914,10564689753154985231
+9d393155-b850-4ef5-91af-f13b46583692,2422617242,2218864024277029979
+0d6efce8-3cc2-023a-6944-571ac3fda09e,1825714394,2370485532477927375
+49d6db34-796c-8314-822d-ee8ebfbef844,460207464,5557393120227867838
+854be994-9742-f9b3-c8f6-0c9a59067a32,2555894860,6466759749871628699
+7b160a65-6d63-69b4-ba0a-30ae81b8de81,3741097335,16179474469230197524
+34078081-28f1-9a9e-918c-1724d3d0be81,172521210,11581155941720370301
+94c26e65-fb6b-6498-4756-99ff46550c93,2746327124,10096066268185736121
+11b8c672-c2ff-2a31-f8d1-1124375d8cad,2451814203,3800760356864514640
+d870fd6b-7399-2960-06d6-e4ac3fbbdd8c,3965376498,3682213963068808308
+d929e83c-150a-f2ce-8e6d-a6901fb2a4b7,1748131083,8823039163567906936
+2fb8e15f-5589-4323-5cf5-bd4b84a54069,934600157,15593002817458411374
+397f80d7-73a7-434d-e6cc-dfe18830d485,3012451110,8575489065827763771
+cf162c56-37f1-5856-bdf5-5b23402b09bf,2969147176,2514380560513514005
+be0db424-eb6a-b14a-04db-5ff5e34aa59f,3977539838,2450944177743713656
+5edc0b70-5f2e-db73-8fa6-151dac6e40a0,984064779,8224519743668002316
+ffa50e41-62ab-b841-9f5b-95bcd1e75129,2082719603,5114529217803696039
+d677cc7b-8475-edaf-2f2f-0613074e9869,3863484920,9865503898676267705
+6a50f872-2fcc-bea5-9452-b32b2bf87a2b,2952579136,9720639836801361051
+7e9b0381-d957-913f-806e-c4d53e7deb2b,1359778433,2310996964781803582
+d2b14a65-3383-a11c-b6a0-9c8721683dae,2312947305,6737016574262030525
+a7646edd-fe31-0b29-a984-c65a02af3ea3,1685901534,274379964338505256
+6960edb8-83bf-cb14-8780-adddcdc8834e,2431332621,4379507885897179625
+f0b8e02d-34d4-9cf4-3899-b70ba1d00f33,1078941867,127950971633886126
+34c41b6f-5f29-e511-7a05-9b4f695e910a,1452976309,7422207469918860367
+4d68ff85-a61a-6584-d77c-47a3cf235b97,329885399,7608454581697610314
+15f4b074-cea3-c4bb-9628-130372f9e294,2645766666,8739761218972679041
+20b2e7be-07b9-d86e-ea7b-960e2f6d713b,603925167,2632450344253435892
+35b447a1-5a7d-fd37-0e87-5689dc279669,3610888507,15209014817303381720
+13a65434-70fe-cbff-4246-88bb54b36481,4134179674,2749126324095868494
+418911b9-c36f-504e-370f-b416a4beafd3,2916002626,18178946590341321522
+3e6d1167-29f3-a2be-36f1-a147def5a339,2224676513,3268957270068304558
+d73d22b6-15e6-ab19-64c2-78240f738d29,2621082586,8163695293644722467
+003c7610-aaf5-c332-4ff5-8296731e643f,131792022,14861078080076673490
+c01e66ad-ddc7-4896-530f-954b50f9cf9a,3868467790,9091055887918903137
+045dcbad-97b6-4c9e-4b1e-212af48499e0,180442022,11019108246572031366
+9341434c-96f8-d286-7aa5-c9b979488c6b,2581107617,16282913973547491185
+4a0f781f-3b02-2852-a1c2-8accb67b9a7e,4237701330,12638788203344089912
+796cb7a5-e8e8-3680-d2eb-6c228efcb7cf,4033882830,9801222260946831506
+86ca5030-62ca-e1e7-c5dd-8ed64b23f3ed,4190860727,7462329691827440086
+16edf570-c32f-e5f0-d5f8-c0841c7bdd00,3160900526,3086688281044721261
+5ab3c6fa-5d15-bc0e-a4ac-3f8fbe99d236,4044915712,3243552440972599836
+c07fb673-e9ea-5916-187c-eaa7ea8168c7,3315848878,13516341801066805446
+2e133a75-55b6-eaaa-7d07-5527cbbb6213,36371094,10918202151191294319
+1acfc88c-3747-2b34-bd9f-bce1d3ba84a5,174597696,4408337684938781645
+ef53c587-eb8e-6c29-77ae-2c759d1f9a34,4072614175,7200237190818733727
+f4293637-84fd-63b5-a72c-d4122e4bd945,3013113252,9315073142979371043
+37f31517-76d0-3a20-3fbb-fc1800d8a1da,2814355072,4413774867998332593
+630bfa72-3605-c822-b5cb-9cf05b225858,601159114,4873732193783821695
+0b3b1f54-a8c0-b588-14c8-7e41dce92088,1346544878,15530216581874497227
+6132168c-9cba-84c1-9276-f0dba237c077,1238181946,868776164425056778
+53714ddb-fe88-e042-44a5-88c39c13a214,1187208921,12436726458336603384
+5bcb3442-c19e-f876-ef25-1f801e10a1a0,321121398,12010339174517190547
+a184e00e-5f4c-1395-ac02-ec97321b7de3,590161691,5032107369404321096
+1a2bd7aa-bfde-4c31-4db7-6ce54340ac24,782173645,4627361364622686062
+c97de076-1a86-df69-85bf-3d1dca207605,1461103801,16747084710063130198
+46ae599c-9bbc-7e4e-9505-5b8b28e70d7d,1273610847,5001860284664504222
+2b4287dc-2c8c-f033-9bbe-8306dd4b2f9d,2529413778,14869462024106054934
+e462e09c-7e6b-e8ec-af3b-81878a2acd53,78880906,4008319432589500536
+51266920-0cc4-f6f2-53d2-a041834a2b87,2255547872,11606608551163064313
+cc9d4c34-eea9-e6cd-3b49-d344a48af0c7,229198511,9073455772249028013
+d038c6b5-5bfb-df4f-fc3d-9721b4f2667b,2019926352,11624960189729472190
+84507170-be01-9b73-a9d9-9efadd041ba8,752674426,5335127661823380574
+4d64daf2-d0d1-6c63-80de-8fb70462075e,1249348194,2321881648621542066
+65eb8a40-95c5-5734-e735-160d48d3c769,3331439652,17588952423946166033
+a048ac3c-eb77-4ca5-8c92-89a94b2d2d61,1422381034,8161950159772426351
+f2a8bd0a-5153-3191-3bb7-580f7d6ccac0,2242566631,16437354114921933534
+37242bc7-7f46-67fb-ee0e-0e649a0cf567,2803685896,7085431440947013120
+d2a89817-2f85-5812-2eba-6f63e1570066,696267615,2790968312560221513
+3d6a6907-8147-4208-31cf-81cd443df741,2860423891,14946295727143162996
+1ebd3f4b-d7bf-ce97-5239-7d30e7102b8c,3195876163,1575468476064517878
+218c1626-f49c-8809-ac60-9e50dc93e85a,3728175795,672078860944245400
+7926c634-66f8-0760-6437-58ec8280a396,182417363,2033668519054066833
+f2e16ab7-4c1d-548d-e6fe-187b982afaa6,3175519693,9516710539848721258
+acf86cc0-102e-76b4-ec25-ae3fbe3d30a6,4239234606,3043719835509200832
+95f57b23-058c-15ea-8ddb-b70482aa8bf6,1004547196,16364878455442552106
+6af4b45c-46b7-6008-c246-0ca6ca9e46f7,723459384,2876798888807855421
+c57aa8e1-c113-ba5d-076d-9d25a34fc608,1874971287,4964646960810477768
+9f0c4b6e-4606-38ea-2c0a-fbbf1213cc4e,80936906,4673481229827864848
+e607bb5f-78fd-a66a-0bd7-9178833761b4,105018703,10464736259257046030
+bb1f7326-2312-4ca5-85be-a2ce4cf65904,885898999,4917650348945730237
+5b99144d-7a5d-c381-9c65-86100e965780,528185695,1213222625667315294
+e9f469cd-3189-cab1-131e-353a4cfce7e4,1033676483,16895203568889726594
+bc146b0b-dbe1-bbd8-3307-d65b1c50cd5e,3216805349,2635705840107525075
+cc749dd2-420b-8790-a4b8-18a1193c70f4,3505953886,16009461095599880979
+d003f5f3-23c0-46d2-66db-a29522a73302,1504037144,11195589322832772135
+b4d18485-58a7-adbf-0a90-2c13655bf940,2859818284,9335455110980382282
+960f0d3c-fdc9-123d-1dd0-74c8c6e0d536,3842176229,15532632805053941369
+649bebcf-c6a7-9638-93e4-55d48f81009d,1647531602,12601122688433293364
+e8d70129-97bc-28fb-8e8c-af7e5cfe1f80,335626138,12310485659949022197
+6e156afa-0aef-b23b-7fac-e0bea7659889,2087847899,11924947948385615962
+dfe08e87-0b34-41d1-3a0b-2755b1dbd09f,820574142,11439295075938043339
+844b2a79-214a-3ecc-4350-b9acf6ad525a,1064289817,3500485805121420267
+e4beecb7-1c64-a8f3-cd8b-68f9553f7ab8,1826708508,9517776753903331799
+d7b35189-4709-38d1-5b3a-716233157c96,265002101,1848599846188848970
+a6978a3a-b0f1-e55a-0101-d2beb1e8741b,4259476240,7623636532257306283
+c4d5a32d-971b-3797-8748-0b057ca1b16e,2735851438,17007366601922166682
+7e0e767c-c5ff-55f2-d5f1-8f2a3be33164,415376674,12241170072376062464
+5dc36c51-6d85-cee4-4ace-ffdb2907a045,3438133773,16966205564848891097
+3d5efe1d-0bff-60c6-c2de-81a4ce586d3d,3451429544,15934438331534708080
+1634123d-6c65-c605-98eb-545197d0f53d,2754585498,1131504561092094178
+8e6649ba-5352-552e-ec4a-fd8cf3fd2dec,2787835047,2411811028030444757
+2ce40076-6bfa-66ed-c829-978be8a6a2bc,772961002,12827386647426305034
+d1a4c367-89a6-02c0-670a-d05d2daa9221,3231632972,14992943650578561318
+1d735a85-c8ae-715c-9545-eeff52c8534a,3068891341,2033814560677418341
+a578eb40-4e0b-1cb3-e928-971cef92a1c0,2697121231,14721137316997387413
+2966c309-7ff5-623a-4514-c244927600f2,327725003,12592790143199220728
+3e4ebac3-0423-76e6-dee3-46437728ae72,2995861160,17602495322961696521
+86ad660b-3292-b2ab-a489-ce0c485f7401,1277000951,8158146422077460912
+ed40599c-3c70-fc15-f04e-8a5d19d0d504,2444019471,3186541108174977894
+5ba4672f-6d48-d656-6e07-0b4e83a2dd32,2901603734,16716467329500200191
+c9728d8e-ca08-ed04-94be-805a8c6cf958,2557095393,3199848144752188669
+7d89f3fd-fc08-b306-fd92-0c46494c9cc5,1723541502,3906863688564088908
+4cd49090-078f-3b70-e5a6-63a7fc6136e4,3921968498,12830123013565259101
+f810d2a3-6be0-ecf8-e56e-4b893efa63c3,2612477170,11432236178318397189
+4d3caf17-b7dd-98cd-6cb9-3d9cc1c62fab,1404099740,17836150744286126401
+f223bfe7-8fa3-9f64-7993-52bdf4f13369,3858381372,14630091344965258247
+dbdf776d-186c-bec5-5029-46278d2f3c74,1295876148,6368982525572921805
+26c97901-3317-dee3-6c28-e5208fe9ddd7,1424692381,16280332833670815403
+b329d1fa-f98f-0aa5-b423-2391a099e553,2285525958,3961728850504876442
+99c72344-c011-6305-94ff-5b50bd3c7c14,431888790,3218869218576545834
+d112e0ea-eb58-cf74-64e2-19b31fcbdafd,3583419359,6650809823058592835
+d7bc3511-8408-2572-461e-bf0f19f02ce6,3114378918,16078394799487165020
+f2703d3c-cd04-cc43-5f40-dc6997eabb4e,2687957717,5187072344236237905
+8e8ce3fc-d591-4e86-6b0d-ab8e49798f28,197923175,6711841583879987550
+57cea4a5-4def-db42-1c4d-439a4d21605e,834863712,8414994966097951988
+36a146cf-c9e6-f569-ad5b-098a8fb1c37c,1130612179,320530396474178342
+cceea639-e341-a9bf-ec22-e4c18f1c4aa9,882815066,6222920760709603606
+cb6c3efb-2904-aa9f-cd21-124e16fc4c09,1167670271,4819150303998562829
+ed9b912c-8fc5-b45e-1039-e1a80f483f3b,3980456059,5888417015847299801
+36b4c9a5-57b1-2423-f02e-26c3f06eccc5,467608818,6133589033380951652
+af5e8e4c-88e0-c584-82fa-f54ce6cd76ae,2893713028,797040621983851595
+cd089f4c-607e-a42e-2a08-37a97029b6f9,2348858053,4773190418519303785
+c48bb186-3085-8521-b6a0-d53126f9d9e9,3183066293,12116594985050012862
+36278c38-c8e1-20d3-d38f-7a3d36e65974,4127034990,12962915546392634976
+de1cfa0b-5cc6-661e-de9d-585a3363dc87,555157660,9549573086589284693
+6ca025f4-a22a-8f53-592c-3103bd8d06d1,2875369925,7642317253339556941
+0d600a38-9d71-80e0-b4c2-908736998175,637012853,252293105426543862
+0d0bd741-258a-ee48-c0a4-06f8f945d048,4242226336,8223128471910766027
+e6499117-8f64-1003-224f-041bd07a97d9,3741901860,12194314633690919705
+503933c3-8eeb-7b4f-2d96-022f1cad19f9,998565237,10496432104758494926
+b88c3bcd-7afc-ae36-9f41-5439a106bc44,460271087,6915395742363206720
+f422f223-14e2-6a8d-7c0e-67e2175f9ece,4009082134,1704009593545029700
+fd457b7c-4119-ae75-fef1-34244153bec7,1702760528,7123483836928697622
+80c9dc83-3294-3e76-2d23-6c56620e4c49,3011518916,7848033505663772164
+6f4ce1a9-0d72-c3ed-dac1-f0db5cc71bc9,2534544603,4270369681790585406
+06c80e01-28b9-fbbb-b1b3-dd31df2e601c,1088023787,13808611661498042850
+da5536c1-cd06-d169-1de6-be2c164ad904,478035060,14548440830713663236
+b3e83c02-b53e-3452-4456-9b5dd1c66e98,441658929,13901201749633247121
+aaa7e4ba-d3e2-931c-8518-13045390b425,1391670146,4279359803302092195
+1e524353-2127-b473-665e-87413f705c66,4147691504,15355955311117293896
+105e57d8-96bd-758a-7b3b-1d6ae7858e9a,3750065404,13276255309892071137
+34cdf78b-22e8-eac8-f396-f382bff8008d,1330009281,4584035792242191519
+ab2811bc-48d1-a938-ef7b-01f201c23896,4292487148,16887515276044362034
+1665bdaf-8f3c-6706-28ec-59fbcaf13288,3594358425,2116426142857488494
+faec1615-0358-4b8f-7a77-49fc39b0cabc,3527730086,5222133613194829202
+a2775337-8d40-c940-0128-a6606fe6c9ce,3677360525,12975502883674219984
+6a0a09dc-9015-d725-c447-1a8fc6a4db76,527229005,16283980534578711337
+3715a139-2b64-a112-17cf-7228f6742110,3395314189,10424996708332986572
+acdfba0f-7e30-eb30-ea88-6ec680f3885f,35630213,15957072600939344136
+3273fcc6-f30a-bd10-bbe1-d414ffa68801,2681982215,11022800507967501706
+fdad1c79-c906-6f3d-daf0-c9958318eb59,3852647682,8104984105732472933
+0588e0d2-f102-bd85-bf37-080caeb94b53,1671780606,16200797726548581431
+6a6d6aa6-7022-7894-b559-343ded083149,890253954,11856491063581543359
+e66da495-d903-ec4d-61c9-deaf867e9d05,3424824061,10064118273135969721
+a830dc00-2bab-1e48-b500-06922457d5ff,2945271114,15379736853797530527
+ca2d9920-4eaf-ccae-c8e7-2bccde157d30,576687702,4693127318371456967
+c47fb7e4-c11b-3c82-2a41-a80556407f89,2130276443,1238485244622874225
+f30a0b03-18d2-393b-cc1b-c84534e7c9d3,262003250,2467084799535168673
+a50923b9-0716-599c-12c7-b8bdac78da78,860820474,1358168897984804463
+3f78a9d5-f4cf-a70c-ca47-3a373adb1dcd,1191472455,16264770900180815212
+2ba6c23f-eddd-7c63-1b0e-ce0762f667d8,3967883443,7119290142554847942
+8367190d-fbdb-fd6f-7cdd-7079b5c6d6c4,3080602156,9149428333759103879
+5b22b63e-8561-b2d6-e742-5c56e3aadca6,3758876884,6324616338044929075
+6288edc6-08b7-45d1-e85a-e1b4335e3b04,3149846935,2637253676559228000
+25b02cb5-b757-1c81-5a16-a891f01cc952,515651169,2835990353229106319
+20d50bdc-7924-8a0f-0cc4-5b03e106f631,3579550810,12146738017911351005
+d5b05fcc-8388-018f-88fa-bde848270e2a,1996534038,12613387428144353959
+15d6ee6f-8428-3a52-30f9-915fd98f7f4e,4011881828,12977781803318362542
+8b64ce35-6ce4-627a-07c8-0e7d179cada2,4043898740,6226841069405464518
+0e737260-4908-815c-df44-9e4d20cafa30,2587869060,15733485835985177792
+4bad4f34-280b-0547-4819-267e6a2473bf,3918125924,516124443331048355
+93c4da9c-ac86-c823-2440-b84664b9e26f,1299024471,2520956247660007842
+949eab68-61dd-385b-fde4-16e780fa9aa6,957252083,8129503506925176000
+62f42a42-2e54-120e-3e94-9f0c15bf3bd9,791279851,5981713608039049263
+9dcdb118-abe5-4d9c-f7e6-a1a35ca8338a,2153454524,5013399864131704743
+ee83b706-3e44-b2ac-f413-290a362c797a,2264333505,8585260733017869145
+5b1bba64-6610-f324-a146-e14b6d004a16,4022029726,17635037505485062742
+5cdf637d-76e3-1323-829e-a3c5b371340f,2130939100,17801674071677912522
+b79b678d-6627-7727-2fb3-0a12cc16e777,859158489,11122214661386483983
+90a9dbe7-322e-7aaa-fef5-5427d45f305b,2024066276,13349848477285531867
+c4cbfc84-096d-46a1-04c7-b7f21886f1f8,222514415,6237130746569294162
+053dd1d0-926d-972c-a29e-34b9f9b59ba6,2538170093,11298469180939979754
+eb54a830-db27-b079-5cbc-d95277377e51,1081754156,2485279864842487666
+c372e16e-7fd9-95c8-6f41-926c36f4cacc,4275498425,12161481631093322459
+7f04c92c-8d9d-60fb-c449-3b8a8df7bcf1,747253368,2238201679549064676
+bd6e644a-7dd5-3ca3-0506-daa5e11a5614,3570266774,16163323644509829659
+9d71814c-ac01-2017-3dda-0e6d5c43e37b,2758981915,3828264108763041349
+b92786f5-06ce-1d3a-b873-718977a2a540,3765956806,727965370852766098
+ff9b4d8a-1014-10c3-549b-8fe903e0320f,649218093,17747503825450535224
+b685f4dc-9637-15a7-53e4-e548721009e3,1103658685,3051668059248794484
+ac7aefa5-1d6c-823c-91d9-789ef3c1a8ed,3443486494,12787287152336164273
+663ad283-d03a-cd6e-e107-8bab2f5a4d52,4114105534,7672503653119968419
+7a8b4ce6-1a51-abe2-16e9-500e48ba739c,4028193032,4774370307208198686
+32dd4ca2-6bee-72f6-18b6-f61ddc6c7cb5,3470669725,14274422932259182715
+9bde147e-e46b-3d76-4366-44c83fa3b0d1,2313656301,9765362798869526905
+226a14c6-1fb2-2ca6-a9c7-2a139f0551f8,1722622486,7628144098437629560
+8ae77faf-3823-a4fc-58fc-5b8ecb1cae2f,3172533997,398218313691580771
+259647d4-0dcf-8458-fe2d-9780deb357b2,3595282254,2689246491014689773
+d9be39b3-20ee-f8e6-68b3-8e14e0368f72,3181042989,10039696431825765145
+c2bf9c16-a6fc-54a2-cf12-53e1ca8c22a6,3360393232,14901486959957249847
+5d4f7fb0-e09b-7406-ae53-e38131e5afca,1166844118,8104138004297933058
+cdb1b6be-956d-7fcd-831f-1a60a6fb08f5,2613278842,8711159336360611964
+e9fd44cc-d66d-42ce-f7de-1374a0f1aac5,601588428,2501763072758886014
+6e895725-6ffa-ce97-6b22-8b98441000f6,3251384301,6527195093118954953
+580b15ce-e836-1e3f-3472-a3a5034ef747,2834378054,13852989988346773512
+df607fbe-6628-3714-6919-7eaaedece51c,255364670,9685022834416879696
+ab6785d8-9ff8-fb96-cab6-6bfc1e5e47c9,536663121,12900006894365839683
+1f4fe55c-b875-279e-9f7c-cf3b0c5cc46c,239941886,13291399221168616676
+809991a0-f958-83ca-ac1c-030eb12a8815,2169189069,13048548088550097506
+eda9e4dc-194e-176a-0dc6-342633052729,85682506,6317167490291705882
+3d142b01-5f6b-e4df-940d-384cc2a3954c,2532031783,9561790031692224976
+78c596b6-132f-6c5a-c47b-36c6bc8260fc,64775459,236684653800587881
+230bf3ba-d138-5b73-d457-dcd86415cd84,228904766,2314149535459809232
+32f424b9-bbca-fe49-dee1-c20398372eaf,3586844605,2679315511703546166
+bcda832e-a734-d558-b641-c15654e805f1,2325657457,1351465370563678329
+cd775810-44b6-c024-277b-ec69ddfdddc6,3299759781,14057428327275931291
+b6feb7da-7281-4a0d-9da6-5b1ab6528681,37152231,2103770970398266963
+a30b0531-d23d-9a3b-a04c-afb30f2d7a5b,1845928475,15508101320025147455
+097ed1a1-c875-2539-23e7-6dc469c33673,1892610019,12854460834151008171
+24999f94-6a24-fe29-d85f-629fa1764a81,2207901831,2190897806009211445
+59d20ba3-daff-14f4-a151-045864b96d9a,1008573067,3405581645890682746
+207dd751-4427-887e-a996-d5ea0a8cc9db,2689674538,2452319347857725372
+b92dc39e-d91f-4500-8946-fd1775a52117,334152103,14958613015491993117
+d511c744-f125-c124-d4ce-7b5076a09791,379077156,10611826171874577081
+14a9ce3a-2417-77df-c66f-2f72298338c3,4010305783,14026040813182448038
+56a35540-5771-e1e2-db67-62443427b478,249977635,10858502271117796879
+87dd5960-edf1-aa1b-c999-0eef916f0bb0,2647644999,1743393954661897803
+131e7bfa-16c3-3e86-7679-e9df480b89a2,763876856,2042037186013277991
+fb58b62f-4245-9d91-b8cf-c13b05ab7e5d,2705905697,15489451494659222035
+4b04301a-34be-d501-16aa-923ca7677f7d,1005805091,13859276931200521497
+e357ba8a-43ba-7cd4-7472-f0cb56cbc6f6,1300923863,2936087521800298450
+9c77c571-5c5f-69b2-24ef-3e2639e81aae,1934177787,6850439811402035465
+825a7837-6037-0507-3d68-0ab30bae7c84,263743566,5505679605594518987
+e7a54c1b-44fd-2f6d-4a5a-b52a7ccb6aa1,1734280259,5878687132617505562
+f81c6c0f-8d5d-1de0-114d-67e584fde35c,2649889981,6941223018233240268
+68bdac76-b38d-265e-4e8f-2b369861eb1a,1713102429,251370792473226255
+86f68910-378c-451d-c737-43233901b2f9,3422909412,8037402049748510834
+105c0d9e-0acf-241e-58c4-51308c5d5d93,809853955,7319220564017209395
+922b62a2-a84c-9e3e-82b2-bee1f27c24b1,239257807,6145409306911939274
+fd3f24e2-5644-bed6-15e7-1355e502362b,1543235707,18324383989613542430
+aea019da-3689-fc51-3ea9-957a28c29053,3098348471,4349128839568607019
+fe4315a7-bdc7-35fa-14a7-3db0dca270bb,2494902602,13565572710061237723
+a3d73418-ad5b-ee48-d34a-27363520bcad,335305751,8481967423359112632
+bdc3d986-4028-b74b-3e65-f95a05e1214a,1441742152,14457693833217784530
+bde5de44-1bd6-068e-bae5-7d61098671ee,231713039,7656339527631970555
+64b7481c-5a35-bdaf-c497-476590453483,1332040047,40342813525432702
+f6d95ef7-1cf0-8758-8812-bd153b08c0d9,2336994548,5989591687353465653
+bd3551fd-c078-9eab-2956-007fb52ac718,2369761723,14158765050475050673
+a6b3b892-26d8-7fda-f89a-920f9ed88685,1401949909,15458482388974147124
+a9fc5ba5-d803-740c-3fb7-58debd4bd54d,2617221013,3297940965215897395
+45a3bc5f-bd51-7f29-d4a0-01cd9cdfd05e,172280808,9061942778067689963
+a951c802-5e52-de00-b490-5d0e7de1285d,4156862118,18177374984259252483
+7f57259c-adcd-f9fc-f0df-8117d212fa91,1185314301,8569993336730468639
+ad647a7f-cbff-0c45-3ac6-32f50b402dc1,2427767869,5436645180877458594
+18da6dff-31bb-e59d-7b8e-3c39b8962416,887938674,10332884212393343674
+a1309573-7bd7-cdc1-cb4c-8f9bcb12b010,256486892,13621163006443627469
+19bcc0c0-1d52-9019-0475-b071ea6719f8,1880601296,15204728770660257584
+00d69145-7f60-ceae-838b-32e93e86a6dd,170669867,14308971861118518366
+c9028171-c7cd-7822-c2a5-d44d946cf83d,2117992192,15529384984629812754
+f475106f-0aff-250a-a01d-d3b1b65254ef,4078900217,7180611408541803901
+16847183-8314-bf5a-8e08-3c3d5cc001b8,2253047461,10151824178837686385
+060ee4c1-333b-1c63-7735-e1fc246ed679,1308677173,3976046955048121158
+befb2cad-306a-29ec-a363-254dd0583815,1217131613,4198219944831478343
+3d779bdc-a920-507a-2913-17a17022c229,4280321392,16987340693741991312
+0faef910-ebf8-506a-ab3f-0b95d73c5629,3831344482,8817411591255748872
+08b8fbc6-31af-7cf8-7a5a-c6ab5e90c272,2654556784,14316054255634586987
+8ae8dae1-c88a-0814-1e02-9435bac5d7ca,1800520517,12116555220308865315
+f9a5239d-0849-c959-f231-9adb6de9a2dc,437112038,5747778441102709259
+c601a67d-932b-78bb-db66-b6d4e19955bb,2714206992,2493920728051840189
+6cb3e64e-980f-2402-508f-895d39abe304,1355931646,4709575804744826772
+a7bb1cf2-8a44-adbd-f550-6085126fc8eb,4215152167,4110759557695430111
+cc972360-a901-9f22-94e5-d664f934914f,1107573435,4553653704093743040
+25c556c9-73c5-2a77-0985-f2c2daf0f928,2994132558,10467055003433516027
+24565362-06ad-ee76-fc7e-81e7bf644cc9,3268601899,16254199524345053853
+d3b73710-c0f1-cc69-d84e-c5fcd59a9916,857660702,14168546656605051301
+b5353f2a-7446-c137-0a44-cea5112b7e14,344135242,17347646100295226967
+98a5a9c3-8ea5-4f87-d72d-035b4e9bb472,603593075,13733328999962965961
+6b83b68a-561b-5ad6-035d-c9de2ac73237,2217309324,16852228050960433738
+12c30381-8820-c0ff-00f7-55d8a84e8b19,2256093401,4907480513418408031
+671f9dd9-dfa8-4f0a-42c8-0aa7b4cf56d5,563594350,9631058289532077351
+908f9958-f2d0-d89d-f4b2-f46697674e04,2976758274,5609669663945448601
+0eb125f0-cb75-cab7-2c5c-635f09205303,2575245802,8391211045122723724
+8c9c869d-6a07-96fa-10c2-e8f99b6c73ca,3625985286,4807302565912328551
+efefe7e1-42a1-d8d6-94af-1fbd81dcdbbb,826872300,9438038378137220571
+084aff89-38b2-e1fa-731c-32d4cde816d7,47139130,13838419628331032711
+aa57ff0b-72ee-cab2-f18b-78a7af05e393,2196004664,6833645400007222184
+e6518761-6746-1862-b652-6b9e69d05926,768366364,13384792584323769309
+153ee6dc-4956-3348-c039-61482d85887c,1394239741,8685744950220898909
+76c07bf7-5cb7-f629-f169-0918ee38b187,3028709601,12598847777789248348
+ece50b1b-2c6d-caff-c299-6338a53253c2,2694515610,16439689716812016165
+df09e3e2-6194-9b65-474b-74960439e7fb,571436164,18367280181739403316
+24199f4a-9fb5-0f9d-34de-3839f2aaaf98,1265428928,8089079972129136370
+018050e1-f9f9-4c00-76d7-f9a33930a2d3,3609044118,8460040607729054518
+93c3eabf-23d5-8170-620e-0d76ecc94355,1040998356,3832754652320635133
+bde93c44-9ffe-73fc-47ea-1e46b390abf7,3560428234,4810296292955050038
+6f1a401d-8603-1105-1307-4f353921ce63,2643690281,10141221560826233583
+6238b0bb-472d-553c-833e-2db64d41a51a,737488465,17772028374697889661
+2543960f-0fd1-2f82-d210-4538c2d48c64,1698946840,16329558191186362634
+caddbdf5-c321-fd99-8950-eec04716fed7,2871184710,13515182260648029852
+43873d4a-f6a4-651c-1189-d298ac2da01a,1711329025,3245124362800531639
+bd25b3ae-9ede-1bec-0634-6e89cf836acf,2123549057,6549285163357511103
+62056c30-3124-89d4-0439-8763426db445,495712308,12629661818840508462
+8dd69f1c-b503-862b-79b7-53081eb4e488,2528616012,10315109236490200612
+05a21039-62ef-4541-38e2-8ffd39340dbe,397763260,18167821610053930432
+49d8628b-8a41-2665-dd5e-96af3995ac8b,1872422919,16157512424882245423
+e6351a3a-5133-f96d-61fb-4cb9ef0c4dad,3589018235,17311288710649307792
+45b3f35b-b7c3-d680-859b-30fdcf74e751,3216570433,14143843047904238300
+49e630ee-6c85-cb13-53d2-972126ebb31f,178419151,5185471716539372755
+5b9639cf-7773-23bd-18b4-88478f4087d6,1585646594,1881747703087156295
+2d5500cb-414f-76db-98bf-217f59e709f1,2093463198,1457566987845258845
+4c6de3eb-6341-9d3f-992e-c1305afeb2ac,604903611,15487429058932132001
+42d8bbe6-1d49-b555-37ce-1475b6b2ff4b,161324876,16658154522022563784
+321e9c9e-bf8f-e639-a889-948de7cbccef,1370351228,2272263894635618927
+9bee37ed-944c-73d4-01cf-b210f0b60d3c,2119453926,17538690566812313094
+de754fae-5a74-3b26-cb2d-a940f0afb212,305587209,13238768683537087310
+eca15e2d-d3e9-a0f6-b5b3-6511e6896c83,979739880,16005776231954238763
+c55e6a19-d912-515f-8731-6800a8c80841,2396128552,6833774070985501006
+f814f776-fac5-a4e5-2b6b-1273d2026831,2101817763,14544271902972926324
+a3a806e1-15ed-28c7-ac93-c6e61e3ca754,3842495565,6600934743018156608
+cbf0f616-a6b3-5eeb-141d-5907754a82e9,978486937,2487348850641265823
+34a942dd-6791-43fe-4a9c-8e597793d995,3187637867,10362564156438357515
+b0308bab-4b68-b692-6072-83581fb11b67,3746412190,10415387214709392051
+45a17e3b-aab3-0d60-c27e-1f4081d2bbcd,2043915259,17844458923860254307
+9adae5dd-9d46-f665-2f0f-78bd1bddfacc,3878034551,6316946918684608990
+1ec3a2f8-0ce0-6652-e22b-0fbdde46004e,2621960051,3125764790638182224
+bd41ed7b-d81c-d741-95fb-3d20c6ee91e6,1635654171,11716052287595369426
+87f5758f-f22e-2421-80e7-abb472a303d8,384076513,5883238623852009092
+94276b72-5419-7312-b8aa-8ce5b4d66f98,157239290,1476534641975715694
+0e62a7be-7281-6496-6032-f65dd1921cba,2100667292,17288871498811468449
+aaa4e02b-2c26-a737-c5c1-3e41f2677ab9,1455761542,4780992250125231353
+40a431a0-0f56-7af8-ce85-4a26e60ed7fb,1999436204,7063967660832354579
+e90b1384-70ee-6e6d-426f-73fd4eeda8b3,4255966695,15722725997282688836
+64841a2f-581e-4949-34a9-e37e91db9a27,173326118,11334084584849102327
+69c4eab8-8726-1745-0915-e8f37c45bb0e,3594115009,12517002115622101300
+2600634e-dec5-ff8c-44b9-3efc2793dc4e,2428073658,5741037635855816689
+39b1971e-3b16-12ed-cbca-52d419f0537a,3904937418,4536353810048557819
+2b8081bc-12a6-4577-98f7-03c87793644b,2715437236,6261335194739038081
+9c801cad-3df4-ca06-07bd-1f06ce66ae16,3003899181,11277781169101778225
+94829deb-b23d-e040-5b19-f2c8e0319ac0,986424024,11225294908363269425
+ee2454e5-2903-a99a-3089-ebfd6045a2ad,3607557354,11341689449986747272
+1798acea-fc33-2af9-7844-ff6f4f112dee,1656759146,9568045568054902303
+fa911723-7772-3049-bbbf-21307f4698a1,2010388074,12838584579140616547
+835c557b-7b23-3cb2-fa0a-5a08093220a9,767549249,11723945769390308705
+4555a984-9c82-711f-6fff-34e312473b83,1293032556,1313704083638719945
+1e532eeb-2940-0c0f-95e6-40c0f245cc27,1805289209,11182789895391561033
+0288993c-5eca-acae-0069-39bc291c17a7,1978528676,11055969293244543087
+5f2f162d-a1fa-5d00-27a2-2cbef3f05346,2076584613,159147215912321381
+84b2b2a5-e917-b740-f4fd-a2d71fe69a14,2235369865,11405102346848625883
+b27c4073-e9da-1ae2-6ad9-dbc8798406b2,486369731,13982302528795282810
+c8f25a31-64c1-775e-da3d-7b2e6e6915e4,3209703711,11278564904695715958
+f4d9201b-a1e8-39fe-8d16-d38de01addca,3636243520,4373404425229595893
+79619ed8-bc70-a00c-1dba-288ef7c7bc60,609573563,14910965721374291365
+ec3d52de-ef8d-4d45-2c5b-2108d6d725bc,2813308846,9987082975273047455
+cdbfa7e8-af76-39fb-4854-986a613ed109,1369410869,4075473338159218480
+19a68e3b-43b1-7282-e448-2c43ad359c1c,3288047791,11397901920741228845
+71ab1932-d02d-6c94-113e-439ff9a0175c,3846641704,2585089532623914415
+5b605187-0744-6f7c-3448-bbd0c44cdb23,987107334,3236845611803845589
+1d8199c0-88ff-0832-b399-50c4960a6697,1970536237,7257932631929144405
+ede48c56-dbdf-cf58-d220-1952d4218abe,4021820325,1165544871450947234
+db478529-5e11-02e5-9eac-b465d42688a9,4023252571,341750136211522358
+ed6edfc6-627f-b737-c13b-8dfec196b0bb,4005531625,14147133243152174797
+7dc1e7f6-77d3-6737-cba5-4d9c68473139,1312651579,13737069179098364773
+b96263df-77f2-8b28-67ff-c38b7ecd2642,2823091278,6876226861137642339
+150be203-8a9a-226d-8bc3-9873b30155de,3526091389,8991260870955725659
+27d62076-f600-8aee-fb4d-5a270d0b85a1,3725039489,3696089309259770450
+2a7ea952-0212-da76-e26d-1aa735a3a311,2013125731,10253670541137444205
+dc25910b-c1c3-6d4d-c629-d396999c1b9c,1062741056,11281942050203668707
+6000ca75-0315-871d-6fe2-c83e9f45dd42,2011037773,4929788935997174944
+de020fe3-1a9c-5f42-3fbf-6d7f6b71e6f0,2047243707,5407569367733582418
+7a169927-4c47-ba18-e427-accd695a2945,2127410321,3353871098868141509
+1080f007-2c97-ffe9-2cc7-57180104ab4e,2824811574,14926714629861782790
+5e0e1f4f-2f1d-610b-dba2-02f9a48c615d,3176504634,1309732272944710748
+d6b35e75-e790-0ac9-13e6-3a867acfe86e,2802342117,16329925820038018723
+5117498e-8951-3667-b491-d83c6e7fafc0,736683455,3832915145864296989
+908d2243-2840-218f-b2e2-c15708f9e5ac,2397804527,13638117111290902837
+ba5e827d-706f-0f1e-55a4-e56854b3359b,3313318956,5944709844809163930
+8a54689d-ae11-3ee6-9038-6772ce8dea12,2003927007,10393899997202287682
+e7736823-f86d-2971-b444-d1e039ede0bc,3621067261,13074366024792908979
+32d2d84c-fb59-4e32-28ea-46bb63d29407,1687262466,1889898302119934649
+bd9df6aa-c5dc-323e-fae4-85d6aad9bff9,120472798,15543791027745790178
+0a3dc839-ff36-f07d-45ea-fff992fcb25f,3179270764,9507632639339334245
+56cdc365-e838-983b-aa58-52a1d7afd693,1068657011,14620011554800571102
+149c08d1-6aa3-1cee-5f01-1af5aaae57c0,1547916136,17458472003971595430
+11a88866-05c3-889d-4b97-f048518b54e7,4189225740,8195866948152907863
+8f7a279e-bd34-ecb0-822d-8af4f582fbb7,3176360197,14906670446687947167
+6fff52ca-1b5f-da14-8501-70579e273130,3655168407,8802096755561003559
+1f53138f-57f6-6b0f-d66d-bc47ac97be92,3247461294,12462818507256483132
+6d8b4d7c-f02f-bd0d-c420-0144f25facb5,3482798031,5076217708134254161
+a81687ab-1928-ec32-80fe-99c1cffc1811,3736964629,14180427267053585283
+e947f0d8-ad01-9daa-e21c-fb62636abf49,2391164074,15437521509813928338
+e3818b55-5ad3-11f1-9702-ce6526c3d83f,614424713,5589856218517612648
+0319acec-ddc9-3989-804c-01833c16bda8,1979429086,1120633220894444404
+3a6170ce-1266-6188-17e6-d7b63aaac579,339986853,7905955988497727509
+b07f149e-0127-27e8-0dbf-f0946d6b6f75,2617138473,3113395739051491962
+81ba89b8-69b4-54d8-d7c2-7435b0d4226d,1765177481,596340254888711921
+4d7529d2-a1e7-0af1-2384-40c8f2adadee,3237743037,16293793772630355288
+cf5f70e5-3926-6105-dcf0-2db8207d4431,197957747,13567286643393061120
+d134b035-809a-1075-f036-eeb9246bc119,4104479340,13713899528519436770
+9d84c72b-3121-ecd4-11cb-3f2ea36ccddc,2978288906,8900937629482863693
+a0dfb675-1a55-c522-1c4f-a49f8b924aa5,2350630230,16494965649778897152
+ba11d5ff-0331-d40f-bb71-b468fc8afb88,1561691865,11081437084447319025
+882951c1-a25e-a407-0400-1a7e0245610d,1378196763,13917744432432250790
+b0f2dea5-bbea-bdfb-8b03-c1a2c328d0e0,1939215697,7836263191199153066
+289c42e8-cdfa-eecf-de90-caad503003c0,1180479422,8220885037817627918
+b2e73488-458b-b4d4-d4d4-1f1e7e15fbd5,1744354768,13192036615470908531
+69ecc2dd-373f-77f1-bd15-251bdbbfbd73,2489458800,13696741653918717422
+6ca68142-50c0-9d34-5c7a-a9c5f01053cd,1951443175,7659325789727285854
+b3ea466a-d750-614f-67e9-93d7f4b46f3e,3415152114,5813899247796385345
+357842d7-d5fd-3a8c-c35b-a80cf66a0286,3276586395,8928605691768065918
+1fd02628-9c82-7a29-a13c-61d6464ff087,96963934,6824748295733646618
+3a9a3128-3760-dbe3-177e-d5a51252b16d,1732407217,7265802571713285746
+3433fe3a-8a0c-eca5-8cda-78a6bda35d3d,3057920587,8360765275308451206
+4d1ba675-0f64-a373-be75-234c8d1e1668,113237609,7207538512402967998
+72511f6c-3d4b-00ff-b411-75e33fd35133,1396157480,12043241350313142538
+8a9f7b49-ccaa-e3ad-7e93-6a05ab93ceb3,3892434770,3975419220776239575
+24b16e70-c840-bd14-924a-0c082f79aeff,3934060372,3370394788225535804
+d61627a9-5416-1368-878f-39d36e75a0b3,2569546118,13269125414435886149
+054f76eb-b99e-8bae-943b-ed9ad5742898,1551324556,10750411013175331222
+06fcd1b5-6da7-677a-b971-5e19bd11d368,164044816,14099512047778380545
+4e7554d5-3367-0d5b-126b-07fe9259e2de,2602801021,8632208980330365165
+766a4a88-01ac-9fcc-e2ab-4336bce223b8,739779330,18164229443228702750
+f6c11d53-8c5f-3f0e-7291-7b6a9ab45d4d,1310297906,3932192393663547748
+89735d50-721e-9711-2ed2-e0790980bdde,722136612,4089187475561105545
+f1733e3c-6a9f-d38c-b6ee-79912296a761,4038176260,14362301358377395683
+386d0a2b-ba75-2ef8-ca81-1da9bd0e8476,1806053293,18062693158763818702
+ffc8d992-a3d8-3e1d-4bc8-f125333ec676,2320123235,9299290926760473798
+bdc5c215-0324-965f-e987-702f509aff92,1817510078,9434552763945883420
+6e7c0143-ba31-486b-2ea2-273b5da0701e,3913262227,1643415749191737181
+cfd03f88-bd21-4c2b-5bb1-61146f4dfacf,2840661105,8714062509263249546
+eabf3e59-5e89-14a1-dd86-ca09ba82c7a4,2600008334,6223044353923516646
+f9713ebf-46c7-e837-6e86-43bbd3b5cfcd,332419963,8650197846937523965
+ea46540a-8b0e-2270-3ef6-6db7a83eb7c3,2112477729,5456677378054838422
+55440ac0-5afe-e6a0-2ff9-ca225e339c98,1388443185,2476773099227254986
+79edf019-63f5-4860-cd4e-fa40e6b34b48,573347593,8167970887951906992
+b6eba75d-5559-e25a-1251-3be4a3d3347e,3578989998,16330242903350070007
+860c6677-3bc1-56db-f47a-65a16ae2c939,12661801,3389110567024975873
+4b752405-3c7a-5225-1315-f49281e9b02d,2915272014,11431508220599112354
+0277d815-f3a6-b39d-7f04-2e16900d5a2d,299214086,7403809800276009639
+e1e570bb-1522-0312-d625-89aae2e4c1ef,1746267799,5967450203480217861
+72766f62-66d3-519c-1c4e-e5702990e872,2295260353,2674972045693399942
+f696a725-49cb-0e75-2819-26768f6c5598,2932968799,1939528803183741771
+82c38f3a-0962-6afc-8942-9203f8bd04f2,536544272,13935895171289541989
+d0f3bda8-3638-bcef-d647-6b79a09116a0,1178147539,6331887093998579178
+f5f58ac3-ebfd-daf2-04d0-002494aaa789,3420895057,5329309337559579800
+1432601a-ce7e-f2c1-f38d-5681c72d48e5,2060086944,18373161297465200980
+2d348134-dd3d-a6de-f2ac-2dd2cb140fc6,1060354374,13599759663272448961
+f15b127e-3e50-abae-395c-a8d0165bfcd2,3875692880,16151733699964479933
+6c017624-937b-2c31-281a-4aec800134b5,3286049199,17436891453994936874
+7c5a0dbe-4707-ec56-e855-a7e93890ac5b,3881890280,754263211671395747
+609d98d9-91c0-99b7-1605-e37b7424e5a3,2185495648,17729784446292763973
+710a6153-ba54-2e2f-4fd8-29f714708c6a,489426281,9718912984909150174
+a9ad0332-bc69-847c-0fcf-d79323692f8b,1994300633,3563747922152978449
+7b42c519-0515-6544-4a29-a35b29aa4eaa,3874062356,6613357496324508580
+22593bf7-67ac-4217-5588-c13592b04f8b,1931137247,9704215173259505581
+970f9ff6-c8fe-40a4-22ad-99a6dc96cec1,2106142165,10458126874240701880
+65b22e33-651f-16fd-0cde-a4e3cf22618b,3554123883,18006096516128258650
+4e27f138-b18d-3661-c75a-22a6d229c327,1195923349,15296091976118158375
+8d6b4f65-e8e7-076d-5634-20536802ddae,3798651910,5103932564644266919
+6cd9ccd0-ccaf-6dbc-1f5c-62383e398ad0,3786203219,8022733971774098358
+df23adfe-40c9-fd56-b4e5-a4b859aa73a9,3685266999,7587033695089170145
+74da1ca3-cc52-a44c-df03-f7ddca6394d4,398459810,8933120347366998693
+75be6088-ba9d-69e6-e91f-c15ca77d996a,3701594526,14094179267269850349
+baeac9d4-873e-e1b7-22b0-4de868185819,2002553840,10144795857515976201
+8ad9001f-a4d5-d1f2-b636-06614a16ec35,3449544007,17662121470842801592
+9a3759ba-ba02-2e7d-c8f9-b1f31be4f4d4,3684285430,16892751125147781256
+e2948d49-8d74-4669-534a-82ece4b8221b,3754364302,3101541542179606634
+4d819ebc-16c5-efd2-b15a-90eed135d69d,746729578,10955662942263524487
+1849b124-4cce-19f5-ffe7-70c9163f95f8,2560111057,16008827051564548859
+66c5cd95-1463-e50b-b8bb-11d57f22bdfb,2850669661,222036887985887984
+c0031e8a-b733-c7c7-b698-a013f98d8a4d,678616457,2732969178384423047
+026ab6b9-16d5-184c-6cac-548e876cf494,662417831,4224464053758950667
+a59815f8-f673-9d65-426e-2c4871d2496c,1200807136,3391155629326005764
+e7fc70ff-7fe9-545d-3502-4003850e85c8,3438837843,8852863328142667441
+d0f485ca-7a74-b26a-bb05-220167b5b811,1800642503,1513546883739477739
+fcf5fbd6-1a3a-af2f-6f64-93336a2935fd,3140780742,2280329387583124000
+c4cc7075-8124-6204-3c50-1512dce97cad,2629460612,4058884468074262166
+cde5193e-2218-8e62-16f1-6746a2f57603,3868635008,6417879088838363223
+1b4d7cc8-a1fa-d52d-23e1-a3e0c3f3dabb,2325228430,3867820144408577546
+685b59a4-b8af-d98c-93ee-9d400328a5d5,4293715359,5351358832285952227
+0f34c73f-7f1b-fb47-d759-622ecbb9f8f5,1677954429,6208533751228997592
+f5ed171b-22d0-0199-7f29-a984279e9044,3185864168,647443254038492324
+21eed7cc-480e-a0cb-d15b-17a07adf2deb,4205060902,5998735170914862352
+85f8347d-79c2-19a9-6fe7-39ea86a5f4e1,1362922711,8432777874425678608
+c9b3f2bf-b0a0-e8cb-1f82-4bed71ace5e2,36592458,5217961897786291783
+11bff9e7-0fbe-162e-7044-01979fab276d,3694007356,2211550745202344695
+db34b2f5-28a2-2c5e-1a10-a1a071aa63a6,719428608,12174353749346650838
+f5a8e58f-4f1f-fc96-b811-b4315452cfcb,731587763,9830025430244891901
+9f677fa7-dcc8-b192-e4ef-47816d560e79,958472941,15279553709453852293
+c0cd1ece-dacf-b2f9-8e5a-8826d1dc97af,865404639,13360769535224960513
+0a3df747-817f-c0bd-9684-a1fb93825415,2702083551,10111634616177177736
+7a45407f-d93c-008f-6047-b435cec7893a,3414522425,12613865686338757553
+da4e220d-9a10-56e2-3b94-f15cbd4a973b,4069555097,17215550303745432480
+c4115332-b96a-802c-f1c2-5d02643ec06b,1928405269,5876905820935065479
+4b114ced-a611-3a32-a997-b3696e8be337,1493951282,2341372208573068324
+ae070cca-9e6a-e3c2-6211-cbaf3433b38b,1048313658,10717527046752646268
+53d61f43-fc01-2e2e-49e8-03fc1a3bd36c,3653091315,101829035259863628
+932af597-2f60-2cf9-0147-2bf4d0294324,2359767047,12109398773102497609
+be0ddbb9-ec81-2740-31e4-422af824804b,2632428762,4633803952582730946
+96253006-5f2a-de37-c37e-77316b4f4c97,3369272233,4013836989298438430
+acaae38b-336f-7c46-7745-42fc6d8326ee,2462521100,391709609380804934
+9c81f2ac-a8be-e328-da22-a65707677a16,1352702022,3213463481240627110
+b9cdbd60-c2ca-b888-f3e9-b5b27acc4fbb,897501690,12272327210083500971
+62acebf2-d92a-a935-7ea1-9aa800a3445e,677308252,16263506302739370840
+39f96923-da11-3d5c-3c6f-45ff6c632a56,2102076218,10127847975789633609
+9dd0b95c-84a6-fee9-3cf7-75d39766ff50,3022313806,13057112023237031140
+5a85c7f9-cfca-6644-e2bb-0e38e4635afe,3651538658,5061309278485710430
+2fd8de65-c20c-e9b6-3a3a-fbbd60bbe99b,1897807723,8132108660902411203
+6e67a418-4e85-3c04-0c12-c74bd4c4610b,2906964023,11274902564919946010
+355ff86e-b449-ab0f-3e41-4526a46a00fc,2008781004,15245019101697658896
+b177bd60-a9c4-fcea-01e6-c29601069669,2122913843,10261697337446540637
+15f1bac5-6f8a-3f95-d60d-7d57add6b8b5,4082370303,8660308601443910065
+98a5c8d2-8c5c-f38b-d3b0-640ea312ef58,3595853440,7685381122544104599
+00ba8bb4-432c-a2f3-35d0-ce58512a4b80,438268796,10089163441939047985
+f77e471b-7e5e-0272-da05-bc71011d6252,2690300072,11757662691667243297
+33387cdd-161d-9c5b-78d0-d6bc853e9362,1482230851,12321504114972946387
+34d3ab5d-9ad8-35f9-a4a1-7a61c979fa11,2976922204,11581761612726002169
+a341b829-b733-6b59-f113-e5297e01eae5,835074063,4816216297392673225
+29edce2b-23d5-030f-e279-7edfd8eac4af,795706608,9103439911356175227
+7fbed6e8-3272-79bf-5968-411ef2a136f6,2623932363,7670531683247634606
+7c7eeed7-d37e-7ba9-6876-ea466e1d9c00,3239056457,8816825993291819586
+0276f053-59dd-2c38-e434-1eb345daf2e9,207438880,1760171275477727693
+2027f968-288a-74d5-7603-bdeb81b298d4,3454602789,18188419907682165421
+37861b9d-b3fa-c12f-823e-bda173c931d2,4157699759,7295383294894934545
+9824a2e2-9ae5-7536-de46-b8922fa3cd38,2069907701,2773863430047702356
+442ca1bc-8972-c7af-40f7-4fe073ca7694,1318948997,11021628823204067305
+df88cdbb-1f0c-3fe5-11d7-4630a98ee427,4259444624,1770936217649055849
+1d34f463-239d-f6c5-88ad-9675fdade17b,1824926854,14696835037908054532
+1b0f09b7-480b-3677-1474-6dd4f62604f2,3214581415,17088896789610642749
+59606fa3-1314-1f94-bc10-9090fd955003,3330980660,1933616477240075243
+24a15d65-da70-a4df-c4e8-14fcf37a2b03,2514695766,12283575710147312814
+7c6bef55-fc30-fe7b-99f0-3a3fc6ee8787,2462607239,15119545171559880133
+113447dc-c0db-b400-2f33-c7b228f144a4,840564363,801491563856883547
+627e1f12-b272-5af6-0e20-7f22a7f815a7,421389294,13621776139069590159
+706def00-98b9-e489-4aa2-562406dee028,2591273997,16345689574935257418
+cffd504c-58e2-33ca-1017-92dde049757a,3189035020,6146896769498711124
+3b1e927c-dd93-eb11-7c73-f6256974e5b3,4283135153,11520614821136973737
+c32b9306-fa23-d4b4-bf63-6379ecf7e5ce,3524551797,9766895137091037763
+474096f2-287f-0d0c-3236-d876309bf9b1,2230479872,15878769999653574779
+e46f2524-1d93-c56f-111c-1b30ad6e7ded,1908601127,12822888380940445105
+137a9326-c9ac-868d-2826-ad6c6ed9fffd,989998353,11173947002258284271
+0b5a00c1-2596-295c-245b-7b9db6576efb,3616533285,6307019841833040237
+a602e048-40ca-e9aa-a0a4-fa25174a68b6,3601049847,11332561840797296321
+21f754e0-3fd9-ef02-8335-082d5d55b802,3394808812,6271660854800649375
+26cd2f4a-c4c2-6e84-a83c-ed4458a1ff10,1475809074,6807958444681546280
+2a2db123-7d9d-8c8f-83b8-77b34d576314,3509112595,12236944427838427046
+fe7ea713-82ab-23a7-f137-c32617ed3c51,3689644951,10283811409268355085
+3e09cece-9106-241c-0c9d-6026ff052735,2749850438,6865219030023394057
+dd68f525-1e97-b61c-b225-8912717c8a5d,3562078334,10858360917174080873
+3848eaec-bf07-0671-7f51-432bd5e22bbb,1262766405,7366842826726977876
+a1371280-18c5-2d5f-0466-447f763fc491,2730130431,3844498851758859103
+88b6303e-b690-e156-e95d-1fa2ee3d1330,199691151,11644967198968527307
+f8075459-811e-5f0c-ad31-ad09332d0a23,3167139245,11250570724485628327
+e2f8ff21-56be-776a-a17e-90f31a7feee3,2401847465,13932205553832263044
+575eb407-d8c4-b871-f4a1-3464bc2fa846,877315686,11641774518588366738
+e299811b-0ed2-17d5-b003-a99179858282,1433008178,4046842144559531403
+ae80cbd8-9961-c063-4a4b-3d224c858982,354957605,15737808041088243981
+19609450-1772-dd2b-4c0f-88cb462aacc5,4010864291,10840507658223137330
+11914f43-8538-137c-54c8-a91f209c97a0,3718455084,1631371160857615145
+437fa5ca-5c65-8f37-6d27-eb8b631acdcd,602733505,3698905251646661951
+5600f62d-af8b-d7ab-4a13-e3eee4899740,487006028,13332489390174362933
+b11ba557-6ea0-3241-218c-0d5c3c260e26,956415728,1950998167930352346
+f09b63c6-e2fd-15f8-dfee-9cd70f3fd864,2672679222,14676186433069863848
+aace7b48-9901-fe43-1ac1-60aa593143a8,2878103099,8204869405623267220
+a54d6019-f847-047c-a126-5da47a1613b9,3767108397,9750078097537092528
+ad0641b4-0163-d3b5-1bae-5684c8bdba89,1965870574,12033638534904071839
+b4fd9184-b730-7a74-5ee6-fdea24f3d6ef,1123206928,17034111176293636468
+b712a284-bf8f-ee5a-9b09-0db81c7dd38e,349121930,8482574995039273518
+5af04b84-3579-994a-9681-53c7d84d5553,2217920526,1044943398665776693
+c51878a6-5f53-b5b9-891f-fed857474356,4106255372,11068356148337842900
+78fc661a-078e-635d-f452-246e2b67f2fd,675272318,11381185905005704220
+bee280cf-6803-aba6-2fd6-9817d495253e,1821782347,5385759891310543647
+dd5e7493-e699-700d-1138-09ccc85ea869,2178284529,6896540848080886983
+5d6bedf8-b98c-8eac-d8cd-435ed649e8df,2091665476,11924700154977972348
+797bf383-4791-822e-21c6-9072e320fe87,3537898320,17572605477936809421
+9dd40701-3593-ba0c-5277-cdc19d0aa1ef,347748712,17539182385420930959
+ca4f49fa-9b52-cb2c-116f-35e81919b2b3,1364362,13067538383761491956
+35740cb1-13f2-a375-9cb0-dda349116d02,209702092,16284036585261394653
+8e6d145f-2d12-5d1e-d90b-9f8f9fa78799,2655734739,9957090045816787016
+8697808f-6fd0-8ebe-4b09-c9994cf03316,827098283,4665676288108945747
+00d22bb0-ee50-e272-3166-e337d7567d09,1140499954,7132014575234829979
+7b4e2e60-64c3-8e44-e539-86b18cc1f29b,367649882,10246627483822936309
+613af354-5002-a485-491b-edc420620014,315671627,5274443608461851740
+079a79c9-0520-9344-e452-a5b335760097,4166315758,5851487461422875319
+fd9cc3ae-4de0-5afc-fcdb-571ea34ed703,943735024,11790383343007412550
+d93486ea-7532-e6f7-b652-e0bfe3a29664,493078127,16618799335149466250
+e35d07ee-3f98-ca3b-90cb-ca74cb807706,71800911,14039998393491858809
+098bc0dd-54b0-8714-4c72-c7ebaae05f3f,1756862350,5536551337522442011
+80bd3f1a-7422-7502-6351-e96fb8e27d1f,1562345665,14646068631680755526
+91afa2ec-e6d5-6b47-15ed-b4b69a18f6ee,3035040586,14091883259184754137
+a3ef9387-5194-6a20-2952-d4c65ab4583e,3494864518,5978822686871917409
+1eef0727-b66d-eabe-450b-e623b56a45dd,4112078142,8321684803242704140
+526ceeff-ed90-6e92-feca-7740177e38aa,1966029472,2952810307042775537
+fff24f98-55f9-5466-504a-e8df6e0c5b5c,1608723304,15538080971235983047
+edc94ee6-650b-1953-7e9f-2261725867a5,2171774652,1051159789174655941
+f2f99d0d-fd13-13fa-1275-d58e890e2992,2663274963,14076075760592865119
+3f60714b-2815-790f-949f-b1cb5fc1b991,223242099,193777632596302249
+d5c1941d-7517-e01f-ec7f-0b28a51e18a2,646664606,4354039140626721812
+35d6d66f-2b05-e1c5-5373-80aa52e32dc4,2486105483,9103123059322611904
+7b693e53-68d3-dede-a3e6-cc3edfebfe7b,3687911280,7468558470691564998
+e5c30eb5-2063-23c3-b303-049af7a8750f,2633977725,12527705236483861011
+35407292-11e3-5416-f84e-182b684d0faa,2943865862,6732223140108075745
+d15eab74-8361-fd78-4e63-5bbf831dfd40,2695864448,14628776573585868464
+80ccbbf6-9a8f-2d83-5587-82ac7c3add81,1627979715,4561255419981199300
+baaed3c0-6536-cf24-8d0b-9ad0ea7c2392,264401797,16522905538255927355
+86eb32ff-5d63-66a5-3ec1-273f154b5362,3367209773,2014642509266261776
+08234e35-1c3f-e995-1538-2c689a4a96fa,3109385346,14166164714379735916
+10fe1749-0f25-e7d0-373f-3bbafd705d7c,1308074352,290498481978378764
+92ef27b1-98c2-58a1-ceea-b01f994d6138,2431592948,12801828136540814027
+b63de8b2-bcb2-6fa6-8b28-0f45f2d52ef5,170830355,8937419903029421110
+0db5b34a-79aa-5779-a83b-255c76a97c53,2916219282,6203060665105865142
+53066e6d-4ad3-a0a1-0eb5-be7eb06ad1a5,1538081187,4739004649694785807
+288c185c-ffc8-d8fd-0b18-ef6e1e868a20,4288780567,8703607712842752705
+d5238ade-e9a8-aac9-e636-3e566263827c,3872085877,15218571983099843990
+cebede57-0ffd-3a53-f19a-8c82cb42229f,1234847676,5864857233744563547
+3acb2f2e-1a3a-80ed-d450-b90007d97236,78164368,14578362521849416018
+68b9a32d-77a6-2e3a-0660-db84f95f55be,928601040,9482297083778325059
+17be3601-d5cb-87d1-224d-14b808afbb63,3630798339,5360310585996932740
+6527670b-0406-f927-8c1c-e194e21abab9,4012920949,1070169866204137988
+8c6d944e-befc-13a5-3332-c1f07ee9fc8a,116361489,553677548525788320
+e7dd2530-8104-27db-00ee-ea4497df17ba,1184110804,16394189681310746111
+cd1c01c4-7c0e-7ec7-bdbf-c111350d2531,2437054541,5894264728771846376
+5a39005b-f2ec-5f30-f2b2-088c2e935589,1749004039,7038838808141593855
+fd1b8fc7-475a-6028-f386-19976e4d30bd,683085591,9612474359363686891
+f0f93bb3-3892-c56b-5ddc-7a70d557980c,828008448,15503505870351478810
+1f258a82-d90f-6dbd-70fb-4abe6ff796ac,3193651393,15455630179212562320
+012718f0-c634-d1b9-6112-16b0fce85b26,3249416287,17671265825306934362
+fb206de0-0c8c-3abc-6621-24a70b6a698f,841936925,332732125767364386
+3907a2af-74bb-4425-a4a3-aa0ad80f3eaf,3818341532,15843757632876825220
+633ecc3b-a45f-819c-3b36-5499917dec30,1908525431,1812509421680465115
+91398f67-e04b-9634-767d-f6d7178b2671,2629099416,1848123992003976119
+76e6154a-acdc-58b9-6c7b-62875bb78317,3223569366,1338005637474735126
+ec361e69-5d81-56b3-8280-6837324a70c1,484213333,14737112304492040204
+2f4d7d1d-20da-2da9-1dc2-1aa2b8686a91,2356228537,17051382882942422306
+50cd60d1-f53d-4f3d-c690-218d44dacbed,3051988249,15471884388718924496
+ad24f52c-0e6c-286a-2341-f324d6bc0d3c,43407844,14074832542508442599
+d181cd84-8e51-c6aa-77eb-0834d1b39a22,1906039065,8028756157512280411
+b9222f29-0380-33d7-1cf5-13b33ac53a8c,1161949894,5093376588804904522
+eb8d818c-9cec-7d29-d3f3-6ee3695a4ca4,148296627,10705706946416144004
+a2a3726b-4a0d-dc4b-5b24-31f19ec18157,2159944463,6976826649214008302
+21ed7d8a-e349-a810-ea45-7222f7c50530,2378952704,11123237932759291349
+86575aac-570b-e0ad-16ed-8416dd962359,19608633,6193165595367933536
+d93540e2-0289-f79a-7833-b71d0183cbd7,4114127068,9159376767826645878
+c90517e4-83f7-a207-1b54-4916051e243d,1843410352,14407600162548955321
+0fb338d2-f563-87ef-28e9-8eb96e2994f9,2098854326,3914925957232019680
+10c3b78d-3a9c-0bd7-b873-2d0204ea35e3,1667370890,12981881183962678806
+fab41810-b817-541a-8e24-0b2b0165080f,845517174,3247948732299077120
+6ef10b0d-9938-d09a-3e6c-8284a002f20d,545702089,6026827521530329364
+2508b4c7-b79c-be70-c199-d02e2e968d1a,502681208,7974398818057796478
+ddbf8f33-ba31-32d3-e4ac-5f42004694ba,1083501163,16802377127502256986
+3d4de80d-a402-5bc5-e0bc-babee148694e,2063118875,9671299981953814323
+1c552e8c-3980-e617-8795-f9247db0a09a,106791792,1046207403095156102
+668d73f4-dcdb-2ebc-1c81-a40b353f0aa7,93417517,12643697297083953124
+1449148f-b057-2a61-eb8f-bd38e90b8009,771407315,2194150560365205038
+783bbcd8-3d1c-0253-da06-b996cdb49cc3,334102842,14364440759089824181
+d187f620-44ce-4510-9a40-05b4040a1c0b,647927004,16627851011461279385
+94e884c9-7fe3-7cd0-817d-48b9c8afbe27,1636739208,6477884495405528940
+d395e871-e1f7-0587-a5fc-be9465040055,663438341,5195626851347893980
+570316bd-23fc-4c48-38a8-7a687bd277d3,3346621259,15500525518413783450
+7dd0c3d2-6085-ee5c-5625-b28fae44c4fd,276597525,6538474449004216780
+b5fca313-cf1f-aa17-6f35-90a87d9645c5,3622747412,18105210459369263540
+abf8a63c-1853-4d93-0581-c172e12ad68b,2816925940,5499573944519015715
+9d682be4-af54-4cdf-dfac-046c761d6718,2432591869,10082906577149370471
+67acdb9b-9a00-2c53-6c88-3388a828cdf1,3796968641,8958608869223344743
+ea0ec81c-9296-8707-5ae3-78be05caf209,1648873559,9056154109263967791
+210c33a8-9516-6858-e607-c82112e22c70,317854272,7614870143856023251
+0c458e21-e64b-f4ff-5785-153df9ee32df,1256527232,6603082263384019000
+5c8d81c7-3622-39a3-8cbf-1ae7dc3265cf,3175790916,8052443242432362746
+d9dce328-2749-e48b-e382-5a537e92184c,2798356918,8487288220587874835
+60ea995e-1880-f45e-50c7-add61c060ce0,3877224907,8403711783402841937
+7c7a31e2-6035-8226-8acd-1d0a53cc55a0,1477945198,2434565108663111540
+c29e32b3-024e-61f7-d484-c23c575dd508,1964852400,8132190201631970255
+ed3db183-0997-1809-26e6-e271b6ee7827,558280811,8494212357862374840
+987a2a32-87bb-ef50-979b-cb41b45a3957,933612300,8746249834939305055
+2684f101-34bf-2ff1-60f2-4b0612fc74d7,2233073105,12965672966051509988
+4d82baad-a58b-1c23-5c87-a8a90e6a2e63,1652533035,13906185643120429003
+825adf5c-ed77-45ba-7362-0e0ecd82b31b,3319467545,13622117648776685157
+dbf900e9-0264-5b62-6a62-c8097a9c8e22,2694613891,17496135847326905507
+162563fc-3c8f-93da-c389-90adaa040c56,657942173,5899676162093837579
+89d98234-07b9-2eaa-e860-6e62a44a1e77,2169394711,13353805366462327822
+b6cc6b8e-93e6-5400-58bc-404b9c24246c,2827660811,9954648664946340966
+cfa205e5-7d7b-a53c-c6c2-9a3537f159b4,4221520192,10917757786632418829
+4a27bc61-b45d-949d-7e97-8233bd152ef4,4195571345,11246936728672436236
+ed6937e3-9d75-8466-6285-c80aeb13c46a,1297748160,5496450404047974216
+1717dfb2-a120-55ef-b163-17325084ebc3,2035964069,16478392185885558520
+9f4deae9-2c28-b916-4c7f-c49c4beda4c4,2101243994,11573840009695791274
+9645fefd-fcac-70c6-2355-a196c4ba0d9e,3486169353,7808048005513722937
+3b154603-56d3-f84d-6b96-037b812664df,3413811971,8885075433181278542
+3931af88-a7ac-9b0a-450b-d1230c79de00,1154526522,15254122863864754553
+be1358bd-233c-5598-3b49-43e28aeb48fd,631056116,773240103642232839
+5d61feed-1a23-b6f2-0571-a57fe711b1d0,4070978556,4108336109815744644
+b7860ce8-0516-8099-3e2f-83d9d2869435,154268951,2757603347560135304
+8a4752b2-6811-cc66-6b4c-0536c3a0a719,3206545812,11387907678768981719
+e64afea2-8817-2eb5-2511-540859bb8fb1,1515916781,4403977007919732428
+49edc651-9036-2942-4729-e5e5caa9f379,1247373560,13106093899497043510
+a687e68f-a884-b840-1c12-a8147e21c6bc,2497495317,17613910512015039938
+d2ef2ced-d7d2-0418-7218-c3472853dc34,1270959874,10870324092044925368
+54c7dbb2-e9d4-3d2d-bd4e-cf4bea3cb66e,498490394,4482959828459717221
+ff89e982-632b-cadc-0233-ed1b9b846168,2723784954,4562924113917926041
+4c83d817-6e78-189b-c03b-16d0f9b735fe,3258540138,3597423172539622127
+febec883-5268-ee1a-761c-408b536a33a4,1492157489,16764256884168323489
+fd4d1b32-7c9e-14c6-e62e-4eac7ad33161,3153379133,9152337829567943451
+fdef71ce-f46e-1028-2205-dd8cc809a696,2356181432,10247896699906559535
+ad7be55a-457a-2d1e-1dc6-f9d8dc20343c,3042913168,7277783933774179077
+ce08b559-34e2-101c-476a-28cd2eaa61f7,650113018,8947844220482789069
+e17dbc1a-6e70-88f6-f5d6-afe941b2de0c,3092209968,7459066400337672490
+35959176-b739-57f5-1dbb-eb01cd0741fe,3333495054,1181308951018862467
+943902e1-21a0-275f-d2cb-8ddcbdd96f5c,2716350777,1509535581854601429
+93839c40-3a12-9214-1643-5adf33452f4b,1932723755,1199593055894684771
+a7a517c2-e762-13f7-1ec9-e560d1c73ad7,1571265642,15959665297674285025
+a6380330-8694-39a5-a30d-163d7b93c031,3693323910,7115385299244833662
+c1cef997-d5a4-3944-92d0-65947307de66,3087304239,8539011134012810947
+44b18228-4f64-dc0c-cfff-749f2f1df346,1338743248,14855000811999712062
+bae9faec-0e88-deb5-739b-7d5a92986638,2651266487,4280627185646337607
+ef0552a7-64fd-1e1e-baa3-5049bec011f7,139241384,1348491481304086253
+73f30785-2851-49bf-fc03-d83bc51bde55,3712047677,2447910323926276600
+c0d93690-78d9-a16e-24e4-1b0b1ffa6104,2520058944,15032374775593850914
+a9b67c38-1ce7-f833-7127-583c851ef2af,3677298262,15728200890575914217
+11a3e135-fd57-b70f-bdf4-560da2ffe917,445443344,13853102123072511195
+7544a7b6-a2aa-3180-aed0-68aca2c068a0,3393014656,15621000094590010131
+5d8bdf27-7a3f-fcf7-a987-a0f113f7d036,2356583463,8917666110106054930
+f679f29a-4dad-e077-9281-c19564660842,1979619859,10920881206082236857
+c23975c3-6e56-0582-c808-01be66b23bac,3626649786,12192177042510019873
+08ab9c0f-5d78-df01-9e5f-bb4f8ce4a6bd,549808315,13925907057270896937
+84031c34-097a-1a07-fa52-f2b9c03102f9,3680930272,14707998205333518120
+4fca9c09-4139-94b2-1df5-d03d0a099a03,157126071,10500849758138634102
+242506d3-0c8c-c126-4907-ea1d35528303,1263287416,3802437154749755993
+195e51cb-7f41-949f-08a3-53740cff6794,3895234971,10252194974681322599
+b9f23806-8569-5d53-bf7b-779bf585a621,1808832540,1015509670926719837
+b8db5a76-7cd9-b787-a8e0-2eca70d91492,409760724,8589421503419896792
+8fa7dd47-5bbb-228a-a163-fc1756bf8a06,1923489873,15776281457717747969
+bffa5a2e-2b71-7ae6-48e3-5757e7ab0f09,3945604440,13640506530927003345
+c91ac159-8713-29f0-25e4-063cb01f3f4e,2423822308,10756540202902669235
+85ef2ace-b3e6-bfc4-596b-fd92b9ea15fd,3296086769,2428236326766997435
+157148f2-8644-4d93-5bea-0084dd8e9cda,885689865,124817993776696196
+0523252c-2ff6-8243-e808-e8f20203ab61,1724374288,225808312387435927
+5d718ee5-b4f9-36ef-c5d1-45061a58ad98,2385335922,12736822034697986783
+bf38bf8a-21bc-1a00-7e10-57a1ec23225c,170543815,20134859208485732
+ad5d398e-5ed3-da43-631c-d293d3e78f51,954292661,9470485366621210203
+602a914b-5dc9-7ea1-5521-1752ac50ccd2,2202253415,3732407736259163347
+79bdf2ff-b424-6541-e215-a15d1434c690,2922058494,10469294723358573832
+5c2796f4-33c1-c244-135e-be37ca47d2a1,1064839179,12779849930415217162
+2e5d77f8-2fd3-2460-3e37-c0f87f5f5313,3005893756,1325461011380186568
+1d757f42-4166-5359-bc02-c7276e4b3df0,3575619690,4271387531874396734
+b6bcba11-b368-f302-3d58-f2a2081b657d,835333126,1568713446493421053
+84e377ef-6e38-2e0d-2d60-6b3cc6ad1855,3810553265,17532242548703162003
+fe29421a-4c91-d0d0-85d0-5946d5ebf6bb,3962342874,13992218470673578562
+5e609d94-1d0a-f38e-bc1f-a5b15e89618c,524238654,13337786138235853182
+93ba07d6-b25b-9807-49de-a6a10de11518,3900237033,16526098098053927447
+7392feba-0375-9fcf-4356-209f8330b0d3,740390871,2203363160180476221
+d0cc34c8-e9bc-1256-9c28-dd15196c3f81,3322345497,15208944613598599314
+d34b85ec-b8b0-daa8-d3a3-7cc6e6d81735,2491868172,6582234686785084756
+56004365-2d7a-fb56-deee-7e78cd40f9f5,902728815,724142821474073431
+25888c5f-61b8-f97a-ca4f-b0f79ee23b7e,842234865,17546670772845453718
+dac4e548-9422-f49e-3bdd-a9717cbeeda1,2978546929,1425596716538211463
+8d58ed5e-a162-f167-a769-ec1b00b8d6bd,3330833289,5545690457812033113
+4f03e4fa-a144-8e5e-f7d3-603a47484dc1,2396354060,4766975906976831456
+bda6ac0c-7b98-2b60-6233-22f84b8e17d8,4196414220,15306938651135940714
+05cfe02a-946f-e8af-794d-25fa7e71e55b,26170177,5863197360257272777
+9bc04b57-26be-3365-d10f-eb452f29dba6,2266460815,11858180349033651554
+918a2f47-05a2-03b7-c9fe-1aed39b73657,672841304,15796041357359667136
+942fcbaf-3d34-3113-8fb4-322fe792abda,711577718,3941755244664797426
+f07c1dd0-e8b9-ffd0-4315-5aa26c84eac8,3103973924,14747548733295800063
+08963a66-b226-9996-237d-d7fdc23c2f25,1082741537,14676642812863236179
+c1960173-2cbb-5c76-b56e-26ca083ab256,3444444638,5770544664803591839
+cee3997a-b830-7699-7af2-760e8ed9dd4d,3349917399,14493050905855261988
+27bd68b4-1a81-140f-1fc6-2485cdea76b7,4185054047,12721214497122185813
+0137a5ad-e7e9-6ee9-fcee-46726c12b35d,768091003,10633277276017240560
+e8709f9a-74be-051a-20e3-2531f2cce4f8,3831812113,7887856952621082578
+00516432-8c9c-3802-17d4-d8ba5438954e,452729715,658423889098656735
+b541b02e-77f0-4cee-8a18-b07b88b41e4a,3821164621,5360308412890281776
+e8b3e72e-81eb-e39f-e8cf-2f460ec4e542,3350088378,6749008008042086133
+c0ef6c0d-3a19-5666-352d-c0a9a9a52cd9,1664699074,15565892528165413451
+31416694-152f-0f48-9419-95ed4ff12f2d,1368050905,16109661955066038969
+b688fe09-3c06-0563-e4be-5118f204de9c,1606485481,7674827613102432777
+757202ea-d36f-36fe-3dbf-c1097d5b4a8c,3901466699,5835786699366500864
+97a762f9-073e-e277-9dc3-b9920a74948c,2135269665,17439211730663995534
+d6b4af79-d0cb-4ff5-a2f5-059499a2970e,695693961,9569359858336914413
+c9ec8102-bba8-a795-875f-3559ce289726,4010416897,8878942323731074316
+7bda7bec-aaa6-a3a3-301c-68aa4d1a50b6,369429884,16934557996307241099
+b00c3340-ea4c-ffc9-bad2-404f7b83e714,272587287,652327980591882773
+53fac290-f001-6eb4-abeb-94d5fe279faa,2950039458,13276508278236461302
+5fc45737-4941-d273-ddb3-37b814a3746b,3463064704,6842229307570974419
+176ccc7b-d53e-e6dc-d1af-59a292e9613d,2960748752,11135107636500238260
+22ff938a-7633-18d0-0503-78f11feadd34,2381680594,3210202016223979813
+d5fa37c3-246b-7688-863f-6e1e947c66e3,1401928739,12706998016901812526
+7d6db923-0f00-11c4-4e1e-739703c5b675,1221234415,12272794298613550064
+1d309e74-436b-1da1-ee6c-223232381fbe,890038176,12146962418756381114
+84884376-6f4e-4b6a-50b9-bba8d4bdbac6,713705597,820058793410111511
+05f16394-fb8d-b6d2-1037-5d58ee427c81,3142833492,13984661184972445646
+5638cd05-6d2a-128e-8e6d-892f1f70e1df,2721431070,95986697404623565
+d33909ab-4a51-c7ee-6761-808fa17a5ea0,1178474539,5093145603505440052
+4d5eddf7-cdf4-bffc-ae5a-3c513f576619,2377043856,17824574437360717217
+5e08cec3-c975-12b4-21c3-3b0f2a9ae84f,2398522261,11033676272313617049
+5fe6ced0-360d-a76e-2c8b-1b9f2150753a,1303637238,10400669688841948307
+42318d63-75ff-46ee-074b-dbdd10684282,1539024786,3010355324418612894
+cfc239dc-f453-726a-2f7d-e95cfa795002,2768424263,5354574923817933388
+5ebb5c45-2399-724c-a6a3-89d9d0d868cf,2913522372,5508956737265260843
+122d9b6d-fc0a-c55b-86c7-a23772b9295b,1880881534,9408151065331920924
+cf4ae49d-20c4-12c6-dca8-28dc36930dae,1599403475,3231347923548905851
+873ec6d3-7a60-82c0-0657-b157af56fcf2,1866751174,10956658535168626618
+b0f17adc-3c84-64f5-f1c8-f8184de85169,2719160814,5130185807967536153
+ff472054-517f-ddb4-f1ed-226606f0e505,1244099503,17513767184134100915
+eb7d4ece-8c8d-01f1-dc1c-95e93dcbc530,2048593522,14947500585759275649
+f178e702-9d4f-42bc-3ef5-f6ba394f31b2,3837999183,11903522936674324142
+0d376d1a-82a7-2c1e-b044-a978add0a110,1855776068,9158622106473961129
+cdfd6427-f026-ca70-4f42-63693506956e,1350243701,4888770188841084669
+3bd5ae11-a6f5-88c6-815e-3cd9b5af550f,2631174218,512505775600437916
+a72cc66a-afa9-61b0-6d08-f5992595813f,3781506637,8929367766113861023
+23fef00f-c3f8-7944-9f37-7118b34617fb,1807291907,385605477558887183
+8ac1a930-657e-7eed-1883-87a90446bd76,38499072,969142102475887560
+51f01370-7aed-c162-1834-2cce710de867,1270766975,9988221690492907090
+e1ab9a0b-f968-93ac-2341-6ec6c86841f4,1724159852,16993837285089414367
+28f212e1-199a-8e69-6408-30177984f05d,2329258238,7533826293755601281
+d8bf18ca-089d-46b1-6618-6cab123689c2,2704297775,14177151855905972747
+fad4f38a-9a77-8690-ee73-a94fc326a29c,3174293895,16452061527744423975
+dcd91919-5036-2957-332a-67fe53463689,3381221601,7123706297549812367
+1ad30647-a817-6d16-3301-04b9d6660613,1812044289,13526303181964185085
+e0fafd95-d38b-eb50-75f0-f098da77412c,1763096969,4538385053193382858
+6976f01d-6de5-c207-6f65-9747d7fec549,1973299527,2298860734141774615
+69cfe43a-dc10-1da5-0243-fb0a070698e5,2436619703,2215953890739091949
+5af7bec8-2e22-4779-e7f1-041b00b5c4dd,2740091333,8235912793893524554
+c367c800-73d4-c151-ca37-19479c19d397,1456920938,18418038131593775567
+03a8dcb9-8780-b80d-395e-bb4a808c1a88,1841066405,8193610433024638500
+50efaea8-107d-96fa-4925-e2efc0ab9130,3016028766,3633567314510731725
+f15d1c4c-fe8d-25bd-145a-5a1333897f72,1980807216,2216496586790214371
+0f798628-ef90-da4f-757e-354b5e3b3fa8,555956474,11645534220952705126
+11349747-eb32-1f1c-1816-a9a5ffb920fa,1970338533,7677317021143544701
+8f0c493d-a624-df4c-e6af-b5c84cdf279f,2521624757,11746059189515486046
+b1366f70-2a2e-42af-5df8-db1009791aa9,3127937788,10202474809160900358
+d28a2999-c9de-dcd1-016d-78a7ce8f3d14,2256537879,14458816755571110999
+641a2167-191b-780a-1ed6-9cd062bbb0e9,609765226,15236523101191813901
+bf60feba-6546-8b17-ccc1-d7be0fe7d5de,376029866,17075317756501148593
+2d7ec7f3-6333-5d24-8394-36b83ce53023,2028523681,9833944004935416512
+ae101617-f036-b0d9-0ce9-2fa68e3bcfd4,2956386237,17076701975962963004
+00c8aadb-c98e-24ed-af91-b19941d17acb,1567426192,14441689482631120498
+eec088eb-0509-a0d2-80ef-014f7798c978,2866213633,11095306169364535553
+efe8f382-94f6-40ef-4ee4-36b4c52a9b8d,4060108104,9629875353710947110
+d078756c-23f2-6a80-74f5-188949eb9710,1570538547,6327011336540801118
+528bf53f-4a11-767a-4fb7-08a882a9a338,3185168140,8877254817659926924
+18ff95a1-c8a1-d0e7-9003-980eca802f92,994461539,5299177375956068182
+7620ce06-0250-a084-400a-5489597efb00,4075593436,4994729313549625106
+c6f20c05-e455-a9b6-2d65-b8926e69a72c,555561917,17437933152668271022
+d7296dc0-8560-5c0f-cd33-d3f6b4eaa4c3,3178669425,9367190046846259308
+dfecc8eb-629e-498b-f0f1-d0eb5eaabde8,2718470409,17175885057550934948
+c231700c-455b-9bb9-6880-48b31fb8d175,2405715807,16831252826341390763
+165e8036-938b-08e8-2c9c-738306db7314,1773925522,8218656187528659009
+a623a2d3-a8f9-85fd-c342-0177f6ccb069,2031159530,9327117982649046206
+6602d6e6-1876-4250-a359-37ab68724392,116711319,3084391507014764242
+f7bebe8a-8fa1-6751-5812-f188142e3c69,1264693414,395886676722385027
+cb604b5b-3ab8-0688-dc67-a76b3ea43b2f,2418171187,12198041094848527992
+2e159d27-0341-d9c9-5213-ba1de891fb89,1251129935,3367057796808762222
+c131276c-5dd5-4d22-d2a9-bf63c9498102,3571755247,11216317017829384989
+33ae90ec-7671-eac8-f780-3ee7c8c43abc,3868833774,5951049395028433719
+4f0d23f2-aad1-ac3b-cede-2f5f44be4b41,327859437,6249656817348871489
+4a2cff7f-68e9-bb52-1c31-d3ef01628d38,1427714127,16692165285631424265
+bbbe2998-c98c-14ab-df66-122febb9a9cc,1766264607,10660181121438836772
+47f76068-d2ec-62d6-99f0-d4bbf5c23e20,1405148924,10253680112959693096
+2f91c031-1d57-4bbc-cd68-6cb1c320a014,1413970409,2055873086650109967
+898c189f-e5cd-d681-bcf0-18424e549d35,3177377561,5489733869296899673
+9e761c34-825f-4cba-cb2e-06e2d6b2e533,203434871,18413295713898999140
+db4a25f2-8777-674b-04bf-e5b853b5c019,366910911,4954166085012839667
+d408fbd2-fba5-23f7-1a41-e7cd5423fe18,1626720188,16434946873824969710
+951e2cbf-eebe-ef36-aab6-63056b965b0c,1934066216,17025550365716882415
+4b48a3ce-6428-0e2d-dc4e-d6e9d4e55aa8,1926051196,3174874371463121573
+974ce34b-f738-3f58-b52f-b55595861fdb,2464789104,789702560794358138
+5c14123d-8946-df2e-fe2d-b6ce8f46e801,313273058,6373834973952854779
+315e7956-9c56-9481-e73d-fe69f56b0dfb,1080112282,6107776075897000420
+9a1019e6-3526-94b5-f92f-51b812fb940d,100534677,3170607528885860701
+eb7a9fc8-cdf8-4de8-8227-237a9064634d,1362485805,14058730441155050211
+404da93a-7cae-7018-83d5-4c4b77b71360,3618188567,286164113624233330
+34309002-6a3f-70ec-1d97-f09819b8019b,4121900766,2933771121594204376
+787a3ec9-73b8-e372-4772-fdb66f8e15c7,2683083774,1991377757637699950
+1c97055f-fb3c-9e93-f575-3f684115807d,63726721,9754195401106997685
+1931d424-3edf-213e-c66e-d1dcb0f874a3,3561089790,12384298727202788487
+692d88b0-0a8c-8033-afed-812bf3696463,2541398048,9431088657165189534
+dea090ed-dd16-c0b3-2f1f-e5814d80d012,3369937195,2942825017538043345
+d5321ffa-0e31-16d3-7483-61cff3cb65e2,3900882085,15055323895298137466
+1ea3debc-5c93-7806-4ee6-55c36ad7a71c,2226483106,904863573532937734
+e5f6592b-1c68-6743-8fb5-e7d19acb069f,2057630081,4304216026353764212
+fbed8ff6-0273-b250-b42f-134c9d7366f1,2332376708,16599668331456729802
+41cf5a33-30fc-97dd-03db-d7869f6a6d04,868598853,8885338783485513701
+fc4beae5-d4a0-fd8c-93df-3861666b7f09,1735833496,1888743114667618032
+f7e119da-f1af-bc78-fe66-ba713f66d0f7,1196507463,16020423393103620272
+151abcba-9d2a-7eae-f965-fba5e0619eb4,4033691254,11172360210405025045
+18d5c052-0104-c2c7-73f5-dd6f4d0f5425,967502919,3660238602433764645
+2a54ec86-be59-1b14-1e8b-d4b9a7c30552,4290242474,12360126438280566329
+72b88a4e-125e-c4cd-59bc-9faf19aec6ee,4232947657,3531617526451766315
+fdd79484-114a-4645-196d-c914ae11f08c,3809654209,363090786202569128
+881bd54f-dffc-f4eb-87bf-5f49949f44cd,4116746408,9429706263632685654
+fa805045-a091-8648-1207-17c8fe71db29,620235928,2525035380573432488
+64625b82-a19b-8118-8a97-ef40b2699120,2979525005,13971567531529978457
+7442321d-3020-0bd8-9721-d77e5aacc2e0,240551063,11483412005444301893
+cd6ec3e0-4f78-5ac5-3404-8ab3fa08bed4,716305420,4408929024102096887
+2530afd6-4f83-b8f4-a041-51bcfbbf2df0,121688029,7082641501735575173
+252e4703-9eb4-3c3f-338e-99505b8258bd,1261557837,10886373839514294264
+df65c211-7315-1b9e-51e8-89b23b718c39,3282121519,16492266823652072638
+5acee48e-e246-8c25-2e06-403b3a5fbe7d,1469844420,12699930427152893925
+1d5aebc9-0c1e-450a-9fd9-4623a639d012,1991662438,7763363902032247649
+ea19b860-6c36-a51a-48af-4417e3f631e4,2538663532,11637235876991685663
+99e88c68-a49a-182d-2fb7-5693e98510ca,147673939,17191809172055401434
+27d252db-54b3-abef-02ec-a220daa61ea6,413869517,2332080758636961017
+0a98de99-a668-9593-e21a-031f66aada57,3019337533,711797866467005447
+280b77e7-7ae1-a03f-f9db-6cec6b56279d,4218550242,12960544777410544072
+e8712540-1fb0-113d-9ec8-a592fb8737ce,1028059715,12798718704061527834
+866dfc29-1d07-8eae-60d6-126c917ebc06,686079313,1483962637800567792
+f952088f-a8dc-d901-e751-0660a4a31ed1,3018650674,10591702727182116686
+72eefca0-8895-a550-5ca4-fec7ebfbff85,753224950,220528395948521716
+580c9a8d-3602-851d-db1e-95a384ea23ba,3625218968,11352455259358928001
+bd53d578-7271-6a5e-479a-fbe03bf1dea1,687063410,11232204245902078994
+4b199bbf-ad1a-7bdf-ef46-81f00a3e4ed7,2503578834,13161365975158822554
+42b6cbc9-e3dc-1011-e3d7-d594ae46e7f5,372705713,6104519881879043733
+b8465d0e-e4c6-d843-ad6e-200cf15b589f,761693801,14454924731605151383
+3b3f0412-f00c-9d93-5851-eb9c4c1f85d6,2619181033,366023174627165150
+12d92664-8526-f350-58fc-774d7439ad77,3186301702,17426392262086788662
+0a4656a6-5c6b-1d00-7085-c4ded161722c,984889218,5828192724102756308
+fccd32b6-e660-6fb4-b259-2d7aaa9648ce,3535207591,3749114701790475786
+acaecf07-019b-508e-0ea3-e1265b7df985,1534067038,1496601905104874325
+26957cf6-8b9d-b5e5-e77b-c7c9501e8876,1549986339,5951718851779750720
+6513a74a-c96f-d0fe-c32c-4ec9e394851d,4162554468,5607895839172719739
+e3769ce0-33af-f1d6-8b17-8fd66b4471f7,1987417459,625101141812533434
+2cd8b7fd-ccd6-9a67-321b-dc9ca2502866,1468406897,5958419127834313678
+97ce7581-2401-ec8e-83c7-a6121f3bcec6,236809116,356770395472166163
+598ca69e-3e85-1e38-80c4-ebda2fd89ed0,1559921585,1915558482296159874
+5b99d6c4-5eea-6592-129b-dab2e9642d54,3046028793,7136572938238441785
+83dc14e4-c2f3-c65a-5566-fab6db03e06d,1604089687,5714112433634474856
+eb8e647c-accd-320b-59f0-a2f0f511dad3,421884482,4062322096229068874
+37347a66-794a-7a6f-0833-7b47d4440027,2084723883,14005176744662796268
+953f532a-1195-4f09-323a-9c63d1c96bdb,3298142148,17424106992809992430
+c37ce55a-ebcb-fa3e-5cba-78a8625ee4ad,98078084,10522640465566901112
+5314de28-555b-2577-0b15-0746be414816,1460576803,7578819163338618555
+4ec71b25-d0e2-5b80-5136-8409d71560e6,3466728224,9735432531802223818
+8cc67038-917d-9b03-cdfd-1d3341b3b698,3145357148,2400856794268053364
+d83d1bf7-2065-5196-7578-a8af8200e910,2556943446,18281904091745264840
+9f04bdd8-48c9-b5c6-c522-ffca2af8c8ab,2819591147,7122467693251774358
+cef6700c-d283-2893-b7c8-edfe145c51e3,2493781071,6006281550357881674
+a513839d-22ad-71b5-24f5-3b8e0ace7f26,2920366185,15694826008383306741
+60f79141-f42c-c03d-4cbd-b27e40165bca,3103317393,17235202958117416702
+c2a80c85-032c-60b8-9b71-2e2ac3a98c09,375520946,2952120193237698985
+268c4672-f82d-2795-79ce-42eb1af8f6af,953388728,14867452943573314110
+7668d16c-375b-7a9f-e866-11df861d1ecd,811701592,11886298043301293182
+f08c1b50-52be-05da-c9b6-8648de1148e6,3585039031,15306478008225777077
+a4e0dc06-31a7-4dd7-39cf-0c9b3673b887,1873066074,17711083803066539005
+b7f22123-b8d1-66f0-62d3-7581951a00d2,1754771833,10234981248379486878
+553543b9-52e4-c66b-4e83-ca33b84ddc59,416651333,15905630191528490622
+0916a9b7-c97a-2e70-82bf-ce566337dc07,3149364186,7847281362265783757
+cc02a67e-3b83-f06f-bebd-a9cbbbbde042,3237284551,6312649976793067958
+ce6321ef-9d33-8d8f-03e6-1bdf5164aab0,4071298178,1863401727496331447
+02c33359-f4af-7bae-55a7-fbd182d4c203,1451755282,1171732008724153966
+b9204a90-b8cd-8d74-0873-aa3962781df0,3158945635,13021528699413012114
+6ba02895-17d6-b84c-9889-3cc3b7d296ba,1078650613,9707956259935329920
+81ba9b8c-cf65-9210-db93-8c554a8fd791,953864442,6330489281478112458
+7e194f55-924c-8469-b178-a77175eb5909,2994980979,2762633136992507557
+3150e56a-8986-4a17-184a-3435c51ba699,4232757664,5929249135906182723
+7e04c95e-44fa-5e31-e250-2ceb2b1c7cfb,1331818716,4348207211430722844
+875df1b5-46ae-56a3-12b6-25332e6045c0,478787763,14009354540785643746
+b6e5bcb4-cb13-ec3d-2b35-46818df436b6,3827195016,14891550321462218754
+05f6ddf1-7152-459b-91ad-b76d6e310340,1471627792,2896776327252592019
+be1bb6c9-0e71-be73-3a3c-22d47aa02b66,225075093,4857006658307389029
+9751e1ae-a220-7ea4-ffe2-e87d96b35fa8,1485385204,3767725188642700237
+172efae4-92c5-0f27-58e2-fc5749cb25b4,907482703,16645295014214929529
+047a1392-1be5-ff77-bff5-1d7d4e772483,709058443,16544244614214400195
+1039e613-b294-197d-211e-8b8468bda190,712581511,14253576697896443028
+a78c1a1a-6bd1-5244-beb0-86d40af23379,4026313819,18176924205889802750
+26241108-804a-548c-74cf-c5ffc7d02a2c,679132619,6134038228012593993
+55822a6f-0daa-6ad4-888a-ae312f105fe7,2505793274,13375369383328764612
+b2fbe257-6048-505a-5ff2-61c43dea9a27,987006373,7738563215561662491
+6b5a3587-b9c2-f73d-7579-0486a45856d6,2572383166,13880701250437235593
+40ac7dbc-132b-33df-1e66-ddf6471b789c,2509063904,10209992094880117246
+76751a1f-ac31-c6bd-449c-b8721b245b27,1859235328,18156079525818718476
+6169fdd0-da66-1d69-aa4c-5b91c92f82b7,3392809543,11303066670373731530
+f81284e8-c111-9804-8ac6-2fc0daa158e0,3301209499,3065064623753639031
+f121aad0-a7be-c8a4-694c-2c12a1f250fa,2770929905,7572127140144344770
+a3dad165-95c7-a00b-fb45-a9913e169700,2458897442,6281601409056601919
+9fa09f5b-f0ff-e170-17cf-eebe3b95a9dd,2314435990,6779349243131613409
+af32e2ec-ca12-9520-3cbc-ffaec446a196,4041552690,8053616674168209623
+c2a9b454-26fc-392d-38a4-4a328a2156cf,4248132552,9497601848411029599
+ecd44dea-5327-9ece-0113-f2635e7d325d,1053791111,9279206157491690838
+76449fee-c2a8-db9c-16c0-6fb6c66be124,3712283618,5807610624072848088
+26d9ce35-f399-fb98-aec5-50a139c58033,2337491391,3977066853568046191
+11eaf8bd-9fa2-a2c1-f07b-117ad89047ca,4197541996,15305509483537727294
+6555f154-7540-fc61-be4d-77ac0f7bc2f8,3297361156,5551817708784944137
+e08b5d78-c6e1-21e3-192f-feb34a809b9a,2999102834,9273981684427061571
+61ab3173-8e35-048e-59a3-4660863e2e87,900894027,15001754311672319375
+9a2078f3-5614-72ee-eb59-afc78f7bc533,3436598925,14377174662211021433
+a5fbd588-f126-acb1-6e69-f585042eb818,1189107753,17585168493380499806
+a43857f6-d72c-2787-7fa3-65d2d2d6aded,1441138010,12073984784528261460
+d182ce20-9889-8146-72df-e001ddbd23b6,3027229857,1531363685421287542
+37e1d929-5e79-7d92-84c9-577b224a30b3,1171839351,1939592118875466504
+1af720f3-fc0a-79f1-3282-8ccabf965b31,2585513392,5734399981892886868
+912f6dc0-3a2b-0f3b-1eea-4171bea2c551,2771168118,2112450876130153415
+f7ad0fe8-bc57-8285-cb85-263f7931e2c6,68165670,819159219727454221
+2a024d59-9e0c-e2c2-1388-7b77a65f05c9,1675271434,6674108342952687235
+1e10a228-06a7-0954-a125-388a9c4d5936,1892876249,610243691065600089
+3288449b-61a5-f9af-3220-2b4c3e050d97,3510780590,14665240323852520336
+2a70c1de-9bc0-7971-c972-38737944f336,1633414802,4426793390762311359
+3617adb1-5c11-1771-64f7-998f2d9aa58a,3860768867,7407869272634165484
+97c2eec8-6aaf-eb80-1058-d4fb1d6ec0b0,1267920848,14937863630395734150
+b4360f7b-12d0-d1dc-9249-76207ee47fca,1904266899,1950946151538341666
+2b8d3228-2fd6-9160-f9da-b62c4ed982e0,652619212,9430084083206890436
+70e0f002-2302-7942-793a-64065924d3ac,3501050260,17015462640415408542
+9c82bdd3-0974-51cc-1ed0-2df99bc63a55,1369315550,7452781715153423705
+9bd10433-5c1a-5abb-1562-aa1f8e067529,1954953339,10284946290032588836
+8529e1de-5092-f1e4-fd92-37d06886c50c,1536784600,7578280725800449272
+771a8335-6339-599f-21ad-3948431ab0e8,2235558603,6406973406277346566
+1b03a92d-8291-5feb-878c-674bde60ad6b,2097288771,4563540981160643247
+3774c5b2-19d8-e90b-9fc0-31a79441ff97,3654767302,1178297915066948663
+2e2c0fde-385a-ee31-92fd-5879de4bb0ed,352922224,13296764270912283970
+22905262-18aa-fbe8-dc53-bf16537279a7,1473366017,16746885511599744783
+61602138-d02d-fa87-ac85-e28dc1133439,4242187340,15025372673522178144
+e597ead2-c563-d9f9-9c42-8e207b83bb69,3445809729,9281612439229289150
+143f1b49-7177-33e6-6fe7-2914a6e5b7bb,339241937,2849962405667904634
+664c771b-c6f5-1572-d177-1980d76a79de,1535264130,9224963256000726871
+06c82836-9f1f-ac77-61e2-cb6eee748e18,4004360753,10765808512521624318
+7dc96326-11d6-8367-b009-bb68af75b20b,3880852654,14615205487692000105
+a8723218-6aff-0032-6816-b8ad88e284a0,766423230,3243525962654775994
+9cb98ec9-5cdf-aba5-98d3-b84352127f65,317099601,14220180603347926997
+d6b51032-dada-86d6-c077-c6dabd64f804,2472972158,3220271081399938458
+c65ef70d-12a3-8cd5-aa07-b920db780ce3,1709156217,16960008478573019817
+7558cb03-c50e-8ae8-27c8-f23c46803826,2971320825,10647483231657159779
+f01588d4-5c92-69ea-b63f-b2b0a3f7b295,1774360144,6999366895050970214
+4c9bd54a-4661-93ae-81b2-b1e3f2ff26f9,87084102,15737239760580149024
+3d919a9d-8711-9f7b-fedd-649d15f2b75f,2717039050,14309915292214432178
+e21a1686-7a28-b867-d057-8cc190b061be,2335692838,18152664674265880056
+a8e1ba88-a8ae-0613-0f58-866a4e2098d8,195750231,9019159338190178462
+5c40b56d-61a0-9513-4c1d-2b4cf7f9943f,2853269699,5887475950622940044
+c2eb5de6-387f-504c-d893-838c1f7be551,678351511,6365123782102810425
+abe23c5b-9d7a-1cbd-db8a-419523bb7c1b,3075614105,7160508880344241829
+2c237ac7-2bfd-bc3f-b0b6-5740ff6dbb6e,3678900036,10846701837940962569
+9eb60cb5-2313-0eb2-ce7b-232f058f3e46,1590631421,10156989436544664126
+4eb8e60c-cd42-0973-0504-168f2585f587,1860493236,7432207627055178789
+2c20c900-8708-cc78-7a9f-cf609ba82f93,2391405175,12258249263817339784
+90bbb1ea-fe8b-6c31-cf45-f6d0be0dc6d0,2511763779,14965646890004593844
+517976cb-7aab-50f8-4581-93fbe6b4f876,3450454525,14151742009927392175
+d36b71a6-88af-08a9-1ce2-72389cf2baa3,2366556144,7185789745877257982
+aa406867-3f83-aae1-ab29-4aab8faa6ab6,150315187,3802369385387318231
+e5dffc4d-cc15-c8ee-608d-b82baa950184,819678730,18365104803231756764
+7050de36-d3f3-97dd-2327-b7677e0d2720,3834565294,3275439878787925725
+bcd05f85-19f6-deeb-ceef-926f880704a8,510806389,16767691195555323436
+1ef567f7-6e54-b87f-99f4-c12a1cd316a3,281721786,10785412871777000821
+2714c2a2-5577-0c62-4411-606dd05ec5dd,1778880451,10666630512440285120
+f2d2f5d2-d4ee-19c7-05d6-a5b0a97121f3,1032913382,516996747888622763
+55a92228-4f73-2d60-e7f1-5dc7dc4aa29b,3973870735,12956976521209638858
+4915d6a4-6a46-f409-32a6-9cb849a8a257,3725168147,16527712215635495116
+02b51986-3590-adb3-0426-ff845d51ff57,3338937012,6909965456776420126
+1ebe1f72-554a-2434-d8a4-ac677726037d,2657758591,2259761215442402975
+afc2547c-f6fd-05e4-4a2a-df1d7ccfce78,1958520812,1522613392930930069
+d6b78104-d46c-6104-ec0d-7855831520ad,2557946045,12088749127543801521
+6a02ed6e-a896-2e8c-5f04-7081aa1ea222,1672471442,16166918296681138028
+c1a61193-7c3c-1ce0-e2ee-b80bf429d4ee,1073162792,3793900646199144378
+db7fe1b9-58b5-bdaf-fef9-568fd359d152,590400985,15672543668301791781
+dc0154c3-3e79-382a-2937-d4ad9acff8d7,3253596560,11904600084990596220
+9e9227fa-efbf-cf15-711a-a8f9086646e6,2679646334,633579758989227943
+0bf9661f-8d18-33b5-6853-42c1725a17c9,54941020,16412164480629227482
+57f38b79-22da-deee-16ee-c571167f0911,2966377971,5945182918512905354
+e263d912-73ed-5d7b-ce1b-36159e0ccc2e,841703343,16823433606605388206
+12fd4a1e-fc38-8ef4-f437-db304878751a,1332189973,11096997095381406131
+77a496a0-a2ed-ae16-3edb-2892dce6d36e,410401966,1252649056991976239
+5a350480-641a-218f-2b48-55fd08837c05,974596387,17883952656258974589
+ea2ac5d3-f9a9-ae42-2e17-d63a7c477610,2675367215,5473794930447003749
+0379bee2-e017-be10-0288-a029eb9f3aa8,2309311092,5054307923760166278
+77c5521f-879e-4d15-f24f-a9434eae1dcf,2143555705,2437439350069450052
+75554a7c-a04c-5223-c097-b4f3539bbd51,1551888115,6710882177115344293
+795fa5e5-5a6f-9bbf-0ea7-699f222a45e6,3090607481,10126647760697275370
+754cb929-4c19-0867-94d0-bf17757c9dfa,2870248880,7374554338137339388
+767bd024-d6d1-132c-e20a-27af5a819b10,4071637312,6170248183368803972
+4b3558d6-3df4-f239-cee5-bc6fa255359c,1324905151,1387901412669638110
+4632fb7f-e19d-07cb-d14f-ece281e06aa8,1025636719,1323505686000851943
+cbd75dff-fafe-fa6b-6398-e6750a21a100,1353445490,4460014999930183281
+43cb2fb6-cc92-6e2a-9499-9648af928289,334926120,11628206455901079674
+cb8d7666-3d52-38f7-755e-cb4859cdbbac,1055507247,526091926885751527
+340faee6-2b7b-9118-d9b0-67763365010a,1868769175,15549780906179258605
+45280ef0-7ca4-4d77-e722-fc2a8141c4f8,3514441088,18026824230773524380
+0244f632-85f4-2d71-ca49-7a83d710066f,2902296232,3052109463599298513
+e031694e-6b6a-9d92-79bf-4436e4d46100,1906155170,7733156388741855477
+dec3d1f6-a99b-6ce6-7afe-5f1ae76e0fde,1306892797,11044312031953516352
+3467c329-d2de-f722-cea7-d510461a40d0,3273062242,8791521921506461050
+6ef69895-4e37-6dfb-b9ca-ef426856c8dd,3009666972,1353032056794575338
+a0649320-f3d7-2c31-7d35-2a28c1f3da96,1107803438,1086059179041567221
+5ef44b0f-8b29-a751-029f-d0317d50b8b6,4075974767,10026514220343473926
+e4e89516-7c66-78a7-2163-a55bd3db4016,4215601251,18006418140013536831
+eb443d9b-1bcb-a8ae-2be5-f406dbd952fb,2560598607,3244270630093582911
+16e7cd5d-23dc-cd4a-499b-3817be52e624,3509615964,1312502621792955060
+a4a99b43-7a98-0a29-62a0-6f12ebec7cee,3794589701,2096804280164346276
+c3fae55d-b00b-89e6-7f8d-1c70c6a86a0f,2057433448,12009157710258659574
+3b03b0ee-4558-09c0-347b-c4278fbf3df4,1989422472,13018531788379724798
+d4cd7c32-de48-0ccb-c23c-a9b46624e669,256846708,8896268648660258728
+b0218e6d-e37b-5327-98f4-72935741513a,2385386241,14761470538599715436
+52316f5d-f98f-017b-b3ed-f57a3c5e4f7b,3044623792,4482205477828542795
+a27b5b8a-179b-9944-ad80-75d5db63c57a,3085855454,596629103492068161
+85a8dd56-a710-e594-0edb-8e500ae74411,239485119,14602169445209417616
+50863b3d-e916-fc4c-89b7-c24564c1b799,1634339085,7017114589810484108
+12b31255-7b57-caae-2d0b-d276b480f6fd,553017587,14837329770969916203
+66c2f7a3-f358-50ec-10f4-089aad695bdf,809462880,15287409687342786107
+78e292e1-c4ba-4fff-ac4a-89508d945206,3268228431,10279693549060982283
+9e51504a-e503-a0e0-b6f8-2792cc7d57af,1766127806,1814190836517084421
+e71511af-3d24-4cfb-df87-f366c3622644,136188399,7902291012813107379
+4cdef541-21a5-e49b-a3f5-46ad5bd0666f,552287942,6805920319868769776
+709dd4a9-e6a1-7401-9cc1-b6bc1e3a52db,1945501419,4409933970809360432
+c85d9747-221a-a02a-dd25-1d0486981388,1150846766,12868247978885429613
+4a01259b-f6ae-3481-0468-4d2324d7d56d,3206967038,17528125236674626436
+e3d8705c-c811-541f-864b-3beb7dba8168,2041035192,4387716614638693515
+5b7f1d89-78c9-46a2-83ee-363f7f2f08d8,2139754062,17456866824328169327
+f8c9e49c-08c8-15ac-176c-c9140885ba10,408666353,11169472573521505467
+9fe94ef5-abeb-2eeb-2819-d314b95d81c1,700102275,2444253214250519763
+b276749f-97bd-ca2d-c88d-e19925dcb5d9,167887682,3811216162966293377
+8cc5904a-080e-3c3f-bf12-6aad8b780778,3970955827,1627394960480874536
+0d413d2d-391d-23c8-0b48-549e9b4f08d2,225412191,11611005173724785495
+63cedadd-9144-1a79-b541-ef0b59865b9c,2168989408,17898462777132680338
+1bbe6b70-b285-08e5-0ce4-1ee72daeb308,4064407462,5678578736545224842
+4efdad3a-269b-ae1e-fafa-7c710e782fe7,4049913757,17316335493083119986
+1ef66d63-e994-064b-f0aa-de7e5164efae,472679993,14828848062945339765
+f4256f4e-4ac3-ec75-73b6-65d91fe3c57c,4139874240,7054174792092187740
+01b51c66-1170-f605-72f3-c7e00ff99026,624206825,11762690964671921834
+132b53b9-55a9-d3ab-7527-5ccc531f8384,4088499779,8462989371513595814
+c48b3a90-da53-c524-b3b3-0b06c0af7871,1038901902,880729618161262609
+5eba5fff-3302-df9f-eb30-5d51f0a4ac75,3238361722,12474933966949512956
+245ec2dc-89da-0f5d-6744-85d5d3d8bb5b,3501911466,3318791757302248565
+56180457-9cf7-0ff8-6984-da46d5bd6b04,1159003708,9649457311843879371
+f9af1b53-b709-c680-36f8-f4d0b58b2343,441577022,913937004662128672
+fa373acc-d6aa-e39c-fa4f-e5f501234e6a,4267210005,4806046383489019117
+2a64c3f2-016a-cee2-a98a-fa384a0e454c,523185990,6371912650477570095
+d183a711-b369-f1c4-abc4-13facda8ed07,3749612436,15324156765386557295
+4688721d-4c1d-a6eb-a65f-62ba81d958d1,4122893630,4434402654168438026
+c2e9361a-eba7-2403-6dee-1f03e2907dff,3892788480,5670284428863507433
+29215065-5262-0dac-d3d5-c04bca5ea932,1400620897,2753121026480745749
+98c8cddf-eaa5-04e3-414d-27d1243d5a23,3077566645,1303932379032118553
+5b6aa930-33e2-bdb4-d426-f9b4aecd8d7d,2080876954,3773259848381269198
+8e685ad2-2561-5c02-250e-abeca6b46a3b,3958114750,5225309248704070358
+43a497f7-fd3d-afec-e3aa-5a889c3c667b,2320191465,4568323094657916162
+f5ea1824-d48f-d88f-19f3-b5c72c259d6a,2944350450,10932663145772229560
+115673bc-6fcd-fba8-ff96-6e1da36d7e79,3371110171,15718886018788407743
+e051e1fa-6466-fb7e-4ad3-0fe44ced3614,2022603699,1898177397764642389
+dcb921f2-c5e3-89df-63bd-f21d663c689e,4278212372,4110399516437963018
+cde6899d-09a5-6da1-e32c-ccb7fc482ad0,1272113227,14338522694078758392
+2db74466-bea5-3598-7027-b2a6506829e8,3394653161,14592276774987006517
+3f91b74b-4e4c-149a-b460-88155d40cee0,3082823008,13390068664166906790
+54b76665-ecde-6be7-7b25-87e875d07c7b,2962334417,6043899552590992582
+0845acfc-b3dc-6bba-2dad-2b208237a8e5,2697276400,3395215597310899277
+ac10a2d6-891b-bc40-fdbf-5985bd887cfc,1805868135,5546999424617944306
+d97669a3-162f-e9fc-7f96-62c49059117d,3599572236,4812267108440028639
+e38f57f9-6907-bb80-cfb6-3851b9ec3250,842868195,12647443154555032147
+78f8ac29-d5ff-9cc4-c555-c3c565a9b913,3242322152,18404970775432101358
+24fb6f4e-2686-dfc9-109c-4543ff9aa2ee,489548909,15254287492328607027
+6620b84e-c619-f949-0718-2024f492874f,714806979,11544836875697587658
+04ce699a-5b39-d91c-40ce-d07121704cf0,1788253380,14551825360839471953
+96102f69-6841-264a-81a2-0a88c811b184,1261711307,7088889679949682995
+400fc1aa-9c1a-80de-40c0-43fdff7b74d6,1272969443,16007271569774583309
+3b2cdbca-94c1-7380-c3ee-50ff2c528e98,3823177833,11641492004301869416
+8c5e9269-2d25-24f4-1189-1ec0386c756e,2783423246,9940583194553191916
+43e6d12e-d254-6297-9ea8-3ab1a4ab0146,689681070,1456489623389436071
+beebd7ab-e9ec-28a9-99bf-77ce1003db77,3379547588,6439714752401660004
+a5237224-078c-67ea-199a-4970e9c87434,918476851,11259859467298574411
+804a13a7-ebe1-88d1-f8c9-cbc06c1c918b,2973011809,12106266669921726795
+528c2f21-9f71-cbe7-7907-4bc2b3a609d6,1095352702,18305522004727304603
+e537241a-3aaa-d6b0-c886-48ab92f286dc,4155345179,15288051935517643949
+2e1a472e-0fd0-c408-dfcf-3298fca1b356,1435775278,15355285983527733148
+a1eed49d-e7a1-47e7-3e76-ee5aea7521b7,221931230,3628603834225723528
+754e7405-528a-ac72-48e0-089df9629670,1990755148,1571985317046820829
+2f471384-bfe7-4772-a09b-222ca0cf1944,2288179906,9873138821043154166
+bf231ff0-48b4-20ab-2261-b852d3ffca54,3710646953,1958435032157789217
+04a8aae1-bb6d-2ac8-8d15-b3da035b7b69,1872981553,867968814787504823
+5a374aa0-de10-8c95-ac0c-83b34b8ef206,3896115208,1230094556967831511
+01d4dc34-28e8-95bf-b6c0-eb0e1826b4fa,1029108046,18285424927085734886
+3e69b524-ccb1-3402-1024-f582329f0f89,3435671952,5308016079162878680
+8bb943c9-0f9a-e494-6ef8-60cce1c9778b,3056447620,13511385657872779472
+a9032102-4428-6441-43f3-af698cc2ec5d,1323335693,3222631640758351561
+184c0298-fa25-baf3-5d5c-a46b795c41f3,3078689527,17102014539382396612
+28d12bd8-fa35-aeac-7861-2625eadc9422,1047519033,12608820368750733706
+2462aab7-8c1a-344e-1e1b-9bd3e566bf38,1261639135,13361917688840683587
+1b805f45-e787-12ef-7875-efc4df009e03,1994664090,5426535998528383199
+1735231b-a58f-537f-de10-0b17dc6c6278,2028725257,17713119252370280500
+c319db34-9c91-3700-b8bd-421daa37eb61,1766303554,17139173836472528261
+aa804e2c-b957-d1d2-6248-dacecb68081b,3233292648,16389068699679794179
+e5296f42-4c97-6aeb-f80f-558bba05393c,2562255181,8001551747804779151
+c4c4f4a1-6de9-5a7a-4f8b-30f4839d67cf,3540652209,9137537538339924437
+6891258a-d3f5-7188-eb6c-5bd0209270a0,3505815338,10232380953991865192
+abd50e89-b19d-dbba-2cca-e22085c384fa,2137878963,6828578633149185571
+a848dee9-5862-57fe-cece-09540c167cc9,3096290613,18277650520318097456
+bed232f7-f0f0-0487-d2bd-b865d5f1c28a,3396700954,2172534121242065171
+4c85d8b8-25cd-424a-dde9-e7088efbf2f8,1669317013,5184477164127336846
+c86c581f-9abf-fff8-a5e0-e6ef09b57318,4090198742,1165892648430630981
+4bc8e3ae-e1c0-6394-b9ca-955dce7a3459,3043449273,4342636554056991477
+1a03026e-e9b8-9515-25a5-2baedf80e393,3325556192,582374475980770959
+2995754a-8cca-83db-ced0-8760fa8efb45,682916915,10787512386313606127
+8b607806-02bd-440f-681d-0e657d8ce7ae,3615606155,1059195093405536716
+e9cfe7c9-928d-1b28-4a68-b2ae8c986050,3507491704,13565530770374126520
+5be6e345-35a7-e6a6-e7fb-990ef7d3956d,1056868078,5702213443106548908
+1a7c3221-d102-016b-9afd-2a0d938902e9,348404027,9033727694480917631
+2034b330-d761-178a-7c90-6e2185f824fb,2144174694,4458414374382869741
+85aabd53-5dfd-00b9-d29b-79f87ec230d1,91563710,1797536158738625560
+f98f1f1d-bcd7-b1dc-59b9-ca2e1204399b,2891527068,8720498419245056964
+83abe0a0-68d3-e3bb-c72f-30124f6cfde8,871624003,17311983474798486700
+69a13701-3b9d-d47c-0e92-1ab4f7cb6e75,1536269113,1626342793480286554
+2ace7855-b41b-b317-00c4-38a5c83dfba7,3395711248,1419711505279113949
+054368e3-db00-9f89-472b-91ef0b4a3559,4128819884,14515886679248639509
+148d2d70-c4ce-04d3-a13c-34c3fde895c0,4027732978,12994069008916359695
+2f2d1e30-fdbc-c502-bcd7-972e7e4e3821,4000554185,17089997145948161676
+d4fa8708-4c7f-a7ea-d3c2-c66512363b56,2494982917,16241588071119924401
+9c21469c-52a9-c1e5-80f4-b8a0e3da52d1,47410556,8282716800258913076
+c9efd54e-9ebf-e2bb-e57b-8ba9bb72af3d,1622940626,11632241238861044729
+ee1fb46e-610f-83c4-7ff0-5157ff834992,3244360165,16301739909701150276
+56c7448e-7697-ee0c-6338-629e4036a57f,3110334411,16610605505751042914
+04158f1d-a302-8441-a78b-c08ba340ec2e,3878199276,11591653642993054078
+0995aed6-96ca-a3a8-6b48-3abd0123ae71,971314400,7614659198498597275
+73a0c25b-e256-2c9a-3ffd-c59d01b2865f,1899050766,13903749832458126563
+7f709eea-f360-a612-c262-c23bef638fef,4130525535,7449277882198974089
+cf01e533-501d-09c2-bcc2-cf2dc955fd6b,2110605801,18193132578372069521
+b2718f9f-9e8b-0fe4-7c8e-a4d30d0c70f9,3932321811,2046259876653021001
+95088ba8-9f89-2e2e-678d-611d6932298f,1466086657,16472809881130229034
+89584a08-903e-9623-d2b7-8b16eb752c64,1464936769,14434214279016617651
+8959a689-f35b-0c73-d19c-f8639692a8e9,2760694637,15948961569225669438
+d5ce4bb4-430a-d4b1-8bf7-890df72ef93e,321804519,9846685456762519876
+bbd6a9bd-0afa-62a1-3533-98f41f3e71a0,1607161622,12078589404084113520
+300afda1-b7f4-6516-0266-acd3e22b1572,2276922510,7477120644317624804
+d6754404-a2e6-5e26-6ec9-8948d7883599,1867599806,4714847429131286818
+33b8bd51-a377-e542-bbda-e39691eb8618,2827758984,16460260520561246195
+e8a7ac80-55f1-b8b7-5138-6766182b95ef,3173699078,7050378950297082845
+a69db1fa-c574-9be2-e7b4-705a9d715861,646756455,2735036814578117847
+9a7e0f82-7333-0db9-0615-39140dac705e,2265075488,14036092309996533947
+e1cad037-86f9-330b-ccec-1744c1671721,1835186170,16160769453955210503
+6e5ddaf8-82a3-6140-81ac-4dc071332413,1672480889,4700865145907077125
+fe26d2ed-be2b-c49c-51b2-b5163a8a00ba,630140781,4674986297478047971
+b99546de-7e94-f010-1221-54c5b523381d,2424236141,483043401738221444
+1e70abbb-ebc3-c2a7-c521-39864027d45a,796669831,18248453113230348049
+757aa879-a8c2-5e60-5e03-93fbd293333c,3042503337,17063658299239566917
+184e1c4c-e38d-adca-8164-f9db5e07faeb,4259929652,12424047794659437090
+e3d0c1f6-7c30-2e90-425d-e7a65d4635e7,3760365404,17103812665563083501
+05861e83-bf46-7728-1ff8-ec38b1246d35,179399010,10105118284300956177
+aab2521c-20fe-3ef1-f473-57a777e7460c,3292022191,10290221020572078067
+850335f9-a654-3784-58f8-b622ec3675df,1248592617,11153762374139537610
+57db3e8c-8fc8-a6ab-5bfb-63afc9ede8cf,635869069,6417053541097403818
+aa5465fe-ab4e-ec88-cfa4-a36f122c8950,801406981,7365914085796187137
+04b261c5-987a-ab02-65c0-b93c33cc9330,975038514,13268083969823701824
+bb7f2acb-ebaf-6efe-60d4-194077999ead,3708789030,15275130208663363679
+8811f27b-4edc-fbcd-e94a-64ef59d6c21f,3800449576,12579055722788940735
+033c10dc-4ff7-3f66-0123-1a15e664268e,2897896818,8593615903778260663
+1730836b-33dc-8ee5-bfdb-0d6c501a2dc8,2608834331,7638633280923851587
+3056d1ec-1b6b-bd1e-e542-c27c05177a9a,880753711,10835160427504571414
+589b26d2-6091-c538-1af6-fbfc9bc42683,2704124502,6313061638982713347
+b89f2a46-78c0-5b2b-37ea-8a4721b75f4f,638346412,10612878348535570044
+0b09ea02-645b-cbba-724c-0195417a0b4a,2539621749,9992993208194496837
+757b2961-260c-9261-b459-c5ed7ff93655,716202716,7627167087195762975
+6af09e99-8c6c-cb0d-7ff3-b8f7e6050dbc,1391839545,6575110299621237836
+a344bba9-3c5b-bc9b-e0f8-e29179954916,1963403228,6266485428913842117
+cea6935a-02f9-08ec-73bb-09054c21f180,2854430287,1309667599819032134
+9c4fd15a-9302-3455-f335-dd3990e4364d,1603310812,17958219377255371619
+58aa7d48-b6ce-c15b-0e18-cb70730d769b,2746173550,12692554923958335879
+f1b1f4d0-4df3-ee8e-dd36-7b854f02ea33,3361015589,14693140808508660080
+26342ed1-f858-8df0-b8c4-e768f27e73ff,3825043360,9324652589265108549
+bda906e1-e584-4c89-9bc2-b518bc6163a9,752296252,8454357242879181595
+db9c06a9-662d-1ce0-e297-5fdf035f7408,1288055228,2479946189919575681
+0990c0ba-6daa-6bfe-cf41-778d006f13ae,2138685283,14428423586953112507
+4cae606c-3690-b630-058c-1ab1dc66da3e,3792509721,17346562428404004425
+67c6e845-e87b-2282-3fec-be500a958d88,3418555748,14127121291714532996
+19ecfa5c-79b1-7f5c-8369-f0a41db25c1e,65003624,165748520380276826
+535f877d-5e88-ddd3-c655-bb9e5f66b90d,1855762997,16312988359405749564
+80556246-50a6-15c8-1c42-340a985b645c,1015746588,773631921084311564
+b7ad9258-96f3-8937-b4cb-358566fd626d,3099336493,17980576296421459290
+5272ab99-74eb-0e9e-94c6-bc7547757152,1112777533,3766905660824177928
+a7061fac-7dd3-316e-4adc-2c2adafd9df0,1947079433,13135058675732655183
+a8d82c2e-ee3e-1193-b97f-d8576e621589,2655276818,14082743375424161900
+e406214a-43c9-4ef3-04ef-d003aae8a5a8,3924646408,2863353511406785467
+3b1e5ece-a05e-0713-a822-0899a8d5cd9e,47448823,7847847721375920675
+3e41e674-eb80-918c-4012-2a54e045da38,2883021649,1758503087409413028
+b23aa60d-5490-cadd-f0d0-3ab4c4ca89a0,2070219509,17690635734806090438
+3e5d7740-8557-974d-1651-3ea502bf44c2,2271669864,4813443389578069637
+1eacf4ca-412c-6e9d-df0b-5d2a5de8625f,2541032773,7907780362626447017
+dc34fb96-cf0a-43be-6ac9-6fe122d41667,613855081,11208020487417875284
+2f32c9b3-43a6-18aa-cd44-243b0054ef20,711121248,10289090114860964782
+de086499-34cf-cbb8-d62c-1c7b7a4a3d94,1952655015,11361073083988152176
+769add6e-678f-1230-78a3-837d0830fc00,643241877,14059487747970372620
+f46cf7ce-c110-7d66-edce-81a9c54d8b42,409038627,13481238611315176042
+6cd68bbd-adca-63cd-f48d-415c258d5ad0,493599041,13650665196411137455
+4f35344f-de04-6d8f-1353-c318b182ab13,3892247515,16316372474683143306
+85ebb545-7b4f-aa42-bfcf-41dbf66c6fb1,961369513,866914492504427560
+c9a9dd89-57a6-2567-a73b-ff42cdaa383b,1687532144,7494364220614555216
+bb85c752-80da-73d3-32db-9819a2d11022,1151121712,10486019308073737914
+8d1d9305-f654-f637-0bcb-2108c6e559f4,2550286507,1651955767263692834
+c24ebf9f-8f05-2325-b669-d83c65bbbfb2,1040299764,14446673224007551865
+0ed6be20-8c48-90c3-44fb-ae85f7a467b7,420434259,2293678300484480788
+43761011-b4af-8f01-52d0-4dc909ffe9d5,2743314712,7317179510927086401
+454f2672-e76f-ff15-6948-0503ff08e35e,565748257,863056040214492207
+fc364603-a08e-4bbd-df59-ccb42d162d5a,3488862293,1544015453853314170
+8a3bb634-90e6-6450-fae8-718567d2471b,406477632,11976689959276949274
+43c71190-2aac-9a70-9fab-06d2f077a578,2450416882,2336812774831864370
+4611c50e-b03d-6472-33ce-1fb57d8cb5e5,1459868764,7431453066537626327
+a8aee627-3230-6c12-c53d-a0dca141d130,231213674,7667007219056724653
+4391d8f8-b291-e698-41bb-e4b729aa9ad9,714551656,13117354657093736365
+50a4dcbc-e21d-dc35-f607-85f3395a9e60,3393433533,13031952799030001911
+96c75a07-458b-1dc6-4389-d458a47ad2ca,3777651398,3650331875638730042
+a52174c3-6538-d922-ba3c-51430a8ac003,480137730,12115154505829167636
+288d652c-8e4b-6d82-d703-a416bc18355b,2962255829,6657070396277846172
+1691d3c6-2a23-ca2d-bd82-dbe23bc33638,3706064842,12444336277242001208
+60426dba-6fa1-ef61-7a3c-a96ae3e2bc69,3083379686,17203346278895418063
+6d463b9d-0261-843e-0ed3-13362119fe05,3659807554,14712411561922874115
+ca94fbf4-def2-bf7f-0204-01492f9ba665,1470381094,9235982490858406545
+8b7ec98e-21d6-b705-71fa-40b4289834dc,3229148624,1354127383580351497
+074c1dd9-8492-0094-f918-14f1c58ad729,3980380213,1273421235255478938
+9db7c153-b5bd-470f-fc02-8bf3d6e2be3f,4214264768,914255745245679163
+2a989f9a-b9a8-d7b5-1b90-8711be10de77,1558532112,16315824509335594693
+a5863465-f78b-8350-82f8-77cf527a8c6f,2638211217,435085568197323773
+c2a7a7b3-e089-4796-15fc-3f314702092d,2504077283,638335994320042845
+e531fe25-1bd0-946b-bd9e-cbc6826fe9bf,3419023445,14054053035757317131
+da334055-9f4f-0b62-0890-9a2d1ed5495a,3480460568,2564100524526986529
+67dcc7e3-b7ae-9d33-997e-8346103c6ff0,2472172821,11599656162004214934
+eef3489a-d806-4b2d-46b5-cb990ca36e99,322577981,16340749611942623754
+61f09d8f-d062-376b-4d97-29a53044046d,1136477202,7382856517828126717
+e302f96c-231b-b33a-572a-7847932df207,3381631837,16983927997461673923
+6ce5d844-f9e4-8f6e-ae51-a4c80639a27d,1516338189,9246631101613550149
+e500e369-ef04-d4ba-f91a-7c031b408926,1554748688,14001120619584887864
+7650ef0e-f736-90dd-899e-681ea2efd9ac,1155606437,13444197645888360908
+8e1ea024-25ff-69dc-2cbb-93263d5892f2,3791695752,11841875725978128468
+76fc0051-c2e1-05cc-c503-27cddf3e5f38,2134701929,17344297123047929120
+7e08c955-54b0-0a45-4b6f-f958f17e52a7,2249881490,10538269892163516809
+297f5a3d-b838-d135-6837-85f7e7018059,355148070,4114932953617456924
+028af223-cba4-8bd1-7ee7-3283eb7b5944,1077796333,613909221116085014
+64fa8199-1d9f-9c8a-dfb9-7c3b7e587237,3881202638,11961686166002293789
+343071ee-2691-7c47-243c-3932d25b393f,2972971348,13819146664968861047
+a3f25416-618d-0f19-a904-2d469d6108bf,2659578835,8731913957173071241
+accaf0a1-33bd-74ed-78cc-56ea49cb0a54,3351219182,6780924203540432625
+2092dfcf-bd8d-a4e8-3fdd-108aee858f37,2280469420,11405549624000825012
+fdc1fd0e-cf1a-cf59-1417-4973bc7f673e,291322120,14051028112351438952
+790d86ee-910e-c9cb-3737-8c41e84e9261,1390080723,6346099061320106117
+be97db8d-f828-034f-fede-15aed77e84e1,1714788886,16634183098501026384
+75772762-6e17-370f-0216-3b6465793216,528156541,2196300373846865217
+6d9eeee3-87db-0d2c-01f5-495ca1f6771b,3225887530,15482568588630383136
+34351429-4c87-cf6d-10a1-b4789eea5966,2426166070,6772599437329150198
+65472679-0359-4f49-5f1d-0ef28c1c5af3,824105980,5688489958607288096
+6757d381-46b8-c1e2-99d6-5e75d36e942a,3814994218,13224308609611328780
+edf0c95c-677a-b7ec-1c30-1d7eaa316494,2195330708,9666086045828415391
+7ebaf37f-3585-320d-553c-323c9b6b8aa1,2669680059,15928940372854783705
+93fd4d2c-f6ec-dde7-fa96-fcea06c19a2b,105982951,17041353086373511970
+693e2f2a-98e3-f1c5-f859-0d36cac7485c,2219707649,2106025305623687148
+cb328c4c-2c00-d9f7-4407-9c7566355024,1144242155,14497056588214622979
+8f7f0c2d-199e-c12d-7fd6-6962aaf7acf9,2993414459,5371347675198938288
+3a1cc9d6-bb2d-f0d9-95a7-fc4d690b0ad3,2668592132,17327428375129556573
+d2a74948-7654-c909-160d-4d656447dc91,4282930335,14886547352891716195
+f58183a0-b3bf-0e1a-60cf-c375dc33f38f,239257837,11269827104503898402
+9ebae329-9d38-abf0-9b01-4805d9b6c335,802820062,13715842770013600490
+d6c50798-fe4d-0263-c845-8ad4e1b22196,718146103,7660730492410463228
+0750a387-c620-9da5-4697-b9de71bb61f2,2480553130,6744718227409232070
+2a24d51a-e6fb-dbf8-945c-78064d328901,2543270071,2401350695742150981
+47819048-a2c8-a796-a6bf-d20fd918e02e,3101058075,1097952629989794363
+1f6f153f-6d86-496a-246b-4d7aebca526f,82431953,8480065749065412922
+e813b11d-09ee-05be-5c5e-925fcffef9a0,2641875468,10410868184795598390
+1fdef412-e90b-57b4-f016-362335d96aa0,1254238508,1938274689797033690
+19616de1-de5b-5ded-7add-f7dcfa05e945,3492802471,181783994813393879
+58bb7f60-9446-64e0-fb21-9c5084ac4604,3745804886,14626409248806373332
+379715b3-edfc-c5ce-5edf-a7f1ff451c1a,772368938,12429596206882097383
+66770d91-9359-4d36-b5fc-def7f96afe66,4098824502,4765035906752140296
+d348025e-784a-7ab5-a988-11f42793b8ba,1810029881,8818439323104108224
+8b759847-3b0b-ee58-4de8-0180689af5a9,3208660524,7912213030276720206
+1e676b14-db2b-5114-ee8e-dc3828fa5ddf,1693549937,9769305051927240492
+fd387755-a3a6-7c8d-dc17-287959cbc3dc,2452628203,16383485483014265388
+c4559b8c-543a-d53c-e652-fc617cdc6f54,3771049894,8022434450304054895
+282a9071-aaec-f1a0-b8a6-681e1c1193ea,1688229368,8475307981989193934
+0b7975fe-c814-021e-d108-44486bf27e83,2896049811,10592394285259724873
+a1e24fa1-3dac-da2a-cb2a-95750b048fbc,2273493321,2506206980265498154
+6bb3223f-118b-c07a-6211-2f3c1f949915,969485973,9136512914160483205
+e3d12828-a042-c3af-38ab-428123817e0b,1339022854,6206091483499648091
+6fd8423c-8241-392f-1989-133117edd8c2,4245676275,17345919452088209589
+1d0afb17-fbd5-ad5e-0a6f-165f7ba0d557,432226518,13490195210658896179
+2f4d02ef-8155-584e-0297-b249ad8a6f4a,449073935,3247584680230543836
+d9cd37ea-f53e-e746-04b3-e8bae574cf1e,3337671375,1735656133815523068
+7fd63198-f288-753c-0c35-cd853465cb59,2769647106,16543781749768524577
+abe58f60-6118-d364-d3f5-92eef4f46d83,540406837,3494899906861767135
+df14fbc3-8739-64ee-86ce-25469cd5d214,2511958888,10495544393290410709
+0080722d-24e8-020a-f32f-0937db7624a9,3893694370,953102699482170246
+342b4fc9-a644-6464-b076-68d0760eb20a,2690484001,7413823195010648444
+bc90e37a-0a16-ac70-c84b-7b5caa6097bb,3207473039,10918168861577115700
+ebd3f47b-6647-4b0c-800c-674ac9e5e8b9,4271481231,16554897442899912644
+d8428ff7-532b-5262-0197-bca3eecc8ed8,677575018,13498362161709150275
+0ff79023-9f0e-6911-2387-0976da72826f,3767575008,17331440407698401746
+769ab42e-48a3-a692-d64a-5818cece812b,2041425867,7778388102251184132
+3bfee76e-9886-0042-f427-02552c397510,3311749064,1028731304163373299
+2bf6f499-e02e-2121-7139-73957f0f5c10,1059051072,3888900722279908718
+07ad4d4f-b1b9-e629-7b19-288aa456f95a,987754285,8108361998058529414
+e41da17b-5b08-6a37-d540-e0f4b6ad175e,3132062659,9561772652658963321
+e1c052ee-4e58-6b37-4afe-b88fb2c1ced1,1533403234,7406604972616871241
+ffcb4dcf-42be-a296-66d7-2eedaa9882a6,448270876,5401224012061083332
+dc0d70f9-f2ea-b51b-1690-759d0ccca9e9,1037398760,10295421185251149664
+caefef61-4748-8bb3-fe63-91b4657a6712,2192792035,8916914419033087507
+fca1f029-5d8c-721e-4bbf-025727aeceae,1888279226,13864982903247186709
+abf35e9d-eb57-7060-ae99-546d5c4ee31c,1873651539,8721851407611445561
+7d7de4ab-50ef-b5b7-23cb-77c5d5ea8124,4259989894,1694152541110175532
+3deceb8c-3ed2-379c-9baa-e00d1ea90f44,4053494676,16024662313648017359
+157d070f-9ecf-df17-785f-6440f433760d,243246122,10995652774026717918
+cd5d6e45-3c7b-b755-6802-7eaf2dc33578,4169985206,11544119746078363663
+4c2a3b2f-ebd8-5241-d6f3-318fbb3da6b3,2193533005,10703769718043783123
+3fe69fb5-74ed-36f7-a95e-56235b821c96,253072542,4009664871349036152
+7a9df703-2a01-a3bc-98e1-bf37ae88584b,1905144660,6422493340834854224
+2fe9bbb3-551a-8c0f-3242-d6658e2d2ad5,1295616406,2505371116797885185
+cea69b3e-1c9e-db9f-9890-1e48c3bbb93a,1744237146,4205558397505374011
+7bd51a6f-cb6e-4f42-12ce-09daa063dff1,1690006340,6648591673634346601
+79a708fe-a278-b601-9fa4-45af1f65c8e0,2738352248,2320945344655517839
+689b24d2-6cfb-f3ab-4fc1-95c74e6aa5ef,571179478,454393807390639938
+51988b86-1435-41a8-eb25-1963c773bb84,2626370572,11948247857690305394
+268787fa-4a62-58dc-b474-ce3e931eefa5,568362534,5266234697762153335
+01dbfa1a-913c-93d8-6257-7b2f3f83b44e,1835915026,7550661418759916662
+ae120da7-48e1-d10a-604e-695015c41b38,574121129,9430883953950811657
+e24a127e-425d-47b3-6181-e70fa6c77a12,1742506209,11356355548552856221
+2f0669ea-f6b4-f798-3911-027bfcdd2f8a,3215379800,1293556547522916081
+0d01d509-9a43-b916-7694-c1502060a0a3,1475271881,17583387851681425026
+bb97ec8b-5ebd-4ffa-03a4-cb05ae276ce6,1874187570,861880361409111139
+9c9505af-9578-cff0-ea90-ae9c921e9433,2282893476,3120565770630577050
+93dcdce2-0c03-96f8-2933-e97d8185812a,1163969286,6805977290386074806
+c8103306-6e46-d1a8-1ec7-a2efed347c72,1317894488,3811223841196966337
+3cb174d0-05ba-1f68-6691-d01e473e319b,4124365715,16268862163118445183
+b20412ca-563f-9ce2-fb72-0816ec3864ed,369963423,4891971747728589842
+0fd7c2dc-2a17-da91-dbfc-f46167d0635f,1311345091,991049695123751584
+a96ab1bd-8ca7-cb11-9c52-13744f08ec2e,274423835,16773109377520542956
+4b24df18-aec1-789b-9c1f-4ee4069ddebf,1898505545,10079576778164614756
+0c768935-f4b1-e606-15c3-977711d4e3f5,43614381,4198955134467792333
+dd02df14-6fe2-759c-7fa9-fc8109ebd7cd,1491653332,15455491104294490700
+dbd9e0ba-f23a-0ed0-d690-2bd301bcf9cd,2015808746,8164253121128431995
+948a9e3b-ccf2-cccd-b975-0ee997a77ee7,95009692,13990145046453919766
+ffd01829-6992-6398-7cd4-cb6c1b3cb632,429554329,12526358779499749338
+c2383bac-0002-e57d-b695-073d3d1941bd,4091299603,4904109042226697328
+0997e2d7-9709-06c8-cf85-1e347f1af963,1874547613,4526204591919967676
+4d6d11bf-c987-61e9-7dbd-d441d71aadad,2490019101,8550150072798551759
+17c62b19-8c05-bd00-a391-b4e7d134d343,1074488066,4981302798946414045
+4cc96bb3-f918-bdc8-a65e-cb45470d330a,1067885328,13537107286892594672
+0bd80306-96f0-43ce-4224-92277150c084,2595577866,10473662646470660611
+e5c9145d-4c38-fe34-111d-a46bd987b0a3,2310515913,970910146443586424
+bfb569bb-bbcc-44eb-6c63-23b55c363120,665596717,6442087206539433676
+2a44a4dd-1865-a4b7-b1f0-6980215c2b13,3407308476,385421747238582617
+352be1d3-4541-b452-d3e9-21bb79bdae2f,4025813860,14771154931212602845
+60dceb7b-3acf-59b0-d834-d3d0df31edbe,148678287,5656267118424254988
+afe2b5b2-9e71-a30d-ceff-35b3604bd5ea,1547672715,5627334192236885780
+fd2180ca-86da-8def-b744-627c89e97b77,3897728810,8713739484812563583
+8112ce83-11b6-4861-c287-e4ff2c345c74,3413736858,2718426924606097570
+43bfe8da-c700-daf8-7178-353e6733b2df,1943040128,13805805041255316762
+3f7e0c09-384c-240c-6f84-e787c3576f5a,3596353641,12225791167768328152
+e82cbe02-e1db-2085-a223-2f545ee772c6,2206632178,4309986363135931097
+408e84cb-055a-8e13-9249-5a61fe096177,4112404786,587636027964544358
+5b27d5e3-67d0-1f20-ac6a-3187a8de6c0e,1319832933,855146419101476758
+960bd7ec-393a-e412-3a12-c60d5b0e57b9,2412943850,3796905400801751912
+bb3db5ac-8ced-8d47-b7fd-9836343e75a4,2803140909,12278666538713675781
+cb1c0877-b5d8-6e25-ddb8-c866cd8ce8c6,1412199958,11350064778628887809
+17451c98-f2c0-a5e9-67c3-115dffa0cdbf,1629181348,4963741595129087106
+8277e305-9272-b4d1-52cd-928ff9e75a23,1262351758,4161136573304211364
+736d8a82-673f-4380-ac9a-a3f2d335b5c9,3683620400,18227158126517176298
+40a4e455-9474-e619-23d6-39537b4253b7,3677470402,13365249295550344038
+6c9bed21-57ea-3470-42d0-b6caa1a8225b,3776159293,5823595176484905218
+26c494e5-2781-6575-9478-ce69eacae3c1,206061740,3257495003340844162
+0a981760-16a3-0405-7cfc-cb2beb5d1121,3174997970,9912127952064305639
+082ea855-7f96-98ba-4eba-c2269e19670a,2136683404,9201879836660236248
+6e1baaf4-92a0-059d-5f49-a6304a72dec0,2750897960,11712130747878918136
+ce0c50b9-07ef-ef0c-95fc-db6be5f60cf4,2090100388,9083748207815928264
+f2efa317-23f0-a8f3-b819-fca418dabfd9,1547034530,16685004423844600533
+6172be1f-acbc-90bf-fcac-ec79bbf3a709,382172835,4816439588507814875
+1b39b63b-a101-707a-148f-98e63f1e7964,3011725384,297507758647396272
+8fc4af5a-1319-3051-f015-79aa4fb64414,1056042796,18434778487960927571
+68022a42-eb09-abe5-e1bf-4a7dfac06e3d,1517660733,11331442201227527031
+49c6ba50-116d-a851-1fcc-fbc2df11e4ca,3673498833,17697587078946451072
+c3511c4a-a3f7-5d84-9a0d-def183e7891c,4030477224,7133745326201929806
+8108e76a-159e-d298-1930-a5601f13cbee,756916012,2314619510947175317
+3c9cf614-41b2-30bb-ca03-3dae683b540c,4105742892,4055853919308777649
+dcc18dff-9a33-dac2-fc49-32e6c8760a9b,1164742427,7933986271827116434
+44f58149-df82-d5eb-2e90-cd7702adf952,2615737293,4316211007436206618
+1623f3ba-3d06-303c-01bf-7069d5b76a02,520919466,17723966849581338559
+c1b07d8f-9866-1e3c-a918-4644527b6878,2133785442,17863268339725725398
+7abb48c8-73c9-9a6b-ecf6-5d5e474c5249,3445058757,18144908253265059353
+adccb735-ef0d-4974-22e8-d8806d3518de,1797724689,8856196653534608888
+ee0d306a-9ff6-9583-e36a-176a6f62634d,33216284,9833610046371598225
+9c8af719-4be1-3a60-7677-9035e7ecec23,896263244,17199429539419087532
+c2e089cc-479a-1112-4f7f-893f54d480a5,1452879234,9372391818357971714
+a33351bf-28d1-ebc5-fa92-7df12dfba6ca,2578694253,7042200985065201560
+80b8bd22-9444-312a-476d-d0a4bd1ebf5f,4229548274,8549595654411569004
+1ff4ec17-f492-010e-2c18-a6c58c8d3e7d,1782952993,16425209167250980285
+d2b37e02-51b1-264b-ceb1-0934ad091a4d,3344390831,241995509148278215
+f2641c57-f018-3f73-1c6e-41393553be84,1518282138,16392862588628472696
+439dc0a8-2a21-6cf1-3c85-0ff2b8148e9f,4236691818,7878642068352682684
+5096ec3a-1427-4a3a-a304-ec324dda6dd7,3160800494,6036756145515785957
+28594f97-c65e-87fc-7c6a-e3c0c2dbd9ab,1165649613,1761188619175647186
+50fdb8da-0805-a755-cdd4-c7322e7444e3,713099122,14026013847933819766
+d5e95621-775d-0b23-9f7b-c86941c3d1f5,3826935481,2644572608950791850
+96162b90-f1d7-ade0-5482-569409f4a36c,2290458438,18054905498898435063
+43399144-703e-e1b2-86a3-32d8174e9801,2097694655,10295328319262362073
+08b03226-55bc-fd31-2e18-82a8f8ef123a,1207272012,17177594867456674615
+ae2628b9-d8cb-23ab-bfa0-df0b70feb197,2487572408,6401187345866113706
+60b07385-010a-692b-6b65-d5294b6e8505,694221349,296709403703198138
+4fd79631-f90b-dbf0-a03d-ae329c33b5de,2976379192,13695077472292017574
+b7ee834e-0d0b-af97-2fae-8ad6e98476c7,2617446540,13869763603370821663
+142d72e9-f8e9-cdca-3b86-f6d19ed4fe54,3920807380,2286399190913971430
+02811822-07f4-cd0c-62bd-8970acda2133,4161455631,14861180713474607444
+2ce8fcde-3900-c5b4-09f8-c03724acec90,2772603029,6884156626863119505
+d591be06-110a-4c45-d6ae-dbc8bcdfce62,3477727887,11219020821818378462
+cc1ff188-9451-9ae1-d5ac-73ad615bee3c,448608595,18293250633241564051
+bd93ebb7-ab22-e99d-d503-bb03f5f989ee,2916113168,13909014224359957391
+ab0e0ef6-5da6-df00-3b29-113d0d82517b,1278681343,15452320962061878036
+af259d1a-3851-bab9-fde3-53505eb25036,2928418840,429069399256032504
+83631197-aab5-ef82-98d6-a2bbc9fe1cfc,4202321146,12284309459404346474
+d0f7d660-2e29-2896-1f80-e98f7b1822ca,2904483160,5625720977108353943
+44dc51a2-dac7-c0ec-531c-dd966da59ded,407955188,8173218647175268046
+0b555233-3b44-2cfc-7a73-b8347b4ac5a4,2628001732,12155059957974309312
+b962c1d5-1270-9536-dd34-7b180398d3fd,2175524021,3835936665272352104
+181de79f-ebf3-9f15-3756-bccd87183a9d,168895669,17060014465814041748
+ad342cc3-2066-c4e6-c7ab-6fd2cff03092,3129475988,8124922113679310480
+f2ac823f-2716-90c9-b4ec-1456ef0447c5,1849474187,13063543338626302747
+72914667-68cf-c020-d353-e26831351dd8,2301702368,1607160273015890028
+6a3f2738-02a7-99eb-c5b5-752b7586c6d9,1064092523,1130947788829470912
+ef3d46a2-d1dc-19b2-33bc-b15f3a572593,4081029707,17360298663170546201
+01d43256-faff-7031-e47b-cd012569cfb8,2049112177,6662003957671130093
+6800138c-7ea0-71bd-f252-e31ea3c8a5fe,957645278,16090690668019117206
+d265903b-cff2-66ef-29ef-79775ca3e546,3709825284,16588334734437639901
+ceb60310-c210-cb27-e388-2d10f7fd9e44,3175461865,7429228358592131436
+edb07a2d-a161-56c1-f317-3ffd207047f8,3201351808,47501846827376836
+3e909f0a-8cbf-5107-1334-3a853a979e05,2338664686,7342472011302083709
+7a1f04cc-f9b1-8fb4-7caf-6a72263c59c5,3548783028,1866298357429118993
+6d56b5ec-6a7f-a228-317b-033b3e318cc4,1429936382,17532953603746725905
+fedcfd89-1cce-5851-614e-cfa59d035d06,2142727022,3544233243621359580
+b2984876-00f9-ea59-9d30-fcde71a037b5,2434064220,8683964357718210065
+3af684d3-53a9-dea8-4e1c-f5e3e5481207,547776344,13346289225665456099
+7cb94895-4e11-dea4-780a-c20d2ee46892,2751074079,8903233998436420071
+353757db-2fcb-bea5-aa98-052f6a49f88a,508878634,10871698351838220625
+2bb7aa98-2625-7d54-3070-2e4f03775a35,4078164333,17080449341097618431
+400452b2-8477-9fd2-b898-58a87b8c9507,3566546295,12493026636524465795
+0739e324-62af-facf-28dc-41f8e3631227,186381684,11353781392549892533
+480744a9-1150-cd4f-9aed-2843d18fe4fa,2797291265,9248009814430942269
+5c8ae53f-ad45-3416-1e6e-90cf835421df,3333573349,16328025806816031597
+97940034-adc9-3d89-787a-34c15153c95a,3331158028,6783405595019974847
+5aeca8b1-fcd2-a087-a556-512a738c7d6e,3648609603,16674187437476555183
+95502e56-548d-1a94-2bdb-6a01b638fa54,143624537,3105861013354258294
+75a4770e-f083-4ee7-f9f8-c44c50e6b96b,3955501481,127906352749489645
+75b1d875-cf7d-e04a-9540-2ca0decd9d11,2788669696,5837788771887674029
+7f2674c3-ead1-5fab-f079-114bf801e0d3,2898662936,16481506487160372224
+31ea6c92-41fb-271f-66f8-a41a02955b90,2519271137,15071254249638057904
+f9781b53-b444-da3b-aae3-2a5856a4f00f,2851444959,14531918757114091312
+5d46bc0d-5af2-8fc9-cafc-a5783b691692,4028392075,16999116298273277799
+00912683-b516-6b6e-1b64-3fffd2c829f2,32831719,16196053986159379472
+2ee63060-2d64-f0d6-0a13-3d17e10fc3ba,3809207555,3474054212885739942
+0f4e66ac-226a-0867-7b7e-918c3d40f10f,2522680412,11369098395265496976
+9c769ad9-0da1-e36f-5db7-0b8eb03f30da,3629603454,15618091091482950047
+e8c1840f-d454-a573-c2e9-b45c975e3a46,3639710707,6399692836459498906
+fff517e4-97c9-660e-5b5d-8b995496de98,2234048186,15782548264846376530
+02f1b213-79a8-3896-a4c1-d510fda4f57d,160445871,11852279116802179194
+eec27e54-dc26-4647-18c3-51e8e3760bfe,531603579,2930816397653460375
+4415a1c2-c7e2-6cd2-56fc-560fd9e0105a,1826853628,2618165175036368743
+5d23ad12-36e7-f22a-6970-b10723b3c950,1581693,14571867306916530224
+928d55ab-bdc3-0afd-3b07-242756694efb,102537572,11012285987749498916
+55fcdfa3-91fb-294f-ab0d-de6e6347d91d,1650682152,3930957739059731999
+598441d1-222a-ae21-0d52-50c3617c19c7,1254397836,17957098507311487391
+8b3163cc-96d0-82be-78be-745ed8aa4e89,1011995089,16154607069383713931
+0f46480f-ca97-2672-050e-94f9260fb65c,3220849456,10648071420078268276
+c187fea6-8553-a7e3-27b6-cd7079e4ab4a,3482473074,11033036128148631782
+883807bc-dbc4-5b35-fcb2-89e319ee7ba3,4239256393,1773435713660900468
+b384d758-a1b1-1b36-ccd1-697f7d8ef39a,1980587260,10817094740854660203
+02a00d4f-04ab-9aa6-5f2c-2ae3b83b7f22,772611779,736336576404830201
+08bdd63f-734d-3a21-d308-f4783b5024a2,857693588,14768091078330408537
+0e0c6f5e-104b-60c0-a07b-7dbb1ed9ae65,1201938838,9407967519907991643
+a8436276-de1b-3dd3-5c55-5f52b88e6a68,1651950635,15243924067246930713
+62ab459b-b011-d17c-adaf-7b348366371f,3350051557,9049746205173850441
+7aee358f-4134-bdb3-5a9a-c20cd537e1d7,898538947,17959126793614887910
+113a05d7-8a01-3f90-c826-73718d0e0d07,743178375,72547180944425347
+41ac5d53-b3bc-3a56-dc8e-9fad0348cb4d,2946638648,9961787434059713137
+484bc2f4-713d-1dd7-9725-73b663c60448,248665598,18151500187960538104
+5fc7f00c-6c22-6761-3fe2-88f53e4a00d9,3755195948,1359273989690818026
+5d318d17-65c5-2be1-b766-e318e271cfc9,2528740080,2422462503858329052
+38a26728-ede5-60c6-06e3-e31741dabc94,3784157956,10867802994229687797
+356e29fa-eb6a-af30-9895-d2e44299c918,3784881924,14244652257998085143
+b5e2781e-0abd-93bd-e5a5-3651abf2ca74,525840002,6144072459428484237
+8fd0249f-ff3b-2a9e-8a6d-de81cea94e3e,1335979055,16902570843028776291
+97a1f4d5-c107-b43d-cf4f-ee76491f086b,2530954346,14137548156287101236
+893211f4-6b8e-8e32-89ab-634981a80cce,1452193962,3650358483157894200
+e64145c8-5d95-3781-4eab-c6daf674a362,3740366287,11435730141554418519
+ce36b488-15d2-dc00-6224-07b0fe00777e,782391874,13486512717619616604
+67d55328-4918-a17d-995d-b381a0d47eb8,4116968448,6654125181049675519
+3e2001b5-2fdb-f1dd-1565-62f362c471e0,1911457271,988798345533862962
+d6b598ea-3e1b-09d8-4133-a442fb2dded9,1709734079,8152017331980504133
+fd8c9d68-53d0-35e1-77ad-bf8ff64b2889,418957270,1762484866440736036
+22021b13-8138-de63-314c-526e9496ef04,4132800069,7113376511871603160
+9165a04f-7cc0-260f-1a00-e4f452cf4f6c,1228770623,7598201328699055393
+797359ee-884c-63b1-76bc-5ebc92a1036f,6722633,17876468604646276237
+ecaf3206-c0d6-a988-400e-ec5515231310,877676722,2182628245746085093
+5f17de35-1cf2-d11c-3bc1-808daf2b209b,3521831767,1062145765512330207
+b3520ea2-bcc4-f7f6-6a87-25824a3f2f36,2154661337,12934693529502749201
+e8a01890-5d9b-b518-cde3-fca349635afa,1165048077,501451756677138618
+1099df90-4f05-cfce-3674-2cbba9d65ff5,1611410649,10681019478309317886
+03927ede-613d-8f2a-0866-1fe1ddc1bd4e,1183972754,1881477776073701016
+b2b31053-7bf7-96a8-631d-a3fa4491bf62,2468688705,6680421091465458180
+54523171-6a64-d907-2784-c54a6a5f7e5b,2360071051,8142541092166304536
+4c90af1e-7a76-1ed0-4fd7-35bee5355484,1221283832,463654854604993118
+3a551543-8c8d-350c-bcdb-70f436c105a1,986767547,18040366133147346642
+3d404adb-ddf3-e89c-7eaa-9065e5a39da9,2698959744,17098561623020554438
+d993963e-d8d8-5ee4-4b0d-3d8356e6e5d6,2817165146,8588341818788646892
+14d09b6e-07ce-2c7e-963b-22f2c634d872,3541416470,432675149346297463
+1bb5246b-bef1-f5f5-4888-c7ad31cd20ed,1453147470,2724170145147846656
+9acaa14e-d674-4c26-95c5-53d6641240a0,3218559917,14999094653660545113
+79b9361e-3cce-d3c7-cbb7-a86d416232b0,4221995433,157154221762406926
+58a55394-e8bc-1e63-9a67-7b89f4fa2d73,300964657,7827163078936996068
+50dcf887-765e-c972-5d39-eae357e5ad2f,3244971563,11587609779776259731
+897b6f73-8735-da73-0397-05a8a2f2b3d3,2320600011,8993903289378236695
+4d947296-dd74-4459-db5f-f7384f617383,3262865453,17277055088696510154
+10d91c7f-880e-a4b3-c9dd-7e553a41d96d,360718075,656327894811419214
+21836b11-a795-e4f4-341c-32c256b575eb,3607650512,849030369347569348
+5b6ee0e3-ab92-a69c-76d7-4e0ab3186569,1831066609,9616559530385922479
+e0ccde8a-7410-b9c5-c99d-f0294c51e52c,309993617,1891980596464816136
+0ade85a9-c33a-7aae-3455-2f1e9c243b39,3578800346,17942295778950918230
+d3357366-36dd-e469-4a72-8b72b099ba80,3503600506,12592030099271691962
+b6c95a23-bb3a-90ad-56c8-50f4a8cee056,3213852317,525404330477060816
+7f115417-66e8-b9f4-5d8d-db0e31a8129a,312106869,2115480544490642555
+9e7926af-d0e7-5b63-2b07-a95af44eb67c,3974525673,18324279626005486068
+9b92cba3-02ba-df10-5474-9f15c2478fc3,3596972762,3771222468333117690
+a31ae81a-47fe-fc74-63a6-0fdf1f77690f,546912828,8360034732850912654
+ffc87f3d-33fa-56af-0526-d49064b8eb0f,3859216484,3794915357533430962
+3e57098c-0b69-9d91-6388-a4ab64d61d0d,1238418002,15214432615511798899
+c128289f-8188-0d32-0063-c821c834e726,3905256204,11815699240907941338
+1231b2dc-8cd2-ec2a-5729-fc47d79c95cd,2157161176,13455232840731504997
+f9e9dfc3-2369-c719-1de9-27484563da43,1478636442,4117494100275124911
+c1da462a-0ba3-1a2c-eff7-d7c41c81e41a,334651363,6793254634423239331
+3a54702d-fcf8-11a1-cb20-9a76d1778962,1635323931,16801550300834594952
+0f4bef0d-e509-40d7-542a-adee5d203116,776527485,10514066119095546037
+3f209199-a4c4-14f5-3985-6c1964858818,4167404405,3513185669375918410
+ceeda26f-ed45-9d5a-ce6b-96a4e4d615bc,3256780168,1763762148060610860
+4e9e3ed0-302f-4954-f46a-53e9cbdb5eb3,2447390223,18171130164616672440
+4bdb131b-2c0c-4b60-a944-579d8fff4785,1173182692,15026346704459396524
+b01de904-96f5-b830-527f-1d9fbf6ee7ec,3692889949,11529217272638642461
+3c3c0793-e338-8f05-8222-525da18f8cdf,4011116322,7550977993299520889
+25ffcb40-549d-200d-8210-23224bde461b,2122064689,1792094458669173197
+bd719a62-c919-79b5-f588-2ba1b727ce0b,891724124,8692819531396933513
+196c2d57-7a7e-48a9-360d-e2243a75974b,3249157055,6148072821003069203
+33b1cc00-e81e-10e9-dae9-dbb5b2552f41,224597800,1614875130491100163
+b94f9a87-ba29-f7d9-69bb-b92c8259b17f,768589463,4353336516151806120
+ac89dcb2-5598-9ffd-cb59-a6cf79b39113,1052783652,9522737469768033905
+cebe814c-c9cb-b45a-540d-2f4b9a1697d8,236297495,13937831107514749048
+e89c3a21-cd86-0840-3db3-4f5ecad963ef,4289090907,7806528284745907848
+cb9919e5-6993-8143-70d8-f0259de35232,3709706811,2927487750571302882
+865f62c0-ab3d-b57b-def3-f26e276a34d7,3165739070,12270665263491448334
+c9e017d0-677a-0cd6-e771-9ac286f56f1a,1597782341,3202501371138220663
+12b741a8-c98f-eae3-a122-5d8861a52de8,3174218910,7671279378164155548
+1386fef2-651d-2273-3192-b29f7db70064,94201972,16227097303020910487
+3f6058bc-950a-793e-7b96-27aa388bb19b,29209079,16233598322498707673
+0dcb3e39-73a4-15d6-dfe6-5f221eaad475,3378873201,7387254038549019542
+68d3c727-1d5c-66d6-5e10-7cc336b4927d,1267585301,16478944612567820188
+728b3c53-e2cb-87e3-7c70-021d62053095,1793182977,2892363424870161236
+37d20907-3780-6574-1fd2-d89ee6818198,3571530858,6786739608486029158
+9cf66512-d406-e923-9a42-a395c8185a2a,379956920,14120189514939221240
+25b7f88b-3c3a-5232-7633-14b7d0bcc9b5,263479152,2968806072167742604
+1909bfba-7e3d-f1f0-e63c-96947a7f63e7,1892400946,3807173508500014853
+3bbcdcf5-c18e-d265-bf09-f81ff897798c,4243473130,4246782267623715566
+ff91ad6b-89ff-e09e-c562-d05cd386c1c2,853313735,1499350752656994626
+0a607549-5f29-b70d-5a77-d0a37663ecf1,3217503075,11093870629178284399
+308856e2-3b27-196f-f5b4-faaa21969e23,586001948,3250714269016870370
+aff4cabf-3915-1ed5-483f-109da0bf6254,832740952,2432226171999766824
+06bfc445-8ca9-2485-5859-0572a21766c8,222848858,4573435465659976897
+9a3d8d62-be3f-86a3-c4a6-29f3cbeb4d32,2983319404,5131337321367038980
+a3e184dd-8874-c6b8-3f06-5110b2ee059f,2624342428,17002039866927126579
+b4acc3e4-b960-7144-8759-10616c0abe3b,209114870,12603443095502594273
+1e50b51c-5cd6-d8fb-56aa-e1e0d139790b,225505560,1550155976369598357
+9d256190-de24-f945-5c05-256b9a255219,2554556453,17086232719636247743
+c891e08a-c8d5-1b7b-c29c-5ca39b17a8d9,2711528671,2324093123619054838
+cbcfd131-c3f5-8f6c-9e80-2a9c73ce4c21,1106036849,9083249880698063038
+e682f145-287f-4e9f-af05-274b03249d9f,3219959915,17528232080748258803
+1e1a7d5c-1b0f-9c92-2753-f06184377aa8,3815373968,3457170691281196213
+1bbcf103-651c-6280-c5d6-830ab8182002,378196306,7074218132044487709
+f1d70cbc-c724-5584-7258-ee2c1568959e,1905067506,14886258798031174985
+1eb4b8f5-e52e-a72a-a8f7-d2f39e17e9d3,840938551,10407995816506916725
+74acf000-8bfe-0edd-cca5-20bbc1170f0d,3781266939,7867690998792421278
+24c4e1b8-ec98-1ead-2dac-264794efb927,900193910,7758146680594535568
+0d946b8a-7f37-730c-3730-e36df765d244,380427745,16067221900353670519
+ed71242d-4130-c8f0-ad3a-ea8dc4810cd0,440499326,5181383400712040455
+49ee0316-1769-6fcc-564b-375dd0d90ea4,231950420,17156763836210903941
+8f738ac8-ffb2-c08a-5247-79b5362170ac,2511002715,16243504098669702783
+97dba3f9-678f-4b16-681f-7e2fb24904ab,1007297140,6181924052182784691
+00d4417a-1c5b-41f9-606b-ed54d6d20090,3656316354,17554842992323271761
+cc3ea521-919b-c555-6f02-66f4e1b46608,2786065937,1371061759935990794
+256fe749-186e-6dc4-8d03-1f6335302ed5,1659212993,12830043846904446398
+12b2d7a0-ba6b-0fc3-6ed7-e29563d50bc9,529450790,3875089987374397840
+f5bd9137-c320-e85f-eaeb-7c1d0aa27f70,3026210375,5672212037528368719
+6d5e64c6-e081-6e2a-cd0c-15dc5e061d3f,2247608224,7882209725039563468
+c7229c74-fcea-8049-0fba-157970d02312,8758136,4687052525980271512
+5eebc4ab-9b31-0f5f-7329-aa0ba430cc38,169254779,13574305834236072119
+017ef844-80dd-ac9f-efdb-33752727922d,1543949664,10481666332932439517
+d68cbb36-2ae6-4e04-59a1-03e5748c5152,605694527,1570389321584467010
+1c3c20ba-654a-f677-1f58-45a404e1a69a,490936830,13448377406724871814
+d14286a4-3832-4875-7c36-ecddf619bf20,441400173,8451297702832381267
+f9ff0562-e887-0bf3-d466-638f6765354c,2911070694,10283240026626545681
+203e0d36-f855-6610-ca94-4d63f7b24891,2218421534,18310577514479993513
+4924b033-9f79-7ec2-e004-349c2f0ab947,2046068566,13938915218852075699
+1fa2d956-acd0-9c87-7689-96f5b5ac9134,1085486086,247541714057671708
+18180743-a472-715e-ffcd-98c774e2107e,1388030632,17536941350443907269
+c640f970-69bc-77d2-c695-97aad332a6e7,1774838219,10051238245179051534
+a684061a-cfbf-71b2-4cdb-d725223da7d8,279538594,3748859435736357234
+5e6dea92-9bbf-7b78-b3f4-0e48724ac2eb,2321721945,13607225539434871981
+b604eb04-7c2a-6703-1ef7-06dc4f0799b1,1818473715,9656189063857502981
+8a477563-892a-de80-ab11-26659e33f4a8,738976760,14694279340587254745
+20ed3bfd-4614-627b-e2ba-7e57b5df108f,3213364051,16746744593496815759
+837d1c8f-ebdb-a728-9f31-a894dfeaa891,4137540218,3132510892986201182
+c20240f5-a715-6c67-2e3e-c44ccf91008b,2414408623,1238453176594901281
+887463af-19a9-0d6d-82cc-2a69c887d09d,3186118194,16116691923351429745
+48f1e0b7-478a-65df-e0ec-d128f9f91537,1674288452,3508247543989932892
+dd67e8ed-e70f-feb9-bfe6-c9d1ee5eb84c,1042344256,14176512598443243570
+1d8c8178-dd32-1303-8145-3de19d5cecd0,3181234319,17508813682071070768
+fa654994-40a8-c0b1-d484-b6b40f67e65a,1008702749,16211393497679964782
+8fb34230-0883-079c-198c-69d4b950f1db,1526146265,2410174511891562143
+6d43835d-1114-93c2-29e3-8fdb1d61a7a6,4176235227,232133832828124085
+84e08b17-3484-ee9e-3b00-13bbe296638a,3488781787,7087130981036994389
+579bd8d5-a0c5-98e3-2311-829ede03de8f,1804324517,15534670319863947760
+81bfc8f8-e7c7-3bc8-2038-0cbcc3e73428,2265963458,9053287323390682372
+b1527a09-3b5d-97b5-767d-d89205f5f305,4032144684,4744032030301358884
+250d7c81-6ac4-f094-0c31-a829eb09f9b0,2106265732,5154234577426880509
+1dd2b527-2133-8d72-2126-5ad0035c0613,3502856384,9204126211437283556
+a27265e7-ca19-2cef-424c-7446f8bc5664,2992569602,11595324325023953385
+68209e98-331f-97b1-1078-98e4fa8f0027,2017451621,16683117006033066253
+c88bba9a-a94c-8336-22b7-7319f462ab7d,2866539879,995553891118928547
+87e3121b-fca0-4517-c0ac-4d5a1608031e,4169100161,7502449299972054848
+b071cee8-a005-a8a7-f373-9fbf4f29603b,1448053525,578638993193557261
+97d00b8a-bef3-d520-c156-857449a1abc7,2094203806,13943155913891843819
+2c813874-5204-cc1b-5afe-7c4244ff3c03,800537993,15684918275062477064
+34893e38-d42d-a0f2-ff29-e65e80e95ec9,2727841388,18126401721149821748
+5f5aa199-7ca2-9382-d208-081227bf9e4d,1958727824,635469971317744452
+bc826e1e-f5df-5f40-2798-6bff178ce7b0,2132386821,12468798167666994423
+5f0c3885-8f7d-45f0-68c3-347efb2aa17c,438132048,5081797737532404035
+87c9b764-7fcf-9d70-1e3c-10db13795ae0,355194536,15802571459253058415
+34e053ab-ca66-d0b8-0948-bd1f071ab0c1,1478863453,5508051381586685958
+9ce6b321-f17e-a381-77ac-594944cb8635,2437780010,5770515622413010712
+6fee9aa5-0ddd-9b11-2dac-dcec39e7a091,2426761233,11234527452042828811
+631b1567-21f2-a976-066f-b11730e0918d,3413383082,14133492103074932733
+367b2768-24aa-0222-9746-47e594a52cc2,3834087095,13995834774190310522
+41178688-76f9-2392-2bc4-d02150bbcd02,3663480511,8369864071387330698
+f8386851-9033-4f97-4e40-524eb489f661,3068864417,16799484675134623796
+0ff3b9ff-4a90-e3bb-9f10-2022f10b7d06,2274730091,409767649914812697
+0f9fd892-13f1-b6fa-5f86-d5d8d4c0644e,520571496,8703301223588398926
+10794a2d-c8ba-8a9e-fd99-c826ccc99f71,2850562515,5993837676070697038
+901a20be-27f1-56f0-221c-8047252b1ced,903317249,9411784394201685469
+a2e5ccef-154f-c65e-dbfd-6ec3e75a76f8,2796551414,17591468163563730676
+b86757bb-926b-e417-42c8-58a7be2e2005,1700412489,6414902032976193166
+fd09b175-2cfa-25ec-7271-e148dcf877c1,58926342,13721735322577309231
+dbeef6e0-0c59-02e7-6180-e961bb9ad845,3253202476,18404639358712756761
+f836c085-2203-0b83-ed53-bc14cd64b6b1,2557343804,14529836280160366324
+49938a73-342c-61ba-cd8c-80dcaf4bd6a3,1340906062,17812549163587867528
+88aab209-f8f8-245e-6b4a-580752b889d5,605984316,3596777941637252619
+5c6886c8-baa1-6fe7-25c1-632142e7c1b8,1072152614,11480374910858323995
+29695a90-a494-ae4c-0bec-939329b107a6,18391718,8697533819370464282
+a14686c3-e582-f0b1-1bf4-0b15a0d8ea12,4090843916,14205083707830375848
+c1a9bc03-c7a7-8121-099a-77db44493e0b,1893895214,5178460024420262073
+210a34ff-e7c4-bf78-866b-38f5e668e320,636547728,5930532243176304666
+b8975fa7-b456-69bf-b915-756073320758,1384741916,9944615460993259537
+49ca2fbe-14c2-e665-3530-41e962fe99cd,2538833220,17932198105879216813
+9b1a6c92-9683-41a1-b5b7-f41642b2fdfa,3151178025,3951317254379472078
+15249847-211d-d355-390d-842a4c99b10a,3775659585,17168362934688134150
+a7a7a469-fb10-a6c2-fe71-1d767e71a975,277313519,4285848820315215603
+a0ed0bc6-580c-4323-fe10-d42c0f0afeda,2179916060,15266943987881365929
+3e2ec0e5-a0b2-ad5a-d578-62417662ba14,2493083222,6428945678147689920
+e0e11ff9-da54-1ae2-9b07-9009645529aa,895242582,6276300655061306580
+0800073e-5be7-f55e-cc4f-529f7fbf5f56,2636857048,7612599246637914743
+1cddc9d1-1dd0-2f9f-d4d9-9b6927afa575,385818591,17963132307648793931
+2915b689-7ada-2345-aebe-0e9bf30e0168,891429067,6342251514045120945
+027dfbeb-7a6e-c40d-f93f-b27ee1cb7b5f,1743839688,2322295622036281038
+dedbba3a-867c-d34c-acaf-99fe708dafb4,4168623051,58592594423001866
+05a959d8-4d7d-454b-1442-ad12e3117271,3183610947,6428755905212860322
+9fb08fb7-f28e-9ae5-6d8b-27712e582fe6,721536553,4201980887083117087
+49ffbca0-9f5c-45ea-a19d-7d38617112af,666876984,6104592838098938585
+bd4c3601-7e3f-ed00-0650-8bbaa9b368f0,1174686189,6033622067480511060
+8cc82e57-6753-d26b-ac70-21f53e98bbfb,48857662,16623874628378447045
+b4a331e6-bb1e-ebe6-5c7b-90c0333ae923,3743799028,10617569085362993614
+d056cc82-fd00-d19e-54c3-0af372afcab1,341291957,3866273605135683789
+a6a1861a-b5c1-6cf0-d809-762ebf8f4968,3627104330,151112420950666892
+b173ebf5-d006-9554-a231-ef1d433b8de5,3633052353,5981820951896769808
+771b0f8a-2dea-cba2-1f4f-98f18bdcec8e,2110526630,9663950067027083431
+3bd5a525-f6de-108e-eaab-a41831b4ec2c,3552146808,17488721861958467990
+d4590525-e269-a9ae-054a-7833ce8285aa,3481822221,6553314454749119952
+1f09ccf4-2476-f34e-969c-22530a396673,3377096739,3116742333785450239
+7d4fb988-14c6-d603-87fe-fdd0880d0a10,3626862410,9461780001575831802
+0dc4b38f-79ad-d8e1-a8b3-32c1bb0697b0,840192694,14225344216248129185
+c0171dbe-8a52-897a-6263-9a57f0b4e419,552645513,6474566505785593075
+09893534-27a3-9e52-5029-add98f29546a,3385750645,7947611999123249431
+e7ae6f99-5a88-c797-5ed6-51b567f81a8d,309386688,5263494708637108116
+47a50df4-0567-eb6f-2175-964ae9db33d4,1613783941,15488151721150788560
+17a7ef52-3e93-8bb1-961c-820610e47da0,3415502341,3596856046157148356
+beabaecb-3242-2412-46f4-dfb47b704ba8,4184439488,16027801907747481013
+d27c014c-f6a2-6558-36e2-e97bbf00bb60,3705811062,1373804371639218708
+24ae394f-ecb2-b03d-67ae-e5cb80eb7c89,1961092087,2384498320234277313
+f8d4f900-7e8b-56d1-4241-fbbb0976ccdb,1339614236,5087957468652638148
+fafacd00-15f3-e2ad-0cbc-6cf724c8ff7c,551175584,1922642143803204721
+932a8ee6-f323-ec21-c45a-f8b794b1bcd0,352765542,2871373523662188693
+135d5c75-ae7d-4ea1-6034-dac4cc0bebbd,681624303,4961792486352106326
+1bf6a784-4512-1e41-eaa2-9a286a14867a,2721546109,16757100582249166861
+086bb15b-79ac-abb6-37f4-a12d18bdc74a,1273414845,1578620104101928231
+b4bf1de2-e8e2-a9b5-823a-b9646861c4f4,2508109843,12647194370118471334
+ea492f61-3a52-8ce0-33b4-6e4e92bd6ad5,2858002335,2753438673560283453
+2416b47c-80fc-129a-8097-c259a84bc14d,2099512025,12931595931666667524
+550d1a67-d449-c07e-d0da-5c12ff4b10c1,3627823348,3137892016687941590
+831c9f14-88fb-35ce-cc7e-87228f9c5e32,1270446020,17179317845385650177
+4f22864b-073b-9016-dc83-6e6929a68341,4271009027,12193688861063654148
+bfa01677-409d-925a-750e-9f07901dd6a4,3709489453,9727165036916341967
+89f75a31-05b5-76ae-fb78-fde7ac4bc1b8,943227142,18079809481021612626
+a7ee490e-9ad1-0fe6-9ba1-05a33226d4c7,2481170650,9059684044031871982
+10282107-e5d5-acdc-222d-d081b3d810ff,3083003713,5773159058275541157
+20559220-bce1-a412-4169-77fae3c1f413,1336010462,2531854455201972638
+906ef895-6f72-7c66-184a-621253501911,3756422840,2483700450477564372
+1e68ae97-3057-9b37-1074-baf27daee709,3232528598,9275963535342604688
+c3e5f884-e837-df45-4b94-e7e33571190a,760505800,3633201793162278140
+7dfb476c-cc57-eba1-71a3-70cbf2623936,3740227477,14486234427694867085
+4bbd02d6-402e-3581-3178-536bf414da10,1720645719,13057774798921048070
+4de9cc4d-dc62-5f38-6291-2304e5e9ef82,3719535453,1990411151086421353
+e830942d-7d53-7dd8-894f-aa175e165152,4106304699,11794444321033036061
+c5d96c44-44a2-c74d-c4eb-491115fe4539,622596887,4194372780179875381
+0433fb79-3214-53b8-9cb9-81026eb35d28,2775977527,503468131778087438
+8345d034-610d-fd69-eb9f-624cf9ff7ea8,1155821328,11486171530141956281
+172ce653-a7b4-b657-28a8-cea0d8cb6b7b,2929789326,3121477504327258558
+3c17ce3e-b125-1572-b981-eacab3334e44,1652091987,14662073159494912936
+e1f0a1a0-3b8d-d40f-37a1-ac6011edb357,2704626598,14721051726628913969
+3c654515-cdbe-18b1-1248-e9383d204756,1770688334,3614053823191442109
+827441da-5364-c406-5b2e-1aad44dbfa24,82171665,13649770135642584278
+c2d68c0a-5f61-9478-4b41-34e4fd4a2743,3791862725,8054843759650093858
+4f3b818c-f881-17f6-d381-f45c5cdc5512,4109580538,17144033520997578734
+4518ea66-9caa-a7c9-4c94-f1edc3ca937f,1277947848,16522214809948261839
+9518db8b-2b62-e5f1-6e44-3acd6f133b16,2467597396,427410060274240042
+10cc6e73-9d8e-5313-d1c7-280d714ba729,783174555,11113292573664940198
+c99e0ac3-a60b-fd4a-c1ed-0d835740412a,2660829112,7870959774475194957
+0e668d67-a2c3-7641-1712-baa627498c16,3696021866,17783541155061728985
+c458a073-5eb7-c964-47b9-0c88dc4f7004,2734492810,7760874964660627159
+e073a149-523f-d3ec-e97c-8685ca41c2e3,347356726,8089817314354649519
+1080adcd-78ea-4200-579b-590238719b07,3018941313,4016988254810604358
+6ce459d0-b479-4a35-a43d-6712786ef2d4,2296412952,12591005290377074121
+0199bbaf-a23e-3ddc-e38b-a4f6aa43f3ef,2107150098,8757252397873113988
+1cb05191-b216-2b2f-b0de-af253327d248,3196725422,22805731347019866
+5eb79b4c-133e-849d-bedd-63b9ae77ed76,315788187,1036000020732636557
+21f552ac-9a3a-3091-722c-c78be428f2cf,3840582112,9200913537917755424
+30b09615-aba1-f770-5dfd-c4540bfe7f2e,3477176417,1765199079432925237
+692f5229-5a89-8ccd-eab1-458dacd50401,1125270624,12234299043795334287
+8f800eb4-ffc1-90c4-16d0-b0df0a2c52ea,3693051789,3058335693743190164
+28ca0310-f7cf-e732-0d45-a6cb2ce388eb,3346473333,3579114237467318151
+58bec023-d72f-1a02-ffab-4999c50c4733,1620445617,6908846498679477979
+a8bff542-855e-db1f-b6e4-94819865864c,3318400556,16544141188564773030
+2570c09d-dd12-2508-5e5b-3701ca90621e,3700815764,1195759566716476190
+8bfd7ce0-378a-6a44-60aa-206ad7f9673e,3747655967,13446610437438500931
+8afe7d1c-3dc2-23ce-485f-ddcb724aa2b1,2156299135,1299956692558438755
+5d06ea47-db21-8031-cc36-3dc2a9612f9a,3844840518,3797510464893999574
+0a7d871d-6822-ff9a-0958-59b46c31976a,2113632392,11911453916214671020
+6859ddd2-f24a-6533-e750-0f48c2c13f69,2795319212,11192617991820018431
+c4bf243c-6aae-f7b4-9a33-7f18d4bf2d1c,3757478882,4477353798642306144
+2bd2314d-2fa9-3d4d-917c-26ddd11b9373,3004562595,16914816585464959574
+2b31c341-1a5a-0f86-e53a-9e584aaa5d70,4169751200,5586810546748858774
+ae141028-4164-5962-9158-12a0af2df033,851555211,7125535638158344792
+18afbdf1-034f-9f71-e1d6-07f9670e1e53,1638294728,2913940617874603821
+5be38865-f53a-eff6-57b1-d218e710540f,2190869373,584682685019145378
+04736911-33dd-66f3-a746-52e44af356ae,1524829019,10209610674051924156
+74ee6393-61ff-5924-0317-660b2fcbd491,4171428281,12095984642964165026
+8001fccf-3952-81fd-1a11-42f79fd475d9,440961943,10775707046462194661
+8354d96b-0637-2be4-c848-b9204a0ae74a,2632843110,9159783125597707113
+e42212cb-3317-1fe5-25a0-bda9fc93f6fe,2502133381,17260915603015685946
+32df2193-9161-0e2d-e96b-d8b1b7de1e2a,2359340212,18236088082630457362
+506ff37b-fd80-60c5-63ae-bea5d695af51,1204220554,11987564606183661130
+2707533a-3180-7df3-219a-97a93e0e4f66,1972376014,8853035154714921190
+76ff6116-76df-6453-2d80-178f14e7ad45,4024349052,16682722980619864691
+f999e70a-3c73-c88f-67ba-604578953e9b,434876901,9618502616708968767
+012a387a-76b8-ae9b-3deb-061656bcdc0e,2607374047,2445855172822597538
+33ff137d-7245-7f1e-ec66-3081c3398a4a,2422269585,2362834655969364271
+93d38034-05fd-0749-f742-b9580e3480f7,3442780224,4896417321402244958
+f3222ab0-83ea-21df-0b19-a11b84834f60,1646783252,6055377626196498569
+0dcabc60-221d-fadd-7894-c83060e411e0,1600918344,10289095762211879411
+6f678947-ba9b-8a7a-e093-a2cc5477a286,1406825347,10721870170086375458
+b0ad799f-60c5-99ea-6941-dc56c8bc337a,2600303122,12743631607711231449
+ee726c2d-e57d-b09d-ca2b-5efd7b3c9cbc,3081765059,5453460651682952676
+c6a4de83-6172-58bd-1ba5-54b78d4ac9bd,894345120,4107534160314052764
+c45df0e1-7af5-7de8-22ea-30e16fed789c,1668776503,7412672214297492947
+09f7c70f-b311-abff-075e-fd21a9f31051,408602517,7013004817540667726
+18455e91-5100-fdb1-31da-8e4833a33965,1321754358,4632973969145251346
+9b7c3bfd-62e9-e939-c000-9153f3dc77b4,293286339,8777689317945729716
+81cd092c-66f3-6bbf-aa45-89894456289d,2007593751,5921182030241385687
+dadec21f-1dd5-011c-9f79-d06a3a98ef5c,2832074091,1524862667402270460
+9e872d99-e4ed-051e-7eba-063b239ac112,4007185109,16972233291282191855
+50f05928-de79-2bc3-f3c3-0f3e8d87efd2,2338905213,2599620801417974036
+cac661b8-bf7d-a9f4-7b78-b2ffb45091b8,3198261737,18429598228224797987
+5b815f8d-645b-1b34-be91-270227ac965b,2803918804,3016992515953035107
+fe661d8f-8b27-139f-3a5f-3426eb802538,3632815614,12769495503552394568
+392a10a5-a874-1ebb-f15c-6db572465bf9,2155964457,6937173217592488987
+3318fb21-bfa0-c8c3-4570-b12411a475d7,1486660240,9080806972648902379
+6cc8d2dc-c214-f6ee-2482-5c8e9db3a40f,4090558525,4894891619933682708
+9960f692-fd70-db9e-e322-6961b8c2c4d6,2781347753,10891804395828315760
+1795a22f-aa7b-107a-bf41-a4b3254e9a0a,92964248,12387283688914896475
+e5f12b6d-a5d2-3722-e947-729a8ab33254,1667193496,6822727080016795220
+9ada2621-49ce-0dab-0931-2897bbb3b4fe,2093568572,8188824144838180931
+b46313be-4656-224b-de2f-fe9a7e456baa,2535350067,12536683675105954887
+908183b1-7531-2dd2-c838-8d355c333bdd,471746592,2123904816561792050
+cf29e991-26d1-3b4e-c2ed-f4525c1af315,308376144,3738428946569145846
+fe3a31d2-c069-8e5f-d554-85eec5154817,4090834418,16063158901133408641
+adb1cd2b-dea5-46b1-3168-1cdabd2bc385,893993990,8928720746085300019
+806159d5-321d-7c93-f8a0-9cdce23f02f8,293576756,7219422166719924787
+701e0740-571b-8f4c-5db1-050bce30ab43,1447368273,3228141421906540447
+3ac028cf-7d72-e338-1e81-b9eb273e143e,2185017313,17230785932112702379
+0d137a6f-9723-7317-55c9-babb9ec98df4,3551668528,2214955507216302522
+fff34785-9dee-ed65-29fe-444273a863a4,749504626,7146745215749042128
+9c42db76-de3d-5cb6-2c28-17136a793841,1238018455,8774576447802393264
+b929a43b-3123-f7df-0d05-943bac370b18,2055092612,1418718051120224779
+3d878493-8456-a122-13df-6d00b0b92f3b,1427223025,9834654983000820938
+972e31b9-a49c-1755-9125-c3aa68a0a51c,3742220977,10979622556113610523
+23a612bf-bb81-c786-314d-fdbb201351d0,3748008780,5984888997347583950
+28ca1873-02a6-1b06-9728-1c35aa295bf4,630040488,14440184750885479433
+bfb127df-4e77-220a-1bec-a5255dea7d66,4288557584,10338032365152033956
+a1d22738-112b-4e58-c8df-0ba440b1956d,3978032685,15031463380289875408
+58a4649e-3a0e-8552-98d7-e7d4f65bead7,3754161590,13922711136172993673
+4511c735-b84f-f575-acb6-a09e6b7e3300,1550449756,12080303853179362943
+80fd4d3d-11c9-424e-000b-27a7d13036bb,3358866444,12905305851516173810
+4aa0d4cc-a5f2-894d-9d40-e680a6c1cbed,1453664170,7556638874666129912
+208832ad-0b4d-c063-d24d-00926daf58b3,1993184525,12192150879311322788
+b8ef131f-5eb4-0bf0-32b2-b4774dc841dd,617860729,8774128369247623023
+88bb2d65-8dee-5c61-5863-b062e637bc31,939608116,10981880055834390085
+e9842bd4-4abd-2413-1931-e8c671c10ef6,22627082,7381062918066166129
+4e43917d-fd1d-6bb2-02a3-e9311541632e,1865620971,9412062648354582252
+6b9742a0-bc32-ad6c-b7b5-23ed41b4b707,1569317918,2229036387404549316
+196bc151-d0e8-57e2-7b12-528af4000c65,3821702758,7925467316194462030
+e306736f-6439-4131-80ec-4134c6de4a99,3191595892,456746837298956949
+65784049-c22e-74bd-12c3-e2483adac878,1851783481,16209782652716957530
+0f8bafa8-bf6d-eef1-a8f4-1e7f056efd39,203108637,8567999375145225427
+b3f6c1ee-27ff-a837-8436-ae4a40a8df1e,3616706896,12377114864675733694
+380658bf-55e9-5ad3-a1f5-1b57855786bf,1860833447,593114287493528407
+15c90342-f79f-69e1-2453-5e3aa8bd61bb,1227650053,17755024732440035641
+f1e2df2b-c69b-8dcc-e3ba-2dc35b7991ff,1346709354,9795880598091425067
+f1c680d0-27fa-d92a-95aa-2817ecbc891e,1133949543,487065905866488640
+f7ca6d7b-a1b9-4a5d-f033-908986af02dd,1199423102,424179091066283389
+9462e96b-d495-1dd2-dc3d-235ee070ff19,205533986,11460952702670779101
+f4626609-3716-e225-bba7-79ec6ed501e3,3717359506,15623512362748921565
+7323bc2f-5e45-093f-3251-de52fdb48f34,1684938535,6939870504174850264
+0e6397ab-d0de-dfe8-e282-753a0fdc8661,2516705900,9305989212052433639
+5a53bdc0-8a80-6c68-2dd6-80148829cd76,4208449813,14484569827143310137
+f5b48b32-820b-a055-f734-648726e7ae22,2901804145,2200081749763169068
+a6801b7f-1087-0526-cfe4-3baf6d990d43,4279481713,5029942362159785046
+ec5fa3bb-d93d-a125-fc4a-4f87d7ecf501,3188957368,8570601876603110369
+c79b5c86-8587-a78e-97aa-9788f42c2959,2695616619,15311856185195054167
+62090866-1534-aea0-9052-c00304f710e8,1705558850,2054397726158567263
+d0fb977f-ac2a-2d1f-c721-ed74e0c256f4,3637067031,4682973914568312874
+6ee2b930-8954-e628-9480-563d0b959fce,2730269782,11797182053759170771
+faf937c8-3af2-3b9b-2e35-84fb95174202,57160112,13530819994022800118
+11015912-82bf-11ad-f006-22b128d12b43,667608684,17176368462044658379
+2fad6d45-fafa-eeb9-7ee1-2ecd7db92761,2406453939,8542142453801182248
+d3ab6f9e-93c6-1032-25e4-f6a86f07f442,1532286521,5984276677662167383
+01d1fa4c-38d6-ac97-28c0-ba05d44329f0,1369359494,14741481206645222557
+af48d250-31d1-3f40-54ff-7834b0e8cfc2,1527993180,15620518963371098992
+54ac7c4b-4e53-64ad-c504-414d35329e27,1566558515,8055565578765454504
+9fb89406-0047-b995-90c4-838a4cf3e215,453719004,4771589501760383685
+ff4a94e9-4af1-35ee-b930-475a37f82ece,582564786,5251651842219501026
+171fb4c1-0f79-67fb-5d35-972456fbf824,2197158603,13728802788364457277
+491df152-8226-e34e-76c6-1584876812d9,652822638,17571534007650032591
+57fff2d6-86df-4e7d-1f16-1980fbcec691,1822313047,13385419025726986609
+87177449-9109-cb1e-4743-ad9acd3469cb,2603820905,3136083848920626446
+8614c30d-fb81-e0f3-f8e5-5187b1026785,2804754558,6626271609170301863
+ca10e999-7f85-7802-8937-ea0133f67263,2589506098,18293073371999409751
+63bb5bff-3e12-ab6e-8d68-2cbf97a4106c,455751441,560537757275204364
+3032dae2-008a-5703-4617-5c07ceeb8eb2,399241911,6698308604973139104
+e5a05d8a-e3db-83bb-615d-249c8524de0f,956255176,16435567971711523579
+514afc73-eaa4-adf3-5ce4-e3675f15ddb6,2358924817,4717113256203731574
+7920c209-f879-2c5d-eebd-8b2709aef273,1194251495,1334998447533332027
+6821d9b8-c105-73b4-f429-5be1172a51a6,4225251046,17386256407185453347
+7d0254ce-ae1c-3108-c8d7-d69ef02af863,232516352,239587963873016361
+dc8211e8-f659-5cce-2e28-0052ebe9f52e,754421291,2317057276595575463
+09a7d735-045c-b925-c1d5-06552ad32fd4,4258189088,10218666283975652528
+9b19a01b-b86e-ed14-a77f-035b30b83ffe,771653129,18081043578186312384
+57321e69-73c1-19f0-5058-b5e9de316e2e,2285484116,8418327750251255099
+75404b42-51dc-845f-c019-f4b8f9a88b0a,654047455,17816695854631663713
+3f2e33a5-e447-d5b2-9fa1-1c77cedaeef1,3368420838,3663004156853350648
+61f2b467-4e9c-6080-88c1-cf3171f087bb,427149833,6002372279571003282
+1dac8543-48ad-53a3-47fb-a414cc5770c4,2765472927,3648920177671189196
+bba55413-41ef-00c4-4df5-2180994bc5dd,1128779773,8743305583580281983
+c80d574c-a478-459d-2ba1-3d7ad24a5403,2972755814,5837524169093192697
+2a39883b-0e45-885d-842b-c27ee2620764,2904462085,10119077179518166548
+ca880303-3c4f-ca2b-7055-4e7393e4ee2f,3355775678,708495266462494411
+f88fde5a-06ed-473e-f3f5-69ff594871bd,2602393974,2802911428926663400
+2207f2f0-4da8-762a-51f2-df72c1c1a43c,2235096531,6325072384478818367
+9580b526-f25a-6a5d-f241-3b361f6ba0ef,3235338943,4872634594240431934
+b3948716-ae95-26a9-2f8f-d82de70b855c,744419513,971532267111524007
+8c6a36ab-6cf7-80de-d129-68eadf03b2d0,4213922808,3088669265839069227
+f5b4436e-5c69-dedc-3095-adb9f46473b0,1755476205,4313125510943750689
+d23c9907-36af-651a-6f30-9ae0ee3e1c21,1368308366,10121977813024107507
+3504d76d-c2ec-7bfa-8105-8e6e025b6969,2916205855,17051217155703604709
+1c522973-4ebd-b374-1e8e-53192b87a65f,1723249824,6348543226099691064
+f6b4cb39-e278-586c-0db8-d6e408d10061,2714775708,270097515708139553
+8b2ba62a-9e5c-0ddc-afa8-f6819ead4b5f,4238789773,3862967007474362614
+a3f6ae58-478b-f068-80ba-e201fdc5f0da,1863945556,9344519530917958060
+a0881f96-4d6e-2864-6b7d-f0e771b0976d,1982555718,16470157935196742452
+af7c5837-966f-92a9-f3ad-7b4c57797017,552428161,5117625842470172272
+0f633245-cc17-0370-1127-8a59abc6e851,23895323,11953229517012146982
+8609008a-be8a-3eeb-81d6-02b7cb700a74,3093004055,12777721133642856031
+27143047-d000-7053-4e47-ad700c789262,2169859877,6369934944778058213
+504adce9-3331-6c25-c941-14a32b1ab4ca,1710162390,16467369277183061995
+d2a4261f-a47a-f5ad-df49-f55a18f10e2d,2335370324,6835146357920419875
+0defabb2-12bb-919f-e963-d5cf947a0dc5,2186183024,14281188271974560162
+6f0ee4dc-fdaf-3c92-933a-c7d8fc6e1c9b,3965727658,7850520917892067483
+a3b75785-ccb6-4ca9-3cdf-fa4c87482cda,1022087115,15018101085318881861
+0fe82c0a-9687-96ee-e69a-170d309f7ade,3333591945,15787914762958867201
+7dc11ac7-acec-6265-dbfa-8e9af595c6e2,2171058636,4808678349730022526
+686699b1-fb6c-1c26-ece7-a2748e352236,3228485466,11816566556983772672
+681a12a3-7577-e476-d1cc-f4970159d240,1708817243,16887351998926892564
+0630120b-bec7-bc8d-5767-582f20e9b77d,3478855339,4064103368730545048
+20d53251-358b-e4c8-5c23-450a7aea6050,1407108402,1485034319288058151
+ff6186d7-f9ec-4b17-8a05-2c69dfeb7089,2874007582,11971237637027502619
+ec9f10eb-3e20-709f-1f80-068db1c73ed0,3819797891,7713488525555332591
+b8d18738-831d-1301-b36a-8ac530c3d765,781259976,14508129632518608454
+a7134985-f45a-a79e-31a0-79f22aef32eb,4020808714,10660047384271206417
+27789018-0b0b-9c19-1907-afeee5f4ef05,2937093563,522078242768640107
+f315dc44-adc4-7144-513e-f69d17ccecc3,4118037499,17975453585618630225
+31995d5f-3811-9a5b-b62c-50b9b9aa95bb,3436349510,8636472495693546498
+563a9c63-4edc-a667-ef48-df126a8f99d8,2462836055,6687361341312697549
+62da5a00-b0d7-2783-97f2-e12e8b4f2bb0,560767319,5279286243072195266
+1df4adb6-ba1e-c31f-711c-86c0d15e1db7,2550106658,11214068817223078068
+fc7a9f12-76a4-82e9-50d9-d73f0b44ca29,3531834663,11752124745297834245
+0a6e82e3-b100-30bb-0704-e00e5873d43d,2707183170,2910304306307407515
+52205fe2-d5b3-1e84-c8f8-e286bf905f00,1385618544,899125509425997204
+5c1d05de-ea9e-de6f-da85-444f172a2492,4096492941,15052665782154942438
+dc0a34ce-6805-41a2-9e1b-1f20fcfa0c7e,3954358032,13869963374736035429
+a71ac063-c459-0ea6-719b-260936150725,1891448983,7813827857901189374
+97dfcaae-9dcc-81cd-c767-16eff175f45a,2156294836,7384093243940697617
+1089d7b2-e43d-e594-7c0f-30fda98bb31f,511176820,1543602757239813461
+c9eb3325-6b39-4ddc-19c7-a3be98871139,3640248894,13100344263440426810
+a98ecd17-4096-79ac-bdf5-2e186a4e9a2f,384257013,3121104732460050779
+37f42330-2daf-df98-79bd-37fea8ee8199,2533896546,12302700310181099518
+789d1ef1-d2b2-dbe3-eaa7-48e0fb00878a,584967862,13064993887465897784
+6594b6ab-404e-a84c-fe4b-9e8b1efc8a34,2221665239,7339022039985690560
+3dc4670e-9d8a-8e2f-171a-a62535a1640d,3261552648,2783683277859782760
+0535d63f-93f5-e8b7-4cb8-2dc496e8fdb0,2771086225,5649067335027674009
+7fd75c10-dbd0-23a9-e220-1deb554068a2,1932202228,13707672305397482325
+8b9f7e69-0d81-9d06-9a38-ccfc8d6f42f2,3369350915,7892882704624310984
+5906527b-c5be-4285-e576-5454ab761a9e,2679291141,2625996879970935939
+a8223e19-e4e8-42f7-5ecb-0cf523164bce,1196198960,9306514132381212885
+384704da-f9a2-d066-00b2-7c03b2024911,1886951375,9288389737709580906
+ce4cf3f6-2c45-13dc-3723-3801acf14134,3007423544,3036168692777421894
+47df8bf6-6315-2f09-fc8d-3b9987b9211d,1389082526,2553087757484702743
+e94e3dd1-fcd8-256b-0223-78c6d1beee44,4058723169,1293979545065376850
+008e5838-949b-cf3c-ec08-50c50e0ce932,3501386638,6599838821360119880
+cf5b3555-4450-7acc-8d83-297edf7af96a,843479161,11880569376696081537
+1bb4d85a-ef49-ea9c-7c25-60203a397c75,1428244483,12700468700346982672
+12df33ac-9569-66b4-deae-70a8cd0dd857,3385288162,2041979844019976048
+ef9497f4-3a8a-9c85-08dc-b33150019bee,3772658504,5800124482837312973
+cc8be65b-d0d7-a6b5-0de0-82a8986f006e,281521130,9135514618406748536
+281da82a-852b-6aa2-f281-3b209b1c29f8,3986994862,8472487641660693206
+d40f6495-c120-00c7-f4df-787a001c1fdb,1688040630,10883901836603723500
+1499eb65-6f2b-fe82-3e76-6ffb91726177,2905049487,9713156079446443219
+293da896-8c7c-6a56-e47d-d0bd228284ec,110962430,4825708788035414556
+0b9d84b2-7305-6a17-c33a-75e096d37479,3937794343,2618040905361236262
+ff92c529-d15e-6686-b40f-2a4df5d8dedc,627627400,6136055446026162400
+e828ea6d-2106-cd06-dc78-1ae2316c4164,2934222464,16761756632038558486
+32add392-4644-d163-8e5e-8bc001310231,3849968870,16602346996861409525
+fee0a595-a269-7062-fca8-25e61f64e343,259187597,14099473520222838790
+ecc5da29-01ad-18f6-45f4-c94648719ce6,1256439538,1430675586537416287
+00b35d19-c740-1d79-5eac-6cc9ff43ac4b,3576483348,15450904980942337458
+88a4386a-79fa-66f3-a600-87bf510be274,1996245317,15498188328399803021
+684e2906-e4f6-4a10-0966-fcc95cda118b,3602208541,3859168113737755882
+1f47ef1f-8431-70f6-93b2-1dfddc5f5eca,1703097324,13138435639296720861
+51bb265d-9f9c-650a-53c6-bc9e48130d9e,313471268,13538049234150459531
+494a3d47-4259-b510-6a5a-c610f836c4f2,3930728683,15769174369423333022
+d872099f-7d5b-aa8e-4cfc-3349ba0a09ca,1313099483,2769691770160231583
+abe75fb3-1c7a-30f2-020c-13e587d4b725,2033737731,3782407270780485524
+99cff089-bfbd-695f-0aae-bc32c6741837,1399740581,16222125838937978450
+df2a423b-412c-e71f-dc78-96f449c86aa5,3135005135,9581426543379562115
+52803591-d14c-6708-b0ea-da39bd434844,4087532036,5446015494251758246
+4814e1fa-2904-5f67-20d3-1ce1f23eb403,3143740534,4717951490811652628
+c231d4d0-6bef-c55c-0099-dff82326d65e,1141490643,13733294028584777625
+7902717c-42fb-07d9-f7c0-2c8d69464433,3119836337,9116594341161546654
+60a01035-af67-2498-d6c3-646635e1a3cb,707802384,12604983842801090119
+f3da221f-6a42-eb13-d89f-2ea1fd4a896d,529553490,17517494798729020950
+a7f097a4-94ef-5fa0-d2e6-1be37400face,539722658,2270438982708432112
+20e5a8ac-0823-0900-a7a7-46edf5f29d4a,4034755931,9016479449991146204
+1eaa180e-6dec-5bb1-6058-9ffe73785f3f,2906737978,7744628111929358083
+77b855d0-6865-b9a6-9604-b189470b08c6,353279603,17499020817102666598
+67d640ff-06e5-4561-370c-25f12aaa87b3,632599512,11842767050700902685
+e64e0c24-d5ac-f42d-8555-88a05ff09d3b,2063111833,11963677865735107947
+4821d7c0-9ee3-82db-10fd-fe864e86887e,3874558922,15888801092282150363
+d88e2708-4ba4-ba6d-b276-5d8a74048be7,2880765345,14101898624173830043
+2b40f3c1-2a5b-a625-cc87-9bd1ad1ab5f8,3312113426,3409247271763102107
+6160b4b6-5396-d1c4-c23a-13cfb1fd10be,1904255062,12566808590850223330
+2cefcbf8-2c28-2a85-a05d-bb32b6510568,3233359237,578024715887064804
+c763cfdc-3b0c-3a08-f24d-b1733becd59d,1228689264,8916153720065071910
+cc8050d7-ed15-fcb0-04c9-89a89607b856,2771147363,14936909463608202793
+e7317a7f-af80-a230-d07d-02aead6261e6,391052479,9257797066455815940
+aa736f17-a0e9-e1ea-e2b2-4fcc3d77efde,4179208911,13671201380408273381
+e417148d-414e-5fa8-761e-48954bf6cd29,71164560,16517914147492477050
+6f80c452-ee9e-855d-bfbf-fed2be46e50d,3149444784,17270521182471802505
+1a61f122-de16-177b-20ba-1e21537206e9,2072547410,15818168556455492111
+679a8cdd-831b-5bda-3c18-9cb3d3910c12,3975991628,4694718050240165093
+bfe8ee6d-5d1e-2c32-3be9-2a966e5a4f66,3807893261,4007252532245549313
+20869750-48f4-f1bb-45a6-c733a6c78ced,52613402,1691513259102216610
+e0e1d44d-4803-5400-bf68-3d606bf18046,1732577850,11409458257936625128
+28f600bb-4ec9-a83e-8e4a-88473cb8cfb3,3774508598,11089757087639835015
+1c72a64c-37a9-6ec3-cfa8-6671377b399e,3669675903,2922500204264665520
+03e60376-4121-590a-aef9-d730c3e6ef2c,3435200543,9084265994543126943
+94738260-66d7-e325-e6a0-4815b916ae36,817688455,14198488967700697950
+5809675b-d6c2-8581-e08d-bee6e2721c21,2276750196,4147107827737675996
+7d813126-0073-b86d-11ce-e36740bd3da1,555052876,4482029485230329793
+68e1b391-63f7-d914-3df4-3bbae16d6877,4164105408,4454545128524142213
+08eb3950-e081-4d11-9743-eb71d485e4af,3463860587,12668098096982844609
+9409d45d-ce06-f72e-5ad0-50aa9e13654c,2273828019,8109339355133280634
+7f53d2cb-70c9-7476-3cbb-263d6a46825e,3304401167,11370351776191679598
+83731150-4f74-8723-2386-38ef58896386,1573801902,2280932507013407468
+f5d2930b-8099-f7db-ae22-6749f9ce3f01,930221939,12609540447853908031
+dd3891b7-8b45-5505-7bd4-5a36dab1182a,365984972,7076644288931722089
+4598ea55-3127-ded6-cdd4-b892cfebd7e3,1442026617,5176586115991975218
+5f7f318c-235d-52cf-9d40-bc78c3027f9c,897194359,10952714596339057550
+5e624d8a-2c78-ae4d-ec5d-e8c58b912c4d,2533922921,15826165203842208185
+6473f441-7065-c278-98fb-31f738834d43,1680551266,7404853973889680974
+a5140e59-72c5-26e7-0396-c700cf72e70d,411891925,9052114913399501953
+6f94e8e6-73cd-5b89-ee99-db4c25668e26,1192366017,4144716519083060270
+12495d32-5822-6d21-55a5-7cbf5dd7d423,1389015645,2224452617608837640
+26fd8472-06c9-76f5-db70-9c4dc4d4d9cf,521016841,14401279517827144272
+0bc3652f-1b0d-b6c3-df5d-883a0b4eefa3,3820175149,14816681643687619180
+5cb6285a-280a-3c64-36a4-612e714c42bc,1852850712,9610154991581275847
+ff7ee79d-8678-729c-62e2-69e9357e75f4,2151409853,10827621557006261635
+4a75eac2-ccee-1542-b5ff-958fa4d3d555,1874735158,16374275090738425947
+8ff1e111-41b1-d107-9f60-83ea4e13fd2e,4052310017,18389681800392563571
+3164076e-6122-98ab-9681-f1217e5633f9,907885163,6501280600461577898
+2c5081de-f128-a5b8-b9a3-4dd8c72a142f,1196761646,13489375513549121112
+778e76b0-e401-b08e-07ea-7d96bbf19ce5,795781761,6026586628879934515
+60cafeb0-bf5e-087c-6a03-9d8b29a72f7f,1270542507,4257527445806560857
+2b66f0d9-36b8-bf2c-206b-dab21d2f2977,3832187785,3206962163063877042
+4ce9968d-c1b1-3687-ce5e-4d6456317824,3105435883,11875854578831821465
+45b6a2a9-eb1b-4c91-79ae-362036993db8,369259971,15429287432737124252
+937eb90d-0d0f-bf69-99fc-b08ee3136ec2,3063011113,15208216421516625965
+3f8707d4-4a54-8c30-f1e4-d4c764e84395,461045869,11551631327591687382
+ab669afa-384f-5a59-428d-a46b77ae0f9f,2675486580,17532093718674892551
+fadc2a0c-c2b8-0e13-bbf8-7552c2af2cc7,2036770888,8433561361819913547
+64028185-fee8-1b25-0ef1-03db52b4dcf2,744931753,15989028631824195340
+59127e84-df3c-dc9b-4d36-5b73aa62b082,718681843,8960528463899686624
+0bceb96c-fba6-51af-2044-7409f09471b4,2808746201,3380836515501532467
+4986eb20-9ff7-c378-e7b0-58ea21157157,2050493168,875695705320181978
+7633627f-6903-3019-52fe-d3e6d1725105,1426334314,11096446598880873747
+f661f27f-4a8c-ecb9-a233-ae859f2237d5,3540443137,7368253919982662992
+f1d68600-7c80-b58a-8d6f-bc2575276c39,2651973703,5644166698753669991
+e012c518-e68a-0a90-a674-5247414d5720,4283739013,4914744855313516436
+82795e7f-31c7-2a73-3b56-c91357a06b30,2010394361,7313201036052974612
+2f110c13-dc5f-7d70-9217-92f4fa1d9f76,3340353724,4246944188060311770
+25b09269-8f86-a9b7-0d54-11c20c2d7c59,1344403792,3812207667931435187
+aafcc6e3-e5b7-85cd-4af1-ba0509b997f1,3380431947,9110604862386454569
+ead65c40-5752-eac2-e29a-f7f0c3d2835e,3668993593,10341351587250072406
+2a259243-44eb-d742-3ab9-093358cc4043,308179069,15124573691022186512
+a362aafb-839d-c20e-cdd8-c4b5659eab97,1617974224,2578786365622832424
+0f221a8a-ee54-dcfd-f516-6a08e41d7626,56399154,8669687790977613289
+4a0bf505-97c5-29fa-2e01-fcd5df95f837,173286092,3486157579731962453
+0016f71c-36ad-205c-269b-b60b31c42ac9,686105750,15468497598563738421
+b95b9a1a-86e0-c427-fe33-9d3693ee054d,3178818265,2316387810242004358
+f3341b91-4c7b-3ea0-a543-61c4d3de045f,1005372837,796764795964157702
+50fc77ff-a936-06e6-807a-154ca56d4b2e,2985244497,13614497344054024835
+cf94ecd2-0a79-1998-99d1-440f76f26ac5,3558481895,18198696032879165645
+875b4a6f-b420-bd2f-379b-734b6f01b639,4176808892,13179104438503521011
+ab5dfac9-87dd-5258-ea07-40e86ac71d2f,2313701088,5995857781748780399
+b13416ba-cef2-6a79-f21c-250024c68f24,201489189,10224571274506902057
+e0218103-0bb8-76a6-0c7d-436b87c828ee,3317285650,10121853142900792005
+a7fe5c44-53e1-f721-ae25-79bcec820362,2759760624,5620992739292625345
+2777c8eb-2c49-3475-d7b9-132de4f8158b,1229099180,1742964584159249510
+927fc834-baf3-5293-06aa-12a4ffb165e9,1367418354,7707458558424613770
+5405cdcb-3b77-5804-6b0c-a502b3a77c32,3764612693,9045438022365863563
+8d475108-3b18-14c0-1e49-09a69ff621cf,2539237086,3978956998746078388
+130ad31f-5c6e-08b2-1362-c1890816479b,2059925820,7449379426118987389
+bbf36030-7937-8fe3-933e-9a61f95863bd,3447238107,9189079373639853802
+55ff6574-707b-4762-ab1a-e9b7448ee3f3,1209854183,6684057937483263312
+ceded5f5-8e6c-aee6-9a30-befc6ae6b294,3882861569,15900710675119586440
+8ce1430e-858f-f798-bb78-770d302031f5,453942035,7394929531370639433
+8e7e5845-1ccc-493a-7a37-c38646424e68,827846146,16307799093305034778
+c5b4b2cf-9a13-51d2-0384-6972fe9cace4,3313806459,16672892135271140118
+31ac4fda-ea82-f830-febe-09b8453a1d7c,4109340687,11203163685861552754
+db1d29c9-25e8-93ae-5666-f2b72aa41073,3983776303,12905061967777621048
+3cc2ddf6-b856-6ba9-fc6c-143f1cb02c1a,2615563387,12792707485640815437
+576159a6-dc2f-1ede-85f5-03dcdc04914f,3421513331,7516489948829790281
+cb135d0b-9781-3678-4b54-11e8183386d3,2696193904,3935658585268724825
+c1b2e156-213b-26a0-5a18-0d96e0ac2ac7,1743073431,14810183786163031198
+91e911b2-1da6-19c0-b9cd-1cf3b9c0fbaf,1941804621,15669597982696792653
+808aebad-8978-e245-ef14-190c2eff9097,1062416462,12080844975015042984
+ad54becc-2643-cdda-c968-2c141eefca26,3573366058,10576559085138889069
+cd5a1c72-fa97-db4d-ce4b-f48facdb38e0,1160469143,15852532660995812817
+b2831467-b2f3-78c7-036e-72c7a557ba4f,125998629,12809971191688885644
+2f04da97-86a3-a778-f8e0-93fe4b497cff,2997987985,7935810463235488218
+70c176ef-e474-16a7-d24f-eb6ba9bd3e46,3081876385,1269238527755354198
+860bc258-0b84-6126-353e-cd35e5ee020c,3178670226,1718868838852371471
+ec65e383-1e32-6f06-430f-2b168e56f31b,2702318438,7372372337963408484
+e66255cb-6b40-4219-7ee0-0c471d3e50d6,384322496,18004417015995743199
+e1cc8ca8-f284-fa39-89f3-1d299549beed,702866232,12743169957316597501
+9239f446-b291-1f56-f5ca-435167e2f6ad,3322204726,5453082190574857081
+1654b965-0ec4-a898-a656-c95d8c23bd3d,3467485301,4450972918637526639
+419ca3a5-83fe-ee4a-de53-0aa89da7f6ec,4256754176,13028574338365887958
+8e97d0c1-384b-4436-ee07-5fbd5b4ca34e,496636970,17117992072771607455
+25f2f1ce-174a-e3eb-2746-8170da3519cf,191179523,10075653676512081850
+58a279e7-e70c-b89e-8426-d71dc581d33f,2081375873,18443984850877052568
+1e4bc92a-087f-6a15-6f89-809f8139f76c,386992274,14335450185396236313
+40bb192c-8196-9b9a-3044-a0a5c194dddd,3476126768,6042901344757026819
+d334093d-34a3-4e6d-2796-0fd105277438,2679671695,13035339700256626144
+ef233954-93c0-c9e8-a980-5b0e130340b3,1925417951,2781023945409540805
+7f6a8cf4-f6bd-acd7-3eb8-16ce21284052,2144693574,15759754407074739401
+73e69c27-8fc1-c981-0917-d022cd4a9520,3810198267,362496689962940143
+c2bda97c-04fe-c28f-2cb3-51b1259b3fb2,3522962780,11179345437638157737
+2e25d86f-df34-f1e3-5d7d-904b10b69a98,329952762,9440570920009821524
+b1be2965-ff4c-174e-2e64-0ee5ede4c8d5,1636067903,4722798987723064887
+dfd27d15-7111-b7d9-c43b-5e38bd83a71f,2608027350,10377528832686269427
+5939748b-b80b-f05c-b4d8-14d8fe40e091,431216365,8489037039131172220
+33720e53-9b33-d37c-b817-025f1a55343d,4278537271,710923964654552593
+9c050466-e65f-fb07-8ed2-f62e92571218,3696372441,11831645931769253624
+804d97cc-6d90-e947-3d50-7ffe6aa22615,447471170,7336689244567108614
+feb0a720-5a78-7534-f5f1-06d37728b7c4,780398517,5108996670535466106
+d39402cb-1a99-59df-a785-d69ec3463780,3839203836,17046388719630388216
+90217a2d-6585-0668-29d7-1ea7a7ed39e3,3589468771,4709057237138242731
+e5c382d5-145c-204c-e700-7f018f75d35b,92671660,14142191231171094764
+e7869026-4d15-a51d-34b7-6201272cd4c5,1260546128,5534727220753271282
+fe850629-2da6-e644-835d-e931e6e5f052,836833388,5776941697033224835
+88142421-35b1-f688-23e8-2d7085aa1274,1012222117,13260134461947486747
+89716ef9-42c8-eace-e951-9485809ac73e,3792560895,14951998972904570627
+dad8cbde-f6c4-1dd0-b537-92525c0cd63c,3747126805,5043169601891223534
+3c2833c1-7d65-c0c7-cecc-c6b8981536ce,1810502816,1344918238036396868
+fc8fae6f-fe31-2967-c4d5-413d26076fae,3602318297,4808517924531311969
+749f31b2-2a55-8b23-cd1c-7ad9c98eaa3d,3766468866,12621252086523471349
+de10954d-2cfb-f1d3-9108-26585347659a,2867138485,8005450419515949104
+3777a2fb-1ba0-ff9c-c1ef-63d10151dae3,3534460967,5895070221962241458
+408cf3c7-b4f7-7129-2bbc-8d3ff192cf42,1838622562,5193279049250232992
+66dba9ed-403a-a252-744a-fc5fd6807e72,2440944008,2657310646197755237
+f12b91e9-8813-9564-7422-229ac891c004,2135657735,1530387368303917105
+0cb2284a-ec7e-171a-683d-471297c0db4b,3979901295,661262213578190570
+6e4b8b23-c571-850d-0380-cfdecf7f3ce6,2547355678,7476548813031013151
+565e8532-baf5-e390-1f40-37054fbda7d8,914543890,586011996817535236
+99d27edf-a859-4bbb-48eb-79af23d0712c,1436808199,16594643325097714143
+b4af806e-13ca-3001-e697-93291474a432,171198848,17873737612187911271
+a38e72db-9f6e-4a17-4d2c-be6e317f8962,564774600,13661119018440819597
+7e0f113a-c62a-338b-d6f9-871b9f544c45,4152618792,13520868547577185479
+1cc991d3-d667-fcef-0d39-cc9de4d782ce,3856693542,713073094665903354
+5ab96f04-5655-3121-7dbc-150dae815e10,2775924327,2070335273950682612
+98928ef6-6438-bc75-51c8-f804685fe364,3825461372,957678423581642066
+4ce5a2a1-90de-5f11-d6b9-9767ec3ed048,845207536,14206453343496125343
+0406a518-ff49-d118-5205-1a4fd81137fc,3545831737,2107411223218231626
+be24220a-6b14-f467-c578-7944e1097fad,2160768197,2744350211368071536
+74ca108a-eb96-54a3-e249-18be7cdfefe1,3588070739,15167300366428538773
+682b9d54-599b-ae56-1fe3-8d23a61e28ff,1396585983,16364078483645492806
+76a1839c-a8d7-93b3-77e2-5bdac7be8b18,826780191,6799313411786009690
+ea52ab30-f329-8b5a-05b8-d9aaded3b68b,3641084663,10721629411916479971
+257a1099-d201-3d69-d84d-e9772a3b306b,2607035488,14920333001100994674
+aada3ba8-5e06-20f1-2bb1-bc4396a978d0,2465693948,15418126665959620825
+0c362ea1-07a0-5853-5a49-9aab252de8e4,3960201470,14421865347438619019
+85d084a7-ca48-2724-27b9-c686923f071d,326730830,11642512778336500153
+87ba5226-09b7-5ee4-c5f6-622cf1af559e,84460066,3543770741766564385
+98874f31-6aa3-911e-09a9-d19b94cb8455,752089428,5067477593232079744
+2c0cce97-7954-e15e-11f1-7df40f907d4a,2264928594,18323102930969985168
+98ea2833-1f99-3276-3c38-a246699266c6,113023358,440613092860474364
+61ec3404-4a13-4e7b-12e0-07f54ca66620,3010390387,7180458000196805991
+2730e982-ddbb-7d7e-a3d6-1c9b6c0848db,4199420004,1396672986674741748
+f60d3f36-67de-af35-05c6-4bfdf0312545,2283723615,4668950277267978216
+6edf0c02-4bcf-7464-837e-b6ab87ab145f,1222944208,14649050230722176356
+a0272c36-1bdb-b888-7218-17034eda2f47,2761206290,8839586343618714502
+a849be18-01ca-3df0-7da2-cd49e8c5638e,1904305380,16125069538520686207
+9d79f4f5-125f-c4d8-7aaa-0c6b2bd73580,187181741,5198810223441253470
+643da30e-b107-6225-0213-8475f4b828cc,2341648980,16228649358804140417
+33561b40-580f-46e8-b6e6-d6442b228a63,3481237571,12080954974101090688
+2df7e825-869e-124b-2b5d-ca867b3761d8,2454074874,7390081999627568010
+ea5857ed-e498-641b-b0c1-3335f921c54b,3948796299,7134457405234960944
+66f3eb29-7c8a-eb13-1bb8-f3d2f45776ab,2932962878,17159203553678652679
+f3c56ef6-9d8e-168d-b5cd-faaf12e442d2,3998258131,7977934778838697688
+a621dedb-568c-4e13-975c-49ea80983eff,84528842,2655331471194150158
+56df2e93-8965-7d61-f9cc-2114f149674d,2752899436,11444789047319307250
+3bf7dcd1-5212-3774-cdf8-a7134119c981,1431025779,14362829963962371568
+acbc28b4-cc37-ba1a-c5eb-f676df072d1b,2933180010,10195136363384995918
+de48feb4-9f6e-db99-81c9-032868a81c21,2163305306,14299590174769033698
+b575ad6b-0187-1344-ab69-9bad0230c700,1095803777,9373928968360737506
+eecbb287-3734-46c7-f352-7c261a6ea744,4000755826,6801831827046918254
+21e001d5-04fa-2959-fd55-6fb64d8b3b0b,1660516160,14440971484353096842
+9250ac8e-ca83-3ceb-85d6-a535f3b101e8,1120883053,2047290500587429151
+8ea774e7-3ebd-f08c-320c-491a16b85797,1327627772,7361780193761385708
+d7bd0a5b-9aa5-3d68-8c27-06ce2fda2007,3085327263,5953949339504369880
+2c4967b1-d43b-57f1-2475-bcc3c5e10768,940573174,13123792239638288451
+617c0db1-4236-37f5-b951-b6f590ee3071,2618715418,14380552363084603181
+c9abe74b-0f45-5074-c79c-0c86ca0ed341,45513936,7034750991444136100
+1891db06-7b5e-4a64-39df-2c1ed473688b,40813679,262290675003397555
+f04f222c-0f66-7f40-5bb4-dad1e31c40dc,4139615117,17969225344466016951
+aa8f0a2d-55fc-8915-9c57-e2be4ec88d0f,817563071,11278852260305506305
+800add6a-89a6-e908-3765-ea8e549b4a23,4022058184,5025643404112734008
+2c094c4b-b7b7-93f0-4650-4b452669d949,3125691059,7477482114500477826
+1f8fc14d-78f3-8f3f-e913-a6077120d02f,3482984369,14549113155321495470
+a660f8d2-4f4f-fd50-2cdf-6f1ef55709e2,2727831090,6371059814226090193
+d2eb7749-db19-72ad-0dea-aad827454958,768946554,6293788185417152321
+ac4e2645-bf5e-ba7f-b522-ecb8ef89dbd8,1637539130,4916420544941296680
+8f794066-7e26-ea57-e5ff-1726d8c843a2,854531304,12008000966675469398
+63f70927-9999-9718-ff89-e4d761297967,2016160690,1012222202849747600
+9d53f56f-7cb7-0488-9974-d84f571a83ff,302647912,14199469985155314558
+3bec335f-142d-9ff8-1a1e-81945b9b60b3,300160860,10204418885640183519
+6bc09321-d6f4-fc47-017f-5443c6b5f973,4080979938,10915653044223273058
+9d0e2990-662f-4c75-1f2e-0bed52937007,3881484654,15624981901428091478
+84a29f36-e100-8431-0633-862e2b5efa8c,4278241796,3558723152668605696
+d0a42d42-7887-90c8-dec3-9cbd8e3acf6f,3499063826,1181914729494433965
+a304a3fc-179e-2ebc-5165-dfa7224bc34e,2430859293,654114829103841139
+6fa85fb7-2cfc-69f6-6391-7e8dfc813b19,772531811,12412895412925753124
+55cab08f-32f0-07c6-8455-53b1ac5a841e,747685389,16380970885237336888
+2406a50f-5deb-d8e9-98a1-22615e400ab0,4081898383,17977880814097952899
+7f1f41da-e7a0-683f-10fc-d57549eb613b,2741194305,17686900859478082578
+a7bc6d70-8490-e24d-5385-3644352286d2,3705700561,15613336358188325317
+e9126ac5-af7b-c54f-abf0-c8a91baed49d,1733459933,16938591336595240625
+61f0293e-f791-ac7b-3dfc-d8379d6f2f90,1567230873,18033918717755639943
+7692e59f-fa03-c197-cdf1-0b627cfc9438,1655536857,6539867955071443858
+ca845e20-b6f0-956d-8553-58d72faa8ec1,751036997,11638425807968262825
+49f69a6d-4931-a9b4-e0d7-06c887a7fda2,2577837222,3505267525218776182
+58c27b64-ea3e-f6cd-3363-5b9fa6210624,2763251303,13843905456367318739
+c6b528f4-b0e2-50f3-f7c4-d79b9d3d3b6d,1613887065,466098333045914604
+6675140d-97cf-8778-7e95-c960cf6d57d1,2433348704,4845987105274687103
+1d7d7edf-33e0-ffa8-5fcb-fcd7b2a33152,4056511178,10559040762138043063
+091a6d42-80fa-f1a3-a14d-73ab1babe2e0,569766735,14309233348448558396
+50ac0ae8-f021-474e-9783-458c4ffbdd11,1703288394,7081712414047197556
+659b46ea-cdca-350f-15a8-f0b0847eac51,1150525881,12600023806066353979
+db3e4c35-f1fe-b21a-4d19-d189e290f7f6,716977028,2524896735006642147
+49bcd25a-86a0-3b0e-9d95-15a9a1d134f5,2397473612,12429861599832888339
+33adaeeb-ad6a-7131-8a3f-becd7e17b1fe,3688169028,11293423214925341412
+48ea34d7-6fe2-5aa5-db9b-baa1a5d748a9,262445192,14235482956591576106
+9c49a1d0-e654-526b-0973-fc67352d5e1c,3476842151,1096539393329661902
+30f0b5c2-3b30-588e-e385-5f5bd5a8b752,1510563829,1114574886130100104
+2e3424bf-38ae-4d52-b604-c730546df349,3724981646,2686252381614458893
+38f8a564-3671-fb29-60df-e1d751a68fdd,3874646054,16576976884497104321
+4e35e8ce-5171-dd58-5171-dc0d6d79a465,316882744,16253256262424628873
+a60a4e64-13e8-fef7-55b8-5973393bdb2c,3429829716,17543408643134101384
+38c635d2-f2f5-4887-5ccb-353c08b73fc0,1187188568,6145019544774261624
+4c680852-9f1d-7f3b-c852-21029b2faa76,2011506467,15519033229345015764
+8c4a4de1-f7a7-0395-96a7-c2b342e9081e,1913417088,7088619950594283138
+88f6f543-7ed2-18cf-f6e6-ece95efbb310,4127198192,2053028570181631979
+23d3f333-2a33-e2a7-63b5-d1acb9aaa6d0,1678176909,5847037951682077491
+3404c57d-59a8-5679-1d21-eed22e79a7d7,2480030153,11664346219711606041
+497602d5-15c6-df1d-7f63-cbb8acbac398,762650595,10001238218243215477
+055f906b-0b38-247f-107a-229870b07b95,2808402001,16689923024408998842
+551c0175-b422-58d2-5e01-f75db7a7c40e,2026342392,16926771194691706846
+9138ebdf-375f-1136-7c62-975ca8766042,1817453642,13181367507499408393
+2cf7b5bd-ea72-047b-983a-8c96c1fb5949,1650474062,16321067214897656941
+d5ff0f8f-64fa-9a70-849d-da748abc81c4,2855253307,9542471902729251281
+a6fc008d-713a-7c7f-4efe-6a09e316346c,724315667,8506599696528438471
+e5312c36-ead3-408b-fa34-c1bc12746f9c,1666958391,624790924660460059
+ea98cbc3-c8b8-b1cd-b461-47f76cfc8ec8,3553676233,3957286809714689654
+31a80cf8-3f65-8fea-9f64-ddcdb0aff07b,878323442,3653095474079723549
+5ad3c698-2709-4c14-4015-aec661430b3c,2021982056,12763802676489512850
+3f99d55d-d1ad-765f-ce15-3b2a3f812448,3155234944,3932995797654833184
+50ffac18-265d-b4c8-1861-feaeed72bdd3,3237311515,4841344677848266954
+517d7966-ce9e-d069-57e4-3cc15146f102,1830815752,2722195744242467818
+a3966ebd-1283-a08f-b294-b810feb65139,2531869831,14407875863314949680
+aaac0505-86af-3348-a88a-9adab95c54cb,884379862,17494960639860167012
+03705bb7-cefa-5aaa-55f7-8a1f44febac2,2395848678,16699622659080264926
+b71590ba-9295-7060-380f-483f531fc56b,3822242980,16472213430965844601
+4bf1c323-8e61-64e5-dfdb-148007ab790d,2385785739,4208653258723756216
+a8142aea-c4f2-1285-7a17-e0a94ed9735c,2424199525,8946948642815133412
+1c8a9b20-5dd5-26a4-f062-a4b2b517c05a,4066652492,15624704144329942585
+72f398d9-3606-315a-7603-91426d479799,126730787,6416480058437040929
+fca2bd5e-a944-c153-7a38-bc90d2888ea4,119200180,9378941591584274255
+b6327fea-8021-f87e-f4ab-85de70ccc759,2124828782,11748445409106524905
+d3eda9e5-41ef-0821-e5f8-3439f633c0b3,3998694064,5099351386273046695
+165546df-397f-4d78-02c5-ba4086bd14fb,1818864290,12778968035878985640
+45a2f3d9-d84d-7924-b0b7-74e64d83ad02,39926913,4096756255175341131
+2fee2803-b185-9ad5-4f84-2964b3d9f7ae,2973501522,5103199974653556721
+4961147a-fa99-db51-2f8f-7620ad6ea972,209617998,6743726687960977907
+c4f63bca-2b29-25f9-d82f-02ca30836266,734156565,22691490353662532
+f3fedb36-e7cb-a23c-6455-e6d107b22174,1015628359,7354064513554006327
+bb00034b-a38b-b376-05ac-f825e3a17b97,3561039953,16548856461437126579
+6984ecdd-7175-472b-f2e4-0808e0244d77,3033494954,1011973956238077432
+00d24f77-20f9-3a88-6cdc-db24c83631f2,4217556578,17192880756079606985
+1c6748ca-22f6-81fd-ce14-78d0aa1a48eb,3252480115,17157770646053399365
+e32b509e-388e-5a10-b63b-54dce69aeab1,3078331662,12892787209008613772
+e9c093db-6d79-b905-4834-c44c47f96c13,2259664748,4889898471327154278
+486b6ad0-8042-5e0a-aa20-f2a8a8502606,799205019,14768659380524504703
+c09883fb-812d-6315-eaac-fc94988444cd,3186205328,4964954019372662996
+1e836d79-e100-9fd1-245d-af14a6e059e6,2239111622,14943935078073163127
+d1454557-70a5-10e4-4558-72c349bfd4ef,2740019720,9886860755497704705
+708b7d9c-31c5-938a-5481-3a3a77798de7,2159827613,18332897743701112529
+776f7238-299a-2460-47b9-e36b7ac9be78,434702051,7818726981393993812
+290d433d-0caf-460a-136e-1f9c20a40e1f,643261440,58286372791797148
+f9327b83-92e1-0f13-0be6-b8e84bc4f009,439858328,17923842918991625122
+00cad89a-4492-b1bf-95dd-2e1114c29ab1,1115303011,8739246358278612162
+5de789ae-6974-c301-490f-4ff60f1b4021,3455201342,17343145060035473318
+87fa7732-2697-f158-5f3c-81c31ab62a29,4194867271,2829111278732473973
+a8413e50-bbaf-4bf3-7995-f1002d7e9259,3741863181,17864374498210052348
+856b9328-6dae-bd20-9d13-6e5c8bb42b8a,1236358061,16107189073700635374
+e5e02702-d7d2-63c9-0c90-f323c29a06ac,3000054130,10185952977274405708
+87e6cc38-6053-5410-4ffc-412a0a19058b,1205305232,5788807485751796131
+254d1846-5f32-249d-15dd-10e5e2733a12,2902188565,11453921008567253235
+c78ed695-edcf-667d-c0c7-2fe2031c92d9,1112251891,6917292174932033906
+1f2e8100-fa41-00e4-2109-9cf0a7cf7701,159903331,1904504596092800287
+8bce3d6d-9355-6114-c00c-905344eb5b43,993475039,5193976281018523026
+b6ac2b70-f019-f9c5-ea90-d2e23967be23,3153167942,16934983147927362899
+fa6f4f57-a491-9bb5-d61e-02643ef90792,3399474262,1808092347620682430
+bccf11d3-cd67-35b9-c3ad-eb66b8456cf6,2259470634,14901430087258034597
+8a14f76d-62c4-e6bb-56d7-0c42e91866ed,1854032256,17440263208190415549
+3dc7cbb1-3f16-0146-a0c3-1829cdd14e93,1841543933,14529560001533469371
+6edc7d11-9903-ccb4-209d-5b54f7405f8c,881322478,3549121313548014072
+217cf950-c0de-e468-edf5-9b7600c22b35,1574548534,18113247927156335726
+519e4d89-b51f-79f8-b3f7-414cc656b91f,1041965794,2873531014848290963
+f498b3cc-38b8-8471-a25e-4dc962c9c32f,3070422559,6954869100502779262
+707343cc-1205-6709-88a9-e7357d9e9b7c,2712375252,4200431623831626627
+7364b456-0a0c-7c98-d32f-61512b753357,338653593,15704606263893006313
+68b39aec-c0e9-4bdd-83aa-ab478ee3bc5b,2493989910,5290572366653793871
+fec12d73-77d8-8109-68ef-250ec72e6bce,3016113319,10100991244002615822
+d47e8ea4-f05b-e8c0-cb4e-c8999093fde5,1362754800,14256146895065091655
+b3e4273c-5d4b-9661-b38f-4938266566eb,3260518773,1112467389382409944
+23559434-81bd-849d-40e1-f64a5e8031cf,3275546087,13064997875046549592
+62684937-6907-6a01-a3b2-7cc35365fe3b,3638347640,13832168747894050431
+49d30cad-b65a-3e13-2b8e-963b2d5383a4,3937871463,7481871699626740424
+84084100-0b7b-c09a-328f-023158168e74,1912980584,6093054451376142082
+d6130b4a-a3ac-6a1c-86f1-8bcd011ad85e,4141414756,6719808634275379844
+4e77f2e6-40ca-205f-4634-c90d46722ae9,631015942,7060979895260221335
+69aeb4be-15c4-ea39-271d-39aa9ffdac77,2709905392,9999003855977764148
+dfdf4266-9f51-ef06-3be1-284c05c31eaa,239234636,6982124890740284416
+aec2124b-bfa0-672e-54fd-41a543d8874b,3984000152,17769549620743193630
+933aae11-3da8-aec4-4013-4913057b6e4f,1020274335,7349264070352762505
+ab050d95-6de6-e63d-2506-f09ee0837fd2,451971214,11011969379498579440
+52737d00-0cd0-dd4a-81d7-61e5534495c9,890958591,15291846940142583475
+51ee759a-951b-bccf-e36f-54f4e3d1e901,1038638376,881551016318790969
+4f0d8003-beb0-5c4f-4204-07aeeb0b3975,487107439,10496805971763858475
+622eef08-da0f-a42a-a69c-a72621db57eb,2432726357,7670609360558555021
+b41d7a9e-e472-b2c9-8300-bbe8d89fc40d,1661835424,12027544088117835007
+8b14e9ca-35e1-21fb-be3e-d9d39f5915b6,1086341666,3115007267634000442
+5d46dea1-d3b3-bb9f-c4e1-85922c925756,1289058581,7514353607341489286
+5ab26445-073f-93ba-9752-56d0bfb13958,1266480946,12714213879858817854
+1d57a0e6-b892-4313-c0da-ffb2362aba04,338525994,2839022609611725157
+429b2180-68f3-6f5d-6019-078ee7b6be85,3318014071,4310854348146282702
+caec7c84-e11e-a234-ba7e-8576c6238765,1911804086,2944274303600911758
+18d470a0-6cfc-fb02-ed80-c73b3aaacd36,3225172852,17824056860111037545
+02add261-96a2-31c9-24e9-2512d3923a73,3075223195,16326702140139219428
+fcee0a91-c924-70ab-aa5f-332345f36152,397134998,15063948549692462904
+4786ea5c-5bed-b505-1528-9194c931dc2f,66365022,12819867459066819387
+70c3b58b-23c2-d9c9-00d9-55726989b435,125514935,6010253181640140792
+c54e178b-9458-835e-5d0c-78ed5c4f1d01,1725958665,518767659008881252
+a6d2785a-8be6-8c83-cb72-369a33b013e9,2780290415,9335449018774998320
+3bed7f0e-b0df-3961-39ca-3457ff24aff8,2826784113,17788013769439189354
+2af7ba8e-0c97-4475-3e76-2177b519d9c3,333188550,4571905651216948677
+210d4851-877a-0ea3-6621-399dd0d7b18d,2880445016,4986028198759265994
+403f58a6-4313-5e0f-86da-24e82bd57dd5,984336419,2846824148392605499
+7b974f04-7c67-995e-cced-620f0b762c14,700847921,11620143787329823157
+6c87f525-2c8a-c8a2-67da-05df29d49133,2793070532,17570973601824750668
+7bd475dc-67c4-e9f8-f65a-0912151b58cb,813794165,13072065256670143245
+fae42308-e581-ac8c-46b6-dbb66bd3dffa,3530825576,15252438478920174505
+f397dd5f-9e6a-27ea-2f18-673b23dc7576,4049755733,1489967769967735869
+449c195e-f439-e946-01e3-2b296f24dee4,1905680856,9336233564331906965
+2428becf-38fa-d32f-35ad-fb34a293a5b3,649460036,3919509437458051708
+fd98086d-274e-05cd-bec2-7cc9f6e64dbe,2372362527,4817529572803947660
+40aaa316-df4b-ea9a-a710-3768eac7bd7e,3428900368,5614532541190606368
+984e5e97-65e1-92c9-31c1-96071eaa47a1,767200495,4334125703941829589
+f2b4a5c9-09f8-9374-d3f0-2e315df9056f,1725392770,16369002394407979757
+d81ba561-c2f8-fafc-a69e-975a30da605b,3096897362,342513136196211731
+58c88375-b7d4-4eb8-602c-0e11ad0c7a35,2456638018,6031945141445124980
+4a2fdedc-2f4a-6c51-c186-06c3057a7df4,2080958734,10416930941246054675
+5a055a62-e66e-323f-e095-6adfb804632f,2526362318,18056696904499856408
+e0a878a5-2bcf-8501-d0df-e3b5ab9302fa,2514880329,17280322457890382842
+9088eee2-286a-cc4a-e31a-6f36bdb07609,314385897,7644259602552157017
+10c26fa7-37ac-77fb-e78b-a634e482da55,1064568265,15228538801843818844
+dd1d7662-c198-977a-d853-0c4a259d5207,4106416205,11729266932861837782
+879e8bbd-ed0f-45dc-3865-aec16b708498,1762496385,1676807149621125865
+0b2b4423-a7a7-db8b-97b4-9f847a33f19e,722050736,9723088541892337601
+2f6decb2-fe54-4d79-8e20-c50d83eabbbb,1804067636,10413973875552777514
+d056c6d0-7360-ec07-4a99-a8fbf488668b,3085913908,805768910718511188
+299dc207-0887-1a21-14b2-3718c88416a6,3506780173,9417818023650520648
+e264193a-3084-6cb0-1049-af5c152144bb,1862819562,17461344461057111810
+7f7e0804-e949-7f89-9be7-4e8e4d5abee4,606954030,15588376247078700684
+1e8a7ecc-9502-cc66-007b-ae0126456de0,3381439305,15499507901075027399
+6a246a90-292f-fbee-8c23-c21d40816bb6,3721069459,10717787290047684605
+a7314427-4876-9295-eb45-fb88e35e3be9,2436629717,6387724802624640145
+187e6848-e993-57aa-cd1b-4eec0fc7a266,2832377608,3910906292074070600
+43c45385-3cde-071e-8976-a9277617f7af,1349775956,15184821648063702977
+4d22a076-cb92-66da-5fad-43a2b6f8843f,3853431082,1614932299431543914
+785f98e8-a0d9-b29f-7daf-dbc91d0051a5,3050906271,7149310313399391305
+2eb28d81-0351-2834-ac92-3715ddd8835e,2475347341,16847527770705106898
+3d2de122-a088-407f-387d-0d1e14abad75,2600308258,3769325522724354925
+370bd5a1-cd29-002b-0483-cf11124137f6,4013702350,15688171102295211247
+168181ce-dabe-4f80-9a62-70aca401f492,2704833590,12920279679047626414
+76a1925e-7f76-0731-8dc9-08764a175e1e,2572576846,13872214351758103816
+ff2e20ef-2130-d889-2a38-11633a5c0fd3,3083538620,6230852525256669744
+fe7a3b39-6f80-5440-69e3-b666cf94e7eb,114523771,12058932814272426981
+40ac0640-6cb0-b80a-8a34-f71e79d6cb99,1955774433,16312753253830981947
+8924e346-df87-7c5a-8a4c-e7e87115a609,4014108124,4470665461482417661
+fd755e71-d222-008b-5933-03d7148e645d,1841010538,17879126489409292377
+ef2d3335-4cf2-eb72-47b4-92b513855959,3693723430,400344293032646089
+be840cdd-c48a-26e0-cbfb-5d7d66969d58,191806143,14799114912682438374
+0e3886cd-3909-5e35-ff54-058cbc9ac5b5,2750593885,16041749534921977024
+54f02c6f-deef-ad88-685b-bbdbe8004621,385042432,3081869343529156300
+7cf485f8-dca9-ac43-f7a3-dee3857284b9,2188482403,13081171168475223580
+093a9481-328c-911b-db87-d4a8864c13d4,2347890258,4111517074072536349
+ec7398e9-61ea-3342-18e7-e28921240a4e,980233578,13413746180046671231
+4fc3b028-52ec-a14b-3f7e-af72796cd926,841983486,7041207081344301687
+359f7877-d40f-0a7b-e763-164936328f2a,113778116,12976489236236388559
+e5f43c75-fdd7-d648-5e71-3b8c35011a1e,1750713895,15469560506798527267
+71f71fd3-3be3-a1d0-6736-aefda90008cf,1708028472,5059890844898819338
+22ee88c1-8288-28be-f110-d24e6df3edec,3282029284,1687559834631218522
+4c4f7b25-8efb-6b97-e7e2-f695d14dce76,188686193,3921338576491257222
+a764eb33-b24f-c398-f783-4e03de742039,2199037576,13227400992150663871
+305892b6-5e4d-7b85-35e1-7881d45d2935,3201862762,14335710164991286419
+f042833f-1b3b-5234-eb57-e7076857528e,3868956483,4431066960416043278
+2a74804e-37a2-3a1f-7ef2-da10bda47c06,1146880155,4190055231878916753
+f43b2b47-a796-eb55-7867-696f2413e8eb,3518132834,10549890300618694627
+27a06d36-d4a4-69a4-b3a5-fd199cce578e,3666614464,861122179636385002
+e94d4bdc-0422-4146-f84b-6d4a2b9360c1,3641343829,10879287922093703285
+eff46c2b-42c7-e228-a0d2-1c0729f0d610,1619340943,6132905858753987280
+6f28d052-4970-c84d-0e6a-7cafbd7d8af2,3091579591,8401121007427427485
+c701a8b1-7857-044f-9259-ba5c27cb4e67,1643332450,15411442633657519343
+63b438ec-6b67-2c34-6727-baccb10d73a2,1280474006,10167875072346722801
+af88d2b1-0f01-0709-beca-1143df6f954d,2866288272,11949248777689641436
+4e7fa9e8-b7c8-ef67-cd18-5fcf96ae063c,1219120431,1746803873077209329
+131e9867-323a-4601-d11f-bbfe661b7b5e,2567483737,1844826374534248945
+69f6810f-16dc-03f8-850b-0f356ff6e8eb,3962925186,4879502988476413336
+5c873aaf-eb4c-1824-3daa-fc963ba53cc8,808356590,186478428282256256
+63810b6e-1b75-3864-aade-7da9b6b721a5,1895640215,6811107809938793454
+9fcfc574-4ca0-5809-ff4b-f486d5bdee35,21443022,2749086727398837285
+eab3ed50-b3dc-df77-79d0-b19fe6b37724,3973690628,14404613559747144599
+45acd720-b36c-b0b0-cae2-c2c3ce561f51,952100103,14855915258850830861
+b9503a72-8a82-8da2-5b1a-df9095e2924e,3858537490,8473678566325383220
+66e87c6d-1eb3-9cda-65c5-a938526cf6a5,1732317069,1391906625986343236
+de331be8-2d3b-ff3d-2bf2-90807b73f756,1167318611,11524919137058457805
+62332d13-2516-39cd-7402-64459fe306dd,11301963,17194585727853868997
+58c78810-7c48-51d2-a701-9bd28383a73a,3361291855,10469403096366006720
+f3c20756-fd3e-d2c6-2146-17ede4f1ddc5,2483048521,8346470987640934107
+60721160-6a50-a580-1d5a-42c805082ad2,1421855173,1174115173425691232
+2d3240c4-7f7c-2568-4c24-f6323835ecb7,3574606977,10547609149933252073
+4e806387-673a-d7cd-99f2-c0c983dfb366,1669575523,15110653558129175327
+614ce4d6-d21d-901d-a8be-f4823986e5bb,1688716156,14045519529209395808
+d7789d0c-1225-8236-ec50-38daf74c127c,1128635080,10264977264611092399
+cf470c2f-9daa-dabd-6c54-b0871d11aa7f,2856333739,8414044433083612977
+b521ed90-5c5c-4f33-43a2-f5608de66a07,3700349778,18138180822932858996
+cd98fa40-1c14-29bd-9380-2a814da26805,1876612192,4211080837524699546
+4298500f-d8b2-66cb-2c51-a6aa313663d6,961583407,8089715779317672693
+ac736f19-2cbc-2ed1-2c9c-dc9f5b4166ba,4072046911,4838903926382669584
+e4651f0a-b0c7-fdc8-f8cd-1fb4da07c393,2967835655,2051912997915450923
+ddbd00b5-4090-7d36-055c-1598123a3feb,998066106,10202436126584484181
+c3ac917d-2c67-8e8b-6eb2-d9a7e30781fb,1109537797,7273241897436251522
+922e3da2-f05f-a0f7-eea3-e66bdc927b21,3855330911,5199911112384181070
+17462174-021e-b008-9e17-ff90ac401a1f,3135621931,17646651777906025650
+8a166d18-8504-be97-614f-6ad1b3c5daf4,2446346892,4120843184009632012
+8de9061d-7ee3-91d8-20c4-8b0f862ec88d,2394822923,9564021903104801227
+37e73d60-fe85-f4bc-bba9-b5843e72bcb7,2120178640,9046510402018600457
+9145c8d0-6c87-075c-b661-8afa6e352d96,3117385062,13855431679879368173
+d5bf362e-9bd6-5a61-5809-32676d1559b3,3573645644,14468308702241411780
+74572df6-80ea-860f-36db-dba404f1913d,3424475315,13252968108108851595
+9537a2eb-e15a-3691-0cd2-6d6899856ea0,4225177162,7199436936575905225
+9c319dbe-e98c-b26a-a06c-b0e13be39788,1988402463,11323388038418098405
+549cc59f-418c-3337-236d-b63cb776ccb1,3475962794,13104985671360172283
+5f8bfaaa-4a32-ba46-b83a-500bbd34e45d,453603119,11497862834176364069
+82355403-c33c-0128-f0b3-499cbef448f0,553917605,10464156285548359987
+09b74ca9-b26f-c770-765a-d5572e143127,689861547,13719541145940017878
+65ada274-50af-326b-8974-756ddd0a92b4,4105380939,3651319902892179200
+64ddfa76-92f8-3c59-5ba6-7f73eb4b0587,542631881,16672365707376521965
+6fd8d44f-a13f-0902-ad44-6492615f7f69,3257567777,17329968190808450724
+403f3c71-cf41-f774-f18c-1ce1f6049033,3229808686,14893016927019130802
+112a76f4-8bc5-4985-6db4-2755e98e75d6,833900803,13037022917382546571
+ce2f1a64-9b0a-4d45-5586-03cc55f96234,43988935,6309959365607530252
+878a8dea-3d83-ac11-8cd6-a17f8479f03f,3149499809,4057673435454410679
+882284f2-9770-6cd0-4c09-e8e2702f8695,1942712908,297432905250916880
+b04a8244-0c4c-a807-eeea-86a34c3b21d4,3242442758,13563841211295077935
+ee1d14aa-f0dd-bcb7-3fbd-1b1e50be9294,3443359530,14090196912681655549
+13ac9c73-430c-1ea0-1cbe-7361070fe9bf,1651304722,10806305101600815299
+d97d1c69-584f-aef2-1f5b-c7c725a3ddd4,2227390152,16143678485471429179
+d39a0e07-07ba-53f6-8455-5645a6cb5ae5,3665412097,5797259398193379368
+fd09079e-100d-11d3-41d9-91019018d9f6,607062151,4773604289657334566
+1f2f049f-ee9a-44bd-db7b-b263f46da048,829713473,7821645954872026952
+cb4e2026-dc1a-e64f-58fe-28132677985e,3542355268,5339917777286466426
+56dc308f-2682-ffcd-29d5-5c1011c4db75,3261154426,9636349424838001349
+7fa27446-9aac-7017-c50e-1c938e450702,1457708559,9724953498942098546
+b1aa0c17-16db-135b-a429-f044aa2e5321,1159037978,3271403382370208417
+bc1df4d0-7f6c-5d04-3061-f7695ec72c0e,44889052,8474210151064849159
+3961d72f-739c-d8f2-7d1c-1ddb03cbe4c7,1796626440,13408195040160359756
+0f66b4ce-b929-c8d6-d05a-928450daf574,778009037,2542898642951421515
+8a55c587-23d2-a56a-fc07-df88873a1bae,3001626796,10440893710170063077
+2f3911fb-ed4f-bf92-d486-c1cecbed18de,117745590,11564779725503085041
+e707689b-a065-4ab7-8bf9-c4076c15c6a5,4267345879,5749956445498636029
+329144e3-a7d7-66a9-6dd5-fbb68277a127,966922801,5006403796225168403
+86c40590-536c-f205-a0ec-d97b7e03de01,4293071935,15627413829639121428
+42e162bd-7c07-4f58-4120-a126f5e4ae2d,2819788864,9797746619166173253
+fed89ca6-aedd-0eca-bdd2-d1503f118f54,4033640829,6746617135100396224
+1d16e0c8-0615-b15e-d60f-3aafccfad08c,3923919243,10748667831599903266
+3fde57d4-610a-2eba-d430-e87af307bbc9,3705028703,1658677886058738406
+b1a19c80-ad4b-f576-7616-80117d7dc782,253020698,13783195791719589776
+1f9a391f-ce65-67a9-0d92-2c32b5902762,3486615459,3029289893423776065
+45f0a4bb-604e-3d73-620d-131504886bdb,2884196717,493081245540687366
+cb8479e8-998e-d706-d165-113bc56060aa,3267448374,4331355558747093988
+851f3a8b-0321-8a7c-99c8-f216308da5b9,1598924259,15935548027150907886
+9a911ce1-b655-8ca8-547a-1371000297a6,1239207995,13090188060651890155
+532de314-4e4a-6679-1b37-cc03f6351996,3314186969,17449771359112062299
+84d03753-6699-f5af-9555-e7e7b7791ea9,3158226181,17544560551715192260
+64a64ea2-d60e-f99a-5597-95d896c89e86,2426989188,7063868309313570055
+a1a1bfa7-16a4-cdd7-cd92-d735fea0019b,1925680062,14167432173868927768
+da06f454-0d76-a297-b4ac-4905a4af386b,2821896214,12909094224873236947
+224280e1-ff6c-48e9-cd19-58879c97b4a3,3120170632,16485107534051706599
+e0afc4aa-5b4e-a7d6-912b-9b4a95502931,1217063697,3903454769028037866
+0706db0f-3642-c1bf-e88e-c805bfb24926,2102821971,13128348102734278824
+27b266b4-3d0f-1715-9b3a-21cdbd2800f8,776022280,1778268733079500989
+a140795b-6145-bc15-baaf-e6e9adbb0d1c,2994393369,15720692584715381386
+204add07-6a3b-e43b-730b-0b7e2513a057,1548915946,4566479844769234053
+6ed731c8-aace-b374-636f-aa54e84ecea2,1233544166,1544348883379187944
+cd1b29ca-1e3a-0711-404b-46deafe2d928,2061303172,11507972357260477379
+cdd58222-bfaf-fbd7-1d51-39f149b15722,3993825405,14861429829201415771
+e17b27cb-15db-d122-80ef-37d60af1d15d,4141787330,2610911521984237046
+b6e9c9be-2db1-d845-ef45-6d4252ffd2f4,3532220429,2636781036277681014
+7de83294-f67b-7456-60e8-50a39d8643c7,2782818339,5596538530493666818
+c83402f5-34e7-85bb-66eb-b15b0cb4e8c9,2824785278,12028343175517126223
+be5679a9-3eb9-fd44-fc5a-69b6a9a8b80c,4008175266,11750943127893367785
+1bc57441-2d37-f239-9093-d6f413e2b8ef,1447325983,2465327062828904591
+af45ff62-fd91-85d2-bf88-cee733259538,625868194,15315170393954492731
+640ffa85-263d-89ac-d150-0a324713262d,1054259261,10975767050747697149
+93fb1d36-ecd9-9b4d-a58a-47240a6be7d6,3493261835,1801539283023339872
+66d1a243-2b6a-65ae-a9ba-02ef56b1312b,3614323156,13562465019196665487
+f4b89994-b469-9a68-a663-bbbe5ef89424,3098355974,5798766378283205320
+4c3c6141-2a4b-992f-1bf3-a327e73d3682,3920586655,4317378061882068402
+5b58b1d9-2ac4-f887-72a2-5a4587edc780,1047316030,15493536636119817502
+235a0cbd-f18a-9e6a-e6b8-12acba139818,2116748284,3123646176034526045
+166af77f-3783-c996-a980-19dbe3c7530a,1653133588,6510849392039714134
+dc618b40-b04a-67dc-52f0-fded6188b140,1345289363,3295493829610039787
+c0c043fa-dc24-6f9f-3191-6d663d81b3fc,67005753,16917239014672969919
+16b0bc0e-bf0e-1fc1-b22a-875dfa9ef0af,477615228,445327343560304965
+67c65d92-8354-748d-d344-ed618fe80160,1435045118,10286104948660269924
+d2d41cfd-62a3-854d-9510-b930078406f8,4072623143,8577966849921239588
+6cf0728f-cbe2-d989-e3c3-1191ea86adfd,2478611571,6805289023139099950
+0d2cb471-13f5-2e03-c1d8-422c1c400889,1540554687,15796723328868178971
+b9fe8e1d-64e6-75fd-98d7-5219aed94695,1824676440,2480556253978814107
+cc61979b-dc39-41e3-5c38-dc3040e9f665,3953804457,1123957988774788575
+4bcb31af-3932-bc0c-2973-7585c8ca99de,777156287,15626010766761999537
+8cf50e6a-14bb-e803-b46c-964cd36f66b9,1384796477,17919772360410187632
+24a21a17-1150-874f-865d-74c47984d709,2453486756,4357348239233443144
+6966834e-9543-afff-2cec-edca1f65ab03,538435119,11886948775864216959
+a0ff8801-4549-9fca-1b1b-d84024e6310d,1615275738,12408947457479179810
+9830b6aa-2f45-f841-359c-e47abca0133f,2009751704,6090049420560752053
+df93e4b8-bc39-0a47-eac9-467a885bd6aa,3402393139,13976541351158621566
+662c604f-724b-ee1b-c21b-083ff3b069d1,3647111758,7752250571838668628
+789502e0-2d93-47ee-3131-a18e3e14e3d1,3140567348,9249731010152754633
+32feb083-ce1b-f640-1b69-01311315f2e1,3080472268,13504120942229639109
+d6cb51c5-b03b-f712-c923-9c08a5d5fd1d,3601630293,10273085814221709446
+40f98f47-fc8e-5934-9798-9cef81b42b62,485006655,14989510146782370366
+50b6c042-736d-3b0f-03c5-131e33a4c8bd,435830165,11539341014514473057
+ec5cabe5-e9e5-e45c-fc5e-04b453ea3806,3757787265,1674919403317048519
+6d1a4f72-b1ff-e564-8870-eb2f7e6a93df,96762903,17015899120538511884
+07b8e603-4bcd-ab24-f1df-110b14838a25,545552721,7513599004367559767
+b998be3f-7b62-e826-eefe-16e5ad77504c,1139528606,4326310879979178877
+393af24e-139d-ef0a-5184-d3709d341f54,3564921747,1121567019120582479
+dbd8c2e7-212c-53ce-36c8-d2911645bc24,983989509,8908596307702185340
+cb580723-7183-0dd9-c62b-7f054b314bd8,940625729,17131134090337641847
+160433f6-5a83-a6e9-df4e-cd4960fb08d2,595801403,5739233280277265625
+a8a8a144-f63e-9771-e08c-ab32193518af,2857983544,3186060597690342817
+77d35387-53d2-427c-ea50-80b38b6b8978,2575343580,3220393091923904505
+df25f7e5-d8a4-d751-d459-af826f87bea2,3944421634,8513158424202737303
+f8d679e6-c1e3-cbc5-f4f5-05f2834c94ba,3599689364,2102135045076467285
+84cbb43c-2f41-4c6b-2ac0-d6f7e88f6676,397064695,9161368141185094283
+b4d4c15f-65ba-6a59-13de-b7b363243afd,250784820,11900684442416679481
+58d7059b-2c7a-4215-733d-c1be9902ad87,3656826100,11722955107876225952
+54469984-57f7-0806-039f-39eadb38c9b8,134440815,8698876874825211273
+a5aaf432-1651-2692-b8cc-703fb8d2fd28,3008168451,249694431163996659
+a583fd2b-3ce7-26b6-59bd-a8bc21f3de78,1354958219,8466953677765389170
+37dbefd7-2313-d92b-aefc-195c2c2f6c24,2908866109,8741898711785169482
+2ee50124-b03f-d673-0928-578332998619,1148831777,92388287251209007
+b2259695-cb9b-907d-f08b-4e83678c9f4a,3873190789,425476314514087784
+506936b7-1c6b-f80f-f761-cb6d3f4db143,4160417190,4988889009660788570
+6134112b-b8eb-e52f-99f1-b80c0f042b96,30867602,3312747538673130206
+a00add0a-c513-9b59-a3c7-c970f1190c1b,1029211933,2170055652145859466
+4e718862-5e81-ef28-9837-ea266a06fd10,1979555465,3022475419901078140
+c0ae2097-418d-d986-0475-4030359a9b93,2572793607,18075987979985046497
+2acb579d-cdfb-e787-ac38-31d896349466,1159831967,16510804201667446586
+b4dc2eca-dcf0-824a-259d-3b9480583188,1794886070,17277680837222929262
+4aaec844-7306-5283-d4c5-a1dbb3d0f403,2903430105,2210193732613002744
+b664e662-050a-661a-23fe-d52578f21a18,3285811432,4749567686514591704
+d9e6bbe2-87c6-ec65-bfe8-8e14349e026f,4054237679,8848518402321238345
+8c8d48ab-21f6-f600-d2a7-c75903bef3a8,2435975715,18410083775781419660
+9a5e8f67-b9ff-09f4-6065-01f4e87251c1,2530548073,13527011577180184592
+d2813263-6909-1a63-5dae-12898eb97ec1,3056775256,4692640678910128708
+e737d2fb-4a37-3116-1a64-2fd5c308f643,4016691415,4525604305380637392
+a52a16c5-e511-192a-d031-72942916b207,3739843267,11187879407953467473
+28e804b2-54ac-4efe-a31f-11b8d85c82e3,1690743030,995107164410484264
+478bb8d3-30b1-c1b9-f36d-38ea9bb15986,598477391,119879343414621497
+ca0fb69a-ef68-002e-a77e-384173d043d5,1263446117,16834681590762916637
+4ff4e472-1deb-02ad-cf79-b2236a8ba0dd,2003849605,17176294537310777777
+cf445938-af06-11d9-2f94-e7f135bf8e8f,1220227282,10346165656745760927
+a7f2014e-f657-dc11-c99e-15a1db7581ee,2396926100,9113233341238492392
+7d95e052-2f6e-50a4-0730-f95664adf934,4184508717,1285897767383380899
+c78cc408-68ce-de78-5374-3cc970005dbe,1682768618,17393202090145611338
+d5755270-a114-d546-6734-124fb2903334,3837356857,17241539739152565489
+b4166a1d-ae14-b78d-9a16-c40ab81f9603,1298222433,12449492620587655781
+42f90854-1a84-20ad-3029-090570b7e07e,2823625140,7181496937595450551
+5ee18071-64be-2acf-3ee8-4e1518aad738,60625279,4573718939271944261
+d982b438-b06e-f475-cf5c-b6d6c7197aa4,3818718026,13623771505081079668
+3110563f-068b-751f-cec2-f4c60fd4a562,3717095248,9040014820186903141
+f91032e4-10f5-f28e-f90b-2d1c9b3ad183,1940220501,16650549099007670590
+18767747-a594-9091-3755-0258c72ccb85,3198500325,6637758239801008901
+2493817e-7d64-7970-3fe1-9381316083eb,2263611784,14782547690625666050
+a95da6ff-0624-5e9e-7149-ef522c3173fd,647773017,5764606927464342278
+b7d8f023-b918-e57f-7acc-4d93daa41717,663751433,15595945947368116948
+ba55c8bb-15a7-a022-90e5-6f86f1cb3905,1230776070,14426801633068283631
+c5544433-e4ca-ffb2-9ca2-1a823ad17d1b,1232279450,8766999204906662569
+d872e541-1e3c-0fe1-4659-098b09b0e3d3,2870462269,12796264911155375017
+b6c5814a-9d4d-da2c-b4fb-5d6f5f7ba3c0,4160307510,7812728688443353611
+dada12c4-4d7a-f639-5c78-ca3bb76a2c78,2639836100,18199790475356821706
+850e6b68-517f-1312-a37c-f15a28b658aa,1864516039,4029440442056021784
+f60dce81-0dc7-c060-5504-709557c50a90,401348597,15229895560736250630
+c663c1ae-64e2-67dc-287c-b93ce189a655,395554944,5197587157117485739
+786b3000-ea4d-e4fc-3d7a-f8d72a52b603,1021743810,2555655912198748101
+94f55208-4879-bf4d-afae-c833fe3b0e3a,2874698706,16593716938189932978
+9082e19e-6724-cbb1-e32c-b179402da341,855531015,14558314297952445539
+e1bb402b-6ca3-85b6-4ba0-c463b0c8a46b,937084520,669178049047361780
+ad2a9a9e-80df-6bae-0b87-9e9567ae6ad5,176459060,6812170324586861301
+77c286ec-b2ed-a750-1c27-0145e0e1ce40,4053415376,15223503862810388998
+8c2ab0e8-3ae3-03e1-73d3-6940cae2d728,2022337154,5073534044914690199
+1bc4b607-1085-f65b-c1c1-46c8c9872882,1506626568,3706035498148385756
+e5dcb5b5-9d67-f238-b6a9-feb65ce69235,3216869504,11389725595746503194
+0e8db577-3387-da54-396b-5c88fb0ea16f,2104898880,9793427441068031866
+804246a2-f73c-afe3-bb5d-32fb8f096dcc,4283838969,13014867411365528310
+422ab070-0fff-8f2a-aff6-7792b68d014a,205406903,3172464460672925617
+503d3374-0204-a31f-5de7-3709146f1b4f,2570421905,6535423288930620163
+dfed6142-4fa6-0496-debb-58fc2d25f9b0,2682432931,16681149837285925876
+3d90c25b-5335-b48e-8a9c-96e935865274,2055851005,6698406356777388044
+2cba5228-558d-982d-4565-8f61a5dd55cc,959301289,6849824550358518059
+64bbd357-cf4d-3717-fd0c-730063583b20,3423593460,6774240174159837454
+eb9b0222-34f8-4228-f5ad-cdd69c68f11f,2064193830,13703517483413118395
+f3fd3924-95d8-ad5d-e339-7d657c70f857,310688258,3975922911189922486
+47e45503-4bfa-6faf-4af7-011488a11c2d,3087422798,13788118136374954625
+66cc477d-f237-882b-ce6d-dc6e3ae0254f,3598235856,17631744245278484281
+6d25ce38-88fa-4696-66e8-dfc234b1740a,529210861,5021856463406217919
+08c9d0a3-e4c1-4654-5aea-6dd97c970dd6,533486838,5075993211291121348
+65f4ffc9-f679-815f-6548-2fc07b1e365d,19529044,1393144205983400190
+c68d0699-1dcd-4f36-1897-01ec0f2d1ac4,3717549867,6104695295409514551
+2f195bbd-d72f-7884-afaa-fd80035358fe,3621838807,18038821037757780121
+523df901-08ee-3a02-f93a-f9f519c57601,247240522,15027627297875182764
+3b010a60-8458-dc1d-7365-f30eb0f22357,1510379019,5058411708146420936
+10572392-aa57-934a-92aa-6bf8ef0b6f36,4167732687,11494878887113600310
+4026d07c-f3a8-d35c-1a65-9aacdc69af24,775684855,10364845769720579895
+bd4b3a0d-b607-5b33-02b2-d544cd9faff0,1184609510,4287571897921498211
+d7be976c-12b7-c0ec-8a21-283b6d058083,907772186,15685281642597749685
+62d8cc96-f714-4a63-6a69-b73e9b1a7d70,254060813,9842125707514233401
+95d72f2c-1655-ae79-6130-a358e7a833d4,3679939892,835380103269693227
+ad7953a7-f8a1-903e-9481-191a6403dee0,3192182656,15935109231433010132
+fed60eb5-7dc1-e976-7b91-af91ea9a2412,3483458125,454519339054282674
+35e764c3-fa66-821f-db82-d66b5b07692d,3151233115,1868521732232752309
+6980b720-91f3-3f6d-d53f-71ad55d59fea,722766175,17723901988654408522
+a6706709-33ac-66e5-ef2c-7684a86df752,2861440067,7759529067389557613
+b3f72dde-4d43-a7e7-0397-c1e47db5f28e,497299627,575710575104967227
+bb88deb2-65b3-a0b9-b3b8-86e821ec491b,627137973,15879340026580589485
+30ba1bf5-bf1b-f853-db4a-5aba14e65361,3700036279,1901837482768978805
+5adf805c-2a0f-c296-a3d6-abf3ca564ea7,3023533335,3142279588212637096
+c45b332c-21ca-8a6b-135b-f42ff8994266,727405890,12203567371178226220
+a677efa1-bf9c-e1f2-fea8-2ac4ead62c8a,383130159,15682765563971719300
+eacf9298-4b2b-ebe2-71c8-079e3eb36c21,1295088,17040499308987956156
+c178db84-7e61-4bc4-ba0d-bec6f70ba55f,120403019,676867283315062582
+2289cc3b-199e-c8db-528d-f1b37eaad7e0,1948475155,11437958507092522813
+8eed710c-e2cc-b90e-5ddf-ca8e3e683dc8,1249501944,9742859424253171645
+82383fd6-6e3b-309b-d55c-4efdf8bee278,729807908,2800578615859719929
+db6124b0-809e-3216-8005-bf490f12a5c0,1011895937,6672818537301479469
+82905162-f280-af73-3465-dfcd543adef2,4200456192,16891928810246784068
+55c8cd6e-24b6-cc36-c7d0-5bcbfd14621d,4199843510,5784234017377320314
+8dd05a00-f99c-f88f-6955-889ffa3ec529,418156978,14122177112596861184
+7db2605b-96c9-0f6b-67f1-a13aa9ba5167,881878666,5237630685060945485
+63542dd5-1dd6-4503-e09d-5338a9fe7c81,205418154,10740577747978606362
+2f315284-f9e5-d612-fb46-da9e1b71208b,3802818358,11453776906908811390
+793bbc16-cb2e-c445-aa1c-e8a263b80fb8,2839815270,11442357763245126365
+16c5615d-88e6-6ff8-5fca-e7dc0e927026,1384724447,13888628745124294783
+f1096027-390c-e80e-0d24-0d12e4d3ce08,3414204709,18128453549208853266
+5b2c6b8c-6bad-7547-3fa4-5e4635e10481,1332558646,13403697447922406062
+d808c83c-e26b-9384-0559-35e7983fa21c,3593072675,5929382295403046345
+501530a6-dccd-35aa-cd68-0022776ce23c,1950238169,3053624379391890996
+63628b2e-af51-b0eb-bfbe-e686da000038,3486853887,11084969032598305406
+665d0082-8604-9bcb-50f8-327684423872,457735454,1970119293547139445
+9fda70ee-833e-d1ba-b079-497a6de0a945,1235879229,17766089117511990987
+c136a5c6-d4b5-c3df-9cbd-f699af891a9f,2924177108,15892279086672650696
+97e74911-95fb-33ea-8597-fbab7e7981e8,3542400812,6362875764160779727
+3257f9ee-47db-4c61-ef06-42a724e6a668,2723273668,15020689197635493619
+76940707-83ae-a1d5-4998-ec3e035ba0b3,3531008739,10844670914637966803
+67e05c9b-c37e-a014-e999-fe8b3dafa3c3,2714573484,6314184821996021363
+11d93d51-e642-7be4-7283-4d3327a97a0b,2491471309,1225235346776105897
+529b7f33-05a6-a372-a4d3-8a330b23823e,1256777158,10340951126425508748
+ad6f6a1d-e62c-c784-1c26-0309ff2bbf05,4218345131,360069731127522565
+041d21dd-ba79-c7cc-362e-8a298aa0baf6,206165863,10699058572182734151
+14870dde-03b0-ae34-0020-daefa0554b95,409603688,15239567059957273335
+3c73324a-4579-b1ab-c61b-dd062e519236,3365225763,3552811208281221029
+53552969-9459-a687-8f21-9599afa48c03,709786330,2827177378207843154
+ad8ef7cd-b384-94b9-7bc0-c923c380ddc5,2516901104,8407985172387665139
+59cd08c4-4fe0-b684-7514-3ef5e1b555df,1898367381,16250372351605257853
+e70d5937-729f-4fa0-5968-0e058462cd31,2247432374,7491210870103687170
+f056df43-904d-9ec8-8f2b-43a18f4227a7,2907999935,2610757659265419308
+821d78b7-7ea1-8793-5cc0-bfc5329f7755,3800956543,13013836107960219678
+5b9c1f45-47c3-8abe-04dc-a2b8ea68a7aa,1714830342,8557453778197162379
+e9cac974-fc3a-2e8c-fe39-045186edf41c,1750350694,1676224250281537642
+a3a2b1c2-6958-1b3a-7979-a61ef54ee19c,2406192236,732686871219439224
+5ad33113-4229-f979-eeb9-4b0ccf9ffa65,1898231509,6381804635928007403
+572802c6-2af0-b70a-688d-e04c2dd776e3,3469488701,5820266524425079201
+7c5d5d96-80fe-01ee-bbe9-009948f73a47,2561298740,14786509012003450063
+01447f75-2b1b-6c40-d559-46666f80cf1b,1261967891,2525558207824732657
+8855c2ac-454b-2afa-5f67-1feb098e6ca0,3184912198,509184541980682165
+95938dc4-649c-9328-6d61-7b66602e46bc,4245915709,3056782145677851776
+3fb5f73f-9b7a-ad96-a3d9-4e8de45f45f1,262602146,1503955167774328663
+c1164d34-fb5b-8d0e-be2b-6d161c0ff8a7,2247282792,9456938446410183244
+e2baca19-1762-4697-00cd-55c8a355824e,2499163371,5844629973023751798
+130d3789-3a8c-f81e-5d65-bf9b76671133,1528954686,10075866085044732649
+0112d8ff-a93b-2088-8e4d-8dbc419bcb80,2393899065,17594149729101385153
+0a45f730-7403-69f6-9851-594dcb007eed,3168985595,5844263883112075110
+beeac1ca-20cc-0c94-1fe2-0f9fa1b4a089,575307968,7455860544430653567
+aac2930b-91a3-9c1f-df20-aa30093a1051,274484844,8658754747884820239
+76138e48-2157-a308-c204-7e3b5cc719bf,3597996810,9650890028131212434
+a0b79dd7-0492-39b0-9c2b-45d8022c9336,253237517,15134443818091328121
+d4bcd82b-358c-3dd6-a9ca-ab64e09b5aad,1942437290,17057569387040247597
+a41efe69-fc8b-b411-ae3f-d9595caaf6a2,1702535876,18336525785495013597
+14bcbdb4-9fe2-b605-3b51-3bc43341a6fc,622181777,16622874496525849734
+e2526769-8790-cc9d-c977-e27cb0d7d5dd,2320694309,16099992104915702197
+f9c8db61-0007-d6be-2c59-301626d4ea65,354975746,4890042585337917366
+27430e97-0586-9676-d421-ccf5da9553c4,320571192,999263514385341293
+0a40628a-6229-977f-4f49-2fc827c91ea6,3062352199,8777438456845858279
+fc426588-c812-0f37-1572-4d2258e0e14d,3503390270,870691975834376852
+34d6d276-e265-d853-6808-809415579cc2,4291292854,6605299750404887206
+3053e0a9-12ec-7e53-2360-d558ebc98fa9,4081966414,14947373201976556771
+f9e3dee3-ae7b-7db5-4e7f-8a820a5908bf,2656662000,11189124931675952112
+3103430f-6079-6a6e-2ce1-bb9a7663a057,3679788719,5437738445049921329
+cbfbcad6-c036-730a-8704-665e0e59642c,1389193697,979049264197890950
+b7134bf7-dff3-c36c-1f68-0f146aae0aaf,2736862311,11528211711811361728
+e2790f51-058c-b35b-d106-42131e7e50c5,1550750027,2379078810176374741
+830f3c61-4472-f068-43ee-0617f144d6ba,331029369,7415354887720726578
+76c07eec-8590-8d44-8560-f5c98c9d5730,3905025337,17821203443727506520
+64a39097-5f84-8e78-facc-8c278dc62caa,3280810179,5205774326698518462
+ea2699f4-c707-c806-31a0-1ab1dd65f309,2367389185,17361910541149524202
+b9900550-822b-70eb-6b92-b91572b03890,980853981,1575897921908515322
+6c6483ed-e9b4-5dce-09bd-84c49d67ca72,3505261028,2942427489895988504
+f23c4a8e-fb06-5ebf-7e6e-48f13a5eae8b,2299078853,190015946777916410
+052d42eb-8cfa-b00b-5d94-ee984338e53c,1699842699,11470371155091718117
+1fd69d36-52cd-73e6-f351-24181fbc2c31,2386898861,12999765914437636503
+bbb04e0c-a863-4e7b-eede-a0a67bd94ebc,1421119655,6805058100703602722
+081c0b02-b63b-b9b4-3ede-24e1ddfcce46,3040325978,9174186985553729922
+fa7ce36a-82f2-0ee7-fc18-f16e63754ec4,1859509664,3709074947834649446
+4b32082e-7187-9fbe-5a24-dd154c725812,2436095078,11395489860229651672
+d7a0d2ec-19f2-e9bc-c6e6-3330d75ab369,3785653156,16584971752809109446
+74296395-31f1-9a49-f12e-28615e579194,2541884259,12944506404876417578
+3aed5e84-7452-6053-7617-8f04f26a906c,394705363,2254984875814334991
+851d5365-aced-ccff-0d89-c1bb5364026d,1203308599,2427442821958871605
+247f797c-8ae8-4965-4c75-74512ebcfb66,1248893087,8969658289421089459
+2e56129a-3a3f-4dad-9734-263d65bc2c2e,2639400908,16363064186356654133
+a9e1029d-c654-3e75-666e-dbfebceddd31,1944064786,9523062480711161965
+8758cc0c-4c9c-f502-4473-d2a7f6fdcd48,2261062848,16819627217795085986
+23f07478-fda7-02a7-9659-1f45a578278f,3805636707,7868967244140181573
+a0cea06c-ecf7-3d05-8068-a84e926b1f0b,309642892,7388902160717393362
+e273857c-5255-f9ad-0851-79db0b7a3bc0,3695227724,198294263608820485
+4b2c0612-d8a6-6c17-83c3-9147909d6af7,3604758488,6607494532417358730
+44fd0926-cbc1-a05c-1ef5-fa7861fc8905,2336255080,3677739589312711197
+8a2ba9a7-aee7-2fc5-0e23-79a28b468910,3222653730,12773231436655773468
+90c90555-0b16-2c55-3a47-0c713fc476f3,2597201927,11500845250818793187
+f15e3bd6-a94e-1653-44b8-d6a255938d1d,942227501,14482218967771499157
+0f3c47ab-06b5-02a0-1afd-5f3921f0c47f,4189363691,4295568702894714354
+2b74e39e-8fe0-d3ad-c12e-42581bdd7f55,1036863952,1249981486117194531
+1cbf5d84-78c3-e8d4-d788-0265333891e6,1508516955,15553945068645433140
+094c107c-c9d7-1bb3-6f48-8f7b5e7e6168,1060949283,16247944962128912354
+3febd7fa-2d92-7d10-96e0-1bab87dc90b4,1684586867,6158835270880363292
+03a41cad-604b-723b-c32e-fc5614a7baaa,563181726,10087761543326407074
+7675c48c-8a9e-7058-bda9-425aad7916e4,2009586489,7880577882300497186
+b7f173b5-5bff-d0c9-95d2-97a07fc260a1,709243429,12836613616796689226
+bf66c39e-5859-7fbc-9c33-12dbdcfa539b,1866721578,11542589559159169418
+98120730-e5c5-7734-9b31-e0b0365801d9,2599917790,11346447707753980556
+943a3d5e-04b1-d378-48da-f1dc6f3a4550,2825511566,4907602704230438243
+2ae2a48d-ffbd-5485-e35f-edff9fc691eb,3027223639,17378048010667897824
+8450dd06-afbe-6ef7-3cf3-b5878120348b,448754321,5667668521609158606
+6b5c94fb-d7b5-2d08-9b2a-f4c4997082ca,3541834700,13008761005677799723
+60ae7a6d-c04d-f736-d9df-69d0dcb83bc5,1409202013,17019629634039381
+e21fa02d-38a0-ddf1-0028-0afc0a519809,2595249612,7111068613200118315
+22cba58f-347b-657e-8ca0-fece2fe47ef0,4230407898,11762331882371713024
+d111c901-20eb-735e-393a-0a74d8fae102,2560469510,13881927345954473
+0274752f-46bb-01ac-811b-2a66a6ec1f39,2706464156,5569720811527611246
+44664833-625d-2130-d032-980d25f5ecea,1149135460,17302005996771206495
+0665f450-24ff-6055-8556-40f86f7647f3,2733435616,16795817499692110143
+a5b9c58f-ee1f-8606-cd9d-1a7c82a76dc3,2773812625,16864249246997005979
+4d40f217-9c53-2421-7c65-f5f2d9181cde,3082985829,1533784464807142232
+01551033-fda5-9005-6a3e-7abbdd21574e,2389658637,7975767039819247433
+fde75d9a-8c56-9a7a-33ce-f8499e3ec49e,3771269486,6398901492218708976
+5e853c86-6f47-1852-510c-770c3746205f,393428080,2654962131566622579
+c76f4d19-b64e-940a-37d1-8e2ebd485726,1342327113,16389892846664502686
+dd7f5c62-1782-ee38-b120-06048fb2631b,3024670233,7183305000160429133
+66b70eaf-ab34-8720-1b08-710d7f48ed0e,2506530975,5937555575859305653
+7831bbe1-d435-901a-f662-d51ec6ccdeb5,3701736400,1618288536369311008
+d8fc6e1a-6fb7-90e8-4e7f-3e6c3ed68166,717557013,9503910401651318847
+839b3249-b072-1fe8-ec74-fed16a0a1f9d,2404332863,2685671733181031835
+c692d0d8-ca98-05de-f2bc-aa65e21104ae,80028635,9163484613623530224
+76f3a5d8-ce7a-6d1c-6f8e-e027ebe53755,3469982761,1241945750472004180
+c01a5007-421d-1cba-04d0-43350ac17e14,2104468913,8037164725518845168
+f7ddfd9a-4059-9bb2-17f4-78a68603b531,4096755416,397196831361747345
+b6795ef0-5b15-94d8-ca4b-6adf0055f49e,2445399771,13522324182556432367
+c1182d37-d72a-bf24-8cdc-8c14f7191a09,4288497653,13531452032813571794
+dff9b266-470e-f055-e265-64aa524d2687,3380838200,6895176623933243073
+47d26976-901f-9efc-19ce-3f2d52780055,1871464086,7378300301841022658
+04925c3f-5970-52ac-6f7e-b8013d55192b,4173641555,7695654969839060907
+d77df9a8-99ba-5fbb-e4a4-e4d6a42404c0,3521378544,12534888961556398018
+645034b4-a47a-2bc8-3d9a-276d3069bdc1,4021905398,6090863347396993912
+bcb59ef7-3519-10e4-ce3e-94f4af66d853,1018129430,9102124867552979103
+af072fd7-60b9-0887-1f85-105386e4f5f1,633047381,10026575298993517905
+472d0d03-19ab-9fb1-c814-9d270042eebf,996766135,17897950082382592094
+0e1b8be3-50cc-ef84-4626-7c0619e42a1e,3697931055,13333712808331520240
+7334755f-9be6-337e-fa30-10305531a50c,2982854179,1385682095867477245
+a253732d-5b13-f785-783c-7c08f1cf1d07,3221585503,3509972548149379951
+01a0eb6d-9410-295f-a758-a9700836007f,2543563028,5015604886670807364
+16e3cae6-88a2-7c0b-75ed-3b097085715e,221464443,6835094170324664739
+5dd6a78a-8b88-ced7-e698-01d9d15e4742,1287451212,1830060744371183061
+19ea1abb-04b2-aa98-beff-533e0609052c,843105869,3302244071996695251
+2275aecc-4094-34c3-9490-8e32ee24f907,3517605610,15831615160652782199
+8b0e4525-b1b7-8176-b559-7537582b23eb,1539034195,6453446378987532135
+07121d14-4e86-e4db-c3b6-0936a3508404,608170477,125935494651025835
+8bc31ea2-0bf2-a150-74d5-2e7b4e8f76df,800627653,7707497616065295685
+8e54f850-35a1-c9e3-49b4-87b87d2ce5cf,2054381884,9955462053686612776
+6006b18d-311f-8155-35d6-38c6eee94f4d,727125315,16155091526906556797
+f08c2cbb-0787-aafc-a3c7-56afda29ea8c,87130435,15486121352241466444
+e7e9592a-75f0-a998-b68e-0fa9f691e9ff,3324863838,10272387799331554469
+6de18a79-1597-ffdb-9a08-70b06b153eb0,576439098,16757707247530849269
+9fd4fc27-43e3-0b62-2bd5-ff30a1e99110,632338164,15228722438386196308
+32ddaea0-45a0-5b41-6955-3b172cd9cfbf,1725331460,11092324278387410841
+76c0804a-d110-b7ad-2665-743527d49813,1086255411,5903974461901801060
+bb18269a-91b6-9de9-c0f7-153029f4fec9,2735393824,10110118078777318885
+340e0b19-c8e3-17fe-6965-16637e40dd25,1899674473,4681134719355184499
+150ec6dc-8598-6c4f-eb75-809e7237a19f,4259331148,18280703598697691830
+112818eb-a7aa-2b6e-22bb-864df7899f93,1235299156,15431194062222244931
+1cbea07c-feaf-8208-03e9-d3eecac4658c,696970026,16367982746666788373
+5fb3b005-7e55-c981-5a65-b5ff0d10617d,2061990480,7535150084244660559
+f1192ac4-f91d-1633-0546-1d5d1c6e0f76,3818421830,15629014606890536172
+10224cb2-7804-dee0-42cf-b64fc3d11602,1994423925,17381629878712902141
+4ad72afe-d94d-1c35-d9d1-07b3d75cb4ff,576063288,7830012539751234814
+2f9be9d9-d79e-9f01-eab6-28ab42648be2,996430065,4814299404298234988
+a48ed1dc-f1da-9651-468b-99c631bb6984,2052240240,14112048649745862190
+c4059302-ae94-f37c-3d18-174a8457092a,4185576520,6200376970153265225
+6098aa99-9817-7484-3133-16219715cedc,2063076543,15066955997870571082
+75130d6f-0d3e-e488-f765-0dfbd1365f2c,1524289081,8542403557034269452
+206fc5ed-24a1-e4e7-92a0-ce3fccf6760e,849381713,15297435452150332041
+24408e6f-0dd0-173b-e231-5fe0f0779e4f,2282529322,4928524533395961422
+a77c8dd4-d155-b445-614c-77fd78cfc994,192872159,13108940215793884803
+28e0a611-8dd7-270b-0356-10037ff51714,2351543442,16504781346074683867
+d1fec68d-09ed-b256-d704-b903ba04ca2a,2801966067,5112529672476308532
+972cb59f-9c7c-ed20-9db8-6b16d37237f5,3415494382,1477419234559813308
+5f60dfe1-301e-c2b4-fb2e-a285fadadbb3,3629799703,5612263135109194384
+40460712-2ca1-0d0b-689c-859d7314add3,2094547249,7727136795767161871
+24cbfbf3-393b-e71a-84cc-d1552874f65c,538585229,11588036896522004699
+664b8e5f-c462-6f81-e57d-04d5597162cb,2105136336,14821914369255839453
+da1b22d1-3a59-15ec-8d26-65c98e8c84a9,3073427887,4993567471208627973
+ce4bbe84-9ef9-f889-a7a6-9369f78969f0,3193025412,12524559850968914755
+0b34af87-a7a5-356b-5006-b13d1b056589,115216839,18095220666165745220
+9d4883e8-604a-c07c-8f38-0726d86a394f,1578570775,5747448937871373079
+93f8219d-99c3-6be4-1bab-e34b8905d30f,666965264,6083475139036702967
+2b9a6278-3cfd-5ad0-14f8-b14fab50f998,3739609745,15304002032958076095
+e2625d8a-3506-e349-4f31-fca7bc569723,924616809,3853489868885574448
+72b0e28d-5d09-bfd1-5905-02ba6ef24d03,2375841244,7421566623398257833
+328795eb-e68d-194e-efcf-786349f7ead9,1787109231,4917028180804216490
+055d3476-9cc0-cd12-a806-7657901beddb,2280342185,12732631983801712450
+4d1f783d-e89e-cce5-9625-e9bbcc91023e,2806672925,12897850723404374768
+5aa2fc25-6d32-a473-c8e3-4d6adaf7140c,3689256776,12957218357616675005
+bf16fac0-2af8-b252-4cf7-0f58e8d91753,2209189135,8373755103695582888
+0774784f-5373-a0eb-0d48-17a7472c3a60,3277099600,9757958192198535142
+b527e71f-79c9-0ad5-9a51-8db72ace9850,201594104,9362628802851495060
+64cb09af-0774-d801-1c41-01c3bf048c29,4192291621,1680804567622596488
+2459cac7-91d0-aa93-78b8-b164127bdfc7,986200319,1024102250953668274
+98910de0-2433-3181-2fbc-e6c207a13a28,1961984670,6026918430991584858
+394b93fc-76f9-cf5f-fc73-906f27a4c7e3,2099055109,33381180603397282
+cbeefe5b-8a07-5458-6807-905696b0c7e9,321286808,11859407149608824246
+ec8df4ba-d2b7-91f5-5115-3550e4509870,1196363022,11269365048576208995
+a74b7156-4b82-31ec-54b7-6d69c9bf4d73,2865876912,5993377095704421865
+dd541353-e724-41a5-0b35-9812cd3ed63e,462709201,8578483912064777870
+9c1ff214-b9f8-12dd-420e-7a7463655b56,2137603815,15150187404564638330
+0559b167-47f6-1f00-c8e1-74a9dc59aa90,1063049524,10172453357907952766
+aebfe748-b55a-d704-3b3a-1b5f4317bb4c,591568105,6462352348128787414
+57e174f9-b47b-b021-0451-1eb7218cb44a,2993838439,4109277264831158284
+5599b12a-1784-cfc5-6263-5a6072839ce7,3624819201,17168964701138135824
+199d1bf2-ec81-fef1-8580-3109dfd67ab6,2961372426,12088366274750740020
+5f3e210d-b687-ff64-061b-455c3e3ed875,1532420831,14844111132823774745
+b244a0a2-02a2-ab3d-026f-c6bc7107ef27,217697710,7073406406886389977
+6b16647f-a71d-4cd5-29d5-0d2dc6f157f0,3242108639,6482497762801224438
+b8bbd36e-8173-860e-1077-21755044d62a,1587451936,1295806852089851631
+95f35d12-8a7e-9792-c646-c814eb252cc4,2802614893,2899042327625526367
+b1d8fa87-1b01-c884-eac5-b60afdc30f36,3752507036,903641825474357044
+8f2f16a4-4365-a51d-0f08-2fad0f641e43,933297023,5075514288598681680
+0a3fbd84-29e1-fc34-eafa-27b38c968c3b,2843268618,6709700246734269354
+5b08e5af-374f-2443-3d13-32715c51efe2,1507456049,4816028765239860811
+43a1a055-5dc7-ae94-b7c5-7bc0ca0ee193,3611021900,2536389625780987707
+4d091c6a-844d-a18b-b09f-ccdedca3ebb5,2390243317,3167112285070166339
+d5d5d3de-d023-aa3e-089f-8f76a4167df7,3262701773,18391453947835072021
+1e665e87-9db2-bc62-3091-18f13ced3301,2618266663,14246843586021264880
+551abf0f-a58e-cbde-6f49-2cbbe32a95df,1299087158,71617005690301218
+dc330ee7-a395-3245-5cd3-b8c9a5b9a021,1151805349,14656996298771966579
+016b1cd3-2803-1d01-aac6-e7576dd0a716,4280579370,370056560864724858
+9d237220-3616-cf30-3c34-f7a9d642c321,3596308161,3284699881295495665
+85e3e40d-e3a8-147f-1974-2bce1b5fdecd,2054168242,14328373879840351355
+fa2a0db0-5b41-b4ae-b178-0ab3af4f8c16,4282923361,6734119208670251536
+f659421f-54b3-068e-98d9-3db846cf80a8,2252916906,13662422753972784933
+08a10f0e-f937-b68d-a379-3bab401dc512,128788313,231700091104353483
+24a88f6e-12e4-eafd-1d99-8f331c8c15ac,2390615488,15565815519147574923
+8f89947e-4b10-0e9c-62e5-633230ec62ca,1861637498,10427868109246740668
+ee8adda4-bb5d-2dc6-8d93-359639dd3b1f,229013757,5391604803169726916
+4f836183-772a-ed81-f8ee-92251c5e7944,364444448,9099004343102306451
+7d1dc32f-e357-1f84-7dcd-472b2b099981,4070613598,16680185900480677861
+b34e8cc3-5a60-0d98-c720-b87b9636212f,66957508,15984641877848913273
+8730dd6e-b948-891a-7b18-19908b00b369,1558178804,719911146947467661
+f5b90559-3112-f626-d4cb-2a3afdcb8035,1616130587,10510350431636924054
+5774dc8b-d47b-86d1-7202-ac8497636625,131958044,494496873393764987
+5948dbb0-b33e-82ea-6144-29bcc9972057,2882519373,18105199930462514154
+09c14714-08d2-18bc-2207-0506240d9b91,3072152716,5291645952400247872
+63640a4e-ff82-4b3f-57a6-c2adb208bf61,1372557510,6796515562655821335
+dd4a9588-fea8-fefe-5ff9-047bd5576c55,4035909437,3977741055680033565
+9b97006f-918c-29b4-e8a3-2fa71b8711dc,455570267,3066077701445395678
+3dcc1d0f-689f-f6ee-ebfb-8fa172ba655b,133332764,18024747706086354147
+954336d3-1ec5-e826-2f3d-a82e4910b871,985384507,2349495945171704255
+2d5c2ec9-62a1-dd5c-b0bf-40cd8b17a3d8,80260596,8528143144700171777
+9ae24e8d-db40-e1b0-90bc-25005f1c4c1c,90569566,650275722810296745
+74a3f174-75dd-e360-4221-8a64748fbcb8,2544170724,7861010286012116541
+de2563a7-30d9-02bf-7aab-1405a81b46b2,197037610,4011332724416936392
+455d6aee-e2f9-faff-6c5d-a8ccead9af07,1929151277,13221944255916591185
+c224b38c-f0e0-03d4-bad7-1f201bcabdf4,3698960361,3944807977476844428
+4f7f867e-d978-ccc8-9856-b17f17409928,1174940450,10377569054210713897
+c4f6fb0f-f042-7442-195c-3da59852ec54,4068195271,4635957498557240779
+1228ea7d-25de-0a3f-4548-bfc42b603f43,4194812974,10878376931346896314
+42c91c1d-380e-c496-08b3-88a110d0a6e2,1214820075,6192212727966904766
+42128c31-d1df-7b89-3d92-6719b70453f3,1424180410,7245529407717102530
+5c4975b1-763c-a648-66da-b79a8179dcbd,2250115456,15258720921970804183
+2c521aa2-7960-6734-958d-4c84d9190eed,2422192994,10810159844706751079
+58be5250-cec1-5049-0050-efd6e3f94e58,4074814457,2265385732206009624
+fbfd8a5b-bff2-7a2b-6cce-7e6c79b2b61a,3697761236,15105981005796866578
+520d8629-5ead-8db2-b56b-0c98b812fecf,888077883,10790762479700536071
+ea429ddc-8e04-11bc-043f-0c60b5aa3b3f,4001507441,5751699751916443907
+20876a16-eeec-f7c5-128a-e763684b0b6c,2141108005,16007446356182269185
+c1ed5c65-2e36-e790-bdef-e4b815a44175,2787856374,2224187135785548928
+802d427a-1b41-4b61-1edc-6e9f701e24af,3682051816,1263423695353230226
+7cd1c4a2-9f8c-537c-3cc9-ca7d103a0a6b,2051107902,1580943686126056044
+c4073217-8e43-44cb-1fe0-9f6326da0b17,1142174774,157518095779715724
+ad1c1610-d990-bac5-9aa5-f5d0ab4b0a88,203687986,8682712494664190747
+0bbdb03f-46f4-280a-de16-adb81ec8c551,1522131344,4057875072915600490
+563c53bb-ce66-da91-0b8e-6de2758bee94,4179665662,3924576275194890324
+5b8b47ea-ea7c-98a7-1153-4da659a6b435,2729844284,2182135816078712703
+e3e5a258-e7f9-bda6-97d8-4c520ab14275,2888494163,12499606733847664694
+8b96769a-f569-8390-0fa4-54ee093332a9,500646195,5462720362496825781
+1e17d7cc-c44c-982e-f0eb-c013bb302949,826374586,6878348048158705601
+45d79f6b-159b-184b-96cd-ac3203b45db1,521188485,7149005249540078542
+3a1fb1d1-5e32-cc43-453b-7de36d5c6395,2671485107,13844612639364060906
+b21a4663-59f5-ed97-12d9-6fdf06fbe28b,2150039295,8327428427744189876
+4d58ee6e-393e-265d-b6c1-5ac49556c6ea,1916594432,14186630317706222567
+52ab673b-891f-ef13-e2c4-efcd73665795,3218942970,15022791046518316013
+b6f161d7-d22d-4c37-6e7b-d79ce07aed3a,2567097030,17420404267081557089
+ec781c90-17df-6488-4eb4-58e5a590b04c,677292694,8433370623251060968
+299a7399-3901-4127-7fad-4a67c9c8150b,1843852359,12898870628251795980
+13f2a354-7ad4-5ac5-3610-b769c295d98a,2102537591,1918975246214641274
+f8a11e02-e0c0-192b-9baf-ae3c415c4359,4009080417,11929310513316765198
+b6bb895b-cfa2-d8ee-3280-9f9d2409568c,2073694716,9199597830816532455
+3fed7ecb-79a8-5438-62bb-36fed5e38bd7,2918551027,11054250972528782885
+6211da61-90f3-4bc8-12c5-e6c6264aa38a,3443335816,6212878178538623939
+f950c184-4a16-512a-4b28-acd2ecdb1983,3763024426,3191078650054062811
+e45e9875-59b0-62f9-f8fd-9b01d9ded07f,311968194,5903118268241493396
+d87fc7cd-ea92-00a9-77ea-da7fcca52fcb,1044475389,11684192172027941714
+a0b913a3-b846-7486-a29e-8bde39ddf274,546422734,538481347401324120
+2c449f51-352e-60b6-59a7-83509e4bd8bf,2024205360,3498912624001155299
+c67dce01-dd2e-957e-0b00-532077616994,2870384428,11220236409404506746
+a507f9a8-16b6-e090-2e55-64abd7f5a4d5,1876630243,9103584148216887836
+720af99d-fefb-d21e-41db-5c98bb392f63,1526482244,2627381383340201100
+2a17dbdd-5363-4dce-a0ab-9bbd2b07c3c2,969756318,15956496064436737462
+07f26a3e-3693-5d5f-a5c7-4c8818dc98a5,311264640,12487171864745016424
+af04b455-137a-1649-3471-790baba974f2,2987229866,16086867807141946925
+961980bc-1b0d-d4c2-6eef-eabe4b2f1c16,459388084,5497807144062637799
+03dbd63e-be67-b883-d678-34dffe08b1a3,1314008654,5053302924519185104
+e7c3d958-5ab8-8fed-2fa5-f8304dc6d9ac,3853567276,7628269171798038780
+447d0a05-1488-fc25-dee6-21d5041a9715,164779415,15169143680703603791
+40f4a277-2796-8703-6ef3-c9aa2885747b,2317670762,12070060031613426850
+5b913193-2f42-9818-7af9-f7bb2daa1d24,1163794607,18052330273468382626
+947c1d53-a7b7-8e54-7d6f-1db34f9a5cb5,2832254894,15552279473299394489
+623be8cd-7059-115b-5783-6d59b44ba199,1067097235,12044745633424190160
+62ce70ad-0eb6-1822-6c70-a35f6f608d68,600844773,16917873291660907202
+ddd35236-46d6-d2aa-ad4c-d28553cd94ad,556438530,15867574952013235518
+60fcf3c0-cfd3-4f04-6191-5a06ec69b287,1746936709,1844668261924994454
+a7fba484-cab9-ccbc-c838-b97ad94b72ee,4015007844,11922009136600606675
+cb182c32-e394-bdeb-f7dd-21ae459d28d3,2541769147,13225759111594743207
+e8a41606-7e4e-e4e4-cf72-e9f918aa6cb1,3299260304,13525294368400515218
+c6c40a08-6909-9318-e6d9-725fde767f08,557729946,17251557934809996189
+530f1e06-6534-8a8a-95d9-1a85339a459c,1742659147,2702628510990531568
+0022e4be-1153-63e3-09c5-c8a38dd1fb92,806888657,11634316743081731780
+4806dc94-b2dd-8dff-4f79-d7eb7cc87c8e,1529106680,10969951149142914901
+e80ab360-fbc0-37c4-8dd1-ca5a2ed0f435,2445890715,6740550217405747934
+9f19b11d-39d5-7c54-bde7-7c207fc7723a,702700291,6320886044099166196
+9399688b-a662-b4bb-9059-dfc7f80564c6,3103214626,3611857624415411935
+af0d0069-3435-f747-5d1c-af98babfc294,1683926620,4221570468747186113
+eab48ae1-a805-5073-8282-d3ef6f102bfa,256527387,12617565291106290979
+f1365c53-4764-945b-9108-158ee716e055,1787039132,1079629243248657716
+2dd668fa-6d19-5a1e-9ec1-643fdd8fce77,1681887251,1690298638295387437
+62597287-aeeb-db6c-ecaa-497375803a86,1822487859,11687589627389381802
+e6379828-eb60-6578-4966-f67f2417b47a,2972981027,18111933152867369503
+0da9d62e-0067-0741-8cf8-8ea7e3de7b3f,424958482,18008943080358963206
+98c084c9-228e-8f4e-085a-e810f3c8bdfa,4176516209,11080316334599167851
+b22b085f-a035-2653-1696-47060ef4ddad,2584387335,13792030652531015012
+15feeaa6-cff9-00e6-ec72-30e18ee73b59,448502254,1400179507954190432
+7b1f2bd2-461f-a2e4-ab08-a275465617cc,2595333961,18233043316573903209
+6345405a-a7b0-ca1a-3d33-ca72008688d3,1882823481,7275900908129484406
+fff36df4-7df9-1e53-2178-bce39d1a181c,1262575460,4242858788336642367
+1aed53b0-bab9-bc05-964b-bdd411f9478b,254627524,18310027183366535945
+c5e1e7fc-27d4-3ca5-46f5-ccae7594c8ee,2065461300,3657655631871190485
+132c7e49-5cb2-e538-130b-3b799eb2659f,1264909939,4996631449732844322
+b43949db-3de7-ef3c-abcb-582825ca10e9,1139907857,7418620645666786685
+25c02b7a-aa7e-d076-7c0d-4cf849869642,223354283,2815459802392622392
+b9d54f7f-41ef-71fb-3166-ef3e22b4b81a,2818885313,6688461274054759404
+56f62d20-10b4-a43b-e9ee-7e658602647a,1582547662,17353940292703981635
+6b8d9459-c8c1-86ab-eee7-1f907f105f72,3212177219,747502436553738757
+3349857e-bd1d-516e-5991-fc0871a43a3e,3777235094,16421721358365538815
+24dc227d-b8c0-2749-6b97-550b296cf23b,2486152652,7588304288301513337
+9c21bb30-54ee-b54e-ce7f-685c41751be8,1853435312,12665162658044523642
+4755c5c2-b4cb-047e-9983-f2116ca740d5,1189244710,11057506850829185008
+bf2d300a-519f-4588-6b9f-43d8b5cd60ad,2428455035,3703960974361417809
+0f60494a-0615-9086-ed80-51dfb22e65ae,2485767155,5361270924746121563
+c4ed6da2-b187-74b0-92eb-5ba3bd98e818,2915469321,5794146960365383721
+44c7335b-61ec-246a-4305-b6b3e2e47a7f,4156694135,2687623139456327037
+f2ddec6f-b34e-4328-ce45-52c6071983d2,3041395348,16328416541569929768
+bd1562f4-d023-9241-73c6-3823353fff3b,1575393817,13486061846194606107
+2c51eff4-334b-e735-56bd-d6e0aa9b179b,2761968405,10740890944740097898
+6cf26c55-bb9c-0f82-4b53-583f1563b0bd,1390939012,7967170829684771977
+6caf468a-d93c-7165-8c9a-3ee00450879b,2614657063,11631894582296960097
+18a2ae03-8596-b93d-1b84-b95f0e91ef05,1160580696,3089509928642412090
+f8317746-9974-7e33-d82e-450322fcdaa4,3848915927,15349021917933985172
+564bb547-f478-d6c7-0862-a361929fa9e2,3881035267,11045274337993040843
+c8635eda-c123-1c75-28c5-a3bb1fd4b42e,281744112,15774346239526945898
+45365865-cd99-19cc-4915-5ac9559d3eb1,520907553,13884121856580498168
+c4ac571c-f4e8-1661-e487-169ed2474f1e,826775384,5663163956344222100
+49c0c490-48ee-b7ab-5908-c57cdbbb7d9d,3940862455,1007821514720923914
+c05e7ff0-ae1d-6669-8100-aef71a732f74,4158857067,6730103738579954036
+723f73ec-9152-89b9-e873-ae53952c3f9e,3062882475,15311741465266728487
+f34e47d1-bceb-99c5-b5da-95d3482e51ba,1984508881,5781899362914527137
+a984c7f9-94d4-bd40-bef6-7d5dca914a67,3780133517,16210011083997573345
+762164d3-036b-7d7c-283d-41865b6b1a83,2893121829,11393393552686349029
+49336482-9700-98df-8dce-0886841e94f8,128558348,16962662498527609508
+f090460b-2334-7aaa-e382-78141f86882c,714619991,17326736234079026084
+af8433a1-ac01-eae9-6fb2-41251eb51bc8,1459477983,6881752724287822906
+f7903866-92ab-3a95-3d0c-894571e6dda6,143234342,18014171180990853976
+99efa117-1243-db63-8458-905adead48fd,3982102644,2933657201562855267
+cf965091-ad49-55e3-3287-646a0fc9eaa2,313297901,2905101717081174283
+eb388e57-9333-b3c0-07e0-3bdf9a3ebba3,2003155008,8937927731139682098
+050fc289-593b-cc05-3de0-b4db20b95215,1728039262,16345065742876305973
+f862966c-5bb0-d7f9-2f59-4f6d99456d0f,699307857,6498193690613748159
+66a93d1e-aa83-736a-95e5-ece098529931,3284479485,1306727987160316933
+c9401a16-f18a-2b9f-bb51-1a91e7760cbd,3283058132,14021029149494101180
+8eab4bb2-61ee-f6cb-5eff-10a9cd6ac7b0,2307104958,10028669202281737310
+1df297a2-795d-ec7f-7e00-473ef2493e6f,1811845713,5375478973166126448
+842af688-c720-a423-e569-eca55cb6bebf,3817195712,3496140994640023260
+42a0d885-8ade-baf1-1492-d368db2ec1ea,1803869822,2226262362684104700
+2a82258c-18c3-6192-1412-b269ec9d4059,1274102949,17789826714370104826
+25b276c0-5a79-4ff8-ee1a-2d00e362f365,2596157900,7002861100119136536
+fc50e760-8a4d-b9ef-03cc-3ebeca3cf892,4205604972,16904656040613868238
+72d9e1df-c5bc-10e3-bfa9-abb495a33136,3970603593,9402632436037849924
+99290b0d-6f08-c3ee-9f71-cf5d81b5dd8e,2325545719,11732058260229936385
+8e869e43-caac-cb6a-4e6d-d4a4fc3b28cd,3412135012,11054874001237952636
+b7b0b4c8-b0de-f398-38cc-9e237284f0e3,977791823,7266772561100577076
+aa8b7ba4-7cfe-76f7-c4f9-d8db1f07c331,3987921441,10130226004777201263
+06fc176e-64c7-9d18-eb6b-980aa2404c79,408105807,3296746639929067352
+f7a05809-120e-df62-8e3b-a2bb0179c4c2,2001605803,1877268934527729723
+f9a482e1-ce1c-835d-eaa1-426ad6ce6ec9,3639622784,17081831914925076837
+1cd720b6-f46d-88a7-af4b-ddbb9f7100c9,2658742474,12636986323666731697
+863d0213-195c-b6ca-ae17-cc614749bf70,243369229,4449535979226165028
+9ac9447f-1a5c-c579-1f5a-beb5517b11d8,1850813874,8523621789236072164
+75a9c97c-fdb5-f3c5-5242-38d1870e892f,557584430,17718821216735700099
+03302196-05e7-0dd6-197d-fe3f313e968b,4164976698,15212485675253655242
+55771a38-a0fb-734a-0c36-ec7cb164b354,2077656207,9006647404564763558
+4c306889-0b4a-f0e4-f21c-38a2e43447db,427850932,872676709128696404
+ee4f342c-d741-ac66-fd7a-6fbc2a682d05,162774299,7612210092901867763
+525b5943-ad9b-ff50-775c-ccc8ebabc227,2942999379,8065274849300741925
+16d23142-8d0a-cb9c-9414-0038ce9704b7,3144213645,9561674607687765003
+90621251-09f5-224a-82d7-9c99a854a6fe,316203337,3086789744599394077
+6e19d066-6f4d-a9af-6128-a70726becfda,1322920238,7802838904832455207
+b0f88fa8-9931-135c-9505-2371af925d5d,3786738566,13449373385622202131
+aedd72f2-e120-761d-4dba-6348eba254de,3298979791,10591609045001394437
+d82b1970-70a7-3bde-32a8-238e7328d6d2,1343529419,1423996619002688099
+21d2ddd9-2be9-1b2f-5c96-65e696ad524f,3120833423,1554888479444244739
+3c01df86-9322-be3e-c8d5-d753bd7bd0cc,2572339556,7430708803130766133
+689e5ac7-4e92-0b73-a63a-157921bbdbfd,2114529409,17588452662196202329
+12b1570e-86b6-6e1a-7d6c-29f11b4af551,3803958605,7291511575924664032
+04f69585-82b5-678f-5f10-c7c2b0e7e08e,235586246,225211107003042161
+4cddb17e-c678-7a2c-71b7-20ad6c1fbdaa,2703812330,1410409631117883019
+2b455c22-6c5e-d4fb-80ae-f8d88ea8c11b,350840188,12396101156984373947
+2f3daff7-2388-a151-ef6d-d78867a7e722,2037710306,7759517165470872408
+e31f9e73-80f5-ab67-1fc8-f425eb7439ed,3129678848,10787020848418284167
+bbe47e9c-28e4-2dcd-6485-bce56767f226,2449122259,13065313178147911424
+9d141aab-8eb8-bc42-6193-35dc9540c7b4,3700159104,144413044339915983
+d71e13eb-c72d-4547-9fa5-1db3c7734703,3232123097,10370155033611178651
+c45d51af-3c6b-9db5-0355-e9fbdc9cf16e,804387380,14659416537373361427
+2147d8e9-0cd7-5ec8-eb1c-823ad1acff93,2296466514,18361220431886334344
+1fb21daf-a187-f014-672d-476f3433f988,3241186135,6992862048709949059
+e6b5b657-3a4a-384d-3fd1-2d90c2544c05,1576393988,4375900065792754983
+13d18023-a6ff-a735-5425-76e5ae82869a,2309844563,4123010489636196509
+f1bbd411-3b51-3c95-acf1-ab5984915c26,735653178,10592460161295997572
+71c2c0e3-df0e-4fbb-49b4-d5813ffe4017,3721513332,3671461776413191662
+7f42d26a-f6bf-8384-123b-d6c79c06d047,1754221256,4286634157962790874
+631dba73-0f36-8347-4a4d-811c0db6deea,1541607607,3796259700525413112
+4784eac2-babb-37d0-8bcd-bc423405f1e0,2415409354,908336330577086536
+9ac651a4-14cd-e2d0-d0bb-01595c74407e,2012571481,1834762991975771609
+fa99af86-661c-1f7c-f0a9-57981dcaeafd,3269026461,6985695349486198067
+111fd9be-4c10-7c96-7209-0e65debad93c,750680454,2573599509190949966
+d347d51c-73ff-6194-06f6-68e413ca0558,1530772141,7460162786202226112
+3cf2c45b-f2ed-fdea-e736-294cda8502c7,1444362866,6041072507569792635
+d35086e7-e732-5e35-3566-780e098a792c,3064316618,14899944898900979552
+d33f21f7-eff0-cc12-b9f3-101a7be1f5e1,1042059099,11209932758053152352
+865610dc-dc74-d0c0-592a-e6d3e225793e,4000699431,401325341410883390
+211e25e8-9d00-dec7-09b1-9a4abb208f6b,1437991458,1918329035971712926
+cff7a246-627b-f6d4-073f-408d68d8c11e,291059469,2343091340475756491
+cc8d287f-ee08-b041-ff4f-84f0bab12de5,1529311197,13355488027687518400
+f076a71c-43ac-8420-a06f-bb687cebaaad,588475097,15429314100290481258
+9e393b14-d769-1caa-da51-6aa89185f2eb,3000083785,10589424912080421778
+78abdb5f-e1fa-9fb6-6c9b-ddab2f43b0de,122310338,14644186140784381531
+4ec1d0ae-0992-a95a-7626-2a63e6be4185,3548370602,4107230980275295016
+b6b31165-70da-e51c-de11-96d2d29a4229,3338514388,4017860304698282713
+8ee701e8-d250-fd89-0217-98a5e6025647,3052341709,16327069076406119135
+35eeb009-fb17-c6e7-0de9-206bf2990095,3435488960,12167539080727925478
+3daf726b-2712-46f5-5b3f-c642cf5df1d7,1772854717,11860352990645934216
+819ea455-ccaf-7dc9-c880-9037384c370e,2509225377,4249016210997664655
+24a775b2-7158-eff6-2b92-9707f42ccc61,919298300,3735601097756441525
+3908339b-2ae9-e157-3e36-65c15f4276b3,1145281982,999648094371930623
+d9e7f7cc-365e-7726-24a2-05964b096816,101705588,14893283520020212633
+75091ece-1099-4d2d-037a-f7db41a0187b,2331449714,1015172305417356650
+3e608d76-248b-9fe8-24e4-d94807ded9ef,1809850620,31917531820817094
+6a234476-2d68-11f2-d152-1025e0f9b865,737958226,4005739126816767895
+e226e297-e9b9-c525-2960-469bf35dd73d,1477814852,14611907178796111923
+ceb07378-af46-622d-b07b-0b8efb6c7fac,1400177024,10092748442307927363
+6f7d13e7-c7b2-e386-0a4e-499af7daf5b4,2276592803,14764661695580696338
+89aee4f5-fc89-458d-8be8-eec0654e3bbc,2634312320,4942708524612238143
+f41df2ab-31ec-43ae-e71b-a5813bf01b5b,519448485,5600445262758169323
+b8c41b5f-3f4e-9484-b287-8230b8c59248,111200879,2470291402871575599
+928f7bfd-854d-aca2-f632-910f084043c7,3640577047,777865156798652885
+972d93f0-c259-2500-66b1-1c77a208ad6e,222002862,14881174299251972929
+97f35ddb-7298-5614-b36e-45819ac5a690,3039954229,2717443572467232488
+fff9c73a-c1a8-af2d-9e49-011a38ba8336,2182642022,15614626694456238033
+8b558b77-cb29-7dd6-10c3-5fd12e6e3c2e,3369692714,17570055435093556577
+9ca2fcbd-66d3-e665-a3f8-4fa5a50da9dd,1203194406,11278834950935171893
+35eb33b1-f9cd-907f-5def-9cce82fa9105,1946388226,2917815779834580352
+be9839e8-5528-00e3-f233-7a82c72dd7d7,571268902,10207854875103663015
+78589dd4-d7d1-6ada-e498-1e0cd2479401,3638299500,9329369770101397256
+b5e2fc01-a82c-fb31-780a-6c612417ae93,2519648089,2613741306202979018
+2206df00-e566-cf92-c774-855c64005f94,1038965019,4262705670831834592
+6f858f86-a492-6bc1-c821-5ba2140e6aeb,856309195,16563537768666558656
+740e09ca-6993-baff-f92e-4aa7473af2e3,2768764519,9754309536513085879
+92f6c44e-a7ea-7e40-09db-0068eab8ca29,1407436008,598497165407140041
+2cf00073-8517-d780-56fe-125949941cd1,41256949,13664502286889761065
+49be23cf-ef5d-2984-54c4-079d06649979,303462891,10891554481622531918
+ceec8f3c-745e-fdb1-c71a-84640e84b384,3157841690,17627543761822348473
+3600d21b-0d36-d36c-4010-09ee95116f47,1989527448,512517491626415973
+2e568548-7011-a042-8d15-e7ae18a8690a,470027864,15578827906778642368
+74894119-5519-0931-c630-987237e92100,3135039492,16035479273113412851
+4fd56870-ded5-56e8-fc97-ea6acc5a568a,2134193150,4201544751172680874
+5ec3268b-fcb5-c2b1-ae29-650a8fa68c2b,2729437483,17750232493619703814
+df9be8f6-f6b6-92e7-46f7-21e4c2eb0153,813932583,506592012962322417
+7e70c8b4-2e15-e3b6-6a77-d1dff9eeaba2,3745047391,8535935418037628010
+f3aedb25-b377-7b3d-6e2e-c1cbe1cd918c,986785953,6214598590531119592
+40cff978-8ff8-9154-9d98-57020eb3dd26,108414228,7404225620859820107
+8abaad2c-5b99-9093-d9b7-dd9840b33ede,1103435323,1516781912825834393
+6a820396-5085-9506-f4d4-6d2fa6723463,2537333647,2800564105065954617
+c14760aa-8f83-9139-82d8-fad751a1a42c,541439002,10990508209249348581
+307b8b4b-8e7d-119d-c36f-07fc0ce7029f,1427794589,9368409212801257103
+6e7b3258-e75d-3a6e-76a8-8b124f052ccb,2633430778,9440036244138922502
+0b06612e-ab5e-a992-1a55-cace33b3e778,612705550,5523666051058733117
+22c89da1-921d-cc59-2e2e-3c99dcb03450,433710270,12659765686086002586
+d9a2ff55-0a6b-cb67-82b1-1ca770057381,3678300129,10620064000838393455
+de3de5c1-b791-0687-c7fe-7af80a192f6e,1250154882,4717491231372013058
+efa1f023-ce01-9849-62c0-c59da5a060cd,3088326709,13437056634543553405
+fd9b5ce7-8565-5724-e2c5-c0931bbba2a7,3423109545,7128107469273354373
+a052bdc5-6b18-05dd-19d4-a920730012cd,3335662380,6701865964431471488
+901ffbc8-d7a7-fe7c-1d9f-844bab6b790d,3084282757,2435669734325382633
+d19ebb5f-3139-93eb-b0a7-40417a686a55,2845529634,2329580212492892487
+5f67b8ed-6c79-f3bc-54d0-85e789778e54,4264076807,7904433602875837986
+b95dd5b6-6b3f-f7e8-81d6-b29156ddf3e3,3796771954,1150421962161152089
+e2f70032-d2c3-726c-35e8-1f28ad4dfdcb,1036637602,7566475983775731254
+336d9f8c-b93e-3441-00c7-3d0c3d82eff6,2767157318,17249761253104077570
+b1d8eca7-a943-9d0f-664d-c03520866e9d,2585269002,3704802659145507796
+be08b9b3-010a-2b43-47c8-dc676fe5416b,1064222789,2207622467492038880
+890f830b-1fa2-db99-cdb2-f3dae897da81,3527596255,17421390709038627548
+8a1246df-9a7c-f32d-58de-d05efa5ea01e,3647797757,770397013852866013
+2ec85167-85f1-4a4c-970a-4c9c08fed8ae,3647052345,13036585470488955279
+b9f0dbcf-a6ac-71f6-03d6-d7c9f0627c02,2038140790,3621689214010263587
+d115bc42-1b9c-e302-a1bd-72cc14195e85,779278949,3256957102707784717
+b55deaef-5a8f-1a7f-0dae-e580dfac5e65,3207029709,11891789864908569181
+c706829d-b223-9233-ba68-5b93820216f7,1325949339,5013274283631004135
+3a92b54c-1d25-6e62-53d0-a8d21cc3cfe1,4094768928,18190224356604604517
+3e7cb249-9eec-d831-4148-bd59d10982ad,957116348,4196527614820077301
+5635a09a-3ed0-e924-6339-cf460350d427,1356381742,11470225961038231424
+3d6e2fcd-f259-b1f8-7802-e0f31fff1f4d,1885672614,8071613482927774346
+f43cdb60-335e-4be1-8209-186ef4bfcf04,4272771257,3270656199266548020
+1f252560-7072-8e1b-f767-9f17fa36649f,1350464011,167020142602247988
+1b1872a0-e9e4-5239-ebe2-1b37bd474e82,2548679354,9387568082127498546
+a0fdae2f-6daa-aa0c-6b3f-6effd0413b5d,3568735732,14591483814177741816
+c56497e5-4a8f-bd6a-5b9f-44d0254f29a5,910448213,10387450422430480685
+a64dc928-245e-5b09-4b0f-da784375cdf7,1872674598,2038288860912376080
+ccbdf279-e1f1-c846-3e94-8d9a545519b5,3740720288,1307543429786393197
+762e9b87-ffe3-5a98-bb18-a81818ea6692,1240017080,4066028941137068333
+a7ed998e-6088-b3f8-3a32-10fdcac42058,3683277126,7304298800022633776
+f3b27da6-f1f5-dea0-1b0a-789e7cc7a240,1538265892,4206034755258058176
+12a44299-58aa-1aed-0bf7-0fe07c3aa6b0,1080278464,17792047744855656975
+ddc69ed1-f614-0488-e36e-2beac2c68c1f,1298009998,13692123928345818522
+69d03b6f-5b64-1cc0-2210-c05ba24cf17c,2948975797,9411799540738154425
+1d5d43ec-3c7f-89ad-2974-878cb4fccca6,3112150671,10941953381797391911
+f4ed4618-214a-8bab-ad43-33908e8baff2,1001600980,16755625510864317549
+0df1ac81-87a1-fcc8-51ae-b98bb9ad8239,3382503531,14094426872568283543
+bbbacbca-e09e-e282-aeb5-31ceb2845b0b,1324944978,4688502568831775003
+76468a94-b8a7-396d-4cda-3727736bc984,1312001235,12975953192212083650
+2f7c2e71-f309-727d-d1a2-e8518a566277,3744857948,15748826864894447074
+d0a58a59-d489-3d8e-45f8-869c7437048c,3136275203,11160870333540371320
+d8396b65-e398-6d7f-2157-2bbd3d7015a7,4031133030,7805884620627509635
+74a42ab3-7bc4-b979-c8cf-eba852e0913f,1769722023,8338834594372227036
+c312acc1-72b5-5844-ac95-5a03c52321f6,3905751625,12833825763459288797
+d1737e6d-e5b9-b9a6-b0c3-c9a81f3dcdc2,1162663023,10819444970222343618
+353a3bf3-e333-2694-e292-721907042b87,3485254425,9473979001381235904
+9d60ac17-4254-22eb-5025-ce3b3a63b2bd,726562855,11693026889962220235
+0ed323f0-580b-76e9-fcdd-5041a98ad231,513024471,11969558734374257286
+e3411d2b-a2dc-0289-458a-4d4e7ae8daaf,1884675224,13120395668860123122
+a6896261-a872-7697-d533-d6f7b2c1538b,3319468756,10605161218354479802
+9944adbb-ad1b-385e-b6c3-8d4c3aeb2ced,641597049,17828393114335727953
+e59d897b-5460-e293-e68b-3486172313f4,2880352502,6193307368501297083
+2e94c948-762d-cf1d-6cab-2162aaca100e,3444676481,3665234966426734810
+68f32a55-9fa9-abee-fe08-88f869289bd1,1788505770,12182973573553385174
+7c70ade9-4963-4364-8d02-5b08820d0012,198712456,6236321570596905304
+10b1629f-a9e6-88e7-f847-32e08492dcc1,3983186011,5411235672052233434
+57c8655e-d5c2-901a-e460-2370a425fd50,2179955767,1318937802108978287
+45beda9d-5e54-c14c-8c37-5d65d91ed7b9,4045120713,15819950724700129604
+44f0fc5b-4056-8c61-5cde-5786a02e377c,2373606001,12806171454130957133
+c9c1c9f9-eed4-97b2-7f67-8c1a9ea5d14c,2206739427,11684006021710554656
+45bea67e-dd3c-0c75-eaa6-f6f966e9262a,1868660056,2700864609200186473
+8603850b-2a83-2248-5e0e-680cba11cba7,1134737039,4985758453430189579
+c53f9081-cf45-2f40-78f4-12abc15f233a,2407422779,2694689938797112910
+733ca652-a3d8-2def-9d82-167fd4d01984,2264779007,8040606451984127370
+94b2fa1e-4f26-269d-9f3b-536c9914a1d2,130120114,1138895260648288898
+4ea1eef0-aee3-65f4-766e-87f2714e9c5b,868383920,6764560693553014601
+aac30428-b8fd-743e-ff2c-ccdec7e1bed6,3693759168,481005771053779090
+4af84451-6c50-00a2-1d3e-790ba80dc96c,113091334,17116711593771445721
+754c11db-3809-dc15-6168-bb5df2419822,1450912642,12655085819050496086
+7245311f-8196-606b-6604-a51b00718fec,876780986,7861305126074547155
+40e76e77-5c46-ba6a-5bd2-b011ed459545,467904987,16617125794554354040
+5b4dd08a-80eb-2dbe-dd02-ca6b77b5f74a,1167866498,2059556905845808998
+4439ec81-9608-2cb0-1ddd-f42fc44f3408,407535664,3187334584113429190
+2b2ec00c-14d0-0001-aa5d-24bf52a3553f,442993162,2198376181858363518
+80b52976-a134-a85e-7204-53a9086258d6,1274688348,4298516088319931435
+13739b23-ca3d-c3bb-2d63-a9a7f259fef8,1671990754,16359037672071754065
+d369384b-c5ec-9c90-fee3-50c312700259,276726520,2691106829231078656
+673318a8-6d61-55f5-95fb-e08f793ad4b6,316230398,8125295100599354074
+57e7bca2-b60b-0a20-fb42-ab339d635480,3796397419,17585717607426788033
+b63d6aa9-c05e-91f1-4703-4dddd4894a46,750845277,11898589676585693506
+4a588453-2fcd-de60-e4da-ef36bfc5fa76,1932227791,13379215914445852231
+b2d2a2f5-fb01-3c4c-9a6c-9db0d2057bee,3805959044,11879467850938359071
+75999c24-7087-47df-c3b5-6396209d137e,4088015449,15928676787496735943
+23ad8a6f-416d-283f-bd7f-bf87a0ab73b8,3151169631,16295662845880604261
+045afccd-2e71-0fa3-3d29-306d6577cc1c,2723931292,2600986954332682212
+0676664a-4c37-f1c8-784c-1d44bf251781,2036304507,17839783838952693548
+83abd041-262d-54cf-6a5f-8705aa22c102,3403714275,7620335117756420102
+17f53a55-2fc9-0eb8-c787-4a248a81f1c2,3791234369,7110399538813992843
+4050d919-a16f-3ce8-5aa2-4ce26003d170,3407555884,17280934119218598632
+cc87f4f1-c5f5-0472-cfd4-cbc6f4f36050,1347059765,13793864173916124775
+f9691240-fc18-971c-00b3-27e168a5868c,1329662820,190044328824468540
+133b835a-b6ff-551d-4891-787871ab2b26,3997661844,15418147010364132280
+a4d51703-8e72-6f68-b603-b7208bf5d01a,2354888243,10765399667867208831
+3302c9c8-cdfd-7eb1-cfbb-ccbfc5db3496,662448969,4814247664266572290
+c3f49b43-5559-34e6-253e-6b07ba14a1d7,3333800769,13164633451456900473
+dbe3ca2b-a1f9-7bd4-a130-bb5d99b7ebcd,89717956,6541052849406177294
+4f428b43-0102-a218-3253-e910d63ee70b,397022505,4412840723725458671
+f35d1300-ff36-27a6-42fa-a112e5a50232,4286685983,3330625037434924510
+16c3788b-34e9-72b9-c23c-64df6f4d23ab,3256145746,359780923264962012
+19b06b56-fa17-6d05-abe8-06e64c904755,906578057,10445864404879062761
+25eabb30-9ee9-253d-8a65-fff6935cee3f,2689745536,17824793812222738339
+480519c7-7725-33fa-1900-9cfec75e41c9,3383319529,15780798425352928674
+ad5c2df5-dfc4-60a5-68b7-7da57046ff58,3781236378,4190300741125095286
+72af3bc5-af87-5c2b-f351-f985a7afbcc0,1066668770,17373890679587251488
+1cdd188f-1bc7-a2f1-469d-8a275c5c4218,3597069790,9867846194284297960
+e94ce4b1-9a72-458b-810a-ff649e340fc3,1630525152,10447496580282279603
+e56260a5-ac02-e387-a1ae-7598569982cb,3915084321,3372821157446964783
+eba84a94-59d1-bbf9-4682-dfebcce5a92b,1189256346,6562715685482905290
+3f4655a3-3e4e-f9e4-e3ae-f8965a9eda9d,1896482790,7583079246566448145
+33241398-0910-0c12-24c4-10e562a197be,2831292745,8294295294849825518
+02ea7d02-584d-f628-a9f3-5dc159d7a43b,2829050857,10172096279459751218
+a5ffd2ad-ab70-600c-7fff-9febc34efe58,299312608,15950101542795318986
+c9009f8f-c19e-31cc-2ccd-97759cd09ac4,2313986932,9946023764884280405
+954f1504-c9d5-5411-2bc0-796c60a5fda4,4037612446,12899908444263133890
+c22d33b8-8b11-c19f-fe14-59e7a7d85047,533522086,9375949294182746010
+c732a9fc-e631-8b1e-faf7-24c20f71860e,2842908346,15278207310600878891
+1a668aa1-49c9-0ae9-3563-d81012d2b560,3108399425,11305259165488589795
+4c3a622f-04c1-6b8e-258d-a01f843956f9,4212440660,3427376182947577698
+a72c1713-920d-b5ad-3fb3-989e7942a25d,2278910009,5191635113126240290
+0828f54b-2ada-b5f0-e046-7b4fa355384c,908108760,641226690213560006
+360df946-85c9-623b-75a2-2b5e0b24adfd,2169506016,10933851008087358765
+0f95dd89-8494-f5b6-a113-6131c199959b,2614981990,13244698579864385012
+a1589a99-7cbd-90f6-08fa-af9477a5f285,3943344379,8787362187121203549
+375a2247-29e7-4acb-a8ad-f658d594ab9f,3362586521,11805855824565992648
+d60c371a-afc3-232f-f52c-a0b1cd93e822,1511025300,11814125609165884913
+02119052-f800-ee46-ec58-1968d7a06e2b,1283116327,6549407297554500789
+ef4aa1c6-34ba-67d0-4415-90a383c4d788,1431947391,12017560505892856891
+d8fe466e-2863-bd40-e3fe-e78afb14dda3,456075077,17101606452677806082
+f9a95967-644a-9224-32cb-7a4f227e5382,3730305511,12779545465931972664
+74e52f2f-2a91-ad11-360c-3b942642f748,2679304513,15877947745685278460
+5dc2cb84-a948-2359-4a14-2d0a892cc7d8,3822872565,13873577141892842009
+0cae8c3f-06a6-65ab-4fdb-3582cceb0406,653697703,6309046164018087776
+b63545f4-548a-635b-0206-032fb0727ee7,774086156,10977287793268505816
+5d18aae2-2ed4-4312-a43f-f51194247e54,59133877,1560352267162051397
+df70022d-59e2-c928-244a-072112f3ec82,2550976532,7036736686047067795
+f820162b-f79e-26a0-1386-1790e4e7c953,3951552623,609069151748701420
+dd00f9fd-0a70-a0e8-dbaa-51843f9184f4,1120384945,11213750579451271467
+76c701d3-9405-75f2-eaef-520f8796ff81,1008500650,10559480025424737315
+4aca2fcf-e0db-94ae-5037-561b3301edcb,2576355878,11622296414153109633
+f405bb86-1267-ec2c-e2ad-a17e7a98dc1b,3272240610,11457075421285391462
+20a822e4-658b-8bfe-31de-b3c4875e55df,1101622493,2853547615693863122
+1cba7501-0775-ceb7-01b9-09477e1aafe6,2453530515,14562352469860731250
+ac216727-115c-83f8-39b2-53ca2beef3a6,3419201511,1426827663209683089
+cc814161-9cfd-c4bd-7d34-25a951ac001c,1736473067,4994912990622879432
+e4890598-c17f-59e2-e52c-bd3078f4ed6d,3660335917,2246760936340558016
+8f51b026-b3fe-f314-6ff3-04c9abc2f8e0,2530743270,4017581987973912533
+586cd2a6-4d6a-732a-3d3f-f50171a22f40,3001891870,11040687374479631535
+cdc78a4b-3f62-7663-febd-4609f8c5d842,3683192393,17600971317905968794
+8366e0fb-c860-5d8e-688e-4ac9402479b1,2674885734,11203650500859033499
+755bda36-ffeb-b322-4651-9a4a3419b1c6,55408050,5362542528375524137
+60b259b2-9dec-bd4e-b76f-03be98951c27,792382709,9499895454418878736
+8d8e0367-a839-42bb-cd90-b23a7b211f63,745626031,1949051761709402394
+2f656209-3320-5b7d-b4ef-912468da7bfb,2474834752,3468399145369869301
+fdee1463-36c5-8336-0e02-3fa7e832348b,3240729133,14765676714074895565
+2e0b6435-85d8-877c-679e-4761a258259a,637646665,15777816036763725358
+e7f96227-1541-edd5-dda0-faff35b98bd1,1638884401,17100119129465924180
+4f56d532-9a32-320a-5583-1bd4cf08be80,3617991378,17388664629076912243
+5989ef3c-8681-5ccd-2899-986bd097465a,2714674407,16177731143946475111
+6217eb9e-8cd3-16ee-0309-f372c71d683c,2020883439,12297797142532419693
+6f74b46c-ede7-5a5e-3598-fc1e4dcbdd8c,621348723,5470969640076775847
+12ffba21-decc-dcc1-c9cf-95b826f69706,952104950,8225670675340301113
+6a8a2b5d-29d0-6907-8109-9fba18335026,295511935,9661772480552527156
+5d67f5cd-3319-8330-ef15-91b6e1b8a745,1323295554,14561690351893718848
+cbf9b8aa-77ff-4296-4348-27769f26c6c9,145606502,13136883223185103644
+93fd09cd-06de-135e-b7fb-f32e6dd5923b,2474821592,16023320766159313678
+9fc82900-d66f-0960-dcb8-d04992b646b9,1523923446,11687948844658128560
+c6fe2815-43ef-73ef-c256-f50939ad33e9,3427848301,7090743195349317130
+d1113254-5945-6434-1705-ad9147e98441,3658006245,15699570552399148931
+a08a6475-6b62-8d26-b879-a8ecd25a6e54,3632331131,17957795444347263780
+a3285a9f-0eb0-d4d0-aada-4225ca9ff8db,1695165027,4621644968602408224
+f54f9a30-9b96-6329-6bab-e4446e5e0154,3718839028,11526859868065594418
+1a6f0b47-f056-362a-edde-66ae1756aed1,913837557,576294372867486376
+7987fcc3-219b-5c64-b730-f14192c0c2c0,2699987369,3052391786657321842
+ce5d8813-84e9-f2c5-c084-317580d65212,1550777641,12617845315200019598
+7f20cc9f-b5c9-8779-eea8-4773b854688b,1602388279,1108526275208799689
+21bcce16-2162-4d63-635e-99122d2c53fc,4092942391,1117321888142709295
+4e6bf8c6-9640-c879-0874-3f0e66c9bea2,3798135678,8947812432033878048
+3bde71ca-1879-cbf4-58cc-037c976eeecf,1994825500,15326715896574111151
+783c0b36-ede3-b145-d371-a86c3e47b6e5,3404806071,17760924283159268607
+1f5a9f03-fa98-6e7f-b07a-c16dcba4995e,3787726445,14911383639597139756
+631f9714-8c28-94b1-96c5-a33bd26f5406,2485924250,13923439113946935653
+4aad8ea5-f220-b62b-516d-d23dc7b2f32b,2463753130,7545246485921319817
+891e56fe-4bc3-83e8-8df8-0ed9f0080237,1932427859,15259427385915490071
+fccbc5c7-404b-c7ee-fbf7-a3a1adf9dd6d,1838005237,5745901216268880687
+1fc4d5e5-fbb7-8856-9dea-a721057ffad9,3679840843,16990625948432923805
+7c240e3d-3c0e-5ef6-1194-19d1af81a4b8,4004023348,2428974491629537419
+b9ecf6ab-8676-b648-04ba-83eb77333156,2015541311,5492280885234556511
+2b349934-94fc-b875-c988-5f1183beeb14,3578198788,9311356545018561647
+c1a2fb41-3ce9-0278-9cee-9fd4e6c71334,4255090759,16816862431106777348
+902912ee-271e-fe98-381b-ffa4f2598214,778951136,16736951272372528831
+c06e9338-aa5b-c8f6-149b-2d562024b2e6,2050448391,6331114180082517340
+01a90c49-6599-5dbd-7a2e-57e8cfa98eca,2047777539,6754663885314284152
+66c077a6-9047-a16f-9d9b-bd8759a7dab3,3349656113,17635649064512135010
+1bc0bb55-f017-25fd-e9ef-57766c997470,926197321,16364866230905362251
+8d659eca-1aa6-8193-3632-ee5588e17435,2201541318,16922653020786672541
+9c490601-fb3c-e9d2-c49b-33ba82ff6eb2,2508634875,6436460146916803938
+9539c7c6-955e-948b-1273-53809ba20331,3037417949,4126820578492080597
+db0d422b-6b6f-d340-6b16-e8b2d9e8a7c0,251430812,16312592394408341245
+b55d3fe3-cb95-6745-7864-cc8ddde8a1b3,753347427,6589381340699848103
+e05b6638-03c3-daca-8eac-27d0a7a55598,483409259,6911236165971971785
+c79f63bf-b1ba-ca20-80cd-05b3efd8f335,2836040283,8008079805943688343
+99815dc1-b169-7d33-8449-2f73f9c48f6e,4118669168,17316648919868384821
+bbae0be8-73fc-107b-7f41-2af97f97a499,2350330298,14576082139317168159
+f464eaad-2af2-cb96-db18-4f9e1932712b,1638215895,2257666392956051183
+27e2766e-3f41-89c5-f39d-e10366cedb16,2827445518,16003264777733944167
+ee8b8b2e-6c28-039e-32de-b279996bf4ff,913366229,17205443362269651129
+45edc2c3-eeb2-42bf-b65e-03409378ee60,691312639,13272979859048022846
+6a0ab394-31f2-3427-8d40-e51b586c0558,495058400,7198010395690256329
+2d48678f-28c6-428a-d4af-a704b1e9b3ee,1660543786,11910478883987318446
+2e050d0d-9f7e-d451-3b3b-ec3f5043d982,3217949156,4777195145847205310
+a1283198-87d8-97da-679c-28d346c2e1f7,3335317080,9529916232157988914
+c63c097a-dec6-a8d6-2963-de3c7f92ff1e,4003280967,4230008217966648880
+08e6f45d-7a8a-064c-1e18-e3d67f3970fa,861738108,6070008801078895127
+bce0cc1c-fa61-ac41-1f54-6e2c85bdeb7a,1670599474,5244555324645234970
+208b6065-1c8d-46f4-f336-af6e6af4a29c,1225295038,17231553732466612963
+a70e3e51-4942-9b37-58dd-3b9634207970,2503603935,2976818723969549804
+e2272080-0350-8a28-7805-27f687984b1b,216004316,7759213115059580561
+9bd0d851-6078-6afc-315e-22a7142d47f7,1168728160,7149124420586222699
+731499f8-285f-3dba-8795-9ae82fc6969f,3760989709,14811971803431058317
+1fd58553-f0b7-3db9-fd10-415dc0d72a52,1966768051,6801893432080878562
+c384c2cb-8656-4068-d4d6-3162058ccd75,3688435505,16238216327885231393
+ebcbd210-d935-93f6-a8c0-9e61015fa7df,564335905,14439563986555896463
+f4d2d7e5-d870-4fcc-a38c-f2fa506191d1,275836337,13336099823619052542
+0bf2935d-0e03-cddc-46e9-c5284e1e9061,3409562921,6402687969583697690
+c7527393-2a1c-fd04-4642-4b497f520e6f,1661573165,9878178622939659229
+7ffe033e-302b-a3e0-ad49-c25059085614,2406684583,10726356756866207237
+a7084a77-0a85-ce21-d2b4-affce55b3c57,243360301,4044496018941008783
+4b937144-d442-5c4b-78b0-79bde9c9bb95,3686899596,12241800139112515002
+ec3aacca-0f73-bb87-ca80-40defca8a701,1174406455,14712473421976324996
+59678b18-7d82-4980-eb40-a7f6d4a75b27,3231586466,2788013905658204699
+742a59ef-a551-341a-2696-775f4aeaa6b6,2900130150,8602815361644183050
+66fd4582-5f5f-e8b8-b4dd-ae8539a89bff,1746018565,3221803816251671951
+46b4762d-1be4-5877-ed5b-d82411c0519f,4175321556,7998296994571843929
+18eedd58-b961-affc-792b-7d2202c1bd9b,2626669809,12901553376917777310
+96eafe02-ec96-0584-52e0-d2e496216f8f,2190273730,13362671137105973898
+bfa43a06-ff4f-5a53-cfd6-aaf988631f8f,1797678574,15871649044828282000
+6ffe1100-61c8-092a-5e8c-66b714ca6ad4,1970053524,11813798248529771186
+37901e7d-3d09-5122-bb90-3984e1caca83,3848741029,15971496242671366843
+8aab62ea-8a65-4545-a407-1532afcb30e3,2585002694,773700126231946266
+1670091a-a396-edfa-6dc3-64ebd623477a,181472103,12634632132311875499
+aab06995-7892-c163-0895-8a522ee95549,2112381032,13378191318294754097
+c80c5dba-f66a-da3f-15a8-22f286d5ef46,2934605063,5936348483879103609
+09e02c66-36b3-9867-2367-ff406aac2cfd,676758644,3937956797183895255
+cad6d372-a081-18cd-4c09-2793c7d50de5,1536113702,16898652653465037135
+5a52580a-ee42-aa98-addd-f4b177711b21,1599155312,14752922784388178522
+3e7a6b7a-402d-b975-4c35-9c4c1d92c472,3014109898,13419304724220628644
+e025e774-2d9b-7b6f-9287-41e17eeea3fe,1358590678,6637451128596638327
+04729c1d-ce88-c2c3-1b7e-ae55a84d8cc2,3743812081,11684521571653430014
+24c3be37-28a7-686f-d332-d3537bc52e7f,2465435703,2375753433276334516
+18dd6b12-8e97-5eab-c4aa-138864b264bd,1440965090,16505980413226031653
+8078734a-64fb-bd88-3d8d-30ea9cc50308,3687201289,17053802038961068350
+59f94a27-a2e6-9508-f702-7cfe0002a3ad,3689431231,2543892845247720691
+1804abb5-a6ca-e2a2-e5f8-8124c8921581,765857500,9306054001436672707
+c3ad02f6-1ab1-e095-e48d-59dd612dff1e,1725081598,12719757643114205825
+23f2e957-0813-c59f-ad37-c7fd60054121,2531464204,17218834243746536324
+f6259c07-85eb-adc4-5714-0bcad4f2d661,1923682761,10689987861080688013
+4d98a014-ca70-b5ed-c6d9-aa99760f15bf,762905393,5170296708981301706
+fd66b00b-d65d-9729-a1a0-e4d7227a29c3,141690708,10290657470142187371
+504703c5-8f66-7cc7-46ee-7d488d1c7323,4106853080,15182761720096625281
+2ac344bb-4f2c-a85e-95f7-99e6c548d0ba,3891328384,17283702243965617145
+86fa2be1-60ba-77c7-869c-3124742cec2a,1589841302,2624859939063474454
+8b6e3398-7ae6-b659-3437-aaa0e2974d49,3407777537,13006009742773485930
+5de8d9fb-7a60-48ef-7d61-69490c55c24a,172798425,11379726500853291269
+a3dede29-9856-3158-73b1-1644db1eb938,2165230159,4499568872443740106
+78d9a5da-f291-ad34-d57c-ccbc683a3a22,1863082739,4178890686722078861
+e34cc371-19ea-e864-333f-d4232b0fbd91,2074721827,10682134174344441157
+d45f8ac6-0d00-87a0-3f01-6e0290ea50d0,3785003881,1725534700318630848
+e07d12cf-f625-ad7e-ad0a-3919e9811174,1011307160,13909323523368732798
+66c00d5a-17ed-12f0-6b4f-4ac756c09411,1767993232,2362548158479304095
+0a1e318a-6c1d-5c61-525b-86262854e62d,3565313708,8856075340255049466
+cfc9767d-063c-e6de-60ee-b60fb9512ea8,1441877016,6343903890874908629
+c866d91f-8748-424e-4137-58573f5c4ed8,4026566684,15432090556478270823
+b1376a66-baf5-7af3-03f0-e1b2b5be45bf,2655417992,10061168914264251001
+25d760c8-e4e4-6df0-0554-06ae153105b0,2922600773,8671959151476353102
+cfdb9108-5cd5-a059-8404-7c8f78b7ae37,3636122710,15383968957775232267
+1a707ff7-46f4-863f-9603-ccdf11f32374,707902378,10755604142208810631
+5b30bdeb-0702-3a6a-40f4-ac52484da8ee,1789529068,8639834371796338711
+bff5c44c-37a9-074c-d016-2bb2f1b30125,2141574272,1210868217695565860
+0e762f31-3306-eae5-6085-6c65149716da,3039632234,4170821664664143204
+e1f2aaa8-8a9f-0bde-8cee-6b7b496318b8,3206277271,4836300680559257317
+5ec782f0-73d6-114e-12b4-61e98e771d82,3599546368,4210960546344788492
+19248dbb-d356-bfe2-2621-82500837c350,653199872,15368708092143666386
+6679d611-64f1-ae9f-945e-13d84e2cf556,1697717139,3748322941472467603
+896f127c-0bd4-5feb-8973-c480893fc671,3293315621,17072456638287953644
+68dca024-b9ff-0510-0a83-59db8daf35be,3406867482,8259829760215486849
+f0caa5d9-12ff-eb9e-28c4-26b7307b0b4f,312392681,17104376750689553602
+fa3b58c3-d389-8ea7-fa8b-171a7c965407,3726502917,7219190489712398074
+7dbd9073-93b2-8fa2-ddfe-a64bdf712b2b,2348114231,3043697821622244081
+24870cdd-3e03-3d7d-7b90-1d920f21c441,1480491534,1173739441984986310
+38b6e4bf-a6c8-97cb-43ac-86b0487b9fe3,2000445977,12563845698643738435
+31a284a1-b10e-fdc6-d175-09d184700411,2628030712,12215286726853800928
+ee285cf7-e1ff-4567-1937-a6af3cd1db77,2551902465,14258483082835677104
+0b85b1bf-0a95-bca5-27f5-c927d1dc5baa,2208541878,10300242910570315471
+1318fa79-8b49-72e1-f13e-dfe559d715d3,3467670718,8623636000885648439
+5c69708f-3033-fdb1-e367-c8956127837a,1701405145,4389447900822735885
+51987094-6e15-d8c7-0590-bf0a1832aea7,2575322693,2937435628320008062
+e4c87870-0e63-8ecb-ba8f-a7910d38161b,2353838447,18189216631019632643
+947d17f8-a7d3-2ab0-2c2d-7e544869725f,1011415414,10186907918455459336
+06dd07b2-123a-cbf9-d724-7ffb7454f5ed,3741197196,18180043871859887625
+9a3a9b97-a2cd-6da4-a028-405192cc8152,1395066259,9589441903456329544
+7b9cfe5e-ee72-51ae-c364-e5256215b3a3,1107563478,16565125579699479513
+25efb9c9-cf69-e492-65f1-ea1159bb9015,3264384664,15199098287932579440
+8acb76d4-a79d-2c9d-d97a-70a55250812f,283705124,10701771173948544563
+828bc5ca-597d-75f3-30e6-59b62dad5578,1971569479,17559232499649895774
+fc78a79b-2db9-33bb-c308-23377d056b57,806211567,18304955981864098086
+6791900e-e912-c807-6883-36080c24e711,2016894949,4889418501878961112
+7dd2b53d-e492-f9fe-a792-7465706b0ca4,1556546660,1986758725598631700
+76a56f77-36ed-e175-9cc9-4960a3991f03,517149056,14984679916125639534
+af635513-1aab-6445-4b86-8a6efe63df01,3863545524,4618065952533419596
+ef57c071-b764-966f-a58a-f1c3d82b97a2,105807561,12525193110697043789
+7248b863-452d-88d8-f500-28be498136b9,221121183,3317563959163043990
+28a649e5-9516-6ea4-d1ac-d33c4bf63817,4181316893,18313516921999372008
+6e045cab-2487-a644-d3c7-2727bd3edacc,2847914760,1942189119375495227
+bec7f498-232a-519b-fd2a-5a809f456624,741972927,2158918451828306425
+855603b1-e254-2c58-9b39-a06d6c300617,1023409659,18154040160255865520
+a1ce214a-0bb8-eec2-a5c1-9c437808a077,3608276050,5491024822520829133
+a6d1e5ae-702d-5f29-f60b-f08964b704a7,3337461378,2189409727794942966
+f26c9bd9-c1a3-ccc8-012b-4235ed30caaa,1339300431,12048387831822963498
+7f5d83a2-3fec-0c31-941f-fbe23c0d71bd,2219146072,4414292935114861682
+d2df027d-1785-6525-446c-bbbf041a83f9,1144394111,4429926100945604463
+0d5fa840-600f-9362-d2ff-dfec05236b4e,2227059330,7136407472925143687
+e8f4326e-1aba-395a-1930-c75b15ba6df9,4085055834,5475140049494398002
+e7c14274-fbd9-3ced-5335-40545517b244,3330804587,8147589310155657823
+632a1b63-829a-07a2-719a-8cb0bebebb6a,1676281662,682274812046364237
+9c5560c1-4154-29ae-9012-29884f3798c4,4290562629,8498347329125029756
+2e9d8d54-2cef-c2d7-8588-89e18e86f0c7,3334403913,3406249085759083320
+2719fbfb-0d29-ab06-9b79-c4295dc803f0,2101113806,11924523068410148515
+802acb79-07a5-ae7a-b697-a5afbcaa8757,1952995676,1787269784420862939
+3cc31efc-9c57-14ac-937e-ff5d55e3bd37,1132490715,5814497649707030797
+5055e2ef-0c14-9627-4baf-037344a7bc08,2795112457,6845268585180721413
+661f221a-d017-3f8e-723a-eb844821b1a7,485945854,12277609197799634326
+8399c390-8ece-aaa9-ed88-975f731d1ac2,2420088817,9384666282419473793
+73e5312a-f12c-bf23-30c8-fcc0146b7353,1766365202,15198069591678439842
+a062467a-1591-88e2-002a-0270e65e3604,23252888,7593929035471554006
+7c4e8861-b468-eda7-2b7c-e98ea1a04660,4003335389,12356549552737003864
+32537844-e93a-9435-7328-527c7c599da9,266809830,7095255418592964483
+2c90072b-5517-7116-d0f0-85bab05dd310,4125759162,10363672659977830505
+07ec3b54-4130-d05d-94d0-f7d75460c15e,3980798930,14445646059507213202
+a4853a0e-266f-7c7e-1862-b323b9b3d274,4127754491,4122656414841225862
+5fcbdd38-09c4-0510-7c15-d3cf038f5701,2636923546,15738335092370984662
+5a192304-3da1-8ec5-185d-f4b2e76dd8c4,228795386,417252653401727090
+6c24c9f2-9aca-4c05-a918-bfc15d9ce193,2396316086,13413958667713359859
+3aa430ef-52b5-a7d9-7095-c74e4fb5bea3,2828967617,9940444933697931780
+f553818c-bc94-3049-aaf5-ab7f756c4713,3542660408,9268896840161581622
+84d27ff5-65a6-05db-a6f2-b1e994a78fbb,4254937198,12945577165589046092
+0d952941-bb18-0287-c409-72ef7731ec41,1331943076,3437462585346192658
+decfc905-39aa-dd99-8581-f483c95beb47,3791855564,10613931472504363697
+8730fc02-5ccf-ac48-edcc-357fc263402a,3517181928,17402880051033256595
+632d60da-e711-4b83-6dbe-4295b2b5aa59,2361853351,249324538892275629
+a4adcf29-a3dd-8693-61b8-6208234a487e,86883200,12274248298915556265
+90a6edae-9baa-8bae-640d-793e5d585578,268025036,17938065748024015919
+ad9f00b6-d6e5-1e2b-e48e-1d0624c23cbf,2118890123,5218172821077902676
+eb361a54-0581-096d-7236-31deb2ae63cb,3475607653,16734775240434375339
+8b4f5323-b314-fe61-20ad-038443003687,1410201536,4944855897665681898
+a6399c89-9de0-8950-41e4-a6976786c13c,658240015,4127593225632409467
+5744659b-0700-83ab-03e7-66489c438ed5,2221490604,377136649053701997
+a8ec7a52-13c6-5832-9b90-98440f6bdd46,2668033108,15875611357538924633
+f38454ed-ca7b-7c7f-33b7-7351511e2079,1578896604,78740617331011497
+d76eb5d9-a53d-ce0a-f795-a1e108fe9c84,3887777616,15362346743187246756
+eca6149b-a102-f2f1-9cd0-4f6f4793ba37,3288702335,14184659164105251554
+cb315a94-1cc3-b324-a542-cb8c1e843aae,4166872262,12327134242517321034
+812ccded-a08f-13c1-ce31-07c34b8f56f1,3182458946,16451705304168414027
+31c0b66b-e7d1-f48a-09e0-5488716fb41a,2394773628,346547022859901177
+4923e960-89d7-e933-4e2e-75858a5e5ae9,186945357,10990556854060970491
+6db62bd9-b48f-f145-217d-7899871bf6ea,1548437121,12160676210373319991
+1978b3dc-4995-075e-dae3-43ff10f245cc,2438854901,6198922200591842122
+b1878a9b-b586-a7ec-31b9-f34d5c6e92fa,1160287696,8110199433455522230
+8ba8226c-2b0e-6433-4574-ac06dbb5a670,748870350,6350592993642054802
+69de9cd4-a944-0ca6-7e83-1ed8bda5e3b9,19128977,12801156259689822639
+012a53d4-4c31-5c64-ab07-a6a65fe11f3a,1332461482,1412851637773812481
+a62aa857-1c04-e3d9-006e-33040fdc9465,2574906608,16615098571963665289
+006cdbea-dc51-4f7b-bd90-df8bb32d39e3,4189281149,16976399361214923914
+9046c570-d368-efe5-f96b-21e90b163856,1293941665,17311623260532659567
+122b62cb-3411-97d6-805c-10153d3cf8a7,3424677094,10834926800726051342
+badfa5f3-8b7a-03a5-4aa8-98c07b4a388e,3526402168,14889257908350834571
+4dff100f-3988-fbca-17db-8d6f2b6ac1a3,4193373071,16102162866144680202
+b37f625e-5196-09c4-b3f4-101a6f1230a2,572525232,2120764177969632236
+c406cec3-da2d-c2bc-e0c2-aaa3ab359286,1129935981,2042273130236635807
+5a2e1be0-74e2-b8aa-dc6d-42270e107d90,3706889776,6519593460124283574
+e97f27b8-2561-c057-c3ae-766e8e0b124e,2753056289,8499858583160275700
+ff362a44-96dd-f882-5515-415a6d8e34e3,867798440,9397820846774415467
+dacf98e7-8b3d-94b4-4906-18fd2e66517c,3098054312,15403749487758661268
+63287353-7fdf-ee8c-5529-9f78bd06d969,174512595,948943300690803207
+54a331d4-6b6f-d952-e820-713f075e127a,974705737,186690847356261013
+71c80d9e-b4c7-4f94-efdf-0f9ecfa394d5,4255659660,14696303106573952078
+eba1a269-f5b2-5737-49cc-a0e9c8e2372a,1148581096,7604450764896513174
+eeaea9a1-fe45-9c67-3125-8f6c5f9489ad,2447106321,10285553318068167052
+a833eb56-4e9b-d912-aec2-69b5ae3b5dfb,1494707770,14068779728888387706
+78084f28-4887-3a5e-f4a6-060273cf48ad,3712365312,3939844768436950632
+cf634390-8123-f98a-39ae-99ab3ae79db2,986645827,7819549235437266883
+7356b4ec-b71c-43e7-cb81-d318275e8bca,1312748163,17684271307749621899
+26ad6e24-b7de-573b-c68a-c860c629ca19,4036034566,2027386364834606170
+02904ef1-8a6f-7865-0e6a-2b60507a1f01,4161476615,4017863428019730094
+d75405d6-0589-3ae4-43b9-a202402549b9,1040878275,14803134540229546385
+d5c2f873-a0f4-2cdd-a1a7-167f07794a01,3626194318,15878769584438151478
+6c1f29d2-f9bf-2f9c-7ae2-a98ea91590f4,4011449216,4524664349454752773
+1d5e2868-3c79-dd7a-3748-56ae27386678,1600973265,11071273165805056495
+d88117b7-78d2-e101-a091-7622fec0f19d,4188478734,5368318329239907431
+0fc895cd-d8a1-3cc5-8126-8acdeecc8189,1700670839,4617972474467263391
+f1d0302e-8e12-5771-3ba8-8a08fb49b817,1783103032,12058564258712610290
+67e7ed1a-8212-59b7-4902-4df495a4d319,3486303514,2088856207830216727
+b0beec5f-c44a-e4ac-3564-cec4beb6bda2,726194617,12730730608599000608
+035fa4cb-f169-280c-5bce-06b78b29ec57,751186505,1817578288409461771
+06ee05a3-7aaa-aef2-1b0b-3a36e3ad93b7,566010390,2361179350872892827
+8a146858-6f76-3efb-147a-0faec2b21743,2415766540,1173271762611232952
+ebd0993d-8ff0-ef54-c9f2-e40e7b0252f7,2381602003,14048804642793907798
+b31b93ed-1f1c-8809-0506-794af9276908,2995763318,10702666939510474280
+7f22a1a6-52cf-a1a8-150d-5baacfc8d486,82751397,14675960617135520648
+919b04f7-29c9-e529-ec80-53432f8899de,1002738844,12518353387626934200
+61c15cad-8f28-2d39-a566-e715c1444b44,352962829,13649096292918442014
+a4745532-79d9-1186-d938-893e416b90b3,2214931629,12418031757446435690
+08e4045c-2912-c486-25b6-9618b3cb5a17,480452902,13256578619538238504
+ffb0af4a-1e28-59f0-3ec7-3825e1fe22db,4094772581,12267352013560412816
+4edd3d18-3aed-f121-05a6-b03b272877e5,2179719712,9385032180870241244
+712e90e1-1e6b-8446-1565-8c65bc7e9a67,3599519917,13136444597970635010
+94b74810-fe1f-7fca-cb92-7416ee3188bc,3248237244,16763150310010526676
+74cd9788-d38d-b51f-6190-42831932245a,1565675854,6564035624189259386
+a88f0e89-5d0f-192b-2897-4325a008832e,683248992,11729175484696524868
+dce129fd-79b1-e06e-ea0b-302b84c42c4a,861997135,7792310729634820784
+0d4fa3b6-ff0b-b6cd-26c5-92c9eda626f0,1236600940,17134437148887901842
+9fa8c3b9-a2fb-443c-2ec6-c6b142f9626f,2922394343,2533359589595119812
+afbc2208-8b00-cac2-bb91-0d100bba8190,3213019508,10244435008369660028
+9a88f970-a45c-ca8f-fd8b-86a13ca38968,743285123,10707459903678559347
+6165ee81-a818-f819-0422-fc1832619de1,3211495578,1066944345887647843
+6648f671-cf38-e9c2-ed86-05379fd4d208,2451170551,9369329642928956033
+83b820c3-e429-5357-fbe9-8c65ef6d5b5f,4131949889,10793106436460887474
+8ceaef3d-fbf8-f4e2-92a8-78336e327902,2598087965,13578492513200141300
+c4c976e8-93c8-db0a-04b7-1adcb51f9a5b,1918202111,9002696459763938498
+d3a410b8-78f8-26b9-b01c-e015988e87af,430360430,9420087970046453686
+1a2f51ef-6204-1a6b-8b3f-c33d6db29f17,929639110,17652583937943262744
+29caea56-d85e-a707-83c7-31184f98b22a,3378659681,6711786231407240518
+b7ef3005-8175-6ba3-a416-5ab3619b5c5c,1435486,16440449933366576461
+b3a9d74f-54ad-85ae-c7dd-ab00bac105f2,2499819145,2640122897508293231
+c28e277a-a513-b712-385a-183c843fdf6f,3912192426,13952884177814220701
+f9b28dd9-c339-5160-3e7b-6a3630fd48f8,3762937241,11902632184744249065
+b7481ff2-15f5-7067-590c-693e4e5024d1,599826063,8486999646216155005
+7063a82d-3586-4595-fabe-c7a2c383cc1d,1493005185,16312555272613951638
+3ff76f9c-b984-79a3-04dd-e602547730c6,243972633,11316319510391810978
+479ef39a-d665-b06c-6ea3-5b6a9c10ec73,2728872827,8126840143189540352
+a69716a4-aa0c-0219-75ef-704e782dc6f2,2237419139,6985036810459851615
+ffb951d8-0c1e-1c6e-85d0-85c341c9dbec,3542832455,13460026389967730056
+ace668ec-6d9b-e321-d7d0-7a6d8a9c33d4,1020601799,6190845775090458813
+e6c6fc2e-c72a-7a9b-89b1-afebaa126360,2167240187,17352126091628071549
+d881efcd-e854-41a4-6402-18a81688dc0b,3366193413,3513661832597534187
+eb1bc2e9-b7f2-5a55-4602-d064279e492f,858830010,11574389034935850001
+06c8a8dc-2f14-210c-a802-bfd53a657f53,2152331937,12773763212918754606
+e95db583-c5c2-3b5a-00f7-423717aa89fc,2566375693,15875230244364719235
+da82cba2-78ba-dd92-1b0f-27a2ed606667,2764438921,9932492573647881022
+43bff8b9-2d24-ca6f-f224-86c7764d948c,3213123244,13610445195714308813
+70060784-838c-c075-0ffe-74f3f1638780,1382989841,2152562643336017518
+3e034514-10f2-81a5-555a-f7b81ff1de39,3429915175,4865842150315268182
+30186a42-2a7b-0812-71cd-4ed59b18603b,2671913221,17360141269478732932
+6f7b293d-1b11-797f-5d18-027374724566,1589970181,7815071237883881418
+770b7923-c8ae-0582-d330-a2b5459f96d6,1643082846,4705381749756447358
+43f387f8-db79-4ad8-d6ad-001ebb023d91,2897336691,18330644853809247055
+0a773536-6c07-9dcf-44a9-a5dd256d7805,2764212256,11870550755967775947
+560bcf1c-ef7b-4ab4-8779-75c88ae20184,3603521931,10305732846393638712
+8ead2a68-2b43-d3ed-3419-d96c5857d3d5,3893380630,10368227534131949383
+ab90413c-d668-4e60-ec04-eba5b3141ac6,165598315,12197995522220063955
+1a708fed-8de4-330c-e1f2-4bf04ab0a71e,569469288,16481538980268094918
+eaa38b65-ba08-fbfc-3dda-b9820b16e6cf,3302948583,12215452096492460731
+22ede3da-891b-025e-aac6-7ee91a10b333,1052058035,11647170947547884835
+9e68b14e-5c04-ec15-74ab-31dd7f25ca16,3072974160,652159032893563565
+7fc4bce9-3f91-5dfa-6acf-b74b5a721849,2082723999,11396141100305183805
+e13b3389-c19b-fef4-c5c7-b35249ad38e1,1339713890,14305842553515599464
+173cd5a2-4dce-86c7-ab17-8aac193e2a85,3525664446,8177249101208155211
+06762557-5f79-f959-85c7-c97fb98af8ee,2115250782,10984909464412821978
+39f8fe70-b813-88fb-ffc4-5aa416f6deba,3711782335,18331891239705174872
+74566354-b90a-0756-3c5c-9724d341b345,2102311199,1614126103928230836
+7a9a1c4a-e15a-83d1-7dce-d5b74d24eb13,2939897810,11297838166475858908
+aff6ce83-03f6-3743-58c3-1812533d4e7e,3565501012,14357132738121192267
+92d9ba52-a09d-09ea-ca50-0fcf935cfa83,622288351,10220915060307582302
+3edb0592-0bda-9d30-115b-f4f991e6f4be,3325115148,9815660988377939702
+cf0165c7-8b04-ee0d-b72c-e106a7b62736,1079475232,10502675263411392306
+8763e3f7-35d8-9e8b-12c4-e4b31f52a104,1208953066,5690274972695915527
+fd9350d0-8363-be04-a399-6a6562bb9972,3002309426,291904591313298713
+8dfa551f-b0bd-b7c3-d2e6-eabc5f650c06,1627162550,9932920089713404488
+1ee76717-d578-fce5-ff1e-4c8af7bb0b93,383195753,12704080196579175600
+de3a3ddc-9b0b-c3c4-281f-e0d5bf792c75,3045782582,1241490471534178349
+30a287cd-04d9-570d-20ad-ef80f57122f0,2791640319,12017779764793685379
+6015eefb-793f-d9ed-38af-68acbf414099,2951117222,244102323181826868
+7a1e4fa8-81d2-1a96-59db-30374f7ad9fa,3164772875,3325086890966720782
+c0111869-2f71-9754-f5c4-f949f954a4f1,1483943647,15794661659098050601
+204ffea9-e2fc-e544-1aee-4acdb55b045a,886074898,6943729884206593536
+8585c9a3-2cfc-d808-8df8-765c9a6053a6,1421192714,11701975869110578797
+ca55fa3d-707c-3af8-77bf-9e91fb0d0df2,2793907656,11999580099874342369
+4ff90817-96c0-2b04-8f25-1b913f65bc5e,3525089018,5992329593092188642
+e655284d-fabc-64e8-dd97-662420cdd49e,1819024899,14292563886662159320
+d8584c31-b327-90b0-2629-26cd41e9bf2d,1868403628,10783636812466445818
+cfd5f20f-e992-d936-81e2-73ec7d7503ef,3018397260,14703966214885389620
+2406a477-426d-efe1-1c24-7f837140a5ce,1070283741,11283771822206908242
+e68f18b3-8fa7-bd67-b789-082143382843,32919680,12872466176905826236
+d66f7442-a18b-052c-edc4-ab9fe43055c9,2006387784,15118053140012982429
+9ab30896-e15f-be2b-f325-6698f001903b,4192876075,14262969866766634431
+9820801c-1177-865f-a26f-6d01085ec7fa,2370944376,12865029823986547524
+1be9c914-0178-b21d-9a66-8248c04d76d9,3622772851,16614224896390022183
+cd60c92c-8787-89b0-5af4-a680791dbdd4,488046505,11666566990698387435
+73058089-cb9b-81de-f8b3-1eb18c557b0c,3185981882,105003713562636626
+7402daf2-e819-73a0-7814-f5d8d64b1ca5,1968806295,16533687151739575718
+2acc414d-5774-911b-bf0a-8a9be8bcae94,2190182559,8516985473716660547
+fb9f334b-7098-3e63-0cc1-22ac358fe84c,4126396830,5107147203081066721
+685b11ce-9dc5-0817-3d0e-af5c3e9fffac,473910159,12889382223666773543
+4d75e349-c319-6a32-117e-c00433d407db,2716327794,6712014116408106422
+aba4f7d4-d43f-b96e-d1bb-ac65b6960f47,3302929882,6204545127605468604
+c07815a0-eba6-af42-5955-03a4ae1c2b3f,2549897980,2202140072285151250
+b4deaab1-62e8-5618-f00b-1cab10b09492,517161160,5684295382661681627
+bf9cc020-7d6b-2266-bd2a-ef56ded83b2c,3790098021,6277254454462938432
+634fcd03-7394-c4b6-e0d9-b1ab58fabd34,3677766724,15845830255408739279
+1127bff3-f722-c3fb-7535-9c180a10a6a4,586064518,1906336886215503861
+c512339c-6ca2-09f5-5ab0-e92abe9689d0,3996062543,2335616008519888828
+73a263d7-5fdc-e32b-05d7-cf1f71e6b4b0,1788097913,15855342137777193057
+79ff64e7-1dd8-aa26-121d-379057e30344,3969202320,7933347373973847926
+05e14db5-4364-9191-c049-6f5c33314af2,1346560057,11325474696424714435
+09ae0143-cbb2-67d0-3c9d-c5cb650310af,2300822121,6493734402575056719
+a36bba21-48d2-7f34-dd47-be6a17421cea,1424404661,5640685608954393523
+d937a899-ca46-4278-9367-9e53e5252a67,4128892848,6220660990867195779
+153b128f-a8e9-6439-2eab-595495fb6392,1831820863,15621413144420519325
+fd720dbd-5a2a-63e7-d1d3-8cb09b07ec42,4248507248,5258496460911758131
+795568fb-2784-5d23-9dfc-4667b3a62b33,2487291688,14758023187815619114
+562ed0ae-35ec-569f-7387-1a70da33803f,3297522110,6866181144894384837
+beca8033-03f1-9878-75d6-6767eb766d71,3355165494,5552461912886941932
+4179ef3c-814b-8c1a-f3c0-57fda1494f6e,1031590274,18235834345308597741
+43178edb-1866-9a6e-7944-419f92bc3edf,3271303171,8891026233603827836
+8ed85632-9931-8b4d-6909-12264632d97f,3951728597,9525248353173306327
+38324168-4971-38cb-b0cc-b583baf1db67,852893776,15934340504012770582
+701b1367-457c-39e7-bed9-88f64589b73b,2007646860,4571074061293069442
+92981aac-bbfe-f91b-6c85-2914a56d2851,1966392425,13258765415462322074
+a728ef01-a4df-49e0-15bf-33de652c4b8e,269455176,5522015355128465253
+07d5a1fa-b070-423c-2293-3163b64eb164,4155039082,11349659344036866530
+c52a7c8b-74df-a3be-740b-889f99ff067a,4198242502,7685304600609175557
+b630dc62-91d8-219f-f5d0-eeb3a9296e1c,3621597994,11562907151184576500
+0f478fe6-6486-2b34-c9f7-34906ad9680f,75950761,2011438394726128817
+2883e111-7aaf-2b73-6331-0825f0f6e0ab,1193653051,1607580055090883689
+a1fdc87a-3a5b-be9e-86dc-c866808d73e8,897011613,5502890110827370704
+4f42c45c-a28f-2c0f-371d-c01bb911162f,3352601328,17176687778284528312
+f52237bb-4879-2bd1-b502-c9696eee054f,2276070772,9716077208168142786
+bf009ac0-2f0e-769a-f64a-8eef87261027,207608262,9488229234245477812
+36921d09-db90-9329-8463-85bd91e2fd1d,483169752,9659164334640566201
+323bdcda-9c82-1427-5090-b69b586fd782,1148985850,9954728288240509390
+a0626d00-4acc-89e6-cc9f-48513d32263b,2032686842,11765336101795207809
+2d84c1f9-aa3b-9f7e-f2b8-f25e7474baf2,45064099,8104121942607829559
+d7d8b3c9-cccf-6305-72bc-62a5a0e8ea79,3640633533,6190160151700899366
+c44a3cf1-22c0-951d-a197-b153dca218d4,1326826608,11771045563353652986
+27f32ab0-d2dd-823d-c957-b9969bff6129,215251186,13718756151811660603
+b4eef8af-3d02-f0d2-137b-8488d4d14993,3245323095,11900127546034149180
+1adfc304-c7d4-8de5-49be-f270321fe579,3617043944,13062849952941602981
+c73d9395-c150-5ab6-b310-aba9b2cf2f4e,1830230743,16954471948177046662
+7722e983-1f5c-1de8-e39d-c99231968271,3987400825,2147537125007198642
+296c94b7-49dc-8d35-bb0e-607e134f4616,4056755366,4008204752130935561
+b2cc3997-ef33-66e1-9730-bb698a350b9f,1719140701,10783813899738128866
+0c752b59-40d8-3d3f-1638-e5b283256d4b,3140698098,5166238334461528036
+92a13754-9d6b-1d2f-1ad6-fc6b4fb1199b,3862657359,6825503126020578431
+87859824-c5cc-da88-3ea7-c758b00ec8b9,3513374805,16537692841092582480
+8dbad01d-6589-bb7f-ae35-9a2611921b38,3970583191,11256921741488532443
+442a57de-63d5-414e-bbb2-268bd36d2e7a,726500245,1778466285216055766
+a7084862-5ad5-e372-64b5-571f92fe09c5,2093635789,15736691433673396413
+55dc796c-bd52-f64d-9772-d67bf2d4d756,640643808,8453080144532985666
+150aaffe-1731-4b6c-49b3-189b4c77b025,83694919,11844973096988638402
+654f1d33-4244-b22f-27dd-715650a794d9,1750363515,12031352598656197539
+03d19e24-8c5d-89a3-57f4-cea439192656,467877907,12494049052593168232
+030d1fb1-8c44-f92d-b6c2-9485d1a81def,226857794,1862986188945674256
+b040ba92-32d7-c777-c380-d6096ba1836f,4024161025,17344923138712160033
+a315cac2-ea8a-f0fa-c313-2f617bf9ac53,4179868616,16655839569508110130
+e4dce3e6-dae0-06de-80fd-4cec8c11d693,1688545425,5712947424525511153
+4983cd43-c14c-5c49-081c-19a9d90d19fa,1727290553,9798107448203169805
+eb186f3e-913b-8343-56f1-3c26f1fd35be,3061576452,7811067457065051077
+e0051a3b-885f-7089-de5c-f49b6027ad87,857194073,13844094496033395654
+3800ad84-362a-6357-f6b0-87e6791965cd,923417368,11744851112903134099
+e8b3b454-54b9-c430-d906-faaed9eb7a6a,1725882816,6119703408263711035
+8bbaa579-07ea-fb62-1513-42a3915b2e50,4100326349,9454795361269689747
+faa9c2fc-7de1-488d-dfed-c82e2466ac54,2810441503,16887389816546030025
+c166414f-0883-37a7-ebd4-43abd7af57d1,3810528548,1045805719533074529
+2c045d4c-3d84-418c-b540-c91c02ac0305,2542793641,13176519796573736867
+32eceef1-3a42-25aa-07b6-146060419f9d,1765090849,1848127254433922551
+072d7b07-5520-23ec-3f52-78613ab5f134,651508666,8887554029391175634
+d8fe7e2f-5e9b-6e89-66bc-f5be0c7c051a,289230368,12351936158426019607
+d39afdf4-c8df-9b3c-2ddc-bef81fdf1ab6,1660711144,2485287101850367698
+f5e486dd-48ca-509e-7753-34a551d08752,3169806886,6442132279149662975
+b9d33dc9-8c4e-b619-4fdd-34b0eaf9d12c,1922355639,10245109000654822491
+0a1cd15e-ed15-db75-2343-bd11b745abe4,653406254,10920139338395081531
+275cfab2-9e8b-43df-eb52-c10be61f6b1e,3946565883,1608174092429617743
+d67d1cd8-4374-60a7-bbad-c025b02b4f88,3912326914,17954518953653065778
+657efdf6-025d-7193-df4c-37be8319bbc8,229755597,6082637167262471414
+eae03f15-802f-1a86-93c4-884e026ac258,3580940304,4685622348435559262
+b88f99fc-2bbd-5026-045d-9be2ffc7bce8,3877550525,14849462700567885227
+499db1cd-91df-6c9e-0363-b9e905192993,1415085811,1192824713663700836
+7e4aa7d1-bf6a-9618-d60d-83e8fea230a0,2195211739,9914509772447232435
+be23e475-d2a6-3b0d-e4a7-7d77205be39c,1479740269,17452626394196233436
+f2806a2b-98a4-c4a4-d240-a26746845fc3,3615748228,11749276109800568569
+79a39c75-cc65-a7d5-fdcd-ca11f7f15c37,2556596327,6991246681221505
+c670bff8-0a9e-6b11-58c5-a6da822d27d7,3345960526,183675494338297433
+00776b25-06fa-3699-49d3-95d5f7017b42,3248916718,15883741980815288946
+0a153c80-b0da-de9a-b5ca-d5c53b40fe3e,3741282974,3021704469230237084
+b670d189-07a9-32cc-aa7b-f93f04df0e12,2709183742,6371160073098943396
+f552c3d0-cf07-0106-6151-e8122c3bdb8d,1231258171,10474413759042635323
+fe429b74-139a-eea0-4818-f15f5059f0f5,3301677786,2897949309593167091
+71b5886b-d995-05c2-b88a-6446bc1a7d73,4122939674,6526895937912943837
+4a6bb54e-398e-7527-51c7-31fa759c6a81,314050693,15571486979137444917
+fd46472a-0fc9-78e0-3384-ba875c19ac2e,3538257201,13501897339409144141
+c3c7ecbd-f2e1-f006-e25e-732635b38523,3011884305,2571739320595658885
+babb207d-d5fb-2279-c747-dc7827a89577,172036417,16343290194796405812
+1d937372-458b-d25b-4e04-9379f0b35887,266746131,16246276440669660206
+c68ab974-7a52-8809-25bc-ab6b23b82ae3,1259818870,15000379949088486194
+db2a8b57-4897-9dbe-636b-946bb183d219,604046121,15576271571033707403
+db6ec651-f0e8-6681-4e84-fccfa31f0f0f,2172601606,7129532314933686084
+23e6e04f-3b62-22d7-d887-37c9c4edcd8c,1342974710,4597172475644190842
+a4094062-ef6c-f0a8-cbf2-581bd2a731d0,2123421981,347846091329714941
+5de238c8-9c95-0c8f-2465-0e997280d946,1050549322,4826928781735011051
+5b1cf54c-c460-3a10-7f37-93c6c861d2cd,3698314909,6510851971208191633
+de140078-fc66-dd10-0502-531a2445cca1,2196951119,7615755418438174900
+0668a7af-4f97-0f56-6ca3-fa8778f70055,1592684060,15512098952260213813
+3bf089c9-b109-4d2d-236b-9fe86dfa94cf,1657634544,3110958843103673690
+c348c345-9697-df12-0fbf-8051877d91b0,740211175,13807148749165655046
+d3808957-aca2-bc75-d813-4f0228eeecd6,1527587299,190278103177804131
+beb877b2-817d-a1c1-0cb5-e5618471f16f,2102165916,8235843643958052964
+30e125b9-2a30-9c43-f26e-430d9f9359b3,3354013249,13013316392745119103
+6b83a7b9-7eec-2958-6540-a814eb4cb886,4151434453,7052253690902905074
+2c9f2d27-3b70-d36d-1064-0305dae604e0,609489052,17200139758549552489
+76b122f1-66df-cdae-ae68-e4aee90bfc99,2652453360,5184316472620453569
+85ab56f9-401a-006b-67fe-d6f37ed608c6,1919613682,6735264365738667597
+96c5b680-6e64-1e4a-48d0-f915549e81de,258155278,13082959595304079705
+2dadbcf0-8765-b19f-07cd-358080cc6061,2767655304,7493168064226033386
+97ba051f-4752-7aa9-4e8c-bed7104e32f2,1480651328,17127569858359133199
+d2162848-1cb9-8fc9-54ca-2007e1515feb,316583470,14474273257152880418
+7aeb891c-928f-a6f6-7033-a89fd8ca06a2,49602583,5860294977149216003
+d340f683-234a-6633-ca04-df9746239c9e,244789731,2845938981507294746
+ffbf38ef-1246-54b0-5af4-375b89c8fcde,1958999294,16051948319829893957
+def0ed67-2a8f-e8ef-8edf-06ba7959eecf,1665121980,13812370339244099391
+6909eeda-cac1-0789-58d2-ab049b22485b,3697063524,8946657379341161909
+5139b7c3-e82b-78e8-be0d-8c891987237d,1716577242,5872765583469510392
+35bcd226-ff6c-7fcb-71b6-a8c2d92146b0,2132555075,13571529863388584495
+c2ec48ca-17be-3fee-6086-dcbc457ec774,2573378312,9748711007334481066
+7ca8806a-c258-8f09-8924-7246a72f0358,1885813669,8228038974019432631
+1b63b651-1627-548b-c5b0-a73ffbd80693,1675920483,4434364466666789790
+044dcf95-d4b0-2bc2-dd99-1a4c1e717130,411550380,8904630358903345326
+39c8742a-9e15-a51e-5aae-7bf953be62d5,3663912052,6203887232887224287
+c7318db8-7457-d79c-70a0-59f44ea2e353,2369096814,7702520638604566936
+d8a5cd80-b64e-33eb-b527-b5fae5324f32,4228325255,13400444783663860934
+45f25dba-8cc6-8599-8773-da922f983cfd,386499855,16226888582009397999
+6520ef8b-62f4-82c1-9830-5e5237a3d5fa,3442392890,12317160756123425000
+89052faf-e2a2-b1ac-50b1-0de66021c7f4,2367333184,14314550672427594662
+435004c3-ac39-a953-7c1a-43be014cfa32,2965583383,12998626750649931917
+28b4e8c5-4489-e485-7144-8739ac4c0768,1708729768,6810115007592374768
+0df749bf-b38c-7f00-2713-5b5a3ff65662,2869544197,16893889951827097531
+279cceaf-7086-bef9-fdc4-11d800416f9b,3536205128,17942465772007439910
+3d054d25-16d7-57a7-9886-d5f97367e763,2858803865,10304590184900899073
+3df6b361-4e8f-c7a5-9083-97fc987f593d,1706804999,13700130531167177396
+9fb37749-a2c4-541e-1302-e7974203fa99,3396706924,14549921798555043585
+d0d0fba7-1e59-145e-a08e-f4d8a69e47ab,3131978633,12141166311242825903
+4ade8c57-a585-0f38-d8d7-088e36457c63,2387216438,12260133701287905256
+4196c390-54c0-67f3-9c3c-78782c446630,2958152515,14335230239337087926
+fb940f26-6377-db07-3740-1a171e9b55d5,1547958257,12324319143699329144
+565cb334-3850-7305-beb9-14a8c7543595,4037529261,1853850267464762155
+178105f8-84d3-d805-0559-f5788c785a97,126643422,5732319022259592607
+b9ff37a3-8b9e-6448-7277-90bf95558aa8,281917013,15389319798726432923
+1bc94837-28b9-12d8-3ac8-79a0da8b201c,4234980446,6237327468530580636
+46eed60e-b2f5-2176-456f-c1a5208c7dfc,2070299953,3610671466917462200
+a98247de-98bc-d200-0e17-45095a6869b2,4068610124,4712630006162764891
+e4a754e4-9c46-a2fa-5457-f12882af348f,2306740655,13622852683789399410
+dab41119-cbbb-e8ef-659e-182b900a517e,963347052,7847589475413811609
+04888957-759f-5deb-968c-7251402bf1d0,2662016632,4775436523516674326
+6f0899e9-b734-7d94-1910-c2e6e10722c8,2446739592,9649100532413884418
+54b57f6e-3340-56bf-4da3-d1cf53716b00,4175032580,13187866682408472755
+842ce4c1-e0a3-9805-ba2d-893586452d51,2255693857,9120936317715086654
+44fb65ae-487e-195b-437f-2e805650c134,1848676039,13015507888544169438
+249b281a-3cc8-def7-6d11-77945a436a7d,3112333210,5740639327168747657
+e3fd8e97-6987-0dc0-21e9-dc0430245b1d,664693879,14432619847510755816
+9ce25b16-3385-ea58-b767-3eb3b7400879,2755605122,12097455669358873752
+3a3d7dc4-7ce4-cbbe-1b81-c3112a2f10db,2504499387,8779638378215990678
+73adf203-e8f8-ef66-8da2-33c7b60b24f5,1116599432,16471837274336667788
+07f0d8a9-ddd8-f238-ec76-6e10c6c61c96,1773214419,9674346526671522536
+84f9745c-6b5c-de47-deba-abb2dc83d4b6,3015297991,2948025595216608059
+d7d55797-a537-f366-a37b-c1a541996ecb,771341406,5171899275161650573
+c62243c8-e4dd-fed6-77fa-760c988f9ac1,2135151760,5652064770650222806
+bede5697-3a1a-cb2f-f985-f50cc1d9304d,614418655,5887704019643522419
+9339d75c-56f0-becc-ea10-bd6eaaee5f9d,1051415514,17321688417455963694
+be278063-9fe7-5956-efa5-e7c1841707b6,3297815283,11856678396327366841
+00d44a6c-454c-ee61-16f7-0a583242948c,2960391364,1256645213611559211
+6dd74d0a-40df-b4bd-e538-f89ab614af80,3231974193,11806084146729487681
+68110b2a-e162-5c07-a46f-f31979a63ca2,4113811156,16338808097578205257
+14e4b4cb-2d73-57e7-d6ad-3766e228b6eb,2786683878,1087652616679203983
+322542b0-6e6f-5cd9-e18e-aaf2485429b9,271497671,8922041935010315401
+1575ad61-0939-16ab-984c-9a72b5533d9f,3507401546,5884597874444837566
+a4830ac4-7331-850e-69ad-011444252d8c,3789281450,8134369582161745776
+fb34f6cc-ea61-7d6e-e2df-a4a06721e114,350224908,14673268026729108349
+ea52d796-ed3e-c3f8-4ab6-bc950dd1dd1c,1047418947,17900915995358737918
+b86d27a5-52c9-b336-1705-a9369f361605,2239998945,16852334785790483539
+997d6190-3b47-b831-c3ba-f3cb31e5dc47,4254717605,15210015203320219790
+29d25519-c60c-a62d-008b-632f0d3f7aa6,570594568,5513282880158537784
+c8050a44-2a14-4e3e-5ed9-306774dd8744,4030076481,13705098563354429643
+a96ffd72-fd90-8b6f-70d0-83d946d2d7dd,3768269401,12219840196727516918
+51c65f4f-1db6-4092-e9f7-7c3475f55e51,1295624722,16546153473693488350
+d158eae8-4f87-48ca-ed5e-26c9d53c52a3,1913140498,10623365067892920777
+a2b614f0-8882-4413-cc48-a5ac8546b9f5,2751770039,10327763087990783181
+5a46668b-bb89-fd98-d8b4-f73a879a1731,2188261398,7733538847887173649
+45db0dc7-7499-0246-946b-04d32e34e8df,1001449929,13871761285395338650
+b971b485-ea8f-f160-d653-8cb02d8a0a5f,2044842203,4592628456033662736
+7874158a-4402-0940-faae-fdbd92a30276,1917305077,14768419366976032999
+835fd996-655e-0c08-f821-16da89eabf9a,3396006891,2115598416868524041
+d842a795-d080-a2c5-2ab4-2bfe56a471dd,925441208,5583147604021199170
+65dae8e6-abd0-04ec-85a2-9e280f422fd3,4230552183,15070636141774036504
+4b4519e4-7868-d56f-b3df-41698a111fe9,2485399283,12499914428990086564
+6f760d33-5cd0-f2bb-804b-0aedc67effc7,2231548588,1897693967267534841
+a7da0bcb-748a-0f40-64f3-5e0e93d70347,3510438232,4090123240015983961
+62a6f89e-ac1a-3b04-d6c1-42d5b161f026,2728185559,1418414122204031519
+09abc64b-fb6c-6a73-49ca-ee9942245315,1278591162,10291734019533850529
+1e15894b-a9e8-7c0c-7e58-29cf6bbf2101,3787206451,5739713559937060388
+3891392d-e205-34fb-26b9-ada80b957301,3919843434,11573173153609040433
+74f9c39c-9db7-2df8-e6e0-75ec0bd8f330,2270978182,821628268070504665
+97e0f3ee-4a0c-cb5f-7814-dc9b7736b69c,988804826,3461708799801988987
+eff5250d-3fc0-08f9-b9aa-797dc3996d19,247173284,11849429359713338869
+b2938fc7-f07e-e754-d8b9-7c1ec3d13687,449789334,8923101985958343291
+53d78eb0-f118-8e2f-aa42-6502550aa65a,2193697594,1304392133585071910
+41069321-b094-fade-a634-177e9737028a,2945499269,15677845905261465281
+ea6465e7-bbf1-d47a-5475-e5f0622d8afd,999148065,1191894438690707017
+cdeb615d-628e-9098-786d-e0a01bd0decd,1398443940,10905753395256599960
+bcef6951-103f-90a3-9b92-c36d4ba0e45a,1265399084,11328861104058956626
+d240bf43-c45f-9b6e-9281-4f298656a735,3488061631,396019086798736817
+72d28563-8cf0-3fb0-4d50-a535a862bb89,2560974657,13988475514144501495
+5e6aad0d-7cf0-74e4-5dc7-b2c368bda71e,241160978,219052549613025818
+3c809882-c28d-4e88-e2f2-d495466c1e9e,452764055,7641188640218287178
+163465e3-b188-e0b1-cd0c-db9f340531b1,3462088842,15831401278066787678
+c831d0ec-ef25-513d-3e8c-e8b825bef95f,3138518316,7199898766219109931
+f74d8080-a3e1-4a85-3e20-03ab500e8a6e,2486944481,6969684132352366021
+f6d04e1c-fbda-e944-9262-dbe1d3fd77b7,2993968591,15680936199165285629
+d967c3f3-f2a6-499d-bc62-d6635b939301,1873868294,8023807285276736468
+9eac6a77-5868-1fca-fa5a-d1046a00367a,1691267192,16582534291316260116
+8893e039-5b92-43f2-2f7f-232b72757048,936276896,13044403222023636413
+86635f28-66fd-050f-0242-ca691f3735d9,3432083976,15133323392183520303
+b84da9b0-5825-9860-b4d0-640a16016d72,3762443409,12544554573245764609
+5d27c0fd-4f9d-534d-1b14-0a668e080ea4,1112041391,1665841973061112934
+376cef82-6f7b-daf6-04fe-771941ea2baf,2903089853,8504111536162719883
+29a6ec9d-b423-0905-899e-99d6c198eb10,3864618099,1350434031288506002
+cbe69d32-a961-5c21-6eac-d3aa672863ad,2546373132,2215879783467316601
+f6a3050d-e778-a6f3-8dc0-75cb38a5b1e3,4261476222,18116910101683391572
+cdb37aee-97bd-5489-21f8-b80bde72f67c,3159274942,3176018882010628058
+6d55ef55-c4ea-571e-10ee-ec5ac922497c,3518669694,5185859752366096791
+7f683b14-b695-902b-43d2-5cb2c6f7509e,1849370238,1868160051164269713
+e2d576f1-3d5c-4d3b-289c-33192386ce70,2879305065,15518581250307234220
+dafc3ade-d6e9-4b48-dcb9-bc74bc7de8b9,3861817316,6089557850237807249
+0b1907cd-8c6f-b254-b87d-cdae0fd0e291,1241489027,9677977370461148022
+8dceed48-5e8a-e1a8-c9f5-716abc826d6c,545214536,15282190873437220586
+b01891ba-0856-7d0e-0349-0077d6418f81,3414730350,2112074092413142453
+846f5c13-0831-fd10-49af-a16e84acc8a2,4088063020,16901151333347025003
+2307fac4-4a62-efb0-26e4-9e255f28fd82,3839782754,5451950645224433214
+f7ba9696-0a12-ee90-e1ac-554b7e415d96,1786138749,12923047405622132200
+1e553a7e-1616-4f5b-3399-b1467ba69486,4264856885,10234510653873612153
+382f1e10-99b2-86a0-816c-b23fd30b1ada,711425243,5468292880568933442
+a715505d-b131-a191-3392-3846727fcfa9,3396722683,15287308319570061729
+b088728b-e114-2031-ce6c-20f4b901a560,1061726148,15795023651678629538
+03c02f77-c48c-e7fd-eca1-e22284b8f702,237069104,4755507530265658956
+983a7c07-6a99-f73c-0788-3627981d59f8,209051761,16096822319147569620
+ea0009f6-7d7d-a174-1bf5-a041cccd4dbf,1661000308,27308136978384658
+139e63d3-f512-6b05-f69e-8d7b6ebeb944,518327103,2585633772015577811
+d90c6466-4d75-97f7-6a46-f498b16c4a6f,2434945453,10069802495149012848
+2e4ee8ca-d278-afd4-117f-a941aab5f1b9,2373318588,5898540828032197383
+0d3da751-664e-21ca-45be-0206cbfd417f,934536858,2426424172153469351
+d64e0990-70b5-a344-1258-b44aad402cdd,3499005850,6223079607423242685
+8eb136b8-d23f-b198-2741-714131cade01,3000115959,6557016079761735765
+e6e66a82-bd5b-6340-7278-5591c722c897,2750032299,6310217099951578687
+068e3f1f-08f4-83a3-0e3c-69a966304547,4245001468,5246692570031798443
+7d039dca-16e0-5a51-d8f9-8aee994b0176,2536656494,3179181882958215034
+9e431678-0f73-3243-7f54-a722ed5281ec,580637549,2037834621472887348
+222f41a4-b04d-e841-fff6-058492e2a210,3501115202,8190876873461128105
+74d1c5fd-7060-b54a-277a-05aa81782d68,1348171947,16523160815821326322
+4dabcc00-9d26-c965-b69b-f5d076734af6,197895465,18202578415723543871
+3416e923-48a6-3280-fbc7-ad66820ac56a,3074343139,5919165787142722675
+1e2eb3d6-672c-23c1-e236-24f3d5ddf88b,1979431001,452391775905760311
+36bdf6c0-a817-8e89-e880-0acb0f1b5123,3116721627,5030432928238159149
+27996932-72e1-ec41-5760-b371a7d1009f,1682799277,8643779048151295567
+f4c8d094-3dfe-ed31-8193-914eeabc8539,1584334835,10144745340185462418
+dff98ea8-d0f6-217b-6785-59ae5d18c5fe,2984012092,14058226472408406965
+b6925822-f6e8-7d1b-7f7c-f598d49265cc,1874912313,11501420838757929458
+058046e8-8f41-aadf-7332-356f11a1b544,930531744,16954866853264755421
+63fe4942-71cb-0a14-a985-e503627fd9aa,885434483,10307430138407861810
+250c17ab-1abb-9d26-f79e-b31e93a5772f,1419990944,1693872557123290387
+4467c723-7beb-2569-ff9a-5078ad78166a,2619575545,15860894890603382880
+6257ed94-f2f7-22b7-04d5-60b27e6129df,3811025176,214079773021614614
+f5039b1a-b55d-9115-b43c-d33b60f3e2d9,861451355,4556789959440197120
+33a181af-5b04-f7b7-6d3b-2c5b0f00ad5a,100519812,4516391983359246189
+72072658-fb12-91e2-0ffe-8cdad8efd852,1233744126,2761253937475455434
+62670afc-4b16-fe24-9738-4542b6fff6e0,1258284876,15210250530748509063
+c7c1136c-e6c0-ab56-167d-7f8311887375,3557932845,16473765017465912213
+92e96393-5f7a-4fe0-994a-8f8589f93d5e,2180179819,5164735145954646276
+adb61973-0177-2b9c-8857-5886bff533f6,3745347114,10873745056397637478
+6a881231-04f4-1c42-3485-5bc63a28ae04,3312890539,11115835683694657104
+14cd5024-dce1-04f6-618b-c85e9fcc6a71,1133110089,4585524350837983022
+6ecd8ee1-bb25-0f47-c1b5-d1e1f7637257,1342824764,13946619103155712570
+a6b28390-eaf4-8540-0f1a-51edc76639d6,1036810565,16565658826466124412
+2d04baef-196f-a8c8-999f-4ee8cca38330,65361687,1881536220639425282
+0ed8c304-6a9f-42e3-cdea-cd1af99b5bd8,2575857408,17272958818754712430
+12436625-28d2-ba69-eb06-65409e232878,4124179019,9802603376045148137
+81720a7c-03cf-4363-b650-cea0238200b7,765739622,10170584627488735393
+2b90a309-8658-9fa3-d5b4-56fe7d9c6918,2801379093,8881007383286243583
+822bb1ba-69ea-4868-f32f-87af9a9684f2,3935151318,2313753138217481007
+1de1285c-1871-6f99-f180-ff22b7aa4ca4,1211504221,10678281567005742627
+b6c17412-54a9-acba-4f4f-e8393d104492,3728967551,6478308924767057212
+3c0aa92d-7e42-4ef7-d5fa-0abc82dff8c6,1878758252,4977569541245805334
+c16b7166-eecb-50ab-961a-33162cb2e06d,3408114196,7422058418930007200
+fee3f493-8a96-c38e-7e21-60070e28ea81,879970244,5259493974162328236
+9987106c-d912-8dce-349f-3aa958f5a77e,2026554695,8979682274559613881
+8f79c01f-3541-5734-7eff-6daf4c81cb30,2169077812,17850208036877006824
+967e5a22-a8f0-d9a7-6370-531cdea91e0d,1037271813,3915184825968592766
+8bb63b42-64d0-3ab6-e0b4-c81b676c6f52,2354400645,8123068836121876058
+2f5af1ad-1d47-6b2d-1d38-e97f3be3ce22,3371727818,10690809372134334486
+8c983753-f552-f8df-dcd3-f6d2f1084397,1299092311,15793910443995454122
+37b4f2ca-b8f3-3ce7-2ea5-235f74ea5c74,2259870706,15671334391727550903
+c0e8add6-4248-8173-8748-5b525357cedf,3076690479,8765278142685914645
+899d8698-87f7-7cac-c992-74963d9c56e3,2917225336,3621229496879784185
+1095e061-6c9d-a35f-74bc-d18260401f00,3656169138,17416660896135839855
+29f9329b-af5f-a2a6-cef7-7cb71677b9ec,2518514714,10171204115747770270
+f215f140-fd73-b0b5-97b1-110589da9b74,2970594268,17294831960928445524
+c3eb0d41-00d3-68cc-d70d-617cf11bd519,1283710096,3305471015270372325
+e87f3a2b-c8d1-8a6c-19d2-5ea6cf5f4138,3874956553,4500245165080686865
+80bf8436-715a-25a1-b20a-98e6e2830d13,1167870319,17671324369985641297
+85c8243b-cb41-0ba0-9bf8-9002747999d1,2683346634,15779712517511006117
+f56fa6d5-47cc-da51-1254-ab8481bfd14e,408084051,7540678450099971198
+babfeacc-dd13-e782-b57f-0fc26e5293a5,95338301,15698620174928913785
+798d9c39-afa1-61bb-0086-b2fd4aef97b5,3548075465,17126828948313125610
+a137fa2a-467a-806e-96bd-aff3deb36a7b,1402484511,15718280432480506091
+3c1f1f55-4160-6e97-2682-2555eedd7b0b,3129378002,751769343166517784
+fac89f25-e274-8d1c-bf49-1da536f1e2a4,4251615883,4144693784032121610
+90485584-dd3a-5d9d-dde5-91eb71fdd296,1938777886,11385558243764258431
+8c5ae897-118d-0be9-ed75-f36eb76432ed,424834342,8963629468684185713
+33e0fbe3-ad57-a02b-5d57-a3983e4a08cc,2079364757,6424251296323450488
+8070775c-2e87-34ad-6faf-72a31edcfce2,459606359,17357157378686363233
+a4d3eb5d-b3a1-0484-9f7d-fbd8043594e0,3284074352,7782614640573178218
+e0a461c1-255a-f372-27fc-f74049acad2a,1606854213,14550935313613011704
+ceb6d374-cf52-85ad-9dec-2524883ec877,1543095232,5539654444183307059
+ba9e8a2c-cc8e-94df-74e0-08d380190f2f,3730346410,15161554905178089611
+ade5d9fa-6334-11d3-9c6a-33cae24eb754,1324632071,3937838935323067055
+45773473-2e4c-794f-4eb5-c44e95c8ce11,2788563130,4539591226511828171
+245aa8cd-fc83-9dbd-e6c9-eeeeb272060d,1009292203,18256597581143930834
+04a39ccc-da9b-bb15-edaf-d051a94ada6b,325049239,863157233267492551
+a1795e66-223f-6e74-ac4e-8937f11f9c5f,1477330187,13125035110902181693
+01a5d6e4-8b7a-4e5a-aa31-170dc19cd3b1,4061931499,5918442673752900933
+b52bf83e-cc17-c9d1-b462-581279eb19e6,378034909,16911332756926517033
+8231eb70-cde5-3a11-424f-382eabf529a4,3268069991,15590979000238378271
+8b4d6aa2-e6db-05aa-b8fb-c9dbd966c5f0,3306798766,5683128398094104426
+15cacd58-0ffd-5700-fbc8-dced33add644,3161062407,7794527420587059679
+5537d144-45ce-e136-0326-200fb33e3843,2742307851,6146214368203992231
+0bf659e1-1f90-bcf7-9aa6-9529a6725ba8,3556993397,2028322305386591739
+31a162c8-d4cf-cce0-150e-e7ea3640302d,3621266769,7763128626007171684
+a3703862-9625-115b-caaf-3669e42f5c7d,1077985345,16768801235817295601
+b45de855-a16e-3d56-d789-9f52a696e003,1098100544,10960649398819097736
+baa7a4b3-7010-bd3a-e64f-c82ac05ed3ed,482635917,13317758786081936531
+9e203d0d-d3da-484a-3a8f-bac5f9b501c4,1440148029,6645811971326826824
+3c502692-6764-a853-9936-c1aa29ffad9a,3215232550,13234048501875343193
+26b93628-0113-2889-1f01-104a8d8d76c7,183551860,11835967587362933024
+9641c560-9969-850f-bb92-a07dbdc370c6,2281256366,12897392519073374449
+6bf40847-df48-3be4-5c14-1c662fc250bd,2452756314,2359113618366083843
+b37e9a50-42f3-c726-f415-33d458f3b0ce,741368598,14854173452909766448
+a31bcf7f-6001-fdc5-b1dd-ff94686681fd,719046347,10355321837645844492
+a62864c9-48c5-7a7a-78ef-00572fb5c328,3581811238,4287182932375375972
+36051d77-e930-448f-ca05-d8f9f9bef718,633811702,3330304187544482939
+a3efa163-b22d-9472-ad2e-3e114c919dab,56301285,261915296511775833
+ba0e86bc-9efd-be1a-c391-6a1e1ddfae88,3010373141,16751415672758823290
+4e69b3af-8552-c9b1-9ba1-9d377a3d9966,1989457095,3662309759631478669
+bc206528-a866-a304-c47f-d61f8463e990,4244860912,13056451365278366309
+d3f9ff67-4a82-f287-288c-1ec1327e5ff0,1515738331,1007495794092525760
+03e7eb35-d915-4001-ca7c-ab4ed3f1d8e0,2515241087,5952452095180641084
+1f3d4782-6eaa-38ec-82c9-46727d16ad59,1998578838,1200468528966379855
+f0387832-d2bd-0a72-2599-a1c5144fe4f4,2040233879,13943623913500273092
+876440d5-b247-52db-2578-2f15c68ec549,121351902,14964179328141681225
+61d7e09a-ebaf-5e1a-a9b3-959f766f8c69,2869627329,3371982118538580148
+d26beb63-0cf7-2fa5-533e-f60380ee2605,2741845117,3079877216103632674
+095d25c7-1497-75ef-71b1-bf0d4e3da335,799031626,1032626701498501403
+51223e09-a563-7e47-b38c-d92c0ec479a9,358488444,6210554605344906598
+0b5d85eb-3e2e-12c8-03aa-4dff44a3e7c1,2956409518,9812248335019592730
+8bc4d564-80d0-9586-b3ce-336a25249e94,3130488045,12874575355251639799
+c63de7d2-7f72-935e-454e-3085b796c268,868245928,8372340827578213003
+b7747ebf-38c8-0bb6-f726-27771dfc1479,83610350,1840339149411419290
+f2c0c96e-1ac1-945b-3625-c525892d7fe9,399783695,5433970775458641643
+4a294203-d7bc-b79f-4288-9f7e4c51b12a,3473141979,6943854074653934254
+7887e251-d749-ac64-bac4-00ffc3de9fd5,3688655095,11770638832524023212
+e37c201d-3dc5-039c-6cfa-8129a1b5ca8d,2482687113,5844519961676314930
+c048dff1-f22e-c156-753e-bdd794728bbc,123233754,9808022446423213151
+5f025d18-8d59-26fb-9013-f179e60b5078,4107583243,11613875762185998415
+05b60bf2-2b20-5302-61d0-6f57a5bf3ae9,3738561094,1149274442051093396
+e201e5f6-cf18-4efa-d001-37d6b06c004f,978329329,18271883723346806703
+b8ad1755-61a5-2b47-cf46-a6acb8de9ae1,117927786,18095102796930969155
+bc7b316b-b510-0801-f9c3-d09e37261c7e,3315212274,227865698584899225
+b1fa9500-77a7-8911-a39a-314fe3d3138d,2135077992,17536590386355810946
+e51c4446-5bef-df1d-8a07-d7533f0b0051,4093663142,16619632119243442218
+35dedf77-a7e8-2b64-7f20-f25b1b4a96fa,345705436,17208623269906901689
+a18325b3-5e3a-7a33-e78d-fe896be9b349,3379443769,15373923797153682942
+006acf7f-b5cb-46e2-be75-82b8d3de7e6b,2236869492,1913453487936390768
+71bcb823-ff51-bc06-236d-d31cb8fa7448,2640124025,12671645474533872831
+f81436ee-1de8-e541-d330-3c9e03e2c03a,2457056140,17668201723351858128
+fd410e87-d7d9-f205-76a7-dcd32043b2c0,159749922,14165874683012102250
+9b2556cf-9881-cf6e-bd1f-4373392ae847,3039702247,7504666155431525878
+818e085d-5af1-2507-420a-205e933a65a4,3494234808,616275472238010658
+317b757e-d50d-f5cb-48b1-33cfc9eb3da3,3402052599,5889213893800422979
+232adad2-9cc6-810a-9846-a479e18c9220,3072316223,16763108968685996836
+99be801b-4253-bde9-1af1-2e4f59408c6c,2562661578,6863930281404798096
+dc05776a-7910-1212-d5e5-c575b2ffbaf1,2370339913,7611407337732126113
+c746da7a-856b-0b57-d391-a2af9bb90851,2297484778,17842785304482819355
+0f262b15-304a-be29-71d4-ba56223738a5,2916187607,17985446276995188481
+68110833-b883-9849-1ae3-ba64340447f9,3843178524,17559163485877421962
+44857abc-a444-1ca8-28bb-1e4dcefd09f2,1174578846,8368137785410226046
+921bb764-2128-7ff3-103e-004e84f59fee,2729609857,17558881567128498452
+83402871-4506-2b27-fa59-c65430cd789a,430794806,12528692246416681944
+1d2de86f-6e2c-1a71-b869-ade7f27d0a50,2690834607,1922050451549592425
+25908bb5-45d0-0142-71cf-3ec5eca99867,2731194552,662261871813614222
+c3ce31d0-d91a-56b7-7563-b2d5c0079c85,1118651921,12727023633797100604
+5411b4ef-4ff2-e8c6-a5c6-31eb8cffa12b,1461981606,13980051228286385205
+71b28a9b-365d-8bf1-d1ec-bb09c49a26e9,319733155,17328437215300005238
+d0c049c2-c0ec-9a6c-9dfb-b0c4e5962a6b,973096651,11504967546686965974
+130960e6-5b75-0da1-5267-b2beb3ea5a32,2596894774,17325424574153680990
+26691ccd-e837-9553-f145-be2b55a1cc25,1487362962,6169206452503868719
+cd4cda7a-efc8-08da-be53-087ae8b12b82,2912683414,9858444357699180407
+41e473e4-4a98-9764-5055-bc2f2c146e4d,318442848,9347535729986559583
+980c0ca7-3224-d1b4-b7e1-fc6427f387cc,1750840471,1869778140013554006
+4e6a9efb-1aa6-ed3b-a16b-b777108d0e57,813440115,3866885645563641993
+19a4bf98-74f8-bee7-e875-d8304abf097f,3963701718,18411459547957774340
+f9636118-3638-43a2-4035-caccaa262d0b,267516582,1594922381104347050
+ae753a3e-544a-bf1c-eff3-32c64df191fa,367626519,16290596804518414149
+0ede5eac-227b-1dfb-12f7-e30153891ccc,3219442822,16354450011786900512
+f621ab14-dd82-ab1a-2598-5d6759516ca9,3766718197,435687177264567559
+d1ae0ecc-58e0-2ac0-1d53-f82c317e529f,2330079007,15724239682697497565
+905b8d24-00a0-bf76-f10f-e96f41fcbae1,4159776527,11155785279043582026
+bfcabec7-02a7-73ff-d0a3-6b9a45cf6123,587384606,11944457952247048560
+eb4414d2-d684-d44e-0b36-bb6e297be6bd,3451148896,17720872002281322955
+3d0eafd9-48ed-b0f0-1bec-4a8cc5b4afd5,2895452644,16978698515006110800
+86d2913d-2e0e-6f35-2d48-7d31c9e6d06b,654829515,12093237394400746296
+d31f7bc3-5277-7828-67d4-f24bd71720c4,2996686995,12534981591783088127
+b22c6670-e917-e93a-9b3d-edd26505ac42,664127109,5151003994282590130
+09213f8e-d0dd-dea4-bb40-64bba17720f0,1199560830,6596139309098354581
+cc6709a3-d6e1-e5fd-0d9f-adf00a256f5b,545469085,3265165069898844548
+f5f6f85c-e8c6-7697-044e-38da4205c213,2845975033,16315044208578328019
+75652746-55c3-9d40-cbf9-b82d63935db7,1500717256,15843462391780231365
+28b834db-9295-a0b5-ce3d-e84648952ce7,3120671855,11527395940787112571
+c3a89ef5-ecb2-d9e0-7929-17dc54284e32,1988580476,8584404131623957436
+3e2727d0-5cd2-903b-76e4-ac9363fe4c65,2031922930,1294893767885115311
+32554533-61bc-8392-a538-0ee3b70925a3,912074879,9161513833233771662
+cf060bc8-40de-96fb-7647-c25448956615,3668106301,4808487097058243484
+0dc4aad7-39ca-a40c-9fff-3f79f51b3b33,674404377,6417152187967972621
+89fd3682-9ba8-76aa-bcc2-95467e3f102b,1969371865,9322713291245353128
+ccec5950-00e8-d457-b511-9d3095f28625,3834089443,16681016633548765191
+cc02dcd8-c844-7bab-acd7-52729e1805de,1921906885,9302404433688683104
+3eab9c48-853b-9320-1fb6-c3be8cf7e78c,511653563,13596127908477755802
+dbb582d6-821c-4a71-b43a-588fc0a2f165,2985451821,5243086573045558336
+559d2504-c9db-a92f-6775-c3784d735adf,1941392669,6941306873792525905
+16507e09-6e02-ed3e-43a1-860131cfe1f7,2331502942,2907463808156599935
+b9324164-5dcf-c9e7-fef1-a4196758181a,325473544,3848984789354027350
+d61fc467-991e-26d5-e958-8fe2186d1e5e,3941378586,1481230750055629129
+ddc1ccb5-9941-5af7-7adf-73f1c989e1c9,143707490,509513677548556639
+0ecb822d-01f2-7a94-b379-6d8e1658204b,2810340990,12886449220514719243
+3049941b-3808-7ca6-4f86-f450c7ee616f,3759978301,14186353629398081287
+99d8f905-52f7-0e40-03a1-cfe9dc0d6bb5,160734125,18032558365374463510
+97743a0a-b9b0-f7db-efb8-557a3cfabe0a,3652042273,9424049166603343954
+66fbfc48-6b89-0f90-772b-699e5b2074d0,2229902213,14251450179271172296
+e5cf90ef-5a24-cca3-1cdc-ecfb9e7622da,4043093764,16538081069588975085
+81b61c79-7981-e522-91eb-150bfdf2384a,1551253378,13733268392436555742
+376ed1ef-48f8-6d86-b536-ab407fe6996a,3862922857,190614540352920631
+861dc7f2-8aeb-7e84-eb0d-27877ae80c5b,3414977147,9083972889983442151
+d6b053b9-4ffc-74f8-18f2-443cfac07a5e,1053919235,867867745461931641
+e58191ae-ff80-0d08-746e-5a7660da8655,1277539936,12141874825571314215
+6608987f-548b-3f25-3427-f2df7a32bc56,3315741871,3776061174675597591
+72a65956-ad8e-e1b9-dcf9-16640abd7b4f,3728743367,2259807539167896456
+33bb2605-a91f-1f1c-0b67-90632deeb1cc,2543545956,8432402161596226997
+343335f3-c139-5c41-0691-ea8380722cc6,442636980,5736032205384533074
+d32715c7-3121-e68f-8778-266fa1de23b1,2694145453,10871598240281019113
+b06af54c-f4ab-fad4-9cf2-c7e2cc9a63da,4185548769,12195162712165362581
+6f32ad5d-734f-3915-81af-9b23d14033ed,3941916379,11713519967467516356
+add5c76e-be66-8fdc-16a0-eb85f5e5ecbb,3758011853,9424455452248331115
+6f053dab-d9b4-b32a-cd4a-5e3a142436ef,1882589971,14383804162845974615
+2f2c62f0-e8b0-1e9d-cd07-1f703cf0d347,1646912704,12886982486246345187
+215f84c3-d5c4-41d5-7199-c69b801a6b7c,1490862100,14777892689089386032
+70c8f4bf-5c51-d7a6-0120-059bc2649d13,1291842399,6436776387513707057
+bafeb598-0d7f-36a2-aab8-f1388d230972,2467848035,6370257783247641717
+294a5889-4d8f-431d-b658-43dcb25fa997,2313732409,13120423121202150978
+f8a29cd3-47c9-7398-1a94-389140a05f16,638781893,7245394053602205126
+d95e5564-c6ef-7c6a-21cc-b7162c42167d,3178804092,12300431655284150534
+f9fb0c5c-366d-7695-47e7-a14fc7906c4b,2553153390,774183798005354561
+e1ea4e6e-f00f-0a6d-8fa4-907c1446a405,1827285036,2068649437436374002
+bbb02e4a-b02b-b77f-f9c4-df787f05d031,4224728878,16357627776342461098
+49530585-c76c-5142-3dfc-50765e05cdb6,473566644,14105055126855333132
+01237e1e-c5cb-7a9f-4731-a678be1c3dc6,3088056850,16099082007614383211
+7b98fe37-09fd-34d8-69c6-f94fd82ddc92,2287590997,4551641501917400101
+e93ac184-6025-9a82-4b52-2b3b11214bf0,3921584313,5970497593165620571
+e3a3f80d-e047-1e72-fc42-01c4188821e3,2615572094,3046560981346228782
+43bf8be0-6e87-a4b5-c1b9-b3e287833859,4025395661,9944972665507971227
+02aa03a8-a907-77b1-9b55-891612e4197f,2309178529,6092785986352340685
+2dc1a022-b5d9-471a-077e-f5b3fcce7cac,3791914698,3054159406754205672
+8d600eb0-e04a-58de-b88c-a2477eb8a776,3253159728,8701418473052401702
+30bba652-8370-6fbf-d78a-df16c9587c87,3479388236,1466138392571082660
+6ad5e098-c658-df69-81aa-350f5d949528,822357754,11940090055937326128
+af480252-9562-ce07-9048-f2f9c0d83cb9,2525245530,17772537789770007921
+738465dd-37c7-bd93-9802-6d373448c601,2243409359,16348177719431677412
+aeaf7940-2d07-5658-2adb-eaf251e35969,3788129644,2262641349884809068
+3a863cf1-2cb9-2bb7-6d30-69d8c878257c,3562982018,3074211419567087786
+8137821c-cb4e-8785-3178-bf85e5cd4c3b,680446456,11203482668344266685
+4ce11450-7f69-0018-e6b3-ad04e1353309,3476320231,10523977667219272612
+926cf4a4-30e3-b575-6a70-f0dedb6917cb,3533274463,12951855037926536539
+d633f866-6a98-7a0e-8a3e-e3fe624d24b4,1107094141,6112527540788111356
+2b71486c-e8b1-beed-c2e9-b5f4494ca4fa,1966343596,5605876203018776552
+6a207643-4bff-a228-d44b-cdececbd8028,1112959161,13608710883159228937
+13a6aead-8ac0-bb7d-f073-a684811dc524,3974972619,10876352323013619584
+4bca811b-ff80-040e-33f4-46a4d8b93a41,3192472752,1953725949647470956
+b0b97aba-04de-c3d0-e039-bc7d0045a83b,1140653899,3793595062887694934
+c5c37316-827c-aa55-3abd-c9f4c7c9cafb,3851313099,7925839545522374900
+7080a216-0532-a776-2c62-e7eb0f433103,3193131768,10986336630777670570
+7f54ebda-729c-7880-5913-cc5138cedca1,2619082902,7605008596364138562
+b3db72b5-1426-15fe-16a4-750ece85122f,2182234676,6783071831780968966
+cb953136-c573-f578-b1e3-2427b3746f4b,2600768342,11142838214036252509
+55b32f98-e0b9-024e-563b-644afc674c9e,3610120658,14233421002064722996
+09429fe0-6427-007e-1703-3ac689c6d149,36854043,5557359396490204126
+ea167fb8-7e88-5af2-2904-c41b6fcc4052,1991528916,3045606309035349293
+929e5112-7dca-1a0d-44b1-ffc2558bb435,3853521479,9258745624394066030
+4be3a8f4-3379-82ae-3e47-6aac47d72f8b,1692285597,5657955687217116603
+849ac213-c89b-62c2-18dc-55eca3b9f227,489953999,2679919902919511609
+48a6314d-e212-e5d6-f6cf-647491c2f9b2,4104937554,1398497812840166866
+b23239b5-1209-3609-6b07-0c641b8bceb3,447669351,16638251694299527488
+5d2c3c1a-9328-6a32-7f30-49cf15f4bdbd,1971004538,12686686478317808245
+b5447846-36f1-848d-94ef-60320a9e48c6,3425989083,15093063194018928764
+e12e8226-8494-587c-0dba-9ae5018af6f7,2927914975,15737784341035488342
+3735013b-18c5-d38b-dc91-8e699b66db3e,20354138,6679271754638341275
+e2c1485b-b50b-c3b3-d6a0-84b536d230a4,3516102076,15438637947679692562
+f092eabb-a36a-9b4d-fad3-4c0a0fc3a226,437368498,1824816518366201472
+03a24cf4-d331-e403-f570-c8962731401f,1054576606,1475653190168351918
+1ceab195-abbe-09d6-e970-5eee27430412,1221596748,4012300658176706438
+0c198343-b05d-39fd-c3fe-524a67aa5cd3,1683700626,5499169694228426787
+dc4d798f-4490-65c6-cf36-d8555c4a0276,2465126963,17503392039690348499
+e0dd1a9d-db92-eea6-ea90-e8f09d492180,3304133316,7361113769595287739
+4f3ec1fa-8348-954b-f869-d76943f9effc,100843668,17829805113220826569
+c726d784-4617-1c00-eccf-5eaa6f40c3b6,54390468,15944840325567851764
+2cedb1cb-34ba-080a-dd30-616794b55c85,745364249,11208726747770587068
+0718eb7b-403b-cceb-ee73-51a39ab398a0,736603042,109322477507438657
+c94efcbf-a29e-1409-bbfc-571250282535,471774880,4734327838191801819
+5899f622-a635-5f99-fcbe-cf4c0f89ad1f,1788544668,11597316327309725935
+cd48872b-5fc6-47f6-8f8e-7101db5ae2c6,2934922744,8075969708571286547
+7b9a108b-591a-ea28-7ba4-8abf26a8bc47,3494336927,14356701756742961761
+de332cd6-0ff0-1a92-ea8a-0d7924fb92ca,416531741,11635415945174975886
+a6878f90-48a0-1b30-1c65-52b53abd3121,3727266981,14585371711198429195
+5f1c2948-ce02-f0b8-0481-993b38fd87b5,1462288932,575086450017369745
+e2596acc-fac9-4f98-1791-9ec95a11ed25,3820366264,11858553406759078460
+ef1e3fb8-f317-bd71-85f5-db8d0d125959,633605944,11582443433998491713
+4fbf958c-cfb1-7c40-6943-c00d5589813c,1301080660,14089942389602273638
+b29288cc-e427-03a1-b613-8d500b3c6545,2676899029,2395022578404792390
+ee61071e-1389-0768-04f9-1d1862af67f4,4196051560,14699617735323215920
+57d1f95b-47cd-ec3f-bcba-a474e8020159,1595318240,12628776250450914630
+e276b8c8-c04c-4e84-3b7d-ca5949c911de,1548882634,13896547607002051985
+e4d99a12-9f1a-e739-dbc0-3d696d9757c4,3664854386,14933537026294380684
+0241acda-1b52-f986-c6c5-0694b2c4dc17,908072700,5790033575251330058
+06ad55ba-c022-407b-fe7f-0be9fed1c6c6,947703348,6731666667010391685
+dcb10796-a999-9a86-c3b2-099d9fce3957,2052964145,1371762189681694721
+cb0d53fc-c2a6-5f0e-a1bc-c3b843b241fa,3666303306,8728808468102064160
+6951d1f6-db9f-70c6-f224-59abca340bbe,1388533456,10628781744367620191
+dfdaf583-f81d-1ed4-0c33-ea704e589bc6,3638223646,7140787562747811750
+fe7536aa-27e1-e9ce-bd76-de636576e104,756057129,5972920264981932186
+e42172dc-9744-7734-656d-8df7be27705e,2669937052,7498395801578017844
+d430e68d-503e-c028-6b6a-525650ea2695,4228276507,661104270598396097
+ee48dd00-4329-7695-c630-d9c2871d14b7,2190786904,16820694699974488210
+cedf540b-ec12-854b-87b7-aef52115486b,233818277,17498823560504246054
+c7835df4-9765-4aa9-a761-b9bd560658d9,3631953294,5665934740802397941
+3e30bf75-57e2-4c90-63b0-8bc80fc76ba0,4011282305,11036835606875441354
+4b9f4f31-d38a-5ce7-1835-76ff90cd83ad,2221762445,4010585860173541899
+1a25da36-bf6c-2f79-3f76-8ccd16d5901a,2814891198,3154909698930466743
+b9e8a494-3044-ade0-2f20-7d9843967b7b,2048497939,2482695431798191951
+c662ae6f-7cd8-486f-f7de-5092b3924aff,981998053,16139554646518234229
+41e38197-178f-9953-bed4-9c6e2f4ed5aa,4047489551,13508838693225908751
+446651c8-ddb0-f160-9090-aab191ba71d3,3848657604,653696780571160036
+1cc31a1b-5802-97f3-8185-2501e50f2ebc,1876395564,14567625726601011865
+baa54db9-e44b-7cab-700a-80e9d721f8db,3595409200,15587803896905300105
+6d5b867f-279e-8f1e-31d2-0ce51b2f047d,3635980431,15640573418505502329
+4486f545-9c65-ab08-5084-ae96f4c16689,1127771969,1933108952139466964
+d445039a-674f-6cfb-9fb7-9c59fd7c5778,399338551,770244240597818013
+231fa552-77eb-3f5f-a471-ee1d983126d2,1843204537,14953635236729502013
+215743dd-0b12-352f-ba9e-096b4258cd8e,4292494050,9684764594599034792
+d5915882-ba6d-aa84-c6e4-a9e025c3bb77,2451627050,3712501185858148987
+16ea72ff-dfb1-931d-b019-a47d53a76023,2972785711,2668633923913720814
+5ce31bfe-96d3-e0ce-f533-d6e59c1462de,2685083810,1839945539178677305
+bc14343e-b02f-4727-aa2d-b49a588ce873,976807374,18195874752785277549
+94e3ad39-ff2b-0312-c5a6-d600f59dd49b,723168714,13082519502153319712
+99b892a9-ca8f-3127-893a-5fe0f475d555,2872930425,4201427377199576663
+2876f3ca-bcdb-0633-a08f-4f4656c6fa10,1935803479,8814775929839859837
+db86b822-fe2a-4d08-b7ad-0a15da403457,1839801525,2842562469965935460
+d613b79e-abeb-1525-858a-a687142a79fb,64072287,15303696095294309692
+b1b36722-1dcd-8876-a843-034b82dda1a1,3265720633,12271203383356955887
+cd511726-c292-bed8-0365-62f7fada512d,2064763693,400617772734845019
+6738f41f-676f-115a-59c3-87040019312f,4271887985,13097718423964187549
+55c9d4e1-268d-2cfa-d03b-86653df0e0e5,3646056824,13904013106872182000
+1a571b16-ad39-e0b0-9881-1bcfcbdb394a,1871392904,7849443332251236340
+74155476-04ce-a30f-b8a6-ed47cbc9cf55,2221497195,16352014587506357438
+e8cfd959-4c9e-a889-4412-a845839bd6a5,2757334053,11950781283074486792
+50c45ae6-30c0-6615-6f83-2593f6294c44,2132580606,5053049864152328092
+d8a99f15-2594-b058-19b8-8c5d1dab33c2,477460268,12782779745235868509
+b62effb1-009d-f2db-a36e-25309bdb5d80,1278105262,13590362348111754249
+4872ba6f-633f-2574-b685-455ac385fe34,29297157,9294827318898935867
+d2855454-1e72-d058-f2cf-fdd808267204,1405452021,5159473411044888220
+5a257f13-c8b2-f7c9-cc21-a5ff0eb6699e,3667406152,413820152469093449
+b8f35590-affc-5e11-445c-cf02c3272aca,2089290721,1019728848304097380
+e23d68ab-3d5f-3b5c-02df-199008131bfc,98531483,4743422114137470983
+36383da2-131b-90ce-bc48-5606b3de99c8,1788454615,16521552406169675430
+83e742b5-8834-59e3-3267-cf7d349fdc41,733885583,1476529018961563946
+dba3c0c6-772d-2a50-a810-53bd69cba71a,627707177,15413179473085394489
+1646f91f-7934-d3b8-56ac-31516c52a060,4020654681,3640079777674729230
+de9e565d-d3d6-6651-acc9-67a7b07cbe3f,2256747926,13892593072504704536
+50058b10-615c-4cc3-2d37-e84304d33646,2815074479,14762633709843022948
+b7f18b41-d52f-f62b-6a0b-7524666a2ad3,3334823535,9017682678971041238
+19b27afb-9061-00c9-123a-fc15dc49db65,2217226923,17843778768031766768
+2e2dac60-4e03-4e07-327b-237bf28e5f84,845104810,13770107961726668539
+c036039e-bb56-9615-c728-c2a1c218388c,3503503571,7163172832882874862
+edf8e59b-dde2-d682-8269-5cca6ce987db,1791712045,7816845765140246703
+23d61bca-849b-e316-c410-35990083833e,1287217963,5883847719852874779
+98520d57-302b-99a2-61bf-a17f25e58051,3464260015,7966728105707179264
+84cb298f-1c95-62d6-81b9-16c451d163fc,577223567,13352271031379656978
+6369515f-0e6a-de38-6f11-bddd585d5aed,959751020,343642762274929569
+0099b87a-4b48-9a34-9b46-14ae12b64ec2,330169494,2465943307685775419
+ad30203e-2645-2e52-9b32-061d0aaab75f,3934371632,15359072467977885753
+aa9cff1e-f843-b248-4721-bc71e43b78f8,535621496,11345576140812672331
+03c397d5-6f75-ac05-6c08-ffaa3f530361,3144699193,5391033647648611779
+75f2fb25-445f-684d-97eb-e72c06539009,217922223,9056998647999507212
+7f5010c9-dafb-664c-1ee0-9689c3906438,3308960154,7395753564372151739
+0d5b201e-1775-1400-cac1-79f72aadffb8,2513361857,353024636356299442
+749160c1-06d2-ac7a-f04b-ad6ccb293aff,1875886813,11528833388440659636
+36390e9e-8974-48ac-5b53-160e0bc1453a,2084269746,15502373654971943156
+4f2c4961-0732-1b7d-6a0c-664ad6c0ea8e,3767616410,5960017357225317093
+ce40c10f-10ed-3ad0-5373-3b5ad5edb69a,3684286395,11424356528216510413
+05688cb1-a4a2-1ee9-d49a-4e0c782b099e,804064237,3059850522031260286
+846f2608-3c6e-bd32-ea7a-d69dd992279a,1157754801,4311600148333612570
+360221c0-37ca-ff00-ebef-e26ee8110455,408951715,3396664265944056322
+4fb58406-154c-1f49-0a78-f6dff8bca432,1743002085,11519297201726335843
+661b1a94-f0d6-7531-4a1d-d5074b92996d,1042076141,9996251670614543429
+7c64aa11-cb65-968e-0e3d-db06827bab16,2253836698,7623274319310646830
+0debecd4-4e39-3d8e-9867-16b2e6a3bec9,880316354,10562318471213965333
+e028ba47-86b6-3b0f-0849-a818b6567ad7,476952502,11833587647371085803
+bc9c4537-0707-b10b-29b8-66f5184c1768,2302203566,15173838944561417871
+f342404a-65a4-6046-a774-7823014a06c2,1770826345,2125620532211624577
+6b273915-ccaa-3bb5-7bd0-a698c1efd76e,115572696,11090878411538798680
+931d59c4-eb0d-6b97-2869-637b2f1d17d5,4102674133,4055389795374714439
+0747b594-2e71-4f93-ca27-b68a875ac311,3988590262,14616998706050841220
+b947da84-67bf-6965-a818-742041b989c6,3552461956,12201800886804792144
+d5a3fe8f-7971-d622-1d01-7d9f74dbb541,2763740299,7434461105920845450
+6047a78b-f653-a731-91b9-49256807c141,3536208711,2665980924165312968
+b3f7f9bd-2e71-7ca6-f836-a0a2eb7d726d,2217023011,4675321031254006301
+37ab0bdd-50e2-fd6e-2172-46396a6ace58,1466907085,943216098624684972
+371ea4b1-ef38-ebe9-2cd5-1631c42e71c8,2895560033,2227201900573226809
+f030fb50-6e2b-0e0b-dbaf-6e432ceade71,3720788197,16840570599244360108
+8c1e67d5-24ba-9a67-07cf-c808fe295cbe,2522778492,696388606086574956
+730dfa3c-40b0-7e39-1d5d-d79430c4184e,2991183580,14322706013690601521
+a7341cb3-0eb1-4dd5-9aaa-e944ddc28550,3769309122,8219271401188474732
+b0a67a18-4e3e-62f4-99f3-b639ae3058b8,2087961783,13275876870116345263
+fd45d651-473f-eae2-e021-68783670aa67,2615243453,15021383411656237630
+817de6cc-b85f-edba-50de-d87fbb1778b9,2857440129,505622447938816098
+97ca3409-d3fc-00cb-a44e-746a4a6b0aec,1755612082,16029980870713810098
+f447d1f8-bd31-4f47-a56a-cf875a8556fd,2614330063,15492628726403540930
+14136a15-6dfb-acdf-3ebc-57e0234b042a,1536738852,12999635866523172108
+f0017d12-d618-7818-6e6d-0fcdfe31805c,3105639037,15722348201104903549
+5d4dc1f5-05b2-6b4e-2817-bae508054ef2,2794973597,17678515661907070383
+a0a7904d-026e-44c4-8b3e-31bacc08f986,3013147447,1408480773148180501
+69e0cfb3-13bb-d3bb-0ade-7e9f03d4ddc0,651161159,13709073481513350107
+f360b635-3e08-2f31-2c85-b1e023e271b0,3621578360,13243062901042434039
+6c69de1f-568b-9b52-c64a-745e46da72c6,475337622,18094194384565057361
+585a9c2e-d5a6-3845-5c7b-29aba0625c15,4219870781,14689418666632868493
+9cc516ed-7fba-f0da-3fda-4840f03fa66b,2304751665,6313728088608693653
+92f8d8db-d3d4-a078-47a6-1e2c8613769c,1897832252,1405996590881551534
+3d2fe5b5-b835-48eb-bd3d-f969c118ebbc,3051618207,2171488166792850707
+5a05f6a3-788a-0598-c3e8-c0600b94b9de,1914525405,6557505562260562314
+67170fd7-e0e4-0eef-4d60-2ea64b94a345,3020921348,2763047228871147972
+2fafad4c-910e-d5f1-ca0d-4a0c8beb917d,1023616979,2816712934954180234
+08a2c608-b2e1-fdfc-0e00-ba3205450fb8,3978866085,5980263577560293650
+db5744da-2e99-8996-4c42-4ad18862fee5,3251883281,15969969326220193043
+d5811d7f-fae5-b479-188d-c1b8ac96550c,2780014252,1364524359123819998
+b0e5d1a7-954a-28e5-d698-5cf26ab9ba7c,3461226405,13074421158802595968
+226f4fb5-fc2c-b7fb-b97b-f00e87a854d9,2982053359,801350849020393198
+fecdc1cd-e9fd-926b-b9ee-5724c37ca62c,2255434445,3886443231257474063
+2a805a17-37a4-6d9a-981b-edee46d9850f,1049472391,3896271276038897903
+7e718e47-80a3-2a69-3f83-30f1f72f6a86,1440292826,17461764621338536715
+3a69784c-44df-cbcc-d0cb-768b6ea6f58c,2441655067,14982066341494894741
+b6e10d3a-5e71-9b8f-38d9-103bde28c33e,4118878726,11961557493852796510
+72690a68-a888-fc63-ab1c-afd9860c1f9c,88592290,4650422135875653619
+746e6488-4ac9-9819-9614-a4c9e55f2422,3293872971,2411854117768025406
+362e5b16-0d0e-0ac6-86ed-92c8f7000521,1607878460,5926708566142935426
+bf1c8a50-a8a1-0fb3-3601-798a69b752bc,4069339143,1198058436011010422
+821c67e7-9c5c-9e7c-99dc-e82ee36a5845,2107389420,14817203984563292800
+0ea222da-82b3-85ca-de01-ee7351b7c5aa,1164186115,11223933835661764444
+a69e8258-d127-d9db-495a-32a1563f1ca2,498858719,13861894985107676937
+ba0e45f4-43de-dac1-98ca-d6ec80e00cb4,1790452901,13312675329413085266
+864222da-c0c2-698c-c7e0-390d75cb5ae8,2896376039,16182165591776444601
+1b395fc5-085d-5f0b-4ebe-c4f44d71c959,941655074,13259257355131377833
+868063f9-5684-022a-acae-d73325ad96d8,292287417,3976397941345380779
+8f98e0e1-948d-676d-3ffc-15eaae3fe6b7,2411010931,7705647889018886408
+f3a00329-b6d6-9fb7-590a-5e6ebf3c27a2,3522190869,12397514878566326718
+b4d85010-4f58-af0a-6c44-7c2a3736ebd4,617076065,5202558497293306901
+dd6645eb-97ae-7ab7-b125-0dca331ce81e,2493023718,13597416044967661593
+fc7fc2eb-a939-3833-26e2-46ad5af4e0db,3589583047,13606816930915953283
+27d55303-07ba-079d-efb5-b57c000dda63,897579077,13369689674788054275
+60359434-f254-f817-136d-0e68ac2a7e32,662538583,8148422310622203921
+ac4fdbd4-148c-51c0-8e01-ef9c779a2268,376554544,2526305390259611913
+1077449b-5fda-2999-b2e9-d9a1111b1fae,500348361,16646444431276631646
+8775f8d6-d61a-35ad-31f6-cad875c910fb,295066174,15567411798791788631
+aa671ac9-c7ff-45a2-cef0-845a3049a2d8,311578901,16008615960820890790
+4695efa8-816c-f0fd-c37a-fcf5df7e8748,2762874341,200073485381557465
+47be1bf1-23d4-2e9a-43b9-6dd78f8756fd,440599509,16021197851302949926
+22095592-422e-e32a-b6e8-efea32c69bcb,695323737,2353107372438724382
+998ab256-4c73-24bb-e479-ec3324d94f45,491993085,18066621169402114159
+7661c9ae-7a0b-f9bf-3fe1-10c2ad86df77,2028246125,18240623359264054324
+ba358ae7-3a19-a637-bcab-f6de4f1d96eb,3394965442,11977594334106835794
+c2fb76ee-fb54-c01f-d1e8-01d07d512b27,2758107827,2207922886562834256
+b29cf15c-39ec-329b-a438-f361134937e6,267577908,4225451449039559913
+a9c917d5-cbf3-c975-9127-9751888d1ade,2387036043,10545915267793505720
+3bd1f155-d768-691f-d061-b508cbebd7a8,1730376880,12312171029804392947
+cfd3cf54-2666-956b-1722-7bd2663f2f3e,2075606669,9296259743584223045
+a44dc4c0-fc4c-bb5f-d4fc-3c726a4d6501,902103626,1522394220831689030
+48253aab-17cc-9ab7-a688-b64f56004bea,37976804,12857711726514751945
+558c72d7-80bd-bc21-5b72-5099d7520a69,2460916689,2843582447245916027
+a8775ef1-40ec-17ea-9262-52bb988bbc7a,2892498520,8847122678694407204
+b1536c1a-b4a5-35ec-7cd5-2da66ec1303c,1775767329,5325882900188751901
+e60bd48c-e172-ebc9-8043-7e7ee1bb9550,1753069046,9143663019731652346
+6374694a-b988-cb0f-6331-6ccff9893248,374433247,11380627315208202186
+ff231cb3-8f8e-4716-b37b-e80d5ecfd35f,230034503,4121343790002361865
+86ebbe80-dd78-ee30-3a53-253eca6360cf,2812492421,5700843911819071958
+b3488c12-50ba-b1e9-bdcd-8efad166d228,1570052256,6144678806243967045
+341780a9-8f5b-4b0e-4793-db5cd2d5c140,2439870660,11559173257493291057
+3ed8dbaa-3bce-a26f-42cf-9517aff5b7b5,3915473570,5403012373168821219
+e85947b6-1165-11d0-5b1b-f8de46afb478,3064423326,4455755421613154503
+5515132a-0c66-cf1d-dfa5-26762028faa5,4016573969,16198052407250400976
+791253b6-d7f7-956d-b74a-3af52dfa8fe5,1367122071,15415324285934477229
+ba190fe8-723c-7c44-047c-4dd1e9b03956,372539293,14422320198425998947
+895d5048-2a11-d72d-a03f-b4b7d1b0c1ec,2477164519,14174473937425218989
+adebebe7-8707-a748-3c7b-5728ff815cd4,1658709229,8759610381822534623
+92c9963c-28f2-6121-23e3-740f2d856cb2,1037370283,18193826652742831974
+db538478-f5f7-5c64-1949-f70d5ba5092a,3189407452,11464880519220475650
+2b26d9db-d524-e2dc-ed6b-74a11f1e6d1d,2100720149,1706277858368795193
+5bade87a-5c1a-483f-e6f3-1c028a54af5c,2251259948,14214154627311737549
+cf4327b8-1530-27dd-db3b-5e01c1ec13f0,2754753325,9500473402872349659
+64cab749-4e18-7f7c-5604-139dbf110dd5,1140465459,14408519080704352019
+cb247c6d-70e5-4193-71e2-9030dfa5615f,2992025719,5964139783035542644
+66378b77-55c0-04cc-49d6-ec74387642f3,1590262291,18137548153776836842
+53669be2-557b-fdc1-8b05-b1ca48f61f6a,839891327,10770587794652132205
+ee1af4b6-d18b-546b-f9c0-2b5f2175d40d,3498158253,1277576401276472088
+06b6c712-0bab-5020-5518-8616ff5083fe,2003618221,10781058893120874269
+09450e32-386f-7589-cd82-1df136ae2843,420364760,12864585368197314020
+ceb2740e-b6d4-ec45-b47f-109255297b1d,3932566662,6362241981999769694
+7c03e6b8-84aa-72c8-03ce-0b7a9ea1b455,2473792016,11567061024108971801
+730e19a5-085f-4ee6-d3ab-1373b7bad5d6,3291075631,2924554280597710230
+82c92c7b-7911-760d-0d5b-c5ff8b132cf2,2587337234,15489890458324044623
+6b93abfd-dcab-c52a-8163-9c6248cf80ce,3785669153,15578361916342393699
+76905901-29b6-8fe8-c9a6-e7b8a7886078,432254020,12741104398635263667
+61659a19-36bf-eeef-67e0-fc76035d37c6,1645077539,8349441595911793930
+6635a7f9-4f8e-9b5c-54de-0113a75621f9,330964256,2954480545181067026
+5600ab68-3e29-d912-ed11-697e58549a1e,1060805253,10599725190333090075
+e16f251d-c1f9-c4bc-f1e7-754d31eecf3b,2096642880,7415889863774994343
+e0a39f7b-b34a-4b1b-01c0-26cdc3c54706,3617201560,931024027608300073
+2c567e2c-a70b-3676-11fa-a1261e3e134f,149214110,17220446568152224682
+e78b445c-166f-ed91-3663-fd83e61570f8,861502890,17260376301678754602
+edbcc7bf-3143-6af0-69b4-bfaa009f0402,154242686,1157836673975789953
+d58bcad6-b334-6cde-d1f4-f9367cd97ea8,2526613629,16319117177096343183
+bc840562-36d3-6e00-f1ee-02bf9a70350a,1731118398,4011807154006405960
+399989e3-401f-b296-b00e-706fedfea655,834631895,15461164902158602565
+35ac2fe8-11b1-5aff-8ff2-25becc0af254,2388511859,12885857910506208208
+3043aa7c-3db1-8bf8-fb58-7c75c37cd4cf,3947022670,11846456151749135330
+29456a0a-fe5c-877e-e894-276eda962234,3102413374,375704710649840795
+8a5eba7c-cf2e-cd8f-43dd-0d4302dba3fa,791294947,13536533045538260542
+ad847e50-26f2-3443-ffd9-cb94574dc3ba,3288923028,2561289521689397620
+0ab2b8f0-dd84-6b27-d64b-06fb9ca24def,897382224,18103933849148025396
+21bc07aa-eb95-0f82-a2f3-499383bbd469,1114081241,2701087580194907205
+96e07caa-1254-5499-c34b-ddff7489a659,2662152926,12959151726375132242
+9de90440-cfb5-8279-d2d5-7ecb3dfefb8e,3525706028,14085302462070540002
+bbbb8d41-585f-5048-46cc-3c59e3ba2046,3246663881,15018159538113791063
+92f6fe11-d748-cd3f-e71c-219ee52e3b8b,1228881378,10376022176323843460
+d56d311c-68d8-756c-e043-b7f6ed759601,1195962035,8045799984743189376
+9631eb99-0e39-4c3f-0718-1edcc9b5115a,2942984451,5768437024393319103
+3ab6d383-bcbb-18f6-716c-106cc27ccb19,985106765,5152688911871661585
+a6e400ba-dbf2-23bb-d0e4-c10f08ff09f9,336521504,16332229123761292370
+a1d57b57-f383-59ea-2a82-3024a8d76047,3287983589,7410909068298261796
+4d527186-9e7e-6670-b7d9-3a520db9ece1,8033949,13125622111442427365
+51b95c5b-d379-a15a-b2d5-4f3452eb6433,4161675353,3212768916952769964
+e29aa8a7-36c3-a156-f289-a2d51a6cdb7e,2535298481,11303580076487495978
+feec249f-e4b8-3c52-17a2-8e8d6808671a,1979231689,14953562191011042580
+5d321a2b-224f-6f4c-8492-061e0bcfb417,2758955419,8400694817378669119
+ac42e9c7-c5c1-fd0a-c7b6-414d0e7cda95,393244190,7001147280920148283
+70eb3767-de0c-314a-f3d5-0fa3830d287b,3344565559,16714481585868310617
+7196c9ce-0c82-dd88-7100-d8c12c856b43,3111343315,6362665150525168291
+e3da7b43-368a-bcc0-2e03-44bd71a25568,2230658316,8614437082604750399
+15f3194d-56db-59b7-9a38-25f9696490a6,2261751826,15701696747582616330
+1a1ae6ab-5c95-78d5-eb6a-41e38f403330,191520116,13343604460937194268
+568a11ca-4c14-ac4c-3500-68df86e971f5,1287265907,12690048629583883085
+30cb4670-fa7d-716b-bb5d-15fb4a6566d6,3096272866,9741663926631643040
+9d944ed9-e28c-afc8-881c-11c531f40fbc,2779297009,13214587547680227489
+e6b8a62d-4271-aeec-ebdc-b9e609e8c764,1017827367,6594046177853720170
+505691d1-2bea-8d07-75f8-2e03246e05d3,3190101816,4439085765471699272
+e92c8279-b464-8df2-d4d4-7b7c4fb7cb95,1756355398,10705057703149815746
+dcbc197b-f04b-a907-55f6-b30af92bc23b,3052647304,3730240930747639395
+4b9b7f94-e751-d000-8229-99f7d62ccd8f,2365350865,15235739845110479009
+99fe7128-98b4-02d6-5a82-0bed51390209,1581133936,1063655027854276597
+dcb67248-d072-8aed-ab22-8a13e0ad213b,3605271415,14698808823992577091
+5a01598a-8f2d-6d21-ba3a-9f0a59e66fa4,1232627609,10122578265707753182
+25549d8c-f87c-f187-6b74-0fa67fc41e0f,3591898235,8419841508754412611
+28fe0ff4-21c9-c459-c712-4e30353f797e,1411934080,17240563755464167738
+e55cfc4e-d76a-6669-14cd-a8d82ec11a87,1961634827,9794601903164178601
+a11cb71c-9e61-e6d5-7161-8cbdb487cbca,643432565,1963565827205624278
+a55fc868-c090-a3c6-1da1-49d9d5b77ea2,4177782166,5043057981077081586
+6261fbb7-f663-61df-eb3d-5db77d416ad5,1306504663,6272530035558190067
+ab88c178-3eb4-dd8d-58c1-533534db2770,2288360338,3137688434595552989
+12b3c074-292b-b738-4887-82a8c80156a6,3667123281,10217857347956078561
+e76f2457-8817-d144-86ec-7152d2b8e2b3,2825690477,16246863112644316517
+de1de58f-4856-a103-88e3-bf85377944a1,675247703,12937149263386747726
+dfdffdf8-f371-b590-0cce-4e6afc0123f3,3147492998,10808868799149084291
+c95de438-a369-6df4-0fee-c2c585d7d57d,1777414500,8229007353966524827
+cb333b9a-aa2e-f8c0-da0e-e369399bca59,2078961708,6611955117484740896
+04a34161-595f-9c50-d38d-27221ae35da9,1206242492,11189723749791346986
+b996e606-3c01-9d20-55a8-1c622db7e01f,2546301570,13372956245799146443
+27dcb582-dd56-541c-3a4b-b7e23e37dfc5,853104979,15897529530787710907
+61c3ac04-bfc2-01fe-6cdd-c9f180e066fc,1090165336,10313586558990669720
+a41e02cb-5998-a088-9ad2-36e62a8e1577,4007788942,1734479570898683828
+df6ff7b7-e412-0351-ceed-c3c9d4c88055,565310692,16727253846474642903
+6b54cad1-2a7b-5f86-5d55-69a808c0a2eb,2336524078,16720982157270457268
+65cf6c88-8aa8-b214-56fa-c6542b13805f,1027643157,15799169755499884021
+e59c3de3-76a9-1688-b8e4-90f1993da6e6,2959079057,9813520827745293215
+168fb41f-7f9e-9ee0-7c4c-d1b2623332ee,3488831547,13011982236140000230
+aa2c5c2b-da23-0ac6-2af5-26b6efb900b3,2022063031,17332202870705523364
+ff38cda7-d9e8-8abc-9bd1-c6eef086d043,2379626684,8468012094009345860
+d793becf-0aea-bb31-fa67-57ff69c9d68d,3089663332,1353874279484721716
+36b5677d-ef26-612b-c6ae-4832e7e2fe82,4138949100,5428565246654228090
+522473dd-f97c-52bb-1bb2-671abbfe42d7,3473891619,15505428317944630699
+676ba1ae-44f5-aaad-47a0-3cd6398111c6,426008460,17430876205756725897
+90a25efd-a32f-7bfc-246b-3d8823236de9,2250054942,8701750732583920826
+9b9110ea-afd9-c818-f581-cfa55ae3481c,1859779143,4123914221295112185
+da1f22a0-6596-1b3e-905d-f94de429d570,2734090863,9653409307493445423
+4a921230-b69d-ff29-303d-b2bb827ce76d,3971527043,5654174885658086892
+d20cb00a-9808-a6be-8a39-c81ee5222e4c,835869241,3542382845293046486
+7da091bc-a129-1f58-a83f-66c0850681fe,277332937,17109705620602793660
+0a221b4d-305d-7a33-01f8-60b9ea5ea1ab,3884006388,7153401624902136437
+a6359ff4-5ce9-f1a1-2cff-6f110ed7ad37,2411364520,9945223680079610210
+5e5c4508-c8a3-1493-29f3-951c1128754d,2788215,4096410357991385778
+b1f365be-e4d0-3977-8ad7-02cf0862798f,2002090023,7190076539822141642
+9ffa3609-7fe4-0c6e-af03-3a2123919174,2346169699,11332468766770184318
+1e4b782b-558e-f6ba-2382-ad8f5078dcec,3494106532,7840008644952890923
+06a1583d-782f-6c6d-151d-5a37e4d9a87c,3922122748,4501996114411742996
+b99e0960-4036-988b-515e-cb9b2c74c819,3990013575,13654651505660760671
+3612e89a-e279-7786-bd47-d25a8043ebde,588376667,16744061196232838847
+9798185b-71ae-f0a9-4b7d-5fd291863bea,3889824993,7638847632611463344
+3d3abde6-2323-410a-a8f9-8371445b7a74,2297909437,17473784965110573037
+d5663762-173b-0a3c-9e46-e029090368df,3391395494,5881930689871458106
+c44510b1-b7ea-8655-f374-e306bb95fdf8,4212068902,12450887433117239517
+86819619-b481-2702-4310-7e42a272424d,621465951,1773767361514391132
+57667ed4-6048-4d36-070e-c2f3dd16d54d,409195982,3182826462570960522
+2a09aa74-eb0c-4ad7-ce8e-0e5d6ed4d93e,3454381383,1613888593751787629
+90efc35c-9fe3-8cf5-b7f5-c72e4a63e80f,1549637929,2208768476650725333
+ca2d987a-713f-42ee-7768-ffea9ed434a4,3535402368,9593190546246775050
+dad048d3-02d4-a284-7ed4-17613378c296,4052838816,12491670314268055129
+d2d94a12-5115-9abb-97ba-1c31cabff66d,3174977753,8586848696526447336
+930d316c-ec30-8353-6f79-f19bdd7e190f,1006444719,18318419684102275465
+d6d9bd86-b844-798c-2b7d-799317398ac9,1693464057,356792936865170508
+b571dc95-021d-3247-f1f0-5ebe2e0cf360,876970568,4196062434707659834
+2214eeb9-9939-d627-0ed4-dbbf8eb7f4ee,87749683,5763562469117386130
+fadcd68d-e89c-7e7c-f3b4-7ec277b4114e,1990964543,18216708095886310468
+e2e65f7e-c006-726d-6c29-19291f808f4f,3788362754,12198561763656700121
+73f45f12-e040-9490-8758-5a3d8c9ad696,4133640597,2781206865025709792
+521e6cf1-97bb-18e6-2ee0-078a06b258df,2889388524,11897859514705260944
+12e37ee2-ac5e-f713-7a89-2e9815e528f2,29771849,13733359896149588297
+cf3c8f0f-0283-6687-c76f-efa29424e42c,2389322136,18372533027616695581
+70cd305a-108e-8688-d9ca-188aeb862419,920359587,4966910502328777837
+069fb808-ef0b-0396-1bdc-7296ff75a0d4,4200150827,6296381066903247931
+5947dfcf-ac80-7a8a-d6a0-911e497b402c,4048822178,2668580941849444175
+bdfbcdbe-ec04-41a6-7655-fa4e3c0d3b85,1631235039,16991501882514275353
+e756f0a0-61af-0f1b-96d5-4371249261ed,2544432033,404387793170531103
+08957588-d6d6-3edd-33b0-d4c8fbe16ab9,1438533095,389184795904636204
+87bc38c6-0b9b-5917-24d3-9451737e42b0,241107127,9277408103560282923
+feccbecd-eb92-7dbc-1a7a-30edb4b67e56,1816023054,12764371755264487493
+17c97175-eb18-b5e1-4a81-f2897decc506,747238411,7309829769793597951
+3d9f7176-299b-4d2a-a528-828edacc6849,2689053796,17214708844193189222
+14a39a11-2e98-0d1b-c113-a83b1a6f946c,411520849,40899727957167295
+5e857e2a-aa2b-b00c-956a-db9cfb496900,1710975285,15730094420949342081
+af355463-6246-6117-6754-d7324452bfe0,1219502726,11200643846556835837
+97fe27e5-58d0-91ce-f62e-c83572607581,1842630103,2862439017193958750
+0d671290-2f47-0a4c-0500-0ff71b868b14,3160441404,18061698339397309544
+19bf9008-9e2b-2772-0ce7-7b6fa0761112,1789418153,1142785117421891304
+125cb5e7-47cf-71cd-0cf3-d45578474534,4114670601,1820281301764735508
+671c668e-344c-b6c7-b7fb-14a5ccff20eb,2360519440,15787154756960189601
+0a735f1a-5f5d-604d-ffe9-902902869859,987227118,12233584909505967832
+8a60b7aa-0d6a-ce47-3215-d329e8266935,3436679126,5431384362070160812
+dbb2924c-5927-8e2e-2b77-341fcf90b21a,1145023561,13207752684659226003
+2a375a33-db0f-c945-c7fb-d6377dc9a5a0,3225568129,7091092166066024520
+091e97b5-25f9-4d7e-2d26-995c03987157,635544858,2654195242283974725
+79a84970-1117-68c1-590f-43aae749f1f7,4201216373,16251140161953606068
+ae42808d-95c9-9a5c-c153-bfa3125b5f3c,782768781,10021551068700070156
+6e16f620-5877-0010-4e13-54a548b1983f,4004162050,13424848178574166850
+9c2ddf11-6e44-bb8c-550e-3d8349103d2b,3832650896,10419619729864123445
+27cfce5e-9215-2250-6b0b-a1652e08465d,4084560996,13432423451558477198
+a7ba639d-c502-d7eb-ba00-bbc02a610b3e,2023124249,2006554152282861101
+cba9f795-01a0-a248-c562-9bd5e6bcbcf2,654393406,18190124580304263737
+8235f46d-cf90-c364-f958-c3b460d3fd0b,3608262741,11941887190422089784
+2129999d-9f4a-8818-1cc9-e83fb833cd8f,330230876,9386692918236713028
+50a21deb-a146-55d0-f6a9-908505751f40,3049590888,4604771168306688956
+06df6877-d77b-2e30-6e94-1cbae77a673f,3093415058,2175817133880435249
+2351915d-f343-abad-953d-783cc760e56b,350392478,3328219538858092336
+de71e56c-1cb4-c098-f418-a1a50dfd862f,3442400985,17257712818234780336
+cd1df565-9c3b-2be2-7063-39dd8554104d,2528079805,7550725507760100228
+a79ac6b4-ba38-10b5-c8d9-0f84f6355cbc,114334507,15957102430282621950
+d9449d3c-6875-57a8-436d-2336919652e6,1985738004,5102928783845732223
+b303a10f-93e3-6b05-dccb-b69df92f89e9,3219328184,10394066304661016823
+11f3b887-cd74-310a-5d66-1957abc4340a,2967608412,15060065637117742806
+4b8dc4d6-f9fd-c567-c820-7208d04bb7a5,3392684417,14110953673043912719
+d04e041f-3653-a518-e297-26e1ca541a59,3473021861,9082370226462885888
+5d1cebeb-c09d-525b-672c-b22b092219ad,2828218759,9928133711663317198
+1318188c-755b-cf00-5d4c-3565b6cb0a5c,1792563826,7512685666911777822
+caf83525-e9c4-2903-0077-09418dc8a111,4174327738,13803329043284283009
+f5e8be35-6fca-9a7b-9f3f-840994a75081,50731550,6496224079407652122
+17f2bea2-36df-b631-19ea-e03d144c523e,2966712076,1818891410526930390
+9304f602-5ed5-7007-316b-72d7761f7be2,371537439,2853746135776156611
+90049b2a-f656-e78c-70e2-3f7206a305aa,2359483983,9017692215126218536
+507dd408-4d70-815e-5245-70ccaa3e2ed9,1485238965,1633060293300024077
+259d4fb7-c6a3-edfa-c388-83a09092d1c9,3414083662,10774711072311057477
+bc3cfada-fc18-b713-562e-62270f7bd937,2764517196,8353042129359593155
+8eb650b8-ff61-b4f0-2c9b-90183bc55ad5,2441284099,10471018702180283894
+5cab6973-14d0-4e59-fa0a-74064f161b0b,2712226874,10136040198334522858
+1d2d63ba-c497-ca5e-d9f2-b0445bc2a088,2245564323,17208755800299378143
+50fa2b21-e0c6-363e-8294-3e2b1d709d53,2051845153,18024256696795596578
+de6c7993-6fb2-a5dd-028b-8009ef1513f7,1495662525,3356088477186923732
+27a26387-5f59-fc70-0a57-0ff6ce84ce4f,986085756,15751345672286618454
+a509a364-79fa-c16f-a8dc-c9e44145ee46,2957642662,5178990060845442069
+6c1fb33c-55e6-ce03-6afb-8f5ef451f605,267743043,11106822862761509222
+1e2fb02d-0e1d-8ab8-57b9-44e0b826e817,1152377289,3037289736486015685
+b27990f4-ad5f-e1cd-f705-a43782d54fdc,3732542748,3298576805563028949
+094c2470-bcb8-3cc5-2872-b6f9159d0e1c,1130822872,12053008572182946891
+8a1a1d6b-6ba8-7bc6-3bbf-7a7b8f786137,356381667,13656257718097974311
+84acf661-a0fc-e6af-2d19-db83540c601a,1301062841,16445352378462522997
+bc9287a6-97c9-a39c-59b6-527d160c36ad,1645783970,8789778844144209209
+8a0aaa16-aa28-e80b-2821-1d957a92db9e,609931166,4014062318195949161
+03466034-d718-f43c-d924-dcc662426d6e,1295714136,13873628466811508356
+aa4fab77-20fe-e3df-d2f9-435bc679b042,3439392914,10362101757062495203
+ef198634-3185-b1ea-d12a-48d267528bb9,2467934552,16533350341718143926
+30aa33ab-db5a-c552-a758-0a85a5170939,2016823694,14768037220256669571
+abba01b0-bf13-30f4-d857-4841884bc0cc,1994062935,17456738216993453592
+9e1310a1-c160-90be-2e39-c028ccd4af84,3637921693,8126221950967736241
+307f45c9-4d0f-87ca-6453-106478730db4,1310247077,16040791245376576570
+e5f42afc-4b49-a75c-5c89-d1188148d11b,2374480500,8646483280707745415
+3c75751b-5bc8-a629-2f2c-08ebad90f53a,3242937311,15146772579975615287
+00583427-36f0-9344-0d4e-da527326423c,229512476,13804317060591896545
+44cb41ba-b6bf-905a-9174-4d159b0b2ef0,3525328141,3482800822876708195
+cb6b540a-dc74-1472-991c-1f0bfaa617e0,2579466195,17057491081021938397
+314439ce-237d-09f9-0b44-150075287da0,2506917030,13253249122168797356
+f8fc02d1-c66f-d73b-7594-8a1747197a45,2061328697,10143364101832994912
+96f8f2af-1b34-adb7-40e6-80b2c9fbe472,3059511364,5352694755879661780
+52b88f1c-401c-466c-e089-7d4a7f402c12,3525392761,371996140220357633
+43383904-e2cd-0824-79b0-66e2901391f1,633724368,12621837956660731426
+d4e592bb-95c4-ed45-a95f-ab3f94826a5f,1160583570,12764747956703238199
+ac51ea75-f858-b656-5c9d-76bc8cf3ea77,3328910849,2607940503102977857
+461180f6-7b46-ee0d-8d03-bbf49fa49b85,1134020923,10191430289895861185
+be7c792b-a43d-d5a0-3214-91070df71013,1862998738,12221592243685539496
+1e1e7f12-95dd-b929-d88a-680be16b3447,3103151734,15353942571350486496
+c3099965-eee0-d2b5-428d-798656d82b91,4122131144,12697191825070950989
+232e39d8-84a2-535f-5625-dc40bd9b3c19,2935512752,3647884880428306257
+55d0519d-04da-61fc-65ad-658e50916be8,3552028077,17820531564941063573
+8da1b28f-fe55-b082-54ef-6b11cd54b531,3464603107,7298556810145008430
+41252805-a1cb-415a-b1e6-1dc75c560d10,1090980626,9267407441740634817
+a51ad7e2-b191-182e-9694-5c8928883f75,1139878,18057876208668474133
+8b37a2ad-ea6c-65f8-e485-80f5892f3d2d,1055508767,17216322237654283817
+5a654935-9b46-fe0e-d6c9-6776c457a147,3008744915,6454034019567827339
+380ee7ab-da0e-f57c-194d-79600fc62f27,3489141240,12127965980411355192
+bcd5d308-dae9-a869-5622-76f0eac91619,3291288009,1850634491644630599
+cff2f838-2deb-0f61-5103-aad8cce3b3da,277951635,4919914556550487357
+4e475b10-4fa8-be24-ed17-7a33e6b0ff70,415830413,15585315183451624709
+7c1689fd-2652-7ce8-11cd-21657dd0d0c3,2843552795,7676073572901614893
+326dcb8b-37ae-396d-acf4-cc5c40f7f2ee,4294240073,15008416013334016669
+819f995a-f13b-3334-9954-445f60ffd396,2464007564,11255225116093021577
+30d84825-8d1b-7cd3-dad3-8091200edec3,282356618,4778172057420339764
+58ce210c-cac2-fbbe-6812-78af2f6b7ab6,1722177991,2699120169920804100
+7804bd09-e393-130f-b6a5-40ae92b993fb,169701883,10822038145557643072
+7e0ffae8-6d3c-0cfd-1a9f-6f84dd228fd8,376649386,4387918965925109595
+ab57f0af-fcdf-8172-d3ee-4b1873955a10,3011647226,10444878179034502620
+75f19e2f-aebe-cec6-306d-9890b496becc,1749406077,1680160838483231371
+7b284860-2d57-1dcf-78d6-1808aa4e07a4,1033516457,15393886162353772613
+8bceacb9-484e-05d8-f333-63b5a4dc99e4,3756252189,4340355875924853339
+9607de8e-dc22-7254-fc00-1d76a317b37d,2658629149,6124522128563217764
+80d2d6ea-2a14-f439-682b-3e871c28ce85,141151245,3373029522680441277
+9019760f-9bff-f6d8-c91b-b023813bf888,3252972958,3473642875302802929
+4b59e029-9f3b-b924-2f87-a7daa7581e25,2348188627,2227377753725584599
+3ace4d28-e328-11dc-a33e-7d877214df16,3561096481,15771005132690594556
+7fa8b0f6-908a-33c5-5068-b620b25bf090,2597501058,612786192462341437
+29ffbb05-47ac-f541-c237-9e560845f61e,682119246,12584916599608482981
+3a011cc6-5189-1150-6bd6-62d3560ec0cb,2599494579,9721597753744359363
+f7d038fc-ff31-aca6-c02c-7ff71d16e428,1740135424,11737880235973778831
+63b62144-3402-1a0b-402c-de94f6e659ba,3470841573,6432040015182529159
+cf03682f-9729-1b07-2266-fd243605ccdd,1830042848,711045854622078672
+6b24de9b-7912-3505-276c-cfb77cf3931d,3545600036,6794028520537857368
+365c7e83-c750-8f94-6a47-ee4127185a7d,3598470884,16320166815774671017
+5de45737-3c1a-b47a-b426-dec74d4e6368,1898807943,5768201981020562549
+26dbf353-a064-1df1-06bb-e32cd490bb5e,3494695828,7626207446192995434
+72ad56c0-4b4f-9bf5-d5fd-85bddf3923da,2732468487,16678690896510094824
+23f4b2b2-9aff-c541-2f1f-18209e7c518d,399278795,13643421913799709378
+98b6fb5a-a444-9626-7baa-ee9574ba2e30,734747293,12252796933638396827
+2860946b-21a9-520f-f09f-00cdcd2bcc9e,1294337574,17392449088176622260
+29b23048-65be-56e2-4548-9fc9817e02e2,1063733217,12877571201527172320
+373f1b0c-470a-e745-6497-105c8a7b69fa,2777943707,3785088167940136413
+8f3278b9-0e9e-66f1-39fa-d3c3a4007d1c,3883750497,3959376536155121557
+9635bc6c-be40-45f5-f435-c310748089bd,1131141391,7811716752263952623
+6d5ba77d-1f2c-d37b-2d65-70e29190cf1c,1606593488,1303547894817539527
+1989419a-7af3-00e9-9a19-ef1c3309740b,2832076205,2079458066665930272
+19a87947-2585-1803-9c02-9351eefe9f31,143260173,9759876247302569116
+608bf070-74ad-6e28-2c69-3a27f2f3e22e,764875144,8955825249047413033
+618002a0-4ac3-a970-9114-eb37a10ede78,3567377855,15419942495378959726
+8ca565d9-3ec7-8b12-7dd1-00cfe205a140,328359218,11561096715902902146
+4298f5d6-1012-0321-e60c-e733721158d5,2924957653,6783036905850547372
+5fdb2a73-f624-9d3d-504e-01e7651cf9c5,3750431084,2116321724436333792
+e9ba51ce-63e9-6d43-3fd6-16381b810435,4262693300,6870506040385506322
+dd63945d-d1bb-b1da-7ad3-a21052148643,3014797351,17280513806628942235
+62f2d183-2683-5e3c-7fb3-07d9aadd8108,3352625841,93141585651265787
+efd827e9-14e3-cf92-b68c-592c83731a25,2870162982,3564725753359007166
+f6c4f814-3c94-cf55-f07f-4bc0c42b0735,1504024292,18252215578510680285
+98749af2-c8e1-858a-2dcc-ba38ebe3bf0d,1155585662,2267950677148307100
+fc50032f-8f57-b3f6-5540-e115da7373fd,3864176866,9968149332344851776
+f2878c81-7955-3a4c-e211-bec5db9d3373,1820956679,14273841523708427251
+9edc314e-df13-89ae-7119-72aab2cb9539,3532896886,10993853503989216872
+d058ab07-26cb-0ea3-863d-5037e6f9657b,2680346719,11836298713550938373
+b9abf4f6-628a-0f50-b82c-741113fd4b11,2919756449,671308597163984828
+370603c8-a759-2c5b-c00e-bd918d246f5d,1561736727,17558791039243416313
+bc14eddf-a3a5-1bc5-f3cd-6a1d71c97a4e,909308831,17603502903518362772
+671cbc29-9510-ac1b-735d-dd3f0110e357,3153777848,12230176384037868787
+879e1d16-7944-5011-38b0-54e376685189,3256909683,10554380907860165421
+c4679726-03ad-d511-a9e3-1ac5bca42a5c,1673138610,6925211932860840981
+896a21f2-51ac-61dc-15a2-f63a2438fc72,181368246,17159786979367163669
+d002c663-b365-593a-fb9a-5e0307303a30,683627180,12236688682597860878
+87339ac3-dd56-a458-2462-435cc6a8f704,3488637448,7017703068704996949
+ed90c304-a9a7-c113-6003-cf2df913c6d9,2309791610,16271038339985091451
+4e2bd214-5c96-e605-0b61-9e1603681468,3029170379,12397704933244086967
+61dc7f00-c39c-3102-4433-3633d66854ae,1453340765,10550698663039450374
+cb4914a9-881c-78b8-8af1-66ce41b1f5b6,3049970209,6151412723340786915
+881b6292-3ad3-ab62-73e8-80dc93844365,3702154060,15666765266352601515
+d9794926-6c85-7739-0e24-b812df423a5c,857520169,6651073645813639824
+3ccba6b4-1711-60a7-1f52-3ce0700de84a,2385758513,12947241307221058356
+f7d148c0-5932-9d2a-64a4-ed091e889cef,2030327365,10785505562782242454
+6652cdcf-0202-3b77-037b-fc3d04fa776f,4013425417,10042281946340525642
+fff2e2c7-2d57-95bf-b1ed-5e4d3d646553,552722312,1210143585532813427
+5cd40f54-3ef2-5872-46c0-5e839c6d16f5,119458080,14869736871153894534
+54f48c67-5696-df60-0647-e40bccf065bd,3893081477,4196872785288304501
+cda8cd8d-4dbb-3fe2-9699-6ad46453de3f,2046356325,10064911222746963543
+d9696f92-6ea4-88bb-1d06-4ac13e4f166a,3205381472,17254790753386922893
+e9cc8de1-cc36-d986-93a9-38e5ab41f94d,2182954874,3828372921797942757
+a29e4b55-313c-630a-ebe5-42ed9351daa1,1547763030,14833834378173868237
+2e888ebf-db08-74c6-dc27-1b38f9ec3a39,3171983173,10493915367408808129
+54192018-f721-e105-6793-ba76e7374a22,2890338263,14923157505865871173
+42d0c89e-e98d-4106-057a-fdf54308815c,3761571179,10224985961608529554
+ec5daf5d-f19c-a402-5036-c56cf8d07326,1317406133,4428223964376054616
+c772b10f-142f-b819-2841-ff9fd65b1c86,3660287327,8725948858137166278
+8c1c589c-ba5c-d095-d32e-09714bb41011,848364776,4280574799328192717
+099581f6-a242-85c2-05f8-c09a25c0df2f,684739695,10711913109973935719
+04974f65-e405-7e09-f9a5-70cd1b2554a6,3150907830,6683956641069798484
+5028c9f4-bc1b-f221-d14c-fa6a94139c50,3948690439,5719837268013678075
+228e5bf3-c8b6-4f17-65d0-9e8d79b889b2,438782118,7823052423658371076
+5a86b861-49e6-ad44-f9e2-4c0991d7fe18,2267388926,15543889867844695816
+c07cfdd6-35eb-0227-b6f7-a1ed0010d1bc,1034568866,14128961916757844927
+ec64462f-16be-39f5-1d97-234cccc5f246,397512,10901685989816379608
+e426a26c-d801-b992-4e7b-2aa4145650a9,761028317,10126676451870708592
+fc98c4d9-ee2b-313e-d662-f3b6a645a87f,3791755426,4182203950891885285
+93ea1623-baac-ae7c-d854-81af1d08c755,1592805171,7446911953628590090
+5b6dd13e-5fec-ea49-8376-7377b00cc691,2747938008,11055192227473702017
+585fbbf4-beb6-bfae-a6dd-a4bdb4454db2,1124922211,2726901734499179635
+e8502928-2ef6-78ac-b23a-cdd694f0500a,2199129454,14560624964581922399
+8176bfcc-d25f-6478-8aeb-7ab8923aae3c,63891999,6591031459305892447
+9a583567-3b41-5324-2606-6dc7717f8c4b,3498735570,2755989309525790814
+161b52dd-7813-ca67-5d00-ee67b7ea9d57,4210160717,9683459765032329504
+147e38e6-7409-6632-88d9-e899c3918a66,2796453869,13908168759484103509
+a1c33ab8-c2a2-c9f4-5032-d4261b66a52d,3302253295,3357390305779610376
+1e2753d5-3edd-c124-4e7e-2c048d62b31e,3595735997,2004231939416452035
+a182b071-27fa-a88e-90a4-d0fd18c98b80,1753533754,4390070650336649843
+659b69f9-b9fc-9594-2f20-e03cb05a2337,3542798439,934475529661904331
+fb078769-c543-6231-d13c-68ddd9b8c258,1691873605,8592800342150341574
+0bdb7c28-b9b1-2d7d-aad1-70f0c5edcef3,2046369187,4005964562671868134
+a4874b56-26fe-a70c-cc1e-345b2b39f159,641061838,10628320220561730316
+23a016a8-a716-64ac-42b4-c849f0d44b35,2798363398,17358789600120164921
+599ce345-f0bc-96b7-d2fd-7d9e5e64198b,417114444,16248174878557203323
+09682442-74ad-2e82-bbc3-f9cc2b9fe28d,2181273161,4797377908740543631
+fec9dcf2-3bdb-5f0e-6c6a-1666bd95cd1f,2010734446,13412184483411073887
+89318e6c-f993-0bc6-06c3-f15b1a70c39d,2740745473,8858455860366833717
+a83f4264-f5af-5bc9-7615-a126db72d5a3,3893863400,18152624231249936863
+93a67538-7a85-d095-2c73-12399f7335a3,947477559,18021959336533499067
+e15f7ce3-4002-bad7-5f47-bf60690170f1,4220591182,17127640320481562521
+c75afe9d-2953-aac2-b522-be612c0bf0f7,4118268581,13392979443059787509
+e02bfadd-a98a-b864-7993-aa57c6295566,2251369922,12121343789868841580
+4ba1e928-d3ed-c18c-76e6-d8e6fe46d93a,1021648797,3846732624935059635
+3478ecd5-99b5-3756-d651-6c6e8f06321d,229799150,9514864614896445903
+cd5ac445-4235-0cab-23a8-465423f96fcd,27654342,6457273887596938703
+0127e401-2a6b-4ebd-9eb0-ff0009d1584c,975664161,2441940594185569004
+ad285cd1-7039-ffc8-6cee-517ddcc46ccc,4009075219,10172802166497067389
+82868569-9d9b-fffa-b1d0-ab5f00590d3f,2259784905,15072774417477352680
+32460377-ba8e-da38-6d3d-9415e6c6f41c,4289815852,8127373710226920164
+4f69bd7a-35af-997b-c6f3-3df5f9ecba5c,615828693,8877138641633045625
+b8845817-09bb-c8c1-2f2f-1fb4b82b1d08,1838445361,2451112019392316294
+e6b5971b-01b3-315b-5ee3-8596fa63e07e,221894102,5917239729264639131
+1b8eaee7-8046-0ac0-b814-c6dff0884c09,3169935211,14843580479574761340
+bee429ff-3e3c-06d6-6058-fa5ca3177f50,3025739258,14434834495896337318
+6bc52a58-75c9-bf52-38da-95bb7db878f8,3203471204,15795645521280624872
+de908ff7-9420-f092-8f68-907d4b6eb508,766161756,7863002907055573290
+29a78aa8-218e-5851-5f29-6b2bbbf4fd77,2778772173,3995925321759470539
+495ea0cd-d5b9-9b03-225a-0597bcd2862b,4282911302,14614092580148720020
+2ebb9f6f-697a-321b-94cd-0175f1e53f97,3670485165,1944720944986482334
+24725132-a678-4ad5-c3d0-2288163a8c98,169153889,2952697841196505025
+171deb19-7516-90af-a17e-85c06b4b7098,313151295,328269671946522231
+4ffbb08b-3de5-9978-6328-18cb7b164149,3807080252,13765220336151913323
+25e47641-b829-c6a6-a52c-79a59bd1fa14,2706532922,14426255250683863450
+0353a2cb-ba93-eeb5-af86-08f6034b4e2c,2442234577,10371285533042957404
+e6a27723-d5c8-8f92-eb7b-effc3c4ac9f6,1462019507,8666318293511266214
+1848579c-2c8b-7f65-78aa-f43422aaebb8,3830640750,14083771125842570592
+5a315c13-95bd-81b9-b671-fa34890171e9,4144444266,7497297957752664140
+9c11167d-0f25-b823-661f-8436378b1d63,1279376468,13980816344928554201
+a7e5fffd-348b-b8cc-1c32-525698689dab,1758273850,14567461235774796332
+146a5e2e-0ff5-4736-d5dd-53967a40b30f,345154213,14066439812822971987
+80e3f43e-10c5-b4f4-4ba6-c75b03945c7e,3896815698,1494229351273699215
+bcb1cb2f-77ef-9b6c-3707-f203d00b52cb,1108449538,6111078785139364127
+0e552b2d-b1b6-faf3-c0cc-5acbddc2d795,1309354170,12363368550963422769
+e870a6fc-d4f3-dfc2-bab7-0f9686fc9b71,1806233266,12296711528663075
+9fac23f4-1fda-3b0b-f69a-f49ce4bddf79,3091589969,10206702105192016728
+8b3eead9-4fbf-abc3-64dc-0237c6af22cb,2947201992,7833970494422134376
+22d1dfce-09f5-b728-993d-c877f6ebb8c3,1391047385,12982501864059029963
+d7ed00a2-46b3-8469-1654-7cc2031d72c7,3046934379,2062034179402570987
+b21fde67-5661-52cd-418b-88f636250879,109677429,11405635399951211844
+5090eea0-078f-71bd-ce0c-f7a2a7d16044,4005725169,7692630208090752102
+da833d19-c3a4-a30e-f966-0f98d05f6d9d,3745075336,16987138039240030826
+6ee9def9-a915-65d8-5180-785f326c4699,4028756153,14603467959901965057
+953654e8-1a10-bb39-b112-4df957cbd218,558246003,13604062716528802641
+022a7e4b-3aba-317e-0e84-fad63e38bd6e,1869458480,9271161439739965585
+fd4ca1b1-68c9-77c8-4cc1-6e64ef73372b,2463857792,11674426161903119157
+299245e4-0d8e-7635-e37b-62bf2b824751,1497472971,3934950373320382439
+89dc5101-8c4d-e58f-54a2-2417f7023894,528407811,15852287416973860682
+3f5ee5a1-6c0e-3e67-893b-3ebc7872de0f,2355306147,7863837523734025107
+ec7d42ad-4929-9ae0-dcda-63ed3c139256,172474801,6616460661116256317
+5af7b1dd-8792-d571-8c87-3b6fc1d58675,2647996153,9505396999144176002
+303154d7-e417-ec91-0f20-f8a86ee757ee,718789205,4892367176778531138
+bd572cbf-e4ab-6bd6-39ac-649c962624b8,533850901,8608131717768011170
+f1b1e3a8-5657-c6b2-4aa0-479909c4d8db,736272183,14846529538761548814
+c18ced37-c0f6-da9f-187c-e4ee4e55b80c,1303528451,11823719202938866305
+0d10b93a-fed2-6d95-4bf3-2d317528f845,3565498825,17928155835911558257
+96d660c9-bb92-95bd-0986-6497486c12b8,2802929579,16333268278459429721
+8e7b01ce-8104-0a98-cefa-3eb5116e8e1d,2032147997,2558796838709177452
+bc77c51a-8f5b-2e6e-8277-d5cc211a2d6d,880200535,9111981817828192484
+00bc1d63-f68c-3a59-887b-c6860822fe99,470746140,7251782522164925480
+76d0cc06-bea3-f435-10a2-268119dc7309,1893564125,7444402093876168948
+63fb364e-7269-5e67-9b07-3331ecc74978,892269752,11222148440358727424
+e6c24f53-e231-9e1d-74e3-fcfaaa80c1b3,1582163789,2928962815758959608
+2463c4ce-e466-8879-6cc2-703d1495d1bd,1388041986,15433545902218852599
+b9e57651-3c45-cf27-d949-89226b2fa8bb,3365951157,10458029118959201060
+590a9162-8b3b-5ecd-0580-2ad926961119,867724583,4465435092132912211
+09419b41-466f-bd10-4b0a-f1d5c90d2691,2625078298,9316500156812980423
+530d4fd5-01f2-d7dc-21c8-e39b72eb5e15,2536495416,6542253301577510199
+22e4169e-5e3a-14e0-e5df-46a277fb22a4,2090787448,8035848100677544776
+d9728a3f-de8e-4d82-76b5-20b60d23dc1a,3264223108,3644875416118796243
+8003c323-68a6-b23d-ec82-147bd9c78468,2552131201,17617331675649613825
+63690592-ff82-1fb2-7faf-561af25fb53d,4019649522,3915919947797308874
+ca854e22-20c7-3dfd-f463-237082ac0600,1610613292,2909543573737897797
+4ddbb353-5761-250f-83ae-6bda62d27f01,526132072,2039406113082465798
+5e613e62-b1f5-8963-ec79-4786cab8cdcf,1479148222,3390709600672977175
+1c894d5c-253c-df0d-80e1-ea75b84d3e47,987503699,254850507316818203
+a284ea0f-87fe-35fb-2c72-82ae9fc33328,4159954907,16053273303268219904
+cf776ab8-9fb9-4a4e-6f70-37891dbd83ad,2749087092,12345291268751474679
+0eace277-cfe1-f17e-0c06-650c80e751b4,3386801306,13546529258570304775
+d1c29cfb-7654-1048-96bd-5bd7751ea8d8,1198754052,2539930553805970207
+d5629a2b-5548-caff-dd03-fb2f6940f1bf,1309018484,5491840542576929878
+d31890bf-9b71-7452-ed2e-e9ae74e19e8c,4004952789,4046172850857649932
+2097a3ee-86cc-6a3d-b703-4b89250fc7de,847518996,8934296698568135144
+f3249aba-a816-de98-ce81-d99bcdfec8bb,3959611761,14478160353357687645
+3fd23794-cd88-d639-d0f6-61a668b0b71d,3618850052,5411822332584105552
+64b440cb-787e-c713-c812-3e29bf4bb340,1075416281,824147019237052121
+d8880e96-67b9-6445-775a-cc781bdf39ee,4277403910,15217019911649293082
+e0cf894c-7f2a-0521-285b-f4674b923414,2561722888,10231767663165258070
+763493fe-56d1-f5a5-39c9-8ae1a4cb706e,3662503919,6599764445308374915
+d0d74ff3-043f-0d15-7aa9-ed3e51b5e4d2,3469213269,9720179204047919985
+88f90ee0-ee4e-e2de-de23-86601bdcdc59,1086911171,14906466979993478667
+e32aa1e4-56c6-f8f3-9aa3-95d051d8c8a3,1422438372,13608724821047890466
+2389be0e-3156-9ad7-83ec-6594fe3287a5,1435804928,3667739635433956589
+0f0af2af-91fd-56b6-b0c2-f6ddbdc9af45,1274161121,12099770287901822510
+73649f81-6e62-180b-e450-345f6d4ff214,2328146381,385493870717919207
+816f3f92-0fc6-0f65-8339-1d4f02e1a556,3785641550,5770146300752058701
+44054b81-274d-2418-4212-464ac927b3ed,957968770,11687956804093752227
+6c0ac6d9-9577-c8f1-0225-dc9e607f2431,3219409516,6686956792334453419
+bd0f7dc8-8992-246b-d379-94d62f5af7fb,443997573,7784270467885949256
+5287107b-b5f2-735b-ccbc-e267b0bdf8ab,2408491544,7509854889061914679
+99c8e1a0-b262-4ecb-4a45-9ceeb28922b4,3598854228,3216184423612646203
+0c358e58-ba96-19de-6e80-389926cdec94,2949989553,10799887324096767020
+31c7f24c-707d-ad95-8a2a-ec2ea5dcf4c0,665513460,9759481194070277752
+e42da447-3da2-d931-26d2-5fb105a766a5,2178308832,13675985641369712013
+53803917-5e49-bd14-7bf5-96085395d36a,314525263,6677469783997689066
+e40ecb96-e651-6081-611b-a3b0a91cdfd8,1078229313,7929331161766937877
+e5f45c03-a660-77a8-c29c-6b9c5f89ecdf,3485277035,3085273780486771848
+0fe3c432-f484-6d4d-599f-33527d954e1f,691542689,10497708987622458996
+69983af3-5092-50e1-89f7-1a7a64e157ca,3364323594,13240554467740264040
+aab7a5af-e006-7aa2-9d8b-d9fd01d4c68d,3237708264,4265150793174514990
+2bb8ba4e-5e50-ab79-fa38-b5aab57494c3,2108881600,13593672962196809512
+68943edd-d242-8cab-3477-3a883183fa2c,4027016970,13742616367748294365
+11c50da7-eebe-e471-29d7-d945e74d68b2,889046585,1616777133824119939
+d90a77a2-bb7f-a2e0-a6dd-e54b6eeda69d,1838194589,14676035422776788290
+db1a974f-6077-4b0f-107d-dde657fd8d96,506849441,2705735235623637810
+063466aa-289b-5c67-24fb-05e78b2f19da,2510515188,4090866123752578346
+7e91a0d9-f6da-2b5c-609b-808a59b1f501,3038069654,15189605441131239345
+62584064-5b35-a299-83c0-f06e1949f932,2370983597,2664142966707472788
+62a472e3-cf56-4f05-6790-a7617a5098b0,1740361572,16709158571247339193
+951ec4da-29b4-0c6a-d97f-32f237c2edef,3093344327,9919527323792493358
+157f7ce8-621c-bacb-a8e0-91cb13b21ba5,2214811187,6002801566388375363
+24ac144d-80b7-c4f5-35bd-f73dee446e44,3943000832,7284587784987168354
+3f7c23dc-30ef-d19c-6c6b-dbca9059b3cd,4057168932,17249501420007075238
+ce6f18b5-7801-3c64-7dba-e73006457d47,3514973198,16153117338804767781
+05c14274-4541-f63b-c998-695174198f85,1515783663,13651272573345173511
+419fe7ea-7860-55e1-f084-e4738ed5d963,76238146,10701435722842983750
+0af407df-d0f1-d1f5-8522-96840a11ff8d,1232508014,10460463401566088391
+80be3cc5-09bc-4f9c-bf42-d1cd01df469c,2190518243,14077719336230880587
+63329e61-e79c-86a7-3d31-e524400b1c32,377474193,1454057591893577440
+0afc0676-c71a-4b5f-6f79-4bb84c1c8f85,2910074277,4720860550536817550
+2c6967e8-d6e2-749f-f600-c9aeb45b9c5a,3764317821,5042092581519429590
+e61952c1-646a-9f80-8dd4-5c8c2246d4fe,1442734181,10762924198239964695
+b9104fa0-458a-6cb4-38e0-546ad4ced1f9,4100347320,4392774239192262308
+add8faaa-2328-4bc5-14cc-7bd747cacfea,3321227694,6164206798639771516
+1787bae0-731c-00e6-cf49-680f47b4213f,1606523008,5458064399262363339
+41c201c1-7226-32e1-df2a-4c157fdc9d79,3282977545,15387063560810940095
+235b2076-8c19-77e0-bfcf-c0e7fdf40fe2,2171493652,1542116901025384448
+6f4e7534-1689-835a-1765-beb449043128,513436522,2164924429923784390
+c969ca8d-b6fa-bfa0-1ecf-55e75caa780c,1854003183,6540260734139307536
+3da066f6-c608-97c7-0728-34c5ccdec6f2,1959388527,6308223103056853125
+b1d34711-af42-3e29-4734-89d737bb0435,884520413,5581866024493044317
+a4c1e119-1625-7e15-3a63-9acac6ce9331,541950878,3126745535745217525
+6075d311-2e58-3de6-9dbd-9c34e4e60fee,1249742424,1930400950559816721
+fd7f17a8-c80a-0159-a16d-85d13cf64a5f,1951430797,5636059494862585961
+fbdf7496-fc4e-85cc-9c06-8e3e7edb18e3,4204161899,8689992864564098682
+254ffd8d-2b8b-ce8a-d779-0a604a265ff8,1881140316,17224523728038173717
+23bafc01-2859-98d8-9b19-40594afeef99,3065126851,12764579141551126717
+bf755c59-5afc-284f-781b-4c9e0402b9c5,356705210,5430287900318331487
+c7340704-49cc-54d7-f494-c5e83ffaf2d0,3664678912,3171341515322169630
+41beaea4-2850-54f6-cdbd-319c42d96ecc,1408524950,12248872980133120200
+ae08a361-06ae-facb-4a7f-12e67d8c4563,2485513881,9812307470115846255
+26ae14da-e9bf-2a9f-6940-62cca2ce94f2,2872885389,12715493609748075213
+61caed5e-f474-4aed-439d-d49f5004ccb5,1871016278,7496731604936939347
+58ed00b0-3052-cc1f-4f65-27c8160caad5,3975215863,15986318678641060801
+a6196c09-7aa3-4774-761e-1be3bcc78ef7,2524870232,11123911780485337420
+68851d15-1266-f63a-efad-5fff7c326a15,873744349,14867259787000843270
+c41b3145-9e7e-ccc5-61b7-d7321a6b9d44,2335299975,10977956461230406674
+cbe3f1a8-6b1d-a0a9-8541-5c8ce9b0420f,508326892,1577505782635285573
+fc3bd49a-1c2c-6a68-4e64-7af46169d16e,44660919,3813582483386790857
+e12465a1-89c3-b544-0c79-fafbb3f1742a,3630537919,4530689782442511486
+4eea86b4-473f-98ff-188d-779fd64a82c6,3853703054,6620294757870160600
+94425329-e512-4c58-40b4-924b7f3f4036,4209118808,7754053407557820580
+1833a44e-6018-58c8-10d7-69365573a322,3165375214,10888264874980815408
+f5262c38-12ae-4318-f3a2-2806c103664b,3182210474,12581204526635112772
+a73fd130-26eb-94d7-980e-e3203d12570b,794412854,11490730299410914777
+778038eb-65a3-1b4a-37dd-23fa39d6e2ad,2582558870,9173424762585487295
+701aaa87-e7ae-6d19-0232-3b6f117c0e9b,1666636507,12135307475497029727
+23d411b3-8387-773c-36ab-13f4880c12f6,3642457837,2051133205543038525
+20d65b9f-4897-00cc-385e-9898a75c393e,815476869,2469615602976834480
+c43a1f89-a289-cdaa-cef8-61e0d8b1386a,646842184,14453596887174278121
+c0e015ec-db09-d052-6fef-ce711f54c729,1957690155,5603256787543749734
+835b216a-895a-dfb3-c527-1ee76f2dc0fc,2694905082,3341478811297068544
+fdfd7374-d2fd-8274-f8e6-8816abcd57ef,3607425413,10733032460818046024
+f867ee55-0c67-ea84-882b-2ae2de347c5a,3637147066,3748327346283892493
+11da7918-5611-db38-c220-ca0affd68bf6,1484519809,12418973688747533787
+bdf1ccca-b56b-c42c-f22c-8baeb771cf9e,3747285093,4648253882295052976
+34845192-9690-df2f-8ce6-2c9be63cddc0,1988698920,2997583424688237103
+0e4b6110-dc57-9dca-9ee2-00df86363bf4,2235039447,7245407622280793055
+51255b49-a5ca-1a27-5eda-72cd7321fad3,2251959280,16571569164084293261
+28a69ac5-0126-eae1-228b-32ee9b352f39,3724526628,2566966917464522602
+0499c123-3427-b4a1-61e5-736731e484a2,1976355527,11188467970931762055
+81564d2e-7e7c-bff1-b95a-f4ccefad885f,4117994946,5699343783353575358
+c4964187-50c4-80dc-f051-00031f0303cf,901402047,15189679391070430693
+f9d60694-4656-d68a-99d5-8b20429bf6fd,1116628655,9815209112135713604
+c0ab97eb-47cc-e12a-8970-6a38842fe71c,2225393806,5821313153962341594
+7673a94b-206c-b2ac-df4d-652a20f2d74a,2208298410,597474444269413873
+a00ee796-eabf-76cb-f102-0d45e8092f66,883229385,12382122249999895446
+f0bf75fe-7000-9881-4a87-db86c27e391f,1383049896,5795064979594388953
+51ddf59c-634a-db98-464a-be06deb523be,3471250414,12300108797080207658
+d3d2e11e-ed85-b820-989c-de63a5af4a7b,2746515361,15411790554200108027
+2b48a3c8-fd66-ac50-4290-bf35ee61fea0,2595973642,4798254488437402713
+893299f8-5204-0f66-e4fe-d568852c297d,3417971751,10906973781641741859
+b805099a-afd8-535e-cf63-d1a465a1fb25,2639988618,15065982802532592107
+ed177352-5b06-07a3-ad4d-67de436fe369,3914790679,16581427725620103654
+83f7cbe6-781c-42f6-42d1-2de5bfe230bf,3809205792,13142085596024496701
+88610867-5299-cadb-51cf-98d95ace63ae,1844800775,6795544499663388687
+485864a2-e5a4-c73e-96ae-b611b8ae9189,2037768576,7638757176482451579
+91d6ad49-e15d-7681-aba8-83bde3a3d52e,2522588655,9486059971805815208
+5cb9c90e-c4dd-dfbe-45fa-076d6126c242,4056024224,582415138824018000
+566be875-1041-416e-15e4-2df94ad788b3,4201144319,16122373253968471819
+d25cf160-e4dc-d157-5a5e-d2e47ad71b4b,3144689869,4083901711448648869
+a792821b-6e56-4151-b8e5-ee328752291f,2389192319,15914865820253823188
+3e1b1be6-e5a6-b1cb-daf5-85de2b5a623a,1906656293,5904626877996861950
+f715351d-208c-52f5-3878-a1c8cf2c329a,3305768183,6394261977237333364
+40acb079-099d-2588-73f7-1e9a0a78cf89,4242445414,16974578214874355406
+793cd848-00f2-4d57-41b9-b5b430408b2d,1017488546,6273656734103810416
+c84b9f51-506b-1a9c-4ccd-5d667becae7c,2757906289,4123083447413576885
+5886f3f2-36a9-f8e2-3e0a-0519cd1cf0fb,2873904262,16677068838866621099
+8e9df001-35bc-301c-ba82-3110fef9b903,2701060155,2818429347546307784
+ddc57740-5068-e051-b110-3cad31b2a707,838268438,5011962157404219022
+2638ac11-af9f-de1f-7132-a46226af2ede,3574165639,2969940168409771530
+b71c76f0-b598-ec57-c160-5c83dc88cea5,656290729,12749061047204373353
+b8e0e1d3-10c8-ddd3-3f7b-5b4453fd5f63,2693928386,16669193145329076846
+8f43bc96-25dd-3793-f40e-42b518eff345,865510345,11327048430391664680
+6588d221-f231-be16-eca8-84905bd7c0da,2371448612,14044209278050448446
+26c15cf5-30b4-a36c-e5fd-5fa73b67e20b,1627361230,6543177007164906013
+a0766bf6-29e9-fcae-1bb2-a94999e9eb84,727252883,13729426673541828274
+31e44207-0784-0644-115a-a21de5ce49eb,1263474562,4107935236930849789
+267f7b13-7e95-6c8d-ad59-455ea1b04963,896103359,6684823660912347441
+58c297b5-46d6-3801-f4de-16b91a743e11,3401736584,14855402579993469999
+c2c5cecf-15c0-88cf-88e7-b0184658eb5f,67526505,17730687683308911447
+6291310e-a5a5-3de3-135d-85bcc7d3ede4,2182878515,14924691946773989144
+634cba7f-5e81-21b9-7508-2f46b11dc655,744138653,7918315912080003768
+91a8eb23-b557-196a-d72e-f98136f739b7,561118,845959946016208507
+d493ccb0-d2e5-6023-94c9-1f51e513fe3b,1185960506,16344325265133297894
+ca24ba68-6687-8e35-ee2c-4eb84823549f,2290713603,17044113015574218934
+053097b6-40db-6731-b88c-266b33d88490,283064804,13706759548781439238
+c97b83a8-5a61-5cd5-69b3-bfc35265465e,2910642730,6023527601003129018
+205451b8-72b0-e64e-4118-dfd1acc8e6e2,1860187473,11506697703568389132
+722c262a-8b59-102b-75f2-0488e73609b7,862705694,10287683914318938059
+4e717715-adf5-b3e9-3dd0-2a3ee802425b,318221214,12788895729683699955
+ae5dbcc0-59c1-2ebc-ab63-d8aaf802501a,1924090355,15282441154977863244
+81a6888d-3d17-413a-5713-a3119c3f1d9c,2393686432,5780687920015019313
+7b967648-19de-8daa-01ca-ed9b23083be7,3186040504,8952395506578135602
+d3719e3b-b51c-0ea5-46bf-8c68f9e32d42,2343442391,16027938466564420466
+95a4f89e-d571-faea-0a08-3224e206217c,1615095831,8967077035772728795
+21ea7e73-a0e2-9b83-9245-742927b78344,4143071243,11742793155114153799
+1a5aea6c-fe2d-6a24-2cfc-a3ac9bd5d8f7,2445295524,11577560548657936874
+ff0d8f4e-3dc7-fafd-d70d-53e78757c491,3037003536,16859011920608115609
+3f840b5f-8dfe-bfe4-0cf5-629e385acdf7,1286071559,17889576718567331261
+11ecbd9a-7cba-08ca-5403-1bb6558429b4,996608705,580142356933513987
+63b4c8fd-8ffb-9778-b0aa-8c3b4b6f9f07,1678760170,1271157106310145832
+a6e78757-86e3-f5b3-52a4-41301888f968,1973454445,10472408546542755315
+72ffe613-18df-7f44-c4ab-6bf2c425138d,3181364331,6828420073986727795
+1b4e4b48-cb80-a0e9-8b46-7d33c26a7b6d,553985695,11591517521164079518
+c9e419e8-1b06-56ff-5ce2-809317e9b39a,4168874107,8436591032505235779
+9c46e03a-65c7-857c-bc08-80820bd25847,2860612620,15938497273008870843
+7b36e0c8-e85d-7242-539c-d847fb063942,350199847,6125112242972165349
+57feaf14-e8f4-c711-a2fb-730fdf8752ec,4189043755,10333471527402770509
+b46c75a5-0324-4b21-e854-f06e33f12397,13577023,2802370190578843833
+c8920290-3ae0-00ac-d36c-dbd3b3a87cf9,490243629,9645693572203429487
+1475f0cc-4ace-15a8-1960-72af01c595f1,2088854400,13547155324694957184
+399d74ed-88f0-ca84-1fd3-e7190b6f10f7,3127791066,1720421086281913618
+5bfbc2d9-44c1-d6f0-b71f-eef6285a63ae,909625496,13358310454224930552
+241d5646-9d8e-477d-c56a-47a9ce106ae0,2156916642,10919397674753378895
+6d81b191-91dd-531d-caf4-df3f7a761e8b,1045670287,5596249946190019862
+b2c601bf-5944-2014-2fc2-f948d372cef2,3235768374,11141102754958202696
+5e0e916b-34b6-ce06-c838-04cf316f29bc,3900981318,2803348999575058770
+31fbdde0-b9b3-cd02-092a-8edc6377d845,416737297,6479594873511576466
+4d935d5d-5ac5-08a2-6c99-676f5eea577a,19941484,333717896667008323
+58e9a1f4-fbb9-df3d-589a-5cde3ce8b7b4,3603053999,11226464551485677391
+80763851-820f-4df2-9ac9-79ab1b91a8bc,994819998,9640416074807541449
+058813d9-d3ea-30fe-2b53-5c626727af77,3897811064,5552122340149071615
+a759485e-30e6-c64d-7a66-a09d573144ce,2756115406,8411029678820191797
+4b149ccd-1b8e-8ede-5bba-b3330b203d4c,3394138413,12342819655583331733
+d8ea4ef8-24be-4757-25e9-e74929de3acf,3990305849,7794813415795077963
+7b43c660-5f48-67c2-0e65-3caa89fb88a9,669090235,10816579115887792553
+575e67c2-d7b8-61d4-f098-1722db6a2275,1761810770,18237371138420945696
+24a0b5fa-8aee-2dc5-2a86-9a486a0836ea,2982298749,6550768119740565556
+b68c4a20-95c9-df83-59d0-325af572c0a7,3692377152,13201739992528471210
+839ce934-e6d8-52af-7cd9-6f18de9f69c2,1104283189,13440678885409569873
+36a56ff9-c65a-bf66-a14e-43bd174400ca,1209492522,10037998400719619676
+9f280502-4d44-178b-2892-eb3dd65d2809,737942602,16952272655219552064
+0cf24b40-8a45-1fa2-a5f8-0f7386800d4d,3233138465,517826561794498935
+7265d2fc-5085-79ac-520f-b82dfcdaae6d,4263008946,10249058972891191327
+46ea3a8b-0b45-2f4c-8a52-d0a179060889,1324364519,9969053403154453614
+3eca8427-7340-ef26-c4a7-28e83d583edc,2983995259,15093308855557238464
+a43decfa-d448-cd35-4fe7-ca837cdc1ba5,2219482717,3099161219704457954
+a826cdf2-3590-0627-2d1f-f41d6f6b6341,124341754,15858367235913419705
+22a72860-3def-05f1-69e7-ee7b747b4a6c,2854285413,10750803574570671944
+53b2548f-4afd-0a17-acf8-423459e280d1,1948830697,4463477560804731393
+98194f2b-905e-f77c-dc20-0fb184cd07fe,4237812087,5264233558922970635
+62ae32fd-d3b0-0b3e-b87e-70ba80d3901f,178377237,10609858207225146329
+a495d379-4c76-f364-cb86-ce6b9ed24d7f,1038946034,3220434990455515101
+f971e880-083e-0c4e-420e-75f65040dcd9,4197539082,8116167548572308369
+6e68ae47-9bc8-905f-82ba-9c2d2ae372d1,3789773244,888781391087205353
+ae6cee7f-8095-0837-9481-ffad6babf712,4081019643,8113028747023080509
+9cd4d849-f4ab-2ff6-f376-8266d49dbd34,1839929567,14230725232570235586
+931492a7-fd0a-8bb2-536e-745ddad6d8fa,1651282463,17133247442136186679
+a93c59b8-292c-8349-d43b-e7816721923c,1102788690,9937684839593763770
+8406af13-81ae-35ca-b340-025196f7b539,1887884296,16585028527716458927
+bd5cb581-a72a-70ac-5396-180a40618813,1908817986,3389056466502797532
+4e6e100a-a60e-ce3e-1736-4da95cd12934,1932323911,17191841763127098001
+62cb68de-250c-ff72-6c54-ea6032fe569a,3103992772,8340830691249399602
+11c520b7-1d98-523c-8761-9b42ffa3baba,293340368,15505188278938079060
+26e833d7-64a4-1681-f3ac-32127f2c065e,1333903686,10037035056646308037
+51824d29-78aa-ad6a-5cb1-eb7a0f27ea28,3748072118,13864758807997390757
+5bd5f379-8ce7-0559-fcd7-975555c53503,2574252243,8828791216932085856
+d4ae0bdd-1857-095d-f2b7-02313a4ca6d2,1712253551,12301030172168346024
+cfe1781e-6f5b-9909-5f4f-9150a9ab50e8,3315458908,17255899360118299679
+71420345-d81e-9644-328f-e334dfe4ecf1,835860672,671360868847581671
+9feea598-500a-e8df-7d4c-880eab7ddace,3561023039,13393130480293622244
+1ded8a5f-a05f-6247-7ba2-84bf7542b07f,3236678158,1597684931307746464
+82bcb4e1-d428-e9f6-be1f-e9f5e6ad7f28,515962935,15245075869808576618
+4cbf73bc-c8a4-1a23-4845-8248c8127a3d,1147107102,8687206823599719009
+4a4eebcb-6861-92c9-1e17-20597ce67197,872114390,17252901745271255549
+be32e3a2-51fb-3310-da05-03b26a64a833,920063650,2316867643534654610
+a0b7fb90-1f8f-048c-0678-bb79bc8156d1,590442351,11438109858830745271
+b420eb3d-037c-13a8-c2a7-0110efc292f0,2030279706,5301454656468622486
+84012113-42dc-a723-ff4a-05f499c927f7,530329047,7487630116856199078
+79a49710-9038-5d21-d93f-ea5de2ecbb59,2270252055,3567027183678119221
+4d7008c2-31e5-afe3-0161-abc26cd61020,1781310268,12593176131347363947
+9f0fe40a-21f1-e215-bc53-a6659db145c1,3182796245,17563461057017947090
+27f19f1c-c0f1-d53b-4754-7e8b2707cfd0,2241212786,15128626835666654389
+72301855-27ae-b502-be3f-09dc53d425f3,3309156389,13623041763286304167
+7e0b363b-df1b-88a7-c11c-7441d5fab691,3960230680,8164204694901557639
+dfbc2715-7ae4-eed5-1fa0-1f6169542f7a,2832788203,534576084509801116
+c5293dcd-09f6-50b1-0fe1-3011a32de2e8,628289771,10282001293665279613
+a30cbc17-cf27-ecdd-530a-ec58caf5714c,1246895338,1622801901638389879
+82013710-f6de-f114-8ced-7830fd37802b,3340118947,4318655184098674163
+ae5c0c07-6aba-537d-4553-3e387d805d39,367360528,7883760828140028349
+e25f0293-7006-0088-fa96-a2667632d5ed,3749683142,10062883193039335712
+16a4ce24-3b1c-1031-b793-8d60e7195ad1,1822248091,13133410906630813405
+243f5f4d-ed07-174d-f5a6-5dc6d1bb62e2,3096416475,6023906309307447285
+c6ad9b42-14a6-5c2c-9328-e5930b148cd9,992028970,10260230587695363940
+23b6bb03-a149-2c8a-3e56-77dd07c1cfa4,1178988498,11730922695085770784
+62be3299-d8e2-0f6b-f75a-18c173d48995,3268960106,7919596435567071543
+b1c90367-d8c8-2a2b-c39d-92d8ca536777,2516847982,540625537079952540
+fe459d7f-7848-336f-5a2e-d76249992e0d,1835360454,16897151030116780635
+d0fb96fa-ae35-976a-9b73-b2429b84c368,3274589057,15532827096902037816
+e752cc26-a4e4-9330-7ebf-0e53067dad78,1778613289,2321403804590286150
+2a81da1c-bdc1-e1f6-045f-67d22c949ad8,1574701049,17016955773817575918
+a8d19bcb-a7da-dc39-5996-dd1c57dd2164,4222475631,2809713768619861164
+b96c4831-cdf9-a49c-b1da-8f8be005e95b,429613047,17594441217866774434
+71c94ea6-df0a-1ba3-cc30-50f4fd153ac4,1454617467,15934838509715119834
+7793de90-58f2-d7b7-ac0f-efaa0d408f54,3667638947,18293839249158362628
+b6ef05bb-1b6b-ba55-6c5b-961423ea39cc,1792864056,4304418276937855423
+baaddea7-a2a5-7908-4d8d-7abc7f57d2b6,3857610688,2424041405795175668
+dcea4232-f271-426b-6045-25a515db62da,1311174617,1159488308523593328
+caceea47-63b8-4549-c123-30a26a0db6b0,1724084370,5210847744453724553
+b1ca6625-1256-545a-5279-7c3ef8635d04,2582917017,4269872456209584841
+955f85d5-c53e-2765-ce2c-3dbaef8c1be8,1943264628,11043119557882301486
+6fe516ad-2831-03f1-c061-83ff8dd99c21,434344677,7400751377980572605
+b8c168c1-818f-3111-e091-c041def7dd8e,1553912230,5726567141655916038
+b7a89bb3-f56e-6eb8-d2a1-e3e4e1dcf4e1,657903085,3938813166726126684
+8ec407ee-29e4-dd76-5933-310a9c0bbe61,2030780350,582444634059296228
+e2eb3e9c-4e8d-0f7f-9566-5bd3c0fd1225,3463968431,14287049434071151476
+56c7edb9-485a-a299-0c12-7c8005ba50b1,2671619509,16450256886527427377
+3052ec56-09db-61fe-bccb-f6678fbe03ee,59584082,7116111981951204052
+f978e735-3e4a-f189-4b12-9a3a2a57d0e0,867004192,10302111223563198246
+32d56199-edac-7efa-0916-7794c8106a4a,2296721070,1075153523184468920
+639d46b9-7888-f58d-dc27-b4680a3f6480,4190737312,4116084142610093086
+4843bf3a-a6e6-4488-b562-2551e7394c75,3753735256,11936879030324167459
+c6cb14e5-0771-8cfe-bbd9-2cc88cf93772,3475256695,1103124691561592490
+0e54b76d-fa24-4ad6-d259-9c838da68fdf,2751117229,12270037609165117283
+837acd08-9b52-5373-d43d-9fc42064695b,4284791719,1752724905595057052
+b9dae365-7aeb-6adb-9abc-e8daec88f44f,2764407569,5860167177637975693
+364f88f4-fd8a-d6bf-b887-e4882e141014,1809767420,18322788260101470614
+66db1981-039c-4186-7c53-b5fc89b4f729,3789769193,16437703102841285557
+2693229f-0578-e2f4-1603-86fd58f76f6f,3321960067,8192948406325373100
+bbcb61b5-dc5f-7420-2d8a-31a4f275d606,3017412137,6191973594167554326
+1d61c202-2027-1547-cd1c-1e40398000e9,2217632753,16497556436843979967
+debf3a5a-2ac3-0cd3-d777-4e0639a42046,2694859852,10585623382062921175
+e78fd291-ed67-1bf5-7dec-f579dc2b904e,2715913642,4344226507457170445
+f99d07a3-f934-60e6-859b-c081bf4404cd,426946125,17607525982528645587
+995c7c1c-d19c-a8dc-89ec-59aeece7d90a,1855302731,92124850011036829
+b4f42d88-3f59-a62c-2997-6f790e95ccae,181930854,12880334180468880819
+3ee550b9-1792-6ffc-cf0f-55e41f5153d1,3028717692,3781223576388952193
+bd496d2c-e6f6-39e7-c081-4b9e6571f7f0,2831698511,17175561742495113282
+e20dea6c-5358-1550-60f5-fc863cbe0901,1978891245,11715063941702903393
+3fe12c01-2c90-8a27-e4bc-aa94ef2919f6,1389138984,17377588763311104825
+9fe83982-4cb0-cff7-cc0c-c1d59482ca7d,27002085,17175881355425314602
+085dd053-c41f-71bc-c2e1-e978bae03bb5,1044363095,3927127143959626892
+2147ff73-32f2-6fd0-7169-74e5f5961391,1801368895,2710212807869203778
+b64bab7d-1b5a-4cf7-84a3-e5ccbc72820e,2463075098,8781708070343720635
+b734c36e-6352-6bb0-0bb2-d46e9f32dda9,2563759613,7131008522433969562
+6fe52ee5-f69c-8204-0783-11cc7b2eb2bd,4248168097,9254736658704752869
+34b3fcbd-e25d-09fc-da53-3d7ec854d40c,113193440,9282126994666454792
+6f31d27b-1ce5-9f41-af97-6bceb086cd78,1372780447,1996222185082620677
+6a2ffb99-369e-e28f-6111-b8e22fee6107,1303174817,16584219269102622630
+b570ea94-6072-7cfa-bbc5-cc6f076a24d0,3492731299,14712515544930242459
+dac60d80-ad44-33ed-de8b-4a6bccaba12d,4260738568,17671053155387036659
+317c099b-036a-9e5c-6368-0d3e814ed994,1295815139,10344691747790276764
+12f19dae-6e0f-48e1-c719-eb3142b24b1f,604706944,10610773808060177604
+c903746b-be1d-c0d1-0917-1f5bdeb6f52f,441719545,12701342223622944036
+a05d2404-391a-2970-b95a-22cb1622fe06,1822078306,12128137141388087961
+ff12d615-b2c4-03cb-e814-6594eadb0bc8,536861451,3428735708597260974
+5d271d5d-cbf7-89c1-30d8-63ccc6e057e6,248487714,17658674324412441407
+85cb2d85-1a4e-ee77-7513-8a6aefc2d6c8,4265841655,758307084663628184
+3b9b0e58-93f7-1ab4-d3c8-16c5ccbfa900,2255961388,715215185810938416
+a51bf8d8-5780-2ba5-f938-cecd21202ff0,2122705213,10670461743660700041
+9c57b753-9b52-1cbc-2e46-0e79b8477887,2635577858,12821828657228197136
+98da7dad-1fe4-8897-0eef-0ebfc35e5b51,3596603158,17108016033484252725
+6dcc0866-0469-13b1-9142-67f286a46b9f,2439429834,7407627831429064132
+ab2935e1-af91-0cc6-9308-d2faf1dc0328,3888629205,7897129361124844610
+05d519c9-b6be-1777-8e97-0dac3a867d5f,2165097795,4096939913491002865
+4b4188ca-9a6d-0567-1475-979b1eb7603d,3725994086,14360743053413961010
+26786b7d-d895-e656-84e7-9cab25d6a2de,3133885879,2949255103762357912
+1f4c62ac-fa06-3b05-8700-cff77ccd0119,562440974,7436173736368472738
+ddea7069-fd68-e14e-2e0b-57dfbe337f84,2377206465,11469785818411022414
+f05b3dca-42cb-6881-2a96-7fbd878ffd10,1303021401,247918281445735078
+6755d711-8b12-fa5b-6c87-61900ab8cca9,1530859420,7747560923896593526
+6d8f25a3-0c82-d095-a072-f5075b361e31,663030190,9225726379179998213
+ded848ba-c778-45f5-de60-08ac6fa28ea4,2760720673,17554321843168873572
+c3ed8b17-e43b-3d8f-b6aa-997b9a240c34,3076101174,9740969536792040104
+ad716815-2ea2-5484-2f1f-146d8f62402f,2979073973,3395359369497422316
+9a67cda9-f21e-8983-11be-83a54dd91eb3,4031546600,16846027024747028927
+88f6f167-b052-5e2c-c3d1-3472214a06a7,1960005648,929427768391076552
+a4536962-e0b2-84f1-2883-75a5b98a3063,4258276968,13646175339802297243
+7eca9fee-d2a5-b559-a91a-21f1e30cf6d4,3984605603,16849878376414469118
+64b8c446-4dd3-c985-1451-f7c316eac826,510506079,14696639572894866518
+a1c45571-eff8-3066-9b3a-e6845401ba13,1631506249,10745825140423901503
+0bc9875f-fad3-1ea5-ea4b-5f4f1789354c,3278900295,12521905313652226487
+2452039c-dc92-4539-c255-f97b80d2e9bb,3946917383,3665918048816927874
+6b3f4925-eba4-ca66-337a-c405abbdde80,3146871449,3864979579504027501
+ad6a7cd9-98e5-8097-41c7-3abb1974f384,2883116132,1624112861808292395
+26279af8-f870-5ad7-00fe-75a662a984f4,1736717657,6150763928205519853
+18172428-bf17-1097-1697-7904a33f007d,2223356643,16855669098687858663
+f180f7bf-3118-72ea-ad9d-15381588b0ac,3465181806,7659864135985929433
+8dd641d1-16d1-40bd-5f41-f0488e828aa7,2525939324,10633400310299034284
+6049226f-869c-f0cd-5632-ac2e9281c9c8,1232415885,1481403233785494158
+243dd443-fce8-7b62-81e0-0a329b8f4eec,268034793,14973629793987835882
+7e172a57-316c-a530-2133-ce7d4876c3cd,3780161299,8902313283597618209
+5ef7f01e-52a2-fc8f-44a1-ada34a588b35,2926146025,18213883148431890924
+c17bf56e-9f00-6da5-5ac5-dc43d04a0370,1444356799,14425296905003021694
+3c59ffaa-2323-71be-1779-8b57df3cb592,2517030731,18444839803737045052
+4b913f20-7fdb-03a8-d5d6-e7ef09b72082,2751885740,14718005738040569433
+a7d0fb2d-f585-b65b-ff81-cf4b351aa3d4,3540646538,7717681537647869005
+a07db4cb-999f-e2c8-ef0f-203d9361a680,754711392,10284825462040432530
+5dc24fcb-b414-8d73-15ce-9b04ac338d7b,1717784896,897467566026998159
+fda2153f-36e6-3242-2f3a-1ea8f1351b07,3794328499,12118383800209832318
+68414361-7e70-b72d-94f7-364048b55914,1591452909,11939676884041493995
+9bd25fe2-cf83-a558-3ce3-6f98e466d57b,2900333429,8809155178923738116
+51e20e25-8a3a-809c-14f0-1010a20a1fea,1730680510,11622580803457861771
+718c4cc0-be19-fa3e-37b2-3db89c7a9353,3332109410,651351590161714475
+1a80a409-0a4a-4a78-1de5-d272423438a7,3150508793,17737776989843354719
+5063f558-19e2-b8c9-f2fd-c19fb0a47c61,2007128088,14591802027618955826
+81a04545-5b3c-8242-0b37-d18f391fca49,1423063932,3523680251267677415
+825183d2-e4a9-46fb-71fc-a1149c2546c8,1130701293,9026061493654256486
+7d7d8751-a26e-89a7-de61-b30e0d5820bd,3903126983,8815994782343945558
+ba7fb26c-28da-1dc4-af9d-af00ca661d0f,552790043,17631171405873337030
+7c3edffb-01b5-2cb9-ec97-1b2aa31054ad,2564464052,11009047154978493314
+090b5c8e-339a-9761-5ae9-b9c85cb3001d,4192097779,3598960333570466201
+b331f839-93e0-572f-01de-6220b54a6e43,3627130095,3812945169311237061
+8df83999-b3c2-cf28-6daf-3a7904287ec1,2736242061,4831577862802559618
+3ce297ab-17d7-7ec0-aa83-b1b17788bd7c,3325841347,13148282581331947584
+27f07e95-e11f-e7f7-663f-e8a78dc008d2,2383594017,185458951736016384
+7bd2a037-728e-3eaf-34b6-b339f867a4fb,1404903967,5233395903624456113
+ad412c1f-ce1c-7ff1-f0fb-f1c81f6531e3,2278873246,11846655514755595084
+ff2bee63-0c20-72b5-8f6f-126dd8bffeb6,104151317,14066633242977213835
+1ab261ea-56e6-671a-36d0-34a4d859453f,2082706199,4741662414932650918
+16be4d5b-d546-58f8-71b1-92421aa5d26a,2474366043,3842187801868526197
+6b163e1f-a75c-1efe-3483-138fc9a13114,3231402164,17589178631494945568
+53b5047f-99d8-ed2d-41e3-a3fc6f1bccae,2897141883,7790756940665191195
+0415cf24-46fd-4bbf-71a3-6248b7777f24,2792837538,13828260362358098683
+f2d9d755-807e-d182-4414-db9f97c576ca,47146883,10078686178219513700
+c041fa6d-1d5f-66b8-e2a7-dd934c91b46e,2014479631,8779948287300240570
+16fe07e6-79bb-4e54-6638-cb631c46e143,4152935718,12309722491103201273
+55e6da3b-fc83-596c-ba0c-c829c5f64806,3351453740,17322876763060774841
+1e137586-8836-d3b6-a87c-783246251b51,4175879597,11392244551565215726
+c16686af-8033-418f-07c8-d3ba2a75b08e,3688492503,3315767945437323465
+d264bd22-88dd-7190-5535-fa7c2b42fdf1,1742989927,12701180403694993156
+345f4f9d-11d8-1947-f0b2-84cb0307800e,461638703,11475364760656037624
+c33921cb-43a0-0503-f098-acb627d21f59,674543348,494390002695177226
+807f3a00-12d0-e1a6-0710-3a5699fcf735,2654645229,17525653672079138760
+f60d8574-f18f-ed89-82f9-8e9a2a79a6af,3633543714,2452408650242612396
+89b15857-cdfb-8ef2-89c5-1c6ba74816ff,2751123911,17872700609764848937
+b76fc399-23b8-5910-33c9-9a3c444ec4bf,1029343822,6137612412062255705
+91c9ff30-c448-f647-6a80-254350052ee5,1939138531,14194249270627797515
+b75aee0d-514a-e271-1250-11b68b74b849,2556816334,6081853488718040819
+53b94799-5390-6410-c98b-7425550d3bad,3796876849,4538225656534568106
+ec454458-5e48-85b4-e2b7-fb2b1710ec65,2941135601,17150435461879876862
+8719b287-3144-525b-ac12-70d32bb4c6b5,128159888,15307239577231421718
+ee902fca-7fd4-665a-b9f2-5a4dfeca970b,853518959,15587136570550824698
+434f2619-1671-91c6-c3f3-9d7405d56905,793259242,210651191754893253
+8c9c3832-ff73-5f9f-84c5-cc61646489e8,561062434,16661117833052505426
+7d095029-eb05-1372-f4f9-f7cd8fbfd563,4212921196,14046332171319643954
+938c51fe-8ac7-f6b6-7c6b-8bc9a949a9d0,2644971458,16242354979387424089
+9d676219-25ae-802e-f272-11f66f5f4f7e,1496623704,15864108626347166326
+ab936f2d-66e4-c6ae-4f86-a39226cfd0c3,3365632480,7016141460774973459
+bed745b0-1190-9053-a919-cd4e770b7238,1351205927,8156365743932044611
+9d708385-aa36-ae38-c85f-cc278c8c3a3b,38234400,11296470465881499944
+a47650a6-ac23-524d-52c4-bbef2f185025,2856639120,15177100526981825969
+e83e50a2-e1bf-2f83-5b55-32292ab96de0,67279698,15889099960885588483
+b56db84d-0ef2-37cb-569a-21427b929801,2084458649,1526343717833237634
+3f27dde1-4caa-a36d-13fc-d95660c7c168,4064357713,9923527330133130699
+8c56ca7f-4cc9-3edc-0210-efdb0bcb065b,1795912292,10674517967742629817
+7748c4ff-5a1b-0409-9240-60729db36947,1834067933,12178756987676640878
+73482f58-885e-0bbd-f174-ce0badde2bbb,2303375423,15532649907900157533
+cf16b51c-ad37-03bc-196d-5edf58eac084,1594277737,4219718419767599666
+14903540-6962-00e4-b756-ddde158640e3,283547224,11765751284427979583
+a2c12c5a-0ab4-3ad4-a91b-ed7e53b4a0da,2197382061,17178957418350688808
+aead3796-ec49-b984-97d2-47d96ef71e68,1615005006,3012894605961949653
+fb5a6fc2-21fe-55d4-7f85-ff3af22fc306,3853663628,4828047579926578902
+21f14ae6-1bc0-297e-0d0f-8ccb2964dc8f,2067623372,6575956845221296259
+e562029c-821b-c50e-c557-ef30f6e9f454,196520825,1436956977025400467
+74517845-feb1-59c5-26c4-ee711fb6e249,3993993168,3277558259578779885
+375388df-5946-dd2e-5f8d-84374d40b763,731991081,6453111612305174875
+3d5dd876-d603-4cb5-7ec2-e97fcf39795f,3157944220,9903037157466812810
+b77871ae-0ffa-131b-08e4-66b6fe66b1a4,339925806,13577424050607981343
+2f840d6a-af23-9a3a-dfb5-de9e8d031c3e,3235102794,4479687509739516726
+ca36d84c-4502-04ae-97d6-4acf56c7c238,894879,13844371317425136930
+a2368132-98df-305d-2c8a-87e072005ed1,2852226339,1604415105064228288
+669f19ab-a203-66f7-6c04-c856ac6772b0,2695528396,6503241184751969458
+0b05e567-ada6-e545-5fd3-019033005f20,1730678038,10364340999709020065
+ebb37409-d753-f340-1ef1-cfce932a4f4f,1814683200,3898279526578838381
+42ffc142-dfca-3f4e-7c58-2022cf07045a,3834541931,3599088526641034804
+ce8c1b96-3595-686a-317c-c76ebb5b7e29,4157812194,11336470529527657195
+8205c17c-287b-4b62-1a8f-65f8f9d2d78b,3916513257,17813349973840347226
+760fc4c6-3709-2352-926d-31da134f1c7a,2150066047,14247804907554563447
+4cd59da8-05a2-11a7-ff94-9a4348f69107,216542493,2511701881459870656
+40e9e3f1-de84-bfd7-7b43-399c331b2b94,1343486077,7756951570526170853
+d7f5d627-8012-353c-0f57-60dfdfd26094,3715962926,17996540832990143477
+f6323c33-bd1f-3f50-bd0c-56a6d3b23347,1422102132,10361257707133012183
+1707a88d-7cee-29ba-fcd9-083714b692ba,1007516336,10907167516405769728
+a8563f2b-f8f2-1d50-b1cc-cfb0d392c706,255165887,11467984089520883756
+87a091c5-3d94-8161-1369-a2b1a9e67bbd,4098415357,11790705437913508344
+f14a0362-819d-a248-59e8-15f8daa6a44d,1828843542,348949615039020382
+ef05cd83-d469-475a-2c9f-88d86bc87e88,1937255067,13362160410675565276
+0a5a2165-0571-6059-72c5-a733f3c18b81,3810210311,904085238098629145
+cb47bd36-d0f0-8946-5b18-47f237422e2d,1448401359,8124701030591484236
+9349dead-1fd7-10d8-5e65-fadc458bfa8a,2824131442,6904438070957004992
+9eeffeb6-fd94-fdc1-4a1f-2dcf0b65ffcc,2164918375,6970221117131015820
+8c129569-0ae8-6ea8-40aa-d391d5ed583e,1799807312,15204086354692989733
+05408e90-935d-90f6-d981-2872ad1f8f83,1762137166,17661435151415739420
+628639b8-d066-9b13-84e1-91bda1454800,1546306282,12036270240299764348
+3ec04755-011b-5457-5645-5b0533d89cb5,1906228557,16661562888770228759
+836e2549-bd47-edf9-406d-4b5549e2e528,3436633166,2681047751808181141
+3c343e93-72e2-f455-908f-3c3c80f9ac53,156794846,12320407434587285696
+aef9110e-f95f-acf2-4156-2b88935b169c,2030741805,2759074252869963028
+aa1f31e1-1a31-347f-e005-f9ed303e773c,234631162,14833723216408290483
+44d9d629-8fca-07d2-dac8-7e8929082d83,3984719835,15907707258767778106
+41dba532-7be6-6eef-9166-01295d75813c,2656130628,1007151812345668633
+bf1f4855-0ec7-c00a-2b48-8d4040cb8922,564232849,5709026849987529616
+c4a49318-9661-61ff-9760-1623f7fc8862,1459470274,16908846135215142985
+a0bdee21-ceee-2f94-4b47-f41da4f48766,3539260253,11571961648253063339
+dbfc4c84-55dc-7ad3-e84e-a31686957bfc,2039508691,7144127000759050150
+3d1ff404-8293-aa9a-3021-be826c273126,2241097412,12129073074931231512
+bcdd7eb0-542e-fa29-9635-dee86a4ace6d,3415224897,15269981082996227392
+56ca7274-3a40-56a5-9ffa-6ca572f3c7b8,405054263,7343322451333653479
+91e4617c-930a-5722-2349-c5d7d74fcd23,4182894093,4682154218220800067
+d3cf9dc3-60da-a7f5-7c2f-2b75f98e71bd,953451157,14377287424193762238
+70aab579-8fe8-c148-07d5-ac720a1a1c62,3518057633,15463182782277488885
+a36cd483-e72a-f840-b0bf-fdb0efda87da,477502677,15318334920388418528
+de4114ce-026e-c47d-1180-a868fd8dfc94,1473771248,17251320099745744047
+3992338d-860a-b027-e802-d37a453cd4e5,475571062,11898620503357110598
+c8201256-a6ec-f991-70aa-581190b17d6d,3821280701,5464578555256924289
+288ae8bc-24eb-8d72-ead4-92f100f667cf,2633074121,3184697193665739404
+3ae76a2d-226b-7dbd-8757-c4d681aa3e38,2899326734,6780235884429455518
+0e2b6e3a-ec95-0f6f-a999-4d207f6e6134,3510059313,12039984796921655682
+f91f0cbc-2d80-b344-3e24-1569a225fd7c,791642518,14622018755078178999
+1d541752-e440-0f6f-ee3c-b7e1530d900e,3176920636,3805474944915087560
+0d451549-f0c7-dc93-ba23-6860af0b33f5,3414759034,6762977959644572224
+d9a6ec7a-9f12-51da-8474-28c53f82f94a,3432232254,7312654477337320394
+814d130f-9102-a6d7-a86e-001611cd53db,1205295602,1088785365446956302
+c58ac93a-98b8-774d-a60f-01350f81af79,434800254,10155011454034900430
+c91ec141-10f5-76a3-0767-613392bc3927,3745076496,15039069060328492917
+1f37bf80-b6c4-3471-3ba2-e915812dc765,1368565327,9648524876163688022
+3cf75b3b-dc59-d787-bf0a-6222c431c5a2,2097167974,229713571977292864
+1f067364-4823-9eda-761e-8ef51413b261,3594393109,17642042628638729403
+f8916f63-3b00-f127-dcb4-0e5b8832cd38,2455341263,2671823140511529575
+c278d38d-0d9d-a212-0539-2aa21a82020c,1524967929,13119299175219925859
+b2fc4a67-e400-ad6b-3e14-afd9d69465b8,2120846385,5374476673951500348
+a3c2612b-6b83-b680-41b5-fef1b960258d,1839367613,7352166954707791723
+fc31e9b4-09d8-297d-e7e5-bccfd6020534,3345393217,3359166341668812631
+0157ba0c-844c-8dc3-5166-529c5e7f679d,1105240264,15136381239894655474
+11403273-9d94-8ec4-c4e0-740539b3cd17,387278652,6400379372270188278
+0593073b-9b35-dd54-af34-79afecb49fd5,1647740070,10407773856182088418
+02c9ca88-6939-0e02-6611-19cb74d66a13,4038369364,2660998812960569294
+139e1305-5338-3c8b-1391-a471a56c7c53,849065093,17011423943330141830
+c1912b0b-fe83-b4b3-39a6-84816b69d58c,426489658,2630813823357524745
+4e9ef657-3da1-9bbf-208d-8c794b8adf5c,3537339592,5812424703245876001
+3d4d4acb-f5b0-6ab9-5854-a0dac10fc81f,486306644,16787323436698546333
+92ecdc9a-8692-8168-8d58-7dbc25e8930e,1103570756,14388851928187201779
+55bdfc0c-089a-ea8f-e4fa-9695e97ed77d,516150704,12469176589331232405
+4fe36393-536a-436f-f219-24c89b79b988,3442333106,1614743149410388158
+49f82d95-4189-d7cf-2b13-3c475210200e,1153558300,15560966587421970286
+c4b5eaf4-dde6-141d-b002-d7516875b776,3623321954,14680428707926392508
+2535d258-54d2-688b-e4a5-9ac971c9125d,1494605108,12088964472181003511
+cf8e6753-ad45-75fb-74ad-e64882622997,849817531,10087859871514927850
+7e39f8e0-a05c-c2ee-a4a3-ffa7b0098689,1265740143,7382744584866105667
+173508d8-57db-cf47-6418-d83be1394cd7,3985058510,16596006597209193107
+646e49ca-1759-4f5a-f48e-4ab0b9b03b20,22970410,16938660751554171928
+6f5608ae-68da-0b13-be73-00385d59ba6d,1473741009,9705751743679669302
+e36f0acf-5c55-ecc7-5190-b586e3be1814,1648700665,6304960827978764051
+77a3cf93-7c2f-fc81-a736-164659cc5eaf,3224752496,828212955998579825
+db5a1b0b-724c-9d95-ac45-12c548fd641e,3811009582,10976380595366046356
+671c4953-3343-6efb-29c7-0bcb46ada9b9,706069160,14413578248958403488
+8850a011-95f7-c275-8aea-15f7d91f0fcf,198568227,331336279641113484
+30c34477-70e9-052e-772f-6c53d4f3306a,3197106995,7042607577317357734
+79e9ed6e-f22f-903c-0be1-edae04988d15,1130543847,1951807778577800005
+7b60c232-86d1-0745-2a26-b9e14c551504,2207105951,16844544518380806174
+c27749b8-2b3a-7f92-e5cd-833c01ce728e,4248111840,15809461499534568579
+bb0331f7-6aaf-820b-f1a8-a2afa786493e,4371470,10228151503354662340
+6e275125-61bc-fe44-e322-ac70aa0140d7,3250785295,14933003971734141582
+679ee8df-9a21-c651-9971-f4c8cd43fc57,2766990389,6850769340695499728
+f7094760-359e-dd95-c30a-189672d8f1a7,1396084910,16372660523630217174
+6584dd61-9502-8890-e9bf-f42c97c9667c,283874336,696295215632970418
+df33184f-657f-5f2f-4f8e-14012f183e95,4191318139,17722466385160068790
+88bb873d-381d-95c9-4c4e-178206496d43,1916088819,6431335627023599187
+e6f9d075-e10a-20c9-91c0-60647a6817f8,134180186,8959274912732850014
+e51131a1-ac58-0207-f54a-cadc29475a9e,2617516005,3016584300303960091
+1aa7e524-1db5-177b-db72-7589ebf2bdd0,1650337405,13814560657219673868
+2589a544-ff97-a665-e00e-9aae97f0c15a,3217892568,8713235319407239033
+a7eee4ba-82db-5f45-bca0-522da6c3f2fa,3344522739,1344798956131850164
+94cbe1d7-cfe8-4fd7-2e87-a839ac77ce87,3303430057,9791959351761790976
+d7cdc624-688a-7910-74bd-825e96dbd918,306486078,10734102992779883462
+08fd1c82-3b73-f461-7c0a-acb3407244b2,910983841,10098138610395323335
+6b3affec-f10f-a9d3-7948-cedfcd771415,3713974418,1382551180078975044
+6c259ce1-08b5-43b5-5907-8b6a2b0ffb8a,1391401618,14196465593469382004
+50d4866d-5a3d-44b5-86d8-a27091468e72,2326755396,11653960767920863171
+f71b52fc-8ff5-9a50-67b5-1dcc09259dff,2731927276,10685319996398173087
+99626bd4-cda7-d2ba-5e63-e312ce67b651,478486695,4691098855281234112
+96a82576-5084-48bb-ee4d-e77bcab80198,292039304,1823446742526574138
+426bceee-5f3c-126b-92a7-c4e39ead901d,3812680298,10960289082815062893
+17fd084a-19db-3a79-0575-ef50d29b5268,3866541872,8794256023293679227
+e016475f-4d02-bb31-33e3-8b8609147300,322462192,7367448275724998015
+1f2e9866-ac59-7d3f-06e1-908d8fc47c95,3661103477,17875021616557919732
+80f2a2fd-a3fd-47e2-0fdc-ed6afca0a5e8,1805571899,11818592197035199705
+9b3745ee-42c5-3c59-9043-9d1318a263e7,9837185,15124418823568971840
+3a42b5a1-d275-0533-4cf9-6058850c65d2,2244649924,14072707152525164340
+6f64b28c-a94c-0972-b773-f42e72ce48df,2945512588,4328065168116375488
+b684af9c-857a-f75a-7a9b-2a6b698046b8,4125183568,7785898910738606633
+e924e8aa-dbbd-37e8-009e-1eceedfb75c8,2525374612,16577037403869671727
+57e9e11d-9525-7df9-4214-28e8cd2e874e,2869030404,9602829105377975901
+d82a7ce0-bbb4-b3bc-394e-c187261e69e2,300233900,9756845049921133574
+99a7d17d-6d5c-c6b3-bd44-05df47078fcf,948245763,10982666911686587901
+698cdc3c-4765-b47c-4226-c4c1a77c7ca0,4261518284,16352358296739853532
+7ccad9ce-d9f4-de9b-bba5-72c203e9fa7e,2155057832,11425724860564825245
+47f3e975-8814-ea37-6299-5d569d2e277f,1087416463,6441730033039260288
+794376e1-29f1-104d-4df4-fd0903aa77c7,1268720537,8956282835592891740
+4d1c9e10-515d-a054-b980-62b04a5a7866,3190423774,6509437076988784304
+d7d9fce6-99a8-d1b2-f3f0-4f941ec29203,2440286352,2165052597729336452
+1819214d-d558-1b2b-eade-8b8fbb89ba64,2844503650,12068276874738797847
+67af052c-b8a5-c243-a7fc-0b83c40a8efd,282199600,8552839810100210706
+5ee176bd-fdc4-cd09-f701-5e8a223174fd,3241587342,9954546942562060035
+6a6cd1b7-3e4b-7287-d778-9a9bf784c3c9,2078988196,847309741349589733
+bc8396ca-1456-f0ac-41a0-9677497f5fbe,2052835324,3553284864545486758
+8366891b-8afc-95d6-027f-5b65dfea09ff,675213402,4986167769281790067
+bdb87870-8d8e-475d-52eb-a7e621e85531,1008769978,17057254040652719867
+3b1c48a7-c03e-5c53-a4e8-993771696787,1821804011,3691292051772046493
+e535541a-a937-f37b-c7d6-adb19e80016f,2906201077,915369442973686834
+68e3eab9-2095-f101-f48c-06e70432149b,164188686,11271344115065190537
+4e498487-31bf-36f3-0e64-ce9ffcee826f,3107385295,15549587948061810414
+7b5fa1b2-bc14-6c00-59c6-2d36891ffc52,2736120663,3452217722470132134
+9bf5a5c3-056a-b31a-99b6-c4883ce27289,586913342,12709188795294970729
+bc884111-095e-99cb-bfac-a48293386278,2788045466,17589769912223044224
+7c40b52d-57d0-e1f2-e192-c0d9e5b78406,2524848953,11952962457833678891
+a95927fd-b448-1399-34a1-c50ac0cb1170,2983871404,11889131285610231118
+f1a05989-3d5a-30de-72d7-7a621b7936c0,2840403955,12961369779940012277
+749c45c8-e7cf-4c8b-be05-8068562fdad3,516338933,17265141019391168767
+e2b99596-f334-331c-01e3-e16c6bffd514,2977348668,7457334168622621745
+9631c1ec-cd54-da32-f686-8c799c1355b1,2354286681,15454576682436606984
+c7635401-a4ba-64da-34dc-d9afd388c2cc,1028416978,3425094202023787794
+ab7d3c17-addb-f9b1-d184-5c243e14c2f3,2602052735,9032031011558754725
+56ba4682-67fe-9ced-4b41-3ac4746c3161,4120793387,8213783079676560441
+decfa7c1-4c46-5d95-7a25-dff4c7741f9d,3073762914,14450949497448394549
+2e4b89cb-bc85-69f1-1d8f-d0dd73d91a61,2243594864,11561338676716974875
+f15950f8-346b-f107-5aee-5748edb8a43d,2527824954,9297760628519054253
+4cf5cad9-9137-dc9d-2cb4-9a1773a38007,2694463812,1699251075501294640
+5604b490-7d01-132a-b97b-13fed2b73d27,2257632791,12594882124266953216
+0d73f0ad-868d-2b2c-4fb5-ad0193631e74,3038436929,14896209954877983864
+30595b1c-b1b5-b5c2-bf5a-1e512b9a09d2,3570323150,5663775988208534417
+4e45ccb8-8f24-d33d-5215-58964a338401,2966625652,11340273040975163064
+d3c67fa9-d35a-6dde-f506-321080f87ded,3652290307,1798004253733701420
+d9239f48-53f0-5f2e-a2f6-d53069380582,3351411954,17318396925312554686
+0b493b75-c929-e7a4-5f1d-029ff9e263da,3765036788,10949966449694354322
+83a48a33-dbe8-3bef-a326-e3f952ed6c40,1704909825,8558930108822259196
+68570147-9ad4-6fa3-78ac-26246c8a48ac,168336798,16642369093904106811
+1c586cc3-667d-a995-4fdf-15daaca6219c,2950741032,15535150903973771538
+2bbb0b3a-4234-fd0a-1fa6-456177d94187,928569722,81899079306315260
+985de098-81c1-fe1d-8683-d6d0db3e1bf4,382948409,16459327127215400099
+3e589787-3656-5163-f1ce-9766beee578c,2567677228,9779874685376849732
+b4100207-7db3-c294-89f7-46d9e51fcba5,3386694002,15322520027410724112
+2a6c0e84-7274-0c03-be6b-4517ab85e1ae,2192604213,16830749092013781262
+57051ffc-11ed-aa70-b8e9-a977fc8b5e8a,1717157788,15602691830255171999
+922e7d42-4fe1-f5d0-49fd-9e0a4abb5315,3510054643,17737970570480308182
+aee8c041-d50c-9f9d-6f46-36aa0a9623fd,4231433846,2496030274515005800
+85f9053f-e3a4-95e3-7bad-3355332a3906,364357570,12710800930542173590
+66cc2cb0-d2ec-21ff-af55-e8dff4db8b4d,542829137,3972706512667569022
+eaafbb1d-7c9e-5b78-cffe-60b02efe647e,2567675711,13447854078477056345
+164f6932-765e-b1a7-0577-17bdeda2507c,1547141898,15321881563910800671
+55e9bd7e-1e48-8c11-9010-8cb7de218d5a,3098567012,4220008434125404340
+b9f0e01d-4b55-2df6-a1f1-c9c89ee0014b,1000168676,12662443110538636364
+a38e3efe-44bf-3eac-56f0-6a8d7d34bda4,876029904,15360338956192312437
+530a2984-c194-864c-0338-038519594ea5,3289998877,4039222950897279007
+0af0e54c-7ce8-472a-5429-5fff4b7add1b,745328978,17829347972007520112
+24335001-841b-5d93-ff4e-13567f8f5da2,3102411339,11159212544554933366
+a8785024-f172-9839-9156-e99cd01f977e,1892942521,14748330570162719611
+603c9edd-d053-a69b-af1d-b4d43facb2ed,2559317754,18326660438927614680
+265b528d-2574-8698-8b8c-ae73697787ae,3936815105,9264946717117553673
+522adacc-f795-b1c6-bf0b-56b75a5bc27e,2378068397,2173626993136673135
+e09cae92-715c-3a3e-ee5c-dea7591a0b9f,1836182463,6570961313636667733
+993e687f-d478-d936-6cb1-36354292b36b,3622000312,664465796642156422
+52a56063-1c0e-6c8e-84d9-5efcf7f81c30,1614754947,14270087845249441032
+3824de94-97fa-ce3d-4deb-170f286af512,3402577205,4076202283039790489
+8ada86fa-3f23-d334-e42e-74bdef9d20b3,958336700,10430865257602708037
+517444d5-d842-ca98-f06d-2f07c9df00d5,4194848866,15778767895588258478
+7b7c3797-eb59-188e-0e87-489c7a16f12d,3913647672,13744009838065124229
+be3e77f3-000a-92dc-9561-9e48b655d30a,2310571096,14320309917696242031
+38b3b8db-4dcf-fd1f-398e-336af35dd187,3554322594,2922302087141657462
+5685265f-f059-44f5-c1c0-03519b5cb34c,681355209,7083489763712296923
+449498fa-b07f-5e0b-6712-945d7ef8b695,927441175,6401553723116210093
+3b510cd2-0564-3236-93c4-fef406233913,2058712208,8032287655418451949
+b5b23b5e-d656-22bc-285f-e477f9f33aec,1383594011,9225661198517109450
+06e76679-ce52-5b1b-a489-6aca47b4741f,1134862005,2036228183433932476
+b323db7d-b7e9-5c32-dde4-c41d220fac6e,100391995,407727616368260166
+3d559ec3-4d29-849e-fba6-f26138f2cb13,2050201988,16319931415697278834
+86630f45-6361-ac3c-04bd-5612999ade67,1390028771,584359881715288188
+5c52a44c-6e11-060f-b737-a1d832c2553d,2529135965,5485721219757872235
+884b09c9-12da-bc23-6ba3-50af96752d89,2886114804,6885018630336600595
+0db335f9-da4d-764e-bf13-d0de4d7beedd,2459024138,10285136206056913818
+78b237ab-5ed6-cf0e-1854-9c0a01e03427,2393168482,7357758765108900705
+d152d617-8b09-e9ca-ac5c-63029a5a4b77,1334541957,10902649398774306423
+ca62fd66-1b13-0e60-f056-2c54c666223b,568329118,6305397913587830587
+e4aa7d2d-2d1d-fdbd-f40e-2f73c89143ff,1211246866,11549585027995901191
+1737f105-4fac-e71e-92c0-4cb94b586aaf,1179959807,18251886048598741009
+3bda41d4-4b0b-1958-c82b-1257b14086bc,1171561652,7294421888182514146
+14f79e8b-ea2c-df14-bdf4-600b9052ff43,3326706894,10398961378011337941
+4cb59529-820e-0c00-ec33-6e86d83780a5,2600302984,17485973134583796640
+a6698636-f45d-689a-0f53-51e8bb0b78fe,1394458833,7598502421903062000
+ea65c0d0-b1fb-f6b8-6e06-0323988af672,3077895701,16210569678373699065
+8c3285d6-3eba-90d6-1aca-10cea7c9bd54,1185311304,17592685420042648114
+c051a4d1-8b03-dc2b-d2e3-afc25e43e2e0,1917880439,13000950092858736715
+8509778c-60ab-403f-a7db-e78ed7dab027,3378207093,12956144952217580858
+6fa52b4c-4a1d-1444-aa4b-a228251e7e06,3040912266,18276186786200817470
+45b78d1b-91c1-1df0-3e6d-1c52930c02e3,4121070578,4833043554921549005
+32bd2304-3352-63e4-2b11-584ef5fc7144,767492664,2486243346530162270
+e0b61841-8de2-6976-0ff0-684ee105e6ec,1031971948,16676293397817362657
+9732cb4e-6512-babf-7ffb-a2421de13a47,2095036400,5105638698961025879
+b592f67d-9ceb-bd27-ba53-70512b39427a,3751977407,10851225349419767782
+16268e03-2cce-174a-a134-368d9244c31a,231192583,9289137798437398512
+3a00a73b-45b8-7ad9-7769-94833c3980b0,1839823094,16897792897288111695
+3ebd4832-874f-b380-cb22-a516d88bdabc,2551911931,2503402813768087099
+2ada1917-8992-77aa-5b0f-2f0f1e0be015,290329232,12539146585678865432
+a5d9b532-7050-f511-35f2-cb7c548b3ec0,229392103,12935433254593954466
+7825867d-333c-7b19-9a24-6c62f868a340,1715053966,15923414912837084250
+efbb8b52-aee0-fc18-2e7b-db35c800d950,2840716138,8190480389082299618
+ed3ed0fd-b20b-a664-ef40-e1f2ca5ee17d,3305221210,10994117254781632898
+479ca1ed-d91f-e163-c4b0-190a680430ff,3950879769,8124667217926300171
+3b8fd855-f6e4-78d8-1907-53db4060dfe9,1035595823,8493003491680640625
+3c735bf2-3679-e44a-5a8c-c9a77c8840c6,2756521118,14649073705792100086
+97e3f89e-0e92-7156-cc06-a9588f530712,3498849777,4973472366667599648
+6446828b-55a3-3d3b-32ef-f93e3eee8b0f,3609336509,8406677864989291764
+ee2a67cb-5c21-da23-1bba-443ffbaa6e67,2930199346,1677209256299078468
+6bea06b6-2ac7-d8ad-01ae-23a8b4d88c34,2249517923,11938092217898876125
+e0e2a41f-db45-0481-38d7-47f596a9279d,3536836165,14165942258775501223
+6c98955a-436b-5112-3566-90a9d12af82f,3870355010,8298872953314342330
+1a365349-e6d0-cb5b-6671-7244834c40ee,4071505428,6290456378587312282
+6d2fc9f3-0a95-0bf4-b0d6-435bf3a5d4b1,915257911,16659326746586913460
+0a663da3-f1c5-63f7-87b4-4a7caee474ee,1619195097,13270332896675411559
+f1b56be4-7bcf-eef3-1cf0-f58dac73e0b8,1427449510,10033105226400814828
+dba3306f-768e-b368-2a12-a3ff207a7c5a,342231121,768300628584965744
+dca255fc-b656-cfba-1e83-b52e8cd891c9,3330578026,5519901023050473142
+b78af927-45f9-56a7-9bde-e67edc33fb4f,1799130816,2714070181131868456
+0d780d80-79f5-d089-443d-e3afd91776fe,2272662365,9149399860539873537
+731c51a4-f852-767d-04f5-7fc109dcd240,801509136,10885357523973941716
+7c132645-39cd-1b8d-8441-b07f2bfa1e0c,794003717,17345767652210598746
+3f0de482-1b36-7ad9-b1e3-7d00c5f829a9,1074955337,9312770995434834467
+8ed291d9-c7ab-8445-7542-a2b2aea4c892,1720542135,11585233105392332080
+d4f9e36f-d9d4-b18b-2823-878ea36e170c,3018204956,771909478004598723
+d02398f9-f195-44c0-3748-9a2a658d9e33,966074909,619343792892837060
+b8beedc7-b91d-5f39-97bd-d566682d47e8,2438999180,4489665378928315484
+8dd4106e-1c51-51c4-5e79-b9c8de664f8b,3591226425,2469893548719858653
+68ac117f-1354-60eb-b69c-65c2ec6c4ed3,1146220745,13717681568899916697
+a44bc84d-230c-df82-23d1-ef0b524f87f0,2081668435,14158863078239199375
+60df3ecc-d60c-f004-16a3-40431004a24d,407159048,9348738166597270178
+264d32ac-0001-4387-e9e3-d439b154d2d9,3250683394,1640720956587499446
+a4bfe4af-0a34-9b28-7e26-9fbf2a60f88a,4046996884,102433305365813247
+02cc6e14-34cb-9d4e-71ba-6ade3ebc9a3c,4269358275,9283517754720760368
+c05d9a74-9da9-4af1-506c-c0af84672069,3736165996,11728881218910309901
+0020d800-753e-5a34-0578-fd8d0f92369d,2806293523,287930592958093385
+05d04a6d-ef98-64c9-9f44-55e2b00d6979,2785001115,18199570303012248295
+536e0aae-a9b7-54f9-6e7e-4412d424abb3,2371520429,5160926742636566619
+5bed2af0-3bcd-699b-2abd-c7ba9c8a20eb,684533057,18115325675646955008
+44cd6954-8d0e-73eb-5c97-ec23b404a6a0,4284805939,1259934721129533943
+296c0594-bbff-f7c3-f123-f6c76fb0c8ff,4107035160,14600991739470600252
+c9e3220a-556b-6934-0421-b46418828441,1750139646,13525520150270061585
+ed759d78-3c94-9899-8aa7-87a7fa761072,328818422,6462929968684063524
+627abe02-2fca-f6f1-c4e4-4ae1c684dd80,4019256965,15923310217968443916
+7becc904-3080-6bd0-da99-bf3c6dfdece6,4104241443,2071590680718038090
+f2771045-7fc6-386f-89b6-ffa570f86bca,2503065687,2494767903895697196
+9412bd94-feec-56f9-3cde-5f9e4946260f,3194440725,2680181095369360221
+64abc139-7773-2f00-e508-2b2ccbe559e7,1047581475,10031298253863103911
+fe08aff2-448d-0149-431b-ad0ed9064acb,819804266,1369070891180442039
+5f2789ce-f8b2-6078-1dbd-1ec2065eb602,2308622171,8092784672086326063
+772704ad-b6b8-cbe0-4950-42434c2b33da,3404904431,12207406126091306641
+047ec549-632c-b2a2-b5e5-20e58f170942,1355006712,2887934492284642644
+4fff4a68-1773-abc7-6be7-969a252c1b60,41720204,4328454810432742721
+f41865e4-9825-089e-fdef-2d61d0f592f5,1105771086,2736220260876926629
+cb3784d5-a541-5b5f-2535-e591bf3e2cf2,3799129586,591499566104243798
+80bee035-662d-dcdd-689a-b33c64531fb9,1999990436,3348153148157940610
+4cb10c4c-cb57-1a21-c746-be7778792ada,2265854462,12138633574439102672
+85baea3a-5c99-ca33-7d21-a1c5921fe26c,1294445994,3658428554150720920
+f3c2958b-b8fb-49fc-ffb7-ccc93570ffff,89665202,4818665188352084802
+cf6cdd2d-eeff-2b60-c2f9-2adcaec2e075,54119624,9327819364841654082
+9d15a092-22b3-b254-13f0-134eb66636b0,1615800360,16571706475731628248
+f798c7fe-0639-ade8-d015-097d4b8e2c92,3770369628,10871769896756816861
+5d9010dd-6a51-a041-0f5f-ffb6c7dd0e5b,1696038212,6514128868392383037
+591d757c-e1cd-90c3-1a02-668b5ba07033,2441368695,2320899630695912402
+ef98a1e2-e6ce-6980-8169-6794a9484606,2339513336,7200708767072585672
+996d22f8-7cd9-a569-3c07-44421a9a04e3,805242662,1416004859454091067
+99a9f57a-bad9-9e24-7683-630d6729c95e,1256274826,9734348712279457647
+7b8dfb74-5c9b-fcf7-2b74-87bdd7b6adae,2303545214,17337066603055815410
+a6f53e9a-b831-1b6e-7360-939a65b74e7b,219682709,13066724105049365081
+6778caac-0a69-0e6f-adb3-c54b2fd7c284,3086091690,14931927873260329276
+5c4c08b6-bba7-1cb6-1d67-27989dd2be16,749933753,666804735658809979
+36cdbafc-35af-410e-4393-54f27d53f970,2217414197,6459442103348764179
+1f205aad-feca-8cbd-98b0-2552e4e5aee5,2802977783,3590280862932544055
+502d0dde-6620-6fde-7abb-64ca0310dee5,1725259793,10504598544402675897
+3bd75de5-f842-aea9-9233-191b8ec0068c,3544274980,17685682404282265349
+9cd3558b-7d98-71d9-2a44-4cfd3762106c,3016715315,16869461184909949213
+02623afd-5b4f-5eca-7169-611f74b7340b,2727408360,3019734076193700775
+e141e162-8541-62e4-e9aa-52acf9c10f6b,1818307458,14119957634530680770
+23f4a606-aa6f-d3d8-71d3-83a8ade43fcb,158146341,12807046910330099001
+958c1493-f587-ec71-c665-c9c8bc8b46d5,2140650577,17761337875878029494
+8c8b1761-83b5-bc3e-8bf5-f01fe1a06006,1036811343,15902933092139639624
+9d1f1895-fcb5-ec96-425a-8076b092a9b1,3739088243,7482541515853447082
+d6970e4e-c9ce-d532-cd03-fc8194a9f700,3418788438,11292718825103988436
+60ff4fa9-e2b4-50b3-dfb2-6a94fd228a61,1004002632,17865603740495168763
+2d2f5739-2951-7586-c306-b3fd677687ee,857672366,4097732967227150685
+3551e819-fa1f-c144-286b-94746b313de0,2199704790,15748895263153206444
+cec37910-64c0-72d7-2e60-ffeb4cc00221,1202951803,5045202580513855996
+544340b1-f2fe-ed9a-4157-9225013ce1c6,853393095,3552545929966124834
+6d8ea95d-0a2c-b751-124a-f6998c4e7065,1633323043,10847023354497695390
+26ec290b-7c16-4d73-5994-946111a7fdbe,3688745808,3738856506306384496
+75e2804b-1836-3751-2dcb-d6dcda337436,2242294013,7910832680204702053
+87a3973a-0c1c-92c0-95e6-a21e188bc6f9,3816795941,4900994821770685358
+31c44652-14bf-2ec6-dde8-f2c9f0ccae12,4149050618,3285134153659579563
+afe16806-4e52-0c04-e4b8-449a779fe25d,3094571387,9019551613277266623
+4b740f4e-8a5d-857f-3b61-930b2877481c,1950702946,8783002502711518278
+120dea69-87e7-8e42-5821-0ca7a8fe7bfb,3018402981,9797054454384428225
+a9f53f21-bac0-b798-8186-03e37b69e1d9,1084431300,811178370906327731
+d8d9b162-f129-ed9b-f717-842bded8e9dc,2389303633,11333862701817605098
+ac1645af-3410-bfa2-f2d7-0e6604c26ebd,4070667918,16855466163238350297
+0182b801-3529-8432-d562-9ee6825e6bef,2718794696,1607243750365560938
+d530be7d-f0e3-5047-2120-be9922f72b70,135981584,3759274058664641085
+307cc296-5b51-bbf5-2416-bd6c7dff7c9b,2229452129,11527051785538650102
+3d5fcffd-656f-43f9-c51e-412d4ffdaaf1,3879349901,17420149193996194603
+ca0f972b-9711-1889-3177-f9bd98a4901a,304362032,3940816595930799327
+54beb42d-5fbf-0868-7430-56e6d1e2ffca,1562720356,15673865951244264390
+e15947c5-262b-1314-0d08-25118646080f,1169731859,11609465270587510439
+77aac965-777e-9df5-4301-024c8e0be837,2567157150,18282959775588256645
+a54aea24-9465-ac1b-0da3-22343496c068,3922388293,6491467628352251262
+971e15f9-652b-ddd3-caa6-2e246a12f718,2751423500,15855708329171468749
+e1c4cf17-de94-d92c-55db-23e172968041,2830057787,13015288143917126282
+56016580-3624-5c66-5a2c-8a42aa105180,1915858840,3190243841113091813
+15f3f108-ac0d-d830-ff3c-0e89246eb4e2,3862833561,3178651202318462164
+a7075622-6563-8efa-051d-b823741fc621,871099072,10877260013382965518
+555365a8-79b9-e749-2e56-cc46795ae26c,1517927550,9278527646635056632
+cc8d7401-3f46-bff7-c851-1a54a3732d30,2806451617,13006580954109922849
+c9025308-e921-5204-900f-2b2ece59023a,1652016189,4219059608933649881
+760b0ee9-77c0-7480-b27c-85e15e88986a,107543955,2429596279597780238
+41fbc667-cffa-885e-9400-24b1e47c743f,3131640748,143922215775483730
+8a1f0584-91b6-8859-ed3e-43e7d2d139bc,2367365136,4584277813963748938
+b8af8f34-d9a6-2382-b4ba-9e14fd9e9a47,4201829425,14035023122568563305
+65fb055a-55f6-d183-f6fd-d72035e1d703,2688075927,8596529681277705596
+c5ea68b2-f6d3-39cd-6e02-be131bfbfb07,109689978,7963038866348088780
+18b3652f-3391-d2c8-1d28-7c311c9ec64f,784838081,14453584231902872324
+75ac885e-c2b4-4733-62ad-8e5428b35e23,119824240,8555567075867205894
+284a3e92-08e8-36fb-9c3a-5ccefd9c6deb,3520818373,6399440271963838633
+1bc97cd4-633d-3c20-ba65-ca13f1d2696c,3693461745,2967661504699200439
+796811d4-920b-92c1-f989-bbd8b0c5601f,3211031153,15499684114009044890
+a22e4f0c-4eaa-409b-6553-fa9b08f3ed41,2712723778,14423400815165281518
+86c03a79-ab16-4a46-593c-3ca4fc3ee913,808768941,13190859780719948280
+ad19ca58-0a56-a712-c381-ef302faf49e7,1769196246,14630179232730981146
+8fc94f01-2f5c-d7f2-9d26-f6b4d6d3dbd9,1978861580,50772561244708195
+8f9cef45-4309-c9cc-2eca-15d8cd026c4f,4144577806,15633327887972193000
+1d58973b-c597-3109-cb21-36db3a37475a,1195664407,17289477135373106417
+c9a78648-4962-577f-15a6-eb062d38ede7,3757612515,6319557241989819549
+3009c6b3-1bbb-388e-6f2c-de0de62c2fe7,3407418379,16968308119478646600
+56ca8bcb-d60f-9772-6a5a-c26ff47e027c,3237794291,9939581999470907468
+09a61a0a-bd81-1f03-757c-29b4744d2eb8,2168852386,476205416542359896
+3229aad2-a09a-163a-e0ce-766330d87fad,2290108112,14200287183807320662
+b9e91a6b-8cee-a0b0-eb93-d427f2a500a4,1244908500,8041735944104103395
+a74d8cff-732b-6dc0-b65d-535fa580b990,595029779,6382798226746744440
+8f9dce5e-357c-3075-1b68-b4a66e8eb289,2298429213,4197990241735452727
+463b3cc4-f9fc-f3ec-a852-2cafbcc8e1f2,466754978,13271716345456181704
+c1a6b53c-0041-1405-f9de-5933744c8434,1775387795,4888975284738144212
+df1c6cd5-8137-353b-6b8c-d2cd2f45fef2,554616043,619072841305939320
+7f29d815-a06e-1a17-4f09-8166185375e9,363964765,2120386674853121190
+615cacd3-dd70-b3f3-1376-8beaad548d88,2322380821,9571686270892672717
+7c3d26a9-2033-0600-d705-0f7d67520fb9,708372381,11042615516773445787
+0f132ca9-30c4-4d3d-c4b2-6397f81a9269,2293041974,10710495862123919937
+8cfc4f6e-fd51-9123-082e-f704ddab9194,2839056401,18140611441848547372
+220cce00-dbd4-560e-398f-fe165f0e8886,646398677,6524056134909383775
+b6befb5b-d043-ec25-1139-534e65a6e833,2118364263,1044872720907093346
+8dc26bc4-b35d-67d9-611b-6d94d245edd3,1739303493,9522680107388442830
+432a6dca-8f69-387c-478b-c97e8f63754f,222861703,4888616738891655883
+ad12e9d4-3fef-6dad-12a7-f2f22a412321,169152205,6022521759900861854
+3adffca3-cd82-9252-5cd8-c39c5ad6fe93,3202180309,12357987618874082820
+0d4d5401-b788-fca3-eab8-b5b06ab4909a,314585663,10145871759433363038
+745e3d2a-e5ec-1250-a6fc-8f104a09a591,2255169471,14110956850189064850
+a2852cd3-c0da-7bf6-0312-e2f1f7e0e900,238807082,2537499465016729368
+5a283a30-df8f-b8d6-135c-e4afdc404f41,1438446994,15476858536027280894
+66a607ba-57c3-6e8f-8a59-283c33ae9bcd,1080382052,16710844505738555049
+83ebb735-f37c-7547-95b3-f02f6f60f239,982437383,3890657119208578196
+fabeeead-6574-4cea-2af2-ee82c2ee006c,2924025852,335546928480192474
+c05746ba-3fd6-2fb2-e279-acfde2dbac80,1698852210,6319707807550591587
+0b73a89b-a0a8-ea15-b98e-aa023d61c2a5,2579566984,2066242318399569001
+d848a187-72d8-859f-7747-456485d8af76,322812322,17184866951498542278
+12cc8090-253f-636b-9cff-dd24d9677d57,987095487,13984903412838145968
+eac8b2a2-8ce2-4ad2-9546-390dcc1ca764,355939904,13366427665626547317
+db62b09d-1a52-0639-acaf-6b8b45630c14,2431695655,7979089765849201380
+44c65b16-1c69-7372-aefd-87a859d0f772,2640140551,2621813815432798719
+2dbc34bb-3328-8994-8bfa-2726319dc818,601158906,15991284454286489062
+4e3b7c15-30bd-e342-60f6-d2298915a80f,2260227028,1019988635825610611
+87c92bac-d14f-cb18-8b77-e873d730089a,2924225152,5598198340197769985
+9437e242-d2eb-a643-0283-21c3f7c87947,1056379895,10324705939517160177
+77626485-7b79-aeb5-fe8d-8f49484ae663,2268049325,5845734539017501912
+0bd539d1-b92b-b74b-b041-afbbe3aeea68,2630918347,16295440618452383671
+9f737c56-9f15-65c3-0d44-054ee529e92e,1270674719,5881751599689710091
+d4a238ff-ed28-1c02-2cf0-40c549ddf6d8,236568940,14523018889489275598
+0ed21d4f-0a61-c6db-b4f5-7df2afd5a63f,943950692,8895472997115188367
+cd599680-62da-535f-6579-9bb4a14c37dc,571934683,16174123668477305027
+4b141b34-3a2b-198c-ed6f-02b7c0d58f23,1698168967,3679153195817526632
+22bef17c-30f6-a8e9-57b8-b81112e9151b,3500486406,9126896484841984545
+2a15f978-83b5-ca48-8afd-2327697cae2d,931812405,7035799539776904771
+35c82fb9-5949-2e78-701f-b802968f4295,235268699,1187029111566093983
+69097caf-4232-0911-c1a3-b526863f1862,1117599407,14545515355497413740
+002b6989-9e3d-afd1-2229-c92488167e02,2496450337,9330447959728511350
+df8acd55-47cf-9078-64f7-ba6bfb451c51,846159547,16835398830252306840
+ae1a1c7d-d604-860f-7c65-c52e07ea5a10,66978749,6768210394298326497
+42c43fce-fb27-349b-ad1a-eb955cc6252e,336242667,14712182488243308740
+bb6ebeac-651c-d68f-c03c-43885870cff0,33627176,11632038491616966381
+a93cab15-de15-2509-2db3-6d9870984b23,3454670707,18396943584933465784
+4be2fea9-ddc4-eeb6-841a-281c76646ba4,552052475,4017752348190229686
+95770aae-2c83-7b84-7208-1b87ca03a6c2,1103725492,15483462153081958746
+13ae7065-6a14-2d8c-3b09-b06cd0319d68,3426815537,8872073654725301862
+e1a2f400-5dd9-a3d1-de0b-605414ec775b,3471359344,2092143406428483319
+d1417a64-b5f5-8550-6797-b952dc0abf00,1624819888,2618090069729589274
+9ef8ea8e-120f-3691-21af-2500aad0208b,2348136777,14802472254255013464
+89e9b48f-b44a-84bb-ff56-0923b6a064f3,650594816,8294705714142223898
+86ee3384-bebe-8067-3126-01a11394b845,143607461,5633186481587614779
+0d690164-4222-8a09-a8c7-9dbf59423ef5,2332544888,12156455331378429202
+98f206a6-c963-1749-92b0-2d7724146a3b,1025678785,6322777392824330966
+438f98b1-32f1-5f69-238f-d134ca96ba97,3767669080,6118320444044591386
+ac24eabb-ee65-f678-872f-0493dd0fcfe5,1007579810,8166175490546127104
+e0c23516-903a-e0b3-5ff6-2b62ff7ccdbb,2193676181,12551086053224087118
+43e4ddc2-413a-f569-c0c8-c4d00ad5d895,641206710,13967389784325072522
+eec7a0e9-40b7-d55e-0e57-7e00803d0c07,1532186091,1311983914167624833
+5f6148e9-e7a1-5c66-9813-8a6b7e7e8a7f,1494792555,6154218851962411082
+16ad9915-067d-1c3d-aa4f-1d9157a54e91,28737917,757026300115654206
+3e3e1f14-9c06-f631-45d2-e19d0b8b07db,456425502,2977081481025254756
+61beb676-558f-ee8e-442c-b77e6a64d619,2720271932,6308540477275038480
+47b4a2ad-6842-48b4-af6c-fc5a19232cf2,478100665,17001299624201380848
+7d7966ef-e725-c950-e520-8c1c9c7586c6,539203864,12173271074744867350
+ed418c50-3414-23a0-9bf9-278772009657,2547031938,1277009726207435194
+e4dfd6df-95db-9ae7-19eb-b71848f7bc89,3436282237,6660981636702429996
+b18377cf-35f3-82b1-27d5-f644643352f5,2809340200,23111633770215358
+fb2e686d-4e98-3f27-946b-c8a6ecac305b,967593914,7174844163962062986
+56545e8b-316c-a3d4-8673-b3dfb3d5dde7,177120552,15372468099331767094
+25399f1c-21fb-b0a7-d350-ecbf37f6fc7b,2768635529,3018214504992311978
+3f97366d-bf21-e4db-a15a-e585b8dddca5,609812457,13929499343154159607
+14432dc5-079c-ca57-f1c6-15c059a5228e,4034154811,187732817488667374
+c19a89a0-2624-c0d0-a886-06be82fbc1b8,2076697210,11387858542117044438
+ea7e6822-c186-e8dc-eac3-309cd7beba5b,263763268,2185200473585671046
+65689934-1871-833c-43f4-6c600ead8d68,491095918,14463564684624255702
+b23398e1-bee4-2de4-324c-f570627309c9,2180604958,445410775616538015
+27d8eff9-2b8b-3827-db44-7f77c3151333,2540208897,4984122811309682283
+c6abc6ce-4b4a-9eaf-82dc-6c59042e0bbe,1842476844,7174033636560760125
+d05803ae-468e-a6fb-adfa-252a3c14c40d,2493098871,13894825369337581067
+126fbd10-3e36-2afe-d3cd-2d4facc34c14,129895438,3227223839407249036
+db06e7c9-3990-e255-486a-7423b20210e6,3131341045,11667823444457166242
+c71ea4dc-5036-7f29-7524-f09f9dd902b5,1922499401,13911418898629745970
+7dc7675b-475c-77d0-1b5e-6f691aa4b69e,3199549598,2289264590687861026
+df648aaa-c5dc-038c-e706-cb06938594a8,893347404,15363048990599159259
+ace3e51d-a88b-fa79-61e2-800a1945ef2f,3574957697,12643128500787219480
+cfc64519-5039-9cc4-e0a8-5dc4f3d5082a,123519945,6124137239070132451
+924107ac-8f2b-efb5-9802-77e7df7ac825,1542393127,4247098275403711706
+0c1b1c9d-226c-dd98-ba27-951bd70035ea,1123608950,17119127560570935930
+5138d37c-3c48-d7ef-abdb-b64c9cf33110,15212112,14624135811019945401
+42664f61-e1d0-37ec-9fbe-6cf576e73241,4279044063,9561071026393969937
+e7afab3b-2f4b-d88d-25c5-04c891827599,760633152,15677865503117909118
+9a44d7dc-6a06-27c2-7d37-c83af56f8cfc,1791275745,807689842007979039
+abd2268b-ccca-393c-1d5a-9375d88816ed,2190645783,15826366022695855487
+a451ba62-357e-7a5c-e5df-e6db2838da49,348590779,15842377357437198898
+1e257c64-acc4-1242-1bd0-51d4675f1921,689849250,10677905305606775759
+1ff02be3-d19d-a707-3fe6-f124214bdc68,4176212483,10855448543109569749
+fff1957b-bdc9-ce15-326b-1a44d59c4982,2788352712,12772329354410669768
+9e83dac0-89ae-98b3-1c7e-805f9f866ba7,1085309477,4163929745654768004
+4596d4ca-cdc0-f449-03d2-8449e9cb20a1,3958485195,10315513819201851313
+636b31fd-2052-9235-40e8-bdb3cd24a684,861794904,15794597918417902003
+1c5027cc-fd88-d473-9b12-e0fffb0d390a,4228926076,17020407427819478736
+638e66f5-e2de-54dd-6b6a-94eb0f99cf2e,882222848,7544409468562326992
+152803ba-c775-b10f-8875-0ab23e7558c6,3727605957,432424004791705156
+5d90e9e9-d515-46e0-b4e4-d2bca5470d5e,1844975518,16273752350280638897
+27b4a752-1cf2-8394-01d1-6a7fad2221f0,524406113,2290870008705096632
+43ead33c-b56f-9894-67ad-626c22849bc1,362399200,1640803531334781553
+e385320e-a249-4f3e-61bd-ede4e714d3bb,1054741775,4759941937532289730
+204828f8-5e71-6925-9da4-a910816e6929,1656792880,12461143365042955125
+0d4e3815-5f13-9210-9232-58ee3efe08a7,4024904799,14792646112215206221
+72774efc-5255-ee64-c8b7-0ef5bd92a9a8,1842431233,10859573980204058265
+ba7d3f4c-1507-856a-d01b-99a762a85d41,86542212,13068851679862732184
+b8aa96e2-2b63-a79b-35d7-9f87222b774b,3280906662,15586907568312677957
+a9bc5066-efb2-d70b-f47d-df38b1b7350c,2191722894,16272583754890677587
+56652c29-c4db-1ada-381e-4a8b4f82ca54,2423304358,13319749067650943165
+b3edc8e0-20a5-ed70-684b-b30067f16632,3813419486,10508643705986928489
+5d0af548-4f07-95a7-ce31-0a84ff16b7b1,833483968,11833323273508761129
+67fc0af7-34a2-9e1f-6d43-70bfcd991a37,4265513034,6828205650666882654
+42b4104f-1b30-395e-6a2f-489aef420deb,498073850,10793056786124809145
+c97a432a-2d28-bd6e-1b31-919dd6f3c0f7,3418878157,7077309998974780135
+9fa84ee5-40c8-c216-6b0a-b5715e345f7c,1549517899,1032979043064710928
+fdda062b-dc58-33e7-2022-84ca9186827f,3643476835,9971317182841386588
+31186948-217c-591e-5dbd-829d37992f93,3722434850,11089799464710730790
+08d73cc5-1ea6-a10c-893b-aa479a2df1f4,3686788546,3722808472915652020
+af101d8e-faca-11f0-ab97-3fc1c274f754,454211118,14813512239865485954
+e8b8257c-fbe1-0365-c0e2-bc55519e40c8,3456432738,16239251856244329175
+8059f170-a9a0-219e-165f-f802a4bf9b18,3105123945,13655931364411888187
+3f1f0682-3caa-56f4-c57a-a6658121b1a5,2920109461,3300786983317173555
+31ebb201-d37a-2e70-030b-9e4342b72a58,2101724927,1395969699327334096
+50e0265c-63ff-1e9d-b8b7-9d4b3024ded4,1628157703,13694906256393360573
+57423abc-0f5e-404a-d886-c0b67decac68,1117100128,4086173430753475299
+e3ccc2df-c6bb-204e-e80e-771d8005109e,2437274784,7333922438034472357
+da2d610b-e8f7-8018-7aaf-102011afb53b,1007867013,2730784703963277567
+e4eeb14a-c312-bc13-6494-be2db271f505,1768271041,16237367578528714297
+9a5aa971-98b4-6827-38e0-1c47330dea69,587524138,17834214176586525242
+cf485987-4ba7-2f4b-6b11-e500576a556d,3648019259,6786839507593881592
+04461700-f9fb-f079-b90e-6d8786ffcf27,1222133993,2171993480455838605
+36125fd5-ba5d-f9ab-4528-9164595bed01,3406471483,3967499612393568966
+1634f70f-0bc8-e28a-d4af-4564571c5cc2,557862175,4383304962661630070
+e33241ed-b226-1cdf-7e49-8313a92f91b1,2754274459,18039445834958336282
+3202e3da-5fdf-37de-228c-0e4c33046332,803537907,5107042209713043639
+09cbf760-1dcf-db23-20ac-6d62361ac806,1525140778,11810558586043260210
+c46b0b41-b053-63d5-74dd-01e2f36d2228,1921202562,8569007077570361711
+368125e8-4b8c-45ed-0fa1-19bae4ec4571,624493702,8660015921896044456
+c7af3b5c-8141-d647-772a-ccb77fb52728,1684068136,3384098385931757127
+9b3ab077-9017-5f4f-0b27-bcae9ac1dc0f,425798241,13562126454162513211
+26434829-f5cb-8bba-b329-f7b695b1ad02,1525709383,10410020547787372094
+889b4bdd-d632-d5e2-397a-8b22ec8b0caa,1520949219,10122774513600773517
+b78ce86c-31e4-b0a2-365e-657cc19c74f1,370647798,15398653161376814572
+e45c362f-6dda-74b8-d060-7f993d1eefd7,2577945191,14035079308243567506
+68513c41-cd8f-d911-1b09-480a6ccd10ac,2400711852,5755588857296347953
+e19edb51-9e96-912b-b139-2b72831a21ed,3787478200,10489103993671772312
+6607a269-181e-9053-477d-820af9f94854,134681400,3552070086847134583
+b1a9580d-3037-3374-405c-d9f56eb16c6a,2792701833,7748868823929224284
+0ba512b4-be1a-00a2-ba42-964bf2942571,3659065446,3741232667844385217
+cec443c1-b80e-b6b0-a4f3-fabfb3f4f892,162419286,12168950760968531139
+3c7c89b7-4f5a-cae3-cc06-d26bde4e9807,3991200282,15674907340862071521
+7a7b0d7b-f09b-fc29-332d-4d71f57b11e3,4220986284,16399408817428308751
+aef1cd6c-e42b-784c-2f53-4d0fabeae92a,3300796059,5958539602427996208
+37eb4dc9-b41a-a86a-e5ca-4c155aca3379,732341143,15980148134365515662
+36916304-b18e-f7e8-abe8-d0b3a355b9ba,425189613,13592543419580894617
+69b457c2-2d22-f23a-f58d-7cb52de776e6,1086228632,16825686592240515275
+d6466033-859c-33b8-e036-006576f0934b,3853436875,5714580332782373630
+b8605308-956b-aebc-da03-4f4ae6053de5,1886761988,12742071734330938609
+71999af7-ae94-565f-944e-68188f1250c4,3005358097,10306719676895816174
+e6c9dd03-12c1-6a58-367f-cd734df679bf,45448318,3375521617284415455
+fc1170c9-862b-522c-a2d3-95fc2974861c,2953569400,418553373441401824
+82ff30e2-32e1-49a0-49c0-599b5d9f788c,2841286016,1864165241153650377
+9ff00f7c-d455-a3ee-4f28-efacc97d76a0,2300094440,9740655820354657412
+8b91c6bd-e032-f678-7a7e-e18f2df1b05b,1177666815,3732553126622385548
+4f986aef-8a8a-c20c-c931-140d7ebaca6b,2765172479,6034097443766357077
+9c9639cb-627e-75ec-9abf-1fa2ed3e4423,909422942,8381351937022392582
+5a06f1fa-5b65-44f3-e9e4-0449602c76b2,806938613,5015214491980210307
+b56ed66e-db37-e891-6de0-5f46e89b900b,2694832124,2945200833753765390
+3f93bcf7-c665-dc04-3a93-83e5d2b04d39,505068179,665859687193771126
+66b5ad4f-3d69-ec61-8dff-860444e635cb,1907032299,17483764581475273413
+1a7b72c0-0e0e-e4f7-b24c-7a1a51c6fc80,1308857208,6157632885257982356
+62bd543f-02e7-8fe0-b7d0-a74538c23517,3468945537,18138131995264030202
+a745e65d-d721-0dff-b265-1b2a6b8b0068,318652736,14979074710204701684
+1ba6528b-abdc-4dba-d3fe-166735720dc9,810395588,17532419658718012353
+b3b6ab7a-890e-dcf4-3928-98c5943edcb9,285906956,4275721587569419049
+4d9f93cf-d78d-f465-e387-88cdbee3665a,291059107,1671120232380772540
+baaae3b5-3e00-cf63-ee06-4b84fe9a897b,4130062674,2019959911005040401
+f6fbd6ee-cca0-4ade-584d-7180027b5b73,592430647,1717628765482075570
+0c5475a5-b0af-fe1c-6e4b-5cf74746d019,3332732936,11088019886866080044
+a72b4095-7945-d2bd-53c0-04f2bfc9f2da,4249659534,12355908684297372376
+4a1ab535-3cbb-9c7a-86bb-7c485646fe2a,2972939135,5247167730366267467
+dfd6c154-6783-c7f4-77a6-0341704827ef,734570785,2674264582061805546
+215479c4-b495-8ec4-8af8-ac7b4aabb49a,334839119,10201949418188858236
+648150e4-7c1b-f3e8-7833-ce89f690946d,3057354956,16810575252231019097
+659a4bee-892d-653a-a5cc-d763bb385249,1690043537,11055373006874636125
+395442a0-9687-c385-a629-dfd35db491b4,2491570274,17453054817002900567
+210b6703-6b64-f91a-eead-250af2875e71,98853018,7906749968337388499
+12788a23-df68-4c74-8cf4-b7d8f5079c4c,507503501,244539013899592589
+a2992ef4-189c-05c6-8541-1bd3eb3a2e4f,393657537,8562503051729212186
+502960a1-d631-ca10-61f1-bc5a5415a273,4182295317,14903305179529920666
+a23048a5-e946-ad5a-78eb-1929b126b85a,2429609409,5024723389736282369
+852342a0-91ea-dd52-5265-5dbab6f621ee,235082846,6763679512603007213
+7c480a0a-ad90-4425-09f9-3d681aa816c3,432643467,7848786102208379123
+71d22867-7ba7-c356-5a04-6efad8308c2d,2762494629,5203545671546704330
+b51fef94-992c-9ed3-2456-e6cf63aa9710,1030368907,16126937816693859175
+5c8bce6b-b98f-dd6e-6498-3582a0589aa0,1140525456,9805177269758610679
+d3d9c5ab-ef54-0eab-439a-6835d32a0299,503962047,9139146433883296866
+01a6d069-05a8-6c8e-5fe5-6b952e3151d5,853039466,15072664525592279408
+5101dd63-c7c7-93f1-7c09-eb927e48474e,3854722401,10607987001907016474
+0c5b0d21-d592-0017-866b-9fd53b55721f,3506099828,8336624269997250937
+d5945ece-e9c6-cfda-13ec-ffe908e4ab4f,3367100209,10623887552141149891
+3df05925-dae7-7b5b-ad0d-084d28f0f3ae,92148728,7691245410329222059
+c1ab03ff-0868-1e20-b766-a3a84511e21c,2851761968,17087591985231293794
+765d84ae-0ade-230a-8f90-341f40faa238,3411193944,10396996544163044150
+8a4c3ca7-4c02-86bd-4e63-5f8cc1bc13f2,3559936777,15683400320601578367
+01f34472-d062-d221-00f1-ee277694c879,124346979,8451565085372389611
+e4828a1c-be01-9308-9e61-fe504f0bc107,3662751926,12687179051433558077
+8fcffa81-4969-c90e-973d-ea0320d58641,3377887195,9896871877544613636
+9da549f6-0fee-cd64-192b-49fc4b2869cc,3761899751,4407339550404051562
+200542dc-34f6-f7bd-2525-6aae294f93e9,765230525,1007525334882759255
+152049bd-c765-779b-a9ef-cbc436cc6460,2166958408,9602991984664717212
+3e90f9f5-3c64-18ce-799d-c2b1d320f326,3120768286,5874886501610460072
+3098e30c-e9f6-ad7d-41d5-6bd80e881f5d,1535634865,2938090065463161000
+64481272-7213-2cf8-a647-855055f344b3,1772594672,10547613502630414056
+0c683f66-2fe7-d864-b0a2-483879b517bc,1493050437,420329891322058370
+942ad128-dfc9-d9b8-0926-458753d411b5,1571681981,13352408713875084730
+5e678f5e-1b1b-ec8d-2aac-8cac9ad03f22,426908536,12594119847952808931
+51448b57-12f2-9df7-400a-0f935ad55bc6,439344239,1148363140342048149
+8d8409aa-11f2-e682-f7d8-d81f460d6645,2194832513,11521410822417531846
+d58ef5c5-d6e6-87af-4257-ee73a0fe2465,412229041,16830165939170591367
+5f3be066-f151-ccb1-b1af-1c35d32485e9,443059438,5637752623130261669
+c922c7a6-c169-381f-0025-521081717c9f,3845155765,175974613190977991
+38c9ff34-9e42-ce4f-0b86-8535262e5b6d,4200059454,17340947602076431006
+72715268-4896-d71a-dda8-5993e6b6072f,1354678253,9256747880599618414
+d31d1173-137a-2c7d-db89-614c3142f001,1528317346,665522608980696255
+cbd80b70-ccef-6de2-dd92-7c0e883ca1c3,269029320,15800094721573795543
+231b7cff-db31-bd43-f714-1165975e664e,236057346,17049893258769418376
+3269a92b-ac0c-9f17-6073-bb1f31b45c77,1391266311,15719314925124733863
+4b005cc8-68a4-876b-e007-9715655ee20d,787342176,10514160555898775388
+6f32d275-f8f0-4462-b2d9-1700069b433a,4112488210,14167423276404994570
+95c76027-ce1b-7df9-1c49-4da6e50ef5d3,161474448,15971349057404717472
+5de50eaf-e259-d7fe-80bd-9481a0fe9ebe,308736818,8419124884700316199
+a94d4783-8055-4a62-6cb0-56540b8adf83,1575861692,7829861691996430310
+f140ac09-8246-f637-313c-2cc3bbacfaaa,3822775298,17262575975804661950
+fc65ec7a-5ea2-9f6c-dd1c-eb4584856970,1536246377,10095747960525966036
+c1c4914b-00c5-5a63-6634-4e16ca11e65b,2989787088,5157212465153773294
+2aa80bcb-8398-38fc-7e6a-1ec5655477fa,3950141447,10220143059523249153
+4d232afd-6512-bebe-45ba-82b31920f918,2039822165,5154467202030442948
+4772bf2c-5eef-5a2e-b586-bcbbf945f335,840565095,3170167867487954182
+7b490d23-c2c0-08e4-0eaa-23e6f7530f0b,3724338803,8310216905976461293
+78bc11ff-2e5d-632b-7eaf-025b98d87410,2857426850,9603191113234398670
+f9afc8b2-bc10-a27a-49e7-56207f9c23b5,1516099358,17805726069003162051
+3e873053-fc52-f544-6d2a-bdcd25fe0adf,225798200,12570496052576617171
+646321af-ce75-63b2-faaa-c44bfcd10dcd,1579395314,10079267112180539478
+604c44e6-342d-c1d1-7350-08f086abfd56,1202797061,1923561119162164035
+2887a70e-b503-1575-0725-6e00bd37a7e0,1451409321,4881545310521416785
+f8475855-cb3c-f0c3-3b95-8f480bc432c7,3222300837,1400242327334962685
+30ed08e9-c5b8-a011-6c60-c07b506a5a48,687278267,18100412073545166439
+6c6ed7e9-70c2-e292-966d-5c688ab38392,3724605824,11678149964063032734
+c6bc3fec-cc2f-97f8-129d-2408369b5efb,1038229413,17030938335818952951
+69b57df1-8c9c-b4f5-6179-64c14acf1564,3329714206,3496890089638261750
+9218e550-3758-d932-e8b1-80c817ac9057,2013431466,16380922033429131768
+05e944bb-2580-67be-10a9-2d606e8b927a,2930791879,8581653256932753936
+0fb56360-3df0-3229-086b-d2be7196dd8b,277599492,13428369626875178913
+1e658e83-9a20-24f2-f7f5-bf22867cc69d,2499132325,11739874892051857623
+c53e0561-7b81-2698-e901-912198fbcf5b,2025991714,13802476798630195054
+9274d258-600c-4c10-28d1-e10a4b98017c,3012756451,2898206803185593327
+36bfead2-c4a4-da63-7f05-d2e0e9c4bca3,3498882005,10844707671924784328
+aa98995d-58bf-400f-0022-63fe015e1510,2550078156,685803795192858941
+ff6fde3b-6fee-5edd-0894-df770a7179d4,51283464,6767804267278882848
+da2dc64f-90be-f28d-a07e-ba8e7b303722,3286577633,6356456245252173686
+a773f3c4-4cc0-f4ba-17b9-2c2b3c8b5c5b,2662956839,16908259481017010732
+b534e996-ce32-759c-c17e-5ccfe713cfc2,99335576,7899460713367238680
+de7af314-878b-21ec-72e1-92682ab55ff5,33798923,16015055142386875285
+2c70fe7c-29a5-3216-0231-1f892789d3f4,600520640,2289316041042057177
+d7ca6dc1-d29d-38e2-2f64-3739b63fea22,4175567635,2568482925888039504
+db1c8502-1ace-749e-efb9-6aea09b6b934,83361607,7444820841058491861
+c39c9759-4e4c-4ef8-6ca1-b7a493223a19,7907448,2103898817053876267
+ef228ae9-1cd2-7162-b366-b21961c90860,2053748955,14684147892248108714
+a90879f3-e957-b465-d1cd-cd1b2948bb1b,1645881308,8703348001657296961
+e5b2ad2c-aed1-e413-8315-1740185ea8ac,251033924,12178414279165906396
+476bf1d3-a23f-1304-cedf-c72ecc131ccc,1115078112,14532870182940738010
+819d039b-7c5a-1630-2302-5120a444da63,2022651998,10615500051758113961
+5a38e61a-5194-3002-16cd-9f7f9104c50d,2612037575,3576182950430478086
+1e22bddd-5d53-f9d5-223c-8b175a1b4242,1747076100,2258265744252364472
+74df1dc9-7f32-87a1-487b-e3e5e4b3cde4,1712757421,694364856855169617
+f7a5aefe-5a64-fc60-63f6-0d71fad0d976,3409927084,8061466422053347280
+c9a3c1be-8a01-738b-a774-e269099bbe87,3748498040,4372831223905480541
+018baacb-45f1-3710-44d9-9680302c6179,1287607039,5737164766425854395
+9ad9ec93-e81a-5eef-d948-f742c69b129e,4110878049,7554716839330897513
+f378aa0a-ee36-3b10-9c51-79a183ed47b2,3290685767,14648476271197152046
+d61c67c5-4e79-be9b-8350-f34f6dd7226d,2992323961,4186693065351483842
+1a3cb900-701c-7c53-f950-1c5c3162429a,496860496,15135476703386830100
+8742703a-4429-c3df-5955-6e4f8926de07,2785672194,160083783262550762
+57e0ddab-b5ea-cb1d-6375-1663af9357ce,2924225009,2091424911073415767
+fb81bac6-e01f-5649-6987-2999187c1fea,2828327593,12564369788714595944
+5a3ed7d1-e135-eb08-3cbd-b571f0a07ce9,328276528,3365317773506403469
+78d6bd2e-bb6b-86c3-254e-917caf254728,2608706022,5639247051720897448
+0b11c3c0-7e83-71bc-f6f2-a26ab517a8dd,2113653330,8494198588582943813
+20356cbf-b299-7505-7034-677fe7a7f850,3303449113,17375401877301232161
+f262cd74-f1bd-ec6e-218a-a3e1d4c4183a,208780339,10801158594063795410
+5afd14ea-c8e9-dd3d-bd42-4b86484d7737,4193879423,9761799959084810284
+2ee74234-6d95-ee4a-c424-22888cc0af86,1200206346,10760661922455087539
+8ec55b8e-2319-0a3a-d756-7fb852378697,4095023333,12916331039704693541
+a39ad848-2442-4deb-32a6-104408f486f5,1352611842,410245906154181390
+099d0fdf-14ca-5506-1bff-da4000e26247,2948025811,12038009010120441955
+b445f74b-b504-efe7-56f7-6718e41d7391,1301516095,11521897557387452959
+12ff38b3-ba3a-2859-0363-5be2bb0db87f,2115113235,460715505719202888
+a6c880be-e951-3c61-9649-8bce8a343912,3067248289,18281317121966246162
+8c266ac1-6fa2-81a6-7bb2-48dbc56ad869,1747279311,15797993627836253878
+5ea7452f-fec8-0873-2d3b-93368b1afd1f,92095180,10470276316868913979
+476715da-1173-a4dc-e5cc-68efe3e593ca,2748836828,14609745071968877873
+59380f42-2839-7f79-db3d-3593f524cf6b,868989845,3402660141005383118
+b01b1525-6a96-c60d-beb6-0293697c7462,3698607268,9175552207354013988
+7bbeb437-65aa-f589-68bd-4e0fb2d89ef3,3087478495,16306552386248713559
+e52d519a-4b3e-0bac-9538-ec40157043d7,2968767701,8145642303473868363
+58f4c76c-e9e0-3b77-c1b6-c15a5f383026,2306707536,12192487207950734857
+1113d210-45d6-a89d-295c-b03c473f572f,589681363,14043216145105540046
+c4630ab6-1eba-b5b4-6c86-9870a87665eb,3445260170,4726862980540812718
+0ebda42d-2fa9-efe9-7ae1-88f61f4eecfe,2927287977,1506665875287212505
+61489b48-ccae-4e1d-8951-0e6d36f1badc,3675645359,111392195656392292
+90e08fce-de2b-fb93-7dd1-637395472032,2331809028,7795930003898516916
+cb5905ad-d323-3b79-4471-d959ffde7739,243155806,13561169577243455503
+5ac1a90a-a193-b0cc-a908-1938f6c876c7,1990736704,2825400596882285806
+34380c2c-dcf7-8f53-b593-376bb21bf0b6,2962138388,4268772501099468801
+7874cda7-b63f-1266-1b7a-0cb94064a8b5,2977023326,9582922469807029404
+dc354d69-22e1-e697-bf0d-b3f2ffee5e91,2271270102,10497810462591022511
+d35d1dad-7515-3d48-8210-b0be7b37c3e3,582473330,3625802925363307608
+cb44f0cf-deab-b220-8034-36846efe73e5,3146006559,7418257572697037532
+7ec2cebd-e73b-0f24-7959-3b7bdb3d9477,3600662463,3524890505545597143
+801b0a3b-838f-8330-17f6-5d9ce72b67e3,2657988756,8111703086753946564
+1acc162d-88eb-311b-c279-624b62490da9,3468100969,16574642370654145831
+f42edd3f-e8b1-b7d5-7771-b52b5747d573,1022659344,7154865441410653732
+a777e280-978c-0c21-a3bf-b96e6803af71,1110134552,9652201313442389401
+80f5e4ee-8c7f-e43f-e3e6-abc1d1e80dc8,957823006,14059929433014119359
+2d45b8ee-323a-a937-7c25-bb691dcd9926,477240447,12675834479270575460
+ac7e07a8-16bc-9d98-a114-26ce9349588b,2729331908,14040263458963320663
+c58846b4-9b08-2d8c-6338-674bcb7368c3,570323145,5009214539798227254
+f3921d91-50db-ce94-a2c1-62fead0d4d33,1932039712,16478328175024551673
+2c081258-13d2-6d43-4a79-e7bdfe749c6b,2058490807,5840171646322326665
+9c191aa7-13f9-9d37-5032-14e5f1027ebb,3490505542,7129857909456489444
+85086cf3-8312-01ad-5769-131fccb73933,2290127517,15264339429108377138
+f7f49d78-c4c0-07e4-75bf-86c172e8f520,1162306806,17588589418233362470
+67786741-dd10-5722-be8f-093ccaa017fe,3246620786,4480967308643009786
+4994f626-fb8c-df19-6152-0dc1e92381d5,1529699454,10937408848098126191
+8f89a365-d9ba-e201-97a9-c6097eaebe01,2381266713,3193301213188790617
+8c9c934e-fd74-255f-5f94-ba8adc9a7aa2,1601835041,11260281350372059230
+c1da1c44-fffa-ad10-c311-21d2d6302c33,859248013,603209888073040394
+8d9ae57a-b8f0-5a8d-1c76-fe0c904a7cd7,1168461675,1855819924023418206
+98d9d2e3-53dc-df9b-a05e-edbd7bca0371,3975374603,11162195127328446314
+6490cccd-e8e6-0f19-6b8c-4cfbdbd2639d,329730869,12285303339601769895
+2992c723-5b08-5476-16d7-45fe35f28fef,173099066,7293646364326634332
+75c5409b-7c20-1a75-d11e-7e6d4607e249,3626579711,4484692841722505384
+7b83feb0-e29f-d5e1-73a5-8431f6b457a5,1146682113,2991744197302221195
+07c9faf0-26ad-667b-3102-07dab9bfa0ae,1645937390,5427302171541124482
+6e8e8a08-f4ed-575c-d225-d92b0eea5e77,2981316187,18402873149698807760
+fd21e14d-1c0f-076d-0524-f3f231b48797,1763020002,17555302296302164635
+173fe882-9191-437f-bc7c-77e918fd1110,747163669,14455620654564923705
+09ea1711-7c18-9932-9708-a0dc7a156812,1286922843,758120939073631672
+5386ec74-4eb2-1506-85d1-ad7bbd8c80ed,3560723041,17407028374052719479
+f523f85a-3b6d-7b40-416f-f3603709e82b,3635740399,89339849017719194
+e2de44b0-1041-7128-15c1-d01e67667f0b,119799397,12345668670916224110
+a3b805e0-5326-3dfb-0226-98406079b2ca,1013737720,7690486891627753399
+37f84a74-c344-b932-aa33-1cdff831cf24,3880761477,4169294892755854514
+7e21e415-fce6-7656-760c-89da420dbfa2,1684241803,8157161464457829788
+93769178-1315-f0eb-9b15-b4846e45e319,4009650183,14642080571191795135
+15d26af7-e5c2-3d88-a064-17ba2e9194a7,2289186509,17083962990076551083
+8cabcead-38d0-af48-28b3-636fa83807b5,2559313418,17092088411981063923
+fad1ba6a-b409-36c5-a2fd-9de07350f7cc,4098484932,11558167474380247098
+d8ab37f7-51e6-1cf6-49d6-5233fb23b1ab,389518806,2788439970512187561
+92e4ef43-0462-fa10-05b0-1e846f19c660,3879649679,4186782704016512118
+2415e48b-0ffc-0443-099f-18228b5ffd32,2625132810,1127526475629530809
+d58e7ec3-de5e-6196-127c-7f167abe0588,2712206203,799564714817635364
+554a5db4-4843-78b6-5efb-9f0772aa6147,4053793600,7144653135431689204
+882ef087-d299-508a-8840-3e97123d4c4b,90871919,10260418798615744764
+3a481cc1-d2a3-2373-6ea5-96ac13fd5fac,3048602786,14155260707755645944
+202d021b-8fa4-94be-4721-cb3b56ab5ea6,8189632,10061824778391589244
+143851c9-b77b-cb52-320c-31cef8cef94a,2031693037,4551475226303112340
+96f9c8c3-e736-f8fb-182c-dc5e2091e2ce,1623898539,1209357797355508753
+1993dd59-0919-8c58-6027-211db212c713,4101875947,7820016777029613898
+d2e783d3-a346-9570-fea0-bee94a06a24c,3142768010,16516802011760102696
+1e3fc7f4-5482-5c49-4329-61ab27d31b32,1442429859,8477324243271959583
+a748c24b-40ee-aeba-3646-7c5488535aa2,3199732912,142339035060292622
+418a6aca-a030-4a98-21d6-c2f9aee1665b,2725255612,15680040874764839650
+8521d9f4-82e4-422e-c2da-7df3678851ce,3836482167,10638830649388275785
+b6cfba4e-abce-070a-5563-133a880da3b9,2893929261,17757974852716869152
+668050af-6498-d11e-ed53-b7fb6d9c4426,1136948254,7439120713655491435
+3b9248c4-72cf-aedf-2ef0-f4888621b6b8,3606618262,16324236832256280926
+1d46955b-9b17-cfc6-84b0-1ab54761ba2b,3340953445,2359844744028925183
+672b8c37-9d5e-968e-462f-9bb635ef5c28,3037929357,11181903503657347607
+276ddb3c-69d6-19aa-0a40-5c18dc49e60e,2120922953,16791593506956901786
+f71c05c9-a23f-1154-c123-bd292734f2f6,3550122149,15179588284251298622
+a45c2956-2052-92d5-6221-827192c7b57f,3376086808,8396995812739409661
+97ac375f-9913-29ae-b5e6-fe7e9ed8a780,3274650624,7724221027542884544
+69dc5058-62d9-845c-c1a1-261738623700,3939820774,12531697206631643574
+4cd17eb2-d72a-1f5c-2d7f-7a2a37d3edbe,1476175304,2372166593945926457
+30468b15-eea1-c071-7cf3-b9b114df1682,2483008089,6882294294805799315
+3b373ffd-118d-753c-8ad9-45c61eee1526,4006052880,16546069028870106466
+180a04eb-9476-0bb6-eed2-6719a5cd59d6,139889151,5829622558750697592
+03de4538-6ee3-68ca-c40b-a973d27e0be9,1672114613,5004133380166421597
+79fdae55-fe2b-bc66-e42a-4ee120070b05,2355717035,3885950869161574651
+e5ec3da4-572c-8081-0393-253373a5dedf,3311277204,11590706224747996575
+a693337b-0cb9-32ab-341d-89ab47f281aa,3080021796,12112165671208350031
+3ad351c7-1b38-9334-f3d6-5d2b2f10fdfa,1951395824,13878870770090608034
+ffa6eff3-7b76-41ce-ab53-3de01728788e,2142332260,16657177264332757455
+3325cb19-3ce7-1c16-dfc6-06745a0a2ba8,383355576,1435459059854734602
+75ad3e7b-7189-540b-4458-390b0773adc5,4029479275,6920757478269392785
+8dead3fa-a2f2-65d4-57c4-08f1cbf4d22a,1950545238,13625730978767240877
+885ba273-0cf0-a5eb-3f0a-4a4b8359af21,3764416691,8409755459817837993
+36e15259-397b-2196-46a2-2a8b7d2b3a45,1845965677,12106291958565390580
+c299930e-a3af-a5a4-ee58-3ee634f80afd,4118803716,5527832496745082371
+38299658-8b8a-0a76-671b-91d6010995b4,1822955189,11100257864764387099
+a5a5b40f-e602-9ea6-0f19-624602bc05d0,3412078885,11206011038331680781
+66d50a3b-a451-5137-1a8e-e32597c6faf0,3356690835,15345941479227184767
+3b1afd1f-2ea7-d5c7-7373-e0d1c9ebd17f,684987195,12388269766050531819
+0ffac4f3-1ec6-065c-e3c7-2176f50dbaa9,2620319849,13239843487450522698
+f912f2e0-28c5-be00-4f57-42100de37b38,2680043019,13055425736432350458
+e3d26f3d-1d65-1e0d-be68-867035cf3b7e,2262280166,7588866216182665344
+ee692f45-4b9f-4112-f87b-32030b03ce4e,161410393,4594681492127226402
+f34c9cb2-127e-5919-2991-87d708c63e91,275034679,3644492894397074229
+5a84cb32-feb4-6f25-1fd2-79740820d0a5,561564529,8206081217017436308
+66838069-2dc3-ff3e-1f02-e894d802b231,101699131,6325158173248746656
+bfc8a925-9bba-0c26-3813-cb654fde9c53,1622852326,4980450136772718588
+01e54cb5-2d18-b1bf-b7b8-65511e27398b,2392126597,208330816243751803
+c1d65264-9c86-81f1-7a07-b141990201af,4021858332,1268656519806964627
+677452ff-f4fb-41ff-613f-4e58bdb508eb,4119248406,11235263961374682026
+1cc31bbd-c4e0-944b-7e87-4403baf809c8,201698903,581906625074370186
+be11b09f-ccad-fe7f-69b2-e52d0e5c4155,3907992928,18190965776707765088
+edbfb5b1-e408-679d-d7e8-dda002ac3528,2005474314,5326247916757070954
+d0796f18-212e-98a8-0b97-946617571909,2560377273,16042975816852799617
+c81809da-6607-5a72-bed6-5a63537f865a,2002007789,13474455239022715728
+a0fe90da-5113-7f8c-693f-30de4f00b878,4155726651,1116292596439418811
+dd6f034d-668e-5c37-93e5-f041f1838b6c,2539683039,16838529720993945551
+3b6eb984-447c-0adf-e511-9eaa503781c5,2103953954,2750916374840843923
+e8e97761-707b-bdd1-9d77-7f498ee046e5,3411134777,6903721718801234185
+b72ce236-56fd-a462-1689-6d1ebe5edbe5,1315548483,3636599315262090491
+9051fd82-3d57-a5d3-e0b3-b2c8aeea5d4e,3711017766,167493681803321841
+10a30141-341c-2a48-af94-2e2bf0b123a5,1969120748,2148784281356059746
+54c6a762-51dc-e4ca-39f4-1d846b394091,475571921,16048467301651305545
+2128ebe7-0197-9f8d-a785-f3dcf1b1f41e,2007516374,7286146926490844048
+addf66ae-7a73-cb72-cda0-90e7f96aeacf,2527531650,8954376939954421395
+233e3ea2-3c48-bb4f-0975-9c05f7d48016,2888392551,4304856899343325779
+ad9ac20f-5609-ea0d-8a1b-fa38e912f602,429617161,14663062418495616888
+6a12bc30-8ee3-c666-3041-ad428072fb60,2268701144,837308276877060465
+8e8add5d-353a-9be0-4813-12e5e94342df,1065914690,1862173248737570190
+3165e7aa-7fdc-5ed9-ac36-af3c227cdf70,2519051214,4375010794484441676
+b7899988-f5ce-eb46-362e-953f6ba21d29,2762494484,7875251876677063084
+a346d908-c195-6524-0519-a3e1b1b65437,1676783763,8558234915523583547
+a15419d8-5810-72e1-fdd3-65b9e808e10d,3325612769,13246169125662704839
+322a0b7c-c23a-72fc-ec0c-bcb3d865cbc8,3502369105,3450229314067484847
+491e2174-dfe1-14d8-8bb7-466606778e66,3763062093,9405142201341715725
+e10dc8a5-60f4-742c-3e1c-f95a37c033b7,238666190,1927704688910619675
+f526313b-8059-b47a-da87-48c6439b6ac4,2947949135,6441613980200298912
+e9a9746c-4c36-1292-6ac5-8fca9a77ca4f,1926192375,12937048264218479488
+b8418046-be60-e5ec-5858-7535eb1e125d,3903829311,7320145431771311897
+b7f8bf8e-95ad-6946-cf9a-ac32718e81d4,1884286099,5223372107891973329
+7a96252b-0ff8-1ca2-d93f-d8337e7daddb,3021925413,125419405943881792
+26471dec-e675-490d-47c4-aff08e609996,3287707701,10742321513834621727
+0f021385-616e-82e4-9116-6684beb5c70f,2264673163,6804995418746429829
+81e13d9d-322d-7b00-9c33-1a4654e84684,272573807,11774584193087961454
+825ea5fa-bc04-62cf-c030-24ff8edda28e,466570890,8180002239555223654
+2f0f71a2-0a6c-87ea-33a4-396aa0957b36,2131395439,16641894687631598401
+de6868c1-45a8-997b-9b7e-aa16ae356b63,2137995579,9670682230309973938
+ad46d52a-8d37-1ae5-79c2-8ff4ef802acc,938323699,6259514865940165466
+7f96861e-f831-0294-fce4-18219660e02f,2531443994,7860104096805162976
+31730ab7-c5e9-a4f2-c172-ce43bc1c8003,76991676,18104793961559840985
+cf94d2c3-0b3a-eb50-a022-2d355ad868c3,573836498,11426545507329794185
+29e8739a-9896-1e10-66f5-683c97aaceb5,3697495924,1978891496545671794
+96ca68b3-19b8-cf7f-0051-f72cc18c1d39,1320022144,13857652599555439099
+c1fdf9b7-c0b7-976a-b0ec-fca130d8a2ca,382327659,1874885545968141873
+fc96aafb-21eb-3ba0-4473-29ae71ef8ff7,961295604,12847733382097242641
+d2083851-9109-22be-1977-d67dcfd03287,1547180130,8816928613395473592
+ef5caf46-fe6d-de84-c287-db74ee09df1e,1966744957,7201880935334592938
+b275a312-cd0d-0d18-ed0e-f981c700affa,1204440137,1443903439489405994
+84e54b61-9858-3006-664c-3f097615d5a4,1597987433,9631352965911627816
+030311f6-f71e-2b0e-6dd6-5167f0dde2b2,4128194461,17218408768863422922
+a7df65eb-259b-fa40-93d7-cf16156e9a3c,3606781550,10156903972316258040
+3c1f398f-1862-b11c-ab9a-2b75f2a62508,3221823767,16180790535254175829
+a219422e-f959-a01a-41e6-ee0f45b67b91,2811665676,2089361298927975721
+6741d0e7-7b4a-7da2-944b-8898dce17d9b,544505593,6821330878311639898
+85fdd7d2-7530-923f-d44e-7c0eb9992cc3,616617904,9280400885352537438
+5f2e55fb-e426-3dc7-f8a7-f9c8475484e2,2357474805,5172775217401771114
+a5dbef91-80cb-b040-ae0e-7b36ac0a0a2f,2307162855,11400984798597547427
+fcce9a60-dce4-c8ae-5f01-7083e95b3269,751276532,1495320607760425482
+804d36a9-f5f9-8b6a-4960-5cff6ca52899,2359329087,16683130172765303239
+9e17a9b5-fccb-ad1e-1529-35071b25c2d0,990391895,10033174231585052830
+888a71e2-0038-b625-6731-104b182e5b7a,2854022282,11663703331622261057
+38d7cf85-f650-2dd8-73b9-c34cd64d6745,3460026407,9260125291612556997
+b3c626e4-9419-f387-9fc7-2b0e515775a5,3703340938,2425990247398451310
+62b0b94d-746f-9a39-5c30-12544c2573df,898394785,14453780235641806669
+7079b250-2eec-87db-926f-fd9f3128b449,2206895734,11870238573389407392
+c261bb33-3f35-090a-89c3-7334facc61ab,2566434986,5247536846100012997
+e1954085-3de5-9b41-0d1d-67af2ef8c6e1,1348122663,17419946553439856822
+98501be2-8fae-c814-66f7-258cf4c64dde,472411552,10904270375010603978
+f0d4eebf-37b8-67cd-f4d5-4380ed78a987,4293529802,8798767756729882085
+76cce962-c1ec-61bb-8732-268c0e99c620,1617953216,5726780388995514528
+5bff30ae-4cbe-98a1-e9ef-dd6b51f03218,1151887580,7183401512253901893
+5e9dc19c-d748-f6cf-41ef-b685d6e10183,3554804658,2644388482925701426
+50fd37f8-74ec-1747-78c4-f96f56d8cf58,668178973,18096378488441008572
+464cc84a-6a1f-0b9d-3649-fcd7b8191b4b,3831199028,1022101156126915556
+2ce35186-e26c-906d-1cd9-5e1d789fb063,3681791525,11417915656369750665
+3dbedbee-f15e-43f7-05cc-b37291a613fc,750781698,4448532361658211464
+2998d859-b932-f8b9-f93e-fa7757ffa3b7,2312981588,7103596298401491792
+7e6f9d1a-62e1-8f04-05c6-e30717822914,2302151297,1041756087189504880
+a69267e0-60fa-b490-fbcf-4303c23d01a9,4084339731,16089510253995914414
+8e8f6bb3-588e-a274-3fcd-91b0dcc7e8c8,45602594,1923236834064132528
+01def2c1-5e4a-8d66-dbc3-b90b51703f2d,529042878,6891041833714055671
+7470c1a2-b020-72b4-299f-218f590b05a1,682337100,12286622493347921953
+005339ef-57c4-2534-0cad-bd89f49b67ae,4233447151,4110973207100505632
+9c3b6552-7430-c680-1183-fa0d0c2cadf5,3189239386,6793261274034282899
+dd0db296-e713-e61d-6655-467adaa9325f,595714179,2395068261655721996
+fa89be9c-c4ef-293a-f843-5a9803451f9c,1768229050,256617945009220892
+e8e88889-0c01-5a36-9980-a8f0d5318fc9,2819987280,11190646925273702388
+6edc7da2-ccfd-4909-8283-c29e45ffa5f9,3518984323,7893821624640267344
+586ad2d8-d92d-7b9a-aed3-903dad1cdefc,3091923864,1595334045300690526
+6351e3a9-ca0a-519b-0c84-376a5a4ca7ef,859494235,4029410008117785718
+0ce8b6da-df32-f007-4a9c-3348ef39faaf,3362945171,991827367233162457
+a6a56684-4860-b292-b0fe-596e9ce930fb,3723558419,3188396652119539672
+a41658df-c929-736d-8aa6-a42dafb3424c,2357445276,4468496172324237037
+2d6f5220-744a-91e7-9077-1af7b9a217c0,2321605138,9823428886267470824
+eeac4fa2-8856-2639-d2b6-86873ea91f6b,513947665,13338585712667386034
+1807de72-2bc4-e729-5243-c87aff20cd86,495066476,6758974563577388317
+6f5db3a2-0790-51e4-cc51-9c6f2d79f548,2537833052,11433054072017141602
+7fcefd3b-91c4-a79d-d685-c0a7b27c2594,2149046421,8366430336870480632
+ccf1db63-9e9f-13b6-6b8e-5157258945a2,1866243087,17165917079857758751
+40cc35a9-c819-7d57-3a53-123048774782,2032787512,9521631328255863096
+fbf59834-715e-6fd3-ea72-856258f22f35,1556098617,10541022098559713946
+06bc9e0e-f411-b9dc-d8f2-f9449f0c35e4,3275306173,5893172897361401374
+f0dcc20e-95ae-34df-4f71-55aff9474ad9,3599717486,7743629847941285730
+c2d11471-62dd-750b-26af-561163dd7791,2849905939,11384147596328218720
+81a9de19-2c26-7838-60fd-11bd73bec794,346195431,9148710099024080805
+43af9541-92bf-2767-07b2-a3b0f5738c29,3207590379,3370189787583975369
+86d7dd5b-ecc5-5094-4e99-2b4c962df7b4,328215993,6217738437926231930
+c20be1b7-2b6d-4cbc-0a35-e678e4865441,2558428669,16300645903730747803
+db8a7965-ceb4-0d60-becc-a20c69bc95fa,3784905752,4756618654705767340
+a5ba892a-b184-ca34-43fe-7e708cf79102,2321235361,13957015358590151215
+e660219f-2131-bccc-0621-53f3d536c0be,2934673763,8987048441750503686
+2fcc6ee3-a664-52aa-1c46-0e991dbd6b95,2005029519,13279267343267419011
+807ed89d-404c-a47b-bf1b-5b5784082929,675897754,935712579651480252
+930f88b8-a506-2d66-02e1-bd276795613c,1973390683,2141270163572934482
+a43e6e44-1613-7e5b-cc0b-8d4ba7c675cc,4050826185,3149659661083116887
+d19ed5de-2a0c-4766-86f9-c4db529541a5,912519681,12949645483018021350
+0623087b-afc8-05f3-4f10-a0970644aedc,2563499659,2619827330020361243
+8683f859-bb47-4288-c5cc-4c84ed20e4ea,3483413876,13034649096203040365
+23f2989c-4bf4-5eb6-5185-f0f977de2ffe,2055951040,5940122858397592529
+5f1d8c56-0f08-4004-31b7-969f8fa1eadc,47876208,12604431694179836879
+49566b19-1648-a2d3-c721-163775a2eb39,851980500,6462847017993311634
+8fe4b781-9b4e-af83-e7b6-3264ffe60003,990489006,6350047881843187048
+a53c4ea0-5edb-7625-bac1-3a5dc5866432,3465467952,7164195258682003985
+d8d66ddb-4a3b-67fc-9477-5a96e307810d,3822834754,3935062148696642174
+e4f4b53a-faaf-397d-7c36-ff536f111be0,857232563,17174951192463520079
+63425402-9d30-1616-da09-07ec3ecc95ea,2859085906,6994842240944269653
+fdb49e87-8943-4e8f-21e4-8365aa85861b,1699011519,4344302068349775570
+48409fbc-7239-87f0-a0aa-ac9e3cca532c,210842396,17001125222181134132
+4954dffa-93aa-7178-7253-a03f4229755f,4208364887,7887166683246920556
+b42e390f-6012-214b-fb5f-7295dd0b0d57,4049664536,5684630432814181335
+0791e55a-f2c1-2610-d34d-f0e44a8576f7,2113636985,16122521759430394504
+c9c62504-f32f-da13-d1cd-f1c5ad20856b,865577229,12052855529443343592
+c7b2b252-ece8-a423-a68d-b867aaf84a8a,3807243657,8437655463393523584
+92d41398-64cd-037b-a220-7b939b038373,1406336698,17179499561724007048
+2a89b788-41d5-7c29-d0d6-1d52030b990e,1579454186,5417345275861498177
+46f46250-5903-279c-a6ef-1fb89c5395f8,3038566952,16862887183145359777
+b1c8876f-0974-a8be-f322-2fed2aff5513,160913877,1306011289171326890
+0270c93d-9609-8197-e878-c6989f6135bd,3661827048,18206272538210405983
+e59bb937-a7b2-6be3-bcd6-7e6b9d05faae,2125404354,15497464069005456112
+228f4bbe-7ffd-63d1-b2b3-38757e233f27,966588886,16441136194483316570
+1a512f8e-895b-acf7-1d06-36ed3e6e5d6c,1012453381,16740733803597396172
+f2b4d603-2252-0ccc-9823-22f70cba934d,1326253762,6389288156150758381
+3d26aa0a-b60f-8f6e-08f7-856d8e664b63,2038232391,14710868039824770709
+a6d7c980-67d8-e330-1f5d-1822953fd102,498678806,2316298299947087380
+d7313553-4b35-6fe0-26d5-9724d3b21067,3875922111,17173947667758124382
+bf6f8d13-e37d-933d-e8f0-045026d2dcf4,3982513525,5013302541218972772
+4e102193-5ea5-4e24-46b5-f647a4fc9350,3043978518,1027429211308703703
+d44f3867-38df-bc19-4eff-e0b61298a62b,3487322593,12933586594856858221
+177625a0-4b94-dbd8-6bce-8007e0dfe27e,2552066486,14305115694818437569
+627ae54a-0ae4-cd1c-98f9-730c31f75e14,2010059070,571393666898287994
+18fb5d78-e017-75e2-cc71-5f5688bfa7ee,302817303,14150952265137926965
+ef2803b9-4c36-9713-c1c9-2ba6804d8de4,1921453073,2127429418286689358
+0b887c24-c365-b340-9e4b-ec1a385349de,1965108380,14194567495356950948
+3463f6ae-de4f-ff03-e3ee-e43721e5d34a,3401735755,6962653732888699741
+a6066121-a37a-9a9e-3bdd-fb9fb3623d80,496894939,16901639148045641602
+d5de34a5-8bc6-66e5-a994-5ea1abc0598f,2972840585,7331819117663937112
+4e41cee3-f843-0321-b5da-9d8110a594bf,1544026380,4461941381689754852
+f5431b25-5194-e58c-5459-95e9df95c02a,3381935491,3814620606254374961
+b8e816d0-01ca-dfa4-15cb-ec0a95e1d0c5,3174675209,12605432707992964154
+771fa52d-583c-ee6c-c223-70caf26fb7f3,2471251634,14810766432037428498
+474c951f-8572-d90f-9d3d-6c82b94b027c,167220046,15327464687788425958
+febadc9e-d183-1934-16d6-641ee124563e,2961348512,3974512174063172384
+23887861-d248-9892-8cb7-8e8f973dd46b,4284458321,8883247804152723203
+0e179365-9c68-198a-8a1c-205620ff29bb,3161239557,16006466017672941068
+44ac76b6-337c-2a7a-e52e-daf1df3956ae,3271071874,9366677808620880270
+a5f123ae-9387-13fe-8059-899131512825,4131785654,12552796279282351523
+2258f270-db5b-9ebc-16fa-1beba448b83c,3914086161,2972241138629825319
+1a4cc336-b404-179d-604e-be11dc3b8fbc,672452024,7745994913163386662
+b029e3fc-5410-dfcc-f104-e72e6be677c4,2355468508,4841600875373955708
+eb86004b-91e3-998d-db6f-05cf0c553e5f,2375974903,18110174684571361790
+2fb569f2-9d15-46a5-ab90-d79d0bc3e34a,4193687806,15349431463553258820
+020dca97-c6ff-487d-80f5-ea13d37bd09d,3299700171,5350550708887192037
+50db4687-6d4d-891b-d57d-fa60b217cd87,4214480168,6500832608415174997
+7f7ec1e0-4429-937a-ebc0-60ec2198f2e7,3088748723,2910891491205270662
+fe6cbcb9-79cb-3b97-8299-2132e7fb69bf,340363657,1059994294650993132
+fb756f2b-4824-bd75-1516-8f496c7700ae,3146300806,17961190246760064280
+9bf5b171-8d28-0445-a8a8-0eeaf62fa4c9,1776089850,11925301999315242422
+2fcb4afc-f528-df32-b72a-8156cd684b1a,1531256469,13896171265328979535
+6af77609-df4c-b9ab-489d-d0bc76ebe14c,4158334311,6966872437200143006
+dbf1fc02-de74-fbfa-9307-0511702826e8,1139032944,10657411286622939269
+0a225977-0b9e-d303-f108-a70943fe5951,1642587797,5289268682882790095
+8f1833a3-65d9-7ac2-3d76-2618d29b9fb1,996285135,10961870432231190730
+9b4e724d-c432-3805-0ba1-6ed32ff7d3f7,4042426714,8497558407078170740
+f9402b5a-fa7d-b362-4346-32bc51980d0e,166042399,7892462559752392996
+40a1ccc8-dddb-32ec-43a8-84653e768e03,1008170051,13929773421061300424
+35be0d84-ddf4-b9af-aae7-006e3694d044,2494897930,930135245523645346
+560dc2ac-cf38-c317-6d31-111acf4096e1,2982865003,16405449610363930325
+c14fd5a5-81bf-f75a-003f-25bae375b9af,1257752506,8775225196387798707
+62e8f10c-692f-42ce-b73e-e7d48642dc36,3889566522,17323149187440685880
+60728032-69d7-d561-c223-e552023ab84a,2099969853,10280435021266740476
+191082c6-8fdf-b93c-b75b-4d27bcc10379,3988997040,11365879587031827319
+35f78f8f-4272-1617-72b0-3603d5259f84,163689772,11115461302540466986
+33b785fc-7800-0742-c3a5-569b5cadc342,4030823663,4677055221889500989
+df2fa7fd-4586-6b41-b8bc-c0ed17f8c2f8,3130168683,12377881053487194340
+3273dd47-e69f-04d3-0ba6-0675da2313aa,1686884157,13334645081480375940
+5b300505-4716-bb8a-60dd-a0090aa0ff03,3556772539,6101374576847120264
+09eb3ade-4737-5b71-5ad8-15591f2077cb,542703003,1254887446425131031
+f5972076-6820-dbe5-009b-7f5feb71846c,3022722793,684215246056042209
+3e0c94e9-eabc-fdd6-152a-6cbaf0424ecd,174310606,8635002866575321816
+b58f6dc0-2e7e-e6a0-ff08-75a63d2cb26f,3108788950,16176564030435137138
+c6b93973-a643-7e68-80cc-d34e3fafb5d8,1548424336,128438836776788458
+8d838656-1414-c6f3-ecb8-9882faaa42eb,3483384334,8455085942841995849
+2b64a800-40d0-c536-fbfd-dd90a1c3e093,3860995455,9411875027405645818
+435eb005-c0f1-4a35-795a-3fafcc8b04d3,1955231660,8525192447064361458
+43c76b7e-3f23-411a-17aa-fce8da5ca915,2624076516,5193805128356121238
+3c03cd79-2d5a-86ce-8f82-1b0af1762c01,3511463146,15275815498333597937
+5a8b17c2-9274-c0e0-2144-0506ef2f3cea,837832658,9466798221502313054
+34b90078-cf46-6847-82e0-c9ee0e2c5351,4090228050,16411110153963179494
+ac4fc9ad-ec4a-15f4-6620-fe9752d25a4b,3431545381,3352621383231469718
+02747066-daec-0980-ff5c-e0c0b0cd310c,914606990,14950597250907757007
+5f018f17-5e2b-e7e3-c30b-f34155b5fbbd,2628324784,18283187299146521211
+e9434f21-ecc4-ea2c-eb8c-ae353f9b2a97,323424419,12549936465149083208
+b5e46de2-a595-d642-ff3b-8d1ad5743cbd,343650669,3537294123844641093
+3f19eb2f-b10b-9fa2-2973-e3b7eba9b842,2257988437,13001388962982733762
+96ceb64d-8173-0a52-0209-ec6362ac8b34,3644717613,6199871771144199835
+fbe4f989-dc0a-4349-925a-2ea616fe2cf3,2924517516,15976566164079198741
+00017064-b52b-f59c-fc84-987eb31aef1d,2544283651,979358467702402750
+e0fb2bd4-ae23-8545-62da-05e30b55426d,3574780313,853822238064072128
+55afae09-8e2e-7d70-e7a2-6f6a1b9c8b1c,3102445753,10020877245079672628
+9969f81e-5bc2-7760-525c-9080a34cb258,3756794823,4717837289754528099
+3e93a40c-a734-3c1a-734a-b3c112cfe791,1419953824,17379474559056807710
+eb52362a-796a-4c44-83c0-fbbfbeaab5ae,2532456376,3659411521285013059
+29034ce0-b72d-fdff-b78c-aaaa8246295d,2186431712,1317484467004107343
+e0404d8e-2576-9d44-f34e-e50b69ea22be,3997615023,3721734264355912661
+acb98b4d-8d10-4219-b03f-69d040d0ddc6,201854846,17320357572221979997
+12d304fc-f91e-7028-9e11-0b7fdb3ba31e,1848242525,10742067900025000435
+7486635e-ed4f-584f-6e4a-e2e473bce895,1772058870,12454104714677948552
+dbbe2135-4eb2-62b0-d206-8f5197ce4b95,3397462734,17601631943595015417
+15e8cac0-a42b-4040-0e2e-acdcdd023ceb,3166981394,5869417016981972652
+07e61a4b-74b3-40e2-8ca7-3b41b2677c3f,3031205538,17389808752035903838
+f78e53dd-c150-3cc5-602e-353076643455,52059605,9554808773902072798
+d28834cf-9607-13bb-8b3e-390cd6fd5ab1,3282915702,3094602190866436071
+d94e44fe-08db-8bdb-b993-9b911e0ba929,3469385297,1236584412150007582
+bc1ee63c-45f9-1d41-a0d1-89d37c0f2b40,2925877624,18058540121412726175
+b32bafc5-edcf-c741-cd82-e9a69a90d0ec,4045121599,774585701767406488
+540569a1-de71-9757-f938-576c7db49435,1430179955,9718817437667622483
+99a1ae75-1e8e-f9db-da65-18676726968e,2450180160,11440634842556129625
+0926926d-abfa-dba4-479b-94d32367b9cc,1384880640,12723782311433220300
+e6c8910c-c39f-4c27-0187-123fd7c28ee3,2538123187,2464914140477760191
+773ddd9c-7619-407a-500e-80b53686fd9f,55428801,11687082948458543493
+fc053b76-c5fc-9219-398c-5528c5d7ab43,3183876855,4211732171684190488
+9fd20270-270e-a83a-afa2-28eb18a981b2,1755258200,5454974260751470732
+f7387152-3283-1eb7-b265-64bd7f549ba4,1237251763,15233733241123910377
+b29e0f60-0853-290a-a627-de61fafb24cc,1422587851,3732272338527895159
+d0f8c75f-3dc6-9849-6325-1c85f4357abf,3348858837,17937576026961651102
+35943d5e-59fa-a684-67c5-ab6756cc517b,1889335808,6414386405447827277
+dd51f7ff-a670-6612-2524-b5d65f2fa5d1,211215062,7466110548946061204
+77a64dae-c963-e453-9152-5c4fe255c480,2470811190,4803514901465088285
+e426c50c-ec52-739a-886a-2e55e2885bf4,72987355,7688453438742813622
+b111be11-b9fd-5207-1e17-5e74cca0895e,3457344858,16974928716582705980
+7671eff6-6e67-7bf8-dfbc-f321c172f80b,2249230568,9350484226399081182
+941d1d7c-be4a-e0b1-a205-bb972003f6b6,3563937730,1525357062320361354
+63cd64d8-ca7e-123c-948f-733f2b37cd83,1826788963,13972990834723375820
+df1a5ea0-3ad8-839f-fdf9-513aa919a120,2343366633,13662690602211341844
+06b8613a-1438-1564-b02c-678a795103b6,3360923915,15000893467343888694
+7bd06373-9c96-2c50-d4b9-f17397a6983d,518661965,6419448621412350117
+7273cc92-6d0c-7a56-9808-af8bc544e090,262221083,5417906816560227119
+cc04a8ea-0eec-0e66-3755-18157bbd3edf,280948651,4369443718714289686
+331e0c94-2a12-f985-1bed-d2bdc76a1970,3528396357,12575936015040771039
+ca39b91d-8b51-5909-59a7-ae99f3d66534,4110888722,17625530415775351080
+f667e8bf-8d47-cb3c-b31d-2c0c2895c6e3,305687211,8345336427451973698
+0198d6e3-60e5-fa96-ecd7-3432093bf7f0,2758176464,6837158047967442088
+f42cde33-7f1b-8e44-216f-6d7e99be3777,2970461397,10850217546449828332
+0e593973-be16-b6d1-3a34-01addd822dee,462349549,16755115406766561950
+e2226f4c-6bfb-7e68-48e4-e0737225dfb2,1182667080,219241014802275895
+c1e4ed38-6ab1-4454-b729-4c76889fb618,1680442867,8541601464024795079
+88a4ed31-e6c9-5cf8-5c9f-86fdbd077078,1082230667,3800420126939143675
+25dc6f81-a51d-e7b8-663d-0761d48c8b6c,2953705741,2858166017681995137
+7ef0a587-a205-4ddd-e64b-4fba85a80b38,4209628291,15545040360335927652
+3506f41f-116b-c90e-0024-467e74597c91,1990427551,12717277593030718220
+46e8d636-7a9d-4e65-801b-bcca1fda3f68,2489058898,9257271160268409397
+793f65ae-d60c-4fc3-66cb-3edfaf71a3c9,2309985629,18046670639141821645
+5ec99b09-b37c-93d8-dc3a-25bf0ba956f3,99869456,14687042375367666032
+e0df9bbb-4a9d-918a-e8b2-f1c26da5137e,2940125384,1241581758563614127
+96e52df7-0729-c629-ea59-50420535c145,1089059799,14822579089264476051
+69156dfb-645b-d12b-1ff9-fa423527b2d5,484484902,12142341687077637165
+74d5d5c0-f646-b817-fa27-b8477ba9afa2,1755199618,1114454188234034528
+49bcf38c-9474-197d-540e-6a78864f1847,1770387535,6870062361326857501
+e1430640-5951-550d-db99-5826aa82f3d6,2463765394,14896748846118589052
+8530f2d0-09d8-6d8b-0286-362c6959588d,4164060824,3528675479407047156
+8d26abe4-94db-7a2e-eae7-6c09d3502573,581903075,6194300857303742620
+2d175bfb-fc26-de7b-8f19-93309b41ad20,3178899171,5759836293935176253
+4c05bd12-a15c-e0e9-3162-5d36c979c800,1105652674,6404357525230841004
+66b3e431-8d80-b118-25d7-095e3914382c,1554284262,13690363291492162818
+f95e5487-d15e-6378-7b54-ae9d8648b133,3714841027,7160136603455003212
+78b74225-507b-9964-0219-2d562d977841,3874099974,14676628847954583370
+2a381094-5735-4a75-b19d-c9ab173d0dd4,3014389138,1822647119362441417
+06d907b9-8f1b-9320-a49c-80f18f815369,3479509131,5451938145270915453
+a787f6dc-aafb-0a28-f3f2-31cb7e743901,4126778587,4267202167196537080
+b146bf43-d0cd-3aa4-6d82-a83fb265dabc,4269123263,14549399061656862642
+d285faa0-ddc4-f13f-f981-75b2d4113085,2269213148,13218794820589643573
+eb3aa327-259f-986f-af35-8e7300e5be3d,3496363995,7623883376364834711
+bc9a8396-bfb5-452b-06e2-8c11d9ada8d1,1159374071,12976906780641987788
+7bcf2b70-f51d-60c8-dcfd-c7421fff9b5a,2494686500,18235023800837258357
+f6f26bdb-845f-93ff-01cb-982546a8db60,4081338359,8981771464454400807
+8ff2ac4f-c79b-b459-5708-25a8544c0492,1122260756,1395631535236973812
+5edaa81b-a7f1-4315-a1c6-5b93d6fb434c,21670741,15280422022033859216
+c7ffb86c-bfbb-9033-eebf-be4a969c9901,937202241,3147801740143777283
+69eff429-6297-b8fa-421d-5c2d6fa103c3,380257300,8510563708371676650
+f46626e6-f460-9f91-5f54-6d091f018f4d,3208229657,2547451942711197436
+fd036ce0-9429-5cfc-cd15-208261f9c77e,2400538062,16450470095443549394
+7d99802c-432d-9335-accd-751701a134c8,955314351,2217949033407359633
+9c335c64-3067-c0f1-1bd6-bf0c1a0f5388,104971682,16571039708569391528
+980eb211-4a70-0cb8-f59e-c8e2e5583ad8,1406780669,4690265948026856534
+b2d4973c-1227-f448-2232-8fd472851717,3908100194,12566595778072882873
+e76f605e-7be4-07cc-cfec-f35b5315288f,2677816322,181649810825730697
+76be782c-0271-a217-66e7-a7d9d962da56,468339417,7648260820824854314
+137a5c17-78a8-2922-ddda-c606970918bd,246893647,14360599515064276516
+d9d041a4-ed8f-3885-a6b2-7179483ea6f9,2585144044,14783197144171208942
+19ba9a67-9634-519c-2627-83bbf9a66e86,3947816070,491971474195517849
+b02fb2ee-a085-36be-1a18-65d48908abd1,233932402,16657825650847274410
+b18adeb0-b9ee-7377-4393-d2299463a8bb,3787651795,15455185817969019958
+31e1f317-725d-f055-4cbd-1b56a6d3c59e,3334301743,6994030932517988849
+a604fb88-6ab5-b517-eade-0d210170449d,1605631217,9630145361596980265
+723b1557-7e84-4a9a-a4d9-6ca18f6e7141,3780134988,12502923844926808807
+bb63eff7-9c10-6133-a6c9-80989a964c53,254748522,16923694560737085250
+d5b94c71-e44f-e2f0-70fd-c958fdddfa1f,3101630862,1186345175552081179
+aa3e3a49-8082-ad11-1cb9-09d605c3d00c,1842037470,13920841442489462114
+5084b140-9dbc-6cad-9331-be79f0db0fa8,3563044366,5141385508466900264
+2bddbfd3-d0cf-7beb-7736-85675660a6e2,2445332616,3906821238089676482
+240674f2-433e-8e5e-75e9-1a1885b9314c,1363072838,6545435754795221614
+bd2b3cef-4071-3a3a-5278-77a678ad6f6b,1344951584,11897364218783718215
+b81d645d-3b18-e909-2109-700b317eeb0a,1716093810,13709158449512887478
+49f51b90-6c7a-35f9-f245-817e19342be1,1482152004,17654956848544459820
+1824dc8b-85e8-02e0-6727-23a88a10b49d,1312860910,9991424016442563235
+47410f49-1743-a850-c2ce-a9131503ed51,3439392878,7606841972383740402
+7d300866-01ef-336a-de3a-3ad7d1935051,2591904600,6995072885064165206
+a2e260ff-5aab-f1d1-3324-38f9cc6469ad,1382120609,15490154426126975161
+99ea9230-524f-daa6-7bc3-850dceee4dec,3886663820,16130781087596802352
+b9de50ac-70d8-b32d-3fa9-602ffb31f766,4128387789,13040289388031637725
+46c6f4e4-3e27-4b32-2bfb-e20e3a085e8b,2981980148,4067086427067213498
+2d764662-70fb-2001-9cbf-308a33641eb2,1852471257,16604111811893712420
+a219501a-61eb-3213-a2e4-cba1bd3fdd92,3320824200,17258381115319568029
+e3aee854-7a46-69fd-cc19-df6cdca35639,1219527739,17443211761204218129
+535b3534-72e1-8cb9-baea-1edcab03c72e,1077481399,3367801737988668144
+d83d547b-271a-d2dd-2847-25ea15870f0e,346647145,9852985420333016083
+cd5f99cd-e941-0a4f-a5f2-944aad276b13,327686633,9634585093681278816
+8fcc1256-cba5-f745-06e4-05dcd06d2e6e,3155047732,13949340332231784980
+125d6a88-5500-cda7-1a3b-d1e88c68ceb5,343229309,2132988206987894941
+fc37e64b-dbc7-efdf-75c4-fecbf870d083,1885803117,8470271360514173523
+32b1bc99-73a6-d52c-0bc9-1b6064a5fa1f,1363874114,14693033547728795977
+9d297700-a74b-5589-f506-5d3db7ea6e28,2376611812,2593961071759863281
+5d8fc24f-1e18-69bc-d989-459eadd0c6cb,2326694202,3437554007418033259
+f881147b-d67e-2e5f-c8a8-14430a4e78cc,748756729,17942324940088332382
+e49a87bf-6c3b-5c0d-a8a3-c7b8d45a1b84,4177513464,6403692270216553579
+c5ed699d-6dbf-5c89-7369-4cf1c1eb1855,301648080,4101820405930837005
+678442a2-aee8-790e-0152-c0daf27a054c,3677553574,13750481431283178557
+8d617158-27e4-bb24-17a4-99165d89abeb,4266635662,9916740415600726776
+7f319748-64fd-7051-93f1-df9375776784,2297364816,11949438819862788348
+34081e89-efe3-5d3f-c282-03136e203d94,2941091118,624828900579501940
+eda7d7cf-4d13-5ca1-c990-dbee8257b2fa,3626632405,14310583206339784738
+e719e85b-d4fa-1cfb-4483-7db4901e5c54,159493357,5811576459136996295
+305cbb6b-adb3-cd6e-2c01-d6453621e160,502341433,7779628208414234256
+6e4b1870-744a-f15f-f209-8186400d82d4,1708048311,12414548622146820660
+71536663-c3f6-a492-d874-176697fea16a,1804651212,12813716586702070843
+a879dba2-7e9c-90c9-bc26-a77342232862,1424105492,10291084377818230683
+f723397a-d5b0-1c92-c078-8920546a15c9,1234903612,1685790462267881966
+feb2f285-46be-bf83-6162-9724264c391a,998009243,2744785558277048668
+f7a655b6-c7f4-3745-ecff-00bae8cd8405,671344378,6266596020127829996
+87b99009-1a49-bf5a-4b4f-6e65d9a0533f,1312052247,15818238466612475245
+208f7bf9-86ce-7103-b1ea-a8717eb07df4,1388252842,3195562017448021931
+85de8e6e-b988-650a-327c-b20c686ecdf9,2534418790,17490918731473661991
+dc523a04-b794-7937-afd1-facf0b173fba,123414715,5304417646134144316
+55100054-9ff1-6a7f-9afd-21543437ae77,2927495288,7336960289390841205
+fe8866a4-1d30-9bcb-0891-76e1b2e4dbad,590271943,1433983295326705747
+5b039d1b-f29e-fd23-2794-128d06809276,2430972360,12411973431097857653
+4cae004a-61e4-38cd-7fd4-1fea6d8d1ee8,2191329342,13933985707606952443
+f8d616de-c5fe-b9d0-d37c-bcec26f14543,1939011085,14407808720743965842
+d5b02aea-8903-e11c-3ce4-9defa82708f3,2616627052,5882576389200385338
+26829b74-c929-a65b-b7c2-2878f7c0a319,1581207295,92074299682999508
+5867a3dc-7172-c5dd-4325-e45b120d0099,1765314101,17059167637206223931
+03af74bf-97a1-ab5b-c1fb-0e28a0753146,4075388357,3716026231072068487
+b2d04bf7-dc0e-2fd7-5cd3-71cde03b5494,853778678,15578882540402232578
+a1202429-2d02-a9fa-6aa3-7b46305c669a,2371553107,5620094742052402817
+25cded5a-27a9-e1fd-cd7f-a067929bb17f,910475069,9955062572395986332
+df1c2542-48d2-2739-04ef-10816d401f6c,1174647141,3107459256641740187
+ed557ba7-303d-fe78-ac1c-889a1d11a647,1369049340,17698634351377524661
+e7cc92b7-b3b8-0e8c-e681-ad285e929376,3432304335,13644219996193932423
+037b87ae-eb57-0ec0-b8b9-2cc39410b5a5,746443275,8407323648208991497
+d5f7506b-2499-5cfb-5c5a-2837abf7737c,3555490008,8506143428064967137
+6d9c4e7d-0921-0cee-a343-00aee3b7ccd6,2386134467,9177520950335984356
+6b376d73-f942-ca21-2495-03b1aec6aef4,2322590843,1381990978420038314
+4402f31a-ecca-1498-bd32-43ac72e8d739,974151737,14515696283178920112
+7bba92a3-178a-5eff-a0dd-6a0e1f93fcc2,574956619,3312089909424489746
+ea023f16-4741-3f1a-8501-31a5f77744a8,2464279598,2181489370565853483
+677ac00f-0038-7606-2041-b2fac4fa12f0,6225267,16617331247349246113
+efa8e3d9-9c10-49d4-c6af-29a72f88642c,1703919157,7851684437691782649
+90f8ef6d-f437-6cc9-be56-3a77535746e6,2205426104,8885433222818593129
+93a8b966-1e54-a1bf-3059-2cfcfb9fdc4f,3680011537,11803373980776736257
+0e3b77ef-0b0b-75f8-6d59-3409f5fc2fcc,350562198,3215634665826083975
+3ea877a5-f781-fa25-2102-2d89a5a58e96,472757616,740551063948207041
+7a8d072a-a9ba-54d2-5b86-12e4b07bf81c,1167549251,10668162892820090229
+c5bcac7c-66fd-57e5-3878-101e468ce77d,3511696590,17408104925067482648
+4e0f1c50-ae50-be5b-85ab-6de66a14fd62,551748363,12534442929664784520
+42f4bbe5-f25f-87cf-9fa3-4c67b8eca184,380740410,387075421584305030
+44d4e2f0-b0a0-d5bd-007f-68be94df05c2,2444984291,8284002209855849885
+98cec0ea-6bf8-f7b7-8bc9-223085dd30bb,3042259466,1860657236745624828
+6893d74e-60ad-5add-42e8-032308d7ac42,3667105278,8999963927351085119
+80da2c2a-d256-4dd6-c2c2-73c1eda83dec,3196874737,8726994127379073554
+1dbaf375-6e34-b36d-d0bf-c281d8afdf89,1486741634,15040922342062461625
+99fc5b69-3cf5-4d25-d246-0b669a848dcc,2794859715,3653471106700394109
+f52e709a-7024-16d1-2672-027974667b14,1758980423,2318267950977634841
+a9f0af43-afce-6304-f272-04f4a2be5b1f,2201412931,8566207626071265316
+045690a1-196c-cfa3-27bb-dad4291d2db3,1187855004,13184777362939369037
+1244cfe8-97ed-4e44-57bb-d857d67db276,1325210397,1584405639372252697
+dc12c475-4c83-383e-43a0-4064788b2a19,1454787263,10341584842825869345
+8a8883b5-a20c-479a-6a6e-8fed9d1fa65b,2587896575,11873594342894706060
+c9d69546-c7c5-6374-d784-dfa5bbf2717a,4292483691,12871196197433164792
+6299e085-2e4e-4ba7-2aef-837c8fddaabf,3105197871,1448799389158695408
+ca6099ac-d3d6-bf28-e2e8-5cdf1693a06b,695526141,7202892410270239773
+8268db0f-e6b7-b531-143f-80ffc5e59bd5,3143380972,1629569520932657724
+b7297dab-6ada-0dec-9031-01fb2016bd92,4052110783,4411361890687810172
+ae369018-c923-c76d-13e9-4de0b75d39a3,303725529,5909045065130830912
+34d2d6a4-abe8-d665-5944-12098ff4b6bd,3492773777,12764866629892086607
+695ed653-1210-2af1-1f16-e3735db285c2,3199904448,17651619270999096536
+873a3734-8cda-f572-a6b7-88c5629b18fd,3082683975,3745545936101992353
+263b0570-90f5-73bc-2f38-202c27a0910d,2305227863,2470843229310847919
+741b474d-5401-e24e-5975-a14e7662369e,1823966575,15919349568539115174
+9dc41af1-e9d8-c5b1-67cf-65b76398aea8,1810078276,12365879460841007003
+46938e6e-a2e4-8c19-7322-322237d7a2f8,2649209105,1274546602119619996
+52fa5974-9bd7-0f6f-902a-83aaa3443d4c,2963598377,16077886778805353720
+1890ee02-8247-6705-8484-8521a746d49a,1435637390,17440271274055049531
+5a5a09f4-7f8e-ad26-b267-2dfa97ef1233,1154588396,9469537153537925065
+e850a7a9-de70-b7f2-664a-5dbc42599482,1000003758,15644023080990619874
+992b3d66-1575-f7ee-4c32-d6e7dcddbb19,3530375637,2346317861288866137
+da40b2e6-923a-05c8-fd1e-5bf5847f1df0,1006561672,3729117670301865995
+2beb3f6d-6139-e5b8-6e85-c14ff4811f31,127802314,5258113178146686256
+908c71fc-b38d-65bf-9fea-0b714c99654a,1151554053,5630630726620068957
+5d7fd3b1-e80f-2221-afd5-599db2eee906,1343678753,10878273881574552116
+c4be882b-c151-8bce-dc1e-bc9ae076d382,72589125,11478257966187729858
+3a79afee-3a90-545b-ebd4-6944e50e4c1f,1705135683,11095139889039891293
+660913d0-1ffb-2ae3-ef8b-d91ecf45aa59,490592208,5420127250127546226
+e369fa46-cd7f-c5c4-83b0-344f6f2ebec2,4074354613,14533930776939712672
+13dcf1b2-18a6-ebb8-dcf5-3f1f28d727e2,581669186,7522668989676347214
+a210feb4-9cba-1c8e-c1cb-50bb63afa674,3944979047,15617528910444956713
+02bdc066-2f4e-167c-b1c8-0549e2394804,2544202864,906393008801902528
+c5144a3e-f4ee-212d-9f3e-b0a733376955,1915121919,704320572433202359
+9589f1af-c30a-509d-4e68-6f5ef7cf6339,3820901442,2604926919773009818
+80be56ba-adee-1337-14ea-9ecad6702e46,3433682302,14118682741216688222
+100e3926-fd9b-ecc3-4dcc-b54f6b37f3ff,522745657,17698558461519886851
+35565fcd-082a-9ac2-439b-3f7f6620729a,2637640488,8704530242577864640
+30609805-55fb-5700-85d1-8eb51fada54c,1243784913,6298764411679977108
+a519e50c-70ef-27e2-4190-52005dd79d93,1801696356,7994953740383506803
+9ffdc02e-c178-f8a6-1b84-bf313f10f4cc,3981093994,5792049538951994865
+0eb1d898-6aba-6d1a-1e96-b866cb1ad598,434775888,5613436711990361744
+86d4a88d-9329-7cda-3ef4-6b136c43d64c,2854928763,9848642138607877594
+5f67c58f-48f2-9189-7af3-96b51ace768c,3808659073,7645955064139322675
+c784e0ed-c075-b065-abca-cc937720aab2,2688507639,10795051157020214370
+53988254-2986-c411-39a1-cb51aaa92723,3493872425,12122947294977966564
+8e4f6134-1b17-4635-8df8-048f10d598f3,2086811647,949765402942049866
+ee78f419-37be-f292-0f66-9eb3c9705e10,3619736312,5559892490606392984
+672d0132-2e7f-6447-b77a-06f9150ba65e,1815662991,16031156532273557353
+18fb825b-b797-44ae-f29d-d09f7605e3cf,595740405,6429546079626577166
+87769266-d849-9550-2808-3c0cb7e32edc,1855651959,18386178489025047183
+c75b5031-799a-b825-1d12-f3a7e63a005c,1672367947,6268370543884823952
+ae911543-0119-9262-ecf3-b8f7c2ebd946,4108557139,6656199956155024944
+8072d880-4830-6f49-4ba4-26a2980beedf,3082864604,13769264172502929690
+f36ae87a-ff59-e056-de97-d8c0a9d28efc,107426030,15393297000793598533
+3238881e-be67-cf5e-470c-2b63741dead8,389959567,5352557605743115124
+5c2e58fb-956b-3880-0a84-c59c4bfc9446,2197051144,17792438101036451693
+318216c1-0e1d-c5b3-5ed4-f9cffcf8eec2,3026792376,15860223228451437983
+8e16cbff-a7a6-e306-b791-ab96fb3a29cc,50352700,4508730546864570084
+e46292f0-49bc-2234-9a3b-204914a21cab,1939318827,5524068286789665558
+575ba875-54c7-dd0c-e57f-c13656c58194,3332689967,3101044450253913138
+9e26c6b2-8544-47b7-e105-422a4df6a7ec,1368590260,18076732424726808547
+691c185a-98c2-b2ea-b40a-cd0132623a6f,3411470319,973609149920709063
+b79d9eef-114d-44ef-38e8-9f23b1216261,504972512,249985633450036011
+57c4087f-dbd0-4d1b-efe6-82bd27c6f2d5,1829443532,4837562010724460308
+06df3d86-21ac-1439-0e2e-1517ec72b3cc,952085337,1642272004353859102
+731c7d46-fff3-c3ba-d2a5-f6b58330b0b6,3137473073,2277140785382317253
+475c611e-557b-4e3b-07c3-b016fc742a97,1115155497,9978210228670791780
+24bb4265-1237-4c59-df23-7243909dd560,742221535,7055229314600954676
+b889dbe0-4825-5761-070b-7b7b9d623cf7,1514538370,9439106858744176019
+17c987d7-ee34-ab49-91dc-ad32d8911328,3482291754,3558027581680231512
+33f11f36-3b70-6123-56d0-821d75a5b9e7,1561385703,15278183685887124051
+18d40a2a-e727-2806-2177-fecab7119d1f,2412379987,15832332719104833912
+5f4f2212-f5e9-33ac-75a0-d982397e3c22,3497747493,18048915221704523913
+bd65d207-a0bb-be59-a5de-e1a189604130,1274969352,12099006027726990864
+2752a1a7-d119-b5f5-8517-b0655c918d98,388224358,4663069725459176584
+6d585cdf-a29b-cd8a-86f5-d95053db0091,2296603215,17830297960402416885
+6dd07e5a-ebe1-6c5a-0a3f-00ffb0e930bf,2780001927,4043546355876038316
+b497321e-61e3-1acd-8e2e-75e307488f3d,1592575737,1148223787856447447
+70b76859-1d80-7991-3939-2da346a8ad45,3289877892,2399558324904802897
+31b7557a-0384-535c-225d-de130318eded,2642726219,4095189212745640369
+64688f5b-31d5-2304-6ac0-f254f55ccd9f,1888790154,52751132494114678
+e132323c-3a71-5835-637e-9016d8b90659,1952073802,16440452050269785415
+3e9fbe5a-1655-cb6d-2ebf-ee9fc72e7a6f,119418512,10042808655202854138
+38f54c4a-1409-726e-e6d4-4a440d6229a1,2092902502,3599589161175197769
+b7a97c06-b0f1-81f6-a983-2567d958a70a,1987062962,10449295731520633090
+1b05bbaa-ede8-8245-2081-7e677aead0e6,2829723600,869080832956174787
+f4e41d9e-e0f9-be13-aa50-0a975cfdf3a6,79552560,7845497322763191539
+75b8de97-54f2-ae1c-8eee-1390e257c99b,2259087446,3452521543042827399
+224907f2-641a-9fe6-8c28-e1c897ae31a5,3817106192,17255313295994992477
+53da78cf-058b-c8ec-b7b0-4548f914bc87,3756866899,4491585994536202757
+44aae240-418e-5a3a-3166-acbd054fbf8c,723342302,2654550501818115192
+68c1fa39-2362-b75e-b6fd-770636653d69,3958706751,15828437127296198172
+91b7c08b-7568-bccb-bf95-86bd605f953d,341503059,4718115845057751988
+2745bc5a-cd19-991f-20e5-d2985828d8f9,4115487831,1245695726731850417
+b5ce6a79-7ac1-fd81-7c3d-4501ada606bb,1124898447,6224649490732141164
+8f9e01f6-18e7-2fc2-478e-eaf517ee1e0b,2956429419,11565667540729973548
+aa8792e4-3e0c-d153-6754-d1a395d4f7a6,2127783989,15214548740873410024
+362ec291-246a-e0be-e8b7-1ea3e2cc2887,2589246232,9137664613575810213
+52a70030-d6b9-72c5-7ec9-b49f56978612,2547437613,4723125815956795848
+813f9c48-f1e8-0a89-c764-77ef13c48fc4,357351329,4949614594372044779
+5bbc8219-fd41-19a7-ae2a-deed6eec9de1,1874071922,4836772369718994340
+c488420d-f978-a94c-3368-5fc0425e29a4,560386517,2123895855858024721
+d495a4dc-dc02-b2dd-df1b-47537d5f0e2a,1028181201,17052993237403751572
+d9cafcc1-4cd6-5747-f646-f0a370660093,1023652931,17997342190312986326
+47b9399f-fa40-d137-efea-19f59116d992,1094448710,9536961188156010820
+c9e502d4-58ed-d8fa-5919-ecd53bfc0934,2268695472,13884679948492907986
+8d202afe-2bb6-e524-3af3-e9644376d294,1516068963,18027005254232376634
+f54d6cf1-a723-7c4d-f1ef-437875557a3f,2752704575,8810339955958820242
+1116c11f-c732-07c9-05b4-dff85270c298,3323535592,9403915101564126856
+ccbaafdf-4d0d-65d3-6ace-9506e353d138,686712927,8542793433097332347
+c1dc0865-fe29-929e-a34f-1576a4a2c132,3184012743,1326888239160804921
+dc9dfc63-763a-7e33-9403-591471e2b34f,1486717195,4816741137439849820
+75b1f853-521f-6a50-96f6-f2df6eb41260,868034150,17807345559586216135
+6e73901b-fb57-4617-5215-f7b278b6e424,843527076,3560544213980043740
+4ec9e1cf-d9d0-0029-ec14-190d90462da3,2518915449,86886331477384164
+78579a00-5ded-8a67-67a5-75c51a520c61,2091495322,15077892916096012567
+30479f8c-7ff7-2174-5600-fc283f0cb885,3876501556,15748846635932273901
+d6df2860-a6d5-84b7-5b94-fe22deea2b85,4250419269,7948420154417118104
+04fa1d38-c722-1d7d-7c0f-e56225310846,585825206,5686446189257257399
+2657e03d-765c-fde4-b672-7019933ea404,375558064,15923268728399947455
+993b0217-e3f9-2727-855c-02d0d24305c4,2394161172,9084146340483667268
+ef445d07-d06f-ae02-b0b1-26438d97bfed,1314619364,11291507978190523315
+45c62cf5-fc13-2fb6-ba4b-3289db19527c,2686243767,14130651786581720481
+b5a09535-1842-cfcc-bec5-cd274370bd65,3849055926,17409567173585404481
+1cb3fc6f-b021-2551-161f-18885b20ae3f,2146212218,8621846096898426772
+cfbb139c-3adb-8919-6e24-2c0ec677ca99,2382584001,12172634456404327864
+4c4206a7-0b69-0b5f-ab40-1caad2c86734,1665536529,8593313676660974632
+75edf157-0b38-4b2b-76c8-12eaf7190dca,3645429578,6863194666408196350
+6fa4874a-d4d4-59eb-1ce5-3350fb573f78,4238931890,7413534595618041029
+649f8f36-50bb-86fc-907d-eb36bb863d62,3284297476,8061725240469228899
+03454b4f-c530-0f3d-aa53-e9b9424abad1,4064301414,9333653855354270419
+62ed841d-9ec6-3a8c-5bd4-92bad4aafb2b,3973681894,1158622385008191011
+a161f982-fbf6-a99a-7e34-161f6c9085d4,3158835139,14823198544754543767
+6e1feb92-a158-b46d-8937-762537bd0f6b,3066431522,9249643822100789789
+a43f2248-6990-bf3d-c603-6cf52845e7da,2327031499,13183467501931197145
+ddc694ec-b110-b57c-8ba8-a1480b639fad,486990654,11526396639893320523
+e9bfe0d5-c28f-e84a-a5f4-d852f140bb95,442793230,5337563350650054335
+e9fae5b9-086f-51a0-c39e-5669474af417,350328978,1009944619416618387
+7e9cdece-ec8c-ec6e-f7c5-7c95092b4090,516484785,14343574114760054675
+002518ec-d9b2-f575-556f-2850b84e2a3d,2055341104,15617223276631829444
+3b935892-f0f3-56ea-d06c-d4eca61c71fa,1107227176,11732290042507347413
+3e21ee02-683e-f474-50fe-e43372c810f0,1027299494,16244439568723514870
+96b19975-af45-3cac-2f39-7214b1335402,3024706737,12104222407836479553
+16ff105f-91ef-9797-4e12-2283210adf1e,2455296835,11171416243807837360
+0d706cb0-b63c-907f-b613-9b5f21ab02b7,635703887,9892856354329748312
+14e72f73-8853-e2bc-0202-92b62b02be65,895187195,17658198745850600390
+e0a1ac35-d9d7-e04a-5d96-7137a1426cc4,2747079114,9503762381800252357
+371de745-9f95-0b24-7713-898067ba2b72,4232188096,17124575807559883318
+0a147cc5-b36c-2cac-a322-05d1e5baf967,2330277225,10969439235629370136
+6422242c-9ec4-d0a5-dc20-be25fe9e5319,1156438854,2001313617461224791
+a30f3f90-18f1-fcc3-d422-518564d6b80d,2703665621,10707030291325837264
+fd41059b-78b3-211f-e32c-2db27c2dd78d,1965826172,9280325493753265934
+a58a45d7-7241-136c-a399-eac60e55da98,3956671396,14190770361782276816
+89ec57db-61d4-dab8-6412-81637cab1b3c,3716561880,10910518707040980885
+d24901aa-ab29-672a-7917-f0dd4906a821,2160909366,6550672211226989173
+c7a8f833-b7ec-5697-51f4-b24b17e91fb4,674629228,13970808553715150984
+b1e2891b-a8ae-01df-6991-07249e2c76ac,1951818518,14469757165581967472
+888df443-703d-72a5-dcad-43313377b715,3291795316,8637586574772295198
+b464025f-e797-fc38-6570-c61eaac8b35f,3149127296,7301113194058349361
+8b643cf1-7688-1b80-8032-9c5da30393ee,207674448,18091210636170321516
+a2d77a38-260e-a327-4c7b-794864c6de28,3987441478,17970839266453464837
+e89de1c6-3e7d-7b02-df64-c8706dceced0,3034569923,5230045469844429407
+3e8113bb-25dd-c90e-f5f2-ee52eea1aac1,479142714,210403783296252737
+498fc955-4d15-69a4-8a13-a6f45fa308da,984739710,16269561544681142213
+f73c6215-b0f9-2334-8fb4-589141b9bef3,3912175295,8093495493951985809
+082ffc4b-01d5-43bc-4a1e-1c20bd5ffee8,1354484496,4912093669841006611
+07f88097-d00b-e2a8-d4ea-568a18193a56,1448190557,10635690587150485988
+7ea6f303-8f6b-7477-1cb8-b7145890d7bf,1934197117,6765161952231152905
+23d29a6a-8efc-9d05-b25c-e323d79e771c,1708702251,1007204034508407140
+1e38ec0c-079c-fad2-7317-ae812e999687,2591746440,12619950443023048330
+3052c7f2-ea0f-057b-ffcf-4f61bc5f7511,2425261566,15944069902169516766
+d4afee42-425b-1b64-a299-1c67d6aa41c4,4085550949,7337482118894733236
+3fe4a0cd-7d15-2d21-598e-59f76788b22c,1187573423,461466905981770802
+fb5f7f2a-f450-183c-acf2-da23ead52d2f,1941414579,165521761088287798
+8b92ab46-a20b-141b-e46d-d0dd691ef77a,1577820952,17425901864902102712
+fa29c819-a5f2-9586-6dbd-7dc9c089e767,1242819527,11838573185343174723
+35bfc409-a06d-dac5-c725-a26917ddb77f,357321664,8612541350505631572
+12ba9e68-276f-41c1-ec78-3cc652ae02af,644217076,10125525147134975586
+7b07017e-86cc-9015-9ae2-d05954e51c07,1627246451,7349363338683118658
+f007b80f-ed36-97ec-091f-3cd6153e8ca7,1470065316,11253255916506608225
+812cee6d-de96-88be-dd01-ba3c5ce711b9,2159368949,6862113123598369372
+d616ca8a-5b5f-70db-2399-c90d26dbc5e2,1010940619,5837532521625922071
+21b96c11-727d-18a4-245a-2d99f4317cf0,1836338580,5574338411037263298
+d724eb00-b5fd-6c6d-ecae-39cfc21de8c9,2389633353,17211411670698128675
+98fa5ba1-fbcc-c423-4cdf-5335c24ad622,3546738557,381727428555881947
+15f7c9dc-9d00-215e-1a1f-ac0a6cce3921,2834014487,13683586960516396168
+0dacd85a-22fa-3938-4a72-bff4e61caf98,2242461989,9646377060678247417
+721d569e-3908-f7b2-b4f8-aee1a805f276,2635211093,2207814446583921370
+99ba68c5-eca7-7082-1838-0e5bdb620fa7,3138943301,15881538710292943611
+acc1af45-9c91-b23d-7491-de3528ce4b3a,2508789936,9105747922550741557
+c4e8a57e-cac9-c575-0a29-b6e1f80135b0,181433390,3964438421781854254
+613d2326-153e-5f3b-c880-40576e4ff1d2,540121730,1146755561114022203
+c86b378c-10cd-ea5d-7da7-c2d6ca85b0b6,1479976515,3883576273937057890
+794a8352-c284-baa4-2b13-593b0672253c,2301624113,1608111731064286881
+112b0492-0841-4c92-2420-9b9614a1ec3e,1597056622,4212312156145007434
+96f09cd1-c38d-21a4-09a0-27465972a528,2239541600,2342746529114215341
+469480a5-a986-8c33-0198-f1862648237a,3558692451,13604771115755315999
+76d12f62-bad2-ccff-dc03-dbfa72cc5911,3567204496,8066915613073478594
+8ed954ee-0dae-93a3-422b-c6efb9972b8d,3996178907,9659314040660234073
+c32a3359-5869-a84f-f930-6f2939400b91,1355839096,878426509565653429
+a042bef6-d4c4-88a5-06af-a039d9c3b324,224812376,5993567281032772250
+a6195cbf-bd25-9413-1a86-f497182e622c,4009711315,5575493708472975706
+8b92176f-75dd-a076-8f69-cdb17d3b990f,2651925679,18338382096613687534
+9e453cf5-c67f-1bd2-c5fe-b36d9633361c,3697499126,8369517983678032575
+c220e51b-2c3f-a873-162a-3655e815b1a5,2628719738,6295606490266088417
+2373421a-35c4-0fbb-bdc3-49eb8d327952,3597760450,14603130573719541011
+21933381-fc5a-3ccd-7587-4f880feebe78,525048504,195463711949265301
+185b8a5a-8b23-d100-ca94-2ba0a97a4300,731549563,14786626930045435305
+5be0cb72-3255-385b-7b0b-0e7fe5fb6629,4293917541,7861552452475951041
+781028e6-2315-d455-23fc-2a21bb2d1789,3037052326,16317660556706777431
+55bfcf56-3c71-683e-a6df-4e4def2ed95f,2940910930,1766157963100662427
+2c288d2b-9b74-72d4-ab81-879ca46c3f63,2257346063,13662014329848328842
+8edf688e-f7f6-3f50-37bf-bcf304399dbc,3245466733,7023699992506149017
+04729dc5-01cf-0cd1-d796-1d7c72f5d57d,859046869,10062321774625333289
+c605e208-7c6c-7f9f-6b31-6e3813054676,1471048224,6676832129884586895
+9a66db25-0a4e-4062-ef47-82b9109f0d4b,3738103703,1437482459399259203
+087e9a97-7e3a-582a-2225-8dcced1796df,4049596790,14783493751354491226
+f37bf949-a9c8-fb37-f4ed-df98cb7baa7f,4077170608,9674409950890626255
+718252d2-ed50-94ef-2784-ce2d91b69975,4019488933,7153049984291342839
+4e965c52-8ac7-586a-2d11-cee1b161d8a9,2091206401,5487871686813109860
+1dae7168-07d6-385a-1542-717568e68d6b,1843524185,5481646863318656152
+7ecf9556-fe8d-190f-fc90-3f94196338de,1495674592,16163161304183649015
+bd6325c0-4792-0976-6f07-e2338153809e,3827707187,12686084031160640764
+735e4724-525a-61a9-b235-3cbfc759207d,2931731976,4392382908160941294
+1ea888e6-5100-be80-8d0c-0b6e25ea8d01,3101504719,87252023342241441
+65cc49a3-97ba-752c-b7f6-6bca88e612e6,3747642988,4222007587363280670
+13b6aaaa-2f04-5ca5-329a-dd62ff99da7b,393921681,15695957354206612268
+5f1744e2-6557-b9e9-a57f-e394fb3d8db5,3779921387,11812177626409363929
+09f3c7c5-c768-7aa8-b0ea-5c4234173ed8,1256074474,10129052979094937054
+3cf6ff46-ad88-ab9d-3ba4-3fc885ebe7de,2669494354,3885695977534264490
+11d9536c-172b-d11a-7a3b-b0494b9158bc,3777462880,13294219663938786112
+73418634-6557-3e60-26f5-da77e9a5034d,1964051457,15566811057830591315
+214d68cd-a4c5-7b76-7f46-2b1188679f7b,1127885694,652742058151278408
+aba382d3-1604-2f3f-8194-fe605c2a15a9,3227913289,13136971614638802189
+2944c79e-9782-cdda-1aea-6bd52fd7e343,2074095877,12840257405494705399
+4c440127-8b53-c7e5-c525-9b940a155dee,3209190651,1151166269493640415
+766c26f5-50ce-3d07-f4cf-d595beb595ba,1434750397,14767264428000591623
+d1e02de5-390a-c0ab-3711-6e52bcc7acc5,3959844022,505648477390416959
+3be217c4-c9fc-406b-c30d-1b2a5ecd9ad7,3394336507,8019438646616321508
+1d669adc-2ee7-95e7-28ac-01457a136b99,4198178826,15440430919721845085
+ded6887d-253f-25d3-4b66-f1c4729ff623,2420958959,1014722141468267591
+c3957efb-db93-1bfd-3410-b4169124f254,1528058915,15466401167449760406
+673f0067-d022-03dc-4e87-85038185d384,3582601161,1604355445129010267
+de0ecd4e-5ecf-3753-a7cb-518c4372b7ad,120465995,12039191901656030285
+92e49d79-b640-d59b-670c-fe45f65a53c4,1268866520,1250677165221173050
+b3f7d2b3-68a8-8320-29fa-da1e1f38985f,2070011404,8998058830261942355
+692ef54f-18db-c4d9-4e92-2b908260e7f6,984203476,7164848576997783158
+a3afa9a7-ca3d-fb6e-aacd-ab9f1e1c1798,3397914011,15978981144397080430
+0dd66506-199f-a06c-8795-ddeab93d53a7,7647092,8739667249839994731
+18f05ce8-11bb-bbd9-56a8-dc5444295874,2403755776,11111313238504800133
+310a4542-7ce4-8580-6904-9354d0bb1cbf,3402946905,12942946120405310749
+a4892c40-0109-8bc9-997d-9acb6bccaad6,4197988737,7489702255379559919
+dc360918-3de1-b26a-36cb-bc11d9fd94c4,3427121521,3305049799288836189
+3e5e304e-6f5b-fb40-b238-294a18be083b,2019808405,14162356915289983150
+b806b373-5d4d-c37e-6553-bc141c9042f3,151477601,13398480934766354133
+63be7be0-d9af-bbd6-1875-408eb061f619,244158212,13717438999614212941
+05883594-e5a1-126f-4a6a-0cf668226371,1833255265,4872344716497091912
+e06fb1b0-9f66-d837-0411-09f7e3d4663b,1518487166,6851554884928808859
+c911c950-bd78-809d-5f6d-b55b34f0a5fe,775285925,16529980177322828599
+5e49acec-2f07-ac9c-cf1e-af3b2ed37dca,1702792016,8349843139023202027
+321bc15d-444b-94c1-629d-d4ab4e8f2a14,3020002869,11906125550016679476
+74a73fcb-9515-94eb-29d9-78fc7ce8f034,510780000,13857025315302530660
+d5275af0-97a4-fb43-cd48-53df6f68fbb1,3884502888,16869356820615282887
+66f36451-4bd4-aa03-dc13-a5c7459c47ea,3467770936,13809481785680643512
+f19684e8-d77a-bbc7-648a-c9054219ba13,3082120946,3383011588499703665
+224770d1-9336-cd86-f21b-cf3a0fb6c2a9,3136939127,2816227825201974563
+bf5e4d28-5acd-b93e-4919-c74ca0f8a3db,2008083616,220897517669144551
+d18e8ab1-a822-012d-8719-da37aabfd9ca,2146000506,15473493447545124345
+7da87cde-8164-fbaa-6041-513d2fe71a2a,257944114,11514661171456988762
+f5e6a9ce-43bb-621e-9848-d92056e1830c,1951755774,15018241225769084590
+a67af0df-9e40-7744-fa2a-0f92d50623b5,106151843,4904063487033572321
+a7906951-3e9b-5c53-73be-519f2163224f,1674198734,11721574884338042401
+71bacc3e-9959-946a-b49c-6db0675b966d,705212099,2220910587688152296
+0b108b9b-3d9f-1e7d-b872-1a6caeb68001,1185497302,8295982965947622184
+8fe8b9e4-9a96-01f2-8332-275ae93f4faa,1661252866,3146425069082609939
+b6f20b32-e01c-9fdf-34cc-a1150da77d45,1579249678,8895315263909203953
+accf51e7-95e0-cd74-bfb5-aafee6af61df,1995237016,10829427506444661634
+d9518fca-9c00-ea12-b3b3-192db47df44d,451275542,14847573833866155843
+c54b366e-ff4f-0544-4bc3-097a0c9c8d34,3091774160,16756239386846843401
+080a72ae-8eb4-d188-5919-57c4bd41482e,3003042394,12270940903172598346
+e219188e-2084-b048-fa01-a62a469e557b,3540173400,2493522472165082478
+58748ef1-ce4a-016c-8ae7-e4d99d35abfa,1948045869,13897384746130299871
+912bc422-369f-12be-9715-1120b6253978,502995071,15842719592484437669
+d67c37e9-1a2e-b2ab-4345-bdc30a69e232,1568054846,4895571130885883883
+c26dbcc4-4f99-8150-2cec-d2fd0ac19407,1441763402,1064479899721539642
+1044af0f-2303-d601-76d7-cd9a2290c900,2898041664,4085019850921720011
+6a048e5f-1c31-dc19-0f6f-ee4946d0d6dd,320394596,14346025805445712446
+cbda9aca-016f-b715-fe86-b3cb2b83582c,3156592734,2898788807115435993
+9cb1056f-e7d8-9476-c66b-a23157052368,2789239559,18231640395059208014
+4d9f0401-7f4b-917d-29de-e6385faad404,1954076946,15980420113101258737
+60552fa5-c9e5-45cc-29d5-320d385169db,549370178,10751836923208620042
+f0574297-95da-b83f-6a2b-a434d35abf1a,2982032267,11676928699004851188
+9850fa2a-9e1c-48b6-ea0d-b23f7372cbe0,1354806539,12302221650461371636
+68e03bcf-dc45-c5c2-c0f4-bfbc81afbd52,4030620328,10792128968602111286
+c51a7fac-5f59-486c-f43c-9fdabfe4dbcf,3424426650,2139876610363324169
+ff4ec4ab-3727-e889-776f-1ddd9dc7d398,3794787332,9404410313208685551
+a374f880-ffab-8c54-2f57-1848497ed445,2194702717,15348801069202302835
+aff4af14-6645-079e-ae1b-dbb2b988ec28,3181031916,17899575951559944614
+98077a5d-7ab8-07e2-8a55-b9428cc9ee1a,3269672493,6072742984781486837
+b5e2acdf-1c68-d00d-56f7-578fe5e5aaae,1720401335,688705755830252125
+91826278-e8b7-90db-7acf-ad206a00e7fc,2451257384,13320582503893008791
+0025ea03-f84a-e857-0375-6d566778d4cb,3903106412,9862925952614343194
+bc661692-9807-eaa3-b425-a3846e239655,3780452720,16155076163560645262
+bc7d0efb-4231-a809-ace7-c01df9d85f4f,2315597847,11633113233254051930
+93e43e48-a48c-f1f9-8a94-f0a1e5a6e212,2840243759,14540761039894957542
+790dddee-1e9a-f848-3028-f3440c8e3d5e,1644776386,14204175009058669763
+9dd01642-0814-34b2-4ea9-7fea257bddd7,3990022576,11011221116580900017
+1c0cef7c-7fc3-43b0-adc3-96c66d5c8042,4277397062,4538216470339548753
+5ce0b789-88e4-0e89-1ded-0dcc47ab7648,3769809043,9400065510248931871
+3a4ca52f-17c4-b3ee-cc0e-426579c519dc,1783544823,14240588479925751452
+1d51e388-b582-53cf-70ee-91badd02c109,1081765118,10368738603859963956
+481e3b0b-5011-f6d1-07da-b4c19a6a5511,2796441540,5757844803224235975
+5b5dadd8-7059-727d-f9e4-01dc224941c7,3179024620,16160503079713729730
+80bff32f-b629-749f-4f99-6db00190056c,3401167836,811070797733520019
+0dd20a72-7b91-e585-b0a0-51b88c4d29a9,2842651246,10161547918193964892
+e1af0f3b-a88e-0895-195d-a6e5c0f51da2,1685270764,8809241979256545939
+e3bc6591-9c2d-1441-0e70-4b290ac85396,2204121785,10281598061408893165
+391ff0cb-c6e4-f360-4a4e-e1a46c4b3390,2313786372,15957941763065903478
+3a8645b3-4bf6-cb81-3f4e-f2b1312b415d,791979285,3295107464769782096
+b2243d8b-414c-b583-ac16-31f0c8624de9,923350499,11983466500915493473
+72b05eeb-7fd9-4571-a60a-e0e1195aae0f,164311795,16939028980287341227
+4180b25d-c758-ba97-3794-cb81f400c2c5,1258564864,6719727084383719339
+3f494eee-f994-efde-abb7-c125ce328b7c,4054261642,16335963237606335117
+5e7cb602-0bac-0e6f-9305-0c5d73171269,3219573073,5263276166563188401
+d59624a1-5c9a-37e2-ae5a-a3858c1c1cd4,15522885,5129235366420413135
+a093fd8f-91b6-16a6-f888-614811edfc2f,4151480153,2709625060223735755
+98dd6382-0304-cb6f-7f0a-c2cc4a7ad741,1154534165,14622150944498580307
+d215087f-c2ef-7646-76c6-4fd3b26d9a2d,29173894,12684522341940029289
+538a0ff0-49a1-4333-c905-c69b5332f3a5,1924139298,13778789288077003602
+f86bf5b9-2306-b94f-8165-fc942111116c,3575826476,12835188313545878785
+1976ec3d-7019-3b82-9675-8a3237f4d53f,460016694,18161755193721360220
+1befd7a3-9f92-eda9-60d6-708c6af1a55a,107268261,2620632652961014871
+26936b06-27e6-8820-34e1-8e133355e98c,187888583,15494599098582287584
+be8e2df5-c026-0945-ac8e-6f3834bd1e4a,3955128932,11169478310576636758
+42876a9e-117d-f8ce-40a3-79160c303012,68106315,17765347604323062704
+2538838c-d2d1-ea11-e36e-ebe6198b4531,3756283408,15456487000021065097
+c1f955d6-2b1a-e2b0-beaa-f3a52fce9ab6,2653853436,7240360542535840069
+e4604b7a-e4d9-6b0d-ae62-f88694c1b7ef,2073634804,18321371453157549409
+12d4c63f-2c45-9d81-504f-032bce6a2022,1304012727,13728040700292741849
+5315c019-0eee-5f5a-5ddf-1f7f69fd8399,2616295128,12911687668757811341
+6bca43f7-0202-9591-c9d6-abc6593f2924,2921668336,12649096239309866173
+575eade6-0790-7a78-f632-7c6ce2b5691a,4035974727,5885756036879831761
+a1ca5749-8d9e-31a8-0376-fce57f918408,2819284719,13729012620407357045
+8da2211e-f523-5f49-41a4-a882c6b23fc1,273645785,17864121829629503680
+77717a32-9887-1e9d-2cc7-6b4ffcb6482e,1763687807,13961503991336094909
+ead01b7c-e7a8-7990-472a-1898ddeab72e,2945028454,15979675376719711777
+a9022fe1-cf34-00e8-bca3-4854bfebde12,2507431597,2174271557240916716
+42c31679-e4d5-3d0d-5f0e-b18e0fc81d23,2824951053,7419813943570228233
+c91a582a-14d2-1a2a-1304-95d41da03154,1403724404,8448536653436444697
+78496b66-6917-c18e-cfa5-a541f7380c81,3725216098,14061117214729221894
+3d1ef419-e670-d322-a74e-038ca419442b,2368198092,16296926970063213706
+6adea03c-6336-4b3a-93c9-da002d68849d,3374142831,1311553234648836014
+815f2907-a66c-6a01-aa8a-8b61838884fe,617571860,16933764339844295917
+7c635ef0-b58f-e949-404c-6e5f7f9a6af3,28276008,4754883333181455688
+46feee9b-e25e-12a6-25a0-c032e75c78f6,1208135157,1938945521016363969
+51adcf9a-a769-7d44-1781-0c5fed5fb260,3288596468,16116008879435033923
+c2637c39-446f-0e16-e0cb-5ac6f2d17016,3879973515,5330665003523774288
+0cba3e0d-3441-bb9d-252d-f700b6044da2,1466928126,14811272030798210139
+79b89118-9910-e03d-e252-8a65c4c3763d,2939136734,4135454488369680776
+f4353fed-a202-70ca-2139-6270b4907802,2436233586,539717539174229987
+2d44bad8-9eb7-53e6-a73e-43e8a1e1db43,1917935055,18401612280732220981
+05d88969-4d44-f581-e605-8d81ee404531,2405787968,12319491379468252418
+b3003c38-5fc5-3386-2a1a-1c526971e05f,2261615795,14390155824750527608
+8fb9c6c8-7ee1-e0c6-30f7-3b70c222d500,974279632,4970148755032268315
+55c696dc-5a26-4d24-2636-3d297e2f9d38,2049383837,8236735298134080573
+3fda0e10-e28a-3c6e-dd22-7f73067fd135,1521946623,14984258230124546347
+11a086fc-adc0-8b44-8f9d-ace906639925,2163305766,14798150089450148245
+caa48f0e-5b9a-419e-eb33-b8c352d4680d,2513947766,2319019153006762981
+11792534-503f-1b59-2ee3-e494bb0699f9,2890242438,4620700888726803717
+1eec8e2d-a8fc-cee2-e32c-4a2358cb163b,2651691438,10036330071141652979
+a738fe80-58fa-2bf0-9a1d-7035c15c1b9a,1972644393,18321567089339670190
+84b74f61-b26b-6d5f-c994-0b141af19ff9,2230241993,9824316430386405155
+98409ae2-30c0-4388-b2ff-6accd14d5c95,3152981061,17067425985827360326
+2cd26d8b-c30c-9d5a-a17d-b99f4bdb17e9,2474043752,6058629806585484164
+f16a6354-a22f-262b-554c-3c29b1d9f8d3,1723520275,2990600331503396817
+0a91bc75-b85a-ae54-e06a-f291c97328f3,175872586,6108173415035381385
+961984e0-3bef-f420-824f-20e01d3a317b,1813287391,17704681749603497468
+f7f21ba6-ed55-8ac5-9e82-d589100352ef,1016162525,10553867052967231106
+5477f81f-3042-c226-fba7-3991f5f5931f,1754768425,2568884711132630549
+60706caf-2d9b-2bce-f645-257823fa12aa,2013453885,9527813595912794402
+d02c0e33-c675-3c36-4d8f-e2319f98720e,2815731152,102626825942283324
+baad312e-368c-1f58-1257-a9ec18d1c7dc,2971346623,10238778876399356324
+863a84c1-3508-8ab6-bdc4-2919a2609910,1044313313,6354131069522275784
+19ec465d-fa4a-f2b4-0247-0b6fb42b2384,2975796010,14205267658822002736
+0550fab0-8aa4-c774-9022-42693385fd3d,2410618461,1822404420883339513
+421c56a2-abc6-b7c7-6c40-d974853af40c,33198483,4058830240964882894
+c99531aa-971e-1b7f-9160-305f9906005e,2362082824,11005875238750491247
+249f6b23-2d80-3cfc-3590-a9615702eaff,1809242171,4337116855807155670
+05558233-d9cc-9b92-b107-8dae08034300,1128270800,7672396028147398421
+4e76a43f-3b29-b136-1827-b5a333b07a26,2251810910,12162035685524572791
+d83332c9-0a49-b795-1af8-b9188527140a,411567090,8641997225733862325
+a482210b-526b-8120-fbcb-74cf6244a809,3821158405,7557116330809154052
+891c5eb4-471b-aa01-33bd-abdd71dc236c,3870805160,3791091401426552236
+62beb97d-34d7-1cfe-f7dd-0e2f0fe1a32c,2277624087,9219428806287212368
+d7371bb8-9b6e-8882-1980-6c760d9f7ab7,3683468148,3801566480066103000
+82d689ab-a909-bf76-9502-9049aed1afde,4181406453,16797639030859908227
+a4defb1f-4e44-5bb5-4164-6e66b9a0d619,2027924105,114884397231773978
+6c70b5b5-5494-c48c-9299-7700553f060d,2795521004,9274974036122181114
+102e2e62-dde9-e79b-3849-5e47d5e0e431,3882704436,15387495627265575519
+7f75ef68-cfd6-402a-81c6-fb5cc7c90332,2219395265,12772807339147923999
+1f21f394-4a70-c28f-b4c9-96ea53e1f409,4141780018,6130351421752697155
+7e755b8d-f3da-37fb-a8cd-c82667f16923,839477622,5996707199103564995
+a88e1be8-c772-ed08-26b4-96b0ac7a73b6,3550997287,3325454684413714061
+70516dd2-8119-ac25-d2c3-d8061a428890,785825472,8632606263391982771
+ae4737a4-a98e-7282-87fd-410250b0b9bc,1505386864,4522672798087946886
+2f6d0560-4df0-4d14-94bc-af9b7a2e5fa0,3010402830,15297238780399969028
+d4d890d9-e8d5-dd91-9d2c-4c6e7cb2c095,1967345139,8119896952963773911
+e519ba11-0fa0-64fc-5dc7-471052c18e46,1132566866,4682609383428668586
+1ed8e6ee-c7b5-ae8a-cf3a-42dcb333036e,890673838,15297180384946883030
+8ac6fa71-f339-777a-93fb-7ad8bbf2fdd6,3705529665,4441799407764350984
+cecb4dd7-462e-2c9e-62be-81621e92f4e2,3575132409,8355811105737896320
+7f48fde8-f72c-2669-a80b-feb4b2672622,2366672499,17446210972229870528
+e123d764-8f51-7e78-304a-9e296d331f81,963290198,15955990828905819659
+427d11c4-4b43-cb29-a94f-a880191f42e1,1767753750,4004069181356885239
+4ca0dc20-5fc6-55ab-b3d4-3e1fd814f9ff,2690594653,1741879463832080256
+5026a920-865c-59ee-e9f6-05a7afdbd49a,885934016,10888732804341723587
+ea87c3a8-25bc-6152-904a-c80f61fcddf5,813491799,11080889672357051267
+778d7a15-1cab-662e-578a-d1f52adc11ea,3015384250,12888254144846795390
+186e6f96-19ed-378b-96f6-d95977c7c64b,4089624564,9641035267934813369
+859fc042-6600-93f0-e63c-d2ab3840186b,145459948,12738011937629788924
+8088de47-0a5f-b1ed-7bef-bbfc30a786aa,1027893378,7348231450925563592
+f74fd986-c9c7-475a-815d-a83aada8c4aa,3357378311,17032090789003351092
+12d969ca-d91a-7f72-ca3d-cbb61114f312,1369088862,16878905422100755480
+dd9adc65-8fc7-17a6-00ba-d5bdb9a786db,4080962679,15137517677098449683
+9bdd80a6-9b98-0d7b-f74e-c61f0487a2cd,2073441493,11360714443792920327
+d08efdb1-651d-aee6-bdc1-ad23ba20df03,2267782675,17074802015667150634
+5e1beb78-575d-668d-3b8b-145099670462,235987193,16396447784632590879
+37a6547e-eddb-169f-6822-2c1f553e5dae,3334065044,18086217778150852157
+252d2ce7-0485-b71e-9291-969ad96a6909,2698797650,5398301087021624053
+573d66da-5e8d-4669-7479-c8a788749dd8,896701709,15757960580142668314
+5bdcbce6-1366-62d6-e350-e39a21571810,2498279069,8616279172041543400
+75958f85-373a-c8b7-1543-3de0c74261f2,4104613850,15670116601568598718
+afde87b2-dd33-bf12-c554-797bf7fc098c,2296844180,14085718142456706923
+6d9c47b3-e6fa-3987-b34a-00add026526d,3930620446,8922116254216887618
+f32c59c5-a1f2-e066-92fb-c663c70d9e93,81664301,1487422971154050873
+96d67e3b-ac42-32a9-b37a-88ba1b5d5910,1071188127,3893147372210879920
+4c1f4e67-16eb-f6ad-1914-ab3c92721451,934091809,6655414096191102748
+151d8fb2-0727-1dcb-da6a-e2b72d4df3d9,2653768391,17143737606430255064
+2313cfd8-2464-86e1-1848-925d8f498b11,877429630,16112131857388032447
+2c9cb614-6707-0597-10d0-dfd3b8ad693c,223079191,16353427740850240301
+633bdc8f-be2e-dad9-8974-8e7b77427591,118161545,12283043370616303442
+32777a35-63e8-a69c-3fc3-a500e91e9fba,1842916605,8995702145460755039
+6c319240-add0-91bd-e1ca-2fe3598af938,3999375823,8681504873205886462
+8a6a1db2-2682-8165-ce5b-cbd3fc35642f,3448871979,5206756391619796923
+483466fe-0929-c9c8-fc2c-782a2ed61214,4057161984,1643058819509649332
+157cfb54-9128-9fd7-bb45-c199b3807417,379727060,1218275438772286872
+44925157-1cbb-6e3c-bf5c-cd84212fc2b4,113599574,1720930083200885036
+74c26ab5-d546-16fb-3fcf-4ad07f1feb22,3789463741,17273240115467476247
+f18b88f7-cf3c-295c-8022-c56018b1a0e0,1338767502,10129294262116517046
+8f621cab-72d7-3969-dca6-48ef7710fede,2801423177,4800090633452252219
+a6ef73d7-a132-ebe2-e13f-32ae40489a89,2464874578,6183095887873347832
+95f674ea-c14e-f858-cf9c-bc6246fb0116,2289863381,6411141645086341686
+ebf7245b-e981-b449-332d-1b3d436e1344,2244168304,257959155244610300
+06d20841-91b9-119b-82a8-30c6e9f8326b,2974706775,17771274955072311158
+6b0d01a6-a4d2-664f-e827-e963ce1f640d,705707464,12684928905368800170
+86502f13-ce6d-ba50-efa1-77c7bff9c643,449107005,12733140020884057672
+eeaa1642-8d2c-62a0-526f-40f9a7ba03c0,559181222,14006077030109118377
+4b5a4393-0d50-0203-4848-5f98e3d6f1bb,1094030813,6398598557101866498
+27d432aa-6dab-0a2b-1b27-3d97f09aab27,777537294,15339017921222731387
+bf87ddd8-a532-3f62-391d-9cf0687ac837,1895971959,18227274722922431181
+101dab24-c7dc-65f0-38b4-b2cab0c37f92,2523442019,6117257799565624560
+2a412f24-b5b7-7890-8e5b-aaeb4b83c08b,1483246517,16853597199883187786
+60fae675-3eae-71be-b4d1-0ce8a04349c5,3388389887,14187154212622796959
+8298c856-3ef0-88eb-bff3-1c8f887a1aec,1413820723,11217342702807814903
+2022ac97-d6bf-cb89-ef0f-cfa75706a0f8,3108348865,2435854400177069893
+cb7b8f3c-9a43-012d-edd0-b5bfb5f97498,423228556,770010417593073994
+c7ae6d9e-02e5-9293-b44b-a2d06a2f34a7,3009324221,14807879100438779116
+e66a6404-63d5-76e0-2b92-8ffca517b913,1182600885,10554552936959647535
+8f090448-f9b4-34ee-c1f1-764dd348eb98,4188105543,7159127979621065633
+d40203cc-e7b2-963c-f90b-ad7555f68ad4,876730631,3839283251733891306
+da12f307-994e-b3a8-8791-b125985e3b10,1196773585,16683610513003741882
+95fba486-54ef-9065-0647-ecf83bf1f8c6,2175524304,16268843163912045359
+25f0e9fd-c1c6-3bfa-e2bd-79f9a08cd445,3495183658,274504445963205864
+c41d829d-0f30-5999-5d2c-b4d3f5f99cb3,1230682341,4255593101883567475
+e98a52a7-b519-7823-2003-2520c55594b9,570027758,4125258228605933548
+a211f392-de4f-89e5-ec08-5ab1b5817eba,1797598504,4561093607743464155
+38a9f5fe-0d58-56ae-6f82-faddcbe121b2,323295406,2584102211907585823
+21912e83-069e-12dd-177a-a736e5803185,3568382544,1252345748207877806
+9f03a336-844c-561e-9ab0-f29a3a2c25c1,53700285,17715460683054925948
+048fb29c-0a4e-525b-f400-7fa7ef66a370,2447421068,18399550649055157115
+bf873294-778c-afb7-ce55-fd4772fafa78,572799120,15450101053825060810
+c297376b-03c1-df06-cbd7-00c5103eb699,2081227929,7789760326083400695
+4385b0d6-0b1e-ddd5-01de-938d7540d5c2,1534631507,6181561952088768198
+6a9c3a99-775b-0b8f-2a9c-f24177a278dc,4217016420,963856048629895738
+5a862586-1927-1a25-e616-12bc2a298c70,989646538,7857945839319664353
+8310dd67-90e6-f568-ed87-5f196218b2e9,2618354804,5396551222151769179
+b17c8386-d727-b202-ba4e-aa677a76457d,3998027706,12015649598468484468
+6f3add12-d589-a893-82d4-51a43d84db48,3478585194,12083084072931938759
+2ea26abe-2546-ac7b-c342-e2e36dfc1555,1849393916,12615193286996672837
+7491bd0a-7e06-0eb8-5ce7-086642153c88,1110429095,11186356653032332731
+d40f5467-089a-463c-eb2a-ba3f3e06d76f,2485578130,14609088515292969221
+c3a5b772-ac8b-61c7-ea2b-892547adc98c,2135089103,8632401461079841468
+79f731aa-00f9-c11d-9310-999c7fe37b43,3114108921,12369271664065548894
+dc89829a-e119-89e4-80bb-f5834cb8e6aa,3255522654,17901912015613572657
+1193f5fd-f694-2805-3e4f-fb99b64264e4,3097743371,12099659320435977942
+f8ab21f7-3da4-2469-d7a1-feae7b080190,2993563684,6674859645043161059
+51eb08e5-c653-b05b-0380-a6ac675dce54,3824873824,11063430492087494142
+6baf288b-51fd-52ce-8c0c-813282eb1b7a,1696454952,3212095766673931673
+eb81ec9c-c6dd-63b1-71b1-7ac29c7e2eb0,2156517325,9155656068942465260
+3ceb2898-ca61-6a3b-ed79-b9ef672b819e,3525543267,3433280448592896119
+f9203015-0dca-5823-9ace-94e463c9f915,2232164474,3748443090297692459
+0a529165-b3b9-21ec-a3a0-3374f42b09c0,2662766350,10148433176880500676
+b22b8fd8-485c-5cb5-01b2-66586230d444,286069882,5296861192562219104
+b01a8a44-2d6d-1a28-80a9-007bbd58c92a,2257399275,8983588390111216927
+da76fc1b-4cee-02e0-23f9-34a2c6ca3c30,3826691236,6959688125213903676
+f8da6854-c29e-71a9-eaa0-213c09444695,2265456381,15410279078007190520
+b7a08460-f3ca-92f0-bea2-91be6c7a3757,3720480591,6920721183974113090
+acafa26a-e969-e277-d4f5-96a267463848,2437150847,12489819502965882420
+cb4fc73e-44c6-bb8c-5d6a-007136d1f737,2801227992,9652596529988593545
+c512ea57-2e7a-d9b0-5e3f-a199988ca140,3003279841,7397425046042187809
+dead7d55-6fca-2eee-754c-e2f80c017d3d,675444743,2246851434110083205
+cff75ffe-4580-f0bd-57ea-988045e8fa1f,1778695900,8962721465519990304
+ea3fb64e-898d-8961-4a03-d36f54bf7054,4021946407,15984041152663288442
+1e6cd6b4-067e-d066-aa11-19480b040334,1660952671,4707001043089087794
+b882852d-ebfd-1ce4-ef8e-29bd7bc7ad72,4241862210,3017622117881920167
+b10a2b34-4504-854c-9867-c4824de354d3,3402415940,1403961408897314750
+643071c1-9248-bd24-f382-6ff921633745,4212075317,8296099688015109751
+ecca058a-ba9d-5e25-77c3-6794c011513b,2960437246,9823694079681682130
+6d46441c-105a-7f18-dc6e-c681ea8af986,3105520170,5283931560872933042
+1c51068d-e433-120a-4477-63b337511ea6,2672344470,15393031505658984853
+36c004fd-9b7b-3fe0-bef6-e0caee748228,4151470106,3774074003245854214
+ffbf9fca-2a26-a1c0-5c2c-bcdc0e606e45,481125822,9978352246047899719
+ec782308-0f3e-f7d3-d407-6e04977fd169,604236345,2931237077333932991
+5ad64724-c595-5a48-57f3-6eb679245c50,1997353134,15089734922341952789
+dad553a6-15a9-45a0-6549-73970da857f5,2283491215,10544081338990272397
+8ffb8151-6666-595e-81f4-0ebc1ade89e4,851950991,390680748566710180
+866af905-e7d6-315f-ff08-94e7a2efdb09,1884724863,10677778306970975751
+f7a31d29-27d3-e8cb-22d5-591e8ea5454b,2470286660,8618928328557457571
+43e997a3-7029-b1d3-ae39-7894ef702069,3473228005,10845129720266184609
+e7a26376-e414-dd8d-cc8f-832ba6e1927a,3920336928,7265052350834016302
+d5cb2c60-a7b1-454a-b163-37a725e11709,3286031144,16802018774469074445
+401227ec-8d94-0bf7-8763-a6e410c34bcc,1256721786,9151659422487665064
+547d7bd5-685d-2848-03c9-437f02dc5cc2,719415024,14235733094216002528
+d26af1d5-d589-fde0-5844-30c7b18b1854,3979861839,11374808323875467942
+28f9d2e2-6db2-39d2-9ede-54f50cda70e2,1095088163,2267900536576706746
+aa8057ee-fbae-3da2-efa2-33a2ebe0c3cd,49822315,11233651098051035889
+0644e63e-9950-c43c-3589-fc4c19793ec4,2966336005,13986639540305268196
+77d1c83b-24c4-2ddb-c3e9-b0c80f589fb2,2903652666,37470231860159805
+21bc149e-8bd2-571f-2df1-9d619ae0bb46,3011275999,11141085976077172177
+2b3eea32-a615-ffc0-25a6-6a199ad75eb1,3883654515,8614772236923929356
+3c9b7feb-1365-206d-59d0-1656869bd343,4058559310,12681248527376846136
+38a663ed-777d-2570-0972-5020ac548dd6,2838737431,953970889454426814
+0cafde61-7e0c-47bc-4c5d-868bc9cd8c69,419993158,6549152683083455511
+1cea2665-26e1-3cc8-5320-87364b040959,4109362382,13348712549209929028
+b8eb3ffa-9b04-ee71-b6e1-1aff8a9a8cd0,667041774,143222021699068131
+d475497a-be7e-719c-728c-34492d446ad3,368466957,10851648094940809195
+b19fcb2d-3a38-6d43-f274-a06a464b3fe3,3908806047,12184547903974445658
+de095f1f-e1b5-aca2-2965-e631cb048eb3,1569967015,2325793860948250161
+fe21e928-c7ac-a59d-9ae5-063a30c4fb8a,1274818665,13274415153830373126
+8a8ff9af-07a6-5075-39af-e2d6c8ea5d38,1747499337,3777055766657323626
+ce96783e-a38c-9235-0862-fab0efb7105e,3822724612,1434711700515489489
+b8da38dd-60c5-5f15-7cee-c3fb930729e1,3834054235,5321283471793984836
+f3eb1b4d-8fe8-0c9a-ced8-fc2a3c254684,1884177860,3282494129162552419
+42fca309-fad4-81ae-c122-c791d38379b3,3468621382,2864899589730885734
+54cea299-891e-b56a-1220-125957029dd0,1815498714,20631318196969893
+cd1f3ee2-fa0c-3c51-aaf1-f3acbec40de5,941196420,13733540146126418539
+b7e6a3c1-7bfc-63b6-d27f-58b5dc8c7e5b,985438954,9105835416608997513
+aff6bcff-4a96-27e7-2e71-85d3469a3006,3186973092,9154535232967513882
+539cbcd9-5108-1b55-22ac-abbeae198d51,2825338469,10293311057969500731
+ade4840e-9e8a-cd95-0116-f76b201e8756,3295199752,8842262803556074160
+589a9171-3923-985b-6a0d-5b2813860411,1542707564,1681139203698488569
+964054fb-4f50-019b-99bc-d50cd073365c,953276837,7615097035304213481
+f77df305-73f0-a29f-8d9c-d93439986d65,1873612866,12946880111238559563
+76e9945d-226b-9c48-643a-86e6711f0127,571991450,6372310678344215917
+4c12bb1b-9678-b0ad-adb2-1e69bbb379c5,3989175591,13762070039877792462
+4ec7af4f-ff62-f464-7e2b-9de41eb5aad1,1830819301,6567794543840554303
+d89181bd-f80d-741f-036c-4c530e8c124b,3332229386,18190827743591891095
+4e5e4a88-72e6-7aa2-adeb-f2656b295c96,2894403635,10241133594305335634
+f333ee2a-45d0-f1aa-ab4a-1ea719261f06,4292171460,12604543083424260904
+bda0bd6d-9536-a21e-9768-0ad0949c1b70,2027665723,5270437475821469966
+2f8ee23d-b31b-91cb-1e0e-69b425948bc5,2797730685,15176125086556752222
+2a5a4d40-79dd-76f6-1826-1e1920268c5e,3627876889,13185292723872065229
+8148c20b-6241-8f61-caa9-c85c64f00b70,1794854107,8977675954858326860
+8635df89-96f2-d068-cd36-ac495ca0a400,1018995954,5079187382217418734
+532fce4a-2480-50bb-29c3-bfd8f88d557a,3629606975,1713424148872485265
+0d7bf84e-9523-bb2f-6acf-e80f722b3d0a,4225090922,12901449794131850234
+a685ef65-b071-4046-4a6c-1efa50b3a295,805000047,15199351461901032585
+7944fd46-0573-7c4e-144b-d11c43ea2dce,3360027806,17104279406958770787
+be776374-5d58-dbc7-8e96-e7ff0845ee2d,3188347621,14732395639032233941
+86270b6a-35ca-1ddb-e23c-a340a97607d5,3486498221,408025390469216918
+35b1d6ac-b974-7183-9888-ede64d22bf70,669560226,13450394980135936116
+66de48e4-bc4d-39b8-a30e-73bf71878749,2741867338,10959555128241493159
+0eb7ca9c-b9fe-4fc0-e13b-294e17b9cb51,1206734962,857058508245385647
+bcb1a684-9790-9dde-573b-6407318ad87e,2434529179,5961374495334344443
+f53dc0ba-c4f6-577c-a92c-9c33d9288055,2708365007,10899264928026935136
+63f2ea61-1bf7-f85e-f34c-3cf011518979,1326197955,6952470184543422022
+b9d739d5-689e-8f73-b61c-218f7768752a,3718347103,776993049889086135
+b5d23375-05e9-1ea7-1c82-25288944f55f,3125337850,3519803926485065512
+35ae5c2f-68be-3016-9820-a49fb5a097c9,3575175283,14901351395541499443
+f39c94e7-a08e-abde-df26-72f80e8b60ec,3227056744,11915550533313329850
+f3d6e7d5-0e81-cb01-9711-7ca0c6b94c18,809773803,10631242306038283250
+d69023e9-e40d-1228-982c-4acddff5082b,3781982282,13054482658509595994
+c002f80a-20d2-6940-81fa-3fa35fae7a39,2312126572,11128850940445679976
+ffef31b6-bf90-a04c-9ed0-51b4c83b6514,3588038349,11191792236875914846
+4328b0c5-daa6-bc5c-5be6-1dd792e786f1,2636776311,9206476721549604738
+7d108a4f-af7e-1731-a716-df18cf5c9c83,2652020932,2546114276870757195
+43353bcb-d289-55c1-9952-168c07aff1be,2708524718,13982903129766539459
+598b70c2-8563-ace7-82f2-96c2e43a91f1,3378121973,11925627474444744016
+d74791b2-99a5-6996-0f78-b4a70bcf75d8,4078124528,12036937995455824132
+1b4308f6-c544-5faf-dfbc-fa263bd1a630,470432107,3735012966975027044
+1ca67b97-39a9-7cac-e25b-7bab544ab3cf,1727307237,10997243966682044994
+a922318c-7676-d1a0-d05d-4a20d643eb7a,2614926982,529440437465403356
+1faf8318-5364-754a-4932-a7d32cf5cdd6,373052322,9787212908366509307
+423212ec-23b9-3c21-10c7-a486a2fb06e7,485284477,8363452542808133274
+8e4b00a4-7360-92a9-d512-0391aee68b44,147558728,15945831354596694705
+9afbe08d-634a-ea21-a12e-5dd676e3cda5,646822050,13310786445669470934
+32a653d3-4a33-80ff-ccc7-544f377968a3,2133676261,16165133609550218908
+579f443f-2093-f932-490f-dbd82cd9582b,1146190421,17593217811029790695
+920ef31e-3e56-44ae-2444-3d4d5183fc18,3092509673,16048853757662548736
+d63e440d-b843-8ae8-e87b-aea8b68cae02,1040219738,16886768643966420121
+256271e8-101a-95e3-3d68-f71dcb5b96a4,2720196781,13224204178587661444
+091129f1-16b3-3c19-1df5-f7b673165c34,4021731773,8886044375467898074
+5aa1516a-969b-09aa-dada-c61db0747817,126759643,6269476055947305281
+bdb28598-443d-893a-5de9-f5474bdc760e,1189204628,1900777432622682202
+da68ce05-b448-7629-8c24-0cab0e17d6c8,760609455,17986124362170821654
+4bc80c79-f9db-b084-0e23-85af1049d8f0,2113344263,1905260049535561216
+51f1c2e1-d568-b2c4-eeec-bf6f2bd2aea9,1160465814,8849723522283081971
+4d4be89e-9213-6f78-5381-9584f4ad4626,4126034653,8382256818040082346
+9959f292-45ef-3f69-e6de-8262de0acab0,1929078725,2464736181278053184
+ee8aceb8-95b6-6033-216b-6de6564ccb28,3381634673,17219517566944139330
+8cc41ae5-4c51-c7c1-da1f-e345d5876632,714074001,2788935758933647505
+b2e22a67-11e6-060d-71ae-946656080bb5,1603269674,4124301896599535581
+b2913fae-c1bf-3e23-a121-9e48043c5760,2371823583,9921908247174701426
+0fab01b3-8c5f-b89b-5cf3-05f60bb9541f,1890481055,5276661847914865485
+d5c33c12-4ac0-2086-0d42-3bf2c360c9e8,1271023979,6617433458069427520
+0675b42d-f9fa-c9c6-2ffc-b7600addf727,3572992375,18374969079720532969
+93913686-e1c6-3ed5-cb5f-50f2ec475c54,3095158764,15484424675949086682
+2c3df883-e745-88ef-8c76-1ad7f7b024c2,3669431400,7330669557191455103
+b198d934-af93-8e9f-83d3-09a60f490987,4219667577,9196567539570788005
+08a834f3-5390-9f81-31bd-61cf5360ff0e,3254935955,14107752622629192463
+9983d799-6ed6-0c79-5363-69d728112a8e,1414780749,17705112210419607408
+62ef2f97-3b92-1e1b-13dc-88c78aa8592e,1214875676,4627994720358231563
+05d953eb-678a-3672-587c-c5f35d5bdb38,2422577540,7239326420146181502
+914afbfa-3846-d23f-1218-5478792aafb0,3762288905,12316780603487065277
+da7e49d7-5f11-98f9-ad5e-e712cfbca7fc,2872753777,16237050838353701262
+5fe61ba8-f42a-2030-897d-4373f035bdf1,1285000397,52251865158234885
+c3dcbada-c672-68c3-e5fc-7f4d05d45651,1399209995,984159624303280672
+d31a8212-de89-63f8-0281-0ae944080d91,3132447594,13216144519149534493
+00178bc7-aac4-65ac-8991-2a1fc5faf8d8,2896625622,7057986385931505144
+1bcde5d6-d9a5-f893-1057-d82fbb41f93a,3763837318,13244868638956094178
+5f621a2e-877d-217c-aa84-03716d7b8bce,1093270717,9282319118639947709
+03051c33-7e64-1e9f-d52d-f246d8560abe,2795239868,18168568598923708152
+7cbded16-7dad-76c2-11b1-a1ff757497a6,2091886354,718294682352104746
+a502bb34-f1f3-dc5b-937f-2fc95e6b1fc9,2294509681,9400387094895414401
+07a08344-aa3a-c637-bcb9-ef9ab9b4bde2,224860829,16656598192395505752
+379c7107-9c34-73f9-c819-a965691d32e5,3889038562,15847834143782510920
+211fb0de-6cd4-7e67-d5b3-9aa46374a87e,1078801662,2098652481133347008
+8930b666-5de4-9aff-9a14-6f03e71842f2,1286017983,10795551738451134686
+d0b85403-9d6f-ba24-d24a-8e8142048997,3844441362,13467989978429366010
+bcbf1220-0448-b485-acef-b5153fa0d8b1,3570442584,15320118944166244910
+871deb5c-082c-ebbf-577c-d15a567c78c4,3924154951,5048756900858612843
+96d02477-11b6-0999-799f-0ef7045be45a,869051843,15530001199582595282
+c5013f81-c5f8-a0f6-9561-15bf8044a3fa,1180102611,14643200777076908974
+12e09569-2528-893b-511f-cecf01557b9f,2397341012,15146957912494691645
+f6545f41-c04a-3ce2-80a3-9d95a0d6dae6,258005450,1490273066771931118
+8f89b51d-4432-2516-af19-eca8acfac3b1,4200375050,3758807698850602591
+6e94db52-d7ff-5d03-af41-deb9f31b1559,3094266785,10299701092369878288
+a5269f3f-060c-b84a-6610-7163a73cbab0,2708541874,13731382154595610518
+cf5aff85-a169-1197-d052-4f30977bd9a3,4008255706,11779036113730470156
+fa894384-cfc0-564b-1861-87c3e83b6198,227121079,11254885897778639626
+696d82e9-8375-6e85-514c-54dc68287ce6,2814503663,7297129129327197899
+6020863e-c9ad-e0d4-940e-3adc8b98c4a4,1276159432,17704285934647738181
+56154ea6-4d36-47b6-5249-5fde763d0aa7,3678726663,10660488056437450926
+f9423fca-08d8-2381-7136-5b95278fd14a,3221400825,12808679372058639387
+88dd1b51-f1fa-fb52-c194-ee870b6ea126,562604102,4440891821413371048
+063533f5-b936-49ef-c464-c904b30f3136,3213110310,3868659873235122705
+a197bad8-68e8-c949-abaf-28b81693ba93,523313008,7483886656529214675
+96eaabf3-4ba0-5d69-2f2d-35714b909dbf,357729109,12141356037489527119
+f6c30fdf-490a-f24e-33d4-26e015ce2b72,2750506075,35234677184042459
+15b0a163-7a0b-649d-f507-c960765d78bd,3296775183,16297038309549413223
+ab31d4ac-36fc-0618-5ef1-e70d61a6fc33,1561287336,13178777228346637454
+0ab002c8-3825-f5e0-329a-ef5906d0161c,2608299376,9021537508083500943
+a08789cf-c2a4-1e82-6db6-5a15dbd72631,3796157913,18338895723923459090
+6f6c5f74-f99f-e587-faa6-6b551082aae6,447990138,5049730046504922083
+074293f8-7b29-5963-dde7-2515a82633cc,2829219962,9956682106626901933
+700cb32c-24c3-2317-74e4-87b24d306af4,871000010,10510332900022279283
+fc6383f7-e629-4762-d1ec-26f067564cb7,1573524707,16776652203197489334
+9a4d7ba4-7700-b652-c347-adb8ee6c5a83,1756087888,2666144948514142857
+6bb1fb26-306d-8339-3555-3a2272498877,4213036057,13142065983790702294
+9846534e-6923-84a7-bd12-c3cedf4c7387,1348413154,16707167322414519578
+ca8495c8-0561-a401-6e5a-c447075f62a3,446327576,4105627958748590465
+533f043c-5010-7c71-b228-2b1e06ff6adf,3386858770,15136669681969254031
+93edbf6f-5e88-44ad-1197-0f5bbafcbaae,3831122755,17422405748946702525
+22627b30-90b2-9f3b-f235-430b1cb9aa9c,3155933801,8551687491473160000
+b6764790-1938-6da5-44a9-3f0850309ef4,339365425,3366101906553156041
+fe5d93ec-7cd8-fb57-8fa0-1e8c23a2e7c9,3916836604,2176525898744125213
+cd19ae87-3d9d-7585-2e61-55b441db6e3a,62267137,17355800632556747069
+770eb94f-8d5a-b7ad-cafc-a1b52562b509,327612743,15383153139291972741
+9bf0ecff-b4c1-e261-107b-21eddf09d98f,3200197022,15304359997120058868
+6d59abfe-2411-b29f-38ae-d94acbd4740a,1534225484,17588750241398633289
+783e87f5-8265-4ecc-1b95-1bfd6cead64c,3231750421,15969621785864664527
+97326135-5f6f-116f-bfbd-544d3ff71a40,3593372859,2835071485841779614
+7f40a083-9da2-fbe9-27a7-e50e8f5c2f17,3431269819,9764717105200663277
+cfab17dc-1610-7f40-5bdb-bb5bd0359643,1474932992,12229247164113530677
+b2d07871-ede6-858d-1203-9cd038c87e57,1640441242,12968833154652997305
+3e88851f-cd08-3dac-e490-631c8c71af81,1780384921,10098735940568448014
+8124f3fe-9793-0fe7-24b0-e806689973e9,3828603886,15083776037053311342
+b76d9b67-3c81-b507-8963-cccc9fd5a84c,2868849548,170413215490166776
+7c20913b-9499-e45d-5826-387e4f1cdb13,1924375051,9775919141289501493
+caebaaec-0341-19f5-df3a-d40c6358e62e,3735946412,12848145441287126117
+2390dbdc-84a2-6a77-8bec-e0297f357671,1926063920,4164787767645247758
+8f977016-145d-273e-dc26-1d89c0088e12,1403955336,14857884087349871185
+4e6c73db-43ba-4901-a834-4284db6cf961,3608634287,13916277882143349647
+f20af0aa-b244-35e3-117e-50434569539b,3812294761,8631611228282888346
+6489e4a8-db4b-885a-c9a9-23e35a264da1,544313594,2254287922516228000
+30e69807-8b0c-dccc-c3bd-7849d14f5402,1834752195,9702233369311411717
+542468bf-dfe9-c30a-0b12-5bfef029f32a,310429303,11549338094766097505
+06efb911-1146-caec-8bd3-276e60078e14,4066107011,10519692864108842662
+58b3d048-737e-c4b4-d586-72ca9d46962e,3037507658,3868559270447839644
+3be0c09a-288f-cfec-7473-4377cfd8a28e,3786444906,15594600317947743776
+bde6f307-a86a-4b3f-5988-995b2ea3da08,655962828,4655811818372820846
+a87e452e-a319-ad98-8758-8b2db648409b,3346887327,6220007222162015641
+ed038439-b747-4e5e-4517-ea9b995647ce,846065899,7370499084034021016
+39ca4bdc-3171-d955-9ce2-f513b4f6001c,1998578413,17896546734353314569
+e0674333-5a93-84d0-22ea-5e72441e8491,3487978338,17841160938641155671
+6b41aae0-371d-16c0-b504-2695467234fd,1789250202,1668072968852727119
+4d63b6bc-b1c0-2bc5-8627-1a7489c2b20f,3137795954,19172218842607960
+05773b0f-9f48-b58e-0744-b805f7d1555f,516902933,3111235302314674340
+924821ed-2e0d-a857-74e1-581337bb10a4,3147811826,7420005287454347028
+e4942bbe-39e4-bb40-583c-f5ea9983f1ac,4125594336,7953542490768054726
+57c24e09-fe5c-10c8-de05-cf35a42d76d5,2615540715,5138872819811403733
+1acc25c2-662c-7375-3b73-5fa6b5c53666,1517417453,11790577566705062476
+6ec407c5-e716-9a53-6236-e0f32172af31,1091320603,11688686783078404156
+a281be05-7263-d4fd-4de2-d344165a50cc,2993606124,14209875227624753612
+d6251d06-08da-5b31-82cc-6a032722b1c0,1277112124,15035360759223045221
+6a450dd2-5fdf-abad-bd17-b61cdcd4c78d,2373361414,5366610323348372350
+87cdb2ed-7be3-e443-c946-70f166c8adfd,306350512,7484169234833184571
+fd45d7d6-c484-9161-059c-b0c15d350658,2010317758,2411788022801514774
+764bca16-77ea-9aaf-c60a-ed363094cb8d,1598438230,15186996134057859237
+63c379d1-e9e4-863d-0622-ae7c1883185e,2350488904,13312382640902119130
+c7a0b9d2-b0c1-7609-ea05-044bf1fe916d,4092632126,8892398923276844835
+1c90570d-8ac1-50a4-bd08-fe917b686d47,1411019065,15565239373656471673
+d2fd1c0b-e692-2457-068e-6d00cb230b27,1489775109,1555793649138355011
+fb9ebbbf-3a3d-790c-d07c-a8f378082d53,422415527,5416650727383334409
+ea6c35c3-6a67-a53f-9c95-ebdec0b36865,2492485245,7029751077313415566
+db7a4f98-d9fd-751a-235e-464ae60b4bed,1965117959,736745167863363270
+1e9332c9-c5e3-6e41-210d-d3da4b05a6b2,1657954618,10162377130308253499
+e2081b6a-b9f3-12fb-ffd5-caf1d6e20fb6,94396935,8457041644721543949
+9c44011e-752d-45c0-0aca-3dc36889ae14,3600501357,12241243986929769721
+c633de85-d6f4-ea7f-6aa5-f30a4596d19a,2325474946,2605361022951272295
+d5992cd2-51c9-d9aa-9ce0-eae5d4bea2e6,1087726565,17386197581782743084
+c31eac98-d756-f1ed-416e-fe69505cd224,2024512197,216736204101980238
+f948ed44-b1ce-3b07-dccc-6e5aa1368e05,1872935136,8018183272167374584
+cbc83202-2a03-6082-f313-e2159c551588,2829346600,10146038941948529989
+bdca25a0-3cf9-2c3a-3636-9c0e556c5e14,948099740,10740395598918311358
+c94da370-4d31-7fc8-4e63-6b5d0d20d13e,3826226604,18399475564144144132
+cf410360-7b5f-6bc4-ea08-4e36cb54f503,1898723068,17094525467073865389
+615a32d5-b811-9214-950a-5274fa3145f5,3414104321,6366817450794431215
+88a3c2f2-faab-a148-5b8e-c7ed0cf159c0,1759223320,18406665526548354236
+f313b58e-f06c-6d9b-a561-24fcf9a49a9a,3935510469,1943153802779445253
+c567531d-18e2-3242-7143-bd1fae9f9e7e,2895518835,11872866944929392029
+f3c44b35-2b85-957d-cae8-11ebdca8f051,3823338634,3105013368984868736
+83e66159-0b86-2f35-96a2-e43827c8bef4,1287644913,2256642604959749945
+b5233166-4b29-4bda-1e5c-8623fba91cd2,3035979727,16208748776179084780
+c696cb10-67ea-7530-c76b-b9c17a960b01,453012592,14495326040223908532
+a7b046b1-86f5-2b5d-5111-3b669c8e34f8,3288368325,5442837884123921518
+97f6fe55-9bc6-eb9c-3b30-0fa5dd8ca3e3,712226163,11426829545199081401
+48e55da6-ef67-794c-7c95-a5347a267328,517791390,29632566591070941
+9bd31bee-92af-ff33-35e4-31916d61bad2,862482046,18090697129934359017
+eb45a442-6da5-cf6b-8b78-146b79a78bfb,1619725514,12060915811211092071
+5cda3dc9-4ff8-d363-01c1-5c76c624f377,2613865701,3078583584357403296
+726b93aa-9317-5164-8d52-db53dafea1a9,3969681766,17521859993212684969
+c148609a-81c3-35e6-a074-dfe50710141f,159772929,9031695113180041098
+bfd2f420-63bd-eb47-c9ea-e0874482205f,2009670482,5570309536291464795
+4ffd65b3-e6fe-7f11-e23f-21b749856297,2124878978,1024644829530539102
+36f4874b-ea66-1dbe-0f27-5491298878bf,1565747798,6365884228003864954
+98c89c76-a0dd-7a4e-71ee-8b6bf67e9024,1230501630,11640500436661502926
+0ecdfba2-12e7-226a-c5cb-f5d3506cf9d0,825820304,15995542686326149819
+b987f7c5-575d-cfbd-8bf9-7b298e22e0e4,1448077379,14408669051430462362
+f54cbcb9-7c44-9cc6-282d-aba6a1ef9bfb,3077770154,14719121268083747202
+d050ab35-366f-705d-1003-c4f11e41c562,2156329333,5923927947281762768
+bd922f8a-b377-c136-b161-56b26b415b95,831497184,1435590798606998360
+83979ddd-4e44-97e5-2750-5f5da943a31f,1473022771,7089009280636369811
+7eac26c6-dbb2-8f5a-3a5f-b64ea8bff81b,3202140502,9653027826038362275
+f7069d55-5b1f-6756-0d0d-b68c62502d8f,538826340,8502561396689192662
+576af3f8-c967-cbfd-d44e-210bc1178b4b,2808247133,8845773603037713352
+b5331d21-8c90-f7d6-59dc-d518fbb73bc0,923005656,5433168676898135199
+a2887175-477e-19fc-4181-7562bcb526ad,727551035,7271363215800281340
+b3860461-aeee-36c4-4deb-8f6421907a30,3187547826,12070158951171312964
+4c61bb41-199c-1f17-49f1-499e76544708,1726952302,17040679484817082447
+9dfcaf40-151c-3775-89c7-2817fb3e5f17,3188186915,2530193738694917989
+dd2c7507-83db-3757-26aa-8d7e08f3abf1,1185777336,4809803857091523200
+683d192d-17e6-d192-f421-f67eca9c6534,2879441509,277015287588983759
+f0239701-39d4-6ede-eb91-8428fc7bf90b,3955449323,17170488510156643663
+66628af8-4b7d-f748-0e99-45a0c4054a88,2348062967,2250380732674502317
+950f9674-f897-33ac-593c-29d178fa7f06,2966819737,3472750113637818700
+47ad528c-0e16-22d2-2baf-daf236c292f8,4278245956,9237245529040822132
+81817b32-4100-45ed-8580-bba59626d692,781148422,12842931301947049334
+9afaa456-8925-03dd-fc87-3cfc073c0857,1974382581,12855373178520675050
+e7d99598-e6a5-ba58-84f4-a0835df1c319,2603621254,13503604395011405094
+e69ee608-920f-da28-6b76-b4e317795376,3019191088,15686746571815124530
+10d95933-7698-4857-54d6-8e5265fb400a,2793214875,12233390714991170992
+1700b72b-501d-db43-93c1-f37a5f81836d,2654771168,13524092106397283667
+66146789-c824-5801-4bff-1b143365ca87,1918141450,18292431436148751902
+c160a823-75c6-24ca-82bd-ee38b8c46595,688819522,15053921547807725332
+5f3d24b6-abe6-cfaa-762f-6c265e6ca692,2046529766,327625131015858138
+038c0c11-adeb-6741-84f8-40b31ccdd3d6,2380406730,6589831572957994569
+f602deaa-1a63-e31d-4283-7a1dbc95d265,2657011643,12975746497291682485
+661c34f3-8374-13ce-3255-e140e4405430,855399476,8997562145273959280
+0b5919e9-edf2-3a6d-6f1c-07520010fa66,575334166,10153233689871541583
+8142bbbf-88cb-06fb-6203-6b2466b759e2,4134756623,16429839136826811608
+bf6f717c-030f-a20f-5396-cb8c2e4f63f1,1520258438,14501238805813470581
+cc9006ab-1f37-c6c9-bbbc-d1085b48039c,2997518144,7587310373010980931
+184aad28-dce4-3987-7b3a-437bf50bbec8,1441780244,14676408323708658057
+252b2697-b43d-69c1-b439-dfa91ec65c51,1603415156,12962360199103391539
+44a03402-fcac-c20a-514a-5f9aef2ba261,1030495662,146313451055005980
+819b5e16-6150-48b4-1461-95f056a05d2a,2258823889,13614145605821844483
+9d773918-0ba2-cee2-625f-103db42dc08d,1227041781,1134444580639170280
+9512297e-d99e-c55b-3084-f63e80de9aad,1323514187,1023329156147655746
+f52ade83-ee08-ed6a-dcdf-7fee75bb0914,2518162950,17447094808151138311
+bca4fa5c-fdb6-ff64-3b55-7f2718a7b5a7,4059508239,17106403466399710671
+2b6ce4ed-68c2-465e-9404-59a38ec162ca,3624771507,2685477623072671444
+d310d852-2b50-fe45-596b-1be6b1e9ac18,2883065924,7754399611346810528
+db4e2c85-439e-2187-5c29-534c8bf72b14,2441032946,17273537430341486714
+64de0c92-fd53-fa0e-3e0b-6e97a7ffd836,1713071196,4833337113915606379
+83eaa63d-4409-98f6-2103-4edba6ddd7a0,1734691820,6050857426556179932
+d8bba874-3663-3ec7-0901-2a53ca9c9014,2195130919,12163270271583773959
+0c316816-e2a3-3ed1-51d7-649bf47c7d91,2081069849,15187848047842625017
+63981f0a-5f36-e3af-47a0-7643ecf7434f,1950988369,12759068578709506574
+90bffc86-a569-725d-591e-50d91fd5cb5c,2049287612,6813674254743961657
+618004b3-40fe-d9e0-cf11-3c813ac71d03,145038691,7687388191735142315
+4af885ee-80b6-1198-b982-7069246aa583,3744414157,14598148786787020672
+2bd1a946-62d7-a602-790e-5f06b022cabb,3365190764,942115051408085650
+6df70ef0-6869-92c1-60d7-8e9ce052251d,3668255544,15122687525721844386
+1b272f43-981a-50a5-db04-dab8c2e1bc0c,1474750166,13727728694203098051
+12b348f8-2737-4a4d-b39d-5e1fd86d267e,1379164405,9994866307935714686
+9684fa9f-d9fb-10fe-97a0-eb543cf43ae6,1716315675,14234221165261578714
+96329b0b-a717-70c4-8eb3-0b6e5340d0d0,2342147486,6986418885071965153
+13de5c39-b21b-be87-b11a-e5f68cf207a2,317907235,365276426961055427
+47b68b69-f036-100c-4e50-74e5f9814afd,2335887811,15094840076660708642
+b6a5130a-a73f-819b-3669-750237964ae7,1782587689,12659441850935315434
+4d183ee8-aa3d-c46b-0a27-ce50d5839d9f,1495375993,7220016902947459951
+1746087d-46d6-47d1-bacb-52d4476da427,2662486242,15343202781185492141
+7bac1848-289d-9611-767c-9ee0444bc8a2,3887436133,10074620094710396979
+ddde75af-62cd-52dd-e4ee-b876753cba81,3510590246,5890186991166724255
+487084d4-08b2-48e5-4306-5c8bd8ce3308,1216404096,13667082230864376897
+b9a6aa90-3ee7-5b3b-6486-7531ac92c073,2896021082,6171126981290745301
+4061bca4-aedf-66e3-822b-5975f011da01,3635936690,16073720618617703635
+5eab32f3-2378-1202-ff65-c091a2e58d89,754740300,3497164828941622332
+968bc596-11c0-e585-b5b5-830a7733d8ff,1868666203,11758290663373948679
+71623667-c36e-bb87-05fc-871f96d0fea9,3179008768,9668441683169321647
+3e023b6e-2d05-38b5-647f-1f759927c63c,3499594307,17659866402023265866
+3af7c03a-1bf7-148b-99eb-485fd8a377af,1538949602,2944187788052826990
+e2422356-f49a-ce9b-56ea-98c9defe9633,116425756,3046837526709553862
+a1ef9ec4-3abd-7ee9-d878-0c5fb384d39e,3815082014,9153934157822340340
+4c3894ae-17ce-8094-f4e1-64b6f534f917,1800737614,14404571841810204955
+43e7971d-98b8-d40a-c897-8f6b29a83953,1442074662,18320224322714707253
+aecf24bc-bede-78b6-b5bd-5e7a933ca6ea,1174015111,11900132897242445862
+f28c793f-8307-8bbc-2c6c-582ef7284e45,4112678184,12077928995498274665
+b168ced4-379a-f59d-99fc-8e34b806d561,1235723494,9424857915549189372
+cf18e41e-f24c-a068-7e23-28d1e21d113e,3444264907,10628784408858306000
+be87a1ae-9058-cab5-f8e7-3d1c0f9ab4a5,2676576782,11332006609288132616
+b5d26dd1-9205-4413-2b4f-24db1e98a03a,1492698300,16601888235949281664
+93adad2c-a95d-b992-8cab-ffab80e7776d,2262088011,6072950253768579
+12956b70-8d14-fff6-1a35-17b16cc8558f,2018825604,7507257903534723675
+4bab3524-6080-ee9d-e862-4f60a4b9c643,3974960239,5893279746953128215
+356b7b24-0c29-9a5a-4541-bb1841f860e8,231745501,9826144403868519491
+b248cf78-54b0-eb28-a193-30bbdf3fe3b8,810658314,6007483795932917150
+06756ed1-a5da-cb8e-0738-ea9a77a81df6,2096388672,4995834840128711607
+16118113-ed91-8b7a-7863-24749f103cbc,3992450985,13842763804225348995
+a31c02e4-fcb8-3d17-441b-22e8330d0750,1211365762,1764476461115195666
+2eb25ebc-964d-4c1e-5d94-fbd12632db71,2405879212,1473870713494167014
+898036c4-2af4-ca54-97bb-7cb3a6195974,1608336870,935221618602679807
+53e0fb54-92c8-82a0-c9be-f3e58aa3e07f,4176884191,992625896330771226
+a6032a68-5160-02e6-5abe-3ada06d468b8,2543725786,2542003146157732237
+48ad2947-b26c-2147-9765-d1133a0b2cd5,3944917171,12620200498506178356
+a4f62418-a039-d681-d629-33e65f783a3a,3954803923,11172946105049042173
+943098c4-fa91-1b94-9d63-17d80c380c1d,4255634091,1508135987212008038
+e0284461-d924-7299-a625-df83ccfbf1eb,1314603329,11133361762139329123
+9d67e9df-ced8-1928-56db-04fa850ec1b7,3187723096,5907838370108637021
+316a65d5-15f5-5e1d-a91c-3711fb6ac30c,1227901454,7644828299707226191
+0a9ccb80-2367-3d21-22d4-a1cf0e4c653c,973251663,2299509032893689382
+b30ad916-1825-dc8d-7bc9-bb96b1d2db16,3454993647,426878212486469983
+372260ef-1652-559f-cc72-f1b2f119680f,334799616,2195359218210023406
+d9509bcd-1ef1-0cbb-53e4-358cbb0ff69e,338196830,18109811175378151026
+704b86c3-8f7b-af26-4298-54108736b288,1024718401,4665369715327982568
+41518910-8fd5-fc70-b8be-8f64d75b8a84,2701838986,12945107363952401496
+2dd5078a-6d87-c23b-fd3a-70ff8673f3dc,930763926,7599330148734503736
+18ab7c07-2b43-ec8c-3277-52ba1c826e23,1949532631,5116237952160786678
+c84453ff-2346-6ff8-aa26-27a157cdc419,47732682,14252000209852285728
+8d4d98a2-4231-3917-4125-5d5ada951f42,3095707290,17181795938835355701
+8eaa5212-9b62-3449-143b-e6dcfcb0e679,4164992961,8993119897055413843
+9223900c-e798-47c1-53e9-b73683d5c4db,3720345964,1168854244353286793
+2703562f-46a1-de94-1700-e548c2272ad7,3756723506,7124193620101930123
+884d6bfb-58d4-e659-2493-456033e6c30b,688514452,10967975987841444791
+316799a1-b215-67aa-6a2f-b4b518491de7,2075743946,17554681843406365476
+e742f734-22a5-104b-aace-ab489589f1ea,3613856480,295559687066970223
+302a8008-ae01-981c-c1fa-0a68bedc9af0,2154649378,10148771674032250028
+7704c36a-f1d9-50c1-0cc2-6902d11705dd,2157005613,11497856718074191359
+e19eb7ff-9396-0361-43e0-c4af502e3c10,711458494,6393535346151566218
+426e3bfd-4cd9-5bd8-4b6d-3094e849b901,2108722342,5061454900417079160
+a5497ad8-25c4-9b79-f20c-82af2f5aeb73,2331414156,17478122253245103057
+7f998294-dacc-4015-a942-9fd359887582,1185153440,15407333598159011873
+64f2a9a7-02cf-c6c9-5abe-b6be212e4fa9,1248648578,12716304186931567324
+9ff6f15c-053a-91cc-65f2-4fb985f68e41,3717766476,15403776026368769334
+032b1b01-ae6a-57b3-d1f6-b36276a34ccf,3662924736,7405172074599633770
+d20eb339-6602-2eed-3fc1-ba139f50119c,1933590217,790983475875836150
+c312974d-5ea2-a524-dd3a-84d9a5c3068b,2554481213,3059774117400265417
+87a09a25-4bfe-b2ce-eeab-43553eed0973,3598501640,13511350862812674971
+915cb41d-2871-e9d7-3be5-c472f7c3ecc1,395545093,16929079632208549681
+3f03ab9c-9a07-cb09-939a-38b10b2df678,2950036176,2929531421764576555
+49fe7ac3-8bee-5f28-67f1-c342b6d52386,3383422831,12074056211749271385
+1e184678-cd1c-ce20-4516-684fc2f9ba67,2701309516,17552872227575701974
+e0093403-a2ef-b9b2-8da8-9973e5c2216d,3264914229,6320638236509745230
+23a90e30-bdf2-6bfd-614e-749a6df62dbf,2940956000,4872398194123654117
+45401114-a6ff-68ee-eb66-fa06c980f8c1,1480336796,17523998780704048651
+26e3cf11-0539-53f1-f8bd-51abff6f59bb,3960903213,14206540335578764420
+8be17897-3a5a-f567-871a-34cd2b5c6643,2741431229,13467460942778540470
+e5bb30ee-02d2-b373-1ba4-0760d2b2aadc,2365376609,1445237455447155252
+144d1371-6bcf-7911-5484-7a54a9b47336,1841399064,14219712072186165296
+5b5616da-bccf-df9d-4ac5-c61788ac063c,57920486,10300098691677404155
+fa2edd85-b97e-0021-367e-1faaec4485c4,709216444,12724474465300626607
+6745d522-b053-aa89-98b6-15a20313ac2c,3992170143,4453512265119979732
+2f75ae6d-dd91-2a6b-2bcf-e8956300fff2,4294246385,11052913551198279854
+83ce24de-1632-22cf-664c-2a1a639d255c,576005030,8000031759111497270
+9a51c4d7-bb06-2ed9-f630-eadd0d382ef5,1105254397,16543589346031297874
+05b7c3ea-22d2-fee6-8b07-07ef76fd8438,3582255011,7285834031488541605
+3df00e83-4cd5-6f3b-676b-04d8c690985a,2961612623,2666799460310708107
+43ebed1e-5055-2916-721e-a15d27e60f16,881191207,18265298898679928182
+f9abb145-9eaa-099b-d425-13aaead9d4e1,1105500159,9969645218174985975
+ea88ea89-1e27-6979-8425-7f43ec1dc837,3209103267,8433214335061928986
+1805aaaf-8cd3-0160-4b93-ed29efa46b2e,1028733617,7855763213456707911
+12b592af-e615-c02b-ac4c-27002c1d6423,365484955,12136415561315294457
+92f129fa-5974-9ebf-cce5-24712c828dda,2511703169,13774795135939848180
+194ac942-579f-e8a8-6740-674cc2f7a062,595925000,4549493446168211847
+0fa4cc6f-11da-7a75-0701-cd399e937c17,3437162171,17229677455618325701
+c92ac4c2-8bcc-67b8-9c7e-b12468cd3971,662896282,16787863477499615205
+fba51d79-21ea-0a8a-ffe3-5229859cea52,4108415511,4098333146675368277
+80ee360d-9599-6069-8639-b893104c77cb,197945486,11499552989157361889
+08956fb8-ae3f-bf76-9206-32a7c3677759,75109832,3404224015548438015
+e1d3bb54-8c2e-7394-2f25-424eb4905198,2785503563,12165684733968764157
+fdef5ad7-08ca-3deb-516b-22178536b458,1276046252,13463464156517356645
+d8df884b-787d-1755-4600-6d28985a3a6a,1557804139,9704255462644091780
+362ae902-cbec-ca2e-bb60-ad76c0402e3f,2838734688,196457637242019447
+eaf4fd6c-3979-0715-880c-1c502ee81848,3230573018,15241478073263274587
+d172c10c-69c8-e068-7b53-1a8025e7f0af,1552623904,8596370632814119716
+bed36b81-b7e1-d2e7-34d6-af8dc8ba59ff,486876152,7027675637678825549
+3639817a-0dd6-9d31-180a-1559a34a43df,1357459581,5961145459501794239
+6eeef5dc-6f13-aaf1-21a9-5f56e4c07809,124988603,15508004740211585820
+9ecc5df8-c3ea-8133-8bb6-2f7f5595ba48,1742957506,4423654175509260272
+2bdb776b-1308-da48-b6db-a07f4341e435,1550638023,14240650632036521729
+6682dac8-751b-fb93-29b8-d6966c5f3839,10856149,6958272153719116010
+a1d74734-3912-5c70-c09c-58d18d486295,1545032704,10261864786708470087
+93e52462-36f0-aa5a-3fe7-17dbe3fb424e,2054394080,17387718158891697157
+7e4aac14-f621-4ba3-b9ce-4f4f87f8c56a,104224337,4178480346962730442
+d7caf563-1a38-0f2c-4e15-704694069b64,3303916379,12188598995939915149
+0f89b4a1-48f2-0a98-0d09-9e1d567e5086,179440803,8044700006469259420
+04b32ebb-cdf3-49f6-3f94-23e62e5dd2d5,822541433,15412822896077968456
+22e7e899-dceb-cfff-f6a3-6f6bf28ce143,1897403294,13682943966574081755
+7923603e-6742-5c1a-9844-9fac93541ec1,2193804544,12442952103714612848
+fba7103d-fabf-70cc-c7cd-637b4d7fc7ea,2121870015,5041687110717459657
+17679f56-2e67-cd78-7eac-ce32d2473a6f,1490466355,10172728449865928016
+62599159-0a3d-789e-5cc8-e7c0ed80dde5,2334134137,5020574875385429680
+3238f7ae-5841-ed24-b2e1-b492112ad90c,3455861948,17097346900907587201
+e2ec237d-ca30-d06e-3ed7-f565976255c9,41907401,4510717424699308282
+083a28fd-6ed9-010a-876e-bd790f83b971,4112931339,7757703214756405744
+9ad8a8f5-6f96-45ed-25f0-b5e4132e8f97,1449270554,13963032967603174019
+7b4e7b40-192a-af3c-bbae-b082fc07a84e,3410579162,17047909471908757615
+ca3a643b-6851-2fa0-3c45-7b73209e9444,1505748698,1317001543604869318
+17bc1586-eecb-007f-3cfd-5363fff15a16,4215658841,6454722042812744672
+e953b50c-1905-51ea-dbf0-e701e6ebd055,3480940329,8811512669584723875
+d7240060-614d-367c-3386-a14b36ea53c9,75617582,9959041592553136398
+c6b04364-f43f-f335-7e80-4ea9d2fd031c,2923890598,2626772632450160204
+1b7779cf-8a7c-f661-02bc-7a4be63f7c44,1257751877,3393316215193408168
+2c0365f1-2fdb-19a8-81a3-2bccdad55850,487953129,16899598545390952376
+12347438-3cab-1fc9-8e3f-23b273fdfaac,807455651,16586336668800170541
+17a49c4b-f2aa-3c49-ca0a-3146bddaa51c,1773589824,17918416195468382150
+d6ff19ba-b0b3-de8f-3acb-c6599006b7aa,1004725221,18390373196043486312
+c2c09086-1b98-df5c-be82-f64ab57f3c9e,3526369920,7112711081596439865
+c1d51c02-417f-0dc1-bb80-9929a930dbb3,1964496712,17114841071879876288
+82f764f0-417f-e773-a1ac-237fb3188f67,2999329782,14761763448027944744
+69a19417-a915-26ef-2dba-6bbb097308c8,2596082596,13262076943630896930
+679d1acf-afe2-6c70-5d99-874b23c0dfbd,1594493254,12316333472188081231
+f3832e58-067e-209c-ca4d-517e5268f3e9,682048003,1267087003282824651
+198d3a88-1916-88ab-24c7-1ce96c804447,2400263649,8432973301014303619
+ecb2203e-0fca-13c6-4fe3-f828a9ffd612,503778012,6167995706596667331
+9a5da65c-2834-b600-ac14-04435dbc3e9c,891398555,3157125918334855654
+1244bdfb-4d0d-d2a0-6a64-efc7d993ee76,272100202,12219627264843884569
+84246508-ea2d-ffc1-0b84-aed3d77a8b32,4119726676,10685069540888892427
+dcd9ebc7-d0bd-379b-5a93-c6dd8cb57bd7,2282303307,8839510861589964034
+b5beb418-61be-dbe0-42fc-2970ed5e80c7,2671134520,7236067403548179758
+680c64a9-166a-7d08-5206-81cb90a99bc6,1461719342,8865514377726806977
+ac076925-78b7-2ea7-fb92-c815a42dfcb5,2841809414,8395314594797990890
+037917c0-c09a-49b0-edec-08beaafd7bab,2058559578,4010758451707613417
+38e338c0-e865-7939-199c-4a30c742d983,3480547930,17203998471124045521
+5802de64-161b-d691-3698-6444a75dc09b,3443065616,9503932461565502600
+b5ca4fc0-0d9f-1e1b-eab9-343936d5ccf0,2073131964,14981496411603286242
+b7e0e2fc-9b98-0dd5-c861-362300b78a4e,2727661878,3794100746700026157
+ab1b876e-e787-51a2-e8d0-8d4d36eb0d73,3928780438,11154588738863147030
+ce261779-48f5-b51a-d401-a7f22ebc77d6,2760138509,7947401581454482801
+e34c533d-517a-7d5b-7209-cc9686182764,655531873,11300753041541333927
+726d99e7-3e92-40cd-8e0c-5cc1b9047323,2140032365,17006478281827454700
+2b4d1b75-f7b3-6ef0-7e6b-22e1da861e99,1671681929,9572109488206724037
+5b559f42-89e0-9333-99f1-fa8234cba0a8,2464661852,11930006561648614839
+926facca-6fa6-1a0b-61de-885d6de7d7f6,3773787576,11730359342698594427
+52d32a97-dcd2-b956-cc27-396dfc7b84fb,566662801,14014550269842651518
+e6e66d7c-29ad-1c32-294a-552d11bc0e24,2347652677,1007942219480618740
+1c23b161-0ba4-88c9-d1ba-b93745b12b91,4124193406,13434907406987641948
+7c951e4c-10a1-b914-19c5-a410b63bccb8,4048244847,16865398232555959786
+0ebe9733-a77e-6d81-5132-e246dc41a81b,1141792776,17408790765967378689
+ef3cdc0c-af65-1c5c-a772-1e62d8079edf,4179233102,1530847226973021337
+f5648dbf-4bb1-70bc-ebc5-69b5261f04e4,362873451,14301041292546640711
+6d4b184f-75f7-67f8-c6f6-5b315fbf356e,2378913841,5730988177797925853
+dfc3acd0-01fa-a352-e3f6-dd085fca2880,324642306,9357636015309653249
+bb524b33-b1f4-fe9d-010d-ff0a6d8974d0,2094740355,11169110195978269705
+bf9f22f6-f4cc-9ebd-d080-b01ee32362a0,546197487,11903873798714233685
+d6ca078e-d577-cea7-1de6-dcaf778c8893,4204640366,10235579544855345934
+51eee546-aeab-c9f0-6dd6-434953fb8065,884256023,15308256590791434924
+f1220239-4b39-df3c-9cc0-ae090b5eb25e,2315585316,4880064192864783772
+2a0a57e8-adfe-a163-12bf-6e98bcd03aec,3072638509,1983511489738397257
+edf7086e-4012-cace-aa38-be48fbce05d4,1615539879,6148007101363016468
+95ac9a8a-1c48-15a6-35ef-a14e52cafaf6,1579187660,15687893699270250602
+1e829747-83bb-b9a5-027a-27d1df8fb06e,845769320,10471454914451425713
+152f295a-abdc-0c0f-257b-f06518f50321,1371369577,4876795465233843421
+8de6a789-6b1c-5735-4507-a63397d67c18,3537513182,8560001264196878031
+89d2e436-a829-a9c5-dc16-f2b9c907dd7c,2937693594,653948717158812840
+281d48d0-f363-5365-fc5c-23941cdb01b3,3387524996,17579866899622907337
+ce735884-2d7d-d53a-6897-f067cdd3ff4d,3174097931,60631971381970512
+2eef26c6-3642-5908-2d31-838453ec6397,1651885081,16709780097489916113
+c1d83983-e93e-e22b-7622-66fe28fcd2f1,251758665,1572339209724938207
+f7845f8f-3416-138e-de43-467ce49066a9,2009736532,8336971553300585820
+2f02a15a-4f6b-c02a-fa76-cb28f2ad83dd,4259198162,12206421627338009508
+f3aaba32-5b89-6852-5930-83b5fc3fefa1,2698148014,361724840293108020
+1d08837d-1003-e164-0c44-8e73100ce78b,1354754520,4301131526703582792
+4d9fcd77-1b87-6f7c-a443-d828bf6da5ae,3013300560,14592618600856331447
+f9fc59ad-6f98-0bd6-e09c-e328e525c603,3916837379,10543341192354574595
+78a521e0-6bf8-704a-fee1-a0303c419553,127494303,3871010616682703307
+7133e268-3e3b-1604-2251-7bd54f7ac766,4081924377,15318390700125014109
+728a56f1-b16c-20e9-3b49-464e0caae361,1556286175,13844159357801820698
+98b7e169-34b1-c8b6-d9f0-98a1b82da0e8,2503781265,749727306835049922
+2778dff7-ca50-3870-3457-d6d0bcb268a6,2489854976,8369905400454814243
+4a4b1d4f-5a2f-f204-254a-8b334ea7f4d8,3426396607,16148169306448213499
+b065f818-fd50-efee-8545-7f5b2365377f,710162869,16432412974711893418
+f17a2e9f-21c6-228f-e24c-633a631d2771,1582783843,1786721098436205285
+9d88e67c-f667-fc91-bd70-56093ec434cf,1956158580,13292084921773664918
+6dd658c2-8228-9143-7782-69ffafdd87c4,3270651161,8289568796676309073
+113e3e40-fb7f-04fe-5411-1038360bcaa4,1529364134,8505231782844308007
+41ddf3d0-ca55-aef6-11a7-9b98f19f206a,4002860861,13987106258022355766
+4487534e-4871-8a9b-2c03-a3c4a18b5979,2698057916,3632378270208334902
+40cea259-a05f-f1bb-d298-ad09481af20a,3960954867,7480390959944289508
+7758df6f-dd89-e490-1dd1-bb3602702b77,352636327,12634749276486617663
+cc712b3e-6d5b-7108-5480-e6d75d218b29,97226977,3052553954618973425
+b95ff3fc-c3ab-38a0-2b45-57323f07cf8a,444559307,15507138171019725936
+f965b68b-6829-1972-b8f7-421d7fe77f3a,1718672755,1590064584651812155
+cbe62ccb-6b72-8ba9-7083-aee8ac0ddc47,2723935170,5336760795835925808
+f64465f3-3f9f-869a-625e-20cc449c274c,3605731337,10326217484406127672
+1f093dbd-01c2-a943-a130-c67b8ac530d1,1740579549,14820713327313581957
+93052a2f-2292-b526-2cbf-4fef89d025f3,4242269224,4815162373311513736
+4dbb96a3-c728-40c7-cd33-14df3340cbf1,1259241792,14455630791895806239
+0f9b5ab8-bd25-970d-823e-4ba482d0ac0f,900578767,14729315360068454910
+207283bc-3c5c-6383-61d2-20a10cea33b3,2175232013,11917915647419586048
+76e5e038-daf1-ba0b-8880-1266f76a4980,754260542,2797547339215357466
+c59b6ea2-80f9-00c7-0a33-e3827372d86b,3673191974,13952093473445854735
+54c3bcda-cc53-607a-9dc5-78ebcc61e4f7,256064082,1079634023040307957
+0f6dec18-77c9-427b-3916-5fd5d28dec3b,1973861991,2281410325132150840
+aa4c7c0d-6bc2-b3e7-55fe-9e959a84fcee,3428811008,1560219925565107007
+7e30eda4-723b-595d-9b01-e89aee66c658,2638673328,5141226937866681089
+47497929-cc5a-6044-047b-475680bdf102,1932799647,16132220942326141640
+25cf9891-f39f-b142-c71f-a1400caa03fe,2830946471,1925198904874321773
+9ec8d5c8-c643-b9e1-07c1-519dc3e15a90,828943756,16565383927766149112
+9d2ef617-ce5a-1f49-47a4-b8a9f8bfd0df,3301522745,3867154567457532860
+46a677df-6520-4ea5-028d-ad8d76e8500a,1970637728,3285187393482115054
+b85a0825-c597-09f8-f30d-0413f73a1007,2895823662,15287664575370880941
+9861a604-e33a-61ce-162d-508736d5cbf1,3181962125,13875523958405758232
+f618cf00-fadb-39ef-314a-53c672c3292a,4238936285,485241517178963051
+8639b660-a4e0-5ed2-fb72-abb0e52a6ad0,2767251422,12361647841707524305
+476e6b8d-3a66-2f65-c68c-457cba855cf4,3246798307,11452475948905029952
+098de8b3-f283-f151-403c-9feac1b49907,1586790626,9780314101717701756
+044f29a5-b25b-085b-218b-4ba0dec4d56d,3662139650,12279429893652890642
+e41b60fb-af66-1b59-6ff4-6430bab30b1e,1677981608,10333526279492917926
+723657af-93dc-042a-c7c2-d6ea88ca40a2,3733427920,10994863728994182329
+2d444923-d4cd-177c-520c-763ca7097754,2491422546,2453853303712735255
+cec50b46-a9aa-46e6-1395-c473e0b65af9,3464329987,16296455358501112706
+9c874372-0625-e3f8-3447-c43148c6ae71,1249984261,4443459201196526623
+19104361-1331-4d65-c569-ea50df94dc5e,1154465847,1099596057660938505
+87397342-e8b6-157e-d30c-9d24901224dd,4170857185,8043902378986059213
+a3b098f5-9131-30df-42b6-9df0dd546097,2814359485,18097183776400714404
+7f5bd07d-7234-1db3-9a3c-5731f0711c8c,1011921832,6446390355887643647
+8d4c60cb-9551-c077-dfcd-daf513a71f41,138169089,2767403883766258658
+532863d3-7067-481d-e0c3-6acf389e796a,2483072763,7054246952944766307
+21cdad84-738d-cb75-996d-77dfc29683c2,4141118480,6417969204447051555
+d34b9f78-4890-bd22-2af0-c6359c952c76,2526678583,12696337469429562696
+6d0b78cf-34f6-85f9-ec8f-7bea0cecd2ad,3471622941,15013473958666847364
+6374549c-2f4b-2257-a0ed-794bfe10a2dd,976706722,8820817291302755282
+c9f6cd46-8433-87a5-efa3-df17ba33b9d6,2129022059,5465489416705801171
+4ad3eacb-7687-11df-141d-88f089b90bd8,2882411357,2576475902694372100
+8eb959e0-c0ff-0fb6-6ea3-2c7830ce8078,3906895674,60614899381026043
+06931b91-8e89-675a-b8e0-0c3f47488dcc,2108808366,15551606188333609245
+9abe78b0-6614-49c5-3a75-d005ff443fcb,384207354,3247932883816678256
+cc4433fd-4535-63c2-2ef0-ce7bf0116053,1399515415,17620789338166402508
+3b76e67e-4119-78da-1725-2da0027daac3,2738623807,13662727999338104402
+80232589-108d-1204-05d3-3dcf5eecf3e4,3778274255,9923133248672220933
+353afee3-f68c-74bb-a82c-190cd69ebc6a,2030049285,14447460558456211615
+f0e11698-474c-a69d-f836-6fb1076b12e7,1722195067,2116411571027277737
+15f38cbf-901d-8768-a7ce-b2e59b626215,4263140199,2941767970572668366
+b2425e74-8852-ea83-e174-1eba0f5b1679,3438642158,4981221139820136972
+7292807d-a6c6-0308-e121-98f9100dae2f,225661390,4320741855311525352
+7edaaf56-e0d2-25e5-d2fa-c8baffca73d9,3899731394,8898479944759678817
+de23123d-3849-3575-ffbb-8554ffacf10f,3136381720,16695573531510719488
+12b0d331-6ce5-9960-ae70-2506a9271cde,1768979712,12041624143793756942
+8e975035-f520-187f-2c28-bbe9c0067baf,257514588,9472091604418114607
+7f1e6141-3560-62c4-463b-517c588a91e1,2283900775,16464682524106006875
+2e567bbf-418d-dac3-2bd8-159e62ff16d7,2315810177,2704288406455509053
+5f4870f8-22d3-e56d-ba0e-9b97947c273e,2927347401,13326019569745764887
+87f5f705-8ec0-0b63-60d5-e5875aac2fca,2819300684,6783883874170549637
+411fa2cb-9010-e648-ab1f-351dece2711a,35700002,2209959851430866178
+024895f0-825e-c5a6-fd29-2e111f5392d9,3493883598,508758725123075747
+3e94c2c1-1697-defa-1df4-0dc3283e389a,2168117360,11263045022214102510
+ed23fc90-ff9c-0ce8-f9bd-cc67d9c8a9b0,700842498,14411807054690932466
+3b86fe25-da23-ddd9-a37d-9ff9b46a3a6c,488343432,13062669046789133787
+db043feb-9787-b6fa-f740-2aff2f3644da,3562268072,7255685950237133832
+23c67037-36be-42b1-9f4d-fcb28f5e6d00,3031518586,13186265699806982238
+9624963b-6c7e-888d-0429-956d94224310,2055958687,7778089388656232082
+e923e49b-d676-f04c-c603-0923e7981eb9,2392274434,16831667549928727816
+6eb90195-34ae-0a5e-8ea2-a3d87d9982a3,3617458475,8331996869338325961
+4573919c-51a7-f256-f7e4-d5e78af0cc90,3695906971,16839490791185585837
+f051a915-5218-08e6-41b2-18f49a114ad5,772307651,5010736109180641625
+d4c4a1b9-b45a-463c-586a-e9cf6b992d62,2627231081,1600214558654801104
+dd50872a-c635-7afa-4f51-02ab9e1a15c3,3841359492,15593352379550658177
+c3e341a0-357a-a84e-6dd7-59fa0af35863,1658136557,529619720800802586
+3cb70942-5cf5-1d1a-728d-debeeea9dc25,1576650584,10535518924857473109
+0e8fe13c-df02-5838-76e3-f5b2cfaf5db6,1775198037,7480907344403648912
+f16e683b-8bac-33d4-3615-fc424e64a0ee,2280498705,11533984246752280435
+9f3e31cc-2694-6063-8f55-4e33f3aa72a6,2824331879,17417397307244448044
+f7f7af30-a25b-6149-2d51-2cffd74ccbae,642022424,2608601513456226410
+d5cffc86-455b-676a-b662-59f0adce4b30,1467349364,1907354341833263573
+a9901c91-c6fa-b79d-6d27-44e626d94e54,1818248047,6703808064582416765
+338bcc02-c8f5-e98c-d2bc-b32a86022fc4,3459629869,118251443484467796
+2c280c47-e2f1-93de-5a59-5eb453ee9521,3518929213,12474476855588328322
+ce1ad9f0-40a9-c399-af4d-c27134986ad7,2324095019,13430766992529702659
+f8d43edd-f2b5-fd7d-83d9-c5902177f56e,3155422659,14340865768580833612
+f401246a-738f-c6bb-167a-d5ba4f44640f,855204917,4223874414271372440
+6de4cf70-7273-5a99-b73e-1b404bddfbaa,314711656,11431292174445909859
+238f6222-598b-4e6d-a483-c77a7d22612a,3319625026,2375591873631136698
+331fb04c-320b-0a98-6abf-a9b954a14977,3834850992,1240599252938523409
+5f45c9c3-cad7-bdee-12e9-9eaed81a2ecb,1692429521,1322826226451453207
+ba2b22cd-ad34-9340-cd73-8bdff3c4da7f,3461463009,645176802288407986
+9b934c2c-d080-13c2-1db3-001c072829e0,3505230823,14707973437000757870
+7b32f5df-3b82-85e4-84fe-098e5f14221e,1217216871,13734814713837668590
+f71672be-3baf-9103-a1e3-8af80b5a43ac,2871125024,596728933592932783
+0a29e90e-4b67-9773-86d9-4553a5902459,675407901,8460158473349095983
+d4a3fade-e29a-5698-3ef4-d234f307cf22,626141921,17073276868283814047
+bcf3ec33-85d0-1d9c-467a-009c345cf7ca,1100725050,8835015612427888545
+5e108097-8e43-696d-32b4-699cca06fd37,2274780903,11398343657334147180
+27b7222b-78d2-e988-53d1-7aed504c9395,2086579705,15473403795978200193
+70140917-5120-bb82-f632-c247465cd2bb,3251946929,14870722401775571117
+e29031f6-1b15-4c12-9701-1d2b6db6834f,2280670833,403985715115072226
+96688e6a-dc6a-c049-d214-167e0f5846d1,307375839,5266077122005327598
+be3294e7-e644-ef88-56b6-ae0c6dd282c7,3490228548,11655261964652094676
+e8c65b7a-b0a7-8ac9-fab2-33ff55b1da08,1613037732,13722746132181670335
+b0887885-86f1-4f17-1996-9e5dde8319ed,4131498599,10337013349851791127
+db6e9251-9e26-c881-77bf-9bcafa10e27e,1873852365,9698549378054495794
+65412b0d-653a-8c42-ffb2-7d52b25e3f1e,1557633278,10034433973701030
+86986afb-3b37-5b72-e67e-4a49e178ac03,3636366616,4583415720876616266
+73bf59d4-704a-57bf-1921-bf8341867940,3758403907,8803059030256044385
+a1f0cbda-62d9-2370-7fa8-905348207611,4252730168,12629574627092684702
+c9c86726-2bed-1b0a-6dc3-fe99952429d6,684674246,7760329892418779335
+e1dbf52c-c08e-75f7-67c3-1a550b0b06ca,2418267286,14909408452148147828
+eee98580-2ae1-06ef-2ad5-43ba4cedf23c,857240991,11529270207821698050
+25f65ba2-cadb-a8d5-4dd8-740f6f08a2bf,348904934,16304729373462250238
+d05c53a2-2d98-2006-81e1-e2220ea8f405,1051464622,14752654912172709860
+9b3cc2b7-36c6-1135-d150-567af8599e40,635982169,7665354701404613308
+ba667e2c-288a-1a18-2eb3-2032ffedf92b,3573735665,6697252229072214578
+5a2c72c4-3ff9-74d3-a924-4070803ce48c,1436053479,2636644798693252449
+b2433d57-ea7e-6f8f-6c29-23b53fe9e012,246687122,17609140869830753703
+2f906c45-821b-11ee-65c7-7373a4ce53aa,1648678656,5996237700337965484
+c8726281-9d0f-975a-59dc-2cf06de610a2,2853596644,16772012162023993688
+60ff26f1-8bf9-647c-7b9b-035e46c78d02,725415207,4066265193319745038
+9864d6e9-1486-a9f9-eaa0-6869206ed67d,1786674354,3806772637427138150
+31a9ac1b-7d49-aea3-a745-a198bc89faf9,3999885079,5693161264689583409
+82c19087-0f93-af16-0f74-41fdb50cd182,1606681613,4173165638985509935
+5fd14b77-ad5a-cf5b-e8d1-d5bceed6fcb6,1402955562,1417345630740846850
+47d5ba81-19b1-f5e5-5421-dee281a91546,2430563420,4870623659644172659
+71a5877a-0f6e-d06b-5fe4-7026d4941bc7,2454700192,18047475554834715359
+0453644b-4907-e870-0d8e-43c900ec1cb9,4176708099,6042200180950796731
+be4853f1-ca2a-4325-44d7-19dc4b6c26c1,4239569844,14791305369073337113
+04bd5e0b-4e46-8f94-513f-c6af63fb19e4,3451514452,7029842020610390088
+155d15af-9210-78f2-f278-1c96de3f1d11,3956806553,15947104885147570932
+f1d51398-14ba-970d-c58a-fe77ec3e4185,962142751,9305841917977771541
+e5fa0a06-b172-f10a-be2a-da644195d18c,1841104736,14296492912619854349
+74efe299-1953-6e95-a35e-9b3f91842aea,954609558,4011372001512688805
+1d67669e-1420-b931-2544-b3748815e5ed,4052075610,9202265181619504057
+bbb2e99b-079b-bf4f-02a5-e94b7a9a7f58,126818592,5307431080047677409
+09519dfd-8312-9446-bd72-160f9f9b601e,37258641,8805989415622936264
+5ae9a3dd-c0e3-ee48-2ff7-a324cc79cb55,3688877762,17910141605266040651
+8168f19a-5986-286f-1e35-85d719a415fc,1659704975,8953251556791753285
+00519690-ca0e-2750-1bb8-dd819b441a1e,1464483640,6444470201887799056
+3e973334-f788-d99c-ad85-f8335908f68e,2250191458,8605685243998704804
+78a5651e-99ed-8a3c-ebc1-7a1dff5af1d9,2610633903,2526970678072524893
+63eeac81-513d-ea29-49c1-409f4c8cb4c3,3310551077,13753070678627443931
+4c9854d8-cd02-38bb-05f2-bb6c03f9a005,2308398977,15580771490014665543
+302551b5-a44a-c2ac-0221-fcf3a7dae005,3744268736,14380497397590106163
+fb31b97b-0838-5ccb-af87-977457f1653c,3943148968,10731440017290325232
+adf472da-2e59-fff7-66e3-2e18acba8df8,3234537810,4994759280315675399
+f282a909-8c54-8d2d-7dba-66779d59fa10,1359050019,16348820008663331140
+30949299-114f-41e9-5cb5-c997324c6a53,3876517605,4929852659093110709
+8e5f81e6-9dc1-b643-eb9f-b03accf31d5b,2426634342,12500020429260232162
+9bd77b77-0fe0-5f36-0c3c-a90449716d06,1869293551,11048136379726771388
+19da03b0-4d4d-8c2b-155e-9042877845c6,1399393759,12078192068820756031
+b812d6a3-b22a-f048-57ec-4a6eb97e5feb,2075116110,2487646814517135601
+4e72be31-cc71-7416-d110-432d7373472a,3018329088,9412669554913308316
+6b3526bb-90c9-73d8-bc82-92d8d3087d8f,3090536077,6358992653887369813
+36fb1f38-2f77-ffed-55b9-44b05135efbd,2544894293,4659137281839549728
+8180246e-49be-fb35-2eb8-f32d7bab22ed,4207876602,10317191473607272125
+c24c2aa0-9ac4-650d-28aa-7b301988bcba,43907607,5675993329552613166
+a4d2251f-34fb-aaa6-9bb0-f7a0b85410fc,2586641736,17645142512357992095
+2a2a2231-d442-5331-666f-20f6b68f51e4,2506304959,13284027001082022357
+f97390c8-3926-6619-497c-c13164db3413,432452663,9812033206174510618
+0e7d0fad-486e-199a-f7f4-a02dd7718936,3330273780,10059768431704541859
+6bd2e917-4b06-8526-d97f-f482457ff6e7,4167564,17796084561051055020
+c0165def-0db9-21db-3bc6-2fc790290fe1,2852890514,1377473549160894857
+7fac3f1b-956d-9c09-9844-ef15e42f37fe,505209908,11725215307555505824
+6d64ed10-1c18-8d9b-f5b9-788467b6f02a,1509525001,1628691056246211617
+78beca7f-bc95-184f-48e6-2cb7a1362d22,3279121143,13816645314270443890
+766df0de-f58f-a1af-df32-4737bc3c5231,303643790,5854306770735706494
+cc0ec908-9f9d-4130-5cf9-eb990a4ff2c7,2583412911,13105961508149355092
+a223b4d3-0b7c-65c5-0000-813889962715,1670782818,7817103342356184015
+fada8128-8e8d-d0be-5b40-821241b45389,3281100093,2752578580678357220
+b4380d84-d5b2-f947-9f6b-a1cac16192bc,951573079,7880523525637313361
+61a4ed30-9742-4eb4-7366-3d926c7f451b,61426646,10213069330991819714
+ce85c26f-bde8-f6fa-541f-e9d751b61531,976490539,7682937463514154990
+c6a689e2-4ab8-729f-48af-7e728367f176,3563023197,819368095830279369
+b50502c1-8389-584b-cbca-67ed36b14cde,3712280017,16035718689170767321
+8edfebdc-7798-851e-bb60-7fd570bfa360,2801761337,10293792353207535506
+e3e3a4a7-69b0-d252-e826-8b45a14c15c8,2946818622,10631649880085686092
+7987d553-f686-76ba-c68b-b7514bd10398,539148371,8998044689706383659
+e1583e7d-b5f5-b921-959a-3ed4a2ff9637,1870068055,1537128094602365177
+34b5af45-c6e2-cdf0-6775-4688265894e0,2189338000,2267947437030457726
+9ff1b070-8f7f-d1ea-3992-131489959f12,355794238,7155092911801852148
+9bd777f4-9fa6-7e56-8dd1-ec0d4fc3f56a,2976820708,6319183851172288271
+98124972-1924-f74a-02f5-fb3576ec677b,3596905039,5859671368758837341
+dd0308bb-f10a-72aa-02db-9475977b790f,3604645643,16177031876710593037
+2c257192-6637-c447-64d8-3262002746fc,847986526,17175727054107200952
+e711a9a1-80e6-9547-60fc-2fe6a933c402,2358930134,12083008335867467771
+fce6f937-93e3-f098-d529-5cd38f95ca52,3237706410,4744207029204061829
+7e9efee1-cecb-bffb-082e-e5f3d82876cb,1638787495,11768837969986832549
+4752c5a6-9f1b-028d-705c-cde868f97fce,3779678126,12374792906431188533
+d1019e45-5118-b68f-811b-edbda9a5b17e,1178967099,9764670197802638207
+a916970e-d0ee-3007-fc30-e33e5aa7baa1,1553369104,15020680914631594354
+8644a635-c9b8-7883-2c00-729f2f0957c5,409918203,12255072308754645864
+d788b634-a156-a3f8-454b-4d974cd4e0af,1274516758,10435732128878352912
+daf28aea-3f80-ab9d-a442-958ed2560f1a,3055902566,15307779160828586469
+f8d9667a-b211-0fdb-ae46-e64197d3127b,3860054435,7254230184635044329
+44b8bb4a-4734-8cbb-1a50-10850989a3b1,490579578,16941418117697436398
+ae8c8f04-370b-3bce-4956-4a0dff15bccf,628694340,4488181123834751161
+3fb89926-1690-0d39-ebeb-01968803b4ea,935183411,5194080634196126747
+71fadd69-0311-b101-ae4f-aa31ae6ff4ac,2221595798,17483507969326883451
+6ca086d8-5861-ad16-35a1-7957e84e2346,3362689247,11154947112308479215
+b54c71f9-2ebd-cd47-dda3-8a213d779cd3,1466000386,12623896000232217047
+c05233e7-5979-acc0-970d-320a956332e7,1067873521,1204628376920623038
+577f1dcd-3cb5-a253-fb88-45c15cca09b2,4017322658,2448355099770693743
+cfe36910-1ac2-6b71-73d8-fe1815ad867a,2680665815,1532625847182063384
+c05e7cd2-bb35-9c88-b081-29c3703a3839,4125174435,15581997671774256012
+c9a01124-0290-f6e7-b913-f2903876485d,2554337349,1601825444450343301
+777e1d66-8587-f188-ab18-2acee2b40616,2932349956,15988478857756578532
+5bed2265-7df7-8d40-2a73-e29ed33ac58d,1291246080,2658537028148845619
+64300875-273a-3b75-32a3-03a0e9e26b37,169857203,7343299041462780933
+56917068-88b3-b6f4-ca22-1c841a9e543e,2126173499,16325688008374671838
+a60b2d7a-851a-d98d-8cb6-f9f841544295,1609548110,9029279099824895877
+ba9cc6bf-4da9-3a1f-d303-5ae4dc9048d4,3145189071,2549266870240019602
+a4cfd34c-f5f8-6037-1fb7-a5bb90f88536,778089866,9416490512050672565
+bcac5275-c91a-0bcf-7a8a-157e494bf400,203952976,6121768083332232746
+d35acc52-bc4d-1b9f-46de-7a86cfefc2dd,669466994,17339762183619446371
+4214d6a5-212f-835f-d8af-bed89f07e2bc,2252708203,13154312519873230812
+f00e150d-3eca-f020-1dfa-32dfd5601799,3717239614,9069169794325322064
+2ef322c1-afc2-f612-fa44-92eabe709007,931663630,2994700260633800973
+7d9cea27-25aa-1928-fa7a-118c0b4843b6,2856413449,10040879560981879673
+24eda0b2-1574-5410-3aae-58c6fed40352,2850833259,5564964003344219530
+d8940b50-77a4-b521-9e15-24bf61b030dd,667539556,13585731812102161494
+ea303c34-9006-b493-6fb7-eceeada8a71a,846321205,7394717580948751858
+7485d43c-55e0-f961-f788-1a9104e24c14,3500710972,11985221729218304926
+5ec77295-c674-1179-27d9-1129e99b8026,574463904,13412940490928363576
+c9801fa6-1569-2575-3240-34277c56746c,2734815636,142217490171203791
+0ea29514-16b9-ed73-bd28-96d8e416415f,564684281,14844971579184063951
+a94f4a30-34db-125c-d55c-434f81aeee93,183291648,3650627958944573722
+cfa7921a-757d-a260-3450-86e6408e216b,4033045396,3881034668072370802
+37478a14-6c98-bd75-109c-5668eba91ee4,1674538521,8427624173900155518
+a846696b-3d7b-bb1e-f075-f3e637a52882,1970965452,8536643077670492159
+28e71b73-0fe6-aa7d-079b-4bbceeacab39,2326891043,10136979134366172598
+ce17a884-a11f-36f2-80b5-13527ccc8afe,3606456991,2683917607482052144
+37aeb1b1-b0b5-527b-dc17-818c5bf00d0e,705573931,8647960064256391494
+41c3ee60-0b83-e117-9bba-a363617055f0,3415753793,15523773085028982673
+6ece76af-b6a4-9589-c164-2665e505a58c,3526165017,10309546449236583865
+786d754c-2feb-8e8d-b681-5dcdeab1f33c,3650892924,161614155590377445
+c2dfd469-9ec5-81ca-0724-6b837779b472,745982127,16755441745390860464
+5cb81266-de93-fe44-398a-e8db177d69ee,2176112544,6176102434611736395
+3bab5a44-15b2-dadc-6883-16ddf26dded4,940142474,10670742075426961532
+4afb3b84-f80f-d48d-d4ae-61c824d48dcf,1255682114,6817250922551890531
+ac21e62c-1786-5537-95f3-2fb57406d217,3820945672,17391350969685960044
+a6f559ec-ff4c-7247-1a14-4065efa4087f,3126542865,17431707390105665758
+3f1abf68-2e13-518a-ea60-b7c44e7feafd,3078055501,16254556075314651461
+c2ec3c53-afdd-6049-51c1-182d01db84ed,3677195379,4270445527682521888
+23bd3ada-83ed-ba23-3969-c29b01e7d073,2778750251,17274738200193516393
+92477564-b834-b56c-0837-593981f9d5ce,3217887347,16794722603584984296
+3f31e15b-4cba-1687-d2c4-d447d059e6c0,2433561249,10285895958420303080
+4bbc66b1-6783-f9a3-d248-cbcc73b0cf6e,2893972409,5856711330455858931
+bf23c270-c3d3-43d2-421f-58fdb6d1251c,1482119675,17052095332740503867
+1931d2e4-13a5-1248-d878-55acb672245e,3337074098,2765677711624614134
+4c893efd-7434-ec34-9e1e-2162db19c866,3507051238,4983875895065340546
+15723f30-a65c-d267-1a49-3e3d69f921ac,2206511356,1884178256452852494
+58c7553c-0813-82d9-d5dc-6246a961fb23,3824834977,17720465689153715447
+3f6e0929-ca9b-e114-889b-f2e9a3b5ec9a,3501754865,8681859828144211570
+51569384-9711-8f1f-286f-502a7ab8cc27,3231202898,7617104040918394249
+3ae218ed-a548-f778-c85b-11f37432d399,2444953080,9186317669266360457
+1edd4cbe-2c7a-b699-717c-4bb672344057,749674050,14075773601597680996
+b1f4ac65-0759-35f6-224c-e62a00055953,2773663781,519701243898308341
+389e0bc5-0b86-216e-ac31-ccbf4f2d264e,88210214,10101449259009411554
+78ab9f16-8000-e97f-e1ea-b565231b1a90,447630738,4450863124647312132
+52789da7-5c6a-27f3-fe9f-de53fa1b5073,3638295472,3068221022256220663
+0f5a7c84-0906-0c13-4386-e48c3b5b3b7e,388187323,9970388037337845068
+023e14d1-07f6-aec7-94cd-3fdbc4d861ac,1130416006,4017864957106284037
+860f7c70-b1d7-d8c5-951a-7589e994b4b9,3583785041,15077451409755740321
+3ebd9c40-dbda-bdd4-3708-2a068229cfac,3376897386,3229053967157364617
+e9a003c9-82f3-d5f6-721e-05e8c24d4b00,618615037,4046668673103783633
+180a1eba-4470-9045-c68c-78c5817c477c,1060311872,13735673012877877630
+e131f523-916c-9369-c65f-b13349e3b32b,2985179289,3391840206620160828
+1cd81b6f-0ef4-ea71-4eac-13487ef1c63b,2954358212,16880116907783655810
+9b511ec2-4149-17cf-7363-38d88417f925,1077236971,14354850723681459604
+644b73a5-d23f-4696-fdd1-2d4cded0ce21,2879489688,11296558138150899522
+ee1f728d-1eb6-c771-d40c-54660bca9b40,232420012,8736462733687366181
+0621d936-7ab7-fe44-c180-7920f03fa9d7,844864414,9139107572231557847
+eccd63ac-be43-1eca-f39a-e212ec0665dd,1075754624,15667221663992845261
+e1977b73-0bb7-9b89-0c88-ee438490414e,1927866128,10896677746972131012
+0edf40b0-4763-6f46-6b72-368e2df5def2,1601997688,957284805452146179
+9118e3a1-296b-dc8e-67bd-d2c0fa05ea0a,3093571183,2235142876139353165
+85e4e183-bab8-88d3-cd80-1e135c6d4f57,651952968,954301752898806955
+afec80e5-67c7-9a52-e0be-93b036f04154,681953455,15478252306938412353
+6ab1b701-afec-ab78-2808-2172b964a0fe,3943866514,7405170246934108696
+1753b1e2-8ec8-7c8b-6f94-9d5eab0f0836,1358950321,1365235937331156099
+ada4a95b-1755-cda8-8e5e-b67eb1ef0162,1386662974,16792973366223070557
+995017cd-297d-1ac8-0a13-b66120dcd262,3774793654,13845075432699666580
+a62d1031-2ba6-c6d7-0c40-3be7f0475160,2134293261,10615404369280347314
+c05ee310-51e3-5128-6273-25f40ca50556,3426032612,8229329251187936093
+bb04e367-ca1c-70c0-41ed-9e9864bc1eea,3426787167,2405878886250414560
+a73bafce-a802-f7ce-43b9-2407a0090ccc,3239123002,3965553947534979013
+e38e2f1c-e654-baec-fe0e-25315a887017,2769132400,11443951712486333460
+e6c1aed2-d268-e10f-e3b7-ac55b57df02b,2476694767,17349138129476644640
+39d6f982-9110-f25d-83d5-815c437fdbfe,1685564794,17941579456024133546
+a6ab70c2-fe33-6d8e-92ff-4b2c05bc2ef5,2625168717,7303256904748059209
+7b262995-10a2-65b9-787b-2916b983d4c3,3745656325,6382662619844913689
+cf87db26-c7fc-c786-b388-c3879999f37c,1740584456,15403549452806076104
+0d9229a5-6c0a-3814-a8ba-49ed6adecdcf,771308091,15830045085421001877
+4a122fd4-aa06-83a2-fdf1-2760063de0f4,1217711057,17154848712968776859
+7bb90998-4445-ba26-2c0f-7e68f3a2942d,73698775,6269389285695666002
+91805d75-434a-0364-933b-20cb9ae37f4e,2072663138,10883782751164062376
+46cbc9ba-ad43-a67f-9070-7a04e02363c1,1021064608,16727424068759804821
+379ab0bd-7eee-fe2f-4fef-2d0908e1b984,3346208042,15569032082036979094
+311fbe7b-af01-0d33-425b-ae81c973e241,2341310181,2494392173393799403
+06810ad9-8f9e-aeaf-2455-dbe3c717f267,3635977452,13185103416526864379
+85bf0b2e-71d5-0b42-0f0d-4ed3f9d5ee7d,2837142709,10606606177916003860
+feab78df-9b65-9802-8cd2-49cbbeb0987b,385140460,15821049468457061879
+0f00da44-6fb3-85ee-fdc0-bd0309396bcf,3643825416,4046668284920621920
+4b491c72-ddd8-58e7-89ba-21b8e507f7c0,216558870,13217578871477106433
+e84c607a-f520-6e46-ef3d-cabd54f4ab8e,2401742540,18401837721462798577
+17b7f50c-ad82-9bc2-331e-4cff17bacb78,2550467919,11949727910887974882
+b4ab3c8b-9455-9560-6e6c-1320ce953dcf,766561120,11426985077375102250
+ef5c63f6-100d-96d1-19da-7fa7d26f4bcf,3567684146,13432166003216271734
+e98dc5b3-3dcc-f8c8-50b4-3f3b0d2f30e3,2746695014,208747503585372272
+56eee766-a07a-c575-d27b-dde245db3249,433399549,415656282536413042
+bc920f8a-f5a8-035c-621f-d1c2a03c4b7d,73936499,16447762363070112069
+9f21d03e-300c-171b-01d0-9530e50d7962,2532747984,5115564376409691204
+35db2505-3dfd-af77-c1f9-27591b3a6c2b,541737112,13059606642729838633
+79c126e7-b13e-aded-02c1-19ff63c717ca,1806780646,14837308471584734492
+8e7ae338-7baf-e04a-6418-05c2cc0fb68f,190724961,9577130816686682767
+36bc17fa-d8aa-d03e-c12b-3285ba8af6e5,2850382234,7161035025325508482
+cabe4328-0f81-8ab0-aa77-88c8d31b5896,980317848,10422003773924213624
+fb256228-64e9-0216-3a12-1080fa777040,1536465237,13738139568502318415
+a26e246c-007f-c897-0b1b-4027a0510458,3916714886,2136569209812344843
+10ec5cfc-9ead-6b0c-1140-dc4b25c5da89,1621123118,8889845760931066385
+a2651d48-7e28-9d1d-8532-d1e957339608,3204657378,15961750908789048254
+d2225e39-05c7-ab78-9cbf-d8e4b6e6dfaf,1772467551,7359686034070009381
+02c9188d-6120-1f2a-0d68-f249fca95d26,224284905,15153733327790439587
+5a1cbcfd-8cee-64f7-c193-56da8b510e0f,2535164787,11600618054756214382
+ec62d308-e71d-098b-dca5-c799a844e33f,713786609,1491778943068305550
+7165c576-209e-40f4-c3eb-982038048b1d,1522391933,11556856262285193045
+47b323b9-d0bb-f108-8845-c0a139daac01,1125375385,588948955204359690
+cd3e5a38-fad4-560c-0a63-8e0090829d90,4131352337,1028829068701202306
+c961c791-5e83-f2c6-e0ee-9e1acdacff0e,2350716504,2955746082576268449
+8dd5aed1-d174-b4e6-50b8-1e2bcf93aade,4242901331,11509597578016151279
+cf372769-3274-cf9d-de1f-ada99e34ba97,3792399050,4685742375765367970
+4035a891-d11b-9e71-a76a-e141ca549ebe,2428436043,12054030187317875387
+53c200cb-7c4c-9473-ac81-fb2fa9448d85,2985536599,8644689949423568596
+02cb966b-e481-c9f3-e6f8-9befeac0a3db,1598632375,12109385969957160041
+735299d5-5541-ca32-f720-3ca80905246c,1984864692,8871731851588420145
+5f62ce26-0192-4431-2241-1a88ac10a70f,1018027060,5973755432222067150
+6bb19c3b-8cdc-ba89-8f29-34cc9358c9b9,3204338546,15061869370410953794
+7dd73577-ad4d-a285-1f00-eea9d9936187,4205081581,843617677873567752
+3078e884-6812-1005-43ef-1e01c80a6276,2304465859,6496988426352770616
+a6d04ae9-bd43-8411-aac8-d861c06a8688,2104359890,3679880804450779835
+1a6513d7-769c-a053-4821-f30ff7a0f887,421765912,5272015480798381268
+01669942-ed9e-7851-e37e-a5f85fe6b474,2235959888,8366751729324053448
+1b640593-31f2-8890-fc23-b7d065170d4f,1713689613,14006808599650747697
+2608fc80-4afb-bde5-8c08-4ad109855cbe,403796690,10381642458790080109
+be714442-03f6-bc1c-c03a-0b3bfffa2122,4289087945,10802223379217014369
+153051e7-daf2-89f8-d31e-86e4fb91602f,2079058712,17641198267679437503
+5ef42991-760e-6a3e-d77b-72b08045d855,4116375306,8262596768939832871
+0084b96b-a243-f2bd-8270-bc71b522f8a1,3820133641,6315286785087282266
+210a898c-bdf4-91b8-f187-edf22cc6df7e,1274325058,11117979465416480472
+6f18b54b-284f-bce7-cf0b-5ffe7860c222,3243874372,16733645833949956509
+72c48e89-d631-21a2-ffa0-04b0c5077676,274828667,4828627058059897419
+ddda6a88-59c7-2ab6-3411-e14f15a9cae4,1442845074,12996396209339560986
+74985e2d-96b0-35fb-03d6-a99959757704,3097316280,16646779986783542464
+22c861ec-c63e-0a3e-f8bb-a9ec2249203a,3635211806,7812766218097764662
+f684cd55-d504-4caf-0794-aae8f1036912,209488104,413550486472449716
+a0dbf634-d083-ba5d-bfb8-7527465a5501,9380936,6135517432255184940
+8fe51006-e855-8a90-64b8-5a6037eb85bd,4005090134,7082545257545349934
+465d5fe2-8c50-aba0-8b6b-4e5147105c3d,3791718150,14903003187725166675
+fcd4c709-df43-6ce4-0404-11f118d9100f,3118763456,16561799057367258303
+fbcef192-bed1-3e82-e368-48cbdbcbfbf8,2637012258,16345655484384439885
+fac015df-47a5-3623-dbd1-7a1ac5cdca4c,3477511115,4828236132272005096
+08e920b3-3bba-c493-ce5a-5f0943a0cf5b,197196779,17009823334223130176
+bb3546ad-f2c9-94ba-d4b5-98677b976c25,2559232177,16555284940305375678
+34826af3-9a0b-8c86-9e5d-27913f246da4,2590701143,16382826559219612168
+b0387146-5a87-db74-b63f-7ace12deaf1d,1272700005,4875137695649764147
+37985b41-b60f-c109-18b6-da939b19ac66,1760584535,17654217852770159712
+32bd6b06-0c9a-7e1a-e1ad-e16f1a9b4907,3098452357,9665137144128429585
+097ba295-9f05-30ae-7428-0c883b669052,596484157,13174387663078633871
+281bace2-c9c1-b5f8-dea5-903ecbae202e,3412458500,664842488383443622
+e3305857-01c1-678e-a4a1-b6e956e3c8a1,4188176271,9938056170086760797
+cf20361e-619b-9ca4-de5c-9ca45173d062,3866259633,7661438295134471342
+8f8c4ee8-a731-10a4-5be4-c35dee64648d,1961803579,8796423897225709194
+63a0f956-7ded-1c23-d7f9-5bfe3ccc3694,682307022,13704774189971485351
+28f3c5ca-83e0-154a-d9bf-37a0d8c12009,2311202269,7561463500059220541
+e5ff3b1c-d807-83a1-adab-5c4e007c3e0b,3258560078,4600558316189918374
+434f7c16-2341-0521-5a4d-cad39d34cec5,2564788893,12508082942857467819
+1e9aee64-caaf-617c-feb9-6e3e61ac26fd,2106317469,13739233801205246469
+fa406336-f47e-509d-249b-ff41e96dee41,474542602,4574289716360496196
+32ec1a8c-5cec-bcee-abd2-ce17ead749a1,3119739782,17985367275744132760
+a7b62a0b-ae26-06ba-5f9b-463a61222d8e,2828362098,1814611907645814404
+dbfb3fd3-d3bb-70da-dbb4-b03070a4d95e,351069864,4617408488276982290
+bd5f3359-634d-9dd7-f29f-53df6ebddfb8,4104842072,5359372457966059361
+5f9beeb8-35ab-e593-409c-ac029663e5a1,228668719,18146121756439155481
+8d13d14b-706f-3815-e5e0-d234007883f7,77331735,9963391395194454530
+bb065432-2c00-5bef-acdb-9643ed8ef87d,521145668,5530820354794198556
+478f5131-8868-99d8-d81c-8613973b208f,4045880360,15977147829579033444
+52615f49-0ee6-f3cd-c16d-548eab1e989a,2430054031,18088116745180604199
+67401b5c-0f87-2076-7f1d-177cbabcf7b8,514663400,16581567201180742157
+907f6799-a77f-557d-e1d1-ddbff94d3515,1017059825,12373265862732479595
+a6007966-b26a-f42b-0037-8e1b6ca09eb4,197695163,3779640645267101728
+ad3f6904-bc95-e9ae-606f-e460ab0bed5b,3255003188,7016583067303292768
+01680b05-38c3-7a6f-cf78-2e8715801f07,29242990,207577694782318290
+154c4c06-e010-7d7f-db6f-5d94c122268e,403886765,4505904331685147234
+cda21f74-1000-0c50-459e-80c265deee6b,31407189,11307402870808006353
+46394063-d0d0-1433-dd4c-5ffa9b152b56,229926833,9556888175898080150
+303a7237-e073-98ab-acde-da1a0e43a9f4,666591799,13151684402905582824
+fe649317-d368-3673-8767-bfdad1a6f184,556273348,14522858761074368805
+010c16d1-5b28-1c20-d496-72235dee2945,599392485,15173009453454286473
+fc7871b5-7720-3676-46f1-6674a1564420,1524899579,840155882532741502
+bffeb7f0-277b-e61d-65ee-dd73a590006b,2392765729,16621162002321099162
+7d453d73-282a-fabb-4090-f7eb4df4642b,1021018041,6348606181971730579
+63cf27bf-9fbe-53b3-7ee9-ebf078e6ec4f,3582810997,18129077242605705129
+34380f8e-b505-6186-e519-11b372c55ce6,1918070117,11169651029540493095
+4d9dc81c-1147-5bfc-9334-f0dca81a8533,2663915394,10441880987041689256
+09677026-e297-6c88-5973-4585b5e6913e,1291124990,12678370866490631173
+5826ab77-1532-08b7-2ab4-3a26dc435e92,2278527201,4521135200563650611
+f9caa96d-b138-5dbc-a086-ba4422d2dd1c,1771419647,5966857039400233966
+2a8899fb-cc05-3026-9453-a737bbe62c7c,2075971174,5986857465829728048
+a2d40f86-5f3b-d3eb-f1a4-eeee5bf46216,3954893124,747148516340638106
+ec534345-8f9b-7858-8c53-3707540f64a0,473883782,4221200192050839193
+fda9e2c9-1cdb-a06e-e7b1-d139d67cdf3c,799295688,14815645429375014391
+505b032f-967d-46a7-007b-1ff43fe2c6c4,1258770234,5188579997872710531
+463f5dbc-7ee6-27d7-b404-8ee1bac4952d,21452671,6390836253393695115
+18e00991-1fa3-ff03-64d7-83fdb20c0135,1038036802,622895113208531189
+99365419-16cd-eede-f977-679dbce0e9eb,949060136,3803890376111230686
+01f0dc9b-269d-5fca-85d2-74faf1a76fd5,2077253481,4728822335348714794
+8ee674db-583f-3d94-5957-55e6d5192620,3930454050,1117483602985555751
+0ddde645-47b9-7f09-e882-4f4a16cf74c5,3083471026,10609549211853892782
+e5ed3628-b7d7-8c19-d712-2798600c2dd3,2489141719,2412038034107303451
+8baa4364-2713-3916-34d5-2b827a353612,3610925075,9903935915920260930
+0e3ecfee-f122-b8c6-b054-5dab0e803407,599699621,17651006008118980120
+e6744fc8-c2f6-6dbf-d22c-985669bbb0b8,4260652086,11668309229665658383
+477bbf82-e2a7-ab14-1a18-935a0ea8bbd2,3599073126,12123098452644108999
+3128101d-7f7e-a027-3b72-1aaf90939fd1,1327870762,4031204997520527697
+089b37bf-6606-6f14-2998-8c058e967c89,2622531086,4134426725819237938
+ed3213ae-ef43-c09c-e4b7-e978a088f1c6,3529657402,3288048544161953588
+e5296d87-ff65-f098-6639-b9b6205e42c7,881351425,16147669706769909105
+c5466677-6a9c-2bba-639f-723bd693560d,983506332,13334574980550842970
+29dfc719-752d-95eb-cf80-9a6ea06537a3,3535728199,11171862457323908272
+95508fac-2a5d-9e2c-f0f6-f57307b9c1ee,269183082,4105325255141965020
+06eaf80a-f74d-f962-7b5f-219dc79068c6,810616998,8194396473201493387
+1935d4db-2068-dd77-90f3-8390de0bb4be,270314330,12038484919984944680
+7d2c79ab-adab-c5bf-8f69-34b507f6e197,434029573,1125651640084733275
+6c0723ec-4cf1-f905-96be-aa55992218dc,2842053597,17447273097125401078
+029dac30-e16e-8e33-6c94-3bbbe508b0f2,1665040374,9037434705674340953
+af64a0f0-8439-d413-2026-ae12c6cbd7e6,153568752,15179440589172424100
+8f869445-fd50-258c-2bfb-ca2b916cde8d,1789309941,16078107015691596394
+f38ddc07-9ca9-43b0-0b64-9b2682feb4d9,1661550238,12490153691773631414
+e9ce3c22-4813-02ac-a9e0-8d35287c0078,457853089,6694187594165871548
+d8dfb670-b0df-e4db-4853-c875c5aa1f8a,1676030760,11353583129406197127
+93bc837f-9b5c-b1da-f0c4-c05632e5a7d7,1419454403,4207027563509190409
+134ff490-86e2-cc84-4511-c4720f875615,3886376851,466348826594485391
+cba6442b-e21e-4fcd-8cc7-9bcfef315f1e,1862855383,17145430058202580770
+6e43d972-cd94-7149-bb13-dfc709d1785d,1028895869,5262470718595732755
+c60eacae-be4b-cdcd-96ba-16f20ce076b2,3187949043,4169182368748572891
+0d470304-54e1-fbe2-c12d-48af756fda46,3779462473,12207362374281089599
+77f7767d-2d74-656a-7c57-2eba4cabfc17,452595021,5381422346642529676
+c48e1755-1d17-b38d-fe8a-abfcdbd2262b,1241443506,1813624958534434523
+cf6c383b-7032-b0ed-3a44-79b70c32eb19,2835933831,7606690529038568814
+c68c2c69-48e5-67ae-286a-d141b2cdbfb0,20115601,11486288669166453596
+8c02e4cc-2bc0-bbf7-ee9b-20ba88a6f117,2595530533,11929596064765271985
+bd67a530-182d-5029-3d6a-f9e251430442,2939122402,9908142279428871939
+7b05e711-7626-f767-247a-38f8f667fd44,1469785331,11767860128229803928
+1c18f980-7a28-f5c2-4c62-5cb2d9a89231,2042234721,7557086571448517944
+17155181-87a3-af9e-2747-77797fce5b60,1832035598,11696942871287682952
+5fdfef34-f444-138e-4748-d15148958220,2384495262,2525221802766112040
+50fd7246-d2c6-5a5f-3263-7e83f374dd43,3593127507,17270189728387772982
+412bd78b-5e6d-f265-4cf9-8fcda34b8b76,94486820,5817636516682740941
+e92a0f94-a6ee-3ca3-0e6f-1867581cdd3f,2433638187,169993436805909460
+f169b405-9caa-94b5-e4ca-ddf0e559a6b5,2018719847,10469404160250164299
+8f9aa6b2-3c7b-fa16-f265-6b4c87a419ab,1049998486,12112859536159488837
+b6816bed-cfad-3aa1-35ca-fc8a71e1062c,2252852770,511609186000004369
+9ec88eca-c1e8-8300-3677-ac49c9882df1,257648768,15899387037057234589
+ae6c08ea-88e9-e349-87dd-af8a44e5ba7b,677500257,1848406500670277478
+1dc44d6e-ef27-7aad-a994-a29d4aeb180f,2775937209,11892625003790012897
+185d8db9-c6ed-e644-ead4-e8118086692f,1364316563,15189995309973746963
+3c13529b-4a09-545b-62d1-8090ab47a6ea,700595172,16482689453399347360
+cfa0f989-c319-4ecb-678e-d18bc21d1cae,3488012748,5371289077075237086
+f03cd516-bf1a-022c-9f21-6becbc18d801,1672746484,10716380320828612751
+35c6c32d-193e-b0b6-57e7-9206d524a68f,2225102594,3998676140587937988
+31e03278-eae1-dda7-6769-dfa9ffed2f10,465191541,8563416438226864906
+5ad2689d-554d-3af8-9b1b-8e9b1bde9d16,1107344367,175037587678828047
+19968d58-e87e-9fc0-7c68-707dca5c7284,3248607127,3229555003974249922
+84765089-c9a4-b331-6a5c-7167de0655b0,1202884626,6101350157538924926
+f3f63498-2177-176c-ed54-639d331b8fa4,2352422634,13513718756930061841
+29507ebd-2a8b-ae85-c319-4dccca8684ba,2040779065,704720358904974735
+15faffe1-4f62-5857-b6ea-dcbd924bc2d0,3820243997,15567517751575064462
+9cfaeda6-12b1-64f8-e446-9e4e6a35aa39,2770194095,4739950613279085250
+af11fe11-6459-6e47-bb27-8fd28092b34b,3565727373,13256637653964755124
+b0670873-d21d-53d4-800f-c1a2c7c21bdd,3990819881,4717660043440934519
+039ac1d1-e08f-89f9-ae86-540ab6f94afa,1277038005,10383346823114074523
+b5585d77-9841-787b-d876-7fdaffc4fe54,290073502,7302260947483499945
+a746cc03-0a0e-174b-b144-39ce760fec39,624674211,16902089410923247182
+8755ff59-7121-ea6b-ff02-3cc88e835439,1331229891,1074323860498930147
+8a216604-3119-ca83-2247-c9a0aff1c88d,3253239798,778760123754502250
+7962357e-00ed-90b2-203e-9a315a070afb,2898602554,17244679974686400378
+02d0a334-d931-6a1b-95ba-1e640bc18ea1,1025800186,6331557013969826568
+6218c5a6-6c28-e58b-9361-e4f5d19f895b,1229479733,9442681652831554328
+8151c232-cf14-4d6a-20b9-d235d2f8519f,608381277,13475882617588736879
+f56f1ab5-d22f-cb1a-9566-a0aff8f44479,2383301017,560147071168905280
+40d578fd-8432-e307-974a-4ef4fbbb869a,3240034240,6326978819967960071
+1c7cd038-b0b9-503b-c6a0-059ff3a06447,4053985438,18011866063637256752
+8b041d54-8d68-c610-e03d-e83bd461a8ad,2526426385,12330967227898273168
+73dcad3b-fa89-50e6-5d4a-bc9859f998f3,3520452478,1960028250276940329
+8bc160c1-d572-a0da-cb5f-f070ff952c7a,389511622,9630529034543435037
+9a0f4b21-b40b-221a-bc7d-d84c18c94a42,2862915963,10400926188622867989
+f6b36e30-56fc-5255-68b0-2a60f4960fb4,2121487300,3439827913391625715
+2a313d3e-cff8-0d87-a3f3-81a12e86ae2d,1154131287,10637902090010400624
+2242d836-79d0-f03b-acab-2c9ec91db3aa,1900305575,3239160249122571355
+aa42349a-9ce9-b7b6-3aea-9af387ec6048,2707190957,16277158596886413279
+98c40058-5254-c0bf-1cca-1c4ea4041ece,4102559089,14165796344011453127
+32ea7270-b916-3d61-4a91-89cd3336d3d3,3346309860,4911109675671778548
+0a195cef-418d-1a84-0de7-bf9e880335a1,457538476,3146659668382218364
+64b75709-f5f0-054e-37ff-ed278ee79ea1,226500356,7117073725709169723
+bf47f9ea-df9b-d327-4958-5f7f86d1cfa3,1754862944,7257970420252534942
+b1dee264-ce70-66c4-e8ff-263edd8ebbed,3897717436,4307222705309441136
+5268377a-8b43-5648-c80f-441a7682bca6,306653272,15742589952793810947
+27821608-5c00-ee3d-fbfc-ef29ebb297f1,2017537658,2877714864830769223
+59bac67b-80b9-913c-68a5-f6d7d8443567,3085879275,6109875118252326876
+283c480c-b7f1-8831-e398-2a3c7385619f,394698750,7572240862227205390
+15ddbc8a-ae2d-3101-190b-bc5f93f949ee,4178608989,1753065274966422325
+beb50879-3a70-3dc4-07b5-d4dfebb0bb44,3810658217,2418073485143424291
+da8f062d-9a86-930c-1823-0f799d8a96a8,2246341899,11181975313149105867
+65b8dbb1-80dc-b4da-c618-811929cbb5a9,1683397603,8036578061519101250
+a79996bf-e66b-139a-a728-bf2ee2620368,940835379,6910383867596808524
+35da0129-ff98-3e83-0f83-905ab954c1f0,4194557345,6723388445217250808
+df949845-c3e8-66ec-a30f-4980e2ae9585,1788062170,8085322618124675255
+b25f1c20-881e-5cf3-7583-9033079952f1,3667483750,308649775597012922
+b733d7ea-44e7-9e45-cb81-055c6d258708,4042706107,2471190373574898846
+0a74d99e-7e09-f3d4-4a87-8a339d844c95,4131375669,5575382410900388213
+2a9a891a-da29-807c-8e5e-c232275fe83f,2254194639,18103095243054741280
+6b80d089-9da1-68dd-c584-f48ceb06a077,3548257329,7954010546730983607
+b44e05c1-b70c-ef1a-fe3b-1e0bb131da91,1689796039,4507604297998939037
+9a388cfc-7db9-4b5f-1591-2e63f4854a70,9506225,11679614496536248899
+16b6d867-956d-fa54-d533-5d268154e20d,2816315111,11931988401749608053
+8cf7a7dd-cf5e-6ec2-94a0-852f1d6fd255,707317617,13725450673672089591
+7a753a5e-af41-2c02-ab0c-2f0d746b48d4,2425530634,13366819312684179416
+de0d934c-51a5-993d-3d14-c6cd8c537c24,3625697874,9821887334911557188
+f0d1472d-d715-948d-0fe7-598ae4e1395f,3740286609,903951458631826844
+b236fc54-19dc-6fa9-a68f-9e53240d66a8,2710246087,186850463933340159
+8f3d73c5-0346-372b-043a-941549d5368f,3770388626,6875167303167364325
+2cb5c482-f0af-a817-6391-e9f74dabbe5a,3998694675,13160793429751816482
+8c0da95b-8088-5523-a122-6e6306f6560c,157528668,16276918973681460563
+f7dcef31-ef80-e5b8-5144-efac803ee937,706521608,10886191437352663746
+d025f70b-d548-2cfe-4313-52394bb74662,3802232376,14053576260804463024
+f672aa61-0eaf-4da1-cf96-0d6c9242508b,2692049256,2423758259810364203
+4e07fcbb-6cbf-2ddd-a345-7bb2ab68edb0,3036772538,7694710121455451717
+dcc13b24-6b7f-7e1a-65e5-56f22c0bd46a,47021678,1691261044238008130
+1e06f25a-10f5-7736-963e-587ba8c34384,90994434,1844317768805838410
+9c6f8ee1-cc84-ac56-d2cc-4b52ee0d2f4f,3361196046,10155889339458776134
+5869d518-f51f-cf0a-37d3-1248df9d0ff8,3109699892,11266668821669338623
+051d470a-1b9b-0778-ebdd-a0cbf3493f23,2645174567,5825050426819919915
+51a913d3-b087-b1fc-72a3-b1c26e095811,3259119414,1160577557099793793
+41a06313-328c-96c3-fc5f-386b23a0c9c6,915855794,6786835374190423487
+17eb4643-01df-b16a-d01a-9e999b423a4c,1103310490,8938225868199143532
+aa7add9a-df78-4c83-461a-ffebae4d1292,1931046411,10658647840673152202
+c589112a-b1c0-9cde-1594-b340aac68b67,1570977720,5857755087058792386
+454f20d0-3e6a-8f8f-8202-504e9c2448f4,732940773,5120107714640514658
+6ba1a1e2-8fd9-bf6c-e38f-d12d45230ecd,2418078273,4361045304860488502
+f55487fa-95d3-a0f5-59d3-b9834716a0d1,2886119789,4428306298462470677
+1f93683f-2caa-d54b-51b3-44fdbbd75a65,428716012,8904632610494321258
+7cdd610c-9baa-f520-7ba2-3d2b1a820940,1879743324,16502209709482345746
+62bc05ec-45d9-1cb1-0eb7-2299df27dfce,493451827,13189704826212386330
+9ec9b43b-9823-5ab0-76b6-0a4145baf651,4002153113,1123041368329448166
+52a41338-cecd-e22c-2866-8d29d2b92d7d,4274602413,6040617677245832977
+ad48f85b-5e57-ce27-2bf1-4fcedf76bebb,884136754,5947083901018142789
+2aa9535e-367a-57ac-598d-70a735ed51f9,3683354538,6007128856720308323
+abde90bf-16fe-be28-b1ff-cc28a7a9eda5,2042063381,9392746216309550398
+79ee3b5a-6e6c-fce2-05f9-fec9b51be985,1854327648,9363795969411070868
+dc42de74-d5e4-4aa6-8b21-88a10885f9bc,2076664417,2563834408562364300
+55b3c000-8199-60bc-9205-bbe6e377ecb4,2860034114,1289408771231154944
+92e9c935-1021-cad5-568c-5308f0c787c9,3456902887,4537535863368796008
+ea77f886-b474-9a6a-723d-47158a2fe55a,3664534814,17620106348171991227
+8ec9d3d2-a687-37c1-c0b4-5d952c3771c1,3987213575,6711239373292009754
+c7a88f7f-cb5d-77fc-dd07-a6b86e88c78e,364954870,13021485828131234534
+c091c37c-c0ba-e270-540d-4e68fc17f0c5,2919313030,8441361048458076582
+931b8437-79c0-32a4-96de-c4a300dcd7db,466535758,15511464861526553336
+336770e5-ddb0-b5d3-0a94-571b991643bb,1620690619,10672195976854423779
+f48fa8b4-c4e4-eec8-a189-14774e515d79,942916501,12363352953405145252
+5d50741a-485f-20d7-548b-b1ad75606684,183753753,1552068029415398037
+aa29a577-23fa-96dd-9b22-ed60b7732183,2848980201,14056878540426960195
+bcfb2b8e-c378-196b-489f-7e0ae8311cb0,278487456,17765014033230805753
+40c96a18-34e8-eb26-8a48-c281dbaa7a9f,2596211563,13568183845859693653
+a7ded8e9-43a2-478b-808a-559cb970533c,2954747604,2091471620490431306
+95f18d7a-5bec-83b4-eac0-a6fea966ff4d,2274174674,5766990764359503397
+1de7e9e9-9b34-b288-a8b6-74d8160381e2,1417677680,14179102142798249531
+ce90be14-63c3-0e32-ac1f-b2651f716b68,2381447182,12451338611884687976
+ffc848a7-f653-da9d-5c82-3e82c2b9f052,3660353113,2119393779013932587
+2ad820f5-671e-03cb-389d-be5df88e5519,377433112,13079586507420979361
+3b834926-0879-1d00-1581-429839bfd90e,1017877506,18037112656833091912
+60ca3812-b7dd-6e2c-e800-2bba1679774a,3531969530,15733573682482839535
+de207254-eb45-70d4-cabf-6162b88839e4,3865325818,11377689526964694857
+8791bbe7-71d7-5bb8-ad61-9c8ce509bfec,850747677,9943047645959439744
+19b4f002-624d-10b9-4331-60d2b4bb705a,491084644,941822800949958040
+1b3bd9e7-0a64-fa16-20e2-1e9640d5a472,834064864,5968342026961464810
+48445662-828c-ff0c-5b00-9f7868f76907,3031933823,7319985756166681477
+772a18c0-6084-0edb-b34b-60816bd86b6b,1277589825,10777258787655600980
+d025bc44-57ed-ecf8-8282-8622ce56bb3e,276986420,15529616698909007085
+c03515fd-0002-e7b9-321e-790126220fe1,883954872,8629919341733968590
+0004cf44-c43f-01af-a10d-39dacdb1864f,2448724762,8383621803472592162
+7cfc70b7-8fdd-169a-c08c-92fcea720ac4,1526122707,6646982585640090473
+206fcd4b-19a0-45ed-beef-298389539373,4063573240,10432808261537859699
+e3bec4f3-9647-a7c7-0451-b621579a07a2,796462879,11361047745678063179
+abc7706a-fb03-735d-7579-b2bb26251264,417472744,3771021047096777177
+90b5de8c-019f-4c09-a409-949ae72b3584,388682022,1381488192729724259
+7f117e64-9bd5-693f-f0a0-76a280e12f4c,2540454656,10193736798819386266
+7451a717-4537-4e9b-46d4-4f9c27f93318,2818305173,7811332175443341744
+500508c0-5d8c-1e26-d942-cf302f9971bb,1772203300,14792801636265683874
+77cccd74-26ca-fb39-e9d0-8e5e57defb1c,3457357453,11960048839865502561
+e5c01690-c09f-7b46-99e1-017018b73a25,4139180427,14035057809083611919
+6dcf51ff-be54-d2f6-3c99-abf25bf5d9de,2227017649,17366823694465891496
+d7ba53e4-ab7b-4451-f137-117e85081390,1962316107,7859051201854717040
+2bdfb9d6-8591-f65f-a449-48134b4fdc2e,248473054,17522536408101152638
+2f9ba70d-fe02-0dd4-a01f-87cd98bef979,3126180807,7736962268308377692
+5a1269f8-d637-9fac-23f6-97b63c6dea51,2687822657,3033921607483904493
+354e89bd-2534-a8e7-6eb8-7b8a8a9051ab,3329474521,5632454102487590726
+ea48fd15-78eb-4c7d-0e11-de591c21a754,2336840319,16047833663890867073
+07d4cc08-8492-ffa8-f8db-b75acb720fb0,1646397975,2690846741057216237
+368e50eb-bb2e-0463-b3d4-a296c8e2aa1d,1238281128,13728470332263179791
+9cbf0136-9ba1-89f6-0e91-99d12530b429,2721542466,12874425766436074159
+07313ab5-9169-cfdb-e972-c46996c8cc87,3378493993,17536407978119743705
+35982f00-7bca-023e-7320-ff59d92e88a6,671260847,9786188227794783965
+8eab6b8d-81f4-ce18-b3cb-15fc4cdc2c54,1167975849,2330695884888768239
+09d7cb30-c563-bd33-003e-27454a810feb,2783211346,11513153842058675696
+84892908-ee1d-804d-0ded-71899c8b4eb3,3284069209,6500014066417769963
+c79ae26e-4dae-c8d2-b84a-9e9a97ceaaff,4292508417,12162634103843196009
+da4ca8bf-972a-a96a-da9d-8ce4cb45a161,2463230314,518219470081650761
+5c438b4e-2609-ccd7-6687-c6aa7f48759c,122243586,14198888088549530269
+a37def36-1447-42c7-5820-d00a1ebca108,1087001108,1174513183788022131
+418fc10c-101a-5fad-c3ac-2a262330a27e,2225528233,8112917462521392596
+96beebc8-1f4e-478a-029e-672610f3e834,1996320230,10716925778058644233
+7111b50e-e6fb-d4e9-3f4d-cbed44104ba4,230584493,12849814110337391306
+9bc3ff90-84da-8066-18f9-f3ad16cb7e0c,836314748,8752942908460327852
+5c2ac83d-65ad-1f32-3522-5a4e7ffe6a81,2954931255,7359883934135974013
+2538dccc-cf37-501b-a120-8e15920ac12b,3897043379,5899747038917917189
+bafa687c-4166-1a13-031b-7cbd3d045b4a,2401639580,5333666519528717088
+8838dfa7-ea91-8c7d-dd12-1f0c7de2b98b,3846080458,12869035915419397044
+b361b9db-8f1e-97ef-9776-7cdc1d8f3cb5,1470025474,14544399115132928315
+c7afa7d1-2461-40bb-6f43-c7fdc955c0bb,2447159364,4064945582517634013
+c1f38db7-3fb1-ef68-c5c7-a0e6bfbf3912,3514209363,1146561174284606933
+46499136-1fd4-28d9-ec5b-c7e4250bc1c5,1699302970,13071693742853160648
+812925dc-c992-49b3-8a26-7bf41c1f9448,2934734548,3980836644450896855
+e6c0854c-0e48-1f90-2433-a5668f3955e8,1614531393,2068860734307403571
+d9fee532-9efa-8f01-cce1-f26d03d57dda,1954357608,8522557417536126200
+52740942-c2a8-137b-e2cb-9926068938bf,565877464,16680853914121071575
+43f1abc5-9dab-d3c6-c20c-47c2b12be505,2872674349,17005869723765711098
+1d030c43-70be-6804-a303-5f4f11267111,2504854530,17072696431256098883
+43f7226f-1290-a633-f081-b6e8456ea199,2835491350,8012723393478785245
+c4365522-ffa3-a03d-4c47-3af4e2460268,2827985444,1596433640802094433
+2babf023-4a89-ec4e-e657-0a5f30091eac,3442533778,673485562768404499
+2ec10654-c1da-5002-47da-73467e588863,3497856077,9876423072072037017
+cafad867-d07f-bc44-5282-9603dacd4999,4099062993,17837740308497202030
+aa3f6589-8468-6ec4-a277-b9122d385d1d,328301634,5724516225471479896
+b0fcd572-ff03-e895-67b5-75afeceef8ae,542019366,3054834606132519710
+82f5f2b5-501b-be3b-c0ff-b5f3b9ecfa6c,3773932892,9348519721159795454
+a8342637-536b-485a-610e-739f7e5af69b,3052291349,10881098101935676398
+6d3038be-67c7-b8bc-73c4-ac1a7bc8b5c3,2098741829,16835403412603844574
+c4cb92f5-243c-0733-4871-b8fb2ee504e5,2144945369,13162422885520934485
+3e5b2ddc-8d14-0618-5225-26378506e4b3,4172734816,14018776706152064409
+b25728d6-2480-cb78-8621-30ed15ae7122,364882785,1904784025126756340
+9fad916f-0c99-e100-4f94-0f1bb664c274,1061165604,5392203854533928300
+31087b09-73b1-538f-86bc-ad21dbdfa775,1762163075,16836366681571367518
+e6eb50a9-c475-502b-322d-08f731aaa0d9,2938701072,8195564797143663361
+7a45d54c-ac1f-27ea-974f-3c559fcb219a,2840209899,1234216048511766421
+67b29507-6a03-3637-cda0-4c05e79df609,2153524603,18203750524831898726
+1ee8ceca-0608-b79c-d7d1-45d69f43af75,4164797054,15383161239986985053
+d0538c98-f0d9-ba29-80d4-20d4b1aebbe1,3216042186,8829297616036212602
+8c4131eb-23da-d1e9-3df6-cf2d8a74a7a6,2368886709,10846384735158088509
+1e04c4fa-fb59-c74c-7870-07a0eb4270c5,751779782,9877176230067623596
+b936904a-f55f-b6f5-a1f2-54fc33665851,2233076066,18034609078382731452
+b98d9712-f45f-e40e-e966-8c8a39e9db26,1787259017,16233644411544621877
+113eb8d9-84e2-8ecb-9a19-9ed7619d272a,404547766,7073686735248505532
+9ae2e54e-ef24-9ddc-5ad0-150ddee7221c,3090372440,6277858405749267972
+ad5114eb-87b0-f22b-a611-050edad6ea61,2575621384,202898881511441010
+67b4ecd4-7a18-c401-c04b-b183faabbd6e,2216458916,8638455649556743376
+24f38fad-1240-16e4-99c9-608b863244eb,3099920902,6667489113354758467
+6cb6f365-3cc4-e2e5-cf50-a3cb31482255,3070384959,5750295494838123722
+1ece40b7-d3e0-ace3-4072-3784018933db,343851015,11722963358761305846
+8ab44ce7-e697-9734-daf6-4e16a8ae06d6,613440075,14085958117724916003
+9eafcfe3-d9c7-daa7-1255-6d3cc3545a5d,3172115916,9623043261350745503
+d7240bf8-f791-1e0d-e51c-4d4251a058f3,571895295,18282995977464196191
+4eb73823-d0f9-eadb-6643-a12c9261149f,375910730,1413524370529787088
+1d080138-d7e3-2495-5b47-a85568126f8c,1343984160,6431382158376401867
+194f5583-227f-77fc-2cfa-8de863000b65,557967458,9865873798972854470
+dd69c073-8d31-58ec-7ec4-f1fb430e15f7,1866188346,396646278357568410
+5d68f2b7-3821-e45a-59ba-f958fad32d85,4268538050,15840320054540948713
+b79d4383-4827-8ea3-ba24-7bef96bc9e60,196582570,33681394542828318
+e320e1c2-8b76-7f59-5bfd-1b2eac0599c9,2267949009,16905165261810208168
+8e8c5a2c-4aad-51eb-1101-9fefcde056d0,2563714643,4556211958894415295
+1666a5d0-2f38-8b74-89c4-f0f7176b042d,3569446469,16463159063023515821
+38f8db97-cc3d-b9f2-33cf-52582ec2237e,1162156409,7287605863332428171
+bf085ced-6abd-6aef-682e-c22d677edf6f,1754213196,7932005209810109642
+2da3b0ce-9c28-4222-c003-40bdc29eec97,1054664152,11882797938451583069
+4d3f87cc-e2c1-e62a-a08e-13526da3887c,406925246,667384369708267813
+253bf195-0785-c240-9be2-7acca3cd72a5,957344388,16179672418191973329
+1fb57b72-2515-7140-92d0-c8041241343b,2577390971,7188537012333975988
+57bf4f95-0d9d-8df4-36e7-2d64fb915daa,1096199658,8590446252869347029
+fb56535f-5cc5-87cc-b409-070d38ae2ad4,1660219807,15637975306343325972
+95dd7e35-2303-9312-be0d-cead304cee00,3363945662,7287211310971082725
+e500f579-1d86-7219-229d-51e62028069e,3282137339,14675626282468301881
+1c920540-af28-57a3-22e0-6f36e68e2ee5,596543226,2142192573604728908
+631063f7-7136-aaf3-2ed4-4f584f75c063,404999964,3960359329431420000
+b700395d-d856-cb90-53a6-d026588f9bd5,2197119912,2372689882239648635
+0e28ff54-ad65-a752-2424-e224109e4f40,3662823824,3390541255450076649
+0b8a18dc-6b7b-17ba-0c1e-05fd0cb91872,2739393210,10598134002497686381
+c7b1e356-cab4-7763-f9cb-eee05b827ce8,4170968732,5541586586744972089
+7847ffc0-e3f0-bf92-eb44-0b21a83123c1,3806425694,14232737284100525917
+cd31cba1-0121-9aa6-d5a0-9b4d866a10df,586072223,12455098437629198099
+7daa4d9c-2acf-a8aa-226d-4f3134e51281,1819228008,3523305710956193861
+b4e14bd7-511d-1ba9-ddfd-dd3fc9956566,1773585548,4479627867681290849
+16f86f52-ab06-8ba0-0520-9838fef5c1b2,3914877169,1218154697283184466
+03bfeb15-52c7-2a72-3076-58ee6d9f03d4,2081885664,2674754570655872390
+062314ab-2388-d944-bd05-baae80f31a78,988587158,4417204884622383215
+5338c1e0-1617-f74c-b878-0254d8de8132,433364491,3927205236305418831
+ae01c185-50c0-aefc-759f-5897f30035c0,3532091478,1324480272673283937
+7a95e930-dfac-2c84-f409-9a0ca6aee492,158865735,4208911959666752396
+a0e8f3ab-fdb1-2c4c-e14c-ea77e5e7f999,891340562,16479469449327573329
+4ed72a77-992a-ac20-6637-c0ab7217b1e7,1254080447,14619731868505228795
+33ea271e-5c02-ae13-1bf0-b450355a0a84,401031754,2020917588935421883
+1bd4d82f-ba79-9cb8-af50-6448283946a3,378599635,1424899428587457149
+e5dcaee8-27b0-d86e-c209-c247f47a4ebc,3133769565,12273452041648066595
+503b5973-be98-fc2e-f715-caadda13181b,542759020,7156219438732557916
+d996aaca-6605-3211-6206-6081e39574b5,2524889332,13814079544950793619
+5c46c54a-186c-ee45-c629-4113be849beb,3465362356,16626576697010068559
+51551d3b-47e7-62e1-eb52-0e7efe2bea89,4250688981,4586680969648924586
+6d194d00-945a-4ac8-4b59-754aa6293429,69339979,7443692114522108857
+5353a70a-450b-36ef-aa59-ac6fa5262696,2580535904,5414457212585116789
+f740d106-7570-ac34-bdf6-ea0280ca0206,3763360865,7815281471351647068
+716545bc-aba5-a043-dc51-af63e81d0e49,1152815955,3561412929072855376
+b20e2c6f-9126-cd37-3c9a-19dda91ae25a,1370046835,10678330733974558407
+908bafe9-7aeb-37ff-3f77-96e4a2abe9e7,2536179896,7281467089268690424
+b0f3c4f0-2bd0-95dd-e46d-4966a0e9ca2b,3982264712,4130287905662476067
+c7b97b24-50ad-b667-c9c7-7d03bd345abc,987534722,13658623696750352988
+938d18fe-2128-92fc-e9f5-556e31aa60e5,2351466425,10613705935026442310
+be0b1ed1-64ab-afc3-2867-ab38bea2bf87,4286757749,2734951943916092904
+cd7d24b6-299d-25a1-c285-52740791924f,681080419,13260445762253247015
+563540c3-750f-b663-fb07-784a5ae0bc1b,34329984,9350931208896671895
+89569abf-e448-fc9a-3207-a33926a1e63f,88467378,2594107200673454374
+7ed49d56-e6ac-6b52-9e04-78ff4f8987c5,4212881710,7559007821965054880
+fe4ce725-de0e-83a0-137c-c9a2288fe16c,2442969845,5065754336506782072
+1d73d381-6951-d5d5-6640-b40a972ace9c,2222195254,17434821638325351988
+49e2753a-1e54-90ce-0d16-6676dc36706c,3237218700,17960163618008810414
+022ceb0c-6dbd-ec25-ce45-6e08b7dde3e1,2632986604,10334080405660214272
+6eeee7e2-9396-fc5b-c242-ff5b82db232b,3793348870,7995507394244998778
+500947fe-7b33-b8f0-c94b-587df3bb3afd,3871162032,15149512615824394162
+63df01cb-1a4b-d2f0-6257-8b83fc1e9312,1479572114,7261155759286311512
+14f01f5f-a248-7576-9ccd-23721cb0a38c,2726895210,9962616407848279797
+181cdc9f-7a45-1f0d-9b37-d66d004760fa,2691753290,10622138525871546016
+12112b0d-abe1-7cea-cd5b-c5be16488c2b,3757226996,5190414398393153422
+f1444985-871c-fa3e-57b5-69f871ccff88,1520572683,3717933779234085651
+babfba22-95e4-a4f2-d55a-a4465bb4dfa2,2808378427,7637134015361131573
+dcb419f0-b85f-a971-ff04-4bb024b50a64,1381759129,2230076928047518803
+5ca81804-dc00-0f1c-dc54-b3e2a3dfd101,3583158772,985141973904708278
+9e78c9fc-564c-c768-cffc-aa51cc731fe1,185744579,13244700057474206383
+e7b65d64-90c2-d189-ef08-f77efa4b9f0b,2683428470,6873964339630094265
+8a2a2099-4c3e-084a-c103-13672257ab08,1307198943,15284406353369840649
+012dd463-71af-8ee1-4e66-d2d6acab88c0,920752626,4082114795473910616
+17573752-9bce-4852-63f4-d699567ba702,2088699281,754940443805483028
+250e9043-6789-451b-b85d-f5f636cfe08c,3357071148,2517497260637140869
+07711fd7-e1cb-d337-1ee6-b17bfdf29e0a,3122428344,12623352827856710400
+88c3cc42-ef3e-d6fc-584b-56b520b2cfa3,520592260,10070924183604733562
+817c6f9a-53e6-6e8f-7917-694ac09f1a36,4098005736,13411588661895281129
+c0df02ed-f317-dfe6-0a30-d3af9b750563,2305190140,15999240240533958911
+e404c290-8876-ce4c-f806-1c7056413000,447231721,6426937538204019528
+9965deaa-e289-bbdd-072d-320f69e93f0f,2050906054,717042500790141013
+6ad56a37-a249-f192-72a4-b59fdfc89217,570180287,6588796690578940271
+870892f7-7f4d-3828-9983-18efff712c28,2425622758,7244872330755986845
+903ee631-5a49-4f3e-cead-5bba16c16257,933468639,1498459335037410487
+15fb5388-3be7-1864-de8e-8c666c059042,3466802161,17602587931366432952
+c10c8552-d749-12f0-5c07-93a881f27d61,2168840238,5250715322699177948
+1d2b9bd6-11e8-65c0-a453-927a99401496,2035436506,13746078236038693420
+403db62b-cc4a-b858-9c94-073cbdf3bef0,2206641881,9054853305842564210
+84c58ef7-c395-5c4b-5f68-8749ba4a8ae1,333346036,14485820410911858636
+76b73103-e3e2-34fb-98c9-d66d14891ca7,1797296915,13093724250761988556
+ddce68aa-c28f-dc4f-4d89-99f997e822dc,490210665,1293982404943805473
+24005ced-c3a4-44f1-1e2f-eb018a160611,4264121973,11552778433762972533
+ce60fa96-bbee-9628-649e-5dee13104d93,2143991240,17725226987445110215
+eb4256f3-791f-2716-81a9-8bfd02a72ffa,2876364186,11178965799556308183
+97fd005d-6af3-c36a-f02d-2d8adb73a35a,2135152540,9967422983708883912
+75eda469-52c6-446d-1c68-50e310c1a893,3921873718,7274141871085880636
+084aeacf-83d8-551d-a9cb-c1ec536009e9,2332916803,15827896015094213335
+f7171758-7396-8aa7-a2a9-7dfca384b7cb,1979435475,15758723573304989472
+82c45aa5-e71f-3556-0f77-96b83e66927c,3359235732,16697022074100987493
+9f917eb9-db1a-854a-5b17-ea3f382090fb,2859020213,17888413543454304162
+a81335d8-bb82-c52e-0d82-d739c3f93107,4149090386,17576073697970343761
+cec7ffe7-c58f-402e-e816-0d3700d9775d,3021994650,11197886394648591812
+f4adc7a3-10cc-4019-3bbc-5cac7c758034,2134005680,253493546906200142
+1ceac387-f106-9e62-18a5-99e0c08d2201,3742607848,181712466620614674
+68bf116f-b079-595c-3d62-781b977add37,3916569610,8918125085148432027
+68ca8bc6-51e7-577d-bafb-51975b4c3100,1265723464,4711851027275778109
+a4a90836-7e6e-56b8-b130-0c880c4de4e5,2391694862,16690761619761104107
+d04e9a83-e462-e543-069f-b1e0ba2a88dd,856877702,2001430131167752870
+d950dcdb-7d1b-2290-62e8-21da5710ec21,3711425175,12449895888018918929
+b44d1779-6914-57da-b1b3-1864b70fed2e,1635593116,14336376484797551764
+2e768f88-1f37-2c00-4813-a2c493c43286,1250295652,11531636904263517413
+1692aca6-2f85-99fe-9ddd-af4e82b95e54,444632048,3335318414039801108
+0e24fa53-bfa4-1154-b3b3-76a4b8e89a34,4289326794,7789569252732344156
+01e2057f-d71a-3c69-6811-acaf3bbce8f7,1046070816,7063863961150327819
+7658692b-6671-90cc-aec3-9336724315d8,644668768,5600109292078783073
+1dbd7f32-56fd-1217-ddc2-6243e955c4c4,2598924107,8277340626142076220
+bd1559bb-24d1-29e7-375a-55c56671d0b9,2904643111,13623045212429124138
+87aebeb1-4b9c-dac6-e884-9782c765f4b2,1243521076,4027539696167423244
+230da43f-5b8b-fbdb-3738-a2bfce9beba3,1846351501,5672864389503687037
+23c107b3-fed2-5eec-7edf-c76fe7047d06,910104530,13621224840231959727
+c4bce986-cdca-4fe8-2829-5dd7f62fa17f,177003714,12904163336263120128
+a9ee9c3f-d81b-8d59-3783-0313a6a23f3a,1069194780,395591698957269122
+8292fa2f-4a87-a203-425f-1b66ff53b08e,4192222802,13318129782887359693
+14d3e557-3e9f-6141-bb05-1089cb76da5e,2862587118,765769211359149117
+b8df8fcb-afe5-c0ac-061f-196231777efd,3799085505,12701242877681822559
+3a8d5e1d-9f39-77cd-5da3-d1504d3488a5,3592971170,421783719252986280
+e45eb60c-48b7-eb1a-5507-f3a5b441f3ed,785209900,4018452646933296851
+61fa56e7-7949-2507-0e88-3cd28a90a4a0,1794581146,8278804928870505532
+b9b8dd1d-4e68-9035-ebed-7bab875c4145,2981519713,6983503172562726596
+00d7db8c-3abe-776c-dd74-89e8de558d14,4281636151,13682418822919603924
+6dc87474-2f97-c6d0-c1f4-086dbbac35be,1891135389,13905003773722469421
+61c17895-afd0-3dd2-fa9d-5cd4e9c6ac9e,3927825735,17073349111501147006
+17658b59-98ad-4331-0211-9fe636fbdd62,2495112066,16266944904020110478
+24eeedcc-8a30-6578-9680-7c7cd6d67545,1629224253,8428008107306680500
+11b00be7-c3bd-9c41-2d40-d16e190526da,1084466516,11280342394754142661
+f99d2c9c-8635-c1b2-85e2-023db57c21f2,3472605555,17406031914168024561
+9b2d0960-d0fe-e4e6-933e-837c7a39c0cb,3662880715,10613298755678021960
+7eaca7ca-d7d0-2ea3-d810-3500c004585d,21095235,4941909484459715947
+78cb4d0c-bfcc-6d6b-488b-732553a6b78c,1743943341,324107953752640323
+8af15c59-4458-5a8a-0aef-5a3638fb91d7,84512240,14645654930117478498
+f1937100-4a02-8740-0443-ca82e07ba367,722830836,1372553005631509150
+3ee0d84b-6173-29ea-a937-c088b0131aa0,3919568072,9309301473955872858
+e5a16994-c7a1-f799-8fc6-8528c7314027,701584503,15578153947286674241
+c6c47269-ba6b-46e3-810f-261142bf41d3,3065836246,1125378089908459859
+4f2580a7-1faf-999a-d491-9fa903186c21,4237067368,2052079653760126960
+936ab66f-2839-8e17-9320-ea1bb3b88502,1277595871,6084821589869106261
+558d3ccd-bf49-eb26-9ee6-3192000478ce,902760282,13511934566652910382
+75b5e831-202f-fff6-c01c-56bf3f1fe980,2174461644,10719335828151554261
+8cf4d36e-d2d4-50f5-e624-3cd9b5ee460f,2161380887,8072518542905974662
+59572f5e-64c7-2e14-87f7-d32172156623,1657306963,14262537881447533272
+a3ca08af-edf6-3a64-8449-df86b35591a1,1205758845,4400813507502658479
+42e1e7bf-611d-2da1-b46b-a48619a8f712,1864127390,9454850335965159577
+b5a897ff-f529-dd01-0745-f885d689654c,747695321,3375352885289730103
+8646982e-8b4d-56ea-254a-83aa11b8b72e,1553408490,14462360307693436854
+6ad87e51-990d-5c64-732c-94d9ec8ddad6,2667309742,17616600655710237216
+3c1350ae-eb03-b18a-8fec-2249ebeab6ed,2331040991,442854893652081836
+46baed18-3884-fd13-ffbb-124673f79215,2100155826,14186700886550107831
+c40c3d26-f114-4cd3-c207-2aba675b6d4e,2096457437,1916345158923308470
+14276fd7-6416-dc44-2ce4-8adb4e881cb5,1603889249,17519304424334835272
+a57a72a5-2d1e-7e6d-7316-a1e99c03cee2,4294550399,8779178504304155975
+4907df23-e094-dbdb-265b-837d3066a9f8,855235167,7492538830998886011
+bd2a7d06-20aa-5192-f5d7-9f61d4c2975c,617922626,1060731393677484893
+7147fe1b-5b31-268f-e44a-958a8e43d44c,2628804963,14262562212223272825
+2e3c52ea-6ae6-3e00-0516-4d28a891817c,2128619996,13799417968265130852
+27a5f9b9-5668-b3b1-a289-0f4e3e859119,3582880716,14927569932359583369
+90fa54ed-fa62-1023-bfa9-bf2b0ba86783,2866381938,2065931639307329729
+088020b1-67b9-3a3d-d11c-635683c7103f,987963761,14254219051548254244
+045b58b2-5dde-a0d4-1331-00771f014097,2706996505,6383964441850141108
+00fa9236-1ba4-c66b-dc68-3f1cbfc7bc8e,3610807424,6976977018072408539
+886c9862-a25c-eef4-b158-6b7066b1b32b,3565086822,15858799499505309537
+f22b7d79-dcb2-ce9d-28c1-54f043fa0013,1503691591,9520567061191262204
+eaaf50da-3c4a-0757-59d2-1addc3fb5723,1054471314,3848374330793864014
+7e119576-d859-ba26-4e3d-0d9544a0de0b,3331830515,94935924308841624
+1f9af628-3783-4f1d-09fe-d1b2d8fd9ec8,1564109821,8739201226749540198
+fb76ee94-94a9-222b-dc19-2f65d96d216d,3217371286,14556705134820865455
+95b4f1bc-4893-07a1-d921-e20e176a078c,1736181090,10160779118843901955
+e2ce54fb-5c77-9450-bc5b-75c52a88ccf9,2448244857,10434609311472782067
+4283a07d-8aa5-d243-1b62-31e1e51655c2,185732954,5419547563676665466
+a01cd42e-4e77-abc2-fa85-8630312ddaed,3820585482,15607122867584785320
+df9d8780-02d6-e463-266c-3c6b133b4426,4175478015,7692066300156278356
+acb12de9-68d0-4ee2-c7fb-e8f5ad05b7bf,3117005635,829264880570127179
+0daafc04-a76f-911e-d377-cbbf5c97bd2c,1705554977,7826843842146161154
+a620c96f-0e8a-1f5b-4ea8-8ee51bb42211,788911243,7500570359195839623
+837440ad-52b0-0e70-7e6f-f358c565f664,2114641074,11440422838319793139
+223e8b3e-5126-433d-ff42-516fb455bd3c,3009765689,4020040283442718126
+5474de1f-cc47-447c-53f6-4eb802578055,2338022846,11670507861041876018
+ede01b06-188c-95f2-d678-e62d997211a8,4184275295,2087269767794975022
+c64336e7-2fcc-e932-1306-c2688af2524c,2141507992,3869403140809354773
+fd26b6b5-1acc-6fed-2475-f9780a0e795f,3735116445,339742999680893764
+9793c668-cd39-93c8-6e21-21894d648fd5,1917163628,2285464376648447040
+a55326e0-1d40-5e6a-0b5c-db60ce7d72ab,3337150293,15087433783820282740
+2b4ad0d2-cd50-66c2-fbc4-4a5f13a1b691,2669814779,3162283740488565672
+768baa34-c7fe-1a21-9321-3922280e1d41,2948869410,13465964297722231386
+c14fc1ae-9fcd-6c27-95cf-47f99dddce63,545423394,12160701269076951565
+480eef1d-9f81-15cb-1336-7ceeece20e92,1086907553,998060751554635926
+b5342e01-4e46-f776-9f05-07ce1dcbb79d,2053528280,1082658915964911211
+36248205-30ae-7d1c-d417-54a84988e6d3,913503638,7569556874854543750
+3d4cc799-d599-cfdf-477c-b8e2367a471e,2141999574,10661082059907094566
+a9c54744-ca49-9c89-27d4-186ef5318695,2577909297,494963872333723404
+9f19d511-e935-9d29-ef1f-312b65fde77d,1412728876,4138311767289062198
+967ccf01-7de8-6775-402c-e64a73a1e48d,2079355423,12626865698127115495
+367b13be-72d0-d4a0-1c16-b0cb34a94344,3231759798,8744151997713238455
+44bce3dc-65a5-d7c7-7fe1-50359d31e026,2185454676,15756386404667312431
+8faad166-dbd4-02be-1b5a-fa7e0c13ed54,3436416583,12100017554795456492
+353547e4-390a-299a-3a37-df1dce6e3a31,3974556890,2035839621879037138
+ab44ddd4-5697-71d0-9e40-62492771eb27,946081577,4830175080112718723
+0362e10f-4de7-d573-7c6b-8c1c7c4eb55e,1207067310,3073331451704952829
+d0d7bcbb-20f7-ca5e-942f-5de0c90c282f,2831002735,18351339445511473680
+ec9c2c89-6ebf-d766-a405-7d3f7bf0d306,940458951,18084593741344617975
+e4195915-5f51-08a9-8bea-a7cfff558d3a,2317633023,15094929051746938690
+942d93b1-4564-4675-d2b3-a5935e0938c3,572262367,10810796516527218681
+a5af3505-772a-e194-f77a-10832387ef05,922734820,12825416879790284099
+f878db54-3e92-4a06-08a5-7caeb07fc633,1606362272,17439528586068047440
+ee8cf775-6bbe-0d22-708b-0552176375a6,512928319,3061617095607352832
+50e9593e-cb52-addd-dbb0-73e98507372d,832946507,4884473810643151981
+8bd7d295-e527-9b99-5dcb-97b0fbfe2d7c,834213266,15774694764408660301
+a7a94ae9-8d60-fdfd-864c-9e545e1f72a6,1889996486,1101808361042602009
+d3e4ff23-3224-7da3-c040-5cd3e33ea2df,1814029737,11625046534235809365
+fd26b631-6b8a-645e-6f07-ea9c96e2ee17,3663250341,8495936880113424049
+946d42cf-92a1-3850-6eb3-94e35e7f18e0,1841404859,18303895345658039178
+b570d404-69a6-455c-2517-29d404c136f4,3963703763,2601532676131681430
+e89e86d7-d826-9156-db1b-f1f5bf2d93e2,990391852,6138891583863481463
+829d7dda-60a9-8470-7a76-5536e5be01fa,4082646286,18185515466668986299
+84721abf-c46f-421d-fbf2-4dc52df510ce,994158085,12171138689249675929
+0335e2a2-3761-5be5-327f-14152f332716,3496031080,1228899240489720206
+d5adef4b-4846-f4e4-d9ec-ef0300d290ec,3031182588,16047701472284346052
+efcc38b7-8c98-a7cb-bf71-2188b8804c1b,1920171286,5608214041924262585
+0a1881f1-9e79-c836-7a53-e0a35582a7dd,1629908964,7034305806912786578
+b3e56814-abd8-db1c-3af0-a35f48876311,2341549936,14392257864768827611
+b12b9168-6478-e2ee-8ea3-b1fef1b4c746,2886529078,2375752561577407781
+8978f9a6-8059-39b9-439d-e6e5802f2961,2740150105,13896464716944994502
+5e6c3fb7-0fe3-8c8a-6aed-f7c918e12702,242477555,1138800263527103471
+742dd09e-cf93-38be-2ad7-89f57c8ae796,498958032,1573602414476681596
+4e199b17-ddc5-4a67-66a8-3757d36c31d0,1961033648,17466200854590378954
+605cf608-bdf4-4486-c7fd-51c25a9c2eca,1018707134,7374570291956318607
+6ee8a30a-9d76-bae8-15c2-1c139aacbf17,1624529635,3908546295847722042
+2141dc8e-4430-8c96-c75e-2d7a6b490e32,2481296514,11244813149635803820
+a516cae0-4656-04be-53be-e71d9b8b2bbf,1821216926,941109562430630223
+6199a95f-f7ed-5cfa-3e81-b2ff75f60d89,4233306098,14533145000194982102
+be82a8e9-bd11-7d4b-7ec2-139b23747d9b,210927144,320983018488705004
+3d01cdec-50e8-9d54-c944-ad9ef6076fde,3370032292,14587565394064572757
+4eecc298-5e0a-48e1-3f4b-7f6e8caa6840,3136701985,17031603744621118644
+77221e67-03af-7690-30a3-07606b412150,4154440930,12426716387180292418
+1b82db47-e050-4f52-a32b-8a2746a8b235,2115793194,9546876129929468203
+dd49f6c1-eed3-44da-e60d-7428b4969c82,1393434692,10444582823303112366
+4a8054ea-75aa-6d98-4dc0-42aee4ce30b8,1947537632,1488910472135416538
+a4e130fc-380b-8662-418d-a32e0e91419d,3083267749,9124542821764315904
+0eca731c-d1d1-9123-9d30-8c7dacb0f588,2364767209,8243591935902075303
+c2d0865c-9868-76fe-9e2e-4d5cf3723f5d,220794437,14262473477988018346
+3a9406e2-3ed0-05b0-b3b8-7c918e33c602,1537901093,7279012773732877141
+83112403-98d4-4311-c084-e3b1ba8b515b,1739775834,13204576427471658850
+eef20f05-b42c-a75c-0515-fd5035aede22,2717693593,12576455804403829475
+9d1362b0-9cfe-7ccb-dcc2-bccd17bfa92c,2673130242,13559359384331448347
+3a02ed24-8d2d-6157-34de-4b59a036966c,2427015783,5654298327074351281
+d0e8ae61-ca55-f1b4-853d-cee88aa73f5a,4260532423,1133931661219559468
+d47afbda-e5a9-68af-08c3-e95cb87bb8ad,1032340731,17756046983936717507
+3fa8db51-dcae-13d8-7a5d-b6b306877b43,4294083906,12103954776751883044
+2e974323-eeea-edbe-fcb0-0862b04bff9f,4023140819,963244015302916027
+b3b0b2d4-fb48-3caa-30c6-5d3f3f1a7246,1365811527,8606607759282538750
+8386f639-b803-9ca2-92a9-52fac7cc1322,2551247386,1182321489144081850
+c2597289-a86d-0474-9db0-d42a5f4502e0,3314012436,8894195494837500884
+726e60dc-2212-414a-a9fc-1c5151e549ae,2169807086,10030303444713641062
+a977f3e4-89d1-a464-f58c-e501eb6de9f7,329540055,1755221926029378569
+0c8df61d-fb3d-cc34-c171-08ad8b218fdf,90334106,1472576197600158152
+e8ab7428-b61c-9af8-3327-d6d4ab3372e2,3446953617,5212166022538876128
+022c07ae-ba08-a828-61cb-b5b602ba48fd,852368431,10098281986467753272
+c0a0d5bc-e1a3-4c29-31fb-6d0076d51d49,1626805411,7159474144055213755
+5e201da9-eec8-73e0-f19e-6aa9ff2d2662,1367962457,9111283191411081952
+28e226c7-80e0-ef12-a28e-ff8d66c8cb8e,1308940284,1383421669287256073
+316634f2-700d-8115-e513-dd32f1cf7da4,3349855030,6280819206866746354
+6323b3f1-339d-91af-c198-e7d6ddfee702,3667505358,59739212102995194
+f07f8d5d-0246-0102-8520-a11b430d3613,3217526845,8877801918983139622
+4afcd86f-f081-53e3-78e8-6ccbb7a72b81,1130861571,16399154349539857786
+508aaf2b-749e-0e3c-92d1-7741755a39a0,3159035541,10416099856347583909
+581c1501-67d1-911d-75bc-9f83e9845786,3289559648,7913313725738094874
+663af2e1-f3a5-3e0f-f40b-ad4e08c26d4e,4045512780,15850058283892797656
+7176032c-feaa-4f61-6e7f-73326b5fbe3f,1638472656,10325295942126942460
+c04c4ce2-1793-97d1-a1a3-51f954c9231c,1604367189,499586163069905176
+755a3c5a-cae3-fe95-5812-33a1e16ad286,575620986,13965583025367634442
+cb81da93-f101-f300-6be0-37bec6edec04,3260744723,1779260200362800933
+349b07c3-6bdb-fbc8-08ac-d490af94dc15,1469124735,16268658185569037705
+85456743-d96b-ee4e-dbc0-21378743e33c,3209831313,5304743702998338254
+0381ebab-d0c8-eee5-d40a-b006be69bd36,966737491,2934607676095594359
+d7eaa4e7-fd11-25cb-16a9-2dbfb776260a,1631792659,17715032135669803471
+604a0fae-7db0-5b4b-fdf5-13c8d85bf2fd,3005079347,10823955663131380827
+5f2247a0-c950-ff27-7bc6-eb3382438a07,3487913876,14678967001186231443
+4752ebd4-c7bf-bedd-7074-5d68097f04d6,459459548,9029474888025897811
+c0ccc0bf-5516-a99e-64f6-84f643a74f8e,693541472,3802317705018033684
+0b0bf129-a34f-5a67-caa0-bfc5d7c9ff84,3221785010,15729998170032718266
+28fbf69c-f3cd-cbff-140b-8e3cfe95c30c,3247668592,2270292733505196520
+c9bdd260-ad65-5fa2-8da5-7c6c51e35aa0,1502920628,8844036139016495161
+6b33a098-e5e1-2db1-7849-f842777a5fae,2530525613,9924696241961254110
+34a380f2-5348-9ff2-cfb1-39087fb0a139,2112414136,16941264127417407659
+7318bfca-5a6f-03d4-62be-db81148161d7,2770811179,16567926046855180530
+6e9138e3-7a7b-8330-b396-93869b972510,1898283230,18222493131628648812
+b62d5157-bed7-265d-cbac-eea2a28bb1f1,2420909261,6924052415992843104
+f3f03523-6bdf-ef29-d763-fb4296fa98c2,3705240188,9531106694849291836
+ac036b08-cf34-bde9-5cd6-6a41558d56e5,1235894634,9518227324112143025
+17deeb31-9437-a08d-ed79-e497cf090ceb,2296597247,16179874374114768842
+6dce6459-20db-90be-7a53-9bc691f1ef51,644557758,15530746654840198136
+4d912f55-6c18-11d0-701d-a0502070b710,1800020750,14396369969951173537
+7dd97c1f-7335-186b-9205-52e9fe3a4869,1557185203,5910259271686142373
+e143c87f-96a9-0ce7-f359-907f7f650da4,3123153467,15033193560305291496
+3e580b65-82af-3891-ea6d-4b5adb568001,4069941518,5046190857978241359
+ebddf182-6bdc-2c91-35da-240b395c0ae1,1532715071,3115557799549987779
+9454d682-9bb1-acc3-a6c4-b4bdb852dc62,2138535704,1298728305391501998
+2c7d96f6-6aef-c7e8-271a-2f86a5643ce3,4450129,2070131070741140935
+19989196-d021-5051-25d8-0ae4c2030c44,1915667199,16906055358709880162
+a5b6ffcc-0108-8ffe-246b-1bf048892cb0,3279868123,1563811483803560168
+73db2955-89d3-dab3-a3ab-14aaa9e4c386,2656931340,3413606524418037199
+1160ea7c-1a43-430c-49bc-6196d30c9738,3917345988,2139467798789931789
+ae791feb-f297-345b-5a40-6716b75fdc23,226780750,11937146612899404348
+659824e8-cf4b-7382-ee3d-39cbfa14d291,3635010387,3999572644966675337
+38a5fdaa-2d21-79b2-5165-906a974c382c,2135655004,14284239239479918330
+a144eb29-6c8e-f9ba-d686-1f4bf68749af,541686515,168176699750444263
+ca9f4371-d29f-80f1-2dbc-3d8d0f101046,495413471,1863335789007432631
+6ec4b1ac-768e-5475-64a2-4eb50c91fd82,1377171943,6775131545458239339
+e5c6475b-3b72-7b85-f519-3801acaf5a15,4040259179,13501370159458603395
+5dfbf7fb-4e5b-2c2e-8d4c-5985a7f1ff3e,2107087338,2369021440934340311
+ea5d6d3a-5f79-327b-287e-29b4c17b50b9,59781389,13656709310639679925
+ecdb395c-51ec-72f1-5b4a-cfeb173cf39e,1066310578,9124688066563733707
+104440c1-c4c5-d1e0-cbc5-6c1032dc7343,2813801126,7039565968308468781
+d3026686-0712-f1cb-88c7-b455c4628910,3350059124,14141303724762612663
+1a7b9fe1-4e1f-48e2-ddcd-83ce0dbbae04,688815568,3522753198880349830
+78e91d72-61a3-3cad-3bdd-027e75d493b4,353279863,1880468999614063250
+1e4bfdee-90be-c151-a2af-2bcf5a59aa74,1117118795,7712236714532516261
+975327c8-8af5-b64b-1e35-b8b3df093894,4101851842,12867087867463761048
+390cd598-4cb8-91fb-c7cb-d12a2ffaf631,156204900,11741021168329458407
+94fbe4de-ae42-42fa-9639-46ac2f941c9d,1772208366,16529064923946233724
+ce834769-1dea-53c4-ce96-5e6d851a139c,776568553,12834565072433801919
+595e2dee-082f-db7a-73d0-3bcd04659c1b,2756112715,5041596548609811747
+44732c67-a5c0-7818-f691-7663696579b8,911765430,210590216368643226
+21c8262b-7816-ef8b-380c-7a8f1a08fa2c,2068476936,5425179967235217947
+95bc9676-a231-f11f-4634-9afd618cb9a8,2133501050,12869999843899366108
+e1c28188-2646-0b2f-4f7e-aa14124f204f,2516710633,14303605701872326856
+0bd433c1-8264-f5e1-4a60-600ab832f7ee,3084646538,7445439032876300019
+f4b0bb14-1d5c-7090-8bfb-99c761541795,1371778769,2238004562306318440
+e1b18415-9c40-f3a3-7610-9d389d00eece,1410303343,15755400060767422106
+a35aff46-157a-8e39-70c2-19ada312aa05,1209566686,3126454629678407002
+3b6810a6-6b70-59ac-1a9d-590da12f24b0,3237225998,12059523548144790532
+d005cc81-42bb-1e82-1288-174c3dd4f954,1691837958,6879055894238771212
+dc7b7b7a-0419-8437-082d-e6cc49b38e70,1862298773,11853751034309002883
+3042d1b4-3a11-b6a8-4c78-de7bd951f75e,524701750,8272154493115564502
+ac4cbfa6-215b-259b-7eb0-ea770853f678,369387370,10847974879035697004
+d1cbd261-69ef-bf3a-4dd8-f08838e66600,3572607573,8453992602311157394
+336286a3-acbf-e639-7db6-538ea70dee4d,1187438037,13158581385107800903
+37d4ce32-604f-5639-f56a-3581ca0a3125,2495284455,9440032512270077425
+8913b8ab-87c8-e0f0-f1f5-d81fd2003525,254273115,12111935418701897872
+3e9c376b-8a71-069c-881b-f3b197822ca2,3847346737,16384416164772032360
+9b5a99cc-fb4b-1192-5d02-afa514a9c499,926924060,8722021653911195345
+3dc6b90b-fc42-978b-47bf-f5f58715ba66,3737115131,10945486015836609334
+8e854fa6-317b-b800-8339-7f4113494475,2600813868,13298210715586363042
+0511e531-bf5e-8f17-406b-c135dbf0f0ce,238691017,5738450229991961144
+82defda2-50a5-6387-c4f9-e86de1da579a,2113192953,14043660513550498191
+b7d031b7-38ce-adbb-cd7c-45413cf0d7cc,1842172879,14778165682409540307
+b9257be1-4b4d-e5c6-03ec-65ca75d09c84,1956208349,3759301081002176898
+1b6be8a3-da72-b079-8771-038101a31b91,1552937375,9058495914267191494
+c758aaad-2346-9af5-5132-94725636f012,2626830690,16331347234040233983
+b8e63921-70c7-1534-15ca-ef6785d8cc5c,336699852,10152337958346846495
+01f8a985-7f1b-b064-507b-feefdd75716f,141976256,580878207986306212
+7afbaaf1-8aa8-2ce2-b0bb-f314369fccaa,604333174,4941629791963296922
+99efe63e-449e-adc7-9993-e721fa6742f2,848895429,1678475204860996281
+b39eb721-d36a-7cd1-f1ba-f2e0fa1449eb,3690947857,4670850750207859345
+bda9e0be-4df3-504d-2488-39ff5b4a7f19,3577680337,13806555717755787999
+1e1b4846-bca3-4ca5-b596-525af3536046,1820041008,8366816783445858051
+1c78c2f9-bfbe-cd3d-86d6-9dc15c167dbd,26632579,8897190399564950364
+d36b112e-31cc-4c04-ef6c-e349132a2558,4191537463,6039270531707563556
+b68e1ead-814d-7720-b1d2-1ba73afc4687,1666917330,1049577313885148314
+e6609da8-2556-e01d-339b-0e23ea838cbd,2259049756,9746000139902529194
+0c4974a5-15e3-37b3-ee6c-47e9c35ed9f9,903466398,242956764401452571
+cdc12ca4-008a-27a6-3039-1b395920970d,3915160796,12721455193514804941
+266091e4-6a2f-7dce-6077-bb09e52fcde8,432144846,1600300256872528507
+b181c613-6842-a3ac-3d26-1b14a2b918ab,2231058474,13767653488282886203
+7886b76e-fcff-221d-97d5-c9410edd77c7,1737480744,12647270921666174358
+7a46cd97-8906-518b-4814-8e7e369b3c3a,3022234049,12080247153175544622
+800781ab-b1fd-19ab-e9e4-e5e345f1e162,283397579,16459433752867667007
+ec9cf23b-244f-f6ba-e200-34e79c7e956e,931999998,17276953854827651884
+028de19a-4f0f-f4e9-01f8-cbcf0ab704c0,975779916,8211784188676324898
+2788ff48-2b0a-8e9e-2613-f77ac045dcaa,1302481187,16411152236271288807
+762a725f-fe26-1e80-7560-f829fb1728c7,1314765594,63475979139352845
+65a7389d-28f9-c3c6-0917-45c57ba422c9,357066509,9195704964549296337
+0310e910-91e6-7e4a-2ef0-e005d4443d16,3060775252,2167842740422581011
+0c6a9b54-d18a-eb94-0c4a-c0c6be562bdc,3294890047,13543033853533099573
+c52f0e7f-d697-78f0-2472-6259b9882570,2636567776,9257333394355015273
+24b0b20b-1193-941b-829e-819210a5998a,511239976,2620230511147139757
+e2b3b52a-3d1f-9c43-2b2f-4d73f8c78fc6,822133640,6051941666913858373
+2aa98ab9-b0ea-460c-6317-b02b4dc81dcf,3739537890,5515735920277933937
+f3c5b900-318e-5e31-2c84-0d0826180e43,3512469045,16464135613824692434
+164fd5e2-e8a8-169e-6b65-4f669820b7e0,2309998678,7117486664471121310
+67e634e7-0c17-3b7c-f22e-5ad96b33f764,3876427126,14554788272821459439
+23bf83a5-2a34-ea4d-cd68-ea62603f816e,2169421445,5335704605591652362
+ddf265bb-f89e-3460-aeca-118b7bc949fb,1282650824,17022162769552116447
+28e7c70e-d9a3-89db-edae-d49bcea88ff5,2039880875,14338328254957322790
+04f7db50-474b-aa89-07f7-c50abfb2cf30,2861296804,10629282377001638420
+68c4890d-c254-5de2-cb08-b1a9707a77d5,520986034,5033735494208255783
+c87891dd-05ed-23b3-180f-6187fa22e203,2492083360,3623810939613441361
+a1c39304-251a-bcfd-61c5-b5ff1b1a2e24,351188477,10363963057396123680
+8b1d8468-d0c6-8b9f-9d09-cad955066910,3783180020,10989584456166820602
+955d3ae8-8d8f-9527-62b6-7a75b51c74a3,3074761613,1397994015603424687
+ece39402-c612-c806-d713-4b8c42b1cc09,3286644899,8125027468469174352
+c36310b9-bab2-166e-8087-4ba8c17d2dc9,2723960566,8880491256253605975
+5cb418fb-edc7-f738-c9d3-41d41feefb49,2300729997,15641761320315958116
+66309242-8105-94ce-1b52-725318ee6445,2589938855,9702922770943176140
+6ed41bac-b34e-54a8-13fa-8f5a9e11adeb,2975719954,4934111740039629463
+acb2979a-9a2b-b91c-d0a8-9139a1460925,783897287,8583566971985227972
+7a0be6e1-5ce4-6f1d-4d24-1559fc96553c,2733133084,15548141661483821087
+087b3ef1-3e04-e1ca-8592-87216a5874cc,1612809529,17280571615674053035
+a4dd6cfe-f0aa-8b9a-340f-f520ecee4e95,1984725562,10798445913818388312
+c034f918-4ad8-7614-bfe4-6807e24ebac1,4067759143,1430375588694886647
+b2eac2ac-188e-f8a4-e089-2da6fcbfe3f5,2819655116,7111229874824519586
+c4774808-2919-0d67-727b-a9da572c3402,185042299,1821356314498506022
+aa321256-d67b-8d67-bd78-8c9c6dc12f4b,2870809300,3850061409003885815
+9b9133b8-bc70-8b56-0ef2-9b722ee80445,3555162176,9166847629164303723
+e1ad0733-3763-836c-3621-04a2fd8cff4e,2495167242,3100804690021906184
+af167aaf-d25c-68f5-6809-019a61484ffe,1861329695,1524505615166331562
+a89ebcf1-1265-5766-8c6f-3e42108dfe93,1272422859,13504981414952994422
+43a7180c-b480-1d0b-dece-49cb0eb089f5,117413855,3180513429886954879
+0428e604-4c54-46f8-e160-670097cee1c3,4219558799,16360037753807215321
+73c512b2-b277-29c5-577f-91c487b64a38,3301300343,91205503330345171
+33a96ffb-094d-59fa-c104-ab405b4e7f4a,2726181765,12125230702127023557
+2fe86211-8459-1948-6840-9d0acd23edc1,3200912276,788809342054975378
+21ea1088-0661-f5b3-d0ed-b96b082b7d65,3102524494,16431847616786224478
+19cf15f7-5854-015c-68ba-90b4b147489d,2897847111,15404026267362626288
+38c71434-ad94-53da-0854-9f1cc16bed9e,3191146393,15549180886508810307
+90a13b5a-8fd4-7e82-74f1-fecf10d49e97,3914351486,6338906096361978434
+8b8bf4f8-75db-ff85-cebc-b07b53c263fc,347130338,6373664420786562059
+4f822b40-e675-05ec-4233-7efecafb827b,991830926,14684587065430348819
+7dfa0975-a2c0-79da-7f7d-23fb4042415c,2255573195,6037762619590555533
+eb5999a9-3a32-e4ff-3d6b-7bf9b284e803,3961743396,10866286595003072190
+d0739b51-2997-97fe-2eb5-72ce3dc21558,494344967,630530727201283349
+0ff8d9a3-939c-45b6-be53-e4d81efb4ecd,2483111642,14628455391123556591
+09699eee-eda8-b552-afbb-69a0d7303b6a,914717514,7541568725704987697
+5b461822-a706-96cc-39ed-c76538e49704,1489372918,224509943896796890
+25fdd696-ae99-1e12-4c1c-3138c4761b06,2815688960,13499610823769329358
+95b29f1b-ca93-9379-b8ee-7e1f24ec91e5,795986327,5290300900913955597
+18a49ad1-5ac5-24ff-f114-366d7944f0f4,3606324170,13349545531992099035
+c71ec75e-6205-96ce-c12b-19ebd9fee212,1627278755,9006517900673327932
+e0490041-8e79-949a-da32-6e8837f0f2fe,821494383,10570880804027350144
+5f265e80-cc29-54c4-84f4-8b2f23ee5f65,1031974071,14640579244275284469
+92364699-f665-7ff3-9ede-edfcaaac246c,37162478,8489008721191897616
+4ca1555c-ec70-ee78-2e4c-0dbbd43721cc,1302076306,10185643035083427834
+7d441b2e-e16c-c569-b216-835546e48a12,2260157237,3594687235475306553
+297b43cf-5a4e-ec36-8aa2-82ee506c96ee,4057135091,11359268274298786879
+a7a906f7-fe0f-8f90-46ae-f98ef4d1ac66,755508794,13468900809656817148
+42eda47b-50a4-d093-785a-b668b77ec247,1174175991,1707177562834697041
+3a4fc069-1c65-4a55-1798-d2a956e26bbe,1698157172,13017428015528150345
+50fb25c1-6d5d-cc99-8c7a-a60213518b91,422646035,4653633193279482705
+79062a21-a9a9-4f4b-20c9-3ef52ac94a0f,1842697582,4583659223194186621
+6db69d0e-fc87-8253-b918-b55939eb511d,2422294335,3216592145060110022
+a6e6ff5d-7f8a-efd7-f977-8d8f4621b51c,681587667,11687382752143586684
+b4c96d3c-2359-cc5d-d8fe-9e3ec8db3e61,366152727,3923557026179859737
+ff703b75-feec-6a3b-7d28-141e9dd5a23a,1421591301,18122186649021308708
+64e4e316-21c6-18ff-9273-462bdffed3ca,1218806270,9260315627278337201
+54ea434d-dc7d-4b33-3d48-b39906852a03,2950045365,8500175699718637012
+3d545cc8-90c0-1f25-d4d0-ec802547ea2b,2922243733,14874831591337351670
+d991dd6f-e21f-4ac4-dfa0-45374d517b99,153826732,3104715141316336291
+ed5eb9c0-84fe-b291-e454-194137e5780b,3693978368,18174552651512627493
+0f50a58b-4438-8e97-d4d6-48e5d362f9af,2503172552,6689795538544164910
+ff091fca-fc55-b9d2-c7cf-3bbec57a4c6f,912109416,1758321346416178187
+e6e8ecbc-c190-dbc2-afc1-92ad6a4e0281,1759593076,17104406926162281993
+b376c972-414a-da41-cad8-ad56b697afd0,588652174,9474425474114481145
+3d5f64e8-d5df-8226-049d-b258369e844e,260511800,4718662331498483724
+fe803cae-4e02-7fc5-0b50-c9b28480c572,791479261,17385988917465836712
+7b953de9-180a-a100-3289-bff0c3dcd95e,705457804,9610639792965980866
+0ba7689c-64eb-f3e8-f3f6-3ef137e898b0,303598097,945897756025509861
+0128b8b5-ca46-bc2f-b88a-c26c8151a438,803305992,5998433867283669634
+e0f008c3-4ac2-b100-18ef-9ce78619c794,3640003491,1015620962958328478
+2eb687e1-aa61-6f2c-b4b1-2adfdb19307c,2031768198,7836819638856138654
+1cbb1b06-18c3-e06d-f367-866052ce43a8,1845734279,8804287083934352517
+77eb46ba-f731-065f-c77a-94f637e9c21e,3256079985,8464005854920616614
+5d1c57eb-ad1f-ad09-7939-bd7e4ad7a72e,810077882,14776235712889544672
+c0fd9a7f-bcc5-561e-6949-6a8ff068f23c,1654323317,9300714665226336696
+a8bb6179-270a-c644-b4ce-88988e16ee61,3438961502,1323699084768388536
+e89fe739-910e-eb4f-8cf6-13ab74518735,117477629,2947178848248137333
+ccfb6d85-4a34-c7f8-7138-35de48bb25b7,890066750,3389451999952476494
+d3528b41-4ce2-dc23-bc51-fd3baf1e5781,3204743515,17921761748985260554
+a7aa2099-0206-15e9-5462-a711152d1fd9,1834482314,2557478180218944906
+61e8d17f-549d-1918-299b-c2c7bd643ba0,449412003,16768328013101339132
+0aa2b1bd-a4dd-d0f5-4c6e-87bf3648b108,786949592,9191271879399953127
+fd4ecf5f-39b1-7c44-bd23-3691753833bf,1562249251,13345627243353288537
+9f09315e-6608-1783-86b8-541df0c34dc5,1095714639,17597154590481013078
+d3a68687-57f2-5f59-8951-0a0d3a9fd7e1,3784455567,1897993387390949143
+8605a050-5b3f-02e8-8b9c-829893a41a6c,1097339455,6619427042456689290
+8776fd18-36f9-d34c-9288-b385c42dfa76,3888355307,18392661824739869382
+c7e40a1a-ee47-588d-4ade-e6373321eb13,2681751317,2717846201790690675
+54306381-705d-f152-001e-41907c958503,1152139848,16842156803257840074
+30776431-e57f-0ea8-2893-05fbf59ba1c8,3041371908,5295025633780575630
+171682a2-c455-6777-051f-511ba4cce547,1676599819,8923763149956848744
+caa492c0-5c32-7928-42b4-5922987d0036,1722270289,332919304405834154
+a05898d2-93ad-b208-2cf4-ef4311b2225e,3412181982,12870225341967644749
+eb41609b-4a3c-da67-3d78-ea271363465d,3130071669,16855106282647083449
+c59cd812-b9fd-6c18-32bf-14508e412fc3,1957013936,250192229749216621
+cd1d97da-3ce4-f38f-9e2e-5c41fa8376bd,3888809033,11731765498589720543
+65476b58-cbec-cd05-29db-dea7c91585f2,1962547114,4966438428591605105
+e2a1b0d2-13af-4923-a5a5-54c84e2f1a53,738511969,2553927495356988997
+be386eb0-e6d9-6987-9766-197e1c04ff06,2173051052,6984078562469475505
+873332de-f8a0-1d08-0592-d04ba8862ebe,822685213,520947112225154831
+2ce13203-0cb4-38a7-cb88-c897cf48f161,1740138980,3054984316471951670
+a3c9bbf7-ef0d-0374-50eb-22f25a1af0aa,4249082680,7033534412258755783
+5e89501a-c036-13cd-512b-1d9be7785952,4050363541,2200088209563336775
+0856bd32-630f-fe08-a58c-09cb53f99362,3984099971,6876595310886679390
+698f64af-4684-dc5a-d6f5-271143a785c0,60307728,6958491273258275171
+76ca5b73-032b-3a84-eb62-285adc0ea7e8,789490741,4837763409965745879
+63f2c47a-eefb-0114-3f4c-c424908a74fa,3094622393,5862850686768601453
+e72f1bf5-9912-c775-201c-20283704e71c,3384998307,15411737835454860722
+f61c2e9f-6ad5-b07e-5a3b-a3276cc0b939,971244127,7967214479868188941
+d72fec9f-e57a-1033-65ae-79073977ddb0,639858852,6138241592462922255
+e61218a8-dd75-0009-0b7f-bd566601a2ba,3601967003,15576182802003386098
+faa24be4-2809-a560-67d9-12cd411bd599,679767526,17257891582440454041
+8209ca18-1bef-27aa-cb59-d8b353156d0a,813530525,12905978465753747101
+712a12f6-2360-623f-7a5e-f13c5317068d,4222610943,14838483457507129713
+2cc03cba-c670-2017-04a6-acf3ef3d6f44,3781196285,5510149647866399859
+24254b63-ef4b-8f32-3221-5febd2cbb5fe,2042468750,12141898705514781107
+ad528604-19de-621d-b3db-85f5a3668d79,1035395441,12540534379044336446
+87b806b2-31e4-a1be-7af4-a2f54c9d7f04,4110151817,7649217720553718374
+1879dfb2-99bb-17ec-baa7-c5fc693a335c,2456998353,4975681130178438901
+bf3b9644-7eee-3757-6071-dbe89e3d9e3c,782591376,3954378078169329445
+d162bcdc-b65b-1cef-b0a1-c0b75f2d1ed6,1228229545,11157386755987906529
+55a159ab-e3ad-3405-48b3-4ed81bcb7b41,3237885162,6483120281326260252
+0afa06a8-5f21-b160-92f3-c1091cb0213f,127337923,13324995877481083532
+9cea9345-5610-ae32-3e6a-b23f54944cc1,3648543263,989079488298894034
+0f5313d7-a26f-98f4-30b1-dace8ff7aee9,4073507762,11208767277258632101
+172d9af1-b6e0-9b52-020e-d8b3ae03dccc,2168010366,2101730655361161134
+076ef303-5312-443f-6893-f586957a68c1,2686258154,6021542526617468332
+f81701e3-9506-2d2f-0b98-ecf3646b6c46,3772672982,12478784330329143228
+eddde5d7-0d5a-872a-a424-3f364366c698,1410704154,18157989380322172878
+aff97be8-02f0-32ae-390b-cd65d8d2f4df,722814125,2330417650850488161
+ee61df98-1f69-48fb-ee9b-9b34bc2023bb,1604313523,5131375340779150847
+e101aa51-6f68-734e-c190-bc6daf046e54,110276124,11292499094425283054
+e54de750-1867-2c5c-a1d1-cb2a10afeb48,2320728729,15975732852164425524
+78247de0-5eb7-b9c3-9e29-cd4e18494686,1236494923,18296234495407154971
+b20a6f99-b626-97f9-fe79-78c29122358d,2455270881,12645058634892901427
+7dc3e5fe-6b82-f3b7-eb05-10adbb863da9,2051242262,2260659324249307193
+dc65422b-7071-f28f-6c5c-d4a63337c732,2632161608,3777608693915405112
+b0fdf6b3-367d-6e90-b378-5571facb1954,426840075,12052299538878146129
+ebbd04b3-796e-caa6-8aaf-213947875f77,849211781,10816810509944381553
+430ce9a2-e0c8-85c8-f4d1-cc8246937084,2475864635,1871174237694020067
+8a5730f4-b0d5-e731-af5b-8dd21aa0bd26,4216752924,5028277103381307474
+3be2e1e0-9b05-704c-db36-485a8c7a2c89,779687703,18067271045269008530
+b2304938-cd29-a80c-9dec-2d6fd2015f97,224585087,15831994227475142934
+424a8de0-876e-56b2-1748-c6af3dc6976b,745919232,10669725568606569048
+8388372a-f436-fbc0-dffc-5c3aa6c45673,364183049,16488100133680356965
+d9486f60-9073-9322-f73e-ff5b553a81c2,4179263319,15054125682598383992
+54519d1a-0def-aec7-3e69-7123385424cb,3244884729,613731892087524965
+d9bbb579-128d-940f-33dd-0d7df8922248,1867621038,3106762364760871197
+e30f672e-20ae-1a08-1bc6-be77c77eb55d,1168592605,4957830237813619531
+a0ab8cc8-734e-4d9a-7b0c-f500ee759438,1639340401,17070185069357968416
+86b9b385-af67-fecb-ab23-02ee675d966d,3884728369,17218507910795270121
+c93dad94-80c6-dd43-7493-2a04963cb347,23201907,11976919137104522168
+32bce1ff-dfa4-9130-0951-c7225e4c0583,3310222415,7309743321370385159
+af5b9157-4da5-bf9d-0453-542602058ad4,2554422858,11201158708242728224
+98cf2563-ce67-f451-cae4-0afae29dfb51,3653810825,3366513008020974895
+ce47239d-3d9a-ab5c-5321-8ba20e772860,1468354664,12179371162979942041
+a207fd1c-7a80-23db-dc64-cfc706333474,1776450261,3535510606816427445
+7a80d25d-a424-fa0e-2b62-af32fe691446,2476881867,848973812678874322
+e444c1df-e4e1-4596-4ae4-9496bc9ffbff,1500963509,2531142891696242345
+a493b22d-5a8b-f75a-8d15-a9c5720ed603,2429519012,12447333036356875913
+5f555d5b-b8bf-2ce9-7ef0-9a8ffe9b9336,2629515721,6177701678732229622
+cc34876a-1185-f449-92fe-65de95d7c003,2542509152,4428534568181373996
+5386dcbd-8c93-e796-ce71-227973bff5db,973449463,8066288608289839698
+9532d0ff-419f-71fc-8f9b-002c59d13dfc,3431435666,11782686984722320486
+eb70288e-175e-f8fd-d272-3fb6c69dded0,654934398,15685702662836619144
+4589b0d8-5718-fc13-8c3a-c7c082f2fe3f,3622388245,1843483331455348845
+fb903e34-8f6b-40e6-c6e2-217e270a82bf,1703729068,10386658248872343548
+a61b2176-5576-025b-7d5d-ed6e5507e631,544417715,13457300564213318751
+89c32ea3-bf2d-62b0-21c8-bf9be712d11a,26645446,8327261258559424611
+97199351-5323-745e-2383-14c5d92b68f8,3708501632,6887817021690840745
+e422cf32-5dd3-420d-4c28-8909abf5343d,147563310,18158397418085308083
+1951afbd-319f-7e08-a88e-e61e10736a37,2467772303,13824102980207114393
+6d488305-15fe-1ed4-7203-a38d6e21b745,757175353,17757034668407207712
+ceb4b55b-89d0-3eee-40dc-1bbe4731be85,4002518038,6183286643439823004
+cd563141-a80d-6b41-2507-f911f7c99db3,1152832713,3130262429791795688
+594a424f-0874-d11b-aca3-738193ceea17,2140251572,5790809138531089751
+37445c73-67dc-f258-1833-3e0a82f5df8d,236849207,11638052686467411599
+6c7cc103-3125-7689-d91b-038a49034264,922125082,5738969675254893116
+12fad2e9-84c6-62fd-e815-248852e428c1,1541286938,14665851031487994395
+4b8b12a6-7955-39f6-078f-5eb62120b475,2183423037,7364627707130941323
+51fa8af5-464c-5ada-5e84-e2513a11216e,3339609810,3715964009961637445
+0f8ebaf6-e895-74f5-53f0-388e482bb3c3,4064816103,13539094114790979328
+8576b744-d78f-b4a2-a01c-25bfc43d2eaa,1423183867,14423244180393681016
+bc1dcdd9-427c-e56b-8def-ab4830b0db97,1895545550,15747873213155129302
+4fbf9db3-fd6b-e2b2-5149-7e9821cc0a48,4195043623,8382570596992478550
+2a175a52-c785-583e-2404-366641ac624f,177412791,5699913771407014486
+e96e5a98-84e8-58fc-5c36-4b7cb290e62b,3090222329,17255865286886588133
+a7730170-543b-8645-776d-affe0e3937ee,3255488732,7979940616259071180
+4edd6226-4876-072a-ebe5-cd37ba859879,3704402161,14596055765290980623
+9e7abedf-582a-4820-533c-597bb4239929,123291444,14270877247776731516
+37dd1d72-23de-ee38-bdcb-b1cbb0b9be58,3848904563,12373806576813376360
+60a8eb8a-67c7-7e3f-da09-0311d41a4db8,1298199057,12686983081058202750
+2f45f804-ea43-8fa2-77d9-bb7606d5bfbc,1584003948,17520864216614597268
+0d099a07-9f0b-f751-708d-74452aad123f,2916892168,4851168199136697082
+026642d0-1f5c-af4f-538c-d9093a1f364f,1353993756,15212060699921666662
+5c7978cf-ca29-8b84-a11f-42ba2c027a3f,1119591511,16213675366021955232
+b2385cc2-c788-d15f-d8fb-f4733c8abb87,727842317,16260622629013084320
+dc30158b-2b4a-1762-dbaa-f06daba4460f,2615269835,16945603838704022470
+fee5ad0a-1690-2618-4e90-4a04bf6b85ec,2784134454,1271155720931019139
+1c50722a-9e04-017e-899e-978abbc8ac8d,882799290,15623499224796795176
+83d6dc28-d69c-07f9-94ca-4b17f009c365,604291097,1079390349604331091
+3005c408-36fe-19ea-18a2-618341c1120d,2981783700,3065779531185562773
+89f8cb10-a20a-8f4d-279b-791cdc2b573a,2456225082,2313550759073228159
+1222afd3-b2f3-e2b9-6fdd-f6d7a36c090f,909481753,9801602080190460953
+ae98e7f5-6da3-a130-8107-fd9bf3c77612,3228477003,18331893239273608442
+397fb9c8-2898-c28c-3121-3b8479553550,303334060,9247589289198069357
+093fe52d-64b3-8c49-9676-cb75feaf930a,3154348587,1559529958765315730
+a3380c56-e140-0bdb-1cb7-7c5cf28c5c6d,2880543999,12852941859019555249
+159fee5f-a02e-d1df-5a83-2e695ebc6056,3518473038,8608290239496987513
+3ece21a3-84c4-3352-0c41-bea793f3fe93,2053136055,5263921853324595012
+45596309-50b9-17c3-6f55-b504fe159a6c,1623533174,16886066273223656736
+16eb97f2-a6da-7a7c-069b-48fea1e6031f,325133556,9527426750803168061
+42aa0eb2-d355-1937-a9b3-ba5c72edf166,4145139963,4071272142312946783
+f67c1ffc-4a84-8804-6214-b5e0d39b64bf,3255009630,12753213106101735045
+7212819e-16ca-469c-0921-50efb3b9b130,4185029590,13282611678886734495
+a2e4bfc0-8a0f-b797-9cde-11b6a465154d,1897433126,4619552528589069669
+92c139bd-029d-f426-9e07-968741285430,2326996819,9273508938844495560
+485d553c-fd8b-c093-fa7a-7653ed915826,1282270619,9957494734662533827
+3da0fd23-419c-ea47-ef01-0e5d65ad8553,836632987,14770423082778455143
+fd49d035-eee7-93f0-d804-67a037bc68c5,1103738497,14367271370446617647
+484ff8f3-bde3-d5a2-15b7-eda6f69b32f7,394700918,12026001769588370056
+3c6341e1-c2f0-2cab-591a-75313dc5f80a,1254000524,9041102679596535314
+fda9e7d8-3b5a-069c-81e1-e35bf2c2d1da,2638275249,10222784651745447107
+dcbf13e8-5bf8-68c3-d3e1-898cfa353c20,736849206,4635680527800759112
+c6175b96-eb5f-b65f-1922-92d8b644d862,1863453443,6060604612776073928
+6f307427-6822-e525-cfb1-4bb3d116e710,2692850946,15169247964340564191
+62fd18e4-4c68-2d0e-9e0f-438e51acd4e6,3358872511,5379254654789694328
+fff13152-9ac6-a99f-2154-6e78e27c1df7,3845157106,15112213291820726442
+7bb8528a-9abc-4d43-1e2b-7406d2a75877,1892919196,11448703063149693907
+82a28958-a5e8-e5bd-c612-881769710166,2950213374,17734372665487948062
+09e8ebca-d57a-5cd0-6072-1a1277170846,1554132091,18318859743963806340
+a1c7e73b-31a9-df8a-df3f-dc84f77073d2,3591536429,11089122121966319561
+0b88940d-767d-212f-5353-5ac70e4e4b0e,203030095,6477035732419280082
+36e15c0c-d302-60d0-f9f2-373b81e4eda5,1414431908,4001787579499508254
+c952a8ce-d4a0-a8a0-c44c-afde5713968e,114280806,9286293188427173393
+795edd5a-a9cb-2745-7a3f-efc5060dc315,2891188493,63223696193442140
+019b4e7c-c5c5-e4cf-10f3-c96fc1353a00,3618746197,723884710383365911
+1ea5ad00-af5a-5045-f2e1-b2ada4a86454,1085609006,17531378501918317915
+6df13722-023c-60a8-a201-5ff419f30bd9,3691793261,11478141419098351240
+4e767f48-dffd-f554-1ba7-ae92fbebbc32,1883093205,14676346444667093207
+10933c45-f6d2-08cf-2279-9e42a1a00f7f,3278612524,17351403947173334127
+14507824-9d6b-a2be-2e28-4bff78926dc1,3585536163,9419059329596412923
+195a530b-d808-fd85-9348-116b0f33cf2f,3966533816,16964509559643427736
+ad2d0cfd-4aad-d05f-fe37-a2278a11c1f5,2922041676,16218124054576888044
+3235e866-b0e2-93c9-bbb9-5568e2b0bf18,1343985406,18142449389950748518
+f4d3c703-3401-f122-27fe-9de27f3c560b,2347761249,55970459599799245
+1f28ed44-3fa1-386f-edab-64601d9b7807,1434143263,12911271010988357232
+6006503b-04fe-9173-f369-2bb59cdd8572,1415721789,18073125053518694541
+aeb20b0e-2f4e-2127-dc86-9b2ec9d3a5f3,3966080649,6351062796781416598
+8543a424-574e-5891-5544-5e825a9002bf,1147640786,16784866236076851840
+5da8e8fc-cc8a-f809-7d56-ee0a4abf892a,1080096099,6666300794507401420
+6e5f85be-a631-0119-d08e-446231cc114c,2488078239,7658876796047594361
+173bbdcc-190b-bb2a-1f36-b7347ef4e45b,1266490632,10574214687595931829
+ca4679d5-017e-0862-2bd8-1e6ad681b0fa,1095158366,6992256395558738038
+ede028dd-0acd-d554-e8f0-138fd92a4e05,3636176837,6483172054676099974
+0b8cff38-4a26-3faf-2de8-55525422e973,3060387341,915984149690769406
+671d4134-fde4-d8cf-8e3c-4534d2a9ff86,1773102816,8031798453816142206
+bc8749a3-38bd-a0af-bc7b-c211ddced7db,1055678204,8426622422601258767
+8571aa6d-4876-944d-adf7-35dd28c9c8b2,2256443586,8192181773328761506
+2efc401c-0c3a-2df7-8ce2-bd6448695532,678597387,5154363384908965123
+8e276649-0285-027d-074d-b726ceb03b5f,1777296513,4859083281787608625
+ceddbf6e-cc9b-85d0-df78-caa05045bdb9,618628118,12540194671353517885
+90131418-a845-919d-7d7f-b6c5fc3b9b3c,39336683,14848765685429790741
+9140e904-8640-a8a5-1efe-1ca71b8f4604,3959688254,9747368593996934971
+1ea2204a-56ae-5516-873c-4637c6ab3880,632987389,255352745365361212
+92e54368-2767-0096-02cc-291a1d1c18b3,3722755265,4430309787131549295
+15e6fafd-8bfb-2b4e-ef31-fd4a9988130a,2274598621,8417885812411649447
+e18eb57e-3a0f-d255-c6b9-8f6d8cf3e5e6,2892727155,6614554021872532503
+95bc9de3-c86b-826a-c36b-446b1be1f248,2946885287,8145601355577170121
+211a8ca1-3d00-c714-fc34-0a8eec9633eb,940537112,9152627401073655067
+a72197ac-fed5-f377-2280-52fc33a4194e,341369222,3872283208719083587
+7161b4d1-4cc9-7bff-15ab-f297a80a0f75,3188106651,7346930710243737960
+b690e99d-7187-40ee-34af-bdd28698830d,1050849549,10674449344185319780
+66e433f6-cf50-967a-7735-7bd196f4dfdb,4062600330,15227281349876894483
+33ba0a83-6096-9594-3bf3-c4805a0bc242,1911123629,14441768763685929513
+4d5054d4-5c8a-9372-2163-e922636b7f52,104605574,16598878205486637817
+48ca0a60-5c1a-c032-4498-97b1f6774b75,487454404,7154647567146250738
+d680db1e-8c6d-5a89-8008-5031b62e6b23,24725512,4673906732503360704
+d860b2ee-41ae-320f-ca9c-959f4bd6dc07,3044518068,1586116949050094190
+77943bba-af81-d39b-8665-34f4b7cda735,2599652577,503950483004342134
+6dc959ad-39e1-9824-5a4c-af94fdc01e17,1292119203,70662784845739649
+099ab9e5-f453-4e8c-74ba-a76459da1eed,3748940059,3888383206263135856
+b917b9ac-eb5b-239b-1188-c1cbaaa107ae,909361952,7268636585961813082
+3dcd3f9d-e10e-9af6-f5d7-e51f18a8bc40,1444243581,4140118644469990362
+2602fb2a-7e46-62f0-9197-13a43d8b1888,1700517873,2720258067441869677
+de17c44b-796f-cca9-341e-d717996b574d,711964956,10300609034438659552
+a66cd092-80a7-dd64-2fb5-37184f8b830f,103452417,14718232467288529089
+668379cf-5cca-ae48-e99c-2a36ef4b0f76,4048639498,3716568820660497500
+c5e6286b-524f-2fda-2846-3c8f0d934b7d,1520577075,14665898082441769151
+018e7bab-7c12-7ce1-0e7c-a028f63a0245,2935557622,18364665390866422416
+de033e52-a588-b0a0-0f20-63d92f28746d,131077073,18104730976136466027
+526acc98-5c2a-2854-83b2-3624cccc9a68,4071128499,16700089133874277968
+9a38a7dd-2b88-14ee-e05e-2cc8fe345f0a,955469467,16935961659015089545
+958ba38f-24ae-fecb-4be0-52f26d354dff,3736051926,2052736257905204445
+dba8b6ba-ceb7-17c8-d6cd-5356b11b1f9d,2499852603,4444443845760371838
+e2535ddf-73aa-57f0-7649-b657f8e87839,2955524862,15234210137936823223
+0b7ca730-546a-5f97-721a-a77aa1a75b1b,3710745210,15100573310897681694
+9c415474-3424-b6b6-4d90-c4f28f1577a3,1911443741,8110732369100513806
+c37e2654-f976-f6bd-f68f-3c84d87502e3,166762788,16156828257160511409
+014fc36d-ca71-60c5-0d67-70474b716673,2836585960,12384970881907234359
+6ed81732-fdab-e31e-9aab-3f39af00f2e7,1038473088,9769911922908380897
+3026b247-f56d-38d5-49ae-b444e7d0bce8,2271667804,7191721639139309694
+76629a3e-d405-615c-b0c1-80902ea698f7,3484409239,14409135617585424971
+cbc41928-2b4a-56c7-7adb-f067577f4fba,4203584967,12344969876887359608
+35ef6ce8-5de2-7596-cb8e-19236abdf1f8,423463276,6729333027333073501
+f24ba17c-63ee-66dc-bbee-bd77a9c68ed8,1227826445,1276848741797122113
+50f57ac0-ea32-d71c-da28-cadee38ba557,1065638695,2170622806625803991
+2158570d-c765-d47f-2a8b-8d7cd23ac730,2088918341,6477622476717259182
+37ea9770-f2ef-8f28-6daa-bdc6f2dd91ae,3715835427,7961125083234506756
+13bf282c-864c-fa31-3db5-8e4655d09b18,3425194314,14034055316160197380
+8413c517-a104-2783-8a8e-c3603bfd1b7b,3994818068,15796382329884299884
+d2cfeac6-9d7a-f1cc-60ae-2bcc1f1e361b,3195452908,15736066555633502996
+3a5c0a4b-c1ab-9356-f60c-0370cf585e09,2583989404,13867217296046628315
+8af206f3-f55b-02eb-4c3f-728eb1885b1b,3314160034,16053380152517627210
+e0024e28-a91a-ae05-9cfb-f4c1a8841ed1,3500220283,17519219085788565873
+ca498177-4762-b351-7878-757895bfd197,3740008656,5508796851639502103
+a3f3428a-5fe1-6ebe-f35b-e98adf0f063b,2467435375,2382541317576779251
+90942219-5adf-7e72-17d3-2eae8d50f87e,334780579,15160581548522748012
+5678db78-de5b-c850-7df6-f1c2bb5e410d,2350155172,2878810637974648992
+3da4a24b-e122-b3cc-43a8-2d94d455b5b6,1172221418,13292103245642131966
+44a5260d-5f49-5470-a440-59bac7d94b56,2519276545,13730992874504846142
+af1d40eb-2958-7bbe-c2fc-a5a53721147e,3557922977,12238014218006746038
+34ce8ea4-7d36-4c8e-d6e5-ff86164bb00f,3810969493,18220605620554149922
+ecae51fa-ba8e-8b2e-c10e-403770c17064,574425679,8498388388645873258
+b0620229-6788-885e-d3e8-554fcb1e780a,2262250919,16401369914726711098
+41bf1ba0-9ee8-83ee-bd16-f8abb80a3cf2,3536249255,10920682802697216627
+71fe69e1-9ae2-d1bb-e7ca-45cea2c96099,3065755207,18347218997508483221
+7073136a-cd12-4d8a-96c2-074b8f8b5105,345832960,16571089082612553304
+9176c14a-6dc3-05d5-3ef9-869c309d00a1,116258982,2392221174428242350
+c6a0a4f6-5952-03d9-1105-deb85a0288da,52711777,8930644796534932683
+50f5426f-8cc2-2655-47dd-9b37b9524de7,1437337125,9929915125176352539
+fa493d1f-e579-5382-cdfb-0d5b68b046e5,819908389,5253653633031134557
+3a5be853-156e-9830-7347-ec706ccc45dd,2905629726,685552967014468976
+60c5e529-5787-fda8-b02b-2ad5b66ef57c,311761557,1009883601900815359
+df18fd1d-e2d6-0c46-7a60-11fdd816ed06,582319711,8577005279271312883
+34a2c129-7ee1-65d3-d132-fb71d994be4c,3760274762,7258123878725838300
+48873227-b124-530c-a47c-065782997ed6,2088160948,9750271110472699859
+4cb8731b-b97b-27ee-a461-5217613f566b,147594403,3894223943424294593
+0790cada-7089-302f-db97-1d61507a3a4e,3049487202,1381708106301041243
+1733b71f-bd0b-f070-04a2-cc6d0c978820,1888032927,11738573806458986237
+1bbe153b-e456-3f60-e898-3a8b93d8b1fc,353209292,5998466704861333461
+d8c7c0a1-c88a-9bdd-7eab-2ab0e59f45a1,2320394449,1139282987888232282
+74f0b149-6030-7ee8-7b8c-a5201fd3d525,733714700,15490512758609998869
+6687e270-aa66-9fdf-d1a7-baacf86faaea,2060849366,5818681499848619605
+7629ea33-a1ac-c51a-7386-90fe4c8a1cea,1173680875,15651859213201161102
+08c58107-d8d0-7717-ab93-7f2664cdfbe1,364931256,3027588967448501883
+f704a7a0-eb14-05b5-8f91-1f9a977d5968,400803107,10717170969698788488
+06861f7a-3c3f-5796-e7d9-3b777a91a89a,3197711794,1416247854538758771
+8f8c88b9-6ea1-5260-9a13-409d72bb52b6,3884579812,8534828695640512895
+0a8d9841-47ca-0763-5565-46090daaef9e,2058142998,3973393204528533848
+28ac1c02-40ee-0355-f80f-abd01353592b,1696034925,13828175626585793287
+e0c4bc50-14c7-bc8c-1643-e8ec01c5d543,1040580475,13404031437464617520
+c3a900e7-7b37-03d2-4d61-d8410733f1da,4165268515,17034355624053769665
+6a2ad234-12dd-635e-238d-b416db929dd0,1379224443,2161702062444111798
+9d6fbdaa-1a4c-0713-bffb-e8e3bb1775ae,2147490066,16137344086806175204
+299f5034-488d-9104-9755-720f6f0842a9,3607341540,4495601049915402961
+88640c66-8c76-690f-0f32-316bdfac67e8,3458858822,6462721806737929100
+d7c51cb7-d388-43ed-8e33-154cbefc591a,3905709870,2323554503306541352
+e8540434-31b3-98f4-21d4-fd070d71f463,2815622875,10465395429933093193
+5b03d47f-78bd-b937-a2bf-1da1645eb6a6,2305827459,902144871638825313
+2d471d10-813f-1e81-d9cb-33e4cd025e28,2189132925,7330618174913707594
+93e5298f-99a4-ea0e-b277-ee62f9a1c332,2623559062,15173245318912192395
+7862aa43-6af4-e756-71b4-ee6bbed057a4,1660316240,4000251257226499065
+c62a2541-82a7-dc57-ca76-0c3971342e1d,3340109092,12947447047241332457
+28c7c6a9-5379-eb64-902d-c7b98d86477f,1838378641,3855107746622916982
+93256e94-4ff3-cfa5-32de-603ddb421fe2,332714155,4327878379288416635
+64967f01-6dce-bcc6-0c95-17de62e150d6,244800175,8201032931848995490
+ab3dc24b-242e-2619-7812-a28e2a0f1fc4,3640187206,11052862755195782813
+bc7a9f6a-6ef3-604d-584a-ec241c756138,45398492,17452113506024588979
+d0f11830-84e3-4ee5-add7-18edba9cc2c8,1727632022,439049551131406895
+6027eb07-c620-6787-65c2-9cfeb6e86d90,577587978,14980976625208257373
+1f269bad-2e0b-44a0-0121-212ce282d158,2768284292,16697366108117263194
+169e9638-4738-21e2-03cb-f8dd37efde79,4122388422,18207305380901618572
+01997817-8b88-665b-19c0-de741fe7b2bf,2554152768,15801690520403780756
+446a6e02-f79f-e09d-c985-64ee263b0447,2757488350,10841768579017755359
+de78a23b-f1db-fa8f-c96b-1cd0a50fff46,2991504428,8878633117301087213
+3237c3c3-85ed-2518-9d68-83cbce85e6c0,3647912637,7790701732140500843
+0c6997ef-9507-29ae-792f-0380da49fff0,3255482644,7413919361590866560
+5b099ab5-8baa-4023-0b78-d61338612946,817464971,4432503487480058800
+992dad98-f4aa-b202-78f8-335a07ed432c,3666485405,6802675597421929356
+34676fe3-535d-14cd-584f-ce7774ed14ef,2506587423,16889549903861393665
+f6a8bad0-723e-7489-796d-3264f95f6a0c,2288618961,17368135624552802530
+d4f3dffc-af34-7ee7-1e67-2a3d682d4917,833263874,12760333723157256288
+aa939ff9-fc87-cbee-e103-34157fdd8df0,785471691,6446333530643142298
+353110a6-f54b-e6ce-3a81-2d52fedc0dd5,1813831171,13081546049454393191
+bb0faa0f-7478-eea9-0b4e-59ae35cd61c3,4146500816,935928164986190338
+194c74fd-a8a0-898c-8b6c-6efc61a6396f,3022305131,18369545483617505117
+8027eb37-c9e2-6ea9-e9db-be229e90c54c,1563580326,10747568192884951511
+802b4bac-04ce-fd10-bd7c-44e471c928db,1928279597,6839394145134159819
+6c4f04c8-02e3-91f4-33c4-ede026f34abc,836243122,6973904539655338220
+e290aad6-6f29-48f1-8a78-f0fb6d4d1ab3,47568794,15873209535229826146
+001c82c9-1f47-73d0-af57-f5d6ce03c345,545469031,6508213773417795184
+95d35d73-248a-1077-0159-be609e6dcf5e,987128744,14027949168118262461
+e7bfaea0-b077-3efa-2c28-da40f72e41bb,4168759092,7401046622992827406
+6e9ad29c-aded-fd6d-03d0-ecec0cb9f146,591125932,14355625633005545813
+44ca18fa-1b5b-27e3-3204-1665f1f59f9a,3147891990,6484576889120637612
+597f04ea-f81f-70eb-0311-aeca3282d6ec,2384103879,10903717270504508066
+ddbe9e54-1606-4dfa-ffe0-6595005f1a25,2246345182,5147999738853389077
+a776d554-9c57-a2fe-4f66-a4241b6604e8,898855006,9921104341027763229
+e8e19e63-a50f-d040-dae1-176005f431bb,3382118712,2250288339837483418
+8fff3f7c-5a3e-a6a3-df0a-43576402cc7e,3192406689,3638096730510637410
+79487809-a3c3-ca13-5695-e16b98c17eab,4168283917,7438191780488126333
+7bcc83bf-6f61-818b-04b8-9056ecfd09ad,98385947,7001984673710011974
+7f0f3980-aa68-ba7e-18a4-6a4c494b8f4c,55484020,6980345647465001723
+85132624-f80e-eeb3-4585-dfc6245698fd,3758154206,15945401840623811696
+290c4b66-6564-d71d-60ea-86233779f3b7,1802279898,9110073675401136758
+a02271a0-5c74-d574-7a08-81c160f6fbd1,501345354,13045268062009236935
+cb383d7e-aecc-8f5e-cdb8-b965ca474185,2752695107,14544196451749922435
+ffd1d130-c2bd-dc7c-956c-6fd95a70af73,2082651110,5486024002145969039
+27127b56-e389-e213-23e6-9b28520ac0c0,226496886,17549433054819316682
+926c4440-7e26-cd00-02dc-6b3413121f98,2791981019,6545938147525117075
+1af1465d-8552-a0ca-88ad-4994c1b55dd2,3978552852,8911112892879921927
+df81f9d9-68ef-303b-08b1-f2ed3ced07ef,3201954692,4748649696281084354
+fe124fa6-9ca9-ac8e-5677-76c89eff212e,889886988,15486154284002219691
+cee4d33e-45e1-0403-193d-1424858a777c,2664165561,3757998317452659983
+63f31ae9-5dc4-21c3-2384-69126bab9468,3205149441,7797815977122246958
+6f8693e0-9162-adcc-c8ec-b140775e5329,849708663,993805485467785139
+4eafb0b0-2cde-4166-b14e-4b3a0a9df58a,4230209559,2512632060850714956
+ab472a12-6376-827b-cb81-176e108cfbc4,2712363728,9365933901360151839
+7a194c99-1024-f68d-37fd-903aa1b49f47,690492912,17519214126856464062
+82aeff89-130a-ae8d-ba6d-6eb92243d94c,3305507854,4957116937750818123
+6fcfbe7a-02ec-08a2-6974-5111fbe2c962,46578992,3319377806385301030
+60f7fc94-7c14-5c7c-6abe-f8cb1118bfc6,3150321385,2212309858914193488
+b925263a-d800-6875-a76d-a4ac74cd973a,3918690096,3688299820534086816
+2907b5aa-450b-9727-8c93-01a4e15563dc,4056443903,1969804573704612122
+59a881ee-f344-a268-1b71-ac23a028af54,1988128350,13073622083194664691
+1563aa8c-dcfe-0c05-6f89-02ac2dfd59b9,1592973792,599204531916367148
+afc84715-e09c-040a-9d79-eb899b417182,1005080936,1414717967664912423
+df2ab116-6eaf-07a2-a6e0-109b3bc7a2ed,3277090943,15286713237808638125
+8d5f9880-e1ea-4460-0e5f-5a31d91e2007,265582257,11309370738090910906
+b309afd8-36c1-2911-4a45-229e48449679,1421765367,4163723332493410502
+b0c44607-7e2d-078c-889f-f994d695221c,4212805415,10707147831285519782
+9e8285d1-f992-8b10-8ec4-f4da92ac00bf,2638725004,5267255063882144183
+78651c5b-4b69-147b-0283-c9d510406b97,1488009459,17687326831234474590
+79dc6322-6a3f-6f9f-13a4-3c50f8a46878,2610355849,5929799850601619022
+677a03b8-3061-8407-434d-4c27cf5a3365,3177834290,1585486991179875722
+14e8c158-8ead-862b-438b-b075225b1ca9,1730193824,9154876655896937171
+4f25feca-8c46-ca57-89cb-a9191cc3660e,3002883982,1156810561667577448
+d53cdc39-5ea8-0ad8-9e9d-90d50fba2597,2642682484,17430839017335953392
+5eed6e2f-6966-c62a-a363-448daa12f468,3341062424,3505903591229031499
+3d0dc6ef-df81-26d4-c3e8-d4419d2998d4,1626367477,13903489048426858714
+3f124682-d442-8ad1-ec3d-3531ea06c7cd,944220335,7645668400219765178
+a7d8f88b-0cf9-cb0c-3cf7-4568a1153126,3908068770,16250551492608598660
+ced4c4ec-ab41-85ad-37e9-66c23942d26f,1777504229,14329887983639310961
+5d18ab65-ae6e-b5d7-054c-83d255c66065,3534931478,9914818284081842728
+60ad0ed0-30ef-c1e7-fdd6-8eb2bd9d970e,4286227854,11534459741995041736
+c8268ada-c4da-2405-3544-b3ff1837b532,1870663437,16807459885876097597
+17811f18-bab2-e185-3a12-e7df08090622,1867296407,3375147616012628770
+e634102a-c458-cda9-e382-bd972b28f1e3,1531035043,13678528244253821372
+14db5012-5b50-d8f8-5274-3ab745982c03,2954827759,3249338794643751673
+f0b7d5b3-50eb-5524-01d1-cf979733a952,46349107,16801207040040779891
+e20df801-816c-9e84-c7ea-5b2bd30513d7,60759095,11754783214030517120
+1e903fe9-1129-fcdc-c0c8-da64bdaf0368,308169863,8423218041968590099
+6ddbd0e5-7200-aab3-4d83-db37f5819a77,1567625794,13609573000239181169
+d7fc6576-5713-c078-8dcf-411a5bf003ca,2077569757,11435601097434255172
+d98056dd-dc65-8b06-c8f0-2b8951c898ef,2197025620,4129515747862037897
+33302e6f-2bd1-258f-342c-cbf77080bd3e,1849733904,1212050919988662438
+07863a25-0d79-b2ed-b816-f1bc4a6828e6,743031533,6168396348073888406
+d094c5e3-7a7f-6184-2193-9a4a3386abc4,4043880825,4823279057832693202
+8565253d-ff84-0c27-e035-b02c1c50372b,3350638395,8355908073907661238
+7798d5e4-0f46-045d-c1fc-7b757a950b69,1354427931,2612411233733943627
+92e45733-3a5f-85cd-1cbe-f09d186791df,730129771,10344387742923776088
+0157c0d2-8a33-b07e-d2f8-4226f22096d1,4100847365,11387577345204219810
+32327293-040d-7511-86ab-cb10a85e63fb,1681729567,13579634127828906940
+7f4f9f2f-aad4-db5a-63e1-0fba588610d1,3672137370,9524917236072273229
+9880788d-7340-8a5c-e66a-d9032c207496,1486677174,11296328549186335590
+7414b9b5-447b-c665-5a52-8d25c1124e03,4185945266,17049735150673060341
+46c788ba-0856-5166-04e4-1d8b8892bfc6,1275705907,11660553420265342465
+39d4fa51-5f6b-cc78-94d6-47f63a200101,1084940702,8314430682187279201
+386be38a-9dd4-4c41-0972-72dec9ab47f2,1829043315,15048428159378562712
+08e71df2-487b-4463-85c3-c67039579aa3,2565727531,6565757636246843102
+03ebc5a5-6519-047c-9900-d2a6eaf2e516,2741693614,3318456356162446266
+f17dc8e7-0716-24c7-a73f-bc124676a085,374853399,5967106586026530837
+572cd9cd-1e89-6049-040a-1e8312a4c396,2253022144,13501253632216990597
+de260ede-8058-7738-c228-50011408b2ec,747326879,15631032635431050857
+735f62d4-4592-2e4d-4e7e-b3fa277fe0b4,2445267252,16720025961663744772
+66dfb839-139e-8898-6b53-3f6d188722de,3613186328,2364588279305635049
+1456b575-c3c6-53df-d0c1-e598df344770,2775570170,6627630721275654922
+58ef9434-3609-2f16-06ee-3b1b41356225,3054454579,16624755490638563605
+ea3b5713-6b02-704b-094d-9a99058d3a3d,1841005483,9983260242124538206
+5cfa6459-a513-1c17-7386-a88b6deb53b4,569214694,9960815208102776907
+b351992e-663b-14f0-94c4-7fa691250c2f,1475829258,18236891839541638361
+1131052d-62a8-cb14-814e-85ede8d78c61,3161311331,11166792191267691825
+184b9704-9d66-f848-97bb-461fdf441578,2523570876,6676768423303299520
+b727417f-c4d7-0b34-07f0-d17e15ff6136,36256410,13308893678623227336
+f77bc8f5-3d78-7ef7-e05e-15e03e833660,4189056519,3467756160267686358
+9311f46a-83d7-4be8-d87a-a1270b72d2aa,2796456197,2065252642510940304
+c41a5b8f-2491-6102-ff49-4c69279e66da,683144576,15145591322277762773
+bd57fa6f-9986-0292-cd88-c06a55dacd00,415947850,13165139137549268478
+ea7b65c6-0ba8-67d5-af34-e8487ee87733,2796742783,5667421448878595344
+28dd0376-8c20-f897-adcb-cd2385d9a39e,1596616004,18014968529690227271
+574efaed-6cfc-23ad-0e95-51cd2592f73c,788115562,2025738575662626731
+c91172a7-8521-4900-9048-1797f4f3c49e,4079988527,1830043452780594561
+d408c453-352e-5ca5-4ae0-26638d8c7566,2755876251,8825592531416503391
+cb459a8b-c61a-bc53-537f-95864c74f789,950708319,10932207394163782676
+9a528a93-e68d-a133-dde2-a91fbe4c2dd2,2410703505,5545267765121002693
+ace9c910-6d31-c1e6-ef0f-bb0791166569,3782506819,13663387610054205077
+da8e2b9e-4659-2898-1f3f-538a879c4ec4,2865729360,13230175934021264769
+2539bba7-f816-6a96-a9d6-d4013dd71669,760933542,18140900374073726605
+a9883c2f-d3e9-9468-fe15-fd35d8fbf673,40510591,14915694027012139264
+44b54e7e-e843-5168-92c4-3f9620f21f97,2259078917,2232006489600432335
+6b0ad166-895a-8744-aeee-434b4ea0dfbf,3469247652,15004723335240776
+fcda66cd-6b67-ec16-90ab-933d39a0b737,3910482241,4417491786866119178
+fa7b3481-7315-a4a1-507c-1e577e431b79,3683355265,472226516451113402
+d70df00a-edd5-466a-d29f-da9dc01cd51b,3114392453,3075512699735912484
+c8bc6658-dd37-6bd1-ea97-40914c28c511,1515299670,18206602879918011896
+6ee7bc8b-eec9-6957-ab20-87ed46b47147,2586820156,11027415892254284742
+32fd4104-08a8-28ba-3278-78e6382eda4f,708322871,8793555582734059453
+08f33b44-6704-3ea3-6edd-d1307f80c4b2,1783038236,12193621744114817426
+0e839e0c-11db-0bfd-7468-75655bf390bd,2027082238,1874073886355019275
+a90815d0-0d82-698e-b63d-8efb7f16dae4,39275600,4759540454484275691
+c9bfc278-d5a1-50e6-9b1c-4e13f7a5a619,2776637772,5394238475328070635
+3c089585-60f9-55d4-b410-b610e2025189,1590192874,17876784296465666109
+56282a87-7c7b-2b09-7c75-dfe603de008c,417088620,4660141026343788278
+d40f3973-640d-be82-f1fa-2143b662c52d,323949462,983997309033714153
+951b992e-5415-41c0-e466-6ce8325a4b5e,1639856159,14554431167386476820
+923461ff-9b3f-c225-c8dc-eb4dc50a891c,3941906483,15515221343245459078
+aa779eb2-f5b4-9b35-501c-18fc671e2496,1546168252,18169310784639088873
+796e6546-2401-a2a2-4cd6-f9a6d39b5983,3187001398,11860808627267186002
+587c19e5-14a2-1d41-ffe4-19470efb8b86,1172900322,13449273720376249288
+46bbb716-df2c-d924-70e5-098e6c5b91d6,2531911234,16868795235816012942
+c400e3f8-cac1-f302-177d-d92ff8726db3,2161756104,15558382978146740977
+e61d7f86-d0b4-4d18-b8ca-51a3dc4130ba,167960157,4160652538216992646
+d1c052e7-47fd-c3cc-f392-9124b4615d0e,94096165,4512083820036800465
+41e54478-5ae3-c9ea-8233-718181613da5,1332814274,1947608186832235088
+ad52a4bc-a83b-48f0-24b5-15bfbf5e7c81,1030433169,18080494779874095855
+7c22478f-7ac1-079a-b0fc-f18276dfe51a,1947213260,6964988064229756632
+ded56579-6ed0-8cf6-d6b9-8ccd2c7460e4,4091375823,1963536405058003934
+7bcc6cf6-2046-5c2d-b983-7a8f2131b7af,4104922510,3225719795271034331
+91f26d1d-d451-2a24-4db8-95e2d10698a7,2186020143,4308589874930027242
+3071b1d9-25fd-e4a7-1dc5-95a0337ef9f1,1322747374,8454275933701985822
+c31602b3-a570-49d1-ee44-02b670e52a9b,3262610375,7741103490989812460
+2811798d-66ef-6e18-fe90-ad82318a4a9e,4131234332,15736634898934556374
+e5e0322c-5499-58e1-3fc3-7ac423fc34c5,1732311953,14813624910698728493
+80361436-f960-633e-b388-6f4989f33e27,2605041580,10827210585637995551
+885e66b9-9630-21c4-0741-09a18d551c23,2334600381,7101350574389374312
+6314ea71-b656-5623-fcf6-384596968300,798894130,15977236950840520067
+5d5b34bf-6b9b-04f0-5fa6-304d2693ff8a,684297790,3566106081010893472
+02f0e6bf-fa6c-0806-ce33-8625469b742b,447814072,16758984434922483737
+de39e707-903f-6615-41d0-4aa63f28c0c7,4002805084,17697417265725870284
+8bafdbd6-a954-0c0e-d8ae-0d070e3c6668,202578138,2486950413493103255
+7de43f6b-d4c6-6a5e-d7bb-08336153bbc9,934666457,14291210643196933252
+f99a93eb-a307-b37d-1dc5-a31183495f89,2691137559,2663378328790472406
+806915df-24c1-0c8e-0b92-950c0758e9fe,1723956770,8555819053450879748
+bf0757a1-845f-02d8-a1a5-d5301b7f0e0a,187582086,10816201101780152518
+0b277909-0b8d-f328-aecb-7af92413c556,3176543941,8057235148299760228
+be51bec3-3454-2104-428e-0bd9e3eacc41,2749425873,708787947799331659
+3b62f2ee-875c-a22d-a767-d1a9ec1791db,1670474253,1538149276633390194
+c818b489-c618-95e8-8e0b-c4b94f071ef5,1299047869,5712986424211335067
+5571401d-4c88-9a7b-34d4-4015dc22fafd,1477040675,3033568783298403981
+3f7c612d-3e01-aaa1-660b-6392e5994145,1985007535,7243267258492752027
+42eb74eb-9b0b-71c9-379b-9e0546e65b35,3476155909,4571714490657147585
+63940a32-e54e-db02-9578-b830fadb52bb,1893913656,16288738165964539750
+4fb5917c-8e5b-aa74-927c-b53a9a49e5bd,289929669,16033714623111441315
+b7364e95-b160-8d7c-43d5-09ac310bc8ce,1932486806,3359920619572205223
+bed34d08-e665-649a-5100-8e6dd0f4f512,3292231089,18314852173147621076
+d5aeeffa-0dd5-13c1-f879-f6e251eca7c6,1860428566,1793172060016660485
+4ead3f62-b023-b5d4-1235-56e94d7deae1,290866986,7109938178089325807
+716a265f-373d-c7bc-82e0-5805f6492392,456562519,9112518306403660334
+7ed2b8b4-b184-3336-530b-f07f341a88a8,2346634860,996749380186473549
+b5c1fa86-574a-e279-1f92-45f0ef5a874b,863698235,9654154601737628986
+1b184df2-7f47-64ec-7867-47dddd687376,3053490907,15494183900546679812
+8602e652-d095-3d9e-40b8-5579586ab96d,1939737520,8681930280770907632
+41b36a55-c7f8-3fe7-4368-29aa4cc796c8,405815958,5584673624969258181
+09615fbd-a498-532b-36b8-ca53b0169cd4,2905723843,9636270018723960253
+5cc4637e-1340-bd4d-3c73-37b4c2f15c53,663110212,13324211943063411224
+d40bb8c0-8140-4ab4-83a1-7bb1246f6841,2745465719,1940886294283322613
+23670493-7fe4-db1f-5429-69e8235a5914,763952509,13555222798804582795
+e3bce5c5-ef29-270f-19ed-ed3ba4a60b66,2020180971,6336734864454096925
+002ba518-0947-eaae-9210-0aa20170e24c,3950840999,2424388561248839966
+1b698f04-bce9-2246-5a43-7225b957eaf4,5331110,10681944634336262129
+a085a213-f15f-f667-3754-889ec46b1a01,2401751072,4454303165477022986
+ac47da85-f292-1cd9-5a71-6149d87cbe39,3576078669,2957449647135194084
+a2b29e9c-a1f0-7c7b-cf1c-009479623463,1340304016,786010800726449511
+b63ad7c5-f17e-845c-f1a7-3e6e8025a8c0,2923721873,1913782800754926879
+8dbb9f98-8e85-de63-deec-f37116d2cb37,1506220682,691719524740730751
+215d18b2-5935-b348-707e-f7fc2d1a13dd,404504928,12725423772040690746
+26438715-31bb-7e5a-1926-fa8ec8876926,4247489892,14014129159002720807
+39bae31f-f4ba-66f7-52d0-9d1ed5c036b4,2400917485,15036181815538214485
+cf978c69-be4c-9c91-e977-f62bf0bb8942,636005003,6972995382865593836
+09d3ab29-44db-e2af-2f4f-c53c79750c94,3975376830,13865374801198088540
+693d00d0-4cdf-bcda-2e2b-c554c8c5256c,61152553,3135515020518387112
+1034cc4e-4782-d829-4b09-4322a7ba6d96,2715318276,4248109548764335382
+485f18c9-8f40-cfae-bda9-3efa8dbfba14,1407776792,869673649034748600
+8e3e37c6-e604-4d9b-1e16-2293062b4fff,3119681667,8884132319638947135
+de083344-8354-606c-a44a-a2010ce218e3,3476388710,12358108821133833102
+673b18fa-7195-3643-e8fe-df883b602af2,2503072649,4143126907506906092
+0d5b38af-6c17-f41f-2a25-484fcacd8bc0,2358010365,11824603115753704900
+4131962e-6c6e-711a-816e-e43b7d2e7519,883969518,4772588254843440797
+4d45ccee-bacc-0db6-d35a-b778c1952703,425346751,12832961209212765584
+c361baef-6a09-f560-8e2b-88403f5be01f,3618222317,5510543778981730519
+56753aef-17a8-e987-878a-21b812d3fbad,4218611889,10113267498325806899
+25c46bfb-401a-e072-f719-5ca5d8c0a5d9,1762253409,157911622781867885
+62fd864e-ab52-21af-2312-e5c193ea7149,173708529,13360647913093472301
+ff21fb14-d7ef-9898-6470-d9d84ddf1cd7,1648441084,12081571148733749521
+4c886416-1fb5-5386-1d73-7b48595f24fc,1614874335,13809655872306285960
+4a79c54d-cb0f-a843-558a-84422ebd74a3,3151243962,15071195070510788911
+7679ef80-b0bb-f5a7-ba47-c6ad5f511090,2125596469,14235210039382212889
+17a540ba-2117-77e3-70e7-a928cbf2b7cf,80054807,4079653674484941670
+8faae95a-8e58-daf1-3d4d-197461cb472f,390808660,2065009957187598939
+f0dab46a-6216-4ddf-b33c-8b86e75abb00,718484549,14824535457241308210
+d732fe9e-4a32-a18e-6f12-728a12985807,2324295154,6759561804802948228
+0a05182d-ed3e-a142-4012-08ee1ab7d2d5,276679799,862632171136592880
+e5222fbc-047e-65aa-7df8-3e91c1d789e2,617899874,1224434362047379412
+0f8a9250-99d9-fd82-18eb-40ccfb5040ad,1823970366,11688312607513908837
+6b783b81-1045-768d-9634-255c3fefb446,1672632513,539097520418889003
+8d2952f8-8918-98eb-509e-cd523a41f0ee,4279206200,11711321449491957190
+a6e4ab9d-3c7d-f6d6-164f-1dd514524ac7,1538039796,11774137849208570566
+49b5af56-3b6d-53a9-e510-12a84d54d7eb,188613221,16894907723008217332
+5261dbb7-5c40-e1fc-1bf0-4edbf2d63936,1332281267,8618893940119955524
+3f891d6f-a217-213a-2b47-2fdf456d2a79,1683760395,13486042971591731678
+86066dd1-b536-06ff-8dab-8e060b638a27,2665768953,539902234072232378
+6363ba68-19d3-3b46-b1b3-267c82be7957,2545960055,8670658419494664964
+50573e29-a364-f0db-73c8-163a568e4951,228211172,14090596755869957208
+d73e444b-11f9-4e89-73ba-ead78ec535e1,2685423866,2841642887954467348
+0432886f-47c7-3ab5-451b-6084dcd0e612,1688217958,10322868986284867560
+f6debab2-200e-4769-1e56-fff58a29e79e,3338033972,10287821836076424129
+e7f42e07-f8d0-b220-7c5c-eab406d3860f,117027575,273364687606071032
+028b25e2-1f67-f137-d9a5-41910bdbb63f,3784187138,6597409964430596803
+3f2a7ba7-185c-0a1d-a43c-63b42576ed37,3922168391,2493842613049421307
+22aac82c-deba-7464-7295-af4e985ee7f8,1247239977,3875493373199880333
+1605ec1c-af76-b7cc-4887-615d856effbf,1369912379,13060814813235856208
+b2ddbe01-6094-6f31-2863-f98b1a86a791,1836545504,4076618340242212423
+71d4b9f3-3238-297d-085c-bfc24044625c,3720824477,26989769360369268
+6106c86d-ca62-a597-abf2-f2c99284b4b3,4197599704,3293045858183615456
+ce9796bf-fbbc-e4e3-5b47-c61f04101a00,3229134657,13415579314191297250
+82070d6b-b567-6c0f-e9e1-3f279ea724a5,4167361648,18009976879667725160
+6387f944-c1f0-cb37-5906-7a160c5cb89d,162322448,10236534633332224750
+dd22a198-b84a-0caf-12b7-41e1e6946c9b,4258493534,10104760729470439735
+42031481-95d7-d0a0-be1f-1b9a9f246083,2470040089,13734904790408551553
+b07e09e5-a4f5-32d1-4ab6-0df168aa9d97,1502864728,15571846900089340915
+b90ba81d-300b-1d4a-ffa9-b55d5aee11d5,3615465716,6235135105606885585
+eb989b58-02ba-1a92-fddd-1da5bf40d991,370732737,8771175246393013694
+fb4276f4-d6d5-94ce-6ab7-b209ee2048bc,2905323236,16094950750933053910
+0f7b50e8-e8b0-6e73-3204-d74d48223ed1,3734744336,8665626647704716707
+ad336bd9-d566-f173-df80-ecae10768660,419318604,8361035705936175020
+46710b1f-d34c-0241-8dca-1f3049b8c121,1315942362,2256308812537908924
+736acca9-6bf6-b74b-c0fb-daedc4e41244,2288588673,14576122048666075762
+549e45cb-09dd-a14d-0b90-7dcf97160131,131806475,9904156421775432472
+a417e2c6-f1cb-2bec-7d8a-1b98ef9821ec,1254620150,4166852083575566898
+09a4c613-cea9-d598-5231-c4709088afb8,3132797285,16327246895194150456
+0265881d-675c-8293-bec4-d6a58706d658,1030486601,17679464554711706642
+67086e7c-64f0-a2b4-d2ae-b495f032a0af,3278782569,9246319174154380837
+889671ea-65d6-0154-d9c7-00ae87b71422,4202137044,5316930120184689897
+525cdc60-995e-a804-9b9d-5aa242582a37,3847743573,8138295061174390566
+15696cfd-37d2-0192-fcae-84beefbd727d,3135140339,12900198581582612049
+d7a99c9e-68a0-a82e-72f8-3e30d0d67f22,1811495433,158381525464026184
+571284ce-4bf9-1b69-61bc-d6267af3ed12,1468288603,4212541673710745407
+3496598f-442b-4496-4bf4-9ae5f0b92982,889036240,17805353481332246996
+43e97598-057f-487b-97a6-cff2e3eba1ea,3578289400,14500190215376746680
+bbb9d19c-6926-b32a-83d9-ba6d4cda2fd3,2165557453,14588192169349294767
+160a6017-8284-707c-ee0d-81531b8edb05,3346305039,8580985868160933154
+b665d4c3-aae3-8f88-dda2-7495e3205b69,1628181127,4899450087317287848
+f38e1c13-455f-3870-0ccc-5e8a1a066551,1037256119,2978894365332280212
+cc86efa1-835b-df40-6ed8-6f8e07ae2226,4088898387,9044536337800471804
+f24f174c-8be2-e427-1cf7-23749730ff9b,2207109910,16188820472531355062
+6c67dceb-fd8d-727c-33d4-62c2c705f497,4234637922,12945640861234889441
+bd44bf74-55bc-8fc2-94f6-0e8efe72fa27,1780722389,6966196006945697998
+83c7f262-bc04-41d5-783c-aca3b73e2d4e,4287736462,10471678316912679578
+3058b83b-b1f7-5f21-310d-fbf542f39799,1366141073,11815973651026232601
+6e25fb7f-e557-b28d-c527-18d62d588e92,299473453,6089638988413002597
+ad92d590-142f-a894-e29e-3349b3c5e7d9,2666305328,2229665113968376280
+1d661970-5855-2f23-4418-c64adfcde672,4224028964,12298246634381814294
+b284897a-cda7-17d7-ee44-69ead7f580ca,3330588056,768961212047343224
+2633c541-7a97-ac18-4c98-ebba276fac42,1759454643,11960531244065938876
+42c3b895-b905-3c9c-86de-956cada1f469,3160361386,13041852370189968238
+916d38a6-7a72-386e-b67c-0cc812db7da0,984999184,15042060365432306112
+08439655-92ca-c9be-e23e-0321cf899655,799880702,418929715403824232
+6a69d125-796d-820d-9f83-84255039a0fa,3025502875,10802095719123092140
+508640ae-6ae4-8ba0-bed3-f271888a8769,1821367475,4495839458789412870
+01a9173a-da40-a443-703d-e2f3a55d845c,385532673,8180087391961338836
+666d1b8e-4be9-1e01-a0b3-38909808cd2f,233671220,477540638334902013
+61fd861a-661e-ca97-90db-744440f8f410,352557154,18181422014839343412
+cb2276b7-9fea-fcfa-f0c2-d14ea97dea29,4267764600,7819764407235389375
+45b3de09-881b-78d8-b1ce-080be536249e,694473239,9844859177051716145
+e2a26afd-9629-d428-333a-7298bfe55fb0,4089143280,6606396245033763793
+f37a5cfb-7346-20b6-b613-34a66fa0a3f3,1792258505,12723774667337804112
+a8a3a9a2-145f-36fa-f009-bf8ba4bbe71a,3354311727,4059515473060315058
+bea3e5c3-bf5e-2507-72ca-ebb047736848,1451506287,6288435606192628859
+0872af55-27cd-16f3-74bb-2ac259555749,1328216870,9080076918732158493
+6c4fdc3e-eeaa-6ed2-2c7e-5e5337cde49c,1527253847,10605970366154378665
+8f01d0be-021d-7526-a6c2-30a4a82c4d4d,3380496876,2386512427810636450
+65b378fc-6a14-f2dd-0a4c-c830eb5e12db,2119489639,8149104022116022747
+e7239b05-8e4b-5a5f-6bd4-6b52a31b2f65,675265589,12847904465916804102
+5ec2eb73-267e-9ff2-fdad-1cf90140bcd4,942840644,4098264194488737758
+9fae7852-cdce-9a1e-6165-00eb03b8eca0,868848202,17482874110412559479
+e6e467c6-7431-6c50-e0f8-4704b288e49f,861312374,9494630048963431238
+7443f324-36a0-09e7-18f7-8e224d01081c,3232674546,6986217496084540854
+2ea92b5e-61e8-1f51-2a1a-d8cab590a747,3919423586,8893785899911625225
+71351e40-4fdb-7e11-f99a-7aeaedf6e7e6,4145387117,11171860062983306189
+d059f2d5-efc6-7c2e-489b-9c37c871f86d,498182643,12691833003683231440
+4d52eb31-d5c7-58e1-aca7-607af5871bf6,4079519615,17111686843795498610
+2d2b9897-9acb-b1d2-8cfb-439f17894a60,3733705303,607803400318368787
+7d792139-8432-1307-afe9-026b73da1c12,2862861377,9982092529847895005
+14d5c9f0-8647-4478-9665-da61182eda5f,3030550479,5559031958951705230
+6cd32a5e-1d7a-81e9-22b5-2957e742598b,3270108388,5730410126031249496
+8c365a7e-66a0-3f63-4fab-10839bf41852,505765161,6404975364526090559
+90587600-f210-08a9-d5ce-1cdbeefc8fb7,157469068,6072329924842281431
+32ef779c-1aee-6327-abe5-811e9c85c43c,1327068449,15325845598339791475
+b2fb4782-6043-fb9d-3012-33aad4a79d21,2967795620,10921223968492535953
+a09ca5ad-202c-3d8a-e83c-0b109457a343,2641126283,674805026559133973
+c5eab1c4-55b5-9788-6219-c0f957cfd26b,2614105760,2540147594903436789
+689ccb49-fdb4-a35e-b046-bc39596d7305,22478067,4933077199535846940
+46af5643-e6c0-8cb3-afcf-5e6e68471f1a,2152405973,1415191835545321789
+1e48fdb8-42c1-c680-cec6-2750ea552714,2788311204,161156556253181648
+9565a6b6-d275-8606-1c1e-3b8793bca12d,1331806588,14761402444311804334
+f5698831-cf49-07d9-525e-f9c4615befc2,814069128,17572412721233457868
+ea8d58f4-df52-2692-c54c-eb7a86c9834b,3999467483,10472727463072880069
+45638e9e-dd56-476d-7b88-c60c68cc0d36,3791886690,14295400079567166969
+c909b115-f4b3-1a9e-4e80-912277c25556,710795081,4405026830473553260
+371cc81e-b4e1-75e3-8358-9a36211577c2,3770354202,7959079988432917667
+4c2e3059-8d3a-7065-85cf-c4d962f2810a,4037488854,1175190911527145267
+6f3b271f-b4ee-5d76-691d-b9ae6dd1af1c,2953549678,5529862044307116801
+6a43232a-1657-ab00-c132-802470513c61,188459980,7568946345820048972
+59fec7fa-46b0-02a9-6e68-f9d2542c8b32,1669885367,9677250908250189219
+c212ce35-d35a-ea60-d018-e20d620bcf1d,4176984148,584186677176188574
+7c851ec4-5732-9599-82a6-25868c312c43,1536235653,12729029446347451434
+59cc5116-ab55-7a5d-58dd-3cab750d4ef8,3856141852,1195745269538247751
+a7c32f9c-0523-e6c4-3532-5ffad9fa3c34,2019399431,3475163193884289711
+d0537311-2390-edec-cb4b-ba84aa390e97,2465331607,11617614701260167446
+8a7f0f24-dd95-9186-31da-c67300b41bc2,4102083478,8783721551851172602
+644042f9-b149-9352-86cb-7bb310a42758,778963446,8410658802695667137
+f8061fce-c1fa-d08d-84d0-14f58eb848ca,4250079591,16884094444487691578
+839f7798-e5fe-e105-8b73-62519e59f970,3891857723,5464465475925470753
+0feb6cac-450a-c9e7-5af2-cfd0ac262d5a,1901529525,13881136797170976214
+538e14c2-d607-02e4-8f2b-92ec1bd4fcce,2374946694,18057864753824581368
+63ecfe4c-faa1-591e-0e0b-0d25d901086a,916988365,231972953211629869
+551f7f02-a7e2-62ef-eb09-7de436a2d25c,42436049,13005595588853156984
+67e068e4-f3da-89af-d0c9-ac3347f73356,3406809708,15885793631239978378
+121482dc-899f-75f5-725b-b7ada4b69abd,514316551,9270677120463956453
+bc09427e-5114-cf23-4921-cc0ba10b7e5a,1178098831,17153135296849898772
+a2c62878-7b86-597d-7630-847f0a7669e8,169974138,14720531558995400005
+d203d336-2e26-3d14-ac45-7c46d7ad44a0,2647047239,13571259586591119228
+de21ec70-efe1-aa98-a88e-fecba86db3f0,1604386550,4854431848452629930
+f84e5a63-549a-50ef-ba28-a33c2dec5da1,3094185725,3449693044775399577
+844a86a0-f331-cccb-cb4d-3d3f78b7803d,118512040,1250747515600437186
+1cb82bfe-2a30-fca2-cb14-20fb1fad5794,1744939976,8049101992098658693
+8083f9c9-fc89-5e41-60c9-41441aba5725,3102209452,7417079040154666730
+e93e8da7-5ca8-d2e8-9f42-dc0623835b52,3367768256,9137474014955919015
+c4f0f850-8295-bc68-5327-8dabed95f315,2480063235,9994413627002380556
+91533ba9-dd74-25c1-cdb5-c15682aab7ad,499020828,4630752324688153768
+13f81c24-db8b-a567-8005-b425f32277b4,1014539956,2149444323743176586
+b5e83ab2-3ea9-bc8f-e93b-61a5e5fa397e,3536366628,1641699704300868649
+ea9668ec-05ba-4be9-75c2-72cc796cc606,2927034917,18435847657021478977
+9782decf-7daf-3b35-183a-9e2ba74a76a4,2503799826,10716377211443257527
+7005b656-a45e-9b16-a27a-02285fa72a4a,1776199168,7804697091136463002
+8a441ae3-0f10-e2cd-e5d8-30b750290364,1923348698,3981630573698644284
+d5dd8915-01c8-de46-529e-1b1fc3210deb,540876416,12741827861242426511
+a2436d4d-18db-032c-9493-2863d1c35630,1626385065,11442639056786353486
+4cf6a630-0534-6872-a25a-4891d23a13b0,3419035446,4225378521981731065
+0af51866-200a-3b09-971a-80e6e6b8da10,174654917,9535642603308084172
+4c77021a-1cf4-6583-20db-8725f849a48a,2732537479,4224264207272131275
+2ebc0904-3c45-a489-d30d-13cf99fa89d1,879368674,1640489243633466391
+67a3ebd1-bc2a-13d3-0791-da9fe0edcb2b,2815250238,9625393564496520685
+9773bcc1-3cdb-969c-d83f-44ba7027eda5,551277250,3799747946687488561
+eb65886d-e635-6de4-6798-7c9a43cb531c,4138305311,15512624084091462206
+ea7878d6-dc2b-76cc-5b5a-3ff29d1e7319,4177941355,15257878133081608182
+d3d48894-d8bb-f4e3-ef84-432fd0f3d161,1722953203,16067965756297766530
+5b265598-4c74-5790-a8dc-5560db8bf90d,4002318817,16032987037728903823
+b7cab919-7e96-7883-68f7-d03f33f417e4,3380077808,13502981935040970697
+61f0fd24-4af2-9f5f-4a49-7300a0baea55,1490977117,12952890774644908274
+9a803ce3-5c9a-f388-a225-e44811ba937a,3594018362,8527150526082032935
+914fc1f0-5b49-da18-ba2f-376ce933cd52,3397441280,17489811382018250384
+9a162572-ac98-6498-6908-22a6073c7cf6,2805590283,15795123177600337047
+75086ee8-78c0-e4e4-0e45-9519bc0b01b3,192042872,280847814505275936
+42045984-716f-7a02-888d-bde0d6d11c24,3058584611,8171046229107784050
+64e73b71-f0ab-0cf4-c5a9-53be998ca96a,2111517463,9814916930363120888
+35f17ef2-8791-e9de-ed39-a83e1eb5423a,1379000702,13480197012855660707
+c598e51e-b65b-9486-37f2-ed12650bb3bb,4104698825,5409378881291458226
+8091db79-d0f4-2f32-a591-8c37495e5ff9,1864404168,11315864023299247517
+3631bcf2-434d-3d6b-9dd1-437dce629207,2496045274,1473708803485112164
+c0d6e5e8-60e0-0ad0-bb71-6081bc2d6d5d,764375730,2878892336658022417
+067caa35-7efe-30f2-9372-6be23fbdc879,649942594,17634133219388185157
+0cb12575-eac3-037b-245c-00dea9cfb0b9,252663227,7724663247356349450
+7041ad84-523c-7350-6b78-47e0bcfbe522,3426974974,12977049521194768003
+2208f3a3-96e4-abf9-e15d-9485afb946d3,3710905976,14298142875912413499
+7aa5278e-8bef-6fc9-f77b-7a81bf9c8394,1724258369,6371531620546436289
+ef5c8265-a92a-c850-7b95-be926f510533,2283815707,18190637680197645759
+e39fbddc-94b6-e020-8545-e43287ab0da1,3122278395,14485202279789126441
+a8efe5e6-5d95-9de3-a246-3491ebe3a3bc,2891114053,8305876048968849570
+de8be88b-be91-51ec-327e-3f7d4bd1f57a,520355603,915990786956960265
+b3c88e9e-949f-4d22-656c-2b00290309a0,2334139228,230272256734896429
+50f12c54-50e2-e323-66d2-3856563eb2dc,3199953373,4263536855446229876
+b2571f81-ed01-b41e-3759-824a8b1a77d6,2567177558,14819493042429726711
+24685b0a-fa68-ba26-e97d-4b5196373031,2431291190,10298901307032857400
+780c8549-f1c6-2875-152f-3dc2d60a8391,2414337949,15972476311465022455
+1ac02528-decf-2890-012f-8e0ecb417bab,1560201114,10133517490135659878
+0bc76625-0517-fbfd-3abd-ed6e9e985fbd,2221720201,11587325023170450570
+87e567af-db7b-39ca-572f-c934cfa4264f,739239765,2056593560271713391
+4c7d5397-81a4-8e58-5a2f-3af4ef64c20a,1863067956,10030831420787069451
+cf011b5f-f85d-236e-a3ed-4f08ffa3e4e4,2101348502,6304436303071173608
+b1265bbb-8c92-5cef-1995-590a4eca552d,932324823,14377551642625689681
+6b8e7851-bfa5-d927-209d-3861a76d5c28,2135418572,14092040776575854607
+0b5a6e11-b821-0a5e-0c27-06ce28fc32ec,837873491,3098924132971491342
+b61b9b94-eb84-ef1e-3814-5322ef70e5c4,2068705609,10748074661906183765
+76a8fced-a3cd-d280-e9ed-2632eb0081f9,673622760,15188425359523523030
+714f3ed5-8025-2ac9-909e-6fa2848048f6,2997761005,9698884658039561210
+10b342e4-0ff3-067e-26d3-0e9e4d2e051d,2487728519,1632404128640780940
+e73a25dc-c26e-b1af-4ed5-61557f0d2856,693633286,8022126407866697502
+edaac8ad-1a2e-d1fd-037f-a4d2c787ec9d,1933032004,2790352837253108957
+41103025-2ff4-5ace-944f-400ca514eafe,1718615196,1916526180107939760
+497c02d8-bb7e-ab5c-08af-5c4549798f2e,757943185,17756183582300900227
+51429061-3ac1-47ac-4cef-b7019449a51a,2875056128,16943263655892905512
+ec2fe108-7b77-e3d9-6e9e-171b34faca43,931296496,11054332076513541053
+5268bf29-bfeb-d863-e096-945a89da7b83,1071491245,5376800236074765294
+341505bf-3b58-9f01-2b05-dc3ed7121ef8,3358460789,2211339466801072749
+58434f03-aef6-4626-da06-ad246b9d152f,3716828242,1063372160820411917
+26aa2c3e-5b77-936d-fb8f-b692a637507d,2416339483,3871403353333125154
+8d318d35-f0e9-8a6a-4a13-8ede0b3f0899,2540730474,12757518804549535073
+a5799dcb-e069-90ab-f0de-6f4dc41a5fb9,1326323962,16422927786232404704
+1f3e9838-00e0-6c89-a9f6-5aa99e23c066,3831663309,18113625757792192813
+69421d50-875b-5c3d-5ecd-977c0e57e378,361174027,5954868566796735436
+a32b1cbb-c8a3-98f1-24c7-7b0a1c536592,484187918,3368224741299938229
+24ca11e6-5f90-c5d7-3709-697c8567b2f5,2599152246,3429541255026131862
+afb134b3-c3e9-b657-6f15-df5efa74f8b5,1201938475,10149292246550890410
+932eab28-21ed-d1ed-3b9d-aa21d424266e,2967657113,6595821628145198056
+0c75a801-d385-53bf-332f-13fa4628089d,1966643173,13615307882459980310
+6281a5ed-b413-8213-9609-b8b34410d6a9,1727986191,12485587896971243066
+483c0bea-0155-e148-f72d-af21434a99b4,3400609884,15621765133970063030
+ce23e409-c2ad-a925-535d-87183bb38b09,715367075,12154491381557062864
+8501e35f-b38f-4250-e1ec-24fb1f929c36,65934764,7227566256564505665
+0f044425-bdbd-f3ed-0788-ea104361c378,990303734,15971442094090965158
+93b3133e-6a99-5066-33ad-fa10c744a1ac,3015250965,17175358539024626668
+5ef28cb7-79c9-821a-0cd8-9b52b9f46be6,1405587426,17946895647989824216
+70f49ec9-3188-1f03-eacc-8f0134c5825d,2089763452,16750166652421791984
+7089e76f-a823-a195-d609-99bc553cc4d0,4116698905,16433136177077912587
+ef51d49f-071a-81c9-3a7b-62c9e0c07a2d,4176597807,5058351271717971178
+996351c7-30d4-32e9-3907-d627387ccd2e,422547731,10838481170101359067
+fad50b01-8b7d-00db-8f02-bfb7f741eaf4,2309788288,10216785079492346568
+db825e8a-4f83-9aed-758d-b10c2d0cc8a5,4055315593,17887308267584673628
+92cb4729-2d68-1690-57e4-125665c35074,2447631272,2412112943750624858
+95e7289d-180a-4532-8eac-505b17922ddc,527937882,4255296801534247888
+4df6499e-0314-cf24-73bb-fdcf8266ea93,573786285,10964189701013420048
+4878c89b-cd7b-58d4-4167-8ea720ae8d24,3249997944,14620899706112310856
+5fa2a601-b19c-23c5-dc56-0c65cbfb7f37,3287906878,5871929919414000084
+90cef18c-97d9-85ee-dc7a-b53ab0abc1d6,3019714954,17172275931016003205
+027d0f33-8fba-2fe9-02c4-6fe71f56fa06,858830850,3750829657510275831
+b4de06e4-6f3f-549d-c957-e56cff645e7d,2203588100,16886187433948857294
+8ea24c9f-f0ef-cb22-2ea0-1c25bb3d7420,2579232379,8801165271688115032
+339f4318-dea9-a25a-4d94-cc98c9bec957,172109090,6477668291924299231
+bace60c7-e8f4-a54e-7c21-90bece958821,2703703493,22261551892356294
+fb97861d-6c33-8839-6c99-b9e5ad091750,2226954455,3796559174363749920
+70d1def0-a233-bcbd-738f-cd5672b2a20d,3183811340,1601247252030202682
+5380110b-789f-5326-7a3e-1aa1ffeedb63,22421928,8089706140938838176
+d76f5c66-4dde-26ec-40cb-545c7e0a6108,3828060856,13907317088386232964
+8408e322-6162-90eb-c37e-8c7f085998c2,2283433427,4054563005870558211
+69b84ec2-ca32-2cad-7c3c-8553a909000e,524609098,18236632853007800129
+571730ea-1489-32f9-f052-444bd0665e4f,4186952476,17854525539356030309
+060ba21b-7252-7f27-2030-97410277d5bb,2154605373,11279604266366657065
+1dec09f5-f3ee-d9f6-42ab-c91a66aa98b8,853331260,3638953491653335498
+1b529c58-c6e4-d566-270c-291cc95fbc74,4112688808,4078927617229192700
+0bc961cd-bb2a-6ac6-9f05-6af394602f06,462388774,205935715537293993
+4e2e1c95-6431-8704-3d42-2e5de77ea0bf,3554574149,6667190100552636529
+9c4ecec6-ab8b-fab0-3593-cd16dce23e38,2084310586,14100738699684382122
+9e1d9b0b-e1d7-46ed-c04d-79cf80f12424,4284974231,13075109456539655843
+3bcf8b6d-ee98-dfdd-2ae2-0b8d7fe06eb8,622535820,13737275462619062783
+70c7144b-64d4-aa91-670c-6d0f79633779,4060977016,10592058972695984145
+cbac1b9e-454d-06dd-e3ee-62a3ab710a65,372436340,17802303676809594976
+c1f96e31-cf46-938c-2124-0db78d014210,1199821410,4827184837817239544
+a544c7f8-4a05-3715-154f-61524cbf5918,4218645779,3295333363955471779
+2fe0f216-975b-5357-6c9d-f3262f598855,2631757116,1043339325355927228
+70035f1c-0f69-dd92-1a06-839a43f56b93,3989398658,3916149930450733014
+b9b56e60-8ab3-e364-d83b-12dd2030f823,1511491827,13197073395753728663
+c20ec1b6-7a43-35a4-fee5-3192f22e329d,1982370985,9405992183394900626
+fc814952-653e-4233-b460-637bf029ca05,2169744889,14387242540160899970
+d4a04da5-7373-1ef1-f5f8-3a791266e263,649135396,9492855904726490883
+9edcd96c-22b0-e642-ff8e-175b0a2240c0,988724471,13146609446625225768
+49387cd0-c751-5dd1-e8c6-74566e85a900,2784694030,1426236669347310144
+8e06172b-bc52-0dd1-8879-d58695de4478,500706089,8409570940524179590
+7ca9fd91-1770-5ad9-d967-e5ba54d33975,3372201671,139253112307441661
+202365b4-cff2-d665-2454-794f62eeabc8,209761859,17178489973847892404
+20e5e3ac-e325-d3db-54b7-08200826e6b5,3112399906,10847437666412916062
+5bee367e-73fe-968f-8aa2-281ac62a2410,512905236,936125290252240752
+f5ab0dfd-7188-f7f2-0b64-229c3c594b0d,2476381558,12045408063683671768
+a4b8986c-f758-022d-1886-613696036e04,3082154421,7200974689760863277
+b3db620e-f595-7087-6f1b-225b58b8a2ba,3264095182,14164014615001558038
+ac659c93-758d-427f-cfda-1f017f78cf12,4004442050,17513570156388438053
+b131acc9-222d-9d61-fdaf-c22e3f3dca09,2603977294,11182165654226959427
+edde0e69-38e2-209c-5708-5815d4e3b48a,1435278569,16161827225774531642
+3f24dd84-0f67-860d-350f-5f1b066160bf,982379444,16060061876675400941
+8605efa7-61e4-0f49-ae30-e8eb09552318,319750835,15484153826389782198
+f141b665-ad04-8966-b137-99a6a8c1bebf,1098232763,8141402279112409364
+bcc2cbc1-b10e-d8f1-624c-9665f40a4e13,3574389488,9920996947445479807
+fa8acbcd-a3c6-c6b2-4a37-cd5931efc6e5,3549455046,17370832813377142223
+87870cd0-d255-6828-800c-00b7d5b70598,3934892462,10112436721459868656
+27ece6e5-d076-f680-5343-929f49e646a6,1041465371,13559045659719738914
+0a3193b4-68ec-635c-16c1-5e0ee3d3e03f,3942916356,197527127939199542
+b2d5b0f4-dc5a-9c99-e5ea-7c8d9072c2ba,2927534931,5544744300399917705
+c712b583-8d58-3dd6-98ae-6993cabdf7fa,56893911,17097979396455463011
+67fb4b2d-5c81-5205-7574-1999b0263686,3162383394,12264511117873520994
+cb9138ac-8f65-6cfa-a1f1-8946cf0ff4eb,1998789380,17222335862662141558
+5221dc31-9f67-c140-6207-aaae4a8a17c6,2336715127,13263590442681396404
+fb159d12-b8ce-4a65-76db-0a8a0e209d07,999416944,12367975897982091542
+f32e19a3-9c92-0f6b-46a2-b1b4205cfa91,1661716957,17702686088353007030
+d739d1cc-9034-4312-64c4-b4487e44eca7,2847811441,2129939897372448934
+6ee29f98-aa0c-4918-48df-a3ddfc5a207d,278340213,8722960168738236125
+23527dfd-8776-56db-4eca-09911b08b194,1901721381,9031695880592767619
+5a57fc67-e9cd-57ca-a300-ad8386c961c4,731255473,10411238907614487637
+864a7cfd-4dd1-f4c3-8020-1041b1f48133,2746831243,8824242663313507330
+0f108494-f5ea-74c2-7282-f34ecdfd8442,2571711394,10701543166612412173
+f22b4926-7305-df81-81df-3c05c69f40f0,2957242333,16795158891486064136
+e201d25f-b8f3-c182-f4d8-f736d337033f,3724196199,7449526953136401814
+c7a1ca2e-6900-1332-6678-a0cdf9692af0,1096634917,10599913880606113733
+3bc3e3d6-a065-0d51-4d01-9294967a4de6,3854263509,915899697261376445
+1aad827c-1557-2d3d-f64d-be33aa6c3aa8,3270550687,4417304749791031742
+9edd3717-8b82-1b01-8a28-345cd26ad15f,3603672763,10054368710528163543
+b709ebfb-294b-0038-40c6-baebbdc61822,1833544517,2879688274818435209
+a9d44d49-691c-f855-d053-04a00027a2b2,3064393162,13201876502156804505
+59060036-6374-ea5a-f004-dd9374f5dee2,362130349,17285141941515307002
+c0442840-437a-bbe8-a9e5-7b70b14453bc,829375806,1604529600379537156
+7baa1429-3e1d-0515-6e15-7cacd0226432,135687934,14208028344047632493
+588649a5-6dee-cfd0-69aa-7ec6e5c146c2,2795601119,3896211635678013157
+e1190aa3-9a9b-e267-9e5d-a0efe9d10034,3053296625,10232979814389146688
+8c8a9d69-4591-d5a1-92b3-678ebbb92d54,3974741135,2726601895537480526
+3126df29-ad50-c203-ab4a-65b60f701e40,1958480223,575431375753674520
+f5f14d55-bdff-1584-9196-e65b70a5a83f,2834593180,14640534838056543101
+3e25e33c-2369-7d8a-dd7c-84f9e384b5f6,364583672,10910464408780316011
+21f17c45-9633-437b-b449-a5b1419397ba,3032850554,11698884398385893327
+350df076-ad0b-aa96-8d47-4ad16b66332d,201269414,9831167838117518916
+d3cc2ae3-05af-7565-b96d-9daac0fa58fa,2524897197,14130098264799468718
+450549f3-87c6-8a20-8b00-bb92a70ef1f9,1153585622,12747353177219613474
+1bacd21a-cdb7-afcf-8ee7-dceaab346f65,643171142,8166524982617755949
+799d4f97-edda-cc33-3a00-8aa7572f5800,3642055774,181185921370767782
+af01b495-f029-a644-f62e-28bffdfeb203,3996192723,13535263085268409146
+e514a71b-bc84-f789-225e-b5d81d8b520d,2015838585,3481744906726970838
+0ff99a51-1f64-77e9-2c65-d8adc7cab139,1979790598,3810798279755129397
+ffdcc7cb-6314-2fbe-382b-21f6caffcf98,4052013965,18206108037594142574
+1292a4ab-692a-bbf9-938d-bbc7dfa34f24,2761052731,5635973542324322227
+33d7a96d-d024-5641-5457-52ec15c55c1e,4195355009,15792777414881098279
+cd8f7b8c-0b60-8d0a-8a75-812060fc08e7,2822554107,17602598542870816314
+a2e01dc1-c95e-5aee-6ed4-b4fe51023027,1360286945,8630396827510995077
+478a1607-61e2-6806-c838-9da23359726b,1181499746,1352876699771165010
+49306e8d-6acb-d1c0-8293-3d33d6f1e2d1,1223563269,3475413788452218257
+8711866a-266e-0355-d92f-b77f64253722,3990369480,711900461940351885
+a8a20af8-6252-5b85-bf71-12e0038db200,2006453224,4825922482657655880
+af5909f3-42d7-41ff-57ee-dfa1826e2a61,846262158,17141682815246409684
+36763770-9b08-ad2b-4651-54eaca296038,182915172,17897562405948620532
+8da4177d-b0d9-ff17-e45b-5d7e242573a4,2733499413,3982975153490082342
+b4173cd9-a2fb-0c2b-9409-8f9d74c4b55e,51409471,9084172277724225468
+7eee8021-8f73-b0ab-1e7e-937422b3471a,3009640198,15981147870035836392
+6c208b6b-03dd-ef55-ebee-594fcb9d26cb,631396441,14968554891019012812
+db1fafec-a2d3-4b60-2fff-29ad45e36d93,486667456,15892410291970065528
+52a62836-f0c9-6fb8-6afb-1e2652f0ca57,1419736916,5241441742385914002
+4d03b4e9-34e2-6d87-95d4-82bb8a173c4d,3716387412,16650531531778625616
+99edf574-b8a5-4a8e-06e2-045fb3eb8016,94815203,12855601021356094596
+8a9f5493-0d38-aa31-7eae-162fdb9c932c,3785447877,1560638432004682168
+12f674f4-3e5d-8f23-78be-7810e2c4a7ec,3501683352,13118794002438223749
+c796453f-a24f-d313-e994-0e1b699630c8,2368337709,14182371042639250904
+2040ada7-e02d-bebb-d9d0-b4330c6dee49,3951579396,1091403800068195171
+e42a7c60-34f6-2f58-0447-cc6f5e712701,1852252702,15157978799460444718
+7b884916-7fb0-1846-6acb-de03bbd36616,3289318055,17165441742759440798
+87913e44-1ae7-8f26-c6de-05c8e47d0c65,1781638947,6186599893174794357
+9886b251-147e-497d-859f-cfa254e609b1,126498376,15168822233720250120
+028d8e82-d16b-f5fc-7aee-f05ddbf5e4d1,601881088,11730355344547513348
+c1727d9d-3a8b-8da0-e450-ca9401bbbbdf,3340347810,6984740141538077688
+588d98d0-e6fc-344d-ab59-af312a5939aa,2373067838,2834958367517707959
+54a44c10-3d55-a7e0-e09a-82c9ba298a06,1365729336,6115756213020248085
+8274511d-29f9-cd36-0ce5-ef1e30c05bd9,695297711,7321784621775571120
+d31afb09-76ef-9c42-c316-fa43e8e17610,1991848930,10338310769030824845
+48cc18c1-e173-ed6c-f38e-82bcc845b33b,716239540,15389202123222046681
+254a02a5-a0de-a03b-e86c-ac35bb82c7a8,453537463,6833413636921914272
+74f3ae6d-1fcb-e63a-21a8-84102a4d7d5b,2746669006,6310119128760310628
+9a25b023-4f8d-4150-e5ba-14bc6000d860,881303900,1292658702808805814
+138a77a5-971c-dad0-fea8-4603c864539e,4123362021,3988628854592616808
+3867c7be-400d-b93f-d87c-1ce351581a24,2321163806,3583279384155636152
+33ce51ee-b9f2-c41e-34f6-f4d1554c3b1e,998156716,3655590428974015422
+52cc278d-5d90-8fff-8abd-f0d6344364bb,1546181483,11891952306658459274
+a4d12cd5-ce55-9f88-2c30-48d92ff9d170,4127588758,5455657794175122067
+e08c571c-99fd-705c-f01f-e08d26b0b75f,1701723434,10571891040888458970
+90b8e210-26b3-815a-8e09-815d2206f445,1545556181,3375432039972842392
+b4408e3d-e39b-b92b-7830-f6626f0989d3,3235366971,5234935954446186339
+a8dd0248-fb13-f3f3-84c9-f8610d99ab5c,3565255257,17746507976720545276
+15800117-27ba-7c42-103c-265257e57674,3155480952,4479974692672586627
+1f4cb46b-a188-7672-0913-c2cbf15dc20a,3751380923,5313098340732191929
+1499110b-79e1-8920-906a-2ec32a955ac1,3981051384,17171119556420005922
+891a9599-d494-f53f-b5d8-b5e6a8b36170,2677002218,11788458889396092467
+3ad28c28-8135-daa4-a97c-08e58dd4f92e,4120783568,8238589049827009270
+0e7812c6-654e-9641-08bd-c06bd97a61fc,4026132819,52329126741236465
+1ac48ddc-b8a4-aca5-7bde-faab221b2ab0,474412292,2147551979281836110
+892091e9-8449-eeca-1bc2-9ab9822908c1,4108412682,13101376131911779103
+d27190a6-c6e0-fafc-c7a0-d3fea4706308,3273463378,8259714248458817553
+f891fba3-b2e0-9528-aae1-c90fec06b9bc,940955177,1410465181449478661
+b37b4e02-b2fb-b228-5c81-07d768921828,1611985308,4788425458515031624
+ed0efdbc-c85e-0391-e395-ba88f33f3428,3283351848,11156619465433204775
+37fbd4b5-a741-6851-ce1b-7e650882a817,3868768398,13506778157777888655
+ec8ecd9d-0d3c-2fb1-4049-d7925fe6934f,3100038099,17814867995978390713
+bf4c7f30-8ec9-a965-d412-3eca6eb24bf7,216636116,7320403944766155123
+0f4083dd-19a9-d3c2-933c-bc3f791b243f,1346369442,4212898047890253928
+1c394edf-50f4-e748-83a4-6ce285f16967,1670695839,4142281705744289843
+9e519e1a-fecc-91d3-f305-3ea15bfcf34f,3799556419,1077012153148467308
+4fe69a41-f399-27fb-223e-48cd3f4d5cd0,3744976182,10346172542739366709
+18a9f147-c259-ed35-aa25-ae6df03a9ab8,2800365391,530461176582154340
+96130ade-ea98-ae1d-57a2-59466f41f00a,2929197756,12597977587024127945
+5fd07103-278a-f5c3-8885-d9a12f8c83e9,288510043,12749493914328775921
+352875d4-cbf4-6a4d-0604-cde27d04d929,2240104242,13850565428550382219
+98b7566f-8ba4-547b-adf4-afbdf85ec016,3385643720,1865871822162182895
+4bd7af86-1bf6-05c0-0572-b7f02ca921f4,1014339464,4803217895117882167
+94b60c67-9aed-d919-1b95-844d5824f71c,2326042549,920540774867959733
+e095d00f-bab7-a3fc-0aaf-a87bfb59f3b9,2815524902,14753232018614945542
+86486b86-a547-b2dc-99ba-027f49a6ce2f,3656896795,15080744534313062074
+2ae0a04c-7ab7-6432-1194-ed3bada9da09,3023009791,8915964594157855544
+eca99c25-70e9-6f0a-3f29-96623eb27005,1926788071,16660334700292846385
+b58626dc-6f00-a4bd-7b11-d176e095c8f3,3643564854,6839751223959713543
+f85782ed-f72a-5ae1-a3b3-a21ac55570a9,3110112402,13970307117581256904
+2a839de3-a3a6-15de-58de-5acd3645058d,3276965578,18328514671035847517
+d2aaa335-042d-cd11-cdfc-aba583f568dc,691067254,11233862340403512043
+3cd20998-dc52-4e86-316f-cbd7b3dfc668,1894679463,12845663792500308137
+848101af-5d9b-5cd6-85c9-4bbbaa30d39c,3625517878,2558311626107839299
+bd09cc45-28d7-045c-6571-7aca931d58e1,2549832337,3650654037856439360
+b872c2a1-7079-468e-3a4a-e747194664d8,2975033383,13654582641446399355
+a242e6b3-fd40-f068-944c-02ab4d992807,2251543332,3059718582155550884
+fcf89d8d-4936-4f0e-673d-64ff1d3b9c4a,4153538710,8256620961720935706
+3917b205-b0b9-314f-40f6-94fd19344d3d,3083359976,1112793531062701447
+d04a8120-6684-c71d-e971-27ae47f11d17,1400682314,5020637704600000087
+d1d3028f-2549-b951-a797-a684ba249607,3445213169,7940935617911768754
+cb9b49bd-8c05-e9ff-0670-c4fc291e6fa3,3080879859,11590753629077297937
+b830b21c-0b59-7ee9-742d-949aa0274951,631492540,6525051397702127145
+b73b9d4d-fdb7-0de8-9eae-e0439019e137,3776909841,10770504866746121242
+d2fcf733-77e4-dac8-57a4-104d0fd99b3d,1583632158,4978193627583053473
+948bc4f3-5554-5174-8813-910b4fe8c953,3154921483,16480626100593489542
+72d1f792-4cac-7d60-fff8-94fe192c40fa,3195925536,12786549827327585701
+dac7ecdc-6a02-d609-7fe0-5bbf8aab5807,4186546156,13006177568282064658
+cb57b642-7a56-65d3-5080-86ce54afec4c,3598116834,17432831188893442224
+87631907-1dff-58ba-6bc0-77ff2f2ceb5b,2338691959,11132245712378601457
+450d5e07-170f-049a-c0a3-83a39042568d,3570224884,2838757950754404235
+4519db0e-142e-2a07-53fd-baab86b36220,671810922,2107702923634248508
+d6e7cd9e-2a0c-b8b3-b73d-52ac829b3706,1191528826,1694856543422981681
+8b99cf39-d4a1-48b3-12df-20ca786b42a0,2400088228,13731888658617037331
+b2699614-4aef-7edf-cb62-ef00e333e5a0,831552720,18332149587089559436
+b498f463-20ea-740f-0b64-59e06f84e747,2954607352,1860610587050898227
+4fc8f453-c22d-c820-d57c-20155d2c1ffc,1168094054,15879103252393878735
+c5b4863a-784f-6281-3a35-2240473259ad,1359633675,7932274739875743131
+44a87e00-6925-df82-9a0c-6a14bc88248f,1195756153,1560154335875611935
+53411a5a-50c1-78d6-52f9-43bd191ea7ef,1567507380,10745562634642126764
+7dae3c08-4755-f8d1-82df-f5c13b690160,1406787002,12672017511826057817
+78b9043f-42e0-b414-3a57-ed24769e1845,2035107057,18372132998802646757
+b6380b95-916f-c7bb-618a-ce873df1d351,2669941603,2791961193446707221
+bc5aba14-8757-5dc4-e847-8b071e317dca,3440174046,17670625799622742751
+f2310c7d-c0f6-29ae-7100-1d1a52e8ade2,3515122516,16005839365100748795
+afd841f9-7200-12b5-7cbd-e165bc0bcea0,1224030474,100509878513647536
+955326dc-c16e-1b11-f45d-bb2c1d06a5c6,918556301,5740507798118713561
+45d09df8-9107-b2ed-36e1-191182ca0bbf,2488301624,8612269214873765900
+27121e22-e4a2-c18b-6694-ec1312380c6b,1938618288,4690554165465637005
+3016edc9-3de9-80c4-49e3-6acbd47976da,2185382960,14560802866268821009
+588311da-a774-fe37-7e34-0db0cd1078e5,2516885965,14111244471445456905
+7b51d956-1b6c-d388-0af3-b766a68881b8,3197158152,2622958893391104453
+bd6bbe5d-844e-c615-29b3-c10820794f0f,31726285,14007450294803351891
+05e0e53d-ebf9-e6ac-e868-b97760c10bde,1457272144,17215637997798036133
+aac635e3-f471-4ada-cd7f-bd8dd214d17e,4189453813,1125098788403860447
+c3715fdf-9e3f-13e4-f084-a17757191eaa,3158116613,14729509816180669942
+e0fbf5de-493c-913a-cb68-62ec1c4972e4,4231320890,17947984006502377482
+bb946665-cee0-0904-8455-a372ebeaf86d,3294573603,8014083281351817673
+6de84b11-aef1-5c96-c0ca-4878bea8020f,3745704637,12220816122433738044
+b317eba5-2320-437b-6302-40ecc913c5b3,3535689072,17818286638322576424
+9b3f3931-1841-c1f1-939b-55fe34c0c708,3067608563,14782279904834874590
+02f1e392-9eb6-25b9-5df1-0948aaaf6619,3937742059,6785426914099636066
+34505b5f-785d-99ed-d486-c9c60c22df58,1323023266,5072959796611644383
+d563fcd3-5af8-f961-779f-0142493817cc,4257552438,15480062762490896884
+fa24b484-912b-ed7a-997b-29d42051daf8,2631538040,2187951456831027565
+0c56d48a-5924-20ea-fdca-f5959a48c1d4,2779939176,10570279325806768537
+ad623acf-f630-2286-e194-58299f0c82c4,3082051933,10200763222647487511
+d35e83d9-44ea-70d9-d036-888898e90450,3897563867,17586338817688313830
+92183c5b-a4f0-6e09-4aef-d37adce35c7a,1713647958,16000781294849902709
+efb30b28-6c46-298a-6c3d-c3ceef7bcad1,624797813,16850964043468961568
+b6d0c5b9-c377-fe70-4b55-d02776f30b9c,1392005464,443588606335986995
+90ae4ee2-a595-db4e-7f6d-ad441a17d201,1482438319,816761747175997264
+12263894-c777-254d-c2ba-71c823c54db2,2693366694,16648309808132946636
+fdf9769d-74d9-95f3-8450-fe4afb8e8e17,4057484474,2856447197821640654
+0b2d56b4-7aef-669c-11ac-c62bd59f9327,2469166475,8106489255913638025
+93a5f8ec-bc41-0e52-1859-30b7c6862faa,1531528586,622178789067939532
+293a4329-7655-39b6-3031-84ad478eba8c,3721163766,10459542802018721443
+491ba789-095f-ea15-24fa-593a141828f9,1137421264,14423610020358805814
+2c55cda9-42bb-df67-e0a3-668b482880fd,1767361729,11946191687829602480
+57cd5a93-20b5-a44d-486b-54f85bbdfb82,4213447596,14446806822675963727
+5a8aeba2-7580-e3cb-06b4-9170f1bcd1f2,71640540,13586270478219884313
+d161f440-0771-a85e-5890-c961526c156a,414058492,10728247429147642464
+14c5d73d-15be-d36c-c1dc-e938aabf760d,1825540667,11885912706878255555
+4ddba96d-fd83-bee6-529b-fab65fa56175,1339457198,192979259277798890
+b8b77374-8cc5-455c-8ab3-b9ccf0470101,361343790,12584267877892150536
+b14ce87d-8e87-94bc-14db-43786d47632a,1126805831,3949252206949532091
+38d65593-cd29-cf3f-b118-72e9ffbb5c77,524631865,10092191490412827919
+d170810d-afa2-e89f-b86f-9dfbe20f0425,736852830,16607042861355582378
+cdc7c26f-d861-bdac-7eff-138ba492d1ad,3352112899,13218146394624782525
+236e0fbb-2dac-039e-8248-856cc0aff45c,747292250,16783136230265278163
+8e1ecbcc-c450-6bb9-5ad3-91cdfb2646a3,3644044780,13000483523890837448
+7563c991-ee84-4bd5-ee8b-8ad5da23904a,464819171,70459906132510587
+751d4571-2beb-6c6f-3a3e-1445b07601c7,1996411870,14572332204621249873
+7f4fae76-8a98-0c2e-629b-78bc979767d7,969647731,12419745804574953126
+954a9be5-4119-1159-bf25-d96837532ab7,667131842,7855256875514744143
+b152d433-1f1f-94e7-5dc1-56006a65a57d,1582254202,5085342964102620750
+4525cc20-a418-4155-b184-13c135c4a943,65415515,5132472459210853671
+58150afe-944b-5340-9911-02533053f993,1232996274,14096493679596542159
+7cd5d4b6-5da7-8290-74e7-dbbc6837f902,2298310276,7091408413135803076
+4b00511c-b152-e890-f413-55be8ffd4301,2249261530,10438179755889166399
+f1f3611e-8eff-5fc3-bc1d-7cbb43086c91,113079869,3644992627080564073
+cc0ebe90-3af3-a0a3-e8bb-3f9be31abf43,1743649928,9057752602156818535
+ddca0b44-8906-e759-5ec6-d68411500792,300639239,4229101764951323646
+6a2848e9-0705-03ec-cdae-6d56c02fa24d,4279637969,223221433196394441
+c9e53efb-3894-b793-31d9-b1dbe4b03cd4,3114242204,11575702549515954118
+ccee93dd-7663-2695-7b83-68e9dea98c7f,3520551119,3896824857268514579
+095ef906-3c6b-23b0-8148-f613233cfa13,1583285696,5105586051703162984
+2e763f72-1c18-c2f8-003d-04e5263ad932,3088744386,8118709127829544024
+b5d0c85d-789b-2f7e-0682-f8e595854dfa,954318522,17150506018529106605
+4404e785-34fd-e911-f812-c2a485ed9201,191665345,6637163077755016974
+bf86896c-b528-17d1-54fa-dcdc4b39ac9d,3912523151,12292390510600070943
+b53ad172-7ac5-ca18-ec8e-8c46b3a9706c,3850617655,11497958806850406193
+f7296d6a-c15b-18d6-29b1-b83ed58e4ac6,1308245124,1507856531230624896
+92e334dc-2898-92b3-2440-5edd85196415,3730952355,10840911326958554408
+76245207-8a0c-e7f1-51f3-c9cd9a191102,2083310237,16083977276906113382
+2d622ed4-fb26-ffa6-f5d4-785934a45e5f,3283070509,13252865266678741081
+e0b70c70-2c71-5e2b-2a1c-b8d44ea4e0f4,576253052,7870642185715128222
+9d67ea41-e3b0-177c-664c-09390a81279e,2057936329,8747104276292923043
+727a6ac9-a66a-3c76-6bbe-2203756ebec6,1034353813,17808663458649315902
+8989f5d9-d76b-fd0c-4ca6-78823873dd9f,3458818548,8572949841270551520
+547c624b-a39c-3d85-29f3-824504c4eb4d,1593660737,18386684168091663552
+85012369-235d-cd7f-6089-5e03d71af69a,30584669,1672225313587496440
+58c4560b-e041-e48d-157e-8cd6403aa722,3193282738,4181550105499166400
+d4a377d7-1140-c757-f038-db2c978ef45c,2624671073,1374227572255275830
+13647f60-8bea-6f8b-7516-9005eacf9f26,3902354124,8838972821014646334
+fe0dc660-7676-c4db-2983-fed84cc825e3,1209746666,479616259426583953
+c8e5f13e-d57f-11fb-9e09-0d307ec8130b,1728754911,4799575645137132833
+bd57b391-7bfa-776b-b4e5-86df2afe843e,3871640648,15444525401450300261
+c913ef65-262c-7307-b989-78df3c57a982,3143365567,9853192240574763166
+e0520daf-189b-0f0b-3fde-0456c78c3072,2022831884,1213822679182098684
+dc9d615c-9afa-82e2-3757-34a1a30512de,2586478099,15600428999912236988
+28ac7887-eaef-7184-8a96-c35f2b8ef5e9,1998509977,9106100356665057148
+52a41e63-1cb8-72f5-535c-2212d1fb07a3,1877606047,3463964093780087352
+e7693602-4dd2-3d0b-35ef-825020ace09d,473664087,6417301550538850740
+c114eed5-e8bc-1f0f-3c61-89e4b772ab93,3050180411,8359902582646572432
+32ceff14-2d0f-4359-6217-c5a217be1911,3910986496,13319337489893911949
+7577810f-1c2e-23bd-9c20-ce591d16a2dd,149538862,11270273962017672359
+46a9e302-8e6b-df1d-b963-b5001adc6d2b,2022344632,6377384405216929142
+e7358162-c0e3-3cb0-4f13-50686fc04665,2799863245,5210599247875874787
+5c7a6dc3-d5ea-38a3-8c0e-21a7b211461d,1484913105,9778080021371052728
+1080adc2-83f3-1fc5-500f-d2027ab3badf,4096961475,4185179148215248082
+d75d9576-c8ab-e0b8-9c6f-6285fd600978,3769465814,1741611340143892901
+12681a66-6864-b18f-19a4-86465716ff57,611519833,1387077188729411044
+e315d8b6-9e68-00a4-dd65-31b2d3494270,641267011,12271306012272405644
+ab0ed218-89ad-91e5-88e6-28e1aebcb1ae,2634472237,14677153095920466216
+5b0fefeb-8617-3a1c-7313-90415420d0b8,2505916646,14359693166862347967
+5f00539c-0535-43d1-f239-4c3f1b0489c5,1987593593,8996730453145347665
+7c5e519b-c1d6-0395-94e3-d7f04d33a694,3358298319,13578677341964176115
+217e2cfd-886c-2ed2-d628-930456ba0189,1313665774,11489392494876439542
+4c5a5df4-d635-e2ff-41c4-d1d2a8973ba7,2250191559,2034408517321493100
+56f46986-44df-571b-8e50-ce4a2051ed37,3323206103,6152007208508434272
+2ff77c7d-b27f-1aef-97cb-5261c2e18f8b,2180549028,9105706000265927359
+5a14604d-b7a2-6c4e-8ba2-86e1b224064f,627664387,3662984037209613483
+fb4fb47d-f6ab-939a-74f7-fe3daa2787a4,1199059738,4426718411838859563
+64052ca8-ddb6-2f4e-ed68-d16d92159329,2484306507,13256873759117693838
+4560d97a-fe6f-09ed-18a2-d9264b414d4c,4042657936,14091595590139149625
+fdae49ed-b650-986d-5bdd-024302a1cdd3,2976330373,12707498352393710856
+faec4a1e-ad35-3090-76a4-74508e6b2a09,3661528142,322674195467855890
+cb742f4b-5964-0e14-caeb-a262db105ffc,2363358452,15398846773904533428
+38859aa0-8d77-a941-663c-465c738605b0,2342040859,16934486661718201879
+63f27f35-315e-5ffd-021a-028b9b06cf3d,2172365242,4763829786691828273
+52b09489-3a12-d8df-005d-e4c3384036b9,1578768189,7828054526719047
+2af1404e-cab9-640c-e218-0404c2e79d9f,2863315156,9733516129197148966
+3fb84950-8d59-43d8-a4b9-b90418b53964,3610561349,6791493316797587511
+4cf066fa-3e6a-c081-8ac0-2e0e7935c504,3305710485,26401818896835405
+e754aa2a-51f2-50dd-b5ff-31c995ba493b,3272264880,1126459015409420715
+6c44f6ed-c4ae-671a-e189-45802effecac,2990025793,17937981881942334400
+fb2e5faf-9a84-0ed4-f0c6-cee842ae4fcb,653696901,8790386506006406573
+879caede-d6e9-ab7d-c277-bb62acade866,3357206208,12299296626293173896
+d3dc0b7e-04c9-9285-fe0c-d7f5a0de2193,1968267081,18444777930451107792
+2db69163-4789-6513-f6fe-2026ecfceecc,3140557822,2958847623162042078
+2bebcfed-2f13-b8d7-b9d4-1ebe536b906f,2978428890,16744409751025436532
+787a1493-e400-07db-f10f-a1806c09198a,1979062837,5737857662673429834
+8d05d617-a70e-5a43-970d-39a3c44560db,333522306,11680281676897133125
+8d356e40-eb0f-5a21-2832-c3007d817823,3931755860,7230224869649741303
+9fbf43ea-ffd9-24ae-9dd2-96ebec841206,643919376,8848928994396922921
+07b07e64-e719-4131-bd2a-b439784ace6b,1415603564,7172534362872822973
+f907c7c1-b8e0-242b-4f98-534dab340bb8,208969770,17678554489984156348
+f4b88d63-d058-1fc8-b94f-777a28ab6bc9,2148491727,12355932890976930473
+9de89735-fd17-af22-4bff-6584e7902134,1310020320,3088328590968403022
+3a79f2a2-c1d1-07bb-1c6c-a809d03d51b6,962768133,6060577687199164442
+2ef89b4c-61d3-1e37-51fb-19fefc8b547d,2622565964,880137385887766667
+a2e5e5d7-13e3-f9b8-0204-f7278bde2ee1,4017399582,9532850285858895782
+d75f1003-78ea-5acc-f458-15d65475dd9b,1649987587,5650826590679235999
+4b53d35f-9cc9-6faf-7347-4d839e9f161f,1460437755,17219841080066495792
+cd05ac76-ffbe-6012-3084-b9146a8255cf,4116641497,14313817754733590368
+7ee080d8-85b9-ba12-6c7f-2134750a5189,3346942935,15340398321435903669
+da032fa1-ce7a-9e61-ba01-82821984b6e5,241303959,6637716561236233405
+3ea3e0ee-3277-65e7-7979-f92cde42bbb3,3448773646,3268153914078683198
+03002e77-fe2f-bbc9-2aa1-f0f2970000d3,3721302477,8224673573213554812
+d8e99b81-12be-2e59-1948-2af02b9db8b6,1778323477,17200675398935588447
+6d62ebbb-7c17-55e7-36cc-da3da27cdf22,1797848426,8067115697920205067
+b75ee67c-3e69-0a71-f2e4-4f70ce167676,427009236,2320694242538995747
+8db49b53-3e8f-ad65-12e3-28f220b73ec9,2622789000,16717426272554891567
+16d49dd4-7fea-462f-24e2-be9d576359ef,2393882348,8866198108873219073
+57a4816c-d3d7-e681-9dde-0be98216368d,2287643343,13767060103397355598
+e6e1b98e-7ee6-9290-1723-9a8178ea76af,4018068162,16199015615625138599
+79ecd6d8-b7ea-b3bf-782e-37df8de463dc,1852046903,5736233937931111848
+dc15c44f-93e7-49f5-cca1-b25b1a874dc3,2855140449,5474572882579937728
+782bafda-e027-e2d2-da87-36da3bb1994e,803650676,9357337852300844099
+e132a23d-70ca-046a-ca39-53410144d4eb,2793625035,4099869929775048407
+9d812d8f-01ed-ece9-b781-4403cab234dd,1071481699,16056892138932937249
+cd8eb014-985b-3b00-f35d-1b7c465b9677,1773675422,4626381117870790223
+d7557f52-6dd7-2167-9af3-55d4d6b345d8,1833018402,15667436880080959776
+3e614ab9-a1c1-0666-a41a-dba2e4ed7e1b,2081971860,4034095684002361422
+1586803c-5354-e168-da8f-12b35e86e43f,3579463411,17242894178302579690
+cd25f5e1-c15a-86b2-af25-9ded31e5bb5c,2852589811,7912078517460429386
+b084c563-c968-ce58-e5c1-56923da00448,2281614082,5085764055588161202
+27544487-13c3-b004-f97c-b6bb24aa292f,228462216,14645781511166994348
+d29bcb80-2eb6-06bd-4c1a-fb6224b069d6,2182470796,12828632409514999315
+91660eea-cd9a-1e89-6000-2fca7219b88e,1935736125,435745531493091872
+f4f8edef-6d21-4597-007b-1c8f7505a8c8,847250836,11153656688861507816
+ae1a1fd2-b0fd-5a3e-ae61-85c837b9847a,4288855569,5741059425368607657
+c078e85f-4d5a-ae0b-63b8-f2b09665bc51,3183006873,3751231850152115794
+9c4333e1-e5ce-eef2-feab-309c051c6800,1865679795,17188536588471168895
+3f889cf2-2685-cdf1-16f7-2edbff470625,1597993898,14078903815257744968
+cb4e5f37-2be1-c11f-cdb0-8bae78f3d4ad,3246915037,5907606984036050799
+2d6769ec-8a23-31de-c100-7423844b3d59,2959047067,2282777784870513733
+ab9012d5-548a-eadc-2f2c-e5eb2deb264c,1978174480,14996082905562733233
+cdb83c87-c52d-fa64-c32b-cb85d6e56f5d,2321240702,4527742518595005900
+99d527d8-641b-4e51-836a-9a85048717c4,90077617,357622851512594093
+580641e3-2c5a-ed4e-e49a-39f25b1330d2,19963189,12143355468659683658
+767c4149-b806-a27b-a5e7-399f0f86264b,509118623,12334714707225376360
+aa6096c5-8c45-af38-d3bf-591d433f2a84,1123259329,12102380966992096695
+d4e55d55-198a-da11-0b4b-c70f44d008f1,603183871,1543011678345519197
+a79096c4-7c5a-b407-f5a3-ef78f3154152,1814204493,5197534751283904480
+1a88b0ee-8bf6-cdbd-4609-5638b230cbf3,310080907,11399074859291583965
+572747a2-03ca-2e89-a4ba-107e2368125c,600989360,15522113394727489022
+a9d847b5-051d-b409-8471-de9e2aa49881,4150127709,6711246649517218371
+4220cd0b-2d28-cc4e-2495-9241d43d908e,2728198590,5955643243617898840
+93ff3e59-a518-e357-abf0-61f0412146d0,1981740839,8343326779296663638
+ad90d274-34ee-94c1-1e5b-818901594e2a,1413393411,10107608776009477324
+8ff69117-c31a-1e18-20c3-77d5ac2a8ead,2032018245,10598041916993657525
+a271df81-c326-31ad-e3fc-aaa68634f635,1140182417,16263781625729292593
+db1c222c-ad34-2924-a10f-0d4a585397f2,2287616966,15634063461620009269
+0b67e6a0-33bf-03a2-6c71-58aa239826de,1846932671,2248808821285542601
+ad3e6933-c476-3998-5cfa-b54c7db39796,1592920982,15913841835723675253
+0ef6b049-5c3f-145e-859b-7b58c8ab9bc0,2020730710,16338557526712016266
+f937c32d-a9c8-0b15-f567-74b85c124466,3096351688,17264517120734719834
+c13a89f5-3c03-295c-c0e3-29fc71b0b36a,1081129370,3116994243407741709
+124a12a1-cbf9-1c9c-3149-b7850efb6322,3309174003,15571086858951167830
+acc8aaf9-e6ef-ae9e-c69b-556bb6fab3c3,1345760317,12340594771022746034
+5e567732-86c2-7210-4893-0f584bb7071f,2238571370,10991240965686587257
+6434d3d7-61d0-7ff8-128a-341f0d853141,2656463764,3954064427400292549
+964b2112-00f1-0fbb-42d4-0015e736c7f3,2357873482,4992154097646180035
+e7f53d30-9d32-cfa6-3021-ac68518ccf48,1864880816,4114203315878225021
+13f214ed-8738-d02d-68cf-3ced8247a01c,2643491378,5124432270572255844
+f78cef14-1422-9207-ba71-3a255bcedc1a,565229984,13382913528980709702
+e9d85871-266f-af0c-ab06-bab9642c711d,1065403158,11526700201700995991
+ca935a85-7b86-3446-7d2f-933cc6aa900f,564714105,1653708919633599061
+a43508fe-31c1-6fe0-c3a7-a8252fae1e50,3752246805,5935572479920575524
+6cb1e85f-a16d-ba2b-fc6b-4a4f32ab4824,2298650152,10694756736314465912
+7816e181-f201-6c8b-364c-428c9f254422,2397816690,9806741770282336145
+69e758f5-95b2-58fb-52c8-4b5078d1a004,64439083,14214616775274168564
+de2b8ada-abfe-ca10-ecc2-7b2df612c417,1298224846,3639998811055342861
+5e5dcc02-2c99-d321-7a27-43afe362dc6b,2001638088,13902974511312527373
+4b55176e-812b-1117-e43e-7d4fa29ce7dc,845933199,13001729880507765634
+34712aea-07e2-372f-051d-f2106fbdd6fb,2825912288,4252945020521389829
+4c338ad5-863b-9843-5b1d-ed1fe811d337,4087593608,9487752771714512099
+f93f79c1-2bb3-3f50-7b58-b9878c29a745,907515882,16993854695860010781
+6c124c3a-5ed9-f97f-f96d-3a970e9a25b3,33500973,16073713026687860101
+3f313ad7-06b6-025e-e9c3-18b2e0a401d6,4044502982,15045616715017588129
+b6600e9d-77c6-8732-b105-13f2c783efbb,2705155577,9372501912825056270
+7c0467f1-9a08-98d0-8adb-6e10cb3104c7,4118287529,5380438281814926789
+f178d328-b090-9279-b87d-79e55e48388f,2614677490,4321702121106640715
+957528fe-df00-d3d6-d2ca-10f3424ca6cb,2426099976,17504157964410439571
+3316cd94-9eba-64fe-bed1-048fd3d62853,1452589084,17189962289393780674
+e829a8b2-b53e-f73b-2033-fd30624e54dc,2620695829,3672574341024124518
+e5702f01-ddef-5882-7653-304deb37d947,884929480,12821698279621686416
+9624cf83-68bb-e3e3-4d68-20e705786209,1266289986,1869798709982812426
+16cc9cc0-e74e-e21c-943e-e57d8e54975a,2306926806,10863078021558093704
+74a07e5f-8616-220c-9051-0f79768eb53a,1316775709,3637091968013649468
+1b0fdd12-323e-1957-8507-e55887216d06,700367876,3831789563852186140
+06ae6692-7408-bcf2-de42-bd5ab3a10f85,893031736,8892362858068145028
+3c1190ba-6ac9-000e-327f-696fb6ba01fb,125865147,3714219337327625375
+92bbf1c3-8433-4c26-9d21-f338d86c64b8,218938346,18225002690323621257
+5d762ccd-98ad-ba2f-3515-a9a08e5e9943,1185966249,16593785013870779829
+88361967-2f1b-ff70-af98-83ea1d96aa0f,1796595094,3834120376915446322
+2b40dcae-a4c8-277f-b031-97b3bf1e4053,3731228843,7529351631467376935
+dab458ee-860a-7b22-075e-df8b5022100c,3827837504,907208392830309965
+03dfcdaa-0ccf-3a2e-8113-502c0e9d7209,4003827320,4887441491934523121
+7a87bc52-57e6-c7a3-07f9-a6420669e060,4205783506,8194996745954527997
+f260db96-fa25-398a-ae5a-338da08d5825,1212403359,7551918351512137988
+3545495b-ced1-fad4-ed25-3394e9bfea34,2459876058,14587682906926404617
+2283b1e6-8649-bda7-e002-4761161aa2a2,1818252544,2724315122080094697
+aa02e584-eceb-38b2-b562-188078e82f54,3670753832,6781829709671409007
+8d43dc5f-72de-0c65-6f9c-77abbff1186b,3712913844,14753487199362042451
+9655282b-b50e-8630-7369-c5939304699d,1420574141,16044030949108728681
+57602063-6713-2322-fb38-777edcc1055a,2222036770,6476972135120472045
+9cf3c362-66f1-05c6-5d6e-3035178d5b2e,3734324152,12112675872307752280
+cd958f01-727a-6c6b-ab12-f8c77c2fe5c2,1981666885,8788625561984627467
+4bbdf3cb-8572-41c6-e1eb-223871a581ac,3279661186,13306380631356679916
+63c63972-76d5-6361-89b4-2244f0f235c0,3796030343,10577199915370864006
+a72f1684-a93e-5285-99dd-3ba08e6766aa,2984277106,9490079057981102677
+aaa6b280-7dca-1326-ce3f-67b4366e427f,1805804499,219990570497241562
+e9a280cb-1a0d-1d5f-cae7-390cc17c4996,660508490,18304478515313216359
+e4456746-3c58-2ad6-7503-01b344734cf7,1337659366,2313514616254007359
+1916283a-886b-fde9-937f-4a555b9a3af4,1241940184,11386983975923282443
+8f8074ef-0ece-55a4-de59-982c6b76096f,1637382633,1410925289018468327
+419a0913-a952-b288-fc55-00ed77e689be,2909564672,4342454087397500703
+2fec6c61-adec-6956-93f3-3b3f38250136,4213603156,16254572332043293122
+aa154f55-3e98-bcad-19e7-33c75e09a974,3620649863,13843695855849291013
+81d1de45-071d-8ed6-4b09-d81c7ee8adca,2133160379,753901571994952311
+75b55150-7419-43ef-1e36-6c775b6d3b18,3196309721,3390425370054307153
+cfe3d0e8-1f11-6416-b4ab-7ef8cab4720f,3660313489,13422271834208166282
+c142f46e-6df7-f092-361e-02b960e4d17e,251714813,14976312420324265953
+7d1a18d2-4a90-c15d-2a97-c2d0326f17a5,1604247188,8537098212862940093
+35535d54-1aad-b637-41f1-5159dd162272,3131031912,8387165361591723832
+ff00235f-cbe9-d85b-89c1-01f5fe084f4d,2427207094,1522629079736660133
+5de169f4-d3d1-d19b-d0e1-db5f8aacb4e8,3611710778,3133731481055358025
+f5f0d876-bfab-8154-1fc4-eb17b827381e,3410965967,16122319851990125866
+4900540a-1745-d844-18e2-a05e878c59c4,3782820298,1214141009361362702
+47aa3b26-4781-206d-8039-834a22cc2ba0,1341516294,600959841273573540
+d4a2774b-20c4-12a9-a0c8-bf2ed8d4ea98,2376534779,1084385624470377973
+4fbf87df-5192-910d-0181-ff94b4012926,3598987992,3732249235989956921
+f1434733-29bd-875c-475f-2a481eaf9814,48183634,17481309129228676911
+778d2b6b-3201-611c-9a06-ee91b8385d81,194301338,14982065549271892666
+b4d1cb93-9a0d-2559-e956-40ebc94f790a,3868040838,4776949636285556613
+edab0361-4a43-2a22-1b95-e5b36cf69db9,458507922,348205314513103544
+e8565376-adb9-7237-da9d-3b3b92691d7b,3192280655,16682371360491333920
+17b718e6-b3be-30d3-7524-f0a2c2b5113e,1519255500,2618682350778471255
+9f8a3a89-7d53-62e8-c4f3-70011660e1ce,269757220,18401471114890385680
+2de49d60-69dc-4029-6dd1-0805461474dc,1394801916,598066243040739394
+7534ac96-0279-8e1e-bbdc-fafb38da5e50,3697842537,12957807676644040512
+204e87eb-8d66-bf82-4265-02294408132a,1404963729,11451914392992017213
+f5335fb8-c440-c23f-6b7d-b4462cbe1e02,3464905019,452643157043833332
+9d0d6ffa-b6fc-a434-8386-b6c089ea3ed7,811400386,13148832885969635318
+384ba22b-5f3d-4de7-f18d-6673e450044e,2222382868,12964112516891210010
+ce2c8fcd-3cd7-8be3-f15c-68bbeff992bf,3618005031,11556804779385656010
+19fc4d48-d8db-257d-50b2-ea605fcc4092,1658888459,13394600718122525230
+713dd3ed-308d-c682-638d-fdf6272ebdeb,2461699020,10171670061191188248
+31d2e6a7-1cd6-7cbc-d960-295a50aa750f,447697438,16706462237207569922
+fc4aa9bc-4c60-0ea9-de85-971901669a63,3677933363,3878997017291494509
+6559e012-b7b6-6dba-8bde-2fec88495034,3595694810,11568569757087808263
+54c42aba-48b2-fa8f-4c0e-c6eaffa175ff,1059350678,14777319272008032789
+7e22c26f-0655-7291-8abb-e7d2db941f82,3084528955,4341608515682686400
+8875a157-c72a-3142-7fa4-903542f18671,1202654018,13504495212753140357
+5a0cb3e8-a091-5d20-16b3-913f4e9b5abe,4211722442,2614597996848919688
+5b2e9a08-ed00-45f3-4cf0-352769f0c662,3641949061,14882864166702027552
+e3e77d46-3ab3-9187-180f-f9c39ec4d842,1475151277,5151064948384585071
+4fa86f03-4801-3b75-7483-70684c94cc64,1815202321,11878425249027270992
+120f7be4-5c3c-5a9b-9be7-442f3b2b9b3f,1487918205,9650297546205392583
+65c24a00-4442-c43e-85d8-4f1224a6cb1d,1554271509,6505794781534489959
+1b380be9-a64e-4cea-989c-460213b97e22,2485197032,12980246066922466103
+62190cf5-14ae-aa40-1b8f-ecc12f2703f4,2296615897,10107494247270787867
+ccefe436-f8fe-aafe-c52d-bc0ae7ead819,4156836656,14553921342193831224
+5d59ad22-7cb9-bd50-1834-7fdef5af37f9,3985843194,15702530568693824861
+9b75791d-d91a-02b4-eb32-9eb739496025,2526067117,3430109668679657897
+858b84f9-6fb2-0c03-16d0-2d508925bcb5,3654653705,3209042366215988845
+28ea79ee-ffb2-9fb4-ae18-29d3cf6259bd,3391902778,17346708073614926808
+6751d0d9-3584-9397-075f-12608374800a,704508589,13095088726841447083
+1e283a90-782d-23e8-8cb3-8b40f584b1fa,3689707300,2995180490097004583
+7c488045-2444-ee78-64c8-7cab72d7db14,1150900755,576166812030864003
+cfb8e29a-fbb2-423a-fdb2-ab37f4cbc13f,1446958676,9182009827167798678
+5cfcdad6-a4be-d6b5-37e4-0dabf35a6bc1,2562989102,13315752498779097859
+a10314d8-2c4b-5d6f-6056-d1b533d8cf66,2681747331,8605197439542532297
+3dfb794c-a1b5-b170-f054-6cc4d3eb1d96,2699334770,12294929932706521798
+5ac9d2ba-8735-ded3-7282-02ed98eb129e,879115341,2097669726657356587
+a9516035-f57f-f4bb-81a6-12d0b7e9fdb0,2313586156,12946631796065136644
+31ff0dfd-1782-9c07-a655-bc8225f3e01b,372990814,16734072825056285857
+767753e3-0757-a81f-2106-929a8e1a7c7e,2301787450,18258090776436227098
+6b3117c9-d639-b563-5728-4c167ecdd9f4,2396213861,8658947913658404166
+0893d264-caaf-46e5-fe3e-65f0abf5b823,351278979,6675824166294827462
+279afa16-a3a4-af9d-ac03-b2d8d66c20c4,1401446147,5854599831194201848
+d5385703-eece-4b05-6ed5-048f53787306,99376843,8879167845514740933
+669dbc5b-a0b9-df68-8b8f-d058de30ed7a,2289327009,11548928957401514892
+a200e04c-704c-e366-b115-044162c34fce,2125156121,16518038009291952171
+f9de6749-1e57-117d-0154-3f2c4c9bbb23,916194025,16227733617818171596
+42ac1401-aa08-d685-28b8-5d1170d0719a,3807439837,294437294715090680
+897c5215-51f9-a15e-c56f-bb5c619d82d3,978973045,16915479297315268011
+a9b995a5-b74e-dd4e-1fc3-2f7fea6a2bb5,1750038125,17209980499899958923
+7b6c8775-e00a-2817-6ff2-5c8db83e376b,2096749359,7962399017851344800
+95dc45b0-9282-f026-5d7a-a3ee1d2cee87,1911513987,15571198852019714033
+e3cf2351-7eb5-0cb5-c593-78ddbe825ee8,3646954291,5330809044935583580
+9786688b-5961-793e-7fc9-c45895f7f471,2980093966,17840788628637717591
+3a0f0965-c5c1-1733-8fd2-b3f70014648e,1015971232,15859766451498765794
+3f29263f-3d07-7d23-9485-58699377ed01,2262346604,3694637120721827251
+3d63d0e6-2615-75b6-e149-ec73e6974f58,2968651345,13186465821165897490
+837c86cb-b974-b12d-6c1d-af9bdcde55dd,2879170744,15402655651566640694
+2dcc0141-9282-99b2-71b8-6cbb4b0775cd,981809805,9646713064488092796
+0de34a38-4978-942a-b2a9-3cec34f90ad5,1707055112,16015258809913086313
+02351d5a-a6eb-d88c-23e6-e7dda9ada869,2436916985,6039050364499056107
+00e1cc62-022c-1b45-49a5-7068e0a5171c,497216152,8627102218032303506
+23bcf3c5-9212-ff85-e4ac-1b4bc8a1cb56,3802659486,10722639051461808408
+984eebe1-316f-0bb2-7b13-fdbf093e4d45,434203184,16791673120146038023
+62d7ae27-d810-6a89-f306-0a9f6f25ba78,2474889367,17427197997094073043
+0f87970b-7889-f11f-7d5e-3f3bc1cb50f4,963912252,1455750959816426538
+dd008004-2959-e728-cea5-2dc1794fce89,274994794,16218453512543782517
+5fafe688-b836-cc1d-05fb-263b58087dec,1501200810,17791663725098458485
+0b40a108-8970-3e21-6ddc-031a8445ba61,2424450630,7360552514589946455
+4fd1ad05-ca50-9b67-fd62-bfd775dd281e,1821889136,9590739877272089924
+cda87cdd-6929-7828-3185-cdc6a9d1632c,1838199073,11460675998138385619
+12caf7e3-fdb4-8f08-4651-da9ec79a4d74,2647789946,16060492538363050074
+97a7212d-cf79-3ef7-8d51-106b399cd1d6,1781024576,16109899227874806671
+b4a33563-5511-7529-f23b-8fef9fb76fc3,1048344160,1744503491647827532
+d77093e6-daa9-5f35-0179-129a2cb574da,267818843,5505760743580056094
+097733cd-660d-264e-4d3b-461bed5a479c,2911477412,5514712552634699657
+a58d9abe-d43f-3e87-1379-612a565df000,2940046844,912178795315264648
+58772459-088e-8348-c6b8-ae0f5c0b556f,1220055776,14016981586902010369
+95d4531e-11c1-9d09-686d-c6394ab7e7e7,1111506316,2319483549421363405
+2ccda59b-ca6a-a549-5970-d93d9b4ae8ee,2493865148,9899573058762693865
+f3a620e6-053e-9b6b-54df-7b049585f323,1731671517,13987486043837492358
+42e92c03-2ebd-e94c-e278-b0b27acf358c,1014865850,14447879089700014480
+18709c88-16c0-d1f1-c506-15b2ddfdafa8,837334037,7748115308560077199
+58127a37-35f8-3ffc-8c7f-f9368e8f0faa,762077637,17279002904374704575
+f99b4d9f-edc5-ad83-9667-1b56fe5861bd,1021873838,1295957380263133496
+0d308daf-b6a6-a4f3-5617-b0f553a2e67a,1738923765,11956908155270601342
+3f000b02-0c46-c25f-e8c4-aec68091cfd7,2438046670,2051118428811993493
+8fa9db9b-a2b4-339f-f98b-ef740d9002a9,885631156,16972514267426565293
+e692db90-fc99-44bf-6b9a-9cba53e29348,2481794701,12286121923708750040
+8410d0fc-ff30-af01-cfaa-bb4607309a39,3673064673,7223461307370224576
+d904b17d-5952-e2df-b47b-d3216d1368d4,1733792237,3048757093372749315
+f05a4c76-f66f-8869-17cd-78c0ff81640d,715689032,5745347909644484923
+adaa5294-250c-2bf4-95f3-6b79e3fd89f4,133390856,7579856179806358818
+e373c9cc-11ff-e80d-1329-cd6108017e40,1367232495,16805056586413641028
+a0255fb0-d173-c5e7-7a3a-aa569ca9eca0,1571273702,7144273324177881985
+b87aee5e-411e-b49b-22fc-720e736b28a0,640965037,2594610079015077966
+01d3f6ea-70f3-4f7d-2116-d3360da996f1,4113935814,11459832860661121860
+1177239d-ac82-5b62-efbc-62c96d3aae00,3032132893,9722964398599867964
+3491423b-c86a-cde4-93ac-9af0ab6a5b33,538805176,15656495542415642405
+7166a597-6943-8344-a2ff-6f7d3660926f,1155617749,16509892808623503313
+36524a88-5681-5072-0427-055ef88fcae5,472756076,16434272310711505387
+22af4dc7-2257-cc6e-b880-d3c0d7bdeac8,626915316,8488761674927649000
+7a92cbe7-07a7-8c0d-3826-8ecc2b408db4,2485099334,9958925814140607747
+52ed1b89-2959-cf32-a34c-675f1c614771,3885586682,13467392969434352547
+a736df5f-0df1-63a1-a655-dc919e558c53,632352634,14011338830759734815
+f2c07735-234b-b113-d084-14531ff2a8e9,2116126868,12560561327290913080
+4c09cba8-31b1-99d0-8e1c-1f5279e99e5b,4242773470,6995160302853102978
+0724181f-1897-8c2f-86e8-319724a8bbaf,2711930233,17701704536200396290
+785a3845-63e9-75f4-f155-c62d0f463a2f,4219429174,4303266615407033479
+974dfe6d-027c-67d4-f6d9-9834e5af9c25,3285144993,17899418258946341503
+4d06e39d-bfb0-9b5d-4b0e-356542a16e1f,645700625,17382132096364943812
+a37f4cfb-21d2-cf07-2036-f752a039526f,2694742864,4624736194676900627
+0c8a8b73-8181-ff52-0a93-1c849e554b11,2397637313,16030215876215033314
+2f1278a5-0c68-3efa-8ceb-facf83b216a2,4259597897,16623662562507745691
+f47e0da3-e53b-dfdb-1c28-884ca9bdba7e,2115681089,9270561182673924075
+8cc145f4-a4d7-e5ac-038a-489b82117ff4,603827911,3072083853999395483
+1e8ebb78-3384-4c9a-298a-90f11545c03b,1212293367,11101447912039900285
+a3d31599-4a23-4782-6fd4-4cfdcb250e68,3048039894,3450702182138478402
+b565e4f8-77de-65e4-d5ba-7fd94ca1a31e,3192210792,12010346452248217049
+0fb87276-2c11-63dd-6d9a-504b6fd8b379,2288859951,2147305724424894147
+b8723abf-bae8-1a13-44b4-11139e505d46,522497488,15209435271224622068
+07b21b23-6121-e88e-3803-7c923772cbaf,2412704359,8175988076452977268
+bed4dc70-4fba-d2ad-0881-cc0635d3d9d3,2583924065,4151516736831810879
+2558d238-71b8-1ed2-2c5d-5fadd4a355dd,3202800864,79385289607417715
+9875301e-03ae-d23d-3f56-5c2e4983510b,2993094637,13940298415731446903
+95c34c8b-5384-04d5-6ae1-d8cc4bb3ff20,687745029,7414801682736116970
+0820d453-a7c4-f336-1135-3967702a27c9,24390378,9612830648258644533
+b10084e0-ade2-1376-c83b-610bea2676b4,2271328444,7245186930304276044
+c8b03a00-37cf-1cb1-6232-0743d735e444,4144746087,6295379631993490810
+68cc41d3-f935-9b54-8a33-c5d6ed2cdb4c,3651988646,329424505554252713
+548ef561-80b4-59c8-68ba-4ad7d93b73ad,265478632,11678056547510052260
+8319f631-2ff6-fbb0-690c-dd2eff396422,3242959107,13580319664461814806
+f695635a-7ddc-e19f-2fa7-be28f81580c2,4023041401,7088355879777793818
+e7905d80-8bec-601b-81f5-075e5bbba540,3651786792,5918342096429327403
+04e37473-163b-37b9-0fc7-b5fec04ea233,1971461475,2997796257602367269
+0267ea44-f071-83db-4bd7-9a28e9cb8981,1565572651,13663684108272216279
+721f8421-d9e1-293f-81a4-d10a687de876,2661203440,10112205736072776550
+2a8100c5-0066-33ca-60f7-eb1c831738c1,696741201,17608161967811549584
+0a44778e-4881-2169-69fd-fe77d17a73e1,3402342024,419080331996560936
+a0914706-482d-d5ea-01f2-c9e38d77c521,4064203288,6399041965147839681
+8108deab-de5c-cb3f-854b-1cb9c24ba0f4,3712305087,13945356208512556429
+3af07e3e-1b31-eddf-e9bd-97771a76f5e9,3866016579,7630498349401155206
+b483ad68-5181-624b-bdf4-7896a0c80cc9,383691817,17647093546891905394
+349b4cc4-7f33-4bb3-4892-ee7f1ce07791,2427929960,15605476683950271041
+89d00da3-c068-4a24-b51b-1923cef7ec4d,2971248426,9365766525025693995
+f84a2bbb-9198-ec70-9b34-c0c9557f4a4b,3564152798,5338183702159728517
+5b48c88e-9778-72b6-18c8-9bf9dc64e5ac,4259279709,10630602220357860346
+3f0973a8-404a-13c8-8598-0158eec98c26,2450148222,11583417910381152120
+fc9468a1-7d5d-5a82-4627-c09c53608fa7,1721173372,12038893493270852100
+f339d9aa-00f6-74a2-b1a3-9f4c76b4e2b4,2168441223,17697966989845615802
+e30214f3-18bd-649d-a8be-1f53089d476b,624462620,9004462918976313195
+15e9b83d-05f7-13cf-40ea-098aa828ad4c,204329202,9690541371049214563
+e32bc5db-d0cb-658a-1093-6ef3214baba6,4278893562,12054284802941681572
+22272b90-a9bc-22a3-5d13-e2ba2a814123,219245217,18357997182052636894
+e31238b2-c146-01b2-627c-4b5a9363a8dd,2145110889,8021747005657603076
+a93d1d36-0f89-db50-142f-8e66aaf69079,1247093378,14414686859480624868
+7d75eb0a-f6c3-3ec3-6cdc-56723a548645,1461933942,16963212859161467888
+d2fc85e0-6fce-a321-a2eb-6cf5fb0a1589,2458490214,13805567771048848899
+92de5211-97b0-2247-6f81-f31cea7e7c53,2819356212,11871004427557243098
+24c5ddbc-b578-a044-f7bc-063e5a87f3c8,1027618794,717506749656369919
+4425f2c2-382c-0cc9-b440-e01f081d56a8,91352355,10624298269237869060
+674c27a4-4738-a185-cd8b-4e9e14ce6e93,79013369,17367868134206941136
+d6a1a371-502d-6007-6c54-05de0a29a1f2,2950805757,10462472029254442596
+5e4af2b4-4630-05db-b1a8-f93a91f8746b,2385261078,5177636803730410655
+c25475cd-70cd-af57-389a-e0dd12e7f81b,2656786628,11132931996876301935
+bdf5683f-9217-2951-8c5b-9f4808f2edc2,4158565522,15332806980905283354
+d1ddc6ff-63f7-7547-c636-9677a79ecf98,1255845491,570312818746378811
+f5e4ca28-d3b8-6d26-9a1c-e610cd91816a,1508228384,129920715944353086
+9a2f26a2-04af-7b4a-0cb2-e502ef64a518,4056607150,16656739216136877864
+2cc790e3-efb7-5f70-baac-2cda054a806e,1159911656,3129987584533349603
+acc68807-4317-3335-f76b-da3ce4998ad1,4033675270,15786453351005896933
+1e160d56-3b60-08d2-9cdd-6e846b64207f,1644438242,13177638306927444947
+9b2ae442-c5e8-134f-1118-effccd0b0450,1631103948,18045408376434316545
+c3029b44-6478-6185-a014-18fc7ba3e265,1495988655,3855343377588973221
+6374ddd3-9a98-1ed9-c905-89b81253462f,2918371861,8382742231866614279
+e09a5ae8-7f1e-f2b5-3fdd-5421383b02ec,1084394855,6774828046252672378
+d3c08975-6af5-4d24-baeb-9a4b87b31a62,2758120937,11209237403009884722
+a5a55bc7-dcd4-bcca-8c6d-3b75ad40f73e,2218066684,4101849043598902457
+4f9fca26-32e4-40ec-ee6a-45d79a0b6598,712693105,17542894558772117843
+99781861-1449-70aa-fbfd-fda646e08833,2471953746,8919636685390207076
+ebec91e2-ac42-38f5-5cb6-fd8884698b9e,3433083180,5969022974029605156
+ee71ac0c-2405-ea97-7242-d93ca8a453e3,3779453907,17855799052792462962
+726ce1d4-cbee-d7ff-22c2-17e657535aeb,2320122958,6167205976225377095
+e68cbb76-0ec1-0cf9-d8d5-579aaeffcaf6,2126104595,16316142633511639459
+58b45139-1c2e-46f6-94b4-aece406e9baf,150493358,13946539422542639131
+8beace37-e133-8d20-3b89-dd90273badeb,89175837,16368575507523558029
+62a0b450-1c17-70c0-cc6c-d0c8fcda1c79,4015281499,8708532786180497846
+7eb6fd0d-575d-f681-ce48-685f4db6a32f,3983584322,2983042875391414153
+18fa2e19-9391-f33b-ab07-88dcd77f5203,863604296,1379238720554643762
+431aacf1-cb65-09e0-9ebe-79621f496a35,74644965,12040343193781564277
+7dac25e0-30a7-76ac-c965-6efbba83455c,3171021185,3646514382982276909
+5ef24cff-e4b4-b1f4-83de-797b04ad2bea,692529654,8152563621929222414
+b721548b-61dd-fe37-0ed2-124b989804b5,2299723,1467128789499707536
+d61a3876-65e1-c8cc-bbef-fcd8ae9d7332,312248364,7435702208125266561
+7524a7b7-a8f0-6936-b69d-6443cba2d5b5,1873029195,7851262892952758611
+4fcb5744-b23d-ed54-2b26-f0161ed677b4,3191002784,7812509671039668304
+65dfdd5d-b9c3-ad2f-9023-3cbb5db02e1a,1344699449,15364671272510693905
+15073aea-4e81-1a4c-eee4-9098021dffec,2445769839,6663315755116516229
+f3958608-f1d4-f3dd-f13a-5c35ff419c53,1136162367,821606452231162640
+3225332b-7cb0-1bcc-0e2c-548907cf58e8,2746493974,18446572280512617389
+caef0a63-ef66-d19d-ae82-76d6be61bf7e,3437218097,15050931832116098389
+ab206a53-2314-43bf-68eb-423a93ee54da,2035314320,2761983685164052376
+706f8d16-932f-e589-3846-b3436e20c5ff,3834436903,14794066220203923483
+49812b7e-44a6-067b-a079-655c88c596cf,3198866036,7610530559838550227
+c2156950-0758-9b25-6cc1-84c0ae40fea5,3231412538,3993740967122430035
+a24d214e-e2a6-0514-6885-7b9cf2ff6206,702350044,15734385580022868705
+a9ac6b60-0172-af49-b641-7836281b001c,4153321522,5731184951457126408
+907e7827-13cf-d4b9-0307-e54888ea0132,2426280688,886844934990941075
+078529e7-63b7-0773-feac-a4d4f28e5d18,4238137638,11041502687426597483
+c6045350-9437-6658-4cfc-64e560a6d89d,3724880427,3183683502545543005
+1807c442-8e60-f3dc-b9c5-8c19b58299b6,1403838900,828813046881791517
+77fa2192-936a-4004-848f-efc7a46a7597,3081989171,12344924470474318129
+52f96491-9ede-bb9c-9e07-e3b126d5425c,724373354,14150358749863423678
+6f63cf01-d0a8-72ba-d18d-230d7bc378c2,4017617160,1131846763431453221
+aebfba8e-829d-c73b-40c5-d8b952fc2065,167268830,9731254445376032800
+532ffbc7-9275-c203-d531-efc88e2714e7,4199729732,1631770392365149917
+f2d0fa7d-5912-d0e8-e6bd-35227694b328,2451366456,1781425972209370611
+50d8f882-7fbd-c6ba-e421-88cf500548fe,2341517050,3843409974303035378
+18b833d5-e5c3-a930-05d3-f331f8941c85,3425311345,5918965638576562956
+0e3fe15f-70fc-8fb6-17a1-9b2d3507c1ff,3363667560,3381253971986506301
+8b922ba8-1ac1-b355-5c93-4a025bc78ead,3076613138,13001904785090623734
+e91ec689-ef3e-92d4-9592-e65d30781fc3,1715173922,12644739229779691304
+9886d456-e94f-407b-2b56-aba8853dd963,3141530495,7483426456068917821
+f97f1881-ae97-a7c6-6e43-3e3119100f9b,778724690,5993414825647613416
+01a50165-24eb-0b39-ceba-b300a8e4e7f8,4281216207,4995492656615456452
+a3ef6c71-d01b-c161-388f-1a8e4f4d979e,719396324,4657154077468412452
+a557da1b-2ebf-2999-f745-18fb8a1f5b77,2989444807,5307999493818334390
+28098344-e34b-8b25-0dfe-836b7acc5428,609844264,3753852478082717941
+4c37a7b0-f568-b7bd-09b8-7aced3d2b777,3814024439,11070326984234631529
+6c384feb-1b02-e229-2b38-09ba13612f19,3981169601,10164449815744525485
+ca725178-8846-93df-faf2-e02a496d473d,1163572065,1178438473329375777
+910038a8-dd72-cc19-a27b-5c784fb90350,2402835992,3199023184473560368
+491ac080-73ef-dd4d-158b-1bbb22469fdc,2215521070,15845413300443157987
+67aee088-c948-2b2b-98c9-9acf63e72771,136187420,10175449184983162436
+f36df777-e22c-a891-6d56-65d624bdba17,2724153323,180140905988871439
+826bf84c-37e1-3257-abf0-1a23ca70efd4,3467815066,44525929478865623
+f3ed3e7e-fc55-e39f-3cdf-c2a3bf4a71f7,1215254994,1345843812933184831
+4ffdd615-eccb-1f3a-7557-cc15ca47eb33,1106215359,15692484420968094271
+f5129834-ee47-9880-4354-368361903155,3632537386,13621676443616812180
+2de9e073-b041-c04e-ddb0-45a6868e3b4c,3895819029,4990464643199368760
+3e8b83cf-9806-53ef-d4f2-844b2b389e02,32994294,16493583035514493182
+76f478db-e4bc-6c07-28f6-2d92874e5aad,1369503143,17777626439552897358
+d07762f2-dbe6-8f1d-1f0b-1b5490c6557b,1285704809,13356079372575401883
+156138ef-2988-24db-1200-da0862435299,999921958,2123925105528238469
+e5958ff9-8f09-b537-6359-bb7cf6740fad,1237931745,4195303909505679986
+70c0dd75-1b1d-d764-8ad7-805ecfe0d1ff,3070579772,16313346707420276905
+c4a71cc4-3bda-8762-7021-b4d1b662a114,3416990081,10291352173135169108
+6ed62e6e-220c-ebe7-eef7-bdc112bfba92,2081617045,8079474130285761144
+39642b89-c349-4c01-3f38-f9c5fa5e26dd,2981371887,5711264506684787946
+f317b658-19cb-bf7d-4ac9-16e7f7146fcf,3919930581,11044314172272358818
+41a1c224-398a-f35e-cd0a-123bc80b34c0,2364045084,11546598780286116322
+49d4ad66-1c95-f5c5-a6fb-fdda3e112499,1235280789,6034589904055183256
+9f70f1ba-6972-c0a1-a28a-2b04334e5165,4094635026,12252409960805735087
+d0482d5b-7dc2-63e1-ed1b-6deeec6532c5,3453073014,3417842469381575508
+060f0c4e-50fd-9de1-438d-9dfad6d1fbbb,476907719,3686871854328922400
+a39125fc-0754-aaed-1d6e-09cd64024a49,1298273714,16780200574316798669
+5c027d10-d1e9-c323-3a41-e8853ce9c49f,2279443794,2616480635867346621
+00562459-c0cf-db57-e5ed-b4b16a4cd4b3,3184183041,10071425781450344935
+433a96b1-c4ba-825d-d28b-dd7d1f0b8499,1732761339,14957228614017172642
+c1b7987b-a19b-64fe-3212-ec2231fc9889,1340221124,4180808796344670339
+fe633641-a218-d25c-9325-ae6475911e66,3177570833,15500381032968025281
+5e5475bc-1109-a3ad-b0c2-d85d41e71bc9,2319000591,3214262948796008106
+cc81f13a-bc98-f45a-67f9-48d548bd99a1,1965414705,6054711954883452982
+0d74c362-153c-35c1-b607-cd0b0ddb3286,843967833,4355678279546856588
+a2d844c7-5923-4c1c-3dba-c02d5043e182,1891880044,7760522529570438117
+36080518-1511-ca05-a745-8bb5d6e0186c,3234819484,1187926014374411764
+64ed5dd2-18c9-e026-b075-8f5090425959,1855484537,13380414254037457236
+441035bb-aac9-231f-a691-063f4f984eff,2329633933,4168232756417434986
+844c59bc-02a3-a2fe-67af-fbd5d199cf3a,3385214890,10389730869331037789
+e4b329f4-6d18-ee86-0a55-a66744065efc,2095385086,13059851069030569378
+761325a8-057a-dffe-4c70-aa0b653f6096,224104491,8930574174160008447
+4af06c0e-348b-2437-5a08-09099714e32f,2658309532,12109334212894295549
+aacdb684-f440-957d-e3c6-875232441cfb,59904190,17044331756490839299
+07eb74fa-cc0d-2ef4-6a72-1372429db420,3504238636,9291095796837197152
+66f53ee5-a0a5-e599-d73e-1933c653a0d6,1358939075,17860178292088819329
+05a1e64d-6328-461d-cd62-3ff0b39a3ffb,282662553,12285883536912744405
+008cdfd1-2362-eb96-11c2-66c7d566b663,2252799304,807446351158802642
+70cffd45-5853-9bda-cca6-a77a37ee858c,2608758578,9163076299783343376
+78351a27-4d26-6243-f7dd-7c2a58791eb5,1881755509,2048105490410981162
+cfa0b523-c110-671c-71fb-051874968837,4004121180,7108748897748658084
+cab85186-067e-f49a-af89-cc5164c33848,2982698442,3779663807707971247
+1023513d-fcb2-eedd-37c2-2cd4e847675d,3275626576,14463890416664191182
+5e2d91e0-662b-247f-df5e-1132e1245656,4091504391,16947890558959546771
+9ef3d38a-7569-7372-0674-676b82ebd91a,159583808,12191140870487237834
+8ed2a996-1a8e-3f20-5fea-4bc65fdb070c,414168305,17223118537431699442
+3fb417a2-3031-9218-3a42-44dba0cd8847,3158742145,9525259617139964577
+7a116f72-33ab-d4df-b590-faa3a4afb6d0,2588596686,5528032359101572344
+5c44ed69-d76e-7d67-c6a7-1a6d8a09cb8c,2323564330,4059611118168798550
+b9023ebe-7d29-1003-d0ae-f5564aca9cca,1270418752,8226348360261151484
+acfe9167-3a1b-320c-9e38-9ecd1f34d0fc,3119048539,13752766402836237338
+a0002226-2dcf-a470-a852-3b79fbfaa62f,1796974600,12574747934149603919
+aaebcedb-0285-02ed-67ac-9bed29f6d1ae,561369308,12803724387020484411
+7c970c63-bdc7-89e9-f82c-df73e93940e8,2769685038,16179509398188659747
+35a4f30b-a2db-6808-d9d4-dd85485ccae4,60081262,6497096080703288938
+91aba81e-1c88-acb6-409b-4b3915f32588,3958046335,11606213993864753602
+fc1efbf6-3593-2dfd-191a-f7f8ff7c1a93,3381166029,4981181253094341474
+a28ba07a-b174-1586-8a02-a5a35601c28c,3272275214,3504950704935175510
+a0fc15be-eb6d-8f5a-2bcb-eff5b12cf256,2828778347,3824455994915950223
+22ca94bb-4af9-5e76-4f86-21ec83ad3c31,2242162446,457175022497196981
+99ed5ef9-d68e-2a13-ed61-3f66c15e2548,2998018135,1026892019657023506
+4d61b1d8-8aed-1354-1f22-fd1f58743520,3370427398,7290894892989218859
+80ee2bf0-2945-bf43-b89f-1c128d339fa5,1284700605,107911469020057268
+3c14a942-6204-edd9-6f52-0366059214e5,4009856901,6528535291639883629
+d682e5f1-ecf0-5ced-055b-b36f53b8d9cc,4221423685,8598840066517786673
+d2b7c5cc-0c98-b297-586c-438841b52ae6,2460907671,1012832563933910756
+deae4e4b-51ef-ad6b-25c2-c56ea529484d,988336729,6568949021521444786
+8cbbf70f-842d-72c6-2294-b987beceb58d,3457724840,13103657245793456757
+e56afc71-8ac2-a70b-eb17-03ca0b528ec6,221497282,349357640755245889
+9d427bf3-9823-3c2d-a27e-5d37b76e49d7,1947754864,8505654164442346796
+65ceeb89-512f-124c-646b-cabd6b0bb1eb,2077133845,8756868432469526966
+55483e5d-a8ff-610e-e846-28b2ee3cd0ec,3177158881,16244293489577622711
+ac173b32-f943-7946-eca6-d56813feaa4d,2898547057,14195364674371564103
+faafef40-ff10-9eb4-2443-48a084188df5,1987981234,5588570647229306601
+bdfd6bd5-86b4-fc64-be2d-c558e73cd0f8,2765684236,10756390360473793236
+2c135169-10d0-1479-8180-52e0c1826c66,686313042,15453895928806037322
+fe96a44a-7c1a-2a31-f3af-01fc3beebda5,2142121729,14369240183636347303
+e221af81-2358-4488-71e5-df2fb9b607f7,1466705846,11499122341007051149
+e0e80b32-3f84-359d-09cd-405b1d87afe8,212401226,10878560868430501946
+41cb4e4e-9d1f-b553-d409-e852a9baf39a,77452606,11818288656118784200
+2cd19a90-12b5-0e36-8404-a65f5bf4c18c,950109508,10190766052962170914
+1995d1cc-d8c3-30f2-2ade-0e56c30b9029,3479226434,16981705028950323521
+196bce94-bd4c-4ce6-0f21-5245958d0396,2609408968,8674546019133319711
+49de680e-20c2-a9e0-d138-3e75dc143580,1924823723,13629810263037302923
+47ff0ae5-d0a3-7f40-cd56-68e396616aa3,2966398174,8885958342156106857
+ea979d68-d69a-e814-0dde-0d96a3b3099b,3295707992,11419391776038138126
+b5462009-2925-947a-3b04-c284471c2868,123649769,6898913938258187891
+66f69a23-2125-6e26-2a40-813a8986b6ac,54610523,8313454801510700034
+3a5da27f-aaa6-bbcc-9758-e96df7511860,174027122,8884312433625062438
+f0732076-1995-dd91-e0a7-cf6fdbc56053,2862268134,16269436217505897412
+bd431d74-ede7-e2b3-893e-113b5fcae81d,947313206,3953414002991920384
+8cd51bb3-508e-f653-043d-557e94762f54,2582528919,4907078099620707780
+924a427f-2233-4fb5-2362-78a446c27eec,1565939412,17328373064694655664
+9e0a3280-f88e-b243-4c89-af598b87e5d1,1371818181,4567207430523726239
+5ea2b1d6-9dad-77d0-bf3b-09c2b531a0e2,1433751496,16229467279012436152
+b11bc995-3a94-3ce0-2dc9-88d515b3006c,931491636,6594954240018249687
+70a1e195-6c80-6912-24bb-56c0e38a956d,2853631426,4247973444387486427
+fba5e1af-2a1a-4173-867f-c6b17a273d5d,1084563615,14695181687215281123
+466ac9a1-619d-a362-0b16-50ea09a8df3d,2222192849,7437384382922878693
+a4b0da72-42dc-8f6d-11e5-cdb2809504ad,381568387,13608974291062686834
+807ace76-e70b-b8fb-55be-3781f4599fd5,2329936710,1418790978785185635
+8a56fb9a-09f9-9d07-eb2c-bb46ca246a5b,3396936953,5997590857858174605
+36ce5561-cd0e-459c-410f-f5fa2de9f200,2650280767,7723826764348616231
+1f331dc4-7748-871f-04d1-6e50d30ed95c,2552339768,10162240453093783779
+5c7225e3-50cc-586d-84a7-a24b4b9a5493,3391236978,13391821559501577520
+a006ff25-d678-ca15-477c-a647c641ed3b,2083876069,16665502205186551589
+1c9fa2e4-d9a0-6847-5ca7-0eb3700d2229,2643177193,2461552639648964717
+d8da7796-7dd4-1279-e5f4-dd145268dce1,3530165128,2104088490358504374
+ccb6ea4a-085e-171c-5d84-3cb18a810758,1719492205,1399781732428408037
+bdcdcf89-b449-32d8-37af-4263b58de4ce,113025234,3374808621890379884
+59179ca5-e6df-ca1c-d6c5-ecf0c0e0bae2,1732133347,12238390757048584628
+8176f02f-32bc-5eab-939a-0f2016028bb5,1012070109,926498581271143114
+43dd8820-766c-9939-b17e-db037d850050,1425185977,8894585643410543958
+6aa4099c-43b7-f280-7514-460f60e12faa,548650281,285091814031735959
+1c54964b-99eb-d094-02a1-b61e05bafe7a,398949636,7788086541322409133
+8c8f4266-e15d-f0e3-25d2-4b9d55504a9d,131710883,3530416977157292617
+a35ecb10-27a7-645d-147c-9e1542d5cc24,2033294359,2529061166127809652
+a8d6b712-ae44-91b9-fb53-19c2d35df9d4,3548636429,11212912300460188729
+84504279-a57d-5a98-65a9-dc7ef4b4aef5,213807989,1594638127022510549
+f3a85a1a-9e8d-adb3-a5b4-d7e47fcb57e4,2136631812,14993219954330366721
+17b73875-1f2c-0f8b-86a2-38691fd41acb,2163122696,2994674009150520257
+70cd3981-3698-773b-fbd6-5d8ddeadd38b,979418350,4034547378434251887
+9b442717-7ab1-a9eb-d17b-79005c6e8b37,1351042303,11305118541824661031
+1bb530d5-9ee3-8ea9-661b-f16e98643c7d,4146531904,8481386511202351713
+3fa0a109-dacb-a6ec-4805-db413d7bb195,1782539024,15364888223835021845
+1f940d1b-4da4-bfc7-57e7-81e69536d9f3,576100495,17993887261052953164
+d7e7ab40-db5c-08c5-1f77-582cda5a3740,2043931853,9563823762271396360
+fd0493d9-cba5-9d7a-201e-d0e03a095c78,1096872448,7198950753189913235
+d984b2d1-21cb-4456-887f-bab6565048a5,338206192,13198209870404806101
+0aa5b66e-58a5-53e6-7677-8148558b612a,2931075198,17254610933812945650
+771a431f-c702-b4c2-bbf2-6d450ec7a141,1608514203,1395908097276192857
+d3511bf2-99d8-17d9-6171-a1d16fb3ea00,4193718090,17960012134900426393
+fcd44663-b67b-725a-607b-3d53442a99a5,1403663880,17297349324720296459
+8e763baa-0e21-a86a-caf9-9284bd17001f,2263710117,16629280260175013672
+6379d0c4-738d-a29c-a510-a3a6cd9626ab,3481669585,17171301204113353155
+f2fdb47d-f562-c543-d1d8-ca4d4722878a,2894672785,1060413105107831422
+b12bb902-6524-30ff-7ac7-c29affb1e4c6,3196534516,13735184996349790633
+db79b6ba-c857-d5c8-e582-92ee09fa44c4,895698760,1531832845925475128
+41395904-d159-ef18-44db-f8d3ffbd19bd,1349980684,16364113521773516989
+b9c4b577-b221-2c73-b818-8cb36c401ead,4089860510,9028356141217920675
+629a97d1-bb2a-9625-73ca-8a073f277a71,3644858530,4505905710561973379
+17cf3ba4-7171-4882-7296-42ae2f68913c,3247111361,3218229642390588332
+0bcdc752-a6bc-20f0-799f-aa801e219a18,3200361799,16240279140224798553
+3d893247-18d2-4784-232d-6ad3ecfadf79,2135287780,5542678978306261667
+d5a4c9d0-d80d-5a57-f6ce-a20cbdd3a4af,1524299716,12371899523629233593
+7ae47057-279b-a170-b15d-80bff1513dd9,1863670817,16968564038525174461
+3d7a29fe-dd90-21ed-9884-2169b62cd659,3368322798,2847519400936492941
+eeba6f04-9001-9f0b-d0ee-6e457cbfd563,1987508908,16228170357595778422
+ce119022-0340-8d38-69d3-84a08ed0fdaf,671531827,7894764507029196498
+5d2f3e97-b0ce-683c-7fc7-289986d0486a,2408941627,4368722820647185825
+f6d45ddc-9725-9bcd-20e4-d7ed553c671c,3813486037,9492017336920318818
+f79a30a2-49f9-43b1-bc54-6f9cde3f0d53,26089301,15569976357957883927
+45a610d1-5b50-390b-a0c7-6091d81e6b66,3366594158,2836244851950832459
+e81c0583-07f9-4d93-0ed8-56a5f3b49df8,1738164913,84129313667880342
+e93acfc3-524a-9c7d-e6a9-c15908d03b48,4219033796,17999342222328055811
+adeb5f6e-969a-b987-3944-30f946e80ec8,459288268,8529278232069077470
+30f6aabd-570a-917e-d7ec-e4ee44cf8a98,4137571841,6097401168082972580
+726eee65-9f1d-d404-bc4b-c3f875814808,1216921217,4919477760200915118
+84708f43-7fc6-31d2-e2d1-6ee09e1d4c92,182131733,72688814095601082
+099dfdb6-81c3-cfad-0359-6dfe767c2d07,746489446,13967284773966208850
+9a3e5721-0dab-6e1d-8fb8-37cc24839e9c,3087968568,16875695748859627531
+f314008e-9eb1-6b0b-4fc4-a4c8a5276822,1488609640,12924870366681950396
+07826603-80ae-9896-530b-d0f2feca95ad,2044073615,3576619610446258953
+2a19fd42-f483-c87a-1064-970eab072a57,87138559,8610779771548187893
+7a98b9f9-630e-99fb-3296-7c255e577426,2261980963,2350654857570371993
+4160a929-0c3b-7a0c-9ca4-3dbe6c66d6dd,2705606674,2779890112730928436
+74791a08-fab6-8deb-d9da-63038a859920,4205584627,1543536196241272724
+c12b680c-9a14-e821-9450-f5f1cb632269,520551337,6586182050695131987
+438b25e1-7639-81c8-2bab-8b0fc1180163,3390506313,5294278748559091376
+0aa28040-8cec-d6d8-a129-0b342940b2ff,3111791835,9917665077794872100
+58aa7b58-ffd3-e672-8289-fa318a95688c,152742904,1305867406065634345
+1245fb75-9ba5-7bdc-1202-9097e9746e72,1369663964,32630213072846148
+3a97084c-ea56-6027-860c-0c88f4b258e3,79471967,11743465272640219585
+d60de632-e798-ebf8-b33f-8ca1c4c58ab8,101249702,378410057374714649
+663cd3db-2d55-dd16-b7d5-3fa49f42c71b,3255566402,16918379897070621864
+8f1beb87-dae3-71ab-98f0-06f211c510be,4023836738,16958120134660762704
+cc5fa2b0-35c5-415a-64f0-d5185d2b7a0c,2175102381,11946893561343476258
+6daab066-cb59-2001-c641-1c63205e8571,1802077545,16777659263993948698
+792a86a3-c27c-fb8c-625d-83c90962e9cc,397088535,16791325434273848304
+6c7f5cd0-8599-2176-f672-2971989d2c6c,3135440663,13032110026163467214
+9a927d17-ce9e-b10f-1b4e-488a3c0f4a7a,1752300606,3387245787076638912
+5e02313b-bfa9-b656-2788-3e9584806574,3061103097,12062253247690258584
+93655e67-f990-730d-c9db-1eb413d5e961,1457755447,12188036390050206684
+634efd83-acb0-0cc4-3911-58a07f299397,3120218739,16487079839125723120
+37263086-3d09-7f1e-7461-b410a8630843,1480845152,7294713681353311045
+0aa2a5a7-363d-e0ec-a30e-b1e2c152156d,4233949728,10534059860579137492
+4f59011b-7561-15c4-ddfb-37917a483de8,2365343043,12055154467235252187
+a8c364ca-f8b1-1f83-6fbf-3fc3089aa57e,3591116335,8641691481446051795
+f46c1241-5af3-6c1c-0733-c393895e2655,1217109301,3753597275892308644
+7f7de5f4-c140-ef2c-d121-4dcf1189e16a,1457029959,16301766300060762183
+ece02a32-f517-f9ec-3333-c878741a4bdb,331484304,11201592112386139216
+b9b31881-8895-cd01-2df2-913aca19491c,4223932019,3516129604727008375
+9d0314dc-5044-1e56-1c6a-944202fbdc23,1987227969,2075130329463551418
+216e97e1-11d7-816f-faf0-b8d971d4ab78,1699016807,8443401444897994016
+18f55fbe-7349-db48-472c-ecc015439eb2,744055534,6941183824508840535
+6f138c08-33cf-77e5-16b1-756c04c697f9,108363370,15997628865456393893
+81dca0a2-92c1-915d-309b-2983eecb289b,1560865647,14161673245834946250
+63ee3b15-a73f-2636-c687-d24f16d40de8,3128629560,15693016759059796338
+70e643a6-72c0-63a1-cbb7-a52e9c3b214e,2844570367,3513717280296644805
+56dc6b70-0ad5-2c87-3495-bac910aee37c,3018023516,15325782383235759970
+0e9beff7-423e-1caf-4041-9adda104fb75,481166892,16768351428029497802
+ded31228-b9c4-54be-b0ce-e4a58b11902d,3972795398,2872485351904756223
+1742c3b3-0ed0-1a66-977a-6af0d03e732a,3169599549,3627240075007737198
+c1413f60-1d35-8dc2-d88a-1000d752ea81,2903020397,12265694050398709571
+d2bc10fb-2edd-bbaf-5433-266dd606dfd4,2120996687,15547055559384151310
+339bc640-0e35-4583-3aa2-7ba0a2635df6,2523936407,5045189377692189217
+4f40eee2-02c7-a9f6-81c9-a71d50ee9c7d,2086510101,12174414472630844092
+44d871b3-0e96-8d0b-861a-6d116b50b401,710811473,6603492831819154769
+6dbb8577-a963-19d8-a1c9-7b8b1b52a743,28294382,2337984620488182969
+44474a53-306c-0246-6b3d-3aadad6552a6,287387452,5761511309791607743
+d6f55126-1cb2-3eaa-37e3-b0538c28419b,2900531632,3037235422223796178
+5b782ca9-c005-71f7-bd5c-68067246e314,527317514,7921794136956913624
+1396d0b4-2cdf-b283-ad34-1f3476c7b353,2475815005,10999417660801409000
+d2c843e1-3e06-6a0f-0a4c-b094c6f456b5,513363678,7520842427143453287
+67c0509f-8940-ca53-90ae-47f62d719d66,4055712893,16330766820964990622
+2a227ed1-2cf6-a8a7-0904-ed4ab8b61ae8,3926294338,8722304919849797900
+53533c88-be9f-b270-7271-7f9280d1e17b,2607589278,570762790738901796
+386690cf-b27f-93de-1efb-5cffe787888b,191823514,1364894241219890396
+e8d3d84c-7401-a7c1-ef8f-f4a4946c2691,730380611,14437260290157723299
+c03956fd-3498-bd7a-e113-a129a1c91274,379518376,16413620349319527087
+d01ecb6d-c63b-1fa7-9356-202363af8ddd,2443256575,8619137455945983460
+8d33c7ca-4120-0cd9-5f67-18f339dc7aa7,1098866977,7294552085006793674
+ea77734f-a01c-3cb6-01b2-5a4cbafda5bf,2377647872,7888278232994948286
+d5b90927-e181-0e27-b74f-fcce1236ca26,1029109316,8805259357069331200
+42f097f2-908b-bc8f-16a5-8557210d5a20,3434857885,943561313883315258
+9a7ead77-ec48-da66-a4a9-5adafd97f401,1030263940,11250149631617974583
+aa417f87-b999-ac7e-2802-e648e4a2c4b2,1671095246,9160218699104992051
+56b41963-0754-5c06-468c-36a677a44963,2390480509,570384123191152987
+a828516b-cc7c-79d8-d34d-b04d8d002feb,2272298347,11747528668493392783
+4f0a90b9-b9f7-ce35-d17a-0b5dada4c05c,1650314005,13745714103927374414
+f6980532-7212-468f-11d8-a67f8ec9a80c,1579239923,4424904535564486471
+3ea84170-c8d0-bda9-2718-ff8f7f576363,2754906566,16587431260339485337
+409e34d0-1890-7601-6c87-dcf1e60c2c34,2339644824,10112436857523682901
+fa8a2118-2364-5c8e-f218-eb6c5bff9717,596372459,1462977583719118709
+0d34808d-e2e0-1175-fa76-100d58780580,1951392103,14667702033655945146
+79871582-9b55-6359-75ce-7ab8960e82af,2100348809,14969615051733158179
+a6452bcd-859f-d7ee-4005-5adba836c851,1831470239,9057964740548707343
+5283a428-7735-5c13-6625-30d5d2182fec,2128129448,17167824110890798077
+7b31446c-d08b-9752-18e8-330914648626,3111605736,6263962237155620787
+e1d0d151-421b-89a8-b63b-fd52ef99c5a2,385748348,14978280157940347767
+62ec5b15-b81d-5131-c9d2-6d3c5aa204d0,1302660487,11542425356023357042
+8de17421-05b7-30e2-8e53-16e78c1e50d4,973267461,17378636232141726281
+dc87cde9-4d96-eadd-9fdf-c9ee4cdcc96e,3564478130,15680406218975219479
+dd2d0522-7352-c927-c080-20106e424750,3477973695,16562147274661636351
+5e506540-1e60-91d2-6118-dfaa79ad35ad,3785231838,1004286254520534794
+8385f5ac-5eeb-715e-9a69-36db019ad6c6,1130897298,11984127251547457235
+9f90a567-0bd5-b43b-aa13-18cddd98ac22,3865906261,13173603188004229409
+324a7d2c-6349-2c6a-bbc6-3f845897f1dd,3621997352,11260702115108078566
+24a2fe86-e209-a838-740c-fad0d780f934,809832501,17604922549486571504
+105cf2b3-4092-63e3-d432-d6e76e268d23,3045913953,1585218357791688634
+fd5068a9-c692-ba1d-c1ba-774f975dc6ad,2212999486,11590694414373222364
+9c8229c5-1bae-9957-b1bb-7bef2cdb6e7e,2471290911,5078517591721117054
+cc5cc155-2442-f2f2-4a19-f4bc1d4d1ca1,595006325,9899916596683511374
+f0f1d963-45f6-d7b5-e49e-410d06889cfd,4231175731,2069559899622380785
+440d4eb9-a799-14c7-cb87-a753481f69e6,2879530211,6699329575360496128
+23be7fdd-7705-5c60-6445-cf64fc20d0c7,3039123718,16305523093161912620
+feeb8c59-9c5e-4c02-654a-b286ff432d7a,941179058,16974250636470376725
+02840279-641f-3bf7-d756-a232afb8739b,4232413341,13302010232366450190
+735195d0-7048-57d0-04af-69a9cafabee5,543574196,2385247561109859181
+3ffff62b-f96e-c4a5-72bb-f508a4946746,3578773515,6170978729867978693
+289b083f-566f-ee80-23e3-afcdbc49b67c,2550566095,12447078069058548556
+9be5e24e-23f4-501e-649a-831f0599805a,1900604483,16655198143922888911
+ded313a6-12df-06e8-4bd3-63d1df62345e,3714517679,16452102041007781666
+1db33c89-8edc-2617-413c-5bb42bbd6aa9,3592559746,6600216615729546002
+8c409c98-5a79-dec7-6d3f-b8097ac065bd,3405786562,12797810265934997454
+6e0206b5-5dee-ff3d-d65b-2322513c0024,2958625036,16007552950850440043
+9c7368a0-d6b9-d463-24c2-9a59856d8810,2708054627,1134149283985511565
+7333e681-f21d-0e68-943e-6da2ce827adc,2021485995,12838604969723579682
+e0dc2447-bb91-5ba6-e641-60869b4e3a75,1265999053,13938060117417698199
+65d03942-d373-713d-d6ff-2fc6f761e008,250007324,15717203999527023548
+cabe5ebc-2c1b-a5c7-25f4-987a021d1ebd,1618287422,16921141573148191709
+166cb12f-3c23-6ade-79c5-600b44cb891b,2900591792,3019379138026523819
+478442ce-a196-4f9a-d17e-286172bc42cc,1267850465,6849880690043487105
+bce35fe8-b43b-315a-3007-16462b314099,521755352,10126645963680597893
+e101ff11-8634-b741-5557-ec585e41479d,385789401,5617535329259141434
+02f9a632-0386-2e3c-8071-abd74a2cd2bb,3771477813,2648234787926686495
+58f8864e-de0e-fcf8-fa7a-ca6aca968b1c,3442046631,16163459521977139857
+96960d2a-388e-3f24-b6c0-1a1ba1f261d6,3370330405,4878403294204887094
+ca194744-257d-53dd-1d00-499de3884d62,4250521488,4821749785166253546
+196ae09b-cbb8-ee30-263d-379284730703,1080322714,17111217569897060262
+7bf050f4-6289-a8f8-371e-7fb251fa0710,3433543095,12046833564367552086
+2cb69dd0-db69-61bf-71fd-bd708f8cdc0a,910354324,4321648917337312037
+76fafe0d-b181-bd8b-897c-cdc44d068178,2070884184,363619853720361607
+8f73ae49-c93a-5d7b-a339-d2f5db61a1a7,3055531342,10371125705025537342
+63d1e2f7-ad64-7bed-0abc-7394258dc67d,3285083429,17948342407638171171
+606b4f66-0dd3-7968-4e36-e502527d0e3f,728500566,17829237095228423610
+6ef337f8-f182-076b-70e8-34614ea040c8,2684970152,770031155180088674
+141bd84b-5888-2f9a-f522-a1c3eba3856e,225016343,9042849039042916568
+f38dff16-0e28-962a-647e-0db9391ec221,4244962930,15906522466915412891
+a2779a77-c736-482b-44d2-a7f04ddb13ff,3032448737,9797304406511214638
+45da8b83-ccfb-ab06-22b8-db393c75e4f5,3056954507,11705385348688568648
+2d6bd13b-450f-70a8-762b-4f42e65cf88a,4073522412,4240220380949700131
+7044f4da-72a3-ab1c-8e2b-a107bc6e3b05,1303765643,1548692596986837983
+c51cfa02-1100-7fa8-751b-15ca3232c23a,2430782737,13309317552956387421
+149d3242-f0d7-6b7d-7821-fb86828c39de,1933689977,14405197459457686992
+3a065dd0-d011-d288-77f4-652e452cfbe4,1938724697,2799110639154895234
+bb2c188d-d072-875b-df41-a810db51a1eb,3683342740,15476599574513110755
+469c4e82-7d47-2efd-c913-3070e8f2343f,1528701787,18306708313563569213
+7329bfe2-5448-3d2c-c4a9-3faad0dfdd33,3531755756,11054305379143530669
+5557f1b1-dedd-d33d-9a5a-04c6a9b79fe7,3061382088,12286426122654329615
+56fb1478-d965-b13f-a7f7-314976817c8d,711256453,17715500245948331514
+c8a484e7-2aa9-eac3-6c51-7b76df15196b,497342754,9804221621041414804
+700b921f-34b2-2321-8537-1233402a09f5,790520651,4220049371389218937
+25bc0223-a32b-6cec-9675-72a01134da3c,2625580202,14582432860601017278
+2d3c8974-a846-1f3d-5fe7-567064634dca,1021217884,13017580868892773076
+7e52faa3-8ca5-39f6-1e0a-3eeae1cb057a,2712840941,13934002925577824928
+f150fcb1-e670-cf66-3792-a5b9049bf9dd,1533089204,10300637973312667014
+e1d89cc6-12df-e43e-5415-5b700e7a9b20,4670051,4248949512122001316
+9cd9bf6d-5047-f292-dc90-2666aeb26eec,2433161060,14353385996465933367
+f9fd92c4-68d5-7b17-a70b-3eab1083a05a,3510319559,17004164135163458264
+51077b88-ebd8-bd92-50b0-f6febbc15d48,1978574999,10928381363697040738
+622e83bc-496a-5eb8-a462-7ac213a65479,130913840,18365509697090163545
+b04b9638-434b-0b7d-c0ee-8b3a7c951765,1584078045,13391036981127823926
+03f69e39-a813-8429-3871-3d73ca8ded79,1848020617,3715491136499359905
+8ad26d51-4ba6-4fa4-089f-e46eae4e8e10,3520206251,7526607055240035860
+7403f053-283f-8806-2b57-cc415ef85c1f,4184829153,14200121052013572957
+beccd6df-c619-fbd6-c340-5e6d37589e40,1265038157,13926378809073518858
+f6b0a053-8014-c308-4a6e-fd9da293522d,561194158,17453452169040326778
+703f2d53-4b9c-fb1f-a0f1-61d4f1df741e,2786378663,18329800166588696387
+c75bbdf4-83fb-fd7d-d630-19e78ee2eeb8,584512945,1992958352206556263
+384916bf-f2a1-b065-3de3-a8d08b850b10,400755677,132782668745440906
+349d22e3-b1b5-f243-df3a-76f53b8642f1,596151095,17646151756720280098
+8da6ce65-59ee-b218-7fa8-f63c2acdf4b4,2924464590,13790955189642307047
+0a2d4404-94c7-8100-8a73-06e90797f4c8,2283342171,10224846474756712775
+e62f7318-3815-d5b7-40ce-cad92ae1ae85,3747476787,9151046167689274805
+1c6e7801-f8f4-e3fe-4afd-533076791a4c,821485497,13724478673518977851
+d0883c23-d01f-0f80-0231-87344c1e99fb,3073926133,15231700272082540740
+dbe4247b-b9da-c2ea-1985-70bf77087ff9,648146912,14677953521590725997
+8c903916-e482-1e95-0182-83a996ab292b,2070095308,2465982490972384371
+b88bf0f5-ee37-5788-62ad-60e9c15818dc,2222933344,4510753053352325448
+6b9c7701-4eed-43ed-6354-9a404af8fbd7,2973447003,2545795001625528444
+14550d31-5cd6-ab81-fb6f-813bf4605ef6,3552839252,10532601771552128583
+dd41cf6d-c3ba-8e66-f210-2a8571cd7528,1471879777,16262100150971805118
+93b8f758-fd84-e1af-b25b-962f9869775b,3772161757,8062410213569463668
+d0d10463-ba12-a080-2ed9-313aac7eba74,8871128,7668627872665075434
+35d4b251-2037-b5c8-0002-5e88ef24bb4e,3736316802,8500236667570952159
+873858b1-d88c-8972-336a-a124b91f4e84,4194349460,13340629900517576800
+fa1d6859-39ef-d340-c112-f6afa1c883aa,659255558,1752788236787083051
+7e114385-740c-870f-68ce-f77641092c33,4181033859,16059409550162531703
+f9aa7812-4220-f405-de5d-75d9f9907afb,1782641025,7897525100468719151
+8c698daf-9f10-5193-015c-2f51284b7584,1592527188,13091504624261222423
+cef5f270-f38a-56ad-b232-26fced7066b3,1533841649,13100427997783624597
+e536c0cf-2b95-d179-4560-a90e222d8af6,2388584730,3782988792096716955
+e28df018-c32d-2aff-4001-001620e6db0f,3881829282,12723786265538781960
+0d23796b-8e44-8fea-c5d9-e84b55cd8a46,1632697167,10129718568719293358
+fd2c2dcd-a4d7-9de5-2bb2-2f605090a230,3569710524,11040477164258592974
+98aa107f-4d0e-e69a-8b42-599c7887d8c2,469945238,7460128082542744787
+fdeab2af-6336-9093-f6ad-5b267e5d1623,2791818410,5113675181036241416
+1022649b-6e06-600d-c65f-2c4f0a442935,2199328668,3433098125366034952
+11fe39e3-21a3-d815-3d96-4334a9462822,98982015,2079799639854493232
+1304228d-3bfd-2f22-a9bc-66253d96e535,1036957819,12907052397290644586
+e504717e-e711-206e-531f-4770dcb693cd,3350019566,138866358732581915
+b9fad712-2551-c8e4-ab48-99b6a41d6bdd,3406740556,14874730468012941110
+9d2ee3c1-d286-49d7-3d5d-9cb19698bde9,2850677119,3537336516231156670
+d8aa16c5-4a48-bff5-b086-9eae7ea5d43a,2032086712,998753864460669
+2465ec1c-50fb-eeb4-8882-140f419b3ad5,3451340821,1244677714931468461
+b8103163-dbf8-2708-4fff-b3a3267db693,404623331,11295816009881453917
+11f68162-b307-46c5-4486-1b2db553cb66,1182700194,9147071377875993790
+fb6027fd-0098-c89c-3025-debc14749ecc,3041998147,501707372944082689
+955735e7-3416-ee34-2887-6dacfa8ecf44,4090922819,13228258016173990725
+e72b2f60-a3eb-5f67-1504-ccd1f262387d,3215604421,5263938995724355240
+85f55fa9-f0e4-b29f-6366-6b3d16ee1e20,551538850,364222645967453440
+264b29d0-e9a2-df82-b459-eaa031375ff2,1361086185,3553031720915572177
+90657438-49be-5e27-2281-42d40710d81b,2807188740,5898882395885640359
+e6437024-c61d-654b-6487-49326547ed95,3112252252,10979612534406470878
+6bd73c8f-6ae7-5cce-28e9-03f805beb74f,994301845,9232240053125489023
+625675c1-45cf-4269-7a1d-e460e3121b04,2117009368,9284357583630191114
+dfbf1ef6-a507-8c2a-2a01-9be5d0ce0c5a,3941225246,13776901482397291367
+714afdae-de28-ccf9-4386-bc23e20eb2e7,100940471,14304695276162068675
+4dbe405e-3e52-e433-7940-ef19a7712b3c,1412477592,1970979288810673886
+c0feee9f-145e-2575-b3db-fac525265277,1435687880,2312615187277662216
+8b51b7a9-1bed-208c-2d37-8a0a200348bb,2385644311,2969183092660599291
+45ccf477-8e82-5160-cc35-df876b3ccd83,3497953731,16816081198136758676
+6a910fa7-872e-39c6-07bd-daeb9eecdc7b,354109799,9326078814760052645
+ea94fd24-4b1f-46b0-df80-e5916051fa67,413688570,3554562919447150434
+7c7a5e24-0882-7349-0d2c-fcf5052a8e28,904521745,3829720821753446473
+c81113f5-39f7-ae59-cecf-a02c06136e67,3930932495,184984756349633179
+62377e64-86b8-95d9-7bbb-77f03f592832,2916357829,4055788515104653974
+d187af0f-1706-28ba-44c7-64d9f1cedf63,1408363368,2908482064053206744
+b6415f7c-6d1d-9088-a3c3-18bf8f7cb68a,1718969349,109826963936199075
+c9af89f6-ee78-b8ac-339c-fc9cae9f35f9,1010428857,311952765101981106
+60213e5e-5797-553c-d979-ff2e9ff2c87c,2730295187,10807086961043091991
+60597631-f533-8532-8652-01fbee16a699,3657878287,17939748056555522867
+a4edeae0-9a4e-0ba9-718c-fe3c64f4cc7f,2676824277,5635835440025596102
+5541aeb0-bb30-8188-878e-45d543a8922c,77674761,8399960430480918500
+fc711d38-d1dc-a23f-c052-0cfd128e3be4,1817550562,4585030603896151117
+b5d1698b-bab5-1722-fc98-d91558e7e39e,2233604518,16119678711341030489
+decbd353-124e-5970-e7cc-6e0c1b11d66b,2829528831,17533320397221238082
+045b75e4-2190-812c-cd53-1a641be065fd,3821837777,10484407173366841915
+2060d0fe-b290-9e83-d7a7-9630dfd69efe,3861267505,2622874136790705990
+ce1c6420-1845-c200-aee0-7f7b7e3b915a,1929996290,17775830705239138845
+87d77e1b-c2c2-40dc-0410-de60b5353613,3175376946,351065373573037189
+d45697cf-c128-7b9e-86e0-0f03528a12df,1464411396,1948493015821000690
+ed2d52e8-4ac1-790f-8f6d-87ad0c76e965,1848874669,13854866928898841152
+3c33f009-44ca-f5ab-7e76-d93adb2ff68e,2469522910,16987033062958102681
+b3355e87-733e-52f4-608b-276b10c83de5,1894125059,14389333427243994434
+3837f2d1-6ca9-58ff-a5d7-d9276aed0e87,3489724385,16648366694339773090
+b8973fb1-ba80-a39b-e5b3-ad1a7862b1eb,3006718467,12613330313891109053
+02b84997-ba4a-6eb8-88f5-51f3c2b97899,2136109759,16888816272577367667
+d118b47c-43ac-4b3d-c799-7c2763e6d0d4,1492002879,18120819813473504458
+410aaad1-e401-9c2e-2174-b490aa849c21,1375736398,7054819874355698170
+555e4d7d-63e5-3333-6540-1dd682f1b2a6,898294921,14502960583974997642
+99adc8b2-f7fe-6cc0-dc84-775779b16a6d,3146333771,1374575537488310230
+a8954c12-0b05-8b16-e48d-ef457bf514e7,2141942440,3380364607223496848
+2a8ade22-abb3-5db1-0d8b-e4b7b866f548,2424767225,6821714941190963661
+e19af388-1292-9732-0fab-ec186f3e0442,1356902553,3564670455686520245
+058ed530-9207-7362-1de3-cf76389a1444,476034500,6641783297843812130
+eddb767a-f630-fce6-828f-7e48bedd28ba,2396812109,250153131422318430
+45c14c19-89e8-830d-2e95-85df84c5a30d,233149609,3454988483062489363
+b45c469e-ab2e-8866-9bb2-f1b6f585ee75,2260717714,10128353698598550186
+e97ad5ca-cc84-606a-77fa-30c2cc953199,2180682082,4248507776279420820
+bd8aabf7-f498-d9d7-92cf-bb5cd7544901,3183134122,6809188264313670445
+bfc287d5-7bc8-c60c-6197-8b5392b21556,4249271212,11741493933607197757
+8d95c4ab-6b86-d000-03bb-d08682aaad37,4139017128,12359692737983978442
+d669e2d9-67d9-fe62-3452-6983bbb11fc2,1452286665,13003346219794442348
+8fa537dd-df64-88b3-a62c-fb814036dcc0,573398170,4624515584286108454
+52bb8b34-359c-c310-2cc8-93b3b6a1328f,2787577035,4506627677487361879
+4d2ee1e8-7b41-ffd7-d2e7-4bf4e6661dc6,1425479698,16861140541859862080
+48911a34-5ff7-e64e-ad83-940dae56792f,3356866963,12216955568930830265
+ef4298ae-01c5-59d3-8a89-005964989737,1489288035,4348910816665567990
+8aac8477-6f18-f787-bbe8-80326c6343c7,2798674300,13006355591179467883
+ad345284-87ef-0995-f274-264f63ea6135,278992480,13828943105155855992
+1e4bdf96-406a-04a0-e4e8-7ba7ed684ab0,836647048,8111208200556824905
+c596d0e6-978f-84ea-9c35-13fc36fa676a,2223871638,8046672149192391962
+43da6bd0-7ad9-4790-b149-526424040cb3,2925933044,5105866317945068847
+8ca0a7c7-6548-4648-bce0-82b5981dccda,1059886023,9338960253179577920
+cb9dc0d1-5ac7-e9b6-452e-51901efbca96,1666090589,14532096942843301906
+cc6ffbcf-89f1-3cdc-e808-72974695fffd,4022017041,10938920557247908998
+b13085cb-6f98-c7e3-c2f0-cc96bc81ce05,1930922113,17229067270201486511
+850f0d43-edf6-0a7d-f6e7-12210326ea18,1846231293,10447587713853417364
+2abdd446-3161-6ccf-1434-f32c5b7735ad,2385189052,10445476193955829073
+875d41a4-802c-065a-2b22-5376b19af51f,983889539,5813080693093867208
+5a08161f-bce2-faf1-9a56-0b3063d43275,556641566,13708448155744526431
+74e1eda5-f980-5a6b-0145-c0d606ac119a,4144953729,12757566821883159582
+0af0a7bc-0448-c46e-b170-07059da330df,2180384738,6813693468227370134
+d2a6b7b0-f500-b01e-a8a5-c77ea4c066f5,2323792009,3280650480829563166
+e561a001-ae5b-0487-bb84-3b6e2191e916,4193993526,1510653444464049767
+2da0402c-685d-04c3-e38f-3b8eac0405fa,2618361775,4636896778728026328
+b566f37e-e008-56cc-1693-8218ea4dbf93,809330065,2408545396101524451
+5e7a3b56-7548-c146-485b-e4c4ac7c4a5c,4009019940,7218429808227604222
+37a5ef04-40e1-e488-70f4-22a6dbe936d7,666392778,11709355559522886343
+83af0b9a-15fb-2fbf-c0cb-58f06c9e3eb4,83672248,1683266456487316779
+e3b05e43-533b-7996-ae0a-bf48d18132aa,1971135159,4354857012246938016
+82c19382-3f49-19ad-a7b2-fa5ed52c63f9,3950132011,10453109917137287377
+cd9ea50b-799b-adf3-d185-bb451cee806d,690715658,11268613171567473433
+9a913bf6-6ac4-510c-5057-d21a752075ea,3333113981,1648610770791162193
+7ab94568-985c-4a5e-1727-e3c2f07b74ae,355262153,14748944938812347831
+bd674fed-c597-0acc-b63c-577e44240af1,2117117451,10934542410323728194
+a977a17b-1f4d-8d89-f3db-c132d1ac59ed,142636767,10016588180242616834
+5d665d09-6ab8-148d-1f38-8b7995a44640,1419733544,14941624461421276250
+9a18bc7e-451f-0dea-630f-2a106b5ca76e,1646896572,17883150622391185544
+2cb82276-5882-fe45-f129-9ac7755f6c0d,103453780,11908457558622599829
+87888be5-9e39-8932-abec-0e188c8137fd,3702522420,584354151228695600
+b90bc33d-238d-d1e5-1eca-a07f79a3f913,821419460,5828428120036120195
+cd2a55ee-c8b0-93ac-d306-2eb6b999107c,3585487177,808625924858571627
+e3e4f6ad-9d44-9dbd-d4d0-4e39e09e04da,1734501339,6980819278920218280
+d96d36c9-0576-fc89-ebd3-35e176f27954,3634901508,18074115147630329639
+e2964e39-a374-fb99-d566-e9927b58df01,1091998414,17025438965856610314
+990f9489-fd6a-1a79-4b69-db87f4e4f9dc,1903519997,15278906238957336602
+2bfd5d14-a789-3194-052d-a53de3175e7c,1386472635,15069314355375274365
+7a69aaed-571e-a29a-4f2d-e9afe639a531,4050431929,6857106443211595922
+be8fef61-49a7-95ef-843b-cf14b2180fd3,2542808968,16469606587953514699
+68ffd9fa-8333-1c4f-cb6e-ba692c56b47f,2315049959,5920161405022095234
+9a43f76a-88c6-90bf-5402-ffc5586151c9,3755038478,11462424592742854028
+84390331-89a0-139d-b356-fcbcd6551046,3295923841,15362098356571482569
+421b59fd-d76d-f659-2e3d-aae76e3fb835,1530770223,577922642483737312
+d9f52ff1-45a4-3782-daf7-2adb31b80751,2068392941,5841902594060388146
+a66e6bc8-6b26-0f94-38e5-942899fb9a7f,896731309,5113923318955173559
+813f8931-1ca3-b787-cf1e-e3905a44e3b8,1930761671,17511021638762137893
+d82c33fc-7a36-9514-3d8f-c2beaf92c1c5,4101727815,14536528927900630559
+b5e621b6-13c0-e04d-2840-8ab0c433d589,2822555000,13332099027971250419
+de465242-2f31-d5c2-729a-ff2b34d0a4e2,3969067342,16155132294196887158
+27933c31-2f78-3a9b-5393-a9d746e2687e,2480277791,18319156584125325115
+5f963485-c840-b11d-0f03-faefba5d9626,3318889636,16945917990065116554
+dd945be7-0d51-97ec-ddc9-a9a0aa46e8c9,320206176,9245423212164237190
+f15273d9-0779-339f-9e9b-ed4ce83c789c,2935299467,9987881191283665609
+193eb534-ba6c-debd-d8ff-dea075e32576,1522514301,7655360224267062063
+d2e94988-7a5c-b8d3-da4d-40b35ec2cfbc,3562767212,12113734561437599366
+67e675c0-e4cc-bb1e-efcd-6da683316f44,1662730480,16716604897258632891
+bef6fc8b-8746-9eba-287f-ae7dca4158fd,681343838,15281633542174790286
+21f96221-ad5a-a0cd-8de5-cdaaae56c4ef,1341921745,209487577519592992
+7ed77359-2f72-97bf-3efd-b40965b5c326,1792500204,13337095318137043137
+20781886-ba42-b698-5532-a62f1aaa5657,212587990,3744862006572626914
+680735a4-e0ad-599f-c492-6f2ac0e8a217,2270773790,7558053189765350154
+57b6ff54-ed6b-207e-d570-af45bba63126,1457336386,15631303516765111505
+fd3b050a-cc2e-8f19-fdfb-31e5d7643d39,795785332,16263378867216756159
+299805f9-a810-8a74-a589-63cfe1a1fbd8,2630488791,7002237406595835609
+45e5c4db-9e8b-0c57-b62a-cb6cf330ccb6,2120759125,3492878224626292272
+49b686be-b44e-5385-6f96-f54aec7b021d,4072087364,8312889691382185081
+ed56fcfc-1a57-1c78-07ed-0360c5a81098,2381316553,2603183388667984338
+4b12b5f1-de43-074e-0f7a-88dc6a7392d1,1621796990,6075464217856466924
+edc6b46f-9551-2080-986d-b004b233d917,3771704778,8578293013194842651
+3b594801-a497-b33b-b906-520e35cb7ee5,1349380533,5613969266690487663
+814567df-daee-a9d3-b999-8ac09a173be0,916978591,11138210151514102541
+99a8cfa6-15c2-5d46-9a63-eb19cc32fd6b,2357659089,10981076384666418602
+bb70a382-841f-44fb-81c0-8a8b6ccff5e5,1452907480,532351061807352317
+62d4a04e-1de8-543c-7161-b37d7fcf87fd,776305035,6094825078515357775
+41edd950-2e09-730f-0d3a-39c347e4d1c6,3637922883,12652992985849815535
+c2c110e1-c7a1-99b9-35e7-9ae20ddb82c5,1805812511,16441157005321104899
+f74a0077-f618-b84d-2c27-065058bbf32e,16753370,2474813945167720684
+af1f90a3-ac06-3f87-9b38-c8cef0b963b2,3955610490,15224285996091642035
+613754e5-7200-d50e-6d3c-bfb8739f56b8,3149768305,2263148948343887687
+01468fc1-a4c4-ef9b-304f-69133ac0dfd2,3893855380,844299222230350500
+756d7fb2-c4fc-7fc1-90bc-7c4e7559f6a6,1320697667,10659240429649390228
+22e7e961-dd43-6c6e-31bf-e8e4619878eb,2419389239,1597740090168352504
+ab6d594b-93d2-abc5-cfa3-aa7a5b620f99,2484869570,15655180167749837724
+fbc527e0-525a-dbfa-adf2-383d5c2eaf2c,1014003511,7757289185597711565
+1b201e19-f04d-fd04-29ae-024bdcd623b4,1848108247,14099442934759716389
+13ea90ea-3dc4-262d-9bad-986ab58b2aa6,839929789,18071905561908069161
+c7d89e35-8ac2-7df8-82ea-76272715231e,2248568704,14467640383146777979
+91c899d6-2e56-fa41-b54e-ec7b1f875962,1403027573,17547137784931472643
+62d5e693-5b13-8878-6c95-e02f6c1b3546,3683748543,3310699570383046845
+1c4a5bab-6f11-2f0a-6f47-2cb8e8870cb2,2593251008,10886270615859884128
+89147c27-059b-4318-0328-fd6b0cdfecf1,3141439571,15852780567750173028
+cd9a7e20-e0a5-dade-f0e5-b387f9b7ee31,495820390,10680414516022561606
+84cbef2e-39eb-7e4f-4c9b-1c3deb823da5,2504358101,14216555217053901014
+23067df1-26d1-f71c-f96a-49ece7244f3c,1095517570,2804336580235130022
+ea0b8cd4-c86f-f9db-bfd2-fac2d9217d1c,3577000722,15614715666623333258
+b6fb5b33-db7e-6041-835c-d859f2adc0a7,3540909436,1379467471931647694
+1e242649-a0d6-8833-b212-f6126db0927e,2943245486,12747051654821366569
+d845949d-1ad3-905f-8e44-070c2296cd03,1178207898,3924138713796550986
+c8d1f5f1-789d-08d8-8f3f-4fdb94ca1dd8,1156506981,9396972757311688279
+43070a47-fb91-e04b-d102-bb8b699702b7,2638248187,14524920458729952311
+7c7fa789-0458-6e53-5e43-02f2365b45e3,3265487595,6034962539470210982
+4e724704-67cf-3b09-7e4b-d6fefc165bd1,1484890331,11996327073614862258
+a82956c9-9e7c-3e3b-e863-dc963da9bd20,2496722002,13112057885742239463
+672d625e-b0f5-3242-38b8-6c29bbaf43b3,1210929527,5084063921877787994
+421545fd-eb16-674d-a726-9c6f726b9680,216328887,9474364532540613129
+c4d58d9b-5ac3-47df-dfb6-2a7f9bc677d2,3112476791,17683410105127677550
+9a06b6ac-a058-9f2e-685f-673e3e460138,3056995610,14058003427340315523
+3f2bfe62-695a-8303-f5a9-0d8bbf9ebf7c,3953555989,14414489494729079323
+272de3af-3bbc-d506-35a6-72bcc449938b,3391182014,15838027824126718501
+b426a6e0-101e-6d07-532c-d96a5c9de075,958489087,793459580935203052
+61b80576-e9ff-3393-d157-dd8cd7dc81e0,896298796,6811093484914534576
+c6099dc2-b8bd-8766-73fc-47963bf3b80d,1129604222,6837976510383439462
+1b7af42a-1604-7ef7-a6f2-54fe42a27253,4157267962,6301257112120333354
+cfbe0af1-a12d-34fd-7d4b-211fda970c5c,3584481178,14650905923043100578
+0d1e8c01-26c9-8935-af7d-d00430cb027b,1164664603,18421380070846058845
+62eae7f2-3467-b7aa-a95b-2708da06a072,693863763,5084054906703708359
+c75b642a-84d7-67f0-2ee9-7f081b2e1754,2350276600,8275837733696053189
+6c09d68c-e136-f7ff-3e66-553a2a0cfb98,2951756086,1424065170610441145
+6d693f4e-cf15-ee85-c5dc-65b70ac9df63,211125771,4520049438615990036
+bd9d58a1-aea8-baea-7b74-333a1aca3941,4212880875,18165340835824364549
+1b261de1-39dd-7498-5854-ea221aa64eb0,26160136,12290949305335652112
+ad0ae7fe-6767-1981-01da-61ba55892635,4150789392,18066225541592910657
+706b9272-5a92-df40-37e6-785e5438df0e,4089578794,11276815413550938451
+3be1d2ec-4a10-d8e6-088e-5184b3e6daa2,2735645683,13034053713478440443
+d3b52524-5321-7b1a-f860-1fb6f2b8a36b,4178037997,9039134608606798713
+931229ab-6635-9b90-fd49-e18e510af70a,1390705334,17263398357070821637
+1eb598c9-cb26-f655-84e1-b0e429854a9c,1299633593,2940152981877243411
+9794fff7-091e-ce59-c440-e90be87f0010,1597724244,9724435441406873518
+942de0c8-c2de-090e-2520-b1575412eb47,1862280157,14304956579337605093
+61ce4269-37bf-cba5-f88e-981f470dd7f0,4159520861,3383548663332296898
+875e2a72-4f5d-7600-15cc-907dad59cfe7,4270937943,10263061201430338543
+e8546059-1013-8884-7a20-185d8fdc213c,1980009654,12300610004483684390
+b9026104-94b9-012a-79ba-405d023dc3e1,2770385310,9025803640989317610
+488ffb12-22df-1e13-5587-0bc0e3bc8cac,2769842553,12834106464835287694
+17a8cdb7-734b-e24b-22e9-96387037de6c,2777249386,14660697730575454728
+e868d516-7097-5969-9442-f14ad5bb042f,741997777,2453228093862460172
+726b9654-ee87-bcc3-42ff-a4bbf467a126,484448545,12396657934856537974
+3096d8e0-a00d-fad4-1743-f36810d68cc7,3534995305,16865427679977972914
+5dbaa481-23cd-5776-579e-3c901f38182a,4163410287,9154091847526382087
+6a07e6f5-741b-22b2-f398-4377eb5ae203,1846685000,1987209050088534328
+871d0d55-97cc-977e-6e43-fe7a83ce1dba,2527681051,5220723722873549735
+d8dc1940-4d8f-9674-29d1-104d894ce7f4,94873122,9735775394161796446
+5bedf9ee-84ff-0e24-ee78-19143e96fc7a,2431141441,6302149672340261458
+f05426af-a108-664f-75c6-35f318e896a6,1173596256,2767940240913354213
+dbbaf890-bf4b-c2dd-ba67-deafb747cc41,720220084,721724850321181194
+e808919f-cefe-1227-9dac-b7d964121a24,3240099240,12474520667363367448
+0b93dd0a-3a87-fd96-bf9b-735c920d7b6f,3756957086,17311313567437344694
+5daf9734-b0e4-5650-6107-ac64db8902ed,554638113,372942496606743602
+b1ed700b-3d48-c883-5cfd-6c0d0881a5a9,507374027,5133923956534405091
+7c85440c-50c1-f473-3ecc-bbde50789810,134757152,13152822191781007330
+c27d4d2b-1159-a974-448e-8527228889c4,2430093138,3340136060341182461
+b7b97ee9-84a8-70b7-9ddc-ab4379330eb6,573418357,5805486767511882601
+0394ba2f-db4c-3490-5b3b-3ef8315f7cfc,3678490769,17007211932656178913
+2b4c8f46-00a7-589e-afb3-10fe088239c5,2497616954,3448487006281922520
+8e09d65d-dac5-01b3-d1c6-baf502d3e203,3205469345,11241164582420403794
+fba51298-4d52-a3d7-5f23-fc5e74ba073f,922191278,9638728577979152746
+cbe96be1-fea0-8535-00a3-a50b38f68008,3754475678,11594555525567422782
+a763407e-1f14-8dfe-e214-b260859e7043,2105472226,4663408517502791276
+0244c05b-1efb-1ca1-4882-378c316317b0,2161014845,9675611562216657835
+e1362d1a-43af-7e76-5b2f-45b78b5adabe,4012879610,13098418722262217289
+d7a0d578-b5f5-6010-23a3-0e5caa28be1b,2064468890,2867272577833234481
+1980f8ae-15aa-cc6c-42c1-265157f120ca,3034656128,837052279473984796
+d7e1c638-e7b5-edde-048a-d3c4c27c78fc,1752601979,2275655860782860090
+ed5817e2-e4fb-f62f-485a-be90e3c1a49f,3787066595,5261821829799756214
+49def43d-614c-3048-c018-5cb6655be4bd,975307709,18269981049348758114
+b8a2c684-5e16-9d01-dbae-affa60510819,3388833015,9351923523822370080
+eeac3996-cc2f-0a37-9dc6-f56583b484f7,3066853962,5104098356271817131
+e6ae80ff-62ff-51b0-8a81-7b3c5ca5f80e,4174431563,8105283992444521684
+63503a8c-0ec9-f079-749f-0ac5622dcc4d,195990746,14676488736861868131
+ba102b73-decf-9656-054e-4d869470a8de,1702032346,529248367003945499
+690fc315-f2fa-1624-a30b-c40ee8ee2c56,3762809606,1159767735202534280
+41e00094-d918-c3dd-8c1b-0c56085b5003,1969000652,11398789715137737934
+7ed51287-932c-e078-5783-cfbe96c38f61,3396866865,6792005691584319951
+948a1624-3d12-b449-f1f9-c87f55e1e216,4217661825,3077572061627186349
+5f0c7592-878d-ed77-823e-9b7b333bfdf3,4077511156,3712158766718622137
+af0a0c3f-2110-a227-7136-0cc0cff2711f,2394415708,10975390250253400952
+99e7b437-db78-00a0-7c91-e962a9bee8a0,1449626602,6191112020014357208
+f9ad216d-017b-238a-221a-44b8bdbae79e,2259987607,8489027416564723611
+87cedf40-7aa8-25c3-b246-9d8de2bb0b6c,3184671137,380961027183011528
+512067c5-67a2-37e2-07cb-fcbe101015c3,3206087451,10427720241897688581
+473fb284-ebf7-f760-f483-dd22448bc6e7,4107952859,4294379058304935881
+78aeb757-4863-0e62-a4f0-78b5d1bc37b0,3587408294,8478155588358035421
+f6bfeaf3-61cd-226f-93bf-b740ad1c568b,3924099050,14836380648290214844
+7a08e03c-00c3-354a-cbb3-8347bc5e37c7,906782959,6383478203465110566
+1202f2c4-6ddc-1b56-26f1-1f013e178401,3518781654,10356952103614462357
+5ec0e81f-9632-e3d9-1b80-e4a745057968,1782366419,475498311444684323
+da68afd6-6bb9-249a-c43d-74a5b20bb215,3171730048,4722755178220903240
+bba4e038-3d33-00e9-af35-24d205ef7f4e,875124701,12269238742074080255
+ce6b0b06-5ba5-ddab-6722-eca97f9978e6,864831850,15535883797334369822
+880d7c58-f4da-e8b1-1122-e94c934000aa,3968481449,6611016135881427386
+e2824ef6-3368-bca6-ed58-ea9a46f28900,3931539018,5293232857018656948
+319f2436-b0f9-e900-c99e-dbede4d5a591,677584925,15069290820690593075
+a70de598-d51d-dc5d-4c23-c950add8a862,2580195048,559312286285734943
+697548d8-9d9c-366d-09db-d0feb13b9ae1,4254483297,17337078807561751532
+99b86a7a-9eb4-66a8-4e29-86f34fea41c0,2682585129,5190888511319298137
+56432dd6-9832-cce8-baf7-72663e82c122,2402505198,17428427914260956330
+9a84bd22-4058-8991-c1aa-b586ac59501f,219320497,11923617018851986964
+90eff72c-b407-db11-44ee-4b53c09cf6bb,2511632411,12183559967371455750
+1f1c1052-838d-e68c-d5ce-d5132e4b798c,1055810842,15257870688128348394
+cd6a31de-4275-b8de-eada-c861ef6394b3,734570280,3158841366381950342
+7c08508a-bfa4-d637-5875-e49d8c787a83,1551623520,13793558749437414449
+19eeba3a-ac86-f8c5-cec6-62151cd3743d,208085435,1405941576059810696
+46994b77-e9d0-c756-0cfd-70ceda74f656,2674557139,11279992459445884977
+e28b9a45-205c-3e84-582c-d5524af89ef3,1501771870,1638060965859413204
+9fd4675d-d618-f56c-110b-ca0e6b5b1aff,116518202,2805852903687778500
+313d0987-11e8-db42-b635-af3485432ee2,2417728808,2750550363392837623
+43fe6f16-6387-335f-3361-f1d33e5c7b78,3076146912,16325498241782993270
+6c87ee4a-85d7-6044-63f2-18c1f635965f,607221120,2953603890515772792
+98d6680a-0ed3-a1e3-b11e-d2ea4cd572f4,1602903894,2402623755715303754
+dc6c94ef-41ba-dd18-75cd-f9e839dc7ad3,850868553,13299076984678149186
+889ed087-4203-5f68-8b14-c855c0ca8017,2386818182,14571302658210318743
+f4712e19-56f2-076b-39af-f6133e2e9925,2415182731,17848814548554963415
+f80b649e-06b9-e4f0-dbaa-eb0971772fdc,2838558725,18174099505867363503
+548a6276-a96d-f220-e471-618379239414,2151994384,7323273186799283263
+3bff7d02-1c37-f8a7-761a-9b01e4aa3af8,2491735744,16141070266462551418
+9aad100a-6de7-713a-8e34-0e486dc0f6a3,55385923,8846913654991627764
+e18bb43c-59d5-7cac-b6d1-d46efcdcd770,73409284,1637327829154184359
+d640ae51-0163-879c-1b87-b7987a967671,3761373361,17644963710552196042
+8b28c9ab-ec79-853d-36c8-955317bf4771,2403568597,10247914851789649770
+5e9aee0e-34ff-98d3-1239-e6cb324b650d,1316537086,10534109763209745666
+e3ddbafa-6760-5def-0f37-a74d9d261aa7,656321442,6754226060898989186
+64d804bf-cb10-f19e-80d8-a0d9143e5e28,306731387,7630984366600651756
+c948506a-1de5-ed56-d670-a1fb5ec11387,2097599858,1135614558452907356
+6cc6e740-6024-dbb2-73f5-658d28277495,1906684756,9506436020671520091
+fdccae09-b3f7-f9f1-ab90-07468f6417ca,3499845050,10748699281938121123
+0082face-2ddc-670f-0373-97cb22850742,2808418876,2882626719309458921
+ff87f0c5-91ff-4420-572c-c4ad1e4b6dc3,1465321286,10528377435128147779
+6c20fa47-3add-9792-6ee2-c0c88d8d04a5,3604517925,16333542785403743020
+4a43f558-44a1-dd88-f913-2db564b4d4d9,1589828980,12333072289930870660
+9cfd29b9-bb00-ec1b-f960-6d96cb520437,1559978434,15956862624967038756
+ab7ee8a2-591e-ef8d-64ee-f839b4fa23f3,30403332,10942718449474789017
+9e5d69a6-e591-568c-87c5-bd528c7ae65e,2507189987,10474563879294287767
+ae9015e2-3d57-da22-1e4c-de9b9cdee7cc,1210120193,540081253675189245
+6e212d8c-7d43-b8fd-21ce-2daf012de0e7,1723835398,8966873205937842542
+5bc37bb5-00ae-02da-d58e-9816dd4b5c3a,2339052780,2348738298537742113
+c26c9432-2057-fc20-9353-6c7783f7bdab,1439831742,4208138779624413898
+cd4e3232-2a6b-3e47-1dfa-99e11100d97a,1668413546,2617387205595954896
+d748a93d-e11c-b4ec-ac31-e1f0f842cd2b,2490464527,9441582538934013456
+55c71499-fff8-ef63-4124-281f4605cc20,2057252962,10896435786458871949
+0af9642e-5b9b-8662-e551-c2e9f76a2d8b,1656595091,12692332478081880681
+4d503623-371b-ebb6-8f38-f5146c9b7a28,2013918113,18416365677324091202
+9956f672-6e7c-a049-ec42-25eb7d0fc793,1162263497,1482119531018431314
+1d4c7cd6-0da6-b67a-30d0-6912576db999,955585665,1731137193297749862
+61550355-256a-942d-57fe-193ab8072dc0,3928042157,1740269013728855267
+021241dc-b3e1-ae3b-b313-0479b83fb694,762463933,16578923927819674477
+ee2a85b6-7e32-c7be-598e-6d64103a4f69,3155239935,5117510450324881422
+ef5d72b1-4038-83eb-4572-711535a8cfa3,347348020,13438056430268483913
+d5466ef7-efdd-824e-ac93-47ac29467efe,477543955,15182212729093581572
+0018baf1-b65f-d370-2868-6137350231ec,3126705638,12635995948040544046
+3c9dfa64-c044-bbc8-cf12-5d4705c14760,4045592823,7036969122506881968
+14035d08-db89-2a9b-4e50-02ce4308d7ed,1521211313,10733981060313190102
+6a357b1b-ac4e-0feb-2456-49614ddd728d,3178420655,10465856532763239130
+eef20eef-bdd7-f456-c63c-959ff89c2bf2,3773783296,7365329435763184629
+00e62b59-e115-29d5-90fe-46b675ed3193,1819826518,7424471616908625001
+185f652d-107e-448e-583e-f08625b02d35,4181378088,12926160183106446467
+2d96e781-110a-4aa4-d99a-61983c5a08d0,2050595181,2121053781846584382
+fc994ac5-6469-93e6-3960-1218f511f2f2,1974968664,5814460189117240875
+fa6b0d2a-a0ee-d32f-03b4-0e9874816fe1,14434119,17655810775204843262
+220dd8de-7cde-4366-575e-390a9d611cc7,3401421418,2721824094099453246
+e4fa81fe-2022-50df-03d3-d1af054483d7,698743518,13934723529333641986
+5e9cd4ae-de80-1645-ae68-fd9295e9bde0,3910682751,15419001311802669230
+dcab967b-267b-5f6e-bdf5-abac8743b9ea,2860517712,15389065720257215838
+3de4003d-f5f2-6b95-6c4b-f998282411ab,3289695960,1790635450120312911
+dbcee932-0d44-0622-d869-96db2bc18572,403782292,13865062572937345070
+f84b492f-3401-6308-d578-acd2c041df8d,1060411824,824754301180961504
+dff17088-734e-f422-ec35-893765b878cb,3940905143,1275370299828472383
+f51dd2e0-b724-895d-1e44-44fa7894dbf7,854464966,12517404438044678636
+cc184c7e-089f-1107-b68b-74766f163bf3,230040012,1126707093895354727
+e5c5e732-c68e-20da-3bb4-dcf39e69ecf6,4221198419,4211704710774919529
+24181b47-82d9-0538-4f6b-a76348e67df4,2240782662,11081422264348356401
+923d27b1-726f-962d-bba8-7c81b2a4a81f,3422226351,14523846258609910007
+3999aa9e-09e0-333a-69a0-8b5229673034,1107660862,13139399466590969841
+b207d724-bdb5-d268-f895-aaa24c8d4e19,1525343716,11611071452245923760
+032dde05-f1bf-263c-6155-218f0e7f21cb,448349184,13133109678680516088
+ec305a9e-b891-4c84-eae9-8dcdbf04ae45,2052891783,15985268185277625834
+5c5df4cf-cb00-505a-deed-97ce816f065d,2098736298,9668916473273134414
+0da42546-66c7-0a33-b219-6a973e3463fd,60020501,18049273008493674142
+a10ba33c-9ea5-6a59-b5f2-23f541d78cff,3731548092,17193298153195008091
+a7903ffe-b44c-e819-0e4d-0954195b6773,2168071128,13153481228260632247
+537215f6-5efc-ac72-1742-35503d1f49fe,1327516144,8197925977424479274
+60f5505e-e3d9-c9d0-7950-ab046bf2bd65,3886178334,2823658212239664563
+a540e8e3-c0c6-796c-8023-f481f08cca68,1342881658,5021520983155082125
+e729dd58-a873-7af9-d956-19bc01fafecf,1594390958,3111395705833111665
+d2169b70-6cda-f0a8-e5c7-46534d4bca05,3650968501,9875347762439377445
+0f07b42b-e3e7-3f3f-8bf3-096f78991889,2993657629,313747921999784706
+74650ca8-0e60-cf78-dc80-2524d3ffeebc,3437381607,7259654564722109147
+338140a9-71d8-b5c5-5710-db9918f4c964,4213998388,10046480588919457876
+b47c7b39-e7bb-4979-d9e7-9c4e8e4e6f66,1715367099,15065760395457773107
+abda48bf-82fc-b92e-0c5c-be7e437db57e,2792903896,6556047003184175967
+c0c3b7f5-135d-cbfc-3029-a36e8807cbc0,3685498986,11447108961209941228
+0b31be83-1647-06c2-6f07-419b524eb01f,345218665,17995825505668389975
+d6bb5f43-d138-38f6-1641-723cbc88cccf,3595641000,809350815661715625
+3b03834d-a34c-13d7-57ca-1eedff7b198d,4122883096,17392226491633044627
+d912a598-982c-b11a-94b0-fb810d3ce4f3,99338049,15702136850588823764
+aa12709a-0c45-b7d8-b3e1-7ac8cc4ecc43,271704684,1951162318420347148
+4ca31b52-6d14-33a3-6908-1af03bff5fca,1279802333,14495343493635999350
+27446f5a-9a14-734b-91bb-3fbc5302470d,3281059537,5560736514594519258
+163013f5-170d-3b72-4996-4a7dc9006b64,3494904201,588974274566511642
+e41fba13-6fdc-d420-3eda-0b052f79987c,3254905040,4461055846864424893
+46ba9bba-2924-9ec6-92de-9b5718a1c751,4077815288,17000970420261323080
+bdf2d325-a593-4adf-c29f-d66ff88298c6,2385424417,1895650713513914366
+4c700177-1638-fe12-3968-66abf92b335d,1171074252,2294165780194058061
+11781247-6724-8539-ee07-a040787ee7e5,4151920365,12475161806071252524
+df206c1d-667f-65eb-a3e5-52dfe3b173dd,3651322092,15980718916599012271
+0b95d7cc-716d-acb0-5f36-586f1aecb904,3601872915,10243928545791955751
+2a58254d-c100-797f-187d-ca95fc3f77e6,4117479401,3261756693043663436
+5ef1ee4f-d91f-fbbb-5e10-50577b0e0a17,1914352735,11277055580123377305
+257c42e1-2a2e-8155-fd29-ca4883619e4b,1061811234,10884443342504348061
+f8571c7b-40c0-c2fd-dcec-0fc798cb5f5e,1688737081,7602469798977607965
+4774baf8-dbea-1f24-bc42-c9fbd17454ad,1693974601,10116465852235688082
+f5cbc332-8956-8cf4-3add-8726338b5160,1828026580,2584760582953267193
+6c81cd44-3870-6383-2a5e-6f9f97f0acb5,293116936,3084520263933791527
+e3db431b-04e6-736b-3b20-1189fc1d08ab,937657857,12613953568343812058
+97a72b6f-4085-bf9b-1f21-66e80ccd52a2,1680055363,14403210542838515643
+f9c940d0-b652-ac79-234a-7bf92fed4977,1280028946,13350580244927887510
+60cd7d88-8f2a-f774-f72f-4fc8c068a96a,2836404774,4851439246528044766
+61c02cb0-dda8-904e-dccf-42b166028428,2849772954,17619800011572211883
+d6a7241c-bf4b-f42f-f838-a4b53b15fa84,1326653,12187276369000665310
+95c6508a-06df-b84b-f141-91546481b050,3607728592,4389442436611199201
+1329578b-27c3-6a3f-c995-c8a5ccb6bca4,3976223370,1725620298339549813
+7579d86c-cc0e-ec9a-f95e-652f9681c514,4225379582,18250371158941640971
+7b966e50-df91-c78b-e628-23175e4fbd8b,3648533119,6860933997296922963
+0b3c3355-a25c-8f01-a980-5370424eceaa,264795308,8581897915752714370
+2f2b0212-cdc7-fd15-cef9-dcc389a24cb6,2802988850,18040402267242387203
+d04b1fb8-9942-0436-ffa9-98fd4e614417,2260253183,15924126611862395482
+ecb46b28-b12f-9dc9-28dd-47a530c32248,4156424402,17001692779595147355
+b1473c40-f5a1-83d1-acd9-b5e8336a6b2a,2444171436,13465333187191918462
+c1aeb013-06bc-4cb6-5799-ec5cdb7c713e,195542549,5197898006196992793
+5146d543-ed90-d396-5b7e-7595417b2a1f,425991832,8787761842512843855
+4d1f1370-3c6c-0bae-7228-fb34380163c7,2159202238,2619781822749306766
+73ca2194-5d56-040b-855d-94967664da00,4083583234,2926411391654765303
+0ae3cc71-9ea1-41d1-9eae-4f698a23e243,4106133390,1579447892462743812
+0c37bd2c-b795-3064-0337-3241e58f3c66,921448874,16156346983704375601
+0d150354-1455-3c97-c414-9e117f2b1e4c,2999512096,2995427113709245599
+bb7e336c-9b76-04af-41bb-cd878e16498d,2029129878,9937959659838852418
+0dc09529-8ad5-d1c0-712d-0d1e35cbfa8f,3958898615,17819476706866805951
+7d6229a2-8138-ace5-4495-a023dde5f39e,1895304078,17105443460657284109
+1ce33937-c5f1-a47d-ca65-e3f666671fb8,795335646,4952673845139638804
+22f8f872-d1c4-0a1f-4ec0-81a6b83df4d0,2020582890,10793250308681336164
+6460a20c-737d-b760-6fc8-afcca6ac9688,2795826273,11214459761174572542
+9c0efe0a-13df-2c32-b52c-b1797d09bbb0,1356404198,16086015618482012107
+0779ca82-6267-1963-f9ed-5d59af27bf63,3713892644,13666509605604484965
+94026fb6-9cbe-94d7-e155-52662ede1b16,1033511069,16572922560625312433
+ef6b5372-8d92-69f6-b55a-03cf9cc3e932,2148453941,2980155948763196233
+3e39768f-df99-0095-ac2f-aaa53a780c62,3196687814,4071156754965634914
+ab773750-27a4-ef96-6ec8-8006d42ba906,686319143,6928450573496745072
+51f0fb59-9be4-4974-76a3-07c841f8e7a9,767393525,3289400304458327323
+69f091e2-a777-4db5-623a-83a056792340,919106398,11750528943030265906
+347ee4f5-a399-fd6b-344d-fbc9abac8ccd,618904925,9386489118047981382
+e51cff3f-f0b2-20a3-1bb1-2fb640ea3b39,3882743191,18153363367691583680
+c06bba64-c146-3eeb-9bc6-480f7f50079e,364841992,6471299678590169990
+c80091cb-ccde-226f-5017-66dceefca3d4,776782187,4490396500127106047
+0a9aed93-e426-4a82-1b46-9b3448894bc1,2430515449,4295661309996128321
+a67f6c8d-9f31-554c-cb25-44b46c7bc6f3,4169385225,796217666586830585
+c3ea7391-aa91-855e-88a3-0fe7c7525ef6,1736952312,15410466965081929208
+286ff8a4-c781-8bd1-3fe2-a645b09a5840,568722440,4559689751505994853
+66dfa03b-6563-60a3-821c-6a63ee980285,2452452504,18011130215526159313
+0e50bfbd-3dc2-6574-7bf8-b85dbcdbe2c4,1013415707,14912896696581608044
+f2b0ddba-a05e-a6df-653e-c8f2b536599f,1711870099,3027111211688187324
+316d32c1-0ef7-1e2e-5707-d25e74a37681,421806012,4805651084379303616
+82643d59-aca6-9b95-8900-8a1559844d1a,2230864416,2588625984644166120
+87dce74a-a6fd-ed7e-ec4d-9b27ad5b17ff,1503544627,5227633931561476426
+e39ab161-99d4-8f40-6693-a5e431503acb,2517922505,15942263694524230688
+d6f09e73-1b34-c3d4-6ae2-f87e9fb1f411,2655389512,5574310518663829701
+f56888e1-55a2-b52f-f292-c64124c67237,3253601056,10544770579522689993
+d8d4be9b-865c-2db1-b5e9-019dd154c48f,152413373,15288990825575106897
+cd61e8e1-14ec-e4d3-4c82-f9207a4a5f46,1812493360,5520550793514634577
+894e11f7-9a76-236a-49ce-d5ea59242e1b,2519083660,9141390607674166430
+0665c02a-17dd-1725-034d-f95d94316c4e,3335069178,11502817716922579526
+d587b12e-9560-8c71-d562-aed1ffbfbc0d,420677867,9749088246112678578
+4fe124f6-31b9-12f6-2c5d-9ace2ede28dd,2471471070,1523038616082475800
+1f3fcb69-ed10-3441-d5d5-753144f76648,2510127494,8286646085073151442
+02854b60-95f2-3ec1-08c6-5930e15634f8,3582542730,8175989157902379415
+735bebd0-af06-f2e3-1e6e-95f8f205b8de,2973476171,9868894539641185323
+6901748b-3eb0-2972-6ab2-13e4d5ca1618,3825115695,2027042868207909670
+b90fa298-7d49-2313-96c4-b9a5eac59e37,2024469461,13263166715736715354
+8f3e945a-2c0e-a8fa-33ad-414f9cc0e37c,3136600611,3128496485690144568
+3872dc89-42fc-99b6-10a2-9c54f7662976,1860692916,16052028735997333261
+3a802a01-e94a-7a88-c7ef-a726f19ad2fd,383316907,1541513290627319189
+4e74910e-8da3-9275-7e04-26610acafc38,3837585183,15146985150098162811
+9454056b-9fae-0c77-2895-7542bd447c8e,4107562531,6797192839665577411
+051d6fe4-d56f-e658-c8f9-39fe0782face,2836640457,8363656607887844010
+31b51b14-098b-ef38-00e6-8af5cc7e6e86,2935749014,12271945605976427544
+47ded8a1-d3b8-5cf3-fa1f-5efcdefc4f23,59341744,9211363034316825523
+4ff97581-90b2-0742-04c8-9579575115ee,3485782996,10415316406427382720
+5387aca8-dc6e-7b5b-2655-54b0931ba6e7,2951754651,515006644004261601
+07b3246c-2003-9e3a-4a34-888c883df819,2096920186,10129785431102786921
+43eda14a-e8b4-c0ed-1a91-f88875a8e3e2,2147067733,8933108127699298525
+d3c533d0-82d6-06b8-cb4d-ac9ddcb68867,3967036,8355147413640524514
+221f69dc-4fea-f579-6318-22e557f25cfb,1327984666,12869926200904258932
+acdb2188-7ffe-d820-bd5c-f283632633f4,3692650636,2131729408096327942
+db30b541-4d67-a4be-fd12-5ad748ba75b0,224581533,4523129468264046400
+c0874bc8-a949-43d0-0751-4e06cb7c0c11,4199601718,16286859883642705009
+b2fe10c9-c8f7-79f0-a381-d380eab249c3,3765237908,8408421662219301596
+5be25cac-40a2-cdbb-3710-15d4eb7b6426,2315357376,17523639885806068778
+e4dde0a9-7377-0cbf-2388-01ec526f8731,3183530191,2093504962925760000
+82ab0519-e3d8-eae5-d433-8d3ec5f78935,3106758295,17202584649303675154
+360b947d-7e14-4435-b185-b41ce8120c07,1086611207,7273833005248725087
+0a7d7e84-70e3-7f16-65e9-00b38b3f1a24,10971382,17646572090913231762
+52bf973a-50f4-e5f5-b212-7ad8176bcc9f,3766683397,4416477395086590561
+6efe3507-a31b-6422-7900-ab550a3fef1e,1001611135,11016511570294896947
+f9318a92-779c-42fc-f8de-541c2957b6cd,2193758056,16023595134608932905
+bac8f457-a96d-ebcd-d40b-9204d12aefe5,3937892205,13492997710379811743
+ec504518-e059-c5e8-259b-0b4c7f1a7e7e,2560246366,13026149800833627058
+4d05b800-f738-248b-5223-96175c772517,2406167026,17755338932487402501
+4754f4f7-3a10-b224-4a53-35c7b15d73cd,505174828,15920222348274555126
+38c0643c-63b1-04ac-5464-7216cdeefb8e,2900145479,11380046310154159826
+1261c431-9981-4e27-49ba-8e7032d1eb33,2113722442,4902584839441289931
+3f33d9fa-0759-411e-7c7f-cc32bead8449,97471682,9309578379486705841
+17e93ba8-805b-e06d-5dc7-cfb13910f264,2625534038,17700652563542553616
+e83136c5-3d98-3629-ef8c-7206753f8007,1770142039,14273137481350737170
+ce3ae683-a847-1058-0d82-2f23a02d59ea,494202020,9599357837189489943
+6b2a277a-3578-cb9b-1cf3-2c889d3de0d4,943763227,10120402658414331307
+6f8879be-db27-c0d7-99ea-0047facb16a7,3018385916,11420372703442720972
+0d5f126f-5cbe-e78b-8d66-ff36fb8b809f,366556983,14621701326377943255
+b361ef06-4942-b08e-4fb8-5639df18cee2,2129164168,9922200529275328432
+95060351-5ef8-1f70-c4d3-46045abd00fe,1075131894,2674098724992322490
+f4f8c802-7bc7-8442-1ffe-d548589df7f9,4253829441,7551149345670137471
+87630a1b-9890-c327-4843-910a32690f7c,632660166,8943423808115174793
+dec7bf52-7a23-0625-0a77-26baf44593f4,3928234773,3868101418536230064
+e5a16f94-a6f2-96dd-a4ec-b9e176c451ac,3121330797,16250675450623658295
+d7f95004-f426-24e9-6e20-58be618490fb,2956427946,15547546386106093585
+9e21f11c-f6c9-3009-7b3a-a84f79040a6b,671709557,14405384498358612337
+8e398c62-eccc-6c22-9a2f-bb6d18af3412,2584521293,13569943813023375407
+97fe53d8-7060-bebc-4772-c6b73e4c5df6,2384843335,6571247955406234237
+70ce2370-0b89-b03b-be41-6033c002c087,1611706586,17529518740116762765
+c0251ce5-41e5-1148-2c6a-026d474ab6cd,910120060,14239396351363036654
+067c6f2d-5f4b-c4a0-b890-a16fe7601461,1806352063,13158648651171092018
+0cc2a841-513a-01e4-973d-77b8ea30d58f,1958717800,16227932998590637487
+0f63c79f-2f80-7478-eaa7-a7375d445986,762032419,7283550374614590859
+7edf5a90-b5ee-c6d4-c5c1-b686c6b18e09,3256397187,12363577793333403827
+f97c251a-b186-b186-8d02-dc9be2714d42,1892422004,17900516788436628666
+90b0ad66-1607-b6aa-5b3c-2183f1136614,3693448022,12797156720764725947
+3afaccf4-166d-426d-cf94-017a71ba1843,3938357032,6412861866021167746
+0a653c75-816e-4551-8b14-1b81abcdefe3,1216565780,9443255131708883892
+7d0207d5-44cc-7eea-8ba7-e85f0422ab38,2063090126,14034563873022059563
+2e92d586-3bb2-2c03-55e9-eb69724a5c86,2927914296,12884128220596953108
+18d3c893-fa9f-d5a4-12bc-9e10cd14c039,1255828622,6384232677541312518
+f6531f45-76ce-a651-2094-788ae0ecda0a,1194361340,8438034170907833588
+b22916dd-b199-7afd-e61d-93e023712736,1277931256,5907934175175188765
+5aeee615-3fd1-ed77-13cd-8f0c1ea71daa,3996777088,418408798282927468
+6bb93ae3-75a3-c52c-1407-ec068d1234a2,1977265915,15160418134491559902
+9e0817f4-bb46-2c15-601a-da79da12cac7,2275124285,18096592517010568321
+41b2da05-997c-3c79-e4a8-445f00b15c60,707983018,734479005747308130
+8ca25110-a1a8-351a-b28e-312cdb9e6bc2,2190383214,11463459905309490202
+18add895-dc1c-5e60-8b10-ab14253e14fb,1087318779,18105509430472095130
+82aa8b62-3f34-e729-eceb-2f2ed7744e14,735363838,3554549328790444191
+dec5922c-7f99-f5b5-8e3f-ad8f71c84e37,664019021,2007815171086717465
+760fa6ba-6cd5-afa2-6879-ea84b39293fc,1445962809,11033516110429389643
+734cbae3-8836-2bca-7fab-28c59ba72189,2746739216,7380908853769365059
+404f289e-5734-3090-45fa-3b7175e983e2,3098866607,766199727443432211
+941aea98-76cb-39f6-d371-5aa06132a99f,1587905650,8075541066259430260
+4bd62b18-9534-4544-fdc8-2d5c8583fdcd,1146169561,15038189788974879024
+8855d11d-42fe-d973-80e3-d8115f3b1cf6,3222569900,17160457555684826193
+d4053148-b8ea-7891-2d40-dae461d1f76f,3384131077,15064220860284002222
+7886bfa9-561f-36ba-5f45-48acba03a075,104980597,198656281422776207
+a5ef082a-9e6c-17ae-df75-95119c5f04e7,2225938363,17303740095435178129
+4413f8ce-ce3b-1064-cc30-20beec698e88,847585750,14249867063738264905
+8ee31fc3-52f2-767f-a15e-1e637e789a9c,3273708574,3180639491791185492
+695e89c9-782f-ea10-1a16-288ec12b5b9d,724277999,9629500676569459297
+853d7d25-243a-d1c6-1c4b-3d870db2f5e8,3334897086,13235736601524376307
+4683824e-c92e-f78e-5b65-ed98690ea107,574432427,9042734643150454975
+1b823091-0e85-b9e9-f543-8d7d15ab048e,3401414,13164905290536630476
+a8f8073b-50c3-4a5a-12c0-8496c73e2f0c,2037490840,8315336609229688126
+04a65d9a-8e45-0127-c8f3-93586a08905a,533316250,6065795795878505439
+e6217b46-ac3e-9e7b-c795-cfb60eb572f1,1479584719,17291077581948416644
+f458fae9-2a48-4eea-771a-852153b17e81,1166754509,6955808490178659204
+fc148dd7-f0fd-9b5f-4b40-e314cbbbbb80,924223875,8344966709881783903
+62ae5eaf-0c23-6ca7-666d-0d8fedbc4ace,369906011,6014756402699670721
+16a5ee63-07d4-a664-a8e7-b5b3ee0b14e0,2730316292,5206522782458981597
+e008e5b8-2616-aa49-5ad4-c08b59520c82,3401546637,16626514443471123716
+eb9e5b03-173f-a465-efc7-0bc52d43e2af,1575954591,6504498533587317265
+3a607ac9-a75f-1c04-8aa8-71ed27689368,2760427777,14933048882555227072
+9adedbad-6d7b-bd32-2c7b-dd3550cbbb76,643566187,6241628467822069771
+34c4667b-ccb5-4fe3-3bdb-3c739c831969,902013522,1369789693885189289
+ed23b67c-7157-932a-3075-933e4ae59a33,3385873963,10440965685652042495
+7f1de7d3-fe9c-eaa2-163b-706581f3a701,2289988157,5446711439663250844
+bb7620e1-bec2-bbfd-0a9a-dd5a201cdfb9,887245597,885458338565271727
+efc5de5c-9afb-dff5-5007-a45bab3a8f6c,1113659456,17565215131504557059
+ebf6bd57-a832-ba4d-dbde-d07826ce241f,1266830935,11370924108762220714
+4a347083-0c5e-2e38-c08a-5366a61203e4,4125701680,13355206336738196038
+22b99635-0829-8c41-3af2-99364b9cfc07,235653054,9208374179951310311
+94063048-6f25-4e56-43ed-e67b56a4d63a,3259486012,8354372883542523883
+a08daad7-c630-02f0-0376-c7c65f530a8f,4232003613,3323575170894335420
+f3165fa1-89fc-4e9c-6e24-6ace1ed36fbd,1190286460,7710281558975599676
+09d27646-e56e-9f4c-a5b9-5505c6c38ee9,3253861181,9610568984282756836
+1fab56fd-147c-7254-8713-dec283d5e87b,1427887951,5718902494649421614
+1da6e938-7cbd-3843-3491-9bf3363ea707,2101555686,6695211203868719312
+dd1bbca9-42d1-16a9-de69-a7075d0fcbde,625713809,13083140506848594037
+857b2959-9c2f-1a7c-0e3d-36601f590f4e,2654198013,15512404692580095150
+337dcc3d-9daa-f6b0-7bac-9a31dc1c244c,2666411372,7174731182062239135
+217010dd-3439-5462-ca5f-d2315478a5a8,198950207,18364606883802288404
+6858d4d0-c8ce-86e9-475e-1b1fa593509d,2133610294,8362424381554875224
+76c61f23-198a-9c69-f00e-a45bddfaedaf,3472263722,10243048571656525960
+6a356301-c417-3135-e8c9-ddf63e0c07b9,529400719,10458773640566441423
+b10d7648-933b-5a80-f3cd-beedafd95f7a,1349453745,16343765844078104852
+619b45cd-2782-7829-de1c-f82c0d933ffb,778406898,14973190278529520375
+aafafdad-fb81-e6c2-6fdf-4100f2eadcd6,642493749,868865387875159600
+1d4c639f-e0c0-da5d-0e27-8a001a4f74a5,1560944029,12583644507938345640
+928da706-8a79-8cf3-837e-26711ed1c977,3635972979,8290197867607557865
+90305e0d-0955-777d-7d51-7f3cf1d4aeb9,2526960850,3214833016538714655
+ef271f57-b12a-7f7b-6f3a-3b8e12e65b83,3951982947,2895438392971989384
+1321748a-39a5-13c0-a9fa-7598ad3b48bb,2790154645,7078789950924001549
+e4ce35e0-4a1b-f7dc-bddf-82cdea7e4900,3639796233,5643311135212447312
+734ca4d4-c593-1f33-6a49-f28279c7d1b7,2208818328,2577608477056081586
+9eaa7e77-1e26-e712-5765-1fca137cc475,650672630,389293983685937598
+b2319494-0625-c912-95bf-cdbbb00e3476,3856848771,6556306325835114702
+ed682a88-3491-2775-3a55-fe96434da2bd,3475108582,16288716038241115751
+967c162e-321c-27b8-5fc7-be11cf986675,2826249050,10278374430054948954
+eed1c291-cc50-3ea3-5517-f8a0181e6485,3512134118,5025056694095077901
+760f0cf5-77c7-0f95-058b-86e6cafe6191,1094640463,4097691397404530998
+bc7a3b90-e80c-2132-833f-ccaf2c1fe970,2398364337,15288859479612772311
+34bfdbc1-1e1c-634b-eeb8-9d66aaf729fd,2387945855,11623955440630014578
+0e721f99-c8d6-b596-b790-cd0da0d16f9c,2797863777,7273443631279761561
+e18e6f8a-c79d-8e8a-e091-509a3e032c67,2691009533,4142802132572152664
+cef644e9-a0fa-9528-d07e-1a9777e3f3bf,2926806827,5906799435400826763
+26f198da-93df-0b47-b160-def6b37b0730,47515359,9598330601387441800
+5afdb943-17cb-3d2b-dba7-4812a5fe4747,1637807549,14283788574509027840
+8e91f4a3-0fa7-7d9a-8f14-4911b02a52e3,46505779,7076928493116983265
+19154cfe-e2ff-12c6-fe57-27d6d0a87b91,1328714994,15286579195401734606
+65bc6b25-a396-6836-03f8-a89a58cc6814,1855687590,2271046004136635081
+ad8eb1c5-3074-4c3e-d0eb-57d7e90a3566,2562633244,16246435860094740866
+82aaa24e-0b7d-4e83-10e6-6d149a8342e1,1771494881,14484080075163361648
+a63c08eb-cdbe-5a51-59a7-163688346398,456305131,10533873735206541065
+992050b6-d003-b69a-dc17-535579c5cab0,3724549825,17837351960514225627
+1e7cc302-5faf-c1b1-7b3a-08b84aef51a4,3791400079,13295581199924219438
+f2a8bd9c-3ce7-71ae-21c2-69e7d265fd34,1177604155,7133191567758502401
+c167b6ed-c5ad-22f5-9127-faec07c831e1,213868925,15719315342869338800
+6cc72293-0868-b61c-c110-14f4e3baa8dc,1466156812,13306598555318525062
+30d27090-9270-f37b-f96a-5f30eb0d882a,944262802,14362748188489880318
+b9321cc9-3d6c-96e7-7aaa-21ee70bed20b,3510743299,6869286985991968447
+44014783-a9a2-5785-266f-bf1498bccbd8,860678579,12387262861854608428
+30e43e10-c322-fac7-fab1-7d8e0282c7fc,3523620778,8148924558683467095
+e351f78b-2f5c-59a4-3068-9dc79f753937,4279258289,9024967941265390352
+520ec198-e5b7-dc06-a4b9-d2f939d69dee,1061698281,5651540028290682955
+3ca70b4a-fc7c-e0ec-265e-e3ccee36f9c0,4065734865,3408446960009372300
+c4e639ff-5438-aa7e-5f5d-c1f3c22af68c,2703033571,9249431154571523939
+3cc05497-8825-43b8-4c11-471a1f0c2e4e,1086756500,1381853599893349236
+97e06013-d3ef-4471-5610-1e53c60732fe,1670219400,16642110930094148258
+2baf682b-aecf-6303-b165-3cafad591b81,949083285,6688071010725752330
+1652fa97-9e31-2a45-19f1-0fad2afc2f68,1766924773,9774964411430311422
+d7f2b566-32b1-257f-e022-0b2b13837886,3888525308,3465423695669528621
+ad66d991-1169-26d6-1377-6ce91bd88fba,566131097,5616327624234973014
+58c8a4ad-a70e-07d9-7df2-d0eee77b737b,3704315573,16168604799025229335
+b6af57ae-671e-f927-97f5-7049b223e481,978925493,1788170528289112089
+0dd3a5b1-23f8-0023-7d49-d6f06583074b,2367141538,2599594288403177113
+8f46a91f-8cf0-ff44-df4d-4ea6ee36e6ce,1891366383,7330159220489138804
+b66f1b20-0361-b235-5c22-8019559d07f3,3755685361,18173086404917214600
+21a968eb-0f2a-d000-8232-eab63c54d407,2963975120,4710167893390909153
+d8b8a146-0925-876e-7c5f-908067217653,2726088256,13053710714524610842
+3951ee7e-5cfa-4cac-8e71-3a3e01dee218,3117529971,10159684241456318642
+e42d8fec-2926-f939-7a25-a5e7795a6a31,2634623016,13938539703376449970
+c334c71d-957b-b11f-60d8-f44215d85082,3263568366,6282737444241117508
+c7424793-cd23-ceae-5a5f-a06229e7e59b,3565837165,545215459313683700
+a6a1b587-d826-a821-07e8-508577c4b310,3315631430,16293240731715566603
+d7b8bf82-fd49-e4a7-c6a3-c5af0005fc27,3523876135,11134137232107016390
+68c195ef-01b0-3f2f-1a32-bb111ed44ab3,1252533222,11370698342561993077
+18c64ad9-d4b6-b293-ec90-9f17c7f7bdae,2115372180,11145789738420282091
+c2e8125b-7726-5848-bce7-73cf473b7568,3002893193,2439995669924658178
+f23d0431-9602-e56f-cf7d-59178f987822,2877522342,9456531831001242519
+229e59a1-5a8d-b51a-29e8-5929a6ab57e9,1019442110,16969866792774813203
+bc00dace-8bb2-e2b8-4ef2-7728ec39f54b,158401839,17943973053746712864
+03de899e-b5c2-3c26-14fa-612d60db3e05,2075995339,14790231433489543446
+ee912065-2845-ede7-b3f6-6790803146e1,1374512096,17285250015848082863
+9b1240aa-8c89-e4d9-b644-328ee1f15d40,1632350917,4832771022215198925
+02bd67ec-fab0-6014-7f09-cd90d0214c20,1731240335,15006317829372847508
+94ed7d43-a935-88e4-02f0-525fec2a88ea,340195279,10499483051418914528
+2aa4ef76-7eb8-386a-e18b-ece4f41fdd46,4015949561,7698452255352209649
+3b3f6efd-f3aa-3e0a-4224-30e25cca4453,623352658,121783031874632106
+1edcae29-80ea-07a0-8e17-71df39ece935,1200084192,16142664604650626266
+4f260620-cc50-e541-51ea-caf766098e3d,3536394348,7663730977501759061
+544f8048-06cb-53be-c0b9-7bcbea0a6b92,228198538,17134301736609711965
+29db3f50-505f-64d1-d0c7-5eb1aad3bd35,2318533333,5895324659667449002
+bee090fd-ba7d-1aeb-00b7-d64e19aa65b4,1344734270,17502907853420861838
+9300ba4c-5f78-da4c-0023-88c842c20e2a,3791468644,15438081200315238155
+2379bd41-fa7a-52a6-8b28-c887cc6e13f5,2125761805,8299852330416747215
+cbd2c0b4-e369-8aff-b9c4-93192e24d1b0,1223619595,10750965195116790818
+13529716-7571-d3c9-1c22-c58f68f7198d,3088387272,13121787319456848128
+5d36dfd9-170d-2cab-f3d0-0637675fd9bc,2655287719,16547531499180428130
+e8cafdff-f8b7-1738-3545-d5793aafc2dd,1435168741,11165506643305093619
+145ff73e-1732-2d7f-8b90-c06ba42de11b,3557131889,15769634943118441460
+ce4e9a51-b746-5edb-7ab1-73d4fcca1ee7,706042686,3066876225898106662
+8828ec98-4e3a-3f2f-62ba-896acec0e85b,124294857,2543965896458163363
+a990e104-7655-de1f-d2a8-53b5f240ab49,4082099819,973359959943166802
+a8e4608c-0e37-c1d0-3d4a-7bee29b830cd,2732237364,2325374739762219946
+ecda04ae-3979-81f7-f145-0928fecb1dde,1944959043,5936985910872323734
+266ab00b-acc3-dbfe-bcea-65cfdab63142,1322533816,4793767438168828040
+b5c36236-d904-5751-843c-be3b566e9bc6,482591425,1419523841484684847
+b38b55b6-3340-c44a-91df-1db7acbca219,3286782363,3342816268250110212
+afccdc84-67c1-975f-b38a-73608c2ac524,1372145370,1719801312096087339
+d74c1c8b-9439-8b2b-07e9-285e477602eb,2195301445,865296760424910753
+c83e2b8b-0cbf-5b2c-b308-6eab22f87f3f,3733749906,4766022544701804067
+5bcebe36-00f2-728e-ff4b-c1166d817e26,3468738884,3368530052946968266
+ccc04cc0-5b2a-2b93-7384-95d808aff82a,438182861,6395614865206167907
+341ba97e-159a-c010-fff6-aac9e1a6f06f,3493530464,13182352127502422456
+7fd32498-5f0e-0b66-acbc-650b22d0dd42,1966063114,15192330392653014017
+4f687763-bd4f-176f-0bc9-ecaf2d3a4a47,3282851291,1270602284538802724
+68b18e2a-b433-8017-6978-aacce8371b5e,3360423655,3607613409856262957
+72909ecc-f459-7472-b4a4-1899a276a50a,1764740066,7902010010236407800
+4a06b058-a1cb-5f26-22e0-d8e66aab73c3,1173141778,8411987070055185100
+84c4a92c-0568-6a86-c9c0-7925fd29f7bf,2406161484,7065659731597891400
+f14a93b6-3850-d129-0156-f1b4c6379186,514259719,4129065221428088501
+373d10fe-cda0-c2e9-dff8-65c2b39405d1,1604937916,16408727155164206733
+d3949a55-ab41-a393-f06a-9c63beed9b49,1375009031,13037327730341297977
+549ab9b7-68d6-3d24-69b0-d77309a912bc,2786571755,5298045629106280617
+d05c1847-89b3-2e43-1200-a0034dddce31,736822313,3393023145860690743
+8548cd34-e7ac-df97-6c40-6b5d8a55b734,2697834493,17958527393890239953
+9c12cd9f-15db-cc24-1b46-f28a5c2412b7,4150748902,17776043544471901055
+63ceccad-0957-d548-616e-fdc2643c26b2,3370147398,834196530942601332
+dfdcb7c0-3381-6b57-699d-5846a84a19bf,998417036,3676982340136865444
+66c35062-ed85-1c4e-c346-d9d4e618d281,2740248133,8819025540280000626
+0d0a69ad-01b4-fcc5-f67c-eed5e2c48880,3293348826,7396422651775181923
+96191f39-e930-e5bf-3ba2-eb481470d7b9,2275804490,13940177402216871356
+a530b141-cc8e-fd13-9d19-dfb089823970,4089285781,8894192117450751240
+dd457988-6241-22a7-fb10-b92ce570359e,52063805,16357426147256768137
+95aad58b-58cd-7e91-de40-08708bb1e246,1457923035,383839042529592968
+d9cd5ac1-dc38-64d3-4b09-d6ecb670af8c,4068632135,16128832140076917823
+ce79991a-ed91-9e8c-3e95-f1425e1d2980,1920513695,16387603177501652202
+ee0e1774-18b1-c8e9-1c65-3bc09e503c31,1666787461,333466084421648767
+24107bfa-fbc1-c4f1-245f-2381164adc0e,3653247573,2480563438555086948
+50fa7793-1cfe-9bad-c4d2-b4f89aaf4c08,2204945755,3431679679256237199
+0a53629c-32ef-e300-1611-391e0f068c77,3601917483,4771835261346842107
+1651325e-c78e-0881-6017-ce22d9a35dc0,1914020875,395603610781234178
+2c1e25b2-c7cf-d916-9c9b-bf422a6d4a01,2160491082,2328596650082507654
+db400958-61e6-764c-8797-8106a7db2832,1389430712,17440076982126371037
+e9bfac26-f61f-8bc2-46aa-29591ccbd652,162104366,8335567883484573060
+c6428b53-9168-d409-2064-9158b49699a1,3907697691,9469288964336890101
+feba93c6-bfce-1278-9f37-1f6702bff4b2,1638165141,8388105709342105016
+26acf7c1-f1a3-7135-b538-6517c8ec9060,2139031117,16401172299086605373
+b2d90f33-def0-6810-4122-a9597f8caa07,1393620142,780345556094773966
+4e9bcb2c-c55d-1ee0-f195-88ebd279b4b4,3871666031,1480601751047427765
+4a589059-b745-c302-0a26-ca6a73295d28,870233311,10766932674406408170
+9ed101e3-b68f-78b6-cb0a-b27ef9d2dab0,2441463050,12410700902701618193
+bbfc95d5-140a-de1f-879d-f984979a6b57,4289495088,16957487760040753350
+4d9a2d1b-12d9-5c67-c02f-169fa1214f41,4019322407,635383868779416296
+9d3786fc-eb9d-3388-b8bb-ae10302ccbb5,2366168838,15983309374748295358
+8b5a9cc0-f7ae-b1cf-3dd2-ab609300174a,3419959400,17276955379993814279
+3f8c3ff4-7c1b-af12-cb22-e0abdd7d81f9,2373296687,13820017857996541364
+c2ea81a7-4b57-c283-b966-892c12eb1aec,3552594646,8152689932649161493
+82114686-c92e-adb0-e031-16619d59b1d2,3062216614,3441420358297226680
+b0f83b8f-d229-987a-4e9c-88887e8c3709,1552521634,14323429753738203330
+58db6845-05fd-ec09-c472-7c96ff494868,3659957114,1303687311411472195
+55eacce4-df39-3855-8f69-acac1675e223,665551594,14934937667801928117
+dcf3d6fe-af92-39b9-8dc7-d4e8affa8aa2,2038451020,3497868121039135474
+24ae4608-9aa5-4103-9614-a3fe976a0844,2996778657,6276119552664601904
+2420e9e4-1a4e-38e0-f034-bc1242d65196,1099216379,205007408475088156
+00724b8b-22c5-8d09-e121-a90d5577b698,3429872608,5331431116751338848
+838176c1-9ff7-c087-df88-5351072c5959,4259893960,12194807257239376314
+fa6c3958-ab09-4f62-c4e4-406dd819359a,1958490865,2867033630886213524
+be69560a-49b7-03ca-3c2b-018aa1f0e85a,3541940045,9578047941458251684
+ab066851-a29c-a7bf-4c78-82ee35cd9607,4062246191,12115148832274867923
+75435fc1-af55-34d8-393c-41313216229f,2941669419,5432497209139835658
+2f7f932b-b954-9fb3-8290-1d93ddc5cf1b,643766808,17582107306275121854
+24607dba-53e2-9b26-6a12-a7a532d95aa9,63042326,15960423474354096481
+54e54c1c-1967-7a4c-0463-098371599035,612061488,12256268070948116960
+73bd400c-5e9a-5a2d-53ac-5c0ad8a4c3f2,311816301,13237578391896549151
+c334844b-1f70-be2b-3d73-60311d47f6f6,2865154403,298856848463754885
+56033804-2ac5-96e9-b6dc-15da4a7808fa,719814332,3299194429042471939
+5bbfd288-ebcc-5924-fed6-df6f51516c3c,2409825871,3503761172942749701
+e97c8adb-6ab8-d92e-1ce6-fe16e4e6d53a,3843568794,3214692393074250906
+1b2caa78-8a20-58c5-03fe-afe2f8ac803a,1979538134,17063458627276817900
+fd9bfc8d-e67c-572b-ca60-59d09f7013c1,47411899,13725938866611479355
+eb251a55-c75d-a8ba-080b-754b3b20fdcf,1698618530,3148426508588352136
+8441d692-c76b-9b90-a907-b3b404b4d4b4,3021849480,302189349120906168
+eb05d104-f130-3b75-2359-8f7ab5a68715,1767610280,12696275247026791665
+1b3965b3-0c6b-f981-64d0-2f0d647c0031,222844964,5666922402621509347
+b7f724f4-5846-5f56-672f-083432a93fc9,2501216415,431822178090732872
+080e4039-45e5-c18e-f792-7781f94035f5,3249886515,8565991092839332767
+a96745d9-b7e7-0bf3-fd26-faaa2a71770b,1634541559,3877008101744616106
+8c566faa-8715-2bb7-43b1-bc8647b3d6a3,844612853,1552715995901979940
+bf25a43d-b16d-d665-0496-35463c0c8938,2495515063,14449480921429478356
+7e4aadf0-3ee3-23bb-7934-c849f7cb01aa,2420380216,8817102130088277916
+6376d777-2cee-b66c-4cac-0730fc9ad0a0,1482036009,831365317601750246
+85343b5a-3e3f-f7e4-a8e1-1e164c793276,2325754475,14575248923941001646
+91935a0f-2a78-f5f7-5eef-c3d486529a70,2315262176,5526317706867394555
+fe5b68d4-67ca-5831-a282-3a57d77455dd,125390221,12514538134044175589
+c3727a44-ff17-ea02-a72f-201e63f0bec5,3480553818,5887123357821280158
+7a8b2e40-b68e-c594-0a49-53c44cb484dc,2297129121,8329299513627298335
+1cf0871e-7966-d6c5-8563-fda52c9083d9,2833824882,1551510409440378084
+0c29acec-c5f1-261a-78de-fba84bfa2de5,3154764942,11278902414048788108
+b9bd5a29-6890-bdeb-d89a-a74f719841b2,1175937246,3800843255993709619
+381c48c7-58c5-9268-f836-e7eebf657aa4,2701758945,14799366774516673213
+86d99e0b-5667-b2bc-eb48-ccd18e9d1647,3646852844,16737187542982532226
+fa8f33dc-280e-eb0e-5915-175694927d58,2275084790,827830583416732997
+2fb11b86-2a52-b47b-3fc5-719c378e6e68,3307739427,16823674540198488251
+14b7384f-5a84-4457-3b59-3b0e5a1badc2,1232027166,3742669165540177899
+6c32cbc3-aad0-f4a4-87a0-801d5a0c0f5b,1971968398,2466596391712616486
+9054fd6c-0a5a-fc7f-25fd-38f5d508941e,1317368125,11320974529276383357
+839f3ff4-f553-580d-aa46-7cbba9eb5679,2942206972,186656588432633367
+877dfa6a-8efd-f96d-3833-b8feae992dbe,2734102081,8481746628168589893
+3f0bd5ae-4458-c113-38f7-71e56c4bc3cd,3851049136,6259196893111338520
+b2c3c4a4-c697-9247-4e3b-3f8acc868af0,4178970042,9655412601839536998
+46816f58-e8e7-0c16-a109-15f095403251,2800644687,10258139191999501672
+80d25407-46dd-fd18-a8ee-bc6dbe76287d,4160411038,1479651337552612649
+01e3e5ac-bae4-0cb2-ecb6-87bf7e0542d3,2857007490,16663130786300049829
+26dd5594-bc29-c42d-4464-332e685191c9,90860846,17963866102808017798
+2cb1acef-7932-7426-ff36-4d2ca534e693,1070013518,4479131891106788908
+f10886c8-7336-c045-d4dd-adc106faf2e0,77161517,8170312507554589855
+fd521501-8b1b-160c-546d-2e8bfcb4d773,2398120001,6446895891152298201
+8f60580d-1f71-9938-33f4-b72b59dbfce5,3121078055,16945134456020875063
+9d04527c-50b6-3e76-fce2-733aaaef2452,2079110856,6640852554126074402
+f684d5a8-3c42-f098-94f7-9ddbdd307038,1005627063,1860201959859927002
+2473ef8e-20e4-f74e-16cb-c304f3d2a28f,3217764939,1978351556851813404
+029a9a05-a7e4-8598-c0b6-1a15386eb082,1620371858,5644663076994333041
+da98420b-e8a8-04de-e8b0-226d0ba4a486,2127834617,15691028619185790981
+5d2e299c-15b0-6f92-d6c7-7a9e9731ac9d,132540552,4678950133882446847
+53b974ed-72a5-83be-73b8-9c317b51cd5e,4066884663,5508653487416015701
+29fca3e4-60b4-90f1-b5e5-100a72914c08,3359083477,12104016966924256971
+5d12a58f-5a7d-eae0-819a-a4c8566b4234,2829396715,3566245892230476259
+a005771e-c292-e7bb-273a-071503a86bc0,1083387193,6150610412092129915
+20d5f2bf-4e71-0282-73ac-d59feb468294,747438568,15834035231123043204
+52cd4c79-8faa-2577-56e0-49c8d8aeb154,2822092623,14976444711044344650
+ce2fc9ef-b165-fad4-e2e3-bee888f1bff1,3388400489,17720878624531173003
+0d155fe5-7f6f-3e72-08d9-8b883c4bd915,3950730479,11461886052578681773
+8e35451f-a043-3622-f191-eff706847a26,4006112905,626010303679995312
+19395d21-cdf8-7045-9950-14cc0752b57f,3205340845,15271190132473389304
+4aa343ee-84c5-bddc-7a30-c45463be31c4,2130385767,1814277069818122695
+fa0faca6-3ae1-829c-beec-bc4e9ab07b7e,3292284198,10897830247217377008
+1d00b86b-351f-0107-a4d5-bb5a1a7e22d9,2082577330,15673781697517097665
+43e52121-2612-0467-56fa-2c3d7502ef9a,2936164017,18058980564998991374
+df97fc36-daf8-bea1-87ce-6bb2698c64ce,525416905,3340883438935928392
+d1d6f022-96bb-fb73-1915-834dd3087869,3153108343,7046636922336081767
+4e75c533-57f7-f87d-d0ae-94e0efe83d08,3036304008,18399237828640578912
+0bfc1fc2-411a-4a52-c950-e2844c09563f,1629252975,4735001758607123456
+4224ef67-7d38-00a0-a1cd-178768dfdf6a,207192951,16373765104146542017
+185aceb9-947a-e7ca-3df4-36170095dcf1,2448132525,12486006224765137546
+e0210d03-5257-5735-3eff-72fc4c5bcbad,465617260,3866951491518818534
+54319045-f1eb-4a49-a5e5-bc07f2d9cc25,3245964932,7625401218588307525
+78a45bd7-86cd-146e-2fd3-204a55ece699,1451949147,14474138218444026210
+bda895c1-b230-f51a-e977-4544dad3aa09,2413684786,590290889605547121
+556a2aeb-ea8a-024b-c076-10acbb3ec373,1692099887,15813588720522201017
+96d4f074-862b-d236-2fb4-807a24d20601,2187638575,4390516893312720081
+0d8e87de-689b-3f3d-ff27-690fb7d69caa,790434756,12029610087719466930
+7699788b-1eca-a1c0-b538-fd7e7924b8e8,2213651741,15832312837443999080
+04e97fd7-0ad0-6dcc-1692-92a82561a470,996329101,16099599435599090126
+9629bf3f-f33c-a024-8d6f-48aa2023f5dc,667261508,14208848690997342885
+c99d6ff7-2407-53dd-af35-24a8aa8cded0,2289316174,3997292561948759176
+6afcbef1-ca95-995a-214d-229c2d61fc16,2246961420,5043785985412247804
+4e75a18e-3a00-0738-ec60-4c76b558a714,325614040,6026736855247247089
+672a8535-8fd4-fd90-72fb-6c263c68bb29,2941186425,8970140515152423184
+5244900c-3e5c-345f-3026-e640882eafaa,2761281344,8436251370173843228
+8bfb0c04-c2c0-a62c-a257-0cb92174ed9a,1111413687,9779215072814419917
+59ebac24-1fee-054d-e469-2b1360ee52bd,677462113,2826492185390282812
+2e6fd0ec-b7f2-00b0-832a-22d9421eb251,71813290,11104344479730573148
+5160e5ba-9de8-2152-e38f-8386d971b3d4,657744862,3008458084818551338
+6bd20cd7-d15b-a4db-90eb-a46ed94af98e,2009919009,6429112734316008626
+a7c40238-f6ac-f547-4295-cf570392e53b,1591392768,16153593584099272505
+f7a03865-040b-f9ce-a5a5-6bcaf87c4255,3077610671,11507080748093863203
+2e8f759d-ac45-3427-124c-134287b383e5,1871753807,2102067842906287976
+b357f9f0-5022-846e-0e12-10379110971d,2037672767,9327829308105097764
+286cd3e2-2f43-6cd1-5d79-474630ee809c,2578276084,6779501099421512732
+81527b60-dcd2-3331-ac32-75d333bc8d49,1145839983,5830904833013192224
+61f5b06c-2212-90d9-5506-22e1c7a11eb2,3319515073,3022129227954390380
+e8c3ff52-cea0-f0fa-ceff-254318923340,3037040810,13154317176722888955
+52fbc205-a982-970c-eb46-0eeda1022ccf,684992098,2358434387298363626
+0351a35a-269c-c66e-738f-1274ff8edd07,190033387,14246752759442996302
+dbca68dd-ec86-3563-cbb6-c3f2206acd19,4242467901,9625033314919447791
+96ebe65b-eef4-3de4-d011-8a06d8c1cbec,2418194109,1532177912493742532
+8f455a48-30cb-cc4d-ca4f-41d09243dc6f,835312359,3906980322995636457
+a4afeccd-802c-d090-4cb4-72460c235975,1888481177,13778675491058693281
+5b9e3737-e8a0-3b7d-8555-d09c01becf61,1073750265,467766333537854938
+2ab38e6f-1db2-3b1c-f8f4-dfaa0adaf3d2,3506141235,1690895197011406097
+ba6e5254-9302-bb78-20c7-c3144af0b603,1347525199,1099326673872027267
+5299e4c0-ddec-3cb6-0d08-3ae9ed6d3b35,1718411968,8748394167561588840
+abe9069e-98ca-476f-934b-182a11f9c31b,3559817456,17253297141340794038
+a1668375-79a8-2ab0-9b77-4be2ed09e7c7,2587352597,4650617603733554691
+f0e9bde2-02ce-0a49-2369-3ac842103117,3323510314,1049259148913797887
+69aa0e7b-733c-ef8b-8b44-e52b15c00ab7,3981066202,5983443337420312380
+0efe0287-e95e-0690-d937-4d7c28724394,3631563056,16553483509052194935
+cbcc6168-0fd0-1f5f-0bdb-a123f84860bb,3285053017,3887906624153960418
+951cd960-e45b-2162-badd-80b964deaefe,1583076125,7851389529224444957
+9bb98b85-1529-348f-f18d-fa5e0b7ab069,94180868,14163274876797582377
+c9614a46-eebf-a645-1d75-db2a6238c321,2332481173,751191073825531261
+2ec59bb9-5552-8326-d257-4fbcc8fd2555,2901743326,3718088283292572472
+2d3da3b7-158e-4a88-5cf4-bbb4ea78e4b6,2520758165,11668473979920440719
+df03217a-d2d1-474f-b5e8-c83c5c1fe357,2831549303,7423679118880034677
+7fe4b419-0641-3c01-ec49-79c7d4134c4c,160904092,4742012473968576191
+9ead0172-bcc3-f2d8-3b0e-38a64c2353a7,1441193248,9065061386065794956
+f6699a28-c533-f3d4-a33a-b9c6bb2258b0,3583286955,10267529651770056553
+d1eeada1-dd8d-2076-8748-9b513e422ccd,2502785594,18430104165173217277
+bcd50b76-71af-0afc-d401-d4f25d7cb721,1757198006,3585388611669935804
+9f496f71-820a-9621-4cf5-9de8949b3ad5,4030726796,2564102482361448700
+f0aad940-641d-f1d2-f62e-fe0295a50d8a,1720749151,17756765609420897298
+b662b181-ca6e-57ba-bee4-6709fa9c5f4d,2054352684,1414129857112812345
+d8defdf4-d5ab-9ed5-4132-30dc29c6b77e,3819216601,14233294642051054232
+8ce44415-d8cd-d8d8-740b-bf4b65928ba6,1298458502,6034513362501736009
+3a7a1e2c-ca2c-b64e-07c0-0ee6ab0d9449,2438121971,1552997196026662323
+5ba0e3e1-c2e7-2b23-c825-d16ea104c3f2,4002693536,11883899773490387739
+e1aeb881-6589-dbb3-e156-94e2b053ea84,540775369,15182400484009982696
+36c70bf9-6a35-2a5c-a9f7-0862d0d6971e,3951138354,8287402797093165875
+d75270e7-d4ae-4c5f-7ae6-d67c003560ec,1389314671,11295089555282632455
+e65052a5-bada-bec4-e06e-d7f5fd7bef7d,155021160,10832136730713655706
+37e71887-1fbc-0a46-10ea-55e613bf1aa5,851461316,13733297095312665690
+2deec482-5320-32c8-7f28-7607dee52047,2939123862,2022253625838315269
+1c011696-4fb1-1078-df61-7f563150b113,2553694246,4258602677339368602
+41a29de8-9679-2f68-4465-2d66783fe3f1,4103597962,9531508954798879752
+eaa98a68-ad16-77c4-9833-448a9f3e7c0f,1959325316,13039965266898285364
+705e28ac-1f03-6260-9f4e-fd4a1310c71f,2758215061,4182854363979652196
+ef5c2a12-9144-92fe-af4a-de563863475f,2767325480,2728781962591555510
+0161b6fa-ccf9-46f5-31d9-cddecb7e047b,484963470,13872090258820484272
+45de6ff6-05f5-11cc-194c-100b634f1cd5,3517182794,14493854984108550744
+6c6f2c86-3c34-3fdb-4cd3-79a15eb782e9,2126609751,2034750409919821754
+6852aed5-449d-78b5-da4f-1742a871dada,1689774326,1180697948590016874
+6d5fbb0d-fce7-34bf-7f8d-c38153573566,660868401,7121050319474084795
+3e3cdb9e-503c-bcfa-e9fc-93ae9266f657,3491669709,3495909368214332857
+0a48322f-0ac5-9e88-bfd0-d210974b5892,4137339204,6600123557022633533
+86712090-9708-84f1-f69c-ea8c6440e914,2919686150,9933553540591476074
+71b9e6c8-ba9f-13bd-5841-cb34ed630d1a,1194169071,4622189085822654713
+61d085e8-98f9-a4b3-2c2a-8af51c9e96e2,1925128287,1482351252191578123
+d16df234-8f4a-35b4-ae5c-908c66fea680,802014802,14057343887438114673
+854e41d8-7b18-a23e-894e-46c6ff915a90,3833435809,3130953916341386855
+8c8c022d-d763-4019-67a9-e5e4b29b8f22,3840041582,5955542486410593842
+da5f08bf-d1ca-f9af-3333-222342842287,814638448,6064779103042942550
+023e9356-55eb-73ea-e30a-c622555a5324,3169787496,935392895731043654
+cbce9d68-e285-abe2-4e5c-4083a046eb68,322692084,14242967295919747438
+c7e7751f-56f9-bb96-975a-e7aa167ecd51,2948407281,15360553900430511753
+e1e9ca9d-f704-3772-8bbb-5fc5f8c585bb,2948198298,5519341330203704039
+3ee7279e-3a2b-19c6-45c3-86b4247d8838,3152959414,12084634124404123639
+7376bb4b-37b0-d3d2-c421-e307b8710b0f,2482759950,13950310795850442449
+0e6accf6-04b7-b10d-3fae-02c9f5cb9093,3733150535,11443230417189924159
+a5db5269-ebf9-a10e-c5bc-66d321151042,585832924,8367122497805966992
+36a77520-70fa-894b-77d9-8e6855cb8ccf,2288898935,16634400442165635340
+c73b5742-5488-5ee2-b9da-e2b5bf9d5d26,1373649431,12869518763805083501
+51dd1b6f-7246-23c3-89ce-415457c365af,3206688606,10693915503733375482
+b6ae8e34-938e-f6b7-bd19-e67ec93fad2c,4030340929,5004561244759955728
+281f4f99-6a7e-3e1c-4e2b-77ac4a8453a0,2431602123,9436734766488556022
+8e4525cc-f302-7f90-48f0-d17c9e908ed4,2226329069,2160799174779635326
+66e6c2e5-6478-c5f0-224d-aa69b745cbde,2027329254,5957547164167795873
+543af037-5a2c-d3a4-351a-de0c2ae8847c,3906914324,472125025623369685
+56177fe0-8a30-00ef-675f-405a6e12cc8f,989778202,13114335037726342885
+1f15cdb1-f39a-5a4e-4e7d-d3cdba2cc5d3,740283729,13774708587835099346
+04aaffe7-1ab7-5ff3-c1cc-d81011e18efc,1185000078,9032416028075751305
+5104ffb4-710c-f3d7-f7a5-24c761128e09,3710613546,14793050933755690811
+b5aab27d-b9ae-684b-2d4f-b76da98483ec,3865205160,1679266343793347664
+f0458263-4b73-5e27-967c-0fa9c3ced878,1048905697,5933790084156033483
+96f33eaf-cfac-d281-d533-bbd5e16e619a,2102590353,5184494727555815950
+e212270b-2a74-47ed-d3d5-8bde1a4ff153,503502980,9040039664896857875
+40dd7f9b-6606-c001-5260-80e76d2fb9fe,1101667774,11179898829399686543
+10568323-38a8-9392-b5a1-24ed2364d083,2049898515,1711959530116684718
+931edd41-5a28-319d-3ab8-25a0cf288edc,1072014037,17072986153344956894
+8f09d31b-ed89-d196-a3ea-4f9c7fd330e2,1125798965,3333462913343261156
+7f2bfa98-d312-7d3b-19e0-275a193427c4,2397161654,5026735728551278531
+89b3bbbf-90ff-0a01-e852-7dc60f80dee0,1971532753,1780118786050651622
+f20a6239-f25f-208c-4342-cf8cfcc0e04d,1699910597,15260930567936040241
+f8796358-7120-25c7-d11e-b97fceb6ee12,70346796,5205870018072556248
+d2b780b0-4d35-9382-8d92-a0cc68c3f9c4,4236721100,14884793701457980890
+c3d05752-878b-ff5e-4f04-9da6dc4f514a,1360286507,4417690836379487610
+3949464e-217d-f95d-d2a1-6a196d935352,2027342525,7161715406993079904
+54bfefae-c1e3-b8dd-cda9-3004182bd1e6,1198920679,9032017711936616069
+cd8f199e-2105-f5de-0371-bdbb0dde8a22,1625233129,15397295585502525226
+2c704e6a-9176-4d24-dd9c-e9abe4e9681a,2556322774,14480179216889970062
+118c48b4-60bc-1704-e1ce-630472e018b2,3093530551,17092034306574337709
+9e46dce6-ff35-7a79-80e5-df502fd11ab0,929399234,10199364504384737475
+ba9152e5-e36a-867c-6381-3377e6207117,3732140111,11034724762665959526
+b9ebcadf-da24-7c04-a924-922897bbd103,2174336639,4185847275558021557
+12299067-9bb8-57aa-affc-372defb15a99,3595157677,5532835268085270624
+59af2750-c848-1f49-278d-880ebd92b3f0,93465150,2669590536860957343
+0f81e580-0309-4aae-34b0-d1db7ad40008,365407189,3176324009138901073
+adf5e322-440a-4571-6b96-3f8963597713,1124372928,15975281759975169702
+64f13a7e-df0c-751a-17e4-43dec4665ac5,2149847087,487544285952359450
+51f2788c-5719-e033-3d05-6d6d34b5a664,1275285347,12482382386216580325
+528f3499-e62e-b02f-8869-cc711dfb0237,2054318617,7343265612155202324
+bc12406e-46fc-b6dc-000c-8ef3eaadc0f7,594583013,14080796325072178082
+8da5cc3f-9311-ba8d-d295-8a640a982143,1529934773,17060774521152546735
+1cca1e92-5dee-5d0d-b0fc-415c00aab498,3214322222,2519157828994214440
+079d735f-5603-c7a8-02b8-33f19586169f,2157506867,4968008783076848938
+1e200230-f913-1f85-45f7-021c53a33b25,1767119394,9657005630980680973
+284587e6-4a77-8bdd-cf12-35cd5796d13b,1196403186,7182117063937253470
+b5d2df6a-2769-8871-591f-06b91697e7b4,3870304825,10975387472066372682
+a3c5077c-5332-0a67-2b1e-6cc116c5c69c,477992152,1305079941005341617
+e157ded3-d427-d0e8-a8a4-9bc25d43ed7d,4053782830,3537260516157879282
+81e1a43d-589d-0601-17d9-6e1a236ecf09,2992179781,12112124988936502975
+28cd1275-6d59-7337-1282-6361ef9dfdfb,1692418508,5980445297771155542
+6f66703f-7ed8-d34e-aa26-ff78f1670f46,4196957723,6539432748923613110
+a7f55cd9-bcae-607c-cb35-9b378a7cdfbc,2498314155,8808796260274612936
+9b7da4ae-14f3-f173-a481-c6628b03bf5e,3219798472,15119111198769810076
+38c3d614-5f55-e647-b6e7-cfab41c4ac83,1578712910,6713418872604728667
+92bb286f-b50c-e2d1-0dbe-fdace33ae889,3333651358,13136665544268933337
+a78f10bc-6448-b6c9-7b99-d3a144c426bd,3798089788,960013611573327106
+1cac74b0-293f-6368-8fdb-c87833dafe77,752035122,5990270334883363861
+7eee2552-acb6-92a1-e574-d311a7727e16,1051769397,3122631022561599696
+44192b7d-e556-cc24-7510-b85b44c44648,3761896443,1770481903683499370
+311ef34b-2073-6871-372c-658102f87037,3162362972,16748839934393071469
+f0f71bf2-63fa-8e6e-5e7c-1bae4d909e1e,972570878,13874883936361539421
+5da75043-be82-36aa-d38e-7d60151e2480,4069453954,12901156986854104444
+38524091-bdd8-85ea-b32f-33f1f747af1f,1634357145,7404412396615285281
+2b05e482-be09-6279-05a5-04e56b0d9b31,2288515656,12431591150051935536
+f62e441c-ef7c-b0cd-943e-eda9c4ca0479,1572641621,12423226375794667813
+46c196d9-49bd-5ede-d3b1-3dd3d25c9be8,908739683,14172372254933681781
+359ee8de-35b5-16cb-72d9-0185ec153410,3343702628,12442688032495908953
+87baac5b-597d-e23c-f6bf-5fbab43a9562,638044506,2102853139631914557
+530b3d4d-2567-712b-c91c-952d8f183566,2461644223,14617430848033867081
+2d325236-8317-63df-6778-15fd9453be95,3071398497,16294666395063030108
+d4c51da1-cb02-b4af-f89a-c8dc8a4944d7,1721638012,11161676552753326307
+ec4d4750-d1c8-ebb2-39ce-1176ee86e046,724612786,7785434993001805516
+652c8cb1-80fe-81b6-7dcc-031c1ab8a1f6,1747771337,17727330083765057203
+b507f753-fbe2-fe93-d177-e3e685c72aab,3095002432,7663549730487013117
+ab2abb83-36d2-7ada-d08e-8af88ded02de,3829297756,14728006015028434437
+507543a5-585b-f6f1-5cd1-e4f0eb684923,4277991999,2129660699004865167
+64416242-609e-e300-4f17-9094728c8d9a,1420923834,3835111274061575507
+c78a0875-a863-1e2f-c8f3-e3034cf34966,1487109601,4792186152254333827
+598a24b2-fabc-213f-7f8c-34de372aa3f5,2458402404,6394592133732135458
+d85b9c41-407a-d4a1-dc29-4c8ca64d0942,1083913816,9836573082648457314
+1a1158bb-cf86-f6c4-be6e-f4b2c712badc,1542817795,6041667731797110846
+7baa0044-8df0-ca2f-dc81-4b430c992041,534645620,12867517721919890489
+40d25171-93a5-df44-5d51-23a4970ec417,3406806115,5152438127100510044
+5ca8af4d-2bf1-b61c-6ceb-73b7d39f5934,2253728138,2195559177622547562
+f99bf376-de92-6591-9d39-ed6633600d7c,1695486001,8479348608169593651
+5fa0a971-f427-f17c-5427-923bb4e233fa,2641528631,1866620977658655674
+fa9af58c-e5e1-9c16-1a16-33348ce60d10,1883028909,16948886194067023015
+e7dcf39a-177b-fdd4-bf84-8c28bcc5f699,1042989513,17676946495376021834
+b054905c-544e-ad18-7f54-c51dfa37cc80,4008890193,7484534258349788628
+322195cb-efc5-10f3-1033-fd9b95ec6aa3,1205601626,6536983906233847890
+3a53211a-e72b-8252-2f6c-83368ab14820,4151367251,4417938225769357566
+901f2fba-d2d0-fd1a-fe1a-ce91d24abdda,677601705,5359959251243655950
+b0186803-ba9c-6c49-6346-74044cc147ff,368643036,7292899868238717920
+01af04bd-9c36-f7cb-924a-81110ec30900,2935892124,530149842140676180
+6b0fde84-282d-a551-5394-3cec46de66c5,1210832207,9364166033838210171
+b652c88d-c881-995a-05cf-6a1aa471793b,1396573856,9357318688568529044
+3ff87696-a496-7cfc-3f5a-eaff80e981f5,3049372126,5368464497288178622
+4263eef9-eafa-63e5-44af-1d9c0bf8d117,376243081,15549064900495345951
+6e49ed86-7cfc-e2b3-394f-fcea5e7760bf,1192960002,9740104249107925093
+15173c15-2b62-e1cb-0fe5-785d52e16c14,490651332,18003923168579112822
+36af560d-5917-157d-ddc9-051e8877c40e,2890982498,452151147320184302
+9eace08f-d3e4-d028-ff02-d7e4e75b847c,4010617692,14561345085689436365
+0a026826-1492-fb23-9bb9-4a80b86ccd6e,19479702,10147035572943128570
+fd8b1603-3786-91fc-b0d8-1140d5a1b39b,2293123032,275953140639082375
+a580647f-6a7e-46e2-0c2f-176f9b04ec1e,2819060079,13801091922289850019
+2fb743d5-1ff2-b6d4-32c6-82e9d661c610,3417962323,14029155115434856191
+8d849d92-80fd-e0d2-c4b8-a660ca3f852c,3683286683,15456041198930630782
+0571ef8d-aa7d-e89a-4457-6dc1dae220ee,1985223827,2802285429388802175
+c55b34d5-98dd-e38d-a296-24ca1927746d,2775711812,10337189920861734638
+c3cc624e-8c25-b760-dc87-4c0325b09c62,53468187,15177845674369218596
+864ae493-e375-5479-0e51-aee418be35f4,1243226242,12921711070861738478
+d70be53a-dd53-4d6f-29dc-9ffc4a011046,3114472965,1869126354986867243
+9ba56b54-230f-ff57-ba15-23eeed729e49,1424765735,18335485529801634396
+cccd815c-7350-b905-5d0c-79c07aa5a8d9,1783372353,14751677791157745479
+2e0bc6d7-1495-9507-54d5-2fdc3406b118,1468318353,163078551833956169
+3ff8d99d-41c2-0033-af71-af7a1b11dd31,3525294573,933496350993237461
+76328832-f9b7-678b-eba4-e39a79dd23e1,1314287761,2929057261612518368
+88880fdd-dcc8-c1ee-7540-43a18fbd1a42,3389169353,17154843540489934336
+f94a5d6f-4fe0-fb18-9442-c84a1d91905a,2520654478,13693624343196472416
+c212edc3-114a-558d-2ed3-73be945793d3,4022412391,8171141665898893046
+1255c228-7852-30f8-e6d7-91ec1195687f,3848983202,12033579793762581231
+9a83823e-08ad-ca04-d1b3-04e57c84764e,595408318,1367261160610089842
+c8181f6c-f452-13b3-612b-a2ed5667ce06,4267791418,585031109034369829
+fb6964a0-7ca2-7a96-ec13-56fe7b19ceb2,1796066827,18330661998617289882
+3f8a0d59-36ed-799d-af5a-616285ab78d6,3463662781,17536905943086695598
+eb561deb-bff5-8831-f918-932b930101ac,1347293418,3691105153906797422
+23eddc79-e283-b02d-bbb3-9574ab972787,502404125,15407102057311944127
+ee5d0cb5-e746-5ed5-9d9b-6cdbd96d1e1a,3901735800,6234346227307498569
+ac66cbde-fa36-9c6d-7b94-fc9c84200b5a,3778760291,2447983764223151379
+12ed888d-fa0c-0194-72d0-4a6d34e5909c,2859351223,5036696910106463939
+a38c4766-e765-010a-0daa-1f085f93f920,3081329049,11378902101389301932
+7f6842d6-6f90-94c1-c920-ef0b52ec1c72,2142633514,14212443315314531248
+fb6861d7-b988-c306-54bb-44ab21cf79ed,2058406330,506154031452667272
+592e0754-152a-86c7-2883-29832f4883a4,2282427696,6422325491596131744
+21b50549-3ab2-c344-3625-1143bd208f63,3176264110,2088854187313768672
+4b0ac7ce-a6b8-78b8-f790-7c0ba267333a,3888084510,5447804369479062147
+14f61728-62b4-c59c-65d2-dcfad019f97d,1780415114,15580086192953914747
+9a1172d8-9db1-214f-758f-4860b8ba61c1,1397097507,6488063660734580690
+d65366e6-6bba-4a41-cdcc-653a15600dd8,345720257,6188379122866763100
+017a96d7-4fdc-c837-a6cb-54803b974d19,117517950,2444021409620540523
+944bab64-55b0-6e1a-523b-3796a13272a0,2691908432,2737916070579752400
+3718a4ad-7f29-43f5-456f-fa193c715b8c,1679470586,12330258497526644417
+b210bbae-0f09-da78-bace-d31c8f295d2b,4284336501,9240669085682541245
+54d1d54e-01f9-cd8a-f4f7-7ef0b8138cb5,1165703445,7591874780393251248
+538a8aff-d03d-69d2-41de-ed9af2e21a64,2634505318,9365846134487063601
+24d6b189-294d-9f3e-dd20-29a24b0b9dc3,1687210286,5512491008063611529
+292f577a-f972-e24e-7825-cdddfaf493db,2945004349,1966171576989459043
+ce4afd2e-bf19-b525-8fb5-50f05554da9f,2475783262,8101304628387436102
+fc7f7073-9116-a47e-2212-426e1e65fdc4,1293070765,14681248996597286849
+dbce1289-1580-bc8a-4ea3-c1aabb654adc,3485778107,7594641421903448280
+b11c492f-c437-81f5-7d4e-fedfe08566c0,3821288501,1266563125820000900
+1ecfa2c7-4d02-a593-80e9-3b6f91e4456a,2081789484,13976077453203872550
+48e0dc41-7a96-5220-e369-bb5ecd09502b,646522372,8313837066721978131
+20796e1c-5dc3-6eb8-e72d-5b0fb2107435,1102791884,1660235600535319317
+a135afcd-cebb-fa2f-4f0c-228207f80fb2,1620312070,204572345418507866
+3c06b678-61f2-b052-fb4a-4f9b84d8e38c,2121690804,2034384813333501419
+ee066b87-bb17-2cdd-3e56-4d3d290258de,511723139,2197262861598459438
+ab011644-64d6-da2f-5c71-305b8979b89d,632497292,13462237680929727218
+e3979c61-cf7f-46d9-e27e-fc960393cb04,2746834449,12268703672974137111
+ec612192-90dc-28de-cc17-6741eb2fab1f,1989862365,4074866534368065032
+1b3e6541-def9-aa8f-8819-0a00b1a4afbc,3678883175,17165333733156087880
+7e4b5bf3-1cb1-af5a-74f7-9d04fdd9c7ac,1359886425,6607764874149420886
+dde1d70f-1905-9aba-4b7c-d486d5d6613b,2959290901,6422603285951334964
+a6a5b5ae-5c7d-be0a-f128-3447b45c0729,336978240,5547243244905535317
+15b08985-b4b9-de11-0eeb-acf782665908,3216276654,10524267632066881161
+27da75d1-8e5d-9de3-bf4a-02853284adb3,113114172,16962900640733048147
+7cb6a59b-2799-0273-2353-423570a65c70,1387675488,14021029066854649866
+fc1fbe32-2704-f437-bfe2-6d531aa01b46,2565296131,12675842698354941433
+4d912d40-dcde-f4f1-c18b-e179b16b4146,1192452269,7895666707094763370
+ff1c281f-05c2-0238-1d76-4ec85cfe1300,271865396,17061494405791974791
+c651f03a-aece-cb25-e9c3-f6294be5a0bc,1922628146,5584639497964725969
+943695c2-7d5e-3b75-9f3c-b0ca2f8c2073,1899442555,14420375282177246863
+bdd083fe-653f-0f53-3570-2ccd9849c985,2908734677,1314412723035464016
+4cc1dcd8-04b6-b3ab-5420-d9d5335f7e19,3540243656,15445684204797016026
+f24e630a-da80-2a9e-ed62-f2024b10b38a,3795978154,10202771447740110677
+7910af3d-3dea-39bb-f4c0-a586b76f2497,886314546,6401112251139841008
+101a3218-5989-bb69-c205-766d7fe4c2f8,3204074879,8909613489731671730
+c1b7ffa4-3592-5121-1385-be457b667c3d,626154543,17517153760889698373
+4c3c2491-f422-48aa-b883-cdf85f5ee207,3234702836,6635218361895294969
+0ba74fab-0839-62d6-ec46-f11467a93782,4231065488,1996932612802143463
+c73a76e2-f4c8-b48f-dddf-04c4c694bc9c,36656133,13561970015949814045
+9fec7d95-08ce-35b1-02df-22492a15a469,566187416,15250390119052891347
+27faa524-8742-6f10-1b3d-3bf0578e4dae,1686115958,458809645011987531
+7faec559-ca9f-5ac0-d32b-21560dbd4710,1241722960,3987338493158846200
+bad58857-cc6d-279b-80a3-7430d9afa9a8,1429684424,16457153710952270516
+7c4896a9-2c9b-1bfd-7d65-857c2b2801e3,2966028641,3988820511468299031
+d5c5dd29-1dfb-5418-495e-c7b7728fa984,3644448722,3902430372088027263
+a6e8a0f4-5594-22bc-1f99-eb0ee600d446,1078812863,11801752287502279724
+bb403ec3-4d26-abc5-b234-bffce37fdb53,2574457833,9356566636235614492
+a9e22f03-21f0-078b-310f-fcd485852e39,3797880812,11045083251407540393
+20c1c64a-d654-65f1-7127-f2db80e02a79,338051912,5281678865318049249
+5e9f3683-faeb-579b-32db-1aec002bc02e,24744465,18160842580830475550
+782e4750-55d2-ccb6-f3a9-13ca61dbb94b,933836300,15539931753749252894
+7ce43412-d519-7a50-7d31-41b4b7494120,776417681,7076629984677781859
+9c461c4c-3b2d-b419-baf9-96e5f0c6c711,3404482119,3883822968076477784
+f5905510-a9c0-b8ce-f2b3-ac6d1100449c,2989869806,18061452207888898899
+7d68168e-b7d8-59d3-b6a0-1992dc0aaa9f,3806308022,2785443032452603558
+26e246d5-e80f-b7a7-5ccc-be765acbe691,2391564640,16620559269281279202
+d11e54f9-4cd5-b3c2-447b-b31e606e6beb,4118098007,16230351706462140435
+6c1c6dfc-470a-e050-abba-861285c1a8df,3105573858,16701944060489004021
+3272206b-84ed-949a-3e2f-adc82a52c744,3549727047,13369179969189422236
+bc31f77d-51a1-5e9f-7460-774e49fa135d,353250680,16656576848249814700
+c44ea36d-0e2f-eac7-d801-0bf8a00c5448,3728626855,2025246535851082316
+6f1bc87f-d119-79f2-e10d-51224519e802,3241181932,9288187645747754225
+b877ce0e-ac38-f584-5c38-5368e1d1bf35,2281099367,3188066238706562850
+2821c093-9164-0c39-5160-c2429869f2c2,4008025025,9450357435054349344
+2050862e-da4b-8e67-e516-208d9f7250c4,983877193,5085056471882220337
+56f10f51-039c-68e5-0b74-fc51e1a5a2cd,1685941761,165228803521593228
+9bf336a7-e740-4247-bf2c-40091698b649,3902226185,3871008648544007993
+29b3e737-7709-1aee-f84f-8ba4cebcf5a6,55881465,14318480953109570756
+eca636e1-680f-dcd1-4cfd-fc2d65958254,3322776141,11093502376820119753
+adbd0f31-a316-2029-ab74-9a499f70fe83,50667151,14314013789726381740
+ffcb3d83-b21a-f3c6-8d61-d27d5a7d9faa,1164435070,9344715097244411162
+064f40fa-39a3-da75-a593-ece858e03cb6,3353795338,11895965509877257044
+787d8e05-d145-3240-ef12-a7a21be22cb1,553672644,1622925481974105259
+b9b88df6-0292-f3dc-5440-37e7881322e2,1272503924,17297098163974465685
+07cd9b63-2567-e75f-d54d-8297e1e552fd,2323656751,17817676018412692547
+f8be1cf6-10f7-587d-9522-91b13e3f6cf3,23590532,1813035170837123772
+3e8ecfdb-6559-5114-cb2a-0ce2af01866e,2913803396,9361732953718316282
+e6baa706-769e-5511-8985-1fa5e4f3b777,1892149653,195880919126684872
+85c915da-8eed-cbae-71a4-2f412f9b3177,4186173658,18041140806912249531
+21bcae18-664d-4d1f-db7e-2bcb8daa1341,29986735,13195981916011259686
+aea6f458-5c46-fc0f-c303-3712da44ab7b,1338999146,12501898167729450232
+a218b4f8-31b7-d46e-34cd-e5896729f023,139827801,3766966277903693923
+598c40eb-4deb-299d-7c55-503035b630e6,1374637396,13926408162941652815
+ff805fba-0bc8-93bf-313b-95b9f9cf2a41,2792660082,9928216601099228088
+eb7858f5-9dfa-b059-b322-318dda6fcc35,436177087,6301440739875194483
+739fc58c-1b3e-3aff-0f1d-1d8a0e4bc476,1505618291,16524175703112858968
+b5041af7-9920-84d6-981a-acb0658292e5,3574622735,9637621315770826902
+6f14e2e0-3dd7-8363-4995-449a8db0a256,1862217261,16397678157527121895
+cf0c70ef-381a-92c2-27fe-e36b6e840cad,3966980058,15139135125042480701
+27be6170-a0be-d252-ef40-f0ea413ad462,997815263,14029190172419056127
+364089dc-258d-4633-bc66-993ded6c2d8e,861723355,6600631297040717135
+5bf97030-cfd3-243c-8b23-63a97bb698bc,1086776642,10331090013280058012
+4c15ee2a-b59d-e696-3917-8be8d45a7f0d,3847498853,15625147004098311250
+0995cd50-e5f6-ee18-3a44-e326355b0f52,2613661916,16466916255571739782
+98943a13-f017-b5bb-6e01-386ef79a6ac9,669867841,6896034485888516146
+a9ef6607-e8a9-d75a-d48d-c4ce77790b45,4293612940,12334163414405502595
+2057a4f0-3c15-5728-3139-3dbe595d5d73,993500783,4721380375863172524
+7aa1d849-1ff6-fb8f-b80d-268ff05c5860,2973198935,4080317788979692328
+66dcebfd-d032-7fe4-d37a-5c66cef16f87,182773360,18404706033801057159
+201283f7-f413-5210-7000-5177de65dc3e,4223459800,11110486062384851510
+0b96345e-7b39-ab30-5c23-907c967d8094,490839227,14780258489438843859
+3830f4ea-cc1b-80c3-0161-29d852007674,597122094,7676239070665284512
+791f5d71-a771-d415-40c9-6e6ae2e4915f,4120114210,14406399960165904286
+c19e6f7b-eaf4-b150-4e97-be3d3af2ad2e,287809774,7619200276516468567
+3a777605-48b4-20a5-82b8-309859acfae0,479833510,1068588763015492807
+445135c1-94c4-4a59-2b0a-c74806f354a0,2370744577,647947596615568434
+b6d6166d-0089-009f-1bcc-24bbd7b618b8,1085997873,10681087956310159802
+b677d243-03b7-2432-1d84-5f624d83c1a8,3470152494,14761092346652541762
+9add0de0-ad13-335c-5ee9-883f04ddd748,1403751024,9227988282527450542
+fcec6931-0025-7e2d-d890-02ac566bfb63,1925118338,5858607332537743484
+5110050e-365d-19a6-eec3-baf7229e6e4f,2663035014,6689414321674666980
+0ea9669f-8882-9eff-dbd7-0665fd20b32d,2972069978,4893723609951128674
+78ab6dbb-eccc-643c-2a53-f7531ce05ead,1702564367,7933225634018749694
+57e39f43-2bc6-50da-d9c1-73be9a5ca6f5,3542321511,11973991276345769098
+618510ca-8e08-2a17-a26c-30363560f97d,3161262195,775257885832843627
+aa54ec1a-c104-d96e-0bdd-827ecd25fca5,1520397797,5005131513441915189
+faf2475b-3c46-8557-49ca-04a3414ac268,153628970,15333224562079008762
+0b11508e-5756-7d54-a886-22db254a4c96,2929190001,11009069820038894036
+7660e1af-8c66-0595-eb2a-8c7a2cdcf423,1906246407,10097168491790421389
+4b96c7cc-ebfe-9604-e1fb-30701f410127,4234669683,10518189039633100399
+ed58a1ce-7399-5c26-6d7f-35a6934eea85,4231957667,190468772203979119
+34de2fa3-3519-c578-d375-f63dd97e0dde,377816430,7216968904740640872
+9ee9d62c-5526-5a00-e5cc-55b1c975246f,1640389668,16515495096069291820
+b13fb2c1-8861-7fdc-1e86-0c8b2548d643,22539793,13254929845399657619
+30e79775-fafa-fb1a-e926-185925e66055,1386019461,9074427595787172007
+fa49aab9-f445-a609-5dea-a2a460c54d53,2380982643,7814900320099160794
+f1b77ab2-677c-7170-e694-a67e64ad5c51,160203706,7660757171547000266
+6bb37ef5-330f-8433-91d1-ad0b0580e17d,3890765688,1521641219480495569
+84e53480-135c-ed44-a75d-7b2fb0acb48e,1384549528,14480467524211803679
+ee996519-65d5-2d3e-db77-13180aa5feef,3023250865,5487957728288367994
+82deaf98-6ec0-6840-50ae-a41f5a04bd50,2789875631,117491863620212007
+a6e02ca0-adcc-ae3c-fa19-0530c73d98ce,1526951775,18382300174413610828
+8d47bfc2-361a-1cf0-3d49-c2aa9b0fee38,4128574651,3857321526383404154
+37eff013-133b-9ccc-a5d7-a8616723fa24,845379726,13523166498065297589
+eade22cf-4721-ae00-51b0-e74db4170603,3113943771,5999050587288344492
+9b311ee9-31a1-8f36-dda6-7efbd4a6dda2,1981998503,4711452331346885128
+dfba01f3-6c16-610c-6e25-cba1397a80c8,3372204014,9117465924605412519
+ab232daa-1ca2-fec4-7b30-e07d0e71008d,671973347,2681628597577758177
+5379af90-83dc-9007-6f69-2191d3ca4e42,2252051922,14937121283778836049
+810cabe4-d3fd-9141-66a1-2004978828bb,4079296858,13269579076268748843
+c410d598-a1c6-2133-7d73-2a2fdf2c1c1d,1609290044,12033797532404755456
+3f2142d7-554c-f7ae-7e0d-1447ec65af06,114062476,13981300633284587454
+42a113b8-e4e9-7250-d033-02bd32813c8d,2533977481,1097513809965802100
+70cb6426-698c-da1c-23a5-5b470492ee3c,1778666090,16308254756029696591
+eb32e929-7c3e-2b13-fe66-afa02a36c91c,2999611116,1470572529094869566
+9c869fbb-894d-5509-7ebe-842e0952c313,3496598038,432808631108776392
+c1e9f321-2765-e2ea-f6ea-d0db7402e575,1577831545,2885254517543258357
+d6294cc2-0b7c-9e6c-e4b8-ea2ab1e9f48f,3151624547,17539343883059485976
+cf61b49d-2dc5-b10d-a2c7-bfe838791e4e,3629859636,13766424286274890874
+7866cf03-9914-3135-9c35-780c087e9df7,999134166,9302816733051436389
+5de1a1cb-7a9f-f9da-2c72-1e8f05ed60b7,1880621798,1873885862944584333
+aad6f76c-01a2-3c5b-56fd-e6e2ce0207d4,3064509861,4021943249258988168
+199b82cd-9015-c4fb-a618-051dd0ebae54,1316629593,9413748116716433409
+33a36849-0a8c-a735-781b-4fbd01053dec,2704551258,2482458367744914950
+5e1c5b0d-17de-55e1-a4d0-b9b91a43863f,2013034410,8495259316470668142
+85b225a2-e006-9bc3-1026-486d4c952622,1108613730,1790931822627927858
+3decf007-d098-0a22-77e2-0bb6986a39d2,1383076634,2200478759566675507
+03c1de17-c5d4-c17d-125b-b8cc464c63fb,622506525,14951179162122022383
+b103dd45-65d2-5ab8-166e-53c0535bd867,1417195732,3394295828939819125
+a1f66ad4-c1ed-0255-13c9-7f7b3a5c7eb2,804033465,5247849539932426140
+1af0af71-b0c1-c40b-eab1-7fcedb8cfa8d,2336668298,2192326976446310674
+929ae311-2e45-a080-36be-fb9cf848c519,290882525,2319757750016286535
+76f28356-5248-b238-aac8-8d7f970a9731,4124731659,2670669891954635970
+1313972d-f0c8-4d7f-e13f-7e1e78395d2a,4154376940,14956629937575270856
+221ebe66-28ee-1a99-52a8-9eb97e7a8783,617263012,14864953578807249746
+48e1930d-8ffd-0999-7d2c-336fd643130e,3482153411,15953080278545453553
+d0d21c6f-c9a2-39d8-0471-d621151239b5,39563973,14766103645705304062
+c51eeada-aecb-0dff-935c-93f27101aa04,2044511513,790287565165142719
+41192682-ed66-9644-11ec-d4c61293bb92,3027269706,1472434431921961838
+793b8d9f-8392-5de6-37d1-bbe1eb3967c0,4171480486,6263934977439053256
+33cc21ae-81fe-33bc-d1a6-1ebe549706e6,4194030282,1573769327613701532
+84cea40c-c6fe-4a21-b6eb-1e575a5323d3,2589003562,12082746408621496466
+f3d9730a-f284-f9a8-136e-db37ebc95d17,33994496,15414231540866455907
+4eb41c34-bdaa-1282-3eec-8bc0d2d5de70,2526790308,8734917772318577228
+c6dc40bd-b13e-a10a-9d38-1c245ba9ceb7,2644060713,14795957734265743983
+7a65b4f9-8abe-7aed-8915-0aecec779674,3246338262,16367853090100836044
+eaf382fb-f4f0-b309-d9f6-500a92755616,246219113,12060820748810098254
+4b3e52c8-14e9-a1e4-507b-aa49266d4fe0,2690559196,16884883802154968430
+278df856-ea07-32b0-5b21-fa1c50d9c26c,2775277501,9050097559803023255
+a9590ee4-f35c-cffc-ebcb-e52965b4429b,2912058570,174268366684810997
+e3a58290-7c3f-1be7-6225-e3920dabefee,1099165638,8603339512590087162
+800c98fb-7de9-5990-14bc-b44a9645dcc2,3588656380,17654996839387322313
+bd380967-7e37-67b9-f0b1-6a463206a778,1182595897,7865080128051059579
+71cc70fd-1362-068c-36e3-b73688aeea3e,89349579,1806605995686077721
+a1a19015-dc21-bd89-0957-484211a8997e,50569833,165869742394579201
+82ca8923-cb40-9cc5-ef6d-d83c96a22812,3900507755,4693319169717186975
+ee2c8894-7d12-df3e-1a6c-ca17f3a2803b,1567718361,897157837689100620
+3e1f208f-97d8-a0ed-a403-90ea25db81f5,2471043013,1140019639009804670
+c1654bea-b57a-f132-0645-aad569985ad9,1366568789,6901483430548210344
+f3d50f10-8820-9b3e-5662-d9c10be43cfa,79563663,7175486220647150649
+4fc7f67e-ffc4-3d73-16fc-da6cc49fd81e,2593441223,11510953787060582523
+13abb918-251a-0451-1347-ec3a340eba8b,1714318272,8989365057346171172
+4b1769f7-3644-6c7d-56e1-b71b978254cd,2262928458,2607508746921296264
+22dba8b5-73e9-d54c-9b62-f87a78699521,71093687,16305217030105880361
+7fa8ea0e-2df7-5db4-3d52-8895d1a58758,3496051222,8669058343682421346
+8e5d8a15-1fb9-7041-a8e0-a66efdf3125a,2702598581,12428891277266397427
+b39357da-62f8-d6a2-09cd-b93e0934df79,3080202979,12943128315845472000
+ab679a09-3a4d-b3c5-f33e-8c1ca650beba,914326554,13467157725318094565
+5351a25b-54f5-ee12-9e2b-eab39964104f,3855642613,8140617111933990613
+14185c6f-682d-7bb6-66a2-959bc340bbf2,1271694201,18077343110916163988
+03fadad0-3c2c-e6a1-caa8-a53e47259c2d,4216181407,11033326369661924928
+52bc8501-a6fc-a99f-33e4-2873582e65e0,4123632433,14855710734059423119
+64b8548b-3c72-11ec-6087-fac58382dee3,1877546835,15787120438076033102
+ad7e207a-1d10-59e1-c490-ebb76a955d7b,855757698,7396019655620757292
+d6f178c1-5486-df98-f19b-97eacb67e8a6,2336318941,7275170117992261217
+0c277595-ebf6-808d-7284-c89e082e5078,568962450,9836337788689716024
+5ba08c2d-21be-57c6-8202-1f4ffc9300bb,2344426009,11517188324885042552
+ab8dce0b-4471-360b-e148-c14855b575e8,971992550,7488357557902558392
+c1f7a448-7c12-efda-8a7d-f840a0e6892c,430546683,8746365074695342262
+7ba9b00d-ff78-8c79-0624-51955326c80c,1304392013,10560527389551503862
+93574c50-8ca1-f631-6406-1374ce86cb10,616493112,14363095202646568047
+d0bb722c-f563-8071-ecdc-593ddf6e16d0,1522829899,8503730599783637075
+4dea1550-b9d0-edb4-ff0e-e4c63d358391,1440942853,5713488542882878657
+dae84c4a-1a53-5150-fd41-f06614c24981,2489688813,12971326489517696843
+89a15b30-331e-ab1c-fc22-747893b05c46,3451503609,18336718661607838077
+a88c7add-c92b-9d1e-59e9-b1c0e02b03ea,3150044033,4023604301598648073
+fabd602e-5f8c-9d0b-9c7a-4af2cae4033f,2926133029,16404055200988583199
+80d7de25-b06a-2de3-8774-de2e35f40489,2441145531,15867034528517362539
+7129b476-da48-40d2-3c27-0c0242e31d06,2080833064,17899112790117993412
+39d8537d-2a5d-4187-53a5-29addb6a4746,1555100664,13099666934477236537
+3b78e7ae-8fec-30c2-5f93-aaad0ddb5264,1496624969,14267205990893178432
+8480a05b-c520-fb69-393d-11b6a69f85bd,3231600764,13460110279108183588
+1ce960a0-4236-3a77-5a1f-741f3116211d,1114864358,5283090811356735949
+e2e21b2a-cc94-d2ee-8e23-d43bea3e9d9b,3032322059,7052676175523358221
+88a9f235-53e0-ca1a-f2af-0a2025a8435e,3031357262,17909092885066410421
+46f93988-3230-ba2d-e01b-37bd7c66b05d,974595109,11759950706078444646
+99eae158-6f8f-8e03-e817-81e7bf41a2e5,952805902,6633354191151302323
+7738bdf0-df1a-4fc2-5203-dbbd805b92a1,2729605871,3281567890149887031
+3f5e92f0-aea8-d951-3c94-1a1d3b6dc383,2781913759,9303893752088735429
+23ebf192-2604-c270-9d92-9580210e37b4,2266079251,3863083252915496675
+cb576847-8761-dc0f-b1d1-40e3267057f3,3060504771,14207787388847074644
+0fcea60d-3559-bf21-26fd-4321ffdb79ce,2743891632,7208641877056067601
+3d731816-7195-aaf9-8848-190a4f4a6975,3646820666,13529340864793736250
+09f02076-3cf3-a319-d610-4c41a8a07b4a,3210363720,11671960779827035737
+1d486a8e-2c92-4f94-8b27-20a4a0564086,921887177,2697962455867770185
+6dc20e7f-28ab-f6a5-4eea-aa4708ee8090,897786608,556332246687817022
+94fd54b0-df81-f216-a613-f309e5e85ac5,1551626226,2322797630913625302
+7130d2ea-6db2-d1e0-07f1-8ec2a5f333e0,739181801,10815987752031798075
+ba0f66bc-7691-97d7-76a1-7a7c21ce32d8,718927285,9601774440757670068
+3d250e56-0387-38a5-14e1-f1f7dbb1a767,3246183034,554269984602554718
+4388f179-38d5-5384-203b-2d5f55459294,2309304206,10040746634825485836
+0052163c-ec90-516d-dfba-e57b0aa1ffa7,2125255369,10268615245424506956
+a6dc531d-4217-d9d3-da18-004d5fad1aba,868066410,7758993283361976225
+270d7e5a-d8e3-0fd3-fe2d-20b2dc73f012,1769193777,14224329429163614290
+b206bde0-d890-e1b1-9593-a6ca9f8c5858,1186636458,8228672309967753026
+c9acea0a-b46a-2967-a8e1-017fd7b27a85,3981200700,10800683768793880672
+891c978f-9a0e-4d72-a6be-6d3186571cee,3738614119,7965263113913141924
+2362b74d-fd46-f775-6019-a5fcd62b1aba,1944559536,17740086522828919517
+f777f267-91f8-47d0-3734-366bdd093b54,2165789471,18403306679000152366
+896cedd1-3351-9269-7b54-42c9666f45b7,272384801,4491219277063293006
+bdbdd680-62e6-6b3e-8ceb-dcd25f528bfa,451973716,528313058460151383
+39b9b90a-2804-c43a-4982-73567c4d3bc0,1850989260,3088676197999583498
+bd8aed99-8029-aebb-725b-c2719864ffc2,226207276,5935602743287365396
+61d9e81d-ce0a-2a89-9581-de4aa3844d6a,3968556266,15266605345923471786
+b4bfcb8b-7580-8ad1-75b1-491640e173ff,2167558990,13195775786078368601
+e5f0c9ac-b224-9693-299c-9d140c1babe1,1426373008,16924893735535377450
+f8cbc797-6a8a-5712-d0a4-3aa4944b91d1,2803939353,9848018901693900515
+6f2b7c93-eb20-9cec-2bcc-9ae564618cc4,3433047001,8601770834244412912
+56d0a180-165e-8375-fd52-045d0d67b0d1,4135080231,2924900514097227457
+bfcbc1d0-7a8b-106d-18c1-c2dd2b2ed62c,1289882963,12906576646327102673
+dc7efd14-5747-83f2-a21e-99eb7c3ac32b,3195482307,17085732420185355233
+c0ede8c1-1cc5-84c0-c6ee-cc2f122f7626,3545959773,13951142496832678660
+7f1782a5-0e7d-654a-b102-ebbc0124c2ac,3788534320,51827622141062965
+aa8e6956-09a0-221b-bba4-774884394135,735220658,17623143576295281930
+01ccad48-6543-66d4-55ee-b34d692b5c52,2449245826,5587669008583729962
+a7bc5996-74aa-c6cb-c9dc-ea7bbd6dd82b,666612999,1686258908650938716
+73941e91-04aa-92d0-4a0d-3e734aad587d,333426109,126361996226180700
+e4792349-538f-6abc-ed06-69abb50fb2e9,1513575426,16677287736850740567
+46ced0cb-5a51-40e8-540b-a22bf376b0b5,713176437,16968758525092903273
+12b2a821-759d-cad6-531f-54b22655cc0f,650352618,6606571131012959537
+529b192d-2cb4-5899-8474-e676eaca7bd8,3493430291,5957056367590221874
+2aed9e0d-2ffc-6620-d871-4bd722dc33f0,2518941476,9954950191765459806
+87f0d21b-17ef-173b-8fdd-9afe5c4d4691,1054113216,5786739757989684308
+4abb9a8e-3dfb-94ba-c7f3-4f228fafc548,143505801,4686685719446988092
+06e32497-12b9-d1dd-ddf1-03072f3170a5,4286049471,17929073965351932503
+ed28f62f-ee4f-be12-938f-389dc103a413,1660004429,2063958789160475884
+02594897-027d-1808-3013-8603e8e5d18e,3541040638,8738606599359772630
+421abddc-f9de-a72e-842e-868e20ecf14b,779888571,7557367225513780166
+018f7122-a20e-03d0-f554-6d697032788a,4191909360,13491466673220736548
+2477ae3e-89b3-474f-9241-48c3fab4093b,3650441348,327189594416946598
+281b0ee0-d956-be70-2298-010550a4d6c9,2199956222,5648286791823546603
+f4caa263-1d45-b483-9531-634e19703074,3095051754,1349081577834031585
+b734d309-c0b0-bf27-bdd0-adb997adc443,4017311458,12472696182573479334
+d94f7f61-584a-280e-1ec2-7ad8924c295c,502771192,4137846292428855891
+eb1164de-46a6-4449-5938-5191ccca4684,1093121506,15729550766245336879
+798b0f35-5a6e-e8b1-e3dc-9e6693f74ca4,3857998997,12956202021370427376
+becd855d-e976-e191-fc7b-5676af759326,83422605,13427032330449215136
+d6eb96bf-0a08-55eb-5725-93d25fb837ef,1599750177,16879985870416665554
+98e9b9f1-5206-c4e7-f2f6-87f6239b4d85,1337740509,17892537244086133847
+12f53f5e-d32e-7701-14cf-cb513cb18e50,91906794,18432448704057923043
+2398b9ab-394c-620c-b39d-db19b707a4c1,737558916,14297929022908713852
+77f1f37f-4d56-ca1c-b165-e760409c1f2d,1999894268,16378597524381012328
+1132cb2f-6352-a86e-7085-b991418b5948,1568850733,2074775360834346669
+2826c3fd-38df-a17f-6cbd-3d7462732173,1133509002,429206588715642021
+30739a92-a119-000f-fbe6-050a5b1a8e7f,4496308,882960855562208695
+29eec771-d39a-1438-931b-18604ec292ce,4203546999,10914271102398754199
+8eb81d10-8740-a174-79ad-ad111efb75df,3937666424,16673522800264171663
+e7fb70a2-e78f-2cb6-c431-8511ee9f8555,3576769405,14187424834533640354
+53a4fd77-dd83-29f6-2a3a-2e62c8b32332,3851572980,4167376896600166047
+6ff4b79b-d14d-beb9-6917-8d76bf9c7220,940375032,6438345064505383634
+065b76f0-ab7b-2644-d7fd-bd41fe89804b,1993083038,1204179214605958035
+eccd3030-99be-8df4-ce46-c4fc50bacd6f,343288495,1443994890891610316
+732db08d-c6e1-76d1-ede4-a870a8cc9675,2053243898,2228248217593064377
+0177d34b-5927-86f0-2ff8-b2ee85449dcb,3323338993,15739337037129470341
+56c13e7e-063c-ffb6-7288-994e4ca9151e,421395925,689546675146111773
+70490c4e-f49c-134e-9084-1133e5cb5771,4061640872,6055098897797042949
+38c7ebd1-26fe-628f-188a-d7bc1ca0b0d7,1813538476,9399913743166355425
+5c0b343e-d7e1-4fc8-dff4-b432520698a4,1928609170,4442579417054472120
+b517dfa3-592d-f09d-41ad-a4ac7583311b,1403154290,17697579271358158525
+f05343aa-d1d1-42d3-decc-5c2536cd5e41,4287672650,12570277809156850304
+918b3ba7-15e3-ec5f-5998-f11a6766e0e4,3393111208,15009767100476883071
+befb7323-1b60-c51e-52e0-eac465b05172,3181695307,11089388473987081811
+cf2658a9-bbc8-4fd3-2e7a-4d9983667881,1574813817,8283062881117184584
+3209357f-103b-d00b-20a6-1935bb4245f6,789099628,4057656621175304956
+9f2740f4-546f-257c-8929-dbb23ab8a927,88615260,1847035708785774148
+cef5212f-f8d8-5f37-010f-448fcbb5b1ea,2112005646,9846398077459278085
+7426ef3e-0b97-4680-f168-9b4ce6301981,1521898686,16544275813596015949
+6f680dd3-b561-977c-3487-18d9ddf59fc6,917122625,5586303523857491571
+957212ec-23cf-df88-766a-9a10bf902991,3201439525,2135495034254868136
+c9f62c30-5f0f-2886-af4f-573a258005d8,24097082,15316417779848757974
+16b3808f-31c1-f7bf-bf9c-bfc27418a975,3056623641,7680043685662397571
+28358d31-03cb-381e-dfc9-4c87f8671ecb,340904049,2063706870236541934
+90488c59-85d1-5fe5-6137-a4b53b7c5995,4036862524,8686516245180173665
+763cf2cf-2300-2189-8ddb-ed7315df55fd,3024442308,11796766093749761609
+e0281569-8396-24de-f7bd-9ecf30c65832,3005078327,3682361698806975813
+395a1db0-e3a0-0e37-c687-02daf972b3dc,2884874220,7114385982198044858
+3d4e4b8a-b603-b73c-47ef-bde6b15e711f,674561161,3958216534991048437
+04bc1374-8c09-9a9c-02ca-697a918f9879,943229987,17135579830956453304
+35626c3d-a5bd-f2dc-a734-956ca72023ed,3862934061,6374929327816367289
+64e5b76c-0978-7862-29ee-8d21213bebd1,1815610970,12587505523090344807
+dfb97fd1-a2bd-1078-5a88-5ebe656b32e2,3688448765,9672259269533675188
+b858183d-1a1a-85d8-44d5-311ff436b74b,858044291,16107853416049822607
+7c0aa4b6-9479-92d0-09f1-41d1a00bc1c9,536633966,11797527258048031910
+fd602141-5f7f-2b1e-9552-86bbc14075f9,3533387445,17963042207776679699
+81790314-00f6-e86f-b075-43065e37f677,3757792457,7029453702017310053
+9a388ffc-31cb-f21e-a2ea-d978507cdd66,3061140918,7544427548255271402
+bb2f9fe5-e1fd-9222-3e6a-eab1ea9e2400,55766367,1026795774402857327
+4791b1b1-f1a0-83e8-5de9-cda052e64995,3723035896,18362418823043963506
+5bd96186-dea3-8329-8472-bfc88da82dd0,512589164,8088151842622147437
+c08fd35d-7cde-17da-4eb8-7f4b4c3a1e35,4248499765,13556733886393370752
+7b1ff808-d7d2-8523-6a51-7828cc629c8a,3158286060,8142710779081461107
+222e0b4c-c329-6453-20db-368fbf9584b1,157695580,4324174367726598559
+00a92a45-a54a-2380-fe72-acd907dfb2dd,2996414011,14625584890032601546
+3f7f7d76-75bb-397e-994c-38e772b6b133,3834610313,15807106992460515993
+234b7c41-886b-6e6b-28fb-358ab7c395cc,555492425,1452982541825666002
+e8235c19-0e90-0932-c704-75e7ed636605,403174653,10895066342048621913
+d523ecdd-20fb-3a7c-5184-63abe0f34ed6,1289418461,5442002836673531734
+82358dcd-d96c-303d-ce52-620bff6be3a0,2461959818,5904531098369653727
+2f5208e6-1fa9-13e6-d2d9-11e8f896cd78,2777270553,6396670939087736999
+68f6c00e-7df1-76ea-3706-3fdf6f3c5247,2698747679,13644029491468133133
+a12802b1-2f39-6a52-d980-5e893f76eb31,1621071886,14556459330045175320
+cb48e60d-34ad-83a7-24e7-5a5fdbc4dc45,786095069,14158156035129427841
+50e2e389-5783-148c-9f1d-beb45ff4c2a1,1070775273,11431940277556779349
+7643e0be-360b-36e3-d91e-470307076014,2391003715,7124072413430787779
+e149173a-d6b3-340b-c5de-5283247e19b3,1253913918,3267841522721127833
+056d8534-8168-557d-4bba-f1b63ee90301,393825237,791438453108241521
+6c7c57f4-35bb-d991-6c08-eba65867d67e,333110404,3671114211575132059
+5b65caf3-3771-aaee-9281-03b88faba81c,4196167642,980071408942213161
+244531ab-dfd7-fbc4-31e0-e3d4e8b4ece5,2977406108,12416387569908444427
+e3caf18b-e497-2eb7-65f3-a47025d4d727,4190469494,14304432458386373002
+5e6e166a-3326-bdf0-1f31-4e8b710d5b23,2466585612,14545214234633714285
+e7a5ec3a-4ad8-d29f-d040-a270a0e1c317,2539535196,10921693514059772904
+49f162e6-e065-c961-cab5-f603e1cd5053,3132769990,9747057748100972309
+a9617cbb-e029-cf9e-d527-4abb7d93ee3b,168692934,2100057709436331038
+12daa049-579f-e805-76ac-7228774fb20f,72964315,798070694876150788
+d85818cb-5517-965a-2e02-8962a76b8665,233083387,7761560502783897341
+17058f8d-5ec9-808d-074a-273fbe161ddf,3063259619,14067937035322599177
+71ddab8c-dc27-7325-1a52-beb6d31f528e,4084240893,2488888128867164042
+ce9aa4ac-ca84-a75b-720f-97b97bbede5b,3330690944,4071401265123870425
+f6279e57-e8f5-c45e-62fc-3b65096b39ed,711298163,16682294384326496050
+f9ff7f5d-65f6-0e5c-c9e3-95a00cad0ae6,1785212540,5294985761465635398
+68c7842b-61ed-ffc8-58ff-b432eb8728a8,2048534676,11376621006387284421
+54afc4af-6bb5-6d4e-a34d-201ae759ca10,2532894625,5898322749826447157
+6f226851-d31a-812d-77e8-47320f065f8b,2013104827,2307120805603807704
+5e1055cb-525d-f897-e75a-1cf66ef6b36d,2803448724,12443698421427949099
+b4578524-29d2-83d1-a20b-298e54abf9a8,1075730116,10885485988622372343
+f85aeb5e-6811-5700-51ec-da55eae2397f,2247473410,13041085460918230280
+943b7209-b594-6f2a-8932-b25acca4ee92,4189909722,3206375085960832736
+5f657afe-9c30-ffcb-605a-3db440d9f72e,2992704397,7439662888380693010
+590707f7-b124-772c-36da-bae302c61c4f,3580332868,9084219627495576720
+ec338ac6-d78f-bbe9-7a3a-4279cdd4f8ea,1742385173,18147434249521079997
+0fbca17a-4245-6699-dcf5-d3516520db27,1050431959,6069270302012407798
+b25d02bc-15b0-9f8d-e0ed-acbcf6001e4c,1004832424,14431068942595510409
+bb202bcf-3265-68f9-ee11-57650e5337e2,467566363,16753629008947977765
+cf659bf3-1dde-e7a4-071e-f86577491480,1000498596,11872438047985261073
+5eba6d0c-1420-a112-34d1-4a5c63b6aa26,2371095314,16245365628701821246
+dd9a8b51-de0b-1c64-fadf-f92a00a98e20,1662904363,8025596547235184422
+4c8fb892-e652-679e-daff-469dea8a7844,4276795516,16487542241325101048
+14403b37-e410-cfcc-d5a0-546ef6608f9a,2946878944,10758072335107564466
+cde637d7-b5b3-93f0-1515-e29107f2a8f0,1442130640,5090253399659952945
+08851c01-3376-ec28-e900-a13ead4c032e,293895589,7694760395502532953
+695f51b7-6025-74b8-993c-6ac3028cfbd5,3467769112,7143032162711727631
+149eae92-128e-fa00-edb4-67ed48ef9f40,3399125703,18074134639034431161
+e5495f90-9840-f097-e5ca-1f0558ed08fa,3807736485,10270104495766389040
+9ddcae6a-120f-f1b9-a83e-4c6c71c20edd,1432104174,15202018523270602648
+013b89de-e227-3b25-2f72-5743b42602b5,944364772,8689319437309199126
+b09a85fa-5cdf-dee9-580d-73ebfa164a59,1496622927,1534339310775082176
+d5f4cc8b-f28b-203a-79ae-3678a955464f,2114337984,3614134020576298791
+d6d40ae4-f709-e39a-98cc-83b24cf19a06,3535223500,4419703045990709748
+122ee2f0-261f-afdd-fb39-47c8245cdc15,3396837385,342896794888771008
+c5dfae69-fa6b-b572-2e65-82c4885f5988,1825878,130795051940253758
+dbe3174b-ca15-fea5-9141-8ee6e053bfef,2992496060,14500738946378337285
+d889fcc2-565d-6d8d-7fcf-8e022b3bd348,2897098449,3832933733148778200
+5e340ddd-0ecb-7e30-021a-753a500d7965,3408558150,8740957638385927657
+f5401ad3-2d39-2d84-75fe-2f1f61833e7b,116909543,10077282476777467063
+da07c799-006f-9b0a-52a7-a98ef41d54c2,1915514201,17790129895817385740
+7ec2ad93-cfb2-9cb0-3868-9490bc1a1074,1383919746,15565302540730259802
+21366210-56e9-582f-798a-aa5373a70ca9,2879315369,5917904705444256473
+8b767968-6089-6f08-7760-71bfa4acc73e,3864398430,11377228764645989670
+6ac1e058-bc93-1c78-4497-24a71213b802,4158245474,1952731094240747750
+b2b72dbd-6515-abf6-fdf3-f69b498f501e,1329479840,4701604390647548930
+2165ca44-7118-aea5-b134-f32236cb857a,1672798160,9747911795660856532
+32ebfd05-7ee7-1b5d-4f0a-8d3113f9cb54,3545080257,4591640020224571556
+57b155c3-e0fb-0d8d-4b65-17ff1b91e3e9,1807615600,8106831490174804340
+d661dae4-fde2-2cbd-5359-c4b7f943abb3,1813026929,8980618279286582470
+0565379f-2a45-11be-a05d-71f9fe2e3838,2934743914,711243567535080741
+05990eec-1e61-22f7-ae78-8839f134a427,16310068,12840177882928327057
+894254d1-6d1b-c234-3d9c-bfe8271f06de,1113363344,16791126397157664535
+ac9c7eca-d5fc-4fde-915c-ee05d5871594,2402495093,4357873465235354994
+87836be8-2d54-82f0-d71e-40a223369079,1455016393,5002330073510747332
+11e0bf25-2fac-59bc-223c-b27863a643f1,3896057776,9041024888544211308
+bfa199ac-3162-ce32-3aaf-56b828664485,3104263852,14836178650883446787
+a5833f50-48e6-be2d-2d06-9741edb83e14,3843600273,7488711387332967837
+e7c304b2-2fe0-e252-947b-d0299afd4d2e,2573828371,12236828244310467813
+12d7ec44-08ab-70ee-5758-eb1278cc96ec,832506532,10305081740981551668
+cb54d21a-0169-e3d4-783c-6d2bc21ff9e0,1155589453,4729157932819599668
+233c28fa-d248-143b-00fa-da60e13d1b27,4121549284,6931725824354625385
+27f6b658-8bcb-476c-0455-bc3918c8b78a,1419315536,10048964348103411667
+65b133d3-460e-2dde-1f21-789aac23c068,550906917,5631416861653706337
+1065b7b1-9f09-1de5-1650-24d327d9d0d1,1691974055,16988375236339856063
+872dcf14-95f2-ebad-fefb-f9cf8385e043,27742419,17628108797917729198
+db531230-9629-a9e1-7c9c-cf6ec5d0388a,1699217484,3203155628262221141
+30ce6f4e-6be9-8544-10a7-cce1e4250fe3,3693884315,2265466927923605291
+2dac09e5-1155-dbf6-a06d-d8243ecfd428,4182414795,14130657301035411412
+e8fdaee0-d0de-5ea9-9fd8-4f3449066e5f,853972987,16596929792183169554
+c972962e-eb1d-9b9f-a757-2792867a12b0,1330354854,4473620556072380736
+9a249d1c-2b19-d252-c2ec-fb36aff71613,2385424009,6943951393666226102
+51b22675-23e6-cca3-3e86-2ba03e21e6da,1862927632,6751537787924408134
+d560a7ee-1e7e-c7d8-7868-d8c34c550173,2078671115,9654079341167025587
+8ed3b2db-1372-35d5-62c5-92e400970a0e,3110522277,9515509433337150351
+c792f5be-c0d3-c24e-396f-7c7d3fad16d5,57760373,1416437771964453630
+c5bb2077-12ad-23a2-a347-2693617b0cec,2110008936,5486326945580964837
+2f4df89a-9389-1826-286d-c5d275063de7,2967530697,12057620396441064232
+40583b8e-b567-1977-1d41-4e3f161e339d,1426044272,12419782382999454545
+7df14656-c2a9-783d-bd9d-f76d245fde2d,2483354486,6818856763618793124
+101274e4-5e55-9414-a323-c0e6ed525f2b,3811309026,1865786580239786318
+7d5e8650-f513-50c9-6022-53a0c5c70faa,1560269026,17775467702958390177
+434bc60b-8736-0ff5-88ae-85d891c38754,2339723603,14319325927633767384
+417808f5-af01-87ce-b50a-044fa257a969,3301990557,7634515039099921646
+fda5d2a7-54e4-d199-2b31-8b62767656af,361373956,14739106394757197683
+cc81bd8c-0a0d-30a0-2e7f-50df421e7356,2886419130,5847553003978349034
+e43b25c8-aac0-6ebd-3fda-617f41b2ad7d,3756202686,9535911714885315422
+f70b1885-6d0c-5ecd-1707-859de7834d62,2021101627,11212257796951251890
+b3d17a56-cc38-8966-6593-95916c295a1c,3434088537,61297330984521056
+214e636f-76cf-fbcb-5857-c37016c7bec5,3152287598,6045588349064808853
+299b73c9-7573-cc1a-03c0-36ce7c4ad004,3818103118,4141342376999936902
+265e293d-ed1b-6bd4-c1c9-a54301511d9d,855609504,3041866457626476483
+5bdef85d-f790-dedc-cde4-fd759e8fc7a1,3145458639,14968965040130528636
+26eb6f99-e149-3851-5501-58250c03fd22,1824146193,3471293082514325914
+314ac49e-e397-c815-49b2-2b71802cdcb6,3892834991,14287920755856188015
+5ea78717-0df8-9a67-ad3e-e4c217a784e7,3029513031,9313716566200709550
+2f4a9ded-d6e0-305e-f489-4794b41e1a93,2774371226,7060829147073127283
+abac19e6-9176-e4da-e620-3d6e8dc3a2f3,3091438396,5635814920713360281
+76469e5a-2913-81a6-732e-0eb199d12926,612494333,7885094264725859503
+7661afcd-30ed-98d7-adc3-4042fda6e00e,459963198,13745060617671461580
+735de565-15db-64de-6b38-26ac3979ba8a,3214503182,5660731772906321578
+96f48a28-c28e-0531-18e9-330cddd32376,2199342642,40232742636851937
+791faa37-a591-eb14-db46-70a12224b870,547906371,5153533877237365562
+0e09b333-4f60-62ee-9940-3689538588ec,992921689,2917395259526432896
+ccc4769f-058b-a4b2-5075-c3a4960ea785,2095541588,10916071978996253077
+0d94e258-a608-b11a-f902-6afc030f0687,578450761,11435931096012897613
+f607cef0-68c9-2a4f-8042-0a49e8e49c09,379528440,234074284919200184
+c8445c6b-16e7-c1bb-fa28-c6ff61265e3d,3787410496,16955784362564324202
+6b357956-b807-fa42-b080-fec14eade7c1,1213733497,9980502931867514718
+76b496ec-2e0c-7638-2098-2e77f0dd0c41,2505156300,16671356932901511560
+279ed4ed-3972-1012-ad73-4e93a984ad12,2949042932,471008464854763469
+56c3a463-43c9-3f64-8ea9-667fcaa1694e,4191907831,8949288736348450498
+1f1c07ff-e3dd-35c5-5ada-95c581b10619,2662883011,17202508549439272129
+5a404342-dd07-84a3-8825-5718c4b0d7d7,1939121851,11526250587971235643
+60d110d7-40c6-acd8-d587-64140c2fd0f4,2937843566,1307702839510662784
+ee515fa2-a2de-a636-ae3d-82a148c78ea2,2641313287,12579245654662543671
+7925aaea-0099-70b5-edea-26567cd34705,4179288212,12244885906515005904
+923daacc-fb20-8ba6-dae2-dc989060d321,2605191364,9334567047521912077
+43d0fbe0-9c84-078f-95da-2857d69ee9c8,2742150802,4102250830406710025
+ba95ac82-b2ce-ab20-a87c-87c748840da1,1067179384,3818975888454473113
+d5034499-d4b6-bae5-6994-88896a371004,3910512745,12446804053309225408
+93d9ae62-d102-6b44-5b9f-4c0cb268df80,90179678,4114520628047882830
+444ce31b-0753-93ac-b18b-73d5501c65bf,601624534,14008571425996141960
+0cc404ca-f81c-6967-ebce-52fd6876e8e8,2184585579,3970695575280075009
+0204d325-98cf-bec6-ca84-e449661af2b9,3541016042,1405944018362327449
+0f74f03a-02d2-08b8-c297-b249133d52ea,3814205503,13504000208662323314
+e8a9a3eb-d845-0ea7-a8fa-fba9f51b42f1,3102276558,8427313659998295060
+e52b78fe-1c57-d77c-c6fa-3388feecd87f,1884896090,12726871574478671287
+465a91ec-7645-1df5-79c2-88104e37dedf,1640797908,5113112860448181611
+1ddbaac8-7495-bbc8-a2a9-38bda813888e,2275401559,14600254667151445001
+f51fde40-9b72-5407-126a-bb9693590b39,1953163474,6168450541249709666
+323afda4-ba74-35f9-c36b-60f338f9b749,1362716518,2696381618842134635
+8224ee3a-7e4d-51e8-3519-f7ba564676d2,2577238417,932517093682989194
+6fd0c06a-6ddd-a477-ea03-77e99d29716d,3400498320,7735756460125041576
+f355c9bd-f618-fbc7-d054-b5b83d40a4aa,2373704726,3196668876151401848
+314a81d2-2a20-d85d-c1f5-af36de60d8db,3300989994,9791828313079790531
+78148112-f960-bccd-0e97-2363a94c87e3,3244657536,5847852351286850092
+ff437c53-8505-6d50-6abb-fc474feb57dd,579804413,4340170546717191110
+0cadd502-a5fc-e91e-bd90-de9468ac79de,2005432699,17265830143057550634
+3de82831-fbc2-d115-9e0a-d7ebf4021004,866301522,11576652984073215783
+3707690f-3bd1-2a18-90fb-6637aebbdbf3,1435538618,2245003463387675772
+89a1650c-4a89-83a3-eba7-8ad3487d9008,3529270453,2566807892849547210
+456363f3-9af8-d0be-4302-dc2c4877dda9,3620519127,10235032640854278145
+dc3201d2-e415-b4ee-dae6-87ee4098972c,3328252570,18232460078604021249
+76baa31b-2c5c-f502-85df-0aff32fa6274,2624972923,12942420681266999939
+5de96648-059a-a7e6-78f5-2f36d3a0f952,2217917614,157710226481832708
+f5546633-19c0-2b18-e159-d549c04212ea,4261856664,14086494956051876685
+ddac3c67-b66d-5093-c71e-e923b60d02b3,1006114230,9019792341890210418
+b64dce23-5e83-b833-7b7c-842bf9d0d44b,2431929011,1808801182485677885
+8e1410cf-1312-03b6-eadc-5730dd2ccbda,632427061,1086716712377541772
+68f7b314-701f-ef28-7c59-6698966ef99e,3774733217,14135278967009578136
+f2a821f4-6a79-857e-e160-fccdfa156740,3452430708,2755342355129005147
+cb2b38c5-65da-d797-2606-fa6f0b077226,839840737,12306102554011130129
+fe0b3e9c-539a-57b5-7da9-e7812626da67,1803852692,14943700853363475251
+45a6d74c-6723-c6b2-1085-1a0fa3e2098e,423918947,12182924167442653839
+026071cb-e56d-2386-52f9-7d9347c22787,4213170939,13797240390357900949
+d5333ec2-cc19-847d-7c2e-092966afad99,500779909,17938185078045211762
+3ec1ca75-2607-ea5a-26ad-f2de6a1e192e,1476795889,10614752101437879902
+d10bb6b9-8768-dc86-be80-f76c4928a3cb,1842655186,10764811142245262461
+3d13a071-9275-3558-c15a-1ff90abe5942,3106709505,756875332636155845
+dcb7ae18-3477-70a1-0e03-a67bad0d482e,679078534,15710103029035927938
+89927056-40b6-92a4-2512-dae8c5f32f2c,530295436,3980729909872712641
+303c4237-5544-0323-8f9d-2015a822675f,3926503909,3800205241177136127
+d380008e-4b51-e463-96b7-2f34df60454d,1361902234,578261428788617185
+cabb2275-521a-7abf-bb2a-2067c5722279,3176815168,12677317238873858124
+e50e0bd5-ed9e-30df-aa74-25f5db635de0,726207815,6399524644129820275
+99ad84af-8e87-2c36-2122-eb75dfc48bac,4181331214,3665565070286586924
+97462200-8aa7-fd45-41e9-f4093a979b98,4246399042,6420985660693299855
+95bacc86-38f7-f41d-c5ea-787aa8211ba3,3022308769,6431543088015143346
+7f32b8e2-6d52-6292-2ddb-8aabca756049,269874548,7821433657479488244
+a6775a88-4632-e97e-9945-6b984ae94db2,820557129,14197607819925527560
+dbc58743-1d08-adbc-6682-78f723f22b7a,2028955424,389273960321945941
+48fdc848-4279-f1bc-5a29-64264e1aed73,505975938,7067964287897398776
+83bd3917-da89-72ba-a259-cb3565fc8002,2609456966,12082146382895895675
+341d3473-f37a-1255-3996-9f660b85c453,2188080356,5252187452638359582
+dad852a4-80fa-449e-3cb5-24545277cf8c,105518399,3500185263694638746
+10028615-ddcc-fbde-ef47-f0f1182717e1,4283756445,4436836163090603864
+05834b27-aaf4-66aa-f472-6465a8cacb3a,2509720277,1465476938077041193
+439e1d00-1fd6-d546-0c23-0916cefc4437,3190961728,14271364520090607532
+356ee647-637e-ddd4-73af-66bd46dc2712,983238783,2823929806832476051
+18a30f51-5b0a-1602-0088-f1edf7dc6a30,3860296054,6462426376900208708
+1d6f6e2c-c1b2-9dc1-38b4-9220408aaa88,1928887771,8381236943176495264
+44b48c37-16f8-43e0-e3f7-7c8c0343b26a,4109754781,17693908261105044543
+64fd80e9-740d-f309-d9d0-dbfb0c7e6978,3554411732,14026907216100156068
+0b2a15b3-efd0-a36b-cbf7-5d180e4d13dd,2726407833,13739846569479174292
+dc550071-09f4-03a3-512b-c3288a7f5f07,600023748,1694367928238577700
+496b7e18-7fe6-f8d2-e44f-cc2299742ec5,2212946091,18430987123580469766
+eb439a03-0bcb-3b85-8421-6ec3e3f349b3,2372278423,1324768490048033492
+bfc2e818-f61b-2343-600f-5cb057f66c84,791119727,13064149749616893100
+035f283e-aae8-a7ac-942c-e30b800faece,4208754197,3752254656746766255
+fdf901b2-901c-e5f6-c5b1-e111fc799d2a,563203574,8224808694763704235
+ab5c8d52-c0ff-c150-e01e-9cb963640053,2328927723,5867126557981709509
+b8961751-c23d-4dee-7aff-10d20ab25e0a,2715187948,2633307136361724710
+c4ee333d-0a65-defc-378e-9c779d1e0e1d,4169053961,10149422298791827914
+b6fff298-3e09-124c-a5aa-f78854accc01,723721955,9495519212060227293
+499bae64-46f5-d50a-fe4c-5a5986bb3e76,1647191770,17496875276595022520
+89b173d7-4931-3448-7355-e40bcc8f4b1f,499850659,2735762958928123694
+537847bc-9fba-51a6-c407-f448a1d88fc8,2187602227,178248807287157845
+f003b14a-3c1d-c2bd-0231-37485a4bf6e9,3407801737,14612070923922988988
+92829149-392f-0eaf-8aae-72505b2f4931,1735045472,14024033724000331410
+9847d987-fafd-984d-4677-9577f83e6341,1650760513,14838834504038244509
+d62534ac-9d54-25e6-63cd-82577bad3be4,3268477124,2179792630287872826
+93f820e5-026a-81e1-8e82-911aac914074,324869544,10151365904614186198
+c3d9d245-a757-a468-ef80-dc19f39dc25c,1225468539,8245734997525498390
+4ef55226-4a90-1e36-8bb8-c260c8d2acb5,822517382,13423515358789999603
+bf0044e8-3ef3-9b9e-e8f3-717d1d34f33d,933786672,6216929440524117702
+84748a09-445e-4a24-a154-1daae4a092ff,3883490903,10755171743825650773
+cd7c6b2c-889a-55da-0048-e07aa33828ae,1706741050,3458809367456392013
+26b61e0a-b3b8-df1d-4d8a-17c578e76e2d,1249628755,9212487312237041828
+f53f5daf-f841-b901-11b5-cc2e2764ec79,2691172000,15448785411969568526
+7ea26346-5ce8-d652-b595-0e739a6dfbc1,1170878667,10155054241136056488
+df045001-abfa-26ff-a6a5-c66481c71a02,2480509571,13967747998572419145
+6692740b-1bac-2b5f-b35e-c85a78e4f2b8,1855886529,335116198475191716
+99f496d9-e550-48e8-85ff-ac2bafe4cf38,3483491900,2083218360734694472
+80d8de71-6c24-c093-0459-71e2b6ee0a08,456135848,18259649889840201246
+abf4108f-bf96-0801-d39d-9567b8809cc9,527322168,3811577574185399209
+f28b0dff-bdff-12e6-c18e-064b79b3b38f,3157255191,16784743370324930351
+67264b32-f3a8-27b9-27fb-82965c2ed737,3450346492,2875055609853271402
+90c9afff-1979-79e9-58d2-ce0479fc82e3,947504329,18156386296096143732
+36f8430a-9a1c-4db0-1402-e80d24004e07,2296792908,3839415324979183869
+fe57afc4-ed31-70d7-5dc7-0f240a5336f7,277363718,5761368961246691419
+d9daef0a-6a84-c54d-4d51-c1b4ea71528a,3907386920,14413061618709326974
+f670d608-0032-6033-d5a1-8f34fb0a278b,2538495263,6544051039567760088
+55402b76-bb4f-fb07-1d63-d7cc92336905,1093902671,11738215196418251875
+130d34e9-0514-b4ee-acc9-acf82473fe09,1727176133,2684338969968928876
+57e4f9b7-868b-9460-e2af-919076e92f32,1925925255,774147992314443420
+3d3fa2d5-756d-4bf8-b4ae-d593794ce7d0,2934463753,2407482503631334277
+2a8acaa0-5be4-586a-8e97-c2b322d17cae,1982835650,2253942580497262515
+aa357881-a6b7-5236-99d9-0670d3f7980c,1321299424,4451096949255741825
+91697b2d-38ce-d07f-d08e-62fe8704d549,3433659426,7506337205668436746
+2138b898-5c07-a8cc-586b-5c1d87fa38b4,3586972016,18138777833842608854
+41bea6d6-febe-1c80-4a4b-2f20538f17da,1866881606,1095258965512306297
+abb2d435-2cda-c381-0f36-10725c56a723,1265859880,2579420111421394027
+4124f636-28cc-b914-04a2-8d1e54c7fad2,1612610579,1814847178084170868
+a9ad2c4b-400e-6300-b39d-82843d80051e,2452860290,4755988672296702613
+def7bd05-1769-5b6d-bcd9-22664f648d74,3831823048,9699945346704829916
+3838603b-316b-5e35-f54a-6f7d818f1dcf,520257738,17913697839153328167
+e153badd-5fd5-4c3a-b231-c387108219f8,1990518285,4741791140592980478
+74616afd-cec1-c7c1-3ccb-69037ffd1b3b,3276086155,11340176170409195946
+c0fcb347-9ff9-fe0d-ddca-97fc3bb87b5c,2089585566,15480165534585193638
+9895fc21-d056-cfe4-a76d-d7dc2becc7bb,2258692326,3405936554499275244
+8e431217-e0ec-850d-d4f9-2e6e42d5bb01,3739903952,1537492331534026836
+58c1b8f8-c73c-ae94-827a-7d62468cd93e,3114667422,12887560046288089808
+4ae82ce2-7d65-37fb-3826-91f51d0c5524,1975358561,1637236028092967140
+40652ba2-d590-8b25-c0e1-6386dd28fc61,3305784664,3721488766364759189
+7d7fe0ae-8dc4-667a-eae6-cdc79359ce6e,586582754,2284716928679400237
+1add23fd-0822-61eb-4485-d9fe284cff36,3547768964,4507657780285873976
+7fbb5f23-eb25-6208-4ca4-6699c4e030d6,2363320738,16205803652833516593
+786ee550-7085-26dd-1592-39082427b16b,84644921,1111877373771253841
+59bfe6a1-4b65-25c4-f8d6-1047f3352329,77441124,11854315952002554407
+7e47d1e2-b0ad-021e-7dc4-8d0032671aa1,3337335955,1910993131535766313
+1ff98a43-57bc-3ba3-87a0-68205c3bb9eb,2278573501,13786187825022195047
+e5547a26-3cc4-4dd3-536b-365c1ba7c0a8,3247120812,9175191455276270243
+fd4aec5a-9617-1bb1-a571-c3412f49377a,1114766405,8134089672873851223
+fdf45d68-599a-5303-30df-7115ca2ad048,3620527959,5046295468897226994
+507f03e5-43c2-cb38-42e8-f13cb38b4afe,2464288638,16687171165043426364
+0554265d-0f17-e424-9f71-fa29cdac0d3e,2753371413,7607803496621079785
+1a5b29e0-c586-1159-9ccf-4b9b727b7cd0,680745980,1940290077496719713
+1d67df32-8cef-d331-9207-4dab6f8931ce,1337546808,2623150757504760487
+85e9aa56-5e22-03db-a0c4-e82bdb22ff1b,537334131,17690365441879541991
+863d8fac-6c65-dc3a-cbc6-2296a8d45c3c,3993799025,11716550815140951232
+a2938c58-1c74-c771-e3a2-cc3fcda51ae2,1116553677,12559837866124974265
+6c49fc40-1cbb-4888-4e7f-2bfa99b8af6a,2573634620,871747052986851162
+bf9c7de3-9fb3-11e8-9da8-c9036a6ae1bb,209363888,11023883873841408125
+26181098-7e05-3f53-a65d-177e53ce0770,2664509908,12745227266779928883
+cbf75a72-3a9a-a455-dff1-7e65b243931f,973366924,16336480897987783866
+9094a799-9945-afb6-4a62-acefc5ddf501,753112548,6423016575953777870
+d57fa9f9-a89f-39f4-2249-b57de5e9c5ab,522128212,18272425589695036006
+29a53a1c-9b04-ea42-32da-56b6bb373aa4,2165478132,255151011029007122
+6f61ed41-30fa-a796-3010-50c40883b206,23433340,3304826611881463189
+ce2c6568-db76-3a8e-b45b-382696beedb5,405857265,7857808630173514227
+c11ba9c3-b15b-01f8-6383-d186b2952ba9,2704984373,13758463029835653314
+06529b2c-8259-788a-2d1f-2c189193bcb7,1488742230,3379639247543625364
+29297d3d-58eb-333b-0a60-6c530e553e4d,2236639565,3213530528650736069
+9e2f2435-1cd5-1749-fef1-3064bd38b859,2799283994,12450149957422203929
+18933494-4d42-66f6-ec6e-11cd2ab7dc49,845271776,2462369633469702932
+4da0c9bf-3e24-5ffe-27c9-ad62e1a679a8,238762372,17889766963434693893
+14040319-0b2c-8483-2133-b44ec0fa68d0,2680743803,1793636756952690908
+baf5353c-91bb-a79a-1817-09cdbc79186b,719362850,11704442840655802664
+2758537f-a6f1-d180-4fe2-23b5bfba546f,2091180231,7396448567714959407
+ecc2f978-f770-21df-2bed-bd24e908dac6,4039781203,16376002920444158611
+6ef84385-0ca3-df80-5437-1083259148b2,1870269889,8369311965934167850
+cf9f0bfb-46e6-1016-8e9c-55761b98ea09,4127807083,6200038096841013527
+9bf4ce80-bb72-97b0-5ef9-4e3d44342cfe,1574149928,11230026293976138354
+59b92e43-f321-783b-d547-8722f7c9d71e,4137325764,17265221298230525035
+80f31310-f7cd-81f0-4ec9-a4c3dc94bde9,3204048579,628911276372495284
+742c87bb-4eb7-d8ff-a243-d5bbb5c6a0cd,665320903,12436754160547905550
+b3a2f67c-2846-71f1-397a-15cfa8260a7c,4059633919,15147139293000126047
+2457d8f7-67e3-1ef7-0975-47e909d91646,1492919324,10569379953258611509
+74b0baeb-9d13-bfc5-815b-74b117af47d4,3178603918,13361643581233605612
+8e5eaf7a-fb27-b5d0-aaf4-c862b5a071bb,123107341,5478483804430277706
+0dc71d79-1300-d36a-f79f-60f549332719,317157205,14276458128703849457
+e1bf64ea-d2c0-9461-fa01-754c090b8198,1620057413,9689132790969393290
+1dd3aad7-4aad-e648-343a-1df1a47ae414,3936454954,4305921670978715470
+b3ad7581-fd48-b0d1-2361-54ccf3f40816,2036152459,13037459550796989934
+a4065f95-674a-2b2e-08fe-e39c6ef7228a,509898862,12235516216009394980
+0488bf30-f41a-aa1b-dde6-f882e696b281,24385906,10364211681306071699
+c2b7c6f6-36cf-563c-c1fa-144b7832b367,2329491953,14305624843784846140
+75bc485b-9b6d-7180-eb2b-224c0d114c9d,3779209557,17225409672023950594
+1ed80d63-51ca-e466-47ef-54f6cad483bb,1801311865,15171411290378208038
+de8b4bfb-dad5-1f6a-6e0d-4d627f24d273,970614987,8028353863140992643
+61417e5f-ef3f-23d3-4494-a62952d5e7d6,3922547760,3937997359077479302
+62697c4e-431a-c8c6-3076-3997c2f33f7a,1335396388,10997271062958603206
+5905ffbd-559a-6ced-97df-53c0fbc14af5,1302521686,454393114470533704
+cae9b7d8-5ec7-deda-3eed-a86fbc8e7579,907452260,2543309978398183380
+12f7d805-ee47-e06b-a38c-3a8d14ae8f7f,4163805500,752499579160332298
+77ea8180-bd68-f9b4-8c48-35e8faa10b53,126557201,8913653372311704404
+b0c5fbfb-a3df-0cf5-2d1c-74c2d1631475,2284892580,16698242931049650259
+8f365ffb-cac8-b5c6-6f8d-fd41bdb144d3,416015502,10892287374578285976
+13bc688d-9d0a-ac25-0976-40b966ab705f,1814145690,16582602103592539202
+f2b4a13c-7cbe-c67c-112d-c93dcb6b8be0,1421818103,1526796346860604768
+2a6fa320-cc98-0035-81b1-41972632e2a2,3519547878,5786427347792813043
+723c228e-bec2-b968-4e33-90dec4523ea4,471986036,10508008548892270145
+3c5d2c1f-b357-d746-d07e-e748b422b074,1264503779,17749720288116410404
+d718c50f-03a1-577f-333b-89c60d1620c7,1283538759,4230915404650975234
+ff2386a4-8985-a1c3-703b-57da6efcf741,3194418762,13781718960659110660
+413b0a97-5282-13f4-d532-91763826a1c8,3047600357,3733932926475892420
+6e7706c8-821a-8a4a-3645-946e52359899,25954064,8531746815069940328
+ca3bc5f4-6a7f-fa93-30c3-a7fab15847dd,3332060500,16575038056156662324
+d294925f-50fe-a35d-5779-a456d15925c6,754671388,14718322133235986631
+cf757cfd-1d5d-f83e-8495-5089c3027574,490191036,3340019632617669734
+10454f9e-3f3e-ef4d-7819-1dc98cc535b1,2172764106,14433633008291636065
+b5d3ad66-b480-3b45-b2f1-e7444984e621,2853867056,3704153738369260658
+3c3cb8e2-77c4-0dfa-7603-203540727670,2105708052,5375482502531193607
+0c4683c8-26df-173d-0dd9-5e6ae47b156f,3404774397,1449355941412765584
+2d570f51-7439-6e3d-4a32-2b40ad52bddc,469592590,952156339936588122
+2ed83b74-c95f-1af9-4f07-1fbf0e136ec0,150596447,5874514219931224241
+344aff1f-41d2-eb69-2729-13201314ab62,504865588,1962274868635454274
+91d4803f-e490-6e73-8727-5035a116e4bd,2876692238,12553022038752142242
+553042ed-0d57-e059-790c-137265ef6b56,3524132128,5700531442527620812
+ad582cca-3e17-2d4c-ec77-5d673027664d,912604635,18251080863338533404
+62033bc2-45f8-3948-af3c-6101f9a06632,904469054,14886066764824417321
+e5f18186-4489-4857-aa36-0aa89ed42444,212815789,2923258765115646924
+c8ee27c3-f5a3-8737-7708-528f83a9a8ef,193426072,162625424231623749
+3c2f1702-71d3-681b-1bc2-2c39948569ec,2852523376,12633768736382841945
+ac3cd7e3-6a1b-21d1-60d5-fec8689c867b,2201123459,4582133641609108115
+947fe65c-a0de-bace-3f2c-4cd0df8b324a,1109858339,3760979926951735735
+bfe85858-0e08-7dc5-b7c4-752b68ba0199,1457384710,14021070647266262660
+fa9d7b67-f890-800c-2d3d-23d799a883f1,1805805068,12702581907312159670
+dde4245e-944d-8bf6-63e6-13e9a863c109,3063068430,13437816346108844318
+45c85f48-0b05-abec-06fb-79829e1696de,1530367192,13087615894833699495
+f93d28cb-374c-62b1-c741-51f91fa63e49,2314658752,15413836294082906514
+b632d970-d576-7125-849d-a74c24f604f6,2256850286,1141535106392712755
+efc9048c-0a62-204b-e85c-d13e5b2add2f,1715217387,7931191219813807645
+e82d5b84-c86f-3bb3-61b1-ebea5a40e16e,1841844181,10347560303547529928
+68eab0b7-0d38-ed29-e1cb-a14866ba5871,2634674879,9716012413168470924
+3e709049-4bfe-6c93-9634-e0cf30905046,1206392012,12897694191738224747
+4d2facc8-6cb2-ad2e-1564-13914212a6a9,4289559117,1281661899581306586
+7b360c02-28a4-928d-c763-c77b9f678953,1303468796,5833244810666869379
+07233fd9-059b-74fa-8d3c-ceb4aff8d71c,1941530187,469640658482170330
+f9cfc0b4-3106-2ddb-0de4-b36db4f9aa29,2756678163,12468089213980911643
+65f9ca28-e483-da81-680e-bfb7b14dbc3c,552463246,3557724332878029518
+514b995e-7574-6160-7795-7f65b212e78d,3974005877,13143131765675100602
+e102c3ac-f803-cc8e-2809-2e93d040f440,3441930001,3314579325446367711
+890e7747-3ae9-d232-889c-ce2c36e6e36c,1568343054,7711811993991996328
+81f9a0cf-bde9-16c8-c1f8-45abc78b190a,537516226,7338904694832615768
+7c62d0fc-4b92-e07d-89f8-ec5386b8de83,2433997931,6730695144814914661
+73502b29-05bc-74b9-198d-39765f2afa76,3899978946,13810928662478739323
+6d7d3be5-5d7c-a20d-d1d6-6bbe21efddb1,249165805,17364327932973064610
+8d202abc-ae67-d16c-45d1-851865926244,3450451471,14118578313400416216
+58813ccd-a6d7-d74f-3e79-00b76366ac74,3215426694,17573764029181471601
+79505eab-142c-2bdd-cece-6b70163313a4,1941369177,8297716663865434158
+2a7837bc-38fd-db4a-55dc-ef0b9f86b23c,3484457795,6536323344332439269
+f3d118e0-b276-bf95-781f-baad4e963ca7,2445014330,10432914314096283037
+cabc9233-7750-fc4f-81a9-4ee8a8b4ae94,809433784,6301038899829548209
+6e8ca35e-1fd3-10d3-6f07-9da406964f94,2690080566,5800227595110411832
+5fef1d76-a417-8d8b-09b5-9f314663f32f,3046783680,3319977306105875969
+c737dede-9314-b1bc-354b-e9d22d0013c3,2384284324,1475057465876867856
+09abf018-02a8-06d7-a562-e6e03779cbc5,262411038,5751248780825144072
+4950ed06-ccda-e919-4272-17472ebf2879,410869595,13876747390400654991
+89b0117d-1573-52ae-38ce-89d8c4696776,2325071768,14583933163356202397
+97e37e21-f722-5301-95b2-2cee19fb8c92,3748163565,1165066516584184047
+93fcf16f-8a95-9cf5-741b-3ce2fee4b2ba,2903954409,12943418866425582270
+e4252832-6bbc-d67f-1997-cc40c367859e,2156396959,11720741764631583295
+8d3ef941-7c90-e780-ced0-05813db5bf0a,1545697456,9636948698776262827
+a9767fac-09e4-e040-033f-e117b13b155f,1058236751,16883791307565223522
+e01ac954-6332-4294-2abe-2a1685b5f6f1,1282705299,5279760409513622014
+60e07428-4f0f-c444-162c-ad51e452792e,1039374258,4051193471500151419
+ee78f978-cc18-adc9-f498-f34fb98389b8,841401878,16818587153749672843
+7f4a5c2f-a5f8-965d-5f3e-525669134e1a,1187017729,2340122845383731197
+bed403d5-ec48-a524-c2b8-bec5d19f217b,3838215327,4264494953666201247
+baa4804b-528d-3162-7c43-bec9f100d623,182147675,17333468272741055398
+1d1851a1-ee31-acad-7ccc-ca2efb35fda7,2433704901,14476118671161590572
+75328e90-a46a-6a33-0533-cb94ed93a2b6,580587534,14073151801760455407
+76468ce8-eab8-4570-277b-711e37e99532,3072021321,7840130340230845376
+b81f9bb5-14ce-e66f-3a82-03b1aa27467c,77813927,586596130458477115
+eaa35269-1cdd-0397-b9a8-e680071e1cf5,604589483,11879866469849708917
+56f6a355-f289-811d-3fc5-6899c4579b28,461998865,6143039987348327980
+466417ac-d2e4-51f4-3834-df6b6f25232a,978747063,16193680731737696660
+e22853e8-ca4b-ef14-0b15-b4746c35e91d,3258136433,3917134013511630764
+30534124-81b4-b6dc-c8f6-06e15c1f5c18,3828429692,9342711000385526559
+2b1092c8-015b-6be4-69b9-0f122e4efd95,932886589,7649127167316826543
+301ba352-8943-168c-efe4-bfa9430338f2,3590997384,17200404965958058158
+08da60fb-08bf-12e0-ae41-5c140158a712,3659207369,5650091253106210518
+e6f765df-f756-b39a-365b-caff375f88ef,737591443,9532194473614776995
+7b8b081c-5dc4-f04f-9fcc-7f13316489ed,1733838380,9531864882941212107
+ef9ac02e-55df-af36-e35c-c9db85fc0488,53553560,4424737209355992280
+9ce37802-a529-a3c7-17fb-1c9818a5cc56,216937291,7752890467055292704
+23af03fd-10c4-f251-fc96-3ceeae0be023,3462526341,12731542510316873788
+d3e2b43e-0712-2e56-c97c-1661064cd177,1853684002,7205468346377819231
+2b55d7f2-3c53-5615-6ce4-21aa2c45841f,69253998,153403183784724278
+d456989d-ed62-1bd6-297a-7e7413f57e44,311234744,9057014305216868611
+eae046c9-7dce-13b2-0dc8-765a2ab15d15,3058081268,2248260750277765435
+b4dba337-4c54-3f55-5ce5-48aff7a4ef24,3493120438,6597551179078247484
+11ad2ba0-a30e-5b77-c906-f91deb228444,201164897,3160778836475389122
+1d97e7c0-24f4-84a1-d03c-a9bfa2efe4e7,1164091592,15479189906513181086
+2e038e1d-0041-9c50-cf8e-d6b4a42f5c91,2540697462,6097709418195250359
+ec1d7926-143c-0e37-27b0-0242dc16ffef,282303368,15667603105979177918
+93145f23-8457-9c95-3130-0ddc965098b0,27003012,12956207869328835060
+84dc16fd-f605-7981-87ce-36e5a6b77d59,3899519676,5263164537666402586
+6480485f-fe34-1534-99ca-985447a4b20a,1661520273,2206042894364399201
+1695e0bf-87b2-c2df-99dc-886aed161295,3930872258,8635253919608036999
+44187d4b-c49f-3d0f-aa0f-6281c2c864b4,2826764548,7814306531621599076
+c2fbb137-f051-6d2e-b6ca-decc092b304a,335756426,1593116655787282024
+eff3f763-2616-a306-eb9c-1f84d8eeb89d,1734366764,13689920983693313481
+efe5d9f4-000e-92bc-d298-c8816e7b7aca,2983262580,703244575925655477
+52a9bebe-ee66-239c-2c70-f420ada644e8,2905057559,8252360607682821632
+81863426-acb6-53e4-362f-cc726c53a12d,39261464,14327342913426771390
+af152c33-76f7-f0ea-4226-cfb16d288641,1051574558,2961247448936375366
+65fb6cae-e01f-c931-f6f6-bca2f3a152da,881596875,6926592660080227193
+aac1cd3f-d20d-5f9f-25f1-60f2049df466,4082939460,1107698549896839537
+e2fb5fd8-0aa4-d0e1-56a8-e5fbb548acac,1320893209,14707599865703233414
+f77691ac-73e6-cdc8-1ac9-2b70983a6f0a,3019314349,16542587712766597446
+0462194e-be60-8aae-e432-6b1e375def41,407874377,7079415777350934511
+0ee823ac-891d-5fbd-c088-6516bd5ab41b,1449480380,17655763347470182101
+b3292d62-f1b4-f9cb-85a3-ab8822d4dfc7,2506151536,15334940052250273339
+09698dce-4766-5662-4ee0-c57b598e6fbd,2910266516,15459907945754825612
+95bc00aa-0052-d711-31a0-843a1ef42943,2567873884,5884706371629735997
+2c4cbbd9-ec8e-c784-d1ca-f320450f1458,2287292742,3180312313388042695
+b831f13f-63e5-a7fa-a5c6-8ecd4c3a2275,2110720586,9861224464466584953
+2701586c-cd92-8450-41bf-3e1b58bcb7cf,2355155063,8668522171017265326
+6c8ca216-86b3-74f5-d11b-a894d27051e4,22379271,14211064651141717494
+416e0423-7f19-600b-7e58-b813566b95a9,3109056068,10863326696708213674
+6d064fe6-9dd0-865c-4ea8-568afe1078d3,3263983067,8083232347928507998
+72fc6d05-bfea-a556-96f8-682ad65040d0,3792970428,16029187161583834158
+96192dc4-b861-3d99-a2ca-f8a54d4e4c87,1047165546,7233943680808736025
+e374de6d-d95c-c05c-486c-8ae44ed50981,300302943,17330457038760893869
+b3c598ea-ff61-d4ba-58df-f379922b1dd3,2472792324,5012657898392122742
+fc69db37-6375-952a-ed8d-a9bbb3472bc5,2022233643,18131022762144956183
+791d772b-65ea-c162-8ba6-961a894e7f29,3340469767,11508595757899586400
+e3489586-bc12-a1cb-7162-dc4e829a2b36,2732666850,9959964222941590594
+8779c671-364a-8b1f-f43c-f7d7ed6ab7e4,2915450771,18305674405248479251
+2eafc322-90f1-5f2a-b12f-512e050c7038,418543133,6827273037147675962
+e5c9609b-be8c-2d28-f9a8-e4765bc13c0b,2813772109,11677407434549180514
+f1f939fd-87ff-5822-fbd8-6d6c566aeb0f,3950799986,15016887878946415250
+27df3b9b-56c1-4549-6379-0ce900b6b067,1753325537,16348979820716250976
+6780bf5b-3841-a2b5-8713-14c1c624afcf,366831584,5651963430658553650
+7a50c183-65db-24d5-817d-46c1a25220a9,2442952624,9202067871929787359
+8f676d2a-cb8e-0998-cbce-b2f0f60e3f2f,3176497900,10480926766520769064
+d6b95e06-99f8-a251-d50b-1be7fb92e2d5,862371947,11539177470682280728
+07bc60c5-eac1-5316-b3ed-2da6fab3916c,1988787589,4201153326226273696
+f07df517-f58a-e3f2-0d8b-5196c964bebd,3929800373,10021438761605677903
+740caa6e-717b-2ea6-56f2-844adbe95df9,2818204386,10133830802490907176
+2edce95a-2947-f6f0-deaa-caf2d07bb925,4126768872,2688042873556605249
+d2fed404-c9d2-071a-b315-e7e23f04eef7,2081372629,17804356549175324773
+8526c655-ebaa-1940-6dbe-c8ee0e9fb303,191694649,4654101009907381549
+61d6aa6a-e902-5935-528b-ad3a75d6850a,2577694165,9256860996610607793
+7f42a6f2-d8d6-08c1-e6e3-127343c3a406,2391962857,15380144489309450387
+8c1165d2-ce3b-b53c-03e4-6e9d9d7c4010,3518049022,14929606609211241204
+46177a3c-3e9d-0d03-929b-09906e0aef24,1805225383,1633500363572512081
+e6c971a3-1c6a-9b76-73fc-bda01aeed4ec,2011308554,16654099983335812307
+01501b18-4d96-d496-a8d6-29072d3a9ed1,2248090500,10767849928643709715
+b5eeb448-46c7-1426-602b-3caa1fa3f4c2,1499860444,6904505496258531129
+b306d199-d646-d133-3d0d-9d4b3f82cd62,2451468639,10315458866567309170
+3049a4c8-e62b-aa79-f5d5-b6a4b9e2b6e4,3090208647,12734263937342187619
+9acdd989-ec31-32b2-0247-b8329973d5b7,2556808991,9335196224821730887
+761e5bb3-4c7d-81a7-5128-63b2ec48c84d,3260558835,3476446446197235711
+7e00b9aa-270d-83af-56a8-493cb1e5d2d2,14850264,13692205162435088368
+e0e72c81-ae67-1e11-b5f5-9988191dcd1d,1309955575,4197073037536871595
+0375a2f4-ac72-b6a5-335a-cd5c7f78074d,3862441421,16299278519777720207
+949d4fe0-303f-b1c2-22cb-4d0d7d590934,448739068,13614826254571614069
+f5684441-b850-7c6e-f3c1-84e3464f3e52,4140749495,13577124957123011836
+4f1efa69-981b-dd00-c6af-bf4b2f882cf6,3153737100,9515722296766470926
+8cf1c1ae-44fd-7bf3-c199-77e2fd10a0d7,4001059965,14783903562111488298
+c58256a1-e81e-3931-fa88-308f0c9baea2,3353467194,11135707087339189060
+7d842342-d362-e984-1e07-ebcc18ce430e,2777575389,12147007998105579374
+9cd9d9fc-a42c-ae66-40ca-eb48bb857081,612769806,13611149441705014752
+48d90f58-99d4-39f8-7c5a-d6b4b575c9b6,1449619376,1548473983883814873
+3859939d-4541-7c98-8cbd-1ade301d491d,3822560992,13642255643368930910
+232d5655-20ca-4bbc-b666-a4b3e3fcacdd,95392762,9564841868958123255
+40944306-6e4e-b9d9-210a-acaea9f0a524,3244863979,5873316944482550924
+6df02d09-79c5-45fa-e8c3-5b79e4b0c308,584420852,3949624514610449998
+f561a469-f45d-65ed-2e0f-33ebcb1e5590,811078311,4118874412107020519
+dfd21202-eda9-6b8e-262b-5493094e7674,1863781327,12549297567069451532
+12f86f3d-019d-d504-3696-80b5b4bd16a8,1529981068,3485521321790695649
+92ef9942-ea59-3885-100d-264e40ed3e38,2842300312,17783515930219509187
+eab1f1d0-b1e6-071b-5294-e75d0297e4a8,1994163722,1941390187894843976
+adb76473-cbc6-c9ed-49d7-2d872a665c77,1529188369,1885733850974317974
+699aec17-aeb3-0a48-f012-e0b556fdade4,2113082812,10037341423433815670
+cd1a5467-8f78-865e-d8b1-c00392a32673,3864429934,15699137708448659433
+93b5e4ab-0caa-8c16-cd4e-30e3c1fd894d,3729733899,17307715134347556416
+935f46fc-fd8c-f758-7ddf-bd740861b882,250929203,3383122059267949004
+434ae1b4-34f5-4dc5-b45c-ef176ef98511,3557588051,6609550140592597513
+94694e88-5f3d-1f35-0ace-d050c140beba,982786633,12211534864935975740
+52af1114-3964-c246-d3c8-cfe43ecd8d1d,3264328742,14234865181936638599
+7f54ac8e-f777-5dc1-7eae-6ef7baf9d0d0,2651826591,2864394467468733150
+48cf0a84-a331-e6b3-608e-cf5c910aa389,2593165996,11400703810728009772
+1b4e43c7-9cfb-a574-7db7-c40388248a29,1091632319,4696160583326082813
+39b8ae58-b941-4073-faa9-0698cfe1f563,3420061384,10013568608779699588
+6a086543-1f15-5bb3-4c17-5174a2799769,477835254,509733149572688877
+238a8178-3ee0-f740-a590-f8c31585d4ef,3347394632,4163889583350851256
+f50a1d88-d897-1cb4-37d3-e5edbd1aed48,2970556026,14144140140552836949
+36df6f15-b237-93cd-d70f-ca83c91dacbf,3311940227,11678197348083143910
+c8875a76-03a4-7773-5d98-19998168e1be,1208380594,382097256229911659
+fad66c90-5c4c-5658-b426-121f320ed2a1,2648226611,16340234969453758827
+62bf0ca8-dc28-2a21-dda4-3ec3e40fc8cc,3703561002,15152975770715991787
+e1792a3c-0b35-eb59-92fc-3bd7f0907a1e,389945036,1152013595511243009
+981669be-70ed-5b87-76e6-523fa55e67f4,74220033,17497871799248423430
+ba5e0d8d-42df-4a9f-160b-efa5cbf0c0f9,2471999064,13653822654527290230
+6dd22dd8-4102-66fa-b4e1-01d5840e5440,1330521311,2982832763870904309
+b0459b50-cce8-569c-4dc6-ea42af80b73a,1879361088,17073723647723329516
+3fbfaa30-3f11-166b-2ef6-81a6ac3f17c1,2034365297,16408156145759851008
+e69e81a5-2386-c24a-affe-c2b6853009e4,1533593900,6946586973707103169
+077a9782-e5ee-f2b5-51b8-3beabe935530,2994738615,18312189494993138938
+a23a01b1-0ba2-b853-9980-82103a7eb4bd,2266913846,18347830011597394614
+5d8fea19-95ba-2f6c-1b8a-1fc3d9f64d50,4125780617,7481690790163984414
+2035e883-e2c5-d04f-ff17-33f402eebda6,810333851,614142006483585129
+f5b58134-6363-4cdd-3cba-1f9b26b2b3d2,3207310141,3048946706236340402
+038c8a19-632f-136b-0daa-8a017c5aa79f,672458212,11324745271261234385
+7e93b639-9127-932e-dc32-731a6da828b1,45181008,16515134397736130199
+d165931b-2e9a-2b65-5fa3-cf161f3df2be,768228599,16651210134782783392
+6012e345-328c-36ae-9043-32329b710dc4,1609621870,2800269589590597824
+49f4a551-38de-d53a-767a-0360f25b112c,2788144434,15847834607414770883
+fd9b0788-18e0-0a3f-1d03-90874519097d,3374175584,15363693347058391328
+77ae3a75-b3bf-ae96-a22a-a6e2dc5e2f23,1210597925,573074863023666134
+348d8ed5-c4ee-4117-5274-cf59b484a9a2,1366398273,18018010623680814767
+a29af714-f683-b414-0c1a-098d34dc7ea4,3592604151,8071220962165461774
+00000ebc-7787-67a1-cac6-249e55737387,864134753,4164206409517056185
+d33de0ed-2ff5-144f-ec38-472194e0de3d,232638889,5912046093228167893
+d123db6a-4aee-23d5-07eb-16607ac2ad76,496785017,684586989213136024
+c84e7f45-50c0-c90a-db86-dbf9abbfc759,3651512266,11903252348049578135
+22ca4882-9ba5-4977-8ed9-5257b9cfefc5,4198280594,14091921684133536351
+41b781c6-759b-2932-bc7a-a26e0003d06a,3053982220,5711500568691331925
+099e03cb-0a6d-6245-1da5-a613da9cfc70,2421287988,16119868098792590211
+02cc0e9d-a888-ee1a-143f-8455dbf367b2,3453613054,9699776589667794655
+9d399697-b9e1-34e5-6b2f-23b072f2e8ca,3056901764,5342061503905271002
+3ad49112-6f29-0b57-2d5a-5cc86b67606a,2321623102,6822169418682168314
+60bcd1d5-0a54-f773-64ad-14f6e9c30aba,3674207958,386268353855370066
+96e09b0b-9b92-69a5-3a2d-da0bd42938c5,1465187922,3790035119022831460
+59a986d2-d642-65db-6751-c95c66081c06,158118824,17386668145306809759
+a6013940-3a87-a906-a1fd-23026d1a2461,540971295,14927089028501740638
+cfe99b6b-08b9-89b2-e721-db9261e28217,3685199534,15850741976959427042
+43e00597-f1c7-e629-ddd2-c0da4e402cdf,3422008136,2235505015567686044
+2844cf76-76d4-c2e2-131d-e31862fd0c2f,3790000651,4867120572613222590
+f5b50401-de42-f347-f3bd-cd20d3899902,4135365140,18360768277875396023
+906d0a67-5be8-dc32-fd0b-023490662884,2872440381,8096156956240889767
+42f83962-4b0c-c8a6-bb6b-423287f34321,3151788028,14399068070056114366
+d605ca17-f7c0-e565-bae5-14d8b0f84d18,3835256433,9615805373008735147
+2c8a519d-208a-f3d2-e444-875f25637e76,3456328559,15512596876306304141
+f7a3bed7-4240-bbb8-8243-a74bb273d7a6,2451681649,6858720662558079404
+8eb1ad29-0ac2-00e1-7362-d670856611a8,1408598322,3659133534057664647
+d58900ea-1029-3e62-5c9c-7b12076bcfad,2247486755,10961664520306414548
+f9308e6d-5df6-5489-5b7a-4d6cd2eeb198,846297355,10316605344474819086
+98bc2f0b-0347-2f90-93f6-c1dc84403b15,2969228220,14350497655053242051
+6084c2a4-e0d0-ddd9-1079-cfea24831a7e,793949211,18192319542641208839
+6d08548f-5fff-d2ea-cd91-2d2fe0370274,434137146,6500062675669145381
+4c9a8045-0c5e-604f-e87f-5e72ecca0e8e,1721062324,9556787240453289697
+5a47fdb6-5aaa-9c0c-2df2-4bcc2d24d625,4231026775,1550088444526809820
+179c337e-7c7c-d7d2-18cc-89778f51a833,1873670930,16945556218528858513
+99477dcf-b5ed-5573-a18e-4415ccd23929,1259825030,2742911496974152322
+df63ce08-4063-2aba-7926-3dbbe99e7473,2908244380,10669055769172316140
+f039c51d-f1a4-c173-1d30-6eec7c8f242e,4168390224,3051930337178703778
+02b92fa2-5bcc-0cce-e1de-0f8399bc2902,1155350631,12161417195051055186
+9703e5ca-1cd3-b128-9026-6792c7ac0dc1,3729454008,15663234866949108776
+358d97d2-8d48-e71b-5265-f9a53d7d8b56,741724679,8500154041807645038
+ae2e8636-a342-5ca9-717d-8d779646061c,737871888,14898615970316346549
+2a6f47de-7bc1-7dea-15bf-986ae4671521,2018361238,7578373636115093211
+aeef422f-a16a-4e84-d3c0-e4f8a1a07d1b,3520238111,13082871905113261255
+3a2037b6-5a21-875c-26bf-a6ab2a33b7e5,1888527397,2584062356653741683
+bdaa4ea3-6ed2-478c-d150-8d575be50024,4030560150,3104870174742085410
+b5396649-a3e7-2b72-c7f2-02f6449568ec,2426944266,3747607925276988302
+96b35953-7c4d-a78f-83de-68f7dd2016c9,1499650718,4973719083760038019
+84063ce2-047d-e9c4-09b0-723ddba52425,2615417949,14455922226637485774
+e6a8864e-6952-8f1e-8922-a5b5efcbbd36,4102824797,4056339163097402754
+2cc6c929-d48c-3191-bce7-40abcd684e4a,3616312645,17847578536863773546
+876b2e65-411d-7f26-ffeb-f05ed687cd83,3820983825,5977996529012809875
+e8d97c63-6acc-43c2-43ab-8842e8fb28b2,267178319,17347049841239076504
+8e2853d0-924e-ca9b-577c-6a8ff2afa456,150008077,6076810566732990217
+3f7da07e-56c5-eff6-5430-a9bb938614c0,3591030844,10693545998458250504
+583ed7e7-4b1c-a9b5-f02b-0826fef797d7,2027306203,11341825692875716434
+eafd110e-537a-d126-635c-04c7f0d975b5,900783586,15432723726496124414
+16a1dac6-9b7d-32f0-4250-4157243edc8e,2268558952,9723177553065954967
+f65a623f-65e0-be41-17cf-674b32b2d892,3898393609,93739103965365321
+7c21f376-8eb0-9c43-2f35-68c96e7ecc2d,1486367637,7083808737749770994
+1d28cb1f-557a-7d7b-bdf1-eb9bfccd927b,2425537331,4504067138351002377
+158cd6b0-cfe3-fb23-9130-6535df60baa1,2004530315,13580288080623829308
+4a8bad96-57f4-6886-eac4-ab365413a361,228542420,15615506401782983034
+356592e2-aea9-4222-68e7-2c5bbc04e077,2369893868,14800573371158102541
+5b6ec643-5365-6807-fa10-ed69e5f72295,2905605294,9538450202349691508
+f86d2bc6-67f4-0fb5-d528-42e5090e2a4f,113167266,4130909235813369364
+0a4b5e88-5172-74ce-bc4d-77c3493f6613,1562894043,11106979954605882373
+fa698c12-3723-bf1f-4820-e7bfcd63dcf5,170971468,1044035721462814583
+0ead1b10-1fcc-a224-56eb-8be5a8b0a073,4193710497,2419638457204456881
+4d0ff04a-0a3c-e709-0eb3-50cc6f7226ea,1304558005,3843889916244790156
+fe8c8e70-d251-718d-d5b9-4b14ac011d64,4288733119,520805240258539199
+5f2aa4a1-81f4-7a49-ec5d-cb69643fad3c,1306866514,11270767157850089993
+3e68a104-8848-6059-5d5e-a82823cdfeac,3426645044,12575630918216613478
+7bed12b3-5086-18d7-9ca6-a3c9a0454707,150318552,13935448120036420196
+183856d8-497f-1c6f-8254-ced6d75ffa0d,4202615704,8839090898053168370
+166c97e5-710c-96e2-870e-7a8bcf0ec3d6,1253640143,4555640280665267178
+3bf98ff1-54d4-3f94-29e8-c6810a4ff0ea,3485495172,11269806336504049451
+f116b42b-3375-9a22-ad23-1aaf33424712,222124198,13564374482839836349
+243a8b05-ae89-22dd-1b7e-76d13b6dd787,473206618,14283743913964246573
+ec78392b-92c3-e936-b8a2-9f635d01a410,764131981,14875867391894514870
+04faf59f-38f4-3cf0-1a2d-f08d6b46ef03,2949199029,4046438825978449824
+987b182b-1710-dba0-e46f-28f4545df4e9,3141718673,8032564303921238655
+60d67a98-ab2b-ad5e-42f4-70a793e9c219,803139899,4286752672152950535
+20222f72-3fc0-2f9a-4328-ef558b3ef685,2299862273,6861873674290596170
+77b8933e-6faa-bd02-e623-7800704bd158,1352308566,14432890441458786853
+4ba55333-5c5b-55a9-8387-8f1dd6dd6383,1265755199,2986991042346754788
+8db1345d-e2ff-b4c4-4708-80fea75f764d,2372549703,8848409564529145272
+284cdfce-1d16-cbae-e9c7-5c26f665825a,1037058306,4643316476001182125
+1e045992-096f-e113-be1f-7589ca21ff64,2438895433,13104139821627939868
+6df4fdeb-6ab9-b7a9-aa24-621aa42235b1,428772782,13815347412013443326
+d13be99d-481b-73aa-98fa-0751dc74cf82,756617326,9379282682476225522
+38b7e123-9b6c-8591-6977-8783dfdd17e8,474721013,9528919600665426159
+c12b5e69-74d0-a38f-9b40-c8b5ab16324a,211625513,10587269184365678157
+5415a7d6-d523-4c32-7cf3-08dc36f4f661,2590362681,8612356079754648980
+3e63543d-9aa8-cf5e-568b-961256a2d7dd,1008463220,3237410259549353029
+7c34b83e-21c3-dece-76ed-47741df0e66f,2373479301,8441198249186198008
+c23eb638-e955-042a-d26d-470d8703d868,3796128707,12003938214701395193
+80e7a93c-4228-a147-d0d1-6c865ceee301,3757866643,17032286682946878680
+31db231b-8df2-1c83-1242-2b23f3be12f7,2861183344,8257820971284296092
+d12e886d-7049-6ced-d847-adaaa28c9a4f,4053744025,5895189465562356207
+f4d37d9c-3116-c0f9-a565-09df37c3711d,392340300,5972343676137387186
+fcec5802-35d4-8650-dd0f-05c144a87c89,1571525531,2554781051852802812
+0b248bdf-312d-ade4-10a9-926214d7b79f,3657745473,6491292133378141385
+891e992b-62c0-c870-5030-609fb0e43e07,3424276294,3874139081540883708
+fe4e7c56-2fe0-0a70-ab19-e5a3e8f163d6,3853494085,7529867318152522103
+aa2280f6-968c-d064-2bd6-13a3a36083a6,3465968856,1114163845962972074
+91a5658d-25ed-c45a-6a4e-e6a3de13dc56,2557527914,1252095940492415166
+ff7658b2-9460-a2ef-93d5-126a4ddad4c2,2592846625,13569102314693909713
+51fe9818-7b9d-15db-b3fb-2ee7ad1d2567,598442003,5875403530693337152
+2e448feb-3e28-3416-a8ab-6efd410d8da5,3258598992,9422974462489437646
+4dd9f247-e076-0491-66c6-5f1c9f6ec2be,1360615651,2497859705233498921
+850aa73a-ccdc-9230-0662-cfbfcefa1b9c,2260232181,7963150729924915957
+78eaa128-909b-cc0b-b589-013fcfe6a069,3529151263,4259230903794384849
+c6b31e4f-5a50-9fe6-f822-bccd94b5d99c,1888388735,84291645384253033
+0e42a85e-f17a-9649-1b7b-464b058ce248,270655133,4808875061221971949
+15797019-f8f8-0994-d21f-234c97ef51d4,3779004407,15138140171117782399
+a7970aed-2c7e-04fe-4d7d-6aa79bc9f4e5,2128871479,16672545801599603634
+072707ed-3978-6e56-9f3b-9064f68c6dce,2568438081,16999410743963554177
+bafa36e5-0974-0176-7638-45babf4ead76,3248747815,10399425774350118831
+9f133348-c36d-a6e4-46d9-e35d12c5c6a1,1717014675,7354736295261903290
+8abca522-2d4e-9fdd-43fe-a70c14ee31e0,690252756,18242144426760196120
+4055ceed-f0cd-6e97-16cb-4bc12ea53cc0,844331295,10044304696372382690
+9e34aa60-b059-15b4-cdc4-e47f23e0e369,3750306589,10457544704115457331
+9d14b531-3965-e0d0-63dc-e197f12018fc,636378886,7102512106863971279
+b03c1ebc-57a2-d2c8-38da-91b59eaaea24,4371247,6323146119056888101
+acbe0f67-a670-d328-4161-ef2ea7623570,3685381455,11408958117941998355
+5e815679-a51e-4d83-22b4-02debb6136c2,550108183,14995521994743023722
+5cfc4595-8aec-c83f-8570-65f4b55c2a1d,1743918795,18052261518087649128
+105b7b23-e7d3-d81c-b88f-557ba77f0427,1831193855,2278337793319871335
+42ecc4a6-0eb9-904e-6ea6-94543c8ac051,2806081573,1828917578290938910
+dfaca707-1828-c497-78f8-6d2b141f1e94,1027234045,10691137310544518913
+91d1d7b8-92f3-8dcc-83b7-cdeffdfee225,3736785831,10797583224805567813
+7f46c69d-d75e-bce0-cc0b-cffe148650bb,756689052,1605045399023683554
+06628fcd-33db-b5b0-b232-5a688e6d0e83,635360166,62989757700221203
+08b6940f-1f87-317e-7fcd-b1c5f69bdf75,3190814482,3643934473695111975
+e8ba99e0-70b8-0156-a3c8-d859f935424a,571542416,12344550724883337259
+421c6844-10cc-9eb6-fbdc-31a6f2253d68,495749884,16471110551220065665
+cf98bbc9-b888-20b4-e36b-99f56be680ef,4208925635,7165267704752104718
+7030dafa-0e39-1b0a-4286-992aad956976,932985144,17850320328561870128
+1bbfd88f-6db3-ea03-5216-f5ea483d999d,2432321616,2404003600078624187
+67bf6b74-1a91-34e1-44f0-c076c96d9339,2235591192,16700335633592709081
+319fb956-d800-3450-75bc-ef7674795cde,3403902826,4023646750236112273
+1345a668-10e5-f675-5f18-4d82596f277e,41337143,9184775087242081528
+de38fd54-7d65-a61c-b765-3baa7e454cef,247141013,7459189851324946575
+ed107b5b-e4cd-27eb-b445-99b60cdaae6c,1724159787,15896275143475598895
+8c81e477-b417-0e68-0d06-b7019adeb4e2,4050933487,869682935363535434
+e8a92c5b-4668-92ec-d2d3-fe474baae5da,4246821070,4602028527856212569
+56b27ef1-efe0-f6af-a5b4-c7fe5376a4e0,432163918,17145339168156646023
+32b43546-b6b4-42bb-2fdb-a28cbeec91fa,3235347730,5487521012665187918
+a62ccfdf-ca09-9472-8dd4-3c56f27041dd,3612263589,18161761636403282492
+72b0029c-bdf2-e266-7df3-895da01d0bb5,2923238001,6330576434046874530
+1c7b8e49-a390-a67b-6511-d0b2e1cb45b0,1913562337,14985980513517979683
+a0d4f54c-a9ad-6242-b013-4313f79f9f70,373179184,17576203544119256713
+baacb16e-873b-bd78-63cc-5ede6d83e5fc,3991788759,7286656438898448179
+d7247477-f513-7a39-6f86-1e6f98a77af4,2146345384,388981790473984882
+6ac3ec01-fa81-a6f8-b2c3-edd87bf83f87,4219560841,14620858152490349315
+6a9da26f-6d82-4096-294a-e44835879517,208239490,10625079913675166672
+15e2d6b9-751d-a9bf-7677-23773446657b,491158444,1264150936167494663
+d5425734-30b1-5ac8-0340-5471d52ad7d9,810030293,6532877587809493064
+bf86f921-f88a-9be1-06d8-8c11037e8532,2660714564,3761402556312436405
+f419edbd-e6ea-d221-de34-599562a47af7,697835300,4937019331061398973
+2c9c7466-33ee-ee00-99ff-23c921c71442,528504893,13933707711151419703
+cd8a439a-7743-0680-ec14-09011c228a0e,3215544230,1083411449835495163
+dffd6290-0599-0177-4a4c-12b36775e580,3557694529,16736282759424242932
+496a58d0-a410-8561-76ec-9b481c61e28c,4046159001,275075989409027405
+ae774088-5ca0-2c19-2863-54b8bc246646,3907386857,13946288700778275366
+721efda0-c82a-ca47-263a-c291adea6d53,3469152377,6818573615953364228
+5c86c234-39d2-bad3-d465-08ebb8543a3a,1312965092,13251329790911645631
+ee6b21d6-37e4-d216-2798-57658415ec03,473920925,6734021825187796695
+52ba69f5-4a72-1f10-4f8a-7f60d1603c3f,3797930043,4599838906971227580
+d76ad777-11f8-52f4-f0d0-b7b292dc5b8b,266500578,17926862035379441712
+73940125-2ba9-41a0-3b39-5fbc3ddfc816,3551553339,18254232337908032078
+cba88990-0e5f-fcf3-1854-48e91aee24c9,4045466737,10271064340803082614
+46e5b5dc-9372-4cd8-2ee4-29c7ca78c9c5,2539225219,7578088783547391382
+1629bf36-5494-bb0f-27c1-f1dbaea00577,2575782084,10656000134817102101
+abaef818-34cf-f69a-162c-4ccc03829315,2569377711,12999610588099157340
+5d529fe6-9674-18a9-52cb-7ff2345c0e0c,660400776,13521072753361325895
+88e821ed-bc9d-23bc-6869-8a52a18c038d,3674555466,13701886014594439059
+9ff2477c-67e7-6705-1581-07c8ba0abfe9,2393247812,8150453485861089612
+a3fb77aa-d693-6869-609a-d3df51fb3041,3684774481,270609083499448720
+722cf7f1-8e37-e98c-1242-b7b74a59c839,2931508215,3489740037824530081
+09bb1f6d-52e6-3bf1-c67a-8ed9df0d1faa,651101869,5392022988817859671
+3f119947-6ef4-df58-3a60-a71d18ea1f09,3875375114,16371142751056150463
+00cd3ac9-e4f2-f12f-c72e-ab0e5c269e00,1313418075,12421444710875029833
+2e238bf6-9edd-1390-ef07-11cc746bd463,392420865,13673444742125635502
+0d061778-b37d-175e-1ea9-bf57798864fa,2128464386,10187874629342388318
+de01f21d-7a29-812f-1f04-5c4a745486d3,727762928,8164970202438253664
+303c2d4a-c31a-8733-b0f5-d0b3173ae72e,973608382,8896257953854458405
+06c2a068-bf97-8ad3-4cae-bc42ff92c5db,4215721468,7258443890201844143
+b034521f-ab52-8006-a936-d6f4ad84ecda,855350781,13866880294173107501
+a8b341a4-5748-b077-4cd4-e6571eecba86,717236371,18086008410902800340
+b01c6a8f-c20e-64bc-588f-f9264b63c2b3,3576914978,8181771018728748758
+4a557a6b-4030-bf18-9bc9-7b2d244dcc8b,2819106347,462963320345566751
+921648a0-6715-3ac5-f6c4-6c562304c2bd,343304017,15456262645826136363
+2ec651f4-0dff-f436-581b-5e055f2012d9,3886777350,15862234775948953034
+dff8a68a-cbe5-2312-1b4f-f85a147b10a4,2425125295,12753963995083127140
+0695f8d1-2d1a-a081-9492-c7449fa64888,3221364745,16419139499902984059
+1ca28ef9-5a46-2c85-216c-c8ac06adb416,1499295218,2348465279322954887
+61686861-0b20-5719-14c3-25c0207637be,355088346,4852855064559947004
+8063f760-1955-e861-a991-e409d5c217ec,1602779114,11453368443383368639
+12e8e7ac-2a85-9acf-6efa-70fee0e94386,3609697290,4560602294751858011
+a46bcf5b-1232-1ba6-fca9-abac7f91e4ae,3004029630,1776010932472618210
+a694e372-550a-6994-b4a0-f2d28c628f9a,3387213793,3715665726722138071
+38ff50c5-755c-fdc7-2ff0-121c070dc851,1556892052,2524111763063428245
+3f419949-7de2-72d6-a154-e4e3abfc8d58,2875941423,2038075699742320353
+98542160-ac29-4516-43c8-2a759045c16a,2920381977,9833748924340555556
+fa94603b-9239-d0aa-ad45-b7ff16ca896f,2890321400,12666191518136978865
+b50538f3-6ad6-8ecf-c0d2-485acbd3e1c7,233849339,11062253961386984305
+bbab876c-1574-7ab2-587f-3288208cea5e,2794172280,10892500670085974758
+a264df13-678c-218d-3183-b632fb33eb97,1417907068,9016165120644062420
+72d2ef5d-e170-0c8a-40c9-0bed463b1bee,2540742542,11002267934117222225
+b042ac9b-8297-ca5a-b2c7-aa41d71fc843,1627243903,7479286370534856088
+023e413a-d202-cd09-5205-018abadb9ae0,3843886691,12188661648383762885
+ebdc35e9-4106-e8d8-a458-04666f11d297,4186032442,12309702762313626901
+917096e5-81f4-0885-e73b-2e9305236f06,137867596,6278644832398448347
+a387b376-8567-a1af-8ad4-0486051a48d2,2092764443,16685949314049470056
+340a0726-479c-6e03-ede0-454fc844b577,3573688665,15275689934930298875
+16fc8259-75ab-10b6-f4b7-d67dffee0390,3669870090,4934925942976408683
+d0b25c4a-f1e7-861f-3591-976b68e7edbe,2676522411,6540496367211913032
+97c9975c-0813-0ddf-45aa-bcdaff028958,3495157887,13123573975945381954
+b3605ed2-2d88-e238-e40d-d219d5c404b5,462997471,8730959673936969189
+5d749063-56dc-60c8-a87e-7dfaea13f050,751784897,5904618231650640976
+61364852-4ea1-e33c-e311-fe2fcf83d393,3608939694,2088542882396667409
+d539c53d-d212-f4cc-a86d-ef24a6d7103c,2943303588,15423974434539539534
+f668519e-a5b8-836b-5e71-8171a2219125,464788619,9644159488304468158
+460623b2-f067-50b9-31c2-66205b15fff9,4090668481,8404162377826617547
+c786fbbe-abcb-6686-ea60-da98a5d20b9d,2217525194,11460047450431164291
+2566b3e6-e52f-e9d5-a1d4-e5024a6d81c2,97720833,6982281896731172643
+58ff7a18-1b54-8f39-da1e-a08665fb8281,1832737506,3584080499812033050
+0c030bf9-8a81-409e-d795-66e72366ed6b,3446008277,1222191560690802940
+32d31144-4ca1-9694-1bae-9a67dac77065,1326602678,9953713025104906146
+3e3f32c8-3924-6ec2-3978-6dfdc2258a82,3509917817,1078801640969529259
+dd25d6c4-c485-fad3-cb1a-3d51ce6c3dae,3763258958,1081016169210601532
+42b527dd-71ab-0d13-6589-34467b89c96b,607553341,11110697688932553361
+bc5906fc-c567-8256-1d20-17773714dbde,1473727579,11802260962145981648
+5e97384f-7d1c-297d-4af1-e0ec572694a2,1140316526,18114056347940955721
+c607de45-464a-316b-c5f5-3a1434fb674d,4014263863,12027667861625330221
+dcc0eb98-21e7-0e7d-aa72-8b7d266e32a1,1566410629,8666373410552318372
+f7bfdcbf-77c8-f434-1065-6964c95cea69,3218806477,4868071441391834470
+212c7048-ae31-f59f-eb41-693a7c0360c4,3311974662,7430376489801723249
+0938322d-bca1-37fd-ecd1-f78912598322,1881226727,7686082999324310913
+1d9c24e3-5b1e-f51e-cc51-7ca23dab88f5,1690290986,488483843703906519
+50b9513f-f26d-8fda-743c-ff7c9385980d,3649812890,10223094212444008910
+9eca6ccb-2c04-790b-3aac-7a316117c28d,2777594058,13679883859406939211
+0d166100-1ba3-ee2f-a8c7-07061bb568ce,716714914,10115865879868909999
+3511818a-b9a1-0fd0-51fb-dfbb002761e0,1816547964,5483660828334994198
+ff296450-7f8e-eecb-e591-31f4dc7af95a,1470651430,15071389741157112996
+b8697924-5629-eb0d-7c1d-c561b541a18c,2812777310,17835611210253238712
+cb037cda-2540-39de-6314-e5c15d31e6da,1866093158,9500813903208767254
+6af09f44-0e29-3e93-6d9d-6990dc158f35,584303540,17401578758856249782
+d688cef7-3ec9-b2b0-b3ef-f7a01a99b7f3,3538032631,12863903778355108924
+590e77b3-e3d1-cfb0-f958-ed9a85b52d4c,3591183724,2541429562884922703
+61238a0e-672d-9d62-b4c6-5960eb115662,2837801250,1962716976461395515
+a72609f2-7b3e-c818-4c4b-dd507141d048,36903398,15346746546169921078
+3ada9fb2-b2e3-b4d3-36c4-2a70c0c6cac0,4033916729,17112637768871320260
+ce8164f4-4f93-8cc4-09a3-2b2faef7f90f,3478416586,7983908367798000413
+91f5bde6-5d56-42b3-53ef-71772aa133f9,3111367014,12536897465444420832
+8daee61f-1f5f-73e7-345a-6b5d2a3b8c3f,3296509328,1094444024169370673
+b7291446-a0f1-927a-ee67-daa33c054a7c,2112361857,1549859043949506951
+e8e8f05f-d363-90b5-2842-c98b156e951b,1323057692,16338127845025277817
+debf8ee7-3807-a3e7-bef4-957ea94d58fc,1724903565,10092060658305751001
+3c2809ff-64ad-da7e-f744-76d90a3b1321,1641735530,11035516793035225597
+cbf9f190-9809-023c-dde0-96d86d7df99e,903456205,14380513202519293203
+7af37511-1804-72ce-1a69-cde6c1ae950a,1389710542,11206124448855928588
+9d3075f0-d52d-a5fa-3c08-1edfe2ea02fa,2810261976,12087108062896973847
+d5170045-1910-c2ef-718a-3ca0dd1388f9,2870298088,10442926625677479382
+c29b9c7a-943f-8cdf-df03-a76bdfa2c90b,3140533866,7546911663054192255
+64b87ce3-df62-1075-e42e-df710d216325,2222525622,14295172777494270528
+29d0cb1c-2b34-dba4-e1b9-a0057b62c9a8,4134596338,7903920505210105368
+6711022c-6b1b-b54c-a9eb-0f8b149b23b3,1678663780,11710676598116861637
+3fc899af-2d23-67fa-0ad1-ee2e831fc283,625860778,6273107296122598594
+9a541c3f-9026-fdb3-0b9e-d2e43a847624,3630640197,16734967871791144344
+6f1cc130-1c56-af5a-0e1b-1dbed4797712,2330424867,1744989997641830069
+10d28e7c-2989-b8c4-2f8d-deffd7848e44,2445492412,17137579724127956584
+c0dd8079-5b5f-361d-0e3d-fc81e984c8e7,626111525,3203052894511406829
+6e8e6c3c-434d-1dda-2506-001f7f91afad,2404611096,2265995334924232676
+3c43b36e-4419-70b1-53b5-771d15facc01,1240514903,8745997416608118580
+92503495-cad3-3c80-1fbc-3e36e01431b7,82985047,1659249161093420277
+01e409cf-b0fc-1822-4bb2-2b7ea816ba36,4214084451,8465917460982574485
+51d998ce-2d04-7e33-569a-5ecfbbbfaf96,1776302140,3216693324647660708
+cbb9f578-a4e5-92ea-750f-9464546a4f27,303793884,17567641638353260502
+d8283132-37f4-38d9-9e2b-adcdbb4b2f6c,1575275279,8671886077653476650
+f95e2955-5a90-f731-e669-b858d81324b8,2214948115,16623513453559864258
+573c59ae-c9bc-8a49-0b3e-5c281a916240,1240799256,12386405304558546587
+95868ac2-a447-6591-0bb9-9271c2f113ca,3819141834,6579769618930478500
+49c3ba7b-293e-6cac-a07b-0e6ccac8ec96,1282989909,11162793522339823997
+0fb5a6c6-3f3f-06ba-6e96-191375b67b51,236154191,796641622696775412
+d3aa5acf-542d-966d-6b9d-17f0124f72d1,1755493918,7855314838692470187
+ffd06972-cb38-87fd-2fca-80f3cef6d379,2095040731,1033342228659360072
+7790d85c-13ff-c3cf-08bd-fbb8e5b81510,2907909238,5498438762083139726
+4153b374-58a0-a5c3-5a96-2fee1cb3bc9a,1479998740,14650125222154255228
+26d7d0fa-4226-1500-2c26-f501d7ef2859,1781924774,8562231074789354732
+f863289b-22b3-d98b-0b01-acf89fe11ba0,1587386722,12373604255540262688
+fd9ecc03-193e-1c2b-8f31-ededb06defa0,2697396614,7813236267574420150
+c6ebd959-31c6-9246-e681-43317a16aeff,878972328,9506306242448013670
+061aa8ac-dbef-fca2-810e-f9b01590a8a8,3020802061,3014137797878265753
+f11727e9-4d59-aef4-acc3-9df4aa6bdc1b,2115416563,10665641767183748574
+511075d4-6661-d3bb-c24b-4f89e90e57aa,3103519727,13668742537600731812
+9f3d63c1-bf87-cf0c-9b87-09bdbd2c6159,2372388682,3981215396989807271
+92c56f3b-b4fe-08cd-a07c-4f1ab35072f8,250114799,17031502053360152470
+b4e4f2ba-f150-be54-5b5e-eb60f82ae272,988042970,17972347300921418165
+eed871f7-3236-a762-3ae4-5a5d461881b7,3133698688,4702410560631652516
+6a57bf2d-be77-78c9-729f-2142af7a951f,1241996438,15724753426093333898
+63544fbe-439d-d223-0753-4237ceeb2fc0,3640093311,12909353313101887150
+6bf02fe2-e9a7-f79a-5754-bbeb79a413fb,740388494,14902018046735864141
+874beb20-33ef-2761-b81e-9599e16bd145,835436228,15265909630208445040
+7b5c85a3-0e95-33c6-3e4f-7c7c41727712,1237321128,7783765915802417065
+317a4b13-75d2-df22-f9ad-1cf56c5a5b1c,1336858800,8651949426385807489
+9744046b-edbb-d4db-1314-6f884ef655f0,1177168975,15731304688506893614
+e21c656e-1c99-b5bf-fdd8-778083055562,3631644669,13806482533575351337
+33e5418b-bee1-9984-a096-7edfb482afcf,2197991349,14147693304229684610
+c91619ea-5866-740e-4dcb-1c0032f91f34,693516689,14466339529174719667
+e284f0a6-d27d-ce62-ff21-fc04f375ca08,2869213801,13781586026045601029
+ca8cdd22-8855-c246-af8b-ef58f63c94dc,3801538555,11897117311881118409
+0dd5d55e-32fb-ec46-5418-f61a9940afc9,4012453400,5940730710903647668
+7dc96679-d9c4-6a8f-639c-f7c9e2fc325d,4041024673,1793003144589786032
+81416794-dbf9-d902-973b-d2769e66dba0,2359679795,13931903792854998272
+ec70ef60-fbea-f00e-15f0-ecb3f3f69687,1487012409,8171955991422514796
+d06ed917-3556-7591-db5f-823fee3b58f3,1545756052,3682781988244179795
+fcffe19c-4ae6-49f6-990d-27307016acc7,3065781466,6238536785968866304
+4ad5544e-af6d-2448-b5fe-b4c58145e1e2,2682074051,6796292922993991873
+13aa50b4-6560-8409-e580-66bed53b013c,2157746920,2806496024864582
+67f0e53e-8cb1-7500-d5f7-4092a7bd885e,332101053,11559439529286537318
+e61a8e5a-aa5d-25ec-b930-f235642107a7,3530516948,8651300132869061219
+4f7082d2-1a65-d43e-1185-0c8441cccb63,2608486589,10392915854322052387
+9e9cdf1f-5400-cb2c-dfa4-b404867af3cf,1435645510,350217090668210798
+bc4a61af-5a5e-b057-aedc-4a8ab8359722,2655302744,5043127371777826528
+67520fbf-7169-d42a-f5c8-8712afd020cb,2936152727,11326941940444198317
+a7173765-e415-deba-c55a-49ec9e732b4d,1707837506,14154384833050106280
+d32cf2cf-041a-72ca-b8d0-e2e70bbaa58b,1011308739,10250464919472989858
+47e14595-7d49-7de0-4488-d4a7a6ac2390,3185081837,7525449308200537487
+f8b7119a-be64-76b7-1748-d796eae718ff,1403798454,12152043817520947981
+b055b7d3-4059-49f5-1faf-f9d8740d4040,2793630858,9466914242666292296
+f414f897-9c80-2976-4710-d0969b13736d,3235828445,14214090962799168374
+ed43465b-a5c3-da5e-73f1-f83ece294ee1,1392941722,17625503839063413341
+65503f47-7dd7-0a87-3665-ad048463a0ee,376011678,7031926447404407332
+496d6821-a690-3db0-3cbc-c590b40064ab,1287730443,8881113918034513029
+f44c211a-733d-dc0b-9ff1-8ea08e23c28e,3192292369,15318055114074449279
+eda033fa-e2f8-a3f7-a750-766490f72885,3042381274,15836583347152263136
+50fa31ff-83dc-2cfc-d117-a83d57ee659e,4113428263,12419218583489271652
+7ea7d4b9-188c-9599-0a27-595d8fe35826,2032447358,2598608224015502287
+06ead06c-8c05-79b3-14d0-1e8fde326078,1386156394,12339664526903827983
+ffde9233-e2c3-ef51-e1f3-ef9374daa3c7,775510281,854033888155996959
+4f69206e-c1a0-7c0a-c81d-7dd9e4a8b317,2339179574,15138422661482885052
+896509a0-db22-da2b-9685-861943f50cbf,2799641426,4192917447142146139
+4f4dd9fd-7bdc-888a-5d2e-10d9f02ea346,47044445,1544979156400222692
+d50bace7-f570-b295-c596-d07e63139fa9,1709001341,15629459173795340553
+647a64be-914d-0de3-9c83-7966fc1b81b7,3646821762,2974577504542169673
+a12a4f9b-78f4-816f-6cfb-24b8e5e72ed7,2893789229,1569152908190637005
+4c1ce669-e998-1ed2-6dda-24fd5e29cafd,1241483764,7190934992155869585
+f47e527d-2fcb-a63c-1a7e-e74e476e0264,1768498200,2101328455293411693
+3028fc56-268f-64af-e1a4-6ad48f6e34fc,4117891014,18344455507260097300
+cf100ff4-73ca-5738-4b05-07ce76943d97,784357834,9799545833165945809
+1887b8a6-7bd0-9996-bd61-64eecaa5fa39,1801268366,14445844299193304395
+3f068248-5f58-df06-0486-2e534557b741,3868891886,9345307658992254715
+7d959e54-436e-a36d-0ea7-574547f6f3d3,811576127,26290779103407436
+d779a7b3-6b96-0b3b-2b9d-66359f9d618a,1936685784,11760006275142690067
+963e96c5-67b9-6567-fe1e-bdc59e2c3ba0,1891103250,8487348817491362349
+413b0abc-8aa1-0126-3d52-84117b079a6f,341061392,10171744543655433366
+7265c5f6-2cd2-73c2-1117-d622de7e4a83,550472306,1821220409925154504
+fcc81aed-fcb8-9ef0-05a0-24e815743d14,3002457975,4411052198515809633
+4326dcd4-591b-7916-d189-cde381d16033,3420204212,10492052311072836920
+e57c4c65-97e1-cfa5-a194-ee06cdf1cc39,777512900,11984424434887803506
+7b306bca-d605-8d91-683f-54ffd4a691a5,1460480474,1150252497486612687
+27e47ad3-d7db-9f7d-8ec2-8f6c2163cf9e,2837596077,3868505817102623952
+b0232a53-f841-bc8b-5880-f8bcb3854a17,4270385267,3066669425615469629
+528c8e15-e12f-133c-1276-3619a141457f,3605542020,13882283792150290921
+ec476527-fd23-f8ad-60ed-63cd6fd7cb5e,52796141,14016679144110946498
+f8974392-e452-3348-df0e-d090e7ffe8e4,1661998430,14362959390391999724
+12fee9fe-74e7-ecc6-ae0e-9828652789d5,3972451162,15598957654877171831
+27de2b1f-98da-2507-59ae-2fe397f7a172,4164124781,2314519612037334958
+8921ae7c-1ed8-8bee-7944-6154e3fe106c,974117973,12149373608430571951
+e624046e-ec23-5264-1447-74359b521e73,2560576341,3426922871178230051
+d56fec22-7ad3-6222-94d8-9808035d9a29,1604385764,15359664174706526537
+a465e016-5efb-c0cd-dd63-6a7f1a246114,2810045193,9341425184750784599
+fba98827-3dd6-2602-ac10-ee433b1d0fde,2196295137,4382915268862542696
+4a7aa2cd-c371-0a36-62b3-124e3cfe8d0a,3871882201,10153933825926765543
+cf152705-fc98-aec8-018f-a00eae81d9d7,1525635324,7410175135530675671
+e03fdd70-d02d-cc0e-0b37-1139bd0c2ab5,4167241852,12674557234283696207
+9e38c5f5-7bf3-c6b4-a0a0-231af242e7f4,2732678625,3350445345118243689
+4fe89c3c-8e29-60b2-34f6-2556a2456f23,3632248051,13601847389253141375
+6c53dffa-5323-8382-8fb8-1e7030efef92,1182420624,11307665908604140548
+18d4b954-32cc-e459-b251-fcd871c1b41f,2648320608,17830203345636139909
+5b5f2abb-ccfa-a4ae-1bb3-34c3654fd0a5,3778776620,15532882010211677440
+91f90e33-14f8-0d32-7a61-d3d01f9c2b62,382473831,5985199531428774801
+736de21a-20c2-673a-aa9a-d4fc67c816c9,2177366035,621900213419232707
+a02dba17-8bb8-c0cd-9c71-a3bcf08533c7,3640462651,7024482735080415517
+c47772f7-c8d3-9af6-9dde-5833f4213d9b,1398020196,8905947540389755492
+36d4dcc7-37ba-8115-c584-71a37e70749d,2343415224,12663484166489586750
+0715b532-311b-6909-0370-17e550968f9a,4201750509,16349617100874400680
+f7403054-62fb-d25c-57be-b56ea2a89438,2987762280,15983350409128855535
+9e961926-8074-fe90-f3dd-6ffbbfe86344,1250261500,16752792738287565290
+ce4f4300-3e03-8352-2a39-8f99c41d15b2,4185260558,2561169312447012103
+53666155-cb9e-c9c2-7c65-dc73dda90a07,3962273938,16155790852400201701
+3eb2218c-4ee5-bcd8-512d-a3f30cfb1881,1095582268,9617830674670569739
+67fcc896-f915-21a7-717a-185005842b6d,3783090006,4796756379223574705
+b844cc52-80ef-e965-2f4e-008f4f6ff178,2020565958,11577104999410930532
+ff6448f4-8be2-68a1-d56f-121c561a407a,1776315822,16131129097228366914
+18beb36f-85e4-62ef-5382-28bfcf72f664,2243177976,2494531581335377876
+7d79dba4-6271-765c-90e9-433a2a541e3b,1928267522,16662067261290558164
+8b9e998c-9d4f-c778-25b8-d4a22799c4cf,4041015455,7185484261945214088
+5aa30a15-2cab-2f54-3c8c-347e7e03d50d,2296827294,14657976741718785940
+c28a8eb5-b1e3-d65a-2526-e0c1d80d8b53,895308740,17709585019678102419
+53f2ee9b-2597-4442-bf3a-8c352244a83e,4015655109,16102915859366474565
+587079c3-ec87-ea74-bd74-a891197ab31f,1551539593,1141570877169218494
+49d5d8ae-2f0e-6db9-83b4-490ae095543c,3282355993,18404399906847901579
+9b04dd2c-32ad-c584-2afa-dc6861689c3a,3602842626,5264644709413850789
+59d623ba-6cf4-22fb-0cad-fabc43ccef24,575600187,8277159439925005865
+43494f0d-9986-d31b-f66f-4b6cfc26703f,2059001443,9029091448699532411
+5491a211-6b84-5ba2-6464-f781ca99cacb,2299208198,5511960968287928475
+03d80ce6-c46f-eceb-6e3c-6901374fa889,2357802456,4286953612379053879
+b0df6753-864e-7670-c5d5-2039bdbc7405,1619707550,3826310089271314657
+e79f49c0-829f-026f-2263-ff299a7f5df5,93015931,12902248536450143132
+79050513-4ee3-58bb-66c7-a23ccb96e288,1627332625,529428237865023652
+57130bbb-2504-81c7-42e1-c8f872d7034e,3264658844,12314151468972220132
+2a8c5b29-29c7-ed61-7c07-00b8984bfa56,166194766,15990164107164115052
+e55bfcc8-9aa2-b0a8-5cbc-5546d6caabfd,3242209671,6878186522871668492
+8cccb179-496a-3664-4493-fbaf0869135a,410915133,17453501955319795311
+f7747ac8-8ff7-575f-249c-5bbd5dd96807,3933639180,7700642363247257721
+91f65fc7-9997-dc78-f623-baf3a5f3470a,252667334,6721165357551367483
+e688f61d-4922-4039-bccc-e8fee99586cb,3597990590,12993455404251023570
+e415156e-a626-3e5c-5658-d0a35b9f338e,2594678960,8853350985343087564
+2fc80d3b-989b-6df3-f3ae-ee5a9102b3af,2338861299,2243537750779023732
+d10fddd6-b290-daae-ee21-5d1fbadf2fc7,3168205446,13065066626064773182
+678885f7-c164-a686-348d-ebfca5a9e55c,1815468433,12168295733223491504
+fb54eed5-ea26-6f4e-c1ed-bbdae6045cb2,1542591385,6865714374389447684
+341de541-d29c-e440-19cd-ec339ff75309,1849489499,3584246916847187708
+7d432c99-e8ff-3b8b-d5c5-ada68a65b03e,4262314268,7587707685526181262
+f1ba6e03-2aac-5f2f-2d3b-8d2957093fe6,3350999058,10766987423279994252
+db880ae5-cf91-a340-64ab-e5fa3da9c67e,1588804328,15708842306865415797
+5db36946-ffdc-361f-19d3-df336b4fa0f4,2125563244,18082700221307621004
+8643b02d-1747-ac71-f0ab-e0dada4ff509,3582727421,11308924644027232052
+31e41488-2fff-952e-9075-6a8655c53983,450053997,3306613233382831865
+a892408f-2af3-e2fb-357f-96bffdb4881d,182242406,14109164543375429081
+5e52e984-989f-39cf-522f-152985cbea04,4178610597,7366319796010811970
+a165098b-c09b-cbb5-75b1-16fc679345fb,1834449840,8387485402226564378
+90e6f929-af34-e52f-0fd6-191b73488cf1,3802914863,5402856866269337884
+d8feeed9-40c0-c7e6-1668-4de73ce196d5,2736468240,6171181878736408752
+a0f63891-2f56-03e9-3430-129a5c380864,3842219456,784288653506686427
+7f26bb9e-4c63-3357-ff45-425804806816,1273002861,6080165335946015190
+1b80d687-2d5f-412d-9fee-221d63363ecd,2378522512,9617826629222206372
+7b7e4828-8307-73a7-8bbb-1089a36882e1,2016559386,9302292712277133254
+ba3a5be1-db91-4ef3-ba49-6afc852d8eca,3224637436,12725067650218585574
+358d84d7-6a94-9f48-d009-37c629e0ae2c,524911479,5170687988686135573
+2cff47be-d23a-b385-8aeb-fca690c6a11e,1122306358,5906675597177724259
+9671eb49-17b8-eb8b-87dd-33145d66218f,2212055536,17974378070102916315
+6c758459-3597-0339-35ce-d5f75f938f31,3415784189,6756314584605893476
+6dd6496f-7d5f-c751-13e9-a7b5f9a60fc8,2303553861,16563084317615576398
+f2d4df00-f6d4-ca1c-4410-b85ade5c0e56,2221514855,5066525168638974729
+f1047cd1-42ae-b03a-460b-5a49ff41c4a4,1183241748,1534926278790292653
+bf1f7944-1bac-c73b-9446-29384cba8ba1,2848993236,10738489501896319676
+15bb2380-81d5-439a-064a-3d0eeef130c9,823891039,3153896184130367335
+96fff115-6d30-582d-33ac-016e0abb45bd,4075020924,13937582580528543940
+3dd040b5-b21b-fcd1-3b9b-2603b152d9e1,1963312370,12709427662841762301
+95ff00bc-bac0-5f7b-2ee9-cdf2da52dfc5,2510584926,5206590737875527274
+6230f1f0-f2e6-9965-2d86-4522fbf8a561,3079692179,3812315454559095662
+00993ce1-7f4b-75b1-ccca-bd7680491bb6,670439243,12095634355637473832
+84ce3654-f01e-362f-bc69-b7addeabe31a,722001359,17881405518905321692
+e6812ceb-39f0-5db9-0ddc-61a0c4236d32,1512999924,18248718261030250198
+e05f13c5-a89f-ddd2-cbf9-0814ab688e61,3705901106,15725995705635709618
+ddae1edb-2a6f-1e41-43c5-b7e5290d49ec,1792174914,3828343791723326235
+75f2fbd6-e41b-7883-ded0-654869be7340,3559546873,7013668688248295792
+3b17a17d-77d0-dd92-0396-13acd63742ac,1047137247,268258258562713078
+f3caefb8-f80a-87c2-071c-ca404e30aa1e,3481256033,16543880932295316782
+49cd8420-14d7-7d31-8119-47893ed7178b,3402167538,17364060500590244421
+e56737bd-f390-88be-6b01-61a555557012,181828004,5436642755103927212
+ec9e3845-cc8e-2756-663d-f797bd559e1e,1626143331,16974703523486589629
+92d19a0f-accd-badd-107e-96f4b7b1e14f,332582693,14848976910494773561
+7836cc55-cf28-570b-582e-721f89de6b99,1329576822,3218230185476454301
+c4520bb7-2e8c-1e02-3563-b44ae624bdae,1236765009,15595511043146261964
+5746cb80-5e74-9af8-ca4e-0566514d1a4d,3262514533,474898663979797773
+b51b2558-f669-f876-07de-1816df8e0df8,1355868251,2535274943060808572
+3c897dae-bb70-3b03-ef4b-fc71f0146d37,4000700152,16778821822918390612
+793f0ef1-a7b5-f89d-e48c-095dd5bcfd97,3239588837,9769604081965649469
+f90e93fb-9847-d54a-e05b-12e56a6c3a22,2047469597,16364486385602128253
+6c3c841a-f740-f8fd-782e-13bc591f0fda,3142074819,3173284176509104105
+c8c96fbe-ad28-045e-43be-cdd12ccb0e63,3980775819,5339107374134568817
+fb352d42-5704-0b6f-b4f2-76d250852187,2810855295,6150895410168704803
+1dd910cf-bf87-a5f8-fde2-ea81574f64e6,258867527,1010429233538393617
+81f46dbb-ed8e-f361-e9a3-91f953d60854,3764895648,7143637133629854149
+c9a66bf8-440b-3c5b-5798-939ceea7ad17,1095881580,2246722965728004475
+95cc76a5-fdd3-0133-4404-9a30b9c64fee,3487232925,12199745912599050123
+50521f88-c9eb-ea5e-4820-dc84cfe40895,2460920509,2695403514358505548
+0804578d-a1d1-e3d2-e52f-43e20cba02e1,3954264172,13267711490998804281
+7e3d1c2f-8e48-c178-2a42-abfb873a264c,2257745327,2714125313137895621
+f036ce2d-73a7-7d0d-f83a-d8986fa57333,3968837944,16323189877960205465
+63783641-0dde-6e4f-1451-82bb15517db2,93737425,1594621988010198672
+942499b0-d3be-154c-1ff5-a3e41c958be5,3486011548,2622414153355293834
+26c96a80-7896-b57e-023c-3e01a6562d88,2802526632,13925242789254463141
+e9e0d5a4-1078-4fba-f364-a582138f28b0,3121729643,800772344891551428
+cec6cf90-386a-8435-c508-95dea18e7363,3790614086,5655478466981353812
+54a876de-c6f2-6df4-cca6-91f17c1359c6,2587103537,11865865739734007510
+6ac0dfa9-8ee4-dbc8-623a-7d7740522e60,86763591,10420850602676710683
+2f99f3cf-9fa4-eb1f-b2a0-5efa43bf884a,869842239,4826423559015553052
+c025769a-3a5b-2811-15b7-9d1481520e8a,2465886876,2184400380304493112
+aca3fdc4-b194-2a71-759b-156e752825a9,3497794429,4883277191568060558
+128c6847-5017-c56f-f787-8e5db6dffc47,157442829,11497708821319764519
+6b42841e-8257-3664-6503-1876e302abed,2300159913,11687928155599272231
+ed02101e-14aa-cc64-00c7-2fbaebcdc6c0,1944198127,2590829402960783397
+d0597b35-9d37-b890-bac4-33bd254806e4,2513755788,17974293347995295796
+8ed10e53-3a5c-1559-fa86-6a387e99b547,4142576502,16432010116022018437
+319caa3d-ffb7-b7d3-71f3-df512eb17f37,1585575670,13723621980771502070
+e7c025fa-4bd0-514d-8efb-2139b38add42,3566061973,10131379553789588656
+272da945-9eeb-c0b9-9f5b-41a278e86d2d,1762143234,2418567566326071500
+cc99fdc9-7630-b423-24c7-529209da623c,746148960,3929069414970346512
+12ac2407-a49f-7b11-1397-f5a46fd00bad,3195094125,17852493180640324128
+0e383329-aa63-cfc2-ec8d-6d9a8e9782df,1247111599,4508631170708076619
+0b29498a-0d85-3cf2-d35a-f9e7b67227e2,149718074,783078005940745716
+200213bd-2458-3e79-152c-56256dc39ddf,3023139335,10525950369553160893
+e289bf35-9500-01f9-5146-033a93be998d,2938754285,14398574621048091955
+0a852217-6650-7db1-a39f-3eb518d9b2bb,3665695936,13861810795369682505
+31da6da2-2721-a864-d873-dd36319992a5,934997643,5518363354752647549
+ff92e234-3410-e603-efbc-8a5279fac2a5,454381158,11910611613026851913
+7abc49ca-f808-d7f3-6a5e-50eeac11b5e0,3303802646,14767011845010707964
+f08e0c41-e946-78ef-0e7a-ca217fdd443c,2259871786,1839315466770651815
+44cd52a6-e26c-d0c4-d7a0-b70deba90ef6,3951307258,12062171884223896628
+014e8dc8-1e04-8f9c-6aae-8ae33cd292cb,3323051543,4623684809974693398
+c496ffcb-ed3f-bf9a-a832-5222f94629a3,924697298,17468813217226844481
+e79acdd4-c8de-af1b-6f17-0fe0a8ae8408,860085760,3160577863229912526
+7e73aaa1-103d-1463-4412-e5ff40ca70b4,1093734893,2909125377650371196
+685576a6-126b-fef9-17e5-fbf127d72226,1414155961,6223696494999588414
+39b5417d-118a-b2e7-a977-d114e5e63ba3,2838979320,14449756483766454639
+d4faad7c-87a6-0e4a-773c-38000f659314,928512903,11139073041096880472
+b5bfc7f6-8258-ecef-ac86-d42262db019d,3027133643,7039129597893693407
+98ebca9c-4687-68f6-faff-2788eebfba1f,66662497,434495919137976462
+cbf4564b-e58d-c425-e94c-635861db03ce,74092511,3570218878413164642
+6e554ae7-7e8f-3f29-c002-9a7179c1c485,3759373353,17134577195220477633
+2e1b8954-8e8e-356e-2194-c238e2cda846,1823496615,18284813581890098195
+b8c081b2-168a-309e-6530-31e3b3566b98,296320634,16874627978460148592
+522a19ba-fb4a-94a5-ff98-612a5ff3241e,2685802655,18022657748867763297
+d9679795-43a2-50c0-89dd-30f394e38504,2978499705,979897887562293028
+d3f7b9fc-e2f4-c36e-f9c9-4c7bee6029cf,1393738297,9077544590673129429
+17902706-bd85-051f-50a4-81bd768a0d71,3876578625,10936718965992566527
+d6f89fb5-5cad-d324-650f-74e47668ebaf,3644644407,1678668840114570282
+fbfbc62c-ad28-1117-92e8-0625c6c530ff,3314255030,4661920430713587169
+33d0b4c8-806e-6da2-fbd6-f288be2dc4e8,2787978200,15214688585471102673
+872dd202-9aa0-a935-94e8-af0aa489dc58,226160764,14025012422602097494
+3047e651-975a-2773-c2e7-b71d5a008698,632343229,10237852225814914364
+a66ec5e9-a227-b37f-0d6e-4fa47e5958eb,3625131481,11907087079212912741
+479978b8-6d93-a8c1-8443-f829d478362f,2400918990,7263853847569386844
+a4507ee6-39e1-35c2-edb9-a8bf02e4861e,182588151,5049036426360713731
+06e9628c-4140-04b8-d2ce-2b3ba8546ba0,801692336,10479581946454683400
+fa62911b-e634-6ed5-c81c-ea2a09778e6d,3690963754,16736712154223983716
+401bd8be-23f6-4ff3-a97c-2ac80597b70b,2457091605,11258491647131613971
+6119db20-9785-9304-0ad7-3693086d0a48,510170455,11194529551210662589
+5c9d2302-a9f4-101d-5f26-33e7b89b10bf,1358067079,11368548329654480444
+27fce9f9-ef8e-b225-e04d-32ede6d016da,953426358,5854836960155463113
+02ec5c00-1b00-f909-c0e6-3b0afe8038ca,130848949,12042520370203915111
+8cb19e0d-c0e9-6366-3766-1cd8a7facf28,534340471,13816951143193949348
+c15f5a4c-8cd5-370e-c465-72c9c525bf24,1500456180,16182184629969317313
+498a0668-c1a0-562f-fbbe-50ed80f9caae,2704300083,6787695932589500050
+6fd4fcd4-ae5f-9c86-d577-edad55d95d84,993862681,7381724509355941936
+451ab146-81f1-cc7b-dfcd-778d0df3d6c7,920311636,18152636456929005452
+e7f9c6a5-9fec-ecf7-81be-7f76846d6893,170823037,12162940087571007603
+766a1ceb-7a14-d5d3-4636-cdec411728b0,3995483474,758344189338996686
+9563d39b-a0c2-7e4a-e2d4-6762bc7cbc20,3686322925,17590249404441363664
+e740f4f2-b372-8716-3285-ed4a8563d13c,3349092670,11051588328899618719
+bfe31608-3381-0e65-5a53-d059afaeacde,3877590692,11439516304261810055
+2a60b142-0779-e736-cc84-ed7b70262326,3345712303,2306820109459259189
+3bb34a73-6690-b035-5372-4eb9be9393aa,1431268435,18389851537744784519
+f7cc4802-447f-e2a2-f814-2e3deda97631,3490476459,17175949401294336603
+d3f24f1e-5b25-fe8e-84c1-e7df51b18fbd,4063455852,2111270497867221234
+23a0fe49-6f45-5a02-6fd3-7de4ec1276c3,2827947451,4941026607796718858
+b87c2261-19f5-7632-5c1e-12ee6dbab811,791092994,1417369141142777389
+baf4eb57-ecb5-dc89-9d77-01b6c15a4bc2,519042964,14342879962141129068
+fe8edb5d-962b-cf8c-eaca-49926aade9a5,2462260115,3700682519280116225
+694e5da6-fe67-54a5-a881-f2c224c317e5,4073626994,15364419806729166870
+a9d2ed71-a5ed-53a6-1f12-14aefee827dc,1302348435,18117604614805615614
+d4b3f303-0f24-fd68-0754-960fe4d82af5,1953229773,18393883720900000163
+bdcc1870-8ff8-655c-495a-6a796eb9ffca,2898744573,3024783721285265526
+3fc74360-f7e7-87fc-402e-5dde199b1ff4,2962698170,5105228838536238315
+cbbf3e2f-ca91-faf1-78c7-b7ba6ae20291,2202229111,3463988959350972994
+dbce9c6b-7146-e5e2-b44d-a9adb501aa4a,3127826437,16195334281156272294
+97e11f64-317e-0f5e-73e0-a64a22422b84,4194026797,7167958973868662775
+2e552f88-2da9-fb6e-5283-244ac2a932cc,1524810744,10129208663053010658
+1c0a39a9-dc8a-3c1f-82f0-0665c09c5c33,1388419098,17103403486039652051
+02addf43-be01-00c6-a238-bc6771c8d797,470308324,4114471198228413248
+c966ae20-b6c7-dd60-9d83-e1c27acb08c4,3398955742,17495751817863861062
+8455e193-7283-6f36-8c0d-e0e34e2fa04d,2163754017,5230150576691214510
+761565a8-e6e6-3c4b-f5b6-5e196b556262,1518920183,14797446139409260627
+b43fc4f9-81df-d204-522b-76cf114bd987,2468006554,7328893980915668386
+4e958109-293d-868a-d0fa-f516ca406c6d,1936433485,7057786881305246037
+5ff9d1f5-73a5-06b7-88ac-059215061b7d,3508213126,5279682913278272214
+eb7e08f1-3ac8-4892-74b4-c1a109034b31,3521922996,16525822603892115318
+15b22834-c29c-a620-d5a5-791e64e8d238,3386553762,2732279354493702935
+9fe81638-edf2-a60f-0c9a-f6bd0b67432d,803289612,9546049270231770858
+606d2074-554f-7491-777d-ad089dab1ae2,1827879616,17973606655354676841
+ff1d0e01-65b4-18c3-c329-b8961c7d7f5a,3685883364,11375899069933202873
+5b268bcc-1ed5-78bf-6a17-cb529381768a,1233196096,17961621384087786509
+ced785ac-6b81-fa9e-62de-258cd8580ffa,3441175531,17243694495967425578
+3e46a8f3-9975-4e8f-b5dd-6c4858643883,3708166796,3157789772425546955
+cdacaf48-6a4e-e42f-fc00-564730d03e66,473317557,2753695978726634884
+59f49ca2-f7ca-41bf-b995-6bf5f5f3dd3d,3899379076,13151231486066242621
+5ec1864f-5ba1-1af1-9998-dcc3fa60e8ab,2962330663,5684600093491027104
+7b57298a-934e-3f1a-bad4-83816819137f,3663113002,9318662634491950851
+d2ec3edb-700a-84a7-683f-84a8a1276742,1077164342,9460558483800153356
+2132f89e-a098-6b8a-c60a-078b03c430de,1339947533,16542258676278345937
+8c179844-8c29-61c7-0b67-4b5c2649f810,3207031405,17801836101206784902
+2bfdf623-2978-e8e8-cb01-9d7e6813bd3a,3709031316,8539938073494219915
+457d463e-79a9-6641-a7de-cc84bdfc8e74,2389866423,7293710983734548725
+964fe66f-ef80-f9c6-1280-8503b30905d3,790050297,14430986563111595724
+5d180fe6-f744-ff92-28db-2243bf0f9a1b,1463215972,15952780747788352775
+3fa2966f-40fb-057f-59af-2e7bd35ce3d4,2219783255,14347558736900082708
+90948499-353c-57ae-5532-e29014e0b075,164909915,8067035402200858908
+413f04b6-d3c9-9bfa-2072-94f6cc8167be,1853175603,4089772607593094638
+05a74f5f-9bd7-177b-0e48-ddde1a7bbe5a,3301086949,9863117308371664033
+13c3dbcc-9ad3-6564-816a-8c848d1bb72d,544731668,2191353938256882844
+d883b8c3-cecd-8b1b-9987-65002438be3a,1193855997,6279338763859260915
+d9f9cc5e-344f-a5bd-2d23-a6e1d654f575,1524081680,14761467904890021832
+80d663f1-cdbc-923f-7e52-c0fdc8c7b312,1043407134,5435344705807334298
+c854c03d-131a-5493-26d6-873b9be044c3,1500370728,1494055179195206088
+6808d6ae-9ba4-c296-b6b9-d32c58270f63,1154099759,15507906077793215995
+6bc5e85b-23bd-2299-aad4-7fe1f7d9aa89,664935833,16175209848968372246
+6ab2ed84-f385-442f-63fa-9e1b26500446,1468996918,7074410056399701669
+70312cf2-cd17-e00d-ac50-dcb194081b6b,2963413641,4078776590276436633
+e29e2de0-fb6e-a47a-a35c-23ae7b7f9cd7,237049789,15809857716623441759
+76c5cbdf-88fd-a6fb-790d-7395cd3beb1f,2111898294,922887003897712915
+799d7067-de37-d5dd-0eca-9fa2098e5a6e,1512420917,16181436410595001424
+4ed56ea1-21ff-43b9-2d5e-c44753f14b92,3838804869,17626140983055715771
+8b57184d-d3c6-0338-15c9-34e1e1ce8595,1525566311,9342558396145629936
+c92e2e8b-74f1-083e-7bd2-e790fc530f68,2675996395,16276741655538868983
+8c895fef-8316-f1a0-bdea-9644d618e04b,2128046527,5724131921846273001
+e95636ec-2925-c7ac-e49a-9e497342ae2b,2269244635,5238969352743926554
+85981484-9cc8-cb51-4177-f0f8805ff7c0,570780378,17828761241779695622
+9f3719ad-4c38-f7df-3793-472e00ca82d0,3090063251,6553827691771412474
+9434a5a5-5073-756f-7733-f4c8dd319177,2619214874,1071591150142380426
+20470d7c-8747-84c2-b642-8f4034652412,2841148452,550707727605402252
+dba3b8d7-7b50-3436-2750-0f99abc0de85,3277234720,14788097345762917351
+63cb8f6a-c71c-e923-89cd-63ff7d6eddf6,345938027,13338159453362961447
+de8e31fa-72b3-5dd9-5f5a-aeabd50f6402,315657399,8857409399948189392
+054daf50-9bee-cc75-838e-73e7df546740,1162264781,11602257032436628781
+dfcec074-05f8-879f-545e-d49ba9526f3a,2120275794,3089568772627088376
+d49bcc50-002b-0d40-2aaf-092802bd689e,3415581830,2729158337411040367
+dc531d3d-21f3-3a63-a6f2-fc2dcd52a90c,1700170880,14381431922375453145
+9143bdd9-232c-c261-73c1-cad4e1517f38,3714946426,4098269866039752598
+5c15eb84-cd8c-2f02-0fbf-b61525312997,96812323,1070046477887936620
+1ad18c00-c17c-c6ae-3182-e2e4372567d7,4235599795,14546468295219903736
+9baaa779-115c-f6dd-1b25-a6ba834069aa,750091516,4659674018800575872
+e1e72f95-548b-76c4-7f79-6dd06f476543,2185744376,5748649612141674503
+6ab5b930-6436-9e44-7cb4-26cc638cffb9,1940826619,13996278189941940902
+6d006b7f-f96a-c377-99cb-8eda118b71cf,3205902477,7364105516755644792
+837459b1-077e-b043-ce9f-e47e094d1691,2294906347,9054102188424992879
+4a192aa0-c41e-a33e-77c6-66b2a72e16ee,3540430838,6106926840785863137
+f67f7820-73c3-025b-0dd6-3f9c37fc3e00,570484869,8698904118074564112
+754fa039-49dd-d402-d6da-182efc3a4e24,2976253203,8430988904915138760
+0ffe4819-884e-00b1-90f9-03a43b171497,2523764968,6315120033765949420
+2980774e-4091-dd0d-80d1-a98809a04d27,2193478543,4319184739630475558
+fbb794df-cb68-8e2a-2df9-9e855689e4cd,1339678317,13097079097804067796
+48d78fb6-273c-2ccd-83c7-9780f1c32eb1,315157014,14446531287955882478
+90ab13c9-2e71-81cb-ed6a-2b29fb571a64,3359907114,5214391607525604097
+1355f757-136e-23e2-05ab-b139aeb105b7,1497696566,409785275859096696
+0725880a-e332-7693-7d86-83692dcd2325,1515443773,6729030271272062211
+b9b1c3a2-9a6a-98cb-95d6-89dd2430518a,3880853534,3214283598082170290
+bd97571f-f8d5-78d9-cc26-a5b3f067ca60,167393910,8803824520896580509
+eab6236e-3a32-8320-a37c-ec137ee8f595,1334777889,18390933080734721769
+e7c4643d-4d99-6af0-8a9c-fb8e4bed3a1b,3064976769,10694445366542546234
+ba795a49-39c8-b4b2-f8c4-444fa3a595ca,1705643015,18315074165766287156
+f74e5684-85ac-3323-d505-8bc5f75fc789,1706817495,3858478860814767893
+a9fa78e7-51d4-176c-8c81-eb941c7e909e,1004163042,15494526917369997395
+05d80323-aa07-805f-1d4d-eb9f3f70637f,3661598770,1664744381608131326
+b0fe3e52-887b-f602-25fb-4925a7aeca50,3494004069,13061396166533017597
+3051f848-6c01-a158-67c5-a477e53a77dc,1205961805,2225293365014228502
+19634192-03a5-9bd0-bbfa-6e3ec4e85686,2291421691,12401356781382493839
+21b8792a-728c-11d4-c7fc-c415a189ca7b,1538467853,9061557453534709734
+598e9d6a-6328-e5b9-69b8-ed5330542c48,1520398013,1512977238666299457
+fe61e2f5-03be-7492-f6f5-337619059573,176120787,16884582327979655877
+decbbcf2-5b3c-a7f6-1a57-67b33ab71008,3159580076,1414335955917258955
+0c0fc811-677b-8c0b-aac2-6f0cac3c0d6b,2839801793,3689598262742867732
+2ec53a5b-2e5a-8384-4a14-eec6e539396d,258475560,1725872832406962564
+f0e66d74-ade9-f238-0a00-ef71fa76adc5,517210048,15331312473114342367
+96e67022-6424-fba6-0e82-92c5c3899b28,2575797729,1088604394742475551
+81a48377-8373-c60d-3e81-e4beb3f20fdb,390248766,13931940702799320676
+7915ca6a-fdbc-fa68-aa66-7b9aad288d31,2320807667,15084107671596893581
+6f44f87c-0d7b-f654-e8c9-3d07db01017a,54978000,4051578714264413851
+433522cc-ab6e-be2b-43d5-d970e48c3e98,2988311981,10113870638263092965
+e8e0342e-50c2-f4a5-02f2-8b25ab77157e,1913428915,13875181646722884569
+296cead4-5a62-0621-2988-9881780d2506,3819621486,13013370331722471309
+b4cd0bd5-15f9-39c1-85ba-483350bcbea2,217097888,14439911979910248818
+a63c2ca6-4ec4-a954-f98b-b7e75b3761ff,1714195516,17959571600680093840
+5ac0caf0-4f46-aef2-8dd8-7f2d0d9e0df2,2128273936,13022171772491173283
+eb8aa3b0-a5c6-1bb9-b626-8822abc79fb7,1039673669,8918936098933376916
+d016a2ab-8781-ff57-0c60-a95c347059a6,3144752024,16540204539993142923
+0f9d8386-e3e3-83e8-932d-61907f8c1add,2772363351,12556715389663874729
+13f1430e-7fa2-f771-6cd0-fedf9bb4bf13,3911378149,4415482302497030915
+a42b5fa0-6880-672b-9330-6b69364a3734,4001107002,11801652228880046678
+670bac1b-c94e-056b-a705-9098d3b937e3,4113005826,17412446729832246111
+f33c1df9-cf39-3718-402a-98cc2b30bb4f,2269299939,10222860223630411479
+d1818d21-0664-dab7-9129-b3e7efcfc596,3252170049,6635566464488311990
+4edd248f-130f-cc3c-0011-f53008707e13,2270621742,7999302722358391445
+656d7617-dc06-592d-cbc4-2bb4c6963bdb,3119933731,13719555134714228191
+a0da3cad-8e5b-f07c-87a9-a93c0b392967,3048224789,4113277430772358516
+0670ea7e-3843-9d9c-c821-3796d4fb5384,230868930,10363517744774326458
+de84aa56-b328-90e0-550a-37c2cb9d043d,35894191,18217064521336507514
+b3f07732-594e-03ae-f7dc-6d378a5db0e6,4197156981,15493529958728283579
+8dbe40cb-ee4f-fd8f-c524-5fdbec75173d,3966736689,11753303112354361279
+ecf009a6-4c71-9d12-eb8b-11180d205b79,3413738126,15003431748968297803
+210d0938-599c-d17a-5b85-82424fa66c60,2986316879,13792831872879663326
+76f426f9-5123-6b60-7e36-0b8fa8eda881,1126152055,9367494681140083591
+d4f9442b-3ac9-4879-052e-03d46eca6780,2333707541,16966897096581274076
+e51f3480-6598-624d-b935-cbaf5cb6a7fe,3097748750,2044694290904228077
+e2764f5b-b441-ac8c-d98f-86fb1add79db,1938356652,11780890765625340294
+7504e104-8f4a-70fc-29a4-fda517695776,1810733623,14330862219572853699
+a302ec32-e62a-2ace-4543-c4f647d162b1,3458348660,15824789495092719803
+d0038025-dc41-0608-b0a0-fd788b674bd7,1051855762,13401657162845674515
+a59aebfe-1f65-eeff-d385-a6b11de0a981,2905839338,15476166027883863073
+fdff9dfa-08ca-1300-b3aa-57ff9e78fad3,3257788534,3319336436649074532
+550d39dc-dc9e-4ad0-fe9a-8cc069d7500b,1002287769,2742105788125015067
+c2cfcb14-44c9-3bd8-183c-474e3a9c02bd,2430275686,6504014981631489653
+84316bfa-729b-e03f-f275-ce0cf52ff743,2447120669,7285997842093135254
+7158944d-b9f6-e65d-73f3-17b5a85f51c9,477930804,14670113403058988283
+567b94e6-bcb4-7d7a-f65d-d4dbf93e280d,58110906,1798486705824362201
+bd04ebea-0a5f-94d5-4d4d-b7d96d70dffa,3881551080,16072961328354137880
+1f4e3bf9-ae9c-3ebe-0655-b10fae26f443,3623003123,6116024993755648985
+2e36a2f1-b55a-e1cb-7326-11ecb6ac5c82,4081682059,10972923660230148618
+63a6ad18-003c-97ee-b548-7b9a16084bee,3601726936,4054577347770926193
+5d9ca8b4-ad34-174a-c19d-6e8b158b10eb,3036441276,5519953319673555705
+a7807252-005d-4e04-90ea-3f8c49654019,3214250787,12555778870496425943
+802d78c0-e800-e5ca-0ae2-f8e05a82fbf8,1363998807,15772682088591338265
+11d0e0ed-0a15-c5fd-55d2-c8a8581df51f,3213329874,5661210277923291739
+ca579e2b-c4ca-1b36-bab4-40563bce927d,798673948,9808228738377912051
+5b3732fb-8221-eb79-f9bc-dbac98386cc4,1425231768,11294397989378958445
+3c9bd45c-81a3-6e47-6ff6-e73c999a3698,2337605933,2880738155751357088
+c42e2182-1481-e7fe-6492-173318376ed5,3958611376,11755104343049366235
+7bbedb15-d955-5d61-f312-7cc920b92590,779984308,16370400409702520721
+a5085160-e548-ec31-d531-e1c2683c762e,3848209096,962025054645784996
+53f292c1-5ed5-e0be-0018-dc39e284b68b,3944424936,9241492921323685271
+226f3a38-ad20-2a6b-5b21-2f2c609f0000,3808442306,9917884661516795179
+8f50f44c-10f8-1d07-33ff-6a967b27608d,963541213,7944004209538053265
+772950db-e991-0683-5bed-675476f1906a,746027439,17698952592220142249
+18c9d6c6-abd7-9937-b34e-4ed9584b104d,163118269,14297993620464535770
+7b5d2d09-7e8d-2116-365d-0d7b905cdecd,359339673,8611408682403912336
+8e7499b9-8c5e-baf4-82c9-62fcabeed730,1713449965,4023910380736257846
+9e7fe5fd-34be-7e9d-db76-de9c7877c93a,1002834787,16642858084978123236
+fba0b9a5-91b1-0c65-631b-a98d9e595173,3621226798,4732632464574309072
+72f10009-c7b3-4533-4e7c-59aeffc9392b,3617602985,8679307734956579112
+b35dbdb3-c10c-b301-88bb-e79f6453aed3,1676947778,7474135984435890026
+cd8ae196-3c38-2dc8-5a52-e7812e24a6c0,3419340544,16948660164632927949
+16e7d56f-38f5-b84a-4fc9-59bd62f5f8a8,3405074401,307950216800391671
+913e2232-c1be-2a9f-8654-9e2d5cbbcc05,1666187421,13350786323964962429
+dd9e5b8c-36ee-35e2-7617-22a16d1e9162,1301410784,8379104265449280360
+35e53ccf-35aa-9ad8-fd23-a4162932b6b5,2586260663,7578946376163430299
+553b67df-0d22-6dc2-e859-fb6e78715ffb,4145939794,17124546052644587172
+e16f7ba4-b740-8390-4c9a-61bc2ab248f9,2237256761,16466027554620898854
+a71268c8-0f90-4e75-2cea-5e8bc9def960,1726104143,2254045147893785628
+75af8485-ce92-b208-354c-a1d565d39c72,490352642,1459589085845290766
+acd7d012-79f1-2663-7645-7497d4fd22f0,1919278106,6310240116496259820
+91fed2c3-6361-38ce-2fdb-305437016cb8,1102973071,13480434527970441715
+415534ac-eafe-760f-0e83-942836a3b1c2,3444863667,17115090247378704606
+b31245d2-b9bb-35d6-725e-1defc03d51f2,405599472,841539122781775176
+0d31c23e-fe25-c5a1-98d3-6b109c7416dc,2805028723,5875504277296573997
+59495a67-c152-d3c6-142c-27592d553c08,275417267,10057848949534299689
+4454d338-47e3-2667-a38e-62027af7c80a,1520976169,6791634160480224038
+fbdc6a5b-1300-3f2d-7fc6-9822f031ca89,3784096336,11898430915719158213
+e906e60d-a4c2-6ca5-873d-cb0bd6dbf028,4001609720,1150992260742860588
+4a284ff9-fe87-8f33-f4d9-157df217bb8c,1781763943,16324002964250162199
+62813f24-a3a5-921f-9885-6f8b775d50c1,4014065032,3075505997252633789
+05fbe301-0521-6355-e1a4-4358988449e4,8936572,819581859105226827
+05b7aa3d-87b7-ef74-bcf4-c39e6c0c5277,1284473114,4673201825184471903
+fcfcd3e4-e12a-72c4-fbff-7372614c780c,2461641048,4851209422109305396
+f5a4e1d7-e507-dbef-be53-19935c1b8931,3524754838,629547110293109892
+942e1867-d84a-c595-d2b3-4e3836036378,441697684,11515116286170637849
+21389637-3a7d-2b15-ac0a-50969447308f,1462978868,4080349305182031260
+9b121ca8-6b6c-ada4-7aad-bfa4944525bd,1932282520,7856973398541189902
+8be81f2b-e22c-9fa9-e973-74c2a7f3f57c,1016600470,16362625271248003658
+2160a125-62e0-b45a-2105-1d92a070f92d,3750592098,12356173896204883353
+71f01860-462a-e919-4296-f442aa641492,4138624590,12562505318291726435
+b336c06a-ccfc-571f-bb1f-f07dba4751b0,3689475468,9943897486444434634
+5253509e-1a24-98fe-90b0-a7b2f31695e5,23846503,7484217263750260791
+826024f0-c416-b1d7-1da0-656ab79de74e,3796827443,11829675975118530963
+f63c520d-bf1e-3419-05eb-57fe99423834,4058470132,2162283569333007555
+30ec9174-452c-4545-74cc-f9895a3bcf38,3298570005,14230460991880421590
+ece91ccb-f9b6-2813-ceec-6fa4174fbca9,697949036,8583275425560338345
+5af6009b-72bc-7cc5-40d9-436bc4cf5053,4235263086,15811231887021746544
+afc8d806-e4b6-7c5f-3af9-48bf92b9fff6,2511651614,5822018254361968725
+e9abd964-0fad-1827-1d63-b9acb7c7ced1,2567273476,3990347568050302422
+2ebbe1e3-c5c3-0932-384e-dee61bf1647a,806155267,1553900235478332552
+52543dfa-ddd1-1a3c-8d19-6bae10408632,1937621609,13616367138767831872
+905cf0ee-2bd4-c15b-c608-ac4ad5ecc079,1618531974,14526315671105438411
+be29b4fc-f0df-b65a-7b34-67719ac44b94,2853813218,12942509676559878516
+f8b95e7c-5724-9653-8095-84523b4f6f3a,4162431241,983458752728420720
+f1ed2f1c-6f06-4505-e6e9-99653eb2f8f1,3512025377,1124602769517067104
+13ef48fe-c1c1-037d-47f8-08f37d4e7864,2386056639,8780745000310100019
+bdf98b37-7beb-3b36-352e-3a9081b37278,3550223118,17954294163537835397
+ab68ffa7-1de1-79c3-efb2-84920bc5afdf,3988031573,4206824591314852650
+52434bcd-b554-fa99-b0e8-6f92e79f355d,989032090,6191385988942204271
+76f6892b-2d7c-59ef-7f9a-32d50e6c90af,3921565622,5428296336274031367
+01f075a4-e17a-f670-54ab-e2a3bea3dcfd,1657036437,3446395038443073605
+62d8ca1c-b982-6585-3e38-5a7f25aea28c,3631495050,7829005546083167620
+6acda715-3572-2a7c-19e7-f773079eb18d,107405571,12239750103491041903
+27611a40-bc40-a2b4-b54b-54ef46b2b9a6,2044052197,2744866036520505099
+4d563c20-88fd-2682-6416-69f4056ef1ef,862675064,12377440856735627486
+bc2d6665-a071-4380-7bf9-ce57fc25e892,4006422225,275012705197081980
+afc8328b-a432-f387-4c5a-5c9fe7f1c0c7,1913326437,7890901962809629884
+7a6a63f5-73c7-8edd-5c05-7b20cafd5338,929133928,4227454219837245533
+ef7c9580-b58f-d3e3-cee2-67cd3f12bda3,770274958,1687496848667171634
+61691283-79ca-66ab-9946-a454e217aa08,4223949142,16930097771636411338
+f2579be2-c00f-546f-1e1d-b565dd3bb557,72397317,10393811057839091482
+01eac3a0-588f-2a2f-704e-e4b63e4914e9,414783182,5315149731686452042
+3a73d492-9def-c3a2-6698-860f0d7a5609,2398768057,10758548772824043939
+35dc9897-e194-f9fc-477d-744077adc853,4201933821,10902467071409811009
+7fc7c52c-ab27-241f-f82b-de242740abde,2657750099,1504324235325986433
+69041ebf-22a5-5c58-1525-65da5b87da8e,540710430,15260350475398049004
+b0669182-9946-b7ab-c21a-c967c9cb5b40,170145997,9852757452192973564
+b100a14f-9840-1da6-6998-ae59a91f2777,1155526180,9308101191734598106
+030ae2a0-834a-776d-ddc2-4af9eb0f480e,2578601380,7894761341379380350
+3f41dfd8-2f93-88c9-63a6-31672399b9be,1533613529,17515749739290691975
+9e27a2d2-a446-de10-723b-34a650cdfb1a,2427394565,14946955188653401643
+c51a12cb-bafd-0293-e521-a1ce4bd61341,2760125600,9897377655927194622
+8d1279f6-b941-039c-addd-3af1936e312b,3400240383,10549587341502759378
+993f47eb-ac3f-d876-a1f0-37fefead74c0,462451841,1640371689255049330
+bd62b333-3ab8-2fdf-2807-1668852bc53c,454417089,567873119752828384
+3dc8d276-af0a-a1b8-571b-2a47439dccbf,1886021691,8325674017026687392
+787c401c-9012-23d6-07c4-11cffe4789dc,425815586,7465285370895905209
+fcb360f3-241c-1351-81aa-487734315603,3556755414,10133685971621658755
+d92906ae-a32d-4b61-d520-8ec1860eb7f7,2785951958,13443902781805549926
+118bb0f2-7535-528a-50a7-64aebbc90af7,2437360916,335646434893046789
+39e24cab-1371-4e07-bb04-598fa1016650,414024159,14164220947795400316
+3e0a6bde-34aa-3b5f-18ab-47d8a48f3552,2160938484,7477032068487653692
+15ae6cc9-d417-a06f-60cf-b1051554d684,3875212702,3414008859774041203
+d5636945-2bfa-21fd-51aa-384378a333ab,3754903955,5650671310674699379
+30a5f989-9aee-4ac1-2cad-06dc75eae69d,1702495578,7293840096019088066
+d335ddc7-524b-2435-c6cf-98b2c4a0e650,681506284,16093734605825448945
+b6384502-22aa-64bc-aa1a-4dcbf6d0395d,627661561,3314508854871660962
+7bb8e31b-206f-b506-75c1-c6a9219fbcc2,4045026441,15618057828183725480
+027a3b22-ae34-ab85-2279-d3675c93cce6,4261727613,8564534166662348249
+fc37063b-9325-5a51-c11a-57116925005f,4001515501,3764121674440527330
+77568f24-0c90-6e34-1f98-013897bbbe20,3876498832,4040396477240857084
+e6380df9-dcfb-82ff-6959-64b22a208e4c,1643616898,9701483227925751657
+f8b5f135-5086-5ac6-8b83-13356974264d,661461206,14820607466238935000
+9941b0d8-6e2c-e56e-52aa-b22df06a91dd,1980632585,11476143096962752032
+74f3fe7f-70e8-fbf0-923e-71b603e966f1,796181386,11540680497102038318
+35af739b-fe65-938a-718f-f5c231249732,2020889674,15142580382059219866
+e128a0e5-b8b1-ddfa-7b20-b687bf23c8e0,1346039690,9995668181017041159
+a222fe75-9822-e258-4d5d-99fc9b9b841b,469729526,12358456731204481314
+7fc50b9a-ce90-a97f-8d70-a320184a21a0,1242972197,43436800033037168
+d8a4df92-de46-3248-b802-6e45cde926e6,167984465,8892985451442684203
+27dfe1c6-f4d7-51be-19eb-d8ea40f3fea8,1317828098,12877363599809958106
+0afc6baf-86f7-de96-079d-3af33bfe9468,2345304179,13382903435729961179
+4b1bc109-abd0-f5f0-4b74-2e58968b5b29,835619833,6742751998694132053
+e4768c73-6ca7-5fee-260f-38d057697b26,164263535,7181179650459286002
+54e636dc-98e5-cc11-e24b-ba0aca1e83ea,3593415054,8451754663669561261
+5d171b9b-5f4f-75d5-eeab-5f8cbce3ba90,4144159868,14593897951933441291
+0c0215ee-3734-090b-07b7-a9deeba43640,4079298259,15427680690130458894
+08ce6447-4afa-06f1-5bb1-622ad1841c9c,4219526992,12149937898429217344
+9bae4564-1826-f918-8cac-c9df03885781,665271113,14594303072463233394
+5ef5f3a9-616c-df1e-939c-c0cfed632465,3109536446,1362367421711139005
+0d1e1783-de0d-a140-d7a4-208bdc001e10,1956889167,8275785836581363826
+697020fb-6edd-b485-c828-2448a2363928,3341203136,5520293719685125692
+3b404728-8c36-2a3c-0854-55003a9e8d36,2573713982,7583597767608452053
+2e5f67d1-16d2-b2f2-9658-a305d6a51133,3764889505,329598544096717726
+a66098fa-fb34-8cc5-4bb5-06a21f5dac16,585530759,16750484084442921375
+4b6b4240-e351-2469-30fc-29964224c8c9,326554621,14080242450850571676
+569ce948-1616-ea92-74b2-e507be6c94a1,1206923630,2875095523525158285
+282ebce5-9d71-8a79-98e5-f8a957999091,599814738,16412553391926761218
+b7705d15-d3e3-24f3-2335-bd9316abf11f,4076984638,3707374457717430874
+93ec5a7e-22b0-33e9-2711-f64a94173a62,505655207,16618492688492859425
+00f5de35-c3f9-ff07-6ea1-335110e567a3,2779611676,16461089678047520383
+1dfad5b7-2c05-ea7f-572b-93050decd2b5,1809568611,10305468889755494842
+c75998b5-a161-b793-c10b-c7df1ee99858,2513873934,13292193920502227303
+626ad6b9-cf4f-4d7d-7396-7080986bf481,2888924159,13164193691363334933
+f07baeb0-34ce-98e4-4a50-b4457c8035aa,2111087961,14487788160934214739
+a39255c9-433f-dfbd-fe89-3cc1b4c0ab0e,4018678814,5374317086705970084
+80bc4c54-37e4-cb3e-309c-9f444a1329de,4107593661,8769669083039967812
+84be3deb-c23e-4c5a-ecfc-256a83d2a576,1868034278,16176815335934218850
+be5a4c8e-976a-60e3-395c-83bb0435874e,598347668,12160318082612771297
+10806ece-821a-e470-8bc5-e217f1dd32a8,3307650818,10438828631644099675
+ecc7fe48-ecc6-a6e3-ab9f-fa4d8422d386,3416138383,1299487315905753547
+cc03dab9-84ce-e3e1-cfc1-222a05f0cea7,125658223,5136727238572109199
+0ea36664-247c-cc93-c0e2-226017a6745a,4228693380,13427150844926480830
+d10997df-8617-0cd7-d116-d0bfaca95ce5,2972656398,5536150369980848757
+d79fad7b-45b8-0e23-340f-84370e2d80c2,3135296286,17491546305800389117
+8e20868e-784f-c85e-2c4d-4e058034e19a,3534073961,9002230754318427003
+386fa543-4d2e-2613-bd39-9ad70a6ad522,175514381,4910609683977514558
+654df6df-d37c-c660-96d4-5de0c4aaffa0,3278689631,3871010846416685360
+a2b6206b-e2bc-01c2-abd6-4edea657261e,2274221650,11799750986575524426
+59409fd1-75fc-38c5-5206-206f97405bf3,807869020,5883339231169857275
+dc072a31-df0b-b976-587c-474a2632a0b2,2614711565,17643087759967558983
+ed318e50-ba78-8a17-909f-e185ce42a29e,3895816388,8439249533295144051
+171ff1a9-cb60-16b8-3b70-901125319512,1734246675,13484359802825694776
+f970b6b8-3fc5-60ca-3b80-b4a015899d5b,1780756110,100268744323879536
+4add6e56-1e10-39be-757d-8d4613143101,3279579690,11798320278434232098
+9bab48c6-6b59-7580-1b7f-fadca5ff28d4,2624439559,70395302828361391
+e442ab03-32cd-c5b8-9b1b-d22b4e4f8f4f,2728886503,6508058042363245931
+03a94f0c-0636-f76f-8c90-cabaed4b4ea4,1470222155,1715095656617426132
+cc78397d-95de-1a34-2ee3-0e3f11a29db6,778722665,5417167134949036466
+e7d7aef9-48b0-eb52-bdd9-b794e8634bcc,477743909,1802386303010526299
+4de93661-898f-0a27-6348-70a1874f2812,1149135502,13233150802166146043
+33e1f27b-6fe3-26ac-5a55-9d0acf07ab68,3449208801,10025659751752853876
+522ed303-42a2-cdf5-9450-cfa0523f67d7,926499998,4179235219154936304
+70206286-d78a-6868-a529-57274b2b47a3,158157588,12438656755054518445
+92a0fcf4-b37b-d315-1707-3a3502cb7e18,1614873642,15746981678029468427
+f917aa62-8a99-0930-7819-e468697829cc,4018348546,14985932927531972954
+9b27104c-768f-8e11-c0ae-24336a6eac63,1014156661,11055033656470836355
+4f788308-f0ed-5287-ebf4-5407d42fe39c,466978296,8060683433193302030
+f10700a9-30ef-d448-f6ed-1ee5d1bd6950,3751237873,9526289811765597435
+574e651a-f776-97ab-4393-8ced99abb05f,3679377512,16700005900827314524
+c6339c94-e9b9-0bed-a4a7-1eaee22c4320,1812032696,2445768092525103034
+04a60c47-1a8d-4000-6107-65c64ac999b7,4205556137,6832008481773504111
+d31b8e0c-7b09-59ac-2bba-acbc013bda52,3580399364,6881474476786494701
+bea2e4a8-d705-6f16-346e-4181c8f2577f,3464608379,15911206876569064876
+61b4b559-ad67-7cb3-bd4e-bbf94b5d87a8,704797211,5647316186060173135
+9c77bbf6-400a-6edc-ccc7-b7bd41974d98,4083229875,7867184126502124685
+11ed0f57-d113-3459-94c4-37a93fb95f50,2879901244,3215704332956466243
+12aa7555-fb61-c366-0db2-b6088b67f614,3646178796,10376153751952571946
+24da391a-671c-7d01-341f-5b204958edae,4288446938,11339098934440924014
+17322e91-e5d5-77e3-c4bc-03eed01fe638,3658078985,10784977754760623365
+b9333a68-6f39-cdd7-d95d-eafafe6cddbd,544087053,8018105734237003200
+522dc234-9d7e-920e-57a0-57f86544d0c4,474534954,8227739746646624385
+a6fd70d8-1f3f-910f-d47c-b2787162570a,1250588174,16467539319532580677
+5b9fb440-ae83-39d5-cca2-80f80e96a455,3770855155,7346155215935211401
+0e74140f-17fa-e4c6-0f1a-15f1b1d7189b,4210366036,9237398794980343994
+48211e3e-6012-64d7-490c-2357e6cdade9,2757701706,11344631103576586944
+f8a1146e-3514-13c1-b886-57d85824989a,1296547911,1411359562626729537
+9fa76929-b01a-15bd-01cb-d4b4a672c4dc,2163906010,18125461993983444895
+b2d2d78e-8c05-5db3-34e2-fe482d4d92e7,2751989901,4199172928599808649
+eb976e9f-b7cf-ba8b-ef60-15e4ffc551a0,1892105585,6130026962840426542
+7b34491f-6f23-e36d-e2b8-3246307aba07,3016155152,15629558792398890292
+d22e010e-2722-2965-8024-26d3d52af1c3,900270429,2919397356873527622
+a1234269-1520-0cde-9cf4-26837078a392,460173977,14922310635678843865
+50f07078-c7d7-7c20-f7bc-85823f035613,1990390340,11533533981049278109
+10482589-b1db-4054-eae4-a0b9ff99b0f0,1785815440,2377812763129593276
+c2d0b9f0-3ccf-081f-3453-79c657544e36,3341317476,8732134380807023384
+4c403987-eb7b-0c2a-3922-e0f7e17d4e40,835814426,6232572526299958917
+ca8673c6-947e-116b-0e9a-765b12730539,1934207501,1941111726084670898
+2e9db882-b46b-4f6c-cba4-b117954334b5,1472230167,547039673209053165
+8091030e-26c6-e4ae-9b12-02979edb08b2,3483445933,11853301030915975557
+9c28eb04-feae-a1cc-3198-186cc263098b,1591106546,4846027723998896114
+9e79fa95-a23d-e998-ef84-1a22fe4234dd,938181147,1690597583740009274
+e300b3dc-5197-100f-d388-feb63859190a,4035341590,2215211889774845718
+2d32c1ae-d611-704d-74e7-0677a94aa33c,3219227365,15731364998275093726
+d0f486f7-6aa8-5c6d-263c-4cfb30f63122,3672527041,3558858275596106285
+d73ae76c-e64e-264e-2a21-eaa1304c559e,784105130,5863059752673305496
+100654b0-a515-bbc3-e990-e9d772e76995,1444863181,2429581841398594053
+346e2f0a-978e-5057-d70e-b9e48fc5c5b3,1616089255,7146619647951386334
+5f898b97-28f8-3aae-8825-5d014a0fde32,2895183691,17757322906938027616
+c595bdb9-8ad0-aa42-5817-c9352e1389ea,4195243477,15135412179386401785
+5e67d3d4-ce00-4ad6-b3a7-5aa89bc30ff4,551468394,9225481352915383334
+28f4b71e-f78c-7011-03d4-4bbfb878bcbb,2856987577,12523607406092834711
+dcd729c8-2363-bea4-dd0a-2a3a42ad8dbf,1036855849,2083608875457806339
+9c218de3-e81a-8918-7479-47c942de3458,319578321,816838397461093547
+74e5720b-1662-88dd-48be-9c7dc1431b8c,1881487555,15434047667521812244
+2c962b4d-6ea5-c371-a37e-627d2db9c1ff,18673480,5646874724903286923
+14d1acfa-b4c2-4775-6108-4c74d289efd8,2069252398,1630729473608784953
+7cb93cf2-cf8d-4ae7-51ba-968e01131af4,3192561365,7792715790873292001
+e3be0267-d055-48c0-f304-82663308b1e0,533023741,13258929949423896471
+dfd5bb9d-91c3-3a3b-ddc6-ace059c1e625,2660674349,15211443175184881890
+f2c358fb-234c-5a6f-ad25-0d4c94a9c1fc,1383014313,16671396006069841940
+86befb66-eb8b-d82f-ae3f-57c6367c79a1,139944758,1956735426678214639
+472c851d-ba23-b439-bb75-2db909cc93d1,3099306594,5192372676988609245
+c3b3dbf5-4fbb-c093-144b-759760c05c00,653936600,14012689332312659508
+58794c11-c3d5-3e41-53db-6ef85349cf0b,1834815049,17059075512396372580
+6d248616-32ea-6404-00c4-ccf53ba4b6e7,1853062521,9318409784693602213
+0704557c-6b13-4f36-8575-1e616738d9ca,1324983907,7759374096009242631
+358b6f98-fc6f-2a55-70de-9febc423ab30,1741815388,15159890885924382995
+294a3a19-14ae-4a7e-7ed4-ed3f3471562e,2429822366,557600559128599386
+1f99cb4f-3520-37f2-28e1-148b9de28b0a,2816239612,15110656265242081628
+7a946fa6-6040-c4d4-75e1-309e317a063a,3516337015,3181649710715169449
+8cb7a0ad-64f2-7cbb-74f5-11c5762c22bc,3201053694,1265688537942256840
+5f62fc79-8bd1-a3e0-5a61-edf4aa756075,4007517158,13609335288781251726
+98bcc420-4dc5-873b-bff2-ba94380027ba,3775071017,15988466031955119106
+50801bac-a06f-535e-28c9-90d39e4e016a,107311475,14164222439843301079
+8033627a-bd40-1bba-6dca-82d09a118ae5,2928128485,18394095462621411483
+8eb796c9-3148-160a-5a90-4e35e1ca8850,4011320185,14990418656349683490
+973e8a88-0ea5-b28f-4617-17f6f7fbd972,4162264288,15362977595393228766
+cdc80998-f8f0-497b-fdfc-fd1c6730c136,1712588870,18197428876644427652
+ed1c4ae6-7400-e15d-0a21-88934a861be2,605958016,14189777362125014200
+7c748644-a531-1115-6376-2cc205e02a48,726059676,16971874829456861653
+3a4fa2c1-2b14-be53-b78d-eb0f4fb18bd8,2650727850,1733470930777214335
+f68252d6-9aed-c362-c61f-cedfc84fd13a,1301592157,14265413834529627483
+82e39d7c-52ba-28ef-0eaa-9dd305282f34,1879847822,8241009482636743024
+3eb00ac3-d490-c6ed-37bf-b9cec7eee9ec,2480667543,17726309644669365933
+7d561619-8bc1-d5c3-883d-6132b499ac90,2262252465,11606082418613617563
+68691fd1-30db-121b-4b43-60976557cefa,1694241748,12141965177752193266
+10385d09-3c6e-cc24-5b4c-23b7678675ae,2770207523,14599571345253721834
+1cca1258-a639-8662-663b-816ce191a5ca,3005607116,12900220977294926388
+5b4e1aee-c153-ac4e-c9cc-dc6de64fba9f,694133242,13143160865232548548
+fd7fc173-96f3-a9d2-bd20-c2cdc5ffb0b8,4115047570,14709856966224651164
+0891e9ae-c959-6f25-36ba-9373b4d1de0c,100873936,12129720109558928398
+5bb3caaf-4098-966f-81ac-e03665de3640,3440299608,14332053986511095385
+ae2dcf31-4b6a-626f-e449-e73faec756bd,4128910897,18249872538622547291
+d3856cb5-dd1f-5aff-36b2-f48fa15e5672,565742708,18332569600288863929
+7749b17b-85f8-5996-d236-4ca5a8891004,276423711,1152716557436740630
+f1646ef5-0928-29df-398b-86f142850bf3,4225541044,10413780788212252366
+2ed0facd-3b24-b842-5cfe-3fdbf549972a,2106340915,6958158478077012709
+e017973b-cfc2-a735-bc4c-6b7638008c0b,1719820030,6160193261450370401
+94637669-c618-dbfd-925e-59c31390c56f,3330611751,17598890081287784915
+ae422909-4fe3-80f9-27d3-a4629b64f608,3675495782,10855000280294703203
+c350b340-acc8-23d3-cf44-97db80bbf14e,1142756363,2057729221774527374
+cd8a6510-a7a7-492e-2426-0a211ecbc6c5,3551977657,5964698483371654412
+9a5fad2d-077f-266e-08cc-450145439d59,3937103420,3146695486189830654
+2b4245de-9091-718c-8998-23262e19ba2f,1088160391,16158338589033016209
+4b4ec631-9128-1f07-906e-6791f41bc95c,1607730721,364411658084219745
+f0e6ae4c-27a1-31e3-dabd-d57a0086a18e,2542634660,3058315797303707053
+6b51456f-ee1f-0150-6d33-13c4d6844948,525089005,13759590274510298282
+1b30d1e6-e058-a783-4ee8-3059b2f66841,2091451511,11273020473799175914
+35513f5e-25cd-980c-bcf6-9f3731282a52,2104242967,8414802416987166002
+84c3f38c-f8ee-aece-a960-7f5e9c5a7476,3975929005,11216003118041394097
+27ad1418-8aec-672a-30b2-a9397a312dcd,457746746,11700387179900733537
+15a50b23-7030-4f82-8bbb-e85817280bb9,981153169,16125489748140043448
+e1d69aa4-892b-e9e9-72f4-6a7747d3531c,4253124729,16411651044530792764
+665e54b5-af19-1b3b-da68-cda856ad8bd3,3107505192,17994906630160145164
+79de01a8-af03-3663-9101-2fd736d0d980,290564184,3561178921730090819
+04b5565c-1a80-d76a-2abf-876baa3536de,2629428052,7807481141975465566
+f29484ae-7ca1-8b5a-51e9-c8a466e07bf8,828260886,3111202027578524351
+b49e4ee2-4780-0138-7d81-f357111e5d97,1210339742,14752146372260943
+a7435923-443d-a07d-86da-218d03284132,3994129166,3349662803854281699
+e51c67db-e5b5-209f-fe21-94a44af1ce0f,4219620415,10530985535534818380
+83470394-a20a-a701-04aa-1273eed69f0a,2307237196,13981832509053816216
+535998df-38d5-68a6-8b08-22b728753a2a,2591941595,17412454388562790769
+9b4f7778-dcaa-ab8e-3917-21ba3d9b8ce0,2133977608,3917489675265039428
+cb32173d-4bc5-43cc-fddf-65643ae69960,3807260848,16517603137907898922
+e9a6d6bd-1325-b8c3-b4df-6a6efff1ce6f,637767074,4695387706216004655
+d6f23aad-5117-cbe7-3085-1a1d8021b8a8,2139122086,10947646818129531954
+e93cb159-7cab-577c-2123-2551208b15a8,309684421,15347320106437120186
+4a2bae87-971b-40a2-b524-2fbffe3476d1,3022701612,13277046274159773839
+7efdfea8-8420-7622-f8c5-bef5d86d606a,3002425383,4678821966654978349
+6cf164e6-9b3d-657e-632b-cd084c7ff435,619989460,16753493679344396234
+6d29ad82-8477-0601-125c-b4c25c762e9b,2042314347,16705562527143319370
+38a2ffef-bc89-6abb-768c-08fb2a06dd1e,2795905335,5985786319593591649
+20e7d8d9-7578-eea1-3068-2e2d01f122f1,1936179515,16082329274434444820
+4b9cdf2f-93fb-cb8b-b89b-ee7fa64d15d9,3509218500,15628896776452249309
+568238b3-305c-a121-e0dd-2c6aa8a69a63,1636804229,5884417034376254595
+a2f79b17-64ae-15f4-76b0-16312b4402d0,2060499862,2649791803778677108
+5a03cbc2-d58b-9998-6f3c-adfdb74946c2,2135577652,2071595766694292189
+0a9b91dc-bcdc-7850-d857-d5a91c0988a6,2405953020,14549787187466891235
+6e3f3c20-0139-5c81-8f57-c3a2c64c7a07,3253810414,11193744079044434130
+650b3e91-cefa-e08b-d479-c973ac98f10b,1678036715,17752788664523610625
+55acae4a-e0e4-1585-0185-3a12a6299094,396653588,16694147735367277276
+be591b2b-8020-58d4-aca7-d20c7b6eff65,3243263284,8195712623908079153
+461bdec8-0913-4dee-2d34-1c86e56e61ff,15076886,18370831670477968148
+aecbbdb7-4c01-daf8-ac1e-746c3daff299,2277751039,14988597627090693227
+973e2260-18e7-f40f-887f-3f018a79ba72,2442264681,2074115728685988730
+69a67e6f-2b40-b78a-ee72-27576b0abf77,3482383192,6095835851265544655
+947ca82f-26d3-076c-c591-a280e386fb36,2546804611,14972257219308112526
+84daa430-9ed2-41b7-b6ed-7bbc4b2d0326,438385610,13040842894703268780
+c2454fbb-4320-fdc9-0760-0ac65939ea20,2060703788,11903456558613978070
+fb4551dc-9a00-04f7-97a3-0596d8329849,405231012,11991102418199786094
+2bb10c23-b09f-750e-f3af-34f057ba96ba,2577254510,480886910931474155
+c40f972a-d9c8-4a1e-c537-4a7f7438ac5f,3989350277,4546737129999076852
+a9796440-a323-8e2c-ea73-da4122840b3c,3821659482,13398324658842505068
+a67e2437-3521-57c9-a12f-e3e083dc7b53,974903075,3265008773342363321
+b882a0af-6b32-1326-8478-aff3167256af,3009455033,9306560115455343259
+a2e7465c-d94e-b20c-e2e4-69d8e3a322a3,939380988,9096459624912766477
+d18ac0c9-ec01-54e0-3c7a-f15e7ce6e34e,274037837,13770095945196161222
+4f246e4c-1f06-a294-700f-b9e09fbc6f1c,3512991697,3372453865454746332
+3ec43ba2-ba0b-c787-e661-778668c0e3c3,2746492251,3397373905740770759
+48b090aa-4b17-c3e4-63de-a8ee09d2f142,1451673810,13132834463929401740
+91191e4c-6772-5302-b10a-b27869d63b26,4284976005,13907859997421082775
+6b2592c3-7fc3-151b-7afe-8cd66cbdaa46,1042876454,15683792411765710528
+5cd50ace-0290-dca0-7f76-4c45c8e01574,3717366402,18119227827128147603
+bdf8c175-1839-f449-048f-726b3ddc19ca,3445384133,7122290568019632384
+079695b3-7852-ed75-0cd2-20db40930a54,3758144304,5963746641862103507
+c2ee1239-d646-a25d-ef42-6f128d7d707f,1831427068,9838510710063527016
+ac865c89-02e3-9d90-a2e1-81dec45eb3d1,4192529505,10818026463986515367
+bb34a216-9273-7364-55fa-1beb15720fd6,261041106,15760560728329313355
+ebcc572d-4110-856f-6f42-efc644168380,3251833609,7690586078866537154
+7b0d3826-514d-ab9b-2a3a-896e5149f5f1,4094050365,12416414038059059775
+46299184-2c38-2d2b-c3e8-f4ab5f1c42ef,261100503,632927732033367043
+9c4466dd-0913-2cab-88c3-6fe75a8d1744,768429447,12225065295452975413
+1d4b6fd5-415a-fa73-88e6-b5f34fd05c01,3502325234,11570521308863272944
+fe884f76-2dfe-4651-73a3-a8a5e3faf5ca,1686066401,2828955349501990759
+26861689-e81e-cbfa-40a5-0004bd48886d,2769880811,11630680163545997639
+40edb7e8-7a19-fc56-035f-bcb1eeef8c80,2241991489,16515594454429217966
+c0f1c3fa-0952-b206-62f4-61d56a2817da,2618556044,1877844071888068065
+db719004-677c-7e9f-33ee-8bc83e015597,3596589179,16737550513350257728
+ea3f94b8-0c70-116c-01dc-fb7d9bc57968,4117381752,13266319911947968066
+af725c2b-ca67-12d7-9c54-bd885c2c7ee5,1076044969,11632287068213965861
+f8dfbeb4-2da5-9fb1-3be9-9260975d25aa,1239003400,12422205548452751868
+e666c809-df8d-09dc-fc57-40dce2c8273a,3308600060,16734762165177865184
+9c7da197-330d-4897-a34b-0973d0a7a24d,2226343654,16049147856443056173
+6bfe79b7-3120-916d-7202-ff15cd26fe24,1415774845,5909660209367345930
+7801db68-3378-27cb-ad20-4240cc1a25c3,2280935294,1761378131271241512
+0bc13aa0-62ef-1efb-e857-b5e2b0e1bcad,2732461782,12803932457534595253
+c53dbcaa-a974-fd8a-6eb4-02b78483721e,877964363,15254912399097260878
+5fc4c3b5-7a74-ebe5-d6cd-3d3d33c37ac9,2158444490,12743847591670809401
+7a8b8629-214a-08db-4216-ca8b52bdbe36,3227258119,7766350533023893351
+cb5bb29c-a1e3-af5d-2fb5-927366ee6e47,2530098617,4077433379803478299
+b5ff800a-b3ca-887e-9ece-8fded0007542,139108061,7132885067696919603
+c8173960-d008-fdd9-93b6-68a487a751aa,3431521141,5110649328383856498
+82f97965-8aab-c433-f151-5458e2263367,2342674543,269605972400830467
+58b24de8-31ab-165e-8454-fad06f6484f9,2315845394,6773184535843990200
+cb3c7079-e5b1-9b07-afe0-ec58ceda04d1,2612651200,1856562333471416965
+bd6e8a8f-0737-4572-dd32-cd3c087933df,480675514,18386015465247275147
+77116f4c-701e-14e7-53e9-55c0c70aeb8a,1076562854,14713956203788901127
+d5213bca-d4da-a7f7-f32f-bcd5e1037453,1383704021,10187528985037544519
+cc608949-7fde-b377-a5ab-6d81af87bc10,1613005819,8971458839544163118
+bf95899b-502d-4920-43b2-14adab90ca2c,2761910850,4737018505185329120
+c797ff41-dd6b-9030-79ac-63f1a0bbb3de,645528293,1626736171775695864
+3ef0a9bd-cd03-a26c-bcd8-500af3239026,739592357,2716423864600765120
+d49a2d5d-c056-09d0-5c05-52023aa90c15,476686234,16791645079314608854
+1f8793a6-5fe6-db72-3f64-2d858e75563b,560083111,7891744036437188222
+f339f128-bc24-0cf6-1e4c-118a60eaa767,3499210597,17799802390329371600
+bf2c6628-218a-bb45-c498-c77ebf81bf91,801010496,2558933738160633386
+219f135d-0a46-d964-e58b-4232f2e313e8,2412194862,9169915877730815899
+fa48a1f2-33a7-47a1-e6ed-04f5aa1c5410,3729208302,6586673091042029442
+5828cf64-6056-49d8-456c-996972af9187,2491355120,15602583962135293123
+29a96992-7318-3d8f-da20-30cd4a576aa1,39032498,18152790749729405118
+0bc6ffee-32ec-965d-19a8-4fee3dc969d2,2981230662,11884148079742565633
+aa457e09-d8f1-f837-dae1-05a46260ea2a,778246103,18399828993897527129
+fc3562b3-2f51-6352-b3c1-4d1d55d38753,1135159050,4930866673606557736
+d9cd1d10-d74b-5525-965b-9557c4000c61,2220984364,14218088859178482684
+fb235743-0979-6b83-e623-9ed21867289e,3079871391,6338801874175442833
+abc417cb-a525-15d2-aedb-d6cdddd3d6a9,3585746322,12721589557892327149
+cb89bef1-23b4-3cae-7c24-e148cac46504,1044544425,10067431050560115473
+9cd79662-3a62-ad88-74e5-928e3c24cf62,191567892,1156958327474130951
+d7d3544d-b407-86df-9d67-bf1173a18def,4278948815,4570286540594599166
+b7db83ef-2fde-28cc-c2fc-a0ff9b39326c,47857712,5290973852271296672
+98172184-21e6-28e4-a1ec-90fdc75d862d,1518681795,600212529242336713
+404c870a-b2a3-2ab7-9199-528ce9096661,884342286,535637432668901083
+9978ee17-1563-7951-823d-740cbf61aaab,326431368,3797140410071689006
+650986e3-41a5-d9bd-12f2-3bea6a80b4ee,1611735026,14189273530420750372
+058ab161-6270-968c-f10d-7010c0ce643a,3548476990,8976682985947696251
+3cbea798-7213-f03b-465e-5944f4533038,3525035410,6143442875630520136
+12f42dcd-4aaf-b0aa-6325-52f82a5904ff,3030913285,5251299275715387171
+5f33b3b4-6927-e057-a816-1c6ec0e63801,3273897725,11065443991546678310
+62111de7-b3ad-0546-77ea-acb7d8953a00,4098628060,4315950041295147575
+ca4706db-ff43-4f3d-3a6a-b69be22a7673,54541051,626670536991602820
+16baf370-ffd4-4c6a-0671-0d54459d1d87,3776728933,5251201156636240399
+ca936573-8255-0494-b4a0-d35fe6f39d82,1242924617,14289057853340667364
+76b4d2a0-b9f3-9c4b-f752-5775918cd212,1073931378,10416960956720883843
+32320a46-168c-e7fd-3bec-3a3ee97c33e7,566678930,5622501795472993483
+d75df028-f58d-cbb6-a030-56b30abe5729,1228447448,16169370588636498110
+f5412ada-6561-281c-3dd7-775667059ef6,3764645262,4253026597277620509
+7f9c027b-df2f-22c9-9066-018f804d3677,2985922818,10974422027033573912
+f4b627c3-7872-5760-1239-0d76cd09e9c6,1937095326,17328748589504468736
+31720de9-2a5f-1c95-1b88-ab775b06b5e2,3309766455,1412305086506690076
+858cbae9-b14f-11a7-1413-9a30dd2eda3c,1013384476,16133590683478946451
+370d3e5c-c251-4fee-ef93-dd93d86c13b7,1151789714,3747681218505215989
+66660910-e157-8c16-59d3-9c13c9487d1c,1026787454,15739939227080642118
+81a85223-63af-8a84-dd8f-63575da76370,2586878238,754038693111254970
+7fba9507-51db-3c4f-3b23-3359d7d68588,2863245036,3631676664973104346
+ba92d803-4fd2-d6bc-71c5-c29b5600a688,1236555063,3188011307373195874
+ea5b97a1-30fe-84ab-d2c3-8cbd8a393420,3610502419,13105084392552841778
+84245f41-c0c8-0c09-86d7-82ce1b853ee8,1669469571,9973801970574109183
+e2f49fcb-fe21-9141-76d4-ddd69efd86ec,2308896764,5202194801358629910
+f41c7f64-c935-c2d8-ff17-552021d49e32,4064656,2448047258131424663
+c0edcee1-1f1b-c4a3-521d-82103737a63a,2717358194,5402272490593149453
+2e29e657-5ab5-c2de-6767-20d46f46015e,2748315086,61052315106416252
+4094444d-933b-50da-2048-f90e49c33489,2964965469,17731444359576416009
+309edf51-238e-83ee-fbad-50e79d44eed2,2964411612,10418973618942456326
+43327a74-d115-9e0f-651c-794d1266aa68,360317428,17339232065589880515
+5a056083-1e47-d119-2af0-970bb5fca9e8,2437828867,14147805974183605578
+a68644b4-99a7-2323-e3af-021f6042844a,304276434,17323134510273807217
+048a3f27-b1d5-4ffd-8437-97b5595f3c81,63472166,1357401599781097180
+71193655-f4ac-cd81-b340-c6d754d2b882,759802282,18294387498900223742
+252e313c-e767-81df-6e2d-397a3d89bf1f,2037812114,17506838450164328188
+272a64a9-6fa1-99f2-d70b-1e17d94aeb26,1510527672,1395048309071672763
+8cf8c0fe-9dee-39ea-eee5-5d52c3bd0285,1914087246,4708057060064298843
+f33ac02c-7e10-971c-b468-a0f1b8f47111,2451636383,11672744980643260906
+29dc0cea-ec2c-cbdc-5bc0-233037a82b9e,4036887138,10556772269766755707
+a284c249-93a4-b4f6-83ca-689b679dac6b,704883450,9885581261285200559
+5ae8cb8e-9949-35ec-59e9-8123f52d65f1,3439241044,6743421532382498300
+f9620259-34ee-2755-d819-d4d758097d70,2355813441,13977110579827338782
+872d35bb-ea6b-452e-8782-b7f811573a1d,4103356270,8411649056626912806
+daca7428-577c-b712-d697-0284678df04e,2469265753,5782276361168532341
+82645e8c-9aa3-9175-aab4-cbd800fa86ac,717430627,7665001709976391421
+52e079f8-3cce-2f3d-c254-e329020f2049,3794597169,1064690905073947070
+90e47331-684d-3779-267f-a8ea535d1ead,2306071663,16263663489735123267
+d2f66377-a32e-4d20-5f79-6f20f18d3e59,1298293255,13297859846104568579
+cc943470-4b56-8ef3-e227-64ddec7b7448,3918403468,16481390655675728481
+8377ff0f-09ba-eae9-5202-5323356d6a8e,321727043,1474493618835328835
+24d1841b-3135-7098-4487-1a84fd88dc8e,3376806818,17351135562360305744
+bc12cda1-b1de-fead-9b10-335fdbd3526f,3738673382,1363133077528382379
+c1739371-3457-05c2-9a92-a9a09b8f3c70,966709777,13968714515999845241
+13995751-e9d8-b930-56e7-8a1b53ada0fc,2107721303,11760514053310982934
+894dba61-f7b8-57f7-b09f-a07520e86f92,4031707126,4034071701875621191
+57b32389-8ac4-cea8-64a7-d13d0ead7182,3615909804,3650770115941368146
+23c9bf3b-d9b1-8087-9e81-0b4343935c59,991912284,12857152499351018895
+0bfeff4d-44c8-4921-efdd-4203b51a7b74,4285440630,9518179880402301863
+3239374a-6f66-4f66-6c8f-c616b37b2bb9,2172292440,16648614564761925090
+228426f8-3069-1184-f8b9-7659937a5dd1,1032726934,8880504700908333999
+6a7a6ff6-b315-4db6-1751-03f54e0f262e,674671142,6034281157227723158
+803f34a7-bcad-570f-8cc5-44074a7c960d,1015707805,13446219536078869966
+a7ac3873-5ae6-e00f-86e1-9f9b6b0c36ed,2507786092,9052341638559690973
+0b733b9d-5638-940f-6ed6-11608a038d06,2431208421,15526250594655634975
+8cd67649-e8c8-2c9b-e58d-33e93446de8c,259856784,66452894455499629
+90314929-426c-b20f-1fd6-15ff4ffb8c7c,1233561640,17632771654774960127
+7ee162c9-60eb-7234-2230-e9c55ccb6b5c,1261864575,6214348755915097414
+00a76b72-e15d-b308-cade-787ad8754361,2139387423,762622516969828944
+c95d74d6-84a9-7eb4-e7b0-c335e5b22cbc,1482025535,18340990439668537332
+6cb166cd-e1d6-3471-a5aa-81970f70a2b5,815872329,9678768930386835113
+93bfdb3f-0b1d-5583-24c1-ac3cdde7b0ed,2728861605,13470607744388349935
+f7bfd64e-ecf5-cf9e-54f7-c22ae3f39f4f,1551161756,5741940591966292593
+3097d2b5-9e9c-698c-4052-fdffe8852daa,752906992,3744598647085171779
+b3b3885e-b09b-4661-33b9-67fab8e80f59,3049834629,3511834286555451682
+3c7ac3d9-9ef1-908d-9a5c-4dff79717a56,3588462049,5259308570145635415
+6f0abc64-9792-c2bb-55b7-67e4c9792e3b,1780157318,3252802899547929454
+2e429aae-2409-18d9-7a72-7b2666c5248a,1478262031,14107138800800881174
+8d162ca5-3294-8a27-a2e9-00ba2cd83213,2739111308,7256186862612514262
+f0a7e3f0-25e5-7065-adc8-62e37f59cd60,878004561,6956880659022344264
+0e4457b6-4425-57d3-5bc2-a945ce431f36,3562435920,17662172641147295758
+2b06c863-c90d-f818-e8fc-051f64b7430e,3028984698,15299773985866572507
+dcda999b-87dd-329b-c5dc-c9816df141fe,3907047398,17553840015692937293
+8e72b517-eb31-913f-44b2-09b33dfa99b0,1964304137,4480503173427278056
+834e230c-9e74-b48a-29fb-adae7b37d59b,846400630,12428441564083061713
+fb64b7be-ef12-c2c5-0e14-cf9f82ad6c79,2088862903,10295408912462630402
+77634492-0304-1dd8-cdd0-928aadc87c16,396678030,14140965836730156433
+8e4e93dd-71c2-3cc6-45d3-9346ee96635c,739553431,14623784075566946252
+aba12870-f2fb-7ce4-d449-6d948797b9b0,187187148,600048387433547299
+80747637-deac-a99b-898c-569139fc80a1,1735694693,5141199998471910422
+c77822dd-e1b9-9394-01fa-3fb8d0c6ba84,2231794627,10309967256334367157
+436ff8dc-b91a-7c55-2f0b-ddc88603cd75,2493403008,17739699174626702779
+40b71bc3-333f-ea09-6d98-e5c745d49ef0,168628015,7781526809507939320
+2eeb8c2d-d740-0d4f-e3a3-e6f239495519,1570275376,5991233940089182694
+80e214eb-6690-8d15-c303-21ceac73ac42,397990715,8731329678698858540
+dcbf06e4-e362-2c7d-c5c1-392d8e60d7bb,915277234,13429388027681701080
+bebad3b8-2bfb-7759-6ee1-c67da066abfa,3623128513,5544173775658048869
+d8ca933c-c50d-05de-9cbc-e62b600ce57b,1807442690,10442836025298440867
+fdb5814a-b507-c003-6e44-ece576d00134,3730035520,9963713850542554406
+fe7038e5-18c5-43e7-eab8-184aebe17ae4,3344173326,16567698646857704744
+359a4a86-14f5-ffe3-bf91-aa1e921b88d7,2365084175,8150062451446097526
+d8cb8f1d-c7ad-4624-8911-8fdc4dda90d2,3780243499,1757389844759764583
+6929da72-c994-745e-fd76-8b95fb6c65a6,3298567269,9266099996633260243
+6226eb1d-eb3d-8ddc-894c-58c3ac394a15,539209619,17143733479495552139
+07437c3d-3271-1563-83de-6d18a1ac445f,3950481076,5197189690779524542
+a4e6fda7-867e-a8be-fe2c-71c2434238a3,3068784915,18392758060825491973
+15dee453-10d0-52cd-a3e0-e6bc744424f5,1753086880,10273336714583028962
+f2106924-dd0b-8e28-566a-e31cbdfe570a,2026883031,1434689904882431221
+89f1404c-2c53-dddc-ffb4-5829b96bc6fa,2816053496,1587214692834035840
+8bfe5b1a-8688-121a-d1fb-e6d55832e505,1833647983,17241902990726064229
+b76fc6d3-28cd-f53b-553d-39cd016c14e7,217042811,18400270324754292862
+a03ead86-bc6e-2f98-60b9-5187fb5cf280,4003423140,15273510453066320401
+beaa0440-ef2b-0863-ecb8-6014e06003ab,2223617360,4187958411447796462
+e5e45874-ece3-2a89-635d-96ed48736e7a,1973997713,2879807179290728431
+faf4d4b8-d38a-9ace-b8b4-0dbed1a297be,3896901954,7203830456179443745
+371d6137-46e2-d600-5849-1cabe67334d0,2503432292,1946067170904207602
+2cd670fc-010b-da2e-cc9e-258699ae6d46,2342439780,13485061712911475015
+6c60de44-a77f-458c-a730-c849f7d18849,144033027,9332125803344599350
+c1fcc8bc-e116-2770-2790-bbf103cf8bb1,2254262785,4684335047375766606
+95a6f7fd-660d-849a-bb38-cc1f1daa6edd,4111120243,8061301993810491365
+2c16f1d9-dfd6-17f1-1992-70857d0a34df,2891627827,14402274078604343096
+c7e13e78-9db4-22c8-3135-7fa6b4c22057,1152032254,2276975843722960689
+b42420f4-5e79-f68d-0b99-53eab606c7de,2274818609,1673909701239034724
+b5e1742b-fd9d-b152-762f-d713458d29c7,324263072,6165460115634880507
+7b0fca70-2ea2-ed93-9762-5dd69f2bcaa9,3189341018,17418496165438173431
+d5872493-b498-ad0e-2849-e71f21d08fd3,3112178259,3327552876130333829
+5d02e672-8998-e97e-35a3-b8077e096ecd,1910315370,10355283579301337524
+91a7c4ae-2b11-74f6-498d-4430146b7519,3580184342,3250304909148853834
+28ca0bf2-1024-7b23-4427-089a7600c34b,3854460063,2677287631632152599
+0b726407-dd94-4ba2-3522-47ecc1e00f1b,1061647289,12191490605957583101
+472dbf95-f95a-e65e-5dff-ec9e8a9121e4,520896481,1851535332547645813
+e902409d-fdfb-e179-e764-a10e4b79bb6c,1939984222,17864403019372074595
+38b366b5-0d35-8ac3-1794-b4b5acaf245b,2915153775,7534741662885938212
+99ff6f01-8ead-f9c6-d442-a1b601b002a2,3774212205,10145905342093226387
+def34278-e5ff-9f70-63fa-b2b9fad2634e,1695513804,14813785974014539074
+d393909a-3f1f-41b4-c963-ef9a941d7776,1139501112,4072218427195121015
+ea9a617e-8027-7868-036a-be31cd7b6067,4113952450,10811009082596879415
+a79d506a-f292-2b33-0859-b7ef46d1a9ac,3367335509,1571495023730285042
+09c1fffd-4fbb-b663-5481-9c5d0ff8a778,3391198159,1183744141849023990
+74520783-bdf3-0e9d-a45a-50eb17a68bcb,3734315547,2839420206070144835
+80583142-4151-246c-480e-66648d3c7d27,1301329266,15521609671626641752
+1822beec-4671-b848-77e7-932746e558fa,98619233,17153048883416531559
+1551313a-8b0a-7b1b-076f-a9a59f1654f3,546216919,13208080886568864027
+eeeca74d-01aa-57ce-c09e-1e8cd5f88d06,1344461982,5183407787121410310
+16d93492-94fc-41f8-9f28-be1b27889729,1614303050,8379312535766043423
+68575725-5b51-f23b-b11a-a349db47d6d7,1706294773,522049731343527752
+4a4cf0e7-0431-397f-5630-256c36432940,1833396006,7121170712166906783
+ed5e1bef-9dc7-47d2-df0b-ef6d33a94969,3835191420,11027158282224744722
+65e720bb-8086-94b7-fc1a-6f9e6eaa92b7,2116699165,16845755502468726191
+6279c738-b397-4dda-bb2e-1fda5ddabdd3,1532542973,3739485799965565266
+16cfd63b-a939-5262-e5c2-ad93d19cefe6,2361647715,13528586230931088785
+112feceb-b8d9-15e8-35b9-3bede828edc9,4065900986,12109127233382191175
+9e044573-0431-8ff2-b8b1-029785fd06e4,1496676017,11522300072586976692
+42c730aa-9194-7158-86b0-c840e53ce5b1,2630488709,11839170849651119770
+83addaa2-a246-668e-2304-16438b326c7f,4137358896,7092603441139687008
+ea816a8d-bb85-7479-464d-43b7161f8768,3620820690,11501771070659729361
+1e9085ca-fa3b-cce4-a12c-975beddb06d7,2790395558,5625148637650281602
+7b16c85a-9e84-0701-341b-e204f0ef65dd,4201447607,13890462127651045379
+5a3dab8f-dfee-0060-9864-c39845a04645,19040789,3220809755544287992
+493e38ad-d0d0-05bc-084f-257902c21538,4057826625,8726138673202540243
+7992818c-f2d5-a06b-bc92-496684532ca1,3340250817,9779699985150265035
+398c1c2c-5748-9e72-6d34-4da1f73b2806,162274395,16068097955643617520
+7486ef5d-a956-36ea-e947-b385a2b6ea32,270777415,1407580640245969229
+a91a36ab-8abc-b19e-f30d-b2fea5a45e71,905042586,7876554215703088
+fcb8a70d-70c6-59a4-e99f-bfecabc382b0,1648537780,6902332907244764496
+2fdb0f1d-8c03-f343-963e-a18860569407,826407575,13045000693915909666
+fba7b6f6-b75a-5d28-004d-45b195546e11,1779862773,2772979163239255878
+0969081c-f5e7-0b2e-749c-29f12806ce68,725438551,12988677590123065540
+b6309582-a480-82b1-7328-dace56eb5a0d,2397013558,17753305189897055306
+1ca2408a-ed0a-df16-516d-7e8ddadef941,1649352546,9229880951301995281
+83ed2cce-e81e-041b-1642-bcdc82ae3faa,2411335450,11714691758456095242
+8bfb5eda-0a85-d82f-dce7-18d1581d91ee,3857189489,4815724388296647808
+95725574-8184-4ab5-e91c-c96b3742046e,1330999115,9029466359811651955
+898c02bf-45a8-ab90-407d-a1e5eb230187,3875360453,3153326889199263043
+403b6d49-de94-fe7c-8ac8-7c89b82e602f,927145732,10766279121426806145
+a3baf03b-421d-71a4-ef12-b3a7462faea5,1700705356,8560429131376064282
+e65af94f-894c-7adf-443a-be83781bbb7f,2511434480,14168982057503880768
+9e0b261f-8fe9-cc8c-e38e-6bf96625d7c2,913264453,10630211869300527398
+06890914-43b3-bb97-bd31-9d1d833fa56f,1980625316,12796896474245625270
+37c1b274-37d2-2b3b-9edd-b01201a5d910,2886822438,13022164226662896998
+926447a7-c95d-3902-f8a8-fda1d8a37050,2405923083,3448432773893306779
+2ae301ef-9743-d896-0fde-89b3be629078,3688350625,2604860154574224406
+79a9f478-42c8-5cba-1956-3ad0f8603b95,2442785985,3783013086527179417
+7da10587-a706-fe03-c8c3-b682d9700791,139901163,1866360955187490467
+59f9652a-5bf9-cd21-f940-87bc543d62c7,479059188,9099413702476011629
+67975d03-bb61-38bc-06a4-03a04b135ecd,834412152,5418750850317687608
+81682c1e-2de8-22d0-80dd-d793face6f95,3335814844,4199116800688993718
+741edbbe-a331-4116-ebc4-24f1db05c6db,207998871,2243136486010976104
+7061f2ea-6965-ca9c-3540-b3972a775ed1,233345365,3913973580524234893
+afd9dddb-564d-238c-ea42-681d9e2a1456,2846495788,8212708374514975589
+ada4a425-8a9d-6b5f-0b63-e8c0d2957514,1512930206,7529450971924129404
+bf4916c3-a68b-9a4d-5c57-1d8254ff42da,544094966,8249643409565588409
+a38f8496-2433-ae12-8cc0-151505911d94,3889398757,7027667384141925621
+ec323986-481d-568e-6884-e8351645171a,1852437220,8297681817451689403
+c1cfcbda-4246-ea5a-66a4-7f7840d302a1,2250026495,10594839976624549330
+0428289e-7162-1bd7-bbdf-af026b8e8345,3472058627,6679427231545838514
+20441e43-6370-b597-3499-4863624556ac,4056570448,5635979421007579836
+49d9ce86-b87f-1ac0-8580-517551c164a9,3857322746,129763427460697531
+b67f5b8f-60cd-403f-7f9d-5e653fa830c5,4106985771,10891467033276341428
+dbeea043-0c0f-8388-21e1-226e0a2253c6,454936757,15410749075052894322
+5a2eb24f-ca8f-2718-2aa3-d40a444679e9,2764622260,13422430677848521201
+72d39bef-04aa-dbc2-8dd5-82b09dbeb214,789757187,18439974259984230665
+3290b8ac-79b7-4e62-bedc-1d3447caf004,3634379336,14485842342104812216
+af271fd2-5c2f-c92b-a21e-a0955b3f3fad,3297877497,13849875090180606702
+a8f4124a-0b2d-f61e-b4e2-69b01e26f6c3,2758255318,12841659093015423937
+dd42b52e-25d0-1740-a73f-9df824deb7f8,4226765087,9645883446693977642
+9a8bfea8-a298-d802-2f57-51cae57b26ce,1976641696,7270457330089689723
+5aeeb6b0-0a96-bedb-8088-f22e984601d1,3774783753,16702956987362014902
+c976f481-6b83-17e4-3e62-ab0ce285b02d,1328819723,17796403089273612150
+116cb71c-bd73-b4de-19d9-8e1955cb4729,48310446,9923068030435638954
+896dc5a3-7ba5-8091-2850-e85de15249dd,1223076853,7570300502144691231
+c49ae0b7-fd0c-555d-c208-ff94545e76f8,3580833462,9678305250398257213
+78056892-11b9-0e16-7788-aa39b6372735,986310477,10485128428834549688
+97f105c4-8877-0152-a19c-fbe0c91c8c4a,3903272549,2981078540355830198
+ea7c38b3-8bcd-bdcc-c160-75a60666512c,2184972803,9849695711338767342
+76b306f2-5879-2736-e32b-e3d012929320,2928470182,18130605588598427036
+3b8371d6-b5f6-fbf2-7573-66e1b76e16ef,2385344705,2248120343067881447
+0e9b8b7d-7ed7-2e22-b264-a822cc7312d9,3137518499,6670377079608569448
+e30d06b9-17df-113d-312d-458eae1af307,1081346842,12248378749930067874
+d5737cd6-1f41-8240-1699-2390aa4d510b,4107219719,4930411278119074361
+575a6c59-75b2-901a-a799-7979f56f4a05,1228938516,3875612541482739236
+0959790e-4e91-feff-f59b-098aa20b9c88,3795666740,16825238663896562870
+13b14853-c088-0f5e-5bac-8faa026c7a0d,726194326,8601909363828129863
+c8074874-33c5-075c-5fc2-3835ecd8a0b4,1621678531,1400890950771397967
+d7bb068a-85b3-5e7a-2603-34c337e0a050,3509670595,14333761130642755212
+02a08d63-56e6-3ae0-6691-ca831436752d,2511784865,5341477503325981624
+e292e245-1d86-ff06-7c0e-2465aeb48759,1948531123,658248998713061658
+1585d6f3-038f-3824-607c-851e13bada47,3524761626,13679011576620825949
+9d0f9dfd-2675-27bc-0e13-bfbd95782d33,2452848486,5194814856319587205
+1a4037d1-d947-3817-1427-d3a2ff756889,1078052761,6393846837521571188
+4346fa64-4094-953f-0af8-3a5939ba0a34,4070565630,3606509897653351456
+a63b7ace-13af-c0b4-4f8d-264c691b0477,3920447736,9629547260749065140
+a442b2ca-f321-41b9-3ce2-e674bbd8d44c,728315570,6262196699093227851
+4321b891-4306-42aa-93de-411d8174e8e5,1016321810,120569410666878332
+407a0eaf-8b67-7e63-facf-03e6c7b3fbfe,1284218060,13607970655237152878
+b834e99c-d12d-3fd4-ef1d-817f5d2ecfc1,2332306220,15294904960713740767
+cc959a6e-9cd0-98ff-5980-ebc1654ea6bb,2693885983,15933413938722337998
+afadb1e0-6063-f3f1-fae8-b4616374be2e,1769502467,16055091039954766848
+e2e32f6e-211d-dbb0-a5df-62deb429ad9c,3551774394,2007201429841145963
+dc9fb180-a681-ad6e-ff69-1e5c5797aa88,460777912,6356780763520535806
+b09f1ab9-05d0-0bac-7c4d-bae83d4eb7de,342405227,15126662879620659410
+5d50ff52-20e8-da87-ecef-f47464167e0d,4153925277,2934297131620006998
+53b9e5f4-5716-497f-db9f-3e9957969b4e,3526895254,6596530704647300899
+cc0b8cb9-bd5f-668f-8a3f-756361892395,3781954202,3011983691088485516
+c7981378-95ee-00e3-d2ca-0479c74c10ab,1034137275,7684434521291553148
+a4a61764-0581-0456-ee30-9dbfc80d274d,2377024865,14951057332724330293
+0bcfb9ce-f0f2-2976-43df-24890806aaf8,2957043694,14604837696721721580
+507d52f4-fa9e-ab39-630e-7c9b3f3a0ab0,410996485,11120492670408909476
+56657936-7322-4493-bdde-cd4923c3b2cc,750597053,12690832541770796109
+b8b86a9b-8d36-9962-2d97-c5c780430438,1541862217,3975542960973589
+bf728112-c882-8cea-5aa8-23059189b4f0,3149584660,6693676563817603002
+a2fe28f6-ea8a-edbd-41f2-2ce0fb142f7f,4008408006,2760159114336154248
+a21c6e22-741f-c503-a738-549bc51c9246,3319832103,13295123191921166693
+c182ce6b-8829-c99b-451e-ee56a541e64d,1992787540,6058938005950428409
+04981a64-0881-892a-d958-c49b46337921,2214798573,13175396276861206715
+a5f358d2-5f0d-d4e3-06cb-52ffd4443a2d,4192236733,10399571806258692295
+534f3841-4eaa-7d35-b287-495a61b47236,2366496946,17100798424501535675
+cddbd073-5b7b-6c1c-ad7b-cf9520d04d34,2518926258,15097115553341581346
+0445bee7-a8af-584a-39e5-65cc9f78e34d,221135649,14578109257588723752
+adab48b7-0be3-9f12-e0ec-9679ab1cdfc8,3182611278,18001121497384036228
+92375685-6b52-936e-8f85-f3ff746c5f20,2633578847,7519617152854004010
+94b95c01-a398-14a0-e30e-958347935cc1,2478968966,2146128629265159675
+1f935a75-1c06-f78c-6754-18c2d24161c3,246633776,16658085201065407209
+53d3020a-7cbb-ef74-4f40-0c29a00be9b6,2253004058,87729050078825801
+a017d2c8-fc59-c3ea-a268-b213dc548ee3,1648258100,6570106514674744393
+e966037e-4e02-b2ac-df20-478f3e74b782,2864018910,15461956392485900481
+d5c7401a-5ec4-19f5-3cfc-8ee69952b787,124136252,11801010636556306235
+21c43fe5-2910-7b7d-620c-9b035a4be3d3,2327397643,4286247230597604464
+a1ceecff-7436-8684-43b6-15e08c691c96,1038486087,1584226166724522015
+2a9aff7b-1798-f7ae-cc18-1b503fe37000,59965225,17212149433117728668
+c2b3744f-a72a-1c6a-2bae-377f5953c6c3,1554014493,2747904474396645980
+e4ea5050-2931-be1a-b108-40b6d26f6f1d,3431845825,6208912181137473360
+2e047f5b-4c06-a8bf-11c8-89ea417041bc,1467272247,3107111682554433013
+d5cc5cdf-da36-4ece-8be2-d42a8d040038,4131409909,13686389985760205274
+0696e8b6-b374-77c5-4d75-362313ccb84a,3861142089,9133684586213131723
+d1357e5a-b424-b60f-cba2-66c51c17bf9f,2531384010,7173691133661653871
+140efeac-8716-9ffa-2c0c-0f13aec5da14,3705629428,12103458159218833441
+1408dd83-5b03-2c85-e93b-786efb42bb2f,3376497927,15218416757373830591
+8aef9869-f8b0-e5f2-d575-af0f86dca60b,365061675,1287387568140607360
+abeb18c8-8adb-6fc2-81b6-1c5479252efc,1349833885,7321817850437868388
+97c0ac0b-478d-bc7f-09f5-2d53696fbcab,2496269245,15103984249669073729
+199f03e7-0ef4-ef7b-d649-c4574b6c4225,2531956236,11410719249438642892
+376d8e7d-cede-3b07-e2af-85a030e35149,1417783446,2138044905282721752
+10f68a02-fe86-c746-b19a-16eb25c33a1d,2056180497,12483037844070582757
+aafebd62-2123-090a-700e-f60f50349834,1094787039,14865549601322418339
+f0efad32-5b65-337d-9cad-a5de3feedab4,425513697,15324676344731088019
+bc85278e-dcd1-b348-22ec-9fcc96c44078,2824595280,11546559377058954011
+6deef676-b062-7472-9721-dd707e7512de,1757393967,18345175051950520756
+375cb977-d63d-68e1-8d9e-d087d03d0380,1145970424,9509671829881355098
+ef5a4b4e-2e23-558a-4463-bcff02457fd0,3422465987,8823723599849914144
+3bd5ee89-c622-a571-5304-dd3f94ac1328,98769348,3473610726576512055
+4e32bc79-b746-f367-df7a-40465ce28a00,48629576,12668167066678688495
+50c51251-f3e1-2232-c27c-2fc24d6bbbdd,4036906296,14119940356353118010
+cd4a26c1-ed11-df04-dd3e-f01795000dcd,782260555,11755543205582121835
+53f456bb-6759-818e-f8e0-b9386e6f5a87,3811393454,12901088878030735633
+e189ebe2-fb81-ecf1-9d15-c999bb3cec3d,1627794170,7746921904836695146
+bd736f15-a6c4-618a-c56f-0b70c7e03690,1592205101,12403032174846815718
+0603c73f-4ea2-ee4c-630b-9c3bd0ce2f3d,3793514036,12365629204758103794
+22050a7e-094a-99f0-1d92-41deee994293,1537380033,17568676927610709431
+7a10bad6-52e9-a6d1-a1da-7acc31eac7ff,70771602,6728539604389886190
+b7a37439-65c5-defa-ba6f-247928baa4c7,2512054955,628898275869103623
+c2e50978-0400-c2f3-f9b2-5a2f03b02a78,964843274,2983034831864909888
+4e33ea04-26e9-e601-7e28-2830e8ae19ab,1851010916,13413072504509750138
+561aba4d-d4f1-2140-8b91-4e2a98ae8f10,2655594167,15581306091161242800
+af5cb020-8bf7-bc67-3448-4a01211b5e8a,1118861263,5781905825956883203
+cddff0e8-c956-cea8-ecc9-0ae113c77d67,2715297716,15238771022130158364
+2f2ac590-79e9-0e7c-5793-a03a3f851e47,1138609456,9066426801081725859
+c334cbe9-bd14-239d-df91-ba0e1cb0f319,409448954,13802329709479344935
+1c8a1100-61e5-7477-1133-cc347f220850,642356250,12047759127053617394
+625206ad-dec6-2d66-8880-bb1b5290503e,725371535,9752981339125220113
+37c1fb38-356a-d94e-83b9-f7a5d8c56081,1215115270,11777208907090111397
+9f705f5c-ecc6-e916-5449-0aeea214c36a,1186762716,14015619492534318548
+6918e7ab-abed-0ba9-9c79-2a743e17db01,2897529287,15783280057480953468
+48e35e73-dbb2-09e5-2659-d3ddc752fea5,950236785,11647337180643047870
+c911db3b-e222-f019-aae7-358109a5e5de,1474662546,3509687447126015618
+9a18b652-9554-607d-0fc2-dbfd66edfc1b,1016682928,955758445638945904
+6657348a-9207-887b-81bb-aa9f9ba8a4ef,3384102300,14553762621816061577
+178efd5f-f6af-0cbd-2d76-3ec15da38164,2725763179,5988412351771433231
+fcbd53a5-00f9-0fce-476c-328e70e80bce,2700527750,17937548115468606527
+65d346f8-7b85-defa-0c21-c0495ed7a0bd,3355552116,17124359953897569207
+c356b4c7-ac17-4796-9dbd-abe3d820c087,3460800287,11093268291516152794
+db81d1a8-8ab4-9e43-57cf-360726ad7f38,2084634245,3169912888285665413
+8203def1-2d72-ccfe-8ded-40398de2f59e,1754548158,3384394727132396285
+3ca74dcd-195c-0b93-4e1f-6c23ccdd55ca,793843341,15477850588213888675
+e821a0dc-0464-9b60-cea5-8ea339da34ea,4212227005,8045645196989565033
+888a618d-a84d-51cf-2d5f-f8753585a4dc,2892448308,17455674665307472336
+620c36d6-a9d9-59bf-97b6-2a04ae287361,307177238,16729433848261628098
+cb6a1dc6-1e75-5150-19ad-ec80b83f8ee6,1817003500,10884647749811187077
+779d914c-87a8-2d24-2d2f-05313ba54e75,4163386048,2839902237208619364
+651d9c63-ff28-0394-f587-6c433dd4ada7,3338553595,13288590612439260127
+2567587a-deba-e650-0e9c-f63cbd3ee79e,2856038310,1091614565637505803
+b977c502-2fe1-6f55-6abc-df7eeefb0ee9,2012833993,3112434799606014477
+f5e7f905-43cf-cbca-c74a-b946e6ecd717,511923461,4675241427036567238
+4c598e3a-cae1-506b-d3a6-125f13a01404,1680293615,7965138548368676887
+118a1d63-9e0d-8793-5ce8-7b8452623e65,3399698493,12375077849982438568
+a3ce613c-6384-0c51-6ecc-f1242033f309,2886146671,3944701767584714187
+53516cd1-f69e-19d2-5e7b-daf72f2efa6d,1016994581,11218123643993128728
+67831dc6-18b1-cd61-e7f9-224eb5cfeb56,3708705803,8482994583400453530
+7b03a12f-29e6-009a-e22f-4effb4f24f97,1151944338,14709629677786531872
+145b4313-0167-562a-6923-8faf314202b3,625455327,17077838447816453763
+43fea1e0-5b79-73cb-4b19-a464bee344ba,187135519,17997181398555798275
+93dafa57-bbe0-b768-e616-778f20ac30fd,3013811173,11136051099619667679
+7c98c815-b73c-a805-534f-0b3c96d62ef9,101169323,18379076307467269781
+b97842d5-0dc6-dc57-8881-5f7f7d766851,2089926148,3901216550179077045
+8ee7cd79-70b4-c7fb-011f-f4e5e54af19e,481548735,17046084026342415803
+981c6ef5-c998-26f3-bea3-5bbf142ffd8b,2918051209,9609149754533604120
+bdb6b98d-a890-7945-c964-7e064f1d69a6,2460923639,1953614190259482845
+43b180ad-125a-7695-e579-069adc2ad7b0,3568356941,5817901248822290727
+22b754b3-6132-2fcd-68e4-df997469e4cf,2698881305,6886922127902342548
+9547cced-67d9-17b4-d0db-3620b15c2cf0,2594745589,11811504438198747840
+7d0947d6-e66a-0336-e233-e3cdec1d32f8,2359926600,8977016074219405386
+6afda61a-70d5-76c2-fe85-b61af5ff1231,3423369709,298380444063907559
+5f32cd38-0b53-d0f9-66e7-87696b4eedc0,1155880676,12753589878338907227
+1a0a7386-ce44-6aea-d72c-cac823efa408,1704516425,4603444974935693460
+4e59a408-7218-864a-f476-7765dbcfa384,649393087,16659836320837187801
+d211461c-3770-b2ac-f3f9-13bacd4300b7,3484158126,13733915709139301541
+c36b03ba-c77b-6f69-e2c6-33d328b2af02,3710201946,17256188453416834675
+7384f756-ad32-8797-b5ab-f4b05d18495f,827933861,1036995701374999118
+04ac398d-5284-a47c-e2de-98c891ca8497,2009799676,13897118314334712219
+38239bfa-00a1-9509-485a-cd83af6ec7a7,2415322925,458887665474567075
+efd79b73-7feb-5fde-b7f5-872e4b0718ec,1444653639,3784027946057007968
+ca48a38a-09a0-2630-fa00-caeedb76e1bb,1043279796,11611260490917434748
+d9d0fcf8-b45b-878d-887c-a0cc5c0a4047,415194539,11588123665929589498
+e5c375a2-089f-af00-f915-43f68031c185,3711512804,13380970697430816626
+6078e32e-8e26-165b-67de-b36d43f92198,776649431,14359451588507291669
+c4fb8237-15a5-c0d8-9f2b-78c26193ebfa,3531254758,11169790022046211800
+f01e0c35-6d5a-ecd6-87b1-3555faee3ed1,3187426602,14762316027545499783
+285af1c8-e934-fc3d-41f7-046c28c0d431,758445149,5649315997549315700
+0d0020ab-6066-0640-bfc5-7420431d38e6,1796205637,10861520056336093657
+f3bdbed4-c9fd-8a3a-fca6-811b0f4e917a,3837048701,14521201865265948550
+39304755-fc7d-983c-5b0e-853fa7cca26b,3273913946,9340630854870508775
+5d15ef48-420f-dda5-88a5-363f5f4b61f6,1911858051,13382604131482532124
+63de7958-3a2e-3bbf-b33f-537dc6e048f2,2910999466,15779908077512456899
+0aa28966-1acf-3bc5-d9c2-377d5b014666,779588848,7172253573303072212
+0c1be9a6-f5f9-6485-c948-55a5047febec,35452039,10203050532854880517
+c3330853-80eb-48b3-fc70-1e3b17073adc,1151775032,10352805881923200465
+b2c705df-bc93-0be4-fd98-1fb584a20a5f,1729640049,5718267794299906559
+834611f5-0ebb-048e-794f-b1f4891e8cc8,3060552610,7549570287786855227
+7093edf4-6ae9-0b34-4d4b-ff64dc716f8d,3247089095,16426101335912480348
+48d62bad-bad1-fc88-b072-b68b2dae5491,1738308539,11575098941436846488
+bf3d390a-9f1b-19a2-f4c1-4e081e80154f,3302727569,1316182358439061089
+ad498cf5-9f74-cd84-30b8-112d12c2adb1,1018562255,7653119786633651501
+3158641c-b251-fe29-6918-29508341892f,2023675541,3628673234484799437
+4d0843d8-f81e-b385-5c3f-cd97d86943e9,437076271,8146212766950067684
+a601b4ea-fc4d-8897-2cac-cc2a5dbaa06b,2508117205,6978262233615631862
+a4b36193-1115-0ea3-6cc6-03a2b6c4d810,474150095,8796594790116209008
+2afc24bd-0527-7043-7953-816cc4064efc,1939585966,14157342960503553473
+8af3d8af-c30e-6cb6-adb8-27b5d501dfb3,252546068,829166529515000474
+6914958c-5353-eefe-5893-d1c9f633402b,1375655973,8146156227254047907
+efc38afa-3b9e-b393-0498-637a4f705605,3663559528,4740425568305432705
+ebbba92b-6eef-0319-3600-bd75f32e5b05,834154841,13906183482191603821
+92c64561-0143-fd4b-d6c4-165ec96589c8,481523234,16485360603006982900
+bfc1348d-615b-6bca-a30a-572441577acf,398985483,14478808662083503089
+6dd1078b-5f5f-d9aa-2204-cf034dcd31c6,11629294,4928094568181897426
+94246f37-3c64-6dc4-9c6e-5e5b65a094a6,2739559842,9112389613824982451
+13dee156-5ddf-7b5a-7562-7296a34d8a9e,2987575172,7918041677185149451
+8a6a083a-797c-8a9e-0a1a-2c80026d655d,107074357,498195344525093783
+c63ada97-b4e7-d8c2-2ab4-23cdd978a27c,2006228678,12881691695278573468
+40614181-7647-dc15-5e8f-016d069aaf47,2570774163,14797607157428752174
+4a372eea-d094-9427-87bf-b5f08e3415e0,1887192475,3739962213285717412
+f5bdfbbf-537d-1a5f-5a52-1518eb6c5e50,2082858794,8248534653030967289
+98a3e635-d268-2fde-e83d-21fd75d49172,1866964983,11389069957439448545
+476d8a46-1ccc-2f5f-94f9-869bbdc07b89,4171294633,4206134805080591820
+9ac020a7-6f3b-576c-5210-4a6a5093f318,250875307,17310768152646447355
+ba9193a8-bb32-2376-74f8-01ebcef989c9,480002550,6140360918480665329
+96eb1dbc-81e5-04d8-8b2a-c527dc07efb3,3387634815,15875978880555866142
+a4a0eac4-d6d1-0db4-5089-be8857a6c299,1008270829,18126872156861128863
+634b3754-64cf-89e4-5de3-2e6bff6b5ab6,3445003145,5268261898959602992
+4c0e2b96-ea24-f08a-9c50-370f6ea8ec0f,1652359629,6937242474598258153
+025c5a87-77d6-b4c8-096b-ec0b4a6129a2,3568365932,11105946968332066620
+480af1a0-ab75-8831-1e8e-cbce517aecc8,1649014915,3600477089899555535
+b884ce97-7e44-3a1d-6a28-411e5ec6a4c0,79243236,9817631497000046264
+356d8976-cbef-3e48-c209-191cde55eb8e,3061094425,6928075582412464900
+4b95b2a6-eb4c-399f-2bd0-eab29a7657b5,424976866,17613578329575509601
+091b96ad-0fe0-1409-2d45-fbd051b1b868,3521423855,4421116726326418082
+8714a8b4-290f-e907-7c7b-1e2ad685f94b,748469823,2622424640421769806
+780ecd11-a5a4-0e82-506e-38ed7d30d975,2215748151,3740117654686035479
+63e7d715-5d6e-99e5-e0bc-00d490c8f7de,2508568548,18330167449790614906
+dd56d8b9-dc0a-6c86-e7ff-a8942b78db4d,358487025,1666435553710899208
+13685ed9-3c62-b2a6-7286-af7316396b00,1345299526,14991127048599497729
+40fbf930-e2f9-8fef-efd3-b6c9177ddbfe,570177781,1568026545155160080
+eea73d2e-db83-a4be-9895-61bf55663941,2333777223,2684266259541294738
+bc99e0cd-534d-9a37-8b95-50e8a2329752,1010630411,12696834477310367994
+489aaf30-0992-4af0-48f5-ba00f6633013,800789223,3479924540155598882
+1fa9458c-92ca-dd5f-ed9f-3cbb9d12d433,3665473295,3699277847011273543
+fffc8c76-a9bf-f75d-c720-9933559733db,2862031693,15586912639181741511
+eb2787e8-f3c0-6933-8436-d345224d570b,1063595521,49005819243856316
+1af3afeb-5dd3-7558-2026-1f263fd92e25,1064437367,2405953314974311775
+79f051f2-c6c8-52c6-b1f5-018ad7bbf396,2722691996,6067379021229071138
+918d0155-181d-5557-a549-19fa70061e19,652007518,3613659407219534025
+f996d74b-bd5b-a6fc-3691-a49402fa79e1,988415137,15824823738378571544
+0fe7af74-ff5e-2d5f-e6da-8440e49e53bf,1440755444,6113481153255557028
+1f653844-3559-459d-c2a6-dcf5c2603186,2396708903,5430512699588264079
+991cafd5-eb6b-ed2c-ac05-6da63500f856,1395417260,6499666300868903689
+eea18773-e5b4-e7ef-a904-5d31575b337d,2560236121,4645945321418792797
+39ff22c1-7175-6626-aa7e-cd42e86a4965,3108690010,6246848098065770540
+c97dcce4-c623-22be-3484-13a1bd87cb66,3269517773,5935419414583045154
+979c279c-2b1a-88cd-0efa-061ff9695fa7,3468027682,5411745775547406505
+89bfba81-ed84-3446-bda8-5ca231d85ed6,3889197322,17322896012396229960
+9c339b20-b726-b651-4532-2ab29d6c1445,3433579417,458607142255994770
+934c7a6d-1530-f640-ec1b-241ab08b17ad,2824561973,8875176878325722396
+cd7b4522-8502-72e8-eca4-3b7de404273a,1373029659,10404584967801020032
+01fca79b-467d-bc66-05e0-8ec0a343fafe,2392504668,2184871593590699709
+6b0a4582-7cb4-7280-7891-b1574d64957d,2582524902,15046045577603973191
+47667ca1-d663-c1f3-6a46-69f21831a6f6,2653403025,3167669304756550790
+37555e94-b666-4a0d-55a3-d52b39b15b8e,756965307,7396696063105584158
+cd034d61-d79e-d10a-b2b2-ee80ad1ba251,1772465493,14523626067159004825
+f92f00a3-4af0-0669-700e-aa5ca2829bcf,50474405,11762536128056122718
+f136e923-49e8-e543-0d75-89a92916ebdb,69433408,16622335275023289877
+536b5cc9-3264-4949-17aa-cdb9e65f5460,1700533367,9391865811490463122
+d12ff034-8875-df2e-b60d-614d6dc8c808,1904138670,17753386172689748509
+f2d2dc85-15fd-0299-925f-c26a8730977c,916286280,16327590432419898041
+94087656-4040-2d12-5d48-698ef89f3310,3291285839,17754655654554369082
+7131ffd9-a839-442c-7a73-a5263dbec984,2360654217,8636400151803463382
+67e6f441-a419-4f3f-3944-5f254b598c50,3651940058,8786114295126288238
+bdb5b347-966b-5941-595d-8b7de206f44f,3580131247,15722143572391654761
+d339f967-4b42-1e3f-2958-b8ec9b1928c8,3594359424,10444559303058132726
+fe0f34a3-8e83-96e3-8e00-89790bf0c943,2702379291,8954446445543368243
+c146ea61-1a72-7c5a-8d30-ac45417db18f,305921191,1630454595493297666
+2d5bdfc8-a18e-f029-1783-57225942b42b,220369257,239147410623933577
+d15b3836-07cd-b4a5-4860-035fa25a6d22,3103579695,1718543840459613176
+58b558cb-0e35-f39d-2a3e-068a1b81397a,654143070,15919869392484452265
+d2fd7bce-0460-6c87-e734-283fcab69549,1584300793,7561236885818194456
+095925a1-b231-0bf6-b04d-53cbc23617cd,1271324535,8843231764831876273
+d65127c5-75b4-96c7-5880-666f73bd3847,1424238049,14237785993098225142
+941c11f1-c63f-c394-c0cc-1e7f60a743f9,1711635057,12713967096441317545
+48f99bd7-4344-8e4f-414a-330adfb6f26a,3311372629,12196052611589495933
+416dbc1c-46d1-f4f0-0ddd-cafb2e0b5dd6,3498685701,5979700762349892883
+6565f2ab-8c37-e51d-aa52-d5f92cf7796f,1545142749,7050921825788605114
+9573e537-1c5f-cf70-7d96-a90c02e350ae,2017368250,8500859723724356626
+bd3c22b5-212c-c5a5-1e2c-2cd946d3dbd2,2810402267,8484763947951164737
+fb8b87f9-6f21-22ac-1435-7c0dc46eabab,2833095898,10527802011210336397
+bd72c760-d5c9-13a0-df52-829c27031f70,2325304475,12874756209290367020
+d8b614d3-2250-7743-2c86-980e18b1f5ce,3772748254,13278103531493917256
+8e62f504-42a8-5bfd-d98c-9df37b83bf65,1828799446,4629877873564335236
+ab69863a-778f-80fe-9c37-12126ae4f784,2289914642,17004586370352076237
+af06d673-7ab8-6a1a-cbea-88b118d3c6ec,3302767819,13522857338546271734
+c3caa1a1-f6dd-fd81-b1bd-9b677f192c72,3020016284,3812594143211547863
+2852d912-7e5c-252d-d42c-752320f0ed1b,1231075595,869206638854703745
+db2b2f12-07ff-484a-86d7-c8ef3b50d2e7,4249160907,17178840076434739736
+a4be2f83-1301-d384-9811-d1f56059343d,3813850056,13776385536608268591
+4782e074-b163-ec97-e7ba-55f0e914ed64,2256412840,10952560785068477486
+b05923f8-a48b-1462-4347-d272d1725b57,2061132904,14982903246686578077
+b2a23b2b-f228-d656-6061-8ea91b35405c,1391468620,15001297077038001540
+dd77e9be-ea7f-d664-6172-4807d8c23545,2035619699,1580261776300836241
+8da34fe7-8216-2e49-09be-cf1da45f9fd0,2096902073,11550128533212116690
+dde6f015-3862-884a-966b-9581ab3c972f,3538451824,11682124991688116094
+cd89edbc-a84d-64a7-f7a8-621eba27d521,3234737612,3291515399487452012
+33212797-dc43-a771-6224-92943f3d6a1d,797061076,5951135832448710217
+c5ad93cf-a085-14d3-2efa-351b0c2b60db,3139621213,11440003291026891502
+da994ff8-2e3e-30a5-ae11-7ddfeac5f501,562944471,2393264932754804522
+92c9f1a7-f106-f026-b8c2-f2205b22380f,2600782865,10261650585430873565
+e2b5a218-1888-5147-795a-abe870634d03,3126735136,15428350862887015140
+1806dda2-41ef-4a26-f157-105650410f2b,1097315763,18365554137352740929
+132cb110-3175-2395-9bf5-2451b82056d8,47247188,6231535623994151836
+1e8ece90-6a09-1f2a-ca0c-00a6d7982049,2924810552,9262999284583012235
+42a47690-e5bb-db27-6311-9f5fb2fec2b4,195392108,362971987194269866
+a40c4dcb-055c-93c2-47ea-eed875f118b3,516409482,13121220324382515750
+fb1a0e21-57d3-9193-fdf8-8fdda69cbb6c,3523018148,10355367957046442879
+e7ce7f8a-7853-ab29-2156-5ee860b63225,923517047,16562947928944728702
+b052114c-25ae-79cc-1cf0-abd97f9b2b6a,1322004106,2393097966618084476
+d813ed3d-1fe2-7167-ca85-00c9136b5c08,1603995622,13616768259179907413
+37dadb3b-5e5f-6cd3-db0a-30dcb2d918d2,2731098139,10320635825712742422
+3d96c4c0-8bfe-31d1-c778-e8a05646761e,2745712636,14454981535416620871
+3ce20707-b202-c7c1-0aef-b652ad61a718,2063122379,7013688315624856281
+0eb2b837-ff3c-d422-ed1c-1a591c4f84a3,3649846123,17093278758113204666
+f8a3d042-e0e7-d205-6cbf-d4ee8650aaa2,661654224,1125992686043978140
+61d67207-bb61-a2d5-3d73-07075f1e3a01,1374712564,10367897397194139742
+364a7bb9-1e61-71f9-13f3-808a8e961445,2738654525,10771987597403663345
+7219dfe2-41e2-35e4-8bb6-cb3dcd12fb8f,3787837159,8998353235199161251
+94f929cb-d718-7e2d-0714-2c14d3cd5cec,3437261583,6896560157470567779
+d81dd0ec-6400-e25c-1280-c1095cf52542,1649095493,12086809156565809215
+97dfd14f-d506-4c8d-cab8-7713e9e643fa,3082128521,1231823861127823343
+9b7324be-ed0d-96a1-be7a-294c10916ff1,1510790163,12643328848853460013
+a793944f-1e27-a08b-1b05-9dfb8401044d,3645749369,17439268099776236077
+fea56fa6-9425-0b74-3c39-c311a56374fc,3753028966,12147962078556641857
+a57c7942-50ad-4fe9-74dc-a63c0f797394,2160826203,8325897753767646386
+7424f279-d5aa-1696-bd67-8b5c5858a865,3957307465,11410213230492975074
+22118ba1-ecd5-8975-cdc9-572ec640734a,3934357200,18043582442956211387
+ff090160-23d8-03f9-aba3-202a493f7856,3353084085,8337289072982378837
+7e82aa2d-9c0b-10e0-b2e4-2cd82f8809ab,192562861,13490754904796185772
+47abdd84-9ebb-0b75-199f-1df6dd9a84a2,1114887901,13647745790533030349
+42b5f980-36bb-b56e-9a56-88b1d467b3ef,993627252,13492928089330538928
+de53f995-cb20-4f12-447e-0bfb3ac03e8a,1617263116,17650601856414271388
+74e45699-f7a1-0568-c780-ee8819452b8d,1640803390,18273265730302088149
+91c23bf1-8ac9-e69e-bc86-8a51401f4283,1759113588,3257082154162819753
+3b340276-7d91-6c2b-0eba-6287c2857eb0,2066028426,7386533850479825488
+a100e275-ae7c-d792-5438-0109a7c1a678,1927190824,4555752753995475254
+33233ce8-3ba6-91b9-f5c9-c46883c1f114,3285273099,13259062124579367982
+ad40a6cf-32ef-cfe6-6018-979745540802,3997887664,14147112444943818372
+8261949e-85a5-6c1e-ad24-da41e3755ac9,3577614953,6083091281553903283
+6c9f6e36-b98a-f55d-fcaf-319dfb1524b8,4166106764,16140804487189246320
+ef957f6a-4abd-fd79-1e5d-f3c940542316,2843471700,14704156434348776158
+af588be8-6d01-b91b-935f-acb067e7eca1,3583892712,1470122973461283170
+7e64c9c0-3ee4-b595-5929-3f9faf21fa28,2438617886,12591804485453410586
+3048fda5-f1e9-bfe3-5bf1-d2afcd21a2ad,1481566350,2951007976501222345
+4c62f133-0711-471e-b330-3a3cef5a1cdd,1135792585,2302799687388512815
+0c6a2961-9c0e-3516-483c-9eed629d6046,2164335873,14851349095939847058
+4d5b13b2-eaab-5e51-62e7-97b464c2ac32,4163596643,13401840802515838211
+7c2facad-4921-03fb-e330-c3857bce3779,1335063953,3989714902094944017
+1973d4f9-432e-3a67-4052-1e353bdbef99,533684454,10410706982392314263
+5d72baeb-52e4-a339-7dfa-912fea5ff3e9,532615025,15791051456414287443
+ca0830f7-e436-2726-9523-4118e7539ef3,1953809571,14532143265448178181
+c9bfd8c8-b8d7-62c6-5ed7-40e81c40a026,2866521626,1370491131292046978
+0aa0fb6e-64f1-dfb6-b4f0-c45fb8d37ab8,2876404634,3683764391052281392
+69090fcf-61af-c9ed-52b7-e118b7322c08,775301681,132852309381296191
+21966e76-54e6-89e7-5675-10c384b38bea,4242390669,4925002466494362717
+68e237e3-db33-d3fb-cf90-3de41c4fc0bc,3473928980,11666573683973129232
+14fcb19c-0a84-9ae2-4d71-d07a3dfd93bc,1415831102,7412972006477874803
+0b04ee2b-4bdb-9223-cea0-5ab3a6fa5ddf,1508419041,18355920892838530476
+cb1a63d0-828c-9905-4b30-e1164324bd97,1491185294,2711610689605559362
+ade960df-b1ce-9260-d7d1-715f2d2903d2,1286306190,6215063460236980325
+3624814d-37a7-825e-ec4d-2dc76dfbf16b,3181317753,15910876605172486042
+65ade696-504f-52ee-997b-088c06e669a0,3018435050,2329700851957233255
+edc92764-280e-6bc1-0603-dd2135be661f,1236034755,10024748730392758473
+9eaeced1-138f-434d-4d27-c24e0c8ac9d0,4288913556,12795097902589930380
+6284ad23-9df6-198d-fbb4-04563432934b,2909196825,9484702799779397704
+56eb5019-7e35-bd17-f8ce-b4d7f6f0f4ac,2405653623,4079732247926488964
+fa4e6e31-3539-301c-f431-b22a02449ce8,323128272,16077032138612031840
+e5107882-4a9b-4d9d-9dac-b4cdc28d9b2f,1819102222,8525964028313384159
+85914d93-ef2f-21e0-0ef2-87f3e6d8f78a,3391510432,17532515458567693535
+eff43d2b-044c-cd96-661f-a48bdca7f533,2003342541,7810698555542919210
+d71be69f-6ea3-30b2-f505-aeb816673a1c,3001647025,4898977293461298963
+3b1dff3a-44bd-6349-f7b8-4fab25cc21b5,351431962,6659564023841790672
+f0323ffe-dd1f-b279-d820-571fe956c44b,3318438146,7905175066966429171
+a2b3ee5e-fbf8-e677-6e86-de7569c818ad,2502123424,2794043949334621711
+c0569c76-3648-ad28-1274-a60f5d3733bd,3453079121,5924254799597917563
+c5cb8496-d8dd-251d-a9a2-539ede0019fb,3802270616,8236628858699860869
+8420b266-0320-233e-3903-4414f8a92748,3747900941,3668874213685988504
+195b4f33-ed83-e465-d249-620fade4db10,3780849862,1519364818809576325
+a8fc4607-332a-1e23-60a3-bd22c95653f0,3846311905,2143905398825023160
+b9555ff6-f46f-a131-b1ec-9ed268bcd4a1,1064313496,16694532408582554328
+310ee34a-7afa-e7d7-989d-9a86faac2f82,2518450372,8620862979197700487
+adffb378-64e3-ca30-c4cf-cb63502c4ed3,2983365668,6336310297738769938
+e9191f74-0227-f96e-2b83-659749245118,370485669,8072924754303955294
+f8d48a52-3017-1e83-552e-284d3bfefa27,291612133,12847020662914074638
+05746f93-6e99-2606-edf9-8a6f879b13df,2073447857,18000319483234066206
+07853ad3-b3b3-edc3-4f12-17664d871069,3964604869,4257747775216779635
+13519d4c-4fdb-5804-ad6b-c9c4ae54c07d,1962780836,2428781808711811271
+6991c6c9-23cf-7575-8ccc-fb4c27bba80a,4284999887,15255189557536074990
+22e178ea-b0dd-6c08-d567-288965f21e13,1843182563,18098629830071662055
+6c6a138a-e7da-be8a-c010-32dd22d9f6c7,2161114078,4139201216880093383
+b69036da-20b1-9251-28dc-cd83c003e401,1944973620,7689370859406024570
+43e6e79d-6d32-c97c-a164-fd4d456577af,3120464717,6560336446582439213
+d310c2cb-6bb6-c9f7-010d-37bf425ddb93,473653782,16509298999518735754
+015f0cc2-a983-f0a5-04fc-00f4cbf3a87c,227793644,4766302473677944830
+e7cef1c4-b12d-e743-9a38-d0ea5e2b2fb7,731381743,967398038318175193
+a152550f-8417-249e-12e6-1d7c125f2038,4260714541,6914632050327878671
+b47f6f4b-9e13-72b3-cd6d-c1528727c83f,3700711539,13837251689982538713
+1f9c4e5b-e645-6acf-d000-6d91b9913a48,1463897704,12059654612725512601
+09ba952c-e338-9227-01a9-dce208c31f41,3871341538,3525770470014743117
+30f3d5a5-6e62-2c55-7bb7-835fc4c144d7,368089463,17075646680320436691
+fdcd3c77-e992-af8a-38ec-d60afae4b377,3452409154,9301056862345308631
+42cbc434-2b39-ddfe-81d0-1e1ca0031e71,2887346040,12790365363447124083
+79441b85-caee-7454-870c-8c17cb4f099b,1523601954,14275166841847183116
+a58d09a7-29a5-4083-5c31-38d44ca1ef89,867342526,7971715365322609520
+69829a1c-28fb-2ceb-3848-c5f24e299142,3800737936,18427353024305668062
+24052d0d-4644-8843-bbb2-6863fe9fddf4,311674635,15589356943051152812
+5934625d-91fd-c02b-7f5d-9d15493e37f7,1473375214,13601108662885769185
+18b06ace-d6f4-245f-8138-4cfe42b666b0,2018756305,12808699765141589942
+e2cacfdf-d6b5-8a90-e6d1-c510277b39ca,2273152039,2956316919452034203
+d6b3a02d-555c-5a45-4b60-8adb7c14e4aa,1418668157,12133304356520193115
+e70985fd-8a35-e54e-7048-17fcba3e1186,2820067050,18320412424716934271
+49fa2aa6-7634-fbdb-e371-55c0d6e4c6fc,2201718995,13599092268656383242
+d9f37875-1625-6e7f-7161-2193439ad841,1880344361,5329062122689536652
+dc8d710e-d655-6f44-89f1-c3e3808d7cab,1513034442,8080778781575799471
+63464e48-cc82-2c18-d183-b665e399e512,3260675213,4439622599907715795
+5e55ad56-eb3d-ad9c-d1b6-472e57b6b011,2937470955,1056244948876406803
+dd6f89d6-4226-9fe0-c8bb-f0baee66c6f9,3669520194,8752438818918685027
+efd55e2a-92f6-1b0a-0936-0125e310f2c2,3354475817,14216556686144727498
+e69d5a31-9d7a-2884-2cea-eda79bea85fe,1459913977,11179908449716872713
+61d9ec3b-ed8c-c4ce-3ea5-2cd2e0fd70cb,455923420,8739066828069009693
+6b25890a-314e-5e63-9628-9dad293af1cc,1888193099,17506907993406552185
+a78dcf7c-8ad6-2ff4-8250-0a1cc45a5414,547786208,11645958829200089123
+da6efacd-e5b5-9dd8-aea4-d3bbf4abfa52,2788009949,3062393788190215009
+e4e27db6-3bbb-486f-3edc-ace4f52b1c89,2097828464,1193179798668518795
+e8e13499-194e-a0be-21ca-09a45a168edc,1221684531,761835572775872222
+2175da7c-8e13-61d0-b62a-212fd6e53f4c,244087100,841187397221133222
+ac9367ef-711e-50f8-85e5-cb7391f302ff,1598097393,9238125440077964955
+1480305f-52d4-47e0-ca2e-dfd8ac7231c3,4069422032,8457114194074339078
+cd3e8af0-4fad-13a6-4e82-08339d0c1849,993118896,17809514322475903139
+cd30d040-53e1-e1de-758a-c08a1378e51c,394448619,3416981640244006127
+54643e95-6283-dcf5-a932-1a47aac3a41a,3048008140,10932496505684146207
+3bb49cfa-a81a-6b82-8fa4-91eaa0f5feaa,655456295,17698815596359345782
+f401f1a4-9ca7-70cc-79c3-7434313e3c0b,441950254,7872666648541687165
+11f10739-da57-fa8c-ec0d-a7d35b75cbbf,474160653,1766557894332816495
+3be524c8-5bc1-f81e-41b9-14ecd7fa5de0,1903144902,8768527932702265965
+c11e78e0-a4f2-c2fc-6e68-150d1f629fd4,1940671869,13395414398467670958
+04a9a2bb-e687-734c-a69b-22001d444e35,3749129862,13192619166061787506
+c9cb460c-ce22-c243-bc1b-e78e1f8f913c,2932682160,13183057164603087580
+1de8401c-a979-3a55-c7f6-475a7bcde93b,4237599012,6237389114822339402
+4c48af11-3c7c-237b-a63b-74339453b865,3422326974,18257688395425491166
+c1af328d-58ad-406e-2ceb-5daffa23f3c9,3978347915,14248553148936913036
+4b44185d-b088-0997-b655-09cb001fd511,203315336,2089109529519462337
+2b4a97fd-ccb8-83ee-56be-aef46cbec89f,1268661053,7601226433428047788
+63459ec7-1aaf-dace-e33f-b36ae9fe1302,473654889,8702503706972188560
+3447eb3f-6bbb-bb11-3406-6a8e3619ddb9,244020804,17150388744652233007
+998eec68-dc0a-5d83-1bc7-54ad3413a71d,570494422,6889784368005909612
+876105b3-ef0e-af1f-776c-10da143b5955,2449759936,13797310751312066784
+30942cfd-d5e9-991a-fdfc-19771f4ee016,1347716452,11504454080861657225
+19153597-2dc5-240e-8260-69c08ca456ed,816754636,16217028248266333943
+d68dfc0f-68bc-47c2-45e3-999fec56fdb0,1483473221,12241621138656793216
+1daf8f68-bdbd-6fe1-9e12-ae343a6a48d1,930633109,7583912067071140035
+0f119883-0170-920a-4287-163eb37bc430,1851393647,3437179201137888658
+d7c1eb26-59f0-d98d-94d7-9ee200d4b186,3748401241,5941576760178257981
+c0f34dc4-9827-87bc-1f24-a22fb7f1ef5c,2312168633,3308415680354389811
+b1dce3b2-c81d-29ec-21c8-78e96a3fde12,3198542990,17676868051291744927
+cae9c5a9-f91b-a488-960c-095d3c8961b3,2246974072,5476342699983826496
+6171768a-f0cc-5c54-9c66-9343464dbf61,1742333116,14000663744524789601
+b570432f-d5cf-0ae5-bc3d-6578dd6abeb2,277825057,11399783081367199757
+4d5efef1-0397-1401-a1d1-dcbb3926e69e,1155271450,4283018219022344444
+9d57c501-5f56-bf01-2093-bad93e756b05,463511163,6951865784980227114
+80806842-2ad6-5bbb-c2ed-50913b19d800,1888649525,971035197761715639
+5676b73d-22be-9712-c8e4-c228d514fa26,3691931152,14384984782228328417
+93c5046d-1856-bdbd-f05b-0925379f0e38,2619123578,3553070773922928468
+85359843-ac43-1720-e6a5-d4c935db8e4a,65370719,8433707249575805103
+d288c19d-6a9f-5547-ec5a-51631485b04b,4141144128,15798159235644313366
+a2f64f59-4713-1b87-9bf8-d5791665a88d,2109468434,17613321443243353420
+65cc0d91-6264-7db1-f124-191b26b74b9b,3029210666,17515298099824476683
+36f32f2b-588d-09f5-bc2c-1c955f6836c9,3694736283,14895794440054609948
+09fc35e5-c95b-8ab9-6aaa-58b14dc1f1a8,2273249977,10731272747274452966
+502786b9-2c3b-1946-8785-1bf07412c343,3039418912,6997960649400503728
+ffab61ae-1c28-a854-e855-f5ff91d01eb2,723204921,5768578146984768841
+39291d99-a5c2-74a2-d2b0-fa2f36af2fb6,4071972432,6710736715646413551
+28dbf6d1-10b8-4aac-3d6a-c7a8d1436a0a,3462812995,17601830922756810477
+6e6a12e1-9756-e38e-27ec-0976bb1d7ec9,3507328833,4150496699997445927
+eeba88de-c0b1-ad81-5c2c-9c8988dcda21,2876190619,14197080800827113674
+c581e106-96a0-c5ca-95e5-3c7850ca9f37,3418108687,9400585755033242939
+c3b10d19-4361-2167-6046-fed315574e23,3085218898,13399739522174475690
+b1f102b6-967d-6338-1aaf-9702dad7c3a1,228180755,12636617116537876996
+49d162f7-f4b4-527c-8b42-c787596105ba,1506572096,15348482808948091153
+a23d0028-f577-0344-f12f-5a7c28ca4d84,2368895131,18368416485645204700
+ceb31d61-080c-cad6-aab6-ab504a314755,3556504026,11690504575892365350
+ffae0b84-ef9c-6e8e-0974-3368caf1789c,2508844142,15019850788742833816
+0c068bf9-9e7d-7d4a-b9da-33e02c886aaa,3310741824,10331051626876125380
+0f5ffe3f-ffbb-1e9f-c98d-577c703abf01,2559712829,2102112083667602523
+9f966226-85cf-2094-ff08-58375ffd563e,2423338515,4079749245264780133
+347ff9c2-2297-b74a-5a9e-de99c20b1a14,2771672760,2886482564663720988
+e3afebac-124d-30d0-8929-aad4f497df0b,3528169809,12583976190404979198
+ffab952e-75c5-f3b9-de30-e6d365b34db1,2395425404,5499304137970572888
+6ee35f62-f1de-8a1a-0ec6-abb9ef9f278d,2889094139,2737481545879163094
+5fece953-8bec-6de7-fb11-47c276425f3b,1658563047,8839160148363952163
+1d7a8c30-2145-585a-3eb3-e87890aa82be,51569859,10169442308366817676
+0781d380-dafd-5f43-15b8-3a1874489752,1331128756,1555108053522642767
+3c786a4e-2113-9a9b-1cf3-c9191cfe027b,2040516912,7147495411329061918
+51f7ff86-dcfb-fb5c-858b-b587c2882b54,3466212835,2104325334848808484
+beb4c8be-9885-744a-1a53-1eb440f7b839,823393142,10766820644805340590
+626cf388-4e4b-e88e-f8fe-1547e8022295,3987745682,7419846708063265817
+5ddc570e-dff5-a118-fab7-c46e914bb3be,3362703346,6195644174021696062
+d142e69d-21eb-fec9-ad20-1fd291cd053a,2582099996,8158086658698291118
+de174b98-6cca-0295-849e-baa98eb1add1,732207116,14879892107446615677
+9a1abfb2-3589-cb5a-6c8f-e368ab03f133,2598500819,10491805125896527687
+a7005ae1-c934-328a-5d98-636107a942df,2841914051,5870114118383501964
+378ce0b1-73a7-57dd-8ce7-02e07a491219,1380120189,4768259698631621914
+e570333b-2c27-833f-d2ce-c740885abc3e,336413124,2281704885673814328
+b5fb6bba-a612-352d-33e4-fc5e7957d799,2380509648,469633842088137871
+bb9a5fbc-99b1-ffa1-9541-5cf0d1add1f4,2110357226,10672791516693813435
+bf2b1c0d-8297-ac86-2408-b73dd23f6e63,3965195231,11175608326934483073
+24738a6a-3160-0386-7a22-e5710d64331c,557691987,1086632206121936534
+7db8c4ec-e9ad-45bd-3968-82baa0913763,568889742,16671794683791891520
+aff2496f-e189-0f3b-6a0b-5a5df31d1097,2417082893,2842338123981500103
+ada20f80-0ab0-a59f-62f1-ae7bb5873763,3562703489,12190611540711711331
+9ab63b1c-c9b4-c479-ef6e-2833997b428a,833190777,1255613900812051813
+909e7877-9ead-32ea-9f8f-e3e1cb74b944,532646377,15010678053972079232
+730fe9b4-999d-c51d-6356-4dca50254e53,935304163,8045643597899560403
+51ecff06-f7ea-b922-0bc7-fb47178f581e,4083870127,1687571071523827220
+da412b05-61f6-3bf5-7720-1804409e6b9e,2709954974,7629203153575367599
+f2f0bdfb-7d12-af25-6315-aaf90dc4e661,30830605,16523277658793561773
+1fb4ca6a-89ac-c68c-e38f-69eecdf5fe9b,2886018519,7843962806767311665
+73ebad20-c5c8-217e-f40e-bef0733ed4cf,301777085,5313410666920929214
+df87547f-2274-d47a-5ad9-090a06f86892,2964222462,8090633536064985296
+f1288a38-df10-e7f5-c68e-6a1f450edec9,2292643221,9585001161471599886
+02bffaf8-4e90-3205-b57a-844c65ddb1b3,847121169,14395539559374404080
+3d4dce5b-ac50-5eb6-205a-0c2f280d2b02,407818099,2373894358512021242
+ac22e9f9-e40b-6153-eaed-1d9407611234,3467646256,16380130052921574093
+301c4d98-ffc5-dbc0-db77-c616ee05951e,338312735,6793964625153729279
+193a8103-b4e5-1b4a-a69e-1ad2af1c89c0,4031583649,616362244037171658
+a1ac9cad-8d70-cd02-7fed-a2f433582f8a,3345222605,9361230774256840856
+a45b4744-06de-bb0b-fbaf-89bd483fbc2d,915731821,5486036881281899775
+49440ad7-d66c-c887-bde1-fd4fb8da3433,256004277,1129513585937424332
+2facc896-fa1e-c03d-de0d-9f4635fe2d1b,786347464,17635240494414421683
+d094393a-7cef-3100-6932-d0ceabd630cc,2064083089,18135533531990241324
+771537f4-3ea3-5c0b-9d78-a36d52d3f4c4,3934680633,5878294265111993104
+7c2c4744-f23c-d19e-1425-fab6a5838447,3199554844,15110277428909926376
+af5f9ef7-2633-cfdd-88a0-06252ef018fa,796188813,11646078055304591455
+1e4f7d1a-eab5-29a9-b1a4-b0dd62c1db75,1289525768,11077869885172131808
+a53b0eee-9cd9-fbbe-4a4a-4f9af7a58ff3,1850511019,7281905132534615945
+76d7de0d-7932-fba7-10f7-302c135fc7b4,4021252416,15681914024422366351
+19a1037b-0d7d-0d79-6d47-0785b46cf7a2,1887515302,13125816234776745658
+60edc9bc-6b2a-7b5b-1879-219e755c7f07,3429166244,7542224131320084241
+be625e7a-e367-d860-7dff-c8e5abef92cf,1996571380,2365319689066347684
+90e1cf77-e0b2-ca1b-1f3b-e7f7aa099c5d,3495999909,13829793166244232986
+e1d520fd-93aa-5368-02fe-c458da34d98d,3439086396,6274463952216166338
+f4fea9f0-5a41-b74e-3efa-9b0521e7282c,4178555800,2928859931751364620
+0d71633c-fc74-4e37-8ab2-493b7a33a75f,664722069,2041554709458735686
+664e86da-4148-4139-c5a9-6fa63f67544e,1886170817,13219604877009376459
+594151dc-0a41-ac87-02f8-da25988316d2,4021375606,8235108563506898162
+7b38e1df-ebfb-4203-40d3-3798265b235f,3441745648,9220505137350799829
+a9c70a28-cc65-024f-f82c-f4a564add6b9,1962449144,5200389470680331542
+5db88fae-0e6b-e9cc-4dc3-f68eac6cb7cd,2662295587,13033316872078172958
+45cfa9bc-e152-dd18-5328-7c3962b155ad,93787639,10722221722028853934
+e2a394eb-7e1e-bbab-a94d-5f720ec4299d,3581363047,2952311279753401963
+a9192082-327e-f018-9a33-f4f64750c8a6,3666293653,3636097490972961608
+e6a12d62-3517-85be-3fbd-737ab160f214,1921126063,4714681108568303167
+8459d232-5597-d6b8-166a-fc9cf462790b,2682735158,7170608602480101987
+72a02334-dead-d037-0980-c339a0a2802e,951497344,9219930270759803735
+ea8c1fec-673e-08d9-89f4-f6ffa3ab1bc7,3707365860,9433906451816323355
+60647fab-23f7-2d42-18cd-5c6333c48a87,2307113738,3713117953589615893
+3f2465ac-cb26-9fc9-59e5-73c9a23b2d52,2015158582,15710479612235691678
+7a2f150a-e94a-8627-3ce7-21b4aab36aa8,653946754,16176144014959482985
+e5eb791a-3a91-3dd4-76e4-0325c2abc74e,3265261256,18255484374964169847
+5b6d8ac7-0882-d230-1ff1-21137df7623a,2409443832,6359658170355683781
+99cb1d2d-09ba-3fd7-e9ad-fe05c7a41110,3874353097,149440485494581256
+a1619a2a-1217-15f3-e23e-6fbbc16f321c,2294253633,6253442936970912637
+8e063f0f-8e72-eed2-0faf-a342722dd7c9,829144733,10353711950853736271
+0486a1fd-127e-c8a1-9453-3cc8982b4206,1706843943,9350295313502581863
+6f0379c4-40f6-2800-51a6-bac98a9c33a2,1854978195,16075403034310569130
+0ea07c61-dda1-0899-34be-a9396d552953,2771220375,633939255449435136
+b9658eef-4733-0dca-d229-11a64eb21d0d,2950914877,17817243422910589259
+ab8aa63b-6040-3be8-9db9-65f0033616d0,1014874132,7017668901788424456
+497ee395-2435-4520-2ad9-244e1376b23c,238760643,7603472154692316174
+a4d1a0a3-6e0f-da0d-b17c-1421d37a484a,3441714800,4436520045200634570
+f3640bb4-bc02-f364-9b6f-c5b326f78e18,3880704726,8128005386562998798
+16982fe7-647b-0d2c-5a83-9b4082f664eb,3680967204,2483274887564263984
+c32e227d-b129-0027-49ca-d814722e9c78,1156530063,15567034227950311552
+86254445-7abd-a54d-2cc0-a3f682ee0648,2380256008,16442685821093645561
+9120cf1c-adf2-d345-3786-b5d4c2f6dd48,4085133399,3584076887177210409
+707c5a6f-247c-3c10-35f4-49be8af83911,2813868351,4409457837008661752
+fe07cb87-b5d6-859a-e22e-12b8f4e2af82,2996476092,12761921411717261919
+ae444f9a-2089-21dd-fffa-d5c93db8afb4,1765249113,4909724150344232237
+aa2a7c4b-9aac-a060-2614-fa2c19883518,2221197948,8906579277025881822
+e72c87bd-9ec0-2942-ec0a-51bd5cd38c73,556833378,5220271446567137665
+b5704f45-638c-6f41-c30a-2fb7dbe3ca30,3978984030,10751287522812028758
+c5ff0d45-4ab8-f526-a694-ef8e313d5584,461334482,9998610510233333007
+e7847d07-a987-e289-0205-d0c366daaa40,3679981608,5542394670951357525
+06ce5505-79ec-df10-23cd-7bd71eb36270,4026161963,3880390211800212125
+d51b91c8-8bf7-1e8e-9727-942d9d9a9055,3898248183,6399908634407235770
+78794034-84f8-c0e3-cbaa-ec998467c390,2220033785,6149380520920942542
+7bc6e9b8-2bd5-fc31-7206-0d743d69cd75,2984128727,8290365627418590773
+a2310493-a329-b14d-b1e8-aa2d4dcb57f8,170191536,2898416743104991274
+54f85c4e-bc81-798b-5818-76eee04a57d6,712688410,1540440402551770070
+9e3b4613-3338-8ede-e8d6-5ff183f995a5,4062781066,6597558907416730993
+4a3e6971-2b35-d953-b3b0-a95d8fe20d90,282856113,91784470180851294
+bf6a1e77-abd3-42e0-4cc6-2f031ef11c48,1986899842,11229792413017166096
+5c1415a8-3e0c-17fb-1f4d-7a5b6d6b42d5,468108969,18042212427900680593
+8f30127b-a5ff-7021-3c91-a4633358e78e,1237526465,8844665027489989204
+546f731e-c60e-2a87-7e44-419a59a14943,248715837,5640679723368882880
+fbf8ee20-31e8-2f9a-36b7-b2942fd3d331,118710381,14328169540183715725
+b4a07ea0-b4b4-78d7-e6cf-f9ed18f43506,1555594233,2286398632717712928
+c2b38a64-ace6-c07a-f9df-d2940dd6bb9f,3276585349,8313987780717161182
+915e931e-7f06-224d-0760-3509d201b9c9,3804453902,13333748808897684235
+3b48ee01-8d07-ec9e-e7f8-77a2cee33414,1471431019,3607708847783533398
+d8cc60e4-05f6-4f69-e30f-f0bee8e38fc9,218368770,1446117154507296769
+595e5823-9814-9fd9-d8b5-452345846bd3,2394761175,438668568819635547
+9b6e8738-48ac-b82f-a082-9bf36f40ba56,3791919685,1552355965172197190
+fc64f1bd-4977-3664-2f1c-841cc667cf3a,674584438,11614355715751128173
+76e353dd-1bcc-c728-d274-34b5d08edcbc,3934147058,15167370631730965544
+09afc87a-edee-ed18-8342-3bfc5a8b5c6c,2763108864,10926394775892566500
+1eb10e10-7024-ca87-0b0c-15d7a90aa536,3422905361,6653637828759843631
+0325e976-9835-5322-b555-f18a9dae1f6c,4105612475,10945162715877549739
+6cb65d07-91aa-a192-78d2-bb79d60f015a,1801937907,12476168647487625907
+ced8ee12-49c7-8d59-6cf5-ca6b7464dd2d,108201801,708156470107729545
+d13c60aa-c3a9-de1c-2fc6-375458eb87ba,3274739270,4749608741086207018
+1bed335c-7053-feb1-633b-ba1ae6095d20,290466418,18284606741462061925
+7d74fc68-c74a-eb18-d427-54c3c15673e2,2537931806,10303865438372134721
+59252430-89fb-12c0-17eb-970712107d8b,1958599415,5484371450656420144
+7ea3bbe3-e3c9-f351-1d5e-01c11f5017b3,2236014263,782122586748691992
+0359b88a-3a32-f253-f32d-7162bd4deef4,548705033,4916166503839243870
+eb7c55d6-f462-7df6-76ee-0e9b1ef406df,3400783939,9409818338607641802
+0e844cb8-970b-f06d-c4ac-8cc539d4a634,3774460954,16827234820174351122
+168b13a5-275a-bc0a-7625-d26016f23b0a,193180164,10690642129609228006
+41b66529-bc0c-b20b-8d56-8da2aa9ab271,989635335,9938954487307672042
+55ef95aa-6357-d2f8-b828-fdb3f8d0d73a,2210702897,12196096142286011960
+47bb076f-6fb0-cfa6-8df8-842bab635a0d,111345189,11430469905600906000
+a38f3e7c-1217-3ba6-8a7e-4030cfe9160a,2317539789,18366439666259427717
+103ae872-5bd5-e6fa-088e-c51e07cd41fe,917251050,12943824812565388042
+325198e7-6e98-4a4d-529f-86b5818bed4f,964319892,915348141695350148
+100e917e-0c0c-681b-0a5d-eec913debc3c,1257674630,16927161502677552203
+d2f3607b-0638-86c1-266c-f2f9913f1030,2922246789,1859111580506040488
+ca65c28d-c94d-b02a-cc4a-ffc0c22ac1e6,849421735,16247597068814805222
+981b469e-b8f4-eac9-ec0f-8041dc3f6575,3608189295,1472480243371172870
+12cc0066-3fa6-22a1-3627-10f0ca8aa7c8,4046042601,13092757708604628696
+e7dc222b-8465-7cb0-176a-7058649c35ba,83819794,6006537444558911250
+6fb157c0-4452-5a14-ab25-9283e285122c,1071985453,5792067017268785132
+6b6ded4d-995a-28e4-fb40-a9623f6326cb,1575840676,16059246034970644086
+db4e31a2-03cc-cbf7-ff46-b68797d32d23,3361836816,8211043974916139593
+400a4f96-7cab-9793-e23e-e5eab1c05778,488136687,9587932777070354119
+e1835f5b-c391-c97a-5cd3-a55ed05649d6,3019035285,16442868738646031276
+4d351905-0ea1-2bbc-677a-2a7cc808c7fa,2857353534,12642999636593830659
+fef135c2-443f-8399-b625-c5aaa3b889ff,378810575,10826895135699022202
+98ee943e-2fb3-32e1-29df-9615a1597d08,974446371,1383937666760753278
+1024fb40-cbb8-f248-704f-caa2aa3380be,1605734930,4794327570026177883
+75a7ffdc-7072-b9c9-d126-02bf0c7ca17a,4216482474,13533051950163753876
+531cb857-7e4a-4537-a101-8842a0603a5b,1367991689,7868974740307039374
+18bc39cd-7bee-c81c-119d-55c69e6545f8,189275333,11111201817791914270
+332f2e75-2f3a-e0c5-5a46-4d4e8964c2d6,4254659145,497206336664642564
+93f1e899-98e6-f98e-1043-a1897763394a,3243849989,6178278080017270034
+fa2ba715-403c-2c6a-9ff3-24ebcd7d19c0,3354405057,10399859665142860185
+4bf82825-91dd-a7b1-643d-7a80be0c53d9,3768721062,13224315225816994220
+0d832ed2-b928-43a3-7a74-2af3f575188e,1055204113,10299043842373049786
+b62877b3-065c-f867-767b-283faf83136a,1730636705,7658520705781699368
+01d6f0ba-ad14-4af1-3ff8-15b0a5fba805,2738691307,1740131012418216892
+05bd01d2-9641-24cb-dd57-b773c596efe5,2134130890,4030562915860369249
+8fe5e21c-4a9d-675a-f695-08097b99ac69,4165758769,7867728734325263589
+1320a85e-602b-096c-3968-171833bd1322,4105733212,1445991035442765288
+2ef6c01a-7cf3-8785-7b11-30e3877f3db3,2046214752,6384836329370267067
+adc88797-9b8e-921a-9de4-ea00a799d1ea,1693187280,12990631330173251061
+ebbab8f4-0dd3-621c-2cff-6d26411e8503,1066088711,12229164163197797824
+2adedcf6-177d-c581-32ff-fbb87431ea45,1025222636,18338284562134218983
+010c07c9-cc2e-63ec-9c73-2b7bb72977a6,3883252940,14745737621233247066
+d5d96f2a-ff2c-9641-16bf-2efa3b80990b,2541379239,17567787871980939207
+017a16ac-4eda-4715-1d6a-4ec9a4ca2a27,2592216362,6468399971994060454
+5b307114-8ca6-c0fd-2e8f-640bcdec0e02,754365952,9765408606508023552
+e37611e0-d84c-aa46-00e9-9918720cb9fe,4219029852,6785578673454905933
+216f72c1-d624-da26-818f-8b1d2d6eb8a3,3067039609,13347006237556845397
+0153ea08-e3b2-4418-8d09-89592f77714d,3680400766,4256298282404648257
+77287259-a832-95ff-e7a5-43ca585179e6,3084761270,10169038596597485310
+6236b122-7f66-69d6-fcad-b5a566184e49,4131235163,8772716355442833476
+9fb574c7-93d8-a0e6-1566-eab2294f2204,1662949103,7889558433418511272
+776dea32-9623-763a-c92c-58f01f946ccc,2048215084,12714287346521626440
+76d727e6-1e8b-3eb4-a638-042ca10499ad,284647284,2012514282369256096
+e66798d9-1390-8826-da8e-96d22536c792,1803999473,739413535539515703
+68cc853c-c582-186c-d010-c876724eeefb,1780689796,17855479043499369723
+c83028cc-3405-ec1d-6ba4-5939acc9d1fc,2903347024,13309505641051177773
+a10fb1a3-8b3c-135e-6936-bfc6ad5dc8f0,1235093960,13233536265973870551
+98953ade-4f11-c5c6-057b-73e43e495785,555835444,16537103179664375868
+ee34c632-1443-6463-f5b8-18d8bda15c1d,2928278127,9253260388868596478
+28420cee-0d17-d1df-5fed-95fe98886a1e,967842594,2622202252414717034
+d9dedfa1-35a1-7190-08a4-3437e39da852,466664509,11055762478127397331
+56c461a3-d76a-fb83-312b-270cfa35ace6,2421964030,9980374440898483413
+14313df9-1d20-6782-4848-295b29ee7674,3012268545,5235577951788749768
+d1fa5e8a-407b-2858-c270-32210d1c9eca,1282148837,4036419707181279210
+f890b8b9-a7b7-1eb9-66a9-da66e12b0222,857809070,11070354651789942561
+eda86a71-69ca-0101-f50c-dce671db9308,403543002,10662739068237320387
+0236ed33-91a7-6f11-4974-67af7713f9f9,327217155,15643128547088004702
+5a471cea-b50b-3c75-9e65-8e2998d9a7a6,384476505,15739313352417878326
+68c6bb0a-fadb-e738-3352-0dd7bfab4d4f,2347425813,11339876926588038221
+085eb11a-6e23-4c75-f8b7-2f7eb7fe28de,4101692761,11115154243364072989
+b0fa3d70-57fe-01fa-cff4-547a8971df80,1810774993,3532466781460653561
+4b5e7e1d-32c6-f7e5-3bc7-3ebb7fd1a868,3827398551,6412576142213975373
+35dbd542-d69c-84b7-28e2-f88cb825f2d9,3508857958,3500369377287872116
+f8e9ed81-0813-b464-d4e1-108973d83246,1141609748,1611959804598724456
+a7365115-6453-7583-34d5-96bfff640ecf,3803724086,7882145507377237326
+1bf3c316-6d2c-98b5-d9a3-127050c55ee4,1664864523,8366372702473404584
+827b9e64-001a-5b34-6770-1c87320fa0f5,1607588078,5802131311201573031
+5e33716d-b974-af3b-3dd3-ebb44fd52b4a,3148144439,3433192494283296539
+5aed68f3-54b7-24af-bfda-27ac86056d4e,628413467,14658512124162877822
+48d26252-93c3-769c-a0dd-a8d176428e23,2447740251,8200771442492420504
+cf728315-9821-0d03-a02f-107dd3b23625,608907621,1730485526533842349
+cb25069f-3dd3-52d5-17bc-9a9eed698b07,3564660664,8633530499234459626
+4e799403-5d3e-c146-01bc-97aec185a2b7,3550560328,13476208115313467366
+63eb63db-6473-7ae9-23b5-68075fc459ae,374168044,8648167264064201958
+837d371f-a8d6-476f-72c6-f99e280f9df6,2282149180,9641204961941572641
+be17b7bc-8bfd-c85f-87e0-0232613be972,4154169274,12535242972182227636
+ea1b8696-cd56-33dc-10fc-62fe73d8bc11,2798159672,15086059178037665542
+c4a47d2d-d200-4a86-e515-8901309972cf,1087156931,4836170905163617221
+eb684473-73fc-3e5b-7a2c-c2bc2650eae0,2104550563,12958466690772793428
+9d7535ea-dad0-9dfa-495a-1f1de56cce3d,3720323180,1038234857999928232
+40749aba-1d11-d5f9-c5a4-9b3be406458d,1652448706,18402303843402867435
+b4e77881-4b36-25c9-7f3f-54ac7d16761b,2278746084,11412970143613925741
+c3feda19-b6ef-bf52-2148-3b09bf29be2c,3663840644,9316333861076869252
+c33ec572-743b-14ff-3f10-d3f6b0102ab5,55087752,15560381735762221850
+4af4f4d4-99ec-5b7f-4516-f7546990e1ac,2024461166,10687002282583594592
+3a452b38-9f7e-78a2-bbc8-2c5808b0b71b,1869071165,12621986225037886439
+a04e13eb-6042-0e6c-c3bc-671793a7a8d6,3123382734,13437585219223142163
+44742fc9-5f62-4284-5829-497ccfd03639,2303942303,15228996626459500770
+6d2e763e-529d-0fff-00fc-bc965fa23c99,58481121,13515961506175098317
+3e056a32-30fa-eddc-e3ce-0a9327dedd74,1531436299,5339427781330178186
+7fc31991-22ac-82f0-9e73-88b86989ca23,2095503404,15090582466934545136
+ff5645fc-d272-da5b-bcff-6c8422f5ee78,807084050,3623422674447519817
+a6934a73-d6b5-8d7f-f542-eaba301147bf,4054915707,16087426368896414277
+1e0f449c-8e59-f113-93b8-7bd6d8757a4d,2838636228,10945066471645586643
+7e1b107f-4498-34cc-041d-cc2757577e86,1365368974,11291463395651319816
+dc933701-0a11-0212-9501-19cb970b51d3,1549789274,8552312906093105522
+94e98bce-b944-53c5-9af1-ba0da2e3d7a9,869745077,3959708178126128004
+d5680317-e90a-61f1-acb6-0fe717578ff0,2571522797,9807516401923653595
+576a92c1-32cc-9cde-1129-f4e711ad4676,3332085769,16219077742780612485
+e275e7e0-1ddc-097c-182e-cea7b045b956,3797263748,2275785380832182239
+febdd843-85c8-fa6f-3eff-368382a05e58,3919711839,752064983551231737
+d0621d2b-20a2-0b70-b243-071fd164fabd,612206882,9765834590807664254
+99f59215-edd0-a64e-50cd-2029087bbf50,3576807954,8636731850999418289
+092f790f-fe7f-5e56-7a31-e16f13532b1b,2976702348,13363614990885137498
+2f77668e-8ade-62a4-062d-4b8da662da85,3640097800,6327899742524342181
+94efead2-8cf1-2f6b-10a2-802530c3e5ae,444837550,14074050654822542527
+7db43af5-4b6f-d6c5-8d86-daf0b588780f,4182178175,2632141182810312583
+5e886607-e8b6-015c-2135-2c06004d8d98,3010987336,10641176593713295593
+01f3aa6a-f394-6f39-7cf1-825a14da8b1a,4165889740,8525881800854595644
+aeda0d82-b42e-29c0-3c1a-82eef51fd016,2196895383,488467466184849793
+a31e514a-af75-f4b8-3c13-a11d66b1813a,3606775548,11886138522141300620
+24e9122e-8f8d-4514-7d42-d2492dc0e5b0,451802141,18287804988040465970
+ac289293-f62a-ede9-8330-a62926802380,4218992206,2805417227300310971
+ee4612b7-4012-ebc3-ccb6-9bc9ea5398b9,2835585709,2266941053415513716
+c830c2f7-afde-6581-6be9-ed0774673207,3789798766,4636894548781242962
+871850f1-2a06-33c4-8ab1-2ddb6b3d0feb,2402573010,9120450988554574637
+e62222fe-81d3-aee3-6e87-7fe87ef9a6bd,369380894,10264301668471201510
+32dfabe0-0c44-a682-f652-441971364c24,625210228,6897754548217206636
+491fb785-9165-d9c2-355b-1521c260ec80,3255075687,17230559624137337612
+8aabfcf4-0bfd-b2a0-050d-497d87cfa3e3,2989093846,6015174931855332050
+2d7e0303-0fcc-3a31-b6ee-07dcfdab351b,3565926092,3556551309649759865
+1e0107f2-0934-de56-caf6-42388ef78db4,1303300089,13638360370395228958
+dd060041-3e7e-8558-d1bb-c7c7fdd5f321,3896353096,14225596106009147714
+902db447-d3eb-180e-99cb-938f46ad5005,3613175535,13178753352625351091
+40c00a41-e055-3462-d3c3-475913d75445,4224248567,1076177359867526433
+75bc18c8-c651-a6f2-8b6c-1e85663b8265,567908787,8598572448306781901
+9fcbf323-3c52-b2a9-6442-ab07cef037e0,3580606772,6266693324179522625
+48afc1d2-a8ed-302f-446f-31cda362b2fc,1493238732,5574319793990276357
+dcd78aff-db84-dc28-68bd-1874f7028840,1410522054,13187473409317052381
+d526591a-6156-4b76-26d4-e7adce06a272,92832578,15518028260165364699
+bea65bc8-8624-1afa-e2c7-11d1940830c8,3909862024,8611712485628219868
+41fdc8cb-ea25-5638-1c44-87a7292a9ad9,4098382634,12220378238665581977
+1b49dc5e-9006-3780-7a5d-fffaaf937e8f,140167124,11904655976111298646
+93efce99-8b96-1063-cb92-289c3eaa695c,1352723725,14536027889054407935
+6aa7e62b-a242-784c-1ec1-7b3f03f164c5,2025385233,8921856222025375834
+0e0b1cc2-e2f0-d911-1ac4-c3b544348671,3958344635,5163570756673501911
+17c11f88-f2b6-e5a0-7431-a6d8f1396c69,3959920813,13567703916119247775
+7ec3b791-00a0-6112-71dc-371bc9351e0e,3480708881,1795674642779753612
+6c108d77-1460-743a-5b69-e3ed0a782b4b,4082414153,14527251945739989608
+4fa70ed4-0495-24f7-f323-ffcdfe51a8eb,3070473096,6006951338026260315
+72fef870-f163-9bc1-857f-bd1ef4ecc012,1952783157,3040189721770988688
+1c89ffc2-f1ff-0669-a3d6-7e7dc7e29ae2,1366420273,14473477203192335858
+86d7511c-d23c-e164-85ab-79bfedbc5afb,18657170,3490155818431621041
+23ad5547-7b3d-d8c9-75d4-438d2ce5ee01,1150438283,16481466692778852968
+f2ab9b58-8fba-f3d0-7fa1-cca903df6795,3798908681,12327337894196442116
+a5b3e7e0-f2c1-8e24-3891-be62638c95ad,2799135945,14508922831292291300
+8ff27bf3-a55c-60ee-ad57-fb7015a0e7fa,2737745476,11869369849107382347
+49bcae03-871d-8a1a-8853-7df7045d43ed,2099381352,2517711877824378002
+ebdb6e26-ec45-5c4d-41cf-11bfc38b8dd7,2620068048,5615506677561736429
+b079e838-f252-483b-30e0-db4a07cc6ec4,2235845586,17305911963060356625
+baac0796-3bc4-5e0a-a764-d288aeef58e8,2444897753,4625968175058316000
+6110d914-fb2a-1f69-7b8f-abb668701bb9,1790445675,9447485583218166004
+2aaff14a-9780-e74e-a97c-1200e48075d3,747557001,8616240965511158192
+a1e0a746-1074-b445-f458-c13fb99cbee7,4136932145,1952894075807658289
+03909695-e4dc-e253-446a-1853e3bf13b3,2978147186,12500682496344112049
+bb6e9aa3-2559-b8b3-336d-756041d7c949,318423451,14663997511855574527
+1bfcb095-3eab-d02a-3761-d26052cd0448,3508058010,10257323678325895949
+86ceeec7-670d-159a-d297-82ddf955627d,24577128,17305940184631740594
+efb04596-42ab-1420-6b41-7803dcb9bba1,1528590807,10189537835291847089
+b7baf3a4-b249-ceca-ff63-e653dd80daed,3971409893,11889968275465063575
+b1f35f30-9ac0-29a4-1a82-8f97865cf4f4,2936295220,8495988237105959512
+6f71118a-2f2b-fad7-209c-3fb9636a6c57,539608137,5068446495699745269
+295833e2-ae29-e2e7-79ba-f21aff3bee10,3915870187,14422191213030012593
+0461087e-805e-7fd2-b97e-b96d5b34bb17,2519285668,7769197840267622281
+efab30ce-1eec-5260-347e-98f2c6e155e1,1798453782,5932940603645295500
+256a7663-7ae5-8638-930b-46d1eb995dc9,1925081778,15237478330407924767
+bb6f1781-c766-d6a3-b728-5d933c0dd93e,4234790093,975281852557314134
+147f7a26-e9fd-89e9-4f23-e94b2237f5e8,1235078398,14464968775801077642
+35fbf31e-383b-7b27-3398-632ceebae65e,1676691119,1815746609708101650
+4cccd764-0b2a-020b-f6c7-2973d3b8084b,554598135,494539321354450338
+2db80706-f6c7-e406-83cb-f5df27859723,1261633143,436153676021754560
+612f1592-5d96-6695-0e88-e9ac2a992690,1960101840,12697662844610252113
+10d61140-cac2-89bc-2771-174d584ad6bc,3591373096,250551018193042680
+98a91813-5075-6977-c4bd-015478a0b1a3,1311017971,11450941335661067026
+48ba655c-ddd0-4488-e626-8b5fb15cb940,4143567412,1575524078906772043
+5eefe9fa-3979-a50d-d058-c0c4c702b974,145966832,7400186625768658403
+cae654cf-a785-6d4a-438b-5812cf2b6e39,1642393420,2246062122107859942
+7c321e1b-9b54-e3c5-a413-0fea01a7bf93,504974857,12923861427540076379
+20f9d87d-017d-85f6-12e5-50caf57a0cec,662394693,8966788793276243906
+d0ad7c3f-d8ac-523f-a4f3-e2f60230fd92,2450271699,6093815440800671065
+18c7beb1-d1d8-f589-565f-efedbf42f2f4,93781352,14586664206704619177
+2bf40230-b036-00fa-bda7-19769e848a86,1579474011,10807643160777947396
+7258b79d-93d5-c968-0bbf-3267138ce841,1116914333,8048737345673126584
+cfbd17aa-cb88-428d-35ed-0fd6a29964c8,3860960198,14199131863978229492
+689867b4-f57d-10d5-fdc8-9ea0ce0ef964,2819849699,8001737626321693234
+68820f05-227f-0092-08f3-b70efca64e3a,3971628518,5480316746988269964
+b8d1a0b2-595b-8150-68fb-c3db50b852a1,2282725700,17094987086133224585
+814e86fd-1572-ae30-0378-246ceaf203a4,4253813975,7515768033409186785
+abd4f383-6ed8-2c0a-aa56-7561c2865089,1160847728,6916673052594570718
+397da052-28f4-9b0a-fb14-6a3fcc46d893,3892818788,13759665401127218130
+f3e4d651-30bc-4678-effe-2cadd4d0a6bc,2695929521,7640416860154471587
+d30a7037-d960-0045-87c8-bc7eee225b5b,2846172797,4952946023724176787
+af9450e6-bb56-7fdd-a488-5aaae3f28a44,1048356302,14113563231145514848
+b67d1999-8b42-49a6-6d87-1e2025120b0d,1159191097,12460666672810235539
+d905cd94-ddf6-dc4c-0981-1425eaa28682,1927615955,11680203812273345307
+e5f79e9d-a00c-97a7-bd72-526c683cf6cf,3020697449,16565795969872126362
+92cd0557-b5cf-b3d6-c5f2-1fbdd2290477,1778067653,11922581411981170572
+7989b4cf-7c3f-738f-4879-3a00a530ccdf,3679238874,527975093986224986
+d880e198-2809-be15-0b50-a1847266b914,1747298258,4650583884990012218
+fec859b0-1cf3-eb54-41ba-b0622a4d0859,1033003156,8877458007215632915
+d08c1bb7-7bdb-650e-3e32-b35191f67851,4083143827,13745526466159337326
+051cec55-dc15-f48f-0948-b261939badf7,1323672435,5417037941195707243
+57820a25-31af-1a40-f841-d92bfc29eb28,945436986,9696034358157976361
+92c5478d-e184-0902-487d-28d8b750aef8,10759625,10473406954747960972
+a104c4ec-84de-9bb9-b44c-d164912eb038,2401483818,9670298590363855007
+e5bf3d1a-62b0-1f5a-a31e-e712cc3b2252,1150711745,16849890324603227594
+220a0683-fd7a-48d1-5634-01928036ea77,333279108,5192700847540288612
+1532550f-7bd8-b4f7-fb8b-5b0a3f6580f3,949602302,13335497187409583758
+9c51b46f-d27d-524e-6ee7-d120a8eafeb5,1833711834,14702720431467283591
+5f494923-43ed-da99-e05e-ce1c65173be0,467227998,16103841544610663413
+0e017969-d075-0cbf-6398-08e492748be8,388358012,8604576982852669605
+c7bdce14-c00a-442b-aa1b-9b43a2b2cffc,1400998165,15137322308392617870
+545b462a-ed96-2070-ed71-0aed65dbc30a,2356099489,17811287439877581964
+93467fd1-3c11-169c-60b2-ec36b552da09,1835476207,15216301412832986834
+dafea93e-4241-2340-0ffa-1ac2b5f7a94a,1636056834,13582218829809831964
+fdb6f787-7ec8-80ae-dd81-962152e1f069,3881250811,17890938828581366804
+ccaae9ea-19cc-6976-db47-29406aee14f0,3750278649,583042884029883345
+42ba2d25-02e3-78b7-35b4-1c69815ba807,2002187757,6199857907070301090
+6bc5fccc-46a3-6e4b-0f7b-29c41e8f40a1,1883201667,506718582094789827
+188beb00-54db-7c47-bcef-c7c78f7a4dbb,2235224399,5994960863262095193
+3f8533f5-db30-97ee-3b73-6a9bf9ba0408,1818386657,15195272362039684288
+96db22a1-a4de-dba7-890b-a0d89b8438b9,2573819549,675751932302447073
+15acfc93-6de1-11c9-8d04-c1f461c33777,2048389948,5887000304569882882
+1586c15b-ff19-e1b8-1f43-abd3ec468b0d,38510085,11735642282418452065
+66d41c69-ad05-ec75-0d25-96b2ec9fb783,1500592383,12900350956613622882
+31e5ba65-6c20-5984-2a52-f37dd095e7f9,2846097074,2476039449230174605
+6198dca0-ee9f-2c74-f758-45da58e03d45,2546506499,13843633345652846620
+4ae0015b-e3f0-3d99-52b2-242167d78e1f,3255378860,5163224219609918190
+91ddf11e-7304-5f66-829a-151789f7aace,3659871258,651453471216059711
+bc394f23-7605-0b3d-1ca8-d94631d098a4,820624195,15871791761607767733
+20d0cef5-f871-2240-026a-a42b80242df5,4169431983,10802059123434282965
+a2d6e548-f474-2090-722c-4d6f0bf9ec04,2617460937,16194299973574183072
+1ebe8957-8b06-cefe-caf9-a20942604a37,478496274,9137911354521453499
+4c4d7943-46f1-d4b8-8260-a9636c2f856e,321363631,1840656015721732018
+5e4e3cbc-8163-b084-5648-8b12e622f532,853576575,3968310998075799401
+8cc529ee-f8d0-8a66-6391-5770884a7fa0,1812106026,11223165116077313335
+a8920664-422d-a574-d6a2-07a81d04878c,1409373802,18347896267220918288
+e18b0c0f-1429-9d02-bedc-ab6d24dc47ca,2307690071,6989192637104746714
+46bef576-5610-7e10-a30d-ff80125ca1ed,3913759779,13164655235505518764
+06f0d832-c80f-9f1a-bb1a-453ddf7bf0a1,1567125722,13511936311697395045
+581441ad-8c7a-d81b-631e-ee2aa1d0fdb0,438101490,11767741492965101044
+19743ba3-7ae5-8ea9-f910-4bd0da4185c3,1990279822,16192567962351349240
+e7463325-b23b-e063-67bb-ecac541d9beb,876324395,17115516387186596709
+2de70b7f-4603-e4bc-69d0-69e87828f738,311321193,1943111843564388909
+bab942c9-9574-38b3-b5ba-9195c97c360b,3039655603,11500767729612442941
+db103753-e55d-f118-b3e3-e9f7169a30e9,1058479464,7131745504788832892
+40e2db4d-3bd1-a50a-0ef8-c4fc6bbfe31b,2067313825,6734645819937101181
+c493ac04-8696-c06d-14c6-c137dcaf63d6,3313727449,1908638548283802446
+8b773288-6993-422b-6bdf-aa65c11c0a93,2316261478,16160626377520467724
+5fe7cd97-83b8-c564-d13b-d61980d0802c,1433543143,6853706334025471365
+cca141e2-e78f-b429-a182-fa0f3ae9fe44,871621728,16772717795795155917
+2f2f6243-dfd8-98ce-cdb8-9263bc5851c6,734674316,13880508992152872338
+f2bec3af-7cd0-ca1f-fd59-b6dbb9ccb592,780695012,2101274767084744718
+feefc8ff-f831-1322-3fc8-e9c0291e2dc7,1101665993,5574023363585142927
+1a3412d1-6112-be0d-53cc-d2c2ee0f6bb9,300536039,6178204422400123128
+5556ec9a-0d53-9afa-88cb-c85a8798573a,4049592930,12483054294220563975
+fe86ce63-5307-f845-658e-56d1a2609624,3485416239,15454526740912975265
+d30e85d1-68e6-9117-c205-aff36566e629,213373922,3318115119789200991
+76eae8be-6ccc-7fa0-3aba-d36282609f92,326915550,8784969404011987467
+8cae95ca-8cab-6bf1-279c-9c4804f084bb,1833236415,14280775678326479164
+e0a420fe-6a3d-9ce7-99ef-7214bb0369ed,3140109377,6455506127487456395
+c0cfbc79-4b23-64b6-901e-c2604d5fcd32,4237579264,1452813211939852993
+88fe7457-493d-ba2c-011e-fc1870f80eef,3023733291,10037747877615731532
+0af6322f-526f-9286-2cb0-d6b6bffdf3c9,3973566442,640763842891548199
+a0bb6e23-9fe3-4b24-de8c-be319229c37b,2675852871,12178331170118196319
+6a2df9a1-2354-7de8-5144-0f91757d2595,2816861356,621724725909028371
+eedb0d8f-3e49-986d-1120-4b842d3fef15,2507518977,18291148243761217887
+be947983-6fb3-148e-9224-beeb99c10f11,2570447528,14082287257294390800
+f2a38ba6-b150-cf7e-05ec-771de8ce4447,1593759524,13044679129874650741
+0703ba92-5e9b-864c-2e8d-ec8491f4635b,4280444227,12624220021691474638
+0c92a304-a9c0-8e68-ca9c-1c66be771ce2,762928947,14998978169784082417
+e6578154-9995-535f-72ec-0579c920d1b4,1207540390,3360776188775669936
+adc31398-4a6c-29c1-274a-ca4815f1242e,1860736447,11478537934373371189
+18029365-a2e0-a083-e178-e19a914bbf4d,4189414707,1699972453946306888
+33823a51-3736-70d8-364d-73cd52d8c70b,890023236,4976918935556903287
+a6068e05-32e2-20b5-92e2-7c036ee0f47f,2445973116,1303141370639413424
+b7ce24cf-2617-2e5e-cb5c-89bc9b68696a,3603939453,3306073605437425671
+ba8a6e47-f22f-c05b-b2eb-5aa0cb53cb28,1743270446,15815402113787291553
+7f116512-d47a-bccf-0397-1a9208b35997,1301731006,14178398908399658382
+9c0d5e81-8050-a9a7-df9c-adb92b78da20,258097188,5072705533512365996
+ab0e3bcf-70a2-5989-87cc-2557b37e339f,388344281,6662789773040870455
+425f4e59-4ad0-c764-f898-ca80532ad3c5,3959292586,5175749425584650302
+87b71f86-a50d-baea-de9f-3b5932840923,3163735033,1997792020841736150
+4f94b1cf-b026-4a63-0308-3bd97c637978,385889143,6839752015484647195
+aa71a603-7c45-b4b5-7f0f-01e1adc5f277,1332578126,6732382102321771656
+9fd9c2ea-944f-5a10-883f-d8c8d9ec9370,3304658653,1472828423330086172
+3a6d2ab0-d298-2005-2a36-9c2cab67a5e8,3815657695,2431641511858534351
+cbbe0898-ec6e-9866-22a6-57040bd22a7d,1623032147,14405713564916237567
+663ba316-bebb-13cb-62d6-fb40c8ff9e7f,368296055,12400022304072742306
+e25d7a9e-cb18-2fcb-03c0-ae368ae327f6,2729897940,7599630336518631278
+3523dafa-cfa7-3710-6d15-40fe8709d36d,2350269275,9110128771041488482
+ebf69e80-1e38-7afc-2199-d8536b8c1338,3438097464,10184175377492416779
+3f4d4298-ec40-12fc-1dd5-74bfb3bbd074,2682634141,12454652348605450177
+9d1e675f-395c-d49e-69b1-760f5e6ff213,2181329485,11240880079427449041
+79d48a74-9bb1-9501-f81a-fe460276bcf8,1150100211,5603737406377884521
+fc2032c4-8e87-0814-5137-37c4089c96d2,1235659410,14397398022887272839
+0540d808-c641-5d18-5f97-f3264edf040a,1035896070,8172849047405948150
+aaa530a0-2e94-f893-25ad-6534db151a1b,806313110,16413171109790632950
+38da7d5b-02e2-de19-fe01-084f5db413ef,2559795978,6675402083594176294
+ac1cc432-5536-cc75-b66c-966f88f842b1,550700362,15588034534025426554
+f559454a-56f1-74dd-162d-4b39e52d3b55,3414973856,8469916359290486576
+951eb9c1-d826-15e1-9862-38ed92094b6e,155331749,12420138392214518374
+97b27452-26ee-7959-d336-9b904f16070d,1834962733,12168170857434494253
+b3aa9aea-3d88-af8b-f669-ce74eae6e24e,1877870902,17633399000862625123
+086898aa-194e-3e16-2784-a26caf5be01b,1280917866,14358803394463572780
+8fcf7b2f-3f9e-4a3f-b9ce-746d0ba511c1,4012700242,13707927458662983273
+c50ff6c9-7d7f-18e3-c978-f19f2afc480d,4013325497,710026536094407677
+a7e2cbb5-9755-5ee6-0dae-8645a9861dfd,2166905635,9077711297500731730
+67f6f740-1a7c-cace-a07f-88f158aba1af,2810089192,4061737812754738375
+53efa384-cab5-7573-c6f7-9f559b8e5256,3238318815,14619053401034362587
+15c6d416-9c41-07e6-a276-699f7d80cd7e,2778121608,758201363661712022
+46b4074f-67cb-3e34-1065-4dc8850bcc65,3574799603,17969284624609992998
+7780fbcd-22fe-4895-3a71-7356460a228c,9057062,3711698618921769664
+2fc6a2f5-a4c0-f8a1-9f87-c7b087941022,2436936954,8568438391927133284
+d7ce383b-746d-7e50-3d47-4c659b5155d2,1901867191,3493755203036132194
+11403ecc-3f8b-3f82-9a14-257412275f81,2078310304,2898622661958402680
+f04d2c94-06be-96e4-7835-9f4725b5b7b0,1576475967,11433136643698293356
+c5bc82af-aee2-2843-67e3-aa5b1b92bd2c,2079099894,9202316288281259958
+baf4c7c8-c077-dd8a-02b3-c1446b3e5edf,3920167507,10608279238133889815
+be18bae5-b100-5ba1-b7e1-9fed95826743,18709651,3367765985888476289
+73fdfe8b-76af-5253-26f6-e831e5263450,2830817526,5188436187461477023
+403a260b-c510-a91c-63c7-94007c43a458,3496357160,17380826817610835392
+0cc0c300-b882-5921-d1e3-69aaac2ad0b2,219150512,16259412739690757471
+43fd06bc-16fe-5975-a7be-7052e7f81cfc,1883421493,16301202545128312577
+38da6be1-75e2-788e-ffcd-408cde5943ea,3623184728,13166284164993476418
+b212eec7-b881-3ad3-0994-f7af5596853c,42844727,5750446107417390715
+d2a05ee5-8938-af68-9295-2505685d2f6f,1104603809,10860870909576484964
+d13346ba-cc29-1ff4-d49b-ca18aa96fa48,2736307297,15260187264675588437
+ad86c08f-9c21-06bd-6c7d-99ded2c88615,2870500021,14905707168127268120
+aa76e6bf-f9fa-97af-1662-3df73f54c28b,1044713962,7703521781841245050
+f12db909-0d9c-4f1b-03e5-6386da6fb102,4139163593,8733875890480929982
+32625672-6b56-3064-be3f-11f4ed87910f,180494087,10602824892925232625
+fcdc5256-888d-a08f-ae72-0363736ded9c,1878982400,17704925704306421456
+6041a6e2-855e-2926-0454-fbb935a6a53c,3944704482,7675109300842012930
+b7861f63-6d30-41af-ae9a-25587651a0ea,772006737,1964089950429041229
+4c053e38-5c36-e23e-ebc8-245cc06782aa,2755661405,11680314449382499998
+55f99fe4-0a55-1a73-fa42-a92f0368d0eb,3524206555,5442736195305786257
+fb6ea64b-c911-e9ff-2dea-f2dc553c5a9e,3739662035,2124084494023008452
+8213c0fb-8399-c1ee-6900-29ee4db57238,2048797394,16628119963979031747
+7192a25a-afe3-31a6-4c4e-4c2c62514b80,4197778870,7060731736544327938
+1a7fdb8c-b214-7dba-161b-8254eca7d555,2751742955,4603153462789665396
+33c3bd46-0435-ddcd-6054-fe5b9cf52266,2870802215,5222625398271221313
+0acab10a-9dc8-ec2c-e34f-fc027afb959e,1087698126,16037926543457439002
+92b2d77f-c6d3-af91-81c2-aa12fed99b37,3871928227,7841319734855372314
+4b206c7c-ac1c-e3a6-df6d-3c41f160701a,3439623404,5246777945597566112
+35839633-0fd5-742a-4a1d-fddfab1ede39,3486018934,7088309367545032766
+4371e3cd-3f3d-baeb-f147-cd07f6244180,2794074568,9083631827964436429
+550fb8ec-0452-3b76-f88a-d8ddccd4cef3,1329233588,7999297364310973013
+d11c7b8f-5376-c857-ccbf-5ae56bec9e0a,1195519424,5793510922208206439
+1824f4dd-f14e-1efb-302d-4566bb0702b7,2579173859,2143595341624728839
+7df55bf6-9b80-9d1e-b5d5-372a5b43bd70,1698280841,13592611228994319654
+98ecd55d-5502-ea4f-5b8d-427b6b355d66,1873300803,6264591360677093622
+a712095b-9cc8-4a09-be1d-318b650f9daf,3649965293,7114777049653757495
+185e95e4-5703-892b-f07b-ec857087b31c,1662866892,13084357698061934587
+237013f7-3eca-e5ce-64f1-d926d82dc371,3165816954,7706888756107924149
+784c8b71-c986-baa7-ce13-f33fc3d90da1,4234437776,14846448110663297207
+3a0bc798-a2ef-3327-0f0c-cce4df0fc4ec,2899433397,290374346340044587
+ec795a96-dcbc-59fc-9fe8-2ca478599393,2484745341,10926722189449780128
+ce534e92-7573-59ff-cf5d-d2d061f5d333,798658677,16080565151269081927
+e09ceb09-eee0-3184-600b-b5dca32b034e,3914971621,14779668980212029388
+b739f8b3-5505-ff87-f40f-0828224cf594,3650175899,17532925755265066310
+9cdcada7-0a52-a3ea-6733-6e0e19236991,3963040913,11707466607912892883
+85f58958-0a7f-0e1a-c138-6e244b3d8fb7,19147421,7759789733240180939
+87c9c0f3-aea3-64be-84b0-7385fed233b1,339905430,16208779562217115853
+60f2823e-27f8-1662-5727-88a0612c047d,794981412,11384055721331225155
+692bb0e1-bdf0-e127-6e5e-c2a13470d3c4,61722597,1541171531425088170
+b74cbaa5-62ac-787e-241c-e201d51a40b8,3332045224,14957876694865988317
+28704a18-5222-b73e-c50c-b7420ab1810b,981957044,9791903275463909912
+3f593def-0887-78b7-e3cc-aeafabcca5f8,963107120,13474042064938593023
+1a09be93-5178-f8a0-4dc7-134e3c1e77cd,3962765971,8879774274859078704
+41c9565b-0ca0-103c-71b8-0727c9bbb068,2084172826,12274792584707474073
+12c0eef9-7614-3027-2650-7834b5e3e488,3714927028,4094294179386771427
+e09de341-16bb-dd32-d0a4-8c88e0663f10,397730150,5224380659798255912
+ebd9f643-8f0c-6aec-7179-28c85668c5fe,24642571,17988719501543387205
+8038a048-6506-544d-77a7-644010132523,3085135429,5198090282238326160
+a39a2737-45c4-9868-bfd0-d915dcfdcde7,1363164026,1876996042504497917
+bab35f48-521c-7b86-b8f8-89435f3d4086,1905191614,9200413925693717544
+aa650550-6ed0-cdc2-c336-64ee8e57f3d1,1827746434,3570299289956642326
+76590def-cd6c-5fd9-dfed-c72e9bd5b2b6,3773844609,13183865174696787917
+f07cbae4-5788-4185-e8a0-abaddbde6434,1073857005,17343955606352569788
+de870634-dc8c-35d3-07f3-0d6c1f4eeada,3629236752,10983846975610689461
+34ff06c3-a451-e49d-32ef-429ac2324c83,4127591666,6358531389912334504
+fc75ecbe-a3db-2cf7-a446-03514a88bf53,2714157117,12608776162578140232
+930b07b6-0292-a3e4-4269-79b6b364be48,610821060,14652453069892367732
+7d6c18f2-9d50-1ce3-d453-5f959a7e03b3,516002290,4826730754757282091
+b7882edf-f6a4-4a3d-8077-2f83dab970fc,527639106,7324579757401362310
+c575abf3-ee32-5540-ba86-4196ba9ba9ac,872389680,12949168607235821121
+c79d5404-0140-205d-f19e-8b0e895d2326,1598795442,17475326677520362297
+d3c3d1f8-e5ba-82ee-bd00-39ec63f3c9db,1355866338,280733845657989098
+08a90ea4-0861-0245-2c8c-10f115e134cc,1723489191,16473801319673152314
+13423be0-04cf-e34b-b73e-51a2fa2b0c91,2157660228,13941395970396809020
+64d44a54-e413-7a94-963c-0e8d1e6c5472,3247010423,15890413583243956028
+810797f1-f954-e722-5f67-73879faa04e2,2768934930,3286150622380994350
+5b226b9f-8c13-70ef-abb3-5b3d69b93fc9,593017060,3093691664800462143
+9fd0d1fb-82bc-0147-00af-89cf219ffd23,930237114,14374141019902365606
+8e4d9484-33dc-ba4d-8a69-ab07667ba06e,4155595538,6999010654945901382
+d0142334-18b4-b6b4-aeea-9a36f581743f,253689117,10401400836935474700
+28968da0-1b06-2dcf-655b-d783426d5d1c,3080068076,327387549862419761
+6bb06c40-28c4-011c-5516-e189f1895160,3010245564,3988463564873433348
+a8257747-2bb1-f481-15eb-c6e3ce3cace3,3921606712,8791844134896387895
+c4949d2b-3c92-be33-dcfd-3b1303f86c99,1840936199,17505973263891344874
+38304f26-8f72-de4a-abba-6d8cc7b28f84,3307004131,8067826510614075940
+fed91139-b28a-eb77-b507-a8f4b7e375a7,1498530598,13730999467971315447
+1aeb6951-e99a-ebbc-ec2f-39fc095a20dd,2006597879,7737180022272781528
+eb02d968-c48d-0310-4981-b6f1d98a234e,2706916785,5760850978665937662
+d7b95f39-9be9-3b83-5db6-cb2d67b0afd8,2686527644,7881963252593818411
+c423f941-57a8-1018-f733-f7860d79b974,3295670617,17838361699434384142
+754b4d4e-7ab7-3511-3b52-7b6f923e5a78,2790907622,15184388295963946000
+26a873a5-b9d2-1123-5f3e-0d2237e5cd74,660640715,14393665373705610093
+c6d8db46-0624-e7e1-208c-7c28ffe4ee2e,2255517674,4358672785747683400
+10c2fb8c-a6b7-f7f9-c3f4-1951286615aa,1543662878,6319901892137860490
+cf69857d-3b22-7000-1694-11b5ddf43504,1927540080,14243391052237634949
+aea20090-8b10-0059-0058-5f3a4f96b82c,483243057,3856118912779786897
+de8404a7-3e6e-8a97-9ef9-3b0d3e00cb2f,3118490617,16012471665664220492
+570f0936-3f7e-f2cf-c722-a8fad9aeadca,1955367111,3070882234054202169
+25af2dd2-4f2e-4247-128e-a6574156414f,1178733230,6937659064859639483
+596b52e0-7157-c085-cb5d-ed28dc5c6a2e,2504663847,15285589072733750908
+ac1e4373-6001-4469-a932-87aa707108b8,1616592691,15569838800680091915
+529ed54c-e23e-8e3c-04a0-eeb6174b9b4e,1973561019,2171566472649786348
+4302da4d-28b9-3939-9bf5-721cac8f2ced,1622200296,7755764922586684335
+2a7c8c1e-8248-06ba-8fec-fb34ad99412b,2963245792,4000570732381783812
+d368e55a-2954-2376-34b9-09b8ece47429,1964987143,10093745671257911808
+f8118770-9ff5-b55d-28ab-cbe720e260bb,3712112450,13660497969871017795
+cc67f640-d1d2-6c2e-2999-b64efae7394f,2497170006,11449070441064271133
+85cda4fb-1412-446c-3b85-33ee1553c928,2643594971,2972423442895181379
+b159d055-a807-4e35-a82a-584124c450e5,3205974374,10543226731825714616
+dd4a06bd-fed5-cb6c-3bbf-dd010d228ae9,4196955094,8784223021739029228
+e8d856a9-daae-3001-4434-5794eb4c6b65,2273483173,13445073106589680952
+27efb957-c485-3049-0d0b-17500dc9ba37,2703575120,1507486950140459909
+75993737-5951-66c4-af41-2ab2553f6f20,3590219404,9253757501259497780
+ba872912-233b-9280-451f-ca55aa75c01c,3024552757,6553264154577236023
+b8d590dc-2332-1c10-bc5e-3436587f583e,2316226748,4267956686934436225
+2aa99108-190b-a633-2e55-4ad524e44873,1008277682,10643140665913902217
+d33e0fb6-c98e-cae9-e033-d0dafaafd1f8,2695055207,10708277934138897640
+bfacd595-531c-518f-363d-ed9311c41851,3591157315,17770748483821703392
+79011f6f-5588-9462-10da-b55ff0696b02,3988465525,12359867617729229560
+50f67ba1-b73d-b5bd-70ef-610d4158397b,2699063415,6534265413157879573
+ba99d417-0840-37d0-d759-4b048c79f30f,1220762491,1806646876320611514
+3e6bc3ba-236f-8c22-b80b-42e693584143,2717429540,9220320585289027350
+2eaabb11-3bad-27a8-b2fc-4fa5d5400751,2984173857,9026243035513931226
+3528d1af-f0f9-ce27-43ad-ac1dd1fce041,1237785283,2500132665400964726
+19660aa4-c35a-890a-3818-8a21d9c19caf,3051951141,8084551587264608200
+bc6c8ee6-d139-f696-3a13-31fef9dba544,1959571982,13859063161632068924
+7cd63003-057c-c7b7-fa96-0e75567ef4ab,1189873847,2783822203770599084
+084abc78-aa56-c801-3430-cf134c9e486f,1146246829,7529429337547875355
+a9db478d-4ec6-389e-8130-616fbc434982,502491000,10685448592308480934
+1d70ae7f-d9bb-905f-9c79-4869392df9fb,1643852174,4038910485476381676
+c8af1215-4f49-755d-335c-8c4708ce4cc3,1453053312,18343505245348925743
+c83544e0-7bb6-f97d-724e-a193737f25df,230227060,12812473800089582062
+1ba864cc-eb83-e85c-3e89-06690fa26a89,67330946,7802546057587964848
+6c609f76-a0ac-6915-91f9-1c20aaf0efe8,1980286577,11690821071760807377
+6776834b-0a1e-6b97-bd70-ff048bd87096,2521040121,11162472352905297417
+577b5373-3229-9942-ad16-1cef888a9303,3365799624,1583830325666596606
+99161e48-10ea-f9cc-8025-84ff0b0d5492,1758641019,6298472905958567126
+fa51b4d1-9dca-8490-a07d-b6137a50f15f,4138122387,15136106341835441999
+735d4f65-02ba-1936-af57-16299fea1352,2143944170,10769140328735786141
+af331ff8-8ca6-a132-ad5b-9113fc873c08,1603395420,2772000965066099537
+8ca3d95f-c01e-5599-7f2e-a808d39f4683,4123115045,4207003350534731083
+ed6fc23d-f618-dd25-95c6-4540a063465c,4214514437,5745665813674604669
+7b7447b7-8a27-6b00-a645-09070959a1aa,212766349,10467127597093797089
+f0770e85-03e1-7b47-6ae7-42b31d892a58,3163421935,13839333133992803654
+56ce7ade-a599-3a0d-2ea5-007e491c738a,2143131955,1309430393601560926
+1a9e6d21-50f8-65e2-ebb7-a997d1ff1495,1442196272,1855133500155037883
+ee7a16f0-f3f4-c312-a2f7-4d1c401d90bc,2435466171,15794357706396471711
+4e756294-b24d-16ed-cb60-069c13f51bfa,1114224349,11867887601753001504
+c19d6e39-3b48-67d6-6b0f-65e62c803c32,715650972,12714721653824764839
+b68a7c4a-41b6-e824-4296-f24e5e901bb7,1443409215,16109888107850498137
+42ac83ce-029b-fc52-a13f-afd893224ea7,443577978,16350198648149233721
+a0718ad5-4aa2-d846-72a6-207b8c516ab2,850440839,16261166172215961991
+40b08ee3-2fd9-b031-3f56-4468b0d13137,2946762357,1520513358422280652
+52b201e3-0eed-522b-36e7-2fa88cd7b3cb,401128027,2047104831983995294
+acb5723e-03b9-04c8-ef59-d3d439803dcd,195405171,11562642243442051719
+8d0efef6-8d1b-3f0e-2556-79b2697fdd76,2912580655,9577158550102149776
+d95b5631-787a-9715-7ebc-4a416749fcf1,3083058076,11192787320996717481
+6916d971-a984-13f5-8eab-6b82d15acbc3,1762432362,9126061678716025422
+5cc0368a-3c70-052b-57c8-3c993771a6a7,2280324396,4869658848884912610
+dd5c04f0-b09c-499e-5342-8ab3ec088c3d,2587827572,13001854825970494551
+02a11187-bc7e-4a7b-5909-5b0e58b73559,652976049,4790854594071656979
+63d9c005-2596-3154-a3ab-60acd25b188a,4027515861,12583985896571046331
+1887af8c-32df-9318-f048-390e625163d2,1259258351,2533254273622623356
+d21ffeb7-915f-7760-8c15-784d8b0fc8ca,3317957739,16919395874615433572
+6df1603d-27c1-a841-907d-27413aa38ef5,3453946737,10508021272058871740
+8d124399-785e-11a9-3f85-369f28f2cdaa,2607441892,12186786019241510664
+1b2dfd85-e0c0-ad9d-3701-44c7d25068f2,1478947771,7688450328253306825
+9b1a3c79-ce86-d909-5155-d98c1e6e6336,1272645447,13064542956682336281
+401f798e-71ba-a4c9-b743-fbbb478378b5,3340133792,7272529433162450225
+17e93fd6-683e-479a-04e0-3f9ca247ae96,518510267,15381584317475084077
+89782c15-4ed4-3be7-238b-92e4cdac4ec6,4272440752,3253194219967525394
+f8b64c88-9c63-a545-2444-312f86654c7a,2619417839,15486598645313581146
+3d64b7d5-93e8-3172-4d87-f12b9a869db0,2404319345,7471869326537489704
+f1b146a2-ccb8-fdfe-89a2-ed1c07a2b9a3,3292535214,4773722534521809912
+6ac9848a-6c2f-766f-7f73-73c59c4e2d3c,1018137245,17385954821259948057
+5c052e7b-4589-039a-d768-bb3d85f5811d,3915322995,5968279608951038892
+85382251-d853-eb02-a15d-902625440172,3066106044,3282970022992075750
+27ffa9a3-f465-0a72-7ba4-dc170dbbbe9f,3964325710,2980730227279631492
+8f1d2c4d-f013-bdaf-6290-65b9b3e42937,3872674019,3625203970728144336
+86f50da4-fb62-e183-9065-b4daa43a705d,1778552843,487413605863637060
+2a39286b-ebbd-3a6d-c0c9-e81c5e4f9a82,1691567192,18193468039777684627
+6bca1ec2-16a1-650d-3e1f-8af5762462e3,3420911345,39300845086163389
+17586546-3061-be01-972c-11c9e2d1962e,433241550,5696066198745651243
+bc8e8af1-8645-0b39-6797-565660404de3,4139896892,11290385010471029170
+2548bcc4-d912-4c22-e772-30b136d55ed4,1681738083,12977651921524184863
+469c7e7f-3477-0e91-df51-829acc3516aa,2158241653,13351995634529060230
+fa0ef636-ddd4-8c3b-5cc6-92587d61f341,3171232133,14498114236288385373
+f08148a3-6724-db38-6426-813548fb4c55,3878222091,2281482440510230504
+60c00701-e27b-ddcc-2003-83eaaa22cefd,3919422481,6590720434293299721
+80c3bc6d-8ac1-0fbe-138a-44ce14d8d9aa,1912842863,9998111150612923871
+21f85051-3c20-c8da-ef09-5d73ced531c0,1386500306,8571515464067753412
+0017e9c5-d218-2a81-f766-b5d77b9c57ee,3956633241,14091636328031050532
+af72f657-18e7-29ba-7c1e-a7625ce31803,4195142822,3485308965827126275
+47e3ec9e-4858-4cdc-96f3-8ce0742a019b,3760638514,4036529633182221360
+f1f590b5-84c1-95fc-2c36-97c9b5480b7f,1909191733,12894120043680629747
+ea4d2135-fedf-b453-4ff7-fc143486d64c,4262774693,14535278448508409850
+20d771ed-c160-8786-0c82-e2b8f2579a17,501844418,13730816141085190175
+48b6e6bb-78cf-75eb-ab20-caf851584c86,3290976814,6847061515201924390
+097af152-9da1-3139-f641-6f35a5580fac,2775111094,6337446418583670152
+8a92e6fe-09a7-e1f8-f7c6-cf85af68edab,721128436,12159037726069695119
+4f56ddf9-6811-bc71-edb1-a2d2b09d8253,998688387,18148913205500619175
+064d4c37-312e-ef53-f34a-d538a11b916c,396266879,7686980904034129648
+15292d66-6584-c84a-cad3-53979ed254e1,2011372420,13908247306672622283
+b86abf2f-004d-31da-c65f-44b539c85d19,3383603606,13255942640654824899
+ad22670d-c6ad-cf6a-2b5f-8ebecd0778be,1639377322,4664972639665390058
+1c55ca17-9dd6-2d66-1195-b38ce46d471c,1986854980,9463253318872685972
+eeb2dbdf-63a9-9952-da48-1dc3da8e50a2,4192734825,18409660858712240767
+05599911-f3b1-399d-d7eb-e5e9ca08cea6,89743082,9133619020529541913
+60d5080d-5873-76f2-5400-a20b46af8849,3952259017,11120127532564085519
+1a70eac2-e151-ec1b-0a2c-d9015fbe21b4,3622398339,4563975662224559169
+b47653a4-3641-e54b-0121-f6f44a1f2316,1529533080,15415998326364736495
+3b4ded15-e1e4-323b-3b51-34381252db06,939744284,4140377836747509166
+9ec12343-aea6-01a9-28b0-28175a018bce,1988581238,9102250982018391978
+cf456a60-5f1d-0576-857b-56becfb459d8,3752643049,7079881251454976909
+6455b160-0429-77c9-f97c-75d01dd8a993,1103038919,6124284217656885048
+b6a944ba-52b7-5cc5-c6a9-b81b09ae16dc,2308640871,9602367639333239543
+2bfce00d-a949-f279-6299-c90ab5322b10,3566499618,17181653403575968935
+3ac6ed1e-e09d-4893-3c52-f731c162dcf6,1430543172,10356778085669287972
+2da47179-8d06-d210-27f5-2606f44f2351,2363222550,13258574534033601532
+1f86eebc-0ca9-46f8-f278-a32d5d047015,1770485915,1214495373942054911
+4836fd5c-fe34-6f51-97bc-1f49a8561c4f,119571656,11680046661693137584
+a9c76dea-f5bd-4755-1890-eadd04618166,1735015567,4161180443138309715
+0fce37ea-a45f-d5e4-f883-9917b19dd906,734288102,8780641141469893522
+53a88c25-d611-8004-1b18-a17e7484312f,1435498602,9844138252632147905
+dcdd0d4f-096f-4b27-88c7-17e553a2fc41,4284817668,15680454173435840642
+39d1196d-f135-c355-0027-87d0a08950cf,2082893792,15008949839863677995
+f53558e1-8d41-cd91-d61d-0907a9c69abe,4266084498,10419499466251239042
+0cb32a64-7839-601d-a7f2-e5001acae02d,1607684912,746648766832324389
+aecea58d-61dc-c6fe-2253-dd80f9a01539,2469115096,659168165509510078
+0d79d3d7-0ef3-35d1-4f60-01926209724f,3270673545,5156944436173904616
+7366968a-12be-a457-8382-9b8eadab3def,1374955975,5887474309932538463
+9aa6eb86-6ca1-d3e7-3f78-d9eb5e41e174,1071223417,8368411470509237220
+bb7c295a-b2c9-8602-fcbb-664428d546b8,3720309481,18168406838932732648
+093089d8-699f-75d2-1f04-491502b8d63e,2497200058,12468357288379603914
+49931abb-1a53-2279-cdab-73d25d28bfd3,3290485396,1509760857508907137
+d28302df-dedc-7507-d193-6aeac15b7517,650621788,3824317960857218555
+60f368c0-c713-039d-eee0-3c01f8596c86,4013215859,14883957527451555224
+e6906927-56d5-d058-73d2-81cabb13277b,570317043,17005791967961477971
+065e9bdc-79c1-6aa1-8c59-628c99b51774,1794525836,5462932883098551973
+c59b5908-ed7c-4129-196d-0ac647d27699,1018626,13735466778128935806
+3117636d-63b4-2f86-692b-92d78177a27b,3277445998,1803465323977902992
+5b29cb72-ca47-20ae-7792-f05ded716a95,692531666,15074688034535714962
+582bbdbb-b830-af09-2adf-f375c4923bce,1010455376,3039974664021720196
+f364b673-47c0-e9bc-606f-374b2822ab67,1089324666,11183026028623292339
+818f004f-7902-9908-2d9b-ef1e28a6d3f3,1502869883,3999220131476803618
+5ce014b2-86fd-9051-19c0-e2f998c573f4,43003498,9158208065041662448
+a5522bee-d27c-2006-3de8-920a36962f1f,224116168,6237279001538322132
+aa47e60a-756b-63d4-939c-adebe4a9b09f,1881271363,10680889528129288511
+07b0e813-2f18-37d5-034c-cb5dc185b0c1,3821066357,5929143295167201022
+d86bff96-9fd9-5a96-27a3-b892c5362fe2,1717817915,18421405943499966155
+0a16bdb9-0f48-231f-ef90-923423026690,2210975834,13344059595490019654
+079af3fd-aa20-c23d-fbbe-8e055f797273,2831991326,12723180060772240457
+8f4c0789-f3ec-9c1e-b814-e9a8a63e7ad6,3353445572,13318678912812927341
+eaebc565-0aa9-716a-c659-9ad714b8d45d,3131272483,3320208116503230992
+fadc9c2e-bfaa-52b4-dfa8-7ac37eedf5dc,1605664080,14668693285046546357
+8f3ccaf8-b268-8064-e317-df753a59da4a,1263064830,16410746793078531573
+7403b596-f2f7-a3d4-b25e-0e7fb23f865b,3216984458,17880834691406823798
+1d725369-a1c5-5543-e5c5-c80afea9f9c0,2429207396,17458962148719124020
+38c07a51-0e51-d3ed-d41c-79e5ea3d3e19,3213662657,8654406184232524221
+8c10646f-75e8-427b-84cf-3ca3cb9ac74a,614643522,15207862445194387376
+36bf8a84-fa27-ba90-9160-f84aff170d76,511567440,17006426454701435212
+6e171f66-71c5-444b-406b-daecaf1837de,2659896579,15040035127306951968
+6731ec9c-e116-c83c-c53f-4fea542abc76,3170396150,13366857163852332912
+c77b0b6c-2c2d-6877-631a-5c5a7af5cd7c,2201026578,12806870991141613245
+46b9569e-1e97-ecd6-429e-77c811cef84a,2626082060,6394900868540686614
+5f48b92a-f18e-1c27-323a-bd8a0f90cf93,2197899513,8298018465935617081
+7fbb9178-d478-56a4-aa24-8387aaf77507,999193496,12652582500256066170
+30b06777-082f-bb32-1648-bf30ca9a0902,2173030489,14554657019668107764
+179e3f14-58b4-672b-a736-e1200d018c1b,1251987683,2029043947549160543
+512d5a3b-91b1-540f-06b4-e4d06ceebb0c,2480904295,17496119297937500845
+bf12ab87-d7e9-c166-37f9-9eca64d8920b,3481082099,9806175221014628690
+f4a252d9-b4c2-e00f-0e5e-bca8c9d5b60e,2090023341,17671016213986045456
+8903b673-a20c-ce35-750e-eab9792f6e2f,1251116355,3868786976335319769
+c699a569-5882-446d-4710-4dac571d1896,3727691862,13505167653076972712
+25175ac7-d5ae-fff4-dce3-988bfc0f4d25,3378649301,1491801317461146716
+41e8cc08-0232-7ca8-5c87-8389aa508a4f,1203029617,12425777273592108014
+dddff412-c872-7e75-f1bf-e5f192dd401c,3883265590,6880534510157972579
+f4c6eed5-b734-a38a-8544-0fdfc09cb1fd,2018911159,7017288612899712941
+8e49676b-5ba8-b624-a69b-f94e123dacf5,2836717857,14906106266188615812
+ba936f5d-b411-1680-7a8b-f56f46253177,919947364,3069420976465324
+4830345a-f867-f130-31bb-6760fe1bd13b,207948646,6363837160529122838
+771df684-803c-cc39-2624-61fbda3f8292,2864500699,15169108593861079781
+0f43ad9c-5835-c2f6-5ba8-e9330dc29fa2,599749043,2263963862682759450
+b71309c8-7935-87cd-e101-7cc2a89a6ece,945390140,15649619651897614768
+34b7a850-b1c8-25a4-cd4b-1fb5f39b80a2,755269767,17497517314232035865
+40f43ab4-6c2c-b7f1-43e2-f875570b2d7f,166806028,10005227188849948205
+33831a8e-d3c6-e6b4-f8c1-88fd58b1559b,2895968131,4487918471083235930
+12d61d49-dacc-b57c-8454-c42b235dba4b,1641248602,7434658019843426740
+2187c44d-3099-1ca8-ac76-683489781651,1776600197,14911040799383028716
+ac3b2ebb-e677-311f-883d-1b96596f8a65,758419964,1523334903109390002
+a5a107b8-aeda-43dc-4fd6-dc28423e2cee,3839125254,1204709216575507242
+17c156a5-95ea-ad32-1cac-c2566789423e,2636217534,12801000677741562540
+e06fbc84-3643-3174-d99b-e0bc2ed84db1,308377198,9267263238577360315
+927f17a1-fa96-0d31-2814-a2ff7b7f1a2d,1982717975,17828047986647970948
+26a72dc2-d618-44fa-f0d6-718be542f3f6,664525926,13049594407028436193
+f87c9373-eca8-84f5-92b9-af8d4f48664d,977730379,13752036499943449083
+e5252193-3787-fcd5-3ab1-20f9040279c2,2452373468,4049758558046508341
+0ad001fb-d03b-b450-67c5-e33cc499477e,557810581,6373753693878172263
+84f3ec86-8c63-0535-6d11-d9b17b78f5f6,3760566676,1808889336830702739
+1fa2be42-0a41-6b9a-5055-1c8fadca4f3c,356025589,14300722362249112573
+7e2f89d0-b9b2-b73d-1dbe-d8b35c1b7f89,807447988,14961148200952324357
+078caecd-e752-ff22-5c5e-09eee0c04377,3694936006,3365056036295875987
+8c48161d-8ec2-c20b-1496-b73da8aefc5a,827813063,12359692315959826985
+02008ee2-881f-8947-f297-f3804fee98ed,1353990874,13992565108627114069
+65a4100e-3368-6e06-0b00-39306b2ca907,3178324075,7330298598821803608
+60a4ddea-5073-22e1-5abe-f655fbdc53ee,1183910209,5927440770665723069
+a7796009-8dd0-23b3-6c74-a74b288bc423,4221280767,3951791191169763961
+435ef293-fa4b-ac47-b0fb-d9b40e239a6e,1216526205,7193410284429391504
+bfcc1948-0d6c-6ea3-cee7-32b1adc8531a,4165373037,423466725193806207
+1aea279e-1bdd-a631-3925-0e820496b2a9,2049498051,16643732656106263829
+1d4f85f2-7935-2662-a9f4-7dfeef05cbe3,1879541847,14933001106966243863
+b98a2988-3aa7-6313-ae9b-f8a6fb335110,723308264,11157340316860162260
+0b3ef2bf-251d-59ae-fbba-9e185449b48d,3799870889,16276844110609812006
+819650ef-65bd-4bb8-e147-7f1a9bcb2ed4,3094871970,15960299994564053031
+10f811c0-24b9-d3cf-7601-8162c1d59487,574075548,6471149795403420307
+9eb6bc8c-7cda-5909-a864-53e66d4d6e23,3151818762,8938239813020211781
+3ee1fc41-656a-5057-6520-d43f7c16c69d,1453924285,18395639624876823111
+90ee1e4a-e53b-0c23-e5d4-c3f74cc920f3,2568624108,12220269916708073204
+f7faf272-cab0-96eb-51b1-18aebc2736ff,3562146330,9529553528570333154
+e38a8848-4a26-c3c8-af1d-e2990e93a1e2,2188408427,13214233559787922276
+f398515d-3d77-11f0-a164-7d75c01f5726,49706421,10406016902597089796
+16b0f90a-63ee-5c6e-aa35-2be1aeb16cc4,3007855837,6973907426153321550
+80ca5bcb-f4e2-db03-8978-926c1594aba4,2768223257,11263020647898338476
+7bf4c774-ec8f-29c5-3b5a-43449b2a5795,922371006,15671210305783694753
+cc4c0f2a-d7e0-3c68-2a92-82e2c64f8dbd,1553752159,7637722038648325584
+c0dceadd-a082-4849-3e43-07d9f8a585a0,3721076557,6288409774743039732
+9b821504-e1cd-96cf-e420-dedc0c1d4b98,2890365067,7218066140651516049
+6170ce80-0c69-8ad3-f103-dae388a66a76,2924867028,17392673368145043279
+850cce44-e380-8676-13ec-fde2f6288701,2719180450,99311184618720190
+4ae16707-5654-017f-c100-c4732107be67,1302635574,1504705602812995502
+417749ac-7ad0-bb26-d6fb-40f95693efca,2906044788,468221729522679714
+daeb8c45-f2b9-54a0-6063-b363fb332103,3021355892,17847280859449717620
+cf7d78e1-62ae-9d8f-c79b-2a0587ff5716,3201342367,16008874787867547522
+ddd079cf-3d8c-6272-ed97-e075b44ba04d,1027260264,12667941949134119334
+202dc68f-df1c-ee81-7c75-bdf744b3499b,747235946,1478744736613639670
+a26aba35-5024-6e9b-2d41-8d61e763bf39,1097298488,10772227736407395201
+327ac637-40a2-e6eb-9995-c8a150d72eac,3780981085,5416505959409643068
+876ea96c-7218-e015-253a-46fb2956b8dc,3616505951,7697299130051622335
+4dc0301d-4b46-a01c-02cc-a535d7e82ca9,3724332932,890245223049135263
+9840a419-248b-ed6f-decc-23bcac11d9d7,1276442252,4013693296799801198
+c6c199c8-d0bf-4dca-e5a9-39f1ae9f2a35,152541319,17006839585853500952
+7628c52a-98d1-9811-172f-8c6e5c660998,3773573505,3289478909291001387
+57624566-6dce-6f49-b25e-37635b893f17,719237536,12555219907373729368
+562dbf68-e747-a560-95e9-4a387d397437,56833947,10405499649055665773
+aadd1f67-a523-0a77-bff3-5729712f2586,29767729,11874699560930995427
+f4a33e7c-1678-7333-b690-fd1718888642,1715317605,2256861541211075048
+60dbc2a1-51bb-d4f6-e889-16c05670c88d,3739181752,15157696314138137264
+dd8f129a-b3ae-2d9e-f587-8399e0f5e341,795473744,13845246281761760149
+ed65271f-d8b9-9a61-2d2c-ee4c704f9767,3862788421,17206362238947255795
+6808c359-2991-0b2a-c96c-9fea30f49503,3386311390,16264672645049726724
+26c234a0-9c57-01f3-6f43-ac6968a0a5bb,2384948620,18200915005728469058
+93e74481-701b-2927-9593-77f426980685,4004042095,12015308049487215686
+506fe7c4-4aae-8622-84d7-a8aa4255956e,1844192844,9935223145030905998
+b59b2101-d93c-c5c3-9485-e6997123392e,1968646936,14625543041048316460
+5fb6c4e4-ecd2-d201-418c-61741198ccd0,1747128458,7687211977776246682
+f33160bb-ac85-cfdf-4b5b-d9296d97b09f,1461791274,3022780912352478329
+612e4cbb-d8b3-58ff-0a12-eeeb3ad4a374,3590353160,16403511123778496518
+1a0cb79b-4a3e-c037-492b-591ebe279af1,3365040976,4473734522539887131
+47e8d933-5dbf-6cd8-d1d9-3558a8e8d681,2741280237,3499576421363648940
+1d0b1e7e-2b0e-fd0a-fda7-eb3020aabf7f,3638902430,1644746916403748073
+652affab-f2ff-5fa4-b470-a23f23975144,3114513975,16497679709563289525
+2715f10e-205c-c826-76c4-f7b33d929394,2786686554,10309922072987668324
+a1f0772d-64ed-6f5a-43a9-3f1bb18f3d49,2569218076,968210532563128086
+de814e7e-c73d-f6f4-fceb-57759e7a2265,3378390095,14601970608041792108
+62f045e1-f87b-7147-2f63-7f7568caa89e,3130572391,17553383230741731516
+a865f289-0bf4-9a7e-faf8-50e836d23968,436925739,13994711137509580619
+1f8d0702-6ecc-ec8f-d4e2-41bad1cba4a4,645764982,5226475550654500428
+c8a38235-49ca-ea41-c92c-ecaace4a3413,2598636516,10104006780034577946
+d2fedf61-47e2-8d1a-af60-812372e0398e,1439432964,17041943273050424056
+768dc994-3196-94d7-8af5-2b8b7777a0cf,2008963780,1214790705924595828
+2279cd09-56aa-3e71-d565-7ac3ffbb2058,2869833613,6106690880664957088
+da41a266-13ca-a386-abaf-54e15c98af18,263383778,13673993369877376783
+ec7fe0ca-2c0e-d201-2325-9aff43a71087,556927721,5075167420422103429
+3066c52b-6241-f28b-7786-b6d552f2de3c,851208353,12907933076168623919
+5a88f29c-b93b-faea-f242-0b8b2d77d162,2890326084,9475319212682255879
+91aad4ae-fa40-404c-77bc-58c7b09342c2,404395355,1753995930595743641
+e9adc26b-76d4-feba-37e1-382bbad39e1c,2374119373,8020631422580136969
+3fdb2a92-ecac-67a9-ff5a-2d1bc45ae0f4,3184578756,8769904745646381850
+cd0aca9b-9f9b-43d8-ab59-82de8bc57437,2172499776,10352946454339770640
+e2aec22c-23c4-2979-b3df-7a608491dad8,2144582572,13770210649381199032
+d13b58f1-a74a-ce51-be7c-e8a4527d5afd,2188601074,7669351419210445747
+e3ce44c0-adfc-4992-1d70-042acbac74e2,3352731748,1786626076162811015
+0224d35d-ddaf-f589-217b-3abd91b917ec,2386856506,5640112202671739095
+1f9e1120-d92a-bdb5-a33b-2fb2c031e0af,2654694411,16930203549505351630
+ceb5ff0c-26fb-93e8-652a-eefc035c53ef,3020480246,4498802906418642306
+de9d2b39-b668-767f-d7c6-d513aa5ab57d,49117253,11354460084846915028
+ab213f20-48f0-a882-6cae-165a9959586b,2915241807,50238532400159648
+6dc137b3-d808-1a95-9147-2f718a9e5a86,3063833779,7629388274706729276
+16e78db0-8e88-5625-5739-4b45deb8a417,1171589684,5799247087494509000
+eb1b39e9-11b5-54d8-a821-4a649137c633,2563841377,11751536900760504257
+42cadec9-3344-13f1-a723-1e1baf318b0a,966553737,17232854886449988577
+8bfc1015-fa48-b069-17a3-62aa7c5da1a5,270288077,16083602633453242005
+c7457fe2-1eb8-5b74-c9bf-124f10d73d53,2463558141,11459347143487432863
+3d6a0848-4609-5997-b0e5-f1b231f48d8c,3892397347,5100157738232935057
+d1a10e5d-cbc6-4b59-c389-aa564922f834,1759887304,9008770177181328498
+6f9dc4e0-027b-5c79-bdf6-e2497ddf446c,1994275349,6265501410340192204
+8474857b-a8a5-f8b7-655c-831b47eccb1a,2304285744,16997275904147363925
+679c923e-021c-092a-047a-f0c8ed2164ab,2932177151,2603195409870860824
+7966a813-dc59-0a91-627c-39c9cc9ce0d1,384473176,8156143018893904394
+c8def860-ccdd-8f3b-341e-9f1359b3c69d,1274368629,16701812514436080847
+422ba9d8-6b78-6a12-ef53-548c06d2edf6,3713605066,6516692874654317031
+e5a69ff1-64a8-b406-bfc9-8966e75c5c62,581681792,8257729962864164625
+e58535cc-f793-b0ab-42cf-8b0fb44a0fc5,2632372536,9092294349482936176
+c0e67d5a-f501-1c49-9073-caf8a4fb6fd9,3369401963,7894019320392786544
+d3e70bd5-1756-13fa-c14c-196bbebba309,2123806914,13368563207086312309
+6dfb41e9-5e18-8c75-bce8-fc09f941a4a5,1867385765,7587046159709329765
+36710321-9aaa-951c-cffd-100ed3e55323,2262574371,14005855141388780175
+fcedc3cb-29c7-2b33-24ae-d76fb6fca8a7,1478115644,14986072022112629206
+4ba3c48d-f9ad-2e8c-3bed-267b105e95bd,3028920781,10991181856449667185
+5194532c-cb9b-93be-4343-2b488c444113,3948528938,15009569502100021609
+024c25f5-f4bd-b233-6bd5-d0683e909495,907945469,11912880532478699974
+19a68f9a-57a3-a83a-dfeb-c1a746830828,3175761301,15375404487267308457
+0a09f64e-ce7f-dd5b-54f6-a3d6d9e76541,3227645937,835397580660698037
+2b848766-cb45-0fef-aef0-91cc99e5a0cb,3643398438,11331777392085497020
+622863ca-c200-10dc-7a86-6649d594a5cb,3523752748,15215272486646274957
+94db5adc-6612-1331-2cea-18e8d396fae3,2024679387,13784657627173081810
+40aa8a38-6f67-c382-052a-d27b5a24fd23,2881164949,17289932152988613366
+3d4cae88-c19a-f138-cf7d-12cd44cc9729,1767741449,672666911724883560
+d90fe5e3-9adb-19c4-ecc4-acd553807aa4,3972962704,13668776209950243607
+194b5e90-0cae-38c7-d368-fc53d01b7eae,2807292532,10696979875559142716
+380812be-78dd-0041-8947-1cc7efbb4353,3810090986,1003098017367846038
+e0f10916-67a8-816a-b3ab-160245638788,3968490048,17776479523546601176
+c6f207b3-bb95-79fe-e744-181f18791d17,1520394584,3199246808982988303
+5c0bc178-b93b-8a66-5520-187055134e31,3962850579,137991101590229382
+570f24f3-8bee-7987-16da-47599c434d03,3413230738,9715543389354663525
+56f75b1a-f25b-7db0-3f23-a43a3b05e4c6,3692966287,3816430211199798666
+bdf1f995-4bfd-7097-4993-05543e36f7da,182900530,6553954366521286467
+7c89c8f1-6848-1863-205d-2d2e00bbc7a7,2996288201,11586754880506724664
+57dbeeb7-5513-54e3-cff7-0c34b7be80c7,3847151723,1730206863495766902
+37aa61cb-f256-a146-c869-a75609abb4ed,3980380649,16994565114464056353
+0fab3fab-cb40-a260-1cf8-b04403795f98,3069498450,17379073302007517561
+7356ddfd-9808-37ea-1579-c4941e1403a6,1868919021,16895781079818471711
+816a0f54-6b48-4ae1-ce11-2de493f0e954,141200763,7049381822848635733
+229628ec-ba60-ac23-b1cc-875bcdbb4d73,1492631698,4461568665756282189
+0834bfa5-4b20-287e-e0d6-c1bb82acb6a9,1859653542,1374350490276139069
+5a8956ce-aa9b-a71e-eac7-b993cb886c09,2366901000,1117359327653827085
+36468599-02ca-bd4d-0303-4345d19fa751,362314175,968250909190961829
+10aabc10-c2fe-5fcc-875b-30e0e54a476b,2073084459,771054712872220048
+d3856f83-087b-3ec4-6ba2-0e6ff961b499,2656192715,13943878303612593176
+8c25a60b-a6ed-0273-c86a-bbd692af8ae8,3454593695,3005208208208974427
+6c3cada3-4327-f90e-1dd8-f1e2e5406885,4061187665,9875253190009378915
+238ee943-ead3-9943-cb84-9ce0233674f8,3911983069,15091987936761911233
+03da491f-d37e-0d5f-82c5-655401ae6a42,2739653008,12533185375141732008
+e6dddc65-f214-9bc4-aef5-8c80ee254b86,4261154335,3121630197407237039
+683a8687-7141-b841-a1e5-19221d73c940,2656159308,2615221011648584312
+4cfa2716-1378-4340-8023-3a7d9dfd888d,3359202453,4279871307246516702
+620acc44-c76b-c3bc-c808-efe9922f1627,3902587164,9652100631688153516
+372a6fe0-0578-c032-0f87-c4721639bfd2,4142561212,15974123982419082944
+93016ab4-c5a8-7726-e917-ef4fa24c79ce,2635653023,6547909794590763058
+e46fcb90-0c8f-f7dc-57ef-a5525febd014,2512172026,14614752942578476873
+eb4c4212-dea8-aeaa-6798-798e77ccc227,2501893059,5859016736527392170
+cf10617f-2f24-aa64-0bd5-22892fa4357d,2091209292,1777532437136105754
+8bedcb49-66ed-adb2-da1d-dcb31424446b,3483288559,6582772725300385589
+96394a7e-d26f-8479-aaad-8f4c526921e8,921048714,2979043557924127628
+6fca4c3b-ca9c-34fa-dd91-c3f3eab9ebf1,2377511632,651616658000046718
+d300205e-3a4a-5c4b-faaf-c249a85e1b89,3083034144,16184519895237896623
+5f4c6fca-cfae-959f-12ce-b746e0b35233,3422709723,8585333253983919167
+7502dc1b-e071-e134-0619-486258d0b0de,842483839,791143636116011366
+bcc95a66-b31d-923c-6f63-86a94e1b551f,1006502931,16505055919321640579
+f678d0a6-2d9a-5346-c788-27adc4350984,2417659453,20506915965111914
+1b18d941-0762-0414-2700-7c0b363b5b65,2381491748,13285749830313165715
+0d7e8926-4238-d560-b3e0-a2c5b9c3a39a,3941712326,9530875591882566504
+e7443d42-9819-ecd8-0285-299325903b66,78498622,5104110345664807004
+c40086b4-d551-fd9c-1331-6479f734cab6,1766087449,2403966072430814117
+12cb1ea0-af80-edd2-8d94-c1ed03124063,2820635534,11784040843320883675
+dbad4ae0-4409-5762-4fa2-1b56ac246dbf,16186890,14197109886236153398
+972f5f33-aefd-e5a8-2932-f02a358d7e73,2302519851,5513055729007121221
+56aca605-e09b-ac27-a6c3-429120752093,282646933,12206662896646104639
+f41dc6ae-bb22-52ea-a828-22f57428af68,1378647787,116752665950134636
+b67918d2-3563-e92a-f1ba-76d9a684d6e1,6086831,2677151265459019217
+b2b16ece-668a-3552-f651-1806d8acf0f2,2629215573,2944058856056066228
+b35ef0e2-ce49-82fc-1e77-b11b45be51f1,4256109635,16715981231506522497
+bbb9649e-7b09-cfa1-72bb-d483ad396f24,159638061,5938886349510253868
+8534c3f6-f421-ae05-48a5-07c3e5c14f12,2312669239,8791447174794416690
+ec429fe0-d794-42be-7efc-1507d22bedf4,3736078251,7201365717104330680
+80f0d206-fc9e-df41-f0c2-ebb873d6be0c,3735895359,10448150214070719087
+f59c7e8b-852f-3fdf-3b41-05d4697f743a,3392597613,14228298761470582560
+2e0490e0-7f3d-a0b0-9283-63860d01ec2e,3446955125,13159707735447145755
+2f4e4c03-b4b2-291a-47d1-01c81d7c0999,3201831286,6048938888905241762
+e103a2b9-6d72-ceea-249d-75f53f2566c9,222050235,16338624194777008520
+56131f1c-9834-717f-2b8d-d44cc44598a2,3969151577,14369707707697033712
+19e6302c-1035-9b5a-2ae6-8ed09cc0fee5,550179517,15238386493629022299
+456557a4-6b45-65fb-fccd-78fa0e2e9170,3451425966,1000208416180932694
+1aae8506-a2a9-c5ad-f586-e4fca8a36f4f,2861569387,10636668876451471362
+9ded2798-8787-f2b9-e83a-67084f0974f8,2604716626,14337836360516865936
+fcd4a5b5-5792-03bc-ef38-2528c90c70cc,1212600712,16336524225117507390
+a722b137-b6dd-0012-0718-d7420d305c19,4243194203,12316720178853517505
+07adf5f5-cf1d-929c-a000-3b28fc594793,731484016,8566842318375397576
+8e500bfa-5b7f-34a0-a7ae-f2198f2bb7d5,2147219509,10645232013107409983
+8e67bed5-e6cd-28b4-3591-60cf35bff5e5,4229212704,17453889704182542031
+745748a6-cc94-2dca-975c-f09240466cf6,4168381587,16335845474618020036
+25c6b1fb-b04d-dc2d-fdee-fb41019e2d20,215386246,11640147858425896460
+314cf584-88b0-43b3-30e0-fa22605f32b8,2855881797,15177051349603872110
+985bb2f7-7346-c173-1d74-8c0ba01567df,3315305988,11436546011589596788
+ae4e1e36-8980-485e-5f02-c979b14a214c,897798531,5708519282593527184
+a7effdd8-764b-c492-7e2f-3c08e4b430af,3633120750,3365250220094098590
+b8e86aba-9777-1dd1-7b9e-e182cc73e9ef,2863672368,3045337331698474180
+baada2c3-f76a-950e-02a0-d338713baa0c,3429392527,17977651219297162969
+82db9763-0fe9-8445-32c6-8aba1fb1af15,1166521706,16574815223622923717
+4df822ae-6a16-5553-7343-9e0160f0295f,352417066,3033978458206044128
+99be25fa-91f9-c62f-506e-7cb31afb2dff,2939338465,9796761366259776795
+5da9b0e3-28a7-8c67-9134-625836d2cf3e,2548142635,3145875032122235084
+739ef4a2-ef05-043d-fd4a-40870e79dd4f,2307547775,3327463630408167318
+3fb04163-6041-86c5-74cd-1b112fdeb79d,1032476358,13689960202262987359
+5e449740-af2f-a5f3-32aa-5e9dcdf60e26,376733026,781384071060248748
+b751f26e-7c25-3161-0c65-61ef2c0afa64,2102611576,15410443147382569173
+97af5f4c-1339-a071-c9b2-95f50d269a4b,2638544774,5045737465617178876
+64bfedc8-47f7-4352-7a1d-f03768833535,3088108860,5980217264858469479
+ac9507f0-6d92-4e82-6627-c867681fbf4f,3649802330,16829101567057203906
+fd4fb2c7-cfb9-2b34-eeb2-6c1b32f10108,2662914361,17949557020391454499
+a80d27a1-b769-b9ca-d9a0-6448c6cd4b2c,2771989858,17729492367639024078
+91c234b3-cc86-e480-e03c-5a8be5cccb63,3406477384,7052965629297966680
+b4969f90-3e36-ce83-62ed-7260cd2de4e5,3842258578,3125604284848628456
+1b68d971-fbf8-3c13-9cd6-186a5f017651,357377724,105500794403226857
+0bf4fadd-78ca-7103-e33d-677ff9e333c7,1532231862,1925107067465184200
+c2b42d71-f258-66c6-15f0-9f5cfb623926,1495793178,2723164887521724029
+88f460bf-b16a-64fb-cbac-2c46723cf8ef,238583470,14603858899292190769
+ded1b7bd-2037-1495-9241-75b6f37c7d66,3872075846,17218599428680861484
+d3236baf-b552-344f-f40b-5d752d929667,3164570496,12787842076976099491
+a676cb6a-2c23-00d5-c6df-a84579a50c3b,1993588074,3520014441899652350
+f6bf42dd-6b07-94d9-e986-a2271d304a4f,3603726218,490519827526702003
+7a2e5b4c-b51f-cb5c-109c-7a16b3dc42ba,3254754473,7578160824306128504
+b3475a03-8daf-e94d-c5a2-c5639d141431,3305400870,8668721141028700560
+15f28560-7069-fb63-b2e1-628e83e901fc,437467219,17039174452432675129
+1b2fccd3-a09b-4a32-4439-b476b3390dcb,2770932234,794450064679928727
+90ba0d8f-f4a5-31e4-70ff-d099f206437a,522863754,12433748316251308896
+6455c82d-c5be-ba90-2600-82fe55c9982a,1704979755,8217689976122202866
+f1cec9c8-ba3e-9f41-3de3-1c441b28ec23,2056828834,7831575389884618335
+386b3c51-32b4-ed29-7b10-464cba43e900,361243606,14649381834917223306
+d18e79d2-d80d-85b7-e909-deee4164b4d7,3466620281,15600258486193705236
+51c982cb-5940-c8c4-dba8-be77fb0f3d7c,625708428,10372777462210386078
+3c9b3faf-a339-5870-f2dd-3e2a893e4b27,1043530290,16416172990277036975
+f3b1700b-98ca-9435-ddfd-ff25fb8d296d,3620235065,12356586217951204381
+8d73c59f-7a62-0d37-b29d-7e2390dd6b3e,1766587922,6120623590749401423
+6fe6f073-2961-fdfe-4a83-76edef344c05,3423303377,9714839595171270625
+a7a37326-401d-cc13-6aa9-a44842b1bab0,1798110938,5561095301209913860
+8f0907c6-e53e-577a-67c2-e9d7673f937b,1095916033,16291705855604569920
+d5a53883-e131-bfab-b26b-8ea9e79322c4,1063950944,15526294365887321066
+35c920f2-0aef-d414-cf05-1baa4a3029f3,3167375847,10497961145377325911
+53fae54a-cc63-8e6f-f548-98b4490f30f8,2428026957,5914723737566875734
+fc1e4203-2ee9-cdde-5677-e9648c9bd898,3852822670,18048148504143901803
+2e0cd4f4-8984-0068-78e5-13f6e74d0d7a,476378524,12111331712564632946
+a4170dec-b1fa-34ef-62d1-9cf346d6485d,2523329574,8195001594555244323
+431084e9-91ce-eaa3-f0e1-294a91d4a078,1420116382,9304635064316731364
+e62a2b70-3eb2-fcc4-3ace-da1a822638f0,1864848155,1709710914891773234
+6980d6a4-a26a-4f34-5de3-64686c37c8ea,1910084087,5149093570048649552
+0b9d0799-8a7e-ae2a-86cc-858f636aa1f9,4259535494,3272621176661431469
+08f3f881-0d83-e18b-debd-7c5d73e94dc6,1708890276,8226220399117437756
+da0d8a0a-47ad-9e18-2d7c-5af22f7838e9,2504499706,16643959001029487278
+97170363-0533-e174-5900-8e0e0eb37438,2037509589,16517996027951004097
+595160de-e38d-8228-4f7d-14c2aea38be8,1937898985,12202060987401448777
+a4a166e7-8188-8216-680a-015b716a53bd,830053323,5088350624087971222
+73e1dab0-b838-2d64-1444-6aa36b51c9ac,3844796956,9928301370895504373
+940b2783-19f5-d341-52d6-83c4e97e19a5,3755598916,13384723607577999107
+d9d72c46-e0e5-91d0-469e-eb021b13c8c9,368878806,4476362005722212013
+d8a3e572-0f87-b584-c2f5-727c76645d0d,1886770500,4082545247881058368
+cede02e4-8c77-9f04-9659-b30948b72971,1170060457,3138220209458444623
+6cc5aa48-1dab-7214-470e-e8aca18d5692,3360624868,17633020861349648265
+43e66db9-e79a-bc4a-9b65-43f0b5b7b254,943617737,17583726654617087931
+e569c62f-6620-1c40-9411-49cf042f5e11,858536735,5990938343123303820
+affb44d2-e37e-c8b2-50f9-596d7c7009d5,473639828,15844998376084756093
+ebe4bd8b-9034-616c-4244-982efb17c33c,1634547915,1550392526557442137
+b753ebd4-e202-2e22-9192-4de6bd2e4974,393928137,12074234758843590512
+197ca18c-16f1-5326-9b64-8a78289cff75,2373935343,10192420577449055333
+ae1ef57e-6d24-4de9-e6ec-410ea082ddfb,2052129540,1462884217371453307
+5acd0209-0eaf-d429-8790-6f2d88e335b6,3859122000,14005991934520623931
+35806b30-8762-0e80-ec2d-3978ed3385af,2843535196,11404271705275130932
+aa020ec7-38a6-0d28-f00a-5a7bf68e7ba9,3766021029,8970797543518430239
+13fdaf25-802e-ef60-0138-a7216cf1bc2a,2071239849,5078415399284968990
+928d3f4a-1f5e-6688-71a3-c3900ea89ab1,3996256064,14675691783944048212
+314ebd86-e473-2827-09a9-53c3eff87838,551355338,14552880373235846814
+43ead549-b814-cc88-2692-9eff978bb3e6,4080351947,5785838674873628475
+da8211b5-e9ff-f517-f821-41b7881f170a,2776252966,7837883829145778184
+bfdee11a-8151-22a5-b47a-c2b8b7d0b88f,1339588327,7477932381449200393
+22f05e29-408e-db3e-a3e4-f613767d2603,1888242181,6673592840308214121
+70c38cf9-99a2-399a-ae5a-9ae3f6fc7631,1887778908,11126222201736815324
+adbcf25e-a6f2-f5f8-bbc3-daa7793f5d5a,1742489802,4026208578433413651
+2a91a69e-6ecc-8ce9-2058-87970bb3679b,4114686752,5476567283690760486
+b019947a-1910-42dc-74ab-e70fdc947887,90990479,12524793920370548484
+d1d1036b-6790-7921-c3f2-961de66818c5,2503278860,16188045583903684672
+81d305dc-6169-bfc9-52ea-6e4da044d74b,2042675772,4681322166702457448
+959ef574-c2e7-6360-d704-1b4eeba66b72,2911533510,16635251940071276013
+87b17f7e-8a2e-724b-eec8-f58be06d0ae2,3746035047,5047368643033441122
+bbe2e7e0-3790-b447-a1ab-d41a8b05b047,2097674244,8237166972139000787
+ffb0b4c9-018a-7d1d-e517-1c15e1c37f1c,2605432939,7488347744782128349
+0877b85a-d64b-c0b4-534a-97b9aa577114,2579445727,15748639601777996125
+6b91cc87-41ca-83d1-016f-19436ed97d36,2973823163,17240539530179565796
+80473329-cdb0-2a10-2a44-c52954d2fec5,4118569324,802013185874787832
+04d1fb75-8dc6-6d2a-77d6-7234f758a355,1593261528,11422724773953527890
+9d7520cd-c663-1975-068e-ae04a5159d23,1744530379,579952644329430009
+f75f6502-fd73-0f26-797d-40d873c816e5,810713780,12014208597725827061
+0ef1f031-5c17-510b-4367-3c1cb8dcf9f8,3356116967,4908707687142433343
+c40923a1-82e7-9736-660c-adab91a23523,1190158877,10764301370960013540
+17a6a2f0-279a-499c-854a-33691d32f050,336875758,15137649374349382510
+d17126b7-ed63-33bd-fb24-7bc3da33b840,1772442847,92180259331871004
+bbfb94eb-f1c7-286b-439a-49ab36a0c347,464669688,11219892688379737259
+6ac88bc0-ea69-6c1d-5b27-60011dc48850,2177299931,8716525064492428625
+e4c12f82-c7e7-3316-19fe-d72fe3b98572,1756205773,12537783289000612394
+cc195612-c382-e755-2372-3131ee649664,1584879176,236451242047179761
+40c6f5ed-401e-6b5d-1281-81fe0c0bf045,1830709057,7137172986551770196
+c1213641-46c1-5fb2-b091-b1c0aaefb318,1530258115,11454916573792957896
+fa3d8de9-a36e-21cc-b8f3-c4631f2ad548,883725559,185921815837292992
+658630e3-83d5-5dec-2fe4-9a6bcf42e595,1693653552,14490353941511197991
+4e7e3082-0a5d-ea31-5f46-685ded0a7a19,443535132,4269495308556340801
+dfcad5a7-7fac-78c5-fd3c-a2e3a1a810eb,3658603332,7657929778598727343
+26ef5d64-63bf-0d24-62a8-099533ec3319,748489457,17352482548447165517
+0f3ae3ce-f860-c06f-e3c2-1c5fbcf8ad0c,2145624304,17609890741933860951
+d6bfb9ae-48b5-e312-0c3e-136065135803,46337432,8945056741569885
+e057343d-33b1-8c95-2465-74fe5ad23b66,1226199334,15602009062099907776
+ce47b9be-89a0-71ca-9a94-d6f7e0640f46,1627449578,17383014525293481
+7c157b73-763b-f615-d901-a5e98496311c,2306874465,9433969468256927700
+27812849-2a86-f023-052e-f97ef2818ed7,2389490455,15660963174146277209
+4f065d86-e0d3-3dab-ed4d-440fb197ad69,1196676712,11150728233166123153
+82ef6acf-b633-eecd-c5a0-ca45d0a564ca,2818806162,10004390601853169852
+a49a3245-503e-d254-b57c-c279aef8f9d9,190030584,16985999315359028694
+43e5d837-ab9b-bdf5-0d78-dc497dccbc37,3311128001,1141536071049604573
+0d2b6a9a-9a98-b559-db45-eced63d4a0cf,4266266331,15338349340738876230
+fd6a3ae4-5ffd-e641-9c45-4ea25c734b97,3575616391,4969860061977371054
+8d9f51a1-9fe5-660b-3432-8bd39cead347,2942556722,2284372066411878617
+a06f1b36-c9e0-71f9-3f3f-ca0c80675494,2545593276,347442317331260714
+855635fc-bb97-250d-1dd1-adeb4a21e897,2034840801,10168616914660781334
+60d95312-b80e-6179-54fe-ee757e6be159,3004289073,12003267479727824720
+dc4658d5-6675-ac34-6454-4cf2d26ebf71,3660899957,14921285468824043660
+49e66a67-9e4c-7897-f19e-143491cfb208,3223481014,12230524176901851820
+c7a3b682-27a7-f8c0-37b3-86a358aace7f,788639944,1399280181919904147
+92ff2aa3-21ad-62b1-660c-d1d3375d2cb5,532600666,17303239916992332770
+b97fac9c-7cd6-705a-5cd8-ac59491d26f7,1002519944,12935593559865595902
+82d5ba29-8cc3-1fae-26a3-acc55c28c2b1,1394717852,2991095191889151892
+259b4b11-c39a-14b9-0575-14e0fa18870c,172399481,16931695256190270352
+7dd7cf8a-1309-8a7b-d019-a8d8b7073af2,526098830,11815949768757939497
+5f48c419-01c3-1242-d1ff-4d1804b758d3,1501017409,6891177908341207810
+52bc49c8-7933-5ac2-2fa1-72fa1aa0d11e,2702728347,12300643184856502083
+1ab0fa3f-487a-e499-cde2-ad8b41086e07,3921753081,15400779581707736965
+5dee6894-5d79-2c56-9c60-9212bbf80b21,2765992527,9650080701483014265
+d98800f3-6e47-2a60-c98f-62036c3cb530,1585862609,16130361127014491909
+1817dd33-8394-ee27-5b2d-d7902b4e29e3,2707283096,13118685413648597521
+441af074-adfe-fc51-9c0a-4c4dfaf054b2,2815755507,2025887834529679956
+d5f346b9-7a0e-3c2c-2139-bc8a71d0a2a2,3872561534,9641181837678388503
+24d0090e-afe2-31c4-3608-2e1103da2e09,3080473760,11888343278601536805
+ef780fc6-7fb5-dcd1-05e1-c1536ef72755,1762880044,7898396168497899003
+c0252c8e-8591-c5da-5950-f8bb5711e300,3464230404,15139160371122861567
+4f0597f7-032b-3be5-400c-8d1ad010602f,1003823844,17867890825454828374
+33ec4700-5e2d-517e-13a3-28cb1fb78a2d,1011643983,17299384901875274807
+2c893249-1f90-4fc2-f49c-224fbf603caf,814794909,352733628813019094
+419dff02-03d0-ec2f-2bcc-28e417a04b3c,2213264127,4960438651724304890
+3a217f6a-0a51-1a8d-c81b-c01712b29f98,27411815,14503623935448738969
+f40a43c5-902c-6da2-4b7e-9ea16c449b4f,1168943484,16818125513450497391
+54790058-31e6-a4a2-4aa7-46b7ee692dea,1610149831,2977098905910753613
+dde8aff6-d19d-b6cd-0dbc-0fb7a4df439c,501874030,6242186946622205647
+03428f83-c2a0-7616-53e2-147f7b148533,41543757,3511944606934356617
+16796b5a-e537-c275-674d-851cebc5f702,2899305544,694371432619612537
+5e6d65c6-17f1-e64d-98e1-bcbe08e499bd,4057988916,15997543729479879756
+f4110e18-41c9-d3ae-b6a9-7b459950bfdc,2167894459,16868235412320591823
+0cec23e1-e446-6fda-3011-20f431fb395a,3143627181,11722450242121096862
+4964dd58-91ca-dbad-df57-5b54b6321e1d,2876191383,9546965149938398900
+ba24d292-876b-d923-42e8-bb4b969d7f31,1993090227,15327502188442562593
+fa1904e1-d9f1-8aba-828e-5ebb7475691c,2668243878,2449097292712904832
+a9f77185-5f09-143e-24b2-6921105a62e1,3188938421,17825012264304545461
+2cfabf21-de9c-8d48-473a-37e196136d80,615220280,10184816440989846497
+26f5724d-0d2e-5d3b-e221-ce154353819f,440299744,10216498789446672692
+18deed84-040b-335e-38b0-c5546f22480c,2600287102,12249202598579752182
+4ed64fa3-2e15-cacc-3c48-ebb90a295fdd,226092026,17299702961837607314
+0899fcb3-331b-3207-2708-662ce4eca4db,1995849489,3983994594834533247
+9ef2d66a-0af8-aba3-7167-0cc713ebb44b,2428766375,9429444959001076379
+3670e180-1cc2-1420-1eda-87b3b12a80d8,877931914,4391838296471561243
+6e16b2f7-241e-8b9d-49bf-d46186a698e3,1489144550,14202790030587463203
+90e4cac7-b7c9-473c-eb0d-2d587a5040cb,2931024612,5575458692613072689
+d842dd72-3a2a-f042-5ee9-29f07e674ae9,3110765310,7435600853675289997
+b8988737-224f-f1f2-8fe7-358b8c519bb6,2384166297,1586949188576371786
+c46a8364-f93f-a8e7-4fea-b14dc2bd01d3,800014144,2084300594902890222
+e249c3db-1a3e-293a-2333-94fcf75752ea,2762337827,6502826958371279585
+38b3ff58-f70a-b1dd-f5d0-1bed6012048a,1193752779,934643382353501948
+2ee03041-cbd9-4d54-b688-f970ca75f963,3477705889,1503174400320170338
+7a55d148-e4a4-7467-7081-89b09e92d783,4293031072,10451169094083637695
+85c47f87-2a01-6d13-e6e1-383ac62f741e,63695469,1451014497261710492
+25c8efe4-c9ea-a6b9-94ef-5d35156c61c4,3673827440,13755781252399317436
+fdd33661-a4bd-dc01-eb2e-08a8c1049374,2050991933,6325411220316087607
+d5feb360-1e24-9432-8601-b8a971ce8414,3690090112,7747677756649604444
+a0cfb789-9004-fb7c-bffd-b64fda81527d,264136660,7569506946593116461
+00ec2d6f-3270-fcbe-f123-5f57aefc661a,2252066871,4056393817446597090
+f1c2ed5e-a8a6-699f-926f-27fdfdbbdf72,3712549322,10994590212398340024
+4bea07f3-8c9e-bfd5-600f-af65f738b80a,1214720600,2356093680019684026
+820a9979-5067-90b9-911c-8e7dfefa04c0,3377243931,9053966168059647831
+0526ac4e-20e3-c0bb-ceab-9323cecbfe59,667172593,5873584423634527032
+b068c0ba-8b40-787b-3534-6d6e3a18860f,1934997240,17404888874265702261
+ea84fa53-0441-100b-a920-473e4e0c6151,933110820,3775959781178005248
+194b92d8-3e7c-fc44-0926-f93e2f1f2891,3140872951,9577945245066647577
+a4c3985f-0ba9-1336-4818-5faa38295535,2856538657,15273039679119804948
+82a7717d-0364-61e8-1f29-4e1cc41f26ea,460273367,18411813106304694805
+979cae83-0c03-c989-0e55-44e830c042d3,2705890992,10286045254605103276
+6811d121-7e96-7f47-00f6-d2e35381ab35,2044520991,7700989926723093031
+1072168f-47f6-adf5-3f98-fffa97bc58fe,257801954,8886508637824355245
+95821c34-d7ba-87d1-ffe4-dc776e8f1b4a,2599065838,17100748867180211275
+31e13689-236a-2735-c428-cb35d14f6806,4116537776,8726810131420508005
+d6d0beb4-b1e7-19c9-aba1-2886e4dab6b8,1426991976,14274925349545171988
+a1adda86-7fff-bd2b-5939-dbb89568e8cc,3793510931,14180143117079494980
+05359092-7173-f8d3-13c5-8bf1829873b1,113194382,11882100458514001092
+9841c5c1-8163-dfa1-3069-c416700287c3,281072566,13186051824353032283
+de300135-22eb-fd94-5ca4-9034f624c79f,2190897258,10506988118772487757
+6fb246c4-59f4-43b9-f9a1-4e28b8694074,3029533986,17344100443639259309
+cc40ae06-4edc-ebc3-8864-8050714f49eb,932026273,6068543879827897022
+89868af3-5009-a94c-3bc7-c182da0f131f,4165072995,17952344964504052031
+eb30f420-3eff-9257-add1-ffe8c2485718,3793562868,17693930630859952364
+43dce9fe-d888-aa04-10ad-b1c80aa52809,948558500,11279114056578605360
+06180673-0ba4-289f-e257-3dd24c3a09a3,302049123,14314529616902599329
+bb1162c6-fe20-2efb-786b-9bde75b1e3e6,4093144098,2704977141881618230
+6bce1347-87d2-cc4e-e3fd-a2383d2bd073,1692770697,12280620652318460760
+887a9aed-0560-db00-8334-528ceae746d8,3248887567,17605973803289195009
+63dac04a-2645-f78c-2538-3702fe04fef3,1960281429,8623344527637200878
+c1a3a884-671d-faf5-cad6-2d732bb4b42e,2149282824,11773647943027455692
+e8f4e1e3-bf51-1796-84a9-2bb79cdc6c04,1352870135,1189490056151868427
+b555bec7-9c3d-1ff2-1142-1e444b29dbc1,4067614604,1609109723515617378
+d747c3e7-49af-a332-e1a2-6aecc2c46761,3844507663,16520545050428095730
+5cbe2aed-8eb2-8177-34b3-809771c1b8ee,1463086763,306314175926331124
+09ec4230-c38b-4feb-0f7a-a3ae8e24d197,153767263,3578560362945180264
+60db0345-1f88-13ee-efdf-d35bd1a8aa96,98670837,12899834215378849023
+082dcc4e-9d30-338c-ddec-8d6bce3d1072,35359733,6996989335707464963
+b175931c-7e05-6da8-40ea-fbb0277aebc5,2115370855,8699613253183245657
+c06aadb0-30e8-7556-7238-d1460f5e3e2b,3632188376,18066809809705118971
+850914ad-6141-8da2-eef3-cd3222fe9ff2,1262525582,1353233200104090274
+797fdba5-702d-8e9f-41de-6d365f7a1dab,1287235562,5558609213099571627
+53ea3ffa-9abc-7423-8e35-607c4a18e3a4,798985244,16044998569243517985
+7cbd729d-c44b-09fd-970d-6a8fc835b42a,2569385725,16884748424958364523
+44fd3f42-707d-1bc5-21e5-31f035392a7d,1891937549,9433015259008105945
+53421690-1008-8ab2-fcd4-43ed094dd382,1613956607,5994883095005290138
+4c83047d-4ded-9c3a-6402-47138226523b,2007769319,3151598222067845280
+f3c60ec5-7193-af16-76a9-101bd596bd07,2367521675,1761495761338846468
+836e4591-0896-5b66-7baa-0430cd278f3f,28275189,15084331813635196618
+92cabfc1-3b26-f204-2a31-071259c5c6f0,655343514,8678935923350018664
+76640c4e-c278-5106-b398-51f3355e1eb7,336621449,14000344455031848550
+da3fa9f1-0420-c878-1c89-e1f0cb2b880a,1062956068,8788870484127082011
+76d162d2-9c11-895d-5316-e4898a840621,3108076079,509664510104801498
+a337d6d8-d718-96a0-c061-67a9cb300181,3717510774,17668914286913236620
+67fa3cdf-d02d-2453-5255-bb5b1a487b82,73817614,7430249031391604454
+c1dcca07-3916-fc0c-5127-a705c8ccd8e3,1761634515,2746366339434035125
+6dce7edc-16d7-758b-f977-6092e4b2f378,720947416,12251050543370730718
+d1f4c551-2d84-a7ba-6c64-e46cfd684a04,319556131,16335200213430072432
+50824093-3254-d7a5-4e47-45cec818ee9e,2699364434,14366086026605412517
+b5ea682e-92a8-dd90-cb1d-dcad05e8341c,4246539098,17868835212979074304
+bbfdfd0c-4b8a-f30f-b795-c0515d03b5b3,3333266858,3153382034394413763
+3d5668c8-a36d-bea6-3a87-f995275f1ce1,2473865851,3005941999620531249
+9f991ce9-364b-0740-0fde-22f0e3d04ae2,1867298159,1948411837050874091
+42a0c049-4d3d-0995-8e8f-61052d579938,327616397,4698300006883551916
+f2ecf69f-1630-d4e6-df08-0a104945955e,315821525,11266980384987296383
+b1177120-19ef-4273-788b-ff79760ddd33,187244480,16883595763636314803
+0aada665-73fd-c251-a621-c8a66be47b15,3449249292,8851955099615254603
+043d761b-b80d-ee05-fcf9-29bd68e15ab0,4064839727,5537875509098910509
+6db348fa-8a1f-5258-af16-a9df424b54ee,1588325883,2913816803986574041
+3773d82f-88b3-f81f-c43c-b1ced20eb256,2921664319,6002444225077029743
+34d1fa46-3f44-8287-ad53-c8b1c0f660c6,3784763625,16203924976821445612
+f1f957b6-bb92-96c5-a0ca-114149403bbe,149040356,14043682914813529868
+c44a89ce-9269-0221-3908-947901b78c96,2234600908,14538110207564844966
+44422a01-0394-70bd-a0ba-dbfa87716a4e,3829879783,5048578792982952959
+91fddd25-901a-6343-70aa-e6c2c68cb8d7,4009913963,13429889662506529734
+5e16f75d-60f3-05f3-a29b-e1268a857646,4094100880,1304163548699210376
+76bcc34f-d48b-13f2-aba8-a59aa8b80635,3403308953,11486807673473768416
+299dc96d-5e3e-52fc-8630-d7c789386fa8,2069934703,4748422256764051565
+6d9b406a-2a24-b95f-8a26-43d997950727,3072376934,14096537123482496363
+13b8d4cd-7c3e-9791-f13a-5dba4fc95f9b,748406157,8843144846229286353
+e68a2ea0-d090-8ff2-1c89-ef51e9876178,1682321845,12663942010828939435
+46ed877e-323b-e69b-0b82-2327d0107d0b,2543887540,7692055704466691589
+75d06b66-fc07-2a71-be66-79b00411465b,535274039,15634746297838614871
+72008c88-b7cf-f2ed-690f-5db7595e9ebd,1594833867,5956524550794107314
+97a8663d-359a-4abe-fec1-a8b84b5f13b4,1287219702,10267347272381601381
+88404ed1-f15f-9ccc-b9bd-2885846a03ec,1631101852,6159104582794228575
+7c1bf952-9c80-6b55-38da-bb8f78b77cbb,2845827898,10155876014629270107
+96229b17-4a5d-60dc-9a5a-9f3862311e5e,1186776887,919726102307677302
+5eead153-f9fa-2efc-8956-1d9df528a2e3,4093841377,10213797885413212639
+ec06d54f-85de-2098-0394-82ed232fd629,3584836117,16726099207490895062
+3e65b89f-dff5-e0dd-7cb4-02025c99856c,3931080635,545648314833376023
+1e2e716b-ffb5-c31a-a816-9b0f7d92ad73,1807316680,1785032785427702336
+b8dd2b74-8395-0c59-d4c8-5db119beafe8,1123138761,11787644872434088638
+1f98d972-3b37-72e1-cdbe-b11cd25539b6,517927431,2482876559093804164
+042cfca6-4e49-dc80-33d6-5956c4218f93,2961369862,15785257169481547010
+1e39c663-1654-2bd2-b00c-4b234ac715d9,3746819200,506248269524012319
+bb1664d5-d06d-201e-2501-9afd798d3cf6,4289997649,9762815202964275412
+433646e5-f645-ce1b-9133-cd21bd5aa60e,4096721552,12988498871618160097
+d3a39e97-a98c-71d9-549b-ce9c8de94a2c,264529807,8730638376693721914
+6af40989-69dc-c582-98a0-5240b0253823,2863119051,6311144153302903511
+3bb47def-c590-69f4-094d-01119f786ec6,714456636,16417509805117989159
+e23f5e7d-2d0f-d550-b468-756cabf79f5d,3206876708,15603499072303864643
+c305fb1d-6685-5bb3-5b16-adeea3649635,4063167744,13111699792572359648
+2fe969da-f459-1b6a-2f87-39ecacd11934,3241900821,10629021664100757607
+ba219d3f-78af-7d45-169e-f6a858e89de0,232560550,15947272902891338568
+ece1ad0e-40eb-f402-8c11-5119499bb551,1741370491,7062153409557493942
+0dcb80b3-1864-bb19-8017-27f1f177d5a8,3814315864,10968339658885992488
+09c5389b-b7cf-819a-41e9-c1107e1c6a89,801762736,2292529661570596422
+b3461c66-e161-9e40-a6e4-d8c2b864b9b8,2824149900,7307614233968559968
+a5b8adc9-2d0e-6781-94f7-17fa3b0e5eeb,3440573837,6922577193724379224
+70df5660-66c1-af87-d237-c8a2fc959e20,2088912975,2216701277640002367
+b6a722db-b394-ed58-af25-fc0f64083442,1015907070,4337900932186012077
+6fc442a2-1977-95e0-e426-4275aab6b649,2645326687,4591098517432143249
+09aab9ba-6939-26ae-4974-e562c9f274f9,2409075292,9363291280905459806
+be0277d8-9bd8-3c00-91eb-9ea93018f7af,388360499,3842302065545393945
+f93c59d8-cdda-e1b4-cfd0-39a788da5b32,3724294464,9773797697629815821
+5ab4f467-ec6d-f4a0-9a22-498497b12493,4158877580,1376392256090109318
+2ec1f79c-8469-d4d5-7393-6ca24b673454,1261001028,7746349869400792040
+ec997173-85da-ee0b-6855-a0c00d48131a,2555905554,11390530085440100319
+b48493bf-c814-fcd6-7050-3beed97d205e,2650879700,16232696229707053677
+87aaeba3-0402-c289-16f6-b5b6d07e6abb,4071904124,10971185093165909628
+5cc7ab91-0992-b260-ac64-d362a6ff5b9b,1471047273,13049078786649304768
+51f57d3a-46ef-36c8-63a7-009dc83296b8,2242038074,15725709557309888623
+d97a36f8-3f6a-8df3-ddd3-648a938b0792,2111938837,5102748271605583049
+d7a9ffa4-348b-94f3-39e9-40d4156d33c9,2362027938,16921262111804965439
+b6052835-d898-4d84-d0f0-d1185d86221f,3832316639,14525637268662100165
+4e791609-fe2c-8de8-ee2f-145a9288cc28,654142663,10869746676487759096
+ddb7b049-f67f-2db9-0526-874de736d3c2,3888395955,7623294601461256507
+136a77e4-ff6f-3ac4-6029-956b074f7884,3541305943,9172483426760319575
+3bb1d026-2cc8-f72a-872d-cd7c757d32d4,3487756803,1373188664639522583
+e5c83a5e-033b-ec3c-d2e6-a8e054127eea,3093443768,9924033460503355316
+3cc69040-312d-d02b-b289-7a3e96d26b0e,353393595,12555542604920312396
+c3b35507-1693-8577-caab-d226aa11241d,1197918408,17615215764106746925
+e972c418-ba3f-bcb0-d047-53b1722ddf57,150098619,11761441860261890696
+d06a8bd9-278a-39d4-0eac-805636fcaeb3,3709035721,1927747647844463585
+a2890d6a-ba07-9494-b0b8-c1866853824b,975954742,2340247107630425131
+de2d06d0-e014-8d5c-fe00-06807ab2b4a7,3362293662,5311833951565344686
+b5fe0d7b-3206-3468-040f-83f7f0b1d434,1997400835,16138347424068862351
+f25e0b35-220e-63b7-fb34-29ee00da20c1,4026807814,1369445319511169081
+27b5fe0c-fa02-67bc-6939-5a5a1b955d43,1813790674,2194305603293497604
+de5f0215-0a7b-e70c-3f55-cba5ef12bee1,3153485057,11184230428044144995
+fe449eec-2231-50b3-2c9c-772d7b827b73,3700892758,5515536898609020923
+cb548b4f-1f17-4dfa-bcf7-b370bae8e530,690977106,8364867168077694967
+80fac211-ff01-20be-3761-e453ae0d4b6d,956256774,12437527158794330780
+82f352cc-f1b3-ccd6-f899-8510a4444125,1809958244,4203399143865750812
+fca7be0d-43dd-1ad1-e39d-ed87d43fc522,3353171024,9894094938805131637
+03e6c94f-6c2f-a02d-1c1e-e002ef3d985d,2352655734,2511586029718910017
+8011fd66-9a2a-6e83-c4af-5db2c6195cdf,2507873032,14387010002666917567
+d5264ec8-95a3-4393-d3ec-3c27ea44ec73,961454974,12764329082602168256
+78df0dbe-dd8d-7f9e-10be-5736d3d7cad1,207051378,8483055629903304017
+a6ca621b-2cee-db61-1b7c-60117d67afe2,2522543043,18409126801948790256
+6041771d-9d36-d17a-75ac-3ee824b75a51,1576157135,15597773648526940371
+18c430ae-2ae1-b65c-6d8c-626468dbddbe,997725964,16394184965947135755
+f228543f-a0cc-e00c-59e6-095bd335ef61,1293603048,15460859684319688919
+73fbadb7-95e5-e956-561b-b91850b32429,1957987581,13643552845124145728
+858da02e-94f7-e34d-1fe3-5da72bd951ab,3199755228,3212827929951795935
+2046f4e0-ff50-a2a8-508f-1b6c49eed5f9,1475207733,8550371596181981777
+f8044111-67fe-b6f4-77ed-4013069d6545,236168371,15694128761359317287
+2eaa5755-99c7-3703-6e8e-56aa4843dc45,4047717495,15644007941706748599
+448a4de0-1fd9-4b4d-f8e1-efaa625052c4,2107780159,1742933671193751964
+6b80f411-3a35-3fcd-f3ef-7e52bda98360,1989788473,9542344952943544069
+ec0cbb3f-40a2-d543-7dc4-e40f9c68b91f,488634464,15558639003630555071
+3aa9c4ad-667b-1a63-4c04-e8c45e0e2ab9,3912509137,1803621727574479393
+abfa345b-4d94-d844-4d61-57399d13800e,2343095681,13510758660434293729
+e9ea62bf-5f83-a6e7-b570-86dbdbc8be2a,1094374776,14340626672270448566
+ab093887-3263-62a3-09c7-8a526c809b1b,961226143,828785120663114730
+b09c3b04-e29e-9a65-2a21-9e7ee76e89e3,1705693207,3743980042482496329
+175549a0-0c72-0ec1-1729-34d5765a6f23,3713671183,17039481556220538118
+0a80ffbe-3be7-722d-f00b-ff867ea67f2a,3643482202,5852998917816428597
+8ca2e5b8-614b-6590-32c5-e93f9b0c91b7,3307726648,1650114764038665506
+91b509a0-1fcb-e7f7-e1db-4381fb19d12e,1972115099,2840735517800574801
+fa3e444b-2b11-87cc-303b-d4035254f751,1427611219,5966931316587344406
+f2fd4b2d-0c71-caf5-928b-3b4d17c25f09,858994815,10789966562920021976
+f3d23cc0-7535-5aba-4f48-6e4e5151ef63,4052017885,15686701895637969932
+fb71266c-f47d-08fd-5e37-34db21ba8780,3873027571,7823698773189016017
+34cea5f7-0977-1825-687e-ac143bc70a73,690552558,12650375676266000875
+f8bb014a-747c-4cfb-0200-9c34d6950813,1539070794,1366264416749731006
+60a3e29a-7314-3f1b-ed6d-72f7206ae659,2896220776,16950565678341938392
+0f1eb720-e83a-5130-316e-a17471dc5faa,192138361,13412667359320410644
+eb2935c2-fbbc-1136-a512-2ea9670d8525,124888506,8111377574930459303
+89cc8929-2f76-7e4d-0a01-193f08aa7b24,1053408388,4705620001602199747
+f417ece0-a58d-87eb-497b-cc82996c6663,1113275196,3533224842959327299
+2431d280-2abf-9489-c355-46faa4586283,3856347808,7432943835691049986
+009167fd-b270-b5c6-77ab-352896ebbbd6,3124997378,16572919737769672405
+af84f662-fe15-e1bc-ad69-5ce79a7ad6f3,1605305469,13689428895173145887
+28ce59ff-5ff8-80ca-527d-dca581bf9f7d,2264863527,5734373475166286314
+de54650b-e29e-e07b-9251-e45c9dcf8fac,2170587962,2533440984385675202
+1535d5e9-30ea-0450-e806-20d6329caee8,268103006,4204980167436333140
+17b60905-60ca-1427-4b6e-5b0fda90704e,188075473,5583123657108363744
+cace46fb-6e47-5469-93af-9d747ee124c7,2428015269,12715427530475357649
+5277a900-42fa-e3cb-e5be-cd0bb261e6c8,2180505980,2148333888493507016
+93bb279e-f9e5-c8ad-6713-73672f989051,4161145480,8535842367251927369
+77c52743-c9d7-b61b-314b-de395dd9858b,1894555958,761465752072711913
+8136e955-3a60-1496-a72f-5a560e1413a0,3090760119,542863175782238092
+7d9fed61-023f-6f36-1adb-bcc0f86e5d10,1748774887,10534262383318753802
+7b85424a-a8d0-0034-87b0-e101f53e4f5c,2882359978,8174613553990756906
+652d4f2e-daa3-b17a-7512-955297643a3e,3515919250,16560916833554610850
+71890f0f-eb58-cfb1-9ccb-4c065d8b484c,930351072,6094753763701118587
+da556de4-fecd-5f10-8de0-413d06e0142a,1508433886,12202162551993750253
+a946a28f-461d-215a-8eee-63f2f098122d,1392419021,17316235533484097256
+dfc721c4-0b7e-1f75-1a63-b6bb42129cf8,2338978840,16326485686252645360
+543fc819-8b0a-7aa9-da4c-7b4b73c46cce,3539001365,17021315004168601020
+e34a6852-584e-e03a-18a8-c2e28692ea2e,3405272664,407472805254359192
+e9a8d546-afbc-3e53-de90-b5ecbb3ef0e0,1941648565,4995118205593418599
+056f3827-9ee3-e10f-fe2d-1297d80be393,2858850124,5126086662603378931
+ceb3fef5-1e19-2aa8-0d70-72b817c5bdb2,3660987458,13085476921637837420
+6ae7c781-a272-f435-63a1-04a75aecc0d8,211293304,4036783593522375837
+ca9e8ce5-5dd8-524d-a1e7-d9e416181f5a,1863636596,6560447475893819845
+5e97c662-949c-ac42-830e-82e6359a5c57,596474277,2891336719947040387
+2d0b5fa7-6b24-d9fd-7aa7-0ed5ef9fede4,4145048863,14444890229272808677
+0e44ca04-4764-bb35-b305-48c7fd3e945d,1872417199,15225633790468356165
+7632225a-3ace-61dc-4bc3-ec70c6c47225,1407856419,7934146157786714738
+38bbb1ee-669f-46a6-9785-452454558d49,544580961,9617858912112236320
+0aa4b838-d0bc-dd39-6738-655f3c5eb707,3861285945,5678879734720176085
+05ec76ac-5159-2ebc-8fb8-cca49af0eae3,2016000061,17768030127175913464
+5eee3986-2e0c-5912-156f-64cbad7899c9,147028065,827736907027002247
+8d1f5f3f-aac5-304b-5a5e-6909711067cb,3855948321,2465233318171607613
+c35064bd-52b3-c7fd-8548-686c0105e233,3634311203,5298447233578712605
+e44e1849-4bf1-220a-d2fa-295128c10c97,761984763,3081967160310100294
+53944d83-35c9-12e7-0d61-5cde64ac358f,582434011,3005653780690359744
+f905b7a7-eefd-a56c-1cec-37e3838ab782,2893555048,688430930560811155
+a90138e4-2e14-6824-20d2-ac520e34929e,3792589991,9906224577660751797
+84176427-b7ae-1ce5-cd94-612df9b0e974,3287941326,16176700769496392832
+8f944a1c-f1bd-658a-0542-6da8aafb4511,12992874,5011328726326380636
+6b19856e-96e8-9c48-3991-d4a267834c1b,2058368465,10604980179410258082
+fb4a5533-c46a-486e-cc41-480c04b76e96,303259182,12446478329193268458
+c2592105-32bb-2943-076d-a0c4987fa93b,559905374,5653358637537839460
+85f660ad-1407-13ad-3939-4e0891fec1f1,1771793920,8018473844829599530
+f54cdbd2-47c0-6d36-4917-684626297513,1184820659,9045921677921929965
+a190858b-507d-b50f-f457-198599d41729,136369953,4808204370415052582
+672c1abc-1a62-e559-c8c2-1cbca4a90939,1080241271,886550377687023432
+09225937-2819-f799-23f1-d6ed90f6a72e,2537762274,16772642337487371041
+9d3d83a0-da6a-92d5-9b07-a2aa13be94e7,1583347709,9983078953163800379
+e571a4d1-7caf-1b16-7aab-d0cda10917aa,4098534539,10377807719434829004
+bdad6602-c7ef-51de-ad19-9d84f6b2d932,1758683039,17526530866642966986
+971dcfef-a5eb-8b6e-6d56-d20f0ca4c7e1,1059227600,17518570532775252662
+fe2a12bb-3136-9f6b-2a2e-525d95ff2cad,1582418270,13902781074118726924
+3449d14e-e86d-93d4-0b1c-4ab0a650e50b,3032865846,18085482576810276023
+a272b7f9-4d37-fbda-e767-c50f84c7eaac,3866232445,10154866551443173784
+6f205db6-167a-7750-04df-dbb0204fa041,1629118463,14120910189547242274
+c58992cb-0b2e-2e15-adc2-5d79326525d5,1777776220,14751518949240853928
+fe88128d-9836-f722-5582-224653457a88,1525613868,2675326613227192044
+7bd44945-2598-7d30-d34a-078cd4a643fc,2877274650,4563026171249380089
+d8db4d6d-56d2-b5e5-42fd-1134ad743116,1509148110,4985183805735502249
+3ac286bd-2d3e-09a5-5c33-70133f8692d6,29045873,13696541776361744420
+2c6db37a-a959-dd75-4929-12c01e27229d,1797463532,8299291624884546133
+6273a0c3-8d2f-5a37-bf9a-b77d567fb2a3,704282069,12229490248098841440
+f1736eae-8352-e453-8a48-747ebff26084,339053843,11675829183845994830
+7d792dfa-c39c-6c09-fc2c-8e91ac0caa04,1805297229,9959984229426568149
+bdf8b1ba-2ea0-b760-fc88-b6d0b6e892a0,3355877823,13489674281015958649
+e4dc28c9-ee15-7852-50e3-66c56fcae5e3,3753643139,5498858403238052304
+29e474e9-cf23-1169-42eb-a52180b2d81c,1924902837,14898675314624732610
+8ce98fd1-e48a-1e43-9056-ec629d9a4458,211188969,11245303160972724247
+71937edb-425b-0158-a1b0-e5dad5d684d7,3816825066,3922650337666857750
+30ece62e-cf23-1015-fba4-150756d2e2e3,1919936857,11827366500131756478
+b84dbff1-32d1-d135-4675-5ace3dd6ca85,2252460100,1082395501448768212
+4f9148f1-8fb2-77fa-3cd7-23655879ed60,412298880,9025723412142300229
+12cc2d55-fa68-918d-abad-4ef619db706c,2236052408,14551518096617852851
+74538a3d-6681-ecf1-9f31-11bab43d5599,1799193205,5889423232576042477
+4982f9ae-aa56-d3d3-2643-1e589f0c72dd,1981428445,12258068868305300889
+eb0c7d9d-1f4f-d8c1-5223-26778f149ad6,2126313501,3729079157629952571
+21575aaa-ac05-c1e0-63a4-1b28fe92a833,189144287,2157608870839870100
+a4a934c4-a992-e5f8-440e-1c9cc5ec2159,3754771067,2402980868673382085
+66879f93-c936-162a-5f2d-b58979e5383f,1895074264,8530632172721149027
+8abd1250-f119-ae3b-63aa-013805e5c654,1609999755,2147136471664504011
+bfc0e552-637f-2fdb-7dc9-4905cea7fba4,326988027,14208419878144803958
+06bd2ef6-0d24-0922-f2fd-c659632b1242,3342314556,9303334508656317984
+8771db95-19d9-84d3-5299-646b6c7378ae,1505479608,6871036516095407163
+73ddaad5-7c2b-a421-a9a3-8eb018d39432,2509306618,9859061363960863138
+a1a37786-f355-a58b-c5c6-8f2473d369c3,3011306988,3178309360835007412
+99044c62-8180-2b73-68a2-15947cc61b2a,175237013,3325645319165961779
+3dee9ad1-f427-1e69-74ac-e20e4e305d49,3739916264,1143467950509012363
+2b2b8b8c-8ed8-4a2f-ead9-0cdf6cd506ea,3758836912,15141760905465932548
+e897094d-73f8-3bb9-9995-9b919b062b79,936215831,15468001223546613803
+24b19764-d0b2-7e68-2957-881e7c00b892,1919475050,18350249206574697804
+126ab833-eacc-4575-aac6-550415186851,403624125,8911302141679503608
+043a19f7-290c-1c38-a1e0-92646b1303cb,1266948105,6186218252832606797
+e513bef5-0d1d-cb3b-167a-c29e9ea48126,2078368413,6153949180332544394
+5af492f6-2904-e98e-d03f-2df9f6ef3ee9,4002051021,14710574635149167851
+fcd9aa26-19f4-5c50-f4a7-ca124a9632ec,952770889,7534861390239927214
+6641dbf1-4bd1-fb21-ec9b-267099c5af6a,3526571796,2525407833533750818
+e73c16c9-4e8d-460e-d7c0-8d840f5bf7fe,988869419,17697580310956919965
+c6282be8-9ca2-d9a3-fefb-b64b31a3fc31,932403167,4961433778024914900
+88bea556-a298-7e56-f6a0-82ef7d7a965d,731204124,90112256951711037
+671eb786-1179-b738-7787-f30b1323aa82,1929134890,8705061197444842165
+c095774f-0a6d-9448-4023-2caba4d4e829,2402578160,8950476323383817334
+ecca43fb-cbda-5243-3844-9b4a42186ef4,4258965461,15574137922077333189
+9cf36bdb-0e13-573e-0279-c99752598605,3084919666,17898453020351625663
+9e073404-1c57-9971-da09-c5f21eae8e35,2617815883,1917289665575711139
+4b2aca91-49f7-eafa-0a9d-7a1a14a0f431,3493509083,2809284555583856648
+cb8d5b2b-e0a0-1e45-805d-5d4407d8d5a0,493605935,1350000691214420502
+037adca9-0ccb-9440-e1b4-14ba8b655d0c,993218829,6943755491014858889
+4e7c31a6-02d1-32d4-0a50-f300015a1c40,667914627,8984695685655602205
+326c1d50-4699-a04c-743f-fc01c3f03bcb,101900456,17001269794122075420
+008b35f3-56c4-083d-90a4-53029b3d1c1b,3513910678,5355106295442318183
+6824a946-669f-a400-4507-b7e5a7013b85,257427548,7010568814660635536
+0fc5b35b-e534-a6b7-0994-f7f701b6b20b,3255361333,1138006216204778793
+745d9e79-bfe2-7876-413b-004e30b396b0,2266161562,15390523330577121659
+23b457f7-80dd-4094-47b3-2164221b2429,2277963472,14010443697262673438
+34bfd4cd-d158-e0ac-8469-6f1e447fabf8,4186352386,4803400191808664280
+63540097-90c5-c8a1-f397-98a838218d29,610690797,623716018075302229
+08c5e0ab-64bd-78e7-0072-3dce89d0afd5,107676225,1405804138526789338
+30e9a68c-da5b-7135-e3aa-64b3a438d230,2728984453,13678922530406934003
+16781f52-e2f9-0680-4232-274cd6c2f842,3139277306,15262673179966919387
+7a99a06f-368a-cc41-5785-75dd946a1fe9,1719576686,3690929702111020940
+c3cf1561-2e20-db3f-2501-f66f6dc1a08b,238854463,11094924906509873705
+85da40ab-a036-543d-2c72-ae2018babc3e,3126039475,8742113691226690750
+f2fb481c-a0f4-de1d-6613-3f4c496aa7e0,2565481036,16085264098422544574
+7aafbe0e-cc43-4c34-14d3-97d4c285da65,3197675008,11159943020042554362
+0673cd76-89d8-a93b-94c2-dc496702b31a,494427679,12672094702424021598
+f2a3c05d-fe2f-1e79-4d4a-9035babbc50c,1301567232,10330738236497630897
+6adeedf0-2d89-1361-6785-2db010426043,3763518640,15391255669402601541
+057c8901-762a-ebb2-e1ff-8ef46ad5721f,463842022,5295744425879380504
+7449db6e-ce1b-bed4-7f9a-a848649b4d2d,1965397214,16989528197122745054
+dfeabb37-c841-72e7-c2f2-34a6a2600102,245961561,17748949132865486311
+d830711d-897e-28e7-8630-3439252a366a,3381951374,15594451544039218039
+321d3b9d-0cc1-f9f2-9db0-fe3db33ada76,539015178,14677510847819390663
+707949e8-492a-5ba4-2b2b-b4ee08f826b9,1556998043,14881164941592377025
+69b5497b-19bc-1849-47fe-42782c043ed7,1632104315,8044919619156101665
+b2067fa2-dcec-c071-7f62-7ead9b897177,4030597725,10288556704546996023
+90c52ce9-0b44-23b8-404e-7feec191b18d,562445130,11510375579291396973
+8ddf6d26-4603-db3f-9224-257a73eff3b1,460637048,16693740438408915378
+7b005f91-9456-5333-848b-7c549315c31d,604383788,5821897922170870203
+c61482e9-f6a0-3346-9a38-10fa94b00332,2221259777,14992312451976527288
+18185674-d3ce-5138-baed-68470826d9ab,315159419,7709636374757543892
+fad4c3b8-7f83-477a-7714-9f4488b82bea,94223371,10614776106216982177
+bf6613bb-4d73-fc4c-27f8-3868b15f46c9,2469549774,5678308353802308078
+f18c023e-1466-1dd1-59e8-23798e2ac835,3329060437,8269043645474620473
+e54b7953-876e-1c91-3ef1-1a01f4df98bd,3244139017,16035114943121857187
+f863e4d8-1372-0060-a933-913490bc0da9,2768772881,14403127662090780847
+50cf32be-587b-df95-28fa-3f3cf2e8fa29,2933228283,7826877709751217604
+ffa90fbc-9818-109d-718b-a108a2fb4569,4273980627,6482877008444990745
+175de3c1-65aa-0f00-09f9-36d8eea39dda,1873281541,7720852751738146878
+a7f75b13-406f-6d08-f4b2-0cb572d4bc2a,1492670363,169066892358276874
+0bd83dd6-e36f-a0ef-5834-98064b180b60,203456326,15232941117302149127
+8a6aa150-c865-741f-38de-d59e16dd421d,222610477,11138981386925789744
+5b0e2a69-9277-7aa6-7e17-7bc32856c2e0,2174258976,1690284072849075513
+1717f335-18bb-4fae-afaa-f93a52c3459d,2413485742,10752101112864574771
+0b571bef-9164-a80e-6cc8-1fe1c0a8eda0,4136313201,14262738095173447457
+26fc4e26-baef-2b12-d8cb-a51af03ca08f,3539501210,2268841717682602189
+58383f1e-68d3-4475-e7d5-28cba4edd8ed,248568397,4548006542424410650
+83bc7c7c-85bb-1f3d-9fa0-4bba5f14a24f,1735543326,13557299846316262425
+5f3929e7-e161-e533-abfc-722b336e6393,3613103788,4577675662416151419
+4e9287ae-401c-515b-9cfb-401378647b6a,497328276,12888384543002219411
+142d9abb-6ed2-7923-e11e-994c42c8dda6,963326233,9083459525951649835
+2a2d6823-ec5f-272e-4138-cf9fee960bbe,349750742,9233350388766079254
+b759c666-a485-08c9-02f8-9ba9b7c240d0,3058366711,6282012482205574450
+0b7c218e-69e4-e719-bccd-90257197e725,2870993878,17831989087425631630
+dfa411f6-3ebb-4255-5de9-4c137a47fe39,4045138522,11642538593079423153
+48f14596-2dd2-d23d-e442-f3d9b07cbcfb,1520024995,12066879111151803036
+7a5bcbc9-2d86-e1ec-5783-a07d1022ed41,794255657,10346073583174990299
+623dff3f-86ad-9962-3e79-2b61dc57fe96,1846051771,1034445527689699114
+835d86ca-fddf-2c3e-ba0c-283cadf59a0b,1899419545,12070476683617155976
+235fbdb8-4e86-5968-b101-b8547e6ccd9e,2919936556,8854997857527718855
+db452716-1033-a2d8-f78e-060bd4dc31d4,2837443764,1289243939000568049
+ee72dc13-dd34-b964-fa92-0059b150c850,2761504462,17192565338618280782
+9524ee24-5e48-3016-8c4d-15a425fd93a7,775779904,5580656337840670443
+1a957a50-d1df-20ab-32d2-c5900a296c4c,3501284856,15990746273862953483
+ac02be02-c99c-cbfe-c373-d9a3d2c32c3c,3576541473,7679348074984234063
+dc18e240-9244-4f8b-7686-d6286d0ca025,2676708378,1208155240629455735
+f39eca5e-da25-415e-c2cf-593e48989b41,2407042444,17090756089355321934
+208572a7-23c7-31a5-7c76-265f7c417dbd,1623486639,14215992644937523277
+abf4525c-8528-614b-f656-15d0708a72b5,4193737608,599496259354171546
+0f33716f-243a-0bf1-46d2-22de33b46a98,3072051401,2272039694705088734
+ccf4636f-d8ec-7316-7709-98e9b08b1937,1158107863,15896949793398010815
+4e835ad8-69b4-4dc9-aa8f-e6f864a427b4,2527384935,10455297700757589163
+37fee0f1-1054-7e53-902d-406e2371a916,2041094926,3189438837254578056
+b0d25327-c5bd-331b-dfa9-4f258a85c140,764227385,361442395162465316
+e55c079b-78b6-a9c2-b2c6-9d907d09017f,1327971441,17066870356638747617
+22ddc846-71ed-a40d-241e-f3c28efe96b6,4181230031,7953805700788455153
+41b1e988-f682-140f-d5e7-cc66246a9fcf,2102109098,4764509797514544132
+c62777b6-17be-a87d-8e71-e255c8e08f47,17575264,5751131288666852207
+81324763-0d8c-a043-b4c5-236825025c4f,467154816,404866838923696611
+c920cf3f-6f4d-d46f-e45d-d26994e1fd96,1815712406,14428516014411078796
+fbc9ca6c-b3b9-5187-16e1-3f9215430895,2213304711,6521311803476622922
+a811b3ca-6bfc-e163-e382-16c92ef21317,3271553568,2672340173979943274
+19a1950b-d293-7adc-5dd1-e23d7b9588cc,2969735094,14826620314177300444
+e0a5d6a4-9467-30dd-5cfc-418203c700a4,2188823026,11934897672516540509
+fcda2f62-2eec-0e02-25a1-56d797f1832c,1635546083,11323023211423187231
+0ce13a2f-6b62-9925-806e-06401baed403,3478318674,5643083546940440767
+8581bb55-27d0-8eb2-0334-d6aa85ec4504,2979893025,13174466946900409673
+f3778fbd-777a-8d2f-7cbd-4d70cbfa2174,3488167511,16944494666946758053
+7dc68215-18dd-fa15-9414-e5b88c4028fb,4037577807,13185802388918557936
+4b14e4ff-e54b-b7a7-a360-7a23efffa6ef,3054573510,15048910736693973009
+5a67c072-7385-9276-da86-fd202d1ad81b,1209688108,5592324825511764467
+eea6fe79-82f9-fd2d-8d35-a99da213002d,3083291232,17037462013028019114
+aa6983f0-5b67-7029-2297-24ea0983f2cf,1190811556,13391988341432950010
+1e835aba-1962-b98d-e696-d364d3566012,1606191758,13674382198850241722
+29432909-6ed7-bb12-ebc5-b849e408cc53,3607727917,7394957527825188207
+bc6955dd-abab-e863-eb52-4f2df3053675,1095284673,10820898134439857084
+136ceda4-ce34-4d5f-baec-bf6c3aab2ccf,2162725969,3541792713755497868
+32af70f2-5c86-67d5-299d-891661e63053,546958998,13164132844541104597
+0786bb15-294e-2bdb-719c-edfced27c770,650526502,16503651941418520550
+8801ebb8-e690-1aa4-56cd-e60273e20a5d,2709522291,760374121708663366
+636a10fb-761f-a565-d7c8-0ba5909d7c4d,591105550,1079668913787431024
+6b96a3e8-d51b-2345-0e3d-d150e8a0f0b0,3566052918,1237825502888676000
+42416cd7-2247-9673-9cc1-7f68db10c2c4,959023506,8394892852601857362
+89d043d7-eeb1-102c-aa8f-13cb7d0b564f,3463309596,17876364738207450757
+9ed1a7d6-a6d5-39db-69e7-9cbb2f0e1bae,4228374390,16383845724321379886
+65c89dab-e3a5-ef82-0dc6-3485fec3cac1,1754432022,17968041713004658763
+cdd27079-4941-3b8c-deda-9889da68eeb5,1757906143,7983099401267979070
+1000d24d-a000-94a0-228c-7047d3679dcb,4203488335,822668752513826919
+7d025287-7b90-4288-bab0-e705d0f5b879,3703874026,16060370873100530747
+450bfac3-c6e0-c764-fead-60ef2eec27ca,196428146,576445429439201554
+0c8d596f-2449-6aed-b2ef-e671bba3de6c,2161673687,15871153280412532467
+39c310bd-c3fb-3676-6590-1b600623d8b0,3901694405,18241142603702921673
+3b242873-d407-db37-7c3c-a1c0c5d4d33c,2092572243,8067502097370040462
+fa50351f-0f0e-f0c2-e3cd-24bac4027484,2719241875,17205968090043853405
+878d9e84-8e9b-d5cb-a7d6-194c930f094d,1168681256,15159702155343199798
+e4584026-7d7e-f1ca-992a-ee53969fe816,254857823,5701706829398049500
+88ea214a-e7b4-b9ea-a17a-16436d7b4d5a,2174357054,9310104043349854137
+d3c31b3c-56ac-10de-1a00-8b1f02b110f9,1906662049,5781721088958664121
+f20bf0e9-6446-fe5e-62c4-e0c1dcbb929c,3227154356,15924511170581537156
+ae885390-4638-4d67-3bd8-3bf32375e0c0,2998943686,6587742403489416162
+69984d97-aeac-f96e-abf1-46fa3de4905b,883293214,6148118420292128326
+eb3491a8-6e41-3246-c890-4b294e6ea1f8,2925884819,11813727586484447625
+dddd6a48-27c4-fd09-ea4d-ff38fb137b35,2738189052,1095265624076211254
+1efb1205-97cb-735e-a725-23895ca52da7,679487716,11802485831408860104
+0e565ee8-f8ca-6e02-730e-ec5804f5f6e9,2992993716,15911426235267979387
+03e7f712-d066-f711-9152-9843a8743d81,1858570694,10847823045621246217
+bc701dfb-fdd4-2232-a4eb-e469d5b6de81,1323754044,18374987906712159348
+7076f7be-92e3-403a-f46e-79a39627682b,1574230469,9104009829164878265
+bf77f53b-1963-c9e8-4e2c-f9b8dc207b90,504678804,14010098157764969313
+0e13bf8b-c293-ea72-f033-bddf182799b6,2107096827,13561085209657698380
+c2cef0ef-fa71-bbc3-a0fc-7e2e56da83c5,479062759,3874810806741065626
+c417440c-6d9c-5d32-5b39-75769e1a489b,3445778124,33636013243014144
+2801fb52-493c-be58-dfa6-9defdeba63bc,3217918247,11197435778907038227
+b4f26110-0b54-5c08-b040-cc6abd51ee09,3228719172,8300340575766041414
+25aa9e5e-7f7c-9528-417c-aae19ad4f2be,628860617,11097221894349545253
+a171f6a0-94de-dfcd-37b6-cdd797dc428b,4061369203,16736924105187907790
+df2caac9-6ca2-475e-4e6d-f6bcf55ad7f5,3633218137,17164928437483410211
+348fa099-5076-5ea8-f807-d5bee987508a,2345802724,7716009253572777341
+695a17b1-e0da-9ec9-a5fe-f6f7836b0134,2970454519,11467380395415605484
+cac2d38b-b3e6-c4ff-62f4-5af3740cf267,3591984724,16348560542098236686
+143abdb6-8a2a-604e-af77-c4851b8b91e6,2187028052,18211510934072410169
+526ec7e5-c758-2f69-a21d-b749fc7049db,3063698714,16109198000394471620
+2c1a8b6c-4f83-9e00-067a-6ab6330316d2,3779311693,9326316771878663978
+5b6417df-3d9e-98f3-424a-cfa8fdb5de98,300983558,375500552177168915
+80142f39-8b44-8fda-aaff-7c46d724a5f5,1324610629,6289088872569076094
+db854508-6736-0083-a596-ac0762f23718,3242532678,9318608410380925618
+d778a01a-2602-6367-66cf-3426581e96de,3931687443,15202552975439232460
+2d80d150-a376-81df-00b1-17172ffa5fac,3852463093,17914748756636277700
+e25b095b-f9dd-0484-74f9-077ae093c486,3912299746,3672674668372906462
+37dbf32a-6953-17fb-b113-88338852c3c7,778666353,13432965485139312762
+10ad11b1-8c47-3569-ba73-0d71a66bb086,2988525792,711073670674180928
+3a5a91de-df02-6293-a34c-ae6226ae1b1f,1499806367,17806262110724184689
+bcb72ea7-5e28-a795-ca66-4511288d303e,3190720863,2380484243229229654
+7cefbc7e-159d-e67e-7c52-978533766603,3652940507,768264151207032184
+854e7bae-bca2-66a5-ad0a-244060b11de9,89277474,350388609086855404
+a4657b19-d111-5546-97e5-6af132385bb6,642745117,10407108469999584811
+3ea54969-5718-cca5-c694-7d5516ae2729,2697596341,11082291008762215761
+80e34d0e-925b-03d1-a66b-f6a733f5060c,2972379538,405275790398225578
+bcc640f8-f59d-45a0-08da-cfb4edff258e,241286998,14131458845401277811
+23866394-d72b-600d-4397-d0e6af88fdc7,6670166,2644547633677694626
+e0f658ac-c855-8550-eb1f-9d49670759a1,559304536,1321527209153469572
+4ebf47c2-756b-1b17-7f5f-f1bc41ae9d24,2234360933,2242439893778538497
+75221b55-3ba5-8103-4a5d-f11e194ab35d,1309787092,7324417407567046253
+31945366-c2e2-6495-0e2e-665d9afbccdb,3737813817,17017292708099205502
+262e01f5-16da-0b2c-8511-2e75ed21ac65,3319268061,157261950699636021
+92bfd06b-ef85-2315-9c94-46c8aa50717c,3122503091,18156643964809131964
+6ac05394-5934-ac35-a185-e404b2a53144,1185231083,2636095359440013505
+78e35796-80e3-f2e5-55cd-7110c9d0b397,3045377365,14817293063328490224
+7f0d06d0-582f-aa30-cb9c-40efe107d6fb,4285693711,17526302716311078411
+31b3eb0a-2216-5d42-f899-277912380629,180557428,5631804613570238995
+44d1d44b-1b40-25a7-0048-5c0fdbe46d3e,2065247601,1482317518624877367
+ff5bae4a-34e2-6813-0065-d379076bbd6f,1139030630,5500150726159451701
+a200bf4c-c17f-934a-6fa2-44572531312a,954201399,16660115533266631185
+d9ce24de-e8f1-1660-c787-38cc3b0c121c,3502753892,10394557477538458957
+797ffb85-df38-a438-ab0a-bafbccf317cd,2023469428,17118264402979383705
+4699fb98-e5cc-4750-88d4-dbc086f631fb,2573925467,15844350645405649888
+194ab17a-a04f-1169-6d93-a7ddf22a0f0e,721316929,17880692232525433548
+18cfd380-2e77-01a1-bfb3-998698980d30,1465085962,10962547693449480609
+5b229efb-7571-3508-5766-ece1bd975344,1991009865,6733834774376498338
+bc374912-5904-174f-408c-7e7cf1a19847,997865866,13857121088995775176
+232e828a-9c07-6c8f-b267-5e8c2e49cdd2,1535283812,11998358444333645302
+5a0db641-fb99-3cc6-5a9f-a45bf2e439e3,668424669,15359016830353466828
+b299c65a-92ed-5791-716a-1be646e3b27e,4152226191,13594343297747364107
+452a0b5a-02e4-0d86-83a3-e1b8680890fa,2846217724,16526110667671511841
+44d803dd-740a-25e9-98ff-04c4dd358c1d,1948158911,571438769883785606
+53233b3d-cca6-c541-430f-ba828a1fefa8,432310548,10765028642627581257
+0d05d9c2-c0ce-adc5-1191-eb6299f633b0,1796580462,2232443756735866990
+02b975e8-2db5-feb6-7980-f2377f922bc4,125635654,16171289240429387882
+6be4d627-09a7-2c22-88df-70589183bba4,2300893828,15139421030674588168
+4428c6b1-d1ad-dd16-bb58-b2f3e9ede48c,241722238,8900012125604955122
+d7c44da9-30f2-a7c5-8857-8d9e02884e91,1567384346,4479612248813567109
+d39402da-6a0f-55f4-0262-ab573e4f8401,3803822974,7559638488595547689
+ee7fbdc5-903c-f4d5-26ed-03d27ae534b8,1100597201,2109099683943201503
+0884be2e-e1af-1673-19e7-efa7e5b614c3,3499825358,15985745983728627300
+dd5d38f2-e7c2-6740-09dc-9a6ea865fa87,1677954761,15813157824692720965
+a89a6157-e0b4-b540-2459-33569616fab1,2066676919,12831884160968809846
+9d3569aa-5e49-ccc7-ffff-db605a1d085f,4108439325,9864144013444135309
+58dff308-c5b5-aa0e-93e5-a2d99a4649e1,1153589932,4938019990055784669
+bb101246-3c58-09c8-c635-b69ec0da6282,2747501247,5549423456450488218
+683575cf-6940-a113-1677-a394151fbadf,3901404170,11678469259691734277
+617d6b6c-62da-2c38-f0d1-5fe1f823824f,385094182,6995372283453532026
+4aea5260-e044-2372-dd03-2a2705d519a2,2558695027,3740853148040381123
+9a9776d1-8b6f-b485-1c12-29ff185529b1,775677776,17435763649341628500
+b28d1d41-6d9f-a0d9-493d-c6b0e1049603,1390849530,13140374613487215040
+5e465648-fd3d-c6e5-db8c-eed4f54d4b7d,3554295268,16269896355257593201
+596f7e1c-43e0-a9e8-019b-e03c948a4c80,583286299,424894900734510348
+03ff4990-df46-44ca-5ee8-c835a66220a5,1018259303,2761167650651428524
+86547f0e-a2f1-364a-1e11-366af495c14c,3729471259,3849487017255825207
+14aabf67-655a-29d7-cd3f-ce2809a6425e,2403037577,8340321182921442837
+f8c67b93-8743-ba2a-c11b-3017bf0ede57,2410042408,7741823557309984009
+979171a3-5138-650d-0484-8d22ebefe31a,334787165,6071873226011931439
+60c65e68-d39c-766d-2db5-5575dcdd9996,3126992929,16726714456865707420
+c3cb0a26-3887-296c-7a2e-f525ecbe0bad,2284294960,3742457760481353879
+9b4b599f-d251-9a83-dd58-51512d1a3bbf,1345949292,11968089411548833251
+f0d55a42-d89c-f38a-48f3-a1afc9d0d565,1077858341,12946061391099281737
+c20d824b-ea4b-6cbe-b84c-8545458df671,3148545390,5298087389909789542
+7b303823-c905-0810-c3d9-51e52c055576,1810060642,14483970331892107554
+4675b267-54f8-913f-2564-3e772e99ccb6,2214741044,1549330404257418172
+bc7fa33b-c0e9-c7de-c7a8-11c756f52455,222652623,4091855512415784414
+cc31428b-11f3-e8c9-a3b0-c3fdb92f4ccf,3293363401,9266476227407634487
+fc8f7640-7a13-c6b1-bd54-bbdcf5a84f52,2912091680,10672516528220695801
+d1ee4e12-caf6-3d0c-8485-81f8d206e9f1,32925136,9749355156448753242
+8fa91a6d-48fe-d70e-2b34-925b24c032bf,1268091312,14392983132676934230
+8e632ba0-e27b-77f8-6540-ab43ba2419d9,2229533829,9258322516115129638
+10d83a59-622d-352a-a4ce-bbcf7cc070e7,2959787793,4998901472285257380
+a1ca191a-ccad-f03f-7ad3-c82d90f9ebdb,4167141756,4768688966450997374
+46a44181-511b-e4cd-4ef4-3a3fbf520d80,2085066923,14659704578371096905
+e771a342-3f08-8ed9-ab24-5e27a55c82d9,1654557005,17066875878096793642
+df42f763-f4d7-6164-a761-11f5fe8ea79a,4033625442,17741618665840684801
+21f41f37-7fb5-a6c5-fb17-124d4bd26d4c,476525611,17076310178334748407
+33a09734-3f07-6b26-fd61-d80df861c3c0,4071358869,16187246159971420834
+72bec677-1244-6a30-f694-df46894ba440,1722900457,11593300362009081305
+ec7391fd-3665-1cdc-7ca7-23509b14e3eb,1434509711,9838455533862984545
+d8d6c192-15a0-7700-2cfd-37f79c4f7103,4182828180,10296155195350945659
+c41b6faa-0312-deb2-f805-8c3d0c32484a,2253633573,2804945509349765236
+e4b8f46d-8a89-976e-f033-0c9aabe664e0,3648007966,678859495320906039
+5fa3cf47-0100-91f4-eef6-064344114881,1233685163,5852380751858534530
+1b49677a-fe66-5e31-617b-4fe45a1d5ca6,1742445276,9565644936120408983
+9e3b1868-322e-c9bb-5e43-70c35d84677a,462839403,1308858241459264949
+eb452f88-1011-f0b3-679c-71dac8071b6b,4037517275,6384125565589317489
+eb9c55da-4021-d364-0f92-966eecb1ceec,3593791067,13202563706621731474
+3c530b17-8f0c-5ae5-7e15-157fbe6c24b5,2376397504,12934061977281249882
+454a0ec2-a0a1-c954-b238-8827f73099f6,1637214339,15357575396038257256
+7755f27d-b9f7-db44-1516-f798b6ac504f,2178499021,16059177632689307038
+d413007e-b076-646d-9a30-ce495c816e87,4138606815,3684201296250304036
+d62b296a-4fad-ecb2-6e65-8a3611789fef,1808419767,9983812478257595299
+3bde3aeb-bbdb-0eec-e7a8-c23c555a716b,1986033977,960181353046876587
+8482cb99-aba6-ebf2-c824-01c8f798dd22,3079349201,7705118470947985965
+78a17256-9933-5c9f-a6d7-81ceb627aa47,1267396220,2267521173152507813
+7edabfd1-60a8-be46-9855-f578f7994396,2730734746,11452270193684255217
+6015f041-f0e2-f9c6-eb18-d6e6b5d05362,3411852685,2410371107943077731
+971cfcf2-1971-b7d9-5fd4-13f42597c05a,596542651,14344981651043507922
+1c046680-e3c0-1f5b-0197-33b5086b17a6,470278316,3107856285357947585
+3555eb12-80cc-fd89-08ad-3f7a31368f68,1471642932,5127063713673985680
+7927669b-ce71-6686-00ae-0835b91ae555,1395966314,4803595548663166601
+e346f76a-3cc9-db86-86b7-1ac946bf5be6,464801320,8228080543662066774
+131df8fd-721b-077c-68df-43545bc402ba,217191983,14027065432877081031
+1a5302dd-a652-5b45-83cb-5b73050704f3,3031325101,10018824744877382504
+e5a2f625-e819-633f-8396-1f3b0e1fd074,1503426523,4598377374244507410
+d3e27eb1-9f03-f884-2299-96c70ab6c4fa,2896486955,11176012507118569681
+4452ce0c-b3f7-16ec-369b-31bcabd30aa4,3146560700,3257785940460673495
+3be2487a-26ef-3e88-23bd-5b1b7f427756,343311466,13930457199219622561
+4eca025f-4c1c-cd47-456f-67ed37b7fc0e,3648978220,13812059780541888343
+b206e436-dd66-cf73-aba8-1fa5a0baf288,757205213,1506964246930220388
+e5422e43-431b-ae74-1b97-2d27f3df4386,3400937976,9395446305483893379
+4322e0f9-6844-3657-6791-139884827766,391326820,6059049760000015236
+931670a7-0919-55a9-9da0-ce43ceb74f1a,3568357849,9732597790382262497
+06a28c3d-2365-86e3-aa41-4f9fc9cb1e2f,858017838,9327113526132118382
+5164cd9f-f1e5-089b-1bb7-43418c50fe55,1876070525,14499570550431053387
+76c4108b-566c-29d5-f4a7-c8b36196153a,1326487940,5007606094333770304
+d902dacc-86ad-4f3e-73a2-cd72b6f75b9b,537324697,1590132054400948312
+a43b44b1-6ee2-08ff-ba9c-bde202c5a878,3150451594,12355361146246472587
+ac35e0fb-4cc1-fb20-275e-444aa3f7d668,4009366101,9303178593414884288
+08dc3fa5-2e9f-c7f5-9705-647989038848,1165324205,2349272812216732893
+74d7b326-96eb-3bed-a3b5-a2a208268820,3097275001,2211985077821663652
+a70347e9-8e5f-e832-896b-8536e0d8f181,811702637,1942264379396312746
+9c008f1c-a264-74f3-58f5-a081e0d26790,2541562205,5477322400606221996
+3f5d214f-c493-8432-87f0-9b83d2e918ad,3059892175,14263708171092651119
+26d58f2e-106d-08cf-9678-e752c2b2d127,786737899,11028640811649445071
+ec2559ff-1f54-b4d4-b522-c18c9164643c,3532054534,15615258578309016286
+7b22419c-a42d-21f1-6c72-e4266702716d,3651224063,10224974309338677956
+b26279ab-909f-6daa-b2f1-ae70a8958d0d,1030032383,1918035403422557495
+4e849241-0618-b3ce-a67e-c26f063fa1f7,178291998,897847444205667111
+f2410d5f-fa44-a3f8-e991-adc9e517800b,2567247895,9050828489462577224
+22f673ae-171f-28ab-642b-1dbceffbc0f2,4280903404,6154940963958934615
+4772b7af-1fd4-087f-e674-70058f482ece,3049772428,16196501306656271325
+f78b5029-95a6-e5e6-dbf8-0e5911d215aa,1804691756,10136378950603924971
+93acb88d-e9bd-72d1-3a35-aefc23a71106,4014846489,15070386675956530487
+d15ca756-36a6-8a38-500a-2ee23c05b3e7,3548400392,5021210738779259930
+d6c7fb48-eadc-cb85-7f6d-1be0f3abfb14,3341816576,8531109256794184554
+0aeb9d0f-aee8-f888-8991-128c3b4d343f,1369934382,10366524475466087260
+45ec418a-5cb4-9520-4083-8be734ece607,3058045478,893724664372585314
+809fad8e-f2b5-a4f9-de73-7e93ec6bf14d,2959310888,6012576003333776642
+59218c96-6da6-efc2-f927-f56654899a71,2344412906,7086467342923416778
+2f5676fa-1bdf-0eb0-1005-4e71cf21269b,971633158,5944928671009639795
+d95c8259-45e1-3639-d72d-fa02ccb542a8,4014303107,7174343609039301359
+6e54005f-3924-803c-0411-7c6a938423b9,1880408177,1570034928911415846
+303ccc93-4f79-ce5e-06a8-9d5e810dc0dc,3139235129,3889161878071456781
+4e7e647d-eb6c-3b87-fd1f-08c0f1db1049,95657471,2343531857126503412
+f546ce66-9676-4abf-eaea-193d0b93a899,1798017635,14618175774732559756
+10c62a0c-c149-1d27-23cd-a73731b790e4,262841255,8504296348586986804
+34fb553a-db5a-05a7-99a4-7619cfcd2bb5,4052202153,14778140300990080145
+158df3f8-5fa4-25be-0a4c-823ce6ec79a1,2814974654,1123727642044417078
+4c175805-b0dd-2f66-7c6c-5d65cdadff36,732715799,3097848149036639071
+71bd498b-2282-1ed4-08b6-1e24f937acb4,536575581,11524104403605894767
+5dc324c5-bffe-7061-63ac-f7bc6f2fd826,4033792366,2891944032470788142
+0e3ed608-19ff-e86c-ce2c-c3c4980b70eb,614684906,2460431695689308277
+2f4a7b19-55aa-f648-d7cb-8c83868db025,1355557005,9486304681490906799
+c3b96353-a42d-22a1-47ba-70c741659539,3944699612,6617777543241773929
+db627a35-cded-937c-f8da-5387ad26523e,76467466,12718854007263897743
+b609a05a-4b9f-0c38-15c1-1d2c9f52fb31,1375885796,18103306573069897124
+e80906b7-d717-79e3-b51b-9b00fbf12b20,3315756279,6252038278733384091
+d964991e-17b7-dd22-1913-d43d354efe49,3082081040,5510082669090021800
+8ac5f4fb-fd48-27d4-9853-6dc87b694618,27299423,1018763043394658205
+c7f374bc-31aa-c9f0-7983-abf61d66b426,888890483,2938044730387633125
+acc7da00-38a1-0a7e-0c3c-96eea5b87e4f,2737470386,3280795683116266609
+4c0c3dc4-760f-dda7-d5c5-993c19b2984d,1889392017,7797496737707883768
+c69b339f-0458-36c8-4441-b04f36834113,140732231,9499414136589804849
+9ada09da-1fe9-4e2a-90f8-b91a47d1ac1c,2568991486,17272933896044727476
+41a5fd72-a461-d014-bed2-1314c15712e2,2182365788,645684755735645461
+6c3e26d1-a192-8f48-fa84-b63a3eb6fc9a,4036184498,4697550231902128838
+81d0920b-bfb1-2001-3e5f-98693e3721ed,121464959,13656584574770782092
+1ddc3c50-a6a6-4848-f1a8-832a431ee0cc,1727931462,13186402274609912028
+43ae7d40-4d69-0da5-e3fc-f7fbad3515a1,1648806759,793079977739854163
+7cc74935-04f0-19f5-5b16-4e417aa1b13a,3062376572,18042165477518712458
+8a0ea668-28dc-2c8c-07d9-53535c67dddd,3031975792,12081964741829621269
+a499318f-b58d-8f10-ebb2-1d93de9abe06,395049353,161814756779756049
+20976203-b456-0a88-4509-88299390ff70,2593890350,5233625732658980769
+a65e86f8-3eb5-33e2-6b58-2284ef0525b0,61334925,5437893555969614724
+3d4dfab1-2c27-2f48-5152-25107247c741,1531451208,2655318152543135710
+965a376c-0346-e96b-a624-f658f5a8f056,3848092235,18360539038853634902
+4812ba87-3f14-578c-cee1-886b3ffcf084,555594316,8073533799865892996
+acb82cfa-e4ea-2ef7-aade-109086e02c01,1306594153,12121859931671378246
+fb189906-85ee-4942-ed1e-daba5703c25a,327529525,12210540059841016088
+49c51746-49d9-51d6-8367-bab5c324071f,974767110,6020242571453148981
+1c467a74-882c-e1a6-5f17-d9623a0c4b38,2360763886,15725107676679042274
+43f15f24-0882-0853-d780-74e981978c52,1166630773,905913615230359971
+6cf8c61c-822e-8d41-46d2-36d8c8345137,352406747,14654932419397753443
+ea61d6ae-87ed-36b4-ac67-ebe2ab1ffc45,4253415534,3475593603489158126
+5e31c609-32f8-b620-1c02-f112aac77318,410371609,4058865945943567791
+a73dd58d-7ac8-7ab3-aa77-03719c87359a,3181911464,51936171989380643
+16a00c64-6590-bcbc-4cc6-353a585ac27e,1637854697,7119251352243506527
+07acbfbc-2164-e1bb-97b3-1aa72b73c787,145514163,13972721487689226442
+2d0cc2a5-11a6-3498-c810-07a3799e8d0e,666897110,11356488885289581120
+950f1ba7-1b6d-9969-e47f-85ab6a5888bf,1605319922,7281085197777342248
+3230809a-3c68-bb22-ecee-8760838c0509,3279540986,1975819580400846950
+d40788d0-a5c3-6629-a681-833194b046bc,3407301149,1429814377906782399
+2d3b1026-6d92-4b0c-14f6-f619426a2c74,4085727303,14825033925790300658
+f7482dda-2621-944b-8a5a-fe8061b10973,511687222,4639664708718497312
+6bea7dcd-2c96-9d1d-4152-ebd4c5ee93f0,2833382827,370422163075597925
+d5b10447-9172-4e21-f383-13a3ba3ac1a0,3796030667,14748678635204313797
+37f0605b-e9d4-612a-2b8c-854014c6df69,1201209676,14679830891122267552
+20fea944-cc5f-5d25-a3a2-67bc2576b778,1238099954,14747645110588910495
+5a47d2c4-3527-85ea-02cb-ff633e15e577,2535643950,8789519402978905704
+57017b3e-2178-21cc-5516-df49ba53ebed,3594688126,3425362018486141700
+83cda6b1-ff23-0759-a54b-7d739321d63f,1795792203,18009539623219598951
+fa426e16-184c-a74e-30ef-7ed933fd794f,2660637180,1041849223141420319
+56dc96a0-65bf-83a7-3255-a30f719783e6,931113656,5093233216371461820
+f25902b0-7648-fd2c-d843-2dbf932b0e6c,2917870467,8756038949242140311
+ae0d9b07-9a2b-dbb9-a8ab-d300208b60b3,2828073894,3435742249056265585
+1efe1bf9-1164-eb55-be79-2d7e131b2a6f,3753375350,15471196814312690793
+cf509a05-c4e4-94d6-8d62-0a643f6beca4,3067034789,10889124473951460597
+f2a4cddb-c6cb-6573-f9d6-aa668f77e9a3,4239903048,4677569305416253400
+f5723303-c453-e077-aefa-860c41bb0ac9,2323602090,7335207704226195123
+d3fcfca3-acce-bd75-6d18-517b17f67024,2188500809,7573926804002641920
+89210f8e-0e71-3126-fac2-20ad6bda61ca,2468997715,10587750665208678475
+379e5dd7-020c-451a-c5bb-f769e8abfef4,2315840283,12467788665658402361
+53135798-3fe5-9f6b-f982-1e042e37d201,1692713398,226113899131017355
+c44237f4-bece-575e-4487-583f3322bf4c,2686316786,11659601154497233090
+d957fabd-1b8b-f029-ec16-3d320432a0da,208450193,2629995714046106399
+b4dc688c-7c0b-221b-79ce-beb2fc62c94a,3546442004,9686158660766363960
+2181eeed-44c1-700c-87f1-d499a52506a9,4103282538,7085529921266199314
+3537bd48-be2d-8ed3-b57f-c77bee6f4f13,2128526532,33310372239553410
+5315e942-c1eb-e798-f958-daa5a1680f31,1431855238,4989306250380960454
+3f094c0e-97f5-add4-7817-199b11bd3c66,241501552,6736341093212513330
+92159546-82c3-6482-ab4e-f3af7aac9df3,2937877993,10845436944122379698
+b5dd294e-537d-a565-6fca-4e58dd5f1886,2309945936,15075051035314396897
+ddf3c0d4-d638-96d7-a44c-425e61662f36,2770536300,5609220136922714475
+ca484f8e-a248-794b-e0d3-de5496ac7321,2834021690,5586537982693336410
+c7c72505-cd22-2754-88e8-413cfdd6a759,1830801397,12807852762622050595
+9e045448-0a2d-b19c-6ed6-2779342094ec,1331023357,9128420937617769355
+c39c5395-aa0c-409e-ab09-404990b20e7c,156980564,2254190806270403623
+c2b91d7a-13d3-cd9d-65fc-b079e4ad307c,1919705122,6961974830174577761
+6a5947ed-f6b2-3a9a-9bc4-3aa09eca10d8,1829596018,17690800965245912284
+45624d98-1d88-6e18-5f5a-92660a72e13f,1066002821,3868324316988703633
+a05ccef5-fe89-d99e-558c-b09f7578c7c3,4188159415,17694804641234909760
+ccfeeab8-8da3-48a4-30f8-ab110804afbb,2409472089,7375672330066518425
+7384a33f-4c02-de75-61de-8ee09638d730,2694262604,9928006938007531539
+484febba-f2dd-4509-b27a-3207df77ac9b,1804492818,4183509995254561026
+e93d65d5-60fc-b190-de55-096e5d67c4ca,999745389,14224657835893454409
+80d9e908-fd7a-b1b7-b208-b1d64dde74f1,1341275194,10650759196506357468
+c2314059-196f-9199-183a-0ab2e02a8d9a,3519705193,9790346292821434956
+6e36329b-bd05-0d00-5bea-d8914200df8b,1385638583,10315626462053658030
+b67decc1-6219-eb43-f2c5-bbc2d23f5418,2327616186,346288575955801520
+908c115d-d3c0-2016-1912-3f032ca9039b,3368969808,9624357713575750010
+979ad5c0-af90-34a8-276b-b59452c035ec,3577180511,1926445106796184989
+260312da-04d3-e8f3-f1b4-b274c31a7158,2410826458,5866697795025951880
+1243656a-54de-5202-ad02-053d42323fa6,34332121,9285967013544842030
+941194b9-3c74-a990-3aa6-c9a024fce75c,880677521,6227172575040066558
+c38823af-18c7-a11a-daea-40f4ecbb5b5c,2559875978,1753869767750747369
+230c6a0b-2dcb-ec90-31ae-3efbef1184a2,3000217933,6301701266597655250
+cf3dd84b-88bc-9d03-2ca2-2570e14dc9a4,3526214004,17974828225463905925
+3b69b900-3dc8-69ae-1f64-588960efb2e6,2121950623,14970153911986283616
+5e00b6f1-66c5-3744-fb28-d0604ae6c3a7,1759458102,2787244081594154148
+88f625ba-56f6-2bd2-1741-709df224bdd0,1857048984,4807180913005363700
+4f89d3bc-264c-20cc-e412-f3dfcd736a71,502691468,2188614055174982151
+20be04d0-238a-f095-7d63-518e677c414a,2685059445,6877389913350039567
+9dfbcbcd-aaf8-a16c-50a2-d7f0f2397313,680524119,8268345150757653239
+b89c6d07-e48f-6485-5985-294492402df3,519721416,13759065458483733046
+f9ad1b9b-9b6d-1faa-975f-3b3afb88238c,3677376193,13953544323750365691
+b6b7f643-e2ef-e563-0d06-27db38801e89,3741474552,1614797075104257559
+5edce775-58a5-bfe8-594b-81f46817c800,620219315,10179255422909437126
+010065f1-7578-93a3-41bc-daa9c826e45e,1281224734,2479102768729767908
+f996cc6c-ec9b-862e-030f-c32bf2c4dfc5,918284569,4708246176576088761
+bdc0a4d6-2a27-2a14-8015-4887aae3f70f,2442909799,4539090286161254352
+23bae183-b520-e4ec-daad-3e728a88ee75,3886977722,8563282205095695434
+959043b5-9380-3c85-6413-e592f1ab6741,1820222756,3693717706899998048
+3f2520be-1270-492f-59db-e9ca8c0b018c,2632146589,14654062987106893154
+2e287872-b2c0-8187-0dc9-c29fce93aa8b,99495997,7451263014259822922
+4011a392-ab9d-2d01-a14c-36707e329b17,1590382422,82916247863775418
+d0131b01-1507-8f72-6058-29fc88cd6372,2765974737,2410041422465003793
+bca6a80d-d7d1-64a4-08c9-7ab00cdf6e4e,1745202833,6958147693073869158
+097ed0b1-a7d1-78cc-828b-8908c616b204,2532275505,5456625238522021378
+839eb3cf-7451-b53c-1103-0004e1e71501,1283067197,14153741161907652087
+bf288cd0-5167-1f9a-cd41-9d0087918afd,3529564312,14384423051219089876
+92327227-dd68-5179-47fd-3f9fd782c3c1,3881335784,16071351364022552138
+d2a0302d-b807-7ecc-223c-fadd03f30549,3950495583,5294307563914078876
+0c1de65f-66ca-6627-8402-3898cddbe022,306491435,5458750276592219766
+f3da3653-4735-ef6e-4ddc-3039b28c19d3,883586461,116158130588338093
+d024dd2c-2500-553b-7e39-33891d0967f2,367896043,10839213791896454657
+e62beee2-4c7e-6e11-dafd-d5dce7d36787,1658346280,11747810269321111985
+130ab939-9156-80af-793c-de220878da1e,908216642,8332212779581261434
+72cab669-d330-667a-fbe5-45d0a7b3129d,680099416,11141090164479032364
+1493ebfb-6967-5a7b-1398-c06a4cab4b3a,4118083600,494018497868178030
+9abef3aa-3d3b-a40a-7d89-1b38f19fba1e,2823370797,1283378581730331163
+07edf852-3ab6-bf7b-da63-42e6a3910ab4,897474722,1321163620018119674
+f1865b5f-a873-20f0-97b2-97c95dd39f03,3436155096,624910103008513869
+0d848001-95eb-9707-ed0f-f859c080abe2,1933852998,12550098470221978930
+145765b2-fe97-6752-a2f3-8a65e682d1ca,3544225108,9070072489989623853
+ec1c317a-e194-059f-c47b-30390d7ea351,454980265,17812182813410687318
+d22a341e-b0fe-f5bc-f9c1-9f715e0b1206,3721121503,9964231434529145229
+f2794701-3582-e557-b7a9-3b9e5bb8fbf4,247841067,7640255792750294917
+67eb5663-53dd-0450-7365-c421a3fa49b3,3443635890,3887534489823173726
+6e19d0a9-b2eb-6c6c-1545-28ae45de6783,2442227498,11362098176350308940
+1c694839-bee8-cc7a-8924-75bf32dc9501,1324345719,11461333818525941587
+52e676ea-829a-0705-30f2-52f048425520,2030518524,12027321864946374025
+34fee7ee-3b7f-8186-a297-f073a583bc93,1671713136,10281220215177805744
+2d468fe7-3e0f-88d6-1de5-1d48eed806b6,1773355864,9397499967971924408
+9017c841-0b6e-e26b-ee0c-83bb92b295c1,3651021239,1895332824325413850
+bf0e8bae-48b3-d6ee-c13f-260a1285ffc6,1977018042,3044142384693759897
+bcc0e4fd-0732-8123-8830-ec372767fea0,1612061428,530505920612150871
+d682d90b-460d-eca2-4528-51fa137ee2b0,3284498303,5533575534601127078
+d670b1c9-ed64-0282-614e-261f7649e720,68844970,1818971493471668946
+1cdd27df-74a0-25de-0cf2-fd53f200162e,3577443361,13756618256473699252
+2d65340d-d6e0-b69d-ff74-f192a07e4b11,1613087676,596149441763586554
+0fd96a82-7d13-9a3d-bcc4-3006b7905f63,930614002,10041506242990725570
+660b99de-d67d-c231-7fb4-b61a54126a93,1926475077,15906314322156974971
+fd9b6466-3a33-1da4-011a-c8bcc5bda61a,2698160775,5064913590601006289
+dc3067ec-c410-8c82-0ac1-9db156a0da12,1658793470,6074153049857126334
+ffaea3a6-d4f4-0e67-5b70-5602acfa135c,1082007441,15718410940643005253
+66e8b692-c935-2d6a-73c2-82d3d1265453,2878367411,13859965548825008360
+2d3b6bb2-bb0a-23f6-7abf-4e69a1ff1294,4247866415,8798210067331151461
+6cccee6b-24c6-bda0-5cd8-50afc691d031,3246488272,13505953528192572701
+bf5bd657-5ae5-214e-e498-2b7f0641009d,2002589887,2398911720546927763
+1c0a0347-3f51-3f79-6cae-1876a34da0eb,2239057973,6302063268722184365
+473a87a7-6802-6f63-eb15-855df6e1540f,740012236,13803488095992531914
+66a20037-7b0b-9808-9da6-3590adb96233,405047540,11126504638340188409
+13d1a67d-b589-d6be-0d2b-cccd8c7a56e9,704404850,8704333124986199793
+2879aa23-1e2a-7c6b-831d-99da40724f08,1227886485,17240465328481836435
+9121a892-0aae-a155-e3c5-1506adc112f9,1579562526,10676184812623915253
+6db113f3-b7ae-546d-5d4a-fae187508835,1664945132,15876116377764521245
+37a57b11-e545-5463-ca61-5b3843cf8577,3866225509,11622858188653806547
+a870ecce-9bb5-a6e8-18b1-787e336f0945,3722129101,15154766847480755813
+5c04534b-9c25-82d5-f789-539740f81f0d,2157326985,1665205366166395547
+e945deca-70ed-b246-69dc-87c710f35457,2148637987,3838881723657881603
+78e7c9ae-378f-a828-96fd-3b93f76aa387,3743732874,12775475057029003419
+56f0fa85-bd79-5898-9fdc-5ab6785f08ad,2043130350,2903161859682689856
+863b8fee-1d28-a3a0-943d-1d6eb7c87d66,1263464198,391332375077139853
+503f9f25-301f-8e53-7ae5-28f97b19f28d,3752527672,9510930579626975848
+055d637a-93db-2d2e-f001-01f7ae65563c,2492389981,9411074683311731539
+c17852f7-9b14-e4a0-b8bc-a09d39032b1e,2544393429,5654491693022262866
+5e39679f-f04f-a9ee-27bf-05b859000d56,1431128481,5446154658244887666
+54f4cb35-4125-3488-cb7b-511776ad9aaa,3379576084,14308756531919371446
+f428b3ef-da5a-9212-6f10-366dfd76e4de,2519475718,16615916447511633428
+3374e923-3c11-2e2a-a7a8-4919f53661d5,609668319,8313180054458523689
+712bd58e-2e9c-78d5-37db-e3df360ed759,1526011683,11266505022899530303
+fccc882f-d48c-d032-bdad-86810aba6b13,2420827305,12514140098991939087
+778bd85a-dadd-2dd4-34f8-0f09a4eaaebf,3338933879,3456654657497135265
+f2816120-f14a-64ff-74d5-30d961147dc9,3944002431,5868842622460727570
+d96fcb95-3f18-8721-6826-f837dbd58697,2833136379,11451334923525688630
+444ca8df-ab43-732a-72bf-b93d1106fd24,3323056949,16367045168668008488
+7741a360-40f6-5036-f740-4c121b6003c3,552931209,15418631831438509190
+97c14f23-0b6c-123d-9af5-4abfd3ff73f1,3343636832,10131823884497975350
+e8f29f83-9c8c-96b2-aace-42b89f7c4ede,178042970,10437287287213308200
+e14c6b09-c390-6e2e-cbdd-3eaf181a6baf,2796364659,11988421983557149503
+e5b110e5-ba2f-b68a-62c1-8a569d3c9fe6,3273976179,8148688628412667277
+f5c9835d-4f62-fd4b-2964-77385d54d0cf,1202062243,8550651089952872853
+56124140-89a8-090c-14d5-2539d5ed8621,3015792987,15606463054016353499
+3c769eef-337e-f52b-fa4e-0e9a1ab947b2,3497224269,12220710255783133274
+cc9d1cd1-45f3-6133-9e15-6b1a9cce9723,1345051798,12177046615815724332
+bd37863b-c2d5-0086-7182-e4cf382ff678,1548084321,961036681141397500
+4486f1a6-ade8-1824-0c19-2731bd7d9bff,570546760,6263514177894129713
+e40dd3bc-f2b6-0925-d416-34fcea02a864,761603445,2146438133858073853
+2530a3c6-43f9-a9b0-5299-a4be147ce0e6,1024978313,9026184880620477823
+fe6716ee-ff0a-6c1c-9fc0-d1e621a87f54,1564992975,15897319338673142379
+cfaf9805-7dff-f774-81d9-b85f2cdc272a,2178156426,7016742690662223645
+f37f59d4-89e9-e3dd-6c53-523ebb82e8d5,583323631,6058277344294544554
+18a9e756-c4fe-5546-7254-91d212e7b262,664734966,11767375799043538242
+27d17891-484d-e9d9-c8f3-90ddaca29163,4114584926,10520110853179426555
+ef5e6175-c261-3e2b-377b-f18b4e798569,4192697652,1892648100124096458
+6290e9d4-34f7-3f85-38b7-3aa095a82110,26361360,13748351352533158585
+746442f1-6e26-ee92-8415-f636267a0bfb,132960734,507949512622628716
+8ca6dd79-8d09-29fb-4898-b8ce616aa748,1125971360,469787786092774510
+9e2b0296-21e0-839d-a351-ba9bc49cba1c,3585388651,7859617727151866967
+841a020d-625b-5c52-c078-89fc0f3fed9e,3045442905,11645181707950587108
+496899cc-6e97-ddbe-1a65-bcb553f4d60e,283654705,14094693841707802046
+86f132e3-5c59-fd29-85ff-614c944b914c,1795838322,11412668637316039879
+e32cc692-9994-dc73-e071-c928afcf9120,186498318,4217600576230346049
+23841dd8-addb-c229-196c-ede1ec3648b4,3261995817,5335125330742683891
+d1b9ad8f-5148-9799-e5b8-84fd192a1b92,504790944,1285474529174859566
+76e284f5-6ada-0a72-82cf-db09ee673a80,1047790047,12449792142971183825
+ec256e23-cf1f-ef94-7731-f3de679a3365,134496902,8739216171489825003
+da3a27c1-baae-2567-b00c-cef76fdd9faf,1403254459,14756063778361226265
+ff912425-49ba-dfdc-059b-a24a647662f8,572530783,1625550164505539637
+a92ce32b-2805-6a09-6fde-0b7de4e1e1fd,1183317025,10518019134410513816
+cb53f083-998a-3999-51d6-d73010fdfd99,1777754574,18331630741150259238
+141fe0d4-4d7e-588b-6e2b-4219c2d10536,412027564,2067884853623394185
+41c9194e-feb3-1f35-22e9-e0793462fdca,1598133855,13352589660389203402
+d979b333-9aaa-7eb3-13a8-0d9161d1ebf8,605368393,7359882062719115559
+35004e8e-c2b4-1f28-06a5-ac6c9a81e226,691713591,11105665296471898503
+308382f0-a17c-d65e-efd2-5ce24aa6ae8f,178270076,13732895912508591336
+a266101c-483d-f91e-ab31-854f17425198,3241647289,14293635728514342532
+510ad63e-de2d-3b03-837c-d35f77d9179f,3557224288,3907598856491323858
+d304fbac-35e0-f109-fa1a-fa79195a1fbe,2521673325,9545122329910181125
+f251fb7f-bbf9-020e-3bdb-22e7827ddcb4,3065975628,7557434065058735714
+ac96024a-01d4-5105-76be-3a27be07b929,934344528,10937430726300069727
+05701006-4eaa-16b2-bad1-defdf297e446,3098421295,15993135710582049492
+2687177e-4f52-b08e-ac60-c3c6654190a0,3242374569,4683720626382204290
+c056f931-dca3-c76d-10f9-fb9462bb9c1b,3888995392,9602540328087330432
+cf7f5f2a-9302-d3d3-1e15-c4d3e422d4b9,944148021,3042160392746111165
+716b03ea-745d-7e05-7f4c-10e04cbe2a5d,1863162942,117767547237917600
+60ead772-2833-61bb-2049-910019fd6abb,4053748284,2987102689707348522
+d00b6806-6a60-d1f0-9561-247f75fa89af,3922964311,2326234177390282032
+f1070039-692c-ccc4-0bca-57d4a272fc5f,3293552106,7109611357478934605
+6a01b5bd-ebce-de58-b598-89b23dce35a2,3812308491,4010511943450477061
+55e29a42-794a-ab12-20fc-486876010fb4,4105873349,9735849218155767154
+fab087eb-2677-5beb-1d01-21d9ef094f7a,1898141493,8106371880138100886
+c27446cf-8968-abbd-c178-4c7417296618,1325419828,2384058914171085438
+efc9beee-f896-07e0-614c-14fd5d5f8a4a,3881389171,8980565741579404935
+3b0df83f-5f43-a7ba-ff9c-291fb28b4155,3055848408,493780239485837630
+a684497a-7e14-4cb0-5633-5e9927583e12,235942838,9265942282877193493
+59dc7f62-d162-30a4-e665-ca206e571e26,877671382,12806545347019625752
+4c10960b-bdc9-fbc9-41fb-3149faf28459,80608730,10150232574786078557
+b941f906-3888-995b-0878-1b3c6bb87ecb,1057456290,14029437914361928881
+70645a17-a247-f664-f042-62acc57fdac6,2194069818,16572838974240924869
+3e26ce43-e6d8-cbea-616d-e411afbb49e6,1762090241,12012049699159564869
+28658957-5908-9b9e-c8e4-d286ee763121,468094218,15899197371250957688
+54abea1b-e951-0128-cb8a-4c5f37f873c8,2665538132,16950040932182028247
+77a1fd46-fdf3-188c-6712-7b941a7b8a8f,627382192,4429739791191751133
+c0c1ee97-89cd-dea3-5460-7617cc6a4c90,3531669811,14721880619253852263
+7cada0f0-cf2d-b1c0-1fac-bd4d245d1474,1507566750,4646160709977789511
+7a26cf2f-9b74-bc96-04ee-57718748f5ec,1395183680,10533626429849649227
+6c0a5018-7f84-ce0f-2c94-93affcd85392,2670187153,14697082795453324005
+aea9c02b-bd54-3bb0-d7d7-75f88aedbe1f,1032157530,16837737925600252292
+0ee11379-7778-235e-bc5e-75de07468f28,1673740740,741078991927293474
+f9073171-8c78-609a-503b-c1904442b32d,2700339098,17004650188318897561
+e4e17311-0d39-18e9-a69e-679a8df42af1,1590726002,6628826521057607064
+5e6f6a70-e723-6b6b-b6d8-f46ffe597bd0,3046140819,17316217691385006600
+8e324dd9-27d8-8213-90e5-4092b41fdf3a,1613862625,16247528346666245705
+f44312c3-8451-c7a5-e7de-f09ceb9c9889,3661589670,7917520304023980397
+54908d57-cbb5-0b91-5c71-438b0e891d1b,1685457583,7149759899370891398
+6375ff24-087a-3dd2-7243-e5317a8edc85,875392067,12207620132502224902
+1b28ac5e-2b7c-5527-6edf-32fbe1a05174,2753676838,11575249029304936860
+a7f88890-2836-6d98-cc67-9c9fe6c09271,3067528882,17933637910910247621
+c9d795ff-acbf-e265-7366-aa4a9fe6794b,3648578348,8926477233909023629
+f0ba5715-f9a8-b450-2f8e-ed4046d77c59,1334706615,2721917892342670783
+c8849cdc-a982-e729-1357-cc6f4770e27e,1176966003,8325378777785809055
+7ad07664-0c21-fa0e-56a0-f5a98351f3ae,1566061120,10567726657722438132
+adffe5d6-221b-cacd-4759-b0c9e3f91ff3,2861326923,8473190192350794492
+9744cc71-429d-9bd1-4de2-ddfe3748fa53,908927782,12267957392075175780
+edd263a1-a9a0-569d-de1e-cd14bf29ec49,2337965392,7055477561350309746
+30ef10f9-8e42-083d-a81f-2872881e912e,2212909554,5680135711680123911
+51910356-c6cd-7cd6-8f93-f718d8385a2a,1496223407,11725090885877988926
+0f0b81be-a6e7-0c15-d6bc-1efd15f86ce9,3895692827,16762496504960099370
+f35a1bf1-9b09-c76b-efeb-6749101b19a7,1363653077,4268041772495386324
+4caad73c-86ee-b3ea-4398-3262a3f08fc2,1209793722,11739320194494468503
+a9285bc8-71d6-7738-cf06-50f4141f03da,563252677,4133011646592336623
+ca2505d9-eab7-45d4-2afe-7a9264afe050,2060137147,1382997568561028903
+09431fe7-8014-7db5-f8ed-6984f2063564,2554294137,1600239642272122227
+cd92c7bf-2ee5-9e57-bac4-d90f662f5a58,2647849044,3876594335544117675
+f7c4e833-d9c1-2ee2-decc-347365f7ee8e,4062818177,17035186737868121379
+d43d2254-00f9-6c7b-4428-9bcd6e8266db,3408548920,14428967328846946622
+bb6d6a36-f4e8-0ea0-64b0-62f180507703,694550474,14027795292412109857
+9ea5a66c-77f2-7b56-adc2-5802a277256c,208103773,7866518324833580171
+351b60d6-da83-a82a-4c85-fccccb5e1406,2550925060,12457528282920121377
+e962a07c-e484-b2ec-f9b9-2eff75d1346c,3510392319,14800480426629880102
+75475113-a471-13fa-49ae-9ec9ca6d955f,3911801139,6105309956729917278
+a5c43f40-cf6c-944e-0f04-9ef52bb4c3e8,2732029996,9059028489492555551
+ea602256-1c17-0c30-15e8-c0862982d403,804970308,718126136297928525
+56cb1546-a543-0005-be55-5c5a090c64e1,2213239175,15219019552806454544
+c240dc61-b79e-cfae-8ddb-003d33724969,3414296865,1863924395583080175
+f02f70ea-ceba-28b8-fe51-15267be35514,124038478,2170885137659388734
+86fffe9e-ccfb-0d70-fce2-057aa20c3b19,2295008491,7680220126439952659
+4a8c62c4-ac25-ca8a-62f7-0aca77bcf99f,2052266559,17906933083354911795
+d52ade02-c8db-31a5-6172-a4d7462c2f1b,1225147176,18182974819752532609
+f3a7ef55-17e8-ebf6-97bb-e050452646b6,1227168016,2236491561064438570
+44b9945d-62d2-a97d-5f8e-a10c05c72dc3,3556509264,4771445212027259416
+bdbdf360-4229-3d80-2095-d131cb2a6181,2342988625,3880440742250574585
+daa85dfb-b88e-2f55-ed2e-87520ac685ad,1172039861,15828249666960072046
+76b0ad51-cf32-46c4-7a66-58e61f039258,1216246077,369820868998554759
+c1b9c520-ec87-08c8-ac00-e40973b2676f,739833730,17212483056770252292
+008608f7-32d1-5a70-b602-856c6a0b4bab,15464707,15779119081876512646
+1cb5c2a2-a8bb-dcf1-b90e-296445d08f23,3041613876,4299347915418811803
+60804dc4-266e-31bf-dbb1-f4c7ae34a202,2475694778,3379405759677288672
+7110cb07-6328-6fa3-6e45-8e4634d4ba82,3935910538,16946309165040737129
+f4065a57-2159-55ed-4d14-f89268023008,3358088570,1980857681064727266
+c8d29f20-5f32-61f8-6e45-1cb5c277a0a5,3472822559,14927129897073820117
+1c9bc821-6dea-1c0d-1290-139541931007,614833715,10851851131593385704
+2746c2f6-a8cb-7b34-5001-9b9c232cf472,3651346839,14040235233457494898
+13997039-a971-8980-ec05-e41f40e50870,1212985461,5845285744726156030
+cb9e1f68-f0f0-0fd3-6b52-5962f354cd74,161376279,16490470866676067160
+91392d16-b998-a69c-7221-b8cdf5a6475f,3019443722,1817190543718201503
+1afab465-2b5f-d9ae-4d2f-97209b6933c1,2386771572,3224282917353881366
+8c9bcc84-05e1-ff79-cf34-15fe120e7922,3073136122,2985887794526644362
+90c6b716-89f6-2a6f-9f91-632d1e03cf7c,557127648,12970880287681379304
+67fb2de2-d8cd-ab94-3ce2-2abc9e439fe4,1331892203,2688884698125759532
+995403e1-442f-6de3-62e6-0be5420f0095,574933393,17995788517522631510
+85d20a9d-d8d2-3aef-d787-d89d64f697c8,2630754346,4564919568207710308
+d89f408f-1baa-0907-f774-51d77feee530,2094293691,1418628302348357950
+3996ab4a-9a8d-f22c-f0b4-3ca418797d35,2693005935,13236767706896332036
+f4a8ac95-88a6-52af-3bf1-51417495efea,1149582663,17255675826300015862
+8a0e0802-2cc1-fd70-82e1-9233dec4238d,706647909,5509291248929929412
+9cb082a9-08a7-dbb4-f2ce-6f52c09eb947,2214678452,16525675364238714317
+b302e576-4c0a-63a4-b761-0d3553d76133,1416146067,10839232020088171321
+13a91846-6b5f-e3eb-7dcc-abd7b96cebd9,700760404,7207769445105198194
+b8b2820d-de4e-6f1d-16e7-11c8f1f88313,38360191,12638655401746550893
+efc70cdb-db90-4a50-165a-11160051dba0,2045983527,16472286216123951969
+591e8837-6ff9-5257-14db-8bd399e859b2,2879943856,15646062676163203809
+46ede32a-f594-727c-5585-695c8621bd60,2215988895,16185981659142088101
+36fbbfb4-c214-f64a-01cf-45010b046cc0,1205396739,15413225512492438939
+e6eea0db-331a-2b0e-1d8f-7ef7a9abbd87,1379415917,12260307653558865202
+04439593-7356-0f6e-a0fd-51e5b410eda7,1058534079,6776299788556907471
+5e79e01f-240a-2ed2-3d1a-9b1c67f21b2f,3363699993,16776515820647328114
+7d9a503b-316a-4111-5895-eacb6efa3314,1903889426,15222553058542583215
+6f7395ec-5f76-7ab7-42bc-e73f59b3cc84,339892542,30576118841063330
+c9a65fa2-f8db-ca93-a963-b469a7847f3b,287647055,15624466608104191983
+42c906ef-e2f3-1ef2-a853-84cfd2333894,2786596956,10027146165391233999
+b505b236-9bd6-7f5b-5ab4-b9e2a9a84b51,2148726790,2489908647842585581
+fc76eb58-9173-410f-413a-5e77da884411,2913304623,7251902754230068457
+40233ff5-0055-4959-708a-fb21c87e67d9,3946244796,2365332706928334411
+dc1ebe2c-a8a6-59f6-e3ec-85b29eaa471f,2286835799,639471739955140329
+8335525d-79c4-e8e4-3683-a5612b91d2d9,2967107291,16102342357013036364
+277ef539-4d89-e9e0-85f8-ad0758126873,3653575737,14155993828936010787
+4a3e48d7-35a8-18eb-f432-c25a42b90bac,1516128611,10922138852220795606
+d0af2243-05c1-d23c-e04f-c93e5071bcf8,3046919447,7558349223372664424
+1d40c1b4-f67d-fa4e-9079-f949218db7ce,315692698,8925011064899906542
+f494b87c-c170-2953-f447-e2ce5ea0d8bc,4007526885,11395604504972580384
+55453f63-502a-98d2-e5c5-2badcbad1390,1977587793,11688088051133670768
+acbf9b31-1385-87bd-1673-57c6ac0e36b5,2741900842,2453203674681109929
+4bfd5bcc-fae6-dd17-4b5d-71a604545000,1298607736,16621537286456422807
+a57643d3-08d7-0e00-f006-a578af41d7ed,2318410401,13313619609341611027
+c560a067-1822-eec7-125d-b4a0859857da,686220743,8563417668002955791
+6616eff5-c725-fda8-46b4-4cf8cf42fb59,3942718507,3330667954097280482
+0bcd1002-d875-844f-4e05-1e843582c769,4137645610,1730962864669608037
+60ed731e-a92d-697e-ac92-53eb553b6e34,1349199162,6945343408555634839
+b1a67a91-1722-6cd6-6e9a-6562b0545929,3734996908,6283960271817492621
+d81c5cfd-c58c-ed4b-8fff-9daa9b1c91cc,3670528594,15379447394447318890
+48b0988f-6ae7-2cde-8fd7-a54084ff212b,995473100,1998727209432254855
+0746ee36-1ed9-b12a-d390-48731c11cd8a,402723504,2142600484347682236
+6ed98eaf-e655-8929-31db-2ebce0414d7c,2866984701,4402220799805063048
+ed5b0b71-b5cc-0663-3557-447ebb349000,3775860057,17022575210385854802
+790c0caa-f4ae-a8bb-71d0-0523978aae43,3283699925,11122247075708377192
+48d0cab4-e6eb-197a-52e6-7ad89855a34f,2986471599,10707688302977450850
+f5ca9e57-0a53-7615-f383-3b5897e0ee5b,483408225,3088223925438923930
+e5c86a10-58ef-a75a-30b9-2ab15485ffad,1442267786,9618762162689113417
+d3781e68-5e0d-9fe2-4010-21b9580f1baf,801687472,2865065644964956798
+54a9dcb6-ef66-b5f7-777a-b7fba9a3199e,3782989607,1685288553331971560
+70956d91-689b-d95b-b62d-f602324d51ab,799652172,5765338565329173632
+c54231c6-047c-d4c4-e48e-89a6323b1040,186004039,6199664703941591828
+6bf24992-5d4a-5a12-93d9-494007a45f68,2347258242,9023468067204637609
+a5c5b9b2-e049-4a30-c221-5cc07c01dc27,3642840149,14146985598609311097
+4998673a-496f-180f-26da-1869cecf7301,2220755420,17396401287684563958
+57a0d70c-edb5-50b0-bef1-7034158979d2,2232774069,2133142338640712711
+d1c19a7c-06bc-702d-83df-6aefca8f4e36,2677636632,17072212741600467506
+eaec4ec5-4573-cb23-4855-a853eb4fa72e,1663566748,13405760465264073364
+469cc6c0-adde-90bb-2515-b371546e67d9,1159015600,15838040759067218905
+77d1ef45-2a17-81b2-d195-4e5388a070b7,1717816100,7584580925040026956
+1b5c3272-8e80-205c-afa7-9798d67fca4f,3632715738,755586795332511354
+90922277-b93d-af42-9138-a5af379f0f4d,4060018815,17115967434177483680
+f8fecfa7-a253-feb4-f498-f91cecb4ab57,4263075072,16289207359945855670
+47926b66-d574-edda-e2c3-87c1108c39c4,1621486436,4424150795826363559
+40859d90-28a4-9ba1-991f-3543418231c4,3710057783,1652173812882536700
+e14a5c5d-185c-5edc-0cc8-87b32e8db2b5,3738787908,213732871479171231
+da3612b4-20f1-de44-2ae9-f36ee60c083b,2033544827,1485215570214032981
+67feb4fa-8aa9-3da3-0fe7-b58f1596c18b,237935036,13506883358216776730
+04b883f1-5a02-e328-3b25-07e5b5899f51,2637720262,8674545390397212870
+ef595598-4966-6fd0-d680-c01984d5eb46,380117217,7838210805571631107
+67001cee-56d3-685f-d82e-16d4bb8c5706,3541797793,14593588953689236496
+59200238-92e7-3f17-628b-b71384a4fe3e,974318492,4157087030859494429
+57c825ee-67a8-c46f-ebb3-1f44d0881995,905835343,6361506820067241459
+5e1cb8cb-1ca4-0682-d7bf-e5a53859d67c,4057642287,14322301184694232648
+6cfdec39-5fc3-02c0-974c-0da57ea5d61a,3137876653,18266997920534561455
+eb795e0d-d8b3-d9f1-c942-bf30fa5a1166,1195719130,1294895280028761446
+b61012d3-061f-f2ad-ec06-157ffc50082f,3924940545,612013046785098942
+ceb85ca8-bcc7-ca69-97be-a0eb3603cf5c,3881582219,18349182753927592299
+fdd2cdc2-576f-039b-c6e1-771f3049dd3a,3313744056,15251790942564418764
+bdef19df-2b50-c772-545c-51677b5b5f38,1888049670,10743532370144657783
+5e7be697-2364-444e-7ea9-a0ce7630293f,3662245390,5810339205125398096
+4c3aebb8-a26e-688f-7c8a-353f79829f66,122714330,5465402901457072096
+a495a563-0e0b-5474-05ec-1d18af15ebc6,2454458033,12548379842418059035
+ceaa6eb3-e32c-f7ff-f0fe-480ed1aa1ce0,2646117864,12842587196436073700
+fa055703-5ecb-b138-1429-13648c632676,3435323010,17228691547178736204
+27d20af2-4b14-86e1-b780-95367140024f,3849268697,1675454447619033098
+2caa83a9-8322-182a-2f75-971604397fcc,3444146233,10182232166605849011
+ae479d49-7f53-f58d-a631-a417789b524f,1262245358,4632908871307055740
+93d73951-74c7-6ab4-5223-b66017932b9e,1956046106,16065502875178097736
+78c0139c-4aae-6a1c-c2cb-c912c190f870,585573690,14358261308739552980
+4a61d3e5-f45c-b17f-f165-eff1a94a9ebb,483469019,4182443120216858854
+8169c403-dac3-9d76-dd31-808258af8026,3486694084,1915048212196832789
+a45a41fb-d82f-d365-62f8-4f147b61ddf5,131285563,6238124838063135703
+029b9868-d172-292c-6513-6eb19247bb64,3938964360,1057190178532428875
+3928da28-fc15-f534-1e54-e0ea2a02bd92,1001065088,3585258272277941902
+af8a969a-ff41-d30a-972b-4d3da824f93a,990290397,18076721084538953538
+272300ef-509b-a4b6-40b7-45324b180de0,1174155189,12010108391451593996
+2ce2d497-15fc-55a5-4bf7-436ff2fb273e,2920172866,279649484443139075
+5f50373e-17ba-2fc5-023d-f0d4a10b3718,2825821753,15313659249212178445
+ef87b1e8-00f7-1390-4ef5-ae219ffb92e8,1757610235,8114360311651002537
+41346d75-5c0b-327c-a088-bb79b81014a1,2478754786,8107693888779223841
+b2fc4b4e-6f34-6d48-6b6c-198f83548cdf,2592504410,9568893029306839008
+714ec2b2-cb23-16fd-32d4-63ca700bf743,1161898175,2704265726527167270
+6788a388-092e-f3dc-d9c1-906e120a9bbe,1238220420,10751172864849794132
+28cc4b11-d8e8-42b0-3480-8454243a230f,931024072,5938299233158252421
+848508f2-df22-5c6d-eb41-8d3873089ba2,744706823,904347256762632315
+c23b8c81-e152-34c9-0b7d-0393aa5207ef,2088784683,13638517026014905132
+22236a33-c999-ada9-4aa4-3dc3459e4b1d,241760305,14585184364619061815
+26296be8-9588-40a6-88d3-c9b1aa70d492,2942421250,17736640078479546059
+6a235fed-58a8-961d-d9aa-41eff2506529,1405025638,12942215712085446635
+dfdb4c46-3873-6a42-9760-2d833ab4f439,3348846672,16449098767720472425
+9702be5e-e0d0-0122-b683-10012eaa7fa0,1021181106,14568852767856337431
+346d5a46-0489-7f60-96a2-ad23d89f463c,1059868170,7461873415175833236
+1a969299-7167-26ea-a987-1c1d9001bc27,4041077331,14181048465454127730
+16e69c8e-b29e-1c05-5bc2-6d21f2dbae7b,4061743578,10882480690538143669
+dc51ce1f-ce85-28ab-dac5-762bf358ad04,3607039193,13494901075920142881
+42e6dc9a-bde5-738d-f7d7-053955629b19,1363059055,8186449096549161612
+8501b7b2-4335-55b2-b066-216ceae8884f,3415426728,8552133055420378219
+2f13de3e-ac07-beb1-1774-867396025871,1899532095,3618685648278076303
+979d317e-a921-89b4-9ca8-20525bc01f28,1436524875,14720049736016093687
+76400475-2e40-2488-c99b-67926400dfe1,2984323761,15560029184908528624
+80ee7e47-1885-e1f1-f90a-8600c136d018,377344783,2261604645234943929
+73a8eb04-be09-1419-d972-2034d541a0ab,3012997059,17670925401210069005
+b9b7e51c-8f1b-b635-fe38-2e77e0a0831a,937084508,11101445796077329030
+1cf7e8df-ffce-cedd-397a-88d9f6684709,423123266,11883156044339780120
+ef5985f3-a4a1-d737-0b84-6b730fd2affc,2777796627,11507663236965284845
+5784e017-d89a-beaa-cf60-50c5e9165a58,1063763883,16184832112540313864
+da683ba1-2daf-3bf0-3c52-e69b413410fc,1604551677,17612317366012447815
+168595fa-b4b1-89cb-807d-2ae1bd7e435a,1011423574,7222436173973287597
+fd9c591a-3901-29d0-2969-a58df3e005d9,1011236817,9478067763857877895
+f5a50c1c-41ce-4605-c4b3-4edeab23f175,2699473866,14879115474984298635
+962a991d-eb0c-f255-ef2e-e145644dbb3d,487526903,9028525055467352130
+f3ca5ec5-2c0b-7c1b-b7aa-a51883956301,3488668788,1651463191775034832
+4606cae8-1b06-7e5d-d719-459c84ff18f3,2271242159,14236647301142293361
+b0395337-4841-a9ba-cdb8-1d5977d41bdb,697377828,1326339420745233954
+d7513343-9f75-5863-c518-e2c2ab41bde1,633158043,14059060395398946510
+e85b4f9a-e679-9759-0edf-b412079c1d86,469310528,5052344011663073264
+89c33c14-684c-04d2-0cec-90a0196c45d0,3427967104,6569203368099830931
+1dd91b98-8c9d-1a1e-bfe1-7f2c3966ae07,2999702107,12403334014234068798
+fc7f4fcd-9ff9-30f5-47c5-319f160e820d,4145160668,776485234892885713
+9cbf7dd5-a904-218b-9721-e08539c1baa5,2671939581,17771338948700663
+cb0b6549-3a27-ed1d-fc3a-4e46d822fb23,2896245050,15867954127167891947
+4c4984f4-a6c9-4bbc-99f6-ba5cf8789643,2486428507,12208629575086111586
+2263ed79-7d65-de17-84de-59bbbb069efd,678866479,9432816202196496454
+8321d801-98bc-3f97-eb48-528209110363,673457663,5178393967806412353
+816b234f-fe69-1dec-b28e-804e5b1c9d73,1192283697,2881974237785534584
+fb395f0f-ba13-b858-6c0b-565141761ab8,4088987007,14270151601782807465
+b950d26e-7d0a-aa9e-19ed-ca95aa57a972,227040622,2142324770962035004
+4b195fba-3963-d7df-c647-ed676b34c1a9,3769140630,16109608180308942134
+63ad6ddd-787c-093c-1d6c-3341c5f3dadd,3121994976,8457705441609905358
+54dc84b6-f481-dca9-a2aa-8bd221cc7459,2306257022,14361417577722247522
+74f3067c-3024-6f34-ab08-e99df889b0d3,2970105130,14333990160028971194
+cec0f51f-3e05-022e-0a14-90a3cc3d5463,1740082576,8426543306671276591
+3ea83010-5197-2e25-9fc2-c50d759c16ab,1331081804,16463042692508074733
+30efd616-4cb5-b52a-715a-1e7d26622bd5,2831419904,2224568548798107770
+36bbf9ae-4f9a-8319-40f1-e41788995072,1658910457,12883320695731225481
+42b82567-2393-c6ba-468d-90fa13d779d9,1399369191,17297278837499388915
+4565eeff-1948-353d-30c7-b123ac3f79cd,2203590491,1611798334801423543
+34f003c6-883f-6cd1-9851-df1134519847,2552768184,16785703217318631562
+8f57b3bc-8988-43ce-c1da-d40b3742e7c6,3462580444,15362763846682777666
+51e970fb-63cb-22df-75b5-bd0654ece959,1232769406,16544928076708111623
+105e99df-4501-3d2d-5cb9-b1c843018d57,3717830936,7281151656761607344
+24036287-7d4e-7b08-20ce-7ec9efc896d0,1381782847,6250189989981921384
+d1bcb539-580c-909b-a1bd-02a6986a5402,1733574014,7856880582475988609
+2f9bbb12-d92d-21bf-cbc6-9fe12f68878c,4102602432,15678678191945161687
+988589bf-0337-ec95-2372-0423cfb423de,2977989951,5650069316105457529
+8a471e1d-71dc-81e8-c1b5-7e631a941f12,3254926107,12662994062587987002
+3457c11e-8355-6787-7e89-aea2154d2d1a,3555778292,8086975534630228945
+13f3c3e2-a9a4-7377-002c-71750590e28c,3123745789,13293289903835059962
+47a1d33f-21bc-293b-1683-7ae4a1d9cb60,1906745714,16339325894665054363
+1c6d4ec6-0f1d-8fbb-f6be-293a7b287904,2860768064,11065366685197743267
+14040f05-c991-4551-c6e2-b1762158bda8,169482323,17575318185301964721
+1d8cf06a-4304-d2fd-9b2c-3b5b5c71615b,888832442,6965706984470394223
+46fc4f5d-6784-1230-0b78-848bb009c892,1963085504,12425924569512031023
+6a52a5c0-f923-8f34-1af3-97c128f2ca37,2510065250,4377585851262338713
+83b51c0e-d8ae-f17f-3c72-6cba5a11f899,1853053245,12043683615059385184
+4ea0df89-7880-4bb4-9a1a-ecfc875b7fa1,991103860,12273003715734959525
+e9abee3d-cc26-817a-8275-eb3a5788f761,1142444361,9407337361879707102
+b0f61f8c-f7d9-5141-53e6-4aaf21b837f4,4183906707,9176609287135590992
+27f7070a-46d4-b5ef-c90d-62bd6bf13d14,438823977,9302869031510241294
+ff50ac6e-1765-30b9-02d4-92f7bc3e9acc,4102305418,1329969219377438843
+3bfdc068-d0db-111c-890d-ee11dc3d7ae3,1345898866,11131852548671281628
+011cf289-4c49-0186-0278-49dc17ed6f9f,1705341230,15639373668588947831
+90da1f5f-236c-cd17-8069-488dcc2ccb25,1728465321,1972860050437601980
+8ed7579a-d3d9-2b3b-fd37-76ae32c89444,4197308893,1558865699815445811
+8318b988-700b-a487-6df7-0c3fb68c9b74,2281091569,6405375042472453337
+ff719c19-96fa-e0f9-bac0-69841946d7b0,4036788940,5250364850086582756
+f88bb483-dc61-2122-c420-978521e39a16,2329353895,4653894339598735086
+25254e38-ce3c-9fe2-be0c-826f2cc8629f,3774297079,6459145054397162436
+852fc2dd-53de-bcbd-6672-bf3805492518,1758986840,6659521002852293230
+4e554ac0-0e63-7618-565d-410969017a8a,192017598,13305713175251070434
+85deff92-88a2-b95c-8fc8-97f9b097a18f,677846707,16782964404106339324
+03b3a44a-2dea-9c83-9ec1-f6c81f2f7fb0,3926004881,2706143209799230110
+d38e79f0-82ca-592a-40e0-e76eb430179f,2314288974,5909590229071872467
+2590880e-cc2a-ab4c-e9a1-528141d9bdbe,4294608834,5282784748172032870
+38b26745-b5a7-f56c-cd89-bfe08082c467,2522601550,10593037722351846355
+42bd8fb1-dc14-e44f-d87f-67656c0b034d,2618095650,11907274670065597880
+19a31ff7-04ea-e008-1a1e-98c17c397873,1691935193,7189398091915911712
+7f43ffeb-6f59-1460-c179-f81b83837a19,2207332740,15950832053606780562
+adb15d0e-0ce3-d0d8-4792-e128284b2cc7,4125345337,10248153239547595750
+9313c6e5-164b-f598-be64-de62d8c165df,3905778961,6020858857898892568
+26e4a778-d73f-9838-22e6-47a1f01d7453,2954615548,8754890695756593914
+cb093bda-d054-bf00-c789-071489c6cf0f,790422958,3771246541269045084
+5922ad76-5494-c4c8-e128-fac907f63365,3057015013,15608391864137524186
+6fab2932-50ad-bcb1-1d62-b74877a57936,1962338080,393069733265636020
+3bb3aca3-3aa5-379f-21c7-4d653c3ae12f,2718184557,1560759723850829546
+5e373fa1-a816-6011-11e9-4e29bd319e7b,19614482,9946541330614167156
+3fabdc05-03d2-20ae-184a-838d8be9a4e7,3483471286,4710514173201795348
+4db5979d-fc75-07ba-cf73-8d7850880107,223079675,10822403795552681674
+fe8982f5-0686-b727-99b7-788d3f9b1624,1745759410,5882642001949612186
+4a8688fc-804f-48ba-3d2e-d6857f3c2aba,124077337,14078199470192351702
+f43e5ced-78f2-16f7-52fa-31556c99da31,2336709337,10093809759951888519
+57235f04-7434-93cc-46aa-715365c396aa,1329185050,9078132186245419448
+1bd9386c-41a7-9e5b-3d50-77ae4f94aba1,4164274753,2510836935758476861
+c221510e-c9c8-20fa-ed26-baaebbe9ced5,1017231931,18400139918026175751
+b055a2f8-c94c-8f8a-ec22-0cb72cb62f92,1328431484,1961869407875718899
+5e9a86f4-994f-bf73-a6cc-b857e755a0f1,3520408866,5667345324438718782
+ea9aaaba-45d2-6d5c-1cb7-e9e1c1975456,3832249940,8983011374649374544
+7734ca66-d37f-9143-6555-a889e0293a75,523469709,10138475600857591408
+a1607e68-3274-a20c-bfe8-e3906f0063f8,1444381667,3375074949677654377
+ac6a721b-590b-81a9-1b46-e8a120d106f5,2473396924,619469258030634951
+f5132fe2-11d0-76bf-f2dd-cb19e7374847,3068093417,4443723097511590454
+cda02240-d92f-ff9a-e9c7-d468fcac8f98,2726629240,6116065758364714022
+d3fa66a1-9aa8-6119-c80b-b4d9d9227206,2459378749,131970331306222943
+56e6e3d5-f982-777a-a545-3872f6edec21,2012448430,11206458499311229854
+579d1bc4-001d-2811-bf6c-586079b9f6fd,3383540869,10084064634861596299
+d9ec421d-0b64-d65e-9fca-548bd1a8dfef,1995467253,3241200007210058499
+d11c36e1-a693-6e6c-19dc-2cf745757d89,2032033911,1243734972409556535
+8f31cf44-4bf6-4c3e-dc68-38253bff9944,2615834598,5753151183806203077
+16b92a51-b564-e28a-16f5-8e502c04c353,3243343371,13472896178103008734
+999537c2-40ce-fdba-383a-a32648667b36,534803525,10332325057148750291
+ddbdce2a-c2be-d9f0-1693-cf96b79bce6b,1558160642,16869069939638030292
+aeb34002-b4a9-11c7-b843-7d67024abf35,1295175453,10515928375797889320
+3063c52e-2fe8-3266-63da-c22760b8976a,500930538,12368030546500545197
+2128cacf-30ae-03b9-6654-baa73edf4ace,2919887053,13552294050046794000
+1b947103-8a2a-371f-5b23-93408107e945,1990035295,5651256799937573475
+ddeb00e6-40f7-8dcc-ca00-4a77b566bb70,3271705064,4388607726522144155
+9f0c8c23-0575-9c47-c4da-62c1cce7171c,3569160717,3051840989873888895
+02781633-b88e-e8d2-9a14-dc489532b219,387262163,6717690194243679868
+73311b98-b8bb-8b28-1da1-57bb842c968d,1658634322,8380461976099592069
+a88314fe-4373-8f13-ef00-dba53178b7d4,4150011038,845345345560332130
+fb28bd0a-99d6-9e59-97ec-dcd2851f87c6,3765724122,12808266445247079530
+8c17c90b-7caf-8d19-3c93-397ccfb92507,747986860,9326047146332431999
+a39e9580-a2a5-07e6-cbaf-b68e5def6971,2312990126,8194203545286042745
+2859a972-8c1d-9354-ea54-3130eadc9aba,1833308893,18004594251540717515
+86c14723-e6d7-8958-2302-f62fb0499b84,2173388139,17380876772912903283
+6c9fd139-91f9-f2c1-1fca-f94a58ab05bb,130355749,7829343483992885336
+22db7650-a8f7-1ead-9f4f-a7cb134f6441,3292277159,15832396829867120221
+5a47b955-c556-4b82-1911-035577d1218c,1137671855,15804872504732227908
+24eb71da-c202-c36b-6860-15b4c401f822,3686735333,13304678741083670168
+efbf6588-5699-7975-80be-6dfddebe2eaf,2733122177,3343943193063816487
+f79484e9-5f2a-873e-1fb3-ec39aa9aaabd,3752422978,16231765609653122426
+0ceeb339-bddb-2856-af8b-bc34f376b95e,1677868449,880807708328162896
+40cc5f12-b54c-9700-c27e-66596246bb1f,3542961179,14725411634600075644
+635ae5cb-d2b5-daab-ca0d-5ae86236fa6b,1375193594,4164310761427371068
+670b0ba1-a1b4-ade4-d1cb-ec8fea82d4bf,2355205796,1716045172665767984
+42306f30-5bb6-4197-4b23-c36246b61532,2491797129,2007365235531266396
+e11f9ead-8999-7156-a5f1-0b5d15679a90,1290951382,15887806691480092362
+048d61a1-f7fe-3272-989a-324285b1d73d,2631263640,13637846615942124920
+a8748f0e-cd54-b040-2ee2-7999994e40a3,3938398793,13944656468799614406
+063825df-2fee-a484-defd-ec7dd553ac77,2951178993,13410250170787437511
+9859ed93-d4b5-743b-489b-b58d9a9604a6,2991412362,2629522271540119887
+c5a5eb31-c216-77e8-e683-81ba4aa9cc38,3302303279,5779670324001822931
+804e2efb-1e78-221c-f517-3e7ee0a05886,2674591748,6024733120119501824
+6c3f8199-781e-e817-8eee-81eae8dbd911,2286203375,1871972839668163648
+ccc84f92-71e1-81e6-3b2a-f6ddcd905cd4,3888401008,11517391137903094898
+50518972-fe17-7082-e64d-ab35d6de6915,2211250236,16207515333377233067
+654a1de3-4702-ccf1-e157-db77fb063f0d,4286204147,11811939539883863290
+cd7663f7-3f04-55f8-15f4-68c66be14d51,2710823778,6204069132229215335
+9f0b59cc-8148-0503-5c7a-9b6417b9408b,986190646,701139561755196975
+9d6f2c1b-88ea-ff4c-4920-c9fc2741ff97,3872592848,12804171888556504852
+91e0e854-2472-99e0-80ec-e1a520a95452,1678375942,2493701562738051631
+537a0c46-9af2-a25d-3d6a-b1a17bca436b,1212302645,9080674465815263563
+80421f46-bac5-d873-9ece-3ad5e366734f,2832811633,12051746356627575064
+4a351884-bf60-c1b1-8b75-fb3bdac54d3e,444312966,2411683285137137697
+f030328f-1920-9600-3577-9cfeb8ab407d,3637803708,9316886998416861829
+53bab635-b508-b34c-04a1-d2319886b232,3386565796,11696839875382714541
+fa007ea0-e185-35fd-f480-b707a4a94ddd,431611980,4014014193941272080
+47800a8b-2cba-61f9-fd19-f4ee3508cd15,651866618,4441165939400802832
+931c9751-f56a-1cef-7038-b4574ef5764c,3564372158,8648169811495857582
+2d9c9b16-ebcf-a2de-b1ed-e0d7bd639604,1314997829,14004459124572416591
+5d3cb05a-ccfd-70dd-9ae7-b18cd56bcbbc,2951977439,4984548065377826436
+87bfc94b-70c7-e3ff-d657-d8244d10feda,2799983278,6513916955307742172
+0ad04aad-c018-80d6-f75d-03b2d3104dc5,638590867,8726566890639282167
+339d5ce0-a81e-0ebb-90af-242d28f745ed,928397098,9488856493556250557
+e540e4f8-f499-c28d-9b9a-567d806804ad,48427450,11325347854340502994
+8ef31580-0c25-fbe7-85c5-f66681ac71cc,1997561638,10809671052966290958
+da8fcc10-718f-700c-2b53-e7af49aa4944,1143096178,17279865926710512996
+8c191ee3-091e-999b-a3c6-e99a8e8b6e14,3290947155,5545295709866929840
+fb55835b-a18e-887c-965b-2e36a01348e4,1006725846,4570311359817273626
+35676a31-a980-9103-f312-e2206e26e9c6,252448648,1223520176530582569
+d3fc2cb0-bf83-80dd-0030-e91dac19270c,1400010631,13907683043787943740
+5cc085fe-4940-5bce-e151-cd4c1113c06a,839114545,5243820528254240422
+a41dec31-9277-8146-f9e6-e4eceac5caf5,3577167499,3383627215287348741
+e770b2f8-3949-1dfb-edc3-0410d6a02aef,1377752667,14958650072129016156
+28e2138b-f7ec-4eee-faa2-9ee56f360f93,3581693278,4751092745038085175
+f0a8bb94-639f-fcef-691d-3d6c5112cfc5,2344054234,17482690581950716367
+c9aa2173-9c90-a263-d767-92931647d260,1337192202,513822825912423076
+391f69af-ca82-7096-c491-906756f1e81c,1400578421,16854607609285757029
+add813c3-9bb4-b3ee-9ade-e58ac5d12d63,3909499374,4017339361018917761
+91ad84f1-ee67-8f2e-b5ec-dec1dc1b8e9f,3449845479,16867019327582839540
+6bc4bf49-745e-ec52-004d-53f252f7d422,307902013,12499817831987585257
+78abbf77-2b04-2d3a-c545-e97161bbc296,3175682772,8380828766936212719
+efa4fa71-46d9-1e3a-2ed2-56d4a05c40c8,615545921,11552846333644209179
+4b58b5d0-ce80-3e09-98ea-b3b1b6057ce8,4059916519,16144380271645918925
+c5cb5f80-0bc9-eea2-b998-0d3fc7032bb8,4291243856,1194403271288422253
+62a34f69-645b-958f-20b6-e98d53ca2720,2468324218,2220715939507640344
+29e94901-816f-f8a2-3a5f-49097204dc4c,3826484936,8286736580422088254
+cc101deb-e568-8e7f-24aa-62f459c31c0e,1793595197,15996198355059950553
+44ddb738-04ea-39fc-bd24-2943030362c2,347506849,8454765638800428850
+c7808fc4-2779-4592-dca0-2b961a8d1885,1582474691,7393166289611271414
+91a370ce-53d1-45dd-1bba-7d5cd9548e69,3750590660,11557923196277830686
+89cc10c3-57a9-5528-0fa0-b9af88699616,2944783837,6297452122888483759
+e0bd434c-8f27-7b90-217c-a5e2a004833b,2092635679,875382770530540939
+a0393eb8-8fa5-1a1e-da3c-1b066d0f9c05,2631755386,10442433277258397552
+2d111aab-f978-7116-d762-2c60b37c1336,2264378624,15072398866656848319
+ce494727-3593-1c09-6b1e-6b4985bd4552,3531702160,17793712841392489878
+11df29aa-0906-0c9b-bc91-2b7306a4d2d0,3144831204,3029120863513672631
+7fa1da4e-7d6d-6bc0-c78a-bbcc2a75939a,2507065448,11230614442370749072
+ea7f08c0-95e6-e8b5-c302-e618c9182c21,960316234,11312703504099915134
+17364d8a-eb36-f680-3871-cfcdb63153e1,774957461,11265317255949641065
+bda842d7-9326-e89d-163f-1fcef7902629,3719601496,15005833875460315570
+daa9b498-71de-e289-78d8-d56efbd7c739,1799381884,10649318459994643014
+37ff42e0-f6ea-536f-c2cd-a12259ad8a33,3443225399,7322471736694285157
+45ae679e-c9c7-bb51-2145-3931dc9b8b98,119962763,2851868716036297719
+9ced5ca7-96c7-8241-b70c-7ff15e9569c3,2149521987,12230317499230379617
+e95f3541-84fb-c121-a221-1db68b038bd0,1917435712,5111061561258220819
+cb5b6478-e06c-ce03-a61d-7d6df8663ad3,3886260829,17856186940680845460
+61c6952a-908c-2971-05ce-76e87cd5c2af,244022842,4051243199550316645
+dd3b4a05-53cb-0c3b-5293-8c1ca16704fc,3392635595,7637268219116612605
+45c5eb16-1fe0-4ae6-a479-68854ae25d82,259562497,17354073748850688088
+3abaed6f-eeac-5399-722d-1d6d05f14865,2014419469,12431852202472442900
+37e1120c-e139-d832-8e8d-e34fb574b2e4,111737268,11520821338402025482
+3fe21652-a0c6-deaa-6d69-634c004bf845,180421677,4844611442358723167
+773f332f-80a1-493e-98a8-8d5a2832cd3a,3946403178,16723780555633198447
+db16aa0f-8093-547e-b4fb-27b1742398a9,2489208281,17662252333867078720
+9e3e3bda-7107-df55-ab46-e60a4381ca15,2801312792,15774894236947878368
+acd4c2ea-0cea-45b2-ca85-5b79ee9629ed,2327657600,13856015939024782118
+36d64d0d-0135-d97c-c250-e51a0d5c8f26,2189371398,18265620037030771313
+37c685f8-f3f6-8b89-93f9-d2ee70e19109,58344783,16785906638809368361
+36e15c7d-0801-de51-26aa-3e80e4b4c58d,2558103216,9908614011466077874
+3caf4906-0393-7762-96f4-84d044c520f9,1096163200,18207914954296046689
+753d4060-cac9-3a3b-51a1-7e43c6c7fbdd,4272334141,9193791256696306780
+8d30d560-8411-1908-a791-2bd5c6917f2a,4129016864,39408034823581551
+c36893f4-b6cf-d7af-2a26-b26cb677f690,2789422777,110975329733310155
+d3605c71-7955-cd07-87b2-289a85563040,3195004989,13456586707068237698
+b8942f47-3005-5b76-7795-a0c2b22ac3fd,301506807,1589625818763956249
+2f6077f2-5dbb-18b1-0ec9-cd47b4634ed1,3676078099,11216561937808287886
+e0ec500a-14ba-ad4d-9dfe-91c9878cfba3,3015920036,4962310625084085947
+3c4a949d-5556-797b-d5ae-5c819ea7eabe,3188165781,8114537970805595526
+7b1b0452-3ba9-f171-3bcb-a854aba26335,473452966,4160279645044417737
+c8246d72-84a4-7e57-c92f-e761959a2d5f,2198410894,658912127675614272
+303b9d86-d1a7-00b2-23df-0821be43c32d,3919903935,5909257332952468905
+07fdf614-ec1e-8fa0-d279-ddfe004cac62,2086059511,677923205936984790
+1293a3c1-b8b1-2e8f-e206-64ff80f5bfb8,3390595095,5759763151248301053
+389e5e8c-04ee-791f-25f1-0f838f2f0312,3312516069,7618688024359409341
+3c5b0b7b-ce7b-63c3-3419-185f38443295,2410950155,13147879057707744525
+f996ab5e-428e-35e8-da1c-0572c1e8e73d,3396585973,1579430609057349495
+ca65dae3-81da-3573-4306-2643f8ff87e2,291248281,17520452347879341465
+62f03521-ed5a-5e2d-9a7d-5c368044fbd5,1424090386,14848435161419521333
+070c3585-0cb8-6a7b-6b51-4c9d8d65e2ba,99776477,13724962833787662334
+540dec5c-ae16-8c3b-2b2b-dfe5bcdbc1f1,2744211949,2676862797345089467
+f166a4ac-9f03-600d-3c0f-80e51319bc53,851975791,8265087244175794744
+c9a04442-d91d-5154-22d4-d6a6272cf847,2605230434,17733971834128155314
+a50ba072-83a9-0a65-111d-11672eddba1a,1359622705,5545861868471223113
+c998dfd9-e2ac-8ac5-cc8b-5adec42bc005,3094773455,113791445649265905
+74e18366-3022-3c2e-182b-669f9f6d00d2,101986319,17827630140331642112
+807061aa-92ed-1a49-69dc-b763ed494493,1055103128,7915949560858064103
+5458b404-228f-d669-de2b-5b1b6747e623,3373299160,17729324031390630709
+245d0d76-dae2-8ce7-1557-c64cecf3a140,3910342005,7068421116204035436
+d3bec615-a4a7-6b63-c74a-e3d98cbc5b58,1892267667,12398082619805323034
+04cb608e-da7f-ba75-a226-15b6d23a338c,2310556856,3919474274155298832
+d8f2d3fd-9744-f1cb-1611-7634689b28cf,2254813543,17394322949814798961
+1a8e8710-250f-f15f-ea91-dd29e10f9042,709045440,18435401529389729393
+36d00794-1871-b324-20bb-1c5e6187d402,3926761124,6538787220603714422
+e8af0e77-e96d-4d4c-8d8e-e2a25ec11f0d,966745407,17422636787763869447
+fcaa6de5-523c-5bfb-c737-2f78358a9bb2,952469346,9646838428091051928
+d7d7b4ac-ee35-2a5b-29b9-15281502d8de,4015956073,1651750621450081200
+aacbdf6c-2bd2-a40f-b512-dc7b22b438fa,897020784,13494522402728645880
+efb49944-a0e1-24c4-58fe-ecb7fae99dd5,2956899464,3055274500569205434
+a12e2d2e-9f0c-17fb-8848-d8274e8f8775,2772273996,16357330715514065757
+1408c835-1ae2-5e2d-f37e-25f9409b6716,1535028408,15832704105529075652
+73ade0df-c4aa-a505-b546-eead9b0a570c,2980200823,2706661151418885378
+13d0298a-1139-1a99-9566-181d1b3e3733,198950268,6981088524435159700
+52a9a0f7-e470-171c-34fc-925a5a075b9e,918835170,3365476356820452188
+4bd8e38b-57a5-f796-1b84-30587cd05a64,105981987,11066244517985693885
+6f1a2f65-2008-6fa4-9e04-9b08ff16206f,881748628,6445668452153277643
+57500817-eca5-6d32-e9e6-fde4b7b27856,1992725926,1643579637595914228
+61a1bdb5-ed6c-d14c-4c8e-403c9b217ab6,2270250817,14878512058951321867
+1a55bff4-300f-ec0b-124b-ffe18b38e4fb,266526539,4215037855421747795
+e50fe6cf-9e9b-1ea2-93f0-9eb59f3a9abf,3174781764,4770146645954163924
+5e950df2-d067-869c-618e-619023818f33,2631675244,9534295667371162816
+10a8fbf8-5e0d-2bf6-0590-1955f3f1cd72,1499392723,15965886281937124704
+bf2d9757-97c4-fc3a-a52d-2cedbe1d6595,1141549680,13352987495188410868
+0cf7d913-1a8e-d435-6932-7a773bfecbf8,232472549,11834914286571399665
+e6de012a-e55b-1239-2b4b-793392d73d81,1244883669,10484540852864357406
+84bc6672-408b-e5e8-46d1-b6674761436f,373608450,13254458458094173240
+bb672a6a-ad90-479c-796e-556d039825f6,3432849893,12095990541024792190
+cf5e2dbc-677e-95f7-7d12-d405ea686d51,1444316439,11164091884234910016
+3a356b4c-a790-bdaa-46b4-5ac373797b9e,3150956771,6392963576570800729
+6eb9c9e9-6f01-40ee-a1ed-7db0b1ddc2d4,2857626796,15938401490109389248
+a5d9bbbd-4a3f-f20d-761b-4213227eddb7,287648453,2727783568330740508
+9019d4f2-7998-8832-6eee-c10ae15b3d2e,1862481388,1263812051279494655
+2f945695-3edc-f707-1911-46f4da2f00ec,78003312,7678625454932186333
+ced3cce6-e2f1-8c76-4494-74dd4488fb0e,5572398,5016428019033234949
+2b0fc052-4bdb-5e4d-2903-da00aeb608c1,4213364657,1135649518705401916
+464e6794-380b-2f69-a9eb-99706c433f61,2807236278,2073760077272226159
+ef6c9703-af7f-33cb-c5ff-f1c3c6a0d791,1301838497,14161837671832428273
+e54cee91-0756-beef-a97c-ed85e7d2715b,2752206957,17939295287389436984
+9ad6bf61-9496-2857-9069-6c3dd7ae41d3,2751934878,1733513652598937146
+4aa65c13-b76f-383e-0883-a4f38c4af8db,3901722927,2962284048420334032
+ef99aefc-d884-93c9-2b74-74d2e75db198,3086140450,12923437473712275558
+aedce37b-baba-4846-b555-75f75ff5ca46,2654132896,7460149177092832094
+2837d38f-cbb2-3c3a-040e-aa4c010af712,1007360883,8459023698870791229
+dae3baa2-8f49-19d3-0925-99f4925d81ab,875932629,11773183987273135876
+54d9e10d-2309-5e92-de65-e5e8113d7b13,3678504368,7571196813334913805
+83a25f1d-41b6-ba1d-f032-344383c2ce24,3904358074,12228925651382525341
+7b407268-e1fb-5195-e03c-c0d158d7de67,1551912655,10741503111565859613
+a7060814-2e6a-ad77-0d7f-a0e4a8cb2801,4046748527,942439536212519808
+ce2b26dc-658c-3f35-30b8-e4972b4d7ac8,2589842906,14996710093390537444
+dae2190e-36a4-d7e8-fb9b-4989ceddf0c8,3749638284,17517889192592821307
+58460350-ff05-4145-0af4-02c8a086f611,1610689343,2808639369056091199
+e5a8046c-d05c-d72c-679f-5dc06c70d932,3441311457,16017355361746041033
+e037967e-fda7-cc72-cdaf-c4b1e5dfae79,677638650,6919334072561816597
+d9328930-4980-61e7-dee8-10885b7be210,1548012131,5505514902693342653
+c37d8561-ef94-fda9-b1b7-f854a4f3602e,1794828766,4840795380104568787
+9c934680-38fc-5b9f-acce-f32be0688480,1282850989,2418963265233894224
+765b300d-7bd5-bdbd-0770-c25952496479,3226527541,4426035697918798337
+402a670b-b458-719c-9e66-0d77dfa35b60,2497235830,14973099894737589512
+6b40c991-d06a-2eea-c082-4591b7be2888,2204919465,18073259544821514125
+7ff09586-a94e-22ed-6c02-62b76a8c6cad,2148503292,14594256341524046254
+b856de72-e1c9-e125-5b0a-ac97ad6f1fc7,1922673197,10455692022047978668
+0e8f904f-3bdc-a76c-defb-ce347fcae0dd,2759769196,15353404200224423600
+758be274-aa6b-b31d-1da0-4b71aecdcfed,1529527468,5157870475776411318
+80ddae21-3f0d-b1b4-414d-37b7d41c90ac,55001504,4215296974328923
+21d52d00-3d23-11a6-ac3b-53396aa420c9,1301563703,3642755127875967550
+5f27227d-638c-e18d-74ca-c74a2158e428,3648726144,7166577334977331002
+701e552d-0745-006d-5739-e3ab6e4efc42,431652251,15596199930864667258
+00e832ad-b97e-6a14-85ff-3cdafd01485c,1142606188,5528530095772768097
+6d9db923-e046-44b4-c3fc-9c1b0e673dfe,576418231,14069428558710450508
+c0552c81-67df-a93d-0321-f05a3876aa1e,206610303,7747253562944499441
+cc79826d-9a97-9084-13c4-d613d725cbdf,530939070,604752043163222648
+7800732f-a5ba-0568-fdad-04e91b68416e,1245639825,487037781477248879
+907537d5-06cb-f577-0b1d-00c8c7a4cce8,3600581024,128141819728575047
+b8d4361d-42c1-a065-0d54-6f3fd8da4e3b,3610688573,12469235468786002788
+7b0b5a02-e0b1-6f8e-0fe8-47db650fb6d6,791271882,18319270930596730799
+6235b3c0-5189-a066-1759-9d4166005465,859567921,5605465146345048276
+d5c9b49b-aed7-707f-e5ed-02415b59a4ac,1261594205,6198372105682463822
+ca2e7e4d-d0a7-9ee6-eb40-f811976f153f,2111607602,9433583482392337976
+db768348-059a-9db2-b606-7473f4870f84,2470978563,10598111327780154691
+29ddf2d9-996e-069c-be16-2866e5176468,1723068361,7667105657516529286
+7624ac70-3b8f-6906-f918-c202c8bd4460,1631623400,17067449970606694970
+63ca9223-a4e5-52a4-75bf-4c3560f68437,1754287322,14773085496079615993
+3d6b49ca-31b1-9f41-9dca-b1dc68fd202c,1640992805,3676069326877216519
+0720711a-c9bd-3306-66f7-ef173383df26,1792675217,15493491006397146782
+26cd63ed-c9de-6bc1-7ae6-e9a4eff9dac1,4033106821,802219042679898481
+231e443b-2b0b-6ae6-c4ed-c9f0fb76f23e,2548249108,503422775076252515
+3b062771-6438-7b9f-9628-890762a9d470,577839581,9376538735369891089
+1266e684-b0f2-babc-e227-c01b4227f508,358643206,2746658204622751323
+d075eec4-0ef5-9cb0-0b55-25e26a2f7f2c,414362787,15942828509645377126
+d96ae03b-df35-8772-889b-fb5aab01b6da,1470895575,2127348392874250783
+474d0565-a8d1-2b27-2539-3fef71e76c74,2327564878,5843008568875155839
+ae0d76be-432d-8c3c-4d56-ea2133855955,1743063659,8249354204983590856
+e84b0ad7-78c5-f3ca-581e-553ad27ddc4a,4227630205,1011206258707551251
+27317c11-4240-216b-993b-6f8536d76fec,466971294,13525558360195023349
+e6fb27e8-79d8-48e6-f712-3bbe26a55d8a,3531936427,15775286864288245689
+94a9170d-7295-b336-a201-e2538ff40122,4227599005,7133316900315600645
+8873c850-fc0c-57d7-6109-b467fa7dc582,1039749419,16638404412307799441
+4ad97ae4-c96a-c735-2e32-c31603b68596,3685597860,6302449529357343593
+f50e1713-8af0-5d86-18d0-94cde3749028,1254590441,11276706967537387251
+1303fca7-26c1-695d-8d3d-7a19572aee38,1649055624,15499145273845706855
+7cab238a-64af-d840-442f-107275054fd9,2085326322,6761852692907946716
+f2317a05-93a1-0f5e-f430-49cde09d0aed,3191895125,9622501631169192842
+c91a934c-573e-e0a6-2636-5a2f178b38f3,2840366354,11081656772852706708
+b40f800d-c504-bf87-e19d-84ad80bae951,2447051523,11777972184964980656
+5d528f21-0c74-3af8-ab69-6e1875240474,665492788,6097806213956035694
+c485b5de-54e6-b9d5-ef65-e54de9eef46d,3251547661,3193569007906400287
+cf29312b-cfae-c231-196c-f23cfb95037f,233250690,15084397163784620876
+7a045347-64d1-725f-36c9-247cda44df7a,452771657,17585425084097700922
+9535e5f2-957d-8f79-8577-65976170df14,635094468,1000381304770998
+3c5121b6-5d35-9fed-7c5b-a96f42c995b9,1033095678,17875431068936637858
+424393a6-b109-c371-1bd7-82b8f0a394b9,2377053013,8282322978322605278
+09d50590-7c78-fadb-e911-def356272876,2199519988,352984226020377769
+b61c0956-c71b-f6d3-3598-586fe088c827,4228392348,824086177665227392
+d52d4e6d-30e0-d5e1-dfb1-bac42af97a42,2469110422,7771593833379955715
+34c7fee0-6778-4059-b3b2-1bb3f8d59fc1,2539957219,8596179862829657281
+9b178b84-2442-fad0-6f02-71666cdfe319,2116852852,5824965593990584654
+75e7ca6d-0edb-7b41-690c-79f451f58a25,3550911646,10042373522843024620
+31c35daa-9b1c-d02b-06bb-509e5fe56cc3,1248011517,489047885259454247
+d2599624-c5b5-6437-d23a-40cc6853ba66,2448277644,2974594608195939361
+13a7470f-5b4a-679f-4794-0238dba837d4,4079782980,14460428537795599648
+8012118e-ccb6-78dd-8ba2-b43132fc2c6f,3770113735,12144656075992573785
+778cce34-eea0-75f4-1648-84febd5d61a1,1083505689,7544055187240144948
+8d7dcc4e-16c6-ac69-ccb0-a66f405cc656,3962943924,4046579875381138858
+13e2e361-747e-9c74-be1b-790efc5af527,680897500,11224775194542896634
+94423a6e-f2ff-4ec2-574c-8e00c39b2f10,59837277,10004420409718150946
+d8ac1b0d-531a-adcb-4832-742627d26f8c,2678127771,6268775023020542446
+bd35d99f-774b-8217-8b3e-602d38179c1e,3758013606,11966725663834993653
+1fe8a709-f283-1b33-a09f-3fd6172f83a5,3301632218,3202446050506966886
+640ba48b-3a1c-7bda-6faa-f6133d62bfb9,396758266,13304274937929014186
+fef2940c-9160-208b-aa5d-2707b1851612,712648233,9161292921542615682
+df72e4dc-80ec-28b2-f0d6-887791af55b2,1921823911,15227334111600545705
+623b1fc7-9fda-5d07-4aaf-e20ecc4dca20,2174926391,1107059039392597702
+34ad4ba8-4e37-730a-8c22-1598eb15babf,965483216,8408805916427391231
+93e7af8d-b20e-94a8-81a4-aac51992ca07,1702391109,10156435584547931635
+4012d598-2d08-94ed-008e-9d07489a32ff,3377535076,12272141101404753434
+e33220c2-0ce7-590a-af11-c0656d2fa8d7,3674545307,12001883525058037292
+d744fc2c-409a-7111-3981-ba0336101f3a,3987711712,15320804554482624177
+37ef40fb-4c49-7bb2-5347-975f748ca28b,2518320708,17124683651006163492
+7b9a9810-3af1-b1e6-e02a-843cf23b5dd3,3832114308,17249561729180163119
+381f7e38-6f49-8b13-542d-396c11787fe5,1083921120,11915778886310260143
+87650479-af59-5722-30dd-126766fd8f79,1529883483,1340493154144061749
+9751e05e-62fd-ce41-1c04-1b85547fd914,50299064,15549462435012279338
+6b785015-e9bd-9102-232d-5945c2df47d4,267208407,7388886456327597424
+8cc33dea-1cd0-9e67-26a4-38a497f3ba6b,1437444619,17760095484061816472
+ab9c9727-753c-0867-936d-80879ec40dda,3748434520,6615805993656578779
+4639a38d-1816-e7fd-032d-93e446524dbd,2878057256,969669892508996766
+4370421f-1a32-1925-3533-454ca3653257,2236508432,9462507820362583502
+8d4c1b65-0335-d173-6fac-1aed463b3fb2,2497721067,16931472479119178388
+829dcd02-6668-9644-b345-f8f03e9d79f2,2501438536,7949079225340325394
+00e6c65c-ef5d-e1a3-eb9d-391c472801d2,4243231609,16786259917494912917
+edbf8d58-a2a0-14fb-8f86-688a0d6ade1f,2599297213,17850616512794041084
+0c0725cb-eb97-aed3-f766-9d63a232bb70,3821375469,12477346082928998902
+980a0a1a-a9ba-a80a-6d14-1f87e8a2923c,3232320199,3707176937476375498
+d3b38fef-d448-41c9-b27d-7ab8d89f3cd3,2960066830,5145543408789421376
+33ec1775-ad13-ef6f-0410-bbaf0937b040,1762614562,12569427655023726007
+9135e5be-7b0d-a7b7-45c7-abd5dd866f80,338615422,10794535863754441950
+f3f10b18-eea7-8915-b3ff-41754fb030ba,3227381404,1184682549510759204
+5f8863ea-8605-0754-6605-fa6acd066f5f,784915167,4318920435521562319
+e3de4f0c-33b2-f67b-4a22-4768826cbc58,1623123763,7276248391336129994
+58bd5f6d-c1e3-72a8-0552-d796d087f286,3555238340,6012382943312922426
+0e02f695-e6ff-468c-d7c1-4325dd55c423,4124153060,12513076623924105766
+fffe198a-b560-510a-299f-87805b893ba6,3840633215,16610243790929478294
+a01924f2-e89d-bfd3-efc7-5a2c6d41f59d,1346355731,7468478058576256380
+5ad7e92a-67b8-a1d5-5276-1043a166c455,1997252254,4815348267442794609
+2dc9a9f7-84d0-1994-a9df-e8e0f2fa1ff9,1410968086,16990583172127380725
+4b099e05-cf04-52fc-e455-68725e35785a,3740455544,13717266181489180830
+4771c91b-2f4e-879c-ed4f-01b0d6f4607f,2174992102,2070948735408618936
+c82e8d4e-988a-156b-a065-7964252d077b,2195074884,12343401996784478500
+57c0e2fc-cd4c-b551-e1a7-05f97aaa3884,1474951135,11429369472573249358
+2f909d6b-1fb7-a6fc-1116-ced6f36c32a1,2377573946,5763751746193088944
+01721488-0b61-e771-f373-6aa8e6f3da01,3222665834,9305988410597019762
+b9d227f2-730c-7607-1365-36a0df2c5f0e,323586381,211495230832881788
+ada2c8f7-fb07-d496-d387-edc0d3c781cb,2028801052,11631553845951235673
+69ae3033-8a11-d703-d3f0-bf586df69090,4084365267,3108402817871384109
+27f9058a-7348-3f4e-b919-9b36bc4f2425,3338401070,10405587429998780849
+d8e0ec24-a799-9814-46ae-0c9f0dd476b7,2337825382,5518606376176363941
+3b27ddd0-5c56-5f01-923e-7763a09df472,2198948399,12375003804193780691
+bacfcb94-680f-3408-eb34-57ddb6b62065,1491881490,17974505863342025638
+f3c2dc48-93a2-6674-7909-933320e6a585,1293370005,14959234505096188375
+fbe74753-ac7d-e993-4274-99e8d4595539,2783785044,3989568797891686204
+483023d8-1d13-0fae-3925-609ef815e0c8,350947164,14382000521905128212
+9858ce57-35b1-3183-9aa9-eacd7511a355,36352164,2718392897760880948
+bd0ef183-97e3-d656-5f28-0f837040eeb0,2479498208,13796545753537712560
+b91f6c85-7457-8841-a6b6-83efb7b911e5,4184257003,12297085031045802793
+00a57934-fbf5-de19-c5ea-f2f20a90c75a,457292826,10464351374371376323
+4c85e5f7-a693-c476-18ec-a9558b7c0dc6,4064692759,8562037805408080189
+37b2edce-abd2-c9f5-74d9-bffa646bf47b,2780005751,812144132493162608
+89334c7a-05d6-66cc-4216-cb8cd6dcb276,1972648803,18108341161093241720
+fb7db5b1-da7f-60cf-f6da-233103d2c5b6,2691967025,15272539527813990341
+9a58253b-c14c-6e14-e90d-86411e0dfbac,2641451240,4125729581423957353
+8e01fac6-38d8-48ca-6f15-77e3ff0ee5b2,2889148701,9424381475747851289
+40440cd8-e635-2d9a-6fa8-323de2262285,2848314507,11988168907235005251
+3384f4d8-308b-4ea1-0521-f7b3df872068,3290796020,8508698753435303858
+6b55d190-e480-08a1-f53f-2658c7c91656,1188159016,11073128590617574809
+06782124-9faa-66c7-6a82-e05d4102b194,4241271483,6605728575600716921
+324ba499-156e-b303-ccf9-2199b56a43ee,2400653084,6735217708230938045
+874738aa-4ab3-465b-c74b-a82588b6f614,2082732760,57570756482113533
+7d677fda-7238-9b4b-0e72-bf1cd7da0a6a,4069046772,1778840612574936362
+abb039d6-0d26-5bdc-4b92-8a4a4859b235,900903547,174021555954007686
+33deba25-c49c-243d-0347-edef389d484d,183389726,8215361613352525052
+b097d9ed-d476-6ce1-33f4-3f3a71ec0ed1,443896830,4254909517019133495
+fed8ca0a-be6e-0279-6fe9-b84a5d726c5a,3782132946,15108529512325161332
+63a5e39e-49c3-cb10-97b8-6bb84bdf07a0,4222370865,14399421740353977215
+582a16ea-b670-702e-110f-1e2690a2dbee,700974488,16141089000129464236
+4ec7aa3d-5ef5-656d-bfe7-39fc5b875d83,3037760270,14197653636893461906
+ea8a7d7f-fb46-6152-9fda-924f97ecf275,1659457462,4454596487121704231
+f8abd166-2f21-d778-2ed5-e830a3a2d576,138339168,13313054797487678520
+a2723ec9-8aea-7512-a739-89732ac38974,2540625607,10826246816798663874
+76ca71ef-5281-143b-5e7a-6829980535a2,1292362232,2151181035522493851
+90285c03-4408-1983-9f8d-672c8ae32b60,3836046970,639097064693066711
+fd8e8724-715c-5f06-de11-8d987a340def,1897660509,15980008803269903211
+3dd9d255-7894-9260-82da-982e85a2b19a,3852283850,11472208942259702093
+227fa209-063c-48fc-910e-e029051bdf2e,2293762076,15137900624375404160
+6b1f470f-4361-25fd-04b0-e001ffcfbd67,1604577909,10700600418890713264
+9568afae-c12b-915f-f7ef-4542b67ee18c,204853954,10432002268402543009
+b50e7d6c-0c20-a62e-ae44-4dfa8b08b1b7,1197957730,4024775519470684180
+26995698-064f-a320-feaa-36103484bfb2,3836140920,6738771956946875234
+897d70df-ea9d-eee5-3fef-f0d73aa1df74,1189975526,13774616103289567942
+9c8e15f6-61b9-d4a2-bcbe-a3f6de009aee,552466524,16264426184229285946
+b42f4e8b-e0cf-a113-ad97-ec1230af3ae2,2193990293,7398493536592666899
+5ca556d8-20d5-d408-9b64-4c05ea75ad81,3058200991,13200918903182719863
+b8aaaf3a-bfde-987a-c603-7578ccf43cc8,3226391630,10871092197274155901
+7d88bebf-69b8-86a9-2570-27980270e719,1253689165,9975869534940433766
+94b0766f-3a4a-c8ae-8236-8d6dab697ed1,2803264809,4382726166411790687
+d514d22c-b52b-f36f-9941-d45e90e3599d,643259354,12384154741278192578
+9a7901e6-091b-0d36-ca00-56d63dc387f8,2060824252,12877737963607320556
+15ae01e5-c576-4879-481f-e2c6ca639812,1372304951,1159570211336449090
+08626916-0e98-b157-2dc7-d8bc408361e7,3470793565,15643131056014514147
+3ba1f6f1-0818-c43c-c50d-73575ea2c0f5,2903703062,2705681864357938875
+1d5e5bc1-d0d0-c052-cab3-4f03f8bbc14b,1847071312,13468065641546048519
+0438ea4e-e8bd-c686-7f29-79c19f0964c2,1976053163,575262822699832237
+f07017ba-6996-c4b1-0582-21beb7769871,1441221813,3053658548365237493
+493f596a-6fa1-7385-4717-298136e4d131,2770837389,3664315464134788926
+baeabd96-fc5c-0b10-e59a-4f84f8840573,2662100504,17843750704780237714
+4a3735cf-3475-bd2f-d702-ee2c20e2f596,386935456,10573683743042835343
+bdb29f38-dd12-505a-52b1-45866c4ed517,2295141096,7747490844255592597
+4a9fc776-e58b-aea7-2306-493091a5cd90,1893386032,3340134716932120348
+969d1375-bb75-f7c3-6f7a-27479b6cf160,654486212,6484729061581433618
+330bfc54-a322-1ac5-829a-cb946325974a,764923940,17069383259612521960
+be77cd51-709b-c143-7f2f-cdbf14b6e8f9,1455538393,1472599131150140414
+c857925e-f542-fedd-42a5-87f314674075,1942468667,4964002033666566541
+0c8d734b-b3be-d13e-97c1-875a6d7403e2,2312566171,18384693975836566533
+4b46448c-c766-3762-b8b2-0e55b3d58cf0,3327889183,5955149733516204857
+668f44dc-ca4d-c680-113a-a8101d43fbec,3153861909,5892936995842417217
+c135a532-e2a0-5b66-176c-c17c6f386f1e,3123012630,9747479275154388757
+9cb9033f-b9af-7e83-5916-52f4fcf41673,1530991862,13334461416509469714
+e6bc6e4c-3df2-648c-73b6-884bcc22f035,2698246481,2354488739196234084
+99733661-5692-1edc-8bf3-3b907cc5f56f,652795878,6431254236384860739
+ccdb5d24-ac5d-fb84-3e32-57f56c22c235,1103199083,12781644873604899924
+55e0f45a-e00b-6998-ca2b-3e1c856adb48,2371664345,5942021791178365288
+05d6fed4-4265-9f9f-7959-d741a6f1972c,3040308470,13690293942367392868
+8f38cafa-14b0-76a2-794a-1e9802198379,788926115,9769425791865587054
+be37e4b2-fbb2-981c-8dfc-9c3ed5ec9af5,727812377,198974631504385519
+56835554-df8b-d592-45da-6dfe7a2bf442,4183409905,8848109644437264889
+1ed4d202-2145-5ba5-3c78-2f0688f95c7b,2806084855,8988585479891337594
+450ed7aa-f381-6feb-a9e2-6e385669fdbf,3284377116,16204701234973441147
+d766769d-7882-8b73-16d9-673d001b3b95,3594026297,2560474512788979408
+0424bb73-263e-1462-65a7-ef3da22deb4d,1272718537,3701234982503968238
+31a40108-4dfd-7fcb-97ec-6845fd0f52c9,1404226416,7241456850703076955
+576f81ea-185f-661d-4349-83dc42f30ad4,2046114141,6152690766522741232
+11a1f093-344a-021d-6e1d-bdc5a367e1bd,3845293468,17954249830396963054
+ed4d2cce-b811-5156-f6c4-b7115cdbac3c,1585047740,2239992465267643338
+4edb6650-67a7-7205-e519-29b54325888e,1092884662,8527145001503889285
+d64c94f2-34bc-6f61-3037-d7dacdab32ee,3998934537,12652310162354339562
+b435a2bb-655d-7fba-d168-13cee0cbe44f,1881685861,1744345158317071662
+57f92d13-f267-8827-2087-55a133532a99,1047702679,6350200000805596497
+443be6c2-50f3-d240-4469-318a9559d118,651708438,16641643256302986706
+3c3f4c5d-c35f-90e5-5581-7abfa55a4547,3556496243,5375795508348190895
+819b5c23-dd3d-b5a2-dd93-4942a8a7a527,1067342502,17478712775406332277
+2120aec7-1dc2-4934-d159-fbe8aa1c2627,324816608,6097442480429130089
+28881243-add4-92a6-5f54-637c8cba8d12,2706891319,16098208885607363920
+e68ff95d-d0d9-9832-5491-919838977462,1582292149,9938665850449666812
+3029f2a5-e0fe-fc9e-e9df-0de22c5cbd2d,3549089629,16846935964698370375
+071b0f06-6f40-a338-0f53-a7d36a2f3f40,3307107362,2488371168177573656
+2ed8b915-bc01-4f2c-860e-b02a81055280,2459767802,3897503597268136268
+79f6ee59-dc68-ff73-9768-1e9e9516b73c,2734932106,13637992543106885205
+daac759d-91ea-e54e-ff3f-f8f10fadb8c7,4205012729,4474327048863752266
+32520f55-0ae1-880e-3025-42eff9ffc1ba,3282407073,4556029737818445318
+4edcd362-ed41-d905-d952-e77f7d967e78,577038001,13678820997290438477
+605a8e9c-7e10-1583-a017-e65931464f94,1646428140,13759548283921114530
+e7e128c8-a6fe-2cde-a1f7-6d5d2b870179,3650861643,16588104491120313957
+abcc7445-7435-37c8-e72e-037967ea41c6,1434319631,2722226321642287803
+b4c9fee0-752f-df0a-02a8-52c612b2b1c7,1110694982,15697505831767302600
+efdd5b66-a3a6-4962-329e-b5b046b21e8c,1237044026,8276705490389593195
+4ae52c45-be9a-881a-d069-b5ab384e452f,1740825482,15488562683039145129
+d132588b-4a21-5145-db83-2fecd7eb2300,4046147103,12418659520948902603
+58e71d6f-c149-e057-66d3-3cd19fabdea1,1938212121,9301209550387110783
+78f39d8c-1610-4ca6-63d4-6e523de1494c,1683737419,15009646587406202372
+091388ce-357d-9334-46df-46eff06e2952,3926262031,15394750938083760965
+82e60ebf-0ac4-e236-f0e1-14007bd1368f,426760406,13421824870227686907
+1c2f3e1f-d2ea-d6af-114e-c7f3652bcff0,2216204232,11767387367589762764
+cb9247d3-9232-90dd-8f85-8bd2c17ed266,285078020,5152857756557520881
+48a29895-6472-d133-4541-9a57ed0c0265,4017163196,8611706192820178771
+1c3b7cd8-14c6-373e-b2ae-83204b12da30,474601129,15609089979412800338
+28d9790c-9278-51f3-4ce4-5f64295feefb,1531491968,15513335610828585115
+191806b3-0f9f-163f-c076-5dacd9782b83,240649651,503149447898401475
+b2f678cd-a9f7-3dd2-3d02-852bb69f2c89,1262944730,1768364162367173313
+62e74dfc-d00c-b6bd-642d-6e6f2abaea1e,221143467,3235619198627317262
+668b3f9f-adbf-4806-8688-aa5466bb67c3,728479751,4573928412083554611
+fce2d3a4-630f-c172-5819-99b835fe5eec,3946188719,4564094795768808153
+87139261-17c5-a30c-e1b1-659c1b5a32d1,2888010839,7220486647042364605
+053aa4ca-3138-2189-efc3-c7379e8111c1,3100916940,6392269014407145907
+914fac29-ce8e-4e47-ebad-0db622d1d2b8,3309520372,16131915829295312786
+5603a359-189b-81bc-6cee-f1b588590aa1,3657958869,2338464531607492237
+d19260f0-58c5-4bc6-0cba-bbe4c1a9b313,1047009983,4256061458571325877
+f9f84091-7846-ae54-a442-b356e8548fa7,2466261853,10685385364564680357
+e12eb021-ff2a-9821-4069-ac6f3f811e9a,160625426,2749128719422477766
+0aa79660-8c69-ced8-6906-ffc405bbebf3,923705178,17514544350838143240
+d204a324-d941-daec-1abe-fab57217382f,1089638786,11920730722065168099
+38f4eb01-7c41-d553-71c8-74b03eebaa50,4231877852,6164093995718077215
+ceb77578-55ca-02bc-d7e8-41c9ed83c539,650920648,1598703090286201055
+54d9c676-0286-d134-4758-936db863daff,3331547222,9051892502738992900
+2f54d864-fc6c-051d-820e-3fdc7530068f,1137353624,12603993584207002306
+42208f12-cff5-652b-d32d-82c69d5652f5,3483962283,915439321670677765
+8c81e44e-0963-4863-67e5-1d6d19f25bf0,1021304813,7227840325552493033
+69bcf714-b38e-9d17-118c-a787e2f19481,3754771054,3708503259812221887
+14423434-e401-5859-003a-1de56080d7e6,694533673,11419335953293483158
+29fa12cb-2998-3dbb-4986-bda556d44939,64989762,15917671136410345680
+330ac381-6b07-fffb-2772-3c864ce0311e,3501379318,14470920319543912639
+2ad34f7f-65f8-4620-a293-56686cd8078f,2345624054,3525853231638031061
+87157403-3e9e-4d46-7052-c2310f17812e,3112339043,4232926596790391781
+af2ef197-9c2a-7d9b-8f6f-f0acbb9ff791,2728162576,17128267836741855739
+c9b5062c-ef98-ad72-f6d5-0be62974d32e,2643388996,1666369625104427124
+cea09592-3deb-9ee1-f567-c1d7cb352242,2177615322,16395250643349555336
+14bf9dbc-b22d-a84c-955b-b4a208c39a91,1683119406,7618278903188557915
+d797ceed-fc96-cc5f-e880-24f63fee09fe,3322251070,1279151035513276462
+f5ba8f0f-a724-b0c2-2931-b7288f9b8d53,2492868319,10138120261195362589
+2fbf29ea-bcfa-a6f5-6315-7630e5cc78a1,2212554471,13899158978111771475
+5b819ac8-b7ef-1898-0e25-e407a637dad7,479087835,5067094089453481169
+edc3472b-7c76-ef5a-85fe-b1987549ff3e,2411481132,8223999468035712718
+307533cd-1702-9da3-5da1-87c5f01163b6,2057500961,17887865169005474086
+059a47fe-6928-1a1d-a964-9b0bd4c84453,350940380,3186100183520049610
+9adfd0ea-e073-939d-b6aa-cba591dffe85,3011554944,18407206483541391955
+10c3e02f-46fb-64fd-51ef-28ce666da024,529573909,18222407335383907874
+c0303988-ef72-e68d-162a-b014821d30ac,625167912,1400008239899020952
+a9a7f64a-da68-6b56-3ab7-700f331d839d,1055611999,9550402528474847317
+4c73dc9c-b9d9-695b-858a-b27441d1cddd,1160770895,7542453366564975341
+6b44e3ce-ed55-32e1-c846-dbdfbb3e9bf4,3250036978,16790262592529037404
+13b316e7-0ed4-2e6d-98da-05cca3f9515c,3684429438,5496033228133660940
+19632e74-4222-30ef-350f-98e6667cd61b,2965758932,3008844179213055597
+c77eb26d-ee45-0350-9902-d93ffb6cc9fb,504966947,6158940314643036334
+61b41bd2-b25e-2426-ed19-5652418a08db,1790961905,4439751675963146252
+a1b57b0b-4db4-c097-6756-194910740d5e,1183575556,10393375200425644167
+814a4c95-0a80-0de2-4a6d-8a4b975e3734,1831654711,14322726049709067802
+5ac7f5ec-d27c-5c44-9a4e-6f3939e9cd93,2009967959,1068069963680912971
+cab8779c-8a1e-9bc1-8a1d-06741f7a275b,3258836282,8733191044585418117
+6bd459e7-efcf-648d-84eb-9075dd1bc212,849420886,12091803915715562896
+c56d442a-576d-00fb-f785-e96b744c7e2c,693058645,3400443592437274373
+59d415ca-cc26-c519-3a67-8a2520537187,2851535298,8171002108244403625
+8c64e50c-58c0-fcdf-461c-2fb92af80e6e,2147584929,13259608507300068231
+e4aaf868-5bef-6594-e038-ccfbfde75595,2368209337,721922331134442612
+e6c910c0-35d6-8766-e11b-f21d23ebd2a7,4198670114,12525486050958995305
+7e6a56af-05fa-78bf-8cd1-81c760fcf710,486859353,11513406272121668604
+a74fb7ea-da56-da47-ce0c-bd6c634e91f9,4119308921,3955486590272224851
+83cbeede-ff8d-79ec-44cf-4b8a3d1c8ac2,1193753218,10861295612302135720
+6e7323cc-6dca-d949-8d02-5802efb49931,2018784585,6586161469723054764
+577a6b4a-b1cc-0794-2bfd-0ea6217fb560,1504277012,17800471483788787007
+dd16ad0c-36ff-7b36-1cc3-effab7f253cf,697683530,3609740056836924220
+880120e4-9bb4-ee32-1764-786dfa59c326,92991224,2200411582481973051
+890ac37e-faf2-e85b-fe8d-83c6dab7c882,47662309,17984977366773905848
+82360e3d-9cd7-a152-6616-cd7fda1de9de,223506849,9447554668807664940
+e797a607-a9b1-cbe1-e38d-622c90f626c0,256685803,9640238623260984581
+eac7128a-d44d-430a-6d6d-a642b5d7186e,1219371088,8670577046592767649
+02bd5de6-dd8a-b455-6c12-e381f9d29ea4,1139512681,1613648672484661126
+6f01476a-ef03-a4c5-84e0-744705ed0654,3739943950,5045751731739690459
+c99e6194-18a7-a37a-9714-d599af3ecb1a,759124801,9497622709370679834
+d61f6a21-b99f-4970-e04f-8cf6e4673861,107063276,3378209236815529158
+e8f3912c-59d5-fcf9-3dd8-cdc50fe2bf85,1004301335,15749618393828602104
+1300f978-9e46-acb0-62c8-161f426451d4,3894241126,16432008700886554734
+c5f931d8-d6a7-d97e-a7e6-9bd6386d7f9b,1797357007,14583907197083984450
+20a383bf-ed05-0924-5bca-0bc544dcd265,2461458763,4848310185563025497
+3ac962d3-b8e7-5cb5-4b90-d34ff90cf2de,3190534576,5786156968947909978
+77fbcfed-112e-45f9-b2ca-ba22256366fc,3144688653,1110452033062754164
+28cf0668-1d75-47a4-da07-ab9c4ff2946f,3488453987,13059400639735201100
+78485032-59f7-97ef-619a-649086b32005,3741719405,6681516689018897621
+86d6f49c-5d89-abac-b96f-cb86466d95cc,2372033713,1503191341777263406
+dbca268d-3031-052c-4179-5f700868e262,1805422634,10556591147186511330
+288a1906-bae3-a813-b82e-b6d75c1062e3,2766194842,16937531615353490519
+9bf3920b-e1a6-928f-129c-6f685ee7bb98,4150786348,10611492459977885640
+7ab8179e-c3ca-6392-34df-b30aab53ca23,484487472,17295774870754269553
+6abaf2a5-08b5-0917-caa9-27915ce03964,176272513,1909810911479296175
+e8ab8c9d-5032-5690-72cd-c1f3639ae172,2572561180,7448303781331604425
+dd2cc211-508d-7909-a8cf-793717548306,4061233378,7009989757227321603
+dbfa819f-a665-8eaa-0186-6d3a9eaa0c04,2829475360,6240340716975132550
+219e2fb2-86d9-bac7-5c88-5a25e9cd2f44,3523807975,15384183501231122890
+267c1b10-b914-54e2-57ea-092df417d23e,1085276067,12231896178984010421
+c96c3b70-de8b-0f15-348f-e230f66a1c86,313713018,7459594288741750850
+0be52abc-3dc5-9a9d-d3b7-5aa8d67d2f8b,4210922287,1619160341850599816
+f9717666-a21a-2ac2-6b0d-947b73b05906,3298246525,6232926906646788160
+fa81a269-e609-3b07-0713-706380d19329,3000385858,4670845302835719074
+fa34f5b6-6c51-e4d0-3c46-d27981a8fa1a,1239916344,14452432155127527439
+be32bc5a-673e-affb-d2a9-340a9a9ca606,2206049075,18252849066708337775
+4a99a339-e360-fecf-12a4-50e2ca8e7509,1411239866,7371413149217032117
+21d228db-9f64-00b4-7053-86fc6b0027de,1688439783,2474326791092682320
+24f8a742-8f26-737b-b4ca-24491034933a,3496408926,12103261949387345867
+f6ea704b-8d43-66b5-1b48-848abc4e4774,3564513119,9698759820624819589
+0cdf5291-628e-45cf-aafa-8413ee6cfc5e,1908131518,2721463515326962487
+6e3f646d-0973-4fed-32bd-d393feff56e2,561351953,9641760912311638488
+e844f33b-12fc-ff1b-2f5b-bbcfa7b2f42c,2904206860,10565155476609218649
+c5b056ce-6f59-4bf4-df7e-fc13ed1286a6,1586819053,1783295581437119415
+a129a3fb-97b0-3140-5af8-ebb3e386377e,291446062,5893886992242729081
+36651a71-0202-271d-b9c2-bef4d16eb9d4,3474249890,10735637158022925888
+7baa5348-f407-311a-12ea-349598991d93,1530791208,3865510655155393972
+75aa7aa8-1d7e-0c7e-af64-4bba8b4e9439,2670656371,3313448391171985771
+b94b743a-7f0f-89cf-5397-545173f62a7c,3460246794,4909086686156901480
+2919a79d-6b77-d2ac-0131-a7880db1e3d7,3171034150,10264106261293788732
+18e7a3ee-0d26-0480-6d4f-541ce4561619,2208889637,3835956996204458950
+7f4cb6ec-540e-9cdd-74c4-666a5c70d9fa,2613579856,3401712804959032321
+86367e77-a214-a408-1138-9a3e249de181,2904603117,6718789572107412313
+157bf89a-c678-4ca1-5dae-f82172e34526,497165345,14092839075639593462
+81551702-6e8a-19d0-f04b-a414a779c385,766549192,3311159978078502063
+a2ef4346-4a37-ad69-b714-7d4a968ac1b8,92756657,16836686403246138516
+e160b16b-6b98-bedd-2f5f-86f5d7a178da,3660718215,11526003856278182946
+58aad0de-7ef4-f6ee-c5fa-f02a156103c4,644012995,16655306219054416298
+aa4c4eed-584c-6d2e-9268-2c7ae0a439b9,16714650,2386858721952826601
+c620ac60-6c82-a9be-751b-75ab94c735de,4030598762,7855522500958936457
+ae00df00-d213-0113-1358-d0ce35b4f841,4044164165,450004364256216678
+bbab9090-01be-1c79-33b3-40abfd3344bc,2783209465,6715998931261275628
+b6e4e302-0ad5-4b74-8f5b-4538ca227be1,3329809272,17665313831966842949
+0a0fef8c-ae29-9e2a-a60f-40e26cca99db,1229290857,3631488960811050832
+ad79da5b-c419-f2a6-538d-0306aeb4a243,496925406,5778111984637597278
+ae45f58c-22bc-87a6-12d3-d98a97e06aae,1118314382,13646131455676061896
+06800c50-9d44-6642-72ad-883ef54e086f,2382797383,6529172608540556427
+be53e1ff-6cef-bb38-0cb3-f6d4e29066c8,3419910927,3487347986470966228
+708c9882-6aba-b618-9681-4b4c51ab6aba,305768334,8738438861122204506
+a9a97cc5-ea5f-7260-d732-3fa6da26012c,3110001673,7964157159919925296
+bb6dd9b7-0e40-4ed2-88f2-8febe123f041,3528074095,1751988356036059169
+2e80dd9c-76cd-3afa-d64d-aef9cc41ae28,3152506216,5135181730745197840
+c9c8af57-5785-5615-b5f1-051541fc484c,2306842255,7129820353816781634
+b7b9cf00-db96-d7f2-979e-a87927ac97d1,792390725,14046831688054841698
+a8a23766-d17a-ae4c-d939-ab1d5d85e78c,1621595576,17211792551740532547
+59a69fbe-c97b-811d-5baf-b9ff1e9853cc,1901439462,3653003315558443720
+5585fd16-33b8-235a-5768-07f34b1b3ac3,685530099,6840311722146443493
+3278d296-e00a-dc8a-3cf0-b755ecb9ac1f,2160739125,13787469446079514835
+0713f4a3-e2f3-dac5-4478-ed85f7677e1f,1560060126,4375551671317666107
+1a1c9fe6-2d7e-b533-13aa-ac0c5019dc9e,4043151955,16204130388421854135
+898d0e24-27fd-60db-65ad-2770d989d52f,3275202348,389972806212567985
+0ff13390-dac8-9824-d2a6-9cf54e85a21d,2284279698,16738874071978649268
+189c17f7-f177-df4d-700e-d226891557ce,921905619,6116255806341575014
+5a1b5258-a475-5292-43bf-8e1a461ef1a8,9725898,9427841258514607762
+3df54964-2306-507a-23b3-839d875fe206,1853396275,5446913722452037281
+b4b94678-c671-2b61-e3ce-d7ee0703b20d,2931224824,7984752575205161917
+166bf1c0-be99-5057-9992-85fac1573713,3169235984,13171628045234151496
+7ffc86b0-44c5-52a5-9bb0-ceddb49330c3,4128244644,2470589390460452789
+d4e7a7e7-73cc-cb3e-88ab-df83ef9c5628,3345925846,4020150680915929821
+9cb3e859-df93-58a0-4f14-2e2b4e0d1774,903143800,13019503406331187508
+b291c8cf-e707-6e28-ec65-2e85eaf2f304,1478193742,11140016019701530892
+10f24985-3a66-4b5d-356b-9fa8651adb4b,1033056707,9962010985715393654
+1a6888d9-6777-4b8c-52ac-47740ddeca85,1603782084,12164010483188819864
+fe85e87c-a0bd-c9e0-2fa3-8436566d12c6,881646835,7579414015161091104
+9d94fb0e-98d7-2174-707d-66aff23f8499,2013126039,14031425722874005705
+a2fc151b-52b7-3292-ca7d-bcd917c057ab,1166073485,5809120727232621574
+2784163e-7d77-c5b6-88a4-3783e3cf0529,288267900,10461131076890730070
+b1497500-daad-0c39-15c7-38bf2b5bd885,4220010249,13546017609396441341
+117737d7-a2f8-c822-d0c5-1b9dadceed93,162773730,1885461342918616794
+24dc5f16-5c37-a44d-e533-3594ecd9c8ab,2128959581,4379282804179671421
+63df8b60-287b-800e-82ab-3fc5ac0873d5,3085782535,4875162969483638330
+df4ae0fa-a5f2-a0c5-2aa4-45d5ce7a8a32,2078924242,13105771230377703161
+330be57e-60ba-9ddc-570a-3dbafd636bae,2216565199,16594941841534415301
+3a12c9f6-0e7e-a31c-2f88-8db9cdaa7d1c,3449433911,7856982207094107847
+26c95d00-3a0b-b647-bf45-9200eb2ac94e,676368357,11150420756814399328
+01b61fd3-bea8-0a54-f8a9-9b1b49ec8a5a,926916795,2221260655710217494
+576cabd1-56b8-41f7-79f8-a7beb5b53422,2259007566,16338475411447320389
+d7fe138b-9fb2-aa91-5264-7372046f6622,1100582896,7056275214082240884
+ee13ab01-8ee3-358f-f37a-dc78fdde87b4,2127816321,16160888866979222608
+dc85f6e2-769b-f3f7-ac42-8b953feec8cc,139886786,1391490025478907772
+ec5719d4-4f94-da5f-56f9-8a05f7482ec8,2409955053,10304049888987406773
+089f343e-1d28-806c-40e2-c2e47e58324b,753906766,6736461664494352122
+bf730d76-5dc7-f28e-b94e-da448475fb1c,3889284577,3494648056126600640
+f24dd199-0c12-fc9e-82a0-ce4d25e47373,1093420745,6355700750818571206
+547f5800-8955-8493-05a6-6be384d4cd45,1136989569,12403434853583759092
+943a39f3-5b86-0dc4-9917-e8c6ab2c2714,2288003012,10028721579050497389
+229f3f1f-1e84-0a68-54e3-79e7713ec80e,4016104253,7359952443154646336
+670fb86c-9206-f5c4-33af-ec43aaef8e57,3122371943,2432359035106387058
+2db83fb4-30e5-21a6-9089-3d4483a5a296,2869793608,6662847620255288643
+f818ffb2-6df4-f495-b4be-2e5b7c049107,1164369123,161874822933127686
+c04fc4b2-461c-1c24-4dc1-274cc92c23d5,2656428467,6731630518067057093
+ea93be94-396a-ebb5-ab15-d5dde62caa17,4110976159,9629380517378755648
+1121b7f3-32e7-9861-f11e-4b677246a55e,2519192437,1486319653266725261
+f8782a7a-cda2-a5f8-34db-99fe8329294f,2242209597,1585952966420792429
+e3cc4ba3-490d-1457-d686-b50d3fc1f5ad,930945960,18032140409563467902
+1365f6e5-63cb-43f2-07bc-32096ea2165e,3779318456,15451942476443356128
+67a37e51-cdcd-4180-7c8e-d4b6fd8ac176,2065354171,12026760915267370376
+6fe2a4fe-fac2-61ed-aa98-07568de048bb,1620955414,18075891468111109083
+335f24ca-4dd2-3d0e-33c8-9fe8a4c41ae3,644722668,1487281119433751803
+909bca18-c5d6-2164-2fed-e83090d73e57,3993527874,7407586277637922074
+0ad85ed0-44e5-cee6-9c23-1b98934dbf60,2847870202,15307186917756770062
+4dd37113-ead1-cbd4-a165-ff9eba3af762,2936521747,5200481472144183421
+6a60fc96-d729-2e7b-4888-db6d7a48a23d,2217945652,2923658285371263871
+fee69f10-9d2c-e013-714c-fea20af16576,1032635190,15270974321436433114
+c1607aae-ddbd-e3c6-fb72-560a34a7ba1b,652387515,15256422655691519661
+c3c0fa29-a276-73dd-d320-2e9318126bb1,1083529756,6383485573495718899
+82df45ab-e8fc-f73d-854e-2e40dbad3035,3154328142,6388101857008574929
+5980d129-1c16-2126-8ab5-be10224d24f2,2631241756,12403308846291200716
+41343767-c5ac-d4e0-f350-59b5120dd529,95758963,3558543510362554414
+ec6e9c30-6949-8341-30e8-4891287bf9ca,1984566280,7912605561970848374
+c5fd4b81-ca72-d90d-e127-9c590e664763,3035551751,16707290090681908475
+3f66b602-dcd1-3627-440b-7cf39e7cc826,1063889095,484797975774009750
+a7137945-439d-8169-280b-df5f8f7d5eba,1716075368,9512562622977062998
+9fda119b-97d9-aaa4-dd77-0ec6def6d31b,1499977003,592605851571552107
+e16672a4-d52f-435d-9be2-ec6e3083e48d,3675254213,7443149768967252132
+a8fb8519-d037-d44f-19ee-1fc18498b00b,1226751506,10066142635934442659
+c2ebded2-f837-a218-bd28-88536214a0a0,1727596822,3091126378317943149
+62ac41e7-83ec-e423-74b1-7797d872c8d5,1333425115,11609002615464842612
+addf9af9-a27e-6cc7-0d0e-2f4342cfc38b,1505051094,8087483685227666924
+1930f2f2-5e70-9768-2f42-a47bccb2e014,679761073,4183918613137433885
+e2a3cc80-4d66-bee8-4c78-39edfce73baf,2239417666,16916612604254458641
+3c711977-770b-cbed-7a7e-191cbf022b31,1399300031,5314791872018666422
+2e2c5792-cf55-3394-d04e-ee49e7220548,2905980354,16220772829001473915
+aed51167-7126-c8c7-24d8-7872a9b390aa,2127517306,14640464470845627649
+597058f1-afd5-6739-7363-5be4df6a6e6c,232949985,6751152871355904874
+3fedebb5-ccc5-71f2-b477-1e3b4f271c59,3072827163,5131647611937406099
+a3e0489f-fb44-c10c-f942-f2a20088109f,440144787,6209027818306474365
+ef42a277-8183-fe2e-59e9-d6403b486b69,4014363793,8411667076696585134
+9b1f06e2-cd5e-ee0d-839e-835f1bdba99d,3767081857,9040831809339424463
+03dcf187-5b0f-001f-05c0-cfe9bb702e10,2755317469,4457992574904118540
+b6af02d2-1a02-a27d-f45b-e5864e5a691c,3558091165,4489321893251046517
+d236cbcc-03e3-3970-c01f-9590355283d7,4156394301,13759882040590964894
+df341250-4c35-1266-830c-513aa8c2fe07,3923154327,13935061546607447123
+d21899fe-8033-b076-047e-df6ad4601241,439556958,15000940318756971314
+094ab245-b9a8-7097-8030-8c64bc825ffc,4087366481,9562856286349308548
+ec352351-c519-b82d-292f-704b5b396089,3207806815,3542660348446173126
+fcfb206d-6c69-965a-c9ff-d45a20f60b48,3691957623,16137016668718080914
+a1335448-b6bd-65ba-4d9c-802079769623,2898683119,11684961572933414928
+1116eb41-a5a2-3119-3f03-1f35ca05efd8,1949559742,4248940665799452878
+46187b54-6480-04c4-433c-73c49b1dbc8b,1624790127,8051174902381256461
+9219001c-53ec-77ad-caf5-ad69fa2abe02,2841364151,6031826982695491442
+30b5394e-eb05-7506-88c8-29c20e150969,2617705693,447093552265478999
+924a657d-e0a5-7c59-51b9-e0e5880eef3f,1490555466,5607195565825959774
+6a24dcf4-3da9-f290-3858-88d30c6f643a,2524117809,7709168537663621546
+d7e5290c-632c-c64c-c7e8-7fb32c719d25,2844527701,17754809613241777622
+b39132bf-4ed3-6d08-bda1-f682883844a4,309978866,5188859447817190891
+e5c67355-f971-0c2c-1144-1ea65908335a,2163907058,15537336762733194548
+c7cb7b76-db9c-41e6-8f46-910d20d9fd29,3735109947,5212474027790455252
+3eeae26c-3572-0190-6ef7-753d8ce56221,192815966,6966572732783193425
+091220e5-5553-a7c7-14b9-36bb30d296ce,893265000,200878718406509706
+80cf366f-898f-4d6e-2f3f-0fc3296c4285,2728062610,14776439122369523347
+a872df11-3252-1c0a-a588-bd8785c9478d,283383965,7334604323607422703
+969aafbb-fe6a-46db-11ec-07b9114b04d2,3612241225,11460824417172093283
+b3847e79-659b-245e-76c1-833893d59bab,1824926752,12153229361464540606
+068d860d-5498-6474-5531-0eda32e5d2bc,2420948816,618990372240250780
+54304969-94ca-9b99-c247-cc7dbed0469e,145167863,7279281682007670535
+50ee6eb4-3ea9-0f58-b6ce-fb0553b0adf7,3112839700,8350733282664716574
+e0066a5e-da60-d0eb-e0ec-7273afcc2f1a,1288374133,4866814853688519488
+3e88a049-86d3-f9f9-ee9e-246d5bfd5a22,3723942910,15666724346679985706
+04727710-4c09-275a-a2f6-7a98134242f1,3703180879,8063345826358554162
+ea577972-4cac-e7db-a3b8-e4bbefafd477,3768967620,512565799388636668
+6711d775-63e6-c7eb-ef1d-d99b37798186,1670447148,2470361522950662141
+ece6047f-1c21-3c2f-4b3d-606aa4a69640,1916957002,812742203269198532
+a15d447a-221f-aa05-9fed-422e398bf527,4061938481,4552906599710260359
+b47d6c61-ebb4-311e-5340-1605fd4cc4e2,762556065,4849477916482016010
+30b5e2cf-44bf-fc0a-1a67-dcffdfb6f75f,3784511667,9333193596879594891
+3d805d52-8519-94f0-9228-f470ce8cf1e9,1550444872,654236789411205137
+36ab23d5-37ec-3a19-707b-725ebab0d692,56368932,3914406282256916101
+b3cd3775-0b1a-4d31-1bba-db0dfe6bee17,634920111,600686334879626390
+bbd9b312-5fc6-6741-99fc-57be9936cdd8,2899141204,7187375218165548624
+f530d5b3-42bf-506a-1a92-1923d2a0d3a6,1590184291,10159720915237175976
+a330d3c7-9459-6a24-0120-06758f2e2143,1981812446,18117120344925835570
+67301b26-3dea-838b-f50a-94f2482c4095,3583202826,9881937591413290935
+8c17d417-5b6a-b372-ce73-1d7e41292445,1284217109,10940133213712921599
+ac4dfda8-5662-ab52-b659-36d08a43ea04,1595472969,18272078691107449614
+1378e564-e518-42aa-e989-2e5c54ed45d9,3234854603,11675213232279737902
+1d85e842-49cf-23c8-658b-471e75deaab5,1008138524,3691465699198932156
+c18a1dc3-fc52-92f9-3cf0-0cd276118a1a,754953494,15287940349766482335
+c16d9a21-8fda-448e-fb87-7058ebd7f55e,1651957929,8493548820294058280
+5bd6971f-88a4-2da9-3126-76abf6082b95,2773872870,18054810565483302360
+521c62d5-8289-afed-6a8b-17f798fad420,414757416,18246184044991310285
+f1cc9b67-7f47-c9a8-a704-f58ae533974b,2565837818,8086904060491096074
+59dfeb12-6c15-3287-347b-91b37c908d5d,994692089,15596935096006480935
+76baf9d2-6b51-9ca3-f938-5bccf60c1d71,1519131635,2243297494481523437
+5da3cefb-d768-4029-1e6e-4ad7f284a28d,4266574942,13207380674015139347
+301d1994-0b17-c303-d0ce-333226f226c1,2055779262,12714201845336767962
+de953436-fb9a-02c9-8df7-02e7eb57feaa,3124346420,5478222377824968323
+01f550fe-0013-ec03-c149-25d195828808,2210484440,1573653017793823309
+bab4c7a1-84b7-a3b0-321d-2f10d225cb87,4126263567,5216813326366277690
+1da48ae9-2855-b11f-feb0-527c4c597f1f,2015682965,944486716558797891
+f0c46c9c-a5b3-2f47-6bff-06a09d9fd04b,2021070947,15908669376865541366
+198f57d9-78c7-b8fe-0fe1-b0a4b023d9bd,2070952238,14373298150508693722
+64b54d74-9591-da54-0cc1-89f18bab9236,1391444629,3642990709588378404
+c54a472a-f957-957a-853d-bfe6d74c8442,2383079419,7556125348297520850
+a0277770-39ba-1c93-a8dd-4aec21e1c0fe,3077035456,11409425092942460706
+3a99d85e-65a2-d14e-c173-9d2315fe656d,2177650077,2985586268077466247
+596857a2-a497-3c6a-c01c-f9c40e4c23ce,3314178899,17170627054856735397
+9e73bb23-cc76-b953-3c5c-e56d8f89a72d,2824187656,10872246124883057325
+85c47e54-50bb-6c45-eff9-a652919d859d,1545949796,15828332900760300807
+808b3418-7397-2dfe-2505-ce408ea69a45,1719474871,18015959896177761847
+a1cc40ff-4ffd-8a3d-3a36-998981f4800f,508748818,8351352076643665155
+f839b0fe-4c2d-14ec-cfc6-eb1081236223,428362105,4787985479251116089
+0d70a352-5cbf-7a8b-3555-7ee9020b92b8,1436087760,7132074153422070995
+fc0f92d8-c928-5d94-035b-3f567137826d,118734776,18175190361157330512
+417586ab-15d0-2f65-9cb0-a396a0710845,2465626314,11641049832701004872
+2645256f-ca6d-1ab1-8580-c3e7b8b25ec6,3555973145,16076941700919463536
+6206da1d-ce1a-0bda-8d1e-b69ed4363e42,2952591934,16512545853820835583
+6174345b-6df4-2aaf-923a-e50dfe74ef82,3215110003,16821374057607433289
+790c64d5-f496-716f-8115-91d5d5ef0c6b,239533466,3876952496907559155
+b662dd2b-6566-3242-1384-5927e584c657,897468772,7644160934275845733
+90e4ab29-9677-d34c-b3df-62d136730e93,3533710634,16648868615573025336
+7ba51179-6b1d-d12c-4e80-c69586f92ef6,3796646632,13638734582145865658
+2085819a-a965-98da-175b-9c65aa421098,2248040829,5071279788632898407
+c6c4b96e-0fc7-0c97-292e-174ca2cd9ca7,3754006354,17648375340240461065
+f5aa3f78-23f6-02f2-ce85-c2b58ea4bb03,2402325235,16589734809260316638
+61374491-c9a2-5756-a680-b0ad72fb00fb,4140435141,9230652401490402598
+950ea0e6-9429-a320-ea9b-47c9bbf4f0b5,1501199792,8502258196350265919
+b98857de-0462-70bb-b346-0fed606d64a9,2628290066,11131165423109514867
+b4d7420d-0cfc-d030-33b6-8dafc5a8d68a,1356463703,4402734294918391528
+df8db590-e0c5-f25d-ad1a-0e37ecf445d6,4176627712,9030956640156530730
+a370b985-be40-d636-9508-6c96c657d1b8,289628414,9687521957229014845
+00c05de2-19a7-6ad3-473b-e4497cb44696,883674743,12385565129334877949
+04f6c126-6233-7b6c-a310-074937bceded,216349945,11302799672797852259
+7fe63236-2195-c55a-3ee8-42b424fbaf28,873216637,5331789992314779758
+86f97aa1-ff66-c1ab-9c8c-50f05c3e880b,3246076216,15654647253930762861
+832552ce-3701-982c-df3b-f8369a5d2a8d,177325777,14961600259964301450
+8060ef35-738e-ad7b-d84b-d2a144aaadd4,3007553563,9362589153606791773
+29080297-331d-83d1-73a1-0f4f80de5133,672469529,7630073819647150389
+1b52cb2d-12ba-80f8-8f9b-7ea6083568ad,3098867927,14945808971497502766
+3d367cb9-1959-85ad-7f26-4606c883ccd4,470830778,10471496082528160176
+6c09eb80-f80c-6d9a-3491-192df3e8e138,3768687718,2896032446404102291
+4a948021-5fd7-b2c9-410e-60e636a9e178,756105669,15051399122062909272
+b03b290f-6c50-3325-a397-d9e62276c5e4,2229029567,12474954873381454939
+07d5f8c7-917e-dd3a-8294-c89598953121,1147283683,17925253349943345082
+f168ba4d-d2df-542d-4bd4-0d1da25a2683,2832350703,2673827209833703128
+8c83f801-9799-fb0c-f1bd-0df187509074,3291234329,15454004553677846041
+5f2de94d-63df-d2ce-174e-256d0a1b8992,1529936167,1245346633498131698
+902d0beb-c7c3-5c0b-9afb-c8970c259d24,2827389294,3261773436560734240
+52e4159c-788a-0eab-d6c9-76e00efee1c1,2731847020,13901540831629661341
+54352a78-2d41-f0ab-3097-0b2fad3e8295,1814216292,14327899476683597573
+ff91f3bd-ff4a-8e29-f6de-c8bc5358dae9,1458516150,1469996070561341565
+07345fc5-d42d-63b7-aa64-a899d68c34d5,4185129470,2819051391997139933
+80604bba-6eb5-3497-278c-083d51744bd1,607604178,12140979942310005431
+ef184510-13d8-e240-2e3e-61920f99592d,30191239,17429425799157335214
+99ad7218-39b6-a6b4-6cef-f0c6af1d3e93,202012360,14510639846008767445
+0e39b59a-b433-1b74-9b50-5350c60134e8,1192690072,7436381265764742407
+9f50f7c2-bcf1-3a6a-2321-aff2a4f67225,3054985485,424600242969907270
+d227d795-fcb1-996d-4607-fc4d805b0ed8,1706531642,2191943593775559658
+b72a3656-8b08-eda8-0a87-3da49a18a0c1,2637414451,229880514182978775
+7eefe25f-dc5a-67c4-a575-6ab314e2b353,281600390,13441163337841127626
+05aacb78-3713-0c13-bd7a-5db5a8b9719d,1790147527,12086391545994582130
+0145390d-29bc-7e61-8a64-7de892153520,3069140437,12595512652375401761
+2f91598c-e306-26b5-c452-4ce693b3296b,1823954415,9595684146402007876
+866b2ff5-9476-a60f-d6ea-dc752e11fe40,1185389696,12052284384935444363
+6c64b42b-8432-ffdd-024b-1d0d850f33c3,1553835972,12055134351261533389
+793f10ca-6b2c-9b2a-378c-813ee3a1829f,157061871,13644679340816900369
+b6023e1d-1304-5791-33b3-cc69c3e51c81,3403541369,15545821461346608771
+94aca889-7385-a981-024f-aa29bc33c78a,3786163389,15119085813327400200
+bf04908f-eace-14bb-a950-518ea51df1d6,3205339520,1262718876810206567
+1152cd70-6903-88ae-39f7-962a564b03ef,954042133,7641748898469594675
+b7843ec4-24e7-c649-0141-88449a2d79b0,3601041649,11158714765570588347
+e3299060-43a4-e845-8bcb-e5acf4882052,1884200985,12809252480560122167
+4b89ef5f-598a-639f-e96e-675f3fff7cf6,4241453107,13306105013100821851
+86d4401e-d932-cfa4-4dec-c307b93db9de,72534651,16027503225670040238
+532bb4fd-e34f-ca32-bf64-51ca0c5d8834,935582792,16793367192305261691
+30d35edd-6e5b-d5e5-77f6-16fe4de1cda7,701650668,684026694389006802
+c880ba1b-51c7-4d53-462a-00dbd661bf95,4233489283,6364574974542092087
+1a2a7ff3-9fe1-7c03-3bf1-c4def79cfaba,1494381342,15204370245805458626
+a5464fff-373a-342a-1f3e-dfc94b8bb4eb,1452924314,16706104699914812149
+01a12759-3336-aa87-7ee6-273f3f12e3ff,2140353865,1789533909034940510
+b9624770-5c3e-9e14-f5b6-512aa6b3b29e,3507052062,2148191487961911898
+981a109b-a19d-65bc-a4dd-743d942c76f0,1774665617,13094766432486165868
+d68150a3-52b6-6970-f908-2e597d0b0d1e,3800720258,15078497431039869853
+0c6500c0-e530-8252-4a21-c05e7e1418df,3309262350,8793971080696614220
+6cb3cc3f-f73a-c53f-fafd-2c409b25c13d,4142485200,4454280000919881984
+fc686958-9fa1-a7c0-55d3-40f963b08e0b,493900133,11000624306960424492
+45a592fb-88cb-215e-b5ab-9abd42fae24e,2294707633,12435859559607321654
+972fe4ed-db8f-2290-3292-9b8ab3bbe5bd,2539730635,6098177809909454598
+4fc9de9c-5c22-4880-83c9-98fa523536c5,1246902083,15064982255102100270
+e7488d7c-a4d1-238d-c2ea-cee2eea77ebf,1065641839,17474723734409740360
+792c0e62-51db-aecc-3e2b-8dbe6253a25a,181404672,12663040038745694017
+e85ce4c3-54f0-2bea-6e79-26b5935fd56a,879089890,8876033918216492591
+ed254556-02ba-9a49-3457-b25a9ab4e13f,3030777344,8973545089890972466
+c19f3e93-3d6f-4696-e5cd-b785bf024a45,2286724972,7567502782711919003
+ef50d2d5-529a-515d-57bf-f39e0ab0a17d,2643231349,2343376737492256677
+1d1f6160-3663-7bd7-d1ea-2e1c648d30bd,2639514742,5210996901176958135
+2db0ce4c-52b9-f20a-10d3-3bba2b5176cd,1561667385,9965575760055804553
+20de837b-b23b-da41-bd61-5de5ea3ec9c3,4252500315,13362451814676293739
+fd86335a-0978-460a-561c-d4f730f12d72,3062218983,7408782180462385715
+5283b7ea-9b83-c729-aa23-4714a7484f29,2013637799,4937917086728025327
+93607d9e-2364-9bd1-7835-5afb668f8a70,159739943,6825036990996443821
+30b5d6b0-6bdc-c118-5c82-6dc66858ec8e,307958266,13081341833318737461
+8c6d47e3-fd9e-2e11-d0e7-da02d7e1f032,2643162281,3946665006961018307
+3fbaf16b-4a1d-dd58-f733-48f2398199bb,356491794,16046787084816582763
+7c2b35d3-94ff-968e-2a75-00ed9e9c8d23,1343887141,16791077151143884389
+34dc2638-9230-e332-0318-05ff796d5d30,2024085781,17636364172936522348
+ace4933b-ebbb-4952-73ab-864da39673b8,2326921086,180839406246636625
+a1a9d9ae-dec8-ae46-75de-176f801d34aa,2621905497,5745726556837375344
+8d83b677-ecd0-5bb5-93cb-8a2f5fbc5e57,4256657337,8575169353426782631
+81e613a4-9d66-8422-db8a-87f40b924549,215288902,7753229883286572824
+7e2bc766-d15c-21d4-786c-bae2783da52d,2079145032,9793934931941350879
+49f35e1e-d56a-3a6e-597b-f1a53df91f7f,2749398859,223894352078315587
+638a69a7-5f19-205c-f69f-1294292fe43f,1832185637,12123892614899040613
+f1349a30-108e-5060-0dc8-3eb0b125f927,182978939,16661966717617486991
+7a31f589-0ea8-adc1-1144-87e29e59e2af,513968648,8030771944806803660
+966f5fe2-d1eb-e5be-c601-12c64787628f,3136010053,3023995954425615215
+8edb5971-6305-641e-1224-1693640812ef,3023369976,7939985627989563204
+1174e992-a113-a639-b718-f7f0f3f39877,1159700983,5693757984868553200
+5b1a0b1a-41b8-74ea-b8d1-e0edbaaf02f5,3378883571,2815172809921835969
+22cfabda-da85-f488-e589-6d7fa9ae2e33,1048589726,16437031412393911963
+cf7c3f97-25fd-4621-47f8-303269df8133,3647719428,14154219209977853897
+a193fbf8-1aad-ead1-e7e6-b3f676b129fd,841049726,2977826675346841459
+3955c94b-a99d-4a08-5489-bf44016efc7e,1488024551,9374854619912021821
+6b92d38f-820b-da6f-9a88-4a27c25b23d9,529876686,8085104426309880394
+7da6b6f9-29df-fa02-19b1-08a65a2ae678,252122508,12217217201532595462
+ec2af4ac-6b9b-fe26-df8b-fa3a538ed7b8,2241383545,8114390791857840778
+e933c866-d338-8fe1-d905-5de1bad60a4b,3067777576,15132398181156632916
+1d23f9f6-f1f5-73e5-0318-c3fc4291f9b5,1031700987,17761048629555777758
+eb57b85f-97e9-3e34-1a5b-3857f27c4b53,11413332,13296099576944571463
+0ea45998-395d-6341-a976-6498845d45f6,420683734,438776136308204953
+dd769613-7f73-9c35-677c-e69c9d8fa5e2,3954065887,9280097880770256729
+06f5e8b5-f5d8-b3c7-bda2-a284b3cc04e4,3461226275,10145534770308507009
+a46523af-68f0-b34f-ed85-697bbea2e836,3654912287,6868562956508319066
+f45ca9ff-6da3-9cb0-df6b-dc90e9dea0bd,4186247244,2142987076548098271
+1aa02837-72cf-f3a1-7feb-d5282bf58939,3812117687,6502089169739049805
+639f8fbc-0c91-8ba0-4f1b-21d37648360a,3451141019,3291979699901758066
+f85d5170-32d9-7e5f-3e19-67a0347c6e95,200007968,7431163228894129624
+8c72bf7b-0216-bf78-47af-1c0866d1c86f,1173603466,2722974329517382732
+3b985136-6b09-47da-2e73-875f1f15371a,3432293917,13976272104027223823
+9077727a-b3d0-7657-8c75-f7f3b6b50f2b,797901464,8293582968736128153
+6827d6dd-5d47-31d1-ab3c-a7295988ad94,1075186518,5928990947113204419
+67f26342-15c2-e1be-6eeb-abb70946a1f4,1214611465,4956127244399761638
+0d91e5bf-ad28-6553-35e8-86138be20e55,3105650570,12559867087655259671
+537fa04c-d5bc-5018-9f5a-8761df8fea8a,651200236,1191705827069071106
+a7135aca-fe6b-be88-0866-546b6ae2df59,2010439728,2827534684037290490
+7114b8b5-5dc9-7aad-5348-5baa6d272c89,3211010198,8296745027460024411
+e9ce1128-2019-d89f-ff38-1060c21cf91e,347619980,14576356532331159770
+67ebaa06-e325-5971-b7c9-21f0cfc57f6b,714338413,14132911728838647774
+90811232-affc-5a73-c1c1-e4427070f7a8,1530433038,16547586588087641697
+2a56cb1b-340b-6247-e445-982d80f1e054,2557921300,7202668901367274671
+7d60dbf4-d6ef-4f87-dd00-44e7b776cad6,932854030,16406179642802021874
+ff30b080-5da5-91a7-c105-d42cb30bfad7,1818064276,15209683750883214423
+9dc8573f-a32c-ac25-fcff-40c4df266531,1645969890,15372835313076113803
+630281a5-ceb4-329c-2f9a-74882c2da74d,3732736051,2428492201420546732
+d3e55abc-2be9-b7d7-8db0-02768004f6d4,4091223100,8789769721804502330
+73b8f63a-78f7-1a15-2edd-987baed8f9ea,2805916742,5758725445732138561
+ece6d825-1716-b1a0-44b4-98692a9721ec,4133317245,351285747713648130
+f9467f10-f5e8-d20a-cca0-6375ba1db391,3504763181,17155392124787438424
+a1e8f273-a2c9-13ad-d9aa-c62791e2df9c,2864745777,4590050003002497124
+46358c37-0d81-07a5-2bcc-5b8c6ef5ed06,2220558276,10790709204749832482
+e8d2dc28-9595-b199-7a87-d3d1e6e52a15,4145135438,10393348939642043337
+f08491a4-cf18-a3d8-7cca-78f6f6979241,100435985,96704415970417053
+e3642dba-85dd-a15b-6322-df0dbb15913b,1669344049,14847939349876031202
+42354188-aba2-90cc-fd2c-d247f45c1705,2664900149,14385925156913126406
+c17fe6b1-0412-c1bb-7464-4655b1b4c20b,3216491349,1504727354760860637
+851b6d1e-1ee8-e21d-3a94-6eb1052c1274,344556048,13034935948297973113
+994ab966-24fd-cf09-a4ab-b9acf8f785cd,1105830983,7651869376101557479
+8c5ec930-509e-b816-b51e-2240ca66d2c1,3500170688,10947314355826901962
+a4e6acf2-ab3b-fb26-5b54-e9653deed68f,2890768239,18128278833268483200
+807fee98-fba7-5957-22f5-c723564868d4,2101866035,12881716124407628879
+6c0a8347-4387-1652-0194-432d96603ef2,928476898,9266084240693214642
+b8241151-1b40-28ec-b4c7-6bc86a2408aa,3633186928,15799133622281655930
+856720e7-76be-23ac-ae89-953fd745b090,291214206,1228500238851380674
+4282a45c-8bad-3ab3-d7f1-bb1880ef731c,3399622385,9386648951325600552
+2f03eca6-15d9-46f1-4ff5-8b64c9bc999e,1542831783,2618998182877983685
+96c24b08-1483-6419-6bf6-48ed97c6bb3f,1505345209,7780352099706953031
+5dd9ffb8-c507-7f09-d2c1-55f6c75fe594,2331524770,1975402234703790894
+647fb9f0-f161-2787-106e-e758019b6d5b,2812004272,12788069650841228087
+e2f51933-a9f5-b9b2-72aa-2d847c28dd0e,3576740124,11295775656312272962
+65d9ec51-6e4e-15c2-a60c-9f024b731dc6,2630677245,7676055601399099093
+5d8b737e-7815-6212-1f39-1cd7be193d9e,2537933450,16068254730414531199
+fefd6fcf-71dd-4486-f9b5-c89d3d074686,456732500,13403259791603853008
+455c57d9-809a-81ab-ac3b-cfb93844db67,2575773145,9614640980000029942
+f873e806-bdaf-ae00-5b0d-b83ede10b9e5,3462394961,3402999654822088812
+8af7f8e6-836f-5f21-d5cb-8478fd1d1946,649311263,5821113231380558467
+e0d8db93-72ba-3d10-d262-d98f64f90645,1543732249,13207381678781645217
+f99a96ae-3c18-90a7-bd64-2dc750a57bb7,717288365,13528446437865877075
+04dc7461-cdcb-f562-cf03-af2a7d318c66,3655504314,269974663589359888
+5bb50e63-1e9f-7faa-904e-96f2dcd1d5fe,1974827535,553686602689391486
+0aa189b5-c3db-8691-fcf2-0e6ac679b8d4,2159641032,447829803131707769
+134b4e85-4139-3b54-c161-de0f50bdc991,143749723,14843206552920992611
+18aadf91-0a93-8a6b-df56-ad3a43b64c86,3914596577,17886752492293270733
+ec79351d-c4c8-ad8f-8cf1-4968cf65411e,3461543776,15687842625541407111
+2d616c87-4dae-9cd8-c5c6-21ded8bc7b01,4287897350,13931439556984758436
+f65749b5-cb8c-ac1b-0dc1-25ea1c91be7f,2326949377,17033030625729893567
+a5c3ad8d-c04d-0c49-ab4a-a8034546fb94,1379384692,12864465295766374819
+e31d0c65-70c0-1ef5-ec50-f91eb52c14f9,2621184602,13417604867465985178
+68fb620c-351e-2bc4-2e58-8ae917bc2434,2829924543,15060456934510719030
+a977496b-0a0b-86c7-ea9c-58fec6a8f6f3,4112744224,9397031590934417939
+f96f47dd-a04b-0738-499c-fcc279712535,3948111197,4308381025456695125
+f8376cfc-1aa1-f66c-7e40-bd08208f30b3,229076358,5875111971401376577
+25bbcec3-5a1c-4d09-49d8-0ef307310e97,2899309422,8132702346347525787
+942e63c7-9305-1ada-b915-51b86f19ef45,4282754773,13187314975153292114
+371ed103-3751-aa40-e6ab-fd0bdebba81c,3424167438,12310245970724712146
+d6f05994-66e5-0da5-dfd4-2f24ee5a2681,3878955494,5211732428509817147
+f599fec1-5e05-611f-b909-b83c19243de4,48185921,3402148883549891072
+3fe9b347-d9e5-d6b6-7d4b-be590eb468a3,2262284944,7979911621373861317
+e098f385-950a-79c5-8570-29dcb1325f2e,3392404998,8270267158725365811
+158058be-28d5-63d3-1b28-bb4a550f2db1,4069433820,3995386791779569970
+f18795e2-6462-0392-5279-686a606f52d1,1936855038,9437802776888350598
+1b41a753-7def-8fb8-5f45-88b68539d978,3103065916,6608196000490516138
+0dc82b9c-e141-8705-5600-e9ced25e52ff,2418059611,3902119277186162065
+9e79b010-8368-0779-045c-555134b3ac1d,4160112984,7732316585643117989
+6e6483ec-3847-b66d-1781-c198d1152a89,1166755216,3417724816521368310
+80d24a7a-8eaa-b55e-75ea-4925ce863f15,3657317422,893445718244114365
+c0b013a6-3202-3c32-a205-9a52acbe4c58,3108817650,1178925555081166042
+c1db1adb-f1f5-ae6e-a233-12fb18182ba2,460096888,8662688730263511015
+043bd1e7-699e-f30c-3db2-d50ff428a673,3649195750,728140444720281866
+c19536a1-fced-d073-7718-80bc7766bfd4,182874682,2026069769340752109
+37958fac-0972-2236-d4a0-62e412759ab0,3406379548,16430124289265085305
+248699d8-3b32-ace4-d97c-b5a9fd41094e,832180860,5598212521101961823
+26d49e6d-5354-4461-44b9-918a568cc231,763492065,6688476688864723598
+9c2c76cd-587a-1b82-a4a3-455a12a8f770,2131294408,17196005538047626665
+21433ff0-84a3-a848-669b-9a1e42051034,76370355,970390900464791908
+37eebcf8-13e3-1049-7a6c-f8101a44dad2,1268519015,14652445707640454397
+e5f5ae7d-a591-65b0-7fe7-1037657208a0,3254605371,9823524619448909969
+d85d2e04-05ae-a582-13b1-173eab03d914,4257842437,3818895090892005832
+d7a9dfef-9353-7bf8-6807-d21e76a8f459,165106341,14312035418222922666
+fbd4672f-facf-f3f6-9a1b-8ffe1a342c13,2337650483,160879877892519175
+5cc4a035-f1ec-fa6d-a846-249ae489e9c5,2511617186,3342572518822286606
+75a3821a-03fa-fc79-4ad6-45ec893c1a4b,1399954685,8093484668743750741
+3c35599f-4617-2b79-086a-1271eadcb51e,1970974771,3263774059658295504
+513e6e87-78bb-61f6-0455-5f94eff34095,29984928,6577161706802736620
+19159fb1-d83d-86c3-1cc8-cc2877a990f6,3459911409,2081607914859111253
+049e39b9-9175-a447-79a4-c9a40f8e41fd,2391087225,22935009459685890
+1580cdf8-456a-2c9f-76d2-836e3db436cb,3588495176,8631379129739645648
+97b10cbf-9952-e815-c394-8d476cb8bdbd,1075466471,16555219382935639158
+9455c3a0-583c-dd7e-c26f-6ea21c0c008b,2327561312,2222021395571423767
+d57bf187-4a52-c27b-99ce-9a136de50cb1,1030683110,2541243534261148725
+fca3a792-1300-b3fa-6f22-fb6398393e7c,319149004,12696659570072660674
+473ea11c-3011-639e-631e-05f30804b814,330313039,7130288002283677956
+691f9155-695e-d6d5-34ca-3f68dc8312bd,2388269110,17658023303212310930
+2e92f87d-0916-5750-f198-31b745be6565,3942929075,2970719333554147694
+f244cac8-f1d7-b420-60b4-83cd2eae454f,1351007533,13012867717300467758
+b8c275ef-4157-e4f2-3064-87b393d87df7,1279049114,1739048621612689589
+7f876b2c-b496-4c75-417e-ada9309f70db,3863369679,18262153207708314816
+4b27203b-157d-c851-b2f8-06272b827694,301673562,3057069145087234768
+775ff5c5-32b3-a81b-d827-ef235a1d06a9,917814068,8185241796610617291
+f6089631-a90d-3463-e6d3-2038463c3659,844444132,12232862705330918326
+bb8a02fd-30f2-5338-e9eb-7b077618d6d6,705734853,2873927524917143288
+4cb94f80-8b49-2740-9957-a56d8e9860c9,1222093346,15792124899664658233
+35c09f5e-9734-82eb-d8d5-cee985ac3956,1650905629,13570907863135837878
+327c45b8-f4c9-8178-cda1-c0912a342117,2256605764,13582939052346235418
+b04f24fa-ef8e-5207-95f9-211590679153,709756934,14416987264619637491
+ca058ac0-db76-f1ee-9d0f-aa2821de5dbf,3316446871,15569951366652751861
+77cfe16f-a7c9-4d8c-584b-c77d651cb8e3,3201453043,8538488055845349115
+3f653205-897b-ff45-8c1e-2bef5967b6ac,809937973,10445754895950539415
+f3367749-d9a7-77a5-93bb-49d8af89abe8,536997036,1381803984461964205
+248a394f-e18b-6314-f73d-bf58bc8ed842,2579173191,1023259367222279969
+3ef5101e-a59e-dada-34e7-1285c56a5025,136558543,2582946488721117214
+92a2fdd9-5889-8af0-9528-49942679d1c7,2841637021,8831578553719911959
+74f592ae-522c-aaeb-30ff-ac2c79a55f3f,1738464388,10662902875033307407
+0e4b200b-ac4c-4d18-b62f-02c55a42346e,698314446,15543721451829685016
+182ea46c-7d0c-3268-c5cb-1d79cdb67d12,361664826,488423993817472765
+fa13a4da-7de9-6e7f-34c3-fda897f8e670,5012186,6086802295645801641
+633be07b-d5ec-c078-5cd2-04e68498aa54,3293708350,16851358213133365145
+5b428f65-1002-d31e-b0bf-9f67ef826ee0,1605768431,14087314665101899209
+af1d5747-be84-390e-d81f-916c2eb145ce,3711616667,9147823746094946148
+c28f3ff5-faa3-5f41-7cc8-ac40f16f6635,2336269335,2670627382396772656
+ca24746f-7b5e-3a03-cd78-bb2d51dee99a,3780721541,1128070174186345951
+962ca04b-6030-bfc5-0398-7a183405ae14,3263840113,11690358790266031173
+c250ac38-2305-9d18-e38c-497ab2d2a9f5,1180223821,1162794545057922799
+ce263be6-498c-d172-8736-0508031bae90,1750709571,12569004649050427940
+7f8a9cea-a603-abbd-1bcf-99b9c6e99959,3222819396,16478854326920033135
+816d270c-ea32-5ec5-48e7-b228d8bd0e59,1904033509,12521951860906233911
+f3a04acc-4f43-0dd9-3b6d-c1091845937b,72995760,13954566283819583836
+4ee74cbe-c811-578e-a12e-bead3c10d788,2819479666,1030594689642370100
+0cc2408e-c1d2-16d3-f79d-f8828dad6bbb,4230120016,341650279225426265
+33622801-7669-ef92-558f-49185005a532,793487103,9408770495254819194
+a39455fe-2e1a-9c82-c350-535d2e183bc5,21520271,16273409875847117974
+7209c534-3e76-985d-be32-65033b522180,4074699448,9812521103871646321
+f0565c0a-7806-0039-68d6-6dd699aaed7a,2173200364,11018775556837176140
+68ca9fd7-7e75-48ca-26ab-6ffc6a94cc5e,2355883207,5347292037780929252
+01ce5166-c39e-47e2-7e76-11568c301569,607029690,13426181683240917205
+912daefb-90d0-41af-71b7-d51dc4ef1be3,3166169065,10598587252182572372
+61b3ca91-dd93-1603-f2ab-9eeb5310a90f,1253663800,15328788100800606884
+1626f91b-7828-6c75-3c21-ff0542497bef,4160238670,3281127126858839919
+836197d0-8ea4-30fd-22bf-324156c4fb18,79325607,11047588541386761601
+1226b130-693c-1aec-8ba9-a79f9551b2bb,1602968891,17001784307978775513
+6d0caf47-937f-f71b-c73a-4cee27f5ad9f,505417269,5704380946408676729
+b0215092-e298-3797-c471-afc97c5e97bb,397368734,12847768177762195403
+331e3709-15e4-7538-b1d1-b9d963df90ce,2939652659,994859343767651987
+8279e21e-126d-2511-09c7-fa109502c784,2189958228,6402619362404907713
+34cbdbe1-1573-0a90-c1ef-743f27ac1ad6,1624949097,12295932945671411710
+14fa1c9c-9204-dbf9-e9fc-e57ea71ff3ef,1653113246,2990297338762251802
+b5b80630-43b0-b411-5022-2339718b5b96,3776072477,11825685475941204201
+417e9317-1204-ffa8-dac6-f379b18588d1,417610621,10132342264559631835
+e9cc32a0-8a13-68fb-6258-f8a633cc3a83,3324598470,16398809800190950270
+f586001c-1284-ce1c-938e-502f15a29e5d,1311422119,12095519181077795030
+f4467d92-266c-2d70-e0e5-fbbb22100761,640770104,11986386516826702771
+1c900880-d045-71ab-c9c7-dd4700459e09,3345318352,229789237921098645
+1047e7df-94a7-d51e-1393-3181b517a79b,794710036,11903125169077677705
+d1a0fc79-0bc5-599c-887f-f3ff6ea2141e,1967206588,15683734337133229287
+4a0b7f55-9ea6-2f77-7184-27cf2c5394e5,874404146,686740491017124870
+2dc7307c-73b3-62d5-b3cb-cdcb2934d20d,1002478076,15712911481299634604
+e75891e6-52f5-3930-1808-36f39b0e16d0,3965285103,14972919475087324087
+fafa15a0-9955-4926-6604-3f9a9eb7ba44,4224590622,6378599340983818828
+e85a4931-8a55-ddc7-3866-fd17e9c8cffc,991307276,2317083425480635260
+841c6e57-97cd-39b3-4613-c95b0368915f,408625623,2019578037111270672
+435ead01-1be4-7b36-2edf-93ecaaa92a4a,2265525069,11741837701796011035
+e87d334a-7e28-2e94-6f92-2e011d1c2b51,3399488480,12650243506316823143
+f5e498f6-5594-b354-59a7-5175a8ca9ce7,274460662,18243698978416235352
+c0b0d85f-78e8-8763-0c4d-e80b3114cd62,1259873747,12163188319460221646
+c55c7bb6-338e-8eb1-61ec-c067509b6938,555659046,2720275538710959993
+dcb71a06-0731-be73-b366-18214b7fdd15,2704034017,2134774459061277723
+5aaaaa46-4b19-9ea3-5824-616a83c8b2ff,3361550872,5494112542139405691
+299823bb-75cb-81b5-3e00-ba843967689f,1415038969,5623268810599189733
+24c1cb1a-0355-0a53-a8fc-6fb6deec3a2b,943022543,112848989358773563
+f61d673e-cbb9-ba75-6601-3dcf0c4b32a6,3474853567,7581808099348764758
+9640dbed-6c47-ced4-5dbf-287d54a8745f,765861511,2498384527346270429
+4400bbd1-8223-fc6e-2340-572066bb2d51,2953518589,1755247082855186409
+98ce3f9f-2c9f-8435-4973-9e6b9627d358,4285907468,12176499030160706031
+060e9658-2d18-801d-0e21-0b8cf8c7c791,2391827563,6526229646248330139
+928f0582-b7e0-8235-7f32-34b1058a3ad4,822676699,15023526511405474811
+36626d20-d906-6d9d-82ef-713107bf7016,3356577247,16870717383907539951
+ae66b45a-4fa6-86e3-6598-86cc7769ad1c,1059808403,7620252065469558694
+e521a0ba-0d30-c59f-5664-e8ceff5973bb,4235283349,10943373272185498800
+3ed07b58-aa2a-c099-3daa-af8e7dad0fe0,2555071613,4813136819656803837
+9cc865d9-574e-a52f-6b7d-01681173edd6,1225983261,3768241881957688243
+c92e3e00-7161-ee1e-d9b0-2a6bfb51919d,1998953170,4516343647770551583
+34c633d8-2dff-ee2a-b496-a1e7aa75e7bc,1264594374,11108192669414455634
+dfbd1d93-5a65-be39-f3a4-9281c95fda35,768508982,2368608797504071527
+fea64651-93ac-e38b-171f-03782cd72bd5,2837929222,13526865584328490023
+9da9b595-b07b-f0f4-42ea-ab7b97a1338c,4260488189,3071861629771773872
+d6713018-6bbf-c68c-2a24-af817eeb5ae9,4092574796,6325717188991125746
+bfbca9df-12be-da97-a030-e71a1dfc1d35,585920513,5914563493568896806
+ae6d9aec-d633-152e-8361-7788b451f99c,4091555112,16014738099283065528
+76166fa6-8a96-5d94-8e3e-ca6e26586f47,1169271213,9446370912031436272
+bb567111-dd79-d1fc-5f5e-347bfaad7202,1633660114,3306874720179353963
+76270f84-3752-feaf-dccb-28035c9d1ad8,2579851012,10933660458176115396
+ffb129e2-c5e2-e626-d1ec-1f49e4d6ed52,1204358526,11052352379233167282
+a11d1095-81a9-9494-51e6-b9b326895a15,1667240333,2092483259881505675
+1ec9d884-e14d-229d-eb9c-9fff617b7c88,3269209416,5697913030240988362
+97b6ce7b-9d13-6cef-507e-d741d4914e88,1026912188,3322970661243149758
+2b49b4e5-61b9-f338-ca83-7035dec27ca3,4814360,16859677209121616913
+b053a240-546c-abd1-88d9-8dfc26bda07f,1049121929,351496785867752181
+cc49582a-b937-1b8c-68e5-09c9afe646f7,576410821,6300369313250890530
+1e055849-e39c-756c-7ef0-b529cde9b093,3655838501,125391104659350974
+b285d522-a3ac-5f9e-734e-071cd5135941,719260791,15795213865619460166
+8f07a5c1-7a23-f873-4fa9-e995a20f8253,894657578,984646068327444954
+802dede1-4a6b-18b1-3caa-24bd765b721c,919213617,8129826735078138461
+527c42da-fa3b-7961-5fdb-f7e6e3b15b8f,2451070879,8278658753377747339
+2e9b1952-1e6f-628c-f032-99a0ccc233a0,1335221522,15196354365088217361
+594f7ac9-6be8-d80e-8440-9f94678ce0ab,1893456980,8031030426148660381
+60e195eb-c7bf-a2db-82de-8930db410cb1,3338239747,3389505622027367687
+0adc08fc-a33c-1380-bfe0-2a6e9ac0ec54,2582942733,13284831946511805615
+f900cd72-acfe-19ae-c1bf-23953dcc046b,341634848,612709456329968001
+18dbe3ee-263c-38d2-9ec4-13bdfd82645b,476457414,7778355958291778205
+a6963942-8f0d-5e09-6585-43012140eeb4,4105464397,7840419214529643615
+a1ca416a-2fca-bfeb-cd18-08d5c91efa81,1312841493,3721296827753372184
+2930fd4c-0f7d-5f44-d7f2-9596de4993b3,2438026308,10734732465396063395
+7266fbb0-e496-3bdb-2590-d601c216eb23,868394044,10857947072808474607
+4ccf6054-d564-80d8-41c9-90b2b1f8cc14,631198777,13737871692145085859
+76ecc002-c23e-de65-0bf9-7bb13b1f6146,1692818153,2721501959151744539
+0aaba7a6-a82d-cf4d-9360-fb1977bb0a51,2918346971,6653929381882194692
+80fe0be9-a788-8d7a-22eb-0cd3a7b20192,1727097787,3989721505336632298
+7daffa89-6c2e-b281-80fa-0d4b48fdeddf,1326302053,7586709862253095633
+494aeec1-cc33-bc03-f129-1ca32d3f1be4,881729066,15374777188997268987
+e17cc35b-1650-e2cd-1b66-3b4e5b0ee3af,1940636126,5825567609187526524
+fedbf083-3f59-1f2e-cbf9-dbcba2f39a18,385620077,16536535607365516377
+8b7d4b2e-2709-0596-640f-74b4e4e75372,3539606280,1592939481879392993
+7605ce58-565b-f1bd-1b35-9c025d6fbb79,1437986042,11616259633683578185
+e18914eb-f0db-898a-8abb-8517ffc535a8,1496762642,17156840459153919576
+540dd3ef-3814-5ca6-9aed-ff272e8595a5,306380882,13088676129742820379
+2af1907d-ca32-b5a6-623f-8b82ebff9bde,3476111920,4826666910700141613
+418be0be-c509-2010-7d7b-054c9c729b7a,2232255744,204062439046728402
+36987555-1dad-1741-b2ec-96c3c8665337,2889417860,13370495082945698194
+f3d1519d-3fee-40e8-69ba-014147af8518,3219881747,200063482939016956
+7c262751-c721-8611-b539-40f8bd89c2b7,3629836191,14000626082326187719
+45ad692e-ddca-919d-aa96-febaf8aa9355,2020040770,1061067536056109289
+ea6401c0-a541-92e6-502c-d52a43d76054,519667590,13465460012874284808
+967e1993-4c15-f2d7-07f5-a0395a825985,2209176739,9264187671664066901
+020c228a-ae15-d72d-75ab-6df43283d552,1438855803,9937325074615994715
+bd5d4c64-f5f5-16b9-9f9b-78219f457228,3151541692,3453754701927521278
+dbaf6d51-ff2b-2d5c-4cca-79cd20e0c5d5,1098825961,2636599960422795829
+77d2b325-ddd2-ca8d-e930-f244dc783f57,2638619286,1714184879140588524
+4f09e56d-467b-c731-ab18-6e8fc7b0d9d6,3220650939,2794923476564307405
+2aa8b7fc-a582-d907-2b46-33ba4983a47f,1352189669,1671396874554301179
+77cddbd1-2271-019a-7967-613d20776bc9,1414323812,6250965633264401618
+87d8dfdb-481d-c580-7274-e2dcc304e73c,326066907,8207047656954417890
+b2c1ab62-7ebd-5bf4-b85b-038d3803ace7,4143253877,14105454884691239488
+23b33ceb-9a4f-2c10-1056-f34108fabf50,1860436681,11041039620649364229
+0d514b6c-b1fd-cc54-d990-0a9d05f31205,1905123859,11450438416519468439
+44d8fd5a-d06b-3e01-7de8-96cbc3226116,2072203144,6665070016344350187
+b18afd43-cdc7-79bf-041e-1f3bef315d9e,453790104,5189168702695305098
+5cdcf310-2c53-54cb-3ab2-7deb934da3e4,1590066619,17945064603150108936
+93b128b2-4daf-dbf2-c4b4-a955081809ee,3879493335,12357918352703954557
+45e8af58-693e-db62-051e-6cbaf8730695,3116940462,9925139752570113344
+6aa2460e-416c-d505-0db6-0f8dc1065a25,3681796962,16456065561858119915
+915b602e-2a7b-4134-a301-1e570b2055b8,1239209013,9272645201326029815
+36c074f0-0782-8e4b-1d2c-5fc058cd188d,2464344840,16320759216528236189
+a346236c-81bd-f594-5491-e0c01f201ecf,872871251,12908341843572515827
+46cd7b88-0fac-44a6-a5de-ea2d0f35febd,2546122006,9923784749055426002
+1de3e01e-494d-de67-5437-798d266b283e,977952223,16381864179995363523
+d5881e49-1cc1-359f-06f5-b085c98919f2,2717298945,15475302413936081295
+afde793f-9203-852a-94c5-a8f24cbf1d61,2917240265,10210103789151731711
+1bd0fa42-9cf7-c263-2e1b-bac94d913442,3679729561,13160954873112082307
+3837da04-3c0e-e8ec-6f13-3d9de307da6e,1458103307,9980205872509441094
+3c57c769-3104-738d-5b45-f0fb7b824935,3806478180,149096434770649333
+90038c7a-7b97-8135-56f1-0c7f20490cfb,3368598714,8541356583247460233
+55579a96-ba33-3951-45f6-9c42442483a8,50173850,12268743106150477534
+73bc241e-071a-cfa9-7c5c-e859b73dbb8e,1297737053,17292591385943657843
+7cbb2e09-d60b-b517-d0a5-822c73b6954e,3799013633,765744639312242531
+55b6c6c1-4eb6-215d-f2fb-82cb184966c1,514598082,7695032948131414766
+eefde5a2-a01d-530d-6d7c-b9eaf83f2ff8,2212885104,399069362190955494
+3dfb6d4c-9bb6-3977-5e12-493e7f8a85eb,3331648384,15152009100806262507
+795929bd-8cb2-75e6-de67-7941c309a82e,4133047488,820735671630366896
+66e91280-fa4e-910e-24f9-d92c70ae87ab,371538164,12586691625048294870
+46359e43-d680-5cd8-70d7-acce7d095b27,1467914162,18433486463913981834
+924dd5df-d827-6f77-a721-0fe99735acd6,406863560,9842246985860420541
+35895ba3-1d23-3094-a7dd-6b69b56ea2b2,1022304583,10207765733274095514
+0ac0af53-b095-3177-a73c-081bf50810cc,4204980258,13139394460896791836
+e9541ac8-aed1-3fb5-9fec-c4217932fe23,2979798653,11593601348890255781
+506c8518-87ac-cf36-c23b-ede03eb79fd9,3832581442,6449983945530342141
+6576132f-cff3-32d3-87fc-eeb13448dad1,2657930162,6244563743277019150
+f8ebd14a-e70f-a414-a40a-6c18e213075d,1310691293,6707268388959485992
+95e53225-b160-9036-fd2d-579fe1e46311,1945839699,8907162271901205677
+8a6f54e1-9ac5-b3b3-3335-384fd2628a15,956897163,5302488002541933639
+49f76ff8-fe9f-2ee4-0064-8f4617bb7170,3984086173,3068391446108330799
+b06dbe3d-b908-463e-8e65-9ca886efc3ca,2519405277,3549394354994360120
+92d4bec0-02e8-98bc-73cc-41dd0d526efd,1169790861,5915226514006261548
+51a57030-073c-1db1-668c-69737b7335c2,3212423203,9323649457660710949
+065c5ff8-5802-5606-8e12-348cddf46867,2759349642,6563338462863551064
+ce872dc4-2e3d-3dc6-d010-a24949f21907,3466602803,8293045306507771517
+42492af8-d731-f558-adbf-23f559273ae2,389782291,15084655258999062568
+3bb8d51c-34c8-758f-9261-da32ce6143d1,2141676600,15545502752130705437
+760815fe-fc44-901c-be46-ca06367d05d9,3896733800,9859479951824665434
+8722e918-273c-c0dd-3ffa-6edcc1c3831f,2350692275,17308388739475720574
+6c5bd2a2-cc0d-5806-7132-d66b2b546e22,3290058818,5069529679539499651
+378a2781-f917-680f-a035-eb2cbadea849,613456165,15968178985490649627
+53dd693f-3016-ebbf-0d3a-38a90715e136,2933869729,14656727412029188526
+458d0bbd-d171-f01d-bbc6-7baf6672cae8,2201368029,17857204118066500120
+80156691-eab8-5862-2ce8-adab616ec636,276362162,8265500561603924388
+de916030-4f08-f9c1-fe07-3c300b567b62,1556515507,9034228969408532168
+939ace03-cbf6-d469-04ed-2a97e7dfaa32,1213789037,14378368578451427144
+8891ff08-46f7-a21b-4776-b449d309f77f,344401808,11803919040084272854
+225b0564-d31b-2469-9492-56b4d6c54620,384261334,17404015616852652054
+bed51118-8b10-4118-4d41-3c6973c23cad,1096705737,11367860980518912829
+44e261ab-ba4c-b15b-f4bb-1210473aaa17,2447415110,2583241939159683474
+03b933e1-0314-b589-0a25-c96b6f9c6917,1530076565,11650791502407399435
+e115eb6b-fa15-51b8-4d54-b67f872c3279,3424238861,4211213924971880229
+f147c7c7-e119-de7c-c78c-5de45311d036,3036936574,12421435710525799102
+86147fb9-994d-2105-ae66-8fa53879c47d,3294417293,8894899442473505757
+f6648836-cb82-76f1-355e-621ea5220c2f,253381746,9981889694540165357
+68a4e557-a86f-901f-e2e3-69e7f3e4666e,3193383971,5762072120615577362
+92635265-917c-0d2b-499b-eb22e0bc7bc9,4076926692,17967328426913698408
+f5747808-c04e-a965-e319-a6551696552e,1934193991,2084089358323969481
+30e6eb8b-bb57-6739-7cfd-fa8dbf61ab7c,3677990728,5851300015336540071
+73688d19-9c31-e2ce-878f-07be6d00ce5c,3295684930,10832963811416542824
+c50438fa-8002-5cee-f081-a3e00f414427,923574317,2994323052411231919
+0825ff7f-231c-3794-b38b-c1fa5e6ddf65,2402487686,11284152780101314979
+ab99b9ee-bde6-e666-f3e6-b585b77c89aa,981578102,3547157022155486145
+4e1c77ca-a1df-56aa-c855-12ee69107dfc,889700491,16767415566549241248
+fbc6b4d2-9640-45cd-1f4d-951e9f24a539,1163283399,2201148619378235073
+6d5890d5-644a-be55-084a-46c9ae3cba29,760471543,15710373811838452722
+8c25d462-182e-df25-2d29-477f876275d2,3344165941,7538887757748009481
+772f433f-d8e2-d158-f0f9-83c440f90be6,4143876512,8171693041757186174
+833ba9b1-a894-df49-697d-04b6baac0415,133953256,15445145080913312079
+b7fc7d70-07f7-2b59-9391-931b0d55b1b4,794035160,15554356441476153187
+d176ba67-59d8-1af2-4770-b0e65e183973,2810412027,3049924761259194429
+31a8fdb4-946c-1dca-882e-b43ff7957e08,1986352510,16422404710625566356
+55735786-c08f-8233-fc57-f086c4130f82,2430338596,14220725542374718288
+4311180b-f49d-5832-8f6d-f176774f70f6,1709666455,8579934943984326374
+4654531b-94da-38d6-3a49-9d2bab24c4bf,2344016664,3449680712050164578
+6d84a7c8-ce14-68bb-fcca-22769c9e848b,2291645459,5467449192116471674
+2dc27692-c462-9df8-e849-b2d6f6b660ac,4040528736,5818672405170262255
+54faa2c1-b887-4875-0ad7-7638e30093df,3052049352,8372266789567055138
+d1580254-73d5-256b-a65e-ccbbc926c432,1324287121,1630171792334129299
+0011e8cd-8ac3-863c-7da4-7db512de4135,1655074181,3220861371728120789
+70eb0528-76f4-396e-4483-965aa1bc8149,1302389333,17136773413184101632
+7063e9af-7c9f-6424-ac73-53a3e7ac4028,2660407095,2757749361397830393
+010304d4-04e2-304c-7599-3e089ec96938,3833667486,9985510345585252032
+779af88f-fe6f-83f4-817a-3f225ad44460,3431501922,11687901632297305581
+db0f2472-b7cd-93ab-c9db-509b3255b40f,2933510326,333509122520956372
+a1bcd64a-869e-6500-789c-02b17429fd97,1852143310,9018188458698313552
+cd7b8da8-3dcd-a069-47db-77320ca5a65c,2866667402,12310848184983635404
+7ad55a36-321a-4340-c25d-73b63ab50709,4040089048,7898959022415835408
+3d13954d-0443-809b-69e2-88e7055f1123,1347982413,16700574879646471872
+86c28ab9-c7c6-535d-b995-08937929cf97,1703139012,38029778735777734
+b0860ebf-60c1-b8ee-dea4-304fbf851412,363834555,7539913604382064900
+fc1f2b37-0322-d314-f5c8-5676339b3263,2899689189,5987444914325694077
+797ed331-5aaf-29b8-c2f0-603818be3a94,196120281,9958018307115721658
+a2799059-f1a9-2d96-8c7a-c4c86190dd74,1347776931,4028867550775198
+18a9a899-0226-22d4-34ef-a6e226f94b1e,363406691,17274577175299766280
+ca4e13eb-5202-c9a8-f763-eb66ecb2c05f,1702008603,12395298427337298670
+b4ce78d4-5246-a00f-2376-d46a732cb715,671411975,7161565424179599613
+986cded7-3dfb-d378-9332-c9981b67f60b,1365599537,1477104273332104518
+e28a432b-1036-85ce-3a4c-3402d2691ea8,4110928316,10239411563133430057
+10a8df1d-7d8f-6646-50f6-2bc2b0ca61a9,437735947,6291985738863464419
+f3f7450a-705e-362b-4228-27e627b9b973,971192046,10730713051149443809
+b35afccc-7387-bfd1-d30d-f1bac566d7d7,37848826,1798892155996126158
+9d5c80c1-5c51-8d79-f4a8-f6c5baf107a9,4269563366,17447632007688188253
+f390211a-bedf-1367-56f6-11bfa75b2822,703525127,16865556091047383883
+b078c85d-fa14-621d-f05c-7902fb179bde,3053199301,10101124678071285751
+15fa76b2-40b0-0497-e848-8d820d6527a8,2100025813,13810388431160760751
+5087a82c-077f-d676-0e1e-a52713ccfa0c,3576489443,993800568636190334
+a16f6376-d3ba-98e2-20b4-628149b851b7,3706056596,14737400478148367571
+c132caca-cbea-6269-f53d-4e3b86de81d8,450301570,11469327517501609679
+67558f0d-415a-c1af-38fd-72cdbe19ce21,50059296,934199943135430466
+1541f96a-2c79-4d75-7ee0-802cfdbd2e92,2829706518,1162038741903074779
+ffc78897-4648-10b5-c6e2-5a0e086a4b6b,4129592837,6780112497520560602
+20c9b7ea-11de-c36f-bbe5-f1384e37d130,3855625238,6724515644001043242
+e254a4ca-bb0c-996d-d260-d6816d7787fa,1313725804,15502970874222283980
+22668465-28bc-17f2-7eeb-0c2a60869a91,4150969722,6379283630455483598
+a9f63cb0-f247-e469-5ef6-6a8dcc52dc26,3998396744,16958912881929925447
+32f20b66-7857-943a-a6e6-8ba4d4980fc2,3914433444,7788195002622625054
+244f1214-7e3a-20eb-2d79-8e96cb30fae3,2819321679,13413117256164182184
+c1223b5d-11f6-546b-3ffc-50f797054fa7,1107797173,186499612465970489
+b200489c-ebc6-605a-badd-944130a627a8,3780571556,1140736418663000629
+6b2dfa0d-ddb7-c616-d4a1-525958217a5d,3189668469,9524141253707320305
+b4440313-205e-77eb-f567-6d9b5e35877b,296114000,5910367723806073727
+e72e4c75-89aa-178b-bb02-53c92121448f,2686955533,16684311941606902705
+1d130af9-e811-133e-1bd7-64ec04f6b0d6,407904231,8819320827455640461
+9e7b0a5d-8eeb-9782-6fee-d0b94e352277,953340174,14676638019754681651
+1b510a0b-1c70-5f35-4dfb-e36aed818f6b,1654708406,3857647144609921049
+5944852b-ed29-1d16-65f8-a3d6b59da2e7,2045325055,1666553336451522490
+cc5d92a3-8247-7b9a-69f3-1b8145fcf4f1,1336493455,4388435344382404199
+a22b776e-7936-ccb5-2f56-7eb63c86fd32,456619064,3453570706488597274
+9ece5e42-6d56-6e83-9bb0-10f9a2a07359,74386341,10067787411815110220
+c8d63ffa-e1f8-cfbf-4bc8-fcb5188c3986,3973401743,4677051822500976612
+9eaeb635-4035-d9d1-d0f5-237ce57abb9e,2083411496,10715422122841761706
+4f3dfc58-c951-8793-726a-10d2aad55754,3028302307,6468944034740805611
+b1e92f06-d16e-247b-10b1-a1bfc795c6d5,896069462,7087697121926857587
+df20c6f1-00e1-07d7-e3f4-8c08edb22f95,1341730028,17854094936460741717
+59d52c06-d115-ae3a-8dd9-8e643aef399e,3951276809,10243978096349231102
+6a6cad86-41bb-017c-2af9-375cc44be37f,2108686771,11153076401650651927
+79173762-eb78-7893-b81f-4e56b4abc9a3,519982575,7935164942222810008
+82ea1ebf-af94-380c-cb29-6edc40ebf40d,3453880593,10505801896689758363
+c28ed42d-4b34-b7f9-9e2c-8403280cc97b,2341956791,1210582180020383993
+936fd638-e535-1eda-99bd-1cd4ba9231c7,639740698,5262084790876447445
+327fef92-dec8-7f3a-268e-c87b4119ce7d,3007805528,9204793253939268121
+230a2507-e058-a7cc-e4a0-9622c9351344,934915130,5853790721129525187
+c3a22564-70a2-1c08-5210-f37d10d39e4e,1825498818,6321585333929569610
+3c23c639-71e8-7a98-8d7c-7ff20414b74d,1772689922,683202058966682615
+b18525ff-8e34-0d7e-b18f-8ae6cff3af10,2297522634,13476540026023411471
+9050cc88-1477-f722-c094-9e7f7995ccca,3949804079,8598206745877756453
+9b48e6ce-4bda-ea11-da0b-79b0d3f6ba51,815591497,8551163675928323813
+687927d2-b3a8-35c5-e699-3a434d309162,616404429,9275249677135037005
+d6cd132d-fad0-808a-fdf1-1776bab94e45,948410492,14380442056440953111
+0a0baa56-a4eb-4c2d-794a-456b0aed6d4f,2318004479,17501400674194098262
+66b52d89-6989-74a4-7175-af7abc0a998c,2276265384,15055141811722114952
+137411d0-81bb-c9fc-ae59-aad4b06a1edd,831747434,18314433046989820077
+ff8a1c7f-403c-7337-91d4-399713b8a0bb,486112599,8659527495643139415
+5e9894b4-500c-32d0-4db5-c516a4b018c6,1640172411,9912660772424864337
+fa425c59-a119-4c99-f76c-faf8574416a2,878263072,6579358080849825750
+7805177c-f626-0619-7cc5-9e27eafee02e,1008767065,11275548365944634537
+7d1528a3-0027-b29a-3a99-d1346a48513a,2417337760,7541408572060881149
+e309774a-88a5-4a50-c65e-06460fa281ed,1592656900,10707225077484743451
+aaa9131d-fbcb-cf6b-b503-7b507d28e261,275978836,16790707099108449093
+4ead57e9-a67a-6fa3-1125-6387b78698b0,1794720414,8072178543530119194
+09f741e1-aa07-1142-e649-7c13ecd1f057,627971781,8966830303636775533
+3c633d49-7640-14cd-d63f-85b2b47e4860,122461999,16125721855997808007
+d9975236-36fd-3d63-acc8-5faf0861a633,137159517,7832971573014549513
+081531f8-4f50-e10d-2bea-0230e6df03c4,3294766461,12239699035825360970
+806b902d-e634-c666-c0b6-3e9dc440ca10,3813021944,17845647828758717617
+316e7964-67b3-4ce2-1355-336298782e3e,899467237,8373500101510007162
+001775ab-d675-934d-fe15-8b44250ded60,1650919086,376436572308612222
+32aba1c7-9cb1-fa4c-674c-b11f1492a815,3292175479,4740437579918843137
+e619c196-898b-1905-e561-9dd7db8770fc,2482857936,17905947299347728178
+aaa260fa-9390-2a14-83b4-9d2ea8c7f09e,1149848658,5959824322946840176
+63e2c590-d527-741d-863c-19615e54298c,4164456706,17598233563773392151
+0d7ab76b-2dfb-721c-71c8-82ebce13d4d8,165085824,5275986095893440485
+763fd3eb-6137-994b-dff1-a9ced217c952,509537020,3056611377124474915
+ee8eb92a-6a19-f691-a3e7-b2a2aea23a2d,2261517405,12547804267903399333
+bda8a082-8c8a-f813-c22e-173b299b6005,1601704098,6655419352273010745
+aec6f8f6-89d0-30b3-2910-8cae9f140fa2,1786266181,2567663239214203270
+ad8b13fb-351a-00ee-adf1-97c7bc17719a,4221188975,2790847691948807046
+3998ccbe-2644-2230-b889-9b92bbc28cd8,2332020111,3581742959825543573
+9a9b34d0-c99b-f947-4745-e818d047b0d7,1156413130,4551357165038215677
+f955f4ce-2d57-19aa-108a-14f8d1dcdd15,2224554558,8390755308977096244
+9096a7a3-d242-8a53-def3-564c1f261436,1609436612,588127961248042620
+c237d1c1-1bad-075e-bb70-904ed91d1bcd,956993960,6719611584653870774
+fada8c60-2cad-53ad-ba83-90637356f9c3,1154606483,13745109928656372821
+7352cd6b-9cd4-51f5-d732-4c8b95e47a13,1747119079,8613058781834730441
+952d000b-1a60-69bf-5466-843b2f73f07c,510012866,15367741051343816721
+3d4d826c-1072-6522-68c5-287cf9ee6227,1490651405,13969104336235407517
+275b0df4-0230-de75-581a-9fca9da486da,1780635640,17697619822857337320
+32779e16-855b-c829-e717-0281818debe1,908850670,4725847435260840454
+c4534ecd-9367-17b3-a033-24ca3eea85dd,2782989723,10360253306722918821
+00cca8f9-18fe-7792-b9f7-d0efc6234c81,3864589756,14793420197154264971
+3101815f-c70b-9524-1e41-08f5e9d109c6,2146076722,17250567279825330807
+8e523628-e3d1-e249-4204-91643e21a460,4262225563,18023260047360775520
+9e8f4770-60de-aa56-1654-f9e555f8fa44,3394089120,8214730770416954796
+71363866-5603-f310-f933-c1e108cf63e9,361452378,12606361317317205098
+15dcc09f-05fa-a740-6564-c2e89e8416a4,3009811491,5135676502790006441
+85b13f6f-0f15-03e6-7c8c-647c9ad76b6b,1240856159,5139952754656944192
+c266e3ca-edb1-8a49-2d48-bb40062f6f98,772376658,13900130096476992179
+582b6ff3-0dc1-2af6-6451-87c35990433e,1712074089,18399066277828452967
+31968cb9-9d28-c8e3-fb2c-67c4211977ac,103576039,17861043341706235933
+07eb83f4-f060-c5a4-3f05-777f2a4ab189,1511015512,7594626765841663582
+dab0c0b8-0a68-00cb-48d5-abb77f2e8002,2096066113,17629290267929672525
+6583d59b-3c24-58a6-c7f6-d4e00a560d97,3653279503,11707991801888620952
+d9fb45f2-83b3-758b-c1a1-32ffa9d0a144,599191928,14742162959234169416
+30a9d41e-58b5-1c77-3e4c-615402958598,914591948,14437417045491424653
+dc8efec9-af98-e6ef-aee4-a2bbf3bdeb00,220796493,12246513960997664206
+f5631cf0-839c-1cff-ccb1-bf36f667274a,1315452656,1341383482429505264
+8c28f7e2-f376-6d53-10c4-ffca4592db51,1345035301,17588199710761976306
+b6fbe404-6f55-28e4-b8b9-e27fffb68d8c,1804545901,281656185209686778
+a000e73f-aa4d-6ad7-86f4-fef24216fd2f,4170301383,18346023944902194150
+5e0777e0-c768-fffa-255a-0abb3ee65708,2483626099,239037239758947447
+2a668f4c-0cde-11ef-8c14-61d691e888ef,2810725124,1178426219767524286
+629bf463-35fa-2b8d-b17b-0b6439650fe1,224439423,17805739221745550151
+ac6b2670-9030-d326-8e64-b22675df88c8,2981801575,16725009627358985390
+1d673521-2922-e1e6-b3be-fec1ff625c58,1476085506,871521825257927718
+d593a3aa-fa30-0354-678e-7bfc5a370757,2119436025,10790184418792455195
+6888f9f6-936b-6afe-e6ed-7f301a2352ba,1105649519,10620002067838934593
+31e05559-7898-3c83-f6b1-58962e6a5a45,3518195824,9745410597957305760
+323150f7-fa03-ecc1-ab72-dd9ca63a1fcd,1938533331,9343702042000844110
+77bce155-c428-7f0c-930b-c43ff2f74e81,3827518417,5123516953347983261
+5ece46c6-0bb2-62e2-f70d-0f804e55cf64,1039049067,2884442497779067078
+c7f274e5-431c-b632-7ab5-8937d56061a8,478142532,1820562023263579172
+c7acb38a-37b9-4350-2cc6-e417adaae8be,303824477,13132695595585213765
+91f822d4-88a3-a387-c912-7c248716d2f6,1556942739,8392842574141758823
+8425b421-c04c-83fd-ae4d-5d46f51ae8c0,2678393710,426374995033578976
+92d8b431-b789-3291-c172-504431e054fa,1282817898,8584223776992981602
+f1a25696-dc35-42ca-0ee6-6fffe2f4d4b1,3703495266,1676955790607815089
+56b5a63f-e144-cb40-14b0-5a582a61d2f2,4148217818,9463849023590662499
+1f9e0475-0491-e792-d86d-611bd0b87e39,1551540368,16944117304052711630
+e4c719d4-bb79-204c-226d-2b9c7839fa90,1002935239,18023215307812905532
+b7ecc113-ebbd-61ff-861d-6c3a1605b68c,425720749,9324901393521006342
+1bbdfa1a-2d1c-aa0c-9310-970316433d6d,596861903,18221256929444171163
+967f3d5d-1914-2ec0-5bec-bbd02b8f9a76,70242503,1830138424554582252
+9ee0427a-53c1-89c2-1663-fdd025718cb9,2020179942,13312970046095728887
+e46a4278-0b64-bdcd-aeb4-17f1a9ec6e71,4169492049,1868222808489517454
+cc738404-dcf8-f4cd-d98a-8dc0be42ab0c,4125231202,12632941832913423371
+0a5204b6-3452-64d8-a1cc-2479ff5f471d,3428740674,5955441201533010021
+26837f6b-1926-8be9-60ba-ade2a02d7ca8,4163193948,9656457983540430477
+f54dc18c-8add-6db8-1c96-4b0c3dce8da8,2735754781,1889595394759242393
+fe2eb9c9-17f7-78a6-37e5-10a16101b47a,3475328956,6060400423059301199
+2d7ffb7e-aba7-2f9a-b5a2-66ffb845d822,241974609,2190070677236488212
+d4fb978a-feb6-b10e-db65-613972b9420d,3200810174,10393707426390936691
+ff6f01d9-f9e2-ac37-a4e2-25c00611bc3d,1525574680,16222464964382824497
+152ce538-3a37-5e07-ce21-97e5a3623ee3,3309249719,6473224388067986704
+09b9b8ed-adb1-b20f-3d67-254d78ee08b2,2951428340,9106877963530147976
+1351840a-d4cc-db2c-5379-5710c6fc6a67,3663971180,10248421802294976429
+a95226ed-8f59-fe67-4c15-0ee2a19afd2e,1362694555,6955422559618173491
+bb9dc1b6-52cc-558b-dd81-646227e3f0d3,1936075322,8625995612762897608
+c4c69de1-34c9-edd7-0079-d795de846687,1025916824,9632783355313339890
+3d456f51-ba39-80ef-e256-b9d99c1b1eab,3984072144,16941528084867327889
+b1efcc88-bd42-a245-687f-9bf4b6a1244f,1961833361,6266031945516617716
+dc3b68e5-e42c-0144-6d2f-37bd9848bd52,1325089877,10092599453104044621
+ccfa1bb8-859c-0742-f863-567ff87d699a,1012065205,15564094580508113046
+657124f2-d358-ba1e-e0a9-87025ff28383,365889332,10123715266394214887
+3c66e613-c97e-c3b8-89e2-510ee134467b,280348231,5130653566978267873
+3eca0521-072d-a12b-ec40-e39990a36097,1393979693,13165206807519135031
+12272246-c74a-ff46-08e1-167befdb1229,1147398325,9006148895693214635
+1d4df1b6-5109-df2d-06ee-1e6a257a0452,1402747340,4667787685439093677
+3a2ce5e2-504b-c001-03ac-c5ee2bd086e6,1743631970,3778704874973271709
+c19694e5-4bc7-0256-01c5-7caff0a2d779,1355789175,5148125547744312270
+c556b952-18ca-59df-8081-63f136dc111a,1821561990,2498143957696401246
+eb772077-99e6-6939-3384-5b55dd3073b8,3483117293,9733752733824030333
+a7933e18-6970-d0f6-f565-5e87c2a1740b,4084478593,8084857979587144936
+416138fc-2453-3ffa-5742-5c34b39836eb,3810818972,7032987270957032149
+ce086469-2048-85e7-6df9-e53328e0b1ae,1497067748,17438280020129761359
+132eeccf-34e6-426c-d363-db810ddf61c7,1651432588,5244084452725916434
+9590bdc9-6865-f5cc-c818-a6282030e58b,1417365937,9719407537336018293
+255023d0-bf1e-7798-8116-fd2eb9881dd0,95028590,2336890425364901799
+815b9eb7-0056-9c22-edfc-5bb188e6bc82,2269819721,45820652409957852
+18dc0728-9f20-6666-116b-a1b2eb18bdc8,1841726074,3538312393337707476
+df48639e-8644-d4e9-726d-47df2174412f,2188175210,7115163093426869579
+4a93b1a3-94b8-b078-0120-5c0409ecab59,764071120,8803037820108050608
+faaf622c-4880-4f07-66b9-476d2d9028d7,472420704,12286569452101200057
+df1ca3e8-e76c-c4a5-8b49-72724b0eea4e,4105964141,1439711441888815982
+56682d98-b7bd-feda-0e08-7377fc23cb1b,1036473443,1106731861193555572
+0be227a3-5ecd-fd75-cce2-98f0fe487fd5,2301323936,975081085958969623
+fe816e1f-9a88-e9ae-3eb6-b445128baea9,4218156293,1304087754611320
+cbc6c59a-d30b-7fa8-5ea3-37c2b5f98dc6,709497545,8882011917582069691
+b074eb4d-85c5-c6a3-c7bb-ff856070d3dc,2723274586,13729791364619833633
+92c94488-d743-ff1a-ed3e-fcca4ce01db4,858350990,12835076185177746905
+c687a6eb-583b-9b30-e2b3-a4770bf69bee,2807005285,14735806400047263855
+0c12ea8c-005c-41b7-0876-2268a3be28f0,3211353112,6932929834506663145
+7c5fe17f-9535-ac4f-14d6-32146f141bbe,1802655920,6379147988196785688
+591a1a4e-5a3c-9769-6d63-3e97ab813ffd,2434517399,4223442057938090966
+f39fce24-8b1e-9738-b99e-dbd06bb96b27,3613573567,485000001941021414
+2fe4663f-7556-1a89-9463-bfe072c5c047,22806647,2613285392225182994
+f9f1cf2a-2acf-32b9-58a5-5de9f4cb9b58,4068377379,18019717861515661798
+8b143438-1e3d-635f-7b96-52c22245e197,49338646,3380276472299421080
+e6e11b9a-44d6-2594-e71f-dc8579da7749,1686716988,17227175992574018323
+14c1c2b1-d610-7d62-e2f9-c9fcfff8e40e,2378567160,7519729592940810138
+a54264ec-bd35-0085-90c5-fc1a1d72023b,1378524512,3770042001798787466
+0aee7f17-a04a-b8e8-a02f-9ce2e2d75882,1530543234,15674723394827231408
+ce4da6d9-2d12-80cf-8f79-b2a6e00b161d,497728818,13509477919583213647
+57ba0ac3-ee47-9b6c-f727-b76d870d7fa7,3880421211,17632073378280518649
+6c78485a-fdb6-7b3a-15ac-27fa182ac0c4,1348951548,10648018305376492823
+92da57c2-dba5-fb8d-7879-1a581ee3b286,4249709726,362680424885428226
+0df896b6-2f9a-6f3e-e87e-a84ad3ee7494,3438852424,16274856567456502917
+dd87bd72-dc0b-6114-f198-11cbb299d269,1933108167,17485154011133207145
+314a0742-c8c9-12d6-b85c-3b27090ff1fd,2515463996,6063633345687755414
+7116ece1-0ca2-69fb-3197-ccf77975bb78,2089449617,5077872620038890508
+987b73a8-c063-94c1-21bb-a92a3de6f8ec,1984916980,13938666035255973922
+55ced60f-3ca4-5fc1-aa21-3e11424fc996,2541072698,16306134298746354073
+7c24cfb5-2b32-e86f-e864-7897aa3ce539,2055131468,17122201792920023968
+69e6dbc0-e6fe-a709-5d58-878e5c87f6ae,2849262173,833943287232848421
+bf4d6d4b-354d-4313-39c7-648cec550d67,4096005786,7556533714387622896
+b1517632-5914-bd50-8f98-416a52fe4969,4249066480,4478043042132919938
+a46922e9-6e0e-92c1-7844-cb9776bd4cb6,1636084524,13091638696926957751
+a71a797b-8dc8-f243-bbda-74ccca8218cc,1276475493,5665228748467609385
+7f03b3b0-b873-c0aa-56ed-e375a2d0cf44,3571142527,3909556046282675639
+26701cbf-e9a5-c440-7f01-95544df38be2,2199346216,4056668599374321158
+730994d5-22bd-b567-db05-82ebe2b227c6,2630331350,5462011144146361886
+50cdc54b-c7b5-9909-683d-effb47004951,764197322,6314524869962242823
+84758c5f-2ba6-631f-5db8-0d6a6abdf2bb,2778251683,5701454916657841916
+a2616fb7-23b5-0763-7c01-c12e7e36e6a3,4100117958,14351947222646940278
+bb6a1840-3e40-fc8d-cf36-68ad36cf8cd7,4145345918,17996544258714225560
+cc7a6f1b-caaf-611e-b0dd-611b96472aa8,2782102975,11135749289096678607
+826d8da1-3213-d8af-fd1b-f4302d8f1f1a,1373813388,7626555550812830755
+3049d5a2-19f5-5c38-2fc5-6d811ad1e5f2,4261116181,6445972715279064756
+78bbb89b-7c2e-9fa2-a5ef-5beebd7df29a,745973614,6638449668075375029
+c2b37be4-7af1-ed3d-e587-5319ca0ebfa7,1539646958,691138049062257193
+a8837042-119d-0393-3597-abe0d5cd50ce,2977665093,6140835856443917958
+5106e21e-ae53-18ce-05f6-7c2e963af6b8,2795713415,15950869872136477020
+a7b14678-6900-1e11-9261-34e1d7eb9174,1458198554,6537826451960907648
+2df2ba4a-7603-d209-281f-fcaea33a411c,1037610072,4783867259744892929
+b14adba1-78e7-1813-12c0-3caef12e9234,1513682206,14071256316864140912
+e49ea584-0a2c-0d10-2eba-f158f8eb8b3e,3629888624,8817388454593830312
+ad656f35-f025-2bbf-e152-e078dcb16d44,914743927,8837039315640045037
+75424594-8cab-9093-839c-56b4304c66b4,3630184930,3820321491692135979
+9d940644-ccea-07af-4e18-90be78ef3853,2609412442,12976727950567957026
+28ab5556-56e8-27e4-2fc8-af3ae5f71c94,835631592,6223468309318369992
+058d625a-abdd-f483-81ce-31283121d6ef,2081408632,8752120811805961216
+f6fabd85-0319-4433-dae8-8570a3ab786a,1088156040,17608019007934630293
+01f7ecfd-394f-2b11-d2e6-edf46b6bee04,3369728277,15559502157318684745
+ebf83694-a4c9-d702-44a2-712ec0563b73,2996259540,5457213927236521821
+922d20dc-1d94-7a7b-8908-2f76a6b9f6b6,3443063001,11898168679979059998
+b051fe89-7fbc-60ee-b7fe-2dbddfc65ed3,632302878,2056355411883303365
+b52db5b1-c74b-9c8e-b93c-9ad4698a2b04,2372717608,2864658532399987526
+b198e381-4fe8-7b32-1519-9925110ded41,4051197213,13538134530443484393
+cfa171fa-8bbb-cf63-1568-7a8c537ca06e,493064156,7750508863630095087
+69e55600-c1e9-c6e9-a527-5841e9f267d8,2515090239,4874136472090930951
+c86fe918-565a-608e-d11e-9257bac73f4d,3492959022,18290845364973680230
+3c58d78a-2b02-2144-1e1c-14ad48f5005a,120850998,462931254701116011
+fab91056-a70f-5764-c236-ee7a0e404674,1367454143,10567436351235999610
+cd59226a-0873-5ac1-b4b0-d55157c3a6cc,423035532,1279089757564666599
+034647d1-0738-5619-8c11-44d057a13538,2186391348,11563489652580230390
+69730479-2fab-dbfc-59a5-d1653ad34813,4293711505,1690026698962021992
+75283522-5315-d9ea-a858-4c1229eff496,1292206380,16451514866023113452
+1fdc250b-e710-2bea-62ab-86a5137b88df,3951641033,3329073965976797068
+fa8bcdec-cb4a-ad4a-2bee-6664f319f8ad,1533696350,13045650052667030270
+bc1398b9-ac89-a2dd-9a77-7c2378238eff,2502319916,10650849241294939917
+41b9c7d4-aab6-8c08-1f12-e4d2a69cba73,91921665,11388993897436879161
+37760879-684f-75e3-933a-678c4175a642,4197691165,4259749489148287351
+7335e351-ff56-07a9-f427-ba8d72936d96,696083000,8974780787487318311
+d69a9c48-7dbc-d3df-d9df-f1a6d3e7b923,89565223,5644421584002220404
+286056b1-f43b-6f82-86fc-da3d8d2e5c9b,3396701080,17007423256172860204
+5e13291a-54f9-83b2-1af3-17c467e4fc93,4152772289,13573095076428003916
+9466503d-ae3f-68c1-97a9-db4a74f20a2e,3798952987,6032137491070656484
+be61ffaa-da7a-16a7-580a-648f7f2c7df6,3533524697,16405108013802701448
+0cee6785-59a2-a805-59b3-6b0ffdee805a,1876410891,12819217684166402515
+e2bb454b-fc0b-5f90-9d5e-8a6dbd17bd30,1425602488,14987011216562397792
+895dc9fb-cb14-f1cb-a744-27ecbe45bb74,447289096,6100012502719211660
+2217738d-2b3d-204b-e0f7-5d8e762445a6,2887896888,13039021692993470056
+26af772d-d9fd-190f-9b46-dec5bae0d321,3530590615,3700573282687599123
+a68de9a2-cb54-27ca-ac7a-1b08a536bd83,3461860169,17516319561749060035
+42d8bae2-db01-021b-99fe-6f595e8bdfed,154470886,61998684400610344
+56f2d085-6f2d-cc17-f502-fa8b62ebf784,2789259653,304730166657204279
+d6d5e85f-fadc-0286-6ac5-3c2d09e5e77f,1642749097,499011586082557149
+e18f2023-83c3-d596-131c-83ce3c093896,3563927108,10923114947743600432
+0041408d-5e2a-3323-1b2e-70ef4743c30f,3607086579,10536625518666135910
+772e9b39-6306-c0a7-815a-a0be70394693,1812656010,15192582739759608646
+2eb47247-1af6-29e1-7e8a-9bfff37e6f5d,1358066973,11003212061182324023
+d6d80a52-8245-ab07-c26f-41b3741d4789,2456651269,7623695422880778209
+e92d01e8-8c17-dcce-ff0f-97780725df2d,3357568858,7708202505306404927
+7d5218aa-70af-3489-744d-f40736f87795,3275324402,14212368903546227496
+9f657603-c9ca-4b4b-182f-a52c56b2ce4f,1840093042,6850105783368860436
+36d5d62e-9e4c-8072-16ba-319665c361b6,663563703,8170697624538661880
+696d68c3-28bd-b5a0-af19-6b51eceff1c0,676302816,16276446501138331057
+6317dc67-60c3-f9f6-58de-e0d4d9c97c69,3284659623,11034173111861323163
+f356377f-fe3f-93ac-a54e-8b70a4449c5f,2658071278,11281500899907198613
+d77c3e88-8307-95c2-9e79-b96ead72e52e,4261454009,17173455592589819796
+507ef18a-61b6-64f6-cbf8-84b8d8e71982,926259485,15695197450557169772
+05ef5e99-ede7-43a5-32c7-66e1a0f5b102,140610521,13401382542622625217
+9ef37957-bda7-dee2-4732-206f8125ce47,1901807420,9889650439784665659
+51d46f79-deb6-8f34-fa27-ed1156797a02,2772715491,567919677557390879
+0d6ac5b5-e452-f643-84f8-88e2c60d8e3b,1799901449,1083569692181623790
+fe8c2e1e-4a58-ba6e-3954-e0be90d1b0c4,1205236812,3663819767655779147
+acf8a139-a065-1854-dc2c-2dfaf6c8c0be,3774774820,4583909435615699846
+604bb199-3b56-e3a5-29c1-6c05b9fa68c5,1655119826,2936326028146289995
+69ee6fe5-4a12-12f2-ff8f-594b15e32ce9,1035427940,3288771764915229035
+a37496e3-09d6-daa9-d72b-91ee4f7c03ea,85011966,7011740658626535625
+a3f8c53a-6ac4-c830-f8d9-a0d74f7161ac,3095782873,16235691444757879682
+622b84c5-6b75-e863-4d48-529287ecd89d,335187295,18174136128626310743
+f3542935-4ff1-7dec-82b3-5c1d9f6cec03,475040447,7759465537626603629
+1c1ca5dc-d6ae-91ec-a3f8-8dde24a724c6,3935710531,307524910914370841
+f2d45d69-7231-532c-850a-efa8bf97a8e3,2463014648,1673751167821925177
+aa84a777-ea4c-dcfe-dcb3-46326e769387,2694641589,13586452249705165248
+a5cc0b74-0dae-6dd9-de32-4cb84d320597,4291323885,6258302457783957633
+c4ecbd8f-1ca0-cfe7-0c3f-70729f96576b,3705130613,6920938638277593450
+3da134a8-2ee5-7d65-e3f3-bc470d10e9f6,4030140221,9863109087914536275
+8b6d00a4-12ed-db9b-6aad-f9894b0f853c,3228890473,17495274750731881300
+67f63886-2cc1-1033-6438-72906606fe3e,2277682180,9309179114840329688
+ccf97c0e-bbae-cd2c-1455-39b338db2347,316138963,17474156874172119712
+9de557f8-adf7-3a9e-82e5-905141ed3759,2856922051,5439348943618381547
+7fcc7133-fe32-b5c7-cf32-3701182a47be,3687499196,16777712226145262639
+67701e03-eee6-4a82-6268-4b2c7a340527,3164923694,7021878173247215791
+cee061a3-6ef8-6242-eff8-8925ff3bc9f8,2812016864,4565018516026335482
+3c941ced-57ff-a598-3282-bd58afaa9073,2966522135,17860221750777656238
+914e18e7-d949-02b9-53b7-6c58859568ac,79296931,10422566626737408267
+32e3c26d-41e7-7a9a-b0ad-2036b427134b,3572440419,7424451510596416921
+7889c3d9-8f15-f4d4-ef48-a2c958a6cb95,3591759440,12030472640953767573
+5b325df4-2611-b18e-e3e9-1c95fb2e3bc7,1397943370,12359497260295750211
+34e106b4-9a44-ad91-1477-4b97b3001a92,858267199,5388862662045392639
+25bbf660-c2b3-3c92-63c5-dc4344e338af,138318665,10697411646735568871
+af576c55-0a1f-aaa1-6231-04d037879c91,1001117871,1305423207990615851
+db557880-8e1b-d704-ea4b-2e245f9387e2,3848181142,10452767216467288060
+4a0ecde3-9620-3524-9c43-01a88fdca84b,561107669,18083352707894700467
+90fcd9dc-0e49-418f-879f-e57accc348c7,355388568,9934270933929460817
+026b205b-93bf-b321-d4fd-606f7a497da3,1245634438,12168148207649255010
+7eae0b4d-a140-2ad7-a5ae-4a259ea1830e,380548484,2901096029583187523
+c7c7844f-d90a-4822-579e-8490ed722bc3,1820593167,16435219386246570372
+a96f3763-6cfe-b53e-4670-ca5b901c6d26,99184932,14456158385662835820
+6f6b3a82-6e2f-5e1a-d32b-390bd5832ac6,1216156379,7172892367634493164
+311b3d5e-0a78-a1c5-3901-b756f032bc67,1370318945,8826351297742909544
+49d192c2-3ca4-d107-2d96-30a319157c70,3427051082,13306551859016518823
+2e2fc738-bd7c-a4a3-9d0f-13cb2ee0800d,1791222847,15809084628513512842
+4424965b-32b4-13d9-8f3e-f5df801031b1,3312856009,3837363004496758059
+ca2ab391-fc1a-b3d3-24c5-afd02c3d6a05,3455015170,16664308821851542314
+3320bc45-51a2-1c5c-966c-0278f74a618c,1461801927,4434365602781175988
+5659daac-8ac8-0121-b322-cba7a9c2698e,842147959,9721890445763138585
+b1989477-9626-d739-2b68-c7801e83b9bd,2007793387,2356992617653582302
+adce96f7-3096-6c5a-4582-063d4d8fc95f,3439345364,7230101288780824396
+1eb2d1fd-7a60-f1fd-2f8b-ffa6479839c2,4090765900,16330658403704818084
+00ac6422-2cba-d82f-f66f-917f5d4c8430,158236378,14044967872980561498
+5f07f8c8-42ec-a3c7-ae57-a29de4ebb737,3527985440,5986641280529631784
+c8a490d7-17cf-829d-99c5-4d9702a79a3a,70753011,14616247002210354316
+3888495d-4da4-d1ef-ad3e-a9429af90998,1015043085,6286720698587754834
+1f754716-74ac-dbd1-598f-a4ac26e60ad9,213381554,17508593683417374619
+18d6a092-ecc8-433a-d52d-118b88904888,1324347892,16132076094467217489
+f51ff84c-ba91-8db4-6b93-6b49d8fbb6bf,2110068991,8796859807839761362
+ed147890-96ae-ea75-4710-4ea5e9e73e74,3867109391,15689370644461516220
+0db07a4f-3d0f-b04c-ae33-a9ecc71035f6,2229650733,13449869050743075578
+b9016e32-cd58-8ecc-e6c2-ff0723ea9e8d,795474943,16704110454234329683
+f27b1694-5dd7-4f17-968e-245beca35443,3413157952,3713042119446795224
+3905c583-e892-ccf4-8668-66f6075a9e4d,3151715846,8062770323124440646
+e03a9ae7-7c39-fc68-bbf7-edf006421065,3855207247,1477320959104225529
+a0173501-d973-a8e9-d687-294c827d1a92,4266963899,13431907970375729751
+f7a34c86-5c4a-4630-e917-1bc3545100a7,3065002528,4170893324461316425
+13371545-2132-0047-59ac-efbd04a3d336,3319333959,3544296914697054491
+8b620d86-f1c7-566c-6492-2d366894cd68,127090216,17109854205856552075
+86a92711-3b7d-5aac-abae-b85654635394,1897526040,5743724538804117399
+1da34576-c34b-aa11-66c4-91d26fa89144,2256664224,13494864013806689455
+43706682-20c5-5abe-3c74-db4843a5c2df,947677716,5257683526316638053
+1d65203e-7c81-0d07-7dc3-bcc9f29d6f74,693790697,1406393952518110769
+a40cfb19-d6f1-2620-6c7c-8081aa13e2f5,2282882377,6488662717163117801
+cce11e99-3d9a-c9d1-1431-b06f48173e55,2729353894,3239273247494943130
+1452e692-1722-3bd4-cf47-b5978b644268,2190374037,8675560599418242167
+d4610a9d-73b8-c465-cf1b-1ba813c4a86f,2784765278,5690547585790323421
+1b9a5ada-49ba-0c4a-171a-d55709461f92,1754753848,14492335134955550896
+83ff7813-6ffa-bcdb-7d12-b39a392aac5c,2844917789,6097806144260037070
+9a35a710-e8a7-a31d-2af7-d7f623cbe3c9,3466147504,9114544311791938954
+aade60e9-e8b4-cc2a-80c1-a11adfb3c7c3,3733193393,9367789883996671652
+7d8a6748-8ec6-dca1-4afa-0fcc113dfdc6,2259367328,4896535131191942921
+9e408404-d95b-f65a-3c45-2cc7784fffeb,174605819,17034210128243487045
+670dd664-11f5-6d0c-39f7-ed64014f2fb9,1589570072,18180930255643277273
+c65eb46c-65cc-29ed-c030-358baaa8d2d6,2400729189,11084004245145252074
+b06c11b7-5e6c-6cb1-e838-e6ca1a56f13d,3441162419,11379350816563791594
+9c80ef52-e4b7-bcd5-5531-48ef09ae4fa2,3090160632,5895887910406402648
+cf4d8fe7-1789-a93e-6a00-3c93a31c95ac,912712235,2647259464623624039
+2db1b33e-d3ac-00f5-2a55-81f905b6f288,1750708074,6274797891551264955
+5ff7c0f8-8265-3ee2-65a2-8302f9bb75f7,390713099,18223651267482494890
+a5f3670d-c31a-c94f-4e80-51e614a3065f,2591874428,8781517892358035697
+d4a2252c-3965-d9f8-d6b9-44aed972e512,1242463056,8549851062003835374
+1688a0db-57ae-b32b-9abb-d3037423f0f7,3900885898,10036926465864966261
+fc5f218f-25df-85e0-3ec3-420593067d22,2749308495,10211534782681907947
+d29dc395-8116-2683-f0ff-4768d6c54d4f,3409993986,4069734950948239611
+0ab7fb10-2b65-afae-4a13-d4107ad6d8c7,301266515,380975248361540304
+f4167a54-5f66-405b-2825-6083d1598822,2826453610,2730601000050252487
+3f68bc34-9327-72a7-e971-e148f08d54c4,2958107392,13001572065980138755
+f5fd8ab0-58fc-730a-3344-39cb863a93f0,2007504242,10880216844731398068
+7afd3e57-2ee1-07c7-e881-da2a423c31e7,628173946,15226135534027258524
+da546ee3-d8ac-4514-661a-19e6270dda8c,804590077,8418707074571707668
+786eb23a-252e-18d8-7202-6137b947fba7,308164245,5127542721312377692
+786249cb-8472-eaaa-670c-0682d6874916,3400446376,11448533001622736401
+91997fab-912b-6066-0ff6-d8d06168e931,863349100,2131151327065557
+b76afb15-757d-f58b-fa45-175b56222a48,2910289636,16176787537795911814
+54b66051-4824-37df-d52f-e25a17c3dbd7,2323954920,17914663312959429647
+8062bc12-e64a-4a58-9882-5ae6a59a0c92,3725089453,4484393235859131534
+74e3021a-7298-c709-6af5-ede3aff9d384,4062432799,14959984351470988772
+c00a2872-2ebe-c379-a5f5-5eca619d7aae,924269339,270986788393471511
+0fd07479-6a8c-2a64-f921-f61f9e5e0e00,1843777299,10199644538669415159
+34fc1c14-5828-26ce-a3fd-f97f0ceb5588,1882551127,10677563462875088159
+b93e9140-569e-99b5-d1ab-e63642bed92f,2818033360,17348554832801138446
+d87d6fda-249f-2f29-daed-843656db23a3,1132924708,15223552239552389987
+8b47b85c-a130-8b4d-f81d-3fd1e2997206,2138032858,9290341826498100476
+c09e19a2-0a06-21ae-49e4-2616b09666c7,1431469288,15503208651237813542
+0800cd08-cbc5-18d7-6f46-8f644e569ca6,1430446416,14128377595590921070
+aef62889-50aa-e054-0670-73a0dffe0522,44253937,4062296301698684256
+0968b4f3-0638-d84f-70a3-ad51ede5391c,3978126534,16990101123866993466
+b75957fb-e73c-7e4f-14c0-94eceda71cf1,2055654188,17145531221755553936
+e1533ffc-0f58-d35f-d15e-d0aa5f1881d2,1203518080,16590716389419883900
+f5c7ba37-a68b-5d3c-b3c8-9c3faee3c9e4,1153597361,15068911925478112775
+b424b3f2-98ac-4d3e-f800-45b190dce253,4179964298,14301958475220200710
+bcfa9a2c-555e-16a8-c71e-21e5e82e9c6b,3967329254,6768114030208702040
+e17ae91e-fced-683f-cb16-5bbfb2082317,2973611846,3011173534752326459
+585c8147-a085-5f1f-e370-b785bf40e05c,651648794,8076801947806562176
+27a72da8-c55b-6258-2be4-ee538a3aabb8,554578943,11639001200725126425
+c97fb147-4ff8-1dc9-c373-847b1237ad4f,3743839456,6404502860665112746
+2ff3c3a3-d3b5-372f-a752-406b5fb9dd68,2395783986,17675425777066688627
+197bc4d4-c6ab-2ec8-336e-f2119ae41158,2749894353,10991341972732407687
+83728351-0e01-3ccc-6443-9970a5244c9a,1430409017,17103004893623228614
+f5c65bdb-afb4-e8a7-ae20-77ff25ecaaeb,2715100793,17381544319990551174
+02a072e7-f074-f27a-b6f9-0a2b6caec78f,2048796390,5487946480718604561
+78e02ee1-f999-e195-6148-557dff76a1bc,2603686609,15975827524420156051
+a0683186-1dce-53c0-a33d-e7a15e4110c2,1648701103,17369570603547505448
+a6b327b3-7d3a-e7d9-3181-72c45f088416,1157113489,11381672806599239150
+04bdaf4a-81e3-9442-e5a8-6f04749e6346,3198546219,10892331569978433416
+7adf6661-1349-cd71-bf64-043526e8a539,3860811756,9314109775082838684
+e481c128-3c38-3eb1-d4a9-eaf85161930a,921472214,10420759626114861933
+291f6d94-a0ce-2d5c-8ee7-489ce7580363,2220384278,12117331564028542157
+7dc3abc0-003b-cf7e-fbd7-741aab7e7151,3613733894,10535070094363880171
+a9707145-d38c-3541-a5d0-e93bd75bec23,2337420795,17663028675998438934
+21814b82-4bc5-00fd-ab3a-f1a2d5db9c13,3952384772,7073780138567896365
+f0ccd7d1-b10e-7e43-ee4a-d5bf1f954289,3406679811,14836778882588299645
+fa398952-4ad7-bf82-5e06-333918251084,3901779528,14390706554835809596
+f625c31d-09dc-e545-8965-9f377d7b4e9e,1955383942,2019058084773445371
+bd5453b8-1a46-d8d7-2051-b724d8c2a877,1655904027,7981164289379464327
+a1adcf2b-e6f0-76bb-0279-7c6ebcc75538,970761567,16132186957972073110
+e5a13abe-d7aa-2451-6ef0-d419347a7e7e,184105874,9265790762300590095
+531268a0-a615-ca3b-5d1f-f8c265866f5b,853073179,11587005783695550056
+937ae2c3-7df5-469a-9994-7f1b273addae,2413101801,10487544572323225164
+e3bf38d3-c6d1-49b8-2039-0aa7f233ded9,2025089165,8835476602601236042
+c1200e50-d114-75c9-28e9-982b0456987b,438779187,8075733659184169084
+e58be862-e2ec-b69b-fc18-34001140149e,2527907802,12098282676691947994
+c20d6417-b506-b952-dd46-efa0daf03c47,1005141278,4161328903958141273
+bff49704-566b-b2e2-b3f1-24e90c6d5836,3307064274,914537303429956535
+fb54faa9-2669-cee8-1b4c-cf7c17751ae3,2649023845,4574175550047663823
+926c605c-be44-7435-c6fe-279f9081cd6c,3327005192,10069781855106156127
+97d40ffa-ff83-8259-e327-435a04eae686,4288564412,558573659055232712
+43be2a61-dd5c-80e4-3c5c-2b7939c0777a,1072982044,16510546141413104925
+b79605fd-6d72-3d51-f79c-3b21f3e11353,3502799638,6320116528797994946
+0408eb63-4a37-8e3b-d19b-33090b55ee1a,1785718688,14468573182584822188
+c98195fd-1601-9f8f-e55d-217a1155143f,1572386599,13057616153843225039
+14969e75-07b8-4f73-4d84-847e2794507b,3226291761,2347593195101100486
+fceff34a-8ad3-97d0-5e50-a8bd70b7ddd6,1734735911,13020233996780117644
+7ba6a042-6f87-e0e7-857d-2cc2c35c6ec5,128672648,1062853927678265688
+d8ede6d4-c85c-9082-6ff5-0592602294dd,2407956844,3315039519156462233
+9fa10dba-cba2-179f-e95c-cd0216bedf54,2885468552,11906151225174388161
+dbbce483-1e38-912b-d836-cafa0e3a7030,488578070,2682451519382916367
+70559f25-027c-23ef-5593-67c19347cf7b,3552037335,5732371208508081577
+a2c008cf-936c-9237-c4b9-a030e1723975,1841813386,18135168388920640142
+ae084023-5dce-c163-f41d-f51d93a23012,3406061803,2264098760827758972
+a3d132ee-793d-336d-d13a-c3f92043e6b7,1105804144,15410539075877098996
+fd2c2d70-b473-9220-5704-15fa94daf21b,4209348418,2479282785116642627
+f2582649-48cd-17e1-3c9c-a7d1f03d8b7b,3890196864,3637109027988190193
+c7e16a54-332a-1ff2-3d76-077dc1467e33,738946373,16272349584178712702
+8e5bfdfe-f71d-1c1b-2ab9-735d4548601c,881881121,8161060697329697217
+91a4bed1-762b-cf50-c067-d08808b095c2,686513066,34634252927330575
+36c46335-a07c-b35b-682c-cea812725dc9,1949423828,13863101975608794106
+28f0589d-9c95-c630-07c8-3c6ded5bf118,3584838193,5882235335346219227
+869a3292-db25-9004-efe3-631dfe2a57be,980197710,3830677723216689002
+b13ab00b-101f-4954-a256-3242dbd71704,761997815,1493899185119021442
+73e69449-b6f7-fd0f-e4d0-7cc7917791fe,1918557331,17421596339098183780
+8716176d-3680-2431-59c1-eb19a0441f8e,323319694,10070396289624413802
+d2fc3a6c-703f-08ae-a016-8a858fd989d9,2208082310,15184437954388645655
+4dcc3203-693f-ba64-64c5-bae1a8b228c4,981641135,5513520858828223388
+c1f78915-85b4-a1d0-95d2-7ec04e33001f,1958705649,17002284274348328071
+b030e4d6-9e3a-0132-338d-ab84ab850254,1176144237,16390353477386039635
+98dce5e8-8f5c-0402-ead8-aa57944cdb49,1462812553,18060355764790643864
+66e91971-abd1-b7f1-0338-496bf05939c8,2693694428,12477902963344061744
+fb6f8ce3-27e6-c8da-48ed-38f786ebd75d,2068953353,17522152430422891704
+2abbddb9-bdcb-2958-285a-22c8ccdbeed5,1234419570,8621363964084328134
+b8dd515a-b50e-d2a1-9771-c6596de61598,2957649956,3969550200942734893
+37d4fb7a-df17-3e87-214e-95cf5c282b07,1056845756,10908461907154973791
+a32cf615-1d4a-1de7-5668-26c28e321044,2948534204,3788277505780079897
+38f451aa-ed56-3203-ce36-410db318bdcc,1289389774,7388812344322929019
+8482770d-2f7a-e7ac-0acd-339063332a99,488409676,2349037156610628634
+9bbdc530-b2fc-c37f-12a4-6047858de525,2107129339,15766927798567557768
+43ffae69-0437-8a57-ad51-153a6cc21e7f,3021063927,7050157929278673883
+7762cdc1-f475-8ddc-6286-4c5175f403f4,675304783,6450791794570581028
+2230559a-a04c-0d79-0ab1-1eef70dc1b63,3275530592,4246890876854499359
+6161fd49-497d-27d4-7c3e-c76c6b4df799,2508187423,5799286238925688298
+ee6b632f-e761-765b-5106-37158e05ace6,2280950917,6321086138401552940
+b01d62c5-d33a-e304-0d59-f28388263c0e,3668901045,14509640600574264247
+d1e82135-8666-3b24-73a4-12ed8dcc079a,874390310,10065434378229174458
+8b7f1f51-c69c-1f27-e9e3-44699b81acd2,911666320,10982617254794717946
+66131303-8d7c-c2a5-3563-b4c537115e18,2975527719,16657377433312646386
+9752a9c4-ed87-3517-0c59-a4e56e0ca827,932206300,16966996921922399641
+f65d5cbb-9734-6aed-d572-77befc7ec964,3243059468,16769032862517296387
+134d3521-fd6b-2acc-a205-cd34a70bc204,883546296,18194843512497301627
+902a61ee-c8da-4bb5-8fea-6bfbcf329a47,1651200687,15705644804214092016
+59869c56-11fb-3ca8-95a1-f8b43013b6d9,1486146713,17990311266558570920
+3aab30d8-762a-0d76-cca8-03f933a3ae38,2937765548,6600878183081070542
+77207246-57dd-84e6-a2d3-61e7b68e2f93,851966270,8331455939975927764
+6679dfad-672b-f81f-8121-faf8d088c9ef,3278751423,17799365986671077451
+26e14176-c653-de40-63de-1c99cf1b641b,737984860,5624708615749372710
+a7df8e7f-de2f-0633-75dd-aa66844cef3b,281540269,5220905379993352010
+21dffebc-1f0f-1cf4-c04a-12462d46d409,229109949,3349017471665826832
+fa4c95a0-e6a1-008f-1c2c-ca3e47ac1105,3204589208,10596454771614344278
+cb56391c-eae6-1405-922f-ef0ff507c51b,2809604209,1970700224276599236
+1be0e064-bb16-0a1b-d99f-ca9f0a3a315f,1343833833,994897267753733438
+858eb81f-f67c-155b-f77e-658d0c924164,844589873,3252868516494211018
+74ce7a30-d904-f009-13a7-400080da53e1,3919592635,1192138577934224321
+c253be0f-5e15-3bfb-f9d4-747f52b58243,2500036152,16447205343305709180
+99502fdf-8f29-1942-3a6b-aaefd0f7dac1,362645806,14826852645590806621
+f1236077-4042-5452-10b1-9ae89e91ec8b,2374647738,17651210894997191562
+b7105b4d-0544-9f4e-f516-0fd1d2446700,3713114991,17574996104946788773
+628d7d43-248a-0c3e-b637-7a7147244bb7,4093294040,6320884153953743564
+ff779302-351c-3f72-4659-437b742528f7,3443432575,11410688219062499940
+71514aa1-57de-c87b-0064-ed99c6ce3f8b,2343556615,7079931103806397448
+3b92e041-d678-e61b-66e5-43fc49517aca,1924708381,5853490378489174965
+ad791c2d-b393-cd2d-b451-aca8296a2da0,3647927850,13324963877853949068
+7a8c6477-391a-3234-7320-8352e626d55e,1250398345,1803745425373247148
+d8a75912-3632-27e8-9447-39eae37901cd,166111763,3029964011991393843
+ec84acb0-a879-0bca-5ac1-629907e72ce7,675722764,14418559439388146014
+e928c069-fd5d-e210-bdef-52306aa1affd,2406968088,16112404473975334460
+146bfe79-b466-a834-ba37-70a5d3d142fb,3407047696,714493849939451159
+e382bfa0-a275-335b-22c8-7322efb3cc07,359860669,4351592892653248149
+d3447766-c949-3485-b445-38919ba7c60c,3179184794,17066942279253311912
+ad84e35e-b76e-d718-3416-57d16bc03de8,580649095,8466903737539040270
+fdbfd057-c807-d1f5-f334-ab469c481073,2456947468,16165039711958555920
+76e41cdd-7760-d0b0-3d01-6eab629fa540,337716802,1442387056219657274
+dc563886-1052-f518-22d2-7f27a813fbeb,536692970,9540387133499808958
+ce1a142b-caf0-1439-0de5-d1bb5bebb71b,697108660,13525311540079085679
+86a2a912-a720-88af-8deb-672e1a30d8df,1003497439,8277092450346786930
+76e93808-1683-cdf0-2eac-2e456a8009fe,2532135032,8178221076546821
+3e00fe1f-7e72-a5a6-7d60-f7085a0e3b47,767854621,8059114733075738350
+d98ac3e5-d89a-8bb0-35c2-35da8f1b437a,3371214223,17315685647439809478
+66c5840f-501a-f1b2-3d19-e10639c0f649,3267139570,1871257947388200168
+5b545cd9-1cbc-b742-bab0-19204d3673c1,2900978574,10985784363506602863
+e1a78958-509b-f3d9-da0c-346e17a48e29,3902861591,12504783243611110875
+4b288575-d14d-89fc-0d7e-cf554a7b328b,3766807941,5450138439896932067
+4b47ddfa-04ee-f484-8a54-0f89e41bb17a,2182948217,8463458161931813226
+98321440-110b-1186-279c-ffbdf06fab2c,1743540863,3177657673615956486
+5190e0e1-e307-114d-7768-326f8fc2d97f,674336607,4829854933316137696
+b6c8a239-6bd6-1b8b-24bb-1acc502e16a0,4128265905,13302140652173081024
+dcd8b44c-895e-c5e3-e6d6-f340a877ac33,632457441,3791098326691041964
+a75b3803-c650-6494-406f-dac3cddbab8d,1403407446,13177171596619348280
+7e6b4e3b-f2e4-3f57-2cf0-59e47995a80d,884493429,10477496730757448393
+be2683ed-9535-52dd-c20a-2c242a28ca33,175365593,2413499033140855970
+446894eb-d06c-4ab3-d5a0-28d243c1c330,2405232086,3905684163561190405
+1ab123b2-498a-7e7b-9616-0dd934b27ff5,2080091677,2447019990460462434
+63d360e7-af36-3ac5-a7a9-d49df3cb005b,1031893066,17100542697022879729
+1b051a7a-117a-c2a7-4b0f-6aac412b474e,121164695,15929349782391612835
+da5433b2-a0d9-e7f7-8855-2ca2b507a12b,3070189421,14079779767670693063
+3e18c5f3-d516-99a5-b65c-405a860dd137,1037558066,17757952244511757857
+766e63c3-8134-cb4a-9f7d-44b8e2fd38ea,1500777055,7047673188548972152
+27713ae0-f629-0e14-994f-a882c766e838,251906732,185988094168990387
+7a5adf77-b48f-2b1f-8b98-554f24883b31,2323063350,3268816610095798649
+483b112c-8c58-e656-f0f9-d47d610ba3ee,103122234,13156026522208966434
+09eb3dee-f4b2-c324-2144-6bd0ac3dbd2c,56125430,388519829526280663
+df365222-ee45-0282-3a1c-34eae5f42923,97936248,1781842722782853326
+4682a2ae-f4a7-f1ae-ebb7-3e0686b7901b,1756106536,4050908928860123065
+489b835f-a828-f0bb-e489-b74308c41569,1201814491,8899259423121709071
+ef3fc740-fa8d-9a12-ccaf-1c1f128f532a,3359125772,8926253804235242293
+890b4e84-eb6c-29e6-de1e-981d2c4646c6,2851019786,4721737925492015395
+206ec0c2-2240-600e-bec7-dcebe671283e,2575570915,3006299506937692555
+221f3a52-f27c-ab49-91be-464278141b9e,2006658211,6616779150522404433
+941beee9-696f-0ce1-6cda-58d3f5262498,2817004941,6615770307151939204
+6951a401-dc45-6399-c253-f34234967c91,3996351337,16622514862496405326
+80036c6a-6c4a-e282-e300-362c7e71993d,2210783989,15319558265499014968
+8a40bc34-5ab4-e39e-e003-2f1dc144112c,2186973953,13766984849922271151
+c4bf9cb3-75b9-c8a9-dea1-a83d963c6510,3977562656,7282815328677299637
+640de7bc-5688-0376-7ffd-e3cd0ae4e8d9,1844063405,7192754395324306027
+c27b1f89-758b-7fb5-221b-74d374c2e330,2335401394,15002257790772611440
+bd55e5e1-1d62-603b-a6a9-5425a2cd26aa,4178106,2665684265082395785
+5b05bc92-9b8a-cbc1-1817-2075e6f7f659,1113248230,6156107971212519235
+5fa17678-f36a-5bb1-0bb8-511d59c4a5fb,3437828044,16854879693882504297
+494f4731-7beb-753e-6791-3a0a301fd563,862319446,16749943533853191077
+b791f0a7-338b-3f13-f3ac-211050e33434,1999590259,15564624322197003850
+f27e1df1-3ce3-0369-f89e-5cc97392170d,1151988797,2633776628324028290
+e087c25a-27e3-aad3-f3bc-679b0b0ae5d0,2967348273,10110551476835554887
+9758ea05-6ffe-4020-efc2-34f2829201a5,818879563,4182265724002040171
+e377820d-323d-feb5-3626-5188e2a52d34,1488993904,7075054314600242848
+ac90cc77-842a-350b-5407-10cf2f8ee1f4,2248739919,12639553168209449294
+ff0091ce-5f3a-5c58-4f9f-5d6b07da507d,1286034948,5475234394699023429
+980d4c7d-c3aa-2ed4-fefb-fab19b74a275,3172750067,1013827176713829243
+6c695f36-a72f-b638-c014-ddbb8b6926f2,3306311961,6763925672122915074
+17dafa70-8f9f-db12-5232-84ae7df3bfb6,1842894522,16347206811316844696
+8a3eb171-2c68-7e29-c99a-182e2f151a2f,949032415,11324308861629828254
+672c9042-344e-a5a5-a11a-733292f3d44c,2219092605,4655892798141245260
+05a8565c-5dd8-e13c-156a-633948c990aa,725031174,5013393330926995778
+bb3edc13-cf26-d9f6-b837-e12fcb17583d,3039131431,981105338845630902
+96402676-e7b8-c494-0399-375670bbd492,561924900,862442792688732214
+6bee263c-ad0c-bc9b-0031-321082f71733,458926828,5174004952921338569
+aec1693e-2b01-b881-2165-da929bc68af7,3376902533,6316936668948837378
+44a5e952-be44-32d7-b480-95efb5306f67,4220606071,14518573545288199818
+f03d8187-3627-a2ec-b46e-c68d3aaf0adf,1245583423,17021054044766372648
+af90519c-1e79-9037-f05f-7bd2b7646da0,63118444,11469654865473331275
+8d488f3f-ce78-0ecb-715d-2272447ee74e,4022753579,218215524581428966
+83b2de25-f1f4-981b-16c0-be7b30d0c7e5,4144858031,15282438776030675045
+5d9f34e6-afa5-0e62-46b7-c0993be0681e,1584489822,12100735305629441730
+19ebdb99-2a9f-984e-1313-ad4a0a1ff108,2831964303,16465123918703315817
+ebbbc731-f657-7396-5d4f-acf29a1a4230,609370747,10151814283121930355
+f9097432-35fd-c416-59e9-2c0c8fb51fb5,2764676596,14349302259341654822
+4da39dd4-6584-bab5-849b-2ca80f49ca5f,153812998,12234596781241913787
+d967f616-82e5-f805-fe2c-4e0553f78505,4073313364,11473486566571196449
+5964d8f3-825b-b0ca-5337-bfe1c9324575,3372174808,5313708679414528662
+f8e946a0-d7a4-bf4f-20e1-0ed17b5c4c62,1400831029,3836168446218920075
+ad8a4cd9-b954-b9bd-8d30-fbda70a193a0,2013371498,16592549539366954910
+ca44ba3a-ef97-0de9-263a-fe7eb05609a6,4218479698,7490922512685502105
+87a59722-da9b-183c-2b66-d939bad9f73f,542129941,9251195864022401707
+5bf2ed54-c54e-c868-421a-9c80eb82764a,3161515637,7565871955295698159
+9afde2f7-fb39-08a0-2cdb-81f96178bd25,2409346353,8881334652861960183
+0aa44163-c556-faee-e215-3556fe8c337b,1263657916,4287184866759830739
+fa4603be-8a68-9d99-6988-3482d478dc89,1330483806,4751768470575542621
+7a33d1ce-d411-6cfb-fdfb-87293cd5ab8f,3839189901,10888485653558270984
+ea7cfb90-92b5-d2a8-f74b-22f1482f5bae,547236042,17739653964740942757
+11f1e4ae-a2f8-f789-1a43-32a64d08b88c,316922776,4470003284328303208
+f6d8365e-fae9-96ce-cb45-a4afab1369ec,711055726,14061444869753051890
+cc3cfb8d-e1cf-586e-08af-62b30c954737,1658862172,5400919455590470932
+0eedee63-c413-4916-1d8d-75d3b8fd29af,2607126763,10399214741612140033
+0682fb0e-8649-6ad4-fb3d-fabcebf1f79b,3943261605,13204918761494432314
+e82d583f-faa5-6326-ef49-905c4c3535db,3803206943,13308694060318363612
+476512ac-441a-4bad-aa7f-70e5fc559cc2,3580272279,12268933962433023248
+8fc783db-e89b-ec9c-d60d-922702d5c6ff,1164803693,13449749471395156517
+ff19c80e-15c8-2b10-591f-82e76c26e059,4047665916,10414725782154006733
+5c5ade66-89a5-78f4-98c5-c942fab981a4,2393831302,16519468778475326968
+02021821-cfdb-9b9e-eda3-5ae0a3306dd9,1209596180,13592559367720754226
+92ee9abe-b478-6a44-581c-1b9a51290931,3232453731,8875244037338902194
+706872bd-8b1c-e072-abd0-905e32423efd,257822317,13875680149756427413
+bcb96a68-5dba-664b-18b5-eccb7c5d919c,1834662077,12315408344611864089
+2bd38320-7622-860a-6cfa-65a9293c495a,2466154134,4740263504244598140
+c7547f56-fe88-4dcd-0074-4f1c71692212,786257404,5620855509916114499
+c952afc5-3a6e-771b-8dac-c84fccb65987,3687740488,3979603968858215360
+128290b2-105e-4e25-2f4f-c8dbe240576f,1436439461,15042409906178068786
+925b7d89-f413-8fa4-b677-ff510726e164,1780975230,7439947125588813375
+aab9d6a9-143a-c306-8df4-7a8002c3feeb,797403298,5555670999017988273
+4426e5cf-c2c0-e978-ad60-ed3c5ff99c25,2890726916,16405328195373803915
+b2787edd-f814-51c5-fd80-50807b6c40ec,168792967,15211275839546230117
+e05b196d-eef7-88a9-0b72-576547e42d78,2719915637,18238894526554044847
+4096d6d5-03f0-75ce-ed09-c78dfd3dacb4,499579286,5964289279339727025
+b93f763a-373e-67f3-48b3-eb0eb8cc9e8f,1078738409,16310775890415744634
+49f2831a-b4db-9371-a6ca-da2cad6adac3,3933982632,15207203450500305910
+605c012f-9fe7-2057-6172-780085611311,1927584324,1920554862541894861
+f0a0e5f2-e8bb-9d35-333c-113b28c90fdf,3855343276,14546058295254619013
+37a1d8eb-f2b2-0d96-a582-020edd160a52,3582454509,4373420679238667244
+8c2fdbbc-a61a-9e7b-9118-6351f302e939,2408002063,3637671903162921873
+71b75850-7411-f8f3-fde9-e20a81b093ae,1758331245,9934947208555519214
+979a7c3c-9914-713e-a4c4-0e5e94d2efd2,2922048815,2158950082256115519
+bb39f2c3-dcad-49f3-ee11-2b0ea3f7a823,818658029,17583287834057369796
+bbd2bebc-3b4f-3841-d320-9f0bed031e87,4162390430,17594979860179840453
+1d9bde73-dfd2-cbce-c017-76334347e8f5,311405617,3395078811094074248
+a4dabaf2-31e8-049c-9746-77568970831b,815315972,2882167984427829350
+fdaa151b-2c5e-24f6-6de4-d98660709a6e,4230024745,1404718079494333659
+c6b3d64d-6bd5-7e94-ad25-2330325dff9a,2942668276,12391997293194055656
+5e132c5f-7504-517e-b760-9ceefb750baa,195828999,4871110640698661737
+ab4d1905-950b-2278-2994-d87458e24b05,472197329,18047402034807956404
+97e25e6a-40c5-13ec-5431-fe774a7e5830,3356165922,6054093722467856767
+4de390d7-2630-31eb-4fb1-80502a4e0e33,2651358234,5450245560033861128
+d198a2f1-94a4-24f0-fdb0-849157359308,1405675653,10962728521766623928
+67de45b2-6d4b-9005-8dec-f80e6992e024,3791401563,4895098844994304812
+8ec87d82-e8a6-39a8-1be4-98cb6c2c359c,2711908671,4017176318336394812
+b77f4850-cfe3-d059-ab5e-b7269879897c,3509084541,14909978123125387523
+62b72191-23c0-44f5-9926-ff9ca3684010,787654856,7027125555963509619
+4de6b3cd-ba87-f662-8ee6-d4872ab46b27,797695661,6928577941701319686
+1ce70bb0-3a91-9675-4ee5-ae1be2c9d2c0,2138653212,4376182364751770547
+5b3c6e32-0b71-8cfc-aa95-6379b4312e65,3924632908,2756094980117281310
+962c8200-058f-15ea-9c41-e70e399988f0,1084908390,11298779012530882648
+819bbb6b-6495-c025-50d1-bf81820648ba,856514125,9618471237197230691
+56431367-ce7c-2684-671e-7e8601f916bf,2693604197,2974930461939553747
+f1b9a17a-cbdd-0a23-b943-425aa43b5341,1405305010,4413068604109412806
+4444c8de-0b87-4e55-34c7-c12d97d1715c,3275219771,5186211061800086556
+1ce72000-a592-b301-9149-e5485df50b9b,3482963765,7086382154141620808
+141b9afe-8487-008e-3e34-f921b3e5a5e4,493352293,10205667973086802363
+a8ca8ef3-cfe5-7031-cb3d-9033c289b108,4206045795,12678775274351873419
+e465f9ef-92c7-6d70-a66d-08a0bd8f82aa,2816096664,398258885691017125
+8bd7804b-5563-45d2-3691-edefedb065d7,3869029912,13054704726729979057
+c4c1839b-537a-af92-c8bb-4a0cd3884106,1679000014,601623168657641066
+57497d58-84f6-666d-f9f8-6f58ce4fc23c,3084846090,17737596771841256656
+6e32e841-c620-d545-7fc8-e1fb6bf08a40,2582415790,283811679705534882
+efac2367-ca04-e038-47b3-60e84f5718ca,3706630406,15649189443966749054
+eca5c4e6-c18c-1637-a29b-05dc246b2c3e,3970487230,14298121082882690075
+adf86385-9098-aed9-ab58-bd8cf4d2b38f,2007894676,1675547798930179440
+3fdd3bbe-0d1b-951c-bd24-a9e871bead9f,4150485594,9446363291718607700
+aa60ce77-9e43-889e-6431-bd55861044e8,737229865,2875417001483714180
+37d35383-6236-0b66-55ce-ccbf83d85e51,4039387478,2367102812581653026
+508e99e3-cf51-5db6-c758-76b553f29cce,4234119439,11029614850839626883
+ccf32a98-b5b2-c64e-6194-d10fee65405a,930672037,16185556908032095314
+8557c3ff-7b49-c50d-9ac1-a96b181e26d5,1275042481,10124616092670906057
+f4e39cf2-b5ad-a50f-5b10-495187fb5cf3,2243252140,8317005483492610191
+359495db-cb42-be4e-2e07-f8428f7bad2a,1579515798,14200445053558783087
+73955aa6-7d44-8b41-6964-aaddbde3abc9,729206942,8849163669998145271
+9ec8cedb-f5f6-20c4-5313-b5f12f5f7d14,3296687115,11660311831800021956
+10e7f32d-023a-076e-86ed-45b434d26ee9,1406922274,13291366886459709963
+011d6e1c-f7b1-6abc-487e-e33b81f35ad5,2970389725,11946656545180886047
+30a33468-129c-010f-1589-9d688bb4290c,438406798,14516537275487023069
+25078d7f-495a-9f40-8b53-45c43203fe5a,965257845,18032892347659952175
+49256649-ae2c-cb14-79b8-310cace581bf,3570813267,9136446425814036695
+5e25e51e-ac28-71b9-5c03-36a2cd1e8872,675250304,17410534344967004695
+63880aea-b371-7f0f-e4e5-b1da013f7e82,3549434730,8048734239212283553
+cf90fdc7-8466-8978-ec00-d83ca729c20f,1453640669,17317247309640537760
+f34d293b-f76c-1cbb-983d-2fcd33b4c0cd,3975529884,11095613067725538970
+6047f5c2-009c-0592-146d-bb67a9ba5d6f,2250587819,12266397769575496080
+95c0a84a-a736-8a67-ae1e-0ba73941421a,202690029,10389014285541258014
+26c528e6-b7d4-1898-517c-81608b6bc3ca,1015281960,12615295938744065847
+962db7ca-a902-7d93-8644-1f963f4d0f86,4099044268,11461243754931625519
+3999d071-6612-7c84-ad28-d492676f173b,2293393079,15348631096511061243
+6e45ea8d-d126-3081-3603-860e6060d4ec,3637895361,606847595312217325
+8045974d-2b93-cddb-f081-54d37ca4a33a,588136908,6189465533266727588
+870b1a04-af18-f8a7-8f5e-53a87c8f35f2,1061681763,17769120546579631732
+a6db9c1e-8f8f-51b6-21ef-8249a6bd4c2d,1918375688,13557310118065002878
+210dc73b-9d4c-5f3f-bb3e-cdab050848d9,878995347,8849603211440105153
+745ffe90-59a9-3878-bee2-a9c2893921de,3169275819,10155724591441830542
+5143a73c-f389-a7b6-1af7-ce19d9a20194,2024189178,323677547206090396
+15299d8d-0280-b609-1942-b6cc5ae5285d,1193015831,13809028895549512531
+459f7afe-5b5f-c484-8c87-fa591a6e70e3,2502598559,2576737603255105006
+441476d9-8903-2e4e-d917-98541deacd49,1852820983,8832909369630178710
+b8d5a44b-4026-936f-996a-9ed2ac886d37,2032538796,2669922410644117356
+f0e18eb1-ecf9-abc0-ae08-75b6bb25439f,3984738230,9648398688421032202
+54feb2c3-bab5-fc5c-7c37-8e3e94cc64ff,2527942790,14989884664472994931
+c87b66d7-02d7-b8d9-270f-8db2401e02a9,2954016207,10967040333223221012
+4c6ebd63-512a-c690-ce5a-1f81edfdeab8,3223279926,7363574210416891099
+3921d76c-f30b-af30-64ec-9335ae6c9c17,1068871102,16623516287252199926
+5b7496e0-c0e4-161a-9e10-82cb3a7cddd8,3760840226,855529699636725554
+7ee5c42a-4db8-b4f4-8741-cc38c65cd239,3537067930,15468399423826713149
+583dacfd-6b68-6a5a-69b2-1a8abc972cc6,2345887150,12371543607671524774
+4159c49b-93d3-b015-1bce-c4a8fabe7036,325840880,11200088513594483544
+30ed7b1e-f630-d386-c2af-112c3f5cb684,3661181928,13236718511720469182
+18ada502-d638-e5e2-dd41-ea135cad4b74,3333792491,13714553066250917340
+48b0bd7f-e906-8518-e8e7-117db9c29873,3045375742,16337627556225769098
+04f5c040-2526-1252-174c-d4d794f6d468,4030562745,6971824857146954421
+094478ac-554c-4482-d467-3bf99db74e34,925356567,4345278779645579564
+33a507c8-e881-67dd-a42a-8675b2db2751,3152985107,8380653723148387115
+3a2f781d-9b7b-7aef-9ca9-4c873b360101,1994290249,167416820950755632
+e9d78adf-353e-8257-31be-e6ed234e8b0d,3129555298,5275937305492085101
+f5aaddf6-fed1-706c-7866-68e8079e2b07,2078445527,13361558228041033358
+38ae8090-2da4-e692-9b44-b8abdfe4c513,3968297423,15012733886259589420
+4b4b96e3-0a33-c531-a4b3-a45fbf739f69,1109666433,15262076924390933494
+a0514ba4-b53c-e88a-63ed-2fbf1174658d,2828981747,18064951128763424544
+e1224056-5e83-6003-3cee-9acaa4f3a004,1610473165,11796872012394812942
+c7c31f19-56eb-82f4-512a-fcf5ba3038fa,1325181794,9577816549939552198
+70909958-d5f5-b452-da79-0b61a06eed7f,1608535688,9887007139286480482
+ae4f7209-2cda-4d13-7510-d0978f09871c,919567704,3687149743566783886
+ff412b51-f268-9e88-0dc7-846af6e14aef,712433915,15925111369588151883
+db1b414e-5a63-6218-0b44-3e82310bd776,3258913642,1968852579895495154
+12d6f28d-74d8-d3f6-c213-8810610d5033,622360270,12092389852201419769
+2cf24e24-8b76-d549-a505-3eddb56fb039,2138689916,2812536966806803308
+2c6ab9bf-67c3-cd20-7092-44047c3bdcf9,951271965,6712453994357667772
+65464cd0-fc82-80e1-caed-beb0d509628e,1066144004,9226271169303725545
+e36200f1-b2d5-8d9b-7735-ecd9acce3b76,171834384,5742019667474448488
+ac2b08b1-679c-1ca1-8e3b-6830a07d11fa,2157109121,6660254145246941707
+f450f25a-c24f-da30-3bd2-fb985b7c5c9c,422293512,4074342779043471416
+501e4ae0-5753-f967-e7d2-13edf92afc23,1936015677,8947526322518630765
+2cdffebd-aa25-ebe1-4c79-8ef63ba2da0c,2147568977,13079066609097950176
+a52040b2-cd08-be3e-7eea-7f1072e1a9b6,3228604800,10391533045493960003
+ae0e3e7f-0953-eb2d-d552-e082af8d77ca,129059199,3312981077506951599
+fd5c163d-83a6-effc-28a8-d1bbef28e0f7,1030423948,16767787185475501440
+fbeab14c-49a6-1d09-e515-96be870db56a,3280167453,10788506178435584865
+d5e4d636-6141-e377-0c3e-1005a2be10d4,1478061949,8729385235193917446
+773496e2-9797-6d2d-7b2b-ab6e0adcd4c2,3416568104,7143036259600792317
+9d8e58da-5358-3bfa-3d34-d7fb88f008b9,361072396,5607947716756160695
+c65b9509-62f9-b8fe-717c-95d31618ebe0,448324575,11582783230813286199
+537ed5de-a7ad-2699-e74e-e0e0020be355,1335692445,7844509525135491002
+26b53664-dcb3-a6e7-d409-c53549a93a41,3830384341,13634110017909792468
+3f3ff45d-cacb-8e01-ce91-d6f836280ceb,1985577125,11934928130550451040
+f91d68d3-ec55-d922-a1c6-bb55cc2ef39d,1042460614,14232849647568911888
+afae279d-c3b3-982d-90ec-42914b6a5745,3973681801,9553212469432359316
+b3397bc1-2326-88da-18b2-cc3706048b7e,3045355353,14543428640907195913
+9174480c-2667-bd42-4c8b-a01fab29eeb0,3086788584,16024136680142462915
+73f0a288-cd18-a1e9-9235-7149035e55d3,1451008749,14365359863967726782
+ac1f269e-95cf-ca34-4dd8-106f074cbf51,2009157808,13375323530507770116
+3eb5f4e6-a0ca-a942-76c8-0d53288cd984,2237439778,2627583078310406018
+ae809983-9f4b-786e-bd74-bec0ff7df2b1,3050561201,15911172668095309451
+9b0186fc-3471-aa61-16ca-502ea4452001,3903142321,341040216571597949
+5f32a5d4-e839-6e8d-a7be-54812afd78e7,3229884444,13838020162906738015
+90e0233e-05d1-d069-fda2-cba32803fcd1,1683960429,2581310627614238997
+cb098a96-0ef9-ae87-ba62-a66921d8ea61,3669861165,13682957521882365350
+4b8dc46b-8f41-1a30-8cb3-a209405efeef,1161962458,12213957450630082509
+3606b74f-78d5-9e73-5a56-c1369e274125,3237029552,17928451190380212589
+bb778d48-4aed-2890-5dfb-a12ef8a05a77,2762289801,14203967334028385533
+566bd3f1-fd65-9790-3e58-b98e3391b3c9,277424604,9920889043011715971
+c4196a49-556a-ed7c-68ce-436e63c1f5fd,1915947533,14487041321799665897
+a8b71c77-75f8-f637-85eb-2088670a51b0,60910700,5099400399435039493
+3ac40693-458b-be15-9279-93593f3ce12f,3469746827,13597629243908121647
+73635cd6-4414-4ade-22a2-11a708191c31,1934615517,12075122960588085046
+3b8eda31-2d87-75e2-eade-c729d6867db4,1181727347,11492591985409796366
+31fc20a8-aef1-c524-1724-4a4561f8252d,300027573,11210418873977926891
+7610c7a0-45cb-c935-4df2-5d7bb52e97c6,248053218,15653616571600141261
+3b06b79b-6b46-3328-b57f-a7cf351aedcb,481106101,4625740513946507069
+9190436c-1795-fdf7-456a-48074d042725,1312507783,3467779954014647723
+d816b03b-894d-75fb-a19c-ae1aabc6bf6f,431973855,13520114156334501492
+3f802248-f5cc-35f5-f18b-7f450917fb03,3866341424,11144720632598680902
+8472988c-5f02-4258-6a2e-61071273ac84,108374853,10965234013087657227
+485e7072-e21f-5053-7f21-4a91a95f0350,3601568475,13351208226967819248
+fd2d9618-bdfd-0b85-8f46-d97ef5e4757f,523461541,8112303244247908025
+53c36e1f-530b-9c4d-1da9-e82eb19bbd03,311437555,14000677082160652539
+2bdc790e-a0ab-c394-122e-e11627c569a1,3722607062,11232155744821045575
+adc01c80-2bdc-fb2e-19e3-8a41c5cfb2d6,714108303,6852411986763799625
+e82eb0a8-e16d-4b6f-f210-0bce6ee989df,640885397,1210212413435508836
+f29c77a6-4921-be19-c94e-8f841ccd6346,389182810,3651365035251534155
+9e5e557e-3f46-e3a8-094e-b3f5f8547450,4176228088,15757504965054197367
+ebc9c6ac-ba28-fbac-e025-46b3e881be82,3426575266,15600980281447588421
+cf6ee493-ba64-9fb4-9d0b-1e39d0f21fb8,298008831,10571468794359786250
+4c835547-6f9e-4920-a5a3-c9c8ab0a4a24,3845603599,4354722989174200876
+4bd8807e-7eab-e2ff-58f2-1b2491b9c0d0,85702409,9530972296399529236
+14677f5c-a62d-9cab-1989-ac956bed5a12,3060716429,17009265311138396646
+46db8c05-b7af-f765-7488-7ee5fa966e75,52411075,3576734600035460958
+d8bef10f-4797-993f-722c-da9d96d0d869,249074191,9364040970288669797
+73186ebe-b55b-e1af-570e-28a0ac72d5b4,1294336855,13671540473704677282
+8978eaea-2394-9da2-2250-b520a2e473a3,2731005102,957108407560398978
+2ec83c7d-3e4d-0cd8-cd0d-b21333a5df9d,1945817578,7859925620973401455
+755899fa-1511-1fd5-ee8f-131f7dfc02a6,2217595868,13557574164462164010
+f660f01e-85ff-585c-8e20-9d3acb6f3f76,375003321,11586441833202361883
+301b6e37-4703-5329-02be-c72ffa25dbae,2237235203,16538469039512801531
+17f1c0e3-d336-95c1-fe72-361070a73c0b,2844380529,18357292615706690827
+8d608a62-97e1-85d7-dc35-21b00042a64f,3511850367,1803271510164798337
+4ad1ae19-2870-467e-77b7-20bbf65a7fb1,388388971,12768009991191923538
+4a4e7710-9238-3dec-6af2-f113a1f775b0,13819375,4688678230569599225
+282e9c15-0830-403a-b896-2e8bb2366ee7,2827805563,4157096152484918886
+e9e09ea0-2f87-95c4-bc3e-6574f249307e,1647575957,3218271292583907801
+5641730d-3e69-ae72-8274-cfdcad4cccee,2510434468,6818207916532260645
+966ba069-e2d2-e1a4-8c15-6033b332ee3f,3668616122,17690013931205360986
+36d60a1a-01f7-14c8-5e76-4dfaec7c24eb,479703428,5069583856580082433
+ab522fbf-72a5-6c1f-229a-e9da6016d68b,1318308473,449728376312197404
+a9d35987-b819-77f5-6449-9e63c72a414a,1195903809,3980481215251671128
+e9ad1006-8f60-9396-521c-14a747deef5b,4226419568,15723370760584814060
+3dbf4193-f92a-650b-1e37-7f083d72fea1,629974529,6452287658656344748
+c2c63a72-53db-cde4-c8e4-8e53687de899,3136519316,5800268874662685559
+0b55e902-3f6e-0b77-20c7-0401eb84aa5c,4147827720,5595293841111461579
+a79cff99-8fef-3f12-7bcc-c19a5cc8e076,3943107484,1469364852183304819
+35b6835f-8145-66b6-5b78-f4305bf1097f,1629027049,16314158422465230147
+2b2f62df-d0ca-4417-b1c9-71ee7b16550b,292484870,15429967345982791235
+6181fe85-55d4-86a8-7baf-19035d89edfa,847812842,463678549627314983
+0c7a0f5e-7e95-a24c-22b0-cc03940be926,4227896130,6678978866962685381
+0dacb4f9-d5ef-806a-1e30-81a898825216,2816519800,9490585645697948113
+b8105e25-c011-4493-6b80-39fb17805fc6,1429303736,2323578421063159186
+27a1a730-e58e-d2b0-e60d-a886ccebcb1c,4038536736,5383533180898757682
+07e47ae3-730a-156f-54e6-31a486527051,3547225243,5305070459136124251
+b98751f2-d296-e296-ea7e-55f86e981233,3842416253,9038196745224250595
+424d8500-2fd3-5bf9-b94c-c874648e8ec0,1922036556,6342211276065104359
+d3d7ae77-7096-2575-540a-7a212a704d86,470604500,96626782321650502
+7a59d128-4421-5ff4-0a0a-52efcf318cfd,694281675,17109900806648771385
+5adbe1d2-1410-a120-bbe9-8adb18cadbd3,2176900199,11263120291848695772
+68a65f30-36f5-dfd3-f1a4-6116df479a90,2710312779,4118495418524458437
+5d7240f7-0e5d-b783-c29d-4995fecffa88,3515382143,12665247416300091748
+7ec49012-1083-23d7-7193-583d8886be00,4164020093,14812284224662865751
+3aff61d3-84dc-8ae1-f646-2d1bf75ac3c8,1930871990,3980014631353859373
+65524e25-b42d-2094-4efc-cbc1ee862a64,2932951800,1705212125851261219
+24f74cc5-0b46-b596-88f8-690ab605ce38,3974167270,15786977986428770174
+e4affd05-44f6-9ed1-49b8-87ac05cd5a61,2771366359,8444959390958961098
+1dc78c5e-b0fe-eebb-d916-0870733011c2,3946660118,11092376151552410899
+85c39971-fbc3-832f-eeb0-f10d47320f1f,3120729990,4281556476352602892
+6338d6a3-2526-2450-d993-e356ec18a22a,4047685391,16233958397449428294
+b9401551-6fb2-43b8-51e4-5f975984c770,290255951,13102769357504412811
+86bbc709-2189-d1ec-77c0-37343775342a,3837376957,1541976906690037229
+10ccdee9-c8ec-2c15-4ffa-9f06d160eaed,575464930,17981470331308948124
+41792c7d-8121-dd2b-595b-5273072ec60e,1153415305,2964404028212306633
+217b89d5-b7cc-da96-8c23-413842673078,1567008498,16516449125056348066
+3f96f4b9-cbf1-aa1c-c8f8-7c5a6a478ff2,3948906381,15346701756765523247
+f2aebe4b-ac99-a52f-1055-195967b9c19b,564248304,10167254314341645726
+c228b0ff-d59f-525e-7a11-e8787da5db4a,846398741,16311115656155857357
+036c15fd-deeb-65a4-064d-89a4caf2ba72,3669403380,3023928913662004633
+2a55b6ec-a9ae-3c03-4686-c2e80079bef8,3350043614,175797191598497965
+3ddaf353-c073-7d33-c09a-7f4f750c7de6,266543563,2436079730425074474
+d5e6a414-4bd9-bc18-6dbf-dedce5677923,160194354,9831528831717049505
+75c9e7cf-e7a7-d3bc-6c52-17f15998f660,2774463456,3005275487400086459
+cd247d1e-09fb-c1ae-f32c-10482cae41e6,560616554,15928498633028877856
+7a3238f1-0920-9f21-3404-4731a7965fac,68744189,12247867581823697361
+454bb30f-e5b0-2a31-08d6-48f230b68783,1158798806,1616101751532495968
+2a453898-37f2-d1a2-d3b8-3c96b04466c2,1942423525,15733020079300352405
+f42430fa-8ec5-a7c8-a7b5-af35233d0793,2266997643,5629786660898934601
+11c15d5b-90ab-e5b7-6a46-09d3fde90de0,1402214363,10803661803097975236
+2ece39de-e9ee-c889-bbf5-fb75e1fe47e8,3907960987,15728630059503122446
+ab9b736e-b18b-2ca2-4728-8776ea2373d7,1092257142,5888599544740744386
+e774e401-6581-a6c9-e322-efa17249b33a,4063434370,15588857815060461937
+58e1d382-b9aa-3679-0b49-917838334069,2360059541,6404055202777796053
+c53c666f-ba10-7fd7-c145-7ceb9275093a,2399096999,1943823492040282767
+5736a36d-7ba6-bb0b-2048-9a65dd434883,1778154452,180603590817822218
+dc363dfd-0a6f-dddf-d448-52f45523881f,1645736709,15175556219187795683
+285bfdda-9392-44f0-c65d-8ee0519e946b,1191482856,13563177071180703500
+a877d915-d0a0-3776-dbe6-bc98dc74dda5,2423013532,13869807356472863657
+adf77284-6a45-5245-4d85-4ab943402fa7,4058304704,2514101212438399320
+d95a0822-224c-90a6-c0f8-9d4f33627334,418036831,15089655734411141048
+efb987df-7312-66ea-0f09-429243a8dd47,803954721,8816607804502823654
+69c59270-9799-eb86-36b2-b98a98911840,2203720492,14283198539949425375
+2c65d3d2-f861-9481-af18-c9c75ca17419,2062289522,18077548346871184979
+e1965e1e-aae3-ca1a-fd50-e62e3c4432ac,1012463403,15658099494568816307
+995624fa-5a00-ec99-1da6-bf1f0bde6699,4093402076,4005892612636839403
+f4342ab0-a66c-b9f8-eb54-ddf40d841d1f,1363458665,5909017991925124866
+10c4a214-3fdd-1937-063a-daefcc9802de,4245505019,392674731240250132
+d900f7aa-63e9-1e69-508d-04d3086bf363,741223187,7193167859787711668
+7f6ade70-4d78-6ad1-e021-7d218d3ed4f8,138541838,16672594245091107541
+e263022a-12e3-ef63-bfa1-4ba1732808c9,1295882764,4621114640469460395
+57a0fb5b-3dcd-f6ed-5b25-8500ace86561,382585247,4150798273110575740
+0a7754d9-435a-5bf2-5b89-7186860c5a04,177755386,1301299431641002726
+e770c928-065c-ea17-8fab-14723e7c36cb,361020168,16815719940168582426
+e458e5c6-894e-48ba-4687-0bca281b3470,3998693378,2623045095864005255
+051e4749-c508-ad95-6774-02f8076f3e1b,3020161256,12838210145007820521
+481fff44-acfd-e038-12b8-75ae3a398989,3843227269,12111932016684575380
+0b1de39b-392d-26eb-e0d6-cb4af9b10e1f,4078216415,8439723198639008840
+a9a16e84-7960-62bd-4cb2-d18469f4ab46,3424796953,11215971383277937221
+29471d2b-90d0-5087-482d-607b8c945f30,279861596,6679226300497004340
+bc2575f7-82bf-8352-1d3b-96832834755e,2836029859,16285345254317044874
+34c4d391-915a-3f37-cc0d-91288b9d7fc0,125011306,12670968635372445098
+ebcff601-be6c-cb39-1bdc-ca13beee7a66,405591922,14910139779554872391
+bbad2cbc-d173-c354-95a3-b0f88a517482,2111166178,13865699068320820369
+e2c437b2-fdd8-bc99-a48d-41b3b0bc15a0,2322689,3993250998646496376
+d835fba9-0240-2be5-af76-f72793ed6420,902504061,13785041755273725940
+00de5644-8654-be4b-e7a0-539216fa863b,1710671143,14615921143858456165
+97ba2759-dcec-221d-f3a1-01f34fa697e0,266471183,7012206789067473680
+7c6c14cd-bb58-6721-ac6f-c41dd5ae0043,1773790022,4802732079322593861
+cc0382cb-2318-4f0f-e0c2-cea82ab787fe,765032243,6283859819378798917
+72e09f2d-8eff-d746-07a9-e20b12d9346c,363304093,2829879194114740272
+e4282eee-a090-8050-ea95-1e83ec9997ab,949991944,13580603060807430097
+f851fe11-8d52-c5fa-1164-f3f6ec6179dd,1365566091,10994631359173194231
+555ede19-d4c7-5c9e-480c-7a1d5a5a1666,3917954171,13868098175818074875
+abebecde-f56c-19a4-7aff-556fb74bd132,2285887404,2411960983135312130
+9f08b1ca-dc99-d898-ac06-1b73cbca0a4e,1378351269,16654385006400773730
+9b814059-d962-46b9-3a7c-a7e7c396961c,535095459,15134353397129801734
+08c891a3-d78a-8f84-f0ad-f0f15d9aefa5,1351367851,14850112617437751887
+d49f2f9c-8296-4e77-d657-2e52b09673ac,972153582,2897643315705366396
+3f7e093b-3b12-ad71-f548-d72bc94e829e,2371967759,3346150055483981129
+1a435e55-5ea5-a9ed-5eec-a8c10f96b2ff,1067162426,10477638488141025283
+efbb0c3a-49cc-388d-4276-ff9a67f32916,625439465,16973835555925847365
+0219c0f6-9992-fe30-9a02-0dcee4e01941,1884734999,7625088039380556370
+ba9281e6-64db-a490-b3b0-33ebfc86fb0e,3535237256,12391011268879150450
+7436c340-f20a-77c3-e1ec-909cb76d111c,219520692,4208319662472951473
+2318810c-a627-ccbe-b27e-5069bce402eb,1408638495,5865511539415822578
+64f999a5-54a7-4ebd-ff0b-288ec97cf9f5,70659032,17379637741834007620
+160ea0b8-3028-fad6-bdbc-7556411db822,3372241901,8498529059103131141
+33af79cf-30b4-dded-0f64-daf2fdce3e4a,2700225230,12504579934772408769
+6663533d-ac79-4172-64af-a0fc85db2124,2860434563,6315077263183599421
+5236b762-f58c-c849-61a0-d133d602c866,872892348,12137828922620140799
+75151503-15cc-acbf-c4ee-97577f7a0f68,2324574201,11253212852114818697
+925c78ed-9df7-056b-5cd5-c4fcb10d3766,3457955523,11670502856141113499
+713f0e06-7de1-f077-a286-d34eb6c7619c,1342916883,1916168681512342091
+f5cd1ca6-8443-0c21-f22d-11eeb2b6d217,3889057534,16925010199757696193
+c4b12eee-86b2-1256-0187-8af9edfb2981,2761737971,2481192687314716652
+8bea16ef-f67c-fc93-1640-7216e80d81cf,4060548100,6303253191988089517
+34a13a57-e1c4-7545-19d8-b455ac3062aa,1685725308,3749571962863990292
+b642032c-1881-546c-44d7-43c321fc1031,1478618898,5535926542071430714
+7f869efc-cad0-b5b5-135e-997b8c19758d,1327448933,513977056325741602
+571df3bc-b007-f4ba-a207-2bef04f402b2,1210689139,262059956979783019
+5a754d8e-48d2-28b6-4ccb-460ed5c89bb4,3758261096,2864346376126017057
+1455477f-b15c-4dee-94ec-cd4dcf599352,3495137851,6722368727615978628
+805b6e32-d6a9-5575-58a8-2c39c8071a84,2639809127,6983893681639235998
+3541502b-27f0-a561-c18f-141e9c7f13f4,1519695049,14002993830567059547
+343a40e9-5cfb-001e-54ba-71c72b53942a,2272679355,721472701382472034
+3df1b409-8ea6-c78f-2ef7-f98a0a4cf5d0,1744551566,10108602295118815941
+5a6fd15e-7ad7-0b5b-d02d-43b66fdebbb8,1140605472,11576894877946501709
+6cca83be-4605-98fc-2319-f382d4b242f7,2225750343,11139338230546219896
+16c7eaa0-a0d7-671e-963a-8e858df76fc8,184105639,14792569611145153710
+25aa8804-21ad-5371-4154-2db72aad4e04,1329319564,11421377040929875942
+72967832-8f2b-a998-f287-b5a7ac9086c0,124845982,5562973733817978744
+cc501c8d-0f54-6dbc-e337-b4f3ef52310b,3804602246,4320399412162876986
+3b29d58f-3a59-242e-5e12-7b3c85a03e64,925473289,13432225723616162698
+58119b9f-1760-45b5-9a3e-608bd1fca5c9,2179376620,7700174373070317014
+47665f09-8ce4-4ea0-6e5f-ab189b7ffc22,4051383264,7743151680599324716
+4e2def84-7b5f-7e31-59b9-2f27cf2abd64,47768125,6265976066934121775
+e926488b-e350-5053-3449-5406d02d6ad0,551861470,12667835228341660892
+a11495e6-7f45-2751-27f4-aa7fbfd4882b,3824078593,13783679888361082651
+aeb4b431-60f8-a8f3-217a-adad9810ea25,2936971397,9435694112622369344
+18de433e-7f90-109f-067c-42ec92d196b4,1813553192,16346976345633415560
+f8f6151b-1b23-244b-2f71-4f8aa530f925,1177656215,2802786397536542416
+76188361-0925-abaf-8fdf-a3ab0a4bee8c,1949596182,1214357543084828277
+b3eb9331-9d7a-e6aa-dc1a-478789673ac4,2829284728,144117528007400011
+a6dff2a7-c7ae-6234-e1fd-af75d423954b,811410550,14486688029551265302
+53d34f4f-d80b-d1bf-f141-3580a80f18d1,4208896694,9959866548660460542
+9c4e104b-2744-b842-4930-49b0fa3544d8,3880275229,5027725172918600426
+5131d577-1557-1666-a65c-4935bc9253f8,2299871414,14481620579644182754
+d1df6f22-6d97-e6a4-fbf4-7eb83ffbdcc8,3195407760,7854497948716372625
+aa839238-b1f2-e18e-d56d-cc8291d5235d,1622215980,5619328780114935349
+db2dc59c-bc02-f69f-0dff-f6f1962dbb88,2629334843,6697832416720920007
+24be3216-2868-eee4-0d02-1aaaac618c6b,1823047890,2609188546154520461
+a347a6c9-7404-4045-60c7-c1c1b08e049d,3291591605,8527445103506841608
+9b39240a-8b94-20e7-f3d8-17984ba767d7,1277637826,4712557114810854505
+efd60a26-3c67-d520-00fa-1df2832279e8,3554299684,2303731675994692253
+b31379f2-8f40-3e2d-f5ce-9c39048562ad,1337235710,429655602816715016
+6eb74d06-6e96-f517-32fa-3edbdcb4d233,60845676,15712349057409722842
+1e8fd49a-3b8c-3e3b-69f3-7cf0057fad17,1315963029,7464450969204678551
+532001b7-8f6b-030a-b85e-8c411b924184,2693846371,12583851267255368687
+daa2ebad-e281-a916-757c-035cba565f83,3159438259,11302483355487613112
+7949fe1b-f57a-e973-e9b5-e75eb7936e8d,1337298988,10993704381303021848
+df789a8f-6267-5f73-b5af-f94942d70b76,2779585589,9174608991439116790
+bd0d53f0-b557-6342-2c24-a88e020d90de,3180669244,2768396649215192403
+fc1dfa87-7dc7-e6f4-7315-069cca48dc9d,4293311862,17936823127163978315
+bd27d9db-7fab-f156-80f4-9ca648800070,1685472105,14768173360566778320
+bd53352a-a299-b5e1-db78-c7cf29cbf981,1520513613,1387653614213714837
+44d07201-5520-c150-f5ed-874566d457c9,1483061637,810826142661943697
+de1e85cd-82cb-e9cf-a133-b0ce14c321af,537936641,270204677240450298
+1fbc6bca-f6db-2776-b25b-6c2489ea33a3,2617832752,10574347513486153364
+fcf613ee-960e-587c-8494-b9b591abe452,3121729328,5635426068794620949
+f36fb8f9-a60e-fe47-a529-740ac17d8704,667982210,11670794513656462788
+73ea83f0-32a6-7382-7194-46dced2a01a5,301574393,11314806739081252639
+ab18715c-8a38-222a-f0f9-772466b56077,2205095696,16828002643908814965
+66896d63-18ee-92ca-27ee-6410248a2fed,3427092032,9093441485762854277
+2c7f165b-a665-2390-d014-deb478b734ab,219678783,9605843892068403511
+49d6a26e-dec8-daea-2cbf-3f1863e0cb7c,2293386986,2516845981207636728
+2e3ba3b1-d774-c28f-09af-6271fccfc991,2740101981,13081095773263159521
+22c1c66f-de95-f7c8-0826-9439fc74ba78,950898174,13274485208340833138
+a03137c6-adf4-a969-4659-04bb8e558084,712571944,894914838310769623
+80e953ee-f081-2efb-1da1-943fd82a4ed4,3539971999,16077005062938394085
+86f9bb79-1ba5-8744-7b0e-90859543b443,2508075202,2611283115428109140
+5eb5a10c-677a-ee67-65aa-a5dc2942a556,670425100,7533953228692915942
+f1e40784-96f0-503b-7916-d4219de8fa49,2804749965,12814469748269578829
+55efadbc-5c63-9332-5ae6-5ff0cd92e455,692805657,511011898517361909
+d7155be3-1f16-cc07-a51c-a0f628e1013d,562711052,15540903161842110726
+a1bfdaba-e0ba-d63b-bd08-f983bc5332c5,1227964828,14741944397780978685
+f4d7ff0e-7347-46bf-b12f-959b592ef44a,1768995886,15257319764253859441
+6cdd9bd7-9959-e6ab-3ed7-dddd50ad713b,3896475911,11623658004703791622
+e0d0b3fb-d1e7-de20-28f7-6d612fec93da,1284616394,13209369476452655653
+e6997998-025d-a017-58ae-9b9ea40cbc3a,2465408440,3653655371983591806
+d42e36cd-6dc0-6662-d711-e618287e7618,2313831342,6099186708986513588
+9c3a4f45-72f0-5b86-cd68-7a2cbdd12465,4153159566,5041846112041729639
+50a276e3-e63c-7375-1bca-06f7dca7f6ad,3653327278,1121512522478811618
+0ffbde7d-1aed-35e6-7d80-a0ea41de6b28,519196517,1640423747437932433
+7636014d-5d3e-36f5-1407-c62a25f98dcc,2691953702,8176388621569516404
+e5bd6787-724b-c35a-3494-930903216b70,2697503524,12716305217648153009
+b54a7d0e-50f6-1187-0a3c-81befaf74556,2264027205,4576315020417123593
+785f84c6-f464-aa47-cb83-f8d668fb9fcf,3365385279,1910843152340594097
+76b89c37-1256-f813-0d4c-3c72208d9d47,1785294180,4112930619269629827
+1d01a583-ba73-114e-bd8e-c54735f0a398,3016794235,5512447778798424484
+ec3b3087-68d6-1b88-dd48-25f34ba0658a,2123630489,12840785065070400014
+dca4f7d0-6e48-f594-1e58-2686f660c134,58753124,14338895169427926266
+c47c61e5-c564-571e-8dd1-dbf3097b4b84,1441625567,7988679788446612093
+2f4ca1a5-b186-8ccd-85c7-c423608a7ed3,1482811488,9721705402591148166
+fb93a32e-1665-fbc0-404d-8b3c781a4ee4,3470879613,1669607607876733896
+cef47eac-742c-8cd5-121c-8802a4c74c05,3652492513,10242127888856114316
+e6d98f44-45c2-0877-cf41-2031dedde2a4,160806765,6327059346851476719
+765faa45-6ff1-881c-cb51-e731c3f54851,2521126514,9858481064334023078
+ad898bcb-34d3-f85c-fc63-baf64dc7444c,3256067185,18366909532918657592
+9829988f-55b3-5633-d698-dcca59603c9b,1760268802,3883762112678775384
+0407928a-8871-9ab9-6ac0-3952809bfd59,2646448225,10275633485098043019
+0568dcf1-13fa-ec08-09c7-d15acbebd21f,106966662,4560722191023858293
+b5eb9618-2f09-9ee4-63a6-cb8a15f9e2e5,352296856,2793272166821340463
+6125cc11-7a89-12cb-2707-1ba36ee31ebf,394957120,10320394971030487357
+ce2861ea-b545-6ca4-e16f-f5ded17a9d57,180069414,10604751348782285066
+25fbcc30-6c42-0ba7-7864-a8b2e3a1060c,2288465518,2660930572277664287
+b236ae76-2270-cc63-6a46-21ead086615a,1100201459,18281659754144915456
+fc808eef-cc8b-5a05-6fba-2b926518ab30,69707201,2942347010958355267
+0335e7e8-0dc0-ad8a-b742-57f33f0bb3b7,1263481038,8701801050273672268
+b32dd5fe-8a63-c52d-c42f-bd1cb848bde8,2982453093,9925470174686586291
+3fd2074a-a541-2992-a16c-f2b80cbe8c66,3103443615,15443351192680115197
+4ca83c98-cf81-9a77-ec19-443d2a6539eb,1832478414,1498606292588387101
+a7394f4a-c37f-25ea-bdae-ad44d31a3741,4251307808,5931672893804199745
+2582aac0-1c3f-8fe0-6ddb-91ed38723ab4,1795961380,10261871331113325839
+d09a7cfd-6206-5dfc-e7fe-9f67ab845439,2291335120,1681266657328156457
+b661e9f1-dae3-8474-edc4-0ad16ace0957,2183365487,3872372959663464930
+366cc90c-f889-c0b0-9aab-e843d2ace862,3687487130,11193188041694150865
+22ae4dcf-0a9e-f5c1-1cae-68fec5706149,3871615221,2057876157897204642
+dc7af9f8-423f-fd64-f3b6-772a24c048b6,2735882824,3813001219551501088
+0d77a8a8-79f8-f6a9-8e25-52f1289c698f,2210567422,1202301018909201279
+451fd591-f591-0072-93ca-7ee131c34ea0,1323171882,11328797527869057812
+ccf90c36-d3c9-bc2f-7629-ab692d3ce200,4059739919,536575526678555134
+cd1b9fa8-48a8-8155-ecb5-4f893da0588f,2488625626,18321374819779807370
+229f5b11-d3c9-9f7b-2ea9-4f9fa88836f8,608834317,16789414614013261160
+bcd2a03a-f62a-de85-8ebb-afad02e45334,1950026125,357290155776080645
+23cfdf57-7fa2-9077-f0b7-ac9f834bc6c8,2277184605,4363464109384080175
+326a95cc-4366-e19b-9636-02a9ebb06425,3672081690,16162731855772407972
+852b23ca-5337-6d7b-fe33-aa8ccfeaab68,3880026899,15538606407414673545
+d18b8172-3735-1e44-c8d0-0a13a6f7a34a,1504897344,14619931162581381568
+23904c7f-cac1-97aa-d79d-894bf649f39c,1135298878,6332761750533309074
+b5498661-6fe2-27df-672c-eb4e129b0b8e,149127394,17815206423109452890
+9e486d22-f577-27a9-0508-ea20622062a5,3043077429,10254968329306450374
+aa75ce01-3795-149a-60f7-b906876299a0,447010770,15232870487470812032
+d9c4dd9a-69aa-b835-bf88-e86ecb7a3fd4,152411540,13141505278911792742
+08957074-d14c-bf20-edd9-8d4bd92866d7,3745771076,9249069069249101916
+21a1cc79-8627-beec-a2ec-79015d919c2a,351145051,16763660701674436406
+4c94c325-cd3a-625f-e579-f1a8b15b856f,46328124,16925464244772280286
+0ab13987-037f-9138-8ae8-5001735cc25a,1037125518,11726740735849064703
+ca35525d-1c5e-5ffe-6795-b1a46cbcc129,2795082686,14001707791204232352
+b517d02a-baed-3e6f-ffc2-de407c7a2ae8,1801934561,5919341877487898057
+84f6c01f-7d8b-fe5c-eee0-424e201a262c,1025130350,6411025758291588526
+6d685be2-4c47-8225-6d51-7682553172af,206867810,9459670533459580417
+6a64cace-af13-a3bf-b15a-7c6ea10241b2,644919525,399458707903689055
+c1f4da81-0d51-998c-2a05-40e1383e2d03,160847045,2349847926198942021
+ea171215-042a-60a7-7db7-7a5945fbbd2c,2864968660,4593409308692520174
+c48de9fb-baa6-8d55-221f-df759cb5fc74,1936343610,3684028088120855551
+4faafeac-a164-08c2-500b-19f38ebf0378,1124786505,14488254497496500612
+92a4bc92-2310-1ea6-1e72-c59a8274c8c8,2571788539,2987260327830451123
+68d35ffe-e209-f987-d7b9-6b9e54524c1a,1394098748,13219795525737829541
+39d4fba5-91ea-83a1-e220-8151f6b834d7,3825870652,2281538049961635643
+0309014e-558d-070e-3c27-19b8c51f1d0f,1878466876,354429104188827147
+b38c249e-d278-2851-3524-5b0a3d46af94,1868094568,3693385302922519692
+d54c39ce-1479-c12b-dba0-94177838dd58,3774579665,1096729460105517871
+ee338e69-9036-c9c4-8485-3f7f2d9749a7,3873215354,18271362966476768790
+f12f935c-5808-b4e8-d0f6-8d1ab00a463a,2770193117,12940489632108645396
+3140f80c-d937-bbee-592c-79cdb2e7ce9f,1748753086,7793557274292189364
+c894c71f-9068-b873-b8b2-d21624c4c98a,3773282746,14487507480854332594
+97498fb2-09a5-c09d-6127-95a179706851,1339140194,7341694924886614879
+07a86cf6-fa15-55a7-47ec-b9d2e58ffbb6,3998116292,17553025497824846556
+2c2aa113-4710-497d-54c4-cc60c5c5603f,2374980234,6335219512514740285
+9b1c99e0-3823-b2e4-58d8-ce1bc813a62f,212470916,14596062284906429814
+e4be3517-ff34-7cc0-9f89-eea1836dcfbc,1909228341,10959134165168321647
+8513e988-00b1-1ed2-8b94-cc493ec6a7db,846048016,4539477402638531463
+6ba271e4-5283-9bb1-1712-556f108ce2e8,329710015,1978786748575549117
+728bf5e4-06cd-a9bc-77a5-cde1ff49b1de,4286812457,14152732590883920257
+1f46839b-2689-f65e-3a4d-3fec89e06e70,3650193024,3426191304404843536
+a0785b54-f40c-d2df-c629-32ffbd4078f0,3159347098,12783427523628631649
+8a7776c0-74fe-a486-4cef-5e05f4f9d95b,2009476793,2252552501877273819
+043b94fe-d140-0547-cb0e-bec0a11661c3,2502060109,15642312333105336066
+649580ad-1c04-cacf-4139-438f736862c9,1677070712,16198215838818926237
+e5f49ad5-b22a-293f-6c88-0989809b8263,1360017191,5626271018350359056
+53a0d06d-5c62-582a-68b6-49be3e143e82,1475280637,12678824988834226219
+ed1cd3b3-209b-3382-fb46-3a1d2d4cf846,261952530,12089019189337679941
+cc6df852-af1b-7985-8446-7f15a5ee90a9,1484050177,6962042149971465509
+edeb2135-60f0-d948-f645-07dc61179efc,4072408774,9355683904543658813
+a07f0ae5-ab49-43de-1324-8ebd49f6c202,396607186,12596500162407012547
+1a5d876c-7a4b-bf6a-af00-679d5286014e,2733923883,12885225368169255997
+28a07fee-b922-582e-0b8e-372f3d3b4fad,1719879483,11724214846281404371
+154f559d-7f50-dc44-9d39-cabf14ec4f51,2239807777,8875016649666785063
+fd53edfd-ebbd-7e17-dfeb-b2f69071c9ba,1739836555,14477800024423617640
+a31f18f8-8f23-b873-6787-875559ab3685,1466692907,4509642963464860699
+dfc93f37-6468-74fc-1e21-2da4288d2657,1051047455,17400593149076363408
+6da41a6e-c007-bdc5-059d-7e2c8d6dc65a,737935362,13381773583453576752
+21466e0d-d3c6-6472-3483-48d61551351a,4069831521,13920570974406151721
+f6460ed0-e078-e1fd-683f-7c2542e53ced,1239648385,10373779739222542875
+80284cfc-22c5-b6b1-991e-8637803d49c3,818201934,13205221138278500909
+bb9e19df-d1cb-16b8-b684-72215345b7e3,164613915,6216029068221928201
+44f105dc-cc2c-0708-bd11-263d3decfd9d,3407661590,7823728375955935406
+bbca496c-4102-0e47-2f4d-9cc05988ba8d,108806521,4745327455802106446
+d90b0fe8-74d3-8c93-65ba-3082a7dbbc16,180582877,14893398979989728832
+3d8d0f15-752c-f16f-10e4-0ef859e61daf,3138004933,14258836698577644819
+70105d98-f16b-fef9-fb50-eb96ef413a51,2654726442,617500491176664616
+6deb9180-3003-86af-d688-0701294837c5,2227397924,3979019319613261375
+e6488bde-b89d-cbd8-a960-ea0b4f55c0d3,4185166667,3700675002920655997
+f0ab6cab-1a5b-59e7-a63f-abd3fdff8e5c,676258114,17492191601844688144
+bba6df16-4019-f1ad-c852-9b5e1d115e13,3237957754,9441837148222355319
+b24686cc-2cff-065c-7bae-ae7716e6322a,3268728335,14728685436561769517
+0412d2ee-4190-7800-1ffc-f5554d4e3a22,2614257422,7240894235810654256
+27ed03cd-6dd0-8696-e6e8-b30fd3109f62,4288103159,11073002030433121712
+83d2362d-d0c5-7238-0374-785e90ffaff5,2926956965,15574030165202821994
+c01534cd-31ef-d87c-2019-f11d9e1a30ac,1961758292,4278161397055716650
+2b41b254-ecad-5d75-72bb-8a813428816c,2838638807,16832265889612656318
+d4bbd003-c24c-6d31-8895-0aa433f0cdd4,2686629671,12440497619349052258
+973abd3d-07c9-6ef3-7aa9-91a3e29dc3aa,3330421850,4076156175791339884
+0535c483-bdf2-a974-d721-ab60dff7e917,1572071126,13006234856264492720
+bfc024ab-cee8-6084-a535-716221af67e4,1486929015,17179671879214669380
+85980139-ab98-2b5d-62f7-d7b026625425,2617357058,4646290954667771610
+5c9e380e-0b2d-d636-b4c1-079e985127cd,446574689,1158257574824884806
+fb74000d-c923-4d36-ac8d-d297fd0c5259,690534359,4817450828411124600
+c5a30296-01d1-7853-e9e7-786f08aa1a60,2478874066,8152898546510477553
+e697a951-84a7-1d46-019a-5c26faf3f5d5,3996722651,780134096382968291
+64b46f04-b2b5-b5a0-7465-4ab244aed079,4171768990,3236431184222847488
+8234d17b-f3e9-7429-3a5b-e23a93aeb550,1452093136,13052121345656248210
+0f9bb574-bc22-7118-fea5-47f0d24b40af,2555273130,9598442219069885472
+33cf3b00-ef52-e7db-6d06-8f0b4aebe7d3,1650536949,17554400179089986498
+bf414654-7fad-badc-bf90-5037a2393ba1,197405844,5645195652550780598
+6be7ccb0-faaa-686a-c23b-dfde0413c74b,3688644561,16257759111795349297
+3d57574c-7138-c40d-9277-04d041f99d33,1582148162,8068741057700723595
+75a23ce3-7783-d329-bef2-ec58ee931c4a,1484237442,15016778763674132281
+213d85bf-d997-5a06-d06d-3dd2811ec0d9,2203784864,16277202346643626275
+0ade260b-d46d-bfe8-3a70-6cc74db768e1,602216059,15370319270797088045
+b11e11e4-d5b0-9897-bfc1-867244468a9e,1783485674,9400642902631025609
+5334fc85-4721-348c-8305-e3ba5b9b8289,1971271535,2675029170388844004
+8ad55dce-8ab0-45c1-4d4d-09e79a987710,3872259231,16270693906431901073
+c300582f-8237-5d85-3dd3-e23926884872,3095343121,1822923441853882883
+37d44e0a-3110-861f-7464-ab642d549012,4045280763,2803117294869813139
+c232d57e-d129-b58c-08c9-fec68e2a2fe2,267698760,12790077384292270990
+e9564063-7acf-55ba-8aa2-1afec5d3fb7d,1184191269,14104713370119184456
+14467a1e-9797-62ac-c0ec-8ebfc3a39fff,2004844488,6049618555941280655
+234cf508-bdae-4f0e-75bb-c55ff7d478b1,4085561568,12353395066547723373
+148a9ad6-8e37-dcbf-0fad-2916cec5f2c3,20391283,2982096546029414925
+2f8756b2-9058-0100-3dd6-0fea8118e481,1371339466,9363842183919468979
+57ff66cc-9f5a-6897-da3c-f534738533fb,1064715390,518067693801123222
+638f981e-53a8-7cf2-b49d-acf59e628a9f,1332727017,16831488505797434536
+25dd61e4-79ef-fcfb-74a3-87f22bed7e40,3942578202,6860594954734594205
+675e81dd-b009-6aff-6d8c-31446548253f,442881979,1190276711600351679
+3cbd2499-0bf3-d0be-ce4f-356f0d080089,783543874,9570140528484934065
+c0133191-5ead-bc58-586f-5bc1f7a331cb,1499797577,14360057229768001878
+f5792368-481d-0106-381b-57c52f325908,2159179860,13957410939871552778
+68fb840c-0e58-4f63-2155-6e9590741b34,1438378179,14550809141036672248
+de7dac98-5619-f45e-8dfa-4dfa95f19f82,1205547213,16131301611070558204
+d4eb8a86-d37e-4f92-dcbe-2866ead9c698,3103387372,11075932645509790210
+adb4ebef-4f2e-91a2-1022-f6fb4b454ba7,482035476,5420589099558678784
+338f7b91-e474-d72d-a19b-f94ed67caf3a,717558501,16208741565979054527
+5d07d96d-c521-e343-7657-87c48f28b4b9,481598151,16521111720380355945
+59b70b9b-d9d2-a327-32ee-012c9541b08b,1255271840,17160927419815433587
+96a487ba-be8a-7ec7-57c7-f2024bfa537c,3387760233,4488210598574306979
+2ef596fe-1995-cabf-f275-5069903d8b0b,3934651763,15337288039475138382
+12c2e6c5-5199-6189-3996-33a083c1e561,1453737930,1482438873423433761
+a5e37782-1d32-e34e-4c2c-2f904d25e4e1,2876235686,14004669661285923097
+acd8b613-b055-5588-c9fd-09de8c21a0e8,3326680589,14350569817174884716
+c16d9056-13b0-2ddc-7080-7db82f0549e3,1565011147,16309150432468867800
+2890967e-27c1-4c5f-7fec-91b4b2099fa5,3645154336,7144131207480431547
+8427a333-3fd6-4e98-c45a-19be77cde812,1785304677,13424529474258815066
+ec765b86-dbab-b31f-5f3d-c27938d3ce94,2702234414,6412487182392242922
+a70c8fad-6002-f464-9b94-feda8baf5280,3923646014,15563236037122869729
+cf3ce6ff-119b-1108-23d9-701fa6941367,3236953783,8142784016890087001
+2adecc48-82f9-fb00-0fd8-6c51bae1ecd3,2566030716,14222358611963745003
+a3534a14-9a4b-0b1e-2865-95c38ce10792,2770817683,17985108641571049630
+717e4009-7c42-5dbb-ad69-e0c3d3141757,2295136901,3646873225851695017
+a34c14fd-791b-ca2a-6b49-52f07cc90366,1617036460,14308137095812779349
+1a019679-eb31-1d2c-468f-03e39520317f,2361596324,7797330568268288277
+aca02f27-3c86-e892-55b9-facc473edfee,3090141909,5784958795941067233
+9c64c9a7-8414-15ce-7013-1c4c6ce90609,4182662352,5461306668073714027
+5f2f6d2e-1c58-bc71-7a6b-a448fde53c5e,3165664829,17445650196724476990
+b676ed8d-e76e-7bfb-89ac-0a8828864f1c,4190660720,8251320976909374152
+dd61a25e-db2d-8c1e-b89f-847f61e73836,970870554,3599927492505065762
+a7b3677b-5343-6c89-3faa-e0ac0cef5628,2555312713,10861174203989575653
+6c7a843b-93d7-4cbb-2bd0-3f41c78fc79a,3823642198,5386537767953319639
+d2c51d42-e7c1-be9c-8769-fd6f8f87aea0,2398199660,15261278165933498251
+b65471c6-a45f-430e-d715-2032b73feb62,2810545331,8130651684067090189
+b7817ada-8db3-9d46-71f2-ca375bdc022b,1386795445,16772122881823005441
+387fe944-8ac6-84c4-1e20-81221db331d4,1953722678,5000429916888917012
+c8bdee06-788a-b276-d865-6fadb4bdd2bd,1861354032,2130756453069480183
+c5e4ff57-44ae-3cab-442b-6c75adf2ea4c,4180953664,5466296102224688574
+1f2d4a28-524a-3601-b356-2ca5f9133cda,2486836682,14536941147213110692
+301b15d4-1c87-6d25-6297-1adadef545c3,238278533,3230578069743589049
+9fce0e78-135b-92de-f395-f9e4412618d8,2421273616,13446690581478426648
+2f303691-ccb4-9f97-768b-563dc4218ff7,2572421082,17399961726184352043
+69c57ffc-4341-3fd2-9ea3-33b5627434b7,1899727928,15392929809137127662
+de1eedc6-8cc7-3bdf-939f-ed4db399351f,4066012652,11236278052436699718
+cecda0e0-8175-4cba-8fa1-8717ae6e966f,1894613123,14457054137699414795
+cab1d323-d09e-7b95-885d-125b600124dd,3773046335,1169268672180503944
+ba684d7e-cf8d-ff1a-51ee-51c49c33c56f,192424708,11779283839060431053
+bd701668-3e00-1eb8-f5a3-cda32f6e24a9,2554935307,6567933099745199538
+bda0e30d-bb82-63ae-2802-27464f805640,826431576,2761437044206209954
+82c5506b-d806-9bf0-f6eb-380975d43f3f,2153971845,4386662818467713882
+e0ddd6d6-1925-03e7-ec75-9dc37771710a,4111828890,14160382789131248658
+46575980-b5e8-43fc-b795-65205ff7ca6b,1341967943,6685697467442558288
+1e95d375-688e-7cd5-dcf1-f4415bc139c0,2359640956,973254516914995208
+04ad88d1-d5ed-e4cc-92b2-df54ce879253,713359914,11102652682374116750
+c4581c9c-fe1b-2ce2-6819-f5af4cf06061,4211625788,3826160867593595540
+ca875c09-cfb0-6986-9504-e3b38b162bf1,3410581987,6210917908479820380
+162d142c-4321-5528-5e34-8d5db0df936c,235462218,6771344238603097939
+8ead3083-4c63-c0db-9764-5508078b3656,1599691175,15753714545267334950
+7d424988-1211-6cc8-b3c1-dcd07cb63bee,3074372531,16132264392244405000
+2dd607ae-3776-71a4-75ca-9b490b2420c2,63390953,17642848171008297517
+96eba012-26ee-6e11-7c3b-5d477d423e70,4251896579,16912305898163498076
+a722feb7-3ec8-6e1f-3231-a1b44c0b9c6a,342364452,14915605016994443537
+85bfd7d3-9381-a60a-58e7-b380fd87e32f,4170605723,3611284822213982128
+a0268b9b-cff8-61f6-1b8a-eb26f40f036b,31845206,3588682601174929392
+6894645e-7597-def2-6648-6c78660542bf,4285885177,7296855159930579776
+a43b7e35-f364-cc9e-4402-25bdde4f0fd0,2078364238,15921066383636209902
+03c4594e-1136-9261-d16b-2a27d9f17fcf,2292933536,15694817811326400355
+41928f91-9203-a99c-745a-70e18bd45ff0,328882812,7342674485081023206
+8b3d7219-9ad8-c9ec-db03-ed8cd4363627,2619569194,11393006765284557218
+66e59fd3-6fe5-c4df-29e0-ba5bf9a79627,3221089942,10879596013670270934
+41491367-ee08-fa62-4227-f13afd22ad3f,1018577303,15283724067658778784
+db133654-dbd6-bb86-456d-460b5bdb8418,1553065856,17734928754311102706
+0017490e-70e6-ab89-b6a0-4fd09d53d806,2565256404,9700619921667922994
+5ea9cfa9-fb8c-c17c-9578-ca6aea84b1b0,3286008806,11821327672658015662
+ff11e538-7afa-1d9e-60df-1c46e2392ed0,78917579,9087617172979616363
+27b6b8f3-1410-0cda-243b-62d4a66fd981,1071713261,1633415970279393614
+76466b90-d3cc-0c8b-e96c-8eb63b07ac6e,3180776399,10051386447491829319
+55dcb7e9-4d31-f479-07f0-eadd236e1e96,669274648,580757183332481315
+ddc537a9-46a2-21a8-b68f-81978d69da8a,3025236403,16063690759492905784
+6cf5fc4a-7a1a-2afc-25b6-59dd675c4cb5,3501187271,16981706580294890018
+c59bf889-4d47-aee9-3a38-f59dbbc3966c,4112889910,6294553216556210341
+6126881f-24f1-96ed-0f5f-df83d964f405,3496544675,17400484659064587260
+97e6ed7b-3ff2-e08b-92cc-7cb8a29c0114,2666903478,8668902016384685755
+885fba63-1d9f-41c8-4d03-5ea3b907badf,2650739672,4277757633476298003
+6ab72fcf-02f4-c70c-9b9e-f999a46fa8b5,168467189,18181014009697159060
+3cd1ff70-c52f-297b-4afe-9a5d59847390,943717686,12687371593437665159
+41bc0eae-34c8-02dc-0783-3c35f0322e8c,1101955730,2906558882630021013
+01f8b15f-3537-0262-ae9e-577c930f791a,2109740646,360999780865365783
+ab36d272-66bf-1201-1529-7137088f0298,1010764257,7325510236483729601
+c279e53f-3a3d-4d07-a73d-8abe084c637d,2541429278,5425056224777802970
+5209487d-8255-d5ae-4fdc-391c5a9d4b6b,807750691,17209455726614495568
+1eaa427d-f09d-0ad5-df0c-9866f9dc1053,3779631072,5885965633521453825
+64f0638d-c4fb-eda0-4929-f8b71758ae8b,2660343564,7761289746507607975
+a3d25d03-9995-1e0e-b50a-5c6df266987d,4180187390,11492188630042562515
+f83b8bdf-221d-d7f1-76b2-90179d485769,2638228610,2328540323324875392
+3000e967-32ca-8495-59e0-f018ce90a637,4058592558,16386569028731894821
+44b0b605-a623-02cf-e546-706c0a23e18a,847792487,16683604921732812009
+e2e5f248-b41b-fe6b-e2f6-74614f774fa0,2245420034,10391183484588497900
+52639b77-f7ce-42d7-b97b-763bb6cdfa75,3922530633,9091687418656818108
+c1110e7b-a275-c47f-9e63-19f02c126a1d,2165384968,16461838394555338579
+303c360a-ca33-69bd-c24c-b30e3f456b49,449478612,16603603133241696526
+83720819-b6e8-e2d4-ad5a-c58d158f74bb,3300121105,17795235977239270012
+132e2fb5-4600-c084-e4f2-5e6828d246d3,238599875,16965683960620749172
+b33f1d70-a964-8709-4a91-312de7c52b2c,220647913,932338213196249537
+daf85a5d-8a35-34ab-252b-8a5f3e97e401,1350963650,2129294379524562598
+e4fd00d7-618c-3fd3-a360-01d0458a17dc,2681994547,848852524999670526
+48308260-6568-3103-d66d-b2067375adbb,989384487,17992485788021940778
+2e5922d6-7822-be04-fd7a-aede6a7f6479,2006155165,10131285329898687609
+4d5b0f12-5325-d1a1-c801-6854dd532f62,4054312809,17027122791391390560
+f5a4fff6-85e7-aa8d-4150-f0c0fe134e9d,1597787246,16893145450253690855
+0b889748-3f29-e5d7-80f4-da4fa8c72bea,139548582,12599318888165607898
+797c33de-1f0f-0873-b72d-0b76cead0d04,210445123,10473434962730111072
+20abdd02-7d17-d0de-c9b8-3bb731e979ec,4099261692,946760831775257876
+931afae4-3858-7ebf-1587-14a17feb5b0f,190175961,11180455302448777398
+5dcac7fd-dcc2-daec-ef5e-4444c3df9337,2785529375,8543881103406426685
+fb8fef9a-a2aa-cbf1-b340-e5ca8acf6293,860076286,8863429208390119068
+a4937833-f802-be2d-1e6d-ff0adaafc126,2126566794,16670527099061948277
+608d99cb-039e-7c20-00af-7f8e9d461570,2306349349,13535463061815846592
+b8af4ebe-0b95-ba51-7882-2de3243d5cae,2138976003,5519053618467523191
+64f96323-bef8-898a-f8f1-3bff2e920d10,50461641,5652298362171769415
+8989dc6d-fdb8-9a8e-e467-abaff0408608,1735407724,15336436961275582776
+1fb5bf9a-402a-8248-256f-d5d373650e19,2098683284,7694972412261851660
+514204f7-11d3-6096-fc98-9def8f2f6d00,733716625,8136893866068889106
+a07ce07e-5405-fb5f-028d-2be0d2421bfa,318578185,1996664192203985867
+6d9d627e-7371-fe3d-d055-ad199f18a1a3,2785516736,18237456000019047677
+4d84a215-9747-7577-7eb0-945bcd83b40f,4101399400,17428856999327207449
+863bcf8a-ff83-fe9b-f140-d6a4a9ea8dfe,2301899789,1511698462981991757
+d29439bc-5491-b07e-0ece-4cd26cc7aecf,679926756,14133801203535068444
+22289a63-59f3-3fd9-1b24-bae2fbba36b6,3461011032,79405163595722168
+ab76946e-c476-9388-19d9-0a356d9e9f05,3893400941,17221092219665929544
+637701b0-c3e8-31e4-db6b-2b6badff03d1,2386790053,4068887859181642103
+a53ec14e-8728-8095-f465-e1c007838933,834519959,780314891166132745
+4e054bcf-f061-559b-3c66-b79eccc88082,489044966,15238452240988268096
+7ff35b10-21ee-2701-2ebf-66fe18c6dde7,1513118685,973116380259858807
+7dcb9ad9-dbc3-53c5-7987-ae6ab69cf37c,3219386386,9365147087710385371
+8f4f6ebd-fa30-220e-b0e2-7282edd90030,298676138,12514888025809943558
+dac7309a-9b84-a6eb-c33e-dd061c464379,2054635166,16277215189074315535
+40e36da6-179b-71e6-c545-ac586e6e99d0,2907990977,12840177795273289507
+1778a169-b451-ce91-d538-3bbf3efc91c4,2569893663,17328490599645180157
+357b268e-8ef1-9158-8720-0c5b3489fc98,2551785149,6384857125414898501
+31f0c052-c4ff-0652-c853-3a0a67b6a69a,3065484226,753357181400970359
+ca59535f-c264-8efa-cd9d-cfd1bf505160,774070711,15729715471188500131
+3b0dbfc8-6c5f-31b8-1499-8ace6427fc0a,1554908703,17479225147198349483
+39e4fdb4-c674-b093-9be6-fd88eb32ced1,1494521249,8819274426342407557
+c8d09902-9ea7-2603-412f-82c111afa638,1218954757,12194368401433843922
+ef2c3839-a8ae-11d6-1abb-968aafebb6d6,2603596996,1387402079731961850
+50aad820-7052-91e5-e244-381233d79de9,1911885604,9762014468464537593
+02ae4b7e-f31f-bad8-3238-2f1f74aeeabf,930100785,6764398229705862359
+a7eb79a0-50a3-d0d0-4765-8ac7d187f831,3594264978,5711660173549561544
+3fdaef0a-d2f3-6f00-9f8d-214a124226dc,3046315218,4370515413156184024
+a492d777-9901-5587-2f6d-9cedba839909,1886723246,10987293988928002342
+f5d6f663-95dc-eba1-8c91-5aba14b82c80,4121381287,3007627657662802806
+0d722018-d0c2-7b47-4329-9372d33abaa3,1519666198,10066632231314274538
+a12b3276-576a-028a-4278-2f735ee5356a,2176656859,7762132317059656716
+348a4aae-7117-c6a9-c252-41eef19890a2,1282984925,8631076268560679370
+91530e8f-67e3-7dd3-73b9-0d32477296a6,1138089964,15289741831730553826
+c8ac1020-65ea-ed83-74d4-ab3a5ef0b15f,680574193,17273306233227845562
+bb37840a-4d4b-50ba-38ed-76c027204fac,3549963422,14274268809712524564
+be4b6f0e-03e0-d252-c91b-91d506e10057,621381653,8691429516066897118
+91cbb080-7e37-4c85-f311-bb4bd0ecbe1a,475773442,12185570073937822322
+cb71bdbc-fff6-1e72-daeb-eb896fec1a18,2255985064,965077206734992854
+a626d232-b0ee-920c-de70-1867c0ab3bd7,2024632017,10115463901054304042
+219606c7-1bf4-4e6c-b31e-c71010b3499e,1804138487,3912525469891388828
+484301d3-68a4-18aa-5f23-cceea312f7ab,3897499010,2382550587672160087
+3382af55-8285-cb6e-100e-74da047a05d3,3903197320,6842765002801290023
+9f39af21-5e81-3f38-0f64-ffbadcbe256c,358557002,3423930608991665716
+2bfeb99e-c53c-bae8-faf7-53faed0c00c8,1517371098,13317203377335971752
+502b2006-7e71-b0cc-3bc0-07fa8acd8a05,3119308210,2423477130878149744
+8b1b6e1d-404c-6704-bbff-a96946745e44,1688413672,6549905954337958891
+641f6f76-e633-2c39-4d82-dcdf30c75f02,99062978,9068774537871238918
+176d2595-13f5-beaf-7c53-79ff14ca71a6,2097221381,16576941787457697338
+025b3ff3-751f-2a0c-de02-fbdbd38aef69,1537002284,7558473217681690678
+0daec772-42ea-6910-bbe7-c98c9109458f,3911293775,8613427443036106591
+a71bb069-1a18-ed79-32a5-709ec2b62a3b,758441565,14893660231504403385
+a3f0b7fc-f111-3f38-36d4-2145bf3d1bcb,2580134285,14713219751585374979
+ad1de8aa-aad7-2a30-6329-6a6c5f5a10dc,96876468,15549276198291669919
+7a3ca6e2-7865-14e4-1bd2-095a2dfcce09,602525308,2938151798730732006
+260b31fc-34e7-fba5-45c9-77e32b20cc37,986493153,14698888592051045599
+a2a6088b-86ce-f37e-6f0a-488537d1494a,3443634405,10858129519044595162
+8ba675c9-069b-0ba2-0960-64f6ca8ba161,3160514851,1909822938231613183
+5d344924-e98d-841d-976a-e8a268702a61,904167127,16344020079900887789
+cfffe33b-111b-df17-df6b-3eda541cdbc9,1576471417,13495080502075410216
+280ec7cc-8683-ddc0-2bcd-0c53ec5701f6,2144839276,6857427957182063791
+4072aa9e-d94a-f4d4-4308-89e6b847cf86,1446683535,2772211304484358362
+f2c1885e-dc69-df5c-c633-306625e71074,1686636846,7545261869813980636
+21c613a0-bf35-01f8-258a-85670743abf5,2796965600,12476704049739056491
+2d3c9767-3f0b-c75a-afab-0a2171770dd0,4023439865,5596536118926575314
+56b10615-c06c-f1f4-7ba0-eff50de3f170,2889733424,13777003866559231167
+10d2b3b7-4ba4-1c5e-3906-a9d39bcb56a0,721018837,8985358085825120501
+c171aae0-8476-f9f0-b28a-1b89e9b347f8,1140180946,8849815145045126278
+1b33b753-322a-7a7f-775b-9f76ec9637e3,294194779,13824315807889757660
+74889c79-bf2d-40e5-6430-cd73d148b1d8,1487202041,14943621373537715883
+daff04eb-3f43-219b-c755-e5fa7fced963,2185070833,2509735519638865838
+fbc71ff6-ccad-9611-4c4f-105da44acdbd,2922025640,7878153876778309782
+e9be9d94-78b1-a0e0-3f2f-96ebdef6e256,483602702,9390876452779465665
+039dac74-7b9b-6437-0d9e-2f1b143dbc2b,418307088,16106394409932189408
+e09fe105-7d7b-8241-dd53-e6eb84649cfe,1649620383,12431671556195844463
+0b3b7150-4c61-0964-7a70-0907d4884405,193970000,5387132416984405308
+9761cde6-0bc4-8a3a-ac18-e4edd2589807,3346750511,16827419703834478628
+50382cfb-faee-ceaa-c814-2d82a1f12af7,4229410224,17392044680167211175
+6a73e13c-4010-5ae4-125e-5604f11e679b,1787225684,6071526920193484782
+1514fd2b-0a55-9a87-3153-a7bfa651b8b8,430886953,3584305252808360648
+10e1bbeb-e032-7a35-177e-1a790cb17720,110809068,14772105578668532852
+20832216-5b6f-edf0-058a-8b4ea424aee7,729832931,3589690501036890144
+f588f8aa-efdb-9a96-1ef0-4038a37ee9b7,2195896900,7691801779321108341
+88361beb-f533-7812-f158-cd4b64647c34,2073309858,10226976817147788067
+6af25447-7d2b-62be-0a0e-72f876691d9e,2156697003,3731710449788182066
+c7ff8bd8-477a-79f9-a168-a9eb3550483d,2924862728,13442340013239066289
+c7a127e8-5198-8540-56a5-a57b8fbea076,3706552127,666794263585719564
+58edc86d-c266-e95d-a3fb-94ca64bc660d,3659456691,10114357851089506067
+45892160-5236-fa9e-f332-78a4ddd40705,1031560185,13132769488603323844
+a589d292-c65f-c5f4-0692-fba4041d96e0,500581219,13844204382375924978
+9df1bab0-7241-3813-45a1-06d443722697,3467018620,1759500585407029137
+22911c30-f9b5-2a8d-028e-2bb795341ba5,1850361010,2516281537747078808
+47aa1bf8-8216-3cfe-8404-2cbf793466cc,1574587287,563036100308876057
+733bf720-e09c-2572-467c-2fe6e7d1acbb,260951713,8515120667143165704
+602613a8-5d9d-8a23-7521-66fa0e25694c,2001986176,602098578865493348
+57da8598-5dfa-1d8a-69ab-9381259e3f8b,1005620007,13942989910944434188
+c360697e-365d-e4a1-2376-eb2c264aa80e,3037622138,16705529032842146665
+6628ae6a-9b72-9499-735f-5be2570df314,375396629,9428594381064801359
+a50d9119-b428-24bf-2145-f7ee998184e5,2968542103,5337049227197611690
+b592e641-8c16-4c15-dabb-70ab71371da3,2064073143,4431370731696006682
+86b12bc4-8b8d-6655-5f1c-99af71c8c34e,1516939500,8075523855364968800
+e600aead-7835-2ed6-c2a0-fc690b22b622,1450360780,11527961709964866775
+87670922-f25a-1b48-741c-322cb1020320,402030347,3697686690904298835
+defe4010-3533-a138-f826-1771a40e7f94,2900450189,16100171613875562765
+313317ee-9a96-99a3-4137-caa654b7a4db,2376498513,7319164084218192131
+6eb0c498-4059-1684-75b1-bb72892de152,3320649284,4237916519083671937
+6caae106-ad59-4816-19dd-175ebe431de7,2416693709,8437178911085394302
+6467bda4-31df-57d0-6abc-b324aa44839d,2618308532,9081849624637754967
+17fa23a4-0b77-3b19-f65b-d1a47c496df0,149278314,9557981444981215021
+62658716-c06b-2983-ce70-d1c545ca41e3,4173395967,16333943885408748235
+48f63e4b-dfda-bd25-5dd3-8b5b25af02b4,1626382441,17415730218104525749
+d6496fb6-f1c0-fd1f-7369-1d09163f4e20,1913566222,10647956445407678504
+503d456e-3cf5-8e13-aff6-60573c604abe,2242084176,10463607267767642876
+e09989db-9848-c416-561d-9ab38cb20675,3746886843,12168270902649687598
+5f3fdc89-8239-3e6b-dd68-30af2237a7ee,2632165946,2263499275414160623
+bc0f2241-c4ed-ed28-3798-50f4dd7aae66,4206994263,12811421196110720555
+dad70541-3fd7-1abd-8fca-e1307277d95a,669437665,842364635479451895
+7f3b031b-8301-6a4d-bc55-884d82b90bfb,2133211947,10290777664780179906
+c308083b-002b-bc43-f9ba-f30b8c03e165,3543519919,17315609515735431502
+755f9976-a5f3-f275-fa01-e89b6e0cfd7a,3401645150,13558765140496861235
+92b367e7-fbe0-38c5-de1d-46bc7e566249,4118224842,2275786605032069694
+6c2050ab-e24c-7772-1590-b9b0dda68668,1760967168,152525419131765097
+2b2142ac-d539-3178-86a3-906c0a362360,1780157865,17629735388063452249
+ca2cb8ae-177b-1614-8c77-7a7acc830944,1216199731,10977522957796938038
+84d37b0a-19d2-ce4d-e432-29eb1512cc52,2773421701,6115611362185220655
+a3ce27b1-b725-2d02-ef0e-fd42053efdd8,208151486,7019236213124072787
+5f15258b-63a7-6db5-3457-0e64702c78e3,4176831610,5729768014141133787
+0c31316e-234b-41f5-e5ac-ce212809834e,1601679521,7965198603844623836
+1d5a27cc-95d7-4b57-0812-60ef33bd9e84,746608346,831073861388712421
+032ace54-50ca-b930-68d7-0dc8edbdcf26,669194390,1148628217882532410
+43120f83-f568-c0fe-5e2f-088eeb718020,870539345,8842592141597788658
+4037550e-f0e1-2fde-b5b1-8a82d26b6065,1773331815,5920921384668780312
+2c340c20-7ae4-ec0d-6ce9-7e50dff2398e,1154676547,10784113110979097992
+f331ebf1-f408-b718-e27c-4ebd7155dd34,2011151511,10734381747883105139
+98b3c43e-0cb8-87b8-8dde-1ab6b1cea93d,1249578288,8343900043386653528
+f744035b-7011-3510-4888-eb2ad485b5be,960054252,6279554417303692778
+6df0b73f-2d9e-4e11-f610-85c2e0e5150b,4015027384,12459901322881431004
+9bde9091-6ae8-5d25-d7fb-ed80c97b8a73,897161164,9024134176031774605
+ede3093c-843d-24a7-95ad-dd1e3889499d,4071033907,376101352695027511
+1c414154-9977-55df-b852-b04aee3f3238,1403899516,10337753739155751417
+baae2c8d-f301-e293-05ef-beffc9512441,2767740143,11622839270795525238
+903a836f-b050-9b91-74a9-26912be5cff7,133426350,11289236399015248278
+689f2ead-b454-196c-45b5-93253247f0ac,3272931726,3691566787430646812
+3ca3cf62-8538-6244-3871-dbe5411453c9,1732811222,15196799378342551144
+85e5f7b4-0195-9f6b-b045-a876b0d8f76c,290365748,17786141214744597349
+5e880528-9101-3fe3-c9e5-1e26e4e904a2,434004913,14893565000959968875
+912954ac-cb8d-7838-f716-95760cf7b316,1601932730,12051794967333427026
+03257826-fa52-9e0a-7e56-2bffb96fbfbe,3387449436,14622735191175590068
+a2a4fc7f-6d7b-5a05-91c4-10738b3ab32d,1852568998,12484716086550105715
+a86e8b6b-f9d2-16bb-f0ff-2317bd808dee,1045271990,2441419741708445818
+1d134119-587f-296e-7c9c-beae8d00d111,634719014,6309575768123470564
+00c2958b-c632-a05d-71b8-c64d791ac5e5,209878788,1089050759238100610
+9d24f0e9-425a-0f9c-5362-474806b4eb35,738745092,3220105267191727779
+5efdf920-8e60-13ef-356c-c296210725c8,1130537861,1949736071669474059
+db4fd726-d655-4a34-4022-c0d6fb712784,103205161,2491819817789490190
+ca7a6e0d-ef5b-d208-6843-f26a0bb1ce32,106459096,1205517217786375630
+1ddb3af6-a29e-ca53-dfda-a04cdef7bf36,4018792023,12005958053320220635
+68ade34a-adda-66d4-ff2f-ddbfac08e6bc,1078543932,4395136343047357131
+0d158946-97be-1eb3-a585-9108469a3956,3405064948,10483453111012669873
+f744bc45-a99c-f6aa-4075-f255249e0458,3837660266,15424658091350642256
+b4fd5da1-9984-3f41-8596-eeb418c7d1cd,1412034430,3601165678911464192
+f7e89d10-7942-e721-0955-3a0968e4668c,3969005606,12346083102187121260
+b9ad6d9a-ccf1-d145-ded3-c66421707116,850594638,1858998303078007705
+2a494b46-87da-1d87-cb86-553b0d943b90,940264490,11402045101518205202
+227093dc-eaf2-56a2-9e09-3fc6d361cbfe,2832181353,261467618844667305
+3fee7e27-8b6b-759b-8cce-4400c6713a8f,1152359265,12468436768635426516
+04b2a0a8-e856-8b10-f941-63a83186e93d,2083823502,18392440581524046407
+0c153fb9-6c42-158c-e9c0-c3a0eb892426,1410366665,10807941014783220530
+7b5a54d2-b94b-694a-d9d4-ddda15aed7cb,4042904127,8092540908933296028
+ebc5f329-a885-b4ac-546f-462cbde6ab1b,2855773907,11705772689827450034
+db0d3017-abc1-b0ac-d88e-1d54ad430aec,1538544034,11979785178716727708
+85e08338-ef26-7311-77a4-8416403cf098,2990639015,12280959183256350703
+7f580589-6b03-dc0e-211b-7a92f6a2e769,747123593,10679456015755722104
+1aaab78c-d9bf-ae7d-c364-f25883a4864b,1424356212,3112404542047702755
+0268b813-b83f-5285-649f-81c78dd714ee,2984583000,402493032003267332
+53e847ff-beb5-ac40-61fb-e8d58250d29c,215725114,2032090591632138332
+8c186cea-05c4-3a37-aec9-f77b0ca757c1,3000602735,10186845653013438652
+7be8b475-c33b-d145-c90b-a68273cc2ae7,770209494,9620175193062194184
+862be53a-6b1c-f300-c34b-5d043642a1be,3511109036,11431806386439729447
+d87ccc27-1dcf-907f-a7d5-508c7c985148,1472046966,8022525595078577909
+72e3b29a-e27d-9eee-b172-1a3971c25b52,3858002006,4619026191010292286
+7f59069c-0241-14be-e773-b12cce07df62,3472087819,7787349824694981350
+dd76bc70-8b0a-64af-6a91-a7b94342bdee,2837280073,14207961759408744218
+ff272baa-0696-f16d-d460-a80ddb62eed0,2403437407,5356600192382810027
+daf613cd-a70e-d386-f35f-0e0e6dac2a94,608183291,11588000278999855049
+7339876d-4877-ca2d-ba36-9aeb2bb7b63b,1486487159,16359685002079120381
+f8dec983-6f13-8dc5-a410-a326477f22e0,3117659902,14893723940764064921
+6eb0e1c1-b62e-5d9a-b180-70532732d99b,2084244315,3993188022793796780
+984b6fa9-0228-bc31-f887-5feb846c72ad,823944844,776965577192830786
+a823bcbf-d8ea-d01f-55e3-91634c716684,3389634293,5827909848460302731
+121fa8bb-ae58-e78a-07d4-4469ca40f7d8,2733939220,14286784688440458255
+7f57fa34-3e20-33b8-62b0-b897dbceb926,3082306863,15704303293366652694
+0e05a4f1-74bd-4e56-c962-a5e9cb3a54b8,3444298122,9105822372893403114
+cb878616-2987-3906-a563-0768c20c691f,3486586472,7907238653918732637
+289eb376-2625-bcb8-c5ff-6d88607e0662,2676170569,14398197066858048221
+0e768a4d-3415-eb1f-efdb-c33c1f7f8ab0,2025892653,6461662733664015502
+41d47cf8-9299-fdbb-21d1-54ffd39988db,1081746819,15700087523464913933
+3aa0ae7f-cd62-b9d4-8262-d283384e3c64,445788714,14877887277529776370
+c2823a53-26d3-27f2-4f9c-70e3eb6b5ef0,1795002484,4808674345622109360
+7765006c-cb33-622a-157a-22b0b510d735,4263913100,914126665915918052
+4edbf9bf-bdbf-1535-5ab4-89319d458f37,3978601307,14915555327938173141
+47bfb05f-2393-b0b4-17fe-13574cce534d,2059366210,7884063419346350239
+ee43e835-6582-8923-18f0-3861ec5d2bdb,3929964476,12374589436055125582
+2739e13c-ad00-6745-363f-137873044810,1392579916,14317813630873368854
+c3643253-34fe-f9fe-e5da-5cc2f31183f2,2517107894,18196531545676432742
+6a55f8b6-8701-f6f5-270a-cc42dfb41c20,840973684,10340436315914524124
+c28497f6-b2b3-e490-d9bf-e2881845a5eb,332249285,7149948496617936952
+c3cc2659-f203-0c0d-10e5-cd488a12de1d,3796936691,6412284421021456933
+4e6c9f97-dae8-947a-e164-81776119b0b0,755593697,7838390094763882438
+d2c208d8-eee1-3a61-5895-b1868b2f84d1,3841657780,7830854909669991818
+a12cdad7-162c-0063-5cc4-4a6168c6b71a,2578292832,1645308760904601731
+43817e61-a790-4349-8259-2a8a397d0430,2179265040,9435563481301795461
+6032a1d1-247a-d057-b2f3-56593b54feba,229930142,15906239174596516307
+63c7f91d-7d30-f21b-b401-0753fd8158ae,3724795448,15740061159963863400
+e5cb3e92-f99b-3f6a-228c-fd2dd8668fde,4043439762,1333130872564247680
+6b498aeb-58cb-cbfc-2372-14bcbbb67b33,3469890833,9493168033629325114
+be9486cf-c047-c2db-7aa0-8c14eaf73fe6,1111225260,4768310939947819460
+3566c6e0-8e08-a5af-2f61-204ffd84a27b,1319262948,8682155590788412748
+a379ef38-3c14-6f9a-f1b0-9356a87f0d4d,471276831,6221446193619997051
+3b8ceda4-4cd4-61d2-a4d7-4cea566567f3,4280115979,13395031517827416950
+ba3b6087-ce9d-c475-7aba-67c6b9055ddb,4150779050,16102749306401132439
+5e081419-ca27-3176-ae30-baeb6ad817bf,2436555025,15615283882192562233
+ee1f832c-3653-afe1-069d-271c986c563c,3222193183,8299914314215350292
+504c645e-ad45-5076-737d-90baf05942ce,2044582354,3458630725773225119
+3409c782-0c02-548e-067d-e7b8e383f606,3524346072,16980341556438393410
+a474cff7-8743-60a5-b356-59e63b8448b8,1297772785,15965914328329629351
+206c92c4-83d9-c79d-f3e9-d3a3735007a1,3770657394,13910672676373828184
+c4b57bcb-d9c4-d3e8-87f5-7fd7d11da3cb,3528320718,5235194685229517105
+d0d20282-7cf2-9601-3b9d-368ff5b176a4,3839224427,14460498673989560893
+7eeaa50d-7eff-989e-2712-770d290adef9,3821998467,5141894581867285999
+f45508fe-0dfb-12fc-0ec0-f9ae35290180,4135362258,6642969950816913802
+92f3d965-2374-25f6-df5b-db24ba44ad4d,1363832573,4251836147452662852
+d59406e0-06c7-f2d1-08a4-038bc01dc111,3905437559,5086874895565538841
+334f70ac-accd-b833-edf1-db0942b46bb2,3962759648,2164741519444356420
+715bdeea-c5da-fcaf-4e3a-8ae55bca6c5a,3578218618,14136730609217011776
+0795f472-bc34-6b30-a2a8-4f7f0f5a3fb4,2412960985,2106289690440947492
+573ca62a-d197-42e3-179a-db63c49a9d76,1216719929,14481552823843194720
+e67a60c7-f461-0776-2fd9-d427822b2886,1319302062,8892109467907720408
+d683c504-dce1-e695-3256-06dae13f2a42,490831861,9666494075866938061
+17bec7ac-aee9-4b11-fc75-463b4d76b106,3881175272,5455817519121437535
+560a583c-d1af-4d11-73e1-72eda642d7d0,3889444991,6209821716454151653
+fc3bf9ff-ea5e-4822-bf7a-0a516dac8ba9,695370853,8830275405319791588
+8924ac87-e021-ecce-f905-4aa4c3ccae9e,1023185276,17770489751080174178
+f7da7633-3f81-14e2-507f-7d33dfea2f2c,3755226751,2128077858957536258
+f9cbe610-0bdf-1ebc-8939-84f8aa424470,1729774307,355477341048513632
+d9e49d89-79fe-4942-2957-dcbc920cfb3f,186826737,619959314126606444
+8df9818b-3dc5-87be-d095-0393c22e6ca5,1643497383,4258478958679392030
+bbb0a36e-1972-b67b-439a-299bf5289dd2,3334510283,4733469059937544209
+62ba87d4-c6e6-1649-7d56-c2c1b26872fe,2626398341,15255352643900176626
+b75b00f3-0b38-9c5f-3571-ce2834a791d4,2317057384,16225145221130505498
+c9b79c36-5024-e8d8-295f-cc06fe68d32c,365668264,13445034453299288546
+85b81da2-79a2-2ca8-2d5e-bf2c7a7fc5be,1320081903,982605938045103019
+df663919-3b73-7f7b-1b86-9ced1eb9decc,948598915,2086876518210862256
+51133128-c4e6-e9de-33cf-3aa9b08e60a6,2136713546,16518855510386421160
+e687f155-af93-185c-5220-2d9082051f9d,502308231,6575876131916241141
+0eb1a740-c443-bc02-5e38-10a0491cc218,2932629956,1523474214153588321
+ab1de643-ff0b-8cea-2210-9191292c38b1,314256592,11347211227339439270
+975c00c8-6339-23bf-761b-54eaece9c879,3747217966,15221511297644125765
+183949f9-60ca-0898-ce0b-2f0c4013c4a0,3941600808,11032736151963146138
+59bfa55f-36c4-fc48-3073-3ccbfc380fde,3508900242,15781490913862294126
+1c1aad13-b0c2-d64d-9b34-3b61ee0894dd,3640178459,965423319144512732
+83dd1461-0add-8e9d-2d03-39e2747a9d61,3704465272,11561170894138083711
+01172041-c705-10f3-6b58-697d610173fa,1971669268,5320520981959186561
+d4ab8608-9e61-f801-a730-f80e4b901797,1813944035,11465407375044619589
+045a8f52-22b1-fcf3-2330-7518f8ceb1d2,3149600161,14875894661204751032
+962f7c86-ac1c-1005-ab0d-4db1a2ae6998,539820436,9609111334638791191
+1b99fefd-e229-d331-e21b-03818339aca1,700319723,11092101175738599439
+d31b11dd-db66-f69a-c298-f075449b7ed7,2698752169,5510794190474756937
+479d659b-856e-57ad-062a-52b376c46522,791913769,3889332220325177569
+c842db1b-c939-d74b-78d2-d250213053c6,2882399,10164432375778975164
+95805607-6592-b60a-1b3c-f2407cd74128,3965386585,3251287740504563923
+c5e9f39a-3774-b88d-b4cc-44de1345cb28,3540419104,13145861158372729814
+dfd83844-67ed-44ea-1b34-aca45ab04df7,3825467063,4702258482202937232
+5ac1f8d3-1dd9-5c22-5bd0-e802e314b080,899793180,12422443723153012949
+f5f8917f-a8d5-532c-5cc0-417ef4954a01,226543946,18026115112480794422
+7ccf2499-4481-10c3-8dff-4d4e1b0bc696,3823219733,9482808354246283122
+b2d30b8c-3d59-c60a-2ed0-e21b5cef7312,562835469,9803427002020741109
+4a06aaa7-fc4a-d082-be5c-a987d587223c,1384405222,13652726730583997396
+c4cd7b8d-b294-1e54-8667-61faeafba86f,2884826462,16482377569899958095
+5b023785-9658-1c8b-c493-976904984b50,2929924164,11925667242212234329
+52b25b1c-6209-114b-3fa2-4456ac1dcef1,3852318454,15164778782231562353
+54b2551c-9d50-5a5e-a2de-5cce66a6f95d,4215420213,14020160991686450805
+bfbeb60c-e0cf-cf88-78e9-90fb6bd12af0,2510877124,5394224577694427326
+3aa90395-5114-7ada-fa30-46754f279ad8,987535609,3039220782616961442
+67c74da7-1abe-4682-0c90-51f240869912,381895024,1640513800219307700
+4ed8a195-2998-6dad-8911-9bc19c1e7b64,3975708055,9047947866797331805
+63b7562d-e19a-4320-4dde-855320d113c9,3764856815,2650066653696027416
+b12626a3-802a-d7fc-5e8c-dcc4053dcc3c,3221815443,13167714329301403335
+f627436e-a8c9-d4ee-ad74-c417cc081f18,2257536600,8469360948959035620
+b29ec4ec-88b2-ab1c-fc5a-bfaa27490fa0,1837588465,3372079220195980778
+94217ae7-55fc-c987-d937-c664490dbee1,4282312017,11100584671420568441
+2b8f1a73-cad4-10e8-9be8-dfa06731e8e1,4018160407,16149451770215717991
+9d4f4128-330f-42ce-fb66-3500b4c68767,4216043380,2931244796664746076
+9cbfb7e6-a5e3-fdf0-6b57-977e90f6a7e5,434858389,6510726676355329956
+f922fca9-05b6-fedf-e098-68195854be4f,400325418,1570257762287831608
+e51a525b-98e4-f704-587f-5a8acae70e63,1154582323,4753043575175260356
+f8b86efb-de26-3453-cab7-23a3b7332844,80841081,15292597512312563505
+2234853b-282a-8f25-4d5a-72f7a6dd2fb1,1753069335,5196185355480692057
+3f95f0f7-37a7-3a63-aafc-59c022655322,1016092145,3997465105204914339
+0cfb479f-8569-3257-0bae-fcbff7630061,1937611209,6427134131464026928
+ee5ea103-d6d3-6090-8b1d-9ad5e3bb517b,2591547306,14399728621594068365
+8bb96e05-01d0-6a87-606f-2d6352c744c2,2952626657,240786927127629521
+f5076b68-ea34-8285-2b3a-d03c0939b955,2370967695,2049406945518974291
+49ee609e-95fc-00c3-519e-021a27d1bea6,650591021,15870856471964798163
+26e034a5-ee01-a24f-bea7-dcc575cee928,4277372173,1583742381274960068
+1197f232-89b3-1677-0f1a-413ffcc07506,1621855395,17771867965097891562
+1493358d-7017-0b7d-0eab-1fb8e197b764,3129895475,10506055643652852776
+f9070d95-da11-b5b4-35bb-75ed1d39b5f3,4172978896,4764376172974978720
+627a5029-9df0-2673-54a6-d6760044c6a9,3469242228,152694303926259954
+467401b9-cc85-0bba-bfcd-cb5dd9b84416,2116486805,8220159799177293847
+6f077fc5-ae23-f88e-fa30-17a3f3ba7dfc,1448765165,4496525355039199868
+f354b85f-20c3-87e3-feec-f30f9af4feac,257814490,6088522663531972225
+db2352f2-b0f2-5147-5b76-4c44cf0972dc,845499561,138256133191950412
+e97c04d5-8a1f-bb69-e5dc-4336205cb4d4,3497403899,7652074048518671404
+a30d370e-4819-5040-939b-c720b7ee58c2,2433323762,17885194340324673653
+267ff1cd-2f7f-9276-d2de-780e89ffa507,2487251883,11005625987154631079
+d7e508e6-b505-b6f0-624d-1a40be3d6f93,667184007,7560439266342964328
+79a125bf-08fd-f4e2-dc33-a671b4676457,3641193317,10668939108927341035
+aaf21098-0a86-fd2f-7b49-f6cd5e31990f,3874884455,13994798355521618778
+a27c646b-4257-da0f-80cd-30b50b5c9eef,1239612895,17614606304148602098
+6537045f-2cba-eca7-717a-4c92791d0cf8,1439629587,14919154436861403148
+2f47372e-93c8-8759-af41-349b0446ec08,1156741525,6400633222512496761
+33cb08a9-a00e-009b-7c83-4b48b4ec2796,3604448763,3428086370348407371
+deb7ae4e-124d-addc-2602-94e84d970bf8,3400481712,5938321347674307049
+f1a2f7b9-5f53-d337-2a96-b8d713ba4c6a,770686163,15008975218043104105
+403cf241-01da-9e50-00eb-d797f25b9270,3114683018,17368121675695262066
+151e8bd0-55e8-08a0-0e54-fdf0a19be078,3225985575,13525752216269869727
+3eedfdad-a995-57a6-6a17-9651776dd5b6,2853566362,8482972568907963268
+d6172f37-26d3-7b10-473e-957533b10a4b,185363638,1038922157336125994
+ebe5896a-ee2e-7caf-62bb-eda890c8c8e3,1399389929,4026780560779082425
+acedbecf-fbe5-84e8-6443-df6d3e9eb387,2888655952,17919800136163931700
+0be89a62-f202-e1c8-1f52-cff64df3e8fa,3367887308,10642601902092410013
+536d355f-f532-7cbf-5ccf-0f499cb59b78,3565896683,16938744522605358718
+0419a777-5ca0-7fe7-2cd9-de167d545b78,3338522634,15347318186678579338
+7266ff49-5efc-1688-24e3-3df2ad94eb50,3561968472,7820534729940725162
+4c03020a-52b0-e783-8e9e-1259cf8ac244,2925132936,16703990864014222478
+aa2ab6b4-ccbc-68f5-2f05-e6aa26de1c4e,1713153504,10574507335245316585
+b38c160d-7364-7e6b-fd9b-2ed31f48e1e6,716540726,17909053159757615355
+bb1542c0-f0dd-2218-b4eb-302e84e154b8,2392577218,15348001470797693664
+eacda49a-122c-41c5-f56c-5888bb1dea4e,3267127944,17118203624618075591
+ad00606c-fb13-b612-0257-b39b57e6ec88,1545679920,11559918099453604994
+950e508f-6e80-b975-a442-67c9c4173a0b,1059536224,14426824013360035345
+440472e6-2b03-80c5-5652-bedb6ee8711b,2239768571,17188191861057005191
+feff7a8f-9b67-e2c5-25d5-00c1d621df67,3923691782,3848472645781211067
+91d43e5d-4007-80da-fba2-47a07437fb1b,485899076,15726441720544711744
+36bec6eb-4da1-c89f-59fb-d2791e0bc958,2001466801,6949707707883625004
+628d25e1-3803-8c93-d9f6-2ebae6dcea17,1349871552,5422723737058031212
+1eb47424-d567-c47f-7a80-baecec30ae55,1345787933,8310302196186944107
+847bc325-2420-37ae-8841-e704afaf3d7a,1389271601,5774484991902267666
+2cce55ab-57ba-905d-3fac-2d7c5a242880,374686002,14958654816259520746
+bd149fcd-fd46-00b0-f8c3-8c09f7b243ca,534070007,11644720792733317220
+85f2a6d3-e6ab-718d-8fc1-9e406889d2b9,2527778967,7645119626475509473
+aa63e310-8533-84fd-37f2-aaec01dbd01e,3747602415,15166747410162260977
+ac82d1b3-0742-3175-2924-21f6bbcbc3d3,305080588,898576060050650992
+290335fe-bfa6-9cd2-68fe-07dce75d8066,669005690,11559793211059937016
+ed4b6715-264c-5b70-f367-c1daf451dfcd,2461537063,10591121623913664515
+dde3af81-fbc1-8761-2954-c6f0a1d4a188,3886658806,18265878934222850650
+2e849c89-d383-42b3-2a00-7407d54ba548,4207537324,5797202790791123763
+0b3e0727-957d-2dcf-97ae-5c3971c713a0,559457303,1511008111846566629
+f8632f77-3c84-1aa7-1c26-2ed30ad76c1b,689792035,2785522483666253355
+8f8f7e0b-6762-efc1-7914-e96bb434687b,1610188936,15041223986865575551
+42823f55-6fcf-47f3-02cb-29ffc62fcf86,2004148906,17215551880997864489
+6207021a-01e0-a529-861b-4c31070bd87d,1796309180,9968365553262156349
+542dcca1-c924-bcef-dd20-c85dba77f70e,1470881806,4948510041185924912
+39d69665-9198-7f43-6b3a-0bd5f1d823d7,1989247385,1295508558275964523
+0690fd43-5a50-79e5-76c8-51e0c140608e,1239278791,2587038168188177887
+98d590ef-0ad2-6aba-95fe-2d03d54e0946,3883712600,11432310766209279768
+8e05b764-c36a-596e-e0e4-bb246f798d5e,2598018838,14687624402289307759
+b887ba7a-13d9-9d21-b1ec-577de756169d,4001761877,4659785396096560387
+65a075ac-1dc0-2c54-217d-f548d1c6f7d8,1408369925,320753459130786845
+aedbf647-4716-21dd-1d18-6f4f0f8ceeb7,3463064796,15290647036968078733
+44bc79fd-1a32-1662-0662-dc4757a5123d,1979086668,3847457586035583857
+ef6ec23e-82bb-ecae-874e-fc997bff54ea,1232138069,18068773233733680044
+a7ee0a39-549a-5ad9-6d17-482ed9645445,1577213124,12589047077769982286
+d4cba158-4137-33e5-1572-dc28fa99fd5b,4228198328,11680849462168176041
+4ef08a20-fffd-0a6a-7add-1437c992b9a6,3900378602,15334614025831082655
+43668cdd-218b-3e0d-f72f-2cbad7a00a25,781141443,5470190904104821049
+a3ba15c7-0c19-a378-7755-f059eda8725f,2752929987,2411138227725744508
+689d69a9-45ef-b290-f221-be0e62115497,1075289520,9501080705099504364
+ba2c7512-d388-4323-da3d-ead7314487a1,1217669498,16697459742343389119
+6ff9ec03-c783-f4da-6b4d-24d3337767c3,976234559,6791456407488735043
+474a6a28-1fa7-c330-8b7f-9a6de8143d0e,700044427,4586887477185180859
+d859c252-4180-9833-9a45-8e508d283c9e,384848194,3776209562936857553
+ed8d311a-6e92-5a76-000f-c9a514bf0d8a,1145286726,14581776801147879921
+94708ecc-0842-69c0-30f5-bb3f87d610db,2114302384,17565923923298522286
+59dc529c-9e12-5d10-ec1b-eeff3fc4a6ab,1987064595,8615392811231191709
+f1c3371e-ef0b-221d-afba-c1a7f049b5d4,571691239,13373182396352598576
+10d42f9b-79e8-c6c6-f4ce-73b461246546,1551609082,16514799140025383939
+e9225e52-307d-8142-e4f1-f6199c75c662,1091802950,9313794034715600186
+b03848dd-017a-436c-1dd1-e3fe5378c3ed,2515577614,504299411147584235
+9ca82185-6408-87f7-d4ef-acaac92ed567,3644865383,18076112617487235785
+f8cc3e99-3786-1f48-3bb1-e70a6880cd81,3323598237,1162479994144164554
+f2063d39-214a-fd9d-e3ae-df836f2a9809,643864212,629912109056371996
+ee01d3df-46d3-d4f4-183e-0c99247f004b,740897759,17969046556158528106
+2cdbaa0f-fc8c-e390-578d-5ae60e8c0f0c,244216084,15644811401156401722
+b46256ea-047e-038f-4481-9e187abcda4c,1262488140,221689836755528266
+4a1138fa-2d76-668f-918f-85895b6b7e86,2271107817,9585079918125647712
+854bdc36-dad1-6369-1c6d-6bdfb0792198,3452454134,8294732976092376792
+ed131879-41bd-27f2-7749-29e6f1a37533,2546692165,6223132633451424284
+502fbaa2-d207-7fab-b595-ba041c6220d8,2395474407,16074214088976514637
+8d960eec-0edc-fae1-d340-ca743f1d0e0c,861872959,5523922805013235545
+446475a1-b74d-a67b-596f-6358d8cdc131,872469860,13030395109340271195
+3e27ace2-8613-fc34-c106-f68e6bf4a211,2084605737,8921673403474846386
+f6e94ee4-1f1c-2b9d-7c14-83e1cbe3ebba,4294050560,2925707899871202902
+ac77066e-ad1d-eef3-c965-ba800cad7c9b,1388310869,10130179098617454327
+2b021f89-0ddc-710d-56c5-81834b9f4f5c,712853776,4983942812808639447
+1c106660-162e-6e85-93d9-893bd50b2588,2321811422,2400937130054580676
+78b19adc-61c8-4887-ac76-62f53fbd4fe3,161915925,7114258486598177773
+7a220e63-eb86-fc27-796f-278776aaafbf,3574902430,13273464719310617286
+e41276c3-861f-f743-b45d-e935e9521fd3,947461119,15524619359677656903
+7f696efb-a4f1-7dd1-1360-75625495794d,3452713568,7073815869623356153
+0d22b0d3-d739-bb8e-adf0-89c71e7677f0,380593054,15392084534264527248
+e74ca9b4-9aa6-a4d9-2a80-62a37d94a56f,3691696825,8598345473156609215
+487108fc-9b8e-0e02-d21f-a35974d3bd90,4116759586,11753545828785937621
+5a2a32c8-18d3-38cf-82df-83a07c1220d4,2076638753,17662002053600904902
+1ae7c74d-6593-18b8-56b0-baa5a3c7fca7,2421895631,16874926740311254365
+bc0ce98f-ec4a-0421-669e-f0860370c927,532456312,14377599229237427825
+329e43c1-7788-dd9f-37c2-eec67bbd3931,2617889292,5733513232930569075
+9365b740-b0b1-a65e-413a-05e3d27b6d62,941033935,13554443829889902995
+079d9561-9504-1f9f-ff08-fa560533495b,572900992,18217968506904318607
+8dd3c363-9f6d-a73c-77b0-e82199452662,3028139753,17986253989467553296
+ab582247-c6e3-38df-e6b2-c84a6a1d8aee,2773933745,872574848372396696
+3c307017-d797-bfdc-2be5-9cf263e0c224,1527897358,12201636269198509668
+35d22fe0-6989-76e6-cf79-7e89114ff113,3809045211,949018481051206105
+8fe73412-5104-9686-c680-07c1f8be4bcb,1122175604,6399766809816958892
+21db63d4-6139-ef47-48e9-4582bb29642d,3986815303,8309952001513329984
+1d00a958-57ae-b7d7-3fe3-b41caf1f128a,1743898303,14253612740961476878
+34eab245-b938-7cc7-2161-8376ea9d9400,3632326095,2232257943671627172
+f1fab354-ae3c-d6a6-61b5-4cbfec5da76d,4094031065,3561965858110416778
+ffbc7a17-c9df-6317-6567-d5436feb5891,2612469951,10754597024560191804
+e5064b2b-dd7b-2d21-3a02-22f1519bba3c,261445490,16814934950479583069
+84e830bf-35cb-b0ed-4179-98199ee6ff59,451915232,5639175497531929348
+7b7abe53-cc4f-a25b-a3d1-ce8bef3bb31f,3381531718,17221877506784329348
+13064d17-a2e6-aaa7-b503-255ab7aae0f2,367616331,13108985518457691563
+d902253d-3648-af32-46df-c5b4a06bf076,395838535,346773577610710800
+a46447ed-4d3e-211a-9d4b-d78ce4c8463e,930254556,3037993295564413356
+1f622177-381a-a5a0-04af-715969067f93,2998704088,588426556814086230
+1f44ce68-c47a-4003-5862-e547f877595f,385944933,13625534198871566887
+f8689473-20b7-1cc2-f27a-e624f9638fd4,3147399532,3211088093341298910
+dc98e486-6e7d-4e84-6de3-f8b0efd97d1a,1028992089,15539822526404527436
+406f306c-aefc-9d84-0eab-22b76d5317bd,981934198,267538538961790961
+55d845cc-3428-99c5-3dea-48fd77960534,2386122309,6806696078858310668
+047e378b-8de6-47f8-c694-e78b9cc5cbc0,2670170503,14835980332655524578
+ab44d7cf-1871-17a1-1a8d-fe63ddab25e5,352311086,4728104441691736813
+d3fa126e-94eb-fc32-5829-6406c48a2664,1493550410,8484501234933464899
+176d6aae-0504-7cc6-9aeb-f76d53bb7d9c,1196749445,8572598701947550226
+168cf0c4-b126-f7ee-1005-b0dc2557ad7d,4267504311,10532566073541465500
+f4a73521-b0c8-ef33-ced7-67d8fae69e60,607563108,3420060856057276704
+8c27411b-f75f-31af-c9e5-3d84ad5c9da8,1383453486,6797002536115100983
+5e746795-57e1-bb1a-64b5-656b114a3aec,306040511,8584423573054054396
+5db4db04-c4c9-8cb0-096c-4c5e400bdef5,1653446492,7893832586602850885
+2e2b659e-2567-20cd-db56-fb3366341d74,3281142406,12208460845243962747
+bdefec5b-7740-150e-f467-c35bcdc13f13,125413113,9050849511922766331
+6d4d51ea-a12a-f825-bef9-0d30f80ccaa6,3977989336,4962547362370360600
+2632e0c5-7f55-8d49-9b74-85a1e548e7d0,2719684810,7030435704288441147
+09addca1-1fc9-905c-9bea-7db0b33cf2e2,1230672125,11747056241649502968
+a7ea6be7-50c2-74bf-de5c-2ad228b49e25,2072929251,14586439285316322538
+c03dba25-8cd4-84c2-94fe-087447b3c383,1163979816,13948613084600866794
+2d5a1f3f-20fb-2a26-da6c-a0eb7fde463b,976753162,13028204071379558261
+f8bba93b-7cd8-3f34-55df-12b4bd125a76,1763581564,1240025852942966476
+6852d38e-2a90-c025-21a4-77cb035461a8,3906227464,12035895154888724435
+b63168f9-99ee-aada-264c-8ca1650d1ef8,1662685981,14479568287310512224
+a6a1db11-ec7a-5ac4-7150-09bbfb263612,1759472629,6280135002228204904
+0de6b153-c9c7-1ed2-6d55-4838966e210a,4202912165,1905527018343985634
+4d023bc1-6124-2d54-913f-eeb819a59db0,623837078,725556729713108218
+07a548e9-ed53-164d-96ff-7d874939dc9c,3990169014,4714059585702262133
+d8139355-a52e-b88d-2f71-0bfe6027e224,1310174160,9870858528466974736
+2ba122d0-7d4c-ecfb-be49-b1b7e9364631,2699993252,4103176222604493841
+2822f743-9940-73b3-bb46-c9666a573a05,434503999,15560605690687430150
+511b15b1-160d-9ac4-85cf-c08581746d10,942632600,7892270709025336975
+ebb576f8-1cec-9db3-1e9f-f44c3f80272a,794832580,16811795857748610486
+0c2c5b69-4cb2-2793-47a0-83cd0dae47ac,2325230965,11024811724309679347
+a2b61dc9-ac53-7a3d-77b0-014ca548f94c,600046472,13482523906653572367
+7b6c1611-b5f2-bf1a-a195-4e27d1d07509,3413484245,17538059692911809285
+2e725ab9-ad61-223c-bb82-b1c79e626544,1101583237,12247441688939045192
+cf28ef7e-8e16-4808-d29d-ee2053a36580,803936986,12979189561576613697
+06ecf789-4115-421b-fec4-16f557563c1a,772808596,18382940219341262220
+ddaf05c5-c7f4-8507-bfbc-ddf8ef39f8ec,2694535831,14688592914896068499
+31129472-ff61-ae51-c52e-93846af90bd7,2548906810,11698318084395297346
+79be996c-5475-7dbd-943f-1056f9e8fb2c,597388058,10267885160054227744
+1a98861a-6d48-d5fd-df31-8f15b4d7437b,3741527455,9208123525092185725
+6fbd62db-5430-18b7-c0d9-44e958b278f1,2558531438,16566227340644372372
+7fb63347-80d0-c2ed-6d92-c5e43ed66035,1707297401,9155811256132108534
+220fc82b-90f5-bc59-1e81-bd40ede885f4,3949216076,15664853154365396308
+e3ad4e02-347b-65aa-53c3-19f627c76816,447969232,13089694633289309849
+549cbea6-49f6-789e-f597-8c54136ed8e6,897273158,6078679001710920542
+03b58ec3-eac5-b544-cfb8-6edeb5c296ca,693986757,15387971631931081971
+f94cced4-bd59-eb89-8113-c0d1d849e373,1157329182,11079636084324124414
+aa18684d-6f76-b41e-78e6-ef605729dd6c,1844827252,12037850642521129112
+ee152744-3bd9-aafe-d8d8-ea2ba2be4873,901975195,8559323857852510102
+8a24c58c-17ae-d594-0903-d89b4540dbff,1752300186,17302725933776104163
+3019c191-f7fe-bc98-7dc8-b9a4bcb673b7,2621660419,3018129974523149199
+dd64ab6a-a6f7-57c4-d072-843ad3d5a98a,2631189860,4786000187230135089
+eb8c8610-2940-50f6-b91b-9be60c7c1e08,2954006553,14894821042182917448
+07476e8f-313d-b514-b6cf-83f21b7ed331,3124428246,11066055080661052933
+1c181732-0645-0af0-e35b-bc0f0beedcb2,990915407,16148173497803415964
+aaffdc30-5dc6-fc0d-5c4c-91a121b3d05c,4098027414,15843664772367395772
+256204e1-5e37-16a2-f20b-749a1d4afed2,3672044803,16854060450289827662
+0d8fba89-9416-c1a2-326a-9cba8f5e9f27,1053570270,10352085252342047056
+b2678287-56f7-0432-ae9e-27abcc5be408,232202787,2177112780321430586
+db335858-f3ac-595a-681e-f8f7cf64c0dc,4209340180,3042136735698649849
+0c72efe6-7b6c-7846-a811-0d2361138c5b,2787198515,8911757796064260051
+97bdff89-e4d0-4f57-3fa7-52b7aaa94c5b,1383012245,331011596146034294
+60d9c61f-ff37-9436-21b9-ef2f5e93b6f9,2772212326,5210892162929142964
+80aecb7a-3478-75dd-bf9b-9d1fba069d1a,718147279,8189071672143292851
+a6ac199a-4bda-1bcd-db36-ea03e530bf1e,3149268452,9081060699675609028
+f45f5ca4-d705-753b-841b-64f0cc1842fc,1538732792,9639664843880276444
+d7d55ec3-0224-a493-e706-7208efa189f2,617794586,9454382744353428724
+fe866dbe-cf77-2398-5ee1-ec270716a123,2562353867,869069127419045063
+82358298-c6e8-6411-745b-fb6ad0e78d01,3309569911,17059739517873550643
+ef6ef691-04ab-af34-ede0-130e4dc3abb0,1111784870,16337538565662391337
+07b133ee-5496-e3bf-ba76-406d3f964d0a,3887756611,15521445357000753744
+08982665-71bf-cb4d-138e-b40d39945517,3777495886,5735090610885873980
+64e41fff-24a8-5b9e-f369-52267388ed27,3367955654,9661607308907932305
+008b523d-f69f-4baa-82c2-b51dced377c7,934338858,7392675358647321679
+673b6e18-11cf-6910-01c1-de4678030970,3609950758,4299463984923740650
+daeae010-873c-5ce9-67e2-c5907a6954dd,2337268721,6966609648702729936
+1705207f-4fbd-3fec-0888-5635aa26174a,2031058469,8535578861762995546
+8e74104b-0ede-6963-02bf-d58e0a83de0e,1774705642,17021028702711853391
+2ddd5c60-d93d-f6aa-03ce-d1d34fac49e8,991952822,16013992592946265874
+4f88ed5f-09de-1454-4367-26c8b409ece9,1810833715,493852271350752285
+613ccf56-a0a1-0fbd-bd51-afe778e3e5c8,3832717096,1523131893883434216
+191e03a6-893b-337e-8054-0413c44b5097,4129842194,6257327675568770815
+e76aaaf3-e42c-277c-56ef-1cc8e0ceb489,1564729811,8533037830931982193
+bea42c19-2876-db0f-3add-e03624d13594,1990031999,18149072518761703165
+f439f2d4-f5f5-76ab-9e12-815ff9dcdbe7,2787817701,14682793102446845157
+98f81ed2-6895-c014-ee46-45182a1bb16e,1275265231,13303624638539918247
+6b80df99-3aff-fd98-893f-4e797d5f602b,3096085447,16942260698104071045
+1c1fcd4d-bab6-4373-3a78-6c7dea7bdb2c,88656648,7521943351363901632
+2d9af62e-f214-b0ec-c5b5-f747e587ca53,881475248,8948025719339265830
+c60fe39c-32a3-f0fe-40ad-c5cf47c90adf,750691889,11884377292674651101
+4b360857-c1a7-cb2a-4dd6-861bf55b6776,2815014727,9656899842232593497
+ac758968-1810-ccd7-70b2-971f5f44e2a5,4070432557,7390614921080338138
+10be38b8-9553-524a-2f05-86b7875daa11,1615235885,12549258802821768821
+32830e41-68a4-4be6-67f3-95382f43e4e3,1618469329,1132993326304634374
+b47f2a59-e39d-2ed2-5be7-4be5808d25e3,2190991186,13865806113626270517
+3086312a-3bf4-c0b9-8e14-60a9c3574d37,265881116,3612663657585611213
+8c3b061b-8354-cbf1-eeac-a83f4a89f1d5,2699835699,17938016973224296506
+1f4cc623-10e4-9a54-644a-e9f9fc899cd9,2049402608,7445281093277750425
+094c7241-47d2-287b-c571-d2d30d324f95,2770460672,14220376524991742737
+a03d98c0-0002-eff7-b869-fa249ce1ef4b,2451450978,2373000832054402399
+3d0ecb0b-59df-49cf-36ce-b44e9d041c2a,3963655972,2269479920605940588
+d8b3db73-d33a-e14f-a2b8-3f37a64d1289,2198822510,4536239997854346426
+64e821f9-f802-32db-09f1-e11b1f0b6716,4037505890,12516578358825873188
+52946d7a-9868-ab22-f9b5-365ead201c4c,2037523894,17931478536977233470
+d572290a-55cd-a8cb-3d68-2d808248fef4,2358391841,5653556421122102656
+50369092-6e7a-56c3-b54c-a7218451ff90,3991095375,17493532258813863175
+08b9e424-18fa-2bab-6df0-24e7c7909675,2308314907,4695378860806323534
+16d4fae0-2488-aa3d-e9f2-071cd830fa22,4044545652,13908484279916223967
+f30c6280-6a77-b1fb-1702-7ec7456f1069,438861054,14559687344647506410
+3c2df4bb-6af0-a131-aeda-43366a190741,2436861338,12663636195949465631
+6182a91d-2c30-f0f8-4cc7-01d893b8c511,1883221168,13553951383033422564
+340f3e74-b00c-8fb4-928c-9a86c5a90bca,2625845126,7729691518507225334
+0a64cf97-eaad-c27d-cc88-9a0bf4b3b7e9,2714635930,12651250943237422184
+21afdfd0-66ea-6343-8d99-36a6205bb752,2870432741,328554876505765891
+ad85e566-bc49-fd38-c395-d18c5f876293,2022807471,8298320035049122659
+f2a166ac-c7aa-7351-1560-df89dc98b43e,3793016245,8736222636323602338
+35012d55-35c2-b02f-521d-c48a278d3156,1615685812,1053235836967098624
+0f15d46b-423d-f18f-fe19-50d32ed906bf,2259704441,12991263041887796793
+236191f5-3543-1aad-8c3d-80bb7f1c190e,1946777859,9219254771300390012
+1ac246b1-0cfc-c541-76cd-b2c07b1017e8,2111482953,8544225890218789673
+035324c6-b02b-0bfb-7c49-b73d055a06fa,365495609,4398430907814114276
+832662b9-9a7f-a58f-f1af-c77bf386e67a,4263947278,10526972956914158534
+babc0721-c23f-25b5-947c-7402cb83e07e,3912062517,16069078425160125386
+f2f47117-ca63-1db1-6ffe-db1f3bb1e47b,2227006292,15004759848871713774
+e2215062-51b4-130a-2232-9467247fd1d2,2957267730,3155136342658828130
+ce906979-1549-5a33-8a17-a3f0bd9bf98a,2083238142,6282178781651221991
+4d0f2b40-fe01-3ac8-0eb5-99e0b3d5c420,24763984,6149303827261491957
+c53c4c8a-1f6d-709c-69af-d479cc22dff4,3180171626,17730339123656612235
+0a0248fd-6b75-abd0-d435-0f07f1c9e38e,1153044276,11325020100559686948
+a2636b2e-366e-e645-40c5-fbc44404ec01,669870655,10232885625591204709
+0ffeddb8-8045-80c4-3d82-f36596cd7566,2181458903,3365719099464932871
+580c4f02-bd64-77b4-b6cd-612fb6dfb6a4,2692650151,10277706260403757831
+8df7dee5-3c86-61c7-47c0-08d0e2ce634c,2973717307,10219186930429014600
+438feadc-442c-8d0c-d3ef-b21bbf80b565,1517678727,14466996680428870237
+3d8ad1ee-3ca0-b6b6-5827-458f3e2d109f,13069086,4770896906900552101
+5756d2b5-ca46-56d7-5e28-54dc92d2eae6,1927162396,16708865486639881272
+f460f1d6-ce7c-8618-c81e-2568bef2280d,263823335,729168179620327310
+295ab97c-8398-fe65-45b6-4d4f40c5ad6e,961387049,1583818650343801159
+ae73f2ea-8829-3b0e-fc04-b1784b44c3c0,900053752,1793203686599527292
+75b782f9-98e0-24d6-e76b-503d9ec13f75,3645717969,3301637895426129835
+fdd7ab61-22e0-1c0f-86b7-8e33450c0856,756217599,6245189387772991010
+46c7ee6a-5b7b-0f80-b4ad-708488cfff90,668157632,11438371873108903187
+1ea11230-6599-30d2-0ba2-c222b0eb5a2c,3094112314,3342743575867517497
+e1a58fae-007c-89c5-004c-a80e04822753,3198591387,868027914267333507
+69ea09a0-8f18-2d6e-bdf1-e06f44931348,202629923,13114941656458852309
+6d457f18-cde4-fd62-2332-fe914329ebb4,2711690619,18060114674394460613
+257f2b12-0578-ad4f-49d4-70b86ecea01b,1776610344,14769564628238064576
+9f8d03b6-5342-abda-6be9-fad0b98baa6d,992978366,12001511524216723693
+3b143e6a-8bc3-015d-52c4-deff2d8b5747,55055049,11443401419576722807
+650d3a91-8a16-aab1-9aeb-ff16009fa124,1991557460,10260337796192576382
+7a65235b-5a8c-9272-6bd2-52e04ccb17da,2273631464,6633973321524430914
+92cc1050-e3cc-9144-3845-60eeea0674c3,2542950666,5368426204585752840
+be330412-a56e-214b-7f48-7b9096e599bc,2711712770,14830806791298674398
+e7f76cbf-f45b-d00f-98cd-b5245879926b,1871970256,9203698204055519965
+1f954260-6d1c-c881-59d2-27113eac6b48,2794014219,8903271007806755044
+77e9d87b-ba90-8277-86cb-f714e30c64c3,1506905200,10574085267019759286
+b491a5ff-c7d5-b449-24ef-e2d3289e766b,3604543478,14293636657542411088
+fd9a3e6c-def5-02ff-c215-a2fafbc170e2,2528876951,6835777180106422163
+24237ccf-b3e4-a3ae-b932-727e5db70e5e,3549918932,514820993676512988
+581ee556-009e-2443-27d5-e3e885a94c39,3114363657,15338035394719441016
+8f97d5f9-3aee-f8e6-90e9-053cf47f50e1,562443459,14383607499422145697
+d1a0d254-bffb-23e4-5b63-b1ebd9b56a17,3098049215,18143175617458752090
+7266c60c-3343-7064-2b9e-e2e69ea78042,3128069050,5463018786094780176
+a613723a-ba08-e4c3-e3d4-af6ddff53d24,1727232819,10068957892398729784
+fd20b411-e73d-ccb5-25e0-0c655bf130f2,1591982272,12311941280936513557
+e8015dcf-d795-7193-fd9e-202cb60c9278,2604980901,13220273348553723687
+74bd9550-c139-16dc-027b-7c580eaf9aaa,204651121,16990221360194703528
+d5e00851-aca3-0dd5-2834-847385d4062a,3607230023,16884181540284476161
+b12f1c66-84d5-b6c0-3af7-d9c951c7cdf1,2060003699,4370862000728072104
+3e924991-df3b-b8b0-89a0-8d9befb761b8,2783153323,2512804060315254400
+0db42555-1897-68d9-0250-d73d704dcc04,2853526731,13061287042312010097
+258f5e4d-df2a-34ac-a7eb-e4d4288bbc6d,2614503779,7870031112290328980
+3d3d372f-82d2-ccf2-ad0b-90681ef20b04,2897573439,6330122130811486607
+0d39ef0e-5b11-6005-30ff-ac408c9a6ea7,4274563150,6665252348724213826
+fe18005d-b19b-61f4-ddbe-bae308107f88,429253597,16636619846586973128
+1699d335-23ee-ee1d-8062-08b63fff880f,2866173569,7301888799480435446
+e40b2ab1-06f1-b36a-4696-0c0bdb24f03b,1021877637,7159986078101566666
+26387669-9997-23ca-d14e-853d06c4e3e9,2834642523,8973918716962740630
+a4c681df-eefb-b5ed-1cbb-b203244594a5,764199843,16364997247139262644
+e1358679-deda-6dd8-1079-e0ba83e027d6,920961481,7845705561210734516
+68a84488-7f7e-024f-0bde-402803d2e608,3058217585,16443951230589991041
+d7e040a0-2c21-a988-da2c-9385c89d464d,2965439576,4302962964340869966
+6058492a-9fe9-cf0e-5b99-ff27043ea3a6,4035029870,1303965139569888341
+7572dfb4-2d05-8372-cbc5-366f5674e6a9,4103399655,14467980279601146731
+21bb1af4-5aa1-fe83-0d5f-7727196f497a,3996719378,6172791159494879101
+c0d052ae-72bd-1d82-0953-08f5c2114e1b,3808134929,6110768370094365677
+1eb7baf6-fd9f-2cf7-d598-8e6ce0f8e1ba,4127510783,8053836909545417514
+c4d05aad-f1fe-c1f8-d1df-79942530ee3a,479788972,1530854043109237154
+5275d303-3f82-1a52-b379-d79c361a240f,3959210591,10906303563854258033
+167b2f3a-d4a6-1c94-1b8e-4a8a7150f117,1028262336,4390836527082992305
+f91561a8-ecaa-bf53-35ff-f96dd726530d,4257941901,8369136208775550545
+e1e765b8-fb18-f085-c4cc-28a3431c6879,2223016269,17781704436419413743
+ebfb0a40-1ec8-e67c-5185-443cb4d33968,1823187040,13847276605318267471
+fe46c67d-6406-0524-753c-2f02d0aac523,4587982,927612041433184465
+ddd484ab-9351-ba57-f73d-f8742c99bbf9,1849969449,6542981909798891453
+7f23b23d-600e-77f9-176b-7c12b2a409ae,586731236,11723865247512403320
+61d4cc03-1d59-a4eb-12f2-db911c9ad048,2559729897,7819659381533729630
+40d9dbde-e91f-3d47-73c9-75de9283e6a9,4222575252,12268386075249374555
+cc2eb443-f2b2-9fc5-3969-126973b14d62,18040042,7515009365704674166
+e21ca33a-bbeb-fe8e-a56d-c98eb827abe3,2234613229,14017299614297811360
+e72817ed-8aea-4883-2c33-7c41619c2f55,1797888051,9440118988548892750
+ca7372e1-9cfd-d8bd-67d9-e95ddd586124,2807561528,13980214814058664945
+5f880777-f5e8-ed2a-e832-eef417619455,1664307272,12915180612389723926
+127e2e0a-092d-97ed-6aea-26ada7313ab0,2155400287,1155368923345746406
+f13186cb-7f4f-6c3e-a0b1-1b435466c34b,1224655344,10831655054806002587
+e8d3fe19-0c76-909b-e480-186884306ba9,516571457,4180969258645257898
+c78069ac-a7ee-612d-8b4f-6a3e58d59a27,3777836107,7978362685206754378
+f357a8cd-32d3-b7f9-bfd5-e1eddf4f26c3,2463882069,4897741015548229520
+062b9690-5a04-b7e4-b17d-4ed0173456de,927033860,2963718551241971294
+9f1ed304-2b87-54c2-a243-516dd9319bbb,2353242479,4180191252719929045
+cf2e1246-b861-9360-53f4-03235f58745d,3208065011,2572029035790460331
+74e29af2-6894-a9ef-b89f-c04d8abf6ac0,2520516160,12801632979213645522
+e6c8f045-e837-e4be-d71a-56cc6c0a31bc,3345309123,4527519417801403682
+8ea11c41-a41e-0666-cb19-325a31dd4932,1559736053,14487823196632528350
+24687d1e-8c7b-be99-5d59-227c5bba66e7,1497125721,7109156524529247912
+446347e1-2df7-d530-87bd-7f4e57e2ec21,1366608398,12910941637318716235
+54386905-585f-aceb-a57e-c6db9efa4632,3010203492,14151388673547932735
+fdf9223c-e509-89ee-1b84-9d91e2da2eec,3391420317,164668299461542188
+282380b9-c4df-6fcb-ad47-7a5905dc6043,3254763664,2757719224399770583
+faee33f6-273b-90f4-8d22-cd18e4699788,2433283305,15251219316158600585
+75f6b31d-6c6e-321e-92c7-14200bbb38e4,635218496,9010774983729329048
+81dd1c9a-7458-9e87-b07c-cf44127353d8,108553097,16749804559278519829
+d4ae51ee-b3e9-4ca3-9ef1-c41ad4937e93,2558975985,4121222533434598772
+cc199759-15eb-f3f7-06dc-13b120b46f74,2380555558,8412379536373904329
+2268d863-80ed-9553-d419-2852ae6bec28,4004198106,13261726976272298871
+aef52918-23f3-f205-ec34-156f23cc92cd,281048836,588795419339518722
+63fdf458-9b72-ab0a-4dfe-4032eed27b15,2471760036,10591977393712533336
+2cecacc8-7249-ae54-ba9b-c944d4569eb3,100364193,12241485905885411987
+1827ea3e-114d-550f-52f4-802d40e81dd8,1537543214,8444476595809601521
+fc53fd30-c3cb-49ad-3017-1fa4f7fd97f6,4035650150,2298485596472548117
+be8f47c8-f1c2-5572-ac6d-242efa87e47c,3562801302,6633335911408375893
+dcba4b4f-4f24-a766-1a61-381c2efbe43f,90988300,12478161205166993469
+4c1d2023-cf04-bd0f-f356-7180c2136c49,3746030497,1579651672581812612
+469f8e1c-ac17-9e11-9b95-7590215dfe49,1627750913,9588163562839542150
+35f8ab44-14b9-8c90-bee7-085335721703,1312708342,3362325555132435465
+54610bf9-9e61-d0ac-fd78-1664525abd20,2626057748,18195881527209197952
+307d913a-279d-06d4-646e-dca240ab7ced,3905259103,2774891632470033349
+381d09d4-00b8-f972-27b3-0a5622756f67,350699480,15904734768821617085
+cd4a83de-865e-6ed8-5fcf-591d443cef03,530577474,13300764349189530982
+d1854d2d-1005-9eb3-af1a-9764484cee2d,931705112,858843027244905835
+66f6b221-7784-0882-f1a2-16be8f16438d,2201979888,1871897672079018539
+d2dd2833-4d6f-c35f-fcff-66ae5c40d0b5,2442858486,17279124673361905755
+b21c3f37-5aa3-11c6-056d-fee7de296c82,247181744,15987084409228175256
+3cf2bf81-1a4b-21a9-2617-f3b4cbc0d0e9,1594994319,17860145627678241104
+70e04540-ce86-9219-018d-3e84ed4139bb,3441517896,11954674547155790289
+361f8d80-5f6e-b289-8f84-ed5501217919,3203957424,10179521186579854964
+693b0573-51f2-faf7-5ac1-a4aa9290726d,435844119,11557991112885174116
+45973d78-eeb0-2dd2-a810-e7b100431972,522922174,5661791932064212406
+1fd34e9e-e8de-612d-a6d0-05023df8bbc6,1070487342,12184060524194769841
+2f7185b6-99db-7457-f229-238785531068,1612819473,13718897730532110590
+7310c80f-e0b8-e9ae-3b6f-9c369dae4c5b,4207247957,4691368799129226200
+c431a864-c706-419e-fbcd-8766f30591f4,573363962,14455822807119778922
+d2d062b5-e824-0bc2-c858-c4e8f4d0673c,336313414,3833097983347498831
+16ab9a8d-c162-a133-17da-22aa84a61117,1951035428,4860484218574887766
+252ce819-7936-5ff0-b9c6-6612b568995e,4066335621,2619554327028191841
+2bdd7d3f-f11b-0d7d-8e38-29534f30bf17,430396921,6651500723080844045
+8eeb79eb-962b-d45b-4229-c258b61e76f0,2441018256,6144195646703882738
+e5839493-bb73-049c-eb0e-7f81d653e423,3123597779,2830405054996433020
+bcf52b96-e0a8-0873-0e9e-5f3f299214aa,1993766306,3645287413217048584
+827e6376-a1fe-a0fd-ec51-0524c19739b3,1299746439,12242690414291492237
+659f91d0-b5e4-6aeb-5eae-49768f242778,1772640234,4434418966219033500
+6c0d9d59-7537-c125-cc7f-c602718e49d8,3196983030,1203140325596587190
+5c8f99d0-9aed-d501-8f0b-dd134ad92f5f,2289823259,11505492721777620470
+25d296ca-bcd3-b09d-74ae-84d5bdd424b2,929025927,13094640000202542878
+8d6be3ee-d565-3e66-2591-f965c07e1a2d,1111445481,16958381990694944250
+30292572-058d-eced-9169-0530f84eb292,1584455355,4254341099443068792
+2489f3bd-0894-ff9c-51ae-f82be8c87000,724073345,10679544300042304714
+349dcfd7-ee4a-6308-1025-2d63667b04d5,1149754755,2791875124180401259
+105300ee-5eba-b96d-82ba-50b6fc1bf7c6,1320251762,8424012421739125665
+6377501b-ec8f-608c-da27-8bb18335bd39,2126324911,6606771850091738833
+a8a9535d-effd-e700-055f-3f3814a636fb,12040838,6871267284260413789
+32b52e45-b069-db3e-70d3-775365b7ef72,3913820223,12131935806376103115
+27250c0e-b56f-07e0-27c1-bf2e4793e27f,3845951288,14735190123772483437
+b05381dc-7b27-0f12-c4e5-20e99d4c868d,2408847473,16349504784802126112
+58ec9b67-b412-0a94-8e32-7cbc5fbc8645,3551399193,9376607317736037808
+1a9f949f-dfc0-5933-af59-61380b97cb86,4052201098,6617454398923522661
+a102e013-5c4d-e56e-c28f-0d58dac0fcb9,2690367165,3561741210820406546
+7cd34f6c-568b-9b8a-24a5-a9b85584882d,984179920,7669746836591329210
+b206a651-f861-2391-773f-eb168453d4f7,3109816474,3640580461444068212
+9f7da799-184a-7ea5-bdad-5ba4086d5043,1105464811,7080686654975780143
+f35914cd-7182-26a9-49b4-4cd8ba20ff1f,536394070,9457716600974484585
+816f4f88-d3e0-d76e-99f2-99c8c0822b70,3172985397,18437726818265057568
+0396ad62-fd60-1d26-7096-2b6e7b05ab10,2678440617,11674612093830722641
+d0e0bc48-a840-ccea-d0e0-a5e543f81301,19881116,2168092596008965357
+7e3c6803-6319-7fc0-c299-eff5f33bb488,858397257,11105056044655821973
+9af6777d-f574-db40-26d5-64f409cc4ef4,2868097091,18416511414291327843
+d2222f62-ebbc-2901-e31b-53747bfda04e,3427845133,8505875072779560747
+bca60a67-8de7-0e7c-9fc6-bf3c125aa0c1,4246302654,14641302254484931688
+0752624e-9b9c-f9b9-0baa-875ce54ae26b,2358756323,12765565912073828719
+e23471ed-b747-c14f-15cc-80bf70534d82,222037794,8927509149939062681
+2acc6d68-19a8-c392-97b4-98ecc4415de8,2053615545,11721304166136143397
+49a4825d-c66f-a1c7-e912-3adff64f6e8e,2962806791,1118854223542570427
+a3684141-7dbf-0d30-0d33-de0aae574752,3602250688,5069500033078089946
+2eca0989-3311-8566-e06a-eafece58ee85,3459697548,15463044077365644324
+c45a088a-4e35-94b9-2ce0-3a93378c92d7,3113448419,5428980222624063657
+151d4e8f-5f2e-cd34-a8a3-677d915e3bda,2915737675,16665780071646895454
+cfaebe5b-4ff3-1109-b7e1-7a4b21db3e8b,2297705572,16195816163543933655
+c9042347-3cdc-ea7e-7d0e-006a1ec202a3,3602855003,9919967411845522035
+572eeb5c-1ec0-ac3e-bb71-7cf0f5d01302,2368370005,15761803432960004621
+77f05bd9-4bd8-10a4-ea5d-704da0f61fd6,2227910376,1387182518338015873
+d32711d7-3188-024c-49e4-baaf2c23b364,3668820053,11980799666190235239
+f3d47b78-cc57-25c9-d26a-d62e414db3c7,457393250,12977649768956076648
+aef1f928-729d-97dc-5bfe-d5f2805e4b1c,216757417,13956247640273531489
+9c4b3feb-82ad-574c-9b7b-4cbcac5c8917,3979416238,15258468240194998813
+3ea191e2-167d-9c6e-ca21-6fdbe2d4b108,2589293544,6138130873105494934
+4da8f7bf-f08a-512f-f753-437a6744af56,371211200,4915865315238814970
+3f15c4c3-995b-a760-e880-5bff296c00bd,1335908143,3968687351719066391
+2f3fd42c-1fec-51d4-6cb9-335db84f8bb8,868105793,9058465583576200871
+19821352-9c42-e4ff-7aab-ac81e6cab87c,2861680818,2748254201330145583
+a083f181-aa15-641e-6098-30ef495a14a7,1027033125,14254731236209608269
+18729d9d-ac14-361a-ed23-8b9244059721,4279513133,7670518953880535520
+86345f8d-30f3-64b7-db92-1bb84d4806d8,2057656668,1620762737545930394
+45948bd9-e6a1-c5d5-b006-bb6d3b85efd9,45388284,6264425772479549388
+17282e62-6ba3-58a8-13ba-29696671ccf3,1464396090,16441573759124949969
+7eb6ed39-f14e-0f9f-1ccf-3c2ea4755d64,2641067910,65272361456264672
+f8bd0688-e1e8-4637-57a4-7d1e122c7619,814954307,13819113314805485291
+c5a445e1-a89c-a60b-04a5-2765b4dd9c48,255710663,8624364305976518118
+83d02528-1961-559f-8565-fe5596c6a158,48763365,18208674172891153601
+d2be4fce-0080-ed68-aece-d161740376f9,1890606131,15444449218076497233
+d0c0a405-4735-6007-d569-768303cf9f7e,3145332391,16641790247721576645
+1261e996-b463-32cc-f752-c185782322ae,3912577070,10543152648831034766
+6d934df2-be77-8218-1b92-3e5bab7b14ea,2244274276,16747138200613858651
+cd7576fe-d601-5394-93aa-e28f4c4aa848,1903197614,1786419374356753976
+f2608103-7ae8-d5f2-768f-1c2caf6de152,2566233718,10359433454244230698
+b0ee3734-44d0-848c-8445-2f2962599b87,819424836,383891568169127916
+9f283900-310a-8085-bc00-f72bf78aa89f,76948801,6236533638809210785
+84b25758-94d4-7a7f-6707-1649a5e55f8e,3187739580,1671718201265868967
+37830569-c381-a4b5-1860-4021dde8a8fe,981756998,5654421230782916941
+3826f6a1-668c-0bf2-b29b-20ba7d3f045e,1992641732,17126957676060879211
+065b70b7-d021-3964-5a3d-6522d54a61bf,3051935690,10136490354473481154
+9c502686-f7f7-b6ad-db16-b78ce04f70ca,3869968922,11883368108187092925
+ebd0d713-7de7-f1f6-d6a1-b5e9af3ab1f7,766056458,855935714792708886
+b8dcbbdc-f2dd-ffb0-43bc-014fe68724c3,2995794491,3022198712867389713
+1fd6f73e-abe5-2ed1-c012-46800db7a2af,256133406,5651474806581537559
+02f1c656-9d3b-0bf0-1880-1ba641c21e6d,401719208,3910357949649543841
+7d56e544-771e-b917-9456-04b29ac1b6e9,3221397464,11406303471560619897
+c38c15af-1be3-464b-2e9f-5df598f4d5df,1990463623,12588497539081418815
+43233746-b577-1ed1-44e0-ef3bbc89ca9a,2864715923,14351222005537454735
+ea155f94-e3b3-1a25-8aa8-7ccbf82fc383,3577819177,6215590508735307658
+a13c06a7-a88c-0bb1-cfc0-434847eba85c,3413548526,5049890517435183810
+b07d6572-1d6f-c137-3f64-490d3753b7f9,75328506,10142101680739629581
+8207dbc2-e027-a70d-fbf0-db385ba047f6,2600194829,417330897330172283
+d337cfda-8d19-aba7-b81b-de991f7b11de,2613058252,8677342653314986059
+9129bac6-ad09-d089-cffc-c8126bc44e42,3671223087,10314750501427017941
+10d6a1dd-504a-318f-927e-62d26b943da7,1840644116,559222524428547187
+561ce930-6acb-518f-16cf-8316ed546368,1702751289,8674529254292849437
+658afcab-5a60-d8dd-637c-b3dede5b39d4,369781997,5557264759123032977
+c03a3824-a79d-2409-6525-3dfb7d97946b,3514563783,5068928623632894211
+e0febe48-708e-4841-39e4-badbf01d7e9d,317856783,10316016505774922065
+735d67bb-b879-3102-53ef-301c501f0c8a,4011427509,836061289410644164
+ee8c6ef2-966f-cdb4-c505-2286e61e81c5,3465877149,1850984753547527545
+ec7d64b3-5158-20fd-8be9-cf34b546c8f4,1411153653,8873169271260788227
+e8c5e877-66b6-a0d6-294e-520fa230824d,1506519531,16293219052747261749
+06bd8ce1-16b6-0a9c-29ee-69a721202b42,3923774361,11827891205573388316
+0d6207c2-74d1-f6b7-5ae3-5822f377eda8,4237214723,7565434426886381084
+8b1acb38-992e-24ba-0112-8476ef6a2bec,717127432,5929413160265128538
+7bf7d072-5706-7dc7-a98f-d471382f84e3,3701904348,15077309902854397377
+929fc903-d672-6384-af1a-9cbff36bef10,632145510,16833264817256017847
+30046457-d68e-1177-d498-3f15519513c8,2259225614,17908274570684926917
+9258b409-b7db-dd56-2d2f-660b9f3dad33,1954058274,10245707903390203055
+90d0f9b5-0dbf-b6a1-feab-d08d4aca6762,894463840,12212329388141664512
+63277ced-c5c8-b37d-6659-3179da5e4c9c,1206766350,3894154048090063628
+6e00b14e-5420-1391-5968-1dca5cff263f,4043044951,12749789887912063786
+3eb9ae3d-4e72-cb74-6f63-644a6841362e,1322331754,10884035501250641257
+b751796b-e54f-3758-35a5-e6c15ecca79a,2434205964,17204900204156546564
+d2f9fada-65bb-54da-d05b-0ec3c610abb8,3821003069,5551824897657421514
+3f0310ad-8126-c1ed-7865-dc1cbc9c4230,1580006535,17990894893021555501
+64e349a6-591b-18f5-6464-3efc39b3ed65,3891043614,7971020859661198705
+fc2fc330-9151-fb0e-31e8-f8230cc0b126,30400901,3662409507852872531
+c272f090-1c94-0976-320a-7af884a0ae7e,3457449492,1505763911283577104
+60013fff-bd06-4255-9f8e-a6c58a49bd0f,1473416496,10372618253976228626
+4c3a0a9f-b111-6d8a-72b8-0be8a208822d,3512500394,5547223631612376313
+85d96f6c-df21-104a-a3c4-17ead59a7e08,2488741923,17929137627170430915
+bdd6a44c-cf3b-4b1e-037f-ae5546e5616e,375791849,15936397170209522066
+190392e8-c6c9-1217-43c4-615398fc69a4,3367297152,9968460648848883507
+7cac3b04-95ae-2e95-6341-438cb0e38617,2979364375,4343379098473201683
+7ff1e51e-d350-1d0a-f7ae-d4fbfcd1f83f,4015262398,11696239341660301460
+7351b3db-5d05-7c86-c691-a7cd5e54b720,1020118142,5832938320016795058
+e2bb6e34-ebb7-e1b4-7c35-49fe1fe70101,3438146591,17406766972307426105
+a0d70106-9b70-6c77-f6d4-8cee5716843c,3998270369,6482620808707674481
+9574501c-e1cb-1d32-250b-6bc5b92abba3,2549141022,12287336014144009165
+744c4972-8ccc-8292-2fe3-9419b2781f0a,3197049977,5755188183343356786
+8d51fb3f-29ed-89af-935a-6fd7b4221064,3849850913,5953452575723389801
+7ab76f1d-ed76-e24c-5fba-ade7b526c285,3530757417,13206255911635000867
+d50f40c9-bffe-1f6c-43e5-771ef31638a6,3782441303,2053513038583982469
+d0bd48b6-7f61-7826-06a1-8edc5603eb1d,3421162567,1704309389341197466
+80be9f69-11f7-e429-b9b8-4e255a0d26cc,700663400,14870500532761950063
+71b94724-d498-1f49-7353-d9026e7af0eb,1964469555,7221724109662732976
+fec173d6-08cc-d738-b02b-c5fdb850011f,3589594035,9876106585718483624
+a1ddb685-fa89-b609-89fa-013984c31419,1809780858,11422670310588923171
+1b7acf33-5533-7850-6a6d-9ca0cf561570,2432037038,13009913574112909952
+a9642355-43fa-c3b1-3809-61ca4c59b859,3774682453,1140548812410375043
+ad2cd4f3-4596-84bf-80b3-5d0a679de091,1996676850,1997865855658278549
+9a9727ce-01e3-380f-979e-eda30866c266,2441995215,8405420862145076558
+4b702e9c-3eaf-2573-c37a-cbf8d052d738,79047449,9534605187838341249
+b4a06019-0d55-ddd7-f1c0-5d8f0516883e,1788450581,1260126723162357168
+21facd82-db5c-9dc7-6d6f-917391b23e94,3420444960,8295176549490128755
+afb7a95d-dcbc-bb15-f691-92fa9e5b1560,2692018849,10945538213643491703
+2028814a-e67c-1cc5-db97-9b4e1e23036d,55837676,8892759030095268344
+e08fbe5e-4841-a2ab-a1a2-dcc47dbe1777,1181314281,3343272506257056707
+cd471d4b-0b0d-dde0-7bb3-d6dc73960398,1568078700,4323501898504970903
+3bd288c7-f987-c319-380d-e9fccbc80a83,2639995129,1992224912969257240
+5f756ac9-fe39-b011-4e02-fa80e17465f1,4074270971,372381246164429293
+d428598c-d477-d7a8-620c-1c2c05899a38,4218340065,8498747718171601579
+8793339f-984a-6c17-9c45-818089da7a88,4196237891,8641527293817404480
+420d287f-d522-7493-9107-08f37b53d538,4056600217,2684699035285521663
+e1f4c175-bb10-cdec-e9ff-c87757f57bab,3482993856,13049586159503342012
+95e33ed5-5352-bfc7-6804-8a799e599ede,1268105453,3272715611921254509
+c3e0513b-9cd4-4545-4ea6-01b01959cf70,2919077772,447284280548695237
+0f4848fe-20aa-e4a0-3b57-63f2aed07957,235173280,10137010041014365590
+a056668b-7f55-c655-ea9e-9272b2a791cb,1762006505,1247712400644828000
+fdc6a519-ad48-2781-7368-39bf00305647,2778297598,12503232418936357380
+45d7363a-b38e-36b4-6e8d-400b569107cc,149006583,16119458613037550572
+8a5f3a1b-9ec8-41fe-09d1-c2e258ad3eb7,3086894122,9791031407523193632
+f9a718b0-deba-b83f-eba4-66fca3ec8db4,1018066887,8356962031872853612
+fddf1273-0349-86d2-40b4-0eff70a79374,2669024285,18224756672069537056
+f8a3b4d2-7df5-2f66-c0d5-bee63566fc7e,1036339413,4492799187024365269
+4def48a2-4e0b-2a04-5a8e-d9f6a4168f80,3649311673,17459011822695461496
+c5b49b8d-574a-ac9d-5b34-f52c9f795ce5,4078453042,5975046864083065075
+e93832e3-b1ad-a42e-2f5c-0bed2f516f6a,3792985182,12330843196176939830
+2e5e3e88-3ff3-41f8-0d98-b592fe852222,2956816400,7250186538910138443
+8b436662-d790-90a1-9034-454e1100693a,2006950163,14876792226030934152
+099ad564-a303-17f5-ac21-0a7baebe2b78,221310691,2375712940138986882
+c80035e6-19e7-5680-7045-61228d6d210c,165356851,6729540819127386460
+4d67417b-1729-2a42-acb2-6c717a83dfec,3393896648,12394954890940227865
+378d5bde-ecf2-1376-d97a-748d6ea668fa,2746845237,5709660383503879967
+a92b86ae-52e9-5e29-5c5b-acd7dd414b4f,3285964472,1357857241566197491
+ee1f5d71-653c-1912-52cd-d6c766507c80,2047457739,2711734169215055576
+945eca29-d8af-04b0-5b18-41d6d7bddc6f,2936681953,8090142882205289999
+e540097c-45a3-e523-844f-47698c17b0dd,3669754155,9384440189201671596
+88c9ecfb-c5e5-fb55-6544-ae88d7bb753a,2438322354,16759364265787141223
+20c16da5-1f00-451f-028d-05af2b1f3c94,3546491905,6624907199382664502
+9b32db06-5943-8e53-8467-4c83679ed18b,2214550527,17620676685718733795
+14c240ef-257c-e905-6da7-cf8dd1d01d2a,1881456501,13807610454752008916
+40a39eab-a50d-ef02-f157-4a5a07d969a9,1594440667,12352901949915053479
+fc515a38-7214-2609-05f9-8e34f2443da2,720607515,11859854766696224882
+72324baa-0100-ac2d-2c2e-8de62ef96749,947880992,18104193273675122702
+0c2d161b-5117-2d63-c192-e74db99720fd,2629173964,12949004949221338694
+360bef28-bd3e-00a2-213c-c6a3d5a611bd,3474754544,16635530179335056835
+f1553a26-93f7-8e76-6f74-4c0925e26171,748661998,9388506740453822339
+ae30d2af-f6a8-501b-1a09-3b0aaf3293d2,2855411375,14687274917342830058
+2e1f9cb1-6866-51d2-078c-a2a3d3d10ccc,2878277231,1309023763579118899
+0429cd35-be09-ed0c-c9fb-3bac2aaf6aa5,3837343100,17665093793706224023
+c679bc59-fdd5-eb91-2bdb-723f8dd27748,3392350130,13037741748911230827
+cfe33b3b-3b8f-0725-41ff-4be75d307592,1270777676,976502413030967672
+ea033269-fa17-963a-25d3-23dd06d0e5f6,4207148739,14908072152890388131
+a5cc4c0e-016e-df12-8708-272f3853bf40,550808017,14766220029922520831
+a603d98d-63cb-a0e6-3d84-05bcd054ba3a,405034581,1739724590111280337
+4a0531b8-71cf-14f1-c8f0-3440c4e6a19a,1022171310,13058842271339203913
+0351be15-96a4-0db9-a47f-ea9cf6f5192e,1378840953,974791663690409301
+007f80ea-2389-942e-4af0-6cd437819154,3509257213,9480509325411821481
+8dcc88bd-a6bb-e456-3567-511881a973c0,3202932626,14805333766104808934
+dd6568d7-6699-c068-5e7c-1812b55b0689,3753113473,10255259389187036545
+d0b39d70-fc57-785d-c8b2-32214bd295ee,2139853586,5452286237994962831
+07f197f7-ab16-6465-f4a5-543432c5689b,513030860,3072683108871206479
+bdc8bb1b-11e2-b31a-a18a-7a1cf554fa4f,1414967155,1894326512489951981
+14cb70ee-9a5b-db37-3fd2-3f7d1b2f7450,3347850760,11392125239276823526
+6609a200-cb52-7d5c-0349-2174ecf98cd7,3307352305,14613942892819581457
+10435589-14de-c581-bde0-acb724587547,338112867,4210575259837671016
+39b515b3-bcbe-5389-4227-f605470cc280,2090833766,17273434929276163611
+38a48f9b-feeb-88f9-2378-2da19f8db1e2,2755129467,5797823317497696797
+264862c5-3755-bc9c-0785-303ab491f269,3113282133,2494349503140421747
+96cedbd6-94c1-cd77-9d5b-6af2d29eb858,131863390,3336159766982560945
+cb23c075-d5f6-a82c-8863-bdfea3fbc76d,2952512389,16400945767888374499
+4eb24218-f54f-ade1-8374-3f58a49094a5,4270317269,2008973210316986784
+b60e24dd-6149-810d-a89a-8042c10afc08,71520293,16808987430367617476
+8069853b-e037-c23a-637d-f7364211b717,667892263,14217035413538021983
+8adaa755-f69f-8d8e-9c19-e311ad1a9781,1685568521,6448938992309128401
+ebfa35c8-99cb-152c-6e1a-c73c3ac8e814,4065123167,4160164939192401109
+8cb92c42-b12d-82cc-e6ac-8fce2a1dbc2c,2026409035,10598247804777273708
+18a11bcc-5192-bd3b-909e-b485b2efe96e,1487462543,6384672994455874895
+a28bbecf-ef81-0bac-9c26-53587c6f3d77,117084215,16644911735748270555
+4b4dbece-dedd-afbb-4e60-1731d0c0b40f,390818102,17425752064800323558
+a3e9ba5b-1ee8-95f7-dcf9-fb81ad2f5932,2241063598,16459218001074920007
+0add0b24-5897-a9d2-c6b8-4d7385aba0ef,3785302692,4095097054302804965
+16bd4862-836a-eb84-113b-15d25dba392b,1598627259,9005182299108229230
+d75b1d7b-824d-f4b5-713e-db34fe438346,3927683058,14745843146511946042
+a80858cf-9212-42fd-e78f-e216be2ee155,4261034233,6620363385691712633
+a7bb8900-5d78-dfbd-cf8f-32af2423aee7,1628820187,10640372958705813982
+1f536aaa-6475-24eb-fb0a-df35d508a13c,276881796,11013756470577636445
+1bb8665a-1e85-7801-2059-f6ce005d3487,3349900742,17050759353681350963
+b705161a-5d9a-af5e-b869-27a96183de1b,1065291351,6134479110929232964
+d176e2f2-7fe1-e01c-5acf-85b2ce89e100,585308886,12129212650028304644
+115c1640-3987-ea6c-6f7f-0b60e37d5b45,2668141307,7404701018588796649
+4b381bae-c462-8eb2-c0b5-27a2a4e1a013,2082438474,11762275857672573987
+8bfce601-a04f-1177-7ce1-e32cf5b051b9,3951083410,4744596696932636601
+6c128539-3f72-6d97-1ff8-fd7455527f8f,2157123659,13210614367887254513
+08ba2e31-6a12-d8a2-5620-4ba882b9bac0,941830127,2249337542511857670
+ff91efcf-6c38-6edf-13cc-4ff6decadeac,3448510907,7362755374943804857
+d5d255d8-bd89-020b-cffd-37de399e7f40,3714575467,811760149479668370
+51efe711-b826-0711-2c93-fad387f8e502,2209815066,6056081827856916477
+5fd42b2b-7efe-ee48-9942-205b336d7977,4250300468,9558480406089392875
+6fdae938-25bf-84be-185f-84431ba950d8,3204739996,501726585743867933
+f54411dc-a3e1-4537-8810-064c61bad10c,1537428922,10685161666353672456
+fbe40362-dc54-308d-4326-8c9973d98165,894845550,9707187099444555247
+9a8cc442-dd6a-a69a-8793-871855079ca1,3106938729,13251759884165497950
+a2669bba-326f-8f79-23de-af069c7033b0,3941059493,16606792644018203458
+3daea202-bce9-8172-a395-ec4d7c2b600c,1585912005,15646195648544208022
+e2a3764b-7aec-df0d-c874-26167e66a8fb,1858269934,1123775854690101417
+e7af0414-5488-d0f5-21ef-5f4d7e5b566f,4211138855,13972495212214367542
+aee1cb67-4aa5-6338-d922-8cdb4510fdfb,524867093,2288529945284103176
+014863c2-b08e-4cb2-f1c7-7599a995918a,1283327828,8190018980266445163
+98bd6c61-bfba-fc07-a610-a14e127290ef,3286934842,3571992089373726582
+7b2d2aa0-9cdb-42f5-cd6d-9f7fffbce2c2,3397745073,4579881451901419786
+9df683b0-565f-8a7f-e88f-b7429ae77ea6,2272952963,9885648795721479758
+a5ab1f6d-a1c1-bf72-3ba2-b7db9b94dee4,2410655647,2600174271836937949
+187dc3f8-f987-c795-2692-c06ca4d8a300,1411537921,2238783972258188663
+77ff783e-0f1c-a806-e142-0ce8438e50f4,2712292664,6092700031562042065
+292f0040-b4ae-bb96-d84d-75795bbfeaee,2135118103,17479022586581064199
+35953d5d-8bd0-8ae2-ea49-5d4a51d629a2,1550393641,615665485693167335
+ae007c61-8086-60cd-908e-5fc98e6a5112,558705613,14090981856213432248
+5bcd73f4-d9bf-be82-f443-76af424ce80a,2752215960,17249239229363252545
+665dd6b4-c33a-5fa5-c956-d8337d68baa2,2270540270,5766787003068286745
+c3068e49-0034-5e90-a50d-e61ff3e5b4f6,3242966526,4788805011692022409
+111f2722-7aca-42b1-efba-a58e5ab760e4,143613313,1595135676794508474
+5c9c1fc5-dd10-8962-3e7a-ef3c8d7c6ea6,2648208996,10674346076842745627
+20ce8194-de74-b703-f1b7-4bb5ca9e5adf,2270819127,15168841344569539617
+b3629c98-ad71-5816-9aba-2eb23e4f53f4,334400737,11051461150832420022
+2ca9170d-d419-f641-2399-45b3475e3996,447962887,13493723535760017629
+6f9ca3fd-a935-24cb-22b8-1b6a3255cadf,946239164,1918234734502794099
+e1168333-134e-514f-2d25-b84cfdeb2d0b,1921973112,6687211054700525271
+0e3dc79f-79de-937b-172a-9d9b3b21a4d8,312171523,16785822478152205164
+00de9c83-99cf-b04e-7276-ea62c7997d2f,352590795,14274366481032745705
+db960b62-13ec-2de9-dd01-c6e85bd29a7b,2849038609,2308225386331190908
+9b6cc81d-5926-ca87-e412-5deb706899d0,1873922317,10380246474573498297
+9adb5ad1-9366-39d6-358a-d326b8cc7f62,212064945,3084150754054155850
+468190be-00b5-c1ea-988b-bfed8fe37428,2617931786,15142878750715076185
+0c169bf4-3cf3-26de-f7c9-c7306c94ddf8,4136210446,925027103002667050
+cc251240-560b-3849-e731-753ea65e0136,1367035526,11735061486485154519
+f335fbdc-ced8-7450-eb73-2f80197c0481,3174239935,17717949769280681918
+8b3fba3d-2c12-f3d5-ce93-eddff100868c,802824603,9381221461319082709
+25d24d3c-d897-47c0-457c-8203fa3a718c,3031734634,56614075153829426
+ffb31887-2586-5414-f2bb-951c92b361cb,1852613373,10548135909051619131
+994c65d9-2b18-7cf0-a3ed-da110e382248,3575369290,7943202861191680808
+c53bb3a1-f4e0-faef-dbb1-2104cb0d77db,1124314338,6450291290635345310
+f216d26f-4364-9755-b8a7-096fc1435bb8,1860370795,15716268351908086842
+4cc4176f-b244-c1ac-c0c7-d4a05b3c6ec5,141333429,14405793539693400920
+363ed84c-d82a-225e-0fc0-c2c57d918261,447000989,16363225033048623433
+6446fa96-0ff6-092b-0688-bf3f83578f3a,31753047,1099163026990820298
+c4d5552a-c645-910c-a76a-fea97fde4816,652280563,14789481609533048077
+2ee69152-8329-6026-ed71-00c95d23b0ac,2104436092,4229025986137507922
+801a21ba-1f7b-d689-13ee-156b34adb35d,1432421077,10530958187777101220
+e1553ffc-9cc9-6018-aca0-6d371dc1772d,4064637501,14724137367789506395
+b42f57b5-a041-e22f-ef41-66b2278574fb,3774389174,6666943771726428681
+cf59d8ab-5ed4-d109-2abf-629fdbc4e5e0,1966494654,17044517532048101991
+61541f12-6133-615b-68dd-00303aba823f,3869229826,16786624427423572848
+726ea070-d06f-6064-b868-ee04b4a00620,108507445,2610861486624410738
+4879b029-7891-9097-cd5c-168c66bda679,1851450833,2501976552080380298
+54faad9f-4545-a883-fb16-bef8539d1b28,3852091663,17503341458625697555
+f4a0b031-b191-b0f0-1f7b-d6bb1fb88192,3482878687,13868585387577395139
+8621e5c0-7a32-49a5-d03c-95d194243003,3785188523,9176847003702084378
+062a1ec0-0c5f-c7c6-fdfb-53805daa8bf7,760361234,7600677605654887482
+2f5d4892-f686-3c48-ce3d-fb84c5e859f8,3048526181,10085519264295120544
+24a66b4b-3742-a327-05cc-4771385605e6,4229183605,6030025229787201780
+0d17c15b-3ab5-7f03-55e1-7789c12bd316,2946627188,1435351430396789352
+0991c260-9837-4be8-39b1-4069fe203bd1,275260783,2649373487728219476
+38e49846-e86a-86ed-7bc1-352a7ce881eb,3785709954,16051717368538848052
+290ce702-fc74-b18e-66d3-62dbc32466c6,3296793217,17801811540282184298
+335fa77a-3cbe-0d51-98b8-0d272b33114f,605793445,6558856387471107910
+40b8f676-fead-06f1-23c3-316330233bf3,3053736024,9008642485537865838
+b33e877c-2101-6b6a-b3cc-0d2c1608bba9,2764696762,13525217487668805813
+fd1466c4-6dbe-c2bf-8a29-603a08f3e217,2512041873,51569542511693826
+dfbcf0c5-f7a1-3622-f7fe-cbd9fcef2590,945393214,1952092549191102826
+a385cca3-6b85-a4bc-9ce8-971c8bbae716,3723573651,292480869063406078
+5e3e74d1-2457-33f2-7741-637b23568f32,3699046415,12664622394788058644
+f5e72f4a-d63b-fff6-623a-036e8d7fb3fd,2676196615,5375660766862826025
+8e80a768-cf61-26f4-496d-8d4c67fe6b8f,3654660579,16071004057923883532
+8acca5e7-fcb5-2c25-df14-d58e2bb8ffb1,4165645294,2887025003817585056
+77e19365-67a3-ea90-0664-3e841feeff01,3443427768,16807687530758034905
+0486ae88-bca2-6188-5230-18ec9f781a7e,1769176248,15914931366546149661
+12232468-3d25-5cae-6fab-35ac68a6ae73,3877029772,6975606312172909566
+c5d66e08-f834-57cb-5215-022b2797f63b,91790430,3442689544412567266
+02ceb6df-710b-78cb-cbfc-9628a520ce20,3536448970,8959948600335806739
+fe7188b1-6e0e-92f7-7c5b-b4e0226fa051,2581861256,3079185592829524682
+506bd8cd-2820-064b-33c8-3de69e18c2ee,1990776759,14885641437753087724
+736cbdb0-4c66-997f-5427-4992dd4457b3,1963597506,7705130802025128798
+84a5bfa8-1ec4-1ea4-6cdd-34c31f400c17,4047606014,2394356676437456792
+035005a0-7e9b-6dbb-1d45-72d12b0ccc75,364976936,11620236359291418869
+1ccf0ff9-b819-2e32-ed9a-30e8762a3b4e,2961412616,8230414547630788634
+7c50ace7-24dd-3b28-de9e-643e614d5c78,2102978517,3652094145249881015
+478bc1c8-fec9-0207-2cc2-5239fd541109,2799473715,16327294965269555861
+6ad48508-e3ba-4696-7ae1-78becda5ccad,689766055,9765375159881386676
+7295c06b-502d-ce72-2318-a35a3ba934af,4262474398,3132534336806284644
+f4e1c038-76a6-a98c-6f5c-6b27b6b0e0f1,371876076,13484338397146183614
+29e360f8-6212-a152-40eb-26e2cc18b7d0,1440653614,16303074776256511854
+24934935-1533-e348-2685-74659f07e4ba,3278975608,3086372821868188611
+5a1bb659-6118-ccf6-8134-103f5c7abc62,3964304485,11504008224689510970
+fc5b299f-d112-7a3b-50e2-b1ca45ce0f8f,3501906383,14832223266280207939
+43b995a8-10be-6ab9-628a-863b27973ee5,2082968818,11180698603656172455
+1f408a9b-bae3-5835-becd-9ebe606d2064,737396349,4285117710803483773
+47cb2d4c-ac40-4ea7-6fa0-0fe84a5690d3,409034745,11070379578547786051
+c1673552-0597-9b85-bd0c-b88cc8a64d08,3092892616,9406300432328188630
+b2edcc42-62c9-d851-1149-223dc371bbce,180748259,10997447972248789375
+4d1faa84-2e8d-9a28-4926-93575cc27785,3107009688,122560133758499892
+231a9237-de12-81f0-5428-3f6e6e20e921,3239849083,11983854366409864149
+a0989a4e-e9a7-35d1-34af-8eb3c2f257b1,3664467996,12759445779503208288
+da1c1348-ff5b-4889-aa30-e0c4f3eaaafe,2910178986,2646910875049914891
+3c644780-7f2f-b33f-ddf3-6d1947699b95,3209133495,433803749029537674
+e7979b9a-fe84-2487-896b-ff5251cb619f,3403181094,1204302045179739828
+d378bba4-0095-2870-a440-ccf4bef8285b,3790034750,2251510606121252346
+1c3633dd-30ad-e3c4-10f1-0512fa6f7fc3,3084725632,9526779643668072132
+b9bda8a8-2d1e-740b-9089-35c3adabb845,307971534,3022493876794550756
+764234f5-7ab1-b48f-0e3c-bd144115cf48,2843446335,11101354316302311629
+49259f36-711f-3136-b3a5-5c43f22d2dba,614957172,8252531073914569488
+88081ee5-79b0-15df-cc95-b7678b0754cb,3960780825,4423201145069450712
+b3d424c9-505c-3a3c-86c6-3544e9e2757f,2072725381,151929705762804484
+4852c9b3-a468-986e-0cea-029a5ab81aec,358341041,607117754505258028
+0fc3a23d-a83b-ff84-87d3-4f5e7b8067d1,2586599531,2316810718670035780
+001da7a9-fc28-2b3d-4a58-277d70ae47d6,1028196576,14123151228810030941
+df3a627e-725a-b333-725a-a3852494f5cc,1549680566,1056375232167818523
+5a9a30aa-cef0-fc44-035f-5c80897b19c4,2964847015,15160913560866734241
+bb948ab9-ff67-de0d-12c7-c172bd2f77f4,1070567880,14530001163105682913
+22fd23bb-6619-4622-0ed2-5b5b5d9a49f7,1567953710,16386120673073581243
+b383ea4e-a005-9667-3df1-1ba3e4093f6a,1393089521,2543041584447280944
+5d3a1566-a298-07d9-e2df-776500ad30e9,3024591839,4881837983876614888
+212b282b-09fd-6e2a-76d8-7cb5dbdae526,4293354827,15449883766468436145
+7c23ad53-a89d-8e00-35b5-7b2e865e56e5,916945800,5366547677722952840
+d8744fbd-91c8-2381-8f69-133251eb3696,1133376090,16188580297680968556
+24647d1e-bb1b-cd54-2551-da745159ba63,3066921187,12012577739289975170
+25d83b07-58b8-6509-c472-7604b3f295f5,1272681421,12937269932088347479
+8f64150d-620d-2ba4-9803-a65ad062db71,2425478908,13757444732283570912
+847e16b2-855e-0cb4-2f6b-f1224d50c8a7,3192231651,4600303556363292457
+dcc6053e-64db-002f-1250-d1aba9c0e219,3954507972,12039111240905162456
+cb6f75a7-5df0-e10c-dd02-ad6a889fdd29,308531901,15744790239534608363
+2fc6cbb5-7afa-7a0c-faaf-098581f78737,1858932643,3384593370923282578
+63e8e414-531b-2c7f-5b46-3fec8514d6ee,1448965096,13081569207812227997
+2c8db6fb-2eb1-1ab9-939c-6bba8d86ea11,2140680969,15296323153041507204
+8743bff0-0d71-056d-2e82-669fe13f394e,3072990048,14112208916535838952
+f68a2c12-ddd2-af7a-9d4f-d0a98d6503e9,1615928418,3606763887463866032
+64ba35c1-df27-fac2-06c2-a2b5fdaabced,1398202400,5809226497217487588
+f2339b15-a048-8c64-c88e-8e9b3cdc8acf,1607309142,17177703075014201708
+22f24ea1-9dc4-97ad-10c6-dd8de68c3448,792156990,13394468948381786962
+6815ed13-7db3-f7e7-b0b7-776cffaf9fc9,1785090680,479022968710800095
+1ce3db0e-66e3-012b-4e60-7104bd5d2c23,1217917957,12816384142528865385
+bb160d69-d790-3231-5046-e45beef82843,2078461430,4219746863660089915
+b050d9b4-04c1-47ee-63ea-8317948badbd,2122922665,7864304554091219900
+0b46bbe9-1805-ff60-b974-222ba9b1811f,2506763121,12431388198779158283
+b8518249-db97-6345-6534-c63ce18fe9f2,1154022469,1199652617029237782
+a6c0f51b-c380-94da-5431-e2ac7de75b8a,2106070332,15819573177738155501
+b7dc823f-3ed6-628d-52bc-1492606f5fcb,1458274640,16539097633985859038
+92cc3048-5f7b-791d-cdd5-29be1c19dbac,4132063757,3792361752162695870
+7a0ecd61-52bc-e40f-67d3-94bbcd622ab3,3335992639,13010287491183487536
+74ddee27-aed5-2480-7cd6-d3ab2846fe50,1011946245,11267677661087103565
+72fd790f-cdfd-af25-3d23-59acc381fbd5,734423829,15462245680520554793
+515fca78-de69-75d0-9de4-06c9abe2063e,3711380766,734929822779885024
+4855d25b-7aa9-09b9-5f81-31c0c19feddb,2333955448,16169352374841472682
+aca4958e-fbbf-a678-af1a-a665af3e03d9,1908484969,17404541511714961796
+f67393c8-5741-dc6e-78e4-06aa1f5a34b8,2212278170,17723369324094218471
+baa4401b-f76d-6165-df04-fe4cb3754de8,593259463,10843744866332307507
+7a1f8743-c5b4-301b-f946-ed510727072d,1023240996,8021075753461921106
+2bc7d3af-d2d5-1eae-357d-fdb901ff5349,1812790641,3011177368032355172
+f6464d3c-a20b-8aec-92d1-65f9cbc4c657,3734486423,201750912825691164
+9408a527-4275-56dc-ddc2-652d578b6abb,3954848325,12289299265553729670
+826c5e7d-43b8-2be7-6c81-367fc2fa0dd0,43033808,12858362000529247556
+5ef1f955-fb24-b204-796f-db1f875247f7,294759401,4704393510500121937
+7afba060-b5ec-eb53-245b-a68c4ebe5489,196637891,14835431426122325532
+68fe5911-8e29-05f7-593a-83c7de3c365f,3523913347,2903151512947082768
+dea5897c-20c7-2f94-7240-10197a612adc,3781755276,16008408930488277932
+8952b4ce-9223-70f5-9689-d0b4ef34b4c1,1982781172,7818964889864013698
+9bc0d7f3-9ce5-abb7-3f63-a567116d2647,1003709415,544853780361507510
+1c83e444-6fc2-59af-3a71-b838e0533936,942908421,15607330237728613032
+51b02374-0b7f-47a2-731f-671aee5a2336,2127751332,14320955677956403718
+9b9969c7-9ee8-b87e-d736-a24541131b32,217965452,11841424273538542269
+bd8cb700-2e78-2bef-ff9e-fc3e7e53be36,3954166739,11710269217844638391
+faadff8a-f98b-36f4-40b8-958c9211d987,3517741147,2567465497356608305
+b7081d96-8974-40b8-505a-fb1868987160,3972733280,13208004877331923349
+eaf78293-e8ce-e546-b3e2-9c917f8ba17a,2737201481,6376680669965918199
+162cf10a-67b1-b364-b4e3-d8faecbfd748,3068661371,7383222630717300119
+a8eb3536-6f44-e17c-51ce-a30c2579706d,1321867636,6818206696698984654
+8baab73f-3934-39fc-7c7b-dba9ca5b916c,1247177794,16428627381576790162
+2d41c910-fa54-973f-6ee1-0af55d0af8f6,1613707062,14046186582705818569
+9e42aba5-f44c-ff6f-50d3-571a6378d4ab,1923768556,14582882659699237172
+30b0637a-c43d-560d-f36b-2a8e01aa3779,975559032,17650854858709562413
+4d20df50-396c-33eb-b0d1-0a43072f17a3,1223036214,4976995287985626968
+6d61c79f-32fa-4fad-f5f7-2a5490c54d3a,1858636981,1477077940719247151
+8fa65d98-0470-ec92-7dc4-e703c4f059ef,1651945141,13205782959315182051
+e1e1abd1-1d03-dc21-dcfa-35181ebb5b98,929773684,13459099630568633773
+1f0e5892-b3d6-7371-d28a-a96c88497dde,2823281736,1233417320566819517
+d338fe66-5709-bc14-6d17-074ba8b40dde,541007021,15009483550367706928
+e7c03028-5963-c247-3a61-c6291716468b,1049887696,6208023505697586760
+70ae5214-a0d0-971f-d75b-11c8ced65082,4294434783,10674571940812534918
+c37ceaee-e886-7876-3c19-2586ffe08ed0,3986690642,5014587634994927976
+a0a51779-9bb0-e3b2-e6b5-ba9baca61dd2,233557503,12581013657026501486
+9f92127c-caee-924b-4aa1-3878b17e2f27,1155814925,12741118302561092628
+2a35ebd1-d6fc-3fa5-70f1-688e3f7c7c96,2983595526,17171180601675413099
+98b386c0-5b26-8108-d21e-6c59fb921ec6,3978643542,4002047401260952796
+e991037e-3a60-d541-3091-e7f7cf709d7a,3857009604,2777884524181674138
+a9da2c3a-07b8-f36f-0e24-7f0777a27f14,3554243759,12787813567573768167
+4ecdb717-cb33-1fee-f957-4bb382b1e793,1774792632,9818296978507574224
+25670e1b-53c6-080f-3304-bb946a9c1f66,1721473445,4603456188695981065
+e4fe3baf-710a-db88-2206-91c9c0b1307c,1830170416,8600354567007002453
+66a65ead-1489-9ac1-97e1-8c79c035f1fd,1248260419,11090627676711727615
+c6d797d7-11ba-ad52-f261-a7a81cce7ad4,3097273148,1021576669865909823
+f3f645e9-31fe-97d9-7747-ee82ec9329ee,749903646,12587265122886108307
+7bed1f25-924f-176d-c443-32781cfd3165,775203308,7164568356536811203
+4a2cd54b-b887-918b-e827-efa59f4be4a2,834990761,8993662642886806587
+e1354509-9008-ab03-0ad6-420e4a6da12c,403038054,10780210046935471338
+c3aaf525-9093-bc4d-1a0d-c585997d63ae,1453593281,1447378689211981581
+c30c2f47-8acd-ea63-6766-b63dc168ed33,3573989858,3528967049733098504
+4b271ceb-78dc-3557-1f7e-bcf2b75a163e,950660174,10083111028425457096
+1b3b3496-3dfc-74c0-21f6-eb6452aba48e,874864302,14072810610573663271
+c08a0951-0675-06ee-5cf8-ffb7aebc783f,1534716940,12783030438292230664
+a6af415a-d392-1260-b48b-9acfe6314e71,2712357241,10878469638922598425
+e5af0256-df52-3bc6-69fd-4df34ac62538,479688720,1099346358268192411
+85e2e49d-bc80-754a-00f2-d2912ec25f15,1727271052,388965676534792455
+fe9c9057-54cc-b619-d57f-bc0e1c821200,1742764563,14895717321696378172
+e50a135a-1f99-2e81-3c8f-084b4639a210,4032159688,12192702648164738939
+e266b92b-2c5c-d203-0f87-4a45824fce06,4173431552,690217741000406595
+19004160-1e1a-faf3-188f-b6040733ed71,2823622091,2427887767910162596
+fe6024a0-e4c2-7b32-2e09-6aece157a3c6,2608053456,13112615956005356192
+10e5bfa6-6bc5-b072-3d81-eabf15230042,2894396888,15792138888252254173
+2429753d-2dcb-3359-9296-e1465fead643,2712662615,6884149817654880072
+faaabe86-7b0d-37e6-f39c-74735e0372ef,983231307,9045679746838607549
+cc627fbc-eadc-c36b-1e2a-6e7e1060c539,1933135646,13140466164674612000
+d8a62539-dc20-2ef1-a258-ce3169e8bfe9,29111759,8179558619372265191
+16e5034d-67d3-5c3a-f7bd-982694db04c5,2506673224,7229771059546426641
+fa06a3ca-d152-6b8d-2a3d-1aba339c2e1c,2486478668,3674957176713956400
+08d7a717-c91b-e818-aa28-28dc799fd1ca,726036143,2665121273064419286
+1138179d-6f20-d890-d367-10addfe2ec11,854030234,17653041745072438293
+a2c44a39-14c1-d207-00ce-e90cc6102974,886798059,10107771039186021196
+7375f52b-0b1a-d584-add2-53ea51127052,2140296379,7550185573617821607
+b5b5a6e4-ab57-cddd-89b4-7b837f14ee36,318401968,12467535138679460293
+d1730301-96b7-de78-ec17-410f454235fb,1597867374,15217109124121097322
+88c790c7-599a-209d-c625-f843a5683336,2651397298,139287249648397273
+34c5a7d3-3d89-3b46-07a8-35f7ae7a4282,3997458928,4825128052220408933
+af300fbd-ed41-22ee-33c9-fdb4ba0a5785,3562596144,3832860610055966247
+d62c4152-5bdb-0d62-1a1c-6ca40ce9024d,3112560984,12642689752937686058
+b4c38be2-92ef-df17-f742-775dfd291076,534638523,1836446035270208087
+7e27f863-c5b4-e786-0ad7-68cb3bf42d95,2934935662,10216626401495516461
+2c3bd198-2745-cc2a-e6c5-133f49b576d4,2195483600,4581603203611384831
+658fd0c4-864b-19fe-5dfa-485c420c856a,1926369521,10344144061828164489
+eb5649df-faed-0a6b-d678-a565a4d23324,516659016,14472935036122913088
+b6085c00-b067-b8c0-9537-7353fde38f93,2682754877,15015230306298392844
+8709c644-9362-1489-dc8e-ddc563d4f736,2030378385,6541418028729037204
+8b5617a2-b776-d908-4c74-bdab34ff2038,980040861,4857893421646957699
+fcf31a3e-7477-5031-7319-f0596bbda15f,4279165010,4249159933607441071
+ffe2c7bf-7c86-b209-3279-5b9ffc62ee60,1805527595,5775015188035758856
+66fc1785-c1da-78cd-9a6b-baa4b6a126ab,50997517,11549703050019174214
+861322a7-8f14-c5e3-9867-8de6d4c4057b,1589788103,18130017134281295678
+e5e7ab4f-1486-b4d0-12ed-8462e9a317e9,3319655516,14488062651210297712
+62086d89-38f6-7d0c-7679-abf4a785dfad,2870664071,11912235586445972129
+fa847eb2-435e-fa1e-82dd-1ec7f995a767,32041258,9388025000032711855
+c9bf763a-8892-ab5d-70bd-ba6686216f06,13546795,10940641113449344149
+00c4559a-c52d-33e8-d30f-db34ab29fb6d,1599289683,13003656156572204742
+cf9194e4-7a1c-ad77-5f35-8ff882e7508f,4101654586,7008110596902664515
+bc5409a3-8514-d429-03c8-cc4f8298c45e,1078958858,15702588676291204024
+20e5ab3f-a04e-1038-85ba-89f643fef735,396006078,17457524484915816687
+4c077672-f972-cd3b-d68a-0ba10d321fcc,466723636,1626500916443539986
+6c5bec59-80a4-8267-809b-fd6d07dac985,1568394199,8462853322984998120
+ca9b6cc6-3d3c-7b71-20f3-ec68029e97f5,559256086,4343871231554643283
+1afe6741-80e2-b62b-b8a5-88a6bc2b0147,2597278050,16688783573756376197
+282ed220-39de-7d96-d97f-a876d0df2847,3379202947,10505592090281841007
+f2dc41e7-2c14-c40f-515a-7d9198fd3077,143779283,7156099865564552764
+bd0c5d2a-b5cd-dd32-1790-364945c86aee,2962853840,979964709571503004
+2e0f0426-ec85-5f89-08ab-630f743341c8,2428345068,15948270273851361383
+5c62fb3d-d171-8c0d-dab1-71c80a8f0016,2800793655,17606479751363516969
+703acbb1-3a5f-4fee-befa-5f50313166db,1896788240,4406036132878034869
+69cb103c-d3c7-1e8b-916b-95fa1d42a5b7,1511303927,11669533032850846506
+9137c028-cffd-1b1f-75b8-711808899573,3160177484,9387312024038834889
+524c30e4-1952-ef39-e045-346f253d4890,3246096753,6634108422824118915
+36cefb7b-83db-838e-644f-7f32a653af65,1984755605,14839614417089230893
+403f6276-f96a-9291-45a3-25205c4fc474,3767984048,11992393057372891080
+95354921-95da-3338-f836-28e081a66ae6,1356435944,14218439509035354974
+d9c5aaa5-b720-1712-f32e-012f5d5c76db,1398031831,10280670219427804449
+5f47a783-75cb-61fe-fa4f-a4648b4f3bbc,95289667,11107129342976839534
+e034796b-3c73-0a91-8738-d31aa7c2ab4e,1509254022,14860412915874418392
+fba917a9-791b-0a1c-fa8a-78e42328d668,533470940,1593338712800089974
+3dcee471-371e-797c-9d80-fca5e5eda26b,2999607812,15199729640376074850
+792d471f-7141-acf3-7866-c63bf166b0d7,1603306899,5313363342722314698
+e3049aeb-4b4c-9b92-a298-245990d78631,3069724479,4880765831556946768
+2cb0bdc2-e697-0df1-7e66-cce824ff5978,8398579,9079673028148921052
+83b13a5d-3feb-a03d-e3df-b498bd99d019,2822279321,6015270292225569068
+26ad9abc-fcd1-bba6-258d-c835839d7d47,1957915708,3628045000864844480
+17e32b4f-4400-f707-3e43-e217bbfa6be0,2699989876,13412294415865282948
+4813ceb0-4066-d02b-8cb5-84a4a6151deb,477708597,9291749185158331666
+ae0ed1e6-7969-406c-caca-96aac8bb4446,2766067871,3985596987184689893
+6e416020-4b0b-570f-29ce-403b51b131e6,3348397787,6688502472255016876
+29cf391a-39fc-57ee-721b-10eef6d9658d,1425562673,7858125387346105244
+a85ae9fa-227c-06c3-ed1c-f028afc5dad4,4269529036,9135965234128612776
+b47243ec-4652-ed03-86ae-87db75468ffc,3159687189,13133871076403593372
+1e94d62a-4094-445f-48e9-ba8b2d589ae5,3579036600,9519584793782099154
+24ea9644-dfe1-e267-ba8f-bd912d0c6e24,488453269,17792610268246375310
+e54cca4c-2fb0-9db6-d52c-2f00b271e3a7,581612771,15264431158062979920
+fd9df2c0-183b-ca6e-bf2d-6cd71517a7cd,1294466225,14550236420846440140
+e3264053-0aa7-53ab-9b30-a1acacbd3898,2609900886,17269213930931997350
+e4856b8e-475b-a0e0-95b7-b3d317b9aa36,1429520713,347821236514572271
+6ffc87ce-06be-d7e0-cee7-adf4b2a5281f,418395652,3677159057780325913
+1538427b-c443-16e6-ccf0-c448bfc00073,2033592564,13008979703201774831
+ae72b87e-bcf0-74c4-f8d5-14a17d7361c1,2454200899,2070469504819717593
+e1a52f19-afcc-89c5-8f9b-6c8205213daa,2308630236,2604948728069815174
+023b0bac-d7ff-4463-5d4d-66a4b1e70dc0,59595359,12567563091106336029
+e68aaff1-761d-b5fe-7d72-9eda0d03da0d,2281354971,9795697576312066710
+e5d3bb0e-6a07-b915-ce71-8893552f1cb7,3577160231,12359343854784649363
+8d135039-fbbb-0450-7d17-38555300e820,341366599,8931997861877806835
+e0fa1d48-2c46-e9f2-7a7f-92cd5e2c92f4,105703213,18392425811691034400
+496e533d-f7e2-ba55-060c-f4a246e3792b,1431689013,17984278145618130812
+88337f41-3e82-1016-0745-5f7c1b68ab25,333575808,7714187229463340955
+9c7c66b5-a046-d574-f082-720ecb3268ea,1319837475,11217574926795629724
+4d46f7f5-08d5-72e5-c5d5-1022eb8b3cbe,3384406109,4104896103820458595
+dfae25c7-5649-9944-4206-699698d6bff1,4221255126,18193840265244492614
+aec4283a-e105-6f44-3555-32f573c1e13a,3943006063,105321879673488273
+cd8f9631-be80-7acc-f635-b5446c360071,471476231,3689265534052142414
+9e92fb75-cf27-a096-03ad-c5be210dc8d1,1905387443,12568174406588576757
+9cb201b5-a2de-f449-274d-6db36da42ad9,432438616,385756676229884217
+70816ba4-ac42-5f11-80e0-c408dd249fd3,3661768539,17864540941157320982
+f9ebcaf2-e908-e5b8-9da1-c5931d2f298b,2271994751,1379113890404750180
+50a02e36-49e9-df80-0a17-f3f300b570e9,3498451067,2884133275721934916
+47a17364-edf7-04e5-3aab-78422b219583,4268086372,16130849848209878647
+962b84a4-a992-7e79-0c5c-323256686499,3609160403,5861558760837359719
+5ce327d2-7383-441d-8cbb-39d45bee77fd,638061909,17782737637019367691
+8c573fea-18fd-655f-792a-195118799765,3031173399,17951165027722402805
+709289a7-c745-2035-835b-7db05eb7ac63,355842715,2714083664514149389
+976b4505-37bc-f319-a851-de6ebf737a9e,4191183375,8681763046232928314
+981108a0-d59b-f2b7-15cf-50eed2cdec4d,3824133525,17384401784932452684
+859cd810-c2e8-4271-965a-cd260a9ce5f8,2692314890,10284696099897627311
+a9127b6a-79e4-b1d0-ea2f-099ccc290413,2987029777,10399321047400844651
+6e8b04db-9736-dafc-9827-a4885a0d0f45,897175814,5007316114357991763
+e08b808c-33f8-47f3-9b6a-b62a2e9bc63a,2291163723,9850086911627789131
+624c0bf5-530f-7a7e-62e9-9ee1a62a3e00,2628971900,5361591957716668075
+5c2a4f7d-2f88-4e34-5abf-c9a63044c4df,1442788772,10672994503496899318
+74578743-29a9-b420-9577-9c9c16f72615,3595764881,16821132459146511607
+22c727dc-7fa4-5ac2-2d02-eac0f7d58114,1743950901,4852801111619054854
+db5a6520-a532-4ebc-c5d0-d8b3dcec1d04,3450425190,5820763619797689423
+ea7993fa-39c5-4ebf-25a2-6dcc85a9f103,3326674689,14705193130272870307
+d602429c-2349-472c-2ab6-c9acb942c82b,1118861429,14451685460187369000
+234affda-cd6c-8436-26d4-7adf23a10595,2957382507,2706405130385968352
+c0067421-842c-2593-9d5f-7bb9a9b11e75,2032837273,6413368450850309641
+e8a64308-8b5a-70f6-e577-1619821f368f,3637407629,9998626009336818437
+4c8548f3-9fb2-9c6c-1104-b5dbf0ec4f9a,3821072483,9917705161944628639
+480277ee-2331-79a6-5c06-cb69e9a8cd07,3700761451,9447500363234143225
+90deae99-b0e5-6d67-1c0b-7e0cd1eab04b,3807466911,24883271501518259
+edcd05c4-1fab-4540-bb98-13397875d23a,872226300,8900739945536070167
+67fcf53c-0e42-9265-ef39-fbd419adb3b7,2606162899,8297955367534396590
+3ceae573-6bf3-3181-fa4f-8f15ef029e5b,2356346868,27780211960748227
+819bb546-0c8e-0670-e42b-ab5a5b9a4a83,4270060484,6307074530371338337
+00c97f2f-9e47-5953-2667-588fd285ff96,1016709458,18347201472972809599
+36f1f9c5-4963-597e-d2f6-1011677a2bff,3121577028,6401127052461521668
+3f14c6d7-84b4-b433-2d11-9b55af850cd1,2872304162,13428905287489024473
+d79616c5-fd17-a4b6-6565-75217b03b435,799244940,7212786855880581432
+403ea908-a517-aa73-8063-3d9ecad7f2b6,2143333954,4043390019511135726
+a040f0cb-5e94-17fe-1e9b-33dd0260cef1,128449563,15650691902102075912
+dfa41894-9e49-30af-4df1-a7c02be4d0b5,1744119142,5927320116092789790
+3c9d9fee-b52c-8e6a-baca-813d5ce95529,432842390,17506161711685667363
+5a6e113f-cd70-4ffe-0819-44dc5b78f3bc,204473256,1129220022401368525
+3b436194-4317-7511-60e5-6cd9fa1c469e,3114632191,12256309440907864318
+76720074-fb46-d8f6-9d83-6f7a306ed632,4077984208,15405685351712582201
+5334dfda-8ba3-b2b0-a9b0-2fd26c963554,1749087096,17921898188769178882
+20b0ed2b-fb50-08be-ea64-27aba6a9dca2,292335943,4014786345967876591
+0f0f8b8f-4e71-fedc-c157-25dc2c811880,2552329907,5186305431275449484
+1ef42a82-f4a7-7b60-65ad-f6ccd0af5245,1995924545,17201749865535451906
+1a5fa648-f00f-af9e-98a0-39c157672d8d,2695541990,1086338009268767405
+e5ebb816-d9cd-85ca-0b42-e397b2dc43e0,142130380,5645797022001365640
+bac24ea2-9a25-de36-8b88-e5acc6176564,3552580406,4611143898582927917
+e58581bb-7a5d-cb50-fbb4-b4454cf2ab34,2119069537,11267249300622388884
+4192cea1-c72c-1b96-fdbe-e1c4f7d9f6b5,2363325351,2904145018975650218
+76bb955c-b3f4-8702-8c90-d13595daded9,452710593,13580962929589118465
+e30400b2-9305-f24f-cfdd-396f5fb80b39,1237167361,6231501491652576365
+12de2052-33e1-757e-402e-f591d1ce4036,1597454176,1551793389829209306
+51d3161e-8c43-d0a9-73f9-ccd596c78bae,2846780814,404961860541880324
+797b9982-9332-7bb1-7079-e44e23f3ad38,3972306379,5940869854210974902
+bf6d126b-3475-dc51-e167-6a1483b3bb46,3168703673,17257511724286025863
+0269900b-29ae-ff25-2ffa-dc96ad180c5b,1994331078,8688416563159671829
+2cc281ab-d1cf-c2e4-7ac8-1499627756d6,440555780,4371967250303167443
+cf9755e5-bb00-6657-f812-5f9317a3b0ad,2465174272,13933416534932285409
+5a6a5d3d-b8ff-7f23-7cf1-58686b399075,2485224602,570239495648111259
+36460846-fa0f-3db7-f4a2-cc89f44dc995,3953716270,8779735725607761548
+84392a72-1619-5871-4c6e-e587b78ed735,2110250766,13735589332711538242
+e58878eb-23a6-ca2a-57f2-7ea5eb87d42c,2424550135,4818765664712819380
+79dd1a66-ce9a-acdb-05d5-2ad71223146e,2657262412,10680968125036049312
+0df49a95-c220-de98-88dd-1f62cf5e31aa,724699533,7967503141222885046
+ca969e05-cf1b-3e43-0a47-7d48ce5ef37d,741318793,4277417686843264197
+a6635e85-0246-5a8a-ea0a-4042a926f6e9,1017295030,13011318154193412375
+12f048da-42d1-9c09-040d-6fbd4c747723,1246329801,14067169172203482850
+7e403b79-1db8-ff15-f739-a97269a1ac25,1361658056,9594360436523306981
+5429a812-e3dd-82ae-7380-8c5141eec384,1695850457,9917757795805121488
+fa90ee6f-d108-dd5a-31fc-6164156f8bd2,2333008392,1810010874095346691
+10738970-423e-c73f-16fe-746ca6f473bb,49016607,8840279478546986970
+08afa463-ce2e-f521-c0bc-3b223a6b0a76,2827730745,1325373576860530172
+31868a36-98e0-20a7-0305-31015c228c60,3226426743,4364383151043647356
+766ff200-fa4a-7c93-79aa-e9285159d79b,3870066477,8215346839106259341
+9506232c-a287-fd92-3807-cafee4ad0b06,1373348075,8714510156234626183
+36942d51-736e-fad9-d1b8-7dc0405ecaa4,2829375415,11235303544325885939
+8b155c27-fa8a-1c21-8785-98a4b0c87040,441946639,2765581965638767013
+eae981b6-f696-ab61-8fbb-49465de1be7a,417025084,52493760028731096
+d0e530f3-57ac-e164-d099-17e4d3330dda,3567709409,17303233793301774637
+f941890f-5cf3-702e-7c1f-2c88f3149395,2983738289,7310938787533668806
+522f1ab4-b15b-fc65-0eab-0e76475a7966,1381492507,12841858502082271817
+9827808d-62cb-3d05-cf8d-7909c74b4509,2265294199,16224017276306778921
+7c75ef77-0981-142f-9a6f-9ff069f09f39,269165567,14596200982172144967
+825b4a56-b5ab-c856-5ba5-795fd07ad9f1,1491268188,11224992063438575381
+05e3ff6f-a2a6-89d3-6634-90c53f0327b1,1974476900,4963934029974122740
+814a6965-bef4-7649-3092-4eb3a209a931,2879930686,14724735299834335123
+dd5c632f-3dcd-61f2-89c2-a4e33cf231f8,995510378,466939485125189052
+b2e68b30-b3af-66e3-42a5-34825620eb1e,873962362,14406477575955532407
+b2e6fd7c-9b4b-c18a-97a1-226949385b3d,4262874408,16262575719992051378
+4ff56c10-1231-8edf-d987-3bd9d4034e1d,3411007656,8661975007815692404
+7afd6327-488f-0372-dc5c-d60cce3319fb,178085999,13338001208798120408
+232770f7-1152-5e70-546e-faa7494495c3,3477183472,17415395538600516952
+c22161e9-9177-4b95-e38d-c8fc389ccbe6,761705511,5034910958539860144
+c8d40e63-6e94-bc36-3b16-a15aaf9e0540,359734215,11608150522991158980
+990e0fe8-86c8-6c6b-fe20-e42578c90a3e,374264086,13896516005171318684
+4df221c2-993a-d339-de22-21b4fd7e8d3c,2399626396,13625506962574970400
+c12a710a-c9fc-524d-01a5-d01dfbaf2fe3,2041324638,6535644254784567604
+27335e90-1e4d-8521-234f-9b3a0d70d3d8,2158754046,13354301711255569319
+5f090613-415e-9228-a402-0ff20b6dc291,539635904,16904367143886968392
+b270ddc5-59d2-c8db-57d7-c12c1528a646,717456387,8666483669129078947
+fefbac3e-f2f0-e1c5-7d9a-31f0143d5fde,1224685953,14665152646789581972
+a3795f9f-2e31-509c-3ff8-2866f39a29be,891600846,17088862334479112660
+c4c27472-67c5-8ac1-a1e8-8f19d7470826,2554425363,1165634823075462645
+d25fa456-3091-76fe-6c1b-3e54bae02ece,3260497685,14498125640283042727
+21333c1c-e2c7-c7f7-e2d9-3ddbc948a419,2294094647,16112247928506771420
+b13a1ef8-a023-e1e8-8e0f-d021ff5c6479,2644465599,14319038537657066941
+40f60001-5fd9-6de1-0289-070b7059d0d5,3620959334,8173118943337106122
+f824d14c-119c-b00b-15b4-d530ed929cd8,3482634059,11883428871417055459
+979c39b5-4f96-8269-216e-6ab38d2ed9b1,2623376841,16654910652460818258
+e9b600ee-0a35-4715-76c8-d53e239920bd,2385489712,9439332006096758780
+da53fd96-4e6f-d6a5-4b1c-682736987cda,2391389512,18257471257398426846
+8ed4aff4-2e3d-90a4-b832-d6fbf6d9fedd,1603802119,10341864221287123742
+bd5f6d98-8857-c7ef-a728-559b7c107cb2,3944802336,835389526471958756
+da57f2aa-cab2-1f41-8bca-0d9e01bb7eb3,128428632,14221926772775851214
+0df078f3-23c2-0865-f44a-8311dccd8219,729212690,5576159650296116149
+ce37da48-8c1b-1728-d99c-0ca7bba216f3,2686634259,3617574131312101815
+383bf997-6e01-8004-f8b7-7fe98b87cdaa,1273105603,18409078891185363578
+8f8700c8-e80e-b65e-0aea-ec22704c40e8,2691964312,8516954005310929570
+b2e2dc8a-6139-b1f4-1cff-d56e90977604,350666374,12049400735595084185
+8f6168f1-485c-4b93-d98b-f222db293a27,4135949057,6773078341664765973
+3c424c30-227e-4c32-cfef-96f9dc29d358,711839829,10319870732987531063
+0b84be3e-fc1e-097c-fdb5-5b98ea8bb41e,1957115941,15679858826749296383
+299a2c87-af41-d306-67cc-d1475b4dbf19,804680756,4255737358445115439
+952c8cf2-4d6c-9305-c365-d8670fe15f28,2416761670,15698114713005500739
+b5dd0903-d549-8b55-6142-4c0a49560fad,1409144166,412989127111541618
+d1ece089-52cd-58e5-0e1d-7bbadbdec79d,1865941548,14497645592063830831
+6a49630e-6cea-5de5-4d7f-42bcf9018900,662226980,3421920704593695666
+79c041c8-493b-f732-8c46-fb5b8fb180ef,4030918274,2469085574548374438
+136ec633-7405-167a-13f5-4060869b2067,3047204069,8713464897165965152
+23054c0e-ea61-b75c-f282-485db125a95e,497269329,5523349839336894399
+e10696f9-5733-2c70-4221-28952ecff713,205874999,10032442713107604305
+e32849b2-b1d8-526d-6194-f83a4035aa47,4017026494,9071366403935248414
+384136aa-ae37-8808-0600-0721833ef56e,3802669652,11488859983218862340
+92a8c473-3c22-e098-4fae-0c538bb09eb1,3335061829,2390539337054322224
+3403e078-a96c-3a96-28ce-3bb2c50acf80,3177591190,11257181987285268504
+836ee3e6-6d1f-36ff-12b6-719f5f2bf3ec,1929005342,6100408404639764662
+1e69398b-7914-1563-a4ac-f5d022dd9eb5,2295335063,11827689716982776735
+f496a661-1d4d-b8f3-3565-5d7e5c3e5788,717795211,4736901431556345360
+98863386-72d5-1da8-7938-ba43092fa0b1,1068216245,13966205026292083890
+2857e282-1d08-5630-21b4-ce158c85212c,919970204,14072247920146764877
+2e944728-6690-acaa-7e1c-c2e581937029,1630959148,17166901653721682467
+0871cdc4-75e9-b1d6-3d6a-f71bc7312dfa,1332036164,17919533619607056387
+b85cc144-ed39-59da-485a-553e63da7eaf,2731059075,7065153874117549963
+80a03059-e97b-8c1c-9c4e-06353555f617,3245058057,5771047034842311420
+d80e6a67-2e7f-629e-86ed-e31b483f1e19,253167606,2081631769882884408
+8cb4fc94-786a-7991-ecd8-d730be0f6ca1,2421131207,4911336297153728558
+a962bc6e-a872-a98d-1aa3-200b681ce285,289136199,14797201400395694415
+5b777d95-0775-ccfc-1fe3-56ab5f542543,1152324149,8903519558606896991
+6e5afc18-2ec9-be4d-94ca-e1fe8de51c27,4156949759,18263744074136697721
+2b511774-990b-94ca-5840-72fedf7b28dc,171698773,9666593574901123750
+4c3d9dc0-2027-87fb-0a50-9ff8aa380e70,2859455214,16607151417834998441
+74140ae5-4977-4029-966e-d4c156ca1e77,610617946,13478830706716342393
+7309fc3e-0991-5374-bb80-8e5ef04f24eb,350516836,650816514435456884
+6682346d-fee1-47ba-db6d-e9c015d665da,825317476,723933200372240743
+4357aee2-4b89-3f6e-eec0-492ee5b40714,2396580045,2414103469604000628
+68cb19b6-c446-a698-7193-4b23cbd0cebc,645067302,10775867404355758749
+7264d695-dffc-89b9-491f-f8fb1af5f4e0,3011640213,8446897010688949032
+41f8d893-ada3-4d49-ea3d-517068217a50,2154226192,3067485452429696711
+33903b08-56e4-effc-45c2-1418f76d4a2a,3973341379,12623209312206448452
+29090ff7-4cd7-f8d0-13fa-a9cdcb1129cd,2107976001,14437461826013558519
+75dcb68b-c3c4-ea7d-eecb-ab2ebb0778cc,40158949,10512686755757997132
+9e8e30c0-bd5e-b345-1ded-bcbcd993d439,2471693292,2106710609301052302
+47cbcabb-56cf-eba0-7761-7b171ba9160b,1155149923,12171385814486777128
+f4fa224f-3a8a-b49b-7bfa-bf96319e5df3,3556283966,12504710998553746481
+c48b7a50-bede-013e-780f-1e174bf34118,1308230275,13727761081607836542
+fde706c1-a1d1-1005-1314-ccadff0e8144,1560788057,13158165394114937407
+05241637-a514-a008-3729-525b3cdd84ad,607149014,14685813461353040705
+3d8fb1e0-425d-3cb8-2058-218037f8ac08,2965051802,2640693908903153888
+dcffda83-d0e7-8815-b4ab-6197ae89d254,4220014692,7975012982051047176
+0f83da7d-cf11-33cc-d4a8-b9f97cbb1bec,821795793,12462474404533198762
+051ca8de-4cae-aae8-3248-a5dc53861b08,859552663,10313187819423573071
+b469b6d0-b6d9-3b34-e617-7d06f4542530,1809571912,12770437497558736825
+c9275f39-968d-11c7-2500-33f53d9cd167,544316014,17243444468133602652
+507aec70-1ffc-bb7b-3ee2-cd69ae69571b,116939877,12958051673060963402
+0befeab9-4f46-f5c9-eab5-e8a09fb540f0,1031145851,200195349022969676
+2dd7c8b6-aabc-b641-a82f-9c7aafb69942,704692721,11744777645088879032
+0f320fab-7e4a-300b-85a4-b9d5509f18f1,3966093438,2849764450204178025
+53f75fbe-ff8b-6dbf-a8b6-e7d6233c3114,291846749,14693773558491634494
+6cd9852d-eb2e-0031-4c23-867976e8a95b,2893089358,5292872801701843977
+a209a895-2724-4e1a-8dfc-3cbdc9e1fd06,2590373926,18065552902450216181
+152297f0-8788-de88-62ba-6bae322d2cec,1019570757,5707459181068064819
+cf230b81-5edd-b9c2-5478-5e373ddcff69,2962569193,12353377070858298766
+45a24fb5-97e2-ab08-5518-58e6387da3d2,3439197240,2597049346953879283
+43146a51-829e-d272-1c2c-9d269f5facdf,1111120659,8866132932683008385
+fae786a3-fbfd-5227-5394-5068075e6cb3,2531235302,2210350246924283091
+301933b6-1358-3ec1-136b-7f62ac8226fb,471434204,14766829989109291280
+b6df8a11-3cf1-210b-302b-94d3b1cea559,1730272679,1324824470367348546
+85af1501-38a1-c586-4e0f-f80212b9f42b,1389466343,9052227062110721105
+95dba9ff-0038-0aab-901c-81cc9865f2ea,2263568848,9121072570233834942
+da46df5d-644f-8bc1-89e8-30a2419d0d96,571193896,11744722346908564330
+316d12c0-96b6-70a7-80e3-b7ae2dcca861,3608969982,16847421952043980529
+d783c998-2278-01e8-5570-189febba4988,3121741577,8124172677081143575
+3aa6fc53-4444-3625-f5d0-31d765103f9e,1837373652,3439322701158327907
+378d517e-aea7-aabf-3b93-21ed0ee846f7,2859418122,14087280153048889112
+3b886899-fa94-5e3e-1f12-fdd406cb6a0b,3577878617,18040586622755276456
+46c2571a-1072-4ab5-8022-1882dc0f5c96,1572856078,12257751459691615236
+fd67e71b-7ddd-a94a-b4d4-5affb63c4874,2363592501,16347778591032983661
+9ff227d3-aab9-3cd2-8daa-99ba762547a9,1840840650,10486674932742565880
+a43177f8-3a68-1fc8-8248-3080368bd95c,3408723854,5966434272462868704
+de94ba95-a231-b15c-3a4f-c1596ae2db57,423282016,12091695391167808250
+9a682a10-4147-f707-e146-bcae56060664,3281918647,1841389320231914879
+c1c80c4d-38df-2d23-df5e-3f252eef325c,1211356329,116778212181216445
+c477c48f-fa7d-93a5-5930-2c13f8e54aae,4209489181,14671065287746193654
+2bb5edbf-9745-fa44-8308-cdaf1837b888,488924443,7822085071584703764
+fa8c3c10-ad20-c4a3-111c-7a20c6caffac,2026609094,9005048120069891419
+4a166057-f82c-a421-05f8-589ea78eb94b,2162137690,9336802672456884355
+b4108242-10f3-b3a9-8253-47feb374c9ed,2293278171,5115897908138784559
+d4a30b5e-69d4-3f51-c2b1-e6b46db15da8,3583666084,3147921173957694632
+fe1fb4f5-e78f-8d71-e72d-8db1d40759d3,1196347947,4496007258367824756
+c66be0d1-2840-7cda-d25c-9d423b123e2d,3832243282,16840528794539851645
+8096553e-5bdb-da5b-c069-cbb7b615b4f7,2620863099,14238394407908330317
+6a86e77c-f191-f90d-dacd-bf03dee47451,682028939,12728122981241361510
+8b60136c-66ad-f3a9-ccd1-d5f322c50d36,1367338168,1111340171662067096
+d5274066-c974-b6c2-9066-9b4c5497d736,406811717,5804530772060107150
+0b6c9433-f8b7-5c48-117b-4736a5ab718a,1067979102,11383075754933107286
+f21ccfc8-d480-b670-4dc1-947c90d93d98,2255095127,13185862451442961323
+1ed7b250-3813-2545-81e2-7441e6d2bf09,2903405221,15296826250626260552
+453188b0-597e-1885-ef50-80b92a1c4c4a,1771933536,17897586151037170818
+4e22ea9c-cb60-4ef7-3948-b825b50374da,4014703865,9612360903616107996
+a5fe7341-ca44-9670-03ec-f5bb9778e7e0,425562728,14629527076392337922
+62bd5370-6bab-5f81-a101-87b9aeee5462,1790021497,7332769533556728043
+51f4b620-488b-bf74-30e6-ad431aa9afe1,186271989,18087502631201458341
+b1d12b4b-d26f-dfcb-ff69-7b47ac9ef6ec,2527308644,9609162795980921789
+64aa3ec9-ecf8-fca1-2011-a62245033c80,3887358218,4746192853867016259
+908623e0-0cbf-d7de-13e0-16efaa53d72f,3529343420,2521630492654570050
+50b0e27a-94c8-0aee-9cbb-1b14b30552cd,1906780024,10582790733765947518
+a0fb9bc5-014c-a225-4a6c-0d1c40baed57,690840680,9382661007792025767
+946816d6-1b71-0ca1-0be0-5c70c3f1fb8a,1084902968,11204627424620424756
+e8773bfa-ad7e-f4a1-3558-6f584fc2a838,3928438986,17861797195095269264
+27888973-c365-9e71-140c-ca3718a4812a,1267104281,12140035564030775770
+d86577a3-0352-c903-de60-5b1621e83224,1040637174,8623587794750921117
+061a114c-57e8-55e9-8ec3-954ff83d4e6d,1097362564,7373612056522950664
+1db5a511-3f0d-6371-df33-a6b6ac43e472,3252550398,8228203739567414027
+e86375a5-06cd-cdfb-d043-1e04c2128fc5,1497804137,8154493519109301950
+ab33c1c2-19f1-d6e7-2489-2e1c1d83765b,683525736,14861700438861858252
+e9fd6260-0689-a530-b5b8-6f810bf20fb5,1289549477,6623291210693371887
+01f2345b-e3f5-192a-a1a4-bbbe10d991e6,3926651470,9430063145094553133
+e1f37df1-faa6-ddf6-992c-1e3d5eaba5b0,2061009486,7778428450272946496
+d20a9574-fd4f-8ad4-adab-c0d7f86cdab9,3756504564,13304957279075621321
+24a47388-c597-dcf4-adc3-45f114a21ca0,2788196053,11005856548735299349
+d5e788e5-b920-3e67-c415-01ad5a982030,2588743268,5734948479592948079
+53abf05f-646a-e721-313d-83b52403cb51,4108738918,16894186365971835575
+c35072cc-9923-4e62-1e10-140c0a9b097e,3534130892,5695035141832536603
+bb512104-9bd9-7e07-48b5-20738854eee2,337908706,1183070013349032412
+80dd036c-e1a1-c677-17ec-55bdf7ad78f2,922694116,8257386059247435079
+7749ad2d-f4e8-e60b-4c2a-80b351fd2f1b,3784737596,15675662111054358027
+af9198fd-c0cb-be46-b760-3a7fa96c052d,1128908072,15331947231869433726
+e06ebaf2-bd8d-28a3-86d3-c2dec1a69ae6,3224385475,9155291214050844338
+f9515592-e078-16cf-d76e-aa7473d01126,1605141987,1733959937002893503
+7a014b51-33ce-a179-3ad6-d19581112f49,886219110,17686861261981724096
+80f6fca5-de89-260d-b383-bd7238cf7dc4,1291407968,5106767692079712158
+1b165dbc-126a-938a-d906-604a7553d679,2402619351,8221706494555095952
+10c01df5-349c-0ec9-a37c-187fb4691ab1,2309143441,4137321019075006612
+9cb059ba-7b66-3844-d11e-9721678f47a5,1760182511,6546074490593485899
+4e6b563b-49b9-8d5c-c6a2-bde725292b36,433237855,16297527310543560741
+549c1a02-2c9d-0714-7271-8fa5e22b4606,1655835595,88984515407227191
+e0a42dec-47d7-0f86-d26b-2cca1a13a5f5,603004107,3161037934687995347
+8d2edce6-ecbd-c6a2-b681-bfb4d9556907,1088637287,14487568549780786070
+7bc31d25-cbb8-10d4-f49f-077732f20b79,382128279,9721138846389913937
+5be9593c-0553-d8d3-2779-74c22df262c5,3139857966,6315584449705854249
+c74d61f0-793f-02e8-6ad5-50c20a9e15de,1055904158,18372176649656480259
+6b71bcf2-a497-ba56-cbfe-9ae64ee77927,3222417504,13002185766437882866
+e969deb0-33c1-2a70-1287-0720efc625a3,2853563675,2571108465399784984
+b012d115-a1a8-f6ce-0160-4093464a2f1d,896527922,8310970389000924382
+0e393b67-63ad-5430-20f4-dbe10f8f608f,4161944019,8028985376697659052
+5496b2cc-e036-ff78-c0d3-d5fc5d8f0935,3287028629,10834841187360667743
+243f2cac-dc63-3b02-aeb2-c49a5fde7037,2841909701,9490285175787652787
+64e8f193-2afc-ee72-c77f-877bd6277c4f,582192102,16619510762656702202
+afacbcbf-4fc7-3ec9-ff6f-766ab63ca0a5,4268603716,8607050715094977869
+eb28ac5a-0023-e2ff-bedf-0a01d94b03ca,57219457,18107640699601844154
+ed330ae6-2936-1e4c-4e2e-5c4b73b24c02,1153818997,8185295985664586885
+0d5f1d8f-75ef-6ded-2bc2-55ecac8962e9,1925039335,16704513218650516160
+3dcaa998-f72c-e7c2-8971-ce5d5f6bf32a,3357612476,6591729317504479616
+ad0a713b-ebf7-b00c-0f0b-02d06066809d,3877192667,11533960733618376764
+7fa1824f-ecd4-9800-0b5c-32a5391db8b1,309323160,17519144604583824560
+69ab6f6e-40b3-df0c-c398-557cbe884a9d,3015311579,11556307506402886020
+d0dbe719-2859-dfd1-07c8-5b8827bff75f,3076362179,5373655801096102884
+defc7d00-50eb-6e9c-d8b8-4ac7ddfaeb85,3228864998,2470380384653530831
+7cad44a8-b961-ef5a-3f34-08efbb73eb6b,3134689660,290123591358775240
+7a417321-9e4e-5c38-0fd0-519b2fe57af8,2546313704,889958409237368007
+707d543c-659d-46f7-5873-7d8c80ac9af4,3897853475,12441124158475598188
+6213a6b1-b342-aa4e-904f-623271908361,2818951017,4215496004880320268
+47cf4b6f-6a8d-d262-c3a8-0b0ea420ad71,115055443,11894305549063714725
+9f2d6934-cbc5-9010-7ef8-140699351c35,1335724922,11844688368712046994
+b9e8196f-e957-5d59-9200-2f2196ae0eaf,41743151,9803907444409384591
+60239ab9-5f96-67d1-0ba6-927db40b3c3b,2955138737,3019941794963157586
+93fbbf2c-013b-8fec-f8c9-44a06f183a08,2016458284,6431904269300066224
+c5933796-0674-df8c-dd18-218d2146e101,4134048452,2994679310975891339
+b62b8e2f-e4f8-5658-4a9c-c9eefc582544,3168719864,9652204580228400102
+1da3e6dd-b564-834f-4652-ca8f8ab4b481,2617202802,2747416228555317653
+75cd9db0-f387-9a6f-5517-56bbad04b721,1633508007,9366131127743850971
+670264a5-17ab-9e73-27e1-ee18b3e7c08b,2099089607,10356120546362211951
+706ca251-17b6-b65f-b83d-cff9302af4b9,2922526953,9912548542129044076
+05857158-d7c7-40bc-dea8-a257d3eca460,3745641391,4942735046383933734
+93bfa688-6d2a-56f1-a778-ef9ba88bebad,729206770,1642383310769814344
+18b2f5bb-0d1a-ff8c-db18-7d7b0228c507,1214928305,13128147193300201139
+945f6ab5-f292-85fa-38e0-5ff817f1c2af,1538258728,14233265141995990383
+9d1bc26c-988d-1fab-1c1b-d2e47d3d97d9,2730870728,15258101268885762847
+68195f50-f6bb-a166-93b6-bac0d0d125fc,3576835804,5407211181711677681
+b01d309d-becf-4a2c-8879-3abe7a161f9b,3989321086,9383154300824607041
+ec697ff5-4981-3b82-5730-d626e1eabc99,1052606517,5950633249900169412
+315409db-1f6c-32c0-eefc-de1db66996bb,1457876671,12635616176755042139
+d96808d9-6026-7ef3-53bf-2d65110235c5,2461408942,2341934888149723846
+5fe09c93-5621-bb60-e8e4-69fdc89bc34c,3896786359,6927972880614977726
+eda36294-1e64-7be3-ae47-da56a63fbfaa,1800243178,4370943270845273485
+3f7ab896-163f-317a-b5cb-90e529b0c8a4,2945414971,10574188354310406739
+882f880f-46fb-b9f3-bef0-486f9db4513d,3237340374,6906687260054532747
+6ec069ef-3861-eb38-df45-47430453f477,1585253287,4657694932738245423
+5b87c534-8367-84ee-c6cc-e8814b728b8a,781269733,1547645732412626370
+d5404a16-a8c9-3c56-c5c4-42e6334746c2,2563307837,4212280545045070633
+67455691-750e-7452-c2aa-51d527380a76,3897947911,13954774840155109952
+e5a0957d-1dc4-96ea-8487-15feb6bc6501,1719158193,13058958795934540909
+7c1b3900-fb60-e7f7-9659-4f749f6771e7,394020482,15870185083060470732
+d4e7157b-735f-86b4-82ff-7b7fa8bc74f9,2974111649,4107087575471353607
+134dd381-ba1f-cca8-7ffb-7076df5cffde,2426550416,14898806107098823696
+0bb0e223-ad39-6ae3-8bd1-065d53575474,3767272892,5285594116333347219
+6e955e9a-79b9-9854-36cc-41fbb4e6cacc,1313228201,1289699314353836112
+e963602a-a713-fedf-bd4a-bcfa90a864a1,1066676221,11445396009593695113
+2f79ad8f-2aea-af7b-1af2-873dd627e24f,3993566545,10108330272462044049
+e3533a32-9adc-1ef1-8422-eead02abf04a,783903458,12870083554881248119
+83a56808-7044-cf83-e4a6-bbbf09c88271,593095720,10225465410052382105
+e880d873-191f-1809-8711-0c6964163ae9,3581721467,14687142757216536330
+746eadec-b4ca-f1f9-eba5-61f8e9519bd8,3050679833,615161766857935878
+7b48c5b4-426d-65c5-4f0e-b198fac2dbe8,1970792257,17861592279291007195
+269839ff-c5ad-7165-1478-dc7d0a169c19,3245914020,4643286935508458968
+4adcdd02-e53e-3daa-6a98-ac48addf2caa,1505949044,8071084919957411748
+663c677a-7bac-5cc2-1e0b-2a597d7e2673,3670758598,12275693999720277148
+086d43c5-c269-2526-8120-7236084f0331,3857567415,11781183154469531232
+ab14d87b-02dd-2c0a-e225-6a34a40e316d,1162173455,8354376262291654006
+54fe805c-cc72-0ecb-ac79-513a7b4671a0,1172277032,15511681424169579636
+6a7db50c-d3e4-1352-4ee0-3f6a4870712d,3127315398,1656722109630280733
+f1126b33-4a81-6b42-0c8c-7e9dccd541ee,3480168226,4886936435393597259
+b116bd2a-3a4c-a6fc-ebe0-11bb824a3778,648242220,2353018295459860707
+8388eedf-87fd-d4c7-823f-233ff19614cc,2970091576,13086973271935871278
+4af38e6b-ca57-c36d-403c-96a38984ed16,2885509407,14892633204702429050
+4341d66d-8886-67e6-7db0-692664f02af5,3022081663,16386336788750430798
+fe6a044c-fa09-a426-d67c-779f3ddf7c4e,1157279003,1151727677339354502
+78b9444e-7e45-07a7-d3d5-b99928ed9a7e,838745642,18069810227255307447
+f7e62c4c-38c5-15b6-02b6-84af04eb50d5,3669776930,3472625684012934906
+c292decb-f998-84cd-7c3a-bbbca45db1ba,804896646,2957422509483067409
+aef990ed-afa1-3435-75a3-9eaa39eed413,2894882397,2018936050558417446
+645c621f-9fa0-0f3a-8878-94c3880b5a8e,2885304778,11152932382542262955
+95bb4c2e-97fd-4b9e-c2d7-9e37a7b70cf6,3916383619,15437006125684217176
+ca2618c8-a8fb-1373-d694-26bb8038c560,2486894214,12318395796267227653
+4f96522f-5809-9e16-546e-01b9cdb02117,446363277,8240160076060002362
+8e8b4b16-95e0-ffcb-4424-d3b53209885b,914013944,6115483752139655239
+cf91d018-840f-4893-7b47-bc6fa995d813,2224770825,18226608746481150360
+a480fa8f-b10d-6201-ba84-8f21e2b1db35,1781209042,10412125442289361031
+9573cf5d-9cbd-9bc0-6909-6da0cffd1459,547145443,7545703310586339577
+88db394a-e0e1-1bdc-a274-258dd1f65b41,2234764983,2737825724821887525
+ea8765e4-5dad-17dc-93fe-c0a8dd650f90,982467819,10380042486793145604
+5f3332b5-a056-fe0f-a53b-b76ba44d1e73,1424415921,12619732736078654753
+eefd42e7-e9c8-ef30-dd81-a6bfc0a9ba5d,810608029,15585346390180679197
+dee49331-1ebc-1e87-9856-281d611c2444,4198003795,5813218728847296654
+c0a7e230-de52-1b26-1d96-80636e4525c4,1565326898,10384090193541844176
+dff2abbd-cb20-9d54-70e8-f239b9f2ecc5,1940182673,8379031112615626000
+071e689c-a573-b9ca-89d7-5d03efda716d,2932193752,13629393702699106019
+002a229e-30b8-d411-3673-eee2f640a150,577979581,16419626895536165218
+d6001649-35d7-a738-ca4c-930f9e3b7393,794426173,11820908553070971250
+4763c1fd-3193-ceb0-0d0f-4cccb8728919,1208080235,3233565485826423026
+73ae87c0-7c33-76b8-9ea8-a3af141a1267,176037286,15170942531637559797
+45904b4f-ef33-f691-a588-43e8747a4b84,3811009705,2514530775777323813
+f10b70bc-b052-c45e-38f0-727f9c5a01cf,983905830,13504909817657197082
+23b902ee-7c3b-a429-7ce8-62a6142d82bb,555744789,5162789867145692639
+e76181c9-d213-818d-7594-f31a17667dd8,838751763,11297987153215853435
+4c557b21-d54a-0002-1926-76c36ca5be0c,4034510477,1316331644386871549
+818af7d6-fd5a-b4af-3aff-95e7dcfbf68e,1740705480,9489058083113727739
+66586330-5d3f-4844-0e6d-de07c13a7b69,1314708039,12619434035128375146
+a9894ed9-88e3-6998-b847-64a51b25ba61,4294061754,10364362946693978037
+40d75600-6212-27c0-0de7-83a0746d9b2f,3128512840,4221565358908308553
+32ef87cf-add4-1427-6ccb-2be566753c3e,3762502325,12431295454772431896
+d5372a96-c60b-8e54-e95f-d8a31f44baf8,4077633119,10152687235369554998
+15e77cbb-e313-91e3-c1de-8a763afb75c3,399916459,6964049079057572191
+a220a0b1-f033-02d8-3f52-30a987b95aa4,10520205,9181930702278186067
+2a9ea2df-4c24-a206-27d3-26ddff26c709,3616180822,13401841234445483610
+43002715-8849-dd07-9cd0-8ea71d318709,1386305345,6535912596702865708
+222f4d5a-8a3e-592a-2d6a-3f79464ba2fc,885830830,15226633629662135861
+13e6df30-1f59-623f-ceba-3e5b13521ba3,2964764922,11811798620145958086
+4f31a5e2-3127-9dc6-db14-c965ef5be292,1193815129,15341025235388358957
+870dd417-e83b-4cad-f356-c7dbbb9f13f5,1503763083,136896435914743876
+997307a9-4be2-1016-c947-c03edb9233eb,2640843365,8895262565694838440
+b890b025-cb1a-801d-9423-66e8b3461922,101411089,16397507156206630911
+b40ef8d8-8535-e028-25ac-64beb5074280,1470292386,17451226083578606119
+15479bcb-8760-6786-629e-1d63e7ee1f24,648815657,8758250985708666212
+a0368423-23a8-9b7a-911b-165c3aa21e7b,3360720807,5307291568439948736
+622de1b7-558e-5e2e-fe0f-f3a75166231a,402528688,2235791224786093170
+d2ebb08f-5e6b-2662-472f-17a6b8de5230,3722234786,13948448372917798815
+0dc392fc-55f2-4a89-de89-c62396b06ebf,1937481260,16555806794412857277
+289bd240-3b60-2c8f-14c9-2f0fb255098b,3637258650,16357815825313331815
+0a6a1c22-42b1-8a53-24cc-86e50febc008,2364211427,4036167951385018720
+2cfd264c-bcc2-be86-b06f-f032a7e678c4,2953937184,2530584392268949588
+9f19d21a-b644-3b7f-0a04-d6ce99c337d7,3639545669,9119915104692383569
+49263b3b-7bc7-04a3-36d2-0c93c8276c26,3772132435,5126377631875477451
+b2174f19-b231-a041-73c1-7416d6e4ec1f,973270586,6140136040088870800
+a97181d0-db84-386b-3221-844d731c2308,2357022825,10420731624442205812
+77e44b53-4de4-6cf0-b031-377b9b44eb58,748083228,17429923828298177825
+2960cfde-0d28-07ea-3458-0832f6f4f9dc,2667337585,13800143198382716347
+392c670e-ca9c-8542-fdde-c69ce0a99440,2577580671,3895062215128287681
+5e77638c-e705-5e47-edf9-76fcb90be1f0,3980230099,2652170263380193273
+f343735b-57d5-bff0-3dc1-c0a508fc6ef6,1805252760,9864416993538536645
+b77a3a99-38af-4899-c8cf-fd7097dc3bfb,3213382003,14814793804560393780
+df7785ea-1f91-4edb-0101-280a281c6971,199988489,15717877273355393184
+99f8035f-b2a3-1d53-ceaa-2a0105b96e10,4287231333,16476510079416774818
+5df61011-c1e4-7b6d-72d4-6a5922d4f233,1730393758,15954199169459925740
+87648bbf-e216-9582-6ee2-66050f78d748,349506559,9032268147619535924
+19dce511-86e0-3736-5322-6d614cc859d9,2580586533,7176731053205127458
+f5672876-2c30-af9b-6557-9cf76055bfd4,410678139,10423051027323764754
+6d6fbfc9-3f92-9ea0-311a-481621af6471,2153861484,5252853188182383328
+ef2bbccf-f907-f345-63f0-634a734ffbc4,888994267,15352176260657347208
+baefda5b-89ef-6d1f-9ac0-e2ab7b4e381f,294807716,2993066844702532310
+11f90865-23f5-17af-d064-41df5504d53e,249003700,5752880307932671765
+b5f028ee-434f-3b64-3461-cfeb95c58c1b,263305967,9443981354466367469
+1ef791ec-43fa-0b60-a3a5-19f9afd0591e,2478506982,2654894076198234178
+698c7b5a-a3ef-3af7-a019-fb10036245f5,1679745064,5124567136484114428
+65137b16-b94a-e8d5-8c88-515b95155cdf,2515803706,12890745414845345640
+00dcfb24-c2cb-1bd7-de0a-9df1fc08ba84,4072983280,7886581731214047690
+36aeab85-beee-0fe4-5a06-13cf1cc5ece0,1701286686,6342826786361329138
+6aa266fd-43a2-cb8f-5d49-738ec565820c,3930771579,12870336396370744665
+47b7a6f1-980f-23ff-be70-890eca09e901,2812324992,17606459715457666221
+ba434c3e-eca9-59c2-23b1-3ef233d0cb06,1518103455,8896947683336867333
+17d23cc3-225b-b8f3-cfe9-9a92c34031a6,2396034638,7468643241408470159
+2ed4ccdc-38c2-96d4-cc37-8856750620ca,513998439,3700259678716841997
+f844be53-ce2a-4875-b3d7-94eafda2a883,209931146,8562577869696884849
+84eb1ca2-4735-6504-6a68-753b78281443,3752645891,17037912635026578423
+72b9649f-44f2-9388-c6fe-4710bb586ed6,2660299941,611001551721253097
+c02e8137-f48d-06e8-d6fd-e033bcb7df49,3027936986,5637822660477917916
+6cb40700-fa3a-f96a-edf6-25fbd6ca2158,1103096772,4800135466394167572
+46edbab5-8a23-56a3-1f74-a52e50ce1064,765568192,11297429770856317606
+f1cc7b71-09fb-9055-61d3-33962cccfeea,3250029171,14113471981953553232
+01cd9a96-04e6-9199-bc39-628fc76fcd35,1106589466,6756929034125777943
+9bd7da6b-1775-7183-f4c1-a9598b2e839f,708421728,13794227860575118748
+069adcaf-3a47-17ef-4e0a-389e00f56341,3168723408,13744417358861848100
+7f19bacf-8b37-6269-63ed-3f4b80ff4927,2164486162,13792725875904645008
+d5ed2404-e69b-475d-6f47-871a2737114e,3847171846,5918115816796805963
+0010c5e3-a697-98f1-20e0-c6c68bb725c0,1343828687,11624772509700815515
+b63f9b97-206f-1d0b-67a9-0bd0a11bc821,1788995334,16324403985127255763
+728ffbdd-ee89-ae2b-d366-e97a211413c2,2300288388,2226499748199982827
+e1d940d3-eed8-9887-e911-c4450c83a2bc,2010625483,14944161434844954610
+852aa896-03ac-7d61-6a82-ae5ac0fe9a47,3521690432,15229697796682786273
+7b1a29dc-039b-09da-ef20-fdd022620bfd,1934801921,17359082929792689882
+808f3241-6001-8475-c6cb-07ef03f0da48,2090265483,10597064902983031306
+fe89aa4c-96b0-bf1d-9bf1-df1852e72237,2149725055,10872360319432359268
+99da6ec2-32e6-4476-f95f-01632a1b9e86,3461026448,8311445609125582856
+a8d047a0-0cb6-ef91-da4e-0094ea110a00,3634040888,2328412383602179701
+2cc4018c-5985-560c-99bc-804f9d9dc6d6,326158316,14092884712781869808
+20da4b2d-71b6-787f-9424-e1385bf08cd0,3243916468,17687943802278454563
+2468abdc-6ee9-8887-303c-7746cffb5d48,2907685843,8324733497812044726
+4939bf18-4add-2f64-d910-fee664af9b02,628164565,15640661486993739431
+69399a0f-e0b4-7ba3-a6af-a57cc6d962eb,2042903401,9742017199082393286
+98712ef1-61d1-7b49-00ac-ff51f60280aa,3564633209,5011553405584046753
+1490950d-79cb-ae81-79f0-4a4ed7664dea,2695522981,16437737393064105705
+81a94bbc-b2c6-99eb-98de-4c6bbcc608ac,157351961,9994258756610754293
+761e1b92-d9af-e455-2bec-49d844350158,3139275380,12836757314498089957
+cc0ad31a-7354-df3b-5a5b-c756e1cbef6f,3512662940,14923143823792419355
+3f49aa38-3c0f-b9b9-e50f-9a0aacb4454c,2203297890,773599659200665611
+e5be259b-1645-ccce-9d8d-52849899f3aa,3360277051,95589489170879664
+fdd5de40-ed06-fd50-7fcf-42036ca25e2d,3039411969,1970772354670108765
+43c241b6-a6cd-b258-ac13-56eb4600cdb2,1311490197,10012584625233799454
+4d290b26-788a-6656-95a6-b227eb894ed5,3057631831,18435872582406066853
+ee9c3096-a019-de21-2d24-ed5613e8d22a,2438234661,5420988732853460995
+6af16b00-760b-290b-46b6-18e70faaa862,2391629038,1989906331312331648
+1f5d44e5-6905-a6c5-11ab-72c919894b2f,3037499536,676000906797443322
+f29e6fb0-4af1-df7e-13fa-d2bc79976e97,321529132,16160162190608398555
+a04ab70b-8aba-e11f-427c-7552e25345c6,3038125441,12985333792970835155
+d9e63638-c603-4f1e-04db-b5c2ca4ffb70,53900070,17811627089930874077
+db2ec891-e69a-fe03-9630-42d4013a024a,171867938,350150681119677472
+6348d9f4-6dfd-6aac-ab38-c69bf95a5aee,2103709277,3631185756770818719
+9fb0a99b-6bc0-7d09-7b56-acb198c77168,3129478981,11321435727758423725
+5550b2e0-08ae-b9db-1f43-868f58f00af0,1358234029,4521857427086471845
+35e355b9-b641-ff8e-14ed-382b63b3002d,4280441010,2747638555770594234
+cea0312e-7677-c882-24f3-0724ffebb623,1577799285,14944826184004736459
+16359a4c-c3bb-9e0c-c7d5-64201d5fd9cb,1847410752,11244758211023781806
+8c0ece1b-5191-287c-a0c2-96379936824b,2455477214,1333194261646207121
+2b25c95d-c2a2-7c6f-c26e-512bcf3573a7,1544417976,9232210537571331477
+a2d84475-b9ae-46f4-5284-7e5753b3267f,3989539455,9487749778195447292
+aba03971-2e0e-c77d-f1d1-bae4590ed8bf,1315684718,13479281002352441605
+bd57f8e5-3795-d775-e9e1-10e65218d4e4,153214756,14779110409956964093
+9e1941a4-0da0-bfa0-f432-80a55d7fd088,1240247970,13889604564043313911
+00f6786a-40cc-78db-31a0-6e4710225d62,728752462,6425108804546763353
+18b2cd89-ba7a-c22f-5022-1d51663d9d4f,2650291024,1351525256401734814
+2b71f140-3167-e09c-1dde-f730accbd263,3637577334,9985495304956426832
+d98dea4d-9d80-f02b-d1a0-d2773df4bf7e,2720075557,4106073334069701268
+0d8c26c1-0447-924b-f6c5-7ae1e94cceed,1860879716,5656573824766382474
+2be29877-1187-b35d-3948-b7ccae02bf36,3097521411,3887999470543044786
+e4bb1246-ea18-bca1-3d56-7462c67e3658,3104600928,453152232170024479
+2ea5054b-bad7-4fff-2cb2-d38389ebc4b7,3525003425,14485632890056069212
+b3991b98-65a7-7cbc-c286-d8a2c67ea533,363038381,5541627702306038441
+6bd22a5a-6625-9d53-8eb4-23be7251decb,1392725987,4024833784260373427
+a2b89142-9d04-41ef-faf5-7ef535ffbe80,1251442411,15193893706425304768
+615c02cc-ec6e-74d5-cb9c-c5d03b34d03f,15320991,17621565519388477416
+d82bd629-c2df-7d5b-9076-29744a261288,1734082890,4802673144898327735
+ce64552c-a85c-4cb9-2af4-48e69d247aef,201404246,10405275305001042115
+8c163b76-e178-ee9e-3429-7671adffa292,1951721023,15470595918134471148
+448d74c1-8b5f-ed54-6ba7-78646049c5b0,2245954561,6273461384437117081
+f77690e0-cba9-acdf-f11f-437dca785370,1376513704,4871332156649413888
+d0e1cb55-6ec2-fa3e-8efa-34a9e2d3b527,3488859555,12687138079614900500
+97d0b7af-fe11-fd3b-d42b-a7c2a188fc1d,922143923,8578226417191461685
+4e91cbbb-a643-23be-35bb-c53d65118083,684836401,678730324782515944
+4b2c2ebc-9b09-3e85-1746-f3e553dfc191,1485599990,9365994981017238344
+e601627f-2c10-ce00-79a7-be927300a7c9,2763839862,16238827742276312535
+b4ade58b-6ee2-da29-020a-df5266459fe9,2418786070,4465223111642873643
+66a6f750-46ce-18f2-1dac-265c871d56bf,1698407753,9203418408955075875
+1e1d20b6-5707-d792-7907-1c11f0ecc6b3,608681869,9263488640886602872
+52e5b33b-7e8f-f379-5f0b-129567b733dc,2191508928,10603511861735313711
+b52ecf4f-b7f6-ecfd-ff6f-4f32704512e1,3951252965,5734449052509758482
+a85ceea0-4fc1-a192-b8bd-f5d7a9220824,2020541735,17059209554749345499
+e1c7a463-aba6-9741-f8cd-aee1ec645c8a,3312476987,4895382250194709805
+43b1afc7-b282-213f-ff2d-badf916fbbfb,631108004,9725221682782662279
+ed81b22a-9315-9c8f-d772-7cd83651e029,643727977,17982860090478726572
+6ded8e5b-77eb-6fe3-d389-1fe2a1161e8b,3314490846,5136491982070455124
+105f5078-5d67-20b3-4f14-4aff651f4899,3916481545,3192687244619392192
+093541d3-416a-f502-7133-d8297f9d61a3,2059272617,4991833620515277724
+2b69872f-0303-1896-fc2f-954b4904cad9,3432844226,7030954830297428559
+1ff52944-9f13-4016-2e77-7ea420c8d852,323178610,17854356612854937255
+3b6015ad-2fe9-ec09-5c19-873c1b8be614,4130060926,12577894742093646417
+6c6a4abc-3bb3-8de4-70a2-629774a40161,1881768099,17579828823991919001
+751d3457-011e-ec19-a48a-0b8c64430621,1288822899,16272931644012238663
+b303c79d-57ef-0e8f-a93d-5fad67acdfcd,2912320695,12321411530061998873
+c0a51e47-f7d9-8685-884c-7eb8f6565620,464023186,10437261725657773231
+a6ba0651-9146-3cd1-0111-863b86acc854,3147001333,374431762388164919
+254634e0-c24c-598e-6378-bb5996b58148,4064125686,8740862874134540594
+4d4fea2f-a5fb-a99d-ff8e-7f55c7bbf932,3680805665,4858404547901042668
+b4f195f3-c62f-e499-134f-686e87e7735e,2529212193,6712938720344200963
+6e577108-ab22-6d6e-94e3-cdf03ec13f3f,1887285154,7508959434268971474
+89bf8781-f1ec-9d72-e584-142769fd78c9,2538128940,4934741812921391176
+8a9245d4-bc42-43e1-8014-e2903c3df284,3313001105,12949080386768219171
+b58a257e-db08-054a-8065-a3c40b45f579,3079448108,11004777004920102723
+193bac93-d9b9-2a15-5e5b-f0c4ee939a7f,1844056624,6894161448104428724
+8fa250f4-77a1-aff6-93bf-b02b4852bd29,3560820108,6088083638054834148
+721be349-7db6-67e6-6c96-a60f1e8d08f0,2690384553,11946115559211358178
+d9b56cf0-acfb-695f-1674-25677a6583e4,2058012910,1669266478992323215
+fecba5e8-0e7c-d736-d54b-70e1f3e0bcfd,2656821646,14764851877142193043
+7b5fd6cf-0f98-6f55-365f-ab90c2962e3b,849261663,6004545156743196166
+087f9307-6af2-565b-fdf6-422d883b875d,2120955315,4944687409475341080
+ced38133-f1fd-6f10-495e-2d55ebc1d7e0,770793833,15592460427633988997
+6bf20f1b-cd36-e5e9-bc71-03aba9eedc36,2775747596,11757614024958953431
+0c213b4d-fc72-00f4-5015-242e7d735481,3970591415,15722516350966027990
+2caa0fd2-a11c-97b0-f434-1600ecb5eedd,3558682289,1861751870606248854
+a7a56b31-a0a4-82eb-c404-471fb374bcf4,123476362,10449278446313925652
+cb49b39b-25fc-12ae-0cff-3430abb09944,4041259002,11897618955221838313
+817da0c1-0d04-38f1-74ca-4b2be85b6a86,1503487623,10624850203547736294
+66d5af66-27a1-07a3-c71b-514111a045c0,1385045769,18348395740651713481
+009423a8-aec6-41a3-4b1c-457b44080b98,1654852696,6583482019325865242
+ec524d45-e97d-f860-6150-2e1be24726ac,3635490889,14093896891470452863
+3d59e7ad-11e2-c6ec-f3e9-bad2fec1b249,384171899,5510831323434524224
+bd4a8222-ed33-70c4-b595-6a745e9b2088,2391248038,5845632041742044286
+2099a94a-36d7-b39b-7b21-fa215f900b12,352261523,7484823379189610262
+806399a6-5d3a-8771-e42c-fb9ebe1d9a0c,1398429790,718694327035345749
+4a633257-8bd8-aae0-d615-c2f27d1ee0f2,2919089391,4518818516658228321
+2633ef26-f497-d1a4-208c-f573d6e51f88,776595707,11109284200183456453
+8d7079f2-4aee-2d79-0e7b-9ad8719ad710,431897391,2648251459991546231
+4386e0f1-9523-0edf-faac-8557f27c35c0,2597626731,1026736109379122038
+10cbfbb3-7db1-581b-ae69-f12d36b4761b,3512453409,12567548901441973575
+5a7cd09f-c768-d52f-22e4-beeedf6186c0,1884868176,7061386169378230068
+7b4f211d-f268-86a1-23a2-d5ff9151f9af,2138461241,6392630538210479690
+d88d43bd-66f8-e833-90ee-cba89ccf96ef,3256525353,15930295898908419513
+f434483e-8bdb-6536-e17d-4b02dad3c6a6,1568391001,9686762294112138230
+5b167641-f22a-d0b1-cb86-b0cf79a91f90,3642461376,14670537632155268471
+6e6e3210-6999-cbfe-d9a8-0a08d397e9f0,2531423360,9050775654236896280
+c4fd4c4a-8135-0a6b-7700-c627d9ba67d8,1589447195,17669097957895321669
+f9ccc6de-9c22-0922-624a-c347ff6da24e,1259698160,14307004651142472594
+5d4dc75e-0ca2-0b32-600b-55f0d0be6810,2860428344,16600228981657452346
+4bbe6f50-22b9-f77d-de49-52aa606470a6,319090154,4231509398466172040
+4e66427a-9913-5438-edc1-b27ecde78dd3,293889677,17502686521206634666
+f8fb965d-bc1e-cadf-99a2-38097be4f7d1,4056173895,5499476096464215290
+41d9f2eb-f586-4113-dc06-3bec02037d47,1672494959,2920071834487875174
+aae4ed16-d4f6-b85e-e389-e78fce8a288c,3183027453,14464140546686649083
+500de91c-f02e-67dd-361d-6bdfe35d8971,175477025,11813795611326022133
+9013ba19-1e49-ccb9-a3d9-0d45163bf54a,3085433628,3979231326027161863
+aff14442-95aa-0a0d-e9bc-311d10003533,2763365216,7377579599718690225
+4e7058a3-c190-893a-894a-4c2d4903d751,2793586247,14586033264375679715
+c8f783a5-ae9a-d487-7ac8-e283b6150fdd,1176868444,16516595396527319291
+6d65e278-1ba0-4933-8810-4a76da575e97,4143320138,3241162125589423319
+5418fa5b-a300-1724-3073-9afbf1aa73dc,1012310610,4231490891390178911
+3609ab97-aedb-79ef-45f6-53bef81e5aa5,2577829867,10410501729520241270
+110935d5-f80e-e745-e65c-91aa22aa2496,3888376026,4703461769145102340
+9782a595-fc64-e6a9-6984-4ec875c7669b,3017139292,17001944967839002451
+cc8bae7e-5616-7818-63cb-d3033f61e234,69246972,2586666111031766753
+6401211f-e4fb-675f-3ac2-a06a536ac135,1101278859,9764630008804226635
+5bc60072-8c3e-77f6-c3ad-e42d3209d452,1348650868,13667372491864187713
+5482609e-6eb0-faac-1914-b97bb5e60ac9,956427822,2205203405500611284
+c10f0193-faab-826b-5e67-02a19ea54802,562012439,2562080663700970250
+bb16f39c-133a-7c00-5bb6-f0a22a4ba5e8,3776463905,4695191262564529243
+f9ac91a0-b5fe-52f0-07db-3e487cc2447d,1078619183,5317724617527202980
+c737125a-150b-5fcd-88cf-193a32763ad2,2501257878,16422669592241077657
+5a50ce4e-802f-0344-4957-8825e9c901f4,2164313622,14895027790633332149
+4a6bab69-f686-49e4-3629-2c026a723da9,210164705,6564757286048305023
+72807c49-a03a-3c8c-eff0-4f27c4b6a11b,1561953484,13739731113482590889
+90798849-c543-5b4b-698c-138876987bfe,3201270728,10857020686476879726
+6b6fa9eb-8d61-fd37-642d-549609aa0c25,2764535625,392220601344990455
+6d4e067d-7d98-07e1-fb33-4ac74ea72c0e,2900602866,5080488048386660185
+a19caf82-c23a-8e58-4aee-6beabd9b45b0,3199141489,15970864599330684565
+a4bb5e9b-c571-2571-b475-38cb99a1fb55,2999644990,18082395259223993866
+85640cd9-20cb-604c-9bfd-c0727e722204,3185562150,7281043300214020894
+4ecd3620-61c7-35fe-b9d6-93a9de351906,2038547375,15585251351667337040
+22fe7380-ca4b-3f14-a5df-1050a7d3007e,2566652681,4725833264075083612
+1c77cde2-c3a8-b24f-d364-aed0a7a62466,737464597,9620345479923371390
+4e858031-8003-98f7-eaaa-8f11c7a1bca9,3605450895,18330498403864777822
+4525a3fa-93c3-6d71-4653-89a78b97958e,3309456339,7418689457646073808
+14ef5d3c-6272-74b4-5974-0159eb6f7b9f,2434652855,18442732969013409022
+12cedcd1-0b72-fffb-4092-be89da1954d4,999593294,17239983843695984302
+579af6d0-83bf-249f-cc5b-bcb3b1e5d196,2506919104,16461132517538710067
+83c43206-4d3d-39f4-cc1c-d50ff14f14f8,1657456640,13915518331237056261
+397de0d5-55a5-9ff1-5ef7-7a990d7a91bc,1463643887,12487282560077569091
+ec01299a-26be-486f-0901-c53b514c5e22,921393738,9007179281581102128
+03e88346-2c8c-173a-fb24-2f7f39be3293,2477101339,5879587067345247978
+2766ae0a-8cef-86d6-5794-5dceb48abd2e,1139413989,10214583256120853864
+dfe0c471-ebf7-97e0-daa1-57dc6e68bd5d,680490124,10940223637251981013
+bbd7187b-b9d6-87f8-d047-e0d6c1b0182d,2063452039,15481600682973059199
+2e180799-5a39-83df-da5d-e7ff545af1cc,3514218660,14560502369298828589
+9d3dc9c9-f186-7bbf-3228-1d0d76f0a899,3399126643,2221981145740262668
+96152ceb-29e3-106d-829d-c88d3eeeb502,2428379646,7341008223791223671
+c2e5a534-7da9-afac-a634-6cf581b0df3e,2868296,14512110920510015287
+b5a0680f-0f39-3167-0b7a-10f9c09ca294,2807039932,7784013208056917785
+9254d56f-a841-a72d-5a33-77707ea77611,2796923597,9397396364709869387
+ac1f54eb-d3cf-3204-7d8c-369489a73bfc,775773017,18420447781167223810
+dc5410c5-e2a8-4943-e99e-8dfc7f930de4,812619352,15938225080730634776
+393fea3a-9059-b788-cda6-44fe61f64369,1661085541,2892290460869478760
+216c84ac-3747-1a3e-3e6d-116d9a544bbf,3475680950,3938048964889673321
+8af5b2ea-2be9-1cb4-45ff-0631200d369d,3786293347,8513220563203337343
+48d663b8-6cca-4531-57f6-217f3b76f927,2649570904,9929982034015796519
+a0afd74c-aba5-b98c-2a8d-9d3553ceebef,3001046203,9683331465074545870
+ff3fc4a2-ba59-d1ed-0db4-58a4d19a403f,749403192,2696392204279938700
+3938a0aa-ce7f-cbe6-dbb5-d06dd70a65de,3912097827,10416395959228205760
+97a2e9ed-77e6-a8a1-b17c-6b96f4be3754,3033841773,9881098521654801773
+0c1bfebc-1b48-7cfe-7488-9c1741b11ad4,2557197755,7769801466039705088
+4dfee782-bc3f-6d24-5536-72c1f81b57de,3261365524,15651744112978018520
+09530223-5c3e-4221-a664-86c69d0245f2,2822482922,14298706075295097386
+9605c842-a07f-7fc6-87b2-51d8e1968ae6,1067726880,15743838392693644844
+9e270bf6-ba06-c4a2-a51a-30a1fa49e7aa,3076585895,16318666369368399179
+4d95077b-74bf-a3a8-8fa3-028f6a76531c,1797534566,8338562774090700093
+425ab6f8-63ab-103f-dabb-dcf32d1973f6,4093184600,3531450006071514631
+e244f4ec-a4b0-5ded-7000-7eacbb977e4b,2421857686,10737773558310493001
+a3e64742-e835-c11b-75b4-29a1b27086e4,1225069123,16527306501223288126
+07a9b657-108f-7570-e5b0-3d453cf83307,4240202169,15152924476378647821
+1d26bfb3-9a63-51c0-f00d-957920eee052,246427039,11466932610099826480
+3d9fe043-72ae-4c3f-6031-503c921d17f3,945790703,891796529008939752
+d353665a-953f-8b0d-b672-c05a10cba2f0,936965002,17067518131786558433
+3917b37c-4858-2c4e-a0a0-f7acff1631a5,981992289,16997486361921411483
+4a3c02d1-52e5-60f0-9c03-8b814bc82270,3603869065,11061561047569028361
+b7895019-ab35-7dc8-ad6b-df59002e239e,1956873412,6859832849194060054
+bd086f4b-ae52-926a-8b48-b83add94abe3,2485551168,14272402504739506311
+622231b4-5cb9-8f7b-061f-032848d6ce66,388855843,6754393428176353995
+a74aef29-8eb0-20b4-0004-c371938a48ec,936565335,4730115048889557336
+eea4628e-3262-e9af-f419-6043b3fe7ed3,2524031900,11501145885390489580
+2e76def1-cb9a-0405-ac77-9a764a587f0b,4140465588,13157248876122185021
+28eac159-6320-d791-035d-9a73521d4b50,1732310894,4202765133004587458
+f92231ac-1147-74db-8920-c7fc173fe628,4226423329,10873291867881336113
+eb4e3670-2e03-2e2c-4c56-edea24f2a295,1457746781,15222067220708565907
+d111aa6a-2779-2ce7-f059-5496c8e66595,3761529920,663865763702943793
+6188256a-7f80-bfbc-9388-7e328a2e7bb6,1590922497,15865579533214246973
+d59a470a-59da-0291-8bea-e8eabc3bfbdf,3071224694,17909621183478157938
+dfb12805-674a-2c83-604a-183bcfd759cb,3116032345,14084053621627915712
+5c3702fb-3ee7-54f9-4259-971133ee519a,1090963488,15219303557895064634
+c119f156-3b8f-2fd1-1469-03759963b5de,142322950,5964058448514962456
+70883c86-7553-7eb2-609e-305aa5dfd742,698757958,5848245023069838702
+b3a15b3f-78ad-1527-c248-d4a4abdd856c,4142032824,9432257176825307036
+1f3c48b9-ce91-367e-0842-24dae5d75c23,3749921759,3705421258417452022
+5fa4657d-4db2-3a45-16c1-b52d7a25baa3,712111038,17920534760937889971
+cc1454b8-f1ef-ba22-a976-64736a67d3cc,3093461187,18334327254516607743
+e052d292-7602-4b5c-10fd-5db2b2b10534,1376947365,14267445735473714275
+7b91478b-e7b2-504f-4f7d-61e43263f595,2353101068,2864020400226378963
+dd2ef8a9-97fd-3590-10e8-24a2c97b7ee4,883422125,4145259970809234089
+6670fcdc-ba50-ca3d-bed7-3b1c5fd5eb02,872072805,5211107084370202335
+eb4cf5c1-d652-7d8f-9fb4-ef844518d066,4275443777,18029531215986691140
+44ce8838-e2f7-cdac-418c-1c3795fd613c,1046441065,14266813676576889064
+6bb3c1f7-9d17-a778-4599-1e3802676bab,887621376,9278005139139742021
+bb90255d-2b1e-10ab-91fd-8243415cbb9d,3377577062,273599746193573352
+157011be-27fb-0572-1fc1-d3a2f8e5eff7,3903896913,17236007941458742296
+f0bf6357-0d35-270a-e0ec-8d48d5e7c74f,3054460288,15573819689181665869
+798484c8-8566-f2ac-0d40-e5cc1c6757ab,2881294890,2790369931075932037
+c64519de-f973-5c02-fc62-9f37b02a66da,3279567927,5404584180065275026
+e9d502ab-c438-ea4d-0257-8afa5f1e349b,3636660657,11067635575332440193
+aa830ee5-5d02-2169-10ca-342eb2a5a55f,9070065,12300746986290552689
+f9a8466d-e894-2466-f65d-11bb20833e96,1320699930,10631508896965743783
+0679766a-682a-95e5-bf5b-1e0e3cd3b23c,4102283121,2358115989083453742
+840aad21-29b7-fa4e-a1d0-ac9f7ce12d7f,682612697,8434842169287447879
+ce35b426-b9b5-d933-24c8-29cc640db422,3337946983,5124884444815607283
+04a3142b-0d22-8ee4-a729-489166f05f5b,1853291122,2884543547118394963
+5a1ac874-ff46-5152-8040-9d1af520fe43,1728621286,912531729383681362
+9edd01b9-a807-49fb-6c3f-6ac934b02760,2317929700,17674628586316757743
+38ebcbce-645d-6658-9362-90be391dcb69,4190818030,7234883726702218149
+c84c7d62-c724-7219-5f09-9393c2494c56,3491774331,2851978401558081909
+1d6d0a07-6ec7-cb08-f46f-0849fc73443c,2510481937,324830461172655790
+9939d307-be6e-0310-6a7f-4ea47486a72e,1429185239,14139696055292261443
+f111c0bf-2f40-2ed5-ca51-609d9e1430ad,455794221,778255441885524539
+9ec28a92-c120-f2ca-3826-c4bc968ec62b,3579722255,6760856369138667361
+6a1453cf-056d-41ab-ff24-58face78f9f2,2463387444,9037205260900773551
+d04b3564-9463-482a-bf84-9e6fbfd52a60,1836342951,10149653859144671892
+a309bb66-45ed-0e36-3e72-679feae18024,2083477976,10623418477114762630
+4f3885a5-9cc7-936c-7db1-9ad77df90d67,243982053,15474496984910644487
+9a5f1198-d86d-3f0c-38c0-f571feef74a1,2275806777,17051158643909764642
+b42e60fb-3dff-d4a3-0dfc-1b3dd96eace8,2978562972,12037565772209764770
+303902dc-c0ff-509e-44fd-5137129c98df,3852627819,4653953237293057538
+71b0da72-740c-56c5-a066-9186b68eb89f,2787874372,4350300026433425398
+489b7b89-75bb-240c-ecfc-113f2b58ada4,1686138142,17119898784844617353
+66862491-72f8-7a33-759d-4aa262dd475f,2596589705,3104274331275591469
+f83d819a-a1c8-f1b5-2530-8480458d4836,3626290400,11617145076440355483
+694ac0d8-c034-6846-00b7-8698f3d701a4,4037371865,744814863135323562
+1cd94d7a-974f-d284-854b-eb5c866ccb8e,4230342883,2537564471211994153
+5e501727-e3bf-298e-b59b-7163a601de84,666638334,5379954288445156721
+62fd52c8-9808-fd48-fa54-67ddafa7e723,285841662,6484863439807879160
+22526677-f01d-148f-1007-1ac24b7edd89,2619181614,1442422115951262222
+a2ab14ac-4f97-94b3-010e-bfb3b86eb082,1423747118,570598034853395158
+82a2d7c0-c0cc-c40b-696a-be6b8b76c8c5,11078749,14883310129292290750
+994f77de-7282-7778-aa5c-457fbf06f003,1810470369,15353225181148972884
+93dcc09b-015e-16a5-78a2-4d83eecc7707,1833546016,11219550186311645275
+517fc5e5-7ce3-7c1e-4d0a-6b2e15b442b3,3442362470,4868046734668121353
+c6b1cede-3f72-65f1-e4d6-c32415acf1b3,4133636330,15237517496497183646
+bc75832b-a5bf-850a-4890-21aabc8544ab,591634051,6821981898770607421
+f506e67d-68cf-e455-f081-0753f1bdf577,81029719,962496938214217009
+c9f018de-551c-5a9b-f8fc-8361d54a87f3,3848379683,13522587532806867198
+c1f9bee1-3bc7-937d-d40b-31133def8c8d,860920295,4021956772868310828
+da37992a-9e88-3e9e-897c-357aa40c6600,3751349539,8100914415684611665
+86323e5a-7a8a-c2bf-4b78-7424355dc8b7,3635918702,11604747712095087689
+dafe3847-76a9-0566-3817-59f84260f5e1,1346777936,12018318654435420428
+8eb92f62-3c61-4869-949f-fcee3d3a95e8,1007920520,13382072921710576097
+5deeef26-3ab9-2472-13f6-7353363e2573,1809286922,15801037118528039991
+2fd956d1-a5e9-ba1f-f4cf-7ef843fbc890,1703979567,15823740778915588710
+3016eb25-8caf-5cf8-40ab-723dc6c7d8b1,1183812578,17534496239150332077
+d7df1091-cc94-22e5-1b7a-7ec4a033b934,1000596100,8705769855539983364
+6149f3b6-3e8d-f049-1e19-30434f7455ea,3499698924,17012154406448662043
+d5577299-799d-9d85-7dae-96c1bf6d6998,2446483837,9602752062630953820
+ffcab715-802d-3321-e9a8-f50302ce31c9,3615506385,9575956151522540289
+faf3d32e-e4b2-8574-72bc-75a82847b017,1379860163,17639205225711747620
+a5332272-0274-a541-e59c-fbbd3ba66b2f,3488334382,13824727739661101777
+e8678638-7e7a-254f-69e7-0116f7991ede,980907488,4652971945765087874
+5ee0dd9f-475c-7307-f066-fc3479fda4ae,2016054599,7667468939641682852
+83554862-e549-3b6d-8dd6-91b7de4808ec,1865109184,16469731067592742887
+32809870-b8d1-9a62-0da1-b43e2e302e6b,739219049,10569368952875727609
+72590bf1-e044-95de-294e-1e87b5c6d406,944421525,6748728147462487577
+881498d5-d558-8e5b-ff98-6b65e9b3f97f,82700357,9920539092708360209
+cdf37525-70cc-9d7b-f90e-1be0465f98fb,2816664177,16872225823292257781
+fc820b2e-81cf-3081-9ee3-41166156579f,523961823,13675958903940913484
+e7979074-8092-44b1-32ea-927dbe4fbcf7,3163100843,18424608624895521284
+a9f61d0f-ca02-4b6c-c7be-b6ea0e1028da,2771712734,17537083112150004990
+99855c4f-b56a-3a98-62a3-ae81e386d32b,1842349279,2105826548496827787
+0be13846-4678-b02c-61fd-1c3ff0092c1f,1484679378,9121607351863264768
+7ffbf63b-643a-adf6-db07-d0dbeab1ad79,2253903381,17084280964476075193
+fce27894-c972-2f32-138d-149bf7db1b64,1633996907,4668091981078047854
+c4e0d1b1-535f-b0ab-dc65-72a08fa27318,3473919425,6429629103306205477
+719406c5-8656-8ffb-6ade-5c49ada45a72,3756280402,5634650798053814792
+f2026c37-c16e-2ccc-35a3-e89c0402164b,1303539459,1738781474565199279
+d3907799-a7c3-c7d5-e888-2496f7fbed7f,765597454,7955938655494343377
+3ffe3a2d-40fd-4519-d374-9a9069ce6633,2540843553,5887256298588856097
+0f2650e8-2d64-ec6a-afb9-dafbb3bfae4a,4109767202,13680842497927645143
+a4122b4e-f051-1fdd-fa50-93c01b248b94,3860528661,12752334558591225982
+fcbb0e8d-f1d9-da56-d8cc-92f775da54ce,2327119088,4970358598994513094
+89e617f3-921c-1c9d-c4a5-e35f502702ce,2019194515,4920787330804963030
+275424b9-b259-8943-1778-2857faf2783f,1563673144,7148336796508315136
+e2edeb4b-6747-6347-ae75-73c2e36e1eb0,859470635,5327757390052657536
+b4f63e1c-df92-d7c8-9bd0-b6de53f2f126,692072912,9253086321416696475
+37123441-78bf-32c9-8b38-83741ba76e0c,4191741688,10604064528446182980
+202f797c-fbae-6af6-0d49-c9e496606253,3138007695,3436872338474497613
+bf35d278-4f68-ba39-726b-e017ca2f8809,838414909,5833478910931245582
+eedeeec3-3d3c-c6bf-0e5d-368393ee4004,531786185,5039665663050155504
+bf049577-99ee-8cfa-51af-ae292778f0ff,3855630263,7515091783186919540
+309e1599-0e2d-09a0-3b16-96fff1f83c20,1496691449,3400514058418892305
+b0225036-6fa9-cfaa-c123-37f6a645ae06,2610459446,16346089645629182766
+4bf07211-ba00-950c-1ca6-2ced88b0ae63,678380844,3495349300672762074
+f2b691d8-597a-115f-fe7b-09e829478ebf,3368681758,17121566813767253780
+be0fa721-ac0e-98ac-b7f5-132b47bfce42,2721039696,17898733370897687149
+066132e2-1415-1a7f-e646-ced51e2f0756,2254432085,3721504399693845581
+f38ae9c4-601f-77af-3509-412480a820f3,2102752444,11690314200776422631
+e9230515-2716-39a3-b2d8-3a0cd5dd19fc,1000867625,2062364555694815906
+f9ae7ee9-9c4d-94e0-28dc-956697a8993b,2038960950,2902336521370396285
+c0869b69-f5df-8df6-0d84-b014478dd0b6,2714955574,11446511134879351489
+a105d5d4-426d-fb72-e118-5d097c9ab269,3306974257,11610345468993735060
+6d786809-f11a-fee3-0ddd-9da7feb31b5e,4065550130,15955268476283156850
+58d30713-806f-e56e-e473-20d5b9fdee9d,1215179818,5365698103924713102
+d4a2d159-551d-b9a9-fca8-9c544cea6c2c,137790461,6364480155444678441
+6615eb95-904b-d633-4f87-4ac4563ab0d8,1044553194,7076412199186549094
+6c8d4654-0d01-639a-0457-bc5a782359d6,1573855420,1722953998208418929
+a66dcc6d-0fe1-4a40-b6bf-08cb8c1b20dd,314892016,8460812788056725858
+7a632c86-f08d-0edc-ee8b-6b9682695775,1361725117,15633850286217175787
+d93a41c4-8fab-c4cd-1476-d1e5d0a7f013,3972154147,8059843919888969208
+95482b53-12e3-d276-53fb-5d485588d7e2,3389367696,13772137500102148255
+5880a8a7-8eb7-5766-4ab4-b9cb4d981aea,1568350445,3445653433223940503
+30a06c2f-7071-98ec-ca6a-7cc20899193c,414701439,8901470553693390149
+1e8a94c0-748f-2a4e-1f3c-34f727ebdf73,687089899,13994303685881468286
+5fb26238-7f5c-e33f-754f-99fc79be3a52,1817412574,9998401111426934515
+6423e9c9-b589-51cd-0518-578825e35668,1246653869,4333826114545798744
+282b897b-a502-0dc4-08c1-11ea93931922,3044005270,4903262360367346724
+b7c452e5-be9c-aa4a-1265-4c2b49820512,155386295,1745392327179624009
+7221028d-8896-0d71-a22c-d84a4540b01b,2035868867,7645726433828735411
+e6880dfd-e918-39e7-fe9a-e12e2edd62ca,764575752,15594851341084401123
+c4615671-58fe-ab1c-8363-02cce3ac887f,3652119011,17099797275802212282
+9b7cf94f-1e08-0b34-bfd5-687c30b3faf8,1394679926,5464797275963556054
+ed3d257d-5678-a5c3-d8dc-6af87e253518,22503185,17571721158483898628
+04de1633-8d26-5822-ce11-bbafa288132f,2124442699,8323437127542860592
+fe013702-7cd8-33b4-f640-bc0a53677f0f,2879917626,11993487982233112165
+d637f185-9bab-cc68-7870-2ac50c4491f5,2752628014,18277250588531891029
+78825c8a-01d0-d7df-7b4e-facb71784119,2138135557,693718179228878876
+a288ef17-1a1d-7c1d-5133-88cdabe40de3,4019766993,8626385262731652050
+012efe62-9938-d9bd-175c-f8684970844a,348043776,13108016013877678479
+de9868cd-ef02-1c8b-5255-f0a51b04821e,2131548478,3516819234749723161
+d5567200-f281-1969-2f64-81428cf6a26a,2594389163,17305017493777711970
+17022e27-c616-6b14-20f6-3e54175e8424,1502565484,5516171869981139105
+271654f3-34e2-3532-7351-a1c0cea76947,3183730254,524823855161766414
+994834ce-22d1-dee6-3856-3b529b0f2d01,68856750,8964170318103713167
+752a7119-f961-19c5-3bb2-d784766a2152,4237206919,6276612317444597518
+2870da4e-addb-36a9-9d79-5042e5def387,2752651416,9952189072289984885
+dab3767e-8a8c-3950-2213-eda295d71171,3054081388,9071170555784873669
+a4eec62e-1384-c857-0cfb-1aafee6ad57c,693792723,8416300442861068643
+e2f3b539-0216-81c2-e614-04e42110e8c6,1452978598,12780001540535553079
+b64cc68f-e95c-d3e0-c9ac-568e8cf1fee3,3189842449,12748304615107249039
+9e5f3b67-f31e-1f70-8806-726a270c688c,4218294662,17708751927736168501
+72d2e738-765f-80ad-3f3c-e13698dab3d8,1810450739,11392613369877683182
+f9c719a2-53bf-a0fe-f766-c4632bb71d31,3315935199,7666835195987400143
+f0c4e534-f801-dae2-9f92-45a997402e89,792492630,8934112447107201185
+17a199c5-9d4b-fbc0-ccfe-e1ba21c74b9a,2057140427,1476268421072015064
+553bff05-0631-38a3-6d3f-56142c58547e,3073846551,5853948311862056023
+48dc8f5c-29b0-545e-caf1-07c4aa490665,264517289,12249849098818968616
+b142b2b9-62c1-d72c-14fe-d609be6baa75,674308468,1762752962462649673
+9a4014b0-4bd4-ec53-20e5-2ada1cbcb244,2314353487,4011783102640376016
+c22776f7-ac87-e159-c450-72507ae9e0f7,192262534,307082510234294388
+1f5f6b9b-a443-4e65-bc75-94c43fe2e3e4,1647147815,10631590481110833786
+c78893ba-7e46-31dd-3683-3acdd638d733,4141067469,8759701849230702264
+0ceb199b-6d24-475d-b374-969ef5a36825,2833587983,7490995037504040926
+dd5e382d-b5af-1719-328c-89b039fcece7,3159775294,86780557996992091
+f735c8a4-7d29-7b97-0ffb-412c1cbf75c9,1586978289,14482587504675810176
+7f631de7-1b8e-40d6-51df-4ccc7ca8d665,2238935037,11676548612468496686
+28819cc7-4694-075b-f154-78a36c14d939,1716590280,14365228353903426803
+35229f52-5a70-fb4c-48da-caad017fee28,1628908829,17455293442135167034
+999623b6-6252-9933-c243-2b981fc422f4,1585267234,3275807618046597981
+94319a3b-ce0d-03b9-1c08-beb68d1c7228,2588163088,717215127834227724
+05e464d8-d089-6c99-1fdc-4013d69f50b4,2412924792,8577868768491745281
+886350a9-b39c-0348-02ab-d87f538bd587,2874070500,11224755847098212516
+300f1204-4899-6109-729a-d720a497948e,1232725689,936395930540583234
+e0ea04df-021d-fa64-593f-a6894e16be44,2520056171,4704172044247155026
+7f049722-4fed-bd4a-4a7e-6362c4fe794f,3366559689,15930931107783343965
+d2a41375-6c4c-74b4-24c9-669bc06c909a,3154501387,15077568735847332075
+0cd82403-1ff0-4709-7910-b60eae68519d,879484627,6242798083946395293
+87011b06-db82-f751-f896-db26b9396f4f,2336345200,9163130844531963694
+4c172588-7f38-741d-b729-3696d7fca262,3541834587,15291477027438882549
+f234c659-af39-6bec-cd5c-cc09fd45cbb8,3480005971,12797730001192222512
+154a9521-730c-43b5-d45a-b8ee670c0039,1124250380,1296677463479095202
+d38fdc6f-9541-cf00-ddd8-4de0c08c1830,1344921437,4657463116864015469
+aad1fac4-b68f-3334-91d0-4b45810d446c,3847417613,10885569830106401446
+65a78ce8-cd0b-0ff5-a9a3-e5df72562fbc,684520720,5329900968406966870
+5783d7e6-4e90-c22f-0b8d-1c780e4a288c,15093606,12286033609941823365
+982bad65-ec10-5f1d-d3fd-da223637ead7,3210315598,14223358790126490859
+f532342f-fefb-ea76-2363-d8dafc14eee2,2028093065,10155479458973244287
+de3d2330-c0ed-554c-9ce9-a9dd4ec2e455,1276849104,5137188368422941817
+68434086-8c0c-fb2d-93c3-fe47ff68f29f,1626674959,16780001771523193578
+cdcb6ab7-8f64-a1c5-e5da-2016ed227556,3279169985,10282896552360619575
+0f58da11-df58-9a52-162c-702488ec5d72,1786820622,4346364896681475696
+05b6a668-549a-c037-cba7-dd75883606f1,2747085871,10603910299190787983
+6633f32c-c6db-faaf-c78b-04f81eddb535,2782862215,152036684719020984
+8508b917-3b68-3cf5-2733-0ab166ab3f0d,2832016923,5396219069863851397
+4a9c3f53-977d-8cc5-6bf2-35301064b4cf,38319255,9094946985913352683
+a58240ed-7e4f-07fd-e1ef-56bb2262c356,4112269045,18333252858319614019
+ea9fbd17-8674-f6d2-b145-c497b3d65eb0,2220859524,13934243613551264010
+926fea25-5524-de9c-3126-5246d949cdc4,459023848,269070923349549479
+2523ad7d-916b-482c-e791-7a8ebcdce31f,800826210,14423980546846760811
+0b2cf854-4625-2ad4-ddf0-1ee3eb22b225,3046321735,8135503183725991726
+713ce989-6cfa-441a-123d-90bd6180edbc,3615220866,14357317108414855152
+12e4234e-fc5f-57b3-4c11-8f1849c288a0,2066248340,9158217144532659378
+eb08dd68-fdac-776a-7f3d-9a7c7fac9e31,2603489076,16176592109885789064
+4cce2fba-5c9b-2029-a4c0-08b2f577a901,2820712676,4518028627483805838
+850075c8-0910-b84a-591d-fad0098343a0,2611780312,2863989721056057746
+dd2c715c-868b-46b8-ec44-ad87bce01f5b,4240852337,16115838893349478505
+d4dad218-f0da-b42e-384b-888f55100a9b,2730599010,4654489723489257126
+5c0a3158-4d40-579e-5cf9-65a3603f4a72,1808852877,14130213206022352175
+b757fa76-abcb-e974-0da6-04ef06397dd8,1250271560,10943853425334909409
+5072aa15-831a-bcec-13d6-36af40f6bf1f,296115469,14889054699458422539
+ef056e79-0318-74e3-ce7f-7e6a84e5dbf8,2354573304,16955881671256560182
+a284f317-9d7e-fe11-558d-0aecf18a6b0b,4085507653,17800386495398388199
+59731c59-1208-fd05-81e4-d01a6484c55f,3158676772,9264507092362903098
+e6da17c5-31c3-077d-bdf4-cdd3ef3e7c2a,3287762149,4069726863092959463
+22533cbc-6466-c24c-dd60-5b6214b8651c,1123342476,10863709187074333974
+7a3f26c9-1e83-562e-6d22-497a94815dd5,1193984784,10259998310525942309
+66c31ed4-e6e8-9e3e-225c-97c2321bce27,4107833669,5216808323913118921
+f53a747e-2e8a-69bc-55be-8e71abddf872,1495879029,13607484027583545384
+12f3ef93-ab1a-8c6e-7cd8-296ca520e35f,3850050190,9131688394924877201
+b4de869f-3f20-e2e3-15cf-abe57218677e,3618243001,9610010761766310657
+47b91077-8bf5-665a-3983-d3ead0e568db,347430001,10978353561457301472
+e795c233-b2ca-d4af-40b5-66ccc1d1de49,628140857,1756921103277943266
+ecd12fbf-5ab9-d2fc-eeb8-3a3951fcaa5c,1540561232,5834277917821599445
+dacd83ac-c8cd-1386-ffa9-67f517244aa8,587949034,13671058190991085666
+c9f3dc9a-eba0-cfa5-7342-ae7bc62fbf89,1898158253,5173259125988143128
+0c458fe4-2adc-1678-0bb0-3943c9d34095,1844855770,12931580860868761108
+1400686a-424a-83bf-1b80-ced245fa8e8b,4135093467,10796498971045519379
+f37475cc-3e75-c720-9bcc-f07dcf097bbb,1906728208,492445686157542261
+b21ffb43-fa89-b82a-f8f1-3a656df9754c,2230434946,4622490792087441810
+4839ab13-e0c6-6690-64e0-b31b4264a6bb,2543366859,16041331015121718782
+4420f207-1351-3a61-355b-677e7ce007f3,2991957255,13924793972101789431
+a940609a-e42e-c0ec-97b3-cee3a1cecd01,2659378709,16301048435183776779
+15db7ed4-18cf-c4a9-34e6-9b0549ca11eb,3073268267,11127693003592520290
+0e1fafb9-f194-c383-f798-4ce3740da29d,485962778,4001886529151766462
+a8dfeb66-ef0c-ad99-97b0-3feb76d17375,2538332176,12599213044031077050
+077d41f6-3822-2909-0501-e5496b14159a,736708014,15092522501957545263
+18813105-ec9a-b01f-b096-93e595be2c98,1666189282,12568954804323132242
+8872e27d-a72e-601e-a8f8-e745a217f995,17153363,2577634062718040989
+67d5cdcf-0983-c9c3-4476-c8cbcea720b4,3138386917,16026142119286105852
+367a464c-44a4-a5c0-4c8e-acc231c5a49e,4011944278,3088940084877758164
+b79f592f-c416-7577-b17e-efae8276a44b,733356741,1222889501990436894
+7bec4b14-b851-9989-5376-67f12a0688fa,1249117595,17774424596809462171
+5598603a-3989-c762-1408-4aaf7aba10ac,1205785048,17468868394144180854
+345174d9-c73a-27b6-c6d0-5ff96f9a67d6,2562380655,1605318510606253024
+051c8d0a-c688-d062-72f2-9bd124960b0b,3311905490,1067061399963893231
+d7dd655b-4cc2-867d-0044-d845c450a10f,1649061945,767639991954234768
+4b271390-3d2d-2ba6-948a-a075f9321d51,1004995017,12431793777377692044
+f0cfec36-5c85-145b-37ab-4c8a0ed2fd03,164435927,16192052685415560440
+3ad9af06-fb16-0a27-96ce-c773c671ccca,3657898022,17424179272378790595
+f9a1d9e8-8150-333d-6c20-e5a6e7092db1,3240371982,13924219600465723229
+16f88181-3c37-d6fd-8752-c4b031110e26,968736396,10546662899095706645
+86a686f9-7ff2-9906-9cb5-5a0e24bf1a69,3759276817,6933984006961482611
+4aafcca0-a726-241d-1c53-cfa2486707ee,905578057,8800534942417896503
+b22f5e94-9960-6f2a-ce21-31287595369d,450407428,14999836226981330282
+2a8c57b4-f983-2520-a321-fee69e565584,3351885356,10533112805465826980
+55b6ef90-06be-7446-5dcc-453f4cb86b22,499896475,1821351368978567139
+e06e5122-6fce-012a-6575-d47c0dcf2680,2577208039,5100334500711022398
+25c14a17-2431-4dc8-ed02-6276ca932cd5,1048230075,4800519975487479047
+009ddefe-8edc-8c0b-8a04-46842428da45,1537655057,15059147716219715435
+21c52bbd-568f-ae2f-b5b2-74edaba259a2,1122746823,16457728419069181146
+25015108-518c-8bc0-6f72-ec00678854eb,43327506,3593243157193488784
+7bb5f3d2-2404-b17e-09e3-9914fbd1a8f8,1520536453,1762473954828787335
+3f175684-3738-b341-6fa5-a61ff6138132,836542259,12055057216183321011
+717a9cd5-4215-ae31-5bb4-732bc826cc86,2462783751,2831553697385692135
+713a80b3-ea96-c900-2897-0d1f116755c3,998599237,14789970730013309759
+38d44499-a641-0f76-2b54-4eb91479690c,1493244402,12529916371215790386
+717630e7-41ca-a01a-76c9-154735ed03d8,2972926969,7328915534579142684
+27e1f4cb-c6df-0c8a-15d0-d31fcc4b51f5,424170436,1720097392624330186
+23197cdb-0a29-9759-f101-5f60bd3e8865,2511892227,15525979495351217338
+d74ef72f-ad75-d170-8cf4-52c6f30d508c,1062788015,8907591350127800564
+e833150a-e4e5-99a7-c3e4-4111dcd18d82,3901808198,15741586320542684504
+a85fe3dd-e544-7e96-42ae-9c4c034ca629,2542105716,14636944898904567177
+2340e818-5e3b-5f97-d9af-c3a42f73bf96,1099924338,4172760098930528871
+bd937138-4f04-4f7f-7109-e33ac796823f,770326711,2827871109397145166
+e3653dbd-a224-dcbd-6532-e15b11d7324d,1823004014,342224640414650454
+44e766ed-5123-331f-5349-06d8f925223a,2513610064,5489405802881500125
+0fb77ac9-d799-eb80-b985-04fdb71ce5b5,3829318216,9912059977603700971
+6c3c7ba2-61e6-a970-d3b9-9fcdf6a63994,927910238,15261749967820337660
+621f3c65-8804-67c0-6041-e6d94d3ec6ca,1052306979,7870805809709369605
+01bb58ae-2f35-c7fa-2d95-a2e000fe00d5,2757132001,1290392173917817992
+657a7924-75df-3741-95ac-f15b1f719669,2096863663,2084722890595577871
+8ce8470a-7bcb-fde0-efc0-33bbb4863ed3,2354465678,6111167776248597963
+fdc091ff-707f-c653-4c1f-9c6bc2ac8a8b,893964774,6684796343564280267
+8c86ef86-0356-677e-ce6b-8f885f9eeb31,310343124,16251937843750513119
+4bcdc388-c1d6-cab6-dd7e-316584aa844c,175387916,9771279070660891223
+d7868273-0d15-a69e-798b-87076620c62d,3747500376,13261400956677307880
+c68be657-338a-be1d-d6de-bdeb662ca2f1,478743518,17569256262529308419
+e1992194-08d0-5e71-2b7c-37d9185cecbc,738731604,5369338974270578862
+2ea06f44-79f5-e15b-7157-40e0036c0cf1,1399222018,15690038702222078426
+26df97a4-39d7-ffa4-4d53-101eddd7bd73,3976234447,5412365506272748246
+3774ab71-5686-a566-e940-5fa126d315ba,4143825487,4266368897854438130
+af215bb4-5e2a-0bfc-df3e-90f754206c2f,3574121584,14130710077127966765
+e3bfc99c-2d41-a691-dc26-6a073541d2e7,1980148526,10033045747497893881
+21e694b3-6389-e705-09ab-58e13ea593f8,2061196368,16914180276599144476
+09289ca9-ee7e-732d-8f84-4c05925a8165,3046765880,16884718054421160878
+ab3ad602-73f3-b645-0463-754b776fc54c,3375984516,5136901518011195940
+634457d9-39e1-dcd4-dcfa-3b1cf2158267,563384325,13050741564782232736
+e966a254-b25e-0adc-c40e-4d217d228743,540728323,9371069389714974437
+9c69d074-a008-2ce9-d516-66bf80e8b688,1915135007,9382590615133127896
+946c7353-4e29-edbe-51bd-63a0a56c69f7,124831375,2934711387407650003
+2c517b9f-d12a-00f4-27ae-613e69faafca,4056298663,5130911465911845759
+5482ef3a-78cb-b0aa-c1ea-1a9a3b8f4854,2691439527,16317066799453280190
+6f1f8889-0f2e-dc71-6476-c84ec91eea86,2512652967,9693003378042777968
+1126b0d6-03ce-c834-52fe-bb0b9e5f4fbc,2589349145,12293987335800848574
+05b1ef92-b6b6-2a07-53a0-3cfb7d1df928,4018922984,3227805477651653255
+71d6196c-85a4-9c08-b125-472832bef2bb,3111072821,10706561767852388126
+54190edc-3b7a-479d-0a76-7509d1bfaefc,6600360,3067885356880512361
+95f43dd9-23d8-4e5a-d1eb-15e5afd1b2ef,3240143410,8169061661343219092
+18afa32b-aeb6-4dd9-9854-fe877043ede0,3319224718,14561360142359085406
+c90886f2-e802-33d2-36a1-d46e074fde38,1727772137,336989640534143230
+7e407a3e-2f62-eca0-9e72-1dd14234cc4a,1600853456,15575519831816292973
+9632a558-8989-6530-283d-9b5c32d2fca7,2213957337,6418631969623797097
+410172ee-df45-56c9-0d76-c993ab145e25,928244777,9589356923166224430
+53eb4146-ea83-7305-ecbf-e2fb88677f8d,3537393411,9676351196706054489
+6aeea3e9-8a89-d684-fb9e-65ad2d6081a5,3415814674,6807271172636916005
+1ce300dc-3465-1ad3-9230-e53640f08d55,674419786,6058628288326797839
+3b56967f-e18a-9022-3a79-8fcf013ee53a,517021844,4946453862905853806
+caa0658c-b4d2-5fa1-0a2b-b718308788b6,26655137,11984807823971267878
+7454e9a7-f299-c3b7-da34-a5d827705e73,596334997,7802119744293250835
+31c034f6-8970-fb6e-bdd3-7a4ac73bbbb7,2485158801,2877231890121405709
+147b3ad0-7298-87d2-a93c-a7657091f77f,3163085549,8821138663057401853
+c1be58c9-6d12-9fb7-c5a4-3b9ab48b0734,787173596,13626500853938806435
+c34d894b-2aef-b5b3-810e-e4740869c83c,2817463867,7672318252245924972
+43164294-0193-5d2a-d5ec-ecd576190340,177266751,6113484179788736725
+40fbed07-a31c-c66b-33b0-7f94b6fa943a,878180420,13334964533728566563
+b8626a87-e239-657d-d649-d8b27e59c279,1226874634,15629187149282152265
+ca421c9d-c7c8-0b6c-7daf-4560b126fd77,56189701,284919868771325680
+bd183c64-8b3a-51b5-4a3b-e8c47c62765f,1239966120,12727423929811778650
+aa8f2d38-7d44-8c3b-afe3-5fbd402c96f4,2131004185,8761572133465405903
+ce3f6ad7-12df-c245-e8af-c8cef414def1,3568781419,10509879686924921332
+2012ac24-ae23-99bc-2eae-5af04d85734e,1218857079,7614611868000703373
+ad86e3a6-e592-3635-6cf8-c01c6e095074,1467868908,16268034174743973336
+3de41038-c7a5-66f3-555e-6732ebac81c0,1735297852,9019584512222115782
+8cd017b7-069e-c324-1e62-2ccfa105f3c3,1195440615,1846400274013373250
+9e74f132-8b82-7c4b-c58c-4b74351bf10b,1317846617,15016513732994254083
+fe433398-9181-c7fc-e188-99f93478d116,3222127732,10358763813081831669
+728de402-27d3-68ee-3e31-bb8a9edbf0e7,1270198404,6949890931378683294
+827d758e-bd57-2c96-6c0c-b93850042595,2340990821,17689046126267353261
+768b657b-1af1-4c50-d6b1-e0ba94b656f2,236714031,18044992318365076956
+2d43a91d-90e1-e105-0be6-2d5b18f2c50f,1710416048,16665891681898257864
+320bf359-897b-d712-9b5c-b98ae9d5fdda,670084864,2031630396179678112
+2ddd3abd-cfb9-bfb4-d695-25451bd069a4,2578672717,122100125344157351
+3ece024f-80c9-7f26-18cb-132173bae63d,1663540435,9729113355964319044
+a08331af-a523-89f1-3972-5aa907fbfbd6,1351448188,12169211806652538997
+52fab264-9a26-6162-35d2-934dae704ee0,651721367,12580376696412865417
+27d9df1b-a4bb-76f2-cb8d-4447c130c113,2188890948,15941943837620180244
+ffdce8e5-7994-25fa-ecd2-90a1ce96fa58,786125495,18273376298142479712
+6b2caeff-a749-cb2b-50ad-449e56c373bc,3852121855,13922079173035860677
+a93ff6b0-37ba-63db-033a-ce8486fb029b,572692263,10457476959875855715
+6a27233a-eb58-5123-ac6c-3b53379d107d,318816475,14680155703184385130
+a157397b-96ca-b603-9179-40d891153076,3700930631,8107155897626499353
+03f6ef0f-7aaf-7d3b-ae27-383b788a58f8,3957474823,18138317021085163269
+e60fa987-ab43-adcd-a157-db9f5847253e,203624692,14576745193212271520
+06d967bb-7aea-c9e9-c5f5-6bd83cf9cba0,769102720,14074519171883805884
+8c1e212c-3161-8bda-ccb1-4ff296bf06ec,2094437364,16103786361223280991
+0f61370a-8867-b15a-88a2-6c77735a56d9,2909524521,10513162979117525238
+e0c25341-18ba-932d-be0e-51a3adf2797f,847195904,15234492794117844567
+207255b0-f679-b4d6-1cbe-13dae463aec6,3657094520,1827615683607443717
+378a18a7-d807-f17d-3bb6-fe8b11283d9b,3698708779,1108273944944440277
+3d695154-3be6-1fe1-88d6-66def4cf3176,1044445639,5147274130958694056
+6ba320fa-78ee-1663-046a-ca66249f4d1b,2442499302,17391699755101674757
+204666d8-5b01-c0b0-1bee-14bb627e43bf,3705303790,13917258330161102271
+cc252c04-f5c8-df50-58c3-a0d74974afaf,1679135021,3484249386258065439
+5c83d5eb-49b4-8823-be11-0cd31b719938,926560298,3960776662828849855
+219f0f5e-a395-dc3c-e3b3-a7402c7b3a0e,3829910699,10447747157693505903
+bb98820e-8425-4d05-b701-eea42db9c631,4236979065,9100927652514449340
+b407d44e-3c51-f179-7f7d-1bc6b9fd7834,3993879589,3732617136653889786
+39da3e88-1033-ac43-bec5-3393a279bc11,3417719282,2675555105279593200
+d237fb2f-4409-b668-e757-abff54db66eb,853577503,7341345046420238573
+699226ea-c34e-80e6-623f-9a0b12ae8819,46136860,13388910257993724302
+57f8e30f-bc2c-5e4e-084f-673d4fc94f43,1654848240,18341047780140563049
+447d60c1-2f7c-0a3a-b883-525d0a4a2467,1295259981,12720110278968201148
+334d1149-5bfa-ffaf-19be-020510cea24c,1705303263,10660256783492807772
+b4e5a0a9-d81b-9638-accf-626af46cd422,2646572214,130778818023368010
+d62d40e4-4dde-6812-448e-0453c229325d,454376125,888054152536675176
+cc31af3e-b7a3-7e1b-2ebf-65214eea8eb7,4025456014,17758225459022524550
+2799a40f-651c-517e-0569-b6c6ea502300,1160091209,13692115474097160448
+cbd75457-77b1-ae80-6dc6-932c658e4fea,2477235584,17461252076960275852
+001591ba-db84-e514-18be-f0b7df8276ea,3155173780,8349362361238046096
+3f538f58-9b3b-a880-2871-b5e90e94c4f6,1018840687,16555675127916370139
+b7990b24-8036-40ce-4fea-3fec7c95885c,707221142,3154314166247270338
+81eaa278-1eac-3c74-6487-f1547a37f9dc,1375590088,13757801734227068960
+a88fac73-0a75-5390-fc6e-086a2b227824,2071485402,11066657875787422307
+7536a24a-973f-bc38-7154-e98cbc97d93f,597170869,4127269213581108186
+d0daeb6e-b0f1-9c17-a6f8-fb221eef5e5a,3914907345,12316680512502854494
+15ca0e41-6b83-fa48-015c-c5bdf28a6367,2182403888,15459278140474647720
+10bac026-0a9c-620a-b589-fd7fa452b2c6,952598342,828594475485945690
+40e8f12a-f91d-d6af-ae9d-c585e46a7c32,879881107,5596031155168730835
+5ad80574-f2e7-2622-36d1-a4a8c21df12d,1707952151,8755997787968778960
+2f47f121-c378-9efe-28cf-00bd888dd8be,283867182,1602808479711358389
+3e5f2888-c70b-f477-adb3-faccefa7fca1,2631879911,9393633597369972659
+51c10f47-9c5e-fc79-8c01-77752ad03e0d,1826912159,1733765615184572904
+ab37dcce-6061-1561-bd1f-014e26ec8455,1998012283,5350958410160102587
+0eeb56eb-e595-7a22-9729-994463f77e77,1615725786,4972788185616943260
+5fb7d1e5-5922-3cf7-c449-3d673f785b04,3644141436,13078619223416248487
+a092ad8a-df50-1fb9-45ce-f1213df596b0,279832879,2244586796351237698
+40be81ea-85c3-6db5-3142-a70db5970574,110608539,6660896097352830649
+910d1827-63e8-c442-a9d6-c2a741f72ddd,2035229829,6382089766191182031
+f9facc46-7125-7c2d-0a78-b5f0a8ae8eb0,1707524986,1991197036664629270
+0afe031b-402e-9995-7d44-b47f53a637d2,384646271,12519930769713637340
+97f3aa2b-2e4a-6f34-bc8d-35588fe25373,3051221145,16222127655979430550
+54ea94e8-4d3a-16e0-92a2-c0fea06e940a,2115486919,3475957537350305373
+30118b32-e4a2-35c2-0dcf-8649888ce994,1063383555,15394537486572613972
+02f13c39-2add-2eed-0ccd-6f096281f393,607117,1995012054513424783
+73d6863f-db6a-ccdf-56b3-5d0bb514898a,1975490622,17624581066401881737
+cbb0fd32-431e-d86b-d6da-4af1bb8da769,2901259300,15140716876706917375
+23445c49-fb64-7b09-8442-d86d2f50ee4b,851741886,5321281471283163252
+cf08cda8-c5ff-dec2-86e4-84ad0325ace9,2515358264,16225490135461662365
+e820dde9-5201-7c0e-9644-0c14d2fe5397,2095596216,2721041811752121060
+26683029-1ff8-968d-dcaf-27dac2125987,266695407,212244643599396736
+05ef5d45-3e2b-a046-c0b9-a1a338ef4191,1359066644,7790322893571443327
+c9f65d3f-a374-30a3-700f-ce0c179c2bda,3830033767,2071957431125114180
+04e2c161-f1f0-49da-b639-7255fdda15e3,2332903381,8523039166396632367
+36d47278-8308-23ab-e5ca-c9f17a3171dc,4121768638,10394121383715140716
+f73a6431-a8b9-ff22-5b3b-aca06b1ef1e8,3923057209,2963835991873842503
+59d83349-b38c-b78d-0010-2dac52a3a08f,2427583406,11035005137165412411
+77505a3d-331b-b7b9-7875-c2bf112aed32,956021252,18346009871402718767
+3e6e5ae9-b022-58ac-90c1-a60dcde3d856,1838336917,13182361382773522226
+0e497a8e-b532-afa5-c4cc-bdb50e8fa9ac,175057258,9197206200319856526
+1d3fc93d-0087-ac1f-d65a-c68547c4563e,1450365365,5786946579316902692
+d1ebb57f-d8f3-4aba-3754-9d08ef5af386,2277918943,7074736172158803431
+03f837a8-706d-d8f4-bc63-666aa711fc54,3216380761,12048125414418889369
+b358658d-e9aa-08a4-9427-24b16c4c6469,1152404216,5606735179572029762
+b2e13614-9ba4-2fc5-32ed-d0902092a0d2,657137101,1566442728951786598
+c99d7e73-bf57-6810-0a14-3e2c91f44cb7,665216248,2219431239700507740
+a784dc90-b83a-ee7d-9125-a365330591d0,2344995060,14792826283908259172
+984daf14-8af4-e7ae-9a4f-005e3c2f9831,3942186264,129332058138997468
+4a2336cb-193c-dd4c-f857-eb85f3d35395,434018972,2773471510057071299
+456d544b-edf9-8081-f3cb-a2c14acb570c,1030327836,2031219494913728649
+06ecd123-2848-6087-2ba5-27c63e4cb88d,1291303269,17767411995976497540
+f952d89d-27c2-aed8-211d-057158a73455,3730366224,15879574577619497568
+947adbd0-b29e-3098-83ae-11e2bc6857ff,178246310,1723795604115221057
+742d01bd-d669-d6c4-23fc-3f9abb0ee696,1993158597,12270830362117767800
+f4b31d01-d6de-0417-dde1-4627ee828c05,3244043062,969505935964513303
+4ebafede-565c-7ab7-e52a-47df9e199ff3,3042735528,3850651067865891255
+bf6d2043-9612-4bec-519e-74f552ceba2f,3676696376,5122335349248160867
+9de19076-608c-99a7-230e-c5998d438355,405463348,10265826820332039671
+7b6f85a3-c831-4739-5216-4f1195d4efaf,1038076299,9747462911729118110
+83b2f626-5563-4095-6ddd-e132784647ae,1497416435,4868940509282793886
+5c907e25-1dc8-d426-d0ec-e9dea3f8e3a9,1655765501,17546482102944323493
+bc601f82-0f62-f788-3c5f-a46431aa5278,3710034376,12962332773669227014
+5d419f8d-8289-9069-c318-03b5a46dddab,582491222,12550025190567954975
+02679c4d-470b-7b92-3920-180a38a745ff,388280881,8925688815746468064
+dfd043c1-b93d-282f-f623-4dabf5f9bddd,1765404894,11965958761197635433
+5cb6a88c-fa49-54cf-0a51-bd4cdf5a53e0,1085564627,6192985735672011969
+0218bdd1-18dc-167e-8f49-60d781e4deb7,234676326,8906347391635051802
+07e74ebc-c35c-cb1d-4a13-6916480f10b2,406469767,2176362662118351052
+09ebb9a5-e97d-4a4f-5cde-8030c70920e1,1475098427,15254337202253491755
+ee89cc2e-076a-e728-82f2-722a7d34ddef,3088333892,6217697572315463709
+bdecf2b7-d7df-a182-746f-4968a0da719d,2645234527,1937995672730493337
+dae01767-9204-2020-d04f-6b1027479348,2812828826,12853144406589050485
+01d87ed1-40bb-72ab-d8a8-542b0522c3e5,3299855881,12302890150581564176
+c2c3b08c-55ce-3a27-1ea1-30429b5e761a,1602190180,6199388815800083731
+6a389ab8-b5ff-9396-43ed-68be374ac9a9,2453974973,281599476819100288
+da3db456-49ad-5a85-777b-05322a13c567,1580544010,862692726086551049
+f5d46241-5384-0994-e0db-efa2b9211953,1130308325,6014542714334739348
+ddb62dff-60fb-1801-2a0d-7ed8dc82995d,4104444971,8038458657006663622
+bb929ae2-8e36-cee8-211f-3d2cef49bd95,768993759,11743710412964413374
+a2d1e22c-fec0-4045-adb2-cd2bfdef217b,1710216954,15733620205205377819
+ef6e6da7-bdeb-2ec2-6ad7-11d3833f8bcd,774499041,11413701079531497605
+aaa9ccc6-9418-20f5-5d94-c1c79242706c,1378252693,15471256437412837733
+bbd2b058-e14f-b147-4b62-c5ba1e5f9540,3462014012,2260302350273504753
+0eb4ac21-7b0c-02b3-a38f-19d33099b2e2,1548002693,5825468248441376813
+8fdd34e9-0cd2-e2e2-13b4-f8ba4c497774,2781181894,16080082273767014542
+63525494-f39d-18ac-57c9-f0b9082658f3,120519429,831217681444769287
+a2d357bd-11eb-454a-af7b-600dad7df4ac,361926362,18061202634358375939
+76dcd24d-b419-6116-c07e-494234292867,1784355448,12030333580040385772
+414e75f3-6a77-aef3-35c7-6fa102d1d2ba,4126246316,8167553292562216847
+da9721b0-a65c-4421-6f37-8a7e7a92a33b,2437980513,998948482213891034
+73a21bf3-f3f1-5b67-232e-987a4633f3b6,2203426602,11592062097195718626
+0a50ce76-29b6-95f5-7f9b-e19436e12de1,2170619221,6082548428527632468
+132f33b1-9303-c063-3348-3ff3485a86a8,2062339079,3456398689008672541
+ed890004-806f-33c1-5d99-4fa081a7e295,4138747036,3847921327391693148
+74808808-2e27-9db4-7bec-a5cc7f4b76a0,1282764754,14606424383873104699
+e8eccd73-dba8-9b99-b891-92b3caec1622,646056115,9847371103715447857
+c1198c58-073c-bbec-d172-9c0b2fb5ab1e,3741030170,14689985290794733272
+2aedbb76-42ae-bd8c-deb9-26ed2e6d56bd,3096914950,15765578121069018559
+af0f8dbb-2e7a-02e8-5835-f1fd171bc8a1,128961485,12203142150102394463
+afbbbfcb-c729-9658-f2fc-b8eafdd73de4,3461757556,13696763375829886907
+d24c27e4-2213-b96d-2aa4-30cd60aa377f,4217495786,14859859767745214414
+e0c94907-e8ae-df38-a8fb-9c49617525a1,2253895553,13092123443635824146
+b0c55612-4c64-1dfb-bc9d-3cd67cac4126,3010508325,12879205435801787913
+f32f8ecf-2408-7de3-3f02-bfc60cb96c61,152489879,14064925798992101523
+594f9132-e202-f89a-7b62-92bfb1376564,2826467293,4841983683425920098
+7f3fb834-5a7b-d5b8-e658-72c8f3c77216,2916953570,15134353064979295237
+14d0f1b8-d964-63ae-ef25-e32e2155469b,1894602573,6028808847620493438
+b5f03039-1700-1c78-8ce2-b0340a8074f3,1468212403,17287670077257629432
+e1e62ff3-0976-1009-3413-14fe2641e5d6,2968813807,12312789056453312859
+d85abdd1-4ea2-4bbe-0399-6516ddb93ebb,3949369103,672324602445997976
+ca7c890e-36eb-3aca-9e97-e3b05eb49da0,104177943,6932634337239898348
+7f1ea752-2b12-46bb-b5b2-a3d13e64d976,1392150686,16726045155815299157
+271f9481-e472-0c06-7b98-ca7c85ac71a6,1897289508,1929835904153762461
+4967f925-cceb-8287-0d70-cdd332f68c71,4263849195,16409978344691556391
+b0ddb93a-91b2-cb89-7b45-9c435e801e59,165343948,1140808300335801207
+a667cbd6-4cf9-f411-ae23-4502e9d74806,513278599,17785144380501242771
+e144debc-b687-68af-33b2-deaf3d5d685e,3985641303,16668373264938598531
+91573d7f-473d-0c43-93e5-94d0f2063472,2290942194,1037597914578732230
+9a5620e6-310c-5e6c-f5e8-83c286d9e6a8,3860694631,3730681875233281055
+e8293db9-8ca7-3908-5c7b-df861e25c021,415669205,4757484243821385880
+5dfc2de0-88fa-d742-53a9-17e4e713eec8,1343344278,1041931812693037366
+54289d72-56dc-f4e9-4a0b-72fb84bef86b,3439184301,18107104402938549593
+81f83f0e-3dbb-bd94-fe68-677d2974d552,1245245808,1745701246407033023
+15492df4-a070-6b43-8141-b479bfdb7b7f,90935733,6333372830984336836
+0b0ea94d-b5c5-bb3a-ffbb-24c6d2f24a1d,1224191982,7355312642050435014
+954a6479-4b9c-91cd-117a-b228dfbf4f7d,746215800,10233969440153513240
+a4475c6a-c96a-be16-b130-dc130dd850d5,2304138813,13497305480797626106
+ca29b285-505e-8e2f-04f3-9120ba4d8633,3998993438,18296988620698041150
+4d11f60e-8bdb-2eba-aebf-cb19067b18e1,329757367,17141572012523456257
+fbded5cd-4d7e-00d0-89c0-cfcaeb9e2574,1855271877,9207459341324368241
+632b7d12-ed35-dd03-0d38-0d60eb13207a,431465187,5886197813093540548
+fad1fe70-5422-a670-cef1-f16fd389c6f2,1854686320,4034198228673267354
+87010417-c468-9db6-32ba-06bcd0a8d05a,1843189100,13118284619624383088
+9ecbc2c2-f3af-6001-f9df-924ac9f982ac,1773927859,17020522743424548552
+377914f4-bee4-01a6-97eb-1b3fc9c0752b,2166313507,6711191340080072703
+9b267747-7e5c-1728-b6ba-eb2f80ee5695,2672093266,12447336454527356888
+8544fbed-1e87-0814-56f5-8ac655c75a58,718038132,4815649434169234510
+6bdf618c-ae02-b196-c56a-f9d247314357,1579996742,12402487228832072831
+98ce0b83-556b-86c0-6012-aa953abd09ec,516090124,10368768607855438425
+462e071e-c2a8-068b-5363-7e29e7c44832,2798400964,12776254226622876853
+dd86c1a9-7de6-d0fd-6b84-78fe17d98d3d,3082741811,2131061886933221033
+d448bd18-9e60-30d6-e82a-08b354a94e9c,127894991,8395291276354141367
+bcc94e63-9280-d423-8543-de943f53421c,1039350304,4964211529633050657
+8c4ed290-3ab9-ed32-f3ff-cfd0c0120424,635935751,728025364681480852
+e1ddf9de-9407-fb8a-fb4f-117738070a78,2778485227,5904061689293885446
+6601d8f6-2ce3-4770-a6f6-296ae00a6604,261820530,16703191914101066909
+5dcc18e7-9c7a-2b4f-484b-d7d330209656,1143025528,5802693980629381454
+ec0da49d-b6f4-4ff8-ad68-1d32f3751466,3299507071,3359532549379579970
+381ce08d-d259-9ee5-93d8-2d16665c3afd,1052256834,14125627193271393766
+3d72a0f6-e8ba-d457-6f4a-5be2a9ccba81,2180173335,1414790126345996658
+2c0f8c49-c49e-3ee7-3896-3bc44f04e682,4241428752,244192805090033772
+c82cf5e3-45dd-2c2c-d741-05b4d6ffaec8,2918999238,3121176488095099550
+5929073f-5ed1-6980-161d-645cb323c31f,445180501,4111987029395746480
+079af377-c65f-710e-b640-893a180bde61,2945572455,2829804016750036237
+5be78d09-4428-58c6-e1e4-a03c5159290c,3571897469,5515993917709584478
+38ddd0f0-7d1c-9d2c-0235-946130474e47,111506184,6694662432086020511
+c1bc6188-a06a-a1fa-f2d8-b7e327e70b06,3597288915,13819292552861224792
+f623f625-c1c1-6939-19cb-6feecd80b3ae,1687300489,15576529186723776448
+e501bc35-03e0-7202-0d75-6c6633cdf801,2665535104,16328656773849487210
+49a8190b-3577-af59-805a-e4f7980d33cd,2219274544,11583697886848769770
+d2ff14a8-21b8-2d51-1556-a94061cba6f1,721434366,6249931923320782492
+7e82f522-acd7-813c-e325-8289103b242d,3770095078,2624671673709565721
+e87d233b-9f0b-8d5c-bf1f-fd24ede0c89d,912602328,12056930610820168012
+93758a24-aaf9-0e9d-281f-0db557bccec9,902579161,5714220005200936950
+6e4d3630-755a-c55a-9050-fffaeef735d5,2186634162,16554298333534770432
+be7d244c-142f-5e71-633b-645241ae3c1a,413670056,2324938777657599185
+9d3afc8b-64be-6017-a0ba-ad18c6bbc10c,3180064836,17857100826208427292
+0766c0a9-8b55-232b-4679-b9e8c3bfd832,1583848516,9953201983960039936
+dbae8eb9-8c55-ee5f-4dfc-0cd4ab3bb9fa,231391059,9437092430121164765
+79c2b731-a44a-028d-def7-da2f85cca593,4046561499,635743213034570324
+e1ec6ac0-c86a-b16d-c955-c5b0bbbc57a4,2304708314,9282631918792086671
+ba60a312-23c7-9384-51b4-2bf827e83efe,1463092938,971027998449966203
+8df6d625-5f31-78cc-b5f3-d14f173ffd02,2795108666,17852692108337406305
+270643d7-4486-60ec-b19a-5419ab1bac0b,359564669,15175639968468425380
+f311b934-4d38-1c6c-5f7f-41075bc4e187,3134345353,18324339323344136334
+0da9e047-6b6e-02bb-813f-705474e2ac27,1249308385,4718481782271437828
+d319f6eb-39fb-7db2-152b-aa15ee477bce,2324515999,8750146670221096550
+e4e0fcfa-63e6-10c5-c216-227faf8d92a3,2153487605,3316974078142349446
+1aeac1de-f25e-3e60-d353-1b5836f4023b,4070941754,4888844403475600790
+3eb7cdf6-dbb7-286c-edf1-4eb2324c8040,982466620,12998621037043165872
+9dfad5e2-6308-90af-4612-600c3c0a8877,523603886,9746356307545221585
+bc4716cc-944b-7f19-8ac7-f10690d8df7e,358900457,16941520187160572810
+fdc813e3-a896-336c-7569-a27ee35495d7,1241378817,6965306125467088726
+1c21e798-1f2d-f574-dc14-42afe1ce4c94,3482523761,698722532217567874
+248bc887-1839-8ae7-73d2-7de6e393fdbe,1103330734,1084987843463530907
+f28425c9-74cb-edc8-d452-d7e88cd48b04,2964667124,13877988186426510836
+05cb3c5f-81f3-fd31-8b37-4da0a8e4ddaa,693740213,17958462945652709766
+edef2591-8aa0-ac84-a04c-a38941637166,3254732333,6772797706935503310
+475d3efe-a5fb-126d-57bf-a10f94009b0f,656883390,11366274253645152933
+ad977aef-3c11-47d8-9f53-790e0cb94df8,4016050670,5476581461291657999
+85585b8c-0bc9-cafd-6f4e-844609f6cbeb,357594364,1279761423259144952
+fa0c94dd-a708-290c-bd9b-2b3a8998c625,2841792427,14572532443862571922
+1829e11a-cef3-e206-709e-597bf9b4e26b,3425441368,2636156595864066222
+cc95663e-acc2-6800-44d2-e092c6b2eae4,3800362125,1955762956594487190
+fd05f837-d7fa-0c81-61fa-efb54c7e2d17,2637263042,13161708414900112286
+73205a97-bbbe-2753-3b86-e7870490ae37,3170841675,10440097273377807730
+a51393b2-49bb-e789-7041-44a8b29f4cb0,295350713,17958885680559764816
+584a276a-083b-6a02-1696-cd2a593ee0a0,3333697218,6238139336739916861
+c04afc74-17e1-886c-1ba2-90a0c07d6a12,2848969807,14355138059595494503
+b687b951-0201-ee8b-9ebe-5cd044351c05,890042485,16538343547777618839
+9c17071a-1b45-3d5e-c90a-e71813a80a9b,2775548457,7177029755581217596
+7de365ca-54c6-eb90-6019-3a4a020419f0,4089362145,17859509528093194734
+106effb5-4f44-2b30-134f-a670e9f84f28,1597014162,9083468517399520276
+10e1a26c-98f2-ebe4-c7b0-dbd0de10ba63,3934100402,17516849394971929281
+4b1313c7-d047-06ce-20ff-cd3800f439dc,2894940279,1162397719659001008
+3c3bd364-5c1a-35ab-6b8c-978d3bf35427,4010250619,8625826760605938360
+f9876927-5a8b-16a1-3624-1f343611a536,3268184930,6985849364060312384
+8b774609-2094-e358-3536-a0217f9efed4,1603882096,6792419928551702827
+9da14679-1504-fced-6708-b0708c9b73e1,2551354851,3801481834685614869
+982726f0-b803-8e88-2982-a1825f4c698e,4076767843,10679870585654760893
+27ac5edd-cdde-f734-08ec-d7428ae04854,3252162503,10173313291408777609
+2efe0a00-3964-176f-e274-f76ce4362a77,2534671673,6516669903824453301
+4e1cf1da-285e-d23d-59aa-414531dd1448,2157413095,15848819074430121626
+9e615321-1ef6-cae1-79be-0ec4fff4580e,888949943,11235274399712977101
+1d139171-567f-642c-485b-ad2a66a24071,3983042431,12960954281612241846
+cc64c6af-4b9f-757e-961f-4b94dcb7e8a7,3418800927,10571432411724796757
+39322805-b719-49a9-b52e-28a6fbfb648e,850822834,9711504104642366810
+a53cfbee-24c1-c024-128f-38340070f7d7,311845306,1746410732871555088
+5a2d0cf9-99ef-515a-9195-09a9697de8ec,1379159727,4570581507134066043
+7178e978-f062-3391-700f-ebb1c4c58a49,3797452308,5157411402984110555
+60400359-0e60-7dab-61a5-496c67201e74,4051929282,14231384027291194783
+644c20de-9c8e-95b1-ad13-4da6baa5fc0a,4089651260,15159370306053264050
+7b3ab0ee-3114-7340-e5cb-c6b829fe836f,4133599579,13275249332755652420
+035dec93-f037-2b9f-cdc9-54313ba6ce4f,817841398,6353755282005801037
+85698167-d006-6065-c63d-13a3751b29f8,3343086713,3037259703818740072
+1f72b3d0-ecd0-1ae4-74a9-26d76b28d06d,360859852,12497085067859889904
+6ddea2bf-b7ef-8591-92d7-54e099f95c5a,2821077643,9260749842383723462
+47d2a9b6-bc75-39ff-f314-644afb44366d,2282128308,15415740058527427192
+df2565a9-397e-5eb8-8bbb-c19c03aaa273,3631572957,7689908520374939338
+d96afcb6-32cf-1c23-aaa9-fc94519939bf,4010768635,12785129397457491975
+1f3aea07-9df9-5d68-165d-cbd4c7c0b019,881502395,8620469295210550684
+c8e66d7e-dac4-79a7-10df-f8d74a992db7,4018725682,230222462736129991
+faf77abe-a1f8-fda9-9cbe-f4514d4cda3b,904845517,6256212821980216222
+1fe826f9-dfb3-d3cd-9eb3-9441514a8ba9,2291992425,16681741988206043689
+de9dd54f-b6b7-6cf0-c63e-67de0ac697e3,1929216402,13202173406895725622
+103105b5-cac9-b1f3-50fd-0175997ebb79,534694435,4830504164517816895
+19edc2d4-abca-7acd-84c0-907fcf259835,3168451762,17655925804397680863
+9b6f3507-45c5-9e64-7ce6-9fae2f4d6c14,3293228180,13609579674519584308
+7d61923f-f945-f4b2-234c-3aadf8fb0d5a,330461339,2361511426352117731
+27ec1e0c-85cd-b48f-7717-799275734f2e,941554052,9605873055894383814
+faf5c278-f490-67d9-6115-1845b07a7342,3763446215,2622557540982068536
+b1b33219-986e-30c8-9b5b-a8a18c7a3a20,3310396270,10778900870625037374
+e54acf13-7c78-56ed-b6cd-4d3f0124b94f,3102277759,16804502537573533513
+67428818-14b6-bd41-a6dc-35dfa3c5ea54,78241055,13316658308246160546
+ba968bb1-99c2-7c6e-ec5a-50b72603af5a,3025722840,6660243740843150850
+247090c0-6374-cc02-67ff-ac37a1e2e909,3040263489,6243784352272732652
+2d448090-97cc-1265-8b91-c19d8660fcb8,3768406923,1514797109227275752
+249fb733-f4ca-8d49-d852-36c76dad1cbe,2300645281,9772236006776593101
+181a8a47-8b63-15c1-ec8c-fc2cd8064323,1469847369,6157044967825849419
+1613d8f1-0fc7-bf9a-0c46-2291677e1dfd,2331406574,4647300167839311218
+bb6ca4c4-1739-f60b-fff5-931b741d721b,1969151489,6426100699701354938
+08d0628d-a7f6-634c-9556-e3fd4f26fd23,1281251880,15273316805263014978
+239e8bd9-c864-8998-3d4c-d1787b7755c7,1313793781,11332927681865951946
+d87f9450-cec5-473b-5bc0-f8cf3fa32482,3452416136,18063300388258324154
+8fa4677f-90af-806c-ac83-11d7a8f9de62,157755027,5364674244296287614
+99aa50b6-45f4-7cb5-88aa-d9de55804090,1502797316,17124607262123592754
+388fdce5-69a5-cb29-fc74-4007a85ccf1b,4146395897,17047313427322165576
+3265ba04-9a92-6c31-f85f-1d00c8943e5a,3997616607,6852990575529582924
+87ad3c67-6947-4ff6-ea69-7a057516ee6b,3090759106,9514281751419358559
+56ffea41-d885-a0bd-df8a-fe1e28057bf2,12076901,9363188242915144410
+8ec9931b-613f-00da-89fe-6d00d881ac90,703740539,18095201850140633423
+055f325d-2f7d-3d18-25b8-d7badcd96e8e,2714838461,6205844842222383442
+74764e5a-f363-981a-b9b3-9b5723e10d83,2369899741,10566401178411492421
+79f6cee4-072a-c931-7d91-74caeb7157f2,2940289845,11197072249671123134
+ebf98376-934f-76e6-b5ad-4e2653ca5d7f,2822271458,12858393936430256329
+d8838662-8119-a05a-dab4-f6468cf4fe79,4245254892,219182603931765385
+17d5ff3b-938e-dc26-76a1-e6fa6e6432ac,68699675,3868292557837838575
+51b0cc1c-727d-7a03-c62f-fd334dbefbb2,3635420512,13578487579040719907
+bee6dd0f-3392-4fe7-b26f-20412298928f,3379540476,16256511370235258261
+6d497f22-efbc-3963-ce7d-23a3e501e1f5,1774154187,16979460715011572461
+be473e84-b042-ad17-5bed-e1109299e058,3073533473,11914862289181251434
+313f4e0b-aab3-ece9-da27-30969fc281ac,2695287417,11249877038299561426
+80436924-324e-054b-9be5-4c357bf65124,3684455034,5188050606648297316
+c4e6e569-e87f-f769-0835-8949321fe6a8,2017873972,3523151844833643506
+40031fbc-ca16-392c-3b73-138c5e3f2702,1217596767,17096952779426706418
+75ab3cf8-2401-8de1-0c04-1dc380a2d83a,1956024978,6845808573949164789
+913dae3a-baac-f815-cc74-519cbd946aa0,4276634979,4255595730649849190
+e83d7c23-9303-ea9c-dcfa-46c8480d2b8d,632198622,3816966841504363061
+3c80249d-eb98-7074-3291-12c89f3e7b84,490816872,7020274105561604099
+0011504f-127a-aae5-04da-467d8cf519fc,3214205652,10300973772936511835
+638f6ead-7ded-7c10-5efa-2685174009e5,47949,5072232514919521599
+bb7c36d4-f3e5-2890-81fe-eae234417bf8,120697430,693841588960068369
+dae4e20f-b583-5b7e-007d-0d58c3be427e,3703837747,5696935600194801025
+d63764a4-2705-64f6-7132-2a244a618222,3771330543,654801604306349507
+3f8732f1-6a20-f265-a8e7-f6baa3ce2955,293135128,4894364285545572516
+9c6665a9-37bf-b986-6b2f-d2d957aaaf0b,1483077039,10061040878498353200
+d1357a14-a013-cd14-d42d-de0a32b78fa4,2613464850,14946368493006816480
+fb3f20d9-cd7b-c6c3-8b65-4f2a2659dcaf,1492206873,2234395762904808583
+b041f1e6-a10f-6e86-3c0e-b39b44febce6,3164803630,9553527814463691061
+d5c3e17a-340a-6fef-9521-314fc6f4121e,3061749263,10965908412760689814
+7a8d9a6b-94c0-bf53-93d5-d92c77bc0bf2,130881464,16294181055276460353
+c584b7ad-8a40-fa14-1eb7-b9717f778d03,3196971644,16724546229383676594
+6ec84aa5-d819-49c8-1011-f47dcf339fdb,172689188,1560687414030346824
+0b866e5f-c5a8-fb1c-dccd-38c268d38b8e,1818009909,15185252875231607601
+4fef5636-14c8-9346-1aa0-a24a8ad0d416,2665216777,17694860091804150018
+b8a1617b-8a25-fd89-b79c-6df601040c06,2368948810,8036052308543607503
+332d53be-6f7d-acf6-c95f-a0a4673af37d,2250897900,11801028178380626834
+9741f8ef-4bae-9470-09a4-0cd727a27757,844612201,9220987873930055219
+aff9fcaf-8240-bdc6-1e98-9c099d2afcdd,1905343265,7916909781063646017
+bfbb9511-3e1a-6837-7777-e972798ac5fb,2039656616,2524488452867636413
+b961d7af-c141-8f94-29d8-bd61ce2d7c60,1201543391,14795693787543530057
+5ba4c665-5d23-da65-57d5-f4547811ca52,1313146594,12155912154627605057
+5c72e4bf-a349-f6f4-6481-6ed74bd342ad,4189164719,11622557254900496918
+ee8a389d-dea4-fbe2-af6f-94cbca6729bc,1877019219,16902159527400545962
+3b3860ab-ec2e-f50a-5bc1-a784b786f194,1415955515,7364210364296112515
+effe478f-668d-c376-e1a5-d7f6eee84e2e,813614324,942144014904336232
+19f137ae-ce8f-c627-ebfb-7dbd1b0466f4,2987909829,3957103452896230413
+a90f1f5e-abed-75fb-0090-2561cfeb6011,622965039,14062733919597669309
+c367229b-ab53-6b66-b11f-a888f069e630,1189590981,6753688071055028279
+7a62b0fe-6938-42d5-a4b5-5e6c52987136,2138140568,6889816128284882562
+e6c60c6c-2b84-e823-4f5f-bec583f4ade7,1174478169,12251026452950650285
+91a9b164-e242-90d4-75af-b279b03a42e1,2258600600,6439824307736453660
+b9303c83-fbd1-2328-e407-b105965f4e67,2262316828,10226600797670553682
+1ce64da6-5e0e-8cfe-30cc-9d1132344828,2024931995,17978059179608880349
+780118b7-6591-18e6-bbbd-4d410bf1238b,609142472,14300499616256861359
+d4007613-b7dc-38cd-d27d-7d7adee3382f,3295964918,3294345547546484312
+31f90efc-29a8-a7f0-6ea5-062634d11a0e,3881506177,1878572397670974259
+9dee59a8-49aa-f59c-d20a-65d7121639f6,1904283800,10558886537135382901
+18396e68-1f40-ad1d-2fb7-01cb38e2a780,599932467,8411221396395437851
+812ae97e-02e4-ffdd-bbb9-736bbc82cc2b,3484832800,7983538751595034865
+88b5b985-1baf-3c96-8f7e-965eda02d6f4,1854883849,5680182866476831156
+e21de7dd-375d-def3-827e-5bd8ce1d3244,2255173927,309551045272183617
+ec169d2a-0163-cdc9-0d86-6970a728b0af,407893519,17737766154357429902
+9972e3c1-6021-af78-04f8-ccb1a155ea01,2187240922,713601315467361482
+ba8b770b-c156-c628-012c-c0672a886230,2321706285,3288353690861061967
+5c99015e-1d80-920e-d121-40aecd2319e0,1120054299,2071825337901405950
+769e54bf-6e1a-e3b4-08f0-f1236dfdb601,1975079244,11756800946642293200
+1b1667a0-ead2-1e13-051d-c0cd7458efee,1717458046,4440824444945418534
+e7b3a965-e72a-e4e7-fad0-f48f06b615ec,534344136,558498103854777068
+05c12434-2b9f-f4a2-a25f-2ffa0e506f63,678832235,12342030186473799636
+0ab11e08-be4d-d4d2-1412-8d5019645a2c,3964370886,13224185532020563437
+3011ba9f-50d2-947e-1900-f001919dd50c,2168934920,9677163168028292222
+ec1c583a-d8d3-b274-d686-51c5c3b81ef3,3946090136,15020136496480811525
+6ed25068-cbf2-9a20-0000-01720e99dd87,4219663674,10222813079229441268
+76194fa0-e516-806f-3a5a-c52e57c5b21b,1195111033,6641642543221371788
+a147c351-e1d6-6af1-0de8-b7a4e6b83300,3639144275,1240578653268352396
+4b29e3c7-2daa-0828-2ef8-ccaa441ca5d4,1542963906,3343287140310834706
+b8705020-b555-149a-099a-bf999d8c951e,2519748387,10619623303219073045
+19d1618c-c3a5-6391-e1d0-8580c7d76c43,1794796017,15574418099302433953
+556cd6a1-9517-a91a-8879-06f236fea41f,3364858223,9929923484205653108
+97c84699-7d75-77d2-b03a-1521b4fa2be2,535587944,16058039450925148297
+6af4ca5b-270a-a5c9-fcc7-6d1f3044f896,2998051916,15324796461431193342
+ef3e179c-13a8-943c-5e14-14784c172bba,2717274805,8311943083288480978
+32590864-53b7-15d7-fc2a-7bfa19fc9f7b,3802302739,4117509126623940465
+f558b765-b091-83b6-c358-4eacd310e915,1638766513,4367150177564772536
+6c04bd42-7f09-1628-79eb-99184528dcde,1995098650,10131158460990051373
+dc5a424e-4181-c397-0d0c-f18805dbc7df,3968825976,1235027026656131686
+fe3e1809-9c95-6e40-8e49-551fbba8560b,2778140333,8703443938555135030
+8d427ddc-1904-f107-eaf9-cd69336e4e1e,3129391763,6578556005426743842
+31239e10-f969-822a-aa43-1f447cd1db06,2512240971,2650167292522989468
+dd2c16dd-6788-597f-1422-ec1d37f36b93,1753501071,3130212159542797587
+b11b908f-66b1-3bbe-acd3-f4ba32dbe9f4,3590892961,6339475852457063476
+966db1b3-5ca4-f9e7-a606-c3afda4f43b1,1917524226,6714077508947914718
+976ca574-521c-8c55-cabf-b1eeed7830d8,2161437616,11295585077520943892
+c33984cd-3c36-02f2-31db-0e21f24908ab,1045887843,4778885793092757395
+baefcc17-3386-52d8-721c-76d7564db01d,2163865412,5899448121030286010
+e9b5ca8f-bd25-1c4a-7588-a68b06fca299,2302795080,6018791408245213612
+01e4ecad-d697-fefb-a675-0d8064b67ea6,3187285544,3665545092595784677
+c00d6691-6f47-eb71-edcf-577596730a25,892215821,10098558088388573799
+0dc5aaf1-a834-ba7c-4f0d-5b78fa6a9daa,3642736467,14705593836382568713
+1286e3cb-df67-8947-19d1-963bfab7046d,2630777326,1379475982377307087
+5fe6c9bf-6127-a74c-f2d2-6d6bfb05d85c,3820978868,6893143707822933406
+f02cc584-e130-d6bf-6575-fa817250cf23,1126667552,16005526643337191444
+4ce85257-e284-e0af-b2fb-ccb181d27a70,476426299,2691378631175181167
+157d17c6-17a9-0fc5-f82f-4c60a90f575f,2481171538,9933608266829939352
+f761ae90-206b-5859-032a-ded21f8fc594,361959009,1978854661575073053
+da1025b1-86fc-68a7-bc30-6bccbe635880,2470754877,4810258805307789393
+a5267759-5895-3f6e-a10e-ae7792ebe063,4255110419,9823553307135697226
+4c03a695-2c8c-ea1d-a782-4099d66edeb4,1639787130,1777707013753293261
+1f2b9407-5b6c-1a64-f036-b1da0cec13ac,729647763,11306090804602806627
+3d7a6780-ed02-97f6-7f6d-1a111e48567b,3329645377,16930779564343732477
+ed11fc12-8732-ff3e-1dee-7a527915c88c,341999975,88041392971206248
+a7fd1b8c-71f6-71d3-4f49-fec0b291fdc0,60210921,17788356376740968085
+461d5b11-1bf7-12d3-31c0-a71ec752d545,1268333149,3788083437311460518
+4d7ce6a6-fdd4-f105-93bc-6ab373d40665,544324494,10144379184547419078
+b0c35d39-5d15-d29a-2b44-ad2b90a53e9b,2236744202,903654201186052945
+9ab573e2-6ba8-1ce1-4df8-101765398f51,547090962,1209624911349368571
+397f8cd6-d03b-3eb5-185e-6cc0dddabd46,2353246215,759346450751068797
+9205a33f-7e1e-ed7c-24b6-04bab6bcb96c,1947042246,14325480635862099270
+71ed8601-1acd-080a-0bca-f3cb6f913038,3665389213,18083836225080190156
+07ac5ed5-8826-f090-5ba7-8a0f4149ada2,2719501255,14769377665730098144
+822eb320-2639-29a8-91b6-dfca6297eaf1,1484658779,14917263602729679119
+1e776d34-9e56-65c4-af89-179df8353363,3045334334,17204479029771271228
+25dec16f-7dc2-f269-8b6a-5c11812a3bf4,1995542653,1693121969909552854
+05e51589-3fde-c29b-4a3e-4cd13f0710d4,3014171801,11721829839728965452
+4efe3368-011d-8b1d-2004-deb2865f0dcb,2474380938,14226589113435000544
+88c461d7-13a2-30af-7b6a-50f3e1877502,2945509185,14241125112104570111
+d85ecfc0-4804-9782-8959-09f562573a98,2912506510,13837555734838425657
+1b990eea-da85-99bd-9087-cee7f6a74fcd,1345442420,998362348860419088
+25c88d10-b976-ffe8-b9bb-389cefa7926a,2183233277,11173763754378520819
+9e322fe0-c00c-cf0f-a6ff-798c9d8510a7,4124189633,5510761413009495818
+f7aee4fd-4bb2-e49a-46c1-81d76a719c6e,2558854465,193917332759630477
+2b8954eb-d131-0f76-b705-ebff59673512,2815171838,14078093269799053970
+7edac55a-6c4d-9526-f5f4-c9c73d1931be,2729384542,10885100972604765397
+d376aa2a-fb31-42fb-8ca1-9ae4783e44de,73590263,6794038647901428434
+16394f46-9c3a-af55-5b9b-123488ffc891,167527076,7132384592587056686
+6ae960ea-f63b-685b-e3c6-10837de43ceb,1729535951,246789252471828924
+9a8c5cb9-8e26-706b-84f2-6b8b7fd6c9dc,1424494298,16691539127043006688
+85987093-d705-6ad0-61bd-69216823d449,2844056269,12211159913114175338
+6de94e3f-27fc-78f7-fade-812e3a541210,3837336580,11461908035734403781
+ab4e391b-4397-f51d-8892-d35ec446199a,178532964,17210430893767502980
+9cd64664-4e04-251b-5a3a-82e13e7d32ba,2872332353,16979880478975141940
+93748061-e286-f03f-c217-adf31f058769,1962722289,39553892731842702
+7a8ce15c-e241-9d64-17f5-21ec46f32afa,1438575184,17681665874046967861
+879b3d03-8b69-de7d-f59a-5a5f9bc065c2,359385984,2722686686744840322
+f0749de3-c5ac-365d-c54c-b5ccf1465b78,1327722109,14464908809842220937
+14fe0aa8-ffb2-bf50-f245-3222acb4b338,881298478,6867213307272123420
+099758fb-5889-b779-caf4-a08a3f543ec2,3201980532,15829948250201985562
+b80084c9-02ec-9eb3-b9b4-d8f521c3e299,19061419,3708686073280902055
+9c32f64d-8bb6-e11e-ed30-22ebd4868f29,1168656104,12511009103671593948
+f0c08025-c594-2850-20b4-c6c657912064,716844643,6322865628661583336
+69de2708-4606-fb2d-e5db-a5a6fb859be1,258064681,6799058993858068107
+f72a5d31-eff1-9c04-8884-d27a49839b19,1030821501,4004530465914646378
+ab45760a-996a-4afe-f761-d71aff6dd944,2710281283,11550725134630952408
+e93777e0-c57e-a5e0-9e9f-4ff65aa873f8,2883730028,1833764429791011196
+13d04fb3-0371-d92c-c095-f529cf9b443d,3538892795,16344686003499829221
+19c2b7bc-1d0a-00a1-b842-a11c35e05b7a,334653820,8478384798253083861
+329b017e-8bd2-7d31-5267-ec6fc9e0b6d7,3070440813,5619053567322347266
+f0abe384-34b4-ab40-e160-ca1d7773b68f,2084302207,6492615834716400387
+3602c4ff-b0b6-5d99-10d8-d0cc85275877,2399951040,17243102169279995907
+ab53c260-a28c-c96a-8e2b-e6dac6b3bf06,1326409953,4753246489875279106
+5f4a1048-1b00-b3b2-714f-ef32e755af2c,415339885,10698240609482465354
+f1355bf2-915c-a3c9-485a-dbade2b78f5e,1588250386,14572758418851007406
+dcb1d6f4-9618-3bce-b8e4-1c17afa93394,1208576215,11518060684605612826
+a46d8b35-e1a1-e32c-3e7d-23fc6aee02e1,3940641565,2012579783344527516
+c15b1b83-186f-3666-a1c9-0512fa648b21,2565901015,5559934851812217888
+24796274-387c-afa4-b16e-7ae07a1d24e5,3147351837,12781072498933718184
+637d6531-b765-e76a-9dd0-402850e1cb6e,627097335,5992817573208359045
+3640bdab-a215-2f31-2bdf-c7eb7e5bf39e,1741113397,8376913303067870121
+33974362-4016-893a-cf09-06df7562bfc7,556173995,2725871011040662648
+c6787b38-8126-d419-1e8b-9c706766871d,3194870547,12206124312174090425
+152522cc-8fd7-8837-a7d6-072a8c6f93af,3013686798,12703747770971668731
+a3d52739-3b62-eec3-6827-748974a76c7d,2783278567,16580583143607741820
+1d486578-7a36-e60d-e9c8-f2c1f15d4bca,4048495792,5754853310140666693
+388088e2-40c7-5b27-dea1-331ac32a454f,2542192066,147561929316916391
+0963b15d-864b-e1b3-47c6-dcff66b6f078,1241198723,10296943447824155646
+6680c4bd-171c-19a4-421f-4fc69fc8914d,1285624982,7378733842301030754
+c9d4455d-435c-74f3-a0b8-b2857813969a,2801660107,7000745656097153997
+4dbc5b24-1b3a-4417-b80e-6d771238e67c,3124910193,847631343342730857
+64b9e55f-e71c-c87f-14a1-08b4dcc0d869,1906951652,6526180867867306921
+c0cb0b3f-bc50-3936-5f21-5f2aa8d3bccb,3677417362,7475510816616842252
+d247d6d0-5fc0-1dbb-d7f2-6e085d9f68e4,3474648534,11131941493934780109
+737c2d64-8aef-9126-d047-6e7e47619647,4209904392,4070044265130482276
+1330a5db-4e83-d977-245a-29abcb0faf0e,2241723694,9488704560913630828
+6b8f02ca-d978-94e5-7f74-e3004ba40bef,3586872236,9071278165623595406
+6fc8c084-ea0e-e0f4-35f3-d6ddfd216d8f,2647877203,9686924043754269075
+54bea6a9-8400-25a6-6d48-482464103286,923990293,14520382466210768077
+6fe895f0-e499-4cf5-10d2-cc965f862f54,4017343723,10444894834563033862
+2c7cef7a-1629-0259-4a97-33622ca6b414,2303314250,9874512310592076242
+e87906c7-d747-8001-710a-7ab59e3f1fc4,27638648,16019741070536141931
+a10bcc79-3521-436c-4c5c-3694583a5830,2589733807,7415213527291577106
+8fef63f9-ea3d-a021-5e9c-5435e1978c94,2047178649,12126074158149637992
+4ece4689-f025-86a3-8870-1cc8dab61dd2,3421307177,7858789606919629590
+8bdbcb9d-aaab-3a1b-15f8-215bbbb02297,715904781,11924379958476402178
+998aca8f-2d06-1a78-e50d-06911eb7d35a,2763770161,3514832672683159185
+3cf8abda-19fb-0873-a62a-bdaf03840c41,1275717691,5542424521719322954
+3d04c99d-43bf-3dc7-ce8e-9d05c7b92397,2217863789,1580177006744581195
+a2c69bca-8851-60a3-e90a-838ca0627955,3499249807,3992412220917666761
+1a13acd7-1a08-f504-ba0b-84ae48f4999e,3437508347,16245651972344517768
+e98bcb33-371b-99ea-210e-4f3d6a2c3542,3236619700,2710353480937887280
+722a05fa-846e-a42d-662c-b870af6e5f2a,604257833,10262438092822046136
+112a9347-6115-9da5-3549-009ac61605d1,3898066816,6478163732686746017
+5c89d069-5466-936a-45f6-c7bb9f666024,518510551,842892508900158865
+dda448c8-6f9e-95cf-7360-ee3843c30e95,153259095,10773971882307957592
+724621e5-0602-f734-c1a6-edbb5e386e64,3810224891,5760988817846191830
+e9993fa5-1dbe-9d57-c03a-54cdb3ea6515,599417723,7602983770709400311
+0cedcb57-7d8b-e281-80bc-2bc0f44e8db4,3981088528,17095563249528743998
+a8662267-a404-8f76-a736-28a6084135f0,1814367774,4841507110656672642
+dcddad53-d272-4770-fbd7-2dde7f071997,2629157645,12359168276032289608
+c062cb74-0f61-345d-cfa3-0ac279b0f8d8,3613005967,3630461839620088633
+b7cd6c57-0506-dd72-2804-e48a71a600a9,2483503016,5475951466487682441
+e4407ad6-0066-f9d8-e21c-105519a02e1d,3765175537,8785207591343690146
+73c70967-da73-2160-1e69-d5d870355c71,1509334957,8147235317206135214
+c331ea89-7061-525c-c97e-6ede8990fc9a,4031078610,4334724863772505679
+81c4e691-14b5-fba6-79f7-3706b0148149,3201796693,13130159682881249252
+73bd37b1-2e07-baeb-854f-9f8d04d2151c,3018759590,10475667461170657231
+67664481-11de-d4ae-0f2e-0f2beee0459d,3990788890,7824838527867921634
+c1bcbeb8-6295-839b-35fc-e085b4f5b3d2,4254952683,3570331421648923538
+63dc57ca-7c82-0dee-6634-5a828b769923,3011487959,15325817971478971202
+11e76c39-1cad-91b3-7401-3d061e9f9e35,1718196932,7510392884550824360
+3f9b96b5-7d64-d6f7-d0e8-23e91ce57be4,173730346,1749384239707629940
+ef53a76a-57cf-78b9-80e2-0af0e58bec7f,2433532338,16948150760780003280
+05029901-aaf7-de35-ec84-658c9ce205f8,2682533697,9523655385193502812
+60be5962-589f-4f5b-5138-674383e7aed1,1505963809,1432082701923510729
+3747654f-7646-0d54-e749-7e5c62ce5c60,306002508,6385869697173563189
+13bdebc0-01ef-1098-2bc4-3d5daa3d7b67,3674439573,13795561550752626936
+40aa740c-1b98-2705-c74a-80f00af82659,2674202802,4586501273929023436
+8f275ddd-b8be-f6e2-fe05-13460a3d2a9a,315383841,4090638148840919278
+84c4928d-8d99-0e5a-4c4a-1346a66ac096,2924378597,571470537551004245
+92f8ea91-be5d-eeb5-60a9-036edc4b35d1,3601015435,387222349096993918
+123161e6-b462-c32e-2f1a-78446247b017,458805206,4313417451614667810
+576a1266-17b6-c938-de53-5ecc37e8312a,3669344478,18223616597089925127
+28382681-c965-d9fb-ad67-d24426230d6c,2176024898,12408395718321558222
+c757e3cc-a815-b442-5588-17d34bc0cd3a,892698377,8296353081044890440
+5deda622-e608-d3cf-f465-8e0d35d6de7c,2565986395,18266570515001529703
+afe3a512-37c6-1ddb-4820-c396a8c666e8,3347102947,2210669378453616802
+7dadeb05-a176-90cf-0305-f4c6e9bb8ef9,567350162,736328115465523052
+70b332cf-5bc2-1714-e1b5-a216326d9acd,3923993269,11765307462986126412
+f1f2fbc4-cbf2-fb9e-0ca6-4d9939fe9b46,1880037729,6600872094194636866
+d1205073-69e5-8d91-5516-05073d1cac6c,374250151,17202202588542443952
+d21e1c3a-12fd-b931-0836-921cc4e77fe1,772650291,2307558917837633409
+6b3a8103-2c3d-3033-9b3b-69be852d4ecd,655118950,7829293082006557789
+120c7a19-12c7-c6dd-2b9d-979d0d8880de,486101173,17107247383428570137
+db25b8ec-7405-02b0-20d7-0622aec925c0,3976997387,10145101704338813634
+84da8d45-901d-8fad-8921-a299c303c1a0,3397411480,11025722285038755705
+bf2f8fb8-c8f1-d714-6c5e-4fbb5fe30003,641111737,5722739253613601346
+3bfaf5d8-4f6a-11fd-5b81-91db97f4c1f1,934396117,10464372495393400991
+6d5e8dad-87ca-e751-d4d0-7533ec63abac,2868083962,1843959644936350273
+a3a11c41-956a-8171-451b-ba3dd33a90b5,1703124697,13836194127669671434
+c10c1e7f-7418-963a-0c3b-6b947d0808ac,4087504946,12586591268821080117
+e89cf4fd-1714-46c1-3928-5f1053211e73,1073009055,8301928317287833646
+ad643d22-070e-55a7-310c-16f6d51a3a59,2773220796,4079812840760863752
+c9111578-2e51-f428-8a7a-8e00dd699611,3063720373,2932161468129610756
+f61dc8cb-ae3b-c22c-d19e-c8e998c6c338,3709048757,9967869980398867367
+5e1f63c6-09ca-6d01-92b0-2614702f5d3f,568457922,6192001180308305059
+ae325442-db3e-dd98-4ad2-83ed528f0891,4036756074,5905746184978042857
+7918ba13-33f5-a0be-21dc-156ca3d66b56,2797627190,12475683618246394043
+f75112de-d9a6-e8a9-cae8-c20783f6d824,45471305,9880683786917893786
+96ef0453-1eb2-0db0-c6b0-1a1a93f94dca,744486631,7552591248025125386
+a7d76fb8-ab0d-8dac-662d-c0b4bb12bc9f,651558196,1269282775485882470
+19af56e1-ba33-c86c-d9bf-eed5fb45683c,2403049623,5783903292384076641
+2fd4141a-026a-db1f-428e-0748f1448188,1907363122,77701685888295740
+15b7255c-1a12-94a4-5c53-e6dc5f06f65e,133849667,450874595731853999
+33968d11-7712-2ded-91af-1fb9aa03ddcf,3079925842,10298151576159128030
+48bfd6cc-6140-d84e-4a81-15680f9a0ba6,3474795232,16806302774782892904
+2ad2abdb-aa31-9720-52b3-fba21b7f6188,1003298143,8292873766042014104
+9edf8f20-dfeb-50ae-83c0-527e0e5e18b4,1763752598,17129627794905934201
+83dabbd7-c0bd-13ea-ff08-d4649f258b32,3340063242,7118991880178141617
+1af8920b-2e04-20e8-caac-7e5f277721d1,3986539070,1296231299743991534
+1f74cf08-a0e3-8869-7003-a9a3655e04c0,614325786,12577178478775251351
+29188866-c22b-f99f-8801-555f6d6ec3b6,3451937613,12241291893104117506
+c043ae83-f443-da8f-f9fe-f786dda61960,3894931080,11518071899168257342
+a1836cc1-6a4d-f89c-bf71-5864836a6833,108705873,312882955396213384
+fdaa2c14-d5bf-e8ea-6f76-337fbc6a49b1,35436634,2244337190321053938
+446b859b-3efe-5931-de09-dddaa5b3b5c4,2100829600,5042503588227515070
+811eda33-c3c5-67a5-3d83-5cf50bf916a6,4124251628,2571429871743576590
+b8332735-3408-ed2d-3497-dd3a51b80c2b,1050320202,4606641292525854081
+f843869a-794d-6ac0-a8e9-f2f5d24b313b,4142033815,4518693291883904829
+80f53edc-9322-d64e-e789-4045273fa0bf,1950445768,1188477267397067222
+f5e0cfbd-23b8-7dc0-7a41-ee4f7ac3930a,3861328211,9462043908124251249
+f5e3ffd8-108b-31a6-c916-708af0b60aeb,3086961744,11553252032942314151
+b0d529c5-ebff-ad7b-6f59-2e02276d2dd6,2786942263,13045702737247707405
+dfe245cb-0a88-4793-da3a-7ef76bd4448c,1986333337,4144679935135330533
+8fe6824e-d6e5-fe81-3fc2-6a7139b1ea69,4159296260,18318168652493691068
+82ee8649-3a55-c856-63ba-b63c49a9482c,1110381538,18234750517633069622
+39eb289a-e40b-6a64-260e-027d0737a65c,1177415791,15557028435134504113
+c756848e-a16f-d47d-1037-662ddca88b60,3865491344,10141737536129933674
+67e496b7-8545-0b58-36e2-f7b4cbd46d1f,2768027625,8046884308181408922
+b9e45798-3410-dc42-62bd-64774fcbfbab,299719037,5848654355886555923
+5593f2cb-4e4d-9172-db67-9d1e05b8eac4,2989380601,27591335766203312
+feacbcbb-687a-6a17-a067-e4af6d7e4a6d,3437487792,1751822423454454259
+e6c26ead-a6c4-55d7-b4ea-e277882e8467,3711017363,9968854305505905363
+c8a045e1-4b49-17e0-9968-76d36127fac9,2493033458,13832402192796352535
+0cf8caeb-4345-e63c-a6b1-c5e49f310334,2165353516,16775576618728335017
+703f31dc-8598-7b62-930f-24f7b743c904,415328192,10875247220708051971
+1f013f11-f4c7-0bde-e038-0822795b0595,3558576392,4298895149576277904
+8c549de0-4fa8-aa26-9dd6-3c83b94b01eb,3355294563,17473101611703154455
+76682dee-276c-3377-a4af-f9dd5f663965,860448646,5470496468643969459
+0d00a110-b7cb-70c3-33c6-fb4a84e258b9,2899275543,5795365511828139876
+730fce41-1a9f-c71c-6882-6dc9a46c8220,2458160291,9396418055298258205
+c96fa9cd-2217-b755-3bde-b32601e0037e,2613076396,5746543192044719568
+a5cc052b-a17c-bc05-aa26-fee447ee0ee5,1164562392,1946087391513860560
+7ec8912f-f3ba-1516-4fe6-1ba94c185793,727785393,2136804866843357946
+bf0f01be-6874-27bf-f88c-c36194c5a426,1800399958,17505691129228014232
+2da644d5-d220-920a-c511-4697f6bff675,1501240072,7315110797206270581
+bc82b36d-48f9-cf5d-5190-87f345a8d857,620605678,15503074560638802237
+cba741a5-0880-a5b8-9821-cd5e31eb09b9,1452809124,9433867409290810068
+b8e1e2ce-4d13-04f2-1bb9-bd5595a66fff,293915989,2875622134771033911
+adb0f809-2410-fb72-0c2e-4f50e712d943,179888047,6553371107089167193
+1275e560-938d-ee6b-4c14-d624a3d09bd8,2438612001,8248671432137864389
+8033e728-d742-b221-9661-8dc04cb6c4ad,4196922551,9874960758149416245
+947f7e41-adfe-21b6-9af7-15a1a6224652,1693751111,1246831305889336932
+9b21d93c-5f10-ed7e-89cb-4485823def02,2332207763,16688750519361105354
+14fabf04-cb3d-ae1d-de2e-ecd6b9f0d707,3046167628,15930384917766975737
+e991643a-6150-9630-b36f-e7d277b2b98a,2671905815,1158711544215753245
+4f01ce64-a47f-0842-a069-0f59d89b7b93,4031481778,2390423581271613874
+0c581697-7c4e-35cb-e142-b84cab765034,173663876,9371929978597330457
+570d0c00-5a5e-2599-059a-b57119e84304,4261595664,15531081324192121750
+d9c6727c-13b8-4da6-a766-efa3a35305eb,199969974,16202047390566577619
+673e8870-e9e7-7afc-f6ec-0d71d573e9c0,3171344896,16194446354337711986
+d1aa1f60-8855-db5d-b455-6cf62f9cc45b,2391675929,16239808107108059007
+4146d011-5303-2e78-ea5c-b375635bb3a8,4282192491,16761730017168318052
+54d94dbf-2c10-e5dd-58fd-eb3467ee3449,830266163,10643825553403803047
+61a23c7a-d66f-16f8-1149-61f8c0f43f36,222994713,2447714231213925212
+476d5d3a-63af-0ef8-2a1c-be3322fd6e1a,2282182003,10466339151403738366
+32de52c9-a673-73dc-053a-5dd6668bae6a,1730697414,14304046188867728695
+f1149b84-1a16-efcf-c682-9871e062bf8b,793994975,9886553013419338026
+17409ff3-38df-ce2e-e8af-cd56b3686e12,283791807,5904405154723592317
+4a509ca0-b16e-ea95-6bd7-522e1618889a,2728102882,17758943360388578865
+0b30a02d-9a88-f147-8e40-2ec29a18b6c2,2260834596,17238718670095757051
+9a315d4f-c288-a5bc-e752-917d24ce12ea,3680593194,5108025094750831239
+b7405668-09a5-2b20-4367-9e6753d65ef9,2104352567,14072262778835863025
+c2885782-9770-2fec-9382-7286faba2926,2823312650,12072525718728120284
+c184c6fa-cfae-dd28-fcae-546c5733e79e,3790774346,18113236202284036523
+23699bdc-411e-a4e6-fc08-1aa11a6ecf20,1061267107,14216691110024057335
+4c753195-2929-50ac-24fe-b4aa551118b8,2305208836,16577961023640978277
+c4a340eb-e2c3-d863-e95a-e814f9661846,4052557476,9747547362428667145
+b0ff3f2b-2e4c-afe6-3d16-28c108f07c9c,1423030419,16013341321311314609
+568075a7-2b02-7238-f387-e2d91224f919,553605372,7631217019411529192
+56c80250-3b66-ee13-742f-6e07e18b77d2,16289865,9840835533145568404
+6d656a81-925c-6381-10d9-e2f0cfe430b8,3504235759,17925653252777714332
+8384fd6c-35a9-268e-48dc-bb25bb9b88f3,940118650,9538019820899336117
+fe19c661-6343-1732-5d58-7a3d360e45e3,2836632803,17376728842725201036
+6748dfe8-02a7-4dc9-4160-91ce5f618050,993060873,811482482940828182
+fcdb461a-30fe-79fd-cf94-30182f6d4413,3702023049,12167077556318344862
+e7253b01-118f-3dbe-22f8-3a4d5d19d2f9,4250575358,1858526565827728477
+e43e4de4-9406-7a20-c782-0ef9511d4169,2228012823,10002548494204414753
+85692211-7b73-53e8-2293-2f4f0cea69f7,2739411969,7861457153322731126
+afe3e7f0-2dab-9521-15c9-257a6c4a1b7b,3345215933,2669259954291297540
+a02f5a42-bcf7-aafb-ec12-8b41b273d445,2964669777,17773643778638866964
+eeb2a54f-58f9-07e9-3e90-fb37fa6704ed,470255791,10467421014732567477
+82b5fd08-04ab-b1a9-6116-ccd288f697ed,3256985978,17359210743319605532
+1c3184ab-0eea-b6f6-2fd5-f2514daa21f4,3459498204,3631450396042916301
+fbf66a1c-5744-593a-e93e-a933fca17a9d,1943240773,18254282294421723723
+0920f6ba-512c-81b2-ec5b-93d6aa95ef33,2023271103,12915081311918813013
+814d2bf5-7053-a0c4-d385-78bb2f5f7f10,1448341715,15459007646737158508
+2ccb152d-39e5-167b-019f-7a69b3e68a9b,2886441606,5741916751435338470
+59da0b9e-a86d-d056-44f3-d8f2d83416d6,3529283959,11737848580417621006
+b7df35cd-9382-2371-7545-b5f7edd51972,1058880811,6250498078079469908
+024c6065-ba78-69ad-7e0f-94ba3314093d,741470110,7158702033380644978
+4f9ecd8f-696d-f74e-095c-4663d3eb537d,3357257626,7472740308164633518
+27fdbb57-be9c-95cb-e7b2-643e9e430d6e,245385926,14816335732661139305
+8b155ab9-c1c2-25ef-2b50-c8712b9e1ae8,1278698357,5529279041175443481
+d5b7957e-0d46-dbbe-e30c-10756dd5c08e,1766917803,11046220100544799982
+20deb9b3-1491-50ad-e8fb-3b589b4c2496,889564231,15084868536621602199
+6c77e2c3-1f10-2c0b-9803-f40b62040382,2647507472,5170433140284307298
+98a8d39b-4713-fc65-641e-5a236f07b9da,1314491091,8384950485648252
+16da81b9-fc45-fb72-855c-52252919ca53,645404558,10256152818290902411
+ad6847fa-4e9f-0074-4429-89f23b14799a,2991610206,10605869216570905572
+8543156d-99a1-be81-6065-af8ba61042cc,721417585,15452246854227267577
+fa284807-cd1c-0abc-b4ef-4f22c7da1704,3935582939,18054332712378876701
+de4ea743-b499-7bcf-eb12-8c996edc4159,2885587128,1269308626131018623
+e5d866ba-352d-cb51-ea81-e9f3e22f3e5a,2073411499,8610371619348846147
+ad92887c-2943-5d0a-8b06-066d32b0f3f2,2159080204,8079499091788968415
+6852fe3c-70a6-d282-7075-28a9d094d799,1219543923,9352969043688170428
+9c48ad8c-8f81-11e3-4acf-f8e85cfa59d6,2029407327,7681617075415184435
+c8cf6912-cb82-b624-52cd-f1b3abf30a31,3275202397,7326202758875365949
+665aeb59-6eb4-0ac8-5020-31ab9768c1ed,1017283802,2737601828679413662
+74d135e7-0edb-40a8-a6bb-bd24b0118f79,2444033881,10771953426696642339
+80c519af-45a3-4328-895f-9660787438c0,1088017535,10652042958082837464
+d296f6ec-6368-3dea-2f5d-f68b9f9a7525,4082988896,1058969188829396063
+eb49626b-b79c-fd78-7415-5b64b05cef7f,2764199238,4894862820145800837
+78cc9b24-861b-b78b-0f64-5af0a2f83d81,1992386129,5860009345816314512
+e06c04b7-d7af-16d8-9ed8-ebd38f9b45d2,3096307425,551000483343043244
+d7e2bb6c-735d-4641-185c-ba7fd476af65,2632369957,3371419432293140726
+8271c45a-3231-fb2a-d2f9-4638ce9d28b3,2088035640,16693346915484889626
+8b615f3d-dfd0-f19e-0bc0-b9a614e798e1,2400506036,490905204566671321
+e2f472fc-63a0-6ee1-9a47-c5c956bf77e3,2525492179,10078189071200441991
+0d055718-26ca-0453-29ec-725a272b0ec2,613030632,6644386203245633067
+0f012c80-2ca1-7098-02fb-c1e95980fe4e,3198893946,13845107473675955437
+9ad04918-0c26-b968-cad8-15d3851ddb59,2992061517,4577858037957757587
+35f510b8-3254-523b-0535-d456861ba47c,2511202903,5186917329509800827
+45a9ade9-ad74-5491-f753-dcb13a1a2ff6,1173653532,3215886271486486449
+f36c9f3e-7237-d9f4-c537-b773a5ff8f32,2775980037,13115372642341592677
+0cd53aa1-66af-63df-283a-78957da469d4,51887632,9954944601695807732
+5d4667f4-6c9f-3a57-054b-bf797e0731a4,312030545,5046596989940544717
+4ead7fda-6b6c-da5d-0cf7-37f955d623ad,2093730582,10517721659675149163
+b8a60b5d-a105-5cde-486f-0a8d537402a3,4091014730,7201090781164418481
+ac388b94-f18a-6887-8927-24957ca80e7d,1243034980,74913762696962532
+efa5a127-dd61-6d0c-d420-9a8108e21fbc,4251496276,11804649060534348041
+2e50753a-887f-09f8-ec2e-bbc819fa3466,1814229984,7324329309522820564
+a885c050-1912-7510-42b7-0d45a0a56fec,42466832,13791049282869970583
+eded1207-7baf-4725-7fca-d7d889843d0f,1539443071,17281414661845983022
+ae58e748-5c83-cd06-04cf-4b91d6fb5f4e,2399652360,8665276676037974206
+28db4688-b32c-8a7b-9185-ed2e8c250276,2920803595,8711185954580797373
+ebbe3c11-a5ac-0249-5b7c-cc58a79194e0,3850062348,14303595013031949569
+43db4d57-8188-1330-0078-de00990925fd,2031780622,17277687212073814791
+ccf8e602-d0c6-1edc-d498-750aec2e65ab,960811047,110448292575279380
+2cb7a6c0-7e5a-9145-2ec5-59b2af47c967,3110679637,16535593521917118058
+f572e306-ed29-787e-aa37-a1983c4344a1,2545137278,17001330060370940253
+25db2907-9ab6-194e-cc9a-ce98398e2092,2277511872,2027434028828289895
+ad29342e-4a53-98e8-e2f0-c9a703397112,1735411997,18309764634511763911
+2c39f401-94b5-2673-e29d-0e9522bc1802,481334088,4970756890452653377
+db0b9225-5bcb-4239-22a7-7f011b839f57,2348388184,9588008579080612995
+484bd44f-323e-ec08-7aca-b318d6bd681b,2020325604,10214351204837369659
+86facd5a-6974-a1b5-51ed-91ed93c6ca4e,1414203484,10484524315348549092
+9420e1c0-362b-369c-fae8-b1c7ea8e2843,1168332716,16773601420288160828
+1734308c-ee09-da0d-4cd9-949e34e08401,807823763,6210339234416851776
+3bbe451f-87a9-16a3-4663-3073a5183187,3917257753,15700445589003281411
+2f1af78b-d286-4078-a828-2593c830aef9,1778689264,5688574866969055896
+782d3b3c-c81e-a8e0-6891-c720e763b374,1222645597,14856223360021783353
+4887ac95-1872-21bf-fee1-71b521e81549,1245393819,16166773643332863215
+e941c841-af20-bc60-27b2-32b30a152f70,1909921667,11789958766655358219
+288e5a09-1679-dbb0-38f9-e3f70b557330,3694567790,6080794784900662243
+986b156f-d743-5d6f-f60a-d1f4923ee166,3335608902,12323004261634338201
+edaff3bc-e040-e24e-4a0e-57e933dda077,2054020049,13023019190256684789
+f025e34f-5308-3a69-2791-bc30fe4aee5d,903994928,14189056741441200327
+1e47a68a-769b-ffeb-af49-37f7ac30dfa1,2359104535,14151913855259278642
+a13323c4-6af4-f8d1-c514-9acc74d9ff12,3013408739,17634561485779734051
+6231f9cf-c5a8-273d-c489-8faa670ee0b9,1139007950,1892293437952842255
+8bdce995-c656-9076-d022-f0fe391c0c43,3816321196,12328098160218103663
+b8aa47a5-083d-7067-58a8-fbefb15d866c,2169584318,5139514718802835328
+8f0f6527-1abf-65bd-ea53-ad37c04254c4,3969022275,1907819603848914315
+ec675258-3443-9f31-d1d9-bec2dedd5e9c,2175183615,14773328867018817094
+c77841bf-6cb4-54e7-29e8-c175e0c5bd8d,602707050,6800044290023371709
+40491ba5-c8dd-7964-c118-01cb67bd3014,305621670,2706507038604444520
+db8c370a-ff33-1d36-a9a6-409cc1fe21f5,494943886,2721247107516114925
+4dd31938-7103-bc1a-971f-a51bb65d64fc,1146268173,12745085715049296248
+bf29da3e-cb2a-7459-23a0-fb9061b0b431,4188284312,14239860002686016563
+24f1f8d9-7d12-d74b-42c2-84085637bd6e,2235457518,3987840774897880969
+f2e77c09-f971-554b-2212-c8c50aa6bd81,1873376585,2030047038564994993
+b2022aa5-09fb-a9b7-e6da-e3e7c5a2a157,3680694140,15963613667541154811
+9e168798-eac7-0873-ffac-9e5d263f1a94,3368302850,9109170474118129642
+75845c67-7485-6de6-4db5-0cf3276ba778,368369100,10831783270636273918
+872e5312-e3ad-c73b-20f4-56a6773d7d06,1077968648,7099722198391109319
+cd605551-39cd-1163-caef-c90381cb034e,1477146800,12813801393074797881
+f299cd20-a788-6c89-67f7-5656d75e4462,4223765944,3231522786036572204
+a3e54f01-709e-1ccb-37ec-1d587a83a2b9,2534167804,12779872410167136713
+909866da-3def-a8dd-5601-1efd14888e82,2970989452,17194885482014530818
+7bfc39a5-4f04-b5fb-039e-cc519a051a4e,3445922677,8271968339772811313
+ab64bfe2-f01e-fa02-ecbf-36840e901e2b,327268580,592410594483697012
+ca777cee-d753-c485-ca83-0856c9fa519e,2812923672,12592945272679574566
+eb6778b9-508e-071c-0ea0-e0e8f86eaae6,407810872,14985100530968464812
+a820375f-fe1d-b48a-8886-ec95441bc295,2879608216,9857089790442708065
+b13fb865-2649-d7c3-a797-93b931dddf5f,2954083655,7010202307289021196
+dead68c5-2836-d36e-ec61-fbfe47807033,2548281160,5030148938686425407
+d3136ef3-e08b-6f79-86b4-e27890ab27dd,317571920,16773192479484531461
+662cec7e-39e1-859c-a640-b22c3deffd31,2053495750,17090644383670778681
+7628d43b-8923-beb4-f176-4354b9b9d148,3794615443,8889948667744041478
+4850357a-a060-e54e-0005-96aa874de40d,1117625962,4583045326810466667
+ca7457b3-cccc-e9c6-688b-236af12289f4,1799724840,18403412362249559792
+c0925b70-e290-b54b-6672-edf085b9f4c5,278216842,6666855304298964754
+8398959c-bc1b-b857-c61e-b1aa97369ffb,3186496109,7986472549392171131
+1da26d00-9c5b-fb0c-4cdc-83822f813d1b,2567309749,12524498678415787620
+03f82600-ae6f-4012-ad94-2ace6e5470cd,4132071333,5889773829000778659
+0b04d336-757c-32b0-fa4b-10a8e923b07e,1544723298,13910650457198750409
+f568a168-6a51-d469-198b-ad875c61b8d9,186990879,2563938483988552089
+981c9647-3837-e613-1ed6-4fc253eb045f,3152984498,3902167147708610026
+fa846f5a-7e07-03a7-effb-3f46f78b8b22,4145982916,3402174607848615262
+1c6c90bf-e567-fd94-5be1-a0aa51f791fb,412932465,7714329594938880264
+abe6fbd6-c852-035f-348e-f716fea96e81,2240617039,17437500077536699439
+aad66fe0-da29-50d2-f7b6-5056d8e959f6,1937973697,4728433353010637609
+44d71a53-0a2d-40df-6900-908af0337909,1268756087,14075022726331384013
+1d94f21f-dd26-a9d5-6b33-7aef9b5fcd70,87684650,2508790541547284188
+101a9649-68db-8450-7cdd-5da5a537f412,3431020134,5926014244753322375
+861dea58-6072-8175-994c-71241c5c407e,4280779334,17364382324108448318
+a9168926-e880-b234-ef45-293757f6b770,3873371440,4416570206434386740
+b6dd2225-be4e-e8e8-d9ac-23a188867d0f,200092766,4887164964674778419
+90da5b90-1836-1b72-9022-ebba5d0c860f,2969865718,17588396984227512702
+08036b41-5ec6-cefa-75c9-1b4cf799e6b8,3318215256,6139071907094217430
+5d7635b4-f972-695a-fd2a-933c665a3dff,2955493034,8905682911935441471
+e27189f4-b2a2-a784-0b35-1ab8907531b3,1183874302,15257668773936688207
+2a34867f-21fa-fc34-ba0d-bdce37ca3be0,3558353044,649944594129047184
+d83abcd4-7ca3-e0e7-69d4-d79f288aff3c,2091589536,14802739350195758935
+6cf509e9-afc9-70b5-d42d-41aadfdd9200,2923737827,14348923237984485241
+c293a037-c2b8-7b87-0d4c-1aec4179e044,4160260790,10717901347839542957
+caf7edd8-c2cc-d797-7e15-c8051256d874,3193224591,3586485225738468167
+0481a103-3182-d8af-61fc-c144af7a8fa1,4227241238,8448330844850389543
+fc0ee06d-e078-9a33-ad86-dbaa40ad5729,3794393676,9440081487789549142
+b4a8c127-5a0a-a3f0-79dc-50c80243dbb2,2239831140,6418471368563089533
+ebebe36e-d789-cc51-a5b9-185270ee4ae5,2187692778,18215244635932533051
+7447c24c-dd7c-8fb6-e227-7a7090a7dc72,3858858714,921986304744143092
+2bbfc964-5147-097c-bb25-cad2991cd357,869435080,6302195090091801158
+3c80b470-62d6-d6e1-4147-e7d65548ee32,1252530192,3407818961516849165
+0b300dcd-c778-bee5-68ed-4fba9c9cbffe,3952901866,16148400598933552279
+26b91451-73e1-6c9d-424f-a204f34800e5,2694798520,4579912823929553314
+8fd2dc24-b6b9-6d84-0fc4-7bfaa4963fa9,524415724,15410143718519630123
+eb059e3b-acdc-b3a4-6295-2e668a6e226d,1980878952,144129090344993386
+b48d2cb3-ee88-8f32-cef2-0a8dccaac25e,3423522194,6575449630569892618
+fc0be961-6f28-501c-b8b3-70325267f455,1765095190,13208241647455185668
+8b58f5d5-b65f-1d46-240f-5211d1ab4d6e,3855282268,6165260545629885989
+e49322d9-1392-0eaf-f00c-645a5244f2eb,3317436562,1233858143996850357
+0ca65cb0-2c04-b9ba-f75c-729380ea8ad8,316781672,11843537400181912834
+b4f88d2d-9452-0f94-d628-3a1ac2c464e7,3249949536,3200407673062380862
+706f7f1d-77f6-af99-bdba-2dfb867b5813,1357184718,7184506800908328027
+3c3dc881-cde2-70af-6a91-a17520220a55,909091863,161020440246451520
+2c875e79-8b62-b2d6-68f3-2acb9557fb4e,428685448,9262884772706639971
+ae4d9a84-e0fe-7026-0cb4-54f674764928,2584702160,8586037627320856912
+77585e46-564f-16f8-7769-a00c9bf4edd2,177294549,1703463084862998348
+1b29afdb-08f2-d4ac-ba08-706a9d6bef2a,2895905226,10706360222051985243
+580183ac-825d-305c-3a71-10d8f2bea0d0,3040027102,11949862302963728223
+77f8d01b-6a7e-636c-d84f-6e5de2b11d74,2250411075,3920998164415759134
+dfd32a05-d5c9-5676-bdb9-e1d9450b2819,2546467108,1672862685768979457
+b50edddf-aad1-f708-ffe2-0c9fcd4934f7,32584671,641406462284456691
+f80c1d66-cfcb-6496-b01c-eb8465573af5,4360464,2722753281885292032
+8f70c925-cacb-3ba6-8451-fabd8e712f4e,1678166921,10366131036241477229
+a8d2e7dd-4792-9764-ccb5-62cc7fcde946,1491086081,3688654301299691296
+9a99c200-e121-46f1-3afb-f661a376c91a,1073386458,15287731739469145796
+52392d57-fd37-32fd-bf8f-05bcabfbf72d,458540297,6808763200191423363
+4bc04649-4447-e2b8-45e1-1aecf8d446bc,1862028218,14208806015733487231
+189070ee-bd06-d517-c04e-fe65cc83dd6d,4015691971,7832346804745434914
+4299a6ca-43e6-6e05-4291-4b4f451b1f9f,59231082,14304639469474080208
+dcc06aa9-87eb-d266-bfc7-1aef5adc918d,2418698931,13690362185184831454
+68dc3271-5558-75cd-915f-99db0d491eb6,3575573326,8557886646984187259
+aa5f94e2-ce3f-e629-be36-799af9bf4553,1490001571,3010122561631050639
+edab768b-0f0d-9090-8ab9-97bfa3dcb449,4249812235,6164850187437111268
+3d4ed29d-7e0e-11ae-9c0f-0d8f4a5e38dc,3477427263,11459933967616139740
+7ed7b5bd-c259-673b-daf8-89949ec2ab53,783180923,14818163261168549208
+b8d990f5-b3c1-60b5-49de-72df2e03b17e,822186447,11070069583413327224
+038d280c-61d1-d83d-6e0b-352320f518d9,3353417019,9717551904840170353
+5d43a49e-008b-14d6-b455-0524100d146b,2783809027,16418149817087655296
+ec17ba35-9e55-f8d6-d8a1-73b2713bcda6,2011485153,8906161615977625939
+b150dcd9-ed2e-0536-e547-38bce30a0231,2714540713,17152116964369132839
+297867a2-0c13-af27-0aea-d81c57f9db26,3379492131,3677978913854796068
+cc486676-7711-f3be-7405-4d245cce1cf4,3975271907,15620565240927019293
+829002f8-89cb-99d5-45ee-ae6077256ae3,3772364603,2868902354990792035
+982dc6d8-83b5-91c4-93a2-9137eef9c9d3,3541542931,1471498404246689853
+c96791fb-afef-07a5-f5d2-50fe8ca9474a,1985867171,17262818385534384390
+c30ca4a1-4573-11ec-f441-8e6fc9e3e8c7,318893084,1322973204914993885
+9d7dc4cb-2aab-5379-7211-894fdb237622,1661337192,4434076907003092837
+401ccd69-4746-9c5d-1feb-2c87bca2c7a2,546229334,5483357820785785116
+f8b693bb-a8c9-62e5-6ac7-79a95bbb9750,3354243407,16463633490116973347
+77fa7759-3aa7-8216-40fa-6b7d480b4b59,3063166032,16601084127387266229
+1ce83e07-9cf6-4bf2-561c-e79f41e390ed,1758389707,1616520270513396480
+56018429-2695-8aee-bd0c-87a0fe747db3,3873959772,15460779973121744615
+1118741c-71ca-8cd9-66d3-43a13325bca8,1026105182,11398688519706478688
+39e14219-02ba-f313-995e-b4df4bc0eea1,3469966519,938158341401880025
+608f4ade-a31e-8a84-5b93-9e334a63f830,4086357388,8453076176412645467
+13e76564-3887-7a69-44dc-f1ad41846168,109272600,15929050611261889102
+75f83122-0674-cc2a-47ed-3cb6653c6ecf,3954335002,11603591489621790367
+59f470fa-11ff-fb6f-2775-5817e2834490,2908419521,9913490278170209949
+49bad8ea-13a3-a7e2-9ec3-d08dfd4cd85f,1093991539,6448318593806940526
+c7eacc5b-d733-6821-d660-b9a6ff38e9fb,396793948,17966104115180992742
+73185ab4-85a7-a3d4-c793-50a4359e1e2a,2231497056,5782820650893195400
+8bc9dbd1-7c03-f822-1cdf-0fb2db181a21,171097262,6498613622465400390
+1b087f56-4428-c823-f665-c8b272fc44db,1624779415,12317169624196155304
+583a1b31-89ae-e443-f5a9-d99935d6a998,1017913664,2039488400502774374
+7d505d37-6e7b-76df-a34c-b0236d11e189,2897804877,11538710914590345525
+0ba53cac-6f0c-bd24-e1dd-f60e98fe1df1,1200286588,1510594038589124611
+caa9543b-f8ec-107a-687c-9fc8fa202906,1058014721,373294183897354287
+52d61c57-dc35-507b-80dc-425035212da3,914164187,10532339498386279802
+31a4aeb8-0102-4771-4f83-43771a691651,4139208002,14047752666637346420
+1e32992d-e63c-111a-f8f6-b2661615d755,431449987,8918465298768814735
+7de18524-3615-dffd-a24c-4123860745a2,3775141818,10393462858011847454
+ec64ff4d-2dc5-0f39-c734-b50f551e349c,999921695,3207850210763782893
+1d1ad894-fa88-8ecf-86c4-5aa92a0ab7d2,1601358347,3958852027879157258
+485980a0-06d8-7c15-e58c-9d3b61719149,1813186462,9216027038368322444
+f24670f1-2a38-34a6-7c2e-e97623efe8cb,1635472919,15109777680421604609
+5eebb218-ab91-4297-df3b-71bb0978a931,1581928712,207539532309004116
+ed3441c0-22cd-f082-3b6c-ac0122086831,947620644,5578502672038140329
+f0d35d88-62df-8d81-0981-62682f0a266a,2772546015,14732232045234273835
+5e63b539-7a8f-1d62-8f25-11cae833e279,3811115468,3747911103189722313
+4938bb2f-c44a-f960-0023-f620b3cc7103,1061591392,2475297251461847781
+1a453bd5-c9e8-c971-a94d-5e5ad512fdd8,1336912454,4867986931957897733
+4244a51c-8133-dd5b-9869-86683098843c,1826699704,2759909576797738790
+13a728e6-7d0f-890a-b4fe-1ef3348ee017,3170825476,17837386554574247641
+c61358a3-10ef-a9ed-d6f1-c5b480634009,3421738532,16020524079920043440
+215ddd27-bb1c-29a0-4826-2e962ab60024,453566497,15782104522636882062
+7c5a32f3-42e4-ed4f-6525-8e18b9d88b5d,63660658,17705691565956245131
+39e200cd-f979-ed98-ae89-43a375be3af5,2708203623,6956119414261610082
+3d8830e9-24cc-d31d-2fbb-b2834cabb791,3783774144,3201824422464958172
+fd103bf7-097d-7bf9-16ea-8901921bd1ae,1031718348,6708998335846844197
+e98c928d-5eff-fe29-921d-bff1f08eea8b,2073024737,6939949025704500025
+eb029ddd-0541-1919-bce3-857a5ea9a33c,2719425393,7836091473113506278
+f870da8a-ee15-541b-338e-7876eba23b86,2645473985,1244972561910613265
+08880e0a-d0de-230a-d8b4-f3839dfd2890,2345245566,77005792049264356
+d0647c70-c93d-b9f0-252a-b68e14f00c80,4226692197,17349016688647310446
+7bfa8462-5d66-5194-d251-155bfbcbd8f6,2911703903,6347062663406417400
+339adfea-1b4b-e395-b070-094fec009262,1381942969,5265159169079833615
+5d506a16-895f-98fd-41e7-9b4cbc09cbb3,2012031083,5366961948046846434
+d42d4b99-33c0-9ac2-aa5a-5d6ff885b51a,3795218674,6532222431071623900
+b8b6bc99-e05a-9f32-9dd2-7d4c219dc90b,509855460,9411565937196118772
+311d9201-59f1-e829-331b-db217dfe3dce,1451004562,9188760332792869482
+bfa6771c-bb9a-540f-1eb9-1f939909778e,1039664302,13203270091041639255
+6be7bc8a-28ce-5b1c-a0ff-e005cb0586e7,1678603763,18324658648733570291
+c8106938-43f2-9969-677f-b5cfb057ec23,2376338465,15371751544622278319
+326a0fb2-32e4-f87a-d75f-9c7668a8fad0,2790991920,2998340843314988172
+823c2853-9b25-46ed-99fe-09233d203124,2249546948,16935635430933517230
+a8bb3262-44b0-5853-ee64-4c95c709caf5,886440148,14822745662536032549
+4caa1870-7705-acd3-4e80-d9133577499d,3721985429,15042990814834646850
+1fecdece-f71e-98e8-7188-09c828d0d3ec,3162592731,17582578241277227479
+45a88b68-8777-2a44-5254-513a3ee2d4ec,271949693,8323735415778279862
+ccabe751-3f8c-e3e2-9c01-a7d6f1364e41,2360543749,5516503572280577337
+677ce110-e727-c019-9655-5bf281bd4b58,4282199475,8084815921654418324
+1f7e117c-5a17-bba5-be49-cdd2ac5f1a83,3611696283,4154744571031171781
+cabca87f-f9e5-fefb-0877-dd63b147711a,3870302296,1331335603333285525
+2ba7efed-e7f0-733e-99d5-588485125627,4067368720,1067242867897039926
+cea9aacb-f71f-6fa2-8943-fee79b1771ab,1665415213,15597894373101902954
+668a3814-7ce3-715b-9967-fa44b41250a4,667254705,9941537909692307356
+c29b2bf9-1ad2-8fba-bf8d-17afc560fece,1224889060,14607077408080872290
+bdc4ee78-6e58-39be-0551-f71efe612691,2214566061,16200483411184790870
+e83b1f62-9030-234e-d8a2-fa2e187ce5bc,4016716857,11001392309795829571
+36bb4740-9f17-09f6-50a4-c0c3bdb3eeea,2276515468,17824182093206740585
+040bf153-1cf7-3280-bf1d-db6e7c8d009c,1337723049,4160526606966133472
+b4ca72dc-ee19-b0d8-0269-296b24093e13,2021867687,14450442248226497215
+220220a3-253e-47bf-be5c-234b08ed7846,1885316713,1763792847751338401
+60dbc44e-bf02-ef26-b57d-724b93a04cab,2431686288,12835269121485937789
+0ff38fd9-4153-2577-06aa-4845c494d5ba,1379312721,4499831568561034972
+fa6592ac-a83a-c8ec-6f82-fd0ddab27755,1915995596,11141432388175168744
+e92ed41e-ac73-2cb9-b1a6-4bb5387f2e20,2205108385,559270471727393884
+71d01077-8efb-98fd-1229-4a38369d26df,3265857490,8410859931677022607
+5247003e-29b3-0927-a7fe-4b9065283164,2112085202,11268990962326986755
+bc9bc9f8-e2ed-5733-4ca9-c49f2c0c16ce,3215270051,664244130763074990
+45347498-b4fb-3427-9ed1-d909071ed192,2697971748,18427185500507264863
+07f5fb97-4649-044a-5dc3-da5d2d12221b,1533208936,10150201364244012576
+542e154f-0b34-847b-9568-3050ad2e09ab,3807549518,3478684371173906563
+4dceb811-e274-1fa3-582c-c611d6798b6c,2050343264,10319917670416301423
+c54ffa58-7e06-4f34-9480-5680b0882bf7,3788806315,12462556825039765101
+b0c4e613-e2a2-3922-cff5-238b988f6d99,3420511854,4296397350013126076
+dc8fa5e6-a7e0-ee9b-4e25-9d790192caea,3429574030,15808995146948479124
+58e77c3e-1ec4-5428-8ced-6e542686cabb,3437119359,400071930310619071
+3acef28b-717c-f926-3c8c-d18245cfc994,2947601971,9928461344961229966
+786e302e-9b4e-65d0-bbd0-b601119e666c,2671367085,4655376854061357985
+a04a28ac-b385-0b55-43bf-85f3099f38c8,3252930010,8260871030948537061
+18a2d5b5-563c-c119-4fe7-3cdc6e456c18,20701627,1030724581014293761
+255e3cfd-9028-7698-1a7b-b35c24580c5c,3786543073,14690474491010211185
+08ade4a9-c4b6-d031-984d-7ccd41f2f449,36672529,3340859643253738861
+06ada993-5505-1819-597d-a7898526b921,2230519533,17635165790627767497
+0ad4cea0-0144-47cc-b60b-a61326d366a8,2205264504,12490286538005921167
+08ae0699-d2e7-4acb-9ceb-6175c10150f7,3659806191,1644109369259720317
+e0febab7-60f4-f682-b33e-97d9f10437de,3792974771,15042530183311516800
+d93c56f9-7270-9781-b2a2-9645c37c4a08,1872912071,11170340723552748300
+4e9044a0-6a1c-360a-d4cc-ab51022ca94b,1658698729,11605470454448000744
+4f71fa58-762c-ea44-bdba-4d39404a8c87,3082228233,6440936351676493036
+15ada26e-3daf-80b4-a1d8-d353dbb2f443,3846011140,12262106473326090285
+1286421a-c7e2-9eec-009a-c767024001c1,2707532725,12943335438637394982
+39ab233f-a017-9a10-1e2f-d2179f0dfc06,263441395,7447458610175157515
+00407d1d-2f47-df31-b94b-ef9191a7b01c,3904304199,8157640954104548826
+26b38d21-7d25-e2a6-d724-2ae96d8bfa82,1120989418,4057628448080544453
+981bf91b-5c15-4e73-614b-f3abce60c6aa,341323741,10626415143549349063
+a063db2f-02e8-ce63-550d-a8c2a3959dee,2304767914,11387198568608895851
+180c66e1-4813-4c1e-b696-a4f5d59f4094,637492016,16644262857452650254
+ffd55820-ce91-d297-8590-67863a05a272,924859971,4855460564693404329
+871ef9ea-6437-ebb4-5fea-f32403449da9,3823303745,12155922533862010721
+0ff4d8a1-53cb-8305-ea96-3370fd75df56,2340372974,1094242299234404342
+d2f9af79-50ac-7039-5c46-9d87b996b42e,4171402468,9881772852044540937
+0f9617f6-be93-0d4e-856d-e5e39103cf3b,4140511803,1759621004573372490
+2cc919e6-dac4-e6ae-0a3c-7bf58955e469,727440112,15713187674515444099
+ffd9b162-b714-d6a2-ef28-53e91c0a75b1,3769078180,6647878721149019946
+006700aa-56cf-218a-2264-ccac41565354,4021122818,11748585087167293856
+69f444a5-9013-8bb7-dc79-e148676be4ec,1131749194,8696791356351316471
+573ccffa-e6d9-8372-2d5f-d4b5663bf966,2351905899,8325475423357427815
+89b68c37-680a-5320-c1b5-d093171ceefd,401534053,15191965443666696893
+5a8c663f-6cce-632c-219f-b9155bf75789,932135115,2618838386056629462
+a02e9579-ea1f-9d84-76bc-c89a91ea6a92,1060945607,10763069501842224659
+6c7f4e7b-f09c-ea23-094b-4023ed9f459f,1848593789,9534918492238246389
+139eb196-346b-cb5f-65fb-214bf0d313c0,3981068915,4889358399325867591
+78526e1d-18a5-4156-7cfc-5b7834b3c666,3497239067,17807231974993213704
+b50e05de-34cf-0325-c5f4-dd570307f643,597240543,11555099362507233404
+00daabd7-ed20-1638-c6d2-6bab42b3ba37,700237223,2911028615124721660
+1dc2b954-20d9-216d-57b3-94f5626e11e9,116661496,6352026938737101995
+9ded5e76-f27a-ff08-f1d6-4599e342cb2e,1889317724,3108615379807260711
+98b4857c-12e7-b598-0b87-1ccae5a147f6,670860328,9747972808522211384
+31467870-c33a-00cf-b6da-3d2f9bc17843,545666233,9901558297926969734
+b3573ac5-55e6-13bf-3070-3dc92e1a1c67,322615593,11541432692402080980
+28a9d5a4-b947-6d9d-1d12-6a335f5d8989,1409938275,13432386421874201100
+1bfedc88-3942-ebc9-9512-5966afd1dff9,2586298820,8035168711111246320
+aea773ab-22ba-6cac-9ea7-ddbb79e74a61,1575753032,422168418509036632
+425ff498-ac8b-2002-201b-2b41de11da0d,3893201262,7423132884514323708
+3355a58c-b606-808d-b938-3f1c5fff4077,2210541664,14761045101204972657
+7fb2d74e-406d-47a8-6d56-c5b4500523cf,3963113466,1408764466849832437
+e67407d6-ca9f-a8a1-bcf5-1749de21636e,2483610583,16204110766110894540
+dbcfc2c9-b0a2-94a6-601a-86aca3ebc2b0,2131763846,990529664433417637
+5abe71bc-b8c6-e551-9640-e8b5f6c2d281,3016273061,11765315994078858011
+9054b487-dc1b-ed43-84fd-b209e9ed1281,2012613797,3582112994661981163
+33b3047e-c294-54a2-815a-c2f2237676c0,2751135792,17311672464048044613
+9fcaa8a7-9d7d-d8d1-0b49-744a12e7142e,486328996,2870011722794391336
+5822c150-fe09-d47b-5c70-bdbb701fca22,2561496620,6439084789834725594
+25005dad-6315-a01e-8706-01fd98b74302,407325179,13197568088835028506
+f290cb16-690a-e1eb-cd51-eee8a2280afa,1104928914,17379065592834002479
+e9304222-de3c-b788-6452-660f557543f2,142007807,6360113999925213929
+6b44ab7b-f8bb-c773-909e-c0b3db52231c,1148851388,17885436530548651183
+bfc45302-d035-a20a-1807-2dbd5834180c,879443390,137062431718881320
+192e8480-3cb0-4001-20bd-5cbedc3acb3c,777100015,403582110357910741
+32a1a681-0868-abaf-39f7-4a8c123db4f2,3609842767,6812223410655117887
+27314eaa-a784-359b-2a3a-7cf8dc873828,488142590,5962844295088679399
+53230dfa-17f5-0570-9ba5-8955830d1737,2188330169,2145955567297143663
+5784c8c3-1bc2-8eaa-dbe2-d318a7948881,290987342,1480029210681120582
+d796cd29-dae4-034a-d39d-c6e71f5031df,3828983167,13382574999387891266
+e782c28a-b8ee-3adc-cca7-a09561ce627d,4202236052,1325906694825979217
+b99cc959-42a4-f2ef-8f0b-0818ffc13b84,3092311870,3665321161386853947
+aa0d12cb-8e35-2ec9-c45b-e7be0b7f0fa1,337224157,7932367238037000097
+6a7a02ce-9f57-bc7a-137f-3cb91eca1507,1084564266,9326729027078644873
+a6b02423-7add-35b9-dd97-15c1fc504bdc,3562508011,9697433661876069040
+2395db4c-8dd0-cd62-54ff-f04b47c268b4,3402055123,9521511544894634052
+76772fb4-f510-40aa-860f-19b30caaa044,309448547,2171655781756548884
+aa0b5984-0d09-486a-ad76-5c280fabc81b,3794590901,10446320205238814226
+a4c36f45-0c18-4d60-4287-0f338bef56f5,920570705,5827506877000255521
+669a739c-a252-94b3-7176-40c743f74709,2684320265,16070394837421825321
+6c82addb-0775-2273-ffff-191b37d29191,2823020447,4834005021991723107
+1b2a9c32-3873-e95c-9b94-029528189dc6,1068862630,17035590510725088237
+40d3d624-0335-48f7-1568-22da62942458,2119089872,8166256340340222614
+beb97563-479b-f0d6-9708-2cce88149c2a,693614471,3031634658248715298
+861bca2c-b8b6-c1cf-1a07-325aa9f4632b,3913654656,758560131771818364
+048c04e9-6f12-f0f3-e832-d8a30cfa987f,4167283792,5151288980540513042
+86ff7853-c1bb-b819-2e26-e14432d5d992,1248486597,10027131611944483486
+c9e64220-b69a-02b9-a44c-61b4cda9b54a,2871141433,11098119519581507403
+8cc05f46-b0a1-783d-a4f2-bf224eaa4071,645329396,7231585164334157349
+ffb7fd1e-9e4d-8d67-70e6-8cd88e7c613a,4263344406,12506848882346265485
+28371ae6-c498-4df5-fe68-c7783813a7ca,2670320845,96067312690195460
+75a181b1-37c0-f3d5-cdfb-8695014ad914,122681812,576233804093909268
+85891817-defe-02e2-8324-626f89c9f045,3517995452,2411678547463992188
+4bd55e6e-c636-2c72-9ee6-92e374c89a29,2255636262,4218924460069780946
+461ae464-7a3f-2acd-115a-8d0ddd7c236f,682705096,14062703777292091630
+bf1739be-ae6c-0b1a-5e9f-cd8fc8cc249b,3396473781,484301894000831070
+bf7341d7-2b00-0999-5950-072ae5431445,3438160386,5924546556681418768
+f1c22b99-d362-5210-df6b-1c03313a7780,2330797540,1497229271435795976
+d030c0c4-4910-574e-23b2-f62d53907862,2466866385,8926717077710709664
+f15bf37c-5768-45eb-ade1-5df12f82bf2a,4194359813,6984304185758417441
+75f0c73d-9790-a904-48dd-fd0a9f7a77f0,463624119,9810646492235518690
+bef860ba-41a8-ca7e-b0a9-dd228cf2c206,3019490971,10603459716882776402
+d6840122-3e0c-a8cd-9338-40a2cbf9f971,1161719212,3217796124775513605
+7aa242f5-a581-e141-c45c-a7b0d284378a,2165564199,6832677251010366735
+cb57ccac-9a8e-e4ee-85d0-6ca929b34054,2868165080,13176701893336800529
+9f814b6c-27c8-f77f-06c9-b7e23bf52d92,983554996,4912555968824193466
+9797883c-31c4-d202-bacb-958643d6e54c,3392902731,8111680561138377761
+53ce2a0e-731f-a9ff-d89b-8b2006589df2,4036833945,6205848366143785827
+f48c905c-5551-ac1a-99c7-59e8568ff1fc,3061711704,1183687836906155676
+7ca45ed0-c303-7f0b-ea09-7ac0e20703f1,1980508530,1236476776541348677
+abadf0f0-2752-53a1-cf61-b2e66a10bb02,1306548578,6860681859956151581
+13160eb4-a91a-8ae4-b89b-1d50f525d79b,1264103206,14416060572211295884
+9205fbbf-2fc7-28f0-5383-68d9e417eca2,4066343143,8526549253637676638
+39d12cf0-1ac7-1d19-c557-de41363b5b52,525373888,9355367956853869396
+1335c7de-a060-bb83-1870-2441542e5513,2645790241,14946762170140288146
+56c90ac8-f86d-1570-f18a-cf287ff52a7c,2868655886,5136300055219804654
+f44444ba-54a8-feef-9422-12290f5471f6,2255754472,2665476147801775469
+7bcaacb5-5554-ef7d-6157-a143fa535db8,650752876,11865824830777917887
+b5efadc1-d6c0-61df-8217-b8b072cd0f03,2229411171,874092817023214089
+4994abe4-31e7-47f7-67e1-3f5126313d0f,1927736412,8914644568309121856
+896707d1-bcfa-6c79-faa3-e52f7b9cbc90,2765089811,9653028221903229498
+b916ee1b-7b85-c356-ebea-22a30b9a5bf6,1573226980,12079940591698591789
+6ba1510e-aeb9-2301-19f6-c64deea6b576,3911421822,17799836127668609442
+848089a8-5772-b8c7-cabb-34c6e5bda8a1,1767454074,9332884797534663506
+136b605e-f7ed-06b4-a05c-217013cd3e96,1308797842,14471300817450274945
+227df2c8-8ef0-5908-e2f4-298428e04c38,3326154991,3431969163001352853
+1ec13f48-c521-480d-0c5c-43d7b7f2fe19,1515767155,14311800026697165989
+dc686437-904c-b826-a3cc-594cad1c54cb,157701209,7662701909448592766
+56f5acbe-50d6-da13-b41f-b74bdc0e4cf4,1848895691,10483860369711361390
+c43233fb-701a-d6cb-60a9-176502768a89,2345954238,15196321426856530771
+bfbdd4c4-8e8f-1169-9e8f-4619871f0a6a,1447283237,6755080976356794728
+6ab9b548-2e46-a0a9-f27a-cde10b68a684,2801915430,10676899163870083379
+bcffdf7f-193b-cab7-5567-0d77f2be844e,4244287414,16633593752291327504
+4ea7bb42-e140-15cd-f13b-3816b785fffe,3859274073,3784008676586222733
+86aec61e-0cfc-abdc-9e06-94479fd8541e,2460414543,15421079763693057717
+0e8251ff-e81c-8f2e-1be5-a01c048eadd7,303116988,7944364347691721227
+054717bc-3315-2d24-5fc6-6979d526100b,1473326387,3353069258491625829
+39b03778-fbe0-8221-ae03-9780d55df172,380151910,902081620504345604
+b30092e8-a942-020d-2cb4-1e216fd30bb4,2796911832,817973747372773328
+6b749783-6566-5425-2135-75bb3cbadd1f,1993119925,9689899966502828035
+60b157e3-efc7-e5c7-4b2a-71230b3e84b5,1249620372,5950703573086993460
+ef74b782-6317-c93a-db12-37d7c82f9078,484331634,4114964085491563369
+e529b8a8-ec49-d0cb-e14f-35847a283242,575742434,11893920502962393318
+ee59fba0-7ea2-038e-fa59-7f341ff3de09,2590351307,3996973331282208967
+a879a5de-f8c2-241a-052f-0779ae6b8877,331907795,11991779812582022979
+7d93d7c3-73e1-51dc-1b55-707b2cc095e1,1263553310,12463104814138405833
+11181f5d-248e-719e-22e7-160fb5883280,2939901146,4607159174501005186
+8a0832fd-6323-8518-0c1b-47fe0a9b74ba,3616662633,11888642682616741708
+0c84532a-590a-26f5-1ff0-369f44a11070,2402164625,4024581054705430969
+d30d7554-7b5b-0573-d13b-54524493550d,4121799907,297940626699946544
+ec954056-70ee-0880-f9d5-e9a9edceab17,4116565660,4818643304305698298
+32940c5e-42ef-ee3a-c5fa-df0d9870c95f,500285927,12171201113118728739
+b36d3fce-23fa-f895-4502-73f30692d5bb,1927401874,6255443302405444642
+e583becd-1e24-5110-9f8a-f5cba4ce13bc,4115033655,37382521295615058
+11d7c237-dea3-1f89-7845-c32ab6814cb6,869887397,12232387265470274038
+ffcdf86d-4e16-4784-46a4-3e64bf1622fe,2735858860,2267577103539365710
+187d3dd0-f035-c1d1-1cc2-4b367d5c42d3,1915631395,2818379076923141914
+fb228389-ee78-3e9a-1abf-7c8f7308d8b0,113528766,13524018463812811933
+630636b4-a794-84ce-f462-6eb5bfbe924b,3019008262,433643998922510249
+28f4938e-2bbc-029d-7b49-f2218088e662,3674572788,17726186286153292603
+a3deaff3-ae7c-4bda-06c7-de116f2ee308,2605367089,240510554151188090
+334e32df-857f-0e5d-2651-1a67540656d6,3228773911,16190229085724414311
+f4e2cdf1-12da-8a00-06e7-37c562c0016d,1073271458,3764604061056181416
+2c4d4a8b-d450-7de1-29cb-acb57d344d1b,544044851,8754373049912080489
+9f527b01-6163-28ef-9eac-28f93b2d5b6a,3944369062,12469140713268901118
+a4beaa70-057b-5bc3-67b0-9582e9872791,3214922083,14806540435996228250
+270f3ebb-bbb6-9feb-fc92-86c5ffee42e8,1295946209,10722373679955494788
+5ad67ea5-db73-1056-e6d2-89dfc8444a23,974524001,2202889340800967208
+0d1d8a3a-932c-2a53-0bf3-f3497fceebf8,2704597047,15619684614000796572
+fffd40ec-8654-f9d5-f5ad-2d601e4842f2,3045281662,1724433571128569173
+89326955-7f64-db8a-7405-5df08e0593a6,3870501089,10860148872503086608
+38cf0abf-a188-6338-bde0-f42f72181083,2278789785,17137593498587646409
+91c452a6-a6fa-fe02-4815-7411015303cf,1631896078,17795768787520095987
+1f76e6e5-d1f4-37a6-757c-7454362703a8,454024268,10144266691172752820
+83ff5334-0cd0-4a8d-4fd5-6186ca2553a9,2713703634,2237076160215090265
+c862d28b-8ba7-e459-073c-c75f290485c2,2270232201,12783557298832514858
+d6069d77-975f-d9e0-a698-22df74fcd6e9,3045395946,10694893081898983794
+fde4a68b-0585-eddd-7a49-36a88fd39edf,3611088041,8213498568330026238
+95d40a92-ca2a-e2cc-46bd-b18c27130ffd,2803416322,13584634254964002430
+fab8a5fb-115b-9304-bc02-25709d1e4db2,3274107373,3878899324586351582
+a1a44e0e-adad-f891-dde7-d3be6eedfdfe,605800551,6793603787603392548
+543846a7-37d1-0ee9-0ada-e2abf369ce1f,2242533134,14318833717037282868
+34a89abf-905a-fad5-21e0-8c8a164e6811,229462208,3740738545182395040
+ad0fa9ba-a261-470a-dcc2-9d7bb313dba7,521465368,4663730056316203269
+a26d4581-95f8-2502-7337-848257ab8586,2669864870,3945017371067632551
+bfbc66cc-7c9f-66f9-19e6-87d998958d6e,832734033,4276067695360701026
+bd3238b0-e537-e208-46f5-0eefa57bd624,3053011251,5822231136133645651
+95e30075-a1fc-0840-f5e9-e123c9c5f0af,169130356,5928156981404151887
+4ac9ed35-187f-fa22-35fd-e159fed14b66,2757474079,12947130750841423967
+01d644cf-fe64-aac8-6421-539ec10680a2,3618753234,9523443198545027379
+66b96704-8ad7-408b-98ee-7ed0c56382f9,1891294852,8948754947579309821
+e9fe26d2-e615-8c10-28a8-b20ef66e6b04,4154377000,13911527197930010114
+565d03a2-7ed9-0a32-f07b-d82540fcf7d7,3644879339,16435848239935292315
+568a8b86-335f-60f8-e009-50992dd330df,1673331190,10354688021745253599
+76181d07-7fe1-7a8f-aadf-a6831e5d7801,2656965715,13664540866591269397
+7dc30a51-6867-e3cc-30f2-8cb519d80d24,2018599254,7815498600144526941
+25e4b994-9f2c-35bb-6482-43e9dacc832b,772577,3909710307210019436
+c9f61293-3af7-0b6c-d51b-f58a93d5f8c4,2535747122,8999886050967390432
+af968558-c251-0352-28e0-e9c94a23e622,755184549,1216257456608406190
+54f8f060-881e-8414-62af-8b66e660e94d,2612883014,11522246239281696274
+3ff91ed1-cdbb-779d-46e6-0a6de56c79f9,827272992,12336287223414911511
+f1be98fb-d0aa-82ad-74f4-af3d4a46d654,87870984,13844859358100390886
+ce67b6e7-c979-a0f0-b784-63f51a4b1f1f,3434774980,16302035270826576112
+c11f7614-0562-0db8-b87a-527f4602c6ae,4225466588,15891157411736890841
+c89bf9ec-2007-f4bd-0235-fed7ad38735c,1685774838,12730151057653981637
+7cb7487b-0f84-7a98-6366-f23896bd2117,3058551538,9114874018631161191
+b87dfe1a-1b4f-8d6b-4c2a-26364c913dd8,516501604,2761167833811520575
+6343096e-1888-6e03-ea93-b90c10bfd4f5,537647037,14093503279825783989
+6618b0df-e310-fbc4-33a9-7a2d58f60d16,1987934306,176865253087049109
+cc4e806b-f69c-337d-f35b-9c3a3d278520,336594106,8583966190448786224
+8776cd87-972d-91de-1a7c-ec431b6e0c31,4264250793,2742558541145833504
+30218028-a269-73c1-89d9-35a3d7020a13,104943968,3793255902169820780
+b3ab68cb-c7ff-4fb4-a2d5-3ce621a1ce55,2899247127,7551072838907281454
+303da281-4318-e5a1-a908-42f3df223139,3258544895,11693584612283902300
+e0907e33-fd74-6051-38ea-5bec75640b4b,3613114698,5615185684779035240
+4c3eff81-4b47-b6a2-eb3f-e66a6ae3806c,2424092308,9999630272652459050
+2b228018-8f50-eb4b-ec89-a5e9fdee0179,1630305883,13482638656514590767
+4839469c-c1bc-38b1-3e0b-efa12cc0f57e,1528563552,8655525118521759878
+53987b0b-9baf-48d9-d977-71c3f57e1756,3887187719,3512010974086606081
+90bd3dc1-8ad0-3929-fc7e-ab26d6f728fc,676019688,481773051622351495
+84547871-8c45-9806-f6e5-030dcc331dd7,3691818807,7829569412702187238
+9936d3a8-4554-b49e-219c-68c1a6b12fb0,3941287989,8265324245708755229
+f28f0720-e493-3481-4f0a-9444b6952c74,2627547425,1896175893796450542
+db10f17c-3024-828a-d39c-c75bb660cbb7,3938858846,16734292858477423059
+5b3611af-9ce1-01c1-1665-b26623a03972,4027246746,8079712137464656204
+3fe2b7b6-c1db-db2a-b7d3-5ea0f0a98240,1990340250,11902929748318395173
+ea4fdae0-53a6-f066-604a-408d54c6d872,1360264749,14268121984069869180
+048d19a2-ebaa-2221-f5f3-9d98487759e5,4004344364,17456504487179566317
+d57e56e1-f9d4-73a6-1dba-a4cd14519ba8,3114462066,2354437616849649589
+57effdc1-2b2d-0158-b4d4-e5366cd79c9a,1915291996,7498830539534303507
+416a4c0a-0a9f-6971-e513-a2ba3f8b7543,4061206748,4046564332791519062
+8c92e379-c0eb-508a-990a-52e23d5c16f7,2315760540,5974045222104400567
+519c7dc2-9acd-42c4-3a14-4dc6e5efa8e6,2002755465,12099227169310701616
+6759834f-b5f1-4839-cf86-f85e28fa9895,2803356173,8515476719827651314
+2ee1c8a2-50e6-7a3a-dfbc-a46f59a38fcb,2750827956,12404062516137097905
+a0f57d08-0c31-70f3-2272-17da96fbae68,265234889,14980874400638325458
+e13e76f3-3dd3-decc-9d3b-db687b6e4db0,1125687259,13992619354412937670
+53e68b61-387e-cb66-7639-5ceb36ee5f75,3715765029,15606947874779609435
+51347528-f46b-42a2-a802-8c05fcf57d24,3924099816,3090997436621961192
+71e45bcc-e3cb-f0b1-eb89-5dad1dbb5c6a,3176139117,18057774629332830474
+68220bf0-eb1b-4180-f5a9-525a80b85a47,2780074346,8368781695912813256
+a18e5744-dbd9-ca77-7a1a-2ba222084415,434076849,16421420476348536544
+b78f2f17-9cce-0bf4-1769-dbb4a3e2cc2f,2640879568,11005108400089895289
+ebd05657-2af7-b3ce-e294-f28406b5980f,385279566,8129222465267272878
+24cf3049-0f9c-fb60-0507-c48d3187bb52,3548260409,17387924390362017797
+6f3c0cf0-53df-94f9-9822-ba837b706554,1240231535,5990953251707175157
+74b191e9-11da-f909-0e77-cf4a57c49ad0,206080750,18240499341757818736
+2df005bb-78e5-50b2-b2d4-37512211cf4c,27317992,11155332512344281887
+916b8b28-23cb-3aac-8dbc-e16394e0e9ea,428642851,9216326327292267564
+843a3d7a-2f9d-25ea-9ec5-6bcce18dd058,569735849,14887910460148088198
+ca192b3b-d16d-b445-c09c-fdf71d2d32ed,1287647859,16457724011058211886
+9a7c0e62-70ee-c6e2-9f6e-1abee017a45f,1425010225,8891209633562031553
+43cd05f1-e04e-b0db-39ce-ae8eab2db165,1879192566,14802126291285252481
+c839358f-2944-20d7-85ff-9ee9fdd1496c,3711135991,4430407668134833675
+cfea6465-c1dd-766c-b81b-51cece7ed204,498514233,15898358149935780692
+dbe09759-5a9f-0575-72af-793f4a641478,95181873,11401858041275650187
+17e1c033-5ad5-fa03-8e52-b33fd715ca55,2049636599,9232741533994781374
+ab8679a8-b4ac-9549-41e6-ad3c01c5e12d,3783404832,3167308378184852748
+1c426a60-0a7f-70fd-a46f-cb964e5020c6,3441790866,16664942638592177350
+5edb2678-e899-efd8-0231-f5483e7cf24a,309475834,4452275306956130388
+3582d459-cdd0-01b8-51fa-877d2c76b069,2798356164,11316062640702896832
+6446a8b8-ced9-43f1-294c-17083ccb91e7,1605670471,4070658251414038620
+1d858876-926e-950f-494a-8e70c660dfb2,1046138543,6326042024758976745
+fccbeee9-3958-da56-9e62-0751bb54b2f4,1138330421,7719716129602647502
+0d76b0fd-2614-6582-22e7-27acd9102e29,3404105500,12070633753798875523
+e6f4182a-1394-42f3-4071-431b3c3cc4c1,2140314541,9240484716155497085
+e7676f44-bc16-b22d-1de0-2c18dc8d2a52,2931123941,3678166000695527594
+ea0e18a8-1cf5-4304-42e4-e69aaef5f08f,2695676904,7483852456851527940
+47d447b4-bc4a-03da-3ad6-86e05bddab10,1785489896,10612341262475123975
+5123f683-12f3-d716-7c9f-dc205203bd93,3141635020,2773516324071060033
+adffd633-1e9e-ee45-a600-2d1b0949351a,2881286950,224723169323039569
+e3328469-3427-6c80-9175-506e4dad8a4f,1252799506,16581768056189709957
+14738d5c-bcfb-d17f-a757-33d95f37b4a0,3996836465,16456164650533767171
+597a3386-a5f6-5c5d-3b3f-9920d496e973,3138797358,3802585193108988934
+51010e20-e006-5c03-40f9-21c65e3fbaf2,678376837,2377996359092127452
+2b459449-bc9f-5e1b-379b-6c65c5fd62bb,489787435,18109447560847410967
+e1b9d098-180e-78e2-8d11-72a1928aed80,292048884,12218268622872457736
+e929a9ac-273d-45f6-69fe-e0d01ded0f1d,2254424549,10312459059107587994
+39994748-0dd2-84c6-63ad-205485b6dc9d,1647402857,11325324194159841496
+6db9b14d-7e2f-bf2a-af9c-b27b1fc78f49,613602599,9214594217626092538
+53f7f03b-75f7-2a78-18a5-51ce77d755b1,4284380193,10023054753373704594
+5d4907e2-325a-1d20-5d65-7bec7e7eb68e,2538840091,3686443728801327690
+bd775c12-03b0-c6d6-862d-2eead6ef18cf,192651388,17725349193972302962
+2060e9c5-17e5-5662-3bbb-1f5673326a87,3502802227,1245925792116341892
+e40d3431-61de-f94e-70cd-0fe0299a10ca,695977342,6747396279678731053
+c2de7763-1611-06aa-0f1c-7241cdc910a9,1758119525,2555955742244945442
+a5e9bc8d-3dc9-661b-b346-c8a9aa4fb7fc,633417890,12634458793877816723
+e9f81375-f503-65ba-0844-b630a29763e3,3476363855,6771829186012777043
+9b258c2f-a2f6-c9f8-5052-a76cb07ea12b,4208182496,707282215256191787
+aeef70a8-1146-03ce-d0cc-3c06426b7f7a,1106383685,13901463652071815663
+9c07b068-a9c2-aa45-256f-a419956a1b4d,528793956,1031829566827881524
+1764687d-e454-c1e0-f139-a26638e2f8b0,1245734000,9719285453248994529
+042245ff-f703-e5d5-e1d2-058b4ab78fad,3976469461,8188102951462334712
+3abcb514-758b-2c28-1d2d-5cf32b203e69,380984078,8266696468453600797
+6249e771-37b1-d0b7-1b9d-968a10ac8a26,2630469410,11923401653868102557
+0d1c18f2-3727-db11-8e89-8eb96674c77a,2135394358,8200259285255825323
+6d74f5cf-2f9a-ac0c-ca8f-46167983a99f,2331385550,16060572593852516068
+ef7fee22-aec3-0edf-3001-79785b57c6e3,464938335,1718502430754657237
+e203e70c-eeb3-ce40-e9c4-e0b9f500bb39,1014501232,2003101965727462585
+e9a4a47d-07e7-d040-2354-10dfbc720180,3022967950,15495330672367591238
+082b5f14-ee24-1bc0-b326-295201a1f453,2344311411,1911336427403705279
+90e257c9-53bd-d53d-f5ba-59b7447ca7f2,2542696469,9462793886654953623
+9020ec4a-a47c-faa4-4ccc-86da8f7e395d,1544916414,14288037738435753462
+ab6186c2-f172-5534-1abb-36d338a3d4b9,2893012972,291728004127115959
+e5bac62a-c7f4-9bbd-dcaf-438cccff806c,1929972759,3041783297243735511
+c7f64acc-6aa2-7de4-4852-60aba6cb08d2,1513566901,6353995369005568997
+c43bd1b4-84b0-4cd0-a4f4-7bd67a967322,218849780,5021624229593553643
+ef2208f2-ef4b-eaa7-8be8-bd24037be5f9,13344606,3186286822192108196
+329e84be-c6e8-ed39-a10a-6b6f956a2726,3143221954,17636522918551107970
+25483cd0-8887-f14d-39a0-941c6e34abe5,681122803,30456839427989400
+20a92300-9b3e-02bb-ea3c-39cafc6ecd5a,3630613347,10499083086200542194
+9e710f14-f815-e522-28eb-fd6aa6a7e00e,458236578,5105148152064479269
+0f5daf7e-7763-5287-6d75-a4e6813f25d1,1793210419,16355891200917240638
+f26c1cef-3114-aee1-6d78-f90945c94ee1,3931737431,17664044781409945862
+8b3eb416-2857-9fa4-6508-0e52c048b224,3549456477,16981530538178794760
+f1cc7cc2-8cfe-1383-dfa0-7dc27149ca58,2781688176,4967470837534424491
+b13be60b-f3d4-0f54-1e28-badc3763922b,2993821881,14614408482470382211
+348670f2-586e-2488-d6f8-50449b8870b9,2341289876,5014504669056789641
+a7f7bd5f-1175-5f2e-a216-8fc5ef89f03e,1629790505,17107798433905578462
+b91ae7d5-830b-37dc-5d1b-73f1514ebc14,4080754505,2189132396882383072
+59ccdf19-499c-956e-40da-52af762a4a97,2895386947,14541188936834322089
+3fbcad9d-d82d-4dfb-702c-1aa968fdf368,262147124,10812689289309677969
+6b31aca5-12a6-b0b9-b86e-06dbcc66dbe0,1719880574,740320559465975169
+015c24df-f5bc-149d-9d7b-ad36663fb572,673285561,7428868489573229124
+ed055a3a-eed4-2ac7-2b88-d872d947f572,165782060,9769988297797379173
+4b785c1f-25ce-9503-ecea-53006a1447f1,1444153481,3072732384402202403
+fb3efa01-e0d1-e369-762d-be413d73e05d,2110761877,10811089033130892735
+c793ed05-f754-9fb8-49a0-f9733e40fc58,2657774305,9727626035053729132
+87a0aa30-21c3-dfa1-c262-99c6fefa638b,2315156693,14288380010579474333
+d09b5153-7e09-98cf-a7b1-3acd93b4c9a5,4126364168,8961415288476174858
+bbf9db23-d99c-7372-cd4f-d61295a87a94,3661097698,13384768651531202531
+fdfa81a6-7b8f-7e7e-2aa1-d00b80181fd5,1527963540,10796095192890670166
+e90eac29-e950-6a01-d0e7-508679ffc320,360397936,7380567222462760826
+3224762a-327b-326b-3085-c07922b6a461,386219810,16068273751519805817
+c9490a2e-318a-ffb9-4d93-e4e31a0c1b25,1759844156,9775297188581568742
+83b82dd2-fc5a-6ec3-2e28-2b06ce6cd39b,2655545627,12235368291448259351
+3234aa61-0549-ee42-a6a0-e78c197a76c8,2477473304,7805858176958410660
+387c16cf-3bdf-32e6-9cb3-aab154e82fe9,3218279531,10050906343993653933
+859f18b1-2d3e-12f3-d5e9-0150c800c642,1666831554,18149958969452253442
+3dafd1d9-e752-9c4b-8360-f0a5d9233f07,1639311182,1611065334157518172
+e3d5f8d5-5f11-ab29-8a85-ba0a9c4c581c,1522593603,7140746135237572000
+012c3285-b6be-9c1b-5ae3-0ffe8d766ad9,1619469426,1556923283491301098
+703f6c84-f4ef-4acf-0101-b05f2631afde,2168557766,11597506607306382481
+393d5758-5125-af83-914d-7a920ccd918b,3890790078,16910210253442938705
+038359e8-506d-1ae6-f975-70b133f21cdb,3657940167,15047317769814533726
+2249e53c-3d20-bebc-50e5-a1332f1be74b,3275872056,12279983325239122637
+44abe1d2-1bf7-5791-0292-2d05af1f3a66,2876290568,6585765387799787841
+d86b6448-f051-be6d-2ed9-337f51ecfff5,776267438,9231593314873559337
+52e55564-3c1d-b9f0-292b-f741e82c33b1,1227242782,5505557635045700422
+9704a911-c74c-bbd6-a9ca-4c153c29d0ca,442609939,13305679328655292731
+3fd6e050-5538-234a-87e5-d14f2ac95c7a,1772758450,9879370513161602705
+c868eca6-8322-df50-aee7-ca8fb172de42,2115686907,17772655257423475706
+6e8efd56-786a-d6d5-951c-8d0fe627d4a5,372030354,16887669518220140357
+2d738328-dc76-7c9a-0412-56c94ea2cb3a,1000946525,5726632751297028501
+ffadd086-2399-8de5-cd80-2e47e822f2ea,3515776357,6473098376442020267
+3c4ca995-2c4a-1168-7dd4-eba1a825f9d3,3692173799,14174154183579414094
+4af5ca4f-5796-0507-b4f5-0215baf611e0,985543825,236090807470556843
+646b3bbe-1ebe-20bd-e8bc-5f4aa019edac,1039939169,11040917540911096248
+9c48afc3-a983-0805-748e-4e295b9d45eb,1208740342,14228599273013424300
+97212d67-d6c5-2b76-4877-452590c946d0,1226420175,4226392878233457831
+f637f6c3-5662-ba7c-425e-07e352781e1c,218352275,16432510007634781208
+888ff6ed-b513-abc4-6d24-c4e15d9c1b27,1702338067,9085416195831609023
+f095b718-c0ba-b184-211f-d1682f90eebd,2628206022,5257758866308075457
+25b8262f-a5db-b86f-e52d-2dbe87914f18,3817483061,8049856777096999087
+a430bc47-7957-9a03-9d22-58019ec8f0a2,3334630952,868261966117794062
+f81959ab-2d99-760c-90db-4c326e35b02e,1906590194,6179706170867611888
+f7b93fc6-14bc-1a25-6583-4b3e1aa5d8da,3127779482,10003533801379992771
+f4e26a63-694e-2988-614f-d8dc098ab8e4,1099947851,387157551703768953
+ca3c3a8f-2c9b-d41a-e1f7-54f399644862,2543713244,17176212476336036306
+33f42b58-e888-f64e-8a24-62c76902063d,2544800395,12928177494390658812
+f20aa235-723f-fec1-c77b-b973d394157e,3935264200,7116572100464097151
+fbc61155-fdb0-031d-0f19-7c91a45ac26c,1072831347,8013596645798267525
+cd979f73-3ec0-728a-3ce9-e4f7ac5e7515,289673838,4909484328151653674
+6540f55e-f8c4-9a24-a621-34abda102b77,1137808449,18367509517911427882
+d1f95022-8761-f50c-e6cf-71b78513ca41,1965162033,14643059465962024483
+64e14c0a-8a96-31e4-0a37-8df72ea1ba21,1025488855,10634111059860637058
+dfa46787-5832-bb79-cc7f-99dac39daebc,1354792832,551632897915329434
+88d4c943-d5d3-9595-e5fe-8d42bd180da9,1187538100,4804379981121204268
+44bdb7cf-57c2-f1c2-6ca9-dc26a27aa13a,298844254,4039865281908384012
+acd5702f-2820-a944-8dc3-6cb8af6ac0b2,1524639957,15196724620117978514
+dd408ff0-caf2-e0a6-7418-e0916739ec02,4130075686,3731161564638936315
+3125c231-3208-6518-0527-1d28da3866f3,288125537,4403168730415506570
+71c47f47-2949-8402-c5c3-4e79813a6468,1027165728,16640511316595153542
+92b59475-fc37-7fac-dc92-63851fec39f4,3072465233,9280686257076584562
+ed793f4f-4279-5a58-49cc-e3940e12ebc2,2130066937,8215715867599903699
+3f02d264-1030-1e30-5526-57ddf7b19406,1999793622,2680190206760648900
+8434774e-32d9-30b4-300f-0f1408900412,2001130505,16512296506310061419
+52655263-559f-fe82-a962-f9e6ee0213f5,4227062498,11674685683574425594
+aaf09fd6-5386-9179-2d13-b389e19fe211,3225956288,10660888257232249493
+73de8a46-1b62-6a1d-00d0-bbcb6d37a1f3,1840216499,1591708179567894858
+8aafc32b-e302-0367-42ee-4bb7a920cba7,971490342,16787261943281305824
+14f0840b-36cc-da8a-2395-e73b933692ca,3337333016,1599030283617865022
+77c87fe1-7775-342e-dc0f-1bea248294ec,1773604339,1856686063867749658
+f79c5c5b-eae3-bf5e-4c07-6e119ba46622,2079406123,10889171926676030025
+8a52c6c8-dbeb-e945-ffed-7bee0599c536,484406854,4663493632201826347
+9a116f71-d5be-31c8-29fa-eccd10d55fba,620243737,8289275109918883263
+9c2aa410-2276-bc25-21b6-c36d5f583920,962224833,5713998030895458326
+9ff2988a-19cb-57b6-02cc-b3ed7a915f9e,318120648,16433464822422490355
+eb75910d-91e3-a6e5-435f-c6d0a6f787f0,191558957,12828040100445109051
+48e18b76-a464-4d4b-a402-d9e83cd12b77,557719360,9119864501987879537
+fb5b7ea0-54c7-2e31-fca6-27747a66dcef,3548636100,16786326830105542039
+e46a6052-8c03-bf8b-0050-0aa20d9a2963,2764869360,11191811373508912736
+5d7ee7c7-127e-da7d-a462-8ba99a6ea30e,89929189,10589509473002714185
+a6cce669-b635-d9c4-77c9-64de2d9e3920,835571798,6439097113104192854
+0721181c-11b2-71f0-d44b-0bd310476eca,1425895348,16834401456680056612
+44106feb-3ecc-18cf-7712-4b95566c613c,2395874317,4161609471272139127
+6f527a10-de6e-3f62-1541-55f8fa3f0788,3364439527,12071165547973902561
+656f7dc3-6482-fb8c-4860-07923b0758b2,4284929898,4813848268163240747
+dc2b2782-9082-93da-c194-b26744aaed77,2203109205,5363956805065309991
+c0669cec-1529-1365-69d5-5e62f06b3784,2103192828,11463948998886206127
+c2e30a01-0bfe-4022-5475-e81748eb2f5f,1149122633,15410341918166926789
+146ef654-75ef-a41f-49b7-cb556e14ed2c,3657166429,10809142329503357590
+a6b212e3-f92a-2a42-0f5d-84163b8ff0a8,3207334425,7436263908058800872
+ac1b9584-65b0-6c56-2e2d-de1175c75466,1677769030,11129736607085928174
+68b0b57d-f4d5-2bbd-c34b-f25f77e62b15,1388936506,3500376791139777207
+7dba312f-cb2b-e0bf-a648-d7c642da88f3,1197211726,4383770593075203633
+4a69a80b-8c7b-b4ff-38fa-76cedbe8ddb9,3399903996,71281947895387889
+e0a2a2d2-15b9-a2b3-5a48-4645d19543a2,4146940540,5070378819797818545
+0bfdb53a-1172-afde-128a-f105b0c079b9,3610338158,13148366222241266247
+4f0955bd-95d4-10bd-821c-ec49933e78ba,2629114100,10574121013330157940
+b0910a01-3a54-89c8-3ce9-3ba501780ab4,437900904,17240822073735219899
+da649f04-a69f-0705-3fba-a18d5fc275be,795540590,309240085630553090
+9b7d9e2f-b60c-282d-802b-8fc0664f16e5,61558561,11912748810498800760
+f1f89d8e-077e-8556-6a8f-66ba965ea65c,2465493203,1269366632245378174
+9b61b5a4-07b3-a907-7753-58818fd97c58,3536425190,11734574515525638909
+e5ee3eaf-55bf-aea4-f1dd-38badf3e3d3c,3343352548,15804785671368704633
+5cb0534d-83af-29e3-6a8e-6410b9e742c8,2123971404,3535761088253135212
+cd7e1935-730d-29d0-30d4-eb0bb671a0cc,2315041221,4546892957503869426
+5782c4ee-dc1a-5a78-75e6-40f0992f45cd,3449907754,11159712879614311195
+64224fea-8cd8-1a63-6aa2-fd7b53b04e6a,406402355,2430630220536437074
+77bc58d5-be81-f224-bea6-bede57ccbd91,516536394,13770233264615286588
+0c3f8642-f20a-5c19-f7e3-76b9bdb1b5b2,2658803068,13090028346097572693
+28c0d68a-8394-784f-06e2-08cbeaf9fa2b,1660754487,1080608494675956629
+afaf9e87-e080-1d86-8736-c544fc2c5fb8,1502908024,7051095068207104578
+87fea66f-ba31-757f-033a-79902f9e5310,2144570977,12637005224188618230
+7818614a-a0cd-b755-6451-613bdedc7f50,1528821361,3483466698402571123
+13c1652b-e516-e8dc-75ef-c42e6ce80a95,707466553,12244652570219064996
+307edefd-3e9a-65f1-0ba4-cb7b6946b140,1859593886,11778591692797329005
+772a6a15-f9d5-45c0-dfaf-83ee60873ba1,3148492901,1763831367590234711
+0c55d8bb-065f-721d-d192-dc5f9f2fd186,3765277418,11332218805758708113
+b0e84821-1ba3-3b7f-b2ee-890ed77def27,3697362382,12706596464804556119
+a2be902e-2c87-816d-ed44-e26b56d3156d,1703711345,11820044885803719677
+c8905ea7-9657-bab3-ee20-3bd657f12bb0,4227461359,9543700216964435425
+308a093c-7453-af16-18af-0d2fda7bd232,3946559588,6304446496140444464
+3d64e542-dfa1-88fb-0e18-a5dda1e91a9a,4031118511,70264546108735833
+f74a8e0c-1cfa-1c66-6466-7e0819ba374f,3417512767,12229403266393955094
+723c93af-9b42-19bf-c8a5-963a02e53668,2697364996,865722908349734410
+9b0a858b-06f1-13f3-3b84-08e8813c3e20,2634106989,17690457794563301026
+f78ead6c-0d97-3022-7702-c148b2a21779,2592103683,18170824335199874953
+42059f57-2d21-0742-e2cc-0bf9ecb11a86,4161450964,15842784617179027938
+23914c9e-8b6d-2bf9-afa3-a8c932cea081,193327010,11039263199912014370
+553e9cb5-e910-24d4-1b96-405a1bb7a47e,486680685,4348485276452620665
+1e5d9458-2f53-a9de-42b8-5e3eff98eca1,3401876385,1067191385845404405
+757a411d-10fb-2bf7-c384-d7cb64a091bb,3408722744,17774950034451055583
+a97c6008-6d83-6412-c12f-0ff30c14892b,3721107030,9873643479609034534
+ae73273c-23c6-f20d-e6ab-72a09c778b62,3542092699,5525701932607889256
+ece5450e-f158-7bbc-81ce-17b840b33e23,1702376809,9683813425841445566
+4703ec96-9931-d147-3ad0-f7f5130b61d4,2437404829,9742181754102425787
+d2cc9eb5-5c61-eaaf-341c-98ef7a929a05,3686236856,10542269726584565230
+0650b442-f37e-4252-f67b-5baf5880d1ce,408244930,105329243188894816
+b8489f09-136e-8de4-fd40-d82a6cbc7c30,1323237619,1880349330813541127
+4481a7c9-ad84-b96d-65bf-2852970e4708,2996699290,9067095662986527017
+683f6fc7-bba9-d978-83c6-413cf8763dd5,575048127,12441663546195589939
+19ee9555-047b-f7f8-c753-9c742b73f16b,875350896,13369011347589272734
+061d921f-21f1-cf66-5222-d385015e7697,1794780626,12463822058055598966
+2f4694ed-5aaf-a6b8-d5e2-df7ee6749d58,480201733,6676735385482465025
+fce712db-3be7-8751-d024-ebfd943e6d3a,70484776,10879747061647765071
+d94cc7e7-9f57-9ebd-6d7a-5961992b0dca,3956724330,9823206839689731311
+5df85660-30de-ab7b-070f-138000265ae3,3613541895,8824123140160956658
+b780f8f7-400b-aba8-014d-4a40dd7d419b,3451731092,8519948882399854120
+a1b22815-8b36-fd8d-d84c-172676652327,2232489674,9384030342714955398
+0f765a11-3791-a072-6dfb-ff8a175a5e9e,1786179775,14082019829729606650
+7fe52c3a-59bf-984a-ee8e-cb3e8f990183,247120947,14943324673922036578
+64f08b96-e6c5-4fc2-3dd4-5c2114cd7a89,140571122,16598442078548096018
+37d5fb19-7057-f982-d11a-a83f96112083,4085107840,5978154086314733376
+8ee36aef-0d58-d11f-7aab-1d8d294ca2dd,4261226411,7072894406219201948
+cb40b6fd-b320-deb3-d15d-20edde4267ad,1312948475,2546023589518328560
+8aa63eb2-f9cd-9937-eb82-a1d99f3c51b8,3432226585,5216566792125891678
+5e4b2399-2aa9-8c74-9842-a341c0bbff0f,2574751481,9491343424350035706
+770dad90-0f84-e8e8-4053-b740eef840dc,337317922,18177767118781841607
+ef9594c4-b277-7461-811d-a2b35b078bee,3595536054,7206752178770539315
+10346118-92a2-8cc4-584f-dbb6f6f49f20,2566610163,13529394045782292550
+7917e068-e136-6041-fd97-cc76153864b1,3910541419,4622457024511370623
+644a7d54-d77f-0841-0f85-4ee61915ca7f,1292616747,14924773613933176981
+ad79dfe4-4e95-98df-3713-8a6b9d561b17,2173676038,5358124402676833624
+42f8475c-c64a-b315-35cf-07df44db53bd,1023610165,3231834489491746935
+26facc76-29b3-6c03-d5a2-76671dbb04d2,15627886,15765366027777369220
+2bd7984b-ee8d-a743-2821-a5cbbf834fb5,1859550925,15910276791284819624
+afaf8e57-af27-2aba-dc78-965b7412e2cd,3799000416,14881634512579404066
+41ac15d3-c575-7108-c114-d041b526ef22,469095238,11311289365373120877
+3c506eb1-783a-8c36-c42b-3ab243e8a0e8,281319758,4313348021625363352
+d3b4258e-d7c9-2f60-ed42-8307458a857b,2291926428,12806591985527465093
+f52e110c-3de8-b959-9508-33b4366fc6a4,1922645437,5294341659021949750
+9f4b839f-11db-9e1e-717b-b3100123507a,3543075863,9046790024855319811
+f8d626bb-4468-96e1-5bcd-1d20da6190cf,701610824,14379459886060662231
+92a90903-6190-e996-e235-32984bbb9a37,2379782335,10338063389417285343
+22d9517e-8cdd-ad98-8453-11b9e410522d,345863669,2244844877402686204
+a8a365e7-59a6-1597-bbd5-316e7bdc422a,722152557,13668223519904384738
+fbefd81c-ad7c-f706-e422-93cb7ab2f466,872146081,4406723768150835749
+830bf806-8de7-d4d2-dd82-d50b3f7da26c,1662083939,6659759548035621276
+a8ef01a6-faa7-5319-51fc-c16274892810,2520598192,2236714206584890163
+c32f9c5e-93ab-45f3-d767-841725753764,3672259150,4866687760665773160
+97602949-66a7-9945-317e-045ac23bc879,3727365541,5487476442609627031
+d4474adf-f2f4-4342-e6eb-a5ff7a32a526,2702207273,3928789017640815466
+d882159d-8782-f165-db27-bcd912b8e969,1347888923,16289905770242823247
+8dd51275-b7d7-8a64-d2de-005237c45f0c,1989241098,14952815653941435758
+7017ecb4-7b6e-f93e-3164-b1ddc4a2e710,4022351881,10632305597318271281
+667fcbb8-7571-82b5-bb3e-c4ba66111274,2992909740,13702908879423921966
+fec5949d-b520-9051-99b5-4f522b966c44,4136861293,1467830381050137857
+93f66b3a-3a46-ce9b-23a4-ca8722863bee,2960221721,705509221581587439
+0f161639-7d3b-1184-f6f5-fd406741efe5,1312715145,11119680022512916724
+4bcf0b90-4197-9f29-87b0-c90ccb26cd66,2843645881,10612124301771274909
+0c8a9d78-bb9f-f524-f13f-0fc68f48cd05,2071502833,15279029341646160629
+435f1e5b-acc4-c833-7f4f-2f735e448de2,450591028,16130234896757538224
+7d395286-2237-5a18-55d7-97967b2139ec,842862021,17045291845799942564
+5be03f10-3128-bac8-877b-636801992572,3989483865,10246397149945419376
+dc5e81b3-31f3-a949-d9bf-c4e770085be6,464160829,8766107268924265784
+701a3336-bb2f-e044-38fa-e5cedec1c2ff,4001697740,3805062742911123998
+c26e7e87-65cb-89fe-9bdc-c2cb99138565,2386820606,1891907978049459794
+066aef88-9e17-93b0-fc5d-650f8f05472f,3519498546,15249937587784583129
+15398f11-0572-3cea-db36-4620d4900560,1276238125,6211241820779623040
+5793a3aa-f349-a01b-abef-965282dcf72e,2152640855,1562361833365580384
+b4b0f1e0-0eb3-ace8-c534-291671993d7a,3049848221,7883157155943432263
+4380368d-82b2-6c2b-84fc-e06617b4c47a,712470896,3757027833635259282
+7504ce8a-54e3-c4c2-47b3-96cf18c0ff2f,2202332661,14395074021051353513
+4ae60575-fc95-1f40-0af6-7a8aed68fc7b,2990717157,3722994506111327779
+c622f576-d18f-7420-ec6f-72e98fb71a4d,2029523473,8071257677452683201
+f0cd8252-6611-2ea7-fce5-107bdc7b7e65,1893373504,3000191572637836082
+61b1e381-02d3-798f-ba35-720218335875,733176835,3825101767242258742
+1e7b28b1-b730-3b34-2d3b-18c63368fabb,3321897740,5950183638016930776
+fc74e614-4af3-c9b7-7cc5-cd88e69544ae,240564155,4649034061202759017
+66933a56-e767-429d-676c-5e21b7cf3f2b,2843100855,8431726869905841851
+795ba93f-67c2-c628-1319-31b2f5f292fc,795943887,6220859380877030531
+1c460a90-fde2-aab0-7473-d74af5e015a0,45633419,17417638583374930673
+7291d976-b8e5-5a03-68cb-a6b900e9e4c0,884603658,14830330875917929634
+7b013006-9217-80af-d388-a09625e400c3,1788380593,9891062729276377685
+87006fd8-a70b-e3a8-7dd6-5a18d5b40af2,1140004978,2166694515580146727
+bef29cf9-c709-d63e-9e2a-ad81f24d8769,1063666539,7375689933017288078
+ba922f51-b186-a36d-74d9-04ea4de5212a,647298063,2303131404252360213
+c4042225-d85f-c187-9d94-06e2e4463fba,2282522270,6673104627663617972
+c2a36623-eb6a-1075-5acb-f4701665453e,2188853647,543797259479220029
+b04dda81-379e-9212-858f-eda70328e868,3094422607,6006207687629236917
+b927f636-8577-059f-4c21-5e0bb0635676,1312981056,2138964169175066365
+1823b2d2-49ef-06d4-05b3-6b3f29be6d5d,2093226188,2366518624669617548
+957f5d63-3eb4-2041-2a45-1f4cacce6d2c,857242357,13698640313511246663
+3f87acfa-b304-5fc2-b3e2-fd2755f6fb91,1695471520,9325654266013235677
+92843434-19d3-d76f-85bc-6f2c02517061,1463508350,17433923955306721124
+abbc84d7-3936-5975-aba7-ad11496bc224,3457796931,9042281635144835743
+557b1745-59c9-0d8d-1f7d-305f7357b7b1,2748373565,3263468782768129544
+88207bd1-8a0a-9853-af4d-11dd229ab894,398488184,9303724657973128154
+834e81c7-7f85-558f-8077-20caaa961c64,4212533848,14075860779229863303
+8077ca0c-c34c-cde2-2d2c-14ff3ca6bb92,4251223464,18029090510563946640
+7e27a6f9-ac18-9fef-65fe-549ad59f728f,600771890,7622746507701874546
+2841a503-808c-49b2-b36b-9f3949e15a40,3388552667,17561546576411286766
+b306665e-3523-df3a-8ae6-f4bf4410443e,2490811824,16880083458800129647
+cb6c2cc3-c76f-287d-2a7a-cff083b04d23,514395902,4171015305382927985
+9d50251f-10a4-4b5b-8892-d6638d87a588,973638447,10277021788595952880
+c9b8dd14-b2af-3622-cf63-004d07071cc4,3206639089,4605566730161457549
+99e8e8a3-ba5d-6425-b31d-cb2daa9f4295,716748433,2740034747784499838
+35370559-b62b-1ec0-85af-b535f18bca69,3212819588,15848410645775742736
+74b8b239-9bc1-cd8d-c527-4e0ed8b7561a,2886632424,1262942137300855281
+c8357eb7-1cf7-d077-f7bb-31944017553d,16975525,13008944460510657320
+29fbbb43-76b4-8795-f725-751a8dbaf46c,917209559,8163184821657223054
+af1bf6eb-4df6-2713-584d-8b3d1205a667,3137042606,10652247907299173142
+1f8bb4e5-34ba-0279-cbfc-c8b91908971d,283985754,3035046322980060027
+cc699ccf-bcb3-d407-88b5-61ec57135412,1069058390,14796758106150598110
+ca9f583c-e9d1-b86e-e4ef-b8090d10db9a,1059420332,9725886415076000106
+74904cad-5cc7-16fb-069e-2db31287edff,2053785646,2118111593482839523
+296d9740-3f05-138c-d70d-b79c06603ee7,1087624240,6556269563127765562
+a4dbf210-59ee-b0a6-e1dd-78ec72c22e36,790577838,871931862943674974
+27dea538-c557-e969-7c10-16c782c9b58c,2409363493,14802265105923603709
+ef88d972-67c4-6933-0083-6a4770695b30,1608808441,15824818279281087062
+de200e01-eb1f-a6b9-56bd-0bdb57fcd70f,1274423264,5051127857195296378
+25f59853-9504-0866-42c7-afe41df1c91f,903699467,505895548976698464
+2d5e771f-37e1-80f9-d5ea-f202a0a8e36e,166800714,2712384976669350779
+9309bc40-d37b-5a93-5ead-216396ce5639,2858560890,18169311812746329948
+f52a3210-0fb0-8e58-8415-d9576f22b672,631920038,864275623675865408
+1b7dc8fe-a74f-fb35-76e3-e4d0ca6b032c,332740765,3047470677158268713
+f0499b1b-f5b5-4803-90d2-956db0626c39,1796799310,6302880950683878453
+77a1aafc-44ce-2ace-2ca1-9dfd3c7ea1b2,3321475672,6341946657394436066
+353366a2-202b-4a71-f7e6-49c0273e3320,684374699,7812024996005434354
+87c233f4-8924-cdf0-2cc0-81e7f656ccef,3067715765,18255439579117760441
+2463b67d-4a6f-c8ae-052d-e34739c96842,517960002,3144030338569049833
+9a70dc75-8ce5-47fa-3ce5-7a2b3abdbcb4,4212115267,12537246036960106490
+7706a8a3-ce6b-acce-6802-aeb08151d545,2287324968,11908941826891808054
+9baff86c-1eb2-c333-245b-a812b23340dd,774502740,7632904970800066733
+17b29e1a-e8be-ecce-1ee5-bc619abd44a2,1992653643,17669013535461803609
+7e9ac548-434b-e76b-6758-0eb54cc5134e,1507156124,12536422264210822530
+245901f4-3332-133f-a464-2d7166460b70,1930600222,3691440862131276864
+5cf4c538-153e-f14d-6063-9f647a738ddd,1794056382,13202276822749756963
+b16104c3-d4ba-288a-89ac-7730de135d3c,3130361953,9709993885673404599
+643365d2-e300-a9e4-6474-5717169ff338,4158553110,8739770855249843224
+548d17ad-31f2-aa38-5480-03cfb617a673,722131536,8057236746924955132
+6a80d26e-7d7e-a683-83e1-ab2666b3dcb7,3828508412,12509033017137532699
+e847f5be-5174-17f5-965b-6deecaaedb90,1058060762,15877843906461742776
+56ccb661-622e-ee4a-7b57-c27aeb795c63,3035692398,5940148672548979373
+b3ea97de-6b3a-65e1-4953-689971dc044a,2383206197,7535268882009183566
+cf332883-28e7-fc13-268a-0269ce23814a,2525281639,14388906424657047939
+e40354c9-08df-5e80-a415-8e5a48ecefc7,4146329034,803751136306592323
+22f3b46f-a455-a8e1-38d4-77b3fd47a25f,2798416195,10871303864992548071
+044f555b-7e6c-7f2e-c065-77517d676d87,1102124163,1913995970616997673
+168ead8d-ef25-3695-ab9d-9e03e5a28511,945973487,833813157249191989
+50ff2538-9014-c505-4bfb-eb8d5658d9f5,31667636,12237459158359040878
+fddd56b8-6880-8298-7517-3e14fe544b50,1747529104,6880539997594604707
+fbb5c4e6-23a4-28f2-4872-8ae67c300133,3155051849,9125026821067437078
+15e5536c-5622-62bf-c4b7-681f90c76b60,728600549,12092928617106356795
+4449f83d-4c8d-4f3f-4204-c6809771f0c2,3675257595,6557640440597054488
+559937a1-5215-56f9-6be7-999c5e4c7e9d,4243880351,4619061222020791148
+6979276b-56a6-c31f-29ab-c42a78feaeb6,1806423040,15052806633250768792
+cf09d6f6-81a0-2786-2431-a565d368c600,603027958,16821734757793099148
+339ba947-235b-460e-ce6b-165ca45a9b69,1483683654,13118121001756952664
+ea7c11a1-fa52-4494-eb33-c1a97080c99c,2872811942,4616900423296839394
+85501a57-851c-a294-2e42-dd3284100e04,931813685,657104352968975339
+ce129abb-d2d8-1602-d48b-29a4efacde95,422593619,2054351778894419388
+89cf3771-c20a-f903-9faa-cd52cddcb3b9,390983689,5498993793539691403
+7d687599-6a22-9159-0283-930ad3a97377,1791187299,802439521524586003
+58a1f537-a338-41cb-b7b0-ca55619c30aa,4184382701,975098522237108546
+684da775-3bf8-7399-4b1f-24cd755b3b89,1850447613,10154492165727580700
+0555185d-8b59-7ba6-7f42-2829617e2005,2203203462,14417457170308359346
+f8acfe2a-c8ab-ec2d-dd89-14404298e6e2,2568589077,8974754191699481052
+f8c8d526-bec9-14f2-f20a-b8eb9499773e,3119058944,148137827052698588
+97b8346f-ef61-9fa5-73da-0ea18bc0f7ef,680091485,4894632693256474320
+09703ddd-86eb-431e-a46d-ec82bc76a200,1070166319,15364892339498537922
+660bd573-a8c1-a852-8589-ccabdd1134b2,3985139084,9493102681593010953
+b3d2d8f0-204b-570b-e503-3cf67a91a239,3125392335,1755597717683792025
+675d7df2-bd0e-62ba-c0f9-debe16d6a5fe,118665694,3464211542476308858
+88497c33-9c51-863d-4635-0affff500502,1757329718,16375022465522170955
+c35705fc-1e00-a056-4f9c-ecbe753d0767,3277006641,10619954859605913370
+7685d48e-d3f5-28df-cee6-7cc03871e32b,2570867859,3375531256751753974
+1638f81f-7aea-a3a9-a805-bf006aaab3c2,3305881974,4657259598721842269
+d4c44a48-9b39-6745-2101-5807dd469c87,3158195808,7048655463482306320
+31e3e859-6308-a4fa-da62-91662ad582fc,3387998126,8746859940013249572
+28deb62d-02e0-d24a-b54a-42781ae288b9,3127516875,13361620811885564798
+c62804e7-f488-9702-a1c3-06543e711b3d,4216344928,7613884017540469650
+c5bfea14-c9d3-49fd-6cc8-1f8f69cc323b,219088508,7091878129907336700
+2f7af987-98df-bdbf-50f1-e5bcdf03a960,2485330857,1563295617829484903
+ff4c3361-3c90-5b15-50ed-c41ab4adaa8a,1296149374,261034575832677038
+cb1c4db4-90c0-8032-1d23-0159794ac4a1,1203266441,8222948305438516637
+4ea8be19-e9cb-b044-9600-189df3409b22,280023480,10427329915916738819
+04de000d-331d-e447-904b-7179361baef0,1275990665,9531993585200502344
+52529840-605d-2a57-29f4-798336531f1a,1767070753,14344011083193252720
+f178c280-f14b-f6c5-281f-d8c9d6884757,382588135,594093974636854778
+8bbdf31e-457e-d9d0-c155-a0d5c7b27687,659259037,4896093909678130508
+33048e97-cbfa-38ed-ec8a-c96e0a7aa03e,614350147,12816424717074371711
+87740f81-7410-5016-3f42-22ebb58afce5,1864469594,926823163578043625
+6257ea79-3e3b-cb2f-241b-e6bb3769080f,2463120937,15352488746468647291
+d485135c-5bc7-ad09-76ae-3674a71750c8,2048122777,7875556393204390368
+e3f391ed-1d6c-f547-7b9e-4e9ef28ef39c,690829368,3119023055679963135
+2d810ed5-f75c-8c90-aa71-eb5d2cf0353c,2630353355,4768757529583230374
+00a350ce-37ba-c355-88dd-9e4903e17338,3894633858,11280384797310736795
+9699194f-95ab-a5cf-483f-e054ba4ffbda,2671877076,1977257681886761457
+d96eda78-3aec-9d8e-b3a4-81ed0d568c36,3648830026,11421272732576023582
+ede15dce-72b7-1adb-e5de-e26a3477e859,3079033776,4779952278111261608
+3311f8f2-6c37-1ca2-fa2d-4fb8aed0e41d,1359434514,12700716831169919743
+e8a0ee03-bd5f-93f4-fcf3-1e9be85140a6,4006142763,16895452929986150027
+f82a5324-77ac-624d-71aa-402a4beecffa,2901135808,17546070384382954918
+bc991f36-88f5-52cb-30e8-0184b3e28d94,1793994531,16539989481962582034
+83a916ce-3631-1c18-eb0d-27b94f8b7531,3370037285,13836161003890503183
+b82b79b6-7038-125c-0636-bc731846ce96,2767406376,2099935660560452235
+d019bec1-5378-2900-13ea-43c607031994,2463541222,11108491310850982144
+874031a2-3629-bbc5-4ee3-c2eaf7700392,3458356282,4690861634303759651
+d80eeb8e-f305-44b8-e63b-a453cc147610,1996208312,11736507862254240134
+90e3acd3-aa30-32a7-c58e-1fae933d1d90,1890112081,10862343429566169219
+b4c02409-62a7-43ac-e57e-a9015e1073ec,1617052643,5902701361801948380
+83aaf1d3-7442-890d-9283-c87f0d9180c0,4017240096,6161426904708174747
+a1a51d77-f705-ba03-e434-4f93d8cb3b2b,2456694060,2081368228539227495
+e05f4171-5872-67ee-657d-a1f6f91c17c2,2203892575,8002427952029157557
+24c8fb3f-dce8-c93f-8c79-4a12505e8a94,2953033420,13494123668896327646
+b5ee8254-4363-6faa-fcb1-3045902d3fde,517247844,8041490160408229798
+13badec2-a37f-8289-39c2-bbc58d101130,4167008299,4910859520216579036
+5373b717-7ae1-18c8-ed3e-bb6beb7a72ca,2699961618,15548012996865374293
+274b049f-9eb0-fe39-f741-7ad8129ebbee,354820551,5159326259663905013
+118ad66c-8f88-da5e-b66b-f1daab2e84a0,2687327114,1497515181541489065
+f517d44f-331a-4ff5-d9a6-33dcda15da4b,3189404585,5490687559044060386
+e8933d96-77e2-4bcb-d8b1-70e30abb136b,2368017887,13534010105413154159
+807eeae3-ba6e-3810-712c-108d8a14a755,867215536,8039787378575823139
+effc8428-a8ba-ba7d-9149-f9b4e10eef7f,712630631,17726868249698983006
+f4bd618b-f206-71b2-b9f5-e512cf731ffb,797615865,16474928531874784272
+da4cddb1-3c72-7e35-6787-546bf0cab31e,3782336570,2638378570776518961
+67f5ec02-ba6c-d9cb-dc6a-3503b205010e,2289311355,11375517230387002021
+decf6b40-8ac6-df59-aed6-17455e131c61,2056708930,7838202266971876688
+d92d0a4c-a1de-bac2-9f00-ada23873c4d0,3420065880,17229930454934948913
+54604422-ffdd-9155-740b-6f3baa54e15b,133747284,7990730258783665060
+37122207-765c-0233-5752-e75c7f71a085,178695922,108116001971866284
+9fcc729e-bc68-2619-3a0c-8410bbb94904,3896069052,11314995091178700109
+02f2911d-4a9b-d72e-e13c-42b3df36ddd7,1104969646,1344043739707788876
+e02cf6cb-6431-37f0-38f1-e720edd1b1dd,3242397012,18207226132866955782
+a74e481e-665b-a7d2-cd68-745509f2db46,2714844524,17672531663471779539
+d66d047a-2e4a-deaa-0e56-5cb9feb36011,2564366837,15398922339614075489
+7b6b7112-4163-605a-413c-f5c20aae7719,1340657170,18066975683794812759
+336ba6fb-5e3c-dcff-285f-a2b6aa851a8a,79159784,16461888846135542924
+22b56b52-ef35-e8a2-8050-7121fd9872b9,3703494068,16898679560760849900
+88827c39-7e72-29a4-5db9-c6c674a0a37c,53570801,14982778527948037154
+31491925-a2e5-1d5c-6760-925745f0a787,384392933,5142090397835398342
+a389e323-c668-bad8-ae67-b1329f97f060,180547678,13496632596872476746
+c1ce6af5-6ed5-c2e7-2b8f-99350d6f32d5,2466036315,12226765477531218012
+710ea869-1626-d678-a9c9-137e91b932ec,3021458157,17076359599256390397
+b5896dff-4201-30d1-7c38-7dedcfa5987e,1904484044,10750670154572169162
+16700d3a-c531-b784-3662-eaa805a29af4,1643420426,9840891365441823061
+8e6d41f1-79d0-4af4-7b6e-c3c3cb028785,2563786258,458666297244463085
+457d37be-4b09-d787-2ef4-ef7ae5d35119,119861139,14723992926864637907
+48d6a306-a224-f52b-bc69-5fada6c56e76,81090493,6208199413880077686
+10dc2e14-bd25-0e91-7e8a-e6412915f984,4022882428,1831339568036940323
+5253a7f9-2573-f45e-1ab3-4976bcd848a3,3950318242,17115225980000575244
+6b11515a-9ee2-0dad-5df2-9653188c6e81,4279972880,98972558396347769
+282c0924-1f92-f2c7-119c-cd8d477b2b7e,169247727,2804828934345970906
+0c50fc23-0d3a-90bd-6631-402fe4dcb58d,1892876945,11737186662369174024
+38bea1c6-72d0-0fb1-4c61-a9f576fff19e,2790909684,8000498507179339910
+682ed8d2-b6b6-a432-6b4c-b7bdcbca8d9d,1513987432,12808847602273058021
+23294ab5-596f-f786-c159-91c828ede051,473548699,14581060890985259844
+5a21caec-67da-eee3-b48a-e9e2a8cbdaf1,2003219662,6226647631246482016
+94f6aec2-a732-c8cc-077e-41ee9b559b1b,2741545516,10941719085805868686
+8acd3f37-a093-90c9-4e5b-115515042524,2826614972,8222565049500028231
+15502e7e-9e78-d080-11fa-67941646c74b,1533425799,9121399820157301011
+0cf40ebe-da2f-0e86-8a9e-d14adb3b1077,1881188817,9781288132868965416
+a946100c-032b-cb5a-3fc8-2cff7269213a,4125049147,15069582676820340791
+6171f046-9bfb-ae87-ad4b-6dc3553d796d,4148280966,14089992762868674577
+0f7d4a94-332b-0dbd-52d5-343d19736b39,2318176884,10514485426604648770
+1a9cbc64-d061-d035-5380-45bc13bcf3e5,738776153,16889351378569173720
+66a94f66-4f81-494f-ba06-5fc9256961bb,1388491789,14485086672329862254
+93d16099-4144-cf4a-2bc7-a86c63503b5f,2361671486,671285035823818465
+15897b58-8061-1699-fb69-5d11acca9dfd,631202186,9310848860955044532
+8ac5a372-0b9c-c0fc-1370-ec74148e3de6,2832504301,7021408899654387164
+d6671b77-1761-245c-4522-7c29c2511ec0,543296368,10395674499170857821
+5ca21c0b-6f9e-a1d0-f27a-fc26a3d59ae0,1471773487,7816811044070480080
+ebc9d0f7-b922-5aa4-b7c8-25eea9869e45,2017176035,12892481370043347774
+9dcebe28-5db2-f43f-5f49-e8968b7b9a52,1976446923,1593057431389529475
+e3cff225-bbcc-4077-1ab1-4fbdef116334,2046566104,10285604983618151608
+ca426215-d099-27d8-ad64-f733a331281e,2989622764,16496641880743597819
+77848cfc-4d9a-ae14-9e97-6b4a0d7dbe9d,1904028922,14330329472922041459
+9d6b355b-aba0-cbe9-a0dc-a7bed8ea1d1a,3591477888,11562381572063991537
+440aea91-2d4f-b669-2ee2-b91ec8665d55,4160719523,1241531513983054065
+426faee9-8f7b-eff3-b55a-d34cad5e38ca,3717550052,17454551574082558832
+99ac57c5-53b5-b1db-5e06-26d6072a0b5f,4025477233,17098770276825969480
+dff23abc-d1a9-a8a0-4464-daca253d38e2,999285861,18369825387900614848
+bb7c825d-2597-0bf0-f4b4-98bef0238564,3781394250,11635932995222096837
+f624055c-e3b9-723f-4e3e-a1ce4397192e,3047935952,1243265080489752613
+83651f42-6a07-005f-da9e-3fa0a6407bd8,2313771239,12672046243276874574
+8f8baaec-8e79-14f9-b62c-174c698fa45a,3631298715,17714201835946158789
+dd5524f4-fca4-7b8c-97d2-da6d1c5f3d74,1301301836,5878166913306071219
+80f885c1-1c34-d65d-fc58-87c97c8a6f9b,566764978,17319492209438241458
+aa4295b4-3c9f-491d-56f5-00ceb65f8cd8,500894724,8159147591330407325
+a05d63ee-0a8e-8dd0-786d-367ed3b2e5fb,1561533831,8353093955340584094
+39854119-8179-1b45-6e02-21f274b45da5,2674387640,5657717905437527309
+dc9489ee-b89b-2271-ac92-aaf47589661c,2470728970,10760411651857027378
+adcee4eb-e653-1d58-0ca7-569b28d73b3f,4214023618,17823871938357721420
+6d94c4d6-9377-7c2d-c6dd-e93772fe4e32,1753812960,4617951686886096063
+97c2595c-718a-3ef3-3e1a-2625b5a281d4,1168447261,13273925808235165659
+2839306b-57d5-299b-e58a-1d66cbfbdfe8,1190772940,15436344768375219273
+39e6850a-cedd-8896-8609-40ad51141014,2159604483,26363525327533995
+b7cc6a0b-a2f4-2c9c-30f3-5e1e690fc52c,4040945521,16648223159310839962
+e093d301-4489-c7cc-6ee7-c7ef90188183,4232564789,10082879150993879612
+a3572517-f94a-0c19-bc4e-259102d7aa02,1935036625,12852413282389503941
+c84510b0-b2e0-7a92-fca0-b530900b0df9,2009574717,1491621331176860224
+be4f822a-125f-c2b8-cea0-c83904db1138,3469221377,9655405110729347960
+0a8f4428-22e5-8779-ba0e-c447021397e4,2346803319,62003671869024417
+32a2672a-05bb-faa3-14cb-80f043e2f87a,2789771242,10099137036858884443
+7acef695-cb09-4775-bfd7-0059f9ec65ba,655503514,2559749696671345993
+0fcd4d01-80b3-60d6-ca1e-9dccbd6ab5f4,1504256352,34139538067571753
+b46dd13c-1eb2-93f6-0ead-09feee8881bd,3449891811,9176247222668422982
+d6f3546b-3bd9-ccd4-ffc0-1bb9a477c5ce,1566596629,12919688119775976464
+7b5bcbd3-9618-57a0-9b9c-b5e48c676904,1069065450,17325465359308349257
+39176c26-8342-35f7-d277-e22d6235fcdb,882936647,12945957875800868838
+090681e1-5bdc-d0f2-933a-b1ab096debec,2013956583,12715212919322454315
+43b093ad-8e96-a710-3f6f-4fe88ca2145b,2130635132,2488645211180596081
+3f1a067a-2a53-3eb7-2c23-171fa7a72379,626009183,2535083869772031893
+70be0af1-8873-b8c8-c4ad-57871e63c992,2860387511,16444246619128541302
+2f8ca5c9-6f79-3f8c-c8ef-cb09c29c29ee,3200622189,9762937954171383027
+3b55e929-fad3-2b26-3783-8dfac3f2f951,3308198425,14892298095065205868
+0c07d17d-674f-1d19-2e8b-ed9711757fe7,227434445,11528518054667501235
+25555ff0-4f73-f68f-ceff-4130ffb3123a,3122752154,8383950545197910201
+feec8875-52cd-f68b-e2dd-f3a30a3c0bc6,2798178908,1231287462667681782
+d5aa9ff3-3891-529e-f40e-d10768425d4f,1676214100,4519201587098224453
+ebc60381-bf05-88d0-a876-214435cbe020,1186391410,12948820636553576920
+acc241c8-5ddc-0bb1-d6ed-ce562ea16578,3024065933,5721758139073957741
+7e33b2f9-b69e-9d78-0aa7-1e42c1487a76,3313289106,8490648293995579621
+c221b97f-c285-a0ec-6a1d-c02b2a37feaa,897129220,13585469268864951081
+cfcf01f6-febe-62db-4da7-9614f9598209,4062032191,10670379878613966793
+a2c80c4d-2c7c-9fdd-16f4-00fcea7a9fa5,146729781,18120764832825297984
+954c80d1-726a-7d1d-7496-2d46ecbc0b2d,2214836651,1604897884891835002
+1cc08b77-d4a4-d52d-ea89-b99c44fd1975,1143662421,13212750531152059513
+b77b677f-8483-e7b5-2460-149f2ad4e70e,1057183013,16948559765425933297
+9f828bec-3255-5ee5-f20a-76269d1f1895,545897434,15455216556734887882
+013455d2-81e5-6086-6436-2a3d420700dc,2188593524,15459169289804328042
+5dc9954e-037b-12b1-d149-ae8752d6a36d,1842031312,14219049598520265281
+4e131ad3-4e6f-e8bd-3b6b-ff9d0c0b2f54,1992499892,15619183404148435139
+f6423e52-e115-5fc5-7d04-c0368910828c,724933357,15863208084098847180
+02c7c0f2-ee18-6068-077b-76fd92c94b02,3813703009,14067948287234783673
+5dbde3c9-e6eb-1203-4cc3-5e2b3dbcb7d9,1584406491,5180758803009912436
+a9f84d10-5599-1a69-eabd-db3dc7cc22a7,2371941831,5575326788941735034
+a6d7fe2c-3654-a987-1dc1-bc53026045f2,3652433171,8508216198820434702
+32188135-bdf2-02db-b5fe-0a72e1f6868e,4283405895,15506192742731140768
+83fc394c-aab6-6a49-8cc7-b4358148aac2,2000661390,290069328005938205
+c05a0791-8c04-6507-389a-9944a77cdd3f,1293687363,3331960854800881361
+eaa842a0-7e23-6527-1f01-30b83fab25ee,2102424211,7969010306027055526
+b23db5ac-9612-7a5c-e2e2-4507465d46c7,622880855,3682837972863955310
+1aadfe5b-307c-4ed5-e30c-b7751e10ff47,1113878673,10220611718085177356
+a8075d13-ba04-1e91-5e33-0b04ec0ca4bc,1191203571,4084701329720272531
+450ccf8b-a9e6-af03-9200-828103c3c9d5,4047212911,2662363375684536428
+31ed9bbc-607e-85ec-e68c-d5ef549639c2,3306600746,14295987466258147144
+406b824e-07a6-216c-1e3c-d82032b912b6,269197269,1768858005091245539
+2c80c58b-3549-87b7-56f2-1191b87a5ab8,1836412399,7415673812124637342
+6b35aeaf-d4f6-7f08-6c6d-e115dc7896c0,2042674183,18213448621108225546
+a8c8ef08-d2bc-1474-efae-719abc96795e,1539183911,11557461725021075924
+5bdeca9d-f719-dd5b-bd75-7d9b3ce4bf28,148276611,10899842233990368089
+3c96620a-b997-776d-682d-3b164c3e1599,2585975591,15483283474117035984
+8cbfd4af-3e88-8c77-9276-ed558ec89e6d,4062211899,18430490366780277463
+a2721420-893f-2326-46f4-309277e42782,774435456,5451846601946994492
+7413d3cf-dcea-dd40-f895-fc6d1d3f5cb5,4213683546,5901104250242849773
+e3405ea8-cd45-1ed5-043f-aa09097fd23a,3761485870,16235563317263384681
+71705e14-8670-d0f7-41ec-af41a04af2f2,2571086821,14388819165352002491
+7f0af021-b001-4e82-81aa-2e0d430b43a0,1286124727,6597588509679278740
+77c17525-3851-cbed-e0f4-de40327e8c98,989450457,9083971655758642948
+bbe892da-0d8f-1a1f-244b-16127454c2a9,2233306046,17576190609909427809
+978e0267-b257-ea7a-5bf4-8cc1eb036710,1346683051,7433294815602961974
+fd0ad291-bb41-26cb-4087-8a776883a268,2283496268,13035378011978462609
+7e28272e-1a99-afe3-18b3-badbd3a587cb,3766947704,2829741204978696655
+5d4fbfa1-2aeb-d338-e6ad-1ae4f3e3eb44,2965371988,15802209677101017707
+2ac588fb-2bd2-c9e2-fb36-47aa5faee5f1,832320165,15286049932600615253
+fe412457-b513-dfbf-bb1b-71a135b8ce7d,3759875004,1380860414516600840
+84210edd-efb1-71d9-c0a4-644db8b10abd,4240469723,1764338343985139577
+2ec9707a-adff-5409-ae3c-7daaa14f58b2,3868469883,10838948307723212475
+876ce5f9-a6de-0ab9-6404-66e16f18d649,757947,16175159218091866198
+a8b8200d-b39d-a553-b8af-3f09c003c4b5,1926160519,8687897835773598359
+40a084b2-5e90-83e6-b528-33e25aebddb4,3204841059,529538376132875234
+c34fa580-5783-0493-f182-a19f15b2772b,3979500945,9515500230763144576
+a353747b-62aa-f941-4174-4eaa2a4bc872,3184307440,791130645012949560
+423644f5-4643-e5ee-5da6-d7519022b7cc,327176228,8473314976275634921
+977ef5e0-cc23-ddd1-d46e-e022d17c68ad,791489813,1958090165927920314
+1ca1a0c3-6bfe-5ff3-0ec4-d74e634fd4da,3296011631,15064239112781855609
+34a88c31-8c61-2be4-fec9-6e59d1b6d4bc,3234626913,8540302623846605643
+867cb771-9012-f929-f187-c026336fb07f,4198731921,11170004580184625329
+159bf2d7-8f4d-8d41-b884-b756e53c1bfe,4021393680,3883346941255509203
+ec2fec9a-781c-f00b-af62-bf533b3f47a4,3984107248,16227443636354938413
+20140f70-f7ce-b8aa-8efa-5b53dfcb4b83,2853530550,6754467959973280127
+44948616-45ab-8d7e-f0dc-6b351b360e10,1893238440,6707850020127247773
+0173301f-f239-b4c7-cbf7-93083a240908,2904319395,15145978901441868018
+0fe8f0d8-36ac-0520-7b99-1b47e4a8f211,485040578,9536546205474829536
+5f4cb8d7-5ac0-a5df-0223-f15ffa410b6e,3461884771,251470088790164209
+fae82176-c91a-3541-622a-d2039a13d754,2696657365,6423620406930816178
+99310a9c-3c6d-40e5-d6f5-f11dc203ed42,378376957,3891970260729494413
+f55aa865-b567-60a0-58b3-d5dc2aa58990,3703001254,10921533436962428673
+066b01ee-27f3-ba27-0c33-9a18a4f66099,3817129873,2737363214783961965
+9504f589-9eeb-9403-722e-7d57aae6cf12,2934994317,40548007305642704
+57d3e0e1-c729-815f-b96e-783d1201567b,2931795803,11208929859118983855
+3edbfcab-2aae-b1e8-b1c8-9e8f73497c37,4121997242,2050356907945470706
+067d5223-a8be-5ab2-d1b5-c2f807281cbc,1549896601,3327852152430712235
+1398f13a-8dcf-e280-f0f7-ecae1ab346a6,3649025513,7272276721048358405
+81b0c20f-65ce-af54-3669-51956995c289,3214978579,10720396570780225286
+2ef24bf4-a01a-ddd3-bb9d-0b4894386608,1164521242,4309732899391048521
+6a44060e-cf88-2115-b7b7-0542cd6b5859,3339335049,8854149647326919971
+8c2a0e74-f63e-e164-70de-9b1ef0f1832f,3034358082,9457264456411095601
+78f6a39f-d05e-a025-4a56-debf043ca1fd,1314459925,6662759447027215859
+36ffa301-bd9c-5f6d-15d3-624870a4d0ec,2907532216,16740511901797026598
+6637b78b-5aad-5131-bd14-851bfdcc47c9,245698607,13400794769022484518
+f4dd274a-c109-80b3-a1da-ef1ea21f8e44,98178564,10513736269439345598
+a9bac0b9-6170-d1e8-d5cc-0c5c0eaf6b7e,2328043934,6964882380459666787
+60a2fcff-5234-ed25-86a8-2a5646c9348f,403529702,16008506873447882007
+040089bb-9c86-313f-180a-0dade1a8937e,3849242915,13518078381798704849
+e0d4aa06-d9ee-1a5d-3d94-194f94950459,757679340,7744081290124089156
+ca451441-800a-9a66-1ef1-1ef0927554db,2838434794,2807082267920384646
+a5d0a62a-7492-9617-ab32-b8ba70ea6119,2500986882,1601129678374196457
+c6698c0a-5dcd-da1c-f43c-6c30f6dff05f,1938814261,4780303601122691366
+efd26c20-eae7-0d69-6202-166b918d40c4,1979755958,17204590658961360931
+c59dc019-3ce0-a3d9-e683-1aaf724029c5,2805043476,15611305731338390901
+3d0d989e-27a2-0d7b-b671-3e43cf13fdf5,36147406,17930352941759041820
+67ccf174-eca3-9713-4ac3-3cc9140bdb33,264515971,14240880782668912976
+9e62f547-7a45-9fe7-4d2c-5e1360be05da,621791970,14879711799640006308
+0475aa31-1167-d26d-4c12-27c10118d258,1522341535,9221055713743566963
+011d356a-e19c-b3c3-19ae-c78ba579b4b7,1314484110,10965853661448005502
+c3ea32d6-3130-3f66-6b8d-2c916e944ae9,1162475255,3104334412082886914
+10d5ab22-1fa7-ecb9-0c46-80cd7369a210,2429179858,730717186337545850
+ff00a175-2f0b-7e66-f2a4-538c009605f3,2306420080,14630196485398577429
+73c127af-561d-1e0d-125a-e016e78b4ba8,3487903461,6569902079286969033
+0b15d62d-881e-8d81-1f6b-87a4a79ef06f,2343982122,9744876497357661241
+f77e492d-bfac-d12e-b590-a733f1c1c3e7,4202625683,4616238157707043186
+6c97c436-9403-8ac7-c5d7-9cf19d2fd1c2,3811969669,9240566106737924351
+eb55b181-ec67-0257-9f04-77fe827c7b9f,765083364,14323190353340724342
+8b88107d-92a0-abdf-8914-b7a689c1c05e,3568420408,155108827860220469
+fc88076d-454e-cc7a-dd00-6c8dcf4817f8,3801528435,7584273549513773392
+68fbf744-87cd-01ab-8efe-ebd9c02b8a75,4055637886,10597543522249559358
+c4b545e6-9f0b-9521-ace2-08bdc70b1437,3707443585,1924707703040358282
+5ac6ff07-50aa-adc1-0bb7-aa4b79331f81,167200717,2701781085826311506
+5989d7a7-c906-476f-5aba-07ea873b8c25,756792960,13556073457484135908
+74b711a0-8203-b653-c62f-6a7e14d33a12,1537471143,5958623924896333106
+0e36d484-c51c-4404-18aa-7ecc30544963,4117418096,7283421042779235900
+050d3876-7dce-4c49-2f0f-a16b83c86b81,3986494683,4462399385819666650
+b2252bed-17a8-2bcc-cd8c-3ba360fa29c0,1842047204,7983645683847579193
+6382399e-02d2-44d5-ea61-2214776b1abe,845863930,7580120269196476647
+a40f44a6-1bd9-7446-601b-7d97153dcb8f,3834769323,14151775441048581584
+864435c3-6c11-9326-0adf-996525c43e6a,3119264717,4779792646170912066
+c72dd270-f9bc-6b55-dc76-43a942ebdb54,3354695771,14566907001863660042
+b4e78bef-40cc-abee-93a2-840357491e18,1215834897,10689759390752388464
+d6351ec1-4668-b9d1-9d35-660f63bb030d,649977196,7747664433819118048
+34fa22d8-123e-ac93-1899-a0288646d8e4,1708181068,7530106598151564091
+948011d2-8f9e-93b0-b456-328936428c80,1326443066,12524066510471445994
+b1edc836-cf50-5173-7e25-3aad49e6bb53,3564021282,17729728332831090276
+2eea3e9c-4a4f-165f-4342-02152ccdcb63,3961821679,18222354072076265542
+3ae6d194-71d8-d13d-6bc1-4fa540a6bfc6,2950529406,6852119803167580935
+b3ad0b17-9201-291a-8299-f103a87b7c76,1510522534,4247310459522990967
+57f8664d-8815-70c0-21ff-25c3ec9f7dac,1856936879,16277433399303033858
+a57ef771-485e-09b1-e0bd-1eaf6c9b3d67,2807576272,2424404910234242817
+d509d48d-8703-0c68-6673-9b01eb320060,739054131,5257372150348256052
+e6e9914c-2ec3-aefd-ff95-40ea065950ef,1831391823,432376866273289419
+b53d693c-0eff-0e68-9645-f75bec34b0c2,4037492857,118406459153836646
+07f0b463-c48e-68d0-9691-5d666a50cc96,743319258,11806818673966404777
+ef2d7056-d732-3f1a-023d-d64ce4b6f026,415876892,6764008638898458595
+2b75e2cf-c127-58fd-c738-2b46ac4f229d,2685197621,7049619437408507873
+bbb395ba-ac56-6ade-bc53-1cc07668182a,309502582,1111474972979071325
+4b3230ce-f3bf-cfd1-e25f-d0f508964ee1,501219961,17905932668522377474
+1fe5b1c8-e85b-d711-d13f-fa700fb3a426,3453490218,14313606373127144668
+42ab3a26-0c4d-a502-c0b6-fda7ba749d8b,2796862556,18389984288985468560
+3034421b-7906-39d1-d519-1b14d481a479,699709621,12863144273632994168
+521caabd-7a57-cdd3-52fa-3a640fbe7bef,3176844091,10993384936149439812
+9f5db5d7-6714-0735-6fe2-d1bb2d723b1b,2042304414,5199846645391916039
+b09e0d54-31f2-9794-69ab-5eea69bbaaae,483346706,17900571230744038907
+df32affd-b359-6f9b-32db-b2431de04b6f,205765077,8217824913836028915
+cecce9f6-c652-48c3-8b9d-419e7cb0553b,936116221,16815623764881916277
+eaacf41f-a9b9-7d32-55df-34bcc843bad9,3072882467,18301030484612718640
+716a7c3b-2323-1f52-baf4-2bdea652ad6e,2587130746,8753187213276483859
+0be4fce5-01fe-9fba-25f0-22b443c01391,3965410596,17170411370781606241
+68186d0c-dfa2-1fa1-fba6-c6f0c414aad8,2977607034,9663788820518778701
+f56aa4fd-66f4-162e-6a5b-721b5e15f84a,1574931715,2246090458155126746
+31c3661d-eb62-6bce-2532-63a829572e8e,4212273445,4992354968188646958
+0dc327c5-8ed2-7818-1569-c43d6a5fa9b9,2556261043,14723122291091203568
+df14d4de-4a4b-cc08-22d1-d9c2036ddf24,14128204,7431672494226972106
+5d8e37e3-c2a0-06a8-fe05-5002cc8dd79d,3815345091,13954300281096650685
+89f97f79-1340-84c8-5de8-6ae136e2b814,4276723086,9018422470711794708
+2b9100e6-bc4a-853a-a8c2-261bc2032c67,2775339697,12533885299505831255
+7be46eb4-b1be-3696-2d17-a16bb877bfa8,4292741976,8578692446789850354
+ebcbdfd1-4cba-f7c9-9ae9-b6aa705c8155,3596835836,7484693652056562504
+45a1efdc-6fff-45a6-fad6-5b297f60087c,2418729439,11514451621878328392
+80671041-ae87-e4d1-fb0b-e2929c199d1b,3538575781,10491876892487464067
+90e3a061-b4a2-b483-118b-a689c161106c,810312385,16449568339333469630
+c8e3a624-c194-d4ee-9a1a-a2a5b343bf7a,4220725981,5401674026204271728
+2a74e5cb-6b94-c816-2ec3-389d51b198f4,3703134126,8736230441317946005
+83153490-2ba6-e6ff-2dbc-32f0e854eb32,1103484545,95792780221711364
+89b2b30d-5a6c-5630-69ce-a0b736dad310,1261103687,3444703502855269017
+a6fa2f1c-3bc9-7052-3cd3-6c816e9a3c02,1417770186,15038388018716733104
+96b0bb5a-c941-c13c-9502-b736de04c387,3445951622,7921807819689742987
+15688085-98ae-f052-de91-4918046c8659,3078481155,12619902093965089046
+e80c20e2-cb65-4076-592e-8e7ca88e7d04,1801856336,3372544678945824907
+8d5124fe-3aa3-eb89-7c3d-a1e3697ea22b,4217539872,14511073366004027201
+15f1f4e1-30af-c90c-3b68-e70af03c2a71,207259521,4502201945310695461
+823eeae8-7921-864b-b785-cf6f8be6c284,2761195986,8895625997791335061
+e9e7088f-2af4-329d-a889-0d7c9e9947b6,4023767984,11925726046984243109
+4a818556-bcdb-d74d-caeb-a5d8d1fc6c3a,1651287397,311251152972847818
+d481e20d-1fd2-9073-727e-7c1958c0faf2,154046754,1398316664839789879
+00c7db22-856e-e69b-ff35-50f5ddd88173,3364560351,15284242045531227759
+0b591862-b787-734e-ad4f-1df17c5e852e,2825730289,2776026266715852452
+aeb7c890-8cfd-2b83-7f04-5decaa16bd35,1286157709,9472998359010995982
+1f808708-86f9-cfc5-4d42-ea0d49c61dbf,2874931144,5730723029184772889
+3c9356bd-f40f-c040-d283-d71e430a784e,2840773761,15680782219161719433
+8e6631c7-ab79-c369-f215-fbf391be05ee,3661758931,11807308501760525029
+c0d74d60-0c6d-bafd-a71c-ef0054803836,3744227990,14926146818543567371
+b6083ff7-7f98-6945-2d81-d9c8b25ee1c8,2652032601,14524047708737389455
+93a8b42f-4609-a54e-c2e2-e4e3ffd2a868,2120723543,11723589779492967281
+b83f54c9-c896-b9b0-3582-11dd06ccc18c,2312753401,17206543924572095065
+a7506108-4abc-ce05-de10-98b615532bab,208343083,8858415414062989868
+7f712d4a-3906-31f0-8fd9-f43e781edc6c,4080813482,1386167692737871842
+6dc72941-9b22-dfd5-b0b5-9ac83ce435e8,1890188524,14917491433311857534
+3ad84c7d-b3bf-0498-020b-1ef452241764,3008820103,2325133225201567909
+caf6d64a-4edb-05b7-8cdd-fd40fb8763f8,4216158910,9822766349546827392
+84a64668-0c3c-fdf9-486a-56607b563987,4156840838,9568659696319483636
+e556b16f-f922-f940-c027-5f1cef6f5902,1351679524,56128244969226175
+b12840a5-c552-e725-cd19-904115500d5b,1047654639,13956784303168159040
+2ba7b972-fbb8-1844-cfb4-410a0e839113,2559963144,5443457401868843790
+4e0c72ff-bf78-be7a-5496-7d3908e56d54,2184247424,7750351334950182242
+566fad98-cfd5-5593-8d67-ba48fbe517ee,2848309615,9516643012333531768
+1dab7df5-e750-f5c3-4619-80a3cede2e0f,456750383,9055438687574415415
+a374e958-30bc-673a-7be6-4c326d58dfd3,439093393,5427647448174855950
+867dab89-13a2-5332-c57d-b3310fb633d9,1097056533,3480724983146581857
+20901e9b-77a8-d147-e023-4164ad090888,942027844,10914631323640172539
+49bcb2a0-929b-0d40-9667-23d80e63cc30,877363814,10156675192534417302
+98ed528d-1747-1985-062b-7a0a1c435ba7,612564370,16166455434418938901
+2a24096e-662a-d565-f9e3-05a3c0f529d3,3204074320,8706782590106644024
+22dcd1aa-4aea-2def-7588-ea369149b5b8,1168425429,14811679253133015386
+455950c6-7587-74d4-a382-7fbdd7ae3378,3171200127,608081973105161135
+9edec8c2-1dcd-101d-ac56-1549a2850b58,4200246203,4442995879108143407
+246bc7d3-43e6-0f93-d4a9-7ad3511ece84,2843884209,4094357210194035764
+f2178483-02aa-8eb0-83ba-19c401a28a1d,1535143930,14947005401226722318
+ade8333c-72b8-56bc-7dc0-d3f3b845f6a5,4154530762,1526008695247509644
+11ac70d6-9d5f-82bf-ad70-c33025cf0b6a,2685224418,4394521777308638401
+eae14b20-fe3c-ca65-cb18-c9f879d15012,3356010734,7627172242578651234
+323d534f-4e15-7dcb-3f62-8f0e5c03dd82,1610409889,5709072558263695668
+3fb65417-f438-2aaf-e5d1-e86f95359b39,4202370985,9076594178255565532
+68af56b0-fad0-dd7d-a3c1-bf9da2b91aa7,819263289,6359447906896173504
+719085e9-483a-9e4a-7acd-fa34825a2b46,4114070558,13225737409247034812
+e45021f4-814f-c8b6-39c6-d8ba32db3774,2899634592,6165866507250193905
+bfdc84c9-38a9-3e2c-857b-1c2cdf5b7ebc,207430134,4885621184926893873
+87669cc1-b3fe-7209-3d50-497f2695c59d,1959131712,13585463960134758762
+d100fd6a-c5e8-18a2-9fa1-957cee697767,3280419704,13696301986927012649
+1d15ec36-63ae-2b79-9ca0-3b965b7b1266,1041602768,1054003079789034200
+030e2498-e4a7-09c0-3f22-9c465f56d9e4,876282197,1540076617537400343
+1b57fd40-fec2-f0ba-9684-74a44caec5ae,1100889900,14898997753110358395
+a0dafca7-e005-cdbe-d72d-8841601e7773,3873579008,5419810051131243479
+bd7938bf-f845-54bb-4960-deaa670f0e0e,991676002,13388857466197241242
+55b99eb3-e4d1-49b4-8dd8-ad061334357c,2076490954,9158077289875800025
+bd2d3af3-2b7f-a5c7-2876-b5dd70799fb3,1756167832,12909720348868758621
+6f66f9f9-1bc7-e722-f516-c6c5ed59489d,1067776237,14542902988006082440
+85656857-0285-c990-4e70-c95c2d220c14,2425420755,15447265195900104703
+5a29e1e5-0f30-85fe-c977-f4691dd1db5e,3031738300,10053087764515940678
+8f270ed4-4208-d1a1-7fab-cf7142ba3273,2208415050,16939030427197397133
+991fabcf-1ce2-b6c2-63c5-0bc6c7213d96,2069918826,13594660954138373805
+6302350f-8ed9-6da5-e26a-0cd84f497d37,679925868,16809610519278825862
+73f34bbc-c2cf-d731-6f45-dfd44655aecd,464101913,10615925254994338638
+3fb4ac71-7ef4-510c-afdb-cc6940ef1cbf,3881533754,4830198686132934873
+668c59c3-61a7-3982-824c-c572479e8508,3334429662,12922492933845593922
+06f84900-f756-e8ff-445a-f4eb6f8e370b,3542672859,2668052485763982441
+f8566409-f16f-c269-3775-bcf45f093845,3149382927,8138514529872728871
+a94bedec-f363-7207-7e18-3ce2d51f313c,4045317199,6199629852839984311
+28300082-276e-bee5-19ba-b24d38815d09,3871278202,5374929645000962339
+935d5a3c-4e91-d929-3c8f-cace900a46aa,435235684,15762736474689984844
+37be860c-479e-0969-c8f8-851c1cfaa98d,353974657,13341341123821230729
+4b6c9cd7-20d0-9ade-2bf2-d0e7ff1bd6c6,4227154423,10073597545164672099
+acbd9459-502f-7f79-85aa-fe5e478884f0,2040189728,9213218193109305343
+208adcdc-99f0-cadf-e765-4b70290c7669,321246139,10122914235535708170
+4a77295a-feb6-a7b4-75a5-a8860555621f,4126111401,2566576026476239201
+47e93cf8-f914-71be-033c-e40083f3264f,892481801,7268867412367051620
+13697bec-3eed-97ec-93dc-36bec76163f9,1608255553,5104763085695018154
+0d593709-31a4-2e93-45fe-bd7672850905,3968537243,14531798804776201967
+d82b21a0-48fc-96fc-ab84-ea60058369d8,3226035249,2687822545512718003
+e0644395-deae-b266-f110-f66ad4dd084f,4067138622,13526588920431989774
+28fac326-96c4-faba-d2a0-ba86a5dbb80d,2779474296,7283556395057758578
+e046c3a1-89c9-db7f-f46b-df2b6f826e9b,3808860922,1888588378825290333
+a02f01fc-3856-a792-6c48-d603ec02c160,1898359424,7108841197844701663
+f9ae46ea-0f9d-c480-b46b-48bb5fffdb86,99079300,17326429710853486690
+27eda68a-b17d-65d2-f185-4da7f1213e5b,3380571574,14256291544907683889
+74137c77-6ecd-8e11-50f9-6bc8ac246758,1770814679,8832214195106191636
+bc80b173-2c9b-71f5-907e-2d40a4d6f453,4207283149,2140505692713474113
+ad3b266a-16b4-6970-a169-318cdf4f0d84,3256595350,5162329767990220489
+c27ec6ac-90c7-36c7-f04d-b6d591899935,3644466795,6733978754366846213
+84ccf33f-90c8-2645-7732-fb1d7b744e6c,351639733,9053068028577617522
+ee399014-4358-968b-0337-70a8f5919446,697619828,3644541410521466044
+0b3659e0-97d6-ad6d-bab0-c34038d56ad7,2245500012,5035332892945392183
+4f4c5079-9e9a-7893-2bbc-7be8e0f97883,2812738362,13528303794344266881
+fbb4b1f4-4ff4-7ae7-24c0-e13216d7cec0,480883200,7633379397406618479
+90a53f70-4bf3-96c5-7d74-379f6d7847f7,1337847354,1229417801072472606
+a5a06c8d-f2a9-db1c-854b-a677e837a383,3863165550,8203799469181265614
+77e9a710-184f-507e-e405-397543a8f556,1336876274,1008408081689304135
+8726ffaf-b364-3b2c-0391-b122d8eac15a,3507258708,2641372563664635223
+ed1c67de-9da9-99c8-1fae-91b1bce97a81,4278731357,451405502458042769
+89b33a8a-aa5c-bca0-1a03-d9a4f84c1881,2032546682,9084321935826457772
+c60ec9ab-bd8e-3220-59ab-a907b363ed2e,2442805436,1246616850901774434
+0ad8a3e4-333d-2b5c-3978-dd6f7bfd8035,957801502,2427320651881963256
+4ad69b19-df5f-325c-3c23-bf2541017753,208098437,5480460782309615561
+1c5a5e5b-c54f-976b-f829-2501bacb5204,2600090912,501016490651118601
+6f28b09c-7b27-1a1f-e57b-704c234e877e,616154894,17380188467704009106
+0a9575f4-e450-44ea-e484-2eb70e0e62ef,2767714722,16382743299920447848
+71a0bf92-78c0-1d1c-db20-13cbeb048008,1605390773,14334323156606703816
+70ef40a2-fdae-b8f1-6bbf-d8f99ce015ff,2398778321,8402856078608686925
+60b29e9c-c7d8-8b77-7420-d13f41b7e0cd,1111883913,12477443468388399721
+b6d082ba-6594-523f-8923-ac982d16441e,524720449,13961608302248948807
+151203c4-f249-2b90-f73a-fc4de3495d7b,514005447,18347161791831839861
+d48a91c3-16a9-2abb-33d4-77e2b2ea43f1,4167500712,1635994463768424153
+42581c26-eb00-45a3-0e56-6b48d6f68473,1618754029,11028608209916034780
+66c6fb2c-8c8c-e0e6-5718-888679b23aa6,424845631,13839195326373294012
+d78f5f5b-e9cd-5f92-926c-89ccd2f4956a,950584801,7544751479289300261
+5a6fa53c-e8e0-8592-9fb9-05b02415762b,157711806,12639200774555669114
+2cf3b784-d331-2034-6f3a-9a20cf2b843b,2527444515,9768895048380016578
+4bf283a9-2ddc-4d0b-3bb0-5142e30e831f,1410335837,7394146622124857330
+c6beaf2d-3b5c-4aaf-8444-635b9b170ebf,3537771479,1167854638445008097
+5f84a858-659a-32a9-3589-4511c3b46aa4,1664167846,17747921394135297869
+a25f4ecb-6a52-f10f-32e6-a763c53d99b0,794425551,11262008096564556869
+099d3657-e35c-dbea-22e3-e0336daaad0d,66075625,14395130099596489540
+e8bd5d1c-bb2c-b534-455c-536eda85df0d,1761903457,7613402928092197867
+a39dd0a5-3cb6-b4ee-ccbe-317f05d763b9,3977484679,2564415128447895154
+1f96bd8d-7177-0bc3-5ba2-7004d9b57b5a,3849485380,12870741080266523671
+ec7e7d3b-291c-f552-fad5-c8c533d72456,2041938649,2486076190614241458
+6c2b97c6-b64f-e723-7d65-edfc4adaeee7,762594455,11059915574142136931
+9855faf5-3561-8414-b4e9-ea7c998261c2,2494741375,15441661335325648493
+0ab33caa-8510-81fe-539c-2279b530286f,1829413583,11702044757408252429
+87a2f173-9aa2-5ef3-8213-4d1cac3741b8,3961836004,2429613717773999817
+27a15152-eeab-ce09-c757-1ceb4a868dde,2573400233,3261748357040588779
+105c35a9-0df4-173d-6ad1-16753ae8db20,186950586,13365093764571128346
+45664d6e-e941-95d0-8989-680004418008,1466047243,6148040458548659780
+1280eb8d-e5d3-37eb-0e3f-d5637759d50e,2096118351,5564752036818442747
+90bd9f56-9743-772a-74af-f7802a2deb81,1988097748,11624701686522332255
+3b2600f1-2d6b-c22b-dd9a-66e6b62ba2e3,2857376194,5639449960936474223
+7e405ba9-e9b1-ab63-ff69-e4b743043968,2537871677,518167474504299601
+10769def-84dd-f213-71a2-e93ee69b2834,1495297366,7743084057042397590
+b71de874-1eb4-ce0f-0c78-a7b7d4bd9f9e,2380334400,8007676593278693457
+5f90712b-afa2-9cec-56a2-ec85074e5997,453230444,12751793412172212560
+14bb3c95-1a50-8563-76bd-d47708cd01b9,909756085,12196069089311649609
+9524045e-2787-790d-636e-e6e7a3ba0f8d,1481036519,4746163239447312306
+b31d1edf-3380-62fc-f8bb-a9964f841c91,1140344357,5764637397178051039
+694d7a98-d90b-12bd-f3e8-905cd14848f8,3059904373,5278885259928435233
+255ba43d-e3d7-c60a-3354-ee90b2b2d954,1529878013,13580770421112619005
+f4383cd4-7100-90ad-3d32-eb12f942fbb1,1180100500,10743445307684585237
+937ee35b-29b8-f603-e3c3-6ce67427e17b,4127580495,1649275576763949656
+808ee756-0f97-d3fb-ea67-b7c64a61c418,3874624390,9707247559488995878
+ef518c3b-7bb6-aaab-b100-bf39fdebf0bb,2005409452,8999771379801236123
+79d34b13-8ea4-f5ae-9544-36400f4e442a,902698498,2012998640212015557
+5fe5380f-cd86-ce11-cc0a-19626047b226,2169736370,10978020932351374546
+235c182d-1a89-d45d-a13a-6512f10011c9,1881909141,667200827808830719
+8231a7f0-92ec-4086-11e6-fcf993bb446b,2333141709,16922999979373813541
+e7b824bd-a336-ff9d-48f5-5be2f0f63375,303744737,6270095495785549779
+d7c709ad-1c56-6684-dce5-0bd99cada630,47438712,12302145444328943029
+6d509d00-2b61-36a4-97b4-37ffae49e9f5,3884673497,526463670220918568
+fef74bf8-3198-77ce-0f3e-54f556132399,2310154337,9515074832828959720
+5e75888d-4f47-9477-ff58-297df402d5dd,43143137,10916861756503049416
+84b7c2fb-563b-30f8-4a6a-fc72cf8b5d43,4083519736,17629560927374841940
+83b5ac7a-38a3-3550-eecc-9be3bd07c690,156886858,1715379898402369751
+4df71775-b610-8e86-1850-15c428d139c0,1852065944,4850693936991805023
+539d2f80-f619-bd6c-ef22-13af7e53b978,3140005184,15062279076495027612
+40bd97f7-cbbe-19e5-ffc7-c0e7a3e73244,4282868305,17510959618750657741
+90ca4216-5fdb-3c21-38ff-cc88609e659c,3482525668,6956171071054751732
+2ea30345-3e16-c2d3-e208-4ddcb282316b,3107132950,8306675176727272825
+e398d1de-7e07-9454-7ca2-8038601ddb7a,3287029852,10188945110057973503
+9d903124-5619-8173-b7b9-25353a91a16e,2293583893,14714855812100333424
+8f9a12aa-7b39-7ab4-ebd2-e9dd0ac0e95d,1386156419,9296350435175858907
+1a8ea4c1-14c6-abf4-063d-aebe57c5807f,1762556752,17474503987551992222
+e4178cb9-d3ef-14cd-2f42-eeae35fc0e16,3451067343,2337992016572706503
+66a09e17-9eb6-9c7b-b09d-f49db047346f,3847715193,4864631133762590521
+855acbe6-50c1-bc0e-7f8f-fab8abb7a220,3846613810,3746625462602031501
+e5acb224-41a2-aa14-83cb-ee0eeaba87ae,2436909197,14677209862881428869
+be96d464-afcc-84f8-d0d8-6c69cfbf7bd0,3840589150,1870625822042463764
+961462bc-d9bb-0ef3-8896-96990b400b40,3897360297,4668289646054643248
+bfdb6a41-3b9d-cd74-2fe1-f57328bc6625,679787092,13995272599948884094
+cb21bbf6-083e-5c43-03c8-ff60bbb1d2d5,1528592178,60042501535764432
+745d0526-6b67-dd87-82ae-42977350753c,69711,13069329112651592427
+f29b2b1f-62da-20e6-43b6-3d6074906df0,1608861160,405922679649599625
+a4b33632-57b2-5be7-fca8-b3f3268838af,3842659339,18106467753147057712
+971070b0-b6ef-7fc4-8c6c-738e6af26eec,3502929064,6950205730899757764
+e8d02b97-3577-0b9f-7c01-d4ef578c712e,3276572417,4321989950265968884
+4e426f68-25c2-e59f-6165-c31f422aac54,610579906,8180384050816233516
+0b578843-37ba-9083-4eab-180f6c196c3d,1197339355,227226642312893571
+deeeb68f-5642-2436-a164-6ab7737db5c9,3482130562,123622443232096122
+29fa78e2-3583-8a98-5c7c-e85ff0d15b40,3487368918,204867192647244614
+07f4d575-0023-ccc8-3b5e-5e6d0ec78317,2224018735,12453554550236398473
+e2f0cd50-e17b-0e1c-c0b1-59cf7bced377,90640118,9019575242274379052
+545f2d43-cde8-9218-65a2-24f6a8b52b1a,847449537,9044677778458095055
+159f42f1-742b-c7c1-3965-669cbcfd6d12,610149689,5592190771168752525
+e5ef5b9b-cb44-3b4a-7531-634f2899e56e,107391310,10180411397274927388
+3d503e7c-71c9-4737-8b8e-7f484640b3d8,2698647127,7006221033584244976
+b0abba41-93b5-9942-7464-bc09d588df62,3208044622,16918440668225906454
+d34d76a0-d221-113e-9d6f-d9a1543f89ad,3711337047,8900286772635263178
+2bf576b7-6d02-63f0-55e6-00f0febffbe9,2679821092,12329946370868159359
+a79b1b77-c5e4-4322-0b36-fc590ff47a52,1730336236,16494950564774108315
+a2d18c50-1be2-9dfc-bdc1-0a63ace0674d,3431894126,15680749196243035132
+a4a99ef6-23ae-a731-4b6d-2a8c72f290bf,1860330605,13762686117245721238
+3bf2fad5-6973-d282-8866-2ce0d6370375,3742421334,5306914889790244109
+afa979ee-ca53-7e06-5c03-ae03a7b413bd,4151481703,4081388326619282441
+a55c40a6-4a92-305b-74ed-6dbdcfbf0311,1444500763,9301046180481660135
+5b8d1e5a-7042-9e1a-8154-e1d8b24d43b5,3403477267,17753775955494428227
+285b31c5-abce-d1bb-6603-7988f40a3671,1286162267,15119229726935823974
+8cf0427e-47e6-f625-e5c0-49cd65829428,285188834,14497642061417974239
+2119688d-1d8a-b2c9-b863-4159f85c2113,2389718079,10941531486540389675
+9230605e-50a8-1a27-7528-dae89ff8d108,2986782185,2187147262755740988
+744990ea-040b-6ac6-a8b5-66fd2d346cb0,2586358999,7027697788187268632
+58809835-2506-c713-79a4-720c74d313b1,231138160,8545058718439119620
+0bbe1bd4-3851-b008-432b-7827df93d9ed,2789974366,2222858604838642471
+7ed51ef0-cbac-38fa-72b4-d41df045d6e2,760649261,6279089932325401320
+417dc4df-5fbc-9e1a-d7d9-982c84a7331e,3721097673,11587590116866195770
+b2ba18d7-dcbb-0d04-cc1c-f23bb35a0c38,122107642,17093797861036580391
+83b6c9a5-e14c-8064-b4be-1aa2e06d9672,808349664,2634942764622598835
+6df5ebb9-c888-fd75-4664-6e23cfaf95f7,3751014737,17944924717905069106
+5b9759ff-5cd6-aec1-fc31-34d6b19b460e,287502227,4740699139920674204
+205f92bb-bba9-b4e0-b4fd-75e68aae5a32,2820656805,13030387516650161955
+741d363f-d7d6-fcd8-2e7c-a98c829d6bdf,2247432375,14728463584390600929
+f15096b9-c723-ff0e-ba47-c7b37505f9f9,124616744,8600405473217049573
+74a22dbc-958c-33d8-40c2-46f10a218cec,192265509,11742978568157401473
+fba6756f-590f-771a-e177-ce7182182851,848113785,17074540732576833908
+c25906a9-90d5-f813-eac2-98b33c5ca56a,3723479780,2089549670498810012
+85c33b38-01cd-2335-08d4-b3d499303e60,3483592490,1998954204621362087
+33641539-f3a5-c894-a57c-f980263d9121,3487295101,6675258995670879588
+ed3bdaa1-a858-71b8-31d9-4256954aeb24,967722768,6263198790822238161
+2b35b6e5-e260-7705-a1a9-d0e5a196406c,700010420,9540293110025593308
+2d81911e-5df6-483d-8013-975add35f0ef,504563554,14726383426171041136
+4455295e-78d2-db38-c962-a0b3c8ed98cb,1677191900,9801758525558220533
+4d6f550f-0c11-a82f-a2b1-7edcfb4d19b5,10913921,1171867965696642088
+e0a169d9-34ee-fcd3-ed7b-d3de8eb951ac,3621087056,6903980201243269310
+b28b9b0f-8ac5-6a26-d983-96d7c71a8eaf,1473516374,1327643302839192571
+c5800f56-9721-3023-e43d-0b938671b44c,3777884188,10626952416734157556
+f6983739-72b3-59d2-b9ef-c0a08a1eae74,1509166045,969029588915417159
+6aed932f-7a6e-cec7-1145-f66a6e2ddce0,1073437457,17325835100959786018
+d526ee35-bdb7-1a39-b1d4-d1fbc845cb94,4157009469,11549355870124364159
+e7287bf6-30ba-f840-28a2-828ab2def801,808553236,5398996682565387573
+5b700d16-2a8d-92dd-8c88-f66336f2b5ef,395472315,4785442377871446313
+4b1c76d4-3146-8658-e8fd-953a0a07de64,3642674504,6819551265715788245
+d17a3395-2a8a-61ee-b860-a1b5e4fd5de1,4084464622,15210735727346992431
+8c89f9bd-0a4a-5213-160f-7ac6fa33e3f9,20589480,2935179103061985762
+618119cd-65cf-515f-5cc8-be7868e442fc,649938785,10256906779824407489
+6a34e3be-cda7-d021-8455-0f38d097e0f1,1391791361,4410489524651851826
+d328c40c-7326-b8ee-341b-ff6c9d0926fd,3320615172,15346354050757811285
+ca0112cc-966c-cfb5-2b06-24e13aed0aa0,1413835669,18171428454238391750
+168e4a1a-7e14-1a2a-a60a-204c5cbf7d79,2760662251,8835987633797054344
+91768f77-e859-98f9-697c-845879eefa91,2947252729,13469125585754942448
+eea8c85a-8cd2-4d3b-4714-4bcffe2fc641,1032231720,6870522281567084923
+f3d4b284-77af-d0d8-7cb2-e7f992c35683,1848550036,7444088785618056907
+4761532a-9666-47e7-2217-7e0d1f039642,3600455809,16563962026411625601
+3d2d4f2d-25a6-779c-4af1-e77455fd96e2,4138538743,15036385416025606858
+be15ae05-e79e-ec4a-a537-735e77a90ce8,3834604561,17364578742805884991
+5be8e0c1-38b6-2e09-8ab5-cc752da07acb,1109594820,18045688033918912903
+7de28c12-5adf-9c2b-87e5-0ea56d701279,3164772153,16006831247080638002
+aec410c0-1f29-0431-1a1e-6aab29d74f91,273997182,16813936372990836067
+972d2ec4-e2c9-e8b6-0649-000a547c798e,3040344797,10240155344417963018
+e6aed269-cd99-2928-a286-d4348177fe22,671961811,5495743314246519214
+acc68012-ebe0-6912-22c6-bbfb47129890,2716248678,14194940911065084716
+edea3a78-58be-d096-a43a-f1c76d1e7b0a,1750038543,9839745358420730570
+47bf61d2-6707-c3ba-a4a9-cfff467aced9,433275678,6229726153451744639
+6466666c-9c3c-5b1f-b725-51105d19315a,3430498087,9365965692683471900
+a7d35598-f762-f3d5-ad34-b26110a2f747,1553891438,3722478046080879035
+83e44203-e990-f23b-09b1-e437d0fd0e2b,2489266179,9190089525199085301
+7601f768-bc2b-7bbd-521d-350cd38bf130,2381314387,4464115358583202810
+4eb208a9-de36-174b-1376-d43a01277709,102417726,15941557661555468154
+685b8c04-9e29-8a85-fcd0-b37a6310cec5,1890180791,3767115286292690521
+27011cc9-6434-a0b7-c71a-bac77784a302,1844726934,8694672063018661927
+400b27fe-eefe-8cfa-f76f-cf9ae00a231b,889944709,13025618131069390781
+81a6c6b8-e14e-330b-d2b6-ca55b44f0ee7,3633156830,13586102570461423748
+77a8c2e9-f046-b264-b7c5-6843072e5168,2899749299,5118655741753427595
+ca8801c1-d3c5-e49b-9934-3a5219eee9f9,2817194213,10062514663455677091
+00f22317-ac4e-f42c-924a-265ff414c7ec,1677002815,2336956117394905832
+2da5530e-f879-5953-8cb2-cf1140c64d5e,1182167136,9785689468382270697
+f0003936-d2e2-2f6a-fee4-7a51015ad9e3,1534108137,17088707342537575850
+fd4b6a67-96bd-56c7-a54c-656fc64e44f3,3394023463,6856972882107593482
+f68388e4-7e01-e996-ba4e-f2de3906c93f,4082638749,12452851024594332502
+ba298862-b635-e510-a45e-4ae3419bdd3c,3498278583,4810530934932592268
+c7f572ce-e20a-2f18-88bd-d6095d17b7ae,658644489,16288268141103675791
+e3533c7c-8e8a-e072-d153-ef3f52e88a25,3774634936,9900473054054847358
+e550d37b-12e2-2943-3621-35a32ad986fa,3889316762,5945915802919632358
+ce3c7a09-dfad-eddb-a4e8-72a31405c424,3877157970,13593295569644294272
+48ee2c34-2742-c00c-7654-7139a7bb9096,3039103414,12859999380505696870
+e34f1999-21bd-040a-8282-a89081908ca2,2554646525,17877324932948475234
+143c469f-7960-75f1-707c-876d995b7113,3517194457,16207470967426106114
+714b7e54-1cd4-2b8b-5784-c6a307c47785,501962454,6771782058023999201
+2f35de7a-1e06-364e-0863-65065aa33727,1455614174,4515599312111360166
+2755b668-1d8a-1852-7918-e9ef23f16f78,2338465149,3854945166298747351
+5a07367d-1568-738a-e434-ca163f12cc35,3804555322,16677578100308876269
+9043fb93-e135-15ce-8674-d465a78fbe59,2327791387,2390234631175831194
+72a6d74d-8ec3-a06c-1188-4fee4759691e,74216092,9193288423735872798
+f1d4f59a-51f0-8e00-3bac-3e70ece7af1e,220260032,17876788717774149594
+c5aa3731-ae5b-246a-fa85-8d274d4b7286,1301078849,2585363059746425370
+2ad8513e-33c2-2e56-f9b5-4ca9ebb47fc6,2078149126,3146621590991146386
+927a8a03-c29c-51b1-62d0-9e2da98a9395,516585966,16554514034816761630
+47592329-3c1d-717b-6366-f71256cd0bf4,3187224890,17870690784147512437
+c8a03334-386f-be35-ee8a-1340d40617eb,1633880402,12262881866830240693
+20938426-5aff-16b4-ed5f-8baf4b56d84a,1965624749,9359330352561236149
+939ca7b9-51bb-4392-2363-4050f05de7b1,1258988520,10582298129400690451
+009bf01f-f1c4-11a6-f3df-3ab29e2caa84,3858500619,8241514564940968491
+40fefbfd-48a6-9c31-6a73-43452b0d6fd6,2310080158,2109145223160162501
+93e9fcb0-5c4e-b3a5-a704-6c71efc0c82e,567024497,26098609370072462
+f7865f9e-5224-5616-136d-65929cbaaf85,2014072886,15794527200580532194
+6bc7c769-b928-72d2-84e0-0b53c07af33e,8769328,6828274395459750502
+1a12daad-75e7-8be2-b12b-b0053e2ce7f3,3972330926,1182820022060388870
+92886ca0-3c0b-42d0-2b4d-e70b4f2b98d4,4056413278,667010963917823715
+57f6df8e-25e9-5b65-d747-de0294a615e3,2699928502,31024446522079571
+4bf1f647-3f34-f4d6-8f5f-c7edcc28b3be,1476804066,5957395603170973303
+29d5c39d-3791-86c8-4db3-dad14f1292d0,1012049238,883652865396642037
+704d50f7-cb69-e173-a1fc-9fd1905985f3,2504418505,2222058777963198487
+fac557a2-b333-850b-0fa7-54a4faffe7c1,486298157,10052113644879954996
+e2b0b918-2ac1-069e-70ca-62978cbb0047,3004345893,12913129858039413314
+870f6ac7-ac03-fedc-be82-408b5f33ab18,3401897952,2359687510823534642
+379fcf6d-1e48-f370-59df-c1eba2284525,2096224047,7127587687552748302
+44aee7c3-1cb5-0162-fc71-6b163ff9ff70,3392528713,13545197957629566818
+e3c12c13-9126-505c-4ebd-d7f8065a1168,3054594938,1691960341368903452
+11719795-5a42-8ab4-7313-91968f7b7fe5,299264225,17982488219969824055
+05763c03-0677-60ff-7da5-0ebff867119a,1148846831,718636738347924151
+5486a3eb-ed5a-62c7-5fb6-a00787befb29,1224086058,13703317855948888093
+26df35b1-1eee-7311-2415-35028693c6a1,224586680,3955755466447799367
+cf8f368e-04d9-63bc-a288-f29a620e95b6,2305527227,16174979255874940042
+d3e3e5c5-0f0e-3331-cbd3-9a7c19891c01,3105096334,12460801276101374635
+f1537e8e-9fe8-f7f0-c165-59fc9ddcbaed,4028082148,7450467580069845349
+b0bac2cd-4b2e-2ba6-59c3-50cb9b9a32a6,3954172516,12224246507309078710
+277b1f2f-046f-2e42-b9f1-a9a4ef6f4794,791003967,7648146846959223283
+3b6ffc5b-eaee-2072-e064-9901723416dd,3727888929,16006867662882853510
+0e71e5d0-a44b-f3dc-6411-8fb16fe2db27,1933243502,7814744464457324960
+30f03672-95ae-950e-f6c9-b2b1237186e1,1407866626,17992407434354885343
+44aee4f4-fcd2-7b55-df83-5658e3361ebc,2380012308,6865088508751838699
+8a3b58cd-6a77-6245-0325-7f01959fbf1d,2075766317,804567811508246521
+3d9f4aff-0fa5-cc9c-d63a-8138183162bc,2488003229,17786938827032266297
+8f0da44d-d224-f054-9507-edef6089640b,305376677,11195690768780411677
+82783867-2261-6504-f630-f37312e912ae,833600470,13132009382510797291
+554c6a6f-71f6-f388-4be6-9b83ea074d25,3584999840,2285762974833751594
+7fc798d8-1c66-3b37-c5b6-e4d82261afe5,670591301,8661174072146701697
+0a8c01e1-eade-af62-560e-07ed64631f8c,871277823,12759112235678295530
+e4fc2173-8d0c-2574-ce46-798c5608ff31,2836573837,676660160312583764
+6f37a3b5-1ebc-d3b6-1e8a-b9afc854de9a,2133968912,3435157313347017597
+579c7ad6-d20e-51e5-0bb6-8e3daf687c36,1143353421,9704148387110906039
+2f5aef7d-63d2-3784-bd55-d4286193b758,3087745075,9250092830072820222
+73c31b05-da59-e964-9a82-b32cfb0614cf,64853665,5811740178566109954
+713115e1-432e-599c-1c8c-248be043912b,659057579,12667808491687730218
+45122074-d692-5745-6a09-5b6cb2f57b9d,2558475511,15818096655240606282
+97864172-727f-d17e-cf43-6276f5093e84,3811188507,1531871251974354107
+21df907d-fe93-61aa-a7bf-7fe548e4a6a4,1594885262,17790250152653320485
+96528bf6-7bcb-c24e-5f97-079ce743a67c,1593872363,820954757406530871
+a66e859d-41cb-cf65-20f6-497dd5d0b44e,1650323512,15712871170226456598
+38fdf9bc-d44a-a96d-72cc-ec3634753d36,87956507,9122003139803779766
+6b5287af-bc80-1cd4-62b3-d75e6d17d204,3511930907,8615299568725142937
+ac8d7dbd-d55a-58e2-e685-4310dd79f02d,3441153400,13462962302479953473
+836aaff4-a96f-8ef6-340c-8a54d2325547,2226413122,5014818311943527507
+57429b19-cc44-fb76-82f3-c33626706870,593159518,15923886266668354165
+b7716407-7209-01da-d8d3-0c5da358d304,2661105370,13792161419534950932
+8f2d0aed-0afb-a61f-1a6b-8745097eb074,1748232269,14051770157927184062
+4cbd8823-04e0-7365-a35f-b5523551e4f1,733674057,2091388752504572211
+c9de0aa0-39c3-763b-0978-ea523a6ff787,1891242983,3699408460829303430
+44654795-b2a1-c91e-6396-6613f44efe05,2001057493,501620310125674242
+1d9e79eb-5e1c-e6bd-db30-4e39dfc36360,1229288425,14371483788537342373
+13b4d219-a9de-8fc4-25d2-ff5376636a3d,1668900214,3527417253701047586
+182a0ed1-9369-1395-9597-d1e33636f06d,3077014645,4437683911757715371
+80a17787-9a8c-7822-f38d-c4059a119e09,2528033475,6346601438850419202
+322af11a-4a29-81a0-9358-262c151604be,3780593480,5994808390399961891
+f1407d93-631b-189f-7a6d-89ceb642129a,2858057141,9292681189138685080
+52d97c07-f862-ad17-c23e-384f6d042014,1141110871,13276751738264157523
+181779a4-b1e4-e421-f7ba-9c620d122814,354563906,5704618748829106188
+35231409-8d0c-ec30-7388-3b98f35bc520,3470176015,4193608345331415050
+2f9de233-a63f-5918-d326-ad4dec6a58f1,1384327277,16987628793600694898
+93947258-b1c0-9319-a5c1-f7fc61706c06,1050690188,12159239219310311457
+f4d626c5-8b4f-1881-2473-68a99a2a928a,686812419,16611889803798909109
+62299043-26fb-0d5a-2be8-a22af2d34fd5,2408647734,13358980948483980697
+8416fab2-29f2-15e7-7afd-0095645f4ee3,2851014897,13350905249676057417
+7f6e7013-ebc3-1a0a-72b1-83b384028812,3758780115,16800623888522168027
+60517366-b491-5ece-f5ac-9267c789d241,3594566394,17841633837819972917
+d3329818-9343-1644-9075-c5b056d8d426,2145913997,785942705814198259
+64bcf43c-5443-7542-8671-54935ed6b92b,514317627,6317465617103819428
+725cfeab-01df-5d80-18d4-a621b13530f9,3333612483,5271174833319877613
+e7c627ab-2c21-6a3b-c206-591d1c7eb052,1823928783,7873626788213050053
+68ae9a36-367b-ea6b-2d58-a15fcdcde7da,3742777655,16283880670671571446
+abdf97ad-11e4-4f2c-9294-4497c5c01eb2,4086170174,14064459157674861995
+a77da648-12fd-e0cc-5896-3a4e8be1f4bd,4033577790,11522052654907839155
+a9fdb9f0-102e-a86a-79d8-ce17c44f6381,672024515,12839587168407999259
+86633cea-a545-e97f-3b21-b7d597e217fb,850530979,11231017877345913091
+8f91b79c-a94f-6010-d326-b0be41ec187a,3722914058,217539705781242809
+0d30d290-efc1-c349-5691-3c182a65ef8e,2243894716,14098008463926277515
+2a589cb9-5966-4472-f08d-c4de1a72b3dd,1293289258,5056942030084062182
+a9c8c8fe-dbe5-141d-bab6-1acdf915c11a,4003573013,16401482769880566673
+3a8cf3ec-4fa9-d28d-72b8-c1b18b2f08c1,2552413594,16053457596048220062
+4a1a9cbb-ef7e-720d-612a-2aeca9631ab2,1703755575,7816686359973799486
+61665a75-1fe1-4048-6089-edb8ee6f59d7,1587757502,2206988466234039105
+874ca9fd-a67c-eb42-825a-17364263e672,2812778098,8732193583924446975
+501affdb-6965-7968-53b9-6773906dac26,1477019225,9534959347501231735
+887690cf-c1f0-ebb7-c9df-164e29e2ff6c,1347875644,3052151017708669356
+524fb31b-86eb-c1c4-d792-fe9d9d276750,747843758,9485789599867850572
+5ae01b56-2646-61e3-db36-f5bb9c936c85,1146965843,11796792613172334759
+ede75092-1032-c0f6-3919-93a0949f2bcf,3360515939,10930233738197912143
+506bb4f3-1af4-1625-c1d6-b190e1fa96ac,3540919694,7255825589522113583
+994e884d-c5d1-1c15-e53c-57b3cb5fefea,2697741564,6027823337381094547
+8cd07612-1a23-a003-0551-02b26f843f9b,3817861451,8239876394333915207
+1553fc8d-be75-7cad-0ae3-e54915d4b9ff,4001564263,4510973953041529277
+4e75eb29-10f7-739b-ec10-86f24b8857eb,1194065355,6727112676953982118
+34ab710d-8901-d960-2509-a877e09d4701,1354925511,11194717529128790979
+4e49623a-02b0-a131-9e84-756423f1d27b,788132934,3517590296441921064
+65a755a9-a39c-e116-9d82-a550e80b7583,1154414261,15724541066801753180
+c3b03afa-82d0-6f0a-f46e-09d97a873b45,1360257270,18303106131925937509
+b59f6a51-72f1-8fa7-ab37-1a19c8500969,3022207443,2238323198342234116
+b99be993-d480-88f6-65ce-8db4a994d33c,304223650,7154438883042814849
+a8bf7ed1-b5ef-caad-df17-250706861a6c,2779012822,17126110855843890618
+2581e247-bcd5-ecaf-563e-753e65f5df8e,3047957370,10920605035698834638
+a35eb2cd-8ab0-60fb-9093-2c37312c21e9,2437229577,15718900600904023601
+99ec7f54-dbdc-c383-7cdd-75d739df8069,2460131784,4522684377140711091
+189bcc48-05b5-ab1b-43e1-0df453e9241e,2681298467,7955873052246301633
+6a9483a7-a102-5bfd-bc80-39c7ddd789c0,1935425878,2616391248770765229
+03652e0c-4f3d-56b2-f986-93349c9ad2ac,3819924954,296504578746466414
+7b85d729-2c4f-2c43-91d9-2f5fa3becfb5,1688952232,2173303286065711482
+d78a6f15-385e-8c76-10c2-9ba4d1b87111,3178653842,15920834303796503816
+46265013-3cee-ec4e-7180-269a1fff9bc1,846583094,13282890158524584652
+f4ce0252-ca2e-1764-1288-bc82e517deab,2066470845,12605424644485695490
+2a0aa589-8872-0bf0-9b11-88e06db06d2c,1497931994,636205559127906257
+ee60e36a-d697-026f-c78e-428d090ab245,51414007,13084675727507455494
+ce31dd6a-1133-0028-adb2-bf18544a6a41,3925528007,5698584912664971082
+86ec34e0-73a1-9d27-e211-fbb0c9e16992,2287387378,9145012835619409253
+157753d0-21f3-3e36-fb21-7deb682da424,4165241523,17708707327414444300
+e14d384d-9f5a-2363-b882-f064f1d104f0,324004119,4689382571700979170
+be6b1bd0-41b4-cad2-92ae-815cec96dd12,871068606,6122570819347663554
+877d4d2b-105a-e82b-342c-3748666db816,4050233766,16799743694433290241
+25ca119c-983c-8733-5fc7-e33cd1693c72,4054003098,2925553815833033230
+530b2bfc-dfca-387b-e0bb-dbff1081d521,372694384,13561766747713555917
+45d08a3a-a30f-513e-9066-05e90ae17fe1,2497653993,11523121156184088168
+b1ee4202-5b90-36d0-3045-ab0ee511f3f9,3704092874,11434742494338857514
+cdf935ef-4781-b6fe-fae7-01c93f8a9b7b,134082714,10763692221423837483
+d8e4fc63-283b-41c1-b2cb-5d540e4abde0,545930060,16595367741349948893
+24560609-8133-6225-9f05-c963bcc4410d,2839812186,15640077784298765148
+1aa384b9-de74-bfe0-512d-5a283207ab5f,2406387187,5611860078038280723
+56349d5d-c6de-988c-318d-1dfbfccd91fb,3583124714,780452342413614852
+afd32a0b-3e3f-c524-1a25-4563abd54396,3211766381,15669276659143648131
+31b3aa14-a594-98ab-8b51-e32baa39fa9f,768420712,8710764314570414975
+cfb5cc54-ee7e-53e4-975c-307d98a1189f,2343937145,17292640047389100405
+1a8d4f43-77e8-aee0-3762-07eb489b69c1,1731228385,10105777070327451165
+85b52901-7ddc-414d-a786-571859f72446,4203469997,15234699056671747076
+5959245c-1713-a765-0d49-785fe64a09af,1342945111,4929176926695233633
+da5845c0-8d90-5494-8fc8-a639eb397306,4177386488,7502578136217055973
+21b807a5-84a9-3e7d-f4ff-f9417aa4a050,2922296059,11705150357224650357
+f96f1b0c-cf6f-505b-8c81-3ae12ab53481,1198970233,11321027531077941173
+15bee66d-7ddc-31b3-1e17-96889f4fd052,237295245,18039719823164182207
+4cfd87fa-19bd-5015-e702-1ddbb378ddae,1853516220,11192841051716684148
+3fbf1131-c7d4-5a36-4933-a625be83c0e8,3447912598,3453481469103332553
+00b73c7c-279b-063a-9579-ae36b3102c88,2270831136,14898573090076927694
+815fba86-2806-f418-ffd0-ab15d3568c63,1046732879,7467549869648905358
+46033675-ce36-2c08-b34a-e93d23d0eb28,469630825,7990887674643516531
+901ba94d-8773-1255-5ec6-35142d86db19,3674427438,16031377259421786101
+ba4aa322-e423-39f6-d2db-dbf7dee94d73,2786864486,10515775705295154517
+68c72552-1159-9bd6-4516-cef071d1d895,382871266,4511460972463318626
+4bcd3f15-6de1-8dc4-ffcc-2b157aa2314f,1305074298,6352772325516521050
+9f5e71f7-cbbd-a6ad-d47f-b228ebe01bc2,2745207839,7022455044402801271
+3b79eabd-9a27-9deb-3f0e-e75ab387cb64,3986055108,5325373853644727203
+58d13923-cc49-7c6a-47d3-999244c4e54c,1332544069,11733635457566800952
+4082ae51-7e8e-7af9-1859-c0d01896e8d0,2142251641,14385842247556332524
+4b5da730-d4e4-0778-28ab-f01f0476692b,977315042,11628701028495291732
+49cef35b-263b-f848-c3ec-ab636ce184ce,3002638525,9894947530956112020
+cfcbb4dd-6f3c-43d4-e808-39eb3ee1c4da,219407867,196939827012418370
+642a435a-9e05-cf38-b4d2-ccedf586591e,1475467189,16835999483301000052
+ee9747e0-a8f1-3b99-ac72-cba8c6858d5f,3959121304,14316859017835295497
+52fe3a4e-24ad-e06e-59d7-e901acf5fe73,2615401578,17719032056248541638
+2f1959ee-d1fe-d0e7-081a-ed5e3903f8e8,2171790940,6227023746094696718
+36479439-88d2-e06b-5240-f544f075812a,3469163658,6818578607379308956
+0fa87806-5450-d572-0583-a4bd0c0d07a6,2792911258,17406237131755980238
+349d9d4d-6ea7-fbb9-9c5a-624dfe83998e,738611080,4442041590376002593
+dfc868cb-28c8-4d5c-4642-e23380dee479,2738866798,17974062230647110155
+0b80e8d1-9b40-8699-1796-ed521c88b714,2007942117,10596081928171119640
+a6668832-579f-e955-2ec6-7a4a15513814,1522959074,10258663376518095052
+ff89a2a1-5090-06a1-85f3-e2aa8d98003d,1672316226,437274094985597032
+b7fad2b2-9363-213f-11e5-b1686d5fb221,3703525437,1373324213534216268
+f00bb96e-6ab3-023e-3ead-af04e5ee42e9,3243927869,13205488471626329649
+5d4290e9-5019-1ef5-8e38-b9d6a05141e9,2784487724,1562317667902214040
+4878b02e-83a4-f31b-d1df-fc00a5b21164,25875025,13406070902541039919
+8030f134-03b5-6110-e74f-bb1f971b0ea2,2398787980,3771833180996812513
+2176e2d9-22d5-a110-9fcb-99b688ed818c,1518910563,3923578091127263130
+c6e32a5b-27f8-6a6b-a24e-4cc07ab5ce4d,3843334663,6354706398727763005
+75139871-0838-50d8-34b5-4410d3db762e,4107825232,2705106524926461572
+0bd8a2ac-1783-75c3-98d4-df462be8de1c,1469947256,17081229183073888809
+b7cc2d2f-260c-e1f8-b2aa-23ccf1fe4bf4,810216337,16398173326261563567
+85ee6cd8-5d35-8a38-add6-f5855c71bc5d,1063866347,248714378538222766
+ae3951cd-0534-a825-3463-b8a651460cb5,3450241072,12216324813503586192
+3ab24043-adc7-ba83-3833-4db98fcbf316,2370457112,12504121757073017500
+a73b0607-e12a-f794-faf4-9dfcb4edcf35,3783044787,218322226892974575
+d9fc024a-9e56-578e-4e2b-bef78f018b47,2829550175,14704190232204441113
+5352c0c4-92c5-fcb7-b914-860424c39665,2198943233,1952738577342888211
+feb3d018-467a-aa80-3c3f-8996801f128f,3502633833,3146888883792308047
+9a8ada99-5a76-1dff-41e8-6f610c1754d0,3400131509,18011946984205491621
+c7bd9c5a-22bf-1190-00db-65102149fe53,715157657,3089827265411643602
+8cd5b1c6-b867-0dd4-bf73-c60fd213127d,2635070939,9347497079788410694
+e6c35d49-4ddb-08f5-0696-e354ba2e1762,1403340789,10403299032663596320
+403cd167-ab94-d1aa-af50-c4a67de02c60,607464812,4751094380622939109
+0eea5fb5-7bf1-347b-b86d-3d7d1382e692,3658359851,4301982847722451710
+d230929a-27cd-19f3-f9ad-eaa2d90043b4,255397274,4403333974143252732
+e5423bf9-f27a-3629-4874-f5f51682a3f4,3555049696,15075590440916344089
+6300d496-9bb7-03a0-5c76-0715de19c971,3577560034,4242445786752588862
+505ef390-afc7-ad26-d04f-3a2ea27f7b5f,2913800895,7892865522474548133
+ef1741f5-3397-8081-f4a3-3c0092ce6072,4256175112,16825859259143415614
+aec0e725-078f-fb0f-8520-263a64a5e68b,895135515,4226598397476606188
+f93bc88a-b8fc-c017-bc83-545fa584f42a,3674007888,6414221366399108997
+b5adc9b2-270e-0bfc-ab47-9494fedb3663,1268204067,9182874294164711348
+a32cebf1-13e1-ba68-82de-d4514e7cad3d,136791877,13223864483651326390
+9ef3d528-00e6-d154-f45e-5ed80c23d610,3334868732,9678709780036142320
+299041bf-aefe-8681-84b3-a1f2dd2857af,3854694235,11469292961253411629
+9542dea2-31e9-d906-43c1-68c5c44d2e35,2507856459,4907959272140770180
+1893f17c-c343-9d11-3699-0fe5accecf59,2245574059,7064943853933991747
+dc1f5c6e-c093-6083-3db9-8070efbdfc25,544051557,11225665313548415729
+510055d7-d4c8-e3ee-6833-acb9efa0cd1d,119306395,14740690652515613480
+e274e87e-6baa-f0c1-eda5-e4982ccc98e8,642643926,2767853859583454407
+ff00e680-b67f-6da6-c2ce-4b70430e1339,1168900967,15707526328957388313
+b8f764bc-6b28-8749-6f43-4b4c12dd74e9,101408457,13529010719110142698
+a718fe60-d345-6344-dd5b-fb18cadbe226,1086729264,719104548705131042
+958d6589-c054-c2fe-93ce-2ce2af6f9dcb,2627043869,1664273334887032353
+55cdeb50-6d61-27a5-febc-cd403fd2e8bf,334270179,18289002804222206512
+9d2d090f-8d04-6768-8ed5-51567172e519,313798572,11821481118596195201
+b78d4038-8340-8242-1c85-d145815445ae,4293015254,11678487572529641104
+5d31b899-82ee-d0a3-96e2-55ead763db94,1729470138,15455062294169934396
+ad16e36b-f21d-3fae-8af6-8a870c98aa56,401524903,4969191954404315379
+bf97cea4-54df-c182-52af-7eab6b45cc6f,4141980094,3352323198756803784
+36cb928f-8c80-53cf-1230-4e5c1f478ee8,2376223749,7820707446192046227
+ee5fd98f-f7d7-04dc-df6b-447ca29c5679,1742864891,4298561148458554260
+d01706f3-7d61-cfca-a196-a27d31cdaa85,4247699425,1673243540055091641
+768d909e-aa5b-e614-6dc3-9a2e6469d3a8,3431955993,5570312606534534189
+6041f3e5-8b1e-078e-e87f-6a734dee8def,1837122918,15844446557190700203
+f6dc84b0-2d2e-56ed-66bf-16420b7735b5,1647201876,1586183517921578676
+ba24e7b4-50bd-9414-2414-04cafd1e71a1,1156618521,13287123765741596725
+0698a66a-78e6-d39f-a251-5a7a5a4b349f,1937214306,6891591303998307863
+896f8ef1-7a6f-c36c-6af1-6af15f786a5d,1396020911,769085250616693841
+822d3efd-a295-928a-1f1e-064de77c0df1,799880040,11019594192259989196
+ee22f23b-3c7c-da74-79cf-0b069642faa9,1502829897,98884692281534181
+42547dea-c5b7-7492-7059-69a57672628b,3853646618,2413942330892587947
+dabe573d-ab70-cca1-cad7-78418bdc3b1f,1246367643,3517132290479167825
+ffde16da-d15b-d402-4ac5-13a1f7963247,1111039485,2273742905503203825
+482b1ade-6ca1-bd28-473b-9d3bcdce2d78,2860882905,1512480337305131210
+b10ff44d-dc8d-131f-b24d-ed87eb3f4f59,369746529,15335450248111998386
+aa2e7b69-9054-a367-37f1-e46f7a9743b4,40422590,6450281640694581495
+ea45346d-0de4-b8d7-3374-531fc0cf52d4,4143683001,14961730300525429266
+20ea71db-b8b3-51d8-1773-554b3dea1caa,2132926838,2927632277851284385
+371cdee3-0915-9884-61b1-026fcbf3b029,935766448,9073996703797969795
+ef3acde2-25e4-58c5-0d5c-ebdb66408282,3114008403,5145954383186632070
+e60aa3b9-d653-0ab6-ea24-539497d214e6,3336762898,4136238861400747694
+47816ba4-c0ca-ec0a-3267-ea31fc5a40b6,1300611202,1239942805925253183
+1e2cae9b-e9f8-be75-dc00-c3a33927719f,3400590302,15649598457716873545
+9ba83ef0-5936-be5f-bea9-33cd5f5be3a3,2712752681,5525988732657260276
+044fd213-3ada-dc46-22c8-4e821c8683a4,1761635965,17536704193431924022
+a8bf750a-b6eb-52f1-78dc-183c4741e1b4,346535299,17785723383419203835
+ed86d762-0d09-2efa-b4a3-3795f954eded,2442139333,14354819584332254081
+b248b8e4-ed3d-70c7-43fe-adc339e50c69,3299702297,2400605141065644341
+14f8fe5c-e73d-ef17-a562-040fed49405a,4192704725,12253856783939195985
+e3ab2845-e290-c3ed-fc1c-773622e2e5ae,472565370,17196068150927712136
+cdb456fd-ae65-fd0c-740f-7b0a139dc2ef,4122007005,2767267229176104771
+33dbbd7e-3d9f-f508-c4b0-47e21d096ba7,4169081571,12116660213406127084
+fe3e91de-30de-01f2-7237-6ff4013c6d71,2387983146,5332741224385948276
+bfaebf43-fc05-f4f7-9f48-9a44fac3120f,3240855582,18181968455850796634
+60dcda15-9e0a-99fa-2b3d-df903c92ae5b,3081431017,13006018470470972056
+61c82c1a-cf21-1793-763a-0a430fec97cb,4232534931,3324979725176735510
+c7b84ff7-797e-6c38-742a-03029b452fe6,3884880548,17936608801441567914
+f6f92413-a5b5-eb47-5630-58b6cb6d9e5d,332399651,3878939239157688373
+8d5640e7-6094-1f44-a3fd-d187fbf8f0a7,1002129218,14239915710579470673
+d2033bb7-a727-62ca-5cad-4ab4e52d1baa,3342214583,8688204162261690846
+a053a129-8082-7fb1-e1c5-69722123bbc1,4110842203,14264655177827194824
+1960539d-ca49-b928-c4b2-2bd7ddf39db9,408955164,9176980901347159904
+52dddaad-c16f-7a38-6d73-f58f6d77501c,2441911233,13501641383790240396
+9eabfeef-4d94-6216-3648-1f86e29c79b7,1081425436,1653467111442050159
+5c420a1f-d7fc-08ad-d6b3-98bd17d4a2b2,779420051,5002561732680113794
+abd51fac-3e3e-f9cf-aa06-032d00d68d19,2364456848,1595762753759397082
+5e1c7f01-415f-0eff-52d8-edf432aae790,2754447853,9454197273771148283
+158daa95-04f0-82a3-9b6c-24fd2b295f0b,147308850,4476241502235463523
+fcf51473-8e88-b53d-cf26-e2a4a90ecc1f,1204993942,6370144041440223260
+196a3ab5-d0b0-ca5e-a56b-2237d00f6551,1228752347,17433451737192830166
+fb0d9e5c-a3a3-a08b-c581-1b5d670bc4de,832427980,6424176153715034151
+b094f96d-c635-39d2-9613-d7394ead5805,3398617808,5041818148841375686
+ecf8b2b2-dc53-9d0a-b98a-27f032daa90f,988521412,17612534038321200337
+e36445e4-ce74-7eb3-dd43-7cbc759310dc,3531674853,12330317458194186496
+651fe5f4-0197-d2de-3b46-5687da0e3cea,1076345045,873797590724974464
+33376929-bf94-0633-28a4-54bf14d28180,4150088152,5943149862913235061
+b62b519f-aaa0-a9c7-64ff-6d4832fafda3,3940376577,14732832193874345194
+d7ab7893-c65e-bbf2-f597-ed75b96f5d6d,207206910,11945318242648269323
+aedac0f3-fc13-fe79-8801-71debf908350,2383199747,3918375625755914191
+a282b9e5-8eaf-8d95-5581-4752bcc4c23f,3718336376,16063275200419096739
+f29af8f8-271f-7fb5-d3f6-e70fc76e93a9,675100953,16219893120671455743
+78f50ae1-533c-f8c5-02c1-305a1ba13f59,240347803,12935696523645195799
+45e517f7-61a3-8d66-db16-7be5a067e3ee,1020331751,1062388282768995994
+ab3c4e8d-b2ac-1e60-82cf-ee7e461b875f,1391452056,18109362462747436448
+1e26ea69-01fe-66c8-ca2b-718a659e6a69,1292581840,13809851754336562545
+66652ce9-4db0-253e-9c11-73415a9ed60b,1454433473,11355167828153256104
+0314ba67-6534-5b86-7b71-9778c5819da9,2451677964,7207818312943065936
+be1c6ee9-1ebf-b977-1829-8b8c29df8d84,41984975,6933452103892492561
+fc499e11-f511-5b21-7cdb-f2b9783631e1,4026827024,11532729879556764346
+89b1b3c5-171a-686e-9def-e2fbf3efbdc1,3728167576,16093300535765035347
+c478148b-257c-9eda-4ef1-0c46b33239dd,1438072410,3806768380681840028
+a5760afb-417d-cb7b-30f4-ef69d43798d3,3813574781,8005030758010341717
+1a9d8cdd-eecb-32b5-ebdd-b3a697e09af9,2201168937,4290869107280625995
+f2557ab3-24ee-c4cf-b24f-58dcc96a3e91,2606257417,14792124214699245777
+73046333-2657-1177-be18-6ee34c41df72,2395787450,9882800932878945907
+e4532e94-46c9-5281-3fda-bdc150fd7a61,232085077,7405905263656601550
+a12d586f-ee47-1e68-be76-27d2c191d700,2026810572,11678365728990959547
+0f1b2d94-b9e1-54b9-25f8-e52f9b81dd26,2981868683,13254867620650722120
+708eb995-7f51-3826-56bd-9575a7518509,4192258449,5330639363501161838
+d7be36f2-733a-292f-329d-aa7a1c864f31,2215134923,7221591239307116942
+62cf9db4-472c-0b8a-6be4-f186e53ea0c0,1666854987,11740766546135571263
+ab3323d9-e43d-4b94-c5c0-d9e520b50289,71994647,6413558192783314011
+3e13ad52-74ad-2b99-903e-855e2a95d9b6,1201355749,11177065700728301418
+21e06150-41e4-e4fc-25b4-f4449449bd85,1789678766,2664095771706655416
+13baa9de-1085-3261-7094-2d34e8cbd86c,674816170,15445191977646298246
+d976d9e3-5d71-205b-d189-3ec5db7bfd02,3528390394,5275995288874668047
+0c74a81f-f94e-23c4-928e-d8150334e0b0,3705085852,11626368168970753931
+1bdfcc26-4327-ed39-5abf-cd74be15ec3f,4229113851,3282326949425300383
+6efe1927-1f64-f6e7-73c4-630f16fa69ff,2833336233,3098619303526236756
+323970ca-32a7-0322-52c7-22b7de5ed166,3302349165,1938568001921155288
+4ecfa8e3-bfb9-6359-da1f-4584fac145dd,2309232753,11460819199412761210
+792d3935-5a3a-a973-f59d-0b21782984d4,2085832486,15612939350996393560
+3188f7c0-1711-1173-88d2-a084a0eaf68f,2261288608,3490889483189114366
+9cce1e81-3ecd-8540-402f-4ce8a267b4de,1726667445,3506837225392612859
+56f8bba3-b3bf-0cb9-0d8c-672b7fafb55c,2661126228,17362944627513129799
+115cb303-ba93-ba9d-00bc-40294239295d,1064185512,9931608348758636347
+002ce1e0-9eea-120b-fcee-04248465412a,679094808,11239649909457130523
+18765135-e6b8-6d6f-cc17-1ff28c6b3ca5,2178138412,6712262004773084871
+e776d43f-8e94-c602-2877-f8540d3cf76b,3791775189,16961136726017260212
+f0eaa008-cae5-e309-d39e-f8abf224cfac,4144805790,3912724551852491979
+56dd76d1-535b-8df0-3253-110bfe5cc0b2,1361227840,10862725934554759151
+84cacf96-eb01-0144-5c68-7c44c9232a00,1508249818,3776489641048028480
+9acf80f0-da6c-78d1-f8c9-b590e619d8d8,1598530763,6688965352915290947
+fea7b5d4-73c9-eee9-3102-7bee7204d714,1432905671,11990455941326943685
+6d729749-e6e9-8a9a-12cf-ab26839cb2d8,1368014495,5027105345651088429
+a9e4a508-e301-d781-5ef3-9daffedb1ea8,3928577212,6836064517823292694
+3facc436-57ef-5a63-0a15-bf8fe3986e55,2828127285,10793473212801129791
+436b315f-4aed-98ac-879d-be01f4d6b754,1348510294,9094996553222881892
+3e5e3079-4d3a-e6b5-874a-1816376a12be,1820317576,13705002167787953052
+6951e8c6-f875-4577-84c4-9bc3e8d4c2df,2577269662,13822792595593251709
+185f16f7-bbd8-14e2-4b2d-b19b294e11fa,111048532,16640658634122521206
+50b6cd7e-ef68-6637-a382-0c2acdc4ad86,2432657747,9571048798235757521
+a1717996-3d3b-051a-bd31-8630c835eddb,3453042970,15873668854025937271
+7a491cea-7bfa-7935-8a72-265d98a4e9df,3337084843,12789674596285000580
+3c735f3b-469f-f7f4-e17f-407762167f1c,2612437304,13201934856914259563
+510b387b-5a72-786c-57e3-15f9baafa217,3337412756,11618395815394025163
+59bb8939-e6e3-bdba-91f4-07c317ccba81,316289239,4231904175981363600
+7d918215-91b0-08c7-49c6-a4c4737e77dc,3720366482,16982549588212610933
+f5baf64a-5e73-a7f2-5092-bacfb1183a5d,2489712660,13275275035638912069
+74cfa44b-4acc-6354-3c70-0163a0302dc9,3395496234,5477284401621720320
+f78bd6df-79fa-34c4-6826-89eb49ae25da,2850315661,10382653562062183930
+b0e7eeaa-6a7b-ce49-096f-a8b5260a89d4,1951588140,5258336183468852657
+d36f066e-130d-7111-9269-4db0b1ba4845,2934421187,14072657298824261898
+4da9703e-a809-2c47-f49d-2f09c0dbdcf7,3227401470,12033459074276282902
+aeb96052-3891-5246-71f6-2fa8f45855db,1276004985,14153622017024097508
+f0e48949-18b4-936e-e562-7696e4769bea,680353701,7506204433341034526
+8e5cc78a-8378-9434-bb07-98cf5a065882,30483336,2357775714438917723
+6c160c22-2976-ed15-fa18-8d116f34cf6a,2670782613,17523512538398762460
+bcc6bb59-acd1-bd25-8a04-04af56cd8b0b,3939929076,11110318471933765139
+9ec91f8e-4b30-9dd0-e29c-9f75a8ff6f0b,930085122,17446668212166691989
+c4e342cf-5717-fc06-f83f-cfbdbb8f1169,470220296,2088526270954213205
+b6dacab3-adf2-a800-e555-6827929ecb79,144449282,10374279772250563533
+383c6069-5a00-6fbe-3c2e-9ee38600d115,366985668,7304625144931588710
+e83fa05b-2c3a-2572-5a5c-7051524674f9,2668992370,9654686091160825894
+f898b8b1-4be5-d895-21f6-81186850768c,2420494349,3028941456827130638
+6608ca0c-6a64-c929-64c3-3ab76da59026,1692554696,12059903017586543969
+e0b1ce44-0cba-fc1e-419c-d7d84a86fc73,1958460056,3435075702305648247
+032671d3-d898-250b-e442-507283e06617,3787712321,6065210438296483411
+114bc126-fcfb-c6d2-c570-534dbd054462,3077653038,2273238725893277964
+0c1ffebe-b882-4090-d52e-346ba534909a,3289775435,17118440484047104279
+1fbe20b8-4d37-5c1a-0647-ad306b775884,1175348158,6895045767929062588
+d20b2a99-3100-36d9-3479-8a59d99c5306,517320806,5946247186969785788
+a1785d26-2b93-41a8-a482-4f9061e8d7d2,2073627131,10553014330813984302
+c9b9c6ae-02b9-4a6b-7e91-0c9f66c1f9fa,2537427685,1995306195283160019
+5b0c7ec6-208e-d7df-4b7f-03750c32776e,4031520674,9101164873381788472
+05de1ee4-38db-0e86-4061-33f65c755f2e,2022178589,4586822894152354083
+6c0c57f6-80d2-c531-27d0-1d2066f08c86,624644275,5996504850049810357
+6a400e1a-0bfe-53be-497a-7d6f5a6c8b7e,3359236910,3015346050711547517
+2ed8f783-8d93-d5aa-2782-6f34efeeeff8,3472086847,13118101514893593948
+823d1fba-00e7-8c34-50cb-5022253c7a21,161088382,15010126129576714304
+8b62e1f8-ffb3-c6fc-17f0-27407e6a08b1,157304806,9786111561606788409
+8197f5a8-37af-c839-a33f-9de030ab92bb,2964215173,5918904480164172698
+b880f9d5-6614-5e10-7e81-d324dcdb50cf,2685906273,1477012975824775928
+1bf45ece-f1af-ded4-b753-c57d90cf4e4a,2010659327,7756479698897402693
+4aa50eb7-cd9b-b008-2629-ac707555f56c,607517281,16056735808563150703
+a7663ac3-f722-7889-c171-ae0c52c384bf,3594209996,8101808479464720222
+dc15d983-0430-8ccc-a56b-f41a8d4fb16c,3799060299,18243404223673755889
+6f24fab7-2ae3-0b15-b714-55a5b1ef6743,1693504587,4317281596443614412
+fb5bd9e0-eff3-7d2d-694b-c737d3c22447,4024427755,12266225658914387216
+78d07f1a-564e-2e46-f636-71ca9aa83d0c,4184316817,17352876634097342888
+846afe35-3d07-6ef0-0453-0241eb343416,1545740105,18150086043676320005
+5b6923c0-f721-84f0-0d2d-d6c7901471d5,2151038417,15994113050191247495
+460a02d6-5c7a-492f-fe4b-7ec9b5e5ce53,4253602067,15752429698693830505
+6cad5883-2639-3360-4c2d-c5c434fad73a,1989537287,6429095431372317596
+5595cbbf-4a7d-3fdc-a0b2-8bbee994a6df,1946038565,1789554962288930445
+3310af2b-de6b-4517-8bb4-9e6164211c95,2043943549,3246364024974602107
+93283c25-e1d2-f243-8a96-bb488f18ac3c,498353231,1398329077248777739
+4b798273-f4b4-7dee-db49-7440dc58cb25,2197307935,12965204510108982921
+f767dd1b-4033-123d-ec6e-a38791f0f58e,1343529224,2002632630731000942
+617536c7-2603-6d3e-dedc-efe85458b20c,1431924689,16183543153124912505
+37764324-61ff-e4db-66c4-7ecbbe1af8a0,1366220139,14020400209945079690
+54f33b2f-1ab9-697a-d76d-a75b6444ffcd,3952799111,8901901085136919953
+beb87adc-76d2-ab42-67ee-4e28c9fe6fa4,2060846203,14748506676851037095
+3334ccd4-2368-714a-08c2-3ead61c11163,2606375268,263304843504606187
+7fefb1c7-eed1-81f8-0c6a-37e193da3548,96853078,873475338752483617
+569a285b-082c-ddfe-90fc-abfb0a5aa088,3578256363,16187879152709440994
+4da32705-e51e-12a0-d787-81cf00f81c02,2066402420,1409808461695901613
+82c0d3b3-eeda-5a59-12aa-f4c402801361,1524805464,16256145505846537626
+3c851faa-c058-3f81-d80b-ddd19f4598e0,2019355829,1042910740320341832
+5a8ca144-a208-0db1-f271-71fe15589adb,3716397949,14872523513943006718
+b8a38bb8-8fb3-6b80-8219-f953c56e3cb3,3841468783,16397947349849286586
+92f9b18a-aab6-89d4-b6e6-dc00c6586680,3986130278,6061764530170066869
+c6974620-cea0-3505-f935-8496c8f26555,761722556,5758063391135251870
+05cd23d4-71a9-82fb-8354-95cf83af5b2b,1729061720,8533945315318683319
+c58e301c-7d75-3c68-65b5-4bb6d7b8a551,3377001381,1245150597875516947
+d27af190-a8d7-ca77-072b-a4313657497a,1777940587,58998585748955288
+4cc45d49-928a-2b74-8e25-0ee39ac52255,1109649662,2134515639639574467
+e74f9238-cf43-a9c2-e7d1-6dd314f3bec5,514384760,2010103538198204543
+c0c98c41-604f-8a6e-19e0-4765dba00fee,3892760242,2926665169857671542
+9ca181fc-467e-91c5-df19-27f1a7ce656e,1582686487,5421234821659950364
+3f35cff5-3eaa-edb1-f62a-6610cc03f320,3831013752,18409085372279541124
+5c97c957-1348-f615-6ba3-cec9bb258288,69448188,6622736815181049729
+665b1bdf-f1ed-e44b-4788-d23917b7695e,2500259289,16894837870177551492
+92b9ebf0-e177-4ccb-c95a-d63713c71230,3569279917,3105620075113950322
+4cd11a56-d1d9-8ee9-473b-8af9677b2e18,1574525739,61006827101130457
+59179777-109f-b191-76aa-d70fd8fd552f,2703009431,12892892600511947902
+0599a698-34f3-d24e-cc2b-9d4a994f1753,2629575736,15584843067786336950
+da555424-f731-2f37-dae3-bb2c73b90995,4294177110,14754139999287081309
+7077a591-e2f2-2212-be37-c36b443cda6b,1136602978,16491323696350494576
+de66ef38-1a4c-4d1b-2325-500b088995e7,386650829,5302864014328804318
+6281fa54-6b98-db05-23b2-fa8ebf83202f,2159151610,13973779091077675568
+68c48287-6646-8784-799e-e3553e48124c,3801012647,8420186544140907985
+04ffc273-9267-f96b-3029-da45a3c58fd9,2826700333,4860772872801767359
+ac8123aa-6362-3a53-cde5-5f976a481400,1934692607,14158250627704855728
+6735c7d6-c62a-a2ab-b454-036f3c986ab7,3094942735,6610120328103925048
+bad55d52-b630-24ef-a480-8367ebf2ce33,4179504549,1007982460111830966
+7a2c4aae-373d-34a7-c3ce-506c3b79e975,1061444098,951673112633317059
+24633228-5a0d-0c7b-8578-304c49f54723,3908774395,12580754198064103717
+205ab6f4-e445-468c-a533-f030b1f0cb43,3657414397,10543795389998914586
+ad8c279e-4288-e499-d448-a1acf117902f,1040333841,7180340854959162646
+f6657e06-09fb-d84a-ab91-d57cce268834,370340373,9925292949577431104
+a1957ff7-c455-135b-c068-a75bf6730960,3995984149,13268867765244587700
+8bf7122c-b6e4-e96f-27d6-013d8ac4fd37,1680610586,11706764619758398522
+c23af78d-cbda-25ab-842a-0b81b843a201,1009776416,1641990771320129983
+4c32020d-8ed6-6c9c-c36e-18b2c65a7156,784388091,4056213178172323699
+de6a2c5e-fd25-dd4b-2e3f-dd50d397a502,3649368781,12206334532271630344
+d21e09ff-f665-0609-747c-a905ab47672d,1301386229,12582366390199963795
+7292db20-08d9-e7de-cdc9-29605092045f,667441635,3990155735417051014
+fc506762-8bac-c66a-a2fc-fc6779c4590f,920934783,8696784335913293290
+72aef7ff-8e86-26fa-683d-1944850b8b82,1826614379,3553379460776695006
+937b93c9-e339-d5aa-4f93-1742cae7ddfd,2049702477,6730301582778797876
+204c162a-076e-95f9-87ca-b68f0294c6ae,4125388899,8350086374456893456
+9254a386-bd0e-7f2f-f3a9-255a438ea0ea,1820437350,13427025835894582362
+cab7155c-6412-9407-dc0d-938aff6dbb1d,3651627838,6471646556494552681
+86d4db9b-49fc-a0fa-32ce-df97de3f3eb6,3459655641,3098316925084428657
+d52319df-856e-f777-07eb-7564e902fc8d,934566259,8453928854683656888
+04adc44f-ebc1-66c3-e785-c209c3460cdf,1340381658,3138123949708511121
+a8ee84c6-9984-7859-78ea-c2b4b1035aed,4195307631,9320839596599734137
+a354199e-e27b-734e-31cd-b8dcad9e21f5,2663153617,17136845957364141504
+402955e5-c8f8-b2f0-414d-2bb9f772bd05,1465543122,10164616019465203120
+27e195ad-8aaf-4e48-dc92-4bbf4c977486,969589918,15309346348291618108
+9ae16598-a2f7-258f-b182-f7ff00a6176e,3617417133,4089407987190485187
+c1b6d8e4-7a2f-8f02-defa-f308180a9a94,2003788621,14037111957796822025
+a17a5c87-9a36-917f-22c7-36df95ffdd87,1368254549,18256771790450802203
+35ea50c2-0279-ee69-e15d-caf64bcd7be4,3216389897,1160876677923000219
+57f93a8a-7516-f2a2-5950-026b5b4288fb,3223385423,2507654536408547063
+080b173b-f775-dcfa-1f78-779f452d28a1,3043357612,2840997433166647759
+f47257d1-bd4a-8c46-0bad-7e7906029c5f,3667003488,7223646461018960240
+be50e7be-e892-e091-79cc-6a0740abbaaf,3255996195,140253811629710989
+d76a574d-0f9b-798c-1fa9-d96d1592dea3,1807315316,18208742819983905633
+0ee17461-acb6-e1d5-876a-78f30d5c1927,4274855014,3425574826439713080
+b8bc542d-32a4-ecf5-bf55-58839d262a18,2224573550,5710428536091138640
+3671c0d8-1aff-0edd-ebe5-dbe165673635,3734682309,5040305727353415256
+866a8a12-54f8-dd07-32dc-01f75dcc1a1f,2125203565,13126154108503617980
+f02a28f9-4266-f843-e1aa-fb3ec755e9f1,2793194251,10971953863153020318
+bbe18437-c822-e1f4-03b3-b098abe2ccad,1063505102,18106086143417278623
+f2c7b3bd-0476-62ce-17bc-0187d520b158,3143545550,16367516719510455409
+438047c0-277a-1250-0e4a-87ebfce2787c,95078125,2406142116559912271
+3a2786d6-5ad2-a0ab-f504-b4c53eea14d1,2452771929,14280261723697953689
+f61afdae-e13b-b5b3-4832-7cfa5f2f6d00,308137379,2934000467897448002
+6f870005-ba51-8ac6-d5fb-ec31ac6cdcd0,3104939296,12913456053289490663
+dc4f48bb-8b18-97aa-06b1-57ebeeea8f5d,965814210,15656351275161352452
+0a549565-7a0f-6c1f-7c80-6190ce937a7d,3489572396,3310373616468375270
+03b16267-0b72-f9c1-8cc8-fb4e3c056b06,4260141919,793976356383808346
+66f3fd26-21ca-87f0-90e3-0d7daa49e42f,1907330031,9782129081480341434
+fb80e4f9-2585-5717-3827-d7236867ae3b,108149611,16280622030295151846
+99df3b91-f528-c85b-0cad-417d0016fc3f,3946911208,13792139747153337858
+5314ea6a-f927-7594-2428-eb99a308d647,3236089945,14258061803727319407
+174de599-2509-b881-268d-122d92dd14c7,2646073163,15376138377056838655
+154cd07e-df70-0542-64aa-a4cc0ceca91b,16263709,581416751995882995
+45c30912-a01c-2a57-05e6-bc821fae22be,1969489098,16529761205191440304
+efdb0f2a-8bce-d963-07a1-435c1c3c3c49,1172903054,5307330521625753638
+0cf9dcd2-d04d-c58f-83f0-986c114bfb68,3215781881,11023682255531292982
+bb52e82e-e5c2-5f10-0e72-d7114df3066a,1354485249,12884917615708560911
+2068054f-5ad0-55a2-db45-e4458573d529,4212787283,2158115058339159424
+3b02cf3f-c132-9385-6ac7-6ddfaed4fa02,1666152573,2394162328201383754
+2875ee98-1a5f-820f-83d5-8ae9b755fe93,2548538826,16827605867350855597
+2190020f-e041-af6c-5363-8d486a18bc39,1092564593,12245206426537813221
+171d428e-8b9b-12e8-9980-5c8fdee10791,1593782313,949024571475388302
+bd74f204-507d-21b3-fe88-121972a33c29,1075758082,2178333176149455257
+6f84bd68-d0ab-3fd5-6a29-fee77d87ec9f,1292030609,15434641648805390644
+b7e824d2-5e4c-856c-9086-b26d4f2ea172,947878528,3497476519327426123
+dddb2ab4-e94a-a8e3-2dcb-aca7088347eb,946867575,11108873322502118699
+1c775377-95db-3f54-b652-d63966dc5efd,3117816495,5575667640266633599
+2d0b84c9-896a-9af0-dcde-b592cd7af2d0,1155954745,2184734112924235304
+f825e72f-25ef-6b79-74d6-cac72290cb03,2379606054,10690063282920326142
+a7e9a90c-d2fb-3f0c-4e51-bc82c79040ac,1239528911,13717492485062167973
+d9b9322a-224a-3ac3-3ef4-75f66aaf4755,977877667,6290240222054944226
+362e9696-d00c-26af-4775-5ea3ca6640ce,3010569515,390639298860062716
+bb82bbe8-d586-f330-df28-47e7f0b3b302,3646791040,4092561671034025007
+1b2efcef-3253-30ea-1bec-704c15ca75cd,3129377618,1229355923635114642
+3d242069-ecfa-4f84-3654-8cc874a287a3,1862344110,11685820377073017706
+fc6865e4-5335-d016-f906-b8d7fff1cd9a,1247943217,6529322234810808720
+91af7758-50cd-28df-ca05-05fa263ad943,3746215303,13752657951748392276
+bd8d18dd-17b4-e270-776f-0699d9b774ce,2192837140,17304736536712693901
+30984a8b-a92b-9082-d5b3-ba1c9c4edbde,1267887239,5986617988263779903
+e169276d-5fd9-c7d0-51aa-0293ba37b505,3546705505,1847183397569057740
+21dc5420-1da5-052b-5dbc-c66e7b52b249,84268597,6797887642161074147
+06e8cf1f-0878-5a6f-8386-6cdaf9f99221,1692727183,13599853373352421810
+dda026df-9bc0-58b8-224a-d9f10f74e68a,1665572522,276202770440083321
+776ee617-9636-2a9e-1290-afd893174adc,4226510469,11667775094219102315
+98d15536-5fa0-3e17-2697-a09348209198,982006569,4101418797264050243
+9a2d6e37-31ba-a7e6-37c1-7f0fae4df8ee,2770629381,15979034751199025253
+9ec2d2b2-9e0c-c5b2-6edc-b4bf2e5eb42d,3452832527,11653277520761733825
+fa3edd43-590d-4c9d-d64b-66f996e0110d,2719724826,13793808678776545267
+1569b350-cae0-def9-0bfb-cdc7afe1588f,2501822047,12320302403099299996
+0e204d79-4948-1e80-7e49-53a98b84c1d2,506408475,11208486552835523604
+25472313-a3db-1e78-e61b-d67ced2f3939,2443094432,13077418563677773799
+b357a1d6-dff4-6f93-54b5-21034d53a0e9,1126685064,8260743435798069460
+3bb33b1a-dc85-7986-cfaa-e7e7c2983103,1664304195,1279185538729432543
+0e29c78c-1e1d-abac-f617-1c78d9428185,2296704305,16381438475576137683
+d3c30cc8-7c57-af84-cda7-d03df181a3dd,2267962402,13693297238458262968
+7006c5b5-0846-7cb4-e38f-30c024331608,2979488264,2691772996108420895
+f9f573ba-fb19-7a33-d073-9af793d76aa4,2887089571,8725811143714831509
+f0840eb6-b2af-7421-38fa-1c2bf7c21854,3210521017,8679810393668427009
+76b0a194-feb7-4641-6599-2932f52fddd1,2532651485,13404070125168646545
+b368f0ec-345f-c96b-8c0b-41307a5566ea,1869448474,4956959353352217117
+2c44accf-a817-0439-5579-348b2040b605,1917415353,10192282326927170168
+c1eeb3d3-3c10-16d9-b948-665afa838183,1170607928,11272904933547426433
+8a8169a5-a846-325e-613b-eae9019e9ff7,4091440596,15059162010586242937
+48288519-e7ca-2102-51cd-0a1f0214d373,749888782,16498729025779427085
+cbcacc19-1651-05f1-8682-10922af738d4,1045110975,4041724739715649064
+74855f55-d119-fc3c-ceab-6ac7f880bf0f,1275099716,12615879967018579119
+784df058-d896-0ca6-a51c-cee459980a82,228943664,5533570651189523727
+5f244f39-0ecc-23ee-d7ff-c70e71ddbd6e,481422821,8609931107503339908
+082df6f0-fbf2-293a-330a-fc2a0ae78b12,1945874077,13243576745398816636
+23bda71b-65a2-7167-57de-2c5f89e583ad,1002156605,1732530670172705652
+1297f2cc-923b-bd61-84ac-ddfc67d92c0a,217277869,10432356897759712681
+aa7451cd-8bd7-6286-bb7d-b6c8354defc2,2146190143,12003144858410328505
+849f4d42-97c9-2f64-3265-a408dded20e4,1383345217,4779614138937818419
+5563b7ce-4945-60a7-b495-b3a4f021179a,1562448650,7464947594738922877
+ff3ed2c4-5fa2-54e7-7580-f081a7421d4a,2976883795,15580645090728024742
+4095a97e-ca36-3aed-fff3-91979efa8724,3909177434,7623363367154405735
+3e6e293a-3884-9ca4-3810-8f575fd77c66,276985597,6457450425429892787
+6bcb4e49-ed06-b66c-2238-feaa3be1df7e,530800750,9783094388329267900
+e5526631-467a-65d4-e833-c08dc6490819,2326374145,17365204542745202693
+d3ef03e8-9bac-33fe-e75e-1243c331f8be,1015034434,5850737532915022896
+f6ef771f-1b29-79fd-e899-202d85bdcecf,1933086609,8479265927857791607
+806f991c-d06b-ecd1-fa88-dd4aeeeb9421,652622724,13259401982482063534
+36fb748b-9f61-c0d3-e9a5-7b84800a5f84,1647462238,6354056383919296181
+2752df04-31f7-b3e9-660a-3b4d0574ae39,2068812917,15990561381027965865
+f0c56c82-e0b2-9014-a513-efb230214b14,2813005156,11079225110037190914
+e661e105-f01c-552f-7934-3ed6c15b4d38,3396193106,16309179974235117442
+77006435-c02c-cdf6-6a02-763605b285ee,3236904021,4756943734929187973
+0a2ae51f-a951-22aa-1583-0f4b43183005,2082594200,2295906714978720924
+86236ca8-aaf8-db88-766c-51e295e0598a,2477307578,11081889410138331622
+e2d6e630-65ab-2db0-8f2b-ee7866debcdb,1906146778,9600542025142679546
+02537ae3-1402-1c5f-76ae-2d5235ecc658,2042328980,4606847186542123350
+77eb22af-c5b1-ad25-84fd-cb1f99955d3f,3562708775,16578210404248549245
+d0803790-ce24-0c00-d6ce-bf758694734d,2504333003,18091641159666444489
+0fcb87f8-93d7-d0f3-1aa6-ac7fb5924f6c,3494866820,10817603754812641186
+0685863f-722f-a366-6e42-e3c9ac1fcb49,1202637941,12911422385379940124
+a6dab9b3-d4f5-b9c0-7555-a856ad5b9c32,691321607,10663550940094406199
+223040e4-aa60-d98f-09dd-52ecd6739ae4,362720620,4302268226936848231
+1f3c68eb-2a13-1c25-2d44-e7ec2b7b4e8b,2307046599,13386726112614502403
+a6e3edae-b0ec-74af-e554-d3c7a0bd8ef4,2817628023,10737733592665655021
+b97a5355-0a16-b57f-2c89-e340d64f0e47,2088139819,6823692510296039338
+76232f43-4a17-9397-4058-33297549394a,2371123870,11704807331416854798
+e0e9f44b-e9d1-9091-e7c4-6f85484d3f0e,3694999380,10380399807860696903
+5ea64cc0-0afd-02e8-f55d-651d65e37298,2559605984,14761797453010986446
+f61b0a54-ea9a-a02d-0dfe-6ed0fb74eaa0,781494590,16348124968872964543
+88582477-4971-0bc7-6afc-2cf2e084a7b7,3816309621,14385572751342027757
+8e82671c-7203-bb9b-fb48-f51fea5cfca7,3435232881,633889499533975846
+1e76f10a-c960-68d5-4c69-d58f7c768dce,4037811957,12402594547847903216
+4a0a0e83-5172-8d7c-f25d-22128f2a86f9,1748378753,5283302561782363085
+59434f79-aa57-6da4-2150-741cd7084d23,829296017,2963450893629163306
+824bdfcf-0f52-29ee-738a-8aead6b311f8,3236063437,17292218180607828449
+f734ee84-78c4-4a33-97ef-954867c9ed03,1244227846,13799416426432796770
+e6fdce90-5259-0728-f35b-75603c13fa6f,3848048056,6336668600419195791
+10a3a742-f20e-8455-3ad4-6e73baf5e40d,1244793827,739800391639049131
+245b886f-f802-4d9b-7675-93a1b5eac590,3854314672,7969074915124042228
+85fa3d2a-1971-038a-43e4-5f687fb6a2f6,1225679375,12578070931537351693
+46027d39-de13-8ecd-4bfa-7e477875b3fd,250955561,7067199758566089013
+13c19d38-ba03-9f2a-d806-7d7b59f42a6a,2403475587,16822191047897846066
+fa244894-6b0f-4376-1357-f758ac0cdc61,3425860094,4447021544972786081
+dba49267-ac47-a684-e131-8e1340424557,20041133,4364940116367163051
+8687c1b3-13e8-8d01-d262-e372f16f0aed,2626883372,7689912547293592093
+8e5741d7-1f30-6c6a-ef5e-a49820493920,40309989,6636177746829539804
+8e9a8d7e-6cd1-240d-b21d-3b9004d7585b,3520432128,16557328099291956203
+e353357d-9e60-8e14-4444-04ef486d7000,29427494,2461447877621754015
+1fd866d9-df45-1ac9-cf00-6e27d30c59b8,1504081698,12100554366081964812
+4f403230-03e0-755b-c675-9a2f566ba5be,3879806366,10709504225160193321
+23fe6c46-f286-eae4-6e72-553a38216979,149203947,14945136205703284129
+e539227c-bb1b-0cce-4826-dbe8e9fb09f0,4203230817,5973703991891605786
+ce2146f7-ce11-14c1-7c45-fefdd4bc1f90,766333659,8779635939977510062
+1628739d-7e86-eeaf-b65a-5793c41eb0d6,4234500680,12107541940884091183
+350d35e9-c98e-bdfe-eef6-e6b9c5a6f868,471017430,15165111706983667803
+393192e6-774d-670d-996d-f463a6532de8,3794885057,13687273970047932726
+db6ab11f-8c59-12c1-2d10-43f450f8ba50,1359243215,3041845956639601675
+ec787e8d-cd62-b7c9-599a-549ada5a8ae1,914709773,2945496541665799481
+a207d3d7-f5db-e5c7-de3f-690e9d420c57,1807219856,14894852510698489125
+623a2f08-81b1-a79b-cba6-bac0e9224ede,1511824438,9057861877934216925
+d2874f1f-bb04-45cb-2e01-2fd66f31c676,639131897,8414081055536214294
+a6154a45-e646-0267-feef-7c9bbec80bad,3620422228,11880691882519056929
+1807ced3-cb23-5488-ac5c-5636faaafe99,1192417333,585570213528817785
+d4889016-4c3f-3aed-598c-44be910c5290,1683636673,16488907728244857320
+e17cc4dc-6ced-2c69-c439-09f1ad74080e,2318134059,6872209069704465009
+b29ab4dd-6fa1-c6cd-ee57-9fb5c3b219a3,851594501,5423057647337546098
+ea16b023-5f0f-2eec-27a9-e3eb2bb98df4,900012930,6866775737734755449
+0db418c5-c431-54df-a23b-e695818544e6,2268683110,8804896721962526036
+7d38af42-87cb-589c-fedc-6804adac95d2,2120384049,5452483248456113247
+19721ca5-fc6f-f5f5-3038-efc782129e97,2607657641,10157638262472822557
+0a4258df-9c5b-767d-5e4d-3ba156857fe6,2324052282,334320574490229015
+9f325648-5f7f-2899-2e44-754f74a6d6b9,2644332013,3586641696259300466
+3b18270d-2bbc-7575-13e3-55928d5c28a2,3151803506,9881840398221256233
+58a20b9f-9977-3e5a-5d56-999c2e538973,2197931176,2426625803554988632
+5e82c06c-b0b3-0ff0-26a2-465dc51c8b7d,3202781233,9180602462454221270
+0c652d12-ef49-d9f5-15e4-3a0d75df0e43,848854903,130498780303099509
+4fb3e81a-ff7c-4365-69ee-e9a64ef393f8,3466994741,11797191611173123636
+e31f19da-a6c9-96d6-7c4d-a00fdfb07804,596178163,10591267798107127523
+1736a480-e84c-c9f1-7b92-b54a279a93a0,1464430384,6136322908722041037
+f937add2-f218-3dd6-5919-080bfc64f39d,2469697031,12833921025412797643
+e2c23e0a-4f33-5080-6844-40f28e618fc2,35920088,9702520317871083455
+082a29c0-1449-06e5-a2ed-33a0ab4c2045,2621082229,5758218341761177304
+01c3bfad-d824-dcdb-9fbf-09c9e07a899a,2662772996,5336718919334336605
+a97b2734-909b-9939-36d1-5c7a85178bd6,3396001264,7337291179270119902
+d8132f7a-3d21-b95b-fcb8-01afd542290a,3984388869,9176480396672172774
+8810652f-f4ad-9a32-9cc1-a6ac81809c25,4057973708,8647349648099940938
+f6d05ebc-265f-d665-9acc-6e55e78ae4bd,4236238927,17842511288751530072
+40cdf3c8-7554-5ad8-6ee9-ffd969e1013a,3474563526,8452405330698837842
+d6f14606-77ee-ebde-5feb-5875b1fe65f5,3438017062,10932762848978108885
+943443b2-7217-f65b-533c-a0d8a5c1e7ba,859307694,6963754955615808025
+5e3a3af0-2a2c-5923-009b-cbc5766dc494,1321482548,2837079521868502993
+ed77e8e8-0ca2-7698-2d21-793dc0b8ed12,15407479,2304842864689619643
+b9639cc8-5c4b-7603-32b3-06eb75674598,891117907,6763329598613089131
+53c5f8f4-544c-e41e-843b-03068acdf0ea,3818320427,13641672320785804005
+5872b529-0335-f032-fc81-01c885b205af,1347303642,17140567794812916475
+23fd2ba7-98d6-746b-d27b-598c49f0d308,2570569526,1351978888111501964
+7c96293d-5540-e224-9b90-a3b6bd8fec0b,921655887,8049516767702984743
+f52447b4-00e5-4115-8fa1-c7a059bf898f,2851350016,17487785516029674807
+846b2131-bc56-1373-5a6a-f13be3a0c58a,3193418924,10495809363025123460
+103f9c81-c106-f1f2-786e-857c322fa47d,3381915089,2189125861563399726
+6d441c4b-95f7-4114-6b01-8a43f0b4e22e,2548967919,10079002339032927585
+dfde7d91-21be-9b68-74d1-323112d88826,3669084519,14964296729600777971
+055bbf5b-d73d-a6e1-92a5-064495672088,238982929,10448347223784608892
+1351cc1d-146b-4e38-1103-5ad0dcea2b00,1532409117,11954087038520462926
+d3410900-bf56-014b-8de8-4890b35712b2,4092112433,8569496606268180304
+28579f62-44ec-939d-46b0-e4bc23964ed5,948031870,11782428820003006535
+5f71a951-1374-6c05-094e-5ce72b62a41d,1129840815,17498498461034224622
+a8206aa1-f161-fdd1-b94c-d1aa53f0308a,1264870233,3016035585533656985
+ea3e7e4e-c5a6-348b-dbc2-c928bfbb4658,1931347133,3682374939148970509
+71ad6020-7300-e953-a2f4-35c0271a32d8,791742663,5091280541549819273
+fa57be0e-bd14-ed88-34dc-dea44b40ecf1,2517959277,13686557046006440216
+4ea58f03-8652-4e60-3d43-bff6fdfb3eeb,2277640248,5649408277478202729
+e0ab5221-a85f-b59d-d133-df27266cbc94,2658944043,15027657120340141407
+bb926f88-bad9-9a60-4c9b-74d6cbd5a975,844819090,13196878307971077622
+804f99e6-975e-e307-1fa5-41fb088f7068,3933876903,8890922664158549243
+c0795de9-1a4f-de29-14c7-538c94751384,2842501688,5400533859959344508
+26870356-d136-9c08-40db-083bcd29c42d,1758048427,12476299813788125774
+657b708f-a169-034f-c3db-fcbfad4daeec,441222688,15318747483277280925
+c806cad5-a4af-9363-29b9-9b12bf40b07e,3499116841,14964954054107628813
+ea06d6cd-68e5-eb4d-46a2-f23c557bf1a3,2304124182,9291894296696558291
+d048dd2e-6f21-fec5-fef3-3b017084bc25,3911444486,14292563725990495746
+e2435019-1032-0f31-3f6e-7af508526ea3,2953995226,1187602131105617113
+76691c3e-ab5e-e0d6-823b-50ea107404be,233001871,15138481032847640036
+957a0c43-bacc-d1c6-741d-4e48e46afc60,3517799874,4427078654754755626
+cc5dc593-dae6-c313-a75e-136df177ced8,1084351122,891697645092687878
+aea899f5-0fc9-727a-918d-f531f04bb81d,3597716974,11070668981364661156
+68bb3cea-6c3f-9297-9077-c03a31192870,4177116606,1832726630245105328
+8c449d85-8338-918b-9a70-cb3bc29c5c15,3365857688,7415083568678365260
+7a36c992-86ff-46b0-0408-602f0fec38a0,1876737237,4705064941291644860
+20ec95d8-bc65-622e-08ad-8d6bbae19562,1865345609,11979139852767809877
+1e472a5f-9d20-fa45-3567-3325683ae95b,657041148,16453363948395111465
+a7c50960-83b8-46ff-1533-964ee8aced9d,1952539292,15164740135780124709
+a97cdbe2-3d27-36c3-7fa7-f2dcb6dc78fb,1525977829,9053669619997458860
+d9f5984d-44f8-1228-c833-8c8867a16341,1459300687,7011289769072971336
+3835e3f3-e070-6405-fa26-8883187aea88,1339766566,5094307011509399692
+d85d0c69-e3a5-2de2-d3d8-64e3aee03605,2218005860,12883004383818226052
+50a6342e-a46c-5356-90f0-3c45ba1e641a,1411804540,11222924299258216543
+a4b5a36f-6966-43aa-bb97-89242bc0874c,624834083,16682262103814310530
+c95bd5a0-2d91-c8b3-8103-a54a45cd10b9,3213329647,15741770859557865728
+5c08270a-a302-6075-a72b-10622126a196,2202611523,2461832534158476813
+7bab4618-f8cc-1a58-d2b0-d89fcfafb89a,1314107889,17724265908153186719
+8658e43e-1b59-e3c4-e6b4-d55fc96d2b68,3331901121,8446721580487446721
+ada8ca08-3619-1199-8f72-790538d75cab,3578108662,1978822386616041132
+84f9c3a7-a72a-d978-be08-9dcb5eea8bbd,1151146086,12148797838216182193
+d6d7f07f-ae64-a024-111e-f48a69e6bca1,2418124029,2609685723492514541
+23941486-79e8-3323-ddfb-6cf46473465e,2626942940,798075394377015032
+f090b824-fed7-5719-9073-3a4a563445b3,2535191558,5485008577238999877
+6ed7df37-4237-1dfa-97ca-bfbff665d3ca,385797444,5764987057097763533
+0f300258-704a-0058-6f60-8d35a69e9006,2247922766,13577514402202258239
+4355586d-a3b5-7526-5d11-b177690df93c,3875820807,7183082588560098539
+73e52f90-d6be-dbbe-990d-809f9df4c08f,2081057053,3031397544545470236
+7271f54a-d58f-2121-f9e7-809970d7a75d,626175921,18432923281196369932
+8cb7f807-0a51-5369-b8c4-0519a8b726b4,126556818,9065257071261727805
+7112a428-7a2f-3852-9fe7-c6c751f3a289,3170017699,6501853246350000904
+32e9fced-5e86-a92e-b291-0c938868c77a,1543847126,4555232583300432942
+4bbae922-dd4f-72b6-28c2-26bafb2b3bce,3545363940,17533643667929522922
+4858b827-48be-a4fa-7bbd-941fa360a8d2,2751913923,11673398426865818177
+26e6f8f0-c2e4-e251-2b7f-044c8e52ece1,3301756620,17621321609146082010
+ea97d4bd-9bee-a82d-6e21-8b2c4cd39768,1873356279,562265783138572814
+08f24438-df8d-7e2d-d3f6-847c4fed697e,348587723,1063796524980033149
+56e79677-aaeb-aa0b-896a-fd8293335fff,1804880046,10246597491217305985
+41b95395-acf0-01ee-3f5c-cd12f0def87d,3053997838,18330284519383494321
+2860291a-2d30-f157-a99f-c6a15d2636b0,2566120521,13599971979470803176
+172abc79-c7c3-5d2f-4043-b7ee0e47cf5a,919915198,14233087373980442153
+b806253b-8291-43e0-d2eb-d6104dcddda4,726771636,8362522856284024729
+b6430021-9e16-98f9-18e1-298377d4ad4c,4080652829,14059563903266368290
+a6bff653-4172-d8b4-cb0e-aa3cf5f3c6bb,3756744878,15328549660669036103
+eece39da-bc42-b575-a816-03e7359b4012,2196375216,13339202545121980940
+ee0e8e02-8eb7-520d-97c7-f52c7d795a08,1076368176,12860570378867006498
+92b5d7cc-5c2f-5a92-f18f-23c75c4b8c6d,1613715007,10522405114812196986
+f23ec67c-d266-7713-5fb2-d4db6ec98522,58300888,3992986047329125524
+78cb25a1-1d88-1218-1e31-bcb1e39600a6,3963275173,13990266325015238230
+7c2f7292-29b2-ab5e-d353-31b6fb18d64e,945901949,74209180994468363
+e756db2d-c6ef-ea3c-d289-5dc20e5b0763,3458383449,1656226416836380341
+fd174d96-dd29-a73a-696b-4ec512a03de9,1480706685,5422803092714778500
+a2075016-2ec0-3f86-422d-01811274d9b0,4173472702,6657917387512572011
+7bce037f-850c-c352-e13b-05c6ca68e60d,112819088,9249247106793361601
+e846a384-a278-68be-5fcb-ecaa66e34ef1,3042334830,10427934184865181263
+eb3c68d8-1bf3-df4b-71ad-aa24f45dd078,1403239129,10634140114824012439
+8ad05b7e-4ebd-1b76-8d8f-49809f464bb7,2856702201,10705395104803211601
+8eee1922-14ba-56e4-1a4d-cf9799008cd6,1456306529,12158643337439848955
+3ac169d9-b710-72d8-3281-45c098d024df,1124584694,5229324204096397495
+050ea8a6-e989-3802-3edf-8875c4b2940b,2741450038,8938029875357107576
+e1bfff44-2384-2b8c-42ae-bb5e8b472157,121639570,16571096513198439872
+57f8e893-3171-4655-07ad-9dcfe9be9b55,2216564418,536119567045836389
+397ce31a-1a33-2f73-aaba-72bfd2ce730f,941857625,6622308763616490722
+706ddfa8-0f3d-eb2e-db13-f1ca7b77d460,744230075,13872730625022536769
+94e40fb7-a958-3e84-3893-fd5b0b56a90a,2739155593,14427822286041495704
+70cf17c5-645e-878c-a937-03bb954e0951,3862259995,7277525266863001834
+ad70d18b-18b3-7aef-7f1e-a5b6afbc2d85,4213333501,8287780488549802491
+247ddda4-da58-420e-7a92-1a0d586383b5,1664762116,11914374008320653159
+0401320a-b25f-4466-a964-b2172a172363,800633887,5767112808734339338
+a45bd963-45bb-bcb3-95c2-3b468711a497,736093442,5721718656625674445
+1dbbe36a-b690-85d8-2bf9-29a01f343f6d,1641834589,9289670964331561562
+28c6d759-995b-b47a-e963-d21679284b01,2926051431,13653761630970135465
+01648d31-45b6-3f0f-accd-24905a34ad9e,4125156867,2357354826975875193
+6465732b-a94d-0193-d8b7-b4b82bd09d3a,334873461,15011168909852138871
+b6b54e37-ed0a-12ce-ca4a-ffcb58c65d54,2618275504,1189456238544915923
+4e5d7721-3c57-8723-6e41-4d3960e4ffe6,3202365655,4502350441074440403
+fcb75a1c-aa30-712f-f1b1-992fd06773ea,3028706060,2154808496878698981
+1625579a-251f-1fa6-6547-cfd61c7afe6f,2253325295,6139566066149306168
+474876af-242b-6d49-ad66-37e129e340d3,3651079056,9753922734375629536
+12f5ffdf-d77b-c09d-de3f-3267754547ac,3727119212,17258890074494981747
+942c9d9f-9707-0400-72d1-4c8aa369c8d0,2701296614,11693857973430293085
+8a9c9fbc-99cd-32b7-9162-81b535cdd350,2182207279,11109894646631958728
+253a5be2-f8fa-c3e3-db45-b5853635470e,3726770300,14349056971885076851
+f8ba1f20-0592-87fc-26d6-ff668f7e9c53,2900875632,14834212855375564066
+faf8d953-d586-ebd4-ce74-97be5e5e516f,3005135783,5817975418147135706
+26dcaa31-1a68-de42-ff15-4380f0c6336d,695691743,4627668741722334450
+8544e4a9-93dd-c77a-8d8e-33413126412f,2253487982,13631013019042114618
+a7c7fb1a-8615-4f72-155d-07df42b44709,2752247312,11607874198237833797
+a52ee937-5d80-2d64-b505-15ff78499aa9,4039128612,10008497924325966323
+b050ddd6-b41a-dcc8-ffed-3c62031e8afd,728724107,16795259810361656804
+c6512c74-ff1a-ab3c-890f-5fcec28e8f5e,2256894133,13177343205257810455
+409ba3e3-8422-6e0b-c887-36a721631ccb,1618488588,17918502125379845657
+d611a6ba-2cc5-2c7b-4fba-6a2d3f297bd4,2688453772,17857158897997483948
+249f8821-66a7-e3b6-e8c4-0867176a766f,56952473,206183238788806383
+704c2a7d-2b20-ca85-544b-455a32fcdc79,1273043602,15102112487021436991
+01904ec9-e697-c392-1469-686d947728f9,2484762788,4397256906299693031
+2ac165f7-b4ae-84f9-e77b-1dc86f951f40,4003590582,128527995710305426
+5a53a895-7d7b-bd5a-7919-c187a4b3a08b,539635637,12794693303841205946
+9ab91a64-8887-f5bd-7ef8-b722458563bf,3029097518,9484544747813955127
+a60b9a3e-3b85-b254-e366-20a41cc5b614,1049646137,14389308480049466314
+42bcfb39-7bbe-87ff-872a-9daa8001af66,3836699569,17481738255609165725
+770e53a0-3771-6add-8686-50292120f515,361057123,5197016711649518105
+5d6e41f5-adfe-d084-bffc-a40da2574cd8,1728463263,6295300415495204783
+6b0889de-1456-9fb7-9b33-84190102d054,11478467,18437993605297480462
+036c4ab0-4228-0ddc-80e6-2a1232c2295f,4162553685,3080064574391285506
+349357dd-6576-7066-2a60-0b17c175e1c8,38599733,14700613754236260241
+2563ef1a-c1c8-925a-dd26-0eed4e6c07da,1202005664,13034680303503959249
+5cdd45f3-769e-d8e3-a60d-55073fb200b5,3530139846,2003412085389073243
+080f2b9d-be6b-b0b0-b332-7982576b3707,2777956267,8386326670333354630
+7b388bb6-b06b-4635-de97-446d1bd2e206,2860749967,2696668481863493013
+d7800ece-daed-b959-032e-653c2b5d81a6,2564891815,14443072028841318193
+545cd8a2-57f2-1235-c06f-9592de1c3fcf,3592323840,1284524941261229250
+f5f3d822-1bdd-9af4-8938-41995ede5c27,1794388479,5522877571283859581
+0099cd50-96a1-4fd0-df6b-6723a6049117,3469573102,12554692220706399084
+701cd213-e799-8322-67c7-64de377de0f6,1152637084,8110283754248561850
+e0ce173e-7e72-a108-afea-7b4af6eb1a47,2816199870,10718166903257446228
+f4b5c4ea-be28-4b23-14f9-11953d73cb66,4026803280,9181977685761451384
+e1871437-7d04-2b2a-0a64-3f20bb4eece3,339625438,15287304490760679850
+37cd36e2-ba31-7b95-357c-2254d1eefbab,3682573024,16020947630896060939
+9605a80a-c845-e1b6-38cb-1beabb2dcafc,1037134386,2914640503587187859
+f4a8c708-e150-4592-92ab-6759dd8f7912,2467834387,16755665140183815982
+2549f0ad-c682-985b-dc13-a9e80acd81d6,2250688258,252241987054962104
+9dde1905-71ba-adbc-a55f-8ee47a61f06d,1695805438,6963425422775855096
+ff8d96da-8131-64a7-eac1-7a8dcf2478c3,3656742562,8767693599240984366
+6affae79-d92b-30ed-0ef9-5b6fc8c38144,3094139878,15353043555932527210
+0c70e921-78e8-a2bd-36cb-e5eba322a9d4,1144896981,11236007183552381032
+d36baea2-3349-d879-385c-583a9e838f8e,220087865,1042594583029825207
+aacabf0b-161b-b78b-bedf-93b4ade46a1c,3970878698,5104943018926935509
+67496539-1ce1-f576-d93d-be89e97fb40e,3526234025,16642687754002554302
+4bd3ad36-0796-5b42-68d7-6dfd932b86fa,2189941348,7681202330136671434
+fb703de8-ec11-20f3-cb8e-f8cf97b409d0,2519479141,1514130408633028159
+66672d10-8065-147c-b660-a2cc00d1b858,3520489128,2259350151472252219
+a99e1b8b-8c60-8e11-b1f0-f0443156f55e,2617318251,11442725000172201426
+fbafcce6-76e9-9738-a9e7-3d9d5f2864a0,2045770555,2004920246535968667
+c202991b-6002-903d-a2fd-cba265587abb,2873620781,14484898650235008968
+c2d3d196-987d-e9d4-2fc6-7788eb2342ae,3960521659,17168964159990201255
+ee8d36aa-7566-af95-f5e9-74f4025949d6,3631245729,3976569390486991418
+0b15a919-cdc0-19bd-3f4e-c378f9234351,1840391194,8022338259999717309
+ecd5c8c8-3ffb-5b56-78de-d182959ebe58,129066390,11826441946354464277
+e0524c7a-1a63-7b57-f7d8-0dc17e285f9c,1240475656,18065017192592440151
+aa830666-86bc-8475-d463-7995f0d6c1db,524147305,10608611250925116388
+ff3d253f-382f-c107-dcd0-436734adf706,4276894908,14908868240127907663
+cd092be7-70a2-9847-0295-237f0477bcb8,1323936719,16344337138752373508
+424197a7-ef0d-3a56-f67c-a86b09e87289,4193343023,2039179175916089898
+adcee6bd-b617-942a-febf-6fdd05c55329,353512607,17329748307662000591
+c447ee15-9993-2cc3-36d3-7fa6de29dd76,1885937523,4572590234153266586
+82f5143c-076f-b1fd-7087-249691679edf,2766662162,12513918901282089248
+a4b51c84-82a1-9fa8-f099-73b70e931be9,4017862336,13486864190029539796
+a4ae8d0b-a93b-2c00-4b86-3456ab1b4336,1834898572,7472266623467374787
+8346bf20-bc37-2ae5-5894-fa4ee1c5d491,3245377745,939173752503578148
+c413445f-f014-259b-1dbb-eb19b1f18b7b,802936706,6443979880765641346
+4eaa7f1e-7e34-781d-2e6d-db8e7433cc49,3916409562,6718091168081459930
+ed156682-33c5-6f24-b98f-17b8a9bac2cb,2851756155,13713942376136291513
+97bdbd78-0819-f322-9554-157b6f537802,1465523749,10644983721503932308
+ffef96d8-aeed-8a15-ac47-194618394e24,1867351997,15487359855009324923
+e6bb52a0-dcad-5943-f726-377ccdf31f39,2105770040,4896359298701309110
+2dc3aa98-af77-3b9b-3a0a-ca02e8961b0e,1906026948,16590958493912972117
+8063f923-f57b-4534-b18c-26eacf5ceda2,1223782923,7421118559864752484
+61607cc4-b670-88af-79cc-95d2cea0decd,3707312018,16185310063774599372
+ed3dac05-0fc7-4af7-be20-7faeaa80dc2f,3257574847,9377558779639392582
+64934169-d15b-4409-65f2-e4c9cf9ed04e,1273564853,4567304980482553152
+f9aa8fae-1c84-e1e1-c58a-6e7860ff9c5a,2236368456,1092790800606203604
+df149c7d-6080-c714-f26c-ab4345130b21,2312387156,15234804821457620719
+f4c4e36a-a104-cd30-db3d-dc016e2dc72f,528776948,11368837589513961813
+3a42d619-a540-53f5-eec5-285ea6894c12,542999204,11095935020965363809
+65b6d2d6-77c6-9e17-39db-781e2a0838a2,4133322946,16879643551858966968
+78d8d4ff-b048-bb44-cc7f-0f3ea33b462b,1949089077,338113002122694309
+b3c2db38-6a23-7854-9cc8-c0801a0be2ac,2886120822,3098809089726169188
+d60c75ca-88cb-96b5-4f46-4a8bfdff26de,219950965,11808244063371886122
+472b3865-171b-9693-0901-be2f7fa78f4e,1844834010,13116239467553689633
+c89888d1-a9ff-128e-1b76-daf88e685e2f,3773295725,16597501186442996570
+eea0ef1f-34a7-4a1e-f01b-e2606b969c3b,388121018,17544209296014961734
+3dac6458-a4b0-5daa-b7bb-d32019abbc51,2682473612,3086031151924405970
+01e6c377-581c-af02-297a-75d786b13739,289136852,11571732671775468794
+c77b5e4c-dcd8-395f-7c19-c98bce5cdb59,2301576179,23786946464642375
+ef4220e5-1f74-5105-0db3-d1f29c98ffcc,4003340094,15948169734187762942
+0fa17e67-895f-c669-4b91-92e75957e49f,208523730,10058192324792145848
+192b3c91-1386-0dda-8886-c7cba1c7a99e,2664905102,16450167088697360536
+94053248-a0a2-fc4c-ee04-d413a1ff42ed,3573308863,15414800587216270461
+728621a4-05d7-672b-010c-15ce8ddccf4e,3218693354,1133648538102883341
+7a49b62f-bef0-1ef4-37f7-f9dd2cfe3429,1098635405,17671708491879124052
+686b995f-44ff-c2cd-cf1a-014e4116344a,127976857,2366974399592948832
+db3b6205-327d-b39f-7b05-5be8d97f5d54,1116234585,11295583067090016883
+0206ff14-f566-7aa0-2010-8b686b98124a,3613471054,1571379822780107662
+2c45a2ec-dbd1-18f3-c42a-67e4a0cdcccb,3242610842,6287013382309572476
+4e20e514-10cc-f940-4405-7c65bc08e0e2,2473364716,9574429175683248761
+41b46b66-c883-1fce-59ae-e3751bc1c076,673841759,3171269973848015225
+29921217-9e9d-0f68-27c0-adfe9e2fa981,621659349,6870688666402051203
+989cac8a-c1d3-4848-6900-b4576343c5c5,2387971842,3683570971334291430
+5f3db621-1ea0-b8d4-780e-49cba48eeddd,3276767640,15078845189472049906
+9adf1707-4fac-b293-53d5-bfa2ce8448a7,3677093959,7846959395677453462
+a9366820-e1b3-639a-b98e-90b957609272,989975759,225615896056948517
+f0ea44af-cd69-f363-00cf-a1a175fe9b3b,661453641,16171089377581586413
+e77e5258-8f84-ae63-4530-53b7bdf639e0,2005334913,12552449306001653389
+4aea463f-6e1c-104d-07d2-566b524a303f,802954863,11744996162962604211
+d0fdc753-7a0e-4a99-ca03-717fc5bc1ed0,962975356,5330538399506044919
+8c79b47e-1192-9cbf-e005-5b8b1730443b,4195669705,9000978624469677465
+4b77b1e6-4c9b-d52f-c462-addd614fe27e,1170144442,14150103854919900161
+00a6b485-f813-30ef-7841-03c900cf16c3,1876356122,1530797936907911470
+93a1eff1-8e7b-7021-d7e8-42137b7ba2a9,876301836,16111921014557151137
+4e0ff9b7-5154-abf0-7a11-f60c46c28bf3,171924117,3082100550048108112
+2c96fae7-dfe1-597f-0d6a-f5ebc467cb10,4091683911,6758943475154224665
+d89017f3-17fd-1e8c-3d21-6baf414346f3,3744005903,10809626718903509963
+b32fd150-5408-fc91-c8f6-9b47961061cc,835598137,10094336643255906031
+5501c46d-104d-1047-54da-2fa08d7af612,1723347150,3191241343027504629
+634bc3ac-bba5-b8de-6662-208bdc380898,3845631695,2596831544955401739
+9d659093-ac9c-d6ea-63fc-893c50fa7559,2563959705,7833397732024931414
+9a23bf43-7228-e844-fb89-971ee47f78b8,1199680984,10790233429081661961
+75ed7140-2667-5d12-3a7f-67bde53b787d,359120175,17372498873066780762
+aa524690-7986-7a2e-cd56-00ab0078e4ae,3110803237,14730578981265545962
+1f0bb353-418e-f5a2-88b4-1fcb55b46913,2557364469,4690377299549988623
+840e41aa-3869-5d75-ca79-ad09cce79563,750043866,1892406196669332695
+be2aa369-7fdf-5d71-80f8-257734553da1,1754781905,14363485695071266635
+ff82a8b0-3727-1cf7-0607-067ab02019b5,1844516006,5812824418574176491
+6ff2b6b5-50b6-2590-34c8-960b20c50a54,2645206358,4559141399080664777
+946382d4-6abd-3910-9962-1bebede9932c,42479954,17292182971105979505
+bd3524a6-fd55-5bdb-baeb-2f3b916a35d3,613131085,14836220714575206505
+edf12508-cc4c-be3d-43e7-4edfc7f22a83,3430199019,6661982927767413207
+78f639eb-4062-d4cc-a7aa-0db0dfb2a87f,200825308,6840477745498940898
+421a8943-ae60-afef-e05e-8b6285a123b8,1421437038,13573033067841161897
+c6c74926-7c07-e3cd-0206-856ef8d3c463,3284406702,5424677683247595350
+6ca859ef-e5f4-9856-3635-1794a3e3b1e6,188398716,16284485995841841777
+53acf9c3-8b54-e483-9f8d-bab22c3ac856,2244086406,951875511861154190
+becfb53e-e5a0-a9f4-7be7-320fe24d4f38,3838121807,8416031850853284507
+f3f91264-0a44-c997-5908-71b42c404210,4238149980,7739942431333627167
+8c63b877-8546-8a4b-3ab0-211398a949ef,3356611038,13872089595110750027
+306c684c-7ccc-6288-8521-f6e5237c7591,4162700137,6610114194211798406
+c9d3b9ee-3042-513f-3629-09a0ec140ca2,3554268889,15992198009126262232
+6261dd2d-5548-3c80-fd5b-70dbc09f7c11,2786253114,15301848719784066349
+e6111bd9-9c3d-46e5-db83-bbe3b047a124,2476218588,3907470202382334725
+8e0bffc1-c62b-bd1a-8e0d-b0d6a4079c78,2663869650,15777318670019470784
+d9130932-64ac-9437-6351-5bf9a270b442,2623948731,2052059851302628217
+a837d1a8-6569-6a5d-9778-ef1d4e91cbc7,3552531055,17364181511244772412
+17aed96a-ec77-5b17-56c3-bd87955dba66,4260780911,8198169461116539813
+04a2c8c4-7bf9-54b6-ee2d-8ff4f03419c0,3024572338,10552892147774385640
+73b11d21-00d6-4435-bbb0-eadcf2890a67,2563956236,17222596783675682306
+84d2aaee-bc26-b5ef-42aa-fd4327032c02,2430485781,2910783623753745146
+9ad2cedd-80b8-06f0-6cf5-39d7f73883e9,658202953,3609038914388985283
+fe7838fb-7809-5108-3c8a-f7561e0a6681,867173621,3881480813130603172
+0238a5a7-d231-db3e-1a5b-a1e9a4edfcc1,4006314495,8060638167288749842
+47754405-1bd3-3d17-7114-5569f5b560f5,3646226587,3749496357105257997
+b93732b5-4484-e9fa-0f04-8337c6482a61,1822732377,16043107151751687610
+55741d70-d5b3-5dbb-d601-fd85fddba62a,467863118,11624902391280440306
+65869259-3bd1-9fb3-7d34-a4ad5c7c2d9d,586540845,15826683752878075717
+816d320c-85fb-751a-ec6a-852a5fab92ce,1989327499,2798861932867743372
+c354af02-bb28-ab9e-fde3-93a5a8c13fbc,1737283718,14274722510621123242
+1decb72c-c6e1-d287-804d-168b3a409aa6,563292563,3872073797966006833
+1bf69104-57b0-1e38-43e9-4ca87f77bf44,2175036020,6050065171907789421
+48971506-4da2-d064-d8c1-6330bf60a048,2330403688,689790116337290972
+2654e646-591d-49af-13cc-84c76423bfc6,638054856,12426786239238207623
+3600ec50-df9e-e1d2-0ede-09f6dd35894a,1115083726,10294661952127361055
+94739972-be6f-a853-24a6-bf06a1a2a37c,4237728114,6010510774154814125
+68adf456-be7c-20a9-8c85-0cea3f55a18f,3669416159,206509647735504771
+25ae14ea-7990-5c24-cee4-26b84009a241,1628243901,5979189788405836570
+ebf7c83d-ae1e-ae3c-4f99-44fff04af9c6,3243121940,18042129731158676632
+1ea877ca-0771-5ad3-5eb7-2a4bf675a4a7,4285213317,2228906723253709737
+7d89f93d-53f3-089a-eaf3-e622e63ace53,1898782719,7081202924326762480
+c1853d71-0d2c-8f0b-78cd-2c6b94f63fe6,1050017766,17582671466959836262
+ed04004b-951d-f417-be64-081878acf71e,1775082278,3373768220814245272
+5472122d-9434-c1b2-8f5d-d47e38ade39a,3995309375,4005991493612136115
+23df5878-b622-6e1d-ecbf-9a94c89f6638,289315946,6286655995049071864
+f286c154-3a33-53c8-cc75-897522c1eb93,2963457442,988778547203984398
+18907370-b375-e227-90cd-0f0746bdc18b,3104596516,9745101233770376346
+8fe237fb-6a3b-da83-176d-2769897d8bd9,1858760446,1480202966620391653
+b827b4f9-0de9-f432-6722-2e0e68553123,26201180,7968535059231737678
+e07fdf06-0b2b-d71e-4c65-dfc723f469d5,2184779961,14240792684385483866
+2b51b1d1-3020-22de-f780-4101a232681c,617494818,16313075959443656116
+0512bebd-9cbd-1725-9331-a3d593059d5e,2003603004,66192216943751269
+08a58035-8436-ea91-caf2-1d8f111bce9b,3500671649,1345321420001869704
+ad1cb2dc-3852-f53a-cdc2-301dc48f8b4c,2598238878,6889405992961893494
+bc1248f8-609e-0bf0-5c69-03b97af5678b,1296404246,8941857419688018468
+91a4ff27-37f6-edba-4cfd-4b33c8d52f37,3567313224,9880037915195233101
+387baa50-8bb8-d490-46e9-9e577faa83dc,1571140035,4607673187023890520
+ec606b56-0791-4ee9-c3de-450535ad2bb4,2262000227,12934383854098916257
+cfaeafa8-7a50-f2fe-291b-c5a7429695c1,3028795341,16828535593227903122
+fa74ac39-b3d8-7e3e-9782-d7da2cbbda2e,941911213,13722048590221029659
+8e578620-51c5-6b06-14c7-610b69bc90fc,4146593460,14238888100075646705
+7e5a930b-f0b6-cabb-533b-34b585ffa279,3519231736,9508868971320032245
+ccf561b9-d7b7-96ca-9c12-d9336cfba90f,3180673882,15881677390588309972
+63429f99-5e91-2cb3-538f-d6cb94ea8e85,2456519002,2943854316468483718
+e7602403-cf28-52b3-1f1c-afa624aa078f,3712952675,13861162890986266834
+f9dd9527-d2c7-e525-5216-272d2903dc7e,712304618,17331083974011400659
+4cc05f4a-c55f-3795-60c6-fa079385ae4b,818283341,16347272816175932992
+90df8d79-8554-7ccb-91de-b29190e63f78,3758341126,1809993832987014092
+e6fc62e8-f7cd-1d90-8fcb-e91c74323a9b,94124309,523960013697128058
+2e406b90-1e88-6e21-fa85-81028273e8d6,2072165087,3002602524477144153
+063a3abd-754f-fd81-d40e-665dc883a7be,459273105,17398686031429409234
+5185f379-3453-398e-04c8-12a345e69109,591036041,5824352915503480697
+7b76447b-fd4b-8945-a3ce-1913791c3465,3609222438,8211153296053053869
+e3346c48-ab86-de62-c4f0-587e334d6586,3462316485,15344307145081642929
+3be4e01e-ac70-87fe-10a1-90b1cd00ec36,4105612577,8003423110809396964
+f637e603-64a6-4475-b972-d47b361ec142,3939209269,11659722300988346085
+1dd0d806-47fa-e5aa-2d87-84cc4938fcb9,3063848217,12847322259086958657
+edb1b1fb-ef82-da35-828c-47b7667ad4a0,3863184068,17444720748782949662
+95290a2e-39d2-87ac-5bca-542da6979e4d,707704568,9456708706595242133
+781104df-0307-1cae-cfbf-64e0598a9ffa,379777665,15731382191702417404
+58adb958-47c8-ce9b-fd86-ab7d7d8d7204,130584807,7676096830303469512
+aa1740b0-ec85-e09c-132f-d51744db75bc,1155001107,12697226742739861329
+245acd22-e3bf-db7e-ff63-baf8f44ce668,3294941398,18162507324163376023
+80020fc9-a411-5ed5-8880-a35f687bbec6,3005400458,6161771295623028818
+c5d7cfbf-4b5f-16a8-f762-bd7a8fcd6262,1860418100,9360912174171935764
+83f8512c-cc7d-87ec-eb88-46a00bfdfb09,2637182346,335228720439474761
+5cdcc6f3-8cbb-a23e-09b1-0e616d1c80be,3064101735,16550720169027842563
+584a6efd-f0ad-7da8-503a-73f3db342d57,2858191678,5632865784720752741
+fc7fcdaa-d83e-b538-8550-8b4abf8cfb31,511306455,9574343740282771584
+94f6838a-21fc-0ddb-2f9a-604d4a88c78f,721814423,13035261086744678455
+65af9e2a-53ee-e874-37c8-ccaf81850ac9,3659261536,3774689891899569564
+149e0bb3-2778-ead4-c67d-022a7877d2f6,2266272253,6304085732274367320
+f17d35eb-044f-ab99-1116-c7bf5fa9bc5d,1016374214,3013397790757528026
+888659cb-a219-23c6-aa5f-0053c0ddf2b7,1029816027,1509456071957904467
+9c502698-85a5-d301-bddc-5e194e884bc2,868487126,7664088871041447440
+a618281c-cf0c-1213-7909-18bb1f032caa,2342953,160224208544048525
+af56097b-0132-0a90-5595-aeb5591feebc,690942488,17712946681147606152
+9366a94b-9b9f-06de-fbe7-ea6191d23d0e,1505862167,13009844856733752810
+b286976f-fe29-6158-cc24-30d48615970e,1926659289,6965691933547417984
+65fb9778-d3c6-ee81-4e56-c5e97f8188c4,2068598607,8822978470064668533
+ed8a1393-7f03-f27e-ad6b-047bb2f1ea58,3579307386,4767065227149972182
+8f6f7bc1-3e57-f709-1d2e-c9b9381d7889,4087619863,8454902422293946772
+71e3f2f6-db95-8276-30cf-f6dc76b4e1c0,1158074716,4492804179540619357
+d43c0fd6-dcda-a409-92a8-464fb9dc646c,4206489868,14764421812657869592
+b61d35bd-3d2f-0ab4-f76e-c6ed67a605b6,3360308347,368638404701676843
+7605a4c0-750b-fad6-039f-b5cb99a749dd,4196421254,13837034801928524006
+8622a7f9-e06e-fcd1-9a0e-cde336fbe835,2582992884,3962161342506075417
+5b45ee3f-f933-22a0-e37f-4fa62f2f7847,84273839,1508922966352804324
+50c2b07a-1232-6f02-811e-68e8f5bd3240,1707351001,11478597820123622296
+fd2fb543-875e-2be7-ffca-eb77a4ec0738,2233040985,9511794413057782379
+8af8fec2-676b-f4fd-5d02-555252a59066,3807557125,3708485716504035745
+b23346b5-430e-75fc-042c-caa358c648e2,1453117146,9424300177310407432
+bb3d7d73-fc45-a596-bec2-462d30f07825,2043691318,1190680497287173529
+2402da38-3e75-31db-cbb3-4f3ec6029032,2501191391,9603549290594222576
+edf51b22-0874-0972-748b-37f1bc47fed5,3547523046,4666950884782432033
+9ba8a705-0873-6a0d-93c4-87a2702ec063,2523361482,2140069104093369599
+0e7127b4-7b62-c7a5-ffad-40c6e102e515,1206917238,1117220324900862329
+6666db17-6ba7-0410-2557-a08a74f4102f,1616118460,10021721616150588189
+6eb20643-79c3-242f-83c1-880340f343ce,166053522,6270578155953952180
+0f339dba-c3fc-a50a-2fab-c326913133a8,835883698,15703052814893305560
+99a463d7-3556-9124-5c94-0e4ec07c9ccf,2204353271,3149910390806412186
+32d2734f-cdc6-f643-f1b5-ed88615cf4ee,154458563,7881731584364423546
+192a9397-d257-a655-c6d3-2b930407ca82,3557823788,18102380104787376507
+f5c9cdf4-f843-66f5-3674-46d0cfac1fbd,3362538542,1503756886721042249
+c3d307bf-f888-d462-07be-c8265268916f,2659210031,7435076826731007793
+38b08b5d-f434-4cfc-d089-c4b6be05aa79,393307999,3572183220007507708
+743f723e-975b-8fc4-36ce-aaf6c601751c,4272792699,12642408784409067956
+ad8361d1-7024-fdea-3d8b-c71c111a7571,18338979,1046677741622812634
+b585342d-d7be-902a-8c4c-a9b0fbb4e66e,2675680173,9587786847202798927
+b8c33559-676e-55d7-e0bb-253e569cd6e1,2748621057,6833277207553657056
+b5f31715-d94f-5760-a972-133ee766ac80,4127803560,12741889644111286879
+944aad76-d17e-24e5-4d29-a14b072626ff,2561485218,1188160085071618818
+8492a574-4f45-6008-1bae-4212df903e0b,1845887178,7478317244226459525
+bb6c8867-9fd4-b0ee-902a-ddf8dd5090c5,1643321442,6291564289521709959
+5109481c-7904-5e01-9af3-c8801db5583c,90824355,2702023057502137627
+d156780c-f697-4d57-b021-8389ffa56554,3678377709,11525219231578119603
+0978b2ad-18fd-b5bc-d71f-49349d695d45,2539847806,10784789146160348725
+8f76ab29-5296-12b2-934a-e8cf33ffbbc5,702695568,10766475111972687674
+7eab43f8-61c4-8dcd-85b8-2455459812af,2288980775,12392796691237923453
+5cd6ef33-27ef-ff4d-9d75-0b4f928ebdaa,1819812453,8473237815576233969
+5ade7657-2f10-cf5d-4316-5114fa51184a,2104533691,12270439144961002444
+84279cd0-7b5d-720b-110c-14e279ba729b,567310495,3442652607626411148
+d27911e2-2d01-6bdc-12c6-f934d8a09116,2970915704,18305994334325626117
+802aee9e-bf13-f600-9982-dd5e19d972b5,259093453,5177309856999693125
+8705ff56-53fd-c3bc-69b1-f50ac319d416,1059158876,15279725921353226038
+e3acca1f-69dd-3fe8-fa73-d1cb310bfa91,70052058,12737279780186820266
+e237c50d-1b83-c2c8-377e-596fb9458598,775547143,12545191715412635755
+52ced59a-92fb-71c2-eea4-8ed364252a1d,884175175,8664851238251289938
+14ec7ee6-c09b-48e3-352a-c9974be34bf1,2319721277,14743358300459036772
+7363da8d-bd16-d9d0-7629-59602e9aafbd,1058450137,6951472951425671647
+812d8f95-87b5-26fb-38e8-fa3fa1b18476,989656221,5253374841514334028
+9700d1f9-0f13-3e6d-6440-886323b8f055,1047199148,2306652690201604240
+0caae6e5-a9db-faf0-3b4e-d4c674936376,1110188494,14975814171187919868
+ab255bba-6b97-418d-293f-40258045353c,3347737972,1724298892004108140
+583c9d8f-aa5c-28ef-922b-4a0e6b41bec0,1481468083,9872452690760956361
+dee239d9-c74f-6626-e62e-d97265ddcf9d,2347617495,6622314605526598672
+1eb014ed-7cd6-bc33-977a-40f8e647933b,3700499974,16865457444908125982
+d90153ea-1d24-e71b-86bb-c56780011907,3544041498,235599230734450401
+094a8551-d007-f131-92c6-537097f75e85,304314798,14572853220618697340
+2dc8b97f-5bf0-f654-5b0f-1b0f97fa1342,3685225703,4093730734397586458
+ac3953eb-56da-f9e0-f073-7a1b0e0a98bc,2470241520,10511381484778624773
+c579b2d4-eb99-2e8a-69e2-ca4bce2b0e12,1566671596,8822957591153192328
+6c57607c-bf6f-441c-f461-3346fe8e030b,1820284297,9322382731405806795
+510fb834-8d22-2647-63a5-2e38d2e6d24b,2605624264,240223735997883664
+930c9587-b584-09cd-ad04-a9e1b2d7c9d8,586393999,3227247626623366118
+4fec431c-6257-aca2-55c9-881b7c8e9ffe,3482541819,8380907112051779565
+91f127eb-60c3-21aa-9884-d053f1ae496a,1324502558,342862587221207256
+7109a498-bd77-2d12-b8c8-d0f541990490,2659177300,12091378201759930501
+711abd6d-1bd0-366b-f434-ac50972ab6c1,3844748135,4228210049837486
+870e7704-4191-a45c-deba-5f1990e99490,114128824,15992697353659968885
+aac96cae-6fc9-6e56-4294-cd471299da90,123361886,7375491783221285380
+e33b259e-6bb2-bbad-7d91-f6a6a6902f31,137839976,4770539063083103486
+28094f6c-a7ef-d15d-0753-f8dcf8a6abdb,3965446274,481213869906014613
+e59be6cc-4de7-fc90-d097-0bdf63281d66,2959216857,15311129690411719698
+4171d13b-708f-715c-488c-91bc57a11f2a,3425884130,3101487606948431714
+d76bf2b2-c76c-ccd6-74fd-0c4ef6794d57,4089840467,2810525961274891231
+cd2c2e62-a388-c992-b06d-b87fea31e5ce,364672410,931334309724078461
+3249aa18-1708-3c03-9083-cd5496041e80,2337825705,11078536666167363023
+7d657625-ce89-0bda-ed1a-979edfe81e4c,2418364615,9171826723680296617
+f2bf6041-172f-299b-87fe-149d88baffd5,805066666,1433927451537599462
+b97ee748-3dce-f392-392b-a0ec418d8d9c,753740546,5538376639997575417
+e84e3a0c-ef83-bf20-de4b-e21a34ee34bb,2751818390,6530204387819853999
+623d17ae-c494-dccf-3126-26ae289b690f,1923554742,6066277221375145016
+10dfd5dd-eacf-258d-fa63-0b02d7f30312,3816316426,9543788173364395958
+53925e31-45fe-e4c3-e030-edc532a65879,1438113648,7692778116324568325
+98255c20-654d-6339-add6-798523eeeed6,3268158758,10395121199495270500
+c284ee51-4c98-05cd-2b67-679b3201a4a8,2537692154,3352522345376460178
+b72fff5e-17dd-f6e5-b3e9-6308ae677e59,961843189,5574134884138306425
+ea360550-7ade-f321-7ac7-707a573fa894,536562374,2336637409607162045
+d66cf400-9c11-54fe-6b0e-587e4ee8fb79,1018535069,14216068539417791984
+c67075f8-6853-894e-2a00-117e07fe0347,868571164,8733073182214067866
+7fadc11f-2dd3-3a61-dc54-5069d7180308,1182089350,9850864721733729222
+385b9e05-32a7-31de-3491-b0897f020686,1296696077,12952650219769953874
+9ad1eedf-1b2d-c70c-b43a-83f457d47e0e,3346797124,175551377679287758
+24da7bcd-d2e4-b922-ecab-d100c06accd8,1055949771,3916251504555026652
+9b0aa8c1-9577-9626-e9af-178c19934755,488156272,17406197030928690527
+5218171a-dce4-1474-ff96-2aa9e3a1a53a,1209423822,4227702729757180751
+82f3373e-d2ec-1994-76db-84bde942bf24,3002537028,8469429687343432221
+ad6a78b8-4be8-9e64-c581-748ad027ce9a,1843026242,15120497952948618183
+ff490847-5a16-b919-cc1e-1d935001993a,3049173864,11211400651403191466
+e6a6cb96-ea0f-6fb0-b49c-e2e6adbe271d,3428234226,9755616914080870707
+b06ab284-4894-5ceb-5648-5f03f2bdb773,4104521862,2295507170211710271
+212a5d3a-da78-3c3e-430a-84c168b5e191,3038446645,8978590579305676686
+bd2c1178-9dc0-02ff-2001-f318f64ef818,721277542,1439296885227688778
+16453e40-d95e-63bf-8522-eff790f123d8,31249288,7922258556155807455
+6fa4e7f3-ead4-bce0-8b4c-f849ec58f92e,4004911716,7699965597548458049
+c958f695-3b9d-45e3-fb58-29c2a2896eec,1464572802,9490693116559024520
+51771a0d-5720-2b90-fcdc-c1dfc113437a,91441691,206933864361166448
+53850f28-266e-0b42-76ce-14be38e43c2f,3267697664,3521824059333363097
+c5d22f8d-069c-dbcf-631a-2bec83bbb48b,3957125535,13124654674751048713
+ad7d85b7-462a-9503-0c97-4521af254538,1442520188,12037175870351045257
+4aeb57b3-0fe4-c811-6d14-65a59a479cdd,3025453604,13679940741370932874
+5c88377c-e237-4601-4aa3-b2f4d30813b3,3320089334,12842753514362557104
+bf9dd1ac-9b86-7153-abbf-bdc1fa086fe9,3006785848,3674083520687958986
+9d65628a-a607-f76f-1a9e-e29dc74d4cd1,1142717717,12359672216123505554
+0466cdb4-67ab-2ede-afc1-71278668b028,2234671157,16252418121667663030
+e6db584a-dcc3-31bd-dae9-a451a2d468b5,292610303,5851148142586710065
+152e5b2a-7f38-7228-59d8-f4b6fc7641b6,3400676756,10921621050221228526
+d7814326-55b0-edda-a721-ae5231d8e4cd,2356676188,4104913292828182788
+472c0e01-68ff-901b-8de1-c7667c5f18d2,2338993906,15084464485947645082
+73c4096c-3f49-b3d9-3794-8d730ac7148b,1753741200,18058802426557972336
+89b409c2-5013-1137-b98d-ca0ec4b18dd4,1532816459,12548257416081953467
+4c73787a-c36d-c135-1733-a8d5a2151e8a,1838075890,2793662151517844825
+c04e30d7-93d5-e948-0489-ac456b922c50,106633109,3972003912817180233
+df211d49-ff7f-457f-6380-2400d76dc229,1502573570,735005977513992986
+2ab2b146-717d-a61b-80e5-b0344ef44bff,1854048336,3766738779528624090
+113d11a6-2ff5-1054-d91f-c633a95a12d4,239648450,11538214235156967450
+fe28f6b6-64ca-19d2-0bf7-8ca3b4debbc5,972412778,9029693129765375126
+da7a5c20-3023-15c7-906e-479b3ac0a428,3307880322,4423255839154181949
+db95ca22-6847-2607-540f-f8efa2caeb3b,16416155,11869041400329634035
+eac999eb-d064-0e32-ff7a-6547f7a1291d,1572147213,2386556903220396164
+e87a4cd4-35c1-7b4a-b113-f19aab05bedc,3174458784,187221547579846859
+6913dccd-c566-29f9-efbb-d6d618d8bbcc,3814161341,8697623858002943407
+d71e9a7f-f25e-978c-b89b-fe8aa0de1ca4,880029743,7745267943679344980
+7c3d6142-2d3a-4c00-7d2c-ed1bf20afc3e,900738647,13246566041564314175
+9488ec10-5dd3-f3c7-f349-cfcfaaf77f10,2470694168,17212559393220053320
+b3599b91-ffb8-2831-206c-133c1d3e01de,256239819,18097300330091814416
+d9983d19-525f-8913-851b-df6f2b00f3e0,3547554003,7298826208266972187
+fd40f77b-87b9-dd01-2646-18e88f4b7792,239244041,2296682280777997960
+d8f9040d-6fab-fb87-4a7b-00b11db6ce29,1676737824,1131630711204522365
+20b15a46-03cb-dbb4-0b7d-d0171dad55de,3667598957,2352442031690386666
+0bb6cdad-fd32-22f2-eefb-dbf7e9a09cc5,2867762685,3955722985495232153
+682cd525-7447-0772-4c06-d19213916564,382649285,5530261275250237674
+7b58020b-0a70-e726-5c97-9490f15a63b1,500893894,16924019187786031908
+08542212-27d3-ba29-2be9-13527e8325eb,3539354501,7583459231864054812
+d9af10c8-94f0-b4d4-2f41-d31a59f13b11,2115279754,12887926864259980117
+68edc706-1fd3-5c24-ab8c-d6f7160f0424,1423517472,5396201257243669511
+e7258119-9109-94ca-57fe-858fc5c728f9,1418508400,17624257294996465436
+b54a4a94-f8e8-f4b8-c07a-cf80552aea1d,4245505738,15556573607122211647
+7a072ff4-6032-0cf9-168a-5e9aadb41983,2295096545,1585984987784852526
+82d02f41-0837-d29e-db6a-b2c99e114151,3324317754,1415841219964615275
+31bd0520-1ccc-045d-0e9d-814db1c635c2,3371384538,7872225844500564439
+15783f5d-2af7-ce5c-7203-af442f28e279,3628526986,9231760361061808217
+4e02f34d-804d-fa9a-b1ce-2629529c0c39,3150341333,2335200279448880692
+0412ccf4-59aa-f65a-3b7d-d0094628212b,1179638993,11436386216743687251
+addd1bec-4739-279d-503c-237afdfa20f4,4229388187,17905875841261107145
+a6236dd7-13cd-bad4-8f6f-d8ca8c408a8c,800550148,12730936089246280907
+f37df139-6389-3ec1-e8b0-07c8af9613e4,301912044,13008703323068683412
+bb12b5a4-31ac-0b09-51f0-c3228df3bb56,2590158852,8915274804118767688
+6dec2b81-6665-8a11-b4d3-6866150388af,3502061880,7343896729710540448
+c96bf629-41a2-5a8f-472f-a1efbd811f70,3973579403,12211520125281298516
+348acb89-d452-a693-5d8b-3d10f0bf221e,2473176060,17249784071905143353
+9ddfdd24-f18c-8bfb-9206-5ee1109fb40c,1198345615,8545065384850662758
+64438ec8-7bb6-c8d8-3ffa-808a8a6cd87c,2025676051,8566406673801953293
+da897885-7d5c-75a0-fa63-f9d011189688,473524416,11991798342162733510
+b0646a76-7593-9129-ae90-2cf80490b6cf,780381546,5710162387597929183
+8a8acbed-acfe-8443-9bbc-bb67f7bad65b,2633691131,16931349924923532329
+7afeccf4-f6e3-c004-46a6-28f8d75eef66,1270583732,4530827500435521355
+c958b47c-3a29-1eaa-c5ac-2c63cdf65b0b,1449634554,6232202065551505882
+5f1c6aab-2516-023a-78c1-684f99c1bc5d,2989800911,18365350734129782959
+961133d2-4d03-55de-d3ea-06d3af61e58d,3596525669,5415566315930888367
+9286e0ec-8f9f-57b0-fd7a-107ef6e2072a,804407464,8487303745589530006
+abd650a9-2a38-825c-2012-4474bbc74f8a,4131936389,2140435947604212808
+3b9fd022-5e41-b05f-d6a0-71397c13dacc,952674310,9670777971328713305
+8c3b8e05-c3f1-962b-fc61-4c6bbc4a0810,2601823141,5036390784553590054
+09c8e63b-7341-8ba9-52a5-a07b0e4f66c8,1099651546,10247261616332949791
+beceb18b-005a-1b63-52da-34f243dfeebd,3949648174,10924299521434355635
+d702faf7-eb33-9df2-e1c0-153d715d0f23,135519254,3458064763555693219
+32377ea5-8f9a-e720-475e-36a355a03d84,1772410536,15478107416327110754
+55cd8578-495b-7ee4-107d-bed2c9beba9d,2297688414,6269149825421511812
+4f8ec322-2a70-cd95-fdb7-9c2d797a20f1,30616850,18300902437596384197
+2e830bf1-ba6c-dbd5-da30-019af21d5bac,1256905573,1199246079595053046
+78bb0314-0414-f39d-b1e2-85131cc5440a,4139655456,12347715696414504652
+65702554-da71-98c3-eade-00ec374b6e7c,269811211,9968023541720629395
+9e8be4cf-32ac-875f-6fe0-9e4ea12eb1fb,3080542536,13886796752476178822
+5dab2d52-96c8-a712-1d8e-0e782d521742,3418017698,148633440886422775
+09f81504-f174-ca8c-8e3b-4d3c34c2f090,3705421347,13793034167063908191
+9ca2022b-76e9-3f2b-3cc5-c4b88314ffec,2734422103,13442462514158549312
+12308feb-c53b-5841-adc4-fb5908a1a7cc,1590133242,14968124297643223582
+8a54fd1a-94c1-32e4-8afc-d3d3d16453cc,2145968238,5062607685679717189
+d7de4134-444a-2384-17cf-fdf0ed164f81,2755636448,15328503850422522742
+675b6c61-41fc-513a-b4ed-288526bfb358,312194180,2726465383060174835
+dc1e73fd-fbd7-8952-e2f1-74f6f7f84afa,2390624842,10157519535230178058
+4217ca9b-b199-a255-a56d-702a8bb75471,1108914498,13992880467483314290
+117c7eb1-0e2a-fbc6-8766-6a16f4fa37e9,3332969143,14434548611834159894
+98553e84-c7b4-c2fe-022e-9a1cf1fdc693,2311626633,975004742961953965
+891aa5bc-40e9-af37-2a8c-203a83c7465b,3313840415,13087574621120111907
+c151304f-400c-2da5-58de-da3386bdc813,533403886,10111549479656143026
+18d6d01e-c7a8-76f9-604d-1a53608d9e82,953967666,2816163530602568478
+a9db44b7-5917-a6e8-ed65-3fc63bbd38df,3900011174,4646195015710907899
+1fa477fd-9b89-fcfa-6a7b-617b7d3a7957,2034460467,11811585907514667339
+2c30b50d-fb46-7903-00d5-5720fad71c5f,840843190,2169129818109026513
+d4058f68-40fe-dc5f-9624-4609c20ac771,3618517067,5351574303340276665
+6f146c6d-1c1a-dc2f-395f-4aa4a123722b,3527516235,7693793235793680615
+c72e28c6-83a1-02be-1ba6-1011466ef477,4077886557,10283349113175768177
+041fda08-f7d6-5e47-56cd-c2a466c50ec6,2226504901,3462484435464474088
+e76756ab-f5c1-1942-62ff-f1627a9c55c7,1383855839,12626534294717574565
+359fba0a-24ea-5dbd-78dd-d4ef571727c0,2763330171,14799587125563707907
+d70e04a7-6095-118b-5ca7-9eb00752e637,3001030531,4339352222944315331
+fcae4a04-4302-b3f0-37a6-49238cad9c93,93074298,249612547855605692
+1fb36df4-3a80-6fd2-0e41-c337453e350e,1432374736,6297752415171208606
+13f4ac19-76ef-c3c1-a996-8fb1cd1a1f88,297807090,1297764401677805098
+19bbc2e7-2e1c-2a2b-7960-aa982d64e522,1406211824,4090040171198536423
+b877a5c6-5358-f550-808a-7e50bfb2dd46,2037761301,14003182020550990189
+ee40a748-97c1-82f6-048f-f0927989c5bd,1925455698,2875737153905532682
+0e3e87de-cab5-cfc8-ce90-e4eb9a88d08c,828214781,14462199780626634690
+e73acda1-2b47-e2dd-2b1f-cc66995cc5a6,3634267994,12703835235536174962
+28b9c866-eabc-4704-d3f8-711f0ef477c0,2550450058,7125244442782531014
+41856e61-b6a3-6307-1b16-f14ca037e76b,2046903798,14158482151576995379
+56ea2e3f-aaf9-1fb6-d2ee-d4a3f36d79e0,797165618,7656354662013813170
+8c1fc0f2-3931-2871-a85a-82cdcd5b7b49,2955887062,16626179021498385232
+c2f83de6-073d-9523-ac68-0c3894147e65,3549768032,16955993751408742432
+70453742-814f-923a-01eb-ea0ccf685bd1,3144639954,14020900676962312924
+fa01bd97-aab5-dcea-b9d8-a1dd42d2f901,3344605819,5970773843294610533
+fce6f77f-3e10-159c-2014-e4311b6a4448,1127135782,10826575984000905162
+ba7b8124-2f07-a341-adcd-f6cc6327379e,3579772450,14188150260152327270
+5f72c29b-a822-bd1e-a9cd-ab5688230a5f,1431069684,2035112502321582061
+7da417f7-2fc7-5a75-fbda-aa76db6cc96f,2063478752,11877037697560993806
+92c90535-a864-9216-c82a-dbe20df66a3f,4123796103,11716760307941252719
+0b2ca396-37f0-bdf3-cbf7-b0466c3bc061,4020285204,13581174959584600166
+c049f397-ce1b-8373-5448-d27eaece2776,2237246231,18121119210999058180
+05b2d6b2-37fa-2cff-0547-fd1292b72cb9,2983104821,14419853698595198643
+a251f52b-8016-0adf-f0f0-4b959dbf4c06,2056860567,7579393101245449157
+721e467a-4f29-0c7b-8e2c-40b60af5b786,2299914233,1668641589797507103
+27e11971-114e-0aa8-c044-0e4a46a2a394,1447135448,15218364991710396600
+0ec13026-bd8a-1408-8425-987c523691a2,1717796803,11287162207767262746
+0c1331ff-bfbb-209a-a83c-c09b1ed75088,3944181786,2265266784473383874
+be8d43d4-698f-2ee1-194c-7b51ea7974b5,3284322835,6205901276921490466
+94fb30c7-2bc6-8d7d-edaf-37dca1313532,4287478931,9912539141763016341
+f6c253e2-35e5-2ea9-4f80-37e68d03fe14,974865175,10106135087065506884
+e966a40f-c677-c0db-48fc-f008506fdb95,3085111279,547918753689167663
+7b5bad9b-2d85-6cc5-02e5-5c1fc459d51d,2911109330,2949240983371692205
+357941d8-8733-eb34-697b-bab01fb602c0,1329392552,2397268134489708026
+df5639ff-b4fc-d38e-88d9-d99cc87252de,53426569,15400434763737224495
+23f60f64-d985-18c9-8af4-6a6fb46b724b,514455949,17812360524028271470
+02c1c44d-f6db-7fe7-7aa7-9c67aab8b3d0,156054955,1949502652302681561
+8e126dec-774d-729d-942f-429a335c00b4,910122767,17471556420902134466
+eb06a7d3-6aa4-23c5-c709-e8136191f37c,3423698098,14833695813384468112
+c011f5fc-db91-bb8d-9901-5c2277a337b5,271893563,3718240717794365518
+0884503e-a473-d7d4-44ae-2efbb28e3113,2122272510,15457629508993901847
+471cade0-f5b5-8d37-193d-b21a22f1b5dd,827768567,2986859724244572858
+b155c124-1fdc-6ec6-9e3d-44da4b6e14cb,3097505899,10397304098953571924
+44690699-8d86-d54b-e85f-8554b859a5a1,1327659328,7032145911941116692
+51524809-f98e-42fb-0c10-73f5303592b2,2767355217,1505968638038280367
+3d335282-c674-3ff0-b5b2-c6d814f90164,526702396,7668218385466170838
+dd5a4f37-803a-cacf-c774-b343cbf05045,3928914207,15476786166977836683
+37ccffdf-6a21-3a2a-bb9d-e904764b1c9f,5247706,14908574791594570539
+1c1699df-3691-7d25-2eb9-4c23c34b7fb6,4169904314,14014992439954128137
+4905467f-eebc-1686-560d-343310cc3efb,2351385068,6235757461918760386
+0ed66c4f-eb83-dea2-e824-9bc997482ae3,1385390290,10956799884901289579
+56163d37-a3ac-e8e4-4312-91a77f99fd18,1351467429,1444209903930543036
+0f840773-5e12-3010-cb5f-0a25e4c62d41,1253287144,8888255378473621901
+f4fbb0b2-7180-2ef9-daea-ab12b80f5f8b,580902301,15500358688909512343
+3aabcf9d-c93f-3086-8562-1e49df204a24,1663957512,15558083927404187336
+c0a67c39-84cf-d1d0-09e9-a76a08782c0f,740347976,5432676226852931518
+17bccb3f-159e-783b-24e2-7d1caa38fab6,2471373301,11129629731680375876
+6dfa446f-f960-8c02-986c-76add6b60370,77302032,12291799709781397925
+840af851-15d5-00a2-4701-0839c3d27406,1598445873,5285190654570546071
+35b515c1-815d-c5cc-934a-41a737eb53e7,375976788,5641250387791432983
+6b0b4c9c-3dd1-09ed-5f8e-7129a8452f2b,3915734905,5268881168872819423
+94c3bb3c-d5cd-e3bf-f7cc-ed943093bac4,2698663527,8137352923380170259
+e2bf35ca-6cdb-4c03-551e-da4936320e93,4134216517,12386605933276948283
+ffc44629-7ca9-baf8-3a2c-6d61b133f05c,1502736897,4940651885803655013
+d8179963-6975-983a-041c-5b5459404641,227528692,1035651233413403095
+25f9efed-f0ac-5992-386d-97cc2d1e91ef,2752344375,1051415051127771998
+13244d0f-92f1-8845-b1de-543989f47fca,3646871092,6198258159544462282
+eeaf2045-ead5-523d-f84e-36836ca33781,314494701,12986713634565487087
+c000c624-5b52-25e8-1a71-616b60783af1,3233747799,1800961063758745721
+ce1df1b5-5f2c-0593-e936-84de94c6b0ca,1216231113,6021492787969748317
+e588308c-5947-60f6-a342-6ed6d156f125,3248820263,6772762801214917205
+cf5ba25e-2b1a-7fd9-e3b6-da4846298f2e,724659880,12175504514967413454
+85d610f0-4fb3-e3d8-0f37-ba69e9b04e9b,426733855,11972898073880554398
+bdae98d4-eb04-b707-7e90-5933eb6c42ef,2453014742,3957291466800944129
+e9484ad7-6687-139a-a74b-62e2a2659b3a,3157365450,15554207524353512064
+83f6f6c5-cacd-4951-5f21-cdc9472fdb5d,414335173,119754759049698732
+e8a756e6-da61-d168-32ac-848c1cad451b,2853857590,9089642143989608380
+39b105e9-b52a-524e-8570-ef99d04d9674,2666695260,12191779300811928052
+e2dd5fda-8ce6-1b1f-a5c8-e151564321f8,3736761213,7022523927880812165
+27e5b6a0-62e9-1e75-1432-ba80173d9a8e,1470878721,9299999936030482582
+05b2a409-1e58-7572-4e50-58513f32a2a9,3699709287,10238829590710670573
+cb5b4e8b-e69e-6367-2ceb-2cd5907e12a0,2457853793,13973173383319026136
+1947131b-5664-ba68-3b83-ed91f14e1384,3194448704,10913061328502214303
+a32669d5-4be9-8cf8-7d01-1bd92eae5224,1595176514,17118053112299387050
+348d3a1b-bf0e-6e5f-674b-1dc41f35edb7,644483325,2931999645499756897
+b6428f67-f01f-c13a-719f-0473b136f266,3573802502,14790826391700953128
+488e0b3f-9401-c7c6-ab1f-cf120a2c7704,3217997430,16379264565883823446
+21382f10-9ab9-44e2-8153-e816fc42dce9,3205824361,10583565883259234438
+3f3d4920-0e7c-5095-f726-b56364fb8ebd,703394489,5667503172037882783
+1bf8f0b4-7370-cc60-e60d-9e4f88901b8d,3334548302,13934586775137708264
+bb0e2cba-9659-58de-1193-aa414c9a0799,2383859743,16314980478832322533
+f1873b78-77af-6f7e-3c62-161b6a0ba996,1790187484,8078665231264698632
+229bf9a1-93b4-46c5-ae77-879cf58ea7f0,1227378150,11462871193262875600
+63f9a768-1e08-b847-7996-2233b626564d,1990709912,1624929787550181135
+97a7be3d-e31b-8c4a-fc10-e3bef95077c7,1070856292,8066962794941892816
+1400e7ce-6ea1-f895-f853-90ad2cfe70f0,2175412239,10005060755743244728
+a8dc952e-47b6-78a9-5047-84d66191a2f6,262401093,3476729916931107312
+ae0d9f5e-96ca-f3c7-040f-20a63e23e6b5,385554390,15761921146419183092
+9db678d1-5a70-a1da-1443-39c816918bab,3119309325,13446827941096821313
+054966ba-ad35-bc13-30ce-7e2fc4317268,1406716235,11666129786730231364
+f4118154-cd90-26cb-e99d-fb9599fa75dc,3890938511,9824911630024516218
+c5409834-c710-897c-fb4a-022f0e2d725d,3705579225,6304567506282574690
+5b9368df-0f42-b3cf-6bdb-768082ff2b05,2057870237,7035853134638863351
+c2fce730-b6c2-d36f-b154-e1caa175daac,3493604079,2537822442765466264
+ed78c5de-7f45-d068-6bbb-f0593db4b8a5,526788846,6240156379553150046
+4074e31f-35fe-4e2a-1f61-b89356588ca3,3779789696,6583045466562865941
+1ed291a8-31ca-3ce7-84a6-d203e47d19ef,4146740348,10726464199563599776
+a5f4f5aa-7eb5-fdec-1449-1e7b2e40d628,1388772369,16446593746906601995
+10045a3d-c11e-7c58-6799-aea64bd9d725,3666235212,10957291755428500709
+9e01c270-0083-16c3-e147-c5b1186ed18f,172143139,15418746056116356173
+3d4507c5-19d3-3810-4d21-791f2e65407e,2808789053,10238760052428438277
+a8ae6b5c-0b37-d32a-1c29-64f8caf27155,149147553,12611894299789225359
+85dc5300-f38c-86cb-2d56-f58c6b005cc8,543996043,15551076815445672535
+da0b6735-81a5-c55c-6175-5aa5f4aada75,2196931731,8705826913449632985
+b036b63a-45d7-f470-733e-4485d6b208c5,2944986814,8508143376004577416
+c5ed582f-719f-829c-bda2-3307e9644ac5,1292186540,17258058965661648247
+3f1f0896-ca31-1790-8929-df8e58024c04,54230167,4425895587976738908
+bcb8bb7b-f920-759d-2d8f-618ba60d4d48,2550658532,9701539070988782261
+68697712-9292-2bdd-1f73-dfa0cfcc3b6f,718000210,6758234990869466859
+015a4f15-ed5b-40ed-a518-3031e2a55070,4100486961,12200508257427828030
+8d066fbd-00ce-1271-d516-2a0e17c4b475,1524548928,852374913836937260
+bbdb4c1f-efa8-f474-d780-7f89f9863f22,1819752577,11712130174160867281
+4f46a024-44a8-d9a4-2ee9-a8065eb57432,3223481748,339949596359506079
+59171e53-879d-82b3-970d-c057daa6bf65,2610325171,16006319145250896105
+0aa64e8e-304b-ceb2-c9ea-065e11a553e9,2067776072,12615147627223494170
+ca7d41a3-a016-a435-fdce-c811fff2d63a,194968210,9976368893106548299
+e49d64bc-b714-4127-6311-3b63ca087179,649623554,2441224053115070445
+08aaa4cf-6a00-3d3b-928e-7694ee944d85,9402405,5439540584682310914
+08ed8225-d4e8-2632-e9c6-8fc3a01adb22,3061938756,13768697511125504953
+9bb94cb4-ec8e-d1fa-944e-5e2eeb426224,3020513446,9697664596174719402
+75a4b2b3-2cc9-1c7d-dcd2-0a8bc6c74d79,4115537907,6300460346192134709
+b0222351-208c-9b89-9093-8897dcca89e2,1790683366,1366979196494475553
+c9fd0820-9921-5331-f6b2-c4fe04475afc,2947529413,16836951136278487603
+86ff21c4-f839-d0b4-f275-d48f2fe8011d,3983207690,13775966573988681781
+860df3ba-3b3c-e243-255b-ce2fbb9cb498,3650248470,17045567390844580031
+06267083-190e-ad8e-8aaa-645a3020c431,3964347697,12000821992680505316
+7d94a15d-11f7-44c5-9b61-229d956908b1,2210135282,3424871351679542365
+56e7788d-84de-3584-3825-4f91d30a4e17,3003622128,29394482818772154
+a575b24b-72d9-352b-3d20-6dbeac0302f8,2930355094,88017596174223180
+74ab0daa-2104-43f0-8272-e9527fc7ecb1,2218013569,6407294759869883093
+cb033e72-875d-04f5-6068-96ead8ee5192,106322415,16484981833227733760
+41c05476-c8fe-8f35-85e1-a77f920357b3,2915981250,1333920436863233927
+7db60dba-88f4-4f02-9f08-d991b72dde0b,387474351,14090479266976924772
+c7844a67-61a9-a838-1af6-7cb1e44bc8b2,3558026665,10372594859990616147
+74942481-7d87-d78e-bf0c-d8b8db2c0aca,1354403290,12223883882169666084
+3f6f8439-f4d6-71e1-d95b-8f466650151f,65569378,15447372907131050427
+0af510c4-22db-c6a8-bfb1-99f88db4b7fb,1933508644,4298011212328146756
+be56f764-ab04-c37d-cebf-bf8492099b6c,496520942,1213305052240522129
+360fcb6b-e930-2d0a-5e9c-96a8447f9524,2046344693,15795955448869404229
+46a64d75-a1ca-5636-5a9e-0c4bcc20a156,897700210,1605114855528596913
+67173c6a-46f5-42c6-9a51-675eabc5022f,2154696282,13827242575408442363
+e5ac64bf-dc37-9c0e-9625-b15aa09b283b,1572753700,17810710968793186937
+6a574314-b141-aff1-778a-0fec182e4f60,845745791,12995603764179694491
+83f18450-7add-8526-bb83-25fe9d4b4b92,2075403465,3643575662594835612
+3dde2eb0-5255-6409-efae-298fd623c0a0,1316289596,11538803841765023018
+57070b39-653f-0326-ee3f-a8290e2af890,2295551496,9877478825149935270
+052cfb7a-e739-50a4-8ee4-1d87b7c17f98,2598388649,1581316249889388487
+99efc732-6bdd-43d3-fd73-efb55eb8a789,518001792,4735275536278690480
+4ff750aa-1c4d-ee3d-26b6-b9a387a1677e,899355681,4362863816167377539
+adfd2892-30da-ffd4-4b8a-58329c15f6fb,1717968944,4737077913641084379
+6ae43449-cf19-d839-4051-86d3fbb15123,1896075725,9379929631630453199
+65f0c4b2-a14b-1951-7fa2-e4df2e965e01,756000507,4296331005742221088
+5c0ed9e8-214d-015a-91b8-2cb7a131ad59,196466179,14494262786087027857
+79389d5f-eb60-2ee1-24cc-3fcbb05b3384,2660566322,4519181527068974558
+787e9114-1e16-839b-df21-a76e48c84ae9,612174569,10049409806233362648
+b99c15cb-b34f-78be-8189-9f3cbd60585e,3291009148,14048251019740920373
+fccc455e-8ab9-f14e-2456-e1769d6cfa19,563615106,11296474667220467380
+1371a3ba-68e5-201f-717d-95a973bd909a,2291390323,3285898765463091739
+4f420830-b3c2-7d11-d06a-c22b9aad3f6a,3985551691,1838475717183646033
+a6d2bfc4-3556-4a4b-e618-e70a87e84a88,2211617829,16634649290489763236
+aea9002e-1b16-5891-6ac6-f6f36b7feb61,1435358394,799804042253915333
+7333832a-ca01-5d58-6aac-81b7d9a30c31,3085782219,15115167667337456989
+90dfc24f-c703-69d2-f421-cb67e9d743f6,921987294,4850154356535605309
+ced3b0a9-a542-7b41-12a1-76508921aa13,4135821882,4841152773353167723
+ce2d9177-33cd-9adf-c6ca-b0d6a020cea0,454096715,2305691629411581515
+8c278241-881f-f4fe-cdf3-5cd22b1dedc2,2182058099,14888941319749733106
+a575a70a-64f7-2307-88bd-c358c6248843,1064841913,15689853645618659099
+cfea4c25-8b38-f37c-bfe1-e0d2b6e1e662,3297218030,15757227034671285949
+da3d3577-c869-5ed3-b9b7-afe2e7f3b7cf,3205504131,1913059098462936289
+d5cca76b-1229-def0-6c75-33775e630183,4279601797,15018033246895942020
+71bc08f6-8479-ddd5-f041-26e171c02aa7,24344905,17747906826371406482
+5669d653-40de-be47-3109-1fd152726676,3064456705,12634761797630210818
+2f1c0df5-2ef0-1156-cab9-5f043b1638e5,2327954297,201483012409165988
+dec9894f-18f5-c8dd-12ff-64367a1b0766,598304690,15643542116371393999
+a178f8d8-2421-4e91-251c-4c0c1ba0f812,3528884608,8431632700143835969
+fe1c1d7f-b7b2-deb2-7593-b94fcda8cc7e,2156230467,680554759681261445
+aebf48fd-110f-f74c-57b9-e3e302ea9843,3393846600,16754456517318431544
+53c0b52b-34d6-cf20-2b23-bbe60f34af03,2100453058,6603809671669036844
+ce54fc1e-ccff-d4ce-502a-3dc1c85f20ad,39896238,15961945462791787447
+ec3b5a49-cd5d-17e4-e55a-b9349db03a59,39560214,15814223688026097606
+ee57423a-5ab6-2418-fbdd-b39b4599e9df,2380392469,6008383547997954797
+fc5fe892-d7e4-0961-c1f0-b4913a6dfd9a,3399822523,5346206750426263466
+dfdc25bb-18d7-dfef-dac9-6ba824c3bde0,2900640062,13455126676107569551
+6b55df92-f7e2-48ed-cf5e-77f41544b74a,3293097169,5773060193879672543
+ab2bd5f9-5be7-92dd-6595-21e39ab40096,4283697324,221922652548663688
+ede40707-d65d-a19e-2cd3-25e2ac498a20,1583273594,10993695015250528286
+51ed135d-0396-a383-dd89-b71f1a93f9bd,3157329381,16020003458040115499
+b4c0b55f-bf9a-74f9-f914-f61bd3c3e24b,832947447,8282692167286142381
+574a6650-069b-f2b5-9da9-444c99641ccc,3542508037,371092311366336875
+e7b796ff-a07e-a98e-bae4-aecc8f8c5d28,1020004979,1121223431846493760
+c20cd1f9-23da-1ded-6c65-261b573915a4,3532938202,7446510712779768890
+5b0a6b47-15af-eb45-2c1d-97b62c828fb0,2266875723,14610880430489139206
+69e1eb8e-b87f-b2b3-5af6-eabbf11ca899,1893158965,5849310847506757549
+5d4eae62-303f-015b-b707-9c67f98e8235,3664401845,18284009516427659296
+aa218b25-d3d2-40c7-72da-475e925c0c03,1346854036,14241864458148560259
+d67264e5-27de-40b2-cd2c-deb47238e0e4,1099928004,11706294487929764897
+16ca57a7-b255-77df-c441-7acbcab5412f,1527175094,9559386708020319924
+8884a260-f134-92e3-1dfe-cd28ed12c1d6,220950778,16785210410156992913
+e63fa681-c987-fcf9-3b07-419b5ed162ce,2935645980,18320791426850297472
+522783d8-916f-f7b3-c835-614e703e9f0f,4276331822,210390604157370392
+1c06e8c3-d481-32a5-b21c-cc9cbc877992,1521308592,14740200249295859853
+0bd5861c-11c0-71b2-d212-ad63dba27ce6,2986603669,15986384754711844259
+312dfb4a-e993-bf3b-53a4-bc1348bbed23,1759590300,11926251262502908773
+eddce5ba-ed65-40c2-5047-b85938ea76b4,2395073588,10439118930749030889
+5d741a5c-9839-d121-f073-b180c05edd73,3103323845,10767787378180759663
+cbd47add-4fd2-3939-dd2f-26e51ee88f50,3633134219,351605191233212235
+5de344ab-61fa-e79c-7978-483f0c5c46e0,419252212,5814203417873668650
+eb107c2b-eb10-b4f2-ba95-c3fd6aca6f87,166669698,8857651279605737747
+39f78d06-9627-90d1-828c-fe9b5ad0000d,2898217186,2054416126460517060
+1d9d5165-092c-0c59-5e2a-622dd9582a48,3687681911,11202053979423472476
+c91ad6de-42a2-04e9-40fb-acd3ec47f01e,2400768741,17338659862223440245
+75e54189-2eff-8275-3c4d-759d42a9b10a,3996533942,8261719188228535943
+d100ad61-e352-8ad0-82dd-94aa4b7f3a52,412324019,2045166974495209929
+a96c9b87-88b4-d582-9a8c-5f932b06020a,2692677935,1519501325828531488
+229cbda6-c3c9-a70f-5048-94197fc407dd,1117020569,10520679034046249438
+ac01da81-794e-382e-70c2-de5ca6b4cd5f,1564041349,6374667566376565876
+4b4eb75e-73ce-3c61-200e-dd7742f4fdd5,1869154076,1829871544634276184
+2f1cf105-31e6-4716-124f-22a8c621f230,235132767,17096662142458417809
+2faae02c-b882-4e3c-eba4-b9bee9a58fec,777698737,17645261992460803060
+7967a436-e2c4-48c2-d7be-04a9059f41e4,1099702382,10309100450255610502
+ab92bf10-3c96-5084-f3ec-1938bc9ce6a7,1490906927,835982860160262240
+b9231121-1dbe-cf2c-d406-db8670197c5d,40922074,11684961802235474451
+119773ab-eab5-af95-f835-6dfedf7417cc,3755401775,15522214198142613164
+51f76bb9-f9e1-a708-1491-e8a0723697c3,2275375241,13332215794295691437
+6548c226-322b-c66c-8cc0-db9dc62844a1,3654751274,6079656357115804130
+e7fa175b-b2f4-5824-9654-579c51e7bccd,632543640,10052779470781596610
+e905140a-8b0f-37b7-86f9-cf05876e48ed,327966444,9362651569021175904
+cad641d9-784c-4f3c-961b-9167968e2993,2710468911,12002215646013060843
+e089e5df-51d3-81b3-0fab-9d675b70b14b,2051901396,11470386820746504713
+4d42486f-b034-cc49-8e4d-2ce3a2e89f33,4157428699,12142647471818124283
+366961c0-5b3f-777f-196d-df9d57bc3dc4,321260902,4600748102311248139
+128acb39-542a-28bc-c1b5-046c68ee2d16,736891801,12199633650039474415
+eda647de-1f01-89a0-a02f-035191e7e9db,853126529,10084935066073109279
+492f4d16-c5a2-05f9-1a7a-114ba22b79d6,2747317080,465186000059969030
+384e74e2-7ce4-cb04-4f9b-3a215b5e35d7,707334032,8326972671050257008
+a7bc6669-61ee-b880-d8dc-9be7fd9a8278,891467369,3175994529548427459
+e565527d-a2bb-2b5a-2292-cc201e6b1c92,2029425880,7887757156447405882
+4e1bab15-389c-c532-4f1b-a0e625350bc7,3959631459,397714929896322916
+d189bac4-b7eb-3576-2495-a21198a24c71,2502100518,16449005682426319847
+bf04e472-e61e-ea69-db66-ac7cafbd151a,1464820019,5682495483603099189
+c69615c4-fd6a-2d1f-b556-d55128623f2b,1152510638,3663183199630065489
+fcc8ebe8-adf7-66ba-5f45-eca07dfe69f3,426381253,18403830727677177468
+babeebdc-5e80-c3ef-3b4c-f26a1aad72d3,1822738846,14757578022694614051
+fea67620-9646-2b2a-5132-6f147f6f8dff,174196603,4429108729779919834
+260e13d9-21ac-37b7-ad54-9ffc381e08bb,1749811768,2087092608295926521
+7968cadc-4bdc-e725-5a61-152b12d405cc,4224765670,16044571631295197252
+73bd236e-6685-f756-65cb-06b4fc760412,1795247097,15165385621304234853
+9ae5f525-941e-2a2c-173c-cc33eb0b4350,742832417,10533320100844749930
+61616051-daca-8a2c-4cce-096000f0ecdc,264946142,10055576354902378088
+12433430-3e34-f408-ed58-54b1dd2999c6,3133047305,17125948706398893137
+1bcc2a41-414d-9cae-1b10-912147065bd1,2179162022,18240331236028399616
+347d9078-8a31-98f8-e8c8-b978b07e5368,548998052,9092601577800504798
+2a9eccaf-3c2f-8d33-f7e4-05cf85d3c0d7,1596723038,5559930470288654317
+9c77e2d6-edf3-461d-16f3-b68fbd602989,2286612507,16929980517335045142
+db55dd29-468d-6dcb-4b4c-1745657a98d8,2309568240,3682487348418853034
+040786a7-6892-ed39-fa00-f36dcf670693,1376519134,5664865394508465339
+139b7c14-fb32-8a00-5e3f-8d00e7ce25f0,4152667744,2194425199136081413
+2e9e64f0-f3b3-5abf-9ab5-101f138c54eb,77966312,17411537034916597301
+6898d165-9a5c-427e-eca3-7e95e0e6550c,3411292314,5120981757030563943
+1b9b54bf-2ea6-b48b-7533-1785b6899c59,2159838387,4234468039556592541
+5ff82148-44f0-8ef4-9ef8-837be046270c,2738005932,18372415318867744255
+cb9e77d2-eab6-fa0c-bbc4-74d7fdb5a70e,43733821,14378003443287851398
+68d5dab4-0227-4e31-9c85-791eeb767f9a,269143234,4294319644473216500
+0fbecfb6-eaa8-ce38-6a08-46dfd4b24d3b,1675253265,10751652664467861084
+4b084d64-1a38-f1ec-c717-21da313aaf60,1071364856,17453460832344219057
+4fc9f2a0-8930-6cf4-89ac-dda6b839b8c9,968683433,14911309928227846594
+8ee16c0f-126d-1462-f2de-c9875b586806,4003546723,10743119028961950455
+444d9eb8-f632-f142-0753-b5a175db3a52,2702947741,10462605520366827567
+f5e79571-24cb-9b4f-62f6-31788688dda0,3797562520,490043616928166404
+c6ff4834-59ff-dcf6-e06b-e6bce7424477,1577038472,4102166129734347939
+b09737ba-3665-3419-3982-6db2169810d9,3832561038,3704270719296686339
+6f5d36f6-d82e-fd5c-5579-b38d2a2f28a3,1662034085,10898996995976760459
+8e893bcf-997e-21d4-8411-920cf25fe55d,2795593014,1663748090362996466
+158cfdf8-ea74-7e2c-c646-9dbec684a6c5,1543476108,17932731528350013681
+bacf95a7-7a68-7756-b3ef-9cd7c5b09e67,1639169966,15295766840506768417
+65286382-8328-2151-a838-0c5e7b14aecb,179768352,8194639326201532785
+0007398b-5b3a-5f70-c219-c27267f52d9a,970079075,6729796365710532116
+f1377c93-160e-2656-9d95-a22f2fad50a2,1229072681,12585283329392919021
+3488699f-18ba-8a9c-fa1f-506176337755,2857923308,16920935714030128956
+d1577b04-dd1f-5e88-4df6-e74b76c44c91,1811646815,3760675062936249064
+fe0ff71f-01a1-4bfe-93c0-9c401af8d85c,4184829804,14076554037946081832
+7d9a7caa-0651-f2bc-c7f6-edc721a1d18f,4285150525,15065277127270798462
+3137795d-bfba-7f84-1832-2ccebfbc6929,4083590217,8170902626683137072
+9f717579-91df-d635-845f-6f00d9829f68,2632413014,14708637349606861598
+1ed1ad9b-6f77-6d74-12d5-03eedb3f3428,1642358872,16523471423040917360
+30c0b153-57b4-5a54-e28f-5958c784df31,733971990,1875568736498773606
+837b14ee-0b8a-0d4e-170c-ce3b0f9bcf9f,2584136062,15839249358877196550
+36ac6dc7-56a3-bedf-cbbb-6d2953a02180,29691436,10172244793472085924
+b55f3fdb-29d9-a2d8-9243-f4d11cc5435a,2437551081,13192841972413950618
+538347d4-713d-bd5d-b9c0-3d4e226913b2,4102386930,3065116674845763855
+0ef07df9-b562-7f7f-3158-2f25c682a9ca,3270532511,5648177476868838203
+e67ac219-c648-188b-c095-000f04e04ce0,2196207275,8561106567764459296
+a93a6d90-2128-566d-3cc0-d14627bbf726,3085533214,10127906336963995170
+07f76e59-9440-29f8-66d4-16bb1838182a,4188351145,8413358970420828107
+4cb272ad-7436-7803-5e45-627f76298153,4242704630,1719184831037371623
+95a83fac-07dc-b07e-46c1-b45264ebf49e,3836233384,8074624107262521748
+9cbad63f-a084-64ec-713f-cbc4042cdc11,906860148,402304603214773073
+d3e6e4a4-71ee-3c12-e747-fe203ab4e22f,383114295,2206650730593890204
+3d9dadab-a57d-bf25-d9b0-75ab8b63a8d4,964195076,5100040475026218828
+466bc33d-9ea2-2b0b-e9ed-4595e85e94a5,754174521,6720041081111088111
+85fabe0d-a9e2-68cd-be97-239bb220f181,1410390715,16976305460823675612
+a5c4b5d4-5126-a581-21c6-82ed2ebb990c,1136881040,12808863291140309465
+6bd8ba4a-3792-74ef-6c32-76f066e1f5a7,3940969454,13558818442180331120
+080937b7-9735-0f05-5ce8-b0a7b4dc8f49,2001410428,11614828461199154338
+5f09797d-7987-5b28-79d3-96631dd93950,3024874446,2123380884658122278
+5b553505-6d78-ad59-3e0b-de9f6397010d,2143261779,7560925120802137033
+5b7b4e10-9fa6-a72f-c70f-7b5a5b7b4894,1012264983,15923745286638593967
+cd52a9a6-4f8f-0740-da72-8e3ae080a70a,4046894181,9317460547897036971
+9142a31f-995c-3081-8d88-54bfc1cda883,3495830208,15078418696967276438
+0a317a23-76cd-2b76-8055-3033368afb83,911821901,3346012790321881097
+fa2dca1d-fafc-f3a3-c550-cde1861301e9,2078154335,12957925231170872565
+acd2a58f-2eac-e84a-8bc4-7d7e68ab923b,1279223099,18055346181831056378
+8580c94d-6f1d-6e5f-950d-9a7377045990,1952223854,4233596165988836122
+820e12a6-06a1-be21-5826-15ed17a8ad2a,424096880,15348876290930724426
+10a76a71-724f-8050-a1ea-a43bac0eb923,1944778014,1044843650646825115
+2962879e-7406-3e23-92d7-afc5c0c65ca9,2337199549,2068794936767248946
+8f5b6147-454d-b1cd-e8ed-896d9b98817f,3764534140,10353079531575858991
+87dbba2d-d29b-0680-aa79-5553d8a2aca0,1435620863,5201862077919316072
+bf069ee8-3e76-75fc-8e3e-af994de5d2e2,2095427201,17609834252392319947
+5d9b1813-5b1b-f11b-e9f8-6277b1cb86ee,1043471732,14026069554655126827
+91052b44-bd26-e172-8b04-8304edabc49c,3534171015,17040341420206902636
+94c38bc4-fc4d-292c-0a49-8e825f61869d,3798888912,8918618743813490261
+700cd942-89ba-72d2-daab-3bc29c11f49c,2530097711,8827667309196458200
+f89f4f51-afb5-a1d5-047b-af2c46388d40,1726560047,11268315063215466373
+00fb536d-3510-2110-9c35-2416248e115a,3869149927,4005715738642119019
+f4af2e1a-eba6-fe97-6a21-c044586062e2,3886937398,11258998576574828611
+2a056fc1-b7ea-cbd8-0eb1-1fe49f9d000d,568667909,1521366430412802505
+a2533149-bf0d-0905-88ed-056376f50224,2600041371,4980780741535322180
+4331afc4-0908-3180-90d7-dc6e322e5f41,4101106973,16899026807444898901
+5bffd359-9f2b-baca-bd8e-27d83c80c103,2790818862,17159376148067565342
+4bf421a2-62eb-40a2-bf87-474822517ebb,429026018,8703017717943391028
+fd10e2ba-69af-16e3-3fac-9120a1ed36d0,2799592700,3908107888995323235
+5001fa89-03c9-a7e6-52c2-91df138c80ba,2952096579,15784613204402267187
+b33ab83a-3b30-6f67-72fd-9c93374747ec,298025075,2239753020229109586
+d38f16e0-0e65-df59-ec87-40b8c4ed7252,1987858973,2374965198846110452
+5755af42-a7b3-6fbe-b3f8-b738a060ffe4,631757775,15121484170913651258
+d90b5e4f-9fc8-c0ae-b185-da16b7ab61d8,1487990475,3592691781233551341
+9dfa5348-9b95-9487-3fc0-fea626f75cec,3162824513,10798206862812853260
+128a66d6-82c2-d6db-ed66-53e597a456d1,3744938194,5738381887675709971
+038fc05d-5169-e9ba-d4fe-88281a61ece3,4137074147,5410231540211394429
+9ac5f9ce-2855-8eca-ebb6-6c7e6bac7b68,4261794604,12050461691273952055
+c88f5a2e-85f2-0dcb-2282-3936918cb653,3702153868,2206966731224618593
+ebdca40d-2a27-55b7-ad6c-ad3f18f538a0,3490890734,13994513743230745827
+cfaa36cf-c575-6783-55e3-11b6244d2134,825365813,17244815686036872449
+ee265739-0f64-99d1-77e1-0846b8a21495,875576768,7352009562472826791
+a1ca0b78-4460-4ebd-0c8f-8697b875dfc8,3012135733,10712720048389725927
+3244c247-6428-f43a-5808-139d4d1e2fae,2459472713,16025260964268398544
+e86c8d69-6b27-641d-c6ec-b74f51e3af92,2309863925,14314224518818844586
+d076b90f-1478-450c-a702-c67fd3622a23,3922541704,10563984607220765148
+cc14e848-37cf-5644-9987-16758fd975a5,4159673597,6720041525961623540
+73760f22-eb46-35b0-8587-5441a51477d8,175065575,17582373151020988008
+fe3a9eb6-dc81-87e7-bd32-1bfb748a89ae,1220795590,17958280933736907231
+6f2578e4-a939-3734-3d08-be757b2e098b,1661438321,8153830121762661441
+9ee88c96-e294-3759-bd45-32a66017185c,1674235869,12396018319056950734
+db2ad81f-f67d-223e-021a-6fca8d79c926,721907057,4842155826452614841
+128de13c-03df-52af-8d84-cecfc9115b6d,1337199594,11585329311902319688
+a4d99865-9963-c12a-aa52-a95eaca23f39,305136073,12326813968181484385
+cdbde9eb-db39-f80f-422b-07c2ce5595fa,2897910006,9609803753669591717
+e8c02651-bf93-1bc8-79c5-f8fada26f914,3824526500,7029831685588009633
+610abc9e-92cf-0212-0065-e42b9070f17a,1570592316,598249243073438494
+b9453de4-f076-ae3b-03c1-ad2a0271f4a9,2348565347,8656067563116242211
+bd27f846-d89e-0f78-2259-ff17d91ba361,396040311,6005762201068499628
+a0d9cbd0-60ec-e89c-26fd-a0a367bd55bd,4078317908,12675368228116031664
diff --git a/tests/engine/files/rule_base_segments.json b/tests/engine/files/rule_base_segments.json
new file mode 100644
index 00000000..70b64b32
--- /dev/null
+++ b/tests/engine/files/rule_base_segments.json
@@ -0,0 +1,62 @@
+{"ff": {"d": [], "t": -1, "s": -1},
+"rbs": {"t": -1, "s": -1, "d":
+ [{
+ "changeNumber": 5,
+ "name": "dependent_rbs",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{"keys":["mauro@split.io","gaston@split.io"],"segments":[]},
+ "conditions": [
+ {
+ "conditionType": "WHITELIST",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": false,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]},
+ {
+ "changeNumber": 5,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded": {
+ "keys": [],
+ "segments": []
+ },
+ "conditions": [
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user"
+ },
+ "matcherType": "IN_RULE_BASED_SEGMENT",
+ "negate": false,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "dependent_rbs"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }]
+}}
diff --git a/tests/engine/files/rule_base_segments2.json b/tests/engine/files/rule_base_segments2.json
new file mode 100644
index 00000000..2f77ecd5
--- /dev/null
+++ b/tests/engine/files/rule_base_segments2.json
@@ -0,0 +1,67 @@
+{"ff": {"d": [], "t": -1, "s": -1},
+"rbs": {"t": -1, "s": -1, "d": [
+ {
+ "changeNumber": 5,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["mauro@split.io","gaston@split.io"],
+ "segments":[{"type":"rule-based", "name":"no_excludes"}]
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "STARTS_WITH",
+ "negate": false,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "bilal"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "changeNumber": 5,
+ "name": "no_excludes",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["bilal2@split.io"],
+ "segments":[]
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": false,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+]}}
diff --git a/tests/engine/files/rule_base_segments3.json b/tests/engine/files/rule_base_segments3.json
new file mode 100644
index 00000000..f738f3f7
--- /dev/null
+++ b/tests/engine/files/rule_base_segments3.json
@@ -0,0 +1,35 @@
+{"ff": {"d": [], "t": -1, "s": -1},
+"rbs": {"t": -1, "s": -1, "d": [
+ {
+ "changeNumber": 5,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["mauro@split.io","gaston@split.io"],
+ "segments":[{"type":"standard", "name":"segment1"}]
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": false,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+]}}
diff --git a/tests/engine/test_bloom_filter.py b/tests/engine/test_bloom_filter.py
new file mode 100644
index 00000000..303b22e0
--- /dev/null
+++ b/tests/engine/test_bloom_filter.py
@@ -0,0 +1,55 @@
+"""BloomFilter unit tests."""
+
+from random import random
+import uuid
+from splitio.engine.filters import BloomFilter
+
+class BloomFilterTests(object):
+ """StandardRecorderTests test cases."""
+
+ def test_bloom_filter_methods(self, mocker):
+ bloom_filter = BloomFilter()
+ key1 = str(uuid.uuid4())
+ key2 = str(uuid.uuid4())
+ bloom_filter.add(key1)
+
+ assert(bloom_filter.contains(key1))
+ assert(not bloom_filter.contains(key2))
+
+ bloom_filter.clear()
+ assert(not bloom_filter.contains(key1))
+
+ bloom_filter.add(key1)
+ bloom_filter.add(key2)
+ assert(bloom_filter.contains(key1))
+ assert(bloom_filter.contains(key2))
+
+ def test_bloom_filter_error_percentage(self, mocker):
+ arr_storage = []
+ total_sample = 20000
+ error_rate = 0.01
+ bloom_filter = BloomFilter(total_sample, error_rate)
+
+ for x in range(1, total_sample):
+ myuuid = str(uuid.uuid4())
+ bloom_filter.add(myuuid)
+ arr_storage.append(myuuid)
+
+ false_positive_count = 0
+ for x in range(1, total_sample):
+ y = int(random()*total_sample*5)
+ if y > total_sample - 2:
+ myuuid = str(uuid.uuid4())
+ if myuuid in arr_storage:
+ # False Negative
+ assert(bloom_filter.contains(myuuid))
+ else:
+ if bloom_filter.contains(myuuid):
+ # False Positive
+ false_positive_count = false_positive_count + 1
+ else:
+ myuuid = arr_storage[y]
+ assert(bloom_filter.contains(myuuid))
+ # False Negative
+
+ assert(false_positive_count/total_sample <= error_rate)
\ No newline at end of file
diff --git a/tests/engine/test_evaluator.py b/tests/engine/test_evaluator.py
index a84c7e85..edf510c0 100644
--- a/tests/engine/test_evaluator.py
+++ b/tests/engine/test_evaluator.py
@@ -1,35 +1,128 @@
"""Evaluator tests module."""
+import json
import logging
+import os
+import pytest
+import copy
+import queue
+import asyncio
-from splitio.models.splits import Split
+from splitio.models.splits import Split, Status, from_raw, Prerequisites
+from splitio.models import segments
from splitio.models.grammar.condition import Condition, ConditionType
from splitio.models.impressions import Label
+from splitio.models.grammar import condition
+from splitio.models import rule_based_segments
+from splitio.models.fallback_treatment import FallbackTreatment
+from splitio.models.fallback_config import FallbackTreatmentsConfiguration, FallbackTreatmentCalculator
from splitio.engine import evaluator, splitters
-from splitio.storage import SplitStorage, SegmentStorage
+from splitio.engine.evaluator import EvaluationContext
+from splitio.storage.inmemmory import InMemorySplitStorage, InMemorySegmentStorage, InMemoryRuleBasedSegmentStorage, \
+ InMemorySplitStorageAsync, InMemorySegmentStorageAsync, InMemoryRuleBasedSegmentStorageAsync
+from splitio.engine.evaluator import EvaluationDataFactory, AsyncEvaluationDataFactory
+rbs_raw = {
+ "changeNumber": 123,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["mauro@split.io","gaston@split.io"],
+ "segments":[]
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": False,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+}
+
+split_conditions = [
+ condition.from_raw({
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user"
+ },
+ "matcherType": "IN_RULE_BASED_SEGMENT",
+ "negate": False,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "sample_rule_based_segment"
+ }
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ],
+ "label": "in rule based segment sample_rule_based_segment"
+ }),
+ condition.from_raw({
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user"
+ },
+ "matcherType": "ALL_KEYS",
+ "negate": False
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 0
+ },
+ {
+ "treatment": "off",
+ "size": 100
+ }
+ ],
+ "label": "default rule"
+ })
+]
+
class EvaluatorTests(object):
"""Test evaluator behavior."""
def _build_evaluator_with_mocks(self, mocker):
"""Build an evaluator with mocked dependencies."""
- split_storage_mock = mocker.Mock(spec=SplitStorage)
splitter_mock = mocker.Mock(spec=splitters.Splitter)
- segment_storage_mock = mocker.Mock(spec=SegmentStorage)
logger_mock = mocker.Mock(spec=logging.Logger)
- e = evaluator.Evaluator(split_storage_mock, segment_storage_mock, splitter_mock)
- e._logger = logger_mock
+ e = evaluator.Evaluator(splitter_mock)
+ evaluator._LOGGER = logger_mock
return e
-
- def test_evaluate_treatment_missing_split(self, mocker):
- """Test that a missing split logs and returns CONTROL."""
- e = self._build_evaluator_with_mocks(mocker)
- e._split_storage.get.return_value = None
- result = e.evaluate_feature('feature1', 'some_key', 'some_bucketing_key', {'attr1': 1})
- assert result['configurations'] == None
- assert result['treatment'] == evaluator.CONTROL
- assert result['impression']['change_number'] == -1
- assert result['impression']['label'] == Label.SPLIT_NOT_FOUND
-
+
def test_evaluate_treatment_killed_split(self, mocker):
"""Test that a killed split returns the default treatment."""
e = self._build_evaluator_with_mocks(mocker)
@@ -38,8 +131,10 @@ def test_evaluate_treatment_killed_split(self, mocker):
mocked_split.killed = True
mocked_split.change_number = 123
mocked_split.get_configurations_for.return_value = '{"some_property": 123}'
- e._split_storage.get.return_value = mocked_split
- result = e.evaluate_feature('feature1', 'some_key', 'some_bucketing_key', {'attr1': 1})
+ mocked_split.prerequisites = []
+
+ ctx = EvaluationContext(flags={'some': mocked_split}, segment_memberships=set(), rbs_segments={})
+ result = e.eval_with_context('some_key', 'some_bucketing_key', 'some', {}, ctx)
assert result['treatment'] == 'off'
assert result['configurations'] == '{"some_property": 123}'
assert result['impression']['change_number'] == 123
@@ -49,34 +144,38 @@ def test_evaluate_treatment_killed_split(self, mocker):
def test_evaluate_treatment_ok(self, mocker):
"""Test that a non-killed split returns the appropriate treatment."""
e = self._build_evaluator_with_mocks(mocker)
- e._get_treatment_for_split = mocker.Mock()
- e._get_treatment_for_split.return_value = ('on', 'some_label')
+ e._treatment_for_flag = mocker.Mock()
+ e._treatment_for_flag.return_value = ('on', 'some_label')
mocked_split = mocker.Mock(spec=Split)
mocked_split.default_treatment = 'off'
mocked_split.killed = False
mocked_split.change_number = 123
mocked_split.get_configurations_for.return_value = '{"some_property": 123}'
- e._split_storage.get.return_value = mocked_split
- result = e.evaluate_feature('feature1', 'some_key', 'some_bucketing_key', {'attr1': 1})
+ mocked_split.prerequisites = []
+
+ ctx = EvaluationContext(flags={'some': mocked_split}, segment_memberships=set(), rbs_segments={})
+ result = e.eval_with_context('some_key', 'some_bucketing_key', 'some', {}, ctx)
assert result['treatment'] == 'on'
assert result['configurations'] == '{"some_property": 123}'
assert result['impression']['change_number'] == 123
assert result['impression']['label'] == 'some_label'
assert mocked_split.get_configurations_for.mock_calls == [mocker.call('on')]
-
+ assert result['impressions_disabled'] == mocked_split.impressions_disabled
def test_evaluate_treatment_ok_no_config(self, mocker):
"""Test that a killed split returns the default treatment."""
e = self._build_evaluator_with_mocks(mocker)
- e._get_treatment_for_split = mocker.Mock()
- e._get_treatment_for_split.return_value = ('on', 'some_label')
+ e._treatment_for_flag = mocker.Mock()
+ e._treatment_for_flag.return_value = ('on', 'some_label')
mocked_split = mocker.Mock(spec=Split)
mocked_split.default_treatment = 'off'
mocked_split.killed = False
mocked_split.change_number = 123
mocked_split.get_configurations_for.return_value = None
- e._split_storage.get.return_value = mocked_split
- result = e.evaluate_feature('feature1', 'some_key', 'some_bucketing_key', {'attr1': 1})
+ mocked_split.prerequisites = []
+
+ ctx = EvaluationContext(flags={'some': mocked_split}, segment_memberships=set(), rbs_segments={})
+ result = e.eval_with_context('some_key', 'some_bucketing_key', 'some', {}, ctx)
assert result['treatment'] == 'on'
assert result['configurations'] == None
assert result['impression']['change_number'] == 123
@@ -86,24 +185,31 @@ def test_evaluate_treatment_ok_no_config(self, mocker):
def test_evaluate_treatments(self, mocker):
"""Test that a missing split logs and returns CONTROL."""
e = self._build_evaluator_with_mocks(mocker)
- e._get_treatment_for_split = mocker.Mock()
- e._get_treatment_for_split.return_value = ('on', 'some_label')
+ e._treatment_for_flag = mocker.Mock()
+ e._treatment_for_flag.return_value = ('on', 'some_label')
mocked_split = mocker.Mock(spec=Split)
mocked_split.name = 'feature2'
mocked_split.default_treatment = 'off'
mocked_split.killed = False
mocked_split.change_number = 123
mocked_split.get_configurations_for.return_value = '{"some_property": 123}'
- e._split_storage.fetch_many.return_value = {
- 'feature1': None,
- 'feature2': mocked_split,
- }
- results = e.evaluate_features(['feature1', 'feature2'], 'some_key', 'some_bucketing_key', None)
- result = results['feature1']
+ mocked_split.prerequisites = []
+
+ mocked_split2 = mocker.Mock(spec=Split)
+ mocked_split2.name = 'feature4'
+ mocked_split2.default_treatment = 'on'
+ mocked_split2.killed = False
+ mocked_split2.change_number = 123
+ mocked_split2.get_configurations_for.return_value = None
+ mocked_split2.prerequisites = []
+
+ ctx = EvaluationContext(flags={'feature2': mocked_split, 'feature4': mocked_split2}, segment_memberships=set(), rbs_segments={})
+ results = e.eval_many_with_context('some_key', 'some_bucketing_key', ['feature2', 'feature4'], {}, ctx)
+ result = results['feature4']
assert result['configurations'] == None
- assert result['treatment'] == evaluator.CONTROL
- assert result['impression']['change_number'] == -1
- assert result['impression']['label'] == Label.SPLIT_NOT_FOUND
+ assert result['treatment'] == 'on'
+ assert result['impression']['change_number'] == 123
+ assert result['impression']['label'] == 'some_label'
result = results['feature2']
assert result['configurations'] == '{"some_property": 123}'
assert result['treatment'] == 'on'
@@ -114,14 +220,19 @@ def test_get_gtreatment_for_split_no_condition_matches(self, mocker):
"""Test no condition matches."""
e = self._build_evaluator_with_mocks(mocker)
e._splitter.get_treatment.return_value = 'on'
- conditions_mock = mocker.PropertyMock()
- conditions_mock.return_value = []
mocked_split = mocker.Mock(spec=Split)
mocked_split.killed = False
- type(mocked_split).conditions = conditions_mock
- treatment, label = e._get_treatment_for_split(mocked_split, 'some_key', 'some_bucketing', {'attr1': 1})
- assert treatment == None
- assert label == None
+ mocked_split.default_treatment = 'off'
+ mocked_split.change_number = '123'
+ mocked_split.conditions = []
+ mocked_split.get_configurations_for = None
+ mocked_split.prerequisites = []
+
+ ctx = EvaluationContext(flags={'some': mocked_split}, segment_memberships=set(), rbs_segments={})
+ assert e._treatment_for_flag(mocked_split, 'some_key', 'some_bucketing', {}, ctx) == (
+ 'off',
+ Label.NO_CONDITION_MATCHED
+ )
def test_get_gtreatment_for_split_non_rollout(self, mocker):
"""Test condition matches."""
@@ -131,30 +242,391 @@ def test_get_gtreatment_for_split_non_rollout(self, mocker):
mocked_condition_1.condition_type = ConditionType.WHITELIST
mocked_condition_1.label = 'some_label'
mocked_condition_1.matches.return_value = True
- conditions_mock = mocker.PropertyMock()
- conditions_mock.return_value = [mocked_condition_1]
mocked_split = mocker.Mock(spec=Split)
mocked_split.killed = False
- type(mocked_split).conditions = conditions_mock
- treatment, label = e._get_treatment_for_split(mocked_split, 'some_key', 'some_bucketing', {'attr1': 1})
+ mocked_split.conditions = [mocked_condition_1]
+ mocked_split.prerequisites = []
+
+ treatment, label = e._treatment_for_flag(mocked_split, 'some_key', 'some_bucketing', {}, EvaluationContext(None, None, None))
assert treatment == 'on'
assert label == 'some_label'
- def test_get_treatment_for_split_rollout(self, mocker):
- """Test rollout condition returns default treatment."""
- e = self._build_evaluator_with_mocks(mocker)
- e._splitter.get_bucket.return_value = 60
- mocked_condition_1 = mocker.Mock(spec=Condition)
- mocked_condition_1.condition_type = ConditionType.ROLLOUT
- mocked_condition_1.label = 'some_label'
- mocked_condition_1.matches.return_value = True
- conditions_mock = mocker.PropertyMock()
- conditions_mock.return_value = [mocked_condition_1]
+ def test_evaluate_treatment_with_rule_based_segment(self, mocker):
+ """Test that a non-killed split returns the appropriate treatment."""
+ e = evaluator.Evaluator(splitters.Splitter())
+
+ mocked_split = Split('some', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False, [])
+
+ ctx = EvaluationContext(flags={'some': mocked_split}, segment_memberships=set(), rbs_segments={'sample_rule_based_segment': rule_based_segments.from_raw(rbs_raw)})
+ result = e.eval_with_context('bilal@split.io', 'bilal@split.io', 'some', {'email': 'bilal@split.io'}, ctx)
+ assert result['treatment'] == 'on'
+
+ def test_evaluate_treatment_with_rbs_in_condition(self):
+ e = evaluator.Evaluator(splitters.Splitter())
+ events_queue = queue.Queue()
+ splits_storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ evaluation_facctory = EvaluationDataFactory(splits_storage, segment_storage, rbs_storage)
+
+ rbs_segments = os.path.join(os.path.dirname(__file__), 'files', 'rule_base_segments.json')
+ with open(rbs_segments, 'r') as flo:
+ data = json.loads(flo.read())
+
+ mocked_split = Split('some', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False, [])
+ rbs = rule_based_segments.from_raw(data["rbs"]["d"][0])
+ rbs2 = rule_based_segments.from_raw(data["rbs"]["d"][1])
+ rbs_storage.update([rbs, rbs2], [], 12)
+ splits_storage.update([mocked_split], [], 12)
+
+ ctx = evaluation_facctory.context_for('bilal@split.io', ['some'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'some', {'email': 'bilal@split.io'}, ctx)['treatment'] == "on"
+
+ ctx = evaluation_facctory.context_for('mauro@split.io', ['some'])
+ assert e.eval_with_context('mauro@split.io', 'mauro@split.io', 'some', {'email': 'mauro@split.io'}, ctx)['treatment'] == "off"
+
+ def test_using_segment_in_excluded(self):
+ rbs_segments = os.path.join(os.path.dirname(__file__), 'files', 'rule_base_segments3.json')
+ with open(rbs_segments, 'r') as flo:
+ data = json.loads(flo.read())
+ e = evaluator.Evaluator(splitters.Splitter())
+ events_queue = queue.Queue()
+ splits_storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ evaluation_facctory = EvaluationDataFactory(splits_storage, segment_storage, rbs_storage)
+
+ mocked_split = Split('some', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False, [])
+ rbs = rule_based_segments.from_raw(data["rbs"]["d"][0])
+ rbs_storage.update([rbs], [], 12)
+ splits_storage.update([mocked_split], [], 12)
+ segment = segments.from_raw({'name': 'segment1', 'added': ['pato@split.io'], 'removed': [], 'till': 123})
+ segment_storage.put(segment)
+
+ ctx = evaluation_facctory.context_for('bilal@split.io', ['some'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'some', {'email': 'bilal@split.io'}, ctx)['treatment'] == "on"
+ ctx = evaluation_facctory.context_for('mauro@split.io', ['some'])
+ assert e.eval_with_context('mauro@split.io', 'mauro@split.io', 'some', {'email': 'mauro@split.io'}, ctx)['treatment'] == "off"
+ ctx = evaluation_facctory.context_for('pato@split.io', ['some'])
+ assert e.eval_with_context('pato@split.io', 'pato@split.io', 'some', {'email': 'pato@split.io'}, ctx)['treatment'] == "off"
+
+ def test_using_rbs_in_excluded(self):
+ rbs_segments = os.path.join(os.path.dirname(__file__), 'files', 'rule_base_segments2.json')
+ with open(rbs_segments, 'r') as flo:
+ data = json.loads(flo.read())
+ e = evaluator.Evaluator(splitters.Splitter())
+ events_queue = queue.Queue()
+ splits_storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ evaluation_facctory = EvaluationDataFactory(splits_storage, segment_storage, rbs_storage)
+
+ mocked_split = Split('some', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False, [])
+ rbs = rule_based_segments.from_raw(data["rbs"]["d"][0])
+ rbs2 = rule_based_segments.from_raw(data["rbs"]["d"][1])
+ rbs_storage.update([rbs, rbs2], [], 12)
+ splits_storage.update([mocked_split], [], 12)
+
+ ctx = evaluation_facctory.context_for('bilal@split.io', ['some'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'some', {'email': 'bilal@split.io'}, ctx)['treatment'] == "off"
+ ctx = evaluation_facctory.context_for('bilal', ['some'])
+ assert e.eval_with_context('bilal', 'bilal', 'some', {'email': 'bilal'}, ctx)['treatment'] == "on"
+ ctx = evaluation_facctory.context_for('bilal2@split.io', ['some'])
+ assert e.eval_with_context('bilal2@split.io', 'bilal2@split.io', 'some', {'email': 'bilal2@split.io'}, ctx)['treatment'] == "on"
+
+ def test_prerequisites(self):
+ splits_load = os.path.join(os.path.dirname(__file__), '../models/grammar/files', 'splits_prereq.json')
+ with open(splits_load, 'r') as flo:
+ data = json.loads(flo.read())
+ e = evaluator.Evaluator(splitters.Splitter())
+ events_queue = queue.Queue()
+ splits_storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ evaluation_facctory = EvaluationDataFactory(splits_storage, segment_storage, rbs_storage)
+
+ rbs = rule_based_segments.from_raw(data["rbs"]["d"][0])
+ split1 = from_raw(data["ff"]["d"][0])
+ split2 = from_raw(data["ff"]["d"][1])
+ split3 = from_raw(data["ff"]["d"][2])
+ split4 = from_raw(data["ff"]["d"][3])
+ rbs_storage.update([rbs], [], 12)
+ splits_storage.update([split1, split2, split3, split4], [], 12)
+ segment = segments.from_raw({'name': 'segment-test', 'added': ['pato@split.io'], 'removed': [], 'till': 123})
+ segment_storage.put(segment)
+
+ ctx = evaluation_facctory.context_for('bilal@split.io', ['test_prereq'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'test_prereq', {'email': 'bilal@split.io'}, ctx)['treatment'] == "on"
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'test_prereq', {}, ctx)['treatment'] == "def_treatment"
+
+ ctx = evaluation_facctory.context_for('mauro@split.io', ['test_prereq'])
+ assert e.eval_with_context('mauro@split.io', 'mauro@split.io', 'test_prereq', {'email': 'mauro@split.io'}, ctx)['treatment'] == "def_treatment"
+
+ ctx = evaluation_facctory.context_for('pato@split.io', ['test_prereq'])
+ assert e.eval_with_context('pato@split.io', 'pato@split.io', 'test_prereq', {'email': 'pato@split.io'}, ctx)['treatment'] == "def_treatment"
+
+ ctx = evaluation_facctory.context_for('nico@split.io', ['test_prereq'])
+ assert e.eval_with_context('nico@split.io', 'nico@split.io', 'test_prereq', {'email': 'nico@split.io'}, ctx)['treatment'] == "on"
+
+ ctx = evaluation_facctory.context_for('bilal@split.io', ['prereq_chain'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'prereq_chain', {'email': 'bilal@split.io'}, ctx)['treatment'] == "on_whitelist"
+
+ ctx = evaluation_facctory.context_for('nico@split.io', ['prereq_chain'])
+ assert e.eval_with_context('nico@split.io', 'nico@split.io', 'test_prereq', {'email': 'nico@split.io'}, ctx)['treatment'] == "on"
+
+ ctx = evaluation_facctory.context_for('pato@split.io', ['prereq_chain'])
+ assert e.eval_with_context('pato@split.io', 'pato@split.io', 'prereq_chain', {'email': 'pato@split.io'}, ctx)['treatment'] == "on_default"
+
+ ctx = evaluation_facctory.context_for('mauro@split.io', ['prereq_chain'])
+ assert e.eval_with_context('mauro@split.io', 'mauro@split.io', 'prereq_chain', {'email': 'mauro@split.io'}, ctx)['treatment'] == "on_default"
+
+ def test_evaluate_treatment_with_fallback(self, mocker):
+ """Test that a evaluation return fallback treatment."""
+ splitter_mock = mocker.Mock(spec=splitters.Splitter)
+ logger_mock = mocker.Mock(spec=logging.Logger)
+ evaluator._LOGGER = logger_mock
mocked_split = mocker.Mock(spec=Split)
- mocked_split.traffic_allocation = 50
- mocked_split.default_treatment = 'almost-on'
- mocked_split.killed = False
- type(mocked_split).conditions = conditions_mock
- treatment, label = e._get_treatment_for_split(mocked_split, 'some_key', 'some_bucketing', {'attr1': 1})
- assert treatment == 'almost-on'
- assert label == Label.NOT_IN_SPLIT
+ ctx = EvaluationContext(flags={'some': mocked_split}, segment_memberships=set(), rbs_segments={})
+
+ # should use global fallback
+ e = evaluator.Evaluator(splitter_mock, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("off-global", '{"prop": "val"}'))))
+ result = e.eval_with_context('some_key', 'some_bucketing_key', 'some2', {}, ctx)
+ assert result['treatment'] == 'off-global'
+ assert result['configurations'] == '{"prop": "val"}'
+ assert result['impression']['label'] == "fallback - " + Label.SPLIT_NOT_FOUND
+
+ # should use by flag fallback
+ e = evaluator.Evaluator(splitter_mock, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {"some2": FallbackTreatment("off-some2", '{"prop2": "val2"}')})))
+ result = e.eval_with_context('some_key', 'some_bucketing_key', 'some2', {}, ctx)
+ assert result['treatment'] == 'off-some2'
+ assert result['configurations'] == '{"prop2": "val2"}'
+ assert result['impression']['label'] == "fallback - " + Label.SPLIT_NOT_FOUND
+
+ # should not use any fallback
+ e = evaluator.Evaluator(splitter_mock, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {"some2": FallbackTreatment("off-some2", '{"prop2": "val2"}')})))
+ result = e.eval_with_context('some_key', 'some_bucketing_key', 'some3', {}, ctx)
+ assert result['treatment'] == 'control'
+ assert result['configurations'] == None
+ assert result['impression']['label'] == Label.SPLIT_NOT_FOUND
+
+ # should use by flag fallback
+ e = evaluator.Evaluator(splitter_mock, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("off-global", '{"prop": "val"}'), {"some2": FallbackTreatment("off-some2", '{"prop2": "val2"}')})))
+ result = e.eval_with_context('some_key', 'some_bucketing_key', 'some2', {}, ctx)
+ assert result['treatment'] == 'off-some2'
+ assert result['configurations'] == '{"prop2": "val2"}'
+ assert result['impression']['label'] == "fallback - " + Label.SPLIT_NOT_FOUND
+
+ # should global flag fallback
+ e = evaluator.Evaluator(splitter_mock, FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("off-global", '{"prop": "val"}'), {"some2": FallbackTreatment("off-some2", '{"prop2": "val2"}')})))
+ result = e.eval_with_context('some_key', 'some_bucketing_key', 'some3', {}, ctx)
+ assert result['treatment'] == 'off-global'
+ assert result['configurations'] == '{"prop": "val"}'
+ assert result['impression']['label'] == "fallback - " + Label.SPLIT_NOT_FOUND
+
+ @pytest.mark.asyncio
+ async def test_evaluate_treatment_with_rbs_in_condition_async(self):
+ e = evaluator.Evaluator(splitters.Splitter())
+ internal_events_queue = asyncio.Queue()
+
+ splits_storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ evaluation_facctory = AsyncEvaluationDataFactory(splits_storage, segment_storage, rbs_storage)
+
+ rbs_segments = os.path.join(os.path.dirname(__file__), 'files', 'rule_base_segments.json')
+ with open(rbs_segments, 'r') as flo:
+ data = json.loads(flo.read())
+
+ mocked_split = Split('some', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False)
+ rbs = rule_based_segments.from_raw(data["rbs"]["d"][0])
+ rbs2 = rule_based_segments.from_raw(data["rbs"]["d"][1])
+ await rbs_storage.update([rbs, rbs2], [], 12)
+ await splits_storage.update([mocked_split], [], 12)
+
+ ctx = await evaluation_facctory.context_for('bilal@split.io', ['some'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'some', {'email': 'bilal@split.io'}, ctx)['treatment'] == "on"
+ ctx = await evaluation_facctory.context_for('mauro@split.io', ['some'])
+ assert e.eval_with_context('mauro@split.io', 'mauro@split.io', 'some', {'email': 'mauro@split.io'}, ctx)['treatment'] == "off"
+
+ @pytest.mark.asyncio
+ async def test_using_segment_in_excluded_async(self):
+ rbs_segments = os.path.join(os.path.dirname(__file__), 'files', 'rule_base_segments3.json')
+ with open(rbs_segments, 'r') as flo:
+ data = json.loads(flo.read())
+ e = evaluator.Evaluator(splitters.Splitter())
+ internal_events_queue = asyncio.Queue()
+ splits_storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ evaluation_facctory = AsyncEvaluationDataFactory(splits_storage, segment_storage, rbs_storage)
+
+ mocked_split = Split('some', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False)
+ rbs = rule_based_segments.from_raw(data["rbs"]["d"][0])
+ await rbs_storage.update([rbs], [], 12)
+ await splits_storage.update([mocked_split], [], 12)
+ segment = segments.from_raw({'name': 'segment1', 'added': ['pato@split.io'], 'removed': [], 'till': 123})
+ await segment_storage.put(segment)
+
+ ctx = await evaluation_facctory.context_for('bilal@split.io', ['some'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'some', {'email': 'bilal@split.io'}, ctx)['treatment'] == "on"
+ ctx = await evaluation_facctory.context_for('mauro@split.io', ['some'])
+ assert e.eval_with_context('mauro@split.io', 'mauro@split.io', 'some', {'email': 'mauro@split.io'}, ctx)['treatment'] == "off"
+ ctx = await evaluation_facctory.context_for('pato@split.io', ['some'])
+ assert e.eval_with_context('pato@split.io', 'pato@split.io', 'some', {'email': 'pato@split.io'}, ctx)['treatment'] == "off"
+
+ @pytest.mark.asyncio
+ async def test_using_rbs_in_excluded_async(self):
+ rbs_segments = os.path.join(os.path.dirname(__file__), 'files', 'rule_base_segments2.json')
+ with open(rbs_segments, 'r') as flo:
+ data = json.loads(flo.read())
+ e = evaluator.Evaluator(splitters.Splitter())
+ internal_events_queue = asyncio.Queue()
+ splits_storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ evaluation_facctory = AsyncEvaluationDataFactory(splits_storage, segment_storage, rbs_storage)
+
+ mocked_split = Split('some', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False)
+ rbs = rule_based_segments.from_raw(data["rbs"]["d"][0])
+ rbs2 = rule_based_segments.from_raw(data["rbs"]["d"][1])
+ await rbs_storage.update([rbs, rbs2], [], 12)
+ await splits_storage.update([mocked_split], [], 12)
+
+ ctx = await evaluation_facctory.context_for('bilal@split.io', ['some'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'some', {'email': 'bilal@split.io'}, ctx)['treatment'] == "off"
+ ctx = await evaluation_facctory.context_for('bilal', ['some'])
+ assert e.eval_with_context('bilal', 'bilal', 'some', {'email': 'bilal'}, ctx)['treatment'] == "on"
+ ctx = await evaluation_facctory.context_for('bilal2@split.io', ['some'])
+ assert e.eval_with_context('bilal2@split.io', 'bilal2@split.io', 'some', {'email': 'bilal2@split.io'}, ctx)['treatment'] == "on"
+
+ @pytest.mark.asyncio
+ async def test_prerequisites(self):
+ splits_load = os.path.join(os.path.dirname(__file__), '../models/grammar/files', 'splits_prereq.json')
+ with open(splits_load, 'r') as flo:
+ data = json.loads(flo.read())
+ e = evaluator.Evaluator(splitters.Splitter())
+ internal_events_queue = asyncio.Queue()
+ splits_storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ evaluation_facctory = AsyncEvaluationDataFactory(splits_storage, segment_storage, rbs_storage)
+
+ rbs = rule_based_segments.from_raw(data["rbs"]["d"][0])
+ split1 = from_raw(data["ff"]["d"][0])
+ split2 = from_raw(data["ff"]["d"][1])
+ split3 = from_raw(data["ff"]["d"][2])
+ split4 = from_raw(data["ff"]["d"][3])
+ await rbs_storage.update([rbs], [], 12)
+ await splits_storage.update([split1, split2, split3, split4], [], 12)
+ segment = segments.from_raw({'name': 'segment-test', 'added': ['pato@split.io'], 'removed': [], 'till': 123})
+ await segment_storage.put(segment)
+
+ ctx = await evaluation_facctory.context_for('bilal@split.io', ['test_prereq'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'test_prereq', {'email': 'bilal@split.io'}, ctx)['treatment'] == "on"
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'test_prereq', {}, ctx)['treatment'] == "def_treatment"
+
+ ctx = await evaluation_facctory.context_for('mauro@split.io', ['test_prereq'])
+ assert e.eval_with_context('mauro@split.io', 'mauro@split.io', 'test_prereq', {'email': 'mauro@split.io'}, ctx)['treatment'] == "def_treatment"
+
+ ctx = await evaluation_facctory.context_for('pato@split.io', ['test_prereq'])
+ assert e.eval_with_context('pato@split.io', 'pato@split.io', 'test_prereq', {'email': 'pato@split.io'}, ctx)['treatment'] == "def_treatment"
+
+ ctx = await evaluation_facctory.context_for('nico@split.io', ['test_prereq'])
+ assert e.eval_with_context('nico@split.io', 'nico@split.io', 'test_prereq', {'email': 'nico@split.io'}, ctx)['treatment'] == "on"
+
+ ctx = await evaluation_facctory.context_for('bilal@split.io', ['prereq_chain'])
+ assert e.eval_with_context('bilal@split.io', 'bilal@split.io', 'prereq_chain', {'email': 'bilal@split.io'}, ctx)['treatment'] == "on_whitelist"
+
+ ctx = await evaluation_facctory.context_for('nico@split.io', ['prereq_chain'])
+ assert e.eval_with_context('nico@split.io', 'nico@split.io', 'test_prereq', {'email': 'nico@split.io'}, ctx)['treatment'] == "on"
+
+ ctx = await evaluation_facctory.context_for('pato@split.io', ['prereq_chain'])
+ assert e.eval_with_context('pato@split.io', 'pato@split.io', 'prereq_chain', {'email': 'pato@split.io'}, ctx)['treatment'] == "on_default"
+
+ ctx = await evaluation_facctory.context_for('mauro@split.io', ['prereq_chain'])
+ assert e.eval_with_context('mauro@split.io', 'mauro@split.io', 'prereq_chain', {'email': 'mauro@split.io'}, ctx)['treatment'] == "on_default"
+
+class EvaluationDataFactoryTests(object):
+ """Test evaluation factory class."""
+
+ def test_get_context(self):
+ """Test context."""
+ mocked_split = Split('some', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False, [Prerequisites('split2', ['on'])])
+ split2 = Split('split2', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False, [])
+ events_queue = queue.Queue()
+ flag_storage = InMemorySplitStorage(events_queue, [])
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rbs_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ flag_storage.update([mocked_split, split2], [], -1)
+ rbs = copy.deepcopy(rbs_raw)
+ rbs['conditions'].append(
+ {"matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "IN_SEGMENT",
+ "negate": False,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "employees"
+ },
+ "whitelistMatcherData": None
+ }
+ ]
+ },
+ })
+ rbs = rule_based_segments.from_raw(rbs)
+ rbs_segment_storage.update([rbs], [], -1)
+
+ eval_factory = EvaluationDataFactory(flag_storage, segment_storage, rbs_segment_storage)
+ ec = eval_factory.context_for('bilal@split.io', ['some'])
+ assert ec.rbs_segments == {'sample_rule_based_segment': rbs}
+ assert ec.segment_memberships == {"employees": False}
+ assert ec.flags.get("split2").name == "split2"
+
+ segment_storage.update("employees", {"mauro@split.io"}, {}, 1234)
+ ec = eval_factory.context_for('mauro@split.io', ['some'])
+ assert ec.rbs_segments == {'sample_rule_based_segment': rbs}
+ assert ec.segment_memberships == {"employees": True}
+
+class EvaluationDataFactoryAsyncTests(object):
+ """Test evaluation factory class."""
+
+ @pytest.mark.asyncio
+ async def test_get_context(self):
+ """Test context."""
+ mocked_split = Split('some', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False, [Prerequisites('split2', ['on'])])
+ split2 = Split('split2', 12345, False, 'off', 'user', Status.ACTIVE, 12, split_conditions, 1.2, 100, 1234, {}, None, False, [])
+ internal_events_queue = asyncio.Queue()
+ flag_storage = InMemorySplitStorageAsync(internal_events_queue, [])
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rbs_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ await flag_storage.update([mocked_split, split2], [], -1)
+ rbs = copy.deepcopy(rbs_raw)
+ rbs['conditions'].append(
+ {"matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "IN_SEGMENT",
+ "negate": False,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "employees"
+ },
+ "whitelistMatcherData": None
+ }
+ ]
+ },
+ })
+ rbs = rule_based_segments.from_raw(rbs)
+ await rbs_segment_storage.update([rbs], [], -1)
+
+ eval_factory = AsyncEvaluationDataFactory(flag_storage, segment_storage, rbs_segment_storage)
+ ec = await eval_factory.context_for('bilal@split.io', ['some'])
+ assert ec.rbs_segments == {'sample_rule_based_segment': rbs}
+ assert ec.segment_memberships == {"employees": False}
+ assert ec.flags.get("split2").name == "split2"
+
+ await segment_storage.update("employees", {"mauro@split.io"}, {}, 1234)
+ ec = await eval_factory.context_for('mauro@split.io', ['some'])
+ assert ec.rbs_segments == {'sample_rule_based_segment': rbs}
+ assert ec.segment_memberships == {"employees": True}
diff --git a/tests/engine/test_hashfns.py b/tests/engine/test_hashfns.py
index 3ab3953c..36252fc7 100644
--- a/tests/engine/test_hashfns.py
+++ b/tests/engine/test_hashfns.py
@@ -5,9 +5,8 @@
import os
import pytest
-import six
-
from splitio.engine import hashfns, splitters
+from splitio.engine.hashfns.murmur3py import hash128_x64 as murmur3_128_py
from splitio.models import splits
@@ -87,3 +86,31 @@ def test_murmur_hash_non_ascii_data(self):
hashed = int(hashed)
assert hashfns._murmur_hash(key, seed) == hashed
assert splitter.get_bucket(key, seed, splits.HashAlgorithm.MURMUR) == bucket
+
+ def test_murmur128(self):
+ """Test legacy hash function against known results."""
+ file_name = os.path.join(os.path.dirname(__file__), 'files', 'murmur128_test_suite.csv')
+ with io.open(file_name, 'r', encoding='utf-8') as flo:
+ lines = flo.read().split('\n')
+
+ for line in lines:
+ if line is None or line == '':
+ continue
+ key, seed, hashed = line.split(',')
+ seed = int(seed)
+ hashed = int(hashed)
+ assert hashfns.murmur_128(key, seed) == hashed
+
+ def test_murmur128_pure_python(self):
+ """Test legacy hash function against known results."""
+ file_name = os.path.join(os.path.dirname(__file__), 'files', 'murmur128_test_suite.csv')
+ with io.open(file_name, 'r', encoding='utf-8') as flo:
+ lines = flo.read().split('\n')
+
+ for line in lines:
+ if line is None or line == '':
+ continue
+ key, seed, hashed = line.split(',')
+ seed = int(seed)
+ hashed = int(hashed)
+ assert murmur3_128_py(key, seed)[0] == hashed
diff --git a/tests/engine/test_impressions.py b/tests/engine/test_impressions.py
new file mode 100644
index 00000000..715bfe1b
--- /dev/null
+++ b/tests/engine/test_impressions.py
@@ -0,0 +1,669 @@
+"""Impression manager, observer & hasher tests."""
+from datetime import datetime
+import unittest.mock as mock
+import pytest
+from splitio.engine.impressions.impressions import Manager, ImpressionsMode
+from splitio.engine.impressions.manager import Hasher, Observer, Counter, truncate_time
+from splitio.engine.impressions.strategies import StrategyDebugMode, StrategyOptimizedMode, StrategyNoneMode
+from splitio.models.impressions import Impression, ImpressionDecorated
+from splitio.client.listener import ImpressionListenerWrapper
+import splitio.models.telemetry as ModelTelemetry
+from splitio.engine.telemetry import TelemetryStorageProducer
+from splitio.storage.inmemmory import InMemoryTelemetryStorage
+
+def utctime_ms_reimplement():
+ """Re-implementation of utctime_ms to avoid conflicts with mock/patching."""
+ return int((datetime.utcnow() - datetime(1970, 1, 1)).total_seconds() * 1000)
+
+
+class ImpressionHasherTests(object):
+ """Test ImpressionHasher behavior."""
+
+ def test_changes_are_reflected(self):
+ """Test that change in any field changes the resulting hash."""
+ total = set()
+ hasher = Hasher()
+ total.add(hasher.process(Impression('key1', 'feature1', 'on', 'killed', 123, None, 456, None, {})))
+ total.add(hasher.process(Impression('key2', 'feature1', 'on', 'killed', 123, None, 456, None, {})))
+ total.add(hasher.process(Impression('key1', 'feature2', 'on', 'killed', 123, None, 456, None, {})))
+ total.add(hasher.process(Impression('key1', 'feature1', 'off', 'killed', 123, None, 456, None, {})))
+ total.add(hasher.process(Impression('key1', 'feature1', 'on', 'not killed', 123, None, 456, None, {})))
+ total.add(hasher.process(Impression('key1', 'feature1', 'on', 'killed', 321, None, 456, None, {})))
+ assert len(total) == 6
+
+ # Re-adding the first-one should not increase the number of different hashes
+ total.add(hasher.process(Impression('key1', 'feature1', 'on', 'killed', 123, None, 456, None, {})))
+ assert len(total) == 6
+
+
+class ImpressionObserverTests(object):
+ """Test impression observer behaviour."""
+
+ def test_previous_time_properly_calculated(self):
+ """Test that the previous time is properly set."""
+ observer = Observer(5)
+ assert (observer.test_and_set(Impression('key1', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ == Impression('key1', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ assert (observer.test_and_set(Impression('key1', 'f1', 'on', 'killed', 123, None, 457, None, None))
+ == Impression('key1', 'f1', 'on', 'killed', 123, None, 457, 456, None))
+
+ # Add 5 new impressions to evict the first one and check that previous time is None again
+ assert (observer.test_and_set(Impression('key2', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ == Impression('key2', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ assert (observer.test_and_set(Impression('key3', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ == Impression('key3', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ assert (observer.test_and_set(Impression('key4', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ == Impression('key4', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ assert (observer.test_and_set(Impression('key5', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ == Impression('key5', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ assert (observer.test_and_set(Impression('key6', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ == Impression('key6', 'f1', 'on', 'killed', 123, None, 456, None, None))
+
+ # Re-process the first-one
+ assert (observer.test_and_set(Impression('key1', 'f1', 'on', 'killed', 123, None, 456, None, None))
+ == Impression('key1', 'f1', 'on', 'killed', 123, None, 456, None, None))
+
+
+class ImpressionCounterTests(object):
+ """Impression counter test cases."""
+
+ def test_tracking_and_popping(self):
+ """Test adding impressions counts and popping them."""
+ counter = Counter()
+ utc_now = utctime_ms_reimplement()
+ utc_1_hour_after = utc_now + (3600 * 1000)
+ counter.track([Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now, None, None),
+ Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now, None, None),
+ Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now, None, None)])
+
+ counter.track([Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now, None, None)])
+
+ counter.track([Impression('k1', 'f1', 'on', 'l1', 123, None, utc_1_hour_after, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_1_hour_after, None, None)])
+
+ assert set(counter.pop_all()) == set([
+ Counter.CountPerFeature('f1', truncate_time(utc_now), 3),
+ Counter.CountPerFeature('f2', truncate_time(utc_now), 2),
+ Counter.CountPerFeature('f1', truncate_time(utc_1_hour_after), 1),
+ Counter.CountPerFeature('f2', truncate_time(utc_1_hour_after), 1)])
+ assert len(counter._data) == 0
+ assert set(counter.pop_all()) == set()
+
+class ImpressionManagerTests(object):
+ """Test impressions manager in all of its configurations."""
+
+ def test_standalone_optimized(self, mocker):
+ """Test impressions manager in optimized mode with sdk in standalone mode."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ manager = Manager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ assert manager._strategy._observer is not None
+ assert isinstance(manager._strategy, StrategyOptimizedMode)
+ assert isinstance(manager._none_strategy, StrategyNoneMode)
+
+ # An impression that hasn't happened in the last hour (pt = None) should be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), False), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+
+ assert for_unique_keys_tracker == []
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)]
+ assert deduped == 0
+
+ # Tracking the same impression a ms later should be empty
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == []
+ assert deduped == 1
+ assert for_unique_keys_tracker == []
+
+ # Tracking an impression with a different key makes it to the queue
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert imps == [Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None)]
+ assert deduped == 0
+
+ # Advance the perceived clock one hour
+ old_utc = utc_now # save it to compare captured impressions
+ utc_now += 3600 * 1000
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ # Track the same impressions but "one hour later"
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None),
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, old_utc-3, None),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None)]
+ assert deduped == 0
+ assert for_unique_keys_tracker == []
+
+ assert len(manager._strategy._observer._cache._data) == 3 # distinct impressions seen
+ assert for_counter == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, old_utc-3, None),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None)]
+
+ # Test counting only from the second impression
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k3', 'f3', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert for_counter == []
+ assert deduped == 0
+ assert for_unique_keys_tracker == []
+
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k3', 'f3', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert for_counter == [Impression('k3', 'f3', 'on', 'l1', 123, None, utc_now-1, utc_now-1, None)]
+ assert deduped == 1
+ assert for_unique_keys_tracker == []
+
+ def test_standalone_debug(self, mocker):
+ """Test impressions manager in debug mode with sdk in standalone mode."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ manager = Manager(StrategyDebugMode(), StrategyNoneMode(), mocker.Mock()) # no listener
+ assert manager._strategy._observer is not None
+ assert isinstance(manager._strategy, StrategyDebugMode)
+
+ # An impression that hasn't happened in the last hour (pt = None) should be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), False), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)]
+ assert for_counter == []
+ assert for_unique_keys_tracker == []
+
+ # Tracking the same impression a ms later should return the impression
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, utc_now-3, None)]
+ assert for_counter == []
+ assert for_unique_keys_tracker == []
+
+ # Tracking a in impression with a different key makes it to the queue
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert imps == [Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None)]
+ assert for_counter == []
+ assert for_unique_keys_tracker == []
+
+ # Advance the perceived clock one hour
+ old_utc = utc_now # save it to compare captured impressions
+ utc_now += 3600 * 1000
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ # Track the same impressions but "one hour later"
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None),
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, old_utc-3, None),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None)]
+ assert for_counter == []
+ assert for_unique_keys_tracker == []
+
+ assert len(manager._strategy._observer._cache._data) == 3 # distinct impressions seen
+
+ def test_standalone_none(self, mocker):
+ """Test impressions manager in none mode with sdk in standalone mode."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ manager = Manager(StrategyNoneMode(), StrategyNoneMode(), mocker.Mock()) # no listener
+ assert isinstance(manager._strategy, StrategyNoneMode)
+
+ # no impressions are tracked, only counter and mtk
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), False), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+ assert imps == []
+ assert for_counter == [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)
+ ]
+ assert for_unique_keys_tracker == [('k1', 'f1'), ('k1', 'f2')]
+
+ # Tracking the same impression a ms later should not return the impression and no change on mtk cache
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == []
+
+ # Tracking an impression with a different key, will only increase mtk
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k3', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert imps == []
+ assert for_unique_keys_tracker == [('k3', 'f1')]
+ assert for_counter == [
+ Impression('k3', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None)
+ ]
+
+ # Advance the perceived clock one hour
+ old_utc = utc_now # save it to compare captured impressions
+ utc_now += 3600 * 1000
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ # Track the same impressions but "one hour later", no changes on mtk
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None),
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == []
+ assert for_counter == [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None)
+ ]
+
+ def test_standalone_optimized_listener(self, mocker):
+ """Test impressions manager in optimized mode with sdk in standalone mode."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+# mocker.patch('splitio.util.time.utctime_ms', return_value=utc_time_mock)
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ manager = Manager(StrategyOptimizedMode(), StrategyNoneMode(), mocker.Mock())
+ assert manager._strategy._observer is not None
+ assert isinstance(manager._strategy, StrategyOptimizedMode)
+
+ # An impression that hasn't happened in the last hour (pt = None) should be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), False), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)]
+ assert deduped == 0
+ assert listen == [(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), None),
+ (Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), None)]
+ assert for_unique_keys_tracker == []
+
+ # Tracking the same impression a ms later should return empty
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == []
+ assert deduped == 1
+ assert listen == [(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, utc_now-3, None), None)]
+ assert for_unique_keys_tracker == []
+
+ # Tracking a in impression with a different key makes it to the queue
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert imps == [Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None)]
+ assert deduped == 0
+ assert listen == [(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), None)]
+ assert for_unique_keys_tracker == []
+
+ # Advance the perceived clock one hour
+ old_utc = utc_now # save it to compare captured impressions
+ utc_now += 3600 * 1000
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ # Track the same impressions but "one hour later"
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None),
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, old_utc-3, None),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None)]
+ assert deduped == 0
+ assert listen == [
+ (Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, old_utc-3, None), None),
+ (Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None), None),
+ ]
+ assert for_unique_keys_tracker == []
+ assert len(manager._strategy._observer._cache._data) == 3 # distinct impressions seen
+ assert for_counter == [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, old_utc-3, None),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None)
+ ]
+
+ # Test counting only from the second impression
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k3', 'f3', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert for_counter == []
+ assert deduped == 0
+ assert for_unique_keys_tracker == []
+
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k3', 'f3', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert for_counter == [
+ Impression('k3', 'f3', 'on', 'l1', 123, None, utc_now-1, utc_now-1, None)
+ ]
+ assert deduped == 1
+ assert for_unique_keys_tracker == []
+
+ def test_standalone_debug_listener(self, mocker):
+ """Test impressions manager in optimized mode with sdk in standalone mode."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ imps = []
+ listener = mocker.Mock(spec=ImpressionListenerWrapper)
+ manager = Manager(StrategyDebugMode(), StrategyNoneMode(), mocker.Mock())
+ assert isinstance(manager._strategy, StrategyDebugMode)
+
+ # An impression that hasn't happened in the last hour (pt = None) should be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), False), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)]
+
+ assert listen == [(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), None),
+ (Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), None)]
+
+ # Tracking the same impression a ms later should return the imp
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, utc_now-3, None)]
+ assert listen == [(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, utc_now-3, None), None)]
+ assert for_counter == []
+ assert for_unique_keys_tracker == []
+
+ # Tracking a in impression with a different key makes it to the queue
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert imps == [Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None)]
+ assert listen == [(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), None)]
+ assert for_counter == []
+ assert for_unique_keys_tracker == []
+
+ # Advance the perceived clock one hour
+ old_utc = utc_now # save it to compare captured impressions
+ utc_now += 3600 * 1000
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ # Track the same impressions but "one hour later"
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None),
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, old_utc-3, None),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None)]
+ assert listen == [
+ (Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, old_utc-3, None), None),
+ (Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None), None)
+ ]
+ assert len(manager._strategy._observer._cache._data) == 3 # distinct impressions seen
+ assert for_counter == []
+ assert for_unique_keys_tracker == []
+
+ def test_standalone_none_listener(self, mocker):
+ """Test impressions manager in none mode with sdk in standalone mode."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ manager = Manager(StrategyNoneMode(), StrategyNoneMode(), mocker.Mock())
+ assert isinstance(manager._strategy, StrategyNoneMode)
+
+ # An impression that hasn't happened in the last hour (pt = None) should not be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), False), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+ assert imps == []
+ assert listen == [(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), None),
+ (Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), None)]
+
+ assert for_counter == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)]
+ assert for_unique_keys_tracker == [('k1', 'f1'), ('k1', 'f2')]
+
+ # Tracking the same impression a ms later should return empty, no updates on mtk
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == []
+ assert listen == [(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), None)]
+ assert for_counter == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-2, None)]
+ assert for_unique_keys_tracker == [('k1', 'f1')]
+
+ # Tracking a in impression with a different key update mtk
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert imps == []
+ assert listen == [(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), None)]
+ assert for_counter == [Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None)]
+ assert for_unique_keys_tracker == [('k2', 'f1')]
+
+ # Advance the perceived clock one hour
+ old_utc = utc_now # save it to compare captured impressions
+ utc_now += 3600 * 1000
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ # Track the same impressions but "one hour later"
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None),
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == []
+ assert for_counter == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None)]
+ assert listen == [
+ (Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), None),
+ (Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), None)
+ ]
+ assert for_unique_keys_tracker == [('k1', 'f1'), ('k2', 'f1')]
+
+ def test_impression_toggle_optimized(self, mocker):
+ """Test impressions manager in optimized mode with sdk in standalone mode."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ manager = Manager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ assert manager._strategy._observer is not None
+ assert isinstance(manager._strategy, StrategyOptimizedMode)
+ assert isinstance(manager._none_strategy, StrategyNoneMode)
+
+ # An impression that hasn't happened in the last hour (pt = None) should be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), True), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+
+ assert for_unique_keys_tracker == [('k1', 'f1')]
+ assert imps == [Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)]
+ assert deduped == 1
+
+ def test_impression_toggle_debug(self, mocker):
+ """Test impressions manager in optimized mode with sdk in standalone mode."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ manager = Manager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ assert manager._strategy._observer is not None
+
+ # An impression that hasn't happened in the last hour (pt = None) should be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), True), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+
+ assert for_unique_keys_tracker == [('k1', 'f1')]
+ assert imps == [Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)]
+ assert deduped == 1
+
+ def test_impression_toggle_none(self, mocker):
+ """Test impressions manager in optimized mode with sdk in standalone mode."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ strategy = StrategyNoneMode()
+ manager = Manager(strategy, strategy, telemetry_runtime_producer) # no listener
+
+ # An impression that hasn't happened in the last hour (pt = None) should be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), True), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+
+ assert for_unique_keys_tracker == [('k1', 'f1'), ('k1', 'f2')]
+ assert imps == []
+ assert deduped == 2
+
+ def test_impressions_properties_optimized(self, mocker):
+ """Test impressions manager in optimized mode with impressions properties."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ manager = Manager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ assert manager._strategy._observer is not None
+ assert isinstance(manager._strategy, StrategyOptimizedMode)
+ assert isinstance(manager._none_strategy, StrategyNoneMode)
+
+ # An impression that hasn't happened in the last hour (pt = None) should be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), False), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+
+ assert for_unique_keys_tracker == []
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)]
+ assert deduped == 0
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert imps == [Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None)]
+
+ # Advance the perceived clock one hour
+ old_utc = utc_now # save it to compare captured impressions
+ utc_now += 3600 * 1000
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ # Track the same impressions but "one hour later"
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, {'prop': 'value'}), False), None),
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, {'prop': 'value'}),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None)]
+ assert deduped == 0
+ assert for_unique_keys_tracker == []
+
+ def test_impressions_properties_debug(self, mocker):
+ """Test impressions manager in optimized mode with impressions properties."""
+
+ # Mock utc_time function to be able to play with the clock
+ utc_now = truncate_time(utctime_ms_reimplement()) + 1800 * 1000
+ utc_time_mock = mocker.Mock()
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ manager = Manager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+
+ # An impression that hasn't happened in the last hour (pt = None) should be tracked
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None), False), None),
+ (ImpressionDecorated(Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None), False), None)
+ ])
+
+ assert for_unique_keys_tracker == []
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-3, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, utc_now-3, None, None)]
+ assert deduped == 0
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None), False), None)
+ ])
+ assert imps == [Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-1, None, None)]
+
+ # Advance the perceived clock one hour
+ old_utc = utc_now # save it to compare captured impressions
+ utc_now += 3600 * 1000
+ utc_time_mock.return_value = utc_now
+ mocker.patch('splitio.engine.impressions.strategies.utctime_ms', return_value=utc_time_mock())
+
+ # Track the same impressions but "one hour later"
+ imps, deduped, listen, for_counter, for_unique_keys_tracker = manager.process_impressions([
+ (ImpressionDecorated(Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, {'prop': 'value'}), False), None),
+ (ImpressionDecorated(Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, None, None), False), None)
+ ])
+ assert imps == [Impression('k1', 'f1', 'on', 'l1', 123, None, utc_now-1, None, {'prop': 'value'}),
+ Impression('k2', 'f1', 'on', 'l1', 123, None, utc_now-2, old_utc-1, None)]
+ assert deduped == 0
+ assert for_unique_keys_tracker == []
\ No newline at end of file
diff --git a/tests/engine/test_send_adapters.py b/tests/engine/test_send_adapters.py
new file mode 100644
index 00000000..97a17531
--- /dev/null
+++ b/tests/engine/test_send_adapters.py
@@ -0,0 +1,289 @@
+import unittest.mock as mock
+import ast
+import json
+import pytest
+import redis.asyncio as aioredis
+
+from splitio.engine.impressions.adapters import InMemorySenderAdapter, RedisSenderAdapter, PluggableSenderAdapter, \
+ InMemorySenderAdapterAsync, RedisSenderAdapterAsync, PluggableSenderAdapterAsync
+from splitio.engine.impressions import adapters
+from splitio.api.telemetry import TelemetryAPI, TelemetryAPIAsync
+from splitio.storage.adapters.redis import RedisAdapter, RedisAdapterAsync
+from splitio.engine.impressions.manager import Counter
+from tests.storage.test_pluggable import StorageMockAdapter, StorageMockAdapterAsync
+
+
+class InMemorySenderAdapterTests(object):
+ """In memory sender adapter test."""
+
+ def test_uniques_formatter(self, mocker):
+ """Test formatting dict to json."""
+
+ uniques = {"feature1": set({'key1', 'key2', 'key3'}),
+ "feature2": set({'key6', 'key1', 'key10'}),
+ }
+ formatted = [
+ {'f': 'feature1', 'ks': ['key1', 'key2', 'key3']},
+ {'f': 'feature2', 'ks': ['key1', 'key6', 'key10']},
+ ]
+
+ sender_adapter = InMemorySenderAdapter(mocker.Mock())
+ for i in range(0,1):
+ assert(sorted(sender_adapter._uniques_formatter(uniques)[i]["ks"]) == sorted(formatted[i]["ks"]))
+
+
+ @mock.patch('splitio.api.telemetry.TelemetryAPI.record_unique_keys')
+ def test_record_unique_keys(self, mocker):
+ """Test sending unique keys."""
+
+ uniques = {"feature1": set({'key1', 'key2', 'key3'}),
+ "feature2": set({'key1', 'key2', 'key3'}),
+ }
+ telemetry_api = TelemetryAPI(mocker.Mock(), 'some_api_key', mocker.Mock(), mocker.Mock())
+ sender_adapter = InMemorySenderAdapter(telemetry_api)
+ sender_adapter.record_unique_keys(uniques)
+ assert(mocker.called)
+
+class InMemorySenderAdapterAsyncTests(object):
+ """In memory sender adapter test."""
+
+ @pytest.mark.asyncio
+ async def test_record_unique_keys(self, mocker):
+ """Test sending unique keys."""
+
+ uniques = {"feature1": set({'key1', 'key2', 'key3'}),
+ "feature2": set({'key1', 'key2', 'key3'}),
+ }
+ telemetry_api = TelemetryAPIAsync(mocker.Mock(), 'some_api_key', mocker.Mock(), mocker.Mock())
+ self.called = False
+ async def record_unique_keys(*args):
+ self.called = True
+
+ telemetry_api.record_unique_keys = record_unique_keys
+ sender_adapter = InMemorySenderAdapterAsync(telemetry_api)
+ await sender_adapter.record_unique_keys(uniques)
+ assert(self.called)
+
+class RedisSenderAdapterTests(object):
+ """Redis sender adapter test."""
+
+ def test_uniques_formatter(self, mocker):
+ """Test formatting dict to json."""
+
+ uniques = {"feature1": set({'key1', 'key2', 'key3'}),
+ "feature2": set({'key6', 'key1', 'key10'}),
+ }
+ formatted = [
+ {'f': 'feature1', 'ks': ['key1', 'key2', 'key3']},
+ {'f': 'feature2', 'ks': ['key6', 'key1', 'key10']},
+ ]
+
+ for i in range(0,1):
+ assert(sorted(ast.literal_eval(adapters._uniques_formatter(uniques)[i])["ks"]) == sorted(formatted[i]["ks"]))
+
+ @mock.patch('splitio.storage.adapters.redis.RedisAdapter.rpush')
+ def test_record_unique_keys(self, mocker):
+ """Test sending unique keys."""
+
+ uniques = {"feature1": set({'key1', 'key2', 'key3'}),
+ "feature2": set({'key1', 'key2', 'key3'}),
+ }
+ redis_client = RedisAdapter(mocker.Mock(), mocker.Mock())
+ sender_adapter = RedisSenderAdapter(redis_client)
+ sender_adapter.record_unique_keys(uniques)
+ assert(mocker.called)
+
+ mocker.reset_mock()
+ sender_adapter.record_unique_keys({})
+ assert(not mocker.called)
+
+ @mock.patch('splitio.storage.adapters.redis.RedisPipelineAdapter.hincrby')
+ def test_flush_counters(self, mocker):
+ """Test sending counters."""
+
+ counters = [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ ]
+ redis_client = RedisAdapter(mocker.Mock(), mocker.Mock())
+ sender_adapter = RedisSenderAdapter(redis_client)
+ sender_adapter.flush_counters(counters)
+ assert(mocker.called)
+
+ mocker.reset_mock()
+ sender_adapter.flush_counters({})
+ assert(not mocker.called)
+
+ @mock.patch('splitio.storage.adapters.redis.RedisAdapter.expire')
+ def test_expire_keys(self, mocker):
+ """Test set expire key."""
+
+ total_keys = 100
+ inserted = 10
+ redis_client = RedisAdapter(mocker.Mock(), mocker.Mock())
+ sender_adapter = RedisSenderAdapter(redis_client)
+ sender_adapter._expire_keys(mocker.Mock(), mocker.Mock(), total_keys, inserted)
+ assert(not mocker.called)
+
+ total_keys = 100
+ inserted = 100
+ sender_adapter._expire_keys(mocker.Mock(), mocker.Mock(), total_keys, inserted)
+ assert(mocker.called)
+
+
+class RedisSenderAdapterAsyncTests(object):
+ """Redis sender adapter test."""
+
+ @pytest.mark.asyncio
+ async def test_record_unique_keys(self, mocker):
+ """Test sending unique keys."""
+
+ uniques = {"feature1": set({'key1', 'key2', 'key3'}),
+ "feature2": set({'key1', 'key2', 'key3'}),
+ }
+ redis_client = RedisAdapterAsync(mocker.Mock(), mocker.Mock())
+ sender_adapter = RedisSenderAdapterAsync(redis_client)
+
+ self.called = False
+ async def rpush(*args):
+ self.called = True
+
+ redis_client.rpush = rpush
+ await sender_adapter.record_unique_keys(uniques)
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_flush_counters(self, mocker):
+ """Test sending counters."""
+
+ counters = [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ ]
+ redis_client = await aioredis.from_url("redis://localhost")
+ sender_adapter = RedisSenderAdapterAsync(redis_client)
+ self.called = False
+ def hincrby(*args):
+ self.called = True
+ self.called2 = False
+ async def execute(*args):
+ self.called2 = True
+ return [1]
+
+ with mock.patch('redis.asyncio.client.Pipeline.hincrby', hincrby):
+ with mock.patch('redis.asyncio.client.Pipeline.execute', execute):
+ await sender_adapter.flush_counters(counters)
+ assert(self.called)
+ assert(self.called2)
+
+ @pytest.mark.asyncio
+ async def test_expire_keys(self, mocker):
+ """Test set expire key."""
+
+ total_keys = 100
+ inserted = 10
+ redis_client = RedisAdapterAsync(mocker.Mock(), mocker.Mock())
+ sender_adapter = RedisSenderAdapterAsync(redis_client)
+ self.called = False
+ async def expire(*args):
+ self.called = True
+ redis_client.expire = expire
+
+ await sender_adapter._expire_keys(mocker.Mock(), mocker.Mock(), total_keys, inserted)
+ assert(not self.called)
+
+ total_keys = 100
+ inserted = 100
+ await sender_adapter._expire_keys(mocker.Mock(), mocker.Mock(), total_keys, inserted)
+ assert(self.called)
+
+
+class PluggableSenderAdapterTests(object):
+ """Pluggable sender adapter test."""
+
+ def test_record_unique_keys(self, mocker):
+ """Test sending unique keys."""
+ adapter = StorageMockAdapter()
+ sender_adapter = PluggableSenderAdapter(adapter)
+
+ uniques = {"feature1": set({"key1", "key2", "key3"}),
+ "feature2": set({"key1", "key6", "key10"}),
+ }
+ formatted = [
+ '{"f": "feature1", "ks": ["key3", "key2", "key1"]}',
+ '{"f": "feature2", "ks": ["key1", "key10", "key6"]}',
+ ]
+
+ sender_adapter.record_unique_keys(uniques)
+ assert(sorted(json.loads(adapter._keys[adapters._MTK_QUEUE_KEY][0])["ks"]) == sorted(json.loads(formatted[0])["ks"]))
+ assert(sorted(json.loads(adapter._keys[adapters._MTK_QUEUE_KEY][1])["ks"]) == sorted(json.loads(formatted[1])["ks"]))
+ assert(json.loads(adapter._keys[adapters._MTK_QUEUE_KEY][0])["f"] == "feature1")
+ assert(json.loads(adapter._keys[adapters._MTK_QUEUE_KEY][1])["f"] == "feature2")
+ assert(adapter._expire[adapters._MTK_QUEUE_KEY] == adapters._MTK_KEY_DEFAULT_TTL)
+ sender_adapter.record_unique_keys(uniques)
+ assert(adapter._expire[adapters._MTK_QUEUE_KEY] != -1)
+
+ adapter._keys[adapters._MTK_QUEUE_KEY] = {}
+ sender_adapter.record_unique_keys({})
+ assert(adapter._keys[adapters._MTK_QUEUE_KEY] == {})
+
+ def test_flush_counters(self, mocker):
+ """Test sending counters."""
+ adapter = StorageMockAdapter()
+ sender_adapter = PluggableSenderAdapter(adapter)
+
+ counters = [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ ]
+
+ sender_adapter.flush_counters(counters)
+ assert(adapter._keys[adapters._IMP_COUNT_QUEUE_KEY + "." + 'f1::123'] == 2)
+ assert(adapter._keys[adapters._IMP_COUNT_QUEUE_KEY + "." + 'f2::123'] == 123)
+ assert(adapter._expire[adapters._IMP_COUNT_QUEUE_KEY + "." + 'f1::123'] == adapters._IMP_COUNT_KEY_DEFAULT_TTL)
+ sender_adapter.flush_counters(counters)
+ assert(adapter._expire[adapters._IMP_COUNT_QUEUE_KEY + "." + 'f2::123'] == adapters._IMP_COUNT_KEY_DEFAULT_TTL)
+
+class PluggableSenderAdapterAsyncTests(object):
+ """Pluggable sender adapter test."""
+
+ @pytest.mark.asyncio
+ async def test_record_unique_keys(self, mocker):
+ """Test sending unique keys."""
+ adapter = StorageMockAdapterAsync()
+ sender_adapter = PluggableSenderAdapterAsync(adapter)
+
+ uniques = {"feature1": set({"key1", "key2", "key3"}),
+ "feature2": set({"key1", "key6", "key10"}),
+ }
+ formatted = [
+ '{"f": "feature1", "ks": ["key3", "key2", "key1"]}',
+ '{"f": "feature2", "ks": ["key1", "key10", "key6"]}',
+ ]
+
+ await sender_adapter.record_unique_keys(uniques)
+ assert(sorted(json.loads(adapter._keys[adapters._MTK_QUEUE_KEY][0])["ks"]) == sorted(json.loads(formatted[0])["ks"]))
+ assert(sorted(json.loads(adapter._keys[adapters._MTK_QUEUE_KEY][1])["ks"]) == sorted(json.loads(formatted[1])["ks"]))
+ assert(json.loads(adapter._keys[adapters._MTK_QUEUE_KEY][0])["f"] == "feature1")
+ assert(json.loads(adapter._keys[adapters._MTK_QUEUE_KEY][1])["f"] == "feature2")
+ assert(adapter._expire[adapters._MTK_QUEUE_KEY] == adapters._MTK_KEY_DEFAULT_TTL)
+ await sender_adapter.record_unique_keys(uniques)
+ assert(adapter._expire[adapters._MTK_QUEUE_KEY] != -1)
+
+ @pytest.mark.asyncio
+ async def test_flush_counters(self, mocker):
+ """Test sending counters."""
+ adapter = StorageMockAdapterAsync()
+ sender_adapter = PluggableSenderAdapterAsync(adapter)
+
+ counters = [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ ]
+
+ await sender_adapter.flush_counters(counters)
+ assert(adapter._keys[adapters._IMP_COUNT_QUEUE_KEY + "." + 'f1::123'] == 2)
+ assert(adapter._keys[adapters._IMP_COUNT_QUEUE_KEY + "." + 'f2::123'] == 123)
+ assert(adapter._expire[adapters._IMP_COUNT_QUEUE_KEY + "." + 'f1::123'] == adapters._IMP_COUNT_KEY_DEFAULT_TTL)
+ await sender_adapter.flush_counters(counters)
+ assert(adapter._expire[adapters._IMP_COUNT_QUEUE_KEY + "." + 'f2::123'] == adapters._IMP_COUNT_KEY_DEFAULT_TTL)
\ No newline at end of file
diff --git a/tests/engine/test_telemetry.py b/tests/engine/test_telemetry.py
new file mode 100644
index 00000000..f4b669ea
--- /dev/null
+++ b/tests/engine/test_telemetry.py
@@ -0,0 +1,797 @@
+import unittest.mock as mock
+import pytest
+
+from splitio.engine.telemetry import TelemetryEvaluationConsumer, TelemetryEvaluationProducer, TelemetryInitConsumer, \
+ TelemetryInitProducer, TelemetryRuntimeConsumer, TelemetryRuntimeProducer, TelemetryStorageConsumer, TelemetryStorageProducer, \
+ TelemetryEvaluationConsumerAsync, TelemetryEvaluationProducerAsync, TelemetryInitConsumerAsync, \
+ TelemetryInitProducerAsync, TelemetryRuntimeConsumerAsync, TelemetryRuntimeProducerAsync, TelemetryStorageConsumerAsync, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
+
+class TelemetryStorageProducerTests(object):
+ """TelemetryStorageProducer test."""
+
+ def test_instances(self):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+
+ assert(isinstance(telemetry_producer._telemetry_evaluation_producer, TelemetryEvaluationProducer))
+ assert(isinstance(telemetry_producer._telemetry_init_producer, TelemetryInitProducer))
+ assert(isinstance(telemetry_producer._telemetry_runtime_producer, TelemetryRuntimeProducer))
+
+ assert(telemetry_producer._telemetry_evaluation_producer == telemetry_producer.get_telemetry_evaluation_producer())
+ assert(telemetry_producer._telemetry_init_producer == telemetry_producer.get_telemetry_init_producer())
+ assert(telemetry_producer._telemetry_runtime_producer == telemetry_producer.get_telemetry_runtime_producer())
+
+ def test_record_config(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_init_producer = TelemetryInitProducer(telemetry_storage)
+ config = {'operationMode': 'standalone',
+ 'streamingEnabled': True,
+ 'impressionsQueueSize': 100,
+ 'eventsQueueSize': 200,
+ 'impressionsMode': 'DEBUG',
+ 'impressionListener': None,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'impressionsRefreshRate': 60,
+ 'eventsPushRate': 60,
+ 'metricsRefreshRate': 10,
+ 'storageType': None
+ }
+ telemetry_init_producer.record_config(config, {}, 5, 2)
+ telemetry_init_producer.record_active_and_redundant_factories(1, 0)
+
+ assert(telemetry_storage._tel_config.get_stats() == {'oM': 0,
+ 'sT': telemetry_storage._tel_config._get_storage_type(config['operationMode'], config['storageType']),
+ 'sE': config['streamingEnabled'],
+ 'rR': {'sp': 30, 'se': 30, 'im': 60, 'ev': 60, 'te': 10},
+ 'uO': {'s': False, 'e': False, 'a': False, 'st': False, 't': False},
+ 'iQ': config['impressionsQueueSize'],
+ 'eQ': config['eventsQueueSize'],
+ 'iM': telemetry_storage._tel_config._get_impressions_mode(config['impressionsMode']),
+ 'iL': True if config['impressionListener'] is not None else False,
+ 'hp': telemetry_storage._tel_config._check_if_proxy_detected(),
+ 'bT': 0,
+ 'tR': 0,
+ 'nR': 0,
+ 'aF': 1,
+ 'rF': 0,
+ 'fsT': 5,
+ 'fsI': 2}
+ )
+
+ def test_record_ready_time(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_init_producer = TelemetryInitProducer(telemetry_storage)
+
+ def record_ready_time(*args, **kwargs):
+ self.passed_arg = args[0]
+
+ telemetry_storage.record_ready_time.side_effect = record_ready_time
+ telemetry_init_producer.record_ready_time(10)
+ assert(self.passed_arg == 10)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.record_bur_time_out')
+ def test_record_bur_timeout(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_init_producer = TelemetryInitProducer(telemetry_storage)
+ telemetry_init_producer.record_bur_time_out()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.record_not_ready_usage')
+ def test_record_not_ready_usage(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_init_producer = TelemetryInitProducer(telemetry_storage)
+ telemetry_init_producer.record_not_ready_usage()
+ assert(mocker.called)
+
+ def test_record_latency(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_evaluation_producer = TelemetryEvaluationProducer(telemetry_storage)
+
+ def record_latency(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_latency.side_effect = record_latency
+ telemetry_evaluation_producer.record_latency('method', 10)
+ assert(self.passed_args[0] == 'method')
+ assert(self.passed_args[1] == 10)
+
+ def test_record_exception(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_evaluation_producer = TelemetryEvaluationProducer(telemetry_storage)
+
+ def record_exception(*args, **kwargs):
+ self.passed_method = args[0]
+
+ telemetry_storage.record_exception.side_effect = record_exception
+ telemetry_evaluation_producer.record_exception('method')
+ assert(self.passed_method == 'method')
+
+ def test_add_tag(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+
+ def add_tag(*args, **kwargs):
+ self.passed_tag = args[0]
+
+ telemetry_storage.add_tag.side_effect = add_tag
+ telemetry_runtime_producer.add_tag('tag')
+ assert(self.passed_tag == 'tag')
+
+ def test_record_impression_stats(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+
+ def record_impression_stats(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_impression_stats.side_effect = record_impression_stats
+ telemetry_runtime_producer.record_impression_stats('imp', 10)
+ assert(self.passed_args[0] == 'imp')
+ assert(self.passed_args[1] == 10)
+
+ def test_record_event_stats(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+
+ def record_event_stats(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_event_stats.side_effect = record_event_stats
+ telemetry_runtime_producer.record_event_stats('ev', 20)
+ assert(self.passed_args[0] == 'ev')
+ assert(self.passed_args[1] == 20)
+
+ def test_record_successful_sync(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+
+ def record_successful_sync(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_successful_sync.side_effect = record_successful_sync
+ telemetry_runtime_producer.record_successful_sync('split', 50)
+ assert(self.passed_args[0] == 'split')
+ assert(self.passed_args[1] == 50)
+
+ def test_record_sync_error(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+
+ def record_sync_error(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_sync_error.side_effect = record_sync_error
+ telemetry_runtime_producer.record_sync_error('segment', {'500': 1})
+ assert(self.passed_args[0] == 'segment')
+ assert(self.passed_args[1] == {'500': 1})
+
+ def test_record_sync_latency(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+
+ def record_sync_latency(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_sync_latency.side_effect = record_sync_latency
+ telemetry_runtime_producer.record_sync_latency('t', 40)
+ assert(self.passed_args[0] == 't')
+ assert(self.passed_args[1] == 40)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.record_auth_rejections')
+ def test_record_auth_rejections(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+ telemetry_runtime_producer.record_auth_rejections()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.record_token_refreshes')
+ def test_record_token_refreshes(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+ telemetry_runtime_producer.record_token_refreshes()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.record_update_from_sse')
+ def test_record_update_from_sse(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+ telemetry_runtime_producer.record_update_from_sse('sp')
+ assert(mocker.called)
+
+ def test_record_streaming_event(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+
+ def record_streaming_event(*args, **kwargs):
+ self.passed_event = args[0]
+
+ telemetry_storage.record_streaming_event.side_effect = record_streaming_event
+ telemetry_runtime_producer.record_streaming_event({'t', 40})
+ assert(self.passed_event == {'t', 40})
+
+ def test_record_session_length(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducer(telemetry_storage)
+
+ def record_session_length(*args, **kwargs):
+ self.passed_session = args[0]
+
+ telemetry_storage.record_session_length.side_effect = record_session_length
+ telemetry_runtime_producer.record_session_length(30)
+ assert(self.passed_session == 30)
+
+
+class TelemetryStorageProducerAsyncTests(object):
+ """TelemetryStorageProducer async test."""
+
+ @pytest.mark.asyncio
+ async def test_instances(self):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+
+ assert(isinstance(telemetry_producer._telemetry_evaluation_producer, TelemetryEvaluationProducerAsync))
+ assert(isinstance(telemetry_producer._telemetry_init_producer, TelemetryInitProducerAsync))
+ assert(isinstance(telemetry_producer._telemetry_runtime_producer, TelemetryRuntimeProducerAsync))
+
+ assert(telemetry_producer._telemetry_evaluation_producer == telemetry_producer.get_telemetry_evaluation_producer())
+ assert(telemetry_producer._telemetry_init_producer == telemetry_producer.get_telemetry_init_producer())
+ assert(telemetry_producer._telemetry_runtime_producer == telemetry_producer.get_telemetry_runtime_producer())
+
+ @pytest.mark.asyncio
+ async def test_record_config(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_init_producer = TelemetryInitProducerAsync(telemetry_storage)
+
+ async def record_config(*args, **kwargs):
+ self.passed_config = args[0]
+
+ telemetry_storage.record_config.side_effect = record_config
+ await telemetry_init_producer.record_config({'bT':0, 'nR':0, 'uC': 0}, {})
+ assert(self.passed_config == {'bT':0, 'nR':0, 'uC': 0})
+
+ @pytest.mark.asyncio
+ async def test_record_ready_time(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_init_producer = TelemetryInitProducerAsync(telemetry_storage)
+
+ async def record_ready_time(*args, **kwargs):
+ self.passed_arg = args[0]
+
+ telemetry_storage.record_ready_time.side_effect = record_ready_time
+ await telemetry_init_producer.record_ready_time(10)
+ assert(self.passed_arg == 10)
+
+ @pytest.mark.asyncio
+ async def test_record_bur_timeout(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def record_bur_time_out(*args):
+ self.called = True
+ telemetry_storage.record_bur_time_out = record_bur_time_out
+
+ telemetry_init_producer = TelemetryInitProducerAsync(telemetry_storage)
+ await telemetry_init_producer.record_bur_time_out()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_record_not_ready_usage(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def record_not_ready_usage(*args):
+ self.called = True
+ telemetry_storage.record_not_ready_usage = record_not_ready_usage
+
+ telemetry_init_producer = TelemetryInitProducerAsync(telemetry_storage)
+ await telemetry_init_producer.record_not_ready_usage()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_record_latency(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_evaluation_producer = TelemetryEvaluationProducerAsync(telemetry_storage)
+
+ async def record_latency(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_latency.side_effect = record_latency
+ await telemetry_evaluation_producer.record_latency('method', 10)
+ assert(self.passed_args[0] == 'method')
+ assert(self.passed_args[1] == 10)
+
+ @pytest.mark.asyncio
+ async def test_record_exception(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_evaluation_producer = TelemetryEvaluationProducerAsync(telemetry_storage)
+
+ async def record_exception(*args, **kwargs):
+ self.passed_method = args[0]
+
+ telemetry_storage.record_exception.side_effect = record_exception
+ await telemetry_evaluation_producer.record_exception('method')
+ assert(self.passed_method == 'method')
+
+ @pytest.mark.asyncio
+ async def test_add_tag(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+
+ async def add_tag(*args, **kwargs):
+ self.passed_tag = args[0]
+
+ telemetry_storage.add_tag.side_effect = add_tag
+ await telemetry_runtime_producer.add_tag('tag')
+ assert(self.passed_tag == 'tag')
+
+ @pytest.mark.asyncio
+ async def test_record_impression_stats(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+
+ async def record_impression_stats(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_impression_stats.side_effect = record_impression_stats
+ await telemetry_runtime_producer.record_impression_stats('imp', 10)
+ assert(self.passed_args[0] == 'imp')
+ assert(self.passed_args[1] == 10)
+
+ @pytest.mark.asyncio
+ async def test_record_event_stats(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+
+ async def record_event_stats(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_event_stats.side_effect = record_event_stats
+ await telemetry_runtime_producer.record_event_stats('ev', 20)
+ assert(self.passed_args[0] == 'ev')
+ assert(self.passed_args[1] == 20)
+
+ @pytest.mark.asyncio
+ async def test_record_successful_sync(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+
+ async def record_successful_sync(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_successful_sync.side_effect = record_successful_sync
+ await telemetry_runtime_producer.record_successful_sync('split', 50)
+ assert(self.passed_args[0] == 'split')
+ assert(self.passed_args[1] == 50)
+
+ @pytest.mark.asyncio
+ async def test_record_sync_error(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+
+ async def record_sync_error(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_sync_error.side_effect = record_sync_error
+ await telemetry_runtime_producer.record_sync_error('segment', {'500': 1})
+ assert(self.passed_args[0] == 'segment')
+ assert(self.passed_args[1] == {'500': 1})
+
+ @pytest.mark.asyncio
+ async def test_record_sync_latency(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+
+ async def record_sync_latency(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_sync_latency.side_effect = record_sync_latency
+ await telemetry_runtime_producer.record_sync_latency('t', 40)
+ assert(self.passed_args[0] == 't')
+ assert(self.passed_args[1] == 40)
+
+ @pytest.mark.asyncio
+ async def test_record_auth_rejections(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def record_auth_rejections(*args):
+ self.called = True
+ telemetry_storage.record_auth_rejections = record_auth_rejections
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+ await telemetry_runtime_producer.record_auth_rejections()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_record_token_refreshes(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def record_token_refreshes(*args):
+ self.called = True
+ telemetry_storage.record_token_refreshes = record_token_refreshes
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+ await telemetry_runtime_producer.record_token_refreshes()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_record_update_from_sse(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def record_update_from_sse(*args):
+ self.called = True
+ telemetry_storage.record_update_from_sse = record_update_from_sse
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+ await telemetry_runtime_producer.record_update_from_sse('sp')
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_record_streaming_event(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+
+ async def record_streaming_event(*args, **kwargs):
+ self.passed_event = args[0]
+
+ telemetry_storage.record_streaming_event.side_effect = record_streaming_event
+ await telemetry_runtime_producer.record_streaming_event({'t', 40})
+ assert(self.passed_event == {'t', 40})
+
+ @pytest.mark.asyncio
+ async def test_record_session_length(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_producer = TelemetryRuntimeProducerAsync(telemetry_storage)
+
+ async def record_session_length(*args, **kwargs):
+ self.passed_session = args[0]
+
+ telemetry_storage.record_session_length.side_effect = record_session_length
+ await telemetry_runtime_producer.record_session_length(30)
+ assert(self.passed_session == 30)
+
+
+class TelemetryStorageConsumerTests(object):
+ """TelemetryStorageConsumer test."""
+
+ def test_instances(self):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_consumer = TelemetryStorageConsumer(telemetry_storage)
+
+ assert(isinstance(telemetry_consumer._telemetry_evaluation_consumer, TelemetryEvaluationConsumer))
+ assert(isinstance(telemetry_consumer._telemetry_init_consumer, TelemetryInitConsumer))
+ assert(isinstance(telemetry_consumer._telemetry_runtime_consumer, TelemetryRuntimeConsumer))
+
+ assert(telemetry_consumer._telemetry_evaluation_consumer == telemetry_consumer.get_telemetry_evaluation_consumer())
+ assert(telemetry_consumer._telemetry_init_consumer == telemetry_consumer.get_telemetry_init_consumer())
+ assert(telemetry_consumer._telemetry_runtime_consumer == telemetry_consumer.get_telemetry_runtime_consumer())
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.get_bur_time_outs')
+ def test_get_bur_time_outs(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_init_consumer = TelemetryInitConsumer(telemetry_storage)
+ telemetry_init_consumer.get_bur_time_outs()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.get_not_ready_usage')
+ def get_not_ready_usage(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_init_consumer = TelemetryInitConsumer(telemetry_storage)
+ telemetry_init_consumer.get_not_ready_usage()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.get_config_stats')
+ def get_not_ready_usage(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_init_consumer = TelemetryInitConsumer(telemetry_storage)
+ telemetry_init_consumer.get_config_stats()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_exceptions')
+ def pop_exceptions(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_evaluation_consumer = TelemetryEvaluationConsumer(telemetry_storage)
+ telemetry_evaluation_consumer.pop_exceptions()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_latencies')
+ def pop_latencies(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_evaluation_consumer = TelemetryEvaluationConsumer(telemetry_storage)
+ telemetry_evaluation_consumer.pop_latencies()
+ assert(mocker.called)
+
+ def test_get_impressions_stats(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+
+ def get_impressions_stats(*args, **kwargs):
+ self.passed_type = args[0]
+
+ telemetry_storage.get_impressions_stats.side_effect = get_impressions_stats
+ telemetry_runtime_consumer.get_impressions_stats('iQ')
+ assert(self.passed_type == 'iQ')
+
+ def test_get_events_stats(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+
+ def get_events_stats(*args, **kwargs):
+ self.event_type = args[0]
+
+ telemetry_storage.get_events_stats.side_effect = get_events_stats
+ telemetry_runtime_consumer.get_events_stats('eQ')
+ assert(self.event_type == 'eQ')
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.get_last_synchronization')
+ def test_get_last_synchronization(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.get_last_synchronization()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_tags')
+ def test_pop_tags(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.pop_tags()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_http_errors')
+ def test_pop_http_errors(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.pop_http_errors()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_http_latencies')
+ def test_pop_http_latencies(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.pop_http_latencies()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_auth_rejections')
+ def test_pop_auth_rejections(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.pop_auth_rejections()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_update_from_sse')
+ def pop_update_from_sse(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.pop_update_from_sse('sp')
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_update_from_sse')
+ def test_pop_auth_rejections(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.pop_update_from_sse('sp')
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_token_refreshes')
+ def test_pop_token_refreshes(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.pop_token_refreshes()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.pop_streaming_events')
+ def test_pop_streaming_events(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.pop_streaming_events()
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.inmemmory.InMemoryTelemetryStorage.get_session_length')
+ def test_get_session_length(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumer(telemetry_storage)
+ telemetry_runtime_consumer.get_session_length()
+ assert(mocker.called)
+
+
+class TelemetryStorageConsumerAsyncTests(object):
+ """TelemetryStorageConsumer async test."""
+
+ @pytest.mark.asyncio
+ async def test_instances(self):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_consumer = TelemetryStorageConsumerAsync(telemetry_storage)
+
+ assert(isinstance(telemetry_consumer._telemetry_evaluation_consumer, TelemetryEvaluationConsumerAsync))
+ assert(isinstance(telemetry_consumer._telemetry_init_consumer, TelemetryInitConsumerAsync))
+ assert(isinstance(telemetry_consumer._telemetry_runtime_consumer, TelemetryRuntimeConsumerAsync))
+
+ assert(telemetry_consumer._telemetry_evaluation_consumer == telemetry_consumer.get_telemetry_evaluation_consumer())
+ assert(telemetry_consumer._telemetry_init_consumer == telemetry_consumer.get_telemetry_init_consumer())
+ assert(telemetry_consumer._telemetry_runtime_consumer == telemetry_consumer.get_telemetry_runtime_consumer())
+
+ @pytest.mark.asyncio
+ async def test_get_bur_time_outs(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def get_bur_time_outs(*args):
+ self.called = True
+ telemetry_storage.get_bur_time_outs = get_bur_time_outs
+
+ telemetry_init_consumer = TelemetryInitConsumerAsync(telemetry_storage)
+ await telemetry_init_consumer.get_bur_time_outs()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def get_not_ready_usage(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def get_not_ready_usage(*args):
+ self.called = True
+ telemetry_storage.get_not_ready_usage = get_not_ready_usage
+
+ telemetry_init_consumer = TelemetryInitConsumerAsync(telemetry_storage)
+ await telemetry_init_consumer.get_not_ready_usage()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def get_not_ready_usage(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def get_config_stats(*args):
+ self.called = True
+ telemetry_storage.get_config_stats = get_config_stats
+
+ telemetry_init_consumer = TelemetryInitConsumerAsync(telemetry_storage)
+ await telemetry_init_consumer.get_config_stats()
+ assert(mocker.called)
+
+ @pytest.mark.asyncio
+ async def pop_exceptions(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def pop_exceptions(*args):
+ self.called = True
+ telemetry_storage.pop_exceptions = pop_exceptions
+
+ telemetry_evaluation_consumer = TelemetryEvaluationConsumerAsync(telemetry_storage)
+ await telemetry_evaluation_consumer.pop_exceptions()
+ assert(mocker.called)
+
+ @pytest.mark.asyncio
+ async def pop_latencies(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def pop_latencies(*args):
+ self.called = True
+ telemetry_storage.pop_latencies = pop_latencies
+
+ telemetry_evaluation_consumer = TelemetryEvaluationConsumerAsync(telemetry_storage)
+ await telemetry_evaluation_consumer.pop_latencies()
+ assert(mocker.called)
+
+ @pytest.mark.asyncio
+ async def test_get_impressions_stats(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+
+ async def get_impressions_stats(*args, **kwargs):
+ self.passed_type = args[0]
+
+ telemetry_storage.get_impressions_stats.side_effect = get_impressions_stats
+ await telemetry_runtime_consumer.get_impressions_stats('iQ')
+ assert(self.passed_type == 'iQ')
+
+ @pytest.mark.asyncio
+ async def test_get_events_stats(self, mocker):
+ telemetry_storage = mocker.Mock()
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+
+ async def get_events_stats(*args, **kwargs):
+ self.event_type = args[0]
+
+ telemetry_storage.get_events_stats.side_effect = get_events_stats
+ await telemetry_runtime_consumer.get_events_stats('eQ')
+ assert(self.event_type == 'eQ')
+
+ @pytest.mark.asyncio
+ async def test_get_last_synchronization(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def get_last_synchronization(*args, **kwargs):
+ self.called = True
+ return {'lastSynchronizations': ""}
+ telemetry_storage.get_last_synchronization = get_last_synchronization
+
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+ await telemetry_runtime_consumer.get_last_synchronization()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_pop_tags(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def pop_tags(*args, **kwargs):
+ self.called = True
+ telemetry_storage.pop_tags = pop_tags
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+ await telemetry_runtime_consumer.pop_tags()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_pop_http_errors(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def pop_http_errors(*args, **kwargs):
+ self.called = True
+ telemetry_storage.pop_http_errors = pop_http_errors
+
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+ await telemetry_runtime_consumer.pop_http_errors()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_pop_http_latencies(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def pop_http_latencies(*args, **kwargs):
+ self.called = True
+ telemetry_storage.pop_http_latencies = pop_http_latencies
+
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+ await telemetry_runtime_consumer.pop_http_latencies()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_pop_auth_rejections(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def pop_auth_rejections(*args, **kwargs):
+ self.called = True
+ telemetry_storage.pop_auth_rejections = pop_auth_rejections
+
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+ await telemetry_runtime_consumer.pop_auth_rejections()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def pop_update_from_sse(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def pop_update_from_sse(*args, **kwargs):
+ self.called = True
+ telemetry_storage.pop_update_from_sse = pop_update_from_sse
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+ await telemetry_runtime_consumer.pop_update_from_sse('sp')
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_pop_token_refreshes(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def pop_token_refreshes(*args, **kwargs):
+ self.called = True
+ telemetry_storage.pop_token_refreshes = pop_token_refreshes
+
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+ await telemetry_runtime_consumer.pop_token_refreshes()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_pop_streaming_events(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def pop_streaming_events(*args, **kwargs):
+ self.called = True
+ telemetry_storage.pop_streaming_events = pop_streaming_events
+
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+ await telemetry_runtime_consumer.pop_streaming_events()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_get_session_length(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ self.called = False
+ async def get_session_length(*args, **kwargs):
+ self.called = True
+ telemetry_storage.get_session_length = get_session_length
+
+ telemetry_runtime_consumer = TelemetryRuntimeConsumerAsync(telemetry_storage)
+ await telemetry_runtime_consumer.get_session_length()
+ assert(self.called)
diff --git a/tests/engine/test_unique_keys_tracker.py b/tests/engine/test_unique_keys_tracker.py
new file mode 100644
index 00000000..93272f33
--- /dev/null
+++ b/tests/engine/test_unique_keys_tracker.py
@@ -0,0 +1,124 @@
+"""BloomFilter unit tests."""
+import pytest
+
+from splitio.engine.impressions.unique_keys_tracker import UniqueKeysTracker, UniqueKeysTrackerAsync
+from splitio.engine.filters import BloomFilter
+
+class UniqueKeysTrackerTests(object):
+ """StandardRecorderTests test cases."""
+
+ def test_adding_and_removing_keys(self, mocker):
+ tracker = UniqueKeysTracker()
+
+ assert(tracker._cache_size > 0)
+ assert(tracker._current_cache_size == 0)
+ assert(tracker._cache == {})
+ assert(isinstance(tracker._filter, BloomFilter))
+
+ key1 = 'key1'
+ key2 = 'key2'
+ key3 = 'key3'
+ split1= 'feature1'
+ split2= 'feature2'
+
+ assert(tracker.track(key1, split1))
+ assert(tracker.track(key3, split1))
+ assert(not tracker.track(key1, split1))
+ assert(tracker.track(key2, split2))
+
+ assert(tracker._filter.contains(split1+key1))
+ assert(not tracker._filter.contains(split1+key2))
+ assert(tracker._filter.contains(split2+key2))
+ assert(not tracker._filter.contains(split2+key1))
+ assert(key1 in tracker._cache[split1])
+ assert(key3 in tracker._cache[split1])
+ assert(key2 in tracker._cache[split2])
+ assert(not key3 in tracker._cache[split2])
+
+ tracker.clear_filter()
+ assert(not tracker._filter.contains(split1+key1))
+ assert(not tracker._filter.contains(split2+key2))
+
+ cache_backup = tracker._cache.copy()
+ cache_size_backup = tracker._current_cache_size
+ cache, cache_size = tracker.get_cache_info_and_pop_all()
+ assert(cache_backup == cache)
+ assert(cache_size_backup == cache_size)
+ assert(tracker._current_cache_size == 0)
+ assert(tracker._cache == {})
+
+ def test_cache_size(self, mocker):
+ cache_size = 10
+ tracker = UniqueKeysTracker(cache_size)
+
+ split1= 'feature1'
+ for x in range(1, cache_size + 1):
+ tracker.track('key' + str(x), split1)
+ split2= 'feature2'
+ for x in range(1, int(cache_size / 2) + 1):
+ tracker.track('key' + str(x), split2)
+
+ assert(tracker._current_cache_size == (cache_size + (cache_size / 2)))
+ assert(len(tracker._cache[split1]) == cache_size)
+ assert(len(tracker._cache[split2]) == cache_size / 2)
+
+
+class UniqueKeysTrackerAsyncTests(object):
+ """StandardRecorderTests test cases."""
+
+ @pytest.mark.asyncio
+ async def test_adding_and_removing_keys(self, mocker):
+ tracker = UniqueKeysTrackerAsync()
+
+ assert(tracker._cache_size > 0)
+ assert(tracker._current_cache_size == 0)
+ assert(tracker._cache == {})
+ assert(isinstance(tracker._filter, BloomFilter))
+
+ key1 = 'key1'
+ key2 = 'key2'
+ key3 = 'key3'
+ split1= 'feature1'
+ split2= 'feature2'
+
+ assert(await tracker.track(key1, split1))
+ assert(await tracker.track(key3, split1))
+ assert(not await tracker.track(key1, split1))
+ assert(await tracker.track(key2, split2))
+
+ assert(tracker._filter.contains(split1+key1))
+ assert(not tracker._filter.contains(split1+key2))
+ assert(tracker._filter.contains(split2+key2))
+ assert(not tracker._filter.contains(split2+key1))
+ assert(key1 in tracker._cache[split1])
+ assert(key3 in tracker._cache[split1])
+ assert(key2 in tracker._cache[split2])
+ assert(not key3 in tracker._cache[split2])
+
+ await tracker.clear_filter()
+ assert(not tracker._filter.contains(split1+key1))
+ assert(not tracker._filter.contains(split2+key2))
+
+ cache_backup = tracker._cache.copy()
+ cache_size_backup = tracker._current_cache_size
+ cache, cache_size = await tracker.get_cache_info_and_pop_all()
+ assert(cache_backup == cache)
+ assert(cache_size_backup == cache_size)
+ assert(tracker._current_cache_size == 0)
+ assert(tracker._cache == {})
+
+ @pytest.mark.asyncio
+ async def test_cache_size(self, mocker):
+ cache_size = 10
+ tracker = UniqueKeysTrackerAsync(cache_size)
+
+ split1= 'feature1'
+ for x in range(1, cache_size + 1):
+ await tracker.track('key' + str(x), split1)
+ split2= 'feature2'
+ for x in range(1, int(cache_size / 2) + 1):
+ await tracker.track('key' + str(x), split2)
+
+ assert(tracker._current_cache_size == (cache_size + (cache_size / 2)))
+ assert(len(tracker._cache[split1]) == cache_size)
+ assert(len(tracker._cache[split2]) == cache_size / 2)
diff --git a/tests/events/test_events_delivery.py b/tests/events/test_events_delivery.py
new file mode 100644
index 00000000..27076de4
--- /dev/null
+++ b/tests/events/test_events_delivery.py
@@ -0,0 +1,44 @@
+"""EventsManager test module."""
+import pytest
+
+from splitio.models.events import SdkEvent, SdkInternalEvent
+from splitio.events.events_metadata import EventsMetadata
+from splitio.events.events_delivery import EventsDelivery
+from splitio.events.events_metadata import SdkEventType
+
+class EventsDeliveryTests(object):
+ """Tests for EventsManager."""
+
+ sdk_ready_flag = False
+ metadata = None
+
+ def test_firing_events(self):
+ events_delivery = EventsDelivery()
+
+ metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1" })
+ events_delivery.deliver(SdkEvent.SDK_READY, metadata, self._sdk_ready_callback)
+ assert self.sdk_ready_flag
+ self._verify_metadata(metadata)
+
+ @pytest.mark.asyncio
+ async def test_firing_events(self):
+ events_delivery = EventsDelivery()
+
+ metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1" })
+ self.sdk_ready_flag = False
+ self.metadata = None
+ await events_delivery.deliver_async(SdkEvent.SDK_READY, metadata, self._sdk_ready_callback_async)
+ assert self.sdk_ready_flag
+ self._verify_metadata(metadata)
+
+ def _sdk_ready_callback(self, metadata):
+ self.sdk_ready_flag = True
+ self.metadata = metadata
+
+ async def _sdk_ready_callback_async(self, metadata):
+ self.sdk_ready_flag = True
+ self.metadata = metadata
+
+ def _verify_metadata(self, metadata):
+ assert metadata.get_type() == self.metadata.get_type()
+ assert metadata.get_names() == self.metadata.get_names()
\ No newline at end of file
diff --git a/tests/events/test_events_manager.py b/tests/events/test_events_manager.py
new file mode 100644
index 00000000..6222b68b
--- /dev/null
+++ b/tests/events/test_events_manager.py
@@ -0,0 +1,150 @@
+"""EventsManager test module."""
+import pytest
+import asyncio
+
+from splitio.models.events import SdkEvent, SdkInternalEvent
+from splitio.events.events_metadata import EventsMetadata
+from splitio.events.events_manager_config import EventsManagerConfig
+from splitio.events.events_delivery import EventsDelivery
+from splitio.events.events_manager import EventsManager, EventsManagerAsync
+from splitio.events.events_metadata import SdkEventType
+
+class EventsManagerTests(object):
+ """Tests for EventsManager."""
+
+ sdk_ready_flag = False
+ sdk_update_flag = False
+ metadata = None
+
+ def test_firing_events(self):
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ events_manager.register(SdkEvent.SDK_READY, self._sdk_ready_callback)
+ events_manager.register(SdkEvent.SDK_UPDATE, self._sdk_update_callback)
+
+ metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1" })
+ events_manager.notify_internal_event(SdkInternalEvent.FLAGS_UPDATED, metadata)
+ events_manager.notify_internal_event(SdkInternalEvent.FLAG_KILLED_NOTIFICATION, metadata)
+ events_manager.notify_internal_event(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata)
+ events_manager.notify_internal_event(SdkInternalEvent.SEGMENTS_UPDATED, metadata)
+ assert not self.sdk_ready_flag
+ assert not self.sdk_update_flag
+
+ self._reset_flags()
+ events_manager.notify_internal_event(SdkInternalEvent.SDK_READY, metadata)
+ assert self.sdk_ready_flag
+ assert not self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ events_manager.notify_internal_event(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata)
+ assert not self.sdk_ready_flag
+ assert self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ events_manager.notify_internal_event(SdkInternalEvent.FLAG_KILLED_NOTIFICATION, metadata)
+ assert not self.sdk_ready_flag
+ assert self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ events_manager.notify_internal_event(SdkInternalEvent.FLAGS_UPDATED, metadata)
+ assert not self.sdk_ready_flag
+ assert self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ events_manager.notify_internal_event(SdkInternalEvent.SEGMENTS_UPDATED, metadata)
+ assert not self.sdk_ready_flag
+ assert self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ def _reset_flags(self):
+ self.sdk_ready_flag = False
+ self.sdk_update_flag = False
+ self.metadata = None
+
+ def _sdk_ready_callback(self, metadata):
+ self.sdk_ready_flag = True
+ self.metadata = metadata
+
+ def _sdk_update_callback(self, metadata):
+ self.sdk_update_flag = True
+ self.metadata = metadata
+
+ def _verify_metadata(self, metadata):
+ assert metadata.get_type() == self.metadata.get_type()
+ assert metadata.get_names() == self.metadata.get_names()
+
+class EventsManagerAsyncTests(object):
+ """Tests for EventsManagerAsync."""
+
+ sdk_ready_flag = False
+ sdk_update_flag = False
+ metadata = None
+
+ @pytest.mark.asyncio
+ async def test_firing_events(self):
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+ await events_manager.register(SdkEvent.SDK_READY, self._sdk_ready_callback)
+ await events_manager.register(SdkEvent.SDK_UPDATE, self._sdk_update_callback)
+
+ metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1" })
+ await events_manager.notify_internal_event(SdkInternalEvent.FLAGS_UPDATED, metadata)
+ await events_manager.notify_internal_event(SdkInternalEvent.FLAG_KILLED_NOTIFICATION, metadata)
+ await events_manager.notify_internal_event(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata)
+ await events_manager.notify_internal_event(SdkInternalEvent.SEGMENTS_UPDATED, metadata)
+ assert not self.sdk_ready_flag
+ assert not self.sdk_update_flag
+
+ self._reset_flags()
+ await events_manager.notify_internal_event(SdkInternalEvent.SDK_READY, metadata)
+ await asyncio.sleep(.3)
+ assert self.sdk_ready_flag
+ assert not self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ await events_manager.notify_internal_event(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata)
+ await asyncio.sleep(.3)
+ assert not self.sdk_ready_flag
+ assert self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ await events_manager.notify_internal_event(SdkInternalEvent.FLAG_KILLED_NOTIFICATION, metadata)
+ await asyncio.sleep(.3)
+ assert not self.sdk_ready_flag
+ assert self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ await events_manager.notify_internal_event(SdkInternalEvent.FLAGS_UPDATED, metadata)
+ await asyncio.sleep(.3)
+ assert not self.sdk_ready_flag
+ assert self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ await events_manager.notify_internal_event(SdkInternalEvent.SEGMENTS_UPDATED, metadata)
+ await asyncio.sleep(.3)
+ assert not self.sdk_ready_flag
+ assert self.sdk_update_flag
+ self._verify_metadata(metadata)
+
+ def _reset_flags(self):
+ self.sdk_ready_flag = False
+ self.sdk_update_flag = False
+ self.metadata = None
+
+ async def _sdk_ready_callback(self, metadata):
+ self.sdk_ready_flag = True
+ self.metadata = metadata
+
+ async def _sdk_update_callback(self, metadata):
+ self.sdk_update_flag = True
+ self.metadata = metadata
+
+ def _verify_metadata(self, metadata):
+ assert metadata.get_type() == self.metadata.get_type()
+ assert metadata.get_names() == self.metadata.get_names()
\ No newline at end of file
diff --git a/tests/events/test_events_manager_config.py b/tests/events/test_events_manager_config.py
new file mode 100644
index 00000000..aa70c4d8
--- /dev/null
+++ b/tests/events/test_events_manager_config.py
@@ -0,0 +1,34 @@
+"""EventsManagerConfig test module."""
+import pytest
+
+from splitio.events.events_manager_config import EventsManagerConfig
+from splitio.models.events import SdkEvent, SdkInternalEvent
+
+class EventsManagerConfigTests(object):
+ """Tests for EventsManagerConfig."""
+
+ def test_build_instance(self):
+ config = EventsManagerConfig()
+
+ assert len(config.require_all[SdkEvent.SDK_READY]) == 1
+ assert SdkInternalEvent.SDK_READY in config.require_all[SdkEvent.SDK_READY]
+
+ assert SdkEvent.SDK_READY in config.prerequisites[SdkEvent.SDK_UPDATE]
+
+ assert config.execution_limits[SdkEvent.SDK_UPDATE] == -1
+ assert config.execution_limits[SdkEvent.SDK_READY] == 1
+
+ assert len(config.require_any[SdkEvent.SDK_UPDATE]) == 4
+ assert SdkInternalEvent.FLAG_KILLED_NOTIFICATION in config.require_any[SdkEvent.SDK_UPDATE]
+ assert SdkInternalEvent.FLAGS_UPDATED in config.require_any[SdkEvent.SDK_UPDATE]
+ assert SdkInternalEvent.RB_SEGMENTS_UPDATED in config.require_any[SdkEvent.SDK_UPDATE]
+ assert SdkInternalEvent.SEGMENTS_UPDATED in config.require_any[SdkEvent.SDK_UPDATE]
+
+ order = 0
+ assert len(config.evaluation_order) == 2
+ for sdk_event in config.evaluation_order:
+ order += 1
+ if order == 1:
+ assert sdk_event == SdkEvent.SDK_READY
+ if order == 2:
+ assert sdk_event == SdkEvent.SDK_UPDATE
\ No newline at end of file
diff --git a/tests/events/test_events_metadata.py b/tests/events/test_events_metadata.py
new file mode 100644
index 00000000..3ce90d0f
--- /dev/null
+++ b/tests/events/test_events_metadata.py
@@ -0,0 +1,21 @@
+"""EventsMetadata test module."""
+import pytest
+
+from splitio.events.events_metadata import EventsMetadata
+from splitio.events.events_metadata import SdkEventType
+
+class EventsMetadataTests(object):
+ """Tests for EventsMetadata."""
+
+ def test_build_instance(self):
+ metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1" })
+ assert len(metadata.get_names()) == 1
+ assert metadata.get_names().pop() == "feature1"
+ assert len(metadata.get_names()) == 0
+ assert metadata.get_type() == SdkEventType.FLAG_UPDATE
+
+ def test_sanitize_none_input(self):
+ metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1", None, 123, False })
+ assert len(metadata.get_names()) == 1
+ assert metadata.get_names().pop() == "feature1"
+ assert len(metadata.get_names()) == 0
diff --git a/tests/events/test_events_task.py b/tests/events/test_events_task.py
new file mode 100644
index 00000000..d667f76c
--- /dev/null
+++ b/tests/events/test_events_task.py
@@ -0,0 +1,139 @@
+"""EventsManager test module."""
+import pytest
+import queue
+import time
+import asyncio
+
+from splitio.models.events import SdkInternalEvent
+from splitio.models.notification import SdkInternalEventNotification
+from splitio.events.events_metadata import EventsMetadata
+from splitio.events.events_metadata import SdkEventType
+from splitio.events.events_task import EventsTask, EventsTaskAsync
+
+
+class EventsTaskTests(object):
+ """Tests for EventsTask."""
+
+ internal_event = None
+ metadata = None
+
+ def test_firing_events(self):
+ events_queue = queue.Queue()
+ events_task = EventsTask(self._event_callback, events_queue)
+
+ events_task.start()
+ assert events_task.is_running()
+
+ metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1" })
+ events_queue.put(SdkInternalEventNotification(SdkInternalEvent.SDK_READY, metadata))
+ time.sleep(.5)
+ assert self.internal_event == SdkInternalEvent.SDK_READY
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ events_queue.put(SdkInternalEventNotification(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata))
+ time.sleep(.5)
+ assert self.internal_event == SdkInternalEvent.RB_SEGMENTS_UPDATED
+ self._verify_metadata(metadata)
+
+ events_task.stop()
+ time.sleep(.5)
+ assert not events_task.is_running()
+
+ def test_on_error(self):
+ events_queue = queue.Queue()
+
+ def handler_sync(internal_event, metadata):
+ raise Exception('some')
+
+ events_task = EventsTask(handler_sync, events_queue)
+ events_task.start()
+ assert events_task.is_running()
+
+ events_queue.put(SdkInternalEventNotification(SdkInternalEvent.SDK_READY, None))
+
+ with pytest.raises(Exception):
+ events_task._handler()
+
+ assert events_task.is_running()
+ events_task.stop()
+ time.sleep(1)
+ assert not events_task.is_running()
+
+ def _reset_flags(self):
+ self.internal_event = None
+ self.metadata = None
+
+ def _event_callback(self, internal_event, metadata):
+ self.internal_event = internal_event
+ self.metadata = metadata
+
+ def _verify_metadata(self, metadata):
+ assert metadata.get_type() == self.metadata.get_type()
+ assert metadata.get_names() == self.metadata.get_names()
+
+
+class EventsTaskAsyncTests(object):
+ """Tests for EventsTaskAsyncr."""
+
+ internal_event = None
+ metadata = None
+
+ @pytest.mark.asyncio
+ async def test_firing_events(self):
+ events_queue = asyncio.Queue()
+ events_task = EventsTaskAsync(self._event_callback, events_queue)
+
+ events_task.start()
+ assert events_task.is_running()
+
+ metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1" })
+ await events_queue.put(SdkInternalEventNotification(SdkInternalEvent.SDK_READY, metadata))
+ await asyncio.sleep(.5)
+ assert self.internal_event == SdkInternalEvent.SDK_READY
+ self._verify_metadata(metadata)
+
+ self._reset_flags()
+ await events_queue.put(SdkInternalEventNotification(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata))
+ await asyncio.sleep(.5)
+ assert self.internal_event == SdkInternalEvent.RB_SEGMENTS_UPDATED
+ self._verify_metadata(metadata)
+
+ await events_task.stop()
+ await asyncio.sleep(.5)
+ assert not events_task.is_running()
+
+ @pytest.mark.asyncio
+ async def test_on_error(self):
+ events_queue = asyncio.Queue()
+
+ async def handler_sync(internal_event, metadata):
+ raise Exception('some')
+
+ events_task = EventsTaskAsync(handler_sync, events_queue)
+ events_task.start()
+ assert events_task.is_running()
+
+ await events_queue.put(SdkInternalEventNotification(SdkInternalEvent.SDK_READY, None))
+
+ with pytest.raises(Exception):
+ events_task._handler()
+
+ assert events_task.is_running()
+ await events_task.stop()
+ await asyncio.sleep(1)
+ assert not events_task.is_running()
+
+ def _reset_flags(self):
+ self.internal_event = None
+ self.metadata = None
+
+ async def _event_callback(self, internal_event, metadata):
+ self.internal_event = internal_event
+ self.metadata = metadata
+
+ def _verify_metadata(self, metadata):
+ assert metadata.get_type() == self.metadata.get_type()
+ assert metadata.get_names() == self.metadata.get_names()
+
+
\ No newline at end of file
diff --git a/tests/helpers/__init__.py b/tests/helpers/__init__.py
new file mode 100644
index 00000000..8410c8f4
--- /dev/null
+++ b/tests/helpers/__init__.py
@@ -0,0 +1,9 @@
+"""Misc helpers for testing purposes."""
+
+
+class Any(object): #pylint:disable=too-few-public-methods
+ """Crap that matches anything."""
+
+ def __eq__(self, other):
+ """Match anything."""
+ return True
diff --git a/tests/helpers/mockserver.py b/tests/helpers/mockserver.py
new file mode 100644
index 00000000..8d41cfd2
--- /dev/null
+++ b/tests/helpers/mockserver.py
@@ -0,0 +1,262 @@
+"""SSE mock server."""
+import json
+from collections import namedtuple
+import queue
+import threading
+import pytest
+
+from http.server import HTTPServer, BaseHTTPRequestHandler
+
+
+Request = namedtuple('Request', ['method', 'path', 'headers', 'body'])
+OLD_SPEC = False
+
+class SSEMockServer(object):
+ """SSE server for testing purposes."""
+
+ protocol_version = 'HTTP/1.1'
+
+ GRACEFUL_REQUEST_END = 'REQ-END'
+ VIOLENT_REQUEST_END = 'REQ-KILL'
+
+ def __init__(self, req_queue=None):
+ """Consruct a mock server."""
+ self._queue = queue.Queue()
+ self._server = HTTPServer(('localhost', 0),
+ lambda *xs: SSEHandler(self._queue, *xs, req_queue=req_queue))
+ self._server_thread = threading.Thread(target=self._blocking_run, daemon=True)
+ self._done_event = threading.Event()
+
+ def _blocking_run(self):
+ """Execute."""
+ self._server.serve_forever()
+ self._done_event.set()
+
+ def port(self):
+ """Return the assigned port."""
+ return self._server.server_port
+
+ def publish(self, event):
+ """Publish an event."""
+ self._queue.put(event, block=False)
+
+ def start(self):
+ """Start the server asyncrhonously."""
+ self._server_thread.start()
+
+ def wait(self, timeout=None):
+ """Wait for the server to shutdown."""
+ return self._done_event.wait(timeout)
+
+ def stop(self):
+ """Stop the server."""
+ self._server.shutdown()
+
+
+class SSEHandler(BaseHTTPRequestHandler):
+ """Handler."""
+
+ def __init__(self, event_queue, *args, **kwargs):
+ """Construct a handler."""
+ self._queue = event_queue
+ self._req_queue = kwargs.get('req_queue')
+ BaseHTTPRequestHandler.__init__(self, *args)
+
+ def do_GET(self): #pylint:disable=invalid-name
+ """Respond to a GET request."""
+ self.send_response(200)
+ self.send_header("Content-type", "text/event-stream")
+ self.send_header("Transfer-Encoding", "chunked")
+ self.send_header("Connection", "keep-alive")
+ self.end_headers()
+
+ if self._req_queue is not None:
+ headers = dict(zip(self.headers.keys(), self.headers.values()))
+ self._req_queue.put(Request('GET', self.path, headers, None))
+
+ def write_chunk(chunk):
+ """Write an event/chunk."""
+ tosend = '%X\r\n%s\r\n'%(len(chunk), chunk)
+ self.wfile.write(tosend.encode('utf-8'))
+
+ while True:
+ event = self._queue.get()
+ if event == SSEMockServer.GRACEFUL_REQUEST_END:
+ break
+ elif event == SSEMockServer.VIOLENT_REQUEST_END:
+ raise Exception('exploding')
+
+ chunk = ''
+ chunk += 'id: % s\n' % event['id'] if 'id' in event else ''
+ chunk += 'event: % s\n' % event['event'] if 'event' in event else ''
+ chunk += 'retry: % s\n' % event['retry'] if 'retry' in event else ''
+ chunk += 'data: % s\n' % event['data'] if 'data' in event else ''
+ if chunk != '':
+ write_chunk(chunk + '\r\n')
+
+ self.wfile.write('0\r\n\r\n'.encode('utf-8'))
+
+
+class SplitMockServer(object):
+ """SDK server mock for testing purposes."""
+
+ protocol_version = 'HTTP/1.1'
+
+ def __init__(self, split_changes=None, segment_changes=None, req_queue=None,
+ auth_response=None, old_spec=False):
+ """
+ Consruct a mock server.
+
+ :param changes: mapping of changeNumbers to splitChanges responses
+ :type changes: dict
+ """
+ global OLD_SPEC
+ OLD_SPEC = old_spec
+ split_changes = split_changes if split_changes is not None else {}
+ segment_changes = segment_changes if segment_changes is not None else {}
+ self._server = HTTPServer(('localhost', 0),
+ lambda *xs: SDKHandler(split_changes, segment_changes, *xs,
+ req_queue=req_queue,
+ auth_response=auth_response,
+ ))
+ self._server_thread = threading.Thread(target=self._blocking_run, name="SplitMockServer", daemon=True)
+ self._done_event = threading.Event()
+
+ def _blocking_run(self):
+ """Execute."""
+ self._server.serve_forever()
+ self._done_event.set()
+
+ def port(self):
+ """Return the assigned port."""
+ return self._server.server_port
+
+ def start(self):
+ """Start the server asyncrhonously."""
+ self._server_thread.start()
+
+ def wait(self, timeout=None):
+ """Wait for the server to shutdown."""
+ return self._done_event.wait(timeout)
+
+ def stop(self):
+ """Stop the server."""
+ self._server.shutdown()
+
+
+class SDKHandler(BaseHTTPRequestHandler):
+ """Handler."""
+
+ def __init__(self, split_changes, segment_changes, *args, **kwargs):
+ """Construct a handler."""
+ self._req_queue = kwargs.get('req_queue')
+ self._auth_response = kwargs.get('auth_response')
+ self._split_changes = split_changes
+ self._segment_changes = segment_changes
+ BaseHTTPRequestHandler.__init__(self, *args)
+
+ def _parse_qs(self):
+ raw_query = self.path.split('?')[1] if '?' in self.path else ''
+ return dict([item.split('=') for item in raw_query.split('&')])
+
+ def _handle_segment_changes(self):
+ qstring = self._parse_qs()
+ since = int(qstring.get('since', -1))
+ name = self.path.split('/')[-1].split('?')[0]
+ if name is None:
+ self.send_response(400)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+ self.wfile.write('{}'.encode('utf-8'))
+ return
+
+ to_send = self._segment_changes.get((name, since,))
+ if to_send is None:
+ self.send_response(404)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+ self.wfile.write('{}'.encode('utf-8'))
+ return
+
+ self.send_response(200)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+ self.wfile.write(json.dumps(to_send).encode('utf-8'))
+
+ def _handle_split_changes(self):
+ global OLD_SPEC
+ if OLD_SPEC:
+ self.send_response(400)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+ self.wfile.write('{}'.encode('utf-8'))
+ OLD_SPEC = False
+ return
+
+ qstring = self._parse_qs()
+ since = int(qstring.get('since', -1))
+ to_send = self._split_changes.get(since)
+ if to_send is None:
+ self.send_response(404)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+ self.wfile.write('{}'.encode('utf-8'))
+ return
+
+ self.send_response(200)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+ self.wfile.write(json.dumps(to_send).encode('utf-8'))
+
+ def _handle_auth(self):
+ if not self._auth_response:
+ self.send_response(401)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+ self.wfile.write('{}'.encode('utf-8'))
+ return
+
+ self.send_response(200)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+ self.wfile.write(json.dumps(self._auth_response).encode('utf-8'))
+
+ def do_GET(self): #pylint:disable=invalid-name
+ """Respond to a GET request."""
+ if self._req_queue is not None:
+ headers = self._format_headers()
+ self._req_queue.put(Request('GET', self.path, headers, None))
+
+ if self.path.startswith('/api/splitChanges'):
+ self._handle_split_changes()
+ elif self.path.startswith('/api/segmentChanges'):
+ self._handle_segment_changes()
+ elif self.path.startswith('/api/v2/auth'):
+ self._handle_auth()
+ else:
+ self.send_response(404)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+
+ def do_POST(self): #pylint:disable=invalid-name
+ """Respond to a GET request."""
+ if self._req_queue is not None:
+ headers = self._format_headers()
+ length = int(headers.get('content-length'))
+ body = self.rfile.read(length) if length else None
+ self._req_queue.put(Request('POST', self.path, headers, body))
+
+ if self.path in set(['/api/testImpressions/bulk', '/testImpressions/count',
+ '/api/events/bulk']):
+
+ self.send_response(200)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+ else:
+ self.send_response(404)
+ self.send_header("Content-type", "application/json")
+ self.end_headers()
+
+ def _format_headers(self):
+ """Format headers and return them as a dict."""
+ return dict(zip([k.lower() for k in self.headers.keys()], self.headers.values()))
diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py
new file mode 100644
index 00000000..845e8c72
--- /dev/null
+++ b/tests/integration/__init__.py
@@ -0,0 +1,55 @@
+import copy
+
+rbsegments_json = [{"changeNumber": 12, "name": "some_segment", "status": "ACTIVE","trafficTypeName": "user","excluded":{"keys":[],"segments":[]},"conditions": []}]
+
+split11 = {"ff": {"t": 1675443569027, "s": -1, "d": [
+ {"trafficTypeName": "user", "name": "SPLIT_2","trafficAllocation": 100,"trafficAllocationSeed": 1057590779, "seed": -113875324, "status": "ACTIVE","killed": False, "defaultTreatment": "off", "changeNumber": 1675443569027,"algo": 2, "configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}], "sets": ["set_1"], "impressionsDisabled": False, 'prerequisites': []},
+ {"trafficTypeName": "user", "name": "SPLIT_1", "trafficAllocation": 100, "trafficAllocationSeed": -1780071202,"seed": -1442762199, "status": "ACTIVE","killed": False, "defaultTreatment": "off", "changeNumber": 1675443537882,"algo": 2, "configurations": {},"conditions": [{"conditionType": "ROLLOUT", "matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 0 },{ "treatment": "off", "size": 100 }],"label": "default rule"}], "sets": ["set_1", "set_2"]},
+ {"trafficTypeName": "user", "name": "SPLIT_3","trafficAllocation": 100,"trafficAllocationSeed": 1057590779, "seed": -113875324, "status": "ACTIVE","killed": False, "defaultTreatment": "off", "changeNumber": 1675443569027,"algo": 2, "configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}], "sets": ["set_1"], "impressionsDisabled": True}
+ ]}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}
+split12 = {"ff": {"s": 1675443569027,"t": 1675443767284, "d": [{"trafficTypeName": "user","name": "SPLIT_2","trafficAllocation": 100,"trafficAllocationSeed": 1057590779,"seed": -113875324,"status": "ACTIVE","killed": True,"defaultTreatment": "off","changeNumber": 1675443767288,"algo": 2,"configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}]}]}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}
+split13 = {"ff": {"s": 1675443767288,"t": 1675443984594, "d": [
+ {"trafficTypeName": "user","name": "SPLIT_1","trafficAllocation": 100,"trafficAllocationSeed": -1780071202,"seed": -1442762199,"status": "ARCHIVED","killed": False,"defaultTreatment": "off","changeNumber": 1675443984594,"algo": 2,"configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 0 },{ "treatment": "off", "size": 100 }],"label": "default rule"}]},
+ {"trafficTypeName": "user","name": "SPLIT_2","trafficAllocation": 100,"trafficAllocationSeed": 1057590779,"seed": -113875324,"status": "ACTIVE","killed": False,"defaultTreatment": "off","changeNumber": 1675443954220,"algo": 2,"configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}]}
+ ]}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}
+
+
+split41 = {"ff": {"t": None, "s": None, "d": split11['ff']['d']}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}
+split42 = {"ff": {"t": None, "s": None, "d": split12['ff']['d']}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}
+split43 = {"ff": {"t": None, "s": None, "d": split13['ff']['d']}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}
+
+split61 = {"ff": {"t": -1, "s": -1, "d": split11['ff']['d']}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}
+split62 = {"ff": {"t": -1, "s": -1, "d": split12['ff']['d']}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}
+split63 = {"ff": {"t": -1, "s": -1, "d": split13['ff']['d']}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}
+
+splits_json = {
+ "splitChange1_1": split11,
+ "splitChange1_2": split12,
+ "splitChange1_3": split13,
+ "splitChange2_1": {"ff": {"t": -1, "s": -1, "d": [{"name": "SPLIT_1","status": "ACTIVE","killed": False,"defaultTreatment": "off","configurations": {},"conditions": []}]}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}},
+ "splitChange3_1": {"ff": {"t": -1, "s": -1, "d": [{"trafficTypeName": "user","name": "SPLIT_2","trafficAllocation": 100,"trafficAllocationSeed": 1057590779,"seed": -113875324,"status": "ACTIVE","killed": False,"defaultTreatment": "off","changeNumber": 1675443569027,"algo": 2,"configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}]}],"s": -1,"t": 1675443569027}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}},
+ "splitChange3_2": {"ff": {"t": -1, "s": -1, "d": [{"trafficTypeName": "user","name": "SPLIT_2","trafficAllocation": 100,"trafficAllocationSeed": 1057590779,"seed": -113875324,"status": "ACTIVE","killed": True,"defaultTreatment": "off","changeNumber": 1675443767288,"algo": 2,"configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}]}],"s": 1675443569027,"t": 1675443569027}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}},
+ "splitChange4_1": split41,
+ "splitChange4_2": split42,
+ "splitChange4_3": split43,
+ "splitChange5_1": {"ff": {"t": -1, "s": -1, "d": [{"trafficTypeName": "user","name": "SPLIT_2","trafficAllocation": 100,"trafficAllocationSeed": 1057590779,"seed": -113875324,"status": "ACTIVE","killed": False,"defaultTreatment": "off","changeNumber": 1675443569027,"algo": 2,"configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}]}],"s": -1,"t": 1675443569027}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}},
+ "splitChange5_2": {"ff": {"t": -1, "s": -1, "d": [{"trafficTypeName": "user","name": "SPLIT_2","trafficAllocation": 100,"trafficAllocationSeed": 1057590779,"seed": -113875324,"status": "ACTIVE","killed": True,"defaultTreatment": "off","changeNumber": 1675443767288,"algo": 2,"configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}]}],"s": 1675443569026,"t": 1675443569026}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}},
+ "splitChange6_1": split61,
+ "splitChange6_2": split62,
+ "splitChange6_3": split63,
+ "splitChange7_1": {"ff": {
+ "t": -1,
+ "s": -1,
+ "d": [{"changeNumber": 10,"trafficTypeName": "user","name": "rbs_feature_flag","trafficAllocation": 100,"trafficAllocationSeed": 1828377380,"seed": -286617921,"status": "ACTIVE","killed": False,"defaultTreatment": "off","algo": 2,
+ "conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": {"trafficType": "user"},"matcherType": "IN_RULE_BASED_SEGMENT","negate": False,"userDefinedSegmentMatcherData": {"segmentName": "sample_rule_based_segment"}}]},"partitions": [{"treatment": "on","size": 100},{"treatment": "off","size": 0}],"label": "in rule based segment sample_rule_based_segment"},{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": {"trafficType": "user"},"matcherType": "ALL_KEYS","negate": False}]},"partitions": [{"treatment": "on","size": 0},{"treatment": "off","size": 100}],"label": "default rule"}],
+ "configurations": {},
+ "sets": [],
+ "impressionsDisabled": False
+ }]
+ }, "rbs": {
+ "t": 1675259356568,
+ "s": -1,
+ "d": [{"changeNumber": 5,"name": "sample_rule_based_segment","status": "ACTIVE","trafficTypeName": "user","excluded":{"keys":["mauro@split.io","gaston@split.io"],"segments":[]},
+ "conditions": [{"matcherGroup": {"combiner": "AND","matchers": [{"keySelector": {"trafficType": "user","attribute": "email"},"matcherType": "ENDS_WITH","negate": False,"whitelistMatcherData": {"whitelist": ["@split.io"]}}]}}]}
+ ]}}
+}
\ No newline at end of file
diff --git a/tests/integration/files/splitChanges.json b/tests/integration/files/splitChanges.json
index d5401c93..84f7c2cd 100644
--- a/tests/integration/files/splitChanges.json
+++ b/tests/integration/files/splitChanges.json
@@ -1,5 +1,6 @@
{
- "splits": [
+ "ff": {
+ "d": [
{
"orgId": null,
"environment": null,
@@ -22,7 +23,8 @@
"userDefinedSegmentMatcherData": null,
"whitelistMatcherData": {
"whitelist": [
- "whitelisted_user"
+ "whitelisted_user",
+ "user1234"
]
}
}
@@ -58,7 +60,8 @@
}
]
}
- ]
+ ],
+ "sets": ["set1", "set2"]
},
{
"orgId": null,
@@ -95,7 +98,8 @@
}
]
}
- ]
+ ],
+ "sets": ["set4"]
},
{
"orgId": null,
@@ -136,7 +140,8 @@
}
]
}
- ]
+ ],
+ "sets": ["set3"]
},
{
"orgId": null,
@@ -199,7 +204,8 @@
}
]
}
- ]
+ ],
+ "sets": ["set1"]
},
{
"orgId": null,
@@ -239,7 +245,8 @@
}
]
}
- ]
+ ],
+ "sets": []
},
{
"orgId": null,
@@ -276,7 +283,8 @@
}
]
}
- ]
+ ],
+ "sets": []
},
{
"orgId": null,
@@ -313,9 +321,156 @@
}
]
}
+ ],
+ "sets": []
+ },
+ {
+ "changeNumber": 10,
+ "trafficTypeName": "user",
+ "name": "rbs_feature_flag",
+ "trafficAllocation": 100,
+ "trafficAllocationSeed": 1828377380,
+ "seed": -286617921,
+ "status": "ACTIVE",
+ "killed": false,
+ "defaultTreatment": "off",
+ "algo": 2,
+ "conditions": [
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user"
+ },
+ "matcherType": "IN_RULE_BASED_SEGMENT",
+ "negate": false,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "sample_rule_based_segment"
+ }
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ],
+ "label": "in rule based segment sample_rule_based_segment"
+ },
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user"
+ },
+ "matcherType": "ALL_KEYS",
+ "negate": false
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 0
+ },
+ {
+ "treatment": "off",
+ "size": 100
+ }
+ ],
+ "label": "default rule"
+ }
+ ],
+ "configurations": {},
+ "sets": [],
+ "impressionsDisabled": false
+ },
+ {
+ "orgId": null,
+ "environment": null,
+ "trafficTypeId": null,
+ "trafficTypeName": null,
+ "name": "prereq_feature",
+ "seed": 1699838640,
+ "status": "ACTIVE",
+ "killed": false,
+ "changeNumber": 123,
+ "defaultTreatment": "off_default",
+ "conditions": [
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "ALL_KEYS",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "whitelistMatcherData": null
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ]
+ }
+ ],
+ "sets": [],
+ "prerequisites": [
+ {"n": "regex_test", "ts": ["on"]},
+ {"n": "whitelist_feature", "ts": ["off"]}
]
}
],
- "since": -1,
- "till": 1457726098069
-}
+ "s": -1,
+ "t": 1457726098069
+}, "rbs": {"t": -1, "s": -1, "d": [{
+ "changeNumber": 123,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["mauro@split.io","gaston@split.io"],
+ "segments":[]
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": false,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+}]}}
diff --git a/tests/integration/files/split_changes.json b/tests/integration/files/split_changes.json
index f536346d..f0708043 100644
--- a/tests/integration/files/split_changes.json
+++ b/tests/integration/files/split_changes.json
@@ -1,5 +1,6 @@
{
- "splits": [
+ "ff": {
+ "d": [
{
"orgId": null,
"environment": null,
@@ -58,7 +59,8 @@
}
]
}
- ]
+ ],
+ "sets": ["set1", "set2"]
},
{
"orgId": null,
@@ -95,7 +97,8 @@
}
]
}
- ]
+ ],
+ "sets": ["set4"]
},
{
"orgId": null,
@@ -136,7 +139,8 @@
}
]
}
- ]
+ ],
+ "sets": ["set3"]
},
{
"orgId": null,
@@ -199,7 +203,8 @@
}
]
}
- ]
+ ],
+ "sets": ["set1"]
},
{
"orgId": null,
@@ -239,7 +244,8 @@
}
]
}
- ]
+ ],
+ "sets": []
},
{
"orgId": null,
@@ -276,7 +282,8 @@
}
]
}
- ]
+ ],
+ "sets": []
},
{
"orgId": null,
@@ -313,9 +320,11 @@
}
]
}
- ]
+ ],
+ "sets": []
}
],
- "since": -1,
- "till": 1457726098069
+ "s": -1,
+ "t": 1457726098069
+}, "rbs": {"t": -1, "s": -1, "d": []}
}
diff --git a/tests/integration/files/split_changes_temp.json b/tests/integration/files/split_changes_temp.json
new file mode 100644
index 00000000..24d876a4
--- /dev/null
+++ b/tests/integration/files/split_changes_temp.json
@@ -0,0 +1 @@
+{"ff": {"t": -1, "s": -1, "d": [{"name": "SPLIT_1", "status": "ACTIVE", "killed": false, "defaultTreatment": "off", "configurations": {}, "conditions": []}]}, "rbs": {"t": -1, "s": -1, "d": [{"changeNumber": 12, "name": "some_segment", "status": "ACTIVE", "trafficTypeName": "user", "excluded": {"keys": [], "segments": []}, "conditions": []}]}}
\ No newline at end of file
diff --git a/tests/integration/files/split_old_spec.json b/tests/integration/files/split_old_spec.json
new file mode 100644
index 00000000..0d7edf86
--- /dev/null
+++ b/tests/integration/files/split_old_spec.json
@@ -0,0 +1,328 @@
+{
+ "splits": [
+ {
+ "orgId": null,
+ "environment": null,
+ "trafficTypeId": null,
+ "trafficTypeName": null,
+ "name": "whitelist_feature",
+ "seed": -1222652054,
+ "status": "ACTIVE",
+ "killed": false,
+ "changeNumber": 123,
+ "defaultTreatment": "off",
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "WHITELIST",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "whitelisted_user"
+ ]
+ }
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ }
+ ]
+ },
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "ALL_KEYS",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "whitelistMatcherData": null
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 0
+ },
+ {
+ "treatment": "off",
+ "size": 100
+ }
+ ]
+ }
+ ],
+ "sets": ["set1", "set2"]
+ },
+ {
+ "orgId": null,
+ "environment": null,
+ "trafficTypeId": null,
+ "trafficTypeName": null,
+ "name": "all_feature",
+ "seed": 1699838640,
+ "status": "ACTIVE",
+ "killed": false,
+ "changeNumber": 123,
+ "defaultTreatment": "off",
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "ALL_KEYS",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "whitelistMatcherData": null
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ]
+ }
+ ],
+ "sets": ["set4"]
+ },
+ {
+ "orgId": null,
+ "environment": null,
+ "trafficTypeId": null,
+ "trafficTypeName": null,
+ "name": "killed_feature",
+ "seed": -480091424,
+ "status": "ACTIVE",
+ "killed": true,
+ "changeNumber": 123,
+ "defaultTreatment": "defTreatment",
+ "configurations": {
+ "off": "{\"size\":15,\"test\":20}",
+ "defTreatment": "{\"size\":15,\"defTreatment\":true}"
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "ALL_KEYS",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "whitelistMatcherData": null
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "defTreatment",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ]
+ }
+ ],
+ "sets": ["set3"]
+ },
+ {
+ "orgId": null,
+ "environment": null,
+ "trafficTypeId": null,
+ "trafficTypeName": null,
+ "name": "sample_feature",
+ "seed": 1548363147,
+ "status": "ACTIVE",
+ "killed": false,
+ "changeNumber": 123,
+ "defaultTreatment": "off",
+ "configurations": {
+ "on": "{\"size\":15,\"test\":20}"
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "IN_SEGMENT",
+ "negate": false,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "employees"
+ },
+ "whitelistMatcherData": null
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ }
+ ]
+ },
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "IN_SEGMENT",
+ "negate": false,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "human_beigns"
+ },
+ "whitelistMatcherData": null
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 30
+ },
+ {
+ "treatment": "off",
+ "size": 70
+ }
+ ]
+ }
+ ],
+ "sets": ["set1"]
+ },
+ {
+ "orgId": null,
+ "environment": null,
+ "trafficTypeId": null,
+ "trafficTypeName": null,
+ "name": "dependency_test",
+ "seed": 1222652054,
+ "status": "ACTIVE",
+ "killed": false,
+ "changeNumber": 123,
+ "defaultTreatment": "off",
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "IN_SPLIT_TREATMENT",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "dependencyMatcherData": {
+ "split": "all_feature",
+ "treatments": ["on"]
+ }
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 0
+ },
+ {
+ "treatment": "off",
+ "size": 100
+ }
+ ]
+ }
+ ],
+ "sets": []
+ },
+ {
+ "orgId": null,
+ "environment": null,
+ "trafficTypeId": null,
+ "trafficTypeName": null,
+ "name": "regex_test",
+ "seed": 1222652051,
+ "status": "ACTIVE",
+ "killed": false,
+ "changeNumber": 123,
+ "defaultTreatment": "off",
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "MATCHES_STRING",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "stringMatcherData": "abc[0-9]"
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ]
+ }
+ ],
+ "sets": []
+ },
+ {
+ "orgId": null,
+ "environment": null,
+ "trafficTypeId": null,
+ "trafficTypeName": null,
+ "name": "boolean_test",
+ "status": "ACTIVE",
+ "killed": false,
+ "changeNumber": 123,
+ "seed": 12321809,
+ "defaultTreatment": "off",
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "EQUAL_TO_BOOLEAN",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "booleanMatcherData": true
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ]
+ }
+ ],
+ "sets": []
+ }
+ ],
+ "since": -1,
+ "till": 1457726098069
+}
\ No newline at end of file
diff --git a/tests/integration/test_client_e2e.py b/tests/integration/test_client_e2e.py
index 0da42da0..26efcd42 100644
--- a/tests/integration/test_client_e2e.py
+++ b/tests/integration/test_client_e2e.py
@@ -1,34 +1,539 @@
"""Client integration tests."""
-#pylint: disable=protected-access,line-too-long,no-self-use
+# pylint: disable=protected-access,line-too-long,no-self-use
+from asyncio import Queue
import json
import os
+import threading
import time
-
+import pytest
+import queue
+import unittest.mock as mocker
from redis import StrictRedis
-from splitio.client.factory import get_factory, SplitFactory
+from splitio.optional.loaders import asyncio
+from splitio.exceptions import TimeoutException
+from splitio.client.factory import get_factory, SplitFactory, get_factory_async, SplitFactoryAsync
from splitio.client.util import SdkMetadata
+from splitio.client.config import DEFAULT_CONFIG
+from splitio.client.client import EvaluationOptions
+from splitio.engine.impressions.impressions import Manager as ImpressionsManager, ImpressionsMode
+from splitio.engine.impressions import set_classes, set_classes_async
+from splitio.engine.impressions.strategies import StrategyDebugMode, StrategyOptimizedMode, StrategyNoneMode
+from splitio.engine.telemetry import TelemetryStorageConsumer, TelemetryStorageProducer, TelemetryStorageConsumerAsync,\
+ TelemetryStorageProducerAsync
+from splitio.engine.impressions.manager import Counter as ImpressionsCounter
+from splitio.engine.impressions.unique_keys_tracker import UniqueKeysTracker, UniqueKeysTrackerAsync
+from splitio.events.events_delivery import EventsDelivery
+from splitio.events.events_manager import EventsManager, EventsManagerAsync
+from splitio.events.events_manager_config import EventsManagerConfig
+from splitio.events.events_task import EventsTask, EventsTaskAsync
+from splitio.models import splits, segments, rule_based_segments
+from splitio.models.events import SdkEvent
+from splitio.models.fallback_config import FallbackTreatmentsConfiguration, FallbackTreatmentCalculator
+from splitio.models.fallback_treatment import FallbackTreatment
+from splitio.recorder.recorder import StandardRecorder, PipelinedRecorder, StandardRecorderAsync, PipelinedRecorderAsync
from splitio.storage.inmemmory import InMemoryEventStorage, InMemoryImpressionStorage, \
- InMemorySegmentStorage, InMemorySplitStorage, InMemoryTelemetryStorage
+ InMemorySegmentStorage, InMemorySplitStorage, InMemoryTelemetryStorage, InMemorySplitStorageAsync,\
+ InMemoryEventStorageAsync, InMemoryImpressionStorageAsync, InMemorySegmentStorageAsync, \
+ InMemoryTelemetryStorageAsync, InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync
from splitio.storage.redis import RedisEventsStorage, RedisImpressionsStorage, \
- RedisSplitStorage, RedisSegmentStorage, RedisTelemetryStorage
-from splitio.storage.adapters.redis import RedisAdapter
-from splitio.models import splits, segments
+ RedisSplitStorage, RedisSegmentStorage, RedisTelemetryStorage, RedisEventsStorageAsync,\
+ RedisImpressionsStorageAsync, RedisSegmentStorageAsync, RedisSplitStorageAsync, RedisTelemetryStorageAsync, \
+ RedisRuleBasedSegmentsStorage, RedisRuleBasedSegmentsStorageAsync
+from splitio.storage.pluggable import PluggableEventsStorage, PluggableImpressionsStorage, PluggableSegmentStorage, \
+ PluggableTelemetryStorage, PluggableSplitStorage, PluggableEventsStorageAsync, PluggableImpressionsStorageAsync, \
+ PluggableSegmentStorageAsync, PluggableSplitStorageAsync, PluggableTelemetryStorageAsync, \
+ PluggableRuleBasedSegmentsStorage, PluggableRuleBasedSegmentsStorageAsync
+from splitio.storage.adapters.redis import build, RedisAdapter, RedisAdapterAsync, build_async
+from splitio.sync.synchronizer import SplitTasks, SplitSynchronizers, Synchronizer, RedisSynchronizer, SynchronizerAsync,\
+RedisSynchronizerAsync
+from splitio.sync.manager import Manager, RedisManager, ManagerAsync, RedisManagerAsync
+from splitio.sync.synchronizer import PluggableSynchronizer, PluggableSynchronizerAsync
+from splitio.sync.telemetry import RedisTelemetrySubmitter, RedisTelemetrySubmitterAsync
+
+from tests.helpers.mockserver import SplitMockServer
+from tests.integration import splits_json
+from tests.storage.test_pluggable import StorageMockAdapter, StorageMockAdapterAsync
+
+def _validate_last_impressions(client, *to_validate):
+ """Validate the last N impressions are present disregarding the order."""
+ imp_storage = client._factory._get_storage('impressions')
+ as_tup_set = set()
+ if isinstance(client._factory._get_storage('splits'), RedisSplitStorage) or isinstance(client._factory._get_storage('splits'), PluggableSplitStorage):
+ if isinstance(client._factory._get_storage('splits'), RedisSplitStorage):
+ redis_client = imp_storage._redis
+ impressions_raw = [
+ json.loads(redis_client.lpop(imp_storage.IMPRESSIONS_QUEUE_KEY))
+ for _ in to_validate
+ ]
+ else:
+ pluggable_adapter = imp_storage._pluggable_adapter
+ results = pluggable_adapter.pop_items(imp_storage._impressions_queue_key)
+ results = [] if results == None else results
+ impressions_raw = [
+ json.loads(i)
+ for i in results
+ ]
+ if to_validate != ():
+ if len(to_validate[0]) == 3:
+ as_tup_set = set(
+ (i['i']['f'], i['i']['k'], i['i']['t'])
+ for i in impressions_raw
+ )
+ else:
+ as_tup_set = set(
+ (i['i']['f'], i['i']['k'], i['i']['t'], i['i']['properties'])
+ for i in impressions_raw
+ )
+
+ assert as_tup_set == set(to_validate)
+ time.sleep(0.2) # delay for redis to sync
+ else:
+ impressions = imp_storage.pop_many(len(to_validate))
+ if to_validate != ():
+ if len(to_validate[0]) == 3:
+ as_tup_set = set((i.feature_name, i.matching_key, i.treatment) for i in impressions)
+ else:
+ as_tup_set = set((i.feature_name, i.matching_key, i.treatment, i.properties) for i in impressions)
+
+ assert as_tup_set == set(to_validate)
+
+def _validate_last_events(client, *to_validate):
+ """Validate the last N impressions are present disregarding the order."""
+ event_storage = client._factory._get_storage('events')
+ if isinstance(client._factory._get_storage('splits'), RedisSplitStorage) or isinstance(client._factory._get_storage('splits'), PluggableSplitStorage):
+ if isinstance(client._factory._get_storage('splits'), RedisSplitStorage):
+ redis_client = event_storage._redis
+ events_raw = [
+ json.loads(redis_client.lpop(event_storage._EVENTS_KEY_TEMPLATE))
+ for _ in to_validate
+ ]
+ else:
+ pluggable_adapter = event_storage._pluggable_adapter
+ events_raw = [
+ json.loads(i)
+ for i in pluggable_adapter.pop_items(event_storage._events_queue_key)
+ ]
+ as_tup_set = set(
+ (i['e']['key'], i['e']['trafficTypeName'], i['e']['eventTypeId'], i['e']['value'], str(i['e']['properties']))
+ for i in events_raw
+ )
+ assert as_tup_set == set(to_validate)
+ else:
+ events = event_storage.pop_many(len(to_validate))
+ as_tup_set = set((i.key, i.traffic_type_name, i.event_type_id, i.value, str(i.properties)) for i in events)
+ assert as_tup_set == set(to_validate)
+
+def _get_treatment(factory, skip_rbs=False):
+ """Test client.get_treatment()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert client.get_treatment('user1', 'sample_feature', evaluation_options=EvaluationOptions({"prop": "value"})) == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on', '{"prop": "value"}'))
+
+ assert client.get_treatment('invalidKey', 'sample_feature') == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
+
+ assert client.get_treatment('invalidKey', 'invalid_feature') == 'control'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client) # No impressions should be present
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ assert client.get_treatment('invalidKey', 'killed_feature') == 'defTreatment'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ assert client.get_treatment('invalidKey', 'all_feature') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+
+ # testing WHITELIST matcher
+ assert client.get_treatment('whitelisted_user', 'whitelist_feature') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('whitelist_feature', 'whitelisted_user', 'on'))
+ assert client.get_treatment('unwhitelisted_user', 'whitelist_feature') == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('whitelist_feature', 'unwhitelisted_user', 'off'))
+
+ # testing INVALID matcher
+ assert client.get_treatment('some_user_key', 'invalid_matcher_feature') == 'control'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client) # No impressions should be present
+
+ # testing Dependency matcher
+ assert client.get_treatment('somekey', 'dependency_test') == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('dependency_test', 'somekey', 'off'))
+
+ # testing boolean matcher
+ assert client.get_treatment('True', 'boolean_test') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('boolean_test', 'True', 'on'))
+
+ # testing regex matcher
+ assert client.get_treatment('abc4', 'regex_test') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('regex_test', 'abc4', 'on'))
+
+ if skip_rbs:
+ return
+
+ # test rule based segment matcher
+ assert client.get_treatment('bilal@split.io', 'rbs_feature_flag', {'email': 'bilal@split.io'}) == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('rbs_feature_flag', 'bilal@split.io', 'on'))
+
+ # test rule based segment matcher
+ assert client.get_treatment('mauro@split.io', 'rbs_feature_flag', {'email': 'mauro@split.io'}) == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('rbs_feature_flag', 'mauro@split.io', 'off'))
+
+ # test prerequisites matcher
+ assert client.get_treatment('abc4', 'prereq_feature') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('prereq_feature', 'abc4', 'on'))
+
+ # test prerequisites matcher
+ assert client.get_treatment('user1234', 'prereq_feature') == 'off_default'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('prereq_feature', 'user1234', 'off_default'))
+
+ # test fallback treatment
+ assert client.get_treatment('user4321', 'fallback_feature') == 'on-local'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client) # No impressions should be present
+
+def _get_treatment_with_config(factory):
+ """Test client.get_treatment_with_config()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = client.get_treatment_with_config('user1', 'sample_feature')
+ assert result == ('on', '{"size":15,"test":20}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
+
+ result = client.get_treatment_with_config('invalidKey', 'sample_feature')
+ assert result == ('off', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
+
+ result = client.get_treatment_with_config('invalidKey', 'invalid_feature')
+ assert result == ('control', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client)
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = client.get_treatment_with_config('invalidKey', 'killed_feature')
+ assert ('defTreatment', '{"size":15,"defTreatment":true}') == result
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = client.get_treatment_with_config('invalidKey', 'all_feature')
+ assert result == ('on', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+
+ # test fallback treatment
+ assert client.get_treatment_with_config('user4321', 'fallback_feature') == ('on-local', '{"prop": "val"}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client) # No impressions should be present
+
+def _get_treatments(factory):
+ """Test client.get_treatments()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = client.get_treatments('user1', ['sample_feature'])
+ assert len(result) == 1
+ assert result['sample_feature'] == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
+
+ result = client.get_treatments('invalidKey', ['sample_feature'])
+ assert len(result) == 1
+ assert result['sample_feature'] == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
+
+ result = client.get_treatments('invalidKey', ['invalid_feature'])
+ assert len(result) == 1
+ assert result['invalid_feature'] == 'control'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client)
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = client.get_treatments('invalidKey', ['killed_feature'])
+ assert len(result) == 1
+ assert result['killed_feature'] == 'defTreatment'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = client.get_treatments('invalidKey', ['all_feature'])
+ assert len(result) == 1
+ assert result['all_feature'] == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+
+ # test fallback treatment
+ assert client.get_treatments('user4321', ['fallback_feature']) == {'fallback_feature': 'on-local'}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client) # No impressions should be present
+
+def _get_treatments_with_config(factory):
+ """Test client.get_treatments_with_config()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ result = client.get_treatments_with_config('user1', ['sample_feature'])
+ assert len(result) == 1
+ assert result['sample_feature'] == ('on', '{"size":15,"test":20}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
+
+ result = client.get_treatments_with_config('invalidKey', ['sample_feature'])
+ assert len(result) == 1
+ assert result['sample_feature'] == ('off', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
+
+ result = client.get_treatments_with_config('invalidKey', ['invalid_feature'])
+ assert len(result) == 1
+ assert result['invalid_feature'] == ('control', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client)
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = client.get_treatments_with_config('invalidKey', ['killed_feature'])
+ assert len(result) == 1
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = client.get_treatments_with_config('invalidKey', ['all_feature'])
+ assert len(result) == 1
+ assert result['all_feature'] == ('on', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+
+ # test fallback treatment
+ assert client.get_treatments_with_config('user4321', ['fallback_feature']) == {'fallback_feature': ('on-local', '{"prop": "val"}')}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client) # No impressions should be present
+
+def _get_treatments_by_flag_set(factory):
+ """Test client.get_treatments_by_flag_set()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = client.get_treatments_by_flag_set('user1', 'set1')
+ assert len(result) == 2
+ assert result == {'sample_feature': 'on', 'whitelist_feature': 'off'}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'), ('whitelist_feature', 'user1', 'off'))
+
+ result = client.get_treatments_by_flag_set('invalidKey', 'invalid_set')
+ assert len(result) == 0
+ assert result == {}
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = client.get_treatments_by_flag_set('invalidKey', 'set3')
+ assert len(result) == 1
+ assert result['killed_feature'] == 'defTreatment'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = client.get_treatments_by_flag_set('invalidKey', 'set4')
+ assert len(result) == 1
+ assert result['all_feature'] == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+
+def _get_treatments_by_flag_sets(factory):
+ """Test client.get_treatments_by_flag_sets()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = client.get_treatments_by_flag_sets('user1', ['set1'])
+ assert len(result) == 2
+ assert result == {'sample_feature': 'on', 'whitelist_feature': 'off'}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'), ('whitelist_feature', 'user1', 'off'))
+
+ result = client.get_treatments_by_flag_sets('invalidKey', ['invalid_set'])
+ assert len(result) == 0
+ assert result == {}
+
+ result = client.get_treatments_by_flag_sets('invalidKey', [])
+ assert len(result) == 0
+ assert result == {}
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = client.get_treatments_by_flag_sets('invalidKey', ['set3'])
+ assert len(result) == 1
+ assert result['killed_feature'] == 'defTreatment'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = client.get_treatments_by_flag_sets('user1', ['set4'])
+ assert len(result) == 1
+ assert result['all_feature'] == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('all_feature', 'user1', 'on'))
+
+def _get_treatments_with_config_by_flag_set(factory):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = client.get_treatments_with_config_by_flag_set('user1', 'set1')
+ assert len(result) == 2
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'), 'whitelist_feature': ('off', None)}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'), ('whitelist_feature', 'user1', 'off'))
+ result = client.get_treatments_with_config_by_flag_set('invalidKey', 'invalid_set')
+ assert len(result) == 0
+ assert result == {}
-class InMemoryIntegrationTests(object):
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = client.get_treatments_with_config_by_flag_set('invalidKey', 'set3')
+ assert len(result) == 1
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = client.get_treatments_with_config_by_flag_set('invalidKey', 'set4')
+ assert len(result) == 1
+ assert result['all_feature'] == ('on', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+
+def _get_treatments_with_config_by_flag_sets(factory):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = client.get_treatments_with_config_by_flag_sets('user1', ['set1'])
+ assert len(result) == 2
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'), 'whitelist_feature': ('off', None)}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'), ('whitelist_feature', 'user1', 'off'))
+
+ result = client.get_treatments_with_config_by_flag_sets('invalidKey', ['invalid_set'])
+ assert len(result) == 0
+ assert result == {}
+
+ result = client.get_treatments_with_config_by_flag_sets('invalidKey', [])
+ assert len(result) == 0
+ assert result == {}
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = client.get_treatments_with_config_by_flag_sets('invalidKey', ['set3'])
+ assert len(result) == 1
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = client.get_treatments_with_config_by_flag_sets('user1', ['set4'])
+ assert len(result) == 1
+ assert result['all_feature'] == ('on', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ _validate_last_impressions(client, ('all_feature', 'user1', 'on'))
+
+def _track(factory):
+ """Test client.track()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ assert(client.track('user1', 'user', 'conversion', 1, {"prop1": "value1"}))
+ assert(not client.track(None, 'user', 'conversion'))
+ assert(not client.track('user1', None, 'conversion'))
+ assert(not client.track('user1', 'user', None))
+ _validate_last_events(
+ client,
+ ('user1', 'user', 'conversion', 1, "{'prop1': 'value1'}")
+ )
+
+def _manager_methods(factory, skip_rbs=False):
+ """Test manager.split/splits."""
+ try:
+ manager = factory.manager()
+ except:
+ pass
+ result = manager.split('all_feature')
+ assert result.name == 'all_feature'
+ assert result.traffic_type is None
+ assert result.killed is False
+ assert len(result.treatments) == 2
+ assert result.change_number == 123
+ assert result.configs == {}
+
+ result = manager.split('killed_feature')
+ assert result.name == 'killed_feature'
+ assert result.traffic_type is None
+ assert result.killed is True
+ assert len(result.treatments) == 2
+ assert result.change_number == 123
+ assert result.configs['defTreatment'] == '{"size":15,"defTreatment":true}'
+ assert result.configs['off'] == '{"size":15,"test":20}'
+
+ result = manager.split('sample_feature')
+ assert result.name == 'sample_feature'
+ assert result.traffic_type is None
+ assert result.killed is False
+ assert len(result.treatments) == 2
+ assert result.change_number == 123
+ assert result.configs['on'] == '{"size":15,"test":20}'
+
+ if skip_rbs:
+ assert len(manager.split_names()) == 7
+ assert len(manager.splits()) == 7
+ return
+
+ assert len(manager.split_names()) == 9
+ assert len(manager.splits()) == 9
+
+class InMemoryDebugIntegrationTests(object):
"""Inmemory storage-based integration tests."""
def setup_method(self):
"""Prepare storages with test data."""
- split_storage = InMemorySplitStorage()
- segment_storage = InMemorySegmentStorage()
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
with open(split_fn, 'r') as flo:
data = json.loads(flo.read())
- for split in data['splits']:
- split_storage.put(splits.from_raw(split))
+ for split in data['ff']['d']:
+ split_storage.update([splits.from_raw(split)], [], 0)
+
+ for rbs in data['rbs']['d']:
+ rb_segment_storage.update([rule_based_segments.from_raw(rbs)], [], 0)
segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
with open(segment_fn, 'r') as flo:
@@ -40,122 +545,58 @@ def setup_method(self):
data = json.loads(flo.read())
segment_storage.put(segments.from_raw(data))
- self.factory = SplitFactory('some_api_key', { #pylint:disable=attribute-defined-outside-init
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
'splits': split_storage,
'segments': segment_storage,
- 'impressions': InMemoryImpressionStorage(5000),
- 'events': InMemoryEventStorage(5000),
- 'telemetry': InMemoryTelemetryStorage()
- }, True)
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': InMemoryImpressionStorage(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorage(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorder(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTask(events_manager.notify_internal_event, events_queue)
- def _validate_last_impressions(self, client, *to_validate):
- """Validate the last N impressions are present disregarding the order."""
- imp_storage = client._factory._get_storage('impressions')
- impressions = imp_storage.pop_many(len(to_validate))
- as_tup_set = set((i.feature_name, i.matching_key, i.treatment) for i in impressions)
- assert as_tup_set == set(to_validate)
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ self.factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ internal_events_task.start()
+ except:
+ pass
+
+ def teardown_method(self):
+ """Shut down the factory."""
+ event = threading.Event()
+ self.factory.destroy(event)
+ event.wait()
def test_get_treatment(self):
"""Test client.get_treatment()."""
- client = self.factory.client()
-
- assert client.get_treatment('user1', 'sample_feature') == 'on'
- self._validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
-
- assert client.get_treatment('invalidKey', 'sample_feature') == 'off'
- self._validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
-
- assert client.get_treatment('invalidKey', 'invalid_feature') == 'control'
- self._validate_last_impressions(client) # No impressions should be present
-
- # testing a killed feature. No matter what the key, must return default treatment
- assert client.get_treatment('invalidKey', 'killed_feature') == 'defTreatment'
- self._validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
-
- # testing ALL matcher
- assert client.get_treatment('invalidKey', 'all_feature') == 'on'
- self._validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
-
- # testing WHITELIST matcher
- assert client.get_treatment('whitelisted_user', 'whitelist_feature') == 'on'
- self._validate_last_impressions(client, ('whitelist_feature', 'whitelisted_user', 'on'))
- assert client.get_treatment('unwhitelisted_user', 'whitelist_feature') == 'off'
- self._validate_last_impressions(client, ('whitelist_feature', 'unwhitelisted_user', 'off'))
-
- # testing INVALID matcher
- assert client.get_treatment('some_user_key', 'invalid_matcher_feature') == 'control'
- self._validate_last_impressions(client) # No impressions should be present
-
- # testing Dependency matcher
- assert client.get_treatment('somekey', 'dependency_test') == 'off'
- self._validate_last_impressions(client, ('dependency_test', 'somekey', 'off'))
-
- # testing boolean matcher
- assert client.get_treatment('True', 'boolean_test') == 'on'
- self._validate_last_impressions(client, ('boolean_test', 'True', 'on'))
-
- # testing regex matcher
- assert client.get_treatment('abc4', 'regex_test') == 'on'
- self._validate_last_impressions(client, ('regex_test', 'abc4', 'on'))
+ _get_treatment(self.factory)
def test_get_treatment_with_config(self):
"""Test client.get_treatment_with_config()."""
- client = self.factory.client()
-
- result = client.get_treatment_with_config('user1', 'sample_feature')
- assert result == ('on', '{"size":15,"test":20}')
- self._validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
-
- result = client.get_treatment_with_config('invalidKey', 'sample_feature')
- assert result == ('off', None)
- self._validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
-
- result = client.get_treatment_with_config('invalidKey', 'invalid_feature')
- assert result == ('control', None)
- self._validate_last_impressions(client)
-
- # testing a killed feature. No matter what the key, must return default treatment
- result = client.get_treatment_with_config('invalidKey', 'killed_feature')
- assert ('defTreatment', '{"size":15,"defTreatment":true}') == result
- self._validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
-
- # testing ALL matcher
- result = client.get_treatment_with_config('invalidKey', 'all_feature')
- assert result == ('on', None)
- self._validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+ _get_treatment_with_config(self.factory)
def test_get_treatments(self):
- """Test client.get_treatments()."""
+ _get_treatments(self.factory)
+ # testing multiple splitNames
client = self.factory.client()
-
- result = client.get_treatments('user1', ['sample_feature'])
- assert len(result) == 1
- assert result['sample_feature'] == 'on'
- self._validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
-
- result = client.get_treatments('invalidKey', ['sample_feature'])
- assert len(result) == 1
- assert result['sample_feature'] == 'off'
- self._validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
-
- result = client.get_treatments('invalidKey', ['invalid_feature'])
- assert len(result) == 1
- assert result['invalid_feature'] == 'control'
- self._validate_last_impressions(client)
-
- # testing a killed feature. No matter what the key, must return default treatment
- result = client.get_treatments('invalidKey', ['killed_feature'])
- assert len(result) == 1
- assert result['killed_feature'] == 'defTreatment'
- self._validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
-
- # testing ALL matcher
- result = client.get_treatments('invalidKey', ['all_feature'])
- assert len(result) == 1
- assert result['all_feature'] == 'on'
- self._validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
-
- # testing multiple splitNames
result = client.get_treatments('invalidKey', [
'all_feature',
'killed_feature',
@@ -167,7 +608,7 @@ def test_get_treatments(self):
assert result['killed_feature'] == 'defTreatment'
assert result['invalid_feature'] == 'control'
assert result['sample_feature'] == 'off'
- self._validate_last_impressions(
+ _validate_last_impressions(
client,
('all_feature', 'invalidKey', 'on'),
('killed_feature', 'invalidKey', 'defTreatment'),
@@ -176,36 +617,9 @@ def test_get_treatments(self):
def test_get_treatments_with_config(self):
"""Test client.get_treatments_with_config()."""
- client = self.factory.client()
-
- result = client.get_treatments_with_config('user1', ['sample_feature'])
- assert len(result) == 1
- assert result['sample_feature'] == ('on', '{"size":15,"test":20}')
- self._validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
-
- result = client.get_treatments_with_config('invalidKey', ['sample_feature'])
- assert len(result) == 1
- assert result['sample_feature'] == ('off', None)
- self._validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
-
- result = client.get_treatments_with_config('invalidKey', ['invalid_feature'])
- assert len(result) == 1
- assert result['invalid_feature'] == ('control', None)
- self._validate_last_impressions(client)
-
- # testing a killed feature. No matter what the key, must return default treatment
- result = client.get_treatments_with_config('invalidKey', ['killed_feature'])
- assert len(result) == 1
- assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
- self._validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
-
- # testing ALL matcher
- result = client.get_treatments_with_config('invalidKey', ['all_feature'])
- assert len(result) == 1
- assert result['all_feature'] == ('on', None)
- self._validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
-
+ _get_treatments_with_config(self.factory)
# testing multiple splitNames
+ client = self.factory.client()
result = client.get_treatments_with_config('invalidKey', [
'all_feature',
'killed_feature',
@@ -217,198 +631,268 @@ def test_get_treatments_with_config(self):
assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
assert result['invalid_feature'] == ('control', None)
assert result['sample_feature'] == ('off', None)
- self._validate_last_impressions(
+ _validate_last_impressions(
client,
('all_feature', 'invalidKey', 'on'),
('killed_feature', 'invalidKey', 'defTreatment'),
('sample_feature', 'invalidKey', 'off'),
)
+ def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ _get_treatments_by_flag_set(self.factory)
+
+ def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ _get_treatments_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ _get_treatments_with_config_by_flag_set(self.factory)
+
+ def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ _get_treatments_with_config_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ def test_track(self):
+ """Test client.track()."""
+ _track(self.factory)
+
def test_manager_methods(self):
"""Test manager.split/splits."""
- manager = self.factory.manager()
- result = manager.split('all_feature')
- assert result.name == 'all_feature'
- assert result.traffic_type is None
- assert result.killed is False
- assert len(result.treatments) == 2
- assert result.change_number == 123
- assert result.configs == {}
-
- result = manager.split('killed_feature')
- assert result.name == 'killed_feature'
- assert result.traffic_type is None
- assert result.killed is True
- assert len(result.treatments) == 2
- assert result.change_number == 123
- assert result.configs['defTreatment'] == '{"size":15,"defTreatment":true}'
- assert result.configs['off'] == '{"size":15,"test":20}'
-
- result = manager.split('sample_feature')
- assert result.name == 'sample_feature'
- assert result.traffic_type is None
- assert result.killed is False
- assert len(result.treatments) == 2
- assert result.change_number == 123
- assert result.configs['on'] == '{"size":15,"test":20}'
+ _manager_methods(self.factory)
- assert len(manager.split_names()) == 7
- assert len(manager.splits()) == 7
-
-class RedisIntegrationTests(object):
- """Redis storage-based integration tests."""
+class InMemoryOptimizedIntegrationTests(object):
+ """Inmemory storage-based integration tests."""
def setup_method(self):
"""Prepare storages with test data."""
- metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
- redis_client = RedisAdapter(StrictRedis())
- split_storage = RedisSplitStorage(redis_client)
- segment_storage = RedisSegmentStorage(redis_client)
-
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
with open(split_fn, 'r') as flo:
data = json.loads(flo.read())
- for split in data['splits']:
- redis_client.set(split_storage._get_key(split['name']), json.dumps(split))
- redis_client.set(split_storage._SPLIT_TILL_KEY, data['till'])
+ for split in data['ff']['d']:
+ split_storage.update([splits.from_raw(split)], [], 0)
+
+ for rbs in data['rbs']['d']:
+ rb_segment_storage.update([rule_based_segments.from_raw(rbs)], [], 0)
segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
with open(segment_fn, 'r') as flo:
data = json.loads(flo.read())
- redis_client.sadd(segment_storage._get_key(data['name']), *data['added'])
- redis_client.set(segment_storage._get_till_key(data['name']), data['till'])
+ segment_storage.put(segments.from_raw(data))
segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
with open(segment_fn, 'r') as flo:
data = json.loads(flo.read())
- redis_client.sadd(segment_storage._get_key(data['name']), *data['added'])
- redis_client.set(segment_storage._get_till_key(data['name']), data['till'])
+ segment_storage.put(segments.from_raw(data))
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
- self.factory = SplitFactory('some_api_key', { #pylint:disable=attribute-defined-outside-init
+ storages = {
'splits': split_storage,
'segments': segment_storage,
- 'impressions': RedisImpressionsStorage(redis_client, metadata),
- 'events': RedisEventsStorage(redis_client, metadata),
- 'telemetry': RedisTelemetryStorage(redis_client, metadata)
- }, True)
-
- def _validate_last_impressions(self, client, *to_validate):
- """Validate the last N impressions are present disregarding the order."""
- imp_storage = client._factory._get_storage('impressions')
- redis_client = imp_storage._redis
- impressions_raw = [
- json.loads(redis_client.lpop(imp_storage.IMPRESSIONS_QUEUE_KEY))
- for _ in to_validate
- ]
- as_tup_set = set(
- (i['i']['f'], i['i']['k'], i['i']['t'])
- for i in impressions_raw
- )
-
- assert as_tup_set == set(to_validate)
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': InMemoryImpressionStorage(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorage(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorder(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTask(events_manager.notify_internal_event, events_queue)
+ self.factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ internal_events_task.start()
def test_get_treatment(self):
"""Test client.get_treatment()."""
- client = self.factory.client()
-
- assert client.get_treatment('user1', 'sample_feature') == 'on'
- self._validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
-
- assert client.get_treatment('invalidKey', 'sample_feature') == 'off'
- self._validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
+ _get_treatment(self.factory)
- assert client.get_treatment('invalidKey', 'invalid_feature') == 'control'
- self._validate_last_impressions(client)
-
- # testing a killed feature. No matter what the key, must return default treatment
- assert client.get_treatment('invalidKey', 'killed_feature') == 'defTreatment'
- self._validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+ def test_get_treatments(self):
+ """Test client.get_treatments()."""
+ _get_treatments(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ assert self.factory._storages['impressions']._impressions.qsize() == 0
- # testing ALL matcher
- assert client.get_treatment('invalidKey', 'all_feature') == 'on'
- self._validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+ def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ _get_treatments_with_config(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ _validate_last_impressions(client,)
- # testing WHITELIST matcher
- assert client.get_treatment('whitelisted_user', 'whitelist_feature') == 'on'
- self._validate_last_impressions(client, ('whitelist_feature', 'whitelisted_user', 'on'))
- assert client.get_treatment('unwhitelisted_user', 'whitelist_feature') == 'off'
- self._validate_last_impressions(client, ('whitelist_feature', 'unwhitelisted_user', 'off'))
+ def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ _get_treatments_by_flag_set(self.factory)
- # testing INVALID matcher
- assert client.get_treatment('some_user_key', 'invalid_matcher_feature') == 'control'
- self._validate_last_impressions(client)
+ def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ _get_treatments_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ _validate_last_impressions(client, )
+ assert self.factory._storages['impressions']._impressions.qsize() == 0
- # testing Dependency matcher
- assert client.get_treatment('somekey', 'dependency_test') == 'off'
- self._validate_last_impressions(client, ('dependency_test', 'somekey', 'off'))
+ def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ _get_treatments_with_config_by_flag_set(self.factory)
- # testing boolean matcher
- assert client.get_treatment('True', 'boolean_test') == 'on'
- self._validate_last_impressions(client, ('boolean_test', 'True', 'on'))
+ def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ _get_treatments_with_config_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ _validate_last_impressions(client, )
- # testing regex matcher
- assert client.get_treatment('abc4', 'regex_test') == 'on'
- self._validate_last_impressions(client, ('regex_test', 'abc4', 'on'))
+ def test_manager_methods(self):
+ """Test manager.split/splits."""
+ _manager_methods(self.factory)
- def test_get_treatment_with_config(self):
- """Test client.get_treatment_with_config()."""
- client = self.factory.client()
+ def test_track(self):
+ """Test client.track()."""
+ _track(self.factory)
- result = client.get_treatment_with_config('user1', 'sample_feature')
- assert result == ('on', '{"size":15,"test":20}')
- self._validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
+class InMemoryOldSpecIntegrationTests(object):
+ """Inmemory storage-based integration tests."""
- result = client.get_treatment_with_config('invalidKey', 'sample_feature')
- assert result == ('off', None)
- self._validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
+ def setup_method(self):
+ """Prepare storages with test data."""
- result = client.get_treatment_with_config('invalidKey', 'invalid_feature')
- assert result == ('control', None)
- self._validate_last_impressions(client)
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'split_old_spec.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+
+ split_changes = {
+ -1: data,
+ 1457726098069: {"splits": [], "till": 1457726098069, "since": 1457726098069}
+ }
- # testing a killed feature. No matter what the key, must return default treatment
- result = client.get_treatment_with_config('invalidKey', 'killed_feature')
- assert ('defTreatment', '{"size":15,"defTreatment":true}') == result
- self._validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ segment_employee = json.loads(flo.read())
- # testing ALL matcher
- result = client.get_treatment_with_config('invalidKey', 'all_feature')
- assert result == ('on', None)
- self._validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ segment_human = json.loads(flo.read())
+
+ segment_changes = {
+ ("employees", -1): segment_employee,
+ ("employees", 1457474612832): {"name": "employees","added": [],"removed": [],"since": 1457474612832,"till": 1457474612832},
+ ("human_beigns", -1): segment_human,
+ ("human_beigns", 1457102183278): {"name": "employees","added": [],"removed": [],"since": 1457102183278,"till": 1457102183278},
+ }
- def test_get_treatments(self):
- """Test client.get_treatments()."""
- client = self.factory.client()
+ split_backend_requests = Queue()
+ self.split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ {'auth_response': {'pushEnabled': False}}, True)
+ self.split_backend.start()
- result = client.get_treatments('user1', ['sample_feature'])
- assert len(result) == 1
- assert result['sample_feature'] == 'on'
- self._validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % self.split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % self.split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % self.split_backend.port(),
+ 'config': {'connectTimeout': 10000,
+ 'streamingEnabled': False,
+ 'impressionsMode': 'debug',
+ 'fallbackTreatments': FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')})
+ }
+ }
- result = client.get_treatments('invalidKey', ['sample_feature'])
- assert len(result) == 1
- assert result['sample_feature'] == 'off'
- self._validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
+ self.factory = get_factory('some_apikey', **kwargs)
+ self.factory.block_until_ready(1)
+ assert self.factory.ready
- result = client.get_treatments('invalidKey', ['invalid_feature'])
- assert len(result) == 1
- assert result['invalid_feature'] == 'control'
- self._validate_last_impressions(client)
+ def teardown_method(self):
+ """Shut down the factory."""
+ event = threading.Event()
+ self.factory.destroy(event)
+ event.wait()
+ self.split_backend.stop()
+ time.sleep(1)
- # testing a killed feature. No matter what the key, must return default treatment
- result = client.get_treatments('invalidKey', ['killed_feature'])
- assert len(result) == 1
- assert result['killed_feature'] == 'defTreatment'
- self._validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+ def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ _get_treatment(self.factory, True)
- # testing ALL matcher
- result = client.get_treatments('invalidKey', ['all_feature'])
- assert len(result) == 1
- assert result['all_feature'] == 'on'
- self._validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
+ def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ _get_treatment_with_config(self.factory)
- # testing multiple splitNames
+ def test_get_treatments(self):
+ _get_treatments(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
result = client.get_treatments('invalidKey', [
'all_feature',
'killed_feature',
@@ -420,7 +904,7 @@ def test_get_treatments(self):
assert result['killed_feature'] == 'defTreatment'
assert result['invalid_feature'] == 'control'
assert result['sample_feature'] == 'off'
- self._validate_last_impressions(
+ _validate_last_impressions(
client,
('all_feature', 'invalidKey', 'on'),
('killed_feature', 'invalidKey', 'defTreatment'),
@@ -429,36 +913,9 @@ def test_get_treatments(self):
def test_get_treatments_with_config(self):
"""Test client.get_treatments_with_config()."""
- client = self.factory.client()
-
- result = client.get_treatments_with_config('user1', ['sample_feature'])
- assert len(result) == 1
- assert result['sample_feature'] == ('on', '{"size":15,"test":20}')
- self._validate_last_impressions(client, ('sample_feature', 'user1', 'on'))
-
- result = client.get_treatments_with_config('invalidKey', ['sample_feature'])
- assert len(result) == 1
- assert result['sample_feature'] == ('off', None)
- self._validate_last_impressions(client, ('sample_feature', 'invalidKey', 'off'))
-
- result = client.get_treatments_with_config('invalidKey', ['invalid_feature'])
- assert len(result) == 1
- assert result['invalid_feature'] == ('control', None)
- self._validate_last_impressions(client)
-
- # testing a killed feature. No matter what the key, must return default treatment
- result = client.get_treatments_with_config('invalidKey', ['killed_feature'])
- assert len(result) == 1
- assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
- self._validate_last_impressions(client, ('killed_feature', 'invalidKey', 'defTreatment'))
-
- # testing ALL matcher
- result = client.get_treatments_with_config('invalidKey', ['all_feature'])
- assert len(result) == 1
- assert result['all_feature'] == ('on', None)
- self._validate_last_impressions(client, ('all_feature', 'invalidKey', 'on'))
-
+ _get_treatments_with_config(self.factory)
# testing multiple splitNames
+ client = self.factory.client()
result = client.get_treatments_with_config('invalidKey', [
'all_feature',
'killed_feature',
@@ -470,48 +927,229 @@ def test_get_treatments_with_config(self):
assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
assert result['invalid_feature'] == ('control', None)
assert result['sample_feature'] == ('off', None)
- self._validate_last_impressions(
+ _validate_last_impressions(
client,
('all_feature', 'invalidKey', 'on'),
('killed_feature', 'invalidKey', 'defTreatment'),
('sample_feature', 'invalidKey', 'off'),
)
- def test_manager_methods(self):
- """Test manager.split/splits."""
- manager = self.factory.manager()
- result = manager.split('all_feature')
- assert result.name == 'all_feature'
- assert result.traffic_type is None
- assert result.killed is False
- assert len(result.treatments) == 2
- assert result.change_number == 123
- assert result.configs == {}
-
- result = manager.split('killed_feature')
- assert result.name == 'killed_feature'
- assert result.traffic_type is None
- assert result.killed is True
- assert len(result.treatments) == 2
- assert result.change_number == 123
- assert result.configs['defTreatment'] == '{"size":15,"defTreatment":true}'
- assert result.configs['off'] == '{"size":15,"test":20}'
-
- result = manager.split('sample_feature')
- assert result.name == 'sample_feature'
- assert result.traffic_type is None
- assert result.killed is False
- assert len(result.treatments) == 2
- assert result.change_number == 123
- assert result.configs['on'] == '{"size":15,"test":20}'
+ def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ _get_treatments_by_flag_set(self.factory)
- assert len(manager.split_names()) == 7
- assert len(manager.splits()) == 7
+ def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ _get_treatments_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ _get_treatments_with_config_by_flag_set(self.factory)
+
+ def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ _get_treatments_with_config_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ def test_track(self):
+ """Test client.track()."""
+ _track(self.factory)
+
+ def test_manager_methods(self):
+ """Test manager.split/splits."""
+ _manager_methods(self.factory, True)
+
+class RedisIntegrationTests(object):
+ """Redis storage-based integration tests."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ redis_client = build(DEFAULT_CONFIG.copy())
+ split_storage = RedisSplitStorage(redis_client)
+ segment_storage = RedisSegmentStorage(redis_client)
+ rb_segment_storage = RedisRuleBasedSegmentsStorage(redis_client)
+
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ redis_client.set(split_storage._get_key(split['name']), json.dumps(split))
+ if split.get('sets') is not None:
+ for flag_set in split.get('sets'):
+ redis_client.sadd(split_storage._get_flag_set_key(flag_set), split['name'])
+ redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, data['ff']['t'])
+
+ for rbs in data['rbs']['d']:
+ redis_client.set(rb_segment_storage._get_key(rbs['name']), json.dumps(rbs))
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ redis_client.sadd(segment_storage._get_key(data['name']), *data['added'])
+ redis_client.set(segment_storage._get_till_key(data['name']), data['till'])
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ redis_client.sadd(segment_storage._get_key(data['name']), *data['added'])
+ redis_client.set(segment_storage._get_till_key(data['name']), data['till'])
+
+ telemetry_redis_storage = RedisTelemetryStorage(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducer(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': RedisImpressionsStorage(redis_client, metadata),
+ 'events': RedisEventsStorage(redis_client, metadata),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorder(redis_client.pipeline, impmanager, storages['events'],
+ storages['impressions'], telemetry_redis_storage, imp_counter=ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ events_queue = queue.Queue()
+ self.factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+ def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ _get_treatment(self.factory)
+
+ def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ _get_treatment_with_config(self.factory)
+
+ def test_get_treatments(self):
+ """Test client.get_treatments()."""
+ _get_treatments(self.factory)
+ client = self.factory.client()
+ # testing multiple splitNames
+ result = client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ _validate_last_impressions(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off')
+ )
+
+ def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ _get_treatment_with_config(self.factory)
+
+ def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ _get_treatments_with_config(self.factory)
+ client = self.factory.client()
+ # testing multiple splitNames
+ result = client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ _validate_last_impressions(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off'),
+ )
+
+ def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ _get_treatments_by_flag_set(self.factory)
+
+ def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ _get_treatments_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ _get_treatments_with_config_by_flag_set(self.factory)
+
+ def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ _get_treatments_with_config_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ def test_track(self):
+ """Test client.track()."""
+ _track(self.factory)
+
+ def test_manager_methods(self):
+ """Test manager.split/splits."""
+ _manager_methods(self.factory)
def teardown_method(self):
"""Clear redis cache."""
keys_to_delete = [
- "SPLITIO/python-1.2.3/some_ip/latency.sdk.getTreatment.bucket.0",
"SPLITIO.segment.human_beigns",
"SPLITIO.segment.employees.till",
"SPLITIO.split.sample_feature",
@@ -520,34 +1158,43 @@ def teardown_method(self):
"SPLITIO.split.all_feature",
"SPLITIO.split.whitelist_feature",
"SPLITIO.segment.employees",
- "SPLITIO/python-1.2.3/some_ip/latency.sdk.getTreatments.bucket.0",
"SPLITIO.split.regex_test",
"SPLITIO.segment.human_beigns.till",
"SPLITIO.split.boolean_test",
- "SPLITIO.split.dependency_test"
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.split.set.set1",
+ "SPLITIO.split.set.set2",
+ "SPLITIO.split.set.set3",
+ "SPLITIO.split.set.set4",
+ "SPLITIO.split.rbs_feature_flag",
+ "SPLITIO.rbsegments.till",
+ "SPLITIO.rbsegments.sample_rule_based_segment"
]
redis_client = RedisAdapter(StrictRedis())
for key in keys_to_delete:
redis_client.delete(key)
-
class RedisWithCacheIntegrationTests(RedisIntegrationTests):
"""Run the same tests as RedisIntegratioTests but with LRU/Expirable cache overlay."""
def setup_method(self):
"""Prepare storages with test data."""
metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
- redis_client = RedisAdapter(StrictRedis())
+ redis_client = build(DEFAULT_CONFIG.copy())
split_storage = RedisSplitStorage(redis_client, True)
segment_storage = RedisSegmentStorage(redis_client)
+ rb_segment_storage = RedisRuleBasedSegmentsStorage(redis_client)
split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
with open(split_fn, 'r') as flo:
data = json.loads(flo.read())
- for split in data['splits']:
+ for split in data['ff']['d']:
redis_client.set(split_storage._get_key(split['name']), json.dumps(split))
- redis_client.set(split_storage._SPLIT_TILL_KEY, data['till'])
+ redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, data['ff']['t'])
+
+ for rbs in data['rbs']['d']:
+ redis_client.set(rb_segment_storage._get_key(rbs['name']), json.dumps(rbs))
segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
with open(segment_fn, 'r') as flo:
@@ -561,24 +1208,194 @@ def setup_method(self):
redis_client.sadd(segment_storage._get_key(data['name']), *data['added'])
redis_client.set(segment_storage._get_till_key(data['name']), data['till'])
- self.factory = SplitFactory('some_api_key', { #pylint:disable=attribute-defined-outside-init
+ telemetry_redis_storage = RedisTelemetryStorage(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducer(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
'splits': split_storage,
'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
'impressions': RedisImpressionsStorage(redis_client, metadata),
'events': RedisEventsStorage(redis_client, metadata),
- 'telemetry': RedisTelemetryStorage(redis_client, metadata)
- }, True)
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorder(redis_client.pipeline, impmanager,
+ storages['events'], storages['impressions'], telemetry_redis_storage, imp_counter=ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ events_queue = queue.Queue()
+ self.factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+class LocalhostIntegrationTests(object): # pylint: disable=too-few-public-methods
+ """Client & Manager integration tests."""
+ def test_localhost_json_e2e(self):
+ """Instantiate a client with a JSON file and issue get_treatment() calls."""
+ self._update_temp_file(splits_json['splitChange2_1'])
+ filename = os.path.join(os.path.dirname(__file__), 'files', 'split_changes_temp.json')
+ self.factory = get_factory('localhost', config={'splitFile': filename})
+ self.factory.block_until_ready(1)
+ client = self.factory.client()
-class LocalhostIntegrationTests(object): #pylint: disable=too-few-public-methods
- """Client & Manager integration tests."""
+ # Tests 2
+ assert self.factory.manager().split_names() == ["SPLIT_1"]
+ assert client.get_treatment("key", "SPLIT_1") == 'off'
+
+ # Tests 1
+ self.factory._storages['splits'].update([], ['SPLIT_1'], -1)
+ self._update_temp_file(splits_json['splitChange1_1'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange1_2'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert client.get_treatment("key", "SPLIT_2", None) == 'off'
+
+ self._update_temp_file(splits_json['splitChange1_3'])
+ self._synchronize_now()
+
+ assert self.factory.manager().split_names() == ["SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_1", None) == 'control'
+ assert client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ # Tests 3
+ self.factory._storages['splits'].update([], ['SPLIT_1'], -1)
+ self._update_temp_file(splits_json['splitChange3_1'])
+ self._synchronize_now()
+
+ assert self.factory.manager().split_names() == ["SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange3_2'])
+ self._synchronize_now()
+
+ assert self.factory.manager().split_names() == ["SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_2", None) == 'off'
+
+ # Tests 4
+ self.factory._storages['splits'].update([], ['SPLIT_2'], -1)
+ self._update_temp_file(splits_json['splitChange4_1'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange4_2'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert client.get_treatment("key", "SPLIT_2", None) == 'off'
+
+ self._update_temp_file(splits_json['splitChange4_3'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_1", None) == 'control'
+ assert client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ # Tests 5
+ self.factory._storages['splits'].update([], ['SPLIT_1', 'SPLIT_2'], -1)
+ self._update_temp_file(splits_json['splitChange5_1'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange5_2'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ # Tests 6
+ self.factory._storages['splits'].update([], ['SPLIT_2'], -1)
+ self._update_temp_file(splits_json['splitChange6_1'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange6_2'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert client.get_treatment("key", "SPLIT_2", None) == 'off'
+
+ self._update_temp_file(splits_json['splitChange6_3'])
+ self._synchronize_now()
+
+ assert sorted(self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert client.get_treatment("key", "SPLIT_1", None) == 'control'
+ assert client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ # rule based segment test
+ self._update_temp_file(splits_json['splitChange7_1'])
+ self._synchronize_now()
+ assert client.get_treatment('bilal@split.io', 'rbs_feature_flag', {'email': 'bilal@split.io'}) == 'on'
+ assert client.get_treatment('mauro@split.io', 'rbs_feature_flag', {'email': 'mauro@split.io'}) == 'off'
+
+ def _update_temp_file(self, json_body):
+ f = open(os.path.join(os.path.dirname(__file__), 'files','split_changes_temp.json'), 'w')
+ f.write(json.dumps(json_body))
+ f.close()
+
+ def _synchronize_now(self):
+ filename = os.path.join(os.path.dirname(__file__), 'files', 'split_changes_temp.json')
+ self.factory._sync_manager._synchronizer._split_synchronizers._feature_flag_sync._filename = filename
+ self.factory._sync_manager._synchronizer._split_synchronizers._feature_flag_sync.synchronize_splits()
+
+ def test_incorrect_file_e2e(self):
+ """Test initialize factory with a incorrect file name."""
+ # TODO: secontion below is removed when legacu use BUR
+ # legacy and yaml
+ exception_raised = False
+ factory = None
+ try:
+ factory = get_factory('localhost', config={'splitFile': 'filename'})
+ except Exception as e:
+ exception_raised = True
+
+ assert(exception_raised)
+
+ # json using BUR
+ factory = get_factory('localhost', config={'splitFile': 'filename.json'})
+ exception_raised = False
+ try:
+ factory.block_until_ready(1)
+ except Exception as e:
+ exception_raised = True
+
+ assert(exception_raised)
+
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
def test_localhost_e2e(self):
"""Instantiate a client with a YAML file and issue get_treatment() calls."""
filename = os.path.join(os.path.dirname(__file__), 'files', 'file2.yaml')
factory = get_factory('localhost', config={'splitFile': filename})
factory.block_until_ready()
- time.sleep(1)
client = factory.client()
assert client.get_treatment_with_config('key', 'my_feature') == ('on', '{"desc" : "this applies only to ON treatment"}')
assert client.get_treatment_with_config('only_key', 'my_feature') == (
@@ -599,3 +1416,3945 @@ def test_localhost_e2e(self):
assert manager.split('other_feature').configs == {}
assert manager.split('other_feature_2').configs == {}
assert manager.split('other_feature_3').configs == {}
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
+
+ def test_fallback_treatments(self):
+ """Instantiate a client with a JSON file and issue get_treatment() calls."""
+ self._update_temp_file(splits_json['splitChange2_1'])
+ filename = os.path.join(os.path.dirname(__file__), 'files', 'split_changes_temp.json')
+ factory = get_factory('localhost',
+ config={
+ 'splitFile': filename,
+ 'fallbackTreatments': FallbackTreatmentsConfiguration("on-global", {'fallback_feature': "on-local"})
+ }
+ )
+ factory.block_until_ready(1)
+ client = factory.client()
+
+ assert client.get_treatment("key", "feature") == "on-global"
+ assert client.get_treatment("key", "fallback_feature") == "on-local"
+
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
+
+
+class PluggableIntegrationTests(object):
+ """Pluggable storage-based integration tests."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ self.pluggable_storage_adapter = StorageMockAdapter()
+ split_storage = PluggableSplitStorage(self.pluggable_storage_adapter)
+ segment_storage = PluggableSegmentStorage(self.pluggable_storage_adapter)
+ rb_segment_storage = PluggableRuleBasedSegmentsStorage(self.pluggable_storage_adapter)
+
+ telemetry_pluggable_storage = PluggableTelemetryStorage(self.pluggable_storage_adapter, metadata)
+ telemetry_producer = TelemetryStorageProducer(telemetry_pluggable_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': PluggableImpressionsStorage(self.pluggable_storage_adapter, metadata),
+ 'events': PluggableEventsStorage(self.pluggable_storage_adapter, metadata),
+ 'telemetry': telemetry_pluggable_storage
+ }
+
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorder(impmanager, storages['events'],
+ storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ events_queue = queue.Queue()
+ self.factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ RedisManager(PluggableSynchronizer()),
+ sdk_ready_flag=None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+ # Adding data to storage
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ self.pluggable_storage_adapter.set(split_storage._prefix.format(feature_flag_name=split['name']), split)
+ if split.get('sets') is not None:
+ for flag_set in split.get('sets'):
+ self.pluggable_storage_adapter.push_items(split_storage._flag_set_prefix.format(flag_set=flag_set), split['name'])
+ self.pluggable_storage_adapter.set(split_storage._feature_flag_till_prefix, data['ff']['t'])
+
+ for rbs in data['rbs']['d']:
+ self.pluggable_storage_adapter.set(rb_segment_storage._prefix.format(segment_name=rbs['name']), rbs)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+
+ def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ _get_treatment(self.factory)
+
+ def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ _get_treatment_with_config(self.factory)
+
+ def test_get_treatments(self):
+ """Test client.get_treatments()."""
+ _get_treatments(self.factory)
+ client = self.factory.client()
+ # testing multiple splitNames
+ result = client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ _validate_last_impressions(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off')
+ )
+
+ def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ _get_treatment_with_config(self.factory)
+
+ def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ _get_treatments_with_config(self.factory)
+ client = self.factory.client()
+ # testing multiple splitNames
+ result = client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ _validate_last_impressions(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off'),
+ )
+
+ def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ _get_treatments_by_flag_set(self.factory)
+
+ def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ _get_treatments_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ _get_treatments_with_config_by_flag_set(self.factory)
+
+ def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ _get_treatments_with_config_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ _validate_last_impressions(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ def test_track(self):
+ """Test client.track()."""
+ _track(self.factory)
+
+ def test_manager_methods(self):
+ """Test manager.split/splits."""
+ _manager_methods(self.factory)
+
+ def teardown_method(self):
+ """Clear pluggable cache."""
+ keys_to_delete = [
+ "SPLITIO.segment.human_beigns",
+ "SPLITIO.segment.employees.till",
+ "SPLITIO.split.sample_feature",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.killed_feature",
+ "SPLITIO.split.all_feature",
+ "SPLITIO.split.whitelist_feature",
+ "SPLITIO.segment.employees",
+ "SPLITIO.split.regex_test",
+ "SPLITIO.segment.human_beigns.till",
+ "SPLITIO.split.boolean_test",
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.split.set.set1",
+ "SPLITIO.split.set.set2",
+ "SPLITIO.split.set.set3",
+ "SPLITIO.split.set.set4",
+ "SPLITIO.split.rbs_feature_flag",
+ "SPLITIO.rbsegments.till",
+ "SPLITIO.rbsegments.sample_rule_based_segment"
+ ]
+ for key in keys_to_delete:
+ self.pluggable_storage_adapter.delete(key)
+
+class PluggableOptimizedIntegrationTests(object):
+ """Pluggable storage-based integration tests."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ self.pluggable_storage_adapter = StorageMockAdapter()
+ split_storage = PluggableSplitStorage(self.pluggable_storage_adapter)
+ segment_storage = PluggableSegmentStorage(self.pluggable_storage_adapter)
+ rb_segment_storage = PluggableRuleBasedSegmentsStorage(self.pluggable_storage_adapter)
+
+ telemetry_pluggable_storage = PluggableTelemetryStorage(self.pluggable_storage_adapter, metadata)
+ telemetry_producer = TelemetryStorageProducer(telemetry_pluggable_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': PluggableImpressionsStorage(self.pluggable_storage_adapter, metadata),
+ 'events': PluggableEventsStorage(self.pluggable_storage_adapter, metadata),
+ 'telemetry': telemetry_pluggable_storage
+ }
+
+ impmanager = ImpressionsManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorder(impmanager, storages['events'],
+ storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ events_queue = queue.Queue()
+ self.factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ RedisManager(PluggableSynchronizer()),
+ sdk_ready_flag=None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+ # Adding data to storage
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ if split.get('sets') is not None:
+ for flag_set in split.get('sets'):
+ self.pluggable_storage_adapter.push_items(split_storage._flag_set_prefix.format(flag_set=flag_set), split['name'])
+ self.pluggable_storage_adapter.set(split_storage._prefix.format(feature_flag_name=split['name']), split)
+ self.pluggable_storage_adapter.set(split_storage._feature_flag_till_prefix, data['ff']['t'])
+
+ for rbs in data['rbs']['d']:
+ self.pluggable_storage_adapter.set(rb_segment_storage._prefix.format(segment_name=rbs['name']), rbs)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+
+ def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ _get_treatment(self.factory)
+ client = self.factory.client()
+
+ assert client.get_treatment('user1', 'sample_feature') == 'on'
+ client.get_treatment('user1', 'sample_feature')
+ client.get_treatment('user1', 'sample_feature')
+ client.get_treatment('user1', 'sample_feature')
+ assert len(self.pluggable_storage_adapter._keys['SPLITIO.impressions']) == 1
+
+ def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ _get_treatment_with_config(self.factory)
+
+ def test_get_treatments(self):
+ """Test client.get_treatments()."""
+ _get_treatments(self.factory)
+
+ def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ _get_treatment_with_config(self.factory)
+
+ def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ _get_treatments_with_config(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ _validate_last_impressions(client,)
+
+ def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ _get_treatments_by_flag_set(self.factory)
+
+ def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ _get_treatments_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ _validate_last_impressions(client, )
+
+ def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ _get_treatments_with_config_by_flag_set(self.factory)
+
+ def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ _get_treatments_with_config_by_flag_sets(self.factory)
+ client = self.factory.client()
+ result = client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ _validate_last_impressions(client, )
+
+ def test_track(self):
+ """Test client.track()."""
+ _track(self.factory)
+
+ def test_manager_methods(self):
+ """Test manager.split/splits."""
+ _manager_methods(self.factory)
+
+ def teardown_method(self):
+ """Clear pluggable cache."""
+ keys_to_delete = [
+ "SPLITIO.segment.human_beigns",
+ "SPLITIO.segment.employees.till",
+ "SPLITIO.split.sample_feature",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.killed_feature",
+ "SPLITIO.split.all_feature",
+ "SPLITIO.split.whitelist_feature",
+ "SPLITIO.segment.employees",
+ "SPLITIO.split.regex_test",
+ "SPLITIO.segment.human_beigns.till",
+ "SPLITIO.split.boolean_test",
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.split.set.set1",
+ "SPLITIO.split.set.set2",
+ "SPLITIO.split.set.set3",
+ "SPLITIO.split.set.set4",
+ "SPLITIO.split.rbs_feature_flag",
+ "SPLITIO.rbsegments.till",
+ "SPLITIO.rbsegments.sample_rule_based_segment"
+ ]
+ for key in keys_to_delete:
+ self.pluggable_storage_adapter.delete(key)
+
+class PluggableNoneIntegrationTests(object):
+ """Pluggable storage-based integration tests."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ self.pluggable_storage_adapter = StorageMockAdapter()
+ split_storage = PluggableSplitStorage(self.pluggable_storage_adapter)
+ segment_storage = PluggableSegmentStorage(self.pluggable_storage_adapter)
+ rb_segment_storage = PluggableRuleBasedSegmentsStorage(self.pluggable_storage_adapter)
+ telemetry_pluggable_storage = PluggableTelemetryStorage(self.pluggable_storage_adapter, metadata)
+ telemetry_producer = TelemetryStorageProducer(telemetry_pluggable_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': PluggableImpressionsStorage(self.pluggable_storage_adapter, metadata),
+ 'events': PluggableEventsStorage(self.pluggable_storage_adapter, metadata),
+ 'telemetry': telemetry_pluggable_storage
+ }
+ imp_counter = ImpressionsCounter()
+ unique_keys_tracker = UniqueKeysTracker()
+ unique_keys_synchronizer, clear_filter_sync, self.unique_keys_task, \
+ clear_filter_task, impressions_count_sync, impressions_count_task, \
+ imp_strategy, none_strategy = set_classes('PLUGGABLE', ImpressionsMode.NONE, self.pluggable_storage_adapter, imp_counter, unique_keys_tracker)
+ impmanager = ImpressionsManager(imp_strategy, none_strategy, telemetry_runtime_producer) # no listener
+
+ recorder = StandardRecorder(impmanager, storages['events'],
+ storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, unique_keys_tracker=unique_keys_tracker, imp_counter=imp_counter)
+
+ synchronizers = SplitSynchronizers(None, None, None, None,
+ impressions_count_sync,
+ None,
+ unique_keys_synchronizer,
+ clear_filter_sync
+ )
+
+ tasks = SplitTasks(None, None, None, None,
+ impressions_count_task,
+ None,
+ self.unique_keys_task,
+ clear_filter_task
+ )
+
+ synchronizer = RedisSynchronizer(synchronizers, tasks)
+
+ manager = RedisManager(synchronizer)
+ manager.start()
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ events_queue = queue.Queue()
+ self.factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ manager,
+ sdk_ready_flag=None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+ # Adding data to storage
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ if split.get('sets') is not None:
+ for flag_set in split.get('sets'):
+ self.pluggable_storage_adapter.push_items(split_storage._flag_set_prefix.format(flag_set=flag_set), split['name'])
+ self.pluggable_storage_adapter.set(split_storage._prefix.format(feature_flag_name=split['name']), split)
+ self.pluggable_storage_adapter.set(split_storage._feature_flag_till_prefix, data['ff']['t'])
+
+ for rbs in data['rbs']['d']:
+ self.pluggable_storage_adapter.set(rb_segment_storage._prefix.format(segment_name=rbs['name']), rbs)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+ self.client = self.factory.client()
+
+ def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ _get_treatment(self.factory)
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+
+ def test_get_treatments(self):
+ """Test client.get_treatments()."""
+ _get_treatments(self.factory)
+ result = self.client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+
+ def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ _get_treatments_with_config(self.factory)
+ result = self.client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+
+ def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ _get_treatments_by_flag_set(self.factory)
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+
+ def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ _get_treatments_by_flag_sets(self.factory)
+ result = self.client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+
+ def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ _get_treatments_with_config_by_flag_set(self.factory)
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+
+ def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ _get_treatments_with_config_by_flag_sets(self.factory)
+ result = self.client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+
+ def test_track(self):
+ """Test client.track()."""
+ _track(self.factory)
+
+ def test_mtk(self):
+ self.client.get_treatment('user1', 'sample_feature')
+ self.client.get_treatment('invalidKey', 'sample_feature')
+ self.client.get_treatment('invalidKey2', 'sample_feature')
+ self.client.get_treatment('user22', 'invalidFeature')
+ self.unique_keys_task._task.force_execution()
+ time.sleep(1)
+
+ assert(json.loads(self.pluggable_storage_adapter._keys['SPLITIO.uniquekeys'][0])["f"] =="sample_feature")
+ assert(json.loads(self.pluggable_storage_adapter._keys['SPLITIO.uniquekeys'][0])["ks"].sort() ==
+ ["invalidKey2", "invalidKey", "user1"].sort())
+ event = threading.Event()
+ self.factory.destroy(event)
+ event.wait()
+
+class InMemoryImpressionsToggleIntegrationTests(object):
+ """InMemory storage-based impressions toggle integration tests."""
+
+ def test_optimized(self):
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+
+ split_storage.update([splits.from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorage(events_queue),
+ 'impressions': InMemoryImpressionStorage(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorage(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorder(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, None, UniqueKeysTracker(), ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ except:
+ pass
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert client.get_treatment('user1', 'SPLIT_2') == 'on'
+ assert client.get_treatment('user1', 'SPLIT_3') == 'on'
+ imp_storage = client._factory._get_storage('impressions')
+ impressions = imp_storage.pop_many(10)
+ assert len(impressions) == 2
+ assert impressions[0].feature_name == 'SPLIT_1'
+ assert impressions[1].feature_name == 'SPLIT_2'
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_3': {'user1'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 1
+ assert imps_count[0].feature == 'SPLIT_3'
+ assert imps_count[0].count == 1
+ assert client.get_treatment('user1', 'incorrect_feature') == 'on-global'
+ assert client.get_treatment('user1', 'fallback_feature') == 'on-local'
+
+ def test_debug(self):
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+
+ split_storage.update([splits.from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorage(events_queue),
+ 'impressions': InMemoryImpressionStorage(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorage(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorder(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, None, UniqueKeysTracker(), ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTask(events_manager.notify_internal_event, events_queue)
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ internal_events_task.start()
+ except:
+ pass
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert client.get_treatment('user1', 'SPLIT_2') == 'on'
+ assert client.get_treatment('user1', 'SPLIT_3') == 'on'
+ imp_storage = client._factory._get_storage('impressions')
+ impressions = imp_storage.pop_many(10)
+ assert len(impressions) == 2
+ assert impressions[0].feature_name == 'SPLIT_1'
+ assert impressions[1].feature_name == 'SPLIT_2'
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_3': {'user1'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 1
+ assert imps_count[0].feature == 'SPLIT_3'
+ assert imps_count[0].count == 1
+ assert client.get_treatment('user1', 'incorrect_feature') == 'on-global'
+ assert client.get_treatment('user1', 'fallback_feature') == 'on-local'
+
+ def test_none(self):
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+
+ split_storage.update([splits.from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorage(events_queue),
+ 'impressions': InMemoryImpressionStorage(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorage(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyNoneMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorder(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, None, UniqueKeysTracker(), ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTask(events_manager.notify_internal_event, events_queue)
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_queue,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ internal_events_task.start()
+ except:
+ pass
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert client.get_treatment('user1', 'SPLIT_2') == 'on'
+ assert client.get_treatment('user1', 'SPLIT_3') == 'on'
+ imp_storage = client._factory._get_storage('impressions')
+ impressions = imp_storage.pop_many(10)
+ assert len(impressions) == 0
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_1': {'user1'}, 'SPLIT_2': {'user1'}, 'SPLIT_3': {'user1'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 3
+ assert imps_count[0].feature == 'SPLIT_1'
+ assert imps_count[0].count == 1
+ assert imps_count[1].feature == 'SPLIT_2'
+ assert imps_count[1].count == 1
+ assert imps_count[2].feature == 'SPLIT_3'
+ assert imps_count[2].count == 1
+ assert client.get_treatment('user1', 'incorrect_feature') == 'on-global'
+ assert client.get_treatment('user1', 'fallback_feature') == 'on-local'
+
+class RedisImpressionsToggleIntegrationTests(object):
+ """Run impression toggle tests for Redis."""
+
+ def test_optimized(self):
+ """Prepare storages with test data."""
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ redis_client = build(DEFAULT_CONFIG.copy())
+ split_storage = RedisSplitStorage(redis_client, True)
+ segment_storage = RedisSegmentStorage(redis_client)
+
+ redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][0]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][0]))
+ redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][1]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][1]))
+ redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][2]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][2]))
+ redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, -1)
+
+ telemetry_redis_storage = RedisTelemetryStorage(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducer(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': RedisRuleBasedSegmentsStorage(redis_client),
+ 'impressions': RedisImpressionsStorage(redis_client, metadata),
+ 'events': RedisEventsStorage(redis_client, metadata),
+ }
+ impmanager = ImpressionsManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorder(redis_client.pipeline, impmanager,
+ storages['events'], storages['impressions'], telemetry_redis_storage, unique_keys_tracker=UniqueKeysTracker(), imp_counter=ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ events_queue = queue.Queue()
+ factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert client.get_treatment('user2', 'SPLIT_2') == 'on'
+ assert client.get_treatment('user3', 'SPLIT_3') == 'on'
+ time.sleep(0.2)
+
+ imp_storage = factory._storages['impressions']
+ impressions = []
+ while True:
+ impression = redis_client.lpop(imp_storage.IMPRESSIONS_QUEUE_KEY)
+ if impression is None:
+ break
+ impressions.append(json.loads(impression))
+
+ assert len(impressions) == 2
+ assert impressions[0]['i']['f'] == 'SPLIT_1'
+ assert impressions[1]['i']['f'] == 'SPLIT_2'
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_3': {'user3'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 1
+ assert imps_count[0].feature == 'SPLIT_3'
+ assert imps_count[0].count == 1
+ assert client.get_treatment('user1', 'incorrect_feature') == 'on-global'
+ assert client.get_treatment('user1', 'fallback_feature') == 'on-local'
+ self.clear_cache()
+ client.destroy()
+
+ def test_debug(self):
+ """Prepare storages with test data."""
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ redis_client = build(DEFAULT_CONFIG.copy())
+ split_storage = RedisSplitStorage(redis_client, True)
+ segment_storage = RedisSegmentStorage(redis_client)
+
+ redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][0]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][0]))
+ redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][1]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][1]))
+ redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][2]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][2]))
+ redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, -1)
+
+ telemetry_redis_storage = RedisTelemetryStorage(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducer(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': RedisRuleBasedSegmentsStorage(redis_client),
+ 'impressions': RedisImpressionsStorage(redis_client, metadata),
+ 'events': RedisEventsStorage(redis_client, metadata),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorder(redis_client.pipeline, impmanager,
+ storages['events'], storages['impressions'], telemetry_redis_storage, unique_keys_tracker=UniqueKeysTracker(), imp_counter=ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ queue.Queue(),
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert client.get_treatment('user2', 'SPLIT_2') == 'on'
+ assert client.get_treatment('user3', 'SPLIT_3') == 'on'
+ time.sleep(0.2)
+
+ imp_storage = factory._storages['impressions']
+ impressions = []
+ while True:
+ impression = redis_client.lpop(imp_storage.IMPRESSIONS_QUEUE_KEY)
+ if impression is None:
+ break
+ impressions.append(json.loads(impression))
+
+ assert len(impressions) == 2
+ assert impressions[0]['i']['f'] == 'SPLIT_1'
+ assert impressions[1]['i']['f'] == 'SPLIT_2'
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_3': {'user3'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 1
+ assert imps_count[0].feature == 'SPLIT_3'
+ assert imps_count[0].count == 1
+ assert client.get_treatment('user1', 'incorrect_feature') == 'on-global'
+ assert client.get_treatment('user1', 'fallback_feature') == 'on-local'
+ self.clear_cache()
+ client.destroy()
+
+ def test_none(self):
+ """Prepare storages with test data."""
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ redis_client = build(DEFAULT_CONFIG.copy())
+ split_storage = RedisSplitStorage(redis_client, True)
+ segment_storage = RedisSegmentStorage(redis_client)
+
+ redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][0]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][0]))
+ redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][1]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][1]))
+ redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][2]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][2]))
+ redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, -1)
+
+ telemetry_redis_storage = RedisTelemetryStorage(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducer(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': RedisRuleBasedSegmentsStorage(redis_client),
+ 'impressions': RedisImpressionsStorage(redis_client, metadata),
+ 'events': RedisEventsStorage(redis_client, metadata),
+ }
+ impmanager = ImpressionsManager(StrategyNoneMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorder(redis_client.pipeline, impmanager,
+ storages['events'], storages['impressions'], telemetry_redis_storage, unique_keys_tracker=UniqueKeysTracker(), imp_counter=ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ queue.Queue(),
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(FallbackTreatment("on-global"), {'fallback_feature': FallbackTreatment("on-local", '{"prop":"val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert client.get_treatment('user2', 'SPLIT_2') == 'on'
+ assert client.get_treatment('user3', 'SPLIT_3') == 'on'
+ time.sleep(0.2)
+
+ imp_storage = factory._storages['impressions']
+ impressions = []
+ while True:
+ impression = redis_client.lpop(imp_storage.IMPRESSIONS_QUEUE_KEY)
+ if impression is None:
+ break
+ impressions.append(json.loads(impression))
+
+ assert len(impressions) == 0
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_1': {'user1'}, 'SPLIT_2': {'user2'}, 'SPLIT_3': {'user3'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 3
+ assert imps_count[0].feature == 'SPLIT_1'
+ assert imps_count[0].count == 1
+ assert imps_count[1].feature == 'SPLIT_2'
+ assert imps_count[1].count == 1
+ assert imps_count[2].feature == 'SPLIT_3'
+ assert imps_count[2].count == 1
+ assert client.get_treatment('user1', 'incorrect_feature') == 'on-global'
+ assert client.get_treatment('user1', 'fallback_feature') == 'on-local'
+ self.clear_cache()
+ client.destroy()
+
+ def clear_cache(self):
+ """Clear redis cache."""
+ keys_to_delete = [
+ "SPLITIO.split.SPLIT_3",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.SPLIT_2",
+ "SPLITIO.split.SPLIT_1",
+ "SPLITIO.telemetry.latencies"
+ ]
+
+ redis_client = RedisAdapter(StrictRedis())
+ for key in keys_to_delete:
+ redis_client.delete(key)
+
+class InMemoryEventsNotificationTests(object):
+ """Inmemory storage-based events notification tests."""
+
+ ready_flag = False
+ timeout_flag = False
+
+ def test_sdk_ready(self):
+ """Prepare storages with test data."""
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ split_storage.update([splits.from_raw(split)], [], 0)
+
+ for rbs in data['rbs']['d']:
+ rb_segment_storage.update([rule_based_segments.from_raw(rbs)], [], 0)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ segment_storage.put(segments.from_raw(data))
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ segment_storage.put(segments.from_raw(data))
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': InMemoryImpressionStorage(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorage(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorder(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTask(events_manager.notify_internal_event, events_queue)
+
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ internal_events_task.start()
+ except:
+ pass
+
+ client = factory.client()
+ client.on(SdkEvent.SDK_READY, self._ready_callback)
+ factory.block_until_ready(5)
+ assert self.ready_flag
+
+ """Shut down the factory."""
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
+
+ def test_sdk_ready_fire_later(self):
+ """Prepare storages with test data."""
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ split_storage.update([splits.from_raw(split)], [], 0)
+
+ for rbs in data['rbs']['d']:
+ rb_segment_storage.update([rule_based_segments.from_raw(rbs)], [], 0)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ segment_storage.put(segments.from_raw(data))
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ segment_storage.put(segments.from_raw(data))
+
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': InMemoryImpressionStorage(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorage(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorder(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+ events_manager = EventsManager(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTask(events_manager.notify_internal_event, events_queue)
+
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactory('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ internal_events_task.start()
+ except:
+ pass
+
+ client = factory.client()
+ factory.block_until_ready(5)
+
+ assert client.get_treatment('user1', 'sample_feature', evaluation_options=EvaluationOptions({"prop": "value"})) == 'on'
+
+ self.ready_flag = False
+ client.on(SdkEvent.SDK_READY, self._ready_callback)
+ assert self.ready_flag
+
+ """Shut down the factory."""
+ event = threading.Event()
+ factory.destroy(event)
+ event.wait()
+
+ def _ready_callback(self, metadata):
+ self.ready_flag = True
+
+ def _timeout_callback(self, metadata):
+ self.timeout_flag = True
+
+class InMemoryEventsNotificationAsyncTests(object):
+ """Inmemory storage-based events notification tests."""
+
+ ready_flag = False
+ timeout_flag = False
+
+ @pytest.mark.asyncio
+ async def test_sdk_ready(self):
+ """Prepare storages with test data."""
+ events_queue = asyncio.Queue()
+ split_storage = InMemorySplitStorageAsync(events_queue)
+ segment_storage = InMemorySegmentStorageAsync(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(events_queue)
+
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await split_storage.update([splits.from_raw(split)], [], 0)
+
+ for rbs in data['rbs']['d']:
+ await rb_segment_storage.update([rule_based_segments.from_raw(rbs)], [], 0)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await segment_storage.put(segments.from_raw(data))
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await segment_storage.put(segments.from_raw(data))
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': InMemoryImpressionStorageAsync(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorageAsync(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorderAsync(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTaskAsync(events_manager.notify_internal_event, events_queue)
+
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ internal_events_task.start()
+ except:
+ pass
+
+ client = factory.client()
+ await client.on(SdkEvent.SDK_READY, self._ready_callback)
+ await factory.block_until_ready(5)
+ assert self.ready_flag
+
+ """Shut down the factory."""
+ await internal_events_task.stop()
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_sdk_ready_fire_later(self):
+ """Prepare storages with test data."""
+ events_queue = asyncio.Queue()
+ split_storage = InMemorySplitStorageAsync(events_queue)
+ segment_storage = InMemorySegmentStorageAsync(events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(events_queue)
+
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await split_storage.update([splits.from_raw(split)], [], 0)
+
+ for rbs in data['rbs']['d']:
+ await rb_segment_storage.update([rule_based_segments.from_raw(rbs)], [], 0)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await segment_storage.put(segments.from_raw(data))
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await segment_storage.put(segments.from_raw(data))
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': InMemoryImpressionStorageAsync(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorageAsync(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorderAsync(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+ internal_events_task = EventsTaskAsync(events_manager.notify_internal_event, events_queue)
+
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ internal_events_task.start()
+ except:
+ pass
+
+ client = factory.client()
+ await factory.block_until_ready(5)
+ await client.on(SdkEvent.SDK_READY, self._ready_callback)
+
+ """Shut down the factory."""
+ await internal_events_task.stop()
+ await factory.destroy()
+
+ async def _ready_callback(self, metadata):
+ self.ready_flag = True
+
+ async def _timeout_callback(self, metadata):
+ self.timeout_flag = True
+
+class InMemoryIntegrationAsyncTests(object):
+ """Inmemory storage-based integration tests."""
+
+ def setup_method(self):
+ self.setup_task = asyncio.get_event_loop().create_task(self._setup_method())
+
+ async def _setup_method(self):
+ """Prepare storages with test data."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await split_storage.update([splits.from_raw(split)], [], -1)
+
+ for rbs in data['rbs']['d']:
+ await rb_segment_storage.update([rule_based_segments.from_raw(rbs)], [], 0)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await segment_storage.put(segments.from_raw(data))
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await segment_storage.put(segments.from_raw(data))
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': InMemoryImpressionStorageAsync(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorageAsync(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorderAsync(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ self.factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ except:
+ pass
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(self.factory).ready = ready_property
+
+ @pytest.mark.asyncio
+ async def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ await _get_treatment_async(self.factory)
+
+ @pytest.mark.asyncio
+ async def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ await _get_treatment_with_config_async(self.factory)
+
+ @pytest.mark.asyncio
+ async def test_get_treatments(self):
+ await _get_treatments_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ await _validate_last_impressions_async(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off')
+ )
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ await _get_treatments_with_config_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ await _validate_last_impressions_async(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off'),
+ )
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ await _get_treatments_by_flag_set_async(self.factory)
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ await _get_treatments_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ await _get_treatments_with_config_by_flag_set_async(self.factory)
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ await _get_treatments_with_config_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+
+ @pytest.mark.asyncio
+ async def test_track(self):
+ """Test client.track()."""
+ await _track_async(self.factory)
+
+ @pytest.mark.asyncio
+ async def test_manager_methods(self):
+ """Test manager.split/splits."""
+ await _manager_methods_async(self.factory)
+ await self.factory.destroy()
+
+class InMemoryOptimizedIntegrationAsyncTests(object):
+ """Inmemory storage-based integration tests."""
+
+ def setup_method(self):
+ self.setup_task = asyncio.get_event_loop().create_task(self._setup_method())
+
+ async def _setup_method(self):
+ """Prepare storages with test data."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ rb_segment_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await split_storage.update([splits.from_raw(split)], [], -1)
+
+ for rbs in data['rbs']['d']:
+ await rb_segment_storage.update([rule_based_segments.from_raw(rbs)], [], 0)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await segment_storage.put(segments.from_raw(data))
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await segment_storage.put(segments.from_raw(data))
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': InMemoryImpressionStorageAsync(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorageAsync(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorderAsync(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer,
+ imp_counter = ImpressionsCounter())
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ self.factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ except:
+ pass
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(self.factory).ready = ready_property
+
+ @pytest.mark.asyncio
+ async def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ await _get_treatment_async(self.factory)
+
+ @pytest.mark.asyncio
+ async def test_get_treatments(self):
+ """Test client.get_treatments()."""
+ await _get_treatments_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ assert self.factory._storages['impressions']._impressions.qsize() == 0
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ await _get_treatments_with_config_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ await _validate_last_impressions_async(client,)
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ await _get_treatments_by_flag_set_async(self.factory)
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ await _get_treatments_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ await _validate_last_impressions_async(client, )
+ assert self.factory._storages['impressions']._impressions.qsize() == 0
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ await _get_treatments_with_config_by_flag_set_async(self.factory)
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ await _get_treatments_with_config_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ await _validate_last_impressions_async(client, )
+
+ @pytest.mark.asyncio
+ async def test_manager_methods(self):
+ """Test manager.split/splits."""
+ await _manager_methods_async(self.factory)
+
+ @pytest.mark.asyncio
+ async def test_track(self):
+ """Test client.track()."""
+ await _track_async(self.factory)
+ await self.factory.destroy()
+
+class InMemoryOldSpecIntegrationAsyncTests(object):
+ """Inmemory storage-based integration tests."""
+
+ def setup_method(self):
+ self.setup_task = asyncio.get_event_loop().create_task(self._setup_method())
+
+ async def _setup_method(self):
+ """Prepare storages with test data."""
+
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'split_old_spec.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+
+ split_changes = {
+ -1: data,
+ 1457726098069: {"splits": [], "till": 1457726098069, "since": 1457726098069}
+ }
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ segment_employee = json.loads(flo.read())
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ segment_human = json.loads(flo.read())
+
+ segment_changes = {
+ ("employees", -1): segment_employee,
+ ("employees", 1457474612832): {"name": "employees","added": [],"removed": [],"since": 1457474612832,"till": 1457474612832},
+ ("human_beigns", -1): segment_human,
+ ("human_beigns", 1457102183278): {"name": "employees","added": [],"removed": [],"since": 1457102183278,"till": 1457102183278},
+ }
+
+ split_backend_requests = Queue()
+ self.split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ {'auth_response': {'pushEnabled': False}}, True)
+ self.split_backend.start()
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % self.split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % self.split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % self.split_backend.port(),
+ 'config': {'connectTimeout': 10000,
+ 'streamingEnabled': False,
+ 'impressionsMode': 'debug',
+ 'fallbackTreatments': FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')})
+ }
+ }
+
+ self.factory = await get_factory_async('some_apikey', **kwargs)
+ await self.factory.block_until_ready(1)
+ assert self.factory.ready
+
+ @pytest.mark.asyncio
+ async def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ await self.setup_task
+ await _get_treatment_async(self.factory, True)
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ await self.setup_task
+ await _get_treatment_with_config_async(self.factory)
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments(self):
+ await self.setup_task
+ await _get_treatments_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ await _validate_last_impressions_async(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off')
+ )
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ await self.setup_task
+ await _get_treatments_with_config_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ await _validate_last_impressions_async(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off'),
+ )
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_by_flag_set_async(self.factory)
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_set_async(self.factory)
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_track(self):
+ """Test client.track()."""
+ await self.setup_task
+ await _track_async(self.factory)
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_manager_methods(self):
+ """Test manager.split/splits."""
+ await self.setup_task
+ await _manager_methods_async(self.factory, True)
+ await self.factory.destroy()
+ self.split_backend.stop()
+
+class RedisIntegrationAsyncTests(object):
+ """Redis storage-based integration tests."""
+
+ def setup_method(self):
+ self.setup_task = asyncio.get_event_loop().create_task(self._setup_method())
+
+ async def _setup_method(self):
+ """Prepare storages with test data."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ redis_client = await build_async(DEFAULT_CONFIG.copy())
+ await self._clear_cache(redis_client)
+
+ split_storage = RedisSplitStorageAsync(redis_client)
+ segment_storage = RedisSegmentStorageAsync(redis_client)
+ rb_segment_storage = RedisRuleBasedSegmentsStorageAsync(redis_client)
+
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await redis_client.set(split_storage._get_key(split['name']), json.dumps(split))
+ if split.get('sets') is not None:
+ for flag_set in split.get('sets'):
+ await redis_client.sadd(split_storage._get_flag_set_key(flag_set), split['name'])
+ await redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, data['ff']['t'])
+
+ for rbs in data['rbs']['d']:
+ await redis_client.set(rb_segment_storage._get_key(rbs['name']), json.dumps(rbs))
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await redis_client.sadd(segment_storage._get_key(data['name']), *data['added'])
+ await redis_client.set(segment_storage._get_till_key(data['name']), data['till'])
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await redis_client.sadd(segment_storage._get_key(data['name']), *data['added'])
+ await redis_client.set(segment_storage._get_till_key(data['name']), data['till'])
+
+ telemetry_redis_storage = await RedisTelemetryStorageAsync.create(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_redis_storage)
+ telemetry_submitter = RedisTelemetrySubmitterAsync(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': RedisImpressionsStorageAsync(redis_client, metadata),
+ 'events': RedisEventsStorageAsync(redis_client, metadata),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorderAsync(redis_client.pipeline, impmanager, storages['events'],
+ storages['impressions'], telemetry_redis_storage, imp_counter=ImpressionsCounter())
+ self.factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ telemetry_submitter=telemetry_submitter,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(self.factory).ready = ready_property
+
+ @pytest.mark.asyncio
+ async def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ await self.setup_task
+ await _get_treatment_async(self.factory)
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ await self.setup_task
+ await _get_treatment_with_config_async(self.factory)
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments(self):
+ # testing multiple splitNames
+ await self.setup_task
+ await _get_treatments_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ await _validate_last_impressions_async(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off')
+ )
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ await self.setup_task
+ await _get_treatments_with_config_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ await _validate_last_impressions_async(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off'),
+ )
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_by_flag_set_async(self.factory)
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_set_async(self.factory)
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_track(self):
+ """Test client.track()."""
+ await self.setup_task
+ await _track_async(self.factory)
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_manager_methods(self):
+ """Test manager.split/splits."""
+ await self.setup_task
+ await _manager_methods_async(self.factory)
+ await self.factory.destroy()
+ await self._clear_cache(self.factory._storages['splits'].redis)
+
+ async def _clear_cache(self, redis_client):
+ """Clear redis cache."""
+ keys_to_delete = [
+ "SPLITIO.split.sample_feature",
+ "SPLITIO.split.killed_feature",
+ "SPLITIO.split.regex_test",
+ "SPLITIO.segment.employees",
+ "SPLITIO.segment.human_beigns.till",
+ "SPLITIO.segment.human_beigns",
+ "SPLITIO.impressions",
+ "SPLITIO.split.boolean_test",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.all_feature",
+ "SPLITIO.segment.employees.till",
+ "SPLITIO.split.whitelist_feature",
+ "SPLITIO.telemetry.latencies",
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.split.rbs_feature_flag",
+ "SPLITIO.rbsegments.till",
+ "SPLITIO.rbsegments.sample_rule_based_segment"
+ ]
+ for key in keys_to_delete:
+ await redis_client.delete(key)
+
+class RedisWithCacheIntegrationAsyncTests(RedisIntegrationAsyncTests):
+ """Run the same tests as RedisIntegratioTests but with LRU/Expirable cache overlay."""
+
+ def setup_method(self):
+ self.setup_task = asyncio.get_event_loop().create_task(self._setup_method())
+
+ async def _setup_method(self):
+ """Prepare storages with test data."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ redis_client = await build_async(DEFAULT_CONFIG.copy())
+ await self._clear_cache(redis_client)
+
+ split_storage = RedisSplitStorageAsync(redis_client, True)
+ segment_storage = RedisSegmentStorageAsync(redis_client)
+ rb_segment_storage = RedisRuleBasedSegmentsStorageAsync(redis_client)
+
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await redis_client.set(split_storage._get_key(split['name']), json.dumps(split))
+ if split.get('sets') is not None:
+ for flag_set in split.get('sets'):
+ await redis_client.sadd(split_storage._get_flag_set_key(flag_set), split['name'])
+ await redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, data['ff']['t'])
+
+ for rbs in data['rbs']['d']:
+ await redis_client.set(rb_segment_storage._get_key(rbs['name']), json.dumps(rbs))
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await redis_client.sadd(segment_storage._get_key(data['name']), *data['added'])
+ await redis_client.set(segment_storage._get_till_key(data['name']), data['till'])
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await redis_client.sadd(segment_storage._get_key(data['name']), *data['added'])
+ await redis_client.set(segment_storage._get_till_key(data['name']), data['till'])
+
+ telemetry_redis_storage = await RedisTelemetryStorageAsync.create(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_redis_storage)
+ telemetry_submitter = RedisTelemetrySubmitterAsync(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': RedisImpressionsStorageAsync(redis_client, metadata),
+ 'events': RedisEventsStorageAsync(redis_client, metadata),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorderAsync(redis_client.pipeline, impmanager, storages['events'],
+ storages['impressions'], telemetry_redis_storage, imp_counter=ImpressionsCounter())
+ self.factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ telemetry_submitter=telemetry_submitter,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(self.factory).ready = ready_property
+
+
+class LocalhostIntegrationAsyncTests(object): # pylint: disable=too-few-public-methods
+ """Client & Manager integration tests."""
+
+ @pytest.mark.asyncio
+ async def test_localhost_json_e2e(self):
+ """Instantiate a client with a JSON file and issue get_treatment() calls."""
+ self._update_temp_file(splits_json['splitChange2_1'])
+ filename = os.path.join(os.path.dirname(__file__), 'files', 'split_changes_temp.json')
+ self.factory = await get_factory_async('localhost', config={'splitFile': filename})
+ await self.factory.block_until_ready(1)
+ client = self.factory.client()
+
+ # Tests 2
+ assert await self.factory.manager().split_names() == ["SPLIT_1"]
+ assert await client.get_treatment("key", "SPLIT_1") == 'off'
+
+ # Tests 1
+ await self.factory._storages['splits'].update([], ['SPLIT_1'], -1)
+ self._update_temp_file(splits_json['splitChange1_1'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange1_2'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'off'
+
+ self._update_temp_file(splits_json['splitChange1_3'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_1", None) == 'control'
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ # Tests 3
+ await self.factory._storages['splits'].update([], ['SPLIT_1'], -1)
+ self._update_temp_file(splits_json['splitChange3_1'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange3_2'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'off'
+
+ # Tests 4
+ await self.factory._storages['splits'].update([], ['SPLIT_2'], -1)
+ self._update_temp_file(splits_json['splitChange4_1'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange4_2'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'off'
+
+ self._update_temp_file(splits_json['splitChange4_3'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_1", None) == 'control'
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ # Tests 5
+ await self.factory._storages['splits'].update([], ['SPLIT_1', 'SPLIT_2'], -1)
+ self._update_temp_file(splits_json['splitChange5_1'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange5_2'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ # Tests 6
+ await self.factory._storages['splits'].update([], ['SPLIT_2'], -1)
+ self._update_temp_file(splits_json['splitChange6_1'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ self._update_temp_file(splits_json['splitChange6_2'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_1", "SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_1", None) == 'off'
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'off'
+
+ self._update_temp_file(splits_json['splitChange6_3'])
+ await self._synchronize_now()
+
+ assert sorted(await self.factory.manager().split_names()) == ["SPLIT_2", "SPLIT_3"]
+ assert await client.get_treatment("key", "SPLIT_1", None) == 'control'
+ assert await client.get_treatment("key", "SPLIT_2", None) == 'on'
+
+ # rule based segment test
+ self._update_temp_file(splits_json['splitChange7_1'])
+ await self._synchronize_now()
+ assert await client.get_treatment('bilal@split.io', 'rbs_feature_flag', {'email': 'bilal@split.io'}) == 'on'
+ assert await client.get_treatment('mauro@split.io', 'rbs_feature_flag', {'email': 'mauro@split.io'}) == 'off'
+
+ def _update_temp_file(self, json_body):
+ f = open(os.path.join(os.path.dirname(__file__), 'files','split_changes_temp.json'), 'w')
+ f.write(json.dumps(json_body))
+ f.close()
+
+ async def _synchronize_now(self):
+ filename = os.path.join(os.path.dirname(__file__), 'files', 'split_changes_temp.json')
+ self.factory._sync_manager._synchronizer._split_synchronizers._feature_flag_sync._filename = filename
+ await self.factory._sync_manager._synchronizer._split_synchronizers._feature_flag_sync.synchronize_splits()
+
+ @pytest.mark.asyncio
+ async def test_incorrect_file_e2e(self):
+ """Test initialize factory with a incorrect file name."""
+ # TODO: secontion below is removed when legacu use BUR
+ # legacy and yaml
+ exception_raised = False
+ factory = None
+ try:
+ factory = await get_factory_async('localhost', config={'splitFile': 'filename'})
+ except Exception as e:
+ exception_raised = True
+
+ assert(exception_raised)
+
+ # json using BUR
+ factory = await get_factory_async('localhost', config={'splitFile': 'filename.json'})
+ exception_raised = False
+ try:
+ await factory.block_until_ready(1)
+ except Exception as e:
+ exception_raised = True
+
+ assert(exception_raised)
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_localhost_e2e(self):
+ """Instantiate a client with a YAML file and issue get_treatment() calls."""
+ filename = os.path.join(os.path.dirname(__file__), 'files', 'file2.yaml')
+ factory = await get_factory_async('localhost', config={'splitFile': filename})
+ await factory.block_until_ready()
+ client = factory.client()
+ assert await client.get_treatment_with_config('key', 'my_feature') == ('on', '{"desc" : "this applies only to ON treatment"}')
+ assert await client.get_treatment_with_config('only_key', 'my_feature') == (
+ 'off', '{"desc" : "this applies only to OFF and only for only_key. The rest will receive ON"}'
+ )
+ assert await client.get_treatment_with_config('another_key', 'my_feature') == ('control', None)
+ assert await client.get_treatment_with_config('key2', 'other_feature') == ('on', None)
+ assert await client.get_treatment_with_config('key3', 'other_feature') == ('on', None)
+ assert await client.get_treatment_with_config('some_key', 'other_feature_2') == ('on', None)
+ assert await client.get_treatment_with_config('key_whitelist', 'other_feature_3') == ('on', None)
+ assert await client.get_treatment_with_config('any_other_key', 'other_feature_3') == ('off', None)
+
+ manager = factory.manager()
+ split = await manager.split('my_feature')
+ assert split.configs == {
+ 'on': '{"desc" : "this applies only to ON treatment"}',
+ 'off': '{"desc" : "this applies only to OFF and only for only_key. The rest will receive ON"}'
+ }
+ split = await manager.split('other_feature')
+ assert split.configs == {}
+ split = await manager.split('other_feature_2')
+ assert split.configs == {}
+ split = await manager.split('other_feature_3')
+ assert split.configs == {}
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_fallback_treatments(self):
+ """Instantiate a client with a JSON file and issue get_treatment() calls."""
+ self._update_temp_file(splits_json['splitChange2_1'])
+ filename = os.path.join(os.path.dirname(__file__), 'files', 'split_changes_temp.json')
+ factory = await get_factory_async('localhost',
+ config={
+ 'splitFile': filename,
+ 'fallbackTreatments': FallbackTreatmentsConfiguration("on-global", {'fallback_feature': "on-local"})
+ }
+ )
+ await factory.block_until_ready(1)
+ client = factory.client()
+
+ assert await client.get_treatment("key", "feature") == "on-global"
+ assert await client.get_treatment("key", "fallback_feature") == "on-local"
+ await factory.destroy()
+
+class PluggableIntegrationAsyncTests(object):
+ """Pluggable storage-based integration tests."""
+ def setup_method(self):
+ self.setup_task = asyncio.get_event_loop().create_task(self._setup_method())
+
+ async def _setup_method(self):
+ """Prepare storages with test data."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ self.pluggable_storage_adapter = StorageMockAdapterAsync()
+ split_storage = PluggableSplitStorageAsync(self.pluggable_storage_adapter, 'myprefix')
+ segment_storage = PluggableSegmentStorageAsync(self.pluggable_storage_adapter, 'myprefix')
+ rb_segment_storage = PluggableRuleBasedSegmentsStorageAsync(self.pluggable_storage_adapter, 'myprefix')
+
+ telemetry_pluggable_storage = await PluggableTelemetryStorageAsync.create(self.pluggable_storage_adapter, metadata, 'myprefix')
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_pluggable_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_submitter = RedisTelemetrySubmitterAsync(telemetry_pluggable_storage)
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': PluggableImpressionsStorageAsync(self.pluggable_storage_adapter, metadata),
+ 'events': PluggableEventsStorageAsync(self.pluggable_storage_adapter, metadata),
+ 'telemetry': telemetry_pluggable_storage
+ }
+
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorderAsync(impmanager, storages['events'],
+ storages['impressions'],
+ telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_runtime_producer, imp_counter=ImpressionsCounter())
+
+ self.factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ RedisManagerAsync(PluggableSynchronizerAsync()),
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ telemetry_submitter=telemetry_submitter,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(self.factory).ready = ready_property
+
+ # Adding data to storage
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await self.pluggable_storage_adapter.set(split_storage._prefix.format(feature_flag_name=split['name']), split)
+ for flag_set in split.get('sets'):
+ await self.pluggable_storage_adapter.push_items(split_storage._flag_set_prefix.format(flag_set=flag_set), split['name'])
+ await self.pluggable_storage_adapter.set(split_storage._feature_flag_till_prefix, data['ff']['d'])
+
+ for rbs in data['rbs']['d']:
+ await self.pluggable_storage_adapter.set(rb_segment_storage._prefix.format(segment_name=rbs['name']), rbs)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ await self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ await self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+ await self.factory.block_until_ready(1)
+
+ @pytest.mark.asyncio
+ async def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ await self.setup_task
+ await _get_treatment_async(self.factory)
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatment_with_config(self):
+ """Test client.get_treatment_with_config()."""
+ await self.setup_task
+ await _get_treatment_with_config_async(self.factory)
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments(self):
+ # testing multiple splitNames
+ await self.setup_task
+ await _get_treatments_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ await _validate_last_impressions_async(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off')
+ )
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ await self.setup_task
+ await _get_treatments_with_config_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ await _validate_last_impressions_async(
+ client,
+ ('all_feature', 'invalidKey', 'on'),
+ ('killed_feature', 'invalidKey', 'defTreatment'),
+ ('sample_feature', 'invalidKey', 'off'),
+ )
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_by_flag_set_async(self.factory)
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_set_async(self.factory)
+ await self.factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'),
+ ('whitelist_feature', 'user1', 'off'),
+ ('all_feature', 'user1', 'on')
+ )
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_track(self):
+ """Test client.track()."""
+ await self.setup_task
+ await _track_async(self.factory)
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_manager_methods(self):
+ """Test manager.split/splits."""
+ await self.setup_task
+ await _manager_methods_async(self.factory)
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ async def _teardown_method(self):
+ """Clear pluggable cache."""
+ keys_to_delete = [
+ "SPLITIO.segment.human_beigns",
+ "SPLITIO.segment.employees.till",
+ "SPLITIO.split.sample_feature",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.killed_feature",
+ "SPLITIO.split.all_feature",
+ "SPLITIO.split.whitelist_feature",
+ "SPLITIO.segment.employees",
+ "SPLITIO.split.regex_test",
+ "SPLITIO.segment.human_beigns.till",
+ "SPLITIO.split.boolean_test",
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.split.rbs_feature_flag",
+ "SPLITIO.rbsegments.till",
+ "SPLITIO.rbsegments.sample_rule_based_segment"
+ ]
+
+ for key in keys_to_delete:
+ await self.pluggable_storage_adapter.delete(key)
+
+
+class PluggableOptimizedIntegrationAsyncTests(object):
+ """Pluggable storage-based optimized integration tests."""
+ def setup_method(self):
+ self.setup_task = asyncio.get_event_loop().create_task(self._setup_method())
+
+ async def _setup_method(self):
+ """Prepare storages with test data."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ self.pluggable_storage_adapter = StorageMockAdapterAsync()
+ split_storage = PluggableSplitStorageAsync(self.pluggable_storage_adapter)
+ segment_storage = PluggableSegmentStorageAsync(self.pluggable_storage_adapter)
+ rb_segment_storage = PluggableRuleBasedSegmentsStorageAsync(self.pluggable_storage_adapter, 'myprefix')
+
+ telemetry_pluggable_storage = await PluggableTelemetryStorageAsync.create(self.pluggable_storage_adapter, metadata)
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_pluggable_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_submitter = RedisTelemetrySubmitterAsync(telemetry_pluggable_storage)
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': PluggableImpressionsStorageAsync(self.pluggable_storage_adapter, metadata),
+ 'events': PluggableEventsStorageAsync(self.pluggable_storage_adapter, metadata),
+ 'telemetry': telemetry_pluggable_storage
+ }
+
+ impmanager = ImpressionsManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorderAsync(impmanager, storages['events'],
+ storages['impressions'],
+ telemetry_producer.get_telemetry_evaluation_producer(),
+ telemetry_runtime_producer,
+ imp_counter=ImpressionsCounter())
+
+ self.factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ RedisManagerAsync(PluggableSynchronizerAsync()),
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ telemetry_submitter=telemetry_submitter,
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(self.factory).ready = ready_property
+
+ # Adding data to storage
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await self.pluggable_storage_adapter.set(split_storage._prefix.format(feature_flag_name=split['name']), split)
+ for flag_set in split.get('sets'):
+ await self.pluggable_storage_adapter.push_items(split_storage._flag_set_prefix.format(flag_set=flag_set), split['name'])
+ await self.pluggable_storage_adapter.set(split_storage._feature_flag_till_prefix, data['ff']['t'])
+
+ for rbs in data['rbs']['d']:
+ await self.pluggable_storage_adapter.set(rb_segment_storage._prefix.format(segment_name=rbs['name']), rbs)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ await self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ await self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+ await self.factory.block_until_ready(1)
+
+ @pytest.mark.asyncio
+ async def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ await self.setup_task
+ await _get_treatment_async(self.factory)
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments(self):
+ """Test client.get_treatments()."""
+ await self.setup_task
+ await _get_treatments_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ assert len(self.pluggable_storage_adapter._keys['SPLITIO.impressions']) == 0
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ await self.setup_task
+ await _get_treatments_with_config_async(self.factory)
+ # testing multiple splitNames
+ client = self.factory.client()
+ result = await client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ await _validate_last_impressions_async(client,)
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_by_flag_set_async(self.factory)
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ await _validate_last_impressions_async(client, )
+ assert self.pluggable_storage_adapter._keys.get('SPLITIO.impressions') == None
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_set_async(self.factory)
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ await _validate_last_impressions_async(client, )
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_manager_methods(self):
+ """Test manager.split/splits."""
+ await self.setup_task
+ await _manager_methods_async(self.factory)
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_track(self):
+ """Test client.track()."""
+ await self.setup_task
+ await _track_async(self.factory)
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ async def _teardown_method(self):
+ """Clear pluggable cache."""
+ keys_to_delete = [
+ "SPLITIO.segment.human_beigns",
+ "SPLITIO.segment.employees.till",
+ "SPLITIO.split.sample_feature",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.killed_feature",
+ "SPLITIO.split.all_feature",
+ "SPLITIO.split.whitelist_feature",
+ "SPLITIO.segment.employees",
+ "SPLITIO.split.regex_test",
+ "SPLITIO.segment.human_beigns.till",
+ "SPLITIO.split.boolean_test",
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.split.rbs_feature_flag",
+ "SPLITIO.rbsegments.till",
+ "SPLITIO.rbsegments.sample_rule_based_segment"
+ ]
+
+ for key in keys_to_delete:
+ await self.pluggable_storage_adapter.delete(key)
+
+class PluggableNoneIntegrationAsyncTests(object):
+ """Pluggable storage-based integration tests."""
+
+ def setup_method(self):
+ self.setup_task = asyncio.get_event_loop().create_task(self._setup_method())
+
+ async def _setup_method(self):
+ """Prepare storages with test data."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ self.pluggable_storage_adapter = StorageMockAdapterAsync()
+ split_storage = PluggableSplitStorageAsync(self.pluggable_storage_adapter)
+ segment_storage = PluggableSegmentStorageAsync(self.pluggable_storage_adapter)
+ rb_segment_storage = PluggableRuleBasedSegmentsStorageAsync(self.pluggable_storage_adapter, 'myprefix')
+
+ telemetry_pluggable_storage = await PluggableTelemetryStorageAsync.create(self.pluggable_storage_adapter, metadata)
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_pluggable_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': PluggableImpressionsStorageAsync(self.pluggable_storage_adapter, metadata),
+ 'events': PluggableEventsStorageAsync(self.pluggable_storage_adapter, metadata),
+ 'telemetry': telemetry_pluggable_storage
+ }
+ imp_counter = ImpressionsCounter()
+ unique_keys_tracker = UniqueKeysTrackerAsync()
+ unique_keys_synchronizer, clear_filter_sync, self.unique_keys_task, \
+ clear_filter_task, impressions_count_sync, impressions_count_task, \
+ imp_strategy, none_strategy = set_classes_async('PLUGGABLE', ImpressionsMode.NONE, self.pluggable_storage_adapter, imp_counter, unique_keys_tracker)
+ impmanager = ImpressionsManager(imp_strategy, none_strategy, telemetry_runtime_producer) # no listener
+
+ recorder = StandardRecorderAsync(impmanager, storages['events'],
+ storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, unique_keys_tracker=unique_keys_tracker, imp_counter=imp_counter)
+
+ synchronizers = SplitSynchronizers(None, None, None, None,
+ impressions_count_sync,
+ None,
+ unique_keys_synchronizer,
+ clear_filter_sync
+ )
+
+ tasks = SplitTasks(None, None, None, None,
+ impressions_count_task,
+ None,
+ self.unique_keys_task,
+ clear_filter_task
+ )
+
+ synchronizer = RedisSynchronizerAsync(synchronizers, tasks)
+
+ manager = RedisManagerAsync(synchronizer)
+ manager.start()
+ self.factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(FallbackTreatmentsConfiguration(None, {'fallback_feature': FallbackTreatment("on-local", '{"prop": "val"}')}))
+ ) # pylint:disable=attribute-defined-outside-init
+
+ # Adding data to storage
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'splitChanges.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await self.pluggable_storage_adapter.set(split_storage._prefix.format(feature_flag_name=split['name']), split)
+ for flag_set in split.get('sets'):
+ await self.pluggable_storage_adapter.push_items(split_storage._flag_set_prefix.format(flag_set=flag_set), split['name'])
+ await self.pluggable_storage_adapter.set(split_storage._feature_flag_till_prefix, data['ff']['t'])
+
+ for rbs in data['rbs']['d']:
+ await self.pluggable_storage_adapter.set(rb_segment_storage._prefix.format(segment_name=rbs['name']), rbs)
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentEmployeesChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ await self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+
+ segment_fn = os.path.join(os.path.dirname(__file__), 'files', 'segmentHumanBeignsChanges.json')
+ with open(segment_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ await self.pluggable_storage_adapter.set(segment_storage._prefix.format(segment_name=data['name']), set(data['added']))
+ await self.pluggable_storage_adapter.set(segment_storage._segment_till_prefix.format(segment_name=data['name']), data['till'])
+ await self.factory.block_until_ready(1)
+
+ @pytest.mark.asyncio
+ async def test_get_treatment(self):
+ """Test client.get_treatment()."""
+ await self.setup_task
+ await _get_treatment_async(self.factory)
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments(self):
+ """Test client.get_treatments()."""
+ await self.setup_task
+ await _get_treatments_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == 'on'
+ assert result['killed_feature'] == 'defTreatment'
+ assert result['invalid_feature'] == 'control'
+ assert result['sample_feature'] == 'off'
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config(self):
+ """Test client.get_treatments_with_config()."""
+ await self.setup_task
+ await _get_treatments_with_config_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_with_config('invalidKey', [
+ 'all_feature',
+ 'killed_feature',
+ 'invalid_feature',
+ 'sample_feature'
+ ])
+ assert len(result) == 4
+ assert result['all_feature'] == ('on', None)
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ assert result['invalid_feature'] == ('control', None)
+ assert result['sample_feature'] == ('off', None)
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_set(self):
+ """Test client.get_treatments_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_by_flag_set_async(self.factory)
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_by_flag_sets(self):
+ """Test client.get_treatments_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': 'on',
+ 'whitelist_feature': 'off',
+ 'all_feature': 'on'
+ }
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_set(self):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_set_async(self.factory)
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_get_treatments_with_config_by_flag_sets(self):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ await self.setup_task
+ await _get_treatments_with_config_by_flag_sets_async(self.factory)
+ client = self.factory.client()
+ result = await client.get_treatments_with_config_by_flag_sets('user1', ['set1', 'set2', 'set4'])
+ assert len(result) == 3
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'),
+ 'whitelist_feature': ('off', None),
+ 'all_feature': ('on', None)
+ }
+ assert self.pluggable_storage_adapter._keys['SPLITIO.impressions'] == []
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_track(self):
+ """Test client.track()."""
+ await self.setup_task
+ await _track_async(self.factory)
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ @pytest.mark.asyncio
+ async def test_mtk(self):
+ await self.setup_task
+ client = self.factory.client()
+ await client.get_treatment('user1', 'sample_feature')
+ await client.get_treatment('invalidKey', 'sample_feature')
+ await client.get_treatment('invalidKey2', 'sample_feature')
+ await client.get_treatment('user22', 'invalidFeature')
+ self.unique_keys_task._task.force_execution()
+ await asyncio.sleep(1)
+
+ assert(json.loads(self.pluggable_storage_adapter._keys['SPLITIO.uniquekeys'][0])["f"] =="sample_feature")
+ assert(json.loads(self.pluggable_storage_adapter._keys['SPLITIO.uniquekeys'][0])["ks"].sort() ==
+ ["invalidKey2", "invalidKey", "user1"].sort())
+ await self.factory.destroy()
+ await self._teardown_method()
+
+ async def _teardown_method(self):
+ """Clear pluggable cache."""
+ keys_to_delete = [
+ "SPLITIO.segment.human_beigns",
+ "SPLITIO.segment.employees.till",
+ "SPLITIO.split.sample_feature",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.killed_feature",
+ "SPLITIO.split.all_feature",
+ "SPLITIO.split.whitelist_feature",
+ "SPLITIO.segment.employees",
+ "SPLITIO.split.regex_test",
+ "SPLITIO.segment.human_beigns.till",
+ "SPLITIO.split.boolean_test",
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.split.rbs_feature_flag",
+ "SPLITIO.rbsegments.till",
+ "SPLITIO.rbsegments.sample_rule_based_segment"
+ ]
+
+ for key in keys_to_delete:
+ await self.pluggable_storage_adapter.delete(key)
+
+class InMemoryImpressionsToggleIntegrationAsyncTests(object):
+ """InMemory storage-based impressions toggle integration tests."""
+
+ @pytest.mark.asyncio
+ async def test_optimized(self):
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+
+ await split_storage.update([splits.from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorageAsync(internal_events_queue),
+ 'impressions': InMemoryImpressionStorageAsync(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorageAsync(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorderAsync(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, None, UniqueKeysTrackerAsync(), ImpressionsCounter())
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(None)
+ ) # pylint:disable=attribute-defined-outside-init
+ except:
+ pass
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert await client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert await client.get_treatment('user1', 'SPLIT_2') == 'on'
+ assert await client.get_treatment('user1', 'SPLIT_3') == 'on'
+ imp_storage = client._factory._get_storage('impressions')
+ impressions = await imp_storage.pop_many(10)
+ assert len(impressions) == 2
+ assert impressions[0].feature_name == 'SPLIT_1'
+ assert impressions[1].feature_name == 'SPLIT_2'
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_3': {'user1'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 1
+ assert imps_count[0].feature == 'SPLIT_3'
+ assert imps_count[0].count == 1
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_debug(self):
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+
+ await split_storage.update([splits.from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorageAsync(internal_events_queue),
+ 'impressions': InMemoryImpressionStorageAsync(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorageAsync(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorderAsync(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, None, UniqueKeysTrackerAsync(), ImpressionsCounter())
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(None)
+ ) # pylint:disable=attribute-defined-outside-init
+ except:
+ pass
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert await client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert await client.get_treatment('user1', 'SPLIT_2') == 'on'
+ assert await client.get_treatment('user1', 'SPLIT_3') == 'on'
+ imp_storage = client._factory._get_storage('impressions')
+ impressions = await imp_storage.pop_many(10)
+ assert len(impressions) == 2
+ assert impressions[0].feature_name == 'SPLIT_1'
+ assert impressions[1].feature_name == 'SPLIT_2'
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_3': {'user1'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 1
+ assert imps_count[0].feature == 'SPLIT_3'
+ assert imps_count[0].count == 1
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_none(self):
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+
+ await split_storage.update([splits.from_raw(splits_json['splitChange1_1']['ff']['d'][0]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][1]),
+ splits.from_raw(splits_json['splitChange1_1']['ff']['d'][2])
+ ], [], -1)
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_evaluation_producer = telemetry_producer.get_telemetry_evaluation_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': InMemoryRuleBasedSegmentStorageAsync(internal_events_queue),
+ 'impressions': InMemoryImpressionStorageAsync(5000, telemetry_runtime_producer),
+ 'events': InMemoryEventStorageAsync(5000, telemetry_runtime_producer),
+ }
+ impmanager = ImpressionsManager(StrategyNoneMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = StandardRecorderAsync(impmanager, storages['events'], storages['impressions'], telemetry_evaluation_producer, telemetry_runtime_producer, None, UniqueKeysTrackerAsync(), ImpressionsCounter())
+ # Since we are passing None as SDK_Ready event, the factory will use the Redis telemetry call, using try catch to ignore the exception.
+ try:
+ factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ None,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(None)
+ ) # pylint:disable=attribute-defined-outside-init
+ except:
+ pass
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert await client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert await client.get_treatment('user1', 'SPLIT_2') == 'on'
+ assert await client.get_treatment('user1', 'SPLIT_3') == 'on'
+ imp_storage = client._factory._get_storage('impressions')
+ impressions = await imp_storage.pop_many(10)
+ assert len(impressions) == 0
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_1': {'user1'}, 'SPLIT_2': {'user1'}, 'SPLIT_3': {'user1'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 3
+ assert imps_count[0].feature == 'SPLIT_1'
+ assert imps_count[0].count == 1
+ assert imps_count[1].feature == 'SPLIT_2'
+ assert imps_count[1].count == 1
+ assert imps_count[2].feature == 'SPLIT_3'
+ assert imps_count[2].count == 1
+ await factory.destroy()
+
+class RedisImpressionsToggleIntegrationAsyncTests(object):
+ """Run impression toggle tests for Redis."""
+
+ @pytest.mark.asyncio
+ async def test_optimized(self):
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ """Prepare storages with test data."""
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ redis_client = await build_async(DEFAULT_CONFIG.copy())
+ split_storage = RedisSplitStorageAsync(redis_client, True)
+ segment_storage = RedisSegmentStorageAsync(redis_client)
+ rb_segment_storage = RedisRuleBasedSegmentsStorageAsync(redis_client)
+
+ await redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][0]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][0]))
+ await redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][1]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][1]))
+ await redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][2]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][2]))
+ await redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, -1)
+
+ telemetry_redis_storage = await RedisTelemetryStorageAsync.create(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': RedisImpressionsStorageAsync(redis_client, metadata),
+ 'events': RedisEventsStorageAsync(redis_client, metadata),
+ }
+ impmanager = ImpressionsManager(StrategyOptimizedMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorderAsync(redis_client.pipeline, impmanager,
+ storages['events'], storages['impressions'], telemetry_redis_storage, unique_keys_tracker=UniqueKeysTracker(), imp_counter=ImpressionsCounter())
+ factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(None)
+ ) # pylint:disable=attribute-defined-outside-init
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert await client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert await client.get_treatment('user2', 'SPLIT_2') == 'on'
+ assert await client.get_treatment('user3', 'SPLIT_3') == 'on'
+ await asyncio.sleep(0.2)
+
+ imp_storage = factory._storages['impressions']
+ impressions = []
+ while True:
+ impression = await redis_client.lpop(imp_storage.IMPRESSIONS_QUEUE_KEY)
+ if impression is None:
+ break
+ impressions.append(json.loads(impression))
+
+ assert len(impressions) == 2
+ assert impressions[0]['i']['f'] == 'SPLIT_1'
+ assert impressions[1]['i']['f'] == 'SPLIT_2'
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_3': {'user3'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 1
+ assert imps_count[0].feature == 'SPLIT_3'
+ assert imps_count[0].count == 1
+ await self.clear_cache()
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_debug(self):
+ """Prepare storages with test data."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ redis_client = await build_async(DEFAULT_CONFIG.copy())
+ split_storage = RedisSplitStorageAsync(redis_client, True)
+ segment_storage = RedisSegmentStorageAsync(redis_client)
+ rb_segment_storage = RedisRuleBasedSegmentsStorageAsync(redis_client)
+
+ await redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][0]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][0]))
+ await redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][1]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][1]))
+ await redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][2]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][2]))
+ await redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, -1)
+
+ telemetry_redis_storage = await RedisTelemetryStorageAsync.create(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': RedisImpressionsStorageAsync(redis_client, metadata),
+ 'events': RedisEventsStorageAsync(redis_client, metadata),
+ }
+ impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorderAsync(redis_client.pipeline, impmanager,
+ storages['events'], storages['impressions'], telemetry_redis_storage, unique_keys_tracker=UniqueKeysTracker(), imp_counter=ImpressionsCounter())
+ factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(None)
+ ) # pylint:disable=attribute-defined-outside-init
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert await client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert await client.get_treatment('user2', 'SPLIT_2') == 'on'
+ assert await client.get_treatment('user3', 'SPLIT_3') == 'on'
+ await asyncio.sleep(0.2)
+
+ imp_storage = factory._storages['impressions']
+ impressions = []
+ while True:
+ impression = await redis_client.lpop(imp_storage.IMPRESSIONS_QUEUE_KEY)
+ if impression is None:
+ break
+ impressions.append(json.loads(impression))
+
+ assert len(impressions) == 2
+ assert impressions[0]['i']['f'] == 'SPLIT_1'
+ assert impressions[1]['i']['f'] == 'SPLIT_2'
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_3': {'user3'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 1
+ assert imps_count[0].feature == 'SPLIT_3'
+ assert imps_count[0].count == 1
+ await self.clear_cache()
+ await factory.destroy()
+
+ @pytest.mark.asyncio
+ async def test_none(self):
+ """Prepare storages with test data."""
+ internal_events_queue = asyncio.Queue()
+ events_manager = EventsManagerAsync(EventsManagerConfig(), EventsDelivery())
+
+ metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name')
+ redis_client = await build_async(DEFAULT_CONFIG.copy())
+ split_storage = RedisSplitStorageAsync(redis_client, True)
+ segment_storage = RedisSegmentStorageAsync(redis_client)
+ rb_segment_storage = RedisRuleBasedSegmentsStorageAsync(redis_client)
+
+ await redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][0]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][0]))
+ await redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][1]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][1]))
+ await redis_client.set(split_storage._get_key(splits_json['splitChange1_1']['ff']['d'][2]['name']), json.dumps(splits_json['splitChange1_1']['ff']['d'][2]))
+ await redis_client.set(split_storage._FEATURE_FLAG_TILL_KEY, -1)
+
+ telemetry_redis_storage = await RedisTelemetryStorageAsync.create(redis_client, metadata)
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_redis_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ storages = {
+ 'splits': split_storage,
+ 'segments': segment_storage,
+ 'rule_based_segments': rb_segment_storage,
+ 'impressions': RedisImpressionsStorageAsync(redis_client, metadata),
+ 'events': RedisEventsStorageAsync(redis_client, metadata),
+ }
+ impmanager = ImpressionsManager(StrategyNoneMode(), StrategyNoneMode(), telemetry_runtime_producer) # no listener
+ recorder = PipelinedRecorderAsync(redis_client.pipeline, impmanager,
+ storages['events'], storages['impressions'], telemetry_redis_storage, unique_keys_tracker=UniqueKeysTracker(), imp_counter=ImpressionsCounter())
+ factory = SplitFactoryAsync('some_api_key',
+ storages,
+ True,
+ recorder,
+ internal_events_queue,
+ events_manager,
+ telemetry_producer=telemetry_producer,
+ telemetry_init_producer=telemetry_producer.get_telemetry_init_producer(),
+ fallback_treatment_calculator=FallbackTreatmentCalculator(None)
+ ) # pylint:disable=attribute-defined-outside-init
+ ready_property = mocker.PropertyMock()
+ ready_property.return_value = True
+ type(factory).ready = ready_property
+
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert await client.get_treatment('user1', 'SPLIT_1') == 'off'
+ assert await client.get_treatment('user2', 'SPLIT_2') == 'on'
+ assert await client.get_treatment('user3', 'SPLIT_3') == 'on'
+ await asyncio.sleep(0.2)
+
+ imp_storage = factory._storages['impressions']
+ impressions = []
+ while True:
+ impression = await redis_client.lpop(imp_storage.IMPRESSIONS_QUEUE_KEY)
+ if impression is None:
+ break
+ impressions.append(json.loads(impression))
+
+ assert len(impressions) == 0
+ assert client._recorder._unique_keys_tracker._cache == {'SPLIT_1': {'user1'}, 'SPLIT_2': {'user2'}, 'SPLIT_3': {'user3'}}
+ imps_count = client._recorder._imp_counter.pop_all()
+ assert len(imps_count) == 3
+ assert imps_count[0].feature == 'SPLIT_1'
+ assert imps_count[0].count == 1
+ assert imps_count[1].feature == 'SPLIT_2'
+ assert imps_count[1].count == 1
+ assert imps_count[2].feature == 'SPLIT_3'
+ assert imps_count[2].count == 1
+ await self.clear_cache()
+ await factory.destroy()
+
+ async def clear_cache(self):
+ """Clear redis cache."""
+ keys_to_delete = [
+ "SPLITIO.split.SPLIT_3",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.SPLIT_2",
+ "SPLITIO.split.SPLIT_1",
+ "SPLITIO.telemetry.latencies"
+ ]
+
+ redis_client = await build_async(DEFAULT_CONFIG.copy())
+ for key in keys_to_delete:
+ await redis_client.delete(key)
+
+async def _validate_last_impressions_async(client, *to_validate):
+ """Validate the last N impressions are present disregarding the order."""
+ imp_storage = client._factory._get_storage('impressions')
+ if isinstance(client._factory._get_storage('splits'), RedisSplitStorageAsync) or isinstance(client._factory._get_storage('splits'), PluggableSplitStorageAsync):
+ if isinstance(client._factory._get_storage('splits'), RedisSplitStorageAsync):
+ redis_client = imp_storage._redis
+ impressions_raw = [
+ json.loads(await redis_client.lpop(imp_storage.IMPRESSIONS_QUEUE_KEY))
+ for _ in to_validate
+ ]
+ else:
+ pluggable_adapter = imp_storage._pluggable_adapter
+ results = await pluggable_adapter.pop_items(imp_storage._impressions_queue_key)
+ results = [] if results == None else results
+ impressions_raw = [
+ json.loads(i)
+ for i in results
+ ]
+ as_tup_set = set(
+ (i['i']['f'], i['i']['k'], i['i']['t'])
+ for i in impressions_raw
+ )
+ assert as_tup_set == set(to_validate)
+ await asyncio.sleep(0.2) # delay for redis to sync
+ else:
+ impressions = await imp_storage.pop_many(len(to_validate))
+ as_tup_set = set((i.feature_name, i.matching_key, i.treatment) for i in impressions)
+ assert as_tup_set == set(to_validate)
+
+async def _validate_last_events_async(client, *to_validate):
+ """Validate the last N impressions are present disregarding the order."""
+ event_storage = client._factory._get_storage('events')
+ if isinstance(client._factory._get_storage('splits'), RedisSplitStorageAsync) or isinstance(client._factory._get_storage('splits'), PluggableSplitStorageAsync):
+ if isinstance(client._factory._get_storage('splits'), RedisSplitStorageAsync):
+ redis_client = event_storage._redis
+ events_raw = [
+ json.loads(await redis_client.lpop(event_storage._EVENTS_KEY_TEMPLATE))
+ for _ in to_validate
+ ]
+ else:
+ pluggable_adapter = event_storage._pluggable_adapter
+ events_raw = [
+ json.loads(i)
+ for i in await pluggable_adapter.pop_items(event_storage._events_queue_key)
+ ]
+ as_tup_set = set(
+ (i['e']['key'], i['e']['trafficTypeName'], i['e']['eventTypeId'], i['e']['value'], str(i['e']['properties']))
+ for i in events_raw
+ )
+ assert as_tup_set == set(to_validate)
+ else:
+ events = await event_storage.pop_many(len(to_validate))
+ as_tup_set = set((i.key, i.traffic_type_name, i.event_type_id, i.value, str(i.properties)) for i in events)
+ assert as_tup_set == set(to_validate)
+
+async def _get_treatment_async(factory, skip_rbs=False):
+ """Test client.get_treatment()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ assert await client.get_treatment('user1', 'sample_feature') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'))
+
+ assert await client.get_treatment('invalidKey', 'sample_feature') == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'invalidKey', 'off'))
+
+ assert await client.get_treatment('invalidKey', 'invalid_feature') == 'control'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client) # No impressions should be present
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ assert await client.get_treatment('invalidKey', 'killed_feature') == 'defTreatment'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ assert await client.get_treatment('invalidKey', 'all_feature') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('all_feature', 'invalidKey', 'on'))
+
+ # testing WHITELIST matcher
+ assert await client.get_treatment('whitelisted_user', 'whitelist_feature') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('whitelist_feature', 'whitelisted_user', 'on'))
+ assert await client.get_treatment('unwhitelisted_user', 'whitelist_feature') == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('whitelist_feature', 'unwhitelisted_user', 'off'))
+
+ # testing INVALID matcher
+ assert await client.get_treatment('some_user_key', 'invalid_matcher_feature') == 'control'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client) # No impressions should be present
+
+ # testing Dependency matcher
+ assert await client.get_treatment('somekey', 'dependency_test') == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('dependency_test', 'somekey', 'off'))
+
+ # testing boolean matcher
+ assert await client.get_treatment('True', 'boolean_test') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('boolean_test', 'True', 'on'))
+
+ # testing regex matcher
+ assert await client.get_treatment('abc4', 'regex_test') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('regex_test', 'abc4', 'on'))
+
+ # test fallback treatment
+ assert await client.get_treatment('user4321', 'fallback_feature') == 'on-local'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client) # No impressions should be present
+
+ if skip_rbs:
+ return
+
+ # test prerequisites matcher
+ assert await client.get_treatment('abc4', 'prereq_feature') == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('prereq_feature', 'abc4', 'on'))
+
+ # test prerequisites matcher
+ assert await client.get_treatment('user1234', 'prereq_feature') == 'off_default'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('prereq_feature', 'user1234', 'off_default'))
+
+ # test rule based segment matcher
+ assert await client.get_treatment('bilal@split.io', 'rbs_feature_flag', {'email': 'bilal@split.io'}) == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('rbs_feature_flag', 'bilal@split.io', 'on'))
+
+ # test rule based segment matcher
+ assert await client.get_treatment('mauro@split.io', 'rbs_feature_flag', {'email': 'mauro@split.io'}) == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('rbs_feature_flag', 'mauro@split.io', 'off'))
+
+async def _get_treatment_with_config_async(factory):
+ """Test client.get_treatment_with_config()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = await client.get_treatment_with_config('user1', 'sample_feature')
+ assert result == ('on', '{"size":15,"test":20}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'))
+
+ result = await client.get_treatment_with_config('invalidKey', 'sample_feature')
+ assert result == ('off', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'invalidKey', 'off'))
+
+ result = await client.get_treatment_with_config('invalidKey', 'invalid_feature')
+ assert result == ('control', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client)
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = await client.get_treatment_with_config('invalidKey', 'killed_feature')
+ assert ('defTreatment', '{"size":15,"defTreatment":true}') == result
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = await client.get_treatment_with_config('invalidKey', 'all_feature')
+ assert result == ('on', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('all_feature', 'invalidKey', 'on'))
+
+ # test fallback treatment
+ assert await client.get_treatment_with_config('user4321', 'fallback_feature') == ('on-local', '{"prop": "val"}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client) # No impressions should be present
+
+async def _get_treatments_async(factory):
+ """Test client.get_treatments()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = await client.get_treatments('user1', ['sample_feature'])
+ assert len(result) == 1
+ assert result['sample_feature'] == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'))
+
+ result = await client.get_treatments('invalidKey', ['sample_feature'])
+ assert len(result) == 1
+ assert result['sample_feature'] == 'off'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'invalidKey', 'off'))
+
+ result = await client.get_treatments('invalidKey', ['invalid_feature'])
+ assert len(result) == 1
+ assert result['invalid_feature'] == 'control'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client)
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = await client.get_treatments('invalidKey', ['killed_feature'])
+ assert len(result) == 1
+ assert result['killed_feature'] == 'defTreatment'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = await client.get_treatments('invalidKey', ['all_feature'])
+ assert len(result) == 1
+ assert result['all_feature'] == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('all_feature', 'invalidKey', 'on'))
+
+ # test fallback treatment
+ assert await client.get_treatments('user4321', ['fallback_feature']) == {'fallback_feature': 'on-local'}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client) # No impressions should be present
+
+async def _get_treatments_with_config_async(factory):
+ """Test client.get_treatments_with_config()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+
+ result = await client.get_treatments_with_config('user1', ['sample_feature'])
+ assert len(result) == 1
+ assert result['sample_feature'] == ('on', '{"size":15,"test":20}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'))
+
+ result = await client.get_treatments_with_config('invalidKey', ['sample_feature'])
+ assert len(result) == 1
+ assert result['sample_feature'] == ('off', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'invalidKey', 'off'))
+
+ result = await client.get_treatments_with_config('invalidKey', ['invalid_feature'])
+ assert len(result) == 1
+ assert result['invalid_feature'] == ('control', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client)
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = await client.get_treatments_with_config('invalidKey', ['killed_feature'])
+ assert len(result) == 1
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = await client.get_treatments_with_config('invalidKey', ['all_feature'])
+ assert len(result) == 1
+ assert result['all_feature'] == ('on', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('all_feature', 'invalidKey', 'on'))
+
+ # test fallback treatment
+ assert await client.get_treatments_with_config('user4321', ['fallback_feature']) == {'fallback_feature': ('on-local', '{"prop": "val"}')}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client) # No impressions should be present
+
+async def _get_treatments_by_flag_set_async(factory):
+ """Test client.get_treatments_by_flag_set()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = await client.get_treatments_by_flag_set('user1', 'set1')
+ assert len(result) == 2
+ assert result == {'sample_feature': 'on', 'whitelist_feature': 'off'}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'), ('whitelist_feature', 'user1', 'off'))
+
+ result = await client.get_treatments_by_flag_set('invalidKey', 'invalid_set')
+ assert len(result) == 0
+ assert result == {}
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = await client.get_treatments_by_flag_set('invalidKey', 'set3')
+ assert len(result) == 1
+ assert result['killed_feature'] == 'defTreatment'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = await client.get_treatments_by_flag_set('invalidKey', 'set4')
+ assert len(result) == 1
+ assert result['all_feature'] == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('all_feature', 'invalidKey', 'on'))
+
+async def _get_treatments_by_flag_sets_async(factory):
+ """Test client.get_treatments_by_flag_sets()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = await client.get_treatments_by_flag_sets('user1', ['set1'])
+ assert len(result) == 2
+ assert result == {'sample_feature': 'on', 'whitelist_feature': 'off'}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'), ('whitelist_feature', 'user1', 'off'))
+
+ result = await client.get_treatments_by_flag_sets('invalidKey', ['invalid_set'])
+ assert len(result) == 0
+ assert result == {}
+
+ result = await client.get_treatments_by_flag_sets('invalidKey', [])
+ assert len(result) == 0
+ assert result == {}
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = await client.get_treatments_by_flag_sets('invalidKey', ['set3'])
+ assert len(result) == 1
+ assert result['killed_feature'] == 'defTreatment'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = await client.get_treatments_by_flag_sets('user1', ['set4'])
+ assert len(result) == 1
+ assert result['all_feature'] == 'on'
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('all_feature', 'user1', 'on'))
+
+async def _get_treatments_with_config_by_flag_set_async(factory):
+ """Test client.get_treatments_with_config_by_flag_set()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = await client.get_treatments_with_config_by_flag_set('user1', 'set1')
+ assert len(result) == 2
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'), 'whitelist_feature': ('off', None)}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'), ('whitelist_feature', 'user1', 'off'))
+
+ result = await client.get_treatments_with_config_by_flag_set('invalidKey', 'invalid_set')
+ assert len(result) == 0
+ assert result == {}
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = await client.get_treatments_with_config_by_flag_set('invalidKey', 'set3')
+ assert len(result) == 1
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = await client.get_treatments_with_config_by_flag_set('invalidKey', 'set4')
+ assert len(result) == 1
+ assert result['all_feature'] == ('on', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('all_feature', 'invalidKey', 'on'))
+
+async def _get_treatments_with_config_by_flag_sets_async(factory):
+ """Test client.get_treatments_with_config_by_flag_sets()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ result = await client.get_treatments_with_config_by_flag_sets('user1', ['set1'])
+ assert len(result) == 2
+ assert result == {'sample_feature': ('on', '{"size":15,"test":20}'), 'whitelist_feature': ('off', None)}
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('sample_feature', 'user1', 'on'), ('whitelist_feature', 'user1', 'off'))
+
+ result = await client.get_treatments_with_config_by_flag_sets('invalidKey', ['invalid_set'])
+ assert len(result) == 0
+ assert result == {}
+
+ result = await client.get_treatments_with_config_by_flag_sets('invalidKey', [])
+ assert len(result) == 0
+ assert result == {}
+
+ # testing a killed feature. No matter what the key, must return default treatment
+ result = await client.get_treatments_with_config_by_flag_sets('invalidKey', ['set3'])
+ assert len(result) == 1
+ assert result['killed_feature'] == ('defTreatment', '{"size":15,"defTreatment":true}')
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('killed_feature', 'invalidKey', 'defTreatment'))
+
+ # testing ALL matcher
+ result = await client.get_treatments_with_config_by_flag_sets('user1', ['set4'])
+ assert len(result) == 1
+ assert result['all_feature'] == ('on', None)
+ if not isinstance(factory._recorder._impressions_manager._strategy, StrategyNoneMode):
+ await _validate_last_impressions_async(client, ('all_feature', 'user1', 'on'))
+
+async def _track_async(factory):
+ """Test client.track()."""
+ try:
+ client = factory.client()
+ except:
+ pass
+ assert(await client.track('user1', 'user', 'conversion', 1, {"prop1": "value1"}))
+ assert(not await client.track(None, 'user', 'conversion'))
+ assert(not await client.track('user1', None, 'conversion'))
+ assert(not await client.track('user1', 'user', None))
+ await _validate_last_events_async(
+ client,
+ ('user1', 'user', 'conversion', 1, "{'prop1': 'value1'}")
+ )
+
+async def _manager_methods_async(factory, skip_rbs=False):
+ """Test manager.split/splits."""
+ try:
+ manager = factory.manager()
+ except:
+ pass
+ result = await manager.split('all_feature')
+ assert result.name == 'all_feature'
+ assert result.traffic_type is None
+ assert result.killed is False
+ assert len(result.treatments) == 2
+ assert result.change_number == 123
+ assert result.configs == {}
+
+ result = await manager.split('killed_feature')
+ assert result.name == 'killed_feature'
+ assert result.traffic_type is None
+ assert result.killed is True
+ assert len(result.treatments) == 2
+ assert result.change_number == 123
+ assert result.configs['defTreatment'] == '{"size":15,"defTreatment":true}'
+ assert result.configs['off'] == '{"size":15,"test":20}'
+
+ result = await manager.split('sample_feature')
+ assert result.name == 'sample_feature'
+ assert result.traffic_type is None
+ assert result.killed is False
+ assert len(result.treatments) == 2
+ assert result.change_number == 123
+ assert result.configs['on'] == '{"size":15,"test":20}'
+
+ if skip_rbs:
+ assert len(await manager.split_names()) == 7
+ assert len(await manager.splits()) == 7
+ return
+
+ assert len(await manager.split_names()) == 9
+ assert len(await manager.splits()) == 9
\ No newline at end of file
diff --git a/tests/integration/test_pluggable_integration.py b/tests/integration/test_pluggable_integration.py
new file mode 100644
index 00000000..59534193
--- /dev/null
+++ b/tests/integration/test_pluggable_integration.py
@@ -0,0 +1,443 @@
+"""Pluggable storage end to end tests."""
+#pylint: disable=no-self-use,protected-access,line-too-long,too-few-public-methods
+import pytest
+import json
+import os
+
+from splitio.client.util import get_metadata
+from splitio.models import splits, impressions, events
+from splitio.storage.pluggable import PluggableEventsStorage, PluggableImpressionsStorage, PluggableSegmentStorage, \
+ PluggableSplitStorage, PluggableEventsStorageAsync, PluggableImpressionsStorageAsync, PluggableSegmentStorageAsync,\
+ PluggableSplitStorageAsync
+from splitio.client.config import DEFAULT_CONFIG
+from tests.storage.test_pluggable import StorageMockAdapter, StorageMockAdapterAsync
+
+class PluggableSplitStorageIntegrationTests(object):
+ """Pluggable Split storage e2e tests."""
+
+ def test_put_fetch(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapter()
+ try:
+ storage = PluggableSplitStorage(adapter)
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'split_changes.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ adapter.set(storage._prefix.format(feature_flag_name=split['name']), split)
+ adapter.increment(storage._traffic_type_prefix.format(traffic_type_name=split['trafficTypeName']), 1)
+ adapter.set(storage._feature_flag_till_prefix, data['ff']['t'])
+
+ split_objects = [splits.from_raw(raw) for raw in data['ff']['d']]
+ for split_object in split_objects:
+ raw = split_object.to_json()
+
+ original_splits = {split.name: split for split in split_objects}
+ fetched_splits = {name: storage.get(name) for name in original_splits.keys()}
+
+ assert set(original_splits.keys()) == set(fetched_splits.keys())
+
+ for original_split in original_splits.values():
+ fetched_split = fetched_splits[original_split.name]
+ assert original_split.traffic_type_name == fetched_split.traffic_type_name
+ assert original_split.seed == fetched_split.seed
+ assert original_split.algo == fetched_split.algo
+ assert original_split.status == fetched_split.status
+ assert original_split.change_number == fetched_split.change_number
+ assert original_split.killed == fetched_split.killed
+ assert original_split.default_treatment == fetched_split.default_treatment
+ for index, original_condition in enumerate(original_split.conditions):
+ fetched_condition = fetched_split.conditions[index]
+ assert original_condition.label == fetched_condition.label
+ assert original_condition.condition_type == fetched_condition.condition_type
+ assert len(original_condition.matchers) == len(fetched_condition.matchers)
+ assert len(original_condition.partitions) == len(fetched_condition.partitions)
+
+ adapter.set(storage._feature_flag_till_prefix, data['ff']['t'])
+ assert storage.get_change_number() == data['ff']['t']
+
+ assert storage.is_valid_traffic_type('user') is True
+ assert storage.is_valid_traffic_type('account') is True
+ assert storage.is_valid_traffic_type('anything-else') is False
+
+ finally:
+ to_delete = [
+ "SPLITIO.split.sample_feature",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.all_feature",
+ "SPLITIO.split.killed_feature",
+ "SPLITIO.split.Risk_Max_Deductible",
+ "SPLITIO.split.whitelist_feature",
+ "SPLITIO.split.regex_test",
+ "SPLITIO.split.boolean_test",
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.trafficType.user",
+ "SPLITIO.trafficType.account"
+ ]
+ for item in to_delete:
+ adapter.delete(item)
+
+ storage = PluggableSplitStorage(adapter)
+ assert storage.is_valid_traffic_type('user') is False
+ assert storage.is_valid_traffic_type('account') is False
+
+ def test_get_all(self):
+ """Test get all names & splits."""
+ adapter = StorageMockAdapter()
+ try:
+ storage = PluggableSplitStorage(adapter)
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'split_changes.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ adapter.set(storage._prefix.format(feature_flag_name=split['name']), split)
+ adapter.increment(storage._traffic_type_prefix.format(traffic_type_name=split['trafficTypeName']), 1)
+ adapter.set(storage._feature_flag_till_prefix, data['ff']['t'])
+
+ split_objects = [splits.from_raw(raw) for raw in data['ff']['d']]
+ original_splits = {split.name: split for split in split_objects}
+ fetched_names = storage.get_split_names()
+ fetched_splits = {split.name: split for split in storage.get_all_splits()}
+ assert set(fetched_names) == set(fetched_splits.keys())
+
+ for original_split in original_splits.values():
+ fetched_split = fetched_splits[original_split.name]
+ assert original_split.traffic_type_name == fetched_split.traffic_type_name
+ assert original_split.seed == fetched_split.seed
+ assert original_split.algo == fetched_split.algo
+ assert original_split.status == fetched_split.status
+ assert original_split.change_number == fetched_split.change_number
+ assert original_split.killed == fetched_split.killed
+ assert original_split.default_treatment == fetched_split.default_treatment
+ for index, original_condition in enumerate(original_split.conditions):
+ fetched_condition = fetched_split.conditions[index]
+ assert original_condition.label == fetched_condition.label
+ assert original_condition.condition_type == fetched_condition.condition_type
+ assert len(original_condition.matchers) == len(fetched_condition.matchers)
+ assert len(original_condition.partitions) == len(fetched_condition.partitions)
+ finally:
+ [adapter.delete(key) for key in ['SPLITIO.split.sample_feature',
+ 'SPLITIO.splits.till',
+ 'SPLITIO.split.all_feature',
+ 'SPLITIO.split.killed_feature',
+ 'SPLITIO.split.Risk_Max_Deductible',
+ 'SPLITIO.split.whitelist_feature',
+ 'SPLITIO.split.regex_test',
+ 'SPLITIO.split.boolean_test',
+ 'SPLITIO.split.dependency_test']]
+
+
+class PluggableSegmentStorageIntegrationTests(object):
+ """Pluggable Segment storage e2e tests."""
+
+ def test_put_fetch_contains(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapter()
+ try:
+ storage = PluggableSegmentStorage(adapter)
+ adapter.set(storage._prefix.format(segment_name='some_segment'), {'key1', 'key2', 'key3', 'key4'})
+ adapter.set(storage._segment_till_prefix.format(segment_name='some_segment'), 123)
+ assert storage.segment_contains('some_segment', 'key0') is False
+ assert storage.segment_contains('some_segment', 'key1') is True
+ assert storage.segment_contains('some_segment', 'key2') is True
+ assert storage.segment_contains('some_segment', 'key3') is True
+ assert storage.segment_contains('some_segment', 'key4') is True
+ assert storage.segment_contains('some_segment', 'key5') is False
+
+ fetched = storage.get('some_segment')
+ assert fetched.keys == set(['key1', 'key2', 'key3', 'key4'])
+ assert fetched.change_number == 123
+ finally:
+ adapter.delete('SPLITIO.segment.some_segment')
+ adapter.delete('SPLITIO.segment.some_segment.till')
+
+
+class PluggableImpressionsStorageIntegrationTests(object):
+ """Pluggable Impressions storage e2e tests."""
+
+ def _put_impressions(self, adapter, metadata):
+ storage = PluggableImpressionsStorage(adapter, metadata)
+ storage.put([
+ impressions.Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ impressions.Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ impressions.Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ ])
+
+
+ def test_put_fetch_contains(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapter()
+ try:
+ self._put_impressions(adapter, get_metadata({}))
+
+ imps = adapter.pop_items('SPLITIO.impressions')
+ assert len(imps) == 3
+ for rawImpression in imps:
+ impression = json.loads(rawImpression)
+ assert impression['m']['i'] != 'NA'
+ assert impression['m']['n'] != 'NA'
+ finally:
+ adapter.delete('SPLITIO.impressions')
+
+ def test_put_fetch_contains_ip_address_disabled(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapter()
+ try:
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': False})
+ self._put_impressions(adapter, get_metadata(cfg))
+
+ imps = adapter.pop_items('SPLITIO.impressions')
+ assert len(imps) == 3
+ for rawImpression in imps:
+ impression = json.loads(rawImpression)
+ assert impression['m']['i'] == 'NA'
+ assert impression['m']['n'] == 'NA'
+ finally:
+ adapter.delete('SPLITIO.impressions')
+
+
+class PluggableEventsStorageIntegrationTests(object):
+ """Pluggable Events storage e2e tests."""
+ def _put_events(self, adapter, metadata):
+ storage = PluggableEventsStorage(adapter, metadata)
+ storage.put([
+ events.EventWrapper(
+ event=events.Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ events.EventWrapper(
+ event=events.Event('key2', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ events.EventWrapper(
+ event=events.Event('key3', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ ])
+
+ def test_put_fetch_contains(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapter()
+ try:
+ self._put_events(adapter, get_metadata({}))
+ evts = adapter.pop_items('SPLITIO.events')
+ assert len(evts) == 3
+ for rawEvent in evts:
+ event = json.loads(rawEvent)
+ assert event['m']['i'] != 'NA'
+ assert event['m']['n'] != 'NA'
+ finally:
+ adapter.delete('SPLITIO.events')
+
+ def test_put_fetch_contains_ip_address_disabled(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapter()
+ try:
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': False})
+ self._put_events(adapter, get_metadata(cfg))
+
+ evts = adapter.pop_items('SPLITIO.events')
+ assert len(evts) == 3
+ for rawEvent in evts:
+ event = json.loads(rawEvent)
+ assert event['m']['i'] == 'NA'
+ assert event['m']['n'] == 'NA'
+ finally:
+ adapter.delete('SPLITIO.events')
+
+
+class PluggableSplitStorageIntegrationAsyncTests(object):
+ """Pluggable Split storage e2e tests."""
+
+ @pytest.mark.asyncio
+ async def test_put_fetch(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapterAsync()
+ try:
+ storage = PluggableSplitStorageAsync(adapter)
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'split_changes.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await adapter.set(storage._prefix.format(feature_flag_name=split['name']), split)
+ await adapter.increment(storage._traffic_type_prefix.format(traffic_type_name=split['trafficTypeName']), 1)
+ await adapter.set(storage._feature_flag_till_prefix, data['ff']['t'])
+
+ split_objects = [splits.from_raw(raw) for raw in data['ff']['d']]
+ for split_object in split_objects:
+ raw = split_object.to_json()
+
+ original_splits = {split.name: split for split in split_objects}
+ fetched_splits = {name: await storage.get(name) for name in original_splits.keys()}
+
+ assert set(original_splits.keys()) == set(fetched_splits.keys())
+
+ for original_split in original_splits.values():
+ fetched_split = fetched_splits[original_split.name]
+ assert original_split.traffic_type_name == fetched_split.traffic_type_name
+ assert original_split.seed == fetched_split.seed
+ assert original_split.algo == fetched_split.algo
+ assert original_split.status == fetched_split.status
+ assert original_split.change_number == fetched_split.change_number
+ assert original_split.killed == fetched_split.killed
+ assert original_split.default_treatment == fetched_split.default_treatment
+ for index, original_condition in enumerate(original_split.conditions):
+ fetched_condition = fetched_split.conditions[index]
+ assert original_condition.label == fetched_condition.label
+ assert original_condition.condition_type == fetched_condition.condition_type
+ assert len(original_condition.matchers) == len(fetched_condition.matchers)
+ assert len(original_condition.partitions) == len(fetched_condition.partitions)
+
+ await adapter.set(storage._feature_flag_till_prefix, data['ff']['t'])
+ assert await storage.get_change_number() == data['ff']['t']
+
+ assert await storage.is_valid_traffic_type('user') is True
+ assert await storage.is_valid_traffic_type('account') is True
+ assert await storage.is_valid_traffic_type('anything-else') is False
+
+ finally:
+ to_delete = [
+ "SPLITIO.split.sample_feature",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.all_feature",
+ "SPLITIO.split.killed_feature",
+ "SPLITIO.split.Risk_Max_Deductible",
+ "SPLITIO.split.whitelist_feature",
+ "SPLITIO.split.regex_test",
+ "SPLITIO.split.boolean_test",
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.trafficType.user",
+ "SPLITIO.trafficType.account"
+ ]
+ for item in to_delete:
+ await adapter.delete(item)
+
+ storage = PluggableSplitStorageAsync(adapter)
+ assert await storage.is_valid_traffic_type('user') is False
+ assert await storage.is_valid_traffic_type('account') is False
+
+ @pytest.mark.asyncio
+ async def test_get_all(self):
+ """Test get all names & splits."""
+ adapter = StorageMockAdapterAsync()
+ try:
+ storage = PluggableSplitStorageAsync(adapter)
+ split_fn = os.path.join(os.path.dirname(__file__), 'files', 'split_changes.json')
+ with open(split_fn, 'r') as flo:
+ data = json.loads(flo.read())
+ for split in data['ff']['d']:
+ await adapter.set(storage._prefix.format(feature_flag_name=split['name']), split)
+ await adapter.increment(storage._traffic_type_prefix.format(traffic_type_name=split['trafficTypeName']), 1)
+ await adapter.set(storage._feature_flag_till_prefix, data['ff']['t'])
+
+ split_objects = [splits.from_raw(raw) for raw in data['ff']['d']]
+ original_splits = {split.name: split for split in split_objects}
+ fetched_names = await storage.get_split_names()
+ fetched_splits = {split.name: split for split in await storage.get_all_splits()}
+ assert set(fetched_names) == set(fetched_splits.keys())
+
+ for original_split in original_splits.values():
+ fetched_split = fetched_splits[original_split.name]
+ assert original_split.traffic_type_name == fetched_split.traffic_type_name
+ assert original_split.seed == fetched_split.seed
+ assert original_split.algo == fetched_split.algo
+ assert original_split.status == fetched_split.status
+ assert original_split.change_number == fetched_split.change_number
+ assert original_split.killed == fetched_split.killed
+ assert original_split.default_treatment == fetched_split.default_treatment
+ for index, original_condition in enumerate(original_split.conditions):
+ fetched_condition = fetched_split.conditions[index]
+ assert original_condition.label == fetched_condition.label
+ assert original_condition.condition_type == fetched_condition.condition_type
+ assert len(original_condition.matchers) == len(fetched_condition.matchers)
+ assert len(original_condition.partitions) == len(fetched_condition.partitions)
+ finally:
+ [await adapter.delete(key) for key in ['SPLITIO.split.sample_feature',
+ 'SPLITIO.splits.till',
+ 'SPLITIO.split.all_feature',
+ 'SPLITIO.split.killed_feature',
+ 'SPLITIO.split.Risk_Max_Deductible',
+ 'SPLITIO.split.whitelist_feature',
+ 'SPLITIO.split.regex_test',
+ 'SPLITIO.split.boolean_test',
+ 'SPLITIO.split.dependency_test']]
+
+
+class PluggableSegmentStorageIntegrationAsyncTests(object):
+ """Pluggable Segment storage e2e tests."""
+
+ @pytest.mark.asyncio
+ async def test_put_fetch_contains(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapterAsync()
+ try:
+ storage = PluggableSegmentStorageAsync(adapter)
+ await adapter.set(storage._prefix.format(segment_name='some_segment'), {'key1', 'key2', 'key3', 'key4'})
+ await adapter.set(storage._segment_till_prefix.format(segment_name='some_segment'), 123)
+ assert await storage.segment_contains('some_segment', 'key0') is False
+ assert await storage.segment_contains('some_segment', 'key1') is True
+ assert await storage.segment_contains('some_segment', 'key2') is True
+ assert await storage.segment_contains('some_segment', 'key3') is True
+ assert await storage.segment_contains('some_segment', 'key4') is True
+ assert await storage.segment_contains('some_segment', 'key5') is False
+
+ fetched = await storage.get('some_segment')
+ assert fetched.keys == set(['key1', 'key2', 'key3', 'key4'])
+ assert fetched.change_number == 123
+ finally:
+ await adapter.delete('SPLITIO.segment.some_segment')
+ await adapter.delete('SPLITIO.segment.some_segment.till')
+
+class PluggableEventsStorageIntegrationAsyncTests(object):
+ """Pluggable Events storage e2e tests."""
+ async def _put_events(self, adapter, metadata):
+ storage = PluggableEventsStorageAsync(adapter, metadata)
+ await storage.put([
+ events.EventWrapper(
+ event=events.Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ events.EventWrapper(
+ event=events.Event('key2', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ events.EventWrapper(
+ event=events.Event('key3', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ ])
+
+ @pytest.mark.asyncio
+ async def test_put_fetch_contains(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapterAsync()
+ try:
+ await self._put_events(adapter, get_metadata({}))
+ evts = await adapter.pop_items('SPLITIO.events')
+ assert len(evts) == 3
+ for rawEvent in evts:
+ event = json.loads(rawEvent)
+ assert event['m']['i'] != 'NA'
+ assert event['m']['n'] != 'NA'
+ finally:
+ await adapter.delete('SPLITIO.events')
+
+ @pytest.mark.asyncio
+ async def test_put_fetch_contains_ip_address_disabled(self):
+ """Test storing and retrieving splits in pluggable."""
+ adapter = StorageMockAdapterAsync()
+ try:
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': False})
+ await self._put_events(adapter, get_metadata(cfg))
+
+ evts = await adapter.pop_items('SPLITIO.events')
+ assert len(evts) == 3
+ for rawEvent in evts:
+ event = json.loads(rawEvent)
+ assert event['m']['i'] == 'NA'
+ assert event['m']['n'] == 'NA'
+ finally:
+ await adapter.delete('SPLITIO.events')
diff --git a/tests/integration/test_redis_integration.py b/tests/integration/test_redis_integration.py
index 52b02db8..4c85beda 100644
--- a/tests/integration/test_redis_integration.py
+++ b/tests/integration/test_redis_integration.py
@@ -1,32 +1,37 @@
"""Redis storage end to end tests."""
#pylint: disable=no-self-use,protected-access,line-too-long,too-few-public-methods
-
+import pytest
import json
import os
from splitio.client.util import get_metadata
from splitio.models import splits, impressions, events
from splitio.storage.redis import RedisSplitStorage, RedisSegmentStorage, RedisImpressionsStorage, \
- RedisEventsStorage, RedisTelemetryStorage
-from splitio.storage.adapters.redis import _build_default_client
+ RedisEventsStorage, RedisEventsStorageAsync, RedisImpressionsStorageAsync, RedisSegmentStorageAsync, \
+ RedisSplitStorageAsync
+from splitio.storage.adapters.redis import _build_default_client, _build_default_client_async, StrictRedis
from splitio.client.config import DEFAULT_CONFIG
-class SplitStorageTests(object):
+class RedisSplitStorageTests(object):
"""Redis Split storage e2e tests."""
def test_put_fetch(self):
"""Test storing and retrieving splits in redis."""
- adapter = _build_default_client({})
+ redis = StrictRedis(host="localhost")
+ redis.acl_setuser(username='redis_user', enabled=True, passwords=["+split"], categories=["+admin"],
+ commands=["+@all"], keys=["~*"])
+ redis.close()
+ adapter = _build_default_client({'redisUsername': 'redis_user', 'redisPassword': 'split'})
try:
storage = RedisSplitStorage(adapter)
with open(os.path.join(os.path.dirname(__file__), 'files', 'split_changes.json'), 'r') as flo:
split_changes = json.load(flo)
- split_objects = [splits.from_raw(raw) for raw in split_changes['splits']]
+ split_objects = [splits.from_raw(raw) for raw in split_changes['ff']['d']]
for split_object in split_objects:
raw = split_object.to_json()
- adapter.set(RedisSplitStorage._SPLIT_KEY.format(split_name=split_object.name), json.dumps(raw))
+ adapter.set(RedisSplitStorage._FEATURE_FLAG_KEY.format(feature_flag_name=split_object.name), json.dumps(raw))
adapter.incr(RedisSplitStorage._TRAFFIC_TYPE_KEY.format(traffic_type_name=split_object.traffic_type_name))
original_splits = {split.name: split for split in split_objects}
@@ -50,8 +55,8 @@ def test_put_fetch(self):
assert len(original_condition.matchers) == len(fetched_condition.matchers)
assert len(original_condition.partitions) == len(fetched_condition.partitions)
- adapter.set(RedisSplitStorage._SPLIT_TILL_KEY, split_changes['till'])
- assert storage.get_change_number() == split_changes['till']
+ adapter.set(RedisSplitStorage._FEATURE_FLAG_TILL_KEY, split_changes['ff']['t'])
+ assert storage.get_change_number() == split_changes['ff']['t']
assert storage.is_valid_traffic_type('user') is True
assert storage.is_valid_traffic_type('account') is True
@@ -73,10 +78,12 @@ def test_put_fetch(self):
]
for item in to_delete:
adapter.delete(item)
-
storage = RedisSplitStorage(adapter)
assert storage.is_valid_traffic_type('user') is False
assert storage.is_valid_traffic_type('account') is False
+ redis = StrictRedis(host="localhost")
+ redis.acl_deluser("redis_user")
+ redis.close()
def test_get_all(self):
"""Test get all names & splits."""
@@ -86,10 +93,10 @@ def test_get_all(self):
with open(os.path.join(os.path.dirname(__file__), 'files', 'split_changes.json'), 'r') as flo:
split_changes = json.load(flo)
- split_objects = [splits.from_raw(raw) for raw in split_changes['splits']]
+ split_objects = [splits.from_raw(raw) for raw in split_changes['ff']['d']]
for split_object in split_objects:
raw = split_object.to_json()
- adapter.set(RedisSplitStorage._SPLIT_KEY.format(split_name=split_object.name), json.dumps(raw))
+ adapter.set(RedisSplitStorage._FEATURE_FLAG_KEY.format(feature_flag_name=split_object.name), json.dumps(raw))
original_splits = {split.name: split for split in split_objects}
fetched_names = storage.get_split_names()
@@ -124,7 +131,7 @@ def test_get_all(self):
'SPLITIO.split.dependency_test'
)
-class SegmentStorageTests(object):
+class RedisSegmentStorageTests(object):
"""Redis Segment storage e2e tests."""
def test_put_fetch_contains(self):
@@ -134,12 +141,12 @@ def test_put_fetch_contains(self):
storage = RedisSegmentStorage(adapter)
adapter.sadd(storage._get_key('some_segment'), 'key1', 'key2', 'key3', 'key4')
adapter.set(storage._get_till_key('some_segment'), 123)
- assert storage.segment_contains('some_segment', 'key0') is False
- assert storage.segment_contains('some_segment', 'key1') is True
- assert storage.segment_contains('some_segment', 'key2') is True
- assert storage.segment_contains('some_segment', 'key3') is True
- assert storage.segment_contains('some_segment', 'key4') is True
- assert storage.segment_contains('some_segment', 'key5') is False
+ assert storage.segment_contains('some_segment', 'key0') == 0
+ assert storage.segment_contains('some_segment', 'key1') == 1
+ assert storage.segment_contains('some_segment', 'key2') == 1
+ assert storage.segment_contains('some_segment', 'key3') == 1
+ assert storage.segment_contains('some_segment', 'key4') == 1
+ assert storage.segment_contains('some_segment', 'key5') == 0
fetched = storage.get('some_segment')
assert fetched.keys == set(['key1', 'key2', 'key3', 'key4'])
@@ -148,15 +155,15 @@ def test_put_fetch_contains(self):
adapter.delete('SPLITIO.segment.some_segment', 'SPLITIO.segment.some_segment.till')
-class ImpressionsStorageTests(object):
+class RedisImpressionsStorageTests(object):
"""Redis Impressions storage e2e tests."""
def _put_impressions(self, adapter, metadata):
storage = RedisImpressionsStorage(adapter, metadata)
storage.put([
- impressions.Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654),
- impressions.Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654),
- impressions.Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654)
+ impressions.Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ impressions.Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ impressions.Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
])
@@ -193,7 +200,7 @@ def test_put_fetch_contains_ip_address_disabled(self):
adapter.delete('SPLITIO.impressions')
-class EventsStorageTests(object):
+class RedisEventsStorageTests(object):
"""Redis Events storage e2e tests."""
def _put_events(self, adapter, metadata):
storage = RedisEventsStorage(adapter, metadata)
@@ -243,78 +250,239 @@ def test_put_fetch_contains_ip_address_disabled(self):
finally:
adapter.delete('SPLITIO.events')
+class RedisSplitStorageAsyncTests(object):
+ """Redis Split storage e2e tests."""
-class TelemetryStorageTests(object):
- """Redis Telemetry storage e2e tests."""
-
- def test_put_fetch_contains(self):
+ @pytest.mark.asyncio
+ async def test_put_fetch(self):
"""Test storing and retrieving splits in redis."""
- adapter = _build_default_client({})
- cfg = DEFAULT_CONFIG.copy()
- cfg.update({'IPAddressesEnabled': False})
- metadata = get_metadata(cfg)
- storage = RedisTelemetryStorage(adapter, metadata)
+ adapter = await _build_default_client_async({})
try:
+ storage = RedisSplitStorageAsync(adapter)
+ with open(os.path.join(os.path.dirname(__file__), 'files', 'split_changes.json'), 'r') as flo:
+ split_changes = json.load(flo)
- storage.inc_counter('counter1')
- storage.inc_counter('counter1')
- storage.inc_counter('counter2')
- assert adapter.get(storage._get_counter_key('counter1')) == '2'
- assert adapter.get(storage._get_counter_key('counter2')) == '1'
+ split_objects = [splits.from_raw(raw) for raw in split_changes['ff']['d']]
+ for split_object in split_objects:
+ raw = split_object.to_json()
+ await adapter.set(RedisSplitStorage._FEATURE_FLAG_KEY.format(feature_flag_name=split_object.name), json.dumps(raw))
+ await adapter.incr(RedisSplitStorage._TRAFFIC_TYPE_KEY.format(traffic_type_name=split_object.traffic_type_name))
+
+ original_splits = {split.name: split for split in split_objects}
+ fetched_splits = {name: await storage.get(name) for name in original_splits.keys()}
+
+ assert set(original_splits.keys()) == set(fetched_splits.keys())
+
+ for original_split in original_splits.values():
+ fetched_split = fetched_splits[original_split.name]
+ assert original_split.traffic_type_name == fetched_split.traffic_type_name
+ assert original_split.seed == fetched_split.seed
+ assert original_split.algo == fetched_split.algo
+ assert original_split.status == fetched_split.status
+ assert original_split.change_number == fetched_split.change_number
+ assert original_split.killed == fetched_split.killed
+ assert original_split.default_treatment == fetched_split.default_treatment
+ for index, original_condition in enumerate(original_split.conditions):
+ fetched_condition = fetched_split.conditions[index]
+ assert original_condition.label == fetched_condition.label
+ assert original_condition.condition_type == fetched_condition.condition_type
+ assert len(original_condition.matchers) == len(fetched_condition.matchers)
+ assert len(original_condition.partitions) == len(fetched_condition.partitions)
- storage.inc_latency('latency1', 3)
- storage.inc_latency('latency1', 3)
- storage.inc_latency('latency2', 6)
- assert adapter.get(storage._get_latency_key('latency1', 3)) == '2'
- assert adapter.get(storage._get_latency_key('latency2', 6)) == '1'
+ await adapter.set(RedisSplitStorageAsync._FEATURE_FLAG_TILL_KEY, split_changes['ff']['t'])
+ assert await storage.get_change_number() == split_changes['ff']['t']
- storage.put_gauge('gauge1', 3)
- storage.put_gauge('gauge2', 1)
- assert adapter.get(storage._get_gauge_key('gauge1')) == '3'
- assert adapter.get(storage._get_gauge_key('gauge2')) == '1'
+ assert await storage.is_valid_traffic_type('user') is True
+ assert await storage.is_valid_traffic_type('account') is True
+ assert await storage.is_valid_traffic_type('anything-else') is False
finally:
- adapter.delete(
- storage._get_counter_key('counter1'),
- storage._get_counter_key('counter2'),
- storage._get_latency_key('latency1', 3),
- storage._get_latency_key('latency2', 6),
- storage._get_gauge_key('gauge1'),
- storage._get_gauge_key('gauge2')
+ to_delete = [
+ "SPLITIO.split.sample_feature",
+ "SPLITIO.splits.till",
+ "SPLITIO.split.all_feature",
+ "SPLITIO.split.killed_feature",
+ "SPLITIO.split.Risk_Max_Deductible",
+ "SPLITIO.split.whitelist_feature",
+ "SPLITIO.split.regex_test",
+ "SPLITIO.split.boolean_test",
+ "SPLITIO.split.dependency_test",
+ "SPLITIO.trafficType.user",
+ "SPLITIO.trafficType.account"
+ ]
+ for item in to_delete:
+ await adapter.delete(item)
+
+ storage = RedisSplitStorageAsync(adapter)
+ assert await storage.is_valid_traffic_type('user') is False
+ assert await storage.is_valid_traffic_type('account') is False
+
+ @pytest.mark.asyncio
+ async def test_get_all(self):
+ """Test get all names & splits."""
+ adapter = await _build_default_client_async({})
+ try:
+ storage = RedisSplitStorageAsync(adapter)
+ with open(os.path.join(os.path.dirname(__file__), 'files', 'split_changes.json'), 'r') as flo:
+ split_changes = json.load(flo)
+
+ split_objects = [splits.from_raw(raw) for raw in split_changes['ff']['d']]
+ for split_object in split_objects:
+ raw = split_object.to_json()
+ await adapter.set(RedisSplitStorageAsync._FEATURE_FLAG_KEY.format(feature_flag_name=split_object.name), json.dumps(raw))
+
+ original_splits = {split.name: split for split in split_objects}
+ fetched_names = await storage.get_split_names()
+ fetched_splits = {split.name: split for split in await storage.get_all_splits()}
+ assert set(fetched_names) == set(fetched_splits.keys())
+
+ for original_split in original_splits.values():
+ fetched_split = fetched_splits[original_split.name]
+ assert original_split.traffic_type_name == fetched_split.traffic_type_name
+ assert original_split.seed == fetched_split.seed
+ assert original_split.algo == fetched_split.algo
+ assert original_split.status == fetched_split.status
+ assert original_split.change_number == fetched_split.change_number
+ assert original_split.killed == fetched_split.killed
+ assert original_split.default_treatment == fetched_split.default_treatment
+ for index, original_condition in enumerate(original_split.conditions):
+ fetched_condition = fetched_split.conditions[index]
+ assert original_condition.label == fetched_condition.label
+ assert original_condition.condition_type == fetched_condition.condition_type
+ assert len(original_condition.matchers) == len(fetched_condition.matchers)
+ assert len(original_condition.partitions) == len(fetched_condition.partitions)
+ finally:
+ await adapter.delete(
+ 'SPLITIO.split.sample_feature',
+ 'SPLITIO.splits.till',
+ 'SPLITIO.split.all_feature',
+ 'SPLITIO.split.killed_feature',
+ 'SPLITIO.split.Risk_Max_Deductible',
+ 'SPLITIO.split.whitelist_feature',
+ 'SPLITIO.split.regex_test',
+ 'SPLITIO.split.boolean_test',
+ 'SPLITIO.split.dependency_test'
)
- def test_put_fetch_contains_ip_address_disabled(self):
+class RedisSegmentStorageAsyncTests(object):
+ """Redis Segment storage e2e tests."""
+
+ @pytest.mark.asyncio
+ async def test_put_fetch_contains(self):
"""Test storing and retrieving splits in redis."""
- adapter = _build_default_client({})
- cfg = DEFAULT_CONFIG.copy()
- cfg.update({'IPAddressesEnabled': False})
- metadata = get_metadata(cfg)
- storage = RedisTelemetryStorage(adapter, metadata)
+ adapter = await _build_default_client_async({})
try:
+ storage = RedisSegmentStorageAsync(adapter)
+ await adapter.sadd(storage._get_key('some_segment'), 'key1', 'key2', 'key3', 'key4')
+ await adapter.set(storage._get_till_key('some_segment'), 123)
+ assert await storage.segment_contains('some_segment', 'key0') == 0
+ assert await storage.segment_contains('some_segment', 'key1') == 1
+ assert await storage.segment_contains('some_segment', 'key2') == 1
+ assert await storage.segment_contains('some_segment', 'key3') == 1
+ assert await storage.segment_contains('some_segment', 'key4') == 1
+ assert await storage.segment_contains('some_segment', 'key5') == 0
+
+ fetched = await storage.get('some_segment')
+ assert fetched.keys == set(['key1', 'key2', 'key3', 'key4'])
+ assert fetched.change_number == 123
+ finally:
+ await adapter.delete('SPLITIO.segment.some_segment', 'SPLITIO.segment.some_segment.till')
- storage.inc_counter('counter1')
- storage.inc_counter('counter1')
- storage.inc_counter('counter2')
- assert adapter.get(storage._get_counter_key('counter1')) == '2'
- assert adapter.get(storage._get_counter_key('counter2')) == '1'
+class RedisImpressionsStorageAsyncTests(object):
+ """Redis Impressions storage e2e tests."""
+
+ async def _put_impressions(self, adapter, metadata):
+ storage = RedisImpressionsStorageAsync(adapter, metadata)
+ await storage.put([
+ impressions.Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ impressions.Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ impressions.Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ ])
- storage.inc_latency('latency1', 3)
- storage.inc_latency('latency1', 3)
- storage.inc_latency('latency2', 6)
- assert adapter.get(storage._get_latency_key('latency1', 3)) == '2'
- assert adapter.get(storage._get_latency_key('latency2', 6)) == '1'
- storage.put_gauge('gauge1', 3)
- storage.put_gauge('gauge2', 1)
- assert adapter.get(storage._get_gauge_key('gauge1')) == '3'
- assert adapter.get(storage._get_gauge_key('gauge2')) == '1'
+ @pytest.mark.asyncio
+ async def test_put_fetch_contains(self):
+ """Test storing and retrieving splits in redis."""
+ adapter = await _build_default_client_async({})
+ try:
+ await self._put_impressions(adapter, get_metadata({}))
+ imps = await adapter.lrange('SPLITIO.impressions', 0, 2)
+ assert len(imps) == 3
+ for rawImpression in imps:
+ impression = json.loads(rawImpression)
+ assert impression['m']['i'] != 'NA'
+ assert impression['m']['n'] != 'NA'
finally:
- adapter.delete(
- storage._get_counter_key('counter1'),
- storage._get_counter_key('counter2'),
- storage._get_latency_key('latency1', 3),
- storage._get_latency_key('latency2', 6),
- storage._get_gauge_key('gauge1'),
- storage._get_gauge_key('gauge2')
- )
+ await adapter.delete('SPLITIO.impressions')
+
+ @pytest.mark.asyncio
+ async def test_put_fetch_contains_ip_address_disabled(self):
+ """Test storing and retrieving splits in redis."""
+ adapter = await _build_default_client_async({})
+ try:
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': False})
+ await self._put_impressions(adapter, get_metadata(cfg))
+
+ imps = await adapter.lrange('SPLITIO.impressions', 0, 2)
+ assert len(imps) == 3
+ for rawImpression in imps:
+ impression = json.loads(rawImpression)
+ assert impression['m']['i'] == 'NA'
+ assert impression['m']['n'] == 'NA'
+ finally:
+ await adapter.delete('SPLITIO.impressions')
+
+
+class RedisEventsStorageAsyncTests(object):
+ """Redis Events storage e2e tests."""
+ async def _put_events(self, adapter, metadata):
+ storage = RedisEventsStorageAsync(adapter, metadata)
+ await storage.put([
+ events.EventWrapper(
+ event=events.Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ events.EventWrapper(
+ event=events.Event('key2', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ events.EventWrapper(
+ event=events.Event('key3', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ ])
+
+ @pytest.mark.asyncio
+ async def test_put_fetch_contains(self):
+ """Test storing and retrieving splits in redis."""
+ adapter = await _build_default_client_async({})
+ try:
+ await self._put_events(adapter, get_metadata({}))
+ evts = await adapter.lrange('SPLITIO.events', 0, 2)
+ assert len(evts) == 3
+ for rawEvent in evts:
+ event = json.loads(rawEvent)
+ assert event['m']['i'] != 'NA'
+ assert event['m']['n'] != 'NA'
+ finally:
+ await adapter.delete('SPLITIO.events')
+
+ @pytest.mark.asyncio
+ async def test_put_fetch_contains_ip_address_disabled(self):
+ """Test storing and retrieving splits in redis."""
+ adapter = await _build_default_client_async({})
+ try:
+ cfg = DEFAULT_CONFIG.copy()
+ cfg.update({'IPAddressesEnabled': False})
+ await self._put_events(adapter, get_metadata(cfg))
+
+ evts = await adapter.lrange('SPLITIO.events', 0, 2)
+ assert len(evts) == 3
+ for rawEvent in evts:
+ event = json.loads(rawEvent)
+ assert event['m']['i'] == 'NA'
+ assert event['m']['n'] == 'NA'
+ finally:
+ await adapter.delete('SPLITIO.events')
diff --git a/tests/integration/test_streaming_e2e.py b/tests/integration/test_streaming_e2e.py
new file mode 100644
index 00000000..d7b3103a
--- /dev/null
+++ b/tests/integration/test_streaming_e2e.py
@@ -0,0 +1,2887 @@
+"""Streaming integration tests."""
+# pylint:disable=no-self-use,invalid-name,too-many-arguments,too-few-public-methods,line-too-long
+# pylint:disable=too-many-statements,too-many-locals,too-many-lines
+import threading
+import time
+import json
+import base64
+import pytest
+
+from queue import Queue
+from splitio.optional.loaders import asyncio
+from splitio.client.factory import get_factory, get_factory_async
+from splitio.models.events import SdkEvent
+from splitio.events.events_metadata import SdkEventType
+from tests.helpers.mockserver import SSEMockServer, SplitMockServer
+from urllib.parse import parse_qs
+from splitio.models.telemetry import StreamingEventTypes, SSESyncMode
+
+
+class StreamingIntegrationTests(object):
+ """Test streaming operation and failover."""
+
+ update_flag = False
+ metadata = []
+
+ def test_happiness(self):
+ """Test initialization & splits/segment updates."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'on', 'user', True)]},
+ 'rbs': {'s': -1, 't': -1, 'd': []}
+ },
+ 1: {'ff': {
+ 's': 1,
+ 't': 1,
+ 'd': []},
+ 'rbs': {'s': -1, 't': -1, 'd': []}
+ }
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000}
+ }
+
+ factory = get_factory('some_apikey', **kwargs)
+ factory.client().on(SdkEvent.SDK_UPDATE, self._update_callcack)
+ factory.block_until_ready(1)
+ assert factory.ready
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ time.sleep(1)
+ assert(factory._telemetry_evaluation_producer._telemetry_storage._streaming_events._streaming_events[len(factory._telemetry_evaluation_producer._telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.SYNC_MODE_UPDATE.value)
+ assert(factory._telemetry_evaluation_producer._telemetry_storage._streaming_events._streaming_events[len(factory._telemetry_evaluation_producer._telemetry_storage._streaming_events._streaming_events)-1]._data == SSESyncMode.STREAMING.value)
+ split_changes[1] = {
+ 'ff': {
+ 's': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'s': -1, 't': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []}, 'rbs': {'s': -1, 't': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(2))
+ time.sleep(1)
+ flag = False
+ for meta in self.metadata:
+ if 'split1' in meta.get_names():
+ assert meta.get_type() == SdkEventType.FLAG_UPDATE
+ flag = True
+ assert flag
+
+ assert factory.client().get_treatment('maldo', 'split1') == 'off'
+
+ split_changes[2] = {
+ 'ff': {
+ 's': 2,
+ 't': 3,
+ 'd': [make_split_with_segment('split2', 2, True, False,
+ 'off', 'user', 'off', 'segment1')]},
+ 'rbs': {'s': -1, 't': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': []}, 'rbs': {'s': -1, 't': -1, 'd': []}}
+ segment_changes[('segment1', -1)] = {
+ 'name': 'segment1',
+ 'added': ['maldo'],
+ 'removed': [],
+ 'since': -1,
+ 'till': 1
+ }
+ segment_changes[('segment1', 1)] = {'name': 'segment1', 'added': [],
+ 'removed': [], 'since': 1, 'till': 1}
+
+ sse_server.publish(make_split_change_event(3))
+ time.sleep(1)
+
+ self._reset_flags()
+ sse_server.publish(make_segment_change_event('segment1', 1))
+ time.sleep(1)
+ assert self.update_flag
+ assert self.metadata[len(self.metadata)-1].get_type() == SdkEventType.SEGMENTS_UPDATE
+ flag = False
+ for meta in self.metadata:
+ if 'split2' in meta.get_names():
+ assert meta.get_type() == SdkEventType.FLAG_UPDATE
+ flag = True
+ assert flag
+
+ assert factory.client().get_treatment('pindon', 'split2') == 'off'
+ assert factory.client().get_treatment('maldo', 'split2') == 'on'
+
+ self._reset_flags()
+ sse_server.publish(make_split_fast_change_event(4))
+ time.sleep(1)
+ assert self.update_flag
+ assert self.metadata[len(self.metadata)-1].get_type() == SdkEventType.FLAG_UPDATE
+ assert 'split5' in self.metadata[len(self.metadata)-1].get_names()
+ assert factory.client().get_treatment('maldo', 'split5') == 'on'
+
+ # Validate the SSE request
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after first notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after second notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Segment change notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/segmentChanges/segment1?since=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until segment1 since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/segmentChanges/segment1?since=1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ destroy_event = threading.Event()
+ factory.destroy(destroy_event)
+ destroy_event.wait()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ def _update_callcack(self, metadata):
+ self.update_flag = True
+ self.metadata.append(metadata)
+
+ def _reset_flags(self):
+ self.update_flag = False
+
+ def test_occupancy_flicker(self):
+ """Test that changes in occupancy switch between polling & streaming properly."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'s': -1, 't': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []},
+ 'rbs': {'s': -1, 't': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 10}
+ }
+
+ factory = get_factory('some_apikey', **kwargs)
+ factory.block_until_ready(1)
+ assert factory.ready
+ time.sleep(2)
+
+ # Get a hook of the task so we can query its status
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert not task.running()
+
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ # Make a change in the BE but don't send the event.
+ # After dropping occupancy, the sdk should switch to polling
+ # and perform a syncAll that gets this change
+ split_changes[1] = {
+ 'ff': {'s': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_occupancy('control_pri', 0))
+ sse_server.publish(make_occupancy('control_sec', 0))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert task.running()
+
+ # We make another chagne in the BE and don't send the event.
+ # We restore occupancy, and it should be fetched by the
+ # sync all after streaming is restored.
+ split_changes[2] = {
+ 'ff': {'s': 2,
+ 't': 3,
+ 'd': [make_simple_split('split1', 3, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_occupancy('control_pri', 1))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ # Now we make another change and send an event so it's propagated
+ split_changes[3] = {
+ 'ff': {'s': 3,
+ 't': 4,
+ 'd': [make_simple_split('split1', 4, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[4] = {'ff': {'s': 4, 't': 4, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(4))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'off'
+
+ # Kill the split
+ split_changes[4] = {
+ 'ff': {'s': 4,
+ 't': 5,
+ 'd': [make_simple_split('split1', 5, True, True, 'frula', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[5] = {'ff': {'s': 5, 't': 5, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_kill_event('split1', 'frula', 5))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'frula'
+
+ # Validate the SSE request
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after first notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after second notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=4&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Split kill
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=4&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=5&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ destroy_event = threading.Event()
+ factory.destroy(destroy_event)
+ destroy_event.wait()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ def test_start_without_occupancy(self):
+ """Test an SDK starting with occupancy on 0 and switching to streamin afterwards."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 0))
+ sse_server.publish(make_occupancy('control_sec', 0))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 10}
+ }
+
+ factory = get_factory('some_apikey', **kwargs)
+ factory.block_until_ready(1)
+ assert factory.ready
+ time.sleep(2)
+
+ # Get a hook of the task so we can query its status
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert task.running()
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ # Make a change in the BE but don't send the event.
+ # After restoring occupancy, the sdk should switch to polling
+ # and perform a syncAll that gets this change
+ split_changes[1] = {
+ 'ff': {'s': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_occupancy('control_sec', 1))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert not task.running()
+
+ # Validate the SSE request
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after push down
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after push restored
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Second iteration of previous syncAll
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ destroy_event = threading.Event()
+ factory.destroy(destroy_event)
+ destroy_event.wait()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ def test_streaming_status_changes(self):
+ """Test changes between streaming enabled, paused and disabled."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 10}
+ }
+
+ factory = get_factory('some_apikey', **kwargs)
+ factory.block_until_ready(1)
+ assert factory.ready
+ time.sleep(2)
+
+ # Get a hook of the task so we can query its status
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert not task.running()
+
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ # Make a change in the BE but don't send the event.
+ # After dropping occupancy, the sdk should switch to polling
+ # and perform a syncAll that gets this change
+ split_changes[1] = {
+ 'ff': {'s': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_control_event('STREAMING_PAUSED', 1))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert task.running()
+
+ # We make another chagne in the BE and don't send the event.
+ # We restore occupancy, and it should be fetched by the
+ # sync all after streaming is restored.
+ split_changes[2] = {
+ 'ff': {'s': 2,
+ 't': 3,
+ 'd': [make_simple_split('split1', 3, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_control_event('STREAMING_ENABLED', 2))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ # Now we make another change and send an event so it's propagated
+ split_changes[3] = {
+ 'ff': {'s': 3,
+ 't': 4,
+ 'd': [make_simple_split('split1', 4, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[4] = {'ff': {'s': 4, 't': 4, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(4))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert not task.running()
+
+ split_changes[4] = {
+ 'ff': {'s': 4,
+ 't': 5,
+ 'd': [make_simple_split('split1', 5, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[5] = {'ff': {'s': 5, 't': 5, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_control_event('STREAMING_DISABLED', 2))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert task.running()
+ assert 'PushStatusHandler' not in [t.name for t in threading.enumerate()]
+
+ # Validate the SSE request
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll on push down
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after push is up
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=4&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming disabled
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=4&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=5&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ destroy_event = threading.Event()
+ factory.destroy(destroy_event)
+ destroy_event.wait()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ def test_server_closes_connection(self):
+ """Test that if the server closes the connection, the whole flow is retried with BO."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'on', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {
+ 's': 1,
+ 't': 1,
+ 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 100,
+ 'segmentsRefreshRate': 100, 'metricsRefreshRate': 100,
+ 'impressionsRefreshRate': 100, 'eventsPushRate': 100}
+ }
+
+ factory = get_factory('some_apikey', **kwargs)
+ factory.block_until_ready(1)
+ assert factory.ready
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert not task.running()
+
+ time.sleep(1)
+ split_changes[1] = {'ff': {
+ 's': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(2))
+ time.sleep(1)
+ assert factory.client().get_treatment('maldo', 'split1') == 'off'
+
+ sse_server.publish(SSEMockServer.GRACEFUL_REQUEST_END)
+ time.sleep(1)
+ assert factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert task.running()
+
+ time.sleep(2) # wait for the backoff to expire so streaming gets re-attached
+
+ # re-send initial event AND occupancy
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+ time.sleep(2)
+
+ assert not task.running()
+ split_changes[2] = {'ff': {
+ 's': 2,
+ 't': 3,
+ 'd': [make_simple_split('split1', 3, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': [],
+ 'rbs': {'t': -1, 's': -1, 'd': []}}}
+ sse_server.publish(make_split_change_event(3))
+ time.sleep(1)
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ # Validate the SSE requests
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after first notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll on retryable error handling
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth after connection breaks
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected again
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after new notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ destroy_event = threading.Event()
+ factory.destroy(destroy_event)
+ destroy_event.wait()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ def test_ably_errors_handling(self):
+ """Test incoming ably errors and validate its handling."""
+ import logging
+ logger = logging.getLogger('splitio')
+ handler = logging.StreamHandler()
+ formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
+ handler.setFormatter(formatter)
+ logger.addHandler(handler)
+ logger.setLevel(logging.DEBUG)
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 10}
+ }
+
+ factory = get_factory('some_apikey', **kwargs)
+ factory.block_until_ready(1)
+ assert factory.ready
+ time.sleep(2)
+
+ # Get a hook of the task so we can query its status
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert not task.running()
+
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ # Make a change in the BE but don't send the event.
+ # We'll send an ignorable error and check it has nothing happened
+ split_changes[1] = {'ff': {
+ 's': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_ably_error_event(60000, 600))
+ time.sleep(1)
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ sse_server.publish(make_ably_error_event(40145, 401))
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ time.sleep(3)
+ assert task.running()
+ assert factory.client().get_treatment('maldo', 'split1') == 'off'
+
+ # Re-publish initial events so that the retry succeeds
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+ time.sleep(3)
+ assert not task.running()
+
+ # Assert streaming is working properly
+ split_changes[2] = {'ff': {
+ 's': 2,
+ 't': 3,
+ 'd': [make_simple_split('split1', 3, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(3))
+ time.sleep(2)
+ assert factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ # Send a non-retryable ably error
+ sse_server.publish(make_ably_error_event(40200, 402))
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ time.sleep(3)
+
+ # Assert sync-task is running and the streaming status handler thread is over
+ assert task.running()
+ assert 'PushStatusHandler' not in [t.name for t in threading.enumerate()]
+
+ # Validate the SSE requests
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll retriable error
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth again
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after push is up
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after non recoverable ably error
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ destroy_event = threading.Event()
+ factory.destroy(destroy_event)
+ destroy_event.wait()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ def test_change_number(mocker):
+ # test if changeNumber is missing
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 10}
+ }
+
+ factory = get_factory('some_apikey', **kwargs)
+ factory.block_until_ready(1)
+ assert factory.ready
+ time.sleep(2)
+
+ split_changes = make_split_fast_change_event(5).copy()
+ data = json.loads(split_changes['data'])
+ inner_data = json.loads(data['data'])
+ inner_data['changeNumber'] = None
+ data['data'] = json.dumps(inner_data)
+ split_changes['data'] = json.dumps(data)
+ sse_server.publish(split_changes)
+ time.sleep(1)
+ assert factory._storages['splits'].get_change_number() == 1
+
+ # Cleanup
+ destroy_event = threading.Event()
+ factory.destroy(destroy_event)
+ destroy_event.wait()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+
+class StreamingIntegrationAsyncTests(object):
+ """Test streaming operation and failover."""
+
+ update_flag = False
+ metadata = []
+
+ @pytest.mark.asyncio
+ async def test_happiness(self):
+ """Test initialization & splits/segment updates."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'on', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {
+ 's': 1,
+ 't': 1,
+ 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000}
+ }
+
+ factory = await get_factory_async('some_apikey', **kwargs)
+ await factory.block_until_ready(1)
+ await factory.client().on(SdkEvent.SDK_UPDATE, self._update_callcack)
+ assert factory.ready
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ await asyncio.sleep(1)
+ assert(factory._telemetry_evaluation_producer._telemetry_storage._streaming_events._streaming_events[len(factory._telemetry_evaluation_producer._telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.SYNC_MODE_UPDATE.value)
+ assert(factory._telemetry_evaluation_producer._telemetry_storage._streaming_events._streaming_events[len(factory._telemetry_evaluation_producer._telemetry_storage._streaming_events._streaming_events)-1]._data == SSESyncMode.STREAMING.value)
+ split_changes[1] = {'ff': {
+ 's': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(2))
+ await asyncio.sleep(1)
+ flag = False
+ for meta in self.metadata:
+ if 'split1' in meta.get_names():
+ assert meta.get_type() == SdkEventType.FLAG_UPDATE
+ flag = True
+ assert flag
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'off'
+
+ split_changes[2] = {'ff': {
+ 's': 2,
+ 't': 3,
+ 'd': [make_split_with_segment('split2', 2, True, False,
+ 'off', 'user', 'off', 'segment1')]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ segment_changes[('segment1', -1)] = {
+ 'name': 'segment1',
+ 'added': ['maldo'],
+ 'removed': [],
+ 'since': -1,
+ 'till': 1
+ }
+ segment_changes[('segment1', 1)] = {'name': 'segment1', 'added': [],
+ 'removed': [], 'since': 1, 'till': 1}
+
+ sse_server.publish(make_split_change_event(3))
+ await asyncio.sleep(1)
+ sse_server.publish(make_segment_change_event('segment1', 1))
+ await asyncio.sleep(1)
+
+ assert await factory.client().get_treatment('pindon', 'split2') == 'off'
+ assert await factory.client().get_treatment('maldo', 'split2') == 'on'
+
+ # Validate the SSE request
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after first notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after second notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Segment change notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/segmentChanges/segment1?since=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until segment1 since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/segmentChanges/segment1?since=1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ await factory.destroy()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ async def _update_callcack(self, metadata):
+ self.update_flag = True
+ self.metadata.append(metadata)
+
+ @pytest.mark.asyncio
+ async def test_occupancy_flicker(self):
+ """Test that changes in occupancy switch between polling & streaming properly."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []},
+ 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 10}
+ }
+
+ factory = await get_factory_async('some_apikey', **kwargs)
+ await factory.block_until_ready(1)
+ assert factory.ready
+ await asyncio.sleep(2)
+
+ # Get a hook of the task so we can query its status
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert not task.running()
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ # Make a change in the BE but don't send the event.
+ # After dropping occupancy, the sdk should switch to polling
+ # and perform a syncAll that gets this change
+ split_changes[1] = {'ff': {
+ 's': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_occupancy('control_pri', 0))
+ sse_server.publish(make_occupancy('control_sec', 0))
+ await asyncio.sleep(2)
+ assert await factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert task.running()
+
+ # We make another chagne in the BE and don't send the event.
+ # We restore occupancy, and it should be fetched by the
+ # sync all after streaming is restored.
+ split_changes[2] = {'ff': {
+ 's': 2,
+ 't': 3,
+ 'd': [make_simple_split('split1', 3, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_occupancy('control_pri', 1))
+ await asyncio.sleep(2)
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ # Now we make another change and send an event so it's propagated
+ split_changes[3] = {'ff': {
+ 's': 3,
+ 't': 4,
+ 'd': [make_simple_split('split1', 4, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[4] = {'ff': {'s': 4, 't': 4, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(4))
+ await asyncio.sleep(2)
+ assert await factory.client().get_treatment('maldo', 'split1') == 'off'
+
+ # Kill the split
+ split_changes[4] = {'ff': {
+ 's': 4,
+ 't': 5,
+ 'd': [make_simple_split('split1', 5, True, True, 'frula', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[5] = {'ff': {'s': 5, 't': 5, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_kill_event('split1', 'frula', 5))
+ await asyncio.sleep(2)
+ assert await factory.client().get_treatment('maldo', 'split1') == 'frula'
+
+ # Validate the SSE request
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after first notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after second notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=4&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Split kill
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=4&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=5&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ await factory.destroy()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_start_without_occupancy(self):
+ """Test an SDK starting with occupancy on 0 and switching to streamin afterwards."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 0))
+ sse_server.publish(make_occupancy('control_sec', 0))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 10}
+ }
+
+ factory = await get_factory_async('some_apikey', **kwargs)
+ try:
+ await factory.block_until_ready(1)
+ except Exception:
+ pass
+ assert factory.ready
+ await asyncio.sleep(2)
+
+ # Get a hook of the task so we can query its status
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert task.running()
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ # Make a change in the BE but don't send the event.
+ # After restoring occupancy, the sdk should switch to polling
+ # and perform a syncAll that gets this change
+ split_changes[1] = {'ff': {
+ 's': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_occupancy('control_sec', 1))
+ await asyncio.sleep(2)
+ assert await factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert not task.running()
+
+ # Validate the SSE request
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after push down
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after push restored
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Second iteration of previous syncAll
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ await factory.destroy()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_streaming_status_changes(self):
+ """Test changes between streaming enabled, paused and disabled."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 10}
+ }
+
+ factory = await get_factory_async('some_apikey', **kwargs)
+ try:
+ await factory.block_until_ready(1)
+ except Exception:
+ pass
+ assert factory.ready
+ await asyncio.sleep(2)
+
+ # Get a hook of the task so we can query its status
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert not task.running()
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ # Make a change in the BE but don't send the event.
+ # After dropping occupancy, the sdk should switch to polling
+ # and perform a syncAll that gets this change
+ split_changes[1] = {'ff': {
+ 's': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_control_event('STREAMING_PAUSED', 1))
+ await asyncio.sleep(4)
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert task.running()
+
+ # We make another chagne in the BE and don't send the event.
+ # We restore occupancy, and it should be fetched by the
+ # sync all after streaming is restored.
+ split_changes[2] = {'ff': {
+ 's': 2,
+ 't': 3,
+ 'd': [make_simple_split('split1', 3, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_control_event('STREAMING_ENABLED', 2))
+ await asyncio.sleep(2)
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ # Now we make another change and send an event so it's propagated
+ split_changes[3] = {'ff': {
+ 's': 3,
+ 't': 4,
+ 'd': [make_simple_split('split1', 4, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[4] = {'ff': {'s': 4, 't': 4, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(4))
+ await asyncio.sleep(2)
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert not task.running()
+
+ split_changes[4] = {'ff': {
+ 's': 4,
+ 't': 5,
+ 'd': [make_simple_split('split1', 5, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[5] = {'ff': {'s': 5, 't': 5, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_control_event('STREAMING_DISABLED', 2))
+ await asyncio.sleep(2)
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert task.running()
+
+ # Validate the SSE request
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll on push down
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after push is up
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=4&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming disabled
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=4&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=5&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ await factory.destroy()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_server_closes_connection(self):
+ """Test that if the server closes the connection, the whole flow is retried with BO."""
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'on', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 100,
+ 'segmentsRefreshRate': 100, 'metricsRefreshRate': 100,
+ 'impressionsRefreshRate': 100, 'eventsPushRate': 100}
+ }
+ factory = await get_factory_async('some_apikey', **kwargs)
+ await factory.block_until_ready(1)
+ assert factory.ready
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert not task.running()
+
+ await asyncio.sleep(1)
+ split_changes[1] = {'ff': {
+ 's': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(2))
+ await asyncio.sleep(1)
+ assert await factory.client().get_treatment('maldo', 'split1') == 'off'
+
+ sse_server.publish(SSEMockServer.GRACEFUL_REQUEST_END)
+ await asyncio.sleep(1)
+ assert await factory.client().get_treatment('maldo', 'split1') == 'off'
+ assert task.running()
+
+# # wait for the backoff to expire so streaming gets re-attached
+ await asyncio.sleep(2)
+
+ # re-send initial event AND occupancy
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+ await asyncio.sleep(2)
+
+ assert not task.running()
+ split_changes[2] = {'ff': {
+ 's': 2,
+ 't': 3,
+ 'd': [make_simple_split('split1', 3, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(3))
+ await asyncio.sleep(1)
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ # Validate the SSE requests
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after first notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll on retryable error handling
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth after connection breaks
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected again
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after new notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ await factory.destroy()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_ably_errors_handling(self):
+ """Test incoming ably errors and validate its handling."""
+ import logging
+ logger = logging.getLogger('splitio')
+ handler = logging.StreamHandler()
+ formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
+ handler.setFormatter(formatter)
+ logger.addHandler(handler)
+ logger.setLevel(logging.DEBUG)
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 10}
+ }
+
+ factory = await get_factory_async('some_apikey', **kwargs)
+ try:
+ await factory.block_until_ready(5)
+ except Exception:
+ pass
+ assert factory.ready
+ await asyncio.sleep(2)
+ # Get a hook of the task so we can query its status
+ task = factory._sync_manager._synchronizer._split_tasks.split_task._task # pylint:disable=protected-access
+ assert not task.running()
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+
+ # Make a change in the BE but don't send the event.
+ # We'll send an ignorable error and check it has nothing happened
+ split_changes[1] = {'ff': {
+ 's': 1,
+ 't': 2,
+ 'd': [make_simple_split('split1', 2, True, False, 'off', 'user', False)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[2] = {'ff': {'s': 2, 't': 2, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+
+ sse_server.publish(make_ably_error_event(60000, 600))
+ await asyncio.sleep(1)
+
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ sse_server.publish(make_ably_error_event(40145, 401))
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ await asyncio.sleep(3)
+
+ assert task.running()
+ assert await factory.client().get_treatment('maldo', 'split1') == 'off'
+
+ # Re-publish initial events so that the retry succeeds
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+ await asyncio.sleep(3)
+ assert not task.running()
+
+ # Assert streaming is working properly
+ split_changes[2] = {'ff': {
+ 's': 2,
+ 't': 3,
+ 'd': [make_simple_split('split1', 3, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ }
+ split_changes[3] = {'ff': {'s': 3, 't': 3, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ sse_server.publish(make_split_change_event(3))
+ await asyncio.sleep(2)
+ assert await factory.client().get_treatment('maldo', 'split1') == 'on'
+ assert not task.running()
+
+ # Send a non-retryable ably error
+ sse_server.publish(make_ably_error_event(40200, 402))
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ await asyncio.sleep(3)
+
+ # Assert sync-task is running and the streaming status handler thread is over
+ assert task.running()
+
+ # Validate the SSE requests
+ sse_request = sse_requests.get()
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ assert sse_request.method == 'GET'
+ path, qs = sse_request.path.split('?', 1)
+ assert path == '/event-stream'
+ qs = parse_qs(qs)
+ assert qs['accessToken'][0] == (
+ 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05'
+ 'US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UW'
+ 'XlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjc'
+ 'mliZVwiXSxcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcI'
+ 'jpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY'
+ '2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJzXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzd'
+ 'WJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFib'
+ 'HktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4cCI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0M'
+ 'Dk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5EvJh17WlOlAKhcD0'
+ )
+
+ assert set(qs['channels'][0].split(',')) == set(['MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ '[?occupancy=metrics.publishers]control_pri',
+ '[?occupancy=metrics.publishers]control_sec'])
+ assert qs['v'][0] == '1.1'
+
+ # Initial splits fetch
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=-1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after streaming connected
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll retriable error
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=1&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Auth again
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/v2/auth?s=1.3'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after push is up
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Fetch after notification
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=2&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Iteration until since == till
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # SyncAll after non recoverable ably error
+ req = split_backend_requests.get()
+ assert req.method == 'GET'
+ assert req.path == '/api/splitChanges?s=1.3&since=3&rbSince=-1'
+ assert req.headers['authorization'] == 'Bearer some_apikey'
+
+ # Cleanup
+ await factory.destroy()
+ sse_server.publish(sse_server.GRACEFUL_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+ @pytest.mark.asyncio
+ async def test_change_number(mocker):
+ # test if changeNumber is missing
+ auth_server_response = {
+ 'pushEnabled': True,
+ 'token': ('eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.'
+ 'eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk1UWXlNVGN4T1RRNE13PT1fTWpBNE16Y3pO'
+ 'RFUxTWc9PV9zZWdtZW50c1wiOltcInN1YnNjcmliZVwiXSxcIk1UWXlNVGN4T1RRNE13P'
+ 'T1fTWpBNE16Y3pORFUxTWc9PV9zcGxpdHNcIjpbXCJzdWJzY3JpYmVcIl0sXCJjb250cm'
+ '9sX3ByaVwiOltcInN1YnNjcmliZVwiLFwiY2hhbm5lbC1tZXRhZGF0YTpwdWJsaXNoZXJ'
+ 'zXCJdLFwiY29udHJvbF9zZWNcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRh'
+ 'dGE6cHVibGlzaGVyc1wiXX0iLCJ4LWFibHktY2xpZW50SWQiOiJjbGllbnRJZCIsImV4c'
+ 'CI6MTYwNDEwMDU5MSwiaWF0IjoxNjA0MDk2OTkxfQ.aP9BfR534K6J9h8gfDWg_CQgpz5E'
+ 'vJh17WlOlAKhcD0')
+ }
+
+ split_changes = {
+ -1: {'ff': {
+ 's': -1,
+ 't': 1,
+ 'd': [make_simple_split('split1', 1, True, False, 'off', 'user', True)]},
+ 'rbs': {'t': -1, 's': -1, 'd': []}
+ },
+ 1: {'ff': {'s': 1, 't': 1, 'd': []}, 'rbs': {'t': -1, 's': -1, 'd': []}}
+ }
+
+ segment_changes = {}
+ split_backend_requests = Queue()
+ split_backend = SplitMockServer(split_changes, segment_changes, split_backend_requests,
+ auth_server_response)
+ sse_requests = Queue()
+ sse_server = SSEMockServer(sse_requests)
+
+ split_backend.start()
+ sse_server.start()
+ sse_server.publish(make_initial_event())
+ sse_server.publish(make_occupancy('control_pri', 2))
+ sse_server.publish(make_occupancy('control_sec', 2))
+
+ kwargs = {
+ 'sdk_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'events_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'auth_api_base_url': 'http://localhost:%d/api' % split_backend.port(),
+ 'streaming_api_base_url': 'http://localhost:%d' % sse_server.port(),
+ 'config': {'connectTimeout': 10000, 'featuresRefreshRate': 100}
+ }
+ factory2 = await get_factory_async('some_apikey', **kwargs)
+ await factory2.block_until_ready(1)
+ assert factory2.ready
+ await asyncio.sleep(2)
+
+ split_changes = make_split_fast_change_event(5).copy()
+ data = json.loads(split_changes['data'])
+ inner_data = json.loads(data['data'])
+ inner_data['changeNumber'] = None
+ data['data'] = json.dumps(inner_data)
+ split_changes['data'] = json.dumps(data)
+ sse_server.publish(split_changes)
+ await asyncio.sleep(1)
+ assert await factory2._storages['splits'].get_change_number() == 1
+
+ # Cleanup
+ await factory2.destroy()
+ sse_server.publish(sse_server.VIOLENT_REQUEST_END)
+ sse_server.stop()
+ split_backend.stop()
+
+def make_split_change_event(change_number):
+ """Make a split change event."""
+ return {
+ 'event': 'message',
+ 'data': json.dumps({
+ 'id':'TVUsxaabHs:0:0',
+ 'clientId':'pri:MzM0ODI1MTkxMw==',
+ 'timestamp': change_number-1,
+ 'encoding':'json',
+ 'channel':'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'data': json.dumps({
+ 'type': 'SPLIT_UPDATE',
+ 'changeNumber': change_number
+ })
+ })
+ }
+
+def make_split_fast_change_event(change_number):
+ """Make a split change event."""
+ json1 = make_simple_split('split5', 1, True, False, 'off', 'user', True)
+ str1 = json.dumps(json1)
+ byt1 = bytes(str1, encoding='utf-8')
+ compressed = base64.b64encode(byt1)
+ final = compressed.decode('utf-8')
+
+ return {
+ 'event': 'message',
+ 'data': json.dumps({
+ 'id':'TVUsxaabHs:0:0',
+ 'clientId':'pri:MzM0ODI1MTkxMw==',
+ 'timestamp': change_number-1,
+ 'encoding':'json',
+ 'channel':'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'data': json.dumps({
+ 'type': 'SPLIT_UPDATE',
+ 'changeNumber': change_number,
+ 'pcn': 3,
+ 'c': 0,
+ 'd': final
+ })
+ })
+ }
+
+def make_split_kill_event(name, default_treatment, change_number):
+ """Make a split change event."""
+ return {
+ 'event': 'message',
+ 'data': json.dumps({
+ 'id':'TVUsxaabHs:0:0',
+ 'clientId':'pri:MzM0ODI1MTkxMw==',
+ 'timestamp': change_number-1,
+ 'encoding':'json',
+ 'channel':'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_splits',
+ 'data': json.dumps({
+ 'type': 'SPLIT_KILL',
+ 'splitName': name,
+ 'defaultTreatment': default_treatment,
+ 'changeNumber': change_number
+ })
+ })
+ }
+
+def make_initial_event():
+ """Make a split change event."""
+ return {'id':'TVUsxaabHs:0:0'}
+
+def make_occupancy(channel, publishers):
+ """Make an occupancy event."""
+ return {
+ 'event': 'message',
+ 'data': json.dumps({
+ 'id':'aP6EuhrcUm:0:0',
+ 'timestamp':1604325712734,
+ 'encoding': 'json',
+ 'channel': "[?occupancy=metrics.publishers]%s" % channel,
+ 'data': json.dumps({'metrics': {'publishers': publishers}}),
+ 'name':'[meta]occupancy'
+ })
+ }
+
+def make_segment_change_event(name, change_number):
+ """Make a split change event."""
+ return {
+ 'event': 'message',
+ 'data': json.dumps({
+ 'id':'TVUsxaabHs:0:0',
+ 'clientId':'pri:MzM0ODI1MTkxMw==',
+ 'timestamp': change_number-1,
+ 'encoding':'json',
+ 'channel':'MTYyMTcxOTQ4Mw==_MjA4MzczNDU1Mg==_segments',
+ 'data': json.dumps({
+ 'type': 'SEGMENT_UPDATE',
+ 'segmentName': name,
+ 'changeNumber': change_number
+ })
+ })
+ }
+
+def make_control_event(control_type, timestamp):
+ """Make a control event."""
+ return {
+ 'event': 'message',
+ 'data': json.dumps({
+ 'id':'TVUsxaabHs:0:0',
+ 'clientId':'pri:MzM0ODI1MTkxMw==',
+ 'timestamp': timestamp,
+ 'encoding':'json',
+ 'channel':'[?occupancy=metrics.publishers]control_pri',
+ 'data': json.dumps({
+ 'type': 'CONTROL',
+ 'controlType': control_type,
+ })
+ })
+ }
+
+def make_ably_error_event(code, status):
+ """Make a control event."""
+ return {
+ 'event': 'error',
+ 'data': json.dumps({
+ 'message':'Invalid accessToken in request: sarasa',
+ 'code': code,
+ 'statusCode': status,
+ 'href':"https://help.ably.io/error/%d" % code
+ })
+ }
+
+def make_simple_split(name, cn, active, killed, default_treatment, tt, on):
+ """Make a simple split."""
+ return {
+ 'trafficTypeName': tt,
+ 'name': name,
+ 'seed': 1699838640,
+ 'status': 'ACTIVE' if active else 'ARCHIVED',
+ 'changeNumber': cn,
+ 'killed': killed,
+ 'defaultTreatment': default_treatment,
+ 'conditions': [
+ {
+ 'matcherGroup': {
+ 'combiner': 'AND',
+ 'matchers': [
+ {
+ 'matcherType': 'ALL_KEYS',
+ 'negate': False,
+ 'userDefinedSegmentMatcherData': None,
+ 'whitelistMatcherData': None
+ }
+ ]
+ },
+ 'partitions': [
+ {'treatment': 'on' if on else 'off', 'size': 100},
+ {'treatment': 'off' if on else 'on', 'size': 0}
+ ]
+ }
+ ]
+ }
+
+def make_split_with_segment(name, cn, active, killed, default_treatment,
+ tt, on, segment):
+ """Make a split with a segment."""
+ return {
+ 'trafficTypeName': tt,
+ 'name': name,
+ 'seed': cn,
+ 'status': 'ACTIVE' if active else 'ARCHIVED',
+ 'changeNumber': cn,
+ 'killed': killed,
+ 'defaultTreatment': default_treatment,
+ 'configurations': {
+ 'on': '{\'size\':15,\'test\':20}'
+ },
+ 'conditions': [
+ {
+ 'matcherGroup': {
+ 'combiner': 'AND',
+ 'matchers': [
+ {
+ 'matcherType': 'IN_SEGMENT',
+ 'negate': False,
+ 'userDefinedSegmentMatcherData': {'segmentName': segment},
+ 'whitelistMatcherData': None
+ }
+ ]
+ },
+ 'partitions': [{
+ 'treatment': 'on' if on else 'off',
+ 'size': 100
+ }]
+ },
+ {
+ 'matcherGroup': {
+ 'combiner': 'AND',
+ 'matchers': [
+ {
+ 'matcherType': 'ALL_KEYS',
+ 'negate': False,
+ 'userDefinedSegmentMatcherData': None,
+ 'whitelistMatcherData': None
+ }
+ ]
+ },
+ 'partitions': [
+ {'treatment': 'on' if on else 'off', 'size': 0},
+ {'treatment': 'off' if on else 'on', 'size': 100}
+ ]
+ }
+ ]
+ }
diff --git a/tests/models/grammar/files/between-semver.csv b/tests/models/grammar/files/between-semver.csv
new file mode 100644
index 00000000..71bdf3b2
--- /dev/null
+++ b/tests/models/grammar/files/between-semver.csv
@@ -0,0 +1,18 @@
+version1,version2,version3,expected
+1.1.1,2.2.2,3.3.3,true
+1.1.1-rc.1,1.1.1-rc.2,1.1.1-rc.3,true
+1.0.0-alpha,1.0.0-alpha.1,1.0.0-alpha.beta,true
+1.0.0-alpha.1,1.0.0-alpha.beta,1.0.0-beta,true
+1.0.0-alpha.beta,1.0.0-beta,1.0.0-beta.2,true
+1.0.0-beta,1.0.0-beta.2,1.0.0-beta.11,true
+1.0.0-beta.2,1.0.0-beta.11,1.0.0-rc.1,true
+1.0.0-beta.11,1.0.0-rc.1,1.0.0,true
+1.1.2,1.1.3,1.1.4,true
+1.2.1,1.3.1,1.4.1,true
+2.0.0,3.0.0,4.0.0,true
+2.2.2,2.2.3-rc1,2.2.3,true
+2.2.2,2.3.2-rc100,2.3.3,true
+1.0.0-rc.1+build.1,1.2.3-beta,1.2.3-rc.1+build.123,true
+3.3.3,3.3.3-alpha,3.3.4,false
+2.2.2-rc.1,2.2.2+metadata,2.2.2-rc.10,false
+1.1.1-rc.1,1.1.1-rc.3,1.1.1-rc.2,false
\ No newline at end of file
diff --git a/tests/models/grammar/files/equal-to-semver.csv b/tests/models/grammar/files/equal-to-semver.csv
new file mode 100644
index 00000000..87d8db5a
--- /dev/null
+++ b/tests/models/grammar/files/equal-to-semver.csv
@@ -0,0 +1,7 @@
+version1,version2,equals
+1.1.1,1.1.1,true
+1.1.1,1.1.1+metadata,false
+1.1.1,1.1.1-rc.1,false
+88.88.88,88.88.88,true
+1.2.3----RC-SNAPSHOT.12.9.1--.12,1.2.3----RC-SNAPSHOT.12.9.1--.12,true
+10.2.3-DEV-SNAPSHOT,10.2.3-SNAPSHOT-123,false
\ No newline at end of file
diff --git a/tests/models/grammar/files/invalid-semantic-versions.csv b/tests/models/grammar/files/invalid-semantic-versions.csv
new file mode 100644
index 00000000..7a7f9fbc
--- /dev/null
+++ b/tests/models/grammar/files/invalid-semantic-versions.csv
@@ -0,0 +1,28 @@
+invalid
+1
+1.2
+1.alpha.2
++invalid
+-invalid
+-invalid+invalid
+-invalid.01
+alpha
+alpha.beta
+alpha.beta.1
+alpha.1
+alpha+beta
+alpha_beta
+alpha.
+alpha..
+beta
+-alpha.
+1.2
+1.2.3.DEV
+1.2-SNAPSHOT
+1.2.31.2.3----RC-SNAPSHOT.12.09.1--..12+788
+1.2-RC-SNAPSHOT
+-1.0.3-gamma+b7718
++justmeta
+1.1.1+
+1.1.1-
+#99999999999999999999999.999999999999999999.99999999999999999----RC-SNAPSHOT.12.09.1--------------------------------..12
\ No newline at end of file
diff --git a/tests/models/grammar/files/splits_prereq.json b/tests/models/grammar/files/splits_prereq.json
new file mode 100644
index 00000000..5efa7fed
--- /dev/null
+++ b/tests/models/grammar/files/splits_prereq.json
@@ -0,0 +1,293 @@
+{"ff": {
+ "d": [
+ {
+ "trafficTypeName": "user",
+ "name": "test_prereq",
+ "prerequisites": [
+ { "n": "feature_segment", "ts": ["off", "def_test"] },
+ { "n": "rbs_flag", "ts": ["on"] }
+ ],
+ "trafficAllocation": 100,
+ "trafficAllocationSeed": 1582960494,
+ "seed": 1842944006,
+ "status": "ACTIVE",
+ "killed": false,
+ "defaultTreatment": "def_treatment",
+ "changeNumber": 1582741588594,
+ "algo": 2,
+ "configurations": {},
+ "conditions": [
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": null
+ },
+ "matcherType": "ALL_KEYS",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "whitelistMatcherData": null,
+ "unaryNumericMatcherData": null,
+ "betweenMatcherData": null,
+ "booleanMatcherData": null,
+ "dependencyMatcherData": null,
+ "stringMatcherData": null
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ],
+ "label": "default rule"
+ }
+ ]
+ },
+ {
+ "name":"feature_segment",
+ "trafficTypeId":"u",
+ "trafficTypeName":"User",
+ "trafficAllocation": 100,
+ "trafficAllocationSeed": 1582960494,
+ "seed":-1177551240,
+ "status":"ACTIVE",
+ "killed":false,
+ "defaultTreatment":"def_test",
+ "changeNumber": 1582741588594,
+ "algo": 2,
+ "configurations": {},
+ "conditions":[
+ {
+ "matcherGroup":{
+ "combiner":"AND",
+ "matchers":[
+ {
+ "matcherType":"IN_SEGMENT",
+ "negate":false,
+ "userDefinedSegmentMatcherData":{
+ "segmentName":"segment-test"
+ },
+ "whitelistMatcherData":null
+ }
+ ]
+ },
+ "partitions":[
+ {
+ "treatment":"on",
+ "size":100
+ },
+ {
+ "treatment":"off",
+ "size":0
+ }
+ ],
+ "label": "default label"
+ }
+ ]
+ },
+ {
+ "changeNumber": 10,
+ "trafficTypeName": "user",
+ "name": "rbs_flag",
+ "trafficAllocation": 100,
+ "trafficAllocationSeed": 1828377380,
+ "seed": -286617921,
+ "status": "ACTIVE",
+ "killed": false,
+ "defaultTreatment": "off",
+ "algo": 2,
+ "conditions": [
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user"
+ },
+ "matcherType": "IN_RULE_BASED_SEGMENT",
+ "negate": false,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "sample_rule_based_segment"
+ }
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ],
+ "label": "in rule based segment sample_rule_based_segment"
+ },
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user"
+ },
+ "matcherType": "ALL_KEYS",
+ "negate": false
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 0
+ },
+ {
+ "treatment": "off",
+ "size": 100
+ }
+ ],
+ "label": "default rule"
+ }
+ ],
+ "configurations": {},
+ "sets": [],
+ "impressionsDisabled": false
+ },
+ {
+ "trafficTypeName": "user",
+ "name": "prereq_chain",
+ "prerequisites": [
+ { "n": "test_prereq", "ts": ["on"] }
+ ],
+ "trafficAllocation": 100,
+ "trafficAllocationSeed": -2092979940,
+ "seed": 105482719,
+ "status": "ACTIVE",
+ "killed": false,
+ "defaultTreatment": "on_default",
+ "changeNumber": 1585948850109,
+ "algo": 2,
+ "configurations": {},
+ "conditions": [
+ {
+ "conditionType": "WHITELIST",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": null,
+ "matcherType": "WHITELIST",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "bilal@split.io"
+ ]
+ },
+ "unaryNumericMatcherData": null,
+ "betweenMatcherData": null,
+ "booleanMatcherData": null,
+ "dependencyMatcherData": null,
+ "stringMatcherData": null
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on_whitelist",
+ "size": 100
+ }
+ ],
+ "label": "whitelisted"
+ },
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": null
+ },
+ "matcherType": "ALL_KEYS",
+ "negate": false,
+ "userDefinedSegmentMatcherData": null,
+ "whitelistMatcherData": null,
+ "unaryNumericMatcherData": null,
+ "betweenMatcherData": null,
+ "booleanMatcherData": null,
+ "dependencyMatcherData": null,
+ "stringMatcherData": null
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ },
+ {
+ "treatment": "V1",
+ "size": 0
+ }
+ ],
+ "label": "default rule"
+ }
+ ]
+ }
+ ],
+ "s": -1,
+ "t": 1585948850109
+}, "rbs":{"d": [
+ {
+ "changeNumber": 5,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["mauro@split.io","gaston@split.io"],
+ "segments":[]
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": false,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }], "s": -1, "t": 1585948850109}
+}
diff --git a/tests/models/grammar/files/valid-semantic-versions.csv b/tests/models/grammar/files/valid-semantic-versions.csv
new file mode 100644
index 00000000..f491e77f
--- /dev/null
+++ b/tests/models/grammar/files/valid-semantic-versions.csv
@@ -0,0 +1,25 @@
+higher,lower
+1.1.2,1.1.1
+1.0.0,1.0.0-rc.1
+1.1.0-rc.1,1.0.0-beta.11
+1.0.0-beta.11,1.0.0-beta.2
+1.0.0-beta.2,1.0.0-beta
+1.0.0-beta,1.0.0-alpha.beta
+1.0.0-alpha.beta,1.0.0-alpha.1
+1.0.0-alpha.1,1.0.0-alpha
+2.2.2-rc.2+metadata-lalala,2.2.2-rc.1.2
+1.2.3,0.0.4
+1.1.2+meta,1.1.2-prerelease+meta
+1.0.0-beta,1.0.0-alpha
+1.0.0-alpha0.valid,1.0.0-alpha.0valid
+1.0.0-rc.1+build.1,1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay
+10.2.3-DEV-SNAPSHOT,1.2.3-SNAPSHOT-123
+1.1.1-rc2,1.0.0-0A.is.legal
+1.2.3----RC-SNAPSHOT.12.9.1--.12+788,1.2.3----R-S.12.9.1--.12+meta
+1.2.3----RC-SNAPSHOT.12.9.1--.12.88,1.2.3----RC-SNAPSHOT.12.9.1--.12
+9223372036854775807.9223372036854775807.9223372036854775807,9223372036854775807.9223372036854775807.9223372036854775806
+1.1.1-alpha.beta.rc.build.java.pr.support.10,1.1.1-alpha.beta.rc.build.java.pr.support
+1.1.2,1.1.1
+1.2.1,1.1.1
+2.1.1,1.1.1
+1.1.1-rc.1,1.1.1-rc.0
\ No newline at end of file
diff --git a/tests/models/grammar/test_matchers.py b/tests/models/grammar/test_matchers.py
index f6f1c25a..71922431 100644
--- a/tests/models/grammar/test_matchers.py
+++ b/tests/models/grammar/test_matchers.py
@@ -6,13 +6,19 @@
import json
import os.path
import re
+import pytest
from datetime import datetime
from splitio.models.grammar import matchers
+from splitio.models.grammar.matchers.prerequisites import PrerequisitesMatcher
+from splitio.models import splits
+from splitio.models import rule_based_segments
+from splitio.models.grammar import condition
+from splitio.models.grammar.matchers.utils.utils import Semver
from splitio.storage import SegmentStorage
-from splitio.engine.evaluator import Evaluator
-
+from splitio.engine.evaluator import Evaluator, EvaluationContext
+from tests.integration import splits_json
class MatcherTestsBase(object):
"""Abstract class to make sure we test all relevant methods."""
@@ -398,26 +404,11 @@ def test_from_raw(self, mocker):
def test_matcher_behaviour(self, mocker):
"""Test if the matcher works properly."""
matcher = matchers.UserDefinedSegmentMatcher(self.raw)
- segment_storage = mocker.Mock(spec=SegmentStorage)
# Test that if the key if the storage wrapper finds the key in the segment, it matches.
- segment_storage.segment_contains.return_value = True
- assert matcher.evaluate('some_key', {}, {'segment_storage': segment_storage}) is True
-
+ assert matcher.evaluate('some_key', {}, {'evaluator': None, 'ec': EvaluationContext([],{'some_segment': True}, {})}) is True
# Test that if the key if the storage wrapper doesn't find the key in the segment, it fails.
- segment_storage.segment_contains.return_value = False
- assert matcher.evaluate('some_key', {}, {'segment_storage': segment_storage}) is False
-
- assert segment_storage.segment_contains.mock_calls == [
- mocker.call('some_segment', 'some_key'),
- mocker.call('some_segment', 'some_key')
- ]
-
- assert matcher.evaluate([], {}, {'segment_storage': segment_storage}) is False
- assert matcher.evaluate({}, {}, {'segment_storage': segment_storage}) is False
- assert matcher.evaluate(123, {}, {'segment_storage': segment_storage}) is False
- assert matcher.evaluate(True, {}, {'segment_storage': segment_storage}) is False
- assert matcher.evaluate(False, {}, {'segment_storage': segment_storage}) is False
+ assert matcher.evaluate('some_key', {}, {'evaluator': None, 'ec': EvaluationContext([], {'some_segment': False}, {})}) is False
def test_to_json(self):
"""Test that the object serializes to JSON properly."""
@@ -784,30 +775,35 @@ def test_from_raw(self, mocker):
def test_matcher_behaviour(self, mocker):
"""Test if the matcher works properly."""
- parsed = matchers.DependencyMatcher(self.raw)
+ cond_raw = self.raw.copy()
+ cond_raw['dependencyMatcherData']['split'] = 'SPLIT_2'
+ parsed = matchers.DependencyMatcher(cond_raw)
evaluator = mocker.Mock(spec=Evaluator)
- evaluator.evaluate_feature.return_value = {'treatment': 'on'}
- assert parsed.evaluate('test1', {}, {'bucketing_key': 'buck', 'evaluator': evaluator}) is True
+ cond = condition.from_raw(splits_json["splitChange1_1"]['ff']['d'][0]['conditions'][0])
+ split = splits.from_raw(splits_json["splitChange1_1"]['ff']['d'][0])
+
+ evaluator.eval_with_context.return_value = {'treatment': 'on'}
+ assert parsed.evaluate('SPLIT_2', {}, {'evaluator': evaluator, 'ec': [{'flags': [split], 'segment_memberships': {}}]}) is True
- evaluator.evaluate_feature.return_value = {'treatment': 'off'}
- assert parsed.evaluate('test1', {}, {'bucketing_key': 'buck', 'evaluator': evaluator}) is False
+ evaluator.eval_with_context.return_value = {'treatment': 'off'}
+ assert parsed.evaluate('SPLIT_2', {}, {'evaluator': evaluator, 'ec': [{'flags': [split], 'segment_memberships': {}}]}) is False
- assert evaluator.evaluate_feature.mock_calls == [
- mocker.call('some_split', 'test1', 'buck', {}),
- mocker.call('some_split', 'test1', 'buck', {})
+ assert evaluator.eval_with_context.mock_calls == [
+ mocker.call('SPLIT_2', None, 'SPLIT_2', {}, [{'flags': [split], 'segment_memberships': {}}]),
+ mocker.call('SPLIT_2', None, 'SPLIT_2', {}, [{'flags': [split], 'segment_memberships': {}}])
]
- assert parsed.evaluate([], {}, {'bucketing_key': 'buck', 'evaluator': evaluator}) is False
- assert parsed.evaluate({}, {}, {'bucketing_key': 'buck', 'evaluator': evaluator}) is False
- assert parsed.evaluate(123, {}, {'bucketing_key': 'buck', 'evaluator': evaluator}) is False
- assert parsed.evaluate(object(), {}, {'bucketing_key': 'buck', 'evaluator': evaluator}) is False
+ assert parsed.evaluate([], {}, {'evaluator': evaluator, 'ec': [{'flags': [split], 'segment_memberships': {}}]}) is False
+ assert parsed.evaluate({}, {}, {'evaluator': evaluator, 'ec': [{'flags': [split], 'segment_memberships': {}}]}) is False
+ assert parsed.evaluate(123, {}, {'evaluator': evaluator, 'ec': [{'flags': [split], 'segment_memberships': {}}]}) is False
+ assert parsed.evaluate(object(), {}, {'evaluator': evaluator, 'ec': [{'flags': [split], 'segment_memberships': {}}]}) is False
def test_to_json(self):
"""Test that the object serializes to JSON properly."""
as_json = matchers.DependencyMatcher(self.raw).to_json()
assert as_json['matcherType'] == 'IN_SPLIT_TREATMENT'
- assert as_json['dependencyMatcherData']['split'] == 'some_split'
+ assert as_json['dependencyMatcherData']['split'] == 'SPLIT_2'
assert as_json['dependencyMatcherData']['treatments'] == ['on', 'almost_on']
@@ -884,3 +880,290 @@ def test_to_json(self):
as_json = matchers.RegexMatcher(self.raw).to_json()
assert as_json['matcherType'] == 'MATCHES_STRING'
assert as_json['stringMatcherData'] == "^[a-z][A-Z][0-9]$"
+
+class EqualToSemverMatcherTests(MatcherTestsBase):
+ """Semver equalto matcher test cases."""
+
+ raw = {
+ 'negate': False,
+ 'matcherType': 'EQUAL_TO_SEMVER',
+ 'stringMatcherData': "2.1.8"
+ }
+
+ def test_from_raw(self, mocker):
+ """Test parsing from raw json/dict."""
+ parsed = matchers.from_raw(self.raw)
+ assert isinstance(parsed, matchers.EqualToSemverMatcher)
+ assert parsed._semver is not None
+ assert parsed._semver.version == "2.1.8"
+ assert isinstance(parsed._semver, Semver)
+ assert parsed._semver._major == 2
+ assert parsed._semver._minor == 1
+ assert parsed._semver._patch == 8
+ assert parsed._semver._pre_release == []
+
+ def test_matcher_behaviour(self, mocker):
+ """Test if the matcher works properly."""
+ parsed = matchers.from_raw(self.raw)
+ assert not parsed._match("2.1.8+rc")
+ assert parsed._match("2.1.8")
+ assert not parsed._match("2.1.5")
+ assert not parsed._match("2.1.5-rc1")
+ assert not parsed._match(None)
+ assert not parsed._match("semver")
+
+ def test_to_json(self):
+ """Test that the object serializes to JSON properly."""
+ as_json = matchers.EqualToSemverMatcher(self.raw).to_json()
+ assert as_json['matcherType'] == 'EQUAL_TO_SEMVER'
+ assert as_json['stringMatcherData'] == "2.1.8"
+
+ def test_to_str(self):
+ """Test that the object serializes to str properly."""
+ as_str = matchers.EqualToSemverMatcher(self.raw)
+ assert str(as_str) == "equal semver 2.1.8"
+
+class GreaterThanOrEqualToSemverMatcherTests(MatcherTestsBase):
+ """Semver greater or equalto matcher test cases."""
+
+ raw = {
+ 'negate': False,
+ 'matcherType': 'GREATER_THAN_OR_EQUAL_TO_SEMVER',
+ 'stringMatcherData': "2.1.8"
+ }
+
+ def test_from_raw(self, mocker):
+ """Test parsing from raw json/dict."""
+ parsed = matchers.from_raw(self.raw)
+ assert isinstance(parsed, matchers.GreaterThanOrEqualToSemverMatcher)
+ assert parsed._semver is not None
+ assert parsed._semver.version == "2.1.8"
+ assert isinstance(parsed._semver, Semver)
+ assert parsed._semver._major == 2
+ assert parsed._semver._minor == 1
+ assert parsed._semver._patch == 8
+ assert parsed._semver._pre_release == []
+
+ def test_matcher_behaviour(self, mocker):
+ """Test if the matcher works properly."""
+ parsed = matchers.from_raw(self.raw)
+ assert parsed._match("2.1.8+rc")
+ assert parsed._match("2.1.8")
+ assert parsed._match("2.1.11")
+ assert not parsed._match("2.1.5")
+ assert not parsed._match("2.1.5-rc1")
+ assert not parsed._match(None)
+ assert not parsed._match("semver")
+
+ def test_to_json(self):
+ """Test that the object serializes to JSON properly."""
+ as_json = matchers.GreaterThanOrEqualToSemverMatcher(self.raw).to_json()
+ assert as_json['matcherType'] == 'GREATER_THAN_OR_EQUAL_TO_SEMVER'
+ assert as_json['stringMatcherData'] == "2.1.8"
+
+ def test_to_str(self):
+ """Test that the object serializes to str properly."""
+ as_str = matchers.GreaterThanOrEqualToSemverMatcher(self.raw)
+ assert str(as_str) == "greater than or equal to semver 2.1.8"
+
+class LessThanOrEqualToSemverMatcherTests(MatcherTestsBase):
+ """Semver less or equalto matcher test cases."""
+
+ raw = {
+ 'negate': False,
+ 'matcherType': 'LESS_THAN_OR_EQUAL_TO_SEMVER',
+ 'stringMatcherData': "2.1.8"
+ }
+
+ def test_from_raw(self, mocker):
+ """Test parsing from raw json/dict."""
+ parsed = matchers.from_raw(self.raw)
+ assert isinstance(parsed, matchers.LessThanOrEqualToSemverMatcher)
+ assert parsed._semver is not None
+ assert parsed._semver.version == "2.1.8"
+ assert isinstance(parsed._semver, Semver)
+ assert parsed._semver._major == 2
+ assert parsed._semver._minor == 1
+ assert parsed._semver._patch == 8
+ assert parsed._semver._pre_release == []
+
+ def test_matcher_behaviour(self, mocker):
+ """Test if the matcher works properly."""
+ parsed = matchers.from_raw(self.raw)
+ assert parsed._match("2.1.8+rc")
+ assert parsed._match("2.1.8")
+ assert not parsed._match("2.1.11")
+ assert parsed._match("2.1.5")
+ assert parsed._match("2.1.5-rc1")
+ assert not parsed._match(None)
+ assert not parsed._match("semver")
+
+ def test_to_json(self):
+ """Test that the object serializes to JSON properly."""
+ as_json = matchers.LessThanOrEqualToSemverMatcher(self.raw).to_json()
+ assert as_json['matcherType'] == 'LESS_THAN_OR_EQUAL_TO_SEMVER'
+ assert as_json['stringMatcherData'] == "2.1.8"
+
+ def test_to_str(self):
+ """Test that the object serializes to str properly."""
+ as_str = matchers.LessThanOrEqualToSemverMatcher(self.raw)
+ assert str(as_str) == "less than or equal to semver 2.1.8"
+
+class BetweenSemverMatcherTests(MatcherTestsBase):
+ """Semver between matcher test cases."""
+
+ raw = {
+ 'negate': False,
+ 'matcherType': 'BETWEEN_SEMVER',
+ 'betweenStringMatcherData': {"start": "2.1.8", "end": "2.1.11"}
+ }
+
+ def test_from_raw(self, mocker):
+ """Test parsing from raw json/dict."""
+ parsed = matchers.from_raw(self.raw)
+ assert isinstance(parsed, matchers.BetweenSemverMatcher)
+ assert isinstance(parsed._semver_start, Semver)
+ assert isinstance(parsed._semver_end, Semver)
+ assert parsed._semver_start.version == "2.1.8"
+ assert parsed._semver_start._major == 2
+ assert parsed._semver_start._minor == 1
+ assert parsed._semver_start._patch == 8
+ assert parsed._semver_start._pre_release == []
+
+ assert parsed._semver_end.version == "2.1.11"
+ assert parsed._semver_end._major == 2
+ assert parsed._semver_end._minor == 1
+ assert parsed._semver_end._patch == 11
+ assert parsed._semver_end._pre_release == []
+
+ def test_matcher_behaviour(self, mocker):
+ """Test if the matcher works properly."""
+ parsed = matchers.from_raw(self.raw)
+ assert parsed._match("2.1.8+rc")
+ assert parsed._match("2.1.9")
+ assert parsed._match("2.1.11-rc12")
+ assert not parsed._match("2.1.5")
+ assert not parsed._match("2.1.12-rc1")
+ assert not parsed._match(None)
+ assert not parsed._match("semver")
+
+ def test_to_json(self):
+ """Test that the object serializes to JSON properly."""
+ as_json = matchers.BetweenSemverMatcher(self.raw).to_json()
+ assert as_json['matcherType'] == 'BETWEEN_SEMVER'
+ assert as_json['betweenStringMatcherData'] == {"start": "2.1.8", "end": "2.1.11"}
+
+ def test_to_str(self):
+ """Test that the object serializes to str properly."""
+ as_str = matchers.BetweenSemverMatcher(self.raw)
+ assert str(as_str) == "between semver 2.1.8 and 2.1.11"
+
+class InListSemverMatcherTests(MatcherTestsBase):
+ """Semver inlist matcher test cases."""
+
+ raw = {
+ 'negate': False,
+ 'matcherType': 'IN_LIST_SEMVER',
+ 'whitelistMatcherData': {"whitelist": ["2.1.8", "2.1.11"]}
+ }
+
+ def test_from_raw(self, mocker):
+ """Test parsing from raw json/dict."""
+ parsed = matchers.from_raw(self.raw)
+ assert isinstance(parsed, matchers.InListSemverMatcher)
+ assert parsed._data == ["2.1.8", "2.1.11"]
+ assert [isinstance(item, str) for item in parsed._semver_list]
+ assert "2.1.8" in parsed._semver_list
+ assert "2.1.11" in parsed._semver_list
+
+ def test_matcher_behaviour(self, mocker):
+ """Test if the matcher works properly."""
+ parsed = matchers.from_raw(self.raw)
+ assert not parsed._match("2.1.8+rc")
+ assert parsed._match("2.1.8")
+ assert not parsed._match("2.1.11-rc12")
+ assert parsed._match("2.1.11")
+ assert not parsed._match("2.1.7")
+ assert not parsed._match(None)
+ assert not parsed._match("semver")
+
+ def test_to_json(self):
+ """Test that the object serializes to JSON properly."""
+ as_json = matchers.InListSemverMatcher(self.raw).to_json()
+ assert as_json['matcherType'] == 'IN_LIST_SEMVER'
+ assert as_json['whitelistMatcherData'] == {"whitelist": ["2.1.8", "2.1.11"]}
+
+ def test_to_str(self):
+ """Test that the object serializes to str properly."""
+ as_str = matchers.InListSemverMatcher(self.raw)
+ assert str(as_str) == "in list semver ['2.1.8', '2.1.11']"
+
+class RuleBasedMatcherTests(MatcherTestsBase):
+ """Rule based segment matcher test cases."""
+
+ raw ={
+ "keySelector": {
+ "trafficType": "user"
+ },
+ "matcherType": "IN_RULE_BASED_SEGMENT",
+ "negate": False,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "sample_rule_based_segment"
+ }
+ }
+
+ def test_from_raw(self, mocker):
+ """Test parsing from raw json/dict."""
+ parsed = matchers.from_raw(self.raw)
+ assert isinstance(parsed, matchers.RuleBasedSegmentMatcher)
+
+ def test_to_json(self):
+ """Test that the object serializes to JSON properly."""
+ as_json = matchers.AllKeysMatcher(self.raw).to_json()
+ assert as_json['matcherType'] == 'IN_RULE_BASED_SEGMENT'
+
+ def test_matcher_behaviour(self, mocker):
+ """Test if the matcher works properly."""
+ rbs_segments = os.path.join(os.path.dirname(__file__), '../../engine/files', 'rule_base_segments3.json')
+ with open(rbs_segments, 'r') as flo:
+ data = json.loads(flo.read())
+
+ rbs = rule_based_segments.from_raw(data["rbs"]["d"][0])
+ matcher = matchers.RuleBasedSegmentMatcher(self.raw)
+ ec ={'ec': EvaluationContext(
+ {},
+ {"segment1": False},
+ {"sample_rule_based_segment": rbs}
+ )}
+ assert matcher._match(None, context=ec) is False
+ assert matcher._match('bilal@split.io', context=ec) is False
+ assert matcher._match('bilal@split.io', {'email': 'bilal@split.io'}, context=ec) is True
+
+class PrerequisitesMatcherTests(MatcherTestsBase):
+ """tests for prerequisites matcher."""
+
+ def test_init(self, mocker):
+ """Test init."""
+ split_load = os.path.join(os.path.dirname(__file__), 'files', 'splits_prereq.json')
+ with open(split_load, 'r') as flo:
+ data = json.loads(flo.read())
+
+ prereq = splits.from_raw_prerequisites(data['ff']['d'][0]['prerequisites'])
+ parsed = PrerequisitesMatcher(prereq)
+ assert parsed._prerequisites == prereq
+
+ def test_matcher_behaviour(self, mocker):
+ """Test if the matcher works properly."""
+ split_load = os.path.join(os.path.dirname(__file__), 'files', 'splits_prereq.json')
+ with open(split_load, 'r') as flo:
+ data = json.loads(flo.read())
+ prereq = splits.from_raw_prerequisites(data['ff']['d'][3]['prerequisites'])
+ parsed = PrerequisitesMatcher(prereq)
+ evaluator = mocker.Mock(spec=Evaluator)
+
+
+ evaluator.eval_with_context.return_value = {'treatment': 'on'}
+ assert parsed.match('SPLIT_2', {}, {'evaluator': evaluator, 'ec': [{'flags': ['prereq_chain'], 'segment_memberships': {}}]}) is True
+
+ evaluator.eval_with_context.return_value = {'treatment': 'off'}
+ assert parsed.match('SPLIT_2', {}, {'evaluator': evaluator, 'ec': [{'flags': ['prereq_chain'], 'segment_memberships': {}}]}) is False
\ No newline at end of file
diff --git a/tests/models/grammar/test_semver.py b/tests/models/grammar/test_semver.py
new file mode 100644
index 00000000..2a2b1b85
--- /dev/null
+++ b/tests/models/grammar/test_semver.py
@@ -0,0 +1,71 @@
+"""Condition model tests module."""
+import csv
+import os
+
+from splitio.models.grammar.matchers.utils.utils import build_semver_or_none
+
+valid_versions = os.path.join(os.path.dirname(__file__), 'files', 'valid-semantic-versions.csv')
+invalid_versions = os.path.join(os.path.dirname(__file__), 'files', 'invalid-semantic-versions.csv')
+equalto_versions = os.path.join(os.path.dirname(__file__), 'files', 'equal-to-semver.csv')
+between_versions = os.path.join(os.path.dirname(__file__), 'files', 'between-semver.csv')
+
+class SemverTests(object):
+ """Test the semver object model."""
+
+ def test_valid_versions(self):
+ with open(valid_versions) as csvfile:
+ reader = csv.DictReader(csvfile)
+ for row in reader:
+ assert build_semver_or_none(row['higher']) is not None
+ assert build_semver_or_none(row['lower']) is not None
+
+ def test_invalid_versions(self):
+ with open(invalid_versions) as csvfile:
+ reader = csv.DictReader(csvfile)
+ for row in reader:
+ assert build_semver_or_none(row['invalid']) is None
+
+ def test_compare(self):
+ with open(valid_versions) as csvfile:
+ reader = csv.DictReader(csvfile)
+ for row in reader:
+ higher = build_semver_or_none(row['higher'])
+ lower = build_semver_or_none(row['lower'])
+ assert higher is not None
+ assert lower is not None
+ assert higher.compare(lower) == 1
+ assert lower.compare(higher) == -1
+
+ with open(equalto_versions) as csvfile:
+ reader = csv.DictReader(csvfile)
+ for row in reader:
+ version1 = build_semver_or_none(row['version1'])
+ version2 = build_semver_or_none(row['version2'])
+ assert version1 is not None
+ assert version2 is not None
+ if row['equals'] == "true":
+ assert version1.version == version2.version
+ else:
+ assert version1.version != version2.version
+
+ with open(between_versions) as csvfile:
+ reader = csv.DictReader(csvfile)
+ for row in reader:
+ version1 = build_semver_or_none(row['version1'])
+ version2 = build_semver_or_none(row['version2'])
+ version3 = build_semver_or_none(row['version3'])
+ assert version1 is not None
+ assert version2 is not None
+ assert version3 is not None
+ if row['expected'] == "true":
+ assert version2.compare(version1) >= 0 and version3.compare(version2) >= 0
+ else:
+ assert version2.compare(version1) < 0 or version3.compare(version2) < 0
+
+ def test_leading_zeros(self):
+ semver = build_semver_or_none('1.01.2')
+ assert semver is not None
+ assert semver.version == '1.1.2'
+ semver2 = build_semver_or_none('1.01.2-rc.01')
+ assert semver2 is not None
+ assert semver2.version == '1.1.2-rc.1'
diff --git a/tests/models/test_fallback.py b/tests/models/test_fallback.py
new file mode 100644
index 00000000..aadb6007
--- /dev/null
+++ b/tests/models/test_fallback.py
@@ -0,0 +1,63 @@
+from splitio.models.fallback_treatment import FallbackTreatment
+from splitio.models.fallback_config import FallbackTreatmentsConfiguration, FallbackTreatmentCalculator
+
+class FallbackTreatmentModelTests(object):
+ """Fallback treatment model tests."""
+
+ def test_working(self):
+ fallback_treatment = FallbackTreatment("on", '{"prop": "val"}')
+ assert fallback_treatment.config == '{"prop": "val"}'
+ assert fallback_treatment.treatment == 'on'
+
+ fallback_treatment = FallbackTreatment("off")
+ assert fallback_treatment.config == None
+ assert fallback_treatment.treatment == 'off'
+
+class FallbackTreatmentsConfigModelTests(object):
+ """Fallback treatment configuration model tests."""
+
+ def test_working(self):
+ global_fb = FallbackTreatment("on")
+ flag_fb = FallbackTreatment("off")
+ fallback_config = FallbackTreatmentsConfiguration(global_fb, {"flag1": flag_fb})
+ assert fallback_config.global_fallback_treatment == global_fb
+ assert fallback_config.by_flag_fallback_treatment == {"flag1": flag_fb}
+
+ fallback_config.global_fallback_treatment = None
+ assert fallback_config.global_fallback_treatment == None
+
+ fallback_config.by_flag_fallback_treatment["flag2"] = flag_fb
+ assert fallback_config.by_flag_fallback_treatment == {"flag1": flag_fb, "flag2": flag_fb}
+
+ fallback_config = FallbackTreatmentsConfiguration("on", {"flag1": "off"})
+ assert isinstance(fallback_config.global_fallback_treatment, FallbackTreatment)
+ assert fallback_config.global_fallback_treatment.treatment == "on"
+
+ assert isinstance(fallback_config.by_flag_fallback_treatment["flag1"], FallbackTreatment)
+ assert fallback_config.by_flag_fallback_treatment["flag1"].treatment == "off"
+
+
+class FallbackTreatmentCalculatorTests(object):
+ """Fallback treatment calculator model tests."""
+
+ def test_working(self):
+ fallback_config = FallbackTreatmentsConfiguration(FallbackTreatment("on" ,"{}"), None)
+ fallback_calculator = FallbackTreatmentCalculator(fallback_config)
+ assert fallback_calculator.fallback_treatments_configuration == fallback_config
+ assert fallback_calculator._label_prefix == "fallback - "
+
+ fallback_treatment = fallback_calculator.resolve("feature", "not ready")
+ assert fallback_treatment.treatment == "on"
+ assert fallback_treatment.label == "fallback - not ready"
+ assert fallback_treatment.config == "{}"
+
+ fallback_calculator._fallback_treatments_configuration = FallbackTreatmentsConfiguration(FallbackTreatment("on" ,"{}"), {'feature': FallbackTreatment("off" , '{"prop": "val"}')})
+ fallback_treatment = fallback_calculator.resolve("feature", "not ready")
+ assert fallback_treatment.treatment == "off"
+ assert fallback_treatment.label == "fallback - not ready"
+ assert fallback_treatment.config == '{"prop": "val"}'
+
+ fallback_treatment = fallback_calculator.resolve("feature2", "not ready")
+ assert fallback_treatment.treatment == "on"
+ assert fallback_treatment.label == "fallback - not ready"
+ assert fallback_treatment.config == "{}"
diff --git a/tests/models/test_notification.py b/tests/models/test_notification.py
new file mode 100644
index 00000000..3042647d
--- /dev/null
+++ b/tests/models/test_notification.py
@@ -0,0 +1,51 @@
+import pytest
+
+from splitio.models.notification import wrap_notification, SplitChangeNotification, SplitKillNotification, SegmentChangeNotification, ControlNotification
+
+class NotificationTests(object):
+ """Notification model tests."""
+
+ def test_wrap_notification(self):
+ with pytest.raises(ValueError):
+ wrap_notification('{"type":"WRONG","controlType":"STREAMING_PAUSED"}', 'control_pri')
+
+ with pytest.raises(ValueError):
+ wrap_notification('sadasd', 'control_pri')
+
+ with pytest.raises(TypeError):
+ wrap_notification(None, 'control_pri')
+
+ with pytest.raises(ValueError):
+ wrap_notification('{"type":"SPLIT_UPDATE","changeNumber":1591996754396}', None)
+
+ with pytest.raises(KeyError):
+ wrap_notification('{"type":"SPLIT_UPDATE"}', 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_splits')
+
+ with pytest.raises(ValueError):
+ wrap_notification('{"type":"CONTROL","controlType":"STREAMING_PAUSEDD"}', 'control_pri')
+
+ n0 = wrap_notification('{"type":"SPLIT_UPDATE","changeNumber":1591996754396}', 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_splits')
+ assert isinstance(n0, SplitChangeNotification)
+ assert n0.channel == 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_splits'
+ assert n0.notification_type.name == 'SPLIT_UPDATE'
+
+ n1 = wrap_notification('{"type":"SPLIT_KILL","changeNumber":1591996754396,"defaultTreatment":"some","splitName":"test"}', 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_splits')
+ assert isinstance(n1, SplitKillNotification)
+ assert n1.channel == 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_splits'
+ assert n1.change_number == 1591996754396
+ assert n1.default_treatment == 'some'
+ assert n1.split_name == 'test'
+ assert n1.notification_type.name == 'SPLIT_KILL'
+
+ n2 = wrap_notification('{"type":"SEGMENT_UPDATE","changeNumber":1591996754396,"segmentName":"some"}', 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_segments')
+ assert isinstance(n2, SegmentChangeNotification)
+ assert n2.channel == 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_segments'
+ assert n2.change_number == 1591996754396
+ assert n2.segment_name == 'some'
+ assert n2.notification_type.name == 'SEGMENT_UPDATE'
+
+ n3 = wrap_notification('{"type":"CONTROL","controlType":"STREAMING_PAUSED"}', 'control_pri')
+ assert isinstance(n3, ControlNotification)
+ assert n3.channel == 'control_pri'
+ assert n3.control_type.name == 'STREAMING_PAUSED'
+ assert n3.notification_type.name == 'CONTROL'
diff --git a/tests/models/test_rule_based_segments.py b/tests/models/test_rule_based_segments.py
new file mode 100644
index 00000000..98e35fe8
--- /dev/null
+++ b/tests/models/test_rule_based_segments.py
@@ -0,0 +1,103 @@
+"""Split model tests module."""
+import copy
+from splitio.models import rule_based_segments
+from splitio.models import splits
+from splitio.models.grammar.condition import Condition
+from splitio.models.grammar.matchers.rule_based_segment import RuleBasedSegmentMatcher
+
+class RuleBasedSegmentModelTests(object):
+ """Rule based segment model tests."""
+
+ raw = {
+ "changeNumber": 123,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["mauro@split.io","gaston@split.io"],
+ "segments":[]
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": False,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+
+ def test_from_raw(self):
+ """Test split model parsing."""
+ parsed = rule_based_segments.from_raw(self.raw)
+ assert isinstance(parsed, rule_based_segments.RuleBasedSegment)
+ assert parsed.change_number == 123
+ assert parsed.name == 'sample_rule_based_segment'
+ assert parsed.status == splits.Status.ACTIVE
+ assert len(parsed.conditions) == 1
+ assert parsed.excluded.get_excluded_keys() == ["mauro@split.io","gaston@split.io"]
+ assert parsed.excluded.get_excluded_segments() == []
+ conditions = parsed.conditions[0].to_json()
+ assert conditions['matcherGroup']['matchers'][0] == {
+ 'betweenMatcherData': None, 'booleanMatcherData': None, 'dependencyMatcherData': None,
+ 'stringMatcherData': None, 'unaryNumericMatcherData': None, 'userDefinedSegmentMatcherData': None,
+ "keySelector": {
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": False,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+
+ def test_incorrect_matcher(self):
+ """Test incorrect matcher in split model parsing."""
+ rbs = copy.deepcopy(self.raw)
+ rbs['conditions'][0]['matcherGroup']['matchers'][0]['matcherType'] = 'INVALID_MATCHER'
+ rbs = rule_based_segments.from_raw(rbs)
+ assert rbs.conditions[0].to_json() == splits._DEFAULT_CONDITIONS_TEMPLATE
+
+ # using multiple conditions
+ rbs = copy.deepcopy(self.raw)
+ rbs['conditions'].append(rbs['conditions'][0])
+ rbs['conditions'][0]['matcherGroup']['matchers'][0]['matcherType'] = 'INVALID_MATCHER'
+ parsed = rule_based_segments.from_raw(rbs)
+ assert parsed.conditions[0].to_json() == splits._DEFAULT_CONDITIONS_TEMPLATE
+
+ def test_get_condition_segment_names(self):
+ rbs = copy.deepcopy(self.raw)
+ rbs['conditions'].append(
+ {"matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "IN_SEGMENT",
+ "negate": False,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "employees"
+ },
+ "whitelistMatcherData": None
+ }
+ ]
+ },
+ })
+ rbs = rule_based_segments.from_raw(rbs)
+
+ assert rbs.get_condition_segment_names() == {"employees"}
\ No newline at end of file
diff --git a/tests/models/test_splits.py b/tests/models/test_splits.py
index 847448b0..472ecde9 100644
--- a/tests/models/test_splits.py
+++ b/tests/models/test_splits.py
@@ -1,9 +1,9 @@
"""Split model tests module."""
+import copy
from splitio.models import splits
from splitio.models.grammar.condition import Condition
-
class SplitTests(object):
"""Split model tests."""
@@ -11,6 +11,10 @@ class SplitTests(object):
'changeNumber': 123,
'trafficTypeName': 'user',
'name': 'some_name',
+ 'prerequisites': [
+ { 'n': 'flag1', 'ts': ['on','v1'] },
+ { 'n': 'flag2', 'ts': ['off'] }
+ ],
'trafficAllocation': 100,
'trafficAllocationSeed': 123456,
'seed': 321654,
@@ -60,6 +64,8 @@ class SplitTests(object):
'configurations': {
'on': '{"color": "blue", "size": 13}'
},
+ 'sets': ['set1', 'set2'],
+ 'impressionsDisabled': False
}
def test_from_raw(self):
@@ -79,17 +85,30 @@ def test_from_raw(self):
assert len(parsed.conditions) == 2
assert parsed.get_configurations_for('on') == '{"color": "blue", "size": 13}'
assert parsed._configurations == {'on': '{"color": "blue", "size": 13}'}
-
+ assert parsed.sets == {'set1', 'set2'}
+ assert parsed.impressions_disabled == False
+ assert len(parsed.prerequisites) == 2
+ flag1 = False
+ flag2 = False
+ for prerequisite in parsed.prerequisites:
+ if prerequisite.feature_flag_name == 'flag1':
+ flag1 = True
+ assert prerequisite.treatments == ['on','v1']
+ if prerequisite.feature_flag_name == 'flag2':
+ flag2 = True
+ assert prerequisite.treatments == ['off']
+ assert flag1
+ assert flag2
+
def test_get_segment_names(self, mocker):
"""Test fetching segment names."""
cond1 = mocker.Mock(spec=Condition)
cond2 = mocker.Mock(spec=Condition)
cond1.get_segment_names.return_value = ['segment1', 'segment2']
cond2.get_segment_names.return_value = ['segment3', 'segment4']
- split1 = splits.Split( 'some_split', 123, False, 'off', 'user', 'ACTIVE', 123, [cond1, cond2])
+ split1 = splits.Split( 'some_split', 123, False, 'off', 'user', 'ACTIVE', 123, [cond1, cond2], None)
assert split1.get_segment_names() == ['segment%d' % i for i in range(1, 5)]
-
def test_to_json(self):
"""Test json serialization."""
as_json = splits.from_raw(self.raw).to_json()
@@ -105,6 +124,8 @@ def test_to_json(self):
assert as_json['defaultTreatment'] == 'off'
assert as_json['algo'] == 2
assert len(as_json['conditions']) == 2
+ assert sorted(as_json['sets']) == ['set1', 'set2']
+ assert as_json['impressionsDisabled'] is False
def test_to_split_view(self):
"""Test SplitView creation."""
@@ -115,3 +136,19 @@ def test_to_split_view(self):
assert as_split_view.killed == self.raw['killed']
assert as_split_view.traffic_type == self.raw['trafficTypeName']
assert set(as_split_view.treatments) == set(['on', 'off'])
+ assert sorted(as_split_view.sets) == sorted(list(self.raw['sets']))
+ assert as_split_view.impressions_disabled == self.raw['impressionsDisabled']
+
+ def test_incorrect_matcher(self):
+ """Test incorrect matcher in split model parsing."""
+ split = copy.deepcopy(self.raw)
+ split['conditions'][0]['matcherGroup']['matchers'][0]['matcherType'] = 'INVALID_MATCHER'
+ parsed = splits.from_raw(split)
+ assert parsed.conditions[0].to_json() == splits._DEFAULT_CONDITIONS_TEMPLATE
+
+ # using multiple conditions
+ split = copy.deepcopy(self.raw)
+ split['conditions'].append(split['conditions'][0])
+ split['conditions'][0]['matcherGroup']['matchers'][0]['matcherType'] = 'INVALID_MATCHER'
+ parsed = splits.from_raw(split)
+ assert parsed.conditions[0].to_json() == splits._DEFAULT_CONDITIONS_TEMPLATE
\ No newline at end of file
diff --git a/tests/models/test_telemetry_model.py b/tests/models/test_telemetry_model.py
new file mode 100644
index 00000000..7032c359
--- /dev/null
+++ b/tests/models/test_telemetry_model.py
@@ -0,0 +1,662 @@
+"""Telemetry model test module."""
+import os
+import random
+import pytest
+
+from splitio.models.telemetry import StorageType, OperationMode, MethodLatencies, MethodExceptions, \
+ HTTPLatencies, HTTPErrors, LastSynchronization, TelemetryCounters, TelemetryConfig, \
+ StreamingEvent, StreamingEvents, MethodExceptionsAsync, HTTPLatenciesAsync, HTTPErrorsAsync, LastSynchronizationAsync, \
+ TelemetryCountersAsync, TelemetryConfigAsync, StreamingEventsAsync, MethodLatenciesAsync, UpdateFromSSE
+
+import splitio.models.telemetry as ModelTelemetry
+
+class TelemetryModelTests(object):
+ """Telemetry model test cases."""
+
+ def test_latency_bucket_index(self):
+ for i in range(50000):
+ latency = random.randint(10, 9987885)
+ old_bucket = 0
+ result_bucket = 0
+ counter = -1
+ for j in ModelTelemetry.BUCKETS:
+ counter += 1
+ if old_bucket == 0:
+ if latency < j:
+ old_bucket = 0
+ break
+ old_bucket = j
+ continue
+ if counter == ModelTelemetry.MAX_LATENCY_BUCKET_COUNT - 1:
+ result_bucket = 22
+ break
+ if latency > old_bucket and latency <= j:
+ result_bucket = counter
+ break
+ old_bucket = j
+ print(latency, old_bucket, j)
+ assert(result_bucket == ModelTelemetry.get_latency_bucket_index(latency))
+
+ def test_storage_type_and_operation_mode(self, mocker):
+ assert(StorageType.MEMORY.value == 'memory')
+ assert(StorageType.REDIS.value == 'redis')
+ assert(OperationMode.STANDALONE.value == 'standalone')
+ assert(OperationMode.CONSUMER.value == 'consumer')
+
+ def test_method_latencies(self, mocker):
+ method_latencies = MethodLatencies()
+
+ method_latencies.pop_all() # should not raise exception
+ for method in ModelTelemetry.MethodExceptionsAndLatencies:
+ method_latencies.add_latency(method, 50)
+ if method.value == 'treatment':
+ assert(method_latencies._treatment[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments':
+ assert(method_latencies._treatments[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatment_with_config':
+ assert(method_latencies._treatment_with_config[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_with_config':
+ assert(method_latencies._treatments_with_config[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_by_flag_set':
+ assert(method_latencies._treatments_by_flag_set[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_by_flag_sets':
+ assert(method_latencies._treatments_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_with_config_by_flag_set':
+ assert(method_latencies._treatments_with_config_by_flag_set[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_with_config_by_flag_sets':
+ assert(method_latencies._treatments_with_config_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'track':
+ assert(method_latencies._track[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+
+ method_latencies.add_latency(method, 50000000)
+ if method.value == 'treatment':
+ assert(method_latencies._treatment[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ if method.value == 'treatments':
+ assert(method_latencies._treatments[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ if method.value == 'treatment_with_config':
+ assert(method_latencies._treatment_with_config[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ if method.value == 'treatments_with_config':
+ assert(method_latencies._treatments_with_config[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ elif method.value == 'treatments_by_flag_set':
+ assert(method_latencies._treatments_by_flag_set[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ elif method.value == 'treatments_by_flag_sets':
+ assert(method_latencies._treatments_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ elif method.value == 'treatments_with_config_by_flag_set':
+ assert(method_latencies._treatments_with_config_by_flag_set[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ elif method.value == 'treatments_with_config_by_flag_sets':
+ assert(method_latencies._treatments_with_config_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ if method.value == 'track':
+ assert(method_latencies._track[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+
+ method_latencies.pop_all()
+ assert(method_latencies._track == [0] * 23)
+ assert(method_latencies._treatment == [0] * 23)
+ assert(method_latencies._treatments == [0] * 23)
+ assert(method_latencies._treatment_with_config == [0] * 23)
+ assert(method_latencies._treatments_with_config == [0] * 23)
+ assert(method_latencies._treatments_by_flag_set == [0] * 23)
+ assert(method_latencies._treatments_by_flag_sets == [0] * 23)
+ assert(method_latencies._treatments_with_config_by_flag_set == [0] * 23)
+ assert(method_latencies._treatments_with_config_by_flag_sets == [0] * 23)
+
+ method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT, 10)
+ [method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS, 20) for i in range(2)]
+ method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG, 50)
+ method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG, 20)
+ [method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET, 20) for i in range(3)]
+ [method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS, 20) for i in range(4)]
+ [method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET, 20) for i in range(5)]
+ [method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS, 20) for i in range(6)]
+ method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TRACK, 20)
+ latencies = method_latencies.pop_all()
+ assert(latencies == {'methodLatencies': {'treatment': [1] + [0] * 22,
+ 'treatments': [2] + [0] * 22,
+ 'treatment_with_config': [1] + [0] * 22,
+ 'treatments_with_config': [1] + [0] * 22,
+ 'treatments_by_flag_set': [3] + [0] * 22,
+ 'treatments_by_flag_sets': [4] + [0] * 22,
+ 'treatments_with_config_by_flag_set': [5] + [0] * 22,
+ 'treatments_with_config_by_flag_sets': [6] + [0] * 22,
+ 'track': [1] + [0] * 22}})
+
+ def test_http_latencies(self, mocker):
+ http_latencies = HTTPLatencies()
+
+ http_latencies.pop_all() # should not raise exception
+ for resource in ModelTelemetry.HTTPExceptionsAndLatencies:
+ if self._get_http_latency(resource, http_latencies) == None:
+ continue
+ http_latencies.add_latency(resource, 50)
+ assert(self._get_http_latency(resource, http_latencies)[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ http_latencies.add_latency(resource, 50000000)
+ assert(self._get_http_latency(resource, http_latencies)[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ for j in range(10):
+ latency = random.randint(1001, 4987885)
+ current_count = self._get_http_latency(resource, http_latencies)[ModelTelemetry.get_latency_bucket_index(latency)]
+ [http_latencies.add_latency(resource, latency) for i in range(2)]
+ assert(self._get_http_latency(resource, http_latencies)[ModelTelemetry.get_latency_bucket_index(latency)] == 2 + current_count)
+
+ http_latencies.pop_all()
+ assert(http_latencies._event == [0] * 23)
+ assert(http_latencies._impression == [0] * 23)
+ assert(http_latencies._impression_count == [0] * 23)
+ assert(http_latencies._segment == [0] * 23)
+ assert(http_latencies._split == [0] * 23)
+ assert(http_latencies._telemetry == [0] * 23)
+ assert(http_latencies._token == [0] * 23)
+
+ http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, 10)
+ [http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, i) for i in [10, 20]]
+ http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, 40)
+ http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, 60)
+ http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, 90)
+ http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, 70)
+ [http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, i) for i in [10, 15]]
+ latencies = http_latencies.pop_all()
+ assert(latencies == {'httpLatencies': {'split': [1] + [0] * 22, 'segment': [1] + [0] * 22, 'impression': [2] + [0] * 22, 'impressionCount': [1] + [0] * 22, 'event': [1] + [0] * 22, 'telemetry': [1] + [0] * 22, 'token': [2] + [0] * 22}})
+
+ def _get_http_latency(self, resource, storage):
+ if resource == ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT:
+ return storage._split
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT:
+ return storage._segment
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION:
+ return storage._impression
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ return storage._impression_count
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.EVENT:
+ return storage._event
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY:
+ return storage._telemetry
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN:
+ return storage._token
+ else:
+ return
+
+ def test_method_exceptions(self, mocker):
+ method_exception = MethodExceptions()
+
+ exceptions = method_exception.pop_all() # should not raise exception
+ [method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT) for i in range(2)]
+ method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS)
+ method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG)
+ [method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG) for i in range(5)]
+ [method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET) for i in range(6)]
+ [method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS) for i in range(7)]
+ [method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET) for i in range(8)]
+ [method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS) for i in range(9)]
+ [method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TRACK) for i in range(3)]
+ exceptions = method_exception.pop_all()
+
+ assert(method_exception._treatment == 0)
+ assert(method_exception._treatments == 0)
+ assert(method_exception._treatment_with_config == 0)
+ assert(method_exception._treatments_with_config == 0)
+ assert(method_exception._treatments_by_flag_set == 0)
+ assert(method_exception._treatments_by_flag_sets == 0)
+ assert(method_exception._treatments_with_config_by_flag_set == 0)
+ assert(method_exception._treatments_with_config_by_flag_sets == 0)
+ assert(method_exception._track == 0)
+ assert(exceptions == {'methodExceptions': {'treatment': 2,
+ 'treatments': 1,
+ 'treatment_with_config': 1,
+ 'treatments_with_config': 5,
+ 'treatments_by_flag_set': 6,
+ 'treatments_by_flag_sets': 7,
+ 'treatments_with_config_by_flag_set': 8,
+ 'treatments_with_config_by_flag_sets': 9,
+ 'track': 3}})
+
+ def test_http_errors(self, mocker):
+ http_error = HTTPErrors()
+ errors = http_error.pop_all() # should not raise exception
+ [http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, str(i)) for i in [500, 501, 502]]
+ [http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, str(i)) for i in [400, 401, 402]]
+ http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, '502')
+ [http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, str(i)) for i in [501, 502]]
+ http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, '501')
+ http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, '505')
+ [http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, '502') for i in range(5)]
+ errors = http_error.pop_all()
+ assert(errors == {'httpErrors': {'split': {'400': 1, '401': 1, '402': 1}, 'segment': {'500': 1, '501': 1, '502': 1},
+ 'impression': {'502': 1}, 'impressionCount': {'501': 1, '502': 1},
+ 'event': {'501': 1}, 'telemetry': {'505': 1}, 'token': {'502': 5}}})
+ assert(http_error._split == {})
+ assert(http_error._segment == {})
+ assert(http_error._impression == {})
+ assert(http_error._impression_count == {})
+ assert(http_error._event == {})
+ assert(http_error._telemetry == {})
+
+ def test_last_synchronization(self, mocker):
+ last_synchronization = LastSynchronization()
+ last_synchronization.get_all() # should not raise exception
+ last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, 10)
+ last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, 20)
+ last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, 40)
+ last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, 60)
+ last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, 90)
+ last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, 70)
+ last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, 15)
+ assert(last_synchronization.get_all() == {'lastSynchronizations': {'split': 10, 'segment': 40, 'impression': 20, 'impressionCount': 60, 'event': 90, 'telemetry': 70, 'token': 15}})
+
+ def test_telemetry_counters(self):
+ telemetry_counter = TelemetryCounters()
+ assert(telemetry_counter._impressions_queued == 0)
+ assert(telemetry_counter._impressions_deduped == 0)
+ assert(telemetry_counter._impressions_dropped == 0)
+ assert(telemetry_counter._events_dropped == 0)
+ assert(telemetry_counter._events_queued == 0)
+ assert(telemetry_counter._auth_rejections == 0)
+ assert(telemetry_counter._token_refreshes == 0)
+ assert(telemetry_counter._update_from_sse == {})
+
+ assert(telemetry_counter.get_session_length() == 0)
+ telemetry_counter.record_session_length(20)
+ assert(telemetry_counter.get_session_length() == 20)
+
+ assert(telemetry_counter.pop_auth_rejections() == 0)
+ [telemetry_counter.record_auth_rejections() for i in range(5)]
+ auth_rejections = telemetry_counter.pop_auth_rejections()
+ assert(telemetry_counter._auth_rejections == 0)
+ assert(auth_rejections == 5)
+
+ assert(telemetry_counter.pop_token_refreshes() == 0)
+ [telemetry_counter.record_token_refreshes() for i in range(3)]
+ token_refreshes = telemetry_counter.pop_token_refreshes()
+ assert(telemetry_counter._token_refreshes == 0)
+ assert(token_refreshes == 3)
+
+ assert(telemetry_counter.get_counter_stats(ModelTelemetry.CounterConstants.IMPRESSIONS_QUEUED) == 0)
+ assert(telemetry_counter.get_counter_stats(ModelTelemetry.CounterConstants.IMPRESSIONS_DEDUPED) == 0)
+ assert(telemetry_counter.get_counter_stats(ModelTelemetry.CounterConstants.IMPRESSIONS_DROPPED) == 0)
+ assert(telemetry_counter.get_counter_stats(ModelTelemetry.CounterConstants.EVENTS_QUEUED) == 0)
+ assert(telemetry_counter.get_counter_stats(ModelTelemetry.CounterConstants.EVENTS_DROPPED) == 0)
+ telemetry_counter.record_impressions_value(ModelTelemetry.CounterConstants.IMPRESSIONS_QUEUED, 10)
+ assert(telemetry_counter._impressions_queued == 10)
+ telemetry_counter.record_impressions_value(ModelTelemetry.CounterConstants.IMPRESSIONS_DEDUPED, 14)
+ assert(telemetry_counter._impressions_deduped == 14)
+ telemetry_counter.record_impressions_value(ModelTelemetry.CounterConstants.IMPRESSIONS_DROPPED, 2)
+ assert(telemetry_counter._impressions_dropped == 2)
+ telemetry_counter.record_events_value(ModelTelemetry.CounterConstants.EVENTS_QUEUED, 30)
+ assert(telemetry_counter._events_queued == 30)
+ telemetry_counter.record_events_value(ModelTelemetry.CounterConstants.EVENTS_DROPPED, 1)
+ assert(telemetry_counter._events_dropped == 1)
+ telemetry_counter.record_update_from_sse(UpdateFromSSE.SPLIT_UPDATE)
+ assert(telemetry_counter._update_from_sse[UpdateFromSSE.SPLIT_UPDATE.value] == 1)
+ updates = telemetry_counter.pop_update_from_sse(UpdateFromSSE.SPLIT_UPDATE)
+ assert(telemetry_counter._update_from_sse[UpdateFromSSE.SPLIT_UPDATE.value] == 0)
+ assert(updates == 1)
+
+ def test_streaming_event(self, mocker):
+ streaming_event = StreamingEvent((ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED, 'split', 1234))
+ assert(streaming_event.type == ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED.value)
+ assert(streaming_event.data == 'split')
+ assert(streaming_event.time == 1234)
+
+ def test_streaming_events(self, mocker):
+ streaming_events = StreamingEvents()
+ events = streaming_events.pop_streaming_events() # should not raise exception
+ streaming_events.record_streaming_event((ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED, 'split', 1234))
+ streaming_events.record_streaming_event((ModelTelemetry.StreamingEventTypes.STREAMING_STATUS, 'split', 1234))
+ events = streaming_events.pop_streaming_events()
+ assert(streaming_events._streaming_events == [])
+ assert(events == {'streamingEvents': [{'e': ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED.value, 'd': 'split', 't': 1234},
+ {'e': ModelTelemetry.StreamingEventTypes.STREAMING_STATUS.value, 'd': 'split', 't': 1234}]})
+
+ def test_telemetry_config(self):
+ telemetry_config = TelemetryConfig()
+ stats = telemetry_config.get_stats() # should not raise exception
+ config = {'operationMode': 'standalone',
+ 'streamingEnabled': True,
+ 'impressionsQueueSize': 100,
+ 'eventsQueueSize': 200,
+ 'impressionsMode': 'DEBUG',''
+ 'impressionListener': None,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'impressionsRefreshRate': 60,
+ 'eventsPushRate': 60,
+ 'metricsRefreshRate': 10,
+ 'storageType': None,
+ 'flagSetsFilter': None
+ }
+ telemetry_config.record_config(config, {}, 5, 2)
+ assert(telemetry_config.get_stats() == {'oM': 0,
+ 'sT': telemetry_config._get_storage_type(config['operationMode'], config['storageType']),
+ 'sE': config['streamingEnabled'],
+ 'rR': {'sp': 30, 'se': 30, 'im': 60, 'ev': 60, 'te': 10},
+ 'uO': {'s': False, 'e': False, 'a': False, 'st': False, 't': False},
+ 'iQ': config['impressionsQueueSize'],
+ 'eQ': config['eventsQueueSize'],
+ 'iM': telemetry_config._get_impressions_mode(config['impressionsMode']),
+ 'iL': True if config['impressionListener'] is not None else False,
+ 'hp': telemetry_config._check_if_proxy_detected(),
+ 'tR': 0,
+ 'nR': 0,
+ 'bT': 0,
+ 'aF': 0,
+ 'rF': 0,
+ 'fsT': 5,
+ 'fsI': 2}
+ )
+
+ telemetry_config.record_ready_time(10)
+ assert(telemetry_config._time_until_ready == 10)
+
+ assert(telemetry_config.get_bur_time_outs() == 0)
+ [telemetry_config.record_bur_time_out() for i in range(2)]
+ assert(telemetry_config.get_bur_time_outs() == 2)
+
+ assert(telemetry_config.get_non_ready_usage() == 0)
+ [telemetry_config.record_not_ready_usage() for i in range(5)]
+ assert(telemetry_config.get_non_ready_usage() == 5)
+
+ os.environ["https_proxy"] = "some_host_ip"
+ assert(telemetry_config._check_if_proxy_detected() == True)
+
+ del os.environ["https_proxy"]
+ assert(telemetry_config._check_if_proxy_detected() == False)
+
+ os.environ["HTTPS_proxy"] = "some_host_ip"
+ assert(telemetry_config._check_if_proxy_detected() == True)
+
+ del os.environ["HTTPS_proxy"]
+ assert(telemetry_config._check_if_proxy_detected() == False)
+
+class TelemetryModelAsyncTests(object):
+ """Telemetry model async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_method_latencies(self, mocker):
+ method_latencies = await MethodLatenciesAsync.create()
+
+ for method in ModelTelemetry.MethodExceptionsAndLatencies:
+ await method_latencies.add_latency(method, 50)
+ if method.value == 'treatment':
+ assert(method_latencies._treatment[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments':
+ assert(method_latencies._treatments[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatment_with_config':
+ assert(method_latencies._treatment_with_config[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_with_config':
+ assert(method_latencies._treatments_with_config[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_by_flag_set':
+ assert(method_latencies._treatments_by_flag_set[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_by_flag_sets':
+ assert(method_latencies._treatments_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_with_config_by_flag_set':
+ assert(method_latencies._treatments_with_config_by_flag_set[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'treatments_with_config_by_flag_sets':
+ assert(method_latencies._treatments_with_config_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ elif method.value == 'track':
+ assert(method_latencies._track[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+
+ await method_latencies.add_latency(method, 50000000)
+ if method.value == 'treatment':
+ assert(method_latencies._treatment[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ if method.value == 'treatments':
+ assert(method_latencies._treatments[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ if method.value == 'treatment_with_config':
+ assert(method_latencies._treatment_with_config[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ if method.value == 'treatments_with_config':
+ assert(method_latencies._treatments_with_config[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ elif method.value == 'treatments_by_flag_set':
+ assert(method_latencies._treatments_by_flag_set[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ elif method.value == 'treatments_by_flag_sets':
+ assert(method_latencies._treatments_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ elif method.value == 'treatments_with_config_by_flag_set':
+ assert(method_latencies._treatments_with_config_by_flag_set[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ elif method.value == 'treatments_with_config_by_flag_sets':
+ assert(method_latencies._treatments_with_config_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ if method.value == 'track':
+ assert(method_latencies._track[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+
+ await method_latencies.pop_all()
+ assert(method_latencies._track == [0] * 23)
+ assert(method_latencies._treatment == [0] * 23)
+ assert(method_latencies._treatments == [0] * 23)
+ assert(method_latencies._treatment_with_config == [0] * 23)
+ assert(method_latencies._treatments_with_config == [0] * 23)
+ assert(method_latencies._treatments_by_flag_set == [0] * 23)
+ assert(method_latencies._treatments_by_flag_sets == [0] * 23)
+ assert(method_latencies._treatments_with_config_by_flag_set == [0] * 23)
+ assert(method_latencies._treatments_with_config_by_flag_sets == [0] * 23)
+
+ await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT, 10)
+ [await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS, 20) for i in range(2)]
+ await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG, 50)
+ await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG, 20)
+ [await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET, 20) for i in range(3)]
+ [await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS, 20) for i in range(4)]
+ [await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET, 20) for i in range(5)]
+ [await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS, 20) for i in range(6)]
+ await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TRACK, 20)
+ latencies = await method_latencies.pop_all()
+ assert(latencies == {'methodLatencies': {'treatment': [1] + [0] * 22,
+ 'treatments': [2] + [0] * 22,
+ 'treatment_with_config': [1] + [0] * 22,
+ 'treatments_with_config': [1] + [0] * 22,
+ 'treatments_by_flag_set': [3] + [0] * 22,
+ 'treatments_by_flag_sets': [4] + [0] * 22,
+ 'treatments_with_config_by_flag_set': [5] + [0] * 22,
+ 'treatments_with_config_by_flag_sets': [6] + [0] * 22,
+ 'track': [1] + [0] * 22}})
+
+ @pytest.mark.asyncio
+ async def test_http_latencies(self, mocker):
+ http_latencies = await HTTPLatenciesAsync.create()
+
+ for resource in ModelTelemetry.HTTPExceptionsAndLatencies:
+ if self._get_http_latency(resource, http_latencies) == None:
+ continue
+ await http_latencies.add_latency(resource, 50)
+ assert(self._get_http_latency(resource, http_latencies)[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ await http_latencies.add_latency(resource, 50000000)
+ assert(self._get_http_latency(resource, http_latencies)[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ for j in range(10):
+ latency = random.randint(1001, 4987885)
+ current_count = self._get_http_latency(resource, http_latencies)[ModelTelemetry.get_latency_bucket_index(latency)]
+ [await http_latencies.add_latency(resource, latency) for i in range(2)]
+ assert(self._get_http_latency(resource, http_latencies)[ModelTelemetry.get_latency_bucket_index(latency)] == 2 + current_count)
+
+ await http_latencies.pop_all()
+ assert(http_latencies._event == [0] * 23)
+ assert(http_latencies._impression == [0] * 23)
+ assert(http_latencies._impression_count == [0] * 23)
+ assert(http_latencies._segment == [0] * 23)
+ assert(http_latencies._split == [0] * 23)
+ assert(http_latencies._telemetry == [0] * 23)
+ assert(http_latencies._token == [0] * 23)
+
+ await http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, 10)
+ [await http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, i) for i in [10, 20]]
+ await http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, 40)
+ await http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, 60)
+ await http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, 90)
+ await http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, 70)
+ [await http_latencies.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, i) for i in [10, 15]]
+ latencies = await http_latencies.pop_all()
+ assert(latencies == {'httpLatencies': {'split': [1] + [0] * 22, 'segment': [1] + [0] * 22, 'impression': [2] + [0] * 22, 'impressionCount': [1] + [0] * 22, 'event': [1] + [0] * 22, 'telemetry': [1] + [0] * 22, 'token': [2] + [0] * 22}})
+
+ def _get_http_latency(self, resource, storage):
+ if resource == ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT:
+ return storage._split
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT:
+ return storage._segment
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION:
+ return storage._impression
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ return storage._impression_count
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.EVENT:
+ return storage._event
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY:
+ return storage._telemetry
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN:
+ return storage._token
+ else:
+ return
+
+ @pytest.mark.asyncio
+ async def test_method_exceptions(self, mocker):
+ method_exception = await MethodExceptionsAsync.create()
+
+ [await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT) for i in range(2)]
+ await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS)
+ await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG)
+ [await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG) for i in range(5)]
+ [await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET) for i in range(6)]
+ [await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS) for i in range(7)]
+ [await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET) for i in range(8)]
+ [await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS) for i in range(9)]
+ [await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TRACK) for i in range(3)]
+ exceptions = await method_exception.pop_all()
+
+ assert(method_exception._treatment == 0)
+ assert(method_exception._treatments == 0)
+ assert(method_exception._treatment_with_config == 0)
+ assert(method_exception._treatments_with_config == 0)
+ assert(method_exception._treatments_by_flag_set == 0)
+ assert(method_exception._treatments_by_flag_sets == 0)
+ assert(method_exception._treatments_with_config_by_flag_set == 0)
+ assert(method_exception._treatments_with_config_by_flag_sets == 0)
+ assert(method_exception._track == 0)
+ assert(exceptions == {'methodExceptions': {'treatment': 2,
+ 'treatments': 1,
+ 'treatment_with_config': 1,
+ 'treatments_with_config': 5,
+ 'treatments_by_flag_set': 6,
+ 'treatments_by_flag_sets': 7,
+ 'treatments_with_config_by_flag_set': 8,
+ 'treatments_with_config_by_flag_sets': 9,
+ 'track': 3}})
+
+ @pytest.mark.asyncio
+ async def test_http_errors(self, mocker):
+ http_error = await HTTPErrorsAsync.create()
+ [await http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, str(i)) for i in [500, 501, 502]]
+ [await http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, str(i)) for i in [400, 401, 402]]
+ await http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, '502')
+ [await http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, str(i)) for i in [501, 502]]
+ await http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, '501')
+ await http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, '505')
+ [await http_error.add_error(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, '502') for i in range(5)]
+ errors = await http_error.pop_all()
+ assert(errors == {'httpErrors': {'split': {'400': 1, '401': 1, '402': 1}, 'segment': {'500': 1, '501': 1, '502': 1},
+ 'impression': {'502': 1}, 'impressionCount': {'501': 1, '502': 1},
+ 'event': {'501': 1}, 'telemetry': {'505': 1}, 'token': {'502': 5}}})
+ assert(http_error._split == {})
+ assert(http_error._segment == {})
+ assert(http_error._impression == {})
+ assert(http_error._impression_count == {})
+ assert(http_error._event == {})
+ assert(http_error._telemetry == {})
+
+ @pytest.mark.asyncio
+ async def test_last_synchronization(self, mocker):
+ last_synchronization = await LastSynchronizationAsync.create()
+ await last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, 10)
+ await last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, 20)
+ await last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, 40)
+ await last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, 60)
+ await last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, 90)
+ await last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, 70)
+ await last_synchronization.add_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, 15)
+ assert(await last_synchronization.get_all() == {'lastSynchronizations': {'split': 10, 'segment': 40, 'impression': 20, 'impressionCount': 60, 'event': 90, 'telemetry': 70, 'token': 15}})
+
+ @pytest.mark.asyncio
+ async def test_telemetry_counters(self):
+ telemetry_counter = await TelemetryCountersAsync.create()
+ assert(telemetry_counter._impressions_queued == 0)
+ assert(telemetry_counter._impressions_deduped == 0)
+ assert(telemetry_counter._impressions_dropped == 0)
+ assert(telemetry_counter._events_dropped == 0)
+ assert(telemetry_counter._events_queued == 0)
+ assert(telemetry_counter._auth_rejections == 0)
+ assert(telemetry_counter._token_refreshes == 0)
+ assert(telemetry_counter._update_from_sse == {})
+
+ await telemetry_counter.record_session_length(20)
+ assert(await telemetry_counter.get_session_length() == 20)
+
+ [await telemetry_counter.record_auth_rejections() for i in range(5)]
+ auth_rejections = await telemetry_counter.pop_auth_rejections()
+ assert(telemetry_counter._auth_rejections == 0)
+ assert(auth_rejections == 5)
+
+ [await telemetry_counter.record_token_refreshes() for i in range(3)]
+ token_refreshes = await telemetry_counter.pop_token_refreshes()
+ assert(telemetry_counter._token_refreshes == 0)
+ assert(token_refreshes == 3)
+
+ await telemetry_counter.record_impressions_value(ModelTelemetry.CounterConstants.IMPRESSIONS_QUEUED, 10)
+ assert(telemetry_counter._impressions_queued == 10)
+ await telemetry_counter.record_impressions_value(ModelTelemetry.CounterConstants.IMPRESSIONS_DEDUPED, 14)
+ assert(telemetry_counter._impressions_deduped == 14)
+ await telemetry_counter.record_impressions_value(ModelTelemetry.CounterConstants.IMPRESSIONS_DROPPED, 2)
+ assert(telemetry_counter._impressions_dropped == 2)
+ await telemetry_counter.record_events_value(ModelTelemetry.CounterConstants.EVENTS_QUEUED, 30)
+ assert(telemetry_counter._events_queued == 30)
+ await telemetry_counter.record_events_value(ModelTelemetry.CounterConstants.EVENTS_DROPPED, 1)
+ assert(telemetry_counter._events_dropped == 1)
+ await telemetry_counter.record_update_from_sse(UpdateFromSSE.SPLIT_UPDATE)
+ assert(telemetry_counter._update_from_sse[UpdateFromSSE.SPLIT_UPDATE.value] == 1)
+ updates = await telemetry_counter.pop_update_from_sse(UpdateFromSSE.SPLIT_UPDATE)
+ assert(telemetry_counter._update_from_sse[UpdateFromSSE.SPLIT_UPDATE.value] == 0)
+ assert(updates == 1)
+
+ @pytest.mark.asyncio
+ async def test_streaming_events(self, mocker):
+ streaming_events = await StreamingEventsAsync.create()
+ await streaming_events.record_streaming_event((ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED, 'split', 1234))
+ await streaming_events.record_streaming_event((ModelTelemetry.StreamingEventTypes.STREAMING_STATUS, 'split', 1234))
+ events = await streaming_events.pop_streaming_events()
+ assert(streaming_events._streaming_events == [])
+ assert(events == {'streamingEvents': [{'e': ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED.value, 'd': 'split', 't': 1234},
+ {'e': ModelTelemetry.StreamingEventTypes.STREAMING_STATUS.value, 'd': 'split', 't': 1234}]})
+
+ @pytest.mark.asyncio
+ async def test_telemetry_config(self):
+ telemetry_config = await TelemetryConfigAsync.create()
+ config = {'operationMode': 'standalone',
+ 'streamingEnabled': True,
+ 'impressionsQueueSize': 100,
+ 'eventsQueueSize': 200,
+ 'impressionsMode': 'DEBUG',''
+ 'impressionListener': None,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'impressionsRefreshRate': 60,
+ 'eventsPushRate': 60,
+ 'metricsRefreshRate': 10,
+ 'storageType': None,
+ 'flagSetsFilter': None
+ }
+ await telemetry_config.record_config(config, {}, 5, 2)
+ assert(await telemetry_config.get_stats() == {'oM': 0,
+ 'sT': telemetry_config._get_storage_type(config['operationMode'], config['storageType']),
+ 'sE': config['streamingEnabled'],
+ 'rR': {'sp': 30, 'se': 30, 'im': 60, 'ev': 60, 'te': 10},
+ 'uO': {'s': False, 'e': False, 'a': False, 'st': False, 't': False},
+ 'iQ': config['impressionsQueueSize'],
+ 'eQ': config['eventsQueueSize'],
+ 'iM': telemetry_config._get_impressions_mode(config['impressionsMode']),
+ 'iL': True if config['impressionListener'] is not None else False,
+ 'hp': telemetry_config._check_if_proxy_detected(),
+ 'tR': 0,
+ 'nR': 0,
+ 'bT': 0,
+ 'aF': 0,
+ 'rF': 0,
+ 'fsT': 5,
+ 'fsI': 2}
+ )
+
+ await telemetry_config.record_ready_time(10)
+ assert(telemetry_config._time_until_ready == 10)
+
+ [await telemetry_config.record_bur_time_out() for i in range(2)]
+ assert(await telemetry_config.get_bur_time_outs() == 2)
+
+ [await telemetry_config.record_not_ready_usage() for i in range(5)]
+ assert(await telemetry_config.get_non_ready_usage() == 5)
diff --git a/tests/models/test_token.py b/tests/models/test_token.py
new file mode 100644
index 00000000..35444f97
--- /dev/null
+++ b/tests/models/test_token.py
@@ -0,0 +1,49 @@
+"""Split model tests module."""
+
+from splitio.models import token
+from splitio.models.grammar.condition import Condition
+
+
+class TokenTests(object):
+ """Token model tests."""
+ raw_false = {'pushEnabled': False}
+
+ def test_from_raw_false(self):
+ """Test token model parsing."""
+ parsed = token.from_raw(self.raw_false)
+ assert parsed.push_enabled == False
+ assert parsed.iat == None
+ assert parsed.channels == None
+ assert parsed.exp == None
+ assert parsed.token == None
+
+ raw_empty = {
+ 'pushEnabled': True,
+ 'token': '',
+ }
+
+ def test_from_raw_empty(self):
+ """Test token model parsing."""
+ parsed = token.from_raw(self.raw_empty)
+ assert parsed.push_enabled == False
+ assert parsed.iat == None
+ assert parsed.channels == None
+ assert parsed.exp == None
+ assert parsed.token == None
+
+ raw_ok = {
+ 'pushEnabled': True,
+ 'token': 'eyJhbGciOiJIUzI1NiIsImtpZCI6IjVZOU05US45QnJtR0EiLCJ0eXAiOiJKV1QifQ.eyJ4LWFibHktY2FwYWJpbGl0eSI6IntcIk56TTJNREk1TXpjMF9NVGd5TlRnMU1UZ3dOZz09X3NlZ21lbnRzXCI6W1wic3Vic2NyaWJlXCJdLFwiTnpNMk1ESTVNemMwX01UZ3lOVGcxTVRnd05nPT1fc3BsaXRzXCI6W1wic3Vic2NyaWJlXCJdLFwiY29udHJvbF9wcmlcIjpbXCJzdWJzY3JpYmVcIixcImNoYW5uZWwtbWV0YWRhdGE6cHVibGlzaGVyc1wiXSxcImNvbnRyb2xfc2VjXCI6W1wic3Vic2NyaWJlXCIsXCJjaGFubmVsLW1ldGFkYXRhOnB1Ymxpc2hlcnNcIl19IiwieC1hYmx5LWNsaWVudElkIjoiY2xpZW50SWQiLCJleHAiOjE2MDIwODgxMjcsImlhdCI6MTYwMjA4NDUyN30.5_MjWonhs6yoFhw44hNJm3H7_YMjXpSW105DwjjppqE',
+ }
+
+ def test_from_raw(self):
+ """Test token model parsing."""
+ parsed = token.from_raw(self.raw_ok)
+ assert isinstance(parsed, token.Token)
+ assert parsed.push_enabled == True
+ assert parsed.iat == 1602084527
+ assert parsed.exp == 1602088127
+ assert parsed.channels['NzM2MDI5Mzc0_MTgyNTg1MTgwNg==_segments'] == ['subscribe']
+ assert parsed.channels['NzM2MDI5Mzc0_MTgyNTg1MTgwNg==_splits'] == ['subscribe']
+ assert parsed.channels['control_pri'] == ['subscribe', 'channel-metadata:publishers']
+ assert parsed.channels['control_sec'] == ['subscribe', 'channel-metadata:publishers']
diff --git a/tests/push/__init__.py b/tests/push/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/push/test_manager.py b/tests/push/test_manager.py
new file mode 100644
index 00000000..3525baf3
--- /dev/null
+++ b/tests/push/test_manager.py
@@ -0,0 +1,493 @@
+"""Push notification manager tests."""
+#pylint:disable=no-self-use,protected-access
+from threading import Thread
+from queue import Queue
+import pytest
+
+from splitio.api import APIException
+from splitio.models.token import Token
+from splitio.push.sse import SSEEvent
+from splitio.push.parser import parse_incoming_event, EventType, ControlType, ControlMessage, \
+ OccupancyMessage, SplitChangeUpdate, SplitKillUpdate, SegmentChangeUpdate
+from splitio.push.processor import MessageProcessor, MessageProcessorAsync
+from splitio.push.status_tracker import PushStatusTracker
+from splitio.push.manager import PushManager, PushManagerAsync, _TOKEN_REFRESH_GRACE_PERIOD
+from splitio.push.splitsse import SplitSSEClient, SplitSSEClientAsync
+from splitio.push.status_tracker import Status
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
+from splitio.models.telemetry import StreamingEventTypes
+from splitio.optional.loaders import asyncio
+
+from tests.helpers import Any
+
+
+class PushManagerTests(object):
+ """Parser tests."""
+
+ def test_connection_success(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ api_mock = mocker.Mock()
+ api_mock.authenticate.return_value = Token(True, 'abc', {}, 2000000, 1000000)
+
+ sse_mock = mocker.Mock(spec=SplitSSEClient)
+ sse_constructor_mock = mocker.Mock()
+ sse_constructor_mock.return_value = sse_mock
+ timer_mock = mocker.Mock()
+ mocker.patch('splitio.push.manager.Timer', new=timer_mock)
+ mocker.patch('splitio.push.manager.SplitSSEClient', new=sse_constructor_mock)
+ feedback_loop = Queue()
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = PushManager(api_mock, mocker.Mock(), feedback_loop, mocker.Mock(), telemetry_runtime_producer)
+
+ def new_start(*args, **kwargs): # pylint: disable=unused-argument
+ """splitsse.start mock."""
+ thread = Thread(target=manager._handle_connection_ready, daemon=True)
+ thread.start()
+ return True
+
+ sse_mock.start.side_effect = new_start
+
+ manager.start()
+ assert feedback_loop.get() == Status.PUSH_SUBSYSTEM_UP
+ assert timer_mock.mock_calls == [
+ mocker.call(0, Any()),
+ mocker.call().cancel(),
+ mocker.call(1000000 - _TOKEN_REFRESH_GRACE_PERIOD, manager._token_refresh),
+ mocker.call().setName('TokenRefresh'),
+ mocker.call().start()
+ ]
+ assert(telemetry_storage._streaming_events._streaming_events[0]._type == StreamingEventTypes.TOKEN_REFRESH.value)
+ assert(telemetry_storage._streaming_events._streaming_events[1]._type == StreamingEventTypes.CONNECTION_ESTABLISHED.value)
+
+ def test_connection_failure(self, mocker):
+ """Test the connection fails to be established."""
+ api_mock = mocker.Mock()
+ api_mock.authenticate.return_value = Token(True, 'abc', {}, 2000000, 1000000)
+
+ sse_mock = mocker.Mock(spec=SplitSSEClient)
+ sse_constructor_mock = mocker.Mock()
+ sse_constructor_mock.return_value = sse_mock
+ timer_mock = mocker.Mock()
+ mocker.patch('splitio.push.manager.Timer', new=timer_mock)
+ mocker.patch('splitio.push.manager.SplitSSEClient', new=sse_constructor_mock)
+ feedback_loop = Queue()
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = PushManager(api_mock, mocker.Mock(), feedback_loop, mocker.Mock(), telemetry_runtime_producer)
+
+ def new_start(*args, **kwargs): # pylint: disable=unused-argument
+ """splitsse.start mock."""
+ thread = Thread(target=manager._handle_connection_end, daemon=True)
+ thread.start()
+ return False
+
+ sse_mock.start.side_effect = new_start
+
+ manager.start()
+ assert feedback_loop.get() == Status.PUSH_RETRYABLE_ERROR
+ assert timer_mock.mock_calls == [mocker.call(0, Any())]
+
+ def test_empty_auth_respnse(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ api_mock = mocker.Mock()
+ api_mock.authenticate.return_value = Token(False, None, None, None, None)
+
+ sse_mock = mocker.Mock(spec=SplitSSEClient)
+ sse_constructor_mock = mocker.Mock()
+ sse_constructor_mock.return_value = sse_mock
+ timer_mock = mocker.Mock()
+ mocker.patch('splitio.push.manager.Timer', new=timer_mock)
+ mocker.patch('splitio.push.manager.SplitSSEClient', new=sse_constructor_mock)
+ feedback_loop = Queue()
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = PushManager(api_mock, mocker.Mock(), feedback_loop, mocker.Mock(), telemetry_runtime_producer)
+ manager.start()
+ assert feedback_loop.get() == Status.PUSH_NONRETRYABLE_ERROR
+ assert timer_mock.mock_calls == [mocker.call(0, Any())]
+ assert sse_mock.mock_calls == []
+
+
+ def test_push_disabled(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ api_mock = mocker.Mock()
+ api_mock.authenticate.return_value = Token(False, 'abc', {}, 1, 2)
+
+ sse_mock = mocker.Mock(spec=SplitSSEClient)
+ sse_constructor_mock = mocker.Mock()
+ sse_constructor_mock.return_value = sse_mock
+ timer_mock = mocker.Mock()
+ mocker.patch('splitio.push.manager.Timer', new=timer_mock)
+ mocker.patch('splitio.push.manager.SplitSSEClient', new=sse_constructor_mock)
+ feedback_loop = Queue()
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = PushManager(api_mock, mocker.Mock(), feedback_loop, mocker.Mock(), telemetry_runtime_producer)
+ manager.start()
+ assert feedback_loop.get() == Status.PUSH_NONRETRYABLE_ERROR
+ assert timer_mock.mock_calls == [mocker.call(0, Any())]
+ assert sse_mock.mock_calls == []
+
+
+ def test_auth_apiexception(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ api_mock = mocker.Mock()
+ api_mock.authenticate.side_effect = APIException('something')
+
+ sse_mock = mocker.Mock(spec=SplitSSEClient)
+ sse_constructor_mock = mocker.Mock()
+ sse_constructor_mock.return_value = sse_mock
+ timer_mock = mocker.Mock()
+ mocker.patch('splitio.push.manager.Timer', new=timer_mock)
+ mocker.patch('splitio.push.manager.SplitSSEClient', new=sse_constructor_mock)
+
+ feedback_loop = Queue()
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = PushManager(api_mock, mocker.Mock(), feedback_loop, mocker.Mock(), telemetry_runtime_producer)
+ manager.start()
+ assert feedback_loop.get() == Status.PUSH_RETRYABLE_ERROR
+ assert timer_mock.mock_calls == [mocker.call(0, Any())]
+ assert sse_mock.mock_calls == []
+
+ def test_split_change(self, mocker):
+ """Test update-type messages are properly forwarded to the processor."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ update_message = SplitChangeUpdate('chan', 123, 456, None, None, None)
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = update_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ processor_mock = mocker.Mock(spec=MessageProcessor)
+ mocker.patch('splitio.push.manager.MessageProcessor', new=processor_mock)
+
+ telemetry_runtime_producer = mocker.Mock()
+ synchronizer = mocker.Mock()
+ manager = PushManager(mocker.Mock(), synchronizer, mocker.Mock(), mocker.Mock(), telemetry_runtime_producer)
+ manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert processor_mock.mock_calls == [
+ mocker.call(synchronizer, telemetry_runtime_producer),
+ mocker.call().handle(update_message)
+ ]
+
+ def test_split_kill(self, mocker):
+ """Test update-type messages are properly forwarded to the processor."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ update_message = SplitKillUpdate('chan', 123, 456, 'some_split', 'off')
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = update_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ processor_mock = mocker.Mock(spec=MessageProcessor)
+ mocker.patch('splitio.push.manager.MessageProcessor', new=processor_mock)
+
+ telemetry_runtime_producer = mocker.Mock()
+ synchronizer = mocker.Mock()
+ manager = PushManager(mocker.Mock(), synchronizer, mocker.Mock(), mocker.Mock(), telemetry_runtime_producer)
+ manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert processor_mock.mock_calls == [
+ mocker.call(synchronizer, telemetry_runtime_producer),
+ mocker.call().handle(update_message)
+ ]
+
+ def test_segment_change(self, mocker):
+ """Test update-type messages are properly forwarded to the processor."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ update_message = SegmentChangeUpdate('chan', 123, 456, 'some_segment')
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = update_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ processor_mock = mocker.Mock(spec=MessageProcessor)
+ mocker.patch('splitio.push.manager.MessageProcessor', new=processor_mock)
+
+ telemetry_runtime_producer = mocker.Mock()
+ synchronizer = mocker.Mock()
+ manager = PushManager(mocker.Mock(), synchronizer, mocker.Mock(), mocker.Mock(), telemetry_runtime_producer)
+ manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert processor_mock.mock_calls == [
+ mocker.call(synchronizer, telemetry_runtime_producer),
+ mocker.call().handle(update_message)
+ ]
+
+ def test_control_message(self, mocker):
+ """Test control mesage is forwarded to status tracker."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ control_message = ControlMessage('chan', 123, ControlType.STREAMING_ENABLED)
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = control_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ status_tracker_mock = mocker.Mock(spec=PushStatusTracker)
+ mocker.patch('splitio.push.manager.PushStatusTracker', new=status_tracker_mock)
+
+ manager = PushManager(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert status_tracker_mock.mock_calls[1] == mocker.call().handle_control_message(control_message)
+
+ def test_occupancy_message(self, mocker):
+ """Test control mesage is forwarded to status tracker."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ occupancy_message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 123, 2)
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = occupancy_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ status_tracker_mock = mocker.Mock(spec=PushStatusTracker)
+ mocker.patch('splitio.push.manager.PushStatusTracker', new=status_tracker_mock)
+
+ manager = PushManager(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert status_tracker_mock.mock_calls[1] == mocker.call().handle_occupancy(occupancy_message)
+
+class PushManagerAsyncTests(object):
+ """Parser tests."""
+
+ @pytest.mark.asyncio
+ async def test_connection_success(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ api_mock = mocker.Mock()
+ async def authenticate():
+ return Token(True, 'abc', {}, 2000000, 1000000)
+ api_mock.authenticate.side_effect = authenticate
+
+ self.token = None
+ def timer_mock(token):
+ print("timer_mock")
+ self.token = token
+ return (token.exp - token.iat) - _TOKEN_REFRESH_GRACE_PERIOD
+
+ async def coro():
+ t = 0
+ try:
+ while t < 3:
+ await asyncio.sleep(1)
+ yield SSEEvent('1', EventType.MESSAGE, '', '{}')
+ t += 1
+ except Exception:
+ pass
+
+ sse_mock = mocker.Mock(spec=SplitSSEClientAsync)
+ sse_mock.start.return_value = coro()
+ async def stop():
+ pass
+ sse_mock.stop = stop
+
+ feedback_loop = asyncio.Queue()
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = PushManagerAsync(api_mock, mocker.Mock(), feedback_loop, mocker.Mock(), telemetry_runtime_producer)
+ manager._get_time_period = timer_mock
+ manager._sse_client = sse_mock
+
+ async def deferred_shutdown():
+ await asyncio.sleep(2)
+ await manager.stop(True)
+
+ manager.start()
+ sse_mock.status = SplitSSEClient._Status.IDLE
+ shutdown_task = asyncio.get_running_loop().create_task(deferred_shutdown())
+
+ assert await feedback_loop.get() == Status.PUSH_SUBSYSTEM_UP
+ assert self.token.push_enabled
+ assert self.token.token == 'abc'
+ assert self.token.channels == {}
+ assert self.token.exp == 2000000
+ assert self.token.iat == 1000000
+
+ try:
+ await shutdown_task
+ except:
+ pass
+ assert not manager._running
+ assert(telemetry_storage._streaming_events._streaming_events[0]._type == StreamingEventTypes.TOKEN_REFRESH.value)
+ assert(telemetry_storage._streaming_events._streaming_events[1]._type == StreamingEventTypes.CONNECTION_ESTABLISHED.value)
+
+ @pytest.mark.asyncio
+ async def test_connection_failure(self, mocker):
+ """Test the connection fails to be established."""
+ api_mock = mocker.Mock()
+ async def authenticate():
+ return Token(True, 'abc', {}, 2000000, 1000000)
+ api_mock.authenticate.side_effect = authenticate
+
+ sse_mock = mocker.Mock(spec=SplitSSEClientAsync)
+ feedback_loop = asyncio.Queue()
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = PushManagerAsync(api_mock, mocker.Mock(), feedback_loop, mocker.Mock(), telemetry_runtime_producer)
+ manager._sse_client = sse_mock
+
+ async def coro():
+ if False: yield '' # fit a never-called yield directive to force the func to be an async generator
+ return
+ sse_mock.start.return_value = coro()
+
+ manager.start()
+ assert await feedback_loop.get() == Status.PUSH_RETRYABLE_ERROR
+
+ await manager.stop(True)
+ assert not manager._running
+
+ @pytest.mark.asyncio
+ async def test_push_disabled(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ api_mock = mocker.Mock()
+ async def authenticate():
+ return Token(False, 'abc', {}, 1, 2)
+ api_mock.authenticate.side_effect = authenticate
+
+ sse_mock = mocker.Mock(spec=SplitSSEClientAsync)
+ feedback_loop = asyncio.Queue()
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+
+ manager = PushManagerAsync(api_mock, mocker.Mock(), feedback_loop, mocker.Mock(), telemetry_runtime_producer)
+ manager._sse_client = sse_mock
+
+ manager.start()
+ assert await feedback_loop.get() == Status.PUSH_NONRETRYABLE_ERROR
+ assert sse_mock.mock_calls == []
+
+ await manager.stop(True)
+ assert not manager._running
+
+ @pytest.mark.asyncio
+ async def test_auth_apiexception(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ api_mock = mocker.Mock()
+ api_mock.authenticate.side_effect = APIException('something')
+
+ sse_mock = mocker.Mock(spec=SplitSSEClientAsync)
+
+ feedback_loop = asyncio.Queue()
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = PushManagerAsync(api_mock, mocker.Mock(), feedback_loop, mocker.Mock(), telemetry_runtime_producer)
+ manager._sse_client = sse_mock
+ manager.start()
+ assert await feedback_loop.get() == Status.PUSH_RETRYABLE_ERROR
+ assert sse_mock.mock_calls == []
+
+ await manager.stop(True)
+ assert not manager._running
+
+ @pytest.mark.asyncio
+ async def test_split_change(self, mocker):
+ """Test update-type messages are properly forwarded to the processor."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ update_message = SplitChangeUpdate('chan', 123, 456, None, None, None)
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = update_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ processor_mock = mocker.Mock(spec=MessageProcessorAsync)
+ mocker.patch('splitio.push.manager.MessageProcessorAsync', new=processor_mock)
+
+ telemetry_runtime_producer = mocker.Mock()
+ synchronizer = mocker.Mock()
+ manager = PushManagerAsync(mocker.Mock(), synchronizer, mocker.Mock(), mocker.Mock(), telemetry_runtime_producer)
+ await manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert processor_mock.mock_calls == [
+ mocker.call(synchronizer, telemetry_runtime_producer),
+ mocker.call().handle(update_message)
+ ]
+
+ @pytest.mark.asyncio
+ async def test_split_kill(self, mocker):
+ """Test update-type messages are properly forwarded to the processor."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ update_message = SplitKillUpdate('chan', 123, 456, 'some_split', 'off')
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = update_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ processor_mock = mocker.Mock(spec=MessageProcessorAsync)
+ mocker.patch('splitio.push.manager.MessageProcessorAsync', new=processor_mock)
+
+ telemetry_runtime_producer = mocker.Mock()
+ synchronizer = mocker.Mock()
+ manager = PushManagerAsync(mocker.Mock(), synchronizer, mocker.Mock(), mocker.Mock(), telemetry_runtime_producer)
+ await manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert processor_mock.mock_calls == [
+ mocker.call(synchronizer, telemetry_runtime_producer),
+ mocker.call().handle(update_message)
+ ]
+
+ await manager.stop(True)
+ assert not manager._running
+
+ @pytest.mark.asyncio
+ async def test_segment_change(self, mocker):
+ """Test update-type messages are properly forwarded to the processor."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ update_message = SegmentChangeUpdate('chan', 123, 456, 'some_segment')
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = update_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ processor_mock = mocker.Mock(spec=MessageProcessorAsync)
+ mocker.patch('splitio.push.manager.MessageProcessorAsync', new=processor_mock)
+
+ telemetry_runtime_producer = mocker.Mock()
+ synchronizer = mocker.Mock()
+ manager = PushManagerAsync(mocker.Mock(), synchronizer, mocker.Mock(), mocker.Mock(), telemetry_runtime_producer)
+ await manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert processor_mock.mock_calls == [
+ mocker.call(synchronizer, telemetry_runtime_producer),
+ mocker.call().handle(update_message)
+ ]
+
+ @pytest.mark.asyncio
+ async def test_control_message(self, mocker):
+ """Test control mesage is forwarded to status tracker."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ control_message = ControlMessage('chan', 123, ControlType.STREAMING_ENABLED)
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = control_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ status_tracker_mock = mocker.Mock(spec=PushStatusTracker)
+ mocker.patch('splitio.push.manager.PushStatusTrackerAsync', new=status_tracker_mock)
+
+ manager = PushManagerAsync(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ await manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert status_tracker_mock.mock_calls[1] == mocker.call().handle_control_message(control_message)
+
+ @pytest.mark.asyncio
+ async def test_occupancy_message(self, mocker):
+ """Test control mesage is forwarded to status tracker."""
+ sse_event = SSEEvent('1', EventType.MESSAGE, '', '{}')
+ occupancy_message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 123, 2)
+ parse_event_mock = mocker.Mock(spec=parse_incoming_event)
+ parse_event_mock.return_value = occupancy_message
+ mocker.patch('splitio.push.manager.parse_incoming_event', new=parse_event_mock)
+
+ status_tracker_mock = mocker.Mock(spec=PushStatusTracker)
+ mocker.patch('splitio.push.manager.PushStatusTrackerAsync', new=status_tracker_mock)
+
+ manager = PushManagerAsync(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ await manager._event_handler(sse_event)
+ assert parse_event_mock.mock_calls == [mocker.call(sse_event)]
+ assert status_tracker_mock.mock_calls[1] == mocker.call().handle_occupancy(occupancy_message)
diff --git a/tests/push/test_parser.py b/tests/push/test_parser.py
new file mode 100644
index 00000000..faffb3d0
--- /dev/null
+++ b/tests/push/test_parser.py
@@ -0,0 +1,115 @@
+"""SSE Parser unit tests."""
+import json
+import pytest
+
+from splitio.push.sse import SSEEvent
+from splitio.push.parser import parse_incoming_event, BaseUpdate, AblyError, OccupancyMessage, \
+ SegmentChangeUpdate, SplitChangeUpdate, SplitKillUpdate, EventParsingException
+
+
+def make_message(channel, data):
+ return SSEEvent('123', 'message', None, json.dumps({
+ 'id':'ZlalwoKlXW:0:0',
+ 'timestamp':1591996755043,
+ 'encoding':'json',
+ 'channel': channel,
+ 'data': json.dumps(data)
+ }))
+
+def make_occupancy(channel, data):
+ return SSEEvent('123', 'message', None, json.dumps({
+ 'id':'ZlalwoKlXW:0:0',
+ 'timestamp':1591996755043,
+ 'encoding':'json',
+ 'channel': channel,
+ 'name': '[meta]occupancy',
+ 'data': json.dumps(data)
+ }))
+
+
+def make_error(payload):
+ return SSEEvent('123', 'error', None, json.dumps(payload))
+
+
+class ParserTests(object):
+ """Parser tests."""
+
+ def test_exception(self):
+ """Test exceptions."""
+ assert parse_incoming_event(None) is None
+
+ with pytest.raises(EventParsingException):
+ parse_incoming_event(json.dumps({
+ 'data': {'a':1},
+ 'event': 'some'
+ }))
+
+ def test_event_parsing(self):
+ """Test parse Update event."""
+
+ e0 = make_message(
+ 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_splits',
+ {'type':'SPLIT_KILL','changeNumber':1591996754396,'defaultTreatment':'some','splitName':'test'},
+ )
+ parsed0 = parse_incoming_event(e0)
+ assert isinstance(parsed0, SplitKillUpdate)
+ assert parsed0.default_treatment == 'some'
+ assert parsed0.change_number == 1591996754396
+ assert parsed0.feature_flag_name == 'test'
+
+ e1 = make_message(
+ 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_splits',
+ {'type':'SPLIT_UPDATE','changeNumber':1591996685190, 'pcn': 12, 'c': 2, 'd': 'eJzEUtFu2kAQ/BU0z4d0hw2Be0MFRVGJIx'},
+ )
+ parsed1 = parse_incoming_event(e1)
+ assert isinstance(parsed1, SplitChangeUpdate)
+ assert parsed1.change_number == 1591996685190
+ assert parsed1.previous_change_number == 12
+ assert parsed1.compression == 2
+ assert parsed1.object_definition == 'eJzEUtFu2kAQ/BU0z4d0hw2Be0MFRVGJIx'
+
+ e1 = make_message(
+ 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_splits',
+ {'type':'SPLIT_UPDATE','changeNumber':1591996685190},
+ )
+ parsed1 = parse_incoming_event(e1)
+ assert isinstance(parsed1, SplitChangeUpdate)
+ assert parsed1.change_number == 1591996685190
+ assert parsed1.previous_change_number == None
+ assert parsed1.compression == None
+ assert parsed1.object_definition == None
+
+ e2 = make_message(
+ 'NDA5ODc2MTAyNg==_MzAyODY0NDkyOA==_segments',
+ {'type':'SEGMENT_UPDATE','changeNumber':1591988398533,'segmentName':'some'},
+ )
+ parsed2 = parse_incoming_event(e2)
+ assert isinstance(parsed2, SegmentChangeUpdate)
+ assert parsed2.change_number == 1591988398533
+ assert parsed2.segment_name == 'some'
+
+ def test_error_parsing(self):
+ """Test parse AblyError event."""
+ e0 = make_error({
+ 'code': 40142,
+ 'message': 'Token expired',
+ 'statusCode': 401,
+ 'href': 'https://help.io/error/40142',
+ })
+ parsed = parse_incoming_event(e0)
+ assert isinstance(parsed, AblyError)
+ assert parsed.code == 40142
+ assert parsed.status_code == 401
+ assert parsed.href == 'https://help.io/error/40142'
+ assert parsed.message == 'Token expired'
+ assert not parsed.should_be_ignored()
+ assert parsed.is_retryable()
+
+ def test_occupancy_parsing(self):
+ """Test parse Occupancy event."""
+ e0 = make_occupancy('[?occupancy=metrics.publishers]control_sec',
+ {'metrics': {'publishers': 1}})
+ parsed = parse_incoming_event(e0)
+ assert isinstance(parsed, OccupancyMessage)
+ assert parsed.publishers == 1
+ assert parsed.channel == 'control_sec'
diff --git a/tests/push/test_processor.py b/tests/push/test_processor.py
new file mode 100644
index 00000000..673a1917
--- /dev/null
+++ b/tests/push/test_processor.py
@@ -0,0 +1,117 @@
+"""Message processor tests."""
+from queue import Queue
+import pytest
+
+from splitio.push.processor import MessageProcessor, MessageProcessorAsync
+from splitio.sync.synchronizer import Synchronizer, SynchronizerAsync
+from splitio.push.parser import SplitChangeUpdate, SegmentChangeUpdate, SplitKillUpdate
+from splitio.optional.loaders import asyncio
+
+
+class ProcessorTests(object):
+ """Message processor test cases."""
+
+ def test_split_change(self, mocker):
+ """Test split change is properly handled."""
+ sync_mock = mocker.Mock(spec=Synchronizer)
+ queue_mock = mocker.Mock(spec=Queue)
+ mocker.patch('splitio.push.processor.Queue', new=queue_mock)
+ processor = MessageProcessor(sync_mock, mocker.Mock())
+ update = SplitChangeUpdate('sarasa', 123, 123, None, None, None)
+ processor.handle(update)
+ assert queue_mock.mock_calls == [
+ mocker.call(), # construction of split queue
+ mocker.call(), # construction of split queue
+ mocker.call().put(update)
+ ]
+
+ def test_split_kill(self, mocker):
+ """Test split kill is properly handled."""
+ sync_mock = mocker.Mock(spec=Synchronizer)
+ queue_mock = mocker.Mock(spec=Queue)
+ mocker.patch('splitio.push.processor.Queue', new=queue_mock)
+ processor = MessageProcessor(sync_mock, mocker.Mock())
+ update = SplitKillUpdate('sarasa', 123, 456, 'some_split', 'off')
+ processor.handle(update)
+ assert queue_mock.mock_calls == [
+ mocker.call(), # construction of split queue
+ mocker.call(), # construction of split queue
+ mocker.call().put(update)
+ ]
+ assert sync_mock.kill_split.mock_calls == [
+ mocker.call('some_split', 'off', 456)
+ ]
+
+ def test_segment_change(self, mocker):
+ """Test segment change is properly handled."""
+ sync_mock = mocker.Mock(spec=Synchronizer)
+ queue_mock = mocker.Mock(spec=Queue)
+ mocker.patch('splitio.push.processor.Queue', new=queue_mock)
+ processor = MessageProcessor(sync_mock, mocker.Mock())
+ update = SegmentChangeUpdate('sarasa', 123, 123, 'some_segment')
+ processor.handle(update)
+ assert queue_mock.mock_calls == [
+ mocker.call(), # construction of split queue
+ mocker.call(), # construction of split queue
+ mocker.call().put(update)
+ ]
+
+ def test_todo(self):
+ """Fix previous tests so that we validate WHICH queue the update is pushed into."""
+ assert NotImplementedError("DO THAT")
+
+class ProcessorAsyncTests(object):
+ """Message processor test cases."""
+
+ @pytest.mark.asyncio
+ async def test_split_change(self, mocker):
+ """Test split change is properly handled."""
+ sync_mock = mocker.Mock(spec=Synchronizer)
+ self._update = None
+ async def put_mock(first, event):
+ self._update = event
+
+ mocker.patch('splitio.push.processor.asyncio.Queue.put', new=put_mock)
+ processor = MessageProcessorAsync(sync_mock, mocker.Mock())
+ update = SplitChangeUpdate('sarasa', 123, 123, None, None, None)
+ await processor.handle(update)
+ assert update == self._update
+
+ @pytest.mark.asyncio
+ async def test_split_kill(self, mocker):
+ """Test split kill is properly handled."""
+
+ self._killed_split = None
+ async def kill_mock(split_name, default_treatment, change_number):
+ self._killed_split = (split_name, default_treatment, change_number)
+
+ sync_mock = mocker.Mock(spec=SynchronizerAsync)
+ sync_mock.kill_split = kill_mock
+
+ self._update = None
+ async def put_mock(first, event):
+ self._update = event
+
+ mocker.patch('splitio.push.processor.asyncio.Queue.put', new=put_mock)
+ processor = MessageProcessorAsync(sync_mock, mocker.Mock())
+ update = SplitKillUpdate('sarasa', 123, 456, 'some_split', 'off')
+ await processor.handle(update)
+ assert update == self._update
+ assert ('some_split', 'off', 456) == self._killed_split
+
+ @pytest.mark.asyncio
+ async def test_segment_change(self, mocker):
+ """Test segment change is properly handled."""
+
+ sync_mock = mocker.Mock(spec=SynchronizerAsync)
+ queue_mock = mocker.Mock(spec=asyncio.Queue)
+
+ self._update = None
+ async def put_mock(first, event):
+ self._update = event
+
+ mocker.patch('splitio.push.processor.asyncio.Queue.put', new=put_mock)
+ processor = MessageProcessorAsync(sync_mock, mocker.Mock())
+ update = SegmentChangeUpdate('sarasa', 123, 123, 'some_segment')
+ await processor.handle(update)
+ assert update == self._update
diff --git a/tests/push/test_segment_worker.py b/tests/push/test_segment_worker.py
new file mode 100644
index 00000000..0a99f466
--- /dev/null
+++ b/tests/push/test_segment_worker.py
@@ -0,0 +1,113 @@
+"""Split Worker tests."""
+import time
+import queue
+import pytest
+
+from splitio.api import APIException
+from splitio.push.workers import SegmentWorker, SegmentWorkerAsync
+from splitio.models.notification import SegmentChangeNotification
+from splitio.optional.loaders import asyncio
+
+change_number_received = None
+segment_name_received = None
+
+
+def handler_sync(segment_name, change_number):
+ global change_number_received
+ global segment_name_received
+ change_number_received = change_number
+ segment_name_received = segment_name
+ return
+
+
+class SegmentWorkerTests(object):
+ def test_on_error(self):
+ q = queue.Queue()
+
+ def handler_sync(change_number):
+ raise APIException('some')
+
+ segment_worker = SegmentWorker(handler_sync, q)
+ segment_worker.start()
+ assert segment_worker.is_running()
+
+ q.put(SegmentChangeNotification('some', 'SEGMENT_UPDATE', 123456789, 'some'))
+
+ with pytest.raises(Exception):
+ segment_worker._handler()
+
+ assert segment_worker.is_running()
+ assert segment_worker._worker.is_alive()
+ segment_worker.stop()
+ time.sleep(1)
+ assert not segment_worker.is_running()
+ assert not segment_worker._worker.is_alive()
+
+ def test_handler(self):
+ q = queue.Queue()
+ segment_worker = SegmentWorker(handler_sync, q)
+ global change_number_received
+ assert not segment_worker.is_running()
+ segment_worker.start()
+ assert segment_worker.is_running()
+
+ q.put(SegmentChangeNotification('some', 'SEGMENT_UPDATE', 123456789, 'some'))
+
+ time.sleep(0.1)
+ assert change_number_received == 123456789
+ assert segment_name_received == 'some'
+
+ segment_worker.stop()
+ assert not segment_worker.is_running()
+
+class SegmentWorkerAsyncTests(object):
+
+ @pytest.mark.asyncio
+ async def test_on_error(self):
+ q = asyncio.Queue()
+
+ def handler_sync(change_number):
+ raise APIException('some')
+
+ segment_worker = SegmentWorkerAsync(handler_sync, q)
+ segment_worker.start()
+ assert segment_worker.is_running()
+
+ await q.put(SegmentChangeNotification('some', 'SEGMENT_UPDATE', 123456789, 'some'))
+
+ with pytest.raises(Exception):
+ segment_worker._handler()
+
+ assert segment_worker.is_running()
+ assert(self._worker_running())
+ await segment_worker.stop()
+ await asyncio.sleep(.1)
+ assert not segment_worker.is_running()
+ assert(not self._worker_running())
+
+ def _worker_running(self):
+ worker_running = False
+ for task in asyncio.all_tasks():
+ if task._coro.cr_code.co_name == '_run' and not task.done():
+ worker_running = True
+ break
+ return worker_running
+
+ @pytest.mark.asyncio
+ async def test_handler(self):
+ q = asyncio.Queue()
+ segment_worker = SegmentWorkerAsync(handler_sync, q)
+ global change_number_received
+ assert not segment_worker.is_running()
+ segment_worker.start()
+ assert segment_worker.is_running()
+
+ await q.put(SegmentChangeNotification('some', 'SEGMENT_UPDATE', 123456789, 'some'))
+
+ await asyncio.sleep(.1)
+ assert change_number_received == 123456789
+ assert segment_name_received == 'some'
+
+ await segment_worker.stop()
+ await asyncio.sleep(.1)
+ assert(not self._worker_running())
diff --git a/tests/push/test_split_worker.py b/tests/push/test_split_worker.py
new file mode 100644
index 00000000..28b5408d
--- /dev/null
+++ b/tests/push/test_split_worker.py
@@ -0,0 +1,549 @@
+"""Split Worker tests."""
+import time
+import queue
+import base64
+import pytest
+
+from splitio.api import APIException
+from splitio.push.workers import SplitWorker, SplitWorkerAsync
+from splitio.models.notification import SplitChangeNotification
+from splitio.optional.loaders import asyncio
+from splitio.push.parser import SplitChangeUpdate, RBSChangeUpdate
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemorySplitStorage, InMemorySegmentStorage, \
+ InMemoryTelemetryStorageAsync, InMemorySplitStorageAsync, InMemorySegmentStorageAsync
+
+change_number_received = None
+rbs = {
+ "changeNumber": 5,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["mauro@split.io","gaston@split.io"],
+ "segments":[]
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": False,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+
+def handler_sync(change_number, rbs_change_number):
+ global change_number_received
+ global rbs_change_number_received
+
+ change_number_received = change_number
+ rbs_change_number_received = rbs_change_number
+ return
+
+async def handler_async(change_number, rbs_change_number):
+ global change_number_received
+ global rbs_change_number_received
+ change_number_received = change_number
+ rbs_change_number_received = rbs_change_number
+ return
+
+
+class SplitWorkerTests(object):
+
+ def test_handler(self, mocker):
+ q = queue.Queue()
+ split_worker = SplitWorker(handler_sync, mocker.Mock(), q, mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+
+ global change_number_received
+ global rbs_change_number_received
+ assert not split_worker.is_running()
+ split_worker.start()
+ assert split_worker.is_running()
+
+ def get_change_number():
+ return 2345
+ split_worker._feature_flag_storage.get_change_number = get_change_number
+
+ def get_rbs_change_number():
+ return 2345
+ split_worker._rule_based_segment_storage.get_change_number = get_rbs_change_number
+
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ def update(feature_flag_add, feature_flag_delete, change_number):
+ self._feature_flag_added = feature_flag_add
+ self._feature_flag_deleted = feature_flag_delete
+ split_worker._feature_flag_storage.update = update
+ split_worker._feature_flag_storage.config_flag_sets_used = 0
+
+ self._rbs_added = None
+ self._rbs_deleted = None
+ def update(rbs_add, rbs_delete, change_number):
+ self._rbs_added = rbs_add
+ self._rbs_deleted = rbs_delete
+ split_worker._rule_based_segment_storage.update = update
+
+ # should not call the handler
+ rbs_change_number_received = 0
+ rbs1 = str(rbs)
+ rbs1 = rbs1.replace("'", "\"")
+ rbs1 = rbs1.replace("False", "false")
+ encoded = base64.b64encode(bytes(rbs1, "utf-8"))
+ q.put(RBSChangeUpdate('some', 'RB_SEGMENT_UPDATE', 123456790, 2345, encoded, 0))
+ time.sleep(0.1)
+ assert rbs_change_number_received == 0
+ assert self._rbs_added[0].name == "sample_rule_based_segment"
+
+ # should call the handler
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456789, None, None, None))
+ time.sleep(0.1)
+ assert change_number_received == 123456789
+ assert rbs_change_number_received == None
+
+ # should call the handler
+ q.put(RBSChangeUpdate('some', 'RB_SEGMENT_UPDATE', 123456789, None, None, None))
+ time.sleep(0.1)
+ assert rbs_change_number_received == 123456789
+ assert change_number_received == None
+
+
+ # should call the handler
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 12345, "{}", 1))
+ time.sleep(0.1)
+ assert change_number_received == 123456790
+
+ # should call the handler
+ change_number_received = 0
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 12345, "{}", 3))
+ time.sleep(0.1)
+ assert change_number_received == 123456790
+
+ # should Not call the handler
+ change_number_received = 0
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, 2345, "eJzEUtFq20AQ/JUwz2c4WZZr3ZupTQh1FKjcQinGrKU95cjpZE6nh9To34ssJ3FNX0sfd3Zm53b2TgietDbF9vXIGdUMha5lDwFTQiGOmTQlchLRPJlEEZeTVJZ6oimWZTpP5WyWQMCNyoOxZPft0ZoA8TZ5aW1TUDCNg4qk/AueM5dQkyiez6IonS6mAu0IzWWSxovFLBZoA4WuhcLy8/bh+xoCL8bagaXJtixQsqbOhq1nCjW7AIVGawgUz+Qqzrr6wB4qmi9m00/JIk7TZCpAtmqgpgJF47SpOn9+UQt16s9YaS71z9NHOYQFha9Pm83Tty0EagrFM/t733RHqIFZH4wb7LDMVh+Ecc4Lv+ZsuQiNH8hXF3hLv39XXNCHbJ+v7x/X2eDmuKLA74sPihVr47jMuRpWfxy1Kwo0GLQjmv1xpBFD3+96gSP5cLVouM7QQaA1vxhK9uKmd853bEZS9jsBSwe2UDDu7mJxd2Mo/muQy81m/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==", 2))
+ time.sleep(0.1)
+ assert change_number_received == 0
+
+ split_worker.stop()
+ assert not split_worker.is_running()
+
+ def test_on_error(self, mocker):
+ q = queue.Queue()
+ def handler_sync(change_number):
+ raise APIException('some')
+
+ split_worker = SplitWorker(handler_sync, mocker.Mock(), q, mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ split_worker.start()
+ assert split_worker.is_running()
+
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456789, None, None, None))
+ with pytest.raises(Exception):
+ split_worker._handler()
+
+ assert split_worker.is_running()
+ assert split_worker._worker.is_alive()
+ split_worker.stop()
+ time.sleep(1)
+ assert not split_worker.is_running()
+ assert not split_worker._worker.is_alive()
+
+ def test_compression(self, mocker):
+ q = queue.Queue()
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ split_worker = SplitWorker(handler_sync, mocker.Mock(), q, mocker.Mock(), mocker.Mock(), telemetry_runtime_producer, mocker.Mock())
+ global change_number_received
+ split_worker.start()
+ def get_change_number():
+ return 2345
+ split_worker._feature_flag_storage.get_change_number = get_change_number
+
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ def update(feature_flag_add, feature_flag_delete, change_number):
+ self._feature_flag_added = feature_flag_add
+ self._feature_flag_deleted = feature_flag_delete
+ split_worker._feature_flag_storage.update = update
+ split_worker._feature_flag_storage.config_flag_sets_used = 0
+
+ # compression 0
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 2345, 'eyJ0cmFmZmljVHlwZU5hbWUiOiJ1c2VyIiwiaWQiOiIzM2VhZmE1MC0xYTY1LTExZWQtOTBkZi1mYTMwZDk2OTA0NDUiLCJuYW1lIjoiYmlsYWxfc3BsaXQiLCJ0cmFmZmljQWxsb2NhdGlvbiI6MTAwLCJ0cmFmZmljQWxsb2NhdGlvblNlZWQiOi0xMzY0MTE5MjgyLCJzZWVkIjotNjA1OTM4ODQzLCJzdGF0dXMiOiJBQ1RJVkUiLCJraWxsZWQiOmZhbHNlLCJkZWZhdWx0VHJlYXRtZW50Ijoib2ZmIiwiY2hhbmdlTnVtYmVyIjoxNjg0MzQwOTA4NDc1LCJhbGdvIjoyLCJjb25maWd1cmF0aW9ucyI6e30sImNvbmRpdGlvbnMiOlt7ImNvbmRpdGlvblR5cGUiOiJST0xMT1VUIiwibWF0Y2hlckdyb3VwIjp7ImNvbWJpbmVyIjoiQU5EIiwibWF0Y2hlcnMiOlt7ImtleVNlbGVjdG9yIjp7InRyYWZmaWNUeXBlIjoidXNlciJ9LCJtYXRjaGVyVHlwZSI6IklOX1NFR01FTlQiLCJuZWdhdGUiOmZhbHNlLCJ1c2VyRGVmaW5lZFNlZ21lbnRNYXRjaGVyRGF0YSI6eyJzZWdtZW50TmFtZSI6ImJpbGFsX3NlZ21lbnQifX1dfSwicGFydGl0aW9ucyI6W3sidHJlYXRtZW50Ijoib24iLCJzaXplIjowfSx7InRyZWF0bWVudCI6Im9mZiIsInNpemUiOjEwMH1dLCJsYWJlbCI6ImluIHNlZ21lbnQgYmlsYWxfc2VnbWVudCJ9LHsiY29uZGl0aW9uVHlwZSI6IlJPTExPVVQiLCJtYXRjaGVyR3JvdXAiOnsiY29tYmluZXIiOiJBTkQiLCJtYXRjaGVycyI6W3sia2V5U2VsZWN0b3IiOnsidHJhZmZpY1R5cGUiOiJ1c2VyIn0sIm1hdGNoZXJUeXBlIjoiQUxMX0tFWVMiLCJuZWdhdGUiOmZhbHNlfV19LCJwYXJ0aXRpb25zIjpbeyJ0cmVhdG1lbnQiOiJvbiIsInNpemUiOjB9LHsidHJlYXRtZW50Ijoib2ZmIiwic2l6ZSI6MTAwfV0sImxhYmVsIjoiZGVmYXVsdCBydWxlIn1dfQ==', 0))
+ time.sleep(0.1)
+ assert self._feature_flag_added[0].name == 'bilal_split'
+ assert telemetry_storage._counters._update_from_sse['sp'] == 1
+
+ # compression 2
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 2345, 'eJzEUtFq20AQ/JUwz2c4WZZr3ZupTQh1FKjcQinGrKU95cjpZE6nh9To34ssJ3FNX0sfd3Zm53b2TgietDbF9vXIGdUMha5lDwFTQiGOmTQlchLRPJlEEZeTVJZ6oimWZTpP5WyWQMCNyoOxZPft0ZoA8TZ5aW1TUDCNg4qk/AueM5dQkyiez6IonS6mAu0IzWWSxovFLBZoA4WuhcLy8/bh+xoCL8bagaXJtixQsqbOhq1nCjW7AIVGawgUz+Qqzrr6wB4qmi9m00/JIk7TZCpAtmqgpgJF47SpOn9+UQt16s9YaS71z9NHOYQFha9Pm83Tty0EagrFM/t733RHqIFZH4wb7LDMVh+Ecc4Lv+ZsuQiNH8hXF3hLv39XXNCHbJ+v7x/X2eDmuKLA74sPihVr47jMuRpWfxy1Kwo0GLQjmv1xpBFD3+96gSP5cLVouM7QQaA1vxhK9uKmd853bEZS9jsBSwe2UDDu7mJxd2Mo/muQy81m/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==', 2))
+ time.sleep(0.1)
+ assert self._feature_flag_added[0].name == 'bilal_split'
+ assert telemetry_storage._counters._update_from_sse['sp'] == 2
+
+ # compression 1
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 2345, 'H4sIAAkVZWQC/8WST0+DQBDFv0qzZ0ig/BF6a2xjGismUk2MaZopzOKmy9Isy0EbvrtDwbY2Xo233Tdv5se85cCMBs5FtvrYYwIlsglratTMYiKns+chcAgc24UwsF0Xczt2cm5z8Jw8DmPH9wPyqr5zKyTITb2XwpA4TJ5KWWVgRKXYxHWcX/QUkVi264W+68bjaGyxupdCJ4i9KPI9UgyYpibI9Ha1eJnT/J2QsnNxkDVaLEcOjTQrjWBKVIasFefky95BFZg05Zb2mrhh5I9vgsiL44BAIIuKTeiQVYqLotHHLyLOoT1quRjub4fztQuLxj89LpePzytClGCyd9R3umr21ErOcitUh2PTZHY29HN2+JGixMxUujNfvMB3+u2pY1AXySad3z3Mk46msACDp8W7jhly4uUpFt3qD33vDAx0gLpXkx+P1GusbdcE24M2F4uaywwVEWvxSa1Oa13Vjvn2RXradm0xCVuUVBJqNCBGV0DrX4OcLpeb+/lreh3jH8Uw/JQj3UhkxPgCCurdEnADAAA=', 1))
+ time.sleep(0.1)
+ assert self._feature_flag_added[0].name == 'bilal_split'
+ assert telemetry_storage._counters._update_from_sse['sp'] == 3
+
+ # should call delete split
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 2345, 'eyJ0cmFmZmljVHlwZU5hbWUiOiAidXNlciIsICJpZCI6ICIzM2VhZmE1MC0xYTY1LTExZWQtOTBkZi1mYTMwZDk2OTA0NDUiLCAibmFtZSI6ICJiaWxhbF9zcGxpdCIsICJ0cmFmZmljQWxsb2NhdGlvbiI6IDEwMCwgInRyYWZmaWNBbGxvY2F0aW9uU2VlZCI6IC0xMzY0MTE5MjgyLCAic2VlZCI6IC02MDU5Mzg4NDMsICJzdGF0dXMiOiAiQVJDSElWRUQiLCAia2lsbGVkIjogZmFsc2UsICJkZWZhdWx0VHJlYXRtZW50IjogIm9mZiIsICJjaGFuZ2VOdW1iZXIiOiAxNjg0Mjc1ODM5OTUyLCAiYWxnbyI6IDIsICJjb25maWd1cmF0aW9ucyI6IHt9LCAiY29uZGl0aW9ucyI6IFt7ImNvbmRpdGlvblR5cGUiOiAiUk9MTE9VVCIsICJtYXRjaGVyR3JvdXAiOiB7ImNvbWJpbmVyIjogIkFORCIsICJtYXRjaGVycyI6IFt7ImtleVNlbGVjdG9yIjogeyJ0cmFmZmljVHlwZSI6ICJ1c2VyIn0sICJtYXRjaGVyVHlwZSI6ICJJTl9TRUdNRU5UIiwgIm5lZ2F0ZSI6IGZhbHNlLCAidXNlckRlZmluZWRTZWdtZW50TWF0Y2hlckRhdGEiOiB7InNlZ21lbnROYW1lIjogImJpbGFsX3NlZ21lbnQifX1dfSwgInBhcnRpdGlvbnMiOiBbeyJ0cmVhdG1lbnQiOiAib24iLCAic2l6ZSI6IDB9LCB7InRyZWF0bWVudCI6ICJvZmYiLCAic2l6ZSI6IDEwMH1dLCAibGFiZWwiOiAiaW4gc2VnbWVudCBiaWxhbF9zZWdtZW50In0sIHsiY29uZGl0aW9uVHlwZSI6ICJST0xMT1VUIiwgIm1hdGNoZXJHcm91cCI6IHsiY29tYmluZXIiOiAiQU5EIiwgIm1hdGNoZXJzIjogW3sia2V5U2VsZWN0b3IiOiB7InRyYWZmaWNUeXBlIjogInVzZXIifSwgIm1hdGNoZXJUeXBlIjogIkFMTF9LRVlTIiwgIm5lZ2F0ZSI6IGZhbHNlfV19LCAicGFydGl0aW9ucyI6IFt7InRyZWF0bWVudCI6ICJvbiIsICJzaXplIjogMH0sIHsidHJlYXRtZW50IjogIm9mZiIsICJzaXplIjogMTAwfV0sICJsYWJlbCI6ICJkZWZhdWx0IHJ1bGUifV19', 0))
+ time.sleep(0.1)
+ assert self._feature_flag_deleted[0] == 'bilal_split'
+ assert self._feature_flag_added == []
+
+ def test_edge_cases(self, mocker):
+ q = queue.Queue()
+ split_worker = SplitWorker(handler_sync, mocker.Mock(), q, mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ global change_number_received
+ split_worker.start()
+
+ def get_change_number():
+ return 2345
+ split_worker._feature_flag_storage.get_change_number = get_change_number
+
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ def update(feature_flag_add, feature_flag_delete, change_number):
+ self._feature_flag_added = feature_flag_add
+ self._feature_flag_deleted = feature_flag_delete
+ split_worker._feature_flag_storage.update = update
+ split_worker._feature_flag_storage.config_flag_sets_used = 0
+
+ # should Not call the handler
+ self._feature_flag_added = None
+ change_number_received = 0
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, 2345, "/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==", 2))
+ time.sleep(0.1)
+ assert self._feature_flag_added == None
+
+ # should Not call the handler
+ self._feature_flag = None
+ change_number_received = 0
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, 2345, "/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==", 4))
+ time.sleep(0.1)
+ assert self._feature_flag_added == None
+
+ # should Not call the handler
+ self._feature_flag = None
+ change_number_received = 0
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, None, 'eJzEUtFq20AQ/JUwz2c4WZZr3ZupTQh1FKjcQinGrKU95cjpZE6nh9To34ssJ3FNX0sfd3Zm53b2TgietDbF9vXIGdUMha5lDwFTQiGOmTQlchLRPJlEEZeTVJZ6oimWZTpP5WyWQMCNyoOxZPft0ZoA8TZ5aW1TUDCNg4qk/AueM5dQkyiez6IonS6mAu0IzWWSxovFLBZoA4WuhcLy8/bh+xoCL8bagaXJtixQsqbOhq1nCjW7AIVGawgUz+Qqzrr6wB4qmi9m00/JIk7TZCpAtmqgpgJF47SpOn9+UQt16s9YaS71z9NHOYQFha9Pm83Tty0EagrFM/t733RHqIFZH4wb7LDMVh+Ecc4Lv+ZsuQiNH8hXF3hLv39XXNCHbJ+v7x/X2eDmuKLA74sPihVr47jMuRpWfxy1Kwo0GLQjmv1xpBFD3+96gSP5cLVouM7QQaA1vxhK9uKmd853bEZS9jsBSwe2UDDu7mJxd2Mo/muQy81m/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==', 2))
+ time.sleep(0.1)
+ assert self._feature_flag_added == None
+
+ # should Not call the handler
+ self._feature_flag = None
+ change_number_received = 0
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, 2345, None, 1))
+ time.sleep(0.1)
+ assert self._feature_flag_added == None
+
+ def test_fetch_segment(self, mocker):
+ q = queue.Queue()
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ segment_storage = InMemorySegmentStorage(events_queue)
+
+ self.segment_name = None
+ def segment_handler_sync(segment_name, change_number):
+ self.segment_name = segment_name
+ return
+ split_worker = SplitWorker(handler_sync, segment_handler_sync, q, split_storage, segment_storage, mocker.Mock(), mocker.Mock())
+ split_worker.start()
+
+ def get_change_number():
+ return 2345
+ split_worker._feature_flag_storage.get_change_number = get_change_number
+
+ def check_instant_ff_update(event):
+ return True
+ split_worker._check_instant_ff_update = check_instant_ff_update
+
+ q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 1675095324253, 2345, 'eyJjaGFuZ2VOdW1iZXIiOiAxNjc1MDk1MzI0MjUzLCAidHJhZmZpY1R5cGVOYW1lIjogInVzZXIiLCAibmFtZSI6ICJiaWxhbF9zcGxpdCIsICJ0cmFmZmljQWxsb2NhdGlvbiI6IDEwMCwgInRyYWZmaWNBbGxvY2F0aW9uU2VlZCI6IC0xMzY0MTE5MjgyLCAic2VlZCI6IC02MDU5Mzg4NDMsICJzdGF0dXMiOiAiQUNUSVZFIiwgImtpbGxlZCI6IGZhbHNlLCAiZGVmYXVsdFRyZWF0bWVudCI6ICJvZmYiLCAiYWxnbyI6IDIsICJjb25kaXRpb25zIjogW3siY29uZGl0aW9uVHlwZSI6ICJST0xMT1VUIiwgIm1hdGNoZXJHcm91cCI6IHsiY29tYmluZXIiOiAiQU5EIiwgIm1hdGNoZXJzIjogW3sia2V5U2VsZWN0b3IiOiB7InRyYWZmaWNUeXBlIjogInVzZXIiLCAiYXR0cmlidXRlIjogbnVsbH0sICJtYXRjaGVyVHlwZSI6ICJJTl9TRUdNRU5UIiwgIm5lZ2F0ZSI6IGZhbHNlLCAidXNlckRlZmluZWRTZWdtZW50TWF0Y2hlckRhdGEiOiB7InNlZ21lbnROYW1lIjogImJpbGFsX3NlZ21lbnQifSwgIndoaXRlbGlzdE1hdGNoZXJEYXRhIjogbnVsbCwgInVuYXJ5TnVtZXJpY01hdGNoZXJEYXRhIjogbnVsbCwgImJldHdlZW5NYXRjaGVyRGF0YSI6IG51bGwsICJkZXBlbmRlbmN5TWF0Y2hlckRhdGEiOiBudWxsLCAiYm9vbGVhbk1hdGNoZXJEYXRhIjogbnVsbCwgInN0cmluZ01hdGNoZXJEYXRhIjogbnVsbH1dfSwgInBhcnRpdGlvbnMiOiBbeyJ0cmVhdG1lbnQiOiAib24iLCAic2l6ZSI6IDB9LCB7InRyZWF0bWVudCI6ICJvZmYiLCAic2l6ZSI6IDEwMH1dLCAibGFiZWwiOiAiaW4gc2VnbWVudCBiaWxhbF9zZWdtZW50In0sIHsiY29uZGl0aW9uVHlwZSI6ICJST0xMT1VUIiwgIm1hdGNoZXJHcm91cCI6IHsiY29tYmluZXIiOiAiQU5EIiwgIm1hdGNoZXJzIjogW3sia2V5U2VsZWN0b3IiOiB7InRyYWZmaWNUeXBlIjogInVzZXIiLCAiYXR0cmlidXRlIjogbnVsbH0sICJtYXRjaGVyVHlwZSI6ICJBTExfS0VZUyIsICJuZWdhdGUiOiBmYWxzZSwgInVzZXJEZWZpbmVkU2VnbWVudE1hdGNoZXJEYXRhIjogbnVsbCwgIndoaXRlbGlzdE1hdGNoZXJEYXRhIjogbnVsbCwgInVuYXJ5TnVtZXJpY01hdGNoZXJEYXRhIjogbnVsbCwgImJldHdlZW5NYXRjaGVyRGF0YSI6IG51bGwsICJkZXBlbmRlbmN5TWF0Y2hlckRhdGEiOiBudWxsLCAiYm9vbGVhbk1hdGNoZXJEYXRhIjogbnVsbCwgInN0cmluZ01hdGNoZXJEYXRhIjogbnVsbH1dfSwgInBhcnRpdGlvbnMiOiBbeyJ0cmVhdG1lbnQiOiAib24iLCAic2l6ZSI6IDUwfSwgeyJ0cmVhdG1lbnQiOiAib2ZmIiwgInNpemUiOiA1MH1dLCAibGFiZWwiOiAiZGVmYXVsdCBydWxlIn1dLCAiY29uZmlndXJhdGlvbnMiOiB7fX0=', 0))
+ time.sleep(0.1)
+ assert self.segment_name == "bilal_segment"
+
+class SplitWorkerAsyncTests(object):
+
+ @pytest.mark.asyncio
+ async def test_on_error(self, mocker):
+ q = asyncio.Queue()
+
+ def handler_sync(change_number):
+ raise APIException('some')
+
+ split_worker = SplitWorkerAsync(handler_async, mocker.Mock(), q, mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ split_worker.start()
+ assert split_worker.is_running()
+
+ await q.put(SplitChangeNotification('some', 'SPLIT_UPDATE', 123456789))
+ with pytest.raises(Exception):
+ split_worker._handler()
+
+ assert split_worker.is_running()
+ assert(self._worker_running())
+
+ await split_worker.stop()
+ await asyncio.sleep(.1)
+
+ assert not split_worker.is_running()
+ assert(not self._worker_running())
+
+ def _worker_running(self):
+ worker_running = False
+ for task in asyncio.all_tasks():
+ if task._coro.cr_code.co_name == '_run' and not task.done():
+ worker_running = True
+ break
+ return worker_running
+
+ @pytest.mark.asyncio
+ async def test_handler(self, mocker):
+ q = asyncio.Queue()
+ split_worker = SplitWorkerAsync(handler_async, mocker.Mock(), q, mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+
+ assert not split_worker.is_running()
+ split_worker.start()
+ assert split_worker.is_running()
+ assert(self._worker_running())
+
+ global change_number_received
+ global rbs_change_number_received
+
+ # should call the handler
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456789, None, None, None))
+ await asyncio.sleep(0.1)
+ assert change_number_received == 123456789
+
+ async def get_change_number():
+ return 2345
+ split_worker._feature_flag_storage.get_change_number = get_change_number
+
+ async def get_rbs_change_number():
+ return 2345
+ split_worker._rule_based_segment_storage.get_change_number = get_rbs_change_number
+
+ self.new_change_number = 0
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ async def update(feature_flag_add, feature_flag_delete, change_number):
+ self._feature_flag_added = feature_flag_add
+ self._feature_flag_deleted = feature_flag_delete
+ self.new_change_number = change_number
+ split_worker._feature_flag_storage.update = update
+ split_worker._feature_flag_storage.config_flag_sets_used = 0
+
+ async def get(segment_name):
+ return {}
+ split_worker._segment_storage.get = get
+
+ async def record_update_from_sse(xx):
+ pass
+ split_worker._telemetry_runtime_producer.record_update_from_sse = record_update_from_sse
+
+ self._rbs_added = None
+ self._rbs_deleted = None
+ async def update_rbs(rbs_add, rbs_delete, change_number):
+ self._rbs_added = rbs_add
+ self._rbs_deleted = rbs_delete
+ split_worker._rule_based_segment_storage.update = update_rbs
+
+ # should not call the handler
+ rbs_change_number_received = 0
+ rbs1 = str(rbs)
+ rbs1 = rbs1.replace("'", "\"")
+ rbs1 = rbs1.replace("False", "false")
+ encoded = base64.b64encode(bytes(rbs1, "utf-8"))
+ await q.put(RBSChangeUpdate('some', 'RB_SEGMENT_UPDATE', 123456790, 2345, encoded, 0))
+ await asyncio.sleep(0.1)
+ assert rbs_change_number_received == 0
+ assert self._rbs_added[0].name == "sample_rule_based_segment"
+
+ # should call the handler
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 12345, "{}", 1))
+ await asyncio.sleep(0.1)
+ assert change_number_received == 123456790
+
+ # should call the handler
+ change_number_received = 0
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 12345, "{}", 3))
+ await asyncio.sleep(0.1)
+ assert change_number_received == 123456790
+
+ # should Not call the handler
+ change_number_received = 0
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, 2345, "eJzEUtFq20AQ/JUwz2c4WZZr3ZupTQh1FKjcQinGrKU95cjpZE6nh9To34ssJ3FNX0sfd3Zm53b2TgietDbF9vXIGdUMha5lDwFTQiGOmTQlchLRPJlEEZeTVJZ6oimWZTpP5WyWQMCNyoOxZPft0ZoA8TZ5aW1TUDCNg4qk/AueM5dQkyiez6IonS6mAu0IzWWSxovFLBZoA4WuhcLy8/bh+xoCL8bagaXJtixQsqbOhq1nCjW7AIVGawgUz+Qqzrr6wB4qmi9m00/JIk7TZCpAtmqgpgJF47SpOn9+UQt16s9YaS71z9NHOYQFha9Pm83Tty0EagrFM/t733RHqIFZH4wb7LDMVh+Ecc4Lv+ZsuQiNH8hXF3hLv39XXNCHbJ+v7x/X2eDmuKLA74sPihVr47jMuRpWfxy1Kwo0GLQjmv1xpBFD3+96gSP5cLVouM7QQaA1vxhK9uKmd853bEZS9jsBSwe2UDDu7mJxd2Mo/muQy81m/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==", 2))
+ await asyncio.sleep(0.5)
+ assert change_number_received == 0
+
+ await split_worker.stop()
+ await asyncio.sleep(.1)
+
+ assert not split_worker.is_running()
+ assert(not self._worker_running())
+
+ @pytest.mark.asyncio
+ async def test_compression(self, mocker):
+ q = asyncio.Queue()
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ split_worker = SplitWorkerAsync(handler_async, mocker.Mock(), q, mocker.Mock(), mocker.Mock(), telemetry_runtime_producer, mocker.Mock())
+ global change_number_received
+ split_worker.start()
+ async def get_change_number():
+ return 2345
+ split_worker._feature_flag_storage.get_change_number = get_change_number
+
+ async def get(segment_name):
+ return {}
+ split_worker._segment_storage.get = get
+
+ async def get_split(feature_flag_name):
+ return {}
+ split_worker._feature_flag_storage.get = get_split
+
+ self.new_change_number = 0
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ async def update(feature_flag_add, feature_flag_delete, change_number):
+ self._feature_flag_added = feature_flag_add
+ self._feature_flag_deleted = feature_flag_delete
+ self.new_change_number = change_number
+ split_worker._feature_flag_storage.update = update
+ split_worker._feature_flag_storage.config_flag_sets_used = 0
+
+ async def contains(rbs):
+ return False
+ split_worker._rule_based_segment_storage.contains = contains
+
+ # compression 0
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 2345, 'eyJ0cmFmZmljVHlwZU5hbWUiOiJ1c2VyIiwiaWQiOiIzM2VhZmE1MC0xYTY1LTExZWQtOTBkZi1mYTMwZDk2OTA0NDUiLCJuYW1lIjoiYmlsYWxfc3BsaXQiLCJ0cmFmZmljQWxsb2NhdGlvbiI6MTAwLCJ0cmFmZmljQWxsb2NhdGlvblNlZWQiOi0xMzY0MTE5MjgyLCJzZWVkIjotNjA1OTM4ODQzLCJzdGF0dXMiOiJBQ1RJVkUiLCJraWxsZWQiOmZhbHNlLCJkZWZhdWx0VHJlYXRtZW50Ijoib2ZmIiwiY2hhbmdlTnVtYmVyIjoxNjg0MzQwOTA4NDc1LCJhbGdvIjoyLCJjb25maWd1cmF0aW9ucyI6e30sImNvbmRpdGlvbnMiOlt7ImNvbmRpdGlvblR5cGUiOiJST0xMT1VUIiwibWF0Y2hlckdyb3VwIjp7ImNvbWJpbmVyIjoiQU5EIiwibWF0Y2hlcnMiOlt7ImtleVNlbGVjdG9yIjp7InRyYWZmaWNUeXBlIjoidXNlciJ9LCJtYXRjaGVyVHlwZSI6IklOX1NFR01FTlQiLCJuZWdhdGUiOmZhbHNlLCJ1c2VyRGVmaW5lZFNlZ21lbnRNYXRjaGVyRGF0YSI6eyJzZWdtZW50TmFtZSI6ImJpbGFsX3NlZ21lbnQifX1dfSwicGFydGl0aW9ucyI6W3sidHJlYXRtZW50Ijoib24iLCJzaXplIjowfSx7InRyZWF0bWVudCI6Im9mZiIsInNpemUiOjEwMH1dLCJsYWJlbCI6ImluIHNlZ21lbnQgYmlsYWxfc2VnbWVudCJ9LHsiY29uZGl0aW9uVHlwZSI6IlJPTExPVVQiLCJtYXRjaGVyR3JvdXAiOnsiY29tYmluZXIiOiJBTkQiLCJtYXRjaGVycyI6W3sia2V5U2VsZWN0b3IiOnsidHJhZmZpY1R5cGUiOiJ1c2VyIn0sIm1hdGNoZXJUeXBlIjoiQUxMX0tFWVMiLCJuZWdhdGUiOmZhbHNlfV19LCJwYXJ0aXRpb25zIjpbeyJ0cmVhdG1lbnQiOiJvbiIsInNpemUiOjB9LHsidHJlYXRtZW50Ijoib2ZmIiwic2l6ZSI6MTAwfV0sImxhYmVsIjoiZGVmYXVsdCBydWxlIn1dfQ==', 0))
+ await asyncio.sleep(0.1)
+ assert self._feature_flag_added[0].name == 'bilal_split'
+ assert telemetry_storage._counters._update_from_sse['sp'] == 1
+
+ # compression 2
+ self._feature_flag_added = None
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 2345, 'eJzEUtFq20AQ/JUwz2c4WZZr3ZupTQh1FKjcQinGrKU95cjpZE6nh9To34ssJ3FNX0sfd3Zm53b2TgietDbF9vXIGdUMha5lDwFTQiGOmTQlchLRPJlEEZeTVJZ6oimWZTpP5WyWQMCNyoOxZPft0ZoA8TZ5aW1TUDCNg4qk/AueM5dQkyiez6IonS6mAu0IzWWSxovFLBZoA4WuhcLy8/bh+xoCL8bagaXJtixQsqbOhq1nCjW7AIVGawgUz+Qqzrr6wB4qmi9m00/JIk7TZCpAtmqgpgJF47SpOn9+UQt16s9YaS71z9NHOYQFha9Pm83Tty0EagrFM/t733RHqIFZH4wb7LDMVh+Ecc4Lv+ZsuQiNH8hXF3hLv39XXNCHbJ+v7x/X2eDmuKLA74sPihVr47jMuRpWfxy1Kwo0GLQjmv1xpBFD3+96gSP5cLVouM7QQaA1vxhK9uKmd853bEZS9jsBSwe2UDDu7mJxd2Mo/muQy81m/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==', 2))
+ await asyncio.sleep(0.1)
+ assert self._feature_flag_added[0].name == 'bilal_split'
+ assert telemetry_storage._counters._update_from_sse['sp'] == 2
+
+ # compression 1
+ self._feature_flag_added = None
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 2345, 'H4sIAAkVZWQC/8WST0+DQBDFv0qzZ0ig/BF6a2xjGismUk2MaZopzOKmy9Isy0EbvrtDwbY2Xo233Tdv5se85cCMBs5FtvrYYwIlsglratTMYiKns+chcAgc24UwsF0Xczt2cm5z8Jw8DmPH9wPyqr5zKyTITb2XwpA4TJ5KWWVgRKXYxHWcX/QUkVi264W+68bjaGyxupdCJ4i9KPI9UgyYpibI9Ha1eJnT/J2QsnNxkDVaLEcOjTQrjWBKVIasFefky95BFZg05Zb2mrhh5I9vgsiL44BAIIuKTeiQVYqLotHHLyLOoT1quRjub4fztQuLxj89LpePzytClGCyd9R3umr21ErOcitUh2PTZHY29HN2+JGixMxUujNfvMB3+u2pY1AXySad3z3Mk46msACDp8W7jhly4uUpFt3qD33vDAx0gLpXkx+P1GusbdcE24M2F4uaywwVEWvxSa1Oa13Vjvn2RXradm0xCVuUVBJqNCBGV0DrX4OcLpeb+/lreh3jH8Uw/JQj3UhkxPgCCurdEnADAAA=', 1))
+ await asyncio.sleep(0.1)
+ assert self._feature_flag_added[0].name == 'bilal_split'
+ assert telemetry_storage._counters._update_from_sse['sp'] == 3
+
+ # should call delete split
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456790, 2345, 'eyJ0cmFmZmljVHlwZU5hbWUiOiAidXNlciIsICJpZCI6ICIzM2VhZmE1MC0xYTY1LTExZWQtOTBkZi1mYTMwZDk2OTA0NDUiLCAibmFtZSI6ICJiaWxhbF9zcGxpdCIsICJ0cmFmZmljQWxsb2NhdGlvbiI6IDEwMCwgInRyYWZmaWNBbGxvY2F0aW9uU2VlZCI6IC0xMzY0MTE5MjgyLCAic2VlZCI6IC02MDU5Mzg4NDMsICJzdGF0dXMiOiAiQVJDSElWRUQiLCAia2lsbGVkIjogZmFsc2UsICJkZWZhdWx0VHJlYXRtZW50IjogIm9mZiIsICJjaGFuZ2VOdW1iZXIiOiAxNjg0Mjc1ODM5OTUyLCAiYWxnbyI6IDIsICJjb25maWd1cmF0aW9ucyI6IHt9LCAiY29uZGl0aW9ucyI6IFt7ImNvbmRpdGlvblR5cGUiOiAiUk9MTE9VVCIsICJtYXRjaGVyR3JvdXAiOiB7ImNvbWJpbmVyIjogIkFORCIsICJtYXRjaGVycyI6IFt7ImtleVNlbGVjdG9yIjogeyJ0cmFmZmljVHlwZSI6ICJ1c2VyIn0sICJtYXRjaGVyVHlwZSI6ICJJTl9TRUdNRU5UIiwgIm5lZ2F0ZSI6IGZhbHNlLCAidXNlckRlZmluZWRTZWdtZW50TWF0Y2hlckRhdGEiOiB7InNlZ21lbnROYW1lIjogImJpbGFsX3NlZ21lbnQifX1dfSwgInBhcnRpdGlvbnMiOiBbeyJ0cmVhdG1lbnQiOiAib24iLCAic2l6ZSI6IDB9LCB7InRyZWF0bWVudCI6ICJvZmYiLCAic2l6ZSI6IDEwMH1dLCAibGFiZWwiOiAiaW4gc2VnbWVudCBiaWxhbF9zZWdtZW50In0sIHsiY29uZGl0aW9uVHlwZSI6ICJST0xMT1VUIiwgIm1hdGNoZXJHcm91cCI6IHsiY29tYmluZXIiOiAiQU5EIiwgIm1hdGNoZXJzIjogW3sia2V5U2VsZWN0b3IiOiB7InRyYWZmaWNUeXBlIjogInVzZXIifSwgIm1hdGNoZXJUeXBlIjogIkFMTF9LRVlTIiwgIm5lZ2F0ZSI6IGZhbHNlfV19LCAicGFydGl0aW9ucyI6IFt7InRyZWF0bWVudCI6ICJvbiIsICJzaXplIjogMH0sIHsidHJlYXRtZW50IjogIm9mZiIsICJzaXplIjogMTAwfV0sICJsYWJlbCI6ICJkZWZhdWx0IHJ1bGUifV19', 0))
+ await asyncio.sleep(0.1)
+ assert self._feature_flag_deleted[0] == 'bilal_split'
+ assert self._feature_flag_added == []
+
+ await split_worker.stop()
+
+ @pytest.mark.asyncio
+ async def test_edge_cases(self, mocker):
+ q = asyncio.Queue()
+ split_worker = SplitWorkerAsync(handler_async, mocker.Mock(), q, mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ global change_number_received
+ split_worker.start()
+
+ async def get_change_number():
+ return 2345
+ split_worker._feature_flag_storage.get_change_number = get_change_number
+
+ self._feature_flag_added = None
+ self._feature_flag_deleted = None
+ async def update(feature_flag_add, feature_flag_delete, change_number):
+ self._feature_flag_added = feature_flag_add
+ self._feature_flag_deleted = feature_flag_delete
+ self.new_change_number = change_number
+ split_worker._feature_flag_storage.update = update
+ split_worker._feature_flag_storage.config_flag_sets_used = 0
+
+ # should Not call the handler
+ self._feature_flag_added = None
+ change_number_received = 0
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, 2345, "/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==", 2))
+ await asyncio.sleep(0.1)
+ assert self._feature_flag_added == None
+
+
+ # should Not call the handler
+ self._feature_flag_added = None
+ change_number_received = 0
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, 2345, "/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==", 4))
+ await asyncio.sleep(0.1)
+ assert self._feature_flag_added == None
+
+ # should Not call the handler
+ self._feature_flag_added = None
+ change_number_received = 0
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, None, 'eJzEUtFq20AQ/JUwz2c4WZZr3ZupTQh1FKjcQinGrKU95cjpZE6nh9To34ssJ3FNX0sfd3Zm53b2TgietDbF9vXIGdUMha5lDwFTQiGOmTQlchLRPJlEEZeTVJZ6oimWZTpP5WyWQMCNyoOxZPft0ZoA8TZ5aW1TUDCNg4qk/AueM5dQkyiez6IonS6mAu0IzWWSxovFLBZoA4WuhcLy8/bh+xoCL8bagaXJtixQsqbOhq1nCjW7AIVGawgUz+Qqzrr6wB4qmi9m00/JIk7TZCpAtmqgpgJF47SpOn9+UQt16s9YaS71z9NHOYQFha9Pm83Tty0EagrFM/t733RHqIFZH4wb7LDMVh+Ecc4Lv+ZsuQiNH8hXF3hLv39XXNCHbJ+v7x/X2eDmuKLA74sPihVr47jMuRpWfxy1Kwo0GLQjmv1xpBFD3+96gSP5cLVouM7QQaA1vxhK9uKmd853bEZS9jsBSwe2UDDu7mJxd2Mo/muQy81m/2X9I7+N8R/FcPmUd76zjH7X/w4AAP//90glTw==', 2))
+ await asyncio.sleep(0.1)
+ assert self._feature_flag_added == None
+
+ # should Not call the handler
+ self._feature_flag_added = None
+ change_number_received = 0
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 123456, 2345, None, 1))
+ await asyncio.sleep(0.1)
+ assert self._feature_flag_added == None
+
+ await split_worker.stop()
+
+ @pytest.mark.asyncio
+ async def test_fetch_segment(self, mocker):
+ q = asyncio.Queue()
+ internal_events_queue = asyncio.Queue()
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+
+ self.segment_name = None
+ async def segment_handler_sync(segment_name, change_number):
+ self.segment_name = segment_name
+ return
+ split_worker = SplitWorkerAsync(handler_async, segment_handler_sync, q, split_storage, segment_storage, mocker.Mock(), mocker.Mock())
+ split_worker.start()
+
+ async def get_change_number():
+ return 2345
+ split_worker._feature_flag_storage.get_change_number = get_change_number
+
+ async def check_instant_ff_update(event):
+ return True
+ split_worker._check_instant_ff_update = check_instant_ff_update
+
+ await q.put(SplitChangeUpdate('some', 'SPLIT_UPDATE', 1675095324253, 2345, 'eyJjaGFuZ2VOdW1iZXIiOiAxNjc1MDk1MzI0MjUzLCAidHJhZmZpY1R5cGVOYW1lIjogInVzZXIiLCAibmFtZSI6ICJiaWxhbF9zcGxpdCIsICJ0cmFmZmljQWxsb2NhdGlvbiI6IDEwMCwgInRyYWZmaWNBbGxvY2F0aW9uU2VlZCI6IC0xMzY0MTE5MjgyLCAic2VlZCI6IC02MDU5Mzg4NDMsICJzdGF0dXMiOiAiQUNUSVZFIiwgImtpbGxlZCI6IGZhbHNlLCAiZGVmYXVsdFRyZWF0bWVudCI6ICJvZmYiLCAiYWxnbyI6IDIsICJjb25kaXRpb25zIjogW3siY29uZGl0aW9uVHlwZSI6ICJST0xMT1VUIiwgIm1hdGNoZXJHcm91cCI6IHsiY29tYmluZXIiOiAiQU5EIiwgIm1hdGNoZXJzIjogW3sia2V5U2VsZWN0b3IiOiB7InRyYWZmaWNUeXBlIjogInVzZXIiLCAiYXR0cmlidXRlIjogbnVsbH0sICJtYXRjaGVyVHlwZSI6ICJJTl9TRUdNRU5UIiwgIm5lZ2F0ZSI6IGZhbHNlLCAidXNlckRlZmluZWRTZWdtZW50TWF0Y2hlckRhdGEiOiB7InNlZ21lbnROYW1lIjogImJpbGFsX3NlZ21lbnQifSwgIndoaXRlbGlzdE1hdGNoZXJEYXRhIjogbnVsbCwgInVuYXJ5TnVtZXJpY01hdGNoZXJEYXRhIjogbnVsbCwgImJldHdlZW5NYXRjaGVyRGF0YSI6IG51bGwsICJkZXBlbmRlbmN5TWF0Y2hlckRhdGEiOiBudWxsLCAiYm9vbGVhbk1hdGNoZXJEYXRhIjogbnVsbCwgInN0cmluZ01hdGNoZXJEYXRhIjogbnVsbH1dfSwgInBhcnRpdGlvbnMiOiBbeyJ0cmVhdG1lbnQiOiAib24iLCAic2l6ZSI6IDB9LCB7InRyZWF0bWVudCI6ICJvZmYiLCAic2l6ZSI6IDEwMH1dLCAibGFiZWwiOiAiaW4gc2VnbWVudCBiaWxhbF9zZWdtZW50In0sIHsiY29uZGl0aW9uVHlwZSI6ICJST0xMT1VUIiwgIm1hdGNoZXJHcm91cCI6IHsiY29tYmluZXIiOiAiQU5EIiwgIm1hdGNoZXJzIjogW3sia2V5U2VsZWN0b3IiOiB7InRyYWZmaWNUeXBlIjogInVzZXIiLCAiYXR0cmlidXRlIjogbnVsbH0sICJtYXRjaGVyVHlwZSI6ICJBTExfS0VZUyIsICJuZWdhdGUiOiBmYWxzZSwgInVzZXJEZWZpbmVkU2VnbWVudE1hdGNoZXJEYXRhIjogbnVsbCwgIndoaXRlbGlzdE1hdGNoZXJEYXRhIjogbnVsbCwgInVuYXJ5TnVtZXJpY01hdGNoZXJEYXRhIjogbnVsbCwgImJldHdlZW5NYXRjaGVyRGF0YSI6IG51bGwsICJkZXBlbmRlbmN5TWF0Y2hlckRhdGEiOiBudWxsLCAiYm9vbGVhbk1hdGNoZXJEYXRhIjogbnVsbCwgInN0cmluZ01hdGNoZXJEYXRhIjogbnVsbH1dfSwgInBhcnRpdGlvbnMiOiBbeyJ0cmVhdG1lbnQiOiAib24iLCAic2l6ZSI6IDUwfSwgeyJ0cmVhdG1lbnQiOiAib2ZmIiwgInNpemUiOiA1MH1dLCAibGFiZWwiOiAiZGVmYXVsdCBydWxlIn1dLCAiY29uZmlndXJhdGlvbnMiOiB7fX0=', 0))
+ await asyncio.sleep(0.1)
+ assert self.segment_name == "bilal_segment"
+
+ await split_worker.stop()
diff --git a/tests/push/test_splitsse.py b/tests/push/test_splitsse.py
new file mode 100644
index 00000000..c461f9fe
--- /dev/null
+++ b/tests/push/test_splitsse.py
@@ -0,0 +1,210 @@
+"""SSEClient unit tests."""
+# pylint:disable=no-self-use,line-too-long
+import time
+from queue import Queue
+import pytest
+
+from splitio.models.token import Token
+from splitio.push.splitsse import SplitSSEClient, SplitSSEClientAsync
+from splitio.push.sse import SSEEvent, SSE_EVENT_ERROR
+
+from tests.helpers.mockserver import SSEMockServer
+from splitio.client.util import SdkMetadata
+from splitio.optional.loaders import asyncio
+
+class SSESplitClientTests(object):
+ """SSEClient test cases."""
+
+ def test_split_sse_success(self):
+ """Test correct initialization. Client ends the connection."""
+ events = []
+ def handler(event):
+ """Handler."""
+ events.append(event)
+
+ status = {
+ 'on_connect': False,
+ 'on_disconnect': False,
+ }
+
+ def on_connect():
+ """On connect handler."""
+ status['on_connect'] = True
+
+ def on_disconnect():
+ """On disconnect handler."""
+ status['on_disconnect'] = True
+
+ request_queue = Queue()
+ server = SSEMockServer(request_queue)
+ server.start()
+
+ client = SplitSSEClient(handler, SdkMetadata('1.0', 'some', '1.2.3.4'), on_connect, on_disconnect,
+ 'abcd', base_url='http://localhost:' + str(server.port()))
+
+ token = Token(True, 'some', {'chan1': ['subscribe'], 'chan2': ['subscribe', 'channel-metadata:publishers']},
+ 1, 2)
+
+ server.publish({'id': '1'}) # send a non-error event early to unblock start
+ assert client.start(token)
+ with pytest.raises(Exception):
+ client.start(token)
+
+ server.publish({'id': '1', 'data': 'a', 'retry': '1', 'event': 'message'})
+ server.publish({'id': '2', 'data': 'a', 'retry': '1', 'event': 'message'})
+ time.sleep(1)
+ client.stop(True)
+
+ request = request_queue.get(1)
+ assert request.path == '/event-stream?v=1.1&accessToken=some&channels=chan1,[?occupancy=metrics.publishers]chan2'
+ assert request.headers['accept'] == 'text/event-stream'
+ assert request.headers['SplitSDKVersion'] == '1.0'
+ assert request.headers['SplitSDKMachineIP'] == '1.2.3.4'
+ assert request.headers['SplitSDKMachineName'] == 'some'
+ assert request.headers['SplitSDKClientKey'] == 'abcd'
+
+ assert events == [
+ SSEEvent('1', 'message', '1', 'a'),
+ SSEEvent('2', 'message', '1', 'a')
+ ]
+
+ server.publish(SSEMockServer.VIOLENT_REQUEST_END)
+ server.stop()
+
+ assert status['on_connect']
+ assert status['on_disconnect']
+
+ def test_split_sse_error(self):
+ """Test correct initialization. Client ends the connection."""
+ events = []
+ def handler(event):
+ """Handler."""
+ events.append(event)
+
+ request_queue = Queue()
+ server = SSEMockServer(request_queue)
+ server.start()
+
+ status = {
+ 'on_connect': False,
+ 'on_disconnect': False,
+ }
+
+ def on_connect():
+ """On connect handler."""
+ status['on_connect'] = True
+
+ def on_disconnect():
+ """On disconnect handler."""
+ status['on_disconnect'] = True
+
+ client = SplitSSEClient(handler, SdkMetadata('1.0', 'some', '1.2.3.4'), on_connect, on_disconnect,
+ "abcd", base_url='http://localhost:' + str(server.port()))
+
+ token = Token(True, 'some', {'chan1': ['subscribe'], 'chan2': ['subscribe', 'channel-metadata:publishers']},
+ 1, 2)
+
+ server.publish({'event': 'error'}) # send an error event early to unblock start
+ assert not client.start(token)
+
+ request = request_queue.get(1)
+ assert request.path == '/event-stream?v=1.1&accessToken=some&channels=chan1,[?occupancy=metrics.publishers]chan2'
+ assert request.headers['accept'] == 'text/event-stream'
+ assert request.headers['SplitSDKVersion'] == '1.0'
+ assert request.headers['SplitSDKMachineIP'] == '1.2.3.4'
+ assert request.headers['SplitSDKMachineName'] == 'some'
+ assert request.headers['SplitSDKClientKey'] == 'abcd'
+
+ server.publish(SSEMockServer.VIOLENT_REQUEST_END)
+ server.stop()
+
+ time.sleep(1)
+
+ assert status['on_connect']
+ assert status['on_disconnect']
+
+
+class SSESplitClientAsyncTests(object):
+ """SSEClientAsync test cases."""
+
+ @pytest.mark.asyncio
+ async def test_split_sse_success(self):
+ """Test correct initialization. Client ends the connection."""
+ request_queue = Queue()
+ server = SSEMockServer(request_queue)
+ server.start()
+
+ client = SplitSSEClientAsync(SdkMetadata('1.0', 'some', '1.2.3.4'),
+ 'abcd', base_url='http://localhost:' + str(server.port()))
+
+ token = Token(True, 'some', {'chan1': ['subscribe'], 'chan2': ['subscribe', 'channel-metadata:publishers']},
+ 1, 2)
+
+ events_source = client.start(token)
+ server.publish({'id': '1'}) # send a non-error event early to unblock start
+ server.publish({'id': '1', 'data': 'a', 'retry': '1', 'event': 'message'})
+ server.publish({'id': '2', 'data': 'a', 'retry': '1', 'event': 'message'})
+
+ first_event = await events_source.__anext__()
+ assert first_event.event != SSE_EVENT_ERROR
+
+
+ event2 = await events_source.__anext__()
+ event3 = await events_source.__anext__()
+
+ # Since generators are meant to be iterated, we need to consume them all until StopIteration occurs
+ # to do this, connection must be closed in another coroutine, while the current one is still consuming events.
+ shutdown_task = asyncio.get_running_loop().create_task(client.stop())
+ with pytest.raises(StopAsyncIteration): await events_source.__anext__()
+ await shutdown_task
+
+
+ request = request_queue.get(1)
+ assert request.path == '/event-stream?v=1.1&accessToken=some&channels=chan1,%5B?occupancy=metrics.publishers%5Dchan2'
+ assert request.headers['accept'] == 'text/event-stream'
+ assert request.headers['SplitSDKVersion'] == '1.0'
+ assert request.headers['SplitSDKMachineIP'] == '1.2.3.4'
+ assert request.headers['SplitSDKMachineName'] == 'some'
+ assert request.headers['SplitSDKClientKey'] == 'abcd'
+
+ assert event2 == SSEEvent('1', 'message', '1', 'a')
+ assert event3 == SSEEvent('2', 'message', '1', 'a')
+
+ server.publish(SSEMockServer.VIOLENT_REQUEST_END)
+ server.stop()
+ await asyncio.sleep(1)
+
+ assert client.status == SplitSSEClient._Status.IDLE
+
+
+ @pytest.mark.asyncio
+ async def test_split_sse_error(self):
+ """Test correct initialization. Client ends the connection."""
+ request_queue = Queue()
+ server = SSEMockServer(request_queue)
+ server.start()
+
+ client = SplitSSEClientAsync(SdkMetadata('1.0', 'some', '1.2.3.4'),
+ 'abcd', base_url='http://localhost:' + str(server.port()))
+
+ token = Token(True, 'some', {'chan1': ['subscribe'], 'chan2': ['subscribe', 'channel-metadata:publishers']},
+ 1, 2)
+
+ events_source = client.start(token)
+ server.publish({'event': 'error'}) # send an error event early to unblock start
+
+
+ with pytest.raises(StopAsyncIteration): await events_source.__anext__()
+
+ assert client.status == SplitSSEClient._Status.IDLE
+
+ request = request_queue.get(1)
+ assert request.path == '/event-stream?v=1.1&accessToken=some&channels=chan1,%5B?occupancy=metrics.publishers%5Dchan2'
+ assert request.headers['accept'] == 'text/event-stream'
+ assert request.headers['SplitSDKVersion'] == '1.0'
+ assert request.headers['SplitSDKMachineIP'] == '1.2.3.4'
+ assert request.headers['SplitSDKMachineName'] == 'some'
+ assert request.headers['SplitSDKClientKey'] == 'abcd'
+
+ server.publish(SSEMockServer.VIOLENT_REQUEST_END)
+ server.stop()
diff --git a/tests/push/test_sse.py b/tests/push/test_sse.py
new file mode 100644
index 00000000..1e0e2e48
--- /dev/null
+++ b/tests/push/test_sse.py
@@ -0,0 +1,229 @@
+"""SSEClient unit tests."""
+
+import time
+import threading
+import pytest
+from contextlib import suppress
+
+from splitio.push.sse import SSEClient, SSEEvent, SSEClientAsync
+from splitio.optional.loaders import asyncio
+from tests.helpers.mockserver import SSEMockServer
+
+class SSEClientTests(object):
+ """SSEClient test cases."""
+
+ def test_sse_client_disconnects(self):
+ """Test correct initialization. Client ends the connection."""
+ server = SSEMockServer()
+ server.start()
+
+ events = []
+ def callback(event):
+ """Callback."""
+ events.append(event)
+
+ client = SSEClient(callback)
+
+ def runner():
+ """SSE client runner thread."""
+ assert client.start('http://127.0.0.1:' + str(server.port()))
+ client_task = threading.Thread(target=runner)
+ client_task.setName('client')
+ client_task.start()
+ with pytest.raises(RuntimeError):
+ client_task.start()
+
+ server.publish({'id': '1'})
+ server.publish({'id': '2', 'event': 'message', 'data': 'abc'})
+ server.publish({'id': '3', 'event': 'message', 'data': 'def'})
+ server.publish({'id': '4', 'event': 'message', 'data': 'ghi'})
+ time.sleep(1)
+ client.shutdown()
+ time.sleep(1)
+
+ assert events == [
+ SSEEvent('1', None, None, None),
+ SSEEvent('2', 'message', None, 'abc'),
+ SSEEvent('3', 'message', None, 'def'),
+ SSEEvent('4', 'message', None, 'ghi')
+ ]
+
+ assert client._conn is None
+ server.publish(server.GRACEFUL_REQUEST_END)
+ server.stop()
+
+ def test_sse_server_disconnects(self):
+ """Test correct initialization. Server ends connection."""
+ server = SSEMockServer()
+ server.start()
+
+ events = []
+ def callback(event):
+ """Callback."""
+ events.append(event)
+
+ client = SSEClient(callback)
+
+ def runner():
+ """SSE client runner thread."""
+ assert not client.start('http://127.0.0.1:' + str(server.port()))
+ client_task = threading.Thread(target=runner)
+ client_task.setName('client')
+ client_task.start()
+
+ server.publish({'id': '1'})
+ server.publish({'id': '2', 'event': 'message', 'data': 'abc'})
+ server.publish({'id': '3', 'event': 'message', 'data': 'def'})
+ server.publish({'id': '4', 'event': 'message', 'data': 'ghi'})
+ time.sleep(1)
+ server.publish(server.GRACEFUL_REQUEST_END)
+ server.stop()
+ time.sleep(1)
+
+ assert events == [
+ SSEEvent('1', None, None, None),
+ SSEEvent('2', 'message', None, 'abc'),
+ SSEEvent('3', 'message', None, 'def'),
+ SSEEvent('4', 'message', None, 'ghi')
+ ]
+
+ assert client._conn is None
+
+ def test_sse_server_disconnects_abruptly(self):
+ """Test correct initialization. Server ends connection."""
+ server = SSEMockServer()
+ server.start()
+
+ events = []
+ def callback(event):
+ """Callback."""
+ events.append(event)
+
+ client = SSEClient(callback)
+
+ def runner():
+ """SSE client runner thread."""
+ assert not client.start('http://127.0.0.1:' + str(server.port()))
+ client_task = threading.Thread(target=runner, daemon=True)
+ client_task.setName('client')
+ client_task.start()
+
+ server.publish({'id': '1'})
+ server.publish({'id': '2', 'event': 'message', 'data': 'abc'})
+ server.publish({'id': '3', 'event': 'message', 'data': 'def'})
+ server.publish({'id': '4', 'event': 'message', 'data': 'ghi'})
+ time.sleep(1)
+ server.publish(server.VIOLENT_REQUEST_END)
+ server.stop()
+ time.sleep(1)
+
+ assert events == [
+ SSEEvent('1', None, None, None),
+ SSEEvent('2', 'message', None, 'abc'),
+ SSEEvent('3', 'message', None, 'def'),
+ SSEEvent('4', 'message', None, 'ghi')
+ ]
+
+ assert client._conn is None
+
+class SSEClientAsyncTests(object):
+ """SSEClient test cases."""
+
+ @pytest.mark.asyncio
+ async def test_sse_client_disconnects(self):
+ """Test correct initialization. Client ends the connection."""
+ server = SSEMockServer()
+ server.start()
+ client = SSEClientAsync()
+ sse_events_loop = client.start(f"http://127.0.0.1:{str(server.port())}?token=abc123$%^&(")
+
+ server.publish({'id': '1'})
+ server.publish({'id': '2', 'event': 'message', 'data': 'abc'})
+ server.publish({'id': '3', 'event': 'message', 'data': 'def'})
+ server.publish({'id': '4', 'event': 'message', 'data': 'ghi'})
+
+ event1 = await sse_events_loop.__anext__()
+ event2 = await sse_events_loop.__anext__()
+ event3 = await sse_events_loop.__anext__()
+ event4 = await sse_events_loop.__anext__()
+
+ # Since generators are meant to be iterated, we need to consume them all until StopIteration occurs
+ # to do this, connection must be closed in another coroutine, while the current one is still consuming events.
+ shutdown_task = asyncio.get_running_loop().create_task(client.shutdown())
+ with pytest.raises(StopAsyncIteration): await sse_events_loop.__anext__()
+ await shutdown_task
+
+ assert event1 == SSEEvent('1', None, None, None)
+ assert event2 == SSEEvent('2', 'message', None, 'abc')
+ assert event3 == SSEEvent('3', 'message', None, 'def')
+ assert event4 == SSEEvent('4', 'message', None, 'ghi')
+ assert client._response == None
+
+ server.publish(server.GRACEFUL_REQUEST_END)
+ server.stop()
+
+ @pytest.mark.asyncio
+ async def test_sse_server_disconnects(self):
+ """Test correct initialization. Server ends connection."""
+ server = SSEMockServer()
+ server.start()
+ client = SSEClientAsync()
+ sse_events_loop = client.start('http://127.0.0.1:' + str(server.port()))
+
+ server.publish({'id': '1'})
+ server.publish({'id': '2', 'event': 'message', 'data': 'abc'})
+ server.publish({'id': '3', 'event': 'message', 'data': 'def'})
+ server.publish({'id': '4', 'event': 'message', 'data': 'ghi'})
+
+ event1 = await sse_events_loop.__anext__()
+ event2 = await sse_events_loop.__anext__()
+ event3 = await sse_events_loop.__anext__()
+ event4 = await sse_events_loop.__anext__()
+
+ server.publish(server.GRACEFUL_REQUEST_END)
+
+ # after the connection ends, any subsequent read sohould fail and iteration should stop
+ with pytest.raises(StopAsyncIteration): await sse_events_loop.__anext__()
+
+ assert event1 == SSEEvent('1', None, None, None)
+ assert event2 == SSEEvent('2', 'message', None, 'abc')
+ assert event3 == SSEEvent('3', 'message', None, 'def')
+ assert event4 == SSEEvent('4', 'message', None, 'ghi')
+ assert client._response == None
+
+ await client._done.wait() # to ensure `start()` has finished
+ assert client._response is None
+
+# server.stop()
+
+
+ @pytest.mark.asyncio
+ async def test_sse_server_disconnects_abruptly(self):
+ """Test correct initialization. Server ends connection."""
+ server = SSEMockServer()
+ server.start()
+ client = SSEClientAsync()
+ sse_events_loop = client.start('http://127.0.0.1:' + str(server.port()))
+
+ server.publish({'id': '1'})
+ server.publish({'id': '2', 'event': 'message', 'data': 'abc'})
+ server.publish({'id': '3', 'event': 'message', 'data': 'def'})
+ server.publish({'id': '4', 'event': 'message', 'data': 'ghi'})
+
+ event1 = await sse_events_loop.__anext__()
+ event2 = await sse_events_loop.__anext__()
+ event3 = await sse_events_loop.__anext__()
+ event4 = await sse_events_loop.__anext__()
+
+ server.publish(server.VIOLENT_REQUEST_END)
+ with pytest.raises(StopAsyncIteration): await sse_events_loop.__anext__()
+
+ server.stop()
+
+ assert event1 == SSEEvent('1', None, None, None)
+ assert event2 == SSEEvent('2', 'message', None, 'abc')
+ assert event3 == SSEEvent('3', 'message', None, 'def')
+ assert event4 == SSEEvent('4', 'message', None, 'ghi')
+
+ await client._done.wait() # to ensure `start()` has finished
+ assert client._response is None
diff --git a/tests/push/test_status_tracker.py b/tests/push/test_status_tracker.py
new file mode 100644
index 00000000..b77bd483
--- /dev/null
+++ b/tests/push/test_status_tracker.py
@@ -0,0 +1,395 @@
+"""SSE Status tracker unit tests."""
+#pylint:disable=protected-access,no-self-use,line-too-long
+import pytest
+
+from splitio.push.status_tracker import PushStatusTracker, Status, PushStatusTrackerAsync
+from splitio.push.parser import ControlType, AblyError, OccupancyMessage, ControlMessage
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
+from splitio.models.telemetry import StreamingEventTypes, SSEStreamingStatus, SSEConnectionError
+
+
+class StatusTrackerTests(object):
+ """Parser tests."""
+
+ def test_initial_status_and_reset(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTracker(telemetry_runtime_producer)
+ assert tracker._occupancy_ok()
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+ assert not tracker._shutdown_expected
+
+ tracker._last_control_message = ControlType.STREAMING_PAUSED
+ tracker._publishers['control_pri'] = 0
+ tracker._publishers['control_sec'] = 1
+ tracker._last_status_propagated = Status.PUSH_NONRETRYABLE_ERROR
+ tracker.reset()
+ assert tracker._occupancy_ok()
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+ assert not tracker._shutdown_expected
+
+ def test_handling_occupancy(self, mocker):
+ """Test handling occupancy works properly."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTracker(telemetry_runtime_producer)
+ assert tracker._occupancy_ok()
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 123, 0)
+ assert tracker.handle_occupancy(message) is None
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.OCCUPANCY_SEC.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == len(tracker._publishers))
+
+ # old message
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 122, 0)
+ assert tracker.handle_occupancy(message) is None
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 124, 0)
+ assert tracker.handle_occupancy(message) is Status.PUSH_SUBSYSTEM_DOWN
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.STREAMING_STATUS.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEStreamingStatus.PAUSED.value)
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 125, 1)
+ assert tracker.handle_occupancy(message) is Status.PUSH_SUBSYSTEM_UP
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.STREAMING_STATUS.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEStreamingStatus.ENABLED.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-2]._type == StreamingEventTypes.OCCUPANCY_PRI.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-2]._data == len(tracker._publishers))
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 125, 2)
+ assert tracker.handle_occupancy(message) is None
+
+ def test_handling_control(self, mocker):
+ """Test handling incoming control messages."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTracker(telemetry_runtime_producer)
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+
+ message = ControlMessage('control_pri', 123, ControlType.STREAMING_ENABLED)
+ assert tracker.handle_control_message(message) is None
+
+ # old message
+ message = ControlMessage('control_pri', 122, ControlType.STREAMING_PAUSED)
+ assert tracker.handle_control_message(message) is None
+
+ message = ControlMessage('control_pri', 124, ControlType.STREAMING_PAUSED)
+ assert tracker.handle_control_message(message) is Status.PUSH_SUBSYSTEM_DOWN
+
+ message = ControlMessage('control_pri', 125, ControlType.STREAMING_ENABLED)
+ assert tracker.handle_control_message(message) is Status.PUSH_SUBSYSTEM_UP
+
+ message = ControlMessage('control_pri', 126, ControlType.STREAMING_DISABLED)
+ assert tracker.handle_control_message(message) is Status.PUSH_NONRETRYABLE_ERROR
+
+ # test that disabling works as well with streaming paused
+ tracker = PushStatusTracker(mocker.Mock())
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+
+ message = ControlMessage('control_pri', 124, ControlType.STREAMING_PAUSED)
+ assert tracker.handle_control_message(message) is Status.PUSH_SUBSYSTEM_DOWN
+
+ message = ControlMessage('control_pri', 126, ControlType.STREAMING_DISABLED)
+ assert tracker.handle_control_message(message) is Status.PUSH_NONRETRYABLE_ERROR
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.STREAMING_STATUS.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEStreamingStatus.DISABLED.value)
+
+
+ def test_control_occupancy_overlap(self, mocker):
+ """Test control and occupancy messages together."""
+ tracker = PushStatusTracker(mocker.Mock())
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+
+ message = ControlMessage('control_pri', 122, ControlType.STREAMING_PAUSED)
+ assert tracker.handle_control_message(message) is Status.PUSH_SUBSYSTEM_DOWN
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 123, 0)
+ assert tracker.handle_occupancy(message) is None
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 124, 0)
+ assert tracker.handle_occupancy(message) is None
+
+ message = ControlMessage('control_pri', 125, ControlType.STREAMING_ENABLED)
+ assert tracker.handle_control_message(message) is None
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 126, 1)
+ assert tracker.handle_occupancy(message) is Status.PUSH_SUBSYSTEM_UP
+
+ def test_ably_error(self, mocker):
+ """Test the status tracker reacts appropriately to an ably error."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTracker(telemetry_runtime_producer)
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+
+ message = AblyError(39999, 100, 'some message', 'http://somewhere')
+ assert tracker.handle_ably_error(message) is None
+
+ message = AblyError(50000, 100, 'some message', 'http://somewhere')
+ assert tracker.handle_ably_error(message) is None
+
+ tracker.reset()
+ message = AblyError(40140, 100, 'some message', 'http://somewhere')
+ assert tracker.handle_ably_error(message) is Status.PUSH_RETRYABLE_ERROR
+
+ tracker.reset()
+ message = AblyError(40149, 100, 'some message', 'http://somewhere')
+ assert tracker.handle_ably_error(message) is Status.PUSH_RETRYABLE_ERROR
+
+ tracker.reset()
+ message = AblyError(40150, 100, 'some message', 'http://somewhere')
+ assert tracker.handle_ably_error(message) is Status.PUSH_NONRETRYABLE_ERROR
+
+ tracker.reset()
+ message = AblyError(40139, 100, 'some message', 'http://somewhere')
+ assert tracker.handle_ably_error(message) is Status.PUSH_NONRETRYABLE_ERROR
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.ABLY_ERROR.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == 40139)
+
+
+ def test_disconnect_expected(self, mocker):
+ """Test that no error is propagated when a disconnect is expected."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTracker(telemetry_runtime_producer)
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+ tracker.notify_sse_shutdown_expected()
+
+ assert tracker.handle_ably_error(AblyError(40139, 100, 'some message', 'http://somewhere')) is None
+ assert tracker.handle_ably_error(AblyError(40149, 100, 'some message', 'http://somewhere')) is None
+ assert tracker.handle_ably_error(AblyError(39999, 100, 'some message', 'http://somewhere')) is None
+
+ assert tracker.handle_control_message(ControlMessage('control_pri', 123, ControlType.STREAMING_ENABLED)) is None
+ assert tracker.handle_control_message(ControlMessage('control_pri', 124, ControlType.STREAMING_PAUSED)) is None
+ assert tracker.handle_control_message(ControlMessage('control_pri', 125, ControlType.STREAMING_DISABLED)) is None
+
+ assert tracker.handle_occupancy(OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 123, 0)) is None
+ assert tracker.handle_occupancy(OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 124, 1)) is None
+
+ def test_telemetry_non_requested_disconnect(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTracker(telemetry_runtime_producer)
+ tracker._shutdown_expected = False
+ tracker.handle_disconnect()
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.SSE_CONNECTION_ERROR.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEConnectionError.NON_REQUESTED.value)
+
+ tracker._shutdown_expected = True
+ tracker.handle_disconnect()
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.SSE_CONNECTION_ERROR.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEConnectionError.REQUESTED.value)
+
+
+class StatusTrackerAsyncTests(object):
+ """Parser tests."""
+
+ @pytest.mark.asyncio
+ async def test_initial_status_and_reset(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTrackerAsync(telemetry_runtime_producer)
+ assert tracker._occupancy_ok()
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+ assert not tracker._shutdown_expected
+
+ tracker._last_control_message = ControlType.STREAMING_PAUSED
+ tracker._publishers['control_pri'] = 0
+ tracker._publishers['control_sec'] = 1
+ tracker._last_status_propagated = Status.PUSH_NONRETRYABLE_ERROR
+ tracker.reset()
+ assert tracker._occupancy_ok()
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+ assert not tracker._shutdown_expected
+
+ @pytest.mark.asyncio
+ async def test_handling_occupancy(self, mocker):
+ """Test handling occupancy works properly."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTrackerAsync(telemetry_runtime_producer)
+ assert tracker._occupancy_ok()
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 123, 0)
+ assert await tracker.handle_occupancy(message) is None
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.OCCUPANCY_SEC.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == len(tracker._publishers))
+
+ # old message
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 122, 0)
+ assert await tracker.handle_occupancy(message) is None
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 124, 0)
+ assert await tracker.handle_occupancy(message) is Status.PUSH_SUBSYSTEM_DOWN
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.STREAMING_STATUS.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEStreamingStatus.PAUSED.value)
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 125, 1)
+ assert await tracker.handle_occupancy(message) is Status.PUSH_SUBSYSTEM_UP
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.STREAMING_STATUS.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEStreamingStatus.ENABLED.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-2]._type == StreamingEventTypes.OCCUPANCY_PRI.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-2]._data == len(tracker._publishers))
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 125, 2)
+ assert await tracker.handle_occupancy(message) is None
+
+ @pytest.mark.asyncio
+ async def test_handling_control(self, mocker):
+ """Test handling incoming control messages."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTrackerAsync(telemetry_runtime_producer)
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+
+ message = ControlMessage('control_pri', 123, ControlType.STREAMING_ENABLED)
+ assert await tracker.handle_control_message(message) is None
+
+ # old message
+ message = ControlMessage('control_pri', 122, ControlType.STREAMING_PAUSED)
+ assert await tracker.handle_control_message(message) is None
+
+ message = ControlMessage('control_pri', 124, ControlType.STREAMING_PAUSED)
+ assert await tracker.handle_control_message(message) is Status.PUSH_SUBSYSTEM_DOWN
+
+ message = ControlMessage('control_pri', 125, ControlType.STREAMING_ENABLED)
+ assert await tracker.handle_control_message(message) is Status.PUSH_SUBSYSTEM_UP
+
+ message = ControlMessage('control_pri', 126, ControlType.STREAMING_DISABLED)
+ assert await tracker.handle_control_message(message) is Status.PUSH_NONRETRYABLE_ERROR
+
+ # test that disabling works as well with streaming paused
+ tracker = PushStatusTrackerAsync(telemetry_runtime_producer)
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+
+ message = ControlMessage('control_pri', 124, ControlType.STREAMING_PAUSED)
+ assert await tracker.handle_control_message(message) is Status.PUSH_SUBSYSTEM_DOWN
+
+ message = ControlMessage('control_pri', 126, ControlType.STREAMING_DISABLED)
+ assert await tracker.handle_control_message(message) is Status.PUSH_NONRETRYABLE_ERROR
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.STREAMING_STATUS.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEStreamingStatus.DISABLED.value)
+
+
+ @pytest.mark.asyncio
+ async def test_control_occupancy_overlap(self, mocker):
+ """Test control and occupancy messages together."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTrackerAsync(telemetry_runtime_producer)
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+
+ message = ControlMessage('control_pri', 122, ControlType.STREAMING_PAUSED)
+ assert await tracker.handle_control_message(message) is Status.PUSH_SUBSYSTEM_DOWN
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 123, 0)
+ assert await tracker.handle_occupancy(message) is None
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 124, 0)
+ assert await tracker.handle_occupancy(message) is None
+
+ message = ControlMessage('control_pri', 125, ControlType.STREAMING_ENABLED)
+ assert await tracker.handle_control_message(message) is None
+
+ message = OccupancyMessage('[?occupancy=metrics.publishers]control_pri', 126, 1)
+ assert await tracker.handle_occupancy(message) is Status.PUSH_SUBSYSTEM_UP
+
+ @pytest.mark.asyncio
+ async def test_ably_error(self, mocker):
+ """Test the status tracker reacts appropriately to an ably error."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTrackerAsync(telemetry_runtime_producer)
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+
+ message = AblyError(39999, 100, 'some message', 'http://somewhere')
+ assert await tracker.handle_ably_error(message) is None
+
+ message = AblyError(50000, 100, 'some message', 'http://somewhere')
+ assert await tracker.handle_ably_error(message) is None
+
+ tracker.reset()
+ message = AblyError(40140, 100, 'some message', 'http://somewhere')
+ assert await tracker.handle_ably_error(message) is Status.PUSH_RETRYABLE_ERROR
+
+ tracker.reset()
+ message = AblyError(40149, 100, 'some message', 'http://somewhere')
+ assert await tracker.handle_ably_error(message) is Status.PUSH_RETRYABLE_ERROR
+
+ tracker.reset()
+ message = AblyError(40150, 100, 'some message', 'http://somewhere')
+ assert await tracker.handle_ably_error(message) is Status.PUSH_NONRETRYABLE_ERROR
+
+ tracker.reset()
+ message = AblyError(40139, 100, 'some message', 'http://somewhere')
+ assert await tracker.handle_ably_error(message) is Status.PUSH_NONRETRYABLE_ERROR
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.ABLY_ERROR.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == 40139)
+
+
+ @pytest.mark.asyncio
+ async def test_disconnect_expected(self, mocker):
+ """Test that no error is propagated when a disconnect is expected."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTrackerAsync(telemetry_runtime_producer)
+ assert tracker._last_control_message == ControlType.STREAMING_ENABLED
+ assert tracker._last_status_propagated == Status.PUSH_SUBSYSTEM_UP
+ tracker.notify_sse_shutdown_expected()
+
+ assert await tracker.handle_ably_error(AblyError(40139, 100, 'some message', 'http://somewhere')) is None
+ assert await tracker.handle_ably_error(AblyError(40149, 100, 'some message', 'http://somewhere')) is None
+ assert await tracker.handle_ably_error(AblyError(39999, 100, 'some message', 'http://somewhere')) is None
+
+ assert await tracker.handle_control_message(ControlMessage('control_pri', 123, ControlType.STREAMING_ENABLED)) is None
+ assert await tracker.handle_control_message(ControlMessage('control_pri', 124, ControlType.STREAMING_PAUSED)) is None
+ assert await tracker.handle_control_message(ControlMessage('control_pri', 125, ControlType.STREAMING_DISABLED)) is None
+
+ assert await tracker.handle_occupancy(OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 123, 0)) is None
+ assert await tracker.handle_occupancy(OccupancyMessage('[?occupancy=metrics.publishers]control_sec', 124, 1)) is None
+
+ @pytest.mark.asyncio
+ async def test_telemetry_non_requested_disconnect(self, mocker):
+ """Test the initial status is ok and reset() works as expected."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ tracker = PushStatusTrackerAsync(telemetry_runtime_producer)
+ tracker._shutdown_expected = False
+ await tracker.handle_disconnect()
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.SSE_CONNECTION_ERROR.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEConnectionError.NON_REQUESTED.value)
+
+ tracker._shutdown_expected = True
+ await tracker.handle_disconnect()
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.SSE_CONNECTION_ERROR.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSEConnectionError.REQUESTED.value)
diff --git a/tests/recorder/__init__.py b/tests/recorder/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/recorder/test_recorder.py b/tests/recorder/test_recorder.py
new file mode 100644
index 00000000..cf226613
--- /dev/null
+++ b/tests/recorder/test_recorder.py
@@ -0,0 +1,275 @@
+"""Recorder unit tests."""
+
+import pytest
+
+from splitio.client.listener import ImpressionListenerWrapper, ImpressionListenerWrapperAsync
+from splitio.recorder.recorder import StandardRecorder, PipelinedRecorder, StandardRecorderAsync, PipelinedRecorderAsync
+from splitio.engine.impressions.impressions import Manager as ImpressionsManager
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.engine.impressions.manager import Counter as ImpressionsCounter
+from splitio.engine.impressions.unique_keys_tracker import UniqueKeysTracker, UniqueKeysTrackerAsync
+from splitio.storage.inmemmory import EventStorage, ImpressionStorage, InMemoryTelemetryStorage, InMemoryEventStorageAsync, InMemoryImpressionStorageAsync
+from splitio.storage.redis import ImpressionPipelinedStorage, EventStorage, RedisEventsStorage, RedisImpressionsStorage, RedisImpressionsStorageAsync, RedisEventsStorageAsync
+from splitio.storage.adapters.redis import RedisAdapter, RedisAdapterAsync
+from splitio.models.impressions import Impression
+from splitio.models.telemetry import MethodExceptionsAndLatencies
+from splitio.optional.loaders import asyncio
+
+class StandardRecorderTests(object):
+ """StandardRecorderTests test cases."""
+
+ def test_standard_recorder(self, mocker):
+ impressions = [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None)
+ ]
+ impmanager = mocker.Mock(spec=ImpressionsManager)
+ impmanager.process_impressions.return_value = impressions, 0, [
+ (Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None), None),
+ (Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None), None)], \
+ [{"f": "f1", "ks": ["l1"]}, {"f": "f2", "ks": ["l1"]}], [('k1', 'f1'), ('k1', 'f2')]
+ event = mocker.Mock(spec=EventStorage)
+ impression = mocker.Mock(spec=ImpressionStorage)
+ telemetry_storage = mocker.Mock(spec=InMemoryTelemetryStorage)
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ listener = mocker.Mock(spec=ImpressionListenerWrapper)
+
+ def record_latency(*args, **kwargs):
+ self.passed_args = args
+
+ telemetry_storage.record_latency.side_effect = record_latency
+
+ imp_counter = mocker.Mock(spec=ImpressionsCounter())
+ unique_keys_tracker = mocker.Mock(spec=UniqueKeysTracker())
+ recorder = StandardRecorder(impmanager, event, impression, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer(),
+ listener=listener, unique_keys_tracker=unique_keys_tracker, imp_counter=imp_counter)
+ recorder.record_treatment_stats(impressions, 1, MethodExceptionsAndLatencies.TREATMENT, 'get_treatment')
+
+ assert recorder._impression_storage.put.mock_calls[0][1][0] == impressions
+ assert(self.passed_args[0] == MethodExceptionsAndLatencies.TREATMENT)
+ assert(self.passed_args[1] == 1)
+ assert listener.log_impression.mock_calls == [
+ mocker.call(Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None), None),
+ mocker.call(Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None), None)
+ ]
+ assert recorder._imp_counter.track.mock_calls == [mocker.call([{"f": "f1", "ks": ["l1"]}, {"f": "f2", "ks": ["l1"]}])]
+ assert recorder._unique_keys_tracker.track.mock_calls == [mocker.call('k1', 'f1'), mocker.call('k1', 'f2')]
+
+ def test_pipelined_recorder(self, mocker):
+ impressions = [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None)
+ ]
+ redis = mocker.Mock(spec=RedisAdapter)
+ def execute():
+ return []
+ redis().execute = execute
+
+ impmanager = mocker.Mock(spec=ImpressionsManager)
+ impmanager.process_impressions.return_value = impressions, 0, [
+ (Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None), None),
+ (Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None), None)], \
+ [{"f": "f1", "ks": ["l1"]}, {"f": "f2", "ks": ["l1"]}], [('k1', 'f1'), ('k1', 'f2')]
+ event = mocker.Mock(spec=RedisEventsStorage)
+ impression = mocker.Mock(spec=RedisImpressionsStorage)
+ listener = mocker.Mock(spec=ImpressionListenerWrapper)
+ imp_counter = mocker.Mock(spec=ImpressionsCounter())
+ unique_keys_tracker = mocker.Mock(spec=UniqueKeysTracker())
+ recorder = PipelinedRecorder(redis, impmanager, event, impression, mocker.Mock(),
+ listener=listener, unique_keys_tracker=unique_keys_tracker, imp_counter=imp_counter)
+ recorder.record_treatment_stats(impressions, 1, MethodExceptionsAndLatencies.TREATMENT, 'get_treatment')
+
+ assert recorder._impression_storage.add_impressions_to_pipe.mock_calls[0][1][0] == impressions
+ assert recorder._telemetry_redis_storage.add_latency_to_pipe.mock_calls[0][1][0] == MethodExceptionsAndLatencies.TREATMENT
+ assert recorder._telemetry_redis_storage.add_latency_to_pipe.mock_calls[0][1][1] == 1
+ assert listener.log_impression.mock_calls == [
+ mocker.call(Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None), None),
+ mocker.call(Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None), None)
+ ]
+ assert recorder._imp_counter.track.mock_calls == [mocker.call([{"f": "f1", "ks": ["l1"]}, {"f": "f2", "ks": ["l1"]}])]
+ assert recorder._unique_keys_tracker.track.mock_calls == [mocker.call('k1', 'f1'), mocker.call('k1', 'f2')]
+
+ def test_sampled_recorder(self, mocker):
+ impressions = [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None)
+ ]
+ redis = mocker.Mock(spec=RedisAdapter)
+ impmanager = mocker.Mock(spec=ImpressionsManager)
+ impmanager.process_impressions.return_value = impressions, 0, [
+ (Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None), None),
+ (Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None), None)
+ ], [], []
+
+ event = mocker.Mock(spec=EventStorage)
+ impression = mocker.Mock(spec=ImpressionStorage)
+ imp_counter = mocker.Mock(spec=ImpressionsCounter())
+ unique_keys_tracker = mocker.Mock(spec=UniqueKeysTracker())
+ recorder = PipelinedRecorder(redis, impmanager, event, impression, 0.5, mocker.Mock(), imp_counter=imp_counter, unique_keys_tracker=unique_keys_tracker)
+
+ def put(x):
+ return
+ recorder._impression_storage.put.side_effect = put
+
+ for _ in range(100):
+ recorder.record_treatment_stats(impressions, 1, 'some', 'get_treatment')
+ print(recorder._impression_storage.put.call_count)
+ assert recorder._impression_storage.put.call_count < 80
+ assert recorder._imp_counter.track.mock_calls == []
+ assert recorder._unique_keys_tracker.track.mock_calls == []
+
+class StandardRecorderAsyncTests(object):
+ """StandardRecorder async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_standard_recorder(self, mocker):
+ impressions = [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None)
+ ]
+ impmanager = mocker.Mock(spec=ImpressionsManager)
+ impmanager.process_impressions.return_value = impressions, 0, [
+ (Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None), {'att1': 'val'}),
+ (Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None), None)], \
+ [{"f": "f1", "ks": ["l1"]}, {"f": "f2", "ks": ["l1"]}], [('k1', 'f1'), ('k1', 'f2')]
+ event = mocker.Mock(spec=InMemoryEventStorageAsync)
+ impression = mocker.Mock(spec=InMemoryImpressionStorageAsync)
+ telemetry_storage = mocker.Mock(spec=InMemoryTelemetryStorage)
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ listener = mocker.Mock(spec=ImpressionListenerWrapperAsync)
+ self.listener_impressions = []
+ self.listener_attributes = []
+ async def log_impression(impressions, attributes):
+ self.listener_impressions.append(impressions)
+ self.listener_attributes.append(attributes)
+ listener.log_impression = log_impression
+
+ async def record_latency(*args, **kwargs):
+ self.passed_args = args
+ telemetry_storage.record_latency.side_effect = record_latency
+
+ imp_counter = mocker.Mock(spec=ImpressionsCounter())
+ unique_keys_tracker = mocker.Mock(spec=UniqueKeysTrackerAsync())
+ recorder = StandardRecorderAsync(impmanager, event, impression, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer(),
+ listener=listener, unique_keys_tracker=unique_keys_tracker, imp_counter=imp_counter)
+ self.impressions = []
+ async def put(x):
+ self.impressions = x
+ return
+ recorder._impression_storage.put = put
+
+ self.count = []
+ def track(x):
+ self.count = x
+ recorder._imp_counter.track = track
+
+ self.unique_keys = []
+ async def track2(x, y):
+ self.unique_keys.append((x, y))
+ recorder._unique_keys_tracker.track = track2
+
+ await recorder.record_treatment_stats(impressions, 1, MethodExceptionsAndLatencies.TREATMENT, 'get_treatment')
+ await asyncio.sleep(1)
+
+ assert self.impressions == impressions
+ assert(self.passed_args[0] == MethodExceptionsAndLatencies.TREATMENT)
+ assert(self.passed_args[1] == 1)
+ assert self.listener_impressions == [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None),
+ ]
+ assert self.listener_attributes == [{'att1': 'val'}, None]
+ assert self.count == [{"f": "f1", "ks": ["l1"]}, {"f": "f2", "ks": ["l1"]}]
+ assert self.unique_keys == [('k1', 'f1'), ('k1', 'f2')]
+
+ @pytest.mark.asyncio
+ async def test_pipelined_recorder(self, mocker):
+ impressions = [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None)
+ ]
+ redis = mocker.Mock(spec=RedisAdapterAsync)
+ async def execute():
+ return []
+ redis().execute = execute
+ impmanager = mocker.Mock(spec=ImpressionsManager)
+ impmanager.process_impressions.return_value = impressions, 0, [
+ (Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None), {'att1': 'val'}),
+ (Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None), None)], \
+ [{"f": "f1", "ks": ["l1"]}, {"f": "f2", "ks": ["l1"]}], [('k1', 'f1'), ('k1', 'f2')]
+ event = mocker.Mock(spec=RedisEventsStorageAsync)
+ impression = mocker.Mock(spec=RedisImpressionsStorageAsync)
+ listener = mocker.Mock(spec=ImpressionListenerWrapperAsync)
+ self.listener_impressions = []
+ self.listener_attributes = []
+ async def log_impression(impressions, attributes):
+ self.listener_impressions.append(impressions)
+ self.listener_attributes.append(attributes)
+ listener.log_impression = log_impression
+
+ imp_counter = mocker.Mock(spec=ImpressionsCounter())
+ unique_keys_tracker = mocker.Mock(spec=UniqueKeysTrackerAsync())
+ recorder = PipelinedRecorderAsync(redis, impmanager, event, impression, mocker.Mock(),
+ listener=listener, unique_keys_tracker=unique_keys_tracker, imp_counter=imp_counter)
+ self.count = []
+ def track(x):
+ self.count = x
+ recorder._imp_counter.track = track
+
+ self.unique_keys = []
+ async def track2(x, y):
+ self.unique_keys.append((x, y))
+ recorder._unique_keys_tracker.track = track2
+
+ await recorder.record_treatment_stats(impressions, 1, MethodExceptionsAndLatencies.TREATMENT, 'get_treatment')
+ await asyncio.sleep(.2)
+ assert recorder._impression_storage.add_impressions_to_pipe.mock_calls[0][1][0] == impressions
+ assert recorder._telemetry_redis_storage.add_latency_to_pipe.mock_calls[0][1][0] == MethodExceptionsAndLatencies.TREATMENT
+ assert recorder._telemetry_redis_storage.add_latency_to_pipe.mock_calls[0][1][1] == 1
+ assert self.listener_impressions == [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None),
+ ]
+ assert self.listener_attributes == [{'att1': 'val'}, None]
+ assert self.count == [{"f": "f1", "ks": ["l1"]}, {"f": "f2", "ks": ["l1"]}]
+ assert self.unique_keys == [('k1', 'f1'), ('k1', 'f2')]
+
+ @pytest.mark.asyncio
+ async def test_sampled_recorder(self, mocker):
+ impressions = [
+ Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None),
+ Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None)
+ ]
+ redis = mocker.Mock(spec=RedisAdapterAsync)
+ impmanager = mocker.Mock(spec=ImpressionsManager)
+ impmanager.process_impressions.return_value = impressions, 0, [
+ (Impression('k1', 'f1', 'on', 'l1', 123, None, None, None, None), None),
+ (Impression('k1', 'f2', 'on', 'l1', 123, None, None, None, None), None)
+ ], [], []
+ event = mocker.Mock(spec=RedisEventsStorageAsync)
+ impression = mocker.Mock(spec=RedisImpressionsStorageAsync)
+ imp_counter = mocker.Mock(spec=ImpressionsCounter())
+ unique_keys_tracker = mocker.Mock(spec=UniqueKeysTrackerAsync())
+ recorder = PipelinedRecorderAsync(redis, impmanager, event, impression, 0.5, mocker.Mock(),
+ unique_keys_tracker=unique_keys_tracker, imp_counter=imp_counter)
+ self.count = []
+ async def track(x):
+ self.count = x
+ recorder._imp_counter.track = track
+
+ self.unique_keys = []
+ async def track2(x, y):
+ self.unique_keys.append((x, y))
+ recorder._unique_keys_tracker.track = track2
+
+ async def put(x):
+ return
+
+ recorder._impression_storage.put.side_effect = put
+
+ for _ in range(100):
+ await recorder.record_treatment_stats(impressions, 1, 'some', 'get_treatment')
+ print(recorder._impression_storage.put.call_count)
+ assert recorder._impression_storage.put.call_count < 80
+ assert self.count == []
+ assert self.unique_keys == []
diff --git a/tests/storage/adapters/test_cache_trait.py b/tests/storage/adapters/test_cache_trait.py
index 15f3b13a..5643cb32 100644
--- a/tests/storage/adapters/test_cache_trait.py
+++ b/tests/storage/adapters/test_cache_trait.py
@@ -6,6 +6,7 @@
import pytest
from splitio.storage.adapters import cache_trait
+from splitio.optional.loaders import asyncio
class CacheTraitTests(object):
"""Cache trait test cases."""
@@ -130,3 +131,11 @@ def test_decorate(self, mocker):
assert cache_trait.decorate(key_func, 0, 10)(user_func) is user_func
assert cache_trait.decorate(key_func, 10, 0)(user_func) is user_func
assert cache_trait.decorate(key_func, 0, 0)(user_func) is user_func
+
+ @pytest.mark.asyncio
+ async def test_async_add_and_get_key(self, mocker):
+ cache = cache_trait.LocalMemoryCacheAsync(None, None, 1, 1)
+ await cache.add_key('split', {'split_name': 'split'})
+ assert await cache.get_key('split') == {'split_name': 'split'}
+ await asyncio.sleep(1)
+ assert await cache.get_key('split') == None
diff --git a/tests/storage/adapters/test_redis_adapter.py b/tests/storage/adapters/test_redis_adapter.py
index a49b3173..9888c853 100644
--- a/tests/storage/adapters/test_redis_adapter.py
+++ b/tests/storage/adapters/test_redis_adapter.py
@@ -1,10 +1,13 @@
"""Redis storage adapter test module."""
import pytest
+from redis.asyncio.client import Redis as aioredis
from splitio.storage.adapters import redis
-from redis import StrictRedis
+from splitio.storage.adapters.redis import _build_default_client_async, _build_sentinel_client_async
+from redis import StrictRedis, Redis
from redis.sentinel import Sentinel
+
class RedisStorageAdapterTests(object):
"""Redis storage adapter test cases."""
@@ -54,6 +57,12 @@ def test_forwarding(self, mocker):
adapter.incr('key1')
assert redis_mock.incr.mock_calls[0] == mocker.call('some_prefix.key1', 1)
+ adapter.hincrby('key1', 'name1')
+ assert redis_mock.hincrby.mock_calls[0] == mocker.call('some_prefix.key1', 'name1', 1)
+
+ adapter.hincrby('key1', 'name1', 5)
+ assert redis_mock.hincrby.mock_calls[1] == mocker.call('some_prefix.key1', 'name1', 5)
+
adapter.getset('key1', 'new_value')
assert redis_mock.getset.mock_calls[0] == mocker.call('some_prefix.key1', 'new_value')
@@ -80,6 +89,7 @@ def test_adapter_building(self, mocker):
'redisHost': 'some_host',
'redisPort': 1234,
'redisDb': 0,
+ 'redisUsername': 'redis_user',
'redisPassword': 'some_password',
'redisSocketTimeout': 123,
'redisSocketConnectTimeout': 456,
@@ -89,8 +99,6 @@ def test_adapter_building(self, mocker):
'redisUnixSocketPath': '/tmp/socket',
'redisEncoding': 'utf-8',
'redisEncodingErrors': 'strict',
- 'redisCharset': 'ascii',
- 'redisErrors': 'abc',
'redisDecodeResponses': True,
'redisRetryOnTimeout': True,
'redisSsl': True,
@@ -107,6 +115,7 @@ def test_adapter_building(self, mocker):
host='some_host',
port=1234,
db=0,
+ username='redis_user',
password='some_password',
socket_timeout=123,
socket_connect_timeout=456,
@@ -116,8 +125,6 @@ def test_adapter_building(self, mocker):
unix_socket_path='/tmp/socket',
encoding='utf-8',
encoding_errors='strict',
- charset='ascii',
- errors='abc',
decode_responses=True,
retry_on_timeout=True,
ssl=True,
@@ -132,6 +139,7 @@ def test_adapter_building(self, mocker):
'redisSentinels': [('123.123.123.123', 1), ('456.456.456.456', 2), ('789.789.789.789', 3)],
'redisMasterService': 'some_master',
'redisDb': 0,
+ 'redisUsername': 'redis_user',
'redisPassword': 'some_password',
'redisSocketTimeout': 123,
'redisSocketConnectTimeout': 456,
@@ -141,8 +149,6 @@ def test_adapter_building(self, mocker):
'redisUnixSocketPath': '/tmp/socket',
'redisEncoding': 'utf-8',
'redisEncodingErrors': 'strict',
- 'redisCharset': 'ascii',
- 'redisErrors': 'abc',
'redisDecodeResponses': True,
'redisRetryOnTimeout': True,
'redisSsl': False,
@@ -158,6 +164,7 @@ def test_adapter_building(self, mocker):
assert sentinel_mock.mock_calls[0] == mocker.call(
[('123.123.123.123', 1), ('456.456.456.456', 2), ('789.789.789.789', 3)],
db=0,
+ username='redis_user',
password='some_password',
socket_timeout=123,
socket_connect_timeout=456,
@@ -178,3 +185,446 @@ def test_sentinel_ssl_fails(self):
'redisSentinels': ['a', 'b'],
'redisSsl': True,
})
+
+
+class RedisStorageAdapterAsyncTests(object):
+ """Redis storage adapter test cases."""
+
+ @pytest.mark.asyncio
+ async def test_forwarding(self, mocker):
+ """Test that all redis functions forward prefix appropriately."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+
+ self.arg = None
+ async def keys(sel, args):
+ self.arg = args
+ return ['some_prefix.key1', 'some_prefix.key2']
+ mocker.patch('redis.asyncio.client.Redis.keys', new=keys)
+ await adapter.keys('*')
+ assert self.arg == 'some_prefix.*'
+
+ self.key = None
+ self.value = None
+ async def set(sel, key, value):
+ self.key = key
+ self.value = value
+ mocker.patch('redis.asyncio.client.Redis.set', new=set)
+ await adapter.set('key1', 'value1')
+ assert self.key == 'some_prefix.key1'
+ assert self.value == 'value1'
+
+ self.key = None
+ async def get(sel, key):
+ self.key = key
+ return 'value1'
+ mocker.patch('redis.asyncio.client.Redis.get', new=get)
+ await adapter.get('some_key')
+ assert self.key == 'some_prefix.some_key'
+
+ self.key = None
+ self.value = None
+ self.exp = None
+ async def setex(sel, key, exp, value):
+ self.key = key
+ self.value = value
+ self.exp = exp
+ mocker.patch('redis.asyncio.client.Redis.setex', new=setex)
+ await adapter.setex('some_key', 123, 'some_value')
+ assert self.key == 'some_prefix.some_key'
+ assert self.exp == 123
+ assert self.value == 'some_value'
+
+ self.key = None
+ async def delete(sel, key):
+ self.key = key
+ mocker.patch('redis.asyncio.client.Redis.delete', new=delete)
+ await adapter.delete('some_key')
+ assert self.key == 'some_prefix.some_key'
+
+ self.keys = None
+ async def mget(sel, keys):
+ self.keys = keys
+ return ['value1', 'value2', 'value3']
+ mocker.patch('redis.asyncio.client.Redis.mget', new=mget)
+ await adapter.mget(['key1', 'key2', 'key3'])
+ assert self.keys == ['some_prefix.key1', 'some_prefix.key2', 'some_prefix.key3']
+
+ self.key = None
+ self.value = None
+ self.value2 = None
+ async def sadd(sel, key, value, value2):
+ self.key = key
+ self.value = value
+ self.value2 = value2
+ mocker.patch('redis.asyncio.client.Redis.sadd', new=sadd)
+ await adapter.sadd('s1', 'value1', 'value2')
+ assert self.key == 'some_prefix.s1'
+ assert self.value == 'value1'
+ assert self.value2 == 'value2'
+
+ self.key = None
+ self.value = None
+ self.value2 = None
+ async def srem(sel, key, value, value2):
+ self.key = key
+ self.value = value
+ self.value2 = value2
+ mocker.patch('redis.asyncio.client.Redis.srem', new=srem)
+ await adapter.srem('s1', 'value1', 'value2')
+ assert self.key == 'some_prefix.s1'
+ assert self.value == 'value1'
+ assert self.value2 == 'value2'
+
+ self.key = None
+ self.value = None
+ async def sismember(sel, key, value):
+ self.key = key
+ self.value = value
+ mocker.patch('redis.asyncio.client.Redis.sismember', new=sismember)
+ await adapter.sismember('s1', 'value1')
+ assert self.key == 'some_prefix.s1'
+ assert self.value == 'value1'
+
+ self.key = None
+ self.key2 = None
+ self.key3 = None
+ self.script = None
+ self.value = None
+ async def eval(sel, script, value, key, key2, key3):
+ self.key = key
+ self.key2 = key2
+ self.key3 = key3
+ self.script = script
+ self.value = value
+ mocker.patch('redis.asyncio.client.Redis.eval', new=eval)
+ await adapter.eval('script', 3, 'key1', 'key2', 'key3')
+ assert self.script == 'script'
+ assert self.value == 3
+ assert self.key == 'some_prefix.key1'
+ assert self.key2 == 'some_prefix.key2'
+ assert self.key3 == 'some_prefix.key3'
+
+ self.key = None
+ self.value = None
+ self.name = None
+ async def hset(sel, key, name, value):
+ self.key = key
+ self.value = value
+ self.name = name
+ mocker.patch('redis.asyncio.client.Redis.hset', new=hset)
+ await adapter.hset('key1', 'name', 'value')
+ assert self.key == 'some_prefix.key1'
+ assert self.name == 'name'
+ assert self.value == 'value'
+
+ self.key = None
+ self.name = None
+ async def hget(sel, key, name):
+ self.key = key
+ self.name = name
+ mocker.patch('redis.asyncio.client.Redis.hget', new=hget)
+ await adapter.hget('key1', 'name')
+ assert self.key == 'some_prefix.key1'
+ assert self.name == 'name'
+
+ self.key = None
+ self.value = None
+ async def incr(sel, key, value):
+ self.key = key
+ self.value = value
+ mocker.patch('redis.asyncio.client.Redis.incr', new=incr)
+ await adapter.incr('key1')
+ assert self.key == 'some_prefix.key1'
+ assert self.value == 1
+
+ self.key = None
+ self.value = None
+ self.name = None
+ async def hincrby(sel, key, name, value):
+ self.key = key
+ self.value = value
+ self.name = name
+ mocker.patch('redis.asyncio.client.Redis.hincrby', new=hincrby)
+ await adapter.hincrby('key1', 'name1')
+ assert self.key == 'some_prefix.key1'
+ assert self.name == 'name1'
+ assert self.value == 1
+
+ await adapter.hincrby('key1', 'name1', 5)
+ assert self.key == 'some_prefix.key1'
+ assert self.name == 'name1'
+ assert self.value == 5
+
+ self.key = None
+ self.value = None
+ async def getset(sel, key, value):
+ self.key = key
+ self.value = value
+ mocker.patch('redis.asyncio.client.Redis.getset', new=getset)
+ await adapter.getset('key1', 'new_value')
+ assert self.key == 'some_prefix.key1'
+ assert self.value == 'new_value'
+
+ self.key = None
+ self.value = None
+ self.value2 = None
+ async def rpush(sel, key, value, value2):
+ self.key = key
+ self.value = value
+ self.value2 = value2
+ mocker.patch('redis.asyncio.client.Redis.rpush', new=rpush)
+ await adapter.rpush('key1', 'value1', 'value2')
+ assert self.key == 'some_prefix.key1'
+ assert self.value == 'value1'
+ assert self.value2 == 'value2'
+
+ self.key = None
+ self.exp = None
+ async def expire(sel, key, exp):
+ self.key = key
+ self.exp = exp
+ mocker.patch('redis.asyncio.client.Redis.expire', new=expire)
+ await adapter.expire('key1', 10)
+ assert self.key == 'some_prefix.key1'
+ assert self.exp == 10
+
+ self.key = None
+ async def rpop(sel, key):
+ self.key = key
+ mocker.patch('redis.asyncio.client.Redis.rpop', new=rpop)
+ await adapter.rpop('key1')
+ assert self.key == 'some_prefix.key1'
+
+ self.key = None
+ async def ttl(sel, key):
+ self.key = key
+ mocker.patch('redis.asyncio.client.Redis.ttl', new=ttl)
+ await adapter.ttl('key1')
+ assert self.key == 'some_prefix.key1'
+
+ @pytest.mark.asyncio
+ async def test_adapter_building(self, mocker):
+ """Test buildin different types of client according to parameters received."""
+
+ config = {
+ 'redisHost': 'some_host',
+ 'redisPort': 1234,
+ 'redisDb': 0,
+ 'redisPassword': 'some_password',
+ 'redisSocketTimeout': 123,
+ 'redisSocketKeepalive': 789,
+ 'redisSocketKeepaliveOptions': 10,
+ 'redisUnixSocketPath': '/tmp/socket',
+ 'redisEncoding': 'utf-8',
+ 'redisEncodingErrors': 'strict',
+ 'redisDecodeResponses': True,
+ 'redisRetryOnTimeout': True,
+ 'redisSsl': True,
+ 'redisSslKeyfile': '/ssl.cert',
+ 'redisSslCertfile': '/ssl2.cert',
+ 'redisSslCertReqs': 'abc',
+ 'redisSslCaCerts': 'def',
+ 'redisMaxConnections': 5,
+ 'redisPrefix': 'some_prefix'
+ }
+
+ def redis_init(se, connection_pool,
+ socket_connect_timeout,
+ socket_keepalive,
+ socket_keepalive_options,
+ unix_socket_path,
+ encoding_errors,
+ retry_on_timeout,
+ ssl,
+ ssl_keyfile,
+ ssl_certfile,
+ ssl_cert_reqs,
+ ssl_ca_certs):
+ self.connection_pool=connection_pool
+ self.socket_connect_timeout=socket_connect_timeout
+ self.socket_keepalive=socket_keepalive
+ self.socket_keepalive_options=socket_keepalive_options
+ self.unix_socket_path=unix_socket_path
+ self.encoding_errors=encoding_errors
+ self.retry_on_timeout=retry_on_timeout
+ self.ssl=ssl
+ self.ssl_keyfile=ssl_keyfile
+ self.ssl_certfile=ssl_certfile
+ self.ssl_cert_reqs=ssl_cert_reqs
+ self.ssl_ca_certs=ssl_ca_certs
+ mocker.patch('redis.asyncio.client.Redis.__init__', new=redis_init)
+
+ redis_mock = await _build_default_client_async(config)
+
+ assert self.connection_pool.connection_kwargs['host'] == 'some_host'
+ assert self.connection_pool.connection_kwargs['port'] == 1234
+ assert self.connection_pool.connection_kwargs['db'] == 0
+ assert self.connection_pool.connection_kwargs['password'] == 'some_password'
+ assert self.connection_pool.connection_kwargs['encoding'] == 'utf-8'
+ assert self.connection_pool.connection_kwargs['decode_responses'] == True
+
+ assert self.socket_keepalive == 789
+ assert self.socket_keepalive_options == 10
+ assert self.unix_socket_path == '/tmp/socket'
+ assert self.encoding_errors == 'strict'
+ assert self.retry_on_timeout == True
+ assert self.ssl == True
+ assert self.ssl_keyfile == '/ssl.cert'
+ assert self.ssl_certfile == '/ssl2.cert'
+ assert self.ssl_cert_reqs == 'abc'
+ assert self.ssl_ca_certs == 'def'
+
+ def create_sentinel(se,
+ sentinels,
+ db,
+ password,
+ encoding,
+ max_connections,
+ encoding_errors,
+ decode_responses,
+ connection_pool,
+ socket_connect_timeout):
+ self.sentinels=sentinels
+ self.db=db
+ self.password=password
+ self.encoding=encoding
+ self.max_connections=max_connections
+ self.encoding_errors=encoding_errors,
+ self.decode_responses=decode_responses,
+ self.connection_pool=connection_pool,
+ self.socket_connect_timeout=socket_connect_timeout
+ mocker.patch('redis.asyncio.sentinel.Sentinel.__init__', new=create_sentinel)
+
+ def master_for(se,
+ master_service,
+ socket_timeout,
+ socket_keepalive,
+ socket_keepalive_options,
+ encoding_errors,
+ retry_on_timeout,
+ ssl):
+ self.master_service = master_service,
+ self.socket_timeout = socket_timeout,
+ self.socket_keepalive = socket_keepalive,
+ self.socket_keepalive_options = socket_keepalive_options,
+ self.encoding_errors = encoding_errors,
+ self.retry_on_timeout = retry_on_timeout,
+ self.ssl = ssl
+ mocker.patch('redis.asyncio.sentinel.Sentinel.master_for', new=master_for)
+
+ config = {
+ 'redisSentinels': [('123.123.123.123', 1), ('456.456.456.456', 2), ('789.789.789.789', 3)],
+ 'redisMasterService': 'some_master',
+ 'redisDb': 0,
+ 'redisPassword': 'some_password',
+ 'redisSocketTimeout': 123,
+ 'redisSocketConnectTimeout': 456,
+ 'redisSocketKeepalive': 789,
+ 'redisSocketKeepaliveOptions': 10,
+ 'redisConnectionPool': 20,
+ 'redisUnixSocketPath': '/tmp/socket',
+ 'redisEncoding': 'utf-8',
+ 'redisEncodingErrors': 'strict',
+ 'redisDecodeResponses': True,
+ 'redisRetryOnTimeout': True,
+ 'redisSsl': False,
+ 'redisMaxConnections': 5,
+ 'redisPrefix': 'some_prefix'
+ }
+ await _build_sentinel_client_async(config)
+ assert self.sentinels == [('123.123.123.123', 1), ('456.456.456.456', 2), ('789.789.789.789', 3)]
+ assert self.db == 0
+ assert self.password == 'some_password'
+ assert self.encoding == 'utf-8'
+ assert self.max_connections == 5
+ assert self.ssl == False
+ assert self.master_service == ('some_master',)
+ assert self.socket_timeout == (123,)
+ assert self.socket_keepalive == (789,)
+ assert self.socket_keepalive_options == (10,)
+ assert self.encoding_errors == ('strict',)
+ assert self.retry_on_timeout == (True,)
+
+
+class RedisPipelineAdapterTests(object):
+ """Redis pipelined adapter test cases."""
+
+ def test_forwarding(self, mocker):
+ """Test that all redis functions forward prefix appropriately."""
+ redis_mock = mocker.Mock(StrictRedis)
+ redis_mock_2 = mocker.Mock(Redis)
+ redis_mock.pipeline.return_value = redis_mock_2
+ prefix_helper = redis.PrefixHelper('some_prefix')
+ adapter = redis.RedisPipelineAdapter(redis_mock, prefix_helper)
+
+ adapter.rpush('key1', 'value1', 'value2')
+ assert redis_mock_2.rpush.mock_calls[0] == mocker.call('some_prefix.key1', 'value1', 'value2')
+
+ adapter.incr('key1')
+ assert redis_mock_2.incr.mock_calls[0] == mocker.call('some_prefix.key1', 1)
+
+ adapter.hincrby('key1', 'name1')
+ assert redis_mock_2.hincrby.mock_calls[0] == mocker.call('some_prefix.key1', 'name1', 1)
+
+ adapter.hincrby('key1', 'name1', 5)
+ assert redis_mock_2.hincrby.mock_calls[1] == mocker.call('some_prefix.key1', 'name1', 5)
+
+
+class RedisPipelineAdapterAsyncTests(object):
+ """Redis pipelined adapter test cases."""
+
+ @pytest.mark.asyncio
+ async def test_forwarding(self, mocker):
+ """Test that all redis functions forward prefix appropriately."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ prefix_helper = redis.PrefixHelper('some_prefix')
+ adapter = redis.RedisPipelineAdapterAsync(redis_mock, prefix_helper)
+
+ self.key = None
+ self.value = None
+ self.value2 = None
+ def rpush(sel, key, value, value2):
+ self.key = key
+ self.value = value
+ self.value2 = value2
+ mocker.patch('redis.asyncio.client.Pipeline.rpush', new=rpush)
+ adapter.rpush('key1', 'value1', 'value2')
+ assert self.key == 'some_prefix.key1'
+ assert self.value == 'value1'
+ assert self.value2 == 'value2'
+
+ self.key = None
+ self.value = None
+ def incr(sel, key, value):
+ self.key = key
+ self.value = value
+ mocker.patch('redis.asyncio.client.Pipeline.incr', new=incr)
+ adapter.incr('key1')
+ assert self.key == 'some_prefix.key1'
+ assert self.value == 1
+
+ self.key = None
+ self.value = None
+ self.name = None
+ def hincrby(sel, key, name, value):
+ self.key = key
+ self.value = value
+ self.name = name
+ mocker.patch('redis.asyncio.client.Pipeline.hincrby', new=hincrby)
+ adapter.hincrby('key1', 'name1')
+ assert self.key == 'some_prefix.key1'
+ assert self.name == 'name1'
+ assert self.value == 1
+
+ adapter.hincrby('key1', 'name1', 5)
+ assert self.key == 'some_prefix.key1'
+ assert self.name == 'name1'
+ assert self.value == 5
+
+ self.called = False
+ async def execute(*_):
+ self.called = True
+ mocker.patch('redis.asyncio.client.Pipeline.execute', new=execute)
+ await adapter.execute()
+ assert self.called
diff --git a/tests/storage/test_flag_sets.py b/tests/storage/test_flag_sets.py
new file mode 100644
index 00000000..995117cb
--- /dev/null
+++ b/tests/storage/test_flag_sets.py
@@ -0,0 +1,65 @@
+import pytest
+
+from splitio.storage import FlagSetsFilter
+from splitio.storage.inmemmory import FlagSets
+
+class FlagSetsFilterTests(object):
+ """Flag sets filter storage tests."""
+ def test_without_initial_set(self):
+ flag_set = FlagSets()
+ assert flag_set.sets_feature_flag_map == {}
+
+ flag_set._add_flag_set('set1')
+ assert flag_set.get_flag_set('set1') == set({})
+ assert flag_set.flag_set_exist('set1') == True
+ assert flag_set.flag_set_exist('set2') == False
+
+ flag_set.add_feature_flag_to_flag_set('set1', 'split1')
+ assert flag_set.get_flag_set('set1') == {'split1'}
+ flag_set.add_feature_flag_to_flag_set('set1', 'split2')
+ assert flag_set.get_flag_set('set1') == {'split1', 'split2'}
+ flag_set.remove_feature_flag_to_flag_set('set1', 'split1')
+ assert flag_set.get_flag_set('set1') == {'split2'}
+ flag_set._remove_flag_set('set2')
+ assert flag_set.sets_feature_flag_map == {'set1': set({'split2'})}
+ flag_set._remove_flag_set('set1')
+ assert flag_set.sets_feature_flag_map == {}
+ assert flag_set.flag_set_exist('set1') == False
+
+ def test_with_initial_set(self):
+ flag_set = FlagSets(['set1', 'set2'])
+ assert flag_set.sets_feature_flag_map == {'set1': set(), 'set2': set()}
+
+ flag_set._add_flag_set('set1')
+ assert flag_set.get_flag_set('set1') == set({})
+ assert flag_set.flag_set_exist('set1') == True
+ assert flag_set.flag_set_exist('set2') == True
+
+ flag_set.add_feature_flag_to_flag_set('set1', 'split1')
+ assert flag_set.get_flag_set('set1') == {'split1'}
+ flag_set.add_feature_flag_to_flag_set('set1', 'split2')
+ assert flag_set.get_flag_set('set1') == {'split1', 'split2'}
+ flag_set.remove_feature_flag_to_flag_set('set1', 'split1')
+ assert flag_set.get_flag_set('set1') == {'split2'}
+ flag_set._remove_flag_set('set2')
+ assert flag_set.sets_feature_flag_map == {'set1': set({'split2'})}
+ flag_set._remove_flag_set('set1')
+ assert flag_set.sets_feature_flag_map == {}
+ assert flag_set.flag_set_exist('set1') == False
+
+ def test_flag_set_filter(self):
+ flag_set_filter = FlagSetsFilter()
+ assert flag_set_filter.flag_sets == set()
+ assert not flag_set_filter.should_filter
+
+ flag_set_filter = FlagSetsFilter(['set1', 'set2'])
+ assert flag_set_filter.flag_sets == set({'set1', 'set2'})
+ assert flag_set_filter.should_filter
+ assert flag_set_filter.intersect(set({'set1', 'set2'}))
+ assert flag_set_filter.intersect(set({'set1', 'set2', 'set5'}))
+ assert not flag_set_filter.intersect(set({'set4'}))
+ assert not flag_set_filter.set_exist('set4')
+ assert flag_set_filter.set_exist('set1')
+
+ flag_set_filter = FlagSetsFilter(['set5', 'set2', 'set6', 'set1'])
+ assert flag_set_filter.sorted_flag_sets == ['set1', 'set2', 'set5', 'set6']
\ No newline at end of file
diff --git a/tests/storage/test_inmemory_storage.py b/tests/storage/test_inmemory_storage.py
index 595bc889..d46980aa 100644
--- a/tests/storage/test_inmemory_storage.py
+++ b/tests/storage/test_inmemory_storage.py
@@ -1,33 +1,92 @@
"""In-Memory storage test module."""
-#pylint: disable=no-self-use
+# pylint: disable=no-self-use
+import random
+import pytest
+import copy
+import queue
+import asyncio
+
from splitio.models.splits import Split
from splitio.models.segments import Segment
from splitio.models.impressions import Impression
from splitio.models.events import Event, EventWrapper
+from splitio.models.events import SdkInternalEvent
+import splitio.models.telemetry as ModelTelemetry
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.events.events_metadata import SdkEventType
+from splitio.storage.inmemmory import InMemorySplitStorage, InMemorySegmentStorage, InMemorySegmentStorageAsync, InMemorySplitStorageAsync, \
+ InMemoryImpressionStorage, InMemoryEventStorage, InMemoryTelemetryStorage, InMemoryImpressionStorageAsync, InMemoryEventStorageAsync, \
+ InMemoryTelemetryStorageAsync, FlagSets, InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync
+from splitio.models.rule_based_segments import RuleBasedSegment
+from splitio.models import rule_based_segments
+
+class FlagSetsFilterTests(object):
+ """Flag sets filter storage tests."""
+ def test_without_initial_set(self):
+ flag_set = FlagSets()
+ assert flag_set.sets_feature_flag_map == {}
+
+ flag_set._add_flag_set('set1')
+ assert flag_set.get_flag_set('set1') == set({})
+ assert flag_set.flag_set_exist('set1') == True
+ assert flag_set.flag_set_exist('set2') == False
+
+ flag_set.add_feature_flag_to_flag_set('set1', 'split1')
+ assert flag_set.get_flag_set('set1') == {'split1'}
+ flag_set.add_feature_flag_to_flag_set('set1', 'split2')
+ assert flag_set.get_flag_set('set1') == {'split1', 'split2'}
+ flag_set.remove_feature_flag_to_flag_set('set1', 'split1')
+ assert flag_set.get_flag_set('set1') == {'split2'}
+ flag_set._remove_flag_set('set2')
+ assert flag_set.sets_feature_flag_map == {'set1': set({'split2'})}
+ flag_set._remove_flag_set('set1')
+ assert flag_set.sets_feature_flag_map == {}
+ assert flag_set.flag_set_exist('set1') == False
-from splitio.storage.inmemmory import InMemorySplitStorage, InMemorySegmentStorage, \
- InMemoryImpressionStorage, InMemoryEventStorage, InMemoryTelemetryStorage
+ def test_with_initial_set(self):
+ flag_set = FlagSets(['set1', 'set2'])
+ assert flag_set.sets_feature_flag_map == {'set1': set(), 'set2': set()}
+ flag_set._add_flag_set('set1')
+ assert flag_set.get_flag_set('set1') == set({})
+ assert flag_set.flag_set_exist('set1') == True
+ assert flag_set.flag_set_exist('set2') == True
+
+ flag_set.add_feature_flag_to_flag_set('set1', 'split1')
+ assert flag_set.get_flag_set('set1') == {'split1'}
+ flag_set.add_feature_flag_to_flag_set('set1', 'split2')
+ assert flag_set.get_flag_set('set1') == {'split1', 'split2'}
+ flag_set.remove_feature_flag_to_flag_set('set1', 'split1')
+ assert flag_set.get_flag_set('set1') == {'split2'}
+ flag_set._remove_flag_set('set2')
+ assert flag_set.sets_feature_flag_map == {'set1': set({'split2'})}
+ flag_set._remove_flag_set('set1')
+ assert flag_set.sets_feature_flag_map == {}
+ assert flag_set.flag_set_exist('set1') == False
class InMemorySplitStorageTests(object):
"""In memory split storage test cases."""
def test_storing_retrieving_splits(self, mocker):
"""Test storing and retrieving splits works."""
- storage = InMemorySplitStorage()
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
split = mocker.Mock(spec=Split)
name_property = mocker.PropertyMock()
name_property.return_value = 'some_split'
type(split).name = name_property
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split).sets = sets_property
- storage.put(split)
+ storage.update([split], [], -1)
assert storage.get('some_split') == split
assert storage.get_split_names() == ['some_split']
assert storage.get_all_splits() == [split]
assert storage.get('nonexistant_split') is None
- storage.remove('some_split')
+ storage.update([], ['some_split'], -1)
assert storage.get('some_split') is None
def test_get_splits(self, mocker):
@@ -36,26 +95,34 @@ def test_get_splits(self, mocker):
name1_prop = mocker.PropertyMock()
name1_prop.return_value = 'split1'
type(split1).name = name1_prop
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+
split2 = mocker.Mock()
name2_prop = mocker.PropertyMock()
name2_prop.return_value = 'split2'
type(split2).name = name2_prop
+ type(split2).sets = sets_property
- storage = InMemorySplitStorage()
- storage.put(split1)
- storage.put(split2)
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+ storage.update([split1, split2], [], -1)
splits = storage.fetch_many(['split1', 'split2', 'split3'])
assert len(splits) == 3
assert splits['split1'].name == 'split1'
+ assert splits['split1'].sets == ['set_1']
assert splits['split2'].name == 'split2'
+ assert splits['split2'].sets == ['set_1']
assert 'split3' in splits
def test_store_get_changenumber(self):
"""Test that storing and retrieving change numbers works."""
- storage = InMemorySplitStorage()
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
assert storage.get_change_number() == -1
- storage.set_change_number(5)
+ storage.update([], [], 5)
assert storage.get_change_number() == 5
def test_get_split_names(self, mocker):
@@ -64,14 +131,19 @@ def test_get_split_names(self, mocker):
name1_prop = mocker.PropertyMock()
name1_prop.return_value = 'split1'
type(split1).name = name1_prop
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+
split2 = mocker.Mock()
name2_prop = mocker.PropertyMock()
name2_prop.return_value = 'split2'
type(split2).name = name2_prop
+ type(split2).sets = sets_property
- storage = InMemorySplitStorage()
- storage.put(split1)
- storage.put(split2)
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+ storage.update([split1, split2], [], -1)
assert set(storage.get_split_names()) == set(['split1', 'split2'])
@@ -81,14 +153,19 @@ def test_get_all_splits(self, mocker):
name1_prop = mocker.PropertyMock()
name1_prop.return_value = 'split1'
type(split1).name = name1_prop
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+
split2 = mocker.Mock()
name2_prop = mocker.PropertyMock()
name2_prop.return_value = 'split2'
type(split2).name = name2_prop
+ type(split2).sets = sets_property
- storage = InMemorySplitStorage()
- storage.put(split1)
- storage.put(split2)
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+ storage.update([split1, split2], [], -1)
all_splits = storage.get_all_splits()
assert next(s for s in all_splits if s.name == 'split1')
@@ -115,71 +192,559 @@ def test_is_valid_traffic_type(self, mocker):
type(split1).traffic_type_name = tt_user
type(split2).traffic_type_name = tt_account
type(split3).traffic_type_name = tt_user
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = []
+ type(split1).sets = sets_property
+ type(split2).sets = sets_property
+ type(split3).sets = sets_property
- storage = InMemorySplitStorage()
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
- storage.put(split1)
+ storage.update([split1], [], -1)
assert storage.is_valid_traffic_type('user') is True
assert storage.is_valid_traffic_type('account') is False
- storage.put(split2)
+ storage.update([split2], [], -1)
assert storage.is_valid_traffic_type('user') is True
assert storage.is_valid_traffic_type('account') is True
- storage.put(split3)
+ storage.update([split3], [], -1)
assert storage.is_valid_traffic_type('user') is True
assert storage.is_valid_traffic_type('account') is True
- storage.remove('split1')
+ storage.update([], ['split1'], -1)
assert storage.is_valid_traffic_type('user') is True
assert storage.is_valid_traffic_type('account') is True
- storage.remove('split2')
+ storage.update([], ['split2'], -1)
assert storage.is_valid_traffic_type('user') is True
assert storage.is_valid_traffic_type('account') is False
- storage.remove('split3')
+ storage.update([], ['split3'], -1)
assert storage.is_valid_traffic_type('user') is False
assert storage.is_valid_traffic_type('account') is False
def test_traffic_type_inc_dec_logic(self, mocker):
"""Test that adding/removing split, handles traffic types correctly."""
- storage = InMemorySplitStorage()
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
split1 = mocker.Mock()
name1_prop = mocker.PropertyMock()
name1_prop.return_value = 'split1'
type(split1).name = name1_prop
-
split2 = mocker.Mock()
name2_prop = mocker.PropertyMock()
name2_prop.return_value = 'split1'
type(split2).name = name2_prop
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = None
+ type(split1).sets = sets_property
+ type(split2).sets = sets_property
tt_user = mocker.PropertyMock()
tt_user.return_value = 'user'
-
tt_account = mocker.PropertyMock()
tt_account.return_value = 'account'
-
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+ type(split2).sets = sets_property
type(split1).traffic_type_name = tt_user
type(split2).traffic_type_name = tt_account
- storage.put(split1)
+ storage.update([split1], [], -1)
assert storage.is_valid_traffic_type('user') is True
assert storage.is_valid_traffic_type('account') is False
- storage.put(split2)
+ storage.update([split2], [], -1)
assert storage.is_valid_traffic_type('user') is False
assert storage.is_valid_traffic_type('account') is True
+ def test_kill_locally(self):
+ """Test kill local."""
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+
+ split = Split('some_split', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1)
+ storage.update([split], [], 1)
+
+ storage.kill_locally('test', 'default_treatment', 2)
+ assert storage.get('test') is None
+
+ storage.kill_locally('some_split', 'default_treatment', 0)
+ assert storage.get('some_split').change_number == 1
+ assert storage.get('some_split').killed is False
+ assert storage.get('some_split').default_treatment == 'some'
+
+ storage.kill_locally('some_split', 'default_treatment', 3)
+ assert storage.get('some_split').change_number == 3
+
+ def test_flag_sets_with_config_sets(self):
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue, ['set10', 'set02', 'set05'])
+ assert storage.flag_set_filter.flag_sets == {'set10', 'set02', 'set05'}
+ assert storage.flag_set_filter.should_filter
+
+ assert storage.flag_set.sets_feature_flag_map == {'set10': set(), 'set02': set(), 'set05': set()}
+
+ split1 = Split('split1', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set10', 'set02'])
+ split2 = Split('split2', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set05', 'set02'])
+ split3 = Split('split3', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set04', 'set05'])
+ storage.update([split1], [], 1)
+ assert storage.get_feature_flags_by_sets(['set10']) == ['split1']
+ assert storage.get_feature_flags_by_sets(['set02']) == ['split1']
+ assert storage.get_feature_flags_by_sets(['set02', 'set10']) == ['split1']
+ assert storage.is_flag_set_exist('set10')
+ assert storage.is_flag_set_exist('set02')
+ assert not storage.is_flag_set_exist('set03')
+
+ storage.update([split2], [], 1)
+ assert storage.get_feature_flags_by_sets(['set05']) == ['split2']
+ assert sorted(storage.get_feature_flags_by_sets(['set02', 'set05'])) == ['split1', 'split2']
+ assert storage.is_flag_set_exist('set05')
+
+ storage.update([], [split2.name], 1)
+ assert storage.is_flag_set_exist('set05')
+ assert storage.get_feature_flags_by_sets(['set02']) == ['split1']
+ assert storage.get_feature_flags_by_sets(['set05']) == []
+
+ split1 = Split('split1', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set02'])
+ storage.update([split1], [], 1)
+ assert storage.is_flag_set_exist('set10')
+ assert storage.get_feature_flags_by_sets(['set02']) == ['split1']
+
+ storage.update([], [split1.name], 1)
+ assert storage.get_feature_flags_by_sets(['set02']) == []
+ assert storage.flag_set.sets_feature_flag_map == {'set10': set(), 'set02': set(), 'set05': set()}
+
+ storage.update([split3], [], 1)
+ assert storage.get_feature_flags_by_sets(['set05']) == ['split3']
+ assert not storage.is_flag_set_exist('set04')
+
+ def test_flag_sets_withut_config_sets(self):
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+ assert storage.flag_set_filter.flag_sets == set({})
+ assert not storage.flag_set_filter.should_filter
+
+ assert storage.flag_set.sets_feature_flag_map == {}
+
+ split1 = Split('split1', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set10', 'set02'])
+ split2 = Split('split2', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set05', 'set02'])
+ split3 = Split('split3', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set04', 'set05'])
+ storage.update([split1], [], 1)
+ assert storage.get_feature_flags_by_sets(['set10']) == ['split1']
+ assert storage.get_feature_flags_by_sets(['set02']) == ['split1']
+ assert storage.is_flag_set_exist('set10')
+ assert storage.is_flag_set_exist('set02')
+ assert not storage.is_flag_set_exist('set03')
+
+ storage.update([split2], [], 1)
+ assert storage.get_feature_flags_by_sets(['set05']) == ['split2']
+ assert sorted(storage.get_feature_flags_by_sets(['set02', 'set05'])) == ['split1', 'split2']
+ assert storage.is_flag_set_exist('set05')
+
+ storage.update([], [split2.name], 1)
+ assert not storage.is_flag_set_exist('set05')
+ assert storage.get_feature_flags_by_sets(['set02']) == ['split1']
+
+ split1 = Split('split1', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set02'])
+ storage.update([split1], [], 1)
+ assert not storage.is_flag_set_exist('set10')
+ assert storage.get_feature_flags_by_sets(['set02']) == ['split1']
+ storage.update([], [split1.name], 1)
+ assert storage.get_feature_flags_by_sets(['set02']) == []
+ assert storage.flag_set.sets_feature_flag_map == {}
+
+ storage.update([split3], [], 1)
+ assert storage.get_feature_flags_by_sets(['set05']) == ['split3']
+ assert storage.get_feature_flags_by_sets(['set04', 'set05']) == ['split3']
+
+ def test_internal_event_notification(self, mocker):
+ """Test storing and retrieving splits works."""
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+
+ split = mocker.Mock(spec=Split)
+ name_property = mocker.PropertyMock()
+ name_property.return_value = 'some_split'
+ type(split).name = name_property
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split).sets = sets_property
+
+ storage.update([split], [], -1)
+ assert storage.get('some_split') == split
+ assert storage.get_split_names() == ['some_split']
+ assert storage.get_all_splits() == [split]
+ event = events_queue.get()
+ assert event.internal_event == SdkInternalEvent.FLAGS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.FLAG_UPDATE
+ assert event.metadata.get_names() == {'some_split'}
+
+ split2 = Split('another_split', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1)
+ storage.update([split2], ['some_split'], 1)
+ event = events_queue.get()
+ assert event.internal_event == SdkInternalEvent.FLAGS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.FLAG_UPDATE
+ assert event.metadata.get_names() == {'another_split', 'some_split'}
+
+ storage.kill_locally('another_split', 'default_treatment', 3)
+ event = events_queue.get()
+ assert event.internal_event == SdkInternalEvent.FLAG_KILLED_NOTIFICATION
+ assert event.metadata.get_type() == SdkEventType.FLAG_UPDATE
+ assert event.metadata.get_names() == {'another_split'}
+
+class InMemorySplitStorageAsyncTests(object):
+ """In memory split storage test cases."""
+
+ @pytest.mark.asyncio
+ async def test_storing_retrieving_splits(self, mocker):
+ """Test storing and retrieving splits works."""
+ storage = InMemorySplitStorageAsync(asyncio.Queue())
+
+ split = mocker.Mock(spec=Split)
+ name_property = mocker.PropertyMock()
+ name_property.return_value = 'some_split'
+ type(split).name = name_property
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split).sets = sets_property
+
+ await storage.update([split], [], -1)
+ assert await storage.get('some_split') == split
+ assert await storage.get_split_names() == ['some_split']
+ assert await storage.get_all_splits() == [split]
+ assert await storage.get('nonexistant_split') is None
+
+ await storage.update([], ['some_split'], -1)
+ assert await storage.get('some_split') is None
+
+ @pytest.mark.asyncio
+ async def test_get_splits(self, mocker):
+ """Test retrieving a list of passed splits."""
+ split1 = mocker.Mock()
+ name1_prop = mocker.PropertyMock()
+ name1_prop.return_value = 'split1'
+ type(split1).name = name1_prop
+ split2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'split2'
+ type(split2).name = name2_prop
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+ type(split2).sets = sets_property
+
+ storage = InMemorySplitStorageAsync(asyncio.Queue())
+ await storage.update([split1, split2], [], -1)
+
+ splits = await storage.fetch_many(['split1', 'split2', 'split3'])
+ assert len(splits) == 3
+ assert splits['split1'].name == 'split1'
+ assert splits['split2'].name == 'split2'
+ assert 'split3' in splits
+
+ @pytest.mark.asyncio
+ async def test_store_get_changenumber(self):
+ """Test that storing and retrieving change numbers works."""
+ storage = InMemorySplitStorageAsync(asyncio.Queue())
+ assert await storage.get_change_number() == -1
+ await storage.update([], [], 5)
+ assert await storage.get_change_number() == 5
+
+ @pytest.mark.asyncio
+ async def test_get_split_names(self, mocker):
+ """Test retrieving a list of all split names."""
+ split1 = mocker.Mock()
+ name1_prop = mocker.PropertyMock()
+ name1_prop.return_value = 'split1'
+ type(split1).name = name1_prop
+ split2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'split2'
+ type(split2).name = name2_prop
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+ type(split2).sets = sets_property
+
+ storage = InMemorySplitStorageAsync(asyncio.Queue())
+ await storage.update([split1, split2], [], -1)
+
+ assert set(await storage.get_split_names()) == set(['split1', 'split2'])
+
+ @pytest.mark.asyncio
+ async def test_get_all_splits(self, mocker):
+ """Test retrieving a list of all split names."""
+ split1 = mocker.Mock()
+ name1_prop = mocker.PropertyMock()
+ name1_prop.return_value = 'split1'
+ type(split1).name = name1_prop
+ split2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'split2'
+ type(split2).name = name2_prop
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+ type(split2).sets = sets_property
+
+ storage = InMemorySplitStorageAsync(asyncio.Queue())
+ await storage.update([split1, split2], [], -1)
+
+ all_splits = await storage.get_all_splits()
+ assert next(s for s in all_splits if s.name == 'split1')
+ assert next(s for s in all_splits if s.name == 'split2')
+
+ @pytest.mark.asyncio
+ async def test_is_valid_traffic_type(self, mocker):
+ """Test that traffic type validation works properly."""
+ split1 = mocker.Mock()
+ name1_prop = mocker.PropertyMock()
+ name1_prop.return_value = 'split1'
+ type(split1).name = name1_prop
+ split2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'split2'
+ type(split2).name = name2_prop
+ split3 = mocker.Mock()
+ tt_user = mocker.PropertyMock()
+ tt_user.return_value = 'user'
+ tt_account = mocker.PropertyMock()
+ tt_account.return_value = 'account'
+ name3_prop = mocker.PropertyMock()
+ name3_prop.return_value = 'split3'
+ type(split3).name = name3_prop
+ type(split1).traffic_type_name = tt_user
+ type(split2).traffic_type_name = tt_account
+ type(split3).traffic_type_name = tt_user
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+ type(split2).sets = sets_property
+ type(split3).sets = sets_property
+
+ storage = InMemorySplitStorageAsync(asyncio.Queue())
+
+ await storage.update([split1], [], -1)
+ assert await storage.is_valid_traffic_type('user') is True
+ assert await storage.is_valid_traffic_type('account') is False
+
+ await storage.update([split2], [], -1)
+ assert await storage.is_valid_traffic_type('user') is True
+ assert await storage.is_valid_traffic_type('account') is True
+
+ await storage.update([split3], [], -1)
+ assert await storage.is_valid_traffic_type('user') is True
+ assert await storage.is_valid_traffic_type('account') is True
+
+ await storage.update([], ['split1'], -1)
+ assert await storage.is_valid_traffic_type('user') is True
+ assert await storage.is_valid_traffic_type('account') is True
+
+ await storage.update([], ['split2'], -1)
+ assert await storage.is_valid_traffic_type('user') is True
+ assert await storage.is_valid_traffic_type('account') is False
+
+ await storage.update([], ['split3'], -1)
+ assert await storage.is_valid_traffic_type('user') is False
+ assert await storage.is_valid_traffic_type('account') is False
+
+ @pytest.mark.asyncio
+ async def test_traffic_type_inc_dec_logic(self, mocker):
+ """Test that adding/removing split, handles traffic types correctly."""
+ storage = InMemorySplitStorageAsync(asyncio.Queue())
+
+ split1 = mocker.Mock()
+ name1_prop = mocker.PropertyMock()
+ name1_prop.return_value = 'split1'
+ type(split1).name = name1_prop
+
+ split2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'split1'
+ type(split2).name = name2_prop
+ tt_user = mocker.PropertyMock()
+ tt_user.return_value = 'user'
+ tt_account = mocker.PropertyMock()
+ tt_account.return_value = 'account'
+ type(split1).traffic_type_name = tt_user
+ type(split2).traffic_type_name = tt_account
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+ type(split2).sets = sets_property
+
+ await storage.update([split1], [], -1)
+ assert await storage.is_valid_traffic_type('user') is True
+ assert await storage.is_valid_traffic_type('account') is False
+
+ await storage.update([split2], [], -1)
+ assert await storage.is_valid_traffic_type('user') is False
+ assert await storage.is_valid_traffic_type('account') is True
+
+ @pytest.mark.asyncio
+ async def test_kill_locally(self):
+ """Test kill local."""
+ storage = InMemorySplitStorageAsync(asyncio.Queue())
+
+ split = Split('some_split', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1)
+ await storage.update([split], [], 1)
+
+ await storage.kill_locally('test', 'default_treatment', 2)
+ assert await storage.get('test') is None
+
+ await storage.kill_locally('some_split', 'default_treatment', 0)
+ split = await storage.get('some_split')
+ assert split.change_number == 1
+ assert split.killed is False
+ assert split.default_treatment == 'some'
+
+ await storage.kill_locally('some_split', 'default_treatment', 3)
+ split = await storage.get('some_split')
+ assert split.change_number == 3
+
+ @pytest.mark.asyncio
+ async def test_flag_sets_with_config_sets(self):
+ storage = InMemorySplitStorageAsync(asyncio.Queue(), ['set10', 'set02', 'set05'])
+ assert storage.flag_set_filter.flag_sets == {'set10', 'set02', 'set05'}
+ assert storage.flag_set_filter.should_filter
+
+ assert storage.flag_set.sets_feature_flag_map == {'set10': set(), 'set02': set(), 'set05': set()}
+
+ split1 = Split('split1', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set10', 'set02'])
+ split2 = Split('split2', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set05', 'set02'])
+ split3 = Split('split3', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set04', 'set05'])
+ await storage.update([split1], [], 1)
+ assert await storage.get_feature_flags_by_sets(['set10']) == ['split1']
+ assert await storage.get_feature_flags_by_sets(['set02']) == ['split1']
+ assert await storage.get_feature_flags_by_sets(['set02', 'set10']) == ['split1']
+ assert await storage.is_flag_set_exist('set10')
+ assert await storage.is_flag_set_exist('set02')
+ assert not await storage.is_flag_set_exist('set03')
+
+ await storage.update([split2], [], 1)
+ assert await storage.get_feature_flags_by_sets(['set05']) == ['split2']
+ assert sorted(await storage.get_feature_flags_by_sets(['set02', 'set05'])) == ['split1', 'split2']
+ assert await storage.is_flag_set_exist('set05')
+
+ await storage.update([], [split2.name], 1)
+ assert await storage.is_flag_set_exist('set05')
+ assert await storage.get_feature_flags_by_sets(['set02']) == ['split1']
+ assert await storage.get_feature_flags_by_sets(['set05']) == []
+
+ split1 = Split('split1', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set02'])
+ await storage.update([split1], [], 1)
+ assert await storage.is_flag_set_exist('set10')
+ assert await storage.get_feature_flags_by_sets(['set02']) == ['split1']
+
+ await storage.update([], [split1.name], 1)
+ assert await storage.get_feature_flags_by_sets(['set02']) == []
+ assert storage.flag_set.sets_feature_flag_map == {'set10': set(), 'set02': set(), 'set05': set()}
+
+ await storage.update([split3], [], 1)
+ assert await storage.get_feature_flags_by_sets(['set05']) == ['split3']
+ assert not await storage.is_flag_set_exist('set04')
+
+ @pytest.mark.asyncio
+ async def test_flag_sets_withut_config_sets(self):
+ storage = InMemorySplitStorageAsync(asyncio.Queue())
+ assert storage.flag_set_filter.flag_sets == set({})
+ assert not storage.flag_set_filter.should_filter
+
+ assert storage.flag_set.sets_feature_flag_map == {}
+
+ split1 = Split('split1', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set10', 'set02'])
+ split2 = Split('split2', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set05', 'set02'])
+ split3 = Split('split3', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set04', 'set05'])
+ await storage.update([split1], [], 1)
+ assert await storage.get_feature_flags_by_sets(['set10']) == ['split1']
+ assert await storage.get_feature_flags_by_sets(['set02']) == ['split1']
+ assert await storage.is_flag_set_exist('set10')
+ assert await storage.is_flag_set_exist('set02')
+ assert not await storage.is_flag_set_exist('set03')
+
+ await storage.update([split2], [], 1)
+ assert await storage.get_feature_flags_by_sets(['set05']) == ['split2']
+ assert sorted(await storage.get_feature_flags_by_sets(['set02', 'set05'])) == ['split1', 'split2']
+ assert await storage.is_flag_set_exist('set05')
+
+ await storage.update([], [split2.name], 1)
+ assert not await storage.is_flag_set_exist('set05')
+ assert await storage.get_feature_flags_by_sets(['set02']) == ['split1']
+
+ split1 = Split('split1', 123456789, False, 'some', 'traffic_type',
+ 'ACTIVE', 1, sets=['set02'])
+ await storage.update([split1], [], 1)
+ assert not await storage.is_flag_set_exist('set10')
+ assert await storage.get_feature_flags_by_sets(['set02']) == ['split1']
+
+ await storage.update([], [split1.name], 1)
+ assert await storage.get_feature_flags_by_sets(['set02']) == []
+ assert storage.flag_set.sets_feature_flag_map == {}
+
+ await storage.update([split3], [], 1)
+ assert await storage.get_feature_flags_by_sets(['set05']) == ['split3']
+ assert await storage.get_feature_flags_by_sets(['set04', 'set05']) == ['split3']
+
+ @pytest.mark.asyncio
+ async def test_internal_event_notification(self, mocker):
+ """Test retrieving a list of all split names."""
+ split1 = mocker.Mock()
+ name1_prop = mocker.PropertyMock()
+ name1_prop.return_value = 'split1'
+ type(split1).name = name1_prop
+ split2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'split2'
+ type(split2).name = name2_prop
+ sets_property = mocker.PropertyMock()
+ sets_property.return_value = ['set_1']
+ type(split1).sets = sets_property
+ type(split2).sets = sets_property
+ events_queue = asyncio.Queue()
+ storage = InMemorySplitStorageAsync(events_queue)
+ await storage.update([split1, split2], [], -1)
+ event = await events_queue.get()
+ assert event.internal_event == SdkInternalEvent.FLAGS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.FLAG_UPDATE
+ assert event.metadata.get_names() == {'split1', 'split2'}
+
+ await storage.kill_locally('split1', 'default_treatment', 3)
+ event = await events_queue.get()
+ assert event.internal_event == SdkInternalEvent.FLAG_KILLED_NOTIFICATION
+ assert event.metadata.get_type() == SdkEventType.FLAG_UPDATE
+ assert event.metadata.get_names() == {'split1'}
+
class InMemorySegmentStorageTests(object):
"""In memory segment storage tests."""
def test_segment_storage_retrieval(self, mocker):
"""Test storing and retrieving segments."""
- storage = InMemorySegmentStorage()
+ events_queue = queue.Queue()
+ storage = InMemorySegmentStorage(events_queue)
segment = mocker.Mock(spec=Segment)
name_property = mocker.PropertyMock()
name_property.return_value = 'some_segment'
@@ -191,14 +756,16 @@ def test_segment_storage_retrieval(self, mocker):
def test_change_number(self, mocker):
"""Test storing and retrieving segment changeNumber."""
- storage = InMemorySegmentStorage()
+ events_queue = queue.Queue()
+ storage = InMemorySegmentStorage(events_queue)
storage.set_change_number('some_segment', 123)
# Change number is not updated if segment doesn't exist
assert storage.get_change_number('some_segment') is None
assert storage.get_change_number('nonexistant-segment') is None
# Change number is updated if segment does exist.
- storage = InMemorySegmentStorage()
+ events_queue = queue.Queue()
+ storage = InMemorySegmentStorage(events_queue)
segment = mocker.Mock(spec=Segment)
name_property = mocker.PropertyMock()
name_property.return_value = 'some_segment'
@@ -209,7 +776,8 @@ def test_change_number(self, mocker):
def test_segment_contains(self, mocker):
"""Test using storage to determine whether a key belongs to a segment."""
- storage = InMemorySegmentStorage()
+ events_queue = queue.Queue()
+ storage = InMemorySegmentStorage(events_queue)
segment = mocker.Mock(spec=Segment)
name_property = mocker.PropertyMock()
name_property.return_value = 'some_segment'
@@ -221,7 +789,8 @@ def test_segment_contains(self, mocker):
def test_segment_update(self):
"""Test updating a segment."""
- storage = InMemorySegmentStorage()
+ events_queue = queue.Queue()
+ storage = InMemorySegmentStorage(events_queue)
segment = Segment('some_segment', ['key1', 'key2', 'key3'], 123)
storage.put(segment)
assert storage.get('some_segment') == segment
@@ -234,66 +803,280 @@ def test_segment_update(self):
assert not storage.segment_contains('some_segment', 'key3')
assert storage.get_change_number('some_segment') == 456
+ def test_internal_event_notification(self):
+ """Test updating a segment."""
+ events_queue = queue.Queue()
+ storage = InMemorySegmentStorage(events_queue)
+ segment = Segment('some_segment', ['key1', 'key2', 'key3'], 123)
+ storage.put(segment)
+ event = events_queue.get()
+ assert event.internal_event == SdkInternalEvent.SEGMENTS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.SEGMENTS_UPDATE
+ assert len(event.metadata.get_names()) == 0
+
+ storage.update('some_segment', ['key4', 'key5'], ['key2', 'key3'], 456)
+ event = events_queue.get()
+ assert event.internal_event == SdkInternalEvent.SEGMENTS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.SEGMENTS_UPDATE
+ assert len(event.metadata.get_names()) == 0
+
+class InMemorySegmentStorageAsyncTests(object):
+ """In memory segment storage tests."""
+
+ @pytest.mark.asyncio
+ async def test_segment_storage_retrieval(self, mocker):
+ """Test storing and retrieving segments."""
+ storage = InMemorySegmentStorageAsync(asyncio.Queue())
+ segment = mocker.Mock(spec=Segment)
+ name_property = mocker.PropertyMock()
+ name_property.return_value = 'some_segment'
+ type(segment).name = name_property
+
+ await storage.put(segment)
+ assert await storage.get('some_segment') == segment
+ assert await storage.get('nonexistant-segment') is None
+
+ @pytest.mark.asyncio
+ async def test_change_number(self, mocker):
+ """Test storing and retrieving segment changeNumber."""
+ storage = InMemorySegmentStorageAsync(asyncio.Queue())
+ await storage.set_change_number('some_segment', 123)
+ # Change number is not updated if segment doesn't exist
+ assert await storage.get_change_number('some_segment') is None
+ assert await storage.get_change_number('nonexistant-segment') is None
+
+ # Change number is updated if segment does exist.
+ storage = InMemorySegmentStorageAsync(asyncio.Queue())
+ segment = mocker.Mock(spec=Segment)
+ name_property = mocker.PropertyMock()
+ name_property.return_value = 'some_segment'
+ type(segment).name = name_property
+ await storage.put(segment)
+ await storage.set_change_number('some_segment', 123)
+ assert await storage.get_change_number('some_segment') == 123
+
+ @pytest.mark.asyncio
+ async def test_segment_contains(self, mocker):
+ """Test using storage to determine whether a key belongs to a segment."""
+ storage = InMemorySegmentStorageAsync(asyncio.Queue())
+ segment = mocker.Mock(spec=Segment)
+ name_property = mocker.PropertyMock()
+ name_property.return_value = 'some_segment'
+ type(segment).name = name_property
+ await storage.put(segment)
+
+ await storage.segment_contains('some_segment', 'abc')
+ assert segment.contains.mock_calls[0] == mocker.call('abc')
+
+ @pytest.mark.asyncio
+ async def test_segment_update(self):
+ """Test updating a segment."""
+ storage = InMemorySegmentStorageAsync(asyncio.Queue())
+ segment = Segment('some_segment', ['key1', 'key2', 'key3'], 123)
+ await storage.put(segment)
+ assert await storage.get('some_segment') == segment
+
+ await storage.update('some_segment', ['key4', 'key5'], ['key2', 'key3'], 456)
+ assert await storage.segment_contains('some_segment', 'key1')
+ assert await storage.segment_contains('some_segment', 'key4')
+ assert await storage.segment_contains('some_segment', 'key5')
+ assert not await storage.segment_contains('some_segment', 'key2')
+ assert not await storage.segment_contains('some_segment', 'key3')
+ assert await storage.get_change_number('some_segment') == 456
+
+ @pytest.mark.asyncio
+ async def test_internal_event_notification(self):
+ """Test updating a segment."""
+ events_queue = asyncio.Queue()
+ storage = InMemorySegmentStorageAsync(events_queue)
+ segment = Segment('some_segment', ['key1', 'key2', 'key3'], 123)
+ await storage.put(segment)
+ event = await events_queue.get()
+ assert event.internal_event == SdkInternalEvent.SEGMENTS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.SEGMENTS_UPDATE
+ assert len(event.metadata.get_names()) == 0
+
+ await storage.update('some_segment', ['key4', 'key5'], ['key2', 'key3'], 456)
+ event = await events_queue.get()
+ assert event.internal_event == SdkInternalEvent.SEGMENTS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.SEGMENTS_UPDATE
+ assert len(event.metadata.get_names()) == 0
class InMemoryImpressionsStorageTests(object):
"""InMemory impressions storage test cases."""
- def test_push_pop_impressions(self):
+ def test_push_pop_impressions(self, mocker):
"""Test pushing and retrieving impressions."""
- storage = InMemoryImpressionStorage(100)
- storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654)])
- storage.put([Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654)])
- storage.put([Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654)])
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryImpressionStorage(100, telemetry_runtime_producer)
+ storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ storage.put([Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ storage.put([Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ assert(telemetry_storage._counters._impressions_queued == 3)
# Assert impressions are retrieved in the same order they are inserted.
assert storage.pop_many(1) == [
- Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654)
+ Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
]
assert storage.pop_many(1) == [
- Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654)
+ Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
]
assert storage.pop_many(1) == [
- Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654)
+ Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
]
# Assert inserting multiple impressions at once works and maintains order.
impressions = [
- Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654),
- Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654),
- Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654)
+ Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
]
assert storage.put(impressions)
# Assert impressions are retrieved in the same order they are inserted.
assert storage.pop_many(1) == [
- Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654)
+ Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
]
assert storage.pop_many(1) == [
- Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654)
+ Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
]
assert storage.pop_many(1) == [
- Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654)
+ Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
]
def test_queue_full_hook(self, mocker):
"""Test queue_full_hook is executed when the queue is full."""
- storage = InMemoryImpressionStorage(100)
+ storage = InMemoryImpressionStorage(100, mocker.Mock())
queue_full_hook = mocker.Mock()
storage.set_queue_full_hook(queue_full_hook)
impressions = [
- Impression('key%d' % i, 'feature1', 'on', 'l1', 123456, 'b1', 321654)
+ Impression('key%d' % i, 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
for i in range(0, 101)
]
storage.put(impressions)
assert queue_full_hook.mock_calls == mocker.call()
+ def test_clear(self, mocker):
+ """Test clear method."""
+ storage = InMemoryImpressionStorage(100, mocker.Mock())
+ storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+
+ assert storage._impressions.qsize() == 1
+ storage.clear()
+ assert storage._impressions.qsize() == 0
+
+ def test_impressions_dropped(self, mocker):
+ """Test pushing and retrieving impressions."""
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryImpressionStorage(2, telemetry_runtime_producer)
+ storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ assert(telemetry_storage._counters._impressions_dropped == 1)
+ assert(telemetry_storage._counters._impressions_queued == 2)
+
+
+class InMemoryImpressionsStorageAsyncTests(object):
+ """InMemory impressions async storage test cases."""
+
+ @pytest.mark.asyncio
+ async def test_push_pop_impressions(self, mocker):
+ """Test pushing and retrieving impressions."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryImpressionStorageAsync(100, telemetry_runtime_producer)
+ await storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ await storage.put([Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ await storage.put([Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ assert(telemetry_storage._counters._impressions_queued == 3)
+
+ # Assert impressions are retrieved in the same order they are inserted.
+ assert await storage.pop_many(1) == [
+ Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ ]
+ assert await storage.pop_many(1) == [
+ Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ ]
+ assert await storage.pop_many(1) == [
+ Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ ]
+
+ # Assert inserting multiple impressions at once works and maintains order.
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ ]
+ assert await storage.put(impressions)
+
+ # Assert impressions are retrieved in the same order they are inserted.
+ assert await storage.pop_many(1) == [
+ Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ ]
+ assert await storage.pop_many(1) == [
+ Impression('key2', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ ]
+ assert await storage.pop_many(1) == [
+ Impression('key3', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ ]
+
+ @pytest.mark.asyncio
+ async def test_queue_full_hook(self, mocker):
+ """Test queue_full_hook is executed when the queue is full."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryImpressionStorageAsync(100, telemetry_runtime_producer)
+ self.hook_called = False
+ async def queue_full_hook():
+ self.hook_called = True
+
+ storage.set_queue_full_hook(queue_full_hook)
+ impressions = [
+ Impression('key%d' % i, 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)
+ for i in range(0, 101)
+ ]
+ await storage.put(impressions)
+ await queue_full_hook()
+ assert self.hook_called == True
+
+ @pytest.mark.asyncio
+ async def test_clear(self, mocker):
+ """Test clear method."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryImpressionStorageAsync(100, telemetry_runtime_producer)
+ await storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ assert storage._impressions.qsize() == 1
+ await storage.clear()
+ assert storage._impressions.qsize() == 0
+
+ @pytest.mark.asyncio
+ async def test_impressions_dropped(self, mocker):
+ """Test pushing and retrieving impressions."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryImpressionStorageAsync(2, telemetry_runtime_producer)
+ await storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ await storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ await storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654, None, None)])
+ assert(telemetry_storage._counters._impressions_dropped == 1)
+ assert(telemetry_storage._counters._impressions_queued == 2)
+
class InMemoryEventsStorageTests(object):
"""InMemory events storage test cases."""
- def test_push_pop_events(self):
+ def test_push_pop_events(self, mocker):
"""Test pushing and retrieving events."""
- storage = InMemoryEventStorage(100)
+ storage = InMemoryEventStorage(100, mocker.Mock())
storage.put([EventWrapper(
event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
size=1024,
@@ -336,59 +1119,986 @@ def test_push_pop_events(self):
def test_queue_full_hook(self, mocker):
"""Test queue_full_hook is executed when the queue is full."""
- storage = InMemoryEventStorage(100)
+ storage = InMemoryEventStorage(100, mocker.Mock())
queue_full_hook = mocker.Mock()
storage.set_queue_full_hook(queue_full_hook)
- events = [EventWrapper(event=Event('key%d' % i, 'user', 'purchase', 12.5, 321654, None), size=1024) for i in range(0, 101)]
+ events = [EventWrapper(event=Event('key%d' % i, 'user', 'purchase', 12.5, 321654, None), size=1024) for i in range(0, 101)]
storage.put(events)
assert queue_full_hook.mock_calls == [mocker.call()]
def test_queue_full_hook_properties(self, mocker):
"""Test queue_full_hook is executed when the queue is full regarding properties."""
- storage = InMemoryEventStorage(200)
+ storage = InMemoryEventStorage(200, mocker.Mock())
queue_full_hook = mocker.Mock()
storage.set_queue_full_hook(queue_full_hook)
events = [EventWrapper(event=Event('key%d' % i, 'user', 'purchase', 12.5, 1, None), size=32768) for i in range(160)]
storage.put(events)
assert queue_full_hook.mock_calls == [mocker.call()]
+ def test_clear(self, mocker):
+ """Test clear method."""
+ storage = InMemoryEventStorage(100, mocker.Mock())
+ storage.put([EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+
+ assert storage._events.qsize() == 1
+ storage.clear()
+ assert storage._events.qsize() == 0
+
+ def test_event_telemetry(self, mocker):
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryEventStorage(2, telemetry_runtime_producer)
+ storage.put([EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+ storage.put([EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+ storage.put([EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+ assert(telemetry_storage._counters._events_dropped == 1)
+ assert(telemetry_storage._counters._events_queued == 2)
+
+
+class InMemoryEventsStorageAsyncTests(object):
+ """InMemory events async storage test cases."""
+
+ @pytest.mark.asyncio
+ async def test_push_pop_events(self, mocker):
+ """Test pushing and retrieving events."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryEventStorageAsync(100, telemetry_runtime_producer)
+ await storage.put([EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+ await storage.put([EventWrapper(
+ event=Event('key2', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+ await storage.put([EventWrapper(
+ event=Event('key3', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+
+ # Assert impressions are retrieved in the same order they are inserted.
+ assert await storage.pop_many(1) == [Event('key1', 'user', 'purchase', 3.5, 123456, None)]
+ assert await storage.pop_many(1) == [Event('key2', 'user', 'purchase', 3.5, 123456, None)]
+ assert await storage.pop_many(1) == [Event('key3', 'user', 'purchase', 3.5, 123456, None)]
+
+ # Assert inserting multiple impressions at once works and maintains order.
+ events = [
+ EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ EventWrapper(
+ event=Event('key2', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ EventWrapper(
+ event=Event('key3', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ ),
+ ]
+ assert await storage.put(events)
+
+ # Assert events are retrieved in the same order they are inserted.
+ assert await storage.pop_many(1) == [Event('key1', 'user', 'purchase', 3.5, 123456, None)]
+ assert await storage.pop_many(1) == [Event('key2', 'user', 'purchase', 3.5, 123456, None)]
+ assert await storage.pop_many(1) == [Event('key3', 'user', 'purchase', 3.5, 123456, None)]
+
+ @pytest.mark.asyncio
+ async def test_queue_full_hook(self, mocker):
+ """Test queue_full_hook is executed when the queue is full."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryEventStorageAsync(100, telemetry_runtime_producer)
+ self.called = False
+ async def queue_full_hook():
+ self.called = True
+
+ storage.set_queue_full_hook(queue_full_hook)
+ events = [EventWrapper(event=Event('key%d' % i, 'user', 'purchase', 12.5, 321654, None), size=1024) for i in range(0, 101)]
+ await storage.put(events)
+ assert self.called == True
+
+ @pytest.mark.asyncio
+ async def test_queue_full_hook_properties(self, mocker):
+ """Test queue_full_hook is executed when the queue is full regarding properties."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryEventStorageAsync(200, telemetry_runtime_producer)
+ self.called = False
+ async def queue_full_hook():
+ self.called = True
+ storage.set_queue_full_hook(queue_full_hook)
+ events = [EventWrapper(event=Event('key%d' % i, 'user', 'purchase', 12.5, 1, None), size=32768) for i in range(160)]
+ await storage.put(events)
+ assert self.called == True
+
+ @pytest.mark.asyncio
+ async def test_clear(self, mocker):
+ """Test clear method."""
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryEventStorageAsync(100, telemetry_runtime_producer)
+ await storage.put([EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+
+ assert storage._events.qsize() == 1
+ await storage.clear()
+ assert storage._events.qsize() == 0
+
+ @pytest.mark.asyncio
+ async def test_event_telemetry(self, mocker):
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ storage = InMemoryEventStorageAsync(2, telemetry_runtime_producer)
+ await storage.put([EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+ await storage.put([EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+ await storage.put([EventWrapper(
+ event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
+ size=1024,
+ )])
+ assert(telemetry_storage._counters._events_dropped == 1)
+ assert(telemetry_storage._counters._events_queued == 2)
+
+
class InMemoryTelemetryStorageTests(object):
- """In-Memory telemetry storage unit tests."""
+ """InMemory telemetry storage test cases."""
- def test_latencies(self):
- """Test storing and retrieving latencies."""
+ def test_resets(self):
storage = InMemoryTelemetryStorage()
- storage.inc_latency('sdk.get_treatment', -1)
- storage.inc_latency('sdk.get_treatment', 0)
- storage.inc_latency('sdk.get_treatment', 1)
- storage.inc_latency('sdk.get_treatment', 5)
- storage.inc_latency('sdk.get_treatment', 5)
- storage.inc_latency('sdk.get_treatment', 22)
- latencies = storage.pop_latencies()
- assert latencies['sdk.get_treatment'][0] == 1
- assert latencies['sdk.get_treatment'][1] == 1
- assert latencies['sdk.get_treatment'][5] == 2
- assert len(latencies['sdk.get_treatment']) == 22
- assert storage.pop_latencies() == {}
-
- def test_counters(self):
- """Test storing and retrieving counters."""
+
+ assert(storage._counters._impressions_queued == 0)
+ assert(storage._counters._impressions_deduped == 0)
+ assert(storage._counters._impressions_dropped == 0)
+ assert(storage._counters._events_dropped == 0)
+ assert(storage._counters._events_queued == 0)
+ assert(storage._counters._auth_rejections == 0)
+ assert(storage._counters._token_refreshes == 0)
+
+ assert(storage._method_exceptions.pop_all() == {'methodExceptions': {'treatment': 0, 'treatments': 0, 'treatment_with_config': 0, 'treatments_with_config': 0, 'treatments_by_flag_set': 0, 'treatments_by_flag_sets': 0, 'treatments_with_config_by_flag_set': 0, 'treatments_with_config_by_flag_sets': 0, 'track': 0}})
+ assert(storage._last_synchronization.get_all() == {'lastSynchronizations': {'split': 0, 'segment': 0, 'impression': 0, 'impressionCount': 0, 'event': 0, 'telemetry': 0, 'token': 0}})
+ assert(storage._http_sync_errors.pop_all() == {'httpErrors': {'split': {}, 'segment': {}, 'impression': {}, 'impressionCount': {}, 'event': {}, 'telemetry': {}, 'token': {}}})
+ assert(storage._tel_config.get_stats() == {
+ 'bT':0,
+ 'nR':0,
+ 'tR': 0,
+ 'oM': None,
+ 'sT': None,
+ 'sE': None,
+ 'rR': {'sp': 0, 'se': 0, 'im': 0, 'ev': 0, 'te': 0},
+ 'uO': {'s': False, 'e': False, 'a': False, 'st': False, 't': False},
+ 'iQ': 0,
+ 'eQ': 0,
+ 'iM': None,
+ 'iL': False,
+ 'hp': None,
+ 'aF': 0,
+ 'rF': 0,
+ 'fsT': 0,
+ 'fsI': 0
+ })
+ assert(storage._streaming_events.pop_streaming_events() == {'streamingEvents': []})
+ assert(storage._tags == [])
+
+ assert(storage._method_latencies.pop_all() == {'methodLatencies': {'treatment': [0] * 23, 'treatments': [0] * 23, 'treatment_with_config': [0] * 23, 'treatments_with_config': [0] * 23, 'treatments_by_flag_set': [0] * 23, 'treatments_by_flag_sets': [0] * 23, 'treatments_with_config_by_flag_set': [0] * 23, 'treatments_with_config_by_flag_sets': [0] * 23, 'track': [0] * 23}})
+ assert(storage._http_latencies.pop_all() == {'httpLatencies': {'split': [0] * 23, 'segment': [0] * 23, 'impression': [0] * 23, 'impressionCount': [0] * 23, 'event': [0] * 23, 'telemetry': [0] * 23, 'token': [0] * 23}})
+
+ def test_record_config(self):
+ storage = InMemoryTelemetryStorage()
+ config = {'operationMode': 'standalone',
+ 'streamingEnabled': True,
+ 'impressionsQueueSize': 100,
+ 'eventsQueueSize': 200,
+ 'impressionsMode': 'DEBUG',''
+ 'impressionListener': None,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'impressionsRefreshRate': 60,
+ 'eventsPushRate': 60,
+ 'metricsRefreshRate': 10,
+ 'storageType': None
+ }
+ storage.record_config(config, {}, 2, 1)
+ storage.record_active_and_redundant_factories(1, 0)
+ assert(storage._tel_config.get_stats() == {'oM': 0,
+ 'sT': storage._tel_config._get_storage_type(config['operationMode'], config['storageType']),
+ 'sE': config['streamingEnabled'],
+ 'rR': {'sp': 30, 'se': 30, 'im': 60, 'ev': 60, 'te': 10},
+ 'uO': {'s': False, 'e': False, 'a': False, 'st': False, 't': False},
+ 'iQ': config['impressionsQueueSize'],
+ 'eQ': config['eventsQueueSize'],
+ 'iM': storage._tel_config._get_impressions_mode(config['impressionsMode']),
+ 'iL': True if config['impressionListener'] is not None else False,
+ 'hp': storage._tel_config._check_if_proxy_detected(),
+ 'bT': 0,
+ 'tR': 0,
+ 'nR': 0,
+ 'aF': 1,
+ 'rF': 0,
+ 'fsT': 2,
+ 'fsI': 1}
+ )
+
+ def test_record_counters(self):
+ storage = InMemoryTelemetryStorage()
+
+ storage.record_ready_time(10)
+ assert(storage._tel_config._time_until_ready == 10)
+
+ storage.add_tag('tag')
+ assert('tag' in storage._tags)
+ [storage.add_tag('tag') for i in range(1, 25)]
+ assert(len(storage._tags) == 10)
+
+ storage.record_bur_time_out()
+ storage.record_bur_time_out()
+ assert(storage._tel_config.get_bur_time_outs() == 2)
+
+ storage.record_not_ready_usage()
+ storage.record_not_ready_usage()
+ assert(storage._tel_config.get_non_ready_usage() == 2)
+
+ storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT)
+ assert(storage._method_exceptions._treatment == 1)
+
+ storage.record_impression_stats(ModelTelemetry.CounterConstants.IMPRESSIONS_QUEUED, 5)
+ assert(storage._counters.get_counter_stats(ModelTelemetry.CounterConstants.IMPRESSIONS_QUEUED) == 5)
+
+ storage.record_event_stats(ModelTelemetry.CounterConstants.EVENTS_DROPPED, 6)
+ assert(storage._counters.get_counter_stats(ModelTelemetry.CounterConstants.EVENTS_DROPPED) == 6)
+
+ storage.record_successful_sync(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, 10)
+ assert(storage._last_synchronization._segment == 10)
+
+ storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, '500')
+ assert(storage._http_sync_errors._segment['500'] == 1)
+
+ storage.record_auth_rejections()
+ storage.record_auth_rejections()
+ assert(storage._counters.pop_auth_rejections() == 2)
+
+ storage.record_token_refreshes()
+ storage.record_token_refreshes()
+ assert(storage._counters.pop_token_refreshes() == 2)
+
+ storage.record_streaming_event((ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED, 'split', 1234))
+ assert(storage._streaming_events.pop_streaming_events() == {'streamingEvents': [{'e': ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED.value, 'd': 'split', 't': 1234}]})
+ [storage.record_streaming_event((ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED, 'split', 1234)) for i in range(1, 25)]
+ assert(len(storage._streaming_events._streaming_events) == 20)
+
+ storage.record_session_length(20)
+ assert(storage._counters.get_session_length() == 20)
+
+ def test_record_latencies(self):
+ storage = InMemoryTelemetryStorage()
+
+ for method in ModelTelemetry.MethodExceptionsAndLatencies:
+ if self._get_method_latency(method, storage) == None:
+ continue
+ storage.record_latency(method, 50)
+ assert(self._get_method_latency(method, storage)[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ storage.record_latency(method, 50000000)
+ assert(self._get_method_latency(method, storage)[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ for j in range(10):
+ latency = random.randint(1001, 4987885)
+ current_count = self._get_method_latency(method, storage)[ModelTelemetry.get_latency_bucket_index(latency)]
+ [storage.record_latency(method, latency) for i in range(2)]
+ assert(self._get_method_latency(method, storage)[ModelTelemetry.get_latency_bucket_index(latency)] == 2 + current_count)
+
+ for resource in ModelTelemetry.HTTPExceptionsAndLatencies:
+ if self._get_http_latency(resource, storage) == None:
+ continue
+ storage.record_sync_latency(resource, 50)
+ assert(self._get_http_latency(resource, storage)[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ storage.record_sync_latency(resource, 50000000)
+ assert(self._get_http_latency(resource, storage)[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ for j in range(10):
+ latency = random.randint(1001, 4987885)
+ current_count = self._get_http_latency(resource, storage)[ModelTelemetry.get_latency_bucket_index(latency)]
+ [storage.record_sync_latency(resource, latency) for i in range(2)]
+ assert(self._get_http_latency(resource, storage)[ModelTelemetry.get_latency_bucket_index(latency)] == 2 + current_count)
+
+ def _get_method_latency(self, resource, storage):
+ if resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT:
+ return storage._method_latencies._treatment
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS:
+ return storage._method_latencies._treatments
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG:
+ return storage._method_latencies._treatment_with_config
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG:
+ return storage._method_latencies._treatments_with_config
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET:
+ return storage._method_latencies._treatments_by_flag_set
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS:
+ return storage._method_latencies._treatments_by_flag_sets
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET:
+ return storage._method_latencies._treatments_with_config_by_flag_set
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS:
+ return storage._method_latencies._treatments_with_config_by_flag_sets
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TRACK:
+ return storage._method_latencies._track
+ else:
+ return
+
+ def _get_http_latency(self, resource, storage):
+ if resource == ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT:
+ return storage._http_latencies._split
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT:
+ return storage._http_latencies._segment
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION:
+ return storage._http_latencies._impression
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ return storage._http_latencies._impression_count
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.EVENT:
+ return storage._http_latencies._event
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY:
+ return storage._http_latencies._telemetry
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN:
+ return storage._http_latencies._token
+ else:
+ return
+
+ def test_pop_counters(self):
storage = InMemoryTelemetryStorage()
- storage.inc_counter('some_counter_1')
- storage.inc_counter('some_counter_1')
- storage.inc_counter('some_counter_1')
- storage.inc_counter('some_counter_2')
- counters = storage.pop_counters()
- assert counters['some_counter_1'] == 3
- assert counters['some_counter_2'] == 1
- assert storage.pop_counters() == {}
-
- def test_gauges(self):
- """Test storing and retrieving gauges."""
+
+ [storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT) for i in range(2)]
+ storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS)
+ storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG)
+ [storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG) for i in range(5)]
+ [storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET) for i in range(3)]
+ [storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS) for i in range(10)]
+ [storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET) for i in range(7)]
+ [storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS) for i in range(6)]
+ [storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TRACK) for i in range(3)]
+ exceptions = storage.pop_exceptions()
+ assert(storage._method_exceptions._treatment == 0)
+ assert(storage._method_exceptions._treatments == 0)
+ assert(storage._method_exceptions._treatment_with_config == 0)
+ assert(storage._method_exceptions._treatments_with_config == 0)
+ assert(storage._method_exceptions._treatments_by_flag_set == 0)
+ assert(storage._method_exceptions._treatments_by_flag_sets == 0)
+ assert(storage._method_exceptions._track == 0)
+ assert(storage._method_exceptions._treatments_with_config_by_flag_set == 0)
+ assert(storage._method_exceptions._treatments_with_config_by_flag_sets == 0)
+ assert(exceptions == {'methodExceptions': {'treatment': 2, 'treatments': 1, 'treatment_with_config': 1, 'treatments_with_config': 5, 'treatments_by_flag_set': 3, 'treatments_by_flag_sets': 10, 'treatments_with_config_by_flag_set': 7, 'treatments_with_config_by_flag_sets': 6, 'track': 3}})
+
+ storage.add_tag('tag1')
+ storage.add_tag('tag2')
+ tags = storage.pop_tags()
+ assert(storage._tags == [])
+ assert(tags == ['tag1', 'tag2'])
+
+ [storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, str(i)) for i in [500, 501, 502]]
+ [storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, str(i)) for i in [400, 401, 402]]
+ storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, '502')
+ [storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, str(i)) for i in [501, 502]]
+ storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, '501')
+ storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, '505')
+ [storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, '502') for i in range(5)]
+ http_errors = storage.pop_http_errors()
+ assert(http_errors == {'httpErrors': {'split': {'400': 1, '401': 1, '402': 1}, 'segment': {'500': 1, '501': 1, '502': 1},
+ 'impression': {'502': 1}, 'impressionCount': {'501': 1, '502': 1},
+ 'event': {'501': 1}, 'telemetry': {'505': 1}, 'token': {'502': 5}}})
+ assert(storage._http_sync_errors._split == {})
+ assert(storage._http_sync_errors._segment == {})
+ assert(storage._http_sync_errors._impression == {})
+ assert(storage._http_sync_errors._impression_count == {})
+ assert(storage._http_sync_errors._event == {})
+ assert(storage._http_sync_errors._telemetry == {})
+
+ storage.record_auth_rejections()
+ storage.record_auth_rejections()
+ auth_rejections = storage.pop_auth_rejections()
+ assert(storage._counters._auth_rejections == 0)
+ assert(auth_rejections == 2)
+
+ storage.record_token_refreshes()
+ storage.record_token_refreshes()
+ token_refreshes = storage.pop_token_refreshes()
+ assert(storage._counters._token_refreshes == 0)
+ assert(token_refreshes == 2)
+
+ storage.record_streaming_event((ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED, 'split', 1234))
+ storage.record_streaming_event((ModelTelemetry.StreamingEventTypes.OCCUPANCY_PRI, 'split', 1234))
+ streaming_events = storage.pop_streaming_events()
+ assert(storage._streaming_events._streaming_events == [])
+ assert(streaming_events == {'streamingEvents': [{'e': ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED.value, 'd': 'split', 't': 1234},
+ {'e': ModelTelemetry.StreamingEventTypes.OCCUPANCY_PRI.value, 'd': 'split', 't': 1234}]})
+
+ def test_pop_latencies(self):
storage = InMemoryTelemetryStorage()
- storage.put_gauge('some_gauge_1', 321)
- storage.put_gauge('some_gauge_2', 654)
- gauges = storage.pop_gauges()
- assert gauges['some_gauge_1'] == 321
- assert gauges['some_gauge_2'] == 654
- assert storage.pop_gauges() == {}
+
+ [storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT, i) for i in [5, 10, 10, 10]]
+ [storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS, i) for i in [7, 10, 14, 13]]
+ [storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG, i) for i in [200]]
+ [storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG, i) for i in [50, 40]]
+ [storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET, i) for i in [15, 20]]
+ [storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS, i) for i in [14, 25]]
+ [storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET, i) for i in [100]]
+ [storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS, i) for i in [50, 20]]
+ [storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TRACK, i) for i in [1, 10, 100]]
+ latencies = storage.pop_latencies()
+
+ assert(storage._method_latencies._treatment == [0] * 23)
+ assert(storage._method_latencies._treatments == [0] * 23)
+ assert(storage._method_latencies._treatment_with_config == [0] * 23)
+ assert(storage._method_latencies._treatments_with_config == [0] * 23)
+ assert(storage._method_latencies._treatments_by_flag_set == [0] * 23)
+ assert(storage._method_latencies._treatments_by_flag_sets == [0] * 23)
+ assert(storage._method_latencies._treatments_with_config_by_flag_set == [0] * 23)
+ assert(storage._method_latencies._treatments_with_config_by_flag_sets == [0] * 23)
+ assert(storage._method_latencies._track == [0] * 23)
+ assert(latencies == {'methodLatencies': {
+ 'treatment': [4] + [0] * 22,
+ 'treatments': [4] + [0] * 22,
+ 'treatment_with_config': [1] + [0] * 22,
+ 'treatments_with_config': [2] + [0] * 22,
+ 'treatments_by_flag_set': [2] + [0] * 22,
+ 'treatments_by_flag_sets': [2] + [0] * 22,
+ 'treatments_with_config_by_flag_set': [1] + [0] * 22,
+ 'treatments_with_config_by_flag_sets': [2] + [0] * 22,
+ 'track': [3] + [0] * 22}})
+
+ [storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, i) for i in [50, 10, 20, 40]]
+ [storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, i) for i in [70, 100, 40, 30]]
+ [storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, i) for i in [10, 20]]
+ [storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, i) for i in [5, 10]]
+ [storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, i) for i in [50, 40]]
+ [storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, i) for i in [100, 50, 160]]
+ [storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, i) for i in [10, 15, 100]]
+ sync_latency = storage.pop_http_latencies()
+
+ assert(storage._http_latencies._split == [0] * 23)
+ assert(storage._http_latencies._segment == [0] * 23)
+ assert(storage._http_latencies._impression == [0] * 23)
+ assert(storage._http_latencies._impression_count == [0] * 23)
+ assert(storage._http_latencies._telemetry == [0] * 23)
+ assert(storage._http_latencies._token == [0] * 23)
+ assert(sync_latency == {'httpLatencies': {'split': [4] + [0] * 22, 'segment': [4] + [0] * 22,
+ 'impression': [2] + [0] * 22, 'impressionCount': [2] + [0] * 22, 'event': [2] + [0] * 22,
+ 'telemetry': [3] + [0] * 22, 'token': [3] + [0] * 22}})
+
+
+class InMemoryTelemetryStorageAsyncTests(object):
+ """InMemory telemetry async storage test cases."""
+
+ @pytest.mark.asyncio
+ async def test_resets(self):
+ storage = await InMemoryTelemetryStorageAsync.create()
+
+ assert(storage._counters._impressions_queued == 0)
+ assert(storage._counters._impressions_deduped == 0)
+ assert(storage._counters._impressions_dropped == 0)
+ assert(storage._counters._events_dropped == 0)
+ assert(storage._counters._events_queued == 0)
+ assert(storage._counters._auth_rejections == 0)
+ assert(storage._counters._token_refreshes == 0)
+
+ assert(await storage._method_exceptions.pop_all() == {'methodExceptions': {'treatment': 0, 'treatments': 0, 'treatment_with_config': 0, 'treatments_with_config': 0, 'treatments_by_flag_set': 0, 'treatments_by_flag_sets': 0, 'treatments_with_config_by_flag_set': 0, 'treatments_with_config_by_flag_sets': 0, 'track': 0}})
+ assert(await storage._last_synchronization.get_all() == {'lastSynchronizations': {'split': 0, 'segment': 0, 'impression': 0, 'impressionCount': 0, 'event': 0, 'telemetry': 0, 'token': 0}})
+ assert(await storage._http_sync_errors.pop_all() == {'httpErrors': {'split': {}, 'segment': {}, 'impression': {}, 'impressionCount': {}, 'event': {}, 'telemetry': {}, 'token': {}}})
+ assert(await storage._tel_config.get_stats() == {
+ 'bT':0,
+ 'nR':0,
+ 'tR': 0,
+ 'oM': None,
+ 'sT': None,
+ 'sE': None,
+ 'rR': {'sp': 0, 'se': 0, 'im': 0, 'ev': 0, 'te': 0},
+ 'uO': {'s': False, 'e': False, 'a': False, 'st': False, 't': False},
+ 'iQ': 0,
+ 'eQ': 0,
+ 'iM': None,
+ 'iL': False,
+ 'hp': None,
+ 'aF': 0,
+ 'rF': 0,
+ 'fsT': 0,
+ 'fsI': 0
+ })
+ assert(await storage._streaming_events.pop_streaming_events() == {'streamingEvents': []})
+ assert(storage._tags == [])
+
+ assert(await storage._method_latencies.pop_all() == {'methodLatencies': {'treatment': [0] * 23, 'treatments': [0] * 23, 'treatment_with_config': [0] * 23, 'treatments_with_config': [0] * 23, 'treatments_by_flag_set': [0] * 23, 'treatments_by_flag_sets': [0] * 23, 'treatments_with_config_by_flag_set': [0] * 23, 'treatments_with_config_by_flag_sets': [0] * 23, 'track': [0] * 23}})
+ assert(await storage._http_latencies.pop_all() == {'httpLatencies': {'split': [0] * 23, 'segment': [0] * 23, 'impression': [0] * 23, 'impressionCount': [0] * 23, 'event': [0] * 23, 'telemetry': [0] * 23, 'token': [0] * 23}})
+
+ @pytest.mark.asyncio
+ async def test_record_config(self):
+ storage = await InMemoryTelemetryStorageAsync.create()
+ config = {'operationMode': 'standalone',
+ 'streamingEnabled': True,
+ 'impressionsQueueSize': 100,
+ 'eventsQueueSize': 200,
+ 'impressionsMode': 'DEBUG',''
+ 'impressionListener': None,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'impressionsRefreshRate': 60,
+ 'eventsPushRate': 60,
+ 'metricsRefreshRate': 10,
+ 'storageType': None
+ }
+ await storage.record_config(config, {}, 2, 1)
+ await storage.record_active_and_redundant_factories(1, 0)
+ assert(await storage._tel_config.get_stats() == {'oM': 0,
+ 'sT': storage._tel_config._get_storage_type(config['operationMode'], config['storageType']),
+ 'sE': config['streamingEnabled'],
+ 'rR': {'sp': 30, 'se': 30, 'im': 60, 'ev': 60, 'te': 10},
+ 'uO': {'s': False, 'e': False, 'a': False, 'st': False, 't': False},
+ 'iQ': config['impressionsQueueSize'],
+ 'eQ': config['eventsQueueSize'],
+ 'iM': storage._tel_config._get_impressions_mode(config['impressionsMode']),
+ 'iL': True if config['impressionListener'] is not None else False,
+ 'hp': storage._tel_config._check_if_proxy_detected(),
+ 'bT': 0,
+ 'tR': 0,
+ 'nR': 0,
+ 'aF': 1,
+ 'rF': 0,
+ 'fsT': 2,
+ 'fsI': 1}
+ )
+
+ @pytest.mark.asyncio
+ async def test_record_counters(self):
+ storage = await InMemoryTelemetryStorageAsync.create()
+
+ await storage.record_ready_time(10)
+ assert(storage._tel_config._time_until_ready == 10)
+
+ await storage.add_tag('tag')
+ assert('tag' in storage._tags)
+ [await storage.add_tag('tag') for i in range(1, 25)]
+ assert(len(storage._tags) == 10)
+
+ await storage.record_bur_time_out()
+ await storage.record_bur_time_out()
+ assert(await storage._tel_config.get_bur_time_outs() == 2)
+
+ await storage.record_not_ready_usage()
+ await storage.record_not_ready_usage()
+ assert(await storage._tel_config.get_non_ready_usage() == 2)
+
+ await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT)
+ assert(storage._method_exceptions._treatment == 1)
+
+ await storage.record_impression_stats(ModelTelemetry.CounterConstants.IMPRESSIONS_QUEUED, 5)
+ assert(await storage._counters.get_counter_stats(ModelTelemetry.CounterConstants.IMPRESSIONS_QUEUED) == 5)
+
+ await storage.record_event_stats(ModelTelemetry.CounterConstants.EVENTS_DROPPED, 6)
+ assert(await storage._counters.get_counter_stats(ModelTelemetry.CounterConstants.EVENTS_DROPPED) == 6)
+
+ await storage.record_successful_sync(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, 10)
+ assert(storage._last_synchronization._segment == 10)
+
+ await storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, '500')
+ assert(storage._http_sync_errors._segment['500'] == 1)
+
+ await storage.record_auth_rejections()
+ await storage.record_auth_rejections()
+ assert(await storage._counters.pop_auth_rejections() == 2)
+
+ await storage.record_token_refreshes()
+ await storage.record_token_refreshes()
+ assert(await storage._counters.pop_token_refreshes() == 2)
+
+ await storage.record_streaming_event((ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED, 'split', 1234))
+ assert(await storage._streaming_events.pop_streaming_events() == {'streamingEvents': [{'e': ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED.value, 'd': 'split', 't': 1234}]})
+ [await storage.record_streaming_event((ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED, 'split', 1234)) for i in range(1, 25)]
+ assert(len(storage._streaming_events._streaming_events) == 20)
+
+ await storage.record_session_length(20)
+ assert(await storage._counters.get_session_length() == 20)
+
+ @pytest.mark.asyncio
+ async def test_record_latencies(self):
+ storage = await InMemoryTelemetryStorageAsync.create()
+
+ for method in ModelTelemetry.MethodExceptionsAndLatencies:
+ if self._get_method_latency(method, storage) == None:
+ continue
+ await storage.record_latency(method, 50)
+ assert(self._get_method_latency(method, storage)[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ await storage.record_latency(method, 50000000)
+ assert(self._get_method_latency(method, storage)[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ for j in range(10):
+ latency = random.randint(1001, 4987885)
+ current_count = self._get_method_latency(method, storage)[ModelTelemetry.get_latency_bucket_index(latency)]
+ [await storage.record_latency(method, latency) for i in range(2)]
+ assert(self._get_method_latency(method, storage)[ModelTelemetry.get_latency_bucket_index(latency)] == 2 + current_count)
+
+ for resource in ModelTelemetry.HTTPExceptionsAndLatencies:
+ if self._get_http_latency(resource, storage) == None:
+ continue
+ await storage.record_sync_latency(resource, 50)
+ assert(self._get_http_latency(resource, storage)[ModelTelemetry.get_latency_bucket_index(50)] == 1)
+ await storage.record_sync_latency(resource, 50000000)
+ assert(self._get_http_latency(resource, storage)[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
+ for j in range(10):
+ latency = random.randint(1001, 4987885)
+ current_count = self._get_http_latency(resource, storage)[ModelTelemetry.get_latency_bucket_index(latency)]
+ [await storage.record_sync_latency(resource, latency) for i in range(2)]
+ assert(self._get_http_latency(resource, storage)[ModelTelemetry.get_latency_bucket_index(latency)] == 2 + current_count)
+
+ def _get_method_latency(self, resource, storage):
+ if resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT:
+ return storage._method_latencies._treatment
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS:
+ return storage._method_latencies._treatments
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG:
+ return storage._method_latencies._treatment_with_config
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG:
+ return storage._method_latencies._treatments_with_config
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET:
+ return storage._method_latencies._treatments_by_flag_set
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS:
+ return storage._method_latencies._treatments_by_flag_sets
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET:
+ return storage._method_latencies._treatments_with_config_by_flag_set
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS:
+ return storage._method_latencies._treatments_with_config_by_flag_sets
+ elif resource == ModelTelemetry.MethodExceptionsAndLatencies.TRACK:
+ return storage._method_latencies._track
+ else:
+ return
+
+ def _get_http_latency(self, resource, storage):
+ if resource == ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT:
+ return storage._http_latencies._split
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT:
+ return storage._http_latencies._segment
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION:
+ return storage._http_latencies._impression
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT:
+ return storage._http_latencies._impression_count
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.EVENT:
+ return storage._http_latencies._event
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY:
+ return storage._http_latencies._telemetry
+ elif resource == ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN:
+ return storage._http_latencies._token
+ else:
+ return
+
+ @pytest.mark.asyncio
+ async def test_pop_counters(self):
+ storage = await InMemoryTelemetryStorageAsync.create()
+
+ [await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT) for i in range(2)]
+ await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS)
+ await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG)
+ [await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG) for i in range(5)]
+ [await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET) for i in range(3)]
+ [await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS) for i in range(10)]
+ [await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET) for i in range(7)]
+ [await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS) for i in range(6)]
+ [await storage.record_exception(ModelTelemetry.MethodExceptionsAndLatencies.TRACK) for i in range(3)]
+ exceptions = await storage.pop_exceptions()
+ assert(storage._method_exceptions._treatment == 0)
+ assert(storage._method_exceptions._treatments == 0)
+ assert(storage._method_exceptions._treatment_with_config == 0)
+ assert(storage._method_exceptions._treatments_with_config == 0)
+ assert(storage._method_exceptions._treatments_by_flag_set == 0)
+ assert(storage._method_exceptions._treatments_by_flag_sets == 0)
+ assert(storage._method_exceptions._track == 0)
+ assert(storage._method_exceptions._treatments_with_config_by_flag_set == 0)
+ assert(storage._method_exceptions._treatments_with_config_by_flag_sets == 0)
+ assert(exceptions == {'methodExceptions': {'treatment': 2, 'treatments': 1, 'treatment_with_config': 1, 'treatments_with_config': 5, 'treatments_by_flag_set': 3, 'treatments_by_flag_sets': 10, 'treatments_with_config_by_flag_set': 7, 'treatments_with_config_by_flag_sets': 6, 'track': 3}})
+
+ await storage.add_tag('tag1')
+ await storage.add_tag('tag2')
+ tags = await storage.pop_tags()
+ assert(storage._tags == [])
+ assert(tags == ['tag1', 'tag2'])
+
+ [await storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, str(i)) for i in [500, 501, 502]]
+ [await storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, str(i)) for i in [400, 401, 402]]
+ await storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, '502')
+ [await storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, str(i)) for i in [501, 502]]
+ await storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, '501')
+ await storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, '505')
+ [await storage.record_sync_error(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, '502') for i in range(5)]
+ http_errors = await storage.pop_http_errors()
+ assert(http_errors == {'httpErrors': {'split': {'400': 1, '401': 1, '402': 1}, 'segment': {'500': 1, '501': 1, '502': 1},
+ 'impression': {'502': 1}, 'impressionCount': {'501': 1, '502': 1},
+ 'event': {'501': 1}, 'telemetry': {'505': 1}, 'token': {'502': 5}}})
+ assert(storage._http_sync_errors._split == {})
+ assert(storage._http_sync_errors._segment == {})
+ assert(storage._http_sync_errors._impression == {})
+ assert(storage._http_sync_errors._impression_count == {})
+ assert(storage._http_sync_errors._event == {})
+ assert(storage._http_sync_errors._telemetry == {})
+
+ await storage.record_auth_rejections()
+ await storage.record_auth_rejections()
+ auth_rejections = await storage.pop_auth_rejections()
+ assert(storage._counters._auth_rejections == 0)
+ assert(auth_rejections == 2)
+
+ await storage.record_token_refreshes()
+ await storage.record_token_refreshes()
+ token_refreshes = await storage.pop_token_refreshes()
+ assert(storage._counters._token_refreshes == 0)
+ assert(token_refreshes == 2)
+
+ await storage.record_streaming_event((ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED, 'split', 1234))
+ await storage.record_streaming_event((ModelTelemetry.StreamingEventTypes.OCCUPANCY_PRI, 'split', 1234))
+ streaming_events = await storage.pop_streaming_events()
+ assert(storage._streaming_events._streaming_events == [])
+ assert(streaming_events == {'streamingEvents': [{'e': ModelTelemetry.StreamingEventTypes.CONNECTION_ESTABLISHED.value, 'd': 'split', 't': 1234},
+ {'e': ModelTelemetry.StreamingEventTypes.OCCUPANCY_PRI.value, 'd': 'split', 't': 1234}]})
+
+ @pytest.mark.asyncio
+ async def test_pop_latencies(self):
+ storage = await InMemoryTelemetryStorageAsync.create()
+
+ [await storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT, i) for i in [5, 10, 10, 10]]
+ [await storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS, i) for i in [7, 10, 14, 13]]
+ [await storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG, i) for i in [200]]
+ [await storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG, i) for i in [50, 40]]
+ [await storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET, i) for i in [15, 20]]
+ [await storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS, i) for i in [14, 25]]
+ [await storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET, i) for i in [100]]
+ [await storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS, i) for i in [50, 20]]
+ [await storage.record_latency(ModelTelemetry.MethodExceptionsAndLatencies.TRACK, i) for i in [1, 10, 100]]
+ latencies = await storage.pop_latencies()
+
+ assert(storage._method_latencies._treatment == [0] * 23)
+ assert(storage._method_latencies._treatments == [0] * 23)
+ assert(storage._method_latencies._treatment_with_config == [0] * 23)
+ assert(storage._method_latencies._treatments_with_config == [0] * 23)
+ assert(storage._method_latencies._treatments_by_flag_set == [0] * 23)
+ assert(storage._method_latencies._treatments_by_flag_sets == [0] * 23)
+ assert(storage._method_latencies._treatments_with_config_by_flag_set == [0] * 23)
+ assert(storage._method_latencies._treatments_with_config_by_flag_sets == [0] * 23)
+ assert(storage._method_latencies._track == [0] * 23)
+ assert(latencies == {'methodLatencies': {
+ 'treatment': [4] + [0] * 22,
+ 'treatments': [4] + [0] * 22,
+ 'treatment_with_config': [1] + [0] * 22,
+ 'treatments_with_config': [2] + [0] * 22,
+ 'treatments_by_flag_set': [2] + [0] * 22,
+ 'treatments_by_flag_sets': [2] + [0] * 22,
+ 'treatments_with_config_by_flag_set': [1] + [0] * 22,
+ 'treatments_with_config_by_flag_sets': [2] + [0] * 22,
+ 'track': [3] + [0] * 22}})
+
+ [await storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SPLIT, i) for i in [50, 10, 20, 40]]
+ [await storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.SEGMENT, i) for i in [70, 100, 40, 30]]
+ [await storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION, i) for i in [10, 20]]
+ [await storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.IMPRESSION_COUNT, i) for i in [5, 10]]
+ [await storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.EVENT, i) for i in [50, 40]]
+ [await storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TELEMETRY, i) for i in [100, 50, 160]]
+ [await storage.record_sync_latency(ModelTelemetry.HTTPExceptionsAndLatencies.TOKEN, i) for i in [10, 15, 100]]
+ sync_latency = await storage.pop_http_latencies()
+
+ assert(storage._http_latencies._split == [0] * 23)
+ assert(storage._http_latencies._segment == [0] * 23)
+ assert(storage._http_latencies._impression == [0] * 23)
+ assert(storage._http_latencies._impression_count == [0] * 23)
+ assert(storage._http_latencies._telemetry == [0] * 23)
+ assert(storage._http_latencies._token == [0] * 23)
+ assert(sync_latency == {'httpLatencies': {'split': [4] + [0] * 22, 'segment': [4] + [0] * 22,
+ 'impression': [2] + [0] * 22, 'impressionCount': [2] + [0] * 22, 'event': [2] + [0] * 22,
+ 'telemetry': [3] + [0] * 22, 'token': [3] + [0] * 22}})
+
+class InMemoryRuleBasedSegmentStorageTests(object):
+ """In memory rule based segment storage test cases."""
+
+ def test_storing_retrieving_segments(self, mocker):
+ """Test storing and retrieving splits works."""
+ events_queue = queue.Queue()
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+
+ segment1 = mocker.Mock(spec=RuleBasedSegment)
+ name_property = mocker.PropertyMock()
+ name_property.return_value = 'some_segment'
+ type(segment1).name = name_property
+
+ segment2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'segment2'
+ type(segment2).name = name2_prop
+
+ rbs_storage.update([segment1, segment2], [], -1)
+ assert rbs_storage.get('some_segment') == segment1
+ assert rbs_storage.get_segment_names() == ['some_segment', 'segment2']
+ assert rbs_storage.get('nonexistant_segment') is None
+
+ rbs_storage.update([], ['some_segment'], -1)
+ assert rbs_storage.get('some_segment') is None
+
+ def test_store_get_changenumber(self):
+ """Test that storing and retrieving change numbers works."""
+ events_queue = queue.Queue()
+ storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ assert storage.get_change_number() == -1
+ storage.update([], [], 5)
+ assert storage.get_change_number() == 5
+
+ def test_contains(self):
+ raw = {
+ "changeNumber": 123,
+ "name": "segment1",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":[],
+ "segments":[]
+ },
+ "conditions": []
+ }
+ segment1 = rule_based_segments.from_raw(raw)
+ raw2 = copy.deepcopy(raw)
+ raw2["name"] = "segment2"
+ segment2 = rule_based_segments.from_raw(raw2)
+ raw3 = copy.deepcopy(raw)
+ raw3["name"] = "segment3"
+ segment3 = rule_based_segments.from_raw(raw3)
+ events_queue = queue.Queue()
+ storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ storage.update([segment1, segment2, segment3], [], -1)
+ assert storage.contains(["segment1"])
+ assert storage.contains(["segment1", "segment3"])
+ assert not storage.contains(["segment5"])
+
+ def test_internal_event_notification(self, mocker):
+ """Test storing and retrieving splits works."""
+ events_queue = queue.Queue()
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+
+ segment1 = mocker.Mock(spec=RuleBasedSegment)
+ name_property = mocker.PropertyMock()
+ name_property.return_value = 'some_segment'
+ type(segment1).name = name_property
+
+ segment2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'segment2'
+ type(segment2).name = name2_prop
+
+ rbs_storage.update([segment1, segment2], [], -1)
+ event = events_queue.get()
+ assert event.internal_event == SdkInternalEvent.RB_SEGMENTS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.SEGMENTS_UPDATE
+ assert len(event.metadata.get_names()) == 0
+
+ rbs_storage.update([], ['some_segment'], -1)
+ assert event.internal_event == SdkInternalEvent.RB_SEGMENTS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.SEGMENTS_UPDATE
+ assert len(event.metadata.get_names()) == 0
+
+class InMemoryRuleBasedSegmentStorageAsyncTests(object):
+ """In memory rule based segment storage test cases."""
+
+ @pytest.mark.asyncio
+ async def test_storing_retrieving_segments(self, mocker):
+ """Test storing and retrieving splits works."""
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(asyncio.Queue())
+
+ segment1 = mocker.Mock(spec=RuleBasedSegment)
+ name_property = mocker.PropertyMock()
+ name_property.return_value = 'some_segment'
+ type(segment1).name = name_property
+
+ segment2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'segment2'
+ type(segment2).name = name2_prop
+
+ await rbs_storage.update([segment1, segment2], [], -1)
+ assert await rbs_storage.get('some_segment') == segment1
+ assert await rbs_storage.get_segment_names() == ['some_segment', 'segment2']
+ assert await rbs_storage.get('nonexistant_segment') is None
+
+ await rbs_storage.update([], ['some_segment'], -1)
+ assert await rbs_storage.get('some_segment') is None
+
+ @pytest.mark.asyncio
+ async def test_store_get_changenumber(self):
+ """Test that storing and retrieving change numbers works."""
+ storage = InMemoryRuleBasedSegmentStorageAsync(asyncio.Queue())
+ assert await storage.get_change_number() == -1
+ await storage.update([], [], 5)
+ assert await storage.get_change_number() == 5
+
+ @pytest.mark.asyncio
+ async def test_contains(self):
+ raw = {
+ "changeNumber": 123,
+ "name": "segment1",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":[],
+ "segments":[]
+ },
+ "conditions": []
+ }
+ segment1 = rule_based_segments.from_raw(raw)
+ raw2 = copy.deepcopy(raw)
+ raw2["name"] = "segment2"
+ segment2 = rule_based_segments.from_raw(raw2)
+ raw3 = copy.deepcopy(raw)
+ raw3["name"] = "segment3"
+ segment3 = rule_based_segments.from_raw(raw3)
+ storage = InMemoryRuleBasedSegmentStorageAsync(asyncio.Queue())
+ await storage.update([segment1, segment2, segment3], [], -1)
+ assert await storage.contains(["segment1"])
+ assert await storage.contains(["segment1", "segment3"])
+ assert not await storage.contains(["segment5"])
+
+ @pytest.mark.asyncio
+ async def test_internal_event_notification(self, mocker):
+ """Test storing and retrieving splits works."""
+ events_queue = asyncio.Queue()
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(events_queue)
+
+ segment1 = mocker.Mock(spec=RuleBasedSegment)
+ name_property = mocker.PropertyMock()
+ name_property.return_value = 'some_segment'
+ type(segment1).name = name_property
+
+ segment2 = mocker.Mock()
+ name2_prop = mocker.PropertyMock()
+ name2_prop.return_value = 'segment2'
+ type(segment2).name = name2_prop
+
+ await rbs_storage.update([segment1, segment2], [], -1)
+ event = await events_queue.get()
+ assert event.internal_event == SdkInternalEvent.RB_SEGMENTS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.SEGMENTS_UPDATE
+ assert len(event.metadata.get_names()) == 0
+
+ await rbs_storage.update([], ['some_segment'], -1)
+ event = await events_queue.get()
+ assert event.internal_event == SdkInternalEvent.RB_SEGMENTS_UPDATED
+ assert event.metadata.get_type() == SdkEventType.SEGMENTS_UPDATE
+ assert len(event.metadata.get_names()) == 0
+
diff --git a/tests/storage/test_pluggable.py b/tests/storage/test_pluggable.py
new file mode 100644
index 00000000..8b5f9a95
--- /dev/null
+++ b/tests/storage/test_pluggable.py
@@ -0,0 +1,1500 @@
+"""Pluggable storage test module."""
+import json
+import threading
+import copy
+import pytest
+
+from splitio.optional.loaders import asyncio
+from splitio.models.splits import Split
+from splitio.models import splits, segments, rule_based_segments
+from splitio.models.segments import Segment
+from splitio.models.impressions import Impression
+from splitio.models.events import Event, EventWrapper
+from splitio.storage.pluggable import PluggableSplitStorage, PluggableSegmentStorage, PluggableImpressionsStorage, PluggableEventsStorage, \
+ PluggableTelemetryStorage, PluggableEventsStorageAsync, PluggableSegmentStorageAsync, PluggableImpressionsStorageAsync,\
+ PluggableSplitStorageAsync, PluggableTelemetryStorageAsync, PluggableRuleBasedSegmentsStorage, PluggableRuleBasedSegmentsStorageAsync
+from splitio.client.util import get_metadata, SdkMetadata
+from splitio.models.telemetry import MAX_TAGS, MethodExceptionsAndLatencies, OperationMode
+from tests.integration import splits_json, rbsegments_json
+
+class StorageMockAdapter(object):
+ def __init__(self):
+ self._keys = {}
+ self._expire = {}
+ self._lock = threading.RLock()
+
+ def get(self, key):
+ with self._lock:
+ if key not in self._keys:
+ return None
+ return self._keys[key]
+
+ def get_items(self, key):
+ with self._lock:
+ if key not in self._keys:
+ return None
+ return list(self._keys[key])
+
+ def set(self, key, value):
+ with self._lock:
+ self._keys[key] = value
+
+ def push_items(self, key, *value):
+ with self._lock:
+ items = []
+ if key in self._keys:
+ items = self._keys[key]
+ [items.append(item) for item in value]
+ self._keys[key] = items
+ return len(self._keys[key])
+
+ def delete(self, key):
+ with self._lock:
+ if key in self._keys:
+ del self._keys[key]
+
+ def pop_items(self, key):
+ with self._lock:
+ if key not in self._keys:
+ return None
+ items = list(self._keys[key])
+ del self._keys[key]
+ return items
+
+ def increment(self, key, value):
+ with self._lock:
+ if key not in self._keys:
+ self._keys[key] = 0
+ self._keys[key]+= value
+ return self._keys[key]
+
+ def decrement(self, key, value):
+ with self._lock:
+ if key not in self._keys:
+ return None
+ self._keys[key]-= value
+ return self._keys[key]
+
+ def get_keys_by_prefix(self, prefix):
+ with self._lock:
+ keys = []
+ for key in self._keys:
+ if prefix in key:
+ keys.append(key)
+ return keys
+
+ def get_many(self, keys):
+ with self._lock:
+ returned_keys = []
+ for key in self._keys:
+ if key in keys:
+ returned_keys.append(self._keys[key])
+ return returned_keys
+
+ def add_items(self, key, added_items):
+ with self._lock:
+ items = set()
+ if key in self._keys:
+ items = set(self._keys[key])
+ [items.add(item) for item in added_items]
+ self._keys[key] = items
+
+ def remove_items(self, key, removed_items):
+ with self._lock:
+ new_items = set()
+ for item in self._keys[key]:
+ if item not in removed_items:
+ new_items.add(item)
+ self._keys[key] = new_items
+
+ def item_contains(self, key, item):
+ with self._lock:
+ if item in self._keys[key]:
+ return True
+ return False
+
+ def get_items_count(self, key):
+ with self._lock:
+ if key in self._keys:
+ return len(self._keys[key])
+ return None
+
+ def expire(self, key, ttl):
+ with self._lock:
+ if key in self._expire:
+ self._expire[key] = -1
+ else:
+ self._expire[key] = ttl
+ # should only be called once per key.
+
+class StorageMockAdapterAsync(object):
+ def __init__(self):
+ self._keys = {}
+ self._expire = {}
+ self._lock = asyncio.Lock()
+
+ async def get(self, key):
+ async with self._lock:
+ if key not in self._keys:
+ return None
+ return self._keys[key]
+
+ async def get_items(self, key):
+ async with self._lock:
+ if key not in self._keys:
+ return None
+ return list(self._keys[key])
+
+ async def set(self, key, value):
+ async with self._lock:
+ self._keys[key] = value
+
+ async def push_items(self, key, *value):
+ async with self._lock:
+ items = []
+ if key in self._keys:
+ items = self._keys[key]
+ [items.append(item) for item in value]
+ self._keys[key] = items
+ return len(self._keys[key])
+
+ async def delete(self, key):
+ async with self._lock:
+ if key in self._keys:
+ del self._keys[key]
+
+ async def pop_items(self, key):
+ async with self._lock:
+ if key not in self._keys:
+ return None
+ items = list(self._keys[key])
+ del self._keys[key]
+ return items
+
+ async def increment(self, key, value):
+ async with self._lock:
+ if key not in self._keys:
+ self._keys[key] = 0
+ self._keys[key]+= value
+ return self._keys[key]
+
+ async def decrement(self, key, value):
+ async with self._lock:
+ if key not in self._keys:
+ return None
+ self._keys[key]-= value
+ return self._keys[key]
+
+ async def get_keys_by_prefix(self, prefix):
+ async with self._lock:
+ keys = []
+ for key in self._keys:
+ if prefix in key:
+ keys.append(key)
+ return keys
+
+ async def get_many(self, keys):
+ async with self._lock:
+ returned_keys = []
+ for key in self._keys:
+ if key in keys:
+ returned_keys.append(self._keys[key])
+ return returned_keys
+
+ async def add_items(self, key, added_items):
+ async with self._lock:
+ items = set()
+ if key in self._keys:
+ items = set(self._keys[key])
+ [items.add(item) for item in added_items]
+ self._keys[key] = items
+
+ async def remove_items(self, key, removed_items):
+ async with self._lock:
+ new_items = set()
+ for item in self._keys[key]:
+ if item not in removed_items:
+ new_items.add(item)
+ self._keys[key] = new_items
+
+ async def item_contains(self, key, item):
+ async with self._lock:
+ if item in self._keys[key]:
+ return True
+ return False
+
+ async def get_items_count(self, key):
+ async with self._lock:
+ if key in self._keys:
+ return len(self._keys[key])
+ return None
+
+ async def expire(self, key, ttl):
+ async with self._lock:
+ if key in self._expire:
+ self._expire[key] = -1
+ else:
+ self._expire[key] = ttl
+
+
+class PluggableSplitStorageTests(object):
+ """In memory split storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapter()
+
+ def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorage(self.mock_adapter, prefix=sprefix)
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ assert(pluggable_split_storage._prefix == prefix + "SPLITIO.split.{feature_flag_name}")
+ assert(pluggable_split_storage._traffic_type_prefix == prefix + "SPLITIO.trafficType.{traffic_type_name}")
+ assert(pluggable_split_storage._feature_flag_till_prefix == prefix + "SPLITIO.splits.till")
+
+ # TODO: To be added when producer mode is aupported
+# def test_put_many(self):
+# split1 = splits.from_raw(splits_json['splitChange1_2']['splits'][0])
+# split2_temp = splits_json['splitChange1_2']['splits'][0].copy()
+# split2_temp['name'] = 'another_split'
+# split2 = splits.from_raw(split2_temp)
+# change_number = splits_json['splitChange1_2']['till']
+# traffic_type = splits_json['splitChange1_2']['splits'][0]['trafficTypeName']
+#
+# self.pluggable_split_storage.put_many([split1, split2], change_number)
+# assert (self.mock_adapter._keys['myprefix.SPLITIO.split.' + split1.name] == split1.to_json())
+# assert (self.mock_adapter._keys['myprefix.SPLITIO.split.' + split2.name] == split2.to_json())
+# assert (self.mock_adapter._keys['myprefix.SPLITIO.trafficType.' + traffic_type] == 2)
+# assert (self.mock_adapter._keys["myprefix.SPLITIO.splits.till"] == change_number)
+
+ def test_get(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorage(self.mock_adapter, prefix=sprefix)
+
+ split1 = splits.from_raw(splits_json['splitChange1_2']['ff']['d'][0])
+ split_name = splits_json['splitChange1_2']['ff']['d'][0]['name']
+
+ self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split_name), split1.to_json())
+ assert(pluggable_split_storage.get(split_name).to_json() == splits.from_raw(splits_json['splitChange1_2']['ff']['d'][0]).to_json())
+ assert(pluggable_split_storage.get('not_existing') == None)
+
+ def test_fetch_many(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorage(self.mock_adapter, prefix=sprefix)
+ split1 = splits.from_raw(splits_json['splitChange1_2']['ff']['d'][0])
+ split2_temp = splits_json['splitChange1_2']['ff']['d'][0].copy()
+ split2_temp['name'] = 'another_split'
+ split2 = splits.from_raw(split2_temp)
+
+ self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split1.name), split1.to_json())
+ self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split2.name), split2.to_json())
+ fetched = pluggable_split_storage.fetch_many([split1.name, split2.name])
+ assert(fetched[split1.name].to_json() == split1.to_json())
+ assert(fetched[split2.name].to_json() == split2.to_json())
+
+ # TODO: To be added when producer mode is aupported
+# def test_remove(self):
+# self.mock_adapter._keys = {}
+# split1 = splits.from_raw(splits_json['splitChange1_2']['splits'][0])
+# change_number = splits_json['splitChange1_2']['till']
+# split_name = splits_json['splitChange1_2']['splits'][0]['name']
+# traffic_type = splits_json['splitChange1_2']['splits'][0]['trafficTypeName']
+#
+# self.pluggable_split_storage.put_many([split1], change_number)
+# assert(self.pluggable_split_storage.traffic_type_exists(traffic_type) == True)
+# self.pluggable_split_storage.remove(split1.name)
+# assert(self.pluggable_split_storage.get(split_name) == None)
+# assert(self.pluggable_split_storage.traffic_type_exists(traffic_type) == False)
+
+ def test_get_change_number(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorage(self.mock_adapter, prefix=sprefix)
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ self.mock_adapter.set(prefix + "SPLITIO.splits.till", 1234)
+ assert(pluggable_split_storage.get_change_number() == 1234)
+
+ def test_get_split_names(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorage(self.mock_adapter, prefix=sprefix)
+ split1 = splits.from_raw(splits_json['splitChange1_2']['ff']['d'][0])
+ split2_temp = splits_json['splitChange1_2']['ff']['d'][0].copy()
+ split2_temp['name'] = 'another_split'
+ split2 = splits.from_raw(split2_temp)
+ self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split1.name), split1.to_json())
+ self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split2.name), split2.to_json())
+ assert(pluggable_split_storage.get_split_names() == [split1.name, split2.name])
+
+ # TODO: To be added when producer mode is aupported
+# def test_kill_locally(self):
+# self.mock_adapter._keys = {}
+# split_temp = splits_json['splitChange1_2']['splits'][0]
+# split_temp['killed'] = False
+# split1 = splits.from_raw(split_temp)
+# split_name = splits_json['splitChange1_2']['splits'][0]['name']
+#
+# self.pluggable_split_storage.put_many([split1], 123)
+#
+ # should not apply if change number is lower
+# self.pluggable_split_storage.kill_locally(split_name, "off", 12)
+# assert(self.pluggable_split_storage.get(split_name).killed == False)
+#
+# self.pluggable_split_storage.kill_locally(split_name, "off", 124)
+# assert(self.pluggable_split_storage.get(split_name).killed == True)
+
+ # TODO: To be added when producer mode is aupported
+# def test_traffic_type_count(self):
+# self.mock_adapter._keys = {}
+# self.pluggable_split_storage._increase_traffic_type_count('user')
+# assert(self.pluggable_split_storage.is_valid_traffic_type('user'))
+#
+# self.pluggable_split_storage._increase_traffic_type_count('user')
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.trafficType.user'] == 2)
+#
+# self.pluggable_split_storage._decrease_traffic_type_count('user')
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.trafficType.user'] == 1)
+#
+# self.pluggable_split_storage._decrease_traffic_type_count('user')
+# assert(not self.pluggable_split_storage.is_valid_traffic_type('user'))
+
+ # TODO: To be added when producer mode is aupported
+# def test_put(self):
+# self.mock_adapter._keys = {}
+# split = splits.from_raw(splits_json['splitChange1_2']['splits'][0])
+# self.pluggable_split_storage.put(split)
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.trafficType.user'] == 1)
+# assert(split.to_json() == self.mock_adapter.get('myprefix.SPLITIO.split.' + split.name))
+#
+ # changing traffic type should delete existing one and add new one
+# split._traffic_type_name = 'account'
+# self.pluggable_split_storage.put(split)
+# assert('myprefix.SPLITIO.trafficType.user' not in self.mock_adapter._keys)
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.trafficType.account'] == 1)
+#
+ # making update without changing traffic type should not increase the count
+# split._killed = 'False'
+# self.pluggable_split_storage.put(split)
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.trafficType.account'] == 1)
+# assert(split.to_json()['killed'] == self.mock_adapter.get('myprefix.SPLITIO.split.' + split.name)['killed'])
+
+
+class PluggableSplitStorageAsyncTests(object):
+ """In memory async split storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapterAsync()
+
+ def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorageAsync(self.mock_adapter, prefix=sprefix)
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ assert(pluggable_split_storage._prefix == prefix + "SPLITIO.split.{feature_flag_name}")
+ assert(pluggable_split_storage._traffic_type_prefix == prefix + "SPLITIO.trafficType.{traffic_type_name}")
+ assert(pluggable_split_storage._feature_flag_till_prefix == prefix + "SPLITIO.splits.till")
+
+ @pytest.mark.asyncio
+ async def test_get(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorageAsync(self.mock_adapter, prefix=sprefix)
+
+ split1 = splits.from_raw(splits_json['splitChange1_2']['ff']['d'][0])
+ split_name = splits_json['splitChange1_2']['ff']['d'][0]['name']
+
+ await self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split_name), split1.to_json())
+ split = await pluggable_split_storage.get(split_name)
+ assert(split.to_json() == splits.from_raw(splits_json['splitChange1_2']['ff']['d'][0]).to_json())
+ assert(await pluggable_split_storage.get('not_existing') == None)
+
+ @pytest.mark.asyncio
+ async def test_fetch_many(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorageAsync(self.mock_adapter, prefix=sprefix)
+ split1 = splits.from_raw(splits_json['splitChange1_2']['ff']['d'][0])
+ split2_temp = splits_json['splitChange1_2']['ff']['d'][0].copy()
+ split2_temp['name'] = 'another_split'
+ split2 = splits.from_raw(split2_temp)
+
+ await self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split1.name), split1.to_json())
+ await self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split2.name), split2.to_json())
+ fetched = await pluggable_split_storage.fetch_many([split1.name, split2.name])
+ assert(fetched[split1.name].to_json() == split1.to_json())
+ assert(fetched[split2.name].to_json() == split2.to_json())
+
+ @pytest.mark.asyncio
+ async def test_get_change_number(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorageAsync(self.mock_adapter, prefix=sprefix)
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ await self.mock_adapter.set(prefix + "SPLITIO.splits.till", 1234)
+ assert(await pluggable_split_storage.get_change_number() == 1234)
+
+ @pytest.mark.asyncio
+ async def test_get_split_names(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_split_storage = PluggableSplitStorageAsync(self.mock_adapter, prefix=sprefix)
+ split1 = splits.from_raw(splits_json['splitChange1_2']['ff']['d'][0])
+ split2_temp = splits_json['splitChange1_2']['ff']['d'][0].copy()
+ split2_temp['name'] = 'another_split'
+ split2 = splits.from_raw(split2_temp)
+ await self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split1.name), split1.to_json())
+ await self.mock_adapter.set(pluggable_split_storage._prefix.format(feature_flag_name=split2.name), split2.to_json())
+
+ assert(await pluggable_split_storage.get_split_names() == [split1.name, split2.name])
+
+class PluggableSegmentStorageTests(object):
+ """In memory split storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapter()
+
+ def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorage(self.mock_adapter, prefix=sprefix)
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ assert(pluggable_segment_storage._prefix == prefix + "SPLITIO.segment.{segment_name}")
+ assert(pluggable_segment_storage._segment_till_prefix == prefix + "SPLITIO.segment.{segment_name}.till")
+
+ # TODO: to be added when get_keys() is added
+# def test_update(self):
+# self.mock_adapter.set(self.pluggable_segment_storage._prefix.format(segment_name='segment1'), {'key1', 'key2'})
+# self.mock_adapter.set(self.pluggable_segment_storage._segment_till_prefix.format(segment_name='segment1'), 123)
+#
+# assert('myprefix.SPLITIO.segment.segment1' in self.mock_adapter._keys)
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.segment.segment1'] == set(['key1', 'key2']))
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.segment.segment1.till'] == 123)
+
+ def test_get_change_number(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorage(self.mock_adapter, prefix=sprefix)
+ assert(pluggable_segment_storage.get_change_number('segment1') is None)
+
+ self.mock_adapter.set(pluggable_segment_storage._segment_till_prefix.format(segment_name='segment1'), 123)
+ assert(pluggable_segment_storage.get_change_number('segment1') == 123)
+
+ # TODO: To be added when producer mode is implemented
+# self.pluggable_segment_storage.set_change_number('segment1', 124)
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.segment.segment1.till'] == 124)
+
+ def test_get_segment_names(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorage(self.mock_adapter, prefix=sprefix)
+ assert(pluggable_segment_storage.get_segment_names() == [])
+
+ self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment1'), {'key1', 'key2'})
+ self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment2'), {})
+ self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment3'), {'key1', 'key5'})
+ assert(pluggable_segment_storage.get_segment_names() == ['segment1', 'segment2', 'segment3'])
+
+ # TODO: to be added when get_keys() is added
+# def test_get_keys(self):
+# self.mock_adapter._keys = {}
+# self.pluggable_segment_storage.update('segment1', ['key1', 'key2'], [], 123)
+# assert(self.pluggable_segment_storage.get_keys('segment1').sort() == ['key1', 'key2'].sort())
+
+ def test_segment_contains(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorage(self.mock_adapter, prefix=sprefix)
+ self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment1'), {'key1', 'key2'})
+ assert(not pluggable_segment_storage.segment_contains('segment1', 'key5'))
+ assert(pluggable_segment_storage.segment_contains('segment1', 'key1'))
+
+ # TODO: To be added when producer mode is implemented
+# def get_segment_keys_count(self):
+# self.mock_adapter._keys = {}
+# self.pluggable_segment_storage.update('segment1', ['key1', 'key2'], [], 123)
+# self.pluggable_segment_storage.update('segment2', [], [], 123)
+# self.pluggable_segment_storage.update('segment3', ['key1', 'key5'], [], 123)
+# assert(self.pluggable_segment_storage.get_segment_keys_count() == 4)
+
+ def test_get(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorage(self.mock_adapter, prefix=sprefix)
+ self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment1'), {'key1', 'key2'})
+ segment = pluggable_segment_storage.get('segment1')
+ assert(segment.name == 'segment1')
+ assert(segment.keys == {'key1', 'key2'})
+
+ # TODO: To be added when producer mode is implemented
+# def test_put(self):
+# self.mock_adapter._keys = {}
+# self.pluggable_segment_storage.update('segment1', ['key1', 'key2'], [], 123)
+# segment = self.pluggable_segment_storage.get('segment1')
+# segment._name = 'segment2'
+# segment._keys.add('key3')
+#
+# self.pluggable_segment_storage.put(segment)
+# assert('myprefix.SPLITIO.segment.segment2' in self.mock_adapter._keys)
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.segment.segment2'] == {'key1', 'key2', 'key3'})
+# assert(self.mock_adapter._keys['myprefix.SPLITIO.segment.segment2.till'] == 123)
+
+
+class PluggableSegmentStorageAsyncTests(object):
+ """In memory async segment storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapterAsync()
+
+ def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorageAsync(self.mock_adapter, prefix=sprefix)
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ assert(pluggable_segment_storage._prefix == prefix + "SPLITIO.segment.{segment_name}")
+ assert(pluggable_segment_storage._segment_till_prefix == prefix + "SPLITIO.segment.{segment_name}.till")
+
+ @pytest.mark.asyncio
+ async def test_get_change_number(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorageAsync(self.mock_adapter, prefix=sprefix)
+ assert(await pluggable_segment_storage.get_change_number('segment1') is None)
+
+ await self.mock_adapter.set(pluggable_segment_storage._segment_till_prefix.format(segment_name='segment1'), 123)
+ assert(await pluggable_segment_storage.get_change_number('segment1') == 123)
+
+ @pytest.mark.asyncio
+ async def test_get_segment_names(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorageAsync(self.mock_adapter, prefix=sprefix)
+ assert(await pluggable_segment_storage.get_segment_names() == [])
+
+ await self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment1'), {'key1', 'key2'})
+ await self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment2'), {})
+ await self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment3'), {'key1', 'key5'})
+ assert(await pluggable_segment_storage.get_segment_names() == ['segment1', 'segment2', 'segment3'])
+
+ @pytest.mark.asyncio
+ async def test_segment_contains(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorageAsync(self.mock_adapter, prefix=sprefix)
+ await self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment1'), {'key1', 'key2'})
+ assert(not await pluggable_segment_storage.segment_contains('segment1', 'key5'))
+ assert(await pluggable_segment_storage.segment_contains('segment1', 'key1'))
+
+ @pytest.mark.asyncio
+ async def test_get(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_segment_storage = PluggableSegmentStorageAsync(self.mock_adapter, prefix=sprefix)
+ await self.mock_adapter.set(pluggable_segment_storage._prefix.format(segment_name='segment1'), {'key1', 'key2'})
+ segment = await pluggable_segment_storage.get('segment1')
+ assert(segment.name == 'segment1')
+ assert(segment.keys == {'key1', 'key2'})
+
+
+class PluggableImpressionsStorageTests(object):
+ """In memory impressions storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapter()
+ self.metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+
+ def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_imp_storage = PluggableImpressionsStorage(self.mock_adapter, self.metadata, prefix=sprefix)
+ assert(pluggable_imp_storage._impressions_queue_key == prefix + "SPLITIO.impressions")
+ assert(pluggable_imp_storage._sdk_metadata == {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ })
+
+
+ def test_put(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_imp_storage = PluggableImpressionsStorage(self.mock_adapter, self.metadata, prefix=sprefix)
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None)
+ ]
+ assert(pluggable_imp_storage.put(impressions))
+ assert(pluggable_imp_storage._impressions_queue_key in self.mock_adapter._keys)
+ assert(self.mock_adapter._keys[prefix + "SPLITIO.impressions"] == pluggable_imp_storage._wrap_impressions(impressions))
+ assert(self.mock_adapter._expire[prefix + "SPLITIO.impressions"] == PluggableImpressionsStorage.IMPRESSIONS_KEY_DEFAULT_TTL)
+
+ impressions2 = [
+ Impression('key5', 'feature1', 'off', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key6', 'feature2', 'off', 'some_label', 123456, 'buck1', 321654, None, None),
+ ]
+ assert(pluggable_imp_storage.put(impressions2))
+ assert(self.mock_adapter._keys[prefix + "SPLITIO.impressions"] == pluggable_imp_storage._wrap_impressions(impressions + impressions2))
+
+ def test_wrap_impressions(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_imp_storage = PluggableImpressionsStorage(self.mock_adapter, self.metadata, prefix=sprefix)
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'off', 'some_label', 123456, 'buck1', 321654, None, None),
+ ]
+ assert(pluggable_imp_storage._wrap_impressions(impressions) == [
+ json.dumps({
+ 'm': {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ },
+ 'i': {
+ 'k': 'key1',
+ 'b': 'buck1',
+ 'f': 'feature1',
+ 't': 'on',
+ 'r': 'some_label',
+ 'c': 123456,
+ 'm': 321654,
+ 'properties': None
+ }
+ }),
+ json.dumps({
+ 'm': {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ },
+ 'i': {
+ 'k': 'key2',
+ 'b': 'buck1',
+ 'f': 'feature2',
+ 't': 'off',
+ 'r': 'some_label',
+ 'c': 123456,
+ 'm': 321654,
+ 'properties': None
+ }
+ })
+ ])
+
+ def test_expire_key(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_imp_storage = PluggableImpressionsStorage(self.mock_adapter, self.metadata, prefix=sprefix)
+ self.expired_called = False
+ self.key = ""
+ self.ttl = 0
+ def mock_expire(impressions_queue_key, ttl):
+ self.key = impressions_queue_key
+ self.ttl = ttl
+ self.expired_called = True
+
+ self.mock_adapter.expire = mock_expire
+
+ # should not call if total_keys are higher
+ pluggable_imp_storage.expire_key(200, 10)
+ assert(not self.expired_called)
+
+ pluggable_imp_storage.expire_key(200, 200)
+ assert(self.expired_called)
+ assert(self.key == prefix + "SPLITIO.impressions")
+ assert(self.ttl == pluggable_imp_storage.IMPRESSIONS_KEY_DEFAULT_TTL)
+
+
+class PluggableImpressionsStorageAsyncTests(object):
+ """In memory impressions storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapterAsync()
+ self.metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+
+ def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_imp_storage = PluggableImpressionsStorageAsync(self.mock_adapter, self.metadata, prefix=sprefix)
+ assert(pluggable_imp_storage._impressions_queue_key == prefix + "SPLITIO.impressions")
+ assert(pluggable_imp_storage._sdk_metadata == {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ })
+
+ @pytest.mark.asyncio
+ async def test_put(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_imp_storage = PluggableImpressionsStorageAsync(self.mock_adapter, self.metadata, prefix=sprefix)
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None)
+ ]
+ assert(await pluggable_imp_storage.put(impressions))
+ assert(pluggable_imp_storage._impressions_queue_key in self.mock_adapter._keys)
+ assert(self.mock_adapter._keys[prefix + "SPLITIO.impressions"] == pluggable_imp_storage._wrap_impressions(impressions))
+ assert(self.mock_adapter._expire[prefix + "SPLITIO.impressions"] == PluggableImpressionsStorageAsync.IMPRESSIONS_KEY_DEFAULT_TTL)
+
+ impressions2 = [
+ Impression('key5', 'feature1', 'off', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key6', 'feature2', 'off', 'some_label', 123456, 'buck1', 321654, None, None),
+ ]
+ assert(await pluggable_imp_storage.put(impressions2))
+ assert(self.mock_adapter._keys[prefix + "SPLITIO.impressions"] == pluggable_imp_storage._wrap_impressions(impressions + impressions2))
+
+ def test_wrap_impressions(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_imp_storage = PluggableImpressionsStorageAsync(self.mock_adapter, self.metadata, prefix=sprefix)
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'off', 'some_label', 123456, 'buck1', 321654, None, None),
+ ]
+ assert(pluggable_imp_storage._wrap_impressions(impressions) == [
+ json.dumps({
+ 'm': {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ },
+ 'i': {
+ 'k': 'key1',
+ 'b': 'buck1',
+ 'f': 'feature1',
+ 't': 'on',
+ 'r': 'some_label',
+ 'c': 123456,
+ 'm': 321654,
+ 'properties': None
+ }
+ }),
+ json.dumps({
+ 'm': {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ },
+ 'i': {
+ 'k': 'key2',
+ 'b': 'buck1',
+ 'f': 'feature2',
+ 't': 'off',
+ 'r': 'some_label',
+ 'c': 123456,
+ 'm': 321654,
+ 'properties': None
+ }
+ })
+ ])
+
+ @pytest.mark.asyncio
+ async def test_expire_key(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_imp_storage = PluggableImpressionsStorageAsync(self.mock_adapter, self.metadata, prefix=sprefix)
+ self.expired_called = False
+ self.key = ""
+ self.ttl = 0
+ async def mock_expire(impressions_queue_key, ttl):
+ self.key = impressions_queue_key
+ self.ttl = ttl
+ self.expired_called = True
+
+ self.mock_adapter.expire = mock_expire
+
+ # should not call if total_keys are higher
+ await pluggable_imp_storage.expire_key(200, 10)
+ assert(not self.expired_called)
+
+ await pluggable_imp_storage.expire_key(200, 200)
+ assert(self.expired_called)
+ assert(self.key == prefix + "SPLITIO.impressions")
+ assert(self.ttl == pluggable_imp_storage.IMPRESSIONS_KEY_DEFAULT_TTL)
+
+
+class PluggableEventsStorageTests(object):
+ """Pluggable events storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapter()
+ self.metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+
+ def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_events_storage = PluggableEventsStorage(self.mock_adapter, self.metadata, prefix=sprefix)
+ assert(pluggable_events_storage._events_queue_key == prefix + "SPLITIO.events")
+ assert(pluggable_events_storage._sdk_metadata == {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ })
+
+ def test_put(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_events_storage = PluggableEventsStorage(self.mock_adapter, self.metadata, prefix=sprefix)
+ events = [
+ EventWrapper(event=Event('key1', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key2', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key3', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key4', 'user', 'purchase', 10, 123456, None), size=32768),
+ ]
+ assert(pluggable_events_storage.put(events))
+ assert(pluggable_events_storage._events_queue_key in self.mock_adapter._keys)
+ assert(self.mock_adapter._keys[prefix + "SPLITIO.events"] == pluggable_events_storage._wrap_events(events))
+ assert(self.mock_adapter._expire[prefix + "SPLITIO.events"] == PluggableEventsStorage._EVENTS_KEY_DEFAULT_TTL)
+
+ events2 = [
+ EventWrapper(event=Event('key5', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key6', 'user', 'purchase', 10, 123456, None), size=32768),
+ ]
+ assert(pluggable_events_storage.put(events2))
+ assert(self.mock_adapter._keys[prefix + "SPLITIO.events"] == pluggable_events_storage._wrap_events(events + events2))
+
+ def test_wrap_events(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_events_storage = PluggableEventsStorage(self.mock_adapter, self.metadata, prefix=sprefix)
+ events = [
+ EventWrapper(event=Event('key1', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key2', 'user', 'purchase', 10, 123456, None), size=32768),
+ ]
+ assert(pluggable_events_storage._wrap_events(events) == [
+ json.dumps({
+ 'e': {
+ 'key': 'key1',
+ 'trafficTypeName': 'user',
+ 'eventTypeId': 'purchase',
+ 'value': 10,
+ 'timestamp': 123456,
+ 'properties': None,
+ },
+ 'm': {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ }
+ }),
+ json.dumps({
+ 'e': {
+ 'key': 'key2',
+ 'trafficTypeName': 'user',
+ 'eventTypeId': 'purchase',
+ 'value': 10,
+ 'timestamp': 123456,
+ 'properties': None,
+ },
+ 'm': {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ }
+ })
+ ])
+
+ def test_expire_key(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_events_storage = PluggableEventsStorage(self.mock_adapter, self.metadata, prefix=sprefix)
+ self.expired_called = False
+ self.key = ""
+ self.ttl = 0
+ def mock_expire(impressions_event_key, ttl):
+ self.key = impressions_event_key
+ self.ttl = ttl
+ self.expired_called = True
+
+ self.mock_adapter.expire = mock_expire
+
+ # should not call if total_keys are higher
+ pluggable_events_storage.expire_key(200, 10)
+ assert(not self.expired_called)
+
+ pluggable_events_storage.expire_key(200, 200)
+ assert(self.expired_called)
+ assert(self.key == prefix + "SPLITIO.events")
+ assert(self.ttl == pluggable_events_storage._EVENTS_KEY_DEFAULT_TTL)
+
+
+class PluggableEventsStorageAsyncTests(object):
+ """Pluggable events storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapterAsync()
+ self.metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+
+ def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_events_storage = PluggableEventsStorageAsync(self.mock_adapter, self.metadata, prefix=sprefix)
+ assert(pluggable_events_storage._events_queue_key == prefix + "SPLITIO.events")
+ assert(pluggable_events_storage._sdk_metadata == {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ })
+
+ @pytest.mark.asyncio
+ async def test_put(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_events_storage = PluggableEventsStorageAsync(self.mock_adapter, self.metadata, prefix=sprefix)
+ events = [
+ EventWrapper(event=Event('key1', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key2', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key3', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key4', 'user', 'purchase', 10, 123456, None), size=32768),
+ ]
+ assert(await pluggable_events_storage.put(events))
+ assert(pluggable_events_storage._events_queue_key in self.mock_adapter._keys)
+ assert(self.mock_adapter._keys[prefix + "SPLITIO.events"] == pluggable_events_storage._wrap_events(events))
+ assert(self.mock_adapter._expire[prefix + "SPLITIO.events"] == PluggableEventsStorageAsync._EVENTS_KEY_DEFAULT_TTL)
+
+ events2 = [
+ EventWrapper(event=Event('key5', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key6', 'user', 'purchase', 10, 123456, None), size=32768),
+ ]
+ assert(await pluggable_events_storage.put(events2))
+ assert(self.mock_adapter._keys[prefix + "SPLITIO.events"] == pluggable_events_storage._wrap_events(events + events2))
+
+ def test_wrap_events(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_events_storage = PluggableEventsStorageAsync(self.mock_adapter, self.metadata, prefix=sprefix)
+ events = [
+ EventWrapper(event=Event('key1', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key2', 'user', 'purchase', 10, 123456, None), size=32768),
+ ]
+ assert(pluggable_events_storage._wrap_events(events) == [
+ json.dumps({
+ 'e': {
+ 'key': 'key1',
+ 'trafficTypeName': 'user',
+ 'eventTypeId': 'purchase',
+ 'value': 10,
+ 'timestamp': 123456,
+ 'properties': None,
+ },
+ 'm': {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ }
+ }),
+ json.dumps({
+ 'e': {
+ 'key': 'key2',
+ 'trafficTypeName': 'user',
+ 'eventTypeId': 'purchase',
+ 'value': 10,
+ 'timestamp': 123456,
+ 'properties': None,
+ },
+ 'm': {
+ 's': self.metadata.sdk_version,
+ 'n': self.metadata.instance_name,
+ 'i': self.metadata.instance_ip,
+ }
+ })
+ ])
+
+ @pytest.mark.asyncio
+ async def test_expire_key(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_events_storage = PluggableEventsStorageAsync(self.mock_adapter, self.metadata, prefix=sprefix)
+ self.expired_called = False
+ self.key = ""
+ self.ttl = 0
+ async def mock_expire(impressions_event_key, ttl):
+ self.key = impressions_event_key
+ self.ttl = ttl
+ self.expired_called = True
+
+ self.mock_adapter.expire = mock_expire
+
+ # should not call if total_keys are higher
+ await pluggable_events_storage.expire_key(200, 10)
+ assert(not self.expired_called)
+
+ await pluggable_events_storage.expire_key(200, 200)
+ assert(self.expired_called)
+ assert(self.key == prefix + "SPLITIO.events")
+ assert(self.ttl == pluggable_events_storage._EVENTS_KEY_DEFAULT_TTL)
+
+
+class PluggableTelemetryStorageTests(object):
+ """Pluggable telemetry storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapter()
+ self.sdk_metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+
+ def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_telemetry_storage = PluggableTelemetryStorage(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ assert(pluggable_telemetry_storage._telemetry_config_key == prefix + 'SPLITIO.telemetry.init')
+ assert(pluggable_telemetry_storage._telemetry_latencies_key == prefix + 'SPLITIO.telemetry.latencies')
+ assert(pluggable_telemetry_storage._telemetry_exceptions_key == prefix + 'SPLITIO.telemetry.exceptions')
+ assert(pluggable_telemetry_storage._sdk_metadata == self.sdk_metadata.sdk_version + '/' + self.sdk_metadata.instance_name + '/' + self.sdk_metadata.instance_ip)
+ assert(pluggable_telemetry_storage._config_tags == [])
+
+ def test_reset_config_tags(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = PluggableTelemetryStorage(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ pluggable_telemetry_storage._config_tags = ['a']
+ pluggable_telemetry_storage._reset_config_tags()
+ assert(pluggable_telemetry_storage._config_tags == [])
+
+ def test_add_config_tag(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = PluggableTelemetryStorage(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ pluggable_telemetry_storage.add_config_tag('q')
+ assert(pluggable_telemetry_storage._config_tags == ['q'])
+
+ pluggable_telemetry_storage._config_tags = []
+ for i in range(0, 20):
+ pluggable_telemetry_storage.add_config_tag('q' + str(i))
+ assert(len(pluggable_telemetry_storage._config_tags) == MAX_TAGS)
+ assert(pluggable_telemetry_storage._config_tags == ['q' + str(i) for i in range(0, MAX_TAGS)])
+
+ def test_record_config(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = PluggableTelemetryStorage(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ self.config = {}
+ self.extra_config = {}
+ def record_config_mock(config, extra_config, af, inf):
+ self.config = config
+ self.extra_config = extra_config
+
+ pluggable_telemetry_storage._tel_config.record_config = record_config_mock
+ pluggable_telemetry_storage.record_config({'item': 'value'}, {'item2': 'value2'}, 0, 0)
+ assert(self.config == {'item': 'value'})
+ assert(self.extra_config == {'item2': 'value2'})
+
+ def test_pop_config_tags(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = PluggableTelemetryStorage(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ pluggable_telemetry_storage._config_tags = ['a']
+ pluggable_telemetry_storage.pop_config_tags()
+ assert(pluggable_telemetry_storage._config_tags == [])
+
+ def test_record_active_and_redundant_factories(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = PluggableTelemetryStorage(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ self.active_factory_count = 0
+ self.redundant_factory_count = 0
+ def record_active_and_redundant_factories_mock(active_factory_count, redundant_factory_count):
+ self.active_factory_count = active_factory_count
+ self.redundant_factory_count = redundant_factory_count
+
+ pluggable_telemetry_storage._tel_config.record_active_and_redundant_factories = record_active_and_redundant_factories_mock
+ pluggable_telemetry_storage.record_active_and_redundant_factories(2, 1)
+ assert(self.active_factory_count == 2)
+ assert(self.redundant_factory_count == 1)
+
+ def test_record_latency(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = PluggableTelemetryStorage(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ def expire_keys_mock(*args, **kwargs):
+ assert(args[0] == pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/0')
+ assert(args[1] == pluggable_telemetry_storage._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[2] == 1)
+ assert(args[3] == 1)
+ pluggable_telemetry_storage.expire_keys = expire_keys_mock
+ # should increment bucket 0
+ pluggable_telemetry_storage.record_latency(MethodExceptionsAndLatencies.TREATMENT, 0)
+ assert(self.mock_adapter._keys[pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/0'] == 1)
+
+ def expire_keys_mock2(*args, **kwargs):
+ assert(args[0] == pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/3')
+ assert(args[1] == pluggable_telemetry_storage._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[2] == 1)
+ assert(args[3] == 1)
+ pluggable_telemetry_storage.expire_keys = expire_keys_mock2
+ # should increment bucket 3
+ pluggable_telemetry_storage.record_latency(MethodExceptionsAndLatencies.TREATMENT, 3)
+
+ def expire_keys_mock3(*args, **kwargs):
+ assert(args[0] == pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/3')
+ assert(args[1] == pluggable_telemetry_storage._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[2] == 1)
+ assert(args[3] == 2)
+ pluggable_telemetry_storage.expire_keys = expire_keys_mock3
+ # should increment bucket 3
+ pluggable_telemetry_storage.record_latency(MethodExceptionsAndLatencies.TREATMENT, 3)
+ assert(self.mock_adapter._keys[pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/3'] == 2)
+
+ def test_record_exception(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = PluggableTelemetryStorage(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ def expire_keys_mock(*args, **kwargs):
+ assert(args[0] == pluggable_telemetry_storage._telemetry_exceptions_key + '::python-1.1.1/hostname/ip/treatment')
+ assert(args[1] == pluggable_telemetry_storage._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[2] == 1)
+ assert(args[3] == 1)
+
+ pluggable_telemetry_storage.expire_keys = expire_keys_mock
+ pluggable_telemetry_storage.record_exception(MethodExceptionsAndLatencies.TREATMENT)
+ assert(self.mock_adapter._keys[pluggable_telemetry_storage._telemetry_exceptions_key + '::python-1.1.1/hostname/ip/treatment'] == 1)
+
+ def test_push_config_stats(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = PluggableTelemetryStorage(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ pluggable_telemetry_storage.record_config(
+ {'operationMode': 'standalone',
+ 'streamingEnabled': True,
+ 'impressionsQueueSize': 100,
+ 'eventsQueueSize': 200,
+ 'impressionsMode': 'DEBUG',''
+ 'impressionListener': None,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'impressionsRefreshRate': 60,
+ 'eventsPushRate': 60,
+ 'metricsRefreshRate': 10,
+ 'storageType': None
+ }, {}, 0, 0
+ )
+ pluggable_telemetry_storage.record_active_and_redundant_factories(2, 1)
+ pluggable_telemetry_storage.push_config_stats()
+ assert(self.mock_adapter._keys[pluggable_telemetry_storage._telemetry_config_key + "::" + pluggable_telemetry_storage._sdk_metadata] == '{"aF": 2, "rF": 1, "sT": "memory", "oM": 0, "t": []}')
+
+
+class PluggableTelemetryStorageAsyncTests(object):
+ """Pluggable telemetry storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapterAsync()
+ self.sdk_metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+
+ @pytest.mark.asyncio
+ async def test_init(self):
+ for sprefix in [None, 'myprefix']:
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ pluggable_telemetry_storage = await PluggableTelemetryStorageAsync.create(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ assert(pluggable_telemetry_storage._telemetry_config_key == prefix + 'SPLITIO.telemetry.init')
+ assert(pluggable_telemetry_storage._telemetry_latencies_key == prefix + 'SPLITIO.telemetry.latencies')
+ assert(pluggable_telemetry_storage._telemetry_exceptions_key == prefix + 'SPLITIO.telemetry.exceptions')
+ assert(pluggable_telemetry_storage._sdk_metadata == self.sdk_metadata.sdk_version + '/' + self.sdk_metadata.instance_name + '/' + self.sdk_metadata.instance_ip)
+ assert(pluggable_telemetry_storage._config_tags == [])
+
+ @pytest.mark.asyncio
+ async def test_reset_config_tags(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = await PluggableTelemetryStorageAsync.create(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ pluggable_telemetry_storage._config_tags = ['a']
+ await pluggable_telemetry_storage._reset_config_tags()
+ assert(pluggable_telemetry_storage._config_tags == [])
+
+ @pytest.mark.asyncio
+ async def test_add_config_tag(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = await PluggableTelemetryStorageAsync.create(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ await pluggable_telemetry_storage.add_config_tag('q')
+ assert(pluggable_telemetry_storage._config_tags == ['q'])
+
+ pluggable_telemetry_storage._config_tags = []
+ for i in range(0, 20):
+ await pluggable_telemetry_storage.add_config_tag('q' + str(i))
+ assert(len(pluggable_telemetry_storage._config_tags) == MAX_TAGS)
+ assert(pluggable_telemetry_storage._config_tags == ['q' + str(i) for i in range(0, MAX_TAGS)])
+
+ @pytest.mark.asyncio
+ async def test_record_config(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = await PluggableTelemetryStorageAsync.create(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ self.config = {}
+ self.extra_config = {}
+ async def record_config_mock(config, extra_config, tf, ifs):
+ self.config = config
+ self.extra_config = extra_config
+
+ pluggable_telemetry_storage._tel_config.record_config = record_config_mock
+ await pluggable_telemetry_storage.record_config({'item': 'value'}, {'item2': 'value2'}, 0, 0)
+ assert(self.config == {'item': 'value'})
+ assert(self.extra_config == {'item2': 'value2'})
+
+ @pytest.mark.asyncio
+ async def test_pop_config_tags(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = await PluggableTelemetryStorageAsync.create(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ pluggable_telemetry_storage._config_tags = ['a']
+ await pluggable_telemetry_storage.pop_config_tags()
+ assert(pluggable_telemetry_storage._config_tags == [])
+
+ @pytest.mark.asyncio
+ async def test_record_active_and_redundant_factories(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = await PluggableTelemetryStorageAsync.create(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ self.active_factory_count = 0
+ self.redundant_factory_count = 0
+ async def record_active_and_redundant_factories_mock(active_factory_count, redundant_factory_count):
+ self.active_factory_count = active_factory_count
+ self.redundant_factory_count = redundant_factory_count
+
+ pluggable_telemetry_storage._tel_config.record_active_and_redundant_factories = record_active_and_redundant_factories_mock
+ await pluggable_telemetry_storage.record_active_and_redundant_factories(2, 1)
+ assert(self.active_factory_count == 2)
+ assert(self.redundant_factory_count == 1)
+
+ @pytest.mark.asyncio
+ async def test_record_latency(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = await PluggableTelemetryStorageAsync.create(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ async def expire_keys_mock(*args, **kwargs):
+ assert(args[0] == pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/0')
+ assert(args[1] == pluggable_telemetry_storage._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[2] == 1)
+ assert(args[3] == 1)
+ pluggable_telemetry_storage.expire_keys = expire_keys_mock
+ # should increment bucket 0
+ await pluggable_telemetry_storage.record_latency(MethodExceptionsAndLatencies.TREATMENT, 0)
+ assert(self.mock_adapter._keys[pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/0'] == 1)
+
+ async def expire_keys_mock2(*args, **kwargs):
+ assert(args[0] == pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/3')
+ assert(args[1] == pluggable_telemetry_storage._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[2] == 1)
+ assert(args[3] == 1)
+ pluggable_telemetry_storage.expire_keys = expire_keys_mock2
+ # should increment bucket 3
+ await pluggable_telemetry_storage.record_latency(MethodExceptionsAndLatencies.TREATMENT, 3)
+
+ async def expire_keys_mock3(*args, **kwargs):
+ assert(args[0] == pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/3')
+ assert(args[1] == pluggable_telemetry_storage._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[2] == 1)
+ assert(args[3] == 2)
+ pluggable_telemetry_storage.expire_keys = expire_keys_mock3
+ # should increment bucket 3
+ await pluggable_telemetry_storage.record_latency(MethodExceptionsAndLatencies.TREATMENT, 3)
+ assert(self.mock_adapter._keys[pluggable_telemetry_storage._telemetry_latencies_key + '::python-1.1.1/hostname/ip/treatment/3'] == 2)
+
+ @pytest.mark.asyncio
+ async def test_record_exception(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = await PluggableTelemetryStorageAsync.create(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ async def expire_keys_mock(*args, **kwargs):
+ assert(args[0] == pluggable_telemetry_storage._telemetry_exceptions_key + '::python-1.1.1/hostname/ip/treatment')
+ assert(args[1] == pluggable_telemetry_storage._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[2] == 1)
+ assert(args[3] == 1)
+
+ pluggable_telemetry_storage.expire_keys = expire_keys_mock
+ await pluggable_telemetry_storage.record_exception(MethodExceptionsAndLatencies.TREATMENT)
+ assert(self.mock_adapter._keys[pluggable_telemetry_storage._telemetry_exceptions_key + '::python-1.1.1/hostname/ip/treatment'] == 1)
+
+ @pytest.mark.asyncio
+ async def test_push_config_stats(self):
+ for sprefix in [None, 'myprefix']:
+ pluggable_telemetry_storage = await PluggableTelemetryStorageAsync.create(self.mock_adapter, self.sdk_metadata, prefix=sprefix)
+ await pluggable_telemetry_storage.record_config(
+ {'operationMode': 'standalone',
+ 'streamingEnabled': True,
+ 'impressionsQueueSize': 100,
+ 'eventsQueueSize': 200,
+ 'impressionsMode': 'DEBUG',''
+ 'impressionListener': None,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'impressionsRefreshRate': 60,
+ 'eventsPushRate': 60,
+ 'metricsRefreshRate': 10,
+ 'storageType': None
+ }, {}, 0, 0
+ )
+ await pluggable_telemetry_storage.record_active_and_redundant_factories(2, 1)
+ await pluggable_telemetry_storage.push_config_stats()
+ assert(self.mock_adapter._keys[pluggable_telemetry_storage._telemetry_config_key + "::" + pluggable_telemetry_storage._sdk_metadata] == '{"aF": 2, "rF": 1, "sT": "memory", "oM": 0, "t": []}')
+
+class PluggableRuleBasedSegmentStorageTests(object):
+ """In memory rule based segment storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapter()
+
+ def test_get(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_rbs_storage = PluggableRuleBasedSegmentsStorage(self.mock_adapter, prefix=sprefix)
+
+ rbs1 = rule_based_segments.from_raw(rbsegments_json[0])
+ rbs_name = rbsegments_json[0]['name']
+
+ self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs_name), rbs1.to_json())
+ assert(pluggable_rbs_storage.get(rbs_name).to_json() == rule_based_segments.from_raw(rbsegments_json[0]).to_json())
+ assert(pluggable_rbs_storage.get('not_existing') == None)
+
+ def test_get_change_number(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_rbs_storage = PluggableRuleBasedSegmentsStorage(self.mock_adapter, prefix=sprefix)
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ self.mock_adapter.set(prefix + "SPLITIO.rbsegments.till", 1234)
+ assert(pluggable_rbs_storage.get_change_number() == 1234)
+
+ def test_get_segment_names(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_rbs_storage = PluggableRuleBasedSegmentsStorage(self.mock_adapter, prefix=sprefix)
+ rbs1 = rule_based_segments.from_raw(rbsegments_json[0])
+ rbs2_temp = copy.deepcopy(rbsegments_json[0])
+ rbs2_temp['name'] = 'another_segment'
+ rbs2 = rule_based_segments.from_raw(rbs2_temp)
+ self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs1.name), rbs1.to_json())
+ self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs2.name), rbs2.to_json())
+ assert(pluggable_rbs_storage.get_segment_names() == [rbs1.name, rbs2.name])
+
+ def test_contains(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_rbs_storage = PluggableRuleBasedSegmentsStorage(self.mock_adapter, prefix=sprefix)
+ rbs1 = rule_based_segments.from_raw(rbsegments_json[0])
+ rbs2_temp = copy.deepcopy(rbsegments_json[0])
+ rbs2_temp['name'] = 'another_segment'
+ rbs2 = rule_based_segments.from_raw(rbs2_temp)
+ self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs1.name), rbs1.to_json())
+ self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs2.name), rbs2.to_json())
+
+ assert(pluggable_rbs_storage.contains([rbs1.name, rbs2.name]))
+ assert(pluggable_rbs_storage.contains([rbs2.name]))
+ assert(not pluggable_rbs_storage.contains(['none-exists', rbs2.name]))
+ assert(not pluggable_rbs_storage.contains(['none-exists', 'none-exists2']))
+
+class PluggableRuleBasedSegmentStorageAsyncTests(object):
+ """In memory rule based segment storage test cases."""
+
+ def setup_method(self):
+ """Prepare storages with test data."""
+ self.mock_adapter = StorageMockAdapterAsync()
+
+ @pytest.mark.asyncio
+ async def test_get(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_rbs_storage = PluggableRuleBasedSegmentsStorageAsync(self.mock_adapter, prefix=sprefix)
+
+ rbs1 = rule_based_segments.from_raw(rbsegments_json[0])
+ rbs_name = rbsegments_json[0]['name']
+
+ await self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs_name), rbs1.to_json())
+ rbs = await pluggable_rbs_storage.get(rbs_name)
+ assert(rbs.to_json() == rule_based_segments.from_raw(rbsegments_json[0]).to_json())
+ assert(await pluggable_rbs_storage.get('not_existing') == None)
+
+ @pytest.mark.asyncio
+ async def test_get_change_number(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_rbs_storage = PluggableRuleBasedSegmentsStorageAsync(self.mock_adapter, prefix=sprefix)
+ if sprefix == 'myprefix':
+ prefix = 'myprefix.'
+ else:
+ prefix = ''
+ await self.mock_adapter.set(prefix + "SPLITIO.rbsegments.till", 1234)
+ assert(await pluggable_rbs_storage.get_change_number() == 1234)
+
+ @pytest.mark.asyncio
+ async def test_get_segment_names(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_rbs_storage = PluggableRuleBasedSegmentsStorageAsync(self.mock_adapter, prefix=sprefix)
+ rbs1 = rule_based_segments.from_raw(rbsegments_json[0])
+ rbs2_temp = copy.deepcopy(rbsegments_json[0])
+ rbs2_temp['name'] = 'another_segment'
+ rbs2 = rule_based_segments.from_raw(rbs2_temp)
+ await self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs1.name), rbs1.to_json())
+ await self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs2.name), rbs2.to_json())
+ assert(await pluggable_rbs_storage.get_segment_names() == [rbs1.name, rbs2.name])
+
+ @pytest.mark.asyncio
+ async def test_contains(self):
+ self.mock_adapter._keys = {}
+ for sprefix in [None, 'myprefix']:
+ pluggable_rbs_storage = PluggableRuleBasedSegmentsStorageAsync(self.mock_adapter, prefix=sprefix)
+ rbs1 = rule_based_segments.from_raw(rbsegments_json[0])
+ rbs2_temp = copy.deepcopy(rbsegments_json[0])
+ rbs2_temp['name'] = 'another_segment'
+ rbs2 = rule_based_segments.from_raw(rbs2_temp)
+ await self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs1.name), rbs1.to_json())
+ await self.mock_adapter.set(pluggable_rbs_storage._prefix.format(segment_name=rbs2.name), rbs2.to_json())
+
+ assert(await pluggable_rbs_storage.contains([rbs1.name, rbs2.name]))
+ assert(await pluggable_rbs_storage.contains([rbs2.name]))
+ assert(not await pluggable_rbs_storage.contains(['none-exists', rbs2.name]))
+ assert(not await pluggable_rbs_storage.contains(['none-exists', 'none-exists2']))
diff --git a/tests/storage/test_redis.py b/tests/storage/test_redis.py
index a6ca8550..a45c4ad2 100644
--- a/tests/storage/test_redis.py
+++ b/tests/storage/test_redis.py
@@ -1,17 +1,26 @@
"""Redis storage test module."""
-#pylint: disable=no-self-use
+# pylint: disable=no-self-use
import json
import time
-
-from splitio.client.util import get_metadata
-from splitio.storage.redis import RedisEventsStorage, RedisImpressionsStorage, \
- RedisSegmentStorage, RedisSplitStorage, RedisTelemetryStorage
+import unittest.mock as mock
+import redis.asyncio as aioredis
+import pytest
+
+from splitio.client.util import get_metadata, SdkMetadata
+from splitio.storage.adapters.redis import RedisAdapter, RedisAdapterAsync, RedisAdapterException, build
+from splitio.optional.loaders import asyncio
+from splitio.storage import FlagSetsFilter
+from splitio.storage.redis import RedisEventsStorage, RedisEventsStorageAsync, RedisImpressionsStorage, RedisImpressionsStorageAsync, \
+ RedisSegmentStorage, RedisSegmentStorageAsync, RedisSplitStorage, RedisSplitStorageAsync, RedisTelemetryStorage, RedisTelemetryStorageAsync, \
+ RedisRuleBasedSegmentsStorage, RedisRuleBasedSegmentsStorageAsync
+from splitio.storage.adapters.redis import RedisAdapter, RedisAdapterException, build
+from redis.asyncio.client import Redis as aioredis
+from splitio.storage.adapters import redis
from splitio.models.segments import Segment
from splitio.models.impressions import Impression
from splitio.models.events import Event, EventWrapper
-from splitio.storage.adapters.redis import RedisAdapter, RedisAdapterException
-
+from splitio.models.telemetry import MethodExceptions, MethodLatencies, TelemetryConfig, MethodExceptionsAndLatencies, TelemetryConfigAsync
class RedisSplitStorageTests(object):
"""Redis split storage test cases."""
@@ -21,7 +30,7 @@ def test_get_split(self, mocker):
adapter = mocker.Mock(spec=RedisAdapter)
adapter.get.return_value = '{"name": "some_split"}'
from_raw = mocker.Mock()
- mocker.patch('splitio.models.splits.from_raw', new=from_raw)
+ mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
storage = RedisSplitStorage(adapter)
storage.get('some_split')
@@ -43,7 +52,7 @@ def test_get_split_with_cache(self, mocker):
adapter = mocker.Mock(spec=RedisAdapter)
adapter.get.return_value = '{"name": "some_split"}'
from_raw = mocker.Mock()
- mocker.patch('splitio.models.splits.from_raw', new=from_raw)
+ mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
storage = RedisSplitStorage(adapter, True, 1)
storage.get('some_split')
@@ -62,6 +71,7 @@ def test_get_split_with_cache(self, mocker):
from_raw.reset_mock()
adapter.get.return_value = None
+ # Still cached
result = storage.get('some_split')
assert result is not None
time.sleep(1) # wait for expiration
@@ -75,7 +85,7 @@ def test_get_splits_with_cache(self, mocker):
adapter = mocker.Mock(spec=RedisAdapter)
storage = RedisSplitStorage(adapter)
from_raw = mocker.Mock()
- mocker.patch('splitio.models.splits.from_raw', new=from_raw)
+ mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
adapter.mget.return_value = ['{"name": "split1"}', '{"name": "split2"}', None]
@@ -102,13 +112,14 @@ def test_get_all_splits(self, mocker):
adapter = mocker.Mock(spec=RedisAdapter)
storage = RedisSplitStorage(adapter)
from_raw = mocker.Mock()
- mocker.patch('splitio.models.splits.from_raw', new=from_raw)
+ mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
adapter.keys.return_value = [
'SPLITIO.split.split1',
'SPLITIO.split.split2',
'SPLITIO.split.split3'
]
+
def _mget_mock(*_):
return ['{"name": "split1"}', '{"name": "split2"}', '{"name": "split3"}']
adapter.mget.side_effect = _mget_mock
@@ -167,6 +178,275 @@ def test_is_valid_traffic_type_with_cache(self, mocker):
time.sleep(1)
assert storage.is_valid_traffic_type('any') is False
+ @mock.patch('splitio.storage.adapters.redis.RedisPipelineAdapter.execute', return_value = [{'split1', 'split2'}])
+ def test_flag_sets(self, mocker):
+ """Test Flag sets scenarios."""
+ adapter = build({})
+ storage = RedisSplitStorage(adapter, True, 1)
+ assert storage.flag_set_filter.flag_sets == set({})
+ assert sorted(storage.get_feature_flags_by_sets(['set1', 'set2'])) == ['split1', 'split2']
+
+ storage.flag_set_filter = FlagSetsFilter(['set2', 'set3'])
+ assert storage.get_feature_flags_by_sets(['set1']) == []
+ assert sorted(storage.get_feature_flags_by_sets(['set2'])) == ['split1', 'split2']
+
+ storage2 = RedisSplitStorage(adapter, True, 1, ['set2', 'set3'])
+ assert storage2.flag_set_filter.flag_sets == set({'set2', 'set3'})
+
+class RedisSplitStorageAsyncTests(object):
+ """Redis split storage test cases."""
+
+ @pytest.mark.asyncio
+ async def test_get_split(self, mocker):
+ """Test retrieving a split works."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+
+ self.redis_ret = None
+ self.name = None
+ async def get(sel, name):
+ self.name = name
+ self.redis_ret = '{"name": "some_split"}'
+ return self.redis_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get)
+
+ from_raw = mocker.Mock()
+ mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
+
+ storage = RedisSplitStorageAsync(adapter)
+ await storage.get('some_split')
+
+ assert self.name == 'SPLITIO.split.some_split'
+ assert self.redis_ret == '{"name": "some_split"}'
+
+ # Test that a missing split returns None and doesn't call from_raw
+ from_raw.reset_mock()
+ self.name = None
+ async def get2(sel, name):
+ self.name = name
+ return None
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get2)
+
+ result = await storage.get('some_split')
+ assert result is None
+ assert self.name == 'SPLITIO.split.some_split'
+ assert not from_raw.mock_calls
+
+ @pytest.mark.asyncio
+ async def test_get_split_with_cache(self, mocker):
+ """Test retrieving a split works."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+
+ self.redis_ret = None
+ self.name = None
+ async def get(sel, name):
+ self.name = name
+ self.redis_ret = '{"name": "some_split"}'
+ return self.redis_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get)
+
+ from_raw = mocker.Mock()
+ mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
+
+ storage = RedisSplitStorageAsync(adapter, True, 1)
+ await storage.get('some_split')
+ assert self.name == 'SPLITIO.split.some_split'
+ assert self.redis_ret == '{"name": "some_split"}'
+
+ # hit the cache:
+ self.name = None
+ await storage.get('some_split')
+ self.name = None
+ await storage.get('some_split')
+ self.name = None
+ await storage.get('some_split')
+ assert self.name == None
+
+ # Test that a missing split returns None and doesn't call from_raw
+ from_raw.reset_mock()
+ self.name = None
+ async def get2(sel, name):
+ self.name = name
+ return None
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get2)
+
+ # Still cached
+ result = await storage.get('some_split')
+ assert result is not None
+ assert self.name == None
+ await asyncio.sleep(1) # wait for expiration
+ result = await storage.get('some_split')
+ assert self.name == 'SPLITIO.split.some_split'
+ assert result is None
+
+ @pytest.mark.asyncio
+ async def test_get_splits_with_cache(self, mocker):
+ """Test retrieving a list of passed splits."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisSplitStorageAsync(adapter, True, 1)
+
+ self.redis_ret = None
+ self.name = None
+ async def mget(sel, name):
+ self.name = name
+ self.redis_ret = ['{"name": "split1"}', '{"name": "split2"}', None]
+ return self.redis_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.mget', new=mget)
+
+ from_raw = mocker.Mock()
+ mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
+
+ result = await storage.fetch_many(['split1', 'split2', 'split3'])
+ assert len(result) == 3
+
+ assert '{"name": "split1"}' in self.redis_ret
+ assert '{"name": "split2"}' in self.redis_ret
+
+ assert result['split1'] is not None
+ assert result['split2'] is not None
+ assert 'split3' in result
+
+ # fetch again
+ self.name = None
+ result = await storage.fetch_many(['split1', 'split2', 'split3'])
+ assert result['split1'] is not None
+ assert result['split2'] is not None
+ assert 'split3' in result
+ assert self.name == None
+
+ # wait for expire
+ await asyncio.sleep(1)
+ self.name = None
+ result = await storage.fetch_many(['split1', 'split2', 'split3'])
+ assert self.name == ['SPLITIO.split.split1', 'SPLITIO.split.split2', 'SPLITIO.split.split3']
+
+ @pytest.mark.asyncio
+ async def test_get_changenumber(self, mocker):
+ """Test fetching changenumber."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisSplitStorageAsync(adapter)
+
+ self.redis_ret = None
+ self.name = None
+ async def get(sel, name):
+ self.name = name
+ self.redis_ret = '-1'
+ return self.redis_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get)
+
+ assert await storage.get_change_number() == -1
+ assert self.name == 'SPLITIO.splits.till'
+
+ @pytest.mark.asyncio
+ async def test_get_all_splits(self, mocker):
+ """Test fetching all splits."""
+ from_raw = mocker.Mock()
+ mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
+
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisSplitStorageAsync(adapter)
+
+ self.redis_ret = None
+ self.name = None
+ async def mget(sel, name):
+ self.name = name
+ self.redis_ret = ['{"name": "split1"}', '{"name": "split2"}', '{"name": "split3"}']
+ return self.redis_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.mget', new=mget)
+
+ self.key = None
+ self.keys_ret = None
+ async def keys(sel, key):
+ self.key = key
+ self.keys_ret = [
+ 'SPLITIO.split.split1',
+ 'SPLITIO.split.split2',
+ 'SPLITIO.split.split3'
+ ]
+ return self.keys_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.keys', new=keys)
+
+ await storage.get_all_splits()
+
+ assert self.key == 'SPLITIO.split.*'
+ assert self.keys_ret == ['SPLITIO.split.split1', 'SPLITIO.split.split2', 'SPLITIO.split.split3']
+ assert len(from_raw.mock_calls) == 3
+ assert mocker.call({'name': 'split1'}) in from_raw.mock_calls
+ assert mocker.call({'name': 'split2'}) in from_raw.mock_calls
+ assert mocker.call({'name': 'split3'}) in from_raw.mock_calls
+
+ @pytest.mark.asyncio
+ async def test_get_split_names(self, mocker):
+ """Test getching split names."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisSplitStorageAsync(adapter)
+
+ self.key = None
+ self.keys_ret = None
+ async def keys(sel, key):
+ self.key = key
+ self.keys_ret = [
+ 'SPLITIO.split.split1',
+ 'SPLITIO.split.split2',
+ 'SPLITIO.split.split3'
+ ]
+ return self.keys_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.keys', new=keys)
+
+ assert await storage.get_split_names() == ['split1', 'split2', 'split3']
+
+ @pytest.mark.asyncio
+ async def test_is_valid_traffic_type(self, mocker):
+ """Test that traffic type validation works."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisSplitStorageAsync(adapter)
+
+ async def get(sel, name):
+ return '1'
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get)
+ assert await storage.is_valid_traffic_type('any') is True
+
+ async def get2(sel, name):
+ return '0'
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get2)
+ assert await storage.is_valid_traffic_type('any') is False
+
+ async def get3(sel, name):
+ return None
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get3)
+ assert await storage.is_valid_traffic_type('any') is False
+
+ @pytest.mark.asyncio
+ async def test_is_valid_traffic_type_with_cache(self, mocker):
+ """Test that traffic type validation works."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisSplitStorageAsync(adapter, True, 1)
+
+ async def get(sel, name):
+ return '1'
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get)
+ assert await storage.is_valid_traffic_type('any') is True
+
+ async def get2(sel, name):
+ return '0'
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get2)
+ assert await storage.is_valid_traffic_type('any') is True
+ await asyncio.sleep(1)
+ assert await storage.is_valid_traffic_type('any') is False
+
+ async def get3(sel, name):
+ return None
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get3)
+ await asyncio.sleep(1)
+ assert await storage.is_valid_traffic_type('any') is False
+
class RedisSegmentStorageTests(object):
"""Redis segment storage test cases."""
@@ -177,7 +457,7 @@ def test_fetch_segment(self, mocker):
adapter.smembers.return_value = set(["key1", "key2", "key3"])
adapter.get.return_value = '100'
from_raw = mocker.Mock()
- mocker.patch('splitio.models.segments.from_raw', new=from_raw)
+ mocker.patch('splitio.storage.redis.segments.from_raw', new=from_raw)
storage = RedisSegmentStorage(adapter)
result = storage.get('some_segment')
@@ -218,9 +498,120 @@ def test_segment_contains(self, mocker):
mocker.call('SPLITIO.segment.some_segment', 'some_key')
]
+class RedisSegmentStorageAsyncTests(object):
+ """Redis segment storage test cases."""
-class RedisImpressionsStorageTests(object): #pylint: disable=too-few-public-methods
- """Redis Events storage test cases."""
+ @pytest.mark.asyncio
+ async def test_fetch_segment(self, mocker):
+ """Test fetching a whole segment."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+
+ self.key = None
+ async def smembers(key):
+ self.key = key
+ return set(["key1", "key2", "key3"])
+ adapter.smembers = smembers
+
+ self.key2 = None
+ async def get(key):
+ self.key2 = key
+ return '100'
+ adapter.get = get
+
+ from_raw = mocker.Mock()
+ mocker.patch('splitio.storage.redis.segments.from_raw', new=from_raw)
+
+ storage = RedisSegmentStorageAsync(adapter)
+ result = await storage.get('some_segment')
+ assert isinstance(result, Segment)
+ assert result.name == 'some_segment'
+ assert result.contains('key1')
+ assert result.contains('key2')
+ assert result.contains('key3')
+ assert result.change_number == 100
+ assert self.key == 'SPLITIO.segment.some_segment'
+ assert self.key2 == 'SPLITIO.segment.some_segment.till'
+
+ # Assert that if segment doesn't exist, None is returned
+ from_raw.reset_mock()
+ async def smembers2(key):
+ self.key = key
+ return set()
+ adapter.smembers = smembers2
+ assert await storage.get('some_segment') is None
+
+ @pytest.mark.asyncio
+ async def test_fetch_change_number(self, mocker):
+ """Test fetching change number."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+
+ self.key = None
+ async def get(key):
+ self.key = key
+ return '100'
+ adapter.get = get
+
+ storage = RedisSegmentStorageAsync(adapter)
+ result = await storage.get_change_number('some_segment')
+ assert result == 100
+ assert self.key == 'SPLITIO.segment.some_segment.till'
+
+ @pytest.mark.asyncio
+ async def test_segment_contains(self, mocker):
+ """Test segment contains functionality."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisSegmentStorageAsync(adapter)
+ self.key = None
+ self.segment = None
+ async def sismember(segment, key):
+ self.key = key
+ self.segment = segment
+ return True
+ adapter.sismember = sismember
+
+ assert await storage.segment_contains('some_segment', 'some_key') is True
+ assert self.segment == 'SPLITIO.segment.some_segment'
+ assert self.key == 'some_key'
+
+
+class RedisImpressionsStorageTests(object): # pylint: disable=too-few-public-methods
+ """Redis Impressions storage test cases."""
+
+ def test_wrap_impressions(self, mocker):
+ """Test wrap impressions."""
+ adapter = mocker.Mock(spec=RedisAdapter)
+ metadata = get_metadata({})
+ storage = RedisImpressionsStorage(adapter, metadata)
+
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None)
+ ]
+
+ to_validate = [json.dumps({
+ 'm': { # METADATA PORTION
+ 's': metadata.sdk_version,
+ 'n': metadata.instance_name,
+ 'i': metadata.instance_ip,
+ },
+ 'i': { # IMPRESSION PORTION
+ 'k': impression.matching_key,
+ 'b': impression.bucketing_key,
+ 'f': impression.feature_name,
+ 't': impression.treatment,
+ 'r': impression.label,
+ 'c': impression.change_number,
+ 'm': impression.time,
+ 'properties': None
+ }
+ }) for impression in impressions]
+
+ assert storage._wrap_impressions(impressions) == to_validate
def test_add_impressions(self, mocker):
"""Test that adding impressions to storage works."""
@@ -229,10 +620,10 @@ def test_add_impressions(self, mocker):
storage = RedisImpressionsStorage(adapter, metadata)
impressions = [
- Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654),
- Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654),
- Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654),
- Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654)
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None)
]
assert storage.put(impressions) is True
@@ -251,6 +642,7 @@ def test_add_impressions(self, mocker):
'r': impression.label,
'c': impression.change_number,
'm': impression.time,
+ 'properties': None
}
}) for impression in impressions]
@@ -258,13 +650,212 @@ def test_add_impressions(self, mocker):
# Assert that if an exception is thrown it's caught and False is returned
adapter.reset_mock()
+
def _raise_exc(*_):
raise RedisAdapterException('something')
adapter.rpush.side_effect = _raise_exc
assert storage.put(impressions) is False
+ def test_add_impressions_to_pipe(self, mocker):
+ """Test that adding impressions to storage works."""
+ adapter = mocker.Mock(spec=RedisAdapter)
+ metadata = get_metadata({})
+ storage = RedisImpressionsStorage(adapter, metadata)
+
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None)
+ ]
+
+ to_validate = [json.dumps({
+ 'm': { # METADATA PORTION
+ 's': metadata.sdk_version,
+ 'n': metadata.instance_name,
+ 'i': metadata.instance_ip,
+ },
+ 'i': { # IMPRESSION PORTION
+ 'k': impression.matching_key,
+ 'b': impression.bucketing_key,
+ 'f': impression.feature_name,
+ 't': impression.treatment,
+ 'r': impression.label,
+ 'c': impression.change_number,
+ 'm': impression.time,
+ 'properties': None
+ }
+ }) for impression in impressions]
+
+ storage.add_impressions_to_pipe(impressions, adapter)
+ assert adapter.rpush.mock_calls == [mocker.call('SPLITIO.impressions', *to_validate)]
-class RedisEventsStorageTests(object): #pylint: disable=too-few-public-methods
+ def test_expire_key(self, mocker):
+ adapter = mocker.Mock(spec=RedisAdapter)
+ metadata = get_metadata({})
+ storage = RedisImpressionsStorage(adapter, metadata)
+
+ self.key = None
+ self.ttl = None
+ def expire(key, ttl):
+ self.key = key
+ self.ttl = ttl
+ adapter.expire = expire
+
+ storage.expire_key(2, 2)
+ assert self.key == 'SPLITIO.impressions'
+ assert self.ttl == 3600
+
+ self.key = None
+ storage.expire_key(2, 1)
+ assert self.key == None
+
+
+class RedisImpressionsStorageAsyncTests(object): # pylint: disable=too-few-public-methods
+ """Redis Impressions async storage test cases."""
+
+ def test_wrap_impressions(self, mocker):
+ """Test wrap impressions."""
+ adapter = mocker.Mock(spec=RedisAdapterAsync)
+ metadata = get_metadata({})
+ storage = RedisImpressionsStorageAsync(adapter, metadata)
+
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None)
+ ]
+
+ to_validate = [json.dumps({
+ 'm': { # METADATA PORTION
+ 's': metadata.sdk_version,
+ 'n': metadata.instance_name,
+ 'i': metadata.instance_ip,
+ },
+ 'i': { # IMPRESSION PORTION
+ 'k': impression.matching_key,
+ 'b': impression.bucketing_key,
+ 'f': impression.feature_name,
+ 't': impression.treatment,
+ 'r': impression.label,
+ 'c': impression.change_number,
+ 'm': impression.time,
+ 'properties': None
+ }
+ }) for impression in impressions]
+
+ assert storage._wrap_impressions(impressions) == to_validate
+
+ @pytest.mark.asyncio
+ async def test_add_impressions(self, mocker):
+ """Test that adding impressions to storage works."""
+ adapter = mocker.Mock(spec=RedisAdapterAsync)
+ metadata = get_metadata({})
+ storage = RedisImpressionsStorageAsync(adapter, metadata)
+
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None)
+ ]
+ self.key = None
+ self.imps = None
+ async def rpush(key, *imps):
+ self.key = key
+ self.imps = imps
+
+ adapter.rpush = rpush
+ assert await storage.put(impressions) is True
+
+ to_validate = [json.dumps({
+ 'm': { # METADATA PORTION
+ 's': metadata.sdk_version,
+ 'n': metadata.instance_name,
+ 'i': metadata.instance_ip,
+ },
+ 'i': { # IMPRESSION PORTION
+ 'k': impression.matching_key,
+ 'b': impression.bucketing_key,
+ 'f': impression.feature_name,
+ 't': impression.treatment,
+ 'r': impression.label,
+ 'c': impression.change_number,
+ 'm': impression.time,
+ 'properties': None
+ }
+ }) for impression in impressions]
+
+ assert self.key == 'SPLITIO.impressions'
+ assert self.imps == tuple(to_validate)
+
+ # Assert that if an exception is thrown it's caught and False is returned
+ adapter.reset_mock()
+
+ async def rpush2(key, *imps):
+ raise RedisAdapterException('something')
+ adapter.rpush = rpush2
+ assert await storage.put(impressions) is False
+
+ def test_add_impressions_to_pipe(self, mocker):
+ """Test that adding impressions to storage works."""
+ adapter = mocker.Mock(spec=RedisAdapterAsync)
+ metadata = get_metadata({})
+ storage = RedisImpressionsStorageAsync(adapter, metadata)
+
+ impressions = [
+ Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654, None, None),
+ Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654, None, None)
+ ]
+
+ to_validate = [json.dumps({
+ 'm': { # METADATA PORTION
+ 's': metadata.sdk_version,
+ 'n': metadata.instance_name,
+ 'i': metadata.instance_ip,
+ },
+ 'i': { # IMPRESSION PORTION
+ 'k': impression.matching_key,
+ 'b': impression.bucketing_key,
+ 'f': impression.feature_name,
+ 't': impression.treatment,
+ 'r': impression.label,
+ 'c': impression.change_number,
+ 'm': impression.time,
+ 'properties': None
+ }
+ }) for impression in impressions]
+
+ storage.add_impressions_to_pipe(impressions, adapter)
+ assert adapter.rpush.mock_calls == [mocker.call('SPLITIO.impressions', *to_validate)]
+
+ @pytest.mark.asyncio
+ async def test_expire_key(self, mocker):
+ adapter = mocker.Mock(spec=RedisAdapterAsync)
+ metadata = get_metadata({})
+ storage = RedisImpressionsStorageAsync(adapter, metadata)
+
+ self.key = None
+ self.ttl = None
+ async def expire(key, ttl):
+ self.key = key
+ self.ttl = ttl
+ adapter.expire = expire
+
+ await storage.expire_key(2, 2)
+ assert self.key == 'SPLITIO.impressions'
+ assert self.ttl == 3600
+
+ self.key = None
+ await storage.expire_key(2, 1)
+ assert self.key == None
+
+
+
+class RedisEventsStorageTests(object): # pylint: disable=too-few-public-methods
"""Redis Impression storage test cases."""
def test_add_events(self, mocker):
@@ -298,7 +889,6 @@ def test_add_events(self, mocker):
}
}) for e in events]
- # To deal with python2 & 3 differences in hashing/order when dumping json.
list_of_raw_json_strings_called = adapter.rpush.mock_calls[0][1][1:]
list_of_events_called = [json.loads(event) for event in list_of_raw_json_strings_called]
list_of_events_sent = [json.loads(event) for event in list_of_raw_events]
@@ -308,61 +898,551 @@ def test_add_events(self, mocker):
# assert adapter.rpush.mock_calls == [mocker.call('SPLITIO.events', to_validate)]
# Assert that if an exception is thrown it's caught and False is returned
adapter.reset_mock()
+
def _raise_exc(*_):
raise RedisAdapterException('something')
adapter.rpush.side_effect = _raise_exc
assert storage.put(events) is False
+ def test_expire_keys(self, mocker):
+ adapter = mocker.Mock(spec=RedisAdapter)
+ metadata = get_metadata({})
+ storage = RedisEventsStorage(adapter, metadata)
-class RedisTelemetryStorageTests(object):
- """Redis-based telemetry storage test cases."""
+ self.key = None
+ self.ttl = None
+ def expire(key, ttl):
+ self.key = key
+ self.ttl = ttl
+ adapter.expire = expire
- def test_inc_latency(self, mocker):
- """Test incrementing latency."""
- adapter = mocker.Mock(spec=RedisAdapter)
+ storage.expire_keys(2, 2)
+ assert self.key == 'SPLITIO.events'
+ assert self.ttl == 3600
+
+ self.key = None
+ storage.expire_keys(2, 1)
+ assert self.key == None
+
+class RedisEventsStorageAsyncTests(object): # pylint: disable=too-few-public-methods
+ """Redis Impression async storage test cases."""
+
+ @pytest.mark.asyncio
+ async def test_add_events(self, mocker):
+ """Test that adding impressions to storage works."""
+ adapter = mocker.Mock(spec=RedisAdapterAsync)
metadata = get_metadata({})
- storage = RedisTelemetryStorage(adapter, metadata)
- storage.inc_latency('some_latency', 0)
- storage.inc_latency('some_latency', 1)
- storage.inc_latency('some_latency', 5)
- storage.inc_latency('some_latency', 5)
- storage.inc_latency('some_latency', 22)
- assert adapter.incr.mock_calls == [
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/latency.some_latency.bucket.0'),
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/latency.some_latency.bucket.1'),
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/latency.some_latency.bucket.5'),
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/latency.some_latency.bucket.5')
+ storage = RedisEventsStorageAsync(adapter, metadata)
+
+ events = [
+ EventWrapper(event=Event('key1', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key2', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key3', 'user', 'purchase', 10, 123456, None), size=32768),
+ EventWrapper(event=Event('key4', 'user', 'purchase', 10, 123456, None), size=32768),
]
+ self.key = None
+ self.events = None
+ async def rpush(key, *events):
+ self.key = key
+ self.events = events
+ adapter.rpush = rpush
- def test_inc_counter(self, mocker):
- """Test incrementing latency."""
- adapter = mocker.Mock(spec=RedisAdapter)
+ assert await storage.put(events) is True
+
+ list_of_raw_events = [json.dumps({
+ 'e': { # EVENT PORTION
+ 'key': e.event.key,
+ 'trafficTypeName': e.event.traffic_type_name,
+ 'eventTypeId': e.event.event_type_id,
+ 'value': e.event.value,
+ 'timestamp': e.event.timestamp,
+ 'properties': e.event.properties,
+ },
+ 'm': { # METADATA PORTION
+ 's': metadata.sdk_version,
+ 'n': metadata.instance_name,
+ 'i': metadata.instance_ip,
+ }
+ }) for e in events]
+
+ assert self.events == tuple(list_of_raw_events)
+ assert self.key == 'SPLITIO.events'
+ assert storage._wrap_events(events) == list_of_raw_events
+
+ # Assert that if an exception is thrown it's caught and False is returned
+ adapter.reset_mock()
+
+ async def rpush2(key, *events):
+ raise RedisAdapterException('something')
+ adapter.rpush = rpush2
+ assert await storage.put(events) is False
+
+
+ @pytest.mark.asyncio
+ async def test_expire_keys(self, mocker):
+ adapter = mocker.Mock(spec=RedisAdapterAsync)
metadata = get_metadata({})
+ storage = RedisEventsStorageAsync(adapter, metadata)
- storage = RedisTelemetryStorage(adapter, metadata)
- storage.inc_counter('some_counter_1')
- storage.inc_counter('some_counter_1')
- storage.inc_counter('some_counter_1')
- storage.inc_counter('some_counter_2')
- storage.inc_counter('some_counter_2')
- assert adapter.incr.mock_calls == [
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/count.some_counter_1'),
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/count.some_counter_1'),
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/count.some_counter_1'),
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/count.some_counter_2'),
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/count.some_counter_2')
- ]
+ self.key = None
+ self.ttl = None
+ async def expire(key, ttl):
+ self.key = key
+ self.ttl = ttl
+ adapter.expire = expire
+
+ await storage.expire_keys(2, 2)
+ assert self.key == 'SPLITIO.events'
+ assert self.ttl == 3600
+
+ self.key = None
+ await storage.expire_keys(2, 1)
+ assert self.key == None
- def test_inc_gauge(self, mocker):
- """Test incrementing latency."""
+
+class RedisTelemetryStorageTests(object):
+ """Redis Telemetry storage test cases."""
+
+ def test_init(self, mocker):
+ redis_telemetry = RedisTelemetryStorage(mocker.Mock(), mocker.Mock())
+ assert(redis_telemetry._redis_client is not None)
+ assert(redis_telemetry._sdk_metadata is not None)
+ assert(isinstance(redis_telemetry._tel_config, TelemetryConfig))
+ assert(redis_telemetry._make_pipe is not None)
+
+ @mock.patch('splitio.models.telemetry.TelemetryConfig.record_config')
+ def test_record_config(self, mocker):
+ redis_telemetry = RedisTelemetryStorage(mocker.Mock(), mocker.Mock())
+ redis_telemetry.record_config(mocker.Mock(), mocker.Mock(), 0, 0)
+ assert(mocker.called)
+
+ @mock.patch('splitio.storage.adapters.redis.RedisAdapter.hset')
+ def test_push_config_stats(self, mocker):
+ adapter = build({})
+ redis_telemetry = RedisTelemetryStorage(adapter, mocker.Mock())
+ redis_telemetry.push_config_stats()
+ assert(mocker.called)
+
+ def test_format_config_stats(self, mocker):
+ redis_telemetry = RedisTelemetryStorage(mocker.Mock(), mocker.Mock())
+ json_value = redis_telemetry._format_config_stats({'aF': 0, 'rF': 0, 'sT': None, 'oM': None}, [])
+ stats = redis_telemetry._tel_config.get_stats()
+ assert(json_value == json.dumps({
+ 'aF': stats['aF'],
+ 'rF': stats['rF'],
+ 'sT': stats['sT'],
+ 'oM': stats['oM'],
+ 't': redis_telemetry.pop_config_tags(),
+ }))
+
+ def test_record_active_and_redundant_factories(self, mocker):
+ redis_telemetry = RedisTelemetryStorage(mocker.Mock(), mocker.Mock())
+ active_factory_count = 1
+ redundant_factory_count = 2
+ redis_telemetry.record_active_and_redundant_factories(1, 2)
+ assert (redis_telemetry._tel_config._active_factory_count == active_factory_count)
+ assert (redis_telemetry._tel_config._redundant_factory_count == redundant_factory_count)
+
+ def test_add_latency_to_pipe(self, mocker):
+ adapter = build({})
+ metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+ redis_telemetry = RedisTelemetryStorage(adapter, metadata)
+ pipe = adapter._decorated.pipeline()
+
+ def _mocked_hincrby(*args, **kwargs):
+ assert(args[1] == RedisTelemetryStorage._TELEMETRY_LATENCIES_KEY)
+ assert(args[2][-11:] == 'treatment/0')
+ assert(args[3] == 1)
+ # should increment bucket 0
+ with mock.patch('redis.client.Pipeline.hincrby', _mocked_hincrby):
+ redis_telemetry.add_latency_to_pipe(MethodExceptionsAndLatencies.TREATMENT, 0, pipe)
+
+ def _mocked_hincrby2(*args, **kwargs):
+ assert(args[1] == RedisTelemetryStorage._TELEMETRY_LATENCIES_KEY)
+ assert(args[2][-11:] == 'treatment/3')
+ assert(args[3] == 1)
+ # should increment bucket 3
+ with mock.patch('redis.client.Pipeline.hincrby', _mocked_hincrby2):
+ redis_telemetry.add_latency_to_pipe(MethodExceptionsAndLatencies.TREATMENT, 3, pipe)
+
+ def test_record_exception(self, mocker):
+ def _mocked_hincrby(*args, **kwargs):
+ assert(args[1] == RedisTelemetryStorage._TELEMETRY_EXCEPTIONS_KEY)
+ assert(args[2] == 'python-1.1.1/hostname/ip/treatment')
+ assert(args[3] == 1)
+
+ adapter = build({})
+ metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+ redis_telemetry = RedisTelemetryStorage(adapter, metadata)
+ with mock.patch('redis.client.Pipeline.hincrby', _mocked_hincrby):
+ with mock.patch('redis.client.Pipeline.execute') as mock_method:
+ mock_method.return_value = [1]
+ redis_telemetry.record_exception(MethodExceptionsAndLatencies.TREATMENT)
+
+ def test_expire_latency_keys(self, mocker):
+ redis_telemetry = RedisTelemetryStorage(mocker.Mock(), mocker.Mock())
+ def _mocked_method(*args, **kwargs):
+ assert(args[1] == RedisTelemetryStorage._TELEMETRY_LATENCIES_KEY)
+ assert(args[2] == RedisTelemetryStorage._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[3] == 1)
+ assert(args[4] == 2)
+
+ with mock.patch('splitio.storage.redis.RedisTelemetryStorage.expire_keys', _mocked_method):
+ redis_telemetry.expire_latency_keys(1, 2)
+
+ @mock.patch('redis.client.Redis.expire')
+ def test_expire_keys(self, mocker):
+ adapter = build({})
+ metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+ redis_telemetry = RedisTelemetryStorage(adapter, metadata)
+ redis_telemetry.expire_keys('key', 12, 1, 2)
+ assert(not mocker.called)
+ redis_telemetry.expire_keys('key', 12, 2, 2)
+ assert(mocker.called)
+
+
+class RedisTelemetryStorageAsyncTests(object):
+ """Redis Telemetry storage test cases."""
+
+ @pytest.mark.asyncio
+ async def test_init(self, mocker):
+ redis_telemetry = await RedisTelemetryStorageAsync.create(mocker.Mock(), mocker.Mock())
+ assert(redis_telemetry._redis_client is not None)
+ assert(redis_telemetry._sdk_metadata is not None)
+ assert(isinstance(redis_telemetry._tel_config, TelemetryConfigAsync))
+ assert(redis_telemetry._make_pipe is not None)
+
+ @pytest.mark.asyncio
+ async def test_record_config(self, mocker):
+ redis_telemetry = await RedisTelemetryStorageAsync.create(mocker.Mock(), mocker.Mock())
+ self.called = False
+ async def record_config(*args):
+ self.called = True
+ redis_telemetry._tel_config.record_config = record_config
+
+ await redis_telemetry.record_config(mocker.Mock(), mocker.Mock(), 0, 0)
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_push_config_stats(self, mocker):
+ adapter = await aioredis.from_url("redis://localhost")
+ redis_telemetry = await RedisTelemetryStorageAsync.create(adapter, SdkMetadata('python-1.1.1', 'hostname', 'ip'))
+ self.key = None
+ self.hash = None
+ async def hset(key, hash, val):
+ self.key = key
+ self.hash = hash
+
+ adapter.hset = hset
+ def format_config_stats(stats, tags):
+ return ""
+ redis_telemetry._format_config_stats = format_config_stats
+ await redis_telemetry.push_config_stats()
+ assert self.key == 'SPLITIO.telemetry.init'
+ assert self.hash == 'python-1.1.1/hostname/ip'
+
+ @pytest.mark.asyncio
+ async def test_format_config_stats(self, mocker):
+ redis_telemetry = await RedisTelemetryStorageAsync.create(mocker.Mock(), mocker.Mock())
+ json_value = redis_telemetry._format_config_stats({'aF': 0, 'rF': 0, 'sT': None, 'oM': None}, [])
+ stats = await redis_telemetry._tel_config.get_stats()
+ assert(json_value == json.dumps({
+ 'aF': stats['aF'],
+ 'rF': stats['rF'],
+ 'sT': stats['sT'],
+ 'oM': stats['oM'],
+ 't': await redis_telemetry.pop_config_tags()
+ }))
+
+ @pytest.mark.asyncio
+ async def test_record_active_and_redundant_factories(self, mocker):
+ redis_telemetry = await RedisTelemetryStorageAsync.create(mocker.Mock(), mocker.Mock())
+ active_factory_count = 1
+ redundant_factory_count = 2
+ await redis_telemetry.record_active_and_redundant_factories(1, 2)
+ assert (redis_telemetry._tel_config._active_factory_count == active_factory_count)
+ assert (redis_telemetry._tel_config._redundant_factory_count == redundant_factory_count)
+
+ @pytest.mark.asyncio
+ async def test_add_latency_to_pipe(self, mocker):
+ adapter = build({})
+ metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+ redis_telemetry = await RedisTelemetryStorageAsync.create(adapter, metadata)
+ pipe = adapter._decorated.pipeline()
+
+ def _mocked_hincrby(*args, **kwargs):
+ assert(args[1] == RedisTelemetryStorageAsync._TELEMETRY_LATENCIES_KEY)
+ assert(args[2][-11:] == 'treatment/0')
+ assert(args[3] == 1)
+ # should increment bucket 0
+ with mock.patch('redis.client.Pipeline.hincrby', _mocked_hincrby):
+ redis_telemetry.add_latency_to_pipe(MethodExceptionsAndLatencies.TREATMENT, 0, pipe)
+
+ def _mocked_hincrby2(*args, **kwargs):
+ assert(args[1] == RedisTelemetryStorageAsync._TELEMETRY_LATENCIES_KEY)
+ assert(args[2][-11:] == 'treatment/3')
+ assert(args[3] == 1)
+ # should increment bucket 3
+ with mock.patch('redis.client.Pipeline.hincrby', _mocked_hincrby2):
+ redis_telemetry.add_latency_to_pipe(MethodExceptionsAndLatencies.TREATMENT, 3, pipe)
+
+ @pytest.mark.asyncio
+ async def test_record_exception(self, mocker):
+ self.called = False
+ def _mocked_hincrby(*args, **kwargs):
+ self.called = True
+ assert(args[1] == RedisTelemetryStorageAsync._TELEMETRY_EXCEPTIONS_KEY)
+ assert(args[2] == 'python-1.1.1/hostname/ip/treatment')
+ assert(args[3] == 1)
+
+ self.called2 = False
+ async def _mocked_execute(*args):
+ self.called2 = True
+ return [1]
+
+ adapter = await aioredis.from_url("redis://localhost")
+ metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+ redis_telemetry = await RedisTelemetryStorageAsync.create(adapter, metadata)
+ with mock.patch('redis.asyncio.client.Pipeline.hincrby', _mocked_hincrby):
+ with mock.patch('redis.asyncio.client.Pipeline.execute', _mocked_execute):
+ await redis_telemetry.record_exception(MethodExceptionsAndLatencies.TREATMENT)
+ assert self.called
+ assert self.called2
+
+ @pytest.mark.asyncio
+ async def test_expire_latency_keys(self, mocker):
+ redis_telemetry = await RedisTelemetryStorageAsync.create(mocker.Mock(), mocker.Mock())
+ def _mocked_method(*args, **kwargs):
+ assert(args[1] == RedisTelemetryStorageAsync._TELEMETRY_LATENCIES_KEY)
+ assert(args[2] == RedisTelemetryStorageAsync._TELEMETRY_KEY_DEFAULT_TTL)
+ assert(args[3] == 1)
+ assert(args[4] == 2)
+
+ with mock.patch('splitio.storage.redis.RedisTelemetryStorage.expire_keys', _mocked_method):
+ await redis_telemetry.expire_latency_keys(1, 2)
+
+ @pytest.mark.asyncio
+ async def test_expire_keys(self, mocker):
+ adapter = await aioredis.from_url("redis://localhost")
+ metadata = SdkMetadata('python-1.1.1', 'hostname', 'ip')
+ redis_telemetry = await RedisTelemetryStorageAsync.create(adapter, metadata)
+ self.called = False
+ async def expire(*args):
+ self.called = True
+ adapter.expire = expire
+
+ await redis_telemetry.expire_keys('key', 12, 1, 2)
+ assert(not self.called)
+
+ await redis_telemetry.expire_keys('key', 12, 2, 2)
+ assert(self.called)
+
+class RedisRuleBasedSegmentStorageTests(object):
+ """Redis rule based segment storage test cases."""
+
+ def test_get_segment(self, mocker):
+ """Test retrieving a rule based segment works."""
adapter = mocker.Mock(spec=RedisAdapter)
- metadata = get_metadata({})
+ adapter.get.return_value = '{"name": "some_segment"}'
+ from_raw = mocker.Mock()
+ mocker.patch('splitio.storage.redis.rule_based_segments.from_raw', new=from_raw)
+
+ storage = RedisRuleBasedSegmentsStorage(adapter)
+ storage.get('some_segment')
+
+ assert adapter.get.mock_calls == [mocker.call('SPLITIO.rbsegment.some_segment')]
+ assert from_raw.mock_calls == [mocker.call({"name": "some_segment"})]
+
+ # Test that a missing split returns None and doesn't call from_raw
+ adapter.reset_mock()
+ from_raw.reset_mock()
+ adapter.get.return_value = None
+ result = storage.get('some_segment')
+ assert result is None
+ assert adapter.get.mock_calls == [mocker.call('SPLITIO.rbsegment.some_segment')]
+ assert not from_raw.mock_calls
+
+ def test_get_changenumber(self, mocker):
+ """Test fetching changenumber."""
+ adapter = mocker.Mock(spec=RedisAdapter)
+ storage = RedisRuleBasedSegmentsStorage(adapter)
+ adapter.get.return_value = '-1'
+ assert storage.get_change_number() == -1
+ assert adapter.get.mock_calls == [mocker.call('SPLITIO.rbsegments.till')]
- storage = RedisTelemetryStorage(adapter, metadata)
- storage.put_gauge('gauge1', 123)
- storage.put_gauge('gauge2', 456)
- assert adapter.set.mock_calls == [
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/gauge.gauge1', 123),
- mocker.call('SPLITIO/' + metadata.sdk_version + '/' + metadata.instance_name + '/gauge.gauge2', 456)
+ def test_get_segment_names(self, mocker):
+ """Test getching rule based segment names."""
+ adapter = mocker.Mock(spec=RedisAdapter)
+ storage = RedisRuleBasedSegmentsStorage(adapter)
+ adapter.keys.return_value = [
+ 'SPLITIO.rbsegment.segment1',
+ 'SPLITIO.rbsegment.segment2',
+ 'SPLITIO.rbsegment.segment3'
+ ]
+ assert storage.get_segment_names() == ['segment1', 'segment2', 'segment3']
+
+ def test_contains(self, mocker):
+ """Test storage containing rule based segment names."""
+ adapter = mocker.Mock(spec=RedisAdapter)
+ storage = RedisRuleBasedSegmentsStorage(adapter)
+ adapter.keys.return_value = [
+ 'SPLITIO.rbsegment.segment1',
+ 'SPLITIO.rbsegment.segment2',
+ 'SPLITIO.rbsegment.segment3'
]
+ assert storage.contains(['segment1', 'segment3'])
+ assert not storage.contains(['segment1', 'segment4'])
+ assert storage.contains(['segment1'])
+ assert not storage.contains(['segment4', 'segment5'])
+
+ def test_fetch_many(self, mocker):
+ """Test retrieving a list of passed splits."""
+ adapter = mocker.Mock(spec=RedisAdapter)
+ storage = RedisRuleBasedSegmentsStorage(adapter)
+ from_raw = mocker.Mock()
+ mocker.patch('splitio.storage.redis.rule_based_segments.from_raw', new=from_raw)
+
+ adapter.mget.return_value = ['{"name": "rbs1"}', '{"name": "rbs2"}', None]
+
+ result = storage.fetch_many(['rbs1', 'rbs2', 'rbs3'])
+ assert len(result) == 3
+
+ assert mocker.call({'name': 'rbs1'}) in from_raw.mock_calls
+ assert mocker.call({'name': 'rbs2'}) in from_raw.mock_calls
+
+ assert result['rbs1'] is not None
+ assert result['rbs2'] is not None
+ assert 'rbs3' in result
+
+ # should not raise exception
+ result = storage.fetch_many([])
+ assert len(result) == 0
+
+class RedisRuleBasedSegmentStorageAsyncTests(object):
+ """Redis rule based segment storage test cases."""
+
+ @pytest.mark.asyncio
+ async def test_get_segment(self, mocker):
+ """Test retrieving a rule based segment works."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+
+ self.redis_ret = None
+ self.name = None
+ async def get(sel, name):
+ self.name = name
+ self.redis_ret = '{"changeNumber": "12", "name": "some_segment", "status": "ACTIVE","trafficTypeName": "user","excluded":{"keys":[],"segments":[]},"conditions": []}'
+ return self.redis_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get)
+
+ storage = RedisRuleBasedSegmentsStorageAsync(adapter)
+ await storage.get('some_segment')
+
+ assert self.name == 'SPLITIO.rbsegment.some_segment'
+ assert self.redis_ret == '{"changeNumber": "12", "name": "some_segment", "status": "ACTIVE","trafficTypeName": "user","excluded":{"keys":[],"segments":[]},"conditions": []}'
+
+ # Test that a missing split returns None and doesn't call from_raw
+
+ self.name = None
+ async def get2(sel, name):
+ self.name = name
+ return None
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get2)
+
+ result = await storage.get('some_segment')
+ assert result is None
+ assert self.name == 'SPLITIO.rbsegment.some_segment'
+
+ # Test that a missing split returns None and doesn't call from_raw
+ result = await storage.get('some_segment2')
+ assert result is None
+
+ @pytest.mark.asyncio
+ async def test_get_changenumber(self, mocker):
+ """Test fetching changenumber."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisRuleBasedSegmentsStorageAsync(adapter)
+
+ self.redis_ret = None
+ self.name = None
+ async def get(sel, name):
+ self.name = name
+ self.redis_ret = '-1'
+ return self.redis_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.get', new=get)
+
+ assert await storage.get_change_number() == -1
+ assert self.name == 'SPLITIO.rbsegments.till'
+
+ @pytest.mark.asyncio
+ async def test_get_segment_names(self, mocker):
+ """Test getching rule based segment names."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisRuleBasedSegmentsStorageAsync(adapter)
+
+ self.key = None
+ self.keys_ret = None
+ async def keys(sel, key):
+ self.key = key
+ self.keys_ret = [
+ 'SPLITIO.rbsegment.segment1',
+ 'SPLITIO.rbsegment.segment2',
+ 'SPLITIO.rbsegment.segment3'
+ ]
+ return self.keys_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.keys', new=keys)
+
+ assert await storage.get_segment_names() == ['segment1', 'segment2', 'segment3']
+
+ @pytest.mark.asyncio
+ async def test_contains(self, mocker):
+ """Test storage containing rule based segment names."""
+ redis_mock = await aioredis.from_url("redis://localhost")
+ adapter = redis.RedisAdapterAsync(redis_mock, 'some_prefix')
+ storage = RedisRuleBasedSegmentsStorageAsync(adapter)
+
+ self.key = None
+ self.keys_ret = None
+ async def keys(sel, key):
+ self.key = key
+ self.keys_ret = [
+ 'SPLITIO.rbsegment.segment1',
+ 'SPLITIO.rbsegment.segment2',
+ 'SPLITIO.rbsegment.segment3'
+ ]
+ return self.keys_ret
+ mocker.patch('splitio.storage.adapters.redis.RedisAdapterAsync.keys', new=keys)
+
+ assert await storage.contains(['segment1', 'segment3'])
+ assert not await storage.contains(['segment1', 'segment4'])
+ assert await storage.contains(['segment1'])
+ assert not await storage.contains(['segment4', 'segment5'])
+
+ @pytest.mark.asyncio
+ async def test_fetch_many(self, mocker):
+ """Test retrieving a list of passed splits."""
+ adapter = mocker.Mock(spec=RedisAdapter)
+ storage = RedisRuleBasedSegmentsStorageAsync(adapter)
+ from_raw = mocker.Mock()
+ mocker.patch('splitio.storage.redis.rule_based_segments.from_raw', new=from_raw)
+ async def mget(*_):
+ return ['{"name": "rbs1"}', '{"name": "rbs2"}', None]
+ adapter.mget = mget
+
+ result = await storage.fetch_many(['rbs1', 'rbs2', 'rbs3'])
+ assert len(result) == 3
+
+ assert mocker.call({'name': 'rbs1'}) in from_raw.mock_calls
+ assert mocker.call({'name': 'rbs2'}) in from_raw.mock_calls
+
+ assert result['rbs1'] is not None
+ assert result['rbs2'] is not None
+ assert 'rbs3' in result
+
+ # should not raise exception
+ result = await storage.fetch_many([])
+ assert len(result) == 0
+
diff --git a/tests/storage/test_uwsgi.py b/tests/storage/test_uwsgi.py
deleted file mode 100644
index 9bd28cf2..00000000
--- a/tests/storage/test_uwsgi.py
+++ /dev/null
@@ -1,301 +0,0 @@
-"""UWSGI Storage unit tests."""
-#pylint: disable=no-self-usage
-import json
-
-from splitio.storage.uwsgi import UWSGIEventStorage, UWSGIImpressionStorage, \
- UWSGISegmentStorage, UWSGISplitStorage, UWSGITelemetryStorage
-
-from splitio.models.splits import Split
-from splitio.models.segments import Segment
-from splitio.models.impressions import Impression
-from splitio.models.events import Event, EventWrapper
-
-from splitio.storage.adapters.uwsgi_cache import get_uwsgi
-
-
-class UWSGISplitStorageTests(object):
- """UWSGI Split Storage test cases."""
-
- @staticmethod
- def _get_from_raw_mock(mocker):
- def _do(raw):
- mock_split = mocker.Mock()
- mock_split = mocker.Mock(spec=Split)
- mock_split.to_json.return_value = raw
- split_name = mocker.PropertyMock()
- split_name.return_value = raw['name']
- type(mock_split).name = split_name
- traffic_type_name = mocker.PropertyMock()
- traffic_type_name.return_value = raw['trafficTypeName']
- type(mock_split).traffic_type_name = traffic_type_name
- return mock_split
-
- from_raw_mock = mocker.Mock()
- from_raw_mock.side_effect = lambda x: _do(x)
- return from_raw_mock
-
- def test_store_retrieve_split(self, mocker):
- """Test storing and retrieving splits."""
- uwsgi = get_uwsgi(True)
- storage = UWSGISplitStorage(uwsgi)
- from_raw_mock = self._get_from_raw_mock(mocker)
- mocker.patch('splitio.models.splits.from_raw', new=from_raw_mock)
-
- raw_split = {'name': 'some_split', 'trafficTypeName': 'user'}
- split = from_raw_mock(raw_split)
-
- from_raw_mock.reset_mock() # clear mock calls so they don't interfere with the testing itself.
- storage.put(split)
-
- retrieved = storage.get('some_split')
-
- assert retrieved.name == split.name and retrieved.traffic_type_name == split.traffic_type_name
- assert from_raw_mock.mock_calls == [mocker.call(raw_split)]
- assert split.to_json.mock_calls == [mocker.call()]
-
- assert storage.get('nonexistant_split') is None
-
- storage.remove('some_split')
- assert storage.get('some_split') == None
-
- def test_get_splits(self, mocker):
- """Test retrieving a list of passed splits."""
- uwsgi = get_uwsgi(True)
- storage = UWSGISplitStorage(uwsgi)
- from_raw_mock = self._get_from_raw_mock(mocker)
- mocker.patch('splitio.models.splits.from_raw', new=from_raw_mock)
-
- split_1 = from_raw_mock({'name': 'some_split_1', 'trafficTypeName': 'user'})
- split_2 = from_raw_mock({'name': 'some_split_2', 'trafficTypeName': 'user'})
- storage.put(split_1)
- storage.put(split_2)
-
- splits = storage.fetch_many(['some_split_1', 'some_split_2', 'some_split_3'])
- assert len(splits) == 3
- assert splits['some_split_1'].name == 'some_split_1'
- assert splits['some_split_2'].name == 'some_split_2'
- assert 'some_split_3' in splits
-
- def test_set_get_changenumber(self, mocker):
- """Test setting and retrieving changenumber."""
- uwsgi = get_uwsgi(True)
- storage = UWSGISplitStorage(uwsgi)
-
- assert storage.get_change_number() == None
- storage.set_change_number(123)
- assert storage.get_change_number() == 123
-
- def test_get_split_names(self, mocker):
- """Test getting all split names."""
- uwsgi = get_uwsgi(True)
- storage = UWSGISplitStorage(uwsgi)
- from_raw_mock = self._get_from_raw_mock(mocker)
- mocker.patch('splitio.models.splits.from_raw', new=from_raw_mock)
-
- split_1 = from_raw_mock({'name': 'some_split_1', 'trafficTypeName': 'user'})
- split_2 = from_raw_mock({'name': 'some_split_2', 'trafficTypeName': 'user'})
- storage.put(split_1)
- storage.put(split_2)
-
- assert set(storage.get_split_names()) == set(['some_split_1', 'some_split_2'])
- storage.remove('some_split_1')
- assert storage.get_split_names() == ['some_split_2']
-
- def test_get_all_splits(self, mocker):
- """Test fetching all splits."""
- uwsgi = get_uwsgi(True)
- storage = UWSGISplitStorage(uwsgi)
- from_raw_mock = self._get_from_raw_mock(mocker)
- mocker.patch('splitio.models.splits.from_raw', new=from_raw_mock)
-
- split_1 = from_raw_mock({'name': 'some_split_1', 'trafficTypeName': 'user'})
- split_2 = from_raw_mock({'name': 'some_split_2', 'trafficTypeName': 'user'})
- storage.put(split_1)
- storage.put(split_2)
-
- splits = storage.get_all_splits()
- s1 = next(split for split in splits if split.name == 'some_split_1')
- s2 = next(split for split in splits if split.name == 'some_split_2')
-
- assert s1.traffic_type_name == 'user'
- assert s2.traffic_type_name == 'user'
-
- def test_is_valid_traffic_type(self, mocker):
- """Test that traffic type validation works properly."""
- uwsgi = get_uwsgi(True)
- storage = UWSGISplitStorage(uwsgi)
- from_raw_mock = self._get_from_raw_mock(mocker)
- mocker.patch('splitio.models.splits.from_raw', new=from_raw_mock)
-
- split_1 = from_raw_mock({'name': 'some_split_1', 'trafficTypeName': 'user'})
- storage.put(split_1)
- assert storage.is_valid_traffic_type('user') is True
- assert storage.is_valid_traffic_type('account') is False
-
- split_2 = from_raw_mock({'name': 'some_split_2', 'trafficTypeName': 'account'})
- storage.put(split_2)
- assert storage.is_valid_traffic_type('user') is True
- assert storage.is_valid_traffic_type('account') is True
-
- split_3 = from_raw_mock({'name': 'some_split_3', 'trafficTypeName': 'user'})
- storage.put(split_3)
- assert storage.is_valid_traffic_type('user') is True
- assert storage.is_valid_traffic_type('account') is True
-
- storage.remove('some_split_1')
- assert storage.is_valid_traffic_type('user') is True
- assert storage.is_valid_traffic_type('account') is True
-
- storage.remove('some_split_2')
- assert storage.is_valid_traffic_type('user') is True
- assert storage.is_valid_traffic_type('account') is False
-
- storage.remove('some_split_3')
- assert storage.is_valid_traffic_type('user') is False
- assert storage.is_valid_traffic_type('account') is False
-
-class UWSGISegmentStorageTests(object):
- """UWSGI Segment storage test cases."""
-
- def test_store_retrieve_segment(self, mocker):
- """Test storing and fetching segments."""
- uwsgi = get_uwsgi(True)
- storage = UWSGISegmentStorage(uwsgi)
- segment = mocker.Mock(spec=Segment)
- segment_keys = mocker.PropertyMock()
- segment_keys.return_value = ['abc']
- type(segment).keys = segment_keys
- segment.to_json = {}
- segment_name = mocker.PropertyMock()
- segment_name.return_value = 'some_segment'
- segment_change_number = mocker.PropertyMock()
- segment_change_number.return_value = 123
- type(segment).name = segment_name
- type(segment).change_number = segment_change_number
- from_raw_mock = mocker.Mock()
- from_raw_mock.return_value = 'ok'
- mocker.patch('splitio.models.segments.from_raw', new=from_raw_mock)
-
- storage.put(segment)
- assert storage.get('some_segment') == 'ok'
- assert from_raw_mock.mock_calls == [mocker.call({'till': 123, 'removed': [], 'added': [u'abc'], 'name': 'some_segment'})]
- assert storage.get('nonexistant-segment') is None
-
- def test_get_set_change_number(self, mocker):
- """Test setting and getting change number."""
- uwsgi = get_uwsgi(True)
- storage = UWSGISegmentStorage(uwsgi)
- assert storage.get_change_number('some_segment') is None
- storage.set_change_number('some_segment', 123)
- assert storage.get_change_number('some_segment') == 123
-
- def test_segment_contains(self, mocker):
- """Test that segment contains works properly."""
- uwsgi = get_uwsgi(True)
- storage = UWSGISegmentStorage(uwsgi)
-
- from_raw_mock = mocker.Mock()
- from_raw_mock.return_value = Segment('some_segment', ['abc'], 123)
- mocker.patch('splitio.models.segments.from_raw', new=from_raw_mock)
- segment = mocker.Mock(spec=Segment)
- segment_keys = mocker.PropertyMock()
- segment_keys.return_value = ['abc']
- type(segment).keys = segment_keys
- segment.to_json = {}
- segment_name = mocker.PropertyMock()
- segment_name.return_value = 'some_segment'
- segment_change_number = mocker.PropertyMock()
- segment_change_number.return_value = 123
- type(segment).name = segment_name
- type(segment).change_number = segment_change_number
- storage.put(segment)
-
- assert storage.segment_contains('some_segment', 'abc')
- assert not storage.segment_contains('some_segment', 'qwe')
-
-
-
-class UWSGIImpressionsStorageTests(object):
- """UWSGI Impressions storage test cases."""
-
- def test_put_pop_impressions(self, mocker):
- """Test storing and fetching impressions."""
- uwsgi = get_uwsgi(True)
- storage = UWSGIImpressionStorage(uwsgi)
- impressions = [
- Impression('key1', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654),
- Impression('key2', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654),
- Impression('key3', 'feature2', 'on', 'some_label', 123456, 'buck1', 321654),
- Impression('key4', 'feature1', 'on', 'some_label', 123456, 'buck1', 321654)
- ]
- storage.put(impressions)
- res = storage.pop_many(10)
- assert res == impressions
-
- def test_flush(self):
- """Test requesting, querying and acknowledging a flush."""
- uwsgi = get_uwsgi(True)
- storage = UWSGIImpressionStorage(uwsgi)
- assert storage.should_flush() is False
- storage.request_flush()
- assert storage.should_flush() is True
- storage.acknowledge_flush()
- assert storage.should_flush() is False
-
-
-
-
-class UWSGIEventsStorageTests(object):
- """UWSGI Events storage test cases."""
-
- def test_put_pop_events(self, mocker):
- """Test storing and fetching events."""
- uwsgi = get_uwsgi(True)
- storage = UWSGIEventStorage(uwsgi)
- events = [
- EventWrapper(event=Event('key1', 'user', 'purchase', 10, 123456, None), size=32768),
- EventWrapper(event=Event('key2', 'user', 'purchase', 10, 123456, None), size=32768),
- EventWrapper(event=Event('key3', 'user', 'purchase', 10, 123456, None), size=32768),
- EventWrapper(event=Event('key4', 'user', 'purchase', 10, 123456, None), size=32768),
- ]
-
- storage.put(events)
- res = storage.pop_many(10)
- assert res == [
- Event('key1', 'user', 'purchase', 10, 123456, None),
- Event('key2', 'user', 'purchase', 10, 123456, None),
- Event('key3', 'user', 'purchase', 10, 123456, None),
- Event('key4', 'user', 'purchase', 10, 123456, None)
- ]
-
-class UWSGITelemetryStorageTests(object):
- """UWSGI-based telemetry storage test cases."""
-
- def test_latencies(self):
- """Test storing and popping latencies."""
- storage = UWSGITelemetryStorage(get_uwsgi(True))
- storage.inc_latency('some_latency', 2)
- storage.inc_latency('some_latency', 2)
- storage.inc_latency('some_latency', 2)
- assert storage.pop_latencies() == {
- 'some_latency': [0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- }
- assert storage.pop_latencies() == {}
-
- def test_counters(self):
- """Test storing and popping counters."""
- storage = UWSGITelemetryStorage(get_uwsgi(True))
- storage.inc_counter('some_counter')
- storage.inc_counter('some_counter')
- storage.inc_counter('some_counter')
- assert storage.pop_counters() == {'some_counter': 3}
- assert storage.pop_counters() == {}
-
- def test_gauges(self):
- """Test storing and popping gauges."""
- storage = UWSGITelemetryStorage(get_uwsgi(True))
- storage.put_gauge('some_gauge1', 123)
- storage.put_gauge('some_gauge2', 456)
- assert storage.pop_gauges() == {'some_gauge1': 123, 'some_gauge2': 456}
- assert storage.pop_gauges() == {}
-
diff --git a/tests/sync/__init__.py b/tests/sync/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/sync/test_events_synchronizer.py b/tests/sync/test_events_synchronizer.py
new file mode 100644
index 00000000..7eb52dc4
--- /dev/null
+++ b/tests/sync/test_events_synchronizer.py
@@ -0,0 +1,131 @@
+"""Split Worker tests."""
+
+import threading
+import time
+import pytest
+
+from splitio.api.client import HttpResponse
+from splitio.api import APIException
+from splitio.storage import EventStorage
+from splitio.models.events import Event
+from splitio.sync.event import EventSynchronizer, EventSynchronizerAsync
+
+
+class EventsSynchronizerTests(object):
+ """Events synchronizer test cases."""
+
+ def test_synchronize_events_error(self, mocker):
+ storage = mocker.Mock(spec=EventStorage)
+ storage.pop_many.return_value = [
+ Event('key1', 'user', 'purchase', 5.3, 123456, None),
+ Event('key2', 'user', 'purchase', 5.3, 123456, None),
+ ]
+
+ api = mocker.Mock()
+
+ def run(x):
+ raise APIException("something broke")
+
+ api.flush_events.side_effect = run
+ event_synchronizer = EventSynchronizer(api, storage, 5)
+ event_synchronizer.synchronize_events()
+ assert event_synchronizer._failed.qsize() == 2
+
+ def test_synchronize_events_empty(self, mocker):
+ storage = mocker.Mock(spec=EventStorage)
+ storage.pop_many.return_value = []
+
+ api = mocker.Mock()
+
+ def run(x):
+ run._called += 1
+
+ run._called = 0
+ api.flush_events.side_effect = run
+ event_synchronizer = EventSynchronizer(api, storage, 5)
+ event_synchronizer.synchronize_events()
+ assert run._called == 0
+
+ def test_synchronize_impressions(self, mocker):
+ storage = mocker.Mock(spec=EventStorage)
+ storage.pop_many.return_value = [
+ Event('key1', 'user', 'purchase', 5.3, 123456, None),
+ Event('key2', 'user', 'purchase', 5.3, 123456, None),
+ ]
+
+ api = mocker.Mock()
+
+ def run(x):
+ run._called += 1
+ return HttpResponse(200, '', {})
+
+ api.flush_events.side_effect = run
+ run._called = 0
+
+ event_synchronizer = EventSynchronizer(api, storage, 5)
+ event_synchronizer.synchronize_events()
+ assert run._called == 1
+ assert event_synchronizer._failed.qsize() == 0
+
+
+class EventsSynchronizerAsyncTests(object):
+ """Events synchronizer async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_synchronize_events_error(self, mocker):
+ storage = mocker.Mock(spec=EventStorage)
+ async def pop_many(*args):
+ return [
+ Event('key1', 'user', 'purchase', 5.3, 123456, None),
+ Event('key2', 'user', 'purchase', 5.3, 123456, None),
+ ]
+ storage.pop_many = pop_many
+
+ api = mocker.Mock()
+ async def run(x):
+ raise APIException("something broke")
+
+ api.flush_events = run
+ event_synchronizer = EventSynchronizerAsync(api, storage, 5)
+ await event_synchronizer.synchronize_events()
+ assert event_synchronizer._failed.qsize() == 2
+
+ @pytest.mark.asyncio
+ async def test_synchronize_events_empty(self, mocker):
+ storage = mocker.Mock(spec=EventStorage)
+ async def pop_many(*args):
+ return []
+ storage.pop_many = pop_many
+
+ api = mocker.Mock()
+ async def run(x):
+ run._called += 1
+
+ run._called = 0
+ api.flush_events = run
+ event_synchronizer = EventSynchronizerAsync(api, storage, 5)
+ await event_synchronizer.synchronize_events()
+ assert run._called == 0
+
+ @pytest.mark.asyncio
+ async def test_synchronize_impressions(self, mocker):
+ storage = mocker.Mock(spec=EventStorage)
+ async def pop_many(*args):
+ return [
+ Event('key1', 'user', 'purchase', 5.3, 123456, None),
+ Event('key2', 'user', 'purchase', 5.3, 123456, None),
+ ]
+ storage.pop_many = pop_many
+
+ api = mocker.Mock()
+ async def run(x):
+ run._called += 1
+ return HttpResponse(200, '', {})
+
+ api.flush_events.side_effect = run
+ run._called = 0
+
+ event_synchronizer = EventSynchronizerAsync(api, storage, 5)
+ await event_synchronizer.synchronize_events()
+ assert run._called == 1
+ assert event_synchronizer._failed.qsize() == 0
diff --git a/tests/sync/test_impressions_count_synchronizer.py b/tests/sync/test_impressions_count_synchronizer.py
new file mode 100644
index 00000000..3db1753e
--- /dev/null
+++ b/tests/sync/test_impressions_count_synchronizer.py
@@ -0,0 +1,75 @@
+"""Split Worker tests."""
+
+import threading
+import time
+import pytest
+
+from splitio.api.client import HttpResponse
+from splitio.api import APIException
+from splitio.engine.impressions.impressions import Manager as ImpressionsManager
+from splitio.engine.impressions.manager import Counter
+from splitio.engine.impressions.strategies import StrategyOptimizedMode
+from splitio.sync.impression import ImpressionsCountSynchronizer, ImpressionsCountSynchronizerAsync
+from splitio.api.impressions import ImpressionsAPI
+
+
+class ImpressionsCountSynchronizerTests(object):
+ """ImpressionsCount synchronizer test cases."""
+
+ def test_synchronize_impressions_counts(self, mocker):
+ counter = mocker.Mock(spec=Counter)
+
+ counters = [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ Counter.CountPerFeature('f1', 456, 111),
+ Counter.CountPerFeature('f2', 456, 222)
+ ]
+
+ counter.pop_all.return_value = counters
+ api = mocker.Mock(spec=ImpressionsAPI)
+ api.flush_counters.return_value = HttpResponse(200, '', {})
+ impression_count_synchronizer = ImpressionsCountSynchronizer(api, counter)
+ impression_count_synchronizer.synchronize_counters()
+
+ assert counter.pop_all.mock_calls[0] == mocker.call()
+ assert api.flush_counters.mock_calls[0] == mocker.call(counters)
+
+ assert len(api.flush_counters.mock_calls) == 1
+
+
+class ImpressionsCountSynchronizerAsyncTests(object):
+ """ImpressionsCount synchronizer test cases."""
+
+ @pytest.mark.asyncio
+ async def test_synchronize_impressions_counts(self, mocker):
+ counter = mocker.Mock(spec=Counter)
+
+ self.called = 0
+ def pop_all():
+ self.called += 1
+ return [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ Counter.CountPerFeature('f1', 456, 111),
+ Counter.CountPerFeature('f2', 456, 222)
+ ]
+ counter.pop_all = pop_all
+
+ self.counters = None
+ async def flush_counters(counters):
+ self.counters = counters
+ return HttpResponse(200, '', {})
+ api = mocker.Mock(spec=ImpressionsAPI)
+ api.flush_counters = flush_counters
+
+ impression_count_synchronizer = ImpressionsCountSynchronizerAsync(api, counter)
+ await impression_count_synchronizer.synchronize_counters()
+
+ assert self.counters == [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ Counter.CountPerFeature('f1', 456, 111),
+ Counter.CountPerFeature('f2', 456, 222)
+ ]
+ assert self.called == 1
diff --git a/tests/sync/test_impressions_synchronizer.py b/tests/sync/test_impressions_synchronizer.py
new file mode 100644
index 00000000..00b65833
--- /dev/null
+++ b/tests/sync/test_impressions_synchronizer.py
@@ -0,0 +1,133 @@
+"""Split Worker tests."""
+
+import threading
+import time
+import pytest
+
+from splitio.api.client import HttpResponse
+from splitio.api import APIException
+from splitio.storage import ImpressionStorage
+from splitio.models.impressions import Impression
+from splitio.sync.impression import ImpressionSynchronizer, ImpressionSynchronizerAsync
+
+
+class ImpressionsSynchronizerTests(object):
+ """Impressions synchronizer test cases."""
+
+ def test_synchronize_impressions_error(self, mocker):
+ storage = mocker.Mock(spec=ImpressionStorage)
+ storage.pop_many.return_value = [
+ Impression('key1', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key2', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ ]
+
+ api = mocker.Mock()
+
+ def run(x):
+ raise APIException("something broke")
+ api.flush_impressions.side_effect = run
+
+ impression_synchronizer = ImpressionSynchronizer(api, storage, 5)
+ impression_synchronizer.synchronize_impressions()
+ assert impression_synchronizer._failed.qsize() == 2
+
+ def test_synchronize_impressions_empty(self, mocker):
+ storage = mocker.Mock(spec=ImpressionStorage)
+ storage.pop_many.return_value = []
+
+ api = mocker.Mock()
+
+ def run(x):
+ run._called += 1
+
+ run._called = 0
+ api.flush_impressions.side_effect = run
+ impression_synchronizer = ImpressionSynchronizer(api, storage, 5)
+ impression_synchronizer.synchronize_impressions()
+ assert run._called == 0
+
+ def test_synchronize_impressions(self, mocker):
+ storage = mocker.Mock(spec=ImpressionStorage)
+ storage.pop_many.return_value = [
+ Impression('key1', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key2', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ ]
+
+ api = mocker.Mock()
+
+ def run(x):
+ run._called += 1
+ return HttpResponse(200, '', {})
+
+ api.flush_impressions.side_effect = run
+ run._called = 0
+
+ impression_synchronizer = ImpressionSynchronizer(api, storage, 5)
+ impression_synchronizer.synchronize_impressions()
+ assert run._called == 1
+ assert impression_synchronizer._failed.qsize() == 0
+
+
+class ImpressionsSynchronizerAsyncTests(object):
+ """Impressions synchronizer test cases."""
+
+ @pytest.mark.asyncio
+ async def test_synchronize_impressions_error(self, mocker):
+ storage = mocker.Mock(spec=ImpressionStorage)
+ async def pop_many(*args):
+ return [
+ Impression('key1', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key2', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ ]
+ storage.pop_many = pop_many
+ api = mocker.Mock()
+
+ async def run(x):
+ raise APIException("something broke")
+ api.flush_impressions = run
+
+ impression_synchronizer = ImpressionSynchronizerAsync(api, storage, 5)
+ await impression_synchronizer.synchronize_impressions()
+ assert impression_synchronizer._failed.qsize() == 2
+
+ @pytest.mark.asyncio
+ async def test_synchronize_impressions_empty(self, mocker):
+ storage = mocker.Mock(spec=ImpressionStorage)
+ async def pop_many(*args):
+ return []
+ storage.pop_many = pop_many
+
+ api = mocker.Mock()
+
+ async def run(x):
+ run._called += 1
+
+ run._called = 0
+ api.flush_impressions = run
+ impression_synchronizer = ImpressionSynchronizerAsync(api, storage, 5)
+ await impression_synchronizer.synchronize_impressions()
+ assert run._called == 0
+
+ @pytest.mark.asyncio
+ async def test_synchronize_impressions(self, mocker):
+ storage = mocker.Mock(spec=ImpressionStorage)
+ async def pop_many(*args):
+ return [
+ Impression('key1', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key2', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ ]
+ storage.pop_many = pop_many
+
+ api = mocker.Mock()
+
+ async def run(x):
+ run._called += 1
+ return HttpResponse(200, '', {})
+
+ api.flush_impressions = run
+ run._called = 0
+
+ impression_synchronizer = ImpressionSynchronizerAsync(api, storage, 5)
+ await impression_synchronizer.synchronize_impressions()
+ assert run._called == 1
+ assert impression_synchronizer._failed.qsize() == 0
diff --git a/tests/sync/test_manager.py b/tests/sync/test_manager.py
new file mode 100644
index 00000000..47ac3f01
--- /dev/null
+++ b/tests/sync/test_manager.py
@@ -0,0 +1,240 @@
+"""Manager tests."""
+
+import threading
+import unittest.mock as mock
+import time
+import pytest
+
+from splitio.optional.loaders import asyncio
+from splitio.api.auth import AuthAPI
+from splitio.api import auth, client, APIException
+from splitio.client.util import get_metadata
+from splitio.client.config import DEFAULT_CONFIG
+from splitio.tasks.split_sync import SplitSynchronizationTask, SplitSynchronizationTaskAsync
+from splitio.tasks.segment_sync import SegmentSynchronizationTask
+from splitio.tasks.impressions_sync import ImpressionsSyncTask, ImpressionsCountSyncTask
+from splitio.tasks.events_sync import EventsSyncTask
+from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageProducerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
+from splitio.models.telemetry import SSESyncMode, StreamingEventTypes
+from splitio.push.manager import Status
+from splitio.sync.split import SplitSynchronizer, SplitSynchronizerAsync
+from splitio.sync.segment import SegmentSynchronizer
+from splitio.sync.impression import ImpressionSynchronizer, ImpressionsCountSynchronizer
+from splitio.sync.event import EventSynchronizer
+from splitio.sync.synchronizer import Synchronizer, SynchronizerAsync, SplitTasks, SplitSynchronizers, RedisSynchronizer, RedisSynchronizerAsync
+from splitio.sync.manager import Manager, ManagerAsync, RedisManager, RedisManagerAsync
+from splitio.storage import SplitStorage, RuleBasedSegmentsStorage
+from splitio.api import APIException
+from splitio.client.util import SdkMetadata
+
+
+class SyncManagerTests(object):
+ """Synchronizer Manager tests."""
+
+ def test_error(self, mocker):
+ split_task = mocker.Mock(spec=SplitSynchronizationTask)
+ split_tasks = SplitTasks(split_task, mocker.Mock(), mocker.Mock(), mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+
+ storage = mocker.Mock(spec=SplitStorage)
+ rb_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ api = mocker.Mock()
+
+ def run(x):
+ raise APIException("something broke")
+
+ api.fetch_splits.side_effect = run
+ storage.get_change_number.return_value = -1
+
+ split_sync = SplitSynchronizer(api, storage, rb_storage)
+ synchronizers = SplitSynchronizers(split_sync, mocker.Mock(), mocker.Mock(),
+ mocker.Mock(), mocker.Mock(), mocker.Mock())
+
+ synchronizer = Synchronizer(synchronizers, split_tasks)
+ manager = Manager(threading.Event(), synchronizer, mocker.Mock(), False, SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+
+ manager._SYNC_ALL_ATTEMPTS = 1
+ manager.start(2) # should not throw!
+
+ def test_start_streaming_false(self, mocker):
+ splits_ready_event = threading.Event()
+ synchronizer = mocker.Mock(spec=Synchronizer)
+ manager = Manager(splits_ready_event, synchronizer, mocker.Mock(), False, SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+ try:
+ manager.start()
+ except:
+ pass
+ splits_ready_event.wait(2)
+ assert splits_ready_event.is_set()
+ assert len(synchronizer.sync_all.mock_calls) == 1
+ assert len(synchronizer.start_periodic_fetching.mock_calls) == 1
+ assert len(synchronizer.start_periodic_data_recording.mock_calls) == 1
+
+ def test_telemetry(self, mocker):
+ splits_ready_event = threading.Event()
+ synchronizer = mocker.Mock(spec=Synchronizer)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_producer = TelemetryStorageProducer(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = Manager(splits_ready_event, synchronizer, mocker.Mock(), True, SdkMetadata('1.0', 'some', '1.2.3.4'), telemetry_runtime_producer)
+ try:
+ manager.start()
+ except:
+ pass
+ splits_ready_event.wait(2)
+
+ manager._queue.put(Status.PUSH_SUBSYSTEM_UP)
+ manager._queue.put(Status.PUSH_NONRETRYABLE_ERROR)
+ time.sleep(1)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-2]._type == StreamingEventTypes.SYNC_MODE_UPDATE.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-2]._data == SSESyncMode.STREAMING.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.SYNC_MODE_UPDATE.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSESyncMode.POLLING.value)
+
+
+class SyncManagerAsyncTests(object):
+ """Synchronizer Manager tests."""
+
+ @pytest.mark.asyncio
+ async def test_error(self, mocker):
+ split_task = mocker.Mock(spec=SplitSynchronizationTask)
+ split_tasks = SplitTasks(split_task, mocker.Mock(), mocker.Mock(), mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+
+ storage = mocker.Mock(spec=SplitStorage)
+ rb_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ api = mocker.Mock()
+
+ async def run(x):
+ raise APIException("something broke")
+ api.fetch_splits = run
+
+ async def get_change_number():
+ return -1
+ storage.get_change_number = get_change_number
+
+ split_sync = SplitSynchronizerAsync(api, storage, rb_storage)
+ synchronizers = SplitSynchronizers(split_sync, mocker.Mock(), mocker.Mock(),
+ mocker.Mock(), mocker.Mock(), mocker.Mock())
+
+ synchronizer = SynchronizerAsync(synchronizers, split_tasks)
+ manager = ManagerAsync(synchronizer, mocker.Mock(), False, SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+
+ manager._SYNC_ALL_ATTEMPTS = 1
+ await manager.start(2) # should not throw!
+
+ @pytest.mark.asyncio
+ async def test_start_streaming_false(self, mocker):
+ synchronizer = mocker.Mock(spec=SynchronizerAsync)
+ self.sync_all_called = 0
+ async def sync_all(retry):
+ self.sync_all_called += 1
+ synchronizer.sync_all = sync_all
+
+ self.fetching_called = 0
+ def start_periodic_fetching():
+ self.fetching_called += 1
+ synchronizer.start_periodic_fetching = start_periodic_fetching
+
+ self.rcording_called = 0
+ def start_periodic_data_recording():
+ self.rcording_called += 1
+ synchronizer.start_periodic_data_recording = start_periodic_data_recording
+
+ manager = ManagerAsync(synchronizer, mocker.Mock(), False, SdkMetadata('1.0', 'some', '1.2.3.4'), mocker.Mock())
+ try:
+ await manager.start()
+ except:
+ pass
+ assert self.sync_all_called == 1
+ assert self.fetching_called == 1
+ assert self.rcording_called == 1
+
+ @pytest.mark.asyncio
+ async def test_telemetry(self, mocker):
+ synchronizer = mocker.Mock(spec=SynchronizerAsync)
+ async def sync_all(retry=1):
+ pass
+ synchronizer.sync_all = sync_all
+
+ async def stop_periodic_fetching():
+ pass
+ synchronizer.stop_periodic_fetching = stop_periodic_fetching
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_producer = TelemetryStorageProducerAsync(telemetry_storage)
+ telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
+ manager = ManagerAsync(synchronizer, mocker.Mock(), True, SdkMetadata('1.0', 'some', '1.2.3.4'), telemetry_runtime_producer)
+ try:
+ await manager.start()
+ except:
+ pass
+
+ await manager._queue.put(Status.PUSH_SUBSYSTEM_UP)
+ await manager._queue.put(Status.PUSH_NONRETRYABLE_ERROR)
+ await asyncio.sleep(1)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-2]._type == StreamingEventTypes.SYNC_MODE_UPDATE.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-2]._data == SSESyncMode.STREAMING.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._type == StreamingEventTypes.SYNC_MODE_UPDATE.value)
+ assert(telemetry_storage._streaming_events._streaming_events[len(telemetry_storage._streaming_events._streaming_events)-1]._data == SSESyncMode.POLLING.value)
+
+
+class RedisSyncManagerTests(object):
+ """Synchronizer Redis Manager tests."""
+
+ synchronizers = SplitSynchronizers(None, None, None, None, None, None, None, None)
+ tasks = SplitTasks(None, None, None, None, None, None, None, None)
+ synchronizer = RedisSynchronizer(synchronizers, tasks)
+ manager = RedisManager(synchronizer)
+
+ @mock.patch('splitio.sync.synchronizer.RedisSynchronizer.start_periodic_data_recording')
+ def test_recreate_and_start(self, mocker):
+
+ assert(isinstance(self.manager._synchronizer, RedisSynchronizer))
+
+ self.manager.recreate()
+ assert(not mocker.called)
+
+ self.manager.start()
+ assert(mocker.called)
+
+ @mock.patch('splitio.sync.synchronizer.RedisSynchronizer.shutdown')
+ def test_recreate_and_stop(self, mocker):
+
+ self.manager.recreate()
+ assert(not mocker.called)
+
+ self.manager.stop(True)
+ assert(mocker.called)
+
+
+class RedisSyncManagerAsyncTests(object):
+ """Synchronizer Redis Manager async tests."""
+
+ synchronizers = SplitSynchronizers(None, None, None, None, None, None, None, None)
+ tasks = SplitTasks(None, None, None, None, None, None, None, None)
+ synchronizer = RedisSynchronizerAsync(synchronizers, tasks)
+ manager = RedisManagerAsync(synchronizer)
+
+ @mock.patch('splitio.sync.synchronizer.RedisSynchronizerAsync.start_periodic_data_recording')
+ def test_recreate_and_start(self, mocker):
+ assert(isinstance(self.manager._synchronizer, RedisSynchronizerAsync))
+
+ self.manager.recreate()
+ assert(not mocker.called)
+
+ self.manager.start()
+ assert(mocker.called)
+
+ @pytest.mark.asyncio
+ async def test_recreate_and_stop(self, mocker):
+ self.called = False
+ async def shutdown(block):
+ self.called = True
+ self.manager._synchronizer.shutdown = shutdown
+ self.manager.recreate()
+ assert(not self.called)
+
+ await self.manager.stop(True)
+ assert(self.called)
diff --git a/tests/sync/test_segments_synchronizer.py b/tests/sync/test_segments_synchronizer.py
new file mode 100644
index 00000000..5b405ef8
--- /dev/null
+++ b/tests/sync/test_segments_synchronizer.py
@@ -0,0 +1,780 @@
+"""Split Worker tests."""
+
+import os
+
+from splitio.util.backoff import Backoff
+from splitio.api import APIException
+from splitio.api.commons import FetchOptions
+from splitio.storage import SplitStorage, SegmentStorage, RuleBasedSegmentsStorage
+from splitio.storage.inmemmory import InMemorySegmentStorage, InMemorySegmentStorageAsync, InMemorySplitStorage, InMemorySplitStorageAsync
+from splitio.sync.segment import SegmentSynchronizer, SegmentSynchronizerAsync, LocalSegmentSynchronizer, LocalSegmentSynchronizerAsync
+from splitio.models.segments import Segment
+from splitio.models import rule_based_segments
+from splitio.optional.loaders import aiofiles, asyncio
+
+import pytest
+
+class SegmentsSynchronizerTests(object):
+ """Segments synchronizer test cases."""
+
+ def test_synchronize_segments_error(self, mocker):
+ """On error."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ split_storage.get_segment_names.return_value = ['segmentA', 'segmentB', 'segmentC']
+
+ storage = mocker.Mock(spec=SegmentStorage)
+ storage.get_change_number.return_value = -1
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ rbs_storage.get_segment_names.return_value = []
+
+ api = mocker.Mock()
+
+ def run(x):
+ raise APIException("something broke")
+
+ api.fetch_segment.side_effect = run
+ segments_synchronizer = SegmentSynchronizer(api, split_storage, storage, rbs_storage)
+ assert not segments_synchronizer.synchronize_segments()
+
+ def test_synchronize_segments(self, mocker):
+ """Test the normal operation flow."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ split_storage.get_segment_names.return_value = ['segmentA', 'segmentB', 'segmentC']
+
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ rbs_storage.get_segment_names.return_value = ['rbs']
+ rbs_storage.get.return_value = rule_based_segments.from_raw({'name': 'rbs', 'conditions': [], 'trafficTypeName': 'user', 'changeNumber': 123, 'status': 'ACTIVE', 'excluded': {'keys': [], 'segments': [{'type': 'standard', 'name': 'segmentD'}]}})
+
+ # Setup a mocked segment storage whose changenumber returns -1 on first fetch and
+ # 123 afterwards.
+ storage = mocker.Mock(spec=SegmentStorage)
+
+ def change_number_mock(segment_name):
+ if segment_name == 'segmentA' and change_number_mock._count_a == 0:
+ change_number_mock._count_a = 1
+ return -1
+ if segment_name == 'segmentB' and change_number_mock._count_b == 0:
+ change_number_mock._count_b = 1
+ return -1
+ if segment_name == 'segmentC' and change_number_mock._count_c == 0:
+ change_number_mock._count_c = 1
+ return -1
+ if segment_name == 'segmentD' and change_number_mock._count_d == 0:
+ change_number_mock._count_d = 1
+ return -1
+ return 123
+ change_number_mock._count_a = 0
+ change_number_mock._count_b = 0
+ change_number_mock._count_c = 0
+ change_number_mock._count_d = 0
+ storage.get_change_number.side_effect = change_number_mock
+
+ # Setup a mocked segment api to return segments mentioned before.
+ def fetch_segment_mock(segment_name, change_number, fetch_options):
+ if segment_name == 'segmentA' and fetch_segment_mock._count_a == 0:
+ fetch_segment_mock._count_a = 1
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentB' and fetch_segment_mock._count_b == 0:
+ fetch_segment_mock._count_b = 1
+ return {'name': 'segmentB', 'added': ['key4', 'key5', 'key6'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentC' and fetch_segment_mock._count_c == 0:
+ fetch_segment_mock._count_c = 1
+ return {'name': 'segmentC', 'added': ['key7', 'key8', 'key9'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentD' and fetch_segment_mock._count_d == 0:
+ fetch_segment_mock._count_d = 1
+ return {'name': 'segmentD', 'added': ['key10'], 'removed': [],
+ 'since': -1, 'till': 123}
+ return {'added': [], 'removed': [], 'since': 123, 'till': 123}
+ fetch_segment_mock._count_a = 0
+ fetch_segment_mock._count_b = 0
+ fetch_segment_mock._count_c = 0
+ fetch_segment_mock._count_d = 0
+
+ api = mocker.Mock()
+ api.fetch_segment.side_effect = fetch_segment_mock
+
+ segments_synchronizer = SegmentSynchronizer(api, split_storage, storage, rbs_storage)
+ assert segments_synchronizer.synchronize_segments()
+
+ api_calls = [call for call in api.fetch_segment.mock_calls]
+
+ assert mocker.call('segmentA', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert mocker.call('segmentB', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert mocker.call('segmentC', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert mocker.call('segmentD', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert mocker.call('segmentA', 123, FetchOptions(True, None, None, None, None)) in api_calls
+ assert mocker.call('segmentB', 123, FetchOptions(True, None, None, None, None)) in api_calls
+ assert mocker.call('segmentC', 123, FetchOptions(True, None, None, None, None)) in api_calls
+ assert mocker.call('segmentD', 123, FetchOptions(True, None, None, None, None)) in api_calls
+
+ segment_put_calls = storage.put.mock_calls
+ segments_to_validate = set(['segmentA', 'segmentB', 'segmentC', 'segmentD'])
+ for call in segment_put_calls:
+ _, positional_args, _ = call
+ segment = positional_args[0]
+ assert isinstance(segment, Segment)
+ assert segment.name in segments_to_validate
+ segments_to_validate.remove(segment.name)
+
+ def test_synchronize_segment(self, mocker):
+ """Test particular segment update."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ storage = mocker.Mock(spec=SegmentStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ rbs_storage.get_segment_names.return_value = []
+
+ def change_number_mock(segment_name):
+ if change_number_mock._count_a == 0:
+ change_number_mock._count_a = 1
+ return -1
+ return 123
+ change_number_mock._count_a = 0
+ storage.get_change_number.side_effect = change_number_mock
+
+ def fetch_segment_mock(segment_name, change_number, fetch_options):
+ if fetch_segment_mock._count_a == 0:
+ fetch_segment_mock._count_a = 1
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ return {'added': [], 'removed': [], 'since': 123, 'till': 123}
+ fetch_segment_mock._count_a = 0
+
+ api = mocker.Mock()
+ api.fetch_segment.side_effect = fetch_segment_mock
+
+ segments_synchronizer = SegmentSynchronizer(api, split_storage, storage, rbs_storage)
+ segments_synchronizer.synchronize_segment('segmentA')
+
+ api_calls = [call for call in api.fetch_segment.mock_calls]
+ assert mocker.call('segmentA', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert mocker.call('segmentA', 123, FetchOptions(True, None, None, None, None)) in api_calls
+
+ def test_synchronize_segment_cdn(self, mocker):
+ """Test particular segment update cdn bypass."""
+ mocker.patch('splitio.sync.segment._ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES', new=3)
+
+ split_storage = mocker.Mock(spec=SplitStorage)
+ storage = mocker.Mock(spec=SegmentStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ rbs_storage.get_segment_names.return_value = []
+
+ def change_number_mock(segment_name):
+ change_number_mock._count_a += 1
+ if change_number_mock._count_a == 1:
+ return -1
+ elif change_number_mock._count_a >= 2 and change_number_mock._count_a <= 3:
+ return 123
+ elif change_number_mock._count_a <= 7:
+ return 1234
+ return 12345 # Return proper cn for CDN Bypass
+
+ change_number_mock._count_a = 0
+ storage.get_change_number.side_effect = change_number_mock
+
+ def fetch_segment_mock(segment_name, change_number, fetch_options):
+ fetch_segment_mock._count_a += 1
+ if fetch_segment_mock._count_a == 1:
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ elif fetch_segment_mock._count_a == 2:
+ return {'added': [], 'removed': [], 'since': 123, 'till': 123}
+ elif fetch_segment_mock._count_a == 3:
+ return {'added': [], 'removed': [], 'since': 123, 'till': 1234}
+ elif fetch_segment_mock._count_a >= 4 and fetch_segment_mock._count_a <= 6:
+ return {'added': [], 'removed': [], 'since': 1234, 'till': 1234}
+ elif fetch_segment_mock._count_a == 7:
+ return {'added': [], 'removed': [], 'since': 1234, 'till': 12345}
+ return {'added': [], 'removed': [], 'since': 12345, 'till': 12345}
+ fetch_segment_mock._count_a = 0
+
+ api = mocker.Mock()
+ api.fetch_segment.side_effect = fetch_segment_mock
+
+ segments_synchronizer = SegmentSynchronizer(api, split_storage, storage, rbs_storage)
+ segments_synchronizer.synchronize_segment('segmentA')
+
+ assert mocker.call('segmentA', -1, FetchOptions(True, None, None, None, None)) in api.fetch_segment.mock_calls
+ assert mocker.call('segmentA', 123, FetchOptions(True, None, None, None, None)) in api.fetch_segment.mock_calls
+
+ segments_synchronizer._backoff = Backoff(1, 0.1)
+ segments_synchronizer.synchronize_segment('segmentA', 12345)
+ assert mocker.call('segmentA', 12345, FetchOptions(True, 1234, None, None, None)) in api.fetch_segment.mock_calls
+ assert len(api.fetch_segment.mock_calls) == 8 # 2 ok + BACKOFF(2 since==till + 2 re-attempts) + CDN(2 since==till)
+
+ def test_recreate(self, mocker):
+ """Test recreate logic."""
+ segments_synchronizer = SegmentSynchronizer(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ current_pool = segments_synchronizer._worker_pool
+ segments_synchronizer.recreate()
+ assert segments_synchronizer._worker_pool != current_pool
+
+
+class SegmentsSynchronizerAsyncTests(object):
+ """Segments synchronizer async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_synchronize_segments_error(self, mocker):
+ """On error."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+
+ async def get_segment_names_rbs():
+ return []
+ rbs_storage.get_segment_names = get_segment_names_rbs
+
+ async def get_segment_names():
+ return ['segmentA', 'segmentB', 'segmentC']
+ split_storage.get_segment_names = get_segment_names
+
+ storage = mocker.Mock(spec=SegmentStorage)
+ async def get_change_number(*args):
+ return -1
+ storage.get_change_number = get_change_number
+
+ async def put(*args):
+ pass
+ storage.put = put
+
+ api = mocker.Mock()
+ async def run(*args):
+ raise APIException("something broke")
+ api.fetch_segment = run
+
+ segments_synchronizer = SegmentSynchronizerAsync(api, split_storage, storage, rbs_storage)
+ assert not await segments_synchronizer.synchronize_segments()
+ await segments_synchronizer.shutdown()
+
+ @pytest.mark.asyncio
+ async def test_synchronize_segments(self, mocker):
+ """Test the normal operation flow."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ async def get_segment_names():
+ return ['segmentA', 'segmentB', 'segmentC']
+ split_storage.get_segment_names = get_segment_names
+
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ async def get_segment_names_rbs():
+ return ['rbs']
+ rbs_storage.get_segment_names = get_segment_names_rbs
+
+ async def get_rbs(segment_name):
+ return rule_based_segments.from_raw({'name': 'rbs', 'conditions': [], 'trafficTypeName': 'user', 'changeNumber': 123, 'status': 'ACTIVE', 'excluded': {'keys': [], 'segments': [{'type': 'standard', 'name': 'segmentD'}]}})
+ rbs_storage.get = get_rbs
+
+ # Setup a mocked segment storage whose changenumber returns -1 on first fetch and
+ # 123 afterwards.
+ storage = mocker.Mock(spec=SegmentStorage)
+
+ async def change_number_mock(segment_name):
+ if segment_name == 'segmentA' and change_number_mock._count_a == 0:
+ change_number_mock._count_a = 1
+ return -1
+ if segment_name == 'segmentB' and change_number_mock._count_b == 0:
+ change_number_mock._count_b = 1
+ return -1
+ if segment_name == 'segmentC' and change_number_mock._count_c == 0:
+ change_number_mock._count_c = 1
+ return -1
+ if segment_name == 'segmentD' and change_number_mock._count_d == 0:
+ change_number_mock._count_d = 1
+ return -1
+ return 123
+ change_number_mock._count_a = 0
+ change_number_mock._count_b = 0
+ change_number_mock._count_c = 0
+ change_number_mock._count_d = 0
+ storage.get_change_number = change_number_mock
+
+ self.segment_put = []
+ async def put(segment):
+ self.segment_put.append(segment)
+ storage.put = put
+
+ async def update(*args):
+ pass
+ storage.update = update
+
+ # Setup a mocked segment api to return segments mentioned before.
+ self.options = []
+ self.segment = []
+ self.change = []
+ async def fetch_segment_mock(segment_name, change_number, fetch_options):
+ self.segment.append(segment_name)
+ self.options.append(fetch_options)
+ self.change.append(change_number)
+ if segment_name == 'segmentA' and fetch_segment_mock._count_a == 0:
+ fetch_segment_mock._count_a = 1
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentB' and fetch_segment_mock._count_b == 0:
+ fetch_segment_mock._count_b = 1
+ return {'name': 'segmentB', 'added': ['key4', 'key5', 'key6'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentC' and fetch_segment_mock._count_c == 0:
+ fetch_segment_mock._count_c = 1
+ return {'name': 'segmentC', 'added': ['key7', 'key8', 'key9'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentD' and fetch_segment_mock._count_d == 0:
+ fetch_segment_mock._count_d = 1
+ return {'name': 'segmentD', 'added': ['key10'], 'removed': [],
+ 'since': -1, 'till': 123}
+ return {'added': [], 'removed': [], 'since': 123, 'till': 123}
+ fetch_segment_mock._count_a = 0
+ fetch_segment_mock._count_b = 0
+ fetch_segment_mock._count_c = 0
+ fetch_segment_mock._count_d = 0
+
+ api = mocker.Mock()
+ api.fetch_segment = fetch_segment_mock
+
+ segments_synchronizer = SegmentSynchronizerAsync(api, split_storage, storage, rbs_storage)
+ assert await segments_synchronizer.synchronize_segments()
+
+ api_calls = []
+ for i in range(8):
+ api_calls.append((self.segment[i], self.change[i], self.options[i]))
+
+ assert ('segmentD', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentD', 123, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentA', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentA', 123, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentB', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentB', 123, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentC', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentC', 123, FetchOptions(True, None, None, None, None)) in api_calls
+
+ segments_to_validate = set(['segmentA', 'segmentB', 'segmentC', 'segmentD'])
+ for segment in self.segment_put:
+ assert isinstance(segment, Segment)
+ assert segment.name in segments_to_validate
+ segments_to_validate.remove(segment.name)
+
+ await segments_synchronizer.shutdown()
+
+ @pytest.mark.asyncio
+ async def test_synchronize_segment(self, mocker):
+ """Test particular segment update."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ storage = mocker.Mock(spec=SegmentStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+
+ async def get_segment_names_rbs():
+ return []
+ rbs_storage.get_segment_names = get_segment_names_rbs
+
+ async def change_number_mock(segment_name):
+ if change_number_mock._count_a == 0:
+ change_number_mock._count_a = 1
+ return -1
+ return 123
+ change_number_mock._count_a = 0
+ storage.get_change_number = change_number_mock
+ async def put(segment):
+ pass
+ storage.put = put
+
+ async def update(*args):
+ pass
+ storage.update = update
+
+ self.options = []
+ self.segment = []
+ self.change = []
+ async def fetch_segment_mock(segment_name, change_number, fetch_options):
+ self.segment.append(segment_name)
+ self.options.append(fetch_options)
+ self.change.append(change_number)
+ if fetch_segment_mock._count_a == 0:
+ fetch_segment_mock._count_a = 1
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ return {'added': [], 'removed': [], 'since': 123, 'till': 123}
+ fetch_segment_mock._count_a = 0
+
+ api = mocker.Mock()
+ api.fetch_segment = fetch_segment_mock
+
+ segments_synchronizer = SegmentSynchronizerAsync(api, split_storage, storage, rbs_storage)
+ await segments_synchronizer.synchronize_segment('segmentA')
+
+ assert (self.segment[0], self.change[0], self.options[0]) == ('segmentA', -1, FetchOptions(True, None, None, None, None))
+ assert (self.segment[1], self.change[1], self.options[1]) == ('segmentA', 123, FetchOptions(True, None, None, None, None))
+
+ await segments_synchronizer.shutdown()
+
+ @pytest.mark.asyncio
+ async def test_synchronize_segment_cdn(self, mocker):
+ """Test particular segment update cdn bypass."""
+ mocker.patch('splitio.sync.segment._ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES', new=3)
+
+ split_storage = mocker.Mock(spec=SplitStorage)
+ storage = mocker.Mock(spec=SegmentStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+
+ async def get_segment_names_rbs():
+ return []
+ rbs_storage.get_segment_names = get_segment_names_rbs
+
+ async def change_number_mock(segment_name):
+ change_number_mock._count_a += 1
+ if change_number_mock._count_a == 1:
+ return -1
+ elif change_number_mock._count_a >= 2 and change_number_mock._count_a <= 3:
+ return 123
+ elif change_number_mock._count_a <= 7:
+ return 1234
+ return 12345 # Return proper cn for CDN Bypass
+ change_number_mock._count_a = 0
+ storage.get_change_number = change_number_mock
+ async def put(segment):
+ pass
+ storage.put = put
+
+ async def update(*args):
+ pass
+ storage.update = update
+
+ self.options = []
+ self.segment = []
+ self.change = []
+ async def fetch_segment_mock(segment_name, change_number, fetch_options):
+ self.segment.append(segment_name)
+ self.options.append(fetch_options)
+ self.change.append(change_number)
+ fetch_segment_mock._count_a += 1
+ if fetch_segment_mock._count_a == 1:
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ elif fetch_segment_mock._count_a == 2:
+ return {'added': [], 'removed': [], 'since': 123, 'till': 123}
+ elif fetch_segment_mock._count_a == 3:
+ return {'added': [], 'removed': [], 'since': 123, 'till': 1234}
+ elif fetch_segment_mock._count_a >= 4 and fetch_segment_mock._count_a <= 6:
+ return {'added': [], 'removed': [], 'since': 1234, 'till': 1234}
+ elif fetch_segment_mock._count_a == 7:
+ return {'added': [], 'removed': [], 'since': 1234, 'till': 12345}
+ return {'added': [], 'removed': [], 'since': 12345, 'till': 12345}
+ fetch_segment_mock._count_a = 0
+
+ api = mocker.Mock()
+ api.fetch_segment = fetch_segment_mock
+
+ segments_synchronizer = SegmentSynchronizerAsync(api, split_storage, storage, rbs_storage)
+ await segments_synchronizer.synchronize_segment('segmentA')
+
+ assert (self.segment[0], self.change[0], self.options[0]) == ('segmentA', -1, FetchOptions(True, None, None, None, None))
+ assert (self.segment[1], self.change[1], self.options[1]) == ('segmentA', 123, FetchOptions(True, None, None, None, None))
+
+ segments_synchronizer._backoff = Backoff(1, 0.1)
+ await segments_synchronizer.synchronize_segment('segmentA', 12345)
+ assert (self.segment[7], self.change[7], self.options[7]) == ('segmentA', 12345, FetchOptions(True, 1234, None, None, None))
+ assert len(self.segment) == 8 # 2 ok + BACKOFF(2 since==till + 2 re-attempts) + CDN(2 since==till)
+ await segments_synchronizer.shutdown()
+
+ @pytest.mark.asyncio
+ async def test_recreate(self, mocker):
+ """Test recreate logic."""
+ segments_synchronizer = SegmentSynchronizerAsync(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+ current_pool = segments_synchronizer._worker_pool
+ await segments_synchronizer.shutdown()
+ segments_synchronizer.recreate()
+
+ assert segments_synchronizer._worker_pool != current_pool
+ await segments_synchronizer.shutdown()
+
+
+class LocalSegmentsSynchronizerTests(object):
+ """Segments synchronizer test cases."""
+
+ def test_synchronize_segments_error(self, mocker):
+ """On error."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ split_storage.get_segment_names.return_value = ['segmentA', 'segmentB', 'segmentC']
+
+ storage = mocker.Mock(spec=SegmentStorage)
+ storage.get_change_number.return_value = -1
+
+ segments_synchronizer = LocalSegmentSynchronizer('/,/,/invalid folder name/,/,/', split_storage, storage)
+ assert not segments_synchronizer.synchronize_segments()
+
+ def test_synchronize_segments(self, mocker):
+ """Test the normal operation flow."""
+ split_storage = mocker.Mock(spec=InMemorySplitStorage)
+ split_storage.get_segment_names.return_value = ['segmentA', 'segmentB', 'segmentC']
+ events_queue = queue.Queue()
+ storage = InMemorySegmentStorage(events_queue)
+
+ segment_a = {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ segment_b = {'name': 'segmentB', 'added': ['key4', 'key5', 'key6'], 'removed': [],
+ 'since': -1, 'till': 123}
+ segment_c = {'name': 'segmentC', 'added': ['key7', 'key8', 'key9'], 'removed': [],
+ 'since': -1, 'till': 123}
+ blank = {'added': [], 'removed': [], 'since': 123, 'till': 123}
+
+ def read_segment_from_json_file(*args, **kwargs):
+ if args[0] == 'segmentA':
+ return segment_a
+ if args[0] == 'segmentB':
+ return segment_b
+ if args[0] == 'segmentC':
+ return segment_c
+ return blank
+
+ segments_synchronizer = LocalSegmentSynchronizer('segment_path', split_storage, storage)
+ segments_synchronizer._read_segment_from_json_file = read_segment_from_json_file
+ assert segments_synchronizer.synchronize_segments()
+
+ segment = storage.get('segmentA')
+ assert segment.name == 'segmentA'
+ assert segment.contains('key1')
+ assert segment.contains('key2')
+ assert segment.contains('key3')
+
+ segment = storage.get('segmentB')
+ assert segment.name == 'segmentB'
+ assert segment.contains('key4')
+ assert segment.contains('key5')
+ assert segment.contains('key6')
+
+ segment = storage.get('segmentC')
+ assert segment.name == 'segmentC'
+ assert segment.contains('key7')
+ assert segment.contains('key8')
+ assert segment.contains('key9')
+
+ # Should sync when changenumber is not changed
+ segment_a['added'] = ['key111']
+ segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = storage.get('segmentA')
+ assert segment.contains('key111')
+
+ # Should not sync when changenumber below till
+ segment_a['till'] = 122
+ segment_a['added'] = ['key222']
+ segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = storage.get('segmentA')
+ assert not segment.contains('key222')
+
+ # Should sync when changenumber above till
+ segment_a['till'] = 124
+ segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = storage.get('segmentA')
+ assert segment.contains('key222')
+
+ # Should sync when till is default (-1)
+ segment_a['till'] = -1
+ segment_a['added'] = ['key33']
+ segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = storage.get('segmentA')
+ assert segment.contains('key33')
+
+ # verify remove keys
+ segment_a['added'] = []
+ segment_a['removed'] = ['key111']
+ segment_a['till'] = 125
+ segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = storage.get('segmentA')
+ assert not segment.contains('key111')
+
+ def test_reading_json(self, mocker):
+ """Test reading json file."""
+ f = open("./segmentA.json", "w")
+ f.write('{"name": "segmentA", "added": ["key1", "key2", "key3"], "removed": [],"since": -1, "till": 123}')
+ f.close()
+ split_storage = mocker.Mock(spec=InMemorySplitStorage)
+ events_queue = queue.Queue()
+ storage = InMemorySegmentStorage(events_queue)
+ segments_synchronizer = LocalSegmentSynchronizer('.', split_storage, storage)
+ assert segments_synchronizer.synchronize_segments(['segmentA'])
+
+ segment = storage.get('segmentA')
+ assert segment.name == 'segmentA'
+ assert segment.contains('key1')
+ assert segment.contains('key2')
+ assert segment.contains('key3')
+
+ os.remove("./segmentA.json")
+
+ def test_json_elements_sanitization(self, mocker):
+ """Test sanitization."""
+ segment_synchronizer = LocalSegmentSynchronizer(mocker.Mock(), mocker.Mock(), mocker.Mock())
+ segment1 = {"name": 'seg', "added": [], "removed": [], "since": -1, "till": 12}
+
+ # should reject segment if 'name' is null
+ segment2 = {"name": None, "added": [], "removed": [], "since": -1, "till": 12}
+ exception_called = False
+ try:
+ segment_synchronizer._sanitize_segment(segment2)
+ except:
+ exception_called = True
+ assert(exception_called)
+
+ # should reject segment if 'name' does not exist
+ segment2 = {"added": [], "removed": [], "since": -1, "till": 12}
+ exception_called = False
+ try:
+ segment_synchronizer._sanitize_segment(segment2)
+ except:
+ exception_called = True
+ assert(exception_called)
+
+ # should add missing 'added' element
+ segment2 = {"name": 'seg', "removed": [], "since": -1, "till": 12}
+ assert(segment_synchronizer._sanitize_segment(segment2) == segment1)
+
+ # should add missing 'removed' element
+ segment2 = {"name": 'seg', "added": [], "since": -1, "till": 12}
+ assert(segment_synchronizer._sanitize_segment(segment2) == segment1)
+
+ # should reset added and remved to array if values are None
+ segment2 = {"name": 'seg', "added": None, "removed": None, "since": -1, "till": 12}
+ assert(segment_synchronizer._sanitize_segment(segment2) == segment1)
+
+ # should reset since and till to -1 if values are None
+ segment3 = segment1.copy()
+ segment3["till"] = -1
+ segment2 = {"name": 'seg', "added": [], "removed": [], "since": None, "till": None}
+ assert(segment_synchronizer._sanitize_segment(segment2) == segment3)
+
+ # should add since and till with -1 if they are missing
+ segment2 = {"name": 'seg', "added": [], "removed": []}
+ assert(segment_synchronizer._sanitize_segment(segment2) == segment3)
+
+ # should reset since and till to -1 if values are 0
+ segment2 = {"name": 'seg', "added": [], "removed": [], "since": 0, "till": 0}
+ assert(segment_synchronizer._sanitize_segment(segment2) == segment3)
+
+ # should reset till and since to -1 if values below -1
+ segment2 = {"name": 'seg', "added": [], "removed": [], "since": -2, "till": -2}
+ assert(segment_synchronizer._sanitize_segment(segment2) == segment3)
+
+ # should reset since to till if value above till
+ segment3["since"] = 12
+ segment3["till"] = 12
+ segment2 = {"name": 'seg', "added": [], "removed": [], "since": 20, "till": 12}
+ assert(segment_synchronizer._sanitize_segment(segment2) == segment3)
+
+
+class LocalSegmentsSynchronizerTests(object):
+ """Segments synchronizer test cases."""
+
+ @pytest.mark.asyncio
+ async def test_synchronize_segments_error(self, mocker):
+ """On error."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ async def get_segment_names():
+ return ['segmentA', 'segmentB', 'segmentC']
+ split_storage.get_segment_names = get_segment_names
+
+ storage = mocker.Mock(spec=SegmentStorage)
+ async def get_change_number():
+ return -1
+ storage.get_change_number = get_change_number
+
+ segments_synchronizer = LocalSegmentSynchronizerAsync('/,/,/invalid folder name/,/,/', split_storage, storage)
+ assert not await segments_synchronizer.synchronize_segments()
+
+ @pytest.mark.asyncio
+ async def test_synchronize_segments(self, mocker):
+ """Test the normal operation flow."""
+ split_storage = mocker.Mock(spec=InMemorySplitStorage)
+ async def get_segment_names():
+ return ['segmentA', 'segmentB', 'segmentC']
+ split_storage.get_segment_names = get_segment_names
+
+ storage = InMemorySegmentStorageAsync(asyncio.Queue())
+
+ segment_a = {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ segment_b = {'name': 'segmentB', 'added': ['key4', 'key5', 'key6'], 'removed': [],
+ 'since': -1, 'till': 123}
+ segment_c = {'name': 'segmentC', 'added': ['key7', 'key8', 'key9'], 'removed': [],
+ 'since': -1, 'till': 123}
+ blank = {'added': [], 'removed': [], 'since': 123, 'till': 123}
+
+ async def read_segment_from_json_file(*args, **kwargs):
+ if args[0] == 'segmentA':
+ return segment_a
+ if args[0] == 'segmentB':
+ return segment_b
+ if args[0] == 'segmentC':
+ return segment_c
+ return blank
+
+ segments_synchronizer = LocalSegmentSynchronizerAsync('segment_path', split_storage, storage)
+ segments_synchronizer._read_segment_from_json_file = read_segment_from_json_file
+ assert await segments_synchronizer.synchronize_segments()
+
+ segment = await storage.get('segmentA')
+ assert segment.name == 'segmentA'
+ assert segment.contains('key1')
+ assert segment.contains('key2')
+ assert segment.contains('key3')
+
+ segment = await storage.get('segmentB')
+ assert segment.name == 'segmentB'
+ assert segment.contains('key4')
+ assert segment.contains('key5')
+ assert segment.contains('key6')
+
+ segment = await storage.get('segmentC')
+ assert segment.name == 'segmentC'
+ assert segment.contains('key7')
+ assert segment.contains('key8')
+ assert segment.contains('key9')
+
+ # Should sync when changenumber is not changed
+ segment_a['added'] = ['key111']
+ await segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = await storage.get('segmentA')
+ assert segment.contains('key111')
+
+ # Should not sync when changenumber below till
+ segment_a['till'] = 122
+ segment_a['added'] = ['key222']
+ await segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = await storage.get('segmentA')
+ assert not segment.contains('key222')
+
+ # Should sync when changenumber above till
+ segment_a['till'] = 124
+ await segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = await storage.get('segmentA')
+ assert segment.contains('key222')
+
+ # Should sync when till is default (-1)
+ segment_a['till'] = -1
+ segment_a['added'] = ['key33']
+ await segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = await storage.get('segmentA')
+ assert segment.contains('key33')
+
+ # verify remove keys
+ segment_a['added'] = []
+ segment_a['removed'] = ['key111']
+ segment_a['till'] = 125
+ await segments_synchronizer.synchronize_segments(['segmentA'])
+ segment = await storage.get('segmentA')
+ assert not segment.contains('key111')
+
+ @pytest.mark.asyncio
+ async def test_reading_json(self, mocker):
+ """Test reading json file."""
+ async with aiofiles.open("./segmentA.json", "w") as f:
+ await f.write('{"name": "segmentA", "added": ["key1", "key2", "key3"], "removed": [],"since": -1, "till": 123}')
+ split_storage = mocker.Mock(spec=InMemorySplitStorageAsync)
+ storage = InMemorySegmentStorageAsync(asyncio.Queue())
+ segments_synchronizer = LocalSegmentSynchronizerAsync('.', split_storage, storage)
+ assert await segments_synchronizer.synchronize_segments(['segmentA'])
+
+ segment = await storage.get('segmentA')
+ assert segment.name == 'segmentA'
+ assert segment.contains('key1')
+ assert segment.contains('key2')
+ assert segment.contains('key3')
+
+ os.remove("./segmentA.json")
\ No newline at end of file
diff --git a/tests/sync/test_splits_synchronizer.py b/tests/sync/test_splits_synchronizer.py
new file mode 100644
index 00000000..b27606a4
--- /dev/null
+++ b/tests/sync/test_splits_synchronizer.py
@@ -0,0 +1,1415 @@
+"""Split Worker tests."""
+
+import pytest
+import os
+import json
+import copy
+import queue
+
+from splitio.util.backoff import Backoff
+from splitio.api import APIException
+from splitio.api.commons import FetchOptions
+from splitio.storage import SplitStorage, RuleBasedSegmentsStorage
+from splitio.storage.inmemmory import InMemorySplitStorage, InMemorySplitStorageAsync, InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync
+from splitio.storage import FlagSetsFilter
+from splitio.models.splits import Split
+from splitio.models.rule_based_segments import RuleBasedSegment
+from splitio.sync.split import SplitSynchronizer, SplitSynchronizerAsync, LocalSplitSynchronizer, LocalSplitSynchronizerAsync, LocalhostMode
+from splitio.optional.loaders import aiofiles, asyncio
+from tests.integration import splits_json, rbsegments_json
+
+splits_raw = [{
+ 'changeNumber': 123,
+ 'trafficTypeName': 'user',
+ 'name': 'some_name',
+ 'trafficAllocation': 100,
+ 'trafficAllocationSeed': 123456,
+ 'seed': 321654,
+ 'status': 'ACTIVE',
+ 'killed': False,
+ 'defaultTreatment': 'off',
+ 'algo': 2,
+ 'conditions': [
+ {
+ 'partitions': [
+ {'treatment': 'on', 'size': 50},
+ {'treatment': 'off', 'size': 50}
+ ],
+ 'contitionType': 'WHITELIST',
+ 'label': 'some_label',
+ 'matcherGroup': {
+ 'matchers': [
+ {
+ 'matcherType': 'WHITELIST',
+ 'whitelistMatcherData': {
+ 'whitelist': ['k1', 'k2', 'k3']
+ },
+ 'negate': False,
+ }
+ ],
+ 'combiner': 'AND'
+ }
+ }
+ ],
+ 'sets': ['set1', 'set2']
+}]
+
+json_body = {
+ "ff": {
+ "t":1675095324253,
+ "s":-1,
+ 'd': [{
+ 'changeNumber': 123,
+ 'trafficTypeName': 'user',
+ 'name': 'some_name',
+ 'trafficAllocation': 100,
+ 'trafficAllocationSeed': 123456,
+ 'seed': 321654,
+ 'status': 'ACTIVE',
+ 'killed': False,
+ 'defaultTreatment': 'off',
+ 'algo': 2,
+ 'conditions': [
+ {
+ 'partitions': [
+ {'treatment': 'on', 'size': 50},
+ {'treatment': 'off', 'size': 50}
+ ],
+ 'contitionType': 'WHITELIST',
+ 'label': 'some_label',
+ 'matcherGroup': {
+ 'matchers': [
+ {
+ 'matcherType': 'WHITELIST',
+ 'whitelistMatcherData': {
+ 'whitelist': ['k1', 'k2', 'k3']
+ },
+ 'negate': False,
+ }
+ ],
+ 'combiner': 'AND'
+ }
+ },
+ {
+ "conditionType": "ROLLOUT",
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user"
+ },
+ "matcherType": "IN_RULE_BASED_SEGMENT",
+ "negate": False,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "sample_rule_based_segment"
+ }
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 100
+ },
+ {
+ "treatment": "off",
+ "size": 0
+ }
+ ],
+ "label": "in rule based segment sample_rule_based_segment"
+ },
+ ],
+ 'sets': ['set1', 'set2']}]
+ },
+ "rbs": {
+ "t": 1675095324253,
+ "s": -1,
+ "d": [
+ {
+ "changeNumber": 5,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["mauro@split.io","gaston@split.io"],
+ "segments":[]
+ },
+ "conditions": [
+ {
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "keySelector": {
+ "trafficType": "user",
+ "attribute": "email"
+ },
+ "matcherType": "ENDS_WITH",
+ "negate": False,
+ "whitelistMatcherData": {
+ "whitelist": [
+ "@split.io"
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+}
+
+class SplitsSynchronizerTests(object):
+ """Split synchronizer test cases."""
+
+ splits = copy.deepcopy(splits_raw)
+
+ def test_synchronize_splits_error(self, mocker):
+ """Test that if fetching splits fails at some_point, the task will continue running."""
+ storage = mocker.Mock(spec=InMemorySplitStorage)
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ api = mocker.Mock()
+
+ def run(x, y, c):
+ raise APIException("something broke")
+ run._calls = 0
+ api.fetch_splits.side_effect = run
+ storage.get_change_number.return_value = -1
+ rbs_storage.get_change_number.return_value = -1
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ split_synchronizer = SplitSynchronizer(api, storage, rbs_storage)
+
+ with pytest.raises(APIException):
+ split_synchronizer.synchronize_splits(1)
+
+ def test_synchronize_splits(self, mocker):
+ """Test split sync."""
+ storage = mocker.Mock(spec=InMemorySplitStorage)
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+
+ def change_number_mock():
+ change_number_mock._calls += 1
+ if change_number_mock._calls == 1:
+ return -1
+ return 123
+
+ def rbs_change_number_mock():
+ rbs_change_number_mock._calls += 1
+ if rbs_change_number_mock._calls == 1:
+ return -1
+ return 123
+
+ change_number_mock._calls = 0
+ rbs_change_number_mock._calls = 0
+ storage.get_change_number.side_effect = change_number_mock
+ rbs_storage.get_change_number.side_effect = rbs_change_number_mock
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ api = mocker.Mock()
+ def get_changes(*args, **kwargs):
+ get_changes.called += 1
+
+ if get_changes.called == 1:
+ return json_body
+ else:
+ return {
+ "ff": {
+ "t":123,
+ "s":123,
+ 'd': []
+ },
+ "rbs": {
+ "t": 5,
+ "s": 5,
+ "d": []
+ }
+ }
+
+ get_changes.called = 0
+ api.fetch_splits.side_effect = get_changes
+
+ split_synchronizer = SplitSynchronizer(api, storage, rbs_storage)
+ split_synchronizer.synchronize_splits()
+
+ assert api.fetch_splits.mock_calls[0][1][0] == -1
+ assert api.fetch_splits.mock_calls[0][1][2].cache_control_headers == True
+ assert api.fetch_splits.mock_calls[1][1][0] == 123
+ assert api.fetch_splits.mock_calls[1][1][1] == 123
+ assert api.fetch_splits.mock_calls[1][1][2].cache_control_headers == True
+
+ inserted_split = storage.update.mock_calls[0][1][0][0]
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == 'some_name'
+
+ inserted_rbs = rbs_storage.update.mock_calls[0][1][0][0]
+ assert isinstance(inserted_rbs, RuleBasedSegment)
+ assert inserted_rbs.name == 'sample_rule_based_segment'
+
+ def test_not_called_on_till(self, mocker):
+ """Test that sync is not called when till is less than previous changenumber"""
+ storage = mocker.Mock(spec=InMemorySplitStorage)
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ def change_number_mock():
+ return 2
+ storage.get_change_number.side_effect = change_number_mock
+ rbs_storage.get_change_number.side_effect = change_number_mock
+
+ def get_changes(*args, **kwargs):
+ get_changes.called += 1
+ return None
+
+ get_changes.called = 0
+
+ api = mocker.Mock()
+ api.fetch_splits.side_effect = get_changes
+
+ split_synchronizer = SplitSynchronizer(api, storage, rbs_storage)
+ split_synchronizer.synchronize_splits(1)
+
+ assert get_changes.called == 0
+
+ def test_synchronize_splits_cdn(self, mocker):
+ """Test split sync with bypassing cdn."""
+ mocker.patch('splitio.sync.split._ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES', new=3)
+
+ storage = mocker.Mock(spec=InMemorySplitStorage)
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+
+ def change_number_mock():
+ change_number_mock._calls += 1
+ if change_number_mock._calls == 1:
+ return -1
+ elif change_number_mock._calls >= 2 and change_number_mock._calls <= 3:
+ return 123
+ elif change_number_mock._calls <= 7:
+ return 1234
+ return 12345 # Return proper cn for CDN Bypass
+
+ def rbs_change_number_mock():
+ rbs_change_number_mock._calls += 1
+ if rbs_change_number_mock._calls == 1:
+ return -1
+ elif change_number_mock._calls >= 2 and change_number_mock._calls <= 3:
+ return 555
+ elif change_number_mock._calls <= 9:
+ return 555
+ return 666 # Return proper cn for CDN Bypass
+
+ change_number_mock._calls = 0
+ rbs_change_number_mock._calls = 0
+ storage.get_change_number.side_effect = change_number_mock
+ rbs_storage.get_change_number.side_effect = rbs_change_number_mock
+
+ api = mocker.Mock()
+ rbs_1 = copy.deepcopy(json_body['rbs']['d'])
+ def get_changes(*args, **kwargs):
+ get_changes.called += 1
+ if get_changes.called == 1:
+ return { 'ff': { 'd': self.splits, 's': -1, 't': 123 },
+ 'rbs': {"t": 555, "s": -1, "d": rbs_1}}
+ elif get_changes.called == 2:
+ return { 'ff': { 'd': [], 's': 123, 't': 123 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ elif get_changes.called == 3:
+ return { 'ff': { 'd': [], 's': 123, 't': 1234 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ elif get_changes.called >= 4 and get_changes.called <= 6:
+ return { 'ff': { 'd': [], 's': 1234, 't': 1234 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ elif get_changes.called == 7:
+ return { 'ff': { 'd': [], 's': 1234, 't': 12345 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ elif get_changes.called == 8:
+ return { 'ff': { 'd': [], 's': 12345, 't': 12345 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ rbs_1[0]['excluded']['keys'] = ['bilal@split.io']
+ return { 'ff': { 'd': [], 's': 12345, 't': 12345 },
+ 'rbs': {"t": 666, "s": 666, "d": rbs_1}}
+
+ get_changes.called = 0
+ api.fetch_splits.side_effect = get_changes
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ split_synchronizer = SplitSynchronizer(api, storage, rbs_storage)
+ split_synchronizer._backoff = Backoff(1, 1)
+ split_synchronizer.synchronize_splits()
+
+ assert api.fetch_splits.mock_calls[0][1][0] == -1
+ assert api.fetch_splits.mock_calls[0][1][2].cache_control_headers == True
+ assert api.fetch_splits.mock_calls[1][1][0] == 123
+ assert api.fetch_splits.mock_calls[1][1][2].cache_control_headers == True
+
+ split_synchronizer._backoff = Backoff(1, 0.1)
+ split_synchronizer.synchronize_splits(12345)
+ assert api.fetch_splits.mock_calls[3][1][0] == 1234
+ assert api.fetch_splits.mock_calls[3][1][2].cache_control_headers == True
+ assert len(api.fetch_splits.mock_calls) == 8 # 2 ok + BACKOFF(2 since==till + 2 re-attempts) + CDN(2 since==till)
+
+ inserted_split = storage.update.mock_calls[0][1][0][0]
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == 'some_name'
+ inserted_rbs = rbs_storage.update.mock_calls[0][1][0][0]
+ assert inserted_rbs.excluded.get_excluded_keys() == ["mauro@split.io","gaston@split.io"]
+
+ split_synchronizer._backoff = Backoff(1, 0.1)
+ split_synchronizer.synchronize_splits(None, 666)
+ inserted_rbs = rbs_storage.update.mock_calls[8][1][0][0]
+ assert inserted_rbs.excluded.get_excluded_keys() == ['bilal@split.io']
+
+ def test_sync_flag_sets_with_config_sets(self, mocker):
+ """Test split sync with flag sets."""
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue, ['set1', 'set2'])
+ events_queue = queue.Queue()
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+
+ split = copy.deepcopy(self.splits[0])
+ split['name'] = 'second'
+ splits1 = [self.splits[0].copy(), split]
+ splits2 = copy.deepcopy(self.splits)
+ splits3 = copy.deepcopy(self.splits)
+ splits4 = copy.deepcopy(self.splits)
+ api = mocker.Mock()
+ def get_changes(*args, **kwargs):
+ get_changes.called += 1
+ if get_changes.called == 1:
+ return { 'ff': { 'd': splits1, 's': 123, 't': 123 },
+ 'rbs': {'t': 123, 's': 123, 'd': []}}
+ elif get_changes.called == 2:
+ splits2[0]['sets'] = ['set3']
+ return { 'ff': { 'd': splits2, 's': 124, 't': 124 },
+ 'rbs': {'t': 124, 's': 124, 'd': []}}
+ elif get_changes.called == 3:
+ splits3[0]['sets'] = ['set1']
+ return { 'ff': { 'd': splits3, 's': 12434, 't': 12434 },
+ 'rbs': {'t': 12434, 's': 12434, 'd': []}}
+ splits4[0]['sets'] = ['set6']
+ splits4[0]['name'] = 'new_split'
+ return { 'ff': { 'd': splits4, 's': 12438, 't': 12438 },
+ 'rbs': {'t': 12438, 's': 12438, 'd': []}}
+ get_changes.called = 0
+ api.fetch_splits.side_effect = get_changes
+
+ split_synchronizer = SplitSynchronizer(api, storage, rbs_storage)
+ split_synchronizer._backoff = Backoff(1, 1)
+ split_synchronizer.synchronize_splits()
+ assert isinstance(storage.get('some_name'), Split)
+
+ split_synchronizer.synchronize_splits(124)
+ assert storage.get('some_name') == None
+
+ split_synchronizer.synchronize_splits(12434)
+ assert isinstance(storage.get('some_name'), Split)
+
+ split_synchronizer.synchronize_splits(12438)
+ assert storage.get('new_name') == None
+
+ def test_sync_flag_sets_without_config_sets(self, mocker):
+ """Test split sync with flag sets."""
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ split = copy.deepcopy(self.splits[0])
+ split['name'] = 'second'
+ splits1 = [self.splits[0].copy(), split]
+ splits2 = copy.deepcopy(self.splits)
+ splits3 = copy.deepcopy(self.splits)
+ splits4 = copy.deepcopy(self.splits)
+ api = mocker.Mock()
+ def get_changes(*args, **kwargs):
+ get_changes.called += 1
+ if get_changes.called == 1:
+ return { 'ff': { 'd': splits1, 's': 123, 't': 123 },
+ 'rbs': {"t": 123, "s": 123, "d": []}}
+ elif get_changes.called == 2:
+ splits2[0]['sets'] = ['set3']
+ return { 'ff': { 'd': splits2, 's': 124, 't': 124 },
+ 'rbs': {"t": 124, "s": 124, "d": []}}
+ elif get_changes.called == 3:
+ splits3[0]['sets'] = ['set1']
+ return { 'ff': { 'd': splits3, 's': 12434, 't': 12434 },
+ 'rbs': {"t": 12434, "s": 12434, "d": []}}
+ splits4[0]['sets'] = ['set6']
+ splits4[0]['name'] = 'third_split'
+ return { 'ff': { 'd': splits4, 's': 12438, 't': 12438 },
+ 'rbs': {"t": 12438, "s": 12438, "d": []}}
+ get_changes.called = 0
+ api.fetch_splits.side_effect = get_changes
+
+ split_synchronizer = SplitSynchronizer(api, storage, rbs_storage)
+ split_synchronizer._backoff = Backoff(1, 1)
+ split_synchronizer.synchronize_splits()
+ assert isinstance(storage.get('some_name'), Split)
+
+ split_synchronizer.synchronize_splits(124)
+ assert isinstance(storage.get('some_name'), Split)
+
+ split_synchronizer.synchronize_splits(12434)
+ assert isinstance(storage.get('some_name'), Split)
+
+ split_synchronizer.synchronize_splits(12438)
+ assert isinstance(storage.get('third_split'), Split)
+
+class SplitsSynchronizerAsyncTests(object):
+ """Split synchronizer test cases."""
+
+ splits = copy.deepcopy(splits_raw)
+
+ @pytest.mark.asyncio
+ async def test_synchronize_splits_error(self, mocker):
+ """Test that if fetching splits fails at some_point, the task will continue running."""
+ storage = mocker.Mock(spec=InMemorySplitStorageAsync)
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ api = mocker.Mock()
+
+ async def run(x, y, c):
+ raise APIException("something broke")
+ run._calls = 0
+ api.fetch_splits = run
+
+ async def get_change_number(*args):
+ return -1
+ storage.get_change_number = get_change_number
+ rbs_storage.get_change_number = get_change_number
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ split_synchronizer = SplitSynchronizerAsync(api, storage, rbs_storage)
+
+ with pytest.raises(APIException):
+ await split_synchronizer.synchronize_splits(1)
+
+ @pytest.mark.asyncio
+ async def test_synchronize_splits(self, mocker):
+ """Test split sync."""
+ storage = mocker.Mock(spec=InMemorySplitStorageAsync)
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+
+ async def change_number_mock():
+ change_number_mock._calls += 1
+ if change_number_mock._calls == 1:
+ return -1
+ return 123
+ async def rbs_change_number_mock():
+ rbs_change_number_mock._calls += 1
+ if rbs_change_number_mock._calls == 1:
+ return -1
+ return 123
+
+ change_number_mock._calls = 0
+ rbs_change_number_mock._calls = 0
+ storage.get_change_number = change_number_mock
+ rbs_storage.get_change_number.side_effect = rbs_change_number_mock
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ self.parsed_split = None
+ async def update(parsed_split, deleted, chanhe_number):
+ if len(parsed_split) > 0:
+ self.parsed_split = parsed_split
+ storage.update = update
+
+ self.parsed_rbs = None
+ async def update(parsed_rbs, deleted, chanhe_number):
+ if len(parsed_rbs) > 0:
+ self.parsed_rbs = parsed_rbs
+ rbs_storage.update = update
+
+ self.clear = False
+ async def clear():
+ self.clear = True
+ storage.clear = clear
+
+ self.clear2 = False
+ async def clear():
+ self.clear2 = True
+ rbs_storage.clear = clear
+
+ api = mocker.Mock()
+ self.change_number_1 = None
+ self.fetch_options_1 = None
+ self.change_number_2 = None
+ self.fetch_options_2 = None
+ async def get_changes(change_number, rbs_change_number, fetch_options):
+ get_changes.called += 1
+ if get_changes.called == 1:
+ self.change_number_1 = change_number
+ self.fetch_options_1 = fetch_options
+ return json_body
+ else:
+ self.change_number_2 = change_number
+ self.fetch_options_2 = fetch_options
+ return {
+ "ff": {
+ "t":123,
+ "s":123,
+ 'd': []
+ },
+ "rbs": {
+ "t": 123,
+ "s": 123,
+ "d": []
+ }
+ }
+ get_changes.called = 0
+ api.fetch_splits = get_changes
+ api.clear_storage.return_value = False
+
+ split_synchronizer = SplitSynchronizerAsync(api, storage, rbs_storage)
+ await split_synchronizer.synchronize_splits()
+
+ assert (-1, FetchOptions(True)._cache_control_headers) == (self.change_number_1, self.fetch_options_1._cache_control_headers)
+ assert (123, FetchOptions(True)._cache_control_headers) == (self.change_number_2, self.fetch_options_2._cache_control_headers)
+ inserted_split = self.parsed_split[0]
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == 'some_name'
+
+ inserted_rbs = self.parsed_rbs[0]
+ assert isinstance(inserted_rbs, RuleBasedSegment)
+ assert inserted_rbs.name == 'sample_rule_based_segment'
+
+
+ @pytest.mark.asyncio
+ async def test_not_called_on_till(self, mocker):
+ """Test that sync is not called when till is less than previous changenumber"""
+ storage = mocker.Mock(spec=InMemorySplitStorageAsync)
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ async def change_number_mock():
+ return 2
+ storage.get_change_number = change_number_mock
+ rbs_storage.get_change_number.side_effect = change_number_mock
+
+ async def get_changes(*args, **kwargs):
+ get_changes.called += 1
+ return None
+ get_changes.called = 0
+ api = mocker.Mock()
+ api.fetch_splits = get_changes
+
+ split_synchronizer = SplitSynchronizerAsync(api, storage, rbs_storage)
+ await split_synchronizer.synchronize_splits(1)
+ assert get_changes.called == 0
+
+ @pytest.mark.asyncio
+ async def test_synchronize_splits_cdn(self, mocker):
+ """Test split sync with bypassing cdn."""
+ mocker.patch('splitio.sync.split._ON_DEMAND_FETCH_BACKOFF_MAX_RETRIES', new=3)
+ storage = mocker.Mock(spec=InMemorySplitStorageAsync)
+ rbs_storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ async def change_number_mock():
+ change_number_mock._calls += 1
+ if change_number_mock._calls == 1:
+ return -1
+ elif change_number_mock._calls >= 2 and change_number_mock._calls <= 3:
+ return 123
+ elif change_number_mock._calls <= 7:
+ return 1234
+ return 12345 # Return proper cn for CDN Bypass
+ async def rbs_change_number_mock():
+ rbs_change_number_mock._calls += 1
+ if rbs_change_number_mock._calls == 1:
+ return -1
+ elif change_number_mock._calls >= 2 and change_number_mock._calls <= 3:
+ return 555
+ elif change_number_mock._calls <= 9:
+ return 555
+ return 666 # Return proper cn for CDN Bypass
+
+ change_number_mock._calls = 0
+ rbs_change_number_mock._calls = 0
+ storage.get_change_number = change_number_mock
+ rbs_storage.get_change_number = rbs_change_number_mock
+
+ self.parsed_split = None
+ async def update(parsed_split, deleted, change_number):
+ if len(parsed_split) > 0:
+ self.parsed_split = parsed_split
+ storage.update = update
+
+ self.parsed_rbs = None
+ async def rbs_update(parsed, deleted, change_number):
+ if len(parsed) > 0:
+ self.parsed_rbs = parsed
+ rbs_storage.update = rbs_update
+
+ api = mocker.Mock()
+ self.change_number_1 = None
+ self.fetch_options_1 = None
+ self.change_number_2 = None
+ self.fetch_options_2 = None
+ self.change_number_3 = None
+ self.fetch_options_3 = None
+ rbs_1 = copy.deepcopy(json_body['rbs']['d'])
+
+ async def get_changes(change_number, rbs_change_number, fetch_options):
+ get_changes.called += 1
+ if get_changes.called == 1:
+ self.change_number_1 = change_number
+ self.fetch_options_1 = fetch_options
+ return { 'ff': { 'd': self.splits, 's': -1, 't': 123 },
+ 'rbs': {"t": 555, "s": -1, "d": rbs_1}}
+ elif get_changes.called == 2:
+ self.change_number_2 = change_number
+ self.fetch_options_2 = fetch_options
+ return { 'ff': { 'd': [], 's': 123, 't': 123 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ elif get_changes.called == 3:
+ return { 'ff': { 'd': [], 's': 123, 't': 1234 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ elif get_changes.called >= 4 and get_changes.called <= 6:
+ return { 'ff': { 'd': [], 's': 1234, 't': 1234 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ elif get_changes.called == 7:
+ return { 'ff': { 'd': [], 's': 1234, 't': 12345 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ elif get_changes.called == 8:
+ self.change_number_3 = change_number
+ self.fetch_options_3 = fetch_options
+ return { 'ff': { 'd': [], 's': 12345, 't': 12345 },
+ 'rbs': {"t": 555, "s": 555, "d": []}}
+ rbs_1[0]['excluded']['keys'] = ['bilal@split.io']
+ return { 'ff': { 'd': [], 's': 12345, 't': 12345 },
+ 'rbs': {"t": 666, "s": 666, "d": rbs_1}}
+
+ get_changes.called = 0
+ api.fetch_splits = get_changes
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ self.clear = False
+ async def clear():
+ self.clear = True
+ storage.clear = clear
+
+ self.clear2 = False
+ async def clear():
+ self.clear2 = True
+ rbs_storage.clear = clear
+
+ split_synchronizer = SplitSynchronizerAsync(api, storage, rbs_storage)
+ split_synchronizer._backoff = Backoff(1, 1)
+ await split_synchronizer.synchronize_splits()
+
+ assert (-1, FetchOptions(True).cache_control_headers) == (self.change_number_1, self.fetch_options_1.cache_control_headers)
+ assert (123, FetchOptions(True).cache_control_headers) == (self.change_number_2, self.fetch_options_2.cache_control_headers)
+
+ split_synchronizer._backoff = Backoff(1, 0.1)
+ await split_synchronizer.synchronize_splits(12345)
+ assert (12345, True, 1234) == (self.change_number_3, self.fetch_options_3.cache_control_headers, self.fetch_options_3.change_number)
+ assert get_changes.called == 8 # 2 ok + BACKOFF(2 since==till + 2 re-attempts) + CDN(2 since==till)
+
+ inserted_split = self.parsed_split[0]
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == 'some_name'
+ inserted_rbs = self.parsed_rbs[0]
+ assert inserted_rbs.excluded.get_excluded_keys() == ["mauro@split.io","gaston@split.io"]
+
+ split_synchronizer._backoff = Backoff(1, 0.1)
+ await split_synchronizer.synchronize_splits(None, 666)
+ inserted_rbs = self.parsed_rbs[0]
+ assert inserted_rbs.excluded.get_excluded_keys() == ['bilal@split.io']
+
+ @pytest.mark.asyncio
+ async def test_sync_flag_sets_with_config_sets(self, mocker):
+ """Test split sync with flag sets."""
+ internal_events_queue = asyncio.Queue()
+ storage = InMemorySplitStorageAsync(internal_events_queue, ['set1', 'set2'])
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+
+ split = self.splits[0].copy()
+ split['name'] = 'second'
+ splits1 = [self.splits[0].copy(), split]
+ splits2 = self.splits.copy()
+ splits3 = self.splits.copy()
+ splits4 = self.splits.copy()
+ api = mocker.Mock()
+ async def get_changes(*args, **kwargs):
+ get_changes.called += 1
+ if get_changes.called == 1:
+ return { 'ff': { 'd': splits1, 's': 123, 't': 123 },
+ 'rbs': {'t': 123, 's': 123, 'd': []}}
+ elif get_changes.called == 2:
+ splits2[0]['sets'] = ['set3']
+ return { 'ff': { 'd': splits2, 's': 124, 't': 124 },
+ 'rbs': {'t': 124, 's': 124, 'd': []}}
+ elif get_changes.called == 3:
+ splits3[0]['sets'] = ['set1']
+ return { 'ff': { 'd': splits3, 's': 12434, 't': 12434 },
+ 'rbs': {'t': 12434, 's': 12434, 'd': []}}
+ splits4[0]['sets'] = ['set6']
+ splits4[0]['name'] = 'new_split'
+ return { 'ff': { 'd': splits4, 's': 12438, 't': 12438 },
+ 'rbs': {'t': 12438, 's': 12438, 'd': []}}
+
+ get_changes.called = 0
+ api.fetch_splits = get_changes
+
+ split_synchronizer = SplitSynchronizerAsync(api, storage, rbs_storage)
+ split_synchronizer._backoff = Backoff(1, 1)
+ await split_synchronizer.synchronize_splits()
+ assert isinstance(await storage.get('some_name'), Split)
+
+ await split_synchronizer.synchronize_splits(124)
+ assert await storage.get('some_name') == None
+
+ await split_synchronizer.synchronize_splits(12434)
+ assert isinstance(await storage.get('some_name'), Split)
+
+ await split_synchronizer.synchronize_splits(12438)
+ assert await storage.get('new_name') == None
+
+ @pytest.mark.asyncio
+ async def test_sync_flag_sets_without_config_sets(self, mocker):
+ """Test split sync with flag sets."""
+ internal_events_queue = asyncio.Queue()
+ storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ split = self.splits[0].copy()
+ split['name'] = 'second'
+ splits1 = [self.splits[0].copy(), split]
+ splits2 = self.splits.copy()
+ splits3 = self.splits.copy()
+ splits4 = self.splits.copy()
+ api = mocker.Mock()
+ async def get_changes(*args, **kwargs):
+ get_changes.called += 1
+ if get_changes.called == 1:
+ return { 'ff': { 'd': splits1, 's': 123, 't': 123 },
+ 'rbs': {"t": 123, "s": 123, "d": []}}
+ elif get_changes.called == 2:
+ splits2[0]['sets'] = ['set3']
+ return { 'ff': { 'd': splits2, 's': 124, 't': 124 },
+ 'rbs': {"t": 124, "s": 124, "d": []}}
+ elif get_changes.called == 3:
+ splits3[0]['sets'] = ['set1']
+ return { 'ff': { 'd': splits3, 's': 12434, 't': 12434 },
+ 'rbs': {"t": 12434, "s": 12434, "d": []}}
+ splits4[0]['sets'] = ['set6']
+ splits4[0]['name'] = 'third_split'
+ return { 'ff': { 'd': splits4, 's': 12438, 't': 12438 },
+ 'rbs': {"t": 12438, "s": 12438, "d": []}}
+ get_changes.called = 0
+ api.fetch_splits.side_effect = get_changes
+
+ split_synchronizer = SplitSynchronizerAsync(api, storage, rbs_storage)
+ split_synchronizer._backoff = Backoff(1, 1)
+ await split_synchronizer.synchronize_splits()
+ assert isinstance(await storage.get('new_split'), Split)
+
+ await split_synchronizer.synchronize_splits(124)
+ assert isinstance(await storage.get('new_split'), Split)
+
+ await split_synchronizer.synchronize_splits(12434)
+ assert isinstance(await storage.get('new_split'), Split)
+
+ await split_synchronizer.synchronize_splits(12438)
+ assert isinstance(await storage.get('third_split'), Split)
+
+class LocalSplitsSynchronizerTests(object):
+ """Split synchronizer test cases."""
+
+ payload = copy.deepcopy(json_body)
+
+ def test_synchronize_splits_error(self, mocker):
+ """Test that if fetching splits fails at some_point, the task will continue running."""
+ storage = mocker.Mock(spec=SplitStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ split_synchronizer = LocalSplitSynchronizer("/incorrect_file", storage, rbs_storage)
+
+ with pytest.raises(Exception):
+ split_synchronizer.synchronize_splits(1)
+
+ def test_synchronize_splits(self, mocker):
+ """Test split sync."""
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+
+ def read_splits_from_json_file(*args, **kwargs):
+ return self.payload
+
+ split_synchronizer = LocalSplitSynchronizer("split.json", storage, rbs_storage, LocalhostMode.JSON)
+ split_synchronizer._read_feature_flags_from_json_file = read_splits_from_json_file
+
+ split_synchronizer.synchronize_splits()
+ inserted_split = storage.get(self.payload["ff"]["d"][0]['name'])
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == 'some_name'
+
+ # Should sync when changenumber is not changed
+ self.payload["ff"]["d"][0]['killed'] = True
+ split_synchronizer.synchronize_splits()
+ inserted_split = storage.get(self.payload["ff"]["d"][0]['name'])
+ assert inserted_split.killed
+
+ # Should not sync when changenumber is less than stored
+ self.payload["ff"]["t"] = 122
+ self.payload["ff"]["d"][0]['killed'] = False
+ split_synchronizer.synchronize_splits()
+ inserted_split = storage.get(self.payload["ff"]["d"][0]['name'])
+ assert inserted_split.killed
+
+ # Should sync when changenumber is higher than stored
+ self.payload["ff"]["t"] = 1675095324999
+ split_synchronizer._current_json_sha = "-1"
+ split_synchronizer.synchronize_splits()
+ inserted_split = storage.get(self.payload["ff"]["d"][0]['name'])
+ assert inserted_split.killed == False
+
+ # Should sync when till is default (-1)
+ self.payload["ff"]["t"] = -1
+ split_synchronizer._current_json_sha = "-1"
+ self.payload["ff"]["d"][0]['killed'] = True
+ split_synchronizer.synchronize_splits()
+ inserted_split = storage.get(self.payload["ff"]["d"][0]['name'])
+ assert inserted_split.killed == True
+
+ def test_sync_flag_sets_with_config_sets(self, mocker):
+ """Test split sync with flag sets."""
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue, ['set1', 'set2'])
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+
+ split = self.payload["ff"]["d"][0].copy()
+ split['name'] = 'second'
+ splits1 = [self.payload["ff"]["d"][0].copy(), split]
+ splits2 = self.payload["ff"]["d"].copy()
+ splits3 = self.payload["ff"]["d"].copy()
+ splits4 = self.payload["ff"]["d"].copy()
+
+ self.called = 0
+ def read_feature_flags_from_json_file(*args, **kwargs):
+ self.called += 1
+ if self.called == 1:
+ return {"ff": {"d": splits1, "t": 123, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ elif self.called == 2:
+ splits2[0]['sets'] = ['set3']
+ return {"ff": {"d": splits2, "t": 124, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ elif self.called == 3:
+ splits3[0]['sets'] = ['set1']
+ return {"ff": {"d": splits3, "t": 12434, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ splits4[0]['sets'] = ['set6']
+ splits4[0]['name'] = 'new_split'
+ return {"ff": {"d": splits4, "t": 12438, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+
+ split_synchronizer = LocalSplitSynchronizer("split.json", storage, rbs_storage, LocalhostMode.JSON)
+ split_synchronizer._read_feature_flags_from_json_file = read_feature_flags_from_json_file
+
+ split_synchronizer.synchronize_splits()
+ assert isinstance(storage.get('some_name'), Split)
+
+ split_synchronizer.synchronize_splits(124)
+ assert storage.get('some_name') == None
+
+ split_synchronizer.synchronize_splits(12434)
+ assert isinstance(storage.get('some_name'), Split)
+
+ split_synchronizer.synchronize_splits(12438)
+ assert storage.get('new_name') == None
+
+ def test_sync_flag_sets_without_config_sets(self, mocker):
+ """Test split sync with flag sets."""
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+
+ split = self.payload["ff"]["d"][0].copy()
+ split['name'] = 'second'
+ splits1 = [self.payload["ff"]["d"][0].copy(), split]
+ splits2 = self.payload["ff"]["d"].copy()
+ splits3 = self.payload["ff"]["d"].copy()
+ splits4 = self.payload["ff"]["d"].copy()
+
+ self.called = 0
+ def read_feature_flags_from_json_file(*args, **kwargs):
+ self.called += 1
+ if self.called == 1:
+ return {"ff": {"d": splits1, "t": 123, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ elif self.called == 2:
+ splits2[0]['sets'] = ['set3']
+ return {"ff": {"d": splits2, "t": 124, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ elif self.called == 3:
+ splits3[0]['sets'] = ['set1']
+ return {"ff": {"d": splits3, "t": 12434, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ splits4[0]['sets'] = ['set6']
+ splits4[0]['name'] = 'third_split'
+ return {"ff": {"d": splits4, "t": 12438, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+
+ split_synchronizer = LocalSplitSynchronizer("split.json", storage, rbs_storage, LocalhostMode.JSON)
+ split_synchronizer._read_feature_flags_from_json_file = read_feature_flags_from_json_file
+
+ split_synchronizer.synchronize_splits()
+ assert isinstance(storage.get('new_split'), Split)
+
+ split_synchronizer.synchronize_splits(124)
+ assert isinstance(storage.get('new_split'), Split)
+
+ split_synchronizer.synchronize_splits(12434)
+ assert isinstance(storage.get('new_split'), Split)
+
+ split_synchronizer.synchronize_splits(12438)
+ assert isinstance(storage.get('third_split'), Split)
+
+ def test_reading_json(self, mocker):
+ """Test reading json file."""
+ f = open("./splits.json", "w")
+ f.write(json.dumps(self.payload))
+ f.close()
+ events_queue = queue.Queue()
+ storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ split_synchronizer = LocalSplitSynchronizer("./splits.json", storage, rbs_storage, LocalhostMode.JSON)
+ split_synchronizer.synchronize_splits()
+
+ inserted_split = storage.get(self.payload['ff']['d'][0]['name'])
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == self.payload['ff']['d'][0]['name']
+
+ inserted_rbs = rbs_storage.get(self.payload['rbs']['d'][0]['name'])
+ assert isinstance(inserted_rbs, RuleBasedSegment)
+ assert inserted_rbs.name == self.payload['rbs']['d'][0]['name']
+
+ os.remove("./splits.json")
+
+ def test_json_elements_sanitization(self, mocker):
+ """Test sanitization."""
+ split_synchronizer = LocalSplitSynchronizer(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+
+ # check no changes if all elements exist with valid values
+ parsed = {"ff": {"d": [], "s": -1, "t": -1}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert (split_synchronizer._sanitize_json_elements(parsed) == parsed)
+
+ # check set since to -1 when is None
+ parsed2 = parsed.copy()
+ parsed2['ff']['s'] = None
+ assert (split_synchronizer._sanitize_json_elements(parsed2) == parsed)
+
+ # check no changes if since > -1
+ parsed2 = parsed.copy()
+ parsed2['ff']['s'] = 12
+ assert (split_synchronizer._sanitize_json_elements(parsed2) == parsed)
+
+ # check set till to -1 when is None
+ parsed2 = parsed.copy()
+ parsed2['ff']['t'] = None
+ assert (split_synchronizer._sanitize_json_elements(parsed2) == parsed)
+
+ # check add since when missing
+ parsed2 = {"ff": {"d": [], "t": -1}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert (split_synchronizer._sanitize_json_elements(parsed2) == parsed)
+
+ # check add till when missing
+ parsed2 = {"ff": {"d": [], "s": -1}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert (split_synchronizer._sanitize_json_elements(parsed2) == parsed)
+
+ # check add splits when missing
+ parsed2 = {"ff": {"s": -1, "t": -1}, "rbs": {"d": [], "s": -1, "t": -1}}
+ assert (split_synchronizer._sanitize_json_elements(parsed2) == parsed)
+
+ # check add since when missing
+ parsed2 = {"ff": {"d": [], "t": -1}, "rbs": {"d": [], "t": -1}}
+ assert (split_synchronizer._sanitize_json_elements(parsed2) == parsed)
+
+ # check add till when missing
+ parsed2 = {"ff": {"d": [], "s": -1}, "rbs": {"d": [], "s": -1}}
+ assert (split_synchronizer._sanitize_json_elements(parsed2) == parsed)
+
+ # check add splits when missing
+ parsed2 = {"ff": {"s": -1, "t": -1}, "rbs": {"s": -1, "t": -1}}
+ assert (split_synchronizer._sanitize_json_elements(parsed2) == parsed)
+
+ def test_elements_sanitization(self, mocker):
+ """Test sanitization."""
+ split_synchronizer = LocalSplitSynchronizer(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock())
+
+ # No changes when split structure is good
+ assert (split_synchronizer._sanitize_feature_flag_elements(splits_json["splitChange1_1"]['ff']['d']) == splits_json["splitChange1_1"]['ff']['d'])
+
+ # test 'trafficTypeName' value None
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['trafficTypeName'] = None
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == splits_json["splitChange1_1"]['ff']['d'])
+
+ # test 'trafficAllocation' value None
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['trafficAllocation'] = None
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == splits_json["splitChange1_1"]['ff']['d'])
+
+ # test 'trafficAllocation' valid value should not change
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['trafficAllocation'] = 50
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == split)
+
+ # test 'trafficAllocation' invalid value should change
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['trafficAllocation'] = 110
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == splits_json["splitChange1_1"]['ff']['d'])
+
+ # test 'trafficAllocationSeed' is set to millisec epoch when None
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['trafficAllocationSeed'] = None
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['trafficAllocationSeed'] > 0)
+
+ # test 'trafficAllocationSeed' is set to millisec epoch when 0
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['trafficAllocationSeed'] = 0
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['trafficAllocationSeed'] > 0)
+
+ # test 'seed' is set to millisec epoch when None
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['seed'] = None
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['seed'] > 0)
+
+ # test 'seed' is set to millisec epoch when its 0
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['seed'] = 0
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['seed'] > 0)
+
+ # test 'status' is set to ACTIVE when None
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['status'] = None
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == splits_json["splitChange1_1"]['ff']['d'])
+
+ # test 'status' is set to ACTIVE when incorrect
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['status'] = 'ww'
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == splits_json["splitChange1_1"]['ff']['d'])
+
+ # test ''killed' is set to False when incorrect
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['killed'] = None
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == splits_json["splitChange1_1"]['ff']['d'])
+
+ # test 'defaultTreatment' is set to on when None
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['defaultTreatment'] = None
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['defaultTreatment'] == 'control')
+
+ # test 'defaultTreatment' is set to on when its empty
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['defaultTreatment'] = ' '
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['defaultTreatment'] == 'control')
+
+ # test 'changeNumber' is set to 0 when None
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['changeNumber'] = None
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['changeNumber'] == 0)
+
+ # test 'changeNumber' is set to 0 when invalid
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['changeNumber'] = -33
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['changeNumber'] == 0)
+
+ # test 'algo' is set to 2 when None
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['algo'] = None
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['algo'] == 2)
+
+ # test 'algo' is set to 2 when higher than 2
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['algo'] = 3
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['algo'] == 2)
+
+ # test 'algo' is set to 2 when lower than 2
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]['algo'] = 1
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['algo'] == 2)
+
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ del split[0]['prerequisites']
+ assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['prerequisites'] == [])
+
+ # test 'status' is set to ACTIVE when None
+ rbs = copy.deepcopy(json_body["rbs"]["d"])
+ rbs[0]['status'] = None
+ assert (split_synchronizer._sanitize_rb_segment_elements(rbs)[0]['status'] == 'ACTIVE')
+
+ # test 'changeNumber' is set to 0 when invalid
+ rbs = copy.deepcopy(json_body["rbs"]["d"])
+ rbs[0]['changeNumber'] = -2
+ assert (split_synchronizer._sanitize_rb_segment_elements(rbs)[0]['changeNumber'] == 0)
+
+ rbs = copy.deepcopy(json_body["rbs"]["d"])
+ del rbs[0]['conditions']
+ assert (len(split_synchronizer._sanitize_rb_segment_elements(rbs)[0]['conditions']) == 1)
+
+ def test_condition_sanitization(self, mocker):
+ """Test sanitization."""
+ split_synchronizer = LocalSplitSynchronizer(mocker.Mock(), mocker.Mock(), mocker.Mock())
+
+ # test missing all conditions with default rule set to 100% off
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ target_split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ target_split[0]["conditions"][0]['partitions'][0]['size'] = 0
+ target_split[0]["conditions"][0]['partitions'][1]['size'] = 100
+ del split[0]["conditions"]
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == target_split)
+
+ # test missing ALL_KEYS condition matcher with default rule set to 100% off
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ target_split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]["conditions"][0]["matcherGroup"]["matchers"][0]["matcherType"] = "IN_STR"
+ target_split = split.copy()
+ target_split[0]["conditions"].append(splits_json["splitChange1_1"]['ff']['d'][0]["conditions"][0])
+ target_split[0]["conditions"][1]['partitions'][0]['size'] = 0
+ target_split[0]["conditions"][1]['partitions'][1]['size'] = 100
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == target_split)
+
+ # test missing ROLLOUT condition type with default rule set to 100% off
+ split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ target_split = splits_json["splitChange1_1"]['ff']['d'].copy()
+ split[0]["conditions"][0]["conditionType"] = "NOT"
+ target_split = split.copy()
+ target_split[0]["conditions"].append(splits_json["splitChange1_1"]['ff']['d'][0]["conditions"][0])
+ target_split[0]["conditions"][1]['partitions'][0]['size'] = 0
+ target_split[0]["conditions"][1]['partitions'][1]['size'] = 100
+ assert (split_synchronizer._sanitize_feature_flag_elements(split) == target_split)
+
+class LocalSplitsSynchronizerAsyncTests(object):
+ """Split synchronizer test cases."""
+
+ payload = copy.deepcopy(json_body)
+
+ @pytest.mark.asyncio
+ async def test_synchronize_splits_error(self, mocker):
+ """Test that if fetching splits fails at some_point, the task will continue running."""
+ storage = mocker.Mock(spec=SplitStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ split_synchronizer = LocalSplitSynchronizerAsync("/incorrect_file", storage, rbs_storage)
+
+ with pytest.raises(Exception):
+ await split_synchronizer.synchronize_splits(1)
+
+ @pytest.mark.asyncio
+ async def test_synchronize_splits(self, mocker):
+ """Test split sync."""
+ internal_events_queue = asyncio.Queue()
+ storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+
+ async def read_splits_from_json_file(*args, **kwargs):
+ return self.payload
+
+ split_synchronizer = LocalSplitSynchronizerAsync("split.json", storage, rbs_storage, LocalhostMode.JSON)
+ split_synchronizer._read_feature_flags_from_json_file = read_splits_from_json_file
+
+ await split_synchronizer.synchronize_splits()
+ inserted_split = await storage.get(self.payload["ff"]["d"][0]['name'])
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == 'some_name'
+
+ # Should sync when changenumber is not changed
+ self.payload["ff"]["d"][0]['killed'] = True
+ await split_synchronizer.synchronize_splits()
+ inserted_split = await storage.get(self.payload["ff"]["d"][0]['name'])
+ assert inserted_split.killed
+
+ # Should not sync when changenumber is less than stored
+ self.payload["ff"]["t"] = 122
+ self.payload["ff"]["d"][0]['killed'] = False
+ await split_synchronizer.synchronize_splits()
+ inserted_split = await storage.get(self.payload["ff"]["d"][0]['name'])
+ assert inserted_split.killed
+
+ # Should sync when changenumber is higher than stored
+ self.payload["ff"]["t"] = 1675095324999
+ split_synchronizer._current_json_sha = "-1"
+ await split_synchronizer.synchronize_splits()
+ inserted_split = await storage.get(self.payload["ff"]["d"][0]['name'])
+ assert inserted_split.killed == False
+
+ # Should sync when till is default (-1)
+ self.payload["ff"]["t"] = -1
+ split_synchronizer._current_json_sha = "-1"
+ self.payload["ff"]["d"][0]['killed'] = True
+ await split_synchronizer.synchronize_splits()
+ inserted_split = await storage.get(self.payload["ff"]["d"][0]['name'])
+ assert inserted_split.killed == True
+
+ @pytest.mark.asyncio
+ async def test_sync_flag_sets_with_config_sets(self, mocker):
+ """Test split sync with flag sets."""
+ internal_events_queue = asyncio.Queue()
+ storage = InMemorySplitStorageAsync(internal_events_queue, ['set1', 'set2'])
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+
+ split = self.payload["ff"]["d"][0].copy()
+ split['name'] = 'second'
+ splits1 = [self.payload["ff"]["d"][0].copy(), split]
+ splits2 = self.payload["ff"]["d"].copy()
+ splits3 = self.payload["ff"]["d"].copy()
+ splits4 = self.payload["ff"]["d"].copy()
+
+ self.called = 0
+ async def read_feature_flags_from_json_file(*args, **kwargs):
+ self.called += 1
+ if self.called == 1:
+ return {"ff": {"d": splits1, "t": 123, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ elif self.called == 2:
+ splits2[0]['sets'] = ['set3']
+ return {"ff": {"d": splits2, "t": 124, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ elif self.called == 3:
+ splits3[0]['sets'] = ['set1']
+ return {"ff": {"d": splits3, "t": 12434, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ splits4[0]['sets'] = ['set6']
+ splits4[0]['name'] = 'new_split'
+ return {"ff": {"d": splits4, "t": 12438, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+
+ split_synchronizer = LocalSplitSynchronizerAsync("split.json", storage, rbs_storage, LocalhostMode.JSON)
+ split_synchronizer._read_feature_flags_from_json_file = read_feature_flags_from_json_file
+
+ await split_synchronizer.synchronize_splits()
+ assert isinstance(await storage.get('some_name'), Split)
+
+ await split_synchronizer.synchronize_splits(124)
+ assert await storage.get('some_name') == None
+
+ await split_synchronizer.synchronize_splits(12434)
+ assert isinstance(await storage.get('some_name'), Split)
+
+ await split_synchronizer.synchronize_splits(12438)
+ assert await storage.get('new_name') == None
+
+ @pytest.mark.asyncio
+ async def test_sync_flag_sets_without_config_sets(self, mocker):
+ """Test split sync with flag sets."""
+ internal_events_queue = asyncio.Queue()
+ storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+
+ split = self.payload["ff"]["d"][0].copy()
+ split['name'] = 'second'
+ splits1 = [self.payload["ff"]["d"][0].copy(), split]
+ splits2 = self.payload["ff"]["d"].copy()
+ splits3 = self.payload["ff"]["d"].copy()
+ splits4 = self.payload["ff"]["d"].copy()
+
+ self.called = 0
+ async def read_feature_flags_from_json_file(*args, **kwargs):
+ self.called += 1
+ if self.called == 1:
+ return {"ff": {"d": splits1, "t": 123, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ elif self.called == 2:
+ return {"ff": {"d": splits2, "t": 124, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ elif self.called == 3:
+ splits3[0]['sets'] = ['set1']
+ return {"ff": {"d": splits3, "t": 12434, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+ splits4[0]['sets'] = ['set6']
+ splits4[0]['name'] = 'third_split'
+ return {"ff": {"d": splits4, "t": 12438, "s": -1}, "rbs": {"d": [], "t": -1, "s": -1}}
+
+ split_synchronizer = LocalSplitSynchronizerAsync("split.json", storage, rbs_storage, LocalhostMode.JSON)
+ split_synchronizer._read_feature_flags_from_json_file = read_feature_flags_from_json_file
+
+ await split_synchronizer.synchronize_splits()
+ assert isinstance(await storage.get('new_split'), Split)
+
+ await split_synchronizer.synchronize_splits(124)
+ assert isinstance(await storage.get('new_split'), Split)
+
+ await split_synchronizer.synchronize_splits(12434)
+ assert isinstance(await storage.get('new_split'), Split)
+
+ await split_synchronizer.synchronize_splits(12438)
+ assert isinstance(await storage.get('third_split'), Split)
+
+ @pytest.mark.asyncio
+ async def test_reading_json(self, mocker):
+ """Test reading json file."""
+ async with aiofiles.open("./splits.json", "w") as f:
+ await f.write(json.dumps(self.payload))
+ internal_events_queue = asyncio.Queue()
+ storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ split_synchronizer = LocalSplitSynchronizerAsync("./splits.json", storage, rbs_storage, LocalhostMode.JSON)
+ await split_synchronizer.synchronize_splits()
+
+ inserted_split = await storage.get(self.payload['ff']['d'][0]['name'])
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == self.payload['ff']['d'][0]['name']
+
+ inserted_rbs = await rbs_storage.get(self.payload['rbs']['d'][0]['name'])
+ assert isinstance(inserted_rbs, RuleBasedSegment)
+ assert inserted_rbs.name == self.payload['rbs']['d'][0]['name']
+
+ os.remove("./splits.json")
diff --git a/tests/sync/test_synchronizer.py b/tests/sync/test_synchronizer.py
new file mode 100644
index 00000000..1244429b
--- /dev/null
+++ b/tests/sync/test_synchronizer.py
@@ -0,0 +1,1157 @@
+"""Synchronizer tests."""
+import unittest.mock as mock
+import pytest
+import queue
+import asyncio
+
+from splitio.sync.synchronizer import Synchronizer, SynchronizerAsync, SplitTasks, SplitSynchronizers, LocalhostSynchronizer, LocalhostSynchronizerAsync, RedisSynchronizer, RedisSynchronizerAsync
+from splitio.tasks.split_sync import SplitSynchronizationTask, SplitSynchronizationTaskAsync
+from splitio.tasks.unique_keys_sync import UniqueKeysSyncTask, ClearFilterSyncTask, UniqueKeysSyncTaskAsync, ClearFilterSyncTaskAsync
+from splitio.tasks.segment_sync import SegmentSynchronizationTask, SegmentSynchronizationTaskAsync
+from splitio.tasks.impressions_sync import ImpressionsSyncTask, ImpressionsCountSyncTask, ImpressionsCountSyncTaskAsync, ImpressionsSyncTaskAsync
+from splitio.tasks.events_sync import EventsSyncTask, EventsSyncTaskAsync
+from splitio.sync.split import SplitSynchronizer, SplitSynchronizerAsync, LocalSplitSynchronizer, LocalhostMode, LocalSplitSynchronizerAsync
+from splitio.sync.segment import SegmentSynchronizer, SegmentSynchronizerAsync, LocalSegmentSynchronizer, LocalSegmentSynchronizerAsync
+from splitio.sync.impression import ImpressionSynchronizer, ImpressionSynchronizerAsync, ImpressionsCountSynchronizer, ImpressionsCountSynchronizerAsync
+from splitio.sync.event import EventSynchronizer, EventSynchronizerAsync
+from splitio.storage import SegmentStorage, SplitStorage, RuleBasedSegmentsStorage
+from splitio.api import APIException, APIUriException
+from splitio.models.splits import Split
+from splitio.models.segments import Segment
+from splitio.storage.inmemmory import InMemorySegmentStorage, InMemorySplitStorage, InMemorySegmentStorageAsync, InMemorySplitStorageAsync, \
+ InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync
+
+splits = [{
+ 'changeNumber': 123,
+ 'trafficTypeName': 'user',
+ 'name': 'some_name',
+ 'trafficAllocation': 100,
+ 'trafficAllocationSeed': 123456,
+ 'seed': 321654,
+ 'status': 'ACTIVE',
+ 'killed': False,
+ 'defaultTreatment': 'off',
+ 'algo': 2,
+ 'conditions': [{
+ 'conditionType': 'WHITELIST',
+ 'matcherGroup':{
+ 'combiner': 'AND',
+ 'matchers':[{
+ 'matcherType': 'IN_SEGMENT',
+ 'negate': False,
+ 'userDefinedSegmentMatcherData': {
+ 'segmentName': 'segmentA'
+ }
+ }]
+ },
+ 'partitions': [{
+ 'size': 100,
+ 'treatment': 'on'
+ }]
+ }]
+}]
+
+class SynchronizerTests(object):
+ def test_sync_all_failed_splits(self, mocker):
+ api = mocker.Mock()
+ storage = mocker.Mock()
+ class flag_set_filter():
+ def should_filter():
+ return False
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ def run(x, y, c):
+ raise APIException("something broke")
+ api.fetch_splits.side_effect = run
+
+ split_sync = SplitSynchronizer(api, storage, mocker.Mock())
+ split_synchronizers = SplitSynchronizers(split_sync, mocker.Mock(), mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ sychronizer = Synchronizer(split_synchronizers, mocker.Mock(spec=SplitTasks))
+
+ sychronizer.synchronize_splits(None) # APIExceptions are handled locally and should not be propagated!
+
+ # test forcing to have only one retry attempt and then exit
+ sychronizer.sync_all(1) # sync_all should not throw!
+
+ def test_sync_all_failed_splits_with_flagsets(self, mocker):
+ api = mocker.Mock()
+ storage = mocker.Mock()
+ class flag_set_filter():
+ def should_filter():
+ return False
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ def run(x, y, c):
+ raise APIException("something broke", 414)
+ api.fetch_splits.side_effect = run
+
+ split_sync = SplitSynchronizer(api, storage, mocker.Mock())
+ split_synchronizers = SplitSynchronizers(split_sync, mocker.Mock(), mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ synchronizer = Synchronizer(split_synchronizers, mocker.Mock(spec=SplitTasks))
+
+ synchronizer.synchronize_splits(None)
+ synchronizer.sync_all(3)
+ assert synchronizer._backoff._attempt == 0
+
+ def test_sync_all_failed_segments(self, mocker):
+ api = mocker.Mock()
+ storage = mocker.Mock()
+ split_storage = mocker.Mock(spec=SplitStorage)
+ split_storage.get_segment_names.return_value = ['segmentA']
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ rbs_storage.get_segment_names.return_value = []
+ split_sync = mocker.Mock(spec=SplitSynchronizer)
+ split_sync.synchronize_splits.return_value = None
+
+ def run(x, y, c):
+ raise APIException("something broke")
+ api.fetch_segment.side_effect = run
+
+ segment_sync = SegmentSynchronizer(api, split_storage, storage, rbs_storage)
+ split_synchronizers = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ sychronizer = Synchronizer(split_synchronizers, mocker.Mock(spec=SplitTasks))
+
+ sychronizer.sync_all(1) # SyncAll should not throw!
+ assert not sychronizer._synchronize_segments()
+
+ def test_synchronize_splits(self, mocker):
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ split_api = mocker.Mock()
+ split_api.fetch_splits.return_value = {'ff': {'d': splits, 's': 123,
+ 't': 123}, 'rbs': {'d': [], 's': -1, 't': -1}}
+ split_sync = SplitSynchronizer(split_api, split_storage, rbs_storage)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ segment_api = mocker.Mock()
+ segment_api.fetch_segment.return_value = {'name': 'segmentA', 'added': ['key1', 'key2',
+ 'key3'], 'removed': [], 'since': 123, 'till': 123}
+ segment_sync = SegmentSynchronizer(segment_api, split_storage, segment_storage, rbs_storage)
+ split_synchronizers = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ synchronizer = Synchronizer(split_synchronizers, mocker.Mock(spec=SplitTasks))
+
+ synchronizer.synchronize_splits(123)
+
+ inserted_split = split_storage.get('some_name')
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == 'some_name'
+
+ if not segment_sync._worker_pool.wait_for_completion():
+ inserted_segment = segment_storage.get('segmentA')
+ assert inserted_segment.name == 'segmentA'
+ assert inserted_segment.keys == {'key1', 'key2', 'key3'}
+
+ def test_synchronize_splits_calling_segment_sync_once(self, mocker):
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ split_api = mocker.Mock()
+ split_api.fetch_splits.return_value = {'ff': {'d': splits, 's': 123,
+ 't': 123}, 'rbs': {'d': [], 's': -1, 't': -1}}
+
+ split_sync = SplitSynchronizer(split_api, split_storage, rbs_storage)
+ counts = {'segments': 0}
+
+ def sync_segments(*_):
+ """Sync Segments."""
+ counts['segments'] += 1
+ return True
+
+ segment_sync = mocker.Mock()
+ segment_sync.synchronize_segments.side_effect = sync_segments
+ segment_sync.segment_exist_in_storage.return_value = False
+ split_synchronizers = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ synchronizer = Synchronizer(split_synchronizers, mocker.Mock(spec=SplitTasks))
+ synchronizer.synchronize_splits(123, True)
+
+ assert counts['segments'] == 1
+
+ def test_sync_all(self, mocker):
+ split_storage = mocker.Mock(spec=SplitStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ rbs_storage.get_segment_names.return_value = []
+ split_storage.get_change_number.return_value = 123
+ split_storage.get_segment_names.return_value = ['segmentA']
+ class flag_set_filter():
+ def should_filter():
+ return False
+ def intersect(sets):
+ return True
+ split_storage.flag_set_filter = flag_set_filter
+ split_storage.flag_set_filter.flag_sets = {}
+ split_storage.flag_set_filter.sorted_flag_sets = []
+
+ split_api = mocker.Mock()
+ split_api.fetch_splits.return_value = {'ff': {'d': splits, 's': 123,
+ 't': 123}, 'rbs': {'d': [], 's': -1, 't': -1}}
+ split_sync = SplitSynchronizer(split_api, split_storage, rbs_storage)
+
+ segment_storage = mocker.Mock(spec=SegmentStorage)
+ segment_storage.get_change_number.return_value = 123
+ segment_api = mocker.Mock()
+ segment_api.fetch_segment.return_value = {'name': 'segmentA', 'added': ['key1', 'key2',
+ 'key3'], 'removed': [], 'since': 123, 'till': 123}
+ segment_sync = SegmentSynchronizer(segment_api, split_storage, segment_storage, rbs_storage)
+
+ split_synchronizers = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+
+ synchronizer = Synchronizer(split_synchronizers, mocker.Mock(spec=SplitTasks))
+ self.clear = False
+ def clear():
+ self.clear = True
+ split_storage.clear = clear
+ rbs_storage.clear = clear
+
+ synchronizer.sync_all()
+
+ inserted_split = split_storage.update.mock_calls[0][1][0][0]
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == 'some_name'
+
+ inserted_segment = segment_storage.update.mock_calls[0][1]
+ assert inserted_segment[0] == 'segmentA'
+ assert inserted_segment[1] == ['key1', 'key2', 'key3']
+ assert inserted_segment[2] == []
+
+ def test_start_periodic_fetching(self, mocker):
+ split_task = mocker.Mock(spec=SplitSynchronizationTask)
+ segment_task = mocker.Mock(spec=SegmentSynchronizationTask)
+ split_tasks = SplitTasks(split_task, segment_task, mocker.Mock(), mocker.Mock(),
+ mocker.Mock())
+ synchronizer = Synchronizer(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.start_periodic_fetching()
+
+ assert len(split_task.start.mock_calls) == 1
+ assert len(segment_task.start.mock_calls) == 1
+
+ def test_stop_periodic_fetching(self, mocker):
+ split_task = mocker.Mock(spec=SplitSynchronizationTask)
+ segment_task = mocker.Mock(spec=SegmentSynchronizationTask)
+ segment_sync = mocker.Mock(spec=SegmentSynchronizer)
+ split_synchronizers = SplitSynchronizers(mocker.Mock(), segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ split_tasks = SplitTasks(split_task, segment_task, mocker.Mock(), mocker.Mock(),
+ mocker.Mock())
+ synchronizer = Synchronizer(split_synchronizers, split_tasks)
+ synchronizer.stop_periodic_fetching()
+
+ assert len(split_task.stop.mock_calls) == 1
+ assert len(segment_task.stop.mock_calls) == 1
+ assert len(segment_sync.shutdown.mock_calls) == 0
+
+ def test_start_periodic_data_recording(self, mocker):
+ impression_task = mocker.Mock(spec=ImpressionsSyncTask)
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTask)
+ event_task = mocker.Mock(spec=EventsSyncTask)
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTask)
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTask)
+ split_tasks = SplitTasks(mocker.Mock(), mocker.Mock(), impression_task, event_task,
+ impression_count_task, unique_keys_task, clear_filter_task)
+ synchronizer = Synchronizer(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.start_periodic_data_recording()
+
+ assert len(impression_task.start.mock_calls) == 1
+ assert len(impression_count_task.start.mock_calls) == 1
+ assert len(event_task.start.mock_calls) == 1
+ assert len(unique_keys_task.start.mock_calls) == 1
+ assert len(clear_filter_task.start.mock_calls) == 1
+
+ def test_stop_periodic_data_recording(self, mocker):
+
+ def stop_mock(event):
+ event.set()
+ return
+
+ def stop_mock_2():
+ return
+
+ impression_task = mocker.Mock(spec=ImpressionsSyncTask)
+ impression_task.stop.side_effect = stop_mock
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTask)
+ impression_count_task.stop.side_effect = stop_mock
+ event_task = mocker.Mock(spec=EventsSyncTask)
+ event_task.stop.side_effect = stop_mock
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTask)
+ unique_keys_task.stop.side_effect = stop_mock
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTask)
+ clear_filter_task.stop.side_effect = stop_mock
+ split_tasks = SplitTasks(mocker.Mock(), mocker.Mock(), impression_task, event_task,
+ impression_count_task, unique_keys_task, clear_filter_task)
+ synchronizer = Synchronizer(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.stop_periodic_data_recording(True)
+
+ assert len(impression_task.stop.mock_calls) == 1
+ assert len(impression_count_task.stop.mock_calls) == 1
+ assert len(event_task.stop.mock_calls) == 1
+ assert len(unique_keys_task.stop.mock_calls) == 1
+ assert len(clear_filter_task.stop.mock_calls) == 1
+
+ def test_shutdown(self, mocker):
+
+ def stop_mock(event):
+ event.set()
+ return
+
+ def stop_mock_2():
+ return
+
+ split_task = mocker.Mock(spec=SplitSynchronizationTask)
+ split_task.stop.side_effect = stop_mock_2
+ segment_task = mocker.Mock(spec=SegmentSynchronizationTask)
+ segment_task.stop.side_effect = stop_mock_2
+ impression_task = mocker.Mock(spec=ImpressionsSyncTask)
+ impression_task.stop.side_effect = stop_mock
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTask)
+ impression_count_task.stop.side_effect = stop_mock
+ event_task = mocker.Mock(spec=EventsSyncTask)
+ event_task.stop.side_effect = stop_mock
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTask)
+ unique_keys_task.stop.side_effect = stop_mock
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTask)
+ clear_filter_task.stop.side_effect = stop_mock
+
+ segment_sync = mocker.Mock(spec=SegmentSynchronizer)
+
+ split_synchronizers = SplitSynchronizers(mocker.Mock(), segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock(), mocker.Mock())
+ split_tasks = SplitTasks(split_task, segment_task, impression_task, event_task,
+ impression_count_task, unique_keys_task, clear_filter_task)
+ synchronizer = Synchronizer(split_synchronizers, split_tasks)
+ synchronizer.shutdown(True)
+
+ assert len(split_task.stop.mock_calls) == 1
+ assert len(segment_task.stop.mock_calls) == 1
+ assert len(segment_sync.shutdown.mock_calls) == 1
+ assert len(impression_task.stop.mock_calls) == 1
+ assert len(impression_count_task.stop.mock_calls) == 1
+ assert len(event_task.stop.mock_calls) == 1
+ assert len(unique_keys_task.stop.mock_calls) == 1
+ assert len(clear_filter_task.stop.mock_calls) == 1
+
+ def test_sync_all_ok(self, mocker):
+ """Test that 3 attempts are done before failing."""
+ split_synchronizers = mocker.Mock(spec=SplitSynchronizers)
+ counts = {'splits': 0, 'segments': 0}
+
+ def sync_splits(*_):
+ """Sync Splits."""
+ counts['splits'] += 1
+ return []
+
+ def sync_segments(*_):
+ """Sync Segments."""
+ counts['segments'] += 1
+ return True
+
+ split_synchronizers.split_sync.synchronize_splits.side_effect = sync_splits
+ split_synchronizers.segment_sync.synchronize_segments.side_effect = sync_segments
+ split_tasks = mocker.Mock(spec=SplitTasks)
+ synchronizer = Synchronizer(split_synchronizers, split_tasks)
+
+ synchronizer.sync_all()
+ assert counts['splits'] == 1
+ assert counts['segments'] == 1
+
+ def test_sync_all_split_attempts(self, mocker):
+ """Test that 3 attempts are done before failing."""
+ split_synchronizers = mocker.Mock(spec=SplitSynchronizers)
+ counts = {'splits': 0, 'segments': 0}
+ def sync_splits(*_):
+ """Sync Splits."""
+ counts['splits'] += 1
+ raise Exception('sarasa')
+
+ split_synchronizers.split_sync.synchronize_splits.side_effect = sync_splits
+ split_tasks = mocker.Mock(spec=SplitTasks)
+ synchronizer = Synchronizer(split_synchronizers, split_tasks)
+
+ synchronizer.sync_all(2)
+ assert counts['splits'] == 3
+
+ def test_sync_all_segment_attempts(self, mocker):
+ """Test that segments don't trigger retries."""
+ split_synchronizers = mocker.Mock(spec=SplitSynchronizers)
+ counts = {'splits': 0, 'segments': 0}
+
+ def sync_segments(*_):
+ """Sync Splits."""
+
+ counts['segments'] += 1
+ return False
+
+ split_synchronizers.segment_sync.synchronize_segments.side_effect = sync_segments
+ split_tasks = mocker.Mock(spec=SplitTasks)
+ synchronizer = Synchronizer(split_synchronizers, split_tasks)
+
+ synchronizer._synchronize_segments()
+ assert counts['segments'] == 1
+
+
+class SynchronizerAsyncTests(object):
+
+ @pytest.mark.asyncio
+ async def test_sync_all_failed_splits(self, mocker):
+ api = mocker.Mock()
+ storage = mocker.Mock()
+ rbs_storage = mocker.Mock()
+ class flag_set_filter():
+ def should_filter():
+ return False
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ async def run(x, y, c):
+ raise APIException("something broke")
+ api.fetch_splits = run
+
+ async def get_change_number():
+ return 1234
+ storage.get_change_number = get_change_number
+ rbs_storage.get_change_number = get_change_number
+
+ split_sync = SplitSynchronizerAsync(api, storage, rbs_storage)
+ split_synchronizers = SplitSynchronizers(split_sync, mocker.Mock(), mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ sychronizer = SynchronizerAsync(split_synchronizers, mocker.Mock(spec=SplitTasks))
+
+ await sychronizer.synchronize_splits(None) # APIExceptions are handled locally and should not be propagated!
+
+ # test forcing to have only one retry attempt and then exit
+ await sychronizer.sync_all(1) # sync_all should not throw!
+
+ @pytest.mark.asyncio
+ async def test_sync_all_failed_splits_with_flagsets(self, mocker):
+ api = mocker.Mock()
+ storage = mocker.Mock()
+ rbs_storage = mocker.Mock()
+ class flag_set_filter():
+ def should_filter():
+ return False
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ async def get_change_number():
+ pass
+ storage.get_change_number = get_change_number
+ rbs_storage.get_change_number = get_change_number
+
+ async def run(x, y, c):
+ raise APIException("something broke", 414)
+ api.fetch_splits = run
+
+ split_sync = SplitSynchronizerAsync(api, storage, rbs_storage)
+ split_synchronizers = SplitSynchronizers(split_sync, mocker.Mock(), mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ synchronizer = SynchronizerAsync(split_synchronizers, mocker.Mock(spec=SplitTasks))
+
+ await synchronizer.synchronize_splits(None) # APIExceptions are handled locally and should not be propagated!
+
+ # test forcing to have only one retry attempt and then exit
+ await synchronizer.sync_all(3) # sync_all should not throw!
+ assert synchronizer._backoff._attempt == 0
+
+ @pytest.mark.asyncio
+ async def test_sync_all_failed_segments(self, mocker):
+ api = mocker.Mock()
+ storage = mocker.Mock()
+ split_storage = mocker.Mock(spec=SplitStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ split_sync = mocker.Mock(spec=SplitSynchronizer)
+ split_sync.synchronize_splits.return_value = None
+
+ async def run(x, y, c):
+ raise APIException("something broke")
+ api.fetch_segment = run
+
+ async def get_segment_names():
+ return ['seg']
+ split_storage.get_segment_names = get_segment_names
+
+ async def get_segment_names_rbs():
+ return []
+ rbs_storage.get_segment_names = get_segment_names_rbs
+
+ segment_sync = SegmentSynchronizerAsync(api, split_storage, storage, rbs_storage)
+ split_synchronizers = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ sychronizer = SynchronizerAsync(split_synchronizers, mocker.Mock(spec=SplitTasks))
+
+ await sychronizer.sync_all(1) # SyncAll should not throw!
+ assert not await sychronizer._synchronize_segments()
+ await segment_sync.shutdown()
+
+ @pytest.mark.asyncio
+ async def test_synchronize_splits(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ split_api = mocker.Mock()
+
+ async def fetch_splits(change, rb, options):
+ return {'ff': {'d': splits, 's': 123,
+ 't': 123}, 'rbs': {'d': [], 's': -1, 't': -1}}
+
+ split_api.fetch_splits = fetch_splits
+
+ split_sync = SplitSynchronizerAsync(split_api, split_storage, rbs_storage)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ segment_api = mocker.Mock()
+
+ async def get_change_number():
+ return 123
+ split_storage.get_change_number = get_change_number
+
+ async def fetch_segment(segment_name, change, options):
+ return {'name': 'segmentA', 'added': ['key1', 'key2',
+ 'key3'], 'removed': [], 'since': 123, 'till': 123}
+ segment_api.fetch_segment = fetch_segment
+
+ segment_sync = SegmentSynchronizerAsync(segment_api, split_storage, segment_storage, rbs_storage)
+ split_synchronizers = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ synchronizer = SynchronizerAsync(split_synchronizers, mocker.Mock(spec=SplitTasks))
+
+ await synchronizer.synchronize_splits(123)
+
+ inserted_split = await split_storage.get('some_name')
+ assert isinstance(inserted_split, Split)
+ assert inserted_split.name == 'some_name'
+
+ await segment_sync._jobs.await_completion()
+ inserted_segment = await segment_storage.get('segmentA')
+ assert inserted_segment.name == 'segmentA'
+ assert inserted_segment.keys == {'key1', 'key2', 'key3'}
+
+ await segment_sync.shutdown()
+
+ @pytest.mark.asyncio
+ async def test_synchronize_splits_calling_segment_sync_once(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ async def get_change_number():
+ return 123
+ split_storage.get_change_number = get_change_number
+
+ split_api = mocker.Mock()
+ async def fetch_splits(change, rb, options):
+ return {'ff': {'d': splits, 's': 123,
+ 't': 123}, 'rbs': {'d': [], 's': -1, 't': -1}}
+ split_api.fetch_splits = fetch_splits
+
+ split_sync = SplitSynchronizerAsync(split_api, split_storage, rbs_storage)
+ counts = {'segments': 0}
+
+ segment_sync = mocker.Mock()
+ async def sync_segments(*_):
+ """Sync Segments."""
+ counts['segments'] += 1
+ return True
+ segment_sync.synchronize_segments = sync_segments
+
+ async def segment_exist_in_storage(segment):
+ return False
+ segment_sync.segment_exist_in_storage = segment_exist_in_storage
+
+ split_synchronizers = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ synchronizer = SynchronizerAsync(split_synchronizers, mocker.Mock(spec=SplitTasks))
+ await synchronizer.synchronize_splits(123, True)
+
+ assert counts['segments'] == 1
+
+ @pytest.mark.asyncio
+ async def test_sync_all(self, mocker):
+ internal_events_queue = asyncio.Queue()
+ split_storage = InMemorySplitStorageAsync(internal_events_queue)
+ rbs_storage = InMemoryRuleBasedSegmentStorageAsync(internal_events_queue)
+ async def get_change_number():
+ return 123
+ split_storage.get_change_number = get_change_number
+
+ self.added_split = None
+ async def update(split, deleted, change_number):
+ if len(split) > 0:
+ self.added_split = split
+ split_storage.update = update
+
+ async def get_segment_names():
+ return ['segmentA']
+ split_storage.get_segment_names = get_segment_names
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+ def intersect(sets):
+ return True
+ split_storage.flag_set_filter = flag_set_filter
+ split_storage.flag_set_filter.flag_sets = {}
+ split_storage.flag_set_filter.sorted_flag_sets = []
+
+ split_api = mocker.Mock()
+ async def fetch_splits(change, rb, options):
+ return {'ff': {'d': splits, 's': 123,
+ 't': 123}, 'rbs': {'d': [], 's': -1, 't': -1}}
+ split_api.fetch_splits = fetch_splits
+
+ split_sync = SplitSynchronizerAsync(split_api, split_storage, rbs_storage)
+ segment_storage = InMemorySegmentStorageAsync(internal_events_queue)
+ async def get_change_number(segment):
+ return 123
+ segment_storage.get_change_number = get_change_number
+
+ self.inserted_segment = []
+ async def update(segment, added, removed, till):
+ self.inserted_segment.append(segment)
+ self.inserted_segment.append(added)
+ self.inserted_segment.append(removed)
+ segment_storage.update = update
+
+ segment_api = mocker.Mock()
+ async def fetch_segment(segment_name, change, options):
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'],
+ 'removed': [], 'since': 123, 'till': 123}
+ segment_api.fetch_segment = fetch_segment
+
+ segment_sync = SegmentSynchronizerAsync(segment_api, split_storage, segment_storage, rbs_storage)
+ split_synchronizers = SplitSynchronizers(split_sync, segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ synchronizer = SynchronizerAsync(split_synchronizers, mocker.Mock(spec=SplitTasks))
+ await synchronizer.sync_all()
+ await segment_sync._jobs.await_completion()
+
+ assert isinstance(self.added_split[0], Split)
+ assert self.added_split[0].name == 'some_name'
+
+ assert self.inserted_segment[0] == 'segmentA'
+ assert self.inserted_segment[1] == ['key1', 'key2', 'key3']
+ assert self.inserted_segment[2] == []
+
+ @pytest.mark.asyncio
+ async def test_start_periodic_fetching(self, mocker):
+ split_task = mocker.Mock(spec=SplitSynchronizationTask)
+ segment_task = mocker.Mock(spec=SegmentSynchronizationTask)
+ split_tasks = SplitTasks(split_task, segment_task, mocker.Mock(), mocker.Mock(),
+ mocker.Mock())
+ synchronizer = SynchronizerAsync(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.start_periodic_fetching()
+
+ assert len(split_task.start.mock_calls) == 1
+ assert len(segment_task.start.mock_calls) == 1
+
+ @pytest.mark.asyncio
+ async def test_stop_periodic_fetching(self, mocker):
+ split_task = mocker.Mock(spec=SplitSynchronizationTaskAsync)
+ segment_task = mocker.Mock(spec=SegmentSynchronizationTaskAsync)
+ segment_sync = mocker.Mock(spec=SegmentSynchronizerAsync)
+ split_synchronizers = SplitSynchronizers(mocker.Mock(), segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock())
+ split_tasks = SplitTasks(split_task, segment_task, mocker.Mock(), mocker.Mock(),
+ mocker.Mock())
+ synchronizer = SynchronizerAsync(split_synchronizers, split_tasks)
+ self.split_task_stopped = 0
+ async def stop_split():
+ self.split_task_stopped += 1
+ split_task.stop = stop_split
+
+ self.segment_task_stopped = 0
+ async def stop_segment():
+ self.segment_task_stopped += 1
+ segment_task.stop = stop_segment
+
+ self.segment_sync_stopped = 0
+ async def shutdown():
+ self.segment_sync_stopped += 1
+ segment_sync.shutdown = shutdown
+
+ await synchronizer.stop_periodic_fetching()
+
+ assert self.split_task_stopped == 1
+ assert self.segment_task_stopped == 1
+ assert self.segment_sync_stopped == 0
+
+ def test_start_periodic_data_recording(self, mocker):
+ impression_task = mocker.Mock(spec=ImpressionsSyncTaskAsync)
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTaskAsync)
+ event_task = mocker.Mock(spec=EventsSyncTaskAsync)
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTaskAsync)
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTaskAsync)
+ split_tasks = SplitTasks(None, None, impression_task, event_task,
+ impression_count_task, unique_keys_task, clear_filter_task)
+ synchronizer = SynchronizerAsync(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.start_periodic_data_recording()
+
+ assert len(impression_task.start.mock_calls) == 1
+ assert len(impression_count_task.start.mock_calls) == 1
+ assert len(event_task.start.mock_calls) == 1
+
+class RedisSynchronizerTests(object):
+ def test_start_periodic_data_recording(self, mocker):
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTask)
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTask)
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTask)
+ split_tasks = SplitTasks(None, None, None, None,
+ impression_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+ synchronizer = RedisSynchronizer(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.start_periodic_data_recording()
+
+ assert len(impression_count_task.start.mock_calls) == 1
+ assert len(unique_keys_task.start.mock_calls) == 1
+ assert len(clear_filter_task.start.mock_calls) == 1
+
+ def test_stop_periodic_data_recording(self, mocker):
+
+ def stop_mock(event):
+ event.set()
+ return
+
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTask)
+ impression_count_task.stop.side_effect = stop_mock
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTask)
+ unique_keys_task.stop.side_effect = stop_mock
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTask)
+ clear_filter_task.stop.side_effect = stop_mock
+
+ split_tasks = SplitTasks(None, None, None, None,
+ impression_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+ synchronizer = RedisSynchronizer(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.stop_periodic_data_recording(True)
+
+ assert len(impression_count_task.stop.mock_calls) == 1
+ assert len(unique_keys_task.stop.mock_calls) == 1
+ assert len(clear_filter_task.stop.mock_calls) == 1
+
+ def test_shutdown(self, mocker):
+
+ def stop_mock(event):
+ event.set()
+ return
+
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTask)
+ impression_count_task.stop.side_effect = stop_mock
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTask)
+ unique_keys_task.stop.side_effect = stop_mock
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTask)
+ clear_filter_task.stop.side_effect = stop_mock
+
+ segment_sync = mocker.Mock(spec=SegmentSynchronizer)
+
+ split_tasks = SplitTasks(None, None, None, None,
+ impression_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+ synchronizer = RedisSynchronizer(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.shutdown(True)
+
+ assert len(impression_count_task.stop.mock_calls) == 1
+ assert len(unique_keys_task.stop.mock_calls) == 1
+ assert len(clear_filter_task.stop.mock_calls) == 1
+
+class RedisSynchronizerAsyncTests(object):
+ @pytest.mark.asyncio
+ async def test_start_periodic_data_recording(self, mocker):
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTaskAsync)
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTaskAsync)
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTaskAsync)
+ split_tasks = SplitTasks(None, None, None, None,
+ impression_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+ synchronizer = RedisSynchronizerAsync(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.start_periodic_data_recording()
+
+ assert len(impression_count_task.start.mock_calls) == 1
+ assert len(unique_keys_task.start.mock_calls) == 1
+ assert len(clear_filter_task.start.mock_calls) == 1
+
+ @pytest.mark.asyncio
+ async def test_stop_periodic_data_recording(self, mocker):
+ impression_task = mocker.Mock(spec=ImpressionsSyncTaskAsync)
+ self.stop_imp_calls = 0
+ async def stop_imp(arg=None):
+ self.stop_imp_calls += 1
+ return
+ impression_task.stop = stop_imp
+
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTaskAsync)
+ self.stop_imp_count_calls = 0
+ async def stop_imp_count(arg=None):
+ self.stop_imp_count_calls += 1
+ return
+ impression_count_task.stop = stop_imp_count
+
+ event_task = mocker.Mock(spec=EventsSyncTaskAsync)
+ self.stop_event_calls = 0
+ async def stop_event(arg=None):
+ self.stop_event_calls += 1
+ return
+ event_task.stop = stop_event
+
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTaskAsync)
+ self.stop_unique_keys_calls = 0
+ async def stop_unique_keys(arg=None):
+ self.stop_unique_keys_calls += 1
+ return
+ unique_keys_task.stop = stop_unique_keys
+
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTaskAsync)
+ self.stop_clear_filter_calls = 0
+ async def stop_clear_filter(arg=None):
+ self.stop_clear_filter_calls += 1
+ return
+ clear_filter_task.stop = stop_clear_filter
+
+ split_tasks = SplitTasks(mocker.Mock(), mocker.Mock(), impression_task, event_task,
+ impression_count_task, unique_keys_task, clear_filter_task)
+ synchronizer = SynchronizerAsync(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ await synchronizer.stop_periodic_data_recording(True)
+
+ assert self.stop_imp_count_calls == 1
+ assert self.stop_imp_calls == 1
+ assert self.stop_event_calls == 1
+ assert self.stop_unique_keys_calls == 1
+ assert self.stop_clear_filter_calls == 1
+
+ @pytest.mark.asyncio
+ async def test_shutdown(self, mocker):
+ split_task = mocker.Mock(spec=SplitSynchronizationTask)
+ self.split_task_stopped = 0
+ async def stop_split():
+ self.split_task_stopped += 1
+ split_task.stop = stop_split
+
+ segment_task = mocker.Mock(spec=SegmentSynchronizationTask)
+ self.segment_task_stopped = 0
+ async def stop_segment():
+ self.segment_task_stopped += 1
+ segment_task.stop = stop_segment
+
+ impression_task = mocker.Mock(spec=ImpressionsSyncTaskAsync)
+ self.stop_imp_calls = 0
+ async def stop_imp(arg=None):
+ self.stop_imp_calls += 1
+ return
+ impression_task.stop = stop_imp
+
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTaskAsync)
+ self.stop_imp_count_calls = 0
+ async def stop_imp_count(arg=None):
+ self.stop_imp_count_calls += 1
+ return
+ impression_count_task.stop = stop_imp_count
+
+ event_task = mocker.Mock(spec=EventsSyncTaskAsync)
+ self.stop_event_calls = 0
+ async def stop_event(arg=None):
+ self.stop_event_calls += 1
+ return
+ event_task.stop = stop_event
+
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTaskAsync)
+ self.stop_unique_keys_calls = 0
+ async def stop_unique_keys(arg=None):
+ self.stop_unique_keys_calls += 1
+ return
+ unique_keys_task.stop = stop_unique_keys
+
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTaskAsync)
+ self.stop_clear_filter_calls = 0
+ async def stop_clear_filter(arg=None):
+ self.stop_clear_filter_calls += 1
+ return
+ clear_filter_task.stop = stop_clear_filter
+
+ segment_sync = mocker.Mock(spec=SegmentSynchronizerAsync)
+ self.segment_sync_stopped = 0
+ async def shutdown():
+ self.segment_sync_stopped += 1
+ segment_sync.shutdown = shutdown
+
+ split_synchronizers = SplitSynchronizers(mocker.Mock(), segment_sync, mocker.Mock(),
+ mocker.Mock(), mocker.Mock(), mocker.Mock())
+ split_tasks = SplitTasks(split_task, segment_task, impression_task, event_task,
+ impression_count_task, unique_keys_task, clear_filter_task)
+ synchronizer = SynchronizerAsync(split_synchronizers, split_tasks)
+ await synchronizer.shutdown(True)
+
+ assert self.split_task_stopped == 1
+ assert self.segment_task_stopped == 1
+ assert self.segment_sync_stopped == 1
+ assert self.stop_imp_count_calls == 1
+ assert self.stop_imp_calls == 1
+ assert self.stop_event_calls == 1
+ assert self.stop_unique_keys_calls == 1
+ assert self.stop_clear_filter_calls == 1
+
+ @pytest.mark.asyncio
+ async def test_sync_all_ok(self, mocker):
+ """Test that 3 attempts are done before failing."""
+ split_synchronizers = mocker.Mock(spec=SplitSynchronizers)
+ counts = {'splits': 0, 'segments': 0}
+
+ async def sync_splits(*_):
+ """Sync Splits."""
+ counts['splits'] += 1
+ return []
+
+ async def sync_segments(*_):
+ """Sync Segments."""
+ counts['segments'] += 1
+ return True
+
+ split_synchronizers.split_sync.synchronize_splits = sync_splits
+ split_synchronizers.segment_sync.synchronize_segments = sync_segments
+ split_tasks = mocker.Mock(spec=SplitTasks)
+ synchronizer = SynchronizerAsync(split_synchronizers, split_tasks)
+
+ await synchronizer.sync_all()
+ assert counts['splits'] == 1
+ assert counts['segments'] == 1
+
+ @pytest.mark.asyncio
+ async def test_sync_all_split_attempts(self, mocker):
+ """Test that 3 attempts are done before failing."""
+ split_synchronizers = mocker.Mock(spec=SplitSynchronizers)
+ counts = {'splits': 0, 'segments': 0}
+ async def sync_splits(*_):
+ """Sync Splits."""
+ counts['splits'] += 1
+ raise Exception('sarasa')
+
+ split_synchronizers.split_sync.synchronize_splits = sync_splits
+ split_tasks = mocker.Mock(spec=SplitTasks)
+ synchronizer = SynchronizerAsync(split_synchronizers, split_tasks)
+
+ await synchronizer.sync_all(2)
+ assert counts['splits'] == 3
+
+ @pytest.mark.asyncio
+ async def test_sync_all_segment_attempts(self, mocker):
+ """Test that segments don't trigger retries."""
+ split_synchronizers = mocker.Mock(spec=SplitSynchronizers)
+ counts = {'splits': 0, 'segments': 0}
+
+ async def sync_segments(*_):
+ """Sync Segments."""
+ counts['segments'] += 1
+ return False
+ split_synchronizers.segment_sync.synchronize_segments = sync_segments
+
+ split_tasks = mocker.Mock(spec=SplitTasks)
+ synchronizer = SynchronizerAsync(split_synchronizers, split_tasks)
+
+ await synchronizer._synchronize_segments()
+ assert counts['segments'] == 1
+
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTaskAsync)
+ self.imp_count_calls = 0
+ async def imp_count_stop_mock():
+ self.imp_count_calls += 1
+ impression_count_task.stop = imp_count_stop_mock
+
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTaskAsync)
+ self.unique_keys_calls = 0
+ async def unique_keys_stop_mock():
+ self.unique_keys_calls += 1
+ unique_keys_task.stop = unique_keys_stop_mock
+
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTaskAsync)
+ self.clear_filter_calls = 0
+ async def clear_filter_stop_mock():
+ self.clear_filter_calls += 1
+ clear_filter_task.stop = clear_filter_stop_mock
+
+ split_tasks = SplitTasks(None, None, None, None,
+ impression_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+ synchronizer = RedisSynchronizerAsync(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ await synchronizer.stop_periodic_data_recording(True)
+
+ assert self.imp_count_calls == 1
+ assert self.unique_keys_calls == 1
+ assert self.clear_filter_calls == 1
+
+ def test_shutdown(self, mocker):
+
+ def stop_mock(event):
+ event.set()
+ return
+
+ impression_count_task = mocker.Mock(spec=ImpressionsCountSyncTask)
+ impression_count_task.stop.side_effect = stop_mock
+ unique_keys_task = mocker.Mock(spec=UniqueKeysSyncTask)
+ unique_keys_task.stop.side_effect = stop_mock
+ clear_filter_task = mocker.Mock(spec=ClearFilterSyncTask)
+ clear_filter_task.stop.side_effect = stop_mock
+
+ segment_sync = mocker.Mock(spec=SegmentSynchronizer)
+
+ split_tasks = SplitTasks(None, None, None, None,
+ impression_count_task,
+ None,
+ unique_keys_task,
+ clear_filter_task
+ )
+ synchronizer = RedisSynchronizer(mocker.Mock(spec=SplitSynchronizers), split_tasks)
+ synchronizer.shutdown(True)
+
+ assert len(impression_count_task.stop.mock_calls) == 1
+ assert len(unique_keys_task.stop.mock_calls) == 1
+ assert len(clear_filter_task.stop.mock_calls) == 1
+
+
+class LocalhostSynchronizerTests(object):
+
+ @mock.patch('splitio.sync.segment.LocalSegmentSynchronizer.synchronize_segments')
+ def test_synchronize_splits(self, mocker):
+ split_sync = LocalSplitSynchronizer(mocker.Mock(), mocker.Mock(), mocker.Mock())
+ segment_sync = LocalSegmentSynchronizer(mocker.Mock(), mocker.Mock(), mocker.Mock())
+ synchronizers = SplitSynchronizers(split_sync, segment_sync, None, None, None)
+ local_synchronizer = LocalhostSynchronizer(synchronizers, mocker.Mock(), mocker.Mock())
+
+ def synchronize_splits(*args, **kwargs):
+ return ["segmentA", "segmentB"]
+ split_sync.synchronize_splits = synchronize_splits
+
+ def segment_exist_in_storage(*args, **kwargs):
+ return False
+ segment_sync.segment_exist_in_storage = segment_exist_in_storage
+
+ assert(local_synchronizer.synchronize_splits())
+ assert(mocker.called)
+
+ def test_start_and_stop_tasks(self, mocker):
+ synchronizers = SplitSynchronizers(
+ LocalSplitSynchronizer(mocker.Mock(), mocker.Mock(), mocker.Mock()),
+ LocalSegmentSynchronizer(mocker.Mock(), mocker.Mock(), mocker.Mock()), None, None, None)
+ split_task = SplitSynchronizationTask(synchronizers.split_sync.synchronize_splits, 30)
+ segment_task = SegmentSynchronizationTask(synchronizers.segment_sync.synchronize_segments, 30)
+ tasks = SplitTasks(split_task, segment_task, None, None, None,)
+
+ self.split_task_start_called = False
+ def split_task_start(*args, **kwargs):
+ self.split_task_start_called = True
+ split_task.start = split_task_start
+
+ self.segment_task_start_called = False
+ def segment_task_start(*args, **kwargs):
+ self.segment_task_start_called = True
+ segment_task.start = segment_task_start
+
+ self.split_task_stop_called = False
+ def split_task_stop(*args, **kwargs):
+ self.split_task_stop_called = True
+ split_task.stop = split_task_stop
+
+ self.segment_task_stop_called = False
+ def segment_task_stop(*args, **kwargs):
+ self.segment_task_stop_called = True
+ segment_task.stop = segment_task_stop
+
+ local_synchronizer = LocalhostSynchronizer(synchronizers, tasks, LocalhostMode.JSON)
+ local_synchronizer.start_periodic_fetching()
+ assert(self.split_task_start_called)
+ assert(self.segment_task_start_called)
+
+ local_synchronizer.stop_periodic_fetching()
+ assert(self.split_task_stop_called)
+ assert(self.segment_task_stop_called)
+
+
+class LocalhostSynchronizerAsyncTests(object):
+
+ @pytest.mark.asyncio
+ async def test_synchronize_splits(self, mocker):
+ split_sync = LocalSplitSynchronizerAsync(mocker.Mock(), mocker.Mock(), mocker.Mock())
+ segment_sync = LocalSegmentSynchronizerAsync(mocker.Mock(), mocker.Mock(), mocker.Mock())
+ synchronizers = SplitSynchronizers(split_sync, segment_sync, None, None, None)
+ local_synchronizer = LocalhostSynchronizerAsync(synchronizers, mocker.Mock(), mocker.Mock())
+
+ self.called = False
+ async def synchronize_segments(*args):
+ self.called = True
+ segment_sync.synchronize_segments = synchronize_segments
+
+ async def synchronize_splits(*args, **kwargs):
+ return ["segmentA", "segmentB"]
+ split_sync.synchronize_splits = synchronize_splits
+
+ async def segment_exist_in_storage(*args, **kwargs):
+ return False
+ segment_sync.segment_exist_in_storage = segment_exist_in_storage
+
+ assert(await local_synchronizer.synchronize_splits())
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_start_and_stop_tasks(self, mocker):
+ synchronizers = SplitSynchronizers(
+ LocalSplitSynchronizerAsync(mocker.Mock(), mocker.Mock(), mocker.Mock()),
+ LocalSegmentSynchronizerAsync(mocker.Mock(), mocker.Mock(), mocker.Mock()), None, None, None)
+ split_task = SplitSynchronizationTaskAsync(synchronizers.split_sync.synchronize_splits, 30)
+ segment_task = SegmentSynchronizationTaskAsync(synchronizers.segment_sync.synchronize_segments, 30)
+ tasks = SplitTasks(split_task, segment_task, None, None, None,)
+
+ self.split_task_start_called = False
+ def split_task_start(*args, **kwargs):
+ self.split_task_start_called = True
+ split_task.start = split_task_start
+
+ self.segment_task_start_called = False
+ def segment_task_start(*args, **kwargs):
+ self.segment_task_start_called = True
+ segment_task.start = segment_task_start
+
+ self.split_task_stop_called = False
+ async def split_task_stop(*args, **kwargs):
+ self.split_task_stop_called = True
+ split_task.stop = split_task_stop
+
+ self.segment_task_stop_called = False
+ async def segment_task_stop(*args, **kwargs):
+ self.segment_task_stop_called = True
+ segment_task.stop = segment_task_stop
+
+ local_synchronizer = LocalhostSynchronizerAsync(synchronizers, tasks, LocalhostMode.JSON)
+ local_synchronizer.start_periodic_fetching()
+ assert(self.split_task_start_called)
+ assert(self.segment_task_start_called)
+
+ await local_synchronizer.stop_periodic_fetching()
+ assert(self.split_task_stop_called)
+ assert(self.segment_task_stop_called)
diff --git a/tests/sync/test_telemetry.py b/tests/sync/test_telemetry.py
new file mode 100644
index 00000000..dd8119e2
--- /dev/null
+++ b/tests/sync/test_telemetry.py
@@ -0,0 +1,302 @@
+"""Telemetry Worker tests."""
+import unittest.mock as mock
+import pytest
+import queue
+import asyncio
+
+from splitio.sync.telemetry import TelemetrySynchronizer, TelemetrySynchronizerAsync, InMemoryTelemetrySubmitter, InMemoryTelemetrySubmitterAsync
+from splitio.engine.telemetry import TelemetryStorageConsumer, TelemetryStorageConsumerAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync, InMemorySegmentStorage, InMemorySegmentStorageAsync, InMemorySplitStorage, InMemorySplitStorageAsync
+from splitio.models.splits import Split, Status
+from splitio.models.segments import Segment
+from splitio.models.telemetry import StreamingEvents, StreamingEventsAsync
+from splitio.api.telemetry import TelemetryAPI
+
+class TelemetrySynchronizerTests(object):
+ """Telemetry synchronizer test cases."""
+
+ @mock.patch('splitio.sync.telemetry.InMemoryTelemetrySubmitter.synchronize_config')
+ def test_synchronize_config(self, mocker):
+ telemetry_synchronizer = TelemetrySynchronizer(InMemoryTelemetrySubmitter(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock()))
+ telemetry_synchronizer.synchronize_config()
+ assert(mocker.called)
+
+ @mock.patch('splitio.sync.telemetry.InMemoryTelemetrySubmitter.synchronize_stats')
+ def test_synchronize_stats(self, mocker):
+ telemetry_synchronizer = TelemetrySynchronizer(InMemoryTelemetrySubmitter(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock()))
+ telemetry_synchronizer.synchronize_stats()
+ assert(mocker.called)
+
+
+class TelemetrySynchronizerAsyncTests(object):
+ """Telemetry synchronizer async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_synchronize_config(self, mocker):
+ telemetry_synchronizer = TelemetrySynchronizerAsync(InMemoryTelemetrySubmitterAsync(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock()))
+ self.called = False
+ async def synchronize_config():
+ self.called = True
+ telemetry_synchronizer.synchronize_config = synchronize_config
+ await telemetry_synchronizer.synchronize_config()
+ assert(self.called)
+
+ @pytest.mark.asyncio
+ async def test_synchronize_stats(self, mocker):
+ telemetry_synchronizer = TelemetrySynchronizer(InMemoryTelemetrySubmitter(mocker.Mock(), mocker.Mock(), mocker.Mock(), mocker.Mock()))
+ self.called = False
+ async def synchronize_stats():
+ self.called = True
+ telemetry_synchronizer.synchronize_stats = synchronize_stats
+ await telemetry_synchronizer.synchronize_stats()
+ assert(self.called)
+
+
+class TelemetrySubmitterTests(object):
+ """Telemetry submitter test cases."""
+
+ def test_synchronize_telemetry(self, mocker):
+ api = mocker.Mock(spec=TelemetryAPI)
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_consumer = TelemetryStorageConsumer(telemetry_storage)
+ events_queue = queue.Queue()
+ split_storage = InMemorySplitStorage(events_queue)
+ split_storage.update([Split('split1', 1234, 1, False, 'user', Status.ACTIVE, 123)], [], -1)
+ segment_storage = InMemorySegmentStorage(events_queue)
+ segment_storage.put(Segment('segment1', [], 123))
+ telemetry_submitter = InMemoryTelemetrySubmitter(telemetry_consumer, split_storage, segment_storage, api)
+
+ telemetry_storage._counters._impressions_queued = 100
+ telemetry_storage._counters._impressions_deduped = 30
+ telemetry_storage._counters._impressions_dropped = 0
+ telemetry_storage._counters._events_queued = 20
+ telemetry_storage._counters._events_dropped = 10
+ telemetry_storage._counters._auth_rejections = 1
+ telemetry_storage._counters._token_refreshes = 3
+ telemetry_storage._counters._session_length = 3
+ telemetry_storage._counters._update_from_sse['sp'] = 3
+
+ telemetry_storage._method_exceptions._treatment = 10
+ telemetry_storage._method_exceptions._treatments = 1
+ telemetry_storage._method_exceptions._treatment_with_config = 5
+ telemetry_storage._method_exceptions._treatments_with_config = 1
+ telemetry_storage._method_exceptions._treatments_by_flag_set = 2
+ telemetry_storage._method_exceptions._treatments_by_flag_sets = 3
+ telemetry_storage._method_exceptions._treatments_with_config_by_flag_set = 4
+ telemetry_storage._method_exceptions._treatments_with_config_by_flag_sets = 6
+ telemetry_storage._method_exceptions._track = 3
+
+ telemetry_storage._last_synchronization._split = 5
+ telemetry_storage._last_synchronization._segment = 3
+ telemetry_storage._last_synchronization._impression = 10
+ telemetry_storage._last_synchronization._impression_count = 0
+ telemetry_storage._last_synchronization._event = 4
+ telemetry_storage._last_synchronization._telemetry = 0
+ telemetry_storage._last_synchronization._token = 3
+
+ telemetry_storage._http_sync_errors._split = {'500': 3, '501': 2}
+ telemetry_storage._http_sync_errors._segment = {'401': 1}
+ telemetry_storage._http_sync_errors._impression = {'500': 1}
+ telemetry_storage._http_sync_errors._impression_count = {'401': 5}
+ telemetry_storage._http_sync_errors._event = {'404': 10}
+ telemetry_storage._http_sync_errors._telemetry = {'501': 3}
+ telemetry_storage._http_sync_errors._token = {'505': 11}
+
+ telemetry_storage._streaming_events = StreamingEvents()
+ telemetry_storage._tags = ['tag1']
+
+ telemetry_storage._method_latencies._treatment = [1] + [0] * 22
+ telemetry_storage._method_latencies._treatments = [0] * 23
+ telemetry_storage._method_latencies._treatment_with_config = [0] * 23
+ telemetry_storage._method_latencies._treatments_with_config = [0] * 23
+ telemetry_storage._method_latencies._treatments_by_flag_set = [1] + [0] * 22
+ telemetry_storage._method_latencies._treatments_by_flag_sets = [0] * 23
+ telemetry_storage._method_latencies._treatments_with_config_by_flag_set = [1] + [0] * 22
+ telemetry_storage._method_latencies._treatments_with_config_by_flag_sets = [0] * 23
+ telemetry_storage._method_latencies._track = [0] * 23
+
+ telemetry_storage._http_latencies._split = [1] + [0] * 22
+ telemetry_storage._http_latencies._segment = [0] * 23
+ telemetry_storage._http_latencies._impression = [0] * 23
+ telemetry_storage._http_latencies._impression_count = [0] * 23
+ telemetry_storage._http_latencies._event = [0] * 23
+ telemetry_storage._http_latencies._telemetry = [0] * 23
+ telemetry_storage._http_latencies._token = [0] * 23
+
+ telemetry_storage.record_config({'operationMode': 'inmemory',
+ 'storageType': None,
+ 'streamingEnabled': True,
+ 'impressionsQueueSize': 100,
+ 'eventsQueueSize': 200,
+ 'impressionsMode': 'DEBUG',
+ 'impressionListener': None,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'impressionsRefreshRate': 60,
+ 'eventsPushRate': 60,
+ 'metricsRefreshRate': 10,
+ 'activeFactoryCount': 1,
+ 'notReady': 0,
+ 'timeUntilReady': 1
+ }, {}, 0, 0
+ )
+ self.formatted_config = ""
+ def record_init(*args, **kwargs):
+ self.formatted_config = args[0]
+
+ api.record_init.side_effect = record_init
+ telemetry_submitter.synchronize_config()
+ assert(self.formatted_config == telemetry_submitter._telemetry_init_consumer.get_config_stats())
+
+ def record_stats(*args, **kwargs):
+ self.formatted_stats = args[0]
+
+ api.record_stats.side_effect = record_stats
+ telemetry_submitter.synchronize_stats()
+ assert(self.formatted_stats == {
+ "iQ": 100,
+ "iDe": 30,
+ "iDr": 0,
+ "eQ": 20,
+ "eD": 10,
+ "lS": {"sp": 5, "se": 3, "im": 10, "ic": 0, "ev": 4, "te": 0, "to": 3},
+ "t": ["tag1"],
+ "hE": {"sp": {"500": 3, "501": 2}, "se": {"401": 1}, "im": {"500": 1}, "ic": {"401": 5}, "ev": {"404": 10}, "te": {"501": 3}, "to": {"505": 11}},
+ "hL": {"sp": [1] + [0] * 22, "se": [0] * 23, "im": [0] * 23, "ic": [0] * 23, "ev": [0] * 23, "te": [0] * 23, "to": [0] * 23},
+ "aR": 1,
+ "tR": 3,
+ "sE": [],
+ "sL": 3,
+ "mE": {"t": 10, "ts": 1, "tc": 5, "tcs": 1, "tf": 2, "tfs": 3, "tcf": 4, "tcfs": 6, "tr": 3},
+ "mL": {"t": [1] + [0] * 22, "ts": [0] * 23, "tc": [0] * 23, "tcs": [0] * 23, "tf": [1] + [0] * 22, "tfs": [0] * 23, "tcf": [1] + [0] * 22, "tcfs": [0] * 23, "tr": [0] * 23},
+ "spC": 1,
+ "seC": 1,
+ "skC": 0,
+ "ufs": {"rbs": 0, "sp": 3},
+ "t": ['tag1']
+ })
+
+
+class TelemetrySubmitterAsyncTests(object):
+ """Telemetry submitter async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_synchronize_telemetry(self, mocker):
+ api = mocker.Mock(spec=TelemetryAPI)
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_consumer = TelemetryStorageConsumerAsync(telemetry_storage)
+ split_storage = InMemorySplitStorageAsync(asyncio.Queue())
+ await split_storage.update([Split('split1', 1234, 1, False, 'user', Status.ACTIVE, 123)], [], -1)
+ segment_storage = InMemorySegmentStorageAsync(asyncio.Queue())
+ await segment_storage.put(Segment('segment1', [], 123))
+ telemetry_submitter = InMemoryTelemetrySubmitterAsync(telemetry_consumer, split_storage, segment_storage, api)
+
+ telemetry_storage._counters._impressions_queued = 100
+ telemetry_storage._counters._impressions_deduped = 30
+ telemetry_storage._counters._impressions_dropped = 0
+ telemetry_storage._counters._events_queued = 20
+ telemetry_storage._counters._events_dropped = 10
+ telemetry_storage._counters._auth_rejections = 1
+ telemetry_storage._counters._token_refreshes = 3
+ telemetry_storage._counters._session_length = 3
+ telemetry_storage._counters._update_from_sse['sp'] = 3
+
+ telemetry_storage._method_exceptions._treatment = 10
+ telemetry_storage._method_exceptions._treatments = 1
+ telemetry_storage._method_exceptions._treatment_with_config = 5
+ telemetry_storage._method_exceptions._treatments_with_config = 1
+ telemetry_storage._method_exceptions._treatments_by_flag_set = 2
+ telemetry_storage._method_exceptions._treatments_by_flag_sets = 3
+ telemetry_storage._method_exceptions._treatments_with_config_by_flag_set = 4
+ telemetry_storage._method_exceptions._treatments_with_config_by_flag_sets = 6
+ telemetry_storage._method_exceptions._track = 3
+
+ telemetry_storage._last_synchronization._split = 5
+ telemetry_storage._last_synchronization._segment = 3
+ telemetry_storage._last_synchronization._impression = 10
+ telemetry_storage._last_synchronization._impression_count = 0
+ telemetry_storage._last_synchronization._event = 4
+ telemetry_storage._last_synchronization._telemetry = 0
+ telemetry_storage._last_synchronization._token = 3
+
+ telemetry_storage._http_sync_errors._split = {'500': 3, '501': 2}
+ telemetry_storage._http_sync_errors._segment = {'401': 1}
+ telemetry_storage._http_sync_errors._impression = {'500': 1}
+ telemetry_storage._http_sync_errors._impression_count = {'401': 5}
+ telemetry_storage._http_sync_errors._event = {'404': 10}
+ telemetry_storage._http_sync_errors._telemetry = {'501': 3}
+ telemetry_storage._http_sync_errors._token = {'505': 11}
+
+ telemetry_storage._streaming_events = await StreamingEventsAsync.create()
+ telemetry_storage._tags = ['tag1']
+
+ telemetry_storage._method_latencies._treatment = [1] + [0] * 22
+ telemetry_storage._method_latencies._treatments = [0] * 23
+ telemetry_storage._method_latencies._treatment_with_config = [0] * 23
+ telemetry_storage._method_latencies._treatments_with_config = [0] * 23
+ telemetry_storage._method_latencies._treatments_by_flag_set = [1] + [0] * 22
+ telemetry_storage._method_latencies._treatments_by_flag_sets = [0] * 23
+ telemetry_storage._method_latencies._treatments_with_config_by_flag_set = [1] + [0] * 22
+ telemetry_storage._method_latencies._treatments_with_config_by_flag_sets = [0] * 23
+ telemetry_storage._method_latencies._track = [0] * 23
+
+ telemetry_storage._http_latencies._split = [1] + [0] * 22
+ telemetry_storage._http_latencies._segment = [0] * 23
+ telemetry_storage._http_latencies._impression = [0] * 23
+ telemetry_storage._http_latencies._impression_count = [0] * 23
+ telemetry_storage._http_latencies._event = [0] * 23
+ telemetry_storage._http_latencies._telemetry = [0] * 23
+ telemetry_storage._http_latencies._token = [0] * 23
+
+ await telemetry_storage.record_config({'operationMode': 'inmemory',
+ 'storageType': None,
+ 'streamingEnabled': True,
+ 'impressionsQueueSize': 100,
+ 'eventsQueueSize': 200,
+ 'impressionsMode': 'DEBUG',
+ 'impressionListener': None,
+ 'featuresRefreshRate': 30,
+ 'segmentsRefreshRate': 30,
+ 'impressionsRefreshRate': 60,
+ 'eventsPushRate': 60,
+ 'metricsRefreshRate': 10,
+ 'activeFactoryCount': 1,
+ 'notReady': 0,
+ 'timeUntilReady': 1
+ }, {}, 0, 0
+ )
+ self.formatted_config = ""
+ async def record_init(*args, **kwargs):
+ self.formatted_config = args[0]
+ api.record_init = record_init
+
+ await telemetry_submitter.synchronize_config()
+ assert(self.formatted_config == await telemetry_submitter._telemetry_init_consumer.get_config_stats())
+
+ async def record_stats(*args, **kwargs):
+ self.formatted_stats = args[0]
+ api.record_stats = record_stats
+
+ await telemetry_submitter.synchronize_stats()
+ assert(self.formatted_stats == {
+ "iQ": 100,
+ "iDe": 30,
+ "iDr": 0,
+ "eQ": 20,
+ "eD": 10,
+ "lS": {"sp": 5, "se": 3, "im": 10, "ic": 0, "ev": 4, "te": 0, "to": 3},
+ "t": ["tag1"],
+ "hE": {"sp": {"500": 3, "501": 2}, "se": {"401": 1}, "im": {"500": 1}, "ic": {"401": 5}, "ev": {"404": 10}, "te": {"501": 3}, "to": {"505": 11}},
+ "hL": {"sp": [1] + [0] * 22, "se": [0] * 23, "im": [0] * 23, "ic": [0] * 23, "ev": [0] * 23, "te": [0] * 23, "to": [0] * 23},
+ "aR": 1,
+ "tR": 3,
+ "sE": [],
+ "sL": 3,
+ "mE": {"t": 10, "ts": 1, "tc": 5, "tcs": 1, "tf": 2, "tfs": 3, "tcf": 4, "tcfs": 6, "tr": 3},
+ "mL": {"t": [1] + [0] * 22, "ts": [0] * 23, "tc": [0] * 23, "tcs": [0] * 23, "tf": [1] + [0] * 22, "tfs": [0] * 23, "tcf": [1] + [0] * 22, "tcfs": [0] * 23, "tr": [0] * 23},
+ "spC": 1,
+ "seC": 1,
+ "skC": 0,
+ "ufs": {"rbs": 0, "sp": 3},
+ "t": ['tag1']
+ })
diff --git a/tests/sync/test_unique_keys_sync.py b/tests/sync/test_unique_keys_sync.py
new file mode 100644
index 00000000..47cedaab
--- /dev/null
+++ b/tests/sync/test_unique_keys_sync.py
@@ -0,0 +1,106 @@
+"""Split Worker tests."""
+import unittest.mock as mock
+import pytest
+
+from splitio.engine.impressions.adapters import InMemorySenderAdapter, InMemorySenderAdapterAsync
+from splitio.engine.impressions.unique_keys_tracker import UniqueKeysTracker, UniqueKeysTrackerAsync
+from splitio.sync.unique_keys import UniqueKeysSynchronizer, ClearFilterSynchronizer, UniqueKeysSynchronizerAsync, ClearFilterSynchronizerAsync
+
+class UniqueKeysSynchronizerTests(object):
+ """Unique keys synchronizer test cases."""
+
+ def test_sync_unique_keys_chunks(self, mocker):
+ total_mtks = 5010 # Use number higher than 5000, which is the default max_bulk_size
+ unique_keys_tracker = UniqueKeysTracker()
+ for i in range(0 , total_mtks):
+ unique_keys_tracker.track('key'+str(i)+'', 'feature1')
+ sender_adapter = InMemorySenderAdapter(mocker.Mock())
+ unique_keys_synchronizer = UniqueKeysSynchronizer(sender_adapter, unique_keys_tracker)
+ cache, cache_size = unique_keys_synchronizer._uniqe_keys_tracker.get_cache_info_and_pop_all()
+ assert(cache_size > unique_keys_synchronizer._max_bulk_size)
+
+ bulks = unique_keys_synchronizer._split_cache_to_bulks(cache)
+ assert(len(bulks) == int(total_mtks / unique_keys_synchronizer._max_bulk_size) + 1)
+ for i in range(0 , int(total_mtks / unique_keys_synchronizer._max_bulk_size)):
+ if i > int(total_mtks / unique_keys_synchronizer._max_bulk_size):
+ assert(len(bulks[i]['feature1']) == (total_mtks - unique_keys_synchronizer._max_bulk_size))
+ else:
+ assert(len(bulks[i]['feature1']) == unique_keys_synchronizer._max_bulk_size)
+
+ @mock.patch('splitio.engine.impressions.adapters.InMemorySenderAdapter.record_unique_keys')
+ def test_sync_unique_keys_send_all(self, mtk_mocker):
+ mtk_mocker.side_effect = self.mocked_record_unique_keys
+
+ total_mtks = 5010 # Use number higher than 5000, which is the default max_bulk_size
+ unique_keys_tracker = UniqueKeysTracker()
+ for i in range(0 , total_mtks):
+ unique_keys_tracker.track('key'+str(i)+'', 'feature1')
+ sender_adapter = InMemorySenderAdapter(mock.Mock())
+ unique_keys_synchronizer = UniqueKeysSynchronizer(sender_adapter, unique_keys_tracker)
+ unique_keys_synchronizer.send_all()
+ assert(mtk_mocker.call_count == int(total_mtks / unique_keys_synchronizer._max_bulk_size) + 1)
+
+ def mocked_record_unique_keys(self, cache):
+ return mock.Mock()
+
+ def test_clear_all_filter(self, mocker):
+ unique_keys_tracker = UniqueKeysTracker()
+ total_mtks = 50
+ for i in range(0 , total_mtks):
+ unique_keys_tracker.track('key'+str(i)+'', 'feature1')
+
+ clear_filter_sync = ClearFilterSynchronizer(unique_keys_tracker)
+ clear_filter_sync.clear_all()
+ for i in range(0 , total_mtks):
+ assert(not unique_keys_tracker._filter.contains('feature1key'+str(i)))
+
+
+class UniqueKeysSynchronizerAsyncTests(object):
+ """Unique keys synchronizer async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_sync_unique_keys_chunks(self, mocker):
+ total_mtks = 5010 # Use number higher than 5000, which is the default max_bulk_size
+ unique_keys_tracker = UniqueKeysTrackerAsync()
+ for i in range(0 , total_mtks):
+ await unique_keys_tracker.track('key'+str(i)+'', 'feature1')
+ sender_adapter = InMemorySenderAdapterAsync(mocker.Mock())
+ unique_keys_synchronizer = UniqueKeysSynchronizerAsync(sender_adapter, unique_keys_tracker)
+ cache, cache_size = await unique_keys_synchronizer._uniqe_keys_tracker.get_cache_info_and_pop_all()
+ assert(cache_size > unique_keys_synchronizer._max_bulk_size)
+
+ bulks = unique_keys_synchronizer._split_cache_to_bulks(cache)
+ assert(len(bulks) == int(total_mtks / unique_keys_synchronizer._max_bulk_size) + 1)
+ for i in range(0 , int(total_mtks / unique_keys_synchronizer._max_bulk_size)):
+ if i > int(total_mtks / unique_keys_synchronizer._max_bulk_size):
+ assert(len(bulks[i]['feature1']) == (total_mtks - unique_keys_synchronizer._max_bulk_size))
+ else:
+ assert(len(bulks[i]['feature1']) == unique_keys_synchronizer._max_bulk_size)
+
+ @pytest.mark.asyncio
+ async def test_sync_unique_keys_send_all(self):
+ total_mtks = 5010 # Use number higher than 5000, which is the default max_bulk_size
+ unique_keys_tracker = UniqueKeysTrackerAsync()
+ for i in range(0 , total_mtks):
+ await unique_keys_tracker.track('key'+str(i)+'', 'feature1')
+ sender_adapter = InMemorySenderAdapterAsync(mock.Mock())
+ self.call_count = 0
+ async def record_unique_keys(*args):
+ self.call_count += 1
+
+ sender_adapter.record_unique_keys = record_unique_keys
+ unique_keys_synchronizer = UniqueKeysSynchronizerAsync(sender_adapter, unique_keys_tracker)
+ await unique_keys_synchronizer.send_all()
+ assert(self.call_count == int(total_mtks / unique_keys_synchronizer._max_bulk_size) + 1)
+
+ @pytest.mark.asyncio
+ async def test_clear_all_filter(self, mocker):
+ unique_keys_tracker = UniqueKeysTrackerAsync()
+ total_mtks = 50
+ for i in range(0 , total_mtks):
+ await unique_keys_tracker.track('key'+str(i)+'', 'feature1')
+
+ clear_filter_sync = ClearFilterSynchronizerAsync(unique_keys_tracker)
+ await clear_filter_sync.clear_all()
+ for i in range(0 , total_mtks):
+ assert(not unique_keys_tracker._filter.contains('feature1key'+str(i)))
\ No newline at end of file
diff --git a/tests/tasks/test_events_sync.py b/tests/tasks/test_events_sync.py
index c775a9ac..b2ea500d 100644
--- a/tests/tasks/test_events_sync.py
+++ b/tests/tasks/test_events_sync.py
@@ -2,11 +2,15 @@
import threading
import time
+import pytest
+
from splitio.api.client import HttpResponse
from splitio.tasks import events_sync
from splitio.storage import EventStorage
from splitio.models.events import Event
from splitio.api.events import EventsAPI
+from splitio.sync.event import EventSynchronizer, EventSynchronizerAsync
+from splitio.optional.loaders import asyncio
class EventsSyncTests(object):
@@ -25,8 +29,9 @@ def test_normal_operation(self, mocker):
storage.pop_many.return_value = events
api = mocker.Mock(spec=EventsAPI)
- api.flush_events.return_value = HttpResponse(200, '')
- task =events_sync.EventsSyncTask(api, storage, 1, 5)
+ api.flush_events.return_value = HttpResponse(200, '', {})
+ event_synchronizer = EventSynchronizer(api, storage, 5)
+ task = events_sync.EventsSyncTask(event_synchronizer.synchronize_events, 1)
task.start()
time.sleep(2)
assert task.is_running()
@@ -38,3 +43,47 @@ def test_normal_operation(self, mocker):
stop_event.wait(5)
assert stop_event.is_set()
assert len(api.flush_events.mock_calls) > calls_now
+
+
+class EventsSyncAsyncTests(object):
+ """Impressions Syncrhonization task async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_normal_operation(self, mocker):
+ """Test that the task works properly under normal circumstances."""
+ self.events = [
+ Event('key1', 'user', 'purchase', 5.3, 123456, None),
+ Event('key2', 'user', 'purchase', 5.3, 123456, None),
+ Event('key3', 'user', 'purchase', 5.3, 123456, None),
+ Event('key4', 'user', 'purchase', 5.3, 123456, None),
+ Event('key5', 'user', 'purchase', 5.3, 123456, None),
+ ]
+ storage = mocker.Mock(spec=EventStorage)
+ self.called = False
+ async def pop_many(*args):
+ self.called = True
+ return self.events
+ storage.pop_many = pop_many
+
+ api = mocker.Mock(spec=EventsAPI)
+ self.flushed_events = None
+ self.count = 0
+ async def flush_events(events):
+ self.count += 1
+ self.flushed_events = events
+ return HttpResponse(200, '', {})
+ api.flush_events = flush_events
+
+ event_synchronizer = EventSynchronizerAsync(api, storage, 5)
+ task = events_sync.EventsSyncTaskAsync(event_synchronizer.synchronize_events, 1)
+ task.start()
+ await asyncio.sleep(2)
+
+ assert task.is_running()
+ assert self.called
+ assert self.flushed_events == self.events
+
+ calls_now = self.count
+ await task.stop()
+ assert not task.is_running()
+ assert self.count > calls_now
diff --git a/tests/tasks/test_impressions_sync.py b/tests/tasks/test_impressions_sync.py
index 4851abf9..78bbf979 100644
--- a/tests/tasks/test_impressions_sync.py
+++ b/tests/tasks/test_impressions_sync.py
@@ -2,29 +2,38 @@
import threading
import time
+import pytest
+
from splitio.api.client import HttpResponse
from splitio.tasks import impressions_sync
from splitio.storage import ImpressionStorage
from splitio.models.impressions import Impression
from splitio.api.impressions import ImpressionsAPI
+from splitio.sync.impression import ImpressionSynchronizer, ImpressionsCountSynchronizer, ImpressionSynchronizerAsync, ImpressionsCountSynchronizerAsync
+from splitio.engine.impressions.manager import Counter
+from splitio.optional.loaders import asyncio
-class ImpressionsSyncTests(object):
+class ImpressionsSyncTaskTests(object):
"""Impressions Syncrhonization task test cases."""
def test_normal_operation(self, mocker):
"""Test that the task works properly under normal circumstances."""
storage = mocker.Mock(spec=ImpressionStorage)
impressions = [
- Impression('key1', 'split1', 'on', 'l1', 123456, 'b1', 321654),
- Impression('key2', 'split1', 'on', 'l1', 123456, 'b1', 321654),
- Impression('key3', 'split2', 'off', 'l1', 123456, 'b1', 321654),
- Impression('key4', 'split2', 'on', 'l1', 123456, 'b1', 321654),
- Impression('key5', 'split3', 'off', 'l1', 123456, 'b1', 321654)
+ Impression('key1', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key2', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key3', 'split2', 'off', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key4', 'split2', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key5', 'split3', 'off', 'l1', 123456, 'b1', 321654, None, None)
]
storage.pop_many.return_value = impressions
api = mocker.Mock(spec=ImpressionsAPI)
- api.flush_impressions.return_value = HttpResponse(200, '')
- task = impressions_sync.ImpressionsSyncTask(api, storage, 1, 5)
+ api.flush_impressions.return_value = HttpResponse(200, '', {})
+ impression_synchronizer = ImpressionSynchronizer(api, storage, 5)
+ task = impressions_sync.ImpressionsSyncTask(
+ impression_synchronizer.synchronize_impressions,
+ 1
+ )
task.start()
time.sleep(2)
assert task.is_running()
@@ -36,3 +45,128 @@ def test_normal_operation(self, mocker):
stop_event.wait(5)
assert stop_event.is_set()
assert len(api.flush_impressions.mock_calls) > calls_now
+
+
+class ImpressionsSyncTaskAsyncTests(object):
+ """Impressions Syncrhonization task test cases."""
+
+ @pytest.mark.asyncio
+ async def test_normal_operation(self, mocker):
+ """Test that the task works properly under normal circumstances."""
+ storage = mocker.Mock(spec=ImpressionStorage)
+ impressions = [
+ Impression('key1', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key2', 'split1', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key3', 'split2', 'off', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key4', 'split2', 'on', 'l1', 123456, 'b1', 321654, None, None),
+ Impression('key5', 'split3', 'off', 'l1', 123456, 'b1', 321654, None, None)
+ ]
+ self.pop_called = 0
+ async def pop_many(*args):
+ self.pop_called += 1
+ return impressions
+ storage.pop_many = pop_many
+
+ api = mocker.Mock(spec=ImpressionsAPI)
+ self.flushed = None
+ self.called = 0
+ async def flush_impressions(imps):
+ self.called += 1
+ self.flushed = imps
+ return HttpResponse(200, '', {})
+ api.flush_impressions = flush_impressions
+
+ impression_synchronizer = ImpressionSynchronizerAsync(api, storage, 5)
+ task = impressions_sync.ImpressionsSyncTaskAsync(
+ impression_synchronizer.synchronize_impressions,
+ 1
+ )
+ task.start()
+ await asyncio.sleep(2)
+ assert task.is_running()
+ assert self.pop_called == 1
+ assert self.flushed == impressions
+
+ calls_now = self.called
+ await task.stop()
+ assert self.called > calls_now
+
+
+class ImpressionsCountSyncTaskTests(object):
+ """Impressions Syncrhonization task test cases."""
+
+ def test_normal_operation(self, mocker):
+ """Test that the task works properly under normal circumstances."""
+ counter = mocker.Mock(spec=Counter)
+
+ counters = [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ Counter.CountPerFeature('f1', 456, 111),
+ Counter.CountPerFeature('f2', 456, 222)
+ ]
+
+ counter.pop_all.return_value = counters
+ api = mocker.Mock(spec=ImpressionsAPI)
+ api.flush_counters.return_value = HttpResponse(200, '', {})
+ impressions_sync.ImpressionsCountSyncTask._PERIOD = 1
+ impression_synchronizer = ImpressionsCountSynchronizer(api, counter)
+ task = impressions_sync.ImpressionsCountSyncTask(
+ impression_synchronizer.synchronize_counters
+ )
+ task.start()
+ time.sleep(2)
+ assert task.is_running()
+ assert counter.pop_all.mock_calls[0] == mocker.call()
+ assert api.flush_counters.mock_calls[0] == mocker.call(counters)
+ stop_event = threading.Event()
+ calls_now = len(api.flush_counters.mock_calls)
+ task.stop(stop_event)
+ stop_event.wait(5)
+ assert stop_event.is_set()
+ assert len(api.flush_counters.mock_calls) > calls_now
+
+
+class ImpressionsCountSyncTaskAsyncTests(object):
+ """Impressions Syncrhonization task test cases."""
+
+ @pytest.mark.asyncio
+ async def test_normal_operation(self, mocker):
+ """Test that the task works properly under normal circumstances."""
+ counter = mocker.Mock(spec=Counter)
+ counters = [
+ Counter.CountPerFeature('f1', 123, 2),
+ Counter.CountPerFeature('f2', 123, 123),
+ Counter.CountPerFeature('f1', 456, 111),
+ Counter.CountPerFeature('f2', 456, 222)
+ ]
+ self._pop_called = 0
+ def pop_all():
+ self._pop_called += 1
+ return counters
+ counter.pop_all = pop_all
+
+ api = mocker.Mock(spec=ImpressionsAPI)
+ self.flushed = None
+ self.called = 0
+ async def flush_counters(imps):
+ self.called += 1
+ self.flushed = imps
+ return HttpResponse(200, '', {})
+ api.flush_counters = flush_counters
+
+ impressions_sync.ImpressionsCountSyncTaskAsync._PERIOD = 1
+ impression_synchronizer = ImpressionsCountSynchronizerAsync(api, counter)
+ task = impressions_sync.ImpressionsCountSyncTaskAsync(
+ impression_synchronizer.synchronize_counters
+ )
+ task.start()
+ await asyncio.sleep(2)
+ assert task.is_running()
+
+ assert self._pop_called == 1
+ assert self.flushed == counters
+
+ calls_now = self.called
+ await task.stop()
+ assert self.called > calls_now
diff --git a/tests/tasks/test_segment_sync.py b/tests/tasks/test_segment_sync.py
index 025bca79..cc701e52 100644
--- a/tests/tasks/test_segment_sync.py
+++ b/tests/tasks/test_segment_sync.py
@@ -2,14 +2,17 @@
import threading
import time
-from splitio.api import APIException
+import pytest
+
+from splitio.api.commons import FetchOptions
from splitio.tasks import segment_sync
-from splitio.storage import SegmentStorage, SplitStorage
+from splitio.storage import SegmentStorage, SplitStorage, RuleBasedSegmentsStorage
from splitio.models.splits import Split
from splitio.models.segments import Segment
from splitio.models.grammar.condition import Condition
from splitio.models.grammar.matchers import UserDefinedSegmentMatcher
-
+from splitio.sync.segment import SegmentSynchronizer, SegmentSynchronizerAsync
+from splitio.optional.loaders import asyncio
class SegmentSynchronizationTests(object):
"""Split synchronization task test cases."""
@@ -18,10 +21,13 @@ def test_normal_operation(self, mocker):
"""Test the normal operation flow."""
split_storage = mocker.Mock(spec=SplitStorage)
split_storage.get_segment_names.return_value = ['segmentA', 'segmentB', 'segmentC']
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ rbs_storage.get_segment_names.return_value = []
# Setup a mocked segment storage whose changenumber returns -1 on first fetch and
# 123 afterwards.
storage = mocker.Mock(spec=SegmentStorage)
+
def change_number_mock(segment_name):
if segment_name == 'segmentA' and change_number_mock._count_a == 0:
change_number_mock._count_a = 1
@@ -39,49 +45,53 @@ def change_number_mock(segment_name):
storage.get_change_number.side_effect = change_number_mock
# Setup a mocked segment api to return segments mentioned before.
- def fetch_segment_mock(segment_name, change_number):
+ def fetch_segment_mock(segment_name, change_number, fetch_options):
if segment_name == 'segmentA' and fetch_segment_mock._count_a == 0:
fetch_segment_mock._count_a = 1
- return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [], 'since': -1, 'till': 123}
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
if segment_name == 'segmentB' and fetch_segment_mock._count_b == 0:
fetch_segment_mock._count_b = 1
- return {'name': 'segmentB', 'added': ['key4', 'key5', 'key6'], 'removed': [], 'since': -1, 'till': 123}
+ return {'name': 'segmentB', 'added': ['key4', 'key5', 'key6'], 'removed': [],
+ 'since': -1, 'till': 123}
if segment_name == 'segmentC' and fetch_segment_mock._count_c == 0:
fetch_segment_mock._count_c = 1
- return {'name': 'segmentC', 'added': ['key7', 'key8', 'key9'], 'removed': [], 'since': -1, 'till': 123}
+ return {'name': 'segmentC', 'added': ['key7', 'key8', 'key9'], 'removed': [],
+ 'since': -1, 'till': 123}
return {'added': [], 'removed': [], 'since': 123, 'till': 123}
fetch_segment_mock._count_a = 0
fetch_segment_mock._count_b = 0
fetch_segment_mock._count_c = 0
api = mocker.Mock()
+ fetch_options = FetchOptions(True, None, None, None, None)
api.fetch_segment.side_effect = fetch_segment_mock
- segment_ready_event = threading.Event()
- task = segment_sync.SegmentSynchronizationTask(api, storage, split_storage, 1, segment_ready_event)
+ segments_synchronizer = SegmentSynchronizer(api, split_storage, storage, rbs_storage)
+ task = segment_sync.SegmentSynchronizationTask(segments_synchronizer.synchronize_segments,
+ 0.5)
task.start()
+ time.sleep(0.7)
- segment_ready_event.wait(5)
assert task.is_running()
stop_event = threading.Event()
task.stop(stop_event)
stop_event.wait()
- assert segment_ready_event.is_set()
assert not task.is_running()
api_calls = [call for call in api.fetch_segment.mock_calls]
- assert mocker.call('segmentA', -1) in api_calls
- assert mocker.call('segmentB', -1) in api_calls
- assert mocker.call('segmentC', -1) in api_calls
- assert mocker.call('segmentA', 123) in api_calls
- assert mocker.call('segmentB', 123) in api_calls
- assert mocker.call('segmentC', 123) in api_calls
+ assert mocker.call('segmentA', -1, fetch_options) in api_calls
+ assert mocker.call('segmentB', -1, fetch_options) in api_calls
+ assert mocker.call('segmentC', -1, fetch_options) in api_calls
+ assert mocker.call('segmentA', 123, fetch_options) in api_calls
+ assert mocker.call('segmentB', 123, fetch_options) in api_calls
+ assert mocker.call('segmentC', 123, fetch_options) in api_calls
segment_put_calls = storage.put.mock_calls
segments_to_validate = set(['segmentA', 'segmentB', 'segmentC'])
for call in segment_put_calls:
- func_name, positional_args, keyword_args = call
+ _, positional_args, _ = call
segment = positional_args[0]
assert isinstance(segment, Segment)
assert segment.name in segments_to_validate
@@ -89,4 +99,276 @@ def fetch_segment_mock(segment_name, change_number):
def test_that_errors_dont_stop_task(self, mocker):
"""Test that if fetching segments fails at some_point, the task will continue running."""
- # TODO!
+ split_storage = mocker.Mock(spec=SplitStorage)
+ split_storage.get_segment_names.return_value = ['segmentA', 'segmentB', 'segmentC']
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ rbs_storage.get_segment_names.return_value = []
+
+ # Setup a mocked segment storage whose changenumber returns -1 on first fetch and
+ # 123 afterwards.
+ storage = mocker.Mock(spec=SegmentStorage)
+
+ def change_number_mock(segment_name):
+ if segment_name == 'segmentA' and change_number_mock._count_a == 0:
+ change_number_mock._count_a = 1
+ return -1
+ if segment_name == 'segmentB' and change_number_mock._count_b == 0:
+ change_number_mock._count_b = 1
+ return -1
+ if segment_name == 'segmentC' and change_number_mock._count_c == 0:
+ change_number_mock._count_c = 1
+ return -1
+ return 123
+ change_number_mock._count_a = 0
+ change_number_mock._count_b = 0
+ change_number_mock._count_c = 0
+ storage.get_change_number.side_effect = change_number_mock
+
+ # Setup a mocked segment api to return segments mentioned before.
+ def fetch_segment_mock(segment_name, change_number, fetch_options):
+ if segment_name == 'segmentA' and fetch_segment_mock._count_a == 0:
+ fetch_segment_mock._count_a = 1
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentB' and fetch_segment_mock._count_b == 0:
+ fetch_segment_mock._count_b = 1
+ raise Exception("some exception")
+ if segment_name == 'segmentC' and fetch_segment_mock._count_c == 0:
+ fetch_segment_mock._count_c = 1
+ return {'name': 'segmentC', 'added': ['key7', 'key8', 'key9'], 'removed': [],
+ 'since': -1, 'till': 123}
+ return {'added': [], 'removed': [], 'since': 123, 'till': 123}
+ fetch_segment_mock._count_a = 0
+ fetch_segment_mock._count_b = 0
+ fetch_segment_mock._count_c = 0
+
+ api = mocker.Mock()
+ fetch_options = FetchOptions(True, None, None, None, None)
+ api.fetch_segment.side_effect = fetch_segment_mock
+
+ segments_synchronizer = SegmentSynchronizer(api, split_storage, storage, rbs_storage)
+ task = segment_sync.SegmentSynchronizationTask(segments_synchronizer.synchronize_segments,
+ 0.5)
+ task.start()
+ time.sleep(0.7)
+
+ assert task.is_running()
+
+ stop_event = threading.Event()
+ task.stop(stop_event)
+ stop_event.wait()
+ assert not task.is_running()
+
+ api_calls = [call for call in api.fetch_segment.mock_calls]
+ assert mocker.call('segmentA', -1, fetch_options) in api_calls
+ assert mocker.call('segmentB', -1, fetch_options) in api_calls
+ assert mocker.call('segmentC', -1, fetch_options) in api_calls
+ assert mocker.call('segmentA', 123, fetch_options) in api_calls
+ assert mocker.call('segmentC', 123, fetch_options) in api_calls
+
+ segment_put_calls = storage.put.mock_calls
+ segments_to_validate = set(['segmentA', 'segmentB', 'segmentC'])
+ for call in segment_put_calls:
+ _, positional_args, _ = call
+ segment = positional_args[0]
+ assert isinstance(segment, Segment)
+ assert segment.name in segments_to_validate
+ segments_to_validate.remove(segment.name)
+
+
+class SegmentSynchronizationAsyncTests(object):
+ """Split synchronization async task test cases."""
+
+ @pytest.mark.asyncio
+ async def test_normal_operation(self, mocker):
+ """Test the normal operation flow."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ async def get_segment_names():
+ return ['segmentA', 'segmentB', 'segmentC']
+ split_storage.get_segment_names = get_segment_names
+
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ async def get_segment_names_rbs():
+ return []
+ rbs_storage.get_segment_names = get_segment_names_rbs
+
+ # Setup a mocked segment storage whose changenumber returns -1 on first fetch and
+ # 123 afterwards.
+ storage = mocker.Mock(spec=SegmentStorage)
+
+ async def change_number_mock(segment_name):
+ if segment_name == 'segmentA' and change_number_mock._count_a == 0:
+ change_number_mock._count_a = 1
+ return -1
+ if segment_name == 'segmentB' and change_number_mock._count_b == 0:
+ change_number_mock._count_b = 1
+ return -1
+ if segment_name == 'segmentC' and change_number_mock._count_c == 0:
+ change_number_mock._count_c = 1
+ return -1
+ return 123
+ change_number_mock._count_a = 0
+ change_number_mock._count_b = 0
+ change_number_mock._count_c = 0
+ storage.get_change_number = change_number_mock
+
+ self.segments = []
+ async def put(segment):
+ self.segments.append(segment)
+ storage.put = put
+
+ async def update(*arg):
+ pass
+ storage.update = update
+
+ # Setup a mocked segment api to return segments mentioned before.
+ self.segment_name = []
+ self.change_number = []
+ self.fetch_options = []
+ async def fetch_segment_mock(segment_name, change_number, fetch_options):
+ self.segment_name.append(segment_name)
+ self.change_number.append(change_number)
+ self.fetch_options.append(fetch_options)
+ if segment_name == 'segmentA' and fetch_segment_mock._count_a == 0:
+ fetch_segment_mock._count_a = 1
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentB' and fetch_segment_mock._count_b == 0:
+ fetch_segment_mock._count_b = 1
+ return {'name': 'segmentB', 'added': ['key4', 'key5', 'key6'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentC' and fetch_segment_mock._count_c == 0:
+ fetch_segment_mock._count_c = 1
+ return {'name': 'segmentC', 'added': ['key7', 'key8', 'key9'], 'removed': [],
+ 'since': -1, 'till': 123}
+ return {'added': [], 'removed': [], 'since': 123, 'till': 123}
+ fetch_segment_mock._count_a = 0
+ fetch_segment_mock._count_b = 0
+ fetch_segment_mock._count_c = 0
+
+ api = mocker.Mock()
+ fetch_options = FetchOptions(True, None, None, None, None)
+ api.fetch_segment = fetch_segment_mock
+
+ segments_synchronizer = SegmentSynchronizerAsync(api, split_storage, storage, rbs_storage)
+ task = segment_sync.SegmentSynchronizationTaskAsync(segments_synchronizer.synchronize_segments,
+ 0.5)
+ task.start()
+ await asyncio.sleep(0.7)
+ assert task.is_running()
+
+ await task.stop()
+ assert not task.is_running()
+
+ api_calls = []
+ for i in range(6):
+ api_calls.append((self.segment_name[i], self.change_number[i], self.fetch_options[i]))
+
+ assert ('segmentA', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentA', 123, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentB', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentB', 123, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentC', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentC', 123, FetchOptions(True, None, None, None, None)) in api_calls
+
+ segments_to_validate = set(['segmentA', 'segmentB', 'segmentC'])
+ for segment in self.segments:
+ assert isinstance(segment, Segment)
+ assert segment.name in segments_to_validate
+ segments_to_validate.remove(segment.name)
+
+ @pytest.mark.asyncio
+ async def test_that_errors_dont_stop_task(self, mocker):
+ """Test that if fetching segments fails at some_point, the task will continue running."""
+ split_storage = mocker.Mock(spec=SplitStorage)
+ async def get_segment_names():
+ return ['segmentA', 'segmentB', 'segmentC']
+ split_storage.get_segment_names = get_segment_names
+
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ async def get_segment_names_rbs():
+ return []
+ rbs_storage.get_segment_names = get_segment_names_rbs
+
+ # Setup a mocked segment storage whose changenumber returns -1 on first fetch and
+ # 123 afterwards.
+ storage = mocker.Mock(spec=SegmentStorage)
+
+ async def change_number_mock(segment_name):
+ if segment_name == 'segmentA' and change_number_mock._count_a == 0:
+ change_number_mock._count_a = 1
+ return -1
+ if segment_name == 'segmentB' and change_number_mock._count_b == 0:
+ change_number_mock._count_b = 1
+ return -1
+ if segment_name == 'segmentC' and change_number_mock._count_c == 0:
+ change_number_mock._count_c = 1
+ return -1
+ return 123
+ change_number_mock._count_a = 0
+ change_number_mock._count_b = 0
+ change_number_mock._count_c = 0
+ storage.get_change_number = change_number_mock
+
+ self.segments = []
+ async def put(segment):
+ self.segments.append(segment)
+ storage.put = put
+
+ async def update(*arg):
+ pass
+ storage.update = update
+
+ # Setup a mocked segment api to return segments mentioned before.
+ self.segment_name = []
+ self.change_number = []
+ self.fetch_options = []
+ async def fetch_segment_mock(segment_name, change_number, fetch_options):
+ self.segment_name.append(segment_name)
+ self.change_number.append(change_number)
+ self.fetch_options.append(fetch_options)
+ if segment_name == 'segmentA' and fetch_segment_mock._count_a == 0:
+ fetch_segment_mock._count_a = 1
+ return {'name': 'segmentA', 'added': ['key1', 'key2', 'key3'], 'removed': [],
+ 'since': -1, 'till': 123}
+ if segment_name == 'segmentB' and fetch_segment_mock._count_b == 0:
+ fetch_segment_mock._count_b = 1
+ raise Exception("some exception")
+ if segment_name == 'segmentC' and fetch_segment_mock._count_c == 0:
+ fetch_segment_mock._count_c = 1
+ return {'name': 'segmentC', 'added': ['key7', 'key8', 'key9'], 'removed': [],
+ 'since': -1, 'till': 123}
+ return {'added': [], 'removed': [], 'since': 123, 'till': 123}
+ fetch_segment_mock._count_a = 0
+ fetch_segment_mock._count_b = 0
+ fetch_segment_mock._count_c = 0
+
+ api = mocker.Mock()
+ fetch_options = FetchOptions(True, None, None, None, None)
+ api.fetch_segment = fetch_segment_mock
+
+ segments_synchronizer = SegmentSynchronizerAsync(api, split_storage, storage, rbs_storage)
+ task = segment_sync.SegmentSynchronizationTaskAsync(segments_synchronizer.synchronize_segments,
+ 0.5)
+ task.start()
+ await asyncio.sleep(0.7)
+ assert task.is_running()
+
+ await task.stop()
+ assert not task.is_running()
+
+ api_calls = []
+ for i in range(5):
+ api_calls.append((self.segment_name[i], self.change_number[i], self.fetch_options[i]))
+
+ assert ('segmentA', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentA', 123, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentB', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentC', -1, FetchOptions(True, None, None, None, None)) in api_calls
+ assert ('segmentC', 123, FetchOptions(True, None, None, None, None)) in api_calls
+
+ segments_to_validate = set(['segmentA', 'segmentB', 'segmentC'])
+ for segment in self.segments:
+ assert isinstance(segment, Segment)
+ assert segment.name in segments_to_validate
+ segments_to_validate.remove(segment.name)
diff --git a/tests/tasks/test_split_sync.py b/tests/tasks/test_split_sync.py
index 31f70a02..c9a0c692 100644
--- a/tests/tasks/test_split_sync.py
+++ b/tests/tasks/test_split_sync.py
@@ -1,11 +1,50 @@
"""Split syncrhonization task test module."""
-
import threading
import time
+import pytest
+
from splitio.api import APIException
+from splitio.api.commons import FetchOptions
from splitio.tasks import split_sync
-from splitio.storage import SplitStorage
+from splitio.storage import SplitStorage, RuleBasedSegmentsStorage
from splitio.models.splits import Split
+from splitio.sync.split import SplitSynchronizer, SplitSynchronizerAsync
+from splitio.optional.loaders import asyncio
+
+splits = [{
+ 'changeNumber': 123,
+ 'trafficTypeName': 'user',
+ 'name': 'some_name',
+ 'trafficAllocation': 100,
+ 'trafficAllocationSeed': 123456,
+ 'seed': 321654,
+ 'status': 'ACTIVE',
+ 'killed': False,
+ 'defaultTreatment': 'off',
+ 'algo': 2,
+ 'conditions': [
+ {
+ 'partitions': [
+ {'treatment': 'on', 'size': 50},
+ {'treatment': 'off', 'size': 50}
+ ],
+ 'contitionType': 'WHITELIST',
+ 'label': 'some_label',
+ 'matcherGroup': {
+ 'matchers': [
+ {
+ 'matcherType': 'WHITELIST',
+ 'whitelistMatcherData': {
+ 'whitelist': ['k1', 'k2', 'k3']
+ },
+ 'negate': False,
+ }
+ ],
+ 'combiner': 'AND'
+ }
+ }
+ ]
+}]
class SplitSynchronizationTests(object):
@@ -14,6 +53,8 @@ class SplitSynchronizationTests(object):
def test_normal_operation(self, mocker):
"""Test the normal operation flow."""
storage = mocker.Mock(spec=SplitStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+
def change_number_mock():
change_number_mock._calls += 1
if change_number_mock._calls == 1:
@@ -22,98 +63,193 @@ def change_number_mock():
change_number_mock._calls = 0
storage.get_change_number.side_effect = change_number_mock
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ self.clear = False
+ def clear():
+ self.clear = True
+ storage.clear = clear
+ rbs_storage.clear = clear
+
api = mocker.Mock()
- splits = [{
- 'changeNumber': 123,
- 'trafficTypeName': 'user',
- 'name': 'some_name',
- 'trafficAllocation': 100,
- 'trafficAllocationSeed': 123456,
- 'seed': 321654,
- 'status': 'ACTIVE',
- 'killed': False,
- 'defaultTreatment': 'off',
- 'algo': 2,
- 'conditions': [
- {
- 'partitions': [
- {'treatment': 'on', 'size': 50},
- {'treatment': 'off', 'size': 50}
- ],
- 'contitionType': 'WHITELIST',
- 'label': 'some_label',
- 'matcherGroup': {
- 'matchers': [
- {
- 'matcherType': 'WHITELIST',
- 'whitelistMatcherData': {
- 'whitelist': ['k1', 'k2', 'k3']
- },
- 'negate': False,
- }
- ],
- 'combiner': 'AND'
- }
- }
- ]
- }]
def get_changes(*args, **kwargs):
get_changes.called += 1
if get_changes.called == 1:
- return {
- 'splits': splits,
- 'since': -1,
- 'till': 123
+ return {'ff': {
+ 'd': splits,
+ 's': -1,
+ 't': 123}, 'rbs': {'d': [], 't': -1, 's': -1}
}
else:
- return {
- 'splits': [],
- 'since': 123,
- 'till': 123
- }
+ return {'ff': {'d': [],'s': 123, 't': 123},
+ 'rbs': {'d': [], 't': -1, 's': -1}}
get_changes.called = 0
+ fetch_options = FetchOptions(True)
api.fetch_splits.side_effect = get_changes
- splits_ready_event = threading.Event()
- task = split_sync.SplitSynchronizationTask(api, storage, 1, splits_ready_event)
+ split_synchronizer = SplitSynchronizer(api, storage, rbs_storage)
+ task = split_sync.SplitSynchronizationTask(split_synchronizer.synchronize_splits, 0.5)
task.start()
- splits_ready_event.wait(5)
+ time.sleep(0.7)
assert task.is_running()
stop_event = threading.Event()
task.stop(stop_event)
stop_event.wait()
- assert splits_ready_event.is_set()
assert not task.is_running()
- api_calls = api.fetch_splits.mock_calls
- assert mocker.call(-1) in api.fetch_splits.mock_calls
- assert mocker.call(123) in api.fetch_splits.mock_calls
+ assert api.fetch_splits.mock_calls[0][1][0] == -1
+ assert api.fetch_splits.mock_calls[0][1][2].cache_control_headers == True
+ assert api.fetch_splits.mock_calls[1][1][0] == 123
+ assert api.fetch_splits.mock_calls[1][1][2].cache_control_headers == True
- inserted_split = storage.put.mock_calls[0][1][0]
+ inserted_split = storage.update.mock_calls[0][1][0][0]
assert isinstance(inserted_split, Split)
assert inserted_split.name == 'some_name'
def test_that_errors_dont_stop_task(self, mocker):
"""Test that if fetching splits fails at some_point, the task will continue running."""
storage = mocker.Mock(spec=SplitStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
api = mocker.Mock()
+
def run(x):
- run._calls +=1
+ run._calls += 1
if run._calls == 1:
- return {'splits': [], 'since': -1, 'till': -1}
+ return {'ff': {'d': [],'s': -1, 't': -1},
+ 'rbs': {'d': [], 't': -1, 's': -1}}
if run._calls == 2:
- return {'splits': [], 'since': -1, 'till': -1}
+ return {'ff': {'d': [],'s': -1, 't': -1},
+ 'rbs': {'d': [], 't': -1, 's': -1}}
raise APIException("something broke")
run._calls = 0
api.fetch_splits.side_effect = run
storage.get_change_number.return_value = -1
- splits_ready_event = threading.Event()
- task = split_sync.SplitSynchronizationTask(api, storage, 0.5, splits_ready_event)
+ split_synchronizer = SplitSynchronizer(api, storage, rbs_storage)
+ task = split_sync.SplitSynchronizationTask(split_synchronizer.synchronize_splits, 0.5)
task.start()
- splits_ready_event.wait(5)
+ time.sleep(0.1)
assert task.is_running()
time.sleep(1)
assert task.is_running()
task.stop()
+
+
+class SplitSynchronizationAsyncTests(object):
+ """Split synchronization task async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_normal_operation(self, mocker):
+ """Test the normal operation flow."""
+ storage = mocker.Mock(spec=SplitStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+
+ async def change_number_mock():
+ change_number_mock._calls += 1
+ if change_number_mock._calls == 1:
+ return -1
+ return 123
+ change_number_mock._calls = 0
+ storage.get_change_number = change_number_mock
+ async def rb_change_number_mock():
+ return -1
+ rbs_storage.get_change_number = rb_change_number_mock
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+ storage.flag_set_filter.sorted_flag_sets = []
+
+ async def set_change_number(*_):
+ pass
+ change_number_mock._calls = 0
+ storage.set_change_number = set_change_number
+
+ self.clear = False
+ async def clear():
+ self.clear = True
+ storage.clear = clear
+ rbs_storage.clear = clear
+
+ api = mocker.Mock()
+ self.change_number = []
+ self.fetch_options = []
+ async def get_changes(change_number, rb_change_number, fetch_options):
+ self.change_number.append(change_number)
+ self.fetch_options.append(fetch_options)
+ get_changes.called += 1
+ if get_changes.called == 1:
+ return {'ff': {'d': splits,'s': -1, 't': 123},
+ 'rbs': {'d': [], 't': -1, 's': -1}}
+ else:
+ return {'ff': {'d': [],'s': 123, 't': 123},
+ 'rbs': {'d': [], 't': -1, 's': -1}}
+ api.fetch_splits = get_changes
+ get_changes.called = 0
+ self.inserted_split = None
+ async def update(split, deleted, change_number):
+ if len(split) > 0:
+ self.inserted_split = split
+ storage.update = update
+ async def rbs_update(split, deleted, change_number):
+ pass
+ rbs_storage.update = rbs_update
+
+ fetch_options = FetchOptions(True)
+ split_synchronizer = SplitSynchronizerAsync(api, storage, rbs_storage)
+ task = split_sync.SplitSynchronizationTaskAsync(split_synchronizer.synchronize_splits, 0.5)
+ task.start()
+ await asyncio.sleep(2)
+ assert task.is_running()
+ await task.stop()
+ assert not task.is_running()
+ assert (self.change_number[0], self.fetch_options[0].cache_control_headers) == (-1, fetch_options.cache_control_headers)
+ assert (self.change_number[1], self.fetch_options[1].cache_control_headers, self.fetch_options[1].change_number) == (123, fetch_options.cache_control_headers, fetch_options.change_number)
+ assert isinstance(self.inserted_split[0], Split)
+ assert self.inserted_split[0].name == 'some_name'
+
+ @pytest.mark.asyncio
+ async def test_that_errors_dont_stop_task(self, mocker):
+ """Test that if fetching splits fails at some_point, the task will continue running."""
+ storage = mocker.Mock(spec=SplitStorage)
+ rbs_storage = mocker.Mock(spec=RuleBasedSegmentsStorage)
+ api = mocker.Mock()
+
+ async def run(x):
+ run._calls += 1
+ if run._calls == 1:
+ return {'ff': {'d': [],'s': -1, 't': -1},
+ 'rbs': {'d': [], 't': -1, 's': -1}}
+ if run._calls == 2:
+ return {'ff': {'d': [],'s': -1, 't': -1},
+ 'rbs': {'d': [], 't': -1, 's': -1}}
+ raise APIException("something broke")
+ run._calls = 0
+ api.fetch_splits = run
+
+ async def get_change_number():
+ return -1
+ storage.get_change_number = get_change_number
+
+ split_synchronizer = SplitSynchronizerAsync(api, storage, rbs_storage)
+ task = split_sync.SplitSynchronizationTaskAsync(split_synchronizer.synchronize_splits, 0.5)
+ task.start()
+ await asyncio.sleep(0.1)
+ assert task.is_running()
+ await asyncio.sleep(1)
+ assert task.is_running()
+ await task.stop()
diff --git a/tests/tasks/test_telemetry_sync.py b/tests/tasks/test_telemetry_sync.py
index ab67463d..21a887d0 100644
--- a/tests/tasks/test_telemetry_sync.py
+++ b/tests/tasks/test_telemetry_sync.py
@@ -1,57 +1,67 @@
-"""Telemetry synchronization task unit test module."""
-#pylint: disable=no-self-use
-import time
+"""Impressions synchronization task test module."""
+import pytest
import threading
-from splitio.storage import TelemetryStorage
-from splitio.api.telemetry import TelemetryAPI
-from splitio.tasks.telemetry_sync import TelemetrySynchronizationTask
+import time
+from splitio.api.client import HttpResponse
+from splitio.tasks.telemetry_sync import TelemetrySyncTask, TelemetrySyncTaskAsync
+from splitio.api.telemetry import TelemetryAPI, TelemetryAPIAsync
+from splitio.sync.telemetry import TelemetrySynchronizer, TelemetrySynchronizerAsync, InMemoryTelemetrySubmitter, InMemoryTelemetrySubmitterAsync
+from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemoryTelemetryStorageAsync
+from splitio.engine.telemetry import TelemetryStorageConsumer, TelemetryStorageConsumerAsync
+from splitio.optional.loaders import asyncio
-class TelemetrySyncTests(object): #pylint: disable=too-few-public-methods
- """Impressions Syncrhonization task test cases."""
+class TelemetrySyncTaskTests(object):
+ """Unique Keys Syncrhonization task test cases."""
- def test_normal_operation(self, mocker):
- """Test normal behaviour of sync task."""
+ def test_record_stats(self, mocker):
+ """Test that the task works properly under normal circumstances."""
api = mocker.Mock(spec=TelemetryAPI)
- storage = mocker.Mock(spec=TelemetryStorage)
- storage.pop_latencies.return_value = {
- 'some_latency1': [1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 'some_latency2': [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- }
- storage.pop_gauges.return_value = {
- 'gauge1': 123,
- 'gauge2': 456
- }
- storage.pop_counters.return_value = {
- 'counter1': 1,
- 'counter2': 5
- }
- task = TelemetrySynchronizationTask(api, storage, 1)
+ api.record_stats.return_value = HttpResponse(200, '', {})
+ telemetry_storage = InMemoryTelemetryStorage()
+ telemetry_consumer = TelemetryStorageConsumer(telemetry_storage)
+ telemetry_submitter = InMemoryTelemetrySubmitter(telemetry_consumer, mocker.Mock(), mocker.Mock(), api)
+ def _build_stats():
+ return {}
+ telemetry_submitter._build_stats = _build_stats
+
+ telemetry_synchronizer = TelemetrySynchronizer(telemetry_submitter)
+ task = TelemetrySyncTask(telemetry_synchronizer.synchronize_stats, 1)
task.start()
time.sleep(2)
assert task.is_running()
-
+ assert len(api.record_stats.mock_calls) >= 1
stop_event = threading.Event()
task.stop(stop_event)
- stop_event.wait()
-
+ stop_event.wait(5)
assert stop_event.is_set()
+
+
+class TelemetrySyncTaskAsyncTests(object):
+ """Unique Keys Syncrhonization task test cases."""
+
+ @pytest.mark.asyncio
+ async def test_record_stats(self, mocker):
+ """Test that the task works properly under normal circumstances."""
+ api = mocker.Mock(spec=TelemetryAPIAsync)
+ self.called = False
+ async def record_stats(stats):
+ self.called = True
+ return HttpResponse(200, '', {})
+ api.record_stats = record_stats
+
+ telemetry_storage = await InMemoryTelemetryStorageAsync.create()
+ telemetry_consumer = TelemetryStorageConsumerAsync(telemetry_storage)
+ telemetry_submitter = InMemoryTelemetrySubmitterAsync(telemetry_consumer, mocker.Mock(), mocker.Mock(), api)
+ async def _build_stats():
+ return {}
+ telemetry_submitter._build_stats = _build_stats
+
+ telemetry_synchronizer = TelemetrySynchronizerAsync(telemetry_submitter)
+ task = TelemetrySyncTaskAsync(telemetry_synchronizer.synchronize_stats, 1)
+ task.start()
+ await asyncio.sleep(2)
+ assert task.is_running()
+ assert self.called
+ await task.stop()
assert not task.is_running()
- assert mocker.call() in storage.pop_latencies.mock_calls
- assert mocker.call() in storage.pop_counters.mock_calls
- assert mocker.call() in storage.pop_gauges.mock_calls
-
- assert mocker.call({
- 'some_latency1': [1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- 'some_latency2': [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- }) in api.flush_latencies.mock_calls
-
- assert mocker.call({
- 'gauge1': 123,
- 'gauge2': 456
- }) in api.flush_gauges.mock_calls
-
- assert mocker.call({
- 'counter1': 1,
- 'counter2': 5
- }) in api.flush_counters.mock_calls
diff --git a/tests/tasks/test_unique_keys_sync.py b/tests/tasks/test_unique_keys_sync.py
new file mode 100644
index 00000000..d04f9271
--- /dev/null
+++ b/tests/tasks/test_unique_keys_sync.py
@@ -0,0 +1,102 @@
+"""Impressions synchronization task test module."""
+import asyncio
+import threading
+import time
+import pytest
+
+from splitio.api.client import HttpResponse
+from splitio.tasks.unique_keys_sync import UniqueKeysSyncTask, ClearFilterSyncTask,\
+ ClearFilterSyncTaskAsync, UniqueKeysSyncTaskAsync
+from splitio.api.telemetry import TelemetryAPI
+from splitio.sync.unique_keys import UniqueKeysSynchronizer, ClearFilterSynchronizer,\
+ UniqueKeysSynchronizerAsync, ClearFilterSynchronizerAsync
+from splitio.engine.impressions.unique_keys_tracker import UniqueKeysTracker, UniqueKeysTrackerAsync
+
+
+class UniqueKeysSyncTests(object):
+ """Unique Keys Syncrhonization task test cases."""
+
+ def test_normal_operation(self, mocker):
+ """Test that the task works properly under normal circumstances."""
+ api = mocker.Mock(spec=TelemetryAPI)
+ api.record_unique_keys.return_value = HttpResponse(200, '', {})
+
+ unique_keys_tracker = UniqueKeysTracker()
+ unique_keys_tracker.track("key1", "split1")
+ unique_keys_tracker.track("key2", "split1")
+
+ unique_keys_sync = UniqueKeysSynchronizer(mocker.Mock(), unique_keys_tracker)
+ task = UniqueKeysSyncTask(unique_keys_sync.send_all, 1)
+ task.start()
+ time.sleep(2)
+ assert task.is_running()
+ assert api.record_unique_keys.mock_calls == mocker.call()
+ stop_event = threading.Event()
+ task.stop(stop_event)
+ stop_event.wait(5)
+ assert stop_event.is_set()
+
+class ClearFilterSyncTests(object):
+ """Clear Filter Syncrhonization task test cases."""
+
+ def test_normal_operation(self, mocker):
+ """Test that the task works properly under normal circumstances."""
+
+ unique_keys_tracker = UniqueKeysTracker()
+ unique_keys_tracker.track("key1", "split1")
+ unique_keys_tracker.track("key2", "split1")
+
+ clear_filter_sync = ClearFilterSynchronizer(unique_keys_tracker)
+ task = ClearFilterSyncTask(clear_filter_sync.clear_all, 1)
+ task.start()
+ time.sleep(2)
+ assert task.is_running()
+ assert not unique_keys_tracker._filter.contains("split1key1")
+ assert not unique_keys_tracker._filter.contains("split1key2")
+ stop_event = threading.Event()
+ task.stop(stop_event)
+ stop_event.wait(5)
+ assert stop_event.is_set()
+
+class UniqueKeysSyncAsyncTests(object):
+ """Unique Keys Syncrhonization task test cases."""
+
+ @pytest.mark.asyncio
+ async def test_normal_operation(self, mocker):
+ """Test that the task works properly under normal circumstances."""
+ api = mocker.Mock(spec=TelemetryAPI)
+ api.record_unique_keys.return_value = HttpResponse(200, '', {})
+
+ unique_keys_tracker = UniqueKeysTrackerAsync()
+ await unique_keys_tracker.track("key1", "split1")
+ await unique_keys_tracker.track("key2", "split1")
+
+ unique_keys_sync = UniqueKeysSynchronizerAsync(mocker.Mock(), unique_keys_tracker)
+ task = UniqueKeysSyncTaskAsync(unique_keys_sync.send_all, 1)
+ task.start()
+ await asyncio.sleep(2)
+ assert task.is_running()
+ assert api.record_unique_keys.mock_calls == mocker.call()
+ await task.stop()
+ assert not task.is_running()
+
+class ClearFilterSyncTests(object):
+ """Clear Filter Syncrhonization task test cases."""
+
+ @pytest.mark.asyncio
+ async def test_normal_operation(self, mocker):
+ """Test that the task works properly under normal circumstances."""
+
+ unique_keys_tracker = UniqueKeysTrackerAsync()
+ await unique_keys_tracker.track("key1", "split1")
+ await unique_keys_tracker.track("key2", "split1")
+
+ clear_filter_sync = ClearFilterSynchronizerAsync(unique_keys_tracker)
+ task = ClearFilterSyncTaskAsync(clear_filter_sync.clear_all, 1)
+ task.start()
+ await asyncio.sleep(2)
+ assert task.is_running()
+ assert not unique_keys_tracker._filter.contains("split1key1")
+ assert not unique_keys_tracker._filter.contains("split1key2")
+ await task.stop()
+ assert not task.is_running()
diff --git a/tests/tasks/test_uwsgi_wrappers.py b/tests/tasks/test_uwsgi_wrappers.py
deleted file mode 100644
index 78cf0960..00000000
--- a/tests/tasks/test_uwsgi_wrappers.py
+++ /dev/null
@@ -1,131 +0,0 @@
-"""UWSGI Task wrappers test module."""
-#pylint: disable=no-self-use,protected-access
-from splitio.storage import SplitStorage
-from splitio.tasks.split_sync import SplitSynchronizationTask
-from splitio.tasks.impressions_sync import ImpressionsSyncTask
-from splitio.tasks.events_sync import EventsSyncTask
-from splitio.tasks.telemetry_sync import TelemetrySynchronizationTask
-from splitio.tasks.util.workerpool import WorkerPool
-from splitio.storage.uwsgi import UWSGISplitStorage
-from splitio.tasks.uwsgi_wrappers import uwsgi_update_splits, uwsgi_update_segments, \
- uwsgi_report_events, uwsgi_report_impressions, uwsgi_report_telemetry
-
-
-class NonCatchableException(BaseException):
- """Exception to be used to stop sync task's infinite loop."""
-
- pass
-
-
-class TaskWrappersTests(object):
- """Task wrappers task test cases."""
-
- def test_update_splits(self, mocker):
- """Test split sync task wrapper."""
- data = {'executions': 0}
- def _update_splits_side_effect(*_, **__):
- data['executions'] += 1
- if data['executions'] > 1:
- raise NonCatchableException('asd')
-
- stmock = mocker.Mock(spec=SplitSynchronizationTask)
- stmock._update_splits.side_effect = _update_splits_side_effect
- stmock_class = mocker.Mock(spec=SplitSynchronizationTask)
- stmock_class.return_value = stmock
- mocker.patch('splitio.tasks.uwsgi_wrappers.SplitSynchronizationTask', new=stmock_class)
-
- try:
- uwsgi_update_splits({'apikey' : 'asd', 'featuresRefreshRate': 1})
- except NonCatchableException:
- # Make sure that the task was called before being forced to stop.
- assert data['executions'] > 1
- assert len(stmock._update_splits.mock_calls) > 1
-
- def test_update_segments(self, mocker):
- """Test split sync task wrapper."""
- data = {'executions': 0}
- def _submit_work(*_, **__):
- data['executions'] += 1
- # we mock 2 segments, so we expect this to be called at least twice before ending.
- if data['executions'] > 2:
- raise NonCatchableException('asd')
-
- wpmock = mocker.Mock(spec=WorkerPool)
- wpmock.submit_work.side_effect = _submit_work
- wpmock_class = mocker.Mock(spec=WorkerPool)
- wpmock_class.return_value = wpmock
- mocker.patch('splitio.tasks.uwsgi_wrappers.workerpool.WorkerPool', new=wpmock_class)
-
- mocked_update_segment = mocker.patch.object(SplitStorage, 'get_segment_names')
- mocked_update_segment.return_value = ['segment1', 'segment2']
- mocked_split_storage_instance = UWSGISplitStorage(True)
- split_storage_mock = mocker.Mock(spec=UWSGISplitStorage)
- split_storage_mock.return_value = mocked_split_storage_instance
-
- mocker.patch('splitio.tasks.uwsgi_wrappers.UWSGISplitStorage', new=split_storage_mock)
-
- try:
- uwsgi_update_segments({'apikey' : 'asd', 'segmentsRefreshRate': 1})
- except NonCatchableException:
- # Make sure that the task was called before being forced to stop.
- assert data['executions'] > 2
- assert len(wpmock.submit_work.mock_calls) > 2
-
- def test_post_impressions(self, mocker):
- """Test split sync task wrapper."""
- data = {'executions': 0}
- def _report_impressions_side_effect(*_, **__):
- data['executions'] += 1
- if data['executions'] > 1:
- raise NonCatchableException('asd')
-
- stmock = mocker.Mock(spec=ImpressionsSyncTask)
- stmock._send_impressions.side_effect = _report_impressions_side_effect
- stmock_class = mocker.Mock(spec=ImpressionsSyncTask)
- stmock_class.return_value = stmock
- mocker.patch('splitio.tasks.uwsgi_wrappers.ImpressionsSyncTask', new=stmock_class)
- try:
- uwsgi_report_impressions({'apikey' : 'asd', 'impressionsRefreshRate': 1})
- except NonCatchableException:
- # Make sure that the task was called before being forced to stop.
- assert data['executions'] > 1
- # TODO: Test impressions flushing.
-
- def test_post_events(self, mocker):
- """Test split sync task wrapper."""
- data = {'executions': 0}
- def _send_events_side_effect(*_, **__):
- data['executions'] += 1
- if data['executions'] > 1:
- raise NonCatchableException('asd')
-
- stmock = mocker.Mock(spec=EventsSyncTask)
- stmock._send_events.side_effect = _send_events_side_effect
- stmock_class = mocker.Mock(spec=EventsSyncTask)
- stmock_class.return_value = stmock
- mocker.patch('splitio.tasks.uwsgi_wrappers.EventsSyncTask', new=stmock_class)
- try:
- uwsgi_report_events({'apikey' : 'asd', 'eventsRefreshRate': 1})
- except NonCatchableException:
- # Make sure that the task was called before being forced to stop.
- assert data['executions'] > 1
- # TODO: Test impressions flushing.
-
- def test_post_telemetry(self, mocker):
- """Test split sync task wrapper."""
- data = {'executions': 0}
- def _flush_telemetry_side_effect(*_, **__):
- data['executions'] += 1
- if data['executions'] > 1:
- raise NonCatchableException('asd')
-
- stmock = mocker.Mock(spec=TelemetrySynchronizationTask)
- stmock._flush_telemetry.side_effect = _flush_telemetry_side_effect
- stmock_class = mocker.Mock(spec=TelemetrySynchronizationTask)
- stmock_class.return_value = stmock
- mocker.patch('splitio.tasks.uwsgi_wrappers.TelemetrySynchronizationTask', new=stmock_class)
- try:
- uwsgi_report_telemetry({'apikey' : 'asd', 'metricsRefreshRate': 1})
- except NonCatchableException:
- # Make sure that the task was called before being forced to stop.
- assert data['executions'] > 1
diff --git a/tests/tasks/util/test_asynctask.py b/tests/tasks/util/test_asynctask.py
index a22b4b45..b587b9c5 100644
--- a/tests/tasks/util/test_asynctask.py
+++ b/tests/tasks/util/test_asynctask.py
@@ -2,8 +2,10 @@
import time
import threading
-from splitio.tasks.util import asynctask
+import pytest
+from splitio.tasks.util import asynctask
+from splitio.optional.loaders import asyncio
class AsyncTaskTests(object):
"""AsyncTask test cases."""
@@ -90,7 +92,7 @@ def raise_exception():
task.stop(on_stop_event)
on_stop_event.wait(1)
- assert on_stop_event.isSet()
+ assert on_stop_event.is_set()
assert on_init.mock_calls == [mocker.call()]
assert on_stop.mock_calls == [mocker.call()]
assert 9 <= len(main_func.mock_calls) <= 10
@@ -111,8 +113,145 @@ def test_force_run(self, mocker):
task.stop(on_stop_event)
on_stop_event.wait(1)
- assert on_stop_event.isSet()
+ assert on_stop_event.is_set()
assert on_init.mock_calls == [mocker.call()]
assert on_stop.mock_calls == [mocker.call()]
assert len(main_func.mock_calls) == 2
assert not task.running()
+
+
+class AsyncTaskAsyncTests(object):
+ """AsyncTask test cases."""
+
+ @pytest.mark.asyncio
+ async def test_default_task_flow(self, mocker):
+ """Test the default execution flow of an asynctask."""
+ self.main_called = 0
+ async def main_func():
+ self.main_called += 1
+
+ self.init_called = 0
+ async def on_init():
+ self.init_called += 1
+
+ self.stop_called = 0
+ async def on_stop():
+ self.stop_called += 1
+
+ task = asynctask.AsyncTaskAsync(main_func, 0.5, on_init, on_stop)
+ task.start()
+ await asyncio.sleep(1)
+ assert task.running()
+ await task.stop(True)
+
+ assert 0 < self.main_called <= 2
+ assert self.init_called == 1
+ assert self.stop_called == 1
+ assert not task.running()
+
+ @pytest.mark.asyncio
+ async def test_main_exception_skips_iteration(self, mocker):
+ """Test that an exception in the main func only skips current iteration."""
+ self.main_called = 0
+ async def raise_exception():
+ self.main_called += 1
+ raise Exception('something')
+ main_func = raise_exception
+
+ self.init_called = 0
+ async def on_init():
+ self.init_called += 1
+
+ self.stop_called = 0
+ async def on_stop():
+ self.stop_called += 1
+
+ task = asynctask.AsyncTaskAsync(main_func, 0.1, on_init, on_stop)
+ task.start()
+ await asyncio.sleep(1)
+ assert task.running()
+ await task.stop(True)
+
+ assert 9 <= self.main_called <= 10
+ assert self.init_called == 1
+ assert self.stop_called == 1
+ assert not task.running()
+
+ @pytest.mark.asyncio
+ async def test_on_init_failure_aborts_task(self, mocker):
+ """Test that if the on_init callback fails, the task never runs."""
+ self.main_called = 0
+ async def main_func():
+ self.main_called += 1
+
+ self.init_called = 0
+ async def on_init():
+ self.init_called += 1
+ raise Exception('something')
+
+ self.stop_called = 0
+ async def on_stop():
+ self.stop_called += 1
+
+ task = asynctask.AsyncTaskAsync(main_func, 0.1, on_init, on_stop)
+ task.start()
+ await asyncio.sleep(0.5)
+ assert not task.running() # Since on_init fails, task never starts
+ await task.stop(True)
+
+ assert self.init_called == 1
+ assert self.stop_called == 1
+ assert self.main_called == 0
+ assert not task.running()
+
+ @pytest.mark.asyncio
+ async def test_on_stop_failure_ends_gacefully(self, mocker):
+ """Test that if the on_init callback fails, the task never runs."""
+ self.main_called = 0
+ async def main_func():
+ self.main_called += 1
+
+ self.init_called = 0
+ async def on_init():
+ self.init_called += 1
+
+ self.stop_called = 0
+ async def on_stop():
+ self.stop_called += 1
+ raise Exception('something')
+
+ task = asynctask.AsyncTaskAsync(main_func, 0.1, on_init, on_stop)
+ task.start()
+ await asyncio.sleep(1)
+ await task.stop(True)
+ assert 9 <= self.main_called <= 10
+ assert self.init_called == 1
+ assert self.stop_called == 1
+
+ @pytest.mark.asyncio
+ async def test_force_run(self, mocker):
+ """Test that if the on_init callback fails, the task never runs."""
+ self.main_called = 0
+ async def main_func():
+ self.main_called += 1
+
+ self.init_called = 0
+ async def on_init():
+ self.init_called += 1
+
+ self.stop_called = 0
+ async def on_stop():
+ self.stop_called += 1
+
+ task = asynctask.AsyncTaskAsync(main_func, 5, on_init, on_stop)
+ task.start()
+ await asyncio.sleep(1)
+ assert task.running()
+ task.force_execution()
+ task.force_execution()
+ await task.stop(True)
+
+ assert self.main_called == 2
+ assert self.init_called == 1
+ assert self.stop_called == 1
+ assert not task.running()
diff --git a/tests/tasks/util/test_workerpool.py b/tests/tasks/util/test_workerpool.py
index ab126a17..2f7a8e71 100644
--- a/tests/tasks/util/test_workerpool.py
+++ b/tests/tasks/util/test_workerpool.py
@@ -2,8 +2,10 @@
# pylint: disable=no-self-use,too-few-public-methods,missing-docstring
import time
import threading
-from splitio.tasks.util import workerpool
+import pytest
+from splitio.tasks.util import workerpool
+from splitio.optional.loaders import asyncio
class WorkerPoolTests(object):
"""Worker pool test cases."""
@@ -71,3 +73,79 @@ def do_work(self, work):
wpool.wait_for_completion()
assert len(worker.worked) == 100
+
+
+class WorkerPoolAsyncTests(object):
+ """Worker pool async test cases."""
+
+ @pytest.mark.asyncio
+ async def test_normal_operation(self, mocker):
+ """Test normal opeation works properly."""
+ self.calls = 0
+ calls = []
+ async def worker_func(num):
+ self.calls += 1
+ calls.append(num)
+
+ wpool = workerpool.WorkerPoolAsync(10, worker_func)
+ wpool.start()
+ jobs = []
+ for num in range(0, 11):
+ jobs.append(str(num))
+
+ task = await wpool.submit_work(jobs)
+ assert await task.await_completion()
+ await wpool.stop()
+ for num in range(0, 11):
+ assert str(num) in calls
+
+ @pytest.mark.asyncio
+ async def test_fail_in_msg_doesnt_break(self):
+ """Test that if a message cannot be parsed it is ignored and others are processed."""
+ class Worker(object): #pylint: disable=
+ def __init__(self):
+ self.worked = set()
+
+ async def do_work(self, work):
+ if work == '55':
+ raise Exception('something')
+ self.worked.add(work)
+
+ worker = Worker()
+ wpool = workerpool.WorkerPoolAsync(50, worker.do_work)
+ wpool.start()
+ jobs = []
+ for num in range(0, 100):
+ jobs.append(str(num))
+ task = await wpool.submit_work(jobs)
+
+ assert not await task.await_completion()
+ await wpool.stop()
+
+ for num in range(0, 100):
+ if num != 55:
+ assert str(num) in worker.worked
+ else:
+ assert str(num) not in worker.worked
+
+ @pytest.mark.asyncio
+ async def test_msg_acked_after_processed(self):
+ """Test that events are only set after all the work in the pipeline is done."""
+ class Worker(object):
+ def __init__(self):
+ self.worked = set()
+
+ async def do_work(self, work):
+ self.worked.add(work)
+ await asyncio.sleep(0.02) # will wait 2 seconds in total for 100 elements
+
+ worker = Worker()
+ wpool = workerpool.WorkerPoolAsync(50, worker.do_work)
+ wpool.start()
+ jobs = []
+ for num in range(0, 100):
+ jobs.append(str(num))
+ task = await wpool.submit_work(jobs)
+ assert await task.await_completion()
+ await wpool.stop()
+ assert len(worker.worked) == 100
diff --git a/tests/util/test_backoff.py b/tests/util/test_backoff.py
new file mode 100644
index 00000000..5fffbc33
--- /dev/null
+++ b/tests/util/test_backoff.py
@@ -0,0 +1,45 @@
+"""Backoff unit tests."""
+from splitio.util.backoff import Backoff
+
+
+class BackOffTests(object): # pylint:disable=too-few-public-methods
+ """Backoff test cases."""
+
+ def test_basic_functionality(self): # pylint:disable=no-self-use
+ """Test basic working."""
+ backoff = Backoff()
+ assert backoff.get() == 1
+ assert backoff.get() == 2
+ assert backoff.get() == 4
+ assert backoff.get() == 8
+ assert backoff.get() == 16
+ assert backoff.get() == 32
+ assert backoff.get() == 64
+ assert backoff.get() == 128
+ assert backoff.get() == 256
+ assert backoff.get() == 512
+ assert backoff.get() == 1024
+
+ # assert that it's limited to 30 minutes
+ assert backoff.get() == 1800
+ assert backoff.get() == 1800
+ assert backoff.get() == 1800
+ assert backoff.get() == 1800
+
+ # assert that resetting begins on 1
+ backoff.reset()
+ assert backoff.get() == 1
+ assert backoff.get() == 2
+ assert backoff.get() == 4
+ assert backoff.get() == 8
+ assert backoff.get() == 16
+ assert backoff.get() == 32
+ assert backoff.get() == 64
+ assert backoff.get() == 128
+ assert backoff.get() == 256
+ assert backoff.get() == 512
+ assert backoff.get() == 1024
+ assert backoff.get() == 1800
+ assert backoff.get() == 1800
+ assert backoff.get() == 1800
+ assert backoff.get() == 1800
diff --git a/tests/util/test_storage_helper.py b/tests/util/test_storage_helper.py
new file mode 100644
index 00000000..60e83e8c
--- /dev/null
+++ b/tests/util/test_storage_helper.py
@@ -0,0 +1,339 @@
+"""Storage Helper tests."""
+import pytest
+import queue
+import asyncio
+
+from splitio.util.storage_helper import update_feature_flag_storage, get_valid_flag_sets, combine_valid_flag_sets, \
+ update_rule_based_segment_storage, update_rule_based_segment_storage_async, update_feature_flag_storage_async, \
+ get_standard_segment_names_in_rbs_storage_async, get_standard_segment_names_in_rbs_storage
+from splitio.storage.inmemmory import InMemorySplitStorage, InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync, \
+ InMemorySplitStorageAsync
+from splitio.models import splits, rule_based_segments
+from splitio.storage import FlagSetsFilter
+from tests.sync.test_splits_synchronizer import splits_raw as split_sample
+
+class StorageHelperTests(object):
+
+ rbs = rule_based_segments.from_raw({
+ "changeNumber": 123,
+ "name": "sample_rule_based_segment",
+ "status": "ACTIVE",
+ "trafficTypeName": "user",
+ "excluded":{
+ "keys":["mauro@split.io","gaston@split.io"],
+ "segments":[{"name":"excluded_segment", "type": "standard"}]
+ },
+ "conditions": [
+ {"matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "IN_SEGMENT",
+ "negate": False,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "employees"
+ },
+ "whitelistMatcherData": None
+ }
+ ]
+ },
+ }
+ ]
+ })
+
+ def test_update_feature_flag_storage(self, mocker):
+ storage = mocker.Mock(spec=InMemorySplitStorage)
+ split = splits.from_raw(split_sample[0])
+
+ self.added = []
+ self.deleted = []
+ self.change_number = 0
+ def update(to_add, to_delete, change_number):
+ self.added = to_add
+ self.deleted = to_delete
+ self.change_number = change_number
+ storage.update = update
+
+ def is_flag_set_exist(flag_set):
+ return False
+ storage.is_flag_set_exist = is_flag_set_exist
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+
+ self.clear = 0
+ def clear():
+ self.clear += 1
+ storage.clear = clear
+
+ update_feature_flag_storage(storage, [split], 123, True)
+ assert self.added[0] == split
+ assert self.deleted == []
+ assert self.change_number == 123
+ assert self.clear == 1
+
+ class flag_set_filter2():
+ def should_filter():
+ return True
+ def intersect(sets):
+ return False
+ storage.flag_set_filter = flag_set_filter2
+ storage.flag_set_filter.flag_sets = set({'set1', 'set2'})
+
+ self.clear = 0
+ update_feature_flag_storage(storage, [split], 123)
+ assert self.added == []
+ assert self.deleted[0] == split.name
+ assert self.clear == 0
+
+ class flag_set_filter3():
+ def should_filter():
+ return True
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter3
+ storage.flag_set_filter.flag_sets = set({'set1', 'set2'})
+
+ def is_flag_set_exist2(flag_set):
+ return True
+ storage.is_flag_set_exist = is_flag_set_exist2
+ update_feature_flag_storage(storage, [split], 123)
+ assert self.added[0] == split
+ assert self.deleted == []
+
+ split_json = split_sample[0]
+ split_json['conditions'].append({
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "IN_SEGMENT",
+ "negate": False,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "segment1"
+ },
+ "whitelistMatcherData": None
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 30
+ },
+ {
+ "treatment": "off",
+ "size": 70
+ }
+ ]
+ }
+ )
+
+ split = splits.from_raw(split_json)
+ storage.config_flag_sets_used = 0
+ assert update_feature_flag_storage(storage, [split], 123) == {'segment1'}
+
+ def test_get_valid_flag_sets(self):
+ flag_sets = ['set1', 'set2']
+ config_flag_sets = FlagSetsFilter([])
+ assert get_valid_flag_sets(flag_sets, config_flag_sets) == ['set1', 'set2']
+
+ config_flag_sets = FlagSetsFilter(['set1'])
+ assert get_valid_flag_sets(flag_sets, config_flag_sets) == ['set1']
+
+ flag_sets = ['set2', 'set3']
+ config_flag_sets = FlagSetsFilter(['set1', 'set2'])
+ assert get_valid_flag_sets(flag_sets, config_flag_sets) == ['set2']
+
+ flag_sets = ['set3', 'set4']
+ config_flag_sets = FlagSetsFilter(['set1', 'set2'])
+ assert get_valid_flag_sets(flag_sets, config_flag_sets) == []
+
+ flag_sets = []
+ config_flag_sets = FlagSetsFilter(['set1', 'set2'])
+ assert get_valid_flag_sets(flag_sets, config_flag_sets) == []
+
+ def test_combine_valid_flag_sets(self):
+ results_set = [{'set1', 'set2'}, {'set2', 'set3'}]
+ assert combine_valid_flag_sets(results_set) == {'set1', 'set2', 'set3'}
+
+ results_set = [{}, {'set2', 'set3'}]
+ assert combine_valid_flag_sets(results_set) == {'set2', 'set3'}
+
+ results_set = ['set1', {'set2', 'set3'}]
+ assert combine_valid_flag_sets(results_set) == {'set2', 'set3'}
+
+ def test_update_rule_base_segment_storage(self, mocker):
+ storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorage)
+ self.added = []
+ self.deleted = []
+ self.change_number = 0
+ def update(to_add, to_delete, change_number):
+ self.added = to_add
+ self.deleted = to_delete
+ self.change_number = change_number
+ storage.update = update
+
+ self.clear = 0
+ def clear():
+ self.clear += 1
+ storage.clear = clear
+
+ segments = update_rule_based_segment_storage(storage, [self.rbs], 123)
+ assert self.added[0] == self.rbs
+ assert self.deleted == []
+ assert self.change_number == 123
+ assert segments == {'excluded_segment', 'employees'}
+ assert self.clear == 0
+
+ segments = update_rule_based_segment_storage(storage, [self.rbs], 123, True)
+ assert self.clear == 1
+
+ def test_get_standard_segment_in_rbs_storage(self, mocker):
+ events_queue = queue.Queue()
+ storage = InMemoryRuleBasedSegmentStorage(events_queue)
+ segments = update_rule_based_segment_storage(storage, [self.rbs], 123)
+ assert get_standard_segment_names_in_rbs_storage(storage) == {'excluded_segment', 'employees'}
+
+ @pytest.mark.asyncio
+ async def test_get_standard_segment_in_rbs_storage(self, mocker):
+ storage = InMemoryRuleBasedSegmentStorageAsync(asyncio.Queue())
+ segments = await update_rule_based_segment_storage_async(storage, [self.rbs], 123)
+ assert await get_standard_segment_names_in_rbs_storage_async(storage) == {'excluded_segment', 'employees'}
+
+ @pytest.mark.asyncio
+ async def test_update_rule_base_segment_storage_async(self, mocker):
+ storage = mocker.Mock(spec=InMemoryRuleBasedSegmentStorageAsync)
+ self.added = []
+ self.deleted = []
+ self.change_number = 0
+ async def update(to_add, to_delete, change_number):
+ self.added = to_add
+ self.deleted = to_delete
+ self.change_number = change_number
+ storage.update = update
+
+ self.clear = 0
+ async def clear():
+ self.clear += 1
+ storage.clear = clear
+
+ segments = await update_rule_based_segment_storage_async(storage, [self.rbs], 123)
+ assert self.added[0] == self.rbs
+ assert self.deleted == []
+ assert self.change_number == 123
+ assert segments == {'excluded_segment', 'employees'}
+
+ segments = await update_rule_based_segment_storage_async(storage, [self.rbs], 123, True)
+ assert self.clear == 1
+
+ @pytest.mark.asyncio
+ async def test_update_feature_flag_storage_async(self, mocker):
+ storage = mocker.Mock(spec=InMemorySplitStorageAsync)
+ split = splits.from_raw(split_sample[0])
+
+ self.added = []
+ self.deleted = []
+ self.change_number = 0
+ async def get(flag_name):
+ return None
+ storage.get = get
+
+ async def update(to_add, to_delete, change_number):
+ self.added = to_add
+ self.deleted = to_delete
+ self.change_number = change_number
+ storage.update = update
+
+ async def is_flag_set_exist(flag_set):
+ return False
+ storage.is_flag_set_exist = is_flag_set_exist
+
+ class flag_set_filter():
+ def should_filter():
+ return False
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter
+ storage.flag_set_filter.flag_sets = {}
+
+ self.clear = 0
+ async def clear():
+ self.clear += 1
+ storage.clear = clear
+
+ await update_feature_flag_storage_async(storage, [split], 123, True)
+ assert self.added[0] == split
+ assert self.deleted == []
+ assert self.change_number == 123
+ assert self.clear == 1
+
+ class flag_set_filter2():
+ def should_filter():
+ return True
+ def intersect(sets):
+ return False
+ storage.flag_set_filter = flag_set_filter2
+ storage.flag_set_filter.flag_sets = set({'set1', 'set2'})
+
+ async def get(flag_name):
+ return split
+ storage.get = get
+
+ self.clear = 0
+ await update_feature_flag_storage_async(storage, [split], 123)
+ assert self.added == []
+ assert self.deleted[0] == split.name
+ assert self.clear == 0
+
+ class flag_set_filter3():
+ def should_filter():
+ return True
+ def intersect(sets):
+ return True
+ storage.flag_set_filter = flag_set_filter3
+ storage.flag_set_filter.flag_sets = set({'set1', 'set2'})
+
+ async def is_flag_set_exist2(flag_set):
+ return True
+ storage.is_flag_set_exist = is_flag_set_exist2
+ await update_feature_flag_storage_async(storage, [split], 123)
+ assert self.added[0] == split
+ assert self.deleted == []
+
+ split_json = split_sample[0]
+ split_json['conditions'].append({
+ "matcherGroup": {
+ "combiner": "AND",
+ "matchers": [
+ {
+ "matcherType": "IN_SEGMENT",
+ "negate": False,
+ "userDefinedSegmentMatcherData": {
+ "segmentName": "segment1"
+ },
+ "whitelistMatcherData": None
+ }
+ ]
+ },
+ "partitions": [
+ {
+ "treatment": "on",
+ "size": 30
+ },
+ {
+ "treatment": "off",
+ "size": 70
+ }
+ ]
+ }
+ )
+
+ split = splits.from_raw(split_json)
+ storage.config_flag_sets_used = 0
+ assert await update_feature_flag_storage_async(storage, [split], 123) == {'segment1'}
\ No newline at end of file
diff --git a/tests/util/test_threadutil.py b/tests/util/test_threadutil.py
new file mode 100644
index 00000000..7473aa96
--- /dev/null
+++ b/tests/util/test_threadutil.py
@@ -0,0 +1,44 @@
+"""threading utilities unit tests."""
+
+import time
+import threading
+
+from splitio.util.threadutil import EventGroup
+
+
+class EventGroupTests(object):
+ """EventGroup class test cases."""
+
+ def test_basic_functionality(self):
+ """Test basic functionality."""
+
+ def fun(event): #pylint:disable=missing-docstring
+ time.sleep(1)
+ event.set()
+
+ group = EventGroup()
+ event1 = group.make_event()
+ event2 = group.make_event()
+
+ task = threading.Thread(target=fun, args=(event1,))
+ task.start()
+ group.wait(3)
+ assert event1.is_set()
+ assert not event2.is_set()
+
+ group = EventGroup()
+ event1 = group.make_event()
+ event2 = group.make_event()
+
+ task = threading.Thread(target=fun, args=(event2,))
+ task.start()
+ group.wait(3)
+ assert not event1.is_set()
+ assert event2.is_set()
+
+ group = EventGroup()
+ event1 = group.make_event()
+ event2 = group.make_event()
+ group.wait(3)
+ assert not event1.is_set()
+ assert not event2.is_set()